// Generated from dt-sql-parser/src/grammar/hive/HiveSqlParser.g4 by ANTLR 4.9.0-SNAPSHOT


import { ATN } from "antlr4ts/atn/ATN";
import { ATNDeserializer } from "antlr4ts/atn/ATNDeserializer";
import { FailedPredicateException } from "antlr4ts/FailedPredicateException";
import { NotNull } from "antlr4ts/Decorators";
import { NoViableAltException } from "antlr4ts/NoViableAltException";
import { Override } from "antlr4ts/Decorators";
import { Parser } from "antlr4ts/Parser";
import { ParserRuleContext } from "antlr4ts/ParserRuleContext";
import { ParserATNSimulator } from "antlr4ts/atn/ParserATNSimulator";
import { ParseTreeListener } from "antlr4ts/tree/ParseTreeListener";
import { ParseTreeVisitor } from "antlr4ts/tree/ParseTreeVisitor";
import { RecognitionException } from "antlr4ts/RecognitionException";
import { RuleContext } from "antlr4ts/RuleContext";
//import { RuleVersion } from "antlr4ts/RuleVersion";
import { TerminalNode } from "antlr4ts/tree/TerminalNode";
import { Token } from "antlr4ts/Token";
import { TokenStream } from "antlr4ts/TokenStream";
import { Vocabulary } from "antlr4ts/Vocabulary";
import { VocabularyImpl } from "antlr4ts/VocabularyImpl";

import * as Utils from "antlr4ts/misc/Utils";

import { HiveSqlParserListener } from "./HiveSqlParserListener";
import { HiveSqlParserVisitor } from "./HiveSqlParserVisitor";


export class HiveSqlParser extends Parser {
	public static readonly KW_ABORT = 1;
	public static readonly KW_ACTIVATE = 2;
	public static readonly KW_ACTIVE = 3;
	public static readonly KW_ADD = 4;
	public static readonly KW_ADMIN = 5;
	public static readonly KW_AFTER = 6;
	public static readonly KW_ALL = 7;
	public static readonly KW_ALLOC_FRACTION = 8;
	public static readonly KW_ALTER = 9;
	public static readonly KW_ANALYZE = 10;
	public static readonly KW_AND = 11;
	public static readonly KW_ANTI = 12;
	public static readonly KW_ANY = 13;
	public static readonly KW_APPLICATION = 14;
	public static readonly KW_ARCHIVE = 15;
	public static readonly KW_ARRAY = 16;
	public static readonly KW_AS = 17;
	public static readonly KW_ASC = 18;
	public static readonly KW_AST = 19;
	public static readonly KW_AT = 20;
	public static readonly KW_AUTHORIZATION = 21;
	public static readonly KW_AUTOCOMMIT = 22;
	public static readonly KW_BATCH = 23;
	public static readonly KW_BEFORE = 24;
	public static readonly KW_BETWEEN = 25;
	public static readonly KW_BIGINT = 26;
	public static readonly KW_BINARY = 27;
	public static readonly KW_BOOLEAN = 28;
	public static readonly KW_BOTH = 29;
	public static readonly KW_BUCKET = 30;
	public static readonly KW_BUCKETS = 31;
	public static readonly KW_BY = 32;
	public static readonly KW_CACHE = 33;
	public static readonly KW_CASCADE = 34;
	public static readonly KW_CASE = 35;
	public static readonly KW_CAST = 36;
	public static readonly KW_CBO = 37;
	public static readonly KW_CHANGE = 38;
	public static readonly KW_CHAR = 39;
	public static readonly KW_CHECK = 40;
	public static readonly KW_CLUSTER = 41;
	public static readonly KW_CLUSTERED = 42;
	public static readonly KW_CLUSTERSTATUS = 43;
	public static readonly KW_COLLECTION = 44;
	public static readonly KW_COLUMN = 45;
	public static readonly KW_COLUMNS = 46;
	public static readonly KW_COMMENT = 47;
	public static readonly KW_COMMIT = 48;
	public static readonly KW_COMPACT = 49;
	public static readonly KW_COMPACTIONS = 50;
	public static readonly KW_COMPACT_ID = 51;
	public static readonly KW_COMPUTE = 52;
	public static readonly KW_CONCATENATE = 53;
	public static readonly KW_CONF = 54;
	public static readonly KW_CONSTRAINT = 55;
	public static readonly KW_CONTINUE = 56;
	public static readonly KW_COST = 57;
	public static readonly KW_CREATE = 58;
	public static readonly KW_CRON = 59;
	public static readonly KW_CROSS = 60;
	public static readonly KW_CUBE = 61;
	public static readonly KW_CURRENT = 62;
	public static readonly KW_CURRENT_DATE = 63;
	public static readonly KW_CURRENT_TIMESTAMP = 64;
	public static readonly KW_CURSOR = 65;
	public static readonly KW_DATA = 66;
	public static readonly KW_DATABASE = 67;
	public static readonly KW_DATABASES = 68;
	public static readonly KW_DATACONNECTOR = 69;
	public static readonly KW_DATACONNECTORS = 70;
	public static readonly KW_DATE = 71;
	public static readonly KW_DATETIME = 72;
	public static readonly KW_DAY = 73;
	public static readonly KW_DAYS = 74;
	public static readonly KW_DAYOFWEEK = 75;
	public static readonly KW_DBPROPERTIES = 76;
	public static readonly KW_DCPROPERTIES = 77;
	public static readonly KW_DDL = 78;
	public static readonly KW_DEBUG = 79;
	public static readonly KW_DEC = 80;
	public static readonly KW_DECIMAL = 81;
	public static readonly KW_NUMERIC = 82;
	public static readonly KW_DEFAULT = 83;
	public static readonly KW_DEFERRED = 84;
	public static readonly KW_DEFINED = 85;
	public static readonly KW_DELETE = 86;
	public static readonly KW_DELIMITED = 87;
	public static readonly KW_DEPENDENCY = 88;
	public static readonly KW_DESC = 89;
	public static readonly KW_DESCRIBE = 90;
	public static readonly KW_DETAIL = 91;
	public static readonly KW_DIRECTORIES = 92;
	public static readonly KW_DIRECTORY = 93;
	public static readonly KW_DISABLE = 94;
	public static readonly KW_DISABLED = 95;
	public static readonly KW_DISTINCT = 96;
	public static readonly KW_DISTRIBUTE = 97;
	public static readonly KW_DISTRIBUTED = 98;
	public static readonly KW_DO = 99;
	public static readonly KW_DOUBLE = 100;
	public static readonly KW_DROP = 101;
	public static readonly KW_RECOVER = 102;
	public static readonly KW_DUMP = 103;
	public static readonly KW_ELEM_TYPE = 104;
	public static readonly KW_ELSE = 105;
	public static readonly KW_ENABLE = 106;
	public static readonly KW_ENABLED = 107;
	public static readonly KW_END = 108;
	public static readonly KW_ENFORCED = 109;
	public static readonly KW_ESCAPED = 110;
	public static readonly KW_EVERY = 111;
	public static readonly KW_EXCEPT = 112;
	public static readonly KW_EXCHANGE = 113;
	public static readonly KW_EXCLUSIVE = 114;
	public static readonly KW_EXECUTE = 115;
	public static readonly KW_EXECUTED = 116;
	public static readonly KW_EXISTS = 117;
	public static readonly KW_EXPIRE_SNAPSHOTS = 118;
	public static readonly KW_EXPLAIN = 119;
	public static readonly KW_EXPORT = 120;
	public static readonly KW_EXPRESSION = 121;
	public static readonly KW_EXTENDED = 122;
	public static readonly KW_EXTERNAL = 123;
	public static readonly KW_EXTRACT = 124;
	public static readonly KW_FALSE = 125;
	public static readonly KW_FETCH = 126;
	public static readonly KW_FIELDS = 127;
	public static readonly KW_FILE = 128;
	public static readonly KW_FILEFORMAT = 129;
	public static readonly KW_FIRST = 130;
	public static readonly KW_FLOAT = 131;
	public static readonly KW_FLOOR = 132;
	public static readonly KW_FOLLOWING = 133;
	public static readonly KW_FOR = 134;
	public static readonly KW_FORCE = 135;
	public static readonly KW_FOREIGN = 136;
	public static readonly KW_FORMAT = 137;
	public static readonly KW_FORMATTED = 138;
	public static readonly KW_FROM = 139;
	public static readonly KW_FULL = 140;
	public static readonly KW_FUNCTION = 141;
	public static readonly KW_FUNCTIONS = 142;
	public static readonly KW_GRANT = 143;
	public static readonly KW_GROUP = 144;
	public static readonly KW_GROUPING = 145;
	public static readonly KW_HAVING = 146;
	public static readonly KW_HOLD_DDLTIME = 147;
	public static readonly KW_HOUR = 148;
	public static readonly KW_HOURS = 149;
	public static readonly KW_IDXPROPERTIES = 150;
	public static readonly KW_IF = 151;
	public static readonly KW_IGNORE = 152;
	public static readonly KW_IMPORT = 153;
	public static readonly KW_IN = 154;
	public static readonly KW_INDEX = 155;
	public static readonly KW_INDEXES = 156;
	public static readonly KW_INNER = 157;
	public static readonly KW_INPATH = 158;
	public static readonly KW_INPUTDRIVER = 159;
	public static readonly KW_INPUTFORMAT = 160;
	public static readonly KW_INSERT = 161;
	public static readonly KW_INT = 162;
	public static readonly KW_INTEGER = 163;
	public static readonly KW_INTERSECT = 164;
	public static readonly KW_INTERVAL = 165;
	public static readonly KW_INTO = 166;
	public static readonly KW_IS = 167;
	public static readonly KW_ISOLATION = 168;
	public static readonly KW_ITEMS = 169;
	public static readonly KW_JAR = 170;
	public static readonly KW_JOIN = 171;
	public static readonly KW_JOINCOST = 172;
	public static readonly KW_KEY = 173;
	public static readonly KW_KEYS = 174;
	public static readonly KW_KEY_TYPE = 175;
	public static readonly KW_KILL = 176;
	public static readonly KW_LAST = 177;
	public static readonly KW_LATERAL = 178;
	public static readonly KW_LEADING = 179;
	public static readonly KW_LEFT = 180;
	public static readonly KW_LESS = 181;
	public static readonly KW_LEVEL = 182;
	public static readonly KW_LIKE = 183;
	public static readonly KW_LIMIT = 184;
	public static readonly KW_LINES = 185;
	public static readonly KW_LOAD = 186;
	public static readonly KW_LOCAL = 187;
	public static readonly KW_LOCATION = 188;
	public static readonly KW_LOCK = 189;
	public static readonly KW_LOCKS = 190;
	public static readonly KW_LOGICAL = 191;
	public static readonly KW_LONG = 192;
	public static readonly KW_MACRO = 193;
	public static readonly KW_MANAGED = 194;
	public static readonly KW_MANAGEDLOCATION = 195;
	public static readonly KW_MANAGEMENT = 196;
	public static readonly KW_MAP = 197;
	public static readonly KW_MAPJOIN = 198;
	public static readonly KW_MAPPING = 199;
	public static readonly KW_MATCHED = 200;
	public static readonly KW_MATERIALIZED = 201;
	public static readonly KW_MERGE = 202;
	public static readonly KW_METADATA = 203;
	public static readonly KW_MINUS = 204;
	public static readonly KW_MINUTE = 205;
	public static readonly KW_MINUTES = 206;
	public static readonly KW_MONTH = 207;
	public static readonly KW_MONTHS = 208;
	public static readonly KW_MORE = 209;
	public static readonly KW_MOVE = 210;
	public static readonly KW_MSCK = 211;
	public static readonly KW_NONE = 212;
	public static readonly KW_NORELY = 213;
	public static readonly KW_NOSCAN = 214;
	public static readonly KW_NOT = 215;
	public static readonly KW_NOVALIDATE = 216;
	public static readonly KW_NO_DROP = 217;
	public static readonly KW_NULL = 218;
	public static readonly KW_NULLS = 219;
	public static readonly KW_OF = 220;
	public static readonly KW_OFFLINE = 221;
	public static readonly KW_OFFSET = 222;
	public static readonly KW_ON = 223;
	public static readonly KW_ONLY = 224;
	public static readonly KW_OPERATOR = 225;
	public static readonly KW_OPTION = 226;
	public static readonly KW_OR = 227;
	public static readonly KW_ORDER = 228;
	public static readonly KW_OUT = 229;
	public static readonly KW_OUTER = 230;
	public static readonly KW_OUTPUTDRIVER = 231;
	public static readonly KW_OUTPUTFORMAT = 232;
	public static readonly KW_OVER = 233;
	public static readonly KW_OVERWRITE = 234;
	public static readonly KW_OWNER = 235;
	public static readonly KW_PARTITION = 236;
	public static readonly KW_PARTITIONED = 237;
	public static readonly KW_PARTITIONS = 238;
	public static readonly KW_PATH = 239;
	public static readonly KW_PERCENT = 240;
	public static readonly KW_PKFK_JOIN = 241;
	public static readonly KW_PLAN = 242;
	public static readonly KW_PLANS = 243;
	public static readonly KW_PLUS = 244;
	public static readonly KW_POOL = 245;
	public static readonly KW_PRECEDING = 246;
	public static readonly KW_PRECISION = 247;
	public static readonly KW_PREPARE = 248;
	public static readonly KW_PRESERVE = 249;
	public static readonly KW_PRIMARY = 250;
	public static readonly KW_PRINCIPALS = 251;
	public static readonly KW_PROCEDURE = 252;
	public static readonly KW_PROTECTION = 253;
	public static readonly KW_PURGE = 254;
	public static readonly KW_QUALIFY = 255;
	public static readonly KW_QUARTER = 256;
	public static readonly KW_QUERY = 257;
	public static readonly KW_QUERY_PARALLELISM = 258;
	public static readonly KW_RANGE = 259;
	public static readonly KW_READ = 260;
	public static readonly KW_READONLY = 261;
	public static readonly KW_READS = 262;
	public static readonly KW_REAL = 263;
	public static readonly KW_REBUILD = 264;
	public static readonly KW_RECORDREADER = 265;
	public static readonly KW_RECORDWRITER = 266;
	public static readonly KW_REDUCE = 267;
	public static readonly KW_REFERENCES = 268;
	public static readonly KW_REGEXP = 269;
	public static readonly KW_RELOAD = 270;
	public static readonly KW_RELY = 271;
	public static readonly KW_REMOTE = 272;
	public static readonly KW_RENAME = 273;
	public static readonly KW_REOPTIMIZATION = 274;
	public static readonly KW_REPAIR = 275;
	public static readonly KW_REPL = 276;
	public static readonly KW_REPLACE = 277;
	public static readonly KW_REPLICATION = 278;
	public static readonly KW_RESOURCE = 279;
	public static readonly KW_RESPECT = 280;
	public static readonly KW_RESTRICT = 281;
	public static readonly KW_REVOKE = 282;
	public static readonly KW_REWRITE = 283;
	public static readonly KW_RIGHT = 284;
	public static readonly KW_RLIKE = 285;
	public static readonly KW_ROLE = 286;
	public static readonly KW_ROLES = 287;
	public static readonly KW_ROLLBACK = 288;
	public static readonly KW_ROLLUP = 289;
	public static readonly KW_ROW = 290;
	public static readonly KW_ROWS = 291;
	public static readonly KW_SCHEDULED = 292;
	public static readonly KW_SCHEDULING_POLICY = 293;
	public static readonly KW_SCHEMA = 294;
	public static readonly KW_SCHEMAS = 295;
	public static readonly KW_SECOND = 296;
	public static readonly KW_SECONDS = 297;
	public static readonly KW_SELECT = 298;
	public static readonly KW_SEMI = 299;
	public static readonly KW_SERDE = 300;
	public static readonly KW_SERDEPROPERTIES = 301;
	public static readonly KW_SERVER = 302;
	public static readonly KW_SET = 303;
	public static readonly KW_SETS = 304;
	public static readonly KW_SET_CURRENT_SNAPSHOT = 305;
	public static readonly KW_SHARED = 306;
	public static readonly KW_SHOW = 307;
	public static readonly KW_SHOW_DATABASE = 308;
	public static readonly KW_SKEWED = 309;
	public static readonly KW_SMALLINT = 310;
	public static readonly KW_SNAPSHOT = 311;
	public static readonly KW_SOME = 312;
	public static readonly KW_SORT = 313;
	public static readonly KW_SORTED = 314;
	public static readonly KW_SPEC = 315;
	public static readonly KW_SSL = 316;
	public static readonly KW_START = 317;
	public static readonly KW_STATISTICS = 318;
	public static readonly KW_STATUS = 319;
	public static readonly KW_STORED = 320;
	public static readonly KW_STREAMTABLE = 321;
	public static readonly KW_STRING = 322;
	public static readonly KW_STRUCT = 323;
	public static readonly KW_SUMMARY = 324;
	public static readonly KW_SYNC = 325;
	public static readonly KW_SYSTEM_TIME = 326;
	public static readonly KW_SYSTEM_VERSION = 327;
	public static readonly KW_TABLE = 328;
	public static readonly KW_TABLES = 329;
	public static readonly KW_TABLESAMPLE = 330;
	public static readonly KW_TBLPROPERTIES = 331;
	public static readonly KW_TEMPORARY = 332;
	public static readonly KW_TERMINATED = 333;
	public static readonly KW_THEN = 334;
	public static readonly KW_TIME = 335;
	public static readonly KW_TIMESTAMP = 336;
	public static readonly KW_TIMESTAMPLOCALTZ = 337;
	public static readonly KW_TIMESTAMPTZ = 338;
	public static readonly KW_TINYINT = 339;
	public static readonly KW_TO = 340;
	public static readonly KW_TOUCH = 341;
	public static readonly KW_TRAILING = 342;
	public static readonly KW_TRANSACTION = 343;
	public static readonly KW_TRANSACTIONAL = 344;
	public static readonly KW_TRANSACTIONS = 345;
	public static readonly KW_TRANSFORM = 346;
	public static readonly KW_TRIGGER = 347;
	public static readonly KW_TRIM = 348;
	public static readonly KW_TRUE = 349;
	public static readonly KW_TRUNCATE = 350;
	public static readonly KW_TYPE = 351;
	public static readonly KW_UNARCHIVE = 352;
	public static readonly KW_UNBOUNDED = 353;
	public static readonly KW_UNDO = 354;
	public static readonly KW_UNION = 355;
	public static readonly KW_UNIONTYPE = 356;
	public static readonly KW_UNIQUE = 357;
	public static readonly KW_UNIQUEJOIN = 358;
	public static readonly KW_UNKNOWN = 359;
	public static readonly KW_UNLOCK = 360;
	public static readonly KW_UNMANAGED = 361;
	public static readonly KW_UNSET = 362;
	public static readonly KW_UNSIGNED = 363;
	public static readonly KW_UPDATE = 364;
	public static readonly KW_URI = 365;
	public static readonly KW_URL = 366;
	public static readonly KW_USE = 367;
	public static readonly KW_USER = 368;
	public static readonly KW_USING = 369;
	public static readonly KW_UTC = 370;
	public static readonly KW_UTCTIMESTAMP = 371;
	public static readonly KW_VALIDATE = 372;
	public static readonly KW_VALUES = 373;
	public static readonly KW_VALUE_TYPE = 374;
	public static readonly KW_VARCHAR = 375;
	public static readonly KW_VECTORIZATION = 376;
	public static readonly KW_VIEW = 377;
	public static readonly KW_VIEWS = 378;
	public static readonly KW_WAIT = 379;
	public static readonly KW_WEEK = 380;
	public static readonly KW_WEEKS = 381;
	public static readonly KW_WHEN = 382;
	public static readonly KW_WHERE = 383;
	public static readonly KW_WHILE = 384;
	public static readonly KW_WINDOW = 385;
	public static readonly KW_WITH = 386;
	public static readonly KW_WITHIN = 387;
	public static readonly KW_WORK = 388;
	public static readonly KW_WORKLOAD = 389;
	public static readonly KW_WRITE = 390;
	public static readonly KW_YEAR = 391;
	public static readonly KW_YEARS = 392;
	public static readonly KW_ZONE = 393;
	public static readonly DOT = 394;
	public static readonly COLON = 395;
	public static readonly COMMA = 396;
	public static readonly SEMICOLON = 397;
	public static readonly LPAREN = 398;
	public static readonly RPAREN = 399;
	public static readonly LSQUARE = 400;
	public static readonly RSQUARE = 401;
	public static readonly LCURLY = 402;
	public static readonly RCURLY = 403;
	public static readonly EQUAL = 404;
	public static readonly EQUAL_NS = 405;
	public static readonly NOTEQUAL = 406;
	public static readonly LESSTHANOREQUALTO = 407;
	public static readonly LESSTHAN = 408;
	public static readonly GREATERTHANOREQUALTO = 409;
	public static readonly GREATERTHAN = 410;
	public static readonly DIVIDE = 411;
	public static readonly PLUS = 412;
	public static readonly MINUS = 413;
	public static readonly STAR = 414;
	public static readonly MOD = 415;
	public static readonly DIV = 416;
	public static readonly BITWISENOT = 417;
	public static readonly AMPERSAND = 418;
	public static readonly TILDE = 419;
	public static readonly BITWISEOR = 420;
	public static readonly CONCATENATE = 421;
	public static readonly BITWISEXOR = 422;
	public static readonly QUESTION = 423;
	public static readonly DOLLAR = 424;
	public static readonly StringLiteral = 425;
	public static readonly CharSetLiteral = 426;
	public static readonly IntegralLiteral = 427;
	public static readonly NumberLiteral = 428;
	public static readonly ByteLengthLiteral = 429;
	public static readonly Number = 430;
	public static readonly Identifier = 431;
	public static readonly CharSetName = 432;
	public static readonly WHITE_SPACE = 433;
	public static readonly LINE_COMMENT = 434;
	public static readonly QUERY_HINT = 435;
	public static readonly SHOW_HINT = 436;
	public static readonly HIDDEN_HINT = 437;
	public static readonly RULE_program = 0;
	public static readonly RULE_statement = 1;
	public static readonly RULE_explainStatement = 2;
	public static readonly RULE_explainOption = 3;
	public static readonly RULE_vectorizationOnly = 4;
	public static readonly RULE_vectorizatonDetail = 5;
	public static readonly RULE_execStatement = 6;
	public static readonly RULE_loadStatement = 7;
	public static readonly RULE_dropPartitionsIgnoreClause = 8;
	public static readonly RULE_replicationClause = 9;
	public static readonly RULE_exportStatement = 10;
	public static readonly RULE_importStatement = 11;
	public static readonly RULE_replDumpStatement = 12;
	public static readonly RULE_replDbPolicy = 13;
	public static readonly RULE_replLoadStatement = 14;
	public static readonly RULE_replConfigs = 15;
	public static readonly RULE_replConfigsList = 16;
	public static readonly RULE_replTableLevelPolicy = 17;
	public static readonly RULE_replStatusStatement = 18;
	public static readonly RULE_ddlStatement = 19;
	public static readonly RULE_ifExists = 20;
	public static readonly RULE_restrictOrCascade = 21;
	public static readonly RULE_ifNotExists = 22;
	public static readonly RULE_force = 23;
	public static readonly RULE_rewriteEnabled = 24;
	public static readonly RULE_rewriteDisabled = 25;
	public static readonly RULE_storedAsDirs = 26;
	public static readonly RULE_orReplace = 27;
	public static readonly RULE_createDatabaseStatement = 28;
	public static readonly RULE_dbLocation = 29;
	public static readonly RULE_dbManagedLocation = 30;
	public static readonly RULE_dbProperties = 31;
	public static readonly RULE_dbPropertiesList = 32;
	public static readonly RULE_dbConnectorName = 33;
	public static readonly RULE_switchDatabaseStatement = 34;
	public static readonly RULE_dropDatabaseStatement = 35;
	public static readonly RULE_databaseComment = 36;
	public static readonly RULE_truncateTableStatement = 37;
	public static readonly RULE_dropTableStatement = 38;
	public static readonly RULE_inputFileFormat = 39;
	public static readonly RULE_tabTypeExpr = 40;
	public static readonly RULE_partTypeExpr = 41;
	public static readonly RULE_tabPartColTypeExpr = 42;
	public static readonly RULE_descStatement = 43;
	public static readonly RULE_analyzeStatement = 44;
	public static readonly RULE_from_in = 45;
	public static readonly RULE_db_schema = 46;
	public static readonly RULE_showStatement = 47;
	public static readonly RULE_showTablesFilterExpr = 48;
	public static readonly RULE_lockStatement = 49;
	public static readonly RULE_lockDatabase = 50;
	public static readonly RULE_lockMode = 51;
	public static readonly RULE_unlockStatement = 52;
	public static readonly RULE_unlockDatabase = 53;
	public static readonly RULE_createRoleStatement = 54;
	public static readonly RULE_dropRoleStatement = 55;
	public static readonly RULE_grantPrivileges = 56;
	public static readonly RULE_revokePrivileges = 57;
	public static readonly RULE_grantRole = 58;
	public static readonly RULE_revokeRole = 59;
	public static readonly RULE_showRoleGrants = 60;
	public static readonly RULE_showRoles = 61;
	public static readonly RULE_showCurrentRole = 62;
	public static readonly RULE_setRole = 63;
	public static readonly RULE_showGrants = 64;
	public static readonly RULE_showRolePrincipals = 65;
	public static readonly RULE_privilegeIncludeColObject = 66;
	public static readonly RULE_privilegeObject = 67;
	public static readonly RULE_privObject = 68;
	public static readonly RULE_privObjectCols = 69;
	public static readonly RULE_privilegeList = 70;
	public static readonly RULE_privlegeDef = 71;
	public static readonly RULE_privilegeType = 72;
	public static readonly RULE_principalSpecification = 73;
	public static readonly RULE_principalName = 74;
	public static readonly RULE_principalAlterName = 75;
	public static readonly RULE_withGrantOption = 76;
	public static readonly RULE_grantOptionFor = 77;
	public static readonly RULE_adminOptionFor = 78;
	public static readonly RULE_withAdminOption = 79;
	public static readonly RULE_metastoreCheck = 80;
	public static readonly RULE_resourceList = 81;
	public static readonly RULE_resource = 82;
	public static readonly RULE_resourceType = 83;
	public static readonly RULE_createFunctionStatement = 84;
	public static readonly RULE_dropFunctionStatement = 85;
	public static readonly RULE_reloadFunctionsStatement = 86;
	public static readonly RULE_createMacroStatement = 87;
	public static readonly RULE_dropMacroStatement = 88;
	public static readonly RULE_createIndexStatement = 89;
	public static readonly RULE_dropIndexStatement = 90;
	public static readonly RULE_createViewStatement = 91;
	public static readonly RULE_viewPartition = 92;
	public static readonly RULE_viewOrganization = 93;
	public static readonly RULE_viewClusterSpec = 94;
	public static readonly RULE_viewComplexSpec = 95;
	public static readonly RULE_viewDistSpec = 96;
	public static readonly RULE_viewSortSpec = 97;
	public static readonly RULE_dropViewStatement = 98;
	public static readonly RULE_createMaterializedViewStatement = 99;
	public static readonly RULE_dropMaterializedViewStatement = 100;
	public static readonly RULE_createScheduledQueryStatement = 101;
	public static readonly RULE_dropScheduledQueryStatement = 102;
	public static readonly RULE_alterScheduledQueryStatement = 103;
	public static readonly RULE_alterScheduledQueryChange = 104;
	public static readonly RULE_scheduleSpec = 105;
	public static readonly RULE_executedAsSpec = 106;
	public static readonly RULE_definedAsSpec = 107;
	public static readonly RULE_showStmtIdentifier = 108;
	public static readonly RULE_tableComment = 109;
	public static readonly RULE_createTablePartitionSpec = 110;
	public static readonly RULE_createTablePartitionColumnTypeSpec = 111;
	public static readonly RULE_createTablePartitionColumnSpec = 112;
	public static readonly RULE_partitionTransformSpec = 113;
	public static readonly RULE_columnNameTransformConstraint = 114;
	public static readonly RULE_partitionTransformType = 115;
	public static readonly RULE_tableBuckets = 116;
	public static readonly RULE_tableImplBuckets = 117;
	public static readonly RULE_tableSkewed = 118;
	public static readonly RULE_rowFormat = 119;
	public static readonly RULE_recordReader = 120;
	public static readonly RULE_recordWriter = 121;
	public static readonly RULE_rowFormatSerde = 122;
	public static readonly RULE_rowFormatDelimited = 123;
	public static readonly RULE_tableRowFormat = 124;
	public static readonly RULE_tablePropertiesPrefixed = 125;
	public static readonly RULE_tableProperties = 126;
	public static readonly RULE_tablePropertiesList = 127;
	public static readonly RULE_keyValueProperty = 128;
	public static readonly RULE_keyProperty = 129;
	public static readonly RULE_tableRowFormatFieldIdentifier = 130;
	public static readonly RULE_tableRowFormatCollItemsIdentifier = 131;
	public static readonly RULE_tableRowFormatMapKeysIdentifier = 132;
	public static readonly RULE_tableRowFormatLinesIdentifier = 133;
	public static readonly RULE_tableRowNullFormat = 134;
	public static readonly RULE_tableFileFormat = 135;
	public static readonly RULE_tableLocation = 136;
	public static readonly RULE_columnNameTypeList = 137;
	public static readonly RULE_columnNameTypeOrConstraintList = 138;
	public static readonly RULE_columnNameColonTypeList = 139;
	public static readonly RULE_columnNameList = 140;
	public static readonly RULE_columnName = 141;
	public static readonly RULE_columnNameCreate = 142;
	public static readonly RULE_extColumnName = 143;
	public static readonly RULE_columnNameOrderList = 144;
	public static readonly RULE_columnParenthesesList = 145;
	public static readonly RULE_enableValidateSpecification = 146;
	public static readonly RULE_enableSpecification = 147;
	public static readonly RULE_validateSpecification = 148;
	public static readonly RULE_enforcedSpecification = 149;
	public static readonly RULE_relySpecification = 150;
	public static readonly RULE_createConstraint = 151;
	public static readonly RULE_alterConstraintWithName = 152;
	public static readonly RULE_tableLevelConstraint = 153;
	public static readonly RULE_pkUkConstraint = 154;
	public static readonly RULE_checkConstraint = 155;
	public static readonly RULE_createForeignKey = 156;
	public static readonly RULE_alterForeignKeyWithName = 157;
	public static readonly RULE_skewedValueElement = 158;
	public static readonly RULE_skewedColumnValuePairList = 159;
	public static readonly RULE_skewedColumnValuePair = 160;
	public static readonly RULE_skewedColumnValues = 161;
	public static readonly RULE_skewedColumnValue = 162;
	public static readonly RULE_skewedValueLocationElement = 163;
	public static readonly RULE_orderSpecification = 164;
	public static readonly RULE_nullOrdering = 165;
	public static readonly RULE_columnNameOrder = 166;
	public static readonly RULE_columnNameCommentList = 167;
	public static readonly RULE_columnNameComment = 168;
	public static readonly RULE_orderSpecificationRewrite = 169;
	public static readonly RULE_columnRefOrder = 170;
	public static readonly RULE_columnNameType = 171;
	public static readonly RULE_columnNameTypeOrConstraint = 172;
	public static readonly RULE_tableConstraint = 173;
	public static readonly RULE_columnNameTypeConstraint = 174;
	public static readonly RULE_columnConstraint = 175;
	public static readonly RULE_foreignKeyConstraint = 176;
	public static readonly RULE_colConstraint = 177;
	public static readonly RULE_alterColumnConstraint = 178;
	public static readonly RULE_alterForeignKeyConstraint = 179;
	public static readonly RULE_alterColConstraint = 180;
	public static readonly RULE_columnConstraintType = 181;
	public static readonly RULE_defaultVal = 182;
	public static readonly RULE_tableConstraintType = 183;
	public static readonly RULE_constraintOptsCreate = 184;
	public static readonly RULE_constraintOptsAlter = 185;
	public static readonly RULE_columnNameColonType = 186;
	public static readonly RULE_colType = 187;
	public static readonly RULE_colTypeList = 188;
	public static readonly RULE_type = 189;
	public static readonly RULE_primitiveType = 190;
	public static readonly RULE_listType = 191;
	public static readonly RULE_structType = 192;
	public static readonly RULE_mapType = 193;
	public static readonly RULE_unionType = 194;
	public static readonly RULE_setOperator = 195;
	public static readonly RULE_queryStatementExpression = 196;
	public static readonly RULE_queryStatementExpressionBody = 197;
	public static readonly RULE_withClause = 198;
	public static readonly RULE_cteStatement = 199;
	public static readonly RULE_fromStatement = 200;
	public static readonly RULE_singleFromStatement = 201;
	public static readonly RULE_regularBody = 202;
	public static readonly RULE_atomSelectStatement = 203;
	public static readonly RULE_selectStatement = 204;
	public static readonly RULE_setOpSelectStatement = 205;
	public static readonly RULE_selectStatementWithCTE = 206;
	public static readonly RULE_body = 207;
	public static readonly RULE_insertClause = 208;
	public static readonly RULE_destination = 209;
	public static readonly RULE_limitClause = 210;
	public static readonly RULE_deleteStatement = 211;
	public static readonly RULE_columnAssignmentClause = 212;
	public static readonly RULE_precedencePlusExpressionOrDefault = 213;
	public static readonly RULE_setColumnsClause = 214;
	public static readonly RULE_updateStatement = 215;
	public static readonly RULE_sqlTransactionStatement = 216;
	public static readonly RULE_startTransactionStatement = 217;
	public static readonly RULE_transactionMode = 218;
	public static readonly RULE_transactionAccessMode = 219;
	public static readonly RULE_isolationLevel = 220;
	public static readonly RULE_levelOfIsolation = 221;
	public static readonly RULE_commitStatement = 222;
	public static readonly RULE_rollbackStatement = 223;
	public static readonly RULE_setAutoCommitStatement = 224;
	public static readonly RULE_abortTransactionStatement = 225;
	public static readonly RULE_abortCompactionStatement = 226;
	public static readonly RULE_mergeStatement = 227;
	public static readonly RULE_whenClauses = 228;
	public static readonly RULE_whenNotMatchedClause = 229;
	public static readonly RULE_whenMatchedAndClause = 230;
	public static readonly RULE_whenMatchedThenClause = 231;
	public static readonly RULE_updateOrDelete = 232;
	public static readonly RULE_killQueryStatement = 233;
	public static readonly RULE_compactionId = 234;
	public static readonly RULE_compactionPool = 235;
	public static readonly RULE_compactionType = 236;
	public static readonly RULE_compactionStatus = 237;
	public static readonly RULE_alterStatement = 238;
	public static readonly RULE_alterTableStatementSuffix = 239;
	public static readonly RULE_alterTblPartitionStatementSuffix = 240;
	public static readonly RULE_alterStatementPartitionKeyType = 241;
	public static readonly RULE_alterViewStatementSuffix = 242;
	public static readonly RULE_alterMaterializedViewStatementSuffix = 243;
	public static readonly RULE_alterMaterializedViewSuffixRewrite = 244;
	public static readonly RULE_alterMaterializedViewSuffixRebuild = 245;
	public static readonly RULE_alterDatabaseStatementSuffix = 246;
	public static readonly RULE_alterDatabaseSuffixProperties = 247;
	public static readonly RULE_alterDatabaseSuffixSetOwner = 248;
	public static readonly RULE_alterDatabaseSuffixSetLocation = 249;
	public static readonly RULE_alterDatabaseSuffixSetManagedLocation = 250;
	public static readonly RULE_alterStatementSuffixRename = 251;
	public static readonly RULE_alterStatementSuffixAddCol = 252;
	public static readonly RULE_alterStatementSuffixAddConstraint = 253;
	public static readonly RULE_alterStatementSuffixUpdateColumns = 254;
	public static readonly RULE_alterStatementSuffixProtections = 255;
	public static readonly RULE_alterStatementSuffixDropConstraint = 256;
	public static readonly RULE_alterStatementSuffixRenameCol = 257;
	public static readonly RULE_alterStatementSuffixUpdateStatsCol = 258;
	public static readonly RULE_alterStatementSuffixUpdateStats = 259;
	public static readonly RULE_alterStatementChangeColPosition = 260;
	public static readonly RULE_alterStatementSuffixAddPartitions = 261;
	public static readonly RULE_alterStatementSuffixAddPartitionsElement = 262;
	public static readonly RULE_alterStatementSuffixTouch = 263;
	public static readonly RULE_alterStatementSuffixArchive = 264;
	public static readonly RULE_alterStatementSuffixUnArchive = 265;
	public static readonly RULE_partitionLocation = 266;
	public static readonly RULE_alterStatementSuffixRecoverPartitions = 267;
	public static readonly RULE_alterStatementSuffixDropPartitions = 268;
	public static readonly RULE_alterStatementSuffixProperties = 269;
	public static readonly RULE_alterViewSuffixProperties = 270;
	public static readonly RULE_alterStatementSuffixSerdeProperties = 271;
	public static readonly RULE_tablePartitionPrefix = 272;
	public static readonly RULE_alterStatementSuffixFileFormat = 273;
	public static readonly RULE_alterStatementSuffixClusterbySortby = 274;
	public static readonly RULE_alterTblPartitionStatementSuffixSkewedLocation = 275;
	public static readonly RULE_skewedLocations = 276;
	public static readonly RULE_skewedLocationsList = 277;
	public static readonly RULE_skewedLocationMap = 278;
	public static readonly RULE_alterStatementSuffixLocation = 279;
	public static readonly RULE_alterStatementSuffixSkewedby = 280;
	public static readonly RULE_alterStatementSuffixExchangePartition = 281;
	public static readonly RULE_alterStatementSuffixRenamePart = 282;
	public static readonly RULE_alterStatementSuffixStatsPart = 283;
	public static readonly RULE_alterStatementSuffixMergeFiles = 284;
	public static readonly RULE_alterStatementSuffixBucketNum = 285;
	public static readonly RULE_blocking = 286;
	public static readonly RULE_compactPool = 287;
	public static readonly RULE_alterStatementSuffixCompact = 288;
	public static readonly RULE_alterStatementSuffixSetOwner = 289;
	public static readonly RULE_alterStatementSuffixSetPartSpec = 290;
	public static readonly RULE_alterStatementSuffixExecute = 291;
	public static readonly RULE_alterIndexStatementSuffix = 292;
	public static readonly RULE_fileFormat = 293;
	public static readonly RULE_alterDataConnectorStatementSuffix = 294;
	public static readonly RULE_alterDataConnectorSuffixProperties = 295;
	public static readonly RULE_alterDataConnectorSuffixSetOwner = 296;
	public static readonly RULE_alterDataConnectorSuffixSetUrl = 297;
	public static readonly RULE_likeTableOrFile = 298;
	public static readonly RULE_createTableStatement = 299;
	public static readonly RULE_createDataConnectorStatement = 300;
	public static readonly RULE_dataConnectorComment = 301;
	public static readonly RULE_dataConnectorUrl = 302;
	public static readonly RULE_dataConnectorType = 303;
	public static readonly RULE_dcProperties = 304;
	public static readonly RULE_dropDataConnectorStatement = 305;
	public static readonly RULE_tableAllColumns = 306;
	public static readonly RULE_defaultValue = 307;
	public static readonly RULE_expressionList = 308;
	public static readonly RULE_aliasList = 309;
	public static readonly RULE_fromClause = 310;
	public static readonly RULE_fromSource = 311;
	public static readonly RULE_atomjoinSource = 312;
	public static readonly RULE_joinSource = 313;
	public static readonly RULE_joinSourcePart = 314;
	public static readonly RULE_uniqueJoinSource = 315;
	public static readonly RULE_uniqueJoinExpr = 316;
	public static readonly RULE_uniqueJoinToken = 317;
	public static readonly RULE_joinToken = 318;
	public static readonly RULE_lateralView = 319;
	public static readonly RULE_tableAlias = 320;
	public static readonly RULE_tableBucketSample = 321;
	public static readonly RULE_splitSample = 322;
	public static readonly RULE_tableSample = 323;
	public static readonly RULE_tableSource = 324;
	public static readonly RULE_asOfClause = 325;
	public static readonly RULE_uniqueJoinTableSource = 326;
	public static readonly RULE_dbSchemaName = 327;
	public static readonly RULE_dbSchemaNameCreate = 328;
	public static readonly RULE_tableOrView = 329;
	public static readonly RULE_tableName = 330;
	public static readonly RULE_tableNameCreate = 331;
	public static readonly RULE_viewName = 332;
	public static readonly RULE_viewNameCreate = 333;
	public static readonly RULE_subQuerySource = 334;
	public static readonly RULE_partitioningSpec = 335;
	public static readonly RULE_partitionTableFunctionSource = 336;
	public static readonly RULE_partitionedTableFunction = 337;
	public static readonly RULE_whereClause = 338;
	public static readonly RULE_searchCondition = 339;
	public static readonly RULE_valuesSource = 340;
	public static readonly RULE_valuesClause = 341;
	public static readonly RULE_valuesTableConstructor = 342;
	public static readonly RULE_valueRowConstructor = 343;
	public static readonly RULE_firstValueRowConstructor = 344;
	public static readonly RULE_virtualTableSource = 345;
	public static readonly RULE_selectClause = 346;
	public static readonly RULE_all_distinct = 347;
	public static readonly RULE_selectList = 348;
	public static readonly RULE_selectTrfmClause = 349;
	public static readonly RULE_selectItem = 350;
	public static readonly RULE_trfmClause = 351;
	public static readonly RULE_selectExpression = 352;
	public static readonly RULE_selectExpressionList = 353;
	public static readonly RULE_window_clause = 354;
	public static readonly RULE_window_defn = 355;
	public static readonly RULE_window_specification = 356;
	public static readonly RULE_window_frame = 357;
	public static readonly RULE_window_range_expression = 358;
	public static readonly RULE_window_value_expression = 359;
	public static readonly RULE_window_frame_start_boundary = 360;
	public static readonly RULE_window_frame_boundary = 361;
	public static readonly RULE_groupByClause = 362;
	public static readonly RULE_groupby_expression = 363;
	public static readonly RULE_groupByEmpty = 364;
	public static readonly RULE_rollupStandard = 365;
	public static readonly RULE_rollupOldSyntax = 366;
	public static readonly RULE_groupingSetExpression = 367;
	public static readonly RULE_groupingSetExpressionMultiple = 368;
	public static readonly RULE_groupingExpressionSingle = 369;
	public static readonly RULE_havingClause = 370;
	public static readonly RULE_qualifyClause = 371;
	public static readonly RULE_havingCondition = 372;
	public static readonly RULE_expressionsInParenthesis = 373;
	public static readonly RULE_expressionsNotInParenthesis = 374;
	public static readonly RULE_expressionPart = 375;
	public static readonly RULE_expressionOrDefault = 376;
	public static readonly RULE_firstExpressionsWithAlias = 377;
	public static readonly RULE_expressionWithAlias = 378;
	public static readonly RULE_expressions = 379;
	public static readonly RULE_columnRefOrderInParenthesis = 380;
	public static readonly RULE_columnRefOrderNotInParenthesis = 381;
	public static readonly RULE_orderByClause = 382;
	public static readonly RULE_clusterByClause = 383;
	public static readonly RULE_partitionByClause = 384;
	public static readonly RULE_distributeByClause = 385;
	public static readonly RULE_sortByClause = 386;
	public static readonly RULE_trimFunction = 387;
	public static readonly RULE_function_ = 388;
	public static readonly RULE_null_treatment = 389;
	public static readonly RULE_functionNameCreate = 390;
	public static readonly RULE_functionNameForDDL = 391;
	public static readonly RULE_functionNameForInvoke = 392;
	public static readonly RULE_userDefinedFuncName = 393;
	public static readonly RULE_internalFunctionName = 394;
	public static readonly RULE_castExpression = 395;
	public static readonly RULE_caseExpression = 396;
	public static readonly RULE_whenExpression = 397;
	public static readonly RULE_floorExpression = 398;
	public static readonly RULE_floorDateQualifiers = 399;
	public static readonly RULE_extractExpression = 400;
	public static readonly RULE_timeQualifiers = 401;
	public static readonly RULE_constant = 402;
	public static readonly RULE_prepareStmtParam = 403;
	public static readonly RULE_parameterIdx = 404;
	public static readonly RULE_stringLiteralSequence = 405;
	public static readonly RULE_charSetStringLiteral = 406;
	public static readonly RULE_dateLiteral = 407;
	public static readonly RULE_timestampLiteral = 408;
	public static readonly RULE_timestampLocalTZLiteral = 409;
	public static readonly RULE_intervalValue = 410;
	public static readonly RULE_intervalLiteral = 411;
	public static readonly RULE_intervalExpression = 412;
	public static readonly RULE_intervalQualifiers = 413;
	public static readonly RULE_expression = 414;
	public static readonly RULE_atomExpression = 415;
	public static readonly RULE_precedenceFieldExpression = 416;
	public static readonly RULE_precedenceUnaryOperator = 417;
	public static readonly RULE_precedenceUnaryPrefixExpression = 418;
	public static readonly RULE_precedenceBitwiseXorOperator = 419;
	public static readonly RULE_precedenceBitwiseXorExpression = 420;
	public static readonly RULE_precedenceStarOperator = 421;
	public static readonly RULE_precedenceStarExpression = 422;
	public static readonly RULE_precedencePlusOperator = 423;
	public static readonly RULE_precedencePlusExpression = 424;
	public static readonly RULE_precedenceConcatenateOperator = 425;
	public static readonly RULE_precedenceConcatenateExpression = 426;
	public static readonly RULE_precedenceAmpersandOperator = 427;
	public static readonly RULE_precedenceAmpersandExpression = 428;
	public static readonly RULE_precedenceBitwiseOrOperator = 429;
	public static readonly RULE_precedenceBitwiseOrExpression = 430;
	public static readonly RULE_precedenceRegexpOperator = 431;
	public static readonly RULE_precedenceSimilarOperator = 432;
	public static readonly RULE_subQueryExpression = 433;
	public static readonly RULE_precedenceSimilarExpression = 434;
	public static readonly RULE_precedenceSimilarExpressionMain = 435;
	public static readonly RULE_precedenceSimilarExpressionPart = 436;
	public static readonly RULE_precedenceSimilarExpressionAtom = 437;
	public static readonly RULE_precedenceSimilarExpressionQuantifierPredicate = 438;
	public static readonly RULE_quantifierType = 439;
	public static readonly RULE_precedenceSimilarExpressionIn = 440;
	public static readonly RULE_precedenceSimilarExpressionPartNot = 441;
	public static readonly RULE_precedenceDistinctOperator = 442;
	public static readonly RULE_precedenceEqualOperator = 443;
	public static readonly RULE_precedenceEqualExpression = 444;
	public static readonly RULE_isCondition = 445;
	public static readonly RULE_precedenceUnarySuffixExpression = 446;
	public static readonly RULE_precedenceNotOperator = 447;
	public static readonly RULE_precedenceNotExpression = 448;
	public static readonly RULE_precedenceAndOperator = 449;
	public static readonly RULE_precedenceAndExpression = 450;
	public static readonly RULE_precedenceOrOperator = 451;
	public static readonly RULE_precedenceOrExpression = 452;
	public static readonly RULE_booleanValue = 453;
	public static readonly RULE_booleanValueTok = 454;
	public static readonly RULE_tableOrPartition = 455;
	public static readonly RULE_partitionSpec = 456;
	public static readonly RULE_partitionVal = 457;
	public static readonly RULE_partitionSelectorSpec = 458;
	public static readonly RULE_partitionSelectorVal = 459;
	public static readonly RULE_partitionSelectorOperator = 460;
	public static readonly RULE_subQuerySelectorOperator = 461;
	public static readonly RULE_sysFuncNames = 462;
	public static readonly RULE_id_ = 463;
	public static readonly RULE_functionIdentifier = 464;
	public static readonly RULE_principalIdentifier = 465;
	public static readonly RULE_nonReserved = 466;
	public static readonly RULE_sql11ReservedKeywordsUsedAsFunctionName = 467;
	public static readonly RULE_hint = 468;
	public static readonly RULE_hintList = 469;
	public static readonly RULE_hintItem = 470;
	public static readonly RULE_hintName = 471;
	public static readonly RULE_hintArgs = 472;
	public static readonly RULE_hintArgName = 473;
	public static readonly RULE_prepareStatement = 474;
	public static readonly RULE_executeStatement = 475;
	public static readonly RULE_executeParamList = 476;
	public static readonly RULE_resourcePlanDdlStatements = 477;
	public static readonly RULE_rpAssign = 478;
	public static readonly RULE_rpAssignList = 479;
	public static readonly RULE_rpUnassign = 480;
	public static readonly RULE_rpUnassignList = 481;
	public static readonly RULE_createResourcePlanStatement = 482;
	public static readonly RULE_withReplace = 483;
	public static readonly RULE_activate = 484;
	public static readonly RULE_enable = 485;
	public static readonly RULE_disable = 486;
	public static readonly RULE_unmanaged = 487;
	public static readonly RULE_year = 488;
	public static readonly RULE_month = 489;
	public static readonly RULE_week = 490;
	public static readonly RULE_day = 491;
	public static readonly RULE_hour = 492;
	public static readonly RULE_minute = 493;
	public static readonly RULE_second = 494;
	public static readonly RULE_decimal = 495;
	public static readonly RULE_alterResourcePlanStatement = 496;
	public static readonly RULE_globalWmStatement = 497;
	public static readonly RULE_replaceResourcePlanStatement = 498;
	public static readonly RULE_dropResourcePlanStatement = 499;
	public static readonly RULE_poolPath = 500;
	public static readonly RULE_triggerExpression = 501;
	public static readonly RULE_triggerExpressionStandalone = 502;
	public static readonly RULE_triggerOrExpression = 503;
	public static readonly RULE_triggerAndExpression = 504;
	public static readonly RULE_triggerAtomExpression = 505;
	public static readonly RULE_triggerLiteral = 506;
	public static readonly RULE_comparisionOperator = 507;
	public static readonly RULE_triggerActionExpression = 508;
	public static readonly RULE_triggerActionExpressionStandalone = 509;
	public static readonly RULE_createTriggerStatement = 510;
	public static readonly RULE_alterTriggerStatement = 511;
	public static readonly RULE_dropTriggerStatement = 512;
	public static readonly RULE_poolAssign = 513;
	public static readonly RULE_poolAssignList = 514;
	public static readonly RULE_createPoolStatement = 515;
	public static readonly RULE_alterPoolStatement = 516;
	public static readonly RULE_dropPoolStatement = 517;
	public static readonly RULE_createMappingStatement = 518;
	public static readonly RULE_alterMappingStatement = 519;
	public static readonly RULE_dropMappingStatement = 520;
	// tslint:disable:no-trailing-whitespace
	public static readonly ruleNames: string[] = [
		"program", "statement", "explainStatement", "explainOption", "vectorizationOnly", 
		"vectorizatonDetail", "execStatement", "loadStatement", "dropPartitionsIgnoreClause", 
		"replicationClause", "exportStatement", "importStatement", "replDumpStatement", 
		"replDbPolicy", "replLoadStatement", "replConfigs", "replConfigsList", 
		"replTableLevelPolicy", "replStatusStatement", "ddlStatement", "ifExists", 
		"restrictOrCascade", "ifNotExists", "force", "rewriteEnabled", "rewriteDisabled", 
		"storedAsDirs", "orReplace", "createDatabaseStatement", "dbLocation", 
		"dbManagedLocation", "dbProperties", "dbPropertiesList", "dbConnectorName", 
		"switchDatabaseStatement", "dropDatabaseStatement", "databaseComment", 
		"truncateTableStatement", "dropTableStatement", "inputFileFormat", "tabTypeExpr", 
		"partTypeExpr", "tabPartColTypeExpr", "descStatement", "analyzeStatement", 
		"from_in", "db_schema", "showStatement", "showTablesFilterExpr", "lockStatement", 
		"lockDatabase", "lockMode", "unlockStatement", "unlockDatabase", "createRoleStatement", 
		"dropRoleStatement", "grantPrivileges", "revokePrivileges", "grantRole", 
		"revokeRole", "showRoleGrants", "showRoles", "showCurrentRole", "setRole", 
		"showGrants", "showRolePrincipals", "privilegeIncludeColObject", "privilegeObject", 
		"privObject", "privObjectCols", "privilegeList", "privlegeDef", "privilegeType", 
		"principalSpecification", "principalName", "principalAlterName", "withGrantOption", 
		"grantOptionFor", "adminOptionFor", "withAdminOption", "metastoreCheck", 
		"resourceList", "resource", "resourceType", "createFunctionStatement", 
		"dropFunctionStatement", "reloadFunctionsStatement", "createMacroStatement", 
		"dropMacroStatement", "createIndexStatement", "dropIndexStatement", "createViewStatement", 
		"viewPartition", "viewOrganization", "viewClusterSpec", "viewComplexSpec", 
		"viewDistSpec", "viewSortSpec", "dropViewStatement", "createMaterializedViewStatement", 
		"dropMaterializedViewStatement", "createScheduledQueryStatement", "dropScheduledQueryStatement", 
		"alterScheduledQueryStatement", "alterScheduledQueryChange", "scheduleSpec", 
		"executedAsSpec", "definedAsSpec", "showStmtIdentifier", "tableComment", 
		"createTablePartitionSpec", "createTablePartitionColumnTypeSpec", "createTablePartitionColumnSpec", 
		"partitionTransformSpec", "columnNameTransformConstraint", "partitionTransformType", 
		"tableBuckets", "tableImplBuckets", "tableSkewed", "rowFormat", "recordReader", 
		"recordWriter", "rowFormatSerde", "rowFormatDelimited", "tableRowFormat", 
		"tablePropertiesPrefixed", "tableProperties", "tablePropertiesList", "keyValueProperty", 
		"keyProperty", "tableRowFormatFieldIdentifier", "tableRowFormatCollItemsIdentifier", 
		"tableRowFormatMapKeysIdentifier", "tableRowFormatLinesIdentifier", "tableRowNullFormat", 
		"tableFileFormat", "tableLocation", "columnNameTypeList", "columnNameTypeOrConstraintList", 
		"columnNameColonTypeList", "columnNameList", "columnName", "columnNameCreate", 
		"extColumnName", "columnNameOrderList", "columnParenthesesList", "enableValidateSpecification", 
		"enableSpecification", "validateSpecification", "enforcedSpecification", 
		"relySpecification", "createConstraint", "alterConstraintWithName", "tableLevelConstraint", 
		"pkUkConstraint", "checkConstraint", "createForeignKey", "alterForeignKeyWithName", 
		"skewedValueElement", "skewedColumnValuePairList", "skewedColumnValuePair", 
		"skewedColumnValues", "skewedColumnValue", "skewedValueLocationElement", 
		"orderSpecification", "nullOrdering", "columnNameOrder", "columnNameCommentList", 
		"columnNameComment", "orderSpecificationRewrite", "columnRefOrder", "columnNameType", 
		"columnNameTypeOrConstraint", "tableConstraint", "columnNameTypeConstraint", 
		"columnConstraint", "foreignKeyConstraint", "colConstraint", "alterColumnConstraint", 
		"alterForeignKeyConstraint", "alterColConstraint", "columnConstraintType", 
		"defaultVal", "tableConstraintType", "constraintOptsCreate", "constraintOptsAlter", 
		"columnNameColonType", "colType", "colTypeList", "type", "primitiveType", 
		"listType", "structType", "mapType", "unionType", "setOperator", "queryStatementExpression", 
		"queryStatementExpressionBody", "withClause", "cteStatement", "fromStatement", 
		"singleFromStatement", "regularBody", "atomSelectStatement", "selectStatement", 
		"setOpSelectStatement", "selectStatementWithCTE", "body", "insertClause", 
		"destination", "limitClause", "deleteStatement", "columnAssignmentClause", 
		"precedencePlusExpressionOrDefault", "setColumnsClause", "updateStatement", 
		"sqlTransactionStatement", "startTransactionStatement", "transactionMode", 
		"transactionAccessMode", "isolationLevel", "levelOfIsolation", "commitStatement", 
		"rollbackStatement", "setAutoCommitStatement", "abortTransactionStatement", 
		"abortCompactionStatement", "mergeStatement", "whenClauses", "whenNotMatchedClause", 
		"whenMatchedAndClause", "whenMatchedThenClause", "updateOrDelete", "killQueryStatement", 
		"compactionId", "compactionPool", "compactionType", "compactionStatus", 
		"alterStatement", "alterTableStatementSuffix", "alterTblPartitionStatementSuffix", 
		"alterStatementPartitionKeyType", "alterViewStatementSuffix", "alterMaterializedViewStatementSuffix", 
		"alterMaterializedViewSuffixRewrite", "alterMaterializedViewSuffixRebuild", 
		"alterDatabaseStatementSuffix", "alterDatabaseSuffixProperties", "alterDatabaseSuffixSetOwner", 
		"alterDatabaseSuffixSetLocation", "alterDatabaseSuffixSetManagedLocation", 
		"alterStatementSuffixRename", "alterStatementSuffixAddCol", "alterStatementSuffixAddConstraint", 
		"alterStatementSuffixUpdateColumns", "alterStatementSuffixProtections", 
		"alterStatementSuffixDropConstraint", "alterStatementSuffixRenameCol", 
		"alterStatementSuffixUpdateStatsCol", "alterStatementSuffixUpdateStats", 
		"alterStatementChangeColPosition", "alterStatementSuffixAddPartitions", 
		"alterStatementSuffixAddPartitionsElement", "alterStatementSuffixTouch", 
		"alterStatementSuffixArchive", "alterStatementSuffixUnArchive", "partitionLocation", 
		"alterStatementSuffixRecoverPartitions", "alterStatementSuffixDropPartitions", 
		"alterStatementSuffixProperties", "alterViewSuffixProperties", "alterStatementSuffixSerdeProperties", 
		"tablePartitionPrefix", "alterStatementSuffixFileFormat", "alterStatementSuffixClusterbySortby", 
		"alterTblPartitionStatementSuffixSkewedLocation", "skewedLocations", "skewedLocationsList", 
		"skewedLocationMap", "alterStatementSuffixLocation", "alterStatementSuffixSkewedby", 
		"alterStatementSuffixExchangePartition", "alterStatementSuffixRenamePart", 
		"alterStatementSuffixStatsPart", "alterStatementSuffixMergeFiles", "alterStatementSuffixBucketNum", 
		"blocking", "compactPool", "alterStatementSuffixCompact", "alterStatementSuffixSetOwner", 
		"alterStatementSuffixSetPartSpec", "alterStatementSuffixExecute", "alterIndexStatementSuffix", 
		"fileFormat", "alterDataConnectorStatementSuffix", "alterDataConnectorSuffixProperties", 
		"alterDataConnectorSuffixSetOwner", "alterDataConnectorSuffixSetUrl", 
		"likeTableOrFile", "createTableStatement", "createDataConnectorStatement", 
		"dataConnectorComment", "dataConnectorUrl", "dataConnectorType", "dcProperties", 
		"dropDataConnectorStatement", "tableAllColumns", "defaultValue", "expressionList", 
		"aliasList", "fromClause", "fromSource", "atomjoinSource", "joinSource", 
		"joinSourcePart", "uniqueJoinSource", "uniqueJoinExpr", "uniqueJoinToken", 
		"joinToken", "lateralView", "tableAlias", "tableBucketSample", "splitSample", 
		"tableSample", "tableSource", "asOfClause", "uniqueJoinTableSource", "dbSchemaName", 
		"dbSchemaNameCreate", "tableOrView", "tableName", "tableNameCreate", "viewName", 
		"viewNameCreate", "subQuerySource", "partitioningSpec", "partitionTableFunctionSource", 
		"partitionedTableFunction", "whereClause", "searchCondition", "valuesSource", 
		"valuesClause", "valuesTableConstructor", "valueRowConstructor", "firstValueRowConstructor", 
		"virtualTableSource", "selectClause", "all_distinct", "selectList", "selectTrfmClause", 
		"selectItem", "trfmClause", "selectExpression", "selectExpressionList", 
		"window_clause", "window_defn", "window_specification", "window_frame", 
		"window_range_expression", "window_value_expression", "window_frame_start_boundary", 
		"window_frame_boundary", "groupByClause", "groupby_expression", "groupByEmpty", 
		"rollupStandard", "rollupOldSyntax", "groupingSetExpression", "groupingSetExpressionMultiple", 
		"groupingExpressionSingle", "havingClause", "qualifyClause", "havingCondition", 
		"expressionsInParenthesis", "expressionsNotInParenthesis", "expressionPart", 
		"expressionOrDefault", "firstExpressionsWithAlias", "expressionWithAlias", 
		"expressions", "columnRefOrderInParenthesis", "columnRefOrderNotInParenthesis", 
		"orderByClause", "clusterByClause", "partitionByClause", "distributeByClause", 
		"sortByClause", "trimFunction", "function_", "null_treatment", "functionNameCreate", 
		"functionNameForDDL", "functionNameForInvoke", "userDefinedFuncName", 
		"internalFunctionName", "castExpression", "caseExpression", "whenExpression", 
		"floorExpression", "floorDateQualifiers", "extractExpression", "timeQualifiers", 
		"constant", "prepareStmtParam", "parameterIdx", "stringLiteralSequence", 
		"charSetStringLiteral", "dateLiteral", "timestampLiteral", "timestampLocalTZLiteral", 
		"intervalValue", "intervalLiteral", "intervalExpression", "intervalQualifiers", 
		"expression", "atomExpression", "precedenceFieldExpression", "precedenceUnaryOperator", 
		"precedenceUnaryPrefixExpression", "precedenceBitwiseXorOperator", "precedenceBitwiseXorExpression", 
		"precedenceStarOperator", "precedenceStarExpression", "precedencePlusOperator", 
		"precedencePlusExpression", "precedenceConcatenateOperator", "precedenceConcatenateExpression", 
		"precedenceAmpersandOperator", "precedenceAmpersandExpression", "precedenceBitwiseOrOperator", 
		"precedenceBitwiseOrExpression", "precedenceRegexpOperator", "precedenceSimilarOperator", 
		"subQueryExpression", "precedenceSimilarExpression", "precedenceSimilarExpressionMain", 
		"precedenceSimilarExpressionPart", "precedenceSimilarExpressionAtom", 
		"precedenceSimilarExpressionQuantifierPredicate", "quantifierType", "precedenceSimilarExpressionIn", 
		"precedenceSimilarExpressionPartNot", "precedenceDistinctOperator", "precedenceEqualOperator", 
		"precedenceEqualExpression", "isCondition", "precedenceUnarySuffixExpression", 
		"precedenceNotOperator", "precedenceNotExpression", "precedenceAndOperator", 
		"precedenceAndExpression", "precedenceOrOperator", "precedenceOrExpression", 
		"booleanValue", "booleanValueTok", "tableOrPartition", "partitionSpec", 
		"partitionVal", "partitionSelectorSpec", "partitionSelectorVal", "partitionSelectorOperator", 
		"subQuerySelectorOperator", "sysFuncNames", "id_", "functionIdentifier", 
		"principalIdentifier", "nonReserved", "sql11ReservedKeywordsUsedAsFunctionName", 
		"hint", "hintList", "hintItem", "hintName", "hintArgs", "hintArgName", 
		"prepareStatement", "executeStatement", "executeParamList", "resourcePlanDdlStatements", 
		"rpAssign", "rpAssignList", "rpUnassign", "rpUnassignList", "createResourcePlanStatement", 
		"withReplace", "activate", "enable", "disable", "unmanaged", "year", "month", 
		"week", "day", "hour", "minute", "second", "decimal", "alterResourcePlanStatement", 
		"globalWmStatement", "replaceResourcePlanStatement", "dropResourcePlanStatement", 
		"poolPath", "triggerExpression", "triggerExpressionStandalone", "triggerOrExpression", 
		"triggerAndExpression", "triggerAtomExpression", "triggerLiteral", "comparisionOperator", 
		"triggerActionExpression", "triggerActionExpressionStandalone", "createTriggerStatement", 
		"alterTriggerStatement", "dropTriggerStatement", "poolAssign", "poolAssignList", 
		"createPoolStatement", "alterPoolStatement", "dropPoolStatement", "createMappingStatement", 
		"alterMappingStatement", "dropMappingStatement",
	];

	private static readonly _LITERAL_NAMES: Array<string | undefined> = [
		undefined, "'ABORT'", "'ACTIVATE'", "'ACTIVE'", "'ADD'", "'ADMIN'", "'AFTER'", 
		"'ALL'", "'ALLOC_FRACTION'", "'ALTER'", "'ANALYZE'", "'AND'", "'ANTI'", 
		"'ANY'", "'APPLICATION'", "'ARCHIVE'", "'ARRAY'", "'AS'", "'ASC'", "'AST'", 
		"'AT'", "'AUTHORIZATION'", "'AUTOCOMMIT'", "'BATCH'", "'BEFORE'", "'BETWEEN'", 
		"'BIGINT'", "'BINARY'", "'BOOLEAN'", "'BOTH'", "'BUCKET'", "'BUCKETS'", 
		"'BY'", "'CACHE'", "'CASCADE'", "'CASE'", "'CAST'", "'CBO'", "'CHANGE'", 
		"'CHAR'", "'CHECK'", "'CLUSTER'", "'CLUSTERED'", "'CLUSTERSTATUS'", "'COLLECTION'", 
		"'COLUMN'", "'COLUMNS'", "'COMMENT'", "'COMMIT'", "'COMPACT'", "'COMPACTIONS'", 
		"'COMPACTIONID'", "'COMPUTE'", "'CONCATENATE'", "'CONF'", "'CONSTRAINT'", 
		"'CONTINUE'", "'COST'", "'CREATE'", "'CRON'", "'CROSS'", "'CUBE'", "'CURRENT'", 
		"'CURRENT_DATE'", "'CURRENT_TIMESTAMP'", "'CURSOR'", "'DATA'", "'DATABASE'", 
		"'DATABASES'", "'CONNECTOR'", "'CONNECTORS'", "'DATE'", "'DATETIME'", 
		"'DAY'", "'DAYS'", "'DAYOFWEEK'", "'DBPROPERTIES'", "'DCPROPERTIES'", 
		"'DDL'", "'DEBUG'", "'DEC'", "'DECIMAL'", "'NUMERIC'", "'DEFAULT'", "'DEFERRED'", 
		"'DEFINED'", "'DELETE'", "'DELIMITED'", "'DEPENDENCY'", "'DESC'", "'DESCRIBE'", 
		"'DETAIL'", "'DIRECTORIES'", "'DIRECTORY'", "'DISABLE'", "'DISABLED'", 
		"'DISTINCT'", "'DISTRIBUTE'", "'DISTRIBUTED'", "'DO'", "'DOUBLE'", "'DROP'", 
		"'RECOVER'", "'DUMP'", "'$ELEM$'", "'ELSE'", "'ENABLE'", "'ENABLED'", 
		"'END'", "'ENFORCED'", "'ESCAPED'", "'EVERY'", "'EXCEPT'", "'EXCHANGE'", 
		"'EXCLUSIVE'", "'EXECUTE'", "'EXECUTED'", "'EXISTS'", "'EXPIRE_SNAPSHOTS'", 
		"'EXPLAIN'", "'EXPORT'", "'EXPRESSION'", "'EXTENDED'", "'EXTERNAL'", "'EXTRACT'", 
		"'FALSE'", "'FETCH'", "'FIELDS'", "'FILE'", "'FILEFORMAT'", "'FIRST'", 
		"'FLOAT'", "'FLOOR'", "'FOLLOWING'", "'FOR'", "'FORCE'", "'FOREIGN'", 
		"'FORMAT'", "'FORMATTED'", "'FROM'", "'FULL'", "'FUNCTION'", "'FUNCTIONS'", 
		"'GRANT'", "'GROUP'", "'GROUPING'", "'HAVING'", "'HOLD_DDLTIME'", "'HOUR'", 
		"'HOURS'", "'IDXPROPERTIES'", "'IF'", "'IGNORE'", "'IMPORT'", "'IN'", 
		"'INDEX'", "'INDEXES'", "'INNER'", "'INPATH'", "'INPUTDRIVER'", "'INPUTFORMAT'", 
		"'INSERT'", "'INT'", "'INTEGER'", "'INTERSECT'", "'INTERVAL'", "'INTO'", 
		"'IS'", "'ISOLATION'", "'ITEMS'", "'JAR'", "'JOIN'", "'JOINCOST'", "'KEY'", 
		"'KEYS'", "'$KEY$'", "'KILL'", "'LAST'", "'LATERAL'", "'LEADING'", "'LEFT'", 
		"'LESS'", "'LEVEL'", "'LIKE'", "'LIMIT'", "'LINES'", "'LOAD'", "'LOCAL'", 
		"'LOCATION'", "'LOCK'", "'LOCKS'", "'LOGICAL'", "'LONG'", "'MACRO'", "'MANAGED'", 
		"'MANAGEDLOCATION'", "'MANAGEMENT'", "'MAP'", "'MAPJOIN'", "'MAPPING'", 
		"'MATCHED'", "'MATERIALIZED'", "'MERGE'", "'METADATA'", "'MINUS'", "'MINUTE'", 
		"'MINUTES'", "'MONTH'", "'MONTHS'", "'MORE'", "'MOVE'", "'MSCK'", "'NONE'", 
		"'NORELY'", "'NOSCAN'", "'NOT'", "'NOVALIDATE'", "'NO_DROP'", "'NULL'", 
		"'NULLS'", "'OF'", "'OFFLINE'", "'OFFSET'", "'ON'", "'ONLY'", "'OPERATOR'", 
		"'OPTION'", "'OR'", "'ORDER'", "'OUT'", "'OUTER'", "'OUTPUTDRIVER'", "'OUTPUTFORMAT'", 
		"'OVER'", "'OVERWRITE'", "'OWNER'", "'PARTITION'", "'PARTITIONED'", "'PARTITIONS'", 
		"'PATH'", "'PERCENT'", "'PKFK_JOIN'", "'PLAN'", "'PLANS'", "'PLUS'", "'POOL'", 
		"'PRECEDING'", "'PRECISION'", "'PREPARE'", "'PRESERVE'", "'PRIMARY'", 
		"'PRINCIPALS'", "'PROCEDURE'", "'PROTECTION'", "'PURGE'", "'QUALIFY'", 
		"'QUARTER'", "'QUERY'", "'QUERY_PARALLELISM'", "'RANGE'", "'READ'", "'READONLY'", 
		"'READS'", "'REAL'", "'REBUILD'", "'RECORDREADER'", "'RECORDWRITER'", 
		"'REDUCE'", "'REFERENCES'", "'REGEXP'", "'RELOAD'", "'RELY'", "'REMOTE'", 
		"'RENAME'", "'REOPTIMIZATION'", "'REPAIR'", "'REPL'", "'REPLACE'", "'REPLICATION'", 
		"'RESOURCE'", "'RESPECT'", "'RESTRICT'", "'REVOKE'", "'REWRITE'", "'RIGHT'", 
		"'RLIKE'", "'ROLE'", "'ROLES'", "'ROLLBACK'", "'ROLLUP'", "'ROW'", "'ROWS'", 
		"'SCHEDULED'", "'SCHEDULING_POLICY'", "'SCHEMA'", "'SCHEMAS'", "'SECOND'", 
		"'SECONDS'", "'SELECT'", "'SEMI'", "'SERDE'", "'SERDEPROPERTIES'", "'SERVER'", 
		"'SET'", "'SETS'", "'SET_CURRENT_SNAPSHOT'", "'SHARED'", "'SHOW'", "'SHOW_DATABASE'", 
		"'SKEWED'", "'SMALLINT'", "'SNAPSHOT'", "'SOME'", "'SORT'", "'SORTED'", 
		"'SPEC'", "'SSL'", "'START'", "'STATISTICS'", "'STATUS'", "'STORED'", 
		"'STREAMTABLE'", "'STRING'", "'STRUCT'", "'SUMMARY'", "'SYNC'", "'SYSTEM_TIME'", 
		"'SYSTEM_VERSION'", "'TABLE'", "'TABLES'", "'TABLESAMPLE'", "'TBLPROPERTIES'", 
		"'TEMPORARY'", "'TERMINATED'", "'THEN'", "'TIME'", "'TIMESTAMP'", "'TIMESTAMPLOCALTZ'", 
		"'TIMESTAMPTZ'", "'TINYINT'", "'TO'", "'TOUCH'", "'TRAILING'", "'TRANSACTION'", 
		"'TRANSACTIONAL'", "'TRANSACTIONS'", "'TRANSFORM'", "'TRIGGER'", "'TRIM'", 
		"'TRUE'", "'TRUNCATE'", "'TYPE'", "'UNARCHIVE'", "'UNBOUNDED'", "'UNDO'", 
		"'UNION'", "'UNIONTYPE'", "'UNIQUE'", "'UNIQUEJOIN'", "'UNKNOWN'", "'UNLOCK'", 
		"'UNMANAGED'", "'UNSET'", "'UNSIGNED'", "'UPDATE'", "'URI'", "'URL'", 
		"'USE'", "'USER'", "'USING'", "'UTC'", "'UTC_TMESTAMP'", "'VALIDATE'", 
		"'VALUES'", "'$VALUE$'", "'VARCHAR'", "'VECTORIZATION'", "'VIEW'", "'VIEWS'", 
		"'WAIT'", "'WEEK'", "'WEEKS'", "'WHEN'", "'WHERE'", "'WHILE'", "'WINDOW'", 
		"'WITH'", "'WITHIN'", "'WORK'", "'WORKLOAD'", "'WRITE'", "'YEAR'", "'YEARS'", 
		"'ZONE'", "'.'", "':'", "','", "';'", "'('", "')'", "'['", "']'", "'{'", 
		"'}'", undefined, "'<=>'", undefined, "'<='", "'<'", "'>='", "'>'", "'/'", 
		"'+'", "'-'", "'*'", "'%'", "'DIV'", "'!'", "'&'", "'~'", "'|'", "'||'", 
		"'^'", "'?'", "'$'",
	];
	private static readonly _SYMBOLIC_NAMES: Array<string | undefined> = [
		undefined, "KW_ABORT", "KW_ACTIVATE", "KW_ACTIVE", "KW_ADD", "KW_ADMIN", 
		"KW_AFTER", "KW_ALL", "KW_ALLOC_FRACTION", "KW_ALTER", "KW_ANALYZE", "KW_AND", 
		"KW_ANTI", "KW_ANY", "KW_APPLICATION", "KW_ARCHIVE", "KW_ARRAY", "KW_AS", 
		"KW_ASC", "KW_AST", "KW_AT", "KW_AUTHORIZATION", "KW_AUTOCOMMIT", "KW_BATCH", 
		"KW_BEFORE", "KW_BETWEEN", "KW_BIGINT", "KW_BINARY", "KW_BOOLEAN", "KW_BOTH", 
		"KW_BUCKET", "KW_BUCKETS", "KW_BY", "KW_CACHE", "KW_CASCADE", "KW_CASE", 
		"KW_CAST", "KW_CBO", "KW_CHANGE", "KW_CHAR", "KW_CHECK", "KW_CLUSTER", 
		"KW_CLUSTERED", "KW_CLUSTERSTATUS", "KW_COLLECTION", "KW_COLUMN", "KW_COLUMNS", 
		"KW_COMMENT", "KW_COMMIT", "KW_COMPACT", "KW_COMPACTIONS", "KW_COMPACT_ID", 
		"KW_COMPUTE", "KW_CONCATENATE", "KW_CONF", "KW_CONSTRAINT", "KW_CONTINUE", 
		"KW_COST", "KW_CREATE", "KW_CRON", "KW_CROSS", "KW_CUBE", "KW_CURRENT", 
		"KW_CURRENT_DATE", "KW_CURRENT_TIMESTAMP", "KW_CURSOR", "KW_DATA", "KW_DATABASE", 
		"KW_DATABASES", "KW_DATACONNECTOR", "KW_DATACONNECTORS", "KW_DATE", "KW_DATETIME", 
		"KW_DAY", "KW_DAYS", "KW_DAYOFWEEK", "KW_DBPROPERTIES", "KW_DCPROPERTIES", 
		"KW_DDL", "KW_DEBUG", "KW_DEC", "KW_DECIMAL", "KW_NUMERIC", "KW_DEFAULT", 
		"KW_DEFERRED", "KW_DEFINED", "KW_DELETE", "KW_DELIMITED", "KW_DEPENDENCY", 
		"KW_DESC", "KW_DESCRIBE", "KW_DETAIL", "KW_DIRECTORIES", "KW_DIRECTORY", 
		"KW_DISABLE", "KW_DISABLED", "KW_DISTINCT", "KW_DISTRIBUTE", "KW_DISTRIBUTED", 
		"KW_DO", "KW_DOUBLE", "KW_DROP", "KW_RECOVER", "KW_DUMP", "KW_ELEM_TYPE", 
		"KW_ELSE", "KW_ENABLE", "KW_ENABLED", "KW_END", "KW_ENFORCED", "KW_ESCAPED", 
		"KW_EVERY", "KW_EXCEPT", "KW_EXCHANGE", "KW_EXCLUSIVE", "KW_EXECUTE", 
		"KW_EXECUTED", "KW_EXISTS", "KW_EXPIRE_SNAPSHOTS", "KW_EXPLAIN", "KW_EXPORT", 
		"KW_EXPRESSION", "KW_EXTENDED", "KW_EXTERNAL", "KW_EXTRACT", "KW_FALSE", 
		"KW_FETCH", "KW_FIELDS", "KW_FILE", "KW_FILEFORMAT", "KW_FIRST", "KW_FLOAT", 
		"KW_FLOOR", "KW_FOLLOWING", "KW_FOR", "KW_FORCE", "KW_FOREIGN", "KW_FORMAT", 
		"KW_FORMATTED", "KW_FROM", "KW_FULL", "KW_FUNCTION", "KW_FUNCTIONS", "KW_GRANT", 
		"KW_GROUP", "KW_GROUPING", "KW_HAVING", "KW_HOLD_DDLTIME", "KW_HOUR", 
		"KW_HOURS", "KW_IDXPROPERTIES", "KW_IF", "KW_IGNORE", "KW_IMPORT", "KW_IN", 
		"KW_INDEX", "KW_INDEXES", "KW_INNER", "KW_INPATH", "KW_INPUTDRIVER", "KW_INPUTFORMAT", 
		"KW_INSERT", "KW_INT", "KW_INTEGER", "KW_INTERSECT", "KW_INTERVAL", "KW_INTO", 
		"KW_IS", "KW_ISOLATION", "KW_ITEMS", "KW_JAR", "KW_JOIN", "KW_JOINCOST", 
		"KW_KEY", "KW_KEYS", "KW_KEY_TYPE", "KW_KILL", "KW_LAST", "KW_LATERAL", 
		"KW_LEADING", "KW_LEFT", "KW_LESS", "KW_LEVEL", "KW_LIKE", "KW_LIMIT", 
		"KW_LINES", "KW_LOAD", "KW_LOCAL", "KW_LOCATION", "KW_LOCK", "KW_LOCKS", 
		"KW_LOGICAL", "KW_LONG", "KW_MACRO", "KW_MANAGED", "KW_MANAGEDLOCATION", 
		"KW_MANAGEMENT", "KW_MAP", "KW_MAPJOIN", "KW_MAPPING", "KW_MATCHED", "KW_MATERIALIZED", 
		"KW_MERGE", "KW_METADATA", "KW_MINUS", "KW_MINUTE", "KW_MINUTES", "KW_MONTH", 
		"KW_MONTHS", "KW_MORE", "KW_MOVE", "KW_MSCK", "KW_NONE", "KW_NORELY", 
		"KW_NOSCAN", "KW_NOT", "KW_NOVALIDATE", "KW_NO_DROP", "KW_NULL", "KW_NULLS", 
		"KW_OF", "KW_OFFLINE", "KW_OFFSET", "KW_ON", "KW_ONLY", "KW_OPERATOR", 
		"KW_OPTION", "KW_OR", "KW_ORDER", "KW_OUT", "KW_OUTER", "KW_OUTPUTDRIVER", 
		"KW_OUTPUTFORMAT", "KW_OVER", "KW_OVERWRITE", "KW_OWNER", "KW_PARTITION", 
		"KW_PARTITIONED", "KW_PARTITIONS", "KW_PATH", "KW_PERCENT", "KW_PKFK_JOIN", 
		"KW_PLAN", "KW_PLANS", "KW_PLUS", "KW_POOL", "KW_PRECEDING", "KW_PRECISION", 
		"KW_PREPARE", "KW_PRESERVE", "KW_PRIMARY", "KW_PRINCIPALS", "KW_PROCEDURE", 
		"KW_PROTECTION", "KW_PURGE", "KW_QUALIFY", "KW_QUARTER", "KW_QUERY", "KW_QUERY_PARALLELISM", 
		"KW_RANGE", "KW_READ", "KW_READONLY", "KW_READS", "KW_REAL", "KW_REBUILD", 
		"KW_RECORDREADER", "KW_RECORDWRITER", "KW_REDUCE", "KW_REFERENCES", "KW_REGEXP", 
		"KW_RELOAD", "KW_RELY", "KW_REMOTE", "KW_RENAME", "KW_REOPTIMIZATION", 
		"KW_REPAIR", "KW_REPL", "KW_REPLACE", "KW_REPLICATION", "KW_RESOURCE", 
		"KW_RESPECT", "KW_RESTRICT", "KW_REVOKE", "KW_REWRITE", "KW_RIGHT", "KW_RLIKE", 
		"KW_ROLE", "KW_ROLES", "KW_ROLLBACK", "KW_ROLLUP", "KW_ROW", "KW_ROWS", 
		"KW_SCHEDULED", "KW_SCHEDULING_POLICY", "KW_SCHEMA", "KW_SCHEMAS", "KW_SECOND", 
		"KW_SECONDS", "KW_SELECT", "KW_SEMI", "KW_SERDE", "KW_SERDEPROPERTIES", 
		"KW_SERVER", "KW_SET", "KW_SETS", "KW_SET_CURRENT_SNAPSHOT", "KW_SHARED", 
		"KW_SHOW", "KW_SHOW_DATABASE", "KW_SKEWED", "KW_SMALLINT", "KW_SNAPSHOT", 
		"KW_SOME", "KW_SORT", "KW_SORTED", "KW_SPEC", "KW_SSL", "KW_START", "KW_STATISTICS", 
		"KW_STATUS", "KW_STORED", "KW_STREAMTABLE", "KW_STRING", "KW_STRUCT", 
		"KW_SUMMARY", "KW_SYNC", "KW_SYSTEM_TIME", "KW_SYSTEM_VERSION", "KW_TABLE", 
		"KW_TABLES", "KW_TABLESAMPLE", "KW_TBLPROPERTIES", "KW_TEMPORARY", "KW_TERMINATED", 
		"KW_THEN", "KW_TIME", "KW_TIMESTAMP", "KW_TIMESTAMPLOCALTZ", "KW_TIMESTAMPTZ", 
		"KW_TINYINT", "KW_TO", "KW_TOUCH", "KW_TRAILING", "KW_TRANSACTION", "KW_TRANSACTIONAL", 
		"KW_TRANSACTIONS", "KW_TRANSFORM", "KW_TRIGGER", "KW_TRIM", "KW_TRUE", 
		"KW_TRUNCATE", "KW_TYPE", "KW_UNARCHIVE", "KW_UNBOUNDED", "KW_UNDO", "KW_UNION", 
		"KW_UNIONTYPE", "KW_UNIQUE", "KW_UNIQUEJOIN", "KW_UNKNOWN", "KW_UNLOCK", 
		"KW_UNMANAGED", "KW_UNSET", "KW_UNSIGNED", "KW_UPDATE", "KW_URI", "KW_URL", 
		"KW_USE", "KW_USER", "KW_USING", "KW_UTC", "KW_UTCTIMESTAMP", "KW_VALIDATE", 
		"KW_VALUES", "KW_VALUE_TYPE", "KW_VARCHAR", "KW_VECTORIZATION", "KW_VIEW", 
		"KW_VIEWS", "KW_WAIT", "KW_WEEK", "KW_WEEKS", "KW_WHEN", "KW_WHERE", "KW_WHILE", 
		"KW_WINDOW", "KW_WITH", "KW_WITHIN", "KW_WORK", "KW_WORKLOAD", "KW_WRITE", 
		"KW_YEAR", "KW_YEARS", "KW_ZONE", "DOT", "COLON", "COMMA", "SEMICOLON", 
		"LPAREN", "RPAREN", "LSQUARE", "RSQUARE", "LCURLY", "RCURLY", "EQUAL", 
		"EQUAL_NS", "NOTEQUAL", "LESSTHANOREQUALTO", "LESSTHAN", "GREATERTHANOREQUALTO", 
		"GREATERTHAN", "DIVIDE", "PLUS", "MINUS", "STAR", "MOD", "DIV", "BITWISENOT", 
		"AMPERSAND", "TILDE", "BITWISEOR", "CONCATENATE", "BITWISEXOR", "QUESTION", 
		"DOLLAR", "StringLiteral", "CharSetLiteral", "IntegralLiteral", "NumberLiteral", 
		"ByteLengthLiteral", "Number", "Identifier", "CharSetName", "WHITE_SPACE", 
		"LINE_COMMENT", "QUERY_HINT", "SHOW_HINT", "HIDDEN_HINT",
	];
	public static readonly VOCABULARY: Vocabulary = new VocabularyImpl(HiveSqlParser._LITERAL_NAMES, HiveSqlParser._SYMBOLIC_NAMES, []);

	// @Override
	// @NotNull
	public get vocabulary(): Vocabulary {
		return HiveSqlParser.VOCABULARY;
	}
	// tslint:enable:no-trailing-whitespace

	// @Override
	public get grammarFileName(): string { return "HiveSqlParser.g4"; }

	// @Override
	public get ruleNames(): string[] { return HiveSqlParser.ruleNames; }

	// @Override
	public get serializedATN(): string { return HiveSqlParser._serializedATN; }

	protected createFailedPredicateException(predicate?: string, message?: string): FailedPredicateException {
		return new FailedPredicateException(this, predicate, message);
	}

	constructor(input: TokenStream) {
		super(input);
		this._interp = new ParserATNSimulator(HiveSqlParser._ATN, this);
	}
	// @RuleVersion(0)
	public program(): ProgramContext {
		let _localctx: ProgramContext = new ProgramContext(this._ctx, this.state);
		this.enterRule(_localctx, 0, HiveSqlParser.RULE_program);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 1045;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while ((((_la) & ~0x1F) === 0 && ((1 << _la) & ((1 << HiveSqlParser.KW_ABORT) | (1 << HiveSqlParser.KW_ALTER) | (1 << HiveSqlParser.KW_ANALYZE))) !== 0) || _la === HiveSqlParser.KW_COMMIT || _la === HiveSqlParser.KW_CREATE || ((((_la - 86)) & ~0x1F) === 0 && ((1 << (_la - 86)) & ((1 << (HiveSqlParser.KW_DELETE - 86)) | (1 << (HiveSqlParser.KW_DESC - 86)) | (1 << (HiveSqlParser.KW_DESCRIBE - 86)) | (1 << (HiveSqlParser.KW_DISABLE - 86)) | (1 << (HiveSqlParser.KW_DISABLED - 86)) | (1 << (HiveSqlParser.KW_DROP - 86)) | (1 << (HiveSqlParser.KW_ENABLE - 86)) | (1 << (HiveSqlParser.KW_ENABLED - 86)) | (1 << (HiveSqlParser.KW_EXECUTE - 86)))) !== 0) || ((((_la - 119)) & ~0x1F) === 0 && ((1 << (_la - 119)) & ((1 << (HiveSqlParser.KW_EXPLAIN - 119)) | (1 << (HiveSqlParser.KW_EXPORT - 119)) | (1 << (HiveSqlParser.KW_FROM - 119)) | (1 << (HiveSqlParser.KW_GRANT - 119)))) !== 0) || ((((_la - 153)) & ~0x1F) === 0 && ((1 << (_la - 153)) & ((1 << (HiveSqlParser.KW_IMPORT - 153)) | (1 << (HiveSqlParser.KW_INSERT - 153)) | (1 << (HiveSqlParser.KW_KILL - 153)))) !== 0) || ((((_la - 186)) & ~0x1F) === 0 && ((1 << (_la - 186)) & ((1 << (HiveSqlParser.KW_LOAD - 186)) | (1 << (HiveSqlParser.KW_LOCK - 186)) | (1 << (HiveSqlParser.KW_MAP - 186)) | (1 << (HiveSqlParser.KW_MERGE - 186)) | (1 << (HiveSqlParser.KW_MSCK - 186)))) !== 0) || ((((_la - 248)) & ~0x1F) === 0 && ((1 << (_la - 248)) & ((1 << (HiveSqlParser.KW_PREPARE - 248)) | (1 << (HiveSqlParser.KW_REDUCE - 248)) | (1 << (HiveSqlParser.KW_RELOAD - 248)) | (1 << (HiveSqlParser.KW_REPL - 248)) | (1 << (HiveSqlParser.KW_REPLACE - 248)))) !== 0) || ((((_la - 282)) & ~0x1F) === 0 && ((1 << (_la - 282)) & ((1 << (HiveSqlParser.KW_REVOKE - 282)) | (1 << (HiveSqlParser.KW_ROLLBACK - 282)) | (1 << (HiveSqlParser.KW_SELECT - 282)) | (1 << (HiveSqlParser.KW_SET - 282)) | (1 << (HiveSqlParser.KW_SHOW - 282)))) !== 0) || _la === HiveSqlParser.KW_START || ((((_la - 350)) & ~0x1F) === 0 && ((1 << (_la - 350)) & ((1 << (HiveSqlParser.KW_TRUNCATE - 350)) | (1 << (HiveSqlParser.KW_UNLOCK - 350)) | (1 << (HiveSqlParser.KW_UPDATE - 350)) | (1 << (HiveSqlParser.KW_USE - 350)) | (1 << (HiveSqlParser.KW_VALUES - 350)))) !== 0) || _la === HiveSqlParser.KW_WITH || _la === HiveSqlParser.LPAREN) {
				{
				{
				this.state = 1042;
				this.statement();
				}
				}
				this.state = 1047;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			}
			this.state = 1048;
			this.match(HiveSqlParser.EOF);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public statement(): StatementContext {
		let _localctx: StatementContext = new StatementContext(this._ctx, this.state);
		this.enterRule(_localctx, 2, HiveSqlParser.RULE_statement);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 1052;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case HiveSqlParser.KW_EXPLAIN:
				{
				this.state = 1050;
				this.explainStatement();
				}
				break;
			case HiveSqlParser.KW_ABORT:
			case HiveSqlParser.KW_ALTER:
			case HiveSqlParser.KW_ANALYZE:
			case HiveSqlParser.KW_COMMIT:
			case HiveSqlParser.KW_CREATE:
			case HiveSqlParser.KW_DELETE:
			case HiveSqlParser.KW_DESC:
			case HiveSqlParser.KW_DESCRIBE:
			case HiveSqlParser.KW_DISABLE:
			case HiveSqlParser.KW_DISABLED:
			case HiveSqlParser.KW_DROP:
			case HiveSqlParser.KW_ENABLE:
			case HiveSqlParser.KW_ENABLED:
			case HiveSqlParser.KW_EXECUTE:
			case HiveSqlParser.KW_EXPORT:
			case HiveSqlParser.KW_FROM:
			case HiveSqlParser.KW_GRANT:
			case HiveSqlParser.KW_IMPORT:
			case HiveSqlParser.KW_INSERT:
			case HiveSqlParser.KW_KILL:
			case HiveSqlParser.KW_LOAD:
			case HiveSqlParser.KW_LOCK:
			case HiveSqlParser.KW_MAP:
			case HiveSqlParser.KW_MERGE:
			case HiveSqlParser.KW_MSCK:
			case HiveSqlParser.KW_PREPARE:
			case HiveSqlParser.KW_REDUCE:
			case HiveSqlParser.KW_RELOAD:
			case HiveSqlParser.KW_REPL:
			case HiveSqlParser.KW_REPLACE:
			case HiveSqlParser.KW_REVOKE:
			case HiveSqlParser.KW_ROLLBACK:
			case HiveSqlParser.KW_SELECT:
			case HiveSqlParser.KW_SET:
			case HiveSqlParser.KW_SHOW:
			case HiveSqlParser.KW_START:
			case HiveSqlParser.KW_TRUNCATE:
			case HiveSqlParser.KW_UNLOCK:
			case HiveSqlParser.KW_UPDATE:
			case HiveSqlParser.KW_USE:
			case HiveSqlParser.KW_VALUES:
			case HiveSqlParser.KW_WITH:
			case HiveSqlParser.LPAREN:
				{
				this.state = 1051;
				this.execStatement();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			this.state = 1055;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 2, this._ctx) ) {
			case 1:
				{
				this.state = 1054;
				this.match(HiveSqlParser.SEMICOLON);
				}
				break;
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public explainStatement(): ExplainStatementContext {
		let _localctx: ExplainStatementContext = new ExplainStatementContext(this._ctx, this.state);
		this.enterRule(_localctx, 4, HiveSqlParser.RULE_explainStatement);
		try {
			let _alt: number;
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 1057;
			this.match(HiveSqlParser.KW_EXPLAIN);
			this.state = 1067;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case HiveSqlParser.KW_ABORT:
			case HiveSqlParser.KW_ALTER:
			case HiveSqlParser.KW_ANALYZE:
			case HiveSqlParser.KW_AST:
			case HiveSqlParser.KW_AUTHORIZATION:
			case HiveSqlParser.KW_CBO:
			case HiveSqlParser.KW_COMMIT:
			case HiveSqlParser.KW_CREATE:
			case HiveSqlParser.KW_DDL:
			case HiveSqlParser.KW_DEBUG:
			case HiveSqlParser.KW_DELETE:
			case HiveSqlParser.KW_DEPENDENCY:
			case HiveSqlParser.KW_DESC:
			case HiveSqlParser.KW_DESCRIBE:
			case HiveSqlParser.KW_DISABLE:
			case HiveSqlParser.KW_DISABLED:
			case HiveSqlParser.KW_DROP:
			case HiveSqlParser.KW_ENABLE:
			case HiveSqlParser.KW_ENABLED:
			case HiveSqlParser.KW_EXECUTE:
			case HiveSqlParser.KW_EXPORT:
			case HiveSqlParser.KW_EXTENDED:
			case HiveSqlParser.KW_FORMATTED:
			case HiveSqlParser.KW_FROM:
			case HiveSqlParser.KW_GRANT:
			case HiveSqlParser.KW_IMPORT:
			case HiveSqlParser.KW_INSERT:
			case HiveSqlParser.KW_KILL:
			case HiveSqlParser.KW_LOAD:
			case HiveSqlParser.KW_LOCK:
			case HiveSqlParser.KW_LOCKS:
			case HiveSqlParser.KW_LOGICAL:
			case HiveSqlParser.KW_MAP:
			case HiveSqlParser.KW_MERGE:
			case HiveSqlParser.KW_MSCK:
			case HiveSqlParser.KW_PREPARE:
			case HiveSqlParser.KW_REDUCE:
			case HiveSqlParser.KW_RELOAD:
			case HiveSqlParser.KW_REOPTIMIZATION:
			case HiveSqlParser.KW_REPL:
			case HiveSqlParser.KW_REPLACE:
			case HiveSqlParser.KW_REVOKE:
			case HiveSqlParser.KW_ROLLBACK:
			case HiveSqlParser.KW_SELECT:
			case HiveSqlParser.KW_SET:
			case HiveSqlParser.KW_SHOW:
			case HiveSqlParser.KW_START:
			case HiveSqlParser.KW_TRUNCATE:
			case HiveSqlParser.KW_UNLOCK:
			case HiveSqlParser.KW_UPDATE:
			case HiveSqlParser.KW_USE:
			case HiveSqlParser.KW_VALUES:
			case HiveSqlParser.KW_VECTORIZATION:
			case HiveSqlParser.KW_WITH:
			case HiveSqlParser.LPAREN:
				{
				this.state = 1061;
				this._errHandler.sync(this);
				_alt = this.interpreter.adaptivePredict(this._input, 3, this._ctx);
				while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) {
					if (_alt === 1) {
						{
						{
						this.state = 1058;
						this.explainOption();
						}
						}
					}
					this.state = 1063;
					this._errHandler.sync(this);
					_alt = this.interpreter.adaptivePredict(this._input, 3, this._ctx);
				}
				this.state = 1064;
				this.execStatement();
				}
				break;
			case HiveSqlParser.KW_REWRITE:
				{
				this.state = 1065;
				this.match(HiveSqlParser.KW_REWRITE);
				this.state = 1066;
				this.queryStatementExpression();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public explainOption(): ExplainOptionContext {
		let _localctx: ExplainOptionContext = new ExplainOptionContext(this._ctx, this.state);
		this.enterRule(_localctx, 6, HiveSqlParser.RULE_explainOption);
		let _la: number;
		try {
			this.state = 1091;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case HiveSqlParser.KW_EXTENDED:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 1069;
				this.match(HiveSqlParser.KW_EXTENDED);
				}
				break;
			case HiveSqlParser.KW_FORMATTED:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 1070;
				this.match(HiveSqlParser.KW_FORMATTED);
				}
				break;
			case HiveSqlParser.KW_DEPENDENCY:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 1071;
				this.match(HiveSqlParser.KW_DEPENDENCY);
				}
				break;
			case HiveSqlParser.KW_CBO:
				this.enterOuterAlt(_localctx, 4);
				{
				this.state = 1072;
				this.match(HiveSqlParser.KW_CBO);
				this.state = 1074;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === HiveSqlParser.KW_COST || _la === HiveSqlParser.KW_JOINCOST) {
					{
					this.state = 1073;
					_la = this._input.LA(1);
					if (!(_la === HiveSqlParser.KW_COST || _la === HiveSqlParser.KW_JOINCOST)) {
					this._errHandler.recoverInline(this);
					} else {
						if (this._input.LA(1) === Token.EOF) {
							this.matchedEOF = true;
						}

						this._errHandler.reportMatch(this);
						this.consume();
					}
					}
				}

				}
				break;
			case HiveSqlParser.KW_LOGICAL:
				this.enterOuterAlt(_localctx, 5);
				{
				this.state = 1076;
				this.match(HiveSqlParser.KW_LOGICAL);
				}
				break;
			case HiveSqlParser.KW_AUTHORIZATION:
				this.enterOuterAlt(_localctx, 6);
				{
				this.state = 1077;
				this.match(HiveSqlParser.KW_AUTHORIZATION);
				}
				break;
			case HiveSqlParser.KW_ANALYZE:
				this.enterOuterAlt(_localctx, 7);
				{
				this.state = 1078;
				this.match(HiveSqlParser.KW_ANALYZE);
				}
				break;
			case HiveSqlParser.KW_REOPTIMIZATION:
				this.enterOuterAlt(_localctx, 8);
				{
				this.state = 1079;
				this.match(HiveSqlParser.KW_REOPTIMIZATION);
				}
				break;
			case HiveSqlParser.KW_LOCKS:
				this.enterOuterAlt(_localctx, 9);
				{
				this.state = 1080;
				this.match(HiveSqlParser.KW_LOCKS);
				}
				break;
			case HiveSqlParser.KW_AST:
				this.enterOuterAlt(_localctx, 10);
				{
				this.state = 1081;
				this.match(HiveSqlParser.KW_AST);
				}
				break;
			case HiveSqlParser.KW_VECTORIZATION:
				this.enterOuterAlt(_localctx, 11);
				{
				this.state = 1082;
				this.match(HiveSqlParser.KW_VECTORIZATION);
				this.state = 1084;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === HiveSqlParser.KW_ONLY) {
					{
					this.state = 1083;
					this.vectorizationOnly();
					}
				}

				this.state = 1087;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === HiveSqlParser.KW_DETAIL || _la === HiveSqlParser.KW_EXPRESSION || _la === HiveSqlParser.KW_OPERATOR || _la === HiveSqlParser.KW_SUMMARY) {
					{
					this.state = 1086;
					this.vectorizatonDetail();
					}
				}

				}
				break;
			case HiveSqlParser.KW_DEBUG:
				this.enterOuterAlt(_localctx, 12);
				{
				this.state = 1089;
				this.match(HiveSqlParser.KW_DEBUG);
				}
				break;
			case HiveSqlParser.KW_DDL:
				this.enterOuterAlt(_localctx, 13);
				{
				this.state = 1090;
				this.match(HiveSqlParser.KW_DDL);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public vectorizationOnly(): VectorizationOnlyContext {
		let _localctx: VectorizationOnlyContext = new VectorizationOnlyContext(this._ctx, this.state);
		this.enterRule(_localctx, 8, HiveSqlParser.RULE_vectorizationOnly);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 1093;
			this.match(HiveSqlParser.KW_ONLY);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public vectorizatonDetail(): VectorizatonDetailContext {
		let _localctx: VectorizatonDetailContext = new VectorizatonDetailContext(this._ctx, this.state);
		this.enterRule(_localctx, 10, HiveSqlParser.RULE_vectorizatonDetail);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 1095;
			_la = this._input.LA(1);
			if (!(_la === HiveSqlParser.KW_DETAIL || _la === HiveSqlParser.KW_EXPRESSION || _la === HiveSqlParser.KW_OPERATOR || _la === HiveSqlParser.KW_SUMMARY)) {
			this._errHandler.recoverInline(this);
			} else {
				if (this._input.LA(1) === Token.EOF) {
					this.matchedEOF = true;
				}

				this._errHandler.reportMatch(this);
				this.consume();
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public execStatement(): ExecStatementContext {
		let _localctx: ExecStatementContext = new ExecStatementContext(this._ctx, this.state);
		this.enterRule(_localctx, 12, HiveSqlParser.RULE_execStatement);
		try {
			this.state = 1111;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 9, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 1097;
				this.queryStatementExpression();
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 1098;
				this.loadStatement();
				}
				break;

			case 3:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 1099;
				this.exportStatement();
				}
				break;

			case 4:
				this.enterOuterAlt(_localctx, 4);
				{
				this.state = 1100;
				this.importStatement();
				}
				break;

			case 5:
				this.enterOuterAlt(_localctx, 5);
				{
				this.state = 1101;
				this.replDumpStatement();
				}
				break;

			case 6:
				this.enterOuterAlt(_localctx, 6);
				{
				this.state = 1102;
				this.replLoadStatement();
				}
				break;

			case 7:
				this.enterOuterAlt(_localctx, 7);
				{
				this.state = 1103;
				this.replStatusStatement();
				}
				break;

			case 8:
				this.enterOuterAlt(_localctx, 8);
				{
				this.state = 1104;
				this.ddlStatement();
				}
				break;

			case 9:
				this.enterOuterAlt(_localctx, 9);
				{
				this.state = 1105;
				this.deleteStatement();
				}
				break;

			case 10:
				this.enterOuterAlt(_localctx, 10);
				{
				this.state = 1106;
				this.updateStatement();
				}
				break;

			case 11:
				this.enterOuterAlt(_localctx, 11);
				{
				this.state = 1107;
				this.sqlTransactionStatement();
				}
				break;

			case 12:
				this.enterOuterAlt(_localctx, 12);
				{
				this.state = 1108;
				this.mergeStatement();
				}
				break;

			case 13:
				this.enterOuterAlt(_localctx, 13);
				{
				this.state = 1109;
				this.prepareStatement();
				}
				break;

			case 14:
				this.enterOuterAlt(_localctx, 14);
				{
				this.state = 1110;
				this.executeStatement();
				}
				break;
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public loadStatement(): LoadStatementContext {
		let _localctx: LoadStatementContext = new LoadStatementContext(this._ctx, this.state);
		this.enterRule(_localctx, 14, HiveSqlParser.RULE_loadStatement);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 1113;
			this.match(HiveSqlParser.KW_LOAD);
			this.state = 1114;
			this.match(HiveSqlParser.KW_DATA);
			this.state = 1116;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === HiveSqlParser.KW_LOCAL) {
				{
				this.state = 1115;
				this.match(HiveSqlParser.KW_LOCAL);
				}
			}

			this.state = 1118;
			this.match(HiveSqlParser.KW_INPATH);
			this.state = 1119;
			this.match(HiveSqlParser.StringLiteral);
			this.state = 1121;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === HiveSqlParser.KW_OVERWRITE) {
				{
				this.state = 1120;
				this.match(HiveSqlParser.KW_OVERWRITE);
				}
			}

			this.state = 1123;
			this.match(HiveSqlParser.KW_INTO);
			this.state = 1124;
			this.match(HiveSqlParser.KW_TABLE);
			this.state = 1125;
			this.tableOrPartition();
			this.state = 1127;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === HiveSqlParser.KW_INPUTFORMAT) {
				{
				this.state = 1126;
				this.inputFileFormat();
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public dropPartitionsIgnoreClause(): DropPartitionsIgnoreClauseContext {
		let _localctx: DropPartitionsIgnoreClauseContext = new DropPartitionsIgnoreClauseContext(this._ctx, this.state);
		this.enterRule(_localctx, 16, HiveSqlParser.RULE_dropPartitionsIgnoreClause);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 1129;
			this.match(HiveSqlParser.KW_IGNORE);
			this.state = 1130;
			this.match(HiveSqlParser.KW_PROTECTION);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public replicationClause(): ReplicationClauseContext {
		let _localctx: ReplicationClauseContext = new ReplicationClauseContext(this._ctx, this.state);
		this.enterRule(_localctx, 18, HiveSqlParser.RULE_replicationClause);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 1132;
			this.match(HiveSqlParser.KW_FOR);
			this.state = 1134;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === HiveSqlParser.KW_METADATA) {
				{
				this.state = 1133;
				this.match(HiveSqlParser.KW_METADATA);
				}
			}

			this.state = 1136;
			this.match(HiveSqlParser.KW_REPLICATION);
			this.state = 1137;
			this.match(HiveSqlParser.LPAREN);
			this.state = 1138;
			this.match(HiveSqlParser.StringLiteral);
			this.state = 1139;
			this.match(HiveSqlParser.RPAREN);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public exportStatement(): ExportStatementContext {
		let _localctx: ExportStatementContext = new ExportStatementContext(this._ctx, this.state);
		this.enterRule(_localctx, 20, HiveSqlParser.RULE_exportStatement);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 1141;
			this.match(HiveSqlParser.KW_EXPORT);
			this.state = 1142;
			this.match(HiveSqlParser.KW_TABLE);
			this.state = 1143;
			this.tableOrPartition();
			this.state = 1144;
			this.match(HiveSqlParser.KW_TO);
			this.state = 1145;
			this.match(HiveSqlParser.StringLiteral);
			this.state = 1147;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === HiveSqlParser.KW_FOR) {
				{
				this.state = 1146;
				this.replicationClause();
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public importStatement(): ImportStatementContext {
		let _localctx: ImportStatementContext = new ImportStatementContext(this._ctx, this.state);
		this.enterRule(_localctx, 22, HiveSqlParser.RULE_importStatement);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 1149;
			this.match(HiveSqlParser.KW_IMPORT);
			this.state = 1155;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === HiveSqlParser.KW_EXTERNAL || _la === HiveSqlParser.KW_TABLE) {
				{
				this.state = 1151;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === HiveSqlParser.KW_EXTERNAL) {
					{
					this.state = 1150;
					this.match(HiveSqlParser.KW_EXTERNAL);
					}
				}

				this.state = 1153;
				this.match(HiveSqlParser.KW_TABLE);
				this.state = 1154;
				this.tableOrPartition();
				}
			}

			this.state = 1157;
			this.match(HiveSqlParser.KW_FROM);
			this.state = 1158;
			_localctx._path = this.match(HiveSqlParser.StringLiteral);
			this.state = 1160;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === HiveSqlParser.KW_LOCATION) {
				{
				this.state = 1159;
				this.tableLocation();
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public replDumpStatement(): ReplDumpStatementContext {
		let _localctx: ReplDumpStatementContext = new ReplDumpStatementContext(this._ctx, this.state);
		this.enterRule(_localctx, 24, HiveSqlParser.RULE_replDumpStatement);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 1162;
			this.match(HiveSqlParser.KW_REPL);
			this.state = 1163;
			this.match(HiveSqlParser.KW_DUMP);
			this.state = 1164;
			_localctx._dbPolicy = this.replDbPolicy();
			this.state = 1167;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 18, this._ctx) ) {
			case 1:
				{
				this.state = 1165;
				this.match(HiveSqlParser.KW_REPLACE);
				this.state = 1166;
				_localctx._oldDbPolicy = this.replDbPolicy();
				}
				break;
			}
			this.state = 1171;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 19, this._ctx) ) {
			case 1:
				{
				this.state = 1169;
				this.match(HiveSqlParser.KW_WITH);
				this.state = 1170;
				_localctx._replConf = this.replConfigs();
				}
				break;
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public replDbPolicy(): ReplDbPolicyContext {
		let _localctx: ReplDbPolicyContext = new ReplDbPolicyContext(this._ctx, this.state);
		this.enterRule(_localctx, 26, HiveSqlParser.RULE_replDbPolicy);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 1173;
			_localctx._dbName = this.dbSchemaName();
			this.state = 1176;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === HiveSqlParser.DOT) {
				{
				this.state = 1174;
				this.match(HiveSqlParser.DOT);
				this.state = 1175;
				_localctx._tablePolicy = this.replTableLevelPolicy();
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public replLoadStatement(): ReplLoadStatementContext {
		let _localctx: ReplLoadStatementContext = new ReplLoadStatementContext(this._ctx, this.state);
		this.enterRule(_localctx, 28, HiveSqlParser.RULE_replLoadStatement);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 1178;
			this.match(HiveSqlParser.KW_REPL);
			this.state = 1179;
			this.match(HiveSqlParser.KW_LOAD);
			this.state = 1180;
			_localctx._sourceDbPolicy = this.replDbPolicy();
			this.state = 1183;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === HiveSqlParser.KW_INTO) {
				{
				this.state = 1181;
				this.match(HiveSqlParser.KW_INTO);
				this.state = 1182;
				_localctx._dbName = this.dbSchemaName();
				}
			}

			this.state = 1187;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 22, this._ctx) ) {
			case 1:
				{
				this.state = 1185;
				this.match(HiveSqlParser.KW_WITH);
				this.state = 1186;
				_localctx._replConf = this.replConfigs();
				}
				break;
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public replConfigs(): ReplConfigsContext {
		let _localctx: ReplConfigsContext = new ReplConfigsContext(this._ctx, this.state);
		this.enterRule(_localctx, 30, HiveSqlParser.RULE_replConfigs);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 1189;
			this.match(HiveSqlParser.LPAREN);
			this.state = 1190;
			this.replConfigsList();
			this.state = 1191;
			this.match(HiveSqlParser.RPAREN);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public replConfigsList(): ReplConfigsListContext {
		let _localctx: ReplConfigsListContext = new ReplConfigsListContext(this._ctx, this.state);
		this.enterRule(_localctx, 32, HiveSqlParser.RULE_replConfigsList);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 1193;
			this.keyValueProperty();
			this.state = 1198;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === HiveSqlParser.COMMA) {
				{
				{
				this.state = 1194;
				this.match(HiveSqlParser.COMMA);
				this.state = 1195;
				this.keyValueProperty();
				}
				}
				this.state = 1200;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public replTableLevelPolicy(): ReplTableLevelPolicyContext {
		let _localctx: ReplTableLevelPolicyContext = new ReplTableLevelPolicyContext(this._ctx, this.state);
		this.enterRule(_localctx, 34, HiveSqlParser.RULE_replTableLevelPolicy);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 1201;
			_localctx._replTablesIncludeList = this.match(HiveSqlParser.StringLiteral);
			this.state = 1204;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === HiveSqlParser.DOT) {
				{
				this.state = 1202;
				this.match(HiveSqlParser.DOT);
				this.state = 1203;
				_localctx._replTablesExcludeList = this.match(HiveSqlParser.StringLiteral);
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public replStatusStatement(): ReplStatusStatementContext {
		let _localctx: ReplStatusStatementContext = new ReplStatusStatementContext(this._ctx, this.state);
		this.enterRule(_localctx, 36, HiveSqlParser.RULE_replStatusStatement);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 1206;
			this.match(HiveSqlParser.KW_REPL);
			this.state = 1207;
			this.match(HiveSqlParser.KW_STATUS);
			this.state = 1208;
			_localctx._dbName = this.dbSchemaName();
			this.state = 1211;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 25, this._ctx) ) {
			case 1:
				{
				this.state = 1209;
				this.match(HiveSqlParser.KW_WITH);
				this.state = 1210;
				_localctx._replConf = this.replConfigs();
				}
				break;
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public ddlStatement(): DdlStatementContext {
		let _localctx: DdlStatementContext = new DdlStatementContext(this._ctx, this.state);
		this.enterRule(_localctx, 38, HiveSqlParser.RULE_ddlStatement);
		try {
			this.state = 1260;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 26, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 1213;
				this.createDatabaseStatement();
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 1214;
				this.switchDatabaseStatement();
				}
				break;

			case 3:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 1215;
				this.dropDatabaseStatement();
				}
				break;

			case 4:
				this.enterOuterAlt(_localctx, 4);
				{
				this.state = 1216;
				this.createTableStatement();
				}
				break;

			case 5:
				this.enterOuterAlt(_localctx, 5);
				{
				this.state = 1217;
				this.dropTableStatement();
				}
				break;

			case 6:
				this.enterOuterAlt(_localctx, 6);
				{
				this.state = 1218;
				this.truncateTableStatement();
				}
				break;

			case 7:
				this.enterOuterAlt(_localctx, 7);
				{
				this.state = 1219;
				this.alterStatement();
				}
				break;

			case 8:
				this.enterOuterAlt(_localctx, 8);
				{
				this.state = 1220;
				this.descStatement();
				}
				break;

			case 9:
				this.enterOuterAlt(_localctx, 9);
				{
				this.state = 1221;
				this.showStatement();
				}
				break;

			case 10:
				this.enterOuterAlt(_localctx, 10);
				{
				this.state = 1222;
				this.metastoreCheck();
				}
				break;

			case 11:
				this.enterOuterAlt(_localctx, 11);
				{
				this.state = 1223;
				this.createViewStatement();
				}
				break;

			case 12:
				this.enterOuterAlt(_localctx, 12);
				{
				this.state = 1224;
				this.createMaterializedViewStatement();
				}
				break;

			case 13:
				this.enterOuterAlt(_localctx, 13);
				{
				this.state = 1225;
				this.createScheduledQueryStatement();
				}
				break;

			case 14:
				this.enterOuterAlt(_localctx, 14);
				{
				this.state = 1226;
				this.alterScheduledQueryStatement();
				}
				break;

			case 15:
				this.enterOuterAlt(_localctx, 15);
				{
				this.state = 1227;
				this.dropScheduledQueryStatement();
				}
				break;

			case 16:
				this.enterOuterAlt(_localctx, 16);
				{
				this.state = 1228;
				this.dropViewStatement();
				}
				break;

			case 17:
				this.enterOuterAlt(_localctx, 17);
				{
				this.state = 1229;
				this.dropMaterializedViewStatement();
				}
				break;

			case 18:
				this.enterOuterAlt(_localctx, 18);
				{
				this.state = 1230;
				this.createFunctionStatement();
				}
				break;

			case 19:
				this.enterOuterAlt(_localctx, 19);
				{
				this.state = 1231;
				this.createMacroStatement();
				}
				break;

			case 20:
				this.enterOuterAlt(_localctx, 20);
				{
				this.state = 1232;
				this.dropFunctionStatement();
				}
				break;

			case 21:
				this.enterOuterAlt(_localctx, 21);
				{
				this.state = 1233;
				this.reloadFunctionsStatement();
				}
				break;

			case 22:
				this.enterOuterAlt(_localctx, 22);
				{
				this.state = 1234;
				this.dropMacroStatement();
				}
				break;

			case 23:
				this.enterOuterAlt(_localctx, 23);
				{
				this.state = 1235;
				this.createIndexStatement();
				}
				break;

			case 24:
				this.enterOuterAlt(_localctx, 24);
				{
				this.state = 1236;
				this.dropIndexStatement();
				}
				break;

			case 25:
				this.enterOuterAlt(_localctx, 25);
				{
				this.state = 1237;
				this.analyzeStatement();
				}
				break;

			case 26:
				this.enterOuterAlt(_localctx, 26);
				{
				this.state = 1238;
				this.lockStatement();
				}
				break;

			case 27:
				this.enterOuterAlt(_localctx, 27);
				{
				this.state = 1239;
				this.unlockStatement();
				}
				break;

			case 28:
				this.enterOuterAlt(_localctx, 28);
				{
				this.state = 1240;
				this.lockDatabase();
				}
				break;

			case 29:
				this.enterOuterAlt(_localctx, 29);
				{
				this.state = 1241;
				this.unlockDatabase();
				}
				break;

			case 30:
				this.enterOuterAlt(_localctx, 30);
				{
				this.state = 1242;
				this.createRoleStatement();
				}
				break;

			case 31:
				this.enterOuterAlt(_localctx, 31);
				{
				this.state = 1243;
				this.dropRoleStatement();
				}
				break;

			case 32:
				this.enterOuterAlt(_localctx, 32);
				{
				this.state = 1244;
				this.grantPrivileges();
				}
				break;

			case 33:
				this.enterOuterAlt(_localctx, 33);
				{
				this.state = 1245;
				this.revokePrivileges();
				}
				break;

			case 34:
				this.enterOuterAlt(_localctx, 34);
				{
				this.state = 1246;
				this.showGrants();
				}
				break;

			case 35:
				this.enterOuterAlt(_localctx, 35);
				{
				this.state = 1247;
				this.showRoleGrants();
				}
				break;

			case 36:
				this.enterOuterAlt(_localctx, 36);
				{
				this.state = 1248;
				this.showRolePrincipals();
				}
				break;

			case 37:
				this.enterOuterAlt(_localctx, 37);
				{
				this.state = 1249;
				this.showRoles();
				}
				break;

			case 38:
				this.enterOuterAlt(_localctx, 38);
				{
				this.state = 1250;
				this.grantRole();
				}
				break;

			case 39:
				this.enterOuterAlt(_localctx, 39);
				{
				this.state = 1251;
				this.revokeRole();
				}
				break;

			case 40:
				this.enterOuterAlt(_localctx, 40);
				{
				this.state = 1252;
				this.setRole();
				}
				break;

			case 41:
				this.enterOuterAlt(_localctx, 41);
				{
				this.state = 1253;
				this.showCurrentRole();
				}
				break;

			case 42:
				this.enterOuterAlt(_localctx, 42);
				{
				this.state = 1254;
				this.abortTransactionStatement();
				}
				break;

			case 43:
				this.enterOuterAlt(_localctx, 43);
				{
				this.state = 1255;
				this.abortCompactionStatement();
				}
				break;

			case 44:
				this.enterOuterAlt(_localctx, 44);
				{
				this.state = 1256;
				this.killQueryStatement();
				}
				break;

			case 45:
				this.enterOuterAlt(_localctx, 45);
				{
				this.state = 1257;
				this.resourcePlanDdlStatements();
				}
				break;

			case 46:
				this.enterOuterAlt(_localctx, 46);
				{
				this.state = 1258;
				this.createDataConnectorStatement();
				}
				break;

			case 47:
				this.enterOuterAlt(_localctx, 47);
				{
				this.state = 1259;
				this.dropDataConnectorStatement();
				}
				break;
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public ifExists(): IfExistsContext {
		let _localctx: IfExistsContext = new IfExistsContext(this._ctx, this.state);
		this.enterRule(_localctx, 40, HiveSqlParser.RULE_ifExists);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 1262;
			this.match(HiveSqlParser.KW_IF);
			this.state = 1263;
			this.match(HiveSqlParser.KW_EXISTS);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public restrictOrCascade(): RestrictOrCascadeContext {
		let _localctx: RestrictOrCascadeContext = new RestrictOrCascadeContext(this._ctx, this.state);
		this.enterRule(_localctx, 42, HiveSqlParser.RULE_restrictOrCascade);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 1265;
			_la = this._input.LA(1);
			if (!(_la === HiveSqlParser.KW_CASCADE || _la === HiveSqlParser.KW_RESTRICT)) {
			this._errHandler.recoverInline(this);
			} else {
				if (this._input.LA(1) === Token.EOF) {
					this.matchedEOF = true;
				}

				this._errHandler.reportMatch(this);
				this.consume();
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public ifNotExists(): IfNotExistsContext {
		let _localctx: IfNotExistsContext = new IfNotExistsContext(this._ctx, this.state);
		this.enterRule(_localctx, 44, HiveSqlParser.RULE_ifNotExists);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 1267;
			this.match(HiveSqlParser.KW_IF);
			this.state = 1268;
			this.match(HiveSqlParser.KW_NOT);
			this.state = 1269;
			this.match(HiveSqlParser.KW_EXISTS);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public force(): ForceContext {
		let _localctx: ForceContext = new ForceContext(this._ctx, this.state);
		this.enterRule(_localctx, 46, HiveSqlParser.RULE_force);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 1271;
			this.match(HiveSqlParser.KW_FORCE);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public rewriteEnabled(): RewriteEnabledContext {
		let _localctx: RewriteEnabledContext = new RewriteEnabledContext(this._ctx, this.state);
		this.enterRule(_localctx, 48, HiveSqlParser.RULE_rewriteEnabled);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 1273;
			this.enable();
			this.state = 1274;
			this.match(HiveSqlParser.KW_REWRITE);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public rewriteDisabled(): RewriteDisabledContext {
		let _localctx: RewriteDisabledContext = new RewriteDisabledContext(this._ctx, this.state);
		this.enterRule(_localctx, 50, HiveSqlParser.RULE_rewriteDisabled);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 1276;
			this.disable();
			this.state = 1277;
			this.match(HiveSqlParser.KW_REWRITE);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public storedAsDirs(): StoredAsDirsContext {
		let _localctx: StoredAsDirsContext = new StoredAsDirsContext(this._ctx, this.state);
		this.enterRule(_localctx, 52, HiveSqlParser.RULE_storedAsDirs);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 1279;
			this.match(HiveSqlParser.KW_STORED);
			this.state = 1280;
			this.match(HiveSqlParser.KW_AS);
			this.state = 1281;
			this.match(HiveSqlParser.KW_DIRECTORIES);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public orReplace(): OrReplaceContext {
		let _localctx: OrReplaceContext = new OrReplaceContext(this._ctx, this.state);
		this.enterRule(_localctx, 54, HiveSqlParser.RULE_orReplace);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 1283;
			this.match(HiveSqlParser.KW_OR);
			this.state = 1284;
			this.match(HiveSqlParser.KW_REPLACE);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public createDatabaseStatement(): CreateDatabaseStatementContext {
		let _localctx: CreateDatabaseStatementContext = new CreateDatabaseStatementContext(this._ctx, this.state);
		this.enterRule(_localctx, 56, HiveSqlParser.RULE_createDatabaseStatement);
		let _la: number;
		try {
			this.state = 1325;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 36, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 1286;
				this.match(HiveSqlParser.KW_CREATE);
				this.state = 1288;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === HiveSqlParser.KW_REMOTE) {
					{
					this.state = 1287;
					this.match(HiveSqlParser.KW_REMOTE);
					}
				}

				this.state = 1290;
				this.db_schema();
				this.state = 1292;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === HiveSqlParser.KW_IF) {
					{
					this.state = 1291;
					this.ifNotExists();
					}
				}

				this.state = 1294;
				_localctx._name = this.dbSchemaNameCreate();
				this.state = 1296;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === HiveSqlParser.KW_COMMENT) {
					{
					this.state = 1295;
					this.databaseComment();
					}
				}

				this.state = 1299;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === HiveSqlParser.KW_LOCATION) {
					{
					this.state = 1298;
					this.dbLocation();
					}
				}

				this.state = 1302;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === HiveSqlParser.KW_MANAGEDLOCATION) {
					{
					this.state = 1301;
					this.dbManagedLocation();
					}
				}

				this.state = 1307;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 32, this._ctx) ) {
				case 1:
					{
					this.state = 1304;
					this.match(HiveSqlParser.KW_WITH);
					this.state = 1305;
					this.match(HiveSqlParser.KW_DBPROPERTIES);
					this.state = 1306;
					_localctx._dbprops = this.dbProperties();
					}
					break;
				}
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 1309;
				this.match(HiveSqlParser.KW_CREATE);
				this.state = 1310;
				this.match(HiveSqlParser.KW_REMOTE);
				this.state = 1311;
				this.db_schema();
				this.state = 1313;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === HiveSqlParser.KW_IF) {
					{
					this.state = 1312;
					this.ifNotExists();
					}
				}

				this.state = 1315;
				_localctx._name = this.dbSchemaNameCreate();
				this.state = 1317;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === HiveSqlParser.KW_COMMENT) {
					{
					this.state = 1316;
					this.databaseComment();
					}
				}

				this.state = 1319;
				this.dbConnectorName();
				this.state = 1323;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 35, this._ctx) ) {
				case 1:
					{
					this.state = 1320;
					this.match(HiveSqlParser.KW_WITH);
					this.state = 1321;
					this.match(HiveSqlParser.KW_DBPROPERTIES);
					this.state = 1322;
					_localctx._dbprops = this.dbProperties();
					}
					break;
				}
				}
				break;
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public dbLocation(): DbLocationContext {
		let _localctx: DbLocationContext = new DbLocationContext(this._ctx, this.state);
		this.enterRule(_localctx, 58, HiveSqlParser.RULE_dbLocation);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 1327;
			this.match(HiveSqlParser.KW_LOCATION);
			this.state = 1328;
			_localctx._locn = this.match(HiveSqlParser.StringLiteral);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public dbManagedLocation(): DbManagedLocationContext {
		let _localctx: DbManagedLocationContext = new DbManagedLocationContext(this._ctx, this.state);
		this.enterRule(_localctx, 60, HiveSqlParser.RULE_dbManagedLocation);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 1330;
			this.match(HiveSqlParser.KW_MANAGEDLOCATION);
			this.state = 1331;
			_localctx._locn = this.match(HiveSqlParser.StringLiteral);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public dbProperties(): DbPropertiesContext {
		let _localctx: DbPropertiesContext = new DbPropertiesContext(this._ctx, this.state);
		this.enterRule(_localctx, 62, HiveSqlParser.RULE_dbProperties);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 1333;
			this.match(HiveSqlParser.LPAREN);
			this.state = 1334;
			this.dbPropertiesList();
			this.state = 1335;
			this.match(HiveSqlParser.RPAREN);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public dbPropertiesList(): DbPropertiesListContext {
		let _localctx: DbPropertiesListContext = new DbPropertiesListContext(this._ctx, this.state);
		this.enterRule(_localctx, 64, HiveSqlParser.RULE_dbPropertiesList);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 1337;
			this.keyValueProperty();
			this.state = 1342;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === HiveSqlParser.COMMA) {
				{
				{
				this.state = 1338;
				this.match(HiveSqlParser.COMMA);
				this.state = 1339;
				this.keyValueProperty();
				}
				}
				this.state = 1344;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public dbConnectorName(): DbConnectorNameContext {
		let _localctx: DbConnectorNameContext = new DbConnectorNameContext(this._ctx, this.state);
		this.enterRule(_localctx, 66, HiveSqlParser.RULE_dbConnectorName);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 1345;
			this.match(HiveSqlParser.KW_USING);
			this.state = 1346;
			_localctx._dcName = this.dbSchemaName();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public switchDatabaseStatement(): SwitchDatabaseStatementContext {
		let _localctx: SwitchDatabaseStatementContext = new SwitchDatabaseStatementContext(this._ctx, this.state);
		this.enterRule(_localctx, 68, HiveSqlParser.RULE_switchDatabaseStatement);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 1348;
			this.match(HiveSqlParser.KW_USE);
			this.state = 1349;
			this.dbSchemaName();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public dropDatabaseStatement(): DropDatabaseStatementContext {
		let _localctx: DropDatabaseStatementContext = new DropDatabaseStatementContext(this._ctx, this.state);
		this.enterRule(_localctx, 70, HiveSqlParser.RULE_dropDatabaseStatement);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 1351;
			this.match(HiveSqlParser.KW_DROP);
			this.state = 1352;
			this.db_schema();
			this.state = 1354;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === HiveSqlParser.KW_IF) {
				{
				this.state = 1353;
				this.ifExists();
				}
			}

			this.state = 1356;
			this.dbSchemaName();
			this.state = 1358;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === HiveSqlParser.KW_CASCADE || _la === HiveSqlParser.KW_RESTRICT) {
				{
				this.state = 1357;
				this.restrictOrCascade();
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public databaseComment(): DatabaseCommentContext {
		let _localctx: DatabaseCommentContext = new DatabaseCommentContext(this._ctx, this.state);
		this.enterRule(_localctx, 72, HiveSqlParser.RULE_databaseComment);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 1360;
			this.match(HiveSqlParser.KW_COMMENT);
			this.state = 1361;
			_localctx._comment = this.match(HiveSqlParser.StringLiteral);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public truncateTableStatement(): TruncateTableStatementContext {
		let _localctx: TruncateTableStatementContext = new TruncateTableStatementContext(this._ctx, this.state);
		this.enterRule(_localctx, 74, HiveSqlParser.RULE_truncateTableStatement);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 1363;
			this.match(HiveSqlParser.KW_TRUNCATE);
			this.state = 1365;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === HiveSqlParser.KW_TABLE) {
				{
				this.state = 1364;
				this.match(HiveSqlParser.KW_TABLE);
				}
			}

			this.state = 1367;
			this.tablePartitionPrefix();
			this.state = 1373;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === HiveSqlParser.KW_COLUMNS) {
				{
				this.state = 1368;
				this.match(HiveSqlParser.KW_COLUMNS);
				this.state = 1369;
				this.match(HiveSqlParser.LPAREN);
				this.state = 1370;
				this.columnNameList();
				this.state = 1371;
				this.match(HiveSqlParser.RPAREN);
				}
			}

			this.state = 1376;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === HiveSqlParser.KW_FORCE) {
				{
				this.state = 1375;
				this.force();
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public dropTableStatement(): DropTableStatementContext {
		let _localctx: DropTableStatementContext = new DropTableStatementContext(this._ctx, this.state);
		this.enterRule(_localctx, 76, HiveSqlParser.RULE_dropTableStatement);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 1378;
			this.match(HiveSqlParser.KW_DROP);
			this.state = 1379;
			this.match(HiveSqlParser.KW_TABLE);
			this.state = 1381;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === HiveSqlParser.KW_IF) {
				{
				this.state = 1380;
				this.ifExists();
				}
			}

			this.state = 1383;
			this.tableName();
			this.state = 1385;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === HiveSqlParser.KW_PURGE) {
				{
				this.state = 1384;
				this.match(HiveSqlParser.KW_PURGE);
				}
			}

			this.state = 1388;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === HiveSqlParser.KW_FOR) {
				{
				this.state = 1387;
				this.replicationClause();
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public inputFileFormat(): InputFileFormatContext {
		let _localctx: InputFileFormatContext = new InputFileFormatContext(this._ctx, this.state);
		this.enterRule(_localctx, 78, HiveSqlParser.RULE_inputFileFormat);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 1390;
			this.match(HiveSqlParser.KW_INPUTFORMAT);
			this.state = 1391;
			_localctx._inFmt = this.match(HiveSqlParser.StringLiteral);
			this.state = 1392;
			this.match(HiveSqlParser.KW_SERDE);
			this.state = 1393;
			_localctx._serdeCls = this.match(HiveSqlParser.StringLiteral);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public tabTypeExpr(): TabTypeExprContext {
		let _localctx: TabTypeExprContext = new TabTypeExprContext(this._ctx, this.state);
		this.enterRule(_localctx, 80, HiveSqlParser.RULE_tabTypeExpr);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 1395;
			this.id_();
			this.state = 1398;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === HiveSqlParser.DOT) {
				{
				this.state = 1396;
				this.match(HiveSqlParser.DOT);
				this.state = 1397;
				this.id_();
				}
			}

			this.state = 1413;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 49, this._ctx) ) {
			case 1:
				{
				this.state = 1400;
				this.id_();
				this.state = 1410;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				while (_la === HiveSqlParser.DOT) {
					{
					{
					this.state = 1401;
					this.match(HiveSqlParser.DOT);
					this.state = 1406;
					this._errHandler.sync(this);
					switch ( this.interpreter.adaptivePredict(this._input, 47, this._ctx) ) {
					case 1:
						{
						this.state = 1402;
						this.match(HiveSqlParser.KW_ELEM_TYPE);
						}
						break;

					case 2:
						{
						this.state = 1403;
						this.match(HiveSqlParser.KW_KEY_TYPE);
						}
						break;

					case 3:
						{
						this.state = 1404;
						this.match(HiveSqlParser.KW_VALUE_TYPE);
						}
						break;

					case 4:
						{
						this.state = 1405;
						this.id_();
						}
						break;
					}
					}
					}
					this.state = 1412;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
				}
				}
				break;
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public partTypeExpr(): PartTypeExprContext {
		let _localctx: PartTypeExprContext = new PartTypeExprContext(this._ctx, this.state);
		this.enterRule(_localctx, 82, HiveSqlParser.RULE_partTypeExpr);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 1415;
			this.tabTypeExpr();
			this.state = 1417;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === HiveSqlParser.KW_PARTITION) {
				{
				this.state = 1416;
				this.partitionSpec();
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public tabPartColTypeExpr(): TabPartColTypeExprContext {
		let _localctx: TabPartColTypeExprContext = new TabPartColTypeExprContext(this._ctx, this.state);
		this.enterRule(_localctx, 84, HiveSqlParser.RULE_tabPartColTypeExpr);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 1419;
			this.tableOrView();
			this.state = 1421;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === HiveSqlParser.KW_PARTITION) {
				{
				this.state = 1420;
				this.partitionSpec();
				}
			}

			this.state = 1424;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 52, this._ctx) ) {
			case 1:
				{
				this.state = 1423;
				this.extColumnName();
				}
				break;
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public descStatement(): DescStatementContext {
		let _localctx: DescStatementContext = new DescStatementContext(this._ctx, this.state);
		this.enterRule(_localctx, 86, HiveSqlParser.RULE_descStatement);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 1426;
			_la = this._input.LA(1);
			if (!(_la === HiveSqlParser.KW_DESC || _la === HiveSqlParser.KW_DESCRIBE)) {
			this._errHandler.recoverInline(this);
			} else {
				if (this._input.LA(1) === Token.EOF) {
					this.matchedEOF = true;
				}

				this._errHandler.reportMatch(this);
				this.consume();
			}
			this.state = 1449;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 57, this._ctx) ) {
			case 1:
				{
				this.state = 1427;
				this.db_schema();
				this.state = 1429;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === HiveSqlParser.KW_EXTENDED) {
					{
					this.state = 1428;
					this.match(HiveSqlParser.KW_EXTENDED);
					}
				}

				this.state = 1431;
				_localctx._dbName = this.dbSchemaName();
				}
				break;

			case 2:
				{
				this.state = 1433;
				this.match(HiveSqlParser.KW_DATACONNECTOR);
				this.state = 1435;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === HiveSqlParser.KW_EXTENDED) {
					{
					this.state = 1434;
					this.match(HiveSqlParser.KW_EXTENDED);
					}
				}

				this.state = 1437;
				_localctx._dcName = this.dbSchemaName();
				}
				break;

			case 3:
				{
				this.state = 1438;
				this.match(HiveSqlParser.KW_FUNCTION);
				this.state = 1440;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === HiveSqlParser.KW_EXTENDED) {
					{
					this.state = 1439;
					this.match(HiveSqlParser.KW_EXTENDED);
					}
				}

				this.state = 1442;
				_localctx._name = this.functionNameForDDL();
				}
				break;

			case 4:
				{
				this.state = 1445;
				this._errHandler.sync(this);
				switch (this._input.LA(1)) {
				case HiveSqlParser.KW_FORMATTED:
					{
					this.state = 1443;
					_localctx._descOptions = this.match(HiveSqlParser.KW_FORMATTED);
					}
					break;
				case HiveSqlParser.KW_EXTENDED:
					{
					this.state = 1444;
					_localctx._descOptions = this.match(HiveSqlParser.KW_EXTENDED);
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				this.state = 1447;
				_localctx._parttype = this.tabPartColTypeExpr();
				}
				break;

			case 5:
				{
				this.state = 1448;
				_localctx._parttype = this.tabPartColTypeExpr();
				}
				break;
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public analyzeStatement(): AnalyzeStatementContext {
		let _localctx: AnalyzeStatementContext = new AnalyzeStatementContext(this._ctx, this.state);
		this.enterRule(_localctx, 88, HiveSqlParser.RULE_analyzeStatement);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 1451;
			this.match(HiveSqlParser.KW_ANALYZE);
			this.state = 1452;
			this.match(HiveSqlParser.KW_TABLE);
			this.state = 1453;
			_localctx._parttype = this.tableOrPartition();
			this.state = 1466;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case HiveSqlParser.KW_COMPUTE:
				{
				this.state = 1454;
				this.match(HiveSqlParser.KW_COMPUTE);
				this.state = 1455;
				this.match(HiveSqlParser.KW_STATISTICS);
				this.state = 1462;
				this._errHandler.sync(this);
				switch (this._input.LA(1)) {
				case HiveSqlParser.KW_NOSCAN:
					{
					this.state = 1456;
					_localctx._noscan = this.match(HiveSqlParser.KW_NOSCAN);
					}
					break;
				case HiveSqlParser.KW_FOR:
					{
					this.state = 1457;
					this.match(HiveSqlParser.KW_FOR);
					this.state = 1458;
					this.match(HiveSqlParser.KW_COLUMNS);
					this.state = 1460;
					this._errHandler.sync(this);
					switch ( this.interpreter.adaptivePredict(this._input, 58, this._ctx) ) {
					case 1:
						{
						this.state = 1459;
						_localctx._statsColumnName = this.columnNameList();
						}
						break;
					}
					}
					break;
				case HiveSqlParser.EOF:
				case HiveSqlParser.KW_ABORT:
				case HiveSqlParser.KW_ALTER:
				case HiveSqlParser.KW_ANALYZE:
				case HiveSqlParser.KW_COMMIT:
				case HiveSqlParser.KW_CREATE:
				case HiveSqlParser.KW_DELETE:
				case HiveSqlParser.KW_DESC:
				case HiveSqlParser.KW_DESCRIBE:
				case HiveSqlParser.KW_DISABLE:
				case HiveSqlParser.KW_DISABLED:
				case HiveSqlParser.KW_DROP:
				case HiveSqlParser.KW_ENABLE:
				case HiveSqlParser.KW_ENABLED:
				case HiveSqlParser.KW_EXECUTE:
				case HiveSqlParser.KW_EXPLAIN:
				case HiveSqlParser.KW_EXPORT:
				case HiveSqlParser.KW_FROM:
				case HiveSqlParser.KW_GRANT:
				case HiveSqlParser.KW_IMPORT:
				case HiveSqlParser.KW_INSERT:
				case HiveSqlParser.KW_KILL:
				case HiveSqlParser.KW_LOAD:
				case HiveSqlParser.KW_LOCK:
				case HiveSqlParser.KW_MAP:
				case HiveSqlParser.KW_MERGE:
				case HiveSqlParser.KW_MSCK:
				case HiveSqlParser.KW_PREPARE:
				case HiveSqlParser.KW_REDUCE:
				case HiveSqlParser.KW_RELOAD:
				case HiveSqlParser.KW_REPL:
				case HiveSqlParser.KW_REPLACE:
				case HiveSqlParser.KW_REVOKE:
				case HiveSqlParser.KW_ROLLBACK:
				case HiveSqlParser.KW_SELECT:
				case HiveSqlParser.KW_SET:
				case HiveSqlParser.KW_SHOW:
				case HiveSqlParser.KW_START:
				case HiveSqlParser.KW_TRUNCATE:
				case HiveSqlParser.KW_UNLOCK:
				case HiveSqlParser.KW_UPDATE:
				case HiveSqlParser.KW_USE:
				case HiveSqlParser.KW_VALUES:
				case HiveSqlParser.KW_WITH:
				case HiveSqlParser.SEMICOLON:
				case HiveSqlParser.LPAREN:
					break;
				default:
					break;
				}
				}
				break;
			case HiveSqlParser.KW_CACHE:
				{
				this.state = 1464;
				this.match(HiveSqlParser.KW_CACHE);
				this.state = 1465;
				this.match(HiveSqlParser.KW_METADATA);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public from_in(): From_inContext {
		let _localctx: From_inContext = new From_inContext(this._ctx, this.state);
		this.enterRule(_localctx, 90, HiveSqlParser.RULE_from_in);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 1468;
			_la = this._input.LA(1);
			if (!(_la === HiveSqlParser.KW_FROM || _la === HiveSqlParser.KW_IN)) {
			this._errHandler.recoverInline(this);
			} else {
				if (this._input.LA(1) === Token.EOF) {
					this.matchedEOF = true;
				}

				this._errHandler.reportMatch(this);
				this.consume();
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public db_schema(): Db_schemaContext {
		let _localctx: Db_schemaContext = new Db_schemaContext(this._ctx, this.state);
		this.enterRule(_localctx, 92, HiveSqlParser.RULE_db_schema);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 1470;
			_la = this._input.LA(1);
			if (!(_la === HiveSqlParser.KW_DATABASE || _la === HiveSqlParser.KW_SCHEMA)) {
			this._errHandler.recoverInline(this);
			} else {
				if (this._input.LA(1) === Token.EOF) {
					this.matchedEOF = true;
				}

				this._errHandler.reportMatch(this);
				this.consume();
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public showStatement(): ShowStatementContext {
		let _localctx: ShowStatementContext = new ShowStatementContext(this._ctx, this.state);
		this.enterRule(_localctx, 94, HiveSqlParser.RULE_showStatement);
		let _la: number;
		try {
			this.state = 1665;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 100, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 1472;
				this.match(HiveSqlParser.KW_SHOW);
				this.state = 1473;
				_la = this._input.LA(1);
				if (!(_la === HiveSqlParser.KW_DATABASES || _la === HiveSqlParser.KW_SCHEMAS)) {
				this._errHandler.recoverInline(this);
				} else {
					if (this._input.LA(1) === Token.EOF) {
						this.matchedEOF = true;
					}

					this._errHandler.reportMatch(this);
					this.consume();
				}
				this.state = 1476;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === HiveSqlParser.KW_LIKE) {
					{
					this.state = 1474;
					this.match(HiveSqlParser.KW_LIKE);
					this.state = 1475;
					this.showStmtIdentifier();
					}
				}

				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 1478;
				this.match(HiveSqlParser.KW_SHOW);
				this.state = 1480;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === HiveSqlParser.KW_EXTENDED) {
					{
					this.state = 1479;
					_localctx._isExtended = this.match(HiveSqlParser.KW_EXTENDED);
					}
				}

				this.state = 1482;
				this.match(HiveSqlParser.KW_TABLES);
				this.state = 1486;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 63, this._ctx) ) {
				case 1:
					{
					this.state = 1483;
					this.from_in();
					this.state = 1484;
					_localctx._db_name = this.dbSchemaName();
					}
					break;
				}
				this.state = 1489;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 64, this._ctx) ) {
				case 1:
					{
					this.state = 1488;
					_localctx._filter = this.showTablesFilterExpr();
					}
					break;
				}
				}
				break;

			case 3:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 1491;
				this.match(HiveSqlParser.KW_SHOW);
				this.state = 1492;
				this.match(HiveSqlParser.KW_VIEWS);
				this.state = 1496;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 65, this._ctx) ) {
				case 1:
					{
					this.state = 1493;
					this.from_in();
					this.state = 1494;
					_localctx._db_name = this.dbSchemaName();
					}
					break;
				}
				this.state = 1501;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 66, this._ctx) ) {
				case 1:
					{
					this.state = 1498;
					this.match(HiveSqlParser.KW_LIKE);
					this.state = 1499;
					this.showStmtIdentifier();
					}
					break;

				case 2:
					{
					this.state = 1500;
					this.showStmtIdentifier();
					}
					break;
				}
				}
				break;

			case 4:
				this.enterOuterAlt(_localctx, 4);
				{
				this.state = 1503;
				this.match(HiveSqlParser.KW_SHOW);
				this.state = 1504;
				this.match(HiveSqlParser.KW_MATERIALIZED);
				this.state = 1505;
				this.match(HiveSqlParser.KW_VIEWS);
				this.state = 1509;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 67, this._ctx) ) {
				case 1:
					{
					this.state = 1506;
					this.from_in();
					this.state = 1507;
					_localctx._db_name = this.dbSchemaName();
					}
					break;
				}
				this.state = 1514;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 68, this._ctx) ) {
				case 1:
					{
					this.state = 1511;
					this.match(HiveSqlParser.KW_LIKE);
					this.state = 1512;
					this.showStmtIdentifier();
					}
					break;

				case 2:
					{
					this.state = 1513;
					this.showStmtIdentifier();
					}
					break;
				}
				}
				break;

			case 5:
				this.enterOuterAlt(_localctx, 5);
				{
				this.state = 1516;
				this.match(HiveSqlParser.KW_SHOW);
				this.state = 1518;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === HiveSqlParser.KW_SORTED) {
					{
					this.state = 1517;
					this.match(HiveSqlParser.KW_SORTED);
					}
				}

				this.state = 1520;
				this.match(HiveSqlParser.KW_COLUMNS);
				this.state = 1521;
				this.from_in();
				this.state = 1522;
				this.tableOrView();
				this.state = 1526;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 70, this._ctx) ) {
				case 1:
					{
					this.state = 1523;
					this.from_in();
					this.state = 1524;
					_localctx._db_name = this.dbSchemaName();
					}
					break;
				}
				this.state = 1531;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 71, this._ctx) ) {
				case 1:
					{
					this.state = 1528;
					this.match(HiveSqlParser.KW_LIKE);
					this.state = 1529;
					this.showStmtIdentifier();
					}
					break;

				case 2:
					{
					this.state = 1530;
					this.showStmtIdentifier();
					}
					break;
				}
				}
				break;

			case 6:
				this.enterOuterAlt(_localctx, 6);
				{
				this.state = 1533;
				this.match(HiveSqlParser.KW_SHOW);
				this.state = 1534;
				this.match(HiveSqlParser.KW_FUNCTIONS);
				this.state = 1537;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === HiveSqlParser.KW_LIKE) {
					{
					this.state = 1535;
					this.match(HiveSqlParser.KW_LIKE);
					this.state = 1536;
					this.functionNameForDDL();
					}
				}

				}
				break;

			case 7:
				this.enterOuterAlt(_localctx, 7);
				{
				this.state = 1539;
				this.match(HiveSqlParser.KW_SHOW);
				this.state = 1540;
				this.match(HiveSqlParser.KW_PARTITIONS);
				this.state = 1541;
				_localctx._tabOrViewName = this.tableOrView();
				this.state = 1543;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === HiveSqlParser.KW_PARTITION) {
					{
					this.state = 1542;
					this.partitionSpec();
					}
				}

				this.state = 1546;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === HiveSqlParser.KW_WHERE) {
					{
					this.state = 1545;
					this.whereClause();
					}
				}

				this.state = 1549;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === HiveSqlParser.KW_ORDER) {
					{
					this.state = 1548;
					this.orderByClause();
					}
				}

				this.state = 1552;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === HiveSqlParser.KW_LIMIT) {
					{
					this.state = 1551;
					this.limitClause();
					}
				}

				}
				break;

			case 8:
				this.enterOuterAlt(_localctx, 8);
				{
				this.state = 1554;
				this.match(HiveSqlParser.KW_SHOW);
				this.state = 1555;
				this.match(HiveSqlParser.KW_CREATE);
				this.state = 1561;
				this._errHandler.sync(this);
				switch (this._input.LA(1)) {
				case HiveSqlParser.KW_DATABASE:
				case HiveSqlParser.KW_SCHEMA:
					{
					this.state = 1556;
					this.db_schema();
					this.state = 1557;
					_localctx._db_name = this.dbSchemaName();
					}
					break;
				case HiveSqlParser.KW_TABLE:
					{
					this.state = 1559;
					this.match(HiveSqlParser.KW_TABLE);
					this.state = 1560;
					_localctx._tabName = this.tableName();
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				}
				break;

			case 9:
				this.enterOuterAlt(_localctx, 9);
				{
				this.state = 1563;
				this.match(HiveSqlParser.KW_SHOW);
				this.state = 1564;
				this.match(HiveSqlParser.KW_TABLE);
				this.state = 1565;
				this.match(HiveSqlParser.KW_EXTENDED);
				this.state = 1569;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === HiveSqlParser.KW_FROM || _la === HiveSqlParser.KW_IN) {
					{
					this.state = 1566;
					this.from_in();
					this.state = 1567;
					_localctx._db_name = this.dbSchemaName();
					}
				}

				this.state = 1571;
				this.match(HiveSqlParser.KW_LIKE);
				this.state = 1572;
				this.showStmtIdentifier();
				this.state = 1574;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === HiveSqlParser.KW_PARTITION) {
					{
					this.state = 1573;
					this.partitionSpec();
					}
				}

				}
				break;

			case 10:
				this.enterOuterAlt(_localctx, 10);
				{
				this.state = 1576;
				this.match(HiveSqlParser.KW_SHOW);
				this.state = 1577;
				this.match(HiveSqlParser.KW_TBLPROPERTIES);
				this.state = 1578;
				this.tableName();
				this.state = 1582;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 80, this._ctx) ) {
				case 1:
					{
					this.state = 1579;
					this.match(HiveSqlParser.LPAREN);
					this.state = 1580;
					_localctx._prptyName = this.match(HiveSqlParser.StringLiteral);
					this.state = 1581;
					this.match(HiveSqlParser.RPAREN);
					}
					break;
				}
				}
				break;

			case 11:
				this.enterOuterAlt(_localctx, 11);
				{
				this.state = 1584;
				this.match(HiveSqlParser.KW_SHOW);
				this.state = 1585;
				this.match(HiveSqlParser.KW_LOCKS);
				this.state = 1597;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 84, this._ctx) ) {
				case 1:
					{
					this.state = 1586;
					this.db_schema();
					this.state = 1587;
					_localctx._dbName = this.dbSchemaName();
					this.state = 1589;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
					if (_la === HiveSqlParser.KW_EXTENDED) {
						{
						this.state = 1588;
						_localctx._isExtended = this.match(HiveSqlParser.KW_EXTENDED);
						}
					}

					}
					break;

				case 2:
					{
					this.state = 1592;
					this._errHandler.sync(this);
					switch ( this.interpreter.adaptivePredict(this._input, 82, this._ctx) ) {
					case 1:
						{
						this.state = 1591;
						_localctx._parttype = this.partTypeExpr();
						}
						break;
					}
					this.state = 1595;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
					if (_la === HiveSqlParser.KW_EXTENDED) {
						{
						this.state = 1594;
						_localctx._isExtended = this.match(HiveSqlParser.KW_EXTENDED);
						}
					}

					}
					break;
				}
				}
				break;

			case 12:
				this.enterOuterAlt(_localctx, 12);
				{
				this.state = 1599;
				this.match(HiveSqlParser.KW_SHOW);
				this.state = 1600;
				this.match(HiveSqlParser.KW_COMPACTIONS);
				this.state = 1637;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 96, this._ctx) ) {
				case 1:
					{
					this.state = 1601;
					this.compactionId();
					}
					break;

				case 2:
					{
					this.state = 1602;
					this.db_schema();
					this.state = 1603;
					_localctx._dbName = this.dbSchemaName();
					this.state = 1605;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
					if (_la === HiveSqlParser.KW_POOL) {
						{
						this.state = 1604;
						this.compactionPool();
						}
					}

					this.state = 1608;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
					if (_la === HiveSqlParser.KW_TYPE) {
						{
						this.state = 1607;
						this.compactionType();
						}
					}

					this.state = 1611;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
					if (_la === HiveSqlParser.KW_STATUS) {
						{
						this.state = 1610;
						this.compactionStatus();
						}
					}

					this.state = 1614;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
					if (_la === HiveSqlParser.KW_ORDER) {
						{
						this.state = 1613;
						this.orderByClause();
						}
					}

					this.state = 1617;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
					if (_la === HiveSqlParser.KW_LIMIT) {
						{
						this.state = 1616;
						this.limitClause();
						}
					}

					}
					break;

				case 3:
					{
					this.state = 1620;
					this._errHandler.sync(this);
					switch ( this.interpreter.adaptivePredict(this._input, 90, this._ctx) ) {
					case 1:
						{
						this.state = 1619;
						_localctx._parttype = this.partTypeExpr();
						}
						break;
					}
					this.state = 1623;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
					if (_la === HiveSqlParser.KW_POOL) {
						{
						this.state = 1622;
						this.compactionPool();
						}
					}

					this.state = 1626;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
					if (_la === HiveSqlParser.KW_TYPE) {
						{
						this.state = 1625;
						this.compactionType();
						}
					}

					this.state = 1629;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
					if (_la === HiveSqlParser.KW_STATUS) {
						{
						this.state = 1628;
						this.compactionStatus();
						}
					}

					this.state = 1632;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
					if (_la === HiveSqlParser.KW_ORDER) {
						{
						this.state = 1631;
						this.orderByClause();
						}
					}

					this.state = 1635;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
					if (_la === HiveSqlParser.KW_LIMIT) {
						{
						this.state = 1634;
						this.limitClause();
						}
					}

					}
					break;
				}
				}
				break;

			case 13:
				this.enterOuterAlt(_localctx, 13);
				{
				this.state = 1639;
				this.match(HiveSqlParser.KW_SHOW);
				this.state = 1640;
				this.match(HiveSqlParser.KW_TRANSACTIONS);
				}
				break;

			case 14:
				this.enterOuterAlt(_localctx, 14);
				{
				this.state = 1641;
				this.match(HiveSqlParser.KW_SHOW);
				this.state = 1642;
				this.match(HiveSqlParser.KW_CONF);
				this.state = 1643;
				this.match(HiveSqlParser.StringLiteral);
				}
				break;

			case 15:
				this.enterOuterAlt(_localctx, 15);
				{
				this.state = 1644;
				this.match(HiveSqlParser.KW_SHOW);
				this.state = 1645;
				this.match(HiveSqlParser.KW_RESOURCE);
				this.state = 1649;
				this._errHandler.sync(this);
				switch (this._input.LA(1)) {
				case HiveSqlParser.KW_PLAN:
					{
					this.state = 1646;
					this.match(HiveSqlParser.KW_PLAN);
					this.state = 1647;
					_localctx._rp_name = this.id_();
					}
					break;
				case HiveSqlParser.KW_PLANS:
					{
					this.state = 1648;
					this.match(HiveSqlParser.KW_PLANS);
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				}
				break;

			case 16:
				this.enterOuterAlt(_localctx, 16);
				{
				this.state = 1651;
				this.match(HiveSqlParser.KW_SHOW);
				this.state = 1652;
				this.match(HiveSqlParser.KW_DATACONNECTORS);
				}
				break;

			case 17:
				this.enterOuterAlt(_localctx, 17);
				{
				this.state = 1653;
				this.match(HiveSqlParser.KW_SHOW);
				this.state = 1655;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === HiveSqlParser.KW_FORMATTED) {
					{
					this.state = 1654;
					this.match(HiveSqlParser.KW_FORMATTED);
					}
				}

				this.state = 1657;
				_la = this._input.LA(1);
				if (!(_la === HiveSqlParser.KW_INDEX || _la === HiveSqlParser.KW_INDEXES)) {
				this._errHandler.recoverInline(this);
				} else {
					if (this._input.LA(1) === Token.EOF) {
						this.matchedEOF = true;
					}

					this._errHandler.reportMatch(this);
					this.consume();
				}
				this.state = 1658;
				this.match(HiveSqlParser.KW_ON);
				this.state = 1659;
				this.tableName();
				this.state = 1663;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 99, this._ctx) ) {
				case 1:
					{
					this.state = 1660;
					this.from_in();
					this.state = 1661;
					this.dbSchemaName();
					}
					break;
				}
				}
				break;
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public showTablesFilterExpr(): ShowTablesFilterExprContext {
		let _localctx: ShowTablesFilterExprContext = new ShowTablesFilterExprContext(this._ctx, this.state);
		this.enterRule(_localctx, 96, HiveSqlParser.RULE_showTablesFilterExpr);
		try {
			this.state = 1675;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case HiveSqlParser.KW_WHERE:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 1667;
				this.match(HiveSqlParser.KW_WHERE);
				this.state = 1668;
				this.id_();
				this.state = 1669;
				this.match(HiveSqlParser.EQUAL);
				this.state = 1670;
				this.match(HiveSqlParser.StringLiteral);
				}
				break;
			case HiveSqlParser.KW_LIKE:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 1672;
				this.match(HiveSqlParser.KW_LIKE);
				this.state = 1673;
				this.showStmtIdentifier();
				}
				break;
			case HiveSqlParser.KW_ABORT:
			case HiveSqlParser.KW_ACTIVATE:
			case HiveSqlParser.KW_ACTIVE:
			case HiveSqlParser.KW_ADD:
			case HiveSqlParser.KW_ADMIN:
			case HiveSqlParser.KW_AFTER:
			case HiveSqlParser.KW_ALLOC_FRACTION:
			case HiveSqlParser.KW_ANALYZE:
			case HiveSqlParser.KW_ARCHIVE:
			case HiveSqlParser.KW_ASC:
			case HiveSqlParser.KW_AST:
			case HiveSqlParser.KW_AT:
			case HiveSqlParser.KW_AUTOCOMMIT:
			case HiveSqlParser.KW_BATCH:
			case HiveSqlParser.KW_BEFORE:
			case HiveSqlParser.KW_BUCKET:
			case HiveSqlParser.KW_BUCKETS:
			case HiveSqlParser.KW_CACHE:
			case HiveSqlParser.KW_CASCADE:
			case HiveSqlParser.KW_CBO:
			case HiveSqlParser.KW_CHANGE:
			case HiveSqlParser.KW_CHECK:
			case HiveSqlParser.KW_CLUSTER:
			case HiveSqlParser.KW_CLUSTERED:
			case HiveSqlParser.KW_CLUSTERSTATUS:
			case HiveSqlParser.KW_COLLECTION:
			case HiveSqlParser.KW_COLUMNS:
			case HiveSqlParser.KW_COMMENT:
			case HiveSqlParser.KW_COMPACT:
			case HiveSqlParser.KW_COMPACTIONS:
			case HiveSqlParser.KW_COMPUTE:
			case HiveSqlParser.KW_CONCATENATE:
			case HiveSqlParser.KW_CONTINUE:
			case HiveSqlParser.KW_COST:
			case HiveSqlParser.KW_CRON:
			case HiveSqlParser.KW_DATA:
			case HiveSqlParser.KW_DATABASES:
			case HiveSqlParser.KW_DATETIME:
			case HiveSqlParser.KW_DAY:
			case HiveSqlParser.KW_DAYS:
			case HiveSqlParser.KW_DAYOFWEEK:
			case HiveSqlParser.KW_DBPROPERTIES:
			case HiveSqlParser.KW_DCPROPERTIES:
			case HiveSqlParser.KW_DEBUG:
			case HiveSqlParser.KW_DEFAULT:
			case HiveSqlParser.KW_DEFERRED:
			case HiveSqlParser.KW_DEFINED:
			case HiveSqlParser.KW_DELIMITED:
			case HiveSqlParser.KW_DEPENDENCY:
			case HiveSqlParser.KW_DESC:
			case HiveSqlParser.KW_DETAIL:
			case HiveSqlParser.KW_DIRECTORIES:
			case HiveSqlParser.KW_DIRECTORY:
			case HiveSqlParser.KW_DISABLE:
			case HiveSqlParser.KW_DISABLED:
			case HiveSqlParser.KW_DISTRIBUTE:
			case HiveSqlParser.KW_DISTRIBUTED:
			case HiveSqlParser.KW_DO:
			case HiveSqlParser.KW_DUMP:
			case HiveSqlParser.KW_ELEM_TYPE:
			case HiveSqlParser.KW_ENABLE:
			case HiveSqlParser.KW_ENABLED:
			case HiveSqlParser.KW_ENFORCED:
			case HiveSqlParser.KW_ESCAPED:
			case HiveSqlParser.KW_EVERY:
			case HiveSqlParser.KW_EXCLUSIVE:
			case HiveSqlParser.KW_EXECUTE:
			case HiveSqlParser.KW_EXECUTED:
			case HiveSqlParser.KW_EXPIRE_SNAPSHOTS:
			case HiveSqlParser.KW_EXPLAIN:
			case HiveSqlParser.KW_EXPORT:
			case HiveSqlParser.KW_EXPRESSION:
			case HiveSqlParser.KW_FIELDS:
			case HiveSqlParser.KW_FILE:
			case HiveSqlParser.KW_FILEFORMAT:
			case HiveSqlParser.KW_FIRST:
			case HiveSqlParser.KW_FORMAT:
			case HiveSqlParser.KW_FORMATTED:
			case HiveSqlParser.KW_FUNCTIONS:
			case HiveSqlParser.KW_HOLD_DDLTIME:
			case HiveSqlParser.KW_HOUR:
			case HiveSqlParser.KW_HOURS:
			case HiveSqlParser.KW_IDXPROPERTIES:
			case HiveSqlParser.KW_IGNORE:
			case HiveSqlParser.KW_INDEX:
			case HiveSqlParser.KW_INDEXES:
			case HiveSqlParser.KW_INPATH:
			case HiveSqlParser.KW_INPUTDRIVER:
			case HiveSqlParser.KW_INPUTFORMAT:
			case HiveSqlParser.KW_ISOLATION:
			case HiveSqlParser.KW_ITEMS:
			case HiveSqlParser.KW_JAR:
			case HiveSqlParser.KW_JOINCOST:
			case HiveSqlParser.KW_KEY:
			case HiveSqlParser.KW_KEYS:
			case HiveSqlParser.KW_KEY_TYPE:
			case HiveSqlParser.KW_KILL:
			case HiveSqlParser.KW_LAST:
			case HiveSqlParser.KW_LEVEL:
			case HiveSqlParser.KW_LIMIT:
			case HiveSqlParser.KW_LINES:
			case HiveSqlParser.KW_LOAD:
			case HiveSqlParser.KW_LOCATION:
			case HiveSqlParser.KW_LOCK:
			case HiveSqlParser.KW_LOCKS:
			case HiveSqlParser.KW_LOGICAL:
			case HiveSqlParser.KW_LONG:
			case HiveSqlParser.KW_MANAGED:
			case HiveSqlParser.KW_MANAGEDLOCATION:
			case HiveSqlParser.KW_MANAGEMENT:
			case HiveSqlParser.KW_MAPJOIN:
			case HiveSqlParser.KW_MAPPING:
			case HiveSqlParser.KW_MATCHED:
			case HiveSqlParser.KW_MATERIALIZED:
			case HiveSqlParser.KW_METADATA:
			case HiveSqlParser.KW_MINUTE:
			case HiveSqlParser.KW_MINUTES:
			case HiveSqlParser.KW_MONTH:
			case HiveSqlParser.KW_MONTHS:
			case HiveSqlParser.KW_MOVE:
			case HiveSqlParser.KW_MSCK:
			case HiveSqlParser.KW_NORELY:
			case HiveSqlParser.KW_NOSCAN:
			case HiveSqlParser.KW_NOVALIDATE:
			case HiveSqlParser.KW_NO_DROP:
			case HiveSqlParser.KW_NULLS:
			case HiveSqlParser.KW_OFFLINE:
			case HiveSqlParser.KW_OFFSET:
			case HiveSqlParser.KW_OPERATOR:
			case HiveSqlParser.KW_OPTION:
			case HiveSqlParser.KW_OUTPUTDRIVER:
			case HiveSqlParser.KW_OUTPUTFORMAT:
			case HiveSqlParser.KW_OVERWRITE:
			case HiveSqlParser.KW_OWNER:
			case HiveSqlParser.KW_PARTITIONED:
			case HiveSqlParser.KW_PARTITIONS:
			case HiveSqlParser.KW_PATH:
			case HiveSqlParser.KW_PLAN:
			case HiveSqlParser.KW_PLANS:
			case HiveSqlParser.KW_PLUS:
			case HiveSqlParser.KW_POOL:
			case HiveSqlParser.KW_PRINCIPALS:
			case HiveSqlParser.KW_PROTECTION:
			case HiveSqlParser.KW_PURGE:
			case HiveSqlParser.KW_QUARTER:
			case HiveSqlParser.KW_QUERY:
			case HiveSqlParser.KW_QUERY_PARALLELISM:
			case HiveSqlParser.KW_READ:
			case HiveSqlParser.KW_READONLY:
			case HiveSqlParser.KW_REBUILD:
			case HiveSqlParser.KW_RECORDREADER:
			case HiveSqlParser.KW_RECORDWRITER:
			case HiveSqlParser.KW_RELOAD:
			case HiveSqlParser.KW_RELY:
			case HiveSqlParser.KW_REMOTE:
			case HiveSqlParser.KW_RENAME:
			case HiveSqlParser.KW_REOPTIMIZATION:
			case HiveSqlParser.KW_REPAIR:
			case HiveSqlParser.KW_REPL:
			case HiveSqlParser.KW_REPLACE:
			case HiveSqlParser.KW_REPLICATION:
			case HiveSqlParser.KW_RESOURCE:
			case HiveSqlParser.KW_RESPECT:
			case HiveSqlParser.KW_RESTRICT:
			case HiveSqlParser.KW_REWRITE:
			case HiveSqlParser.KW_ROLE:
			case HiveSqlParser.KW_ROLES:
			case HiveSqlParser.KW_SCHEDULED:
			case HiveSqlParser.KW_SCHEDULING_POLICY:
			case HiveSqlParser.KW_SCHEMA:
			case HiveSqlParser.KW_SCHEMAS:
			case HiveSqlParser.KW_SECOND:
			case HiveSqlParser.KW_SECONDS:
			case HiveSqlParser.KW_SEMI:
			case HiveSqlParser.KW_SERDE:
			case HiveSqlParser.KW_SERDEPROPERTIES:
			case HiveSqlParser.KW_SERVER:
			case HiveSqlParser.KW_SETS:
			case HiveSqlParser.KW_SET_CURRENT_SNAPSHOT:
			case HiveSqlParser.KW_SHARED:
			case HiveSqlParser.KW_SHOW:
			case HiveSqlParser.KW_SHOW_DATABASE:
			case HiveSqlParser.KW_SKEWED:
			case HiveSqlParser.KW_SNAPSHOT:
			case HiveSqlParser.KW_SORT:
			case HiveSqlParser.KW_SORTED:
			case HiveSqlParser.KW_SPEC:
			case HiveSqlParser.KW_SSL:
			case HiveSqlParser.KW_STATISTICS:
			case HiveSqlParser.KW_STATUS:
			case HiveSqlParser.KW_STORED:
			case HiveSqlParser.KW_STREAMTABLE:
			case HiveSqlParser.KW_STRING:
			case HiveSqlParser.KW_STRUCT:
			case HiveSqlParser.KW_SUMMARY:
			case HiveSqlParser.KW_SYSTEM_TIME:
			case HiveSqlParser.KW_SYSTEM_VERSION:
			case HiveSqlParser.KW_TABLES:
			case HiveSqlParser.KW_TBLPROPERTIES:
			case HiveSqlParser.KW_TEMPORARY:
			case HiveSqlParser.KW_TERMINATED:
			case HiveSqlParser.KW_TIMESTAMPTZ:
			case HiveSqlParser.KW_TINYINT:
			case HiveSqlParser.KW_TOUCH:
			case HiveSqlParser.KW_TRANSACTION:
			case HiveSqlParser.KW_TRANSACTIONAL:
			case HiveSqlParser.KW_TRANSACTIONS:
			case HiveSqlParser.KW_TRIM:
			case HiveSqlParser.KW_TYPE:
			case HiveSqlParser.KW_UNARCHIVE:
			case HiveSqlParser.KW_UNDO:
			case HiveSqlParser.KW_UNIONTYPE:
			case HiveSqlParser.KW_UNKNOWN:
			case HiveSqlParser.KW_UNLOCK:
			case HiveSqlParser.KW_UNMANAGED:
			case HiveSqlParser.KW_UNSET:
			case HiveSqlParser.KW_UNSIGNED:
			case HiveSqlParser.KW_URI:
			case HiveSqlParser.KW_URL:
			case HiveSqlParser.KW_USE:
			case HiveSqlParser.KW_UTC:
			case HiveSqlParser.KW_UTCTIMESTAMP:
			case HiveSqlParser.KW_VALIDATE:
			case HiveSqlParser.KW_VALUE_TYPE:
			case HiveSqlParser.KW_VECTORIZATION:
			case HiveSqlParser.KW_VIEW:
			case HiveSqlParser.KW_VIEWS:
			case HiveSqlParser.KW_WAIT:
			case HiveSqlParser.KW_WEEK:
			case HiveSqlParser.KW_WEEKS:
			case HiveSqlParser.KW_WHILE:
			case HiveSqlParser.KW_WITHIN:
			case HiveSqlParser.KW_WORK:
			case HiveSqlParser.KW_WORKLOAD:
			case HiveSqlParser.KW_WRITE:
			case HiveSqlParser.KW_YEAR:
			case HiveSqlParser.KW_YEARS:
			case HiveSqlParser.KW_ZONE:
			case HiveSqlParser.StringLiteral:
			case HiveSqlParser.Identifier:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 1674;
				this.showStmtIdentifier();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public lockStatement(): LockStatementContext {
		let _localctx: LockStatementContext = new LockStatementContext(this._ctx, this.state);
		this.enterRule(_localctx, 98, HiveSqlParser.RULE_lockStatement);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 1677;
			this.match(HiveSqlParser.KW_LOCK);
			this.state = 1678;
			this.match(HiveSqlParser.KW_TABLE);
			this.state = 1679;
			this.tableName();
			this.state = 1681;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === HiveSqlParser.KW_PARTITION) {
				{
				this.state = 1680;
				this.partitionSpec();
				}
			}

			this.state = 1683;
			this.lockMode();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public lockDatabase(): LockDatabaseContext {
		let _localctx: LockDatabaseContext = new LockDatabaseContext(this._ctx, this.state);
		this.enterRule(_localctx, 100, HiveSqlParser.RULE_lockDatabase);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 1685;
			this.match(HiveSqlParser.KW_LOCK);
			this.state = 1686;
			this.db_schema();
			this.state = 1687;
			_localctx._dbName = this.dbSchemaName();
			this.state = 1688;
			this.lockMode();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public lockMode(): LockModeContext {
		let _localctx: LockModeContext = new LockModeContext(this._ctx, this.state);
		this.enterRule(_localctx, 102, HiveSqlParser.RULE_lockMode);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 1690;
			_la = this._input.LA(1);
			if (!(_la === HiveSqlParser.KW_EXCLUSIVE || _la === HiveSqlParser.KW_SHARED)) {
			this._errHandler.recoverInline(this);
			} else {
				if (this._input.LA(1) === Token.EOF) {
					this.matchedEOF = true;
				}

				this._errHandler.reportMatch(this);
				this.consume();
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public unlockStatement(): UnlockStatementContext {
		let _localctx: UnlockStatementContext = new UnlockStatementContext(this._ctx, this.state);
		this.enterRule(_localctx, 104, HiveSqlParser.RULE_unlockStatement);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 1692;
			this.match(HiveSqlParser.KW_UNLOCK);
			this.state = 1693;
			this.match(HiveSqlParser.KW_TABLE);
			this.state = 1694;
			this.tableName();
			this.state = 1696;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === HiveSqlParser.KW_PARTITION) {
				{
				this.state = 1695;
				this.partitionSpec();
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public unlockDatabase(): UnlockDatabaseContext {
		let _localctx: UnlockDatabaseContext = new UnlockDatabaseContext(this._ctx, this.state);
		this.enterRule(_localctx, 106, HiveSqlParser.RULE_unlockDatabase);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 1698;
			this.match(HiveSqlParser.KW_UNLOCK);
			this.state = 1699;
			this.db_schema();
			this.state = 1700;
			_localctx._dbName = this.dbSchemaName();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public createRoleStatement(): CreateRoleStatementContext {
		let _localctx: CreateRoleStatementContext = new CreateRoleStatementContext(this._ctx, this.state);
		this.enterRule(_localctx, 108, HiveSqlParser.RULE_createRoleStatement);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 1702;
			this.match(HiveSqlParser.KW_CREATE);
			this.state = 1703;
			this.match(HiveSqlParser.KW_ROLE);
			this.state = 1704;
			_localctx._roleName = this.id_();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public dropRoleStatement(): DropRoleStatementContext {
		let _localctx: DropRoleStatementContext = new DropRoleStatementContext(this._ctx, this.state);
		this.enterRule(_localctx, 110, HiveSqlParser.RULE_dropRoleStatement);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 1706;
			this.match(HiveSqlParser.KW_DROP);
			this.state = 1707;
			this.match(HiveSqlParser.KW_ROLE);
			this.state = 1708;
			_localctx._roleName = this.id_();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public grantPrivileges(): GrantPrivilegesContext {
		let _localctx: GrantPrivilegesContext = new GrantPrivilegesContext(this._ctx, this.state);
		this.enterRule(_localctx, 112, HiveSqlParser.RULE_grantPrivileges);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 1710;
			this.match(HiveSqlParser.KW_GRANT);
			this.state = 1711;
			_localctx._privList = this.privilegeList();
			this.state = 1713;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === HiveSqlParser.KW_ON) {
				{
				this.state = 1712;
				this.privilegeObject();
				}
			}

			this.state = 1715;
			this.match(HiveSqlParser.KW_TO);
			this.state = 1716;
			this.principalSpecification();
			this.state = 1718;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 105, this._ctx) ) {
			case 1:
				{
				this.state = 1717;
				this.withGrantOption();
				}
				break;
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public revokePrivileges(): RevokePrivilegesContext {
		let _localctx: RevokePrivilegesContext = new RevokePrivilegesContext(this._ctx, this.state);
		this.enterRule(_localctx, 114, HiveSqlParser.RULE_revokePrivileges);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 1720;
			this.match(HiveSqlParser.KW_REVOKE);
			this.state = 1722;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === HiveSqlParser.KW_GRANT) {
				{
				this.state = 1721;
				this.grantOptionFor();
				}
			}

			this.state = 1724;
			this.privilegeList();
			this.state = 1726;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === HiveSqlParser.KW_ON) {
				{
				this.state = 1725;
				this.privilegeObject();
				}
			}

			this.state = 1728;
			this.match(HiveSqlParser.KW_FROM);
			this.state = 1729;
			this.principalSpecification();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public grantRole(): GrantRoleContext {
		let _localctx: GrantRoleContext = new GrantRoleContext(this._ctx, this.state);
		this.enterRule(_localctx, 116, HiveSqlParser.RULE_grantRole);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 1731;
			this.match(HiveSqlParser.KW_GRANT);
			this.state = 1733;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 108, this._ctx) ) {
			case 1:
				{
				this.state = 1732;
				this.match(HiveSqlParser.KW_ROLE);
				}
				break;
			}
			this.state = 1735;
			this.id_();
			this.state = 1740;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === HiveSqlParser.COMMA) {
				{
				{
				this.state = 1736;
				this.match(HiveSqlParser.COMMA);
				this.state = 1737;
				this.id_();
				}
				}
				this.state = 1742;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			}
			this.state = 1743;
			this.match(HiveSqlParser.KW_TO);
			this.state = 1744;
			this.principalSpecification();
			this.state = 1746;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 110, this._ctx) ) {
			case 1:
				{
				this.state = 1745;
				this.withAdminOption();
				}
				break;
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public revokeRole(): RevokeRoleContext {
		let _localctx: RevokeRoleContext = new RevokeRoleContext(this._ctx, this.state);
		this.enterRule(_localctx, 118, HiveSqlParser.RULE_revokeRole);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 1748;
			this.match(HiveSqlParser.KW_REVOKE);
			this.state = 1750;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 111, this._ctx) ) {
			case 1:
				{
				this.state = 1749;
				this.adminOptionFor();
				}
				break;
			}
			this.state = 1753;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 112, this._ctx) ) {
			case 1:
				{
				this.state = 1752;
				this.match(HiveSqlParser.KW_ROLE);
				}
				break;
			}
			this.state = 1755;
			this.id_();
			this.state = 1760;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === HiveSqlParser.COMMA) {
				{
				{
				this.state = 1756;
				this.match(HiveSqlParser.COMMA);
				this.state = 1757;
				this.id_();
				}
				}
				this.state = 1762;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			}
			this.state = 1763;
			this.match(HiveSqlParser.KW_FROM);
			this.state = 1764;
			this.principalSpecification();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public showRoleGrants(): ShowRoleGrantsContext {
		let _localctx: ShowRoleGrantsContext = new ShowRoleGrantsContext(this._ctx, this.state);
		this.enterRule(_localctx, 120, HiveSqlParser.RULE_showRoleGrants);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 1766;
			this.match(HiveSqlParser.KW_SHOW);
			this.state = 1767;
			this.match(HiveSqlParser.KW_ROLE);
			this.state = 1768;
			this.match(HiveSqlParser.KW_GRANT);
			this.state = 1769;
			this.principalName();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public showRoles(): ShowRolesContext {
		let _localctx: ShowRolesContext = new ShowRolesContext(this._ctx, this.state);
		this.enterRule(_localctx, 122, HiveSqlParser.RULE_showRoles);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 1771;
			this.match(HiveSqlParser.KW_SHOW);
			this.state = 1772;
			this.match(HiveSqlParser.KW_ROLES);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public showCurrentRole(): ShowCurrentRoleContext {
		let _localctx: ShowCurrentRoleContext = new ShowCurrentRoleContext(this._ctx, this.state);
		this.enterRule(_localctx, 124, HiveSqlParser.RULE_showCurrentRole);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 1774;
			this.match(HiveSqlParser.KW_SHOW);
			this.state = 1775;
			this.match(HiveSqlParser.KW_CURRENT);
			this.state = 1776;
			this.match(HiveSqlParser.KW_ROLES);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public setRole(): SetRoleContext {
		let _localctx: SetRoleContext = new SetRoleContext(this._ctx, this.state);
		this.enterRule(_localctx, 126, HiveSqlParser.RULE_setRole);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 1778;
			this.match(HiveSqlParser.KW_SET);
			this.state = 1779;
			this.match(HiveSqlParser.KW_ROLE);
			this.state = 1783;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case HiveSqlParser.KW_ALL:
				{
				this.state = 1780;
				_localctx._all = this.match(HiveSqlParser.KW_ALL);
				}
				break;
			case HiveSqlParser.KW_NONE:
				{
				this.state = 1781;
				_localctx._none = this.match(HiveSqlParser.KW_NONE);
				}
				break;
			case HiveSqlParser.KW_ABORT:
			case HiveSqlParser.KW_ACTIVATE:
			case HiveSqlParser.KW_ACTIVE:
			case HiveSqlParser.KW_ADD:
			case HiveSqlParser.KW_ADMIN:
			case HiveSqlParser.KW_AFTER:
			case HiveSqlParser.KW_ALLOC_FRACTION:
			case HiveSqlParser.KW_ANALYZE:
			case HiveSqlParser.KW_ARCHIVE:
			case HiveSqlParser.KW_ASC:
			case HiveSqlParser.KW_AST:
			case HiveSqlParser.KW_AT:
			case HiveSqlParser.KW_AUTOCOMMIT:
			case HiveSqlParser.KW_BATCH:
			case HiveSqlParser.KW_BEFORE:
			case HiveSqlParser.KW_BUCKET:
			case HiveSqlParser.KW_BUCKETS:
			case HiveSqlParser.KW_CACHE:
			case HiveSqlParser.KW_CASCADE:
			case HiveSqlParser.KW_CBO:
			case HiveSqlParser.KW_CHANGE:
			case HiveSqlParser.KW_CHECK:
			case HiveSqlParser.KW_CLUSTER:
			case HiveSqlParser.KW_CLUSTERED:
			case HiveSqlParser.KW_CLUSTERSTATUS:
			case HiveSqlParser.KW_COLLECTION:
			case HiveSqlParser.KW_COLUMNS:
			case HiveSqlParser.KW_COMMENT:
			case HiveSqlParser.KW_COMPACT:
			case HiveSqlParser.KW_COMPACTIONS:
			case HiveSqlParser.KW_COMPUTE:
			case HiveSqlParser.KW_CONCATENATE:
			case HiveSqlParser.KW_CONTINUE:
			case HiveSqlParser.KW_COST:
			case HiveSqlParser.KW_CRON:
			case HiveSqlParser.KW_DATA:
			case HiveSqlParser.KW_DATABASES:
			case HiveSqlParser.KW_DATETIME:
			case HiveSqlParser.KW_DAY:
			case HiveSqlParser.KW_DAYS:
			case HiveSqlParser.KW_DAYOFWEEK:
			case HiveSqlParser.KW_DBPROPERTIES:
			case HiveSqlParser.KW_DCPROPERTIES:
			case HiveSqlParser.KW_DEBUG:
			case HiveSqlParser.KW_DEFAULT:
			case HiveSqlParser.KW_DEFERRED:
			case HiveSqlParser.KW_DEFINED:
			case HiveSqlParser.KW_DELIMITED:
			case HiveSqlParser.KW_DEPENDENCY:
			case HiveSqlParser.KW_DESC:
			case HiveSqlParser.KW_DETAIL:
			case HiveSqlParser.KW_DIRECTORIES:
			case HiveSqlParser.KW_DIRECTORY:
			case HiveSqlParser.KW_DISABLE:
			case HiveSqlParser.KW_DISABLED:
			case HiveSqlParser.KW_DISTRIBUTE:
			case HiveSqlParser.KW_DISTRIBUTED:
			case HiveSqlParser.KW_DO:
			case HiveSqlParser.KW_DUMP:
			case HiveSqlParser.KW_ELEM_TYPE:
			case HiveSqlParser.KW_ENABLE:
			case HiveSqlParser.KW_ENABLED:
			case HiveSqlParser.KW_ENFORCED:
			case HiveSqlParser.KW_ESCAPED:
			case HiveSqlParser.KW_EVERY:
			case HiveSqlParser.KW_EXCLUSIVE:
			case HiveSqlParser.KW_EXECUTE:
			case HiveSqlParser.KW_EXECUTED:
			case HiveSqlParser.KW_EXPIRE_SNAPSHOTS:
			case HiveSqlParser.KW_EXPLAIN:
			case HiveSqlParser.KW_EXPORT:
			case HiveSqlParser.KW_EXPRESSION:
			case HiveSqlParser.KW_FIELDS:
			case HiveSqlParser.KW_FILE:
			case HiveSqlParser.KW_FILEFORMAT:
			case HiveSqlParser.KW_FIRST:
			case HiveSqlParser.KW_FORMAT:
			case HiveSqlParser.KW_FORMATTED:
			case HiveSqlParser.KW_FUNCTIONS:
			case HiveSqlParser.KW_HOLD_DDLTIME:
			case HiveSqlParser.KW_HOUR:
			case HiveSqlParser.KW_HOURS:
			case HiveSqlParser.KW_IDXPROPERTIES:
			case HiveSqlParser.KW_IGNORE:
			case HiveSqlParser.KW_INDEX:
			case HiveSqlParser.KW_INDEXES:
			case HiveSqlParser.KW_INPATH:
			case HiveSqlParser.KW_INPUTDRIVER:
			case HiveSqlParser.KW_INPUTFORMAT:
			case HiveSqlParser.KW_ISOLATION:
			case HiveSqlParser.KW_ITEMS:
			case HiveSqlParser.KW_JAR:
			case HiveSqlParser.KW_JOINCOST:
			case HiveSqlParser.KW_KEY:
			case HiveSqlParser.KW_KEYS:
			case HiveSqlParser.KW_KEY_TYPE:
			case HiveSqlParser.KW_KILL:
			case HiveSqlParser.KW_LAST:
			case HiveSqlParser.KW_LEVEL:
			case HiveSqlParser.KW_LIMIT:
			case HiveSqlParser.KW_LINES:
			case HiveSqlParser.KW_LOAD:
			case HiveSqlParser.KW_LOCATION:
			case HiveSqlParser.KW_LOCK:
			case HiveSqlParser.KW_LOCKS:
			case HiveSqlParser.KW_LOGICAL:
			case HiveSqlParser.KW_LONG:
			case HiveSqlParser.KW_MANAGED:
			case HiveSqlParser.KW_MANAGEDLOCATION:
			case HiveSqlParser.KW_MANAGEMENT:
			case HiveSqlParser.KW_MAPJOIN:
			case HiveSqlParser.KW_MAPPING:
			case HiveSqlParser.KW_MATCHED:
			case HiveSqlParser.KW_MATERIALIZED:
			case HiveSqlParser.KW_METADATA:
			case HiveSqlParser.KW_MINUTE:
			case HiveSqlParser.KW_MINUTES:
			case HiveSqlParser.KW_MONTH:
			case HiveSqlParser.KW_MONTHS:
			case HiveSqlParser.KW_MOVE:
			case HiveSqlParser.KW_MSCK:
			case HiveSqlParser.KW_NORELY:
			case HiveSqlParser.KW_NOSCAN:
			case HiveSqlParser.KW_NOVALIDATE:
			case HiveSqlParser.KW_NO_DROP:
			case HiveSqlParser.KW_NULLS:
			case HiveSqlParser.KW_OFFLINE:
			case HiveSqlParser.KW_OFFSET:
			case HiveSqlParser.KW_OPERATOR:
			case HiveSqlParser.KW_OPTION:
			case HiveSqlParser.KW_OUTPUTDRIVER:
			case HiveSqlParser.KW_OUTPUTFORMAT:
			case HiveSqlParser.KW_OVERWRITE:
			case HiveSqlParser.KW_OWNER:
			case HiveSqlParser.KW_PARTITIONED:
			case HiveSqlParser.KW_PARTITIONS:
			case HiveSqlParser.KW_PATH:
			case HiveSqlParser.KW_PLAN:
			case HiveSqlParser.KW_PLANS:
			case HiveSqlParser.KW_PLUS:
			case HiveSqlParser.KW_POOL:
			case HiveSqlParser.KW_PRINCIPALS:
			case HiveSqlParser.KW_PROTECTION:
			case HiveSqlParser.KW_PURGE:
			case HiveSqlParser.KW_QUARTER:
			case HiveSqlParser.KW_QUERY:
			case HiveSqlParser.KW_QUERY_PARALLELISM:
			case HiveSqlParser.KW_READ:
			case HiveSqlParser.KW_READONLY:
			case HiveSqlParser.KW_REBUILD:
			case HiveSqlParser.KW_RECORDREADER:
			case HiveSqlParser.KW_RECORDWRITER:
			case HiveSqlParser.KW_RELOAD:
			case HiveSqlParser.KW_RELY:
			case HiveSqlParser.KW_REMOTE:
			case HiveSqlParser.KW_RENAME:
			case HiveSqlParser.KW_REOPTIMIZATION:
			case HiveSqlParser.KW_REPAIR:
			case HiveSqlParser.KW_REPL:
			case HiveSqlParser.KW_REPLACE:
			case HiveSqlParser.KW_REPLICATION:
			case HiveSqlParser.KW_RESOURCE:
			case HiveSqlParser.KW_RESPECT:
			case HiveSqlParser.KW_RESTRICT:
			case HiveSqlParser.KW_REWRITE:
			case HiveSqlParser.KW_ROLE:
			case HiveSqlParser.KW_ROLES:
			case HiveSqlParser.KW_SCHEDULED:
			case HiveSqlParser.KW_SCHEDULING_POLICY:
			case HiveSqlParser.KW_SCHEMA:
			case HiveSqlParser.KW_SCHEMAS:
			case HiveSqlParser.KW_SECOND:
			case HiveSqlParser.KW_SECONDS:
			case HiveSqlParser.KW_SEMI:
			case HiveSqlParser.KW_SERDE:
			case HiveSqlParser.KW_SERDEPROPERTIES:
			case HiveSqlParser.KW_SERVER:
			case HiveSqlParser.KW_SETS:
			case HiveSqlParser.KW_SET_CURRENT_SNAPSHOT:
			case HiveSqlParser.KW_SHARED:
			case HiveSqlParser.KW_SHOW:
			case HiveSqlParser.KW_SHOW_DATABASE:
			case HiveSqlParser.KW_SKEWED:
			case HiveSqlParser.KW_SNAPSHOT:
			case HiveSqlParser.KW_SORT:
			case HiveSqlParser.KW_SORTED:
			case HiveSqlParser.KW_SPEC:
			case HiveSqlParser.KW_SSL:
			case HiveSqlParser.KW_STATISTICS:
			case HiveSqlParser.KW_STATUS:
			case HiveSqlParser.KW_STORED:
			case HiveSqlParser.KW_STREAMTABLE:
			case HiveSqlParser.KW_STRING:
			case HiveSqlParser.KW_STRUCT:
			case HiveSqlParser.KW_SUMMARY:
			case HiveSqlParser.KW_SYSTEM_TIME:
			case HiveSqlParser.KW_SYSTEM_VERSION:
			case HiveSqlParser.KW_TABLES:
			case HiveSqlParser.KW_TBLPROPERTIES:
			case HiveSqlParser.KW_TEMPORARY:
			case HiveSqlParser.KW_TERMINATED:
			case HiveSqlParser.KW_TIMESTAMPTZ:
			case HiveSqlParser.KW_TINYINT:
			case HiveSqlParser.KW_TOUCH:
			case HiveSqlParser.KW_TRANSACTION:
			case HiveSqlParser.KW_TRANSACTIONAL:
			case HiveSqlParser.KW_TRANSACTIONS:
			case HiveSqlParser.KW_TRIM:
			case HiveSqlParser.KW_TYPE:
			case HiveSqlParser.KW_UNARCHIVE:
			case HiveSqlParser.KW_UNDO:
			case HiveSqlParser.KW_UNIONTYPE:
			case HiveSqlParser.KW_UNKNOWN:
			case HiveSqlParser.KW_UNLOCK:
			case HiveSqlParser.KW_UNMANAGED:
			case HiveSqlParser.KW_UNSET:
			case HiveSqlParser.KW_UNSIGNED:
			case HiveSqlParser.KW_URI:
			case HiveSqlParser.KW_URL:
			case HiveSqlParser.KW_USE:
			case HiveSqlParser.KW_UTC:
			case HiveSqlParser.KW_UTCTIMESTAMP:
			case HiveSqlParser.KW_VALIDATE:
			case HiveSqlParser.KW_VALUE_TYPE:
			case HiveSqlParser.KW_VECTORIZATION:
			case HiveSqlParser.KW_VIEW:
			case HiveSqlParser.KW_VIEWS:
			case HiveSqlParser.KW_WAIT:
			case HiveSqlParser.KW_WEEK:
			case HiveSqlParser.KW_WEEKS:
			case HiveSqlParser.KW_WHILE:
			case HiveSqlParser.KW_WITHIN:
			case HiveSqlParser.KW_WORK:
			case HiveSqlParser.KW_WORKLOAD:
			case HiveSqlParser.KW_WRITE:
			case HiveSqlParser.KW_YEAR:
			case HiveSqlParser.KW_YEARS:
			case HiveSqlParser.KW_ZONE:
			case HiveSqlParser.Identifier:
				{
				this.state = 1782;
				this.id_();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public showGrants(): ShowGrantsContext {
		let _localctx: ShowGrantsContext = new ShowGrantsContext(this._ctx, this.state);
		this.enterRule(_localctx, 128, HiveSqlParser.RULE_showGrants);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 1785;
			this.match(HiveSqlParser.KW_SHOW);
			this.state = 1786;
			this.match(HiveSqlParser.KW_GRANT);
			this.state = 1788;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === HiveSqlParser.KW_GROUP || _la === HiveSqlParser.KW_ROLE || _la === HiveSqlParser.KW_USER) {
				{
				this.state = 1787;
				this.principalName();
				}
			}

			this.state = 1792;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === HiveSqlParser.KW_ON) {
				{
				this.state = 1790;
				this.match(HiveSqlParser.KW_ON);
				this.state = 1791;
				this.privilegeIncludeColObject();
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public showRolePrincipals(): ShowRolePrincipalsContext {
		let _localctx: ShowRolePrincipalsContext = new ShowRolePrincipalsContext(this._ctx, this.state);
		this.enterRule(_localctx, 130, HiveSqlParser.RULE_showRolePrincipals);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 1794;
			this.match(HiveSqlParser.KW_SHOW);
			this.state = 1795;
			this.match(HiveSqlParser.KW_PRINCIPALS);
			this.state = 1796;
			_localctx._roleName = this.id_();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public privilegeIncludeColObject(): PrivilegeIncludeColObjectContext {
		let _localctx: PrivilegeIncludeColObjectContext = new PrivilegeIncludeColObjectContext(this._ctx, this.state);
		this.enterRule(_localctx, 132, HiveSqlParser.RULE_privilegeIncludeColObject);
		try {
			this.state = 1800;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case HiveSqlParser.KW_ALL:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 1798;
				this.match(HiveSqlParser.KW_ALL);
				}
				break;
			case HiveSqlParser.KW_ABORT:
			case HiveSqlParser.KW_ACTIVATE:
			case HiveSqlParser.KW_ACTIVE:
			case HiveSqlParser.KW_ADD:
			case HiveSqlParser.KW_ADMIN:
			case HiveSqlParser.KW_AFTER:
			case HiveSqlParser.KW_ALLOC_FRACTION:
			case HiveSqlParser.KW_ANALYZE:
			case HiveSqlParser.KW_ARCHIVE:
			case HiveSqlParser.KW_ASC:
			case HiveSqlParser.KW_AST:
			case HiveSqlParser.KW_AT:
			case HiveSqlParser.KW_AUTOCOMMIT:
			case HiveSqlParser.KW_BATCH:
			case HiveSqlParser.KW_BEFORE:
			case HiveSqlParser.KW_BUCKET:
			case HiveSqlParser.KW_BUCKETS:
			case HiveSqlParser.KW_CACHE:
			case HiveSqlParser.KW_CASCADE:
			case HiveSqlParser.KW_CBO:
			case HiveSqlParser.KW_CHANGE:
			case HiveSqlParser.KW_CHECK:
			case HiveSqlParser.KW_CLUSTER:
			case HiveSqlParser.KW_CLUSTERED:
			case HiveSqlParser.KW_CLUSTERSTATUS:
			case HiveSqlParser.KW_COLLECTION:
			case HiveSqlParser.KW_COLUMNS:
			case HiveSqlParser.KW_COMMENT:
			case HiveSqlParser.KW_COMPACT:
			case HiveSqlParser.KW_COMPACTIONS:
			case HiveSqlParser.KW_COMPUTE:
			case HiveSqlParser.KW_CONCATENATE:
			case HiveSqlParser.KW_CONTINUE:
			case HiveSqlParser.KW_COST:
			case HiveSqlParser.KW_CRON:
			case HiveSqlParser.KW_DATA:
			case HiveSqlParser.KW_DATABASE:
			case HiveSqlParser.KW_DATABASES:
			case HiveSqlParser.KW_DATETIME:
			case HiveSqlParser.KW_DAY:
			case HiveSqlParser.KW_DAYS:
			case HiveSqlParser.KW_DAYOFWEEK:
			case HiveSqlParser.KW_DBPROPERTIES:
			case HiveSqlParser.KW_DCPROPERTIES:
			case HiveSqlParser.KW_DEBUG:
			case HiveSqlParser.KW_DEFAULT:
			case HiveSqlParser.KW_DEFERRED:
			case HiveSqlParser.KW_DEFINED:
			case HiveSqlParser.KW_DELIMITED:
			case HiveSqlParser.KW_DEPENDENCY:
			case HiveSqlParser.KW_DESC:
			case HiveSqlParser.KW_DETAIL:
			case HiveSqlParser.KW_DIRECTORIES:
			case HiveSqlParser.KW_DIRECTORY:
			case HiveSqlParser.KW_DISABLE:
			case HiveSqlParser.KW_DISABLED:
			case HiveSqlParser.KW_DISTRIBUTE:
			case HiveSqlParser.KW_DISTRIBUTED:
			case HiveSqlParser.KW_DO:
			case HiveSqlParser.KW_DUMP:
			case HiveSqlParser.KW_ELEM_TYPE:
			case HiveSqlParser.KW_ENABLE:
			case HiveSqlParser.KW_ENABLED:
			case HiveSqlParser.KW_ENFORCED:
			case HiveSqlParser.KW_ESCAPED:
			case HiveSqlParser.KW_EVERY:
			case HiveSqlParser.KW_EXCLUSIVE:
			case HiveSqlParser.KW_EXECUTE:
			case HiveSqlParser.KW_EXECUTED:
			case HiveSqlParser.KW_EXPIRE_SNAPSHOTS:
			case HiveSqlParser.KW_EXPLAIN:
			case HiveSqlParser.KW_EXPORT:
			case HiveSqlParser.KW_EXPRESSION:
			case HiveSqlParser.KW_FIELDS:
			case HiveSqlParser.KW_FILE:
			case HiveSqlParser.KW_FILEFORMAT:
			case HiveSqlParser.KW_FIRST:
			case HiveSqlParser.KW_FORMAT:
			case HiveSqlParser.KW_FORMATTED:
			case HiveSqlParser.KW_FUNCTIONS:
			case HiveSqlParser.KW_HOLD_DDLTIME:
			case HiveSqlParser.KW_HOUR:
			case HiveSqlParser.KW_HOURS:
			case HiveSqlParser.KW_IDXPROPERTIES:
			case HiveSqlParser.KW_IGNORE:
			case HiveSqlParser.KW_INDEX:
			case HiveSqlParser.KW_INDEXES:
			case HiveSqlParser.KW_INPATH:
			case HiveSqlParser.KW_INPUTDRIVER:
			case HiveSqlParser.KW_INPUTFORMAT:
			case HiveSqlParser.KW_ISOLATION:
			case HiveSqlParser.KW_ITEMS:
			case HiveSqlParser.KW_JAR:
			case HiveSqlParser.KW_JOINCOST:
			case HiveSqlParser.KW_KEY:
			case HiveSqlParser.KW_KEYS:
			case HiveSqlParser.KW_KEY_TYPE:
			case HiveSqlParser.KW_KILL:
			case HiveSqlParser.KW_LAST:
			case HiveSqlParser.KW_LEVEL:
			case HiveSqlParser.KW_LIMIT:
			case HiveSqlParser.KW_LINES:
			case HiveSqlParser.KW_LOAD:
			case HiveSqlParser.KW_LOCATION:
			case HiveSqlParser.KW_LOCK:
			case HiveSqlParser.KW_LOCKS:
			case HiveSqlParser.KW_LOGICAL:
			case HiveSqlParser.KW_LONG:
			case HiveSqlParser.KW_MANAGED:
			case HiveSqlParser.KW_MANAGEDLOCATION:
			case HiveSqlParser.KW_MANAGEMENT:
			case HiveSqlParser.KW_MAPJOIN:
			case HiveSqlParser.KW_MAPPING:
			case HiveSqlParser.KW_MATCHED:
			case HiveSqlParser.KW_MATERIALIZED:
			case HiveSqlParser.KW_METADATA:
			case HiveSqlParser.KW_MINUTE:
			case HiveSqlParser.KW_MINUTES:
			case HiveSqlParser.KW_MONTH:
			case HiveSqlParser.KW_MONTHS:
			case HiveSqlParser.KW_MOVE:
			case HiveSqlParser.KW_MSCK:
			case HiveSqlParser.KW_NORELY:
			case HiveSqlParser.KW_NOSCAN:
			case HiveSqlParser.KW_NOVALIDATE:
			case HiveSqlParser.KW_NO_DROP:
			case HiveSqlParser.KW_NULLS:
			case HiveSqlParser.KW_OFFLINE:
			case HiveSqlParser.KW_OFFSET:
			case HiveSqlParser.KW_OPERATOR:
			case HiveSqlParser.KW_OPTION:
			case HiveSqlParser.KW_OUTPUTDRIVER:
			case HiveSqlParser.KW_OUTPUTFORMAT:
			case HiveSqlParser.KW_OVERWRITE:
			case HiveSqlParser.KW_OWNER:
			case HiveSqlParser.KW_PARTITIONED:
			case HiveSqlParser.KW_PARTITIONS:
			case HiveSqlParser.KW_PATH:
			case HiveSqlParser.KW_PLAN:
			case HiveSqlParser.KW_PLANS:
			case HiveSqlParser.KW_PLUS:
			case HiveSqlParser.KW_POOL:
			case HiveSqlParser.KW_PRINCIPALS:
			case HiveSqlParser.KW_PROTECTION:
			case HiveSqlParser.KW_PURGE:
			case HiveSqlParser.KW_QUARTER:
			case HiveSqlParser.KW_QUERY:
			case HiveSqlParser.KW_QUERY_PARALLELISM:
			case HiveSqlParser.KW_READ:
			case HiveSqlParser.KW_READONLY:
			case HiveSqlParser.KW_REBUILD:
			case HiveSqlParser.KW_RECORDREADER:
			case HiveSqlParser.KW_RECORDWRITER:
			case HiveSqlParser.KW_RELOAD:
			case HiveSqlParser.KW_RELY:
			case HiveSqlParser.KW_REMOTE:
			case HiveSqlParser.KW_RENAME:
			case HiveSqlParser.KW_REOPTIMIZATION:
			case HiveSqlParser.KW_REPAIR:
			case HiveSqlParser.KW_REPL:
			case HiveSqlParser.KW_REPLACE:
			case HiveSqlParser.KW_REPLICATION:
			case HiveSqlParser.KW_RESOURCE:
			case HiveSqlParser.KW_RESPECT:
			case HiveSqlParser.KW_RESTRICT:
			case HiveSqlParser.KW_REWRITE:
			case HiveSqlParser.KW_ROLE:
			case HiveSqlParser.KW_ROLES:
			case HiveSqlParser.KW_SCHEDULED:
			case HiveSqlParser.KW_SCHEDULING_POLICY:
			case HiveSqlParser.KW_SCHEMA:
			case HiveSqlParser.KW_SCHEMAS:
			case HiveSqlParser.KW_SECOND:
			case HiveSqlParser.KW_SECONDS:
			case HiveSqlParser.KW_SEMI:
			case HiveSqlParser.KW_SERDE:
			case HiveSqlParser.KW_SERDEPROPERTIES:
			case HiveSqlParser.KW_SERVER:
			case HiveSqlParser.KW_SETS:
			case HiveSqlParser.KW_SET_CURRENT_SNAPSHOT:
			case HiveSqlParser.KW_SHARED:
			case HiveSqlParser.KW_SHOW:
			case HiveSqlParser.KW_SHOW_DATABASE:
			case HiveSqlParser.KW_SKEWED:
			case HiveSqlParser.KW_SNAPSHOT:
			case HiveSqlParser.KW_SORT:
			case HiveSqlParser.KW_SORTED:
			case HiveSqlParser.KW_SPEC:
			case HiveSqlParser.KW_SSL:
			case HiveSqlParser.KW_STATISTICS:
			case HiveSqlParser.KW_STATUS:
			case HiveSqlParser.KW_STORED:
			case HiveSqlParser.KW_STREAMTABLE:
			case HiveSqlParser.KW_STRING:
			case HiveSqlParser.KW_STRUCT:
			case HiveSqlParser.KW_SUMMARY:
			case HiveSqlParser.KW_SYSTEM_TIME:
			case HiveSqlParser.KW_SYSTEM_VERSION:
			case HiveSqlParser.KW_TABLE:
			case HiveSqlParser.KW_TABLES:
			case HiveSqlParser.KW_TBLPROPERTIES:
			case HiveSqlParser.KW_TEMPORARY:
			case HiveSqlParser.KW_TERMINATED:
			case HiveSqlParser.KW_TIMESTAMPTZ:
			case HiveSqlParser.KW_TINYINT:
			case HiveSqlParser.KW_TOUCH:
			case HiveSqlParser.KW_TRANSACTION:
			case HiveSqlParser.KW_TRANSACTIONAL:
			case HiveSqlParser.KW_TRANSACTIONS:
			case HiveSqlParser.KW_TRIM:
			case HiveSqlParser.KW_TYPE:
			case HiveSqlParser.KW_UNARCHIVE:
			case HiveSqlParser.KW_UNDO:
			case HiveSqlParser.KW_UNIONTYPE:
			case HiveSqlParser.KW_UNKNOWN:
			case HiveSqlParser.KW_UNLOCK:
			case HiveSqlParser.KW_UNMANAGED:
			case HiveSqlParser.KW_UNSET:
			case HiveSqlParser.KW_UNSIGNED:
			case HiveSqlParser.KW_URI:
			case HiveSqlParser.KW_URL:
			case HiveSqlParser.KW_USE:
			case HiveSqlParser.KW_UTC:
			case HiveSqlParser.KW_UTCTIMESTAMP:
			case HiveSqlParser.KW_VALIDATE:
			case HiveSqlParser.KW_VALUE_TYPE:
			case HiveSqlParser.KW_VECTORIZATION:
			case HiveSqlParser.KW_VIEW:
			case HiveSqlParser.KW_VIEWS:
			case HiveSqlParser.KW_WAIT:
			case HiveSqlParser.KW_WEEK:
			case HiveSqlParser.KW_WEEKS:
			case HiveSqlParser.KW_WHILE:
			case HiveSqlParser.KW_WITHIN:
			case HiveSqlParser.KW_WORK:
			case HiveSqlParser.KW_WORKLOAD:
			case HiveSqlParser.KW_WRITE:
			case HiveSqlParser.KW_YEAR:
			case HiveSqlParser.KW_YEARS:
			case HiveSqlParser.KW_ZONE:
			case HiveSqlParser.Identifier:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 1799;
				this.privObjectCols();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public privilegeObject(): PrivilegeObjectContext {
		let _localctx: PrivilegeObjectContext = new PrivilegeObjectContext(this._ctx, this.state);
		this.enterRule(_localctx, 134, HiveSqlParser.RULE_privilegeObject);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 1802;
			this.match(HiveSqlParser.KW_ON);
			this.state = 1803;
			this.privObject();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public privObject(): PrivObjectContext {
		let _localctx: PrivObjectContext = new PrivObjectContext(this._ctx, this.state);
		this.enterRule(_localctx, 136, HiveSqlParser.RULE_privObject);
		let _la: number;
		try {
			this.state = 1819;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 120, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 1805;
				this.db_schema();
				this.state = 1806;
				this.dbSchemaName();
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 1809;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === HiveSqlParser.KW_TABLE) {
					{
					this.state = 1808;
					this.match(HiveSqlParser.KW_TABLE);
					}
				}

				this.state = 1811;
				this.tableName();
				this.state = 1813;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === HiveSqlParser.KW_PARTITION) {
					{
					this.state = 1812;
					this.partitionSpec();
					}
				}

				}
				break;

			case 3:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 1815;
				this.match(HiveSqlParser.KW_URI);
				this.state = 1816;
				_localctx._path = this.match(HiveSqlParser.StringLiteral);
				}
				break;

			case 4:
				this.enterOuterAlt(_localctx, 4);
				{
				this.state = 1817;
				this.match(HiveSqlParser.KW_SERVER);
				this.state = 1818;
				this.id_();
				}
				break;
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public privObjectCols(): PrivObjectColsContext {
		let _localctx: PrivObjectColsContext = new PrivObjectColsContext(this._ctx, this.state);
		this.enterRule(_localctx, 138, HiveSqlParser.RULE_privObjectCols);
		let _la: number;
		try {
			this.state = 1841;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 124, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 1821;
				this.db_schema();
				this.state = 1822;
				this.dbSchemaName();
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 1825;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === HiveSqlParser.KW_TABLE) {
					{
					this.state = 1824;
					this.match(HiveSqlParser.KW_TABLE);
					}
				}

				this.state = 1827;
				this.tableName();
				this.state = 1832;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 122, this._ctx) ) {
				case 1:
					{
					this.state = 1828;
					this.match(HiveSqlParser.LPAREN);
					this.state = 1829;
					_localctx._cols = this.columnNameList();
					this.state = 1830;
					this.match(HiveSqlParser.RPAREN);
					}
					break;
				}
				this.state = 1835;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === HiveSqlParser.KW_PARTITION) {
					{
					this.state = 1834;
					this.partitionSpec();
					}
				}

				}
				break;

			case 3:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 1837;
				this.match(HiveSqlParser.KW_URI);
				this.state = 1838;
				_localctx._path = this.match(HiveSqlParser.StringLiteral);
				}
				break;

			case 4:
				this.enterOuterAlt(_localctx, 4);
				{
				this.state = 1839;
				this.match(HiveSqlParser.KW_SERVER);
				this.state = 1840;
				this.id_();
				}
				break;
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public privilegeList(): PrivilegeListContext {
		let _localctx: PrivilegeListContext = new PrivilegeListContext(this._ctx, this.state);
		this.enterRule(_localctx, 140, HiveSqlParser.RULE_privilegeList);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 1843;
			this.privlegeDef();
			this.state = 1848;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === HiveSqlParser.COMMA) {
				{
				{
				this.state = 1844;
				this.match(HiveSqlParser.COMMA);
				this.state = 1845;
				this.privlegeDef();
				}
				}
				this.state = 1850;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public privlegeDef(): PrivlegeDefContext {
		let _localctx: PrivlegeDefContext = new PrivlegeDefContext(this._ctx, this.state);
		this.enterRule(_localctx, 142, HiveSqlParser.RULE_privlegeDef);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 1851;
			this.privilegeType();
			this.state = 1856;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === HiveSqlParser.LPAREN) {
				{
				this.state = 1852;
				this.match(HiveSqlParser.LPAREN);
				this.state = 1853;
				_localctx._cols = this.columnNameList();
				this.state = 1854;
				this.match(HiveSqlParser.RPAREN);
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public privilegeType(): PrivilegeTypeContext {
		let _localctx: PrivilegeTypeContext = new PrivilegeTypeContext(this._ctx, this.state);
		this.enterRule(_localctx, 144, HiveSqlParser.RULE_privilegeType);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 1858;
			_la = this._input.LA(1);
			if (!(_la === HiveSqlParser.KW_ALL || _la === HiveSqlParser.KW_ALTER || _la === HiveSqlParser.KW_CREATE || _la === HiveSqlParser.KW_DELETE || _la === HiveSqlParser.KW_DROP || _la === HiveSqlParser.KW_INDEX || _la === HiveSqlParser.KW_INSERT || _la === HiveSqlParser.KW_LOCK || _la === HiveSqlParser.KW_SELECT || _la === HiveSqlParser.KW_SHOW_DATABASE || _la === HiveSqlParser.KW_UPDATE)) {
			this._errHandler.recoverInline(this);
			} else {
				if (this._input.LA(1) === Token.EOF) {
					this.matchedEOF = true;
				}

				this._errHandler.reportMatch(this);
				this.consume();
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public principalSpecification(): PrincipalSpecificationContext {
		let _localctx: PrincipalSpecificationContext = new PrincipalSpecificationContext(this._ctx, this.state);
		this.enterRule(_localctx, 146, HiveSqlParser.RULE_principalSpecification);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 1860;
			this.principalName();
			this.state = 1865;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === HiveSqlParser.COMMA) {
				{
				{
				this.state = 1861;
				this.match(HiveSqlParser.COMMA);
				this.state = 1862;
				this.principalName();
				}
				}
				this.state = 1867;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public principalName(): PrincipalNameContext {
		let _localctx: PrincipalNameContext = new PrincipalNameContext(this._ctx, this.state);
		this.enterRule(_localctx, 148, HiveSqlParser.RULE_principalName);
		try {
			this.state = 1874;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case HiveSqlParser.KW_USER:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 1868;
				this.match(HiveSqlParser.KW_USER);
				this.state = 1869;
				this.principalIdentifier();
				}
				break;
			case HiveSqlParser.KW_GROUP:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 1870;
				this.match(HiveSqlParser.KW_GROUP);
				this.state = 1871;
				this.principalIdentifier();
				}
				break;
			case HiveSqlParser.KW_ROLE:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 1872;
				this.match(HiveSqlParser.KW_ROLE);
				this.state = 1873;
				this.id_();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public principalAlterName(): PrincipalAlterNameContext {
		let _localctx: PrincipalAlterNameContext = new PrincipalAlterNameContext(this._ctx, this.state);
		this.enterRule(_localctx, 150, HiveSqlParser.RULE_principalAlterName);
		try {
			this.state = 1881;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 129, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 1876;
				this.match(HiveSqlParser.KW_USER);
				this.state = 1877;
				this.principalIdentifier();
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 1878;
				this.match(HiveSqlParser.KW_ROLE);
				this.state = 1879;
				this.id_();
				}
				break;

			case 3:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 1880;
				this.id_();
				}
				break;
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public withGrantOption(): WithGrantOptionContext {
		let _localctx: WithGrantOptionContext = new WithGrantOptionContext(this._ctx, this.state);
		this.enterRule(_localctx, 152, HiveSqlParser.RULE_withGrantOption);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 1883;
			this.match(HiveSqlParser.KW_WITH);
			this.state = 1884;
			this.match(HiveSqlParser.KW_GRANT);
			this.state = 1885;
			this.match(HiveSqlParser.KW_OPTION);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public grantOptionFor(): GrantOptionForContext {
		let _localctx: GrantOptionForContext = new GrantOptionForContext(this._ctx, this.state);
		this.enterRule(_localctx, 154, HiveSqlParser.RULE_grantOptionFor);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 1887;
			this.match(HiveSqlParser.KW_GRANT);
			this.state = 1888;
			this.match(HiveSqlParser.KW_OPTION);
			this.state = 1889;
			this.match(HiveSqlParser.KW_FOR);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public adminOptionFor(): AdminOptionForContext {
		let _localctx: AdminOptionForContext = new AdminOptionForContext(this._ctx, this.state);
		this.enterRule(_localctx, 156, HiveSqlParser.RULE_adminOptionFor);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 1891;
			this.match(HiveSqlParser.KW_ADMIN);
			this.state = 1892;
			this.match(HiveSqlParser.KW_OPTION);
			this.state = 1893;
			this.match(HiveSqlParser.KW_FOR);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public withAdminOption(): WithAdminOptionContext {
		let _localctx: WithAdminOptionContext = new WithAdminOptionContext(this._ctx, this.state);
		this.enterRule(_localctx, 158, HiveSqlParser.RULE_withAdminOption);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 1895;
			this.match(HiveSqlParser.KW_WITH);
			this.state = 1896;
			this.match(HiveSqlParser.KW_ADMIN);
			this.state = 1897;
			this.match(HiveSqlParser.KW_OPTION);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public metastoreCheck(): MetastoreCheckContext {
		let _localctx: MetastoreCheckContext = new MetastoreCheckContext(this._ctx, this.state);
		this.enterRule(_localctx, 160, HiveSqlParser.RULE_metastoreCheck);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 1899;
			this.match(HiveSqlParser.KW_MSCK);
			this.state = 1901;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === HiveSqlParser.KW_REPAIR) {
				{
				this.state = 1900;
				_localctx._repair = this.match(HiveSqlParser.KW_REPAIR);
				}
			}

			{
			this.state = 1903;
			this.match(HiveSqlParser.KW_TABLE);
			this.state = 1904;
			this.tableName();
			this.state = 1910;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 132, this._ctx) ) {
			case 1:
				{
				this.state = 1905;
				_localctx._opt = this._input.LT(1);
				_la = this._input.LA(1);
				if (!(_la === HiveSqlParser.KW_ADD || _la === HiveSqlParser.KW_DROP || _la === HiveSqlParser.KW_SYNC)) {
					_localctx._opt = this._errHandler.recoverInline(this);
				} else {
					if (this._input.LA(1) === Token.EOF) {
						this.matchedEOF = true;
					}

					this._errHandler.reportMatch(this);
					this.consume();
				}
				this.state = 1906;
				_localctx._parts = this.match(HiveSqlParser.KW_PARTITIONS);
				this.state = 1908;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 131, this._ctx) ) {
				case 1:
					{
					this.state = 1907;
					this.partitionSelectorSpec();
					}
					break;
				}
				}
				break;
			}
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public resourceList(): ResourceListContext {
		let _localctx: ResourceListContext = new ResourceListContext(this._ctx, this.state);
		this.enterRule(_localctx, 162, HiveSqlParser.RULE_resourceList);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 1912;
			this.resource();
			this.state = 1917;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === HiveSqlParser.COMMA) {
				{
				{
				this.state = 1913;
				this.match(HiveSqlParser.COMMA);
				this.state = 1914;
				this.resource();
				}
				}
				this.state = 1919;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public resource(): ResourceContext {
		let _localctx: ResourceContext = new ResourceContext(this._ctx, this.state);
		this.enterRule(_localctx, 164, HiveSqlParser.RULE_resource);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 1920;
			_localctx._resType = this.resourceType();
			this.state = 1921;
			_localctx._resPath = this.match(HiveSqlParser.StringLiteral);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public resourceType(): ResourceTypeContext {
		let _localctx: ResourceTypeContext = new ResourceTypeContext(this._ctx, this.state);
		this.enterRule(_localctx, 166, HiveSqlParser.RULE_resourceType);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 1923;
			_la = this._input.LA(1);
			if (!(_la === HiveSqlParser.KW_ARCHIVE || _la === HiveSqlParser.KW_FILE || _la === HiveSqlParser.KW_JAR)) {
			this._errHandler.recoverInline(this);
			} else {
				if (this._input.LA(1) === Token.EOF) {
					this.matchedEOF = true;
				}

				this._errHandler.reportMatch(this);
				this.consume();
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public createFunctionStatement(): CreateFunctionStatementContext {
		let _localctx: CreateFunctionStatementContext = new CreateFunctionStatementContext(this._ctx, this.state);
		this.enterRule(_localctx, 168, HiveSqlParser.RULE_createFunctionStatement);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 1925;
			this.match(HiveSqlParser.KW_CREATE);
			this.state = 1927;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === HiveSqlParser.KW_TEMPORARY) {
				{
				this.state = 1926;
				_localctx._temp = this.match(HiveSqlParser.KW_TEMPORARY);
				}
			}

			this.state = 1929;
			this.match(HiveSqlParser.KW_FUNCTION);
			this.state = 1930;
			this.functionNameCreate();
			this.state = 1931;
			this.match(HiveSqlParser.KW_AS);
			this.state = 1932;
			this.match(HiveSqlParser.StringLiteral);
			this.state = 1935;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === HiveSqlParser.KW_USING) {
				{
				this.state = 1933;
				this.match(HiveSqlParser.KW_USING);
				this.state = 1934;
				_localctx._rList = this.resourceList();
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public dropFunctionStatement(): DropFunctionStatementContext {
		let _localctx: DropFunctionStatementContext = new DropFunctionStatementContext(this._ctx, this.state);
		this.enterRule(_localctx, 170, HiveSqlParser.RULE_dropFunctionStatement);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 1937;
			this.match(HiveSqlParser.KW_DROP);
			this.state = 1939;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === HiveSqlParser.KW_TEMPORARY) {
				{
				this.state = 1938;
				_localctx._temp = this.match(HiveSqlParser.KW_TEMPORARY);
				}
			}

			this.state = 1941;
			this.match(HiveSqlParser.KW_FUNCTION);
			this.state = 1943;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === HiveSqlParser.KW_IF) {
				{
				this.state = 1942;
				this.ifExists();
				}
			}

			this.state = 1945;
			this.functionNameForDDL();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public reloadFunctionsStatement(): ReloadFunctionsStatementContext {
		let _localctx: ReloadFunctionsStatementContext = new ReloadFunctionsStatementContext(this._ctx, this.state);
		this.enterRule(_localctx, 172, HiveSqlParser.RULE_reloadFunctionsStatement);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 1947;
			this.match(HiveSqlParser.KW_RELOAD);
			this.state = 1948;
			_la = this._input.LA(1);
			if (!(_la === HiveSqlParser.KW_FUNCTION || _la === HiveSqlParser.KW_FUNCTIONS)) {
			this._errHandler.recoverInline(this);
			} else {
				if (this._input.LA(1) === Token.EOF) {
					this.matchedEOF = true;
				}

				this._errHandler.reportMatch(this);
				this.consume();
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public createMacroStatement(): CreateMacroStatementContext {
		let _localctx: CreateMacroStatementContext = new CreateMacroStatementContext(this._ctx, this.state);
		this.enterRule(_localctx, 174, HiveSqlParser.RULE_createMacroStatement);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 1950;
			this.match(HiveSqlParser.KW_CREATE);
			this.state = 1951;
			this.match(HiveSqlParser.KW_TEMPORARY);
			this.state = 1952;
			this.match(HiveSqlParser.KW_MACRO);
			this.state = 1953;
			this.match(HiveSqlParser.Identifier);
			this.state = 1954;
			this.match(HiveSqlParser.LPAREN);
			this.state = 1956;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if ((((_la) & ~0x1F) === 0 && ((1 << _la) & ((1 << HiveSqlParser.KW_ABORT) | (1 << HiveSqlParser.KW_ACTIVATE) | (1 << HiveSqlParser.KW_ACTIVE) | (1 << HiveSqlParser.KW_ADD) | (1 << HiveSqlParser.KW_ADMIN) | (1 << HiveSqlParser.KW_AFTER) | (1 << HiveSqlParser.KW_ALLOC_FRACTION) | (1 << HiveSqlParser.KW_ANALYZE) | (1 << HiveSqlParser.KW_ARCHIVE) | (1 << HiveSqlParser.KW_ASC) | (1 << HiveSqlParser.KW_AST) | (1 << HiveSqlParser.KW_AT) | (1 << HiveSqlParser.KW_AUTOCOMMIT) | (1 << HiveSqlParser.KW_BATCH) | (1 << HiveSqlParser.KW_BEFORE) | (1 << HiveSqlParser.KW_BUCKET) | (1 << HiveSqlParser.KW_BUCKETS))) !== 0) || ((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & ((1 << (HiveSqlParser.KW_CACHE - 33)) | (1 << (HiveSqlParser.KW_CASCADE - 33)) | (1 << (HiveSqlParser.KW_CBO - 33)) | (1 << (HiveSqlParser.KW_CHANGE - 33)) | (1 << (HiveSqlParser.KW_CHECK - 33)) | (1 << (HiveSqlParser.KW_CLUSTER - 33)) | (1 << (HiveSqlParser.KW_CLUSTERED - 33)) | (1 << (HiveSqlParser.KW_CLUSTERSTATUS - 33)) | (1 << (HiveSqlParser.KW_COLLECTION - 33)) | (1 << (HiveSqlParser.KW_COLUMNS - 33)) | (1 << (HiveSqlParser.KW_COMMENT - 33)) | (1 << (HiveSqlParser.KW_COMPACT - 33)) | (1 << (HiveSqlParser.KW_COMPACTIONS - 33)) | (1 << (HiveSqlParser.KW_COMPUTE - 33)) | (1 << (HiveSqlParser.KW_CONCATENATE - 33)) | (1 << (HiveSqlParser.KW_CONTINUE - 33)) | (1 << (HiveSqlParser.KW_COST - 33)) | (1 << (HiveSqlParser.KW_CRON - 33)))) !== 0) || ((((_la - 66)) & ~0x1F) === 0 && ((1 << (_la - 66)) & ((1 << (HiveSqlParser.KW_DATA - 66)) | (1 << (HiveSqlParser.KW_DATABASES - 66)) | (1 << (HiveSqlParser.KW_DATETIME - 66)) | (1 << (HiveSqlParser.KW_DAY - 66)) | (1 << (HiveSqlParser.KW_DAYS - 66)) | (1 << (HiveSqlParser.KW_DAYOFWEEK - 66)) | (1 << (HiveSqlParser.KW_DBPROPERTIES - 66)) | (1 << (HiveSqlParser.KW_DCPROPERTIES - 66)) | (1 << (HiveSqlParser.KW_DEBUG - 66)) | (1 << (HiveSqlParser.KW_DEFAULT - 66)) | (1 << (HiveSqlParser.KW_DEFERRED - 66)) | (1 << (HiveSqlParser.KW_DEFINED - 66)) | (1 << (HiveSqlParser.KW_DELIMITED - 66)) | (1 << (HiveSqlParser.KW_DEPENDENCY - 66)) | (1 << (HiveSqlParser.KW_DESC - 66)) | (1 << (HiveSqlParser.KW_DETAIL - 66)) | (1 << (HiveSqlParser.KW_DIRECTORIES - 66)) | (1 << (HiveSqlParser.KW_DIRECTORY - 66)) | (1 << (HiveSqlParser.KW_DISABLE - 66)) | (1 << (HiveSqlParser.KW_DISABLED - 66)) | (1 << (HiveSqlParser.KW_DISTRIBUTE - 66)))) !== 0) || ((((_la - 98)) & ~0x1F) === 0 && ((1 << (_la - 98)) & ((1 << (HiveSqlParser.KW_DISTRIBUTED - 98)) | (1 << (HiveSqlParser.KW_DO - 98)) | (1 << (HiveSqlParser.KW_DUMP - 98)) | (1 << (HiveSqlParser.KW_ELEM_TYPE - 98)) | (1 << (HiveSqlParser.KW_ENABLE - 98)) | (1 << (HiveSqlParser.KW_ENABLED - 98)) | (1 << (HiveSqlParser.KW_ENFORCED - 98)) | (1 << (HiveSqlParser.KW_ESCAPED - 98)) | (1 << (HiveSqlParser.KW_EVERY - 98)) | (1 << (HiveSqlParser.KW_EXCLUSIVE - 98)) | (1 << (HiveSqlParser.KW_EXECUTE - 98)) | (1 << (HiveSqlParser.KW_EXECUTED - 98)) | (1 << (HiveSqlParser.KW_EXPIRE_SNAPSHOTS - 98)) | (1 << (HiveSqlParser.KW_EXPLAIN - 98)) | (1 << (HiveSqlParser.KW_EXPORT - 98)) | (1 << (HiveSqlParser.KW_EXPRESSION - 98)) | (1 << (HiveSqlParser.KW_FIELDS - 98)) | (1 << (HiveSqlParser.KW_FILE - 98)) | (1 << (HiveSqlParser.KW_FILEFORMAT - 98)))) !== 0) || ((((_la - 130)) & ~0x1F) === 0 && ((1 << (_la - 130)) & ((1 << (HiveSqlParser.KW_FIRST - 130)) | (1 << (HiveSqlParser.KW_FORMAT - 130)) | (1 << (HiveSqlParser.KW_FORMATTED - 130)) | (1 << (HiveSqlParser.KW_FUNCTIONS - 130)) | (1 << (HiveSqlParser.KW_HOLD_DDLTIME - 130)) | (1 << (HiveSqlParser.KW_HOUR - 130)) | (1 << (HiveSqlParser.KW_HOURS - 130)) | (1 << (HiveSqlParser.KW_IDXPROPERTIES - 130)) | (1 << (HiveSqlParser.KW_IGNORE - 130)) | (1 << (HiveSqlParser.KW_INDEX - 130)) | (1 << (HiveSqlParser.KW_INDEXES - 130)) | (1 << (HiveSqlParser.KW_INPATH - 130)) | (1 << (HiveSqlParser.KW_INPUTDRIVER - 130)) | (1 << (HiveSqlParser.KW_INPUTFORMAT - 130)))) !== 0) || ((((_la - 168)) & ~0x1F) === 0 && ((1 << (_la - 168)) & ((1 << (HiveSqlParser.KW_ISOLATION - 168)) | (1 << (HiveSqlParser.KW_ITEMS - 168)) | (1 << (HiveSqlParser.KW_JAR - 168)) | (1 << (HiveSqlParser.KW_JOINCOST - 168)) | (1 << (HiveSqlParser.KW_KEY - 168)) | (1 << (HiveSqlParser.KW_KEYS - 168)) | (1 << (HiveSqlParser.KW_KEY_TYPE - 168)) | (1 << (HiveSqlParser.KW_KILL - 168)) | (1 << (HiveSqlParser.KW_LAST - 168)) | (1 << (HiveSqlParser.KW_LEVEL - 168)) | (1 << (HiveSqlParser.KW_LIMIT - 168)) | (1 << (HiveSqlParser.KW_LINES - 168)) | (1 << (HiveSqlParser.KW_LOAD - 168)) | (1 << (HiveSqlParser.KW_LOCATION - 168)) | (1 << (HiveSqlParser.KW_LOCK - 168)) | (1 << (HiveSqlParser.KW_LOCKS - 168)) | (1 << (HiveSqlParser.KW_LOGICAL - 168)) | (1 << (HiveSqlParser.KW_LONG - 168)) | (1 << (HiveSqlParser.KW_MANAGED - 168)) | (1 << (HiveSqlParser.KW_MANAGEDLOCATION - 168)) | (1 << (HiveSqlParser.KW_MANAGEMENT - 168)) | (1 << (HiveSqlParser.KW_MAPJOIN - 168)) | (1 << (HiveSqlParser.KW_MAPPING - 168)))) !== 0) || ((((_la - 200)) & ~0x1F) === 0 && ((1 << (_la - 200)) & ((1 << (HiveSqlParser.KW_MATCHED - 200)) | (1 << (HiveSqlParser.KW_MATERIALIZED - 200)) | (1 << (HiveSqlParser.KW_METADATA - 200)) | (1 << (HiveSqlParser.KW_MINUTE - 200)) | (1 << (HiveSqlParser.KW_MINUTES - 200)) | (1 << (HiveSqlParser.KW_MONTH - 200)) | (1 << (HiveSqlParser.KW_MONTHS - 200)) | (1 << (HiveSqlParser.KW_MOVE - 200)) | (1 << (HiveSqlParser.KW_MSCK - 200)) | (1 << (HiveSqlParser.KW_NORELY - 200)) | (1 << (HiveSqlParser.KW_NOSCAN - 200)) | (1 << (HiveSqlParser.KW_NOVALIDATE - 200)) | (1 << (HiveSqlParser.KW_NO_DROP - 200)) | (1 << (HiveSqlParser.KW_NULLS - 200)) | (1 << (HiveSqlParser.KW_OFFLINE - 200)) | (1 << (HiveSqlParser.KW_OFFSET - 200)) | (1 << (HiveSqlParser.KW_OPERATOR - 200)) | (1 << (HiveSqlParser.KW_OPTION - 200)) | (1 << (HiveSqlParser.KW_OUTPUTDRIVER - 200)))) !== 0) || ((((_la - 232)) & ~0x1F) === 0 && ((1 << (_la - 232)) & ((1 << (HiveSqlParser.KW_OUTPUTFORMAT - 232)) | (1 << (HiveSqlParser.KW_OVERWRITE - 232)) | (1 << (HiveSqlParser.KW_OWNER - 232)) | (1 << (HiveSqlParser.KW_PARTITIONED - 232)) | (1 << (HiveSqlParser.KW_PARTITIONS - 232)) | (1 << (HiveSqlParser.KW_PATH - 232)) | (1 << (HiveSqlParser.KW_PLAN - 232)) | (1 << (HiveSqlParser.KW_PLANS - 232)) | (1 << (HiveSqlParser.KW_PLUS - 232)) | (1 << (HiveSqlParser.KW_POOL - 232)) | (1 << (HiveSqlParser.KW_PRINCIPALS - 232)) | (1 << (HiveSqlParser.KW_PROTECTION - 232)) | (1 << (HiveSqlParser.KW_PURGE - 232)) | (1 << (HiveSqlParser.KW_QUARTER - 232)) | (1 << (HiveSqlParser.KW_QUERY - 232)) | (1 << (HiveSqlParser.KW_QUERY_PARALLELISM - 232)) | (1 << (HiveSqlParser.KW_READ - 232)) | (1 << (HiveSqlParser.KW_READONLY - 232)))) !== 0) || ((((_la - 264)) & ~0x1F) === 0 && ((1 << (_la - 264)) & ((1 << (HiveSqlParser.KW_REBUILD - 264)) | (1 << (HiveSqlParser.KW_RECORDREADER - 264)) | (1 << (HiveSqlParser.KW_RECORDWRITER - 264)) | (1 << (HiveSqlParser.KW_RELOAD - 264)) | (1 << (HiveSqlParser.KW_RELY - 264)) | (1 << (HiveSqlParser.KW_REMOTE - 264)) | (1 << (HiveSqlParser.KW_RENAME - 264)) | (1 << (HiveSqlParser.KW_REOPTIMIZATION - 264)) | (1 << (HiveSqlParser.KW_REPAIR - 264)) | (1 << (HiveSqlParser.KW_REPL - 264)) | (1 << (HiveSqlParser.KW_REPLACE - 264)) | (1 << (HiveSqlParser.KW_REPLICATION - 264)) | (1 << (HiveSqlParser.KW_RESOURCE - 264)) | (1 << (HiveSqlParser.KW_RESPECT - 264)) | (1 << (HiveSqlParser.KW_RESTRICT - 264)) | (1 << (HiveSqlParser.KW_REWRITE - 264)) | (1 << (HiveSqlParser.KW_ROLE - 264)) | (1 << (HiveSqlParser.KW_ROLES - 264)) | (1 << (HiveSqlParser.KW_SCHEDULED - 264)) | (1 << (HiveSqlParser.KW_SCHEDULING_POLICY - 264)) | (1 << (HiveSqlParser.KW_SCHEMA - 264)) | (1 << (HiveSqlParser.KW_SCHEMAS - 264)))) !== 0) || ((((_la - 296)) & ~0x1F) === 0 && ((1 << (_la - 296)) & ((1 << (HiveSqlParser.KW_SECOND - 296)) | (1 << (HiveSqlParser.KW_SECONDS - 296)) | (1 << (HiveSqlParser.KW_SEMI - 296)) | (1 << (HiveSqlParser.KW_SERDE - 296)) | (1 << (HiveSqlParser.KW_SERDEPROPERTIES - 296)) | (1 << (HiveSqlParser.KW_SERVER - 296)) | (1 << (HiveSqlParser.KW_SETS - 296)) | (1 << (HiveSqlParser.KW_SET_CURRENT_SNAPSHOT - 296)) | (1 << (HiveSqlParser.KW_SHARED - 296)) | (1 << (HiveSqlParser.KW_SHOW - 296)) | (1 << (HiveSqlParser.KW_SHOW_DATABASE - 296)) | (1 << (HiveSqlParser.KW_SKEWED - 296)) | (1 << (HiveSqlParser.KW_SNAPSHOT - 296)) | (1 << (HiveSqlParser.KW_SORT - 296)) | (1 << (HiveSqlParser.KW_SORTED - 296)) | (1 << (HiveSqlParser.KW_SPEC - 296)) | (1 << (HiveSqlParser.KW_SSL - 296)) | (1 << (HiveSqlParser.KW_STATISTICS - 296)) | (1 << (HiveSqlParser.KW_STATUS - 296)) | (1 << (HiveSqlParser.KW_STORED - 296)) | (1 << (HiveSqlParser.KW_STREAMTABLE - 296)) | (1 << (HiveSqlParser.KW_STRING - 296)) | (1 << (HiveSqlParser.KW_STRUCT - 296)) | (1 << (HiveSqlParser.KW_SUMMARY - 296)) | (1 << (HiveSqlParser.KW_SYSTEM_TIME - 296)) | (1 << (HiveSqlParser.KW_SYSTEM_VERSION - 296)))) !== 0) || ((((_la - 329)) & ~0x1F) === 0 && ((1 << (_la - 329)) & ((1 << (HiveSqlParser.KW_TABLES - 329)) | (1 << (HiveSqlParser.KW_TBLPROPERTIES - 329)) | (1 << (HiveSqlParser.KW_TEMPORARY - 329)) | (1 << (HiveSqlParser.KW_TERMINATED - 329)) | (1 << (HiveSqlParser.KW_TIMESTAMPTZ - 329)) | (1 << (HiveSqlParser.KW_TINYINT - 329)) | (1 << (HiveSqlParser.KW_TOUCH - 329)) | (1 << (HiveSqlParser.KW_TRANSACTION - 329)) | (1 << (HiveSqlParser.KW_TRANSACTIONAL - 329)) | (1 << (HiveSqlParser.KW_TRANSACTIONS - 329)) | (1 << (HiveSqlParser.KW_TRIM - 329)) | (1 << (HiveSqlParser.KW_TYPE - 329)) | (1 << (HiveSqlParser.KW_UNARCHIVE - 329)) | (1 << (HiveSqlParser.KW_UNDO - 329)) | (1 << (HiveSqlParser.KW_UNIONTYPE - 329)) | (1 << (HiveSqlParser.KW_UNKNOWN - 329)) | (1 << (HiveSqlParser.KW_UNLOCK - 329)))) !== 0) || ((((_la - 361)) & ~0x1F) === 0 && ((1 << (_la - 361)) & ((1 << (HiveSqlParser.KW_UNMANAGED - 361)) | (1 << (HiveSqlParser.KW_UNSET - 361)) | (1 << (HiveSqlParser.KW_UNSIGNED - 361)) | (1 << (HiveSqlParser.KW_URI - 361)) | (1 << (HiveSqlParser.KW_URL - 361)) | (1 << (HiveSqlParser.KW_USE - 361)) | (1 << (HiveSqlParser.KW_UTC - 361)) | (1 << (HiveSqlParser.KW_UTCTIMESTAMP - 361)) | (1 << (HiveSqlParser.KW_VALIDATE - 361)) | (1 << (HiveSqlParser.KW_VALUE_TYPE - 361)) | (1 << (HiveSqlParser.KW_VECTORIZATION - 361)) | (1 << (HiveSqlParser.KW_VIEW - 361)) | (1 << (HiveSqlParser.KW_VIEWS - 361)) | (1 << (HiveSqlParser.KW_WAIT - 361)) | (1 << (HiveSqlParser.KW_WEEK - 361)) | (1 << (HiveSqlParser.KW_WEEKS - 361)) | (1 << (HiveSqlParser.KW_WHILE - 361)) | (1 << (HiveSqlParser.KW_WITHIN - 361)) | (1 << (HiveSqlParser.KW_WORK - 361)) | (1 << (HiveSqlParser.KW_WORKLOAD - 361)) | (1 << (HiveSqlParser.KW_WRITE - 361)) | (1 << (HiveSqlParser.KW_YEAR - 361)) | (1 << (HiveSqlParser.KW_YEARS - 361)))) !== 0) || _la === HiveSqlParser.KW_ZONE || _la === HiveSqlParser.Identifier) {
				{
				this.state = 1955;
				this.columnNameTypeList();
				}
			}

			this.state = 1958;
			this.match(HiveSqlParser.RPAREN);
			this.state = 1959;
			this.expression();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public dropMacroStatement(): DropMacroStatementContext {
		let _localctx: DropMacroStatementContext = new DropMacroStatementContext(this._ctx, this.state);
		this.enterRule(_localctx, 176, HiveSqlParser.RULE_dropMacroStatement);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 1961;
			this.match(HiveSqlParser.KW_DROP);
			this.state = 1962;
			this.match(HiveSqlParser.KW_TEMPORARY);
			this.state = 1963;
			this.match(HiveSqlParser.KW_MACRO);
			this.state = 1965;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === HiveSqlParser.KW_IF) {
				{
				this.state = 1964;
				this.ifExists();
				}
			}

			this.state = 1967;
			this.match(HiveSqlParser.Identifier);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public createIndexStatement(): CreateIndexStatementContext {
		let _localctx: CreateIndexStatementContext = new CreateIndexStatementContext(this._ctx, this.state);
		this.enterRule(_localctx, 178, HiveSqlParser.RULE_createIndexStatement);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 1969;
			this.match(HiveSqlParser.KW_CREATE);
			this.state = 1970;
			this.match(HiveSqlParser.KW_INDEX);
			this.state = 1971;
			this.id_();
			this.state = 1972;
			this.match(HiveSqlParser.KW_ON);
			this.state = 1973;
			this.match(HiveSqlParser.KW_TABLE);
			this.state = 1974;
			this.tableName();
			this.state = 1975;
			this.columnParenthesesList();
			this.state = 1976;
			this.match(HiveSqlParser.KW_AS);
			this.state = 1977;
			_localctx._indextype = this.match(HiveSqlParser.StringLiteral);
			this.state = 1981;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 140, this._ctx) ) {
			case 1:
				{
				this.state = 1978;
				this.match(HiveSqlParser.KW_WITH);
				this.state = 1979;
				this.match(HiveSqlParser.KW_DEFERRED);
				this.state = 1980;
				this.match(HiveSqlParser.KW_REBUILD);
				}
				break;
			}
			this.state = 1985;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === HiveSqlParser.KW_IDXPROPERTIES) {
				{
				this.state = 1983;
				this.match(HiveSqlParser.KW_IDXPROPERTIES);
				this.state = 1984;
				this.tableProperties();
				}
			}

			this.state = 1990;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === HiveSqlParser.KW_IN) {
				{
				this.state = 1987;
				this.match(HiveSqlParser.KW_IN);
				this.state = 1988;
				this.match(HiveSqlParser.KW_TABLE);
				this.state = 1989;
				this.tableName();
				}
			}

			this.state = 1995;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === HiveSqlParser.KW_PARTITIONED) {
				{
				this.state = 1992;
				this.match(HiveSqlParser.KW_PARTITIONED);
				this.state = 1993;
				this.match(HiveSqlParser.KW_BY);
				this.state = 1994;
				this.columnParenthesesList();
				}
			}

			this.state = 2001;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === HiveSqlParser.KW_ROW || _la === HiveSqlParser.KW_STORED) {
				{
				this.state = 1998;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === HiveSqlParser.KW_ROW) {
					{
					this.state = 1997;
					this.tableRowFormat();
					}
				}

				this.state = 2000;
				this.tableFileFormat();
				}
			}

			this.state = 2005;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === HiveSqlParser.KW_LOCATION) {
				{
				this.state = 2003;
				this.match(HiveSqlParser.KW_LOCATION);
				this.state = 2004;
				_localctx._locn = this.match(HiveSqlParser.StringLiteral);
				}
			}

			this.state = 2008;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === HiveSqlParser.KW_TBLPROPERTIES) {
				{
				this.state = 2007;
				this.tablePropertiesPrefixed();
				}
			}

			this.state = 2011;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === HiveSqlParser.KW_COMMENT) {
				{
				this.state = 2010;
				this.tableComment();
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public dropIndexStatement(): DropIndexStatementContext {
		let _localctx: DropIndexStatementContext = new DropIndexStatementContext(this._ctx, this.state);
		this.enterRule(_localctx, 180, HiveSqlParser.RULE_dropIndexStatement);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 2013;
			this.match(HiveSqlParser.KW_DROP);
			this.state = 2014;
			this.match(HiveSqlParser.KW_INDEX);
			this.state = 2016;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === HiveSqlParser.KW_IF) {
				{
				this.state = 2015;
				this.ifExists();
				}
			}

			this.state = 2018;
			this.id_();
			this.state = 2019;
			this.match(HiveSqlParser.KW_ON);
			this.state = 2020;
			this.tableName();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public createViewStatement(): CreateViewStatementContext {
		let _localctx: CreateViewStatementContext = new CreateViewStatementContext(this._ctx, this.state);
		this.enterRule(_localctx, 182, HiveSqlParser.RULE_createViewStatement);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 2022;
			this.match(HiveSqlParser.KW_CREATE);
			this.state = 2024;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === HiveSqlParser.KW_OR) {
				{
				this.state = 2023;
				this.orReplace();
				}
			}

			this.state = 2026;
			this.match(HiveSqlParser.KW_VIEW);
			this.state = 2028;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === HiveSqlParser.KW_IF) {
				{
				this.state = 2027;
				this.ifNotExists();
				}
			}

			this.state = 2030;
			_localctx._name = this.viewNameCreate();
			this.state = 2035;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === HiveSqlParser.LPAREN) {
				{
				this.state = 2031;
				this.match(HiveSqlParser.LPAREN);
				this.state = 2032;
				this.columnNameCommentList();
				this.state = 2033;
				this.match(HiveSqlParser.RPAREN);
				}
			}

			this.state = 2038;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === HiveSqlParser.KW_COMMENT) {
				{
				this.state = 2037;
				this.tableComment();
				}
			}

			this.state = 2041;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === HiveSqlParser.KW_PARTITIONED) {
				{
				this.state = 2040;
				this.viewPartition();
				}
			}

			this.state = 2044;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === HiveSqlParser.KW_TBLPROPERTIES) {
				{
				this.state = 2043;
				this.tablePropertiesPrefixed();
				}
			}

			this.state = 2046;
			this.match(HiveSqlParser.KW_AS);
			this.state = 2047;
			this.selectStatementWithCTE();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public viewPartition(): ViewPartitionContext {
		let _localctx: ViewPartitionContext = new ViewPartitionContext(this._ctx, this.state);
		this.enterRule(_localctx, 184, HiveSqlParser.RULE_viewPartition);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 2049;
			this.match(HiveSqlParser.KW_PARTITIONED);
			this.state = 2050;
			this.match(HiveSqlParser.KW_ON);
			this.state = 2056;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case HiveSqlParser.LPAREN:
				{
				this.state = 2051;
				this.match(HiveSqlParser.LPAREN);
				this.state = 2052;
				this.columnNameList();
				}
				break;
			case HiveSqlParser.KW_SPEC:
				{
				this.state = 2053;
				this.match(HiveSqlParser.KW_SPEC);
				this.state = 2054;
				this.match(HiveSqlParser.LPAREN);
				this.state = 2055;
				_localctx._spec = this.partitionTransformSpec();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			this.state = 2058;
			this.match(HiveSqlParser.RPAREN);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public viewOrganization(): ViewOrganizationContext {
		let _localctx: ViewOrganizationContext = new ViewOrganizationContext(this._ctx, this.state);
		this.enterRule(_localctx, 186, HiveSqlParser.RULE_viewOrganization);
		try {
			this.state = 2062;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case HiveSqlParser.KW_CLUSTERED:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 2060;
				this.viewClusterSpec();
				}
				break;
			case HiveSqlParser.KW_DISTRIBUTED:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 2061;
				this.viewComplexSpec();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public viewClusterSpec(): ViewClusterSpecContext {
		let _localctx: ViewClusterSpecContext = new ViewClusterSpecContext(this._ctx, this.state);
		this.enterRule(_localctx, 188, HiveSqlParser.RULE_viewClusterSpec);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 2064;
			this.match(HiveSqlParser.KW_CLUSTERED);
			this.state = 2065;
			this.match(HiveSqlParser.KW_ON);
			this.state = 2066;
			this.match(HiveSqlParser.LPAREN);
			this.state = 2067;
			this.columnNameList();
			this.state = 2068;
			this.match(HiveSqlParser.RPAREN);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public viewComplexSpec(): ViewComplexSpecContext {
		let _localctx: ViewComplexSpecContext = new ViewComplexSpecContext(this._ctx, this.state);
		this.enterRule(_localctx, 190, HiveSqlParser.RULE_viewComplexSpec);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 2070;
			this.viewDistSpec();
			this.state = 2071;
			this.viewSortSpec();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public viewDistSpec(): ViewDistSpecContext {
		let _localctx: ViewDistSpecContext = new ViewDistSpecContext(this._ctx, this.state);
		this.enterRule(_localctx, 192, HiveSqlParser.RULE_viewDistSpec);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 2073;
			this.match(HiveSqlParser.KW_DISTRIBUTED);
			this.state = 2074;
			this.match(HiveSqlParser.KW_ON);
			this.state = 2075;
			this.match(HiveSqlParser.LPAREN);
			this.state = 2076;
			_localctx._colList = this.columnNameList();
			this.state = 2077;
			this.match(HiveSqlParser.RPAREN);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public viewSortSpec(): ViewSortSpecContext {
		let _localctx: ViewSortSpecContext = new ViewSortSpecContext(this._ctx, this.state);
		this.enterRule(_localctx, 194, HiveSqlParser.RULE_viewSortSpec);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 2079;
			this.match(HiveSqlParser.KW_SORTED);
			this.state = 2080;
			this.match(HiveSqlParser.KW_ON);
			this.state = 2081;
			this.match(HiveSqlParser.LPAREN);
			this.state = 2082;
			_localctx._colList = this.columnNameList();
			this.state = 2083;
			this.match(HiveSqlParser.RPAREN);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public dropViewStatement(): DropViewStatementContext {
		let _localctx: DropViewStatementContext = new DropViewStatementContext(this._ctx, this.state);
		this.enterRule(_localctx, 196, HiveSqlParser.RULE_dropViewStatement);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 2085;
			this.match(HiveSqlParser.KW_DROP);
			this.state = 2086;
			this.match(HiveSqlParser.KW_VIEW);
			this.state = 2088;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === HiveSqlParser.KW_IF) {
				{
				this.state = 2087;
				this.ifExists();
				}
			}

			this.state = 2090;
			this.viewName();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public createMaterializedViewStatement(): CreateMaterializedViewStatementContext {
		let _localctx: CreateMaterializedViewStatementContext = new CreateMaterializedViewStatementContext(this._ctx, this.state);
		this.enterRule(_localctx, 198, HiveSqlParser.RULE_createMaterializedViewStatement);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 2092;
			this.match(HiveSqlParser.KW_CREATE);
			this.state = 2093;
			this.match(HiveSqlParser.KW_MATERIALIZED);
			this.state = 2094;
			this.match(HiveSqlParser.KW_VIEW);
			this.state = 2096;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === HiveSqlParser.KW_IF) {
				{
				this.state = 2095;
				this.ifNotExists();
				}
			}

			this.state = 2098;
			_localctx._name = this.viewNameCreate();
			this.state = 2100;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === HiveSqlParser.KW_DISABLE || _la === HiveSqlParser.KW_DISABLED) {
				{
				this.state = 2099;
				this.rewriteDisabled();
				}
			}

			this.state = 2103;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === HiveSqlParser.KW_COMMENT) {
				{
				this.state = 2102;
				this.tableComment();
				}
			}

			this.state = 2106;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === HiveSqlParser.KW_PARTITIONED) {
				{
				this.state = 2105;
				this.viewPartition();
				}
			}

			this.state = 2109;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === HiveSqlParser.KW_CLUSTERED || _la === HiveSqlParser.KW_DISTRIBUTED) {
				{
				this.state = 2108;
				this.viewOrganization();
				}
			}

			this.state = 2112;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === HiveSqlParser.KW_ROW) {
				{
				this.state = 2111;
				this.tableRowFormat();
				}
			}

			this.state = 2115;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === HiveSqlParser.KW_STORED) {
				{
				this.state = 2114;
				this.tableFileFormat();
				}
			}

			this.state = 2118;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === HiveSqlParser.KW_LOCATION) {
				{
				this.state = 2117;
				this.tableLocation();
				}
			}

			this.state = 2121;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === HiveSqlParser.KW_TBLPROPERTIES) {
				{
				this.state = 2120;
				this.tablePropertiesPrefixed();
				}
			}

			this.state = 2123;
			this.match(HiveSqlParser.KW_AS);
			this.state = 2124;
			this.selectStatementWithCTE();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public dropMaterializedViewStatement(): DropMaterializedViewStatementContext {
		let _localctx: DropMaterializedViewStatementContext = new DropMaterializedViewStatementContext(this._ctx, this.state);
		this.enterRule(_localctx, 200, HiveSqlParser.RULE_dropMaterializedViewStatement);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 2126;
			this.match(HiveSqlParser.KW_DROP);
			this.state = 2127;
			this.match(HiveSqlParser.KW_MATERIALIZED);
			this.state = 2128;
			this.match(HiveSqlParser.KW_VIEW);
			this.state = 2130;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === HiveSqlParser.KW_IF) {
				{
				this.state = 2129;
				this.ifExists();
				}
			}

			this.state = 2132;
			this.viewName();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public createScheduledQueryStatement(): CreateScheduledQueryStatementContext {
		let _localctx: CreateScheduledQueryStatementContext = new CreateScheduledQueryStatementContext(this._ctx, this.state);
		this.enterRule(_localctx, 202, HiveSqlParser.RULE_createScheduledQueryStatement);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 2134;
			this.match(HiveSqlParser.KW_CREATE);
			this.state = 2135;
			this.match(HiveSqlParser.KW_SCHEDULED);
			this.state = 2136;
			this.match(HiveSqlParser.KW_QUERY);
			this.state = 2137;
			_localctx._name = this.id_();
			this.state = 2138;
			this.scheduleSpec();
			this.state = 2140;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === HiveSqlParser.KW_EXECUTED) {
				{
				this.state = 2139;
				this.executedAsSpec();
				}
			}

			this.state = 2143;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (((((_la - 94)) & ~0x1F) === 0 && ((1 << (_la - 94)) & ((1 << (HiveSqlParser.KW_DISABLE - 94)) | (1 << (HiveSqlParser.KW_DISABLED - 94)) | (1 << (HiveSqlParser.KW_ENABLE - 94)) | (1 << (HiveSqlParser.KW_ENABLED - 94)))) !== 0)) {
				{
				this.state = 2142;
				this.enableSpecification();
				}
			}

			this.state = 2145;
			this.definedAsSpec();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public dropScheduledQueryStatement(): DropScheduledQueryStatementContext {
		let _localctx: DropScheduledQueryStatementContext = new DropScheduledQueryStatementContext(this._ctx, this.state);
		this.enterRule(_localctx, 204, HiveSqlParser.RULE_dropScheduledQueryStatement);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 2147;
			this.match(HiveSqlParser.KW_DROP);
			this.state = 2148;
			this.match(HiveSqlParser.KW_SCHEDULED);
			this.state = 2149;
			this.match(HiveSqlParser.KW_QUERY);
			this.state = 2150;
			_localctx._name = this.id_();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public alterScheduledQueryStatement(): AlterScheduledQueryStatementContext {
		let _localctx: AlterScheduledQueryStatementContext = new AlterScheduledQueryStatementContext(this._ctx, this.state);
		this.enterRule(_localctx, 206, HiveSqlParser.RULE_alterScheduledQueryStatement);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 2152;
			this.match(HiveSqlParser.KW_ALTER);
			this.state = 2153;
			this.match(HiveSqlParser.KW_SCHEDULED);
			this.state = 2154;
			this.match(HiveSqlParser.KW_QUERY);
			this.state = 2155;
			_localctx._name = this.id_();
			this.state = 2156;
			_localctx._mod = this.alterScheduledQueryChange();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public alterScheduledQueryChange(): AlterScheduledQueryChangeContext {
		let _localctx: AlterScheduledQueryChangeContext = new AlterScheduledQueryChangeContext(this._ctx, this.state);
		this.enterRule(_localctx, 208, HiveSqlParser.RULE_alterScheduledQueryChange);
		try {
			this.state = 2163;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case HiveSqlParser.KW_CRON:
			case HiveSqlParser.KW_EVERY:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 2158;
				this.scheduleSpec();
				}
				break;
			case HiveSqlParser.KW_EXECUTED:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 2159;
				this.executedAsSpec();
				}
				break;
			case HiveSqlParser.KW_DISABLE:
			case HiveSqlParser.KW_DISABLED:
			case HiveSqlParser.KW_ENABLE:
			case HiveSqlParser.KW_ENABLED:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 2160;
				this.enableSpecification();
				}
				break;
			case HiveSqlParser.KW_AS:
			case HiveSqlParser.KW_DEFINED:
				this.enterOuterAlt(_localctx, 4);
				{
				this.state = 2161;
				this.definedAsSpec();
				}
				break;
			case HiveSqlParser.KW_EXECUTE:
				this.enterOuterAlt(_localctx, 5);
				{
				this.state = 2162;
				this.match(HiveSqlParser.KW_EXECUTE);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public scheduleSpec(): ScheduleSpecContext {
		let _localctx: ScheduleSpecContext = new ScheduleSpecContext(this._ctx, this.state);
		this.enterRule(_localctx, 210, HiveSqlParser.RULE_scheduleSpec);
		let _la: number;
		try {
			this.state = 2180;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case HiveSqlParser.KW_CRON:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 2165;
				this.match(HiveSqlParser.KW_CRON);
				this.state = 2166;
				_localctx._cronString = this.match(HiveSqlParser.StringLiteral);
				}
				break;
			case HiveSqlParser.KW_EVERY:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 2167;
				this.match(HiveSqlParser.KW_EVERY);
				this.state = 2169;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === HiveSqlParser.Number) {
					{
					this.state = 2168;
					_localctx._value = this.match(HiveSqlParser.Number);
					}
				}

				this.state = 2171;
				_localctx._qualifier = this.intervalQualifiers();
				this.state = 2178;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === HiveSqlParser.KW_AT || _la === HiveSqlParser.KW_OFFSET) {
					{
					this.state = 2175;
					this._errHandler.sync(this);
					switch (this._input.LA(1)) {
					case HiveSqlParser.KW_AT:
						{
						this.state = 2172;
						this.match(HiveSqlParser.KW_AT);
						}
						break;
					case HiveSqlParser.KW_OFFSET:
						{
						this.state = 2173;
						this.match(HiveSqlParser.KW_OFFSET);
						this.state = 2174;
						this.match(HiveSqlParser.KW_BY);
						}
						break;
					default:
						throw new NoViableAltException(this);
					}
					this.state = 2177;
					_localctx._offsetTs = this.match(HiveSqlParser.StringLiteral);
					}
				}

				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public executedAsSpec(): ExecutedAsSpecContext {
		let _localctx: ExecutedAsSpecContext = new ExecutedAsSpecContext(this._ctx, this.state);
		this.enterRule(_localctx, 212, HiveSqlParser.RULE_executedAsSpec);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 2182;
			this.match(HiveSqlParser.KW_EXECUTED);
			this.state = 2183;
			this.match(HiveSqlParser.KW_AS);
			this.state = 2184;
			_localctx._executedAs = this.match(HiveSqlParser.StringLiteral);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public definedAsSpec(): DefinedAsSpecContext {
		let _localctx: DefinedAsSpecContext = new DefinedAsSpecContext(this._ctx, this.state);
		this.enterRule(_localctx, 214, HiveSqlParser.RULE_definedAsSpec);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 2187;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === HiveSqlParser.KW_DEFINED) {
				{
				this.state = 2186;
				this.match(HiveSqlParser.KW_DEFINED);
				}
			}

			this.state = 2189;
			this.match(HiveSqlParser.KW_AS);
			this.state = 2190;
			this.statement();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public showStmtIdentifier(): ShowStmtIdentifierContext {
		let _localctx: ShowStmtIdentifierContext = new ShowStmtIdentifierContext(this._ctx, this.state);
		this.enterRule(_localctx, 216, HiveSqlParser.RULE_showStmtIdentifier);
		try {
			this.state = 2194;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case HiveSqlParser.KW_ABORT:
			case HiveSqlParser.KW_ACTIVATE:
			case HiveSqlParser.KW_ACTIVE:
			case HiveSqlParser.KW_ADD:
			case HiveSqlParser.KW_ADMIN:
			case HiveSqlParser.KW_AFTER:
			case HiveSqlParser.KW_ALLOC_FRACTION:
			case HiveSqlParser.KW_ANALYZE:
			case HiveSqlParser.KW_ARCHIVE:
			case HiveSqlParser.KW_ASC:
			case HiveSqlParser.KW_AST:
			case HiveSqlParser.KW_AT:
			case HiveSqlParser.KW_AUTOCOMMIT:
			case HiveSqlParser.KW_BATCH:
			case HiveSqlParser.KW_BEFORE:
			case HiveSqlParser.KW_BUCKET:
			case HiveSqlParser.KW_BUCKETS:
			case HiveSqlParser.KW_CACHE:
			case HiveSqlParser.KW_CASCADE:
			case HiveSqlParser.KW_CBO:
			case HiveSqlParser.KW_CHANGE:
			case HiveSqlParser.KW_CHECK:
			case HiveSqlParser.KW_CLUSTER:
			case HiveSqlParser.KW_CLUSTERED:
			case HiveSqlParser.KW_CLUSTERSTATUS:
			case HiveSqlParser.KW_COLLECTION:
			case HiveSqlParser.KW_COLUMNS:
			case HiveSqlParser.KW_COMMENT:
			case HiveSqlParser.KW_COMPACT:
			case HiveSqlParser.KW_COMPACTIONS:
			case HiveSqlParser.KW_COMPUTE:
			case HiveSqlParser.KW_CONCATENATE:
			case HiveSqlParser.KW_CONTINUE:
			case HiveSqlParser.KW_COST:
			case HiveSqlParser.KW_CRON:
			case HiveSqlParser.KW_DATA:
			case HiveSqlParser.KW_DATABASES:
			case HiveSqlParser.KW_DATETIME:
			case HiveSqlParser.KW_DAY:
			case HiveSqlParser.KW_DAYS:
			case HiveSqlParser.KW_DAYOFWEEK:
			case HiveSqlParser.KW_DBPROPERTIES:
			case HiveSqlParser.KW_DCPROPERTIES:
			case HiveSqlParser.KW_DEBUG:
			case HiveSqlParser.KW_DEFAULT:
			case HiveSqlParser.KW_DEFERRED:
			case HiveSqlParser.KW_DEFINED:
			case HiveSqlParser.KW_DELIMITED:
			case HiveSqlParser.KW_DEPENDENCY:
			case HiveSqlParser.KW_DESC:
			case HiveSqlParser.KW_DETAIL:
			case HiveSqlParser.KW_DIRECTORIES:
			case HiveSqlParser.KW_DIRECTORY:
			case HiveSqlParser.KW_DISABLE:
			case HiveSqlParser.KW_DISABLED:
			case HiveSqlParser.KW_DISTRIBUTE:
			case HiveSqlParser.KW_DISTRIBUTED:
			case HiveSqlParser.KW_DO:
			case HiveSqlParser.KW_DUMP:
			case HiveSqlParser.KW_ELEM_TYPE:
			case HiveSqlParser.KW_ENABLE:
			case HiveSqlParser.KW_ENABLED:
			case HiveSqlParser.KW_ENFORCED:
			case HiveSqlParser.KW_ESCAPED:
			case HiveSqlParser.KW_EVERY:
			case HiveSqlParser.KW_EXCLUSIVE:
			case HiveSqlParser.KW_EXECUTE:
			case HiveSqlParser.KW_EXECUTED:
			case HiveSqlParser.KW_EXPIRE_SNAPSHOTS:
			case HiveSqlParser.KW_EXPLAIN:
			case HiveSqlParser.KW_EXPORT:
			case HiveSqlParser.KW_EXPRESSION:
			case HiveSqlParser.KW_FIELDS:
			case HiveSqlParser.KW_FILE:
			case HiveSqlParser.KW_FILEFORMAT:
			case HiveSqlParser.KW_FIRST:
			case HiveSqlParser.KW_FORMAT:
			case HiveSqlParser.KW_FORMATTED:
			case HiveSqlParser.KW_FUNCTIONS:
			case HiveSqlParser.KW_HOLD_DDLTIME:
			case HiveSqlParser.KW_HOUR:
			case HiveSqlParser.KW_HOURS:
			case HiveSqlParser.KW_IDXPROPERTIES:
			case HiveSqlParser.KW_IGNORE:
			case HiveSqlParser.KW_INDEX:
			case HiveSqlParser.KW_INDEXES:
			case HiveSqlParser.KW_INPATH:
			case HiveSqlParser.KW_INPUTDRIVER:
			case HiveSqlParser.KW_INPUTFORMAT:
			case HiveSqlParser.KW_ISOLATION:
			case HiveSqlParser.KW_ITEMS:
			case HiveSqlParser.KW_JAR:
			case HiveSqlParser.KW_JOINCOST:
			case HiveSqlParser.KW_KEY:
			case HiveSqlParser.KW_KEYS:
			case HiveSqlParser.KW_KEY_TYPE:
			case HiveSqlParser.KW_KILL:
			case HiveSqlParser.KW_LAST:
			case HiveSqlParser.KW_LEVEL:
			case HiveSqlParser.KW_LIMIT:
			case HiveSqlParser.KW_LINES:
			case HiveSqlParser.KW_LOAD:
			case HiveSqlParser.KW_LOCATION:
			case HiveSqlParser.KW_LOCK:
			case HiveSqlParser.KW_LOCKS:
			case HiveSqlParser.KW_LOGICAL:
			case HiveSqlParser.KW_LONG:
			case HiveSqlParser.KW_MANAGED:
			case HiveSqlParser.KW_MANAGEDLOCATION:
			case HiveSqlParser.KW_MANAGEMENT:
			case HiveSqlParser.KW_MAPJOIN:
			case HiveSqlParser.KW_MAPPING:
			case HiveSqlParser.KW_MATCHED:
			case HiveSqlParser.KW_MATERIALIZED:
			case HiveSqlParser.KW_METADATA:
			case HiveSqlParser.KW_MINUTE:
			case HiveSqlParser.KW_MINUTES:
			case HiveSqlParser.KW_MONTH:
			case HiveSqlParser.KW_MONTHS:
			case HiveSqlParser.KW_MOVE:
			case HiveSqlParser.KW_MSCK:
			case HiveSqlParser.KW_NORELY:
			case HiveSqlParser.KW_NOSCAN:
			case HiveSqlParser.KW_NOVALIDATE:
			case HiveSqlParser.KW_NO_DROP:
			case HiveSqlParser.KW_NULLS:
			case HiveSqlParser.KW_OFFLINE:
			case HiveSqlParser.KW_OFFSET:
			case HiveSqlParser.KW_OPERATOR:
			case HiveSqlParser.KW_OPTION:
			case HiveSqlParser.KW_OUTPUTDRIVER:
			case HiveSqlParser.KW_OUTPUTFORMAT:
			case HiveSqlParser.KW_OVERWRITE:
			case HiveSqlParser.KW_OWNER:
			case HiveSqlParser.KW_PARTITIONED:
			case HiveSqlParser.KW_PARTITIONS:
			case HiveSqlParser.KW_PATH:
			case HiveSqlParser.KW_PLAN:
			case HiveSqlParser.KW_PLANS:
			case HiveSqlParser.KW_PLUS:
			case HiveSqlParser.KW_POOL:
			case HiveSqlParser.KW_PRINCIPALS:
			case HiveSqlParser.KW_PROTECTION:
			case HiveSqlParser.KW_PURGE:
			case HiveSqlParser.KW_QUARTER:
			case HiveSqlParser.KW_QUERY:
			case HiveSqlParser.KW_QUERY_PARALLELISM:
			case HiveSqlParser.KW_READ:
			case HiveSqlParser.KW_READONLY:
			case HiveSqlParser.KW_REBUILD:
			case HiveSqlParser.KW_RECORDREADER:
			case HiveSqlParser.KW_RECORDWRITER:
			case HiveSqlParser.KW_RELOAD:
			case HiveSqlParser.KW_RELY:
			case HiveSqlParser.KW_REMOTE:
			case HiveSqlParser.KW_RENAME:
			case HiveSqlParser.KW_REOPTIMIZATION:
			case HiveSqlParser.KW_REPAIR:
			case HiveSqlParser.KW_REPL:
			case HiveSqlParser.KW_REPLACE:
			case HiveSqlParser.KW_REPLICATION:
			case HiveSqlParser.KW_RESOURCE:
			case HiveSqlParser.KW_RESPECT:
			case HiveSqlParser.KW_RESTRICT:
			case HiveSqlParser.KW_REWRITE:
			case HiveSqlParser.KW_ROLE:
			case HiveSqlParser.KW_ROLES:
			case HiveSqlParser.KW_SCHEDULED:
			case HiveSqlParser.KW_SCHEDULING_POLICY:
			case HiveSqlParser.KW_SCHEMA:
			case HiveSqlParser.KW_SCHEMAS:
			case HiveSqlParser.KW_SECOND:
			case HiveSqlParser.KW_SECONDS:
			case HiveSqlParser.KW_SEMI:
			case HiveSqlParser.KW_SERDE:
			case HiveSqlParser.KW_SERDEPROPERTIES:
			case HiveSqlParser.KW_SERVER:
			case HiveSqlParser.KW_SETS:
			case HiveSqlParser.KW_SET_CURRENT_SNAPSHOT:
			case HiveSqlParser.KW_SHARED:
			case HiveSqlParser.KW_SHOW:
			case HiveSqlParser.KW_SHOW_DATABASE:
			case HiveSqlParser.KW_SKEWED:
			case HiveSqlParser.KW_SNAPSHOT:
			case HiveSqlParser.KW_SORT:
			case HiveSqlParser.KW_SORTED:
			case HiveSqlParser.KW_SPEC:
			case HiveSqlParser.KW_SSL:
			case HiveSqlParser.KW_STATISTICS:
			case HiveSqlParser.KW_STATUS:
			case HiveSqlParser.KW_STORED:
			case HiveSqlParser.KW_STREAMTABLE:
			case HiveSqlParser.KW_STRING:
			case HiveSqlParser.KW_STRUCT:
			case HiveSqlParser.KW_SUMMARY:
			case HiveSqlParser.KW_SYSTEM_TIME:
			case HiveSqlParser.KW_SYSTEM_VERSION:
			case HiveSqlParser.KW_TABLES:
			case HiveSqlParser.KW_TBLPROPERTIES:
			case HiveSqlParser.KW_TEMPORARY:
			case HiveSqlParser.KW_TERMINATED:
			case HiveSqlParser.KW_TIMESTAMPTZ:
			case HiveSqlParser.KW_TINYINT:
			case HiveSqlParser.KW_TOUCH:
			case HiveSqlParser.KW_TRANSACTION:
			case HiveSqlParser.KW_TRANSACTIONAL:
			case HiveSqlParser.KW_TRANSACTIONS:
			case HiveSqlParser.KW_TRIM:
			case HiveSqlParser.KW_TYPE:
			case HiveSqlParser.KW_UNARCHIVE:
			case HiveSqlParser.KW_UNDO:
			case HiveSqlParser.KW_UNIONTYPE:
			case HiveSqlParser.KW_UNKNOWN:
			case HiveSqlParser.KW_UNLOCK:
			case HiveSqlParser.KW_UNMANAGED:
			case HiveSqlParser.KW_UNSET:
			case HiveSqlParser.KW_UNSIGNED:
			case HiveSqlParser.KW_URI:
			case HiveSqlParser.KW_URL:
			case HiveSqlParser.KW_USE:
			case HiveSqlParser.KW_UTC:
			case HiveSqlParser.KW_UTCTIMESTAMP:
			case HiveSqlParser.KW_VALIDATE:
			case HiveSqlParser.KW_VALUE_TYPE:
			case HiveSqlParser.KW_VECTORIZATION:
			case HiveSqlParser.KW_VIEW:
			case HiveSqlParser.KW_VIEWS:
			case HiveSqlParser.KW_WAIT:
			case HiveSqlParser.KW_WEEK:
			case HiveSqlParser.KW_WEEKS:
			case HiveSqlParser.KW_WHILE:
			case HiveSqlParser.KW_WITHIN:
			case HiveSqlParser.KW_WORK:
			case HiveSqlParser.KW_WORKLOAD:
			case HiveSqlParser.KW_WRITE:
			case HiveSqlParser.KW_YEAR:
			case HiveSqlParser.KW_YEARS:
			case HiveSqlParser.KW_ZONE:
			case HiveSqlParser.Identifier:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 2192;
				this.id_();
				}
				break;
			case HiveSqlParser.StringLiteral:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 2193;
				this.match(HiveSqlParser.StringLiteral);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public tableComment(): TableCommentContext {
		let _localctx: TableCommentContext = new TableCommentContext(this._ctx, this.state);
		this.enterRule(_localctx, 218, HiveSqlParser.RULE_tableComment);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 2196;
			this.match(HiveSqlParser.KW_COMMENT);
			this.state = 2197;
			_localctx._comment = this.match(HiveSqlParser.StringLiteral);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public createTablePartitionSpec(): CreateTablePartitionSpecContext {
		let _localctx: CreateTablePartitionSpecContext = new CreateTablePartitionSpecContext(this._ctx, this.state);
		this.enterRule(_localctx, 220, HiveSqlParser.RULE_createTablePartitionSpec);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 2199;
			this.match(HiveSqlParser.KW_PARTITIONED);
			this.state = 2200;
			this.match(HiveSqlParser.KW_BY);
			this.state = 2209;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case HiveSqlParser.LPAREN:
				{
				this.state = 2201;
				this.match(HiveSqlParser.LPAREN);
				this.state = 2204;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 178, this._ctx) ) {
				case 1:
					{
					this.state = 2202;
					_localctx._opt1 = this.createTablePartitionColumnTypeSpec();
					}
					break;

				case 2:
					{
					this.state = 2203;
					_localctx._opt2 = this.createTablePartitionColumnSpec();
					}
					break;
				}
				}
				break;
			case HiveSqlParser.KW_SPEC:
				{
				this.state = 2206;
				this.match(HiveSqlParser.KW_SPEC);
				this.state = 2207;
				this.match(HiveSqlParser.LPAREN);
				this.state = 2208;
				_localctx._spec = this.partitionTransformSpec();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			this.state = 2211;
			this.match(HiveSqlParser.RPAREN);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public createTablePartitionColumnTypeSpec(): CreateTablePartitionColumnTypeSpecContext {
		let _localctx: CreateTablePartitionColumnTypeSpecContext = new CreateTablePartitionColumnTypeSpecContext(this._ctx, this.state);
		this.enterRule(_localctx, 222, HiveSqlParser.RULE_createTablePartitionColumnTypeSpec);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 2213;
			this.columnNameTypeConstraint();
			this.state = 2218;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === HiveSqlParser.COMMA) {
				{
				{
				this.state = 2214;
				this.match(HiveSqlParser.COMMA);
				this.state = 2215;
				this.columnNameTypeConstraint();
				}
				}
				this.state = 2220;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public createTablePartitionColumnSpec(): CreateTablePartitionColumnSpecContext {
		let _localctx: CreateTablePartitionColumnSpecContext = new CreateTablePartitionColumnSpecContext(this._ctx, this.state);
		this.enterRule(_localctx, 224, HiveSqlParser.RULE_createTablePartitionColumnSpec);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 2221;
			this.columnName();
			this.state = 2226;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === HiveSqlParser.COMMA) {
				{
				{
				this.state = 2222;
				this.match(HiveSqlParser.COMMA);
				this.state = 2223;
				this.columnName();
				}
				}
				this.state = 2228;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public partitionTransformSpec(): PartitionTransformSpecContext {
		let _localctx: PartitionTransformSpecContext = new PartitionTransformSpecContext(this._ctx, this.state);
		this.enterRule(_localctx, 226, HiveSqlParser.RULE_partitionTransformSpec);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 2229;
			this.columnNameTransformConstraint();
			this.state = 2234;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === HiveSqlParser.COMMA) {
				{
				{
				this.state = 2230;
				this.match(HiveSqlParser.COMMA);
				this.state = 2231;
				this.columnNameTransformConstraint();
				}
				}
				this.state = 2236;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public columnNameTransformConstraint(): ColumnNameTransformConstraintContext {
		let _localctx: ColumnNameTransformConstraintContext = new ColumnNameTransformConstraintContext(this._ctx, this.state);
		this.enterRule(_localctx, 228, HiveSqlParser.RULE_columnNameTransformConstraint);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 2237;
			this.partitionTransformType();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public partitionTransformType(): PartitionTransformTypeContext {
		let _localctx: PartitionTransformTypeContext = new PartitionTransformTypeContext(this._ctx, this.state);
		this.enterRule(_localctx, 230, HiveSqlParser.RULE_partitionTransformType);
		let _la: number;
		try {
			this.state = 2257;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 184, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 2239;
				this.columnName();
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 2244;
				this._errHandler.sync(this);
				switch (this._input.LA(1)) {
				case HiveSqlParser.KW_YEAR:
				case HiveSqlParser.KW_YEARS:
					{
					this.state = 2240;
					this.year();
					}
					break;
				case HiveSqlParser.KW_MONTH:
				case HiveSqlParser.KW_MONTHS:
					{
					this.state = 2241;
					this.month();
					}
					break;
				case HiveSqlParser.KW_DAY:
				case HiveSqlParser.KW_DAYS:
					{
					this.state = 2242;
					this.day();
					}
					break;
				case HiveSqlParser.KW_HOUR:
				case HiveSqlParser.KW_HOURS:
					{
					this.state = 2243;
					this.hour();
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				this.state = 2246;
				this.match(HiveSqlParser.LPAREN);
				this.state = 2247;
				this.columnName();
				this.state = 2248;
				this.match(HiveSqlParser.RPAREN);
				}
				break;

			case 3:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 2250;
				_la = this._input.LA(1);
				if (!(_la === HiveSqlParser.KW_BUCKET || _la === HiveSqlParser.KW_TRUNCATE)) {
				this._errHandler.recoverInline(this);
				} else {
					if (this._input.LA(1) === Token.EOF) {
						this.matchedEOF = true;
					}

					this._errHandler.reportMatch(this);
					this.consume();
				}
				this.state = 2251;
				this.match(HiveSqlParser.LPAREN);
				this.state = 2252;
				_localctx._value = this.match(HiveSqlParser.Number);
				this.state = 2253;
				this.match(HiveSqlParser.COMMA);
				this.state = 2254;
				this.columnName();
				this.state = 2255;
				this.match(HiveSqlParser.RPAREN);
				}
				break;
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public tableBuckets(): TableBucketsContext {
		let _localctx: TableBucketsContext = new TableBucketsContext(this._ctx, this.state);
		this.enterRule(_localctx, 232, HiveSqlParser.RULE_tableBuckets);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 2259;
			this.match(HiveSqlParser.KW_CLUSTERED);
			this.state = 2260;
			this.match(HiveSqlParser.KW_BY);
			this.state = 2261;
			this.match(HiveSqlParser.LPAREN);
			this.state = 2262;
			_localctx._bucketCols = this.columnNameList();
			this.state = 2263;
			this.match(HiveSqlParser.RPAREN);
			this.state = 2270;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === HiveSqlParser.KW_SORTED) {
				{
				this.state = 2264;
				this.match(HiveSqlParser.KW_SORTED);
				this.state = 2265;
				this.match(HiveSqlParser.KW_BY);
				this.state = 2266;
				this.match(HiveSqlParser.LPAREN);
				this.state = 2267;
				_localctx._sortCols = this.columnNameOrderList();
				this.state = 2268;
				this.match(HiveSqlParser.RPAREN);
				}
			}

			this.state = 2272;
			this.match(HiveSqlParser.KW_INTO);
			this.state = 2273;
			_localctx._num = this.match(HiveSqlParser.Number);
			this.state = 2274;
			this.match(HiveSqlParser.KW_BUCKETS);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public tableImplBuckets(): TableImplBucketsContext {
		let _localctx: TableImplBucketsContext = new TableImplBucketsContext(this._ctx, this.state);
		this.enterRule(_localctx, 234, HiveSqlParser.RULE_tableImplBuckets);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 2276;
			this.match(HiveSqlParser.KW_CLUSTERED);
			this.state = 2277;
			this.match(HiveSqlParser.KW_INTO);
			this.state = 2278;
			_localctx._num = this.match(HiveSqlParser.Number);
			this.state = 2279;
			this.match(HiveSqlParser.KW_BUCKETS);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public tableSkewed(): TableSkewedContext {
		let _localctx: TableSkewedContext = new TableSkewedContext(this._ctx, this.state);
		this.enterRule(_localctx, 236, HiveSqlParser.RULE_tableSkewed);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 2281;
			this.match(HiveSqlParser.KW_SKEWED);
			this.state = 2282;
			this.match(HiveSqlParser.KW_BY);
			this.state = 2283;
			this.match(HiveSqlParser.LPAREN);
			this.state = 2284;
			_localctx._skewedCols = this.columnNameList();
			this.state = 2285;
			this.match(HiveSqlParser.RPAREN);
			this.state = 2286;
			this.match(HiveSqlParser.KW_ON);
			this.state = 2287;
			this.match(HiveSqlParser.LPAREN);
			this.state = 2288;
			_localctx._skewedValues = this.skewedValueElement();
			this.state = 2289;
			this.match(HiveSqlParser.RPAREN);
			this.state = 2291;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 186, this._ctx) ) {
			case 1:
				{
				this.state = 2290;
				this.storedAsDirs();
				}
				break;
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public rowFormat(): RowFormatContext {
		let _localctx: RowFormatContext = new RowFormatContext(this._ctx, this.state);
		this.enterRule(_localctx, 238, HiveSqlParser.RULE_rowFormat);
		try {
			this.state = 2295;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 187, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 2293;
				this.rowFormatSerde();
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 2294;
				this.rowFormatDelimited();
				}
				break;
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public recordReader(): RecordReaderContext {
		let _localctx: RecordReaderContext = new RecordReaderContext(this._ctx, this.state);
		this.enterRule(_localctx, 240, HiveSqlParser.RULE_recordReader);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 2297;
			this.match(HiveSqlParser.KW_RECORDREADER);
			this.state = 2298;
			this.match(HiveSqlParser.StringLiteral);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public recordWriter(): RecordWriterContext {
		let _localctx: RecordWriterContext = new RecordWriterContext(this._ctx, this.state);
		this.enterRule(_localctx, 242, HiveSqlParser.RULE_recordWriter);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 2300;
			this.match(HiveSqlParser.KW_RECORDWRITER);
			this.state = 2301;
			this.match(HiveSqlParser.StringLiteral);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public rowFormatSerde(): RowFormatSerdeContext {
		let _localctx: RowFormatSerdeContext = new RowFormatSerdeContext(this._ctx, this.state);
		this.enterRule(_localctx, 244, HiveSqlParser.RULE_rowFormatSerde);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 2303;
			this.match(HiveSqlParser.KW_ROW);
			this.state = 2304;
			this.match(HiveSqlParser.KW_FORMAT);
			this.state = 2305;
			this.match(HiveSqlParser.KW_SERDE);
			this.state = 2306;
			_localctx._name = this.match(HiveSqlParser.StringLiteral);
			this.state = 2310;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 188, this._ctx) ) {
			case 1:
				{
				this.state = 2307;
				this.match(HiveSqlParser.KW_WITH);
				this.state = 2308;
				this.match(HiveSqlParser.KW_SERDEPROPERTIES);
				this.state = 2309;
				_localctx._serdeprops = this.tableProperties();
				}
				break;
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public rowFormatDelimited(): RowFormatDelimitedContext {
		let _localctx: RowFormatDelimitedContext = new RowFormatDelimitedContext(this._ctx, this.state);
		this.enterRule(_localctx, 246, HiveSqlParser.RULE_rowFormatDelimited);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 2312;
			this.match(HiveSqlParser.KW_ROW);
			this.state = 2313;
			this.match(HiveSqlParser.KW_FORMAT);
			this.state = 2314;
			this.match(HiveSqlParser.KW_DELIMITED);
			this.state = 2316;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === HiveSqlParser.KW_FIELDS) {
				{
				this.state = 2315;
				this.tableRowFormatFieldIdentifier();
				}
			}

			this.state = 2319;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === HiveSqlParser.KW_COLLECTION) {
				{
				this.state = 2318;
				this.tableRowFormatCollItemsIdentifier();
				}
			}

			this.state = 2322;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 191, this._ctx) ) {
			case 1:
				{
				this.state = 2321;
				this.tableRowFormatMapKeysIdentifier();
				}
				break;
			}
			this.state = 2325;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === HiveSqlParser.KW_LINES) {
				{
				this.state = 2324;
				this.tableRowFormatLinesIdentifier();
				}
			}

			this.state = 2328;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === HiveSqlParser.KW_NULL) {
				{
				this.state = 2327;
				this.tableRowNullFormat();
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public tableRowFormat(): TableRowFormatContext {
		let _localctx: TableRowFormatContext = new TableRowFormatContext(this._ctx, this.state);
		this.enterRule(_localctx, 248, HiveSqlParser.RULE_tableRowFormat);
		try {
			this.state = 2332;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 194, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 2330;
				this.rowFormatDelimited();
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 2331;
				this.rowFormatSerde();
				}
				break;
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public tablePropertiesPrefixed(): TablePropertiesPrefixedContext {
		let _localctx: TablePropertiesPrefixedContext = new TablePropertiesPrefixedContext(this._ctx, this.state);
		this.enterRule(_localctx, 250, HiveSqlParser.RULE_tablePropertiesPrefixed);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 2334;
			this.match(HiveSqlParser.KW_TBLPROPERTIES);
			this.state = 2335;
			this.tableProperties();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public tableProperties(): TablePropertiesContext {
		let _localctx: TablePropertiesContext = new TablePropertiesContext(this._ctx, this.state);
		this.enterRule(_localctx, 252, HiveSqlParser.RULE_tableProperties);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 2337;
			this.match(HiveSqlParser.LPAREN);
			this.state = 2338;
			this.tablePropertiesList();
			this.state = 2339;
			this.match(HiveSqlParser.RPAREN);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public tablePropertiesList(): TablePropertiesListContext {
		let _localctx: TablePropertiesListContext = new TablePropertiesListContext(this._ctx, this.state);
		this.enterRule(_localctx, 254, HiveSqlParser.RULE_tablePropertiesList);
		let _la: number;
		try {
			this.state = 2357;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 197, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 2341;
				this.keyValueProperty();
				this.state = 2346;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				while (_la === HiveSqlParser.COMMA) {
					{
					{
					this.state = 2342;
					this.match(HiveSqlParser.COMMA);
					this.state = 2343;
					this.keyValueProperty();
					}
					}
					this.state = 2348;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
				}
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 2349;
				this.keyProperty();
				this.state = 2354;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				while (_la === HiveSqlParser.COMMA) {
					{
					{
					this.state = 2350;
					this.match(HiveSqlParser.COMMA);
					this.state = 2351;
					this.keyProperty();
					}
					}
					this.state = 2356;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
				}
				}
				break;
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public keyValueProperty(): KeyValuePropertyContext {
		let _localctx: KeyValuePropertyContext = new KeyValuePropertyContext(this._ctx, this.state);
		this.enterRule(_localctx, 256, HiveSqlParser.RULE_keyValueProperty);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 2359;
			_localctx._key = this.match(HiveSqlParser.StringLiteral);
			this.state = 2360;
			this.match(HiveSqlParser.EQUAL);
			this.state = 2361;
			_localctx._value = this.match(HiveSqlParser.StringLiteral);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public keyProperty(): KeyPropertyContext {
		let _localctx: KeyPropertyContext = new KeyPropertyContext(this._ctx, this.state);
		this.enterRule(_localctx, 258, HiveSqlParser.RULE_keyProperty);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 2363;
			_localctx._key = this.match(HiveSqlParser.StringLiteral);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public tableRowFormatFieldIdentifier(): TableRowFormatFieldIdentifierContext {
		let _localctx: TableRowFormatFieldIdentifierContext = new TableRowFormatFieldIdentifierContext(this._ctx, this.state);
		this.enterRule(_localctx, 260, HiveSqlParser.RULE_tableRowFormatFieldIdentifier);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 2365;
			this.match(HiveSqlParser.KW_FIELDS);
			this.state = 2366;
			this.match(HiveSqlParser.KW_TERMINATED);
			this.state = 2367;
			this.match(HiveSqlParser.KW_BY);
			this.state = 2368;
			_localctx._fldIdnt = this.match(HiveSqlParser.StringLiteral);
			this.state = 2372;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === HiveSqlParser.KW_ESCAPED) {
				{
				this.state = 2369;
				this.match(HiveSqlParser.KW_ESCAPED);
				this.state = 2370;
				this.match(HiveSqlParser.KW_BY);
				this.state = 2371;
				_localctx._fldEscape = this.match(HiveSqlParser.StringLiteral);
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public tableRowFormatCollItemsIdentifier(): TableRowFormatCollItemsIdentifierContext {
		let _localctx: TableRowFormatCollItemsIdentifierContext = new TableRowFormatCollItemsIdentifierContext(this._ctx, this.state);
		this.enterRule(_localctx, 262, HiveSqlParser.RULE_tableRowFormatCollItemsIdentifier);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 2374;
			this.match(HiveSqlParser.KW_COLLECTION);
			this.state = 2375;
			this.match(HiveSqlParser.KW_ITEMS);
			this.state = 2376;
			this.match(HiveSqlParser.KW_TERMINATED);
			this.state = 2377;
			this.match(HiveSqlParser.KW_BY);
			this.state = 2378;
			_localctx._collIdnt = this.match(HiveSqlParser.StringLiteral);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public tableRowFormatMapKeysIdentifier(): TableRowFormatMapKeysIdentifierContext {
		let _localctx: TableRowFormatMapKeysIdentifierContext = new TableRowFormatMapKeysIdentifierContext(this._ctx, this.state);
		this.enterRule(_localctx, 264, HiveSqlParser.RULE_tableRowFormatMapKeysIdentifier);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 2380;
			this.match(HiveSqlParser.KW_MAP);
			this.state = 2381;
			this.match(HiveSqlParser.KW_KEYS);
			this.state = 2382;
			this.match(HiveSqlParser.KW_TERMINATED);
			this.state = 2383;
			this.match(HiveSqlParser.KW_BY);
			this.state = 2384;
			_localctx._mapKeysIdnt = this.match(HiveSqlParser.StringLiteral);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public tableRowFormatLinesIdentifier(): TableRowFormatLinesIdentifierContext {
		let _localctx: TableRowFormatLinesIdentifierContext = new TableRowFormatLinesIdentifierContext(this._ctx, this.state);
		this.enterRule(_localctx, 266, HiveSqlParser.RULE_tableRowFormatLinesIdentifier);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 2386;
			this.match(HiveSqlParser.KW_LINES);
			this.state = 2387;
			this.match(HiveSqlParser.KW_TERMINATED);
			this.state = 2388;
			this.match(HiveSqlParser.KW_BY);
			this.state = 2389;
			_localctx._linesIdnt = this.match(HiveSqlParser.StringLiteral);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public tableRowNullFormat(): TableRowNullFormatContext {
		let _localctx: TableRowNullFormatContext = new TableRowNullFormatContext(this._ctx, this.state);
		this.enterRule(_localctx, 268, HiveSqlParser.RULE_tableRowNullFormat);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 2391;
			this.match(HiveSqlParser.KW_NULL);
			this.state = 2392;
			this.match(HiveSqlParser.KW_DEFINED);
			this.state = 2393;
			this.match(HiveSqlParser.KW_AS);
			this.state = 2394;
			_localctx._nullIdnt = this.match(HiveSqlParser.StringLiteral);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public tableFileFormat(): TableFileFormatContext {
		let _localctx: TableFileFormatContext = new TableFileFormatContext(this._ctx, this.state);
		this.enterRule(_localctx, 270, HiveSqlParser.RULE_tableFileFormat);
		let _la: number;
		try {
			this.state = 2437;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 204, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 2396;
				this.match(HiveSqlParser.KW_STORED);
				this.state = 2397;
				this.match(HiveSqlParser.KW_AS);
				this.state = 2398;
				this.match(HiveSqlParser.KW_INPUTFORMAT);
				this.state = 2399;
				_localctx._inFmt = this.match(HiveSqlParser.StringLiteral);
				this.state = 2400;
				this.match(HiveSqlParser.KW_OUTPUTFORMAT);
				this.state = 2401;
				_localctx._outFmt = this.match(HiveSqlParser.StringLiteral);
				this.state = 2406;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === HiveSqlParser.KW_INPUTDRIVER) {
					{
					this.state = 2402;
					this.match(HiveSqlParser.KW_INPUTDRIVER);
					this.state = 2403;
					_localctx._inDriver = this.match(HiveSqlParser.StringLiteral);
					this.state = 2404;
					this.match(HiveSqlParser.KW_OUTPUTDRIVER);
					this.state = 2405;
					_localctx._outDriver = this.match(HiveSqlParser.StringLiteral);
					}
				}

				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 2408;
				this.match(HiveSqlParser.KW_STORED);
				this.state = 2409;
				this.match(HiveSqlParser.KW_BY);
				this.state = 2410;
				_localctx._storageHandler = this.match(HiveSqlParser.StringLiteral);
				this.state = 2414;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 200, this._ctx) ) {
				case 1:
					{
					this.state = 2411;
					this.match(HiveSqlParser.KW_WITH);
					this.state = 2412;
					this.match(HiveSqlParser.KW_SERDEPROPERTIES);
					this.state = 2413;
					_localctx._serdeprops = this.tableProperties();
					}
					break;
				}
				this.state = 2419;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === HiveSqlParser.KW_STORED) {
					{
					this.state = 2416;
					this.match(HiveSqlParser.KW_STORED);
					this.state = 2417;
					this.match(HiveSqlParser.KW_AS);
					this.state = 2418;
					_localctx._fileformat = this.id_();
					}
				}

				}
				break;

			case 3:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 2421;
				this.match(HiveSqlParser.KW_STORED);
				this.state = 2422;
				this.match(HiveSqlParser.KW_BY);
				this.state = 2423;
				_localctx._genericSpec = this.id_();
				this.state = 2427;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 202, this._ctx) ) {
				case 1:
					{
					this.state = 2424;
					this.match(HiveSqlParser.KW_WITH);
					this.state = 2425;
					this.match(HiveSqlParser.KW_SERDEPROPERTIES);
					this.state = 2426;
					_localctx._serdeprops = this.tableProperties();
					}
					break;
				}
				this.state = 2432;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === HiveSqlParser.KW_STORED) {
					{
					this.state = 2429;
					this.match(HiveSqlParser.KW_STORED);
					this.state = 2430;
					this.match(HiveSqlParser.KW_AS);
					this.state = 2431;
					_localctx._fileformat = this.id_();
					}
				}

				}
				break;

			case 4:
				this.enterOuterAlt(_localctx, 4);
				{
				this.state = 2434;
				this.match(HiveSqlParser.KW_STORED);
				this.state = 2435;
				this.match(HiveSqlParser.KW_AS);
				this.state = 2436;
				_localctx._genericSpec = this.id_();
				}
				break;
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public tableLocation(): TableLocationContext {
		let _localctx: TableLocationContext = new TableLocationContext(this._ctx, this.state);
		this.enterRule(_localctx, 272, HiveSqlParser.RULE_tableLocation);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 2439;
			this.match(HiveSqlParser.KW_LOCATION);
			this.state = 2440;
			_localctx._locn = this.match(HiveSqlParser.StringLiteral);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public columnNameTypeList(): ColumnNameTypeListContext {
		let _localctx: ColumnNameTypeListContext = new ColumnNameTypeListContext(this._ctx, this.state);
		this.enterRule(_localctx, 274, HiveSqlParser.RULE_columnNameTypeList);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 2442;
			this.columnNameType();
			this.state = 2447;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === HiveSqlParser.COMMA) {
				{
				{
				this.state = 2443;
				this.match(HiveSqlParser.COMMA);
				this.state = 2444;
				this.columnNameType();
				}
				}
				this.state = 2449;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public columnNameTypeOrConstraintList(): ColumnNameTypeOrConstraintListContext {
		let _localctx: ColumnNameTypeOrConstraintListContext = new ColumnNameTypeOrConstraintListContext(this._ctx, this.state);
		this.enterRule(_localctx, 276, HiveSqlParser.RULE_columnNameTypeOrConstraintList);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 2450;
			this.columnNameTypeOrConstraint();
			this.state = 2455;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === HiveSqlParser.COMMA) {
				{
				{
				this.state = 2451;
				this.match(HiveSqlParser.COMMA);
				this.state = 2452;
				this.columnNameTypeOrConstraint();
				}
				}
				this.state = 2457;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public columnNameColonTypeList(): ColumnNameColonTypeListContext {
		let _localctx: ColumnNameColonTypeListContext = new ColumnNameColonTypeListContext(this._ctx, this.state);
		this.enterRule(_localctx, 278, HiveSqlParser.RULE_columnNameColonTypeList);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 2458;
			this.columnNameColonType();
			this.state = 2463;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === HiveSqlParser.COMMA) {
				{
				{
				this.state = 2459;
				this.match(HiveSqlParser.COMMA);
				this.state = 2460;
				this.columnNameColonType();
				}
				}
				this.state = 2465;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public columnNameList(): ColumnNameListContext {
		let _localctx: ColumnNameListContext = new ColumnNameListContext(this._ctx, this.state);
		this.enterRule(_localctx, 280, HiveSqlParser.RULE_columnNameList);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 2466;
			this.columnName();
			this.state = 2471;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === HiveSqlParser.COMMA) {
				{
				{
				this.state = 2467;
				this.match(HiveSqlParser.COMMA);
				this.state = 2468;
				this.columnName();
				}
				}
				this.state = 2473;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public columnName(): ColumnNameContext {
		let _localctx: ColumnNameContext = new ColumnNameContext(this._ctx, this.state);
		this.enterRule(_localctx, 282, HiveSqlParser.RULE_columnName);
		try {
			let _alt: number;
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 2474;
			this.id_();
			this.state = 2479;
			this._errHandler.sync(this);
			_alt = this.interpreter.adaptivePredict(this._input, 209, this._ctx);
			while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) {
				if (_alt === 1) {
					{
					{
					this.state = 2475;
					this.match(HiveSqlParser.DOT);
					this.state = 2476;
					this.id_();
					}
					}
				}
				this.state = 2481;
				this._errHandler.sync(this);
				_alt = this.interpreter.adaptivePredict(this._input, 209, this._ctx);
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public columnNameCreate(): ColumnNameCreateContext {
		let _localctx: ColumnNameCreateContext = new ColumnNameCreateContext(this._ctx, this.state);
		this.enterRule(_localctx, 284, HiveSqlParser.RULE_columnNameCreate);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 2482;
			this.id_();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public extColumnName(): ExtColumnNameContext {
		let _localctx: ExtColumnNameContext = new ExtColumnNameContext(this._ctx, this.state);
		this.enterRule(_localctx, 286, HiveSqlParser.RULE_extColumnName);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 2484;
			this.columnName();
			this.state = 2494;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === HiveSqlParser.DOT) {
				{
				{
				this.state = 2485;
				this.match(HiveSqlParser.DOT);
				this.state = 2490;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 210, this._ctx) ) {
				case 1:
					{
					this.state = 2486;
					this.match(HiveSqlParser.KW_ELEM_TYPE);
					}
					break;

				case 2:
					{
					this.state = 2487;
					this.match(HiveSqlParser.KW_KEY_TYPE);
					}
					break;

				case 3:
					{
					this.state = 2488;
					this.match(HiveSqlParser.KW_VALUE_TYPE);
					}
					break;

				case 4:
					{
					this.state = 2489;
					this.id_();
					}
					break;
				}
				}
				}
				this.state = 2496;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public columnNameOrderList(): ColumnNameOrderListContext {
		let _localctx: ColumnNameOrderListContext = new ColumnNameOrderListContext(this._ctx, this.state);
		this.enterRule(_localctx, 288, HiveSqlParser.RULE_columnNameOrderList);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 2497;
			this.columnNameOrder();
			this.state = 2502;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === HiveSqlParser.COMMA) {
				{
				{
				this.state = 2498;
				this.match(HiveSqlParser.COMMA);
				this.state = 2499;
				this.columnNameOrder();
				}
				}
				this.state = 2504;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public columnParenthesesList(): ColumnParenthesesListContext {
		let _localctx: ColumnParenthesesListContext = new ColumnParenthesesListContext(this._ctx, this.state);
		this.enterRule(_localctx, 290, HiveSqlParser.RULE_columnParenthesesList);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 2505;
			this.match(HiveSqlParser.LPAREN);
			this.state = 2506;
			this.columnNameList();
			this.state = 2507;
			this.match(HiveSqlParser.RPAREN);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public enableValidateSpecification(): EnableValidateSpecificationContext {
		let _localctx: EnableValidateSpecificationContext = new EnableValidateSpecificationContext(this._ctx, this.state);
		this.enterRule(_localctx, 292, HiveSqlParser.RULE_enableValidateSpecification);
		let _la: number;
		try {
			this.state = 2514;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case HiveSqlParser.KW_DISABLE:
			case HiveSqlParser.KW_DISABLED:
			case HiveSqlParser.KW_ENABLE:
			case HiveSqlParser.KW_ENABLED:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 2509;
				this.enableSpecification();
				this.state = 2511;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === HiveSqlParser.KW_NOVALIDATE || _la === HiveSqlParser.KW_VALIDATE) {
					{
					this.state = 2510;
					this.validateSpecification();
					}
				}

				}
				break;
			case HiveSqlParser.KW_ENFORCED:
			case HiveSqlParser.KW_NOT:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 2513;
				this.enforcedSpecification();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public enableSpecification(): EnableSpecificationContext {
		let _localctx: EnableSpecificationContext = new EnableSpecificationContext(this._ctx, this.state);
		this.enterRule(_localctx, 294, HiveSqlParser.RULE_enableSpecification);
		try {
			this.state = 2518;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case HiveSqlParser.KW_ENABLE:
			case HiveSqlParser.KW_ENABLED:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 2516;
				this.enable();
				}
				break;
			case HiveSqlParser.KW_DISABLE:
			case HiveSqlParser.KW_DISABLED:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 2517;
				this.disable();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public validateSpecification(): ValidateSpecificationContext {
		let _localctx: ValidateSpecificationContext = new ValidateSpecificationContext(this._ctx, this.state);
		this.enterRule(_localctx, 296, HiveSqlParser.RULE_validateSpecification);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 2520;
			_la = this._input.LA(1);
			if (!(_la === HiveSqlParser.KW_NOVALIDATE || _la === HiveSqlParser.KW_VALIDATE)) {
			this._errHandler.recoverInline(this);
			} else {
				if (this._input.LA(1) === Token.EOF) {
					this.matchedEOF = true;
				}

				this._errHandler.reportMatch(this);
				this.consume();
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public enforcedSpecification(): EnforcedSpecificationContext {
		let _localctx: EnforcedSpecificationContext = new EnforcedSpecificationContext(this._ctx, this.state);
		this.enterRule(_localctx, 298, HiveSqlParser.RULE_enforcedSpecification);
		try {
			this.state = 2525;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case HiveSqlParser.KW_ENFORCED:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 2522;
				this.match(HiveSqlParser.KW_ENFORCED);
				}
				break;
			case HiveSqlParser.KW_NOT:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 2523;
				this.match(HiveSqlParser.KW_NOT);
				this.state = 2524;
				this.match(HiveSqlParser.KW_ENFORCED);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public relySpecification(): RelySpecificationContext {
		let _localctx: RelySpecificationContext = new RelySpecificationContext(this._ctx, this.state);
		this.enterRule(_localctx, 300, HiveSqlParser.RULE_relySpecification);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 2527;
			_la = this._input.LA(1);
			if (!(_la === HiveSqlParser.KW_NORELY || _la === HiveSqlParser.KW_RELY)) {
			this._errHandler.recoverInline(this);
			} else {
				if (this._input.LA(1) === Token.EOF) {
					this.matchedEOF = true;
				}

				this._errHandler.reportMatch(this);
				this.consume();
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public createConstraint(): CreateConstraintContext {
		let _localctx: CreateConstraintContext = new CreateConstraintContext(this._ctx, this.state);
		this.enterRule(_localctx, 302, HiveSqlParser.RULE_createConstraint);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 2531;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === HiveSqlParser.KW_CONSTRAINT) {
				{
				this.state = 2529;
				this.match(HiveSqlParser.KW_CONSTRAINT);
				this.state = 2530;
				_localctx._constraintName = this.id_();
				}
			}

			this.state = 2533;
			this.tableLevelConstraint();
			this.state = 2535;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (((((_la - 94)) & ~0x1F) === 0 && ((1 << (_la - 94)) & ((1 << (HiveSqlParser.KW_DISABLE - 94)) | (1 << (HiveSqlParser.KW_DISABLED - 94)) | (1 << (HiveSqlParser.KW_ENABLE - 94)) | (1 << (HiveSqlParser.KW_ENABLED - 94)) | (1 << (HiveSqlParser.KW_ENFORCED - 94)))) !== 0) || _la === HiveSqlParser.KW_NOT) {
				{
				this.state = 2534;
				this.constraintOptsCreate();
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public alterConstraintWithName(): AlterConstraintWithNameContext {
		let _localctx: AlterConstraintWithNameContext = new AlterConstraintWithNameContext(this._ctx, this.state);
		this.enterRule(_localctx, 304, HiveSqlParser.RULE_alterConstraintWithName);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 2537;
			this.match(HiveSqlParser.KW_CONSTRAINT);
			this.state = 2538;
			_localctx._constraintName = this.id_();
			this.state = 2539;
			this.tableLevelConstraint();
			this.state = 2541;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 219, this._ctx) ) {
			case 1:
				{
				this.state = 2540;
				this.constraintOptsAlter();
				}
				break;
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public tableLevelConstraint(): TableLevelConstraintContext {
		let _localctx: TableLevelConstraintContext = new TableLevelConstraintContext(this._ctx, this.state);
		this.enterRule(_localctx, 306, HiveSqlParser.RULE_tableLevelConstraint);
		try {
			this.state = 2545;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case HiveSqlParser.KW_PRIMARY:
			case HiveSqlParser.KW_UNIQUE:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 2543;
				this.pkUkConstraint();
				}
				break;
			case HiveSqlParser.KW_CHECK:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 2544;
				this.checkConstraint();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public pkUkConstraint(): PkUkConstraintContext {
		let _localctx: PkUkConstraintContext = new PkUkConstraintContext(this._ctx, this.state);
		this.enterRule(_localctx, 308, HiveSqlParser.RULE_pkUkConstraint);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 2547;
			this.tableConstraintType();
			this.state = 2548;
			_localctx._pkCols = this.columnParenthesesList();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public checkConstraint(): CheckConstraintContext {
		let _localctx: CheckConstraintContext = new CheckConstraintContext(this._ctx, this.state);
		this.enterRule(_localctx, 310, HiveSqlParser.RULE_checkConstraint);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 2550;
			this.match(HiveSqlParser.KW_CHECK);
			this.state = 2551;
			this.match(HiveSqlParser.LPAREN);
			this.state = 2552;
			this.expression();
			this.state = 2553;
			this.match(HiveSqlParser.RPAREN);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public createForeignKey(): CreateForeignKeyContext {
		let _localctx: CreateForeignKeyContext = new CreateForeignKeyContext(this._ctx, this.state);
		this.enterRule(_localctx, 312, HiveSqlParser.RULE_createForeignKey);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 2557;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === HiveSqlParser.KW_CONSTRAINT) {
				{
				this.state = 2555;
				this.match(HiveSqlParser.KW_CONSTRAINT);
				this.state = 2556;
				_localctx._constraintName = this.id_();
				}
			}

			this.state = 2559;
			this.match(HiveSqlParser.KW_FOREIGN);
			this.state = 2560;
			this.match(HiveSqlParser.KW_KEY);
			this.state = 2561;
			_localctx._fkCols = this.columnParenthesesList();
			this.state = 2562;
			this.match(HiveSqlParser.KW_REFERENCES);
			this.state = 2563;
			_localctx._tabName = this.tableName();
			this.state = 2564;
			_localctx._parCols = this.columnParenthesesList();
			this.state = 2566;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (((((_la - 94)) & ~0x1F) === 0 && ((1 << (_la - 94)) & ((1 << (HiveSqlParser.KW_DISABLE - 94)) | (1 << (HiveSqlParser.KW_DISABLED - 94)) | (1 << (HiveSqlParser.KW_ENABLE - 94)) | (1 << (HiveSqlParser.KW_ENABLED - 94)) | (1 << (HiveSqlParser.KW_ENFORCED - 94)))) !== 0) || _la === HiveSqlParser.KW_NOT) {
				{
				this.state = 2565;
				this.constraintOptsCreate();
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public alterForeignKeyWithName(): AlterForeignKeyWithNameContext {
		let _localctx: AlterForeignKeyWithNameContext = new AlterForeignKeyWithNameContext(this._ctx, this.state);
		this.enterRule(_localctx, 314, HiveSqlParser.RULE_alterForeignKeyWithName);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 2568;
			this.match(HiveSqlParser.KW_CONSTRAINT);
			this.state = 2569;
			_localctx._constraintName = this.id_();
			this.state = 2570;
			this.match(HiveSqlParser.KW_FOREIGN);
			this.state = 2571;
			this.match(HiveSqlParser.KW_KEY);
			this.state = 2572;
			_localctx._fkCols = this.columnParenthesesList();
			this.state = 2573;
			this.match(HiveSqlParser.KW_REFERENCES);
			this.state = 2574;
			_localctx._tabName = this.tableName();
			this.state = 2575;
			_localctx._parCols = this.columnParenthesesList();
			this.state = 2577;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 223, this._ctx) ) {
			case 1:
				{
				this.state = 2576;
				this.constraintOptsAlter();
				}
				break;
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public skewedValueElement(): SkewedValueElementContext {
		let _localctx: SkewedValueElementContext = new SkewedValueElementContext(this._ctx, this.state);
		this.enterRule(_localctx, 316, HiveSqlParser.RULE_skewedValueElement);
		try {
			this.state = 2581;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case HiveSqlParser.KW_CURRENT_DATE:
			case HiveSqlParser.KW_CURRENT_TIMESTAMP:
			case HiveSqlParser.KW_DATE:
			case HiveSqlParser.KW_FALSE:
			case HiveSqlParser.KW_NULL:
			case HiveSqlParser.KW_TIMESTAMP:
			case HiveSqlParser.KW_TIMESTAMPLOCALTZ:
			case HiveSqlParser.KW_TRUE:
			case HiveSqlParser.QUESTION:
			case HiveSqlParser.StringLiteral:
			case HiveSqlParser.IntegralLiteral:
			case HiveSqlParser.NumberLiteral:
			case HiveSqlParser.Number:
			case HiveSqlParser.CharSetName:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 2579;
				this.skewedColumnValues();
				}
				break;
			case HiveSqlParser.LPAREN:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 2580;
				this.skewedColumnValuePairList();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public skewedColumnValuePairList(): SkewedColumnValuePairListContext {
		let _localctx: SkewedColumnValuePairListContext = new SkewedColumnValuePairListContext(this._ctx, this.state);
		this.enterRule(_localctx, 318, HiveSqlParser.RULE_skewedColumnValuePairList);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 2583;
			this.skewedColumnValuePair();
			this.state = 2588;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === HiveSqlParser.COMMA) {
				{
				{
				this.state = 2584;
				this.match(HiveSqlParser.COMMA);
				this.state = 2585;
				this.skewedColumnValuePair();
				}
				}
				this.state = 2590;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public skewedColumnValuePair(): SkewedColumnValuePairContext {
		let _localctx: SkewedColumnValuePairContext = new SkewedColumnValuePairContext(this._ctx, this.state);
		this.enterRule(_localctx, 320, HiveSqlParser.RULE_skewedColumnValuePair);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 2591;
			this.match(HiveSqlParser.LPAREN);
			this.state = 2592;
			_localctx._colValues = this.skewedColumnValues();
			this.state = 2593;
			this.match(HiveSqlParser.RPAREN);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public skewedColumnValues(): SkewedColumnValuesContext {
		let _localctx: SkewedColumnValuesContext = new SkewedColumnValuesContext(this._ctx, this.state);
		this.enterRule(_localctx, 322, HiveSqlParser.RULE_skewedColumnValues);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 2595;
			this.skewedColumnValue();
			this.state = 2600;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === HiveSqlParser.COMMA) {
				{
				{
				this.state = 2596;
				this.match(HiveSqlParser.COMMA);
				this.state = 2597;
				this.skewedColumnValue();
				}
				}
				this.state = 2602;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public skewedColumnValue(): SkewedColumnValueContext {
		let _localctx: SkewedColumnValueContext = new SkewedColumnValueContext(this._ctx, this.state);
		this.enterRule(_localctx, 324, HiveSqlParser.RULE_skewedColumnValue);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 2603;
			this.constant();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public skewedValueLocationElement(): SkewedValueLocationElementContext {
		let _localctx: SkewedValueLocationElementContext = new SkewedValueLocationElementContext(this._ctx, this.state);
		this.enterRule(_localctx, 326, HiveSqlParser.RULE_skewedValueLocationElement);
		try {
			this.state = 2607;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case HiveSqlParser.KW_CURRENT_DATE:
			case HiveSqlParser.KW_CURRENT_TIMESTAMP:
			case HiveSqlParser.KW_DATE:
			case HiveSqlParser.KW_FALSE:
			case HiveSqlParser.KW_NULL:
			case HiveSqlParser.KW_TIMESTAMP:
			case HiveSqlParser.KW_TIMESTAMPLOCALTZ:
			case HiveSqlParser.KW_TRUE:
			case HiveSqlParser.QUESTION:
			case HiveSqlParser.StringLiteral:
			case HiveSqlParser.IntegralLiteral:
			case HiveSqlParser.NumberLiteral:
			case HiveSqlParser.Number:
			case HiveSqlParser.CharSetName:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 2605;
				this.skewedColumnValue();
				}
				break;
			case HiveSqlParser.LPAREN:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 2606;
				this.skewedColumnValuePair();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public orderSpecification(): OrderSpecificationContext {
		let _localctx: OrderSpecificationContext = new OrderSpecificationContext(this._ctx, this.state);
		this.enterRule(_localctx, 328, HiveSqlParser.RULE_orderSpecification);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 2609;
			_la = this._input.LA(1);
			if (!(_la === HiveSqlParser.KW_ASC || _la === HiveSqlParser.KW_DESC)) {
			this._errHandler.recoverInline(this);
			} else {
				if (this._input.LA(1) === Token.EOF) {
					this.matchedEOF = true;
				}

				this._errHandler.reportMatch(this);
				this.consume();
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public nullOrdering(): NullOrderingContext {
		let _localctx: NullOrderingContext = new NullOrderingContext(this._ctx, this.state);
		this.enterRule(_localctx, 330, HiveSqlParser.RULE_nullOrdering);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 2611;
			this.match(HiveSqlParser.KW_NULLS);
			this.state = 2612;
			_la = this._input.LA(1);
			if (!(_la === HiveSqlParser.KW_FIRST || _la === HiveSqlParser.KW_LAST)) {
			this._errHandler.recoverInline(this);
			} else {
				if (this._input.LA(1) === Token.EOF) {
					this.matchedEOF = true;
				}

				this._errHandler.reportMatch(this);
				this.consume();
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public columnNameOrder(): ColumnNameOrderContext {
		let _localctx: ColumnNameOrderContext = new ColumnNameOrderContext(this._ctx, this.state);
		this.enterRule(_localctx, 332, HiveSqlParser.RULE_columnNameOrder);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 2614;
			this.columnName();
			this.state = 2616;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === HiveSqlParser.KW_ASC || _la === HiveSqlParser.KW_DESC) {
				{
				this.state = 2615;
				_localctx._orderSpec = this.orderSpecification();
				}
			}

			this.state = 2619;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === HiveSqlParser.KW_NULLS) {
				{
				this.state = 2618;
				_localctx._nullSpec = this.nullOrdering();
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public columnNameCommentList(): ColumnNameCommentListContext {
		let _localctx: ColumnNameCommentListContext = new ColumnNameCommentListContext(this._ctx, this.state);
		this.enterRule(_localctx, 334, HiveSqlParser.RULE_columnNameCommentList);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 2621;
			this.columnNameComment();
			this.state = 2626;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === HiveSqlParser.COMMA) {
				{
				{
				this.state = 2622;
				this.match(HiveSqlParser.COMMA);
				this.state = 2623;
				this.columnNameComment();
				}
				}
				this.state = 2628;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public columnNameComment(): ColumnNameCommentContext {
		let _localctx: ColumnNameCommentContext = new ColumnNameCommentContext(this._ctx, this.state);
		this.enterRule(_localctx, 336, HiveSqlParser.RULE_columnNameComment);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 2629;
			_localctx._colName = this.columnNameCreate();
			this.state = 2632;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === HiveSqlParser.KW_COMMENT) {
				{
				this.state = 2630;
				this.match(HiveSqlParser.KW_COMMENT);
				this.state = 2631;
				_localctx._comment = this.match(HiveSqlParser.StringLiteral);
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public orderSpecificationRewrite(): OrderSpecificationRewriteContext {
		let _localctx: OrderSpecificationRewriteContext = new OrderSpecificationRewriteContext(this._ctx, this.state);
		this.enterRule(_localctx, 338, HiveSqlParser.RULE_orderSpecificationRewrite);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 2634;
			_la = this._input.LA(1);
			if (!(_la === HiveSqlParser.KW_ASC || _la === HiveSqlParser.KW_DESC)) {
			this._errHandler.recoverInline(this);
			} else {
				if (this._input.LA(1) === Token.EOF) {
					this.matchedEOF = true;
				}

				this._errHandler.reportMatch(this);
				this.consume();
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public columnRefOrder(): ColumnRefOrderContext {
		let _localctx: ColumnRefOrderContext = new ColumnRefOrderContext(this._ctx, this.state);
		this.enterRule(_localctx, 340, HiveSqlParser.RULE_columnRefOrder);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 2638;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 232, this._ctx) ) {
			case 1:
				{
				this.state = 2636;
				this.columnName();
				}
				break;

			case 2:
				{
				this.state = 2637;
				this.expression();
				}
				break;
			}
			this.state = 2641;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 233, this._ctx) ) {
			case 1:
				{
				this.state = 2640;
				_localctx._orderSpec = this.orderSpecificationRewrite();
				}
				break;
			}
			this.state = 2644;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === HiveSqlParser.KW_NULLS) {
				{
				this.state = 2643;
				_localctx._nullSpec = this.nullOrdering();
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public columnNameType(): ColumnNameTypeContext {
		let _localctx: ColumnNameTypeContext = new ColumnNameTypeContext(this._ctx, this.state);
		this.enterRule(_localctx, 342, HiveSqlParser.RULE_columnNameType);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 2646;
			_localctx._colName = this.columnNameCreate();
			this.state = 2647;
			this.colType();
			this.state = 2650;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === HiveSqlParser.KW_COMMENT) {
				{
				this.state = 2648;
				this.match(HiveSqlParser.KW_COMMENT);
				this.state = 2649;
				_localctx._comment = this.match(HiveSqlParser.StringLiteral);
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public columnNameTypeOrConstraint(): ColumnNameTypeOrConstraintContext {
		let _localctx: ColumnNameTypeOrConstraintContext = new ColumnNameTypeOrConstraintContext(this._ctx, this.state);
		this.enterRule(_localctx, 344, HiveSqlParser.RULE_columnNameTypeOrConstraint);
		try {
			this.state = 2654;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 236, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 2652;
				this.tableConstraint();
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 2653;
				this.columnNameTypeConstraint();
				}
				break;
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public tableConstraint(): TableConstraintContext {
		let _localctx: TableConstraintContext = new TableConstraintContext(this._ctx, this.state);
		this.enterRule(_localctx, 346, HiveSqlParser.RULE_tableConstraint);
		try {
			this.state = 2658;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 237, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 2656;
				this.createForeignKey();
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 2657;
				this.createConstraint();
				}
				break;
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public columnNameTypeConstraint(): ColumnNameTypeConstraintContext {
		let _localctx: ColumnNameTypeConstraintContext = new ColumnNameTypeConstraintContext(this._ctx, this.state);
		this.enterRule(_localctx, 348, HiveSqlParser.RULE_columnNameTypeConstraint);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 2660;
			_localctx._colName = this.columnNameCreate();
			this.state = 2661;
			this.colType();
			this.state = 2663;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === HiveSqlParser.KW_CHECK || _la === HiveSqlParser.KW_CONSTRAINT || _la === HiveSqlParser.KW_DEFAULT || _la === HiveSqlParser.KW_NOT || _la === HiveSqlParser.KW_PRIMARY || _la === HiveSqlParser.KW_REFERENCES || _la === HiveSqlParser.KW_UNIQUE) {
				{
				this.state = 2662;
				this.columnConstraint();
				}
			}

			this.state = 2667;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === HiveSqlParser.KW_COMMENT) {
				{
				this.state = 2665;
				this.match(HiveSqlParser.KW_COMMENT);
				this.state = 2666;
				_localctx._comment = this.match(HiveSqlParser.StringLiteral);
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public columnConstraint(): ColumnConstraintContext {
		let _localctx: ColumnConstraintContext = new ColumnConstraintContext(this._ctx, this.state);
		this.enterRule(_localctx, 350, HiveSqlParser.RULE_columnConstraint);
		try {
			this.state = 2671;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 240, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 2669;
				this.foreignKeyConstraint();
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 2670;
				this.colConstraint();
				}
				break;
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public foreignKeyConstraint(): ForeignKeyConstraintContext {
		let _localctx: ForeignKeyConstraintContext = new ForeignKeyConstraintContext(this._ctx, this.state);
		this.enterRule(_localctx, 352, HiveSqlParser.RULE_foreignKeyConstraint);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 2675;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === HiveSqlParser.KW_CONSTRAINT) {
				{
				this.state = 2673;
				this.match(HiveSqlParser.KW_CONSTRAINT);
				this.state = 2674;
				_localctx._constraintName = this.id_();
				}
			}

			this.state = 2677;
			this.match(HiveSqlParser.KW_REFERENCES);
			this.state = 2678;
			_localctx._tabName = this.tableName();
			this.state = 2679;
			this.match(HiveSqlParser.LPAREN);
			this.state = 2680;
			_localctx._colName = this.columnName();
			this.state = 2681;
			this.match(HiveSqlParser.RPAREN);
			this.state = 2683;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (((((_la - 94)) & ~0x1F) === 0 && ((1 << (_la - 94)) & ((1 << (HiveSqlParser.KW_DISABLE - 94)) | (1 << (HiveSqlParser.KW_DISABLED - 94)) | (1 << (HiveSqlParser.KW_ENABLE - 94)) | (1 << (HiveSqlParser.KW_ENABLED - 94)) | (1 << (HiveSqlParser.KW_ENFORCED - 94)))) !== 0) || _la === HiveSqlParser.KW_NOT) {
				{
				this.state = 2682;
				this.constraintOptsCreate();
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public colConstraint(): ColConstraintContext {
		let _localctx: ColConstraintContext = new ColConstraintContext(this._ctx, this.state);
		this.enterRule(_localctx, 354, HiveSqlParser.RULE_colConstraint);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 2687;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === HiveSqlParser.KW_CONSTRAINT) {
				{
				this.state = 2685;
				this.match(HiveSqlParser.KW_CONSTRAINT);
				this.state = 2686;
				_localctx._constraintName = this.id_();
				}
			}

			this.state = 2689;
			this.columnConstraintType();
			this.state = 2691;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (((((_la - 94)) & ~0x1F) === 0 && ((1 << (_la - 94)) & ((1 << (HiveSqlParser.KW_DISABLE - 94)) | (1 << (HiveSqlParser.KW_DISABLED - 94)) | (1 << (HiveSqlParser.KW_ENABLE - 94)) | (1 << (HiveSqlParser.KW_ENABLED - 94)) | (1 << (HiveSqlParser.KW_ENFORCED - 94)))) !== 0) || _la === HiveSqlParser.KW_NOT) {
				{
				this.state = 2690;
				this.constraintOptsCreate();
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public alterColumnConstraint(): AlterColumnConstraintContext {
		let _localctx: AlterColumnConstraintContext = new AlterColumnConstraintContext(this._ctx, this.state);
		this.enterRule(_localctx, 356, HiveSqlParser.RULE_alterColumnConstraint);
		try {
			this.state = 2695;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 245, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 2693;
				this.alterForeignKeyConstraint();
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 2694;
				this.alterColConstraint();
				}
				break;
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public alterForeignKeyConstraint(): AlterForeignKeyConstraintContext {
		let _localctx: AlterForeignKeyConstraintContext = new AlterForeignKeyConstraintContext(this._ctx, this.state);
		this.enterRule(_localctx, 358, HiveSqlParser.RULE_alterForeignKeyConstraint);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 2699;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === HiveSqlParser.KW_CONSTRAINT) {
				{
				this.state = 2697;
				this.match(HiveSqlParser.KW_CONSTRAINT);
				this.state = 2698;
				_localctx._constraintName = this.id_();
				}
			}

			this.state = 2701;
			this.match(HiveSqlParser.KW_REFERENCES);
			this.state = 2702;
			_localctx._tabName = this.tableName();
			this.state = 2703;
			this.match(HiveSqlParser.LPAREN);
			this.state = 2704;
			_localctx._colName = this.columnName();
			this.state = 2705;
			this.match(HiveSqlParser.RPAREN);
			this.state = 2707;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 247, this._ctx) ) {
			case 1:
				{
				this.state = 2706;
				this.constraintOptsAlter();
				}
				break;
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public alterColConstraint(): AlterColConstraintContext {
		let _localctx: AlterColConstraintContext = new AlterColConstraintContext(this._ctx, this.state);
		this.enterRule(_localctx, 360, HiveSqlParser.RULE_alterColConstraint);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 2711;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === HiveSqlParser.KW_CONSTRAINT) {
				{
				this.state = 2709;
				this.match(HiveSqlParser.KW_CONSTRAINT);
				this.state = 2710;
				_localctx._constraintName = this.id_();
				}
			}

			this.state = 2713;
			this.columnConstraintType();
			this.state = 2715;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 249, this._ctx) ) {
			case 1:
				{
				this.state = 2714;
				this.constraintOptsAlter();
				}
				break;
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public columnConstraintType(): ColumnConstraintTypeContext {
		let _localctx: ColumnConstraintTypeContext = new ColumnConstraintTypeContext(this._ctx, this.state);
		this.enterRule(_localctx, 362, HiveSqlParser.RULE_columnConstraintType);
		try {
			this.state = 2723;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case HiveSqlParser.KW_NOT:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 2717;
				this.match(HiveSqlParser.KW_NOT);
				this.state = 2718;
				this.match(HiveSqlParser.KW_NULL);
				}
				break;
			case HiveSqlParser.KW_DEFAULT:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 2719;
				this.match(HiveSqlParser.KW_DEFAULT);
				this.state = 2720;
				this.defaultVal();
				}
				break;
			case HiveSqlParser.KW_CHECK:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 2721;
				this.checkConstraint();
				}
				break;
			case HiveSqlParser.KW_PRIMARY:
			case HiveSqlParser.KW_UNIQUE:
				this.enterOuterAlt(_localctx, 4);
				{
				this.state = 2722;
				this.tableConstraintType();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public defaultVal(): DefaultValContext {
		let _localctx: DefaultValContext = new DefaultValContext(this._ctx, this.state);
		this.enterRule(_localctx, 364, HiveSqlParser.RULE_defaultVal);
		try {
			this.state = 2728;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 251, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 2725;
				this.constant();
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 2726;
				this.function_();
				}
				break;

			case 3:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 2727;
				this.castExpression();
				}
				break;
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public tableConstraintType(): TableConstraintTypeContext {
		let _localctx: TableConstraintTypeContext = new TableConstraintTypeContext(this._ctx, this.state);
		this.enterRule(_localctx, 366, HiveSqlParser.RULE_tableConstraintType);
		try {
			this.state = 2733;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case HiveSqlParser.KW_PRIMARY:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 2730;
				this.match(HiveSqlParser.KW_PRIMARY);
				this.state = 2731;
				this.match(HiveSqlParser.KW_KEY);
				}
				break;
			case HiveSqlParser.KW_UNIQUE:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 2732;
				this.match(HiveSqlParser.KW_UNIQUE);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public constraintOptsCreate(): ConstraintOptsCreateContext {
		let _localctx: ConstraintOptsCreateContext = new ConstraintOptsCreateContext(this._ctx, this.state);
		this.enterRule(_localctx, 368, HiveSqlParser.RULE_constraintOptsCreate);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 2735;
			this.enableValidateSpecification();
			this.state = 2737;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === HiveSqlParser.KW_NORELY || _la === HiveSqlParser.KW_RELY) {
				{
				this.state = 2736;
				this.relySpecification();
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public constraintOptsAlter(): ConstraintOptsAlterContext {
		let _localctx: ConstraintOptsAlterContext = new ConstraintOptsAlterContext(this._ctx, this.state);
		this.enterRule(_localctx, 370, HiveSqlParser.RULE_constraintOptsAlter);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 2739;
			this.enableValidateSpecification();
			this.state = 2741;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === HiveSqlParser.KW_NORELY || _la === HiveSqlParser.KW_RELY) {
				{
				this.state = 2740;
				this.relySpecification();
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public columnNameColonType(): ColumnNameColonTypeContext {
		let _localctx: ColumnNameColonTypeContext = new ColumnNameColonTypeContext(this._ctx, this.state);
		this.enterRule(_localctx, 372, HiveSqlParser.RULE_columnNameColonType);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 2743;
			_localctx._colName = this.columnNameCreate();
			this.state = 2744;
			this.match(HiveSqlParser.COLON);
			this.state = 2745;
			this.colType();
			this.state = 2748;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === HiveSqlParser.KW_COMMENT) {
				{
				this.state = 2746;
				this.match(HiveSqlParser.KW_COMMENT);
				this.state = 2747;
				_localctx._comment = this.match(HiveSqlParser.StringLiteral);
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public colType(): ColTypeContext {
		let _localctx: ColTypeContext = new ColTypeContext(this._ctx, this.state);
		this.enterRule(_localctx, 374, HiveSqlParser.RULE_colType);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 2750;
			this.type();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public colTypeList(): ColTypeListContext {
		let _localctx: ColTypeListContext = new ColTypeListContext(this._ctx, this.state);
		this.enterRule(_localctx, 376, HiveSqlParser.RULE_colTypeList);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 2752;
			this.colType();
			this.state = 2757;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === HiveSqlParser.COMMA) {
				{
				{
				this.state = 2753;
				this.match(HiveSqlParser.COMMA);
				this.state = 2754;
				this.colType();
				}
				}
				this.state = 2759;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public type(): TypeContext {
		let _localctx: TypeContext = new TypeContext(this._ctx, this.state);
		this.enterRule(_localctx, 378, HiveSqlParser.RULE_type);
		try {
			this.state = 2765;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case HiveSqlParser.KW_BIGINT:
			case HiveSqlParser.KW_BINARY:
			case HiveSqlParser.KW_BOOLEAN:
			case HiveSqlParser.KW_CHAR:
			case HiveSqlParser.KW_DATE:
			case HiveSqlParser.KW_DATETIME:
			case HiveSqlParser.KW_DEC:
			case HiveSqlParser.KW_DECIMAL:
			case HiveSqlParser.KW_NUMERIC:
			case HiveSqlParser.KW_DOUBLE:
			case HiveSqlParser.KW_FLOAT:
			case HiveSqlParser.KW_INT:
			case HiveSqlParser.KW_INTEGER:
			case HiveSqlParser.KW_REAL:
			case HiveSqlParser.KW_SMALLINT:
			case HiveSqlParser.KW_STRING:
			case HiveSqlParser.KW_TIMESTAMP:
			case HiveSqlParser.KW_TIMESTAMPLOCALTZ:
			case HiveSqlParser.KW_TINYINT:
			case HiveSqlParser.KW_VARCHAR:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 2760;
				this.primitiveType();
				}
				break;
			case HiveSqlParser.KW_ARRAY:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 2761;
				this.listType();
				}
				break;
			case HiveSqlParser.KW_STRUCT:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 2762;
				this.structType();
				}
				break;
			case HiveSqlParser.KW_MAP:
				this.enterOuterAlt(_localctx, 4);
				{
				this.state = 2763;
				this.mapType();
				}
				break;
			case HiveSqlParser.KW_UNIONTYPE:
				this.enterOuterAlt(_localctx, 5);
				{
				this.state = 2764;
				this.unionType();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public primitiveType(): PrimitiveTypeContext {
		let _localctx: PrimitiveTypeContext = new PrimitiveTypeContext(this._ctx, this.state);
		this.enterRule(_localctx, 380, HiveSqlParser.RULE_primitiveType);
		let _la: number;
		try {
			this.state = 2804;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 261, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 2767;
				this.match(HiveSqlParser.KW_TINYINT);
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 2768;
				this.match(HiveSqlParser.KW_SMALLINT);
				}
				break;

			case 3:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 2769;
				this.match(HiveSqlParser.KW_INT);
				}
				break;

			case 4:
				this.enterOuterAlt(_localctx, 4);
				{
				this.state = 2770;
				this.match(HiveSqlParser.KW_INTEGER);
				}
				break;

			case 5:
				this.enterOuterAlt(_localctx, 5);
				{
				this.state = 2771;
				this.match(HiveSqlParser.KW_BIGINT);
				}
				break;

			case 6:
				this.enterOuterAlt(_localctx, 6);
				{
				this.state = 2772;
				this.match(HiveSqlParser.KW_BOOLEAN);
				}
				break;

			case 7:
				this.enterOuterAlt(_localctx, 7);
				{
				this.state = 2773;
				this.match(HiveSqlParser.KW_FLOAT);
				}
				break;

			case 8:
				this.enterOuterAlt(_localctx, 8);
				{
				this.state = 2774;
				this.match(HiveSqlParser.KW_REAL);
				}
				break;

			case 9:
				this.enterOuterAlt(_localctx, 9);
				{
				this.state = 2775;
				this.match(HiveSqlParser.KW_DOUBLE);
				this.state = 2777;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === HiveSqlParser.KW_PRECISION) {
					{
					this.state = 2776;
					this.match(HiveSqlParser.KW_PRECISION);
					}
				}

				}
				break;

			case 10:
				this.enterOuterAlt(_localctx, 10);
				{
				this.state = 2779;
				this.match(HiveSqlParser.KW_DATE);
				}
				break;

			case 11:
				this.enterOuterAlt(_localctx, 11);
				{
				this.state = 2780;
				this.match(HiveSqlParser.KW_DATETIME);
				}
				break;

			case 12:
				this.enterOuterAlt(_localctx, 12);
				{
				this.state = 2781;
				this.match(HiveSqlParser.KW_TIMESTAMP);
				}
				break;

			case 13:
				this.enterOuterAlt(_localctx, 13);
				{
				this.state = 2782;
				this.match(HiveSqlParser.KW_TIMESTAMPLOCALTZ);
				}
				break;

			case 14:
				this.enterOuterAlt(_localctx, 14);
				{
				this.state = 2783;
				this.match(HiveSqlParser.KW_TIMESTAMP);
				this.state = 2784;
				this.match(HiveSqlParser.KW_WITH);
				this.state = 2785;
				this.match(HiveSqlParser.KW_LOCAL);
				this.state = 2786;
				this.match(HiveSqlParser.KW_TIME);
				this.state = 2787;
				this.match(HiveSqlParser.KW_ZONE);
				}
				break;

			case 15:
				this.enterOuterAlt(_localctx, 15);
				{
				this.state = 2788;
				this.match(HiveSqlParser.KW_STRING);
				}
				break;

			case 16:
				this.enterOuterAlt(_localctx, 16);
				{
				this.state = 2789;
				this.match(HiveSqlParser.KW_BINARY);
				}
				break;

			case 17:
				this.enterOuterAlt(_localctx, 17);
				{
				this.state = 2790;
				this.decimal();
				this.state = 2798;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 260, this._ctx) ) {
				case 1:
					{
					this.state = 2791;
					this.match(HiveSqlParser.LPAREN);
					this.state = 2792;
					_localctx._prec = this.match(HiveSqlParser.Number);
					this.state = 2795;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
					if (_la === HiveSqlParser.COMMA) {
						{
						this.state = 2793;
						this.match(HiveSqlParser.COMMA);
						this.state = 2794;
						_localctx._scale = this.match(HiveSqlParser.Number);
						}
					}

					this.state = 2797;
					this.match(HiveSqlParser.RPAREN);
					}
					break;
				}
				}
				break;

			case 18:
				this.enterOuterAlt(_localctx, 18);
				{
				this.state = 2800;
				_la = this._input.LA(1);
				if (!(_la === HiveSqlParser.KW_CHAR || _la === HiveSqlParser.KW_VARCHAR)) {
				this._errHandler.recoverInline(this);
				} else {
					if (this._input.LA(1) === Token.EOF) {
						this.matchedEOF = true;
					}

					this._errHandler.reportMatch(this);
					this.consume();
				}
				this.state = 2801;
				this.match(HiveSqlParser.LPAREN);
				this.state = 2802;
				_localctx._length = this.match(HiveSqlParser.Number);
				this.state = 2803;
				this.match(HiveSqlParser.RPAREN);
				}
				break;
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public listType(): ListTypeContext {
		let _localctx: ListTypeContext = new ListTypeContext(this._ctx, this.state);
		this.enterRule(_localctx, 382, HiveSqlParser.RULE_listType);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 2806;
			this.match(HiveSqlParser.KW_ARRAY);
			this.state = 2807;
			this.match(HiveSqlParser.LESSTHAN);
			this.state = 2808;
			this.type();
			this.state = 2809;
			this.match(HiveSqlParser.GREATERTHAN);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public structType(): StructTypeContext {
		let _localctx: StructTypeContext = new StructTypeContext(this._ctx, this.state);
		this.enterRule(_localctx, 384, HiveSqlParser.RULE_structType);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 2811;
			this.match(HiveSqlParser.KW_STRUCT);
			this.state = 2812;
			this.match(HiveSqlParser.LESSTHAN);
			this.state = 2813;
			this.columnNameColonTypeList();
			this.state = 2814;
			this.match(HiveSqlParser.GREATERTHAN);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public mapType(): MapTypeContext {
		let _localctx: MapTypeContext = new MapTypeContext(this._ctx, this.state);
		this.enterRule(_localctx, 386, HiveSqlParser.RULE_mapType);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 2816;
			this.match(HiveSqlParser.KW_MAP);
			this.state = 2817;
			this.match(HiveSqlParser.LESSTHAN);
			this.state = 2818;
			_localctx._left = this.primitiveType();
			this.state = 2819;
			this.match(HiveSqlParser.COMMA);
			this.state = 2820;
			_localctx._right = this.type();
			this.state = 2821;
			this.match(HiveSqlParser.GREATERTHAN);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public unionType(): UnionTypeContext {
		let _localctx: UnionTypeContext = new UnionTypeContext(this._ctx, this.state);
		this.enterRule(_localctx, 388, HiveSqlParser.RULE_unionType);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 2823;
			this.match(HiveSqlParser.KW_UNIONTYPE);
			this.state = 2824;
			this.match(HiveSqlParser.LESSTHAN);
			this.state = 2825;
			this.colTypeList();
			this.state = 2826;
			this.match(HiveSqlParser.GREATERTHAN);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public setOperator(): SetOperatorContext {
		let _localctx: SetOperatorContext = new SetOperatorContext(this._ctx, this.state);
		this.enterRule(_localctx, 390, HiveSqlParser.RULE_setOperator);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 2828;
			_la = this._input.LA(1);
			if (!(_la === HiveSqlParser.KW_EXCEPT || _la === HiveSqlParser.KW_INTERSECT || _la === HiveSqlParser.KW_MINUS || _la === HiveSqlParser.KW_UNION)) {
			this._errHandler.recoverInline(this);
			} else {
				if (this._input.LA(1) === Token.EOF) {
					this.matchedEOF = true;
				}

				this._errHandler.reportMatch(this);
				this.consume();
			}
			this.state = 2830;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === HiveSqlParser.KW_ALL || _la === HiveSqlParser.KW_DISTINCT) {
				{
				this.state = 2829;
				_la = this._input.LA(1);
				if (!(_la === HiveSqlParser.KW_ALL || _la === HiveSqlParser.KW_DISTINCT)) {
				this._errHandler.recoverInline(this);
				} else {
					if (this._input.LA(1) === Token.EOF) {
						this.matchedEOF = true;
					}

					this._errHandler.reportMatch(this);
					this.consume();
				}
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public queryStatementExpression(): QueryStatementExpressionContext {
		let _localctx: QueryStatementExpressionContext = new QueryStatementExpressionContext(this._ctx, this.state);
		this.enterRule(_localctx, 392, HiveSqlParser.RULE_queryStatementExpression);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 2833;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === HiveSqlParser.KW_WITH) {
				{
				this.state = 2832;
				_localctx._w = this.withClause();
				}
			}

			this.state = 2835;
			this.queryStatementExpressionBody();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public queryStatementExpressionBody(): QueryStatementExpressionBodyContext {
		let _localctx: QueryStatementExpressionBodyContext = new QueryStatementExpressionBodyContext(this._ctx, this.state);
		this.enterRule(_localctx, 394, HiveSqlParser.RULE_queryStatementExpressionBody);
		try {
			this.state = 2839;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case HiveSqlParser.KW_FROM:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 2837;
				this.fromStatement();
				}
				break;
			case HiveSqlParser.KW_INSERT:
			case HiveSqlParser.KW_MAP:
			case HiveSqlParser.KW_REDUCE:
			case HiveSqlParser.KW_SELECT:
			case HiveSqlParser.KW_VALUES:
			case HiveSqlParser.LPAREN:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 2838;
				this.regularBody();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public withClause(): WithClauseContext {
		let _localctx: WithClauseContext = new WithClauseContext(this._ctx, this.state);
		this.enterRule(_localctx, 396, HiveSqlParser.RULE_withClause);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 2841;
			this.match(HiveSqlParser.KW_WITH);
			this.state = 2842;
			this.cteStatement();
			this.state = 2847;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === HiveSqlParser.COMMA) {
				{
				{
				this.state = 2843;
				this.match(HiveSqlParser.COMMA);
				this.state = 2844;
				this.cteStatement();
				}
				}
				this.state = 2849;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public cteStatement(): CteStatementContext {
		let _localctx: CteStatementContext = new CteStatementContext(this._ctx, this.state);
		this.enterRule(_localctx, 398, HiveSqlParser.RULE_cteStatement);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 2850;
			this.id_();
			this.state = 2855;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === HiveSqlParser.LPAREN) {
				{
				this.state = 2851;
				this.match(HiveSqlParser.LPAREN);
				this.state = 2852;
				_localctx._colAliases = this.columnNameList();
				this.state = 2853;
				this.match(HiveSqlParser.RPAREN);
				}
			}

			this.state = 2857;
			this.match(HiveSqlParser.KW_AS);
			this.state = 2858;
			this.match(HiveSqlParser.LPAREN);
			this.state = 2859;
			this.queryStatementExpression();
			this.state = 2860;
			this.match(HiveSqlParser.RPAREN);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public fromStatement(): FromStatementContext {
		let _localctx: FromStatementContext = new FromStatementContext(this._ctx, this.state);
		this.enterRule(_localctx, 400, HiveSqlParser.RULE_fromStatement);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 2862;
			this.singleFromStatement();
			this.state = 2868;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === HiveSqlParser.KW_EXCEPT || _la === HiveSqlParser.KW_INTERSECT || _la === HiveSqlParser.KW_MINUS || _la === HiveSqlParser.KW_UNION) {
				{
				{
				this.state = 2863;
				_localctx._u = this.setOperator();
				this.state = 2864;
				_localctx._r = this.singleFromStatement();
				}
				}
				this.state = 2870;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public singleFromStatement(): SingleFromStatementContext {
		let _localctx: SingleFromStatementContext = new SingleFromStatementContext(this._ctx, this.state);
		this.enterRule(_localctx, 402, HiveSqlParser.RULE_singleFromStatement);
		try {
			let _alt: number;
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 2871;
			this.fromClause();
			this.state = 2873;
			this._errHandler.sync(this);
			_alt = 1;
			do {
				switch (_alt) {
				case 1:
					{
					{
					this.state = 2872;
					_localctx._body = this.body();
					_localctx._b.push(_localctx._body);
					}
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				this.state = 2875;
				this._errHandler.sync(this);
				_alt = this.interpreter.adaptivePredict(this._input, 268, this._ctx);
			} while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public regularBody(): RegularBodyContext {
		let _localctx: RegularBodyContext = new RegularBodyContext(this._ctx, this.state);
		this.enterRule(_localctx, 404, HiveSqlParser.RULE_regularBody);
		try {
			this.state = 2881;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case HiveSqlParser.KW_INSERT:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 2877;
				_localctx._i = this.insertClause();
				this.state = 2878;
				_localctx._s = this.selectStatement();
				}
				break;
			case HiveSqlParser.KW_MAP:
			case HiveSqlParser.KW_REDUCE:
			case HiveSqlParser.KW_SELECT:
			case HiveSqlParser.KW_VALUES:
			case HiveSqlParser.LPAREN:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 2880;
				this.selectStatement();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public atomSelectStatement(): AtomSelectStatementContext {
		let _localctx: AtomSelectStatementContext = new AtomSelectStatementContext(this._ctx, this.state);
		this.enterRule(_localctx, 406, HiveSqlParser.RULE_atomSelectStatement);
		let _la: number;
		try {
			this.state = 2907;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case HiveSqlParser.KW_MAP:
			case HiveSqlParser.KW_REDUCE:
			case HiveSqlParser.KW_SELECT:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 2883;
				_localctx._s = this.selectClause();
				this.state = 2885;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 270, this._ctx) ) {
				case 1:
					{
					this.state = 2884;
					_localctx._f = this.fromClause();
					}
					break;
				}
				this.state = 2888;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === HiveSqlParser.KW_WHERE) {
					{
					this.state = 2887;
					_localctx._w = this.whereClause();
					}
				}

				this.state = 2891;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === HiveSqlParser.KW_GROUP) {
					{
					this.state = 2890;
					_localctx._g = this.groupByClause();
					}
				}

				this.state = 2894;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === HiveSqlParser.KW_HAVING) {
					{
					this.state = 2893;
					_localctx._h = this.havingClause();
					}
				}

				this.state = 2897;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === HiveSqlParser.KW_WINDOW) {
					{
					this.state = 2896;
					_localctx._win = this.window_clause();
					}
				}

				this.state = 2900;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === HiveSqlParser.KW_QUALIFY) {
					{
					this.state = 2899;
					_localctx._q = this.qualifyClause();
					}
				}

				}
				break;
			case HiveSqlParser.LPAREN:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 2902;
				this.match(HiveSqlParser.LPAREN);
				this.state = 2903;
				this.selectStatement();
				this.state = 2904;
				this.match(HiveSqlParser.RPAREN);
				}
				break;
			case HiveSqlParser.KW_VALUES:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 2906;
				this.valuesSource();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public selectStatement(): SelectStatementContext {
		let _localctx: SelectStatementContext = new SelectStatementContext(this._ctx, this.state);
		this.enterRule(_localctx, 408, HiveSqlParser.RULE_selectStatement);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 2909;
			_localctx._a = this.atomSelectStatement();
			this.state = 2911;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === HiveSqlParser.KW_EXCEPT || _la === HiveSqlParser.KW_INTERSECT || _la === HiveSqlParser.KW_MINUS || _la === HiveSqlParser.KW_UNION) {
				{
				this.state = 2910;
				_localctx._set = this.setOpSelectStatement();
				}
			}

			this.state = 2914;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === HiveSqlParser.KW_ORDER) {
				{
				this.state = 2913;
				_localctx._o = this.orderByClause();
				}
			}

			this.state = 2917;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === HiveSqlParser.KW_CLUSTER) {
				{
				this.state = 2916;
				_localctx._c = this.clusterByClause();
				}
			}

			this.state = 2920;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === HiveSqlParser.KW_DISTRIBUTE) {
				{
				this.state = 2919;
				_localctx._d = this.distributeByClause();
				}
			}

			this.state = 2923;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === HiveSqlParser.KW_SORT) {
				{
				this.state = 2922;
				_localctx._sort = this.sortByClause();
				}
			}

			this.state = 2926;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === HiveSqlParser.KW_LIMIT) {
				{
				this.state = 2925;
				_localctx._l = this.limitClause();
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public setOpSelectStatement(): SetOpSelectStatementContext {
		let _localctx: SetOpSelectStatementContext = new SetOpSelectStatementContext(this._ctx, this.state);
		this.enterRule(_localctx, 410, HiveSqlParser.RULE_setOpSelectStatement);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 2931;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			do {
				{
				{
				this.state = 2928;
				_localctx._u = this.setOperator();
				this.state = 2929;
				_localctx._b = this.atomSelectStatement();
				}
				}
				this.state = 2933;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			} while (_la === HiveSqlParser.KW_EXCEPT || _la === HiveSqlParser.KW_INTERSECT || _la === HiveSqlParser.KW_MINUS || _la === HiveSqlParser.KW_UNION);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public selectStatementWithCTE(): SelectStatementWithCTEContext {
		let _localctx: SelectStatementWithCTEContext = new SelectStatementWithCTEContext(this._ctx, this.state);
		this.enterRule(_localctx, 412, HiveSqlParser.RULE_selectStatementWithCTE);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 2936;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === HiveSqlParser.KW_WITH) {
				{
				this.state = 2935;
				_localctx._w = this.withClause();
				}
			}

			this.state = 2938;
			this.selectStatement();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public body(): BodyContext {
		let _localctx: BodyContext = new BodyContext(this._ctx, this.state);
		this.enterRule(_localctx, 414, HiveSqlParser.RULE_body);
		let _la: number;
		try {
			this.state = 3009;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case HiveSqlParser.KW_INSERT:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 2940;
				this.insertClause();
				this.state = 2941;
				this.selectClause();
				this.state = 2943;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === HiveSqlParser.KW_LATERAL || _la === HiveSqlParser.COMMA) {
					{
					this.state = 2942;
					this.lateralView();
					}
				}

				this.state = 2946;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === HiveSqlParser.KW_WHERE) {
					{
					this.state = 2945;
					this.whereClause();
					}
				}

				this.state = 2949;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === HiveSqlParser.KW_GROUP) {
					{
					this.state = 2948;
					this.groupByClause();
					}
				}

				this.state = 2952;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === HiveSqlParser.KW_HAVING) {
					{
					this.state = 2951;
					this.havingClause();
					}
				}

				this.state = 2955;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === HiveSqlParser.KW_WINDOW) {
					{
					this.state = 2954;
					this.window_clause();
					}
				}

				this.state = 2958;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === HiveSqlParser.KW_QUALIFY) {
					{
					this.state = 2957;
					this.qualifyClause();
					}
				}

				this.state = 2961;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === HiveSqlParser.KW_ORDER) {
					{
					this.state = 2960;
					this.orderByClause();
					}
				}

				this.state = 2964;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === HiveSqlParser.KW_CLUSTER) {
					{
					this.state = 2963;
					this.clusterByClause();
					}
				}

				this.state = 2967;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === HiveSqlParser.KW_DISTRIBUTE) {
					{
					this.state = 2966;
					this.distributeByClause();
					}
				}

				this.state = 2970;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === HiveSqlParser.KW_SORT) {
					{
					this.state = 2969;
					this.sortByClause();
					}
				}

				this.state = 2973;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === HiveSqlParser.KW_LIMIT) {
					{
					this.state = 2972;
					this.limitClause();
					}
				}

				}
				break;
			case HiveSqlParser.KW_MAP:
			case HiveSqlParser.KW_REDUCE:
			case HiveSqlParser.KW_SELECT:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 2975;
				this.selectClause();
				this.state = 2977;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === HiveSqlParser.KW_LATERAL || _la === HiveSqlParser.COMMA) {
					{
					this.state = 2976;
					this.lateralView();
					}
				}

				this.state = 2980;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === HiveSqlParser.KW_WHERE) {
					{
					this.state = 2979;
					this.whereClause();
					}
				}

				this.state = 2983;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === HiveSqlParser.KW_GROUP) {
					{
					this.state = 2982;
					this.groupByClause();
					}
				}

				this.state = 2986;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === HiveSqlParser.KW_HAVING) {
					{
					this.state = 2985;
					this.havingClause();
					}
				}

				this.state = 2989;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === HiveSqlParser.KW_WINDOW) {
					{
					this.state = 2988;
					this.window_clause();
					}
				}

				this.state = 2992;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === HiveSqlParser.KW_QUALIFY) {
					{
					this.state = 2991;
					this.qualifyClause();
					}
				}

				this.state = 2995;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === HiveSqlParser.KW_ORDER) {
					{
					this.state = 2994;
					this.orderByClause();
					}
				}

				this.state = 2998;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === HiveSqlParser.KW_CLUSTER) {
					{
					this.state = 2997;
					this.clusterByClause();
					}
				}

				this.state = 3001;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === HiveSqlParser.KW_DISTRIBUTE) {
					{
					this.state = 3000;
					this.distributeByClause();
					}
				}

				this.state = 3004;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === HiveSqlParser.KW_SORT) {
					{
					this.state = 3003;
					this.sortByClause();
					}
				}

				this.state = 3007;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === HiveSqlParser.KW_LIMIT) {
					{
					this.state = 3006;
					this.limitClause();
					}
				}

				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public insertClause(): InsertClauseContext {
		let _localctx: InsertClauseContext = new InsertClauseContext(this._ctx, this.state);
		this.enterRule(_localctx, 416, HiveSqlParser.RULE_insertClause);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3011;
			this.match(HiveSqlParser.KW_INSERT);
			this.state = 3028;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case HiveSqlParser.KW_OVERWRITE:
				{
				this.state = 3012;
				this.match(HiveSqlParser.KW_OVERWRITE);
				this.state = 3013;
				this.destination();
				this.state = 3015;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === HiveSqlParser.KW_IF) {
					{
					this.state = 3014;
					this.ifNotExists();
					}
				}

				}
				break;
			case HiveSqlParser.KW_INTO:
				{
				this.state = 3017;
				this.match(HiveSqlParser.KW_INTO);
				this.state = 3019;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === HiveSqlParser.KW_TABLE) {
					{
					this.state = 3018;
					this.match(HiveSqlParser.KW_TABLE);
					}
				}

				this.state = 3021;
				this.tableOrPartition();
				this.state = 3026;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 310, this._ctx) ) {
				case 1:
					{
					this.state = 3022;
					this.match(HiveSqlParser.LPAREN);
					this.state = 3023;
					_localctx._targetCols = this.columnNameList();
					this.state = 3024;
					this.match(HiveSqlParser.RPAREN);
					}
					break;
				}
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public destination(): DestinationContext {
		let _localctx: DestinationContext = new DestinationContext(this._ctx, this.state);
		this.enterRule(_localctx, 418, HiveSqlParser.RULE_destination);
		let _la: number;
		try {
			this.state = 3043;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case HiveSqlParser.KW_DIRECTORY:
			case HiveSqlParser.KW_LOCAL:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 3031;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === HiveSqlParser.KW_LOCAL) {
					{
					this.state = 3030;
					_localctx._local = this.match(HiveSqlParser.KW_LOCAL);
					}
				}

				this.state = 3033;
				this.match(HiveSqlParser.KW_DIRECTORY);
				this.state = 3034;
				this.match(HiveSqlParser.StringLiteral);
				this.state = 3036;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === HiveSqlParser.KW_ROW) {
					{
					this.state = 3035;
					this.tableRowFormat();
					}
				}

				this.state = 3039;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === HiveSqlParser.KW_STORED) {
					{
					this.state = 3038;
					this.tableFileFormat();
					}
				}

				}
				break;
			case HiveSqlParser.KW_TABLE:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 3041;
				this.match(HiveSqlParser.KW_TABLE);
				this.state = 3042;
				this.tableOrPartition();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public limitClause(): LimitClauseContext {
		let _localctx: LimitClauseContext = new LimitClauseContext(this._ctx, this.state);
		this.enterRule(_localctx, 420, HiveSqlParser.RULE_limitClause);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3045;
			this.match(HiveSqlParser.KW_LIMIT);
			this.state = 3054;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 317, this._ctx) ) {
			case 1:
				{
				this.state = 3048;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 316, this._ctx) ) {
				case 1:
					{
					this.state = 3046;
					_localctx._offset = this.match(HiveSqlParser.Number);
					this.state = 3047;
					this.match(HiveSqlParser.COMMA);
					}
					break;
				}
				this.state = 3050;
				_localctx._num = this.match(HiveSqlParser.Number);
				}
				break;

			case 2:
				{
				this.state = 3051;
				_localctx._num = this.match(HiveSqlParser.Number);
				this.state = 3052;
				this.match(HiveSqlParser.KW_OFFSET);
				this.state = 3053;
				_localctx._offset = this.match(HiveSqlParser.Number);
				}
				break;
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public deleteStatement(): DeleteStatementContext {
		let _localctx: DeleteStatementContext = new DeleteStatementContext(this._ctx, this.state);
		this.enterRule(_localctx, 422, HiveSqlParser.RULE_deleteStatement);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3056;
			this.match(HiveSqlParser.KW_DELETE);
			this.state = 3057;
			this.match(HiveSqlParser.KW_FROM);
			this.state = 3058;
			this.tableName();
			this.state = 3060;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === HiveSqlParser.KW_WHERE) {
				{
				this.state = 3059;
				this.whereClause();
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public columnAssignmentClause(): ColumnAssignmentClauseContext {
		let _localctx: ColumnAssignmentClauseContext = new ColumnAssignmentClauseContext(this._ctx, this.state);
		this.enterRule(_localctx, 424, HiveSqlParser.RULE_columnAssignmentClause);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3062;
			this.columnName();
			this.state = 3063;
			this.match(HiveSqlParser.EQUAL);
			this.state = 3064;
			this.precedencePlusExpressionOrDefault();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public precedencePlusExpressionOrDefault(): PrecedencePlusExpressionOrDefaultContext {
		let _localctx: PrecedencePlusExpressionOrDefaultContext = new PrecedencePlusExpressionOrDefaultContext(this._ctx, this.state);
		this.enterRule(_localctx, 426, HiveSqlParser.RULE_precedencePlusExpressionOrDefault);
		try {
			this.state = 3068;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 319, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 3066;
				this.defaultValue();
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 3067;
				this.precedencePlusExpression();
				}
				break;
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public setColumnsClause(): SetColumnsClauseContext {
		let _localctx: SetColumnsClauseContext = new SetColumnsClauseContext(this._ctx, this.state);
		this.enterRule(_localctx, 428, HiveSqlParser.RULE_setColumnsClause);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3070;
			this.match(HiveSqlParser.KW_SET);
			this.state = 3071;
			this.columnAssignmentClause();
			this.state = 3076;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === HiveSqlParser.COMMA) {
				{
				{
				this.state = 3072;
				this.match(HiveSqlParser.COMMA);
				this.state = 3073;
				this.columnAssignmentClause();
				}
				}
				this.state = 3078;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public updateStatement(): UpdateStatementContext {
		let _localctx: UpdateStatementContext = new UpdateStatementContext(this._ctx, this.state);
		this.enterRule(_localctx, 430, HiveSqlParser.RULE_updateStatement);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3079;
			this.match(HiveSqlParser.KW_UPDATE);
			this.state = 3080;
			this.tableName();
			this.state = 3081;
			this.setColumnsClause();
			this.state = 3083;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === HiveSqlParser.KW_WHERE) {
				{
				this.state = 3082;
				this.whereClause();
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public sqlTransactionStatement(): SqlTransactionStatementContext {
		let _localctx: SqlTransactionStatementContext = new SqlTransactionStatementContext(this._ctx, this.state);
		this.enterRule(_localctx, 432, HiveSqlParser.RULE_sqlTransactionStatement);
		try {
			this.state = 3089;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case HiveSqlParser.KW_START:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 3085;
				this.startTransactionStatement();
				}
				break;
			case HiveSqlParser.KW_COMMIT:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 3086;
				this.commitStatement();
				}
				break;
			case HiveSqlParser.KW_ROLLBACK:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 3087;
				this.rollbackStatement();
				}
				break;
			case HiveSqlParser.KW_SET:
				this.enterOuterAlt(_localctx, 4);
				{
				this.state = 3088;
				this.setAutoCommitStatement();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public startTransactionStatement(): StartTransactionStatementContext {
		let _localctx: StartTransactionStatementContext = new StartTransactionStatementContext(this._ctx, this.state);
		this.enterRule(_localctx, 434, HiveSqlParser.RULE_startTransactionStatement);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3091;
			this.match(HiveSqlParser.KW_START);
			this.state = 3092;
			this.match(HiveSqlParser.KW_TRANSACTION);
			this.state = 3101;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === HiveSqlParser.KW_ISOLATION || _la === HiveSqlParser.KW_READ) {
				{
				this.state = 3093;
				this.transactionMode();
				this.state = 3098;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				while (_la === HiveSqlParser.COMMA) {
					{
					{
					this.state = 3094;
					this.match(HiveSqlParser.COMMA);
					this.state = 3095;
					this.transactionMode();
					}
					}
					this.state = 3100;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
				}
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public transactionMode(): TransactionModeContext {
		let _localctx: TransactionModeContext = new TransactionModeContext(this._ctx, this.state);
		this.enterRule(_localctx, 436, HiveSqlParser.RULE_transactionMode);
		try {
			this.state = 3105;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case HiveSqlParser.KW_ISOLATION:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 3103;
				this.isolationLevel();
				}
				break;
			case HiveSqlParser.KW_READ:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 3104;
				this.transactionAccessMode();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public transactionAccessMode(): TransactionAccessModeContext {
		let _localctx: TransactionAccessModeContext = new TransactionAccessModeContext(this._ctx, this.state);
		this.enterRule(_localctx, 438, HiveSqlParser.RULE_transactionAccessMode);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3107;
			this.match(HiveSqlParser.KW_READ);
			this.state = 3108;
			_la = this._input.LA(1);
			if (!(_la === HiveSqlParser.KW_ONLY || _la === HiveSqlParser.KW_WRITE)) {
			this._errHandler.recoverInline(this);
			} else {
				if (this._input.LA(1) === Token.EOF) {
					this.matchedEOF = true;
				}

				this._errHandler.reportMatch(this);
				this.consume();
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public isolationLevel(): IsolationLevelContext {
		let _localctx: IsolationLevelContext = new IsolationLevelContext(this._ctx, this.state);
		this.enterRule(_localctx, 440, HiveSqlParser.RULE_isolationLevel);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3110;
			this.match(HiveSqlParser.KW_ISOLATION);
			this.state = 3111;
			this.match(HiveSqlParser.KW_LEVEL);
			this.state = 3112;
			this.levelOfIsolation();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public levelOfIsolation(): LevelOfIsolationContext {
		let _localctx: LevelOfIsolationContext = new LevelOfIsolationContext(this._ctx, this.state);
		this.enterRule(_localctx, 442, HiveSqlParser.RULE_levelOfIsolation);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3114;
			this.match(HiveSqlParser.KW_SNAPSHOT);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public commitStatement(): CommitStatementContext {
		let _localctx: CommitStatementContext = new CommitStatementContext(this._ctx, this.state);
		this.enterRule(_localctx, 444, HiveSqlParser.RULE_commitStatement);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3116;
			this.match(HiveSqlParser.KW_COMMIT);
			this.state = 3118;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === HiveSqlParser.KW_WORK) {
				{
				this.state = 3117;
				this.match(HiveSqlParser.KW_WORK);
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public rollbackStatement(): RollbackStatementContext {
		let _localctx: RollbackStatementContext = new RollbackStatementContext(this._ctx, this.state);
		this.enterRule(_localctx, 446, HiveSqlParser.RULE_rollbackStatement);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3120;
			this.match(HiveSqlParser.KW_ROLLBACK);
			this.state = 3122;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === HiveSqlParser.KW_WORK) {
				{
				this.state = 3121;
				this.match(HiveSqlParser.KW_WORK);
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public setAutoCommitStatement(): SetAutoCommitStatementContext {
		let _localctx: SetAutoCommitStatementContext = new SetAutoCommitStatementContext(this._ctx, this.state);
		this.enterRule(_localctx, 448, HiveSqlParser.RULE_setAutoCommitStatement);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3124;
			this.match(HiveSqlParser.KW_SET);
			this.state = 3125;
			this.match(HiveSqlParser.KW_AUTOCOMMIT);
			this.state = 3126;
			this.booleanValueTok();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public abortTransactionStatement(): AbortTransactionStatementContext {
		let _localctx: AbortTransactionStatementContext = new AbortTransactionStatementContext(this._ctx, this.state);
		this.enterRule(_localctx, 450, HiveSqlParser.RULE_abortTransactionStatement);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3128;
			this.match(HiveSqlParser.KW_ABORT);
			this.state = 3129;
			this.match(HiveSqlParser.KW_TRANSACTIONS);
			this.state = 3131;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			do {
				{
				{
				this.state = 3130;
				this.match(HiveSqlParser.Number);
				}
				}
				this.state = 3133;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			} while (_la === HiveSqlParser.Number);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public abortCompactionStatement(): AbortCompactionStatementContext {
		let _localctx: AbortCompactionStatementContext = new AbortCompactionStatementContext(this._ctx, this.state);
		this.enterRule(_localctx, 452, HiveSqlParser.RULE_abortCompactionStatement);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3135;
			this.match(HiveSqlParser.KW_ABORT);
			this.state = 3136;
			this.match(HiveSqlParser.KW_COMPACTIONS);
			this.state = 3138;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			do {
				{
				{
				this.state = 3137;
				this.match(HiveSqlParser.Number);
				}
				}
				this.state = 3140;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			} while (_la === HiveSqlParser.Number);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public mergeStatement(): MergeStatementContext {
		let _localctx: MergeStatementContext = new MergeStatementContext(this._ctx, this.state);
		this.enterRule(_localctx, 454, HiveSqlParser.RULE_mergeStatement);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3142;
			this.match(HiveSqlParser.KW_MERGE);
			this.state = 3144;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === HiveSqlParser.QUERY_HINT) {
				{
				this.state = 3143;
				this.match(HiveSqlParser.QUERY_HINT);
				}
			}

			this.state = 3146;
			this.match(HiveSqlParser.KW_INTO);
			this.state = 3147;
			this.tableName();
			this.state = 3152;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if ((((_la) & ~0x1F) === 0 && ((1 << _la) & ((1 << HiveSqlParser.KW_ABORT) | (1 << HiveSqlParser.KW_ACTIVATE) | (1 << HiveSqlParser.KW_ACTIVE) | (1 << HiveSqlParser.KW_ADD) | (1 << HiveSqlParser.KW_ADMIN) | (1 << HiveSqlParser.KW_AFTER) | (1 << HiveSqlParser.KW_ALLOC_FRACTION) | (1 << HiveSqlParser.KW_ANALYZE) | (1 << HiveSqlParser.KW_ARCHIVE) | (1 << HiveSqlParser.KW_AS) | (1 << HiveSqlParser.KW_ASC) | (1 << HiveSqlParser.KW_AST) | (1 << HiveSqlParser.KW_AT) | (1 << HiveSqlParser.KW_AUTOCOMMIT) | (1 << HiveSqlParser.KW_BATCH) | (1 << HiveSqlParser.KW_BEFORE) | (1 << HiveSqlParser.KW_BUCKET) | (1 << HiveSqlParser.KW_BUCKETS))) !== 0) || ((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & ((1 << (HiveSqlParser.KW_CACHE - 33)) | (1 << (HiveSqlParser.KW_CASCADE - 33)) | (1 << (HiveSqlParser.KW_CBO - 33)) | (1 << (HiveSqlParser.KW_CHANGE - 33)) | (1 << (HiveSqlParser.KW_CHECK - 33)) | (1 << (HiveSqlParser.KW_CLUSTER - 33)) | (1 << (HiveSqlParser.KW_CLUSTERED - 33)) | (1 << (HiveSqlParser.KW_CLUSTERSTATUS - 33)) | (1 << (HiveSqlParser.KW_COLLECTION - 33)) | (1 << (HiveSqlParser.KW_COLUMNS - 33)) | (1 << (HiveSqlParser.KW_COMMENT - 33)) | (1 << (HiveSqlParser.KW_COMPACT - 33)) | (1 << (HiveSqlParser.KW_COMPACTIONS - 33)) | (1 << (HiveSqlParser.KW_COMPUTE - 33)) | (1 << (HiveSqlParser.KW_CONCATENATE - 33)) | (1 << (HiveSqlParser.KW_CONTINUE - 33)) | (1 << (HiveSqlParser.KW_COST - 33)) | (1 << (HiveSqlParser.KW_CRON - 33)))) !== 0) || ((((_la - 66)) & ~0x1F) === 0 && ((1 << (_la - 66)) & ((1 << (HiveSqlParser.KW_DATA - 66)) | (1 << (HiveSqlParser.KW_DATABASES - 66)) | (1 << (HiveSqlParser.KW_DATETIME - 66)) | (1 << (HiveSqlParser.KW_DAY - 66)) | (1 << (HiveSqlParser.KW_DAYS - 66)) | (1 << (HiveSqlParser.KW_DAYOFWEEK - 66)) | (1 << (HiveSqlParser.KW_DBPROPERTIES - 66)) | (1 << (HiveSqlParser.KW_DCPROPERTIES - 66)) | (1 << (HiveSqlParser.KW_DEBUG - 66)) | (1 << (HiveSqlParser.KW_DEFAULT - 66)) | (1 << (HiveSqlParser.KW_DEFERRED - 66)) | (1 << (HiveSqlParser.KW_DEFINED - 66)) | (1 << (HiveSqlParser.KW_DELIMITED - 66)) | (1 << (HiveSqlParser.KW_DEPENDENCY - 66)) | (1 << (HiveSqlParser.KW_DESC - 66)) | (1 << (HiveSqlParser.KW_DETAIL - 66)) | (1 << (HiveSqlParser.KW_DIRECTORIES - 66)) | (1 << (HiveSqlParser.KW_DIRECTORY - 66)) | (1 << (HiveSqlParser.KW_DISABLE - 66)) | (1 << (HiveSqlParser.KW_DISABLED - 66)) | (1 << (HiveSqlParser.KW_DISTRIBUTE - 66)))) !== 0) || ((((_la - 98)) & ~0x1F) === 0 && ((1 << (_la - 98)) & ((1 << (HiveSqlParser.KW_DISTRIBUTED - 98)) | (1 << (HiveSqlParser.KW_DO - 98)) | (1 << (HiveSqlParser.KW_DUMP - 98)) | (1 << (HiveSqlParser.KW_ELEM_TYPE - 98)) | (1 << (HiveSqlParser.KW_ENABLE - 98)) | (1 << (HiveSqlParser.KW_ENABLED - 98)) | (1 << (HiveSqlParser.KW_ENFORCED - 98)) | (1 << (HiveSqlParser.KW_ESCAPED - 98)) | (1 << (HiveSqlParser.KW_EVERY - 98)) | (1 << (HiveSqlParser.KW_EXCLUSIVE - 98)) | (1 << (HiveSqlParser.KW_EXECUTE - 98)) | (1 << (HiveSqlParser.KW_EXECUTED - 98)) | (1 << (HiveSqlParser.KW_EXPIRE_SNAPSHOTS - 98)) | (1 << (HiveSqlParser.KW_EXPLAIN - 98)) | (1 << (HiveSqlParser.KW_EXPORT - 98)) | (1 << (HiveSqlParser.KW_EXPRESSION - 98)) | (1 << (HiveSqlParser.KW_FIELDS - 98)) | (1 << (HiveSqlParser.KW_FILE - 98)) | (1 << (HiveSqlParser.KW_FILEFORMAT - 98)))) !== 0) || ((((_la - 130)) & ~0x1F) === 0 && ((1 << (_la - 130)) & ((1 << (HiveSqlParser.KW_FIRST - 130)) | (1 << (HiveSqlParser.KW_FORMAT - 130)) | (1 << (HiveSqlParser.KW_FORMATTED - 130)) | (1 << (HiveSqlParser.KW_FUNCTIONS - 130)) | (1 << (HiveSqlParser.KW_HOLD_DDLTIME - 130)) | (1 << (HiveSqlParser.KW_HOUR - 130)) | (1 << (HiveSqlParser.KW_HOURS - 130)) | (1 << (HiveSqlParser.KW_IDXPROPERTIES - 130)) | (1 << (HiveSqlParser.KW_IGNORE - 130)) | (1 << (HiveSqlParser.KW_INDEX - 130)) | (1 << (HiveSqlParser.KW_INDEXES - 130)) | (1 << (HiveSqlParser.KW_INPATH - 130)) | (1 << (HiveSqlParser.KW_INPUTDRIVER - 130)) | (1 << (HiveSqlParser.KW_INPUTFORMAT - 130)))) !== 0) || ((((_la - 168)) & ~0x1F) === 0 && ((1 << (_la - 168)) & ((1 << (HiveSqlParser.KW_ISOLATION - 168)) | (1 << (HiveSqlParser.KW_ITEMS - 168)) | (1 << (HiveSqlParser.KW_JAR - 168)) | (1 << (HiveSqlParser.KW_JOINCOST - 168)) | (1 << (HiveSqlParser.KW_KEY - 168)) | (1 << (HiveSqlParser.KW_KEYS - 168)) | (1 << (HiveSqlParser.KW_KEY_TYPE - 168)) | (1 << (HiveSqlParser.KW_KILL - 168)) | (1 << (HiveSqlParser.KW_LAST - 168)) | (1 << (HiveSqlParser.KW_LEVEL - 168)) | (1 << (HiveSqlParser.KW_LIMIT - 168)) | (1 << (HiveSqlParser.KW_LINES - 168)) | (1 << (HiveSqlParser.KW_LOAD - 168)) | (1 << (HiveSqlParser.KW_LOCATION - 168)) | (1 << (HiveSqlParser.KW_LOCK - 168)) | (1 << (HiveSqlParser.KW_LOCKS - 168)) | (1 << (HiveSqlParser.KW_LOGICAL - 168)) | (1 << (HiveSqlParser.KW_LONG - 168)) | (1 << (HiveSqlParser.KW_MANAGED - 168)) | (1 << (HiveSqlParser.KW_MANAGEDLOCATION - 168)) | (1 << (HiveSqlParser.KW_MANAGEMENT - 168)) | (1 << (HiveSqlParser.KW_MAPJOIN - 168)) | (1 << (HiveSqlParser.KW_MAPPING - 168)))) !== 0) || ((((_la - 200)) & ~0x1F) === 0 && ((1 << (_la - 200)) & ((1 << (HiveSqlParser.KW_MATCHED - 200)) | (1 << (HiveSqlParser.KW_MATERIALIZED - 200)) | (1 << (HiveSqlParser.KW_METADATA - 200)) | (1 << (HiveSqlParser.KW_MINUTE - 200)) | (1 << (HiveSqlParser.KW_MINUTES - 200)) | (1 << (HiveSqlParser.KW_MONTH - 200)) | (1 << (HiveSqlParser.KW_MONTHS - 200)) | (1 << (HiveSqlParser.KW_MOVE - 200)) | (1 << (HiveSqlParser.KW_MSCK - 200)) | (1 << (HiveSqlParser.KW_NORELY - 200)) | (1 << (HiveSqlParser.KW_NOSCAN - 200)) | (1 << (HiveSqlParser.KW_NOVALIDATE - 200)) | (1 << (HiveSqlParser.KW_NO_DROP - 200)) | (1 << (HiveSqlParser.KW_NULLS - 200)) | (1 << (HiveSqlParser.KW_OFFLINE - 200)) | (1 << (HiveSqlParser.KW_OFFSET - 200)) | (1 << (HiveSqlParser.KW_OPERATOR - 200)) | (1 << (HiveSqlParser.KW_OPTION - 200)) | (1 << (HiveSqlParser.KW_OUTPUTDRIVER - 200)))) !== 0) || ((((_la - 232)) & ~0x1F) === 0 && ((1 << (_la - 232)) & ((1 << (HiveSqlParser.KW_OUTPUTFORMAT - 232)) | (1 << (HiveSqlParser.KW_OVERWRITE - 232)) | (1 << (HiveSqlParser.KW_OWNER - 232)) | (1 << (HiveSqlParser.KW_PARTITIONED - 232)) | (1 << (HiveSqlParser.KW_PARTITIONS - 232)) | (1 << (HiveSqlParser.KW_PATH - 232)) | (1 << (HiveSqlParser.KW_PLAN - 232)) | (1 << (HiveSqlParser.KW_PLANS - 232)) | (1 << (HiveSqlParser.KW_PLUS - 232)) | (1 << (HiveSqlParser.KW_POOL - 232)) | (1 << (HiveSqlParser.KW_PRINCIPALS - 232)) | (1 << (HiveSqlParser.KW_PROTECTION - 232)) | (1 << (HiveSqlParser.KW_PURGE - 232)) | (1 << (HiveSqlParser.KW_QUARTER - 232)) | (1 << (HiveSqlParser.KW_QUERY - 232)) | (1 << (HiveSqlParser.KW_QUERY_PARALLELISM - 232)) | (1 << (HiveSqlParser.KW_READ - 232)) | (1 << (HiveSqlParser.KW_READONLY - 232)))) !== 0) || ((((_la - 264)) & ~0x1F) === 0 && ((1 << (_la - 264)) & ((1 << (HiveSqlParser.KW_REBUILD - 264)) | (1 << (HiveSqlParser.KW_RECORDREADER - 264)) | (1 << (HiveSqlParser.KW_RECORDWRITER - 264)) | (1 << (HiveSqlParser.KW_RELOAD - 264)) | (1 << (HiveSqlParser.KW_RELY - 264)) | (1 << (HiveSqlParser.KW_REMOTE - 264)) | (1 << (HiveSqlParser.KW_RENAME - 264)) | (1 << (HiveSqlParser.KW_REOPTIMIZATION - 264)) | (1 << (HiveSqlParser.KW_REPAIR - 264)) | (1 << (HiveSqlParser.KW_REPL - 264)) | (1 << (HiveSqlParser.KW_REPLACE - 264)) | (1 << (HiveSqlParser.KW_REPLICATION - 264)) | (1 << (HiveSqlParser.KW_RESOURCE - 264)) | (1 << (HiveSqlParser.KW_RESPECT - 264)) | (1 << (HiveSqlParser.KW_RESTRICT - 264)) | (1 << (HiveSqlParser.KW_REWRITE - 264)) | (1 << (HiveSqlParser.KW_ROLE - 264)) | (1 << (HiveSqlParser.KW_ROLES - 264)) | (1 << (HiveSqlParser.KW_SCHEDULED - 264)) | (1 << (HiveSqlParser.KW_SCHEDULING_POLICY - 264)) | (1 << (HiveSqlParser.KW_SCHEMA - 264)) | (1 << (HiveSqlParser.KW_SCHEMAS - 264)))) !== 0) || ((((_la - 296)) & ~0x1F) === 0 && ((1 << (_la - 296)) & ((1 << (HiveSqlParser.KW_SECOND - 296)) | (1 << (HiveSqlParser.KW_SECONDS - 296)) | (1 << (HiveSqlParser.KW_SEMI - 296)) | (1 << (HiveSqlParser.KW_SERDE - 296)) | (1 << (HiveSqlParser.KW_SERDEPROPERTIES - 296)) | (1 << (HiveSqlParser.KW_SERVER - 296)) | (1 << (HiveSqlParser.KW_SETS - 296)) | (1 << (HiveSqlParser.KW_SET_CURRENT_SNAPSHOT - 296)) | (1 << (HiveSqlParser.KW_SHARED - 296)) | (1 << (HiveSqlParser.KW_SHOW - 296)) | (1 << (HiveSqlParser.KW_SHOW_DATABASE - 296)) | (1 << (HiveSqlParser.KW_SKEWED - 296)) | (1 << (HiveSqlParser.KW_SNAPSHOT - 296)) | (1 << (HiveSqlParser.KW_SORT - 296)) | (1 << (HiveSqlParser.KW_SORTED - 296)) | (1 << (HiveSqlParser.KW_SPEC - 296)) | (1 << (HiveSqlParser.KW_SSL - 296)) | (1 << (HiveSqlParser.KW_STATISTICS - 296)) | (1 << (HiveSqlParser.KW_STATUS - 296)) | (1 << (HiveSqlParser.KW_STORED - 296)) | (1 << (HiveSqlParser.KW_STREAMTABLE - 296)) | (1 << (HiveSqlParser.KW_STRING - 296)) | (1 << (HiveSqlParser.KW_STRUCT - 296)) | (1 << (HiveSqlParser.KW_SUMMARY - 296)) | (1 << (HiveSqlParser.KW_SYSTEM_TIME - 296)) | (1 << (HiveSqlParser.KW_SYSTEM_VERSION - 296)))) !== 0) || ((((_la - 329)) & ~0x1F) === 0 && ((1 << (_la - 329)) & ((1 << (HiveSqlParser.KW_TABLES - 329)) | (1 << (HiveSqlParser.KW_TBLPROPERTIES - 329)) | (1 << (HiveSqlParser.KW_TEMPORARY - 329)) | (1 << (HiveSqlParser.KW_TERMINATED - 329)) | (1 << (HiveSqlParser.KW_TIMESTAMPTZ - 329)) | (1 << (HiveSqlParser.KW_TINYINT - 329)) | (1 << (HiveSqlParser.KW_TOUCH - 329)) | (1 << (HiveSqlParser.KW_TRANSACTION - 329)) | (1 << (HiveSqlParser.KW_TRANSACTIONAL - 329)) | (1 << (HiveSqlParser.KW_TRANSACTIONS - 329)) | (1 << (HiveSqlParser.KW_TRIM - 329)) | (1 << (HiveSqlParser.KW_TYPE - 329)) | (1 << (HiveSqlParser.KW_UNARCHIVE - 329)) | (1 << (HiveSqlParser.KW_UNDO - 329)) | (1 << (HiveSqlParser.KW_UNIONTYPE - 329)) | (1 << (HiveSqlParser.KW_UNKNOWN - 329)) | (1 << (HiveSqlParser.KW_UNLOCK - 329)))) !== 0) || ((((_la - 361)) & ~0x1F) === 0 && ((1 << (_la - 361)) & ((1 << (HiveSqlParser.KW_UNMANAGED - 361)) | (1 << (HiveSqlParser.KW_UNSET - 361)) | (1 << (HiveSqlParser.KW_UNSIGNED - 361)) | (1 << (HiveSqlParser.KW_URI - 361)) | (1 << (HiveSqlParser.KW_URL - 361)) | (1 << (HiveSqlParser.KW_USE - 361)) | (1 << (HiveSqlParser.KW_UTC - 361)) | (1 << (HiveSqlParser.KW_UTCTIMESTAMP - 361)) | (1 << (HiveSqlParser.KW_VALIDATE - 361)) | (1 << (HiveSqlParser.KW_VALUE_TYPE - 361)) | (1 << (HiveSqlParser.KW_VECTORIZATION - 361)) | (1 << (HiveSqlParser.KW_VIEW - 361)) | (1 << (HiveSqlParser.KW_VIEWS - 361)) | (1 << (HiveSqlParser.KW_WAIT - 361)) | (1 << (HiveSqlParser.KW_WEEK - 361)) | (1 << (HiveSqlParser.KW_WEEKS - 361)) | (1 << (HiveSqlParser.KW_WHILE - 361)) | (1 << (HiveSqlParser.KW_WITHIN - 361)) | (1 << (HiveSqlParser.KW_WORK - 361)) | (1 << (HiveSqlParser.KW_WORKLOAD - 361)) | (1 << (HiveSqlParser.KW_WRITE - 361)) | (1 << (HiveSqlParser.KW_YEAR - 361)) | (1 << (HiveSqlParser.KW_YEARS - 361)))) !== 0) || _la === HiveSqlParser.KW_ZONE || _la === HiveSqlParser.Identifier) {
				{
				this.state = 3149;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === HiveSqlParser.KW_AS) {
					{
					this.state = 3148;
					this.match(HiveSqlParser.KW_AS);
					}
				}

				this.state = 3151;
				this.id_();
				}
			}

			this.state = 3154;
			this.match(HiveSqlParser.KW_USING);
			this.state = 3155;
			this.joinSourcePart();
			this.state = 3156;
			this.match(HiveSqlParser.KW_ON);
			this.state = 3157;
			this.expression();
			this.state = 3158;
			this.whenClauses();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public whenClauses(): WhenClausesContext {
		let _localctx: WhenClausesContext = new WhenClausesContext(this._ctx, this.state);
		this.enterRule(_localctx, 456, HiveSqlParser.RULE_whenClauses);
		let _la: number;
		try {
			let _alt: number;
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3164;
			this._errHandler.sync(this);
			_alt = this.interpreter.adaptivePredict(this._input, 334, this._ctx);
			while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) {
				if (_alt === 1) {
					{
					this.state = 3162;
					this._errHandler.sync(this);
					switch ( this.interpreter.adaptivePredict(this._input, 333, this._ctx) ) {
					case 1:
						{
						this.state = 3160;
						this.whenMatchedAndClause();
						}
						break;

					case 2:
						{
						this.state = 3161;
						this.whenMatchedThenClause();
						}
						break;
					}
					}
				}
				this.state = 3166;
				this._errHandler.sync(this);
				_alt = this.interpreter.adaptivePredict(this._input, 334, this._ctx);
			}
			this.state = 3168;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === HiveSqlParser.KW_WHEN) {
				{
				this.state = 3167;
				this.whenNotMatchedClause();
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public whenNotMatchedClause(): WhenNotMatchedClauseContext {
		let _localctx: WhenNotMatchedClauseContext = new WhenNotMatchedClauseContext(this._ctx, this.state);
		this.enterRule(_localctx, 458, HiveSqlParser.RULE_whenNotMatchedClause);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3170;
			this.match(HiveSqlParser.KW_WHEN);
			this.state = 3171;
			this.match(HiveSqlParser.KW_NOT);
			this.state = 3172;
			this.match(HiveSqlParser.KW_MATCHED);
			this.state = 3175;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === HiveSqlParser.KW_AND) {
				{
				this.state = 3173;
				this.match(HiveSqlParser.KW_AND);
				this.state = 3174;
				this.expression();
				}
			}

			this.state = 3177;
			this.match(HiveSqlParser.KW_THEN);
			this.state = 3178;
			this.match(HiveSqlParser.KW_INSERT);
			this.state = 3180;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === HiveSqlParser.LPAREN) {
				{
				this.state = 3179;
				_localctx._targetCols = this.columnParenthesesList();
				}
			}

			this.state = 3182;
			this.match(HiveSqlParser.KW_VALUES);
			this.state = 3183;
			this.valueRowConstructor();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public whenMatchedAndClause(): WhenMatchedAndClauseContext {
		let _localctx: WhenMatchedAndClauseContext = new WhenMatchedAndClauseContext(this._ctx, this.state);
		this.enterRule(_localctx, 460, HiveSqlParser.RULE_whenMatchedAndClause);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3185;
			this.match(HiveSqlParser.KW_WHEN);
			this.state = 3186;
			this.match(HiveSqlParser.KW_MATCHED);
			this.state = 3187;
			this.match(HiveSqlParser.KW_AND);
			this.state = 3188;
			this.expression();
			this.state = 3189;
			this.match(HiveSqlParser.KW_THEN);
			this.state = 3190;
			this.updateOrDelete();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public whenMatchedThenClause(): WhenMatchedThenClauseContext {
		let _localctx: WhenMatchedThenClauseContext = new WhenMatchedThenClauseContext(this._ctx, this.state);
		this.enterRule(_localctx, 462, HiveSqlParser.RULE_whenMatchedThenClause);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3192;
			this.match(HiveSqlParser.KW_WHEN);
			this.state = 3193;
			this.match(HiveSqlParser.KW_MATCHED);
			this.state = 3194;
			this.match(HiveSqlParser.KW_THEN);
			this.state = 3195;
			this.updateOrDelete();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public updateOrDelete(): UpdateOrDeleteContext {
		let _localctx: UpdateOrDeleteContext = new UpdateOrDeleteContext(this._ctx, this.state);
		this.enterRule(_localctx, 464, HiveSqlParser.RULE_updateOrDelete);
		try {
			this.state = 3200;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case HiveSqlParser.KW_UPDATE:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 3197;
				this.match(HiveSqlParser.KW_UPDATE);
				this.state = 3198;
				this.setColumnsClause();
				}
				break;
			case HiveSqlParser.KW_DELETE:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 3199;
				this.match(HiveSqlParser.KW_DELETE);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public killQueryStatement(): KillQueryStatementContext {
		let _localctx: KillQueryStatementContext = new KillQueryStatementContext(this._ctx, this.state);
		this.enterRule(_localctx, 466, HiveSqlParser.RULE_killQueryStatement);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3202;
			this.match(HiveSqlParser.KW_KILL);
			this.state = 3203;
			this.match(HiveSqlParser.KW_QUERY);
			this.state = 3205;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			do {
				{
				{
				this.state = 3204;
				this.match(HiveSqlParser.StringLiteral);
				}
				}
				this.state = 3207;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			} while (_la === HiveSqlParser.StringLiteral);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public compactionId(): CompactionIdContext {
		let _localctx: CompactionIdContext = new CompactionIdContext(this._ctx, this.state);
		this.enterRule(_localctx, 468, HiveSqlParser.RULE_compactionId);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3209;
			this.match(HiveSqlParser.KW_COMPACT_ID);
			this.state = 3210;
			this.match(HiveSqlParser.EQUAL);
			this.state = 3211;
			_localctx._compactId = this.match(HiveSqlParser.Number);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public compactionPool(): CompactionPoolContext {
		let _localctx: CompactionPoolContext = new CompactionPoolContext(this._ctx, this.state);
		this.enterRule(_localctx, 470, HiveSqlParser.RULE_compactionPool);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3213;
			this.match(HiveSqlParser.KW_POOL);
			this.state = 3214;
			_localctx._poolName = this.match(HiveSqlParser.StringLiteral);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public compactionType(): CompactionTypeContext {
		let _localctx: CompactionTypeContext = new CompactionTypeContext(this._ctx, this.state);
		this.enterRule(_localctx, 472, HiveSqlParser.RULE_compactionType);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3216;
			this.match(HiveSqlParser.KW_TYPE);
			this.state = 3217;
			_localctx._compactType = this.match(HiveSqlParser.StringLiteral);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public compactionStatus(): CompactionStatusContext {
		let _localctx: CompactionStatusContext = new CompactionStatusContext(this._ctx, this.state);
		this.enterRule(_localctx, 474, HiveSqlParser.RULE_compactionStatus);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3219;
			this.match(HiveSqlParser.KW_STATUS);
			this.state = 3220;
			_localctx._status = this.match(HiveSqlParser.StringLiteral);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public alterStatement(): AlterStatementContext {
		let _localctx: AlterStatementContext = new AlterStatementContext(this._ctx, this.state);
		this.enterRule(_localctx, 476, HiveSqlParser.RULE_alterStatement);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3222;
			this.match(HiveSqlParser.KW_ALTER);
			this.state = 3246;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case HiveSqlParser.KW_TABLE:
				{
				this.state = 3223;
				this.match(HiveSqlParser.KW_TABLE);
				this.state = 3224;
				this.tableName();
				this.state = 3225;
				this.alterTableStatementSuffix();
				}
				break;
			case HiveSqlParser.KW_VIEW:
				{
				this.state = 3227;
				this.match(HiveSqlParser.KW_VIEW);
				this.state = 3228;
				this.viewName();
				this.state = 3230;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === HiveSqlParser.KW_AS) {
					{
					this.state = 3229;
					this.match(HiveSqlParser.KW_AS);
					}
				}

				this.state = 3232;
				this.alterViewStatementSuffix();
				}
				break;
			case HiveSqlParser.KW_MATERIALIZED:
				{
				this.state = 3234;
				this.match(HiveSqlParser.KW_MATERIALIZED);
				this.state = 3235;
				this.match(HiveSqlParser.KW_VIEW);
				this.state = 3236;
				_localctx._tableNameTree = this.viewName();
				this.state = 3237;
				this.alterMaterializedViewStatementSuffix();
				}
				break;
			case HiveSqlParser.KW_DATABASE:
			case HiveSqlParser.KW_SCHEMA:
				{
				this.state = 3239;
				this.db_schema();
				this.state = 3240;
				this.alterDatabaseStatementSuffix();
				}
				break;
			case HiveSqlParser.KW_DATACONNECTOR:
				{
				this.state = 3242;
				this.match(HiveSqlParser.KW_DATACONNECTOR);
				this.state = 3243;
				this.alterDataConnectorStatementSuffix();
				}
				break;
			case HiveSqlParser.KW_INDEX:
				{
				this.state = 3244;
				this.match(HiveSqlParser.KW_INDEX);
				this.state = 3245;
				this.alterIndexStatementSuffix();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public alterTableStatementSuffix(): AlterTableStatementSuffixContext {
		let _localctx: AlterTableStatementSuffixContext = new AlterTableStatementSuffixContext(this._ctx, this.state);
		this.enterRule(_localctx, 478, HiveSqlParser.RULE_alterTableStatementSuffix);
		let _la: number;
		try {
			this.state = 3269;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 343, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 3248;
				this.alterStatementSuffixRename();
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 3249;
				this.alterStatementSuffixRecoverPartitions();
				}
				break;

			case 3:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 3250;
				this.alterStatementSuffixDropPartitions();
				}
				break;

			case 4:
				this.enterOuterAlt(_localctx, 4);
				{
				this.state = 3251;
				this.alterStatementSuffixAddPartitions();
				}
				break;

			case 5:
				this.enterOuterAlt(_localctx, 5);
				{
				this.state = 3252;
				this.alterStatementSuffixTouch();
				}
				break;

			case 6:
				this.enterOuterAlt(_localctx, 6);
				{
				this.state = 3253;
				this.alterStatementSuffixArchive();
				}
				break;

			case 7:
				this.enterOuterAlt(_localctx, 7);
				{
				this.state = 3254;
				this.alterStatementSuffixUnArchive();
				}
				break;

			case 8:
				this.enterOuterAlt(_localctx, 8);
				{
				this.state = 3255;
				this.alterStatementSuffixProperties();
				}
				break;

			case 9:
				this.enterOuterAlt(_localctx, 9);
				{
				this.state = 3256;
				this.alterStatementSuffixSkewedby();
				}
				break;

			case 10:
				this.enterOuterAlt(_localctx, 10);
				{
				this.state = 3257;
				this.alterStatementSuffixExchangePartition();
				}
				break;

			case 11:
				this.enterOuterAlt(_localctx, 11);
				{
				this.state = 3258;
				this.alterStatementPartitionKeyType();
				}
				break;

			case 12:
				this.enterOuterAlt(_localctx, 12);
				{
				this.state = 3259;
				this.alterStatementSuffixDropConstraint();
				}
				break;

			case 13:
				this.enterOuterAlt(_localctx, 13);
				{
				this.state = 3260;
				this.alterStatementSuffixAddConstraint();
				}
				break;

			case 14:
				this.enterOuterAlt(_localctx, 14);
				{
				this.state = 3261;
				this.alterTblPartitionStatementSuffix();
				}
				break;

			case 15:
				this.enterOuterAlt(_localctx, 15);
				{
				this.state = 3263;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === HiveSqlParser.KW_PARTITION) {
					{
					this.state = 3262;
					this.partitionSpec();
					}
				}

				this.state = 3265;
				this.alterTblPartitionStatementSuffix();
				}
				break;

			case 16:
				this.enterOuterAlt(_localctx, 16);
				{
				this.state = 3266;
				this.alterStatementSuffixSetOwner();
				}
				break;

			case 17:
				this.enterOuterAlt(_localctx, 17);
				{
				this.state = 3267;
				this.alterStatementSuffixSetPartSpec();
				}
				break;

			case 18:
				this.enterOuterAlt(_localctx, 18);
				{
				this.state = 3268;
				this.alterStatementSuffixExecute();
				}
				break;
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public alterTblPartitionStatementSuffix(): AlterTblPartitionStatementSuffixContext {
		let _localctx: AlterTblPartitionStatementSuffixContext = new AlterTblPartitionStatementSuffixContext(this._ctx, this.state);
		this.enterRule(_localctx, 480, HiveSqlParser.RULE_alterTblPartitionStatementSuffix);
		try {
			this.state = 3286;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 344, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 3271;
				this.alterStatementSuffixFileFormat();
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 3272;
				this.alterStatementSuffixLocation();
				}
				break;

			case 3:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 3273;
				this.alterStatementSuffixMergeFiles();
				}
				break;

			case 4:
				this.enterOuterAlt(_localctx, 4);
				{
				this.state = 3274;
				this.alterStatementSuffixSerdeProperties();
				}
				break;

			case 5:
				this.enterOuterAlt(_localctx, 5);
				{
				this.state = 3275;
				this.alterStatementSuffixRenamePart();
				}
				break;

			case 6:
				this.enterOuterAlt(_localctx, 6);
				{
				this.state = 3276;
				this.alterStatementSuffixBucketNum();
				}
				break;

			case 7:
				this.enterOuterAlt(_localctx, 7);
				{
				this.state = 3277;
				this.alterTblPartitionStatementSuffixSkewedLocation();
				}
				break;

			case 8:
				this.enterOuterAlt(_localctx, 8);
				{
				this.state = 3278;
				this.alterStatementSuffixClusterbySortby();
				}
				break;

			case 9:
				this.enterOuterAlt(_localctx, 9);
				{
				this.state = 3279;
				this.alterStatementSuffixCompact();
				}
				break;

			case 10:
				this.enterOuterAlt(_localctx, 10);
				{
				this.state = 3280;
				this.alterStatementSuffixUpdateStatsCol();
				}
				break;

			case 11:
				this.enterOuterAlt(_localctx, 11);
				{
				this.state = 3281;
				this.alterStatementSuffixUpdateStats();
				}
				break;

			case 12:
				this.enterOuterAlt(_localctx, 12);
				{
				this.state = 3282;
				this.alterStatementSuffixRenameCol();
				}
				break;

			case 13:
				this.enterOuterAlt(_localctx, 13);
				{
				this.state = 3283;
				this.alterStatementSuffixAddCol();
				}
				break;

			case 14:
				this.enterOuterAlt(_localctx, 14);
				{
				this.state = 3284;
				this.alterStatementSuffixUpdateColumns();
				}
				break;

			case 15:
				this.enterOuterAlt(_localctx, 15);
				{
				this.state = 3285;
				this.alterStatementSuffixProtections();
				}
				break;
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public alterStatementPartitionKeyType(): AlterStatementPartitionKeyTypeContext {
		let _localctx: AlterStatementPartitionKeyTypeContext = new AlterStatementPartitionKeyTypeContext(this._ctx, this.state);
		this.enterRule(_localctx, 482, HiveSqlParser.RULE_alterStatementPartitionKeyType);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3288;
			this.match(HiveSqlParser.KW_PARTITION);
			this.state = 3289;
			this.match(HiveSqlParser.KW_COLUMN);
			this.state = 3290;
			this.match(HiveSqlParser.LPAREN);
			this.state = 3291;
			this.columnNameType();
			this.state = 3292;
			this.match(HiveSqlParser.RPAREN);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public alterViewStatementSuffix(): AlterViewStatementSuffixContext {
		let _localctx: AlterViewStatementSuffixContext = new AlterViewStatementSuffixContext(this._ctx, this.state);
		this.enterRule(_localctx, 484, HiveSqlParser.RULE_alterViewStatementSuffix);
		try {
			this.state = 3299;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case HiveSqlParser.KW_SET:
			case HiveSqlParser.KW_UNSET:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 3294;
				this.alterViewSuffixProperties();
				}
				break;
			case HiveSqlParser.KW_RENAME:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 3295;
				this.alterStatementSuffixRename();
				}
				break;
			case HiveSqlParser.KW_ADD:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 3296;
				this.alterStatementSuffixAddPartitions();
				}
				break;
			case HiveSqlParser.KW_DROP:
				this.enterOuterAlt(_localctx, 4);
				{
				this.state = 3297;
				this.alterStatementSuffixDropPartitions();
				}
				break;
			case HiveSqlParser.KW_MAP:
			case HiveSqlParser.KW_REDUCE:
			case HiveSqlParser.KW_SELECT:
			case HiveSqlParser.KW_VALUES:
			case HiveSqlParser.KW_WITH:
			case HiveSqlParser.LPAREN:
				this.enterOuterAlt(_localctx, 5);
				{
				this.state = 3298;
				this.selectStatementWithCTE();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public alterMaterializedViewStatementSuffix(): AlterMaterializedViewStatementSuffixContext {
		let _localctx: AlterMaterializedViewStatementSuffixContext = new AlterMaterializedViewStatementSuffixContext(this._ctx, this.state);
		this.enterRule(_localctx, 486, HiveSqlParser.RULE_alterMaterializedViewStatementSuffix);
		try {
			this.state = 3303;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case HiveSqlParser.KW_DISABLE:
			case HiveSqlParser.KW_DISABLED:
			case HiveSqlParser.KW_ENABLE:
			case HiveSqlParser.KW_ENABLED:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 3301;
				this.alterMaterializedViewSuffixRewrite();
				}
				break;
			case HiveSqlParser.KW_REBUILD:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 3302;
				this.alterMaterializedViewSuffixRebuild();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public alterMaterializedViewSuffixRewrite(): AlterMaterializedViewSuffixRewriteContext {
		let _localctx: AlterMaterializedViewSuffixRewriteContext = new AlterMaterializedViewSuffixRewriteContext(this._ctx, this.state);
		this.enterRule(_localctx, 488, HiveSqlParser.RULE_alterMaterializedViewSuffixRewrite);
		try {
			this.state = 3307;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case HiveSqlParser.KW_ENABLE:
			case HiveSqlParser.KW_ENABLED:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 3305;
				_localctx._mvRewriteFlag = this.rewriteEnabled();
				}
				break;
			case HiveSqlParser.KW_DISABLE:
			case HiveSqlParser.KW_DISABLED:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 3306;
				_localctx._mvRewriteFlag2 = this.rewriteDisabled();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public alterMaterializedViewSuffixRebuild(): AlterMaterializedViewSuffixRebuildContext {
		let _localctx: AlterMaterializedViewSuffixRebuildContext = new AlterMaterializedViewSuffixRebuildContext(this._ctx, this.state);
		this.enterRule(_localctx, 490, HiveSqlParser.RULE_alterMaterializedViewSuffixRebuild);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3309;
			this.match(HiveSqlParser.KW_REBUILD);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public alterDatabaseStatementSuffix(): AlterDatabaseStatementSuffixContext {
		let _localctx: AlterDatabaseStatementSuffixContext = new AlterDatabaseStatementSuffixContext(this._ctx, this.state);
		this.enterRule(_localctx, 492, HiveSqlParser.RULE_alterDatabaseStatementSuffix);
		try {
			this.state = 3314;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 348, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 3311;
				this.alterDatabaseSuffixProperties();
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 3312;
				this.alterDatabaseSuffixSetOwner();
				}
				break;

			case 3:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 3313;
				this.alterDatabaseSuffixSetLocation();
				}
				break;
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public alterDatabaseSuffixProperties(): AlterDatabaseSuffixPropertiesContext {
		let _localctx: AlterDatabaseSuffixPropertiesContext = new AlterDatabaseSuffixPropertiesContext(this._ctx, this.state);
		this.enterRule(_localctx, 494, HiveSqlParser.RULE_alterDatabaseSuffixProperties);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3316;
			_localctx._name = this.dbSchemaName();
			this.state = 3317;
			this.match(HiveSqlParser.KW_SET);
			this.state = 3318;
			this.match(HiveSqlParser.KW_DBPROPERTIES);
			this.state = 3319;
			this.dbProperties();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public alterDatabaseSuffixSetOwner(): AlterDatabaseSuffixSetOwnerContext {
		let _localctx: AlterDatabaseSuffixSetOwnerContext = new AlterDatabaseSuffixSetOwnerContext(this._ctx, this.state);
		this.enterRule(_localctx, 496, HiveSqlParser.RULE_alterDatabaseSuffixSetOwner);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3321;
			_localctx._dbName = this.dbSchemaName();
			this.state = 3322;
			this.match(HiveSqlParser.KW_SET);
			this.state = 3323;
			this.match(HiveSqlParser.KW_OWNER);
			this.state = 3324;
			this.principalAlterName();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public alterDatabaseSuffixSetLocation(): AlterDatabaseSuffixSetLocationContext {
		let _localctx: AlterDatabaseSuffixSetLocationContext = new AlterDatabaseSuffixSetLocationContext(this._ctx, this.state);
		this.enterRule(_localctx, 498, HiveSqlParser.RULE_alterDatabaseSuffixSetLocation);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3326;
			_localctx._dbName = this.dbSchemaName();
			this.state = 3327;
			this.match(HiveSqlParser.KW_SET);
			this.state = 3328;
			_la = this._input.LA(1);
			if (!(_la === HiveSqlParser.KW_LOCATION || _la === HiveSqlParser.KW_MANAGEDLOCATION)) {
			this._errHandler.recoverInline(this);
			} else {
				if (this._input.LA(1) === Token.EOF) {
					this.matchedEOF = true;
				}

				this._errHandler.reportMatch(this);
				this.consume();
			}
			this.state = 3329;
			_localctx._newLocation = this.match(HiveSqlParser.StringLiteral);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public alterDatabaseSuffixSetManagedLocation(): AlterDatabaseSuffixSetManagedLocationContext {
		let _localctx: AlterDatabaseSuffixSetManagedLocationContext = new AlterDatabaseSuffixSetManagedLocationContext(this._ctx, this.state);
		this.enterRule(_localctx, 500, HiveSqlParser.RULE_alterDatabaseSuffixSetManagedLocation);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3331;
			_localctx._dbName = this.dbSchemaName();
			this.state = 3332;
			this.match(HiveSqlParser.KW_SET);
			this.state = 3333;
			this.match(HiveSqlParser.KW_MANAGEDLOCATION);
			this.state = 3334;
			_localctx._newLocation = this.match(HiveSqlParser.StringLiteral);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public alterStatementSuffixRename(): AlterStatementSuffixRenameContext {
		let _localctx: AlterStatementSuffixRenameContext = new AlterStatementSuffixRenameContext(this._ctx, this.state);
		this.enterRule(_localctx, 502, HiveSqlParser.RULE_alterStatementSuffixRename);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3336;
			this.match(HiveSqlParser.KW_RENAME);
			this.state = 3337;
			this.match(HiveSqlParser.KW_TO);
			this.state = 3338;
			this.tableNameCreate();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public alterStatementSuffixAddCol(): AlterStatementSuffixAddColContext {
		let _localctx: AlterStatementSuffixAddColContext = new AlterStatementSuffixAddColContext(this._ctx, this.state);
		this.enterRule(_localctx, 504, HiveSqlParser.RULE_alterStatementSuffixAddCol);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3342;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case HiveSqlParser.KW_ADD:
				{
				this.state = 3340;
				_localctx._add = this.match(HiveSqlParser.KW_ADD);
				}
				break;
			case HiveSqlParser.KW_REPLACE:
				{
				this.state = 3341;
				_localctx._replace = this.match(HiveSqlParser.KW_REPLACE);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			this.state = 3344;
			this.match(HiveSqlParser.KW_COLUMNS);
			this.state = 3345;
			this.match(HiveSqlParser.LPAREN);
			this.state = 3346;
			this.columnNameTypeList();
			this.state = 3347;
			this.match(HiveSqlParser.RPAREN);
			this.state = 3349;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === HiveSqlParser.KW_CASCADE || _la === HiveSqlParser.KW_RESTRICT) {
				{
				this.state = 3348;
				this.restrictOrCascade();
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public alterStatementSuffixAddConstraint(): AlterStatementSuffixAddConstraintContext {
		let _localctx: AlterStatementSuffixAddConstraintContext = new AlterStatementSuffixAddConstraintContext(this._ctx, this.state);
		this.enterRule(_localctx, 506, HiveSqlParser.RULE_alterStatementSuffixAddConstraint);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3351;
			this.match(HiveSqlParser.KW_ADD);
			this.state = 3354;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 351, this._ctx) ) {
			case 1:
				{
				this.state = 3352;
				_localctx._fk = this.alterForeignKeyWithName();
				}
				break;

			case 2:
				{
				this.state = 3353;
				this.alterConstraintWithName();
				}
				break;
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public alterStatementSuffixUpdateColumns(): AlterStatementSuffixUpdateColumnsContext {
		let _localctx: AlterStatementSuffixUpdateColumnsContext = new AlterStatementSuffixUpdateColumnsContext(this._ctx, this.state);
		this.enterRule(_localctx, 508, HiveSqlParser.RULE_alterStatementSuffixUpdateColumns);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3356;
			this.match(HiveSqlParser.KW_UPDATE);
			this.state = 3357;
			this.match(HiveSqlParser.KW_COLUMNS);
			this.state = 3359;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === HiveSqlParser.KW_CASCADE || _la === HiveSqlParser.KW_RESTRICT) {
				{
				this.state = 3358;
				this.restrictOrCascade();
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public alterStatementSuffixProtections(): AlterStatementSuffixProtectionsContext {
		let _localctx: AlterStatementSuffixProtectionsContext = new AlterStatementSuffixProtectionsContext(this._ctx, this.state);
		this.enterRule(_localctx, 510, HiveSqlParser.RULE_alterStatementSuffixProtections);
		let _la: number;
		try {
			this.state = 3369;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 354, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 3361;
				this.enableSpecification();
				this.state = 3362;
				this.match(HiveSqlParser.KW_NO_DROP);
				this.state = 3364;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === HiveSqlParser.KW_CASCADE) {
					{
					this.state = 3363;
					this.match(HiveSqlParser.KW_CASCADE);
					}
				}

				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 3366;
				this.enableSpecification();
				this.state = 3367;
				this.match(HiveSqlParser.KW_OFFLINE);
				}
				break;
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public alterStatementSuffixDropConstraint(): AlterStatementSuffixDropConstraintContext {
		let _localctx: AlterStatementSuffixDropConstraintContext = new AlterStatementSuffixDropConstraintContext(this._ctx, this.state);
		this.enterRule(_localctx, 512, HiveSqlParser.RULE_alterStatementSuffixDropConstraint);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3371;
			this.match(HiveSqlParser.KW_DROP);
			this.state = 3372;
			this.match(HiveSqlParser.KW_CONSTRAINT);
			this.state = 3373;
			_localctx._cName = this.id_();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public alterStatementSuffixRenameCol(): AlterStatementSuffixRenameColContext {
		let _localctx: AlterStatementSuffixRenameColContext = new AlterStatementSuffixRenameColContext(this._ctx, this.state);
		this.enterRule(_localctx, 514, HiveSqlParser.RULE_alterStatementSuffixRenameCol);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3375;
			this.match(HiveSqlParser.KW_CHANGE);
			this.state = 3377;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === HiveSqlParser.KW_COLUMN) {
				{
				this.state = 3376;
				this.match(HiveSqlParser.KW_COLUMN);
				}
			}

			this.state = 3379;
			_localctx._oldName = this.columnName();
			this.state = 3380;
			_localctx._newName = this.columnNameCreate();
			this.state = 3381;
			this.colType();
			this.state = 3383;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === HiveSqlParser.KW_CHECK || _la === HiveSqlParser.KW_CONSTRAINT || _la === HiveSqlParser.KW_DEFAULT || _la === HiveSqlParser.KW_NOT || _la === HiveSqlParser.KW_PRIMARY || _la === HiveSqlParser.KW_REFERENCES || _la === HiveSqlParser.KW_UNIQUE) {
				{
				this.state = 3382;
				this.alterColumnConstraint();
				}
			}

			this.state = 3387;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === HiveSqlParser.KW_COMMENT) {
				{
				this.state = 3385;
				this.match(HiveSqlParser.KW_COMMENT);
				this.state = 3386;
				_localctx._comment = this.match(HiveSqlParser.StringLiteral);
				}
			}

			this.state = 3390;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === HiveSqlParser.KW_AFTER || _la === HiveSqlParser.KW_FIRST) {
				{
				this.state = 3389;
				this.alterStatementChangeColPosition();
				}
			}

			this.state = 3393;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === HiveSqlParser.KW_CASCADE || _la === HiveSqlParser.KW_RESTRICT) {
				{
				this.state = 3392;
				this.restrictOrCascade();
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public alterStatementSuffixUpdateStatsCol(): AlterStatementSuffixUpdateStatsColContext {
		let _localctx: AlterStatementSuffixUpdateStatsColContext = new AlterStatementSuffixUpdateStatsColContext(this._ctx, this.state);
		this.enterRule(_localctx, 516, HiveSqlParser.RULE_alterStatementSuffixUpdateStatsCol);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3395;
			this.match(HiveSqlParser.KW_UPDATE);
			this.state = 3396;
			this.match(HiveSqlParser.KW_STATISTICS);
			this.state = 3397;
			this.match(HiveSqlParser.KW_FOR);
			this.state = 3399;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === HiveSqlParser.KW_COLUMN) {
				{
				this.state = 3398;
				this.match(HiveSqlParser.KW_COLUMN);
				}
			}

			this.state = 3401;
			_localctx._colName = this.columnName();
			this.state = 3402;
			this.match(HiveSqlParser.KW_SET);
			this.state = 3403;
			this.tableProperties();
			this.state = 3406;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === HiveSqlParser.KW_COMMENT) {
				{
				this.state = 3404;
				this.match(HiveSqlParser.KW_COMMENT);
				this.state = 3405;
				_localctx._comment = this.match(HiveSqlParser.StringLiteral);
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public alterStatementSuffixUpdateStats(): AlterStatementSuffixUpdateStatsContext {
		let _localctx: AlterStatementSuffixUpdateStatsContext = new AlterStatementSuffixUpdateStatsContext(this._ctx, this.state);
		this.enterRule(_localctx, 518, HiveSqlParser.RULE_alterStatementSuffixUpdateStats);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3408;
			this.match(HiveSqlParser.KW_UPDATE);
			this.state = 3409;
			this.match(HiveSqlParser.KW_STATISTICS);
			this.state = 3410;
			this.match(HiveSqlParser.KW_SET);
			this.state = 3411;
			this.tableProperties();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public alterStatementChangeColPosition(): AlterStatementChangeColPositionContext {
		let _localctx: AlterStatementChangeColPositionContext = new AlterStatementChangeColPositionContext(this._ctx, this.state);
		this.enterRule(_localctx, 520, HiveSqlParser.RULE_alterStatementChangeColPosition);
		try {
			this.state = 3416;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case HiveSqlParser.KW_FIRST:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 3413;
				_localctx._first = this.match(HiveSqlParser.KW_FIRST);
				}
				break;
			case HiveSqlParser.KW_AFTER:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 3414;
				this.match(HiveSqlParser.KW_AFTER);
				this.state = 3415;
				_localctx._afterCol = this.id_();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public alterStatementSuffixAddPartitions(): AlterStatementSuffixAddPartitionsContext {
		let _localctx: AlterStatementSuffixAddPartitionsContext = new AlterStatementSuffixAddPartitionsContext(this._ctx, this.state);
		this.enterRule(_localctx, 522, HiveSqlParser.RULE_alterStatementSuffixAddPartitions);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3418;
			this.match(HiveSqlParser.KW_ADD);
			this.state = 3420;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === HiveSqlParser.KW_IF) {
				{
				this.state = 3419;
				this.ifNotExists();
				}
			}

			this.state = 3423;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			do {
				{
				{
				this.state = 3422;
				this.alterStatementSuffixAddPartitionsElement();
				}
				}
				this.state = 3425;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			} while (_la === HiveSqlParser.KW_PARTITION);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public alterStatementSuffixAddPartitionsElement(): AlterStatementSuffixAddPartitionsElementContext {
		let _localctx: AlterStatementSuffixAddPartitionsElementContext = new AlterStatementSuffixAddPartitionsElementContext(this._ctx, this.state);
		this.enterRule(_localctx, 524, HiveSqlParser.RULE_alterStatementSuffixAddPartitionsElement);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3427;
			this.partitionSpec();
			this.state = 3429;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === HiveSqlParser.KW_LOCATION) {
				{
				this.state = 3428;
				this.partitionLocation();
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public alterStatementSuffixTouch(): AlterStatementSuffixTouchContext {
		let _localctx: AlterStatementSuffixTouchContext = new AlterStatementSuffixTouchContext(this._ctx, this.state);
		this.enterRule(_localctx, 526, HiveSqlParser.RULE_alterStatementSuffixTouch);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3431;
			this.match(HiveSqlParser.KW_TOUCH);
			this.state = 3435;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === HiveSqlParser.KW_PARTITION) {
				{
				{
				this.state = 3432;
				this.partitionSpec();
				}
				}
				this.state = 3437;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public alterStatementSuffixArchive(): AlterStatementSuffixArchiveContext {
		let _localctx: AlterStatementSuffixArchiveContext = new AlterStatementSuffixArchiveContext(this._ctx, this.state);
		this.enterRule(_localctx, 528, HiveSqlParser.RULE_alterStatementSuffixArchive);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3438;
			this.match(HiveSqlParser.KW_ARCHIVE);
			this.state = 3442;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === HiveSqlParser.KW_PARTITION) {
				{
				{
				this.state = 3439;
				this.partitionSpec();
				}
				}
				this.state = 3444;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public alterStatementSuffixUnArchive(): AlterStatementSuffixUnArchiveContext {
		let _localctx: AlterStatementSuffixUnArchiveContext = new AlterStatementSuffixUnArchiveContext(this._ctx, this.state);
		this.enterRule(_localctx, 530, HiveSqlParser.RULE_alterStatementSuffixUnArchive);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3445;
			this.match(HiveSqlParser.KW_UNARCHIVE);
			this.state = 3449;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === HiveSqlParser.KW_PARTITION) {
				{
				{
				this.state = 3446;
				this.partitionSpec();
				}
				}
				this.state = 3451;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public partitionLocation(): PartitionLocationContext {
		let _localctx: PartitionLocationContext = new PartitionLocationContext(this._ctx, this.state);
		this.enterRule(_localctx, 532, HiveSqlParser.RULE_partitionLocation);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3452;
			this.match(HiveSqlParser.KW_LOCATION);
			this.state = 3453;
			_localctx._locn = this.match(HiveSqlParser.StringLiteral);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public alterStatementSuffixRecoverPartitions(): AlterStatementSuffixRecoverPartitionsContext {
		let _localctx: AlterStatementSuffixRecoverPartitionsContext = new AlterStatementSuffixRecoverPartitionsContext(this._ctx, this.state);
		this.enterRule(_localctx, 534, HiveSqlParser.RULE_alterStatementSuffixRecoverPartitions);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3455;
			this.match(HiveSqlParser.KW_RECOVER);
			this.state = 3456;
			this.match(HiveSqlParser.KW_PARTITIONS);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public alterStatementSuffixDropPartitions(): AlterStatementSuffixDropPartitionsContext {
		let _localctx: AlterStatementSuffixDropPartitionsContext = new AlterStatementSuffixDropPartitionsContext(this._ctx, this.state);
		this.enterRule(_localctx, 536, HiveSqlParser.RULE_alterStatementSuffixDropPartitions);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3458;
			this.match(HiveSqlParser.KW_DROP);
			this.state = 3460;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === HiveSqlParser.KW_IF) {
				{
				this.state = 3459;
				this.ifExists();
				}
			}

			this.state = 3462;
			this.match(HiveSqlParser.KW_PARTITION);
			this.state = 3463;
			this.partitionSelectorSpec();
			this.state = 3469;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === HiveSqlParser.COMMA) {
				{
				{
				this.state = 3464;
				this.match(HiveSqlParser.COMMA);
				this.state = 3465;
				this.match(HiveSqlParser.KW_PARTITION);
				this.state = 3466;
				this.partitionSelectorSpec();
				}
				}
				this.state = 3471;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			}
			this.state = 3473;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === HiveSqlParser.KW_IGNORE) {
				{
				this.state = 3472;
				this.dropPartitionsIgnoreClause();
				}
			}

			this.state = 3476;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === HiveSqlParser.KW_PURGE) {
				{
				this.state = 3475;
				this.match(HiveSqlParser.KW_PURGE);
				}
			}

			this.state = 3479;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === HiveSqlParser.KW_FOR) {
				{
				this.state = 3478;
				this.replicationClause();
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public alterStatementSuffixProperties(): AlterStatementSuffixPropertiesContext {
		let _localctx: AlterStatementSuffixPropertiesContext = new AlterStatementSuffixPropertiesContext(this._ctx, this.state);
		this.enterRule(_localctx, 538, HiveSqlParser.RULE_alterStatementSuffixProperties);
		let _la: number;
		try {
			this.state = 3490;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case HiveSqlParser.KW_SET:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 3481;
				this.match(HiveSqlParser.KW_SET);
				this.state = 3482;
				this.match(HiveSqlParser.KW_TBLPROPERTIES);
				this.state = 3483;
				this.tableProperties();
				}
				break;
			case HiveSqlParser.KW_UNSET:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 3484;
				this.match(HiveSqlParser.KW_UNSET);
				this.state = 3485;
				this.match(HiveSqlParser.KW_TBLPROPERTIES);
				this.state = 3487;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === HiveSqlParser.KW_IF) {
					{
					this.state = 3486;
					this.ifExists();
					}
				}

				this.state = 3489;
				this.tableProperties();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public alterViewSuffixProperties(): AlterViewSuffixPropertiesContext {
		let _localctx: AlterViewSuffixPropertiesContext = new AlterViewSuffixPropertiesContext(this._ctx, this.state);
		this.enterRule(_localctx, 540, HiveSqlParser.RULE_alterViewSuffixProperties);
		let _la: number;
		try {
			this.state = 3501;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case HiveSqlParser.KW_SET:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 3492;
				this.match(HiveSqlParser.KW_SET);
				this.state = 3493;
				this.match(HiveSqlParser.KW_TBLPROPERTIES);
				this.state = 3494;
				this.tableProperties();
				}
				break;
			case HiveSqlParser.KW_UNSET:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 3495;
				this.match(HiveSqlParser.KW_UNSET);
				this.state = 3496;
				this.match(HiveSqlParser.KW_TBLPROPERTIES);
				this.state = 3498;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === HiveSqlParser.KW_IF) {
					{
					this.state = 3497;
					this.ifExists();
					}
				}

				this.state = 3500;
				this.tableProperties();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public alterStatementSuffixSerdeProperties(): AlterStatementSuffixSerdePropertiesContext {
		let _localctx: AlterStatementSuffixSerdePropertiesContext = new AlterStatementSuffixSerdePropertiesContext(this._ctx, this.state);
		this.enterRule(_localctx, 542, HiveSqlParser.RULE_alterStatementSuffixSerdeProperties);
		try {
			this.state = 3518;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case HiveSqlParser.KW_SET:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 3503;
				this.match(HiveSqlParser.KW_SET);
				this.state = 3513;
				this._errHandler.sync(this);
				switch (this._input.LA(1)) {
				case HiveSqlParser.KW_SERDE:
					{
					this.state = 3504;
					this.match(HiveSqlParser.KW_SERDE);
					this.state = 3505;
					_localctx._serdeName = this.match(HiveSqlParser.StringLiteral);
					this.state = 3509;
					this._errHandler.sync(this);
					switch ( this.interpreter.adaptivePredict(this._input, 378, this._ctx) ) {
					case 1:
						{
						this.state = 3506;
						this.match(HiveSqlParser.KW_WITH);
						this.state = 3507;
						this.match(HiveSqlParser.KW_SERDEPROPERTIES);
						this.state = 3508;
						this.tableProperties();
						}
						break;
					}
					}
					break;
				case HiveSqlParser.KW_SERDEPROPERTIES:
					{
					this.state = 3511;
					this.match(HiveSqlParser.KW_SERDEPROPERTIES);
					this.state = 3512;
					this.tableProperties();
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				}
				break;
			case HiveSqlParser.KW_UNSET:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 3515;
				this.match(HiveSqlParser.KW_UNSET);
				this.state = 3516;
				this.match(HiveSqlParser.KW_SERDEPROPERTIES);
				this.state = 3517;
				this.tableProperties();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public tablePartitionPrefix(): TablePartitionPrefixContext {
		let _localctx: TablePartitionPrefixContext = new TablePartitionPrefixContext(this._ctx, this.state);
		this.enterRule(_localctx, 544, HiveSqlParser.RULE_tablePartitionPrefix);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3520;
			this.tableName();
			this.state = 3522;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === HiveSqlParser.KW_PARTITION) {
				{
				this.state = 3521;
				this.partitionSpec();
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public alterStatementSuffixFileFormat(): AlterStatementSuffixFileFormatContext {
		let _localctx: AlterStatementSuffixFileFormatContext = new AlterStatementSuffixFileFormatContext(this._ctx, this.state);
		this.enterRule(_localctx, 546, HiveSqlParser.RULE_alterStatementSuffixFileFormat);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3524;
			this.match(HiveSqlParser.KW_SET);
			this.state = 3525;
			this.match(HiveSqlParser.KW_FILEFORMAT);
			this.state = 3526;
			this.fileFormat();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public alterStatementSuffixClusterbySortby(): AlterStatementSuffixClusterbySortbyContext {
		let _localctx: AlterStatementSuffixClusterbySortbyContext = new AlterStatementSuffixClusterbySortbyContext(this._ctx, this.state);
		this.enterRule(_localctx, 548, HiveSqlParser.RULE_alterStatementSuffixClusterbySortby);
		let _la: number;
		try {
			this.state = 3531;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case HiveSqlParser.KW_NOT:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 3528;
				this.match(HiveSqlParser.KW_NOT);
				this.state = 3529;
				_la = this._input.LA(1);
				if (!(_la === HiveSqlParser.KW_CLUSTERED || _la === HiveSqlParser.KW_SORTED)) {
				this._errHandler.recoverInline(this);
				} else {
					if (this._input.LA(1) === Token.EOF) {
						this.matchedEOF = true;
					}

					this._errHandler.reportMatch(this);
					this.consume();
				}
				}
				break;
			case HiveSqlParser.KW_CLUSTERED:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 3530;
				this.tableBuckets();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public alterTblPartitionStatementSuffixSkewedLocation(): AlterTblPartitionStatementSuffixSkewedLocationContext {
		let _localctx: AlterTblPartitionStatementSuffixSkewedLocationContext = new AlterTblPartitionStatementSuffixSkewedLocationContext(this._ctx, this.state);
		this.enterRule(_localctx, 550, HiveSqlParser.RULE_alterTblPartitionStatementSuffixSkewedLocation);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3533;
			this.match(HiveSqlParser.KW_SET);
			this.state = 3534;
			this.match(HiveSqlParser.KW_SKEWED);
			this.state = 3535;
			this.match(HiveSqlParser.KW_LOCATION);
			this.state = 3536;
			this.skewedLocations();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public skewedLocations(): SkewedLocationsContext {
		let _localctx: SkewedLocationsContext = new SkewedLocationsContext(this._ctx, this.state);
		this.enterRule(_localctx, 552, HiveSqlParser.RULE_skewedLocations);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3538;
			this.match(HiveSqlParser.LPAREN);
			this.state = 3539;
			this.skewedLocationsList();
			this.state = 3540;
			this.match(HiveSqlParser.RPAREN);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public skewedLocationsList(): SkewedLocationsListContext {
		let _localctx: SkewedLocationsListContext = new SkewedLocationsListContext(this._ctx, this.state);
		this.enterRule(_localctx, 554, HiveSqlParser.RULE_skewedLocationsList);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3542;
			this.skewedLocationMap();
			this.state = 3547;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === HiveSqlParser.COMMA) {
				{
				{
				this.state = 3543;
				this.match(HiveSqlParser.COMMA);
				this.state = 3544;
				this.skewedLocationMap();
				}
				}
				this.state = 3549;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public skewedLocationMap(): SkewedLocationMapContext {
		let _localctx: SkewedLocationMapContext = new SkewedLocationMapContext(this._ctx, this.state);
		this.enterRule(_localctx, 556, HiveSqlParser.RULE_skewedLocationMap);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3550;
			_localctx._key = this.skewedValueLocationElement();
			this.state = 3551;
			this.match(HiveSqlParser.EQUAL);
			this.state = 3552;
			_localctx._value = this.match(HiveSqlParser.StringLiteral);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public alterStatementSuffixLocation(): AlterStatementSuffixLocationContext {
		let _localctx: AlterStatementSuffixLocationContext = new AlterStatementSuffixLocationContext(this._ctx, this.state);
		this.enterRule(_localctx, 558, HiveSqlParser.RULE_alterStatementSuffixLocation);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3554;
			this.match(HiveSqlParser.KW_SET);
			this.state = 3555;
			this.match(HiveSqlParser.KW_LOCATION);
			this.state = 3556;
			_localctx._newLoc = this.match(HiveSqlParser.StringLiteral);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public alterStatementSuffixSkewedby(): AlterStatementSuffixSkewedbyContext {
		let _localctx: AlterStatementSuffixSkewedbyContext = new AlterStatementSuffixSkewedbyContext(this._ctx, this.state);
		this.enterRule(_localctx, 560, HiveSqlParser.RULE_alterStatementSuffixSkewedby);
		try {
			this.state = 3564;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case HiveSqlParser.KW_SKEWED:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 3558;
				this.tableSkewed();
				}
				break;
			case HiveSqlParser.KW_NOT:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 3559;
				this.match(HiveSqlParser.KW_NOT);
				this.state = 3562;
				this._errHandler.sync(this);
				switch (this._input.LA(1)) {
				case HiveSqlParser.KW_SKEWED:
					{
					this.state = 3560;
					this.match(HiveSqlParser.KW_SKEWED);
					}
					break;
				case HiveSqlParser.KW_STORED:
					{
					this.state = 3561;
					this.storedAsDirs();
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public alterStatementSuffixExchangePartition(): AlterStatementSuffixExchangePartitionContext {
		let _localctx: AlterStatementSuffixExchangePartitionContext = new AlterStatementSuffixExchangePartitionContext(this._ctx, this.state);
		this.enterRule(_localctx, 562, HiveSqlParser.RULE_alterStatementSuffixExchangePartition);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3566;
			this.match(HiveSqlParser.KW_EXCHANGE);
			this.state = 3567;
			this.partitionSpec();
			this.state = 3568;
			this.match(HiveSqlParser.KW_WITH);
			this.state = 3569;
			this.match(HiveSqlParser.KW_TABLE);
			this.state = 3570;
			_localctx._exchangename = this.tableName();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public alterStatementSuffixRenamePart(): AlterStatementSuffixRenamePartContext {
		let _localctx: AlterStatementSuffixRenamePartContext = new AlterStatementSuffixRenamePartContext(this._ctx, this.state);
		this.enterRule(_localctx, 564, HiveSqlParser.RULE_alterStatementSuffixRenamePart);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3572;
			this.match(HiveSqlParser.KW_RENAME);
			this.state = 3573;
			this.match(HiveSqlParser.KW_TO);
			this.state = 3574;
			this.partitionSpec();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public alterStatementSuffixStatsPart(): AlterStatementSuffixStatsPartContext {
		let _localctx: AlterStatementSuffixStatsPartContext = new AlterStatementSuffixStatsPartContext(this._ctx, this.state);
		this.enterRule(_localctx, 566, HiveSqlParser.RULE_alterStatementSuffixStatsPart);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3576;
			this.match(HiveSqlParser.KW_UPDATE);
			this.state = 3577;
			this.match(HiveSqlParser.KW_STATISTICS);
			this.state = 3578;
			this.match(HiveSqlParser.KW_FOR);
			this.state = 3580;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === HiveSqlParser.KW_COLUMN) {
				{
				this.state = 3579;
				this.match(HiveSqlParser.KW_COLUMN);
				}
			}

			this.state = 3582;
			_localctx._colName = this.columnName();
			this.state = 3583;
			this.match(HiveSqlParser.KW_SET);
			this.state = 3584;
			this.tableProperties();
			this.state = 3587;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === HiveSqlParser.KW_COMMENT) {
				{
				this.state = 3585;
				this.match(HiveSqlParser.KW_COMMENT);
				this.state = 3586;
				_localctx._comment = this.match(HiveSqlParser.StringLiteral);
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public alterStatementSuffixMergeFiles(): AlterStatementSuffixMergeFilesContext {
		let _localctx: AlterStatementSuffixMergeFilesContext = new AlterStatementSuffixMergeFilesContext(this._ctx, this.state);
		this.enterRule(_localctx, 568, HiveSqlParser.RULE_alterStatementSuffixMergeFiles);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3589;
			this.match(HiveSqlParser.KW_CONCATENATE);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public alterStatementSuffixBucketNum(): AlterStatementSuffixBucketNumContext {
		let _localctx: AlterStatementSuffixBucketNumContext = new AlterStatementSuffixBucketNumContext(this._ctx, this.state);
		this.enterRule(_localctx, 570, HiveSqlParser.RULE_alterStatementSuffixBucketNum);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3591;
			this.match(HiveSqlParser.KW_INTO);
			this.state = 3592;
			_localctx._num = this.match(HiveSqlParser.Number);
			this.state = 3593;
			this.match(HiveSqlParser.KW_BUCKETS);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public blocking(): BlockingContext {
		let _localctx: BlockingContext = new BlockingContext(this._ctx, this.state);
		this.enterRule(_localctx, 572, HiveSqlParser.RULE_blocking);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3595;
			this.match(HiveSqlParser.KW_AND);
			this.state = 3596;
			this.match(HiveSqlParser.KW_WAIT);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public compactPool(): CompactPoolContext {
		let _localctx: CompactPoolContext = new CompactPoolContext(this._ctx, this.state);
		this.enterRule(_localctx, 574, HiveSqlParser.RULE_compactPool);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3598;
			this.match(HiveSqlParser.KW_POOL);
			this.state = 3599;
			_localctx._poolName = this.match(HiveSqlParser.StringLiteral);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public alterStatementSuffixCompact(): AlterStatementSuffixCompactContext {
		let _localctx: AlterStatementSuffixCompactContext = new AlterStatementSuffixCompactContext(this._ctx, this.state);
		this.enterRule(_localctx, 576, HiveSqlParser.RULE_alterStatementSuffixCompact);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3601;
			this.match(HiveSqlParser.KW_COMPACT);
			this.state = 3602;
			_localctx._compactType = this.match(HiveSqlParser.StringLiteral);
			this.state = 3604;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === HiveSqlParser.KW_AND) {
				{
				this.state = 3603;
				this.blocking();
				}
			}

			this.state = 3607;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === HiveSqlParser.KW_CLUSTERED) {
				{
				this.state = 3606;
				this.tableImplBuckets();
				}
			}

			this.state = 3610;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === HiveSqlParser.KW_ORDER) {
				{
				this.state = 3609;
				this.orderByClause();
				}
			}

			this.state = 3613;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === HiveSqlParser.KW_POOL) {
				{
				this.state = 3612;
				this.compactPool();
				}
			}

			this.state = 3619;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 392, this._ctx) ) {
			case 1:
				{
				this.state = 3615;
				this.match(HiveSqlParser.KW_WITH);
				this.state = 3616;
				this.match(HiveSqlParser.KW_OVERWRITE);
				this.state = 3617;
				this.match(HiveSqlParser.KW_TBLPROPERTIES);
				this.state = 3618;
				this.tableProperties();
				}
				break;
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public alterStatementSuffixSetOwner(): AlterStatementSuffixSetOwnerContext {
		let _localctx: AlterStatementSuffixSetOwnerContext = new AlterStatementSuffixSetOwnerContext(this._ctx, this.state);
		this.enterRule(_localctx, 578, HiveSqlParser.RULE_alterStatementSuffixSetOwner);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3621;
			this.match(HiveSqlParser.KW_SET);
			this.state = 3622;
			this.match(HiveSqlParser.KW_OWNER);
			this.state = 3623;
			this.principalName();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public alterStatementSuffixSetPartSpec(): AlterStatementSuffixSetPartSpecContext {
		let _localctx: AlterStatementSuffixSetPartSpecContext = new AlterStatementSuffixSetPartSpecContext(this._ctx, this.state);
		this.enterRule(_localctx, 580, HiveSqlParser.RULE_alterStatementSuffixSetPartSpec);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3625;
			this.match(HiveSqlParser.KW_SET);
			this.state = 3626;
			this.match(HiveSqlParser.KW_PARTITION);
			this.state = 3627;
			this.match(HiveSqlParser.KW_SPEC);
			this.state = 3628;
			this.match(HiveSqlParser.LPAREN);
			this.state = 3629;
			_localctx._spec = this.partitionTransformSpec();
			this.state = 3630;
			this.match(HiveSqlParser.RPAREN);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public alterStatementSuffixExecute(): AlterStatementSuffixExecuteContext {
		let _localctx: AlterStatementSuffixExecuteContext = new AlterStatementSuffixExecuteContext(this._ctx, this.state);
		this.enterRule(_localctx, 582, HiveSqlParser.RULE_alterStatementSuffixExecute);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3632;
			this.match(HiveSqlParser.KW_EXECUTE);
			this.state = 3642;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case HiveSqlParser.KW_ROLLBACK:
				{
				this.state = 3633;
				this.match(HiveSqlParser.KW_ROLLBACK);
				this.state = 3634;
				this.match(HiveSqlParser.LPAREN);
				this.state = 3635;
				_localctx._rollbackParam = this._input.LT(1);
				_la = this._input.LA(1);
				if (!(_la === HiveSqlParser.StringLiteral || _la === HiveSqlParser.Number)) {
					_localctx._rollbackParam = this._errHandler.recoverInline(this);
				} else {
					if (this._input.LA(1) === Token.EOF) {
						this.matchedEOF = true;
					}

					this._errHandler.reportMatch(this);
					this.consume();
				}
				}
				break;
			case HiveSqlParser.KW_EXPIRE_SNAPSHOTS:
				{
				this.state = 3636;
				this.match(HiveSqlParser.KW_EXPIRE_SNAPSHOTS);
				this.state = 3637;
				this.match(HiveSqlParser.LPAREN);
				this.state = 3638;
				_localctx._expireParam = this.match(HiveSqlParser.StringLiteral);
				}
				break;
			case HiveSqlParser.KW_SET_CURRENT_SNAPSHOT:
				{
				this.state = 3639;
				this.match(HiveSqlParser.KW_SET_CURRENT_SNAPSHOT);
				this.state = 3640;
				this.match(HiveSqlParser.LPAREN);
				this.state = 3641;
				_localctx._snapshotParam = this.match(HiveSqlParser.Number);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			this.state = 3644;
			this.match(HiveSqlParser.RPAREN);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public alterIndexStatementSuffix(): AlterIndexStatementSuffixContext {
		let _localctx: AlterIndexStatementSuffixContext = new AlterIndexStatementSuffixContext(this._ctx, this.state);
		this.enterRule(_localctx, 584, HiveSqlParser.RULE_alterIndexStatementSuffix);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3646;
			this.id_();
			this.state = 3647;
			this.match(HiveSqlParser.KW_ON);
			this.state = 3648;
			this.tableName();
			this.state = 3650;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === HiveSqlParser.KW_PARTITION) {
				{
				this.state = 3649;
				this.partitionSpec();
				}
			}

			this.state = 3652;
			this.match(HiveSqlParser.KW_REBUILD);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public fileFormat(): FileFormatContext {
		let _localctx: FileFormatContext = new FileFormatContext(this._ctx, this.state);
		this.enterRule(_localctx, 586, HiveSqlParser.RULE_fileFormat);
		let _la: number;
		try {
			this.state = 3667;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 396, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 3654;
				this.match(HiveSqlParser.KW_INPUTFORMAT);
				this.state = 3655;
				_localctx._inFmt = this.match(HiveSqlParser.StringLiteral);
				this.state = 3656;
				this.match(HiveSqlParser.KW_OUTPUTFORMAT);
				this.state = 3657;
				_localctx._outFmt = this.match(HiveSqlParser.StringLiteral);
				this.state = 3658;
				this.match(HiveSqlParser.KW_SERDE);
				this.state = 3659;
				_localctx._serdeCls = this.match(HiveSqlParser.StringLiteral);
				this.state = 3664;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === HiveSqlParser.KW_INPUTDRIVER) {
					{
					this.state = 3660;
					this.match(HiveSqlParser.KW_INPUTDRIVER);
					this.state = 3661;
					_localctx._inDriver = this.match(HiveSqlParser.StringLiteral);
					this.state = 3662;
					this.match(HiveSqlParser.KW_OUTPUTDRIVER);
					this.state = 3663;
					_localctx._outDriver = this.match(HiveSqlParser.StringLiteral);
					}
				}

				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 3666;
				_localctx._genericSpec = this.id_();
				}
				break;
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public alterDataConnectorStatementSuffix(): AlterDataConnectorStatementSuffixContext {
		let _localctx: AlterDataConnectorStatementSuffixContext = new AlterDataConnectorStatementSuffixContext(this._ctx, this.state);
		this.enterRule(_localctx, 588, HiveSqlParser.RULE_alterDataConnectorStatementSuffix);
		try {
			this.state = 3672;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 397, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 3669;
				this.alterDataConnectorSuffixProperties();
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 3670;
				this.alterDataConnectorSuffixSetOwner();
				}
				break;

			case 3:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 3671;
				this.alterDataConnectorSuffixSetUrl();
				}
				break;
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public alterDataConnectorSuffixProperties(): AlterDataConnectorSuffixPropertiesContext {
		let _localctx: AlterDataConnectorSuffixPropertiesContext = new AlterDataConnectorSuffixPropertiesContext(this._ctx, this.state);
		this.enterRule(_localctx, 590, HiveSqlParser.RULE_alterDataConnectorSuffixProperties);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3674;
			_localctx._name = this.dbSchemaName();
			this.state = 3675;
			this.match(HiveSqlParser.KW_SET);
			this.state = 3676;
			this.match(HiveSqlParser.KW_DCPROPERTIES);
			this.state = 3677;
			this.dcProperties();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public alterDataConnectorSuffixSetOwner(): AlterDataConnectorSuffixSetOwnerContext {
		let _localctx: AlterDataConnectorSuffixSetOwnerContext = new AlterDataConnectorSuffixSetOwnerContext(this._ctx, this.state);
		this.enterRule(_localctx, 592, HiveSqlParser.RULE_alterDataConnectorSuffixSetOwner);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3679;
			_localctx._dcName = this.dbSchemaName();
			this.state = 3680;
			this.match(HiveSqlParser.KW_SET);
			this.state = 3681;
			this.match(HiveSqlParser.KW_OWNER);
			this.state = 3682;
			this.principalAlterName();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public alterDataConnectorSuffixSetUrl(): AlterDataConnectorSuffixSetUrlContext {
		let _localctx: AlterDataConnectorSuffixSetUrlContext = new AlterDataConnectorSuffixSetUrlContext(this._ctx, this.state);
		this.enterRule(_localctx, 594, HiveSqlParser.RULE_alterDataConnectorSuffixSetUrl);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3684;
			_localctx._dcName = this.dbSchemaName();
			this.state = 3685;
			this.match(HiveSqlParser.KW_SET);
			this.state = 3686;
			this.match(HiveSqlParser.KW_URL);
			this.state = 3687;
			_localctx._newUri = this.match(HiveSqlParser.StringLiteral);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public likeTableOrFile(): LikeTableOrFileContext {
		let _localctx: LikeTableOrFileContext = new LikeTableOrFileContext(this._ctx, this.state);
		this.enterRule(_localctx, 596, HiveSqlParser.RULE_likeTableOrFile);
		try {
			this.state = 3698;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 398, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 3689;
				this.match(HiveSqlParser.KW_LIKE);
				this.state = 3690;
				this.match(HiveSqlParser.KW_FILE);
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 3691;
				this.match(HiveSqlParser.KW_LIKE);
				this.state = 3692;
				this.match(HiveSqlParser.KW_FILE);
				this.state = 3693;
				_localctx._format = this.id_();
				this.state = 3694;
				_localctx._uri = this.match(HiveSqlParser.StringLiteral);
				}
				break;

			case 3:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 3696;
				this.match(HiveSqlParser.KW_LIKE);
				this.state = 3697;
				_localctx._likeName = this.tableName();
				}
				break;
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public createTableStatement(): CreateTableStatementContext {
		let _localctx: CreateTableStatementContext = new CreateTableStatementContext(this._ctx, this.state);
		this.enterRule(_localctx, 598, HiveSqlParser.RULE_createTableStatement);
		let _la: number;
		try {
			this.state = 3823;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 435, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 3700;
				this.match(HiveSqlParser.KW_CREATE);
				this.state = 3702;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === HiveSqlParser.KW_TEMPORARY) {
					{
					this.state = 3701;
					_localctx._temp = this.match(HiveSqlParser.KW_TEMPORARY);
					}
				}

				this.state = 3705;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === HiveSqlParser.KW_TRANSACTIONAL) {
					{
					this.state = 3704;
					_localctx._trans = this.match(HiveSqlParser.KW_TRANSACTIONAL);
					}
				}

				this.state = 3708;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === HiveSqlParser.KW_EXTERNAL) {
					{
					this.state = 3707;
					_localctx._ext = this.match(HiveSqlParser.KW_EXTERNAL);
					}
				}

				this.state = 3710;
				this.match(HiveSqlParser.KW_TABLE);
				this.state = 3712;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === HiveSqlParser.KW_IF) {
					{
					this.state = 3711;
					this.ifNotExists();
					}
				}

				this.state = 3714;
				_localctx._name = this.tableNameCreate();
				this.state = 3765;
				this._errHandler.sync(this);
				switch (this._input.LA(1)) {
				case HiveSqlParser.KW_LIKE:
					{
					this.state = 3715;
					this.likeTableOrFile();
					this.state = 3717;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
					if (_la === HiveSqlParser.KW_PARTITIONED) {
						{
						this.state = 3716;
						this.createTablePartitionSpec();
						}
					}

					this.state = 3720;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
					if (_la === HiveSqlParser.KW_ROW) {
						{
						this.state = 3719;
						this.tableRowFormat();
						}
					}

					this.state = 3723;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
					if (_la === HiveSqlParser.KW_STORED) {
						{
						this.state = 3722;
						this.tableFileFormat();
						}
					}

					this.state = 3726;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
					if (_la === HiveSqlParser.KW_LOCATION) {
						{
						this.state = 3725;
						this.tableLocation();
						}
					}

					this.state = 3729;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
					if (_la === HiveSqlParser.KW_TBLPROPERTIES) {
						{
						this.state = 3728;
						this.tablePropertiesPrefixed();
						}
					}

					}
					break;
				case HiveSqlParser.EOF:
				case HiveSqlParser.KW_ABORT:
				case HiveSqlParser.KW_ALTER:
				case HiveSqlParser.KW_ANALYZE:
				case HiveSqlParser.KW_AS:
				case HiveSqlParser.KW_CLUSTERED:
				case HiveSqlParser.KW_COMMENT:
				case HiveSqlParser.KW_COMMIT:
				case HiveSqlParser.KW_CREATE:
				case HiveSqlParser.KW_DELETE:
				case HiveSqlParser.KW_DESC:
				case HiveSqlParser.KW_DESCRIBE:
				case HiveSqlParser.KW_DISABLE:
				case HiveSqlParser.KW_DISABLED:
				case HiveSqlParser.KW_DROP:
				case HiveSqlParser.KW_ENABLE:
				case HiveSqlParser.KW_ENABLED:
				case HiveSqlParser.KW_EXECUTE:
				case HiveSqlParser.KW_EXPLAIN:
				case HiveSqlParser.KW_EXPORT:
				case HiveSqlParser.KW_FROM:
				case HiveSqlParser.KW_GRANT:
				case HiveSqlParser.KW_IMPORT:
				case HiveSqlParser.KW_INSERT:
				case HiveSqlParser.KW_KILL:
				case HiveSqlParser.KW_LOAD:
				case HiveSqlParser.KW_LOCATION:
				case HiveSqlParser.KW_LOCK:
				case HiveSqlParser.KW_MAP:
				case HiveSqlParser.KW_MERGE:
				case HiveSqlParser.KW_MSCK:
				case HiveSqlParser.KW_PARTITIONED:
				case HiveSqlParser.KW_PREPARE:
				case HiveSqlParser.KW_REDUCE:
				case HiveSqlParser.KW_RELOAD:
				case HiveSqlParser.KW_REPL:
				case HiveSqlParser.KW_REPLACE:
				case HiveSqlParser.KW_REVOKE:
				case HiveSqlParser.KW_ROLLBACK:
				case HiveSqlParser.KW_ROW:
				case HiveSqlParser.KW_SELECT:
				case HiveSqlParser.KW_SET:
				case HiveSqlParser.KW_SHOW:
				case HiveSqlParser.KW_SKEWED:
				case HiveSqlParser.KW_START:
				case HiveSqlParser.KW_STORED:
				case HiveSqlParser.KW_TBLPROPERTIES:
				case HiveSqlParser.KW_TRUNCATE:
				case HiveSqlParser.KW_UNLOCK:
				case HiveSqlParser.KW_UPDATE:
				case HiveSqlParser.KW_USE:
				case HiveSqlParser.KW_VALUES:
				case HiveSqlParser.KW_WITH:
				case HiveSqlParser.SEMICOLON:
				case HiveSqlParser.LPAREN:
					{
					this.state = 3735;
					this._errHandler.sync(this);
					switch ( this.interpreter.adaptivePredict(this._input, 408, this._ctx) ) {
					case 1:
						{
						this.state = 3731;
						this.match(HiveSqlParser.LPAREN);
						this.state = 3732;
						this.columnNameTypeOrConstraintList();
						this.state = 3733;
						this.match(HiveSqlParser.RPAREN);
						}
						break;
					}
					this.state = 3738;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
					if (_la === HiveSqlParser.KW_COMMENT) {
						{
						this.state = 3737;
						this.tableComment();
						}
					}

					this.state = 3741;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
					if (_la === HiveSqlParser.KW_PARTITIONED) {
						{
						this.state = 3740;
						this.createTablePartitionSpec();
						}
					}

					this.state = 3744;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
					if (_la === HiveSqlParser.KW_CLUSTERED) {
						{
						this.state = 3743;
						this.tableBuckets();
						}
					}

					this.state = 3747;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
					if (_la === HiveSqlParser.KW_SKEWED) {
						{
						this.state = 3746;
						this.tableSkewed();
						}
					}

					this.state = 3750;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
					if (_la === HiveSqlParser.KW_ROW) {
						{
						this.state = 3749;
						this.tableRowFormat();
						}
					}

					this.state = 3753;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
					if (_la === HiveSqlParser.KW_STORED) {
						{
						this.state = 3752;
						this.tableFileFormat();
						}
					}

					this.state = 3756;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
					if (_la === HiveSqlParser.KW_LOCATION) {
						{
						this.state = 3755;
						this.tableLocation();
						}
					}

					this.state = 3759;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
					if (_la === HiveSqlParser.KW_TBLPROPERTIES) {
						{
						this.state = 3758;
						this.tablePropertiesPrefixed();
						}
					}

					this.state = 3763;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
					if (_la === HiveSqlParser.KW_AS) {
						{
						this.state = 3761;
						this.match(HiveSqlParser.KW_AS);
						this.state = 3762;
						this.selectStatementWithCTE();
						}
					}

					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 3767;
				this.match(HiveSqlParser.KW_CREATE);
				this.state = 3768;
				_localctx._mgd = this.match(HiveSqlParser.KW_MANAGED);
				this.state = 3769;
				this.match(HiveSqlParser.KW_TABLE);
				this.state = 3771;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === HiveSqlParser.KW_IF) {
					{
					this.state = 3770;
					this.ifNotExists();
					}
				}

				this.state = 3773;
				_localctx._name = this.tableNameCreate();
				this.state = 3821;
				this._errHandler.sync(this);
				switch (this._input.LA(1)) {
				case HiveSqlParser.KW_LIKE:
					{
					this.state = 3774;
					this.likeTableOrFile();
					this.state = 3776;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
					if (_la === HiveSqlParser.KW_ROW) {
						{
						this.state = 3775;
						this.tableRowFormat();
						}
					}

					this.state = 3779;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
					if (_la === HiveSqlParser.KW_STORED) {
						{
						this.state = 3778;
						this.tableFileFormat();
						}
					}

					this.state = 3782;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
					if (_la === HiveSqlParser.KW_LOCATION) {
						{
						this.state = 3781;
						this.tableLocation();
						}
					}

					this.state = 3785;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
					if (_la === HiveSqlParser.KW_TBLPROPERTIES) {
						{
						this.state = 3784;
						this.tablePropertiesPrefixed();
						}
					}

					}
					break;
				case HiveSqlParser.EOF:
				case HiveSqlParser.KW_ABORT:
				case HiveSqlParser.KW_ALTER:
				case HiveSqlParser.KW_ANALYZE:
				case HiveSqlParser.KW_AS:
				case HiveSqlParser.KW_CLUSTERED:
				case HiveSqlParser.KW_COMMENT:
				case HiveSqlParser.KW_COMMIT:
				case HiveSqlParser.KW_CREATE:
				case HiveSqlParser.KW_DELETE:
				case HiveSqlParser.KW_DESC:
				case HiveSqlParser.KW_DESCRIBE:
				case HiveSqlParser.KW_DISABLE:
				case HiveSqlParser.KW_DISABLED:
				case HiveSqlParser.KW_DROP:
				case HiveSqlParser.KW_ENABLE:
				case HiveSqlParser.KW_ENABLED:
				case HiveSqlParser.KW_EXECUTE:
				case HiveSqlParser.KW_EXPLAIN:
				case HiveSqlParser.KW_EXPORT:
				case HiveSqlParser.KW_FROM:
				case HiveSqlParser.KW_GRANT:
				case HiveSqlParser.KW_IMPORT:
				case HiveSqlParser.KW_INSERT:
				case HiveSqlParser.KW_KILL:
				case HiveSqlParser.KW_LOAD:
				case HiveSqlParser.KW_LOCATION:
				case HiveSqlParser.KW_LOCK:
				case HiveSqlParser.KW_MAP:
				case HiveSqlParser.KW_MERGE:
				case HiveSqlParser.KW_MSCK:
				case HiveSqlParser.KW_PARTITIONED:
				case HiveSqlParser.KW_PREPARE:
				case HiveSqlParser.KW_REDUCE:
				case HiveSqlParser.KW_RELOAD:
				case HiveSqlParser.KW_REPL:
				case HiveSqlParser.KW_REPLACE:
				case HiveSqlParser.KW_REVOKE:
				case HiveSqlParser.KW_ROLLBACK:
				case HiveSqlParser.KW_ROW:
				case HiveSqlParser.KW_SELECT:
				case HiveSqlParser.KW_SET:
				case HiveSqlParser.KW_SHOW:
				case HiveSqlParser.KW_SKEWED:
				case HiveSqlParser.KW_START:
				case HiveSqlParser.KW_STORED:
				case HiveSqlParser.KW_TBLPROPERTIES:
				case HiveSqlParser.KW_TRUNCATE:
				case HiveSqlParser.KW_UNLOCK:
				case HiveSqlParser.KW_UPDATE:
				case HiveSqlParser.KW_USE:
				case HiveSqlParser.KW_VALUES:
				case HiveSqlParser.KW_WITH:
				case HiveSqlParser.SEMICOLON:
				case HiveSqlParser.LPAREN:
					{
					this.state = 3791;
					this._errHandler.sync(this);
					switch ( this.interpreter.adaptivePredict(this._input, 424, this._ctx) ) {
					case 1:
						{
						this.state = 3787;
						this.match(HiveSqlParser.LPAREN);
						this.state = 3788;
						this.columnNameTypeOrConstraintList();
						this.state = 3789;
						this.match(HiveSqlParser.RPAREN);
						}
						break;
					}
					this.state = 3794;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
					if (_la === HiveSqlParser.KW_COMMENT) {
						{
						this.state = 3793;
						this.tableComment();
						}
					}

					this.state = 3797;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
					if (_la === HiveSqlParser.KW_PARTITIONED) {
						{
						this.state = 3796;
						this.createTablePartitionSpec();
						}
					}

					this.state = 3800;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
					if (_la === HiveSqlParser.KW_CLUSTERED) {
						{
						this.state = 3799;
						this.tableBuckets();
						}
					}

					this.state = 3803;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
					if (_la === HiveSqlParser.KW_SKEWED) {
						{
						this.state = 3802;
						this.tableSkewed();
						}
					}

					this.state = 3806;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
					if (_la === HiveSqlParser.KW_ROW) {
						{
						this.state = 3805;
						this.tableRowFormat();
						}
					}

					this.state = 3809;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
					if (_la === HiveSqlParser.KW_STORED) {
						{
						this.state = 3808;
						this.tableFileFormat();
						}
					}

					this.state = 3812;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
					if (_la === HiveSqlParser.KW_LOCATION) {
						{
						this.state = 3811;
						this.tableLocation();
						}
					}

					this.state = 3815;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
					if (_la === HiveSqlParser.KW_TBLPROPERTIES) {
						{
						this.state = 3814;
						this.tablePropertiesPrefixed();
						}
					}

					this.state = 3819;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
					if (_la === HiveSqlParser.KW_AS) {
						{
						this.state = 3817;
						this.match(HiveSqlParser.KW_AS);
						this.state = 3818;
						this.selectStatementWithCTE();
						}
					}

					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				}
				break;
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public createDataConnectorStatement(): CreateDataConnectorStatementContext {
		let _localctx: CreateDataConnectorStatementContext = new CreateDataConnectorStatementContext(this._ctx, this.state);
		this.enterRule(_localctx, 600, HiveSqlParser.RULE_createDataConnectorStatement);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3825;
			this.match(HiveSqlParser.KW_CREATE);
			this.state = 3826;
			this.match(HiveSqlParser.KW_DATACONNECTOR);
			this.state = 3828;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === HiveSqlParser.KW_IF) {
				{
				this.state = 3827;
				this.ifNotExists();
				}
			}

			this.state = 3830;
			_localctx._name = this.id_();
			this.state = 3832;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === HiveSqlParser.KW_TYPE) {
				{
				this.state = 3831;
				this.dataConnectorType();
				}
			}

			this.state = 3835;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === HiveSqlParser.KW_URL) {
				{
				this.state = 3834;
				this.dataConnectorUrl();
				}
			}

			this.state = 3838;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === HiveSqlParser.KW_COMMENT) {
				{
				this.state = 3837;
				this.dataConnectorComment();
				}
			}

			this.state = 3843;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 440, this._ctx) ) {
			case 1:
				{
				this.state = 3840;
				this.match(HiveSqlParser.KW_WITH);
				this.state = 3841;
				this.match(HiveSqlParser.KW_DCPROPERTIES);
				this.state = 3842;
				_localctx._dcprops = this.dcProperties();
				}
				break;
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public dataConnectorComment(): DataConnectorCommentContext {
		let _localctx: DataConnectorCommentContext = new DataConnectorCommentContext(this._ctx, this.state);
		this.enterRule(_localctx, 602, HiveSqlParser.RULE_dataConnectorComment);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3845;
			this.match(HiveSqlParser.KW_COMMENT);
			this.state = 3846;
			_localctx._comment = this.match(HiveSqlParser.StringLiteral);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public dataConnectorUrl(): DataConnectorUrlContext {
		let _localctx: DataConnectorUrlContext = new DataConnectorUrlContext(this._ctx, this.state);
		this.enterRule(_localctx, 604, HiveSqlParser.RULE_dataConnectorUrl);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3848;
			this.match(HiveSqlParser.KW_URL);
			this.state = 3849;
			_localctx._url = this.match(HiveSqlParser.StringLiteral);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public dataConnectorType(): DataConnectorTypeContext {
		let _localctx: DataConnectorTypeContext = new DataConnectorTypeContext(this._ctx, this.state);
		this.enterRule(_localctx, 606, HiveSqlParser.RULE_dataConnectorType);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3851;
			this.match(HiveSqlParser.KW_TYPE);
			this.state = 3852;
			_localctx._dcType = this.match(HiveSqlParser.StringLiteral);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public dcProperties(): DcPropertiesContext {
		let _localctx: DcPropertiesContext = new DcPropertiesContext(this._ctx, this.state);
		this.enterRule(_localctx, 608, HiveSqlParser.RULE_dcProperties);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3854;
			this.match(HiveSqlParser.LPAREN);
			this.state = 3855;
			this.dbPropertiesList();
			this.state = 3856;
			this.match(HiveSqlParser.RPAREN);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public dropDataConnectorStatement(): DropDataConnectorStatementContext {
		let _localctx: DropDataConnectorStatementContext = new DropDataConnectorStatementContext(this._ctx, this.state);
		this.enterRule(_localctx, 610, HiveSqlParser.RULE_dropDataConnectorStatement);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3858;
			this.match(HiveSqlParser.KW_DROP);
			this.state = 3859;
			this.match(HiveSqlParser.KW_DATACONNECTOR);
			this.state = 3861;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === HiveSqlParser.KW_IF) {
				{
				this.state = 3860;
				this.ifExists();
				}
			}

			this.state = 3863;
			this.id_();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public tableAllColumns(): TableAllColumnsContext {
		let _localctx: TableAllColumnsContext = new TableAllColumnsContext(this._ctx, this.state);
		this.enterRule(_localctx, 612, HiveSqlParser.RULE_tableAllColumns);
		try {
			this.state = 3870;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case HiveSqlParser.STAR:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 3865;
				this.match(HiveSqlParser.STAR);
				}
				break;
			case HiveSqlParser.KW_ABORT:
			case HiveSqlParser.KW_ACTIVATE:
			case HiveSqlParser.KW_ACTIVE:
			case HiveSqlParser.KW_ADD:
			case HiveSqlParser.KW_ADMIN:
			case HiveSqlParser.KW_AFTER:
			case HiveSqlParser.KW_ALLOC_FRACTION:
			case HiveSqlParser.KW_ANALYZE:
			case HiveSqlParser.KW_ARCHIVE:
			case HiveSqlParser.KW_ASC:
			case HiveSqlParser.KW_AST:
			case HiveSqlParser.KW_AT:
			case HiveSqlParser.KW_AUTOCOMMIT:
			case HiveSqlParser.KW_BATCH:
			case HiveSqlParser.KW_BEFORE:
			case HiveSqlParser.KW_BUCKET:
			case HiveSqlParser.KW_BUCKETS:
			case HiveSqlParser.KW_CACHE:
			case HiveSqlParser.KW_CASCADE:
			case HiveSqlParser.KW_CBO:
			case HiveSqlParser.KW_CHANGE:
			case HiveSqlParser.KW_CHECK:
			case HiveSqlParser.KW_CLUSTER:
			case HiveSqlParser.KW_CLUSTERED:
			case HiveSqlParser.KW_CLUSTERSTATUS:
			case HiveSqlParser.KW_COLLECTION:
			case HiveSqlParser.KW_COLUMNS:
			case HiveSqlParser.KW_COMMENT:
			case HiveSqlParser.KW_COMPACT:
			case HiveSqlParser.KW_COMPACTIONS:
			case HiveSqlParser.KW_COMPUTE:
			case HiveSqlParser.KW_CONCATENATE:
			case HiveSqlParser.KW_CONTINUE:
			case HiveSqlParser.KW_COST:
			case HiveSqlParser.KW_CRON:
			case HiveSqlParser.KW_DATA:
			case HiveSqlParser.KW_DATABASES:
			case HiveSqlParser.KW_DATETIME:
			case HiveSqlParser.KW_DAY:
			case HiveSqlParser.KW_DAYS:
			case HiveSqlParser.KW_DAYOFWEEK:
			case HiveSqlParser.KW_DBPROPERTIES:
			case HiveSqlParser.KW_DCPROPERTIES:
			case HiveSqlParser.KW_DEBUG:
			case HiveSqlParser.KW_DEFAULT:
			case HiveSqlParser.KW_DEFERRED:
			case HiveSqlParser.KW_DEFINED:
			case HiveSqlParser.KW_DELIMITED:
			case HiveSqlParser.KW_DEPENDENCY:
			case HiveSqlParser.KW_DESC:
			case HiveSqlParser.KW_DETAIL:
			case HiveSqlParser.KW_DIRECTORIES:
			case HiveSqlParser.KW_DIRECTORY:
			case HiveSqlParser.KW_DISABLE:
			case HiveSqlParser.KW_DISABLED:
			case HiveSqlParser.KW_DISTRIBUTE:
			case HiveSqlParser.KW_DISTRIBUTED:
			case HiveSqlParser.KW_DO:
			case HiveSqlParser.KW_DUMP:
			case HiveSqlParser.KW_ELEM_TYPE:
			case HiveSqlParser.KW_ENABLE:
			case HiveSqlParser.KW_ENABLED:
			case HiveSqlParser.KW_ENFORCED:
			case HiveSqlParser.KW_ESCAPED:
			case HiveSqlParser.KW_EVERY:
			case HiveSqlParser.KW_EXCLUSIVE:
			case HiveSqlParser.KW_EXECUTE:
			case HiveSqlParser.KW_EXECUTED:
			case HiveSqlParser.KW_EXPIRE_SNAPSHOTS:
			case HiveSqlParser.KW_EXPLAIN:
			case HiveSqlParser.KW_EXPORT:
			case HiveSqlParser.KW_EXPRESSION:
			case HiveSqlParser.KW_FIELDS:
			case HiveSqlParser.KW_FILE:
			case HiveSqlParser.KW_FILEFORMAT:
			case HiveSqlParser.KW_FIRST:
			case HiveSqlParser.KW_FORMAT:
			case HiveSqlParser.KW_FORMATTED:
			case HiveSqlParser.KW_FUNCTIONS:
			case HiveSqlParser.KW_HOLD_DDLTIME:
			case HiveSqlParser.KW_HOUR:
			case HiveSqlParser.KW_HOURS:
			case HiveSqlParser.KW_IDXPROPERTIES:
			case HiveSqlParser.KW_IGNORE:
			case HiveSqlParser.KW_INDEX:
			case HiveSqlParser.KW_INDEXES:
			case HiveSqlParser.KW_INPATH:
			case HiveSqlParser.KW_INPUTDRIVER:
			case HiveSqlParser.KW_INPUTFORMAT:
			case HiveSqlParser.KW_ISOLATION:
			case HiveSqlParser.KW_ITEMS:
			case HiveSqlParser.KW_JAR:
			case HiveSqlParser.KW_JOINCOST:
			case HiveSqlParser.KW_KEY:
			case HiveSqlParser.KW_KEYS:
			case HiveSqlParser.KW_KEY_TYPE:
			case HiveSqlParser.KW_KILL:
			case HiveSqlParser.KW_LAST:
			case HiveSqlParser.KW_LEVEL:
			case HiveSqlParser.KW_LIMIT:
			case HiveSqlParser.KW_LINES:
			case HiveSqlParser.KW_LOAD:
			case HiveSqlParser.KW_LOCATION:
			case HiveSqlParser.KW_LOCK:
			case HiveSqlParser.KW_LOCKS:
			case HiveSqlParser.KW_LOGICAL:
			case HiveSqlParser.KW_LONG:
			case HiveSqlParser.KW_MANAGED:
			case HiveSqlParser.KW_MANAGEDLOCATION:
			case HiveSqlParser.KW_MANAGEMENT:
			case HiveSqlParser.KW_MAPJOIN:
			case HiveSqlParser.KW_MAPPING:
			case HiveSqlParser.KW_MATCHED:
			case HiveSqlParser.KW_MATERIALIZED:
			case HiveSqlParser.KW_METADATA:
			case HiveSqlParser.KW_MINUTE:
			case HiveSqlParser.KW_MINUTES:
			case HiveSqlParser.KW_MONTH:
			case HiveSqlParser.KW_MONTHS:
			case HiveSqlParser.KW_MOVE:
			case HiveSqlParser.KW_MSCK:
			case HiveSqlParser.KW_NORELY:
			case HiveSqlParser.KW_NOSCAN:
			case HiveSqlParser.KW_NOVALIDATE:
			case HiveSqlParser.KW_NO_DROP:
			case HiveSqlParser.KW_NULLS:
			case HiveSqlParser.KW_OFFLINE:
			case HiveSqlParser.KW_OFFSET:
			case HiveSqlParser.KW_OPERATOR:
			case HiveSqlParser.KW_OPTION:
			case HiveSqlParser.KW_OUTPUTDRIVER:
			case HiveSqlParser.KW_OUTPUTFORMAT:
			case HiveSqlParser.KW_OVERWRITE:
			case HiveSqlParser.KW_OWNER:
			case HiveSqlParser.KW_PARTITIONED:
			case HiveSqlParser.KW_PARTITIONS:
			case HiveSqlParser.KW_PATH:
			case HiveSqlParser.KW_PLAN:
			case HiveSqlParser.KW_PLANS:
			case HiveSqlParser.KW_PLUS:
			case HiveSqlParser.KW_POOL:
			case HiveSqlParser.KW_PRINCIPALS:
			case HiveSqlParser.KW_PROTECTION:
			case HiveSqlParser.KW_PURGE:
			case HiveSqlParser.KW_QUARTER:
			case HiveSqlParser.KW_QUERY:
			case HiveSqlParser.KW_QUERY_PARALLELISM:
			case HiveSqlParser.KW_READ:
			case HiveSqlParser.KW_READONLY:
			case HiveSqlParser.KW_REBUILD:
			case HiveSqlParser.KW_RECORDREADER:
			case HiveSqlParser.KW_RECORDWRITER:
			case HiveSqlParser.KW_RELOAD:
			case HiveSqlParser.KW_RELY:
			case HiveSqlParser.KW_REMOTE:
			case HiveSqlParser.KW_RENAME:
			case HiveSqlParser.KW_REOPTIMIZATION:
			case HiveSqlParser.KW_REPAIR:
			case HiveSqlParser.KW_REPL:
			case HiveSqlParser.KW_REPLACE:
			case HiveSqlParser.KW_REPLICATION:
			case HiveSqlParser.KW_RESOURCE:
			case HiveSqlParser.KW_RESPECT:
			case HiveSqlParser.KW_RESTRICT:
			case HiveSqlParser.KW_REWRITE:
			case HiveSqlParser.KW_ROLE:
			case HiveSqlParser.KW_ROLES:
			case HiveSqlParser.KW_SCHEDULED:
			case HiveSqlParser.KW_SCHEDULING_POLICY:
			case HiveSqlParser.KW_SCHEMA:
			case HiveSqlParser.KW_SCHEMAS:
			case HiveSqlParser.KW_SECOND:
			case HiveSqlParser.KW_SECONDS:
			case HiveSqlParser.KW_SEMI:
			case HiveSqlParser.KW_SERDE:
			case HiveSqlParser.KW_SERDEPROPERTIES:
			case HiveSqlParser.KW_SERVER:
			case HiveSqlParser.KW_SETS:
			case HiveSqlParser.KW_SET_CURRENT_SNAPSHOT:
			case HiveSqlParser.KW_SHARED:
			case HiveSqlParser.KW_SHOW:
			case HiveSqlParser.KW_SHOW_DATABASE:
			case HiveSqlParser.KW_SKEWED:
			case HiveSqlParser.KW_SNAPSHOT:
			case HiveSqlParser.KW_SORT:
			case HiveSqlParser.KW_SORTED:
			case HiveSqlParser.KW_SPEC:
			case HiveSqlParser.KW_SSL:
			case HiveSqlParser.KW_STATISTICS:
			case HiveSqlParser.KW_STATUS:
			case HiveSqlParser.KW_STORED:
			case HiveSqlParser.KW_STREAMTABLE:
			case HiveSqlParser.KW_STRING:
			case HiveSqlParser.KW_STRUCT:
			case HiveSqlParser.KW_SUMMARY:
			case HiveSqlParser.KW_SYSTEM_TIME:
			case HiveSqlParser.KW_SYSTEM_VERSION:
			case HiveSqlParser.KW_TABLES:
			case HiveSqlParser.KW_TBLPROPERTIES:
			case HiveSqlParser.KW_TEMPORARY:
			case HiveSqlParser.KW_TERMINATED:
			case HiveSqlParser.KW_TIMESTAMPTZ:
			case HiveSqlParser.KW_TINYINT:
			case HiveSqlParser.KW_TOUCH:
			case HiveSqlParser.KW_TRANSACTION:
			case HiveSqlParser.KW_TRANSACTIONAL:
			case HiveSqlParser.KW_TRANSACTIONS:
			case HiveSqlParser.KW_TRIM:
			case HiveSqlParser.KW_TYPE:
			case HiveSqlParser.KW_UNARCHIVE:
			case HiveSqlParser.KW_UNDO:
			case HiveSqlParser.KW_UNIONTYPE:
			case HiveSqlParser.KW_UNKNOWN:
			case HiveSqlParser.KW_UNLOCK:
			case HiveSqlParser.KW_UNMANAGED:
			case HiveSqlParser.KW_UNSET:
			case HiveSqlParser.KW_UNSIGNED:
			case HiveSqlParser.KW_URI:
			case HiveSqlParser.KW_URL:
			case HiveSqlParser.KW_USE:
			case HiveSqlParser.KW_UTC:
			case HiveSqlParser.KW_UTCTIMESTAMP:
			case HiveSqlParser.KW_VALIDATE:
			case HiveSqlParser.KW_VALUE_TYPE:
			case HiveSqlParser.KW_VECTORIZATION:
			case HiveSqlParser.KW_VIEW:
			case HiveSqlParser.KW_VIEWS:
			case HiveSqlParser.KW_WAIT:
			case HiveSqlParser.KW_WEEK:
			case HiveSqlParser.KW_WEEKS:
			case HiveSqlParser.KW_WHILE:
			case HiveSqlParser.KW_WITHIN:
			case HiveSqlParser.KW_WORK:
			case HiveSqlParser.KW_WORKLOAD:
			case HiveSqlParser.KW_WRITE:
			case HiveSqlParser.KW_YEAR:
			case HiveSqlParser.KW_YEARS:
			case HiveSqlParser.KW_ZONE:
			case HiveSqlParser.Identifier:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 3866;
				this.tableOrView();
				this.state = 3867;
				this.match(HiveSqlParser.DOT);
				this.state = 3868;
				this.match(HiveSqlParser.STAR);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public defaultValue(): DefaultValueContext {
		let _localctx: DefaultValueContext = new DefaultValueContext(this._ctx, this.state);
		this.enterRule(_localctx, 614, HiveSqlParser.RULE_defaultValue);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3872;
			this.match(HiveSqlParser.KW_DEFAULT);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public expressionList(): ExpressionListContext {
		let _localctx: ExpressionListContext = new ExpressionListContext(this._ctx, this.state);
		this.enterRule(_localctx, 616, HiveSqlParser.RULE_expressionList);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3874;
			this.expression();
			this.state = 3879;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === HiveSqlParser.COMMA) {
				{
				{
				this.state = 3875;
				this.match(HiveSqlParser.COMMA);
				this.state = 3876;
				this.expression();
				}
				}
				this.state = 3881;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public aliasList(): AliasListContext {
		let _localctx: AliasListContext = new AliasListContext(this._ctx, this.state);
		this.enterRule(_localctx, 618, HiveSqlParser.RULE_aliasList);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3882;
			this.id_();
			this.state = 3887;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === HiveSqlParser.COMMA) {
				{
				{
				this.state = 3883;
				this.match(HiveSqlParser.COMMA);
				this.state = 3884;
				this.id_();
				}
				}
				this.state = 3889;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public fromClause(): FromClauseContext {
		let _localctx: FromClauseContext = new FromClauseContext(this._ctx, this.state);
		this.enterRule(_localctx, 620, HiveSqlParser.RULE_fromClause);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3890;
			this.match(HiveSqlParser.KW_FROM);
			this.state = 3891;
			this.fromSource();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public fromSource(): FromSourceContext {
		let _localctx: FromSourceContext = new FromSourceContext(this._ctx, this.state);
		this.enterRule(_localctx, 622, HiveSqlParser.RULE_fromSource);
		let _la: number;
		try {
			this.state = 3902;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case HiveSqlParser.KW_UNIQUEJOIN:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 3893;
				this.uniqueJoinToken();
				this.state = 3894;
				this.uniqueJoinSource();
				this.state = 3897;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				do {
					{
					{
					this.state = 3895;
					this.match(HiveSqlParser.COMMA);
					this.state = 3896;
					this.uniqueJoinSource();
					}
					}
					this.state = 3899;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
				} while (_la === HiveSqlParser.COMMA);
				}
				break;
			case HiveSqlParser.KW_ABORT:
			case HiveSqlParser.KW_ACTIVATE:
			case HiveSqlParser.KW_ACTIVE:
			case HiveSqlParser.KW_ADD:
			case HiveSqlParser.KW_ADMIN:
			case HiveSqlParser.KW_AFTER:
			case HiveSqlParser.KW_ALLOC_FRACTION:
			case HiveSqlParser.KW_ANALYZE:
			case HiveSqlParser.KW_ARCHIVE:
			case HiveSqlParser.KW_ASC:
			case HiveSqlParser.KW_AST:
			case HiveSqlParser.KW_AT:
			case HiveSqlParser.KW_AUTOCOMMIT:
			case HiveSqlParser.KW_BATCH:
			case HiveSqlParser.KW_BEFORE:
			case HiveSqlParser.KW_BUCKET:
			case HiveSqlParser.KW_BUCKETS:
			case HiveSqlParser.KW_CACHE:
			case HiveSqlParser.KW_CASCADE:
			case HiveSqlParser.KW_CBO:
			case HiveSqlParser.KW_CHANGE:
			case HiveSqlParser.KW_CHECK:
			case HiveSqlParser.KW_CLUSTER:
			case HiveSqlParser.KW_CLUSTERED:
			case HiveSqlParser.KW_CLUSTERSTATUS:
			case HiveSqlParser.KW_COLLECTION:
			case HiveSqlParser.KW_COLUMNS:
			case HiveSqlParser.KW_COMMENT:
			case HiveSqlParser.KW_COMPACT:
			case HiveSqlParser.KW_COMPACTIONS:
			case HiveSqlParser.KW_COMPUTE:
			case HiveSqlParser.KW_CONCATENATE:
			case HiveSqlParser.KW_CONTINUE:
			case HiveSqlParser.KW_COST:
			case HiveSqlParser.KW_CRON:
			case HiveSqlParser.KW_DATA:
			case HiveSqlParser.KW_DATABASES:
			case HiveSqlParser.KW_DATETIME:
			case HiveSqlParser.KW_DAY:
			case HiveSqlParser.KW_DAYS:
			case HiveSqlParser.KW_DAYOFWEEK:
			case HiveSqlParser.KW_DBPROPERTIES:
			case HiveSqlParser.KW_DCPROPERTIES:
			case HiveSqlParser.KW_DEBUG:
			case HiveSqlParser.KW_DEFAULT:
			case HiveSqlParser.KW_DEFERRED:
			case HiveSqlParser.KW_DEFINED:
			case HiveSqlParser.KW_DELIMITED:
			case HiveSqlParser.KW_DEPENDENCY:
			case HiveSqlParser.KW_DESC:
			case HiveSqlParser.KW_DETAIL:
			case HiveSqlParser.KW_DIRECTORIES:
			case HiveSqlParser.KW_DIRECTORY:
			case HiveSqlParser.KW_DISABLE:
			case HiveSqlParser.KW_DISABLED:
			case HiveSqlParser.KW_DISTRIBUTE:
			case HiveSqlParser.KW_DISTRIBUTED:
			case HiveSqlParser.KW_DO:
			case HiveSqlParser.KW_DUMP:
			case HiveSqlParser.KW_ELEM_TYPE:
			case HiveSqlParser.KW_ENABLE:
			case HiveSqlParser.KW_ENABLED:
			case HiveSqlParser.KW_ENFORCED:
			case HiveSqlParser.KW_ESCAPED:
			case HiveSqlParser.KW_EVERY:
			case HiveSqlParser.KW_EXCLUSIVE:
			case HiveSqlParser.KW_EXECUTE:
			case HiveSqlParser.KW_EXECUTED:
			case HiveSqlParser.KW_EXPIRE_SNAPSHOTS:
			case HiveSqlParser.KW_EXPLAIN:
			case HiveSqlParser.KW_EXPORT:
			case HiveSqlParser.KW_EXPRESSION:
			case HiveSqlParser.KW_FIELDS:
			case HiveSqlParser.KW_FILE:
			case HiveSqlParser.KW_FILEFORMAT:
			case HiveSqlParser.KW_FIRST:
			case HiveSqlParser.KW_FORMAT:
			case HiveSqlParser.KW_FORMATTED:
			case HiveSqlParser.KW_FUNCTIONS:
			case HiveSqlParser.KW_HOLD_DDLTIME:
			case HiveSqlParser.KW_HOUR:
			case HiveSqlParser.KW_HOURS:
			case HiveSqlParser.KW_IDXPROPERTIES:
			case HiveSqlParser.KW_IGNORE:
			case HiveSqlParser.KW_INDEX:
			case HiveSqlParser.KW_INDEXES:
			case HiveSqlParser.KW_INPATH:
			case HiveSqlParser.KW_INPUTDRIVER:
			case HiveSqlParser.KW_INPUTFORMAT:
			case HiveSqlParser.KW_ISOLATION:
			case HiveSqlParser.KW_ITEMS:
			case HiveSqlParser.KW_JAR:
			case HiveSqlParser.KW_JOINCOST:
			case HiveSqlParser.KW_KEY:
			case HiveSqlParser.KW_KEYS:
			case HiveSqlParser.KW_KEY_TYPE:
			case HiveSqlParser.KW_KILL:
			case HiveSqlParser.KW_LAST:
			case HiveSqlParser.KW_LEVEL:
			case HiveSqlParser.KW_LIMIT:
			case HiveSqlParser.KW_LINES:
			case HiveSqlParser.KW_LOAD:
			case HiveSqlParser.KW_LOCATION:
			case HiveSqlParser.KW_LOCK:
			case HiveSqlParser.KW_LOCKS:
			case HiveSqlParser.KW_LOGICAL:
			case HiveSqlParser.KW_LONG:
			case HiveSqlParser.KW_MANAGED:
			case HiveSqlParser.KW_MANAGEDLOCATION:
			case HiveSqlParser.KW_MANAGEMENT:
			case HiveSqlParser.KW_MAPJOIN:
			case HiveSqlParser.KW_MAPPING:
			case HiveSqlParser.KW_MATCHED:
			case HiveSqlParser.KW_MATERIALIZED:
			case HiveSqlParser.KW_METADATA:
			case HiveSqlParser.KW_MINUTE:
			case HiveSqlParser.KW_MINUTES:
			case HiveSqlParser.KW_MONTH:
			case HiveSqlParser.KW_MONTHS:
			case HiveSqlParser.KW_MOVE:
			case HiveSqlParser.KW_MSCK:
			case HiveSqlParser.KW_NORELY:
			case HiveSqlParser.KW_NOSCAN:
			case HiveSqlParser.KW_NOVALIDATE:
			case HiveSqlParser.KW_NO_DROP:
			case HiveSqlParser.KW_NULLS:
			case HiveSqlParser.KW_OFFLINE:
			case HiveSqlParser.KW_OFFSET:
			case HiveSqlParser.KW_OPERATOR:
			case HiveSqlParser.KW_OPTION:
			case HiveSqlParser.KW_OUTPUTDRIVER:
			case HiveSqlParser.KW_OUTPUTFORMAT:
			case HiveSqlParser.KW_OVERWRITE:
			case HiveSqlParser.KW_OWNER:
			case HiveSqlParser.KW_PARTITIONED:
			case HiveSqlParser.KW_PARTITIONS:
			case HiveSqlParser.KW_PATH:
			case HiveSqlParser.KW_PLAN:
			case HiveSqlParser.KW_PLANS:
			case HiveSqlParser.KW_PLUS:
			case HiveSqlParser.KW_POOL:
			case HiveSqlParser.KW_PRINCIPALS:
			case HiveSqlParser.KW_PROTECTION:
			case HiveSqlParser.KW_PURGE:
			case HiveSqlParser.KW_QUARTER:
			case HiveSqlParser.KW_QUERY:
			case HiveSqlParser.KW_QUERY_PARALLELISM:
			case HiveSqlParser.KW_READ:
			case HiveSqlParser.KW_READONLY:
			case HiveSqlParser.KW_REBUILD:
			case HiveSqlParser.KW_RECORDREADER:
			case HiveSqlParser.KW_RECORDWRITER:
			case HiveSqlParser.KW_RELOAD:
			case HiveSqlParser.KW_RELY:
			case HiveSqlParser.KW_REMOTE:
			case HiveSqlParser.KW_RENAME:
			case HiveSqlParser.KW_REOPTIMIZATION:
			case HiveSqlParser.KW_REPAIR:
			case HiveSqlParser.KW_REPL:
			case HiveSqlParser.KW_REPLACE:
			case HiveSqlParser.KW_REPLICATION:
			case HiveSqlParser.KW_RESOURCE:
			case HiveSqlParser.KW_RESPECT:
			case HiveSqlParser.KW_RESTRICT:
			case HiveSqlParser.KW_REWRITE:
			case HiveSqlParser.KW_ROLE:
			case HiveSqlParser.KW_ROLES:
			case HiveSqlParser.KW_SCHEDULED:
			case HiveSqlParser.KW_SCHEDULING_POLICY:
			case HiveSqlParser.KW_SCHEMA:
			case HiveSqlParser.KW_SCHEMAS:
			case HiveSqlParser.KW_SECOND:
			case HiveSqlParser.KW_SECONDS:
			case HiveSqlParser.KW_SEMI:
			case HiveSqlParser.KW_SERDE:
			case HiveSqlParser.KW_SERDEPROPERTIES:
			case HiveSqlParser.KW_SERVER:
			case HiveSqlParser.KW_SETS:
			case HiveSqlParser.KW_SET_CURRENT_SNAPSHOT:
			case HiveSqlParser.KW_SHARED:
			case HiveSqlParser.KW_SHOW:
			case HiveSqlParser.KW_SHOW_DATABASE:
			case HiveSqlParser.KW_SKEWED:
			case HiveSqlParser.KW_SNAPSHOT:
			case HiveSqlParser.KW_SORT:
			case HiveSqlParser.KW_SORTED:
			case HiveSqlParser.KW_SPEC:
			case HiveSqlParser.KW_SSL:
			case HiveSqlParser.KW_STATISTICS:
			case HiveSqlParser.KW_STATUS:
			case HiveSqlParser.KW_STORED:
			case HiveSqlParser.KW_STREAMTABLE:
			case HiveSqlParser.KW_STRING:
			case HiveSqlParser.KW_STRUCT:
			case HiveSqlParser.KW_SUMMARY:
			case HiveSqlParser.KW_SYSTEM_TIME:
			case HiveSqlParser.KW_SYSTEM_VERSION:
			case HiveSqlParser.KW_TABLE:
			case HiveSqlParser.KW_TABLES:
			case HiveSqlParser.KW_TBLPROPERTIES:
			case HiveSqlParser.KW_TEMPORARY:
			case HiveSqlParser.KW_TERMINATED:
			case HiveSqlParser.KW_TIMESTAMPTZ:
			case HiveSqlParser.KW_TINYINT:
			case HiveSqlParser.KW_TOUCH:
			case HiveSqlParser.KW_TRANSACTION:
			case HiveSqlParser.KW_TRANSACTIONAL:
			case HiveSqlParser.KW_TRANSACTIONS:
			case HiveSqlParser.KW_TRIM:
			case HiveSqlParser.KW_TYPE:
			case HiveSqlParser.KW_UNARCHIVE:
			case HiveSqlParser.KW_UNDO:
			case HiveSqlParser.KW_UNIONTYPE:
			case HiveSqlParser.KW_UNKNOWN:
			case HiveSqlParser.KW_UNLOCK:
			case HiveSqlParser.KW_UNMANAGED:
			case HiveSqlParser.KW_UNSET:
			case HiveSqlParser.KW_UNSIGNED:
			case HiveSqlParser.KW_URI:
			case HiveSqlParser.KW_URL:
			case HiveSqlParser.KW_USE:
			case HiveSqlParser.KW_UTC:
			case HiveSqlParser.KW_UTCTIMESTAMP:
			case HiveSqlParser.KW_VALIDATE:
			case HiveSqlParser.KW_VALUE_TYPE:
			case HiveSqlParser.KW_VECTORIZATION:
			case HiveSqlParser.KW_VIEW:
			case HiveSqlParser.KW_VIEWS:
			case HiveSqlParser.KW_WAIT:
			case HiveSqlParser.KW_WEEK:
			case HiveSqlParser.KW_WEEKS:
			case HiveSqlParser.KW_WHILE:
			case HiveSqlParser.KW_WITHIN:
			case HiveSqlParser.KW_WORK:
			case HiveSqlParser.KW_WORKLOAD:
			case HiveSqlParser.KW_WRITE:
			case HiveSqlParser.KW_YEAR:
			case HiveSqlParser.KW_YEARS:
			case HiveSqlParser.KW_ZONE:
			case HiveSqlParser.LPAREN:
			case HiveSqlParser.Identifier:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 3901;
				this.joinSource();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public atomjoinSource(): AtomjoinSourceContext {
		let _localctx: AtomjoinSourceContext = new AtomjoinSourceContext(this._ctx, this.state);
		this.enterRule(_localctx, 624, HiveSqlParser.RULE_atomjoinSource);
		try {
			let _alt: number;
			this.state = 3936;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 451, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 3904;
				this.tableSource();
				this.state = 3908;
				this._errHandler.sync(this);
				_alt = this.interpreter.adaptivePredict(this._input, 447, this._ctx);
				while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) {
					if (_alt === 1) {
						{
						{
						this.state = 3905;
						this.lateralView();
						}
						}
					}
					this.state = 3910;
					this._errHandler.sync(this);
					_alt = this.interpreter.adaptivePredict(this._input, 447, this._ctx);
				}
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 3911;
				this.virtualTableSource();
				this.state = 3915;
				this._errHandler.sync(this);
				_alt = this.interpreter.adaptivePredict(this._input, 448, this._ctx);
				while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) {
					if (_alt === 1) {
						{
						{
						this.state = 3912;
						this.lateralView();
						}
						}
					}
					this.state = 3917;
					this._errHandler.sync(this);
					_alt = this.interpreter.adaptivePredict(this._input, 448, this._ctx);
				}
				}
				break;

			case 3:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 3918;
				this.subQuerySource();
				this.state = 3922;
				this._errHandler.sync(this);
				_alt = this.interpreter.adaptivePredict(this._input, 449, this._ctx);
				while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) {
					if (_alt === 1) {
						{
						{
						this.state = 3919;
						this.lateralView();
						}
						}
					}
					this.state = 3924;
					this._errHandler.sync(this);
					_alt = this.interpreter.adaptivePredict(this._input, 449, this._ctx);
				}
				}
				break;

			case 4:
				this.enterOuterAlt(_localctx, 4);
				{
				this.state = 3925;
				this.partitionedTableFunction();
				this.state = 3929;
				this._errHandler.sync(this);
				_alt = this.interpreter.adaptivePredict(this._input, 450, this._ctx);
				while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) {
					if (_alt === 1) {
						{
						{
						this.state = 3926;
						this.lateralView();
						}
						}
					}
					this.state = 3931;
					this._errHandler.sync(this);
					_alt = this.interpreter.adaptivePredict(this._input, 450, this._ctx);
				}
				}
				break;

			case 5:
				this.enterOuterAlt(_localctx, 5);
				{
				this.state = 3932;
				this.match(HiveSqlParser.LPAREN);
				this.state = 3933;
				this.joinSource();
				this.state = 3934;
				this.match(HiveSqlParser.RPAREN);
				}
				break;
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public joinSource(): JoinSourceContext {
		let _localctx: JoinSourceContext = new JoinSourceContext(this._ctx, this.state);
		this.enterRule(_localctx, 626, HiveSqlParser.RULE_joinSource);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3938;
			this.atomjoinSource();
			this.state = 3949;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === HiveSqlParser.KW_CROSS || ((((_la - 140)) & ~0x1F) === 0 && ((1 << (_la - 140)) & ((1 << (HiveSqlParser.KW_FULL - 140)) | (1 << (HiveSqlParser.KW_INNER - 140)) | (1 << (HiveSqlParser.KW_JOIN - 140)))) !== 0) || _la === HiveSqlParser.KW_LEFT || _la === HiveSqlParser.KW_RIGHT || _la === HiveSqlParser.COMMA) {
				{
				{
				this.state = 3939;
				this.joinToken();
				this.state = 3940;
				this.joinSourcePart();
				this.state = 3945;
				this._errHandler.sync(this);
				switch (this._input.LA(1)) {
				case HiveSqlParser.KW_ON:
					{
					this.state = 3941;
					this.match(HiveSqlParser.KW_ON);
					this.state = 3942;
					this.expression();
					}
					break;
				case HiveSqlParser.KW_USING:
					{
					this.state = 3943;
					this.match(HiveSqlParser.KW_USING);
					this.state = 3944;
					this.columnParenthesesList();
					}
					break;
				case HiveSqlParser.EOF:
				case HiveSqlParser.KW_ABORT:
				case HiveSqlParser.KW_ALTER:
				case HiveSqlParser.KW_ANALYZE:
				case HiveSqlParser.KW_CLUSTER:
				case HiveSqlParser.KW_COMMIT:
				case HiveSqlParser.KW_CREATE:
				case HiveSqlParser.KW_CROSS:
				case HiveSqlParser.KW_DELETE:
				case HiveSqlParser.KW_DESC:
				case HiveSqlParser.KW_DESCRIBE:
				case HiveSqlParser.KW_DISABLE:
				case HiveSqlParser.KW_DISABLED:
				case HiveSqlParser.KW_DISTRIBUTE:
				case HiveSqlParser.KW_DROP:
				case HiveSqlParser.KW_ENABLE:
				case HiveSqlParser.KW_ENABLED:
				case HiveSqlParser.KW_EXCEPT:
				case HiveSqlParser.KW_EXECUTE:
				case HiveSqlParser.KW_EXPLAIN:
				case HiveSqlParser.KW_EXPORT:
				case HiveSqlParser.KW_FROM:
				case HiveSqlParser.KW_FULL:
				case HiveSqlParser.KW_GRANT:
				case HiveSqlParser.KW_GROUP:
				case HiveSqlParser.KW_HAVING:
				case HiveSqlParser.KW_IMPORT:
				case HiveSqlParser.KW_INNER:
				case HiveSqlParser.KW_INSERT:
				case HiveSqlParser.KW_INTERSECT:
				case HiveSqlParser.KW_JOIN:
				case HiveSqlParser.KW_KILL:
				case HiveSqlParser.KW_LEFT:
				case HiveSqlParser.KW_LIMIT:
				case HiveSqlParser.KW_LOAD:
				case HiveSqlParser.KW_LOCK:
				case HiveSqlParser.KW_MAP:
				case HiveSqlParser.KW_MERGE:
				case HiveSqlParser.KW_MINUS:
				case HiveSqlParser.KW_MSCK:
				case HiveSqlParser.KW_ORDER:
				case HiveSqlParser.KW_PREPARE:
				case HiveSqlParser.KW_QUALIFY:
				case HiveSqlParser.KW_REDUCE:
				case HiveSqlParser.KW_RELOAD:
				case HiveSqlParser.KW_REPL:
				case HiveSqlParser.KW_REPLACE:
				case HiveSqlParser.KW_REVOKE:
				case HiveSqlParser.KW_RIGHT:
				case HiveSqlParser.KW_ROLLBACK:
				case HiveSqlParser.KW_SELECT:
				case HiveSqlParser.KW_SET:
				case HiveSqlParser.KW_SHOW:
				case HiveSqlParser.KW_SORT:
				case HiveSqlParser.KW_START:
				case HiveSqlParser.KW_TRUNCATE:
				case HiveSqlParser.KW_UNION:
				case HiveSqlParser.KW_UNLOCK:
				case HiveSqlParser.KW_UPDATE:
				case HiveSqlParser.KW_USE:
				case HiveSqlParser.KW_VALUES:
				case HiveSqlParser.KW_WHERE:
				case HiveSqlParser.KW_WINDOW:
				case HiveSqlParser.KW_WITH:
				case HiveSqlParser.COMMA:
				case HiveSqlParser.SEMICOLON:
				case HiveSqlParser.LPAREN:
				case HiveSqlParser.RPAREN:
					break;
				default:
					break;
				}
				}
				}
				this.state = 3951;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public joinSourcePart(): JoinSourcePartContext {
		let _localctx: JoinSourcePartContext = new JoinSourcePartContext(this._ctx, this.state);
		this.enterRule(_localctx, 628, HiveSqlParser.RULE_joinSourcePart);
		try {
			let _alt: number;
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3956;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 454, this._ctx) ) {
			case 1:
				{
				this.state = 3952;
				this.tableSource();
				}
				break;

			case 2:
				{
				this.state = 3953;
				this.virtualTableSource();
				}
				break;

			case 3:
				{
				this.state = 3954;
				this.subQuerySource();
				}
				break;

			case 4:
				{
				this.state = 3955;
				this.partitionedTableFunction();
				}
				break;
			}
			this.state = 3961;
			this._errHandler.sync(this);
			_alt = this.interpreter.adaptivePredict(this._input, 455, this._ctx);
			while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) {
				if (_alt === 1) {
					{
					{
					this.state = 3958;
					this.lateralView();
					}
					}
				}
				this.state = 3963;
				this._errHandler.sync(this);
				_alt = this.interpreter.adaptivePredict(this._input, 455, this._ctx);
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public uniqueJoinSource(): UniqueJoinSourceContext {
		let _localctx: UniqueJoinSourceContext = new UniqueJoinSourceContext(this._ctx, this.state);
		this.enterRule(_localctx, 630, HiveSqlParser.RULE_uniqueJoinSource);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3965;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === HiveSqlParser.KW_PRESERVE) {
				{
				this.state = 3964;
				this.match(HiveSqlParser.KW_PRESERVE);
				}
			}

			this.state = 3967;
			this.uniqueJoinTableSource();
			this.state = 3968;
			this.uniqueJoinExpr();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public uniqueJoinExpr(): UniqueJoinExprContext {
		let _localctx: UniqueJoinExprContext = new UniqueJoinExprContext(this._ctx, this.state);
		this.enterRule(_localctx, 632, HiveSqlParser.RULE_uniqueJoinExpr);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3970;
			this.match(HiveSqlParser.LPAREN);
			this.state = 3971;
			this.expressionList();
			this.state = 3972;
			this.match(HiveSqlParser.RPAREN);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public uniqueJoinToken(): UniqueJoinTokenContext {
		let _localctx: UniqueJoinTokenContext = new UniqueJoinTokenContext(this._ctx, this.state);
		this.enterRule(_localctx, 634, HiveSqlParser.RULE_uniqueJoinToken);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3974;
			this.match(HiveSqlParser.KW_UNIQUEJOIN);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public joinToken(): JoinTokenContext {
		let _localctx: JoinTokenContext = new JoinTokenContext(this._ctx, this.state);
		this.enterRule(_localctx, 636, HiveSqlParser.RULE_joinToken);
		let _la: number;
		try {
			this.state = 3990;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case HiveSqlParser.COMMA:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 3976;
				this.match(HiveSqlParser.COMMA);
				}
				break;
			case HiveSqlParser.KW_CROSS:
			case HiveSqlParser.KW_FULL:
			case HiveSqlParser.KW_INNER:
			case HiveSqlParser.KW_JOIN:
			case HiveSqlParser.KW_LEFT:
			case HiveSqlParser.KW_RIGHT:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 3987;
				this._errHandler.sync(this);
				switch (this._input.LA(1)) {
				case HiveSqlParser.KW_INNER:
					{
					this.state = 3977;
					this.match(HiveSqlParser.KW_INNER);
					}
					break;
				case HiveSqlParser.KW_CROSS:
					{
					this.state = 3978;
					this.match(HiveSqlParser.KW_CROSS);
					}
					break;
				case HiveSqlParser.KW_FULL:
				case HiveSqlParser.KW_RIGHT:
					{
					this.state = 3979;
					_la = this._input.LA(1);
					if (!(_la === HiveSqlParser.KW_FULL || _la === HiveSqlParser.KW_RIGHT)) {
					this._errHandler.recoverInline(this);
					} else {
						if (this._input.LA(1) === Token.EOF) {
							this.matchedEOF = true;
						}

						this._errHandler.reportMatch(this);
						this.consume();
					}
					this.state = 3981;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
					if (_la === HiveSqlParser.KW_OUTER) {
						{
						this.state = 3980;
						this.match(HiveSqlParser.KW_OUTER);
						}
					}

					}
					break;
				case HiveSqlParser.KW_LEFT:
					{
					this.state = 3983;
					this.match(HiveSqlParser.KW_LEFT);
					this.state = 3985;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
					if (_la === HiveSqlParser.KW_ANTI || _la === HiveSqlParser.KW_OUTER || _la === HiveSqlParser.KW_SEMI) {
						{
						this.state = 3984;
						_la = this._input.LA(1);
						if (!(_la === HiveSqlParser.KW_ANTI || _la === HiveSqlParser.KW_OUTER || _la === HiveSqlParser.KW_SEMI)) {
						this._errHandler.recoverInline(this);
						} else {
							if (this._input.LA(1) === Token.EOF) {
								this.matchedEOF = true;
							}

							this._errHandler.reportMatch(this);
							this.consume();
						}
						}
					}

					}
					break;
				case HiveSqlParser.KW_JOIN:
					break;
				default:
					break;
				}
				this.state = 3989;
				this.match(HiveSqlParser.KW_JOIN);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public lateralView(): LateralViewContext {
		let _localctx: LateralViewContext = new LateralViewContext(this._ctx, this.state);
		this.enterRule(_localctx, 638, HiveSqlParser.RULE_lateralView);
		let _la: number;
		try {
			let _alt: number;
			this.state = 4049;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 470, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 3992;
				this.match(HiveSqlParser.KW_LATERAL);
				this.state = 3993;
				this.match(HiveSqlParser.KW_VIEW);
				this.state = 3994;
				this.match(HiveSqlParser.KW_OUTER);
				this.state = 3995;
				this.function_();
				this.state = 3996;
				this.tableAlias();
				this.state = 4006;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === HiveSqlParser.KW_AS) {
					{
					this.state = 3997;
					this.match(HiveSqlParser.KW_AS);
					this.state = 3998;
					this.id_();
					this.state = 4003;
					this._errHandler.sync(this);
					_alt = this.interpreter.adaptivePredict(this._input, 461, this._ctx);
					while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) {
						if (_alt === 1) {
							{
							{
							this.state = 3999;
							this.match(HiveSqlParser.COMMA);
							this.state = 4000;
							this.id_();
							}
							}
						}
						this.state = 4005;
						this._errHandler.sync(this);
						_alt = this.interpreter.adaptivePredict(this._input, 461, this._ctx);
					}
					}
				}

				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 4009;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === HiveSqlParser.COMMA) {
					{
					this.state = 4008;
					this.match(HiveSqlParser.COMMA);
					}
				}

				this.state = 4011;
				this.match(HiveSqlParser.KW_LATERAL);
				this.state = 4047;
				this._errHandler.sync(this);
				switch (this._input.LA(1)) {
				case HiveSqlParser.KW_VIEW:
					{
					this.state = 4012;
					this.match(HiveSqlParser.KW_VIEW);
					this.state = 4013;
					this.function_();
					this.state = 4014;
					this.tableAlias();
					this.state = 4024;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
					if (_la === HiveSqlParser.KW_AS) {
						{
						this.state = 4015;
						this.match(HiveSqlParser.KW_AS);
						this.state = 4016;
						this.id_();
						this.state = 4021;
						this._errHandler.sync(this);
						_alt = this.interpreter.adaptivePredict(this._input, 464, this._ctx);
						while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) {
							if (_alt === 1) {
								{
								{
								this.state = 4017;
								this.match(HiveSqlParser.COMMA);
								this.state = 4018;
								this.id_();
								}
								}
							}
							this.state = 4023;
							this._errHandler.sync(this);
							_alt = this.interpreter.adaptivePredict(this._input, 464, this._ctx);
						}
						}
					}

					}
					break;
				case HiveSqlParser.KW_TABLE:
					{
					this.state = 4026;
					this.match(HiveSqlParser.KW_TABLE);
					this.state = 4027;
					this.match(HiveSqlParser.LPAREN);
					this.state = 4028;
					this.valuesClause();
					this.state = 4029;
					this.match(HiveSqlParser.RPAREN);
					this.state = 4031;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
					if (_la === HiveSqlParser.KW_AS) {
						{
						this.state = 4030;
						this.match(HiveSqlParser.KW_AS);
						}
					}

					this.state = 4033;
					this.tableAlias();
					this.state = 4045;
					this._errHandler.sync(this);
					switch ( this.interpreter.adaptivePredict(this._input, 468, this._ctx) ) {
					case 1:
						{
						this.state = 4034;
						this.match(HiveSqlParser.LPAREN);
						this.state = 4035;
						this.id_();
						this.state = 4040;
						this._errHandler.sync(this);
						_la = this._input.LA(1);
						while (_la === HiveSqlParser.COMMA) {
							{
							{
							this.state = 4036;
							this.match(HiveSqlParser.COMMA);
							this.state = 4037;
							this.id_();
							}
							}
							this.state = 4042;
							this._errHandler.sync(this);
							_la = this._input.LA(1);
						}
						this.state = 4043;
						this.match(HiveSqlParser.RPAREN);
						}
						break;
					}
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				}
				break;
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public tableAlias(): TableAliasContext {
		let _localctx: TableAliasContext = new TableAliasContext(this._ctx, this.state);
		this.enterRule(_localctx, 640, HiveSqlParser.RULE_tableAlias);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4051;
			this.id_();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public tableBucketSample(): TableBucketSampleContext {
		let _localctx: TableBucketSampleContext = new TableBucketSampleContext(this._ctx, this.state);
		this.enterRule(_localctx, 642, HiveSqlParser.RULE_tableBucketSample);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4053;
			this.match(HiveSqlParser.KW_TABLESAMPLE);
			this.state = 4054;
			this.match(HiveSqlParser.LPAREN);
			this.state = 4055;
			this.match(HiveSqlParser.KW_BUCKET);
			this.state = 4056;
			_localctx._numerator = this.match(HiveSqlParser.Number);
			this.state = 4057;
			this.match(HiveSqlParser.KW_OUT);
			this.state = 4058;
			this.match(HiveSqlParser.KW_OF);
			this.state = 4059;
			_localctx._denominator = this.match(HiveSqlParser.Number);
			this.state = 4069;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === HiveSqlParser.KW_ON) {
				{
				this.state = 4060;
				this.match(HiveSqlParser.KW_ON);
				this.state = 4061;
				_localctx._expression = this.expression();
				_localctx._expr.push(_localctx._expression);
				this.state = 4066;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				while (_la === HiveSqlParser.COMMA) {
					{
					{
					this.state = 4062;
					this.match(HiveSqlParser.COMMA);
					this.state = 4063;
					_localctx._expression = this.expression();
					_localctx._expr.push(_localctx._expression);
					}
					}
					this.state = 4068;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
				}
				}
			}

			this.state = 4071;
			this.match(HiveSqlParser.RPAREN);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public splitSample(): SplitSampleContext {
		let _localctx: SplitSampleContext = new SplitSampleContext(this._ctx, this.state);
		this.enterRule(_localctx, 644, HiveSqlParser.RULE_splitSample);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4073;
			this.match(HiveSqlParser.KW_TABLESAMPLE);
			this.state = 4074;
			this.match(HiveSqlParser.LPAREN);
			this.state = 4078;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case HiveSqlParser.Number:
				{
				this.state = 4075;
				this.match(HiveSqlParser.Number);
				this.state = 4076;
				_la = this._input.LA(1);
				if (!(_la === HiveSqlParser.KW_PERCENT || _la === HiveSqlParser.KW_ROWS)) {
				this._errHandler.recoverInline(this);
				} else {
					if (this._input.LA(1) === Token.EOF) {
						this.matchedEOF = true;
					}

					this._errHandler.reportMatch(this);
					this.consume();
				}
				}
				break;
			case HiveSqlParser.ByteLengthLiteral:
				{
				this.state = 4077;
				this.match(HiveSqlParser.ByteLengthLiteral);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			this.state = 4080;
			this.match(HiveSqlParser.RPAREN);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public tableSample(): TableSampleContext {
		let _localctx: TableSampleContext = new TableSampleContext(this._ctx, this.state);
		this.enterRule(_localctx, 646, HiveSqlParser.RULE_tableSample);
		try {
			this.state = 4084;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 474, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 4082;
				this.tableBucketSample();
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 4083;
				this.splitSample();
				}
				break;
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public tableSource(): TableSourceContext {
		let _localctx: TableSourceContext = new TableSourceContext(this._ctx, this.state);
		this.enterRule(_localctx, 648, HiveSqlParser.RULE_tableSource);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4086;
			_localctx._tabname = this.tableOrView();
			this.state = 4088;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 475, this._ctx) ) {
			case 1:
				{
				this.state = 4087;
				_localctx._props = this.tableProperties();
				}
				break;
			}
			this.state = 4091;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === HiveSqlParser.KW_TABLESAMPLE) {
				{
				this.state = 4090;
				_localctx._ts = this.tableSample();
				}
			}

			this.state = 4094;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === HiveSqlParser.KW_FOR) {
				{
				this.state = 4093;
				_localctx._asOf = this.asOfClause();
				}
			}

			this.state = 4100;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 479, this._ctx) ) {
			case 1:
				{
				this.state = 4097;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === HiveSqlParser.KW_AS) {
					{
					this.state = 4096;
					this.match(HiveSqlParser.KW_AS);
					}
				}

				this.state = 4099;
				_localctx._alias = this.id_();
				}
				break;
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public asOfClause(): AsOfClauseContext {
		let _localctx: AsOfClauseContext = new AsOfClauseContext(this._ctx, this.state);
		this.enterRule(_localctx, 650, HiveSqlParser.RULE_asOfClause);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4102;
			this.match(HiveSqlParser.KW_FOR);
			this.state = 4112;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case HiveSqlParser.KW_SYSTEM_TIME:
				{
				this.state = 4103;
				this.match(HiveSqlParser.KW_SYSTEM_TIME);
				this.state = 4104;
				this.match(HiveSqlParser.KW_AS);
				this.state = 4105;
				this.match(HiveSqlParser.KW_OF);
				this.state = 4106;
				_localctx._asOfTime = this.expression();
				}
				break;
			case HiveSqlParser.KW_FOR:
				{
				this.state = 4107;
				this.match(HiveSqlParser.KW_FOR);
				this.state = 4108;
				this.match(HiveSqlParser.KW_SYSTEM_VERSION);
				this.state = 4109;
				this.match(HiveSqlParser.KW_AS);
				this.state = 4110;
				this.match(HiveSqlParser.KW_OF);
				this.state = 4111;
				_localctx._asOfVersion = this.match(HiveSqlParser.Number);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public uniqueJoinTableSource(): UniqueJoinTableSourceContext {
		let _localctx: UniqueJoinTableSourceContext = new UniqueJoinTableSourceContext(this._ctx, this.state);
		this.enterRule(_localctx, 652, HiveSqlParser.RULE_uniqueJoinTableSource);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4114;
			_localctx._tabname = this.tableOrView();
			this.state = 4116;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === HiveSqlParser.KW_TABLESAMPLE) {
				{
				this.state = 4115;
				_localctx._ts = this.tableSample();
				}
			}

			this.state = 4122;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if ((((_la) & ~0x1F) === 0 && ((1 << _la) & ((1 << HiveSqlParser.KW_ABORT) | (1 << HiveSqlParser.KW_ACTIVATE) | (1 << HiveSqlParser.KW_ACTIVE) | (1 << HiveSqlParser.KW_ADD) | (1 << HiveSqlParser.KW_ADMIN) | (1 << HiveSqlParser.KW_AFTER) | (1 << HiveSqlParser.KW_ALLOC_FRACTION) | (1 << HiveSqlParser.KW_ANALYZE) | (1 << HiveSqlParser.KW_ARCHIVE) | (1 << HiveSqlParser.KW_AS) | (1 << HiveSqlParser.KW_ASC) | (1 << HiveSqlParser.KW_AST) | (1 << HiveSqlParser.KW_AT) | (1 << HiveSqlParser.KW_AUTOCOMMIT) | (1 << HiveSqlParser.KW_BATCH) | (1 << HiveSqlParser.KW_BEFORE) | (1 << HiveSqlParser.KW_BUCKET) | (1 << HiveSqlParser.KW_BUCKETS))) !== 0) || ((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & ((1 << (HiveSqlParser.KW_CACHE - 33)) | (1 << (HiveSqlParser.KW_CASCADE - 33)) | (1 << (HiveSqlParser.KW_CBO - 33)) | (1 << (HiveSqlParser.KW_CHANGE - 33)) | (1 << (HiveSqlParser.KW_CHECK - 33)) | (1 << (HiveSqlParser.KW_CLUSTER - 33)) | (1 << (HiveSqlParser.KW_CLUSTERED - 33)) | (1 << (HiveSqlParser.KW_CLUSTERSTATUS - 33)) | (1 << (HiveSqlParser.KW_COLLECTION - 33)) | (1 << (HiveSqlParser.KW_COLUMNS - 33)) | (1 << (HiveSqlParser.KW_COMMENT - 33)) | (1 << (HiveSqlParser.KW_COMPACT - 33)) | (1 << (HiveSqlParser.KW_COMPACTIONS - 33)) | (1 << (HiveSqlParser.KW_COMPUTE - 33)) | (1 << (HiveSqlParser.KW_CONCATENATE - 33)) | (1 << (HiveSqlParser.KW_CONTINUE - 33)) | (1 << (HiveSqlParser.KW_COST - 33)) | (1 << (HiveSqlParser.KW_CRON - 33)))) !== 0) || ((((_la - 66)) & ~0x1F) === 0 && ((1 << (_la - 66)) & ((1 << (HiveSqlParser.KW_DATA - 66)) | (1 << (HiveSqlParser.KW_DATABASES - 66)) | (1 << (HiveSqlParser.KW_DATETIME - 66)) | (1 << (HiveSqlParser.KW_DAY - 66)) | (1 << (HiveSqlParser.KW_DAYS - 66)) | (1 << (HiveSqlParser.KW_DAYOFWEEK - 66)) | (1 << (HiveSqlParser.KW_DBPROPERTIES - 66)) | (1 << (HiveSqlParser.KW_DCPROPERTIES - 66)) | (1 << (HiveSqlParser.KW_DEBUG - 66)) | (1 << (HiveSqlParser.KW_DEFAULT - 66)) | (1 << (HiveSqlParser.KW_DEFERRED - 66)) | (1 << (HiveSqlParser.KW_DEFINED - 66)) | (1 << (HiveSqlParser.KW_DELIMITED - 66)) | (1 << (HiveSqlParser.KW_DEPENDENCY - 66)) | (1 << (HiveSqlParser.KW_DESC - 66)) | (1 << (HiveSqlParser.KW_DETAIL - 66)) | (1 << (HiveSqlParser.KW_DIRECTORIES - 66)) | (1 << (HiveSqlParser.KW_DIRECTORY - 66)) | (1 << (HiveSqlParser.KW_DISABLE - 66)) | (1 << (HiveSqlParser.KW_DISABLED - 66)) | (1 << (HiveSqlParser.KW_DISTRIBUTE - 66)))) !== 0) || ((((_la - 98)) & ~0x1F) === 0 && ((1 << (_la - 98)) & ((1 << (HiveSqlParser.KW_DISTRIBUTED - 98)) | (1 << (HiveSqlParser.KW_DO - 98)) | (1 << (HiveSqlParser.KW_DUMP - 98)) | (1 << (HiveSqlParser.KW_ELEM_TYPE - 98)) | (1 << (HiveSqlParser.KW_ENABLE - 98)) | (1 << (HiveSqlParser.KW_ENABLED - 98)) | (1 << (HiveSqlParser.KW_ENFORCED - 98)) | (1 << (HiveSqlParser.KW_ESCAPED - 98)) | (1 << (HiveSqlParser.KW_EVERY - 98)) | (1 << (HiveSqlParser.KW_EXCLUSIVE - 98)) | (1 << (HiveSqlParser.KW_EXECUTE - 98)) | (1 << (HiveSqlParser.KW_EXECUTED - 98)) | (1 << (HiveSqlParser.KW_EXPIRE_SNAPSHOTS - 98)) | (1 << (HiveSqlParser.KW_EXPLAIN - 98)) | (1 << (HiveSqlParser.KW_EXPORT - 98)) | (1 << (HiveSqlParser.KW_EXPRESSION - 98)) | (1 << (HiveSqlParser.KW_FIELDS - 98)) | (1 << (HiveSqlParser.KW_FILE - 98)) | (1 << (HiveSqlParser.KW_FILEFORMAT - 98)))) !== 0) || ((((_la - 130)) & ~0x1F) === 0 && ((1 << (_la - 130)) & ((1 << (HiveSqlParser.KW_FIRST - 130)) | (1 << (HiveSqlParser.KW_FORMAT - 130)) | (1 << (HiveSqlParser.KW_FORMATTED - 130)) | (1 << (HiveSqlParser.KW_FUNCTIONS - 130)) | (1 << (HiveSqlParser.KW_HOLD_DDLTIME - 130)) | (1 << (HiveSqlParser.KW_HOUR - 130)) | (1 << (HiveSqlParser.KW_HOURS - 130)) | (1 << (HiveSqlParser.KW_IDXPROPERTIES - 130)) | (1 << (HiveSqlParser.KW_IGNORE - 130)) | (1 << (HiveSqlParser.KW_INDEX - 130)) | (1 << (HiveSqlParser.KW_INDEXES - 130)) | (1 << (HiveSqlParser.KW_INPATH - 130)) | (1 << (HiveSqlParser.KW_INPUTDRIVER - 130)) | (1 << (HiveSqlParser.KW_INPUTFORMAT - 130)))) !== 0) || ((((_la - 168)) & ~0x1F) === 0 && ((1 << (_la - 168)) & ((1 << (HiveSqlParser.KW_ISOLATION - 168)) | (1 << (HiveSqlParser.KW_ITEMS - 168)) | (1 << (HiveSqlParser.KW_JAR - 168)) | (1 << (HiveSqlParser.KW_JOINCOST - 168)) | (1 << (HiveSqlParser.KW_KEY - 168)) | (1 << (HiveSqlParser.KW_KEYS - 168)) | (1 << (HiveSqlParser.KW_KEY_TYPE - 168)) | (1 << (HiveSqlParser.KW_KILL - 168)) | (1 << (HiveSqlParser.KW_LAST - 168)) | (1 << (HiveSqlParser.KW_LEVEL - 168)) | (1 << (HiveSqlParser.KW_LIMIT - 168)) | (1 << (HiveSqlParser.KW_LINES - 168)) | (1 << (HiveSqlParser.KW_LOAD - 168)) | (1 << (HiveSqlParser.KW_LOCATION - 168)) | (1 << (HiveSqlParser.KW_LOCK - 168)) | (1 << (HiveSqlParser.KW_LOCKS - 168)) | (1 << (HiveSqlParser.KW_LOGICAL - 168)) | (1 << (HiveSqlParser.KW_LONG - 168)) | (1 << (HiveSqlParser.KW_MANAGED - 168)) | (1 << (HiveSqlParser.KW_MANAGEDLOCATION - 168)) | (1 << (HiveSqlParser.KW_MANAGEMENT - 168)) | (1 << (HiveSqlParser.KW_MAPJOIN - 168)) | (1 << (HiveSqlParser.KW_MAPPING - 168)))) !== 0) || ((((_la - 200)) & ~0x1F) === 0 && ((1 << (_la - 200)) & ((1 << (HiveSqlParser.KW_MATCHED - 200)) | (1 << (HiveSqlParser.KW_MATERIALIZED - 200)) | (1 << (HiveSqlParser.KW_METADATA - 200)) | (1 << (HiveSqlParser.KW_MINUTE - 200)) | (1 << (HiveSqlParser.KW_MINUTES - 200)) | (1 << (HiveSqlParser.KW_MONTH - 200)) | (1 << (HiveSqlParser.KW_MONTHS - 200)) | (1 << (HiveSqlParser.KW_MOVE - 200)) | (1 << (HiveSqlParser.KW_MSCK - 200)) | (1 << (HiveSqlParser.KW_NORELY - 200)) | (1 << (HiveSqlParser.KW_NOSCAN - 200)) | (1 << (HiveSqlParser.KW_NOVALIDATE - 200)) | (1 << (HiveSqlParser.KW_NO_DROP - 200)) | (1 << (HiveSqlParser.KW_NULLS - 200)) | (1 << (HiveSqlParser.KW_OFFLINE - 200)) | (1 << (HiveSqlParser.KW_OFFSET - 200)) | (1 << (HiveSqlParser.KW_OPERATOR - 200)) | (1 << (HiveSqlParser.KW_OPTION - 200)) | (1 << (HiveSqlParser.KW_OUTPUTDRIVER - 200)))) !== 0) || ((((_la - 232)) & ~0x1F) === 0 && ((1 << (_la - 232)) & ((1 << (HiveSqlParser.KW_OUTPUTFORMAT - 232)) | (1 << (HiveSqlParser.KW_OVERWRITE - 232)) | (1 << (HiveSqlParser.KW_OWNER - 232)) | (1 << (HiveSqlParser.KW_PARTITIONED - 232)) | (1 << (HiveSqlParser.KW_PARTITIONS - 232)) | (1 << (HiveSqlParser.KW_PATH - 232)) | (1 << (HiveSqlParser.KW_PLAN - 232)) | (1 << (HiveSqlParser.KW_PLANS - 232)) | (1 << (HiveSqlParser.KW_PLUS - 232)) | (1 << (HiveSqlParser.KW_POOL - 232)) | (1 << (HiveSqlParser.KW_PRINCIPALS - 232)) | (1 << (HiveSqlParser.KW_PROTECTION - 232)) | (1 << (HiveSqlParser.KW_PURGE - 232)) | (1 << (HiveSqlParser.KW_QUARTER - 232)) | (1 << (HiveSqlParser.KW_QUERY - 232)) | (1 << (HiveSqlParser.KW_QUERY_PARALLELISM - 232)) | (1 << (HiveSqlParser.KW_READ - 232)) | (1 << (HiveSqlParser.KW_READONLY - 232)))) !== 0) || ((((_la - 264)) & ~0x1F) === 0 && ((1 << (_la - 264)) & ((1 << (HiveSqlParser.KW_REBUILD - 264)) | (1 << (HiveSqlParser.KW_RECORDREADER - 264)) | (1 << (HiveSqlParser.KW_RECORDWRITER - 264)) | (1 << (HiveSqlParser.KW_RELOAD - 264)) | (1 << (HiveSqlParser.KW_RELY - 264)) | (1 << (HiveSqlParser.KW_REMOTE - 264)) | (1 << (HiveSqlParser.KW_RENAME - 264)) | (1 << (HiveSqlParser.KW_REOPTIMIZATION - 264)) | (1 << (HiveSqlParser.KW_REPAIR - 264)) | (1 << (HiveSqlParser.KW_REPL - 264)) | (1 << (HiveSqlParser.KW_REPLACE - 264)) | (1 << (HiveSqlParser.KW_REPLICATION - 264)) | (1 << (HiveSqlParser.KW_RESOURCE - 264)) | (1 << (HiveSqlParser.KW_RESPECT - 264)) | (1 << (HiveSqlParser.KW_RESTRICT - 264)) | (1 << (HiveSqlParser.KW_REWRITE - 264)) | (1 << (HiveSqlParser.KW_ROLE - 264)) | (1 << (HiveSqlParser.KW_ROLES - 264)) | (1 << (HiveSqlParser.KW_SCHEDULED - 264)) | (1 << (HiveSqlParser.KW_SCHEDULING_POLICY - 264)) | (1 << (HiveSqlParser.KW_SCHEMA - 264)) | (1 << (HiveSqlParser.KW_SCHEMAS - 264)))) !== 0) || ((((_la - 296)) & ~0x1F) === 0 && ((1 << (_la - 296)) & ((1 << (HiveSqlParser.KW_SECOND - 296)) | (1 << (HiveSqlParser.KW_SECONDS - 296)) | (1 << (HiveSqlParser.KW_SEMI - 296)) | (1 << (HiveSqlParser.KW_SERDE - 296)) | (1 << (HiveSqlParser.KW_SERDEPROPERTIES - 296)) | (1 << (HiveSqlParser.KW_SERVER - 296)) | (1 << (HiveSqlParser.KW_SETS - 296)) | (1 << (HiveSqlParser.KW_SET_CURRENT_SNAPSHOT - 296)) | (1 << (HiveSqlParser.KW_SHARED - 296)) | (1 << (HiveSqlParser.KW_SHOW - 296)) | (1 << (HiveSqlParser.KW_SHOW_DATABASE - 296)) | (1 << (HiveSqlParser.KW_SKEWED - 296)) | (1 << (HiveSqlParser.KW_SNAPSHOT - 296)) | (1 << (HiveSqlParser.KW_SORT - 296)) | (1 << (HiveSqlParser.KW_SORTED - 296)) | (1 << (HiveSqlParser.KW_SPEC - 296)) | (1 << (HiveSqlParser.KW_SSL - 296)) | (1 << (HiveSqlParser.KW_STATISTICS - 296)) | (1 << (HiveSqlParser.KW_STATUS - 296)) | (1 << (HiveSqlParser.KW_STORED - 296)) | (1 << (HiveSqlParser.KW_STREAMTABLE - 296)) | (1 << (HiveSqlParser.KW_STRING - 296)) | (1 << (HiveSqlParser.KW_STRUCT - 296)) | (1 << (HiveSqlParser.KW_SUMMARY - 296)) | (1 << (HiveSqlParser.KW_SYSTEM_TIME - 296)) | (1 << (HiveSqlParser.KW_SYSTEM_VERSION - 296)))) !== 0) || ((((_la - 329)) & ~0x1F) === 0 && ((1 << (_la - 329)) & ((1 << (HiveSqlParser.KW_TABLES - 329)) | (1 << (HiveSqlParser.KW_TBLPROPERTIES - 329)) | (1 << (HiveSqlParser.KW_TEMPORARY - 329)) | (1 << (HiveSqlParser.KW_TERMINATED - 329)) | (1 << (HiveSqlParser.KW_TIMESTAMPTZ - 329)) | (1 << (HiveSqlParser.KW_TINYINT - 329)) | (1 << (HiveSqlParser.KW_TOUCH - 329)) | (1 << (HiveSqlParser.KW_TRANSACTION - 329)) | (1 << (HiveSqlParser.KW_TRANSACTIONAL - 329)) | (1 << (HiveSqlParser.KW_TRANSACTIONS - 329)) | (1 << (HiveSqlParser.KW_TRIM - 329)) | (1 << (HiveSqlParser.KW_TYPE - 329)) | (1 << (HiveSqlParser.KW_UNARCHIVE - 329)) | (1 << (HiveSqlParser.KW_UNDO - 329)) | (1 << (HiveSqlParser.KW_UNIONTYPE - 329)) | (1 << (HiveSqlParser.KW_UNKNOWN - 329)) | (1 << (HiveSqlParser.KW_UNLOCK - 329)))) !== 0) || ((((_la - 361)) & ~0x1F) === 0 && ((1 << (_la - 361)) & ((1 << (HiveSqlParser.KW_UNMANAGED - 361)) | (1 << (HiveSqlParser.KW_UNSET - 361)) | (1 << (HiveSqlParser.KW_UNSIGNED - 361)) | (1 << (HiveSqlParser.KW_URI - 361)) | (1 << (HiveSqlParser.KW_URL - 361)) | (1 << (HiveSqlParser.KW_USE - 361)) | (1 << (HiveSqlParser.KW_UTC - 361)) | (1 << (HiveSqlParser.KW_UTCTIMESTAMP - 361)) | (1 << (HiveSqlParser.KW_VALIDATE - 361)) | (1 << (HiveSqlParser.KW_VALUE_TYPE - 361)) | (1 << (HiveSqlParser.KW_VECTORIZATION - 361)) | (1 << (HiveSqlParser.KW_VIEW - 361)) | (1 << (HiveSqlParser.KW_VIEWS - 361)) | (1 << (HiveSqlParser.KW_WAIT - 361)) | (1 << (HiveSqlParser.KW_WEEK - 361)) | (1 << (HiveSqlParser.KW_WEEKS - 361)) | (1 << (HiveSqlParser.KW_WHILE - 361)) | (1 << (HiveSqlParser.KW_WITHIN - 361)) | (1 << (HiveSqlParser.KW_WORK - 361)) | (1 << (HiveSqlParser.KW_WORKLOAD - 361)) | (1 << (HiveSqlParser.KW_WRITE - 361)) | (1 << (HiveSqlParser.KW_YEAR - 361)) | (1 << (HiveSqlParser.KW_YEARS - 361)))) !== 0) || _la === HiveSqlParser.KW_ZONE || _la === HiveSqlParser.Identifier) {
				{
				this.state = 4119;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === HiveSqlParser.KW_AS) {
					{
					this.state = 4118;
					this.match(HiveSqlParser.KW_AS);
					}
				}

				this.state = 4121;
				_localctx._alias = this.id_();
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public dbSchemaName(): DbSchemaNameContext {
		let _localctx: DbSchemaNameContext = new DbSchemaNameContext(this._ctx, this.state);
		this.enterRule(_localctx, 654, HiveSqlParser.RULE_dbSchemaName);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4124;
			this.id_();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public dbSchemaNameCreate(): DbSchemaNameCreateContext {
		let _localctx: DbSchemaNameCreateContext = new DbSchemaNameCreateContext(this._ctx, this.state);
		this.enterRule(_localctx, 656, HiveSqlParser.RULE_dbSchemaNameCreate);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4126;
			this.id_();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public tableOrView(): TableOrViewContext {
		let _localctx: TableOrViewContext = new TableOrViewContext(this._ctx, this.state);
		this.enterRule(_localctx, 658, HiveSqlParser.RULE_tableOrView);
		try {
			this.state = 4130;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 484, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 4128;
				this.tableName();
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 4129;
				this.viewName();
				}
				break;
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public tableName(): TableNameContext {
		let _localctx: TableNameContext = new TableNameContext(this._ctx, this.state);
		this.enterRule(_localctx, 660, HiveSqlParser.RULE_tableName);
		try {
			this.state = 4140;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 486, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 4132;
				_localctx._db = this.id_();
				this.state = 4133;
				this.match(HiveSqlParser.DOT);
				this.state = 4134;
				_localctx._tab = this.id_();
				this.state = 4137;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 485, this._ctx) ) {
				case 1:
					{
					this.state = 4135;
					this.match(HiveSqlParser.DOT);
					this.state = 4136;
					_localctx._meta = this.id_();
					}
					break;
				}
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 4139;
				_localctx._tab = this.id_();
				}
				break;
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public tableNameCreate(): TableNameCreateContext {
		let _localctx: TableNameCreateContext = new TableNameCreateContext(this._ctx, this.state);
		this.enterRule(_localctx, 662, HiveSqlParser.RULE_tableNameCreate);
		let _la: number;
		try {
			this.state = 4150;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 488, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 4142;
				_localctx._db = this.id_();
				this.state = 4143;
				this.match(HiveSqlParser.DOT);
				this.state = 4144;
				_localctx._tab = this.id_();
				this.state = 4147;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === HiveSqlParser.DOT) {
					{
					this.state = 4145;
					this.match(HiveSqlParser.DOT);
					this.state = 4146;
					_localctx._meta = this.id_();
					}
				}

				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 4149;
				_localctx._tab = this.id_();
				}
				break;
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public viewName(): ViewNameContext {
		let _localctx: ViewNameContext = new ViewNameContext(this._ctx, this.state);
		this.enterRule(_localctx, 664, HiveSqlParser.RULE_viewName);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4155;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 489, this._ctx) ) {
			case 1:
				{
				this.state = 4152;
				_localctx._db = this.id_();
				this.state = 4153;
				this.match(HiveSqlParser.DOT);
				}
				break;
			}
			this.state = 4157;
			_localctx._view = this.id_();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public viewNameCreate(): ViewNameCreateContext {
		let _localctx: ViewNameCreateContext = new ViewNameCreateContext(this._ctx, this.state);
		this.enterRule(_localctx, 666, HiveSqlParser.RULE_viewNameCreate);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4162;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 490, this._ctx) ) {
			case 1:
				{
				this.state = 4159;
				_localctx._db = this.id_();
				this.state = 4160;
				this.match(HiveSqlParser.DOT);
				}
				break;
			}
			this.state = 4164;
			_localctx._view = this.id_();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public subQuerySource(): SubQuerySourceContext {
		let _localctx: SubQuerySourceContext = new SubQuerySourceContext(this._ctx, this.state);
		this.enterRule(_localctx, 668, HiveSqlParser.RULE_subQuerySource);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4166;
			this.match(HiveSqlParser.LPAREN);
			this.state = 4167;
			this.queryStatementExpression();
			this.state = 4168;
			this.match(HiveSqlParser.RPAREN);
			this.state = 4170;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === HiveSqlParser.KW_AS) {
				{
				this.state = 4169;
				this.match(HiveSqlParser.KW_AS);
				}
			}

			this.state = 4172;
			this.id_();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public partitioningSpec(): PartitioningSpecContext {
		let _localctx: PartitioningSpecContext = new PartitioningSpecContext(this._ctx, this.state);
		this.enterRule(_localctx, 670, HiveSqlParser.RULE_partitioningSpec);
		let _la: number;
		try {
			this.state = 4185;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case HiveSqlParser.KW_PARTITION:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 4174;
				this.partitionByClause();
				this.state = 4176;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === HiveSqlParser.KW_ORDER) {
					{
					this.state = 4175;
					this.orderByClause();
					}
				}

				}
				break;
			case HiveSqlParser.KW_ORDER:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 4178;
				this.orderByClause();
				}
				break;
			case HiveSqlParser.KW_DISTRIBUTE:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 4179;
				this.distributeByClause();
				this.state = 4181;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === HiveSqlParser.KW_SORT) {
					{
					this.state = 4180;
					this.sortByClause();
					}
				}

				}
				break;
			case HiveSqlParser.KW_SORT:
				this.enterOuterAlt(_localctx, 4);
				{
				this.state = 4183;
				this.sortByClause();
				}
				break;
			case HiveSqlParser.KW_CLUSTER:
				this.enterOuterAlt(_localctx, 5);
				{
				this.state = 4184;
				this.clusterByClause();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public partitionTableFunctionSource(): PartitionTableFunctionSourceContext {
		let _localctx: PartitionTableFunctionSourceContext = new PartitionTableFunctionSourceContext(this._ctx, this.state);
		this.enterRule(_localctx, 672, HiveSqlParser.RULE_partitionTableFunctionSource);
		try {
			this.state = 4190;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 495, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 4187;
				this.subQuerySource();
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 4188;
				this.tableSource();
				}
				break;

			case 3:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 4189;
				this.partitionedTableFunction();
				}
				break;
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public partitionedTableFunction(): PartitionedTableFunctionContext {
		let _localctx: PartitionedTableFunctionContext = new PartitionedTableFunctionContext(this._ctx, this.state);
		this.enterRule(_localctx, 674, HiveSqlParser.RULE_partitionedTableFunction);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4192;
			_localctx._n = this.id_();
			this.state = 4193;
			this.match(HiveSqlParser.LPAREN);
			this.state = 4194;
			this.match(HiveSqlParser.KW_ON);
			this.state = 4195;
			_localctx._ptfsrc = this.partitionTableFunctionSource();
			this.state = 4197;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === HiveSqlParser.KW_CLUSTER || _la === HiveSqlParser.KW_DISTRIBUTE || _la === HiveSqlParser.KW_ORDER || _la === HiveSqlParser.KW_PARTITION || _la === HiveSqlParser.KW_SORT) {
				{
				this.state = 4196;
				_localctx._spec = this.partitioningSpec();
				}
			}

			this.state = 4214;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === HiveSqlParser.Identifier) {
				{
				this.state = 4199;
				this.match(HiveSqlParser.Identifier);
				this.state = 4200;
				this.match(HiveSqlParser.LPAREN);
				this.state = 4201;
				this.expression();
				this.state = 4202;
				this.match(HiveSqlParser.RPAREN);
				this.state = 4211;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				while (_la === HiveSqlParser.COMMA) {
					{
					{
					this.state = 4203;
					this.match(HiveSqlParser.COMMA);
					this.state = 4204;
					this.match(HiveSqlParser.Identifier);
					this.state = 4205;
					this.match(HiveSqlParser.LPAREN);
					this.state = 4206;
					this.expression();
					this.state = 4207;
					this.match(HiveSqlParser.RPAREN);
					}
					}
					this.state = 4213;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
				}
				}
			}

			this.state = 4216;
			this.match(HiveSqlParser.RPAREN);
			this.state = 4218;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 499, this._ctx) ) {
			case 1:
				{
				this.state = 4217;
				_localctx._alias = this.id_();
				}
				break;
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public whereClause(): WhereClauseContext {
		let _localctx: WhereClauseContext = new WhereClauseContext(this._ctx, this.state);
		this.enterRule(_localctx, 676, HiveSqlParser.RULE_whereClause);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4220;
			this.match(HiveSqlParser.KW_WHERE);
			this.state = 4221;
			this.searchCondition();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public searchCondition(): SearchConditionContext {
		let _localctx: SearchConditionContext = new SearchConditionContext(this._ctx, this.state);
		this.enterRule(_localctx, 678, HiveSqlParser.RULE_searchCondition);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4223;
			this.expression();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public valuesSource(): ValuesSourceContext {
		let _localctx: ValuesSourceContext = new ValuesSourceContext(this._ctx, this.state);
		this.enterRule(_localctx, 680, HiveSqlParser.RULE_valuesSource);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4225;
			this.valuesClause();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public valuesClause(): ValuesClauseContext {
		let _localctx: ValuesClauseContext = new ValuesClauseContext(this._ctx, this.state);
		this.enterRule(_localctx, 682, HiveSqlParser.RULE_valuesClause);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4227;
			this.match(HiveSqlParser.KW_VALUES);
			this.state = 4228;
			this.valuesTableConstructor();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public valuesTableConstructor(): ValuesTableConstructorContext {
		let _localctx: ValuesTableConstructorContext = new ValuesTableConstructorContext(this._ctx, this.state);
		this.enterRule(_localctx, 684, HiveSqlParser.RULE_valuesTableConstructor);
		let _la: number;
		try {
			this.state = 4246;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 502, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 4230;
				this.valueRowConstructor();
				this.state = 4235;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				while (_la === HiveSqlParser.COMMA) {
					{
					{
					this.state = 4231;
					this.match(HiveSqlParser.COMMA);
					this.state = 4232;
					this.valueRowConstructor();
					}
					}
					this.state = 4237;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
				}
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 4238;
				this.firstValueRowConstructor();
				this.state = 4243;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				while (_la === HiveSqlParser.COMMA) {
					{
					{
					this.state = 4239;
					this.match(HiveSqlParser.COMMA);
					this.state = 4240;
					this.valueRowConstructor();
					}
					}
					this.state = 4245;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
				}
				}
				break;
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public valueRowConstructor(): ValueRowConstructorContext {
		let _localctx: ValueRowConstructorContext = new ValueRowConstructorContext(this._ctx, this.state);
		this.enterRule(_localctx, 686, HiveSqlParser.RULE_valueRowConstructor);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4248;
			this.expressionsInParenthesis();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public firstValueRowConstructor(): FirstValueRowConstructorContext {
		let _localctx: FirstValueRowConstructorContext = new FirstValueRowConstructorContext(this._ctx, this.state);
		this.enterRule(_localctx, 688, HiveSqlParser.RULE_firstValueRowConstructor);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4250;
			this.match(HiveSqlParser.LPAREN);
			this.state = 4251;
			this.firstExpressionsWithAlias();
			this.state = 4252;
			this.match(HiveSqlParser.RPAREN);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public virtualTableSource(): VirtualTableSourceContext {
		let _localctx: VirtualTableSourceContext = new VirtualTableSourceContext(this._ctx, this.state);
		this.enterRule(_localctx, 690, HiveSqlParser.RULE_virtualTableSource);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4254;
			this.match(HiveSqlParser.KW_TABLE);
			this.state = 4255;
			this.match(HiveSqlParser.LPAREN);
			this.state = 4256;
			this.valuesClause();
			this.state = 4257;
			this.match(HiveSqlParser.RPAREN);
			this.state = 4259;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === HiveSqlParser.KW_AS) {
				{
				this.state = 4258;
				this.match(HiveSqlParser.KW_AS);
				}
			}

			this.state = 4261;
			this.tableAlias();
			this.state = 4271;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === HiveSqlParser.LPAREN) {
				{
				this.state = 4262;
				this.match(HiveSqlParser.LPAREN);
				this.state = 4263;
				this.id_();
				this.state = 4268;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				while (_la === HiveSqlParser.COMMA) {
					{
					{
					this.state = 4264;
					this.match(HiveSqlParser.COMMA);
					this.state = 4265;
					this.id_();
					}
					}
					this.state = 4270;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
				}
				}
			}

			this.state = 4273;
			this.match(HiveSqlParser.RPAREN);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public selectClause(): SelectClauseContext {
		let _localctx: SelectClauseContext = new SelectClauseContext(this._ctx, this.state);
		this.enterRule(_localctx, 692, HiveSqlParser.RULE_selectClause);
		let _la: number;
		try {
			this.state = 4288;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case HiveSqlParser.KW_SELECT:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 4275;
				this.match(HiveSqlParser.KW_SELECT);
				this.state = 4277;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === HiveSqlParser.QUERY_HINT) {
					{
					this.state = 4276;
					this.match(HiveSqlParser.QUERY_HINT);
					}
				}

				this.state = 4285;
				this._errHandler.sync(this);
				switch (this._input.LA(1)) {
				case HiveSqlParser.KW_ABORT:
				case HiveSqlParser.KW_ACTIVATE:
				case HiveSqlParser.KW_ACTIVE:
				case HiveSqlParser.KW_ADD:
				case HiveSqlParser.KW_ADMIN:
				case HiveSqlParser.KW_AFTER:
				case HiveSqlParser.KW_ALL:
				case HiveSqlParser.KW_ALLOC_FRACTION:
				case HiveSqlParser.KW_ANALYZE:
				case HiveSqlParser.KW_AND:
				case HiveSqlParser.KW_ARCHIVE:
				case HiveSqlParser.KW_ARRAY:
				case HiveSqlParser.KW_ASC:
				case HiveSqlParser.KW_AST:
				case HiveSqlParser.KW_AT:
				case HiveSqlParser.KW_AUTOCOMMIT:
				case HiveSqlParser.KW_BATCH:
				case HiveSqlParser.KW_BEFORE:
				case HiveSqlParser.KW_BETWEEN:
				case HiveSqlParser.KW_BIGINT:
				case HiveSqlParser.KW_BINARY:
				case HiveSqlParser.KW_BOOLEAN:
				case HiveSqlParser.KW_BUCKET:
				case HiveSqlParser.KW_BUCKETS:
				case HiveSqlParser.KW_CACHE:
				case HiveSqlParser.KW_CASCADE:
				case HiveSqlParser.KW_CASE:
				case HiveSqlParser.KW_CAST:
				case HiveSqlParser.KW_CBO:
				case HiveSqlParser.KW_CHANGE:
				case HiveSqlParser.KW_CHECK:
				case HiveSqlParser.KW_CLUSTER:
				case HiveSqlParser.KW_CLUSTERED:
				case HiveSqlParser.KW_CLUSTERSTATUS:
				case HiveSqlParser.KW_COLLECTION:
				case HiveSqlParser.KW_COLUMNS:
				case HiveSqlParser.KW_COMMENT:
				case HiveSqlParser.KW_COMPACT:
				case HiveSqlParser.KW_COMPACTIONS:
				case HiveSqlParser.KW_COMPUTE:
				case HiveSqlParser.KW_CONCATENATE:
				case HiveSqlParser.KW_CONTINUE:
				case HiveSqlParser.KW_COST:
				case HiveSqlParser.KW_CRON:
				case HiveSqlParser.KW_CURRENT_DATE:
				case HiveSqlParser.KW_CURRENT_TIMESTAMP:
				case HiveSqlParser.KW_DATA:
				case HiveSqlParser.KW_DATABASES:
				case HiveSqlParser.KW_DATE:
				case HiveSqlParser.KW_DATETIME:
				case HiveSqlParser.KW_DAY:
				case HiveSqlParser.KW_DAYS:
				case HiveSqlParser.KW_DAYOFWEEK:
				case HiveSqlParser.KW_DBPROPERTIES:
				case HiveSqlParser.KW_DCPROPERTIES:
				case HiveSqlParser.KW_DEBUG:
				case HiveSqlParser.KW_DEFAULT:
				case HiveSqlParser.KW_DEFERRED:
				case HiveSqlParser.KW_DEFINED:
				case HiveSqlParser.KW_DELIMITED:
				case HiveSqlParser.KW_DEPENDENCY:
				case HiveSqlParser.KW_DESC:
				case HiveSqlParser.KW_DETAIL:
				case HiveSqlParser.KW_DIRECTORIES:
				case HiveSqlParser.KW_DIRECTORY:
				case HiveSqlParser.KW_DISABLE:
				case HiveSqlParser.KW_DISABLED:
				case HiveSqlParser.KW_DISTINCT:
				case HiveSqlParser.KW_DISTRIBUTE:
				case HiveSqlParser.KW_DISTRIBUTED:
				case HiveSqlParser.KW_DO:
				case HiveSqlParser.KW_DOUBLE:
				case HiveSqlParser.KW_DUMP:
				case HiveSqlParser.KW_ELEM_TYPE:
				case HiveSqlParser.KW_ENABLE:
				case HiveSqlParser.KW_ENABLED:
				case HiveSqlParser.KW_ENFORCED:
				case HiveSqlParser.KW_ESCAPED:
				case HiveSqlParser.KW_EVERY:
				case HiveSqlParser.KW_EXCLUSIVE:
				case HiveSqlParser.KW_EXECUTE:
				case HiveSqlParser.KW_EXECUTED:
				case HiveSqlParser.KW_EXISTS:
				case HiveSqlParser.KW_EXPIRE_SNAPSHOTS:
				case HiveSqlParser.KW_EXPLAIN:
				case HiveSqlParser.KW_EXPORT:
				case HiveSqlParser.KW_EXPRESSION:
				case HiveSqlParser.KW_EXTRACT:
				case HiveSqlParser.KW_FALSE:
				case HiveSqlParser.KW_FIELDS:
				case HiveSqlParser.KW_FILE:
				case HiveSqlParser.KW_FILEFORMAT:
				case HiveSqlParser.KW_FIRST:
				case HiveSqlParser.KW_FLOAT:
				case HiveSqlParser.KW_FLOOR:
				case HiveSqlParser.KW_FORMAT:
				case HiveSqlParser.KW_FORMATTED:
				case HiveSqlParser.KW_FUNCTIONS:
				case HiveSqlParser.KW_GROUPING:
				case HiveSqlParser.KW_HOLD_DDLTIME:
				case HiveSqlParser.KW_HOUR:
				case HiveSqlParser.KW_HOURS:
				case HiveSqlParser.KW_IDXPROPERTIES:
				case HiveSqlParser.KW_IF:
				case HiveSqlParser.KW_IGNORE:
				case HiveSqlParser.KW_IN:
				case HiveSqlParser.KW_INDEX:
				case HiveSqlParser.KW_INDEXES:
				case HiveSqlParser.KW_INPATH:
				case HiveSqlParser.KW_INPUTDRIVER:
				case HiveSqlParser.KW_INPUTFORMAT:
				case HiveSqlParser.KW_INT:
				case HiveSqlParser.KW_INTEGER:
				case HiveSqlParser.KW_INTERVAL:
				case HiveSqlParser.KW_ISOLATION:
				case HiveSqlParser.KW_ITEMS:
				case HiveSqlParser.KW_JAR:
				case HiveSqlParser.KW_JOINCOST:
				case HiveSqlParser.KW_KEY:
				case HiveSqlParser.KW_KEYS:
				case HiveSqlParser.KW_KEY_TYPE:
				case HiveSqlParser.KW_KILL:
				case HiveSqlParser.KW_LAST:
				case HiveSqlParser.KW_LEVEL:
				case HiveSqlParser.KW_LIKE:
				case HiveSqlParser.KW_LIMIT:
				case HiveSqlParser.KW_LINES:
				case HiveSqlParser.KW_LOAD:
				case HiveSqlParser.KW_LOCATION:
				case HiveSqlParser.KW_LOCK:
				case HiveSqlParser.KW_LOCKS:
				case HiveSqlParser.KW_LOGICAL:
				case HiveSqlParser.KW_LONG:
				case HiveSqlParser.KW_MANAGED:
				case HiveSqlParser.KW_MANAGEDLOCATION:
				case HiveSqlParser.KW_MANAGEMENT:
				case HiveSqlParser.KW_MAP:
				case HiveSqlParser.KW_MAPJOIN:
				case HiveSqlParser.KW_MAPPING:
				case HiveSqlParser.KW_MATCHED:
				case HiveSqlParser.KW_MATERIALIZED:
				case HiveSqlParser.KW_METADATA:
				case HiveSqlParser.KW_MINUTE:
				case HiveSqlParser.KW_MINUTES:
				case HiveSqlParser.KW_MONTH:
				case HiveSqlParser.KW_MONTHS:
				case HiveSqlParser.KW_MOVE:
				case HiveSqlParser.KW_MSCK:
				case HiveSqlParser.KW_NORELY:
				case HiveSqlParser.KW_NOSCAN:
				case HiveSqlParser.KW_NOT:
				case HiveSqlParser.KW_NOVALIDATE:
				case HiveSqlParser.KW_NO_DROP:
				case HiveSqlParser.KW_NULL:
				case HiveSqlParser.KW_NULLS:
				case HiveSqlParser.KW_OFFLINE:
				case HiveSqlParser.KW_OFFSET:
				case HiveSqlParser.KW_OPERATOR:
				case HiveSqlParser.KW_OPTION:
				case HiveSqlParser.KW_OR:
				case HiveSqlParser.KW_OUTPUTDRIVER:
				case HiveSqlParser.KW_OUTPUTFORMAT:
				case HiveSqlParser.KW_OVERWRITE:
				case HiveSqlParser.KW_OWNER:
				case HiveSqlParser.KW_PARTITIONED:
				case HiveSqlParser.KW_PARTITIONS:
				case HiveSqlParser.KW_PATH:
				case HiveSqlParser.KW_PLAN:
				case HiveSqlParser.KW_PLANS:
				case HiveSqlParser.KW_PLUS:
				case HiveSqlParser.KW_POOL:
				case HiveSqlParser.KW_PRINCIPALS:
				case HiveSqlParser.KW_PROTECTION:
				case HiveSqlParser.KW_PURGE:
				case HiveSqlParser.KW_QUARTER:
				case HiveSqlParser.KW_QUERY:
				case HiveSqlParser.KW_QUERY_PARALLELISM:
				case HiveSqlParser.KW_READ:
				case HiveSqlParser.KW_READONLY:
				case HiveSqlParser.KW_REAL:
				case HiveSqlParser.KW_REBUILD:
				case HiveSqlParser.KW_RECORDREADER:
				case HiveSqlParser.KW_RECORDWRITER:
				case HiveSqlParser.KW_REGEXP:
				case HiveSqlParser.KW_RELOAD:
				case HiveSqlParser.KW_RELY:
				case HiveSqlParser.KW_REMOTE:
				case HiveSqlParser.KW_RENAME:
				case HiveSqlParser.KW_REOPTIMIZATION:
				case HiveSqlParser.KW_REPAIR:
				case HiveSqlParser.KW_REPL:
				case HiveSqlParser.KW_REPLACE:
				case HiveSqlParser.KW_REPLICATION:
				case HiveSqlParser.KW_RESOURCE:
				case HiveSqlParser.KW_RESPECT:
				case HiveSqlParser.KW_RESTRICT:
				case HiveSqlParser.KW_REWRITE:
				case HiveSqlParser.KW_RLIKE:
				case HiveSqlParser.KW_ROLE:
				case HiveSqlParser.KW_ROLES:
				case HiveSqlParser.KW_SCHEDULED:
				case HiveSqlParser.KW_SCHEDULING_POLICY:
				case HiveSqlParser.KW_SCHEMA:
				case HiveSqlParser.KW_SCHEMAS:
				case HiveSqlParser.KW_SECOND:
				case HiveSqlParser.KW_SECONDS:
				case HiveSqlParser.KW_SEMI:
				case HiveSqlParser.KW_SERDE:
				case HiveSqlParser.KW_SERDEPROPERTIES:
				case HiveSqlParser.KW_SERVER:
				case HiveSqlParser.KW_SETS:
				case HiveSqlParser.KW_SET_CURRENT_SNAPSHOT:
				case HiveSqlParser.KW_SHARED:
				case HiveSqlParser.KW_SHOW:
				case HiveSqlParser.KW_SHOW_DATABASE:
				case HiveSqlParser.KW_SKEWED:
				case HiveSqlParser.KW_SMALLINT:
				case HiveSqlParser.KW_SNAPSHOT:
				case HiveSqlParser.KW_SORT:
				case HiveSqlParser.KW_SORTED:
				case HiveSqlParser.KW_SPEC:
				case HiveSqlParser.KW_SSL:
				case HiveSqlParser.KW_STATISTICS:
				case HiveSqlParser.KW_STATUS:
				case HiveSqlParser.KW_STORED:
				case HiveSqlParser.KW_STREAMTABLE:
				case HiveSqlParser.KW_STRING:
				case HiveSqlParser.KW_STRUCT:
				case HiveSqlParser.KW_SUMMARY:
				case HiveSqlParser.KW_SYSTEM_TIME:
				case HiveSqlParser.KW_SYSTEM_VERSION:
				case HiveSqlParser.KW_TABLES:
				case HiveSqlParser.KW_TBLPROPERTIES:
				case HiveSqlParser.KW_TEMPORARY:
				case HiveSqlParser.KW_TERMINATED:
				case HiveSqlParser.KW_TIMESTAMP:
				case HiveSqlParser.KW_TIMESTAMPLOCALTZ:
				case HiveSqlParser.KW_TIMESTAMPTZ:
				case HiveSqlParser.KW_TINYINT:
				case HiveSqlParser.KW_TOUCH:
				case HiveSqlParser.KW_TRANSACTION:
				case HiveSqlParser.KW_TRANSACTIONAL:
				case HiveSqlParser.KW_TRANSACTIONS:
				case HiveSqlParser.KW_TRIM:
				case HiveSqlParser.KW_TRUE:
				case HiveSqlParser.KW_TYPE:
				case HiveSqlParser.KW_UNARCHIVE:
				case HiveSqlParser.KW_UNDO:
				case HiveSqlParser.KW_UNIONTYPE:
				case HiveSqlParser.KW_UNKNOWN:
				case HiveSqlParser.KW_UNLOCK:
				case HiveSqlParser.KW_UNMANAGED:
				case HiveSqlParser.KW_UNSET:
				case HiveSqlParser.KW_UNSIGNED:
				case HiveSqlParser.KW_URI:
				case HiveSqlParser.KW_URL:
				case HiveSqlParser.KW_USE:
				case HiveSqlParser.KW_UTC:
				case HiveSqlParser.KW_UTCTIMESTAMP:
				case HiveSqlParser.KW_VALIDATE:
				case HiveSqlParser.KW_VALUE_TYPE:
				case HiveSqlParser.KW_VECTORIZATION:
				case HiveSqlParser.KW_VIEW:
				case HiveSqlParser.KW_VIEWS:
				case HiveSqlParser.KW_WAIT:
				case HiveSqlParser.KW_WEEK:
				case HiveSqlParser.KW_WEEKS:
				case HiveSqlParser.KW_WHEN:
				case HiveSqlParser.KW_WHILE:
				case HiveSqlParser.KW_WITHIN:
				case HiveSqlParser.KW_WORK:
				case HiveSqlParser.KW_WORKLOAD:
				case HiveSqlParser.KW_WRITE:
				case HiveSqlParser.KW_YEAR:
				case HiveSqlParser.KW_YEARS:
				case HiveSqlParser.KW_ZONE:
				case HiveSqlParser.LPAREN:
				case HiveSqlParser.EQUAL:
				case HiveSqlParser.EQUAL_NS:
				case HiveSqlParser.NOTEQUAL:
				case HiveSqlParser.LESSTHANOREQUALTO:
				case HiveSqlParser.LESSTHAN:
				case HiveSqlParser.GREATERTHANOREQUALTO:
				case HiveSqlParser.GREATERTHAN:
				case HiveSqlParser.DIVIDE:
				case HiveSqlParser.PLUS:
				case HiveSqlParser.MINUS:
				case HiveSqlParser.STAR:
				case HiveSqlParser.MOD:
				case HiveSqlParser.DIV:
				case HiveSqlParser.BITWISENOT:
				case HiveSqlParser.AMPERSAND:
				case HiveSqlParser.TILDE:
				case HiveSqlParser.BITWISEOR:
				case HiveSqlParser.BITWISEXOR:
				case HiveSqlParser.QUESTION:
				case HiveSqlParser.StringLiteral:
				case HiveSqlParser.IntegralLiteral:
				case HiveSqlParser.NumberLiteral:
				case HiveSqlParser.Number:
				case HiveSqlParser.Identifier:
				case HiveSqlParser.CharSetName:
					{
					this.state = 4280;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
					if (_la === HiveSqlParser.KW_ALL || _la === HiveSqlParser.KW_DISTINCT) {
						{
						this.state = 4279;
						this.all_distinct();
						}
					}

					this.state = 4282;
					this.selectList();
					}
					break;
				case HiveSqlParser.KW_TRANSFORM:
					{
					this.state = 4283;
					this.match(HiveSqlParser.KW_TRANSFORM);
					this.state = 4284;
					this.selectTrfmClause();
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				}
				break;
			case HiveSqlParser.KW_MAP:
			case HiveSqlParser.KW_REDUCE:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 4287;
				this.trfmClause();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public all_distinct(): All_distinctContext {
		let _localctx: All_distinctContext = new All_distinctContext(this._ctx, this.state);
		this.enterRule(_localctx, 694, HiveSqlParser.RULE_all_distinct);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4290;
			_la = this._input.LA(1);
			if (!(_la === HiveSqlParser.KW_ALL || _la === HiveSqlParser.KW_DISTINCT)) {
			this._errHandler.recoverInline(this);
			} else {
				if (this._input.LA(1) === Token.EOF) {
					this.matchedEOF = true;
				}

				this._errHandler.reportMatch(this);
				this.consume();
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public selectList(): SelectListContext {
		let _localctx: SelectListContext = new SelectListContext(this._ctx, this.state);
		this.enterRule(_localctx, 696, HiveSqlParser.RULE_selectList);
		try {
			let _alt: number;
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4292;
			this.selectItem();
			this.state = 4297;
			this._errHandler.sync(this);
			_alt = this.interpreter.adaptivePredict(this._input, 510, this._ctx);
			while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) {
				if (_alt === 1) {
					{
					{
					this.state = 4293;
					this.match(HiveSqlParser.COMMA);
					this.state = 4294;
					this.selectItem();
					}
					}
				}
				this.state = 4299;
				this._errHandler.sync(this);
				_alt = this.interpreter.adaptivePredict(this._input, 510, this._ctx);
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public selectTrfmClause(): SelectTrfmClauseContext {
		let _localctx: SelectTrfmClauseContext = new SelectTrfmClauseContext(this._ctx, this.state);
		this.enterRule(_localctx, 698, HiveSqlParser.RULE_selectTrfmClause);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4300;
			this.match(HiveSqlParser.LPAREN);
			this.state = 4301;
			this.selectExpressionList();
			this.state = 4302;
			this.match(HiveSqlParser.RPAREN);
			this.state = 4303;
			this.rowFormat();
			this.state = 4304;
			this.recordWriter();
			this.state = 4305;
			this.match(HiveSqlParser.KW_USING);
			this.state = 4306;
			this.match(HiveSqlParser.StringLiteral);
			this.state = 4319;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === HiveSqlParser.KW_AS) {
				{
				this.state = 4307;
				this.match(HiveSqlParser.KW_AS);
				this.state = 4317;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 512, this._ctx) ) {
				case 1:
					{
					this.state = 4308;
					this.match(HiveSqlParser.LPAREN);
					this.state = 4311;
					this._errHandler.sync(this);
					switch ( this.interpreter.adaptivePredict(this._input, 511, this._ctx) ) {
					case 1:
						{
						this.state = 4309;
						this.aliasList();
						}
						break;

					case 2:
						{
						this.state = 4310;
						this.columnNameTypeList();
						}
						break;
					}
					this.state = 4313;
					this.match(HiveSqlParser.RPAREN);
					}
					break;

				case 2:
					{
					this.state = 4315;
					this.aliasList();
					}
					break;

				case 3:
					{
					this.state = 4316;
					this.columnNameTypeList();
					}
					break;
				}
				}
			}

			this.state = 4321;
			this.rowFormat();
			this.state = 4322;
			this.recordReader();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public selectItem(): SelectItemContext {
		let _localctx: SelectItemContext = new SelectItemContext(this._ctx, this.state);
		this.enterRule(_localctx, 700, HiveSqlParser.RULE_selectItem);
		let _la: number;
		try {
			this.state = 4347;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 518, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 4324;
				this.tableAllColumns();
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				{
				this.state = 4327;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 514, this._ctx) ) {
				case 1:
					{
					this.state = 4325;
					this.columnName();
					}
					break;

				case 2:
					{
					this.state = 4326;
					this.expression();
					}
					break;
				}
				this.state = 4345;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 517, this._ctx) ) {
				case 1:
					{
					this.state = 4330;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
					if (_la === HiveSqlParser.KW_AS) {
						{
						this.state = 4329;
						this.match(HiveSqlParser.KW_AS);
						}
					}

					this.state = 4332;
					this.id_();
					}
					break;

				case 2:
					{
					this.state = 4333;
					this.match(HiveSqlParser.KW_AS);
					this.state = 4334;
					this.match(HiveSqlParser.LPAREN);
					this.state = 4335;
					this.id_();
					this.state = 4340;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
					while (_la === HiveSqlParser.COMMA) {
						{
						{
						this.state = 4336;
						this.match(HiveSqlParser.COMMA);
						this.state = 4337;
						this.id_();
						}
						}
						this.state = 4342;
						this._errHandler.sync(this);
						_la = this._input.LA(1);
					}
					this.state = 4343;
					this.match(HiveSqlParser.RPAREN);
					}
					break;
				}
				}
				}
				break;
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public trfmClause(): TrfmClauseContext {
		let _localctx: TrfmClauseContext = new TrfmClauseContext(this._ctx, this.state);
		this.enterRule(_localctx, 702, HiveSqlParser.RULE_trfmClause);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4349;
			_la = this._input.LA(1);
			if (!(_la === HiveSqlParser.KW_MAP || _la === HiveSqlParser.KW_REDUCE)) {
			this._errHandler.recoverInline(this);
			} else {
				if (this._input.LA(1) === Token.EOF) {
					this.matchedEOF = true;
				}

				this._errHandler.reportMatch(this);
				this.consume();
			}
			this.state = 4350;
			this.selectExpressionList();
			this.state = 4351;
			this.rowFormat();
			this.state = 4352;
			this.recordWriter();
			this.state = 4353;
			this.match(HiveSqlParser.KW_USING);
			this.state = 4354;
			this.match(HiveSqlParser.StringLiteral);
			this.state = 4367;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === HiveSqlParser.KW_AS) {
				{
				this.state = 4355;
				this.match(HiveSqlParser.KW_AS);
				this.state = 4365;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 520, this._ctx) ) {
				case 1:
					{
					this.state = 4356;
					this.match(HiveSqlParser.LPAREN);
					this.state = 4359;
					this._errHandler.sync(this);
					switch ( this.interpreter.adaptivePredict(this._input, 519, this._ctx) ) {
					case 1:
						{
						this.state = 4357;
						this.aliasList();
						}
						break;

					case 2:
						{
						this.state = 4358;
						this.columnNameTypeList();
						}
						break;
					}
					this.state = 4361;
					this.match(HiveSqlParser.RPAREN);
					}
					break;

				case 2:
					{
					this.state = 4363;
					this.aliasList();
					}
					break;

				case 3:
					{
					this.state = 4364;
					this.columnNameTypeList();
					}
					break;
				}
				}
			}

			this.state = 4369;
			this.rowFormat();
			this.state = 4370;
			this.recordReader();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public selectExpression(): SelectExpressionContext {
		let _localctx: SelectExpressionContext = new SelectExpressionContext(this._ctx, this.state);
		this.enterRule(_localctx, 704, HiveSqlParser.RULE_selectExpression);
		try {
			this.state = 4374;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 522, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 4372;
				this.tableAllColumns();
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 4373;
				this.expression();
				}
				break;
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public selectExpressionList(): SelectExpressionListContext {
		let _localctx: SelectExpressionListContext = new SelectExpressionListContext(this._ctx, this.state);
		this.enterRule(_localctx, 706, HiveSqlParser.RULE_selectExpressionList);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4376;
			this.selectExpression();
			this.state = 4381;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === HiveSqlParser.COMMA) {
				{
				{
				this.state = 4377;
				this.match(HiveSqlParser.COMMA);
				this.state = 4378;
				this.selectExpression();
				}
				}
				this.state = 4383;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public window_clause(): Window_clauseContext {
		let _localctx: Window_clauseContext = new Window_clauseContext(this._ctx, this.state);
		this.enterRule(_localctx, 708, HiveSqlParser.RULE_window_clause);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4384;
			this.match(HiveSqlParser.KW_WINDOW);
			this.state = 4385;
			this.window_defn();
			this.state = 4390;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === HiveSqlParser.COMMA) {
				{
				{
				this.state = 4386;
				this.match(HiveSqlParser.COMMA);
				this.state = 4387;
				this.window_defn();
				}
				}
				this.state = 4392;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public window_defn(): Window_defnContext {
		let _localctx: Window_defnContext = new Window_defnContext(this._ctx, this.state);
		this.enterRule(_localctx, 710, HiveSqlParser.RULE_window_defn);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4393;
			this.id_();
			this.state = 4394;
			this.match(HiveSqlParser.KW_AS);
			this.state = 4395;
			this.window_specification();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public window_specification(): Window_specificationContext {
		let _localctx: Window_specificationContext = new Window_specificationContext(this._ctx, this.state);
		this.enterRule(_localctx, 712, HiveSqlParser.RULE_window_specification);
		let _la: number;
		try {
			this.state = 4409;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case HiveSqlParser.KW_ABORT:
			case HiveSqlParser.KW_ACTIVATE:
			case HiveSqlParser.KW_ACTIVE:
			case HiveSqlParser.KW_ADD:
			case HiveSqlParser.KW_ADMIN:
			case HiveSqlParser.KW_AFTER:
			case HiveSqlParser.KW_ALLOC_FRACTION:
			case HiveSqlParser.KW_ANALYZE:
			case HiveSqlParser.KW_ARCHIVE:
			case HiveSqlParser.KW_ASC:
			case HiveSqlParser.KW_AST:
			case HiveSqlParser.KW_AT:
			case HiveSqlParser.KW_AUTOCOMMIT:
			case HiveSqlParser.KW_BATCH:
			case HiveSqlParser.KW_BEFORE:
			case HiveSqlParser.KW_BUCKET:
			case HiveSqlParser.KW_BUCKETS:
			case HiveSqlParser.KW_CACHE:
			case HiveSqlParser.KW_CASCADE:
			case HiveSqlParser.KW_CBO:
			case HiveSqlParser.KW_CHANGE:
			case HiveSqlParser.KW_CHECK:
			case HiveSqlParser.KW_CLUSTER:
			case HiveSqlParser.KW_CLUSTERED:
			case HiveSqlParser.KW_CLUSTERSTATUS:
			case HiveSqlParser.KW_COLLECTION:
			case HiveSqlParser.KW_COLUMNS:
			case HiveSqlParser.KW_COMMENT:
			case HiveSqlParser.KW_COMPACT:
			case HiveSqlParser.KW_COMPACTIONS:
			case HiveSqlParser.KW_COMPUTE:
			case HiveSqlParser.KW_CONCATENATE:
			case HiveSqlParser.KW_CONTINUE:
			case HiveSqlParser.KW_COST:
			case HiveSqlParser.KW_CRON:
			case HiveSqlParser.KW_DATA:
			case HiveSqlParser.KW_DATABASES:
			case HiveSqlParser.KW_DATETIME:
			case HiveSqlParser.KW_DAY:
			case HiveSqlParser.KW_DAYS:
			case HiveSqlParser.KW_DAYOFWEEK:
			case HiveSqlParser.KW_DBPROPERTIES:
			case HiveSqlParser.KW_DCPROPERTIES:
			case HiveSqlParser.KW_DEBUG:
			case HiveSqlParser.KW_DEFAULT:
			case HiveSqlParser.KW_DEFERRED:
			case HiveSqlParser.KW_DEFINED:
			case HiveSqlParser.KW_DELIMITED:
			case HiveSqlParser.KW_DEPENDENCY:
			case HiveSqlParser.KW_DESC:
			case HiveSqlParser.KW_DETAIL:
			case HiveSqlParser.KW_DIRECTORIES:
			case HiveSqlParser.KW_DIRECTORY:
			case HiveSqlParser.KW_DISABLE:
			case HiveSqlParser.KW_DISABLED:
			case HiveSqlParser.KW_DISTRIBUTE:
			case HiveSqlParser.KW_DISTRIBUTED:
			case HiveSqlParser.KW_DO:
			case HiveSqlParser.KW_DUMP:
			case HiveSqlParser.KW_ELEM_TYPE:
			case HiveSqlParser.KW_ENABLE:
			case HiveSqlParser.KW_ENABLED:
			case HiveSqlParser.KW_ENFORCED:
			case HiveSqlParser.KW_ESCAPED:
			case HiveSqlParser.KW_EVERY:
			case HiveSqlParser.KW_EXCLUSIVE:
			case HiveSqlParser.KW_EXECUTE:
			case HiveSqlParser.KW_EXECUTED:
			case HiveSqlParser.KW_EXPIRE_SNAPSHOTS:
			case HiveSqlParser.KW_EXPLAIN:
			case HiveSqlParser.KW_EXPORT:
			case HiveSqlParser.KW_EXPRESSION:
			case HiveSqlParser.KW_FIELDS:
			case HiveSqlParser.KW_FILE:
			case HiveSqlParser.KW_FILEFORMAT:
			case HiveSqlParser.KW_FIRST:
			case HiveSqlParser.KW_FORMAT:
			case HiveSqlParser.KW_FORMATTED:
			case HiveSqlParser.KW_FUNCTIONS:
			case HiveSqlParser.KW_HOLD_DDLTIME:
			case HiveSqlParser.KW_HOUR:
			case HiveSqlParser.KW_HOURS:
			case HiveSqlParser.KW_IDXPROPERTIES:
			case HiveSqlParser.KW_IGNORE:
			case HiveSqlParser.KW_INDEX:
			case HiveSqlParser.KW_INDEXES:
			case HiveSqlParser.KW_INPATH:
			case HiveSqlParser.KW_INPUTDRIVER:
			case HiveSqlParser.KW_INPUTFORMAT:
			case HiveSqlParser.KW_ISOLATION:
			case HiveSqlParser.KW_ITEMS:
			case HiveSqlParser.KW_JAR:
			case HiveSqlParser.KW_JOINCOST:
			case HiveSqlParser.KW_KEY:
			case HiveSqlParser.KW_KEYS:
			case HiveSqlParser.KW_KEY_TYPE:
			case HiveSqlParser.KW_KILL:
			case HiveSqlParser.KW_LAST:
			case HiveSqlParser.KW_LEVEL:
			case HiveSqlParser.KW_LIMIT:
			case HiveSqlParser.KW_LINES:
			case HiveSqlParser.KW_LOAD:
			case HiveSqlParser.KW_LOCATION:
			case HiveSqlParser.KW_LOCK:
			case HiveSqlParser.KW_LOCKS:
			case HiveSqlParser.KW_LOGICAL:
			case HiveSqlParser.KW_LONG:
			case HiveSqlParser.KW_MANAGED:
			case HiveSqlParser.KW_MANAGEDLOCATION:
			case HiveSqlParser.KW_MANAGEMENT:
			case HiveSqlParser.KW_MAPJOIN:
			case HiveSqlParser.KW_MAPPING:
			case HiveSqlParser.KW_MATCHED:
			case HiveSqlParser.KW_MATERIALIZED:
			case HiveSqlParser.KW_METADATA:
			case HiveSqlParser.KW_MINUTE:
			case HiveSqlParser.KW_MINUTES:
			case HiveSqlParser.KW_MONTH:
			case HiveSqlParser.KW_MONTHS:
			case HiveSqlParser.KW_MOVE:
			case HiveSqlParser.KW_MSCK:
			case HiveSqlParser.KW_NORELY:
			case HiveSqlParser.KW_NOSCAN:
			case HiveSqlParser.KW_NOVALIDATE:
			case HiveSqlParser.KW_NO_DROP:
			case HiveSqlParser.KW_NULLS:
			case HiveSqlParser.KW_OFFLINE:
			case HiveSqlParser.KW_OFFSET:
			case HiveSqlParser.KW_OPERATOR:
			case HiveSqlParser.KW_OPTION:
			case HiveSqlParser.KW_OUTPUTDRIVER:
			case HiveSqlParser.KW_OUTPUTFORMAT:
			case HiveSqlParser.KW_OVERWRITE:
			case HiveSqlParser.KW_OWNER:
			case HiveSqlParser.KW_PARTITIONED:
			case HiveSqlParser.KW_PARTITIONS:
			case HiveSqlParser.KW_PATH:
			case HiveSqlParser.KW_PLAN:
			case HiveSqlParser.KW_PLANS:
			case HiveSqlParser.KW_PLUS:
			case HiveSqlParser.KW_POOL:
			case HiveSqlParser.KW_PRINCIPALS:
			case HiveSqlParser.KW_PROTECTION:
			case HiveSqlParser.KW_PURGE:
			case HiveSqlParser.KW_QUARTER:
			case HiveSqlParser.KW_QUERY:
			case HiveSqlParser.KW_QUERY_PARALLELISM:
			case HiveSqlParser.KW_READ:
			case HiveSqlParser.KW_READONLY:
			case HiveSqlParser.KW_REBUILD:
			case HiveSqlParser.KW_RECORDREADER:
			case HiveSqlParser.KW_RECORDWRITER:
			case HiveSqlParser.KW_RELOAD:
			case HiveSqlParser.KW_RELY:
			case HiveSqlParser.KW_REMOTE:
			case HiveSqlParser.KW_RENAME:
			case HiveSqlParser.KW_REOPTIMIZATION:
			case HiveSqlParser.KW_REPAIR:
			case HiveSqlParser.KW_REPL:
			case HiveSqlParser.KW_REPLACE:
			case HiveSqlParser.KW_REPLICATION:
			case HiveSqlParser.KW_RESOURCE:
			case HiveSqlParser.KW_RESPECT:
			case HiveSqlParser.KW_RESTRICT:
			case HiveSqlParser.KW_REWRITE:
			case HiveSqlParser.KW_ROLE:
			case HiveSqlParser.KW_ROLES:
			case HiveSqlParser.KW_SCHEDULED:
			case HiveSqlParser.KW_SCHEDULING_POLICY:
			case HiveSqlParser.KW_SCHEMA:
			case HiveSqlParser.KW_SCHEMAS:
			case HiveSqlParser.KW_SECOND:
			case HiveSqlParser.KW_SECONDS:
			case HiveSqlParser.KW_SEMI:
			case HiveSqlParser.KW_SERDE:
			case HiveSqlParser.KW_SERDEPROPERTIES:
			case HiveSqlParser.KW_SERVER:
			case HiveSqlParser.KW_SETS:
			case HiveSqlParser.KW_SET_CURRENT_SNAPSHOT:
			case HiveSqlParser.KW_SHARED:
			case HiveSqlParser.KW_SHOW:
			case HiveSqlParser.KW_SHOW_DATABASE:
			case HiveSqlParser.KW_SKEWED:
			case HiveSqlParser.KW_SNAPSHOT:
			case HiveSqlParser.KW_SORT:
			case HiveSqlParser.KW_SORTED:
			case HiveSqlParser.KW_SPEC:
			case HiveSqlParser.KW_SSL:
			case HiveSqlParser.KW_STATISTICS:
			case HiveSqlParser.KW_STATUS:
			case HiveSqlParser.KW_STORED:
			case HiveSqlParser.KW_STREAMTABLE:
			case HiveSqlParser.KW_STRING:
			case HiveSqlParser.KW_STRUCT:
			case HiveSqlParser.KW_SUMMARY:
			case HiveSqlParser.KW_SYSTEM_TIME:
			case HiveSqlParser.KW_SYSTEM_VERSION:
			case HiveSqlParser.KW_TABLES:
			case HiveSqlParser.KW_TBLPROPERTIES:
			case HiveSqlParser.KW_TEMPORARY:
			case HiveSqlParser.KW_TERMINATED:
			case HiveSqlParser.KW_TIMESTAMPTZ:
			case HiveSqlParser.KW_TINYINT:
			case HiveSqlParser.KW_TOUCH:
			case HiveSqlParser.KW_TRANSACTION:
			case HiveSqlParser.KW_TRANSACTIONAL:
			case HiveSqlParser.KW_TRANSACTIONS:
			case HiveSqlParser.KW_TRIM:
			case HiveSqlParser.KW_TYPE:
			case HiveSqlParser.KW_UNARCHIVE:
			case HiveSqlParser.KW_UNDO:
			case HiveSqlParser.KW_UNIONTYPE:
			case HiveSqlParser.KW_UNKNOWN:
			case HiveSqlParser.KW_UNLOCK:
			case HiveSqlParser.KW_UNMANAGED:
			case HiveSqlParser.KW_UNSET:
			case HiveSqlParser.KW_UNSIGNED:
			case HiveSqlParser.KW_URI:
			case HiveSqlParser.KW_URL:
			case HiveSqlParser.KW_USE:
			case HiveSqlParser.KW_UTC:
			case HiveSqlParser.KW_UTCTIMESTAMP:
			case HiveSqlParser.KW_VALIDATE:
			case HiveSqlParser.KW_VALUE_TYPE:
			case HiveSqlParser.KW_VECTORIZATION:
			case HiveSqlParser.KW_VIEW:
			case HiveSqlParser.KW_VIEWS:
			case HiveSqlParser.KW_WAIT:
			case HiveSqlParser.KW_WEEK:
			case HiveSqlParser.KW_WEEKS:
			case HiveSqlParser.KW_WHILE:
			case HiveSqlParser.KW_WITHIN:
			case HiveSqlParser.KW_WORK:
			case HiveSqlParser.KW_WORKLOAD:
			case HiveSqlParser.KW_WRITE:
			case HiveSqlParser.KW_YEAR:
			case HiveSqlParser.KW_YEARS:
			case HiveSqlParser.KW_ZONE:
			case HiveSqlParser.Identifier:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 4397;
				this.id_();
				}
				break;
			case HiveSqlParser.LPAREN:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 4398;
				this.match(HiveSqlParser.LPAREN);
				this.state = 4400;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 525, this._ctx) ) {
				case 1:
					{
					this.state = 4399;
					this.id_();
					}
					break;
				}
				this.state = 4403;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === HiveSqlParser.KW_CLUSTER || _la === HiveSqlParser.KW_DISTRIBUTE || _la === HiveSqlParser.KW_ORDER || _la === HiveSqlParser.KW_PARTITION || _la === HiveSqlParser.KW_SORT) {
					{
					this.state = 4402;
					this.partitioningSpec();
					}
				}

				this.state = 4406;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === HiveSqlParser.KW_RANGE || _la === HiveSqlParser.KW_ROWS) {
					{
					this.state = 4405;
					this.window_frame();
					}
				}

				this.state = 4408;
				this.match(HiveSqlParser.RPAREN);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public window_frame(): Window_frameContext {
		let _localctx: Window_frameContext = new Window_frameContext(this._ctx, this.state);
		this.enterRule(_localctx, 714, HiveSqlParser.RULE_window_frame);
		try {
			this.state = 4413;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case HiveSqlParser.KW_ROWS:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 4411;
				this.window_range_expression();
				}
				break;
			case HiveSqlParser.KW_RANGE:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 4412;
				this.window_value_expression();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public window_range_expression(): Window_range_expressionContext {
		let _localctx: Window_range_expressionContext = new Window_range_expressionContext(this._ctx, this.state);
		this.enterRule(_localctx, 716, HiveSqlParser.RULE_window_range_expression);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4415;
			this.match(HiveSqlParser.KW_ROWS);
			this.state = 4422;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case HiveSqlParser.KW_CURRENT:
			case HiveSqlParser.KW_UNBOUNDED:
			case HiveSqlParser.Number:
				{
				this.state = 4416;
				this.window_frame_start_boundary();
				}
				break;
			case HiveSqlParser.KW_BETWEEN:
				{
				this.state = 4417;
				this.match(HiveSqlParser.KW_BETWEEN);
				this.state = 4418;
				this.window_frame_boundary();
				this.state = 4419;
				this.match(HiveSqlParser.KW_AND);
				this.state = 4420;
				this.window_frame_boundary();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public window_value_expression(): Window_value_expressionContext {
		let _localctx: Window_value_expressionContext = new Window_value_expressionContext(this._ctx, this.state);
		this.enterRule(_localctx, 718, HiveSqlParser.RULE_window_value_expression);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4424;
			this.match(HiveSqlParser.KW_RANGE);
			this.state = 4431;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case HiveSqlParser.KW_CURRENT:
			case HiveSqlParser.KW_UNBOUNDED:
			case HiveSqlParser.Number:
				{
				this.state = 4425;
				this.window_frame_start_boundary();
				}
				break;
			case HiveSqlParser.KW_BETWEEN:
				{
				this.state = 4426;
				this.match(HiveSqlParser.KW_BETWEEN);
				this.state = 4427;
				this.window_frame_boundary();
				this.state = 4428;
				this.match(HiveSqlParser.KW_AND);
				this.state = 4429;
				this.window_frame_boundary();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public window_frame_start_boundary(): Window_frame_start_boundaryContext {
		let _localctx: Window_frame_start_boundaryContext = new Window_frame_start_boundaryContext(this._ctx, this.state);
		this.enterRule(_localctx, 720, HiveSqlParser.RULE_window_frame_start_boundary);
		try {
			this.state = 4439;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case HiveSqlParser.KW_UNBOUNDED:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 4433;
				this.match(HiveSqlParser.KW_UNBOUNDED);
				this.state = 4434;
				this.match(HiveSqlParser.KW_PRECEDING);
				}
				break;
			case HiveSqlParser.KW_CURRENT:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 4435;
				this.match(HiveSqlParser.KW_CURRENT);
				this.state = 4436;
				this.match(HiveSqlParser.KW_ROW);
				}
				break;
			case HiveSqlParser.Number:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 4437;
				this.match(HiveSqlParser.Number);
				this.state = 4438;
				this.match(HiveSqlParser.KW_PRECEDING);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public window_frame_boundary(): Window_frame_boundaryContext {
		let _localctx: Window_frame_boundaryContext = new Window_frame_boundaryContext(this._ctx, this.state);
		this.enterRule(_localctx, 722, HiveSqlParser.RULE_window_frame_boundary);
		let _la: number;
		try {
			this.state = 4445;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case HiveSqlParser.KW_UNBOUNDED:
			case HiveSqlParser.Number:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 4441;
				_la = this._input.LA(1);
				if (!(_la === HiveSqlParser.KW_UNBOUNDED || _la === HiveSqlParser.Number)) {
				this._errHandler.recoverInline(this);
				} else {
					if (this._input.LA(1) === Token.EOF) {
						this.matchedEOF = true;
					}

					this._errHandler.reportMatch(this);
					this.consume();
				}
				this.state = 4442;
				_la = this._input.LA(1);
				if (!(_la === HiveSqlParser.KW_FOLLOWING || _la === HiveSqlParser.KW_PRECEDING)) {
				this._errHandler.recoverInline(this);
				} else {
					if (this._input.LA(1) === Token.EOF) {
						this.matchedEOF = true;
					}

					this._errHandler.reportMatch(this);
					this.consume();
				}
				}
				break;
			case HiveSqlParser.KW_CURRENT:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 4443;
				this.match(HiveSqlParser.KW_CURRENT);
				this.state = 4444;
				this.match(HiveSqlParser.KW_ROW);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public groupByClause(): GroupByClauseContext {
		let _localctx: GroupByClauseContext = new GroupByClauseContext(this._ctx, this.state);
		this.enterRule(_localctx, 724, HiveSqlParser.RULE_groupByClause);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4447;
			this.match(HiveSqlParser.KW_GROUP);
			this.state = 4448;
			this.match(HiveSqlParser.KW_BY);
			this.state = 4449;
			this.groupby_expression();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public groupby_expression(): Groupby_expressionContext {
		let _localctx: Groupby_expressionContext = new Groupby_expressionContext(this._ctx, this.state);
		this.enterRule(_localctx, 726, HiveSqlParser.RULE_groupby_expression);
		try {
			this.state = 4455;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 534, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 4451;
				this.columnName();
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 4452;
				this.rollupStandard();
				}
				break;

			case 3:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 4453;
				this.rollupOldSyntax();
				}
				break;

			case 4:
				this.enterOuterAlt(_localctx, 4);
				{
				this.state = 4454;
				this.groupByEmpty();
				}
				break;
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public groupByEmpty(): GroupByEmptyContext {
		let _localctx: GroupByEmptyContext = new GroupByEmptyContext(this._ctx, this.state);
		this.enterRule(_localctx, 728, HiveSqlParser.RULE_groupByEmpty);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4457;
			this.match(HiveSqlParser.LPAREN);
			this.state = 4458;
			this.match(HiveSqlParser.RPAREN);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public rollupStandard(): RollupStandardContext {
		let _localctx: RollupStandardContext = new RollupStandardContext(this._ctx, this.state);
		this.enterRule(_localctx, 730, HiveSqlParser.RULE_rollupStandard);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4462;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case HiveSqlParser.KW_ROLLUP:
				{
				this.state = 4460;
				_localctx._rollup = this.match(HiveSqlParser.KW_ROLLUP);
				}
				break;
			case HiveSqlParser.KW_CUBE:
				{
				this.state = 4461;
				_localctx._cube = this.match(HiveSqlParser.KW_CUBE);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			this.state = 4464;
			this.match(HiveSqlParser.LPAREN);
			this.state = 4465;
			this.expression();
			this.state = 4470;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === HiveSqlParser.COMMA) {
				{
				{
				this.state = 4466;
				this.match(HiveSqlParser.COMMA);
				this.state = 4467;
				this.expression();
				}
				}
				this.state = 4472;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			}
			this.state = 4473;
			this.match(HiveSqlParser.RPAREN);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public rollupOldSyntax(): RollupOldSyntaxContext {
		let _localctx: RollupOldSyntaxContext = new RollupOldSyntaxContext(this._ctx, this.state);
		this.enterRule(_localctx, 732, HiveSqlParser.RULE_rollupOldSyntax);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4475;
			_localctx._expr = this.expressionsNotInParenthesis();
			this.state = 4480;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 537, this._ctx) ) {
			case 1:
				{
				this.state = 4476;
				_localctx._rollup = this.match(HiveSqlParser.KW_WITH);
				this.state = 4477;
				this.match(HiveSqlParser.KW_ROLLUP);
				}
				break;

			case 2:
				{
				this.state = 4478;
				_localctx._cube = this.match(HiveSqlParser.KW_WITH);
				this.state = 4479;
				this.match(HiveSqlParser.KW_CUBE);
				}
				break;
			}
			this.state = 4495;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === HiveSqlParser.KW_GROUPING) {
				{
				this.state = 4482;
				_localctx._sets = this.match(HiveSqlParser.KW_GROUPING);
				this.state = 4483;
				this.match(HiveSqlParser.KW_SETS);
				this.state = 4484;
				this.match(HiveSqlParser.LPAREN);
				this.state = 4485;
				this.groupingSetExpression();
				this.state = 4490;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				while (_la === HiveSqlParser.COMMA) {
					{
					{
					this.state = 4486;
					this.match(HiveSqlParser.COMMA);
					this.state = 4487;
					this.groupingSetExpression();
					}
					}
					this.state = 4492;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
				}
				this.state = 4493;
				this.match(HiveSqlParser.RPAREN);
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public groupingSetExpression(): GroupingSetExpressionContext {
		let _localctx: GroupingSetExpressionContext = new GroupingSetExpressionContext(this._ctx, this.state);
		this.enterRule(_localctx, 734, HiveSqlParser.RULE_groupingSetExpression);
		try {
			this.state = 4499;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 540, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 4497;
				this.groupingSetExpressionMultiple();
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 4498;
				this.groupingExpressionSingle();
				}
				break;
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public groupingSetExpressionMultiple(): GroupingSetExpressionMultipleContext {
		let _localctx: GroupingSetExpressionMultipleContext = new GroupingSetExpressionMultipleContext(this._ctx, this.state);
		this.enterRule(_localctx, 736, HiveSqlParser.RULE_groupingSetExpressionMultiple);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4501;
			this.match(HiveSqlParser.LPAREN);
			this.state = 4503;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if ((((_la) & ~0x1F) === 0 && ((1 << _la) & ((1 << HiveSqlParser.KW_ABORT) | (1 << HiveSqlParser.KW_ACTIVATE) | (1 << HiveSqlParser.KW_ACTIVE) | (1 << HiveSqlParser.KW_ADD) | (1 << HiveSqlParser.KW_ADMIN) | (1 << HiveSqlParser.KW_AFTER) | (1 << HiveSqlParser.KW_ALLOC_FRACTION) | (1 << HiveSqlParser.KW_ANALYZE) | (1 << HiveSqlParser.KW_AND) | (1 << HiveSqlParser.KW_ARCHIVE) | (1 << HiveSqlParser.KW_ARRAY) | (1 << HiveSqlParser.KW_ASC) | (1 << HiveSqlParser.KW_AST) | (1 << HiveSqlParser.KW_AT) | (1 << HiveSqlParser.KW_AUTOCOMMIT) | (1 << HiveSqlParser.KW_BATCH) | (1 << HiveSqlParser.KW_BEFORE) | (1 << HiveSqlParser.KW_BETWEEN) | (1 << HiveSqlParser.KW_BIGINT) | (1 << HiveSqlParser.KW_BINARY) | (1 << HiveSqlParser.KW_BOOLEAN) | (1 << HiveSqlParser.KW_BUCKET) | (1 << HiveSqlParser.KW_BUCKETS))) !== 0) || ((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & ((1 << (HiveSqlParser.KW_CACHE - 33)) | (1 << (HiveSqlParser.KW_CASCADE - 33)) | (1 << (HiveSqlParser.KW_CASE - 33)) | (1 << (HiveSqlParser.KW_CAST - 33)) | (1 << (HiveSqlParser.KW_CBO - 33)) | (1 << (HiveSqlParser.KW_CHANGE - 33)) | (1 << (HiveSqlParser.KW_CHECK - 33)) | (1 << (HiveSqlParser.KW_CLUSTER - 33)) | (1 << (HiveSqlParser.KW_CLUSTERED - 33)) | (1 << (HiveSqlParser.KW_CLUSTERSTATUS - 33)) | (1 << (HiveSqlParser.KW_COLLECTION - 33)) | (1 << (HiveSqlParser.KW_COLUMNS - 33)) | (1 << (HiveSqlParser.KW_COMMENT - 33)) | (1 << (HiveSqlParser.KW_COMPACT - 33)) | (1 << (HiveSqlParser.KW_COMPACTIONS - 33)) | (1 << (HiveSqlParser.KW_COMPUTE - 33)) | (1 << (HiveSqlParser.KW_CONCATENATE - 33)) | (1 << (HiveSqlParser.KW_CONTINUE - 33)) | (1 << (HiveSqlParser.KW_COST - 33)) | (1 << (HiveSqlParser.KW_CRON - 33)) | (1 << (HiveSqlParser.KW_CURRENT_DATE - 33)) | (1 << (HiveSqlParser.KW_CURRENT_TIMESTAMP - 33)))) !== 0) || ((((_la - 66)) & ~0x1F) === 0 && ((1 << (_la - 66)) & ((1 << (HiveSqlParser.KW_DATA - 66)) | (1 << (HiveSqlParser.KW_DATABASES - 66)) | (1 << (HiveSqlParser.KW_DATE - 66)) | (1 << (HiveSqlParser.KW_DATETIME - 66)) | (1 << (HiveSqlParser.KW_DAY - 66)) | (1 << (HiveSqlParser.KW_DAYS - 66)) | (1 << (HiveSqlParser.KW_DAYOFWEEK - 66)) | (1 << (HiveSqlParser.KW_DBPROPERTIES - 66)) | (1 << (HiveSqlParser.KW_DCPROPERTIES - 66)) | (1 << (HiveSqlParser.KW_DEBUG - 66)) | (1 << (HiveSqlParser.KW_DEFAULT - 66)) | (1 << (HiveSqlParser.KW_DEFERRED - 66)) | (1 << (HiveSqlParser.KW_DEFINED - 66)) | (1 << (HiveSqlParser.KW_DELIMITED - 66)) | (1 << (HiveSqlParser.KW_DEPENDENCY - 66)) | (1 << (HiveSqlParser.KW_DESC - 66)) | (1 << (HiveSqlParser.KW_DETAIL - 66)) | (1 << (HiveSqlParser.KW_DIRECTORIES - 66)) | (1 << (HiveSqlParser.KW_DIRECTORY - 66)) | (1 << (HiveSqlParser.KW_DISABLE - 66)) | (1 << (HiveSqlParser.KW_DISABLED - 66)) | (1 << (HiveSqlParser.KW_DISTRIBUTE - 66)))) !== 0) || ((((_la - 98)) & ~0x1F) === 0 && ((1 << (_la - 98)) & ((1 << (HiveSqlParser.KW_DISTRIBUTED - 98)) | (1 << (HiveSqlParser.KW_DO - 98)) | (1 << (HiveSqlParser.KW_DOUBLE - 98)) | (1 << (HiveSqlParser.KW_DUMP - 98)) | (1 << (HiveSqlParser.KW_ELEM_TYPE - 98)) | (1 << (HiveSqlParser.KW_ENABLE - 98)) | (1 << (HiveSqlParser.KW_ENABLED - 98)) | (1 << (HiveSqlParser.KW_ENFORCED - 98)) | (1 << (HiveSqlParser.KW_ESCAPED - 98)) | (1 << (HiveSqlParser.KW_EVERY - 98)) | (1 << (HiveSqlParser.KW_EXCLUSIVE - 98)) | (1 << (HiveSqlParser.KW_EXECUTE - 98)) | (1 << (HiveSqlParser.KW_EXECUTED - 98)) | (1 << (HiveSqlParser.KW_EXISTS - 98)) | (1 << (HiveSqlParser.KW_EXPIRE_SNAPSHOTS - 98)) | (1 << (HiveSqlParser.KW_EXPLAIN - 98)) | (1 << (HiveSqlParser.KW_EXPORT - 98)) | (1 << (HiveSqlParser.KW_EXPRESSION - 98)) | (1 << (HiveSqlParser.KW_EXTRACT - 98)) | (1 << (HiveSqlParser.KW_FALSE - 98)) | (1 << (HiveSqlParser.KW_FIELDS - 98)) | (1 << (HiveSqlParser.KW_FILE - 98)) | (1 << (HiveSqlParser.KW_FILEFORMAT - 98)))) !== 0) || ((((_la - 130)) & ~0x1F) === 0 && ((1 << (_la - 130)) & ((1 << (HiveSqlParser.KW_FIRST - 130)) | (1 << (HiveSqlParser.KW_FLOAT - 130)) | (1 << (HiveSqlParser.KW_FLOOR - 130)) | (1 << (HiveSqlParser.KW_FORMAT - 130)) | (1 << (HiveSqlParser.KW_FORMATTED - 130)) | (1 << (HiveSqlParser.KW_FUNCTIONS - 130)) | (1 << (HiveSqlParser.KW_GROUPING - 130)) | (1 << (HiveSqlParser.KW_HOLD_DDLTIME - 130)) | (1 << (HiveSqlParser.KW_HOUR - 130)) | (1 << (HiveSqlParser.KW_HOURS - 130)) | (1 << (HiveSqlParser.KW_IDXPROPERTIES - 130)) | (1 << (HiveSqlParser.KW_IF - 130)) | (1 << (HiveSqlParser.KW_IGNORE - 130)) | (1 << (HiveSqlParser.KW_IN - 130)) | (1 << (HiveSqlParser.KW_INDEX - 130)) | (1 << (HiveSqlParser.KW_INDEXES - 130)) | (1 << (HiveSqlParser.KW_INPATH - 130)) | (1 << (HiveSqlParser.KW_INPUTDRIVER - 130)) | (1 << (HiveSqlParser.KW_INPUTFORMAT - 130)))) !== 0) || ((((_la - 162)) & ~0x1F) === 0 && ((1 << (_la - 162)) & ((1 << (HiveSqlParser.KW_INT - 162)) | (1 << (HiveSqlParser.KW_INTEGER - 162)) | (1 << (HiveSqlParser.KW_INTERVAL - 162)) | (1 << (HiveSqlParser.KW_ISOLATION - 162)) | (1 << (HiveSqlParser.KW_ITEMS - 162)) | (1 << (HiveSqlParser.KW_JAR - 162)) | (1 << (HiveSqlParser.KW_JOINCOST - 162)) | (1 << (HiveSqlParser.KW_KEY - 162)) | (1 << (HiveSqlParser.KW_KEYS - 162)) | (1 << (HiveSqlParser.KW_KEY_TYPE - 162)) | (1 << (HiveSqlParser.KW_KILL - 162)) | (1 << (HiveSqlParser.KW_LAST - 162)) | (1 << (HiveSqlParser.KW_LEVEL - 162)) | (1 << (HiveSqlParser.KW_LIKE - 162)) | (1 << (HiveSqlParser.KW_LIMIT - 162)) | (1 << (HiveSqlParser.KW_LINES - 162)) | (1 << (HiveSqlParser.KW_LOAD - 162)) | (1 << (HiveSqlParser.KW_LOCATION - 162)) | (1 << (HiveSqlParser.KW_LOCK - 162)) | (1 << (HiveSqlParser.KW_LOCKS - 162)) | (1 << (HiveSqlParser.KW_LOGICAL - 162)) | (1 << (HiveSqlParser.KW_LONG - 162)))) !== 0) || ((((_la - 194)) & ~0x1F) === 0 && ((1 << (_la - 194)) & ((1 << (HiveSqlParser.KW_MANAGED - 194)) | (1 << (HiveSqlParser.KW_MANAGEDLOCATION - 194)) | (1 << (HiveSqlParser.KW_MANAGEMENT - 194)) | (1 << (HiveSqlParser.KW_MAP - 194)) | (1 << (HiveSqlParser.KW_MAPJOIN - 194)) | (1 << (HiveSqlParser.KW_MAPPING - 194)) | (1 << (HiveSqlParser.KW_MATCHED - 194)) | (1 << (HiveSqlParser.KW_MATERIALIZED - 194)) | (1 << (HiveSqlParser.KW_METADATA - 194)) | (1 << (HiveSqlParser.KW_MINUTE - 194)) | (1 << (HiveSqlParser.KW_MINUTES - 194)) | (1 << (HiveSqlParser.KW_MONTH - 194)) | (1 << (HiveSqlParser.KW_MONTHS - 194)) | (1 << (HiveSqlParser.KW_MOVE - 194)) | (1 << (HiveSqlParser.KW_MSCK - 194)) | (1 << (HiveSqlParser.KW_NORELY - 194)) | (1 << (HiveSqlParser.KW_NOSCAN - 194)) | (1 << (HiveSqlParser.KW_NOT - 194)) | (1 << (HiveSqlParser.KW_NOVALIDATE - 194)) | (1 << (HiveSqlParser.KW_NO_DROP - 194)) | (1 << (HiveSqlParser.KW_NULL - 194)) | (1 << (HiveSqlParser.KW_NULLS - 194)) | (1 << (HiveSqlParser.KW_OFFLINE - 194)) | (1 << (HiveSqlParser.KW_OFFSET - 194)) | (1 << (HiveSqlParser.KW_OPERATOR - 194)))) !== 0) || ((((_la - 226)) & ~0x1F) === 0 && ((1 << (_la - 226)) & ((1 << (HiveSqlParser.KW_OPTION - 226)) | (1 << (HiveSqlParser.KW_OR - 226)) | (1 << (HiveSqlParser.KW_OUTPUTDRIVER - 226)) | (1 << (HiveSqlParser.KW_OUTPUTFORMAT - 226)) | (1 << (HiveSqlParser.KW_OVERWRITE - 226)) | (1 << (HiveSqlParser.KW_OWNER - 226)) | (1 << (HiveSqlParser.KW_PARTITIONED - 226)) | (1 << (HiveSqlParser.KW_PARTITIONS - 226)) | (1 << (HiveSqlParser.KW_PATH - 226)) | (1 << (HiveSqlParser.KW_PLAN - 226)) | (1 << (HiveSqlParser.KW_PLANS - 226)) | (1 << (HiveSqlParser.KW_PLUS - 226)) | (1 << (HiveSqlParser.KW_POOL - 226)) | (1 << (HiveSqlParser.KW_PRINCIPALS - 226)) | (1 << (HiveSqlParser.KW_PROTECTION - 226)) | (1 << (HiveSqlParser.KW_PURGE - 226)) | (1 << (HiveSqlParser.KW_QUARTER - 226)) | (1 << (HiveSqlParser.KW_QUERY - 226)))) !== 0) || ((((_la - 258)) & ~0x1F) === 0 && ((1 << (_la - 258)) & ((1 << (HiveSqlParser.KW_QUERY_PARALLELISM - 258)) | (1 << (HiveSqlParser.KW_READ - 258)) | (1 << (HiveSqlParser.KW_READONLY - 258)) | (1 << (HiveSqlParser.KW_REAL - 258)) | (1 << (HiveSqlParser.KW_REBUILD - 258)) | (1 << (HiveSqlParser.KW_RECORDREADER - 258)) | (1 << (HiveSqlParser.KW_RECORDWRITER - 258)) | (1 << (HiveSqlParser.KW_REGEXP - 258)) | (1 << (HiveSqlParser.KW_RELOAD - 258)) | (1 << (HiveSqlParser.KW_RELY - 258)) | (1 << (HiveSqlParser.KW_REMOTE - 258)) | (1 << (HiveSqlParser.KW_RENAME - 258)) | (1 << (HiveSqlParser.KW_REOPTIMIZATION - 258)) | (1 << (HiveSqlParser.KW_REPAIR - 258)) | (1 << (HiveSqlParser.KW_REPL - 258)) | (1 << (HiveSqlParser.KW_REPLACE - 258)) | (1 << (HiveSqlParser.KW_REPLICATION - 258)) | (1 << (HiveSqlParser.KW_RESOURCE - 258)) | (1 << (HiveSqlParser.KW_RESPECT - 258)) | (1 << (HiveSqlParser.KW_RESTRICT - 258)) | (1 << (HiveSqlParser.KW_REWRITE - 258)) | (1 << (HiveSqlParser.KW_RLIKE - 258)) | (1 << (HiveSqlParser.KW_ROLE - 258)) | (1 << (HiveSqlParser.KW_ROLES - 258)))) !== 0) || ((((_la - 292)) & ~0x1F) === 0 && ((1 << (_la - 292)) & ((1 << (HiveSqlParser.KW_SCHEDULED - 292)) | (1 << (HiveSqlParser.KW_SCHEDULING_POLICY - 292)) | (1 << (HiveSqlParser.KW_SCHEMA - 292)) | (1 << (HiveSqlParser.KW_SCHEMAS - 292)) | (1 << (HiveSqlParser.KW_SECOND - 292)) | (1 << (HiveSqlParser.KW_SECONDS - 292)) | (1 << (HiveSqlParser.KW_SEMI - 292)) | (1 << (HiveSqlParser.KW_SERDE - 292)) | (1 << (HiveSqlParser.KW_SERDEPROPERTIES - 292)) | (1 << (HiveSqlParser.KW_SERVER - 292)) | (1 << (HiveSqlParser.KW_SETS - 292)) | (1 << (HiveSqlParser.KW_SET_CURRENT_SNAPSHOT - 292)) | (1 << (HiveSqlParser.KW_SHARED - 292)) | (1 << (HiveSqlParser.KW_SHOW - 292)) | (1 << (HiveSqlParser.KW_SHOW_DATABASE - 292)) | (1 << (HiveSqlParser.KW_SKEWED - 292)) | (1 << (HiveSqlParser.KW_SMALLINT - 292)) | (1 << (HiveSqlParser.KW_SNAPSHOT - 292)) | (1 << (HiveSqlParser.KW_SORT - 292)) | (1 << (HiveSqlParser.KW_SORTED - 292)) | (1 << (HiveSqlParser.KW_SPEC - 292)) | (1 << (HiveSqlParser.KW_SSL - 292)) | (1 << (HiveSqlParser.KW_STATISTICS - 292)) | (1 << (HiveSqlParser.KW_STATUS - 292)) | (1 << (HiveSqlParser.KW_STORED - 292)) | (1 << (HiveSqlParser.KW_STREAMTABLE - 292)) | (1 << (HiveSqlParser.KW_STRING - 292)) | (1 << (HiveSqlParser.KW_STRUCT - 292)))) !== 0) || ((((_la - 324)) & ~0x1F) === 0 && ((1 << (_la - 324)) & ((1 << (HiveSqlParser.KW_SUMMARY - 324)) | (1 << (HiveSqlParser.KW_SYSTEM_TIME - 324)) | (1 << (HiveSqlParser.KW_SYSTEM_VERSION - 324)) | (1 << (HiveSqlParser.KW_TABLES - 324)) | (1 << (HiveSqlParser.KW_TBLPROPERTIES - 324)) | (1 << (HiveSqlParser.KW_TEMPORARY - 324)) | (1 << (HiveSqlParser.KW_TERMINATED - 324)) | (1 << (HiveSqlParser.KW_TIMESTAMP - 324)) | (1 << (HiveSqlParser.KW_TIMESTAMPLOCALTZ - 324)) | (1 << (HiveSqlParser.KW_TIMESTAMPTZ - 324)) | (1 << (HiveSqlParser.KW_TINYINT - 324)) | (1 << (HiveSqlParser.KW_TOUCH - 324)) | (1 << (HiveSqlParser.KW_TRANSACTION - 324)) | (1 << (HiveSqlParser.KW_TRANSACTIONAL - 324)) | (1 << (HiveSqlParser.KW_TRANSACTIONS - 324)) | (1 << (HiveSqlParser.KW_TRIM - 324)) | (1 << (HiveSqlParser.KW_TRUE - 324)) | (1 << (HiveSqlParser.KW_TYPE - 324)) | (1 << (HiveSqlParser.KW_UNARCHIVE - 324)) | (1 << (HiveSqlParser.KW_UNDO - 324)))) !== 0) || ((((_la - 356)) & ~0x1F) === 0 && ((1 << (_la - 356)) & ((1 << (HiveSqlParser.KW_UNIONTYPE - 356)) | (1 << (HiveSqlParser.KW_UNKNOWN - 356)) | (1 << (HiveSqlParser.KW_UNLOCK - 356)) | (1 << (HiveSqlParser.KW_UNMANAGED - 356)) | (1 << (HiveSqlParser.KW_UNSET - 356)) | (1 << (HiveSqlParser.KW_UNSIGNED - 356)) | (1 << (HiveSqlParser.KW_URI - 356)) | (1 << (HiveSqlParser.KW_URL - 356)) | (1 << (HiveSqlParser.KW_USE - 356)) | (1 << (HiveSqlParser.KW_UTC - 356)) | (1 << (HiveSqlParser.KW_UTCTIMESTAMP - 356)) | (1 << (HiveSqlParser.KW_VALIDATE - 356)) | (1 << (HiveSqlParser.KW_VALUE_TYPE - 356)) | (1 << (HiveSqlParser.KW_VECTORIZATION - 356)) | (1 << (HiveSqlParser.KW_VIEW - 356)) | (1 << (HiveSqlParser.KW_VIEWS - 356)) | (1 << (HiveSqlParser.KW_WAIT - 356)) | (1 << (HiveSqlParser.KW_WEEK - 356)) | (1 << (HiveSqlParser.KW_WEEKS - 356)) | (1 << (HiveSqlParser.KW_WHEN - 356)) | (1 << (HiveSqlParser.KW_WHILE - 356)) | (1 << (HiveSqlParser.KW_WITHIN - 356)))) !== 0) || ((((_la - 388)) & ~0x1F) === 0 && ((1 << (_la - 388)) & ((1 << (HiveSqlParser.KW_WORK - 388)) | (1 << (HiveSqlParser.KW_WORKLOAD - 388)) | (1 << (HiveSqlParser.KW_WRITE - 388)) | (1 << (HiveSqlParser.KW_YEAR - 388)) | (1 << (HiveSqlParser.KW_YEARS - 388)) | (1 << (HiveSqlParser.KW_ZONE - 388)) | (1 << (HiveSqlParser.LPAREN - 388)) | (1 << (HiveSqlParser.EQUAL - 388)) | (1 << (HiveSqlParser.EQUAL_NS - 388)) | (1 << (HiveSqlParser.NOTEQUAL - 388)) | (1 << (HiveSqlParser.LESSTHANOREQUALTO - 388)) | (1 << (HiveSqlParser.LESSTHAN - 388)) | (1 << (HiveSqlParser.GREATERTHANOREQUALTO - 388)) | (1 << (HiveSqlParser.GREATERTHAN - 388)) | (1 << (HiveSqlParser.DIVIDE - 388)) | (1 << (HiveSqlParser.PLUS - 388)) | (1 << (HiveSqlParser.MINUS - 388)) | (1 << (HiveSqlParser.STAR - 388)) | (1 << (HiveSqlParser.MOD - 388)) | (1 << (HiveSqlParser.DIV - 388)) | (1 << (HiveSqlParser.BITWISENOT - 388)) | (1 << (HiveSqlParser.AMPERSAND - 388)) | (1 << (HiveSqlParser.TILDE - 388)))) !== 0) || ((((_la - 420)) & ~0x1F) === 0 && ((1 << (_la - 420)) & ((1 << (HiveSqlParser.BITWISEOR - 420)) | (1 << (HiveSqlParser.BITWISEXOR - 420)) | (1 << (HiveSqlParser.QUESTION - 420)) | (1 << (HiveSqlParser.StringLiteral - 420)) | (1 << (HiveSqlParser.IntegralLiteral - 420)) | (1 << (HiveSqlParser.NumberLiteral - 420)) | (1 << (HiveSqlParser.Number - 420)) | (1 << (HiveSqlParser.Identifier - 420)) | (1 << (HiveSqlParser.CharSetName - 420)))) !== 0)) {
				{
				this.state = 4502;
				this.expression();
				}
			}

			this.state = 4509;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === HiveSqlParser.COMMA) {
				{
				{
				this.state = 4505;
				this.match(HiveSqlParser.COMMA);
				this.state = 4506;
				this.expression();
				}
				}
				this.state = 4511;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			}
			this.state = 4512;
			this.match(HiveSqlParser.RPAREN);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public groupingExpressionSingle(): GroupingExpressionSingleContext {
		let _localctx: GroupingExpressionSingleContext = new GroupingExpressionSingleContext(this._ctx, this.state);
		this.enterRule(_localctx, 738, HiveSqlParser.RULE_groupingExpressionSingle);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4514;
			this.expression();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public havingClause(): HavingClauseContext {
		let _localctx: HavingClauseContext = new HavingClauseContext(this._ctx, this.state);
		this.enterRule(_localctx, 740, HiveSqlParser.RULE_havingClause);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4516;
			this.match(HiveSqlParser.KW_HAVING);
			this.state = 4517;
			this.havingCondition();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public qualifyClause(): QualifyClauseContext {
		let _localctx: QualifyClauseContext = new QualifyClauseContext(this._ctx, this.state);
		this.enterRule(_localctx, 742, HiveSqlParser.RULE_qualifyClause);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4519;
			this.match(HiveSqlParser.KW_QUALIFY);
			this.state = 4520;
			this.expression();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public havingCondition(): HavingConditionContext {
		let _localctx: HavingConditionContext = new HavingConditionContext(this._ctx, this.state);
		this.enterRule(_localctx, 744, HiveSqlParser.RULE_havingCondition);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4522;
			this.expression();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public expressionsInParenthesis(): ExpressionsInParenthesisContext {
		let _localctx: ExpressionsInParenthesisContext = new ExpressionsInParenthesisContext(this._ctx, this.state);
		this.enterRule(_localctx, 746, HiveSqlParser.RULE_expressionsInParenthesis);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4524;
			this.match(HiveSqlParser.LPAREN);
			this.state = 4525;
			this.expressionsNotInParenthesis();
			this.state = 4526;
			this.match(HiveSqlParser.RPAREN);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public expressionsNotInParenthesis(): ExpressionsNotInParenthesisContext {
		let _localctx: ExpressionsNotInParenthesisContext = new ExpressionsNotInParenthesisContext(this._ctx, this.state);
		this.enterRule(_localctx, 748, HiveSqlParser.RULE_expressionsNotInParenthesis);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4528;
			_localctx._first = this.expressionOrDefault();
			this.state = 4530;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === HiveSqlParser.COMMA) {
				{
				this.state = 4529;
				_localctx._more = this.expressionPart();
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public expressionPart(): ExpressionPartContext {
		let _localctx: ExpressionPartContext = new ExpressionPartContext(this._ctx, this.state);
		this.enterRule(_localctx, 750, HiveSqlParser.RULE_expressionPart);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4534;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			do {
				{
				{
				this.state = 4532;
				this.match(HiveSqlParser.COMMA);
				this.state = 4533;
				this.expressionOrDefault();
				}
				}
				this.state = 4536;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			} while (_la === HiveSqlParser.COMMA);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public expressionOrDefault(): ExpressionOrDefaultContext {
		let _localctx: ExpressionOrDefaultContext = new ExpressionOrDefaultContext(this._ctx, this.state);
		this.enterRule(_localctx, 752, HiveSqlParser.RULE_expressionOrDefault);
		try {
			this.state = 4540;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 545, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 4538;
				this.defaultValue();
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 4539;
				this.expression();
				}
				break;
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public firstExpressionsWithAlias(): FirstExpressionsWithAliasContext {
		let _localctx: FirstExpressionsWithAliasContext = new FirstExpressionsWithAliasContext(this._ctx, this.state);
		this.enterRule(_localctx, 754, HiveSqlParser.RULE_firstExpressionsWithAlias);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4542;
			_localctx._first = this.expression();
			this.state = 4544;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === HiveSqlParser.KW_AS) {
				{
				this.state = 4543;
				this.match(HiveSqlParser.KW_AS);
				}
			}

			this.state = 4547;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if ((((_la) & ~0x1F) === 0 && ((1 << _la) & ((1 << HiveSqlParser.KW_ABORT) | (1 << HiveSqlParser.KW_ACTIVATE) | (1 << HiveSqlParser.KW_ACTIVE) | (1 << HiveSqlParser.KW_ADD) | (1 << HiveSqlParser.KW_ADMIN) | (1 << HiveSqlParser.KW_AFTER) | (1 << HiveSqlParser.KW_ALLOC_FRACTION) | (1 << HiveSqlParser.KW_ANALYZE) | (1 << HiveSqlParser.KW_ARCHIVE) | (1 << HiveSqlParser.KW_ASC) | (1 << HiveSqlParser.KW_AST) | (1 << HiveSqlParser.KW_AT) | (1 << HiveSqlParser.KW_AUTOCOMMIT) | (1 << HiveSqlParser.KW_BATCH) | (1 << HiveSqlParser.KW_BEFORE) | (1 << HiveSqlParser.KW_BUCKET) | (1 << HiveSqlParser.KW_BUCKETS))) !== 0) || ((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & ((1 << (HiveSqlParser.KW_CACHE - 33)) | (1 << (HiveSqlParser.KW_CASCADE - 33)) | (1 << (HiveSqlParser.KW_CBO - 33)) | (1 << (HiveSqlParser.KW_CHANGE - 33)) | (1 << (HiveSqlParser.KW_CHECK - 33)) | (1 << (HiveSqlParser.KW_CLUSTER - 33)) | (1 << (HiveSqlParser.KW_CLUSTERED - 33)) | (1 << (HiveSqlParser.KW_CLUSTERSTATUS - 33)) | (1 << (HiveSqlParser.KW_COLLECTION - 33)) | (1 << (HiveSqlParser.KW_COLUMNS - 33)) | (1 << (HiveSqlParser.KW_COMMENT - 33)) | (1 << (HiveSqlParser.KW_COMPACT - 33)) | (1 << (HiveSqlParser.KW_COMPACTIONS - 33)) | (1 << (HiveSqlParser.KW_COMPUTE - 33)) | (1 << (HiveSqlParser.KW_CONCATENATE - 33)) | (1 << (HiveSqlParser.KW_CONTINUE - 33)) | (1 << (HiveSqlParser.KW_COST - 33)) | (1 << (HiveSqlParser.KW_CRON - 33)))) !== 0) || ((((_la - 66)) & ~0x1F) === 0 && ((1 << (_la - 66)) & ((1 << (HiveSqlParser.KW_DATA - 66)) | (1 << (HiveSqlParser.KW_DATABASES - 66)) | (1 << (HiveSqlParser.KW_DATETIME - 66)) | (1 << (HiveSqlParser.KW_DAY - 66)) | (1 << (HiveSqlParser.KW_DAYS - 66)) | (1 << (HiveSqlParser.KW_DAYOFWEEK - 66)) | (1 << (HiveSqlParser.KW_DBPROPERTIES - 66)) | (1 << (HiveSqlParser.KW_DCPROPERTIES - 66)) | (1 << (HiveSqlParser.KW_DEBUG - 66)) | (1 << (HiveSqlParser.KW_DEFAULT - 66)) | (1 << (HiveSqlParser.KW_DEFERRED - 66)) | (1 << (HiveSqlParser.KW_DEFINED - 66)) | (1 << (HiveSqlParser.KW_DELIMITED - 66)) | (1 << (HiveSqlParser.KW_DEPENDENCY - 66)) | (1 << (HiveSqlParser.KW_DESC - 66)) | (1 << (HiveSqlParser.KW_DETAIL - 66)) | (1 << (HiveSqlParser.KW_DIRECTORIES - 66)) | (1 << (HiveSqlParser.KW_DIRECTORY - 66)) | (1 << (HiveSqlParser.KW_DISABLE - 66)) | (1 << (HiveSqlParser.KW_DISABLED - 66)) | (1 << (HiveSqlParser.KW_DISTRIBUTE - 66)))) !== 0) || ((((_la - 98)) & ~0x1F) === 0 && ((1 << (_la - 98)) & ((1 << (HiveSqlParser.KW_DISTRIBUTED - 98)) | (1 << (HiveSqlParser.KW_DO - 98)) | (1 << (HiveSqlParser.KW_DUMP - 98)) | (1 << (HiveSqlParser.KW_ELEM_TYPE - 98)) | (1 << (HiveSqlParser.KW_ENABLE - 98)) | (1 << (HiveSqlParser.KW_ENABLED - 98)) | (1 << (HiveSqlParser.KW_ENFORCED - 98)) | (1 << (HiveSqlParser.KW_ESCAPED - 98)) | (1 << (HiveSqlParser.KW_EVERY - 98)) | (1 << (HiveSqlParser.KW_EXCLUSIVE - 98)) | (1 << (HiveSqlParser.KW_EXECUTE - 98)) | (1 << (HiveSqlParser.KW_EXECUTED - 98)) | (1 << (HiveSqlParser.KW_EXPIRE_SNAPSHOTS - 98)) | (1 << (HiveSqlParser.KW_EXPLAIN - 98)) | (1 << (HiveSqlParser.KW_EXPORT - 98)) | (1 << (HiveSqlParser.KW_EXPRESSION - 98)) | (1 << (HiveSqlParser.KW_FIELDS - 98)) | (1 << (HiveSqlParser.KW_FILE - 98)) | (1 << (HiveSqlParser.KW_FILEFORMAT - 98)))) !== 0) || ((((_la - 130)) & ~0x1F) === 0 && ((1 << (_la - 130)) & ((1 << (HiveSqlParser.KW_FIRST - 130)) | (1 << (HiveSqlParser.KW_FORMAT - 130)) | (1 << (HiveSqlParser.KW_FORMATTED - 130)) | (1 << (HiveSqlParser.KW_FUNCTIONS - 130)) | (1 << (HiveSqlParser.KW_HOLD_DDLTIME - 130)) | (1 << (HiveSqlParser.KW_HOUR - 130)) | (1 << (HiveSqlParser.KW_HOURS - 130)) | (1 << (HiveSqlParser.KW_IDXPROPERTIES - 130)) | (1 << (HiveSqlParser.KW_IGNORE - 130)) | (1 << (HiveSqlParser.KW_INDEX - 130)) | (1 << (HiveSqlParser.KW_INDEXES - 130)) | (1 << (HiveSqlParser.KW_INPATH - 130)) | (1 << (HiveSqlParser.KW_INPUTDRIVER - 130)) | (1 << (HiveSqlParser.KW_INPUTFORMAT - 130)))) !== 0) || ((((_la - 168)) & ~0x1F) === 0 && ((1 << (_la - 168)) & ((1 << (HiveSqlParser.KW_ISOLATION - 168)) | (1 << (HiveSqlParser.KW_ITEMS - 168)) | (1 << (HiveSqlParser.KW_JAR - 168)) | (1 << (HiveSqlParser.KW_JOINCOST - 168)) | (1 << (HiveSqlParser.KW_KEY - 168)) | (1 << (HiveSqlParser.KW_KEYS - 168)) | (1 << (HiveSqlParser.KW_KEY_TYPE - 168)) | (1 << (HiveSqlParser.KW_KILL - 168)) | (1 << (HiveSqlParser.KW_LAST - 168)) | (1 << (HiveSqlParser.KW_LEVEL - 168)) | (1 << (HiveSqlParser.KW_LIMIT - 168)) | (1 << (HiveSqlParser.KW_LINES - 168)) | (1 << (HiveSqlParser.KW_LOAD - 168)) | (1 << (HiveSqlParser.KW_LOCATION - 168)) | (1 << (HiveSqlParser.KW_LOCK - 168)) | (1 << (HiveSqlParser.KW_LOCKS - 168)) | (1 << (HiveSqlParser.KW_LOGICAL - 168)) | (1 << (HiveSqlParser.KW_LONG - 168)) | (1 << (HiveSqlParser.KW_MANAGED - 168)) | (1 << (HiveSqlParser.KW_MANAGEDLOCATION - 168)) | (1 << (HiveSqlParser.KW_MANAGEMENT - 168)) | (1 << (HiveSqlParser.KW_MAPJOIN - 168)) | (1 << (HiveSqlParser.KW_MAPPING - 168)))) !== 0) || ((((_la - 200)) & ~0x1F) === 0 && ((1 << (_la - 200)) & ((1 << (HiveSqlParser.KW_MATCHED - 200)) | (1 << (HiveSqlParser.KW_MATERIALIZED - 200)) | (1 << (HiveSqlParser.KW_METADATA - 200)) | (1 << (HiveSqlParser.KW_MINUTE - 200)) | (1 << (HiveSqlParser.KW_MINUTES - 200)) | (1 << (HiveSqlParser.KW_MONTH - 200)) | (1 << (HiveSqlParser.KW_MONTHS - 200)) | (1 << (HiveSqlParser.KW_MOVE - 200)) | (1 << (HiveSqlParser.KW_MSCK - 200)) | (1 << (HiveSqlParser.KW_NORELY - 200)) | (1 << (HiveSqlParser.KW_NOSCAN - 200)) | (1 << (HiveSqlParser.KW_NOVALIDATE - 200)) | (1 << (HiveSqlParser.KW_NO_DROP - 200)) | (1 << (HiveSqlParser.KW_NULLS - 200)) | (1 << (HiveSqlParser.KW_OFFLINE - 200)) | (1 << (HiveSqlParser.KW_OFFSET - 200)) | (1 << (HiveSqlParser.KW_OPERATOR - 200)) | (1 << (HiveSqlParser.KW_OPTION - 200)) | (1 << (HiveSqlParser.KW_OUTPUTDRIVER - 200)))) !== 0) || ((((_la - 232)) & ~0x1F) === 0 && ((1 << (_la - 232)) & ((1 << (HiveSqlParser.KW_OUTPUTFORMAT - 232)) | (1 << (HiveSqlParser.KW_OVERWRITE - 232)) | (1 << (HiveSqlParser.KW_OWNER - 232)) | (1 << (HiveSqlParser.KW_PARTITIONED - 232)) | (1 << (HiveSqlParser.KW_PARTITIONS - 232)) | (1 << (HiveSqlParser.KW_PATH - 232)) | (1 << (HiveSqlParser.KW_PLAN - 232)) | (1 << (HiveSqlParser.KW_PLANS - 232)) | (1 << (HiveSqlParser.KW_PLUS - 232)) | (1 << (HiveSqlParser.KW_POOL - 232)) | (1 << (HiveSqlParser.KW_PRINCIPALS - 232)) | (1 << (HiveSqlParser.KW_PROTECTION - 232)) | (1 << (HiveSqlParser.KW_PURGE - 232)) | (1 << (HiveSqlParser.KW_QUARTER - 232)) | (1 << (HiveSqlParser.KW_QUERY - 232)) | (1 << (HiveSqlParser.KW_QUERY_PARALLELISM - 232)) | (1 << (HiveSqlParser.KW_READ - 232)) | (1 << (HiveSqlParser.KW_READONLY - 232)))) !== 0) || ((((_la - 264)) & ~0x1F) === 0 && ((1 << (_la - 264)) & ((1 << (HiveSqlParser.KW_REBUILD - 264)) | (1 << (HiveSqlParser.KW_RECORDREADER - 264)) | (1 << (HiveSqlParser.KW_RECORDWRITER - 264)) | (1 << (HiveSqlParser.KW_RELOAD - 264)) | (1 << (HiveSqlParser.KW_RELY - 264)) | (1 << (HiveSqlParser.KW_REMOTE - 264)) | (1 << (HiveSqlParser.KW_RENAME - 264)) | (1 << (HiveSqlParser.KW_REOPTIMIZATION - 264)) | (1 << (HiveSqlParser.KW_REPAIR - 264)) | (1 << (HiveSqlParser.KW_REPL - 264)) | (1 << (HiveSqlParser.KW_REPLACE - 264)) | (1 << (HiveSqlParser.KW_REPLICATION - 264)) | (1 << (HiveSqlParser.KW_RESOURCE - 264)) | (1 << (HiveSqlParser.KW_RESPECT - 264)) | (1 << (HiveSqlParser.KW_RESTRICT - 264)) | (1 << (HiveSqlParser.KW_REWRITE - 264)) | (1 << (HiveSqlParser.KW_ROLE - 264)) | (1 << (HiveSqlParser.KW_ROLES - 264)) | (1 << (HiveSqlParser.KW_SCHEDULED - 264)) | (1 << (HiveSqlParser.KW_SCHEDULING_POLICY - 264)) | (1 << (HiveSqlParser.KW_SCHEMA - 264)) | (1 << (HiveSqlParser.KW_SCHEMAS - 264)))) !== 0) || ((((_la - 296)) & ~0x1F) === 0 && ((1 << (_la - 296)) & ((1 << (HiveSqlParser.KW_SECOND - 296)) | (1 << (HiveSqlParser.KW_SECONDS - 296)) | (1 << (HiveSqlParser.KW_SEMI - 296)) | (1 << (HiveSqlParser.KW_SERDE - 296)) | (1 << (HiveSqlParser.KW_SERDEPROPERTIES - 296)) | (1 << (HiveSqlParser.KW_SERVER - 296)) | (1 << (HiveSqlParser.KW_SETS - 296)) | (1 << (HiveSqlParser.KW_SET_CURRENT_SNAPSHOT - 296)) | (1 << (HiveSqlParser.KW_SHARED - 296)) | (1 << (HiveSqlParser.KW_SHOW - 296)) | (1 << (HiveSqlParser.KW_SHOW_DATABASE - 296)) | (1 << (HiveSqlParser.KW_SKEWED - 296)) | (1 << (HiveSqlParser.KW_SNAPSHOT - 296)) | (1 << (HiveSqlParser.KW_SORT - 296)) | (1 << (HiveSqlParser.KW_SORTED - 296)) | (1 << (HiveSqlParser.KW_SPEC - 296)) | (1 << (HiveSqlParser.KW_SSL - 296)) | (1 << (HiveSqlParser.KW_STATISTICS - 296)) | (1 << (HiveSqlParser.KW_STATUS - 296)) | (1 << (HiveSqlParser.KW_STORED - 296)) | (1 << (HiveSqlParser.KW_STREAMTABLE - 296)) | (1 << (HiveSqlParser.KW_STRING - 296)) | (1 << (HiveSqlParser.KW_STRUCT - 296)) | (1 << (HiveSqlParser.KW_SUMMARY - 296)) | (1 << (HiveSqlParser.KW_SYSTEM_TIME - 296)) | (1 << (HiveSqlParser.KW_SYSTEM_VERSION - 296)))) !== 0) || ((((_la - 329)) & ~0x1F) === 0 && ((1 << (_la - 329)) & ((1 << (HiveSqlParser.KW_TABLES - 329)) | (1 << (HiveSqlParser.KW_TBLPROPERTIES - 329)) | (1 << (HiveSqlParser.KW_TEMPORARY - 329)) | (1 << (HiveSqlParser.KW_TERMINATED - 329)) | (1 << (HiveSqlParser.KW_TIMESTAMPTZ - 329)) | (1 << (HiveSqlParser.KW_TINYINT - 329)) | (1 << (HiveSqlParser.KW_TOUCH - 329)) | (1 << (HiveSqlParser.KW_TRANSACTION - 329)) | (1 << (HiveSqlParser.KW_TRANSACTIONAL - 329)) | (1 << (HiveSqlParser.KW_TRANSACTIONS - 329)) | (1 << (HiveSqlParser.KW_TRIM - 329)) | (1 << (HiveSqlParser.KW_TYPE - 329)) | (1 << (HiveSqlParser.KW_UNARCHIVE - 329)) | (1 << (HiveSqlParser.KW_UNDO - 329)) | (1 << (HiveSqlParser.KW_UNIONTYPE - 329)) | (1 << (HiveSqlParser.KW_UNKNOWN - 329)) | (1 << (HiveSqlParser.KW_UNLOCK - 329)))) !== 0) || ((((_la - 361)) & ~0x1F) === 0 && ((1 << (_la - 361)) & ((1 << (HiveSqlParser.KW_UNMANAGED - 361)) | (1 << (HiveSqlParser.KW_UNSET - 361)) | (1 << (HiveSqlParser.KW_UNSIGNED - 361)) | (1 << (HiveSqlParser.KW_URI - 361)) | (1 << (HiveSqlParser.KW_URL - 361)) | (1 << (HiveSqlParser.KW_USE - 361)) | (1 << (HiveSqlParser.KW_UTC - 361)) | (1 << (HiveSqlParser.KW_UTCTIMESTAMP - 361)) | (1 << (HiveSqlParser.KW_VALIDATE - 361)) | (1 << (HiveSqlParser.KW_VALUE_TYPE - 361)) | (1 << (HiveSqlParser.KW_VECTORIZATION - 361)) | (1 << (HiveSqlParser.KW_VIEW - 361)) | (1 << (HiveSqlParser.KW_VIEWS - 361)) | (1 << (HiveSqlParser.KW_WAIT - 361)) | (1 << (HiveSqlParser.KW_WEEK - 361)) | (1 << (HiveSqlParser.KW_WEEKS - 361)) | (1 << (HiveSqlParser.KW_WHILE - 361)) | (1 << (HiveSqlParser.KW_WITHIN - 361)) | (1 << (HiveSqlParser.KW_WORK - 361)) | (1 << (HiveSqlParser.KW_WORKLOAD - 361)) | (1 << (HiveSqlParser.KW_WRITE - 361)) | (1 << (HiveSqlParser.KW_YEAR - 361)) | (1 << (HiveSqlParser.KW_YEARS - 361)))) !== 0) || _la === HiveSqlParser.KW_ZONE || _la === HiveSqlParser.Identifier) {
				{
				this.state = 4546;
				_localctx._colAlias = this.id_();
				}
			}

			this.state = 4553;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === HiveSqlParser.COMMA) {
				{
				{
				this.state = 4549;
				this.match(HiveSqlParser.COMMA);
				this.state = 4550;
				this.expressionWithAlias();
				}
				}
				this.state = 4555;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public expressionWithAlias(): ExpressionWithAliasContext {
		let _localctx: ExpressionWithAliasContext = new ExpressionWithAliasContext(this._ctx, this.state);
		this.enterRule(_localctx, 756, HiveSqlParser.RULE_expressionWithAlias);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4556;
			this.expression();
			this.state = 4558;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === HiveSqlParser.KW_AS) {
				{
				this.state = 4557;
				this.match(HiveSqlParser.KW_AS);
				}
			}

			this.state = 4561;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if ((((_la) & ~0x1F) === 0 && ((1 << _la) & ((1 << HiveSqlParser.KW_ABORT) | (1 << HiveSqlParser.KW_ACTIVATE) | (1 << HiveSqlParser.KW_ACTIVE) | (1 << HiveSqlParser.KW_ADD) | (1 << HiveSqlParser.KW_ADMIN) | (1 << HiveSqlParser.KW_AFTER) | (1 << HiveSqlParser.KW_ALLOC_FRACTION) | (1 << HiveSqlParser.KW_ANALYZE) | (1 << HiveSqlParser.KW_ARCHIVE) | (1 << HiveSqlParser.KW_ASC) | (1 << HiveSqlParser.KW_AST) | (1 << HiveSqlParser.KW_AT) | (1 << HiveSqlParser.KW_AUTOCOMMIT) | (1 << HiveSqlParser.KW_BATCH) | (1 << HiveSqlParser.KW_BEFORE) | (1 << HiveSqlParser.KW_BUCKET) | (1 << HiveSqlParser.KW_BUCKETS))) !== 0) || ((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & ((1 << (HiveSqlParser.KW_CACHE - 33)) | (1 << (HiveSqlParser.KW_CASCADE - 33)) | (1 << (HiveSqlParser.KW_CBO - 33)) | (1 << (HiveSqlParser.KW_CHANGE - 33)) | (1 << (HiveSqlParser.KW_CHECK - 33)) | (1 << (HiveSqlParser.KW_CLUSTER - 33)) | (1 << (HiveSqlParser.KW_CLUSTERED - 33)) | (1 << (HiveSqlParser.KW_CLUSTERSTATUS - 33)) | (1 << (HiveSqlParser.KW_COLLECTION - 33)) | (1 << (HiveSqlParser.KW_COLUMNS - 33)) | (1 << (HiveSqlParser.KW_COMMENT - 33)) | (1 << (HiveSqlParser.KW_COMPACT - 33)) | (1 << (HiveSqlParser.KW_COMPACTIONS - 33)) | (1 << (HiveSqlParser.KW_COMPUTE - 33)) | (1 << (HiveSqlParser.KW_CONCATENATE - 33)) | (1 << (HiveSqlParser.KW_CONTINUE - 33)) | (1 << (HiveSqlParser.KW_COST - 33)) | (1 << (HiveSqlParser.KW_CRON - 33)))) !== 0) || ((((_la - 66)) & ~0x1F) === 0 && ((1 << (_la - 66)) & ((1 << (HiveSqlParser.KW_DATA - 66)) | (1 << (HiveSqlParser.KW_DATABASES - 66)) | (1 << (HiveSqlParser.KW_DATETIME - 66)) | (1 << (HiveSqlParser.KW_DAY - 66)) | (1 << (HiveSqlParser.KW_DAYS - 66)) | (1 << (HiveSqlParser.KW_DAYOFWEEK - 66)) | (1 << (HiveSqlParser.KW_DBPROPERTIES - 66)) | (1 << (HiveSqlParser.KW_DCPROPERTIES - 66)) | (1 << (HiveSqlParser.KW_DEBUG - 66)) | (1 << (HiveSqlParser.KW_DEFAULT - 66)) | (1 << (HiveSqlParser.KW_DEFERRED - 66)) | (1 << (HiveSqlParser.KW_DEFINED - 66)) | (1 << (HiveSqlParser.KW_DELIMITED - 66)) | (1 << (HiveSqlParser.KW_DEPENDENCY - 66)) | (1 << (HiveSqlParser.KW_DESC - 66)) | (1 << (HiveSqlParser.KW_DETAIL - 66)) | (1 << (HiveSqlParser.KW_DIRECTORIES - 66)) | (1 << (HiveSqlParser.KW_DIRECTORY - 66)) | (1 << (HiveSqlParser.KW_DISABLE - 66)) | (1 << (HiveSqlParser.KW_DISABLED - 66)) | (1 << (HiveSqlParser.KW_DISTRIBUTE - 66)))) !== 0) || ((((_la - 98)) & ~0x1F) === 0 && ((1 << (_la - 98)) & ((1 << (HiveSqlParser.KW_DISTRIBUTED - 98)) | (1 << (HiveSqlParser.KW_DO - 98)) | (1 << (HiveSqlParser.KW_DUMP - 98)) | (1 << (HiveSqlParser.KW_ELEM_TYPE - 98)) | (1 << (HiveSqlParser.KW_ENABLE - 98)) | (1 << (HiveSqlParser.KW_ENABLED - 98)) | (1 << (HiveSqlParser.KW_ENFORCED - 98)) | (1 << (HiveSqlParser.KW_ESCAPED - 98)) | (1 << (HiveSqlParser.KW_EVERY - 98)) | (1 << (HiveSqlParser.KW_EXCLUSIVE - 98)) | (1 << (HiveSqlParser.KW_EXECUTE - 98)) | (1 << (HiveSqlParser.KW_EXECUTED - 98)) | (1 << (HiveSqlParser.KW_EXPIRE_SNAPSHOTS - 98)) | (1 << (HiveSqlParser.KW_EXPLAIN - 98)) | (1 << (HiveSqlParser.KW_EXPORT - 98)) | (1 << (HiveSqlParser.KW_EXPRESSION - 98)) | (1 << (HiveSqlParser.KW_FIELDS - 98)) | (1 << (HiveSqlParser.KW_FILE - 98)) | (1 << (HiveSqlParser.KW_FILEFORMAT - 98)))) !== 0) || ((((_la - 130)) & ~0x1F) === 0 && ((1 << (_la - 130)) & ((1 << (HiveSqlParser.KW_FIRST - 130)) | (1 << (HiveSqlParser.KW_FORMAT - 130)) | (1 << (HiveSqlParser.KW_FORMATTED - 130)) | (1 << (HiveSqlParser.KW_FUNCTIONS - 130)) | (1 << (HiveSqlParser.KW_HOLD_DDLTIME - 130)) | (1 << (HiveSqlParser.KW_HOUR - 130)) | (1 << (HiveSqlParser.KW_HOURS - 130)) | (1 << (HiveSqlParser.KW_IDXPROPERTIES - 130)) | (1 << (HiveSqlParser.KW_IGNORE - 130)) | (1 << (HiveSqlParser.KW_INDEX - 130)) | (1 << (HiveSqlParser.KW_INDEXES - 130)) | (1 << (HiveSqlParser.KW_INPATH - 130)) | (1 << (HiveSqlParser.KW_INPUTDRIVER - 130)) | (1 << (HiveSqlParser.KW_INPUTFORMAT - 130)))) !== 0) || ((((_la - 168)) & ~0x1F) === 0 && ((1 << (_la - 168)) & ((1 << (HiveSqlParser.KW_ISOLATION - 168)) | (1 << (HiveSqlParser.KW_ITEMS - 168)) | (1 << (HiveSqlParser.KW_JAR - 168)) | (1 << (HiveSqlParser.KW_JOINCOST - 168)) | (1 << (HiveSqlParser.KW_KEY - 168)) | (1 << (HiveSqlParser.KW_KEYS - 168)) | (1 << (HiveSqlParser.KW_KEY_TYPE - 168)) | (1 << (HiveSqlParser.KW_KILL - 168)) | (1 << (HiveSqlParser.KW_LAST - 168)) | (1 << (HiveSqlParser.KW_LEVEL - 168)) | (1 << (HiveSqlParser.KW_LIMIT - 168)) | (1 << (HiveSqlParser.KW_LINES - 168)) | (1 << (HiveSqlParser.KW_LOAD - 168)) | (1 << (HiveSqlParser.KW_LOCATION - 168)) | (1 << (HiveSqlParser.KW_LOCK - 168)) | (1 << (HiveSqlParser.KW_LOCKS - 168)) | (1 << (HiveSqlParser.KW_LOGICAL - 168)) | (1 << (HiveSqlParser.KW_LONG - 168)) | (1 << (HiveSqlParser.KW_MANAGED - 168)) | (1 << (HiveSqlParser.KW_MANAGEDLOCATION - 168)) | (1 << (HiveSqlParser.KW_MANAGEMENT - 168)) | (1 << (HiveSqlParser.KW_MAPJOIN - 168)) | (1 << (HiveSqlParser.KW_MAPPING - 168)))) !== 0) || ((((_la - 200)) & ~0x1F) === 0 && ((1 << (_la - 200)) & ((1 << (HiveSqlParser.KW_MATCHED - 200)) | (1 << (HiveSqlParser.KW_MATERIALIZED - 200)) | (1 << (HiveSqlParser.KW_METADATA - 200)) | (1 << (HiveSqlParser.KW_MINUTE - 200)) | (1 << (HiveSqlParser.KW_MINUTES - 200)) | (1 << (HiveSqlParser.KW_MONTH - 200)) | (1 << (HiveSqlParser.KW_MONTHS - 200)) | (1 << (HiveSqlParser.KW_MOVE - 200)) | (1 << (HiveSqlParser.KW_MSCK - 200)) | (1 << (HiveSqlParser.KW_NORELY - 200)) | (1 << (HiveSqlParser.KW_NOSCAN - 200)) | (1 << (HiveSqlParser.KW_NOVALIDATE - 200)) | (1 << (HiveSqlParser.KW_NO_DROP - 200)) | (1 << (HiveSqlParser.KW_NULLS - 200)) | (1 << (HiveSqlParser.KW_OFFLINE - 200)) | (1 << (HiveSqlParser.KW_OFFSET - 200)) | (1 << (HiveSqlParser.KW_OPERATOR - 200)) | (1 << (HiveSqlParser.KW_OPTION - 200)) | (1 << (HiveSqlParser.KW_OUTPUTDRIVER - 200)))) !== 0) || ((((_la - 232)) & ~0x1F) === 0 && ((1 << (_la - 232)) & ((1 << (HiveSqlParser.KW_OUTPUTFORMAT - 232)) | (1 << (HiveSqlParser.KW_OVERWRITE - 232)) | (1 << (HiveSqlParser.KW_OWNER - 232)) | (1 << (HiveSqlParser.KW_PARTITIONED - 232)) | (1 << (HiveSqlParser.KW_PARTITIONS - 232)) | (1 << (HiveSqlParser.KW_PATH - 232)) | (1 << (HiveSqlParser.KW_PLAN - 232)) | (1 << (HiveSqlParser.KW_PLANS - 232)) | (1 << (HiveSqlParser.KW_PLUS - 232)) | (1 << (HiveSqlParser.KW_POOL - 232)) | (1 << (HiveSqlParser.KW_PRINCIPALS - 232)) | (1 << (HiveSqlParser.KW_PROTECTION - 232)) | (1 << (HiveSqlParser.KW_PURGE - 232)) | (1 << (HiveSqlParser.KW_QUARTER - 232)) | (1 << (HiveSqlParser.KW_QUERY - 232)) | (1 << (HiveSqlParser.KW_QUERY_PARALLELISM - 232)) | (1 << (HiveSqlParser.KW_READ - 232)) | (1 << (HiveSqlParser.KW_READONLY - 232)))) !== 0) || ((((_la - 264)) & ~0x1F) === 0 && ((1 << (_la - 264)) & ((1 << (HiveSqlParser.KW_REBUILD - 264)) | (1 << (HiveSqlParser.KW_RECORDREADER - 264)) | (1 << (HiveSqlParser.KW_RECORDWRITER - 264)) | (1 << (HiveSqlParser.KW_RELOAD - 264)) | (1 << (HiveSqlParser.KW_RELY - 264)) | (1 << (HiveSqlParser.KW_REMOTE - 264)) | (1 << (HiveSqlParser.KW_RENAME - 264)) | (1 << (HiveSqlParser.KW_REOPTIMIZATION - 264)) | (1 << (HiveSqlParser.KW_REPAIR - 264)) | (1 << (HiveSqlParser.KW_REPL - 264)) | (1 << (HiveSqlParser.KW_REPLACE - 264)) | (1 << (HiveSqlParser.KW_REPLICATION - 264)) | (1 << (HiveSqlParser.KW_RESOURCE - 264)) | (1 << (HiveSqlParser.KW_RESPECT - 264)) | (1 << (HiveSqlParser.KW_RESTRICT - 264)) | (1 << (HiveSqlParser.KW_REWRITE - 264)) | (1 << (HiveSqlParser.KW_ROLE - 264)) | (1 << (HiveSqlParser.KW_ROLES - 264)) | (1 << (HiveSqlParser.KW_SCHEDULED - 264)) | (1 << (HiveSqlParser.KW_SCHEDULING_POLICY - 264)) | (1 << (HiveSqlParser.KW_SCHEMA - 264)) | (1 << (HiveSqlParser.KW_SCHEMAS - 264)))) !== 0) || ((((_la - 296)) & ~0x1F) === 0 && ((1 << (_la - 296)) & ((1 << (HiveSqlParser.KW_SECOND - 296)) | (1 << (HiveSqlParser.KW_SECONDS - 296)) | (1 << (HiveSqlParser.KW_SEMI - 296)) | (1 << (HiveSqlParser.KW_SERDE - 296)) | (1 << (HiveSqlParser.KW_SERDEPROPERTIES - 296)) | (1 << (HiveSqlParser.KW_SERVER - 296)) | (1 << (HiveSqlParser.KW_SETS - 296)) | (1 << (HiveSqlParser.KW_SET_CURRENT_SNAPSHOT - 296)) | (1 << (HiveSqlParser.KW_SHARED - 296)) | (1 << (HiveSqlParser.KW_SHOW - 296)) | (1 << (HiveSqlParser.KW_SHOW_DATABASE - 296)) | (1 << (HiveSqlParser.KW_SKEWED - 296)) | (1 << (HiveSqlParser.KW_SNAPSHOT - 296)) | (1 << (HiveSqlParser.KW_SORT - 296)) | (1 << (HiveSqlParser.KW_SORTED - 296)) | (1 << (HiveSqlParser.KW_SPEC - 296)) | (1 << (HiveSqlParser.KW_SSL - 296)) | (1 << (HiveSqlParser.KW_STATISTICS - 296)) | (1 << (HiveSqlParser.KW_STATUS - 296)) | (1 << (HiveSqlParser.KW_STORED - 296)) | (1 << (HiveSqlParser.KW_STREAMTABLE - 296)) | (1 << (HiveSqlParser.KW_STRING - 296)) | (1 << (HiveSqlParser.KW_STRUCT - 296)) | (1 << (HiveSqlParser.KW_SUMMARY - 296)) | (1 << (HiveSqlParser.KW_SYSTEM_TIME - 296)) | (1 << (HiveSqlParser.KW_SYSTEM_VERSION - 296)))) !== 0) || ((((_la - 329)) & ~0x1F) === 0 && ((1 << (_la - 329)) & ((1 << (HiveSqlParser.KW_TABLES - 329)) | (1 << (HiveSqlParser.KW_TBLPROPERTIES - 329)) | (1 << (HiveSqlParser.KW_TEMPORARY - 329)) | (1 << (HiveSqlParser.KW_TERMINATED - 329)) | (1 << (HiveSqlParser.KW_TIMESTAMPTZ - 329)) | (1 << (HiveSqlParser.KW_TINYINT - 329)) | (1 << (HiveSqlParser.KW_TOUCH - 329)) | (1 << (HiveSqlParser.KW_TRANSACTION - 329)) | (1 << (HiveSqlParser.KW_TRANSACTIONAL - 329)) | (1 << (HiveSqlParser.KW_TRANSACTIONS - 329)) | (1 << (HiveSqlParser.KW_TRIM - 329)) | (1 << (HiveSqlParser.KW_TYPE - 329)) | (1 << (HiveSqlParser.KW_UNARCHIVE - 329)) | (1 << (HiveSqlParser.KW_UNDO - 329)) | (1 << (HiveSqlParser.KW_UNIONTYPE - 329)) | (1 << (HiveSqlParser.KW_UNKNOWN - 329)) | (1 << (HiveSqlParser.KW_UNLOCK - 329)))) !== 0) || ((((_la - 361)) & ~0x1F) === 0 && ((1 << (_la - 361)) & ((1 << (HiveSqlParser.KW_UNMANAGED - 361)) | (1 << (HiveSqlParser.KW_UNSET - 361)) | (1 << (HiveSqlParser.KW_UNSIGNED - 361)) | (1 << (HiveSqlParser.KW_URI - 361)) | (1 << (HiveSqlParser.KW_URL - 361)) | (1 << (HiveSqlParser.KW_USE - 361)) | (1 << (HiveSqlParser.KW_UTC - 361)) | (1 << (HiveSqlParser.KW_UTCTIMESTAMP - 361)) | (1 << (HiveSqlParser.KW_VALIDATE - 361)) | (1 << (HiveSqlParser.KW_VALUE_TYPE - 361)) | (1 << (HiveSqlParser.KW_VECTORIZATION - 361)) | (1 << (HiveSqlParser.KW_VIEW - 361)) | (1 << (HiveSqlParser.KW_VIEWS - 361)) | (1 << (HiveSqlParser.KW_WAIT - 361)) | (1 << (HiveSqlParser.KW_WEEK - 361)) | (1 << (HiveSqlParser.KW_WEEKS - 361)) | (1 << (HiveSqlParser.KW_WHILE - 361)) | (1 << (HiveSqlParser.KW_WITHIN - 361)) | (1 << (HiveSqlParser.KW_WORK - 361)) | (1 << (HiveSqlParser.KW_WORKLOAD - 361)) | (1 << (HiveSqlParser.KW_WRITE - 361)) | (1 << (HiveSqlParser.KW_YEAR - 361)) | (1 << (HiveSqlParser.KW_YEARS - 361)))) !== 0) || _la === HiveSqlParser.KW_ZONE || _la === HiveSqlParser.Identifier) {
				{
				this.state = 4560;
				_localctx._alias = this.id_();
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public expressions(): ExpressionsContext {
		let _localctx: ExpressionsContext = new ExpressionsContext(this._ctx, this.state);
		this.enterRule(_localctx, 758, HiveSqlParser.RULE_expressions);
		try {
			this.state = 4565;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 551, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 4563;
				this.expressionsInParenthesis();
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 4564;
				this.expressionsNotInParenthesis();
				}
				break;
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public columnRefOrderInParenthesis(): ColumnRefOrderInParenthesisContext {
		let _localctx: ColumnRefOrderInParenthesisContext = new ColumnRefOrderInParenthesisContext(this._ctx, this.state);
		this.enterRule(_localctx, 760, HiveSqlParser.RULE_columnRefOrderInParenthesis);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4567;
			this.match(HiveSqlParser.LPAREN);
			this.state = 4568;
			this.columnRefOrder();
			this.state = 4573;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === HiveSqlParser.COMMA) {
				{
				{
				this.state = 4569;
				this.match(HiveSqlParser.COMMA);
				this.state = 4570;
				this.columnRefOrder();
				}
				}
				this.state = 4575;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			}
			this.state = 4576;
			this.match(HiveSqlParser.RPAREN);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public columnRefOrderNotInParenthesis(): ColumnRefOrderNotInParenthesisContext {
		let _localctx: ColumnRefOrderNotInParenthesisContext = new ColumnRefOrderNotInParenthesisContext(this._ctx, this.state);
		this.enterRule(_localctx, 762, HiveSqlParser.RULE_columnRefOrderNotInParenthesis);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4578;
			this.columnRefOrder();
			this.state = 4583;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === HiveSqlParser.COMMA) {
				{
				{
				this.state = 4579;
				this.match(HiveSqlParser.COMMA);
				this.state = 4580;
				this.columnRefOrder();
				}
				}
				this.state = 4585;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public orderByClause(): OrderByClauseContext {
		let _localctx: OrderByClauseContext = new OrderByClauseContext(this._ctx, this.state);
		this.enterRule(_localctx, 764, HiveSqlParser.RULE_orderByClause);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4586;
			this.match(HiveSqlParser.KW_ORDER);
			this.state = 4587;
			this.match(HiveSqlParser.KW_BY);
			this.state = 4588;
			this.columnRefOrder();
			this.state = 4593;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === HiveSqlParser.COMMA) {
				{
				{
				this.state = 4589;
				this.match(HiveSqlParser.COMMA);
				this.state = 4590;
				this.columnRefOrder();
				}
				}
				this.state = 4595;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public clusterByClause(): ClusterByClauseContext {
		let _localctx: ClusterByClauseContext = new ClusterByClauseContext(this._ctx, this.state);
		this.enterRule(_localctx, 766, HiveSqlParser.RULE_clusterByClause);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4596;
			this.match(HiveSqlParser.KW_CLUSTER);
			this.state = 4597;
			this.match(HiveSqlParser.KW_BY);
			this.state = 4598;
			this.expressions();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public partitionByClause(): PartitionByClauseContext {
		let _localctx: PartitionByClauseContext = new PartitionByClauseContext(this._ctx, this.state);
		this.enterRule(_localctx, 768, HiveSqlParser.RULE_partitionByClause);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4600;
			this.match(HiveSqlParser.KW_PARTITION);
			this.state = 4601;
			this.match(HiveSqlParser.KW_BY);
			this.state = 4602;
			this.expressions();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public distributeByClause(): DistributeByClauseContext {
		let _localctx: DistributeByClauseContext = new DistributeByClauseContext(this._ctx, this.state);
		this.enterRule(_localctx, 770, HiveSqlParser.RULE_distributeByClause);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4604;
			this.match(HiveSqlParser.KW_DISTRIBUTE);
			this.state = 4605;
			this.match(HiveSqlParser.KW_BY);
			this.state = 4606;
			this.expressions();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public sortByClause(): SortByClauseContext {
		let _localctx: SortByClauseContext = new SortByClauseContext(this._ctx, this.state);
		this.enterRule(_localctx, 772, HiveSqlParser.RULE_sortByClause);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4608;
			this.match(HiveSqlParser.KW_SORT);
			this.state = 4609;
			this.match(HiveSqlParser.KW_BY);
			this.state = 4612;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 555, this._ctx) ) {
			case 1:
				{
				this.state = 4610;
				this.columnRefOrderInParenthesis();
				}
				break;

			case 2:
				{
				this.state = 4611;
				this.columnRefOrderNotInParenthesis();
				}
				break;
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public trimFunction(): TrimFunctionContext {
		let _localctx: TrimFunctionContext = new TrimFunctionContext(this._ctx, this.state);
		this.enterRule(_localctx, 774, HiveSqlParser.RULE_trimFunction);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4614;
			this.match(HiveSqlParser.KW_TRIM);
			this.state = 4615;
			this.match(HiveSqlParser.LPAREN);
			this.state = 4619;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case HiveSqlParser.KW_LEADING:
				{
				this.state = 4616;
				_localctx._leading = this.match(HiveSqlParser.KW_LEADING);
				}
				break;
			case HiveSqlParser.KW_TRAILING:
				{
				this.state = 4617;
				_localctx._trailing = this.match(HiveSqlParser.KW_TRAILING);
				}
				break;
			case HiveSqlParser.KW_BOTH:
				{
				this.state = 4618;
				this.match(HiveSqlParser.KW_BOTH);
				}
				break;
			case HiveSqlParser.KW_ABORT:
			case HiveSqlParser.KW_ACTIVATE:
			case HiveSqlParser.KW_ACTIVE:
			case HiveSqlParser.KW_ADD:
			case HiveSqlParser.KW_ADMIN:
			case HiveSqlParser.KW_AFTER:
			case HiveSqlParser.KW_ALLOC_FRACTION:
			case HiveSqlParser.KW_ANALYZE:
			case HiveSqlParser.KW_AND:
			case HiveSqlParser.KW_ARCHIVE:
			case HiveSqlParser.KW_ARRAY:
			case HiveSqlParser.KW_ASC:
			case HiveSqlParser.KW_AST:
			case HiveSqlParser.KW_AT:
			case HiveSqlParser.KW_AUTOCOMMIT:
			case HiveSqlParser.KW_BATCH:
			case HiveSqlParser.KW_BEFORE:
			case HiveSqlParser.KW_BETWEEN:
			case HiveSqlParser.KW_BIGINT:
			case HiveSqlParser.KW_BINARY:
			case HiveSqlParser.KW_BOOLEAN:
			case HiveSqlParser.KW_BUCKET:
			case HiveSqlParser.KW_BUCKETS:
			case HiveSqlParser.KW_CACHE:
			case HiveSqlParser.KW_CASCADE:
			case HiveSqlParser.KW_CASE:
			case HiveSqlParser.KW_CAST:
			case HiveSqlParser.KW_CBO:
			case HiveSqlParser.KW_CHANGE:
			case HiveSqlParser.KW_CHECK:
			case HiveSqlParser.KW_CLUSTER:
			case HiveSqlParser.KW_CLUSTERED:
			case HiveSqlParser.KW_CLUSTERSTATUS:
			case HiveSqlParser.KW_COLLECTION:
			case HiveSqlParser.KW_COLUMNS:
			case HiveSqlParser.KW_COMMENT:
			case HiveSqlParser.KW_COMPACT:
			case HiveSqlParser.KW_COMPACTIONS:
			case HiveSqlParser.KW_COMPUTE:
			case HiveSqlParser.KW_CONCATENATE:
			case HiveSqlParser.KW_CONTINUE:
			case HiveSqlParser.KW_COST:
			case HiveSqlParser.KW_CRON:
			case HiveSqlParser.KW_CURRENT_DATE:
			case HiveSqlParser.KW_CURRENT_TIMESTAMP:
			case HiveSqlParser.KW_DATA:
			case HiveSqlParser.KW_DATABASES:
			case HiveSqlParser.KW_DATE:
			case HiveSqlParser.KW_DATETIME:
			case HiveSqlParser.KW_DAY:
			case HiveSqlParser.KW_DAYS:
			case HiveSqlParser.KW_DAYOFWEEK:
			case HiveSqlParser.KW_DBPROPERTIES:
			case HiveSqlParser.KW_DCPROPERTIES:
			case HiveSqlParser.KW_DEBUG:
			case HiveSqlParser.KW_DEFAULT:
			case HiveSqlParser.KW_DEFERRED:
			case HiveSqlParser.KW_DEFINED:
			case HiveSqlParser.KW_DELIMITED:
			case HiveSqlParser.KW_DEPENDENCY:
			case HiveSqlParser.KW_DESC:
			case HiveSqlParser.KW_DETAIL:
			case HiveSqlParser.KW_DIRECTORIES:
			case HiveSqlParser.KW_DIRECTORY:
			case HiveSqlParser.KW_DISABLE:
			case HiveSqlParser.KW_DISABLED:
			case HiveSqlParser.KW_DISTRIBUTE:
			case HiveSqlParser.KW_DISTRIBUTED:
			case HiveSqlParser.KW_DO:
			case HiveSqlParser.KW_DOUBLE:
			case HiveSqlParser.KW_DUMP:
			case HiveSqlParser.KW_ELEM_TYPE:
			case HiveSqlParser.KW_ENABLE:
			case HiveSqlParser.KW_ENABLED:
			case HiveSqlParser.KW_ENFORCED:
			case HiveSqlParser.KW_ESCAPED:
			case HiveSqlParser.KW_EVERY:
			case HiveSqlParser.KW_EXCLUSIVE:
			case HiveSqlParser.KW_EXECUTE:
			case HiveSqlParser.KW_EXECUTED:
			case HiveSqlParser.KW_EXISTS:
			case HiveSqlParser.KW_EXPIRE_SNAPSHOTS:
			case HiveSqlParser.KW_EXPLAIN:
			case HiveSqlParser.KW_EXPORT:
			case HiveSqlParser.KW_EXPRESSION:
			case HiveSqlParser.KW_EXTRACT:
			case HiveSqlParser.KW_FALSE:
			case HiveSqlParser.KW_FIELDS:
			case HiveSqlParser.KW_FILE:
			case HiveSqlParser.KW_FILEFORMAT:
			case HiveSqlParser.KW_FIRST:
			case HiveSqlParser.KW_FLOAT:
			case HiveSqlParser.KW_FLOOR:
			case HiveSqlParser.KW_FORMAT:
			case HiveSqlParser.KW_FORMATTED:
			case HiveSqlParser.KW_FROM:
			case HiveSqlParser.KW_FUNCTIONS:
			case HiveSqlParser.KW_GROUPING:
			case HiveSqlParser.KW_HOLD_DDLTIME:
			case HiveSqlParser.KW_HOUR:
			case HiveSqlParser.KW_HOURS:
			case HiveSqlParser.KW_IDXPROPERTIES:
			case HiveSqlParser.KW_IF:
			case HiveSqlParser.KW_IGNORE:
			case HiveSqlParser.KW_IN:
			case HiveSqlParser.KW_INDEX:
			case HiveSqlParser.KW_INDEXES:
			case HiveSqlParser.KW_INPATH:
			case HiveSqlParser.KW_INPUTDRIVER:
			case HiveSqlParser.KW_INPUTFORMAT:
			case HiveSqlParser.KW_INT:
			case HiveSqlParser.KW_INTEGER:
			case HiveSqlParser.KW_INTERVAL:
			case HiveSqlParser.KW_ISOLATION:
			case HiveSqlParser.KW_ITEMS:
			case HiveSqlParser.KW_JAR:
			case HiveSqlParser.KW_JOINCOST:
			case HiveSqlParser.KW_KEY:
			case HiveSqlParser.KW_KEYS:
			case HiveSqlParser.KW_KEY_TYPE:
			case HiveSqlParser.KW_KILL:
			case HiveSqlParser.KW_LAST:
			case HiveSqlParser.KW_LEVEL:
			case HiveSqlParser.KW_LIKE:
			case HiveSqlParser.KW_LIMIT:
			case HiveSqlParser.KW_LINES:
			case HiveSqlParser.KW_LOAD:
			case HiveSqlParser.KW_LOCATION:
			case HiveSqlParser.KW_LOCK:
			case HiveSqlParser.KW_LOCKS:
			case HiveSqlParser.KW_LOGICAL:
			case HiveSqlParser.KW_LONG:
			case HiveSqlParser.KW_MANAGED:
			case HiveSqlParser.KW_MANAGEDLOCATION:
			case HiveSqlParser.KW_MANAGEMENT:
			case HiveSqlParser.KW_MAP:
			case HiveSqlParser.KW_MAPJOIN:
			case HiveSqlParser.KW_MAPPING:
			case HiveSqlParser.KW_MATCHED:
			case HiveSqlParser.KW_MATERIALIZED:
			case HiveSqlParser.KW_METADATA:
			case HiveSqlParser.KW_MINUTE:
			case HiveSqlParser.KW_MINUTES:
			case HiveSqlParser.KW_MONTH:
			case HiveSqlParser.KW_MONTHS:
			case HiveSqlParser.KW_MOVE:
			case HiveSqlParser.KW_MSCK:
			case HiveSqlParser.KW_NORELY:
			case HiveSqlParser.KW_NOSCAN:
			case HiveSqlParser.KW_NOT:
			case HiveSqlParser.KW_NOVALIDATE:
			case HiveSqlParser.KW_NO_DROP:
			case HiveSqlParser.KW_NULL:
			case HiveSqlParser.KW_NULLS:
			case HiveSqlParser.KW_OFFLINE:
			case HiveSqlParser.KW_OFFSET:
			case HiveSqlParser.KW_OPERATOR:
			case HiveSqlParser.KW_OPTION:
			case HiveSqlParser.KW_OR:
			case HiveSqlParser.KW_OUTPUTDRIVER:
			case HiveSqlParser.KW_OUTPUTFORMAT:
			case HiveSqlParser.KW_OVERWRITE:
			case HiveSqlParser.KW_OWNER:
			case HiveSqlParser.KW_PARTITIONED:
			case HiveSqlParser.KW_PARTITIONS:
			case HiveSqlParser.KW_PATH:
			case HiveSqlParser.KW_PLAN:
			case HiveSqlParser.KW_PLANS:
			case HiveSqlParser.KW_PLUS:
			case HiveSqlParser.KW_POOL:
			case HiveSqlParser.KW_PRINCIPALS:
			case HiveSqlParser.KW_PROTECTION:
			case HiveSqlParser.KW_PURGE:
			case HiveSqlParser.KW_QUARTER:
			case HiveSqlParser.KW_QUERY:
			case HiveSqlParser.KW_QUERY_PARALLELISM:
			case HiveSqlParser.KW_READ:
			case HiveSqlParser.KW_READONLY:
			case HiveSqlParser.KW_REAL:
			case HiveSqlParser.KW_REBUILD:
			case HiveSqlParser.KW_RECORDREADER:
			case HiveSqlParser.KW_RECORDWRITER:
			case HiveSqlParser.KW_REGEXP:
			case HiveSqlParser.KW_RELOAD:
			case HiveSqlParser.KW_RELY:
			case HiveSqlParser.KW_REMOTE:
			case HiveSqlParser.KW_RENAME:
			case HiveSqlParser.KW_REOPTIMIZATION:
			case HiveSqlParser.KW_REPAIR:
			case HiveSqlParser.KW_REPL:
			case HiveSqlParser.KW_REPLACE:
			case HiveSqlParser.KW_REPLICATION:
			case HiveSqlParser.KW_RESOURCE:
			case HiveSqlParser.KW_RESPECT:
			case HiveSqlParser.KW_RESTRICT:
			case HiveSqlParser.KW_REWRITE:
			case HiveSqlParser.KW_RLIKE:
			case HiveSqlParser.KW_ROLE:
			case HiveSqlParser.KW_ROLES:
			case HiveSqlParser.KW_SCHEDULED:
			case HiveSqlParser.KW_SCHEDULING_POLICY:
			case HiveSqlParser.KW_SCHEMA:
			case HiveSqlParser.KW_SCHEMAS:
			case HiveSqlParser.KW_SECOND:
			case HiveSqlParser.KW_SECONDS:
			case HiveSqlParser.KW_SEMI:
			case HiveSqlParser.KW_SERDE:
			case HiveSqlParser.KW_SERDEPROPERTIES:
			case HiveSqlParser.KW_SERVER:
			case HiveSqlParser.KW_SETS:
			case HiveSqlParser.KW_SET_CURRENT_SNAPSHOT:
			case HiveSqlParser.KW_SHARED:
			case HiveSqlParser.KW_SHOW:
			case HiveSqlParser.KW_SHOW_DATABASE:
			case HiveSqlParser.KW_SKEWED:
			case HiveSqlParser.KW_SMALLINT:
			case HiveSqlParser.KW_SNAPSHOT:
			case HiveSqlParser.KW_SORT:
			case HiveSqlParser.KW_SORTED:
			case HiveSqlParser.KW_SPEC:
			case HiveSqlParser.KW_SSL:
			case HiveSqlParser.KW_STATISTICS:
			case HiveSqlParser.KW_STATUS:
			case HiveSqlParser.KW_STORED:
			case HiveSqlParser.KW_STREAMTABLE:
			case HiveSqlParser.KW_STRING:
			case HiveSqlParser.KW_STRUCT:
			case HiveSqlParser.KW_SUMMARY:
			case HiveSqlParser.KW_SYSTEM_TIME:
			case HiveSqlParser.KW_SYSTEM_VERSION:
			case HiveSqlParser.KW_TABLES:
			case HiveSqlParser.KW_TBLPROPERTIES:
			case HiveSqlParser.KW_TEMPORARY:
			case HiveSqlParser.KW_TERMINATED:
			case HiveSqlParser.KW_TIMESTAMP:
			case HiveSqlParser.KW_TIMESTAMPLOCALTZ:
			case HiveSqlParser.KW_TIMESTAMPTZ:
			case HiveSqlParser.KW_TINYINT:
			case HiveSqlParser.KW_TOUCH:
			case HiveSqlParser.KW_TRANSACTION:
			case HiveSqlParser.KW_TRANSACTIONAL:
			case HiveSqlParser.KW_TRANSACTIONS:
			case HiveSqlParser.KW_TRIM:
			case HiveSqlParser.KW_TRUE:
			case HiveSqlParser.KW_TYPE:
			case HiveSqlParser.KW_UNARCHIVE:
			case HiveSqlParser.KW_UNDO:
			case HiveSqlParser.KW_UNIONTYPE:
			case HiveSqlParser.KW_UNKNOWN:
			case HiveSqlParser.KW_UNLOCK:
			case HiveSqlParser.KW_UNMANAGED:
			case HiveSqlParser.KW_UNSET:
			case HiveSqlParser.KW_UNSIGNED:
			case HiveSqlParser.KW_URI:
			case HiveSqlParser.KW_URL:
			case HiveSqlParser.KW_USE:
			case HiveSqlParser.KW_UTC:
			case HiveSqlParser.KW_UTCTIMESTAMP:
			case HiveSqlParser.KW_VALIDATE:
			case HiveSqlParser.KW_VALUE_TYPE:
			case HiveSqlParser.KW_VECTORIZATION:
			case HiveSqlParser.KW_VIEW:
			case HiveSqlParser.KW_VIEWS:
			case HiveSqlParser.KW_WAIT:
			case HiveSqlParser.KW_WEEK:
			case HiveSqlParser.KW_WEEKS:
			case HiveSqlParser.KW_WHEN:
			case HiveSqlParser.KW_WHILE:
			case HiveSqlParser.KW_WITHIN:
			case HiveSqlParser.KW_WORK:
			case HiveSqlParser.KW_WORKLOAD:
			case HiveSqlParser.KW_WRITE:
			case HiveSqlParser.KW_YEAR:
			case HiveSqlParser.KW_YEARS:
			case HiveSqlParser.KW_ZONE:
			case HiveSqlParser.LPAREN:
			case HiveSqlParser.EQUAL:
			case HiveSqlParser.EQUAL_NS:
			case HiveSqlParser.NOTEQUAL:
			case HiveSqlParser.LESSTHANOREQUALTO:
			case HiveSqlParser.LESSTHAN:
			case HiveSqlParser.GREATERTHANOREQUALTO:
			case HiveSqlParser.GREATERTHAN:
			case HiveSqlParser.DIVIDE:
			case HiveSqlParser.PLUS:
			case HiveSqlParser.MINUS:
			case HiveSqlParser.STAR:
			case HiveSqlParser.MOD:
			case HiveSqlParser.DIV:
			case HiveSqlParser.BITWISENOT:
			case HiveSqlParser.AMPERSAND:
			case HiveSqlParser.TILDE:
			case HiveSqlParser.BITWISEOR:
			case HiveSqlParser.BITWISEXOR:
			case HiveSqlParser.QUESTION:
			case HiveSqlParser.StringLiteral:
			case HiveSqlParser.IntegralLiteral:
			case HiveSqlParser.NumberLiteral:
			case HiveSqlParser.Number:
			case HiveSqlParser.Identifier:
			case HiveSqlParser.CharSetName:
				break;
			default:
				break;
			}
			this.state = 4622;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if ((((_la) & ~0x1F) === 0 && ((1 << _la) & ((1 << HiveSqlParser.KW_ABORT) | (1 << HiveSqlParser.KW_ACTIVATE) | (1 << HiveSqlParser.KW_ACTIVE) | (1 << HiveSqlParser.KW_ADD) | (1 << HiveSqlParser.KW_ADMIN) | (1 << HiveSqlParser.KW_AFTER) | (1 << HiveSqlParser.KW_ALLOC_FRACTION) | (1 << HiveSqlParser.KW_ANALYZE) | (1 << HiveSqlParser.KW_AND) | (1 << HiveSqlParser.KW_ARCHIVE) | (1 << HiveSqlParser.KW_ARRAY) | (1 << HiveSqlParser.KW_ASC) | (1 << HiveSqlParser.KW_AST) | (1 << HiveSqlParser.KW_AT) | (1 << HiveSqlParser.KW_AUTOCOMMIT) | (1 << HiveSqlParser.KW_BATCH) | (1 << HiveSqlParser.KW_BEFORE) | (1 << HiveSqlParser.KW_BETWEEN) | (1 << HiveSqlParser.KW_BIGINT) | (1 << HiveSqlParser.KW_BINARY) | (1 << HiveSqlParser.KW_BOOLEAN) | (1 << HiveSqlParser.KW_BUCKET) | (1 << HiveSqlParser.KW_BUCKETS))) !== 0) || ((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & ((1 << (HiveSqlParser.KW_CACHE - 33)) | (1 << (HiveSqlParser.KW_CASCADE - 33)) | (1 << (HiveSqlParser.KW_CASE - 33)) | (1 << (HiveSqlParser.KW_CAST - 33)) | (1 << (HiveSqlParser.KW_CBO - 33)) | (1 << (HiveSqlParser.KW_CHANGE - 33)) | (1 << (HiveSqlParser.KW_CHECK - 33)) | (1 << (HiveSqlParser.KW_CLUSTER - 33)) | (1 << (HiveSqlParser.KW_CLUSTERED - 33)) | (1 << (HiveSqlParser.KW_CLUSTERSTATUS - 33)) | (1 << (HiveSqlParser.KW_COLLECTION - 33)) | (1 << (HiveSqlParser.KW_COLUMNS - 33)) | (1 << (HiveSqlParser.KW_COMMENT - 33)) | (1 << (HiveSqlParser.KW_COMPACT - 33)) | (1 << (HiveSqlParser.KW_COMPACTIONS - 33)) | (1 << (HiveSqlParser.KW_COMPUTE - 33)) | (1 << (HiveSqlParser.KW_CONCATENATE - 33)) | (1 << (HiveSqlParser.KW_CONTINUE - 33)) | (1 << (HiveSqlParser.KW_COST - 33)) | (1 << (HiveSqlParser.KW_CRON - 33)) | (1 << (HiveSqlParser.KW_CURRENT_DATE - 33)) | (1 << (HiveSqlParser.KW_CURRENT_TIMESTAMP - 33)))) !== 0) || ((((_la - 66)) & ~0x1F) === 0 && ((1 << (_la - 66)) & ((1 << (HiveSqlParser.KW_DATA - 66)) | (1 << (HiveSqlParser.KW_DATABASES - 66)) | (1 << (HiveSqlParser.KW_DATE - 66)) | (1 << (HiveSqlParser.KW_DATETIME - 66)) | (1 << (HiveSqlParser.KW_DAY - 66)) | (1 << (HiveSqlParser.KW_DAYS - 66)) | (1 << (HiveSqlParser.KW_DAYOFWEEK - 66)) | (1 << (HiveSqlParser.KW_DBPROPERTIES - 66)) | (1 << (HiveSqlParser.KW_DCPROPERTIES - 66)) | (1 << (HiveSqlParser.KW_DEBUG - 66)) | (1 << (HiveSqlParser.KW_DEFAULT - 66)) | (1 << (HiveSqlParser.KW_DEFERRED - 66)) | (1 << (HiveSqlParser.KW_DEFINED - 66)) | (1 << (HiveSqlParser.KW_DELIMITED - 66)) | (1 << (HiveSqlParser.KW_DEPENDENCY - 66)) | (1 << (HiveSqlParser.KW_DESC - 66)) | (1 << (HiveSqlParser.KW_DETAIL - 66)) | (1 << (HiveSqlParser.KW_DIRECTORIES - 66)) | (1 << (HiveSqlParser.KW_DIRECTORY - 66)) | (1 << (HiveSqlParser.KW_DISABLE - 66)) | (1 << (HiveSqlParser.KW_DISABLED - 66)) | (1 << (HiveSqlParser.KW_DISTRIBUTE - 66)))) !== 0) || ((((_la - 98)) & ~0x1F) === 0 && ((1 << (_la - 98)) & ((1 << (HiveSqlParser.KW_DISTRIBUTED - 98)) | (1 << (HiveSqlParser.KW_DO - 98)) | (1 << (HiveSqlParser.KW_DOUBLE - 98)) | (1 << (HiveSqlParser.KW_DUMP - 98)) | (1 << (HiveSqlParser.KW_ELEM_TYPE - 98)) | (1 << (HiveSqlParser.KW_ENABLE - 98)) | (1 << (HiveSqlParser.KW_ENABLED - 98)) | (1 << (HiveSqlParser.KW_ENFORCED - 98)) | (1 << (HiveSqlParser.KW_ESCAPED - 98)) | (1 << (HiveSqlParser.KW_EVERY - 98)) | (1 << (HiveSqlParser.KW_EXCLUSIVE - 98)) | (1 << (HiveSqlParser.KW_EXECUTE - 98)) | (1 << (HiveSqlParser.KW_EXECUTED - 98)) | (1 << (HiveSqlParser.KW_EXISTS - 98)) | (1 << (HiveSqlParser.KW_EXPIRE_SNAPSHOTS - 98)) | (1 << (HiveSqlParser.KW_EXPLAIN - 98)) | (1 << (HiveSqlParser.KW_EXPORT - 98)) | (1 << (HiveSqlParser.KW_EXPRESSION - 98)) | (1 << (HiveSqlParser.KW_EXTRACT - 98)) | (1 << (HiveSqlParser.KW_FALSE - 98)) | (1 << (HiveSqlParser.KW_FIELDS - 98)) | (1 << (HiveSqlParser.KW_FILE - 98)) | (1 << (HiveSqlParser.KW_FILEFORMAT - 98)))) !== 0) || ((((_la - 130)) & ~0x1F) === 0 && ((1 << (_la - 130)) & ((1 << (HiveSqlParser.KW_FIRST - 130)) | (1 << (HiveSqlParser.KW_FLOAT - 130)) | (1 << (HiveSqlParser.KW_FLOOR - 130)) | (1 << (HiveSqlParser.KW_FORMAT - 130)) | (1 << (HiveSqlParser.KW_FORMATTED - 130)) | (1 << (HiveSqlParser.KW_FUNCTIONS - 130)) | (1 << (HiveSqlParser.KW_GROUPING - 130)) | (1 << (HiveSqlParser.KW_HOLD_DDLTIME - 130)) | (1 << (HiveSqlParser.KW_HOUR - 130)) | (1 << (HiveSqlParser.KW_HOURS - 130)) | (1 << (HiveSqlParser.KW_IDXPROPERTIES - 130)) | (1 << (HiveSqlParser.KW_IF - 130)) | (1 << (HiveSqlParser.KW_IGNORE - 130)) | (1 << (HiveSqlParser.KW_IN - 130)) | (1 << (HiveSqlParser.KW_INDEX - 130)) | (1 << (HiveSqlParser.KW_INDEXES - 130)) | (1 << (HiveSqlParser.KW_INPATH - 130)) | (1 << (HiveSqlParser.KW_INPUTDRIVER - 130)) | (1 << (HiveSqlParser.KW_INPUTFORMAT - 130)))) !== 0) || ((((_la - 162)) & ~0x1F) === 0 && ((1 << (_la - 162)) & ((1 << (HiveSqlParser.KW_INT - 162)) | (1 << (HiveSqlParser.KW_INTEGER - 162)) | (1 << (HiveSqlParser.KW_INTERVAL - 162)) | (1 << (HiveSqlParser.KW_ISOLATION - 162)) | (1 << (HiveSqlParser.KW_ITEMS - 162)) | (1 << (HiveSqlParser.KW_JAR - 162)) | (1 << (HiveSqlParser.KW_JOINCOST - 162)) | (1 << (HiveSqlParser.KW_KEY - 162)) | (1 << (HiveSqlParser.KW_KEYS - 162)) | (1 << (HiveSqlParser.KW_KEY_TYPE - 162)) | (1 << (HiveSqlParser.KW_KILL - 162)) | (1 << (HiveSqlParser.KW_LAST - 162)) | (1 << (HiveSqlParser.KW_LEVEL - 162)) | (1 << (HiveSqlParser.KW_LIKE - 162)) | (1 << (HiveSqlParser.KW_LIMIT - 162)) | (1 << (HiveSqlParser.KW_LINES - 162)) | (1 << (HiveSqlParser.KW_LOAD - 162)) | (1 << (HiveSqlParser.KW_LOCATION - 162)) | (1 << (HiveSqlParser.KW_LOCK - 162)) | (1 << (HiveSqlParser.KW_LOCKS - 162)) | (1 << (HiveSqlParser.KW_LOGICAL - 162)) | (1 << (HiveSqlParser.KW_LONG - 162)))) !== 0) || ((((_la - 194)) & ~0x1F) === 0 && ((1 << (_la - 194)) & ((1 << (HiveSqlParser.KW_MANAGED - 194)) | (1 << (HiveSqlParser.KW_MANAGEDLOCATION - 194)) | (1 << (HiveSqlParser.KW_MANAGEMENT - 194)) | (1 << (HiveSqlParser.KW_MAP - 194)) | (1 << (HiveSqlParser.KW_MAPJOIN - 194)) | (1 << (HiveSqlParser.KW_MAPPING - 194)) | (1 << (HiveSqlParser.KW_MATCHED - 194)) | (1 << (HiveSqlParser.KW_MATERIALIZED - 194)) | (1 << (HiveSqlParser.KW_METADATA - 194)) | (1 << (HiveSqlParser.KW_MINUTE - 194)) | (1 << (HiveSqlParser.KW_MINUTES - 194)) | (1 << (HiveSqlParser.KW_MONTH - 194)) | (1 << (HiveSqlParser.KW_MONTHS - 194)) | (1 << (HiveSqlParser.KW_MOVE - 194)) | (1 << (HiveSqlParser.KW_MSCK - 194)) | (1 << (HiveSqlParser.KW_NORELY - 194)) | (1 << (HiveSqlParser.KW_NOSCAN - 194)) | (1 << (HiveSqlParser.KW_NOT - 194)) | (1 << (HiveSqlParser.KW_NOVALIDATE - 194)) | (1 << (HiveSqlParser.KW_NO_DROP - 194)) | (1 << (HiveSqlParser.KW_NULL - 194)) | (1 << (HiveSqlParser.KW_NULLS - 194)) | (1 << (HiveSqlParser.KW_OFFLINE - 194)) | (1 << (HiveSqlParser.KW_OFFSET - 194)) | (1 << (HiveSqlParser.KW_OPERATOR - 194)))) !== 0) || ((((_la - 226)) & ~0x1F) === 0 && ((1 << (_la - 226)) & ((1 << (HiveSqlParser.KW_OPTION - 226)) | (1 << (HiveSqlParser.KW_OR - 226)) | (1 << (HiveSqlParser.KW_OUTPUTDRIVER - 226)) | (1 << (HiveSqlParser.KW_OUTPUTFORMAT - 226)) | (1 << (HiveSqlParser.KW_OVERWRITE - 226)) | (1 << (HiveSqlParser.KW_OWNER - 226)) | (1 << (HiveSqlParser.KW_PARTITIONED - 226)) | (1 << (HiveSqlParser.KW_PARTITIONS - 226)) | (1 << (HiveSqlParser.KW_PATH - 226)) | (1 << (HiveSqlParser.KW_PLAN - 226)) | (1 << (HiveSqlParser.KW_PLANS - 226)) | (1 << (HiveSqlParser.KW_PLUS - 226)) | (1 << (HiveSqlParser.KW_POOL - 226)) | (1 << (HiveSqlParser.KW_PRINCIPALS - 226)) | (1 << (HiveSqlParser.KW_PROTECTION - 226)) | (1 << (HiveSqlParser.KW_PURGE - 226)) | (1 << (HiveSqlParser.KW_QUARTER - 226)) | (1 << (HiveSqlParser.KW_QUERY - 226)))) !== 0) || ((((_la - 258)) & ~0x1F) === 0 && ((1 << (_la - 258)) & ((1 << (HiveSqlParser.KW_QUERY_PARALLELISM - 258)) | (1 << (HiveSqlParser.KW_READ - 258)) | (1 << (HiveSqlParser.KW_READONLY - 258)) | (1 << (HiveSqlParser.KW_REAL - 258)) | (1 << (HiveSqlParser.KW_REBUILD - 258)) | (1 << (HiveSqlParser.KW_RECORDREADER - 258)) | (1 << (HiveSqlParser.KW_RECORDWRITER - 258)) | (1 << (HiveSqlParser.KW_REGEXP - 258)) | (1 << (HiveSqlParser.KW_RELOAD - 258)) | (1 << (HiveSqlParser.KW_RELY - 258)) | (1 << (HiveSqlParser.KW_REMOTE - 258)) | (1 << (HiveSqlParser.KW_RENAME - 258)) | (1 << (HiveSqlParser.KW_REOPTIMIZATION - 258)) | (1 << (HiveSqlParser.KW_REPAIR - 258)) | (1 << (HiveSqlParser.KW_REPL - 258)) | (1 << (HiveSqlParser.KW_REPLACE - 258)) | (1 << (HiveSqlParser.KW_REPLICATION - 258)) | (1 << (HiveSqlParser.KW_RESOURCE - 258)) | (1 << (HiveSqlParser.KW_RESPECT - 258)) | (1 << (HiveSqlParser.KW_RESTRICT - 258)) | (1 << (HiveSqlParser.KW_REWRITE - 258)) | (1 << (HiveSqlParser.KW_RLIKE - 258)) | (1 << (HiveSqlParser.KW_ROLE - 258)) | (1 << (HiveSqlParser.KW_ROLES - 258)))) !== 0) || ((((_la - 292)) & ~0x1F) === 0 && ((1 << (_la - 292)) & ((1 << (HiveSqlParser.KW_SCHEDULED - 292)) | (1 << (HiveSqlParser.KW_SCHEDULING_POLICY - 292)) | (1 << (HiveSqlParser.KW_SCHEMA - 292)) | (1 << (HiveSqlParser.KW_SCHEMAS - 292)) | (1 << (HiveSqlParser.KW_SECOND - 292)) | (1 << (HiveSqlParser.KW_SECONDS - 292)) | (1 << (HiveSqlParser.KW_SEMI - 292)) | (1 << (HiveSqlParser.KW_SERDE - 292)) | (1 << (HiveSqlParser.KW_SERDEPROPERTIES - 292)) | (1 << (HiveSqlParser.KW_SERVER - 292)) | (1 << (HiveSqlParser.KW_SETS - 292)) | (1 << (HiveSqlParser.KW_SET_CURRENT_SNAPSHOT - 292)) | (1 << (HiveSqlParser.KW_SHARED - 292)) | (1 << (HiveSqlParser.KW_SHOW - 292)) | (1 << (HiveSqlParser.KW_SHOW_DATABASE - 292)) | (1 << (HiveSqlParser.KW_SKEWED - 292)) | (1 << (HiveSqlParser.KW_SMALLINT - 292)) | (1 << (HiveSqlParser.KW_SNAPSHOT - 292)) | (1 << (HiveSqlParser.KW_SORT - 292)) | (1 << (HiveSqlParser.KW_SORTED - 292)) | (1 << (HiveSqlParser.KW_SPEC - 292)) | (1 << (HiveSqlParser.KW_SSL - 292)) | (1 << (HiveSqlParser.KW_STATISTICS - 292)) | (1 << (HiveSqlParser.KW_STATUS - 292)) | (1 << (HiveSqlParser.KW_STORED - 292)) | (1 << (HiveSqlParser.KW_STREAMTABLE - 292)) | (1 << (HiveSqlParser.KW_STRING - 292)) | (1 << (HiveSqlParser.KW_STRUCT - 292)))) !== 0) || ((((_la - 324)) & ~0x1F) === 0 && ((1 << (_la - 324)) & ((1 << (HiveSqlParser.KW_SUMMARY - 324)) | (1 << (HiveSqlParser.KW_SYSTEM_TIME - 324)) | (1 << (HiveSqlParser.KW_SYSTEM_VERSION - 324)) | (1 << (HiveSqlParser.KW_TABLES - 324)) | (1 << (HiveSqlParser.KW_TBLPROPERTIES - 324)) | (1 << (HiveSqlParser.KW_TEMPORARY - 324)) | (1 << (HiveSqlParser.KW_TERMINATED - 324)) | (1 << (HiveSqlParser.KW_TIMESTAMP - 324)) | (1 << (HiveSqlParser.KW_TIMESTAMPLOCALTZ - 324)) | (1 << (HiveSqlParser.KW_TIMESTAMPTZ - 324)) | (1 << (HiveSqlParser.KW_TINYINT - 324)) | (1 << (HiveSqlParser.KW_TOUCH - 324)) | (1 << (HiveSqlParser.KW_TRANSACTION - 324)) | (1 << (HiveSqlParser.KW_TRANSACTIONAL - 324)) | (1 << (HiveSqlParser.KW_TRANSACTIONS - 324)) | (1 << (HiveSqlParser.KW_TRIM - 324)) | (1 << (HiveSqlParser.KW_TRUE - 324)) | (1 << (HiveSqlParser.KW_TYPE - 324)) | (1 << (HiveSqlParser.KW_UNARCHIVE - 324)) | (1 << (HiveSqlParser.KW_UNDO - 324)))) !== 0) || ((((_la - 356)) & ~0x1F) === 0 && ((1 << (_la - 356)) & ((1 << (HiveSqlParser.KW_UNIONTYPE - 356)) | (1 << (HiveSqlParser.KW_UNKNOWN - 356)) | (1 << (HiveSqlParser.KW_UNLOCK - 356)) | (1 << (HiveSqlParser.KW_UNMANAGED - 356)) | (1 << (HiveSqlParser.KW_UNSET - 356)) | (1 << (HiveSqlParser.KW_UNSIGNED - 356)) | (1 << (HiveSqlParser.KW_URI - 356)) | (1 << (HiveSqlParser.KW_URL - 356)) | (1 << (HiveSqlParser.KW_USE - 356)) | (1 << (HiveSqlParser.KW_UTC - 356)) | (1 << (HiveSqlParser.KW_UTCTIMESTAMP - 356)) | (1 << (HiveSqlParser.KW_VALIDATE - 356)) | (1 << (HiveSqlParser.KW_VALUE_TYPE - 356)) | (1 << (HiveSqlParser.KW_VECTORIZATION - 356)) | (1 << (HiveSqlParser.KW_VIEW - 356)) | (1 << (HiveSqlParser.KW_VIEWS - 356)) | (1 << (HiveSqlParser.KW_WAIT - 356)) | (1 << (HiveSqlParser.KW_WEEK - 356)) | (1 << (HiveSqlParser.KW_WEEKS - 356)) | (1 << (HiveSqlParser.KW_WHEN - 356)) | (1 << (HiveSqlParser.KW_WHILE - 356)) | (1 << (HiveSqlParser.KW_WITHIN - 356)))) !== 0) || ((((_la - 388)) & ~0x1F) === 0 && ((1 << (_la - 388)) & ((1 << (HiveSqlParser.KW_WORK - 388)) | (1 << (HiveSqlParser.KW_WORKLOAD - 388)) | (1 << (HiveSqlParser.KW_WRITE - 388)) | (1 << (HiveSqlParser.KW_YEAR - 388)) | (1 << (HiveSqlParser.KW_YEARS - 388)) | (1 << (HiveSqlParser.KW_ZONE - 388)) | (1 << (HiveSqlParser.LPAREN - 388)) | (1 << (HiveSqlParser.EQUAL - 388)) | (1 << (HiveSqlParser.EQUAL_NS - 388)) | (1 << (HiveSqlParser.NOTEQUAL - 388)) | (1 << (HiveSqlParser.LESSTHANOREQUALTO - 388)) | (1 << (HiveSqlParser.LESSTHAN - 388)) | (1 << (HiveSqlParser.GREATERTHANOREQUALTO - 388)) | (1 << (HiveSqlParser.GREATERTHAN - 388)) | (1 << (HiveSqlParser.DIVIDE - 388)) | (1 << (HiveSqlParser.PLUS - 388)) | (1 << (HiveSqlParser.MINUS - 388)) | (1 << (HiveSqlParser.STAR - 388)) | (1 << (HiveSqlParser.MOD - 388)) | (1 << (HiveSqlParser.DIV - 388)) | (1 << (HiveSqlParser.BITWISENOT - 388)) | (1 << (HiveSqlParser.AMPERSAND - 388)) | (1 << (HiveSqlParser.TILDE - 388)))) !== 0) || ((((_la - 420)) & ~0x1F) === 0 && ((1 << (_la - 420)) & ((1 << (HiveSqlParser.BITWISEOR - 420)) | (1 << (HiveSqlParser.BITWISEXOR - 420)) | (1 << (HiveSqlParser.QUESTION - 420)) | (1 << (HiveSqlParser.StringLiteral - 420)) | (1 << (HiveSqlParser.IntegralLiteral - 420)) | (1 << (HiveSqlParser.NumberLiteral - 420)) | (1 << (HiveSqlParser.Number - 420)) | (1 << (HiveSqlParser.Identifier - 420)) | (1 << (HiveSqlParser.CharSetName - 420)))) !== 0)) {
				{
				this.state = 4621;
				_localctx._trim_characters = this.selectExpression();
				}
			}

			this.state = 4624;
			this.match(HiveSqlParser.KW_FROM);
			this.state = 4625;
			_localctx._str = this.selectExpression();
			this.state = 4626;
			this.match(HiveSqlParser.RPAREN);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public function_(): Function_Context {
		let _localctx: Function_Context = new Function_Context(this._ctx, this.state);
		this.enterRule(_localctx, 776, HiveSqlParser.RULE_function_);
		let _la: number;
		try {
			this.state = 4668;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 564, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 4628;
				this.trimFunction();
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 4629;
				this.functionNameForInvoke();
				this.state = 4630;
				this.match(HiveSqlParser.LPAREN);
				this.state = 4645;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 561, this._ctx) ) {
				case 1:
					{
					this.state = 4631;
					_localctx._star = this.match(HiveSqlParser.STAR);
					}
					break;

				case 2:
					{
					this.state = 4633;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
					if (_la === HiveSqlParser.KW_ALL || _la === HiveSqlParser.KW_DISTINCT) {
						{
						this.state = 4632;
						_localctx._dist = this.all_distinct();
						}
					}

					this.state = 4643;
					this._errHandler.sync(this);
					switch ( this.interpreter.adaptivePredict(this._input, 560, this._ctx) ) {
					case 1:
						{
						this.state = 4635;
						this.selectExpression();
						this.state = 4640;
						this._errHandler.sync(this);
						_la = this._input.LA(1);
						while (_la === HiveSqlParser.COMMA) {
							{
							{
							this.state = 4636;
							this.match(HiveSqlParser.COMMA);
							this.state = 4637;
							this.selectExpression();
							}
							}
							this.state = 4642;
							this._errHandler.sync(this);
							_la = this._input.LA(1);
						}
						}
						break;
					}
					}
					break;
				}
				this.state = 4666;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 563, this._ctx) ) {
				case 1:
					{
					this.state = 4647;
					this.match(HiveSqlParser.RPAREN);
					this.state = 4648;
					_localctx._within = this.match(HiveSqlParser.KW_WITHIN);
					this.state = 4649;
					this.match(HiveSqlParser.KW_GROUP);
					this.state = 4650;
					this.match(HiveSqlParser.LPAREN);
					this.state = 4651;
					_localctx._ordBy = this.orderByClause();
					this.state = 4652;
					this.match(HiveSqlParser.RPAREN);
					}
					break;

				case 2:
					{
					this.state = 4654;
					this.match(HiveSqlParser.RPAREN);
					this.state = 4656;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
					if (_la === HiveSqlParser.KW_IGNORE || _la === HiveSqlParser.KW_RESPECT) {
						{
						this.state = 4655;
						_localctx._nt = this.null_treatment();
						}
					}

					this.state = 4658;
					this.match(HiveSqlParser.KW_OVER);
					this.state = 4659;
					_localctx._ws = this.window_specification();
					}
					break;

				case 3:
					{
					this.state = 4660;
					_localctx._nt = this.null_treatment();
					this.state = 4661;
					this.match(HiveSqlParser.RPAREN);
					this.state = 4662;
					this.match(HiveSqlParser.KW_OVER);
					this.state = 4663;
					_localctx._ws = this.window_specification();
					}
					break;

				case 4:
					{
					this.state = 4665;
					this.match(HiveSqlParser.RPAREN);
					}
					break;
				}
				}
				break;
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public null_treatment(): Null_treatmentContext {
		let _localctx: Null_treatmentContext = new Null_treatmentContext(this._ctx, this.state);
		this.enterRule(_localctx, 778, HiveSqlParser.RULE_null_treatment);
		try {
			this.state = 4674;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case HiveSqlParser.KW_RESPECT:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 4670;
				this.match(HiveSqlParser.KW_RESPECT);
				this.state = 4671;
				this.match(HiveSqlParser.KW_NULLS);
				}
				break;
			case HiveSqlParser.KW_IGNORE:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 4672;
				this.match(HiveSqlParser.KW_IGNORE);
				this.state = 4673;
				this.match(HiveSqlParser.KW_NULLS);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public functionNameCreate(): FunctionNameCreateContext {
		let _localctx: FunctionNameCreateContext = new FunctionNameCreateContext(this._ctx, this.state);
		this.enterRule(_localctx, 780, HiveSqlParser.RULE_functionNameCreate);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4676;
			this.functionIdentifier();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public functionNameForDDL(): FunctionNameForDDLContext {
		let _localctx: FunctionNameForDDLContext = new FunctionNameForDDLContext(this._ctx, this.state);
		this.enterRule(_localctx, 782, HiveSqlParser.RULE_functionNameForDDL);
		try {
			this.state = 4680;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case HiveSqlParser.KW_ABORT:
			case HiveSqlParser.KW_ACTIVATE:
			case HiveSqlParser.KW_ACTIVE:
			case HiveSqlParser.KW_ADD:
			case HiveSqlParser.KW_ADMIN:
			case HiveSqlParser.KW_AFTER:
			case HiveSqlParser.KW_ALLOC_FRACTION:
			case HiveSqlParser.KW_ANALYZE:
			case HiveSqlParser.KW_ARCHIVE:
			case HiveSqlParser.KW_ASC:
			case HiveSqlParser.KW_AST:
			case HiveSqlParser.KW_AT:
			case HiveSqlParser.KW_AUTOCOMMIT:
			case HiveSqlParser.KW_BATCH:
			case HiveSqlParser.KW_BEFORE:
			case HiveSqlParser.KW_BUCKET:
			case HiveSqlParser.KW_BUCKETS:
			case HiveSqlParser.KW_CACHE:
			case HiveSqlParser.KW_CASCADE:
			case HiveSqlParser.KW_CBO:
			case HiveSqlParser.KW_CHANGE:
			case HiveSqlParser.KW_CHECK:
			case HiveSqlParser.KW_CLUSTER:
			case HiveSqlParser.KW_CLUSTERED:
			case HiveSqlParser.KW_CLUSTERSTATUS:
			case HiveSqlParser.KW_COLLECTION:
			case HiveSqlParser.KW_COLUMNS:
			case HiveSqlParser.KW_COMMENT:
			case HiveSqlParser.KW_COMPACT:
			case HiveSqlParser.KW_COMPACTIONS:
			case HiveSqlParser.KW_COMPUTE:
			case HiveSqlParser.KW_CONCATENATE:
			case HiveSqlParser.KW_CONTINUE:
			case HiveSqlParser.KW_COST:
			case HiveSqlParser.KW_CRON:
			case HiveSqlParser.KW_DATA:
			case HiveSqlParser.KW_DATABASES:
			case HiveSqlParser.KW_DATETIME:
			case HiveSqlParser.KW_DAY:
			case HiveSqlParser.KW_DAYS:
			case HiveSqlParser.KW_DAYOFWEEK:
			case HiveSqlParser.KW_DBPROPERTIES:
			case HiveSqlParser.KW_DCPROPERTIES:
			case HiveSqlParser.KW_DEBUG:
			case HiveSqlParser.KW_DEFAULT:
			case HiveSqlParser.KW_DEFERRED:
			case HiveSqlParser.KW_DEFINED:
			case HiveSqlParser.KW_DELIMITED:
			case HiveSqlParser.KW_DEPENDENCY:
			case HiveSqlParser.KW_DESC:
			case HiveSqlParser.KW_DETAIL:
			case HiveSqlParser.KW_DIRECTORIES:
			case HiveSqlParser.KW_DIRECTORY:
			case HiveSqlParser.KW_DISABLE:
			case HiveSqlParser.KW_DISABLED:
			case HiveSqlParser.KW_DISTRIBUTE:
			case HiveSqlParser.KW_DISTRIBUTED:
			case HiveSqlParser.KW_DO:
			case HiveSqlParser.KW_DUMP:
			case HiveSqlParser.KW_ELEM_TYPE:
			case HiveSqlParser.KW_ENABLE:
			case HiveSqlParser.KW_ENABLED:
			case HiveSqlParser.KW_ENFORCED:
			case HiveSqlParser.KW_ESCAPED:
			case HiveSqlParser.KW_EVERY:
			case HiveSqlParser.KW_EXCLUSIVE:
			case HiveSqlParser.KW_EXECUTE:
			case HiveSqlParser.KW_EXECUTED:
			case HiveSqlParser.KW_EXPIRE_SNAPSHOTS:
			case HiveSqlParser.KW_EXPLAIN:
			case HiveSqlParser.KW_EXPORT:
			case HiveSqlParser.KW_EXPRESSION:
			case HiveSqlParser.KW_FIELDS:
			case HiveSqlParser.KW_FILE:
			case HiveSqlParser.KW_FILEFORMAT:
			case HiveSqlParser.KW_FIRST:
			case HiveSqlParser.KW_FORMAT:
			case HiveSqlParser.KW_FORMATTED:
			case HiveSqlParser.KW_FUNCTIONS:
			case HiveSqlParser.KW_HOLD_DDLTIME:
			case HiveSqlParser.KW_HOUR:
			case HiveSqlParser.KW_HOURS:
			case HiveSqlParser.KW_IDXPROPERTIES:
			case HiveSqlParser.KW_IGNORE:
			case HiveSqlParser.KW_INDEX:
			case HiveSqlParser.KW_INDEXES:
			case HiveSqlParser.KW_INPATH:
			case HiveSqlParser.KW_INPUTDRIVER:
			case HiveSqlParser.KW_INPUTFORMAT:
			case HiveSqlParser.KW_ISOLATION:
			case HiveSqlParser.KW_ITEMS:
			case HiveSqlParser.KW_JAR:
			case HiveSqlParser.KW_JOINCOST:
			case HiveSqlParser.KW_KEY:
			case HiveSqlParser.KW_KEYS:
			case HiveSqlParser.KW_KEY_TYPE:
			case HiveSqlParser.KW_KILL:
			case HiveSqlParser.KW_LAST:
			case HiveSqlParser.KW_LEVEL:
			case HiveSqlParser.KW_LIMIT:
			case HiveSqlParser.KW_LINES:
			case HiveSqlParser.KW_LOAD:
			case HiveSqlParser.KW_LOCATION:
			case HiveSqlParser.KW_LOCK:
			case HiveSqlParser.KW_LOCKS:
			case HiveSqlParser.KW_LOGICAL:
			case HiveSqlParser.KW_LONG:
			case HiveSqlParser.KW_MANAGED:
			case HiveSqlParser.KW_MANAGEDLOCATION:
			case HiveSqlParser.KW_MANAGEMENT:
			case HiveSqlParser.KW_MAPJOIN:
			case HiveSqlParser.KW_MAPPING:
			case HiveSqlParser.KW_MATCHED:
			case HiveSqlParser.KW_MATERIALIZED:
			case HiveSqlParser.KW_METADATA:
			case HiveSqlParser.KW_MINUTE:
			case HiveSqlParser.KW_MINUTES:
			case HiveSqlParser.KW_MONTH:
			case HiveSqlParser.KW_MONTHS:
			case HiveSqlParser.KW_MOVE:
			case HiveSqlParser.KW_MSCK:
			case HiveSqlParser.KW_NORELY:
			case HiveSqlParser.KW_NOSCAN:
			case HiveSqlParser.KW_NOVALIDATE:
			case HiveSqlParser.KW_NO_DROP:
			case HiveSqlParser.KW_NULLS:
			case HiveSqlParser.KW_OFFLINE:
			case HiveSqlParser.KW_OFFSET:
			case HiveSqlParser.KW_OPERATOR:
			case HiveSqlParser.KW_OPTION:
			case HiveSqlParser.KW_OUTPUTDRIVER:
			case HiveSqlParser.KW_OUTPUTFORMAT:
			case HiveSqlParser.KW_OVERWRITE:
			case HiveSqlParser.KW_OWNER:
			case HiveSqlParser.KW_PARTITIONED:
			case HiveSqlParser.KW_PARTITIONS:
			case HiveSqlParser.KW_PATH:
			case HiveSqlParser.KW_PLAN:
			case HiveSqlParser.KW_PLANS:
			case HiveSqlParser.KW_PLUS:
			case HiveSqlParser.KW_POOL:
			case HiveSqlParser.KW_PRINCIPALS:
			case HiveSqlParser.KW_PROTECTION:
			case HiveSqlParser.KW_PURGE:
			case HiveSqlParser.KW_QUARTER:
			case HiveSqlParser.KW_QUERY:
			case HiveSqlParser.KW_QUERY_PARALLELISM:
			case HiveSqlParser.KW_READ:
			case HiveSqlParser.KW_READONLY:
			case HiveSqlParser.KW_REBUILD:
			case HiveSqlParser.KW_RECORDREADER:
			case HiveSqlParser.KW_RECORDWRITER:
			case HiveSqlParser.KW_RELOAD:
			case HiveSqlParser.KW_RELY:
			case HiveSqlParser.KW_REMOTE:
			case HiveSqlParser.KW_RENAME:
			case HiveSqlParser.KW_REOPTIMIZATION:
			case HiveSqlParser.KW_REPAIR:
			case HiveSqlParser.KW_REPL:
			case HiveSqlParser.KW_REPLACE:
			case HiveSqlParser.KW_REPLICATION:
			case HiveSqlParser.KW_RESOURCE:
			case HiveSqlParser.KW_RESPECT:
			case HiveSqlParser.KW_RESTRICT:
			case HiveSqlParser.KW_REWRITE:
			case HiveSqlParser.KW_ROLE:
			case HiveSqlParser.KW_ROLES:
			case HiveSqlParser.KW_SCHEDULED:
			case HiveSqlParser.KW_SCHEDULING_POLICY:
			case HiveSqlParser.KW_SCHEMA:
			case HiveSqlParser.KW_SCHEMAS:
			case HiveSqlParser.KW_SECOND:
			case HiveSqlParser.KW_SECONDS:
			case HiveSqlParser.KW_SEMI:
			case HiveSqlParser.KW_SERDE:
			case HiveSqlParser.KW_SERDEPROPERTIES:
			case HiveSqlParser.KW_SERVER:
			case HiveSqlParser.KW_SETS:
			case HiveSqlParser.KW_SET_CURRENT_SNAPSHOT:
			case HiveSqlParser.KW_SHARED:
			case HiveSqlParser.KW_SHOW:
			case HiveSqlParser.KW_SHOW_DATABASE:
			case HiveSqlParser.KW_SKEWED:
			case HiveSqlParser.KW_SNAPSHOT:
			case HiveSqlParser.KW_SORT:
			case HiveSqlParser.KW_SORTED:
			case HiveSqlParser.KW_SPEC:
			case HiveSqlParser.KW_SSL:
			case HiveSqlParser.KW_STATISTICS:
			case HiveSqlParser.KW_STATUS:
			case HiveSqlParser.KW_STORED:
			case HiveSqlParser.KW_STREAMTABLE:
			case HiveSqlParser.KW_STRING:
			case HiveSqlParser.KW_STRUCT:
			case HiveSqlParser.KW_SUMMARY:
			case HiveSqlParser.KW_SYSTEM_TIME:
			case HiveSqlParser.KW_SYSTEM_VERSION:
			case HiveSqlParser.KW_TABLES:
			case HiveSqlParser.KW_TBLPROPERTIES:
			case HiveSqlParser.KW_TEMPORARY:
			case HiveSqlParser.KW_TERMINATED:
			case HiveSqlParser.KW_TIMESTAMPTZ:
			case HiveSqlParser.KW_TINYINT:
			case HiveSqlParser.KW_TOUCH:
			case HiveSqlParser.KW_TRANSACTION:
			case HiveSqlParser.KW_TRANSACTIONAL:
			case HiveSqlParser.KW_TRANSACTIONS:
			case HiveSqlParser.KW_TRIM:
			case HiveSqlParser.KW_TYPE:
			case HiveSqlParser.KW_UNARCHIVE:
			case HiveSqlParser.KW_UNDO:
			case HiveSqlParser.KW_UNIONTYPE:
			case HiveSqlParser.KW_UNKNOWN:
			case HiveSqlParser.KW_UNLOCK:
			case HiveSqlParser.KW_UNMANAGED:
			case HiveSqlParser.KW_UNSET:
			case HiveSqlParser.KW_UNSIGNED:
			case HiveSqlParser.KW_URI:
			case HiveSqlParser.KW_URL:
			case HiveSqlParser.KW_USE:
			case HiveSqlParser.KW_UTC:
			case HiveSqlParser.KW_UTCTIMESTAMP:
			case HiveSqlParser.KW_VALIDATE:
			case HiveSqlParser.KW_VALUE_TYPE:
			case HiveSqlParser.KW_VECTORIZATION:
			case HiveSqlParser.KW_VIEW:
			case HiveSqlParser.KW_VIEWS:
			case HiveSqlParser.KW_WAIT:
			case HiveSqlParser.KW_WEEK:
			case HiveSqlParser.KW_WEEKS:
			case HiveSqlParser.KW_WHILE:
			case HiveSqlParser.KW_WITHIN:
			case HiveSqlParser.KW_WORK:
			case HiveSqlParser.KW_WORKLOAD:
			case HiveSqlParser.KW_WRITE:
			case HiveSqlParser.KW_YEAR:
			case HiveSqlParser.KW_YEARS:
			case HiveSqlParser.KW_ZONE:
			case HiveSqlParser.Identifier:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 4678;
				this.userDefinedFuncName();
				}
				break;
			case HiveSqlParser.StringLiteral:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 4679;
				this.match(HiveSqlParser.StringLiteral);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public functionNameForInvoke(): FunctionNameForInvokeContext {
		let _localctx: FunctionNameForInvokeContext = new FunctionNameForInvokeContext(this._ctx, this.state);
		this.enterRule(_localctx, 784, HiveSqlParser.RULE_functionNameForInvoke);
		try {
			this.state = 4684;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 567, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 4682;
				this.userDefinedFuncName();
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 4683;
				this.internalFunctionName();
				}
				break;
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public userDefinedFuncName(): UserDefinedFuncNameContext {
		let _localctx: UserDefinedFuncNameContext = new UserDefinedFuncNameContext(this._ctx, this.state);
		this.enterRule(_localctx, 786, HiveSqlParser.RULE_userDefinedFuncName);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4686;
			this.functionIdentifier();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public internalFunctionName(): InternalFunctionNameContext {
		let _localctx: InternalFunctionNameContext = new InternalFunctionNameContext(this._ctx, this.state);
		this.enterRule(_localctx, 788, HiveSqlParser.RULE_internalFunctionName);
		try {
			this.state = 4690;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 568, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 4688;
				this.sql11ReservedKeywordsUsedAsFunctionName();
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 4689;
				this.sysFuncNames();
				}
				break;
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public castExpression(): CastExpressionContext {
		let _localctx: CastExpressionContext = new CastExpressionContext(this._ctx, this.state);
		this.enterRule(_localctx, 790, HiveSqlParser.RULE_castExpression);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4692;
			this.match(HiveSqlParser.KW_CAST);
			this.state = 4693;
			this.match(HiveSqlParser.LPAREN);
			this.state = 4694;
			this.expression();
			this.state = 4695;
			this.match(HiveSqlParser.KW_AS);
			this.state = 4696;
			_localctx._toType = this.primitiveType();
			this.state = 4699;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === HiveSqlParser.KW_FORMAT) {
				{
				this.state = 4697;
				_localctx._fmt = this.match(HiveSqlParser.KW_FORMAT);
				this.state = 4698;
				this.match(HiveSqlParser.StringLiteral);
				}
			}

			this.state = 4701;
			this.match(HiveSqlParser.RPAREN);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public caseExpression(): CaseExpressionContext {
		let _localctx: CaseExpressionContext = new CaseExpressionContext(this._ctx, this.state);
		this.enterRule(_localctx, 792, HiveSqlParser.RULE_caseExpression);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4703;
			this.match(HiveSqlParser.KW_CASE);
			this.state = 4704;
			this.expression();
			this.state = 4710;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			do {
				{
				{
				this.state = 4705;
				this.match(HiveSqlParser.KW_WHEN);
				this.state = 4706;
				this.expression();
				this.state = 4707;
				this.match(HiveSqlParser.KW_THEN);
				this.state = 4708;
				this.expression();
				}
				}
				this.state = 4712;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			} while (_la === HiveSqlParser.KW_WHEN);
			this.state = 4716;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === HiveSqlParser.KW_ELSE) {
				{
				this.state = 4714;
				this.match(HiveSqlParser.KW_ELSE);
				this.state = 4715;
				this.expression();
				}
			}

			this.state = 4718;
			this.match(HiveSqlParser.KW_END);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public whenExpression(): WhenExpressionContext {
		let _localctx: WhenExpressionContext = new WhenExpressionContext(this._ctx, this.state);
		this.enterRule(_localctx, 794, HiveSqlParser.RULE_whenExpression);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4720;
			this.match(HiveSqlParser.KW_CASE);
			this.state = 4726;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			do {
				{
				{
				this.state = 4721;
				this.match(HiveSqlParser.KW_WHEN);
				this.state = 4722;
				this.expression();
				this.state = 4723;
				this.match(HiveSqlParser.KW_THEN);
				this.state = 4724;
				this.expression();
				}
				}
				this.state = 4728;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			} while (_la === HiveSqlParser.KW_WHEN);
			this.state = 4732;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === HiveSqlParser.KW_ELSE) {
				{
				this.state = 4730;
				this.match(HiveSqlParser.KW_ELSE);
				this.state = 4731;
				this.expression();
				}
			}

			this.state = 4734;
			this.match(HiveSqlParser.KW_END);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public floorExpression(): FloorExpressionContext {
		let _localctx: FloorExpressionContext = new FloorExpressionContext(this._ctx, this.state);
		this.enterRule(_localctx, 796, HiveSqlParser.RULE_floorExpression);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4736;
			this.match(HiveSqlParser.KW_FLOOR);
			this.state = 4737;
			this.match(HiveSqlParser.LPAREN);
			this.state = 4738;
			this.expression();
			this.state = 4741;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === HiveSqlParser.KW_TO) {
				{
				this.state = 4739;
				this.match(HiveSqlParser.KW_TO);
				this.state = 4740;
				_localctx._floorUnit = this.floorDateQualifiers();
				}
			}

			this.state = 4743;
			this.match(HiveSqlParser.RPAREN);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public floorDateQualifiers(): FloorDateQualifiersContext {
		let _localctx: FloorDateQualifiersContext = new FloorDateQualifiersContext(this._ctx, this.state);
		this.enterRule(_localctx, 798, HiveSqlParser.RULE_floorDateQualifiers);
		try {
			this.state = 4753;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case HiveSqlParser.KW_YEAR:
			case HiveSqlParser.KW_YEARS:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 4745;
				this.year();
				}
				break;
			case HiveSqlParser.KW_QUARTER:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 4746;
				this.match(HiveSqlParser.KW_QUARTER);
				}
				break;
			case HiveSqlParser.KW_MONTH:
			case HiveSqlParser.KW_MONTHS:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 4747;
				this.month();
				}
				break;
			case HiveSqlParser.KW_WEEK:
			case HiveSqlParser.KW_WEEKS:
				this.enterOuterAlt(_localctx, 4);
				{
				this.state = 4748;
				this.week();
				}
				break;
			case HiveSqlParser.KW_DAY:
			case HiveSqlParser.KW_DAYS:
				this.enterOuterAlt(_localctx, 5);
				{
				this.state = 4749;
				this.day();
				}
				break;
			case HiveSqlParser.KW_HOUR:
			case HiveSqlParser.KW_HOURS:
				this.enterOuterAlt(_localctx, 6);
				{
				this.state = 4750;
				this.hour();
				}
				break;
			case HiveSqlParser.KW_MINUTE:
			case HiveSqlParser.KW_MINUTES:
				this.enterOuterAlt(_localctx, 7);
				{
				this.state = 4751;
				this.minute();
				}
				break;
			case HiveSqlParser.KW_SECOND:
			case HiveSqlParser.KW_SECONDS:
				this.enterOuterAlt(_localctx, 8);
				{
				this.state = 4752;
				this.second();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public extractExpression(): ExtractExpressionContext {
		let _localctx: ExtractExpressionContext = new ExtractExpressionContext(this._ctx, this.state);
		this.enterRule(_localctx, 800, HiveSqlParser.RULE_extractExpression);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4755;
			this.match(HiveSqlParser.KW_EXTRACT);
			this.state = 4756;
			this.match(HiveSqlParser.LPAREN);
			this.state = 4757;
			_localctx._timeUnit = this.timeQualifiers();
			this.state = 4758;
			this.match(HiveSqlParser.KW_FROM);
			this.state = 4759;
			this.expression();
			this.state = 4760;
			this.match(HiveSqlParser.RPAREN);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public timeQualifiers(): TimeQualifiersContext {
		let _localctx: TimeQualifiersContext = new TimeQualifiersContext(this._ctx, this.state);
		this.enterRule(_localctx, 802, HiveSqlParser.RULE_timeQualifiers);
		try {
			this.state = 4770;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case HiveSqlParser.KW_YEAR:
			case HiveSqlParser.KW_YEARS:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 4762;
				this.year();
				}
				break;
			case HiveSqlParser.KW_QUARTER:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 4763;
				this.match(HiveSqlParser.KW_QUARTER);
				}
				break;
			case HiveSqlParser.KW_MONTH:
			case HiveSqlParser.KW_MONTHS:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 4764;
				this.month();
				}
				break;
			case HiveSqlParser.KW_WEEK:
			case HiveSqlParser.KW_WEEKS:
				this.enterOuterAlt(_localctx, 4);
				{
				this.state = 4765;
				this.week();
				}
				break;
			case HiveSqlParser.KW_DAY:
			case HiveSqlParser.KW_DAYS:
				this.enterOuterAlt(_localctx, 5);
				{
				this.state = 4766;
				this.day();
				}
				break;
			case HiveSqlParser.KW_HOUR:
			case HiveSqlParser.KW_HOURS:
				this.enterOuterAlt(_localctx, 6);
				{
				this.state = 4767;
				this.hour();
				}
				break;
			case HiveSqlParser.KW_MINUTE:
			case HiveSqlParser.KW_MINUTES:
				this.enterOuterAlt(_localctx, 7);
				{
				this.state = 4768;
				this.minute();
				}
				break;
			case HiveSqlParser.KW_SECOND:
			case HiveSqlParser.KW_SECONDS:
				this.enterOuterAlt(_localctx, 8);
				{
				this.state = 4769;
				this.second();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public constant(): ConstantContext {
		let _localctx: ConstantContext = new ConstantContext(this._ctx, this.state);
		this.enterRule(_localctx, 804, HiveSqlParser.RULE_constant);
		try {
			this.state = 4785;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 577, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 4772;
				this.intervalLiteral();
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 4773;
				this.match(HiveSqlParser.Number);
				}
				break;

			case 3:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 4774;
				this.dateLiteral();
				}
				break;

			case 4:
				this.enterOuterAlt(_localctx, 4);
				{
				this.state = 4775;
				this.timestampLiteral();
				}
				break;

			case 5:
				this.enterOuterAlt(_localctx, 5);
				{
				this.state = 4776;
				this.timestampLocalTZLiteral();
				}
				break;

			case 6:
				this.enterOuterAlt(_localctx, 6);
				{
				this.state = 4777;
				this.match(HiveSqlParser.StringLiteral);
				}
				break;

			case 7:
				this.enterOuterAlt(_localctx, 7);
				{
				this.state = 4778;
				this.stringLiteralSequence();
				}
				break;

			case 8:
				this.enterOuterAlt(_localctx, 8);
				{
				this.state = 4779;
				this.match(HiveSqlParser.IntegralLiteral);
				}
				break;

			case 9:
				this.enterOuterAlt(_localctx, 9);
				{
				this.state = 4780;
				this.match(HiveSqlParser.NumberLiteral);
				}
				break;

			case 10:
				this.enterOuterAlt(_localctx, 10);
				{
				this.state = 4781;
				this.charSetStringLiteral();
				}
				break;

			case 11:
				this.enterOuterAlt(_localctx, 11);
				{
				this.state = 4782;
				this.booleanValue();
				}
				break;

			case 12:
				this.enterOuterAlt(_localctx, 12);
				{
				this.state = 4783;
				this.match(HiveSqlParser.KW_NULL);
				}
				break;

			case 13:
				this.enterOuterAlt(_localctx, 13);
				{
				this.state = 4784;
				this.prepareStmtParam();
				}
				break;
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public prepareStmtParam(): PrepareStmtParamContext {
		let _localctx: PrepareStmtParamContext = new PrepareStmtParamContext(this._ctx, this.state);
		this.enterRule(_localctx, 806, HiveSqlParser.RULE_prepareStmtParam);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4787;
			_localctx._p = this.parameterIdx();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public parameterIdx(): ParameterIdxContext {
		let _localctx: ParameterIdxContext = new ParameterIdxContext(this._ctx, this.state);
		this.enterRule(_localctx, 808, HiveSqlParser.RULE_parameterIdx);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4789;
			this.match(HiveSqlParser.QUESTION);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public stringLiteralSequence(): StringLiteralSequenceContext {
		let _localctx: StringLiteralSequenceContext = new StringLiteralSequenceContext(this._ctx, this.state);
		this.enterRule(_localctx, 810, HiveSqlParser.RULE_stringLiteralSequence);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4791;
			this.match(HiveSqlParser.StringLiteral);
			this.state = 4793;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			do {
				{
				{
				this.state = 4792;
				this.match(HiveSqlParser.StringLiteral);
				}
				}
				this.state = 4795;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			} while (_la === HiveSqlParser.StringLiteral);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public charSetStringLiteral(): CharSetStringLiteralContext {
		let _localctx: CharSetStringLiteralContext = new CharSetStringLiteralContext(this._ctx, this.state);
		this.enterRule(_localctx, 812, HiveSqlParser.RULE_charSetStringLiteral);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4797;
			_localctx._csName = this.match(HiveSqlParser.CharSetName);
			this.state = 4798;
			_localctx._csLiteral = this.match(HiveSqlParser.CharSetLiteral);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public dateLiteral(): DateLiteralContext {
		let _localctx: DateLiteralContext = new DateLiteralContext(this._ctx, this.state);
		this.enterRule(_localctx, 814, HiveSqlParser.RULE_dateLiteral);
		try {
			this.state = 4803;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case HiveSqlParser.KW_DATE:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 4800;
				this.match(HiveSqlParser.KW_DATE);
				this.state = 4801;
				this.match(HiveSqlParser.StringLiteral);
				}
				break;
			case HiveSqlParser.KW_CURRENT_DATE:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 4802;
				this.match(HiveSqlParser.KW_CURRENT_DATE);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public timestampLiteral(): TimestampLiteralContext {
		let _localctx: TimestampLiteralContext = new TimestampLiteralContext(this._ctx, this.state);
		this.enterRule(_localctx, 816, HiveSqlParser.RULE_timestampLiteral);
		try {
			this.state = 4808;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case HiveSqlParser.KW_TIMESTAMP:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 4805;
				this.match(HiveSqlParser.KW_TIMESTAMP);
				this.state = 4806;
				this.match(HiveSqlParser.StringLiteral);
				}
				break;
			case HiveSqlParser.KW_CURRENT_TIMESTAMP:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 4807;
				this.match(HiveSqlParser.KW_CURRENT_TIMESTAMP);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public timestampLocalTZLiteral(): TimestampLocalTZLiteralContext {
		let _localctx: TimestampLocalTZLiteralContext = new TimestampLocalTZLiteralContext(this._ctx, this.state);
		this.enterRule(_localctx, 818, HiveSqlParser.RULE_timestampLocalTZLiteral);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4810;
			this.match(HiveSqlParser.KW_TIMESTAMPLOCALTZ);
			this.state = 4811;
			this.match(HiveSqlParser.StringLiteral);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public intervalValue(): IntervalValueContext {
		let _localctx: IntervalValueContext = new IntervalValueContext(this._ctx, this.state);
		this.enterRule(_localctx, 820, HiveSqlParser.RULE_intervalValue);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4813;
			_la = this._input.LA(1);
			if (!(_la === HiveSqlParser.StringLiteral || _la === HiveSqlParser.Number)) {
			this._errHandler.recoverInline(this);
			} else {
				if (this._input.LA(1) === Token.EOF) {
					this.matchedEOF = true;
				}

				this._errHandler.reportMatch(this);
				this.consume();
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public intervalLiteral(): IntervalLiteralContext {
		let _localctx: IntervalLiteralContext = new IntervalLiteralContext(this._ctx, this.state);
		this.enterRule(_localctx, 822, HiveSqlParser.RULE_intervalLiteral);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4815;
			_localctx._value = this.intervalValue();
			this.state = 4816;
			_localctx._qualifiers = this.intervalQualifiers();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public intervalExpression(): IntervalExpressionContext {
		let _localctx: IntervalExpressionContext = new IntervalExpressionContext(this._ctx, this.state);
		this.enterRule(_localctx, 824, HiveSqlParser.RULE_intervalExpression);
		try {
			this.state = 4833;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case HiveSqlParser.LPAREN:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 4818;
				this.match(HiveSqlParser.LPAREN);
				this.state = 4819;
				_localctx._value = this.intervalValue();
				this.state = 4820;
				this.match(HiveSqlParser.RPAREN);
				this.state = 4821;
				_localctx._qualifiers = this.intervalQualifiers();
				}
				break;
			case HiveSqlParser.KW_INTERVAL:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 4823;
				this.match(HiveSqlParser.KW_INTERVAL);
				this.state = 4829;
				this._errHandler.sync(this);
				switch (this._input.LA(1)) {
				case HiveSqlParser.StringLiteral:
				case HiveSqlParser.Number:
					{
					this.state = 4824;
					_localctx._value = this.intervalValue();
					}
					break;
				case HiveSqlParser.LPAREN:
					{
					this.state = 4825;
					this.match(HiveSqlParser.LPAREN);
					this.state = 4826;
					_localctx._expr = this.expression();
					this.state = 4827;
					this.match(HiveSqlParser.RPAREN);
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				this.state = 4831;
				_localctx._qualifiers = this.intervalQualifiers();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public intervalQualifiers(): IntervalQualifiersContext {
		let _localctx: IntervalQualifiersContext = new IntervalQualifiersContext(this._ctx, this.state);
		this.enterRule(_localctx, 826, HiveSqlParser.RULE_intervalQualifiers);
		try {
			this.state = 4849;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 583, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 4835;
				this.year();
				this.state = 4836;
				this.match(HiveSqlParser.KW_TO);
				this.state = 4837;
				this.month();
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 4839;
				this.day();
				this.state = 4840;
				this.match(HiveSqlParser.KW_TO);
				this.state = 4841;
				this.second();
				}
				break;

			case 3:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 4843;
				this.year();
				}
				break;

			case 4:
				this.enterOuterAlt(_localctx, 4);
				{
				this.state = 4844;
				this.month();
				}
				break;

			case 5:
				this.enterOuterAlt(_localctx, 5);
				{
				this.state = 4845;
				this.day();
				}
				break;

			case 6:
				this.enterOuterAlt(_localctx, 6);
				{
				this.state = 4846;
				this.hour();
				}
				break;

			case 7:
				this.enterOuterAlt(_localctx, 7);
				{
				this.state = 4847;
				this.minute();
				}
				break;

			case 8:
				this.enterOuterAlt(_localctx, 8);
				{
				this.state = 4848;
				this.second();
				}
				break;
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public expression(): ExpressionContext {
		let _localctx: ExpressionContext = new ExpressionContext(this._ctx, this.state);
		this.enterRule(_localctx, 828, HiveSqlParser.RULE_expression);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4851;
			this.precedenceOrExpression();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public atomExpression(): AtomExpressionContext {
		let _localctx: AtomExpressionContext = new AtomExpressionContext(this._ctx, this.state);
		this.enterRule(_localctx, 830, HiveSqlParser.RULE_atomExpression);
		try {
			this.state = 4864;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 584, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 4853;
				this.constant();
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 4854;
				this.intervalExpression();
				}
				break;

			case 3:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 4855;
				this.castExpression();
				}
				break;

			case 4:
				this.enterOuterAlt(_localctx, 4);
				{
				this.state = 4856;
				this.extractExpression();
				}
				break;

			case 5:
				this.enterOuterAlt(_localctx, 5);
				{
				this.state = 4857;
				this.floorExpression();
				}
				break;

			case 6:
				this.enterOuterAlt(_localctx, 6);
				{
				this.state = 4858;
				this.caseExpression();
				}
				break;

			case 7:
				this.enterOuterAlt(_localctx, 7);
				{
				this.state = 4859;
				this.whenExpression();
				}
				break;

			case 8:
				this.enterOuterAlt(_localctx, 8);
				{
				this.state = 4860;
				this.subQueryExpression();
				}
				break;

			case 9:
				this.enterOuterAlt(_localctx, 9);
				{
				this.state = 4861;
				this.function_();
				}
				break;

			case 10:
				this.enterOuterAlt(_localctx, 10);
				{
				this.state = 4862;
				this.expressionsInParenthesis();
				}
				break;

			case 11:
				this.enterOuterAlt(_localctx, 11);
				{
				this.state = 4863;
				this.id_();
				}
				break;
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public precedenceFieldExpression(): PrecedenceFieldExpressionContext {
		let _localctx: PrecedenceFieldExpressionContext = new PrecedenceFieldExpressionContext(this._ctx, this.state);
		this.enterRule(_localctx, 832, HiveSqlParser.RULE_precedenceFieldExpression);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4866;
			this.atomExpression();
			this.state = 4875;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === HiveSqlParser.DOT || _la === HiveSqlParser.LSQUARE) {
				{
				this.state = 4873;
				this._errHandler.sync(this);
				switch (this._input.LA(1)) {
				case HiveSqlParser.LSQUARE:
					{
					this.state = 4867;
					this.match(HiveSqlParser.LSQUARE);
					this.state = 4868;
					this.expression();
					this.state = 4869;
					this.match(HiveSqlParser.RSQUARE);
					}
					break;
				case HiveSqlParser.DOT:
					{
					this.state = 4871;
					this.match(HiveSqlParser.DOT);
					this.state = 4872;
					this.id_();
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				}
				this.state = 4877;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public precedenceUnaryOperator(): PrecedenceUnaryOperatorContext {
		let _localctx: PrecedenceUnaryOperatorContext = new PrecedenceUnaryOperatorContext(this._ctx, this.state);
		this.enterRule(_localctx, 834, HiveSqlParser.RULE_precedenceUnaryOperator);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4878;
			_la = this._input.LA(1);
			if (!(((((_la - 412)) & ~0x1F) === 0 && ((1 << (_la - 412)) & ((1 << (HiveSqlParser.PLUS - 412)) | (1 << (HiveSqlParser.MINUS - 412)) | (1 << (HiveSqlParser.BITWISENOT - 412)) | (1 << (HiveSqlParser.TILDE - 412)))) !== 0))) {
			this._errHandler.recoverInline(this);
			} else {
				if (this._input.LA(1) === Token.EOF) {
					this.matchedEOF = true;
				}

				this._errHandler.reportMatch(this);
				this.consume();
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public precedenceUnaryPrefixExpression(): PrecedenceUnaryPrefixExpressionContext {
		let _localctx: PrecedenceUnaryPrefixExpressionContext = new PrecedenceUnaryPrefixExpressionContext(this._ctx, this.state);
		this.enterRule(_localctx, 836, HiveSqlParser.RULE_precedenceUnaryPrefixExpression);
		try {
			let _alt: number;
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4883;
			this._errHandler.sync(this);
			_alt = this.interpreter.adaptivePredict(this._input, 587, this._ctx);
			while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) {
				if (_alt === 1) {
					{
					{
					this.state = 4880;
					this.precedenceUnaryOperator();
					}
					}
				}
				this.state = 4885;
				this._errHandler.sync(this);
				_alt = this.interpreter.adaptivePredict(this._input, 587, this._ctx);
			}
			this.state = 4886;
			this.precedenceFieldExpression();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public precedenceBitwiseXorOperator(): PrecedenceBitwiseXorOperatorContext {
		let _localctx: PrecedenceBitwiseXorOperatorContext = new PrecedenceBitwiseXorOperatorContext(this._ctx, this.state);
		this.enterRule(_localctx, 838, HiveSqlParser.RULE_precedenceBitwiseXorOperator);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4888;
			this.match(HiveSqlParser.BITWISEXOR);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public precedenceBitwiseXorExpression(): PrecedenceBitwiseXorExpressionContext {
		let _localctx: PrecedenceBitwiseXorExpressionContext = new PrecedenceBitwiseXorExpressionContext(this._ctx, this.state);
		this.enterRule(_localctx, 840, HiveSqlParser.RULE_precedenceBitwiseXorExpression);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4890;
			this.precedenceUnaryPrefixExpression();
			this.state = 4896;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === HiveSqlParser.BITWISEXOR) {
				{
				{
				this.state = 4891;
				this.precedenceBitwiseXorOperator();
				this.state = 4892;
				this.precedenceUnaryPrefixExpression();
				}
				}
				this.state = 4898;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public precedenceStarOperator(): PrecedenceStarOperatorContext {
		let _localctx: PrecedenceStarOperatorContext = new PrecedenceStarOperatorContext(this._ctx, this.state);
		this.enterRule(_localctx, 842, HiveSqlParser.RULE_precedenceStarOperator);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4899;
			_la = this._input.LA(1);
			if (!(((((_la - 411)) & ~0x1F) === 0 && ((1 << (_la - 411)) & ((1 << (HiveSqlParser.DIVIDE - 411)) | (1 << (HiveSqlParser.STAR - 411)) | (1 << (HiveSqlParser.MOD - 411)) | (1 << (HiveSqlParser.DIV - 411)))) !== 0))) {
			this._errHandler.recoverInline(this);
			} else {
				if (this._input.LA(1) === Token.EOF) {
					this.matchedEOF = true;
				}

				this._errHandler.reportMatch(this);
				this.consume();
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public precedenceStarExpression(): PrecedenceStarExpressionContext {
		let _localctx: PrecedenceStarExpressionContext = new PrecedenceStarExpressionContext(this._ctx, this.state);
		this.enterRule(_localctx, 844, HiveSqlParser.RULE_precedenceStarExpression);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4901;
			this.precedenceBitwiseXorExpression();
			this.state = 4907;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (((((_la - 411)) & ~0x1F) === 0 && ((1 << (_la - 411)) & ((1 << (HiveSqlParser.DIVIDE - 411)) | (1 << (HiveSqlParser.STAR - 411)) | (1 << (HiveSqlParser.MOD - 411)) | (1 << (HiveSqlParser.DIV - 411)))) !== 0)) {
				{
				{
				this.state = 4902;
				this.precedenceStarOperator();
				this.state = 4903;
				this.precedenceBitwiseXorExpression();
				}
				}
				this.state = 4909;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public precedencePlusOperator(): PrecedencePlusOperatorContext {
		let _localctx: PrecedencePlusOperatorContext = new PrecedencePlusOperatorContext(this._ctx, this.state);
		this.enterRule(_localctx, 846, HiveSqlParser.RULE_precedencePlusOperator);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4910;
			_la = this._input.LA(1);
			if (!(_la === HiveSqlParser.PLUS || _la === HiveSqlParser.MINUS)) {
			this._errHandler.recoverInline(this);
			} else {
				if (this._input.LA(1) === Token.EOF) {
					this.matchedEOF = true;
				}

				this._errHandler.reportMatch(this);
				this.consume();
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public precedencePlusExpression(): PrecedencePlusExpressionContext {
		let _localctx: PrecedencePlusExpressionContext = new PrecedencePlusExpressionContext(this._ctx, this.state);
		this.enterRule(_localctx, 848, HiveSqlParser.RULE_precedencePlusExpression);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4912;
			this.precedenceStarExpression();
			this.state = 4918;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === HiveSqlParser.PLUS || _la === HiveSqlParser.MINUS) {
				{
				{
				this.state = 4913;
				this.precedencePlusOperator();
				this.state = 4914;
				this.precedenceStarExpression();
				}
				}
				this.state = 4920;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public precedenceConcatenateOperator(): PrecedenceConcatenateOperatorContext {
		let _localctx: PrecedenceConcatenateOperatorContext = new PrecedenceConcatenateOperatorContext(this._ctx, this.state);
		this.enterRule(_localctx, 850, HiveSqlParser.RULE_precedenceConcatenateOperator);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4921;
			this.match(HiveSqlParser.CONCATENATE);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public precedenceConcatenateExpression(): PrecedenceConcatenateExpressionContext {
		let _localctx: PrecedenceConcatenateExpressionContext = new PrecedenceConcatenateExpressionContext(this._ctx, this.state);
		this.enterRule(_localctx, 852, HiveSqlParser.RULE_precedenceConcatenateExpression);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4923;
			this.precedencePlusExpression();
			this.state = 4929;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === HiveSqlParser.CONCATENATE) {
				{
				{
				this.state = 4924;
				this.precedenceConcatenateOperator();
				this.state = 4925;
				_localctx._plus = this.precedencePlusExpression();
				}
				}
				this.state = 4931;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public precedenceAmpersandOperator(): PrecedenceAmpersandOperatorContext {
		let _localctx: PrecedenceAmpersandOperatorContext = new PrecedenceAmpersandOperatorContext(this._ctx, this.state);
		this.enterRule(_localctx, 854, HiveSqlParser.RULE_precedenceAmpersandOperator);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4932;
			this.match(HiveSqlParser.AMPERSAND);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public precedenceAmpersandExpression(): PrecedenceAmpersandExpressionContext {
		let _localctx: PrecedenceAmpersandExpressionContext = new PrecedenceAmpersandExpressionContext(this._ctx, this.state);
		this.enterRule(_localctx, 856, HiveSqlParser.RULE_precedenceAmpersandExpression);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4934;
			this.precedenceConcatenateExpression();
			this.state = 4940;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === HiveSqlParser.AMPERSAND) {
				{
				{
				this.state = 4935;
				this.precedenceAmpersandOperator();
				this.state = 4936;
				this.precedenceConcatenateExpression();
				}
				}
				this.state = 4942;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public precedenceBitwiseOrOperator(): PrecedenceBitwiseOrOperatorContext {
		let _localctx: PrecedenceBitwiseOrOperatorContext = new PrecedenceBitwiseOrOperatorContext(this._ctx, this.state);
		this.enterRule(_localctx, 858, HiveSqlParser.RULE_precedenceBitwiseOrOperator);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4943;
			this.match(HiveSqlParser.BITWISEOR);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public precedenceBitwiseOrExpression(): PrecedenceBitwiseOrExpressionContext {
		let _localctx: PrecedenceBitwiseOrExpressionContext = new PrecedenceBitwiseOrExpressionContext(this._ctx, this.state);
		this.enterRule(_localctx, 860, HiveSqlParser.RULE_precedenceBitwiseOrExpression);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4945;
			this.precedenceAmpersandExpression();
			this.state = 4951;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === HiveSqlParser.BITWISEOR) {
				{
				{
				this.state = 4946;
				this.precedenceBitwiseOrOperator();
				this.state = 4947;
				this.precedenceAmpersandExpression();
				}
				}
				this.state = 4953;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public precedenceRegexpOperator(): PrecedenceRegexpOperatorContext {
		let _localctx: PrecedenceRegexpOperatorContext = new PrecedenceRegexpOperatorContext(this._ctx, this.state);
		this.enterRule(_localctx, 862, HiveSqlParser.RULE_precedenceRegexpOperator);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4954;
			_la = this._input.LA(1);
			if (!(_la === HiveSqlParser.KW_LIKE || _la === HiveSqlParser.KW_REGEXP || _la === HiveSqlParser.KW_RLIKE)) {
			this._errHandler.recoverInline(this);
			} else {
				if (this._input.LA(1) === Token.EOF) {
					this.matchedEOF = true;
				}

				this._errHandler.reportMatch(this);
				this.consume();
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public precedenceSimilarOperator(): PrecedenceSimilarOperatorContext {
		let _localctx: PrecedenceSimilarOperatorContext = new PrecedenceSimilarOperatorContext(this._ctx, this.state);
		this.enterRule(_localctx, 864, HiveSqlParser.RULE_precedenceSimilarOperator);
		try {
			this.state = 4961;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case HiveSqlParser.KW_LIKE:
			case HiveSqlParser.KW_REGEXP:
			case HiveSqlParser.KW_RLIKE:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 4956;
				this.precedenceRegexpOperator();
				}
				break;
			case HiveSqlParser.LESSTHANOREQUALTO:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 4957;
				this.match(HiveSqlParser.LESSTHANOREQUALTO);
				}
				break;
			case HiveSqlParser.LESSTHAN:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 4958;
				this.match(HiveSqlParser.LESSTHAN);
				}
				break;
			case HiveSqlParser.GREATERTHANOREQUALTO:
				this.enterOuterAlt(_localctx, 4);
				{
				this.state = 4959;
				this.match(HiveSqlParser.GREATERTHANOREQUALTO);
				}
				break;
			case HiveSqlParser.GREATERTHAN:
				this.enterOuterAlt(_localctx, 5);
				{
				this.state = 4960;
				this.match(HiveSqlParser.GREATERTHAN);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public subQueryExpression(): SubQueryExpressionContext {
		let _localctx: SubQueryExpressionContext = new SubQueryExpressionContext(this._ctx, this.state);
		this.enterRule(_localctx, 866, HiveSqlParser.RULE_subQueryExpression);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4963;
			this.match(HiveSqlParser.LPAREN);
			this.state = 4964;
			this.selectStatement();
			this.state = 4965;
			this.match(HiveSqlParser.RPAREN);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public precedenceSimilarExpression(): PrecedenceSimilarExpressionContext {
		let _localctx: PrecedenceSimilarExpressionContext = new PrecedenceSimilarExpressionContext(this._ctx, this.state);
		this.enterRule(_localctx, 868, HiveSqlParser.RULE_precedenceSimilarExpression);
		try {
			this.state = 4970;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case HiveSqlParser.KW_ABORT:
			case HiveSqlParser.KW_ACTIVATE:
			case HiveSqlParser.KW_ACTIVE:
			case HiveSqlParser.KW_ADD:
			case HiveSqlParser.KW_ADMIN:
			case HiveSqlParser.KW_AFTER:
			case HiveSqlParser.KW_ALLOC_FRACTION:
			case HiveSqlParser.KW_ANALYZE:
			case HiveSqlParser.KW_AND:
			case HiveSqlParser.KW_ARCHIVE:
			case HiveSqlParser.KW_ARRAY:
			case HiveSqlParser.KW_ASC:
			case HiveSqlParser.KW_AST:
			case HiveSqlParser.KW_AT:
			case HiveSqlParser.KW_AUTOCOMMIT:
			case HiveSqlParser.KW_BATCH:
			case HiveSqlParser.KW_BEFORE:
			case HiveSqlParser.KW_BETWEEN:
			case HiveSqlParser.KW_BIGINT:
			case HiveSqlParser.KW_BINARY:
			case HiveSqlParser.KW_BOOLEAN:
			case HiveSqlParser.KW_BUCKET:
			case HiveSqlParser.KW_BUCKETS:
			case HiveSqlParser.KW_CACHE:
			case HiveSqlParser.KW_CASCADE:
			case HiveSqlParser.KW_CASE:
			case HiveSqlParser.KW_CAST:
			case HiveSqlParser.KW_CBO:
			case HiveSqlParser.KW_CHANGE:
			case HiveSqlParser.KW_CHECK:
			case HiveSqlParser.KW_CLUSTER:
			case HiveSqlParser.KW_CLUSTERED:
			case HiveSqlParser.KW_CLUSTERSTATUS:
			case HiveSqlParser.KW_COLLECTION:
			case HiveSqlParser.KW_COLUMNS:
			case HiveSqlParser.KW_COMMENT:
			case HiveSqlParser.KW_COMPACT:
			case HiveSqlParser.KW_COMPACTIONS:
			case HiveSqlParser.KW_COMPUTE:
			case HiveSqlParser.KW_CONCATENATE:
			case HiveSqlParser.KW_CONTINUE:
			case HiveSqlParser.KW_COST:
			case HiveSqlParser.KW_CRON:
			case HiveSqlParser.KW_CURRENT_DATE:
			case HiveSqlParser.KW_CURRENT_TIMESTAMP:
			case HiveSqlParser.KW_DATA:
			case HiveSqlParser.KW_DATABASES:
			case HiveSqlParser.KW_DATE:
			case HiveSqlParser.KW_DATETIME:
			case HiveSqlParser.KW_DAY:
			case HiveSqlParser.KW_DAYS:
			case HiveSqlParser.KW_DAYOFWEEK:
			case HiveSqlParser.KW_DBPROPERTIES:
			case HiveSqlParser.KW_DCPROPERTIES:
			case HiveSqlParser.KW_DEBUG:
			case HiveSqlParser.KW_DEFAULT:
			case HiveSqlParser.KW_DEFERRED:
			case HiveSqlParser.KW_DEFINED:
			case HiveSqlParser.KW_DELIMITED:
			case HiveSqlParser.KW_DEPENDENCY:
			case HiveSqlParser.KW_DESC:
			case HiveSqlParser.KW_DETAIL:
			case HiveSqlParser.KW_DIRECTORIES:
			case HiveSqlParser.KW_DIRECTORY:
			case HiveSqlParser.KW_DISABLE:
			case HiveSqlParser.KW_DISABLED:
			case HiveSqlParser.KW_DISTRIBUTE:
			case HiveSqlParser.KW_DISTRIBUTED:
			case HiveSqlParser.KW_DO:
			case HiveSqlParser.KW_DOUBLE:
			case HiveSqlParser.KW_DUMP:
			case HiveSqlParser.KW_ELEM_TYPE:
			case HiveSqlParser.KW_ENABLE:
			case HiveSqlParser.KW_ENABLED:
			case HiveSqlParser.KW_ENFORCED:
			case HiveSqlParser.KW_ESCAPED:
			case HiveSqlParser.KW_EVERY:
			case HiveSqlParser.KW_EXCLUSIVE:
			case HiveSqlParser.KW_EXECUTE:
			case HiveSqlParser.KW_EXECUTED:
			case HiveSqlParser.KW_EXPIRE_SNAPSHOTS:
			case HiveSqlParser.KW_EXPLAIN:
			case HiveSqlParser.KW_EXPORT:
			case HiveSqlParser.KW_EXPRESSION:
			case HiveSqlParser.KW_EXTRACT:
			case HiveSqlParser.KW_FALSE:
			case HiveSqlParser.KW_FIELDS:
			case HiveSqlParser.KW_FILE:
			case HiveSqlParser.KW_FILEFORMAT:
			case HiveSqlParser.KW_FIRST:
			case HiveSqlParser.KW_FLOAT:
			case HiveSqlParser.KW_FLOOR:
			case HiveSqlParser.KW_FORMAT:
			case HiveSqlParser.KW_FORMATTED:
			case HiveSqlParser.KW_FUNCTIONS:
			case HiveSqlParser.KW_GROUPING:
			case HiveSqlParser.KW_HOLD_DDLTIME:
			case HiveSqlParser.KW_HOUR:
			case HiveSqlParser.KW_HOURS:
			case HiveSqlParser.KW_IDXPROPERTIES:
			case HiveSqlParser.KW_IF:
			case HiveSqlParser.KW_IGNORE:
			case HiveSqlParser.KW_IN:
			case HiveSqlParser.KW_INDEX:
			case HiveSqlParser.KW_INDEXES:
			case HiveSqlParser.KW_INPATH:
			case HiveSqlParser.KW_INPUTDRIVER:
			case HiveSqlParser.KW_INPUTFORMAT:
			case HiveSqlParser.KW_INT:
			case HiveSqlParser.KW_INTEGER:
			case HiveSqlParser.KW_INTERVAL:
			case HiveSqlParser.KW_ISOLATION:
			case HiveSqlParser.KW_ITEMS:
			case HiveSqlParser.KW_JAR:
			case HiveSqlParser.KW_JOINCOST:
			case HiveSqlParser.KW_KEY:
			case HiveSqlParser.KW_KEYS:
			case HiveSqlParser.KW_KEY_TYPE:
			case HiveSqlParser.KW_KILL:
			case HiveSqlParser.KW_LAST:
			case HiveSqlParser.KW_LEVEL:
			case HiveSqlParser.KW_LIKE:
			case HiveSqlParser.KW_LIMIT:
			case HiveSqlParser.KW_LINES:
			case HiveSqlParser.KW_LOAD:
			case HiveSqlParser.KW_LOCATION:
			case HiveSqlParser.KW_LOCK:
			case HiveSqlParser.KW_LOCKS:
			case HiveSqlParser.KW_LOGICAL:
			case HiveSqlParser.KW_LONG:
			case HiveSqlParser.KW_MANAGED:
			case HiveSqlParser.KW_MANAGEDLOCATION:
			case HiveSqlParser.KW_MANAGEMENT:
			case HiveSqlParser.KW_MAP:
			case HiveSqlParser.KW_MAPJOIN:
			case HiveSqlParser.KW_MAPPING:
			case HiveSqlParser.KW_MATCHED:
			case HiveSqlParser.KW_MATERIALIZED:
			case HiveSqlParser.KW_METADATA:
			case HiveSqlParser.KW_MINUTE:
			case HiveSqlParser.KW_MINUTES:
			case HiveSqlParser.KW_MONTH:
			case HiveSqlParser.KW_MONTHS:
			case HiveSqlParser.KW_MOVE:
			case HiveSqlParser.KW_MSCK:
			case HiveSqlParser.KW_NORELY:
			case HiveSqlParser.KW_NOSCAN:
			case HiveSqlParser.KW_NOT:
			case HiveSqlParser.KW_NOVALIDATE:
			case HiveSqlParser.KW_NO_DROP:
			case HiveSqlParser.KW_NULL:
			case HiveSqlParser.KW_NULLS:
			case HiveSqlParser.KW_OFFLINE:
			case HiveSqlParser.KW_OFFSET:
			case HiveSqlParser.KW_OPERATOR:
			case HiveSqlParser.KW_OPTION:
			case HiveSqlParser.KW_OR:
			case HiveSqlParser.KW_OUTPUTDRIVER:
			case HiveSqlParser.KW_OUTPUTFORMAT:
			case HiveSqlParser.KW_OVERWRITE:
			case HiveSqlParser.KW_OWNER:
			case HiveSqlParser.KW_PARTITIONED:
			case HiveSqlParser.KW_PARTITIONS:
			case HiveSqlParser.KW_PATH:
			case HiveSqlParser.KW_PLAN:
			case HiveSqlParser.KW_PLANS:
			case HiveSqlParser.KW_PLUS:
			case HiveSqlParser.KW_POOL:
			case HiveSqlParser.KW_PRINCIPALS:
			case HiveSqlParser.KW_PROTECTION:
			case HiveSqlParser.KW_PURGE:
			case HiveSqlParser.KW_QUARTER:
			case HiveSqlParser.KW_QUERY:
			case HiveSqlParser.KW_QUERY_PARALLELISM:
			case HiveSqlParser.KW_READ:
			case HiveSqlParser.KW_READONLY:
			case HiveSqlParser.KW_REAL:
			case HiveSqlParser.KW_REBUILD:
			case HiveSqlParser.KW_RECORDREADER:
			case HiveSqlParser.KW_RECORDWRITER:
			case HiveSqlParser.KW_REGEXP:
			case HiveSqlParser.KW_RELOAD:
			case HiveSqlParser.KW_RELY:
			case HiveSqlParser.KW_REMOTE:
			case HiveSqlParser.KW_RENAME:
			case HiveSqlParser.KW_REOPTIMIZATION:
			case HiveSqlParser.KW_REPAIR:
			case HiveSqlParser.KW_REPL:
			case HiveSqlParser.KW_REPLACE:
			case HiveSqlParser.KW_REPLICATION:
			case HiveSqlParser.KW_RESOURCE:
			case HiveSqlParser.KW_RESPECT:
			case HiveSqlParser.KW_RESTRICT:
			case HiveSqlParser.KW_REWRITE:
			case HiveSqlParser.KW_RLIKE:
			case HiveSqlParser.KW_ROLE:
			case HiveSqlParser.KW_ROLES:
			case HiveSqlParser.KW_SCHEDULED:
			case HiveSqlParser.KW_SCHEDULING_POLICY:
			case HiveSqlParser.KW_SCHEMA:
			case HiveSqlParser.KW_SCHEMAS:
			case HiveSqlParser.KW_SECOND:
			case HiveSqlParser.KW_SECONDS:
			case HiveSqlParser.KW_SEMI:
			case HiveSqlParser.KW_SERDE:
			case HiveSqlParser.KW_SERDEPROPERTIES:
			case HiveSqlParser.KW_SERVER:
			case HiveSqlParser.KW_SETS:
			case HiveSqlParser.KW_SET_CURRENT_SNAPSHOT:
			case HiveSqlParser.KW_SHARED:
			case HiveSqlParser.KW_SHOW:
			case HiveSqlParser.KW_SHOW_DATABASE:
			case HiveSqlParser.KW_SKEWED:
			case HiveSqlParser.KW_SMALLINT:
			case HiveSqlParser.KW_SNAPSHOT:
			case HiveSqlParser.KW_SORT:
			case HiveSqlParser.KW_SORTED:
			case HiveSqlParser.KW_SPEC:
			case HiveSqlParser.KW_SSL:
			case HiveSqlParser.KW_STATISTICS:
			case HiveSqlParser.KW_STATUS:
			case HiveSqlParser.KW_STORED:
			case HiveSqlParser.KW_STREAMTABLE:
			case HiveSqlParser.KW_STRING:
			case HiveSqlParser.KW_STRUCT:
			case HiveSqlParser.KW_SUMMARY:
			case HiveSqlParser.KW_SYSTEM_TIME:
			case HiveSqlParser.KW_SYSTEM_VERSION:
			case HiveSqlParser.KW_TABLES:
			case HiveSqlParser.KW_TBLPROPERTIES:
			case HiveSqlParser.KW_TEMPORARY:
			case HiveSqlParser.KW_TERMINATED:
			case HiveSqlParser.KW_TIMESTAMP:
			case HiveSqlParser.KW_TIMESTAMPLOCALTZ:
			case HiveSqlParser.KW_TIMESTAMPTZ:
			case HiveSqlParser.KW_TINYINT:
			case HiveSqlParser.KW_TOUCH:
			case HiveSqlParser.KW_TRANSACTION:
			case HiveSqlParser.KW_TRANSACTIONAL:
			case HiveSqlParser.KW_TRANSACTIONS:
			case HiveSqlParser.KW_TRIM:
			case HiveSqlParser.KW_TRUE:
			case HiveSqlParser.KW_TYPE:
			case HiveSqlParser.KW_UNARCHIVE:
			case HiveSqlParser.KW_UNDO:
			case HiveSqlParser.KW_UNIONTYPE:
			case HiveSqlParser.KW_UNKNOWN:
			case HiveSqlParser.KW_UNLOCK:
			case HiveSqlParser.KW_UNMANAGED:
			case HiveSqlParser.KW_UNSET:
			case HiveSqlParser.KW_UNSIGNED:
			case HiveSqlParser.KW_URI:
			case HiveSqlParser.KW_URL:
			case HiveSqlParser.KW_USE:
			case HiveSqlParser.KW_UTC:
			case HiveSqlParser.KW_UTCTIMESTAMP:
			case HiveSqlParser.KW_VALIDATE:
			case HiveSqlParser.KW_VALUE_TYPE:
			case HiveSqlParser.KW_VECTORIZATION:
			case HiveSqlParser.KW_VIEW:
			case HiveSqlParser.KW_VIEWS:
			case HiveSqlParser.KW_WAIT:
			case HiveSqlParser.KW_WEEK:
			case HiveSqlParser.KW_WEEKS:
			case HiveSqlParser.KW_WHEN:
			case HiveSqlParser.KW_WHILE:
			case HiveSqlParser.KW_WITHIN:
			case HiveSqlParser.KW_WORK:
			case HiveSqlParser.KW_WORKLOAD:
			case HiveSqlParser.KW_WRITE:
			case HiveSqlParser.KW_YEAR:
			case HiveSqlParser.KW_YEARS:
			case HiveSqlParser.KW_ZONE:
			case HiveSqlParser.LPAREN:
			case HiveSqlParser.EQUAL:
			case HiveSqlParser.EQUAL_NS:
			case HiveSqlParser.NOTEQUAL:
			case HiveSqlParser.LESSTHANOREQUALTO:
			case HiveSqlParser.LESSTHAN:
			case HiveSqlParser.GREATERTHANOREQUALTO:
			case HiveSqlParser.GREATERTHAN:
			case HiveSqlParser.DIVIDE:
			case HiveSqlParser.PLUS:
			case HiveSqlParser.MINUS:
			case HiveSqlParser.STAR:
			case HiveSqlParser.MOD:
			case HiveSqlParser.DIV:
			case HiveSqlParser.BITWISENOT:
			case HiveSqlParser.AMPERSAND:
			case HiveSqlParser.TILDE:
			case HiveSqlParser.BITWISEOR:
			case HiveSqlParser.BITWISEXOR:
			case HiveSqlParser.QUESTION:
			case HiveSqlParser.StringLiteral:
			case HiveSqlParser.IntegralLiteral:
			case HiveSqlParser.NumberLiteral:
			case HiveSqlParser.Number:
			case HiveSqlParser.Identifier:
			case HiveSqlParser.CharSetName:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 4967;
				this.precedenceSimilarExpressionMain();
				}
				break;
			case HiveSqlParser.KW_EXISTS:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 4968;
				this.match(HiveSqlParser.KW_EXISTS);
				this.state = 4969;
				this.subQueryExpression();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public precedenceSimilarExpressionMain(): PrecedenceSimilarExpressionMainContext {
		let _localctx: PrecedenceSimilarExpressionMainContext = new PrecedenceSimilarExpressionMainContext(this._ctx, this.state);
		this.enterRule(_localctx, 870, HiveSqlParser.RULE_precedenceSimilarExpressionMain);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4972;
			_localctx._a = this.precedenceBitwiseOrExpression();
			this.state = 4974;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 596, this._ctx) ) {
			case 1:
				{
				this.state = 4973;
				_localctx._part = this.precedenceSimilarExpressionPart();
				}
				break;
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public precedenceSimilarExpressionPart(): PrecedenceSimilarExpressionPartContext {
		let _localctx: PrecedenceSimilarExpressionPartContext = new PrecedenceSimilarExpressionPartContext(this._ctx, this.state);
		this.enterRule(_localctx, 872, HiveSqlParser.RULE_precedenceSimilarExpressionPart);
		try {
			this.state = 4982;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 597, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 4976;
				this.precedenceSimilarOperator();
				this.state = 4977;
				_localctx._equalExpr = this.precedenceBitwiseOrExpression();
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 4979;
				this.precedenceSimilarExpressionAtom();
				}
				break;

			case 3:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 4980;
				this.match(HiveSqlParser.KW_NOT);
				this.state = 4981;
				this.precedenceSimilarExpressionPartNot();
				}
				break;
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public precedenceSimilarExpressionAtom(): PrecedenceSimilarExpressionAtomContext {
		let _localctx: PrecedenceSimilarExpressionAtomContext = new PrecedenceSimilarExpressionAtomContext(this._ctx, this.state);
		this.enterRule(_localctx, 874, HiveSqlParser.RULE_precedenceSimilarExpressionAtom);
		let _la: number;
		try {
			this.state = 4995;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case HiveSqlParser.KW_IN:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 4984;
				this.match(HiveSqlParser.KW_IN);
				this.state = 4985;
				this.precedenceSimilarExpressionIn();
				}
				break;
			case HiveSqlParser.KW_BETWEEN:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 4986;
				this.match(HiveSqlParser.KW_BETWEEN);
				this.state = 4987;
				_localctx._min = this.precedenceBitwiseOrExpression();
				this.state = 4988;
				this.match(HiveSqlParser.KW_AND);
				this.state = 4989;
				_localctx._max = this.precedenceBitwiseOrExpression();
				}
				break;
			case HiveSqlParser.KW_LIKE:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 4991;
				this.match(HiveSqlParser.KW_LIKE);
				this.state = 4992;
				_la = this._input.LA(1);
				if (!(_la === HiveSqlParser.KW_ALL || _la === HiveSqlParser.KW_ANY)) {
				this._errHandler.recoverInline(this);
				} else {
					if (this._input.LA(1) === Token.EOF) {
						this.matchedEOF = true;
					}

					this._errHandler.reportMatch(this);
					this.consume();
				}
				this.state = 4993;
				_localctx._expr = this.expressionsInParenthesis();
				}
				break;
			case HiveSqlParser.EQUAL:
			case HiveSqlParser.NOTEQUAL:
			case HiveSqlParser.LESSTHANOREQUALTO:
			case HiveSqlParser.LESSTHAN:
			case HiveSqlParser.GREATERTHANOREQUALTO:
			case HiveSqlParser.GREATERTHAN:
				this.enterOuterAlt(_localctx, 4);
				{
				this.state = 4994;
				this.precedenceSimilarExpressionQuantifierPredicate();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public precedenceSimilarExpressionQuantifierPredicate(): PrecedenceSimilarExpressionQuantifierPredicateContext {
		let _localctx: PrecedenceSimilarExpressionQuantifierPredicateContext = new PrecedenceSimilarExpressionQuantifierPredicateContext(this._ctx, this.state);
		this.enterRule(_localctx, 876, HiveSqlParser.RULE_precedenceSimilarExpressionQuantifierPredicate);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4997;
			this.subQuerySelectorOperator();
			this.state = 4998;
			this.quantifierType();
			this.state = 4999;
			this.subQueryExpression();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public quantifierType(): QuantifierTypeContext {
		let _localctx: QuantifierTypeContext = new QuantifierTypeContext(this._ctx, this.state);
		this.enterRule(_localctx, 878, HiveSqlParser.RULE_quantifierType);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 5001;
			_la = this._input.LA(1);
			if (!(_la === HiveSqlParser.KW_ALL || _la === HiveSqlParser.KW_ANY || _la === HiveSqlParser.KW_SOME)) {
			this._errHandler.recoverInline(this);
			} else {
				if (this._input.LA(1) === Token.EOF) {
					this.matchedEOF = true;
				}

				this._errHandler.reportMatch(this);
				this.consume();
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public precedenceSimilarExpressionIn(): PrecedenceSimilarExpressionInContext {
		let _localctx: PrecedenceSimilarExpressionInContext = new PrecedenceSimilarExpressionInContext(this._ctx, this.state);
		this.enterRule(_localctx, 880, HiveSqlParser.RULE_precedenceSimilarExpressionIn);
		try {
			this.state = 5005;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 599, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 5003;
				this.subQueryExpression();
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 5004;
				_localctx._expr = this.expressionsInParenthesis();
				}
				break;
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public precedenceSimilarExpressionPartNot(): PrecedenceSimilarExpressionPartNotContext {
		let _localctx: PrecedenceSimilarExpressionPartNotContext = new PrecedenceSimilarExpressionPartNotContext(this._ctx, this.state);
		this.enterRule(_localctx, 882, HiveSqlParser.RULE_precedenceSimilarExpressionPartNot);
		try {
			this.state = 5011;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 600, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 5007;
				this.precedenceRegexpOperator();
				this.state = 5008;
				_localctx._notExpr = this.precedenceBitwiseOrExpression();
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 5010;
				this.precedenceSimilarExpressionAtom();
				}
				break;
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public precedenceDistinctOperator(): PrecedenceDistinctOperatorContext {
		let _localctx: PrecedenceDistinctOperatorContext = new PrecedenceDistinctOperatorContext(this._ctx, this.state);
		this.enterRule(_localctx, 884, HiveSqlParser.RULE_precedenceDistinctOperator);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 5013;
			this.match(HiveSqlParser.KW_IS);
			this.state = 5014;
			this.match(HiveSqlParser.KW_DISTINCT);
			this.state = 5015;
			this.match(HiveSqlParser.KW_FROM);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public precedenceEqualOperator(): PrecedenceEqualOperatorContext {
		let _localctx: PrecedenceEqualOperatorContext = new PrecedenceEqualOperatorContext(this._ctx, this.state);
		this.enterRule(_localctx, 886, HiveSqlParser.RULE_precedenceEqualOperator);
		try {
			this.state = 5024;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case HiveSqlParser.EQUAL:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 5017;
				this.match(HiveSqlParser.EQUAL);
				}
				break;
			case HiveSqlParser.EQUAL_NS:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 5018;
				this.match(HiveSqlParser.EQUAL_NS);
				}
				break;
			case HiveSqlParser.NOTEQUAL:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 5019;
				this.match(HiveSqlParser.NOTEQUAL);
				}
				break;
			case HiveSqlParser.KW_IS:
				this.enterOuterAlt(_localctx, 4);
				{
				this.state = 5020;
				this.match(HiveSqlParser.KW_IS);
				this.state = 5021;
				this.match(HiveSqlParser.KW_NOT);
				this.state = 5022;
				this.match(HiveSqlParser.KW_DISTINCT);
				this.state = 5023;
				this.match(HiveSqlParser.KW_FROM);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public precedenceEqualExpression(): PrecedenceEqualExpressionContext {
		let _localctx: PrecedenceEqualExpressionContext = new PrecedenceEqualExpressionContext(this._ctx, this.state);
		this.enterRule(_localctx, 888, HiveSqlParser.RULE_precedenceEqualExpression);
		try {
			let _alt: number;
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 5026;
			this.precedenceSimilarExpression();
			this.state = 5035;
			this._errHandler.sync(this);
			_alt = this.interpreter.adaptivePredict(this._input, 603, this._ctx);
			while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) {
				if (_alt === 1) {
					{
					this.state = 5033;
					this._errHandler.sync(this);
					switch ( this.interpreter.adaptivePredict(this._input, 602, this._ctx) ) {
					case 1:
						{
						this.state = 5027;
						_localctx._precedenceEqualOperator = this.precedenceEqualOperator();
						_localctx._equal.push(_localctx._precedenceEqualOperator);
						this.state = 5028;
						_localctx._precedenceSimilarExpression = this.precedenceSimilarExpression();
						_localctx._p.push(_localctx._precedenceSimilarExpression);
						}
						break;

					case 2:
						{
						this.state = 5030;
						_localctx._precedenceDistinctOperator = this.precedenceDistinctOperator();
						_localctx._dist.push(_localctx._precedenceDistinctOperator);
						this.state = 5031;
						_localctx._precedenceSimilarExpression = this.precedenceSimilarExpression();
						_localctx._p.push(_localctx._precedenceSimilarExpression);
						}
						break;
					}
					}
				}
				this.state = 5037;
				this._errHandler.sync(this);
				_alt = this.interpreter.adaptivePredict(this._input, 603, this._ctx);
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public isCondition(): IsConditionContext {
		let _localctx: IsConditionContext = new IsConditionContext(this._ctx, this.state);
		this.enterRule(_localctx, 890, HiveSqlParser.RULE_isCondition);
		try {
			this.state = 5050;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 604, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 5038;
				this.match(HiveSqlParser.KW_NULL);
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 5039;
				this.match(HiveSqlParser.KW_TRUE);
				}
				break;

			case 3:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 5040;
				this.match(HiveSqlParser.KW_FALSE);
				}
				break;

			case 4:
				this.enterOuterAlt(_localctx, 4);
				{
				this.state = 5041;
				this.match(HiveSqlParser.KW_UNKNOWN);
				}
				break;

			case 5:
				this.enterOuterAlt(_localctx, 5);
				{
				this.state = 5042;
				this.match(HiveSqlParser.KW_NOT);
				this.state = 5043;
				this.match(HiveSqlParser.KW_NULL);
				}
				break;

			case 6:
				this.enterOuterAlt(_localctx, 6);
				{
				this.state = 5044;
				this.match(HiveSqlParser.KW_NOT);
				this.state = 5045;
				this.match(HiveSqlParser.KW_TRUE);
				}
				break;

			case 7:
				this.enterOuterAlt(_localctx, 7);
				{
				this.state = 5046;
				this.match(HiveSqlParser.KW_NOT);
				this.state = 5047;
				this.match(HiveSqlParser.KW_FALSE);
				}
				break;

			case 8:
				this.enterOuterAlt(_localctx, 8);
				{
				this.state = 5048;
				this.match(HiveSqlParser.KW_NOT);
				this.state = 5049;
				this.match(HiveSqlParser.KW_UNKNOWN);
				}
				break;
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public precedenceUnarySuffixExpression(): PrecedenceUnarySuffixExpressionContext {
		let _localctx: PrecedenceUnarySuffixExpressionContext = new PrecedenceUnarySuffixExpressionContext(this._ctx, this.state);
		this.enterRule(_localctx, 892, HiveSqlParser.RULE_precedenceUnarySuffixExpression);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 5052;
			this.precedenceEqualExpression();
			this.state = 5055;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === HiveSqlParser.KW_IS) {
				{
				this.state = 5053;
				_localctx._a = this.match(HiveSqlParser.KW_IS);
				this.state = 5054;
				this.isCondition();
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public precedenceNotOperator(): PrecedenceNotOperatorContext {
		let _localctx: PrecedenceNotOperatorContext = new PrecedenceNotOperatorContext(this._ctx, this.state);
		this.enterRule(_localctx, 894, HiveSqlParser.RULE_precedenceNotOperator);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 5057;
			this.match(HiveSqlParser.KW_NOT);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public precedenceNotExpression(): PrecedenceNotExpressionContext {
		let _localctx: PrecedenceNotExpressionContext = new PrecedenceNotExpressionContext(this._ctx, this.state);
		this.enterRule(_localctx, 896, HiveSqlParser.RULE_precedenceNotExpression);
		try {
			let _alt: number;
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 5062;
			this._errHandler.sync(this);
			_alt = this.interpreter.adaptivePredict(this._input, 606, this._ctx);
			while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) {
				if (_alt === 1) {
					{
					{
					this.state = 5059;
					this.precedenceNotOperator();
					}
					}
				}
				this.state = 5064;
				this._errHandler.sync(this);
				_alt = this.interpreter.adaptivePredict(this._input, 606, this._ctx);
			}
			this.state = 5065;
			this.precedenceUnarySuffixExpression();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public precedenceAndOperator(): PrecedenceAndOperatorContext {
		let _localctx: PrecedenceAndOperatorContext = new PrecedenceAndOperatorContext(this._ctx, this.state);
		this.enterRule(_localctx, 898, HiveSqlParser.RULE_precedenceAndOperator);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 5067;
			this.match(HiveSqlParser.KW_AND);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public precedenceAndExpression(): PrecedenceAndExpressionContext {
		let _localctx: PrecedenceAndExpressionContext = new PrecedenceAndExpressionContext(this._ctx, this.state);
		this.enterRule(_localctx, 900, HiveSqlParser.RULE_precedenceAndExpression);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 5069;
			this.precedenceNotExpression();
			this.state = 5075;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === HiveSqlParser.KW_AND) {
				{
				{
				this.state = 5070;
				this.precedenceAndOperator();
				this.state = 5071;
				this.precedenceNotExpression();
				}
				}
				this.state = 5077;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public precedenceOrOperator(): PrecedenceOrOperatorContext {
		let _localctx: PrecedenceOrOperatorContext = new PrecedenceOrOperatorContext(this._ctx, this.state);
		this.enterRule(_localctx, 902, HiveSqlParser.RULE_precedenceOrOperator);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 5078;
			this.match(HiveSqlParser.KW_OR);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public precedenceOrExpression(): PrecedenceOrExpressionContext {
		let _localctx: PrecedenceOrExpressionContext = new PrecedenceOrExpressionContext(this._ctx, this.state);
		this.enterRule(_localctx, 904, HiveSqlParser.RULE_precedenceOrExpression);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 5080;
			this.precedenceAndExpression();
			this.state = 5086;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === HiveSqlParser.KW_OR) {
				{
				{
				this.state = 5081;
				this.precedenceOrOperator();
				this.state = 5082;
				this.precedenceAndExpression();
				}
				}
				this.state = 5088;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public booleanValue(): BooleanValueContext {
		let _localctx: BooleanValueContext = new BooleanValueContext(this._ctx, this.state);
		this.enterRule(_localctx, 906, HiveSqlParser.RULE_booleanValue);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 5089;
			_la = this._input.LA(1);
			if (!(_la === HiveSqlParser.KW_FALSE || _la === HiveSqlParser.KW_TRUE)) {
			this._errHandler.recoverInline(this);
			} else {
				if (this._input.LA(1) === Token.EOF) {
					this.matchedEOF = true;
				}

				this._errHandler.reportMatch(this);
				this.consume();
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public booleanValueTok(): BooleanValueTokContext {
		let _localctx: BooleanValueTokContext = new BooleanValueTokContext(this._ctx, this.state);
		this.enterRule(_localctx, 908, HiveSqlParser.RULE_booleanValueTok);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 5091;
			_la = this._input.LA(1);
			if (!(_la === HiveSqlParser.KW_FALSE || _la === HiveSqlParser.KW_TRUE)) {
			this._errHandler.recoverInline(this);
			} else {
				if (this._input.LA(1) === Token.EOF) {
					this.matchedEOF = true;
				}

				this._errHandler.reportMatch(this);
				this.consume();
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public tableOrPartition(): TableOrPartitionContext {
		let _localctx: TableOrPartitionContext = new TableOrPartitionContext(this._ctx, this.state);
		this.enterRule(_localctx, 910, HiveSqlParser.RULE_tableOrPartition);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 5093;
			this.tableName();
			this.state = 5095;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === HiveSqlParser.KW_PARTITION) {
				{
				this.state = 5094;
				this.partitionSpec();
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public partitionSpec(): PartitionSpecContext {
		let _localctx: PartitionSpecContext = new PartitionSpecContext(this._ctx, this.state);
		this.enterRule(_localctx, 912, HiveSqlParser.RULE_partitionSpec);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 5097;
			this.match(HiveSqlParser.KW_PARTITION);
			this.state = 5098;
			this.match(HiveSqlParser.LPAREN);
			this.state = 5099;
			this.partitionVal();
			this.state = 5104;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === HiveSqlParser.COMMA) {
				{
				{
				this.state = 5100;
				this.match(HiveSqlParser.COMMA);
				this.state = 5101;
				this.partitionVal();
				}
				}
				this.state = 5106;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			}
			this.state = 5107;
			this.match(HiveSqlParser.RPAREN);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public partitionVal(): PartitionValContext {
		let _localctx: PartitionValContext = new PartitionValContext(this._ctx, this.state);
		this.enterRule(_localctx, 914, HiveSqlParser.RULE_partitionVal);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 5109;
			this.id_();
			this.state = 5112;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === HiveSqlParser.EQUAL) {
				{
				this.state = 5110;
				this.match(HiveSqlParser.EQUAL);
				this.state = 5111;
				this.constant();
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public partitionSelectorSpec(): PartitionSelectorSpecContext {
		let _localctx: PartitionSelectorSpecContext = new PartitionSelectorSpecContext(this._ctx, this.state);
		this.enterRule(_localctx, 916, HiveSqlParser.RULE_partitionSelectorSpec);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 5114;
			this.match(HiveSqlParser.LPAREN);
			this.state = 5115;
			this.partitionSelectorVal();
			this.state = 5120;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === HiveSqlParser.COMMA) {
				{
				{
				this.state = 5116;
				this.match(HiveSqlParser.COMMA);
				this.state = 5117;
				this.partitionSelectorVal();
				}
				}
				this.state = 5122;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			}
			this.state = 5123;
			this.match(HiveSqlParser.RPAREN);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public partitionSelectorVal(): PartitionSelectorValContext {
		let _localctx: PartitionSelectorValContext = new PartitionSelectorValContext(this._ctx, this.state);
		this.enterRule(_localctx, 918, HiveSqlParser.RULE_partitionSelectorVal);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 5125;
			this.id_();
			this.state = 5126;
			this.partitionSelectorOperator();
			this.state = 5127;
			this.constant();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public partitionSelectorOperator(): PartitionSelectorOperatorContext {
		let _localctx: PartitionSelectorOperatorContext = new PartitionSelectorOperatorContext(this._ctx, this.state);
		this.enterRule(_localctx, 920, HiveSqlParser.RULE_partitionSelectorOperator);
		try {
			this.state = 5131;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case HiveSqlParser.KW_LIKE:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 5129;
				this.match(HiveSqlParser.KW_LIKE);
				}
				break;
			case HiveSqlParser.EQUAL:
			case HiveSqlParser.NOTEQUAL:
			case HiveSqlParser.LESSTHANOREQUALTO:
			case HiveSqlParser.LESSTHAN:
			case HiveSqlParser.GREATERTHANOREQUALTO:
			case HiveSqlParser.GREATERTHAN:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 5130;
				this.subQuerySelectorOperator();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public subQuerySelectorOperator(): SubQuerySelectorOperatorContext {
		let _localctx: SubQuerySelectorOperatorContext = new SubQuerySelectorOperatorContext(this._ctx, this.state);
		this.enterRule(_localctx, 922, HiveSqlParser.RULE_subQuerySelectorOperator);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 5133;
			_la = this._input.LA(1);
			if (!(((((_la - 404)) & ~0x1F) === 0 && ((1 << (_la - 404)) & ((1 << (HiveSqlParser.EQUAL - 404)) | (1 << (HiveSqlParser.NOTEQUAL - 404)) | (1 << (HiveSqlParser.LESSTHANOREQUALTO - 404)) | (1 << (HiveSqlParser.LESSTHAN - 404)) | (1 << (HiveSqlParser.GREATERTHANOREQUALTO - 404)) | (1 << (HiveSqlParser.GREATERTHAN - 404)))) !== 0))) {
			this._errHandler.recoverInline(this);
			} else {
				if (this._input.LA(1) === Token.EOF) {
					this.matchedEOF = true;
				}

				this._errHandler.reportMatch(this);
				this.consume();
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public sysFuncNames(): SysFuncNamesContext {
		let _localctx: SysFuncNamesContext = new SysFuncNamesContext(this._ctx, this.state);
		this.enterRule(_localctx, 924, HiveSqlParser.RULE_sysFuncNames);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 5135;
			_la = this._input.LA(1);
			if (!(((((_la - 11)) & ~0x1F) === 0 && ((1 << (_la - 11)) & ((1 << (HiveSqlParser.KW_AND - 11)) | (1 << (HiveSqlParser.KW_ARRAY - 11)) | (1 << (HiveSqlParser.KW_BETWEEN - 11)) | (1 << (HiveSqlParser.KW_BIGINT - 11)) | (1 << (HiveSqlParser.KW_BINARY - 11)) | (1 << (HiveSqlParser.KW_BOOLEAN - 11)) | (1 << (HiveSqlParser.KW_CASE - 11)))) !== 0) || _la === HiveSqlParser.KW_DOUBLE || _la === HiveSqlParser.KW_FLOAT || ((((_la - 132)) & ~0x1F) === 0 && ((1 << (_la - 132)) & ((1 << (HiveSqlParser.KW_FLOOR - 132)) | (1 << (HiveSqlParser.KW_IF - 132)) | (1 << (HiveSqlParser.KW_IN - 132)) | (1 << (HiveSqlParser.KW_INT - 132)) | (1 << (HiveSqlParser.KW_INTEGER - 132)))) !== 0) || _la === HiveSqlParser.KW_LIKE || _la === HiveSqlParser.KW_MAP || _la === HiveSqlParser.KW_NOT || _la === HiveSqlParser.KW_OR || ((((_la - 263)) & ~0x1F) === 0 && ((1 << (_la - 263)) & ((1 << (HiveSqlParser.KW_REAL - 263)) | (1 << (HiveSqlParser.KW_REGEXP - 263)) | (1 << (HiveSqlParser.KW_RLIKE - 263)))) !== 0) || ((((_la - 310)) & ~0x1F) === 0 && ((1 << (_la - 310)) & ((1 << (HiveSqlParser.KW_SMALLINT - 310)) | (1 << (HiveSqlParser.KW_STRING - 310)) | (1 << (HiveSqlParser.KW_STRUCT - 310)) | (1 << (HiveSqlParser.KW_TINYINT - 310)))) !== 0) || _la === HiveSqlParser.KW_UNIONTYPE || _la === HiveSqlParser.KW_WHEN || ((((_la - 404)) & ~0x1F) === 0 && ((1 << (_la - 404)) & ((1 << (HiveSqlParser.EQUAL - 404)) | (1 << (HiveSqlParser.EQUAL_NS - 404)) | (1 << (HiveSqlParser.NOTEQUAL - 404)) | (1 << (HiveSqlParser.LESSTHANOREQUALTO - 404)) | (1 << (HiveSqlParser.LESSTHAN - 404)) | (1 << (HiveSqlParser.GREATERTHANOREQUALTO - 404)) | (1 << (HiveSqlParser.GREATERTHAN - 404)) | (1 << (HiveSqlParser.DIVIDE - 404)) | (1 << (HiveSqlParser.PLUS - 404)) | (1 << (HiveSqlParser.MINUS - 404)) | (1 << (HiveSqlParser.STAR - 404)) | (1 << (HiveSqlParser.MOD - 404)) | (1 << (HiveSqlParser.DIV - 404)) | (1 << (HiveSqlParser.AMPERSAND - 404)) | (1 << (HiveSqlParser.TILDE - 404)) | (1 << (HiveSqlParser.BITWISEOR - 404)) | (1 << (HiveSqlParser.BITWISEXOR - 404)))) !== 0))) {
			this._errHandler.recoverInline(this);
			} else {
				if (this._input.LA(1) === Token.EOF) {
					this.matchedEOF = true;
				}

				this._errHandler.reportMatch(this);
				this.consume();
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public id_(): Id_Context {
		let _localctx: Id_Context = new Id_Context(this._ctx, this.state);
		this.enterRule(_localctx, 926, HiveSqlParser.RULE_id_);
		try {
			this.state = 5139;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case HiveSqlParser.Identifier:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 5137;
				this.match(HiveSqlParser.Identifier);
				}
				break;
			case HiveSqlParser.KW_ABORT:
			case HiveSqlParser.KW_ACTIVATE:
			case HiveSqlParser.KW_ACTIVE:
			case HiveSqlParser.KW_ADD:
			case HiveSqlParser.KW_ADMIN:
			case HiveSqlParser.KW_AFTER:
			case HiveSqlParser.KW_ALLOC_FRACTION:
			case HiveSqlParser.KW_ANALYZE:
			case HiveSqlParser.KW_ARCHIVE:
			case HiveSqlParser.KW_ASC:
			case HiveSqlParser.KW_AST:
			case HiveSqlParser.KW_AT:
			case HiveSqlParser.KW_AUTOCOMMIT:
			case HiveSqlParser.KW_BATCH:
			case HiveSqlParser.KW_BEFORE:
			case HiveSqlParser.KW_BUCKET:
			case HiveSqlParser.KW_BUCKETS:
			case HiveSqlParser.KW_CACHE:
			case HiveSqlParser.KW_CASCADE:
			case HiveSqlParser.KW_CBO:
			case HiveSqlParser.KW_CHANGE:
			case HiveSqlParser.KW_CHECK:
			case HiveSqlParser.KW_CLUSTER:
			case HiveSqlParser.KW_CLUSTERED:
			case HiveSqlParser.KW_CLUSTERSTATUS:
			case HiveSqlParser.KW_COLLECTION:
			case HiveSqlParser.KW_COLUMNS:
			case HiveSqlParser.KW_COMMENT:
			case HiveSqlParser.KW_COMPACT:
			case HiveSqlParser.KW_COMPACTIONS:
			case HiveSqlParser.KW_COMPUTE:
			case HiveSqlParser.KW_CONCATENATE:
			case HiveSqlParser.KW_CONTINUE:
			case HiveSqlParser.KW_COST:
			case HiveSqlParser.KW_CRON:
			case HiveSqlParser.KW_DATA:
			case HiveSqlParser.KW_DATABASES:
			case HiveSqlParser.KW_DATETIME:
			case HiveSqlParser.KW_DAY:
			case HiveSqlParser.KW_DAYS:
			case HiveSqlParser.KW_DAYOFWEEK:
			case HiveSqlParser.KW_DBPROPERTIES:
			case HiveSqlParser.KW_DCPROPERTIES:
			case HiveSqlParser.KW_DEBUG:
			case HiveSqlParser.KW_DEFAULT:
			case HiveSqlParser.KW_DEFERRED:
			case HiveSqlParser.KW_DEFINED:
			case HiveSqlParser.KW_DELIMITED:
			case HiveSqlParser.KW_DEPENDENCY:
			case HiveSqlParser.KW_DESC:
			case HiveSqlParser.KW_DETAIL:
			case HiveSqlParser.KW_DIRECTORIES:
			case HiveSqlParser.KW_DIRECTORY:
			case HiveSqlParser.KW_DISABLE:
			case HiveSqlParser.KW_DISABLED:
			case HiveSqlParser.KW_DISTRIBUTE:
			case HiveSqlParser.KW_DISTRIBUTED:
			case HiveSqlParser.KW_DO:
			case HiveSqlParser.KW_DUMP:
			case HiveSqlParser.KW_ELEM_TYPE:
			case HiveSqlParser.KW_ENABLE:
			case HiveSqlParser.KW_ENABLED:
			case HiveSqlParser.KW_ENFORCED:
			case HiveSqlParser.KW_ESCAPED:
			case HiveSqlParser.KW_EVERY:
			case HiveSqlParser.KW_EXCLUSIVE:
			case HiveSqlParser.KW_EXECUTE:
			case HiveSqlParser.KW_EXECUTED:
			case HiveSqlParser.KW_EXPIRE_SNAPSHOTS:
			case HiveSqlParser.KW_EXPLAIN:
			case HiveSqlParser.KW_EXPORT:
			case HiveSqlParser.KW_EXPRESSION:
			case HiveSqlParser.KW_FIELDS:
			case HiveSqlParser.KW_FILE:
			case HiveSqlParser.KW_FILEFORMAT:
			case HiveSqlParser.KW_FIRST:
			case HiveSqlParser.KW_FORMAT:
			case HiveSqlParser.KW_FORMATTED:
			case HiveSqlParser.KW_FUNCTIONS:
			case HiveSqlParser.KW_HOLD_DDLTIME:
			case HiveSqlParser.KW_HOUR:
			case HiveSqlParser.KW_HOURS:
			case HiveSqlParser.KW_IDXPROPERTIES:
			case HiveSqlParser.KW_IGNORE:
			case HiveSqlParser.KW_INDEX:
			case HiveSqlParser.KW_INDEXES:
			case HiveSqlParser.KW_INPATH:
			case HiveSqlParser.KW_INPUTDRIVER:
			case HiveSqlParser.KW_INPUTFORMAT:
			case HiveSqlParser.KW_ISOLATION:
			case HiveSqlParser.KW_ITEMS:
			case HiveSqlParser.KW_JAR:
			case HiveSqlParser.KW_JOINCOST:
			case HiveSqlParser.KW_KEY:
			case HiveSqlParser.KW_KEYS:
			case HiveSqlParser.KW_KEY_TYPE:
			case HiveSqlParser.KW_KILL:
			case HiveSqlParser.KW_LAST:
			case HiveSqlParser.KW_LEVEL:
			case HiveSqlParser.KW_LIMIT:
			case HiveSqlParser.KW_LINES:
			case HiveSqlParser.KW_LOAD:
			case HiveSqlParser.KW_LOCATION:
			case HiveSqlParser.KW_LOCK:
			case HiveSqlParser.KW_LOCKS:
			case HiveSqlParser.KW_LOGICAL:
			case HiveSqlParser.KW_LONG:
			case HiveSqlParser.KW_MANAGED:
			case HiveSqlParser.KW_MANAGEDLOCATION:
			case HiveSqlParser.KW_MANAGEMENT:
			case HiveSqlParser.KW_MAPJOIN:
			case HiveSqlParser.KW_MAPPING:
			case HiveSqlParser.KW_MATCHED:
			case HiveSqlParser.KW_MATERIALIZED:
			case HiveSqlParser.KW_METADATA:
			case HiveSqlParser.KW_MINUTE:
			case HiveSqlParser.KW_MINUTES:
			case HiveSqlParser.KW_MONTH:
			case HiveSqlParser.KW_MONTHS:
			case HiveSqlParser.KW_MOVE:
			case HiveSqlParser.KW_MSCK:
			case HiveSqlParser.KW_NORELY:
			case HiveSqlParser.KW_NOSCAN:
			case HiveSqlParser.KW_NOVALIDATE:
			case HiveSqlParser.KW_NO_DROP:
			case HiveSqlParser.KW_NULLS:
			case HiveSqlParser.KW_OFFLINE:
			case HiveSqlParser.KW_OFFSET:
			case HiveSqlParser.KW_OPERATOR:
			case HiveSqlParser.KW_OPTION:
			case HiveSqlParser.KW_OUTPUTDRIVER:
			case HiveSqlParser.KW_OUTPUTFORMAT:
			case HiveSqlParser.KW_OVERWRITE:
			case HiveSqlParser.KW_OWNER:
			case HiveSqlParser.KW_PARTITIONED:
			case HiveSqlParser.KW_PARTITIONS:
			case HiveSqlParser.KW_PATH:
			case HiveSqlParser.KW_PLAN:
			case HiveSqlParser.KW_PLANS:
			case HiveSqlParser.KW_PLUS:
			case HiveSqlParser.KW_POOL:
			case HiveSqlParser.KW_PRINCIPALS:
			case HiveSqlParser.KW_PROTECTION:
			case HiveSqlParser.KW_PURGE:
			case HiveSqlParser.KW_QUARTER:
			case HiveSqlParser.KW_QUERY:
			case HiveSqlParser.KW_QUERY_PARALLELISM:
			case HiveSqlParser.KW_READ:
			case HiveSqlParser.KW_READONLY:
			case HiveSqlParser.KW_REBUILD:
			case HiveSqlParser.KW_RECORDREADER:
			case HiveSqlParser.KW_RECORDWRITER:
			case HiveSqlParser.KW_RELOAD:
			case HiveSqlParser.KW_RELY:
			case HiveSqlParser.KW_REMOTE:
			case HiveSqlParser.KW_RENAME:
			case HiveSqlParser.KW_REOPTIMIZATION:
			case HiveSqlParser.KW_REPAIR:
			case HiveSqlParser.KW_REPL:
			case HiveSqlParser.KW_REPLACE:
			case HiveSqlParser.KW_REPLICATION:
			case HiveSqlParser.KW_RESOURCE:
			case HiveSqlParser.KW_RESPECT:
			case HiveSqlParser.KW_RESTRICT:
			case HiveSqlParser.KW_REWRITE:
			case HiveSqlParser.KW_ROLE:
			case HiveSqlParser.KW_ROLES:
			case HiveSqlParser.KW_SCHEDULED:
			case HiveSqlParser.KW_SCHEDULING_POLICY:
			case HiveSqlParser.KW_SCHEMA:
			case HiveSqlParser.KW_SCHEMAS:
			case HiveSqlParser.KW_SECOND:
			case HiveSqlParser.KW_SECONDS:
			case HiveSqlParser.KW_SEMI:
			case HiveSqlParser.KW_SERDE:
			case HiveSqlParser.KW_SERDEPROPERTIES:
			case HiveSqlParser.KW_SERVER:
			case HiveSqlParser.KW_SETS:
			case HiveSqlParser.KW_SET_CURRENT_SNAPSHOT:
			case HiveSqlParser.KW_SHARED:
			case HiveSqlParser.KW_SHOW:
			case HiveSqlParser.KW_SHOW_DATABASE:
			case HiveSqlParser.KW_SKEWED:
			case HiveSqlParser.KW_SNAPSHOT:
			case HiveSqlParser.KW_SORT:
			case HiveSqlParser.KW_SORTED:
			case HiveSqlParser.KW_SPEC:
			case HiveSqlParser.KW_SSL:
			case HiveSqlParser.KW_STATISTICS:
			case HiveSqlParser.KW_STATUS:
			case HiveSqlParser.KW_STORED:
			case HiveSqlParser.KW_STREAMTABLE:
			case HiveSqlParser.KW_STRING:
			case HiveSqlParser.KW_STRUCT:
			case HiveSqlParser.KW_SUMMARY:
			case HiveSqlParser.KW_SYSTEM_TIME:
			case HiveSqlParser.KW_SYSTEM_VERSION:
			case HiveSqlParser.KW_TABLES:
			case HiveSqlParser.KW_TBLPROPERTIES:
			case HiveSqlParser.KW_TEMPORARY:
			case HiveSqlParser.KW_TERMINATED:
			case HiveSqlParser.KW_TIMESTAMPTZ:
			case HiveSqlParser.KW_TINYINT:
			case HiveSqlParser.KW_TOUCH:
			case HiveSqlParser.KW_TRANSACTION:
			case HiveSqlParser.KW_TRANSACTIONAL:
			case HiveSqlParser.KW_TRANSACTIONS:
			case HiveSqlParser.KW_TRIM:
			case HiveSqlParser.KW_TYPE:
			case HiveSqlParser.KW_UNARCHIVE:
			case HiveSqlParser.KW_UNDO:
			case HiveSqlParser.KW_UNIONTYPE:
			case HiveSqlParser.KW_UNKNOWN:
			case HiveSqlParser.KW_UNLOCK:
			case HiveSqlParser.KW_UNMANAGED:
			case HiveSqlParser.KW_UNSET:
			case HiveSqlParser.KW_UNSIGNED:
			case HiveSqlParser.KW_URI:
			case HiveSqlParser.KW_URL:
			case HiveSqlParser.KW_USE:
			case HiveSqlParser.KW_UTC:
			case HiveSqlParser.KW_UTCTIMESTAMP:
			case HiveSqlParser.KW_VALIDATE:
			case HiveSqlParser.KW_VALUE_TYPE:
			case HiveSqlParser.KW_VECTORIZATION:
			case HiveSqlParser.KW_VIEW:
			case HiveSqlParser.KW_VIEWS:
			case HiveSqlParser.KW_WAIT:
			case HiveSqlParser.KW_WEEK:
			case HiveSqlParser.KW_WEEKS:
			case HiveSqlParser.KW_WHILE:
			case HiveSqlParser.KW_WITHIN:
			case HiveSqlParser.KW_WORK:
			case HiveSqlParser.KW_WORKLOAD:
			case HiveSqlParser.KW_WRITE:
			case HiveSqlParser.KW_YEAR:
			case HiveSqlParser.KW_YEARS:
			case HiveSqlParser.KW_ZONE:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 5138;
				this.nonReserved();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public functionIdentifier(): FunctionIdentifierContext {
		let _localctx: FunctionIdentifierContext = new FunctionIdentifierContext(this._ctx, this.state);
		this.enterRule(_localctx, 928, HiveSqlParser.RULE_functionIdentifier);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 5141;
			this.id_();
			this.state = 5144;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === HiveSqlParser.DOT) {
				{
				this.state = 5142;
				this.match(HiveSqlParser.DOT);
				this.state = 5143;
				_localctx._fn = this.id_();
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public principalIdentifier(): PrincipalIdentifierContext {
		let _localctx: PrincipalIdentifierContext = new PrincipalIdentifierContext(this._ctx, this.state);
		this.enterRule(_localctx, 930, HiveSqlParser.RULE_principalIdentifier);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 5146;
			this.id_();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public nonReserved(): NonReservedContext {
		let _localctx: NonReservedContext = new NonReservedContext(this._ctx, this.state);
		this.enterRule(_localctx, 932, HiveSqlParser.RULE_nonReserved);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 5148;
			_la = this._input.LA(1);
			if (!((((_la) & ~0x1F) === 0 && ((1 << _la) & ((1 << HiveSqlParser.KW_ABORT) | (1 << HiveSqlParser.KW_ACTIVATE) | (1 << HiveSqlParser.KW_ACTIVE) | (1 << HiveSqlParser.KW_ADD) | (1 << HiveSqlParser.KW_ADMIN) | (1 << HiveSqlParser.KW_AFTER) | (1 << HiveSqlParser.KW_ALLOC_FRACTION) | (1 << HiveSqlParser.KW_ANALYZE) | (1 << HiveSqlParser.KW_ARCHIVE) | (1 << HiveSqlParser.KW_ASC) | (1 << HiveSqlParser.KW_AST) | (1 << HiveSqlParser.KW_AT) | (1 << HiveSqlParser.KW_AUTOCOMMIT) | (1 << HiveSqlParser.KW_BATCH) | (1 << HiveSqlParser.KW_BEFORE) | (1 << HiveSqlParser.KW_BUCKET) | (1 << HiveSqlParser.KW_BUCKETS))) !== 0) || ((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & ((1 << (HiveSqlParser.KW_CACHE - 33)) | (1 << (HiveSqlParser.KW_CASCADE - 33)) | (1 << (HiveSqlParser.KW_CBO - 33)) | (1 << (HiveSqlParser.KW_CHANGE - 33)) | (1 << (HiveSqlParser.KW_CHECK - 33)) | (1 << (HiveSqlParser.KW_CLUSTER - 33)) | (1 << (HiveSqlParser.KW_CLUSTERED - 33)) | (1 << (HiveSqlParser.KW_CLUSTERSTATUS - 33)) | (1 << (HiveSqlParser.KW_COLLECTION - 33)) | (1 << (HiveSqlParser.KW_COLUMNS - 33)) | (1 << (HiveSqlParser.KW_COMMENT - 33)) | (1 << (HiveSqlParser.KW_COMPACT - 33)) | (1 << (HiveSqlParser.KW_COMPACTIONS - 33)) | (1 << (HiveSqlParser.KW_COMPUTE - 33)) | (1 << (HiveSqlParser.KW_CONCATENATE - 33)) | (1 << (HiveSqlParser.KW_CONTINUE - 33)) | (1 << (HiveSqlParser.KW_COST - 33)) | (1 << (HiveSqlParser.KW_CRON - 33)))) !== 0) || ((((_la - 66)) & ~0x1F) === 0 && ((1 << (_la - 66)) & ((1 << (HiveSqlParser.KW_DATA - 66)) | (1 << (HiveSqlParser.KW_DATABASES - 66)) | (1 << (HiveSqlParser.KW_DATETIME - 66)) | (1 << (HiveSqlParser.KW_DAY - 66)) | (1 << (HiveSqlParser.KW_DAYS - 66)) | (1 << (HiveSqlParser.KW_DAYOFWEEK - 66)) | (1 << (HiveSqlParser.KW_DBPROPERTIES - 66)) | (1 << (HiveSqlParser.KW_DCPROPERTIES - 66)) | (1 << (HiveSqlParser.KW_DEBUG - 66)) | (1 << (HiveSqlParser.KW_DEFAULT - 66)) | (1 << (HiveSqlParser.KW_DEFERRED - 66)) | (1 << (HiveSqlParser.KW_DEFINED - 66)) | (1 << (HiveSqlParser.KW_DELIMITED - 66)) | (1 << (HiveSqlParser.KW_DEPENDENCY - 66)) | (1 << (HiveSqlParser.KW_DESC - 66)) | (1 << (HiveSqlParser.KW_DETAIL - 66)) | (1 << (HiveSqlParser.KW_DIRECTORIES - 66)) | (1 << (HiveSqlParser.KW_DIRECTORY - 66)) | (1 << (HiveSqlParser.KW_DISABLE - 66)) | (1 << (HiveSqlParser.KW_DISABLED - 66)) | (1 << (HiveSqlParser.KW_DISTRIBUTE - 66)))) !== 0) || ((((_la - 98)) & ~0x1F) === 0 && ((1 << (_la - 98)) & ((1 << (HiveSqlParser.KW_DISTRIBUTED - 98)) | (1 << (HiveSqlParser.KW_DO - 98)) | (1 << (HiveSqlParser.KW_DUMP - 98)) | (1 << (HiveSqlParser.KW_ELEM_TYPE - 98)) | (1 << (HiveSqlParser.KW_ENABLE - 98)) | (1 << (HiveSqlParser.KW_ENABLED - 98)) | (1 << (HiveSqlParser.KW_ENFORCED - 98)) | (1 << (HiveSqlParser.KW_ESCAPED - 98)) | (1 << (HiveSqlParser.KW_EVERY - 98)) | (1 << (HiveSqlParser.KW_EXCLUSIVE - 98)) | (1 << (HiveSqlParser.KW_EXECUTE - 98)) | (1 << (HiveSqlParser.KW_EXECUTED - 98)) | (1 << (HiveSqlParser.KW_EXPIRE_SNAPSHOTS - 98)) | (1 << (HiveSqlParser.KW_EXPLAIN - 98)) | (1 << (HiveSqlParser.KW_EXPORT - 98)) | (1 << (HiveSqlParser.KW_EXPRESSION - 98)) | (1 << (HiveSqlParser.KW_FIELDS - 98)) | (1 << (HiveSqlParser.KW_FILE - 98)) | (1 << (HiveSqlParser.KW_FILEFORMAT - 98)))) !== 0) || ((((_la - 130)) & ~0x1F) === 0 && ((1 << (_la - 130)) & ((1 << (HiveSqlParser.KW_FIRST - 130)) | (1 << (HiveSqlParser.KW_FORMAT - 130)) | (1 << (HiveSqlParser.KW_FORMATTED - 130)) | (1 << (HiveSqlParser.KW_FUNCTIONS - 130)) | (1 << (HiveSqlParser.KW_HOLD_DDLTIME - 130)) | (1 << (HiveSqlParser.KW_HOUR - 130)) | (1 << (HiveSqlParser.KW_HOURS - 130)) | (1 << (HiveSqlParser.KW_IDXPROPERTIES - 130)) | (1 << (HiveSqlParser.KW_IGNORE - 130)) | (1 << (HiveSqlParser.KW_INDEX - 130)) | (1 << (HiveSqlParser.KW_INDEXES - 130)) | (1 << (HiveSqlParser.KW_INPATH - 130)) | (1 << (HiveSqlParser.KW_INPUTDRIVER - 130)) | (1 << (HiveSqlParser.KW_INPUTFORMAT - 130)))) !== 0) || ((((_la - 168)) & ~0x1F) === 0 && ((1 << (_la - 168)) & ((1 << (HiveSqlParser.KW_ISOLATION - 168)) | (1 << (HiveSqlParser.KW_ITEMS - 168)) | (1 << (HiveSqlParser.KW_JAR - 168)) | (1 << (HiveSqlParser.KW_JOINCOST - 168)) | (1 << (HiveSqlParser.KW_KEY - 168)) | (1 << (HiveSqlParser.KW_KEYS - 168)) | (1 << (HiveSqlParser.KW_KEY_TYPE - 168)) | (1 << (HiveSqlParser.KW_KILL - 168)) | (1 << (HiveSqlParser.KW_LAST - 168)) | (1 << (HiveSqlParser.KW_LEVEL - 168)) | (1 << (HiveSqlParser.KW_LIMIT - 168)) | (1 << (HiveSqlParser.KW_LINES - 168)) | (1 << (HiveSqlParser.KW_LOAD - 168)) | (1 << (HiveSqlParser.KW_LOCATION - 168)) | (1 << (HiveSqlParser.KW_LOCK - 168)) | (1 << (HiveSqlParser.KW_LOCKS - 168)) | (1 << (HiveSqlParser.KW_LOGICAL - 168)) | (1 << (HiveSqlParser.KW_LONG - 168)) | (1 << (HiveSqlParser.KW_MANAGED - 168)) | (1 << (HiveSqlParser.KW_MANAGEDLOCATION - 168)) | (1 << (HiveSqlParser.KW_MANAGEMENT - 168)) | (1 << (HiveSqlParser.KW_MAPJOIN - 168)) | (1 << (HiveSqlParser.KW_MAPPING - 168)))) !== 0) || ((((_la - 200)) & ~0x1F) === 0 && ((1 << (_la - 200)) & ((1 << (HiveSqlParser.KW_MATCHED - 200)) | (1 << (HiveSqlParser.KW_MATERIALIZED - 200)) | (1 << (HiveSqlParser.KW_METADATA - 200)) | (1 << (HiveSqlParser.KW_MINUTE - 200)) | (1 << (HiveSqlParser.KW_MINUTES - 200)) | (1 << (HiveSqlParser.KW_MONTH - 200)) | (1 << (HiveSqlParser.KW_MONTHS - 200)) | (1 << (HiveSqlParser.KW_MOVE - 200)) | (1 << (HiveSqlParser.KW_MSCK - 200)) | (1 << (HiveSqlParser.KW_NORELY - 200)) | (1 << (HiveSqlParser.KW_NOSCAN - 200)) | (1 << (HiveSqlParser.KW_NOVALIDATE - 200)) | (1 << (HiveSqlParser.KW_NO_DROP - 200)) | (1 << (HiveSqlParser.KW_NULLS - 200)) | (1 << (HiveSqlParser.KW_OFFLINE - 200)) | (1 << (HiveSqlParser.KW_OFFSET - 200)) | (1 << (HiveSqlParser.KW_OPERATOR - 200)) | (1 << (HiveSqlParser.KW_OPTION - 200)) | (1 << (HiveSqlParser.KW_OUTPUTDRIVER - 200)))) !== 0) || ((((_la - 232)) & ~0x1F) === 0 && ((1 << (_la - 232)) & ((1 << (HiveSqlParser.KW_OUTPUTFORMAT - 232)) | (1 << (HiveSqlParser.KW_OVERWRITE - 232)) | (1 << (HiveSqlParser.KW_OWNER - 232)) | (1 << (HiveSqlParser.KW_PARTITIONED - 232)) | (1 << (HiveSqlParser.KW_PARTITIONS - 232)) | (1 << (HiveSqlParser.KW_PATH - 232)) | (1 << (HiveSqlParser.KW_PLAN - 232)) | (1 << (HiveSqlParser.KW_PLANS - 232)) | (1 << (HiveSqlParser.KW_PLUS - 232)) | (1 << (HiveSqlParser.KW_POOL - 232)) | (1 << (HiveSqlParser.KW_PRINCIPALS - 232)) | (1 << (HiveSqlParser.KW_PROTECTION - 232)) | (1 << (HiveSqlParser.KW_PURGE - 232)) | (1 << (HiveSqlParser.KW_QUARTER - 232)) | (1 << (HiveSqlParser.KW_QUERY - 232)) | (1 << (HiveSqlParser.KW_QUERY_PARALLELISM - 232)) | (1 << (HiveSqlParser.KW_READ - 232)) | (1 << (HiveSqlParser.KW_READONLY - 232)))) !== 0) || ((((_la - 264)) & ~0x1F) === 0 && ((1 << (_la - 264)) & ((1 << (HiveSqlParser.KW_REBUILD - 264)) | (1 << (HiveSqlParser.KW_RECORDREADER - 264)) | (1 << (HiveSqlParser.KW_RECORDWRITER - 264)) | (1 << (HiveSqlParser.KW_RELOAD - 264)) | (1 << (HiveSqlParser.KW_RELY - 264)) | (1 << (HiveSqlParser.KW_REMOTE - 264)) | (1 << (HiveSqlParser.KW_RENAME - 264)) | (1 << (HiveSqlParser.KW_REOPTIMIZATION - 264)) | (1 << (HiveSqlParser.KW_REPAIR - 264)) | (1 << (HiveSqlParser.KW_REPL - 264)) | (1 << (HiveSqlParser.KW_REPLACE - 264)) | (1 << (HiveSqlParser.KW_REPLICATION - 264)) | (1 << (HiveSqlParser.KW_RESOURCE - 264)) | (1 << (HiveSqlParser.KW_RESPECT - 264)) | (1 << (HiveSqlParser.KW_RESTRICT - 264)) | (1 << (HiveSqlParser.KW_REWRITE - 264)) | (1 << (HiveSqlParser.KW_ROLE - 264)) | (1 << (HiveSqlParser.KW_ROLES - 264)) | (1 << (HiveSqlParser.KW_SCHEDULED - 264)) | (1 << (HiveSqlParser.KW_SCHEDULING_POLICY - 264)) | (1 << (HiveSqlParser.KW_SCHEMA - 264)) | (1 << (HiveSqlParser.KW_SCHEMAS - 264)))) !== 0) || ((((_la - 296)) & ~0x1F) === 0 && ((1 << (_la - 296)) & ((1 << (HiveSqlParser.KW_SECOND - 296)) | (1 << (HiveSqlParser.KW_SECONDS - 296)) | (1 << (HiveSqlParser.KW_SEMI - 296)) | (1 << (HiveSqlParser.KW_SERDE - 296)) | (1 << (HiveSqlParser.KW_SERDEPROPERTIES - 296)) | (1 << (HiveSqlParser.KW_SERVER - 296)) | (1 << (HiveSqlParser.KW_SETS - 296)) | (1 << (HiveSqlParser.KW_SET_CURRENT_SNAPSHOT - 296)) | (1 << (HiveSqlParser.KW_SHARED - 296)) | (1 << (HiveSqlParser.KW_SHOW - 296)) | (1 << (HiveSqlParser.KW_SHOW_DATABASE - 296)) | (1 << (HiveSqlParser.KW_SKEWED - 296)) | (1 << (HiveSqlParser.KW_SNAPSHOT - 296)) | (1 << (HiveSqlParser.KW_SORT - 296)) | (1 << (HiveSqlParser.KW_SORTED - 296)) | (1 << (HiveSqlParser.KW_SPEC - 296)) | (1 << (HiveSqlParser.KW_SSL - 296)) | (1 << (HiveSqlParser.KW_STATISTICS - 296)) | (1 << (HiveSqlParser.KW_STATUS - 296)) | (1 << (HiveSqlParser.KW_STORED - 296)) | (1 << (HiveSqlParser.KW_STREAMTABLE - 296)) | (1 << (HiveSqlParser.KW_STRING - 296)) | (1 << (HiveSqlParser.KW_STRUCT - 296)) | (1 << (HiveSqlParser.KW_SUMMARY - 296)) | (1 << (HiveSqlParser.KW_SYSTEM_TIME - 296)) | (1 << (HiveSqlParser.KW_SYSTEM_VERSION - 296)))) !== 0) || ((((_la - 329)) & ~0x1F) === 0 && ((1 << (_la - 329)) & ((1 << (HiveSqlParser.KW_TABLES - 329)) | (1 << (HiveSqlParser.KW_TBLPROPERTIES - 329)) | (1 << (HiveSqlParser.KW_TEMPORARY - 329)) | (1 << (HiveSqlParser.KW_TERMINATED - 329)) | (1 << (HiveSqlParser.KW_TIMESTAMPTZ - 329)) | (1 << (HiveSqlParser.KW_TINYINT - 329)) | (1 << (HiveSqlParser.KW_TOUCH - 329)) | (1 << (HiveSqlParser.KW_TRANSACTION - 329)) | (1 << (HiveSqlParser.KW_TRANSACTIONAL - 329)) | (1 << (HiveSqlParser.KW_TRANSACTIONS - 329)) | (1 << (HiveSqlParser.KW_TRIM - 329)) | (1 << (HiveSqlParser.KW_TYPE - 329)) | (1 << (HiveSqlParser.KW_UNARCHIVE - 329)) | (1 << (HiveSqlParser.KW_UNDO - 329)) | (1 << (HiveSqlParser.KW_UNIONTYPE - 329)) | (1 << (HiveSqlParser.KW_UNKNOWN - 329)) | (1 << (HiveSqlParser.KW_UNLOCK - 329)))) !== 0) || ((((_la - 361)) & ~0x1F) === 0 && ((1 << (_la - 361)) & ((1 << (HiveSqlParser.KW_UNMANAGED - 361)) | (1 << (HiveSqlParser.KW_UNSET - 361)) | (1 << (HiveSqlParser.KW_UNSIGNED - 361)) | (1 << (HiveSqlParser.KW_URI - 361)) | (1 << (HiveSqlParser.KW_URL - 361)) | (1 << (HiveSqlParser.KW_USE - 361)) | (1 << (HiveSqlParser.KW_UTC - 361)) | (1 << (HiveSqlParser.KW_UTCTIMESTAMP - 361)) | (1 << (HiveSqlParser.KW_VALIDATE - 361)) | (1 << (HiveSqlParser.KW_VALUE_TYPE - 361)) | (1 << (HiveSqlParser.KW_VECTORIZATION - 361)) | (1 << (HiveSqlParser.KW_VIEW - 361)) | (1 << (HiveSqlParser.KW_VIEWS - 361)) | (1 << (HiveSqlParser.KW_WAIT - 361)) | (1 << (HiveSqlParser.KW_WEEK - 361)) | (1 << (HiveSqlParser.KW_WEEKS - 361)) | (1 << (HiveSqlParser.KW_WHILE - 361)) | (1 << (HiveSqlParser.KW_WITHIN - 361)) | (1 << (HiveSqlParser.KW_WORK - 361)) | (1 << (HiveSqlParser.KW_WORKLOAD - 361)) | (1 << (HiveSqlParser.KW_WRITE - 361)) | (1 << (HiveSqlParser.KW_YEAR - 361)) | (1 << (HiveSqlParser.KW_YEARS - 361)))) !== 0) || _la === HiveSqlParser.KW_ZONE)) {
			this._errHandler.recoverInline(this);
			} else {
				if (this._input.LA(1) === Token.EOF) {
					this.matchedEOF = true;
				}

				this._errHandler.reportMatch(this);
				this.consume();
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public sql11ReservedKeywordsUsedAsFunctionName(): Sql11ReservedKeywordsUsedAsFunctionNameContext {
		let _localctx: Sql11ReservedKeywordsUsedAsFunctionNameContext = new Sql11ReservedKeywordsUsedAsFunctionNameContext(this._ctx, this.state);
		this.enterRule(_localctx, 934, HiveSqlParser.RULE_sql11ReservedKeywordsUsedAsFunctionName);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 5150;
			_la = this._input.LA(1);
			if (!((((_la) & ~0x1F) === 0 && ((1 << _la) & ((1 << HiveSqlParser.KW_ARRAY) | (1 << HiveSqlParser.KW_BIGINT) | (1 << HiveSqlParser.KW_BINARY) | (1 << HiveSqlParser.KW_BOOLEAN))) !== 0) || ((((_la - 63)) & ~0x1F) === 0 && ((1 << (_la - 63)) & ((1 << (HiveSqlParser.KW_CURRENT_DATE - 63)) | (1 << (HiveSqlParser.KW_CURRENT_TIMESTAMP - 63)) | (1 << (HiveSqlParser.KW_DATE - 63)))) !== 0) || _la === HiveSqlParser.KW_DOUBLE || _la === HiveSqlParser.KW_FLOAT || ((((_la - 145)) & ~0x1F) === 0 && ((1 << (_la - 145)) & ((1 << (HiveSqlParser.KW_GROUPING - 145)) | (1 << (HiveSqlParser.KW_IF - 145)) | (1 << (HiveSqlParser.KW_INT - 145)) | (1 << (HiveSqlParser.KW_INTEGER - 145)))) !== 0) || _la === HiveSqlParser.KW_MAP || _la === HiveSqlParser.KW_REAL || _la === HiveSqlParser.KW_SMALLINT || _la === HiveSqlParser.KW_TIMESTAMP)) {
			this._errHandler.recoverInline(this);
			} else {
				if (this._input.LA(1) === Token.EOF) {
					this.matchedEOF = true;
				}

				this._errHandler.reportMatch(this);
				this.consume();
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public hint(): HintContext {
		let _localctx: HintContext = new HintContext(this._ctx, this.state);
		this.enterRule(_localctx, 936, HiveSqlParser.RULE_hint);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 5152;
			this.hintList();
			this.state = 5153;
			this.match(HiveSqlParser.EOF);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public hintList(): HintListContext {
		let _localctx: HintListContext = new HintListContext(this._ctx, this.state);
		this.enterRule(_localctx, 938, HiveSqlParser.RULE_hintList);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 5155;
			this.hintItem();
			this.state = 5160;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === HiveSqlParser.COMMA) {
				{
				{
				this.state = 5156;
				this.match(HiveSqlParser.COMMA);
				this.state = 5157;
				this.hintItem();
				}
				}
				this.state = 5162;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public hintItem(): HintItemContext {
		let _localctx: HintItemContext = new HintItemContext(this._ctx, this.state);
		this.enterRule(_localctx, 940, HiveSqlParser.RULE_hintItem);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 5163;
			this.hintName();
			this.state = 5168;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === HiveSqlParser.LPAREN) {
				{
				this.state = 5164;
				this.match(HiveSqlParser.LPAREN);
				this.state = 5165;
				this.hintArgs();
				this.state = 5166;
				this.match(HiveSqlParser.RPAREN);
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public hintName(): HintNameContext {
		let _localctx: HintNameContext = new HintNameContext(this._ctx, this.state);
		this.enterRule(_localctx, 942, HiveSqlParser.RULE_hintName);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 5170;
			_la = this._input.LA(1);
			if (!(_la === HiveSqlParser.KW_MAPJOIN || _la === HiveSqlParser.KW_PKFK_JOIN || _la === HiveSqlParser.KW_SEMI || _la === HiveSqlParser.KW_STREAMTABLE)) {
			this._errHandler.recoverInline(this);
			} else {
				if (this._input.LA(1) === Token.EOF) {
					this.matchedEOF = true;
				}

				this._errHandler.reportMatch(this);
				this.consume();
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public hintArgs(): HintArgsContext {
		let _localctx: HintArgsContext = new HintArgsContext(this._ctx, this.state);
		this.enterRule(_localctx, 944, HiveSqlParser.RULE_hintArgs);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 5172;
			this.hintArgName();
			this.state = 5177;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === HiveSqlParser.COMMA) {
				{
				{
				this.state = 5173;
				this.match(HiveSqlParser.COMMA);
				this.state = 5174;
				this.hintArgName();
				}
				}
				this.state = 5179;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public hintArgName(): HintArgNameContext {
		let _localctx: HintArgNameContext = new HintArgNameContext(this._ctx, this.state);
		this.enterRule(_localctx, 946, HiveSqlParser.RULE_hintArgName);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 5180;
			_la = this._input.LA(1);
			if (!(_la === HiveSqlParser.KW_NONE || _la === HiveSqlParser.Number || _la === HiveSqlParser.Identifier)) {
			this._errHandler.recoverInline(this);
			} else {
				if (this._input.LA(1) === Token.EOF) {
					this.matchedEOF = true;
				}

				this._errHandler.reportMatch(this);
				this.consume();
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public prepareStatement(): PrepareStatementContext {
		let _localctx: PrepareStatementContext = new PrepareStatementContext(this._ctx, this.state);
		this.enterRule(_localctx, 948, HiveSqlParser.RULE_prepareStatement);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 5182;
			this.match(HiveSqlParser.KW_PREPARE);
			this.state = 5183;
			this.id_();
			this.state = 5184;
			this.match(HiveSqlParser.KW_FROM);
			this.state = 5185;
			this.queryStatementExpression();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public executeStatement(): ExecuteStatementContext {
		let _localctx: ExecuteStatementContext = new ExecuteStatementContext(this._ctx, this.state);
		this.enterRule(_localctx, 950, HiveSqlParser.RULE_executeStatement);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 5187;
			this.match(HiveSqlParser.KW_EXECUTE);
			this.state = 5188;
			this.id_();
			this.state = 5189;
			this.match(HiveSqlParser.KW_USING);
			this.state = 5190;
			this.executeParamList();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public executeParamList(): ExecuteParamListContext {
		let _localctx: ExecuteParamListContext = new ExecuteParamListContext(this._ctx, this.state);
		this.enterRule(_localctx, 952, HiveSqlParser.RULE_executeParamList);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 5192;
			this.constant();
			this.state = 5197;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === HiveSqlParser.COMMA) {
				{
				{
				this.state = 5193;
				this.match(HiveSqlParser.COMMA);
				this.state = 5194;
				this.constant();
				}
				}
				this.state = 5199;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public resourcePlanDdlStatements(): ResourcePlanDdlStatementsContext {
		let _localctx: ResourcePlanDdlStatementsContext = new ResourcePlanDdlStatementsContext(this._ctx, this.state);
		this.enterRule(_localctx, 954, HiveSqlParser.RULE_resourcePlanDdlStatements);
		try {
			this.state = 5214;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 620, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 5200;
				this.createResourcePlanStatement();
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 5201;
				this.alterResourcePlanStatement();
				}
				break;

			case 3:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 5202;
				this.dropResourcePlanStatement();
				}
				break;

			case 4:
				this.enterOuterAlt(_localctx, 4);
				{
				this.state = 5203;
				this.globalWmStatement();
				}
				break;

			case 5:
				this.enterOuterAlt(_localctx, 5);
				{
				this.state = 5204;
				this.replaceResourcePlanStatement();
				}
				break;

			case 6:
				this.enterOuterAlt(_localctx, 6);
				{
				this.state = 5205;
				this.createTriggerStatement();
				}
				break;

			case 7:
				this.enterOuterAlt(_localctx, 7);
				{
				this.state = 5206;
				this.alterTriggerStatement();
				}
				break;

			case 8:
				this.enterOuterAlt(_localctx, 8);
				{
				this.state = 5207;
				this.dropTriggerStatement();
				}
				break;

			case 9:
				this.enterOuterAlt(_localctx, 9);
				{
				this.state = 5208;
				this.createPoolStatement();
				}
				break;

			case 10:
				this.enterOuterAlt(_localctx, 10);
				{
				this.state = 5209;
				this.alterPoolStatement();
				}
				break;

			case 11:
				this.enterOuterAlt(_localctx, 11);
				{
				this.state = 5210;
				this.dropPoolStatement();
				}
				break;

			case 12:
				this.enterOuterAlt(_localctx, 12);
				{
				this.state = 5211;
				this.createMappingStatement();
				}
				break;

			case 13:
				this.enterOuterAlt(_localctx, 13);
				{
				this.state = 5212;
				this.alterMappingStatement();
				}
				break;

			case 14:
				this.enterOuterAlt(_localctx, 14);
				{
				this.state = 5213;
				this.dropMappingStatement();
				}
				break;
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public rpAssign(): RpAssignContext {
		let _localctx: RpAssignContext = new RpAssignContext(this._ctx, this.state);
		this.enterRule(_localctx, 956, HiveSqlParser.RULE_rpAssign);
		try {
			this.state = 5223;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case HiveSqlParser.KW_QUERY_PARALLELISM:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 5216;
				this.match(HiveSqlParser.KW_QUERY_PARALLELISM);
				this.state = 5217;
				this.match(HiveSqlParser.EQUAL);
				this.state = 5218;
				_localctx._parallelism = this.match(HiveSqlParser.Number);
				}
				break;
			case HiveSqlParser.KW_DEFAULT:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 5219;
				this.match(HiveSqlParser.KW_DEFAULT);
				this.state = 5220;
				this.match(HiveSqlParser.KW_POOL);
				this.state = 5221;
				this.match(HiveSqlParser.EQUAL);
				this.state = 5222;
				this.poolPath();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public rpAssignList(): RpAssignListContext {
		let _localctx: RpAssignListContext = new RpAssignListContext(this._ctx, this.state);
		this.enterRule(_localctx, 958, HiveSqlParser.RULE_rpAssignList);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 5225;
			this.rpAssign();
			this.state = 5230;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === HiveSqlParser.COMMA) {
				{
				{
				this.state = 5226;
				this.match(HiveSqlParser.COMMA);
				this.state = 5227;
				this.rpAssign();
				}
				}
				this.state = 5232;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public rpUnassign(): RpUnassignContext {
		let _localctx: RpUnassignContext = new RpUnassignContext(this._ctx, this.state);
		this.enterRule(_localctx, 960, HiveSqlParser.RULE_rpUnassign);
		try {
			this.state = 5236;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case HiveSqlParser.KW_QUERY_PARALLELISM:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 5233;
				this.match(HiveSqlParser.KW_QUERY_PARALLELISM);
				}
				break;
			case HiveSqlParser.KW_DEFAULT:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 5234;
				this.match(HiveSqlParser.KW_DEFAULT);
				this.state = 5235;
				this.match(HiveSqlParser.KW_POOL);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public rpUnassignList(): RpUnassignListContext {
		let _localctx: RpUnassignListContext = new RpUnassignListContext(this._ctx, this.state);
		this.enterRule(_localctx, 962, HiveSqlParser.RULE_rpUnassignList);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 5238;
			this.rpUnassign();
			this.state = 5243;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === HiveSqlParser.COMMA) {
				{
				{
				this.state = 5239;
				this.match(HiveSqlParser.COMMA);
				this.state = 5240;
				this.rpUnassign();
				}
				}
				this.state = 5245;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public createResourcePlanStatement(): CreateResourcePlanStatementContext {
		let _localctx: CreateResourcePlanStatementContext = new CreateResourcePlanStatementContext(this._ctx, this.state);
		this.enterRule(_localctx, 964, HiveSqlParser.RULE_createResourcePlanStatement);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 5246;
			this.match(HiveSqlParser.KW_CREATE);
			this.state = 5247;
			this.match(HiveSqlParser.KW_RESOURCE);
			this.state = 5248;
			this.match(HiveSqlParser.KW_PLAN);
			this.state = 5250;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === HiveSqlParser.KW_IF) {
				{
				this.state = 5249;
				this.ifNotExists();
				}
			}

			this.state = 5261;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 627, this._ctx) ) {
			case 1:
				{
				this.state = 5252;
				_localctx._name = this.id_();
				this.state = 5253;
				this.match(HiveSqlParser.KW_LIKE);
				this.state = 5254;
				_localctx._likeName = this.id_();
				}
				break;

			case 2:
				{
				this.state = 5256;
				_localctx._name = this.id_();
				this.state = 5259;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 626, this._ctx) ) {
				case 1:
					{
					this.state = 5257;
					this.match(HiveSqlParser.KW_WITH);
					this.state = 5258;
					this.rpAssignList();
					}
					break;
				}
				}
				break;
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public withReplace(): WithReplaceContext {
		let _localctx: WithReplaceContext = new WithReplaceContext(this._ctx, this.state);
		this.enterRule(_localctx, 966, HiveSqlParser.RULE_withReplace);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 5263;
			this.match(HiveSqlParser.KW_WITH);
			this.state = 5264;
			this.match(HiveSqlParser.KW_REPLACE);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public activate(): ActivateContext {
		let _localctx: ActivateContext = new ActivateContext(this._ctx, this.state);
		this.enterRule(_localctx, 968, HiveSqlParser.RULE_activate);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 5266;
			this.match(HiveSqlParser.KW_ACTIVATE);
			this.state = 5268;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 628, this._ctx) ) {
			case 1:
				{
				this.state = 5267;
				this.withReplace();
				}
				break;
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public enable(): EnableContext {
		let _localctx: EnableContext = new EnableContext(this._ctx, this.state);
		this.enterRule(_localctx, 970, HiveSqlParser.RULE_enable);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 5270;
			_la = this._input.LA(1);
			if (!(_la === HiveSqlParser.KW_ENABLE || _la === HiveSqlParser.KW_ENABLED)) {
			this._errHandler.recoverInline(this);
			} else {
				if (this._input.LA(1) === Token.EOF) {
					this.matchedEOF = true;
				}

				this._errHandler.reportMatch(this);
				this.consume();
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public disable(): DisableContext {
		let _localctx: DisableContext = new DisableContext(this._ctx, this.state);
		this.enterRule(_localctx, 972, HiveSqlParser.RULE_disable);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 5272;
			_la = this._input.LA(1);
			if (!(_la === HiveSqlParser.KW_DISABLE || _la === HiveSqlParser.KW_DISABLED)) {
			this._errHandler.recoverInline(this);
			} else {
				if (this._input.LA(1) === Token.EOF) {
					this.matchedEOF = true;
				}

				this._errHandler.reportMatch(this);
				this.consume();
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public unmanaged(): UnmanagedContext {
		let _localctx: UnmanagedContext = new UnmanagedContext(this._ctx, this.state);
		this.enterRule(_localctx, 974, HiveSqlParser.RULE_unmanaged);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 5274;
			this.match(HiveSqlParser.KW_UNMANAGED);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public year(): YearContext {
		let _localctx: YearContext = new YearContext(this._ctx, this.state);
		this.enterRule(_localctx, 976, HiveSqlParser.RULE_year);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 5276;
			_la = this._input.LA(1);
			if (!(_la === HiveSqlParser.KW_YEAR || _la === HiveSqlParser.KW_YEARS)) {
			this._errHandler.recoverInline(this);
			} else {
				if (this._input.LA(1) === Token.EOF) {
					this.matchedEOF = true;
				}

				this._errHandler.reportMatch(this);
				this.consume();
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public month(): MonthContext {
		let _localctx: MonthContext = new MonthContext(this._ctx, this.state);
		this.enterRule(_localctx, 978, HiveSqlParser.RULE_month);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 5278;
			_la = this._input.LA(1);
			if (!(_la === HiveSqlParser.KW_MONTH || _la === HiveSqlParser.KW_MONTHS)) {
			this._errHandler.recoverInline(this);
			} else {
				if (this._input.LA(1) === Token.EOF) {
					this.matchedEOF = true;
				}

				this._errHandler.reportMatch(this);
				this.consume();
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public week(): WeekContext {
		let _localctx: WeekContext = new WeekContext(this._ctx, this.state);
		this.enterRule(_localctx, 980, HiveSqlParser.RULE_week);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 5280;
			_la = this._input.LA(1);
			if (!(_la === HiveSqlParser.KW_WEEK || _la === HiveSqlParser.KW_WEEKS)) {
			this._errHandler.recoverInline(this);
			} else {
				if (this._input.LA(1) === Token.EOF) {
					this.matchedEOF = true;
				}

				this._errHandler.reportMatch(this);
				this.consume();
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public day(): DayContext {
		let _localctx: DayContext = new DayContext(this._ctx, this.state);
		this.enterRule(_localctx, 982, HiveSqlParser.RULE_day);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 5282;
			_la = this._input.LA(1);
			if (!(_la === HiveSqlParser.KW_DAY || _la === HiveSqlParser.KW_DAYS)) {
			this._errHandler.recoverInline(this);
			} else {
				if (this._input.LA(1) === Token.EOF) {
					this.matchedEOF = true;
				}

				this._errHandler.reportMatch(this);
				this.consume();
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public hour(): HourContext {
		let _localctx: HourContext = new HourContext(this._ctx, this.state);
		this.enterRule(_localctx, 984, HiveSqlParser.RULE_hour);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 5284;
			_la = this._input.LA(1);
			if (!(_la === HiveSqlParser.KW_HOUR || _la === HiveSqlParser.KW_HOURS)) {
			this._errHandler.recoverInline(this);
			} else {
				if (this._input.LA(1) === Token.EOF) {
					this.matchedEOF = true;
				}

				this._errHandler.reportMatch(this);
				this.consume();
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public minute(): MinuteContext {
		let _localctx: MinuteContext = new MinuteContext(this._ctx, this.state);
		this.enterRule(_localctx, 986, HiveSqlParser.RULE_minute);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 5286;
			_la = this._input.LA(1);
			if (!(_la === HiveSqlParser.KW_MINUTE || _la === HiveSqlParser.KW_MINUTES)) {
			this._errHandler.recoverInline(this);
			} else {
				if (this._input.LA(1) === Token.EOF) {
					this.matchedEOF = true;
				}

				this._errHandler.reportMatch(this);
				this.consume();
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public second(): SecondContext {
		let _localctx: SecondContext = new SecondContext(this._ctx, this.state);
		this.enterRule(_localctx, 988, HiveSqlParser.RULE_second);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 5288;
			_la = this._input.LA(1);
			if (!(_la === HiveSqlParser.KW_SECOND || _la === HiveSqlParser.KW_SECONDS)) {
			this._errHandler.recoverInline(this);
			} else {
				if (this._input.LA(1) === Token.EOF) {
					this.matchedEOF = true;
				}

				this._errHandler.reportMatch(this);
				this.consume();
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public decimal(): DecimalContext {
		let _localctx: DecimalContext = new DecimalContext(this._ctx, this.state);
		this.enterRule(_localctx, 990, HiveSqlParser.RULE_decimal);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 5290;
			_la = this._input.LA(1);
			if (!(((((_la - 80)) & ~0x1F) === 0 && ((1 << (_la - 80)) & ((1 << (HiveSqlParser.KW_DEC - 80)) | (1 << (HiveSqlParser.KW_DECIMAL - 80)) | (1 << (HiveSqlParser.KW_NUMERIC - 80)))) !== 0))) {
			this._errHandler.recoverInline(this);
			} else {
				if (this._input.LA(1) === Token.EOF) {
					this.matchedEOF = true;
				}

				this._errHandler.reportMatch(this);
				this.consume();
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public alterResourcePlanStatement(): AlterResourcePlanStatementContext {
		let _localctx: AlterResourcePlanStatementContext = new AlterResourcePlanStatementContext(this._ctx, this.state);
		this.enterRule(_localctx, 992, HiveSqlParser.RULE_alterResourcePlanStatement);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 5292;
			this.match(HiveSqlParser.KW_ALTER);
			this.state = 5293;
			this.match(HiveSqlParser.KW_RESOURCE);
			this.state = 5294;
			this.match(HiveSqlParser.KW_PLAN);
			this.state = 5295;
			_localctx._name = this.id_();
			this.state = 5313;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case HiveSqlParser.KW_VALIDATE:
				{
				this.state = 5296;
				this.match(HiveSqlParser.KW_VALIDATE);
				}
				break;
			case HiveSqlParser.KW_DISABLE:
			case HiveSqlParser.KW_DISABLED:
				{
				this.state = 5297;
				this.disable();
				}
				break;
			case HiveSqlParser.KW_SET:
				{
				this.state = 5298;
				this.match(HiveSqlParser.KW_SET);
				this.state = 5299;
				this.rpAssignList();
				}
				break;
			case HiveSqlParser.KW_UNSET:
				{
				this.state = 5300;
				this.match(HiveSqlParser.KW_UNSET);
				this.state = 5301;
				this.rpUnassignList();
				}
				break;
			case HiveSqlParser.KW_RENAME:
				{
				this.state = 5302;
				this.match(HiveSqlParser.KW_RENAME);
				this.state = 5303;
				this.match(HiveSqlParser.KW_TO);
				this.state = 5304;
				_localctx._newName = this.id_();
				}
				break;
			case HiveSqlParser.KW_ACTIVATE:
				{
				this.state = 5305;
				this.activate();
				this.state = 5307;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 629, this._ctx) ) {
				case 1:
					{
					this.state = 5306;
					this.enable();
					}
					break;
				}
				}
				break;
			case HiveSqlParser.KW_ENABLE:
			case HiveSqlParser.KW_ENABLED:
				{
				this.state = 5309;
				this.enable();
				this.state = 5311;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === HiveSqlParser.KW_ACTIVATE) {
					{
					this.state = 5310;
					this.activate();
					}
				}

				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public globalWmStatement(): GlobalWmStatementContext {
		let _localctx: GlobalWmStatementContext = new GlobalWmStatementContext(this._ctx, this.state);
		this.enterRule(_localctx, 994, HiveSqlParser.RULE_globalWmStatement);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 5317;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case HiveSqlParser.KW_ENABLE:
			case HiveSqlParser.KW_ENABLED:
				{
				this.state = 5315;
				this.enable();
				}
				break;
			case HiveSqlParser.KW_DISABLE:
			case HiveSqlParser.KW_DISABLED:
				{
				this.state = 5316;
				this.disable();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			this.state = 5319;
			this.match(HiveSqlParser.KW_WORKLOAD);
			this.state = 5320;
			this.match(HiveSqlParser.KW_MANAGEMENT);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public replaceResourcePlanStatement(): ReplaceResourcePlanStatementContext {
		let _localctx: ReplaceResourcePlanStatementContext = new ReplaceResourcePlanStatementContext(this._ctx, this.state);
		this.enterRule(_localctx, 996, HiveSqlParser.RULE_replaceResourcePlanStatement);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 5322;
			this.match(HiveSqlParser.KW_REPLACE);
			this.state = 5334;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case HiveSqlParser.KW_ACTIVE:
				{
				this.state = 5323;
				this.match(HiveSqlParser.KW_ACTIVE);
				this.state = 5324;
				this.match(HiveSqlParser.KW_RESOURCE);
				this.state = 5325;
				this.match(HiveSqlParser.KW_PLAN);
				this.state = 5326;
				this.match(HiveSqlParser.KW_WITH);
				this.state = 5327;
				_localctx._src = this.id_();
				}
				break;
			case HiveSqlParser.KW_RESOURCE:
				{
				this.state = 5328;
				this.match(HiveSqlParser.KW_RESOURCE);
				this.state = 5329;
				this.match(HiveSqlParser.KW_PLAN);
				this.state = 5330;
				_localctx._dest = this.id_();
				this.state = 5331;
				this.match(HiveSqlParser.KW_WITH);
				this.state = 5332;
				_localctx._src = this.id_();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public dropResourcePlanStatement(): DropResourcePlanStatementContext {
		let _localctx: DropResourcePlanStatementContext = new DropResourcePlanStatementContext(this._ctx, this.state);
		this.enterRule(_localctx, 998, HiveSqlParser.RULE_dropResourcePlanStatement);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 5336;
			this.match(HiveSqlParser.KW_DROP);
			this.state = 5337;
			this.match(HiveSqlParser.KW_RESOURCE);
			this.state = 5338;
			this.match(HiveSqlParser.KW_PLAN);
			this.state = 5340;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === HiveSqlParser.KW_IF) {
				{
				this.state = 5339;
				this.ifExists();
				}
			}

			this.state = 5342;
			_localctx._name = this.id_();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public poolPath(): PoolPathContext {
		let _localctx: PoolPathContext = new PoolPathContext(this._ctx, this.state);
		this.enterRule(_localctx, 1000, HiveSqlParser.RULE_poolPath);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 5344;
			this.id_();
			this.state = 5349;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === HiveSqlParser.DOT) {
				{
				{
				this.state = 5345;
				this.match(HiveSqlParser.DOT);
				this.state = 5346;
				this.id_();
				}
				}
				this.state = 5351;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public triggerExpression(): TriggerExpressionContext {
		let _localctx: TriggerExpressionContext = new TriggerExpressionContext(this._ctx, this.state);
		this.enterRule(_localctx, 1002, HiveSqlParser.RULE_triggerExpression);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 5352;
			this.triggerAtomExpression();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public triggerExpressionStandalone(): TriggerExpressionStandaloneContext {
		let _localctx: TriggerExpressionStandaloneContext = new TriggerExpressionStandaloneContext(this._ctx, this.state);
		this.enterRule(_localctx, 1004, HiveSqlParser.RULE_triggerExpressionStandalone);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 5354;
			this.triggerExpression();
			this.state = 5355;
			this.match(HiveSqlParser.EOF);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public triggerOrExpression(): TriggerOrExpressionContext {
		let _localctx: TriggerOrExpressionContext = new TriggerOrExpressionContext(this._ctx, this.state);
		this.enterRule(_localctx, 1006, HiveSqlParser.RULE_triggerOrExpression);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 5357;
			this.triggerAndExpression();
			this.state = 5362;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === HiveSqlParser.KW_OR) {
				{
				{
				this.state = 5358;
				this.match(HiveSqlParser.KW_OR);
				this.state = 5359;
				this.triggerAndExpression();
				}
				}
				this.state = 5364;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public triggerAndExpression(): TriggerAndExpressionContext {
		let _localctx: TriggerAndExpressionContext = new TriggerAndExpressionContext(this._ctx, this.state);
		this.enterRule(_localctx, 1008, HiveSqlParser.RULE_triggerAndExpression);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 5365;
			this.triggerAtomExpression();
			this.state = 5370;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === HiveSqlParser.KW_AND) {
				{
				{
				this.state = 5366;
				this.match(HiveSqlParser.KW_AND);
				this.state = 5367;
				this.triggerAtomExpression();
				}
				}
				this.state = 5372;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public triggerAtomExpression(): TriggerAtomExpressionContext {
		let _localctx: TriggerAtomExpressionContext = new TriggerAtomExpressionContext(this._ctx, this.state);
		this.enterRule(_localctx, 1010, HiveSqlParser.RULE_triggerAtomExpression);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 5373;
			this.id_();
			this.state = 5374;
			this.comparisionOperator();
			this.state = 5375;
			this.triggerLiteral();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public triggerLiteral(): TriggerLiteralContext {
		let _localctx: TriggerLiteralContext = new TriggerLiteralContext(this._ctx, this.state);
		this.enterRule(_localctx, 1012, HiveSqlParser.RULE_triggerLiteral);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 5377;
			_la = this._input.LA(1);
			if (!(_la === HiveSqlParser.StringLiteral || _la === HiveSqlParser.Number)) {
			this._errHandler.recoverInline(this);
			} else {
				if (this._input.LA(1) === Token.EOF) {
					this.matchedEOF = true;
				}

				this._errHandler.reportMatch(this);
				this.consume();
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public comparisionOperator(): ComparisionOperatorContext {
		let _localctx: ComparisionOperatorContext = new ComparisionOperatorContext(this._ctx, this.state);
		this.enterRule(_localctx, 1014, HiveSqlParser.RULE_comparisionOperator);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 5379;
			this.match(HiveSqlParser.GREATERTHAN);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public triggerActionExpression(): TriggerActionExpressionContext {
		let _localctx: TriggerActionExpressionContext = new TriggerActionExpressionContext(this._ctx, this.state);
		this.enterRule(_localctx, 1016, HiveSqlParser.RULE_triggerActionExpression);
		try {
			this.state = 5385;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case HiveSqlParser.KW_KILL:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 5381;
				this.match(HiveSqlParser.KW_KILL);
				}
				break;
			case HiveSqlParser.KW_MOVE:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 5382;
				this.match(HiveSqlParser.KW_MOVE);
				this.state = 5383;
				this.match(HiveSqlParser.KW_TO);
				this.state = 5384;
				this.poolPath();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public triggerActionExpressionStandalone(): TriggerActionExpressionStandaloneContext {
		let _localctx: TriggerActionExpressionStandaloneContext = new TriggerActionExpressionStandaloneContext(this._ctx, this.state);
		this.enterRule(_localctx, 1018, HiveSqlParser.RULE_triggerActionExpressionStandalone);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 5387;
			this.triggerActionExpression();
			this.state = 5388;
			this.match(HiveSqlParser.EOF);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public createTriggerStatement(): CreateTriggerStatementContext {
		let _localctx: CreateTriggerStatementContext = new CreateTriggerStatementContext(this._ctx, this.state);
		this.enterRule(_localctx, 1020, HiveSqlParser.RULE_createTriggerStatement);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 5390;
			this.match(HiveSqlParser.KW_CREATE);
			this.state = 5391;
			this.match(HiveSqlParser.KW_TRIGGER);
			this.state = 5392;
			_localctx._rpName = this.id_();
			this.state = 5393;
			this.match(HiveSqlParser.DOT);
			this.state = 5394;
			_localctx._triggerName = this.id_();
			this.state = 5395;
			this.match(HiveSqlParser.KW_WHEN);
			this.state = 5396;
			this.triggerExpression();
			this.state = 5397;
			this.match(HiveSqlParser.KW_DO);
			this.state = 5398;
			this.triggerActionExpression();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public alterTriggerStatement(): AlterTriggerStatementContext {
		let _localctx: AlterTriggerStatementContext = new AlterTriggerStatementContext(this._ctx, this.state);
		this.enterRule(_localctx, 1022, HiveSqlParser.RULE_alterTriggerStatement);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 5400;
			this.match(HiveSqlParser.KW_ALTER);
			this.state = 5401;
			this.match(HiveSqlParser.KW_TRIGGER);
			this.state = 5402;
			_localctx._rpName = this.id_();
			this.state = 5403;
			this.match(HiveSqlParser.DOT);
			this.state = 5404;
			_localctx._triggerName = this.id_();
			this.state = 5421;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case HiveSqlParser.KW_WHEN:
				{
				this.state = 5405;
				this.match(HiveSqlParser.KW_WHEN);
				this.state = 5406;
				this.triggerExpression();
				this.state = 5407;
				this.match(HiveSqlParser.KW_DO);
				this.state = 5408;
				this.triggerActionExpression();
				}
				break;
			case HiveSqlParser.KW_ADD:
			case HiveSqlParser.KW_DROP:
				{
				this.state = 5414;
				this._errHandler.sync(this);
				switch (this._input.LA(1)) {
				case HiveSqlParser.KW_ADD:
					{
					this.state = 5410;
					this.match(HiveSqlParser.KW_ADD);
					this.state = 5411;
					this.match(HiveSqlParser.KW_TO);
					}
					break;
				case HiveSqlParser.KW_DROP:
					{
					this.state = 5412;
					this.match(HiveSqlParser.KW_DROP);
					this.state = 5413;
					this.match(HiveSqlParser.KW_FROM);
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				this.state = 5419;
				this._errHandler.sync(this);
				switch (this._input.LA(1)) {
				case HiveSqlParser.KW_POOL:
					{
					this.state = 5416;
					this.match(HiveSqlParser.KW_POOL);
					this.state = 5417;
					_localctx._poolName = this.poolPath();
					}
					break;
				case HiveSqlParser.KW_UNMANAGED:
					{
					this.state = 5418;
					this.match(HiveSqlParser.KW_UNMANAGED);
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public dropTriggerStatement(): DropTriggerStatementContext {
		let _localctx: DropTriggerStatementContext = new DropTriggerStatementContext(this._ctx, this.state);
		this.enterRule(_localctx, 1024, HiveSqlParser.RULE_dropTriggerStatement);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 5423;
			this.match(HiveSqlParser.KW_DROP);
			this.state = 5424;
			this.match(HiveSqlParser.KW_TRIGGER);
			this.state = 5425;
			_localctx._rpName = this.id_();
			this.state = 5426;
			this.match(HiveSqlParser.DOT);
			this.state = 5427;
			_localctx._triggerName = this.id_();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public poolAssign(): PoolAssignContext {
		let _localctx: PoolAssignContext = new PoolAssignContext(this._ctx, this.state);
		this.enterRule(_localctx, 1026, HiveSqlParser.RULE_poolAssign);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 5441;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case HiveSqlParser.KW_ALLOC_FRACTION:
				{
				this.state = 5429;
				this.match(HiveSqlParser.KW_ALLOC_FRACTION);
				this.state = 5430;
				this.match(HiveSqlParser.EQUAL);
				this.state = 5431;
				_localctx._allocFraction = this.match(HiveSqlParser.Number);
				}
				break;
			case HiveSqlParser.KW_QUERY_PARALLELISM:
				{
				this.state = 5432;
				this.match(HiveSqlParser.KW_QUERY_PARALLELISM);
				this.state = 5433;
				this.match(HiveSqlParser.EQUAL);
				this.state = 5434;
				_localctx._parallelism = this.match(HiveSqlParser.Number);
				}
				break;
			case HiveSqlParser.KW_SCHEDULING_POLICY:
				{
				this.state = 5435;
				this.match(HiveSqlParser.KW_SCHEDULING_POLICY);
				this.state = 5436;
				this.match(HiveSqlParser.EQUAL);
				this.state = 5437;
				_localctx._policy = this.match(HiveSqlParser.StringLiteral);
				}
				break;
			case HiveSqlParser.KW_PATH:
				{
				this.state = 5438;
				this.match(HiveSqlParser.KW_PATH);
				this.state = 5439;
				this.match(HiveSqlParser.EQUAL);
				this.state = 5440;
				_localctx._path = this.poolPath();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public poolAssignList(): PoolAssignListContext {
		let _localctx: PoolAssignListContext = new PoolAssignListContext(this._ctx, this.state);
		this.enterRule(_localctx, 1028, HiveSqlParser.RULE_poolAssignList);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 5443;
			this.poolAssign();
			this.state = 5448;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === HiveSqlParser.COMMA) {
				{
				{
				this.state = 5444;
				this.match(HiveSqlParser.COMMA);
				this.state = 5445;
				this.poolAssign();
				}
				}
				this.state = 5450;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public createPoolStatement(): CreatePoolStatementContext {
		let _localctx: CreatePoolStatementContext = new CreatePoolStatementContext(this._ctx, this.state);
		this.enterRule(_localctx, 1030, HiveSqlParser.RULE_createPoolStatement);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 5451;
			this.match(HiveSqlParser.KW_CREATE);
			this.state = 5452;
			this.match(HiveSqlParser.KW_POOL);
			this.state = 5453;
			_localctx._rpName = this.id_();
			this.state = 5454;
			this.match(HiveSqlParser.DOT);
			this.state = 5455;
			this.poolPath();
			this.state = 5456;
			this.match(HiveSqlParser.KW_WITH);
			this.state = 5457;
			this.poolAssignList();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public alterPoolStatement(): AlterPoolStatementContext {
		let _localctx: AlterPoolStatementContext = new AlterPoolStatementContext(this._ctx, this.state);
		this.enterRule(_localctx, 1032, HiveSqlParser.RULE_alterPoolStatement);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 5459;
			this.match(HiveSqlParser.KW_ALTER);
			this.state = 5460;
			this.match(HiveSqlParser.KW_POOL);
			this.state = 5461;
			_localctx._rpName = this.id_();
			this.state = 5462;
			this.match(HiveSqlParser.DOT);
			this.state = 5463;
			this.poolPath();
			this.state = 5471;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case HiveSqlParser.KW_SET:
				{
				this.state = 5464;
				this.match(HiveSqlParser.KW_SET);
				this.state = 5465;
				this.poolAssignList();
				}
				break;
			case HiveSqlParser.KW_UNSET:
				{
				this.state = 5466;
				this.match(HiveSqlParser.KW_UNSET);
				this.state = 5467;
				this.match(HiveSqlParser.KW_SCHEDULING_POLICY);
				}
				break;
			case HiveSqlParser.KW_ADD:
			case HiveSqlParser.KW_DROP:
				{
				this.state = 5468;
				_la = this._input.LA(1);
				if (!(_la === HiveSqlParser.KW_ADD || _la === HiveSqlParser.KW_DROP)) {
				this._errHandler.recoverInline(this);
				} else {
					if (this._input.LA(1) === Token.EOF) {
						this.matchedEOF = true;
					}

					this._errHandler.reportMatch(this);
					this.consume();
				}
				this.state = 5469;
				this.match(HiveSqlParser.KW_TRIGGER);
				this.state = 5470;
				_localctx._triggerName = this.id_();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public dropPoolStatement(): DropPoolStatementContext {
		let _localctx: DropPoolStatementContext = new DropPoolStatementContext(this._ctx, this.state);
		this.enterRule(_localctx, 1034, HiveSqlParser.RULE_dropPoolStatement);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 5473;
			this.match(HiveSqlParser.KW_DROP);
			this.state = 5474;
			this.match(HiveSqlParser.KW_POOL);
			this.state = 5475;
			_localctx._rpName = this.id_();
			this.state = 5476;
			this.match(HiveSqlParser.DOT);
			this.state = 5477;
			this.poolPath();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public createMappingStatement(): CreateMappingStatementContext {
		let _localctx: CreateMappingStatementContext = new CreateMappingStatementContext(this._ctx, this.state);
		this.enterRule(_localctx, 1036, HiveSqlParser.RULE_createMappingStatement);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 5479;
			this.match(HiveSqlParser.KW_CREATE);
			this.state = 5480;
			_localctx._mappingType = this._input.LT(1);
			_la = this._input.LA(1);
			if (!(_la === HiveSqlParser.KW_APPLICATION || _la === HiveSqlParser.KW_GROUP || _la === HiveSqlParser.KW_USER)) {
				_localctx._mappingType = this._errHandler.recoverInline(this);
			} else {
				if (this._input.LA(1) === Token.EOF) {
					this.matchedEOF = true;
				}

				this._errHandler.reportMatch(this);
				this.consume();
			}
			this.state = 5481;
			this.match(HiveSqlParser.KW_MAPPING);
			this.state = 5482;
			_localctx._name = this.match(HiveSqlParser.StringLiteral);
			this.state = 5483;
			this.match(HiveSqlParser.KW_IN);
			this.state = 5484;
			_localctx._rpName = this.id_();
			this.state = 5488;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case HiveSqlParser.KW_TO:
				{
				this.state = 5485;
				this.match(HiveSqlParser.KW_TO);
				this.state = 5486;
				_localctx._path = this.poolPath();
				}
				break;
			case HiveSqlParser.KW_UNMANAGED:
				{
				this.state = 5487;
				this.unmanaged();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			this.state = 5493;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 646, this._ctx) ) {
			case 1:
				{
				this.state = 5490;
				this.match(HiveSqlParser.KW_WITH);
				this.state = 5491;
				this.match(HiveSqlParser.KW_ORDER);
				this.state = 5492;
				_localctx._order = this.match(HiveSqlParser.Number);
				}
				break;
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public alterMappingStatement(): AlterMappingStatementContext {
		let _localctx: AlterMappingStatementContext = new AlterMappingStatementContext(this._ctx, this.state);
		this.enterRule(_localctx, 1038, HiveSqlParser.RULE_alterMappingStatement);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 5495;
			this.match(HiveSqlParser.KW_ALTER);
			this.state = 5496;
			_localctx._mappingType = this._input.LT(1);
			_la = this._input.LA(1);
			if (!(_la === HiveSqlParser.KW_APPLICATION || _la === HiveSqlParser.KW_GROUP || _la === HiveSqlParser.KW_USER)) {
				_localctx._mappingType = this._errHandler.recoverInline(this);
			} else {
				if (this._input.LA(1) === Token.EOF) {
					this.matchedEOF = true;
				}

				this._errHandler.reportMatch(this);
				this.consume();
			}
			this.state = 5497;
			this.match(HiveSqlParser.KW_MAPPING);
			this.state = 5498;
			_localctx._name = this.match(HiveSqlParser.StringLiteral);
			this.state = 5499;
			this.match(HiveSqlParser.KW_IN);
			this.state = 5500;
			_localctx._rpName = this.id_();
			this.state = 5504;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case HiveSqlParser.KW_TO:
				{
				this.state = 5501;
				this.match(HiveSqlParser.KW_TO);
				this.state = 5502;
				_localctx._path = this.poolPath();
				}
				break;
			case HiveSqlParser.KW_UNMANAGED:
				{
				this.state = 5503;
				this.unmanaged();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			this.state = 5509;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 648, this._ctx) ) {
			case 1:
				{
				this.state = 5506;
				this.match(HiveSqlParser.KW_WITH);
				this.state = 5507;
				this.match(HiveSqlParser.KW_ORDER);
				this.state = 5508;
				_localctx._order = this.match(HiveSqlParser.Number);
				}
				break;
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public dropMappingStatement(): DropMappingStatementContext {
		let _localctx: DropMappingStatementContext = new DropMappingStatementContext(this._ctx, this.state);
		this.enterRule(_localctx, 1040, HiveSqlParser.RULE_dropMappingStatement);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 5511;
			this.match(HiveSqlParser.KW_DROP);
			this.state = 5512;
			_localctx._mappingType = this._input.LT(1);
			_la = this._input.LA(1);
			if (!(_la === HiveSqlParser.KW_APPLICATION || _la === HiveSqlParser.KW_GROUP || _la === HiveSqlParser.KW_USER)) {
				_localctx._mappingType = this._errHandler.recoverInline(this);
			} else {
				if (this._input.LA(1) === Token.EOF) {
					this.matchedEOF = true;
				}

				this._errHandler.reportMatch(this);
				this.consume();
			}
			this.state = 5513;
			this.match(HiveSqlParser.KW_MAPPING);
			this.state = 5514;
			_localctx._name = this.match(HiveSqlParser.StringLiteral);
			this.state = 5515;
			this.match(HiveSqlParser.KW_IN);
			this.state = 5516;
			_localctx._rpName = this.id_();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}

	private static readonly _serializedATNSegments: number = 10;
	private static readonly _serializedATNSegment0: string =
		"\x03\uC91D\uCABA\u058D\uAFBA\u4F53\u0607\uEA8B\uC241\x03\u01B7\u1591\x04" +
		"\x02\t\x02\x04\x03\t\x03\x04\x04\t\x04\x04\x05\t\x05\x04\x06\t\x06\x04" +
		"\x07\t\x07\x04\b\t\b\x04\t\t\t\x04\n\t\n\x04\v\t\v\x04\f\t\f\x04\r\t\r" +
		"\x04\x0E\t\x0E\x04\x0F\t\x0F\x04\x10\t\x10\x04\x11\t\x11\x04\x12\t\x12" +
		"\x04\x13\t\x13\x04\x14\t\x14\x04\x15\t\x15\x04\x16\t\x16\x04\x17\t\x17" +
		"\x04\x18\t\x18\x04\x19\t\x19\x04\x1A\t\x1A\x04\x1B\t\x1B\x04\x1C\t\x1C" +
		"\x04\x1D\t\x1D\x04\x1E\t\x1E\x04\x1F\t\x1F\x04 \t \x04!\t!\x04\"\t\"\x04" +
		"#\t#\x04$\t$\x04%\t%\x04&\t&\x04\'\t\'\x04(\t(\x04)\t)\x04*\t*\x04+\t" +
		"+\x04,\t,\x04-\t-\x04.\t.\x04/\t/\x040\t0\x041\t1\x042\t2\x043\t3\x04" +
		"4\t4\x045\t5\x046\t6\x047\t7\x048\t8\x049\t9\x04:\t:\x04;\t;\x04<\t<\x04" +
		"=\t=\x04>\t>\x04?\t?\x04@\t@\x04A\tA\x04B\tB\x04C\tC\x04D\tD\x04E\tE\x04" +
		"F\tF\x04G\tG\x04H\tH\x04I\tI\x04J\tJ\x04K\tK\x04L\tL\x04M\tM\x04N\tN\x04" +
		"O\tO\x04P\tP\x04Q\tQ\x04R\tR\x04S\tS\x04T\tT\x04U\tU\x04V\tV\x04W\tW\x04" +
		"X\tX\x04Y\tY\x04Z\tZ\x04[\t[\x04\\\t\\\x04]\t]\x04^\t^\x04_\t_\x04`\t" +
		"`\x04a\ta\x04b\tb\x04c\tc\x04d\td\x04e\te\x04f\tf\x04g\tg\x04h\th\x04" +
		"i\ti\x04j\tj\x04k\tk\x04l\tl\x04m\tm\x04n\tn\x04o\to\x04p\tp\x04q\tq\x04" +
		"r\tr\x04s\ts\x04t\tt\x04u\tu\x04v\tv\x04w\tw\x04x\tx\x04y\ty\x04z\tz\x04" +
		"{\t{\x04|\t|\x04}\t}\x04~\t~\x04\x7F\t\x7F\x04\x80\t\x80\x04\x81\t\x81" +
		"\x04\x82\t\x82\x04\x83\t\x83\x04\x84\t\x84\x04\x85\t\x85\x04\x86\t\x86" +
		"\x04\x87\t\x87\x04\x88\t\x88\x04\x89\t\x89\x04\x8A\t\x8A\x04\x8B\t\x8B" +
		"\x04\x8C\t\x8C\x04\x8D\t\x8D\x04\x8E\t\x8E\x04\x8F\t\x8F\x04\x90\t\x90" +
		"\x04\x91\t\x91\x04\x92\t\x92\x04\x93\t\x93\x04\x94\t\x94\x04\x95\t\x95" +
		"\x04\x96\t\x96\x04\x97\t\x97\x04\x98\t\x98\x04\x99\t\x99\x04\x9A\t\x9A" +
		"\x04\x9B\t\x9B\x04\x9C\t\x9C\x04\x9D\t\x9D\x04\x9E\t\x9E\x04\x9F\t\x9F" +
		"\x04\xA0\t\xA0\x04\xA1\t\xA1\x04\xA2\t\xA2\x04\xA3\t\xA3\x04\xA4\t\xA4" +
		"\x04\xA5\t\xA5\x04\xA6\t\xA6\x04\xA7\t\xA7\x04\xA8\t\xA8\x04\xA9\t\xA9" +
		"\x04\xAA\t\xAA\x04\xAB\t\xAB\x04\xAC\t\xAC\x04\xAD\t\xAD\x04\xAE\t\xAE" +
		"\x04\xAF\t\xAF\x04\xB0\t\xB0\x04\xB1\t\xB1\x04\xB2\t\xB2\x04\xB3\t\xB3" +
		"\x04\xB4\t\xB4\x04\xB5\t\xB5\x04\xB6\t\xB6\x04\xB7\t\xB7\x04\xB8\t\xB8" +
		"\x04\xB9\t\xB9\x04\xBA\t\xBA\x04\xBB\t\xBB\x04\xBC\t\xBC\x04\xBD\t\xBD" +
		"\x04\xBE\t\xBE\x04\xBF\t\xBF\x04\xC0\t\xC0\x04\xC1\t\xC1\x04\xC2\t\xC2" +
		"\x04\xC3\t\xC3\x04\xC4\t\xC4\x04\xC5\t\xC5\x04\xC6\t\xC6\x04\xC7\t\xC7" +
		"\x04\xC8\t\xC8\x04\xC9\t\xC9\x04\xCA\t\xCA\x04\xCB\t\xCB\x04\xCC\t\xCC" +
		"\x04\xCD\t\xCD\x04\xCE\t\xCE\x04\xCF\t\xCF\x04\xD0\t\xD0\x04\xD1\t\xD1" +
		"\x04\xD2\t\xD2\x04\xD3\t\xD3\x04\xD4\t\xD4\x04\xD5\t\xD5\x04\xD6\t\xD6" +
		"\x04\xD7\t\xD7\x04\xD8\t\xD8\x04\xD9\t\xD9\x04\xDA\t\xDA\x04\xDB\t\xDB" +
		"\x04\xDC\t\xDC\x04\xDD\t\xDD\x04\xDE\t\xDE\x04\xDF\t\xDF\x04\xE0\t\xE0" +
		"\x04\xE1\t\xE1\x04\xE2\t\xE2\x04\xE3\t\xE3\x04\xE4\t\xE4\x04\xE5\t\xE5" +
		"\x04\xE6\t\xE6\x04\xE7\t\xE7\x04\xE8\t\xE8\x04\xE9\t\xE9\x04\xEA\t\xEA" +
		"\x04\xEB\t\xEB\x04\xEC\t\xEC\x04\xED\t\xED\x04\xEE\t\xEE\x04\xEF\t\xEF" +
		"\x04\xF0\t\xF0\x04\xF1\t\xF1\x04\xF2\t\xF2\x04\xF3\t\xF3\x04\xF4\t\xF4" +
		"\x04\xF5\t\xF5\x04\xF6\t\xF6\x04\xF7\t\xF7\x04\xF8\t\xF8\x04\xF9\t\xF9" +
		"\x04\xFA\t\xFA\x04\xFB\t\xFB\x04\xFC\t\xFC\x04\xFD\t\xFD\x04\xFE\t\xFE" +
		"\x04\xFF\t\xFF\x04\u0100\t\u0100\x04\u0101\t\u0101\x04\u0102\t\u0102\x04" +
		"\u0103\t\u0103\x04\u0104\t\u0104\x04\u0105\t\u0105\x04\u0106\t\u0106\x04" +
		"\u0107\t\u0107\x04\u0108\t\u0108\x04\u0109\t\u0109\x04\u010A\t\u010A\x04" +
		"\u010B\t\u010B\x04\u010C\t\u010C\x04\u010D\t\u010D\x04\u010E\t\u010E\x04" +
		"\u010F\t\u010F\x04\u0110\t\u0110\x04\u0111\t\u0111\x04\u0112\t\u0112\x04" +
		"\u0113\t\u0113\x04\u0114\t\u0114\x04\u0115\t\u0115\x04\u0116\t\u0116\x04" +
		"\u0117\t\u0117\x04\u0118\t\u0118\x04\u0119\t\u0119\x04\u011A\t\u011A\x04" +
		"\u011B\t\u011B\x04\u011C\t\u011C\x04\u011D\t\u011D\x04\u011E\t\u011E\x04" +
		"\u011F\t\u011F\x04\u0120\t\u0120\x04\u0121\t\u0121\x04\u0122\t\u0122\x04" +
		"\u0123\t\u0123\x04\u0124\t\u0124\x04\u0125\t\u0125\x04\u0126\t\u0126\x04" +
		"\u0127\t\u0127\x04\u0128\t\u0128\x04\u0129\t\u0129\x04\u012A\t\u012A\x04" +
		"\u012B\t\u012B\x04\u012C\t\u012C\x04\u012D\t\u012D\x04\u012E\t\u012E\x04" +
		"\u012F\t\u012F\x04\u0130\t\u0130\x04\u0131\t\u0131\x04\u0132\t\u0132\x04" +
		"\u0133\t\u0133\x04\u0134\t\u0134\x04\u0135\t\u0135\x04\u0136\t\u0136\x04" +
		"\u0137\t\u0137\x04\u0138\t\u0138\x04\u0139\t\u0139\x04\u013A\t\u013A\x04" +
		"\u013B\t\u013B\x04\u013C\t\u013C\x04\u013D\t\u013D\x04\u013E\t\u013E\x04" +
		"\u013F\t\u013F\x04\u0140\t\u0140\x04\u0141\t\u0141\x04\u0142\t\u0142\x04" +
		"\u0143\t\u0143\x04\u0144\t\u0144\x04\u0145\t\u0145\x04\u0146\t\u0146\x04" +
		"\u0147\t\u0147\x04\u0148\t\u0148\x04\u0149\t\u0149\x04\u014A\t\u014A\x04" +
		"\u014B\t\u014B\x04\u014C\t\u014C\x04\u014D\t\u014D\x04\u014E\t\u014E\x04" +
		"\u014F\t\u014F\x04\u0150\t\u0150\x04\u0151\t\u0151\x04\u0152\t\u0152\x04" +
		"\u0153\t\u0153\x04\u0154\t\u0154\x04\u0155\t\u0155\x04\u0156\t\u0156\x04" +
		"\u0157\t\u0157\x04\u0158\t\u0158\x04\u0159\t\u0159\x04\u015A\t\u015A\x04" +
		"\u015B\t\u015B\x04\u015C\t\u015C\x04\u015D\t\u015D\x04\u015E\t\u015E\x04" +
		"\u015F\t\u015F\x04\u0160\t\u0160\x04\u0161\t\u0161\x04\u0162\t\u0162\x04" +
		"\u0163\t\u0163\x04\u0164\t\u0164\x04\u0165\t\u0165\x04\u0166\t\u0166\x04" +
		"\u0167\t\u0167\x04\u0168\t\u0168\x04\u0169\t\u0169\x04\u016A\t\u016A\x04" +
		"\u016B\t\u016B\x04\u016C\t\u016C\x04\u016D\t\u016D\x04\u016E\t\u016E\x04" +
		"\u016F\t\u016F\x04\u0170\t\u0170\x04\u0171\t\u0171\x04\u0172\t\u0172\x04" +
		"\u0173\t\u0173\x04\u0174\t\u0174\x04\u0175\t\u0175\x04\u0176\t\u0176\x04" +
		"\u0177\t\u0177\x04\u0178\t\u0178\x04\u0179\t\u0179\x04\u017A\t\u017A\x04" +
		"\u017B\t\u017B\x04\u017C\t\u017C\x04\u017D\t\u017D\x04\u017E\t\u017E\x04" +
		"\u017F\t\u017F\x04\u0180\t\u0180\x04\u0181\t\u0181\x04\u0182\t\u0182\x04" +
		"\u0183\t\u0183\x04\u0184\t\u0184\x04\u0185\t\u0185\x04\u0186\t\u0186\x04" +
		"\u0187\t\u0187\x04\u0188\t\u0188\x04\u0189\t\u0189\x04\u018A\t\u018A\x04" +
		"\u018B\t\u018B\x04\u018C\t\u018C\x04\u018D\t\u018D\x04\u018E\t\u018E\x04" +
		"\u018F\t\u018F\x04\u0190\t\u0190\x04\u0191\t\u0191\x04\u0192\t\u0192\x04" +
		"\u0193\t\u0193\x04\u0194\t\u0194\x04\u0195\t\u0195\x04\u0196\t\u0196\x04" +
		"\u0197\t\u0197\x04\u0198\t\u0198\x04\u0199\t\u0199\x04\u019A\t\u019A\x04" +
		"\u019B\t\u019B\x04\u019C\t\u019C\x04\u019D\t\u019D\x04\u019E\t\u019E\x04" +
		"\u019F\t\u019F\x04\u01A0\t\u01A0\x04\u01A1\t\u01A1\x04\u01A2\t\u01A2\x04" +
		"\u01A3\t\u01A3\x04\u01A4\t\u01A4\x04\u01A5\t\u01A5\x04\u01A6\t\u01A6\x04" +
		"\u01A7\t\u01A7\x04\u01A8\t\u01A8\x04\u01A9\t\u01A9\x04\u01AA\t\u01AA\x04" +
		"\u01AB\t\u01AB\x04\u01AC\t\u01AC\x04\u01AD\t\u01AD\x04\u01AE\t\u01AE\x04" +
		"\u01AF\t\u01AF\x04\u01B0\t\u01B0\x04\u01B1\t\u01B1\x04\u01B2\t\u01B2\x04" +
		"\u01B3\t\u01B3\x04\u01B4\t\u01B4\x04\u01B5\t\u01B5\x04\u01B6\t\u01B6\x04" +
		"\u01B7\t\u01B7\x04\u01B8\t\u01B8\x04\u01B9\t\u01B9\x04\u01BA\t\u01BA\x04" +
		"\u01BB\t\u01BB\x04\u01BC\t\u01BC\x04\u01BD\t\u01BD\x04\u01BE\t\u01BE\x04" +
		"\u01BF\t\u01BF\x04\u01C0\t\u01C0\x04\u01C1\t\u01C1\x04\u01C2\t\u01C2\x04" +
		"\u01C3\t\u01C3\x04\u01C4\t\u01C4\x04\u01C5\t\u01C5\x04\u01C6\t\u01C6\x04" +
		"\u01C7\t\u01C7\x04\u01C8\t\u01C8\x04\u01C9\t\u01C9\x04\u01CA\t\u01CA\x04" +
		"\u01CB\t\u01CB\x04\u01CC\t\u01CC\x04\u01CD\t\u01CD\x04\u01CE\t\u01CE\x04" +
		"\u01CF\t\u01CF\x04\u01D0\t\u01D0\x04\u01D1\t\u01D1\x04\u01D2\t\u01D2\x04" +
		"\u01D3\t\u01D3\x04\u01D4\t\u01D4\x04\u01D5\t\u01D5\x04\u01D6\t\u01D6\x04" +
		"\u01D7\t\u01D7\x04\u01D8\t\u01D8\x04\u01D9\t\u01D9\x04\u01DA\t\u01DA\x04" +
		"\u01DB\t\u01DB\x04\u01DC\t\u01DC\x04\u01DD\t\u01DD\x04\u01DE\t\u01DE\x04" +
		"\u01DF\t\u01DF\x04\u01E0\t\u01E0\x04\u01E1\t\u01E1\x04\u01E2\t\u01E2\x04" +
		"\u01E3\t\u01E3\x04\u01E4\t\u01E4\x04\u01E5\t\u01E5\x04\u01E6\t\u01E6\x04" +
		"\u01E7\t\u01E7\x04\u01E8\t\u01E8\x04\u01E9\t\u01E9\x04\u01EA\t\u01EA\x04" +
		"\u01EB\t\u01EB\x04\u01EC\t\u01EC\x04\u01ED\t\u01ED\x04\u01EE\t\u01EE\x04" +
		"\u01EF\t\u01EF\x04\u01F0\t\u01F0\x04\u01F1\t\u01F1\x04\u01F2\t\u01F2\x04" +
		"\u01F3\t\u01F3\x04\u01F4\t\u01F4\x04\u01F5\t\u01F5\x04\u01F6\t\u01F6\x04" +
		"\u01F7\t\u01F7\x04\u01F8\t\u01F8\x04\u01F9\t\u01F9\x04\u01FA\t\u01FA\x04" +
		"\u01FB\t\u01FB\x04\u01FC\t\u01FC\x04\u01FD\t\u01FD\x04\u01FE\t\u01FE\x04" +
		"\u01FF\t\u01FF\x04\u0200\t\u0200\x04\u0201\t\u0201\x04\u0202\t\u0202\x04" +
		"\u0203\t\u0203\x04\u0204\t\u0204\x04\u0205\t\u0205\x04\u0206\t\u0206\x04" +
		"\u0207\t\u0207\x04\u0208\t\u0208\x04\u0209\t\u0209\x04\u020A\t\u020A\x03" +
		"\x02\x07\x02\u0416\n\x02\f\x02\x0E\x02\u0419\v\x02\x03\x02\x03\x02\x03" +
		"\x03\x03\x03\x05\x03\u041F\n\x03\x03\x03\x05\x03\u0422\n\x03\x03\x04\x03" +
		"\x04\x07\x04\u0426\n\x04\f\x04\x0E\x04\u0429\v\x04\x03\x04\x03\x04\x03" +
		"\x04\x05\x04\u042E\n\x04\x03\x05\x03\x05\x03\x05\x03\x05\x03\x05\x05\x05" +
		"\u0435\n\x05\x03\x05\x03\x05\x03\x05\x03\x05\x03\x05\x03\x05\x03\x05\x03" +
		"\x05\x05\x05\u043F\n\x05\x03\x05\x05\x05\u0442\n\x05\x03\x05\x03\x05\x05" +
		"\x05\u0446\n\x05\x03\x06\x03\x06\x03\x07\x03\x07\x03\b\x03\b\x03\b\x03" +
		"\b\x03\b\x03\b\x03\b\x03\b\x03\b\x03\b\x03\b\x03\b\x03\b\x03\b\x05\b\u045A" +
		"\n\b\x03\t\x03\t\x03\t\x05\t\u045F\n\t\x03\t\x03\t\x03\t\x05\t\u0464\n" +
		"\t\x03\t\x03\t\x03\t\x03\t\x05\t\u046A\n\t\x03\n\x03\n\x03\n\x03\v\x03" +
		"\v\x05\v\u0471\n\v\x03\v\x03\v\x03\v\x03\v\x03\v\x03\f\x03\f\x03\f\x03" +
		"\f\x03\f\x03\f\x05\f\u047E\n\f\x03\r\x03\r\x05\r\u0482\n\r\x03\r\x03\r" +
		"\x05\r\u0486\n\r\x03\r\x03\r\x03\r\x05\r\u048B\n\r\x03\x0E\x03\x0E\x03" +
		"\x0E\x03\x0E\x03\x0E\x05\x0E\u0492\n\x0E\x03\x0E\x03\x0E\x05\x0E\u0496" +
		"\n\x0E\x03\x0F\x03\x0F\x03\x0F\x05\x0F\u049B\n\x0F\x03\x10\x03\x10\x03" +
		"\x10\x03\x10\x03\x10\x05\x10\u04A2\n\x10\x03\x10\x03\x10\x05\x10\u04A6" +
		"\n\x10\x03\x11\x03\x11\x03\x11\x03\x11\x03\x12\x03\x12\x03\x12\x07\x12" +
		"\u04AF\n\x12\f\x12\x0E\x12\u04B2\v\x12\x03\x13\x03\x13\x03\x13\x05\x13" +
		"\u04B7\n\x13\x03\x14\x03\x14\x03\x14\x03\x14\x03\x14\x05\x14\u04BE\n\x14" +
		"\x03\x15\x03\x15\x03\x15\x03\x15\x03\x15\x03\x15\x03\x15\x03\x15\x03\x15" +
		"\x03\x15\x03\x15\x03\x15\x03\x15\x03\x15\x03\x15\x03\x15\x03\x15\x03\x15" +
		"\x03\x15\x03\x15\x03\x15\x03\x15\x03\x15\x03\x15\x03\x15\x03\x15\x03\x15" +
		"\x03\x15\x03\x15\x03\x15\x03\x15\x03\x15\x03\x15\x03\x15\x03\x15\x03\x15" +
		"\x03\x15\x03\x15\x03\x15\x03\x15\x03\x15\x03\x15\x03\x15\x03\x15\x03\x15" +
		"\x03\x15\x03\x15\x05\x15\u04EF\n\x15\x03\x16\x03\x16\x03\x16\x03\x17\x03" +
		"\x17\x03\x18\x03\x18\x03\x18\x03\x18\x03\x19\x03\x19\x03\x1A\x03\x1A\x03" +
		"\x1A\x03\x1B\x03\x1B\x03\x1B\x03\x1C\x03\x1C\x03\x1C\x03\x1C\x03\x1D\x03" +
		"\x1D\x03\x1D\x03\x1E\x03\x1E\x05\x1E\u050B\n\x1E\x03\x1E\x03\x1E\x05\x1E" +
		"\u050F\n\x1E\x03\x1E\x03\x1E\x05\x1E\u0513\n\x1E\x03\x1E\x05\x1E\u0516" +
		"\n\x1E\x03\x1E\x05\x1E\u0519\n\x1E\x03\x1E\x03\x1E\x03\x1E\x05\x1E\u051E" +
		"\n\x1E\x03\x1E\x03\x1E\x03\x1E\x03\x1E\x05\x1E\u0524\n\x1E\x03\x1E\x03" +
		"\x1E\x05\x1E\u0528\n\x1E\x03\x1E\x03\x1E\x03\x1E\x03\x1E\x05\x1E\u052E" +
		"\n\x1E\x05\x1E\u0530\n\x1E\x03\x1F\x03\x1F\x03\x1F\x03 \x03 \x03 \x03" +
		"!\x03!\x03!\x03!\x03\"\x03\"\x03\"\x07\"\u053F\n\"\f\"\x0E\"\u0542\v\"" +
		"\x03#\x03#\x03#\x03$\x03$\x03$\x03%\x03%\x03%\x05%\u054D\n%\x03%\x03%" +
		"\x05%\u0551\n%\x03&\x03&\x03&\x03\'\x03\'\x05\'\u0558\n\'\x03\'\x03\'" +
		"\x03\'\x03\'\x03\'\x03\'\x05\'\u0560\n\'\x03\'\x05\'\u0563\n\'\x03(\x03" +
		"(\x03(\x05(\u0568\n(\x03(\x03(\x05(\u056C\n(\x03(\x05(\u056F\n(\x03)\x03" +
		")\x03)\x03)\x03)\x03*\x03*\x03*\x05*\u0579\n*\x03*\x03*\x03*\x03*\x03" +
		"*\x03*\x05*\u0581\n*\x07*\u0583\n*\f*\x0E*\u0586\v*\x05*\u0588\n*\x03" +
		"+\x03+\x05+\u058C\n+\x03,\x03,\x05,\u0590\n,\x03,\x05,\u0593\n,\x03-\x03" +
		"-\x03-\x05-\u0598\n-\x03-\x03-\x03-\x03-\x05-\u059E\n-\x03-\x03-\x03-" +
		"\x05-\u05A3\n-\x03-\x03-\x03-\x05-\u05A8\n-\x03-\x03-\x05-\u05AC\n-\x03" +
		".\x03.\x03.\x03.\x03.\x03.\x03.\x03.\x03.\x05.\u05B7\n.\x05.\u05B9\n." +
		"\x03.\x03.\x05.\u05BD\n.\x03/\x03/\x030\x030\x031\x031\x031\x031\x051" +
		"\u05C7\n1\x031\x031\x051\u05CB\n1\x031\x031\x031\x031\x051\u05D1\n1\x03" +
		"1\x051\u05D4\n1\x031\x031\x031\x031\x031\x051\u05DB\n1\x031\x031\x031" +
		"\x051\u05E0\n1\x031\x031\x031\x031\x031\x031\x051\u05E8\n1\x031\x031\x03" +
		"1\x051\u05ED\n1\x031\x031\x051\u05F1\n1\x031\x031\x031\x031\x031\x031" +
		"\x051\u05F9\n1\x031\x031\x031\x051\u05FE\n1\x031\x031\x031\x031\x051\u0604" +
		"\n1\x031\x031\x031\x031\x051\u060A\n1\x031\x051\u060D\n1\x031\x051\u0610" +
		"\n1\x031\x051\u0613\n1\x031\x031\x031\x031\x031\x031\x031\x051\u061C\n" +
		"1\x031\x031\x031\x031\x031\x031\x051\u0624\n1\x031\x031\x031\x051\u0629" +
		"\n1\x031\x031\x031\x031\x031\x031\x051\u0631\n1\x031\x031\x031\x031\x03" +
		"1\x051\u0638\n1\x031\x051\u063B\n1\x031\x051\u063E\n1\x051\u0640\n1\x03" +
		"1\x031\x031\x031\x031\x031\x051\u0648\n1\x031\x051\u064B\n1\x031\x051" +
		"\u064E\n1\x031\x051\u0651\n1\x031\x051\u0654\n1\x031\x051\u0657\n1\x03" +
		"1\x051\u065A\n1\x031\x051\u065D\n1\x031\x051\u0660\n1\x031\x051\u0663" +
		"\n1\x031\x051\u0666\n1\x051\u0668\n1\x031\x031\x031\x031\x031\x031\x03" +
		"1\x031\x031\x031\x051\u0674\n1\x031\x031\x031\x031\x051\u067A\n1\x031" +
		"\x031\x031\x031\x031\x031\x051\u0682\n1\x051\u0684\n1\x032\x032\x032\x03" +
		"2\x032\x032\x032\x032\x052\u068E\n2\x033\x033\x033\x033\x053\u0694\n3" +
		"\x033\x033\x034\x034\x034\x034\x034\x035\x035\x036\x036\x036\x036\x05" +
		"6\u06A3\n6\x037\x037\x037\x037\x038\x038\x038\x038\x039\x039\x039\x03" +
		"9\x03:\x03:\x03:\x05:\u06B4\n:\x03:\x03:\x03:\x05:\u06B9\n:\x03;\x03;" +
		"\x05;\u06BD\n;\x03;\x03;\x05;\u06C1\n;\x03;\x03;\x03;\x03<\x03<\x05<\u06C8" +
		"\n<\x03<\x03<\x03<\x07<\u06CD\n<\f<\x0E<\u06D0\v<\x03<\x03<\x03<\x05<" +
		"\u06D5\n<\x03=\x03=\x05=\u06D9\n=\x03=\x05=\u06DC\n=\x03=\x03=\x03=\x07" +
		"=\u06E1\n=\f=\x0E=\u06E4\v=\x03=\x03=\x03=\x03>\x03>\x03>\x03>\x03>\x03" +
		"?\x03?\x03?\x03@\x03@\x03@\x03@\x03A\x03A\x03A\x03A\x03A\x05A\u06FA\n" +
		"A\x03B\x03B\x03B\x05B\u06FF\nB\x03B\x03B\x05B\u0703\nB\x03C\x03C\x03C" +
		"\x03C\x03D\x03D\x05D\u070B\nD\x03E\x03E\x03E\x03F\x03F\x03F\x03F\x05F" +
		"\u0714\nF\x03F\x03F\x05F\u0718\nF\x03F\x03F\x03F\x03F\x05F\u071E\nF\x03" +
		"G\x03G\x03G\x03G\x05G\u0724\nG\x03G\x03G\x03G\x03G\x03G\x05G\u072B\nG" +
		"\x03G\x05G\u072E\nG\x03G\x03G\x03G\x03G\x05G\u0734\nG\x03H\x03H\x03H\x07" +
		"H\u0739\nH\fH\x0EH\u073C\vH\x03I\x03I\x03I\x03I\x03I\x05I\u0743\nI\x03" +
		"J\x03J\x03K\x03K\x03K\x07K\u074A\nK\fK\x0EK\u074D\vK\x03L\x03L\x03L\x03" +
		"L\x03L\x03L\x05L\u0755\nL\x03M\x03M\x03M\x03M\x03M\x05M\u075C\nM\x03N" +
		"\x03N\x03N\x03N\x03O\x03O\x03O\x03O\x03P\x03P\x03P\x03P\x03Q\x03Q\x03" +
		"Q\x03Q\x03R\x03R\x05R\u0770\nR\x03R\x03R\x03R\x03R\x03R\x05R\u0777\nR" +
		"\x05R\u0779\nR\x03S\x03S\x03S\x07S\u077E\nS\fS\x0ES\u0781\vS\x03T\x03" +
		"T\x03T\x03U\x03U\x03V\x03V\x05V\u078A\nV\x03V\x03V\x03V\x03V\x03V\x03" +
		"V\x05V\u0792\nV\x03W\x03W\x05W\u0796\nW\x03W\x03W\x05W\u079A\nW\x03W\x03" +
		"W\x03X\x03X\x03X\x03Y\x03Y\x03Y\x03Y\x03Y\x03Y\x05Y\u07A7\nY\x03Y\x03" +
		"Y\x03Y\x03Z\x03Z\x03Z\x03Z\x05Z\u07B0\nZ\x03Z\x03Z\x03[\x03[\x03[\x03" +
		"[\x03[\x03[\x03[\x03[\x03[\x03[\x03[\x03[\x05[\u07C0\n[\x03[\x03[\x05" +
		"[\u07C4\n[\x03[\x03[\x03[\x05[\u07C9\n[\x03[\x03[\x03[\x05[\u07CE\n[\x03" +
		"[\x05[\u07D1\n[\x03[\x05[\u07D4\n[\x03[\x03[\x05[\u07D8\n[\x03[\x05[\u07DB" +
		"\n[\x03[\x05[\u07DE\n[\x03\\\x03\\\x03\\\x05\\\u07E3\n\\\x03\\\x03\\\x03" +
		"\\\x03\\\x03]\x03]\x05]\u07EB\n]\x03]\x03]\x05]\u07EF\n]\x03]\x03]\x03" +
		"]\x03]\x03]\x05]\u07F6\n]\x03]\x05]\u07F9\n]\x03]\x05]\u07FC\n]\x03]\x05" +
		"]\u07FF\n]\x03]\x03]\x03]\x03^\x03^\x03^\x03^\x03^\x03^\x03^\x05^\u080B" +
		"\n^\x03^\x03^\x03_\x03_\x05_\u0811\n_\x03`\x03`\x03`\x03`\x03`\x03`\x03" +
		"a\x03a\x03a\x03b\x03b\x03b\x03b\x03b\x03b\x03c\x03c\x03c\x03c\x03c\x03" +
		"c\x03d\x03d\x03d\x05d\u082B\nd\x03d\x03d\x03e\x03e\x03e\x03e\x05e\u0833" +
		"\ne\x03e\x03e\x05e\u0837\ne\x03e\x05e\u083A\ne\x03e\x05e\u083D\ne\x03" +
		"e\x05e\u0840\ne\x03e\x05e\u0843\ne\x03e\x05e\u0846\ne\x03e\x05e\u0849" +
		"\ne\x03e\x05e\u084C\ne\x03e\x03e\x03e\x03f\x03f\x03f\x03f\x05f\u0855\n" +
		"f\x03f\x03f\x03g\x03g\x03g\x03g\x03g\x03g\x05g\u085F\ng\x03g\x05g\u0862" +
		"\ng\x03g\x03g\x03h\x03h\x03h\x03h\x03h\x03i\x03i\x03i\x03i\x03i\x03i\x03" +
		"j\x03j\x03j\x03j\x03j\x05j\u0876\nj\x03k\x03k\x03k\x03k\x05k\u087C\nk" +
		"\x03k\x03k\x03k\x03k\x05k\u0882\nk\x03k\x05k\u0885\nk\x05k\u0887\nk\x03" +
		"l\x03l\x03l\x03l\x03m\x05m\u088E\nm\x03m\x03m\x03m\x03n\x03n\x05n\u0895" +
		"\nn\x03o\x03o\x03o\x03p\x03p\x03p\x03p\x03p\x05p\u089F\np\x03p\x03p\x03" +
		"p\x05p\u08A4\np\x03p\x03p\x03q\x03q\x03q\x07q\u08AB\nq\fq\x0Eq\u08AE\v" +
		"q\x03r\x03r\x03r\x07r\u08B3\nr\fr\x0Er\u08B6\vr\x03s\x03s\x03s\x07s\u08BB" +
		"\ns\fs\x0Es\u08BE\vs\x03t\x03t\x03u\x03u\x03u\x03u\x03u\x05u\u08C7\nu" +
		"\x03u\x03u\x03u\x03u\x03u\x03u\x03u\x03u\x03u\x03u\x03u\x05u\u08D4\nu" +
		"\x03v\x03v\x03v\x03v\x03v\x03v\x03v\x03v\x03v\x03v\x03v\x05v\u08E1\nv" +
		"\x03v\x03v\x03v\x03v\x03w\x03w\x03w\x03w\x03w\x03x\x03x\x03x\x03x\x03" +
		"x\x03x\x03x\x03x\x03x\x03x\x05x\u08F6\nx\x03y\x03y\x05y\u08FA\ny\x03z" +
		"\x03z\x03z\x03{\x03{\x03{\x03|\x03|\x03|\x03|\x03|\x03|\x03|\x05|\u0909" +
		"\n|\x03}\x03}\x03}\x03}\x05}\u090F\n}\x03}\x05}\u0912\n}\x03}\x05}\u0915" +
		"\n}\x03}\x05}\u0918\n}\x03}\x05}\u091B\n}\x03~\x03~\x05~\u091F\n~\x03" +
		"\x7F\x03\x7F\x03\x7F\x03\x80\x03\x80\x03\x80\x03\x80\x03\x81\x03\x81\x03" +
		"\x81\x07\x81\u092B\n\x81\f\x81\x0E\x81\u092E\v\x81\x03\x81\x03\x81\x03" +
		"\x81\x07\x81\u0933\n\x81\f\x81\x0E\x81\u0936\v\x81\x05\x81\u0938\n\x81" +
		"\x03\x82\x03\x82\x03\x82\x03\x82\x03\x83\x03\x83\x03\x84\x03\x84\x03\x84" +
		"\x03\x84\x03\x84\x03\x84\x03\x84\x05\x84\u0947\n\x84\x03\x85\x03\x85\x03" +
		"\x85\x03\x85\x03\x85\x03\x85\x03\x86\x03\x86\x03\x86\x03\x86\x03\x86\x03" +
		"\x86\x03\x87";
	private static readonly _serializedATNSegment1: string =
		"\x03\x87\x03\x87\x03\x87\x03\x87\x03\x88\x03\x88\x03\x88\x03\x88\x03\x88" +
		"\x03\x89\x03\x89\x03\x89\x03\x89\x03\x89\x03\x89\x03\x89\x03\x89\x03\x89" +
		"\x03\x89\x05\x89\u0969\n\x89\x03\x89\x03\x89\x03\x89\x03\x89\x03\x89\x03" +
		"\x89\x05\x89\u0971\n\x89\x03\x89\x03\x89\x03\x89\x05\x89\u0976\n\x89\x03" +
		"\x89\x03\x89\x03\x89\x03\x89\x03\x89\x03\x89\x05\x89\u097E\n\x89\x03\x89" +
		"\x03\x89\x03\x89\x05\x89\u0983\n\x89\x03\x89\x03\x89\x03\x89\x05\x89\u0988" +
		"\n\x89\x03\x8A\x03\x8A\x03\x8A\x03\x8B\x03\x8B\x03\x8B\x07\x8B\u0990\n" +
		"\x8B\f\x8B\x0E\x8B\u0993\v\x8B\x03\x8C\x03\x8C\x03\x8C\x07\x8C\u0998\n" +
		"\x8C\f\x8C\x0E\x8C\u099B\v\x8C\x03\x8D\x03\x8D\x03\x8D\x07\x8D\u09A0\n" +
		"\x8D\f\x8D\x0E\x8D\u09A3\v\x8D\x03\x8E\x03\x8E\x03\x8E\x07\x8E\u09A8\n" +
		"\x8E\f\x8E\x0E\x8E\u09AB\v\x8E\x03\x8F\x03\x8F\x03\x8F\x07\x8F\u09B0\n" +
		"\x8F\f\x8F\x0E\x8F\u09B3\v\x8F\x03\x90\x03\x90\x03\x91\x03\x91\x03\x91" +
		"\x03\x91\x03\x91\x03\x91\x05\x91\u09BD\n\x91\x07\x91\u09BF\n\x91\f\x91" +
		"\x0E\x91\u09C2\v\x91\x03\x92\x03\x92\x03\x92\x07\x92\u09C7\n\x92\f\x92" +
		"\x0E\x92\u09CA\v\x92\x03\x93\x03\x93\x03\x93\x03\x93\x03\x94\x03\x94\x05" +
		"\x94\u09D2\n\x94\x03\x94\x05\x94\u09D5\n\x94\x03\x95\x03\x95\x05\x95\u09D9" +
		"\n\x95\x03\x96\x03\x96\x03\x97\x03\x97\x03\x97\x05\x97\u09E0\n\x97\x03" +
		"\x98\x03\x98\x03\x99\x03\x99\x05\x99\u09E6\n\x99\x03\x99\x03\x99\x05\x99" +
		"\u09EA\n\x99\x03\x9A\x03\x9A\x03\x9A\x03\x9A\x05\x9A\u09F0\n\x9A\x03\x9B" +
		"\x03\x9B\x05\x9B\u09F4\n\x9B\x03\x9C\x03\x9C\x03\x9C\x03\x9D\x03\x9D\x03" +
		"\x9D\x03\x9D\x03\x9D\x03\x9E\x03\x9E\x05\x9E\u0A00\n\x9E\x03\x9E\x03\x9E" +
		"\x03\x9E\x03\x9E\x03\x9E\x03\x9E\x03\x9E\x05\x9E\u0A09\n\x9E\x03\x9F\x03" +
		"\x9F\x03\x9F\x03\x9F\x03\x9F\x03\x9F\x03\x9F\x03\x9F\x03\x9F\x05\x9F\u0A14" +
		"\n\x9F\x03\xA0\x03\xA0\x05\xA0\u0A18\n\xA0\x03\xA1\x03\xA1\x03\xA1\x07" +
		"\xA1\u0A1D\n\xA1\f\xA1\x0E\xA1\u0A20\v\xA1\x03\xA2\x03\xA2\x03\xA2\x03" +
		"\xA2\x03\xA3\x03\xA3\x03\xA3\x07\xA3\u0A29\n\xA3\f\xA3\x0E\xA3\u0A2C\v" +
		"\xA3\x03\xA4\x03\xA4\x03\xA5\x03\xA5\x05\xA5\u0A32\n\xA5\x03\xA6\x03\xA6" +
		"\x03\xA7\x03\xA7\x03\xA7\x03\xA8\x03\xA8\x05\xA8\u0A3B\n\xA8\x03\xA8\x05" +
		"\xA8\u0A3E\n\xA8\x03\xA9\x03\xA9\x03\xA9\x07\xA9\u0A43\n\xA9\f\xA9\x0E" +
		"\xA9\u0A46\v\xA9\x03\xAA\x03\xAA\x03\xAA\x05\xAA\u0A4B\n\xAA\x03\xAB\x03" +
		"\xAB\x03\xAC\x03\xAC\x05\xAC\u0A51\n\xAC\x03\xAC\x05\xAC\u0A54\n\xAC\x03" +
		"\xAC\x05\xAC\u0A57\n\xAC\x03\xAD\x03\xAD\x03\xAD\x03\xAD\x05\xAD\u0A5D" +
		"\n\xAD\x03\xAE\x03\xAE\x05\xAE\u0A61\n\xAE\x03\xAF\x03\xAF\x05\xAF\u0A65" +
		"\n\xAF\x03\xB0\x03\xB0\x03\xB0\x05\xB0\u0A6A\n\xB0\x03\xB0\x03\xB0\x05" +
		"\xB0\u0A6E\n\xB0\x03\xB1\x03\xB1\x05\xB1\u0A72\n\xB1\x03\xB2\x03\xB2\x05" +
		"\xB2\u0A76\n\xB2\x03\xB2\x03\xB2\x03\xB2\x03\xB2\x03\xB2\x03\xB2\x05\xB2" +
		"\u0A7E\n\xB2\x03\xB3\x03\xB3\x05\xB3\u0A82\n\xB3\x03\xB3\x03\xB3\x05\xB3" +
		"\u0A86\n\xB3\x03\xB4\x03\xB4\x05\xB4\u0A8A\n\xB4\x03\xB5\x03\xB5\x05\xB5" +
		"\u0A8E\n\xB5\x03\xB5\x03\xB5\x03\xB5\x03\xB5\x03\xB5\x03\xB5\x05\xB5\u0A96" +
		"\n\xB5\x03\xB6\x03\xB6\x05\xB6\u0A9A\n\xB6\x03\xB6\x03\xB6\x05\xB6\u0A9E" +
		"\n\xB6\x03\xB7\x03\xB7\x03\xB7\x03\xB7\x03\xB7\x03\xB7\x05\xB7\u0AA6\n" +
		"\xB7\x03\xB8\x03\xB8\x03\xB8\x05\xB8\u0AAB\n\xB8\x03\xB9\x03\xB9\x03\xB9" +
		"\x05\xB9\u0AB0\n\xB9\x03\xBA\x03\xBA\x05\xBA\u0AB4\n\xBA\x03\xBB\x03\xBB" +
		"\x05\xBB\u0AB8\n\xBB\x03\xBC\x03\xBC\x03\xBC\x03\xBC\x03\xBC\x05\xBC\u0ABF" +
		"\n\xBC\x03\xBD\x03\xBD\x03\xBE\x03\xBE\x03\xBE\x07\xBE\u0AC6\n\xBE\f\xBE" +
		"\x0E\xBE\u0AC9\v\xBE\x03\xBF\x03\xBF\x03\xBF\x03\xBF\x03\xBF\x05\xBF\u0AD0" +
		"\n\xBF\x03\xC0\x03\xC0\x03\xC0\x03\xC0\x03\xC0\x03\xC0\x03\xC0\x03\xC0" +
		"\x03\xC0\x03\xC0\x05\xC0\u0ADC\n\xC0\x03\xC0\x03\xC0\x03\xC0\x03\xC0\x03" +
		"\xC0\x03\xC0\x03\xC0\x03\xC0\x03\xC0\x03\xC0\x03\xC0\x03\xC0\x03\xC0\x03" +
		"\xC0\x03\xC0\x03\xC0\x05\xC0\u0AEE\n\xC0\x03\xC0\x05\xC0\u0AF1\n\xC0\x03" +
		"\xC0\x03\xC0\x03\xC0\x03\xC0\x05\xC0\u0AF7\n\xC0\x03\xC1\x03\xC1\x03\xC1" +
		"\x03\xC1\x03\xC1\x03\xC2\x03\xC2\x03\xC2\x03\xC2\x03\xC2\x03\xC3\x03\xC3" +
		"\x03\xC3\x03\xC3\x03\xC3\x03\xC3\x03\xC3\x03\xC4\x03\xC4\x03\xC4\x03\xC4" +
		"\x03\xC4\x03\xC5\x03\xC5\x05\xC5\u0B11\n\xC5\x03\xC6\x05\xC6\u0B14\n\xC6" +
		"\x03\xC6\x03\xC6\x03\xC7\x03\xC7\x05\xC7\u0B1A\n\xC7\x03\xC8\x03\xC8\x03" +
		"\xC8\x03\xC8\x07\xC8\u0B20\n\xC8\f\xC8\x0E\xC8\u0B23\v\xC8\x03\xC9\x03" +
		"\xC9\x03\xC9\x03\xC9\x03\xC9\x05\xC9\u0B2A\n\xC9\x03\xC9\x03\xC9\x03\xC9" +
		"\x03\xC9\x03\xC9\x03\xCA\x03\xCA\x03\xCA\x03\xCA\x07\xCA\u0B35\n\xCA\f" +
		"\xCA\x0E\xCA\u0B38\v\xCA\x03\xCB\x03\xCB\x06\xCB\u0B3C\n\xCB\r\xCB\x0E" +
		"\xCB\u0B3D\x03\xCC\x03\xCC\x03\xCC\x03\xCC\x05\xCC\u0B44\n\xCC\x03\xCD" +
		"\x03\xCD\x05\xCD\u0B48\n\xCD\x03\xCD\x05\xCD\u0B4B\n\xCD\x03\xCD\x05\xCD" +
		"\u0B4E\n\xCD\x03\xCD\x05\xCD\u0B51\n\xCD\x03\xCD\x05\xCD\u0B54\n\xCD\x03" +
		"\xCD\x05\xCD\u0B57\n\xCD\x03\xCD\x03\xCD\x03\xCD\x03\xCD\x03\xCD\x05\xCD" +
		"\u0B5E\n\xCD\x03\xCE\x03\xCE\x05\xCE\u0B62\n\xCE\x03\xCE\x05\xCE\u0B65" +
		"\n\xCE\x03\xCE\x05\xCE\u0B68\n\xCE\x03\xCE\x05\xCE\u0B6B\n\xCE\x03\xCE" +
		"\x05\xCE\u0B6E\n\xCE\x03\xCE\x05\xCE\u0B71\n\xCE\x03\xCF\x03\xCF\x03\xCF" +
		"\x06\xCF\u0B76\n\xCF\r\xCF\x0E\xCF\u0B77\x03\xD0\x05\xD0\u0B7B\n\xD0\x03" +
		"\xD0\x03\xD0\x03\xD1\x03\xD1\x03\xD1\x05\xD1\u0B82\n\xD1\x03\xD1\x05\xD1" +
		"\u0B85\n\xD1\x03\xD1\x05\xD1\u0B88\n\xD1\x03\xD1\x05\xD1\u0B8B\n\xD1\x03" +
		"\xD1\x05\xD1\u0B8E\n\xD1\x03\xD1\x05\xD1\u0B91\n\xD1\x03\xD1\x05\xD1\u0B94" +
		"\n\xD1\x03\xD1\x05\xD1\u0B97\n\xD1\x03\xD1\x05\xD1\u0B9A\n\xD1\x03\xD1" +
		"\x05\xD1\u0B9D\n\xD1\x03\xD1\x05\xD1\u0BA0\n\xD1\x03\xD1\x03\xD1\x05\xD1" +
		"\u0BA4\n\xD1\x03\xD1\x05\xD1\u0BA7\n\xD1\x03\xD1\x05\xD1\u0BAA\n\xD1\x03" +
		"\xD1\x05\xD1\u0BAD\n\xD1\x03\xD1\x05\xD1\u0BB0\n\xD1\x03\xD1\x05\xD1\u0BB3" +
		"\n\xD1\x03\xD1\x05\xD1\u0BB6\n\xD1\x03\xD1\x05\xD1\u0BB9\n\xD1\x03\xD1" +
		"\x05\xD1\u0BBC\n\xD1\x03\xD1\x05\xD1\u0BBF\n\xD1\x03\xD1\x05\xD1\u0BC2" +
		"\n\xD1\x05\xD1\u0BC4\n\xD1\x03\xD2\x03\xD2\x03\xD2\x03\xD2\x05\xD2\u0BCA" +
		"\n\xD2\x03\xD2\x03\xD2\x05\xD2\u0BCE\n\xD2\x03\xD2\x03\xD2\x03\xD2\x03" +
		"\xD2\x03\xD2\x05\xD2\u0BD5\n\xD2\x05\xD2\u0BD7\n\xD2\x03\xD3\x05\xD3\u0BDA" +
		"\n\xD3\x03\xD3\x03\xD3\x03\xD3\x05\xD3\u0BDF\n\xD3\x03\xD3\x05\xD3\u0BE2" +
		"\n\xD3\x03\xD3\x03\xD3\x05\xD3\u0BE6\n\xD3\x03\xD4\x03\xD4\x03\xD4\x05" +
		"\xD4\u0BEB\n\xD4\x03\xD4\x03\xD4\x03\xD4\x03\xD4\x05\xD4\u0BF1\n\xD4\x03" +
		"\xD5\x03\xD5\x03\xD5\x03\xD5\x05\xD5\u0BF7\n\xD5\x03\xD6\x03\xD6\x03\xD6" +
		"\x03\xD6\x03\xD7\x03\xD7\x05\xD7\u0BFF\n\xD7\x03\xD8\x03\xD8\x03\xD8\x03" +
		"\xD8\x07\xD8\u0C05\n\xD8\f\xD8\x0E\xD8\u0C08\v\xD8\x03\xD9\x03\xD9\x03" +
		"\xD9\x03\xD9\x05\xD9\u0C0E\n\xD9\x03\xDA\x03\xDA\x03\xDA\x03\xDA\x05\xDA" +
		"\u0C14\n\xDA\x03\xDB\x03\xDB\x03\xDB\x03\xDB\x03\xDB\x07\xDB\u0C1B\n\xDB" +
		"\f\xDB\x0E\xDB\u0C1E\v\xDB\x05\xDB\u0C20\n\xDB\x03\xDC\x03\xDC\x05\xDC" +
		"\u0C24\n\xDC\x03\xDD\x03\xDD\x03\xDD\x03\xDE\x03\xDE\x03\xDE\x03\xDE\x03" +
		"\xDF\x03\xDF\x03\xE0\x03\xE0\x05\xE0\u0C31\n\xE0\x03\xE1\x03\xE1\x05\xE1" +
		"\u0C35\n\xE1\x03\xE2\x03\xE2\x03\xE2\x03\xE2\x03\xE3\x03\xE3\x03\xE3\x06" +
		"\xE3\u0C3E\n\xE3\r\xE3\x0E\xE3\u0C3F\x03\xE4\x03\xE4\x03\xE4\x06\xE4\u0C45" +
		"\n\xE4\r\xE4\x0E\xE4\u0C46\x03\xE5\x03\xE5\x05\xE5\u0C4B\n\xE5\x03\xE5" +
		"\x03\xE5\x03\xE5\x05\xE5\u0C50\n\xE5\x03\xE5\x05\xE5\u0C53\n\xE5\x03\xE5" +
		"\x03\xE5\x03\xE5\x03\xE5\x03\xE5\x03\xE5\x03\xE6\x03\xE6\x07\xE6\u0C5D" +
		"\n\xE6\f\xE6\x0E\xE6\u0C60\v\xE6\x03\xE6\x05\xE6\u0C63\n\xE6\x03\xE7\x03" +
		"\xE7\x03\xE7\x03\xE7\x03\xE7\x05\xE7\u0C6A\n\xE7\x03\xE7\x03\xE7\x03\xE7" +
		"\x05\xE7\u0C6F\n\xE7\x03\xE7\x03\xE7\x03\xE7\x03\xE8\x03\xE8\x03\xE8\x03" +
		"\xE8\x03\xE8\x03\xE8\x03\xE8\x03\xE9\x03\xE9\x03\xE9\x03\xE9\x03\xE9\x03" +
		"\xEA\x03\xEA\x03\xEA\x05\xEA\u0C83\n\xEA\x03\xEB\x03\xEB\x03\xEB\x06\xEB" +
		"\u0C88\n\xEB\r\xEB\x0E\xEB\u0C89\x03\xEC\x03\xEC\x03\xEC\x03\xEC\x03\xED" +
		"\x03\xED\x03\xED\x03\xEE\x03\xEE\x03\xEE\x03\xEF\x03\xEF\x03\xEF\x03\xF0" +
		"\x03\xF0\x03\xF0\x03\xF0\x03\xF0\x03\xF0\x03\xF0\x03\xF0\x05\xF0\u0CA1" +
		"\n\xF0\x03\xF0\x03\xF0\x03\xF0\x03\xF0\x03\xF0\x03\xF0\x03\xF0\x03\xF0" +
		"\x03\xF0\x03\xF0\x03\xF0\x03\xF0\x03\xF0\x03\xF0\x05\xF0\u0CB1\n\xF0\x03" +
		"\xF1\x03\xF1\x03\xF1\x03\xF1\x03\xF1\x03\xF1\x03\xF1\x03\xF1\x03\xF1\x03" +
		"\xF1\x03\xF1\x03\xF1\x03\xF1\x03\xF1\x03\xF1\x05\xF1\u0CC2\n\xF1\x03\xF1" +
		"\x03\xF1\x03\xF1\x03\xF1\x05\xF1\u0CC8\n\xF1\x03\xF2\x03\xF2\x03\xF2\x03" +
		"\xF2\x03\xF2\x03\xF2\x03\xF2\x03\xF2\x03\xF2\x03\xF2\x03\xF2\x03\xF2\x03" +
		"\xF2\x03\xF2\x03\xF2\x05\xF2\u0CD9\n\xF2\x03\xF3\x03\xF3\x03\xF3\x03\xF3" +
		"\x03\xF3\x03\xF3\x03\xF4\x03\xF4\x03\xF4\x03\xF4\x03\xF4\x05\xF4\u0CE6" +
		"\n\xF4\x03\xF5\x03\xF5\x05\xF5\u0CEA\n\xF5\x03\xF6\x03\xF6\x05\xF6\u0CEE" +
		"\n\xF6\x03\xF7\x03\xF7\x03\xF8\x03\xF8\x03\xF8\x05\xF8\u0CF5\n\xF8\x03" +
		"\xF9\x03\xF9\x03\xF9\x03\xF9\x03\xF9\x03\xFA\x03\xFA\x03\xFA\x03\xFA\x03" +
		"\xFA\x03\xFB\x03\xFB\x03\xFB\x03\xFB\x03\xFB\x03\xFC\x03\xFC\x03\xFC\x03" +
		"\xFC\x03\xFC\x03\xFD\x03\xFD\x03\xFD\x03\xFD\x03\xFE\x03\xFE\x05\xFE\u0D11" +
		"\n\xFE\x03\xFE\x03\xFE\x03\xFE\x03\xFE\x03\xFE\x05\xFE\u0D18\n\xFE\x03" +
		"\xFF\x03\xFF\x03\xFF\x05\xFF\u0D1D\n\xFF\x03\u0100\x03\u0100\x03\u0100" +
		"\x05\u0100\u0D22\n\u0100\x03\u0101\x03\u0101\x03\u0101\x05\u0101\u0D27" +
		"\n\u0101\x03\u0101\x03\u0101\x03\u0101\x05\u0101\u0D2C\n\u0101\x03\u0102" +
		"\x03\u0102\x03\u0102\x03\u0102\x03\u0103\x03\u0103\x05\u0103\u0D34\n\u0103" +
		"\x03\u0103\x03\u0103\x03\u0103\x03\u0103\x05\u0103\u0D3A\n\u0103\x03\u0103" +
		"\x03\u0103\x05\u0103\u0D3E\n\u0103\x03\u0103\x05\u0103\u0D41\n\u0103\x03" +
		"\u0103\x05\u0103\u0D44\n\u0103\x03\u0104\x03\u0104\x03\u0104\x03\u0104" +
		"\x05\u0104\u0D4A\n\u0104\x03\u0104\x03\u0104\x03\u0104\x03\u0104\x03\u0104" +
		"\x05\u0104\u0D51\n\u0104\x03\u0105\x03\u0105\x03\u0105\x03\u0105\x03\u0105" +
		"\x03\u0106\x03\u0106\x03\u0106\x05\u0106\u0D5B\n\u0106\x03\u0107\x03\u0107" +
		"\x05\u0107\u0D5F\n\u0107\x03\u0107\x06\u0107\u0D62\n\u0107\r\u0107\x0E" +
		"\u0107\u0D63\x03\u0108\x03\u0108\x05\u0108\u0D68\n\u0108\x03\u0109\x03" +
		"\u0109\x07\u0109\u0D6C\n\u0109\f\u0109\x0E\u0109\u0D6F\v\u0109\x03\u010A" +
		"\x03\u010A\x07\u010A\u0D73\n\u010A\f\u010A\x0E\u010A\u0D76\v\u010A\x03" +
		"\u010B\x03\u010B\x07\u010B\u0D7A\n\u010B\f\u010B\x0E\u010B\u0D7D\v\u010B" +
		"\x03\u010C\x03\u010C\x03\u010C\x03\u010D\x03\u010D\x03\u010D\x03\u010E" +
		"\x03\u010E\x05\u010E\u0D87\n\u010E\x03\u010E\x03\u010E\x03\u010E\x03\u010E" +
		"\x03\u010E\x07\u010E\u0D8E\n\u010E\f\u010E\x0E\u010E\u0D91\v\u010E\x03" +
		"\u010E\x05\u010E\u0D94\n\u010E\x03\u010E\x05\u010E\u0D97\n\u010E\x03\u010E" +
		"\x05\u010E\u0D9A\n\u010E\x03\u010F\x03\u010F\x03\u010F\x03\u010F\x03\u010F" +
		"\x03\u010F\x05\u010F\u0DA2\n\u010F\x03\u010F\x05\u010F\u0DA5\n\u010F\x03" +
		"\u0110\x03\u0110\x03\u0110\x03\u0110\x03\u0110\x03\u0110\x05\u0110\u0DAD" +
		"\n\u0110\x03\u0110\x05\u0110\u0DB0\n\u0110\x03\u0111\x03\u0111\x03\u0111" +
		"\x03\u0111\x03\u0111\x03\u0111\x05\u0111\u0DB8\n\u0111\x03\u0111\x03\u0111" +
		"\x05\u0111\u0DBC\n\u0111\x03\u0111\x03\u0111\x03\u0111\x05\u0111\u0DC1" +
		"\n\u0111\x03\u0112\x03\u0112\x05\u0112\u0DC5\n\u0112\x03\u0113\x03\u0113" +
		"\x03\u0113\x03\u0113\x03\u0114\x03\u0114\x03\u0114\x05\u0114\u0DCE\n\u0114" +
		"\x03\u0115\x03\u0115\x03\u0115\x03\u0115\x03\u0115\x03\u0116\x03\u0116" +
		"\x03\u0116\x03\u0116\x03\u0117\x03\u0117\x03\u0117\x07\u0117\u0DDC\n\u0117" +
		"\f\u0117\x0E\u0117\u0DDF\v\u0117\x03\u0118\x03\u0118\x03\u0118\x03\u0118" +
		"\x03\u0119\x03\u0119\x03\u0119\x03\u0119\x03\u011A\x03\u011A\x03\u011A" +
		"\x03\u011A\x05\u011A\u0DED\n\u011A\x05\u011A\u0DEF\n\u011A\x03\u011B\x03" +
		"\u011B\x03\u011B\x03\u011B\x03\u011B\x03\u011B\x03\u011C\x03\u011C\x03" +
		"\u011C\x03\u011C\x03\u011D\x03\u011D\x03\u011D\x03\u011D\x05\u011D\u0DFF" +
		"\n\u011D\x03\u011D\x03\u011D\x03\u011D\x03\u011D\x03\u011D\x05\u011D\u0E06" +
		"\n\u011D\x03\u011E\x03\u011E\x03\u011F\x03\u011F\x03\u011F\x03\u011F\x03" +
		"\u0120\x03\u0120\x03\u0120\x03\u0121\x03\u0121\x03\u0121\x03\u0122\x03" +
		"\u0122\x03\u0122\x05\u0122\u0E17\n\u0122\x03\u0122\x05\u0122\u0E1A\n\u0122" +
		"\x03\u0122\x05\u0122\u0E1D\n\u0122\x03\u0122\x05\u0122\u0E20\n\u0122\x03" +
		"\u0122\x03\u0122\x03\u0122\x03\u0122\x05\u0122\u0E26\n\u0122\x03\u0123" +
		"\x03\u0123\x03\u0123\x03\u0123\x03\u0124\x03\u0124\x03\u0124\x03\u0124" +
		"\x03\u0124\x03\u0124\x03\u0124\x03\u0125\x03\u0125\x03\u0125\x03\u0125" +
		"\x03\u0125\x03\u0125\x03\u0125\x03\u0125\x03\u0125\x03\u0125\x05\u0125" +
		"\u0E3D\n\u0125\x03\u0125\x03\u0125\x03\u0126\x03\u0126\x03\u0126\x03\u0126" +
		"\x05\u0126\u0E45\n\u0126\x03\u0126\x03\u0126\x03\u0127\x03\u0127\x03\u0127" +
		"\x03\u0127\x03\u0127\x03\u0127\x03\u0127\x03\u0127\x03\u0127\x03\u0127" +
		"\x05\u0127\u0E53\n\u0127\x03\u0127\x05\u0127\u0E56\n\u0127\x03\u0128\x03" +
		"\u0128\x03\u0128\x05\u0128\u0E5B\n\u0128\x03\u0129\x03\u0129\x03\u0129" +
		"\x03\u0129\x03\u0129\x03\u012A\x03\u012A\x03\u012A\x03\u012A\x03\u012A" +
		"\x03\u012B\x03\u012B\x03\u012B\x03\u012B\x03\u012B\x03\u012C\x03\u012C" +
		"\x03\u012C\x03\u012C\x03\u012C\x03\u012C\x03\u012C\x03\u012C\x03\u012C" +
		"\x05\u012C\u0E75\n\u012C\x03\u012D\x03\u012D\x05\u012D\u0E79\n\u012D\x03" +
		"\u012D\x05\u012D\u0E7C\n\u012D\x03\u012D\x05\u012D\u0E7F\n\u012D\x03\u012D" +
		"\x03\u012D\x05\u012D\u0E83\n\u012D\x03\u012D\x03\u012D\x03\u012D\x05\u012D" +
		"\u0E88\n\u012D\x03\u012D\x05\u012D\u0E8B\n\u012D\x03\u012D\x05\u012D\u0E8E" +
		"\n\u012D\x03\u012D\x05\u012D\u0E91\n\u012D\x03\u012D\x05\u012D\u0E94\n" +
		"\u012D\x03\u012D\x03\u012D\x03\u012D\x03\u012D\x05\u012D\u0E9A\n\u012D" +
		"\x03\u012D\x05\u012D\u0E9D\n\u012D\x03\u012D\x05\u012D\u0EA0\n\u012D\x03" +
		"\u012D\x05\u012D\u0EA3\n\u012D\x03\u012D\x05\u012D\u0EA6\n\u012D\x03\u012D" +
		"\x05\u012D\u0EA9\n\u012D\x03\u012D\x05\u012D\u0EAC\n\u012D\x03\u012D\x05" +
		"\u012D\u0EAF\n\u012D\x03\u012D\x05\u012D\u0EB2\n\u012D\x03\u012D\x03\u012D" +
		"\x05\u012D\u0EB6\n\u012D\x05\u012D\u0EB8\n\u012D\x03\u012D\x03\u012D\x03" +
		"\u012D\x03\u012D\x05\u012D\u0EBE\n\u012D\x03\u012D\x03\u012D\x03\u012D" +
		"\x05\u012D\u0EC3\n\u012D\x03\u012D\x05\u012D\u0EC6\n\u012D\x03\u012D\x05" +
		"\u012D\u0EC9\n\u012D\x03\u012D\x05\u012D\u0ECC\n\u012D\x03\u012D\x03\u012D" +
		"\x03\u012D\x03\u012D\x05\u012D\u0ED2\n\u012D\x03\u012D\x05\u012D\u0ED5" +
		"\n\u012D\x03\u012D\x05\u012D\u0ED8\n\u012D\x03\u012D\x05\u012D\u0EDB\n" +
		"\u012D\x03\u012D\x05\u012D\u0EDE\n\u012D\x03\u012D\x05\u012D\u0EE1\n\u012D" +
		"\x03\u012D\x05\u012D\u0EE4\n\u012D\x03\u012D\x05\u012D\u0EE7\n\u012D\x03" +
		"\u012D\x05\u012D\u0EEA\n\u012D\x03\u012D\x03\u012D\x05\u012D\u0EEE\n\u012D" +
		"\x05\u012D\u0EF0\n\u012D\x05\u012D\u0EF2\n\u012D\x03\u012E\x03\u012E\x03" +
		"\u012E\x05\u012E\u0EF7\n\u012E\x03\u012E\x03\u012E\x05\u012E\u0EFB\n\u012E" +
		"\x03\u012E\x05\u012E\u0EFE\n\u012E\x03\u012E\x05\u012E\u0F01\n\u012E\x03" +
		"\u012E\x03\u012E\x03\u012E\x05\u012E\u0F06\n\u012E\x03\u012F\x03\u012F" +
		"\x03\u012F\x03\u0130\x03\u0130\x03\u0130\x03\u0131\x03\u0131\x03\u0131" +
		"\x03\u0132\x03\u0132\x03\u0132\x03\u0132\x03\u0133\x03\u0133\x03\u0133" +
		"\x05\u0133\u0F18\n\u0133\x03\u0133\x03\u0133\x03\u0134\x03\u0134\x03\u0134" +
		"\x03\u0134\x03\u0134\x05\u0134\u0F21\n\u0134\x03\u0135\x03\u0135\x03\u0136" +
		"\x03\u0136\x03\u0136\x07\u0136\u0F28\n\u0136\f\u0136\x0E\u0136\u0F2B\v" +
		"\u0136\x03\u0137\x03\u0137\x03\u0137\x07\u0137\u0F30\n\u0137\f\u0137\x0E" +
		"\u0137\u0F33\v\u0137\x03\u0138\x03\u0138\x03\u0138\x03\u0139\x03\u0139" +
		"\x03\u0139\x03\u0139\x06\u0139\u0F3C\n\u0139\r\u0139\x0E\u0139\u0F3D\x03" +
		"\u0139\x05\u0139\u0F41\n\u0139\x03\u013A\x03\u013A\x07\u013A\u0F45\n\u013A" +
		"\f\u013A\x0E\u013A\u0F48\v\u013A\x03\u013A\x03\u013A\x07\u013A\u0F4C\n" +
		"\u013A\f\u013A\x0E\u013A\u0F4F\v\u013A\x03\u013A\x03\u013A\x07\u013A\u0F53" +
		"\n\u013A\f\u013A\x0E\u013A\u0F56\v\u013A\x03\u013A\x03\u013A\x07\u013A" +
		"\u0F5A\n\u013A\f\u013A\x0E\u013A\u0F5D\v\u013A\x03\u013A\x03\u013A\x03" +
		"\u013A\x03\u013A\x05\u013A\u0F63\n\u013A\x03\u013B\x03\u013B\x03\u013B" +
		"\x03\u013B\x03\u013B\x03\u013B\x03\u013B\x05\u013B\u0F6C\n\u013B\x07\u013B" +
		"\u0F6E\n\u013B\f\u013B\x0E\u013B\u0F71\v\u013B\x03\u013C\x03\u013C\x03" +
		"\u013C\x03\u013C\x05\u013C\u0F77\n\u013C\x03\u013C\x07\u013C\u0F7A\n\u013C" +
		"\f\u013C\x0E\u013C\u0F7D\v\u013C\x03\u013D\x05\u013D\u0F80\n\u013D\x03" +
		"\u013D\x03\u013D\x03\u013D\x03\u013E\x03\u013E\x03\u013E\x03\u013E\x03" +
		"\u013F\x03\u013F\x03\u0140\x03\u0140\x03\u0140\x03\u0140\x03\u0140\x05" +
		"\u0140\u0F90\n\u0140\x03\u0140\x03\u0140\x05\u0140\u0F94\n\u0140\x05\u0140" +
		"\u0F96\n\u0140\x03\u0140\x05\u0140\u0F99\n\u0140\x03\u0141\x03\u0141\x03" +
		"\u0141\x03\u0141\x03\u0141\x03\u0141\x03\u0141\x03\u0141\x03\u0141\x07" +
		"\u0141\u0FA4\n\u0141\f\u0141\x0E\u0141\u0FA7\v\u0141\x05\u0141\u0FA9\n" +
		"\u0141\x03\u0141\x05\u0141\u0FAC\n\u0141\x03\u0141\x03\u0141\x03\u0141" +
		"\x03\u0141\x03\u0141\x03\u0141\x03\u0141\x03\u0141\x07\u0141\u0FB6\n\u0141" +
		"\f\u0141\x0E\u0141\u0FB9\v\u0141\x05\u0141\u0FBB\n\u0141\x03\u0141\x03" +
		"\u0141\x03\u0141\x03\u0141\x03\u0141\x05\u0141\u0FC2\n\u0141\x03\u0141" +
		"\x03\u0141\x03\u0141\x03\u0141\x03\u0141\x07\u0141\u0FC9\n\u0141\f\u0141" +
		"\x0E\u0141\u0FCC\v\u0141\x03\u0141\x03\u0141\x05\u0141\u0FD0\n\u0141\x05" +
		"\u0141\u0FD2\n\u0141\x05\u0141\u0FD4\n\u0141\x03\u0142\x03\u0142\x03\u0143" +
		"\x03\u0143\x03\u0143\x03\u0143\x03\u0143\x03\u0143\x03\u0143\x03\u0143" +
		"\x03\u0143\x03\u0143\x03\u0143\x07\u0143\u0FE3\n\u0143\f\u0143\x0E\u0143" +
		"\u0FE6\v\u0143\x05\u0143\u0FE8\n\u0143\x03\u0143\x03\u0143\x03\u0144\x03" +
		"\u0144\x03\u0144\x03\u0144\x03\u0144\x05\u0144\u0FF1\n\u0144\x03\u0144" +
		"\x03\u0144\x03\u0145\x03\u0145\x05\u0145\u0FF7\n\u0145\x03\u0146\x03\u0146" +
		"\x05\u0146\u0FFB\n\u0146\x03\u0146\x05\u0146\u0FFE\n\u0146\x03\u0146\x05" +
		"\u0146\u1001\n\u0146\x03\u0146\x05\u0146\u1004\n\u0146\x03\u0146\x05\u0146" +
		"\u1007\n\u0146\x03\u0147\x03\u0147\x03\u0147\x03\u0147\x03\u0147\x03\u0147" +
		"\x03\u0147\x03\u0147\x03\u0147\x03\u0147\x05\u0147\u1013\n\u0147\x03\u0148" +
		"\x03\u0148\x05\u0148\u1017\n\u0148\x03\u0148\x05\u0148\u101A\n\u0148\x03" +
		"\u0148\x05\u0148\u101D\n\u0148\x03\u0149\x03\u0149\x03\u014A\x03\u014A" +
		"\x03\u014B\x03\u014B\x05\u014B\u1025\n\u014B\x03\u014C\x03\u014C\x03\u014C" +
		"\x03\u014C\x03\u014C\x05\u014C\u102C\n\u014C\x03\u014C\x05\u014C\u102F" +
		"\n\u014C\x03\u014D\x03\u014D\x03\u014D\x03\u014D\x03\u014D\x05\u014D\u1036" +
		"\n\u014D\x03\u014D\x05\u014D\u1039\n\u014D\x03\u014E\x03\u014E\x03\u014E" +
		"\x05\u014E\u103E\n\u014E\x03\u014E\x03\u014E\x03\u014F\x03\u014F\x03\u014F" +
		"\x05\u014F\u1045\n\u014F\x03\u014F\x03\u014F\x03\u0150\x03\u0150\x03\u0150" +
		"\x03\u0150\x05\u0150\u104D\n\u0150\x03\u0150\x03\u0150\x03\u0151\x03\u0151" +
		"\x05\u0151\u1053\n\u0151\x03\u0151\x03\u0151\x03\u0151\x05\u0151\u1058" +
		"\n\u0151\x03\u0151\x03\u0151\x05\u0151\u105C\n\u0151\x03\u0152\x03\u0152" +
		"\x03\u0152\x05\u0152\u1061\n\u0152\x03\u0153\x03\u0153\x03\u0153\x03\u0153" +
		"\x03\u0153\x05\u0153\u1068\n\u0153\x03\u0153\x03\u0153\x03\u0153\x03\u0153" +
		"\x03\u0153\x03\u0153\x03\u0153\x03\u0153\x03\u0153\x03\u0153\x07\u0153" +
		"\u1074\n\u0153\f\u0153\x0E\u0153\u1077\v\u0153\x05\u0153\u1079\n\u0153" +
		"\x03\u0153\x03\u0153\x05\u0153\u107D\n\u0153\x03\u0154\x03\u0154\x03\u0154" +
		"\x03\u0155\x03\u0155\x03\u0156\x03\u0156\x03\u0157\x03\u0157\x03\u0157" +
		"\x03\u0158\x03\u0158\x03\u0158\x07\u0158\u108C\n\u0158\f\u0158\x0E\u0158" +
		"\u108F\v\u0158\x03\u0158\x03\u0158\x03\u0158\x07\u0158\u1094\n\u0158\f" +
		"\u0158\x0E\u0158\u1097\v\u0158\x05\u0158\u1099\n\u0158\x03\u0159\x03\u0159" +
		"\x03\u015A\x03\u015A\x03\u015A\x03\u015A\x03\u015B\x03\u015B\x03\u015B" +
		"\x03\u015B\x03\u015B\x05\u015B\u10A6\n\u015B\x03\u015B\x03\u015B\x03\u015B" +
		"\x03\u015B\x03\u015B\x07\u015B\u10AD\n\u015B\f\u015B\x0E\u015B\u10B0\v" +
		"\u015B\x05\u015B\u10B2\n\u015B\x03\u015B\x03\u015B\x03\u015C\x03\u015C" +
		"\x05\u015C\u10B8\n\u015C\x03\u015C\x05\u015C\u10BB\n\u015C\x03\u015C\x03" +
		"\u015C\x03\u015C\x05\u015C\u10C0\n\u015C\x03\u015C\x05\u015C\u10C3\n\u015C" +
		"\x03\u015D\x03\u015D\x03\u015E\x03\u015E\x03\u015E\x07\u015E\u10CA\n\u015E" +
		"\f\u015E\x0E\u015E\u10CD\v\u015E\x03\u015F\x03\u015F\x03\u015F\x03\u015F" +
		"\x03\u015F\x03\u015F\x03\u015F\x03\u015F\x03\u015F\x03\u015F\x03\u015F" +
		"\x05\u015F\u10DA\n\u015F\x03\u015F\x03\u015F\x03\u015F\x03\u015F\x05\u015F" +
		"\u10E0\n\u015F\x05\u015F\u10E2\n\u015F\x03\u015F\x03\u015F\x03\u015F\x03" +
		"\u0160\x03\u0160\x03\u0160\x05\u0160\u10EA\n\u0160\x03\u0160\x05\u0160" +
		"\u10ED\n\u0160\x03\u0160\x03\u0160\x03\u0160\x03\u0160\x03\u0160\x03\u0160" +
		"\x07\u0160\u10F5\n\u0160\f\u0160\x0E\u0160\u10F8\v\u0160\x03\u0160\x03" +
		"\u0160\x05\u0160\u10FC\n\u0160\x05\u0160\u10FE\n\u0160\x03\u0161\x03\u0161" +
		"\x03\u0161\x03\u0161\x03\u0161\x03\u0161\x03\u0161\x03\u0161\x03\u0161" +
		"\x03\u0161\x05\u0161\u110A\n\u0161\x03\u0161\x03\u0161\x03\u0161\x03\u0161" +
		"\x05\u0161\u1110\n\u0161\x05\u0161\u1112\n\u0161\x03\u0161\x03\u0161\x03" +
		"\u0161\x03\u0162\x03\u0162\x05\u0162\u1119\n\u0162\x03\u0163\x03\u0163" +
		"\x03\u0163\x07\u0163\u111E\n\u0163\f\u0163\x0E\u0163\u1121\v\u0163\x03" +
		"\u0164\x03\u0164\x03\u0164\x03\u0164\x07\u0164\u1127\n\u0164\f\u0164\x0E" +
		"\u0164\u112A\v\u0164\x03\u0165\x03\u0165\x03\u0165\x03\u0165\x03\u0166" +
		"\x03\u0166\x03\u0166\x05\u0166\u1133\n\u0166\x03\u0166\x05\u0166\u1136" +
		"\n\u0166\x03\u0166\x05\u0166\u1139\n\u0166\x03\u0166\x05\u0166\u113C\n" +
		"\u0166\x03\u0167\x03\u0167\x05\u0167\u1140\n\u0167\x03\u0168\x03\u0168" +
		"\x03\u0168\x03\u0168\x03\u0168\x03\u0168\x03\u0168\x05\u0168\u1149\n\u0168" +
		"\x03\u0169\x03\u0169\x03\u0169\x03\u0169\x03\u0169\x03\u0169\x03\u0169" +
		"\x05\u0169\u1152\n\u0169\x03\u016A\x03\u016A\x03\u016A\x03\u016A\x03\u016A" +
		"\x03\u016A\x05\u016A\u115A\n\u016A\x03\u016B\x03\u016B\x03\u016B\x03\u016B" +
		"\x05\u016B\u1160\n\u016B\x03\u016C\x03\u016C\x03\u016C\x03\u016C\x03\u016D" +
		"\x03\u016D\x03\u016D\x03\u016D\x05\u016D\u116A\n\u016D\x03\u016E\x03\u016E" +
		"\x03\u016E\x03\u016F\x03\u016F\x05\u016F\u1171\n\u016F\x03\u016F\x03\u016F" +
		"\x03\u016F\x03\u016F\x07\u016F\u1177\n\u016F\f\u016F\x0E\u016F\u117A\v" +
		"\u016F\x03\u016F\x03\u016F\x03\u0170\x03\u0170\x03\u0170\x03\u0170\x03" +
		"\u0170\x05\u0170\u1183\n\u0170\x03\u0170\x03\u0170\x03\u0170\x03\u0170" +
		"\x03\u0170\x03\u0170\x07\u0170\u118B\n\u0170\f\u0170\x0E\u0170\u118E\v" +
		"\u0170\x03\u0170\x03\u0170\x05\u0170\u1192\n\u0170\x03\u0171\x03\u0171" +
		"\x05\u0171\u1196\n\u0171\x03\u0172\x03\u0172\x05\u0172\u119A\n\u0172\x03" +
		"\u0172\x03\u0172\x07\u0172\u119E\n\u0172\f\u0172\x0E\u0172\u11A1\v\u0172" +
		"\x03\u0172\x03\u0172\x03\u0173\x03\u0173\x03\u0174\x03\u0174\x03\u0174" +
		"\x03\u0175\x03\u0175\x03\u0175\x03\u0176\x03\u0176\x03\u0177\x03\u0177" +
		"\x03\u0177\x03\u0177\x03\u0178\x03\u0178\x05\u0178\u11B5\n\u0178\x03\u0179" +
		"\x03\u0179\x06\u0179\u11B9\n\u0179\r\u0179\x0E\u0179\u11BA\x03\u017A\x03" +
		"\u017A\x05\u017A\u11BF\n\u017A\x03\u017B\x03\u017B\x05\u017B\u11C3\n\u017B" +
		"\x03\u017B\x05\u017B\u11C6\n\u017B\x03\u017B\x03\u017B\x07\u017B\u11CA" +
		"\n\u017B\f\u017B\x0E\u017B\u11CD\v\u017B\x03\u017C\x03\u017C\x05\u017C" +
		"\u11D1\n\u017C\x03\u017C\x05\u017C\u11D4\n\u017C\x03\u017D\x03\u017D\x05" +
		"\u017D\u11D8\n\u017D\x03\u017E\x03\u017E\x03\u017E\x03\u017E\x07\u017E" +
		"\u11DE\n\u017E\f\u017E\x0E\u017E\u11E1\v\u017E\x03\u017E\x03\u017E\x03" +
		"\u017F\x03\u017F\x03\u017F\x07\u017F\u11E8\n\u017F\f\u017F\x0E\u017F\u11EB" +
		"\v\u017F\x03\u0180\x03\u0180\x03\u0180\x03\u0180\x03\u0180\x07\u0180\u11F2" +
		"\n\u0180\f\u0180\x0E\u0180\u11F5\v\u0180\x03\u0181\x03\u0181\x03\u0181" +
		"\x03\u0181\x03\u0182\x03\u0182\x03\u0182\x03\u0182\x03\u0183\x03\u0183" +
		"\x03\u0183\x03\u0183\x03\u0184\x03\u0184\x03\u0184\x03\u0184\x05\u0184" +
		"\u1207\n\u0184\x03\u0185\x03\u0185\x03\u0185\x03\u0185\x03\u0185\x05\u0185" +
		"\u120E\n\u0185\x03\u0185\x05\u0185\u1211\n\u0185\x03\u0185\x03\u0185\x03" +
		"\u0185\x03\u0185\x03\u0186\x03\u0186\x03\u0186\x03\u0186\x03\u0186\x05" +
		"\u0186\u121C\n\u0186\x03\u0186\x03\u0186\x03\u0186\x07\u0186\u1221\n\u0186" +
		"\f\u0186\x0E\u0186\u1224\v\u0186\x05\u0186\u1226\n\u0186\x05\u0186\u1228" +
		"\n\u0186\x03\u0186\x03\u0186\x03\u0186\x03\u0186\x03\u0186\x03\u0186\x03" +
		"\u0186\x03\u0186\x03\u0186\x05\u0186\u1233\n\u0186\x03\u0186\x03\u0186" +
		"\x03\u0186\x03\u0186\x03\u0186\x03\u0186\x03\u0186\x03\u0186\x05\u0186" +
		"\u123D\n\u0186\x05\u0186\u123F\n\u0186\x03\u0187\x03\u0187\x03\u0187\x03" +
		"\u0187\x05\u0187\u1245\n";
	private static readonly _serializedATNSegment2: string =
		"\u0187\x03\u0188\x03\u0188\x03\u0189\x03\u0189\x05\u0189\u124B\n\u0189" +
		"\x03\u018A\x03\u018A\x05\u018A\u124F\n\u018A\x03\u018B\x03\u018B\x03\u018C" +
		"\x03\u018C\x05\u018C\u1255\n\u018C\x03\u018D\x03\u018D\x03\u018D\x03\u018D" +
		"\x03\u018D\x03\u018D\x03\u018D\x05\u018D\u125E\n\u018D\x03\u018D\x03\u018D" +
		"\x03\u018E\x03\u018E\x03\u018E\x03\u018E\x03\u018E\x03\u018E\x03\u018E" +
		"\x06\u018E\u1269\n\u018E\r\u018E\x0E\u018E\u126A\x03\u018E\x03\u018E\x05" +
		"\u018E\u126F\n\u018E\x03\u018E\x03\u018E\x03\u018F\x03\u018F\x03\u018F" +
		"\x03\u018F\x03\u018F\x03\u018F\x06\u018F\u1279\n\u018F\r\u018F\x0E\u018F" +
		"\u127A\x03\u018F\x03\u018F\x05\u018F\u127F\n\u018F\x03\u018F\x03\u018F" +
		"\x03\u0190\x03\u0190\x03\u0190\x03\u0190\x03\u0190\x05\u0190\u1288\n\u0190" +
		"\x03\u0190\x03\u0190\x03\u0191\x03\u0191\x03\u0191\x03\u0191\x03\u0191" +
		"\x03\u0191\x03\u0191\x03\u0191\x05\u0191\u1294\n\u0191\x03\u0192\x03\u0192" +
		"\x03\u0192\x03\u0192\x03\u0192\x03\u0192\x03\u0192\x03\u0193\x03\u0193" +
		"\x03\u0193\x03\u0193\x03\u0193\x03\u0193\x03\u0193\x03\u0193\x05\u0193" +
		"\u12A5\n\u0193\x03\u0194\x03\u0194\x03\u0194\x03\u0194\x03\u0194\x03\u0194" +
		"\x03\u0194\x03\u0194\x03\u0194\x03\u0194\x03\u0194\x03\u0194\x03\u0194" +
		"\x05\u0194\u12B4\n\u0194\x03\u0195\x03\u0195\x03\u0196\x03\u0196\x03\u0197" +
		"\x03\u0197\x06\u0197\u12BC\n\u0197\r\u0197\x0E\u0197\u12BD\x03\u0198\x03" +
		"\u0198\x03\u0198\x03\u0199\x03\u0199\x03\u0199\x05\u0199\u12C6\n\u0199" +
		"\x03\u019A\x03\u019A\x03\u019A\x05\u019A\u12CB\n\u019A\x03\u019B\x03\u019B" +
		"\x03\u019B\x03\u019C\x03\u019C\x03\u019D\x03\u019D\x03\u019D\x03\u019E" +
		"\x03\u019E\x03\u019E\x03\u019E\x03\u019E\x03\u019E\x03\u019E\x03\u019E" +
		"\x03\u019E\x03\u019E\x03\u019E\x05\u019E\u12E0\n\u019E\x03\u019E\x03\u019E" +
		"\x05\u019E\u12E4\n\u019E\x03\u019F\x03\u019F\x03\u019F\x03\u019F\x03\u019F" +
		"\x03\u019F\x03\u019F\x03\u019F\x03\u019F\x03\u019F\x03\u019F\x03\u019F" +
		"\x03\u019F\x03\u019F\x05\u019F\u12F4\n\u019F\x03\u01A0\x03\u01A0\x03\u01A1" +
		"\x03\u01A1\x03\u01A1\x03\u01A1\x03\u01A1\x03\u01A1\x03\u01A1\x03\u01A1" +
		"\x03\u01A1\x03\u01A1\x03\u01A1\x05\u01A1\u1303\n\u01A1\x03\u01A2\x03\u01A2" +
		"\x03\u01A2\x03\u01A2\x03\u01A2\x03\u01A2\x03\u01A2\x07\u01A2\u130C\n\u01A2" +
		"\f\u01A2\x0E\u01A2\u130F\v\u01A2\x03\u01A3\x03\u01A3\x03\u01A4\x07\u01A4" +
		"\u1314\n\u01A4\f\u01A4\x0E\u01A4\u1317\v\u01A4\x03\u01A4\x03\u01A4\x03" +
		"\u01A5\x03\u01A5\x03\u01A6\x03\u01A6\x03\u01A6\x03\u01A6\x07\u01A6\u1321" +
		"\n\u01A6\f\u01A6\x0E\u01A6\u1324\v\u01A6\x03\u01A7\x03\u01A7\x03\u01A8" +
		"\x03\u01A8\x03\u01A8\x03\u01A8\x07\u01A8\u132C\n\u01A8\f\u01A8\x0E\u01A8" +
		"\u132F\v\u01A8\x03\u01A9\x03\u01A9\x03\u01AA\x03\u01AA\x03\u01AA\x03\u01AA" +
		"\x07\u01AA\u1337\n\u01AA\f\u01AA\x0E\u01AA\u133A\v\u01AA\x03\u01AB\x03" +
		"\u01AB\x03\u01AC\x03\u01AC\x03\u01AC\x03\u01AC\x07\u01AC\u1342\n\u01AC" +
		"\f\u01AC\x0E\u01AC\u1345\v\u01AC\x03\u01AD\x03\u01AD\x03\u01AE\x03\u01AE" +
		"\x03\u01AE\x03\u01AE\x07\u01AE\u134D\n\u01AE\f\u01AE\x0E\u01AE\u1350\v" +
		"\u01AE\x03\u01AF\x03\u01AF\x03\u01B0\x03\u01B0\x03\u01B0\x03\u01B0\x07" +
		"\u01B0\u1358\n\u01B0\f\u01B0\x0E\u01B0\u135B\v\u01B0\x03\u01B1\x03\u01B1" +
		"\x03\u01B2\x03\u01B2\x03\u01B2\x03\u01B2\x03\u01B2\x05\u01B2\u1364\n\u01B2" +
		"\x03\u01B3\x03\u01B3\x03\u01B3\x03\u01B3\x03\u01B4\x03\u01B4\x03\u01B4" +
		"\x05\u01B4\u136D\n\u01B4\x03\u01B5\x03\u01B5\x05\u01B5\u1371\n\u01B5\x03" +
		"\u01B6\x03\u01B6\x03\u01B6\x03\u01B6\x03\u01B6\x03\u01B6\x05\u01B6\u1379" +
		"\n\u01B6\x03\u01B7\x03\u01B7\x03\u01B7\x03\u01B7\x03\u01B7\x03\u01B7\x03" +
		"\u01B7\x03\u01B7\x03\u01B7\x03\u01B7\x03\u01B7\x05\u01B7\u1386\n\u01B7" +
		"\x03\u01B8\x03\u01B8\x03\u01B8\x03\u01B8\x03\u01B9\x03\u01B9\x03\u01BA" +
		"\x03\u01BA\x05\u01BA\u1390\n\u01BA\x03\u01BB\x03\u01BB\x03\u01BB\x03\u01BB" +
		"\x05\u01BB\u1396\n\u01BB\x03\u01BC\x03\u01BC\x03\u01BC\x03\u01BC\x03\u01BD" +
		"\x03\u01BD\x03\u01BD\x03\u01BD\x03\u01BD\x03\u01BD\x03\u01BD\x05\u01BD" +
		"\u13A3\n\u01BD\x03\u01BE\x03\u01BE\x03\u01BE\x03\u01BE\x03\u01BE\x03\u01BE" +
		"\x03\u01BE\x07\u01BE\u13AC\n\u01BE\f\u01BE\x0E\u01BE\u13AF\v\u01BE\x03" +
		"\u01BF\x03\u01BF\x03\u01BF\x03\u01BF\x03\u01BF\x03\u01BF\x03\u01BF\x03" +
		"\u01BF\x03\u01BF\x03\u01BF\x03\u01BF\x03\u01BF\x05\u01BF\u13BD\n\u01BF" +
		"\x03\u01C0\x03\u01C0\x03\u01C0\x05\u01C0\u13C2\n\u01C0\x03\u01C1\x03\u01C1" +
		"\x03\u01C2\x07\u01C2\u13C7\n\u01C2\f\u01C2\x0E\u01C2\u13CA\v\u01C2\x03" +
		"\u01C2\x03\u01C2\x03\u01C3\x03\u01C3\x03\u01C4\x03\u01C4\x03\u01C4\x03" +
		"\u01C4\x07\u01C4\u13D4\n\u01C4\f\u01C4\x0E\u01C4\u13D7\v\u01C4\x03\u01C5" +
		"\x03\u01C5\x03\u01C6\x03\u01C6\x03\u01C6\x03\u01C6\x07\u01C6\u13DF\n\u01C6" +
		"\f\u01C6\x0E\u01C6\u13E2\v\u01C6\x03\u01C7\x03\u01C7\x03\u01C8\x03\u01C8" +
		"\x03\u01C9\x03\u01C9\x05\u01C9\u13EA\n\u01C9\x03\u01CA\x03\u01CA\x03\u01CA" +
		"\x03\u01CA\x03\u01CA\x07\u01CA\u13F1\n\u01CA\f\u01CA\x0E\u01CA\u13F4\v" +
		"\u01CA\x03\u01CA\x03\u01CA\x03\u01CB\x03\u01CB\x03\u01CB\x05\u01CB\u13FB" +
		"\n\u01CB\x03\u01CC\x03\u01CC\x03\u01CC\x03\u01CC\x07\u01CC\u1401\n\u01CC" +
		"\f\u01CC\x0E\u01CC\u1404\v\u01CC\x03\u01CC\x03\u01CC\x03\u01CD\x03\u01CD" +
		"\x03\u01CD\x03\u01CD\x03\u01CE\x03\u01CE\x05\u01CE\u140E\n\u01CE\x03\u01CF" +
		"\x03\u01CF\x03\u01D0\x03\u01D0\x03\u01D1\x03\u01D1\x05\u01D1\u1416\n\u01D1" +
		"\x03\u01D2\x03\u01D2\x03\u01D2\x05\u01D2\u141B\n\u01D2\x03\u01D3\x03\u01D3" +
		"\x03\u01D4\x03\u01D4\x03\u01D5\x03\u01D5\x03\u01D6\x03\u01D6\x03\u01D6" +
		"\x03\u01D7\x03\u01D7\x03\u01D7\x07\u01D7\u1429\n\u01D7\f\u01D7\x0E\u01D7" +
		"\u142C\v\u01D7\x03\u01D8\x03\u01D8\x03\u01D8\x03\u01D8\x03\u01D8\x05\u01D8" +
		"\u1433\n\u01D8\x03\u01D9\x03\u01D9\x03\u01DA\x03\u01DA\x03\u01DA\x07\u01DA" +
		"\u143A\n\u01DA\f\u01DA\x0E\u01DA\u143D\v\u01DA\x03\u01DB\x03\u01DB\x03" +
		"\u01DC\x03\u01DC\x03\u01DC\x03\u01DC\x03\u01DC\x03\u01DD\x03\u01DD\x03" +
		"\u01DD\x03\u01DD\x03\u01DD\x03\u01DE\x03\u01DE\x03\u01DE\x07\u01DE\u144E" +
		"\n\u01DE\f\u01DE\x0E\u01DE\u1451\v\u01DE\x03\u01DF\x03\u01DF\x03\u01DF" +
		"\x03\u01DF\x03\u01DF\x03\u01DF\x03\u01DF\x03\u01DF\x03\u01DF\x03\u01DF" +
		"\x03\u01DF\x03\u01DF\x03\u01DF\x03\u01DF\x05\u01DF\u1461\n\u01DF\x03\u01E0" +
		"\x03\u01E0\x03\u01E0\x03\u01E0\x03\u01E0\x03\u01E0\x03\u01E0\x05\u01E0" +
		"\u146A\n\u01E0\x03\u01E1\x03\u01E1\x03\u01E1\x07\u01E1\u146F\n\u01E1\f" +
		"\u01E1\x0E\u01E1\u1472\v\u01E1\x03\u01E2\x03\u01E2\x03\u01E2\x05\u01E2" +
		"\u1477\n\u01E2\x03\u01E3\x03\u01E3\x03\u01E3\x07\u01E3\u147C\n\u01E3\f" +
		"\u01E3\x0E\u01E3\u147F\v\u01E3\x03\u01E4\x03\u01E4\x03\u01E4\x03\u01E4" +
		"\x05\u01E4\u1485\n\u01E4\x03\u01E4\x03\u01E4\x03\u01E4\x03\u01E4\x03\u01E4" +
		"\x03\u01E4\x03\u01E4\x05\u01E4\u148E\n\u01E4\x05\u01E4\u1490\n\u01E4\x03" +
		"\u01E5\x03\u01E5\x03\u01E5\x03\u01E6\x03\u01E6\x05\u01E6\u1497\n\u01E6" +
		"\x03\u01E7\x03\u01E7\x03\u01E8\x03\u01E8\x03\u01E9\x03\u01E9\x03\u01EA" +
		"\x03\u01EA\x03\u01EB\x03\u01EB\x03\u01EC\x03\u01EC\x03\u01ED\x03\u01ED" +
		"\x03\u01EE\x03\u01EE\x03\u01EF\x03\u01EF\x03\u01F0\x03\u01F0\x03\u01F1" +
		"\x03\u01F1\x03\u01F2\x03\u01F2\x03\u01F2\x03\u01F2\x03\u01F2\x03\u01F2" +
		"\x03\u01F2\x03\u01F2\x03\u01F2\x03\u01F2\x03\u01F2\x03\u01F2\x03\u01F2" +
		"\x03\u01F2\x03\u01F2\x05\u01F2\u14BE\n\u01F2\x03\u01F2\x03\u01F2\x05\u01F2" +
		"\u14C2\n\u01F2\x05\u01F2\u14C4\n\u01F2\x03\u01F3\x03\u01F3\x05\u01F3\u14C8" +
		"\n\u01F3\x03\u01F3\x03\u01F3\x03\u01F3\x03\u01F4\x03\u01F4\x03\u01F4\x03" +
		"\u01F4\x03\u01F4\x03\u01F4\x03\u01F4\x03\u01F4\x03\u01F4\x03\u01F4\x03" +
		"\u01F4\x03\u01F4\x05\u01F4\u14D9\n\u01F4\x03\u01F5\x03\u01F5\x03\u01F5" +
		"\x03\u01F5\x05\u01F5\u14DF\n\u01F5\x03\u01F5\x03\u01F5\x03\u01F6\x03\u01F6" +
		"\x03\u01F6\x07\u01F6\u14E6\n\u01F6\f\u01F6\x0E\u01F6\u14E9\v\u01F6\x03" +
		"\u01F7\x03\u01F7\x03\u01F8\x03\u01F8\x03\u01F8\x03\u01F9\x03\u01F9\x03" +
		"\u01F9\x07\u01F9\u14F3\n\u01F9\f\u01F9\x0E\u01F9\u14F6\v\u01F9\x03\u01FA" +
		"\x03\u01FA\x03\u01FA\x07\u01FA\u14FB\n\u01FA\f\u01FA\x0E\u01FA\u14FE\v" +
		"\u01FA\x03\u01FB\x03\u01FB\x03\u01FB\x03\u01FB\x03\u01FC\x03\u01FC\x03" +
		"\u01FD\x03\u01FD\x03\u01FE\x03\u01FE\x03\u01FE\x03\u01FE\x05\u01FE\u150C" +
		"\n\u01FE\x03\u01FF\x03\u01FF\x03\u01FF\x03\u0200\x03\u0200\x03\u0200\x03" +
		"\u0200\x03\u0200\x03\u0200\x03\u0200\x03\u0200\x03\u0200\x03\u0200\x03" +
		"\u0201\x03\u0201\x03\u0201\x03\u0201\x03\u0201\x03\u0201\x03\u0201\x03" +
		"\u0201\x03\u0201\x03\u0201\x03\u0201\x03\u0201\x03\u0201\x03\u0201\x05" +
		"\u0201\u1529\n\u0201\x03\u0201\x03\u0201\x03\u0201\x05\u0201\u152E\n\u0201" +
		"\x05\u0201\u1530\n\u0201\x03\u0202\x03\u0202\x03\u0202\x03\u0202\x03\u0202" +
		"\x03\u0202\x03\u0203\x03\u0203\x03\u0203\x03\u0203\x03\u0203\x03\u0203" +
		"\x03\u0203\x03\u0203\x03\u0203\x03\u0203\x03\u0203\x03\u0203\x05\u0203" +
		"\u1544\n\u0203\x03\u0204\x03\u0204\x03\u0204\x07\u0204\u1549\n\u0204\f" +
		"\u0204\x0E\u0204\u154C\v\u0204\x03\u0205\x03\u0205\x03\u0205\x03\u0205" +
		"\x03\u0205\x03\u0205\x03\u0205\x03\u0205\x03\u0206\x03\u0206\x03\u0206" +
		"\x03\u0206\x03\u0206\x03\u0206\x03\u0206\x03\u0206\x03\u0206\x03\u0206" +
		"\x03\u0206\x03\u0206\x05\u0206\u1562\n\u0206\x03\u0207\x03\u0207\x03\u0207" +
		"\x03\u0207\x03\u0207\x03\u0207\x03\u0208\x03\u0208\x03\u0208\x03\u0208" +
		"\x03\u0208\x03\u0208\x03\u0208\x03\u0208\x03\u0208\x05\u0208\u1573\n\u0208" +
		"\x03\u0208\x03\u0208\x03\u0208\x05\u0208\u1578\n\u0208\x03\u0209\x03\u0209" +
		"\x03\u0209\x03\u0209\x03\u0209\x03\u0209\x03\u0209\x03\u0209\x03\u0209" +
		"\x05\u0209\u1583\n\u0209\x03\u0209\x03\u0209\x03\u0209\x05\u0209\u1588" +
		"\n\u0209\x03\u020A\x03\u020A\x03\u020A\x03\u020A\x03\u020A\x03\u020A\x03" +
		"\u020A\x03\u020A\x02\x02\x02\u020B\x02\x02\x04\x02\x06\x02\b\x02\n\x02" +
		"\f\x02\x0E\x02\x10\x02\x12\x02\x14\x02\x16\x02\x18\x02\x1A\x02\x1C\x02" +
		"\x1E\x02 \x02\"\x02$\x02&\x02(\x02*\x02,\x02.\x020\x022\x024\x026\x02" +
		"8\x02:\x02<\x02>\x02@\x02B\x02D\x02F\x02H\x02J\x02L\x02N\x02P\x02R\x02" +
		"T\x02V\x02X\x02Z\x02\\\x02^\x02`\x02b\x02d\x02f\x02h\x02j\x02l\x02n\x02" +
		"p\x02r\x02t\x02v\x02x\x02z\x02|\x02~\x02\x80\x02\x82\x02\x84\x02\x86\x02" +
		"\x88\x02\x8A\x02\x8C\x02\x8E\x02\x90\x02\x92\x02\x94\x02\x96\x02\x98\x02" +
		"\x9A\x02\x9C\x02\x9E\x02\xA0\x02\xA2\x02\xA4\x02\xA6\x02\xA8\x02\xAA\x02" +
		"\xAC\x02\xAE\x02\xB0\x02\xB2\x02\xB4\x02\xB6\x02\xB8\x02\xBA\x02\xBC\x02" +
		"\xBE\x02\xC0\x02\xC2\x02\xC4\x02\xC6\x02\xC8\x02\xCA\x02\xCC\x02\xCE\x02" +
		"\xD0\x02\xD2\x02\xD4\x02\xD6\x02\xD8\x02\xDA\x02\xDC\x02\xDE\x02\xE0\x02" +
		"\xE2\x02\xE4\x02\xE6\x02\xE8\x02\xEA\x02\xEC\x02\xEE\x02\xF0\x02\xF2\x02" +
		"\xF4\x02\xF6\x02\xF8\x02\xFA\x02\xFC\x02\xFE\x02\u0100\x02\u0102\x02\u0104" +
		"\x02\u0106\x02\u0108\x02\u010A\x02\u010C\x02\u010E\x02\u0110\x02\u0112" +
		"\x02\u0114\x02\u0116\x02\u0118\x02\u011A\x02\u011C\x02\u011E\x02\u0120" +
		"\x02\u0122\x02\u0124\x02\u0126\x02\u0128\x02\u012A\x02\u012C\x02\u012E" +
		"\x02\u0130\x02\u0132\x02\u0134\x02\u0136\x02\u0138\x02\u013A\x02\u013C" +
		"\x02\u013E\x02\u0140\x02\u0142\x02\u0144\x02\u0146\x02\u0148\x02\u014A" +
		"\x02\u014C\x02\u014E\x02\u0150\x02\u0152\x02\u0154\x02\u0156\x02\u0158" +
		"\x02\u015A\x02\u015C\x02\u015E\x02\u0160\x02\u0162\x02\u0164\x02\u0166" +
		"\x02\u0168\x02\u016A\x02\u016C\x02\u016E\x02\u0170\x02\u0172\x02\u0174" +
		"\x02\u0176\x02\u0178\x02\u017A\x02\u017C\x02\u017E\x02\u0180\x02\u0182" +
		"\x02\u0184\x02\u0186\x02\u0188\x02\u018A\x02\u018C\x02\u018E\x02\u0190" +
		"\x02\u0192\x02\u0194\x02\u0196\x02\u0198\x02\u019A\x02\u019C\x02\u019E" +
		"\x02\u01A0\x02\u01A2\x02\u01A4\x02\u01A6\x02\u01A8\x02\u01AA\x02\u01AC" +
		"\x02\u01AE\x02\u01B0\x02\u01B2\x02\u01B4\x02\u01B6\x02\u01B8\x02\u01BA" +
		"\x02\u01BC\x02\u01BE\x02\u01C0\x02\u01C2\x02\u01C4\x02\u01C6\x02\u01C8" +
		"\x02\u01CA\x02\u01CC\x02\u01CE\x02\u01D0\x02\u01D2\x02\u01D4\x02\u01D6" +
		"\x02\u01D8\x02\u01DA\x02\u01DC\x02\u01DE\x02\u01E0\x02\u01E2\x02\u01E4" +
		"\x02\u01E6\x02\u01E8\x02\u01EA\x02\u01EC\x02\u01EE\x02\u01F0\x02\u01F2" +
		"\x02\u01F4\x02\u01F6\x02\u01F8\x02\u01FA\x02\u01FC\x02\u01FE\x02\u0200" +
		"\x02\u0202\x02\u0204\x02\u0206\x02\u0208\x02\u020A\x02\u020C\x02\u020E" +
		"\x02\u0210\x02\u0212\x02\u0214\x02\u0216\x02\u0218\x02\u021A\x02\u021C" +
		"\x02\u021E\x02\u0220\x02\u0222\x02\u0224\x02\u0226\x02\u0228\x02\u022A" +
		"\x02\u022C\x02\u022E\x02\u0230\x02\u0232\x02\u0234\x02\u0236\x02\u0238" +
		"\x02\u023A\x02\u023C\x02\u023E\x02\u0240\x02\u0242\x02\u0244\x02\u0246" +
		"\x02\u0248\x02\u024A\x02\u024C\x02\u024E\x02\u0250\x02\u0252\x02\u0254" +
		"\x02\u0256\x02\u0258\x02\u025A\x02\u025C\x02\u025E\x02\u0260\x02\u0262" +
		"\x02\u0264\x02\u0266\x02\u0268\x02\u026A\x02\u026C\x02\u026E\x02\u0270" +
		"\x02\u0272\x02\u0274\x02\u0276\x02\u0278\x02\u027A\x02\u027C\x02\u027E" +
		"\x02\u0280\x02\u0282\x02\u0284\x02\u0286\x02\u0288\x02\u028A\x02\u028C" +
		"\x02\u028E\x02\u0290\x02\u0292\x02\u0294\x02\u0296\x02\u0298\x02\u029A" +
		"\x02\u029C\x02\u029E\x02\u02A0\x02\u02A2\x02\u02A4\x02\u02A6\x02\u02A8" +
		"\x02\u02AA\x02\u02AC\x02\u02AE\x02\u02B0\x02\u02B2\x02\u02B4\x02\u02B6" +
		"\x02\u02B8\x02\u02BA\x02\u02BC\x02\u02BE\x02\u02C0\x02\u02C2\x02\u02C4" +
		"\x02\u02C6\x02\u02C8\x02\u02CA\x02\u02CC\x02\u02CE\x02\u02D0\x02\u02D2" +
		"\x02\u02D4\x02\u02D6\x02\u02D8\x02\u02DA\x02\u02DC\x02\u02DE\x02\u02E0" +
		"\x02\u02E2\x02\u02E4\x02\u02E6\x02\u02E8\x02\u02EA\x02\u02EC\x02\u02EE" +
		"\x02\u02F0\x02\u02F2\x02\u02F4\x02\u02F6\x02\u02F8\x02\u02FA\x02\u02FC" +
		"\x02\u02FE\x02\u0300\x02\u0302\x02\u0304\x02\u0306\x02\u0308\x02\u030A" +
		"\x02\u030C\x02\u030E\x02\u0310\x02\u0312\x02\u0314\x02\u0316\x02\u0318" +
		"\x02\u031A\x02\u031C\x02\u031E\x02\u0320\x02\u0322\x02\u0324\x02\u0326" +
		"\x02\u0328\x02\u032A\x02\u032C\x02\u032E\x02\u0330\x02\u0332\x02\u0334" +
		"\x02\u0336\x02\u0338\x02\u033A\x02\u033C\x02\u033E\x02\u0340\x02\u0342" +
		"\x02\u0344\x02\u0346\x02\u0348\x02\u034A\x02\u034C\x02\u034E\x02\u0350" +
		"\x02\u0352\x02\u0354\x02\u0356\x02\u0358\x02\u035A\x02\u035C\x02\u035E" +
		"\x02\u0360\x02\u0362\x02\u0364\x02\u0366\x02\u0368\x02\u036A\x02\u036C" +
		"\x02\u036E\x02\u0370\x02\u0372\x02\u0374\x02\u0376\x02\u0378\x02\u037A" +
		"\x02\u037C\x02\u037E\x02\u0380\x02\u0382\x02\u0384\x02\u0386\x02\u0388" +
		"\x02\u038A\x02\u038C\x02\u038E\x02\u0390\x02\u0392\x02\u0394\x02\u0396" +
		"\x02\u0398\x02\u039A\x02\u039C\x02\u039E\x02\u03A0\x02\u03A2\x02\u03A4" +
		"\x02\u03A6\x02\u03A8\x02\u03AA\x02\u03AC\x02\u03AE\x02\u03B0\x02\u03B2" +
		"\x02\u03B4\x02\u03B6\x02\u03B8\x02\u03BA\x02\u03BC\x02\u03BE\x02\u03C0" +
		"\x02\u03C2\x02\u03C4\x02\u03C6\x02\u03C8\x02\u03CA\x02\u03CC\x02\u03CE" +
		"\x02\u03D0\x02\u03D2\x02\u03D4\x02\u03D6\x02\u03D8\x02\u03DA\x02\u03DC" +
		"\x02\u03DE\x02\u03E0\x02\u03E2\x02\u03E4\x02\u03E6\x02\u03E8\x02\u03EA" +
		"\x02\u03EC\x02\u03EE\x02\u03F0\x02\u03F2\x02\u03F4\x02\u03F6\x02\u03F8" +
		"\x02\u03FA\x02\u03FC\x02\u03FE\x02\u0400\x02\u0402\x02\u0404\x02\u0406" +
		"\x02\u0408\x02\u040A\x02\u040C\x02\u040E\x02\u0410\x02\u0412\x02\x02:" +
		"\x04\x02;;\xAE\xAE\x06\x02]]{{\xE3\xE3\u0146\u0146\x04\x02$$\u011B\u011B" +
		"\x03\x02[\\\x04\x02\x8D\x8D\x9C\x9C\x04\x02EE\u0128\u0128\x04\x02FF\u0129" +
		"\u0129\x03\x02\x9D\x9E\x04\x02tt\u0134\u0134\r\x02\t\t\v\v<<XXgg\x9D\x9D" +
		"\xA3\xA3\xBF\xBF\u012C\u012C\u0136\u0136\u016E\u016E\x05\x02\x06\x06g" +
		"g\u0147\u0147\x05\x02\x11\x11\x82\x82\xAC\xAC\x03\x02\x8F\x90\x04\x02" +
		"  \u0160\u0160\x04\x02\xDA\xDA\u0176\u0176\x04\x02\xD7\xD7\u0111\u0111" +
		"\x04\x02\x14\x14[[\x04\x02\x84\x84\xB3\xB3\x04\x02))\u0179\u0179\x06\x02" +
		"rr\xA6\xA6\xCE\xCE\u0165\u0165\x04\x02\t\tbb\x04\x02\xE2\xE2\u0188\u0188" +
		"\x04\x02\xBE\xBE\xC5\xC5\x04\x02,,\u013C\u013C\x04\x02\u01AB\u01AB\u01B0" +
		"\u01B0\x04\x02\x8E\x8E\u011E\u011E\x05\x02\x0E\x0E\xE8\xE8\u012D\u012D" +
		"\x04\x02\xF2\xF2\u0125\u0125\x04\x02\xC7\xC7\u010D\u010D\x04\x02\u0163" +
		"\u0163\u01B0\u01B0\x04\x02\x87\x87\xF8\xF8\x05\x02\u019E\u019F\u01A3\u01A3" +
		"\u01A5\u01A5\x04\x02\u019D\u019D\u01A0\u01A2\x03\x02\u019E\u019F\x05\x02" +
		"\xB9\xB9\u010F\u010F\u011F\u011F\x04\x02\t\t\x0F\x0F\x05\x02\t\t\x0F\x0F" +
		"\u013A\u013A\x04\x02\x7F\x7F\u015F\u015F\x04\x02\u0196\u0196\u0198\u019C" +
		"\x1A\x02\r\r\x12\x12\x1B\x1E%%ff\x85\x86\x99\x99\x9C\x9C\xA4\xA5\xB9\xB9" +
		"\xC7\xC7\xD9\xD9\xE5\xE5\u0109\u0109\u010F\u010F\u011F\u011F\u0138\u0138" +
		"\u0144\u0145\u0155\u0155\u0166\u0166\u0180\u0180\u0196\u01A2\u01A4\u01A6" +
		"\u01A8\u01A8W\x02\x03\b\n\n\f\f\x11\x11\x14\x16\x18\x1A !#$\'(*.01346" +
		"7:;==DDFFJOQQUWY[]aceijlmoqtvx{\x81\x84\x8B\x8C\x90\x90\x95\x98\x9A\x9A" +
		"\x9D\x9E\xA0\xA2\xAA\xAC\xAE\xB3\xB8\xB8\xBA\xBC\xBE\xC2\xC4\xC6\xC8\xCB" +
		"\xCD\xCD\xCF\xD2\xD4\xD5\xD7\xD8\xDA\xDB\xDD\xDD\xDF\xE0\xE3\xE4\xE9\xEA" +
		"\xEC\xED\xEF\xF1\xF4\xF7\xFD\xFD\xFF\u0100\u0102\u0104\u0106\u0107\u010A" +
		"\u010C\u0110\u011B\u011D\u011D\u0120\u0121\u0126\u012B\u012D\u0130\u0132" +
		"\u0137\u0139\u0139\u013B\u013E\u0140\u0146\u0148\u0149\u014B\u014B\u014D" +
		"\u014F\u0154\u0155\u0157\u0157\u0159\u015B\u015E\u015E\u0161\u0162\u0164" +
		"\u0164\u0166\u0166\u0169\u016D\u016F\u0171\u0174\u0176\u0178\u0178\u017A" +
		"\u017F\u0182\u0182\u0185\u018B\x0F\x02\x12\x12\x1C\x1EABIIff\x85\x85\x93" +
		"\x93\x99\x99\xA4\xA5\xC7\xC7\u0109\u0109\u0138\u0138\u0152\u0152\x06\x02" +
		"\xC8\xC8\xF3\xF3\u012D\u012D\u0143\u0143\x04\x02\xD6\xD6\u01B0\u01B1\x03" +
		"\x02lm\x03\x02`a\x03\x02\u0189\u018A\x03\x02\xD1\xD2\x03\x02\u017E\u017F" +
		"\x03\x02KL\x03\x02\x96\x97\x03\x02\xCF\xD0\x03\x02\u012A\u012B\x03\x02" +
		"RT\x04\x02\x06\x06gg\x05\x02\x10\x10\x92\x92\u0172\u0172\x02\u1720\x02" +
		"\u0417\x03\x02\x02\x02\x04\u041E\x03\x02\x02\x02\x06\u0423\x03\x02\x02" +
		"\x02\b\u0445\x03\x02\x02\x02\n\u0447\x03\x02\x02\x02\f\u0449\x03\x02\x02" +
		"\x02\x0E\u0459\x03\x02\x02\x02\x10\u045B\x03\x02\x02\x02\x12\u046B\x03" +
		"\x02\x02\x02\x14\u046E\x03\x02\x02\x02\x16\u0477\x03\x02\x02\x02\x18\u047F" +
		"\x03\x02\x02\x02\x1A\u048C\x03\x02\x02\x02\x1C\u0497\x03\x02\x02\x02\x1E" +
		"\u049C\x03\x02\x02\x02 \u04A7\x03\x02\x02\x02\"\u04AB\x03\x02\x02\x02" +
		"$\u04B3\x03\x02\x02\x02&\u04B8\x03\x02\x02\x02(\u04EE\x03\x02\x02\x02" +
		"*\u04F0\x03\x02\x02\x02,\u04F3\x03\x02\x02\x02.\u04F5\x03\x02\x02\x02" +
		"0\u04F9\x03\x02\x02\x022\u04FB\x03\x02\x02\x024\u04FE\x03\x02\x02\x02" +
		"6\u0501\x03\x02\x02\x028\u0505\x03\x02\x02\x02:\u052F\x03\x02\x02\x02" +
		"<\u0531\x03\x02\x02\x02>\u0534\x03\x02\x02\x02@\u0537\x03\x02\x02\x02" +
		"B\u053B\x03\x02\x02\x02D\u0543\x03\x02\x02\x02F\u0546\x03\x02\x02\x02" +
		"H\u0549\x03\x02\x02\x02J\u0552\x03\x02\x02\x02L\u0555\x03\x02\x02\x02" +
		"N\u0564\x03\x02\x02\x02P\u0570\x03\x02\x02\x02R\u0575\x03\x02\x02\x02" +
		"T\u0589\x03\x02\x02\x02V\u058D\x03\x02\x02\x02X\u0594\x03\x02\x02\x02" +
		"Z\u05AD\x03\x02\x02\x02\\\u05BE\x03\x02\x02\x02^\u05C0\x03\x02\x02\x02" +
		"`\u0683\x03\x02\x02\x02b\u068D\x03\x02\x02\x02d\u068F\x03\x02\x02\x02" +
		"f\u0697\x03\x02\x02\x02h\u069C\x03\x02\x02\x02j\u069E\x03\x02\x02\x02" +
		"l\u06A4\x03\x02\x02\x02n\u06A8\x03\x02\x02\x02p\u06AC\x03\x02\x02\x02" +
		"r\u06B0\x03\x02\x02\x02t\u06BA\x03\x02\x02\x02v\u06C5\x03\x02\x02\x02" +
		"x\u06D6\x03\x02\x02\x02z\u06E8\x03\x02\x02\x02|\u06ED\x03\x02\x02\x02" +
		"~\u06F0\x03\x02\x02\x02\x80\u06F4\x03\x02\x02\x02\x82\u06FB\x03\x02\x02" +
		"\x02\x84\u0704\x03\x02\x02\x02\x86\u070A\x03\x02\x02\x02\x88\u070C\x03" +
		"\x02\x02\x02\x8A\u071D\x03\x02\x02\x02\x8C\u0733\x03\x02\x02\x02\x8E\u0735" +
		"\x03\x02\x02\x02\x90\u073D\x03\x02\x02\x02\x92\u0744\x03\x02\x02\x02\x94" +
		"\u0746\x03\x02\x02\x02\x96\u0754\x03\x02\x02\x02\x98\u075B\x03\x02\x02" +
		"\x02\x9A\u075D\x03\x02\x02\x02\x9C\u0761\x03\x02\x02\x02\x9E\u0765\x03" +
		"\x02\x02\x02\xA0\u0769\x03\x02\x02\x02\xA2\u076D\x03\x02\x02\x02\xA4\u077A" +
		"\x03\x02\x02\x02\xA6\u0782\x03\x02\x02\x02\xA8\u0785\x03\x02\x02\x02\xAA" +
		"\u0787\x03\x02\x02\x02\xAC\u0793\x03\x02\x02\x02\xAE\u079D\x03\x02\x02" +
		"\x02\xB0\u07A0\x03\x02\x02\x02\xB2\u07AB\x03\x02\x02\x02\xB4\u07B3\x03" +
		"\x02\x02\x02\xB6\u07DF\x03\x02\x02\x02\xB8\u07E8\x03\x02\x02\x02\xBA\u0803" +
		"\x03\x02\x02\x02\xBC\u0810\x03\x02\x02\x02\xBE\u0812\x03\x02\x02\x02\xC0" +
		"\u0818\x03\x02\x02\x02\xC2\u081B\x03\x02\x02\x02\xC4\u0821\x03\x02\x02" +
		"\x02\xC6\u0827\x03\x02\x02\x02\xC8\u082E\x03\x02\x02\x02\xCA\u0850\x03" +
		"\x02\x02\x02\xCC\u0858\x03\x02\x02\x02\xCE\u0865\x03\x02\x02\x02\xD0\u086A" +
		"\x03\x02\x02\x02\xD2\u0875\x03\x02\x02\x02\xD4\u0886\x03\x02\x02\x02\xD6" +
		"\u0888\x03\x02\x02\x02\xD8\u088D\x03\x02\x02\x02\xDA\u0894\x03\x02\x02" +
		"\x02\xDC\u0896\x03\x02\x02\x02\xDE\u0899\x03\x02\x02\x02\xE0\u08A7\x03" +
		"\x02\x02\x02\xE2\u08AF\x03\x02\x02\x02\xE4\u08B7\x03\x02\x02\x02\xE6\u08BF" +
		"\x03\x02\x02\x02\xE8\u08D3\x03\x02\x02\x02\xEA\u08D5\x03\x02\x02\x02\xEC" +
		"\u08E6\x03\x02\x02\x02\xEE\u08EB\x03\x02\x02\x02\xF0\u08F9\x03\x02\x02" +
		"\x02\xF2\u08FB\x03\x02\x02\x02\xF4\u08FE\x03\x02\x02\x02\xF6\u0901\x03" +
		"\x02\x02\x02\xF8\u090A\x03\x02\x02\x02\xFA\u091E\x03\x02\x02\x02\xFC\u0920" +
		"\x03\x02\x02\x02\xFE\u0923\x03\x02\x02\x02\u0100\u0937\x03\x02\x02\x02" +
		"\u0102\u0939\x03\x02\x02\x02\u0104\u093D\x03\x02\x02\x02\u0106\u093F\x03" +
		"\x02\x02\x02\u0108\u0948\x03\x02\x02\x02\u010A\u094E\x03\x02\x02\x02\u010C" +
		"\u0954\x03\x02\x02\x02\u010E\u0959\x03\x02\x02\x02\u0110\u0987\x03\x02" +
		"\x02\x02\u0112\u0989\x03\x02\x02\x02\u0114\u098C\x03\x02\x02\x02\u0116" +
		"\u0994\x03\x02\x02\x02\u0118\u099C\x03\x02\x02\x02\u011A\u09A4\x03\x02" +
		"\x02\x02\u011C\u09AC\x03\x02\x02\x02\u011E\u09B4\x03\x02\x02\x02\u0120" +
		"\u09B6\x03\x02\x02\x02\u0122\u09C3\x03\x02\x02\x02\u0124\u09CB\x03\x02" +
		"\x02\x02\u0126\u09D4\x03\x02\x02\x02\u0128\u09D8\x03\x02\x02\x02\u012A" +
		"\u09DA\x03\x02\x02\x02\u012C\u09DF\x03\x02\x02\x02\u012E\u09E1\x03\x02" +
		"\x02\x02\u0130\u09E5\x03\x02\x02\x02\u0132\u09EB\x03\x02\x02\x02\u0134" +
		"\u09F3\x03\x02\x02\x02\u0136\u09F5\x03\x02\x02\x02\u0138\u09F8\x03\x02" +
		"\x02\x02\u013A\u09FF\x03\x02\x02\x02\u013C\u0A0A\x03\x02\x02\x02\u013E" +
		"\u0A17\x03\x02\x02\x02\u0140\u0A19\x03\x02\x02\x02\u0142\u0A21\x03\x02" +
		"\x02\x02\u0144\u0A25\x03\x02\x02\x02\u0146\u0A2D\x03\x02\x02\x02\u0148" +
		"\u0A31\x03\x02\x02\x02\u014A\u0A33\x03\x02\x02\x02\u014C\u0A35\x03\x02" +
		"\x02\x02\u014E\u0A38\x03\x02\x02\x02\u0150\u0A3F\x03\x02\x02\x02\u0152" +
		"\u0A47\x03\x02\x02\x02\u0154\u0A4C\x03\x02\x02\x02\u0156\u0A50\x03\x02" +
		"\x02\x02\u0158\u0A58\x03\x02\x02\x02\u015A\u0A60\x03\x02\x02\x02\u015C" +
		"\u0A64\x03\x02\x02\x02\u015E\u0A66\x03\x02\x02\x02\u0160\u0A71\x03\x02" +
		"\x02\x02\u0162\u0A75\x03\x02\x02\x02\u0164\u0A81\x03\x02\x02\x02\u0166" +
		"\u0A89\x03\x02\x02\x02\u0168\u0A8D\x03\x02\x02\x02\u016A\u0A99\x03\x02" +
		"\x02\x02\u016C\u0AA5\x03\x02\x02\x02\u016E\u0AAA\x03\x02\x02\x02\u0170" +
		"\u0AAF\x03\x02\x02\x02\u0172\u0AB1\x03\x02\x02\x02\u0174\u0AB5\x03\x02" +
		"\x02\x02\u0176\u0AB9\x03\x02\x02\x02\u0178\u0AC0\x03\x02\x02\x02\u017A" +
		"\u0AC2\x03\x02\x02\x02\u017C\u0ACF\x03\x02\x02\x02\u017E\u0AF6\x03\x02" +
		"\x02\x02\u0180\u0AF8\x03\x02\x02\x02\u0182\u0AFD\x03\x02\x02\x02\u0184" +
		"\u0B02\x03\x02\x02\x02\u0186\u0B09\x03\x02\x02\x02\u0188\u0B0E\x03\x02" +
		"\x02\x02\u018A\u0B13\x03\x02\x02\x02\u018C\u0B19\x03\x02\x02\x02\u018E" +
		"\u0B1B\x03\x02\x02\x02\u0190\u0B24\x03\x02\x02\x02\u0192\u0B30\x03\x02" +
		"\x02\x02\u0194\u0B39\x03\x02\x02\x02\u0196\u0B43\x03\x02\x02\x02\u0198" +
		"\u0B5D\x03\x02\x02\x02\u019A\u0B5F\x03\x02\x02\x02\u019C\u0B75\x03\x02" +
		"\x02\x02\u019E\u0B7A\x03\x02\x02\x02\u01A0\u0BC3\x03\x02\x02\x02\u01A2" +
		"\u0BC5\x03\x02\x02\x02\u01A4\u0BE5\x03\x02\x02\x02\u01A6\u0BE7\x03\x02" +
		"\x02\x02\u01A8\u0BF2\x03\x02\x02\x02\u01AA\u0BF8\x03\x02\x02\x02\u01AC" +
		"\u0BFE\x03\x02\x02\x02\u01AE\u0C00\x03\x02\x02\x02\u01B0\u0C09\x03\x02" +
		"\x02\x02\u01B2\u0C13\x03\x02\x02\x02\u01B4\u0C15\x03\x02\x02\x02\u01B6" +
		"\u0C23\x03\x02\x02\x02\u01B8\u0C25\x03\x02\x02\x02\u01BA\u0C28\x03\x02" +
		"\x02\x02\u01BC\u0C2C\x03\x02\x02\x02\u01BE\u0C2E\x03\x02\x02\x02\u01C0" +
		"\u0C32\x03\x02\x02\x02\u01C2\u0C36\x03\x02\x02\x02\u01C4\u0C3A\x03\x02" +
		"\x02\x02\u01C6\u0C41\x03\x02\x02\x02\u01C8\u0C48\x03\x02\x02\x02\u01CA" +
		"\u0C5E\x03\x02\x02\x02\u01CC\u0C64\x03\x02\x02\x02\u01CE\u0C73\x03\x02" +
		"\x02\x02\u01D0\u0C7A\x03\x02\x02\x02\u01D2\u0C82\x03\x02\x02\x02\u01D4" +
		"\u0C84\x03\x02\x02\x02\u01D6\u0C8B\x03\x02\x02\x02\u01D8\u0C8F\x03\x02" +
		"\x02\x02\u01DA\u0C92\x03\x02\x02\x02\u01DC\u0C95\x03\x02\x02\x02\u01DE" +
		"\u0C98\x03\x02\x02\x02\u01E0\u0CC7\x03\x02\x02\x02\u01E2\u0CD8\x03\x02" +
		"\x02\x02\u01E4\u0CDA\x03\x02\x02\x02\u01E6\u0CE5\x03\x02\x02\x02\u01E8" +
		"\u0CE9\x03\x02\x02\x02\u01EA\u0CED\x03\x02\x02\x02\u01EC\u0CEF\x03\x02" +
		"\x02\x02\u01EE\u0CF4\x03\x02\x02\x02\u01F0\u0CF6\x03\x02\x02\x02\u01F2" +
		"\u0CFB\x03\x02\x02\x02\u01F4\u0D00\x03\x02\x02\x02\u01F6\u0D05\x03\x02" +
		"\x02\x02\u01F8\u0D0A\x03\x02\x02\x02\u01FA\u0D10\x03\x02\x02\x02\u01FC" +
		"\u0D19\x03\x02\x02\x02\u01FE\u0D1E\x03\x02\x02\x02\u0200\u0D2B\x03\x02" +
		"\x02\x02\u0202\u0D2D\x03\x02\x02\x02\u0204\u0D31\x03\x02\x02\x02\u0206" +
		"\u0D45\x03\x02\x02\x02\u0208\u0D52\x03\x02\x02\x02\u020A\u0D5A\x03\x02" +
		"\x02\x02\u020C\u0D5C\x03\x02\x02\x02";
	private static readonly _serializedATNSegment3: string =
		"\u020E\u0D65\x03\x02\x02\x02\u0210\u0D69\x03\x02\x02\x02\u0212\u0D70\x03" +
		"\x02\x02\x02\u0214\u0D77\x03\x02\x02\x02\u0216\u0D7E\x03\x02\x02\x02\u0218" +
		"\u0D81\x03\x02\x02\x02\u021A\u0D84\x03\x02\x02\x02\u021C\u0DA4\x03\x02" +
		"\x02\x02\u021E\u0DAF\x03\x02\x02\x02\u0220\u0DC0\x03\x02\x02\x02\u0222" +
		"\u0DC2\x03\x02\x02\x02\u0224\u0DC6\x03\x02\x02\x02\u0226\u0DCD\x03\x02" +
		"\x02\x02\u0228\u0DCF\x03\x02\x02\x02\u022A\u0DD4\x03\x02\x02\x02\u022C" +
		"\u0DD8\x03\x02\x02\x02\u022E\u0DE0\x03\x02\x02\x02\u0230\u0DE4\x03\x02" +
		"\x02\x02\u0232\u0DEE\x03\x02\x02\x02\u0234\u0DF0\x03\x02\x02\x02\u0236" +
		"\u0DF6\x03\x02\x02\x02\u0238\u0DFA\x03\x02\x02\x02\u023A\u0E07\x03\x02" +
		"\x02\x02\u023C\u0E09\x03\x02\x02\x02\u023E\u0E0D\x03\x02\x02\x02\u0240" +
		"\u0E10\x03\x02\x02\x02\u0242\u0E13\x03\x02\x02\x02\u0244\u0E27\x03\x02" +
		"\x02\x02\u0246\u0E2B\x03\x02\x02\x02\u0248\u0E32\x03\x02\x02\x02\u024A" +
		"\u0E40\x03\x02\x02\x02\u024C\u0E55\x03\x02\x02\x02\u024E\u0E5A\x03\x02" +
		"\x02\x02\u0250\u0E5C\x03\x02\x02\x02\u0252\u0E61\x03\x02\x02\x02\u0254" +
		"\u0E66\x03\x02\x02\x02\u0256\u0E74\x03\x02\x02\x02\u0258\u0EF1\x03\x02" +
		"\x02\x02\u025A\u0EF3\x03\x02\x02\x02\u025C\u0F07\x03\x02\x02\x02\u025E" +
		"\u0F0A\x03\x02\x02\x02\u0260\u0F0D\x03\x02\x02\x02\u0262\u0F10\x03\x02" +
		"\x02\x02\u0264\u0F14\x03\x02\x02\x02\u0266\u0F20\x03\x02\x02\x02\u0268" +
		"\u0F22\x03\x02\x02\x02\u026A\u0F24\x03\x02\x02\x02\u026C\u0F2C\x03\x02" +
		"\x02\x02\u026E\u0F34\x03\x02\x02\x02\u0270\u0F40\x03\x02\x02\x02\u0272" +
		"\u0F62\x03\x02\x02\x02\u0274\u0F64\x03\x02\x02\x02\u0276\u0F76\x03\x02" +
		"\x02\x02\u0278\u0F7F\x03\x02\x02\x02\u027A\u0F84\x03\x02\x02\x02\u027C" +
		"\u0F88\x03\x02\x02\x02\u027E\u0F98\x03\x02\x02\x02\u0280\u0FD3\x03\x02" +
		"\x02\x02\u0282\u0FD5\x03\x02\x02\x02\u0284\u0FD7\x03\x02\x02\x02\u0286" +
		"\u0FEB\x03\x02\x02\x02\u0288\u0FF6\x03\x02\x02\x02\u028A\u0FF8\x03\x02" +
		"\x02\x02\u028C\u1008\x03\x02\x02\x02\u028E\u1014\x03\x02\x02\x02\u0290" +
		"\u101E\x03\x02\x02\x02\u0292\u1020\x03\x02\x02\x02\u0294\u1024\x03\x02" +
		"\x02\x02\u0296\u102E\x03\x02\x02\x02\u0298\u1038\x03\x02\x02\x02\u029A" +
		"\u103D\x03\x02\x02\x02\u029C\u1044\x03\x02\x02\x02\u029E\u1048\x03\x02" +
		"\x02\x02\u02A0\u105B\x03\x02\x02\x02\u02A2\u1060\x03\x02\x02\x02\u02A4" +
		"\u1062\x03\x02\x02\x02\u02A6\u107E\x03\x02\x02\x02\u02A8\u1081\x03\x02" +
		"\x02\x02\u02AA\u1083\x03\x02\x02\x02\u02AC\u1085\x03\x02\x02\x02\u02AE" +
		"\u1098\x03\x02\x02\x02\u02B0\u109A\x03\x02\x02\x02\u02B2\u109C\x03\x02" +
		"\x02\x02\u02B4\u10A0\x03\x02\x02\x02\u02B6\u10C2\x03\x02\x02\x02\u02B8" +
		"\u10C4\x03\x02\x02\x02\u02BA\u10C6\x03\x02\x02\x02\u02BC\u10CE\x03\x02" +
		"\x02\x02\u02BE\u10FD\x03\x02\x02\x02\u02C0\u10FF\x03\x02\x02\x02\u02C2" +
		"\u1118\x03\x02\x02\x02\u02C4\u111A\x03\x02\x02\x02\u02C6\u1122\x03\x02" +
		"\x02\x02\u02C8\u112B\x03\x02\x02\x02\u02CA\u113B\x03\x02\x02\x02\u02CC" +
		"\u113F\x03\x02\x02\x02\u02CE\u1141\x03\x02\x02\x02\u02D0\u114A\x03\x02" +
		"\x02\x02\u02D2\u1159\x03\x02\x02\x02\u02D4\u115F\x03\x02\x02\x02\u02D6" +
		"\u1161\x03\x02\x02\x02\u02D8\u1169\x03\x02\x02\x02\u02DA\u116B\x03\x02" +
		"\x02\x02\u02DC\u1170\x03\x02\x02\x02\u02DE\u117D\x03\x02\x02\x02\u02E0" +
		"\u1195\x03\x02\x02\x02\u02E2\u1197\x03\x02\x02\x02\u02E4\u11A4\x03\x02" +
		"\x02\x02\u02E6\u11A6\x03\x02\x02\x02\u02E8\u11A9\x03\x02\x02\x02\u02EA" +
		"\u11AC\x03\x02\x02\x02\u02EC\u11AE\x03\x02\x02\x02\u02EE\u11B2\x03\x02" +
		"\x02\x02\u02F0\u11B8\x03\x02\x02\x02\u02F2\u11BE\x03\x02\x02\x02\u02F4" +
		"\u11C0\x03\x02\x02\x02\u02F6\u11CE\x03\x02\x02\x02\u02F8\u11D7\x03\x02" +
		"\x02\x02\u02FA\u11D9\x03\x02\x02\x02\u02FC\u11E4\x03\x02\x02\x02\u02FE" +
		"\u11EC\x03\x02\x02\x02\u0300\u11F6\x03\x02\x02\x02\u0302\u11FA\x03\x02" +
		"\x02\x02\u0304\u11FE\x03\x02\x02\x02\u0306\u1202\x03\x02\x02\x02\u0308" +
		"\u1208\x03\x02\x02\x02\u030A\u123E\x03\x02\x02\x02\u030C\u1244\x03\x02" +
		"\x02\x02\u030E\u1246\x03\x02\x02\x02\u0310\u124A\x03\x02\x02\x02\u0312" +
		"\u124E\x03\x02\x02\x02\u0314\u1250\x03\x02\x02\x02\u0316\u1254\x03\x02" +
		"\x02\x02\u0318\u1256\x03\x02\x02\x02\u031A\u1261\x03\x02\x02\x02\u031C" +
		"\u1272\x03\x02\x02\x02\u031E\u1282\x03\x02\x02\x02\u0320\u1293\x03\x02" +
		"\x02\x02\u0322\u1295\x03\x02\x02\x02\u0324\u12A4\x03\x02\x02\x02\u0326" +
		"\u12B3\x03\x02\x02\x02\u0328\u12B5\x03\x02\x02\x02\u032A\u12B7\x03\x02" +
		"\x02\x02\u032C\u12B9\x03\x02\x02\x02\u032E\u12BF\x03\x02\x02\x02\u0330" +
		"\u12C5\x03\x02\x02\x02\u0332\u12CA\x03\x02\x02\x02\u0334\u12CC\x03\x02" +
		"\x02\x02\u0336\u12CF\x03\x02\x02\x02\u0338\u12D1\x03\x02\x02\x02\u033A" +
		"\u12E3\x03\x02\x02\x02\u033C\u12F3\x03\x02\x02\x02\u033E\u12F5\x03\x02" +
		"\x02\x02\u0340\u1302\x03\x02\x02\x02\u0342\u1304\x03\x02\x02\x02\u0344" +
		"\u1310\x03\x02\x02\x02\u0346\u1315\x03\x02\x02\x02\u0348\u131A\x03\x02" +
		"\x02\x02\u034A\u131C\x03\x02\x02\x02\u034C\u1325\x03\x02\x02\x02\u034E" +
		"\u1327\x03\x02\x02\x02\u0350\u1330\x03\x02\x02\x02\u0352\u1332\x03\x02" +
		"\x02\x02\u0354\u133B\x03\x02\x02\x02\u0356\u133D\x03\x02\x02\x02\u0358" +
		"\u1346\x03\x02\x02\x02\u035A\u1348\x03\x02\x02\x02\u035C\u1351\x03\x02" +
		"\x02\x02\u035E\u1353\x03\x02\x02\x02\u0360\u135C\x03\x02\x02\x02\u0362" +
		"\u1363\x03\x02\x02\x02\u0364\u1365\x03\x02\x02\x02\u0366\u136C\x03\x02" +
		"\x02\x02\u0368\u136E\x03\x02\x02\x02\u036A\u1378\x03\x02\x02\x02\u036C" +
		"\u1385\x03\x02\x02\x02\u036E\u1387\x03\x02\x02\x02\u0370\u138B\x03\x02" +
		"\x02\x02\u0372\u138F\x03\x02\x02\x02\u0374\u1395\x03\x02\x02\x02\u0376" +
		"\u1397\x03\x02\x02\x02\u0378\u13A2\x03\x02\x02\x02\u037A\u13A4\x03\x02" +
		"\x02\x02\u037C\u13BC\x03\x02\x02\x02\u037E\u13BE\x03\x02\x02\x02\u0380" +
		"\u13C3\x03\x02\x02\x02\u0382\u13C8\x03\x02\x02\x02\u0384\u13CD\x03\x02" +
		"\x02\x02\u0386\u13CF\x03\x02\x02\x02\u0388\u13D8\x03\x02\x02\x02\u038A" +
		"\u13DA\x03\x02\x02\x02\u038C\u13E3\x03\x02\x02\x02\u038E\u13E5\x03\x02" +
		"\x02\x02\u0390\u13E7\x03\x02\x02\x02\u0392\u13EB\x03\x02\x02\x02\u0394" +
		"\u13F7\x03\x02\x02\x02\u0396\u13FC\x03\x02\x02\x02\u0398\u1407\x03\x02" +
		"\x02\x02\u039A\u140D\x03\x02\x02\x02\u039C\u140F\x03\x02\x02\x02\u039E" +
		"\u1411\x03\x02\x02\x02\u03A0\u1415\x03\x02\x02\x02\u03A2\u1417\x03\x02" +
		"\x02\x02\u03A4\u141C\x03\x02\x02\x02\u03A6\u141E\x03\x02\x02\x02\u03A8" +
		"\u1420\x03\x02\x02\x02\u03AA\u1422\x03\x02\x02\x02\u03AC\u1425\x03\x02" +
		"\x02\x02\u03AE\u142D\x03\x02\x02\x02\u03B0\u1434\x03\x02\x02\x02\u03B2" +
		"\u1436\x03\x02\x02\x02\u03B4\u143E\x03\x02\x02\x02\u03B6\u1440\x03\x02" +
		"\x02\x02\u03B8\u1445\x03\x02\x02\x02\u03BA\u144A\x03\x02\x02\x02\u03BC" +
		"\u1460\x03\x02\x02\x02\u03BE\u1469\x03\x02\x02\x02\u03C0\u146B\x03\x02" +
		"\x02\x02\u03C2\u1476\x03\x02\x02\x02\u03C4\u1478\x03\x02\x02\x02\u03C6" +
		"\u1480\x03\x02\x02\x02\u03C8\u1491\x03\x02\x02\x02\u03CA\u1494\x03\x02" +
		"\x02\x02\u03CC\u1498\x03\x02\x02\x02\u03CE\u149A\x03\x02\x02\x02\u03D0" +
		"\u149C\x03\x02\x02\x02\u03D2\u149E\x03\x02\x02\x02\u03D4\u14A0\x03\x02" +
		"\x02\x02\u03D6\u14A2\x03\x02\x02\x02\u03D8\u14A4\x03\x02\x02\x02\u03DA" +
		"\u14A6\x03\x02\x02\x02\u03DC\u14A8\x03\x02\x02\x02\u03DE\u14AA\x03\x02" +
		"\x02\x02\u03E0\u14AC\x03\x02\x02\x02\u03E2\u14AE\x03\x02\x02\x02\u03E4" +
		"\u14C7\x03\x02\x02\x02\u03E6\u14CC\x03\x02\x02\x02\u03E8\u14DA\x03\x02" +
		"\x02\x02\u03EA\u14E2\x03\x02\x02\x02\u03EC\u14EA\x03\x02\x02\x02\u03EE" +
		"\u14EC\x03\x02\x02\x02\u03F0\u14EF\x03\x02\x02\x02\u03F2\u14F7\x03\x02" +
		"\x02\x02\u03F4\u14FF\x03\x02\x02\x02\u03F6\u1503\x03\x02\x02\x02\u03F8" +
		"\u1505\x03\x02\x02\x02\u03FA\u150B\x03\x02\x02\x02\u03FC\u150D\x03\x02" +
		"\x02\x02\u03FE\u1510\x03\x02\x02\x02\u0400\u151A\x03\x02\x02\x02\u0402" +
		"\u1531\x03\x02\x02\x02\u0404\u1543\x03\x02\x02\x02\u0406\u1545\x03\x02" +
		"\x02\x02\u0408\u154D\x03\x02\x02\x02\u040A\u1555\x03\x02\x02\x02\u040C" +
		"\u1563\x03\x02\x02\x02\u040E\u1569\x03\x02\x02\x02\u0410\u1579\x03\x02" +
		"\x02\x02\u0412\u1589\x03\x02\x02\x02\u0414\u0416\x05\x04\x03\x02\u0415" +
		"\u0414\x03\x02\x02\x02\u0416\u0419\x03\x02\x02\x02\u0417\u0415\x03\x02" +
		"\x02\x02\u0417\u0418\x03\x02\x02\x02\u0418\u041A\x03\x02\x02\x02\u0419" +
		"\u0417\x03\x02\x02\x02\u041A\u041B\x07\x02\x02\x03\u041B\x03\x03\x02\x02" +
		"\x02\u041C\u041F\x05\x06\x04\x02\u041D\u041F\x05\x0E\b\x02\u041E\u041C" +
		"\x03\x02\x02\x02\u041E\u041D\x03\x02\x02\x02\u041F\u0421\x03\x02\x02\x02" +
		"\u0420\u0422\x07\u018F\x02\x02\u0421\u0420\x03\x02\x02\x02\u0421\u0422" +
		"\x03\x02\x02\x02\u0422\x05\x03\x02\x02\x02\u0423\u042D\x07y\x02\x02\u0424" +
		"\u0426\x05\b\x05\x02\u0425\u0424\x03\x02\x02\x02\u0426\u0429\x03\x02\x02" +
		"\x02\u0427\u0425\x03\x02\x02\x02\u0427\u0428\x03\x02\x02\x02\u0428\u042A" +
		"\x03\x02\x02\x02\u0429\u0427\x03\x02\x02\x02\u042A\u042E\x05\x0E\b\x02" +
		"\u042B\u042C\x07\u011D\x02\x02\u042C\u042E\x05\u018A\xC6\x02\u042D\u0427" +
		"\x03\x02\x02\x02\u042D\u042B\x03\x02\x02\x02\u042E\x07\x03\x02\x02\x02" +
		"\u042F\u0446\x07|\x02\x02\u0430\u0446\x07\x8C\x02\x02\u0431\u0446\x07" +
		"Z\x02\x02\u0432\u0434\x07\'\x02\x02\u0433\u0435\t\x02\x02\x02\u0434\u0433" +
		"\x03\x02\x02\x02\u0434\u0435\x03\x02\x02\x02\u0435\u0446\x03\x02\x02\x02" +
		"\u0436\u0446\x07\xC1\x02\x02\u0437\u0446\x07\x17\x02\x02\u0438\u0446\x07" +
		"\f\x02\x02\u0439\u0446\x07\u0114\x02\x02\u043A\u0446\x07\xC0\x02\x02\u043B" +
		"\u0446\x07\x15\x02\x02\u043C\u043E\x07\u017A\x02\x02\u043D\u043F\x05\n" +
		"\x06\x02\u043E\u043D\x03\x02\x02\x02\u043E\u043F\x03\x02\x02\x02\u043F" +
		"\u0441\x03\x02\x02\x02\u0440\u0442\x05\f\x07\x02\u0441\u0440\x03\x02\x02" +
		"\x02\u0441\u0442\x03\x02\x02\x02\u0442\u0446\x03\x02\x02\x02\u0443\u0446" +
		"\x07Q\x02\x02\u0444\u0446\x07P\x02\x02\u0445\u042F\x03\x02\x02\x02\u0445" +
		"\u0430\x03\x02\x02\x02\u0445\u0431\x03\x02\x02\x02\u0445\u0432\x03\x02" +
		"\x02\x02\u0445\u0436\x03\x02\x02\x02\u0445\u0437\x03\x02\x02\x02\u0445" +
		"\u0438\x03\x02\x02\x02\u0445\u0439\x03\x02\x02\x02\u0445\u043A\x03\x02" +
		"\x02\x02\u0445\u043B\x03\x02\x02\x02\u0445\u043C\x03\x02\x02\x02\u0445" +
		"\u0443\x03\x02\x02\x02\u0445\u0444\x03\x02\x02\x02\u0446\t\x03\x02\x02" +
		"\x02\u0447\u0448\x07\xE2\x02\x02\u0448\v\x03\x02\x02\x02\u0449\u044A\t" +
		"\x03\x02\x02\u044A\r\x03\x02\x02\x02\u044B\u045A\x05\u018A\xC6\x02\u044C" +
		"\u045A\x05\x10\t\x02\u044D\u045A\x05\x16\f\x02\u044E\u045A\x05\x18\r\x02" +
		"\u044F\u045A\x05\x1A\x0E\x02\u0450\u045A\x05\x1E\x10\x02\u0451\u045A\x05" +
		"&\x14\x02\u0452\u045A\x05(\x15\x02\u0453\u045A\x05\u01A8\xD5\x02\u0454" +
		"\u045A\x05\u01B0\xD9\x02\u0455\u045A\x05\u01B2\xDA\x02\u0456\u045A\x05" +
		"\u01C8\xE5\x02\u0457\u045A\x05\u03B6\u01DC\x02\u0458\u045A\x05\u03B8\u01DD" +
		"\x02\u0459\u044B\x03\x02\x02\x02\u0459\u044C\x03\x02\x02\x02\u0459\u044D" +
		"\x03\x02\x02\x02\u0459\u044E\x03\x02\x02\x02\u0459\u044F\x03\x02\x02\x02" +
		"\u0459\u0450\x03\x02\x02\x02\u0459\u0451\x03\x02\x02\x02\u0459\u0452\x03" +
		"\x02\x02\x02\u0459\u0453\x03\x02\x02\x02\u0459\u0454\x03\x02\x02\x02\u0459" +
		"\u0455\x03\x02\x02\x02\u0459\u0456\x03\x02\x02\x02\u0459\u0457\x03\x02" +
		"\x02\x02\u0459\u0458\x03\x02\x02\x02\u045A\x0F\x03\x02\x02\x02\u045B\u045C" +
		"\x07\xBC\x02\x02\u045C\u045E\x07D\x02\x02\u045D\u045F\x07\xBD\x02\x02" +
		"\u045E\u045D\x03\x02\x02\x02\u045E\u045F\x03\x02\x02\x02\u045F\u0460\x03" +
		"\x02\x02\x02\u0460\u0461\x07\xA0\x02\x02\u0461\u0463\x07\u01AB\x02\x02" +
		"\u0462\u0464\x07\xEC\x02\x02\u0463\u0462\x03\x02\x02\x02\u0463\u0464\x03" +
		"\x02\x02\x02\u0464\u0465\x03\x02\x02\x02\u0465\u0466\x07\xA8\x02\x02\u0466" +
		"\u0467\x07\u014A\x02\x02\u0467\u0469\x05\u0390\u01C9\x02\u0468\u046A\x05" +
		"P)\x02\u0469\u0468\x03\x02\x02\x02\u0469\u046A\x03\x02\x02\x02\u046A\x11" +
		"\x03\x02\x02\x02\u046B\u046C\x07\x9A\x02\x02\u046C\u046D\x07\xFF\x02\x02" +
		"\u046D\x13\x03\x02\x02\x02\u046E\u0470\x07\x88\x02\x02\u046F\u0471\x07" +
		"\xCD\x02\x02\u0470\u046F\x03\x02\x02\x02\u0470\u0471\x03\x02\x02\x02\u0471" +
		"\u0472\x03\x02\x02\x02\u0472\u0473\x07\u0118\x02\x02\u0473\u0474\x07\u0190" +
		"\x02\x02\u0474\u0475\x07\u01AB\x02\x02\u0475\u0476\x07\u0191\x02\x02\u0476" +
		"\x15\x03\x02\x02\x02\u0477\u0478\x07z\x02\x02\u0478\u0479\x07\u014A\x02" +
		"\x02\u0479\u047A\x05\u0390\u01C9\x02\u047A\u047B\x07\u0156\x02\x02\u047B" +
		"\u047D\x07\u01AB\x02\x02\u047C\u047E\x05\x14\v\x02\u047D\u047C\x03\x02" +
		"\x02\x02\u047D\u047E\x03\x02\x02\x02\u047E\x17\x03\x02\x02\x02\u047F\u0485" +
		"\x07\x9B\x02\x02\u0480\u0482\x07}\x02\x02\u0481\u0480\x03\x02\x02\x02" +
		"\u0481\u0482\x03\x02\x02\x02\u0482\u0483\x03\x02\x02\x02\u0483\u0484\x07" +
		"\u014A\x02\x02\u0484\u0486\x05\u0390\u01C9\x02\u0485\u0481\x03\x02\x02" +
		"\x02\u0485\u0486\x03\x02\x02\x02\u0486\u0487\x03\x02\x02\x02\u0487\u0488" +
		"\x07\x8D\x02\x02\u0488\u048A\x07\u01AB\x02\x02\u0489\u048B\x05\u0112\x8A" +
		"\x02\u048A\u0489\x03\x02\x02\x02\u048A\u048B\x03\x02\x02\x02\u048B\x19" +
		"\x03\x02\x02\x02\u048C\u048D\x07\u0116\x02\x02\u048D\u048E\x07i\x02\x02" +
		"\u048E\u0491\x05\x1C\x0F\x02\u048F\u0490\x07\u0117\x02\x02\u0490\u0492" +
		"\x05\x1C\x0F\x02\u0491\u048F\x03\x02\x02\x02\u0491\u0492\x03\x02\x02\x02" +
		"\u0492\u0495\x03\x02\x02\x02\u0493\u0494\x07\u0184\x02\x02\u0494\u0496" +
		"\x05 \x11\x02\u0495\u0493\x03\x02\x02\x02\u0495\u0496\x03\x02\x02\x02" +
		"\u0496\x1B\x03\x02\x02\x02\u0497\u049A\x05\u0290\u0149\x02\u0498\u0499" +
		"\x07\u018C\x02\x02\u0499\u049B\x05$\x13\x02\u049A\u0498\x03\x02\x02\x02" +
		"\u049A\u049B\x03\x02\x02\x02\u049B\x1D\x03\x02\x02\x02\u049C\u049D\x07" +
		"\u0116\x02\x02\u049D\u049E\x07\xBC\x02\x02\u049E\u04A1\x05\x1C\x0F\x02" +
		"\u049F\u04A0\x07\xA8\x02\x02\u04A0\u04A2\x05\u0290\u0149\x02\u04A1\u049F" +
		"\x03\x02\x02\x02\u04A1\u04A2\x03\x02\x02\x02\u04A2\u04A5\x03\x02\x02\x02" +
		"\u04A3\u04A4\x07\u0184\x02\x02\u04A4\u04A6\x05 \x11\x02\u04A5\u04A3\x03" +
		"\x02\x02\x02\u04A5\u04A6\x03\x02\x02\x02\u04A6\x1F\x03\x02\x02\x02\u04A7" +
		"\u04A8\x07\u0190\x02\x02\u04A8\u04A9\x05\"\x12\x02\u04A9\u04AA\x07\u0191" +
		"\x02\x02\u04AA!\x03\x02\x02\x02\u04AB\u04B0\x05\u0102\x82\x02\u04AC\u04AD" +
		"\x07\u018E\x02\x02\u04AD\u04AF\x05\u0102\x82\x02\u04AE\u04AC\x03\x02\x02" +
		"\x02\u04AF\u04B2\x03\x02\x02\x02\u04B0\u04AE\x03\x02\x02\x02\u04B0\u04B1" +
		"\x03\x02\x02\x02\u04B1#\x03\x02\x02\x02\u04B2\u04B0\x03\x02\x02\x02\u04B3" +
		"\u04B6\x07\u01AB\x02\x02\u04B4\u04B5\x07\u018C\x02\x02\u04B5\u04B7\x07" +
		"\u01AB\x02\x02\u04B6\u04B4\x03\x02\x02\x02\u04B6\u04B7\x03\x02\x02\x02" +
		"\u04B7%\x03\x02\x02\x02\u04B8\u04B9\x07\u0116\x02\x02\u04B9\u04BA\x07" +
		"\u0141\x02\x02\u04BA\u04BD\x05\u0290\u0149\x02\u04BB\u04BC\x07\u0184\x02" +
		"\x02\u04BC\u04BE\x05 \x11\x02\u04BD\u04BB\x03\x02\x02\x02\u04BD\u04BE" +
		"\x03\x02\x02\x02\u04BE\'\x03\x02\x02\x02\u04BF\u04EF\x05:\x1E\x02\u04C0" +
		"\u04EF\x05F$\x02\u04C1\u04EF\x05H%\x02\u04C2\u04EF\x05\u0258\u012D\x02" +
		"\u04C3\u04EF\x05N(\x02\u04C4\u04EF\x05L\'\x02\u04C5\u04EF\x05\u01DE\xF0" +
		"\x02\u04C6\u04EF\x05X-\x02\u04C7\u04EF\x05`1\x02\u04C8\u04EF\x05\xA2R" +
		"\x02\u04C9\u04EF\x05\xB8]\x02\u04CA\u04EF\x05\xC8e\x02\u04CB\u04EF\x05" +
		"\xCCg\x02\u04CC\u04EF\x05\xD0i\x02\u04CD\u04EF\x05\xCEh\x02\u04CE\u04EF" +
		"\x05\xC6d\x02\u04CF\u04EF\x05\xCAf\x02\u04D0\u04EF\x05\xAAV\x02\u04D1" +
		"\u04EF\x05\xB0Y\x02\u04D2\u04EF\x05\xACW\x02\u04D3\u04EF\x05\xAEX\x02" +
		"\u04D4\u04EF\x05\xB2Z\x02\u04D5\u04EF\x05\xB4[\x02\u04D6\u04EF\x05\xB6" +
		"\\\x02\u04D7\u04EF\x05Z.\x02\u04D8\u04EF\x05d3\x02\u04D9\u04EF\x05j6\x02" +
		"\u04DA\u04EF\x05f4\x02\u04DB\u04EF\x05l7\x02\u04DC\u04EF\x05n8\x02\u04DD" +
		"\u04EF\x05p9\x02\u04DE\u04EF\x05r:\x02\u04DF\u04EF\x05t;\x02\u04E0\u04EF" +
		"\x05\x82B\x02\u04E1\u04EF\x05z>\x02\u04E2\u04EF\x05\x84C\x02\u04E3\u04EF" +
		"\x05|?\x02\u04E4\u04EF\x05v<\x02\u04E5\u04EF\x05x=\x02\u04E6\u04EF\x05" +
		"\x80A\x02\u04E7\u04EF\x05~@\x02\u04E8\u04EF\x05\u01C4\xE3\x02\u04E9\u04EF" +
		"\x05\u01C6\xE4\x02\u04EA\u04EF\x05\u01D4\xEB\x02\u04EB\u04EF\x05\u03BC" +
		"\u01DF\x02\u04EC\u04EF\x05\u025A\u012E\x02\u04ED\u04EF\x05\u0264\u0133" +
		"\x02\u04EE\u04BF\x03\x02\x02\x02\u04EE\u04C0\x03\x02\x02\x02\u04EE\u04C1" +
		"\x03\x02\x02\x02\u04EE\u04C2\x03\x02\x02\x02\u04EE\u04C3\x03\x02\x02\x02" +
		"\u04EE\u04C4\x03\x02\x02\x02\u04EE\u04C5\x03\x02\x02\x02\u04EE\u04C6\x03" +
		"\x02\x02\x02\u04EE\u04C7\x03\x02\x02\x02\u04EE\u04C8\x03\x02\x02\x02\u04EE" +
		"\u04C9\x03\x02\x02\x02\u04EE\u04CA\x03\x02\x02\x02\u04EE\u04CB\x03\x02" +
		"\x02\x02\u04EE\u04CC\x03\x02\x02\x02\u04EE\u04CD\x03\x02\x02\x02\u04EE" +
		"\u04CE\x03\x02\x02\x02\u04EE\u04CF\x03\x02\x02\x02\u04EE\u04D0\x03\x02" +
		"\x02\x02\u04EE\u04D1\x03\x02\x02\x02\u04EE\u04D2\x03\x02\x02\x02\u04EE" +
		"\u04D3\x03\x02\x02\x02\u04EE\u04D4\x03\x02\x02\x02\u04EE\u04D5\x03\x02" +
		"\x02\x02\u04EE\u04D6\x03\x02\x02\x02\u04EE\u04D7\x03\x02\x02\x02\u04EE" +
		"\u04D8\x03\x02\x02\x02\u04EE\u04D9\x03\x02\x02\x02\u04EE\u04DA\x03\x02" +
		"\x02\x02\u04EE\u04DB\x03\x02\x02\x02\u04EE\u04DC\x03\x02\x02\x02\u04EE" +
		"\u04DD\x03\x02\x02\x02\u04EE\u04DE\x03\x02\x02\x02\u04EE\u04DF\x03\x02" +
		"\x02\x02\u04EE\u04E0\x03\x02\x02\x02\u04EE\u04E1\x03\x02\x02\x02\u04EE" +
		"\u04E2\x03\x02\x02\x02\u04EE\u04E3\x03\x02\x02\x02\u04EE\u04E4\x03\x02" +
		"\x02\x02\u04EE\u04E5\x03\x02\x02\x02\u04EE\u04E6\x03\x02\x02\x02\u04EE" +
		"\u04E7\x03\x02\x02\x02\u04EE\u04E8\x03\x02\x02\x02\u04EE\u04E9\x03\x02" +
		"\x02\x02\u04EE\u04EA\x03\x02\x02\x02\u04EE\u04EB\x03\x02\x02\x02\u04EE" +
		"\u04EC\x03\x02\x02\x02\u04EE\u04ED\x03\x02\x02\x02\u04EF)\x03\x02\x02" +
		"\x02\u04F0\u04F1\x07\x99\x02\x02\u04F1\u04F2\x07w\x02\x02\u04F2+\x03\x02" +
		"\x02\x02\u04F3\u04F4\t\x04\x02\x02\u04F4-\x03\x02\x02\x02\u04F5\u04F6" +
		"\x07\x99\x02\x02\u04F6\u04F7\x07\xD9\x02\x02\u04F7\u04F8\x07w\x02\x02" +
		"\u04F8/\x03\x02\x02\x02\u04F9\u04FA\x07\x89\x02\x02\u04FA1\x03\x02\x02" +
		"\x02\u04FB\u04FC\x05\u03CC\u01E7\x02\u04FC\u04FD\x07\u011D\x02\x02\u04FD" +
		"3\x03\x02\x02\x02\u04FE\u04FF\x05\u03CE\u01E8\x02\u04FF\u0500\x07\u011D" +
		"\x02\x02\u05005\x03\x02\x02\x02\u0501\u0502\x07\u0142\x02\x02\u0502\u0503" +
		"\x07\x13\x02\x02\u0503\u0504\x07^\x02\x02\u05047\x03\x02\x02\x02\u0505" +
		"\u0506\x07\xE5\x02\x02\u0506\u0507\x07\u0117\x02\x02\u05079\x03\x02\x02" +
		"\x02\u0508\u050A\x07<\x02\x02\u0509\u050B\x07\u0112\x02\x02\u050A\u0509" +
		"\x03\x02\x02\x02\u050A\u050B\x03\x02\x02\x02\u050B\u050C\x03\x02\x02\x02" +
		"\u050C\u050E\x05^0\x02\u050D\u050F\x05.\x18\x02\u050E\u050D\x03\x02\x02" +
		"\x02\u050E\u050F\x03\x02\x02\x02\u050F\u0510\x03\x02\x02\x02\u0510\u0512" +
		"\x05\u0292\u014A\x02\u0511\u0513\x05J&\x02\u0512\u0511\x03\x02\x02\x02" +
		"\u0512\u0513\x03\x02\x02\x02\u0513\u0515\x03\x02\x02\x02\u0514\u0516\x05" +
		"<\x1F\x02\u0515\u0514\x03\x02\x02\x02\u0515\u0516\x03\x02\x02\x02\u0516" +
		"\u0518\x03\x02\x02\x02\u0517\u0519\x05> \x02\u0518\u0517\x03\x02\x02\x02" +
		"\u0518\u0519\x03\x02\x02\x02\u0519\u051D\x03\x02\x02\x02\u051A\u051B\x07" +
		"\u0184\x02\x02\u051B\u051C\x07N\x02\x02\u051C\u051E\x05@!\x02\u051D\u051A" +
		"\x03\x02\x02\x02\u051D\u051E\x03\x02\x02\x02\u051E\u0530\x03\x02\x02\x02" +
		"\u051F\u0520\x07<\x02\x02\u0520\u0521\x07\u0112\x02\x02\u0521\u0523\x05" +
		"^0\x02\u0522\u0524\x05.\x18\x02\u0523\u0522\x03\x02\x02\x02\u0523\u0524" +
		"\x03\x02\x02\x02\u0524\u0525\x03\x02\x02\x02\u0525\u0527\x05\u0292\u014A" +
		"\x02\u0526\u0528\x05J&\x02\u0527\u0526\x03\x02\x02\x02\u0527\u0528\x03" +
		"\x02\x02\x02\u0528\u0529\x03\x02\x02\x02\u0529\u052D\x05D#\x02\u052A\u052B" +
		"\x07\u0184\x02\x02\u052B\u052C\x07N\x02\x02\u052C\u052E\x05@!\x02\u052D" +
		"\u052A\x03\x02\x02\x02\u052D\u052E\x03\x02\x02\x02\u052E\u0530\x03\x02" +
		"\x02\x02\u052F\u0508\x03\x02\x02\x02\u052F\u051F\x03\x02\x02\x02\u0530" +
		";\x03\x02\x02\x02\u0531\u0532\x07\xBE\x02\x02\u0532\u0533\x07\u01AB\x02" +
		"\x02\u0533=\x03\x02\x02\x02\u0534\u0535\x07\xC5\x02\x02\u0535\u0536\x07" +
		"\u01AB\x02\x02\u0536?\x03\x02\x02\x02\u0537\u0538\x07\u0190\x02\x02\u0538" +
		"\u0539\x05B\"\x02\u0539\u053A\x07\u0191\x02\x02\u053AA\x03\x02\x02\x02" +
		"\u053B\u0540\x05\u0102\x82\x02\u053C\u053D\x07\u018E\x02\x02\u053D\u053F" +
		"\x05\u0102\x82\x02\u053E\u053C\x03\x02\x02\x02\u053F\u0542\x03\x02\x02" +
		"\x02\u0540\u053E\x03\x02\x02\x02\u0540\u0541\x03\x02\x02\x02\u0541C\x03" +
		"\x02\x02\x02\u0542\u0540\x03\x02\x02\x02\u0543\u0544\x07\u0173\x02\x02" +
		"\u0544\u0545\x05\u0290\u0149\x02\u0545E\x03\x02\x02\x02\u0546\u0547\x07" +
		"\u0171\x02\x02\u0547\u0548\x05\u0290\u0149\x02\u0548G\x03\x02\x02\x02" +
		"\u0549\u054A\x07g\x02\x02\u054A\u054C\x05^0\x02\u054B\u054D\x05*\x16\x02" +
		"\u054C\u054B\x03\x02\x02\x02\u054C\u054D\x03\x02\x02\x02\u054D\u054E\x03" +
		"\x02\x02\x02\u054E\u0550\x05\u0290\u0149\x02\u054F\u0551\x05,\x17\x02" +
		"\u0550\u054F\x03\x02\x02\x02\u0550\u0551\x03\x02\x02\x02\u0551I\x03\x02" +
		"\x02\x02\u0552\u0553\x071\x02\x02\u0553\u0554\x07\u01AB\x02\x02\u0554" +
		"K\x03\x02\x02\x02\u0555\u0557\x07\u0160\x02\x02\u0556\u0558\x07\u014A" +
		"\x02\x02\u0557\u0556\x03\x02\x02\x02\u0557\u0558\x03\x02\x02\x02\u0558" +
		"\u0559\x03\x02\x02\x02\u0559\u055F\x05\u0222\u0112\x02\u055A\u055B\x07" +
		"0\x02\x02\u055B\u055C\x07\u0190\x02\x02\u055C\u055D\x05\u011A\x8E\x02" +
		"\u055D\u055E\x07\u0191\x02\x02\u055E\u0560\x03\x02\x02\x02\u055F\u055A" +
		"\x03\x02\x02\x02\u055F\u0560\x03\x02\x02\x02\u0560\u0562\x03\x02\x02\x02" +
		"\u0561\u0563\x050\x19\x02\u0562\u0561\x03\x02\x02\x02\u0562\u0563\x03" +
		"\x02\x02\x02\u0563M\x03\x02\x02\x02\u0564\u0565\x07g\x02\x02\u0565\u0567" +
		"\x07\u014A\x02\x02\u0566\u0568\x05*\x16\x02\u0567\u0566\x03\x02\x02\x02" +
		"\u0567\u0568\x03\x02\x02\x02\u0568\u0569\x03\x02\x02\x02\u0569\u056B\x05" +
		"\u0296\u014C\x02\u056A\u056C\x07\u0100\x02\x02\u056B\u056A\x03\x02\x02" +
		"\x02\u056B\u056C\x03\x02\x02\x02\u056C\u056E\x03\x02\x02\x02\u056D\u056F" +
		"\x05\x14\v\x02\u056E\u056D\x03\x02\x02\x02\u056E\u056F\x03\x02\x02\x02" +
		"\u056FO\x03\x02\x02\x02\u0570\u0571\x07\xA2\x02\x02\u0571\u0572\x07\u01AB" +
		"\x02\x02\u0572\u0573\x07\u012E\x02\x02\u0573\u0574\x07\u01AB\x02\x02\u0574" +
		"Q\x03\x02\x02\x02\u0575\u0578\x05\u03A0\u01D1\x02\u0576\u0577\x07\u018C" +
		"\x02\x02\u0577\u0579\x05\u03A0\u01D1\x02\u0578\u0576\x03\x02\x02\x02\u0578" +
		"\u0579\x03\x02\x02\x02\u0579\u0587\x03\x02\x02\x02\u057A\u0584\x05\u03A0" +
		"\u01D1\x02\u057B\u0580\x07\u018C\x02\x02\u057C\u0581\x07j\x02\x02\u057D" +
		"\u0581\x07\xB1\x02\x02\u057E\u0581\x07\u0178\x02\x02\u057F\u0581\x05\u03A0" +
		"\u01D1\x02\u0580\u057C\x03\x02\x02\x02\u0580\u057D\x03\x02\x02\x02\u0580" +
		"\u057E\x03\x02\x02\x02\u0580\u057F\x03\x02\x02\x02\u0581\u0583\x03\x02" +
		"\x02\x02\u0582\u057B\x03\x02\x02\x02\u0583\u0586\x03\x02\x02\x02\u0584" +
		"\u0582\x03\x02\x02\x02\u0584\u0585\x03\x02\x02\x02\u0585\u0588\x03\x02" +
		"\x02\x02\u0586\u0584\x03\x02\x02\x02\u0587\u057A\x03\x02\x02\x02\u0587" +
		"\u0588\x03\x02\x02\x02\u0588S\x03\x02\x02\x02\u0589\u058B\x05R*\x02\u058A" +
		"\u058C\x05\u0392\u01CA\x02\u058B\u058A\x03\x02\x02\x02\u058B\u058C\x03" +
		"\x02\x02\x02\u058CU\x03\x02\x02\x02\u058D\u058F\x05\u0294\u014B\x02\u058E" +
		"\u0590\x05\u0392\u01CA\x02\u058F\u058E\x03\x02\x02\x02\u058F\u0590\x03" +
		"\x02\x02\x02\u0590\u0592\x03\x02\x02\x02\u0591\u0593\x05\u0120\x91\x02" +
		"\u0592\u0591\x03\x02\x02\x02\u0592\u0593\x03\x02\x02\x02\u0593W\x03\x02" +
		"\x02\x02\u0594\u05AB\t\x05\x02\x02\u0595\u0597\x05^0\x02\u0596\u0598\x07" +
		"|\x02\x02\u0597\u0596\x03\x02\x02\x02\u0597\u0598\x03\x02\x02\x02\u0598" +
		"\u0599\x03\x02\x02\x02\u0599\u059A\x05\u0290\u0149\x02\u059A\u05AC\x03" +
		"\x02\x02\x02\u059B\u059D\x07G\x02\x02\u059C\u059E\x07|\x02\x02\u059D\u059C" +
		"\x03\x02\x02\x02\u059D\u059E\x03\x02\x02\x02\u059E\u059F\x03\x02\x02\x02" +
		"\u059F\u05AC\x05\u0290\u0149\x02\u05A0\u05A2\x07\x8F\x02\x02\u05A1\u05A3" +
		"\x07|\x02\x02\u05A2\u05A1\x03\x02\x02\x02\u05A2\u05A3\x03\x02\x02\x02" +
		"\u05A3\u05A4\x03\x02\x02\x02\u05A4\u05AC\x05\u0310\u0189\x02\u05A5\u05A8" +
		"\x07\x8C\x02\x02\u05A6\u05A8\x07|\x02\x02\u05A7\u05A5\x03\x02\x02\x02" +
		"\u05A7\u05A6\x03\x02\x02\x02\u05A8\u05A9\x03\x02\x02\x02\u05A9\u05AC\x05" +
		"V,\x02\u05AA\u05AC\x05V,\x02\u05AB\u0595\x03\x02\x02\x02\u05AB\u059B\x03" +
		"\x02\x02\x02\u05AB\u05A0\x03\x02\x02\x02\u05AB\u05A7\x03\x02\x02\x02\u05AB" +
		"\u05AA\x03\x02\x02\x02\u05ACY\x03\x02\x02\x02\u05AD\u05AE\x07\f\x02\x02" +
		"\u05AE\u05AF\x07\u014A\x02\x02\u05AF\u05BC\x05\u0390\u01C9\x02\u05B0\u05B1" +
		"\x076\x02\x02\u05B1\u05B8\x07\u0140\x02\x02\u05B2\u05B9\x07\xD8\x02\x02" +
		"\u05B3\u05B4\x07\x88\x02\x02\u05B4\u05B6\x070\x02\x02\u05B5\u05B7\x05" +
		"\u011A\x8E\x02\u05B6\u05B5\x03\x02\x02\x02\u05B6\u05B7\x03\x02\x02\x02" +
		"\u05B7\u05B9\x03\x02\x02\x02\u05B8\u05B2\x03\x02\x02\x02\u05B8\u05B3\x03" +
		"\x02\x02\x02\u05B8\u05B9\x03\x02\x02\x02\u05B9\u05BD\x03\x02\x02\x02\u05BA" +
		"\u05BB\x07#\x02\x02\u05BB\u05BD\x07\xCD\x02\x02\u05BC\u05B0\x03\x02\x02" +
		"\x02\u05BC\u05BA\x03\x02\x02\x02\u05BD[\x03\x02\x02\x02\u05BE\u05BF\t" +
		"\x06\x02\x02\u05BF]\x03\x02\x02\x02\u05C0\u05C1\t\x07\x02\x02\u05C1_\x03" +
		"\x02\x02\x02\u05C2\u05C3\x07\u0135\x02\x02\u05C3\u05C6\t\b\x02\x02\u05C4" +
		"\u05C5\x07\xB9\x02\x02\u05C5\u05C7\x05\xDAn\x02\u05C6\u05C4\x03\x02\x02" +
		"\x02\u05C6\u05C7\x03\x02\x02\x02\u05C7\u0684\x03\x02\x02\x02\u05C8\u05CA" +
		"\x07\u0135\x02\x02\u05C9\u05CB\x07|\x02\x02\u05CA\u05C9";
	private static readonly _serializedATNSegment4: string =
		"\x03\x02\x02\x02\u05CA\u05CB\x03\x02\x02\x02\u05CB\u05CC\x03\x02\x02\x02" +
		"\u05CC\u05D0\x07\u014B\x02\x02\u05CD\u05CE\x05\\/\x02\u05CE\u05CF\x05" +
		"\u0290\u0149\x02\u05CF\u05D1\x03\x02\x02\x02\u05D0\u05CD\x03\x02\x02\x02" +
		"\u05D0\u05D1\x03\x02\x02\x02\u05D1\u05D3\x03\x02\x02\x02\u05D2\u05D4\x05" +
		"b2\x02\u05D3\u05D2\x03\x02\x02\x02\u05D3\u05D4\x03\x02\x02\x02\u05D4\u0684" +
		"\x03\x02\x02\x02\u05D5\u05D6\x07\u0135\x02\x02\u05D6\u05DA\x07\u017C\x02" +
		"\x02\u05D7\u05D8\x05\\/\x02\u05D8\u05D9\x05\u0290\u0149\x02\u05D9\u05DB" +
		"\x03\x02\x02\x02\u05DA\u05D7\x03\x02\x02\x02\u05DA\u05DB\x03\x02\x02\x02" +
		"\u05DB\u05DF\x03\x02\x02\x02\u05DC\u05DD\x07\xB9\x02\x02\u05DD\u05E0\x05" +
		"\xDAn\x02\u05DE\u05E0\x05\xDAn\x02\u05DF\u05DC\x03\x02\x02\x02\u05DF\u05DE" +
		"\x03\x02\x02\x02\u05DF\u05E0\x03\x02\x02\x02\u05E0\u0684\x03\x02\x02\x02" +
		"\u05E1\u05E2\x07\u0135\x02\x02\u05E2\u05E3\x07\xCB\x02\x02\u05E3\u05E7" +
		"\x07\u017C\x02\x02\u05E4\u05E5\x05\\/\x02\u05E5\u05E6\x05\u0290\u0149" +
		"\x02\u05E6\u05E8\x03\x02\x02\x02\u05E7\u05E4\x03\x02\x02\x02\u05E7\u05E8" +
		"\x03\x02\x02\x02\u05E8\u05EC\x03\x02\x02\x02\u05E9\u05EA\x07\xB9\x02\x02" +
		"\u05EA\u05ED\x05\xDAn\x02\u05EB\u05ED\x05\xDAn\x02\u05EC\u05E9\x03\x02" +
		"\x02\x02\u05EC\u05EB\x03\x02\x02\x02\u05EC\u05ED\x03\x02\x02\x02\u05ED" +
		"\u0684\x03\x02\x02\x02\u05EE\u05F0\x07\u0135\x02\x02\u05EF\u05F1\x07\u013C" +
		"\x02\x02\u05F0\u05EF\x03\x02\x02\x02\u05F0\u05F1\x03\x02\x02\x02\u05F1" +
		"\u05F2\x03\x02\x02\x02\u05F2\u05F3\x070\x02\x02\u05F3\u05F4\x05\\/\x02" +
		"\u05F4\u05F8\x05\u0294\u014B\x02\u05F5\u05F6\x05\\/\x02\u05F6\u05F7\x05" +
		"\u0290\u0149\x02\u05F7\u05F9\x03\x02\x02\x02\u05F8\u05F5\x03\x02\x02\x02" +
		"\u05F8\u05F9\x03\x02\x02\x02\u05F9\u05FD\x03\x02\x02\x02\u05FA\u05FB\x07" +
		"\xB9\x02\x02\u05FB\u05FE\x05\xDAn\x02\u05FC\u05FE\x05\xDAn\x02\u05FD\u05FA" +
		"\x03\x02\x02\x02\u05FD\u05FC\x03\x02\x02\x02\u05FD\u05FE\x03\x02\x02\x02" +
		"\u05FE\u0684\x03\x02\x02\x02\u05FF\u0600\x07\u0135\x02\x02\u0600\u0603" +
		"\x07\x90\x02\x02\u0601\u0602\x07\xB9\x02\x02\u0602\u0604\x05\u0310\u0189" +
		"\x02\u0603\u0601\x03\x02\x02\x02\u0603\u0604\x03\x02\x02\x02\u0604\u0684" +
		"\x03\x02\x02\x02\u0605\u0606\x07\u0135\x02\x02\u0606\u0607\x07\xF0\x02" +
		"\x02\u0607\u0609\x05\u0294\u014B\x02\u0608\u060A\x05\u0392\u01CA\x02\u0609" +
		"\u0608\x03\x02\x02\x02\u0609\u060A\x03\x02\x02\x02\u060A\u060C\x03\x02" +
		"\x02\x02\u060B\u060D\x05\u02A6\u0154\x02\u060C\u060B\x03\x02\x02\x02\u060C" +
		"\u060D\x03\x02\x02\x02\u060D\u060F\x03\x02\x02\x02\u060E\u0610\x05\u02FE" +
		"\u0180\x02\u060F\u060E\x03\x02\x02\x02\u060F\u0610\x03\x02\x02\x02\u0610" +
		"\u0612\x03\x02\x02\x02\u0611\u0613\x05\u01A6\xD4\x02\u0612\u0611\x03\x02" +
		"\x02\x02\u0612\u0613\x03\x02\x02\x02\u0613\u0684\x03\x02\x02\x02\u0614" +
		"\u0615\x07\u0135\x02\x02\u0615\u061B\x07<\x02\x02\u0616\u0617\x05^0\x02" +
		"\u0617\u0618\x05\u0290\u0149\x02\u0618\u061C\x03\x02\x02\x02\u0619\u061A" +
		"\x07\u014A\x02\x02\u061A\u061C\x05\u0296\u014C\x02\u061B\u0616\x03\x02" +
		"\x02\x02\u061B\u0619\x03\x02\x02\x02\u061C\u0684\x03\x02\x02\x02\u061D" +
		"\u061E\x07\u0135\x02\x02\u061E\u061F\x07\u014A\x02\x02\u061F\u0623\x07" +
		"|\x02\x02\u0620\u0621\x05\\/\x02\u0621\u0622\x05\u0290\u0149\x02\u0622" +
		"\u0624\x03\x02\x02\x02\u0623\u0620\x03\x02\x02\x02\u0623\u0624\x03\x02" +
		"\x02\x02\u0624\u0625\x03\x02\x02\x02\u0625\u0626\x07\xB9\x02\x02\u0626" +
		"\u0628\x05\xDAn\x02\u0627\u0629\x05\u0392\u01CA\x02\u0628\u0627\x03\x02" +
		"\x02\x02\u0628\u0629\x03\x02\x02\x02\u0629\u0684\x03\x02\x02\x02\u062A" +
		"\u062B\x07\u0135\x02\x02\u062B\u062C\x07\u014D\x02\x02\u062C\u0630\x05" +
		"\u0296\u014C\x02\u062D\u062E\x07\u0190\x02\x02\u062E\u062F\x07\u01AB\x02" +
		"\x02\u062F\u0631\x07\u0191\x02\x02\u0630\u062D\x03\x02\x02\x02\u0630\u0631" +
		"\x03\x02\x02\x02\u0631\u0684\x03\x02\x02\x02\u0632\u0633\x07\u0135\x02" +
		"\x02\u0633\u063F\x07\xC0\x02\x02\u0634\u0635\x05^0\x02\u0635\u0637\x05" +
		"\u0290\u0149\x02\u0636\u0638\x07|\x02\x02\u0637\u0636\x03\x02\x02\x02" +
		"\u0637\u0638\x03\x02\x02\x02\u0638\u0640\x03\x02\x02\x02\u0639\u063B\x05" +
		"T+\x02\u063A\u0639\x03\x02\x02\x02\u063A\u063B\x03\x02\x02\x02\u063B\u063D" +
		"\x03\x02\x02\x02\u063C\u063E\x07|\x02\x02\u063D\u063C\x03\x02\x02\x02" +
		"\u063D\u063E\x03\x02\x02\x02\u063E\u0640\x03\x02\x02\x02\u063F\u0634\x03" +
		"\x02\x02\x02\u063F\u063A\x03\x02\x02\x02\u0640\u0684\x03\x02\x02\x02\u0641" +
		"\u0642\x07\u0135\x02\x02\u0642\u0667\x074\x02\x02\u0643\u0668\x05\u01D6" +
		"\xEC\x02\u0644\u0645\x05^0\x02\u0645\u0647\x05\u0290\u0149\x02\u0646\u0648" +
		"\x05\u01D8\xED\x02\u0647\u0646\x03\x02\x02\x02\u0647\u0648\x03\x02\x02" +
		"\x02\u0648\u064A\x03\x02\x02\x02\u0649\u064B\x05\u01DA\xEE\x02\u064A\u0649" +
		"\x03\x02\x02\x02\u064A\u064B\x03\x02\x02\x02\u064B\u064D\x03\x02\x02\x02" +
		"\u064C\u064E\x05\u01DC\xEF\x02\u064D\u064C\x03\x02\x02\x02\u064D\u064E" +
		"\x03\x02\x02\x02\u064E\u0650\x03\x02\x02\x02\u064F\u0651\x05\u02FE\u0180" +
		"\x02\u0650\u064F\x03\x02\x02\x02\u0650\u0651\x03\x02\x02\x02\u0651\u0653" +
		"\x03\x02\x02\x02\u0652\u0654\x05\u01A6\xD4\x02\u0653\u0652\x03\x02\x02" +
		"\x02\u0653\u0654\x03\x02\x02\x02\u0654\u0668\x03\x02\x02\x02\u0655\u0657" +
		"\x05T+\x02\u0656\u0655\x03\x02\x02\x02\u0656\u0657\x03\x02\x02\x02\u0657" +
		"\u0659\x03\x02\x02\x02\u0658\u065A\x05\u01D8\xED\x02\u0659\u0658\x03\x02" +
		"\x02\x02\u0659\u065A\x03\x02\x02\x02\u065A\u065C\x03\x02\x02\x02\u065B" +
		"\u065D\x05\u01DA\xEE\x02\u065C\u065B\x03\x02\x02\x02\u065C\u065D\x03\x02" +
		"\x02\x02\u065D\u065F\x03\x02\x02\x02\u065E\u0660\x05\u01DC\xEF\x02\u065F" +
		"\u065E\x03\x02\x02\x02\u065F\u0660\x03\x02\x02\x02\u0660\u0662\x03\x02" +
		"\x02\x02\u0661\u0663\x05\u02FE\u0180\x02\u0662\u0661\x03\x02\x02\x02\u0662" +
		"\u0663\x03\x02\x02\x02\u0663\u0665\x03\x02\x02\x02\u0664\u0666\x05\u01A6" +
		"\xD4\x02\u0665\u0664\x03\x02\x02\x02\u0665\u0666\x03\x02\x02\x02\u0666" +
		"\u0668\x03\x02\x02\x02\u0667\u0643\x03\x02\x02\x02\u0667\u0644\x03\x02" +
		"\x02\x02\u0667\u0656\x03\x02\x02\x02\u0668\u0684\x03\x02\x02\x02\u0669" +
		"\u066A\x07\u0135\x02\x02\u066A\u0684\x07\u015B\x02\x02\u066B\u066C\x07" +
		"\u0135\x02\x02\u066C\u066D\x078\x02\x02\u066D\u0684\x07\u01AB\x02\x02" +
		"\u066E\u066F\x07\u0135\x02\x02\u066F\u0673\x07\u0119\x02\x02\u0670\u0671" +
		"\x07\xF4\x02\x02\u0671\u0674\x05\u03A0\u01D1\x02\u0672\u0674\x07\xF5\x02" +
		"\x02\u0673\u0670\x03\x02\x02\x02\u0673\u0672\x03\x02\x02\x02\u0674\u0684" +
		"\x03\x02\x02\x02\u0675\u0676\x07\u0135\x02\x02\u0676\u0684\x07H\x02\x02" +
		"\u0677\u0679\x07\u0135\x02\x02\u0678\u067A\x07\x8C\x02\x02\u0679\u0678" +
		"\x03\x02\x02\x02\u0679\u067A\x03\x02\x02\x02\u067A\u067B\x03\x02\x02\x02" +
		"\u067B\u067C\t\t\x02\x02\u067C\u067D\x07\xE1\x02\x02\u067D\u0681\x05\u0296" +
		"\u014C\x02\u067E\u067F\x05\\/\x02\u067F\u0680\x05\u0290\u0149\x02\u0680" +
		"\u0682\x03\x02\x02\x02\u0681\u067E\x03\x02\x02\x02\u0681\u0682\x03\x02" +
		"\x02\x02\u0682\u0684\x03\x02\x02\x02\u0683\u05C2\x03\x02\x02\x02\u0683" +
		"\u05C8\x03\x02\x02\x02\u0683\u05D5\x03\x02\x02\x02\u0683\u05E1\x03\x02" +
		"\x02\x02\u0683\u05EE\x03\x02\x02\x02\u0683\u05FF\x03\x02\x02\x02\u0683" +
		"\u0605\x03\x02\x02\x02\u0683\u0614\x03\x02\x02\x02\u0683\u061D\x03\x02" +
		"\x02\x02\u0683\u062A\x03\x02\x02\x02\u0683\u0632\x03\x02\x02\x02\u0683" +
		"\u0641\x03\x02\x02\x02\u0683\u0669\x03\x02\x02\x02\u0683\u066B\x03\x02" +
		"\x02\x02\u0683\u066E\x03\x02\x02\x02\u0683\u0675\x03\x02\x02\x02\u0683" +
		"\u0677\x03\x02\x02\x02\u0684a\x03\x02\x02\x02\u0685\u0686\x07\u0181\x02" +
		"\x02\u0686\u0687\x05\u03A0\u01D1\x02\u0687\u0688\x07\u0196\x02\x02\u0688" +
		"\u0689\x07\u01AB\x02\x02\u0689\u068E\x03\x02\x02\x02\u068A\u068B\x07\xB9" +
		"\x02\x02\u068B\u068E\x05\xDAn\x02\u068C\u068E\x05\xDAn\x02\u068D\u0685" +
		"\x03\x02\x02\x02\u068D\u068A\x03\x02\x02\x02\u068D\u068C\x03\x02\x02\x02" +
		"\u068Ec\x03\x02\x02\x02\u068F\u0690\x07\xBF\x02\x02\u0690\u0691\x07\u014A" +
		"\x02\x02\u0691\u0693\x05\u0296\u014C\x02\u0692\u0694\x05\u0392\u01CA\x02" +
		"\u0693\u0692\x03\x02\x02\x02\u0693\u0694\x03\x02\x02\x02\u0694\u0695\x03" +
		"\x02\x02\x02\u0695\u0696\x05h5\x02\u0696e\x03\x02\x02\x02\u0697\u0698" +
		"\x07\xBF\x02\x02\u0698\u0699\x05^0\x02\u0699\u069A\x05\u0290\u0149\x02" +
		"\u069A\u069B\x05h5\x02\u069Bg\x03\x02\x02\x02\u069C\u069D\t\n\x02\x02" +
		"\u069Di\x03\x02\x02\x02\u069E\u069F\x07\u016A\x02\x02\u069F\u06A0\x07" +
		"\u014A\x02\x02\u06A0\u06A2\x05\u0296\u014C\x02\u06A1\u06A3\x05\u0392\u01CA" +
		"\x02\u06A2\u06A1\x03\x02\x02\x02\u06A2\u06A3\x03\x02\x02\x02\u06A3k\x03" +
		"\x02\x02\x02\u06A4\u06A5\x07\u016A\x02\x02\u06A5\u06A6\x05^0\x02\u06A6" +
		"\u06A7\x05\u0290\u0149\x02\u06A7m\x03\x02\x02\x02\u06A8\u06A9\x07<\x02" +
		"\x02\u06A9\u06AA\x07\u0120\x02\x02\u06AA\u06AB\x05\u03A0\u01D1\x02\u06AB" +
		"o\x03\x02\x02\x02\u06AC\u06AD\x07g\x02\x02\u06AD\u06AE\x07\u0120\x02\x02" +
		"\u06AE\u06AF\x05\u03A0\u01D1\x02\u06AFq\x03\x02\x02\x02\u06B0\u06B1\x07" +
		"\x91\x02\x02\u06B1\u06B3\x05\x8EH\x02\u06B2\u06B4\x05\x88E\x02\u06B3\u06B2" +
		"\x03\x02\x02\x02\u06B3\u06B4\x03\x02\x02\x02\u06B4\u06B5\x03\x02\x02\x02" +
		"\u06B5\u06B6\x07\u0156\x02\x02\u06B6\u06B8\x05\x94K\x02\u06B7\u06B9\x05" +
		"\x9AN\x02\u06B8\u06B7\x03\x02\x02\x02\u06B8\u06B9\x03\x02\x02\x02\u06B9" +
		"s\x03\x02\x02\x02\u06BA\u06BC\x07\u011C\x02\x02\u06BB\u06BD\x05\x9CO\x02" +
		"\u06BC\u06BB\x03\x02\x02\x02\u06BC\u06BD\x03\x02\x02\x02\u06BD\u06BE\x03" +
		"\x02\x02\x02\u06BE\u06C0\x05\x8EH\x02\u06BF\u06C1\x05\x88E\x02\u06C0\u06BF" +
		"\x03\x02\x02\x02\u06C0\u06C1\x03\x02\x02\x02\u06C1\u06C2\x03\x02\x02\x02" +
		"\u06C2\u06C3\x07\x8D\x02\x02\u06C3\u06C4\x05\x94K\x02\u06C4u\x03\x02\x02" +
		"\x02\u06C5\u06C7\x07\x91\x02\x02\u06C6\u06C8\x07\u0120\x02\x02\u06C7\u06C6" +
		"\x03\x02\x02\x02\u06C7\u06C8\x03\x02\x02\x02\u06C8\u06C9\x03\x02\x02\x02" +
		"\u06C9\u06CE\x05\u03A0\u01D1\x02\u06CA\u06CB\x07\u018E\x02\x02\u06CB\u06CD" +
		"\x05\u03A0\u01D1\x02\u06CC\u06CA\x03\x02\x02\x02\u06CD\u06D0\x03\x02\x02" +
		"\x02\u06CE\u06CC\x03\x02\x02\x02\u06CE\u06CF\x03\x02\x02\x02\u06CF\u06D1" +
		"\x03\x02\x02\x02\u06D0\u06CE\x03\x02\x02\x02\u06D1\u06D2\x07\u0156\x02" +
		"\x02\u06D2\u06D4\x05\x94K\x02\u06D3\u06D5\x05\xA0Q\x02\u06D4\u06D3\x03" +
		"\x02\x02\x02\u06D4\u06D5\x03\x02\x02\x02\u06D5w\x03\x02\x02\x02\u06D6" +
		"\u06D8\x07\u011C\x02\x02\u06D7\u06D9\x05\x9EP\x02\u06D8\u06D7\x03\x02" +
		"\x02\x02\u06D8\u06D9\x03\x02\x02\x02\u06D9\u06DB\x03\x02\x02\x02\u06DA" +
		"\u06DC\x07\u0120\x02\x02\u06DB\u06DA\x03\x02\x02\x02\u06DB\u06DC\x03\x02" +
		"\x02\x02\u06DC\u06DD\x03\x02\x02\x02\u06DD\u06E2\x05\u03A0\u01D1\x02\u06DE" +
		"\u06DF\x07\u018E\x02\x02\u06DF\u06E1\x05\u03A0\u01D1\x02\u06E0\u06DE\x03" +
		"\x02\x02\x02\u06E1\u06E4\x03\x02\x02\x02\u06E2\u06E0\x03\x02\x02\x02\u06E2" +
		"\u06E3\x03\x02\x02\x02\u06E3\u06E5\x03\x02\x02\x02\u06E4\u06E2\x03\x02" +
		"\x02\x02\u06E5\u06E6\x07\x8D\x02\x02\u06E6\u06E7\x05\x94K\x02\u06E7y\x03" +
		"\x02\x02\x02\u06E8\u06E9\x07\u0135\x02\x02\u06E9\u06EA\x07\u0120\x02\x02" +
		"\u06EA\u06EB\x07\x91\x02\x02\u06EB\u06EC\x05\x96L\x02\u06EC{\x03\x02\x02" +
		"\x02\u06ED\u06EE\x07\u0135\x02\x02\u06EE\u06EF\x07\u0121\x02\x02\u06EF" +
		"}\x03\x02\x02\x02\u06F0\u06F1\x07\u0135\x02\x02\u06F1\u06F2\x07@\x02\x02" +
		"\u06F2\u06F3\x07\u0121\x02\x02\u06F3\x7F\x03\x02\x02\x02\u06F4\u06F5\x07" +
		"\u0131\x02\x02\u06F5\u06F9\x07\u0120\x02\x02\u06F6\u06FA\x07\t\x02\x02" +
		"\u06F7\u06FA\x07\xD6\x02\x02\u06F8\u06FA\x05\u03A0\u01D1\x02\u06F9\u06F6" +
		"\x03\x02\x02\x02\u06F9\u06F7\x03\x02\x02\x02\u06F9\u06F8\x03\x02\x02\x02" +
		"\u06FA\x81\x03\x02\x02\x02\u06FB\u06FC\x07\u0135\x02\x02\u06FC\u06FE\x07" +
		"\x91\x02\x02\u06FD\u06FF\x05\x96L\x02\u06FE\u06FD\x03\x02\x02\x02\u06FE" +
		"\u06FF\x03\x02\x02\x02\u06FF\u0702\x03\x02\x02\x02\u0700\u0701\x07\xE1" +
		"\x02\x02\u0701\u0703\x05\x86D\x02\u0702\u0700\x03\x02\x02\x02\u0702\u0703" +
		"\x03\x02\x02\x02\u0703\x83\x03\x02\x02\x02\u0704\u0705\x07\u0135\x02\x02" +
		"\u0705\u0706\x07\xFD\x02\x02\u0706\u0707\x05\u03A0\u01D1\x02\u0707\x85" +
		"\x03\x02\x02\x02\u0708\u070B\x07\t\x02\x02\u0709\u070B\x05\x8CG\x02\u070A" +
		"\u0708\x03\x02\x02\x02\u070A\u0709\x03\x02\x02\x02\u070B\x87\x03\x02\x02" +
		"\x02\u070C\u070D\x07\xE1\x02\x02\u070D\u070E\x05\x8AF\x02\u070E\x89\x03" +
		"\x02\x02\x02\u070F\u0710\x05^0\x02\u0710\u0711\x05\u0290\u0149\x02\u0711" +
		"\u071E\x03\x02\x02\x02\u0712\u0714\x07\u014A\x02\x02\u0713\u0712\x03\x02" +
		"\x02\x02\u0713\u0714\x03\x02\x02\x02\u0714\u0715\x03\x02\x02\x02\u0715" +
		"\u0717\x05\u0296\u014C\x02\u0716\u0718\x05\u0392\u01CA\x02\u0717\u0716" +
		"\x03\x02\x02\x02\u0717\u0718\x03\x02\x02\x02\u0718\u071E\x03\x02\x02\x02" +
		"\u0719\u071A\x07\u016F\x02\x02\u071A\u071E\x07\u01AB\x02\x02\u071B\u071C" +
		"\x07\u0130\x02\x02\u071C\u071E\x05\u03A0\u01D1\x02\u071D\u070F\x03\x02" +
		"\x02\x02\u071D\u0713\x03\x02\x02\x02\u071D\u0719\x03\x02\x02\x02\u071D" +
		"\u071B\x03\x02\x02\x02\u071E\x8B\x03\x02\x02\x02\u071F\u0720\x05^0\x02" +
		"\u0720\u0721\x05\u0290\u0149\x02\u0721\u0734\x03\x02\x02\x02\u0722\u0724" +
		"\x07\u014A\x02\x02\u0723\u0722\x03\x02\x02\x02\u0723\u0724\x03\x02\x02" +
		"\x02\u0724\u0725\x03\x02\x02\x02\u0725\u072A\x05\u0296\u014C\x02\u0726" +
		"\u0727\x07\u0190\x02\x02\u0727\u0728\x05\u011A\x8E\x02\u0728\u0729\x07" +
		"\u0191\x02\x02\u0729\u072B\x03\x02\x02\x02\u072A\u0726\x03\x02\x02\x02" +
		"\u072A\u072B\x03\x02\x02\x02\u072B\u072D\x03\x02\x02\x02\u072C\u072E\x05" +
		"\u0392\u01CA\x02\u072D\u072C\x03\x02\x02\x02\u072D\u072E\x03\x02\x02\x02" +
		"\u072E\u0734\x03\x02\x02\x02\u072F\u0730\x07\u016F\x02\x02\u0730\u0734" +
		"\x07\u01AB\x02\x02\u0731\u0732\x07\u0130\x02\x02\u0732\u0734\x05\u03A0" +
		"\u01D1\x02\u0733\u071F\x03\x02\x02\x02\u0733\u0723\x03\x02\x02\x02\u0733" +
		"\u072F\x03\x02\x02\x02\u0733\u0731\x03\x02\x02\x02\u0734\x8D\x03\x02\x02" +
		"\x02\u0735\u073A\x05\x90I\x02\u0736\u0737\x07\u018E\x02\x02\u0737\u0739" +
		"\x05\x90I\x02\u0738\u0736\x03\x02\x02\x02\u0739\u073C\x03\x02\x02\x02" +
		"\u073A\u0738\x03\x02\x02\x02\u073A\u073B\x03\x02\x02\x02\u073B\x8F\x03" +
		"\x02\x02\x02\u073C\u073A\x03\x02\x02\x02\u073D\u0742\x05\x92J\x02\u073E" +
		"\u073F\x07\u0190\x02\x02\u073F\u0740\x05\u011A\x8E\x02\u0740\u0741\x07" +
		"\u0191\x02\x02\u0741\u0743\x03\x02\x02\x02\u0742\u073E\x03\x02\x02\x02" +
		"\u0742\u0743\x03\x02\x02\x02\u0743\x91\x03\x02\x02\x02\u0744\u0745\t\v" +
		"\x02\x02\u0745\x93\x03\x02\x02\x02\u0746\u074B\x05\x96L\x02\u0747\u0748" +
		"\x07\u018E\x02\x02\u0748\u074A\x05\x96L\x02\u0749\u0747\x03\x02\x02\x02" +
		"\u074A\u074D\x03\x02\x02\x02\u074B\u0749\x03\x02\x02\x02\u074B\u074C\x03" +
		"\x02\x02\x02\u074C\x95\x03\x02\x02\x02\u074D\u074B\x03\x02\x02\x02\u074E" +
		"\u074F\x07\u0172\x02\x02\u074F\u0755\x05\u03A4\u01D3\x02\u0750\u0751\x07" +
		"\x92\x02\x02\u0751\u0755\x05\u03A4\u01D3\x02\u0752\u0753\x07\u0120\x02" +
		"\x02\u0753\u0755\x05\u03A0\u01D1\x02\u0754\u074E\x03\x02\x02\x02\u0754" +
		"\u0750\x03\x02\x02\x02\u0754\u0752\x03\x02\x02\x02\u0755\x97\x03\x02\x02" +
		"\x02\u0756\u0757\x07\u0172\x02\x02\u0757\u075C\x05\u03A4\u01D3\x02\u0758" +
		"\u0759\x07\u0120\x02\x02\u0759\u075C\x05\u03A0\u01D1\x02\u075A\u075C\x05" +
		"\u03A0\u01D1\x02\u075B\u0756\x03\x02\x02\x02\u075B\u0758\x03\x02\x02\x02" +
		"\u075B\u075A\x03\x02\x02\x02\u075C\x99\x03\x02\x02\x02\u075D\u075E\x07" +
		"\u0184\x02\x02\u075E\u075F\x07\x91\x02\x02\u075F\u0760\x07\xE4\x02\x02" +
		"\u0760\x9B\x03\x02\x02\x02\u0761\u0762\x07\x91\x02\x02\u0762\u0763\x07" +
		"\xE4\x02\x02\u0763\u0764\x07\x88\x02\x02\u0764\x9D\x03\x02\x02\x02\u0765" +
		"\u0766\x07\x07\x02\x02\u0766\u0767\x07\xE4\x02\x02\u0767\u0768\x07\x88" +
		"\x02\x02\u0768\x9F\x03\x02\x02\x02\u0769\u076A\x07\u0184\x02\x02\u076A" +
		"\u076B\x07\x07\x02\x02\u076B\u076C\x07\xE4\x02\x02\u076C\xA1\x03\x02\x02" +
		"\x02\u076D\u076F\x07\xD5\x02\x02\u076E\u0770\x07\u0115\x02\x02\u076F\u076E" +
		"\x03\x02\x02\x02\u076F\u0770\x03\x02\x02\x02\u0770\u0771\x03\x02\x02\x02" +
		"\u0771\u0772\x07\u014A\x02\x02\u0772\u0778\x05\u0296\u014C\x02\u0773\u0774" +
		"\t\f\x02\x02\u0774\u0776\x07\xF0\x02\x02\u0775\u0777\x05\u0396\u01CC\x02" +
		"\u0776\u0775\x03\x02\x02\x02\u0776\u0777\x03\x02\x02\x02\u0777\u0779\x03" +
		"\x02\x02\x02\u0778\u0773\x03\x02\x02\x02\u0778\u0779\x03\x02\x02\x02\u0779" +
		"\xA3\x03\x02\x02\x02\u077A\u077F\x05\xA6T\x02\u077B\u077C\x07\u018E\x02" +
		"\x02\u077C\u077E\x05\xA6T\x02\u077D\u077B\x03\x02\x02\x02\u077E\u0781" +
		"\x03\x02\x02\x02\u077F\u077D\x03\x02\x02\x02\u077F\u0780\x03\x02\x02\x02" +
		"\u0780\xA5\x03\x02\x02\x02\u0781\u077F\x03\x02\x02\x02\u0782\u0783\x05" +
		"\xA8U\x02\u0783\u0784\x07\u01AB\x02\x02\u0784\xA7\x03\x02\x02\x02\u0785" +
		"\u0786\t\r\x02\x02\u0786\xA9\x03\x02\x02\x02\u0787\u0789\x07<\x02\x02" +
		"\u0788\u078A\x07\u014E\x02\x02\u0789\u0788\x03\x02\x02\x02\u0789\u078A" +
		"\x03\x02\x02\x02\u078A\u078B\x03\x02\x02\x02\u078B\u078C\x07\x8F\x02\x02" +
		"\u078C\u078D\x05\u030E\u0188\x02\u078D\u078E\x07\x13\x02\x02\u078E\u0791" +
		"\x07\u01AB\x02\x02\u078F\u0790\x07\u0173\x02\x02\u0790\u0792\x05\xA4S" +
		"\x02\u0791\u078F\x03\x02\x02\x02\u0791\u0792\x03\x02\x02\x02\u0792\xAB" +
		"\x03\x02\x02\x02\u0793\u0795\x07g\x02\x02\u0794\u0796\x07\u014E\x02\x02" +
		"\u0795\u0794\x03\x02\x02\x02\u0795\u0796\x03\x02\x02\x02\u0796\u0797\x03" +
		"\x02\x02\x02\u0797\u0799\x07\x8F\x02\x02\u0798\u079A\x05*\x16\x02\u0799" +
		"\u0798\x03\x02\x02\x02\u0799\u079A\x03\x02\x02\x02\u079A\u079B\x03\x02" +
		"\x02\x02\u079B\u079C\x05\u0310\u0189\x02\u079C\xAD\x03\x02\x02\x02\u079D" +
		"\u079E\x07\u0110\x02\x02\u079E\u079F\t\x0E\x02\x02\u079F\xAF\x03\x02\x02" +
		"\x02\u07A0\u07A1\x07<\x02\x02\u07A1\u07A2\x07\u014E\x02\x02\u07A2\u07A3" +
		"\x07\xC3\x02\x02\u07A3\u07A4\x07\u01B1\x02\x02\u07A4\u07A6\x07\u0190\x02" +
		"\x02\u07A5\u07A7\x05\u0114\x8B\x02\u07A6\u07A5\x03\x02\x02\x02\u07A6\u07A7" +
		"\x03\x02\x02\x02\u07A7\u07A8\x03\x02\x02\x02\u07A8\u07A9\x07\u0191\x02" +
		"\x02\u07A9\u07AA\x05\u033E\u01A0\x02\u07AA\xB1\x03\x02\x02\x02\u07AB\u07AC" +
		"\x07g\x02\x02\u07AC\u07AD\x07\u014E\x02\x02\u07AD\u07AF\x07\xC3\x02\x02" +
		"\u07AE\u07B0\x05*\x16\x02\u07AF\u07AE\x03\x02\x02\x02\u07AF\u07B0\x03" +
		"\x02\x02\x02\u07B0\u07B1\x03\x02\x02\x02\u07B1\u07B2\x07\u01B1\x02\x02" +
		"\u07B2\xB3\x03\x02\x02\x02\u07B3\u07B4\x07<\x02\x02\u07B4\u07B5\x07\x9D" +
		"\x02\x02\u07B5\u07B6\x05\u03A0\u01D1\x02\u07B6\u07B7\x07\xE1\x02\x02\u07B7" +
		"\u07B8\x07\u014A\x02\x02\u07B8\u07B9\x05\u0296\u014C\x02\u07B9\u07BA\x05" +
		"\u0124\x93\x02\u07BA\u07BB\x07\x13\x02\x02\u07BB\u07BF\x07\u01AB\x02\x02" +
		"\u07BC\u07BD\x07\u0184\x02\x02\u07BD\u07BE\x07V\x02\x02\u07BE\u07C0\x07" +
		"\u010A\x02\x02\u07BF\u07BC\x03\x02\x02\x02\u07BF\u07C0\x03\x02\x02\x02" +
		"\u07C0\u07C3\x03\x02\x02\x02\u07C1\u07C2\x07\x98\x02\x02\u07C2\u07C4\x05" +
		"\xFE\x80\x02\u07C3\u07C1\x03\x02\x02\x02\u07C3\u07C4\x03\x02\x02\x02\u07C4" +
		"\u07C8\x03\x02\x02\x02\u07C5\u07C6\x07\x9C\x02\x02\u07C6\u07C7\x07\u014A" +
		"\x02\x02\u07C7\u07C9\x05\u0296\u014C\x02\u07C8\u07C5\x03\x02\x02\x02\u07C8" +
		"\u07C9\x03\x02\x02\x02\u07C9\u07CD\x03\x02\x02\x02\u07CA\u07CB\x07\xEF" +
		"\x02\x02\u07CB\u07CC\x07\"\x02\x02\u07CC\u07CE\x05\u0124\x93\x02\u07CD" +
		"\u07CA\x03\x02\x02\x02\u07CD\u07CE\x03\x02\x02\x02\u07CE\u07D3\x03\x02" +
		"\x02\x02\u07CF\u07D1\x05\xFA~\x02\u07D0\u07CF\x03\x02\x02\x02\u07D0\u07D1" +
		"\x03\x02\x02\x02\u07D1\u07D2\x03\x02\x02\x02\u07D2\u07D4\x05\u0110\x89" +
		"\x02\u07D3\u07D0\x03\x02\x02\x02\u07D3\u07D4\x03\x02\x02\x02\u07D4\u07D7" +
		"\x03\x02\x02\x02\u07D5\u07D6\x07\xBE\x02\x02\u07D6\u07D8\x07\u01AB\x02" +
		"\x02\u07D7\u07D5\x03\x02\x02\x02\u07D7\u07D8\x03\x02\x02\x02\u07D8\u07DA" +
		"\x03\x02\x02\x02\u07D9\u07DB\x05\xFC\x7F\x02\u07DA\u07D9\x03\x02\x02\x02" +
		"\u07DA\u07DB\x03\x02\x02\x02\u07DB\u07DD\x03\x02\x02\x02\u07DC\u07DE\x05" +
		"\xDCo\x02\u07DD\u07DC\x03\x02\x02\x02\u07DD\u07DE\x03\x02\x02\x02\u07DE" +
		"\xB5\x03\x02\x02\x02\u07DF\u07E0\x07g\x02\x02\u07E0\u07E2\x07\x9D\x02" +
		"\x02\u07E1\u07E3\x05*\x16\x02\u07E2\u07E1\x03\x02\x02\x02\u07E2\u07E3" +
		"\x03\x02\x02\x02\u07E3\u07E4\x03\x02\x02\x02\u07E4\u07E5\x05\u03A0\u01D1" +
		"\x02\u07E5\u07E6\x07\xE1\x02\x02\u07E6\u07E7\x05\u0296\u014C\x02\u07E7" +
		"\xB7\x03\x02\x02\x02\u07E8\u07EA\x07<\x02\x02\u07E9\u07EB\x058\x1D\x02" +
		"\u07EA\u07E9\x03\x02\x02\x02\u07EA\u07EB\x03\x02\x02\x02\u07EB\u07EC\x03" +
		"\x02\x02\x02\u07EC\u07EE\x07\u017B\x02\x02\u07ED\u07EF\x05.\x18\x02\u07EE" +
		"\u07ED\x03\x02\x02\x02\u07EE\u07EF\x03\x02\x02\x02\u07EF\u07F0\x03\x02" +
		"\x02\x02\u07F0\u07F5\x05\u029C\u014F\x02\u07F1\u07F2\x07\u0190\x02\x02" +
		"\u07F2\u07F3\x05\u0150\xA9\x02\u07F3\u07F4\x07\u0191\x02\x02\u07F4\u07F6" +
		"\x03\x02\x02\x02\u07F5\u07F1\x03\x02\x02\x02\u07F5\u07F6\x03\x02\x02\x02" +
		"\u07F6\u07F8\x03\x02\x02\x02\u07F7\u07F9\x05\xDCo\x02\u07F8\u07F7\x03" +
		"\x02\x02\x02\u07F8\u07F9\x03\x02\x02\x02\u07F9\u07FB\x03\x02\x02\x02\u07FA" +
		"\u07FC\x05\xBA^\x02\u07FB\u07FA\x03\x02\x02\x02\u07FB\u07FC\x03\x02\x02" +
		"\x02\u07FC\u07FE\x03\x02\x02\x02\u07FD\u07FF\x05\xFC\x7F\x02\u07FE\u07FD" +
		"\x03\x02\x02\x02\u07FE\u07FF\x03\x02\x02\x02\u07FF\u0800\x03\x02\x02\x02" +
		"\u0800\u0801\x07\x13\x02\x02\u0801\u0802\x05\u019E\xD0\x02\u0802\xB9\x03" +
		"\x02\x02\x02\u0803\u0804\x07\xEF\x02\x02\u0804\u080A\x07\xE1\x02\x02\u0805" +
		"\u0806\x07\u0190\x02\x02\u0806\u080B\x05\u011A\x8E\x02\u0807\u0808\x07" +
		"\u013D\x02\x02\u0808\u0809\x07\u0190\x02\x02\u0809\u080B\x05\xE4s\x02" +
		"\u080A\u0805\x03\x02\x02\x02\u080A\u0807\x03\x02\x02\x02\u080B\u080C\x03" +
		"\x02\x02\x02\u080C\u080D\x07\u0191\x02\x02\u080D\xBB\x03\x02\x02\x02\u080E" +
		"\u0811\x05\xBE`\x02\u080F\u0811\x05\xC0a\x02\u0810\u080E\x03\x02\x02\x02" +
		"\u0810\u080F\x03\x02\x02\x02\u0811\xBD\x03\x02\x02\x02\u0812\u0813\x07" +
		",\x02\x02\u0813\u0814\x07\xE1\x02\x02\u0814\u0815\x07\u0190\x02\x02\u0815" +
		"\u0816\x05\u011A\x8E\x02\u0816\u0817\x07\u0191\x02\x02\u0817\xBF\x03\x02" +
		"\x02\x02\u0818\u0819\x05\xC2b\x02\u0819\u081A\x05\xC4c\x02\u081A\xC1\x03" +
		"\x02\x02\x02\u081B\u081C\x07d\x02\x02\u081C\u081D\x07\xE1\x02\x02\u081D" +
		"\u081E\x07\u0190\x02\x02\u081E\u081F\x05\u011A\x8E\x02\u081F\u0820\x07" +
		"\u0191\x02\x02\u0820\xC3\x03\x02\x02\x02\u0821\u0822\x07\u013C\x02\x02" +
		"\u0822\u0823\x07\xE1\x02\x02\u0823\u0824\x07\u0190\x02\x02\u0824\u0825" +
		"\x05\u011A\x8E\x02\u0825\u0826\x07\u0191\x02\x02\u0826\xC5\x03\x02\x02" +
		"\x02\u0827\u0828\x07g\x02\x02\u0828\u082A\x07\u017B\x02\x02\u0829\u082B" +
		"\x05*\x16\x02\u082A\u0829\x03\x02\x02\x02\u082A\u082B\x03\x02\x02\x02" +
		"\u082B\u082C\x03\x02\x02\x02\u082C\u082D\x05\u029A\u014E\x02\u082D\xC7" +
		"\x03\x02\x02\x02\u082E\u082F\x07<\x02\x02\u082F\u0830\x07\xCB\x02\x02" +
		"\u0830\u0832\x07\u017B\x02\x02\u0831\u0833\x05.\x18\x02\u0832\u0831\x03" +
		"\x02\x02\x02\u0832\u0833\x03\x02\x02\x02\u0833\u0834\x03\x02\x02\x02\u0834" +
		"\u0836\x05\u029C\u014F\x02\u0835\u0837\x054\x1B\x02\u0836\u0835\x03\x02" +
		"\x02\x02\u0836\u0837\x03\x02\x02\x02\u0837\u0839\x03\x02\x02\x02\u0838" +
		"\u083A\x05\xDCo\x02\u0839\u0838\x03\x02\x02\x02\u0839\u083A\x03\x02\x02" +
		"\x02\u083A\u083C\x03\x02\x02\x02\u083B\u083D\x05\xBA^\x02\u083C\u083B" +
		"\x03\x02\x02\x02\u083C\u083D\x03\x02\x02\x02\u083D\u083F\x03\x02\x02\x02" +
		"\u083E\u0840\x05\xBC_\x02\u083F\u083E\x03\x02\x02\x02\u083F\u0840\x03" +
		"\x02\x02\x02\u0840\u0842\x03\x02\x02\x02\u0841\u0843\x05\xFA~\x02\u0842" +
		"\u0841\x03\x02\x02\x02\u0842\u0843\x03\x02\x02\x02\u0843\u0845\x03\x02" +
		"\x02\x02\u0844\u0846\x05\u0110\x89\x02\u0845\u0844\x03\x02\x02\x02\u0845" +
		"\u0846\x03\x02\x02\x02\u0846\u0848\x03\x02\x02\x02\u0847\u0849\x05\u0112" +
		"\x8A\x02\u0848\u0847\x03\x02\x02\x02\u0848\u0849\x03\x02\x02\x02\u0849" +
		"\u084B\x03\x02\x02\x02\u084A\u084C\x05\xFC\x7F\x02\u084B\u084A\x03\x02" +
		"\x02\x02\u084B\u084C\x03\x02\x02\x02\u084C\u084D\x03\x02\x02\x02\u084D" +
		"\u084E\x07\x13\x02\x02\u084E\u084F\x05\u019E\xD0\x02\u084F\xC9\x03\x02" +
		"\x02\x02\u0850\u0851\x07g\x02\x02\u0851\u0852\x07\xCB\x02\x02\u0852\u0854" +
		"\x07\u017B\x02\x02\u0853\u0855\x05*\x16\x02\u0854\u0853\x03\x02\x02\x02" +
		"\u0854\u0855\x03\x02\x02\x02\u0855\u0856\x03\x02\x02\x02\u0856\u0857\x05" +
		"\u029A\u014E\x02\u0857\xCB\x03\x02\x02\x02\u0858\u0859\x07<\x02\x02\u0859" +
		"\u085A\x07\u0126\x02\x02\u085A\u085B\x07\u0103\x02\x02\u085B\u085C\x05" +
		"\u03A0\u01D1\x02\u085C\u085E\x05\xD4k\x02\u085D\u085F\x05\xD6l\x02\u085E" +
		"\u085D\x03\x02\x02\x02\u085E\u085F\x03\x02\x02\x02\u085F\u0861\x03\x02" +
		"\x02\x02\u0860\u0862\x05\u0128\x95\x02\u0861\u0860\x03\x02\x02\x02\u0861" +
		"\u0862\x03\x02\x02\x02\u0862\u0863\x03\x02\x02\x02\u0863\u0864\x05\xD8" +
		"m\x02\u0864\xCD\x03\x02\x02\x02\u0865\u0866\x07g\x02\x02\u0866\u0867\x07" +
		"\u0126\x02\x02\u0867\u0868\x07\u0103\x02\x02\u0868\u0869\x05\u03A0\u01D1" +
		"\x02\u0869\xCF\x03\x02\x02\x02\u086A\u086B\x07\v\x02\x02\u086B\u086C\x07" +
		"\u0126\x02\x02\u086C\u086D\x07\u0103\x02\x02\u086D\u086E\x05\u03A0\u01D1" +
		"\x02\u086E\u086F\x05\xD2j\x02\u086F\xD1\x03\x02\x02\x02\u0870\u0876\x05" +
		"\xD4k\x02\u0871\u0876\x05\xD6l\x02\u0872\u0876\x05\u0128\x95\x02\u0873" +
		"\u0876\x05\xD8m\x02\u0874\u0876\x07u\x02\x02\u0875\u0870\x03\x02\x02\x02" +
		"\u0875\u0871\x03\x02\x02\x02\u0875\u0872\x03\x02\x02\x02\u0875\u0873\x03" +
		"\x02\x02\x02\u0875\u0874\x03\x02\x02\x02\u0876\xD3\x03\x02\x02\x02\u0877" +
		"\u0878\x07=\x02\x02\u0878\u0887\x07\u01AB\x02\x02\u0879\u087B\x07q\x02" +
		"\x02\u087A\u087C\x07\u01B0\x02\x02\u087B\u087A\x03\x02\x02\x02\u087B\u087C" +
		"\x03\x02\x02\x02\u087C\u087D\x03\x02\x02\x02\u087D\u0884\x05\u033C\u019F" +
		"\x02\u087E\u0882\x07\x16";
	private static readonly _serializedATNSegment5: string =
		"\x02\x02\u087F\u0880\x07\xE0\x02\x02\u0880\u0882\x07\"\x02\x02\u0881\u087E" +
		"\x03\x02\x02\x02\u0881\u087F\x03\x02\x02\x02\u0882\u0883\x03\x02\x02\x02" +
		"\u0883\u0885\x07\u01AB\x02\x02\u0884\u0881\x03\x02\x02\x02\u0884\u0885" +
		"\x03\x02\x02\x02\u0885\u0887\x03\x02\x02\x02\u0886\u0877\x03\x02\x02\x02" +
		"\u0886\u0879\x03\x02\x02\x02\u0887\xD5\x03\x02\x02\x02\u0888\u0889\x07" +
		"v\x02\x02\u0889\u088A\x07\x13\x02\x02\u088A\u088B\x07\u01AB\x02\x02\u088B" +
		"\xD7\x03\x02\x02\x02\u088C\u088E\x07W\x02\x02\u088D\u088C\x03\x02\x02" +
		"\x02\u088D\u088E\x03\x02\x02\x02\u088E\u088F\x03\x02\x02\x02\u088F\u0890" +
		"\x07\x13\x02\x02\u0890\u0891\x05\x04\x03\x02\u0891\xD9\x03\x02\x02\x02" +
		"\u0892\u0895\x05\u03A0\u01D1\x02\u0893\u0895\x07\u01AB\x02\x02\u0894\u0892" +
		"\x03\x02\x02\x02\u0894\u0893\x03\x02\x02\x02\u0895\xDB\x03\x02\x02\x02" +
		"\u0896\u0897\x071\x02\x02\u0897\u0898\x07\u01AB\x02\x02\u0898\xDD\x03" +
		"\x02\x02\x02\u0899\u089A\x07\xEF\x02\x02\u089A\u08A3\x07\"\x02\x02\u089B" +
		"\u089E\x07\u0190\x02\x02\u089C\u089F\x05\xE0q\x02\u089D\u089F\x05\xE2" +
		"r\x02\u089E\u089C\x03\x02\x02\x02\u089E\u089D\x03\x02\x02\x02\u089F\u08A4" +
		"\x03\x02\x02\x02\u08A0\u08A1\x07\u013D\x02\x02\u08A1\u08A2\x07\u0190\x02" +
		"\x02\u08A2\u08A4\x05\xE4s\x02\u08A3\u089B\x03\x02\x02\x02\u08A3\u08A0" +
		"\x03\x02\x02\x02\u08A4\u08A5\x03\x02\x02\x02\u08A5\u08A6\x07\u0191\x02" +
		"\x02\u08A6\xDF\x03\x02\x02\x02\u08A7\u08AC\x05\u015E\xB0\x02\u08A8\u08A9" +
		"\x07\u018E\x02\x02\u08A9\u08AB\x05\u015E\xB0\x02\u08AA\u08A8\x03\x02\x02" +
		"\x02\u08AB\u08AE\x03\x02\x02\x02\u08AC\u08AA\x03\x02\x02\x02\u08AC\u08AD" +
		"\x03\x02\x02\x02\u08AD\xE1\x03\x02\x02\x02\u08AE\u08AC\x03\x02\x02\x02" +
		"\u08AF\u08B4\x05\u011C\x8F\x02\u08B0\u08B1\x07\u018E\x02\x02\u08B1\u08B3" +
		"\x05\u011C\x8F\x02\u08B2\u08B0\x03\x02\x02\x02\u08B3\u08B6\x03\x02\x02" +
		"\x02\u08B4\u08B2\x03\x02\x02\x02\u08B4\u08B5\x03\x02\x02\x02\u08B5\xE3" +
		"\x03\x02\x02\x02\u08B6\u08B4\x03\x02\x02\x02\u08B7\u08BC\x05\xE6t\x02" +
		"\u08B8\u08B9\x07\u018E\x02\x02\u08B9\u08BB\x05\xE6t\x02\u08BA\u08B8\x03" +
		"\x02\x02\x02\u08BB\u08BE\x03\x02\x02\x02\u08BC\u08BA\x03\x02\x02\x02\u08BC" +
		"\u08BD\x03\x02\x02\x02\u08BD\xE5\x03\x02\x02\x02\u08BE\u08BC\x03\x02\x02" +
		"\x02\u08BF\u08C0\x05\xE8u\x02\u08C0\xE7\x03\x02\x02\x02\u08C1\u08D4\x05" +
		"\u011C\x8F\x02\u08C2\u08C7\x05\u03D2\u01EA\x02\u08C3\u08C7\x05\u03D4\u01EB" +
		"\x02\u08C4\u08C7\x05\u03D8\u01ED\x02\u08C5\u08C7\x05\u03DA\u01EE\x02\u08C6" +
		"\u08C2\x03\x02\x02\x02\u08C6\u08C3\x03\x02\x02\x02\u08C6\u08C4\x03\x02" +
		"\x02\x02\u08C6\u08C5\x03\x02\x02\x02\u08C7\u08C8\x03\x02\x02\x02\u08C8" +
		"\u08C9\x07\u0190\x02\x02\u08C9\u08CA\x05\u011C\x8F\x02\u08CA\u08CB\x07" +
		"\u0191\x02\x02\u08CB\u08D4\x03\x02\x02\x02\u08CC\u08CD\t\x0F\x02\x02\u08CD" +
		"\u08CE\x07\u0190\x02\x02\u08CE\u08CF\x07\u01B0\x02\x02\u08CF\u08D0\x07" +
		"\u018E\x02\x02\u08D0\u08D1\x05\u011C\x8F\x02\u08D1\u08D2\x07\u0191\x02" +
		"\x02\u08D2\u08D4\x03\x02\x02\x02\u08D3\u08C1\x03\x02\x02\x02\u08D3\u08C6" +
		"\x03\x02\x02\x02\u08D3\u08CC\x03\x02\x02\x02\u08D4\xE9\x03\x02\x02\x02" +
		"\u08D5\u08D6\x07,\x02\x02\u08D6\u08D7\x07\"\x02\x02\u08D7\u08D8\x07\u0190" +
		"\x02\x02\u08D8\u08D9\x05\u011A\x8E\x02\u08D9\u08E0\x07\u0191\x02\x02\u08DA" +
		"\u08DB\x07\u013C\x02\x02\u08DB\u08DC\x07\"\x02\x02\u08DC\u08DD\x07\u0190" +
		"\x02\x02\u08DD\u08DE\x05\u0122\x92\x02\u08DE\u08DF\x07\u0191\x02\x02\u08DF" +
		"\u08E1\x03\x02\x02\x02\u08E0\u08DA\x03\x02\x02\x02\u08E0\u08E1\x03\x02" +
		"\x02\x02\u08E1\u08E2\x03\x02\x02\x02\u08E2\u08E3\x07\xA8\x02\x02\u08E3" +
		"\u08E4\x07\u01B0\x02\x02\u08E4\u08E5\x07!\x02\x02\u08E5\xEB\x03\x02\x02" +
		"\x02\u08E6\u08E7\x07,\x02\x02\u08E7\u08E8\x07\xA8\x02\x02\u08E8\u08E9" +
		"\x07\u01B0\x02\x02\u08E9\u08EA\x07!\x02\x02\u08EA\xED\x03\x02\x02\x02" +
		"\u08EB\u08EC\x07\u0137\x02\x02\u08EC\u08ED\x07\"\x02\x02\u08ED\u08EE\x07" +
		"\u0190\x02\x02\u08EE\u08EF\x05\u011A\x8E\x02\u08EF\u08F0\x07\u0191\x02" +
		"\x02\u08F0\u08F1\x07\xE1\x02\x02\u08F1\u08F2\x07\u0190\x02\x02\u08F2\u08F3" +
		"\x05\u013E\xA0\x02\u08F3\u08F5\x07\u0191\x02\x02\u08F4\u08F6\x056\x1C" +
		"\x02\u08F5\u08F4\x03\x02\x02\x02\u08F5\u08F6\x03\x02\x02\x02\u08F6\xEF" +
		"\x03\x02\x02\x02\u08F7\u08FA\x05\xF6|\x02\u08F8\u08FA\x05\xF8}\x02\u08F9" +
		"\u08F7\x03\x02\x02\x02\u08F9\u08F8\x03\x02\x02\x02\u08FA\xF1\x03\x02\x02" +
		"\x02\u08FB\u08FC\x07\u010B\x02\x02\u08FC\u08FD\x07\u01AB\x02\x02\u08FD" +
		"\xF3\x03\x02\x02\x02\u08FE\u08FF\x07\u010C\x02\x02\u08FF\u0900\x07\u01AB" +
		"\x02\x02\u0900\xF5\x03\x02\x02\x02\u0901\u0902\x07\u0124\x02\x02\u0902" +
		"\u0903\x07\x8B\x02\x02\u0903\u0904\x07\u012E\x02\x02\u0904\u0908\x07\u01AB" +
		"\x02\x02\u0905\u0906\x07\u0184\x02\x02\u0906\u0907\x07\u012F\x02\x02\u0907" +
		"\u0909\x05\xFE\x80\x02\u0908\u0905\x03\x02\x02\x02\u0908\u0909\x03\x02" +
		"\x02\x02\u0909\xF7\x03\x02\x02\x02\u090A\u090B\x07\u0124\x02\x02\u090B" +
		"\u090C\x07\x8B\x02\x02\u090C\u090E\x07Y\x02\x02\u090D\u090F\x05\u0106" +
		"\x84\x02\u090E\u090D\x03\x02\x02\x02\u090E\u090F\x03\x02\x02\x02\u090F" +
		"\u0911\x03\x02\x02\x02\u0910\u0912\x05\u0108\x85\x02\u0911\u0910\x03\x02" +
		"\x02\x02\u0911\u0912\x03\x02\x02\x02\u0912\u0914\x03\x02\x02\x02\u0913" +
		"\u0915\x05\u010A\x86\x02\u0914\u0913\x03\x02\x02\x02\u0914\u0915\x03\x02" +
		"\x02\x02\u0915\u0917\x03\x02\x02\x02\u0916\u0918\x05\u010C\x87\x02\u0917" +
		"\u0916\x03\x02\x02\x02\u0917\u0918\x03\x02\x02\x02\u0918\u091A\x03\x02" +
		"\x02\x02\u0919\u091B\x05\u010E\x88\x02\u091A\u0919\x03\x02\x02\x02\u091A" +
		"\u091B\x03\x02\x02\x02\u091B\xF9\x03\x02\x02\x02\u091C\u091F\x05\xF8}" +
		"\x02\u091D\u091F\x05\xF6|\x02\u091E\u091C\x03\x02\x02\x02\u091E\u091D" +
		"\x03\x02\x02\x02\u091F\xFB\x03\x02\x02\x02\u0920\u0921\x07\u014D\x02\x02" +
		"\u0921\u0922\x05\xFE\x80\x02\u0922\xFD\x03\x02\x02\x02\u0923\u0924\x07" +
		"\u0190\x02\x02\u0924\u0925\x05\u0100\x81\x02\u0925\u0926\x07\u0191\x02" +
		"\x02\u0926\xFF\x03\x02\x02\x02\u0927\u092C\x05\u0102\x82\x02\u0928\u0929" +
		"\x07\u018E\x02\x02\u0929\u092B\x05\u0102\x82\x02\u092A\u0928\x03\x02\x02" +
		"\x02\u092B\u092E\x03\x02\x02\x02\u092C\u092A\x03\x02\x02\x02\u092C\u092D" +
		"\x03\x02\x02\x02\u092D\u0938\x03\x02\x02\x02\u092E\u092C\x03\x02\x02\x02" +
		"\u092F\u0934\x05\u0104\x83\x02\u0930\u0931\x07\u018E\x02\x02\u0931\u0933" +
		"\x05\u0104\x83\x02\u0932\u0930\x03\x02\x02\x02\u0933\u0936\x03\x02\x02" +
		"\x02\u0934\u0932\x03\x02\x02\x02\u0934\u0935\x03\x02\x02\x02\u0935\u0938" +
		"\x03\x02\x02\x02\u0936\u0934\x03\x02\x02\x02\u0937\u0927\x03\x02\x02\x02" +
		"\u0937\u092F\x03\x02\x02\x02\u0938\u0101\x03\x02\x02\x02\u0939\u093A\x07" +
		"\u01AB\x02\x02\u093A\u093B\x07\u0196\x02\x02\u093B\u093C\x07\u01AB\x02" +
		"\x02\u093C\u0103\x03\x02\x02\x02\u093D\u093E\x07\u01AB\x02\x02\u093E\u0105" +
		"\x03\x02\x02\x02\u093F\u0940\x07\x81\x02\x02\u0940\u0941\x07\u014F\x02" +
		"\x02\u0941\u0942\x07\"\x02\x02\u0942\u0946\x07\u01AB\x02\x02\u0943\u0944" +
		"\x07p\x02\x02\u0944\u0945\x07\"\x02\x02\u0945\u0947\x07\u01AB\x02\x02" +
		"\u0946\u0943\x03\x02\x02\x02\u0946\u0947\x03\x02\x02\x02\u0947\u0107\x03" +
		"\x02\x02\x02\u0948\u0949\x07.\x02\x02\u0949\u094A\x07\xAB\x02\x02\u094A" +
		"\u094B\x07\u014F\x02\x02\u094B\u094C\x07\"\x02\x02\u094C\u094D\x07\u01AB" +
		"\x02\x02\u094D\u0109\x03\x02\x02\x02\u094E\u094F\x07\xC7\x02\x02\u094F" +
		"\u0950\x07\xB0\x02\x02\u0950\u0951\x07\u014F\x02\x02\u0951\u0952\x07\"" +
		"\x02\x02\u0952\u0953\x07\u01AB\x02\x02\u0953\u010B\x03\x02\x02\x02\u0954" +
		"\u0955\x07\xBB\x02\x02\u0955\u0956\x07\u014F\x02\x02\u0956\u0957\x07\"" +
		"\x02\x02\u0957\u0958\x07\u01AB\x02\x02\u0958\u010D\x03\x02\x02\x02\u0959" +
		"\u095A\x07\xDC\x02\x02\u095A\u095B\x07W\x02\x02\u095B\u095C\x07\x13\x02" +
		"\x02\u095C\u095D\x07\u01AB\x02\x02\u095D\u010F\x03\x02\x02\x02\u095E\u095F" +
		"\x07\u0142\x02\x02\u095F\u0960\x07\x13\x02\x02\u0960\u0961\x07\xA2\x02" +
		"\x02\u0961\u0962\x07\u01AB\x02\x02\u0962\u0963\x07\xEA\x02\x02\u0963\u0968" +
		"\x07\u01AB\x02\x02\u0964\u0965\x07\xA1\x02\x02\u0965\u0966\x07\u01AB\x02" +
		"\x02\u0966\u0967\x07\xE9\x02\x02\u0967\u0969\x07\u01AB\x02\x02\u0968\u0964" +
		"\x03\x02\x02\x02\u0968\u0969\x03\x02\x02\x02\u0969\u0988\x03\x02\x02\x02" +
		"\u096A\u096B\x07\u0142\x02\x02\u096B\u096C\x07\"\x02\x02\u096C\u0970\x07" +
		"\u01AB\x02\x02\u096D\u096E\x07\u0184\x02\x02\u096E\u096F\x07\u012F\x02" +
		"\x02\u096F\u0971\x05\xFE\x80\x02\u0970\u096D\x03\x02\x02\x02\u0970\u0971" +
		"\x03\x02\x02\x02\u0971\u0975\x03\x02\x02\x02\u0972\u0973\x07\u0142\x02" +
		"\x02\u0973\u0974\x07\x13\x02\x02\u0974\u0976\x05\u03A0\u01D1\x02\u0975" +
		"\u0972\x03\x02\x02\x02\u0975\u0976\x03\x02\x02\x02\u0976\u0988\x03\x02" +
		"\x02\x02\u0977\u0978\x07\u0142\x02\x02\u0978\u0979\x07\"\x02\x02\u0979" +
		"\u097D\x05\u03A0\u01D1\x02\u097A\u097B\x07\u0184\x02\x02\u097B\u097C\x07" +
		"\u012F\x02\x02\u097C\u097E\x05\xFE\x80\x02\u097D\u097A\x03\x02\x02\x02" +
		"\u097D\u097E\x03\x02\x02\x02\u097E\u0982\x03\x02\x02\x02\u097F\u0980\x07" +
		"\u0142\x02\x02\u0980\u0981\x07\x13\x02\x02\u0981\u0983\x05\u03A0\u01D1" +
		"\x02\u0982\u097F\x03\x02\x02\x02\u0982\u0983\x03\x02\x02\x02\u0983\u0988" +
		"\x03\x02\x02\x02\u0984\u0985\x07\u0142\x02\x02\u0985\u0986\x07\x13\x02" +
		"\x02\u0986\u0988\x05\u03A0\u01D1\x02\u0987\u095E\x03\x02\x02\x02\u0987" +
		"\u096A\x03\x02\x02\x02\u0987\u0977\x03\x02\x02\x02\u0987\u0984\x03\x02" +
		"\x02\x02\u0988\u0111\x03\x02\x02\x02\u0989\u098A\x07\xBE\x02\x02\u098A" +
		"\u098B\x07\u01AB\x02\x02\u098B\u0113\x03\x02\x02\x02\u098C\u0991\x05\u0158" +
		"\xAD\x02\u098D\u098E\x07\u018E\x02\x02\u098E\u0990\x05\u0158\xAD\x02\u098F" +
		"\u098D\x03\x02\x02\x02\u0990\u0993\x03\x02\x02\x02\u0991\u098F\x03\x02" +
		"\x02\x02\u0991\u0992\x03\x02\x02\x02\u0992\u0115\x03\x02\x02\x02\u0993" +
		"\u0991\x03\x02\x02\x02\u0994\u0999\x05\u015A\xAE\x02\u0995\u0996\x07\u018E" +
		"\x02\x02\u0996\u0998\x05\u015A\xAE\x02\u0997\u0995\x03\x02\x02\x02\u0998" +
		"\u099B\x03\x02\x02\x02\u0999\u0997\x03\x02\x02\x02\u0999\u099A\x03\x02" +
		"\x02\x02\u099A\u0117\x03\x02\x02\x02\u099B\u0999\x03\x02\x02\x02\u099C" +
		"\u09A1\x05\u0176\xBC\x02\u099D\u099E\x07\u018E\x02\x02\u099E\u09A0\x05" +
		"\u0176\xBC\x02\u099F\u099D\x03\x02\x02\x02\u09A0\u09A3\x03\x02\x02\x02" +
		"\u09A1\u099F\x03\x02\x02\x02\u09A1\u09A2\x03\x02\x02\x02\u09A2\u0119\x03" +
		"\x02\x02\x02\u09A3\u09A1\x03\x02\x02\x02\u09A4\u09A9\x05\u011C\x8F\x02" +
		"\u09A5\u09A6\x07\u018E\x02\x02\u09A6\u09A8\x05\u011C\x8F\x02\u09A7\u09A5" +
		"\x03\x02\x02\x02\u09A8\u09AB\x03\x02\x02\x02\u09A9\u09A7\x03\x02\x02\x02" +
		"\u09A9\u09AA\x03\x02\x02\x02\u09AA\u011B\x03\x02\x02\x02\u09AB\u09A9\x03" +
		"\x02\x02\x02\u09AC\u09B1\x05\u03A0\u01D1\x02\u09AD\u09AE\x07\u018C\x02" +
		"\x02\u09AE\u09B0\x05\u03A0\u01D1\x02\u09AF\u09AD\x03\x02\x02\x02\u09B0" +
		"\u09B3\x03\x02\x02\x02\u09B1\u09AF\x03\x02\x02\x02\u09B1\u09B2\x03\x02" +
		"\x02\x02\u09B2\u011D\x03\x02\x02\x02\u09B3\u09B1\x03\x02\x02\x02\u09B4" +
		"\u09B5\x05\u03A0\u01D1\x02\u09B5\u011F\x03\x02\x02\x02\u09B6\u09C0\x05" +
		"\u011C\x8F\x02\u09B7\u09BC\x07\u018C\x02\x02\u09B8\u09BD\x07j\x02\x02" +
		"\u09B9\u09BD\x07\xB1\x02\x02\u09BA\u09BD\x07\u0178\x02\x02\u09BB\u09BD" +
		"\x05\u03A0\u01D1\x02\u09BC\u09B8\x03\x02\x02\x02\u09BC\u09B9\x03\x02\x02" +
		"\x02\u09BC\u09BA\x03\x02\x02\x02\u09BC\u09BB\x03\x02\x02\x02\u09BD\u09BF" +
		"\x03\x02\x02\x02\u09BE\u09B7\x03\x02\x02\x02\u09BF\u09C2\x03\x02\x02\x02" +
		"\u09C0\u09BE\x03\x02\x02\x02\u09C0\u09C1\x03\x02\x02\x02\u09C1\u0121\x03" +
		"\x02\x02\x02\u09C2\u09C0\x03\x02\x02\x02\u09C3\u09C8\x05\u014E\xA8\x02" +
		"\u09C4\u09C5\x07\u018E\x02\x02\u09C5\u09C7\x05\u014E\xA8\x02\u09C6\u09C4" +
		"\x03\x02\x02\x02\u09C7\u09CA\x03\x02\x02\x02\u09C8\u09C6\x03\x02\x02\x02" +
		"\u09C8\u09C9\x03\x02\x02\x02\u09C9\u0123\x03\x02\x02\x02\u09CA\u09C8\x03" +
		"\x02\x02\x02\u09CB\u09CC\x07\u0190\x02\x02\u09CC\u09CD\x05\u011A\x8E\x02" +
		"\u09CD\u09CE\x07\u0191\x02\x02\u09CE\u0125\x03\x02\x02\x02\u09CF\u09D1" +
		"\x05\u0128\x95\x02\u09D0\u09D2\x05\u012A\x96\x02\u09D1\u09D0\x03\x02\x02" +
		"\x02\u09D1\u09D2\x03\x02\x02\x02\u09D2\u09D5\x03\x02\x02\x02\u09D3\u09D5" +
		"\x05\u012C\x97\x02\u09D4\u09CF\x03\x02\x02\x02\u09D4\u09D3\x03\x02\x02" +
		"\x02\u09D5\u0127\x03\x02\x02\x02\u09D6\u09D9\x05\u03CC\u01E7\x02\u09D7" +
		"\u09D9\x05\u03CE\u01E8\x02\u09D8\u09D6\x03\x02\x02\x02\u09D8\u09D7\x03" +
		"\x02\x02\x02\u09D9\u0129\x03\x02\x02\x02\u09DA\u09DB\t\x10\x02\x02\u09DB" +
		"\u012B\x03\x02\x02\x02\u09DC\u09E0\x07o\x02\x02\u09DD\u09DE\x07\xD9\x02" +
		"\x02\u09DE\u09E0\x07o\x02\x02\u09DF\u09DC\x03\x02\x02\x02\u09DF\u09DD" +
		"\x03\x02\x02\x02\u09E0\u012D\x03\x02\x02\x02\u09E1\u09E2\t\x11\x02\x02" +
		"\u09E2\u012F\x03\x02\x02\x02\u09E3\u09E4\x079\x02\x02\u09E4\u09E6\x05" +
		"\u03A0\u01D1\x02\u09E5\u09E3\x03\x02\x02\x02\u09E5\u09E6\x03\x02\x02\x02" +
		"\u09E6\u09E7\x03\x02\x02\x02\u09E7\u09E9\x05\u0134\x9B\x02\u09E8\u09EA" +
		"\x05\u0172\xBA\x02\u09E9\u09E8\x03\x02\x02\x02\u09E9\u09EA\x03\x02\x02" +
		"\x02\u09EA\u0131\x03\x02\x02\x02\u09EB\u09EC\x079\x02\x02\u09EC\u09ED" +
		"\x05\u03A0\u01D1\x02\u09ED\u09EF\x05\u0134\x9B\x02\u09EE\u09F0\x05\u0174" +
		"\xBB\x02\u09EF\u09EE\x03\x02\x02\x02\u09EF\u09F0\x03\x02\x02\x02\u09F0" +
		"\u0133\x03\x02\x02\x02\u09F1\u09F4\x05\u0136\x9C\x02\u09F2\u09F4\x05\u0138" +
		"\x9D\x02\u09F3\u09F1\x03\x02\x02\x02\u09F3\u09F2\x03\x02\x02\x02\u09F4" +
		"\u0135\x03\x02\x02\x02\u09F5\u09F6\x05\u0170\xB9\x02\u09F6\u09F7\x05\u0124" +
		"\x93\x02\u09F7\u0137\x03\x02\x02\x02\u09F8\u09F9\x07*\x02\x02\u09F9\u09FA" +
		"\x07\u0190\x02\x02\u09FA\u09FB\x05\u033E\u01A0\x02\u09FB\u09FC\x07\u0191" +
		"\x02\x02\u09FC\u0139\x03\x02\x02\x02\u09FD\u09FE\x079\x02\x02\u09FE\u0A00" +
		"\x05\u03A0\u01D1\x02\u09FF\u09FD\x03\x02\x02\x02\u09FF\u0A00\x03\x02\x02" +
		"\x02\u0A00\u0A01\x03\x02\x02\x02\u0A01\u0A02\x07\x8A\x02\x02\u0A02\u0A03" +
		"\x07\xAF\x02\x02\u0A03\u0A04\x05\u0124\x93\x02\u0A04\u0A05\x07\u010E\x02" +
		"\x02\u0A05\u0A06\x05\u0296\u014C\x02\u0A06\u0A08\x05\u0124\x93\x02\u0A07" +
		"\u0A09\x05\u0172\xBA\x02\u0A08\u0A07\x03\x02\x02\x02\u0A08\u0A09\x03\x02" +
		"\x02\x02\u0A09\u013B\x03\x02\x02\x02\u0A0A\u0A0B\x079\x02\x02\u0A0B\u0A0C" +
		"\x05\u03A0\u01D1\x02\u0A0C\u0A0D\x07\x8A\x02\x02\u0A0D\u0A0E\x07\xAF\x02" +
		"\x02\u0A0E\u0A0F\x05\u0124\x93\x02\u0A0F\u0A10\x07\u010E\x02\x02\u0A10" +
		"\u0A11\x05\u0296\u014C\x02\u0A11\u0A13\x05\u0124\x93\x02\u0A12\u0A14\x05" +
		"\u0174\xBB\x02\u0A13\u0A12\x03\x02\x02\x02\u0A13\u0A14\x03\x02\x02\x02" +
		"\u0A14\u013D\x03\x02\x02\x02\u0A15\u0A18\x05\u0144\xA3\x02\u0A16\u0A18" +
		"\x05\u0140\xA1\x02\u0A17\u0A15\x03\x02\x02\x02\u0A17\u0A16\x03\x02\x02" +
		"\x02\u0A18\u013F\x03\x02\x02\x02\u0A19\u0A1E\x05\u0142\xA2\x02\u0A1A\u0A1B" +
		"\x07\u018E\x02\x02\u0A1B\u0A1D\x05\u0142\xA2\x02\u0A1C\u0A1A\x03\x02\x02" +
		"\x02\u0A1D\u0A20\x03\x02\x02\x02\u0A1E\u0A1C\x03\x02\x02\x02\u0A1E\u0A1F" +
		"\x03\x02\x02\x02\u0A1F\u0141\x03\x02\x02\x02\u0A20\u0A1E\x03\x02\x02\x02" +
		"\u0A21\u0A22\x07\u0190\x02\x02\u0A22\u0A23\x05\u0144\xA3\x02\u0A23\u0A24" +
		"\x07\u0191\x02\x02\u0A24\u0143\x03\x02\x02\x02\u0A25\u0A2A\x05\u0146\xA4" +
		"\x02\u0A26\u0A27\x07\u018E\x02\x02\u0A27\u0A29\x05\u0146\xA4\x02\u0A28" +
		"\u0A26\x03\x02\x02\x02\u0A29\u0A2C\x03\x02\x02\x02\u0A2A\u0A28\x03\x02" +
		"\x02\x02\u0A2A\u0A2B\x03\x02\x02\x02\u0A2B\u0145\x03\x02\x02\x02\u0A2C" +
		"\u0A2A\x03\x02\x02\x02\u0A2D\u0A2E\x05\u0326\u0194\x02\u0A2E\u0147\x03" +
		"\x02\x02\x02\u0A2F\u0A32\x05\u0146\xA4\x02\u0A30\u0A32\x05\u0142\xA2\x02" +
		"\u0A31\u0A2F\x03\x02\x02\x02\u0A31\u0A30\x03\x02\x02\x02\u0A32\u0149\x03" +
		"\x02\x02\x02\u0A33\u0A34\t\x12\x02\x02\u0A34\u014B\x03\x02\x02\x02\u0A35" +
		"\u0A36\x07\xDD\x02\x02\u0A36\u0A37\t\x13\x02\x02\u0A37\u014D\x03\x02\x02" +
		"\x02\u0A38\u0A3A\x05\u011C\x8F\x02\u0A39\u0A3B\x05\u014A\xA6\x02\u0A3A" +
		"\u0A39\x03\x02\x02\x02\u0A3A\u0A3B\x03\x02\x02\x02\u0A3B\u0A3D\x03\x02" +
		"\x02\x02\u0A3C\u0A3E\x05\u014C\xA7\x02\u0A3D\u0A3C\x03\x02\x02\x02\u0A3D" +
		"\u0A3E\x03\x02\x02\x02\u0A3E\u014F\x03\x02\x02\x02\u0A3F\u0A44\x05\u0152" +
		"\xAA\x02\u0A40\u0A41\x07\u018E\x02\x02\u0A41\u0A43\x05\u0152\xAA\x02\u0A42" +
		"\u0A40\x03\x02\x02\x02\u0A43\u0A46\x03\x02\x02\x02\u0A44\u0A42\x03\x02" +
		"\x02\x02\u0A44\u0A45\x03\x02\x02\x02\u0A45\u0151\x03\x02\x02\x02\u0A46" +
		"\u0A44\x03\x02\x02\x02\u0A47\u0A4A\x05\u011E\x90\x02\u0A48\u0A49\x071" +
		"\x02\x02\u0A49\u0A4B\x07\u01AB\x02\x02\u0A4A\u0A48\x03\x02\x02\x02\u0A4A" +
		"\u0A4B\x03\x02\x02\x02\u0A4B\u0153\x03\x02\x02\x02\u0A4C\u0A4D\t\x12\x02" +
		"\x02\u0A4D\u0155\x03\x02\x02\x02\u0A4E\u0A51\x05\u011C\x8F\x02\u0A4F\u0A51" +
		"\x05\u033E\u01A0\x02\u0A50\u0A4E\x03\x02\x02\x02\u0A50\u0A4F\x03\x02\x02" +
		"\x02\u0A51\u0A53\x03\x02\x02\x02\u0A52\u0A54\x05\u0154\xAB\x02\u0A53\u0A52" +
		"\x03\x02\x02\x02\u0A53\u0A54\x03\x02\x02\x02\u0A54\u0A56\x03\x02\x02\x02" +
		"\u0A55\u0A57\x05\u014C\xA7\x02\u0A56\u0A55\x03\x02\x02\x02\u0A56\u0A57" +
		"\x03\x02\x02\x02\u0A57\u0157\x03\x02\x02\x02\u0A58\u0A59\x05\u011E\x90" +
		"\x02\u0A59\u0A5C\x05\u0178\xBD\x02\u0A5A\u0A5B\x071\x02\x02\u0A5B\u0A5D" +
		"\x07\u01AB\x02\x02\u0A5C\u0A5A\x03\x02\x02\x02\u0A5C\u0A5D\x03\x02\x02" +
		"\x02\u0A5D\u0159\x03\x02\x02\x02\u0A5E\u0A61\x05\u015C\xAF\x02\u0A5F\u0A61" +
		"\x05\u015E\xB0\x02\u0A60\u0A5E\x03\x02\x02\x02\u0A60\u0A5F\x03\x02\x02" +
		"\x02\u0A61\u015B\x03\x02\x02\x02\u0A62\u0A65\x05\u013A\x9E\x02\u0A63\u0A65" +
		"\x05\u0130\x99\x02\u0A64\u0A62\x03\x02\x02\x02\u0A64\u0A63\x03\x02\x02" +
		"\x02\u0A65\u015D\x03\x02\x02\x02\u0A66\u0A67\x05\u011E\x90\x02\u0A67\u0A69" +
		"\x05\u0178\xBD\x02\u0A68\u0A6A\x05\u0160\xB1\x02\u0A69\u0A68\x03\x02\x02" +
		"\x02\u0A69\u0A6A\x03\x02\x02\x02\u0A6A\u0A6D\x03\x02\x02\x02\u0A6B\u0A6C" +
		"\x071\x02\x02\u0A6C\u0A6E\x07\u01AB\x02\x02\u0A6D\u0A6B\x03\x02\x02\x02" +
		"\u0A6D\u0A6E\x03\x02\x02\x02\u0A6E\u015F\x03\x02\x02\x02\u0A6F\u0A72\x05" +
		"\u0162\xB2\x02\u0A70\u0A72\x05\u0164\xB3\x02\u0A71\u0A6F\x03\x02\x02\x02" +
		"\u0A71\u0A70\x03\x02\x02\x02\u0A72\u0161\x03\x02\x02\x02\u0A73\u0A74\x07" +
		"9\x02\x02\u0A74\u0A76\x05\u03A0\u01D1\x02\u0A75\u0A73\x03\x02\x02\x02" +
		"\u0A75\u0A76\x03\x02\x02\x02\u0A76\u0A77\x03\x02\x02\x02\u0A77\u0A78\x07" +
		"\u010E\x02\x02\u0A78\u0A79\x05\u0296\u014C\x02\u0A79\u0A7A\x07\u0190\x02" +
		"\x02\u0A7A\u0A7B\x05\u011C\x8F\x02\u0A7B\u0A7D\x07\u0191\x02\x02\u0A7C" +
		"\u0A7E\x05\u0172\xBA\x02\u0A7D\u0A7C\x03\x02\x02\x02\u0A7D\u0A7E\x03\x02" +
		"\x02\x02\u0A7E\u0163\x03\x02\x02\x02\u0A7F\u0A80\x079\x02\x02\u0A80\u0A82" +
		"\x05\u03A0\u01D1\x02\u0A81\u0A7F\x03\x02\x02\x02\u0A81\u0A82\x03\x02\x02" +
		"\x02\u0A82\u0A83\x03\x02\x02\x02\u0A83\u0A85\x05\u016C\xB7\x02\u0A84\u0A86" +
		"\x05\u0172\xBA\x02\u0A85\u0A84\x03\x02\x02\x02\u0A85\u0A86\x03\x02\x02" +
		"\x02\u0A86\u0165\x03\x02\x02\x02\u0A87\u0A8A\x05\u0168\xB5\x02\u0A88\u0A8A" +
		"\x05\u016A\xB6\x02\u0A89\u0A87\x03\x02\x02\x02\u0A89\u0A88\x03\x02\x02" +
		"\x02\u0A8A\u0167\x03\x02\x02\x02\u0A8B\u0A8C\x079\x02\x02\u0A8C\u0A8E" +
		"\x05\u03A0\u01D1\x02\u0A8D\u0A8B\x03\x02\x02\x02\u0A8D\u0A8E\x03\x02\x02" +
		"\x02\u0A8E\u0A8F\x03\x02\x02\x02\u0A8F\u0A90\x07\u010E\x02\x02\u0A90\u0A91" +
		"\x05\u0296\u014C\x02\u0A91\u0A92\x07\u0190\x02\x02\u0A92\u0A93\x05\u011C" +
		"\x8F\x02\u0A93\u0A95\x07\u0191\x02\x02\u0A94\u0A96\x05\u0174\xBB\x02\u0A95" +
		"\u0A94\x03\x02\x02\x02\u0A95\u0A96\x03\x02\x02\x02\u0A96\u0169\x03\x02" +
		"\x02\x02\u0A97\u0A98\x079\x02\x02\u0A98\u0A9A\x05\u03A0\u01D1\x02\u0A99" +
		"\u0A97\x03\x02\x02\x02\u0A99\u0A9A\x03\x02\x02\x02\u0A9A\u0A9B\x03\x02" +
		"\x02\x02\u0A9B\u0A9D\x05\u016C\xB7\x02\u0A9C\u0A9E\x05\u0174\xBB\x02\u0A9D" +
		"\u0A9C\x03\x02\x02\x02\u0A9D\u0A9E\x03\x02\x02\x02\u0A9E\u016B\x03\x02" +
		"\x02\x02\u0A9F\u0AA0\x07\xD9\x02\x02\u0AA0\u0AA6\x07\xDC\x02\x02\u0AA1" +
		"\u0AA2\x07U\x02\x02\u0AA2\u0AA6\x05\u016E\xB8\x02\u0AA3\u0AA6\x05\u0138" +
		"\x9D\x02\u0AA4\u0AA6\x05\u0170\xB9\x02\u0AA5\u0A9F\x03\x02\x02\x02\u0AA5" +
		"\u0AA1\x03\x02\x02\x02\u0AA5\u0AA3\x03\x02\x02\x02\u0AA5\u0AA4\x03\x02" +
		"\x02\x02\u0AA6\u016D\x03\x02\x02\x02\u0AA7\u0AAB\x05\u0326\u0194\x02\u0AA8" +
		"\u0AAB\x05\u030A\u0186\x02\u0AA9\u0AAB\x05\u0318\u018D\x02\u0AAA\u0AA7" +
		"\x03\x02\x02\x02\u0AAA\u0AA8\x03\x02\x02\x02\u0AAA\u0AA9\x03\x02\x02\x02" +
		"\u0AAB\u016F\x03\x02\x02\x02\u0AAC\u0AAD\x07\xFC\x02\x02\u0AAD\u0AB0\x07" +
		"\xAF\x02\x02\u0AAE\u0AB0\x07\u0167\x02\x02\u0AAF\u0AAC\x03\x02\x02\x02" +
		"\u0AAF\u0AAE\x03\x02\x02\x02\u0AB0\u0171\x03\x02\x02\x02\u0AB1\u0AB3\x05" +
		"\u0126\x94\x02\u0AB2\u0AB4\x05\u012E\x98\x02\u0AB3\u0AB2\x03\x02\x02\x02" +
		"\u0AB3\u0AB4\x03\x02\x02\x02\u0AB4\u0173\x03\x02\x02\x02\u0AB5\u0AB7\x05" +
		"\u0126\x94\x02\u0AB6\u0AB8\x05\u012E\x98\x02\u0AB7\u0AB6\x03\x02\x02\x02" +
		"\u0AB7\u0AB8\x03\x02\x02\x02\u0AB8\u0175\x03\x02\x02\x02\u0AB9\u0ABA\x05" +
		"\u011E\x90\x02\u0ABA\u0ABB\x07\u018D\x02\x02\u0ABB\u0ABE\x05\u0178\xBD" +
		"\x02\u0ABC\u0ABD\x071\x02\x02\u0ABD\u0ABF\x07\u01AB\x02\x02\u0ABE\u0ABC" +
		"\x03\x02\x02\x02\u0ABE\u0ABF\x03\x02\x02\x02\u0ABF\u0177\x03\x02\x02\x02" +
		"\u0AC0\u0AC1\x05\u017C\xBF\x02\u0AC1\u0179\x03\x02\x02\x02\u0AC2\u0AC7" +
		"\x05\u0178\xBD\x02\u0AC3\u0AC4\x07\u018E\x02\x02\u0AC4\u0AC6\x05\u0178" +
		"\xBD\x02\u0AC5\u0AC3\x03\x02\x02\x02\u0AC6\u0AC9\x03\x02\x02\x02\u0AC7" +
		"\u0AC5\x03\x02\x02\x02\u0AC7\u0AC8\x03\x02\x02\x02\u0AC8\u017B\x03\x02" +
		"\x02\x02\u0AC9\u0AC7\x03\x02\x02\x02\u0ACA\u0AD0\x05\u017E\xC0\x02\u0ACB" +
		"\u0AD0\x05\u0180\xC1\x02\u0ACC\u0AD0\x05\u0182\xC2\x02\u0ACD\u0AD0\x05" +
		"\u0184\xC3\x02\u0ACE\u0AD0\x05\u0186\xC4\x02\u0ACF\u0ACA\x03\x02\x02\x02" +
		"\u0ACF\u0ACB\x03\x02\x02\x02\u0ACF\u0ACC\x03\x02\x02\x02\u0ACF\u0ACD\x03" +
		"\x02\x02\x02\u0ACF\u0ACE\x03\x02\x02\x02\u0AD0\u017D\x03\x02\x02\x02\u0AD1" +
		"\u0AF7\x07\u0155\x02\x02\u0AD2\u0AF7\x07\u0138\x02\x02\u0AD3\u0AF7\x07" +
		"\xA4\x02\x02\u0AD4\u0AF7\x07\xA5\x02\x02\u0AD5\u0AF7\x07\x1C\x02\x02\u0AD6" +
		"\u0AF7\x07\x1E\x02\x02\u0AD7\u0AF7\x07\x85\x02\x02\u0AD8\u0AF7\x07\u0109" +
		"\x02\x02\u0AD9\u0ADB\x07f\x02\x02\u0ADA\u0ADC\x07\xF9\x02\x02\u0ADB\u0ADA" +
		"\x03\x02\x02\x02\u0ADB\u0ADC\x03\x02\x02\x02\u0ADC\u0AF7\x03\x02\x02\x02" +
		"\u0ADD\u0AF7\x07I\x02\x02\u0ADE\u0AF7\x07J\x02\x02\u0ADF\u0AF7\x07\u0152" +
		"\x02\x02\u0AE0\u0AF7\x07\u0153\x02\x02\u0AE1\u0AE2\x07\u0152\x02\x02\u0AE2" +
		"\u0AE3\x07\u0184\x02\x02\u0AE3\u0AE4\x07\xBD\x02\x02\u0AE4\u0AE5\x07\u0151" +
		"\x02\x02\u0AE5\u0AF7\x07\u018B\x02\x02\u0AE6\u0AF7\x07\u0144\x02\x02\u0AE7" +
		"\u0AF7\x07\x1D\x02\x02\u0AE8\u0AF0\x05\u03E0\u01F1\x02\u0AE9\u0AEA\x07" +
		"\u0190\x02\x02\u0AEA\u0AED\x07\u01B0\x02\x02\u0AEB\u0AEC\x07\u018E\x02" +
		"\x02\u0AEC\u0AEE\x07\u01B0\x02\x02\u0AED\u0AEB\x03\x02\x02\x02\u0AED\u0AEE" +
		"\x03\x02\x02\x02\u0AEE\u0AEF\x03\x02\x02\x02\u0AEF\u0AF1\x07\u0191\x02" +
		"\x02\u0AF0\u0AE9\x03\x02\x02\x02\u0AF0\u0AF1\x03\x02\x02\x02\u0AF1\u0AF7" +
		"\x03\x02\x02\x02\u0AF2\u0AF3\t\x14\x02\x02\u0AF3\u0AF4\x07\u0190\x02\x02" +
		"\u0AF4\u0AF5\x07\u01B0\x02\x02\u0AF5\u0AF7\x07\u0191\x02\x02\u0AF6\u0AD1" +
		"\x03\x02\x02\x02\u0AF6\u0AD2\x03\x02\x02\x02\u0AF6\u0AD3\x03\x02\x02\x02" +
		"\u0AF6\u0AD4\x03\x02\x02\x02\u0AF6\u0AD5\x03\x02\x02\x02\u0AF6\u0AD6\x03" +
		"\x02\x02\x02\u0AF6\u0AD7\x03\x02\x02\x02\u0AF6\u0AD8\x03\x02\x02\x02\u0AF6" +
		"\u0AD9\x03\x02\x02\x02\u0AF6\u0ADD\x03\x02\x02\x02\u0AF6\u0ADE\x03\x02" +
		"\x02\x02\u0AF6\u0ADF\x03\x02\x02\x02\u0AF6\u0AE0\x03\x02\x02\x02\u0AF6" +
		"\u0AE1\x03\x02\x02\x02\u0AF6\u0AE6\x03\x02\x02\x02\u0AF6\u0AE7\x03\x02" +
		"\x02\x02\u0AF6\u0AE8\x03\x02\x02\x02\u0AF6\u0AF2\x03\x02\x02\x02\u0AF7" +
		"\u017F\x03\x02\x02\x02\u0AF8\u0AF9\x07\x12\x02\x02\u0AF9\u0AFA\x07\u019A" +
		"\x02\x02\u0AFA\u0AFB\x05\u017C\xBF\x02\u0AFB\u0AFC\x07\u019C\x02\x02\u0AFC" +
		"\u0181\x03\x02\x02\x02\u0AFD\u0AFE\x07\u0145\x02\x02\u0AFE\u0AFF\x07\u019A" +
		"\x02\x02\u0AFF\u0B00\x05\u0118\x8D\x02\u0B00\u0B01\x07\u019C\x02\x02\u0B01" +
		"\u0183\x03\x02\x02\x02\u0B02\u0B03\x07\xC7\x02\x02\u0B03\u0B04\x07\u019A" +
		"\x02\x02\u0B04\u0B05\x05\u017E\xC0\x02\u0B05\u0B06\x07\u018E\x02\x02\u0B06" +
		"\u0B07\x05\u017C\xBF\x02\u0B07\u0B08\x07\u019C\x02\x02\u0B08\u0185\x03" +
		"\x02\x02\x02\u0B09\u0B0A\x07\u0166\x02\x02\u0B0A\u0B0B\x07\u019A\x02\x02" +
		"\u0B0B\u0B0C\x05\u017A\xBE\x02\u0B0C\u0B0D\x07\u019C\x02\x02\u0B0D\u0187" +
		"\x03\x02\x02\x02\u0B0E\u0B10\t\x15\x02\x02\u0B0F\u0B11\t\x16\x02\x02\u0B10" +
		"\u0B0F\x03\x02\x02\x02\u0B10\u0B11\x03\x02\x02\x02\u0B11\u0189\x03\x02" +
		"\x02\x02\u0B12\u0B14\x05\u018E\xC8\x02\u0B13\u0B12\x03\x02\x02\x02\u0B13" +
		"\u0B14\x03\x02\x02\x02\u0B14\u0B15\x03\x02\x02\x02\u0B15\u0B16\x05\u018C" +
		"\xC7\x02\u0B16\u018B\x03\x02\x02\x02\u0B17\u0B1A\x05\u0192\xCA\x02\u0B18" +
		"\u0B1A\x05\u0196\xCC\x02\u0B19\u0B17\x03\x02\x02\x02\u0B19\u0B18\x03\x02" +
		"\x02\x02\u0B1A\u018D\x03\x02\x02\x02\u0B1B\u0B1C\x07\u0184\x02\x02\u0B1C" +
		"\u0B21\x05\u0190\xC9\x02\u0B1D\u0B1E\x07\u018E\x02\x02\u0B1E\u0B20\x05" +
		"\u0190\xC9\x02\u0B1F\u0B1D\x03\x02\x02\x02\u0B20\u0B23\x03\x02\x02\x02" +
		"\u0B21\u0B1F\x03\x02\x02\x02\u0B21\u0B22\x03\x02\x02\x02\u0B22\u018F\x03" +
		"\x02\x02\x02\u0B23\u0B21\x03\x02\x02\x02\u0B24\u0B29\x05\u03A0\u01D1\x02" +
		"\u0B25\u0B26\x07\u0190\x02\x02\u0B26\u0B27\x05\u011A\x8E\x02\u0B27\u0B28" +
		"\x07\u0191\x02\x02\u0B28\u0B2A\x03\x02\x02\x02\u0B29\u0B25\x03\x02\x02" +
		"\x02\u0B29\u0B2A\x03\x02\x02\x02\u0B2A\u0B2B\x03\x02\x02\x02\u0B2B\u0B2C" +
		"\x07\x13\x02\x02\u0B2C\u0B2D\x07\u0190\x02\x02\u0B2D\u0B2E\x05\u018A\xC6" +
		"\x02\u0B2E\u0B2F\x07\u0191\x02\x02\u0B2F\u0191\x03\x02\x02\x02\u0B30\u0B36" +
		"\x05\u0194\xCB\x02\u0B31\u0B32\x05\u0188\xC5\x02\u0B32\u0B33\x05\u0194" +
		"\xCB\x02\u0B33\u0B35\x03\x02\x02\x02\u0B34\u0B31\x03\x02\x02\x02\u0B35" +
		"\u0B38\x03\x02\x02\x02\u0B36\u0B34\x03\x02\x02\x02\u0B36\u0B37\x03\x02" +
		"\x02\x02\u0B37\u0193\x03\x02\x02\x02\u0B38\u0B36\x03\x02\x02\x02\u0B39" +
		"\u0B3B\x05\u026E\u0138\x02\u0B3A\u0B3C\x05\u01A0\xD1\x02\u0B3B\u0B3A\x03" +
		"\x02\x02\x02\u0B3C\u0B3D\x03\x02\x02\x02\u0B3D\u0B3B\x03\x02\x02\x02\u0B3D" +
		"\u0B3E\x03\x02\x02\x02\u0B3E\u0195\x03\x02\x02\x02\u0B3F\u0B40\x05\u01A2" +
		"\xD2\x02\u0B40\u0B41\x05\u019A\xCE\x02\u0B41\u0B44\x03\x02\x02\x02\u0B42" +
		"\u0B44\x05\u019A\xCE\x02";
	private static readonly _serializedATNSegment6: string =
		"\u0B43\u0B3F\x03\x02\x02\x02\u0B43\u0B42\x03\x02\x02\x02\u0B44\u0197\x03" +
		"\x02\x02\x02\u0B45\u0B47\x05\u02B6\u015C\x02\u0B46\u0B48\x05\u026E\u0138" +
		"\x02\u0B47\u0B46\x03\x02\x02\x02\u0B47\u0B48\x03\x02\x02\x02\u0B48\u0B4A" +
		"\x03\x02\x02\x02\u0B49\u0B4B\x05\u02A6\u0154\x02\u0B4A\u0B49\x03\x02\x02" +
		"\x02\u0B4A\u0B4B\x03\x02\x02\x02\u0B4B\u0B4D\x03\x02\x02\x02\u0B4C\u0B4E" +
		"\x05\u02D6\u016C\x02\u0B4D\u0B4C\x03\x02\x02\x02\u0B4D\u0B4E\x03\x02\x02" +
		"\x02\u0B4E\u0B50\x03\x02\x02\x02\u0B4F\u0B51\x05\u02E6\u0174\x02\u0B50" +
		"\u0B4F\x03\x02\x02\x02\u0B50\u0B51\x03\x02\x02\x02\u0B51\u0B53\x03\x02" +
		"\x02\x02\u0B52\u0B54\x05\u02C6\u0164\x02\u0B53\u0B52\x03\x02\x02\x02\u0B53" +
		"\u0B54\x03\x02\x02\x02\u0B54\u0B56\x03\x02\x02\x02\u0B55\u0B57\x05\u02E8" +
		"\u0175\x02\u0B56\u0B55\x03\x02\x02\x02\u0B56\u0B57\x03\x02\x02\x02\u0B57" +
		"\u0B5E\x03\x02\x02\x02\u0B58\u0B59\x07\u0190\x02\x02\u0B59\u0B5A\x05\u019A" +
		"\xCE\x02\u0B5A\u0B5B\x07\u0191\x02\x02\u0B5B\u0B5E\x03\x02\x02\x02\u0B5C" +
		"\u0B5E\x05\u02AA\u0156\x02\u0B5D\u0B45\x03\x02\x02\x02\u0B5D\u0B58\x03" +
		"\x02\x02\x02\u0B5D\u0B5C\x03\x02\x02\x02\u0B5E\u0199\x03\x02\x02\x02\u0B5F" +
		"\u0B61\x05\u0198\xCD\x02\u0B60\u0B62\x05\u019C\xCF\x02\u0B61\u0B60\x03" +
		"\x02\x02\x02\u0B61\u0B62\x03\x02\x02\x02\u0B62\u0B64\x03\x02\x02\x02\u0B63" +
		"\u0B65\x05\u02FE\u0180\x02\u0B64\u0B63\x03\x02\x02\x02\u0B64\u0B65\x03" +
		"\x02\x02\x02\u0B65\u0B67\x03\x02\x02\x02\u0B66\u0B68\x05\u0300\u0181\x02" +
		"\u0B67\u0B66\x03\x02\x02\x02\u0B67\u0B68\x03\x02\x02\x02\u0B68\u0B6A\x03" +
		"\x02\x02\x02\u0B69\u0B6B\x05\u0304\u0183\x02\u0B6A\u0B69\x03\x02\x02\x02" +
		"\u0B6A\u0B6B\x03\x02\x02\x02\u0B6B\u0B6D\x03\x02\x02\x02\u0B6C\u0B6E\x05" +
		"\u0306\u0184\x02\u0B6D\u0B6C\x03\x02\x02\x02\u0B6D\u0B6E\x03\x02\x02\x02" +
		"\u0B6E\u0B70\x03\x02\x02\x02\u0B6F\u0B71\x05\u01A6\xD4\x02\u0B70\u0B6F" +
		"\x03\x02\x02\x02\u0B70\u0B71\x03\x02\x02\x02\u0B71\u019B\x03\x02\x02\x02" +
		"\u0B72\u0B73\x05\u0188\xC5\x02\u0B73\u0B74\x05\u0198\xCD\x02\u0B74\u0B76" +
		"\x03\x02\x02\x02\u0B75\u0B72\x03\x02\x02\x02\u0B76\u0B77\x03\x02\x02\x02" +
		"\u0B77\u0B75\x03\x02\x02\x02\u0B77\u0B78\x03\x02\x02\x02\u0B78\u019D\x03" +
		"\x02\x02\x02\u0B79\u0B7B\x05\u018E\xC8\x02\u0B7A\u0B79\x03\x02\x02\x02" +
		"\u0B7A\u0B7B\x03\x02\x02\x02\u0B7B\u0B7C\x03\x02\x02\x02\u0B7C\u0B7D\x05" +
		"\u019A\xCE\x02\u0B7D\u019F\x03\x02\x02\x02\u0B7E\u0B7F\x05\u01A2\xD2\x02" +
		"\u0B7F\u0B81\x05\u02B6\u015C\x02\u0B80\u0B82\x05\u0280\u0141\x02\u0B81" +
		"\u0B80\x03\x02\x02\x02\u0B81\u0B82\x03\x02\x02\x02\u0B82\u0B84\x03\x02" +
		"\x02\x02\u0B83\u0B85\x05\u02A6\u0154\x02\u0B84\u0B83\x03\x02\x02\x02\u0B84" +
		"\u0B85\x03\x02\x02\x02\u0B85\u0B87\x03\x02\x02\x02\u0B86\u0B88\x05\u02D6" +
		"\u016C\x02\u0B87\u0B86\x03\x02\x02\x02\u0B87\u0B88\x03\x02\x02\x02\u0B88" +
		"\u0B8A\x03\x02\x02\x02\u0B89\u0B8B\x05\u02E6\u0174\x02\u0B8A\u0B89\x03" +
		"\x02\x02\x02\u0B8A\u0B8B\x03\x02\x02\x02\u0B8B\u0B8D\x03\x02\x02\x02\u0B8C" +
		"\u0B8E\x05\u02C6\u0164\x02\u0B8D\u0B8C\x03\x02\x02\x02\u0B8D\u0B8E\x03" +
		"\x02\x02\x02\u0B8E\u0B90\x03\x02\x02\x02\u0B8F\u0B91\x05\u02E8\u0175\x02" +
		"\u0B90\u0B8F\x03\x02\x02\x02\u0B90\u0B91\x03\x02\x02\x02\u0B91\u0B93\x03" +
		"\x02\x02\x02\u0B92\u0B94\x05\u02FE\u0180\x02\u0B93\u0B92\x03\x02\x02\x02" +
		"\u0B93\u0B94\x03\x02\x02\x02\u0B94\u0B96\x03\x02\x02\x02\u0B95\u0B97\x05" +
		"\u0300\u0181\x02\u0B96\u0B95\x03\x02\x02\x02\u0B96\u0B97\x03\x02\x02\x02" +
		"\u0B97\u0B99\x03\x02\x02\x02\u0B98\u0B9A\x05\u0304\u0183\x02\u0B99\u0B98" +
		"\x03\x02\x02\x02\u0B99\u0B9A\x03\x02\x02\x02\u0B9A\u0B9C\x03\x02\x02\x02" +
		"\u0B9B\u0B9D\x05\u0306\u0184\x02\u0B9C\u0B9B\x03\x02\x02\x02\u0B9C\u0B9D" +
		"\x03\x02\x02\x02\u0B9D\u0B9F\x03\x02\x02\x02\u0B9E\u0BA0\x05\u01A6\xD4" +
		"\x02\u0B9F\u0B9E\x03\x02\x02\x02\u0B9F\u0BA0\x03\x02\x02\x02\u0BA0\u0BC4" +
		"\x03\x02\x02\x02\u0BA1\u0BA3\x05\u02B6\u015C\x02\u0BA2\u0BA4\x05\u0280" +
		"\u0141\x02\u0BA3\u0BA2\x03\x02\x02\x02\u0BA3\u0BA4\x03\x02\x02\x02\u0BA4" +
		"\u0BA6\x03\x02\x02\x02\u0BA5\u0BA7\x05\u02A6\u0154\x02\u0BA6\u0BA5\x03" +
		"\x02\x02\x02\u0BA6\u0BA7\x03\x02\x02\x02\u0BA7\u0BA9\x03\x02\x02\x02\u0BA8" +
		"\u0BAA\x05\u02D6\u016C\x02\u0BA9\u0BA8\x03\x02\x02\x02\u0BA9\u0BAA\x03" +
		"\x02\x02\x02\u0BAA\u0BAC\x03\x02\x02\x02\u0BAB\u0BAD\x05\u02E6\u0174\x02" +
		"\u0BAC\u0BAB\x03\x02\x02\x02\u0BAC\u0BAD\x03\x02\x02\x02\u0BAD\u0BAF\x03" +
		"\x02\x02\x02\u0BAE\u0BB0\x05\u02C6\u0164\x02\u0BAF\u0BAE\x03\x02\x02\x02" +
		"\u0BAF\u0BB0\x03\x02\x02\x02\u0BB0\u0BB2\x03\x02\x02\x02\u0BB1\u0BB3\x05" +
		"\u02E8\u0175\x02\u0BB2\u0BB1\x03\x02\x02\x02\u0BB2\u0BB3\x03\x02\x02\x02" +
		"\u0BB3\u0BB5\x03\x02\x02\x02\u0BB4\u0BB6\x05\u02FE\u0180\x02\u0BB5\u0BB4" +
		"\x03\x02\x02\x02\u0BB5\u0BB6\x03\x02\x02\x02\u0BB6\u0BB8\x03\x02\x02\x02" +
		"\u0BB7\u0BB9\x05\u0300\u0181\x02\u0BB8\u0BB7\x03\x02\x02\x02\u0BB8\u0BB9" +
		"\x03\x02\x02\x02\u0BB9\u0BBB\x03\x02\x02\x02\u0BBA\u0BBC\x05\u0304\u0183" +
		"\x02\u0BBB\u0BBA\x03\x02\x02\x02\u0BBB\u0BBC\x03\x02\x02\x02\u0BBC\u0BBE" +
		"\x03\x02\x02\x02\u0BBD\u0BBF\x05\u0306\u0184\x02\u0BBE\u0BBD\x03\x02\x02" +
		"\x02\u0BBE\u0BBF\x03\x02\x02\x02\u0BBF\u0BC1\x03\x02\x02\x02\u0BC0\u0BC2" +
		"\x05\u01A6\xD4\x02\u0BC1\u0BC0\x03\x02\x02\x02\u0BC1\u0BC2\x03\x02\x02" +
		"\x02\u0BC2\u0BC4\x03\x02\x02\x02\u0BC3\u0B7E\x03\x02\x02\x02\u0BC3\u0BA1" +
		"\x03\x02\x02\x02\u0BC4\u01A1\x03\x02\x02\x02\u0BC5\u0BD6\x07\xA3\x02\x02" +
		"\u0BC6\u0BC7\x07\xEC\x02\x02\u0BC7\u0BC9\x05\u01A4\xD3\x02\u0BC8\u0BCA" +
		"\x05.\x18\x02\u0BC9\u0BC8\x03\x02\x02\x02\u0BC9\u0BCA\x03\x02\x02\x02" +
		"\u0BCA\u0BD7\x03\x02\x02\x02\u0BCB\u0BCD\x07\xA8\x02\x02\u0BCC\u0BCE\x07" +
		"\u014A\x02\x02\u0BCD\u0BCC\x03\x02\x02\x02\u0BCD\u0BCE\x03\x02\x02\x02" +
		"\u0BCE\u0BCF\x03\x02\x02\x02\u0BCF\u0BD4\x05\u0390\u01C9\x02\u0BD0\u0BD1" +
		"\x07\u0190\x02\x02\u0BD1\u0BD2\x05\u011A\x8E\x02\u0BD2\u0BD3\x07\u0191" +
		"\x02\x02\u0BD3\u0BD5\x03\x02\x02\x02\u0BD4\u0BD0\x03\x02\x02\x02\u0BD4" +
		"\u0BD5\x03\x02\x02\x02\u0BD5\u0BD7\x03\x02\x02\x02\u0BD6\u0BC6\x03\x02" +
		"\x02\x02\u0BD6\u0BCB\x03\x02\x02\x02\u0BD7\u01A3\x03\x02\x02\x02\u0BD8" +
		"\u0BDA\x07\xBD\x02\x02\u0BD9\u0BD8\x03\x02\x02\x02\u0BD9\u0BDA\x03\x02" +
		"\x02\x02\u0BDA\u0BDB\x03\x02\x02\x02\u0BDB\u0BDC\x07_\x02\x02\u0BDC\u0BDE" +
		"\x07\u01AB\x02\x02\u0BDD\u0BDF\x05\xFA~\x02\u0BDE\u0BDD\x03\x02\x02\x02" +
		"\u0BDE\u0BDF\x03\x02\x02\x02\u0BDF\u0BE1\x03\x02\x02\x02\u0BE0\u0BE2\x05" +
		"\u0110\x89\x02\u0BE1\u0BE0\x03\x02\x02\x02\u0BE1\u0BE2\x03\x02\x02\x02" +
		"\u0BE2\u0BE6\x03\x02\x02\x02\u0BE3\u0BE4\x07\u014A\x02\x02\u0BE4\u0BE6" +
		"\x05\u0390\u01C9\x02\u0BE5\u0BD9\x03\x02\x02\x02\u0BE5\u0BE3\x03\x02\x02" +
		"\x02\u0BE6\u01A5\x03\x02\x02\x02\u0BE7\u0BF0\x07\xBA\x02\x02\u0BE8\u0BE9" +
		"\x07\u01B0\x02\x02\u0BE9\u0BEB\x07\u018E\x02\x02\u0BEA\u0BE8\x03\x02\x02" +
		"\x02\u0BEA\u0BEB\x03\x02\x02\x02\u0BEB\u0BEC\x03\x02\x02\x02\u0BEC\u0BF1" +
		"\x07\u01B0\x02\x02\u0BED\u0BEE\x07\u01B0\x02\x02\u0BEE\u0BEF\x07\xE0\x02" +
		"\x02\u0BEF\u0BF1\x07\u01B0\x02\x02\u0BF0\u0BEA\x03\x02\x02\x02\u0BF0\u0BED" +
		"\x03\x02\x02\x02\u0BF1\u01A7\x03\x02\x02\x02\u0BF2\u0BF3\x07X\x02\x02" +
		"\u0BF3\u0BF4\x07\x8D\x02\x02\u0BF4\u0BF6\x05\u0296\u014C\x02\u0BF5\u0BF7" +
		"\x05\u02A6\u0154\x02\u0BF6\u0BF5\x03\x02\x02\x02\u0BF6\u0BF7\x03\x02\x02" +
		"\x02\u0BF7\u01A9\x03\x02\x02\x02\u0BF8\u0BF9\x05\u011C\x8F\x02\u0BF9\u0BFA" +
		"\x07\u0196\x02\x02\u0BFA\u0BFB\x05\u01AC\xD7\x02\u0BFB\u01AB\x03\x02\x02" +
		"\x02\u0BFC\u0BFF\x05\u0268\u0135\x02\u0BFD\u0BFF\x05\u0352\u01AA\x02\u0BFE" +
		"\u0BFC\x03\x02\x02\x02\u0BFE\u0BFD\x03\x02\x02\x02\u0BFF\u01AD\x03\x02" +
		"\x02\x02\u0C00\u0C01\x07\u0131\x02\x02\u0C01\u0C06\x05\u01AA\xD6\x02\u0C02" +
		"\u0C03\x07\u018E\x02\x02\u0C03\u0C05\x05\u01AA\xD6\x02\u0C04\u0C02\x03" +
		"\x02\x02\x02\u0C05\u0C08\x03\x02\x02\x02\u0C06\u0C04\x03\x02\x02\x02\u0C06" +
		"\u0C07\x03\x02\x02\x02\u0C07\u01AF\x03\x02\x02\x02\u0C08\u0C06\x03\x02" +
		"\x02\x02\u0C09\u0C0A\x07\u016E\x02\x02\u0C0A\u0C0B\x05\u0296\u014C\x02" +
		"\u0C0B\u0C0D\x05\u01AE\xD8\x02\u0C0C\u0C0E\x05\u02A6\u0154\x02\u0C0D\u0C0C" +
		"\x03\x02\x02\x02\u0C0D\u0C0E\x03\x02\x02\x02\u0C0E\u01B1\x03\x02\x02\x02" +
		"\u0C0F\u0C14\x05\u01B4\xDB\x02\u0C10\u0C14\x05\u01BE\xE0\x02\u0C11\u0C14" +
		"\x05\u01C0\xE1\x02\u0C12\u0C14\x05\u01C2\xE2\x02\u0C13\u0C0F\x03\x02\x02" +
		"\x02\u0C13\u0C10\x03\x02\x02\x02\u0C13\u0C11\x03\x02\x02\x02\u0C13\u0C12" +
		"\x03\x02\x02\x02\u0C14\u01B3\x03\x02\x02\x02\u0C15\u0C16\x07\u013F\x02" +
		"\x02\u0C16\u0C1F\x07\u0159\x02\x02\u0C17\u0C1C\x05\u01B6\xDC\x02\u0C18" +
		"\u0C19\x07\u018E\x02\x02\u0C19\u0C1B\x05\u01B6\xDC\x02\u0C1A\u0C18\x03" +
		"\x02\x02\x02\u0C1B\u0C1E\x03\x02\x02\x02\u0C1C\u0C1A\x03\x02\x02\x02\u0C1C" +
		"\u0C1D\x03\x02\x02\x02\u0C1D\u0C20\x03\x02\x02\x02\u0C1E\u0C1C\x03\x02" +
		"\x02\x02\u0C1F\u0C17\x03\x02\x02\x02\u0C1F\u0C20\x03\x02\x02\x02\u0C20" +
		"\u01B5\x03\x02\x02\x02\u0C21\u0C24\x05\u01BA\xDE\x02\u0C22\u0C24\x05\u01B8" +
		"\xDD\x02\u0C23\u0C21\x03\x02\x02\x02\u0C23\u0C22\x03\x02\x02\x02\u0C24" +
		"\u01B7\x03\x02\x02\x02\u0C25\u0C26\x07\u0106\x02\x02\u0C26\u0C27\t\x17" +
		"\x02\x02\u0C27\u01B9\x03\x02\x02\x02\u0C28\u0C29\x07\xAA\x02\x02\u0C29" +
		"\u0C2A\x07\xB8\x02\x02\u0C2A\u0C2B\x05\u01BC\xDF\x02\u0C2B\u01BB\x03\x02" +
		"\x02\x02\u0C2C\u0C2D\x07\u0139\x02\x02\u0C2D\u01BD\x03\x02\x02\x02\u0C2E" +
		"\u0C30\x072\x02\x02\u0C2F\u0C31\x07\u0186\x02\x02\u0C30\u0C2F\x03\x02" +
		"\x02\x02\u0C30\u0C31\x03\x02\x02\x02\u0C31\u01BF\x03\x02\x02\x02\u0C32" +
		"\u0C34\x07\u0122\x02\x02\u0C33\u0C35\x07\u0186\x02\x02\u0C34\u0C33\x03" +
		"\x02\x02\x02\u0C34\u0C35\x03\x02\x02\x02\u0C35\u01C1\x03\x02\x02\x02\u0C36" +
		"\u0C37\x07\u0131\x02\x02\u0C37\u0C38\x07\x18\x02\x02\u0C38\u0C39\x05\u038E" +
		"\u01C8\x02\u0C39\u01C3\x03\x02\x02\x02\u0C3A\u0C3B\x07\x03\x02\x02\u0C3B" +
		"\u0C3D\x07\u015B\x02\x02\u0C3C\u0C3E\x07\u01B0\x02\x02\u0C3D\u0C3C\x03" +
		"\x02\x02\x02\u0C3E\u0C3F\x03\x02\x02\x02\u0C3F\u0C3D\x03\x02\x02\x02\u0C3F" +
		"\u0C40\x03\x02\x02\x02\u0C40\u01C5\x03\x02\x02\x02\u0C41\u0C42\x07\x03" +
		"\x02\x02\u0C42\u0C44\x074\x02\x02\u0C43\u0C45\x07\u01B0\x02\x02\u0C44" +
		"\u0C43\x03\x02\x02\x02\u0C45\u0C46\x03\x02\x02\x02\u0C46\u0C44\x03\x02" +
		"\x02\x02\u0C46\u0C47\x03\x02\x02\x02\u0C47\u01C7\x03\x02\x02\x02\u0C48" +
		"\u0C4A\x07\xCC\x02\x02\u0C49\u0C4B\x07\u01B5\x02\x02\u0C4A\u0C49\x03\x02" +
		"\x02\x02\u0C4A\u0C4B\x03\x02\x02\x02\u0C4B\u0C4C\x03\x02\x02\x02\u0C4C" +
		"\u0C4D\x07\xA8\x02\x02\u0C4D\u0C52\x05\u0296\u014C\x02\u0C4E\u0C50\x07" +
		"\x13\x02\x02\u0C4F\u0C4E\x03\x02\x02\x02\u0C4F\u0C50\x03\x02\x02\x02\u0C50" +
		"\u0C51\x03\x02\x02\x02\u0C51\u0C53\x05\u03A0\u01D1\x02\u0C52\u0C4F\x03" +
		"\x02\x02\x02\u0C52\u0C53\x03\x02\x02\x02\u0C53\u0C54\x03\x02\x02\x02\u0C54" +
		"\u0C55\x07\u0173\x02\x02\u0C55\u0C56\x05\u0276\u013C\x02\u0C56\u0C57\x07" +
		"\xE1\x02\x02\u0C57\u0C58\x05\u033E\u01A0\x02\u0C58\u0C59\x05\u01CA\xE6" +
		"\x02\u0C59\u01C9\x03\x02\x02\x02\u0C5A\u0C5D\x05\u01CE\xE8\x02\u0C5B\u0C5D" +
		"\x05\u01D0\xE9\x02\u0C5C\u0C5A\x03\x02\x02\x02\u0C5C\u0C5B\x03\x02\x02" +
		"\x02\u0C5D\u0C60\x03\x02\x02\x02\u0C5E\u0C5C\x03\x02\x02\x02\u0C5E\u0C5F" +
		"\x03\x02\x02\x02\u0C5F\u0C62\x03\x02\x02\x02\u0C60\u0C5E\x03\x02\x02\x02" +
		"\u0C61\u0C63\x05\u01CC\xE7\x02\u0C62\u0C61\x03\x02\x02\x02\u0C62\u0C63" +
		"\x03\x02\x02\x02\u0C63\u01CB\x03\x02\x02\x02\u0C64\u0C65\x07\u0180\x02" +
		"\x02\u0C65\u0C66\x07\xD9\x02\x02\u0C66\u0C69\x07\xCA\x02\x02\u0C67\u0C68" +
		"\x07\r\x02\x02\u0C68\u0C6A\x05\u033E\u01A0\x02\u0C69\u0C67\x03\x02\x02" +
		"\x02\u0C69\u0C6A\x03\x02\x02\x02\u0C6A\u0C6B\x03\x02\x02\x02\u0C6B\u0C6C" +
		"\x07\u0150\x02\x02\u0C6C\u0C6E\x07\xA3\x02\x02\u0C6D\u0C6F\x05\u0124\x93" +
		"\x02\u0C6E\u0C6D\x03\x02\x02\x02\u0C6E\u0C6F\x03\x02\x02\x02\u0C6F\u0C70" +
		"\x03\x02\x02\x02\u0C70\u0C71\x07\u0177\x02\x02\u0C71\u0C72\x05\u02B0\u0159" +
		"\x02\u0C72\u01CD\x03\x02\x02\x02\u0C73\u0C74\x07\u0180\x02\x02\u0C74\u0C75" +
		"\x07\xCA\x02\x02\u0C75\u0C76\x07\r\x02\x02\u0C76\u0C77\x05\u033E\u01A0" +
		"\x02\u0C77\u0C78\x07\u0150\x02\x02\u0C78\u0C79\x05\u01D2\xEA\x02\u0C79" +
		"\u01CF\x03\x02\x02\x02\u0C7A\u0C7B\x07\u0180\x02\x02\u0C7B\u0C7C\x07\xCA" +
		"\x02\x02\u0C7C\u0C7D\x07\u0150\x02\x02\u0C7D\u0C7E\x05\u01D2\xEA\x02\u0C7E" +
		"\u01D1\x03\x02\x02\x02\u0C7F\u0C80\x07\u016E\x02\x02\u0C80\u0C83\x05\u01AE" +
		"\xD8\x02\u0C81\u0C83\x07X\x02\x02\u0C82\u0C7F\x03\x02\x02\x02\u0C82\u0C81" +
		"\x03\x02\x02\x02\u0C83\u01D3\x03\x02\x02\x02\u0C84\u0C85\x07\xB2\x02\x02" +
		"\u0C85\u0C87\x07\u0103\x02\x02\u0C86\u0C88\x07\u01AB\x02\x02\u0C87\u0C86" +
		"\x03\x02\x02\x02\u0C88\u0C89\x03\x02\x02\x02\u0C89\u0C87\x03\x02\x02\x02" +
		"\u0C89\u0C8A\x03\x02\x02\x02\u0C8A\u01D5\x03\x02\x02\x02\u0C8B\u0C8C\x07" +
		"5\x02\x02\u0C8C\u0C8D\x07\u0196\x02\x02\u0C8D\u0C8E\x07\u01B0\x02\x02" +
		"\u0C8E\u01D7\x03\x02\x02\x02\u0C8F\u0C90\x07\xF7\x02\x02\u0C90\u0C91\x07" +
		"\u01AB\x02\x02\u0C91\u01D9\x03\x02\x02\x02\u0C92\u0C93\x07\u0161\x02\x02" +
		"\u0C93\u0C94\x07\u01AB\x02\x02\u0C94\u01DB\x03\x02\x02\x02\u0C95\u0C96" +
		"\x07\u0141\x02\x02\u0C96\u0C97\x07\u01AB\x02\x02\u0C97\u01DD\x03\x02\x02" +
		"\x02\u0C98\u0CB0\x07\v\x02\x02\u0C99\u0C9A\x07\u014A\x02\x02\u0C9A\u0C9B" +
		"\x05\u0296\u014C\x02\u0C9B\u0C9C\x05\u01E0\xF1\x02\u0C9C\u0CB1\x03\x02" +
		"\x02\x02\u0C9D\u0C9E\x07\u017B\x02\x02\u0C9E\u0CA0\x05\u029A\u014E\x02" +
		"\u0C9F\u0CA1\x07\x13\x02\x02\u0CA0\u0C9F\x03\x02\x02\x02\u0CA0\u0CA1\x03" +
		"\x02\x02\x02\u0CA1\u0CA2\x03\x02\x02\x02\u0CA2\u0CA3\x05\u01E6\xF4\x02" +
		"\u0CA3\u0CB1\x03\x02\x02\x02\u0CA4\u0CA5\x07\xCB\x02\x02\u0CA5\u0CA6\x07" +
		"\u017B\x02\x02\u0CA6\u0CA7\x05\u029A\u014E\x02\u0CA7\u0CA8\x05\u01E8\xF5" +
		"\x02\u0CA8\u0CB1\x03\x02\x02\x02\u0CA9\u0CAA\x05^0\x02\u0CAA\u0CAB\x05" +
		"\u01EE\xF8\x02\u0CAB\u0CB1\x03\x02\x02\x02\u0CAC\u0CAD\x07G\x02\x02\u0CAD" +
		"\u0CB1\x05\u024E\u0128\x02\u0CAE\u0CAF\x07\x9D\x02\x02\u0CAF\u0CB1\x05" +
		"\u024A\u0126\x02\u0CB0\u0C99\x03\x02\x02\x02\u0CB0\u0C9D\x03\x02\x02\x02" +
		"\u0CB0\u0CA4\x03\x02\x02\x02\u0CB0\u0CA9\x03\x02\x02\x02\u0CB0\u0CAC\x03" +
		"\x02\x02\x02\u0CB0\u0CAE\x03\x02\x02\x02\u0CB1\u01DF\x03\x02\x02\x02\u0CB2" +
		"\u0CC8\x05\u01F8\xFD\x02\u0CB3\u0CC8\x05\u0218\u010D\x02\u0CB4\u0CC8\x05" +
		"\u021A\u010E\x02\u0CB5\u0CC8\x05\u020C\u0107\x02\u0CB6\u0CC8\x05\u0210" +
		"\u0109\x02\u0CB7\u0CC8\x05\u0212\u010A\x02\u0CB8\u0CC8\x05\u0214\u010B" +
		"\x02\u0CB9\u0CC8\x05\u021C\u010F\x02\u0CBA\u0CC8\x05\u0232\u011A\x02\u0CBB" +
		"\u0CC8\x05\u0234\u011B\x02\u0CBC\u0CC8\x05\u01E4\xF3\x02\u0CBD\u0CC8\x05" +
		"\u0202\u0102\x02\u0CBE\u0CC8\x05\u01FC\xFF\x02\u0CBF\u0CC8\x05\u01E2\xF2" +
		"\x02\u0CC0\u0CC2\x05\u0392\u01CA\x02\u0CC1\u0CC0\x03\x02\x02\x02\u0CC1" +
		"\u0CC2\x03\x02\x02\x02\u0CC2\u0CC3\x03\x02\x02\x02\u0CC3\u0CC8\x05\u01E2" +
		"\xF2\x02\u0CC4\u0CC8\x05\u0244\u0123\x02\u0CC5\u0CC8\x05\u0246\u0124\x02" +
		"\u0CC6\u0CC8\x05\u0248\u0125\x02\u0CC7\u0CB2\x03\x02\x02\x02\u0CC7\u0CB3" +
		"\x03\x02\x02\x02\u0CC7\u0CB4\x03\x02\x02\x02\u0CC7\u0CB5\x03\x02\x02\x02" +
		"\u0CC7\u0CB6\x03\x02\x02\x02\u0CC7\u0CB7\x03\x02\x02\x02\u0CC7\u0CB8\x03" +
		"\x02\x02\x02\u0CC7\u0CB9\x03\x02\x02\x02\u0CC7\u0CBA\x03\x02\x02\x02\u0CC7" +
		"\u0CBB\x03\x02\x02\x02\u0CC7\u0CBC\x03\x02\x02\x02\u0CC7\u0CBD\x03\x02" +
		"\x02\x02\u0CC7\u0CBE\x03\x02\x02\x02\u0CC7\u0CBF\x03\x02\x02\x02\u0CC7" +
		"\u0CC1\x03\x02\x02\x02\u0CC7\u0CC4\x03\x02\x02\x02\u0CC7\u0CC5\x03\x02" +
		"\x02\x02\u0CC7\u0CC6\x03\x02\x02\x02\u0CC8\u01E1\x03\x02\x02\x02\u0CC9" +
		"\u0CD9\x05\u0224\u0113\x02\u0CCA\u0CD9\x05\u0230\u0119\x02\u0CCB\u0CD9" +
		"\x05\u023A\u011E\x02\u0CCC\u0CD9\x05\u0220\u0111\x02\u0CCD\u0CD9\x05\u0236" +
		"\u011C\x02\u0CCE\u0CD9\x05\u023C\u011F\x02\u0CCF\u0CD9\x05\u0228\u0115" +
		"\x02\u0CD0\u0CD9\x05\u0226\u0114\x02\u0CD1\u0CD9\x05\u0242\u0122\x02\u0CD2" +
		"\u0CD9\x05\u0206\u0104\x02\u0CD3\u0CD9\x05\u0208\u0105\x02\u0CD4\u0CD9" +
		"\x05\u0204\u0103\x02\u0CD5\u0CD9\x05\u01FA\xFE\x02\u0CD6\u0CD9\x05\u01FE" +
		"\u0100\x02\u0CD7\u0CD9\x05\u0200\u0101\x02\u0CD8\u0CC9\x03\x02\x02\x02" +
		"\u0CD8\u0CCA\x03\x02\x02\x02\u0CD8\u0CCB\x03\x02\x02\x02\u0CD8\u0CCC\x03" +
		"\x02\x02\x02\u0CD8\u0CCD\x03\x02\x02\x02\u0CD8\u0CCE\x03\x02\x02\x02\u0CD8" +
		"\u0CCF\x03\x02\x02\x02\u0CD8\u0CD0\x03\x02\x02\x02\u0CD8\u0CD1\x03\x02" +
		"\x02\x02\u0CD8\u0CD2\x03\x02\x02\x02\u0CD8\u0CD3\x03\x02\x02\x02\u0CD8" +
		"\u0CD4\x03\x02\x02\x02\u0CD8\u0CD5\x03\x02\x02\x02\u0CD8\u0CD6\x03\x02" +
		"\x02\x02\u0CD8\u0CD7\x03\x02\x02\x02\u0CD9\u01E3\x03\x02\x02\x02\u0CDA" +
		"\u0CDB\x07\xEE\x02\x02\u0CDB\u0CDC\x07/\x02\x02\u0CDC\u0CDD\x07\u0190" +
		"\x02\x02\u0CDD\u0CDE\x05\u0158\xAD\x02\u0CDE\u0CDF\x07\u0191\x02\x02\u0CDF" +
		"\u01E5\x03\x02\x02\x02\u0CE0\u0CE6\x05\u021E\u0110\x02\u0CE1\u0CE6\x05" +
		"\u01F8\xFD\x02\u0CE2\u0CE6\x05\u020C\u0107\x02\u0CE3\u0CE6\x05\u021A\u010E" +
		"\x02\u0CE4\u0CE6\x05\u019E\xD0\x02\u0CE5\u0CE0\x03\x02\x02\x02\u0CE5\u0CE1" +
		"\x03\x02\x02\x02\u0CE5\u0CE2\x03\x02\x02\x02\u0CE5\u0CE3\x03\x02\x02\x02" +
		"\u0CE5\u0CE4\x03\x02\x02\x02\u0CE6\u01E7\x03\x02\x02\x02\u0CE7\u0CEA\x05" +
		"\u01EA\xF6\x02\u0CE8\u0CEA\x05\u01EC\xF7\x02\u0CE9\u0CE7\x03\x02\x02\x02" +
		"\u0CE9\u0CE8\x03\x02\x02\x02\u0CEA\u01E9\x03\x02\x02\x02\u0CEB\u0CEE\x05" +
		"2\x1A\x02\u0CEC\u0CEE\x054\x1B\x02\u0CED\u0CEB\x03\x02\x02\x02\u0CED\u0CEC" +
		"\x03\x02\x02\x02\u0CEE\u01EB\x03\x02\x02\x02\u0CEF\u0CF0\x07\u010A\x02" +
		"\x02\u0CF0\u01ED\x03\x02\x02\x02\u0CF1\u0CF5\x05\u01F0\xF9\x02\u0CF2\u0CF5" +
		"\x05\u01F2\xFA\x02\u0CF3\u0CF5\x05\u01F4\xFB\x02\u0CF4\u0CF1\x03\x02\x02" +
		"\x02\u0CF4\u0CF2\x03\x02\x02\x02\u0CF4\u0CF3\x03\x02\x02\x02\u0CF5\u01EF" +
		"\x03\x02\x02\x02\u0CF6\u0CF7\x05\u0290\u0149\x02\u0CF7\u0CF8\x07\u0131" +
		"\x02\x02\u0CF8\u0CF9\x07N\x02\x02\u0CF9\u0CFA\x05@!\x02\u0CFA\u01F1\x03" +
		"\x02\x02\x02\u0CFB\u0CFC\x05\u0290\u0149\x02\u0CFC\u0CFD\x07\u0131\x02" +
		"\x02\u0CFD\u0CFE\x07\xED\x02\x02\u0CFE\u0CFF\x05\x98M\x02\u0CFF\u01F3" +
		"\x03\x02\x02\x02\u0D00\u0D01\x05\u0290\u0149\x02\u0D01\u0D02\x07\u0131" +
		"\x02\x02\u0D02\u0D03\t\x18\x02\x02\u0D03\u0D04\x07\u01AB\x02\x02\u0D04" +
		"\u01F5\x03\x02\x02\x02\u0D05\u0D06\x05\u0290\u0149\x02\u0D06\u0D07\x07" +
		"\u0131\x02\x02\u0D07\u0D08\x07\xC5\x02\x02\u0D08\u0D09\x07\u01AB\x02\x02" +
		"\u0D09\u01F7\x03\x02\x02\x02\u0D0A\u0D0B\x07\u0113\x02\x02\u0D0B\u0D0C" +
		"\x07\u0156\x02\x02\u0D0C\u0D0D\x05\u0298\u014D\x02\u0D0D\u01F9\x03\x02" +
		"\x02\x02\u0D0E\u0D11\x07\x06\x02\x02\u0D0F\u0D11\x07\u0117\x02\x02\u0D10" +
		"\u0D0E\x03\x02\x02\x02\u0D10\u0D0F\x03\x02\x02\x02\u0D11\u0D12\x03\x02" +
		"\x02\x02\u0D12\u0D13\x070\x02\x02\u0D13\u0D14\x07\u0190\x02\x02\u0D14" +
		"\u0D15\x05\u0114\x8B\x02\u0D15\u0D17\x07\u0191\x02\x02\u0D16\u0D18\x05" +
		",\x17\x02\u0D17\u0D16\x03\x02\x02\x02\u0D17\u0D18\x03\x02\x02\x02\u0D18" +
		"\u01FB\x03\x02\x02\x02\u0D19\u0D1C\x07\x06\x02\x02\u0D1A\u0D1D\x05\u013C" +
		"\x9F\x02\u0D1B\u0D1D\x05\u0132\x9A\x02\u0D1C\u0D1A\x03\x02\x02\x02\u0D1C" +
		"\u0D1B\x03\x02\x02\x02\u0D1D\u01FD\x03\x02\x02\x02\u0D1E\u0D1F\x07\u016E" +
		"\x02\x02\u0D1F\u0D21\x070\x02\x02\u0D20\u0D22\x05,\x17\x02\u0D21\u0D20" +
		"\x03\x02\x02\x02\u0D21\u0D22\x03\x02\x02\x02\u0D22\u01FF\x03\x02\x02\x02" +
		"\u0D23\u0D24\x05\u0128\x95\x02\u0D24\u0D26\x07\xDB\x02\x02\u0D25\u0D27" +
		"\x07$\x02\x02\u0D26\u0D25\x03\x02\x02\x02\u0D26\u0D27\x03\x02\x02\x02" +
		"\u0D27\u0D2C\x03\x02\x02\x02\u0D28\u0D29\x05\u0128\x95\x02\u0D29\u0D2A" +
		"\x07\xDF\x02\x02\u0D2A\u0D2C\x03\x02\x02\x02\u0D2B\u0D23\x03\x02\x02\x02" +
		"\u0D2B\u0D28\x03\x02\x02\x02\u0D2C\u0201\x03\x02\x02\x02\u0D2D\u0D2E\x07" +
		"g\x02\x02\u0D2E\u0D2F\x079\x02\x02\u0D2F\u0D30\x05\u03A0\u01D1\x02\u0D30" +
		"\u0203\x03\x02\x02\x02\u0D31\u0D33\x07(\x02\x02\u0D32\u0D34\x07/\x02\x02" +
		"\u0D33\u0D32\x03\x02\x02\x02\u0D33\u0D34\x03\x02\x02\x02\u0D34\u0D35\x03" +
		"\x02\x02\x02\u0D35\u0D36\x05\u011C\x8F\x02\u0D36\u0D37\x05\u011E\x90\x02" +
		"\u0D37\u0D39\x05\u0178\xBD\x02\u0D38\u0D3A\x05\u0166\xB4\x02\u0D39\u0D38" +
		"\x03\x02\x02\x02\u0D39\u0D3A\x03\x02\x02\x02\u0D3A\u0D3D\x03\x02\x02\x02" +
		"\u0D3B\u0D3C\x071\x02\x02\u0D3C\u0D3E\x07\u01AB\x02\x02\u0D3D\u0D3B\x03" +
		"\x02\x02\x02\u0D3D\u0D3E\x03\x02\x02\x02\u0D3E\u0D40\x03\x02\x02\x02\u0D3F" +
		"\u0D41\x05\u020A\u0106\x02\u0D40\u0D3F\x03\x02\x02\x02\u0D40\u0D41\x03" +
		"\x02\x02\x02\u0D41\u0D43\x03\x02\x02\x02\u0D42\u0D44\x05,\x17\x02\u0D43" +
		"\u0D42\x03\x02\x02\x02\u0D43\u0D44\x03\x02\x02\x02\u0D44\u0205\x03\x02" +
		"\x02\x02\u0D45\u0D46\x07\u016E\x02\x02\u0D46\u0D47\x07\u0140\x02\x02\u0D47" +
		"\u0D49\x07\x88\x02\x02\u0D48\u0D4A\x07/\x02\x02\u0D49\u0D48\x03\x02\x02" +
		"\x02\u0D49\u0D4A\x03\x02\x02\x02\u0D4A\u0D4B\x03\x02\x02\x02\u0D4B\u0D4C" +
		"\x05\u011C\x8F\x02\u0D4C\u0D4D\x07\u0131\x02\x02\u0D4D\u0D50\x05\xFE\x80" +
		"\x02\u0D4E\u0D4F\x071\x02\x02\u0D4F\u0D51\x07\u01AB\x02\x02\u0D50\u0D4E" +
		"\x03\x02\x02\x02\u0D50\u0D51\x03\x02\x02\x02\u0D51\u0207\x03\x02\x02\x02" +
		"\u0D52\u0D53\x07\u016E\x02\x02\u0D53\u0D54\x07\u0140\x02\x02\u0D54\u0D55" +
		"\x07\u0131\x02\x02\u0D55\u0D56\x05\xFE\x80\x02\u0D56\u0209\x03\x02\x02" +
		"\x02\u0D57\u0D5B\x07\x84\x02\x02\u0D58\u0D59\x07\b\x02\x02\u0D59\u0D5B" +
		"\x05\u03A0\u01D1\x02\u0D5A\u0D57\x03\x02\x02\x02\u0D5A\u0D58\x03\x02\x02" +
		"\x02\u0D5B\u020B\x03\x02\x02\x02\u0D5C\u0D5E\x07\x06\x02\x02\u0D5D\u0D5F" +
		"\x05.\x18\x02\u0D5E\u0D5D\x03\x02\x02\x02\u0D5E\u0D5F\x03\x02\x02\x02" +
		"\u0D5F\u0D61\x03\x02\x02\x02\u0D60\u0D62\x05\u020E\u0108\x02\u0D61\u0D60" +
		"\x03\x02\x02\x02\u0D62\u0D63\x03\x02\x02\x02\u0D63\u0D61\x03\x02\x02\x02" +
		"\u0D63\u0D64\x03\x02\x02\x02\u0D64\u020D\x03\x02\x02\x02\u0D65\u0D67\x05" +
		"\u0392\u01CA\x02\u0D66\u0D68\x05\u0216\u010C\x02\u0D67\u0D66\x03\x02\x02" +
		"\x02\u0D67\u0D68\x03\x02\x02\x02\u0D68\u020F\x03\x02\x02\x02\u0D69\u0D6D" +
		"\x07\u0157\x02\x02\u0D6A\u0D6C\x05\u0392\u01CA\x02\u0D6B\u0D6A\x03\x02" +
		"\x02\x02\u0D6C\u0D6F\x03\x02\x02\x02\u0D6D\u0D6B\x03\x02\x02\x02\u0D6D" +
		"\u0D6E\x03\x02\x02\x02\u0D6E\u0211\x03\x02\x02\x02\u0D6F\u0D6D\x03\x02" +
		"\x02\x02\u0D70\u0D74\x07\x11\x02\x02\u0D71\u0D73\x05\u0392\u01CA\x02\u0D72" +
		"\u0D71\x03\x02\x02\x02\u0D73\u0D76\x03\x02\x02\x02\u0D74\u0D72\x03\x02" +
		"\x02\x02\u0D74\u0D75\x03\x02\x02\x02\u0D75\u0213\x03\x02\x02\x02\u0D76" +
		"\u0D74\x03\x02\x02\x02\u0D77\u0D7B\x07\u0162\x02\x02\u0D78\u0D7A\x05\u0392" +
		"\u01CA\x02\u0D79\u0D78\x03\x02\x02\x02\u0D7A\u0D7D\x03\x02\x02\x02\u0D7B" +
		"\u0D79\x03\x02\x02\x02\u0D7B\u0D7C\x03\x02\x02\x02\u0D7C\u0215\x03\x02" +
		"\x02\x02\u0D7D\u0D7B\x03\x02\x02\x02\u0D7E\u0D7F\x07\xBE\x02\x02\u0D7F" +
		"\u0D80\x07\u01AB\x02\x02\u0D80\u0217\x03\x02\x02\x02\u0D81\u0D82\x07h" +
		"\x02\x02\u0D82\u0D83\x07\xF0\x02\x02\u0D83\u0219\x03\x02\x02\x02\u0D84" +
		"\u0D86\x07g\x02\x02\u0D85\u0D87\x05*\x16\x02\u0D86\u0D85\x03\x02\x02\x02" +
		"\u0D86\u0D87\x03\x02\x02\x02\u0D87\u0D88\x03\x02\x02\x02\u0D88\u0D89\x07" +
		"\xEE\x02\x02\u0D89\u0D8F\x05\u0396\u01CC\x02\u0D8A\u0D8B\x07\u018E\x02" +
		"\x02\u0D8B\u0D8C\x07\xEE\x02\x02\u0D8C\u0D8E\x05\u0396\u01CC\x02\u0D8D" +
		"\u0D8A\x03\x02\x02\x02\u0D8E\u0D91\x03\x02\x02\x02\u0D8F\u0D8D\x03\x02" +
		"\x02\x02\u0D8F\u0D90\x03\x02\x02\x02\u0D90\u0D93\x03\x02\x02\x02\u0D91" +
		"\u0D8F\x03\x02\x02\x02\u0D92\u0D94\x05\x12\n\x02\u0D93\u0D92\x03\x02\x02" +
		"\x02\u0D93\u0D94\x03\x02\x02\x02\u0D94\u0D96\x03\x02\x02\x02\u0D95\u0D97" +
		"\x07\u0100\x02\x02\u0D96\u0D95\x03\x02\x02\x02\u0D96\u0D97\x03\x02\x02" +
		"\x02\u0D97\u0D99\x03\x02\x02\x02\u0D98\u0D9A\x05\x14\v\x02\u0D99\u0D98" +
		"\x03\x02\x02\x02\u0D99\u0D9A\x03\x02\x02\x02\u0D9A\u021B\x03\x02\x02\x02" +
		"\u0D9B\u0D9C\x07\u0131\x02\x02\u0D9C\u0D9D\x07\u014D\x02\x02\u0D9D\u0DA5" +
		"\x05\xFE\x80\x02\u0D9E\u0D9F\x07\u016C\x02\x02\u0D9F\u0DA1\x07\u014D\x02" +
		"\x02\u0DA0\u0DA2\x05*\x16\x02\u0DA1\u0DA0\x03\x02\x02\x02\u0DA1\u0DA2" +
		"\x03\x02\x02\x02\u0DA2\u0DA3\x03\x02\x02\x02\u0DA3\u0DA5\x05\xFE\x80\x02" +
		"\u0DA4\u0D9B\x03\x02\x02\x02\u0DA4\u0D9E\x03\x02\x02\x02\u0DA5\u021D\x03" +
		"\x02\x02\x02\u0DA6\u0DA7\x07\u0131\x02\x02\u0DA7\u0DA8\x07\u014D\x02\x02" +
		"\u0DA8\u0DB0\x05\xFE\x80\x02\u0DA9\u0DAA\x07\u016C\x02\x02\u0DAA\u0DAC" +
		"\x07\u014D\x02\x02\u0DAB\u0DAD\x05*\x16\x02\u0DAC\u0DAB\x03\x02\x02\x02" +
		"\u0DAC\u0DAD\x03\x02\x02\x02\u0DAD\u0DAE\x03\x02\x02\x02\u0DAE\u0DB0\x05" +
		"\xFE\x80\x02\u0DAF\u0DA6\x03\x02\x02\x02\u0DAF\u0DA9\x03\x02\x02\x02\u0DB0" +
		"\u021F\x03\x02\x02\x02\u0DB1\u0DBB\x07\u0131\x02\x02\u0DB2\u0DB3\x07\u012E" +
		"\x02\x02\u0DB3\u0DB7\x07\u01AB\x02\x02\u0DB4\u0DB5\x07\u0184\x02\x02\u0DB5" +
		"\u0DB6\x07\u012F\x02\x02\u0DB6\u0DB8\x05\xFE\x80\x02\u0DB7\u0DB4\x03\x02" +
		"\x02\x02\u0DB7\u0DB8\x03\x02\x02\x02\u0DB8\u0DBC\x03\x02\x02\x02\u0DB9" +
		"\u0DBA\x07\u012F\x02\x02\u0DBA\u0DBC\x05\xFE\x80\x02\u0DBB\u0DB2\x03\x02" +
		"\x02\x02\u0DBB\u0DB9\x03\x02\x02\x02\u0DBC\u0DC1\x03\x02\x02\x02\u0DBD" +
		"\u0DBE\x07\u016C\x02\x02\u0DBE\u0DBF\x07\u012F\x02\x02\u0DBF\u0DC1\x05" +
		"\xFE\x80\x02\u0DC0\u0DB1\x03\x02\x02\x02\u0DC0\u0DBD\x03\x02\x02\x02\u0DC1" +
		"\u0221\x03\x02\x02\x02\u0DC2\u0DC4\x05\u0296\u014C\x02\u0DC3\u0DC5\x05" +
		"\u0392\u01CA\x02\u0DC4\u0DC3\x03\x02\x02\x02\u0DC4\u0DC5\x03\x02\x02\x02" +
		"\u0DC5\u0223\x03\x02\x02\x02\u0DC6\u0DC7\x07\u0131\x02\x02\u0DC7\u0DC8" +
		"\x07\x83\x02\x02\u0DC8\u0DC9\x05\u024C\u0127\x02\u0DC9\u0225\x03\x02\x02" +
		"\x02\u0DCA\u0DCB\x07\xD9\x02\x02\u0DCB\u0DCE\t\x19\x02\x02\u0DCC\u0DCE" +
		"\x05\xEAv\x02\u0DCD\u0DCA\x03\x02\x02\x02\u0DCD\u0DCC\x03\x02\x02\x02" +
		"\u0DCE\u0227\x03\x02\x02\x02\u0DCF\u0DD0\x07\u0131\x02\x02\u0DD0\u0DD1" +
		"\x07\u0137\x02\x02\u0DD1\u0DD2\x07\xBE\x02\x02\u0DD2\u0DD3\x05\u022A\u0116" +
		"\x02\u0DD3\u0229\x03\x02\x02\x02\u0DD4\u0DD5\x07\u0190\x02\x02\u0DD5\u0DD6" +
		"\x05\u022C\u0117\x02\u0DD6\u0DD7\x07\u0191\x02\x02\u0DD7\u022B\x03\x02" +
		"\x02\x02\u0DD8\u0DDD\x05\u022E\u0118\x02\u0DD9\u0DDA\x07\u018E\x02\x02" +
		"\u0DDA\u0DDC\x05\u022E\u0118\x02\u0DDB\u0DD9\x03\x02\x02\x02\u0DDC\u0DDF" +
		"\x03\x02\x02\x02\u0DDD\u0DDB\x03\x02\x02\x02\u0DDD\u0DDE\x03\x02\x02\x02" +
		"\u0DDE\u022D\x03\x02\x02\x02\u0DDF\u0DDD\x03\x02\x02\x02\u0DE0\u0DE1\x05" +
		"\u0148\xA5\x02\u0DE1\u0DE2\x07\u0196\x02\x02\u0DE2\u0DE3\x07\u01AB\x02" +
		"\x02\u0DE3\u022F\x03\x02\x02\x02\u0DE4\u0DE5\x07\u0131\x02\x02\u0DE5\u0DE6" +
		"\x07\xBE\x02\x02\u0DE6\u0DE7\x07\u01AB\x02\x02\u0DE7\u0231\x03\x02\x02" +
		"\x02\u0DE8\u0DEF\x05\xEEx\x02\u0DE9\u0DEC";
	private static readonly _serializedATNSegment7: string =
		"\x07\xD9\x02\x02\u0DEA\u0DED\x07\u0137\x02\x02\u0DEB\u0DED\x056\x1C\x02" +
		"\u0DEC\u0DEA\x03\x02\x02\x02\u0DEC\u0DEB\x03\x02\x02\x02\u0DED\u0DEF\x03" +
		"\x02\x02\x02\u0DEE\u0DE8\x03\x02\x02\x02\u0DEE\u0DE9\x03\x02\x02\x02\u0DEF" +
		"\u0233\x03\x02\x02\x02\u0DF0\u0DF1\x07s\x02\x02\u0DF1\u0DF2\x05\u0392" +
		"\u01CA\x02\u0DF2\u0DF3\x07\u0184\x02\x02\u0DF3\u0DF4\x07\u014A\x02\x02" +
		"\u0DF4\u0DF5\x05\u0296\u014C\x02\u0DF5\u0235\x03\x02\x02\x02\u0DF6\u0DF7" +
		"\x07\u0113\x02\x02\u0DF7\u0DF8\x07\u0156\x02\x02\u0DF8\u0DF9\x05\u0392" +
		"\u01CA\x02\u0DF9\u0237\x03\x02\x02\x02\u0DFA\u0DFB\x07\u016E\x02\x02\u0DFB" +
		"\u0DFC\x07\u0140\x02\x02\u0DFC\u0DFE\x07\x88\x02\x02\u0DFD\u0DFF\x07/" +
		"\x02\x02\u0DFE\u0DFD\x03\x02\x02\x02\u0DFE\u0DFF\x03\x02\x02\x02\u0DFF" +
		"\u0E00\x03\x02\x02\x02\u0E00\u0E01\x05\u011C\x8F\x02\u0E01\u0E02\x07\u0131" +
		"\x02\x02\u0E02\u0E05\x05\xFE\x80\x02\u0E03\u0E04\x071\x02\x02\u0E04\u0E06" +
		"\x07\u01AB\x02\x02\u0E05\u0E03\x03\x02\x02\x02\u0E05\u0E06\x03\x02\x02" +
		"\x02\u0E06\u0239\x03\x02\x02\x02\u0E07\u0E08\x077\x02\x02\u0E08\u023B" +
		"\x03\x02\x02\x02\u0E09\u0E0A\x07\xA8\x02\x02\u0E0A\u0E0B\x07\u01B0\x02" +
		"\x02\u0E0B\u0E0C\x07!\x02\x02\u0E0C\u023D\x03\x02\x02\x02\u0E0D\u0E0E" +
		"\x07\r\x02\x02\u0E0E\u0E0F\x07\u017D\x02\x02\u0E0F\u023F\x03\x02\x02\x02" +
		"\u0E10\u0E11\x07\xF7\x02\x02\u0E11\u0E12\x07\u01AB\x02\x02\u0E12\u0241" +
		"\x03\x02\x02\x02\u0E13\u0E14\x073\x02\x02\u0E14\u0E16\x07\u01AB\x02\x02" +
		"\u0E15\u0E17\x05\u023E\u0120\x02\u0E16\u0E15\x03\x02\x02\x02\u0E16\u0E17" +
		"\x03\x02\x02\x02\u0E17\u0E19\x03\x02\x02\x02\u0E18\u0E1A\x05\xECw\x02" +
		"\u0E19\u0E18\x03\x02\x02\x02\u0E19\u0E1A\x03\x02\x02\x02\u0E1A\u0E1C\x03" +
		"\x02\x02\x02\u0E1B\u0E1D\x05\u02FE\u0180\x02\u0E1C\u0E1B\x03\x02\x02\x02" +
		"\u0E1C\u0E1D\x03\x02\x02\x02\u0E1D\u0E1F\x03\x02\x02\x02\u0E1E\u0E20\x05" +
		"\u0240\u0121\x02\u0E1F\u0E1E\x03\x02\x02\x02\u0E1F\u0E20\x03\x02\x02\x02" +
		"\u0E20\u0E25\x03\x02\x02\x02\u0E21\u0E22\x07\u0184\x02\x02\u0E22\u0E23" +
		"\x07\xEC\x02\x02\u0E23\u0E24\x07\u014D\x02\x02\u0E24\u0E26\x05\xFE\x80" +
		"\x02\u0E25\u0E21\x03\x02\x02\x02\u0E25\u0E26\x03\x02\x02\x02\u0E26\u0243" +
		"\x03\x02\x02\x02\u0E27\u0E28\x07\u0131\x02\x02\u0E28\u0E29\x07\xED\x02" +
		"\x02\u0E29\u0E2A\x05\x96L\x02\u0E2A\u0245\x03\x02\x02\x02\u0E2B\u0E2C" +
		"\x07\u0131\x02\x02\u0E2C\u0E2D\x07\xEE\x02\x02\u0E2D\u0E2E\x07\u013D\x02" +
		"\x02\u0E2E\u0E2F\x07\u0190\x02\x02\u0E2F\u0E30\x05\xE4s\x02\u0E30\u0E31" +
		"\x07\u0191\x02\x02\u0E31\u0247\x03\x02\x02\x02\u0E32\u0E3C\x07u\x02\x02" +
		"\u0E33\u0E34\x07\u0122\x02\x02\u0E34\u0E35\x07\u0190\x02\x02\u0E35\u0E3D" +
		"\t\x1A\x02\x02\u0E36\u0E37\x07x\x02\x02\u0E37\u0E38\x07\u0190\x02\x02" +
		"\u0E38\u0E3D\x07\u01AB\x02\x02\u0E39\u0E3A\x07\u0133\x02\x02\u0E3A\u0E3B" +
		"\x07\u0190\x02\x02\u0E3B\u0E3D\x07\u01B0\x02\x02\u0E3C\u0E33\x03\x02\x02" +
		"\x02\u0E3C\u0E36\x03\x02\x02\x02\u0E3C\u0E39\x03\x02\x02\x02\u0E3D\u0E3E" +
		"\x03\x02\x02\x02\u0E3E\u0E3F\x07\u0191\x02\x02\u0E3F\u0249\x03\x02\x02" +
		"\x02\u0E40\u0E41\x05\u03A0\u01D1\x02\u0E41\u0E42\x07\xE1\x02\x02\u0E42" +
		"\u0E44\x05\u0296\u014C\x02\u0E43\u0E45\x05\u0392\u01CA\x02\u0E44\u0E43" +
		"\x03\x02\x02\x02\u0E44\u0E45\x03\x02\x02\x02\u0E45\u0E46\x03\x02\x02\x02" +
		"\u0E46\u0E47\x07\u010A\x02\x02\u0E47\u024B\x03\x02\x02\x02\u0E48\u0E49" +
		"\x07\xA2\x02\x02\u0E49\u0E4A\x07\u01AB\x02\x02\u0E4A\u0E4B\x07\xEA\x02" +
		"\x02\u0E4B\u0E4C\x07\u01AB\x02\x02\u0E4C\u0E4D\x07\u012E\x02\x02\u0E4D" +
		"\u0E52\x07\u01AB\x02\x02\u0E4E\u0E4F\x07\xA1\x02\x02\u0E4F\u0E50\x07\u01AB" +
		"\x02\x02\u0E50\u0E51\x07\xE9\x02\x02\u0E51\u0E53\x07\u01AB\x02\x02\u0E52" +
		"\u0E4E\x03\x02\x02\x02\u0E52\u0E53\x03\x02\x02\x02\u0E53\u0E56\x03\x02" +
		"\x02\x02\u0E54\u0E56\x05\u03A0\u01D1\x02\u0E55\u0E48\x03\x02\x02\x02\u0E55" +
		"\u0E54\x03\x02\x02\x02\u0E56\u024D\x03\x02\x02\x02\u0E57\u0E5B\x05\u0250" +
		"\u0129\x02\u0E58\u0E5B\x05\u0252\u012A\x02\u0E59\u0E5B\x05\u0254\u012B" +
		"\x02\u0E5A\u0E57\x03\x02\x02\x02\u0E5A\u0E58\x03\x02\x02\x02\u0E5A\u0E59" +
		"\x03\x02\x02\x02\u0E5B\u024F\x03\x02\x02\x02\u0E5C\u0E5D\x05\u0290\u0149" +
		"\x02\u0E5D\u0E5E\x07\u0131\x02\x02\u0E5E\u0E5F\x07O\x02\x02\u0E5F\u0E60" +
		"\x05\u0262\u0132\x02\u0E60\u0251\x03\x02\x02\x02\u0E61\u0E62\x05\u0290" +
		"\u0149\x02\u0E62\u0E63\x07\u0131\x02\x02\u0E63\u0E64\x07\xED\x02\x02\u0E64" +
		"\u0E65\x05\x98M\x02\u0E65\u0253\x03\x02\x02\x02\u0E66\u0E67\x05\u0290" +
		"\u0149\x02\u0E67\u0E68\x07\u0131\x02\x02\u0E68\u0E69\x07\u0170\x02\x02" +
		"\u0E69\u0E6A\x07\u01AB\x02\x02\u0E6A\u0255\x03\x02\x02\x02\u0E6B\u0E6C" +
		"\x07\xB9\x02\x02\u0E6C\u0E75\x07\x82\x02\x02\u0E6D\u0E6E\x07\xB9\x02\x02" +
		"\u0E6E\u0E6F\x07\x82\x02\x02\u0E6F\u0E70\x05\u03A0\u01D1\x02\u0E70\u0E71" +
		"\x07\u01AB\x02\x02\u0E71\u0E75\x03\x02\x02\x02\u0E72\u0E73\x07\xB9\x02" +
		"\x02\u0E73\u0E75\x05\u0296\u014C\x02\u0E74\u0E6B\x03\x02\x02\x02\u0E74" +
		"\u0E6D\x03\x02\x02\x02\u0E74\u0E72\x03\x02\x02\x02\u0E75\u0257\x03\x02" +
		"\x02\x02\u0E76\u0E78\x07<\x02\x02\u0E77\u0E79\x07\u014E\x02\x02\u0E78" +
		"\u0E77\x03\x02\x02\x02\u0E78\u0E79\x03\x02\x02\x02\u0E79\u0E7B\x03\x02" +
		"\x02\x02\u0E7A\u0E7C\x07\u015A\x02\x02\u0E7B\u0E7A\x03\x02\x02\x02\u0E7B" +
		"\u0E7C\x03\x02\x02\x02\u0E7C\u0E7E\x03\x02\x02\x02\u0E7D\u0E7F\x07}\x02" +
		"\x02\u0E7E\u0E7D\x03\x02\x02\x02\u0E7E\u0E7F\x03\x02\x02\x02\u0E7F\u0E80" +
		"\x03\x02\x02\x02\u0E80\u0E82\x07\u014A\x02\x02\u0E81\u0E83\x05.\x18\x02" +
		"\u0E82\u0E81\x03\x02\x02\x02\u0E82\u0E83\x03\x02\x02\x02\u0E83\u0E84\x03" +
		"\x02\x02\x02\u0E84\u0EB7\x05\u0298\u014D\x02\u0E85\u0E87\x05\u0256\u012C" +
		"\x02\u0E86\u0E88\x05\xDEp\x02\u0E87\u0E86\x03\x02\x02\x02\u0E87\u0E88" +
		"\x03\x02\x02\x02\u0E88\u0E8A\x03\x02\x02\x02\u0E89\u0E8B\x05\xFA~\x02" +
		"\u0E8A\u0E89\x03\x02\x02\x02\u0E8A\u0E8B\x03\x02\x02\x02\u0E8B\u0E8D\x03" +
		"\x02\x02\x02\u0E8C\u0E8E\x05\u0110\x89\x02\u0E8D\u0E8C\x03\x02\x02\x02" +
		"\u0E8D\u0E8E\x03\x02\x02\x02\u0E8E\u0E90\x03\x02\x02\x02\u0E8F\u0E91\x05" +
		"\u0112\x8A\x02\u0E90\u0E8F\x03\x02\x02\x02\u0E90\u0E91\x03\x02\x02\x02" +
		"\u0E91\u0E93\x03\x02\x02\x02\u0E92\u0E94\x05\xFC\x7F\x02\u0E93\u0E92\x03" +
		"\x02\x02\x02\u0E93\u0E94\x03\x02\x02\x02\u0E94\u0EB8\x03\x02\x02\x02\u0E95" +
		"\u0E96\x07\u0190\x02\x02\u0E96\u0E97\x05\u0116\x8C\x02\u0E97\u0E98\x07" +
		"\u0191\x02\x02\u0E98\u0E9A\x03\x02\x02\x02\u0E99\u0E95\x03\x02\x02\x02" +
		"\u0E99\u0E9A\x03\x02\x02\x02\u0E9A\u0E9C\x03\x02\x02\x02\u0E9B\u0E9D\x05" +
		"\xDCo\x02\u0E9C\u0E9B\x03\x02\x02\x02\u0E9C\u0E9D\x03\x02\x02\x02\u0E9D" +
		"\u0E9F\x03\x02\x02\x02\u0E9E\u0EA0\x05\xDEp\x02\u0E9F\u0E9E\x03\x02\x02" +
		"\x02\u0E9F\u0EA0\x03\x02\x02\x02\u0EA0\u0EA2\x03\x02\x02\x02\u0EA1\u0EA3" +
		"\x05\xEAv\x02\u0EA2\u0EA1\x03\x02\x02\x02\u0EA2\u0EA3\x03\x02\x02\x02" +
		"\u0EA3\u0EA5\x03\x02\x02\x02\u0EA4\u0EA6\x05\xEEx\x02\u0EA5\u0EA4\x03" +
		"\x02\x02\x02\u0EA5\u0EA6\x03\x02\x02\x02\u0EA6\u0EA8\x03\x02\x02\x02\u0EA7" +
		"\u0EA9\x05\xFA~\x02\u0EA8\u0EA7\x03\x02\x02\x02\u0EA8\u0EA9\x03\x02\x02" +
		"\x02\u0EA9\u0EAB\x03\x02\x02\x02\u0EAA\u0EAC\x05\u0110\x89\x02\u0EAB\u0EAA" +
		"\x03\x02\x02\x02\u0EAB\u0EAC\x03\x02\x02\x02\u0EAC\u0EAE\x03\x02\x02\x02" +
		"\u0EAD\u0EAF\x05\u0112\x8A\x02\u0EAE\u0EAD\x03\x02\x02\x02\u0EAE\u0EAF" +
		"\x03\x02\x02\x02\u0EAF\u0EB1\x03\x02\x02\x02\u0EB0\u0EB2\x05\xFC\x7F\x02" +
		"\u0EB1\u0EB0\x03\x02\x02\x02\u0EB1\u0EB2\x03\x02\x02\x02\u0EB2\u0EB5\x03" +
		"\x02\x02\x02\u0EB3\u0EB4\x07\x13\x02\x02\u0EB4\u0EB6\x05\u019E\xD0\x02" +
		"\u0EB5\u0EB3\x03\x02\x02\x02\u0EB5\u0EB6\x03\x02\x02\x02\u0EB6\u0EB8\x03" +
		"\x02\x02\x02\u0EB7\u0E85\x03\x02\x02\x02\u0EB7\u0E99\x03\x02\x02\x02\u0EB8" +
		"\u0EF2\x03\x02\x02\x02\u0EB9\u0EBA\x07<\x02\x02\u0EBA\u0EBB\x07\xC4\x02" +
		"\x02\u0EBB\u0EBD\x07\u014A\x02\x02\u0EBC\u0EBE\x05.\x18\x02\u0EBD\u0EBC" +
		"\x03\x02\x02\x02\u0EBD\u0EBE\x03\x02\x02\x02\u0EBE\u0EBF\x03\x02\x02\x02" +
		"\u0EBF\u0EEF\x05\u0298\u014D\x02\u0EC0\u0EC2\x05\u0256\u012C\x02\u0EC1" +
		"\u0EC3\x05\xFA~\x02\u0EC2\u0EC1\x03\x02\x02\x02\u0EC2\u0EC3\x03\x02\x02" +
		"\x02\u0EC3\u0EC5\x03\x02\x02\x02\u0EC4\u0EC6\x05\u0110\x89\x02\u0EC5\u0EC4" +
		"\x03\x02\x02\x02\u0EC5\u0EC6\x03\x02\x02\x02\u0EC6\u0EC8\x03\x02\x02\x02" +
		"\u0EC7\u0EC9\x05\u0112\x8A\x02\u0EC8\u0EC7\x03\x02\x02\x02\u0EC8\u0EC9" +
		"\x03\x02\x02\x02\u0EC9\u0ECB\x03\x02\x02\x02\u0ECA\u0ECC\x05\xFC\x7F\x02" +
		"\u0ECB\u0ECA\x03\x02\x02\x02\u0ECB\u0ECC\x03\x02\x02\x02\u0ECC\u0EF0\x03" +
		"\x02\x02\x02\u0ECD\u0ECE\x07\u0190\x02\x02\u0ECE\u0ECF\x05\u0116\x8C\x02" +
		"\u0ECF\u0ED0\x07\u0191\x02\x02\u0ED0\u0ED2\x03\x02\x02\x02\u0ED1\u0ECD" +
		"\x03\x02\x02\x02\u0ED1\u0ED2\x03\x02\x02\x02\u0ED2\u0ED4\x03\x02\x02\x02" +
		"\u0ED3\u0ED5\x05\xDCo\x02\u0ED4\u0ED3\x03\x02\x02\x02\u0ED4\u0ED5\x03" +
		"\x02\x02\x02\u0ED5\u0ED7\x03\x02\x02\x02\u0ED6\u0ED8\x05\xDEp\x02\u0ED7" +
		"\u0ED6\x03\x02\x02\x02\u0ED7\u0ED8\x03\x02\x02\x02\u0ED8\u0EDA\x03\x02" +
		"\x02\x02\u0ED9\u0EDB\x05\xEAv\x02\u0EDA\u0ED9\x03\x02\x02\x02\u0EDA\u0EDB" +
		"\x03\x02\x02\x02\u0EDB\u0EDD\x03\x02\x02\x02\u0EDC\u0EDE\x05\xEEx\x02" +
		"\u0EDD\u0EDC\x03\x02\x02\x02\u0EDD\u0EDE\x03\x02\x02\x02\u0EDE\u0EE0\x03" +
		"\x02\x02\x02\u0EDF\u0EE1\x05\xFA~\x02\u0EE0\u0EDF\x03\x02\x02\x02\u0EE0" +
		"\u0EE1\x03\x02\x02\x02\u0EE1\u0EE3\x03\x02\x02\x02\u0EE2\u0EE4\x05\u0110" +
		"\x89\x02\u0EE3\u0EE2\x03\x02\x02\x02\u0EE3\u0EE4\x03\x02\x02\x02\u0EE4" +
		"\u0EE6\x03\x02\x02\x02\u0EE5\u0EE7\x05\u0112\x8A\x02\u0EE6\u0EE5\x03\x02" +
		"\x02\x02\u0EE6\u0EE7\x03\x02\x02\x02\u0EE7\u0EE9\x03\x02\x02\x02\u0EE8" +
		"\u0EEA\x05\xFC\x7F\x02\u0EE9\u0EE8\x03\x02\x02\x02\u0EE9\u0EEA\x03\x02" +
		"\x02\x02\u0EEA\u0EED\x03\x02\x02\x02\u0EEB\u0EEC\x07\x13\x02\x02\u0EEC" +
		"\u0EEE\x05\u019E\xD0\x02\u0EED\u0EEB\x03\x02\x02\x02\u0EED\u0EEE\x03\x02" +
		"\x02\x02\u0EEE\u0EF0\x03\x02\x02\x02\u0EEF\u0EC0\x03\x02\x02\x02\u0EEF" +
		"\u0ED1\x03\x02\x02\x02\u0EF0\u0EF2\x03\x02\x02\x02\u0EF1\u0E76\x03\x02" +
		"\x02\x02\u0EF1\u0EB9\x03\x02\x02\x02\u0EF2\u0259\x03\x02\x02\x02\u0EF3" +
		"\u0EF4\x07<\x02\x02\u0EF4\u0EF6\x07G\x02\x02\u0EF5\u0EF7\x05.\x18\x02" +
		"\u0EF6\u0EF5\x03\x02\x02\x02\u0EF6\u0EF7\x03\x02\x02\x02\u0EF7\u0EF8\x03" +
		"\x02\x02\x02\u0EF8\u0EFA\x05\u03A0\u01D1\x02\u0EF9\u0EFB\x05\u0260\u0131" +
		"\x02\u0EFA\u0EF9\x03\x02\x02\x02\u0EFA\u0EFB\x03\x02\x02\x02\u0EFB\u0EFD" +
		"\x03\x02\x02\x02\u0EFC\u0EFE\x05\u025E\u0130\x02\u0EFD\u0EFC\x03\x02\x02" +
		"\x02\u0EFD\u0EFE\x03\x02\x02\x02\u0EFE\u0F00\x03\x02\x02\x02\u0EFF\u0F01" +
		"\x05\u025C\u012F\x02\u0F00\u0EFF\x03\x02\x02\x02\u0F00\u0F01\x03\x02\x02" +
		"\x02\u0F01\u0F05\x03\x02\x02\x02\u0F02\u0F03\x07\u0184\x02\x02\u0F03\u0F04" +
		"\x07O\x02\x02\u0F04\u0F06\x05\u0262\u0132\x02\u0F05\u0F02\x03\x02\x02" +
		"\x02\u0F05\u0F06\x03\x02\x02\x02\u0F06\u025B\x03\x02\x02\x02\u0F07\u0F08" +
		"\x071\x02\x02\u0F08\u0F09\x07\u01AB\x02\x02\u0F09\u025D\x03\x02\x02\x02" +
		"\u0F0A\u0F0B\x07\u0170\x02\x02\u0F0B\u0F0C\x07\u01AB\x02\x02\u0F0C\u025F" +
		"\x03\x02\x02\x02\u0F0D\u0F0E\x07\u0161\x02\x02\u0F0E\u0F0F\x07\u01AB\x02" +
		"\x02\u0F0F\u0261\x03\x02\x02\x02\u0F10\u0F11\x07\u0190\x02\x02\u0F11\u0F12" +
		"\x05B\"\x02\u0F12\u0F13\x07\u0191\x02\x02\u0F13\u0263\x03\x02\x02\x02" +
		"\u0F14\u0F15\x07g\x02\x02\u0F15\u0F17\x07G\x02\x02\u0F16\u0F18\x05*\x16" +
		"\x02\u0F17\u0F16\x03\x02\x02\x02\u0F17\u0F18\x03\x02\x02\x02\u0F18\u0F19" +
		"\x03\x02\x02\x02\u0F19\u0F1A\x05\u03A0\u01D1\x02\u0F1A\u0265\x03\x02\x02" +
		"\x02\u0F1B\u0F21\x07\u01A0\x02\x02\u0F1C\u0F1D\x05\u0294\u014B\x02\u0F1D" +
		"\u0F1E\x07\u018C\x02\x02\u0F1E\u0F1F\x07\u01A0\x02\x02\u0F1F\u0F21\x03" +
		"\x02\x02\x02\u0F20\u0F1B\x03\x02\x02\x02\u0F20\u0F1C\x03\x02\x02\x02\u0F21" +
		"\u0267\x03\x02\x02\x02\u0F22\u0F23\x07U\x02\x02\u0F23\u0269\x03\x02\x02" +
		"\x02\u0F24\u0F29\x05\u033E\u01A0\x02\u0F25\u0F26\x07\u018E\x02\x02\u0F26" +
		"\u0F28\x05\u033E\u01A0\x02\u0F27\u0F25\x03\x02\x02\x02\u0F28\u0F2B\x03" +
		"\x02\x02\x02\u0F29\u0F27\x03\x02\x02\x02\u0F29\u0F2A\x03\x02\x02\x02\u0F2A" +
		"\u026B\x03\x02\x02\x02\u0F2B\u0F29\x03\x02\x02\x02\u0F2C\u0F31\x05\u03A0" +
		"\u01D1\x02\u0F2D\u0F2E\x07\u018E\x02\x02\u0F2E\u0F30\x05\u03A0\u01D1\x02" +
		"\u0F2F\u0F2D\x03\x02\x02\x02\u0F30\u0F33\x03\x02\x02\x02\u0F31\u0F2F\x03" +
		"\x02\x02\x02\u0F31\u0F32\x03\x02\x02\x02\u0F32\u026D\x03\x02\x02\x02\u0F33" +
		"\u0F31\x03\x02\x02\x02\u0F34\u0F35\x07\x8D\x02\x02\u0F35\u0F36\x05\u0270" +
		"\u0139\x02\u0F36\u026F\x03\x02\x02\x02\u0F37\u0F38\x05\u027C\u013F\x02" +
		"\u0F38\u0F3B\x05\u0278\u013D\x02\u0F39\u0F3A\x07\u018E\x02\x02\u0F3A\u0F3C" +
		"\x05\u0278\u013D\x02\u0F3B\u0F39\x03\x02\x02\x02\u0F3C\u0F3D\x03\x02\x02" +
		"\x02\u0F3D\u0F3B\x03\x02\x02\x02\u0F3D\u0F3E\x03\x02\x02\x02\u0F3E\u0F41" +
		"\x03\x02\x02\x02\u0F3F\u0F41\x05\u0274\u013B\x02\u0F40\u0F37\x03\x02\x02" +
		"\x02\u0F40\u0F3F\x03\x02\x02\x02\u0F41\u0271\x03\x02\x02\x02\u0F42\u0F46" +
		"\x05\u028A\u0146\x02\u0F43\u0F45\x05\u0280\u0141\x02\u0F44\u0F43\x03\x02" +
		"\x02\x02\u0F45\u0F48\x03\x02\x02\x02\u0F46\u0F44\x03\x02\x02\x02\u0F46" +
		"\u0F47\x03\x02\x02\x02\u0F47\u0F63\x03\x02\x02\x02\u0F48\u0F46\x03\x02" +
		"\x02\x02\u0F49\u0F4D\x05\u02B4\u015B\x02\u0F4A\u0F4C\x05\u0280\u0141\x02" +
		"\u0F4B\u0F4A\x03\x02\x02\x02\u0F4C\u0F4F\x03\x02\x02\x02\u0F4D\u0F4B\x03" +
		"\x02\x02\x02\u0F4D\u0F4E\x03\x02\x02\x02\u0F4E\u0F63\x03\x02\x02\x02\u0F4F" +
		"\u0F4D\x03\x02\x02\x02\u0F50\u0F54\x05\u029E\u0150\x02\u0F51\u0F53\x05" +
		"\u0280\u0141\x02\u0F52\u0F51\x03\x02\x02\x02\u0F53\u0F56\x03\x02\x02\x02" +
		"\u0F54\u0F52\x03\x02\x02\x02\u0F54\u0F55\x03\x02\x02\x02\u0F55\u0F63\x03" +
		"\x02\x02\x02\u0F56\u0F54\x03\x02\x02\x02\u0F57\u0F5B\x05\u02A4\u0153\x02" +
		"\u0F58\u0F5A\x05\u0280\u0141\x02\u0F59\u0F58\x03\x02\x02\x02\u0F5A\u0F5D" +
		"\x03\x02\x02\x02\u0F5B\u0F59\x03\x02\x02\x02\u0F5B\u0F5C\x03\x02\x02\x02" +
		"\u0F5C\u0F63\x03\x02\x02\x02\u0F5D\u0F5B\x03\x02\x02\x02\u0F5E\u0F5F\x07" +
		"\u0190\x02\x02\u0F5F\u0F60\x05\u0274\u013B\x02\u0F60\u0F61\x07\u0191\x02" +
		"\x02\u0F61\u0F63\x03\x02\x02\x02\u0F62\u0F42\x03\x02\x02\x02\u0F62\u0F49" +
		"\x03\x02\x02\x02\u0F62\u0F50\x03\x02\x02\x02\u0F62\u0F57\x03\x02\x02\x02" +
		"\u0F62\u0F5E\x03\x02\x02\x02\u0F63\u0273\x03\x02\x02\x02\u0F64\u0F6F\x05" +
		"\u0272\u013A\x02\u0F65\u0F66\x05\u027E\u0140\x02\u0F66\u0F6B\x05\u0276" +
		"\u013C\x02\u0F67\u0F68\x07\xE1\x02\x02\u0F68\u0F6C\x05\u033E\u01A0\x02" +
		"\u0F69\u0F6A\x07\u0173\x02\x02\u0F6A\u0F6C\x05\u0124\x93\x02\u0F6B\u0F67" +
		"\x03\x02\x02\x02\u0F6B\u0F69\x03\x02\x02\x02\u0F6B\u0F6C\x03\x02\x02\x02" +
		"\u0F6C\u0F6E\x03\x02\x02\x02\u0F6D\u0F65\x03\x02\x02\x02\u0F6E\u0F71\x03" +
		"\x02\x02\x02\u0F6F\u0F6D\x03\x02\x02\x02\u0F6F\u0F70\x03\x02\x02\x02\u0F70" +
		"\u0275\x03\x02\x02\x02\u0F71\u0F6F\x03\x02\x02\x02\u0F72\u0F77\x05\u028A" +
		"\u0146\x02\u0F73\u0F77\x05\u02B4\u015B\x02\u0F74\u0F77\x05\u029E\u0150" +
		"\x02\u0F75\u0F77\x05\u02A4\u0153\x02\u0F76\u0F72\x03\x02\x02\x02\u0F76" +
		"\u0F73\x03\x02\x02\x02\u0F76\u0F74\x03\x02\x02\x02\u0F76\u0F75\x03\x02" +
		"\x02\x02\u0F77\u0F7B\x03\x02\x02\x02\u0F78\u0F7A\x05\u0280\u0141\x02\u0F79" +
		"\u0F78\x03\x02\x02\x02\u0F7A\u0F7D\x03\x02\x02\x02\u0F7B\u0F79\x03\x02" +
		"\x02\x02\u0F7B\u0F7C\x03\x02\x02\x02\u0F7C\u0277\x03\x02\x02\x02\u0F7D" +
		"\u0F7B\x03\x02\x02\x02\u0F7E\u0F80\x07\xFB\x02\x02\u0F7F\u0F7E\x03\x02" +
		"\x02\x02\u0F7F\u0F80\x03\x02\x02\x02\u0F80\u0F81\x03\x02\x02\x02\u0F81" +
		"\u0F82\x05\u028E\u0148\x02\u0F82\u0F83\x05\u027A\u013E\x02\u0F83\u0279" +
		"\x03\x02\x02\x02\u0F84\u0F85\x07\u0190\x02\x02\u0F85\u0F86\x05\u026A\u0136" +
		"\x02\u0F86\u0F87\x07\u0191\x02\x02\u0F87\u027B\x03\x02\x02\x02\u0F88\u0F89" +
		"\x07\u0168\x02\x02\u0F89\u027D\x03\x02\x02\x02\u0F8A\u0F99\x07\u018E\x02" +
		"\x02\u0F8B\u0F96\x07\x9F\x02\x02\u0F8C\u0F96\x07>\x02\x02\u0F8D\u0F8F" +
		"\t\x1B\x02\x02\u0F8E\u0F90\x07\xE8\x02\x02\u0F8F\u0F8E\x03\x02\x02\x02" +
		"\u0F8F\u0F90\x03\x02\x02\x02\u0F90\u0F96\x03\x02\x02\x02\u0F91\u0F93\x07" +
		"\xB6\x02\x02\u0F92\u0F94\t\x1C\x02\x02\u0F93\u0F92\x03\x02\x02\x02\u0F93" +
		"\u0F94\x03\x02\x02\x02\u0F94\u0F96\x03\x02\x02\x02\u0F95\u0F8B\x03\x02" +
		"\x02\x02\u0F95\u0F8C\x03\x02\x02\x02\u0F95\u0F8D\x03\x02\x02\x02\u0F95" +
		"\u0F91\x03\x02\x02\x02\u0F95\u0F96\x03\x02\x02\x02\u0F96\u0F97\x03\x02" +
		"\x02\x02\u0F97\u0F99\x07\xAD\x02\x02\u0F98\u0F8A\x03\x02\x02\x02\u0F98" +
		"\u0F95\x03\x02\x02\x02\u0F99\u027F\x03\x02\x02\x02\u0F9A\u0F9B\x07\xB4" +
		"\x02\x02\u0F9B\u0F9C\x07\u017B\x02\x02\u0F9C\u0F9D\x07\xE8\x02\x02\u0F9D" +
		"\u0F9E\x05\u030A\u0186\x02\u0F9E\u0FA8\x05\u0282\u0142\x02\u0F9F\u0FA0" +
		"\x07\x13\x02\x02\u0FA0\u0FA5\x05\u03A0\u01D1\x02\u0FA1\u0FA2\x07\u018E" +
		"\x02\x02\u0FA2\u0FA4\x05\u03A0\u01D1\x02\u0FA3\u0FA1\x03\x02\x02\x02\u0FA4" +
		"\u0FA7\x03\x02\x02\x02\u0FA5\u0FA3\x03\x02\x02\x02\u0FA5\u0FA6\x03\x02" +
		"\x02\x02\u0FA6\u0FA9\x03\x02\x02\x02\u0FA7\u0FA5\x03\x02\x02\x02\u0FA8" +
		"\u0F9F\x03\x02\x02\x02\u0FA8\u0FA9\x03\x02\x02\x02\u0FA9\u0FD4\x03\x02" +
		"\x02\x02\u0FAA\u0FAC\x07\u018E\x02\x02\u0FAB\u0FAA\x03\x02\x02\x02\u0FAB" +
		"\u0FAC\x03\x02\x02\x02\u0FAC\u0FAD\x03\x02\x02\x02\u0FAD\u0FD1\x07\xB4" +
		"\x02\x02\u0FAE\u0FAF\x07\u017B\x02\x02\u0FAF\u0FB0\x05\u030A\u0186\x02" +
		"\u0FB0\u0FBA\x05\u0282\u0142\x02\u0FB1\u0FB2\x07\x13\x02\x02\u0FB2\u0FB7" +
		"\x05\u03A0\u01D1\x02\u0FB3\u0FB4\x07\u018E\x02\x02\u0FB4\u0FB6\x05\u03A0" +
		"\u01D1\x02\u0FB5\u0FB3\x03\x02\x02\x02\u0FB6\u0FB9\x03\x02\x02\x02\u0FB7" +
		"\u0FB5\x03\x02\x02\x02\u0FB7\u0FB8\x03\x02\x02\x02\u0FB8\u0FBB\x03\x02" +
		"\x02\x02\u0FB9\u0FB7\x03\x02\x02\x02\u0FBA\u0FB1\x03\x02\x02\x02\u0FBA" +
		"\u0FBB\x03\x02\x02\x02\u0FBB\u0FD2\x03\x02\x02\x02\u0FBC\u0FBD\x07\u014A" +
		"\x02\x02\u0FBD\u0FBE\x07\u0190\x02\x02\u0FBE\u0FBF\x05\u02AC\u0157\x02" +
		"\u0FBF\u0FC1\x07\u0191\x02\x02\u0FC0\u0FC2\x07\x13\x02\x02\u0FC1\u0FC0" +
		"\x03\x02\x02\x02\u0FC1\u0FC2\x03\x02\x02\x02\u0FC2\u0FC3\x03\x02\x02\x02" +
		"\u0FC3\u0FCF\x05\u0282\u0142\x02\u0FC4\u0FC5\x07\u0190\x02\x02\u0FC5\u0FCA" +
		"\x05\u03A0\u01D1\x02\u0FC6\u0FC7\x07\u018E\x02\x02\u0FC7\u0FC9\x05\u03A0" +
		"\u01D1\x02\u0FC8\u0FC6\x03\x02\x02\x02\u0FC9\u0FCC\x03\x02\x02\x02\u0FCA" +
		"\u0FC8\x03\x02\x02\x02\u0FCA\u0FCB\x03\x02\x02\x02\u0FCB\u0FCD\x03\x02" +
		"\x02\x02\u0FCC\u0FCA\x03\x02\x02\x02\u0FCD\u0FCE\x07\u0191\x02\x02\u0FCE" +
		"\u0FD0\x03\x02\x02\x02\u0FCF\u0FC4\x03\x02\x02\x02\u0FCF\u0FD0\x03\x02" +
		"\x02\x02\u0FD0\u0FD2\x03\x02\x02\x02\u0FD1\u0FAE\x03\x02\x02\x02\u0FD1" +
		"\u0FBC\x03\x02\x02\x02\u0FD2\u0FD4\x03\x02\x02\x02\u0FD3\u0F9A\x03\x02" +
		"\x02\x02\u0FD3\u0FAB\x03\x02\x02\x02\u0FD4\u0281\x03\x02\x02\x02\u0FD5" +
		"\u0FD6\x05\u03A0\u01D1\x02\u0FD6\u0283\x03\x02\x02\x02\u0FD7\u0FD8\x07" +
		"\u014C\x02\x02\u0FD8\u0FD9\x07\u0190\x02\x02\u0FD9\u0FDA\x07 \x02\x02" +
		"\u0FDA\u0FDB\x07\u01B0\x02\x02\u0FDB\u0FDC\x07\xE7\x02\x02\u0FDC\u0FDD" +
		"\x07\xDE\x02\x02\u0FDD\u0FE7\x07\u01B0\x02\x02\u0FDE\u0FDF\x07\xE1\x02" +
		"\x02\u0FDF\u0FE4\x05\u033E\u01A0\x02\u0FE0\u0FE1\x07\u018E\x02\x02\u0FE1" +
		"\u0FE3\x05\u033E\u01A0\x02\u0FE2\u0FE0\x03\x02\x02\x02\u0FE3\u0FE6\x03" +
		"\x02\x02\x02\u0FE4\u0FE2\x03\x02\x02\x02\u0FE4\u0FE5\x03\x02\x02\x02\u0FE5" +
		"\u0FE8\x03\x02\x02\x02\u0FE6\u0FE4\x03\x02\x02\x02\u0FE7\u0FDE\x03\x02" +
		"\x02\x02\u0FE7\u0FE8\x03\x02\x02\x02\u0FE8\u0FE9\x03\x02\x02\x02\u0FE9" +
		"\u0FEA\x07\u0191\x02\x02\u0FEA\u0285\x03\x02\x02\x02\u0FEB\u0FEC\x07\u014C" +
		"\x02\x02\u0FEC\u0FF0\x07\u0190\x02\x02\u0FED\u0FEE\x07\u01B0\x02\x02\u0FEE" +
		"\u0FF1\t\x1D\x02\x02\u0FEF\u0FF1\x07\u01AF\x02\x02\u0FF0\u0FED\x03\x02" +
		"\x02\x02\u0FF0\u0FEF\x03\x02\x02\x02\u0FF1\u0FF2\x03\x02\x02\x02\u0FF2" +
		"\u0FF3\x07\u0191\x02\x02\u0FF3\u0287\x03\x02\x02\x02\u0FF4\u0FF7\x05\u0284" +
		"\u0143\x02\u0FF5\u0FF7\x05\u0286\u0144\x02\u0FF6\u0FF4\x03\x02\x02\x02" +
		"\u0FF6\u0FF5\x03\x02\x02\x02\u0FF7\u0289\x03\x02\x02\x02\u0FF8\u0FFA\x05" +
		"\u0294\u014B\x02\u0FF9\u0FFB\x05\xFE\x80\x02\u0FFA\u0FF9\x03\x02\x02\x02" +
		"\u0FFA\u0FFB\x03\x02\x02\x02\u0FFB\u0FFD\x03\x02\x02\x02\u0FFC\u0FFE\x05" +
		"\u0288\u0145\x02\u0FFD\u0FFC\x03\x02\x02\x02\u0FFD\u0FFE\x03\x02\x02\x02" +
		"\u0FFE\u1000\x03\x02\x02\x02\u0FFF\u1001\x05\u028C\u0147\x02\u1000\u0FFF" +
		"\x03\x02\x02\x02\u1000\u1001\x03\x02\x02\x02\u1001\u1006\x03\x02\x02\x02" +
		"\u1002\u1004\x07\x13\x02\x02\u1003\u1002\x03\x02\x02\x02\u1003\u1004\x03" +
		"\x02\x02\x02\u1004\u1005\x03\x02\x02\x02\u1005\u1007\x05\u03A0\u01D1\x02" +
		"\u1006\u1003\x03\x02\x02\x02\u1006\u1007\x03\x02\x02\x02\u1007\u028B\x03" +
		"\x02\x02\x02\u1008\u1012\x07\x88\x02\x02\u1009\u100A\x07\u0148\x02\x02" +
		"\u100A\u100B\x07\x13\x02\x02\u100B\u100C\x07\xDE\x02\x02\u100C\u1013\x05" +
		"\u033E\u01A0\x02\u100D\u100E\x07\x88\x02\x02\u100E\u100F\x07\u0149\x02" +
		"\x02\u100F\u1010\x07\x13\x02\x02\u1010\u1011\x07\xDE\x02\x02\u1011\u1013" +
		"\x07\u01B0\x02\x02\u1012\u1009\x03\x02\x02\x02\u1012\u100D\x03\x02\x02" +
		"\x02\u1013\u028D\x03\x02\x02\x02\u1014\u1016\x05\u0294\u014B\x02\u1015" +
		"\u1017\x05\u0288\u0145\x02\u1016\u1015\x03\x02\x02\x02\u1016\u1017\x03" +
		"\x02\x02\x02\u1017\u101C\x03\x02\x02\x02\u1018\u101A\x07\x13\x02\x02\u1019" +
		"\u1018\x03\x02\x02\x02\u1019\u101A\x03\x02\x02\x02\u101A\u101B\x03\x02" +
		"\x02\x02\u101B\u101D\x05\u03A0\u01D1\x02\u101C\u1019\x03\x02\x02\x02\u101C" +
		"\u101D\x03\x02\x02\x02\u101D\u028F\x03\x02\x02\x02\u101E\u101F\x05\u03A0" +
		"\u01D1\x02\u101F\u0291\x03\x02\x02\x02\u1020\u1021\x05\u03A0\u01D1\x02" +
		"\u1021\u0293\x03\x02\x02\x02\u1022\u1025\x05\u0296\u014C\x02\u1023\u1025" +
		"\x05\u029A\u014E\x02\u1024\u1022\x03\x02\x02\x02\u1024\u1023\x03\x02\x02" +
		"\x02\u1025\u0295\x03\x02\x02\x02\u1026\u1027\x05\u03A0\u01D1\x02\u1027" +
		"\u1028\x07\u018C\x02\x02\u1028\u102B\x05\u03A0\u01D1\x02\u1029\u102A\x07" +
		"\u018C\x02\x02\u102A\u102C\x05\u03A0\u01D1\x02\u102B\u1029\x03\x02\x02" +
		"\x02\u102B\u102C\x03\x02\x02\x02\u102C\u102F\x03\x02\x02\x02\u102D\u102F" +
		"\x05\u03A0\u01D1\x02\u102E\u1026\x03\x02\x02\x02\u102E\u102D\x03\x02\x02" +
		"\x02\u102F\u0297\x03\x02\x02\x02\u1030\u1031\x05\u03A0\u01D1\x02\u1031" +
		"\u1032\x07\u018C\x02\x02\u1032\u1035\x05\u03A0\u01D1\x02\u1033\u1034\x07" +
		"\u018C\x02\x02\u1034\u1036\x05\u03A0\u01D1\x02\u1035\u1033\x03\x02\x02" +
		"\x02\u1035\u1036\x03\x02\x02\x02\u1036\u1039\x03\x02\x02\x02\u1037\u1039" +
		"\x05\u03A0\u01D1\x02\u1038\u1030\x03\x02\x02\x02\u1038\u1037\x03\x02\x02" +
		"\x02\u1039\u0299\x03\x02\x02\x02\u103A\u103B\x05\u03A0\u01D1\x02\u103B" +
		"\u103C\x07\u018C\x02\x02\u103C\u103E\x03\x02\x02\x02\u103D\u103A\x03\x02" +
		"\x02\x02\u103D\u103E\x03\x02\x02\x02\u103E\u103F\x03\x02\x02\x02\u103F" +
		"\u1040\x05\u03A0\u01D1\x02\u1040\u029B\x03\x02\x02\x02\u1041\u1042\x05" +
		"\u03A0\u01D1\x02\u1042\u1043\x07\u018C\x02\x02\u1043\u1045\x03\x02\x02" +
		"\x02\u1044\u1041\x03\x02\x02\x02\u1044\u1045\x03\x02\x02\x02\u1045\u1046" +
		"\x03\x02\x02\x02\u1046\u1047\x05\u03A0\u01D1\x02\u1047\u029D\x03\x02\x02" +
		"\x02\u1048\u1049\x07\u0190\x02\x02\u1049\u104A\x05\u018A\xC6\x02\u104A" +
		"\u104C\x07\u0191\x02\x02\u104B\u104D\x07\x13\x02\x02\u104C\u104B\x03\x02" +
		"\x02\x02\u104C\u104D\x03\x02\x02\x02\u104D\u104E\x03\x02\x02\x02\u104E" +
		"\u104F\x05\u03A0\u01D1\x02\u104F\u029F\x03\x02\x02\x02\u1050\u1052\x05" +
		"\u0302\u0182\x02\u1051\u1053\x05\u02FE\u0180\x02\u1052\u1051\x03\x02\x02" +
		"\x02\u1052\u1053\x03\x02\x02\x02\u1053\u105C\x03\x02\x02\x02\u1054\u105C" +
		"\x05\u02FE\u0180\x02\u1055\u1057\x05\u0304\u0183\x02\u1056\u1058\x05\u0306" +
		"\u0184\x02\u1057\u1056\x03\x02\x02\x02\u1057\u1058\x03\x02\x02\x02\u1058" +
		"\u105C\x03\x02\x02\x02\u1059\u105C\x05\u0306\u0184\x02\u105A\u105C\x05" +
		"\u0300\u0181\x02\u105B\u1050\x03\x02\x02\x02\u105B\u1054\x03\x02\x02\x02" +
		"\u105B\u1055\x03\x02\x02\x02\u105B\u1059\x03\x02\x02\x02\u105B\u105A\x03" +
		"\x02\x02\x02\u105C\u02A1\x03\x02\x02\x02\u105D\u1061\x05\u029E\u0150\x02" +
		"\u105E\u1061\x05\u028A\u0146\x02\u105F\u1061\x05\u02A4\u0153\x02\u1060" +
		"\u105D\x03\x02\x02\x02\u1060\u105E\x03\x02\x02\x02\u1060\u105F\x03\x02" +
		"\x02\x02\u1061\u02A3\x03\x02\x02\x02\u1062\u1063\x05\u03A0\u01D1\x02\u1063" +
		"\u1064\x07\u0190\x02\x02\u1064\u1065\x07\xE1\x02\x02\u1065\u1067\x05\u02A2" +
		"\u0152\x02\u1066\u1068\x05\u02A0\u0151\x02\u1067\u1066\x03\x02\x02\x02" +
		"\u1067\u1068\x03\x02\x02\x02\u1068\u1078\x03\x02\x02\x02\u1069\u106A\x07" +
		"\u01B1\x02\x02\u106A\u106B\x07\u0190\x02\x02\u106B\u106C\x05\u033E\u01A0" +
		"\x02\u106C\u1075\x07\u0191\x02\x02\u106D\u106E\x07\u018E\x02\x02\u106E" +
		"\u106F\x07\u01B1\x02\x02\u106F\u1070\x07\u0190\x02\x02\u1070\u1071\x05" +
		"\u033E\u01A0\x02\u1071\u1072\x07\u0191\x02\x02\u1072\u1074\x03\x02\x02" +
		"\x02\u1073\u106D\x03\x02\x02\x02\u1074\u1077\x03\x02\x02\x02\u1075\u1073" +
		"\x03\x02\x02\x02\u1075\u1076\x03\x02\x02\x02\u1076\u1079\x03\x02\x02\x02" +
		"\u1077\u1075\x03\x02\x02\x02\u1078\u1069\x03\x02\x02\x02\u1078\u1079\x03" +
		"\x02\x02\x02\u1079\u107A\x03\x02\x02\x02\u107A\u107C\x07\u0191\x02\x02" +
		"\u107B\u107D\x05\u03A0\u01D1\x02\u107C\u107B\x03\x02\x02\x02\u107C\u107D" +
		"\x03\x02\x02\x02\u107D\u02A5\x03\x02\x02\x02\u107E\u107F\x07\u0181\x02" +
		"\x02\u107F\u1080\x05\u02A8\u0155\x02\u1080\u02A7\x03\x02\x02\x02\u1081" +
		"\u1082\x05\u033E\u01A0\x02\u1082\u02A9\x03\x02\x02\x02\u1083\u1084\x05" +
		"\u02AC\u0157\x02\u1084\u02AB\x03\x02\x02\x02\u1085\u1086\x07\u0177\x02" +
		"\x02\u1086\u1087\x05\u02AE\u0158\x02\u1087\u02AD\x03\x02\x02\x02\u1088" +
		"\u108D\x05\u02B0\u0159\x02\u1089\u108A\x07\u018E\x02\x02\u108A\u108C\x05" +
		"\u02B0\u0159\x02\u108B\u1089\x03\x02\x02\x02\u108C\u108F\x03\x02\x02\x02" +
		"\u108D\u108B\x03\x02\x02\x02\u108D\u108E\x03\x02\x02\x02\u108E\u1099\x03" +
		"\x02\x02\x02\u108F\u108D\x03\x02\x02\x02\u1090\u1095\x05\u02B2\u015A\x02" +
		"\u1091\u1092\x07\u018E\x02\x02\u1092\u1094\x05\u02B0\u0159\x02\u1093\u1091" +
		"\x03\x02\x02\x02\u1094\u1097\x03\x02\x02\x02\u1095\u1093\x03\x02\x02\x02" +
		"\u1095\u1096\x03\x02\x02\x02\u1096\u1099\x03\x02\x02\x02\u1097\u1095\x03" +
		"\x02\x02\x02\u1098\u1088\x03\x02\x02\x02\u1098\u1090\x03\x02\x02\x02\u1099" +
		"\u02AF\x03\x02\x02\x02\u109A\u109B\x05\u02EC\u0177\x02\u109B\u02B1\x03" +
		"\x02\x02\x02\u109C\u109D\x07\u0190\x02\x02\u109D\u109E\x05\u02F4\u017B" +
		"\x02\u109E\u109F\x07\u0191\x02\x02\u109F\u02B3\x03\x02\x02\x02\u10A0\u10A1" +
		"\x07\u014A\x02\x02\u10A1\u10A2\x07\u0190\x02\x02\u10A2\u10A3\x05\u02AC" +
		"\u0157\x02\u10A3\u10A5\x07\u0191";
	private static readonly _serializedATNSegment8: string =
		"\x02\x02\u10A4\u10A6\x07\x13\x02\x02\u10A5\u10A4\x03\x02\x02\x02\u10A5" +
		"\u10A6\x03\x02\x02\x02\u10A6\u10A7\x03\x02\x02\x02\u10A7\u10B1\x05\u0282" +
		"\u0142\x02\u10A8\u10A9\x07\u0190\x02\x02\u10A9\u10AE\x05\u03A0\u01D1\x02" +
		"\u10AA\u10AB\x07\u018E\x02\x02\u10AB\u10AD\x05\u03A0\u01D1\x02\u10AC\u10AA" +
		"\x03\x02\x02\x02\u10AD\u10B0\x03\x02\x02\x02\u10AE\u10AC\x03\x02\x02\x02" +
		"\u10AE\u10AF\x03\x02\x02\x02\u10AF\u10B2\x03\x02\x02\x02\u10B0\u10AE\x03" +
		"\x02\x02\x02\u10B1\u10A8\x03\x02\x02\x02\u10B1\u10B2\x03\x02\x02\x02\u10B2" +
		"\u10B3\x03\x02\x02\x02\u10B3\u10B4\x07\u0191\x02\x02\u10B4\u02B5\x03\x02" +
		"\x02\x02\u10B5\u10B7\x07\u012C\x02\x02\u10B6\u10B8\x07\u01B5\x02\x02\u10B7" +
		"\u10B6\x03\x02\x02\x02\u10B7\u10B8\x03\x02\x02\x02\u10B8\u10BF\x03\x02" +
		"\x02\x02\u10B9\u10BB\x05\u02B8\u015D\x02\u10BA\u10B9\x03\x02\x02\x02\u10BA" +
		"\u10BB\x03\x02\x02\x02\u10BB\u10BC\x03\x02\x02\x02\u10BC\u10C0\x05\u02BA" +
		"\u015E\x02\u10BD\u10BE\x07\u015C\x02\x02\u10BE\u10C0\x05\u02BC\u015F\x02" +
		"\u10BF\u10BA\x03\x02\x02\x02\u10BF\u10BD\x03\x02\x02\x02\u10C0\u10C3\x03" +
		"\x02\x02\x02\u10C1\u10C3\x05\u02C0\u0161\x02\u10C2\u10B5\x03\x02\x02\x02" +
		"\u10C2\u10C1\x03\x02\x02\x02\u10C3\u02B7\x03\x02\x02\x02\u10C4\u10C5\t" +
		"\x16\x02\x02\u10C5\u02B9\x03\x02\x02\x02\u10C6\u10CB\x05\u02BE\u0160\x02" +
		"\u10C7\u10C8\x07\u018E\x02\x02\u10C8\u10CA\x05\u02BE\u0160\x02\u10C9\u10C7" +
		"\x03\x02\x02\x02\u10CA\u10CD\x03\x02\x02\x02\u10CB\u10C9\x03\x02\x02\x02" +
		"\u10CB\u10CC\x03\x02\x02\x02\u10CC\u02BB\x03\x02\x02\x02\u10CD\u10CB\x03" +
		"\x02\x02\x02\u10CE\u10CF\x07\u0190\x02\x02\u10CF\u10D0\x05\u02C4\u0163" +
		"\x02\u10D0\u10D1\x07\u0191\x02\x02\u10D1\u10D2\x05\xF0y\x02\u10D2\u10D3" +
		"\x05\xF4{\x02\u10D3\u10D4\x07\u0173\x02\x02\u10D4\u10E1\x07\u01AB\x02" +
		"\x02\u10D5\u10DF\x07\x13\x02\x02\u10D6\u10D9\x07\u0190\x02\x02\u10D7\u10DA" +
		"\x05\u026C\u0137\x02\u10D8\u10DA\x05\u0114\x8B\x02\u10D9\u10D7\x03\x02" +
		"\x02\x02\u10D9\u10D8\x03\x02\x02\x02\u10DA\u10DB\x03\x02\x02\x02\u10DB" +
		"\u10DC\x07\u0191\x02\x02\u10DC\u10E0\x03\x02\x02\x02\u10DD\u10E0\x05\u026C" +
		"\u0137\x02\u10DE\u10E0\x05\u0114\x8B\x02\u10DF\u10D6\x03\x02\x02\x02\u10DF" +
		"\u10DD\x03\x02\x02\x02\u10DF\u10DE\x03\x02\x02\x02\u10E0\u10E2\x03\x02" +
		"\x02\x02\u10E1\u10D5\x03\x02\x02\x02\u10E1\u10E2\x03\x02\x02\x02\u10E2" +
		"\u10E3\x03\x02\x02\x02\u10E3\u10E4\x05\xF0y\x02\u10E4\u10E5\x05\xF2z\x02" +
		"\u10E5\u02BD\x03\x02\x02\x02\u10E6\u10FE\x05\u0266\u0134\x02\u10E7\u10EA" +
		"\x05\u011C\x8F\x02\u10E8\u10EA\x05\u033E\u01A0\x02\u10E9\u10E7\x03\x02" +
		"\x02\x02\u10E9\u10E8\x03\x02\x02\x02\u10EA\u10FB\x03\x02\x02\x02\u10EB" +
		"\u10ED\x07\x13\x02\x02\u10EC\u10EB\x03\x02\x02\x02\u10EC\u10ED\x03\x02" +
		"\x02\x02\u10ED\u10EE\x03\x02\x02\x02\u10EE\u10FC\x05\u03A0\u01D1\x02\u10EF" +
		"\u10F0\x07\x13\x02\x02\u10F0\u10F1\x07\u0190\x02\x02\u10F1\u10F6\x05\u03A0" +
		"\u01D1\x02\u10F2\u10F3\x07\u018E\x02\x02\u10F3\u10F5\x05\u03A0\u01D1\x02" +
		"\u10F4\u10F2\x03\x02\x02\x02\u10F5\u10F8\x03\x02\x02\x02\u10F6\u10F4\x03" +
		"\x02\x02\x02\u10F6\u10F7\x03\x02\x02\x02\u10F7\u10F9\x03\x02\x02\x02\u10F8" +
		"\u10F6\x03\x02\x02\x02\u10F9\u10FA\x07\u0191\x02\x02\u10FA\u10FC\x03\x02" +
		"\x02\x02\u10FB\u10EC\x03\x02\x02\x02\u10FB\u10EF\x03\x02\x02\x02\u10FB" +
		"\u10FC\x03\x02\x02\x02\u10FC\u10FE\x03\x02\x02\x02\u10FD\u10E6\x03\x02" +
		"\x02\x02\u10FD\u10E9\x03\x02\x02\x02\u10FE\u02BF\x03\x02\x02\x02\u10FF" +
		"\u1100\t\x1E\x02\x02\u1100\u1101\x05\u02C4\u0163\x02\u1101\u1102\x05\xF0" +
		"y\x02\u1102\u1103\x05\xF4{\x02\u1103\u1104\x07\u0173\x02\x02\u1104\u1111" +
		"\x07\u01AB\x02\x02\u1105\u110F\x07\x13\x02\x02\u1106\u1109\x07\u0190\x02" +
		"\x02\u1107\u110A\x05\u026C\u0137\x02\u1108\u110A\x05\u0114\x8B\x02\u1109" +
		"\u1107\x03\x02\x02\x02\u1109\u1108\x03\x02\x02\x02\u110A\u110B\x03\x02" +
		"\x02\x02\u110B\u110C\x07\u0191\x02\x02\u110C\u1110\x03\x02\x02\x02\u110D" +
		"\u1110\x05\u026C\u0137\x02\u110E\u1110\x05\u0114\x8B\x02\u110F\u1106\x03" +
		"\x02\x02\x02\u110F\u110D\x03\x02\x02\x02\u110F\u110E\x03\x02\x02\x02\u1110" +
		"\u1112\x03\x02\x02\x02\u1111\u1105\x03\x02\x02\x02\u1111\u1112\x03\x02" +
		"\x02\x02\u1112\u1113\x03\x02\x02\x02\u1113\u1114\x05\xF0y\x02\u1114\u1115" +
		"\x05\xF2z\x02\u1115\u02C1\x03\x02\x02\x02\u1116\u1119\x05\u0266\u0134" +
		"\x02\u1117\u1119\x05\u033E\u01A0\x02\u1118\u1116\x03\x02\x02\x02\u1118" +
		"\u1117\x03\x02\x02\x02\u1119\u02C3\x03\x02\x02\x02\u111A\u111F\x05\u02C2" +
		"\u0162\x02\u111B\u111C\x07\u018E\x02\x02\u111C\u111E\x05\u02C2\u0162\x02" +
		"\u111D\u111B\x03\x02\x02\x02\u111E\u1121\x03\x02\x02\x02\u111F\u111D\x03" +
		"\x02\x02\x02\u111F\u1120\x03\x02\x02\x02\u1120\u02C5\x03\x02\x02\x02\u1121" +
		"\u111F\x03\x02\x02\x02\u1122\u1123\x07\u0183\x02\x02\u1123\u1128\x05\u02C8" +
		"\u0165\x02\u1124\u1125\x07\u018E\x02\x02\u1125\u1127\x05\u02C8\u0165\x02" +
		"\u1126\u1124\x03\x02\x02\x02\u1127\u112A\x03\x02\x02\x02\u1128\u1126\x03" +
		"\x02\x02\x02\u1128\u1129\x03\x02\x02\x02\u1129\u02C7\x03\x02\x02\x02\u112A" +
		"\u1128\x03\x02\x02\x02\u112B\u112C\x05\u03A0\u01D1\x02\u112C\u112D\x07" +
		"\x13\x02\x02\u112D\u112E\x05\u02CA\u0166\x02\u112E\u02C9\x03\x02\x02\x02" +
		"\u112F\u113C\x05\u03A0\u01D1\x02\u1130\u1132\x07\u0190\x02\x02\u1131\u1133" +
		"\x05\u03A0\u01D1\x02\u1132\u1131\x03\x02\x02\x02\u1132\u1133\x03\x02\x02" +
		"\x02\u1133\u1135\x03\x02\x02\x02\u1134\u1136\x05\u02A0\u0151\x02\u1135" +
		"\u1134\x03\x02\x02\x02\u1135\u1136\x03\x02\x02\x02\u1136\u1138\x03\x02" +
		"\x02\x02\u1137\u1139\x05\u02CC\u0167\x02\u1138\u1137\x03\x02\x02\x02\u1138" +
		"\u1139\x03\x02\x02\x02\u1139\u113A\x03\x02\x02\x02\u113A\u113C\x07\u0191" +
		"\x02\x02\u113B\u112F\x03\x02\x02\x02\u113B\u1130\x03\x02\x02\x02\u113C" +
		"\u02CB\x03\x02\x02\x02\u113D\u1140\x05\u02CE\u0168\x02\u113E\u1140\x05" +
		"\u02D0\u0169\x02\u113F\u113D\x03\x02\x02\x02\u113F\u113E\x03\x02\x02\x02" +
		"\u1140\u02CD\x03\x02\x02\x02\u1141\u1148\x07\u0125\x02\x02\u1142\u1149" +
		"\x05\u02D2\u016A\x02\u1143\u1144\x07\x1B\x02\x02\u1144\u1145\x05\u02D4" +
		"\u016B\x02\u1145\u1146\x07\r\x02\x02\u1146\u1147\x05\u02D4\u016B\x02\u1147" +
		"\u1149\x03\x02\x02\x02\u1148\u1142\x03\x02\x02\x02\u1148\u1143\x03\x02" +
		"\x02\x02\u1149\u02CF\x03\x02\x02\x02\u114A\u1151\x07\u0105\x02\x02\u114B" +
		"\u1152\x05\u02D2\u016A\x02\u114C\u114D\x07\x1B\x02\x02\u114D\u114E\x05" +
		"\u02D4\u016B\x02\u114E\u114F\x07\r\x02\x02\u114F\u1150\x05\u02D4\u016B" +
		"\x02\u1150\u1152\x03\x02\x02\x02\u1151\u114B\x03\x02\x02\x02\u1151\u114C" +
		"\x03\x02\x02\x02\u1152\u02D1\x03\x02\x02\x02\u1153\u1154\x07\u0163\x02" +
		"\x02\u1154\u115A\x07\xF8\x02\x02\u1155\u1156\x07@\x02\x02\u1156\u115A" +
		"\x07\u0124\x02\x02\u1157\u1158\x07\u01B0\x02\x02\u1158\u115A\x07\xF8\x02" +
		"\x02\u1159\u1153\x03\x02\x02\x02\u1159\u1155\x03\x02\x02\x02\u1159\u1157" +
		"\x03\x02\x02\x02\u115A\u02D3\x03\x02\x02\x02\u115B\u115C\t\x1F\x02\x02" +
		"\u115C\u1160\t \x02\x02\u115D\u115E\x07@\x02\x02\u115E\u1160\x07\u0124" +
		"\x02\x02\u115F\u115B\x03\x02\x02\x02\u115F\u115D\x03\x02\x02\x02\u1160" +
		"\u02D5\x03\x02\x02\x02\u1161\u1162\x07\x92\x02\x02\u1162\u1163\x07\"\x02" +
		"\x02\u1163\u1164\x05\u02D8\u016D\x02\u1164\u02D7\x03\x02\x02\x02\u1165" +
		"\u116A\x05\u011C\x8F\x02\u1166\u116A\x05\u02DC\u016F\x02\u1167\u116A\x05" +
		"\u02DE\u0170\x02\u1168\u116A\x05\u02DA\u016E\x02\u1169\u1165\x03\x02\x02" +
		"\x02\u1169\u1166\x03\x02\x02\x02\u1169\u1167\x03\x02\x02\x02\u1169\u1168" +
		"\x03\x02\x02\x02\u116A\u02D9\x03\x02\x02\x02\u116B\u116C\x07\u0190\x02" +
		"\x02\u116C\u116D\x07\u0191\x02\x02\u116D\u02DB\x03\x02\x02\x02\u116E\u1171" +
		"\x07\u0123\x02\x02\u116F\u1171\x07?\x02\x02\u1170\u116E\x03\x02\x02\x02" +
		"\u1170\u116F\x03\x02\x02\x02\u1171\u1172\x03\x02\x02\x02\u1172\u1173\x07" +
		"\u0190\x02\x02\u1173\u1178\x05\u033E\u01A0\x02\u1174\u1175\x07\u018E\x02" +
		"\x02\u1175\u1177\x05\u033E\u01A0\x02\u1176\u1174\x03\x02\x02\x02\u1177" +
		"\u117A\x03\x02\x02\x02\u1178\u1176\x03\x02\x02\x02\u1178\u1179\x03\x02" +
		"\x02\x02\u1179\u117B\x03\x02\x02\x02\u117A\u1178\x03\x02\x02\x02\u117B" +
		"\u117C\x07\u0191\x02\x02\u117C\u02DD\x03\x02\x02\x02\u117D\u1182\x05\u02EE" +
		"\u0178\x02\u117E\u117F\x07\u0184\x02\x02\u117F\u1183\x07\u0123\x02\x02" +
		"\u1180\u1181\x07\u0184\x02\x02\u1181\u1183\x07?\x02\x02\u1182\u117E\x03" +
		"\x02\x02\x02\u1182\u1180\x03\x02\x02\x02\u1182\u1183\x03\x02\x02\x02\u1183" +
		"\u1191\x03\x02\x02\x02\u1184\u1185\x07\x93\x02\x02\u1185\u1186\x07\u0132" +
		"\x02\x02\u1186\u1187\x07\u0190\x02\x02\u1187\u118C\x05\u02E0\u0171\x02" +
		"\u1188\u1189\x07\u018E\x02\x02\u1189\u118B\x05\u02E0\u0171\x02\u118A\u1188" +
		"\x03\x02\x02\x02\u118B\u118E\x03\x02\x02\x02\u118C\u118A\x03\x02\x02\x02" +
		"\u118C\u118D\x03\x02\x02\x02\u118D\u118F\x03\x02\x02\x02\u118E\u118C\x03" +
		"\x02\x02\x02\u118F\u1190\x07\u0191\x02\x02\u1190\u1192\x03\x02\x02\x02" +
		"\u1191\u1184\x03\x02\x02\x02\u1191\u1192\x03\x02\x02\x02\u1192\u02DF\x03" +
		"\x02\x02\x02\u1193\u1196\x05\u02E2\u0172\x02\u1194\u1196\x05\u02E4\u0173" +
		"\x02\u1195\u1193\x03\x02\x02\x02\u1195\u1194\x03\x02\x02\x02\u1196\u02E1" +
		"\x03\x02\x02\x02\u1197\u1199\x07\u0190\x02\x02\u1198\u119A\x05\u033E\u01A0" +
		"\x02\u1199\u1198\x03\x02\x02\x02\u1199\u119A\x03\x02\x02\x02\u119A\u119F" +
		"\x03\x02\x02\x02\u119B\u119C\x07\u018E\x02\x02\u119C\u119E\x05\u033E\u01A0" +
		"\x02\u119D\u119B\x03\x02\x02\x02\u119E\u11A1\x03\x02\x02\x02\u119F\u119D" +
		"\x03\x02\x02\x02\u119F\u11A0\x03\x02\x02\x02\u11A0\u11A2\x03\x02\x02\x02" +
		"\u11A1\u119F\x03\x02\x02\x02\u11A2\u11A3\x07\u0191\x02\x02\u11A3\u02E3" +
		"\x03\x02\x02\x02\u11A4\u11A5\x05\u033E\u01A0\x02\u11A5\u02E5\x03\x02\x02" +
		"\x02\u11A6\u11A7\x07\x94\x02\x02\u11A7\u11A8\x05\u02EA\u0176\x02\u11A8" +
		"\u02E7\x03\x02\x02\x02\u11A9\u11AA\x07\u0101\x02\x02\u11AA\u11AB\x05\u033E" +
		"\u01A0\x02\u11AB\u02E9\x03\x02\x02\x02\u11AC\u11AD\x05\u033E\u01A0\x02" +
		"\u11AD\u02EB\x03\x02\x02\x02\u11AE\u11AF\x07\u0190\x02\x02\u11AF\u11B0" +
		"\x05\u02EE\u0178\x02\u11B0\u11B1\x07\u0191\x02\x02\u11B1\u02ED\x03\x02" +
		"\x02\x02\u11B2\u11B4\x05\u02F2\u017A\x02\u11B3\u11B5\x05\u02F0\u0179\x02" +
		"\u11B4\u11B3\x03\x02\x02\x02\u11B4\u11B5\x03\x02\x02\x02\u11B5\u02EF\x03" +
		"\x02\x02\x02\u11B6\u11B7\x07\u018E\x02\x02\u11B7\u11B9\x05\u02F2\u017A" +
		"\x02\u11B8\u11B6\x03\x02\x02\x02\u11B9\u11BA\x03\x02\x02\x02\u11BA\u11B8" +
		"\x03\x02\x02\x02\u11BA\u11BB\x03\x02\x02\x02\u11BB\u02F1\x03\x02\x02\x02" +
		"\u11BC\u11BF\x05\u0268\u0135\x02\u11BD\u11BF\x05\u033E\u01A0\x02\u11BE" +
		"\u11BC\x03\x02\x02\x02\u11BE\u11BD\x03\x02\x02\x02\u11BF\u02F3\x03\x02" +
		"\x02\x02\u11C0\u11C2\x05\u033E\u01A0\x02\u11C1\u11C3\x07\x13\x02\x02\u11C2" +
		"\u11C1\x03\x02\x02\x02\u11C2\u11C3\x03\x02\x02\x02\u11C3\u11C5\x03\x02" +
		"\x02\x02\u11C4\u11C6\x05\u03A0\u01D1\x02\u11C5\u11C4\x03\x02\x02\x02\u11C5" +
		"\u11C6\x03\x02\x02\x02\u11C6\u11CB\x03\x02\x02\x02\u11C7\u11C8\x07\u018E" +
		"\x02\x02\u11C8\u11CA\x05\u02F6\u017C\x02\u11C9\u11C7\x03\x02\x02\x02\u11CA" +
		"\u11CD\x03\x02\x02\x02\u11CB\u11C9\x03\x02\x02\x02\u11CB\u11CC\x03\x02" +
		"\x02\x02\u11CC\u02F5\x03\x02\x02\x02\u11CD\u11CB\x03\x02\x02\x02\u11CE" +
		"\u11D0\x05\u033E\u01A0\x02\u11CF\u11D1\x07\x13\x02\x02\u11D0\u11CF\x03" +
		"\x02\x02\x02\u11D0\u11D1\x03\x02\x02\x02\u11D1\u11D3\x03\x02\x02\x02\u11D2" +
		"\u11D4\x05\u03A0\u01D1\x02\u11D3\u11D2\x03\x02\x02\x02\u11D3\u11D4\x03" +
		"\x02\x02\x02\u11D4\u02F7\x03\x02\x02\x02\u11D5\u11D8\x05\u02EC\u0177\x02" +
		"\u11D6\u11D8\x05\u02EE\u0178\x02\u11D7\u11D5\x03\x02\x02\x02\u11D7\u11D6" +
		"\x03\x02\x02\x02\u11D8\u02F9\x03\x02\x02\x02\u11D9\u11DA\x07\u0190\x02" +
		"\x02\u11DA\u11DF\x05\u0156\xAC\x02\u11DB\u11DC\x07\u018E\x02\x02\u11DC" +
		"\u11DE\x05\u0156\xAC\x02\u11DD\u11DB\x03\x02\x02\x02\u11DE\u11E1\x03\x02" +
		"\x02\x02\u11DF\u11DD\x03\x02\x02\x02\u11DF\u11E0\x03\x02\x02\x02\u11E0" +
		"\u11E2\x03\x02\x02\x02\u11E1\u11DF\x03\x02\x02\x02\u11E2\u11E3\x07\u0191" +
		"\x02\x02\u11E3\u02FB\x03\x02\x02\x02\u11E4\u11E9\x05\u0156\xAC\x02\u11E5" +
		"\u11E6\x07\u018E\x02\x02\u11E6\u11E8\x05\u0156\xAC\x02\u11E7\u11E5\x03" +
		"\x02\x02\x02\u11E8\u11EB\x03\x02\x02\x02\u11E9\u11E7\x03\x02\x02\x02\u11E9" +
		"\u11EA\x03\x02\x02\x02\u11EA\u02FD\x03\x02\x02\x02\u11EB\u11E9\x03\x02" +
		"\x02\x02\u11EC\u11ED\x07\xE6\x02\x02\u11ED\u11EE\x07\"\x02\x02\u11EE\u11F3" +
		"\x05\u0156\xAC\x02\u11EF\u11F0\x07\u018E\x02\x02\u11F0\u11F2\x05\u0156" +
		"\xAC\x02\u11F1\u11EF\x03\x02\x02\x02\u11F2\u11F5\x03\x02\x02\x02\u11F3" +
		"\u11F1\x03\x02\x02\x02\u11F3\u11F4\x03\x02\x02\x02\u11F4\u02FF\x03\x02" +
		"\x02\x02\u11F5\u11F3\x03\x02\x02\x02\u11F6\u11F7\x07+\x02\x02\u11F7\u11F8" +
		"\x07\"\x02\x02\u11F8\u11F9\x05\u02F8\u017D\x02\u11F9\u0301\x03\x02\x02" +
		"\x02\u11FA\u11FB\x07\xEE\x02\x02\u11FB\u11FC\x07\"\x02\x02\u11FC\u11FD" +
		"\x05\u02F8\u017D\x02\u11FD\u0303\x03\x02\x02\x02\u11FE\u11FF\x07c\x02" +
		"\x02\u11FF\u1200\x07\"\x02\x02\u1200\u1201\x05\u02F8\u017D\x02\u1201\u0305" +
		"\x03\x02\x02\x02\u1202\u1203\x07\u013B\x02\x02\u1203\u1206\x07\"\x02\x02" +
		"\u1204\u1207\x05\u02FA\u017E\x02\u1205\u1207\x05\u02FC\u017F\x02\u1206" +
		"\u1204\x03\x02\x02\x02\u1206\u1205\x03\x02\x02\x02\u1207\u0307\x03\x02" +
		"\x02\x02\u1208\u1209\x07\u015E\x02\x02\u1209\u120D\x07\u0190\x02\x02\u120A" +
		"\u120E\x07\xB5\x02\x02\u120B\u120E\x07\u0158\x02\x02\u120C\u120E\x07\x1F" +
		"\x02\x02\u120D\u120A\x03\x02\x02\x02\u120D\u120B\x03\x02\x02\x02\u120D" +
		"\u120C\x03\x02\x02\x02\u120D\u120E\x03\x02\x02\x02\u120E\u1210\x03\x02" +
		"\x02\x02\u120F\u1211\x05\u02C2\u0162\x02\u1210\u120F\x03\x02\x02\x02\u1210" +
		"\u1211\x03\x02\x02\x02\u1211\u1212\x03\x02\x02\x02\u1212\u1213\x07\x8D" +
		"\x02\x02\u1213\u1214\x05\u02C2\u0162\x02\u1214\u1215\x07\u0191\x02\x02" +
		"\u1215\u0309\x03\x02\x02\x02\u1216\u123F\x05\u0308\u0185\x02\u1217\u1218" +
		"\x05\u0312\u018A\x02\u1218\u1227\x07\u0190\x02\x02\u1219\u1228\x07\u01A0" +
		"\x02\x02\u121A\u121C\x05\u02B8\u015D\x02\u121B\u121A\x03\x02\x02\x02\u121B" +
		"\u121C\x03\x02\x02\x02\u121C\u1225\x03\x02\x02\x02\u121D\u1222\x05\u02C2" +
		"\u0162\x02\u121E\u121F\x07\u018E\x02\x02\u121F\u1221\x05\u02C2\u0162\x02" +
		"\u1220\u121E\x03\x02\x02\x02\u1221\u1224\x03\x02\x02\x02\u1222\u1220\x03" +
		"\x02\x02\x02\u1222\u1223\x03\x02\x02\x02\u1223\u1226\x03\x02\x02\x02\u1224" +
		"\u1222\x03\x02\x02\x02\u1225\u121D\x03\x02\x02\x02\u1225\u1226\x03\x02" +
		"\x02\x02\u1226\u1228\x03\x02\x02\x02\u1227\u1219\x03\x02\x02\x02\u1227" +
		"\u121B\x03\x02\x02\x02\u1228\u123C\x03\x02\x02\x02\u1229\u122A\x07\u0191" +
		"\x02\x02\u122A\u122B\x07\u0185\x02\x02\u122B\u122C\x07\x92\x02\x02\u122C" +
		"\u122D\x07\u0190\x02\x02\u122D\u122E\x05\u02FE\u0180\x02\u122E\u122F\x07" +
		"\u0191\x02\x02\u122F\u123D\x03\x02\x02\x02\u1230\u1232\x07\u0191\x02\x02" +
		"\u1231\u1233\x05\u030C\u0187\x02\u1232\u1231\x03\x02\x02\x02\u1232\u1233" +
		"\x03\x02\x02\x02\u1233\u1234\x03\x02\x02\x02\u1234\u1235\x07\xEB\x02\x02" +
		"\u1235\u123D\x05\u02CA\u0166\x02\u1236\u1237\x05\u030C\u0187\x02\u1237" +
		"\u1238\x07\u0191\x02\x02\u1238\u1239\x07\xEB\x02\x02\u1239\u123A\x05\u02CA" +
		"\u0166\x02\u123A\u123D\x03\x02\x02\x02\u123B\u123D\x07\u0191\x02\x02\u123C" +
		"\u1229\x03\x02\x02\x02\u123C\u1230\x03\x02\x02\x02\u123C\u1236\x03\x02" +
		"\x02\x02\u123C\u123B\x03\x02\x02\x02\u123D\u123F\x03\x02\x02\x02\u123E" +
		"\u1216\x03\x02\x02\x02\u123E\u1217\x03\x02\x02\x02\u123F\u030B\x03\x02" +
		"\x02\x02\u1240\u1241\x07\u011A\x02\x02\u1241\u1245\x07\xDD\x02\x02\u1242" +
		"\u1243\x07\x9A\x02\x02\u1243\u1245\x07\xDD\x02\x02\u1244\u1240\x03\x02" +
		"\x02\x02\u1244\u1242\x03\x02\x02\x02\u1245\u030D\x03\x02\x02\x02\u1246" +
		"\u1247\x05\u03A2\u01D2\x02\u1247\u030F\x03\x02\x02\x02\u1248\u124B\x05" +
		"\u0314\u018B\x02\u1249\u124B\x07\u01AB\x02\x02\u124A\u1248\x03\x02\x02" +
		"\x02\u124A\u1249\x03\x02\x02\x02\u124B\u0311\x03\x02\x02\x02\u124C\u124F" +
		"\x05\u0314\u018B\x02\u124D\u124F\x05\u0316\u018C\x02\u124E\u124C\x03\x02" +
		"\x02\x02\u124E\u124D\x03\x02\x02\x02\u124F\u0313\x03\x02\x02\x02\u1250" +
		"\u1251\x05\u03A2\u01D2\x02\u1251\u0315\x03\x02\x02\x02\u1252\u1255\x05" +
		"\u03A8\u01D5\x02\u1253\u1255\x05\u039E\u01D0\x02\u1254\u1252\x03\x02\x02" +
		"\x02\u1254\u1253\x03\x02\x02\x02\u1255\u0317\x03\x02\x02\x02\u1256\u1257" +
		"\x07&\x02\x02\u1257\u1258\x07\u0190\x02\x02\u1258\u1259\x05\u033E\u01A0" +
		"\x02\u1259\u125A\x07\x13\x02\x02\u125A\u125D\x05\u017E\xC0\x02\u125B\u125C" +
		"\x07\x8B\x02\x02\u125C\u125E\x07\u01AB\x02\x02\u125D\u125B\x03\x02\x02" +
		"\x02\u125D\u125E\x03\x02\x02\x02\u125E\u125F\x03\x02\x02\x02\u125F\u1260" +
		"\x07\u0191\x02\x02\u1260\u0319\x03\x02\x02\x02\u1261\u1262\x07%\x02\x02" +
		"\u1262\u1268\x05\u033E\u01A0\x02\u1263\u1264\x07\u0180\x02\x02\u1264\u1265" +
		"\x05\u033E\u01A0\x02\u1265\u1266\x07\u0150\x02\x02\u1266\u1267\x05\u033E" +
		"\u01A0\x02\u1267\u1269\x03\x02\x02\x02\u1268\u1263\x03\x02\x02\x02\u1269" +
		"\u126A\x03\x02\x02\x02\u126A\u1268\x03\x02\x02\x02\u126A\u126B\x03\x02" +
		"\x02\x02\u126B\u126E\x03\x02\x02\x02\u126C\u126D\x07k\x02\x02\u126D\u126F" +
		"\x05\u033E\u01A0\x02\u126E\u126C\x03\x02\x02\x02\u126E\u126F\x03\x02\x02" +
		"\x02\u126F\u1270\x03\x02\x02\x02\u1270\u1271\x07n\x02\x02\u1271\u031B" +
		"\x03\x02\x02\x02\u1272\u1278\x07%\x02\x02\u1273\u1274\x07\u0180\x02\x02" +
		"\u1274\u1275\x05\u033E\u01A0\x02\u1275\u1276\x07\u0150\x02\x02\u1276\u1277" +
		"\x05\u033E\u01A0\x02\u1277\u1279\x03\x02\x02\x02\u1278\u1273\x03\x02\x02" +
		"\x02\u1279\u127A\x03\x02\x02\x02\u127A\u1278\x03\x02\x02\x02\u127A\u127B" +
		"\x03\x02\x02\x02\u127B\u127E\x03\x02\x02\x02\u127C\u127D\x07k\x02\x02" +
		"\u127D\u127F\x05\u033E\u01A0\x02\u127E\u127C\x03\x02\x02\x02\u127E\u127F" +
		"\x03\x02\x02\x02\u127F\u1280\x03\x02\x02\x02\u1280\u1281\x07n\x02\x02" +
		"\u1281\u031D\x03\x02\x02\x02\u1282\u1283\x07\x86\x02\x02\u1283\u1284\x07" +
		"\u0190\x02\x02\u1284\u1287\x05\u033E\u01A0\x02\u1285\u1286\x07\u0156\x02" +
		"\x02\u1286\u1288\x05\u0320\u0191\x02\u1287\u1285\x03\x02\x02\x02\u1287" +
		"\u1288\x03\x02\x02\x02\u1288\u1289\x03\x02\x02\x02\u1289\u128A\x07\u0191" +
		"\x02\x02\u128A\u031F\x03\x02\x02\x02\u128B\u1294\x05\u03D2\u01EA\x02\u128C" +
		"\u1294\x07\u0102\x02\x02\u128D\u1294\x05\u03D4\u01EB\x02\u128E\u1294\x05" +
		"\u03D6\u01EC\x02\u128F\u1294\x05\u03D8\u01ED\x02\u1290\u1294\x05\u03DA" +
		"\u01EE\x02\u1291\u1294\x05\u03DC\u01EF\x02\u1292\u1294\x05\u03DE\u01F0" +
		"\x02\u1293\u128B\x03\x02\x02\x02\u1293\u128C\x03\x02\x02\x02\u1293\u128D" +
		"\x03\x02\x02\x02\u1293\u128E\x03\x02\x02\x02\u1293\u128F\x03\x02\x02\x02" +
		"\u1293\u1290\x03\x02\x02\x02\u1293\u1291\x03\x02\x02\x02\u1293\u1292\x03" +
		"\x02\x02\x02\u1294\u0321\x03\x02\x02\x02\u1295\u1296\x07~\x02\x02\u1296" +
		"\u1297\x07\u0190\x02\x02\u1297\u1298\x05\u0324\u0193\x02\u1298\u1299\x07" +
		"\x8D\x02\x02\u1299\u129A\x05\u033E\u01A0\x02\u129A\u129B\x07\u0191\x02" +
		"\x02\u129B\u0323\x03\x02\x02\x02\u129C\u12A5\x05\u03D2\u01EA\x02\u129D" +
		"\u12A5\x07\u0102\x02\x02\u129E\u12A5\x05\u03D4\u01EB\x02\u129F\u12A5\x05" +
		"\u03D6\u01EC\x02\u12A0\u12A5\x05\u03D8\u01ED\x02\u12A1\u12A5\x05\u03DA" +
		"\u01EE\x02\u12A2\u12A5\x05\u03DC\u01EF\x02\u12A3\u12A5\x05\u03DE\u01F0" +
		"\x02\u12A4\u129C\x03\x02\x02\x02\u12A4\u129D\x03\x02\x02\x02\u12A4\u129E" +
		"\x03\x02\x02\x02\u12A4\u129F\x03\x02\x02\x02\u12A4\u12A0\x03\x02\x02\x02" +
		"\u12A4\u12A1\x03\x02\x02\x02\u12A4\u12A2\x03\x02\x02\x02\u12A4\u12A3\x03" +
		"\x02\x02\x02\u12A5\u0325\x03\x02\x02\x02\u12A6\u12B4\x05\u0338\u019D\x02" +
		"\u12A7\u12B4\x07\u01B0\x02\x02\u12A8\u12B4\x05\u0330\u0199\x02\u12A9\u12B4" +
		"\x05\u0332\u019A\x02\u12AA\u12B4\x05\u0334\u019B\x02\u12AB\u12B4\x07\u01AB" +
		"\x02\x02\u12AC\u12B4\x05\u032C\u0197\x02\u12AD\u12B4\x07\u01AD\x02\x02" +
		"\u12AE\u12B4\x07\u01AE\x02\x02\u12AF\u12B4\x05\u032E\u0198\x02\u12B0\u12B4" +
		"\x05\u038C\u01C7\x02\u12B1\u12B4\x07\xDC\x02\x02\u12B2\u12B4\x05\u0328" +
		"\u0195\x02\u12B3\u12A6\x03\x02\x02\x02\u12B3\u12A7\x03\x02\x02\x02\u12B3" +
		"\u12A8\x03\x02\x02\x02\u12B3\u12A9\x03\x02\x02\x02\u12B3\u12AA\x03\x02" +
		"\x02\x02\u12B3\u12AB\x03\x02\x02\x02\u12B3\u12AC\x03\x02\x02\x02\u12B3" +
		"\u12AD\x03\x02\x02\x02\u12B3\u12AE\x03\x02\x02\x02\u12B3\u12AF\x03\x02" +
		"\x02\x02\u12B3\u12B0\x03\x02\x02\x02\u12B3\u12B1\x03\x02\x02\x02\u12B3" +
		"\u12B2\x03\x02\x02\x02\u12B4\u0327\x03\x02\x02\x02\u12B5\u12B6\x05\u032A" +
		"\u0196\x02\u12B6\u0329\x03\x02\x02\x02\u12B7\u12B8\x07\u01A9\x02\x02\u12B8" +
		"\u032B\x03\x02\x02\x02\u12B9\u12BB\x07\u01AB\x02\x02\u12BA\u12BC\x07\u01AB" +
		"\x02\x02\u12BB\u12BA\x03\x02\x02\x02\u12BC\u12BD\x03\x02\x02\x02\u12BD" +
		"\u12BB\x03\x02\x02\x02\u12BD\u12BE\x03\x02\x02\x02\u12BE\u032D\x03\x02" +
		"\x02\x02\u12BF\u12C0\x07\u01B2\x02\x02\u12C0\u12C1\x07\u01AC\x02\x02\u12C1" +
		"\u032F\x03\x02\x02\x02\u12C2\u12C3\x07I\x02\x02\u12C3\u12C6\x07\u01AB" +
		"\x02\x02\u12C4\u12C6\x07A\x02\x02\u12C5\u12C2\x03\x02\x02\x02\u12C5\u12C4" +
		"\x03\x02\x02\x02\u12C6\u0331\x03\x02\x02\x02\u12C7\u12C8\x07\u0152\x02" +
		"\x02\u12C8\u12CB\x07\u01AB\x02\x02\u12C9\u12CB\x07B\x02\x02\u12CA\u12C7" +
		"\x03\x02\x02\x02\u12CA\u12C9\x03\x02\x02\x02\u12CB\u0333\x03\x02\x02\x02" +
		"\u12CC\u12CD\x07\u0153\x02\x02\u12CD\u12CE\x07\u01AB\x02\x02\u12CE\u0335" +
		"\x03\x02\x02\x02\u12CF\u12D0\t\x1A\x02\x02\u12D0\u0337\x03\x02\x02\x02" +
		"\u12D1\u12D2\x05\u0336\u019C\x02\u12D2\u12D3\x05\u033C\u019F\x02\u12D3" +
		"\u0339\x03\x02\x02\x02\u12D4\u12D5\x07\u0190\x02\x02\u12D5\u12D6\x05\u0336" +
		"\u019C\x02\u12D6\u12D7\x07\u0191\x02\x02\u12D7\u12D8\x05\u033C\u019F\x02" +
		"\u12D8\u12E4\x03\x02\x02\x02\u12D9\u12DF\x07\xA7\x02\x02\u12DA\u12E0\x05" +
		"\u0336\u019C\x02\u12DB\u12DC\x07\u0190\x02\x02\u12DC\u12DD\x05\u033E\u01A0" +
		"\x02\u12DD\u12DE\x07\u0191\x02\x02\u12DE\u12E0\x03\x02\x02\x02\u12DF\u12DA" +
		"\x03\x02\x02\x02\u12DF\u12DB\x03\x02\x02\x02\u12E0\u12E1\x03\x02\x02\x02" +
		"\u12E1\u12E2\x05\u033C\u019F\x02\u12E2\u12E4\x03\x02\x02\x02\u12E3\u12D4" +
		"\x03\x02\x02\x02\u12E3\u12D9\x03\x02\x02\x02\u12E4\u033B\x03\x02\x02\x02" +
		"\u12E5\u12E6\x05\u03D2\u01EA\x02\u12E6\u12E7\x07\u0156\x02\x02\u12E7\u12E8" +
		"\x05\u03D4\u01EB\x02\u12E8\u12F4\x03\x02\x02\x02\u12E9\u12EA\x05\u03D8" +
		"\u01ED\x02\u12EA\u12EB\x07\u0156\x02\x02\u12EB\u12EC\x05\u03DE\u01F0\x02" +
		"\u12EC\u12F4\x03\x02\x02\x02\u12ED\u12F4\x05\u03D2\u01EA\x02\u12EE\u12F4" +
		"\x05\u03D4\u01EB\x02\u12EF\u12F4\x05\u03D8\u01ED\x02\u12F0\u12F4\x05\u03DA" +
		"\u01EE\x02\u12F1\u12F4\x05\u03DC\u01EF\x02\u12F2\u12F4\x05\u03DE\u01F0" +
		"\x02\u12F3\u12E5\x03\x02\x02\x02\u12F3\u12E9\x03\x02\x02\x02\u12F3\u12ED" +
		"\x03\x02\x02\x02\u12F3\u12EE\x03\x02\x02\x02\u12F3\u12EF\x03\x02\x02\x02" +
		"\u12F3\u12F0\x03\x02\x02\x02\u12F3\u12F1\x03\x02\x02\x02\u12F3\u12F2\x03" +
		"\x02\x02\x02\u12F4\u033D\x03\x02\x02\x02\u12F5\u12F6\x05\u038A\u01C6\x02" +
		"\u12F6\u033F\x03\x02\x02\x02\u12F7\u1303\x05\u0326\u0194\x02\u12F8\u1303" +
		"\x05\u033A\u019E\x02\u12F9\u1303\x05\u0318\u018D\x02\u12FA\u1303\x05\u0322" +
		"\u0192\x02\u12FB\u1303\x05\u031E\u0190\x02\u12FC\u1303\x05\u031A\u018E" +
		"\x02\u12FD\u1303\x05\u031C\u018F\x02\u12FE\u1303\x05\u0364\u01B3\x02\u12FF" +
		"\u1303\x05\u030A\u0186\x02\u1300\u1303\x05\u02EC\u0177\x02\u1301\u1303" +
		"\x05\u03A0\u01D1\x02\u1302\u12F7\x03\x02\x02\x02\u1302\u12F8\x03\x02\x02" +
		"\x02\u1302\u12F9\x03\x02\x02\x02\u1302\u12FA\x03\x02\x02\x02\u1302\u12FB" +
		"\x03\x02\x02\x02\u1302\u12FC\x03\x02\x02\x02\u1302\u12FD\x03\x02\x02\x02" +
		"\u1302\u12FE\x03\x02\x02\x02\u1302\u12FF\x03\x02\x02\x02\u1302\u1300\x03" +
		"\x02\x02\x02\u1302\u1301\x03\x02\x02\x02\u1303\u0341\x03\x02\x02\x02\u1304" +
		"\u130D\x05\u0340\u01A1\x02\u1305\u1306\x07\u0192\x02\x02\u1306\u1307\x05" +
		"\u033E\u01A0\x02\u1307\u1308\x07\u0193\x02\x02\u1308\u130C\x03\x02\x02" +
		"\x02\u1309\u130A\x07\u018C\x02\x02\u130A\u130C\x05\u03A0\u01D1\x02\u130B" +
		"\u1305\x03\x02\x02\x02\u130B\u1309\x03\x02\x02\x02\u130C\u130F\x03\x02" +
		"\x02\x02\u130D\u130B\x03\x02\x02\x02\u130D\u130E\x03\x02\x02\x02\u130E" +
		"\u0343\x03\x02\x02\x02\u130F\u130D\x03\x02\x02\x02\u1310\u1311\t!\x02" +
		"\x02\u1311\u0345\x03\x02\x02\x02\u1312\u1314\x05\u0344\u01A3\x02\u1313" +
		"\u1312\x03\x02\x02\x02\u1314\u1317\x03\x02\x02\x02\u1315\u1313\x03\x02" +
		"\x02\x02\u1315\u1316\x03\x02\x02\x02\u1316\u1318\x03\x02\x02\x02\u1317" +
		"\u1315\x03\x02\x02\x02\u1318\u1319\x05\u0342\u01A2\x02\u1319\u0347\x03" +
		"\x02\x02\x02\u131A\u131B\x07\u01A8\x02\x02\u131B\u0349\x03\x02\x02\x02" +
		"\u131C\u1322\x05\u0346\u01A4\x02\u131D\u131E\x05\u0348\u01A5\x02\u131E" +
		"\u131F\x05\u0346\u01A4\x02\u131F\u1321\x03\x02\x02\x02\u1320\u131D\x03" +
		"\x02\x02\x02\u1321\u1324\x03\x02\x02\x02\u1322\u1320\x03\x02\x02\x02\u1322" +
		"\u1323\x03\x02\x02\x02\u1323\u034B\x03\x02\x02\x02\u1324\u1322\x03\x02" +
		"\x02\x02\u1325\u1326\t\"\x02\x02\u1326\u034D\x03\x02\x02\x02\u1327\u132D" +
		"\x05\u034A\u01A6\x02\u1328\u1329\x05\u034C\u01A7\x02\u1329\u132A\x05\u034A" +
		"\u01A6\x02\u132A\u132C\x03\x02\x02\x02\u132B\u1328\x03\x02\x02\x02\u132C" +
		"\u132F\x03\x02\x02\x02\u132D\u132B\x03\x02\x02\x02\u132D\u132E\x03\x02" +
		"\x02\x02\u132E\u034F\x03\x02\x02\x02\u132F\u132D\x03\x02\x02\x02\u1330" +
		"\u1331\t#\x02\x02\u1331\u0351\x03\x02\x02\x02\u1332\u1338\x05\u034E\u01A8" +
		"\x02\u1333\u1334\x05\u0350\u01A9\x02\u1334\u1335\x05\u034E\u01A8\x02\u1335" +
		"\u1337\x03\x02\x02\x02\u1336\u1333\x03\x02\x02\x02\u1337\u133A\x03\x02" +
		"\x02\x02\u1338\u1336\x03\x02\x02\x02\u1338\u1339\x03\x02\x02\x02\u1339" +
		"\u0353\x03\x02\x02\x02\u133A\u1338\x03\x02\x02\x02\u133B\u133C\x07\u01A7" +
		"\x02\x02\u133C\u0355\x03\x02\x02\x02\u133D\u1343\x05\u0352\u01AA\x02\u133E" +
		"\u133F\x05\u0354\u01AB\x02\u133F\u1340\x05\u0352\u01AA\x02\u1340\u1342" +
		"\x03\x02\x02\x02\u1341\u133E\x03\x02\x02\x02\u1342\u1345\x03\x02\x02\x02" +
		"\u1343\u1341\x03\x02\x02\x02\u1343\u1344\x03\x02\x02\x02\u1344\u0357\x03" +
		"\x02\x02\x02\u1345\u1343\x03\x02\x02\x02\u1346\u1347\x07\u01A4\x02\x02" +
		"\u1347\u0359\x03\x02\x02\x02\u1348\u134E\x05\u0356\u01AC\x02\u1349\u134A" +
		"\x05\u0358\u01AD\x02\u134A\u134B\x05\u0356\u01AC\x02\u134B\u134D\x03\x02" +
		"\x02\x02\u134C\u1349\x03\x02\x02\x02\u134D\u1350\x03\x02\x02\x02\u134E" +
		"\u134C\x03\x02\x02\x02\u134E\u134F\x03\x02\x02\x02\u134F\u035B\x03\x02" +
		"\x02\x02\u1350\u134E\x03\x02\x02\x02\u1351\u1352\x07\u01A6\x02\x02\u1352" +
		"\u035D\x03\x02\x02\x02\u1353\u1359\x05\u035A\u01AE\x02\u1354\u1355\x05" +
		"\u035C\u01AF\x02\u1355\u1356\x05\u035A\u01AE\x02\u1356\u1358\x03\x02\x02" +
		"\x02\u1357\u1354\x03\x02\x02\x02\u1358\u135B\x03\x02\x02\x02\u1359\u1357" +
		"\x03\x02\x02\x02";
	private static readonly _serializedATNSegment9: string =
		"\u1359\u135A\x03\x02\x02\x02\u135A\u035F\x03\x02\x02\x02\u135B\u1359\x03" +
		"\x02\x02\x02\u135C\u135D\t$\x02\x02\u135D\u0361\x03\x02\x02\x02\u135E" +
		"\u1364\x05\u0360\u01B1\x02\u135F\u1364\x07\u0199\x02\x02\u1360\u1364\x07" +
		"\u019A\x02\x02\u1361\u1364\x07\u019B\x02\x02\u1362\u1364\x07\u019C\x02" +
		"\x02\u1363\u135E\x03\x02\x02\x02\u1363\u135F\x03\x02\x02\x02\u1363\u1360" +
		"\x03\x02\x02\x02\u1363\u1361\x03\x02\x02\x02\u1363\u1362\x03\x02\x02\x02" +
		"\u1364\u0363\x03\x02\x02\x02\u1365\u1366\x07\u0190\x02\x02\u1366\u1367" +
		"\x05\u019A\xCE\x02\u1367\u1368\x07\u0191\x02\x02\u1368\u0365\x03\x02\x02" +
		"\x02\u1369\u136D\x05\u0368\u01B5\x02\u136A\u136B\x07w\x02\x02\u136B\u136D" +
		"\x05\u0364\u01B3\x02\u136C\u1369\x03\x02\x02\x02\u136C\u136A\x03\x02\x02" +
		"\x02\u136D\u0367\x03\x02\x02\x02\u136E\u1370\x05\u035E\u01B0\x02\u136F" +
		"\u1371\x05\u036A\u01B6\x02\u1370\u136F\x03\x02\x02\x02\u1370\u1371\x03" +
		"\x02\x02\x02\u1371\u0369\x03\x02\x02\x02\u1372\u1373\x05\u0362\u01B2\x02" +
		"\u1373\u1374\x05\u035E\u01B0\x02\u1374\u1379\x03\x02\x02\x02\u1375\u1379" +
		"\x05\u036C\u01B7\x02\u1376\u1377\x07\xD9\x02\x02\u1377\u1379\x05\u0374" +
		"\u01BB\x02\u1378\u1372\x03\x02\x02\x02\u1378\u1375\x03\x02\x02\x02\u1378" +
		"\u1376\x03\x02\x02\x02\u1379\u036B\x03\x02\x02\x02\u137A\u137B\x07\x9C" +
		"\x02\x02\u137B\u1386\x05\u0372\u01BA\x02\u137C\u137D\x07\x1B\x02\x02\u137D" +
		"\u137E\x05\u035E\u01B0\x02\u137E\u137F\x07\r\x02\x02\u137F\u1380\x05\u035E" +
		"\u01B0\x02\u1380\u1386\x03\x02\x02\x02\u1381\u1382\x07\xB9\x02\x02\u1382" +
		"\u1383\t%\x02\x02\u1383\u1386\x05\u02EC\u0177\x02\u1384\u1386\x05\u036E" +
		"\u01B8\x02\u1385\u137A\x03\x02\x02\x02\u1385\u137C\x03\x02\x02\x02\u1385" +
		"\u1381\x03\x02\x02\x02\u1385\u1384\x03\x02\x02\x02\u1386\u036D\x03\x02" +
		"\x02\x02\u1387\u1388\x05\u039C\u01CF\x02\u1388\u1389\x05\u0370\u01B9\x02" +
		"\u1389\u138A\x05\u0364\u01B3\x02\u138A\u036F\x03\x02\x02\x02\u138B\u138C" +
		"\t&\x02\x02\u138C\u0371\x03\x02\x02\x02\u138D\u1390\x05\u0364\u01B3\x02" +
		"\u138E\u1390\x05\u02EC\u0177\x02\u138F\u138D\x03\x02\x02\x02\u138F\u138E" +
		"\x03\x02\x02\x02\u1390\u0373\x03\x02\x02\x02\u1391\u1392\x05\u0360\u01B1" +
		"\x02\u1392\u1393\x05\u035E\u01B0\x02\u1393\u1396\x03\x02\x02\x02\u1394" +
		"\u1396\x05\u036C\u01B7\x02\u1395\u1391\x03\x02\x02\x02\u1395\u1394\x03" +
		"\x02\x02\x02\u1396\u0375\x03\x02\x02\x02\u1397\u1398\x07\xA9\x02\x02\u1398" +
		"\u1399\x07b\x02\x02\u1399\u139A\x07\x8D\x02\x02\u139A\u0377\x03\x02\x02" +
		"\x02\u139B\u13A3\x07\u0196\x02\x02\u139C\u13A3\x07\u0197\x02\x02\u139D" +
		"\u13A3\x07\u0198\x02\x02\u139E\u139F\x07\xA9\x02\x02\u139F\u13A0\x07\xD9" +
		"\x02\x02\u13A0\u13A1\x07b\x02\x02\u13A1\u13A3\x07\x8D\x02\x02\u13A2\u139B" +
		"\x03\x02\x02\x02\u13A2\u139C\x03\x02\x02\x02\u13A2\u139D\x03\x02\x02\x02" +
		"\u13A2\u139E\x03\x02\x02\x02\u13A3\u0379\x03\x02\x02\x02\u13A4\u13AD\x05" +
		"\u0366\u01B4\x02\u13A5\u13A6\x05\u0378\u01BD\x02\u13A6\u13A7\x05\u0366" +
		"\u01B4\x02\u13A7\u13AC\x03\x02\x02\x02\u13A8\u13A9\x05\u0376\u01BC\x02" +
		"\u13A9\u13AA\x05\u0366\u01B4\x02\u13AA\u13AC\x03\x02\x02\x02\u13AB\u13A5" +
		"\x03\x02\x02\x02\u13AB\u13A8\x03\x02\x02\x02\u13AC\u13AF\x03\x02\x02\x02" +
		"\u13AD\u13AB\x03\x02\x02\x02\u13AD\u13AE\x03\x02\x02\x02\u13AE\u037B\x03" +
		"\x02\x02\x02\u13AF\u13AD\x03\x02\x02\x02\u13B0\u13BD\x07\xDC\x02\x02\u13B1" +
		"\u13BD\x07\u015F\x02\x02\u13B2\u13BD\x07\x7F\x02\x02\u13B3\u13BD\x07\u0169" +
		"\x02\x02\u13B4\u13B5\x07\xD9\x02\x02\u13B5\u13BD\x07\xDC\x02\x02\u13B6" +
		"\u13B7\x07\xD9\x02\x02\u13B7\u13BD\x07\u015F\x02\x02\u13B8\u13B9\x07\xD9" +
		"\x02\x02\u13B9\u13BD\x07\x7F\x02\x02\u13BA\u13BB\x07\xD9\x02\x02\u13BB" +
		"\u13BD\x07\u0169\x02\x02\u13BC\u13B0\x03\x02\x02\x02\u13BC\u13B1\x03\x02" +
		"\x02\x02\u13BC\u13B2\x03\x02\x02\x02\u13BC\u13B3\x03\x02\x02\x02\u13BC" +
		"\u13B4\x03\x02\x02\x02\u13BC\u13B6\x03\x02\x02\x02\u13BC\u13B8\x03\x02" +
		"\x02\x02\u13BC\u13BA\x03\x02\x02\x02\u13BD\u037D\x03\x02\x02\x02\u13BE" +
		"\u13C1\x05\u037A\u01BE\x02\u13BF\u13C0\x07\xA9\x02\x02\u13C0\u13C2\x05" +
		"\u037C\u01BF\x02\u13C1\u13BF\x03\x02\x02\x02\u13C1\u13C2\x03\x02\x02\x02" +
		"\u13C2\u037F\x03\x02\x02\x02\u13C3\u13C4\x07\xD9\x02\x02\u13C4\u0381\x03" +
		"\x02\x02\x02\u13C5\u13C7\x05\u0380\u01C1\x02\u13C6\u13C5\x03\x02\x02\x02" +
		"\u13C7\u13CA\x03\x02\x02\x02\u13C8\u13C6\x03\x02\x02\x02\u13C8\u13C9\x03" +
		"\x02\x02\x02\u13C9\u13CB\x03\x02\x02\x02\u13CA\u13C8\x03\x02\x02\x02\u13CB" +
		"\u13CC\x05\u037E\u01C0\x02\u13CC\u0383\x03\x02\x02\x02\u13CD\u13CE\x07" +
		"\r\x02\x02\u13CE\u0385\x03\x02\x02\x02\u13CF\u13D5\x05\u0382\u01C2\x02" +
		"\u13D0\u13D1\x05\u0384\u01C3\x02\u13D1\u13D2\x05\u0382\u01C2\x02\u13D2" +
		"\u13D4\x03\x02\x02\x02\u13D3\u13D0\x03\x02\x02\x02\u13D4\u13D7\x03\x02" +
		"\x02\x02\u13D5\u13D3\x03\x02\x02\x02\u13D5\u13D6\x03\x02\x02\x02\u13D6" +
		"\u0387\x03\x02\x02\x02\u13D7\u13D5\x03\x02\x02\x02\u13D8\u13D9\x07\xE5" +
		"\x02\x02\u13D9\u0389\x03\x02\x02\x02\u13DA\u13E0\x05\u0386\u01C4\x02\u13DB" +
		"\u13DC\x05\u0388\u01C5\x02\u13DC\u13DD\x05\u0386\u01C4\x02\u13DD\u13DF" +
		"\x03\x02\x02\x02\u13DE\u13DB\x03\x02\x02\x02\u13DF\u13E2\x03\x02\x02\x02" +
		"\u13E0\u13DE\x03\x02\x02\x02\u13E0\u13E1\x03\x02\x02\x02\u13E1\u038B\x03" +
		"\x02\x02\x02\u13E2\u13E0\x03\x02\x02\x02\u13E3\u13E4\t\'\x02\x02\u13E4" +
		"\u038D\x03\x02\x02\x02\u13E5\u13E6\t\'\x02\x02\u13E6\u038F\x03\x02\x02" +
		"\x02\u13E7\u13E9\x05\u0296\u014C\x02\u13E8\u13EA\x05\u0392\u01CA\x02\u13E9" +
		"\u13E8\x03\x02\x02\x02\u13E9\u13EA\x03\x02\x02\x02\u13EA\u0391\x03\x02" +
		"\x02\x02\u13EB\u13EC\x07\xEE\x02\x02\u13EC\u13ED\x07\u0190\x02\x02\u13ED" +
		"\u13F2\x05\u0394\u01CB\x02\u13EE\u13EF\x07\u018E\x02\x02\u13EF\u13F1\x05" +
		"\u0394\u01CB\x02\u13F0\u13EE\x03\x02\x02\x02\u13F1\u13F4\x03\x02\x02\x02" +
		"\u13F2\u13F0\x03\x02\x02\x02\u13F2\u13F3\x03\x02\x02\x02\u13F3\u13F5\x03" +
		"\x02\x02\x02\u13F4\u13F2\x03\x02\x02\x02\u13F5\u13F6\x07\u0191\x02\x02" +
		"\u13F6\u0393\x03\x02\x02\x02\u13F7\u13FA\x05\u03A0\u01D1\x02\u13F8\u13F9" +
		"\x07\u0196\x02\x02\u13F9\u13FB\x05\u0326\u0194\x02\u13FA\u13F8\x03\x02" +
		"\x02\x02\u13FA\u13FB\x03\x02\x02\x02\u13FB\u0395\x03\x02\x02\x02\u13FC" +
		"\u13FD\x07\u0190\x02\x02\u13FD\u1402\x05\u0398\u01CD\x02\u13FE\u13FF\x07" +
		"\u018E\x02\x02\u13FF\u1401\x05\u0398\u01CD\x02\u1400\u13FE\x03\x02\x02" +
		"\x02\u1401\u1404\x03\x02\x02\x02\u1402\u1400\x03\x02\x02\x02\u1402\u1403" +
		"\x03\x02\x02\x02\u1403\u1405\x03\x02\x02\x02\u1404\u1402\x03\x02\x02\x02" +
		"\u1405\u1406\x07\u0191\x02\x02\u1406\u0397\x03\x02\x02\x02\u1407\u1408" +
		"\x05\u03A0\u01D1\x02\u1408\u1409\x05\u039A\u01CE\x02\u1409\u140A\x05\u0326" +
		"\u0194\x02\u140A\u0399\x03\x02\x02\x02\u140B\u140E\x07\xB9\x02\x02\u140C" +
		"\u140E\x05\u039C\u01CF\x02\u140D\u140B\x03\x02\x02\x02\u140D\u140C\x03" +
		"\x02\x02\x02\u140E\u039B\x03\x02\x02\x02\u140F\u1410\t(\x02\x02\u1410" +
		"\u039D\x03\x02\x02\x02\u1411\u1412\t)\x02\x02\u1412\u039F\x03\x02\x02" +
		"\x02\u1413\u1416\x07\u01B1\x02\x02\u1414\u1416\x05\u03A6\u01D4\x02\u1415" +
		"\u1413\x03\x02\x02\x02\u1415\u1414\x03\x02\x02\x02\u1416\u03A1\x03\x02" +
		"\x02\x02\u1417\u141A\x05\u03A0\u01D1\x02\u1418\u1419\x07\u018C\x02\x02" +
		"\u1419\u141B\x05\u03A0\u01D1\x02\u141A\u1418\x03\x02\x02\x02\u141A\u141B" +
		"\x03\x02\x02\x02\u141B\u03A3\x03\x02\x02\x02\u141C\u141D\x05\u03A0\u01D1" +
		"\x02\u141D\u03A5\x03\x02\x02\x02\u141E\u141F\t*\x02\x02\u141F\u03A7\x03" +
		"\x02\x02\x02\u1420\u1421\t+\x02\x02\u1421\u03A9\x03\x02\x02\x02\u1422" +
		"\u1423\x05\u03AC\u01D7\x02\u1423\u1424\x07\x02\x02\x03\u1424\u03AB\x03" +
		"\x02\x02\x02\u1425\u142A\x05\u03AE\u01D8\x02\u1426\u1427\x07\u018E\x02" +
		"\x02\u1427\u1429\x05\u03AE\u01D8\x02\u1428\u1426\x03\x02\x02\x02\u1429" +
		"\u142C\x03\x02\x02\x02\u142A\u1428\x03\x02\x02\x02\u142A\u142B\x03\x02" +
		"\x02\x02\u142B\u03AD\x03\x02\x02\x02\u142C\u142A\x03\x02\x02\x02\u142D" +
		"\u1432\x05\u03B0\u01D9\x02\u142E\u142F\x07\u0190\x02\x02\u142F\u1430\x05" +
		"\u03B2\u01DA\x02\u1430\u1431\x07\u0191\x02\x02\u1431\u1433\x03\x02\x02" +
		"\x02\u1432\u142E\x03\x02\x02\x02\u1432\u1433\x03\x02\x02\x02\u1433\u03AF" +
		"\x03\x02\x02\x02\u1434\u1435\t,\x02\x02\u1435\u03B1\x03\x02\x02\x02\u1436" +
		"\u143B\x05\u03B4\u01DB\x02\u1437\u1438\x07\u018E\x02\x02\u1438\u143A\x05" +
		"\u03B4\u01DB\x02\u1439\u1437\x03\x02\x02\x02\u143A\u143D\x03\x02\x02\x02" +
		"\u143B\u1439\x03\x02\x02\x02\u143B\u143C\x03\x02\x02\x02\u143C\u03B3\x03" +
		"\x02\x02\x02\u143D\u143B\x03\x02\x02\x02\u143E\u143F\t-\x02\x02\u143F" +
		"\u03B5\x03\x02\x02\x02\u1440\u1441\x07\xFA\x02\x02\u1441\u1442\x05\u03A0" +
		"\u01D1\x02\u1442\u1443\x07\x8D\x02\x02\u1443\u1444\x05\u018A\xC6\x02\u1444" +
		"\u03B7\x03\x02\x02\x02\u1445\u1446\x07u\x02\x02\u1446\u1447\x05\u03A0" +
		"\u01D1\x02\u1447\u1448\x07\u0173\x02\x02\u1448\u1449\x05\u03BA\u01DE\x02" +
		"\u1449\u03B9\x03\x02\x02\x02\u144A\u144F\x05\u0326\u0194\x02\u144B\u144C" +
		"\x07\u018E\x02\x02\u144C\u144E\x05\u0326\u0194\x02\u144D\u144B\x03\x02" +
		"\x02\x02\u144E\u1451\x03\x02\x02\x02\u144F\u144D\x03\x02\x02\x02\u144F" +
		"\u1450\x03\x02\x02\x02\u1450\u03BB\x03\x02\x02\x02\u1451\u144F\x03\x02" +
		"\x02\x02\u1452\u1461\x05\u03C6\u01E4\x02\u1453\u1461\x05\u03E2\u01F2\x02" +
		"\u1454\u1461\x05\u03E8\u01F5\x02\u1455\u1461\x05\u03E4\u01F3\x02\u1456" +
		"\u1461\x05\u03E6\u01F4\x02\u1457\u1461\x05\u03FE\u0200\x02\u1458\u1461" +
		"\x05\u0400\u0201\x02\u1459\u1461\x05\u0402\u0202\x02\u145A\u1461\x05\u0408" +
		"\u0205\x02\u145B\u1461\x05\u040A\u0206\x02\u145C\u1461\x05\u040C\u0207" +
		"\x02\u145D\u1461\x05\u040E\u0208\x02\u145E\u1461\x05\u0410\u0209\x02\u145F" +
		"\u1461\x05\u0412\u020A\x02\u1460\u1452\x03\x02\x02\x02\u1460\u1453\x03" +
		"\x02\x02\x02\u1460\u1454\x03\x02\x02\x02\u1460\u1455\x03\x02\x02\x02\u1460" +
		"\u1456\x03\x02\x02\x02\u1460\u1457\x03\x02\x02\x02\u1460\u1458\x03\x02" +
		"\x02\x02\u1460\u1459\x03\x02\x02\x02\u1460\u145A\x03\x02\x02\x02\u1460" +
		"\u145B\x03\x02\x02\x02\u1460\u145C\x03\x02\x02\x02\u1460\u145D\x03\x02" +
		"\x02\x02\u1460\u145E\x03\x02\x02\x02\u1460\u145F\x03\x02\x02\x02\u1461" +
		"\u03BD\x03\x02\x02\x02\u1462\u1463\x07\u0104\x02\x02\u1463\u1464\x07\u0196" +
		"\x02\x02\u1464\u146A\x07\u01B0\x02\x02\u1465\u1466\x07U\x02\x02\u1466" +
		"\u1467\x07\xF7\x02\x02\u1467\u1468\x07\u0196\x02\x02\u1468\u146A\x05\u03EA" +
		"\u01F6\x02\u1469\u1462\x03\x02\x02\x02\u1469\u1465\x03\x02\x02\x02\u146A" +
		"\u03BF\x03\x02\x02\x02\u146B\u1470\x05\u03BE\u01E0\x02\u146C\u146D\x07" +
		"\u018E\x02\x02\u146D\u146F\x05\u03BE\u01E0\x02\u146E\u146C\x03\x02\x02" +
		"\x02\u146F\u1472\x03\x02\x02\x02\u1470\u146E\x03\x02\x02\x02\u1470\u1471" +
		"\x03\x02\x02\x02\u1471\u03C1\x03\x02\x02\x02\u1472\u1470\x03\x02\x02\x02" +
		"\u1473\u1477\x07\u0104\x02\x02\u1474\u1475\x07U\x02\x02\u1475\u1477\x07" +
		"\xF7\x02\x02\u1476\u1473\x03\x02\x02\x02\u1476\u1474\x03\x02\x02\x02\u1477" +
		"\u03C3\x03\x02\x02\x02\u1478\u147D\x05\u03C2\u01E2\x02\u1479\u147A\x07" +
		"\u018E\x02\x02\u147A\u147C\x05\u03C2\u01E2\x02\u147B\u1479\x03\x02\x02" +
		"\x02\u147C\u147F\x03\x02\x02\x02\u147D\u147B\x03\x02\x02\x02\u147D\u147E" +
		"\x03\x02\x02\x02\u147E\u03C5\x03\x02\x02\x02\u147F\u147D\x03\x02\x02\x02" +
		"\u1480\u1481\x07<\x02\x02\u1481\u1482\x07\u0119\x02\x02\u1482\u1484\x07" +
		"\xF4\x02\x02\u1483\u1485\x05.\x18\x02\u1484\u1483\x03\x02\x02\x02\u1484" +
		"\u1485\x03\x02\x02\x02\u1485\u148F\x03\x02\x02\x02\u1486\u1487\x05\u03A0" +
		"\u01D1\x02\u1487\u1488\x07\xB9\x02\x02\u1488\u1489\x05\u03A0\u01D1\x02" +
		"\u1489\u1490\x03\x02\x02\x02\u148A\u148D\x05\u03A0\u01D1\x02\u148B\u148C" +
		"\x07\u0184\x02\x02\u148C\u148E\x05\u03C0\u01E1\x02\u148D\u148B\x03\x02" +
		"\x02\x02\u148D\u148E\x03\x02\x02\x02\u148E\u1490\x03\x02\x02\x02\u148F" +
		"\u1486\x03\x02\x02\x02\u148F\u148A\x03\x02\x02\x02\u1490\u03C7\x03\x02" +
		"\x02\x02\u1491\u1492\x07\u0184\x02\x02\u1492\u1493\x07\u0117\x02\x02\u1493" +
		"\u03C9\x03\x02\x02\x02\u1494\u1496\x07\x04\x02\x02\u1495\u1497\x05\u03C8" +
		"\u01E5\x02\u1496\u1495\x03\x02\x02\x02\u1496\u1497\x03\x02\x02\x02\u1497" +
		"\u03CB\x03\x02\x02\x02\u1498\u1499\t.\x02\x02\u1499\u03CD\x03\x02\x02" +
		"\x02\u149A\u149B\t/\x02\x02\u149B\u03CF\x03\x02\x02\x02\u149C\u149D\x07" +
		"\u016B\x02\x02\u149D\u03D1\x03\x02\x02\x02\u149E\u149F\t0\x02\x02\u149F" +
		"\u03D3\x03\x02\x02\x02\u14A0\u14A1\t1\x02\x02\u14A1\u03D5\x03\x02\x02" +
		"\x02\u14A2\u14A3\t2\x02\x02\u14A3\u03D7\x03\x02\x02\x02\u14A4\u14A5\t" +
		"3\x02\x02\u14A5\u03D9\x03\x02\x02\x02\u14A6\u14A7\t4\x02\x02\u14A7\u03DB" +
		"\x03\x02\x02\x02\u14A8\u14A9\t5\x02\x02\u14A9\u03DD\x03\x02\x02\x02\u14AA" +
		"\u14AB\t6\x02\x02\u14AB\u03DF\x03\x02\x02\x02\u14AC\u14AD\t7\x02\x02\u14AD" +
		"\u03E1\x03\x02\x02\x02\u14AE\u14AF\x07\v\x02\x02\u14AF\u14B0\x07\u0119" +
		"\x02\x02\u14B0\u14B1\x07\xF4\x02\x02\u14B1\u14C3\x05\u03A0\u01D1\x02\u14B2" +
		"\u14C4\x07\u0176\x02\x02\u14B3\u14C4\x05\u03CE\u01E8\x02\u14B4\u14B5\x07" +
		"\u0131\x02\x02\u14B5\u14C4\x05\u03C0\u01E1\x02\u14B6\u14B7\x07\u016C\x02" +
		"\x02\u14B7\u14C4\x05\u03C4\u01E3\x02\u14B8\u14B9\x07\u0113\x02\x02\u14B9" +
		"\u14BA\x07\u0156\x02\x02\u14BA\u14C4\x05\u03A0\u01D1\x02\u14BB\u14BD\x05" +
		"\u03CA\u01E6\x02\u14BC\u14BE\x05\u03CC\u01E7\x02\u14BD\u14BC\x03\x02\x02" +
		"\x02\u14BD\u14BE\x03\x02\x02\x02\u14BE\u14C4\x03\x02\x02\x02\u14BF\u14C1" +
		"\x05\u03CC\u01E7\x02\u14C0\u14C2\x05\u03CA\u01E6\x02\u14C1\u14C0\x03\x02" +
		"\x02\x02\u14C1\u14C2\x03\x02\x02\x02\u14C2\u14C4\x03\x02\x02\x02\u14C3" +
		"\u14B2\x03\x02\x02\x02\u14C3\u14B3\x03\x02\x02\x02\u14C3\u14B4\x03\x02" +
		"\x02\x02\u14C3\u14B6\x03\x02\x02\x02\u14C3\u14B8\x03\x02\x02\x02\u14C3" +
		"\u14BB\x03\x02\x02\x02\u14C3\u14BF\x03\x02\x02\x02\u14C4\u03E3\x03\x02" +
		"\x02\x02\u14C5\u14C8\x05\u03CC\u01E7\x02\u14C6\u14C8\x05\u03CE\u01E8\x02" +
		"\u14C7\u14C5\x03\x02\x02\x02\u14C7\u14C6\x03\x02\x02\x02\u14C8\u14C9\x03" +
		"\x02\x02\x02\u14C9\u14CA\x07\u0187\x02\x02\u14CA\u14CB\x07\xC6\x02\x02" +
		"\u14CB\u03E5\x03\x02\x02\x02\u14CC\u14D8\x07\u0117\x02\x02\u14CD\u14CE" +
		"\x07\x05\x02\x02\u14CE\u14CF\x07\u0119\x02\x02\u14CF\u14D0\x07\xF4\x02" +
		"\x02\u14D0\u14D1\x07\u0184\x02\x02\u14D1\u14D9\x05\u03A0\u01D1\x02\u14D2" +
		"\u14D3\x07\u0119\x02\x02\u14D3\u14D4\x07\xF4\x02\x02\u14D4\u14D5\x05\u03A0" +
		"\u01D1\x02\u14D5\u14D6\x07\u0184\x02\x02\u14D6\u14D7\x05\u03A0\u01D1\x02" +
		"\u14D7\u14D9\x03\x02\x02\x02\u14D8\u14CD\x03\x02\x02\x02\u14D8\u14D2\x03" +
		"\x02\x02\x02\u14D9\u03E7\x03\x02\x02\x02\u14DA\u14DB\x07g\x02\x02\u14DB" +
		"\u14DC\x07\u0119\x02\x02\u14DC\u14DE\x07\xF4\x02\x02\u14DD\u14DF\x05*" +
		"\x16\x02\u14DE\u14DD\x03\x02\x02\x02\u14DE\u14DF\x03\x02\x02\x02\u14DF" +
		"\u14E0\x03\x02\x02\x02\u14E0\u14E1\x05\u03A0\u01D1\x02\u14E1\u03E9\x03" +
		"\x02\x02\x02\u14E2\u14E7\x05\u03A0\u01D1\x02\u14E3\u14E4\x07\u018C\x02" +
		"\x02\u14E4\u14E6\x05\u03A0\u01D1\x02\u14E5\u14E3\x03\x02\x02\x02\u14E6" +
		"\u14E9\x03\x02\x02\x02\u14E7\u14E5\x03\x02\x02\x02\u14E7\u14E8\x03\x02" +
		"\x02\x02\u14E8\u03EB\x03\x02\x02\x02\u14E9\u14E7\x03\x02\x02\x02\u14EA" +
		"\u14EB\x05\u03F4\u01FB\x02\u14EB\u03ED\x03\x02\x02\x02\u14EC\u14ED\x05" +
		"\u03EC\u01F7\x02\u14ED\u14EE\x07\x02\x02\x03\u14EE\u03EF\x03\x02\x02\x02" +
		"\u14EF\u14F4\x05\u03F2\u01FA\x02\u14F0\u14F1\x07\xE5\x02\x02\u14F1\u14F3" +
		"\x05\u03F2\u01FA\x02\u14F2\u14F0\x03\x02\x02\x02\u14F3\u14F6\x03\x02\x02" +
		"\x02\u14F4\u14F2\x03\x02\x02\x02\u14F4\u14F5\x03\x02\x02\x02\u14F5\u03F1" +
		"\x03\x02\x02\x02\u14F6\u14F4\x03\x02\x02\x02\u14F7\u14FC\x05\u03F4\u01FB" +
		"\x02\u14F8\u14F9\x07\r\x02\x02\u14F9\u14FB\x05\u03F4\u01FB\x02\u14FA\u14F8" +
		"\x03\x02\x02\x02\u14FB\u14FE\x03\x02\x02\x02\u14FC\u14FA\x03\x02\x02\x02" +
		"\u14FC\u14FD\x03\x02\x02\x02\u14FD\u03F3\x03\x02\x02\x02\u14FE\u14FC\x03" +
		"\x02\x02\x02\u14FF\u1500\x05\u03A0\u01D1\x02\u1500\u1501\x05\u03F8\u01FD" +
		"\x02\u1501\u1502\x05\u03F6\u01FC\x02\u1502\u03F5\x03\x02\x02\x02\u1503" +
		"\u1504\t\x1A\x02\x02\u1504\u03F7\x03\x02\x02\x02\u1505\u1506\x07\u019C" +
		"\x02\x02\u1506\u03F9\x03\x02\x02\x02\u1507\u150C\x07\xB2\x02\x02\u1508" +
		"\u1509\x07\xD4\x02\x02\u1509\u150A\x07\u0156\x02\x02\u150A\u150C\x05\u03EA" +
		"\u01F6\x02\u150B\u1507\x03\x02\x02\x02\u150B\u1508\x03\x02\x02\x02\u150C" +
		"\u03FB\x03\x02\x02\x02\u150D\u150E\x05\u03FA\u01FE\x02\u150E\u150F\x07" +
		"\x02\x02\x03\u150F\u03FD\x03\x02\x02\x02\u1510\u1511\x07<\x02\x02\u1511" +
		"\u1512\x07\u015D\x02\x02\u1512\u1513\x05\u03A0\u01D1\x02\u1513\u1514\x07" +
		"\u018C\x02\x02\u1514\u1515\x05\u03A0\u01D1\x02\u1515\u1516\x07\u0180\x02" +
		"\x02\u1516\u1517\x05\u03EC\u01F7\x02\u1517\u1518\x07e\x02\x02\u1518\u1519" +
		"\x05\u03FA\u01FE\x02\u1519\u03FF\x03\x02\x02\x02\u151A\u151B\x07\v\x02" +
		"\x02\u151B\u151C\x07\u015D\x02\x02\u151C\u151D\x05\u03A0\u01D1\x02\u151D" +
		"\u151E\x07\u018C\x02\x02\u151E\u152F\x05\u03A0\u01D1\x02\u151F\u1520\x07" +
		"\u0180\x02\x02\u1520\u1521\x05\u03EC\u01F7\x02\u1521\u1522\x07e\x02\x02" +
		"\u1522\u1523\x05\u03FA\u01FE\x02\u1523\u1530\x03\x02\x02\x02\u1524\u1525" +
		"\x07\x06\x02\x02\u1525\u1529\x07\u0156\x02\x02\u1526\u1527\x07g\x02\x02" +
		"\u1527\u1529\x07\x8D\x02\x02\u1528\u1524\x03\x02\x02\x02\u1528\u1526\x03" +
		"\x02\x02\x02\u1529\u152D\x03\x02\x02\x02\u152A\u152B\x07\xF7\x02\x02\u152B" +
		"\u152E\x05\u03EA\u01F6\x02\u152C\u152E\x07\u016B\x02\x02\u152D\u152A\x03" +
		"\x02\x02\x02\u152D\u152C\x03\x02\x02\x02\u152E\u1530\x03\x02\x02\x02\u152F" +
		"\u151F\x03\x02\x02\x02\u152F\u1528\x03\x02\x02\x02\u1530\u0401\x03\x02" +
		"\x02\x02\u1531\u1532\x07g\x02\x02\u1532\u1533\x07\u015D\x02\x02\u1533" +
		"\u1534\x05\u03A0\u01D1\x02\u1534\u1535\x07\u018C\x02\x02\u1535\u1536\x05" +
		"\u03A0\u01D1\x02\u1536\u0403\x03\x02\x02\x02\u1537\u1538\x07\n\x02\x02" +
		"\u1538\u1539\x07\u0196\x02\x02\u1539\u1544\x07\u01B0\x02\x02\u153A\u153B" +
		"\x07\u0104\x02\x02\u153B\u153C\x07\u0196\x02\x02\u153C\u1544\x07\u01B0" +
		"\x02\x02\u153D\u153E\x07\u0127\x02\x02\u153E\u153F\x07\u0196\x02\x02\u153F" +
		"\u1544\x07\u01AB\x02\x02\u1540\u1541\x07\xF1\x02\x02\u1541\u1542\x07\u0196" +
		"\x02\x02\u1542\u1544\x05\u03EA\u01F6\x02\u1543\u1537\x03\x02\x02\x02\u1543" +
		"\u153A\x03\x02\x02\x02\u1543\u153D\x03\x02\x02\x02\u1543\u1540\x03\x02" +
		"\x02\x02\u1544\u0405\x03\x02\x02\x02\u1545\u154A\x05\u0404\u0203\x02\u1546" +
		"\u1547\x07\u018E\x02\x02\u1547\u1549\x05\u0404\u0203\x02\u1548\u1546\x03" +
		"\x02\x02\x02\u1549\u154C\x03\x02\x02\x02\u154A\u1548\x03\x02\x02\x02\u154A" +
		"\u154B\x03\x02\x02\x02\u154B\u0407\x03\x02\x02\x02\u154C\u154A\x03\x02" +
		"\x02\x02\u154D\u154E\x07<\x02\x02\u154E\u154F\x07\xF7\x02\x02\u154F\u1550" +
		"\x05\u03A0\u01D1\x02\u1550\u1551\x07\u018C\x02\x02\u1551\u1552\x05\u03EA" +
		"\u01F6\x02\u1552\u1553\x07\u0184\x02\x02\u1553\u1554\x05\u0406\u0204\x02" +
		"\u1554\u0409\x03\x02\x02\x02\u1555\u1556\x07\v\x02\x02\u1556\u1557\x07" +
		"\xF7\x02\x02\u1557\u1558\x05\u03A0\u01D1\x02\u1558\u1559\x07\u018C\x02" +
		"\x02\u1559\u1561\x05\u03EA\u01F6\x02\u155A\u155B\x07\u0131\x02\x02\u155B" +
		"\u1562\x05\u0406\u0204\x02\u155C\u155D\x07\u016C\x02\x02\u155D\u1562\x07" +
		"\u0127\x02\x02\u155E\u155F\t8\x02\x02\u155F\u1560\x07\u015D\x02\x02\u1560" +
		"\u1562\x05\u03A0\u01D1\x02\u1561\u155A\x03\x02\x02\x02\u1561\u155C\x03" +
		"\x02\x02\x02\u1561\u155E\x03\x02\x02\x02\u1562\u040B\x03\x02\x02\x02\u1563" +
		"\u1564\x07g\x02\x02\u1564\u1565\x07\xF7\x02\x02\u1565\u1566\x05\u03A0" +
		"\u01D1\x02\u1566\u1567\x07\u018C\x02\x02\u1567\u1568\x05\u03EA\u01F6\x02" +
		"\u1568\u040D\x03\x02\x02\x02\u1569\u156A\x07<\x02\x02\u156A\u156B\t9\x02" +
		"\x02\u156B\u156C\x07\xC9\x02\x02\u156C\u156D\x07\u01AB\x02\x02\u156D\u156E" +
		"\x07\x9C\x02\x02\u156E\u1572\x05\u03A0\u01D1\x02\u156F\u1570\x07\u0156" +
		"\x02\x02\u1570\u1573\x05\u03EA\u01F6\x02\u1571\u1573\x05\u03D0\u01E9\x02" +
		"\u1572\u156F\x03\x02\x02\x02\u1572\u1571\x03\x02\x02\x02\u1573\u1577\x03" +
		"\x02\x02\x02\u1574\u1575\x07\u0184\x02\x02\u1575\u1576\x07\xE6\x02\x02" +
		"\u1576\u1578\x07\u01B0\x02\x02\u1577\u1574\x03\x02\x02\x02\u1577\u1578" +
		"\x03\x02\x02\x02\u1578\u040F\x03\x02\x02\x02\u1579\u157A\x07\v\x02\x02" +
		"\u157A\u157B\t9\x02\x02\u157B\u157C\x07\xC9\x02\x02\u157C\u157D\x07\u01AB" +
		"\x02\x02\u157D\u157E\x07\x9C\x02\x02\u157E\u1582\x05\u03A0\u01D1\x02\u157F" +
		"\u1580\x07\u0156\x02\x02\u1580\u1583\x05\u03EA\u01F6\x02\u1581\u1583\x05" +
		"\u03D0\u01E9\x02\u1582\u157F\x03\x02\x02\x02\u1582\u1581\x03\x02\x02\x02" +
		"\u1583\u1587\x03\x02\x02\x02\u1584\u1585\x07\u0184\x02\x02\u1585\u1586" +
		"\x07\xE6\x02\x02\u1586\u1588\x07\u01B0\x02\x02\u1587\u1584\x03\x02\x02" +
		"\x02\u1587\u1588\x03\x02\x02\x02\u1588\u0411\x03\x02\x02\x02\u1589\u158A" +
		"\x07g\x02\x02\u158A\u158B\t9\x02\x02\u158B\u158C\x07\xC9\x02\x02\u158C" +
		"\u158D\x07\u01AB\x02\x02\u158D\u158E\x07\x9C\x02\x02\u158E\u158F\x05\u03A0" +
		"\u01D1\x02\u158F\u0413\x03\x02\x02\x02\u028B\u0417\u041E\u0421\u0427\u042D" +
		"\u0434\u043E\u0441\u0445\u0459\u045E\u0463\u0469\u0470\u047D\u0481\u0485" +
		"\u048A\u0491\u0495\u049A\u04A1\u04A5\u04B0\u04B6\u04BD\u04EE\u050A\u050E" +
		"\u0512\u0515\u0518\u051D\u0523\u0527\u052D\u052F\u0540\u054C\u0550\u0557" +
		"\u055F\u0562\u0567\u056B\u056E\u0578\u0580\u0584\u0587\u058B\u058F\u0592" +
		"\u0597\u059D\u05A2\u05A7\u05AB\u05B6\u05B8\u05BC\u05C6\u05CA\u05D0\u05D3" +
		"\u05DA\u05DF\u05E7\u05EC\u05F0\u05F8\u05FD\u0603\u0609\u060C\u060F\u0612" +
		"\u061B\u0623\u0628\u0630\u0637\u063A\u063D\u063F\u0647\u064A\u064D\u0650" +
		"\u0653\u0656\u0659\u065C\u065F\u0662\u0665\u0667\u0673\u0679\u0681\u0683" +
		"\u068D\u0693\u06A2\u06B3\u06B8\u06BC\u06C0\u06C7\u06CE\u06D4\u06D8\u06DB" +
		"\u06E2\u06F9\u06FE\u0702\u070A\u0713\u0717\u071D\u0723\u072A\u072D\u0733" +
		"\u073A\u0742\u074B\u0754\u075B\u076F\u0776\u0778\u077F\u0789\u0791\u0795" +
		"\u0799\u07A6\u07AF\u07BF\u07C3\u07C8\u07CD\u07D0\u07D3\u07D7\u07DA\u07DD" +
		"\u07E2\u07EA\u07EE\u07F5\u07F8\u07FB\u07FE\u080A\u0810\u082A\u0832\u0836" +
		"\u0839\u083C\u083F\u0842\u0845\u0848\u084B\u0854\u085E\u0861\u0875\u087B" +
		"\u0881\u0884\u0886\u088D\u0894\u089E\u08A3\u08AC\u08B4\u08BC\u08C6\u08D3" +
		"\u08E0\u08F5\u08F9\u0908\u090E\u0911\u0914\u0917\u091A\u091E\u092C\u0934" +
		"\u0937\u0946\u0968\u0970\u0975\u097D\u0982\u0987\u0991\u0999\u09A1\u09A9" +
		"\u09B1\u09BC\u09C0\u09C8\u09D1\u09D4\u09D8\u09DF\u09E5\u09E9\u09EF\u09F3" +
		"\u09FF\u0A08\u0A13\u0A17\u0A1E\u0A2A\u0A31\u0A3A\u0A3D\u0A44\u0A4A\u0A50" +
		"\u0A53\u0A56\u0A5C\u0A60\u0A64\u0A69\u0A6D\u0A71\u0A75\u0A7D\u0A81\u0A85" +
		"\u0A89\u0A8D\u0A95\u0A99\u0A9D\u0AA5\u0AAA\u0AAF\u0AB3\u0AB7\u0ABE\u0AC7" +
		"\u0ACF\u0ADB\u0AED\u0AF0\u0AF6\u0B10\u0B13\u0B19\u0B21\u0B29\u0B36\u0B3D" +
		"\u0B43\u0B47\u0B4A\u0B4D\u0B50\u0B53\u0B56\u0B5D\u0B61\u0B64\u0B67\u0B6A" +
		"\u0B6D\u0B70\u0B77\u0B7A\u0B81\u0B84\u0B87\u0B8A\u0B8D\u0B90\u0B93\u0B96" +
		"\u0B99\u0B9C\u0B9F\u0BA3\u0BA6\u0BA9\u0BAC\u0BAF\u0BB2\u0BB5\u0BB8\u0BBB" +
		"\u0BBE\u0BC1\u0BC3\u0BC9\u0BCD\u0BD4\u0BD6\u0BD9\u0BDE\u0BE1\u0BE5\u0BEA" +
		"\u0BF0\u0BF6\u0BFE\u0C06\u0C0D\u0C13\u0C1C\u0C1F\u0C23\u0C30\u0C34\u0C3F" +
		"\u0C46\u0C4A\u0C4F\u0C52\u0C5C\u0C5E\u0C62\u0C69\u0C6E\u0C82\u0C89\u0CA0" +
		"\u0CB0\u0CC1\u0CC7\u0CD8\u0CE5\u0CE9\u0CED\u0CF4\u0D10\u0D17\u0D1C\u0D21" +
		"\u0D26\u0D2B\u0D33\u0D39\u0D3D\u0D40\u0D43\u0D49\u0D50\u0D5A\u0D5E\u0D63" +
		"\u0D67\u0D6D\u0D74\u0D7B\u0D86\u0D8F\u0D93\u0D96\u0D99\u0DA1\u0DA4\u0DAC" +
		"\u0DAF\u0DB7\u0DBB\u0DC0\u0DC4\u0DCD\u0DDD\u0DEC\u0DEE\u0DFE\u0E05\u0E16" +
		"\u0E19\u0E1C\u0E1F\u0E25\u0E3C\u0E44\u0E52\u0E55\u0E5A\u0E74\u0E78\u0E7B" +
		"\u0E7E\u0E82\u0E87\u0E8A\u0E8D\u0E90\u0E93\u0E99\u0E9C\u0E9F\u0EA2\u0EA5" +
		"\u0EA8\u0EAB\u0EAE\u0EB1\u0EB5\u0EB7\u0EBD\u0EC2\u0EC5\u0EC8\u0ECB\u0ED1" +
		"\u0ED4\u0ED7\u0EDA\u0EDD\u0EE0\u0EE3\u0EE6\u0EE9\u0EED\u0EEF\u0EF1\u0EF6" +
		"\u0EFA\u0EFD\u0F00\u0F05\u0F17\u0F20\u0F29\u0F31\u0F3D\u0F40\u0F46\u0F4D" +
		"\u0F54\u0F5B\u0F62\u0F6B\u0F6F\u0F76\u0F7B\u0F7F\u0F8F\u0F93\u0F95\u0F98" +
		"\u0FA5\u0FA8\u0FAB\u0FB7\u0FBA\u0FC1\u0FCA\u0FCF\u0FD1\u0FD3\u0FE4\u0FE7" +
		"\u0FF0\u0FF6\u0FFA\u0FFD\u1000\u1003\u1006\u1012\u1016\u1019\u101C\u1024" +
		"\u102B\u102E\u1035\u1038\u103D\u1044\u104C\u1052\u1057\u105B\u1060\u1067" +
		"\u1075\u1078\u107C\u108D\u1095\u1098\u10A5\u10AE\u10B1\u10B7\u10BA\u10BF" +
		"\u10C2\u10CB\u10D9\u10DF\u10E1\u10E9\u10EC\u10F6\u10FB\u10FD\u1109\u110F" +
		"\u1111\u1118\u111F\u1128\u1132\u1135\u1138\u113B\u113F\u1148\u1151\u1159" +
		"\u115F\u1169\u1170\u1178\u1182\u118C\u1191\u1195\u1199\u119F\u11B4\u11BA" +
		"\u11BE\u11C2\u11C5\u11CB\u11D0\u11D3\u11D7\u11DF\u11E9\u11F3\u1206\u120D" +
		"\u1210\u121B\u1222\u1225\u1227\u1232\u123C\u123E\u1244\u124A\u124E\u1254" +
		"\u125D\u126A\u126E\u127A\u127E\u1287\u1293\u12A4\u12B3\u12BD\u12C5\u12CA" +
		"\u12DF\u12E3\u12F3\u1302\u130B\u130D\u1315\u1322\u132D\u1338\u1343\u134E" +
		"\u1359\u1363\u136C\u1370\u1378\u1385\u138F\u1395\u13A2\u13AB\u13AD\u13BC" +
		"\u13C1\u13C8\u13D5\u13E0\u13E9\u13F2\u13FA\u1402\u140D\u1415\u141A\u142A" +
		"\u1432\u143B\u144F\u1460\u1469\u1470\u1476\u147D\u1484\u148D\u148F\u1496" +
		"\u14BD\u14C1\u14C3\u14C7\u14D8\u14DE\u14E7\u14F4\u14FC\u150B\u1528\u152D" +
		"\u152F\u1543\u154A\u1561\u1572\u1577\u1582\u1587";
	public static readonly _serializedATN: string = Utils.join(
		[
			HiveSqlParser._serializedATNSegment0,
			HiveSqlParser._serializedATNSegment1,
			HiveSqlParser._serializedATNSegment2,
			HiveSqlParser._serializedATNSegment3,
			HiveSqlParser._serializedATNSegment4,
			HiveSqlParser._serializedATNSegment5,
			HiveSqlParser._serializedATNSegment6,
			HiveSqlParser._serializedATNSegment7,
			HiveSqlParser._serializedATNSegment8,
			HiveSqlParser._serializedATNSegment9,
		],
		"",
	);
	public static __ATN: ATN;
	public static get _ATN(): ATN {
		if (!HiveSqlParser.__ATN) {
			HiveSqlParser.__ATN = new ATNDeserializer().deserialize(Utils.toCharArray(HiveSqlParser._serializedATN));
		}

		return HiveSqlParser.__ATN;
	}

}

export class ProgramContext extends ParserRuleContext {
	public EOF(): TerminalNode { return this.getToken(HiveSqlParser.EOF, 0); }
	public statement(): StatementContext[];
	public statement(i: number): StatementContext;
	public statement(i?: number): StatementContext | StatementContext[] {
		if (i === undefined) {
			return this.getRuleContexts(StatementContext);
		} else {
			return this.getRuleContext(i, StatementContext);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_program; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterProgram) {
			listener.enterProgram(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitProgram) {
			listener.exitProgram(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitProgram) {
			return visitor.visitProgram(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class StatementContext extends ParserRuleContext {
	public explainStatement(): ExplainStatementContext | undefined {
		return this.tryGetRuleContext(0, ExplainStatementContext);
	}
	public execStatement(): ExecStatementContext | undefined {
		return this.tryGetRuleContext(0, ExecStatementContext);
	}
	public SEMICOLON(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.SEMICOLON, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_statement; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterStatement) {
			listener.enterStatement(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitStatement) {
			listener.exitStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitStatement) {
			return visitor.visitStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ExplainStatementContext extends ParserRuleContext {
	public KW_EXPLAIN(): TerminalNode { return this.getToken(HiveSqlParser.KW_EXPLAIN, 0); }
	public execStatement(): ExecStatementContext | undefined {
		return this.tryGetRuleContext(0, ExecStatementContext);
	}
	public KW_REWRITE(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_REWRITE, 0); }
	public queryStatementExpression(): QueryStatementExpressionContext | undefined {
		return this.tryGetRuleContext(0, QueryStatementExpressionContext);
	}
	public explainOption(): ExplainOptionContext[];
	public explainOption(i: number): ExplainOptionContext;
	public explainOption(i?: number): ExplainOptionContext | ExplainOptionContext[] {
		if (i === undefined) {
			return this.getRuleContexts(ExplainOptionContext);
		} else {
			return this.getRuleContext(i, ExplainOptionContext);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_explainStatement; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterExplainStatement) {
			listener.enterExplainStatement(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitExplainStatement) {
			listener.exitExplainStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitExplainStatement) {
			return visitor.visitExplainStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ExplainOptionContext extends ParserRuleContext {
	public KW_EXTENDED(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_EXTENDED, 0); }
	public KW_FORMATTED(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_FORMATTED, 0); }
	public KW_DEPENDENCY(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_DEPENDENCY, 0); }
	public KW_CBO(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_CBO, 0); }
	public KW_COST(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_COST, 0); }
	public KW_JOINCOST(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_JOINCOST, 0); }
	public KW_LOGICAL(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_LOGICAL, 0); }
	public KW_AUTHORIZATION(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_AUTHORIZATION, 0); }
	public KW_ANALYZE(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_ANALYZE, 0); }
	public KW_REOPTIMIZATION(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_REOPTIMIZATION, 0); }
	public KW_LOCKS(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_LOCKS, 0); }
	public KW_AST(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_AST, 0); }
	public KW_VECTORIZATION(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_VECTORIZATION, 0); }
	public vectorizationOnly(): VectorizationOnlyContext | undefined {
		return this.tryGetRuleContext(0, VectorizationOnlyContext);
	}
	public vectorizatonDetail(): VectorizatonDetailContext | undefined {
		return this.tryGetRuleContext(0, VectorizatonDetailContext);
	}
	public KW_DEBUG(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_DEBUG, 0); }
	public KW_DDL(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_DDL, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_explainOption; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterExplainOption) {
			listener.enterExplainOption(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitExplainOption) {
			listener.exitExplainOption(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitExplainOption) {
			return visitor.visitExplainOption(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class VectorizationOnlyContext extends ParserRuleContext {
	public KW_ONLY(): TerminalNode { return this.getToken(HiveSqlParser.KW_ONLY, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_vectorizationOnly; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterVectorizationOnly) {
			listener.enterVectorizationOnly(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitVectorizationOnly) {
			listener.exitVectorizationOnly(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitVectorizationOnly) {
			return visitor.visitVectorizationOnly(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class VectorizatonDetailContext extends ParserRuleContext {
	public KW_SUMMARY(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_SUMMARY, 0); }
	public KW_OPERATOR(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_OPERATOR, 0); }
	public KW_EXPRESSION(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_EXPRESSION, 0); }
	public KW_DETAIL(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_DETAIL, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_vectorizatonDetail; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterVectorizatonDetail) {
			listener.enterVectorizatonDetail(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitVectorizatonDetail) {
			listener.exitVectorizatonDetail(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitVectorizatonDetail) {
			return visitor.visitVectorizatonDetail(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ExecStatementContext extends ParserRuleContext {
	public queryStatementExpression(): QueryStatementExpressionContext | undefined {
		return this.tryGetRuleContext(0, QueryStatementExpressionContext);
	}
	public loadStatement(): LoadStatementContext | undefined {
		return this.tryGetRuleContext(0, LoadStatementContext);
	}
	public exportStatement(): ExportStatementContext | undefined {
		return this.tryGetRuleContext(0, ExportStatementContext);
	}
	public importStatement(): ImportStatementContext | undefined {
		return this.tryGetRuleContext(0, ImportStatementContext);
	}
	public replDumpStatement(): ReplDumpStatementContext | undefined {
		return this.tryGetRuleContext(0, ReplDumpStatementContext);
	}
	public replLoadStatement(): ReplLoadStatementContext | undefined {
		return this.tryGetRuleContext(0, ReplLoadStatementContext);
	}
	public replStatusStatement(): ReplStatusStatementContext | undefined {
		return this.tryGetRuleContext(0, ReplStatusStatementContext);
	}
	public ddlStatement(): DdlStatementContext | undefined {
		return this.tryGetRuleContext(0, DdlStatementContext);
	}
	public deleteStatement(): DeleteStatementContext | undefined {
		return this.tryGetRuleContext(0, DeleteStatementContext);
	}
	public updateStatement(): UpdateStatementContext | undefined {
		return this.tryGetRuleContext(0, UpdateStatementContext);
	}
	public sqlTransactionStatement(): SqlTransactionStatementContext | undefined {
		return this.tryGetRuleContext(0, SqlTransactionStatementContext);
	}
	public mergeStatement(): MergeStatementContext | undefined {
		return this.tryGetRuleContext(0, MergeStatementContext);
	}
	public prepareStatement(): PrepareStatementContext | undefined {
		return this.tryGetRuleContext(0, PrepareStatementContext);
	}
	public executeStatement(): ExecuteStatementContext | undefined {
		return this.tryGetRuleContext(0, ExecuteStatementContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_execStatement; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterExecStatement) {
			listener.enterExecStatement(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitExecStatement) {
			listener.exitExecStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitExecStatement) {
			return visitor.visitExecStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class LoadStatementContext extends ParserRuleContext {
	public KW_LOAD(): TerminalNode { return this.getToken(HiveSqlParser.KW_LOAD, 0); }
	public KW_DATA(): TerminalNode { return this.getToken(HiveSqlParser.KW_DATA, 0); }
	public KW_INPATH(): TerminalNode { return this.getToken(HiveSqlParser.KW_INPATH, 0); }
	public StringLiteral(): TerminalNode { return this.getToken(HiveSqlParser.StringLiteral, 0); }
	public KW_INTO(): TerminalNode { return this.getToken(HiveSqlParser.KW_INTO, 0); }
	public KW_TABLE(): TerminalNode { return this.getToken(HiveSqlParser.KW_TABLE, 0); }
	public tableOrPartition(): TableOrPartitionContext {
		return this.getRuleContext(0, TableOrPartitionContext);
	}
	public KW_LOCAL(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_LOCAL, 0); }
	public KW_OVERWRITE(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_OVERWRITE, 0); }
	public inputFileFormat(): InputFileFormatContext | undefined {
		return this.tryGetRuleContext(0, InputFileFormatContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_loadStatement; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterLoadStatement) {
			listener.enterLoadStatement(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitLoadStatement) {
			listener.exitLoadStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitLoadStatement) {
			return visitor.visitLoadStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class DropPartitionsIgnoreClauseContext extends ParserRuleContext {
	public KW_IGNORE(): TerminalNode { return this.getToken(HiveSqlParser.KW_IGNORE, 0); }
	public KW_PROTECTION(): TerminalNode { return this.getToken(HiveSqlParser.KW_PROTECTION, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_dropPartitionsIgnoreClause; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterDropPartitionsIgnoreClause) {
			listener.enterDropPartitionsIgnoreClause(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitDropPartitionsIgnoreClause) {
			listener.exitDropPartitionsIgnoreClause(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitDropPartitionsIgnoreClause) {
			return visitor.visitDropPartitionsIgnoreClause(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ReplicationClauseContext extends ParserRuleContext {
	public KW_FOR(): TerminalNode { return this.getToken(HiveSqlParser.KW_FOR, 0); }
	public KW_REPLICATION(): TerminalNode { return this.getToken(HiveSqlParser.KW_REPLICATION, 0); }
	public LPAREN(): TerminalNode { return this.getToken(HiveSqlParser.LPAREN, 0); }
	public StringLiteral(): TerminalNode { return this.getToken(HiveSqlParser.StringLiteral, 0); }
	public RPAREN(): TerminalNode { return this.getToken(HiveSqlParser.RPAREN, 0); }
	public KW_METADATA(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_METADATA, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_replicationClause; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterReplicationClause) {
			listener.enterReplicationClause(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitReplicationClause) {
			listener.exitReplicationClause(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitReplicationClause) {
			return visitor.visitReplicationClause(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ExportStatementContext extends ParserRuleContext {
	public KW_EXPORT(): TerminalNode { return this.getToken(HiveSqlParser.KW_EXPORT, 0); }
	public KW_TABLE(): TerminalNode { return this.getToken(HiveSqlParser.KW_TABLE, 0); }
	public tableOrPartition(): TableOrPartitionContext {
		return this.getRuleContext(0, TableOrPartitionContext);
	}
	public KW_TO(): TerminalNode { return this.getToken(HiveSqlParser.KW_TO, 0); }
	public StringLiteral(): TerminalNode { return this.getToken(HiveSqlParser.StringLiteral, 0); }
	public replicationClause(): ReplicationClauseContext | undefined {
		return this.tryGetRuleContext(0, ReplicationClauseContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_exportStatement; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterExportStatement) {
			listener.enterExportStatement(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitExportStatement) {
			listener.exitExportStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitExportStatement) {
			return visitor.visitExportStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ImportStatementContext extends ParserRuleContext {
	public _path!: Token;
	public KW_IMPORT(): TerminalNode { return this.getToken(HiveSqlParser.KW_IMPORT, 0); }
	public KW_FROM(): TerminalNode { return this.getToken(HiveSqlParser.KW_FROM, 0); }
	public StringLiteral(): TerminalNode { return this.getToken(HiveSqlParser.StringLiteral, 0); }
	public KW_TABLE(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_TABLE, 0); }
	public tableOrPartition(): TableOrPartitionContext | undefined {
		return this.tryGetRuleContext(0, TableOrPartitionContext);
	}
	public tableLocation(): TableLocationContext | undefined {
		return this.tryGetRuleContext(0, TableLocationContext);
	}
	public KW_EXTERNAL(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_EXTERNAL, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_importStatement; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterImportStatement) {
			listener.enterImportStatement(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitImportStatement) {
			listener.exitImportStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitImportStatement) {
			return visitor.visitImportStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ReplDumpStatementContext extends ParserRuleContext {
	public _dbPolicy!: ReplDbPolicyContext;
	public _oldDbPolicy!: ReplDbPolicyContext;
	public _replConf!: ReplConfigsContext;
	public KW_REPL(): TerminalNode { return this.getToken(HiveSqlParser.KW_REPL, 0); }
	public KW_DUMP(): TerminalNode { return this.getToken(HiveSqlParser.KW_DUMP, 0); }
	public replDbPolicy(): ReplDbPolicyContext[];
	public replDbPolicy(i: number): ReplDbPolicyContext;
	public replDbPolicy(i?: number): ReplDbPolicyContext | ReplDbPolicyContext[] {
		if (i === undefined) {
			return this.getRuleContexts(ReplDbPolicyContext);
		} else {
			return this.getRuleContext(i, ReplDbPolicyContext);
		}
	}
	public KW_REPLACE(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_REPLACE, 0); }
	public KW_WITH(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_WITH, 0); }
	public replConfigs(): ReplConfigsContext | undefined {
		return this.tryGetRuleContext(0, ReplConfigsContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_replDumpStatement; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterReplDumpStatement) {
			listener.enterReplDumpStatement(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitReplDumpStatement) {
			listener.exitReplDumpStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitReplDumpStatement) {
			return visitor.visitReplDumpStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ReplDbPolicyContext extends ParserRuleContext {
	public _dbName!: DbSchemaNameContext;
	public _tablePolicy!: ReplTableLevelPolicyContext;
	public dbSchemaName(): DbSchemaNameContext {
		return this.getRuleContext(0, DbSchemaNameContext);
	}
	public DOT(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.DOT, 0); }
	public replTableLevelPolicy(): ReplTableLevelPolicyContext | undefined {
		return this.tryGetRuleContext(0, ReplTableLevelPolicyContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_replDbPolicy; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterReplDbPolicy) {
			listener.enterReplDbPolicy(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitReplDbPolicy) {
			listener.exitReplDbPolicy(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitReplDbPolicy) {
			return visitor.visitReplDbPolicy(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ReplLoadStatementContext extends ParserRuleContext {
	public _sourceDbPolicy!: ReplDbPolicyContext;
	public _dbName!: DbSchemaNameContext;
	public _replConf!: ReplConfigsContext;
	public KW_REPL(): TerminalNode { return this.getToken(HiveSqlParser.KW_REPL, 0); }
	public KW_LOAD(): TerminalNode { return this.getToken(HiveSqlParser.KW_LOAD, 0); }
	public replDbPolicy(): ReplDbPolicyContext {
		return this.getRuleContext(0, ReplDbPolicyContext);
	}
	public KW_INTO(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_INTO, 0); }
	public KW_WITH(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_WITH, 0); }
	public dbSchemaName(): DbSchemaNameContext | undefined {
		return this.tryGetRuleContext(0, DbSchemaNameContext);
	}
	public replConfigs(): ReplConfigsContext | undefined {
		return this.tryGetRuleContext(0, ReplConfigsContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_replLoadStatement; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterReplLoadStatement) {
			listener.enterReplLoadStatement(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitReplLoadStatement) {
			listener.exitReplLoadStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitReplLoadStatement) {
			return visitor.visitReplLoadStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ReplConfigsContext extends ParserRuleContext {
	public LPAREN(): TerminalNode { return this.getToken(HiveSqlParser.LPAREN, 0); }
	public replConfigsList(): ReplConfigsListContext {
		return this.getRuleContext(0, ReplConfigsListContext);
	}
	public RPAREN(): TerminalNode { return this.getToken(HiveSqlParser.RPAREN, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_replConfigs; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterReplConfigs) {
			listener.enterReplConfigs(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitReplConfigs) {
			listener.exitReplConfigs(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitReplConfigs) {
			return visitor.visitReplConfigs(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ReplConfigsListContext extends ParserRuleContext {
	public keyValueProperty(): KeyValuePropertyContext[];
	public keyValueProperty(i: number): KeyValuePropertyContext;
	public keyValueProperty(i?: number): KeyValuePropertyContext | KeyValuePropertyContext[] {
		if (i === undefined) {
			return this.getRuleContexts(KeyValuePropertyContext);
		} else {
			return this.getRuleContext(i, KeyValuePropertyContext);
		}
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(HiveSqlParser.COMMA);
		} else {
			return this.getToken(HiveSqlParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_replConfigsList; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterReplConfigsList) {
			listener.enterReplConfigsList(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitReplConfigsList) {
			listener.exitReplConfigsList(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitReplConfigsList) {
			return visitor.visitReplConfigsList(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ReplTableLevelPolicyContext extends ParserRuleContext {
	public _replTablesIncludeList!: Token;
	public _replTablesExcludeList!: Token;
	public StringLiteral(): TerminalNode[];
	public StringLiteral(i: number): TerminalNode;
	public StringLiteral(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(HiveSqlParser.StringLiteral);
		} else {
			return this.getToken(HiveSqlParser.StringLiteral, i);
		}
	}
	public DOT(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.DOT, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_replTableLevelPolicy; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterReplTableLevelPolicy) {
			listener.enterReplTableLevelPolicy(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitReplTableLevelPolicy) {
			listener.exitReplTableLevelPolicy(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitReplTableLevelPolicy) {
			return visitor.visitReplTableLevelPolicy(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ReplStatusStatementContext extends ParserRuleContext {
	public _dbName!: DbSchemaNameContext;
	public _replConf!: ReplConfigsContext;
	public KW_REPL(): TerminalNode { return this.getToken(HiveSqlParser.KW_REPL, 0); }
	public KW_STATUS(): TerminalNode { return this.getToken(HiveSqlParser.KW_STATUS, 0); }
	public dbSchemaName(): DbSchemaNameContext {
		return this.getRuleContext(0, DbSchemaNameContext);
	}
	public KW_WITH(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_WITH, 0); }
	public replConfigs(): ReplConfigsContext | undefined {
		return this.tryGetRuleContext(0, ReplConfigsContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_replStatusStatement; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterReplStatusStatement) {
			listener.enterReplStatusStatement(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitReplStatusStatement) {
			listener.exitReplStatusStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitReplStatusStatement) {
			return visitor.visitReplStatusStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class DdlStatementContext extends ParserRuleContext {
	public createDatabaseStatement(): CreateDatabaseStatementContext | undefined {
		return this.tryGetRuleContext(0, CreateDatabaseStatementContext);
	}
	public switchDatabaseStatement(): SwitchDatabaseStatementContext | undefined {
		return this.tryGetRuleContext(0, SwitchDatabaseStatementContext);
	}
	public dropDatabaseStatement(): DropDatabaseStatementContext | undefined {
		return this.tryGetRuleContext(0, DropDatabaseStatementContext);
	}
	public createTableStatement(): CreateTableStatementContext | undefined {
		return this.tryGetRuleContext(0, CreateTableStatementContext);
	}
	public dropTableStatement(): DropTableStatementContext | undefined {
		return this.tryGetRuleContext(0, DropTableStatementContext);
	}
	public truncateTableStatement(): TruncateTableStatementContext | undefined {
		return this.tryGetRuleContext(0, TruncateTableStatementContext);
	}
	public alterStatement(): AlterStatementContext | undefined {
		return this.tryGetRuleContext(0, AlterStatementContext);
	}
	public descStatement(): DescStatementContext | undefined {
		return this.tryGetRuleContext(0, DescStatementContext);
	}
	public showStatement(): ShowStatementContext | undefined {
		return this.tryGetRuleContext(0, ShowStatementContext);
	}
	public metastoreCheck(): MetastoreCheckContext | undefined {
		return this.tryGetRuleContext(0, MetastoreCheckContext);
	}
	public createViewStatement(): CreateViewStatementContext | undefined {
		return this.tryGetRuleContext(0, CreateViewStatementContext);
	}
	public createMaterializedViewStatement(): CreateMaterializedViewStatementContext | undefined {
		return this.tryGetRuleContext(0, CreateMaterializedViewStatementContext);
	}
	public createScheduledQueryStatement(): CreateScheduledQueryStatementContext | undefined {
		return this.tryGetRuleContext(0, CreateScheduledQueryStatementContext);
	}
	public alterScheduledQueryStatement(): AlterScheduledQueryStatementContext | undefined {
		return this.tryGetRuleContext(0, AlterScheduledQueryStatementContext);
	}
	public dropScheduledQueryStatement(): DropScheduledQueryStatementContext | undefined {
		return this.tryGetRuleContext(0, DropScheduledQueryStatementContext);
	}
	public dropViewStatement(): DropViewStatementContext | undefined {
		return this.tryGetRuleContext(0, DropViewStatementContext);
	}
	public dropMaterializedViewStatement(): DropMaterializedViewStatementContext | undefined {
		return this.tryGetRuleContext(0, DropMaterializedViewStatementContext);
	}
	public createFunctionStatement(): CreateFunctionStatementContext | undefined {
		return this.tryGetRuleContext(0, CreateFunctionStatementContext);
	}
	public createMacroStatement(): CreateMacroStatementContext | undefined {
		return this.tryGetRuleContext(0, CreateMacroStatementContext);
	}
	public dropFunctionStatement(): DropFunctionStatementContext | undefined {
		return this.tryGetRuleContext(0, DropFunctionStatementContext);
	}
	public reloadFunctionsStatement(): ReloadFunctionsStatementContext | undefined {
		return this.tryGetRuleContext(0, ReloadFunctionsStatementContext);
	}
	public dropMacroStatement(): DropMacroStatementContext | undefined {
		return this.tryGetRuleContext(0, DropMacroStatementContext);
	}
	public createIndexStatement(): CreateIndexStatementContext | undefined {
		return this.tryGetRuleContext(0, CreateIndexStatementContext);
	}
	public dropIndexStatement(): DropIndexStatementContext | undefined {
		return this.tryGetRuleContext(0, DropIndexStatementContext);
	}
	public analyzeStatement(): AnalyzeStatementContext | undefined {
		return this.tryGetRuleContext(0, AnalyzeStatementContext);
	}
	public lockStatement(): LockStatementContext | undefined {
		return this.tryGetRuleContext(0, LockStatementContext);
	}
	public unlockStatement(): UnlockStatementContext | undefined {
		return this.tryGetRuleContext(0, UnlockStatementContext);
	}
	public lockDatabase(): LockDatabaseContext | undefined {
		return this.tryGetRuleContext(0, LockDatabaseContext);
	}
	public unlockDatabase(): UnlockDatabaseContext | undefined {
		return this.tryGetRuleContext(0, UnlockDatabaseContext);
	}
	public createRoleStatement(): CreateRoleStatementContext | undefined {
		return this.tryGetRuleContext(0, CreateRoleStatementContext);
	}
	public dropRoleStatement(): DropRoleStatementContext | undefined {
		return this.tryGetRuleContext(0, DropRoleStatementContext);
	}
	public grantPrivileges(): GrantPrivilegesContext | undefined {
		return this.tryGetRuleContext(0, GrantPrivilegesContext);
	}
	public revokePrivileges(): RevokePrivilegesContext | undefined {
		return this.tryGetRuleContext(0, RevokePrivilegesContext);
	}
	public showGrants(): ShowGrantsContext | undefined {
		return this.tryGetRuleContext(0, ShowGrantsContext);
	}
	public showRoleGrants(): ShowRoleGrantsContext | undefined {
		return this.tryGetRuleContext(0, ShowRoleGrantsContext);
	}
	public showRolePrincipals(): ShowRolePrincipalsContext | undefined {
		return this.tryGetRuleContext(0, ShowRolePrincipalsContext);
	}
	public showRoles(): ShowRolesContext | undefined {
		return this.tryGetRuleContext(0, ShowRolesContext);
	}
	public grantRole(): GrantRoleContext | undefined {
		return this.tryGetRuleContext(0, GrantRoleContext);
	}
	public revokeRole(): RevokeRoleContext | undefined {
		return this.tryGetRuleContext(0, RevokeRoleContext);
	}
	public setRole(): SetRoleContext | undefined {
		return this.tryGetRuleContext(0, SetRoleContext);
	}
	public showCurrentRole(): ShowCurrentRoleContext | undefined {
		return this.tryGetRuleContext(0, ShowCurrentRoleContext);
	}
	public abortTransactionStatement(): AbortTransactionStatementContext | undefined {
		return this.tryGetRuleContext(0, AbortTransactionStatementContext);
	}
	public abortCompactionStatement(): AbortCompactionStatementContext | undefined {
		return this.tryGetRuleContext(0, AbortCompactionStatementContext);
	}
	public killQueryStatement(): KillQueryStatementContext | undefined {
		return this.tryGetRuleContext(0, KillQueryStatementContext);
	}
	public resourcePlanDdlStatements(): ResourcePlanDdlStatementsContext | undefined {
		return this.tryGetRuleContext(0, ResourcePlanDdlStatementsContext);
	}
	public createDataConnectorStatement(): CreateDataConnectorStatementContext | undefined {
		return this.tryGetRuleContext(0, CreateDataConnectorStatementContext);
	}
	public dropDataConnectorStatement(): DropDataConnectorStatementContext | undefined {
		return this.tryGetRuleContext(0, DropDataConnectorStatementContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_ddlStatement; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterDdlStatement) {
			listener.enterDdlStatement(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitDdlStatement) {
			listener.exitDdlStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitDdlStatement) {
			return visitor.visitDdlStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class IfExistsContext extends ParserRuleContext {
	public KW_IF(): TerminalNode { return this.getToken(HiveSqlParser.KW_IF, 0); }
	public KW_EXISTS(): TerminalNode { return this.getToken(HiveSqlParser.KW_EXISTS, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_ifExists; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterIfExists) {
			listener.enterIfExists(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitIfExists) {
			listener.exitIfExists(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitIfExists) {
			return visitor.visitIfExists(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class RestrictOrCascadeContext extends ParserRuleContext {
	public KW_RESTRICT(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_RESTRICT, 0); }
	public KW_CASCADE(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_CASCADE, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_restrictOrCascade; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterRestrictOrCascade) {
			listener.enterRestrictOrCascade(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitRestrictOrCascade) {
			listener.exitRestrictOrCascade(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitRestrictOrCascade) {
			return visitor.visitRestrictOrCascade(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class IfNotExistsContext extends ParserRuleContext {
	public KW_IF(): TerminalNode { return this.getToken(HiveSqlParser.KW_IF, 0); }
	public KW_NOT(): TerminalNode { return this.getToken(HiveSqlParser.KW_NOT, 0); }
	public KW_EXISTS(): TerminalNode { return this.getToken(HiveSqlParser.KW_EXISTS, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_ifNotExists; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterIfNotExists) {
			listener.enterIfNotExists(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitIfNotExists) {
			listener.exitIfNotExists(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitIfNotExists) {
			return visitor.visitIfNotExists(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ForceContext extends ParserRuleContext {
	public KW_FORCE(): TerminalNode { return this.getToken(HiveSqlParser.KW_FORCE, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_force; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterForce) {
			listener.enterForce(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitForce) {
			listener.exitForce(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitForce) {
			return visitor.visitForce(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class RewriteEnabledContext extends ParserRuleContext {
	public enable(): EnableContext {
		return this.getRuleContext(0, EnableContext);
	}
	public KW_REWRITE(): TerminalNode { return this.getToken(HiveSqlParser.KW_REWRITE, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_rewriteEnabled; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterRewriteEnabled) {
			listener.enterRewriteEnabled(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitRewriteEnabled) {
			listener.exitRewriteEnabled(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitRewriteEnabled) {
			return visitor.visitRewriteEnabled(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class RewriteDisabledContext extends ParserRuleContext {
	public disable(): DisableContext {
		return this.getRuleContext(0, DisableContext);
	}
	public KW_REWRITE(): TerminalNode { return this.getToken(HiveSqlParser.KW_REWRITE, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_rewriteDisabled; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterRewriteDisabled) {
			listener.enterRewriteDisabled(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitRewriteDisabled) {
			listener.exitRewriteDisabled(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitRewriteDisabled) {
			return visitor.visitRewriteDisabled(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class StoredAsDirsContext extends ParserRuleContext {
	public KW_STORED(): TerminalNode { return this.getToken(HiveSqlParser.KW_STORED, 0); }
	public KW_AS(): TerminalNode { return this.getToken(HiveSqlParser.KW_AS, 0); }
	public KW_DIRECTORIES(): TerminalNode { return this.getToken(HiveSqlParser.KW_DIRECTORIES, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_storedAsDirs; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterStoredAsDirs) {
			listener.enterStoredAsDirs(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitStoredAsDirs) {
			listener.exitStoredAsDirs(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitStoredAsDirs) {
			return visitor.visitStoredAsDirs(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class OrReplaceContext extends ParserRuleContext {
	public KW_OR(): TerminalNode { return this.getToken(HiveSqlParser.KW_OR, 0); }
	public KW_REPLACE(): TerminalNode { return this.getToken(HiveSqlParser.KW_REPLACE, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_orReplace; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterOrReplace) {
			listener.enterOrReplace(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitOrReplace) {
			listener.exitOrReplace(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitOrReplace) {
			return visitor.visitOrReplace(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class CreateDatabaseStatementContext extends ParserRuleContext {
	public _name!: DbSchemaNameCreateContext;
	public _dbprops!: DbPropertiesContext;
	public KW_CREATE(): TerminalNode { return this.getToken(HiveSqlParser.KW_CREATE, 0); }
	public db_schema(): Db_schemaContext {
		return this.getRuleContext(0, Db_schemaContext);
	}
	public dbSchemaNameCreate(): DbSchemaNameCreateContext {
		return this.getRuleContext(0, DbSchemaNameCreateContext);
	}
	public KW_REMOTE(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_REMOTE, 0); }
	public ifNotExists(): IfNotExistsContext | undefined {
		return this.tryGetRuleContext(0, IfNotExistsContext);
	}
	public databaseComment(): DatabaseCommentContext | undefined {
		return this.tryGetRuleContext(0, DatabaseCommentContext);
	}
	public dbLocation(): DbLocationContext | undefined {
		return this.tryGetRuleContext(0, DbLocationContext);
	}
	public dbManagedLocation(): DbManagedLocationContext | undefined {
		return this.tryGetRuleContext(0, DbManagedLocationContext);
	}
	public KW_WITH(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_WITH, 0); }
	public KW_DBPROPERTIES(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_DBPROPERTIES, 0); }
	public dbProperties(): DbPropertiesContext | undefined {
		return this.tryGetRuleContext(0, DbPropertiesContext);
	}
	public dbConnectorName(): DbConnectorNameContext | undefined {
		return this.tryGetRuleContext(0, DbConnectorNameContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_createDatabaseStatement; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterCreateDatabaseStatement) {
			listener.enterCreateDatabaseStatement(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitCreateDatabaseStatement) {
			listener.exitCreateDatabaseStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitCreateDatabaseStatement) {
			return visitor.visitCreateDatabaseStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class DbLocationContext extends ParserRuleContext {
	public _locn!: Token;
	public KW_LOCATION(): TerminalNode { return this.getToken(HiveSqlParser.KW_LOCATION, 0); }
	public StringLiteral(): TerminalNode { return this.getToken(HiveSqlParser.StringLiteral, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_dbLocation; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterDbLocation) {
			listener.enterDbLocation(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitDbLocation) {
			listener.exitDbLocation(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitDbLocation) {
			return visitor.visitDbLocation(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class DbManagedLocationContext extends ParserRuleContext {
	public _locn!: Token;
	public KW_MANAGEDLOCATION(): TerminalNode { return this.getToken(HiveSqlParser.KW_MANAGEDLOCATION, 0); }
	public StringLiteral(): TerminalNode { return this.getToken(HiveSqlParser.StringLiteral, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_dbManagedLocation; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterDbManagedLocation) {
			listener.enterDbManagedLocation(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitDbManagedLocation) {
			listener.exitDbManagedLocation(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitDbManagedLocation) {
			return visitor.visitDbManagedLocation(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class DbPropertiesContext extends ParserRuleContext {
	public LPAREN(): TerminalNode { return this.getToken(HiveSqlParser.LPAREN, 0); }
	public dbPropertiesList(): DbPropertiesListContext {
		return this.getRuleContext(0, DbPropertiesListContext);
	}
	public RPAREN(): TerminalNode { return this.getToken(HiveSqlParser.RPAREN, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_dbProperties; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterDbProperties) {
			listener.enterDbProperties(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitDbProperties) {
			listener.exitDbProperties(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitDbProperties) {
			return visitor.visitDbProperties(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class DbPropertiesListContext extends ParserRuleContext {
	public keyValueProperty(): KeyValuePropertyContext[];
	public keyValueProperty(i: number): KeyValuePropertyContext;
	public keyValueProperty(i?: number): KeyValuePropertyContext | KeyValuePropertyContext[] {
		if (i === undefined) {
			return this.getRuleContexts(KeyValuePropertyContext);
		} else {
			return this.getRuleContext(i, KeyValuePropertyContext);
		}
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(HiveSqlParser.COMMA);
		} else {
			return this.getToken(HiveSqlParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_dbPropertiesList; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterDbPropertiesList) {
			listener.enterDbPropertiesList(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitDbPropertiesList) {
			listener.exitDbPropertiesList(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitDbPropertiesList) {
			return visitor.visitDbPropertiesList(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class DbConnectorNameContext extends ParserRuleContext {
	public _dcName!: DbSchemaNameContext;
	public KW_USING(): TerminalNode { return this.getToken(HiveSqlParser.KW_USING, 0); }
	public dbSchemaName(): DbSchemaNameContext {
		return this.getRuleContext(0, DbSchemaNameContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_dbConnectorName; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterDbConnectorName) {
			listener.enterDbConnectorName(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitDbConnectorName) {
			listener.exitDbConnectorName(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitDbConnectorName) {
			return visitor.visitDbConnectorName(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class SwitchDatabaseStatementContext extends ParserRuleContext {
	public KW_USE(): TerminalNode { return this.getToken(HiveSqlParser.KW_USE, 0); }
	public dbSchemaName(): DbSchemaNameContext {
		return this.getRuleContext(0, DbSchemaNameContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_switchDatabaseStatement; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterSwitchDatabaseStatement) {
			listener.enterSwitchDatabaseStatement(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitSwitchDatabaseStatement) {
			listener.exitSwitchDatabaseStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitSwitchDatabaseStatement) {
			return visitor.visitSwitchDatabaseStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class DropDatabaseStatementContext extends ParserRuleContext {
	public KW_DROP(): TerminalNode { return this.getToken(HiveSqlParser.KW_DROP, 0); }
	public db_schema(): Db_schemaContext {
		return this.getRuleContext(0, Db_schemaContext);
	}
	public dbSchemaName(): DbSchemaNameContext {
		return this.getRuleContext(0, DbSchemaNameContext);
	}
	public ifExists(): IfExistsContext | undefined {
		return this.tryGetRuleContext(0, IfExistsContext);
	}
	public restrictOrCascade(): RestrictOrCascadeContext | undefined {
		return this.tryGetRuleContext(0, RestrictOrCascadeContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_dropDatabaseStatement; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterDropDatabaseStatement) {
			listener.enterDropDatabaseStatement(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitDropDatabaseStatement) {
			listener.exitDropDatabaseStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitDropDatabaseStatement) {
			return visitor.visitDropDatabaseStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class DatabaseCommentContext extends ParserRuleContext {
	public _comment!: Token;
	public KW_COMMENT(): TerminalNode { return this.getToken(HiveSqlParser.KW_COMMENT, 0); }
	public StringLiteral(): TerminalNode { return this.getToken(HiveSqlParser.StringLiteral, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_databaseComment; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterDatabaseComment) {
			listener.enterDatabaseComment(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitDatabaseComment) {
			listener.exitDatabaseComment(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitDatabaseComment) {
			return visitor.visitDatabaseComment(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class TruncateTableStatementContext extends ParserRuleContext {
	public KW_TRUNCATE(): TerminalNode { return this.getToken(HiveSqlParser.KW_TRUNCATE, 0); }
	public tablePartitionPrefix(): TablePartitionPrefixContext {
		return this.getRuleContext(0, TablePartitionPrefixContext);
	}
	public KW_TABLE(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_TABLE, 0); }
	public KW_COLUMNS(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_COLUMNS, 0); }
	public LPAREN(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.LPAREN, 0); }
	public columnNameList(): ColumnNameListContext | undefined {
		return this.tryGetRuleContext(0, ColumnNameListContext);
	}
	public RPAREN(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.RPAREN, 0); }
	public force(): ForceContext | undefined {
		return this.tryGetRuleContext(0, ForceContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_truncateTableStatement; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterTruncateTableStatement) {
			listener.enterTruncateTableStatement(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitTruncateTableStatement) {
			listener.exitTruncateTableStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitTruncateTableStatement) {
			return visitor.visitTruncateTableStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class DropTableStatementContext extends ParserRuleContext {
	public KW_DROP(): TerminalNode { return this.getToken(HiveSqlParser.KW_DROP, 0); }
	public KW_TABLE(): TerminalNode { return this.getToken(HiveSqlParser.KW_TABLE, 0); }
	public tableName(): TableNameContext {
		return this.getRuleContext(0, TableNameContext);
	}
	public ifExists(): IfExistsContext | undefined {
		return this.tryGetRuleContext(0, IfExistsContext);
	}
	public KW_PURGE(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_PURGE, 0); }
	public replicationClause(): ReplicationClauseContext | undefined {
		return this.tryGetRuleContext(0, ReplicationClauseContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_dropTableStatement; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterDropTableStatement) {
			listener.enterDropTableStatement(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitDropTableStatement) {
			listener.exitDropTableStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitDropTableStatement) {
			return visitor.visitDropTableStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class InputFileFormatContext extends ParserRuleContext {
	public _inFmt!: Token;
	public _serdeCls!: Token;
	public KW_INPUTFORMAT(): TerminalNode { return this.getToken(HiveSqlParser.KW_INPUTFORMAT, 0); }
	public KW_SERDE(): TerminalNode { return this.getToken(HiveSqlParser.KW_SERDE, 0); }
	public StringLiteral(): TerminalNode[];
	public StringLiteral(i: number): TerminalNode;
	public StringLiteral(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(HiveSqlParser.StringLiteral);
		} else {
			return this.getToken(HiveSqlParser.StringLiteral, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_inputFileFormat; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterInputFileFormat) {
			listener.enterInputFileFormat(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitInputFileFormat) {
			listener.exitInputFileFormat(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitInputFileFormat) {
			return visitor.visitInputFileFormat(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class TabTypeExprContext extends ParserRuleContext {
	public id_(): Id_Context[];
	public id_(i: number): Id_Context;
	public id_(i?: number): Id_Context | Id_Context[] {
		if (i === undefined) {
			return this.getRuleContexts(Id_Context);
		} else {
			return this.getRuleContext(i, Id_Context);
		}
	}
	public DOT(): TerminalNode[];
	public DOT(i: number): TerminalNode;
	public DOT(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(HiveSqlParser.DOT);
		} else {
			return this.getToken(HiveSqlParser.DOT, i);
		}
	}
	public KW_ELEM_TYPE(): TerminalNode[];
	public KW_ELEM_TYPE(i: number): TerminalNode;
	public KW_ELEM_TYPE(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(HiveSqlParser.KW_ELEM_TYPE);
		} else {
			return this.getToken(HiveSqlParser.KW_ELEM_TYPE, i);
		}
	}
	public KW_KEY_TYPE(): TerminalNode[];
	public KW_KEY_TYPE(i: number): TerminalNode;
	public KW_KEY_TYPE(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(HiveSqlParser.KW_KEY_TYPE);
		} else {
			return this.getToken(HiveSqlParser.KW_KEY_TYPE, i);
		}
	}
	public KW_VALUE_TYPE(): TerminalNode[];
	public KW_VALUE_TYPE(i: number): TerminalNode;
	public KW_VALUE_TYPE(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(HiveSqlParser.KW_VALUE_TYPE);
		} else {
			return this.getToken(HiveSqlParser.KW_VALUE_TYPE, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_tabTypeExpr; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterTabTypeExpr) {
			listener.enterTabTypeExpr(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitTabTypeExpr) {
			listener.exitTabTypeExpr(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitTabTypeExpr) {
			return visitor.visitTabTypeExpr(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class PartTypeExprContext extends ParserRuleContext {
	public tabTypeExpr(): TabTypeExprContext {
		return this.getRuleContext(0, TabTypeExprContext);
	}
	public partitionSpec(): PartitionSpecContext | undefined {
		return this.tryGetRuleContext(0, PartitionSpecContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_partTypeExpr; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterPartTypeExpr) {
			listener.enterPartTypeExpr(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitPartTypeExpr) {
			listener.exitPartTypeExpr(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitPartTypeExpr) {
			return visitor.visitPartTypeExpr(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class TabPartColTypeExprContext extends ParserRuleContext {
	public tableOrView(): TableOrViewContext {
		return this.getRuleContext(0, TableOrViewContext);
	}
	public partitionSpec(): PartitionSpecContext | undefined {
		return this.tryGetRuleContext(0, PartitionSpecContext);
	}
	public extColumnName(): ExtColumnNameContext | undefined {
		return this.tryGetRuleContext(0, ExtColumnNameContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_tabPartColTypeExpr; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterTabPartColTypeExpr) {
			listener.enterTabPartColTypeExpr(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitTabPartColTypeExpr) {
			listener.exitTabPartColTypeExpr(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitTabPartColTypeExpr) {
			return visitor.visitTabPartColTypeExpr(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class DescStatementContext extends ParserRuleContext {
	public _dbName!: DbSchemaNameContext;
	public _dcName!: DbSchemaNameContext;
	public _name!: FunctionNameForDDLContext;
	public _descOptions!: Token;
	public _parttype!: TabPartColTypeExprContext;
	public KW_DESCRIBE(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_DESCRIBE, 0); }
	public KW_DESC(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_DESC, 0); }
	public db_schema(): Db_schemaContext | undefined {
		return this.tryGetRuleContext(0, Db_schemaContext);
	}
	public KW_DATACONNECTOR(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_DATACONNECTOR, 0); }
	public KW_FUNCTION(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_FUNCTION, 0); }
	public dbSchemaName(): DbSchemaNameContext | undefined {
		return this.tryGetRuleContext(0, DbSchemaNameContext);
	}
	public functionNameForDDL(): FunctionNameForDDLContext | undefined {
		return this.tryGetRuleContext(0, FunctionNameForDDLContext);
	}
	public tabPartColTypeExpr(): TabPartColTypeExprContext | undefined {
		return this.tryGetRuleContext(0, TabPartColTypeExprContext);
	}
	public KW_EXTENDED(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_EXTENDED, 0); }
	public KW_FORMATTED(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_FORMATTED, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_descStatement; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterDescStatement) {
			listener.enterDescStatement(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitDescStatement) {
			listener.exitDescStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitDescStatement) {
			return visitor.visitDescStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class AnalyzeStatementContext extends ParserRuleContext {
	public _parttype!: TableOrPartitionContext;
	public _noscan!: Token;
	public _statsColumnName!: ColumnNameListContext;
	public KW_ANALYZE(): TerminalNode { return this.getToken(HiveSqlParser.KW_ANALYZE, 0); }
	public KW_TABLE(): TerminalNode { return this.getToken(HiveSqlParser.KW_TABLE, 0); }
	public tableOrPartition(): TableOrPartitionContext {
		return this.getRuleContext(0, TableOrPartitionContext);
	}
	public KW_COMPUTE(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_COMPUTE, 0); }
	public KW_STATISTICS(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_STATISTICS, 0); }
	public KW_CACHE(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_CACHE, 0); }
	public KW_METADATA(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_METADATA, 0); }
	public KW_FOR(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_FOR, 0); }
	public KW_COLUMNS(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_COLUMNS, 0); }
	public KW_NOSCAN(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_NOSCAN, 0); }
	public columnNameList(): ColumnNameListContext | undefined {
		return this.tryGetRuleContext(0, ColumnNameListContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_analyzeStatement; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterAnalyzeStatement) {
			listener.enterAnalyzeStatement(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitAnalyzeStatement) {
			listener.exitAnalyzeStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitAnalyzeStatement) {
			return visitor.visitAnalyzeStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class From_inContext extends ParserRuleContext {
	public KW_FROM(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_FROM, 0); }
	public KW_IN(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_IN, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_from_in; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterFrom_in) {
			listener.enterFrom_in(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitFrom_in) {
			listener.exitFrom_in(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitFrom_in) {
			return visitor.visitFrom_in(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Db_schemaContext extends ParserRuleContext {
	public KW_DATABASE(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_DATABASE, 0); }
	public KW_SCHEMA(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_SCHEMA, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_db_schema; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterDb_schema) {
			listener.enterDb_schema(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitDb_schema) {
			listener.exitDb_schema(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitDb_schema) {
			return visitor.visitDb_schema(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ShowStatementContext extends ParserRuleContext {
	public _isExtended!: Token;
	public _db_name!: DbSchemaNameContext;
	public _filter!: ShowTablesFilterExprContext;
	public _tabOrViewName!: TableOrViewContext;
	public _tabName!: TableNameContext;
	public _prptyName!: Token;
	public _dbName!: DbSchemaNameContext;
	public _parttype!: PartTypeExprContext;
	public _rp_name!: Id_Context;
	public KW_SHOW(): TerminalNode { return this.getToken(HiveSqlParser.KW_SHOW, 0); }
	public KW_DATABASES(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_DATABASES, 0); }
	public KW_SCHEMAS(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_SCHEMAS, 0); }
	public KW_LIKE(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_LIKE, 0); }
	public showStmtIdentifier(): ShowStmtIdentifierContext | undefined {
		return this.tryGetRuleContext(0, ShowStmtIdentifierContext);
	}
	public KW_TABLES(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_TABLES, 0); }
	public from_in(): From_inContext[];
	public from_in(i: number): From_inContext;
	public from_in(i?: number): From_inContext | From_inContext[] {
		if (i === undefined) {
			return this.getRuleContexts(From_inContext);
		} else {
			return this.getRuleContext(i, From_inContext);
		}
	}
	public KW_EXTENDED(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_EXTENDED, 0); }
	public dbSchemaName(): DbSchemaNameContext | undefined {
		return this.tryGetRuleContext(0, DbSchemaNameContext);
	}
	public showTablesFilterExpr(): ShowTablesFilterExprContext | undefined {
		return this.tryGetRuleContext(0, ShowTablesFilterExprContext);
	}
	public KW_VIEWS(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_VIEWS, 0); }
	public KW_MATERIALIZED(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_MATERIALIZED, 0); }
	public KW_COLUMNS(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_COLUMNS, 0); }
	public tableOrView(): TableOrViewContext | undefined {
		return this.tryGetRuleContext(0, TableOrViewContext);
	}
	public KW_SORTED(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_SORTED, 0); }
	public KW_FUNCTIONS(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_FUNCTIONS, 0); }
	public functionNameForDDL(): FunctionNameForDDLContext | undefined {
		return this.tryGetRuleContext(0, FunctionNameForDDLContext);
	}
	public KW_PARTITIONS(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_PARTITIONS, 0); }
	public partitionSpec(): PartitionSpecContext | undefined {
		return this.tryGetRuleContext(0, PartitionSpecContext);
	}
	public whereClause(): WhereClauseContext | undefined {
		return this.tryGetRuleContext(0, WhereClauseContext);
	}
	public orderByClause(): OrderByClauseContext | undefined {
		return this.tryGetRuleContext(0, OrderByClauseContext);
	}
	public limitClause(): LimitClauseContext | undefined {
		return this.tryGetRuleContext(0, LimitClauseContext);
	}
	public KW_CREATE(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_CREATE, 0); }
	public db_schema(): Db_schemaContext | undefined {
		return this.tryGetRuleContext(0, Db_schemaContext);
	}
	public KW_TABLE(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_TABLE, 0); }
	public tableName(): TableNameContext | undefined {
		return this.tryGetRuleContext(0, TableNameContext);
	}
	public KW_TBLPROPERTIES(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_TBLPROPERTIES, 0); }
	public LPAREN(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.LPAREN, 0); }
	public RPAREN(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.RPAREN, 0); }
	public StringLiteral(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.StringLiteral, 0); }
	public KW_LOCKS(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_LOCKS, 0); }
	public partTypeExpr(): PartTypeExprContext | undefined {
		return this.tryGetRuleContext(0, PartTypeExprContext);
	}
	public KW_COMPACTIONS(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_COMPACTIONS, 0); }
	public compactionId(): CompactionIdContext | undefined {
		return this.tryGetRuleContext(0, CompactionIdContext);
	}
	public compactionPool(): CompactionPoolContext | undefined {
		return this.tryGetRuleContext(0, CompactionPoolContext);
	}
	public compactionType(): CompactionTypeContext | undefined {
		return this.tryGetRuleContext(0, CompactionTypeContext);
	}
	public compactionStatus(): CompactionStatusContext | undefined {
		return this.tryGetRuleContext(0, CompactionStatusContext);
	}
	public KW_TRANSACTIONS(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_TRANSACTIONS, 0); }
	public KW_CONF(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_CONF, 0); }
	public KW_RESOURCE(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_RESOURCE, 0); }
	public KW_PLAN(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_PLAN, 0); }
	public KW_PLANS(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_PLANS, 0); }
	public id_(): Id_Context | undefined {
		return this.tryGetRuleContext(0, Id_Context);
	}
	public KW_DATACONNECTORS(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_DATACONNECTORS, 0); }
	public KW_ON(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_ON, 0); }
	public KW_INDEX(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_INDEX, 0); }
	public KW_INDEXES(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_INDEXES, 0); }
	public KW_FORMATTED(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_FORMATTED, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_showStatement; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterShowStatement) {
			listener.enterShowStatement(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitShowStatement) {
			listener.exitShowStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitShowStatement) {
			return visitor.visitShowStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ShowTablesFilterExprContext extends ParserRuleContext {
	public KW_WHERE(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_WHERE, 0); }
	public id_(): Id_Context | undefined {
		return this.tryGetRuleContext(0, Id_Context);
	}
	public EQUAL(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.EQUAL, 0); }
	public StringLiteral(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.StringLiteral, 0); }
	public KW_LIKE(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_LIKE, 0); }
	public showStmtIdentifier(): ShowStmtIdentifierContext | undefined {
		return this.tryGetRuleContext(0, ShowStmtIdentifierContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_showTablesFilterExpr; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterShowTablesFilterExpr) {
			listener.enterShowTablesFilterExpr(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitShowTablesFilterExpr) {
			listener.exitShowTablesFilterExpr(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitShowTablesFilterExpr) {
			return visitor.visitShowTablesFilterExpr(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class LockStatementContext extends ParserRuleContext {
	public KW_LOCK(): TerminalNode { return this.getToken(HiveSqlParser.KW_LOCK, 0); }
	public KW_TABLE(): TerminalNode { return this.getToken(HiveSqlParser.KW_TABLE, 0); }
	public tableName(): TableNameContext {
		return this.getRuleContext(0, TableNameContext);
	}
	public lockMode(): LockModeContext {
		return this.getRuleContext(0, LockModeContext);
	}
	public partitionSpec(): PartitionSpecContext | undefined {
		return this.tryGetRuleContext(0, PartitionSpecContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_lockStatement; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterLockStatement) {
			listener.enterLockStatement(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitLockStatement) {
			listener.exitLockStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitLockStatement) {
			return visitor.visitLockStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class LockDatabaseContext extends ParserRuleContext {
	public _dbName!: DbSchemaNameContext;
	public KW_LOCK(): TerminalNode { return this.getToken(HiveSqlParser.KW_LOCK, 0); }
	public db_schema(): Db_schemaContext {
		return this.getRuleContext(0, Db_schemaContext);
	}
	public lockMode(): LockModeContext {
		return this.getRuleContext(0, LockModeContext);
	}
	public dbSchemaName(): DbSchemaNameContext {
		return this.getRuleContext(0, DbSchemaNameContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_lockDatabase; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterLockDatabase) {
			listener.enterLockDatabase(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitLockDatabase) {
			listener.exitLockDatabase(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitLockDatabase) {
			return visitor.visitLockDatabase(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class LockModeContext extends ParserRuleContext {
	public KW_SHARED(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_SHARED, 0); }
	public KW_EXCLUSIVE(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_EXCLUSIVE, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_lockMode; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterLockMode) {
			listener.enterLockMode(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitLockMode) {
			listener.exitLockMode(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitLockMode) {
			return visitor.visitLockMode(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class UnlockStatementContext extends ParserRuleContext {
	public KW_UNLOCK(): TerminalNode { return this.getToken(HiveSqlParser.KW_UNLOCK, 0); }
	public KW_TABLE(): TerminalNode { return this.getToken(HiveSqlParser.KW_TABLE, 0); }
	public tableName(): TableNameContext {
		return this.getRuleContext(0, TableNameContext);
	}
	public partitionSpec(): PartitionSpecContext | undefined {
		return this.tryGetRuleContext(0, PartitionSpecContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_unlockStatement; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterUnlockStatement) {
			listener.enterUnlockStatement(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitUnlockStatement) {
			listener.exitUnlockStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitUnlockStatement) {
			return visitor.visitUnlockStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class UnlockDatabaseContext extends ParserRuleContext {
	public _dbName!: DbSchemaNameContext;
	public KW_UNLOCK(): TerminalNode { return this.getToken(HiveSqlParser.KW_UNLOCK, 0); }
	public db_schema(): Db_schemaContext {
		return this.getRuleContext(0, Db_schemaContext);
	}
	public dbSchemaName(): DbSchemaNameContext {
		return this.getRuleContext(0, DbSchemaNameContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_unlockDatabase; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterUnlockDatabase) {
			listener.enterUnlockDatabase(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitUnlockDatabase) {
			listener.exitUnlockDatabase(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitUnlockDatabase) {
			return visitor.visitUnlockDatabase(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class CreateRoleStatementContext extends ParserRuleContext {
	public _roleName!: Id_Context;
	public KW_CREATE(): TerminalNode { return this.getToken(HiveSqlParser.KW_CREATE, 0); }
	public KW_ROLE(): TerminalNode { return this.getToken(HiveSqlParser.KW_ROLE, 0); }
	public id_(): Id_Context {
		return this.getRuleContext(0, Id_Context);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_createRoleStatement; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterCreateRoleStatement) {
			listener.enterCreateRoleStatement(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitCreateRoleStatement) {
			listener.exitCreateRoleStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitCreateRoleStatement) {
			return visitor.visitCreateRoleStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class DropRoleStatementContext extends ParserRuleContext {
	public _roleName!: Id_Context;
	public KW_DROP(): TerminalNode { return this.getToken(HiveSqlParser.KW_DROP, 0); }
	public KW_ROLE(): TerminalNode { return this.getToken(HiveSqlParser.KW_ROLE, 0); }
	public id_(): Id_Context {
		return this.getRuleContext(0, Id_Context);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_dropRoleStatement; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterDropRoleStatement) {
			listener.enterDropRoleStatement(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitDropRoleStatement) {
			listener.exitDropRoleStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitDropRoleStatement) {
			return visitor.visitDropRoleStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class GrantPrivilegesContext extends ParserRuleContext {
	public _privList!: PrivilegeListContext;
	public KW_GRANT(): TerminalNode { return this.getToken(HiveSqlParser.KW_GRANT, 0); }
	public KW_TO(): TerminalNode { return this.getToken(HiveSqlParser.KW_TO, 0); }
	public principalSpecification(): PrincipalSpecificationContext {
		return this.getRuleContext(0, PrincipalSpecificationContext);
	}
	public privilegeList(): PrivilegeListContext {
		return this.getRuleContext(0, PrivilegeListContext);
	}
	public privilegeObject(): PrivilegeObjectContext | undefined {
		return this.tryGetRuleContext(0, PrivilegeObjectContext);
	}
	public withGrantOption(): WithGrantOptionContext | undefined {
		return this.tryGetRuleContext(0, WithGrantOptionContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_grantPrivileges; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterGrantPrivileges) {
			listener.enterGrantPrivileges(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitGrantPrivileges) {
			listener.exitGrantPrivileges(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitGrantPrivileges) {
			return visitor.visitGrantPrivileges(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class RevokePrivilegesContext extends ParserRuleContext {
	public KW_REVOKE(): TerminalNode { return this.getToken(HiveSqlParser.KW_REVOKE, 0); }
	public privilegeList(): PrivilegeListContext {
		return this.getRuleContext(0, PrivilegeListContext);
	}
	public KW_FROM(): TerminalNode { return this.getToken(HiveSqlParser.KW_FROM, 0); }
	public principalSpecification(): PrincipalSpecificationContext {
		return this.getRuleContext(0, PrincipalSpecificationContext);
	}
	public grantOptionFor(): GrantOptionForContext | undefined {
		return this.tryGetRuleContext(0, GrantOptionForContext);
	}
	public privilegeObject(): PrivilegeObjectContext | undefined {
		return this.tryGetRuleContext(0, PrivilegeObjectContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_revokePrivileges; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterRevokePrivileges) {
			listener.enterRevokePrivileges(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitRevokePrivileges) {
			listener.exitRevokePrivileges(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitRevokePrivileges) {
			return visitor.visitRevokePrivileges(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class GrantRoleContext extends ParserRuleContext {
	public KW_GRANT(): TerminalNode { return this.getToken(HiveSqlParser.KW_GRANT, 0); }
	public id_(): Id_Context[];
	public id_(i: number): Id_Context;
	public id_(i?: number): Id_Context | Id_Context[] {
		if (i === undefined) {
			return this.getRuleContexts(Id_Context);
		} else {
			return this.getRuleContext(i, Id_Context);
		}
	}
	public KW_TO(): TerminalNode { return this.getToken(HiveSqlParser.KW_TO, 0); }
	public principalSpecification(): PrincipalSpecificationContext {
		return this.getRuleContext(0, PrincipalSpecificationContext);
	}
	public KW_ROLE(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_ROLE, 0); }
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(HiveSqlParser.COMMA);
		} else {
			return this.getToken(HiveSqlParser.COMMA, i);
		}
	}
	public withAdminOption(): WithAdminOptionContext | undefined {
		return this.tryGetRuleContext(0, WithAdminOptionContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_grantRole; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterGrantRole) {
			listener.enterGrantRole(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitGrantRole) {
			listener.exitGrantRole(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitGrantRole) {
			return visitor.visitGrantRole(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class RevokeRoleContext extends ParserRuleContext {
	public KW_REVOKE(): TerminalNode { return this.getToken(HiveSqlParser.KW_REVOKE, 0); }
	public id_(): Id_Context[];
	public id_(i: number): Id_Context;
	public id_(i?: number): Id_Context | Id_Context[] {
		if (i === undefined) {
			return this.getRuleContexts(Id_Context);
		} else {
			return this.getRuleContext(i, Id_Context);
		}
	}
	public KW_FROM(): TerminalNode { return this.getToken(HiveSqlParser.KW_FROM, 0); }
	public principalSpecification(): PrincipalSpecificationContext {
		return this.getRuleContext(0, PrincipalSpecificationContext);
	}
	public adminOptionFor(): AdminOptionForContext | undefined {
		return this.tryGetRuleContext(0, AdminOptionForContext);
	}
	public KW_ROLE(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_ROLE, 0); }
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(HiveSqlParser.COMMA);
		} else {
			return this.getToken(HiveSqlParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_revokeRole; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterRevokeRole) {
			listener.enterRevokeRole(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitRevokeRole) {
			listener.exitRevokeRole(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitRevokeRole) {
			return visitor.visitRevokeRole(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ShowRoleGrantsContext extends ParserRuleContext {
	public KW_SHOW(): TerminalNode { return this.getToken(HiveSqlParser.KW_SHOW, 0); }
	public KW_ROLE(): TerminalNode { return this.getToken(HiveSqlParser.KW_ROLE, 0); }
	public KW_GRANT(): TerminalNode { return this.getToken(HiveSqlParser.KW_GRANT, 0); }
	public principalName(): PrincipalNameContext {
		return this.getRuleContext(0, PrincipalNameContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_showRoleGrants; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterShowRoleGrants) {
			listener.enterShowRoleGrants(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitShowRoleGrants) {
			listener.exitShowRoleGrants(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitShowRoleGrants) {
			return visitor.visitShowRoleGrants(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ShowRolesContext extends ParserRuleContext {
	public KW_SHOW(): TerminalNode { return this.getToken(HiveSqlParser.KW_SHOW, 0); }
	public KW_ROLES(): TerminalNode { return this.getToken(HiveSqlParser.KW_ROLES, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_showRoles; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterShowRoles) {
			listener.enterShowRoles(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitShowRoles) {
			listener.exitShowRoles(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitShowRoles) {
			return visitor.visitShowRoles(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ShowCurrentRoleContext extends ParserRuleContext {
	public KW_SHOW(): TerminalNode { return this.getToken(HiveSqlParser.KW_SHOW, 0); }
	public KW_CURRENT(): TerminalNode { return this.getToken(HiveSqlParser.KW_CURRENT, 0); }
	public KW_ROLES(): TerminalNode { return this.getToken(HiveSqlParser.KW_ROLES, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_showCurrentRole; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterShowCurrentRole) {
			listener.enterShowCurrentRole(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitShowCurrentRole) {
			listener.exitShowCurrentRole(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitShowCurrentRole) {
			return visitor.visitShowCurrentRole(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class SetRoleContext extends ParserRuleContext {
	public _all!: Token;
	public _none!: Token;
	public KW_SET(): TerminalNode { return this.getToken(HiveSqlParser.KW_SET, 0); }
	public KW_ROLE(): TerminalNode { return this.getToken(HiveSqlParser.KW_ROLE, 0); }
	public id_(): Id_Context | undefined {
		return this.tryGetRuleContext(0, Id_Context);
	}
	public KW_ALL(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_ALL, 0); }
	public KW_NONE(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_NONE, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_setRole; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterSetRole) {
			listener.enterSetRole(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitSetRole) {
			listener.exitSetRole(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitSetRole) {
			return visitor.visitSetRole(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ShowGrantsContext extends ParserRuleContext {
	public KW_SHOW(): TerminalNode { return this.getToken(HiveSqlParser.KW_SHOW, 0); }
	public KW_GRANT(): TerminalNode { return this.getToken(HiveSqlParser.KW_GRANT, 0); }
	public principalName(): PrincipalNameContext | undefined {
		return this.tryGetRuleContext(0, PrincipalNameContext);
	}
	public KW_ON(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_ON, 0); }
	public privilegeIncludeColObject(): PrivilegeIncludeColObjectContext | undefined {
		return this.tryGetRuleContext(0, PrivilegeIncludeColObjectContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_showGrants; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterShowGrants) {
			listener.enterShowGrants(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitShowGrants) {
			listener.exitShowGrants(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitShowGrants) {
			return visitor.visitShowGrants(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ShowRolePrincipalsContext extends ParserRuleContext {
	public _roleName!: Id_Context;
	public KW_SHOW(): TerminalNode { return this.getToken(HiveSqlParser.KW_SHOW, 0); }
	public KW_PRINCIPALS(): TerminalNode { return this.getToken(HiveSqlParser.KW_PRINCIPALS, 0); }
	public id_(): Id_Context {
		return this.getRuleContext(0, Id_Context);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_showRolePrincipals; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterShowRolePrincipals) {
			listener.enterShowRolePrincipals(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitShowRolePrincipals) {
			listener.exitShowRolePrincipals(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitShowRolePrincipals) {
			return visitor.visitShowRolePrincipals(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class PrivilegeIncludeColObjectContext extends ParserRuleContext {
	public KW_ALL(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_ALL, 0); }
	public privObjectCols(): PrivObjectColsContext | undefined {
		return this.tryGetRuleContext(0, PrivObjectColsContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_privilegeIncludeColObject; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterPrivilegeIncludeColObject) {
			listener.enterPrivilegeIncludeColObject(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitPrivilegeIncludeColObject) {
			listener.exitPrivilegeIncludeColObject(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitPrivilegeIncludeColObject) {
			return visitor.visitPrivilegeIncludeColObject(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class PrivilegeObjectContext extends ParserRuleContext {
	public KW_ON(): TerminalNode { return this.getToken(HiveSqlParser.KW_ON, 0); }
	public privObject(): PrivObjectContext {
		return this.getRuleContext(0, PrivObjectContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_privilegeObject; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterPrivilegeObject) {
			listener.enterPrivilegeObject(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitPrivilegeObject) {
			listener.exitPrivilegeObject(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitPrivilegeObject) {
			return visitor.visitPrivilegeObject(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class PrivObjectContext extends ParserRuleContext {
	public _path!: Token;
	public db_schema(): Db_schemaContext | undefined {
		return this.tryGetRuleContext(0, Db_schemaContext);
	}
	public dbSchemaName(): DbSchemaNameContext | undefined {
		return this.tryGetRuleContext(0, DbSchemaNameContext);
	}
	public tableName(): TableNameContext | undefined {
		return this.tryGetRuleContext(0, TableNameContext);
	}
	public KW_TABLE(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_TABLE, 0); }
	public partitionSpec(): PartitionSpecContext | undefined {
		return this.tryGetRuleContext(0, PartitionSpecContext);
	}
	public KW_URI(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_URI, 0); }
	public StringLiteral(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.StringLiteral, 0); }
	public KW_SERVER(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_SERVER, 0); }
	public id_(): Id_Context | undefined {
		return this.tryGetRuleContext(0, Id_Context);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_privObject; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterPrivObject) {
			listener.enterPrivObject(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitPrivObject) {
			listener.exitPrivObject(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitPrivObject) {
			return visitor.visitPrivObject(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class PrivObjectColsContext extends ParserRuleContext {
	public _cols!: ColumnNameListContext;
	public _path!: Token;
	public db_schema(): Db_schemaContext | undefined {
		return this.tryGetRuleContext(0, Db_schemaContext);
	}
	public dbSchemaName(): DbSchemaNameContext | undefined {
		return this.tryGetRuleContext(0, DbSchemaNameContext);
	}
	public tableName(): TableNameContext | undefined {
		return this.tryGetRuleContext(0, TableNameContext);
	}
	public KW_TABLE(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_TABLE, 0); }
	public LPAREN(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.LPAREN, 0); }
	public RPAREN(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.RPAREN, 0); }
	public partitionSpec(): PartitionSpecContext | undefined {
		return this.tryGetRuleContext(0, PartitionSpecContext);
	}
	public columnNameList(): ColumnNameListContext | undefined {
		return this.tryGetRuleContext(0, ColumnNameListContext);
	}
	public KW_URI(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_URI, 0); }
	public StringLiteral(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.StringLiteral, 0); }
	public KW_SERVER(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_SERVER, 0); }
	public id_(): Id_Context | undefined {
		return this.tryGetRuleContext(0, Id_Context);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_privObjectCols; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterPrivObjectCols) {
			listener.enterPrivObjectCols(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitPrivObjectCols) {
			listener.exitPrivObjectCols(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitPrivObjectCols) {
			return visitor.visitPrivObjectCols(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class PrivilegeListContext extends ParserRuleContext {
	public privlegeDef(): PrivlegeDefContext[];
	public privlegeDef(i: number): PrivlegeDefContext;
	public privlegeDef(i?: number): PrivlegeDefContext | PrivlegeDefContext[] {
		if (i === undefined) {
			return this.getRuleContexts(PrivlegeDefContext);
		} else {
			return this.getRuleContext(i, PrivlegeDefContext);
		}
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(HiveSqlParser.COMMA);
		} else {
			return this.getToken(HiveSqlParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_privilegeList; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterPrivilegeList) {
			listener.enterPrivilegeList(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitPrivilegeList) {
			listener.exitPrivilegeList(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitPrivilegeList) {
			return visitor.visitPrivilegeList(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class PrivlegeDefContext extends ParserRuleContext {
	public _cols!: ColumnNameListContext;
	public privilegeType(): PrivilegeTypeContext {
		return this.getRuleContext(0, PrivilegeTypeContext);
	}
	public LPAREN(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.LPAREN, 0); }
	public RPAREN(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.RPAREN, 0); }
	public columnNameList(): ColumnNameListContext | undefined {
		return this.tryGetRuleContext(0, ColumnNameListContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_privlegeDef; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterPrivlegeDef) {
			listener.enterPrivlegeDef(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitPrivlegeDef) {
			listener.exitPrivlegeDef(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitPrivlegeDef) {
			return visitor.visitPrivlegeDef(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class PrivilegeTypeContext extends ParserRuleContext {
	public KW_ALL(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_ALL, 0); }
	public KW_ALTER(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_ALTER, 0); }
	public KW_UPDATE(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_UPDATE, 0); }
	public KW_CREATE(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_CREATE, 0); }
	public KW_DROP(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_DROP, 0); }
	public KW_INDEX(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_INDEX, 0); }
	public KW_LOCK(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_LOCK, 0); }
	public KW_SELECT(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_SELECT, 0); }
	public KW_SHOW_DATABASE(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_SHOW_DATABASE, 0); }
	public KW_INSERT(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_INSERT, 0); }
	public KW_DELETE(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_DELETE, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_privilegeType; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterPrivilegeType) {
			listener.enterPrivilegeType(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitPrivilegeType) {
			listener.exitPrivilegeType(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitPrivilegeType) {
			return visitor.visitPrivilegeType(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class PrincipalSpecificationContext extends ParserRuleContext {
	public principalName(): PrincipalNameContext[];
	public principalName(i: number): PrincipalNameContext;
	public principalName(i?: number): PrincipalNameContext | PrincipalNameContext[] {
		if (i === undefined) {
			return this.getRuleContexts(PrincipalNameContext);
		} else {
			return this.getRuleContext(i, PrincipalNameContext);
		}
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(HiveSqlParser.COMMA);
		} else {
			return this.getToken(HiveSqlParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_principalSpecification; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterPrincipalSpecification) {
			listener.enterPrincipalSpecification(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitPrincipalSpecification) {
			listener.exitPrincipalSpecification(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitPrincipalSpecification) {
			return visitor.visitPrincipalSpecification(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class PrincipalNameContext extends ParserRuleContext {
	public KW_USER(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_USER, 0); }
	public principalIdentifier(): PrincipalIdentifierContext | undefined {
		return this.tryGetRuleContext(0, PrincipalIdentifierContext);
	}
	public KW_GROUP(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_GROUP, 0); }
	public KW_ROLE(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_ROLE, 0); }
	public id_(): Id_Context | undefined {
		return this.tryGetRuleContext(0, Id_Context);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_principalName; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterPrincipalName) {
			listener.enterPrincipalName(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitPrincipalName) {
			listener.exitPrincipalName(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitPrincipalName) {
			return visitor.visitPrincipalName(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class PrincipalAlterNameContext extends ParserRuleContext {
	public KW_USER(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_USER, 0); }
	public principalIdentifier(): PrincipalIdentifierContext | undefined {
		return this.tryGetRuleContext(0, PrincipalIdentifierContext);
	}
	public KW_ROLE(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_ROLE, 0); }
	public id_(): Id_Context | undefined {
		return this.tryGetRuleContext(0, Id_Context);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_principalAlterName; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterPrincipalAlterName) {
			listener.enterPrincipalAlterName(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitPrincipalAlterName) {
			listener.exitPrincipalAlterName(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitPrincipalAlterName) {
			return visitor.visitPrincipalAlterName(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class WithGrantOptionContext extends ParserRuleContext {
	public KW_WITH(): TerminalNode { return this.getToken(HiveSqlParser.KW_WITH, 0); }
	public KW_GRANT(): TerminalNode { return this.getToken(HiveSqlParser.KW_GRANT, 0); }
	public KW_OPTION(): TerminalNode { return this.getToken(HiveSqlParser.KW_OPTION, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_withGrantOption; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterWithGrantOption) {
			listener.enterWithGrantOption(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitWithGrantOption) {
			listener.exitWithGrantOption(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitWithGrantOption) {
			return visitor.visitWithGrantOption(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class GrantOptionForContext extends ParserRuleContext {
	public KW_GRANT(): TerminalNode { return this.getToken(HiveSqlParser.KW_GRANT, 0); }
	public KW_OPTION(): TerminalNode { return this.getToken(HiveSqlParser.KW_OPTION, 0); }
	public KW_FOR(): TerminalNode { return this.getToken(HiveSqlParser.KW_FOR, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_grantOptionFor; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterGrantOptionFor) {
			listener.enterGrantOptionFor(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitGrantOptionFor) {
			listener.exitGrantOptionFor(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitGrantOptionFor) {
			return visitor.visitGrantOptionFor(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class AdminOptionForContext extends ParserRuleContext {
	public KW_ADMIN(): TerminalNode { return this.getToken(HiveSqlParser.KW_ADMIN, 0); }
	public KW_OPTION(): TerminalNode { return this.getToken(HiveSqlParser.KW_OPTION, 0); }
	public KW_FOR(): TerminalNode { return this.getToken(HiveSqlParser.KW_FOR, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_adminOptionFor; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterAdminOptionFor) {
			listener.enterAdminOptionFor(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitAdminOptionFor) {
			listener.exitAdminOptionFor(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitAdminOptionFor) {
			return visitor.visitAdminOptionFor(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class WithAdminOptionContext extends ParserRuleContext {
	public KW_WITH(): TerminalNode { return this.getToken(HiveSqlParser.KW_WITH, 0); }
	public KW_ADMIN(): TerminalNode { return this.getToken(HiveSqlParser.KW_ADMIN, 0); }
	public KW_OPTION(): TerminalNode { return this.getToken(HiveSqlParser.KW_OPTION, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_withAdminOption; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterWithAdminOption) {
			listener.enterWithAdminOption(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitWithAdminOption) {
			listener.exitWithAdminOption(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitWithAdminOption) {
			return visitor.visitWithAdminOption(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class MetastoreCheckContext extends ParserRuleContext {
	public _repair!: Token;
	public _opt!: Token;
	public _parts!: Token;
	public KW_MSCK(): TerminalNode { return this.getToken(HiveSqlParser.KW_MSCK, 0); }
	public KW_TABLE(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_TABLE, 0); }
	public tableName(): TableNameContext | undefined {
		return this.tryGetRuleContext(0, TableNameContext);
	}
	public KW_REPAIR(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_REPAIR, 0); }
	public KW_PARTITIONS(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_PARTITIONS, 0); }
	public KW_ADD(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_ADD, 0); }
	public KW_DROP(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_DROP, 0); }
	public KW_SYNC(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_SYNC, 0); }
	public partitionSelectorSpec(): PartitionSelectorSpecContext | undefined {
		return this.tryGetRuleContext(0, PartitionSelectorSpecContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_metastoreCheck; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterMetastoreCheck) {
			listener.enterMetastoreCheck(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitMetastoreCheck) {
			listener.exitMetastoreCheck(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitMetastoreCheck) {
			return visitor.visitMetastoreCheck(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ResourceListContext extends ParserRuleContext {
	public resource(): ResourceContext[];
	public resource(i: number): ResourceContext;
	public resource(i?: number): ResourceContext | ResourceContext[] {
		if (i === undefined) {
			return this.getRuleContexts(ResourceContext);
		} else {
			return this.getRuleContext(i, ResourceContext);
		}
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(HiveSqlParser.COMMA);
		} else {
			return this.getToken(HiveSqlParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_resourceList; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterResourceList) {
			listener.enterResourceList(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitResourceList) {
			listener.exitResourceList(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitResourceList) {
			return visitor.visitResourceList(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ResourceContext extends ParserRuleContext {
	public _resType!: ResourceTypeContext;
	public _resPath!: Token;
	public resourceType(): ResourceTypeContext {
		return this.getRuleContext(0, ResourceTypeContext);
	}
	public StringLiteral(): TerminalNode { return this.getToken(HiveSqlParser.StringLiteral, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_resource; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterResource) {
			listener.enterResource(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitResource) {
			listener.exitResource(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitResource) {
			return visitor.visitResource(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ResourceTypeContext extends ParserRuleContext {
	public KW_JAR(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_JAR, 0); }
	public KW_FILE(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_FILE, 0); }
	public KW_ARCHIVE(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_ARCHIVE, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_resourceType; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterResourceType) {
			listener.enterResourceType(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitResourceType) {
			listener.exitResourceType(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitResourceType) {
			return visitor.visitResourceType(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class CreateFunctionStatementContext extends ParserRuleContext {
	public _temp!: Token;
	public _rList!: ResourceListContext;
	public KW_CREATE(): TerminalNode { return this.getToken(HiveSqlParser.KW_CREATE, 0); }
	public KW_FUNCTION(): TerminalNode { return this.getToken(HiveSqlParser.KW_FUNCTION, 0); }
	public functionNameCreate(): FunctionNameCreateContext {
		return this.getRuleContext(0, FunctionNameCreateContext);
	}
	public KW_AS(): TerminalNode { return this.getToken(HiveSqlParser.KW_AS, 0); }
	public StringLiteral(): TerminalNode { return this.getToken(HiveSqlParser.StringLiteral, 0); }
	public KW_USING(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_USING, 0); }
	public KW_TEMPORARY(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_TEMPORARY, 0); }
	public resourceList(): ResourceListContext | undefined {
		return this.tryGetRuleContext(0, ResourceListContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_createFunctionStatement; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterCreateFunctionStatement) {
			listener.enterCreateFunctionStatement(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitCreateFunctionStatement) {
			listener.exitCreateFunctionStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitCreateFunctionStatement) {
			return visitor.visitCreateFunctionStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class DropFunctionStatementContext extends ParserRuleContext {
	public _temp!: Token;
	public KW_DROP(): TerminalNode { return this.getToken(HiveSqlParser.KW_DROP, 0); }
	public KW_FUNCTION(): TerminalNode { return this.getToken(HiveSqlParser.KW_FUNCTION, 0); }
	public functionNameForDDL(): FunctionNameForDDLContext {
		return this.getRuleContext(0, FunctionNameForDDLContext);
	}
	public ifExists(): IfExistsContext | undefined {
		return this.tryGetRuleContext(0, IfExistsContext);
	}
	public KW_TEMPORARY(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_TEMPORARY, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_dropFunctionStatement; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterDropFunctionStatement) {
			listener.enterDropFunctionStatement(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitDropFunctionStatement) {
			listener.exitDropFunctionStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitDropFunctionStatement) {
			return visitor.visitDropFunctionStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ReloadFunctionsStatementContext extends ParserRuleContext {
	public KW_RELOAD(): TerminalNode { return this.getToken(HiveSqlParser.KW_RELOAD, 0); }
	public KW_FUNCTIONS(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_FUNCTIONS, 0); }
	public KW_FUNCTION(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_FUNCTION, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_reloadFunctionsStatement; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterReloadFunctionsStatement) {
			listener.enterReloadFunctionsStatement(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitReloadFunctionsStatement) {
			listener.exitReloadFunctionsStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitReloadFunctionsStatement) {
			return visitor.visitReloadFunctionsStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class CreateMacroStatementContext extends ParserRuleContext {
	public KW_CREATE(): TerminalNode { return this.getToken(HiveSqlParser.KW_CREATE, 0); }
	public KW_TEMPORARY(): TerminalNode { return this.getToken(HiveSqlParser.KW_TEMPORARY, 0); }
	public KW_MACRO(): TerminalNode { return this.getToken(HiveSqlParser.KW_MACRO, 0); }
	public Identifier(): TerminalNode { return this.getToken(HiveSqlParser.Identifier, 0); }
	public LPAREN(): TerminalNode { return this.getToken(HiveSqlParser.LPAREN, 0); }
	public RPAREN(): TerminalNode { return this.getToken(HiveSqlParser.RPAREN, 0); }
	public expression(): ExpressionContext {
		return this.getRuleContext(0, ExpressionContext);
	}
	public columnNameTypeList(): ColumnNameTypeListContext | undefined {
		return this.tryGetRuleContext(0, ColumnNameTypeListContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_createMacroStatement; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterCreateMacroStatement) {
			listener.enterCreateMacroStatement(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitCreateMacroStatement) {
			listener.exitCreateMacroStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitCreateMacroStatement) {
			return visitor.visitCreateMacroStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class DropMacroStatementContext extends ParserRuleContext {
	public KW_DROP(): TerminalNode { return this.getToken(HiveSqlParser.KW_DROP, 0); }
	public KW_TEMPORARY(): TerminalNode { return this.getToken(HiveSqlParser.KW_TEMPORARY, 0); }
	public KW_MACRO(): TerminalNode { return this.getToken(HiveSqlParser.KW_MACRO, 0); }
	public Identifier(): TerminalNode { return this.getToken(HiveSqlParser.Identifier, 0); }
	public ifExists(): IfExistsContext | undefined {
		return this.tryGetRuleContext(0, IfExistsContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_dropMacroStatement; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterDropMacroStatement) {
			listener.enterDropMacroStatement(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitDropMacroStatement) {
			listener.exitDropMacroStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitDropMacroStatement) {
			return visitor.visitDropMacroStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class CreateIndexStatementContext extends ParserRuleContext {
	public _indextype!: Token;
	public _locn!: Token;
	public KW_CREATE(): TerminalNode { return this.getToken(HiveSqlParser.KW_CREATE, 0); }
	public KW_INDEX(): TerminalNode { return this.getToken(HiveSqlParser.KW_INDEX, 0); }
	public id_(): Id_Context {
		return this.getRuleContext(0, Id_Context);
	}
	public KW_ON(): TerminalNode { return this.getToken(HiveSqlParser.KW_ON, 0); }
	public KW_TABLE(): TerminalNode[];
	public KW_TABLE(i: number): TerminalNode;
	public KW_TABLE(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(HiveSqlParser.KW_TABLE);
		} else {
			return this.getToken(HiveSqlParser.KW_TABLE, i);
		}
	}
	public tableName(): TableNameContext[];
	public tableName(i: number): TableNameContext;
	public tableName(i?: number): TableNameContext | TableNameContext[] {
		if (i === undefined) {
			return this.getRuleContexts(TableNameContext);
		} else {
			return this.getRuleContext(i, TableNameContext);
		}
	}
	public columnParenthesesList(): ColumnParenthesesListContext[];
	public columnParenthesesList(i: number): ColumnParenthesesListContext;
	public columnParenthesesList(i?: number): ColumnParenthesesListContext | ColumnParenthesesListContext[] {
		if (i === undefined) {
			return this.getRuleContexts(ColumnParenthesesListContext);
		} else {
			return this.getRuleContext(i, ColumnParenthesesListContext);
		}
	}
	public KW_AS(): TerminalNode { return this.getToken(HiveSqlParser.KW_AS, 0); }
	public StringLiteral(): TerminalNode[];
	public StringLiteral(i: number): TerminalNode;
	public StringLiteral(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(HiveSqlParser.StringLiteral);
		} else {
			return this.getToken(HiveSqlParser.StringLiteral, i);
		}
	}
	public KW_WITH(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_WITH, 0); }
	public KW_DEFERRED(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_DEFERRED, 0); }
	public KW_REBUILD(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_REBUILD, 0); }
	public KW_IDXPROPERTIES(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_IDXPROPERTIES, 0); }
	public tableProperties(): TablePropertiesContext | undefined {
		return this.tryGetRuleContext(0, TablePropertiesContext);
	}
	public KW_IN(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_IN, 0); }
	public KW_PARTITIONED(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_PARTITIONED, 0); }
	public KW_BY(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_BY, 0); }
	public tableFileFormat(): TableFileFormatContext | undefined {
		return this.tryGetRuleContext(0, TableFileFormatContext);
	}
	public KW_LOCATION(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_LOCATION, 0); }
	public tablePropertiesPrefixed(): TablePropertiesPrefixedContext | undefined {
		return this.tryGetRuleContext(0, TablePropertiesPrefixedContext);
	}
	public tableComment(): TableCommentContext | undefined {
		return this.tryGetRuleContext(0, TableCommentContext);
	}
	public tableRowFormat(): TableRowFormatContext | undefined {
		return this.tryGetRuleContext(0, TableRowFormatContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_createIndexStatement; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterCreateIndexStatement) {
			listener.enterCreateIndexStatement(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitCreateIndexStatement) {
			listener.exitCreateIndexStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitCreateIndexStatement) {
			return visitor.visitCreateIndexStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class DropIndexStatementContext extends ParserRuleContext {
	public KW_DROP(): TerminalNode { return this.getToken(HiveSqlParser.KW_DROP, 0); }
	public KW_INDEX(): TerminalNode { return this.getToken(HiveSqlParser.KW_INDEX, 0); }
	public id_(): Id_Context {
		return this.getRuleContext(0, Id_Context);
	}
	public KW_ON(): TerminalNode { return this.getToken(HiveSqlParser.KW_ON, 0); }
	public tableName(): TableNameContext {
		return this.getRuleContext(0, TableNameContext);
	}
	public ifExists(): IfExistsContext | undefined {
		return this.tryGetRuleContext(0, IfExistsContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_dropIndexStatement; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterDropIndexStatement) {
			listener.enterDropIndexStatement(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitDropIndexStatement) {
			listener.exitDropIndexStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitDropIndexStatement) {
			return visitor.visitDropIndexStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class CreateViewStatementContext extends ParserRuleContext {
	public _name!: ViewNameCreateContext;
	public KW_CREATE(): TerminalNode { return this.getToken(HiveSqlParser.KW_CREATE, 0); }
	public KW_VIEW(): TerminalNode { return this.getToken(HiveSqlParser.KW_VIEW, 0); }
	public KW_AS(): TerminalNode { return this.getToken(HiveSqlParser.KW_AS, 0); }
	public selectStatementWithCTE(): SelectStatementWithCTEContext {
		return this.getRuleContext(0, SelectStatementWithCTEContext);
	}
	public viewNameCreate(): ViewNameCreateContext {
		return this.getRuleContext(0, ViewNameCreateContext);
	}
	public orReplace(): OrReplaceContext | undefined {
		return this.tryGetRuleContext(0, OrReplaceContext);
	}
	public ifNotExists(): IfNotExistsContext | undefined {
		return this.tryGetRuleContext(0, IfNotExistsContext);
	}
	public LPAREN(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.LPAREN, 0); }
	public columnNameCommentList(): ColumnNameCommentListContext | undefined {
		return this.tryGetRuleContext(0, ColumnNameCommentListContext);
	}
	public RPAREN(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.RPAREN, 0); }
	public tableComment(): TableCommentContext | undefined {
		return this.tryGetRuleContext(0, TableCommentContext);
	}
	public viewPartition(): ViewPartitionContext | undefined {
		return this.tryGetRuleContext(0, ViewPartitionContext);
	}
	public tablePropertiesPrefixed(): TablePropertiesPrefixedContext | undefined {
		return this.tryGetRuleContext(0, TablePropertiesPrefixedContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_createViewStatement; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterCreateViewStatement) {
			listener.enterCreateViewStatement(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitCreateViewStatement) {
			listener.exitCreateViewStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitCreateViewStatement) {
			return visitor.visitCreateViewStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ViewPartitionContext extends ParserRuleContext {
	public _spec!: PartitionTransformSpecContext;
	public KW_PARTITIONED(): TerminalNode { return this.getToken(HiveSqlParser.KW_PARTITIONED, 0); }
	public KW_ON(): TerminalNode { return this.getToken(HiveSqlParser.KW_ON, 0); }
	public RPAREN(): TerminalNode { return this.getToken(HiveSqlParser.RPAREN, 0); }
	public LPAREN(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.LPAREN, 0); }
	public columnNameList(): ColumnNameListContext | undefined {
		return this.tryGetRuleContext(0, ColumnNameListContext);
	}
	public KW_SPEC(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_SPEC, 0); }
	public partitionTransformSpec(): PartitionTransformSpecContext | undefined {
		return this.tryGetRuleContext(0, PartitionTransformSpecContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_viewPartition; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterViewPartition) {
			listener.enterViewPartition(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitViewPartition) {
			listener.exitViewPartition(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitViewPartition) {
			return visitor.visitViewPartition(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ViewOrganizationContext extends ParserRuleContext {
	public viewClusterSpec(): ViewClusterSpecContext | undefined {
		return this.tryGetRuleContext(0, ViewClusterSpecContext);
	}
	public viewComplexSpec(): ViewComplexSpecContext | undefined {
		return this.tryGetRuleContext(0, ViewComplexSpecContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_viewOrganization; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterViewOrganization) {
			listener.enterViewOrganization(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitViewOrganization) {
			listener.exitViewOrganization(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitViewOrganization) {
			return visitor.visitViewOrganization(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ViewClusterSpecContext extends ParserRuleContext {
	public KW_CLUSTERED(): TerminalNode { return this.getToken(HiveSqlParser.KW_CLUSTERED, 0); }
	public KW_ON(): TerminalNode { return this.getToken(HiveSqlParser.KW_ON, 0); }
	public LPAREN(): TerminalNode { return this.getToken(HiveSqlParser.LPAREN, 0); }
	public columnNameList(): ColumnNameListContext {
		return this.getRuleContext(0, ColumnNameListContext);
	}
	public RPAREN(): TerminalNode { return this.getToken(HiveSqlParser.RPAREN, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_viewClusterSpec; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterViewClusterSpec) {
			listener.enterViewClusterSpec(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitViewClusterSpec) {
			listener.exitViewClusterSpec(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitViewClusterSpec) {
			return visitor.visitViewClusterSpec(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ViewComplexSpecContext extends ParserRuleContext {
	public viewDistSpec(): ViewDistSpecContext {
		return this.getRuleContext(0, ViewDistSpecContext);
	}
	public viewSortSpec(): ViewSortSpecContext {
		return this.getRuleContext(0, ViewSortSpecContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_viewComplexSpec; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterViewComplexSpec) {
			listener.enterViewComplexSpec(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitViewComplexSpec) {
			listener.exitViewComplexSpec(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitViewComplexSpec) {
			return visitor.visitViewComplexSpec(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ViewDistSpecContext extends ParserRuleContext {
	public _colList!: ColumnNameListContext;
	public KW_DISTRIBUTED(): TerminalNode { return this.getToken(HiveSqlParser.KW_DISTRIBUTED, 0); }
	public KW_ON(): TerminalNode { return this.getToken(HiveSqlParser.KW_ON, 0); }
	public LPAREN(): TerminalNode { return this.getToken(HiveSqlParser.LPAREN, 0); }
	public RPAREN(): TerminalNode { return this.getToken(HiveSqlParser.RPAREN, 0); }
	public columnNameList(): ColumnNameListContext {
		return this.getRuleContext(0, ColumnNameListContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_viewDistSpec; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterViewDistSpec) {
			listener.enterViewDistSpec(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitViewDistSpec) {
			listener.exitViewDistSpec(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitViewDistSpec) {
			return visitor.visitViewDistSpec(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ViewSortSpecContext extends ParserRuleContext {
	public _colList!: ColumnNameListContext;
	public KW_SORTED(): TerminalNode { return this.getToken(HiveSqlParser.KW_SORTED, 0); }
	public KW_ON(): TerminalNode { return this.getToken(HiveSqlParser.KW_ON, 0); }
	public LPAREN(): TerminalNode { return this.getToken(HiveSqlParser.LPAREN, 0); }
	public RPAREN(): TerminalNode { return this.getToken(HiveSqlParser.RPAREN, 0); }
	public columnNameList(): ColumnNameListContext {
		return this.getRuleContext(0, ColumnNameListContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_viewSortSpec; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterViewSortSpec) {
			listener.enterViewSortSpec(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitViewSortSpec) {
			listener.exitViewSortSpec(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitViewSortSpec) {
			return visitor.visitViewSortSpec(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class DropViewStatementContext extends ParserRuleContext {
	public KW_DROP(): TerminalNode { return this.getToken(HiveSqlParser.KW_DROP, 0); }
	public KW_VIEW(): TerminalNode { return this.getToken(HiveSqlParser.KW_VIEW, 0); }
	public viewName(): ViewNameContext {
		return this.getRuleContext(0, ViewNameContext);
	}
	public ifExists(): IfExistsContext | undefined {
		return this.tryGetRuleContext(0, IfExistsContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_dropViewStatement; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterDropViewStatement) {
			listener.enterDropViewStatement(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitDropViewStatement) {
			listener.exitDropViewStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitDropViewStatement) {
			return visitor.visitDropViewStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class CreateMaterializedViewStatementContext extends ParserRuleContext {
	public _name!: ViewNameCreateContext;
	public KW_CREATE(): TerminalNode { return this.getToken(HiveSqlParser.KW_CREATE, 0); }
	public KW_MATERIALIZED(): TerminalNode { return this.getToken(HiveSqlParser.KW_MATERIALIZED, 0); }
	public KW_VIEW(): TerminalNode { return this.getToken(HiveSqlParser.KW_VIEW, 0); }
	public KW_AS(): TerminalNode { return this.getToken(HiveSqlParser.KW_AS, 0); }
	public selectStatementWithCTE(): SelectStatementWithCTEContext {
		return this.getRuleContext(0, SelectStatementWithCTEContext);
	}
	public viewNameCreate(): ViewNameCreateContext {
		return this.getRuleContext(0, ViewNameCreateContext);
	}
	public ifNotExists(): IfNotExistsContext | undefined {
		return this.tryGetRuleContext(0, IfNotExistsContext);
	}
	public rewriteDisabled(): RewriteDisabledContext | undefined {
		return this.tryGetRuleContext(0, RewriteDisabledContext);
	}
	public tableComment(): TableCommentContext | undefined {
		return this.tryGetRuleContext(0, TableCommentContext);
	}
	public viewPartition(): ViewPartitionContext | undefined {
		return this.tryGetRuleContext(0, ViewPartitionContext);
	}
	public viewOrganization(): ViewOrganizationContext | undefined {
		return this.tryGetRuleContext(0, ViewOrganizationContext);
	}
	public tableRowFormat(): TableRowFormatContext | undefined {
		return this.tryGetRuleContext(0, TableRowFormatContext);
	}
	public tableFileFormat(): TableFileFormatContext | undefined {
		return this.tryGetRuleContext(0, TableFileFormatContext);
	}
	public tableLocation(): TableLocationContext | undefined {
		return this.tryGetRuleContext(0, TableLocationContext);
	}
	public tablePropertiesPrefixed(): TablePropertiesPrefixedContext | undefined {
		return this.tryGetRuleContext(0, TablePropertiesPrefixedContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_createMaterializedViewStatement; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterCreateMaterializedViewStatement) {
			listener.enterCreateMaterializedViewStatement(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitCreateMaterializedViewStatement) {
			listener.exitCreateMaterializedViewStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitCreateMaterializedViewStatement) {
			return visitor.visitCreateMaterializedViewStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class DropMaterializedViewStatementContext extends ParserRuleContext {
	public KW_DROP(): TerminalNode { return this.getToken(HiveSqlParser.KW_DROP, 0); }
	public KW_MATERIALIZED(): TerminalNode { return this.getToken(HiveSqlParser.KW_MATERIALIZED, 0); }
	public KW_VIEW(): TerminalNode { return this.getToken(HiveSqlParser.KW_VIEW, 0); }
	public viewName(): ViewNameContext {
		return this.getRuleContext(0, ViewNameContext);
	}
	public ifExists(): IfExistsContext | undefined {
		return this.tryGetRuleContext(0, IfExistsContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_dropMaterializedViewStatement; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterDropMaterializedViewStatement) {
			listener.enterDropMaterializedViewStatement(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitDropMaterializedViewStatement) {
			listener.exitDropMaterializedViewStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitDropMaterializedViewStatement) {
			return visitor.visitDropMaterializedViewStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class CreateScheduledQueryStatementContext extends ParserRuleContext {
	public _name!: Id_Context;
	public KW_CREATE(): TerminalNode { return this.getToken(HiveSqlParser.KW_CREATE, 0); }
	public KW_SCHEDULED(): TerminalNode { return this.getToken(HiveSqlParser.KW_SCHEDULED, 0); }
	public KW_QUERY(): TerminalNode { return this.getToken(HiveSqlParser.KW_QUERY, 0); }
	public scheduleSpec(): ScheduleSpecContext {
		return this.getRuleContext(0, ScheduleSpecContext);
	}
	public definedAsSpec(): DefinedAsSpecContext {
		return this.getRuleContext(0, DefinedAsSpecContext);
	}
	public id_(): Id_Context {
		return this.getRuleContext(0, Id_Context);
	}
	public executedAsSpec(): ExecutedAsSpecContext | undefined {
		return this.tryGetRuleContext(0, ExecutedAsSpecContext);
	}
	public enableSpecification(): EnableSpecificationContext | undefined {
		return this.tryGetRuleContext(0, EnableSpecificationContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_createScheduledQueryStatement; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterCreateScheduledQueryStatement) {
			listener.enterCreateScheduledQueryStatement(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitCreateScheduledQueryStatement) {
			listener.exitCreateScheduledQueryStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitCreateScheduledQueryStatement) {
			return visitor.visitCreateScheduledQueryStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class DropScheduledQueryStatementContext extends ParserRuleContext {
	public _name!: Id_Context;
	public KW_DROP(): TerminalNode { return this.getToken(HiveSqlParser.KW_DROP, 0); }
	public KW_SCHEDULED(): TerminalNode { return this.getToken(HiveSqlParser.KW_SCHEDULED, 0); }
	public KW_QUERY(): TerminalNode { return this.getToken(HiveSqlParser.KW_QUERY, 0); }
	public id_(): Id_Context {
		return this.getRuleContext(0, Id_Context);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_dropScheduledQueryStatement; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterDropScheduledQueryStatement) {
			listener.enterDropScheduledQueryStatement(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitDropScheduledQueryStatement) {
			listener.exitDropScheduledQueryStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitDropScheduledQueryStatement) {
			return visitor.visitDropScheduledQueryStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class AlterScheduledQueryStatementContext extends ParserRuleContext {
	public _name!: Id_Context;
	public _mod!: AlterScheduledQueryChangeContext;
	public KW_ALTER(): TerminalNode { return this.getToken(HiveSqlParser.KW_ALTER, 0); }
	public KW_SCHEDULED(): TerminalNode { return this.getToken(HiveSqlParser.KW_SCHEDULED, 0); }
	public KW_QUERY(): TerminalNode { return this.getToken(HiveSqlParser.KW_QUERY, 0); }
	public id_(): Id_Context {
		return this.getRuleContext(0, Id_Context);
	}
	public alterScheduledQueryChange(): AlterScheduledQueryChangeContext {
		return this.getRuleContext(0, AlterScheduledQueryChangeContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_alterScheduledQueryStatement; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterAlterScheduledQueryStatement) {
			listener.enterAlterScheduledQueryStatement(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitAlterScheduledQueryStatement) {
			listener.exitAlterScheduledQueryStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitAlterScheduledQueryStatement) {
			return visitor.visitAlterScheduledQueryStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class AlterScheduledQueryChangeContext extends ParserRuleContext {
	public scheduleSpec(): ScheduleSpecContext | undefined {
		return this.tryGetRuleContext(0, ScheduleSpecContext);
	}
	public executedAsSpec(): ExecutedAsSpecContext | undefined {
		return this.tryGetRuleContext(0, ExecutedAsSpecContext);
	}
	public enableSpecification(): EnableSpecificationContext | undefined {
		return this.tryGetRuleContext(0, EnableSpecificationContext);
	}
	public definedAsSpec(): DefinedAsSpecContext | undefined {
		return this.tryGetRuleContext(0, DefinedAsSpecContext);
	}
	public KW_EXECUTE(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_EXECUTE, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_alterScheduledQueryChange; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterAlterScheduledQueryChange) {
			listener.enterAlterScheduledQueryChange(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitAlterScheduledQueryChange) {
			listener.exitAlterScheduledQueryChange(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitAlterScheduledQueryChange) {
			return visitor.visitAlterScheduledQueryChange(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ScheduleSpecContext extends ParserRuleContext {
	public _cronString!: Token;
	public _value!: Token;
	public _qualifier!: IntervalQualifiersContext;
	public _offsetTs!: Token;
	public KW_CRON(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_CRON, 0); }
	public StringLiteral(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.StringLiteral, 0); }
	public KW_EVERY(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_EVERY, 0); }
	public intervalQualifiers(): IntervalQualifiersContext | undefined {
		return this.tryGetRuleContext(0, IntervalQualifiersContext);
	}
	public Number(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.Number, 0); }
	public KW_AT(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_AT, 0); }
	public KW_OFFSET(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_OFFSET, 0); }
	public KW_BY(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_BY, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_scheduleSpec; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterScheduleSpec) {
			listener.enterScheduleSpec(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitScheduleSpec) {
			listener.exitScheduleSpec(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitScheduleSpec) {
			return visitor.visitScheduleSpec(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ExecutedAsSpecContext extends ParserRuleContext {
	public _executedAs!: Token;
	public KW_EXECUTED(): TerminalNode { return this.getToken(HiveSqlParser.KW_EXECUTED, 0); }
	public KW_AS(): TerminalNode { return this.getToken(HiveSqlParser.KW_AS, 0); }
	public StringLiteral(): TerminalNode { return this.getToken(HiveSqlParser.StringLiteral, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_executedAsSpec; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterExecutedAsSpec) {
			listener.enterExecutedAsSpec(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitExecutedAsSpec) {
			listener.exitExecutedAsSpec(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitExecutedAsSpec) {
			return visitor.visitExecutedAsSpec(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class DefinedAsSpecContext extends ParserRuleContext {
	public KW_AS(): TerminalNode { return this.getToken(HiveSqlParser.KW_AS, 0); }
	public statement(): StatementContext {
		return this.getRuleContext(0, StatementContext);
	}
	public KW_DEFINED(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_DEFINED, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_definedAsSpec; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterDefinedAsSpec) {
			listener.enterDefinedAsSpec(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitDefinedAsSpec) {
			listener.exitDefinedAsSpec(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitDefinedAsSpec) {
			return visitor.visitDefinedAsSpec(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ShowStmtIdentifierContext extends ParserRuleContext {
	public id_(): Id_Context | undefined {
		return this.tryGetRuleContext(0, Id_Context);
	}
	public StringLiteral(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.StringLiteral, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_showStmtIdentifier; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterShowStmtIdentifier) {
			listener.enterShowStmtIdentifier(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitShowStmtIdentifier) {
			listener.exitShowStmtIdentifier(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitShowStmtIdentifier) {
			return visitor.visitShowStmtIdentifier(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class TableCommentContext extends ParserRuleContext {
	public _comment!: Token;
	public KW_COMMENT(): TerminalNode { return this.getToken(HiveSqlParser.KW_COMMENT, 0); }
	public StringLiteral(): TerminalNode { return this.getToken(HiveSqlParser.StringLiteral, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_tableComment; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterTableComment) {
			listener.enterTableComment(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitTableComment) {
			listener.exitTableComment(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitTableComment) {
			return visitor.visitTableComment(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class CreateTablePartitionSpecContext extends ParserRuleContext {
	public _opt1!: CreateTablePartitionColumnTypeSpecContext;
	public _opt2!: CreateTablePartitionColumnSpecContext;
	public _spec!: PartitionTransformSpecContext;
	public KW_PARTITIONED(): TerminalNode { return this.getToken(HiveSqlParser.KW_PARTITIONED, 0); }
	public KW_BY(): TerminalNode { return this.getToken(HiveSqlParser.KW_BY, 0); }
	public RPAREN(): TerminalNode { return this.getToken(HiveSqlParser.RPAREN, 0); }
	public LPAREN(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.LPAREN, 0); }
	public KW_SPEC(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_SPEC, 0); }
	public partitionTransformSpec(): PartitionTransformSpecContext | undefined {
		return this.tryGetRuleContext(0, PartitionTransformSpecContext);
	}
	public createTablePartitionColumnTypeSpec(): CreateTablePartitionColumnTypeSpecContext | undefined {
		return this.tryGetRuleContext(0, CreateTablePartitionColumnTypeSpecContext);
	}
	public createTablePartitionColumnSpec(): CreateTablePartitionColumnSpecContext | undefined {
		return this.tryGetRuleContext(0, CreateTablePartitionColumnSpecContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_createTablePartitionSpec; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterCreateTablePartitionSpec) {
			listener.enterCreateTablePartitionSpec(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitCreateTablePartitionSpec) {
			listener.exitCreateTablePartitionSpec(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitCreateTablePartitionSpec) {
			return visitor.visitCreateTablePartitionSpec(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class CreateTablePartitionColumnTypeSpecContext extends ParserRuleContext {
	public columnNameTypeConstraint(): ColumnNameTypeConstraintContext[];
	public columnNameTypeConstraint(i: number): ColumnNameTypeConstraintContext;
	public columnNameTypeConstraint(i?: number): ColumnNameTypeConstraintContext | ColumnNameTypeConstraintContext[] {
		if (i === undefined) {
			return this.getRuleContexts(ColumnNameTypeConstraintContext);
		} else {
			return this.getRuleContext(i, ColumnNameTypeConstraintContext);
		}
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(HiveSqlParser.COMMA);
		} else {
			return this.getToken(HiveSqlParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_createTablePartitionColumnTypeSpec; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterCreateTablePartitionColumnTypeSpec) {
			listener.enterCreateTablePartitionColumnTypeSpec(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitCreateTablePartitionColumnTypeSpec) {
			listener.exitCreateTablePartitionColumnTypeSpec(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitCreateTablePartitionColumnTypeSpec) {
			return visitor.visitCreateTablePartitionColumnTypeSpec(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class CreateTablePartitionColumnSpecContext extends ParserRuleContext {
	public columnName(): ColumnNameContext[];
	public columnName(i: number): ColumnNameContext;
	public columnName(i?: number): ColumnNameContext | ColumnNameContext[] {
		if (i === undefined) {
			return this.getRuleContexts(ColumnNameContext);
		} else {
			return this.getRuleContext(i, ColumnNameContext);
		}
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(HiveSqlParser.COMMA);
		} else {
			return this.getToken(HiveSqlParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_createTablePartitionColumnSpec; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterCreateTablePartitionColumnSpec) {
			listener.enterCreateTablePartitionColumnSpec(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitCreateTablePartitionColumnSpec) {
			listener.exitCreateTablePartitionColumnSpec(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitCreateTablePartitionColumnSpec) {
			return visitor.visitCreateTablePartitionColumnSpec(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class PartitionTransformSpecContext extends ParserRuleContext {
	public columnNameTransformConstraint(): ColumnNameTransformConstraintContext[];
	public columnNameTransformConstraint(i: number): ColumnNameTransformConstraintContext;
	public columnNameTransformConstraint(i?: number): ColumnNameTransformConstraintContext | ColumnNameTransformConstraintContext[] {
		if (i === undefined) {
			return this.getRuleContexts(ColumnNameTransformConstraintContext);
		} else {
			return this.getRuleContext(i, ColumnNameTransformConstraintContext);
		}
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(HiveSqlParser.COMMA);
		} else {
			return this.getToken(HiveSqlParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_partitionTransformSpec; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterPartitionTransformSpec) {
			listener.enterPartitionTransformSpec(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitPartitionTransformSpec) {
			listener.exitPartitionTransformSpec(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitPartitionTransformSpec) {
			return visitor.visitPartitionTransformSpec(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ColumnNameTransformConstraintContext extends ParserRuleContext {
	public partitionTransformType(): PartitionTransformTypeContext {
		return this.getRuleContext(0, PartitionTransformTypeContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_columnNameTransformConstraint; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterColumnNameTransformConstraint) {
			listener.enterColumnNameTransformConstraint(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitColumnNameTransformConstraint) {
			listener.exitColumnNameTransformConstraint(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitColumnNameTransformConstraint) {
			return visitor.visitColumnNameTransformConstraint(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class PartitionTransformTypeContext extends ParserRuleContext {
	public _value!: Token;
	public columnName(): ColumnNameContext {
		return this.getRuleContext(0, ColumnNameContext);
	}
	public LPAREN(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.LPAREN, 0); }
	public RPAREN(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.RPAREN, 0); }
	public year(): YearContext | undefined {
		return this.tryGetRuleContext(0, YearContext);
	}
	public month(): MonthContext | undefined {
		return this.tryGetRuleContext(0, MonthContext);
	}
	public day(): DayContext | undefined {
		return this.tryGetRuleContext(0, DayContext);
	}
	public hour(): HourContext | undefined {
		return this.tryGetRuleContext(0, HourContext);
	}
	public COMMA(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.COMMA, 0); }
	public KW_TRUNCATE(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_TRUNCATE, 0); }
	public KW_BUCKET(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_BUCKET, 0); }
	public Number(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.Number, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_partitionTransformType; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterPartitionTransformType) {
			listener.enterPartitionTransformType(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitPartitionTransformType) {
			listener.exitPartitionTransformType(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitPartitionTransformType) {
			return visitor.visitPartitionTransformType(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class TableBucketsContext extends ParserRuleContext {
	public _bucketCols!: ColumnNameListContext;
	public _sortCols!: ColumnNameOrderListContext;
	public _num!: Token;
	public KW_CLUSTERED(): TerminalNode { return this.getToken(HiveSqlParser.KW_CLUSTERED, 0); }
	public KW_BY(): TerminalNode[];
	public KW_BY(i: number): TerminalNode;
	public KW_BY(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(HiveSqlParser.KW_BY);
		} else {
			return this.getToken(HiveSqlParser.KW_BY, i);
		}
	}
	public LPAREN(): TerminalNode[];
	public LPAREN(i: number): TerminalNode;
	public LPAREN(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(HiveSqlParser.LPAREN);
		} else {
			return this.getToken(HiveSqlParser.LPAREN, i);
		}
	}
	public RPAREN(): TerminalNode[];
	public RPAREN(i: number): TerminalNode;
	public RPAREN(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(HiveSqlParser.RPAREN);
		} else {
			return this.getToken(HiveSqlParser.RPAREN, i);
		}
	}
	public KW_INTO(): TerminalNode { return this.getToken(HiveSqlParser.KW_INTO, 0); }
	public KW_BUCKETS(): TerminalNode { return this.getToken(HiveSqlParser.KW_BUCKETS, 0); }
	public columnNameList(): ColumnNameListContext {
		return this.getRuleContext(0, ColumnNameListContext);
	}
	public Number(): TerminalNode { return this.getToken(HiveSqlParser.Number, 0); }
	public KW_SORTED(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_SORTED, 0); }
	public columnNameOrderList(): ColumnNameOrderListContext | undefined {
		return this.tryGetRuleContext(0, ColumnNameOrderListContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_tableBuckets; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterTableBuckets) {
			listener.enterTableBuckets(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitTableBuckets) {
			listener.exitTableBuckets(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitTableBuckets) {
			return visitor.visitTableBuckets(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class TableImplBucketsContext extends ParserRuleContext {
	public _num!: Token;
	public KW_CLUSTERED(): TerminalNode { return this.getToken(HiveSqlParser.KW_CLUSTERED, 0); }
	public KW_INTO(): TerminalNode { return this.getToken(HiveSqlParser.KW_INTO, 0); }
	public KW_BUCKETS(): TerminalNode { return this.getToken(HiveSqlParser.KW_BUCKETS, 0); }
	public Number(): TerminalNode { return this.getToken(HiveSqlParser.Number, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_tableImplBuckets; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterTableImplBuckets) {
			listener.enterTableImplBuckets(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitTableImplBuckets) {
			listener.exitTableImplBuckets(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitTableImplBuckets) {
			return visitor.visitTableImplBuckets(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class TableSkewedContext extends ParserRuleContext {
	public _skewedCols!: ColumnNameListContext;
	public _skewedValues!: SkewedValueElementContext;
	public KW_SKEWED(): TerminalNode { return this.getToken(HiveSqlParser.KW_SKEWED, 0); }
	public KW_BY(): TerminalNode { return this.getToken(HiveSqlParser.KW_BY, 0); }
	public LPAREN(): TerminalNode[];
	public LPAREN(i: number): TerminalNode;
	public LPAREN(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(HiveSqlParser.LPAREN);
		} else {
			return this.getToken(HiveSqlParser.LPAREN, i);
		}
	}
	public RPAREN(): TerminalNode[];
	public RPAREN(i: number): TerminalNode;
	public RPAREN(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(HiveSqlParser.RPAREN);
		} else {
			return this.getToken(HiveSqlParser.RPAREN, i);
		}
	}
	public KW_ON(): TerminalNode { return this.getToken(HiveSqlParser.KW_ON, 0); }
	public columnNameList(): ColumnNameListContext {
		return this.getRuleContext(0, ColumnNameListContext);
	}
	public skewedValueElement(): SkewedValueElementContext {
		return this.getRuleContext(0, SkewedValueElementContext);
	}
	public storedAsDirs(): StoredAsDirsContext | undefined {
		return this.tryGetRuleContext(0, StoredAsDirsContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_tableSkewed; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterTableSkewed) {
			listener.enterTableSkewed(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitTableSkewed) {
			listener.exitTableSkewed(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitTableSkewed) {
			return visitor.visitTableSkewed(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class RowFormatContext extends ParserRuleContext {
	public rowFormatSerde(): RowFormatSerdeContext | undefined {
		return this.tryGetRuleContext(0, RowFormatSerdeContext);
	}
	public rowFormatDelimited(): RowFormatDelimitedContext | undefined {
		return this.tryGetRuleContext(0, RowFormatDelimitedContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_rowFormat; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterRowFormat) {
			listener.enterRowFormat(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitRowFormat) {
			listener.exitRowFormat(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitRowFormat) {
			return visitor.visitRowFormat(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class RecordReaderContext extends ParserRuleContext {
	public KW_RECORDREADER(): TerminalNode { return this.getToken(HiveSqlParser.KW_RECORDREADER, 0); }
	public StringLiteral(): TerminalNode { return this.getToken(HiveSqlParser.StringLiteral, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_recordReader; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterRecordReader) {
			listener.enterRecordReader(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitRecordReader) {
			listener.exitRecordReader(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitRecordReader) {
			return visitor.visitRecordReader(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class RecordWriterContext extends ParserRuleContext {
	public KW_RECORDWRITER(): TerminalNode { return this.getToken(HiveSqlParser.KW_RECORDWRITER, 0); }
	public StringLiteral(): TerminalNode { return this.getToken(HiveSqlParser.StringLiteral, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_recordWriter; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterRecordWriter) {
			listener.enterRecordWriter(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitRecordWriter) {
			listener.exitRecordWriter(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitRecordWriter) {
			return visitor.visitRecordWriter(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class RowFormatSerdeContext extends ParserRuleContext {
	public _name!: Token;
	public _serdeprops!: TablePropertiesContext;
	public KW_ROW(): TerminalNode { return this.getToken(HiveSqlParser.KW_ROW, 0); }
	public KW_FORMAT(): TerminalNode { return this.getToken(HiveSqlParser.KW_FORMAT, 0); }
	public KW_SERDE(): TerminalNode { return this.getToken(HiveSqlParser.KW_SERDE, 0); }
	public StringLiteral(): TerminalNode { return this.getToken(HiveSqlParser.StringLiteral, 0); }
	public KW_WITH(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_WITH, 0); }
	public KW_SERDEPROPERTIES(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_SERDEPROPERTIES, 0); }
	public tableProperties(): TablePropertiesContext | undefined {
		return this.tryGetRuleContext(0, TablePropertiesContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_rowFormatSerde; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterRowFormatSerde) {
			listener.enterRowFormatSerde(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitRowFormatSerde) {
			listener.exitRowFormatSerde(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitRowFormatSerde) {
			return visitor.visitRowFormatSerde(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class RowFormatDelimitedContext extends ParserRuleContext {
	public KW_ROW(): TerminalNode { return this.getToken(HiveSqlParser.KW_ROW, 0); }
	public KW_FORMAT(): TerminalNode { return this.getToken(HiveSqlParser.KW_FORMAT, 0); }
	public KW_DELIMITED(): TerminalNode { return this.getToken(HiveSqlParser.KW_DELIMITED, 0); }
	public tableRowFormatFieldIdentifier(): TableRowFormatFieldIdentifierContext | undefined {
		return this.tryGetRuleContext(0, TableRowFormatFieldIdentifierContext);
	}
	public tableRowFormatCollItemsIdentifier(): TableRowFormatCollItemsIdentifierContext | undefined {
		return this.tryGetRuleContext(0, TableRowFormatCollItemsIdentifierContext);
	}
	public tableRowFormatMapKeysIdentifier(): TableRowFormatMapKeysIdentifierContext | undefined {
		return this.tryGetRuleContext(0, TableRowFormatMapKeysIdentifierContext);
	}
	public tableRowFormatLinesIdentifier(): TableRowFormatLinesIdentifierContext | undefined {
		return this.tryGetRuleContext(0, TableRowFormatLinesIdentifierContext);
	}
	public tableRowNullFormat(): TableRowNullFormatContext | undefined {
		return this.tryGetRuleContext(0, TableRowNullFormatContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_rowFormatDelimited; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterRowFormatDelimited) {
			listener.enterRowFormatDelimited(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitRowFormatDelimited) {
			listener.exitRowFormatDelimited(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitRowFormatDelimited) {
			return visitor.visitRowFormatDelimited(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class TableRowFormatContext extends ParserRuleContext {
	public rowFormatDelimited(): RowFormatDelimitedContext | undefined {
		return this.tryGetRuleContext(0, RowFormatDelimitedContext);
	}
	public rowFormatSerde(): RowFormatSerdeContext | undefined {
		return this.tryGetRuleContext(0, RowFormatSerdeContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_tableRowFormat; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterTableRowFormat) {
			listener.enterTableRowFormat(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitTableRowFormat) {
			listener.exitTableRowFormat(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitTableRowFormat) {
			return visitor.visitTableRowFormat(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class TablePropertiesPrefixedContext extends ParserRuleContext {
	public KW_TBLPROPERTIES(): TerminalNode { return this.getToken(HiveSqlParser.KW_TBLPROPERTIES, 0); }
	public tableProperties(): TablePropertiesContext {
		return this.getRuleContext(0, TablePropertiesContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_tablePropertiesPrefixed; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterTablePropertiesPrefixed) {
			listener.enterTablePropertiesPrefixed(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitTablePropertiesPrefixed) {
			listener.exitTablePropertiesPrefixed(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitTablePropertiesPrefixed) {
			return visitor.visitTablePropertiesPrefixed(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class TablePropertiesContext extends ParserRuleContext {
	public LPAREN(): TerminalNode { return this.getToken(HiveSqlParser.LPAREN, 0); }
	public tablePropertiesList(): TablePropertiesListContext {
		return this.getRuleContext(0, TablePropertiesListContext);
	}
	public RPAREN(): TerminalNode { return this.getToken(HiveSqlParser.RPAREN, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_tableProperties; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterTableProperties) {
			listener.enterTableProperties(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitTableProperties) {
			listener.exitTableProperties(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitTableProperties) {
			return visitor.visitTableProperties(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class TablePropertiesListContext extends ParserRuleContext {
	public keyValueProperty(): KeyValuePropertyContext[];
	public keyValueProperty(i: number): KeyValuePropertyContext;
	public keyValueProperty(i?: number): KeyValuePropertyContext | KeyValuePropertyContext[] {
		if (i === undefined) {
			return this.getRuleContexts(KeyValuePropertyContext);
		} else {
			return this.getRuleContext(i, KeyValuePropertyContext);
		}
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(HiveSqlParser.COMMA);
		} else {
			return this.getToken(HiveSqlParser.COMMA, i);
		}
	}
	public keyProperty(): KeyPropertyContext[];
	public keyProperty(i: number): KeyPropertyContext;
	public keyProperty(i?: number): KeyPropertyContext | KeyPropertyContext[] {
		if (i === undefined) {
			return this.getRuleContexts(KeyPropertyContext);
		} else {
			return this.getRuleContext(i, KeyPropertyContext);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_tablePropertiesList; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterTablePropertiesList) {
			listener.enterTablePropertiesList(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitTablePropertiesList) {
			listener.exitTablePropertiesList(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitTablePropertiesList) {
			return visitor.visitTablePropertiesList(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class KeyValuePropertyContext extends ParserRuleContext {
	public _key!: Token;
	public _value!: Token;
	public EQUAL(): TerminalNode { return this.getToken(HiveSqlParser.EQUAL, 0); }
	public StringLiteral(): TerminalNode[];
	public StringLiteral(i: number): TerminalNode;
	public StringLiteral(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(HiveSqlParser.StringLiteral);
		} else {
			return this.getToken(HiveSqlParser.StringLiteral, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_keyValueProperty; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterKeyValueProperty) {
			listener.enterKeyValueProperty(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitKeyValueProperty) {
			listener.exitKeyValueProperty(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitKeyValueProperty) {
			return visitor.visitKeyValueProperty(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class KeyPropertyContext extends ParserRuleContext {
	public _key!: Token;
	public StringLiteral(): TerminalNode { return this.getToken(HiveSqlParser.StringLiteral, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_keyProperty; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterKeyProperty) {
			listener.enterKeyProperty(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitKeyProperty) {
			listener.exitKeyProperty(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitKeyProperty) {
			return visitor.visitKeyProperty(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class TableRowFormatFieldIdentifierContext extends ParserRuleContext {
	public _fldIdnt!: Token;
	public _fldEscape!: Token;
	public KW_FIELDS(): TerminalNode { return this.getToken(HiveSqlParser.KW_FIELDS, 0); }
	public KW_TERMINATED(): TerminalNode { return this.getToken(HiveSqlParser.KW_TERMINATED, 0); }
	public KW_BY(): TerminalNode[];
	public KW_BY(i: number): TerminalNode;
	public KW_BY(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(HiveSqlParser.KW_BY);
		} else {
			return this.getToken(HiveSqlParser.KW_BY, i);
		}
	}
	public StringLiteral(): TerminalNode[];
	public StringLiteral(i: number): TerminalNode;
	public StringLiteral(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(HiveSqlParser.StringLiteral);
		} else {
			return this.getToken(HiveSqlParser.StringLiteral, i);
		}
	}
	public KW_ESCAPED(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_ESCAPED, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_tableRowFormatFieldIdentifier; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterTableRowFormatFieldIdentifier) {
			listener.enterTableRowFormatFieldIdentifier(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitTableRowFormatFieldIdentifier) {
			listener.exitTableRowFormatFieldIdentifier(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitTableRowFormatFieldIdentifier) {
			return visitor.visitTableRowFormatFieldIdentifier(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class TableRowFormatCollItemsIdentifierContext extends ParserRuleContext {
	public _collIdnt!: Token;
	public KW_COLLECTION(): TerminalNode { return this.getToken(HiveSqlParser.KW_COLLECTION, 0); }
	public KW_ITEMS(): TerminalNode { return this.getToken(HiveSqlParser.KW_ITEMS, 0); }
	public KW_TERMINATED(): TerminalNode { return this.getToken(HiveSqlParser.KW_TERMINATED, 0); }
	public KW_BY(): TerminalNode { return this.getToken(HiveSqlParser.KW_BY, 0); }
	public StringLiteral(): TerminalNode { return this.getToken(HiveSqlParser.StringLiteral, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_tableRowFormatCollItemsIdentifier; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterTableRowFormatCollItemsIdentifier) {
			listener.enterTableRowFormatCollItemsIdentifier(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitTableRowFormatCollItemsIdentifier) {
			listener.exitTableRowFormatCollItemsIdentifier(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitTableRowFormatCollItemsIdentifier) {
			return visitor.visitTableRowFormatCollItemsIdentifier(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class TableRowFormatMapKeysIdentifierContext extends ParserRuleContext {
	public _mapKeysIdnt!: Token;
	public KW_MAP(): TerminalNode { return this.getToken(HiveSqlParser.KW_MAP, 0); }
	public KW_KEYS(): TerminalNode { return this.getToken(HiveSqlParser.KW_KEYS, 0); }
	public KW_TERMINATED(): TerminalNode { return this.getToken(HiveSqlParser.KW_TERMINATED, 0); }
	public KW_BY(): TerminalNode { return this.getToken(HiveSqlParser.KW_BY, 0); }
	public StringLiteral(): TerminalNode { return this.getToken(HiveSqlParser.StringLiteral, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_tableRowFormatMapKeysIdentifier; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterTableRowFormatMapKeysIdentifier) {
			listener.enterTableRowFormatMapKeysIdentifier(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitTableRowFormatMapKeysIdentifier) {
			listener.exitTableRowFormatMapKeysIdentifier(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitTableRowFormatMapKeysIdentifier) {
			return visitor.visitTableRowFormatMapKeysIdentifier(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class TableRowFormatLinesIdentifierContext extends ParserRuleContext {
	public _linesIdnt!: Token;
	public KW_LINES(): TerminalNode { return this.getToken(HiveSqlParser.KW_LINES, 0); }
	public KW_TERMINATED(): TerminalNode { return this.getToken(HiveSqlParser.KW_TERMINATED, 0); }
	public KW_BY(): TerminalNode { return this.getToken(HiveSqlParser.KW_BY, 0); }
	public StringLiteral(): TerminalNode { return this.getToken(HiveSqlParser.StringLiteral, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_tableRowFormatLinesIdentifier; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterTableRowFormatLinesIdentifier) {
			listener.enterTableRowFormatLinesIdentifier(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitTableRowFormatLinesIdentifier) {
			listener.exitTableRowFormatLinesIdentifier(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitTableRowFormatLinesIdentifier) {
			return visitor.visitTableRowFormatLinesIdentifier(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class TableRowNullFormatContext extends ParserRuleContext {
	public _nullIdnt!: Token;
	public KW_NULL(): TerminalNode { return this.getToken(HiveSqlParser.KW_NULL, 0); }
	public KW_DEFINED(): TerminalNode { return this.getToken(HiveSqlParser.KW_DEFINED, 0); }
	public KW_AS(): TerminalNode { return this.getToken(HiveSqlParser.KW_AS, 0); }
	public StringLiteral(): TerminalNode { return this.getToken(HiveSqlParser.StringLiteral, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_tableRowNullFormat; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterTableRowNullFormat) {
			listener.enterTableRowNullFormat(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitTableRowNullFormat) {
			listener.exitTableRowNullFormat(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitTableRowNullFormat) {
			return visitor.visitTableRowNullFormat(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class TableFileFormatContext extends ParserRuleContext {
	public _inFmt!: Token;
	public _outFmt!: Token;
	public _inDriver!: Token;
	public _outDriver!: Token;
	public _storageHandler!: Token;
	public _serdeprops!: TablePropertiesContext;
	public _fileformat!: Id_Context;
	public _genericSpec!: Id_Context;
	public KW_STORED(): TerminalNode[];
	public KW_STORED(i: number): TerminalNode;
	public KW_STORED(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(HiveSqlParser.KW_STORED);
		} else {
			return this.getToken(HiveSqlParser.KW_STORED, i);
		}
	}
	public KW_AS(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_AS, 0); }
	public KW_INPUTFORMAT(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_INPUTFORMAT, 0); }
	public KW_OUTPUTFORMAT(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_OUTPUTFORMAT, 0); }
	public StringLiteral(): TerminalNode[];
	public StringLiteral(i: number): TerminalNode;
	public StringLiteral(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(HiveSqlParser.StringLiteral);
		} else {
			return this.getToken(HiveSqlParser.StringLiteral, i);
		}
	}
	public KW_INPUTDRIVER(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_INPUTDRIVER, 0); }
	public KW_OUTPUTDRIVER(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_OUTPUTDRIVER, 0); }
	public KW_BY(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_BY, 0); }
	public KW_WITH(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_WITH, 0); }
	public KW_SERDEPROPERTIES(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_SERDEPROPERTIES, 0); }
	public tableProperties(): TablePropertiesContext | undefined {
		return this.tryGetRuleContext(0, TablePropertiesContext);
	}
	public id_(): Id_Context[];
	public id_(i: number): Id_Context;
	public id_(i?: number): Id_Context | Id_Context[] {
		if (i === undefined) {
			return this.getRuleContexts(Id_Context);
		} else {
			return this.getRuleContext(i, Id_Context);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_tableFileFormat; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterTableFileFormat) {
			listener.enterTableFileFormat(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitTableFileFormat) {
			listener.exitTableFileFormat(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitTableFileFormat) {
			return visitor.visitTableFileFormat(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class TableLocationContext extends ParserRuleContext {
	public _locn!: Token;
	public KW_LOCATION(): TerminalNode { return this.getToken(HiveSqlParser.KW_LOCATION, 0); }
	public StringLiteral(): TerminalNode { return this.getToken(HiveSqlParser.StringLiteral, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_tableLocation; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterTableLocation) {
			listener.enterTableLocation(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitTableLocation) {
			listener.exitTableLocation(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitTableLocation) {
			return visitor.visitTableLocation(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ColumnNameTypeListContext extends ParserRuleContext {
	public columnNameType(): ColumnNameTypeContext[];
	public columnNameType(i: number): ColumnNameTypeContext;
	public columnNameType(i?: number): ColumnNameTypeContext | ColumnNameTypeContext[] {
		if (i === undefined) {
			return this.getRuleContexts(ColumnNameTypeContext);
		} else {
			return this.getRuleContext(i, ColumnNameTypeContext);
		}
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(HiveSqlParser.COMMA);
		} else {
			return this.getToken(HiveSqlParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_columnNameTypeList; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterColumnNameTypeList) {
			listener.enterColumnNameTypeList(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitColumnNameTypeList) {
			listener.exitColumnNameTypeList(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitColumnNameTypeList) {
			return visitor.visitColumnNameTypeList(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ColumnNameTypeOrConstraintListContext extends ParserRuleContext {
	public columnNameTypeOrConstraint(): ColumnNameTypeOrConstraintContext[];
	public columnNameTypeOrConstraint(i: number): ColumnNameTypeOrConstraintContext;
	public columnNameTypeOrConstraint(i?: number): ColumnNameTypeOrConstraintContext | ColumnNameTypeOrConstraintContext[] {
		if (i === undefined) {
			return this.getRuleContexts(ColumnNameTypeOrConstraintContext);
		} else {
			return this.getRuleContext(i, ColumnNameTypeOrConstraintContext);
		}
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(HiveSqlParser.COMMA);
		} else {
			return this.getToken(HiveSqlParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_columnNameTypeOrConstraintList; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterColumnNameTypeOrConstraintList) {
			listener.enterColumnNameTypeOrConstraintList(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitColumnNameTypeOrConstraintList) {
			listener.exitColumnNameTypeOrConstraintList(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitColumnNameTypeOrConstraintList) {
			return visitor.visitColumnNameTypeOrConstraintList(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ColumnNameColonTypeListContext extends ParserRuleContext {
	public columnNameColonType(): ColumnNameColonTypeContext[];
	public columnNameColonType(i: number): ColumnNameColonTypeContext;
	public columnNameColonType(i?: number): ColumnNameColonTypeContext | ColumnNameColonTypeContext[] {
		if (i === undefined) {
			return this.getRuleContexts(ColumnNameColonTypeContext);
		} else {
			return this.getRuleContext(i, ColumnNameColonTypeContext);
		}
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(HiveSqlParser.COMMA);
		} else {
			return this.getToken(HiveSqlParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_columnNameColonTypeList; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterColumnNameColonTypeList) {
			listener.enterColumnNameColonTypeList(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitColumnNameColonTypeList) {
			listener.exitColumnNameColonTypeList(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitColumnNameColonTypeList) {
			return visitor.visitColumnNameColonTypeList(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ColumnNameListContext extends ParserRuleContext {
	public columnName(): ColumnNameContext[];
	public columnName(i: number): ColumnNameContext;
	public columnName(i?: number): ColumnNameContext | ColumnNameContext[] {
		if (i === undefined) {
			return this.getRuleContexts(ColumnNameContext);
		} else {
			return this.getRuleContext(i, ColumnNameContext);
		}
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(HiveSqlParser.COMMA);
		} else {
			return this.getToken(HiveSqlParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_columnNameList; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterColumnNameList) {
			listener.enterColumnNameList(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitColumnNameList) {
			listener.exitColumnNameList(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitColumnNameList) {
			return visitor.visitColumnNameList(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ColumnNameContext extends ParserRuleContext {
	public id_(): Id_Context[];
	public id_(i: number): Id_Context;
	public id_(i?: number): Id_Context | Id_Context[] {
		if (i === undefined) {
			return this.getRuleContexts(Id_Context);
		} else {
			return this.getRuleContext(i, Id_Context);
		}
	}
	public DOT(): TerminalNode[];
	public DOT(i: number): TerminalNode;
	public DOT(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(HiveSqlParser.DOT);
		} else {
			return this.getToken(HiveSqlParser.DOT, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_columnName; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterColumnName) {
			listener.enterColumnName(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitColumnName) {
			listener.exitColumnName(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitColumnName) {
			return visitor.visitColumnName(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ColumnNameCreateContext extends ParserRuleContext {
	public id_(): Id_Context {
		return this.getRuleContext(0, Id_Context);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_columnNameCreate; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterColumnNameCreate) {
			listener.enterColumnNameCreate(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitColumnNameCreate) {
			listener.exitColumnNameCreate(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitColumnNameCreate) {
			return visitor.visitColumnNameCreate(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ExtColumnNameContext extends ParserRuleContext {
	public columnName(): ColumnNameContext {
		return this.getRuleContext(0, ColumnNameContext);
	}
	public DOT(): TerminalNode[];
	public DOT(i: number): TerminalNode;
	public DOT(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(HiveSqlParser.DOT);
		} else {
			return this.getToken(HiveSqlParser.DOT, i);
		}
	}
	public KW_ELEM_TYPE(): TerminalNode[];
	public KW_ELEM_TYPE(i: number): TerminalNode;
	public KW_ELEM_TYPE(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(HiveSqlParser.KW_ELEM_TYPE);
		} else {
			return this.getToken(HiveSqlParser.KW_ELEM_TYPE, i);
		}
	}
	public KW_KEY_TYPE(): TerminalNode[];
	public KW_KEY_TYPE(i: number): TerminalNode;
	public KW_KEY_TYPE(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(HiveSqlParser.KW_KEY_TYPE);
		} else {
			return this.getToken(HiveSqlParser.KW_KEY_TYPE, i);
		}
	}
	public KW_VALUE_TYPE(): TerminalNode[];
	public KW_VALUE_TYPE(i: number): TerminalNode;
	public KW_VALUE_TYPE(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(HiveSqlParser.KW_VALUE_TYPE);
		} else {
			return this.getToken(HiveSqlParser.KW_VALUE_TYPE, i);
		}
	}
	public id_(): Id_Context[];
	public id_(i: number): Id_Context;
	public id_(i?: number): Id_Context | Id_Context[] {
		if (i === undefined) {
			return this.getRuleContexts(Id_Context);
		} else {
			return this.getRuleContext(i, Id_Context);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_extColumnName; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterExtColumnName) {
			listener.enterExtColumnName(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitExtColumnName) {
			listener.exitExtColumnName(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitExtColumnName) {
			return visitor.visitExtColumnName(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ColumnNameOrderListContext extends ParserRuleContext {
	public columnNameOrder(): ColumnNameOrderContext[];
	public columnNameOrder(i: number): ColumnNameOrderContext;
	public columnNameOrder(i?: number): ColumnNameOrderContext | ColumnNameOrderContext[] {
		if (i === undefined) {
			return this.getRuleContexts(ColumnNameOrderContext);
		} else {
			return this.getRuleContext(i, ColumnNameOrderContext);
		}
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(HiveSqlParser.COMMA);
		} else {
			return this.getToken(HiveSqlParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_columnNameOrderList; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterColumnNameOrderList) {
			listener.enterColumnNameOrderList(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitColumnNameOrderList) {
			listener.exitColumnNameOrderList(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitColumnNameOrderList) {
			return visitor.visitColumnNameOrderList(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ColumnParenthesesListContext extends ParserRuleContext {
	public LPAREN(): TerminalNode { return this.getToken(HiveSqlParser.LPAREN, 0); }
	public columnNameList(): ColumnNameListContext {
		return this.getRuleContext(0, ColumnNameListContext);
	}
	public RPAREN(): TerminalNode { return this.getToken(HiveSqlParser.RPAREN, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_columnParenthesesList; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterColumnParenthesesList) {
			listener.enterColumnParenthesesList(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitColumnParenthesesList) {
			listener.exitColumnParenthesesList(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitColumnParenthesesList) {
			return visitor.visitColumnParenthesesList(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class EnableValidateSpecificationContext extends ParserRuleContext {
	public enableSpecification(): EnableSpecificationContext | undefined {
		return this.tryGetRuleContext(0, EnableSpecificationContext);
	}
	public validateSpecification(): ValidateSpecificationContext | undefined {
		return this.tryGetRuleContext(0, ValidateSpecificationContext);
	}
	public enforcedSpecification(): EnforcedSpecificationContext | undefined {
		return this.tryGetRuleContext(0, EnforcedSpecificationContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_enableValidateSpecification; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterEnableValidateSpecification) {
			listener.enterEnableValidateSpecification(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitEnableValidateSpecification) {
			listener.exitEnableValidateSpecification(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitEnableValidateSpecification) {
			return visitor.visitEnableValidateSpecification(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class EnableSpecificationContext extends ParserRuleContext {
	public enable(): EnableContext | undefined {
		return this.tryGetRuleContext(0, EnableContext);
	}
	public disable(): DisableContext | undefined {
		return this.tryGetRuleContext(0, DisableContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_enableSpecification; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterEnableSpecification) {
			listener.enterEnableSpecification(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitEnableSpecification) {
			listener.exitEnableSpecification(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitEnableSpecification) {
			return visitor.visitEnableSpecification(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ValidateSpecificationContext extends ParserRuleContext {
	public KW_VALIDATE(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_VALIDATE, 0); }
	public KW_NOVALIDATE(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_NOVALIDATE, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_validateSpecification; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterValidateSpecification) {
			listener.enterValidateSpecification(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitValidateSpecification) {
			listener.exitValidateSpecification(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitValidateSpecification) {
			return visitor.visitValidateSpecification(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class EnforcedSpecificationContext extends ParserRuleContext {
	public KW_ENFORCED(): TerminalNode { return this.getToken(HiveSqlParser.KW_ENFORCED, 0); }
	public KW_NOT(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_NOT, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_enforcedSpecification; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterEnforcedSpecification) {
			listener.enterEnforcedSpecification(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitEnforcedSpecification) {
			listener.exitEnforcedSpecification(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitEnforcedSpecification) {
			return visitor.visitEnforcedSpecification(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class RelySpecificationContext extends ParserRuleContext {
	public KW_RELY(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_RELY, 0); }
	public KW_NORELY(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_NORELY, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_relySpecification; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterRelySpecification) {
			listener.enterRelySpecification(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitRelySpecification) {
			listener.exitRelySpecification(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitRelySpecification) {
			return visitor.visitRelySpecification(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class CreateConstraintContext extends ParserRuleContext {
	public _constraintName!: Id_Context;
	public tableLevelConstraint(): TableLevelConstraintContext {
		return this.getRuleContext(0, TableLevelConstraintContext);
	}
	public KW_CONSTRAINT(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_CONSTRAINT, 0); }
	public constraintOptsCreate(): ConstraintOptsCreateContext | undefined {
		return this.tryGetRuleContext(0, ConstraintOptsCreateContext);
	}
	public id_(): Id_Context | undefined {
		return this.tryGetRuleContext(0, Id_Context);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_createConstraint; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterCreateConstraint) {
			listener.enterCreateConstraint(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitCreateConstraint) {
			listener.exitCreateConstraint(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitCreateConstraint) {
			return visitor.visitCreateConstraint(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class AlterConstraintWithNameContext extends ParserRuleContext {
	public _constraintName!: Id_Context;
	public KW_CONSTRAINT(): TerminalNode { return this.getToken(HiveSqlParser.KW_CONSTRAINT, 0); }
	public tableLevelConstraint(): TableLevelConstraintContext {
		return this.getRuleContext(0, TableLevelConstraintContext);
	}
	public id_(): Id_Context {
		return this.getRuleContext(0, Id_Context);
	}
	public constraintOptsAlter(): ConstraintOptsAlterContext | undefined {
		return this.tryGetRuleContext(0, ConstraintOptsAlterContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_alterConstraintWithName; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterAlterConstraintWithName) {
			listener.enterAlterConstraintWithName(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitAlterConstraintWithName) {
			listener.exitAlterConstraintWithName(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitAlterConstraintWithName) {
			return visitor.visitAlterConstraintWithName(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class TableLevelConstraintContext extends ParserRuleContext {
	public pkUkConstraint(): PkUkConstraintContext | undefined {
		return this.tryGetRuleContext(0, PkUkConstraintContext);
	}
	public checkConstraint(): CheckConstraintContext | undefined {
		return this.tryGetRuleContext(0, CheckConstraintContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_tableLevelConstraint; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterTableLevelConstraint) {
			listener.enterTableLevelConstraint(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitTableLevelConstraint) {
			listener.exitTableLevelConstraint(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitTableLevelConstraint) {
			return visitor.visitTableLevelConstraint(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class PkUkConstraintContext extends ParserRuleContext {
	public _pkCols!: ColumnParenthesesListContext;
	public tableConstraintType(): TableConstraintTypeContext {
		return this.getRuleContext(0, TableConstraintTypeContext);
	}
	public columnParenthesesList(): ColumnParenthesesListContext {
		return this.getRuleContext(0, ColumnParenthesesListContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_pkUkConstraint; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterPkUkConstraint) {
			listener.enterPkUkConstraint(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitPkUkConstraint) {
			listener.exitPkUkConstraint(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitPkUkConstraint) {
			return visitor.visitPkUkConstraint(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class CheckConstraintContext extends ParserRuleContext {
	public KW_CHECK(): TerminalNode { return this.getToken(HiveSqlParser.KW_CHECK, 0); }
	public LPAREN(): TerminalNode { return this.getToken(HiveSqlParser.LPAREN, 0); }
	public expression(): ExpressionContext {
		return this.getRuleContext(0, ExpressionContext);
	}
	public RPAREN(): TerminalNode { return this.getToken(HiveSqlParser.RPAREN, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_checkConstraint; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterCheckConstraint) {
			listener.enterCheckConstraint(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitCheckConstraint) {
			listener.exitCheckConstraint(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitCheckConstraint) {
			return visitor.visitCheckConstraint(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class CreateForeignKeyContext extends ParserRuleContext {
	public _constraintName!: Id_Context;
	public _fkCols!: ColumnParenthesesListContext;
	public _tabName!: TableNameContext;
	public _parCols!: ColumnParenthesesListContext;
	public KW_FOREIGN(): TerminalNode { return this.getToken(HiveSqlParser.KW_FOREIGN, 0); }
	public KW_KEY(): TerminalNode { return this.getToken(HiveSqlParser.KW_KEY, 0); }
	public KW_REFERENCES(): TerminalNode { return this.getToken(HiveSqlParser.KW_REFERENCES, 0); }
	public columnParenthesesList(): ColumnParenthesesListContext[];
	public columnParenthesesList(i: number): ColumnParenthesesListContext;
	public columnParenthesesList(i?: number): ColumnParenthesesListContext | ColumnParenthesesListContext[] {
		if (i === undefined) {
			return this.getRuleContexts(ColumnParenthesesListContext);
		} else {
			return this.getRuleContext(i, ColumnParenthesesListContext);
		}
	}
	public tableName(): TableNameContext {
		return this.getRuleContext(0, TableNameContext);
	}
	public KW_CONSTRAINT(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_CONSTRAINT, 0); }
	public constraintOptsCreate(): ConstraintOptsCreateContext | undefined {
		return this.tryGetRuleContext(0, ConstraintOptsCreateContext);
	}
	public id_(): Id_Context | undefined {
		return this.tryGetRuleContext(0, Id_Context);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_createForeignKey; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterCreateForeignKey) {
			listener.enterCreateForeignKey(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitCreateForeignKey) {
			listener.exitCreateForeignKey(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitCreateForeignKey) {
			return visitor.visitCreateForeignKey(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class AlterForeignKeyWithNameContext extends ParserRuleContext {
	public _constraintName!: Id_Context;
	public _fkCols!: ColumnParenthesesListContext;
	public _tabName!: TableNameContext;
	public _parCols!: ColumnParenthesesListContext;
	public KW_CONSTRAINT(): TerminalNode { return this.getToken(HiveSqlParser.KW_CONSTRAINT, 0); }
	public KW_FOREIGN(): TerminalNode { return this.getToken(HiveSqlParser.KW_FOREIGN, 0); }
	public KW_KEY(): TerminalNode { return this.getToken(HiveSqlParser.KW_KEY, 0); }
	public KW_REFERENCES(): TerminalNode { return this.getToken(HiveSqlParser.KW_REFERENCES, 0); }
	public id_(): Id_Context {
		return this.getRuleContext(0, Id_Context);
	}
	public columnParenthesesList(): ColumnParenthesesListContext[];
	public columnParenthesesList(i: number): ColumnParenthesesListContext;
	public columnParenthesesList(i?: number): ColumnParenthesesListContext | ColumnParenthesesListContext[] {
		if (i === undefined) {
			return this.getRuleContexts(ColumnParenthesesListContext);
		} else {
			return this.getRuleContext(i, ColumnParenthesesListContext);
		}
	}
	public tableName(): TableNameContext {
		return this.getRuleContext(0, TableNameContext);
	}
	public constraintOptsAlter(): ConstraintOptsAlterContext | undefined {
		return this.tryGetRuleContext(0, ConstraintOptsAlterContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_alterForeignKeyWithName; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterAlterForeignKeyWithName) {
			listener.enterAlterForeignKeyWithName(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitAlterForeignKeyWithName) {
			listener.exitAlterForeignKeyWithName(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitAlterForeignKeyWithName) {
			return visitor.visitAlterForeignKeyWithName(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class SkewedValueElementContext extends ParserRuleContext {
	public skewedColumnValues(): SkewedColumnValuesContext | undefined {
		return this.tryGetRuleContext(0, SkewedColumnValuesContext);
	}
	public skewedColumnValuePairList(): SkewedColumnValuePairListContext | undefined {
		return this.tryGetRuleContext(0, SkewedColumnValuePairListContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_skewedValueElement; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterSkewedValueElement) {
			listener.enterSkewedValueElement(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitSkewedValueElement) {
			listener.exitSkewedValueElement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitSkewedValueElement) {
			return visitor.visitSkewedValueElement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class SkewedColumnValuePairListContext extends ParserRuleContext {
	public skewedColumnValuePair(): SkewedColumnValuePairContext[];
	public skewedColumnValuePair(i: number): SkewedColumnValuePairContext;
	public skewedColumnValuePair(i?: number): SkewedColumnValuePairContext | SkewedColumnValuePairContext[] {
		if (i === undefined) {
			return this.getRuleContexts(SkewedColumnValuePairContext);
		} else {
			return this.getRuleContext(i, SkewedColumnValuePairContext);
		}
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(HiveSqlParser.COMMA);
		} else {
			return this.getToken(HiveSqlParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_skewedColumnValuePairList; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterSkewedColumnValuePairList) {
			listener.enterSkewedColumnValuePairList(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitSkewedColumnValuePairList) {
			listener.exitSkewedColumnValuePairList(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitSkewedColumnValuePairList) {
			return visitor.visitSkewedColumnValuePairList(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class SkewedColumnValuePairContext extends ParserRuleContext {
	public _colValues!: SkewedColumnValuesContext;
	public LPAREN(): TerminalNode { return this.getToken(HiveSqlParser.LPAREN, 0); }
	public RPAREN(): TerminalNode { return this.getToken(HiveSqlParser.RPAREN, 0); }
	public skewedColumnValues(): SkewedColumnValuesContext {
		return this.getRuleContext(0, SkewedColumnValuesContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_skewedColumnValuePair; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterSkewedColumnValuePair) {
			listener.enterSkewedColumnValuePair(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitSkewedColumnValuePair) {
			listener.exitSkewedColumnValuePair(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitSkewedColumnValuePair) {
			return visitor.visitSkewedColumnValuePair(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class SkewedColumnValuesContext extends ParserRuleContext {
	public skewedColumnValue(): SkewedColumnValueContext[];
	public skewedColumnValue(i: number): SkewedColumnValueContext;
	public skewedColumnValue(i?: number): SkewedColumnValueContext | SkewedColumnValueContext[] {
		if (i === undefined) {
			return this.getRuleContexts(SkewedColumnValueContext);
		} else {
			return this.getRuleContext(i, SkewedColumnValueContext);
		}
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(HiveSqlParser.COMMA);
		} else {
			return this.getToken(HiveSqlParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_skewedColumnValues; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterSkewedColumnValues) {
			listener.enterSkewedColumnValues(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitSkewedColumnValues) {
			listener.exitSkewedColumnValues(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitSkewedColumnValues) {
			return visitor.visitSkewedColumnValues(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class SkewedColumnValueContext extends ParserRuleContext {
	public constant(): ConstantContext {
		return this.getRuleContext(0, ConstantContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_skewedColumnValue; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterSkewedColumnValue) {
			listener.enterSkewedColumnValue(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitSkewedColumnValue) {
			listener.exitSkewedColumnValue(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitSkewedColumnValue) {
			return visitor.visitSkewedColumnValue(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class SkewedValueLocationElementContext extends ParserRuleContext {
	public skewedColumnValue(): SkewedColumnValueContext | undefined {
		return this.tryGetRuleContext(0, SkewedColumnValueContext);
	}
	public skewedColumnValuePair(): SkewedColumnValuePairContext | undefined {
		return this.tryGetRuleContext(0, SkewedColumnValuePairContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_skewedValueLocationElement; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterSkewedValueLocationElement) {
			listener.enterSkewedValueLocationElement(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitSkewedValueLocationElement) {
			listener.exitSkewedValueLocationElement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitSkewedValueLocationElement) {
			return visitor.visitSkewedValueLocationElement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class OrderSpecificationContext extends ParserRuleContext {
	public KW_ASC(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_ASC, 0); }
	public KW_DESC(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_DESC, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_orderSpecification; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterOrderSpecification) {
			listener.enterOrderSpecification(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitOrderSpecification) {
			listener.exitOrderSpecification(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitOrderSpecification) {
			return visitor.visitOrderSpecification(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class NullOrderingContext extends ParserRuleContext {
	public KW_NULLS(): TerminalNode { return this.getToken(HiveSqlParser.KW_NULLS, 0); }
	public KW_FIRST(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_FIRST, 0); }
	public KW_LAST(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_LAST, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_nullOrdering; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterNullOrdering) {
			listener.enterNullOrdering(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitNullOrdering) {
			listener.exitNullOrdering(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitNullOrdering) {
			return visitor.visitNullOrdering(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ColumnNameOrderContext extends ParserRuleContext {
	public _orderSpec!: OrderSpecificationContext;
	public _nullSpec!: NullOrderingContext;
	public columnName(): ColumnNameContext {
		return this.getRuleContext(0, ColumnNameContext);
	}
	public orderSpecification(): OrderSpecificationContext | undefined {
		return this.tryGetRuleContext(0, OrderSpecificationContext);
	}
	public nullOrdering(): NullOrderingContext | undefined {
		return this.tryGetRuleContext(0, NullOrderingContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_columnNameOrder; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterColumnNameOrder) {
			listener.enterColumnNameOrder(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitColumnNameOrder) {
			listener.exitColumnNameOrder(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitColumnNameOrder) {
			return visitor.visitColumnNameOrder(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ColumnNameCommentListContext extends ParserRuleContext {
	public columnNameComment(): ColumnNameCommentContext[];
	public columnNameComment(i: number): ColumnNameCommentContext;
	public columnNameComment(i?: number): ColumnNameCommentContext | ColumnNameCommentContext[] {
		if (i === undefined) {
			return this.getRuleContexts(ColumnNameCommentContext);
		} else {
			return this.getRuleContext(i, ColumnNameCommentContext);
		}
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(HiveSqlParser.COMMA);
		} else {
			return this.getToken(HiveSqlParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_columnNameCommentList; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterColumnNameCommentList) {
			listener.enterColumnNameCommentList(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitColumnNameCommentList) {
			listener.exitColumnNameCommentList(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitColumnNameCommentList) {
			return visitor.visitColumnNameCommentList(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ColumnNameCommentContext extends ParserRuleContext {
	public _colName!: ColumnNameCreateContext;
	public _comment!: Token;
	public columnNameCreate(): ColumnNameCreateContext {
		return this.getRuleContext(0, ColumnNameCreateContext);
	}
	public KW_COMMENT(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_COMMENT, 0); }
	public StringLiteral(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.StringLiteral, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_columnNameComment; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterColumnNameComment) {
			listener.enterColumnNameComment(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitColumnNameComment) {
			listener.exitColumnNameComment(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitColumnNameComment) {
			return visitor.visitColumnNameComment(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class OrderSpecificationRewriteContext extends ParserRuleContext {
	public KW_ASC(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_ASC, 0); }
	public KW_DESC(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_DESC, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_orderSpecificationRewrite; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterOrderSpecificationRewrite) {
			listener.enterOrderSpecificationRewrite(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitOrderSpecificationRewrite) {
			listener.exitOrderSpecificationRewrite(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitOrderSpecificationRewrite) {
			return visitor.visitOrderSpecificationRewrite(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ColumnRefOrderContext extends ParserRuleContext {
	public _orderSpec!: OrderSpecificationRewriteContext;
	public _nullSpec!: NullOrderingContext;
	public columnName(): ColumnNameContext | undefined {
		return this.tryGetRuleContext(0, ColumnNameContext);
	}
	public expression(): ExpressionContext | undefined {
		return this.tryGetRuleContext(0, ExpressionContext);
	}
	public orderSpecificationRewrite(): OrderSpecificationRewriteContext | undefined {
		return this.tryGetRuleContext(0, OrderSpecificationRewriteContext);
	}
	public nullOrdering(): NullOrderingContext | undefined {
		return this.tryGetRuleContext(0, NullOrderingContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_columnRefOrder; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterColumnRefOrder) {
			listener.enterColumnRefOrder(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitColumnRefOrder) {
			listener.exitColumnRefOrder(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitColumnRefOrder) {
			return visitor.visitColumnRefOrder(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ColumnNameTypeContext extends ParserRuleContext {
	public _colName!: ColumnNameCreateContext;
	public _comment!: Token;
	public colType(): ColTypeContext {
		return this.getRuleContext(0, ColTypeContext);
	}
	public columnNameCreate(): ColumnNameCreateContext {
		return this.getRuleContext(0, ColumnNameCreateContext);
	}
	public KW_COMMENT(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_COMMENT, 0); }
	public StringLiteral(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.StringLiteral, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_columnNameType; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterColumnNameType) {
			listener.enterColumnNameType(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitColumnNameType) {
			listener.exitColumnNameType(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitColumnNameType) {
			return visitor.visitColumnNameType(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ColumnNameTypeOrConstraintContext extends ParserRuleContext {
	public tableConstraint(): TableConstraintContext | undefined {
		return this.tryGetRuleContext(0, TableConstraintContext);
	}
	public columnNameTypeConstraint(): ColumnNameTypeConstraintContext | undefined {
		return this.tryGetRuleContext(0, ColumnNameTypeConstraintContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_columnNameTypeOrConstraint; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterColumnNameTypeOrConstraint) {
			listener.enterColumnNameTypeOrConstraint(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitColumnNameTypeOrConstraint) {
			listener.exitColumnNameTypeOrConstraint(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitColumnNameTypeOrConstraint) {
			return visitor.visitColumnNameTypeOrConstraint(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class TableConstraintContext extends ParserRuleContext {
	public createForeignKey(): CreateForeignKeyContext | undefined {
		return this.tryGetRuleContext(0, CreateForeignKeyContext);
	}
	public createConstraint(): CreateConstraintContext | undefined {
		return this.tryGetRuleContext(0, CreateConstraintContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_tableConstraint; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterTableConstraint) {
			listener.enterTableConstraint(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitTableConstraint) {
			listener.exitTableConstraint(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitTableConstraint) {
			return visitor.visitTableConstraint(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ColumnNameTypeConstraintContext extends ParserRuleContext {
	public _colName!: ColumnNameCreateContext;
	public _comment!: Token;
	public colType(): ColTypeContext {
		return this.getRuleContext(0, ColTypeContext);
	}
	public columnNameCreate(): ColumnNameCreateContext {
		return this.getRuleContext(0, ColumnNameCreateContext);
	}
	public columnConstraint(): ColumnConstraintContext | undefined {
		return this.tryGetRuleContext(0, ColumnConstraintContext);
	}
	public KW_COMMENT(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_COMMENT, 0); }
	public StringLiteral(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.StringLiteral, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_columnNameTypeConstraint; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterColumnNameTypeConstraint) {
			listener.enterColumnNameTypeConstraint(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitColumnNameTypeConstraint) {
			listener.exitColumnNameTypeConstraint(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitColumnNameTypeConstraint) {
			return visitor.visitColumnNameTypeConstraint(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ColumnConstraintContext extends ParserRuleContext {
	public foreignKeyConstraint(): ForeignKeyConstraintContext | undefined {
		return this.tryGetRuleContext(0, ForeignKeyConstraintContext);
	}
	public colConstraint(): ColConstraintContext | undefined {
		return this.tryGetRuleContext(0, ColConstraintContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_columnConstraint; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterColumnConstraint) {
			listener.enterColumnConstraint(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitColumnConstraint) {
			listener.exitColumnConstraint(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitColumnConstraint) {
			return visitor.visitColumnConstraint(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ForeignKeyConstraintContext extends ParserRuleContext {
	public _constraintName!: Id_Context;
	public _tabName!: TableNameContext;
	public _colName!: ColumnNameContext;
	public KW_REFERENCES(): TerminalNode { return this.getToken(HiveSqlParser.KW_REFERENCES, 0); }
	public LPAREN(): TerminalNode { return this.getToken(HiveSqlParser.LPAREN, 0); }
	public RPAREN(): TerminalNode { return this.getToken(HiveSqlParser.RPAREN, 0); }
	public tableName(): TableNameContext {
		return this.getRuleContext(0, TableNameContext);
	}
	public columnName(): ColumnNameContext {
		return this.getRuleContext(0, ColumnNameContext);
	}
	public KW_CONSTRAINT(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_CONSTRAINT, 0); }
	public constraintOptsCreate(): ConstraintOptsCreateContext | undefined {
		return this.tryGetRuleContext(0, ConstraintOptsCreateContext);
	}
	public id_(): Id_Context | undefined {
		return this.tryGetRuleContext(0, Id_Context);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_foreignKeyConstraint; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterForeignKeyConstraint) {
			listener.enterForeignKeyConstraint(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitForeignKeyConstraint) {
			listener.exitForeignKeyConstraint(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitForeignKeyConstraint) {
			return visitor.visitForeignKeyConstraint(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ColConstraintContext extends ParserRuleContext {
	public _constraintName!: Id_Context;
	public columnConstraintType(): ColumnConstraintTypeContext {
		return this.getRuleContext(0, ColumnConstraintTypeContext);
	}
	public KW_CONSTRAINT(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_CONSTRAINT, 0); }
	public constraintOptsCreate(): ConstraintOptsCreateContext | undefined {
		return this.tryGetRuleContext(0, ConstraintOptsCreateContext);
	}
	public id_(): Id_Context | undefined {
		return this.tryGetRuleContext(0, Id_Context);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_colConstraint; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterColConstraint) {
			listener.enterColConstraint(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitColConstraint) {
			listener.exitColConstraint(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitColConstraint) {
			return visitor.visitColConstraint(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class AlterColumnConstraintContext extends ParserRuleContext {
	public alterForeignKeyConstraint(): AlterForeignKeyConstraintContext | undefined {
		return this.tryGetRuleContext(0, AlterForeignKeyConstraintContext);
	}
	public alterColConstraint(): AlterColConstraintContext | undefined {
		return this.tryGetRuleContext(0, AlterColConstraintContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_alterColumnConstraint; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterAlterColumnConstraint) {
			listener.enterAlterColumnConstraint(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitAlterColumnConstraint) {
			listener.exitAlterColumnConstraint(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitAlterColumnConstraint) {
			return visitor.visitAlterColumnConstraint(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class AlterForeignKeyConstraintContext extends ParserRuleContext {
	public _constraintName!: Id_Context;
	public _tabName!: TableNameContext;
	public _colName!: ColumnNameContext;
	public KW_REFERENCES(): TerminalNode { return this.getToken(HiveSqlParser.KW_REFERENCES, 0); }
	public LPAREN(): TerminalNode { return this.getToken(HiveSqlParser.LPAREN, 0); }
	public RPAREN(): TerminalNode { return this.getToken(HiveSqlParser.RPAREN, 0); }
	public tableName(): TableNameContext {
		return this.getRuleContext(0, TableNameContext);
	}
	public columnName(): ColumnNameContext {
		return this.getRuleContext(0, ColumnNameContext);
	}
	public KW_CONSTRAINT(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_CONSTRAINT, 0); }
	public constraintOptsAlter(): ConstraintOptsAlterContext | undefined {
		return this.tryGetRuleContext(0, ConstraintOptsAlterContext);
	}
	public id_(): Id_Context | undefined {
		return this.tryGetRuleContext(0, Id_Context);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_alterForeignKeyConstraint; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterAlterForeignKeyConstraint) {
			listener.enterAlterForeignKeyConstraint(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitAlterForeignKeyConstraint) {
			listener.exitAlterForeignKeyConstraint(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitAlterForeignKeyConstraint) {
			return visitor.visitAlterForeignKeyConstraint(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class AlterColConstraintContext extends ParserRuleContext {
	public _constraintName!: Id_Context;
	public columnConstraintType(): ColumnConstraintTypeContext {
		return this.getRuleContext(0, ColumnConstraintTypeContext);
	}
	public KW_CONSTRAINT(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_CONSTRAINT, 0); }
	public constraintOptsAlter(): ConstraintOptsAlterContext | undefined {
		return this.tryGetRuleContext(0, ConstraintOptsAlterContext);
	}
	public id_(): Id_Context | undefined {
		return this.tryGetRuleContext(0, Id_Context);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_alterColConstraint; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterAlterColConstraint) {
			listener.enterAlterColConstraint(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitAlterColConstraint) {
			listener.exitAlterColConstraint(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitAlterColConstraint) {
			return visitor.visitAlterColConstraint(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ColumnConstraintTypeContext extends ParserRuleContext {
	public KW_NOT(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_NOT, 0); }
	public KW_NULL(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_NULL, 0); }
	public KW_DEFAULT(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_DEFAULT, 0); }
	public defaultVal(): DefaultValContext | undefined {
		return this.tryGetRuleContext(0, DefaultValContext);
	}
	public checkConstraint(): CheckConstraintContext | undefined {
		return this.tryGetRuleContext(0, CheckConstraintContext);
	}
	public tableConstraintType(): TableConstraintTypeContext | undefined {
		return this.tryGetRuleContext(0, TableConstraintTypeContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_columnConstraintType; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterColumnConstraintType) {
			listener.enterColumnConstraintType(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitColumnConstraintType) {
			listener.exitColumnConstraintType(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitColumnConstraintType) {
			return visitor.visitColumnConstraintType(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class DefaultValContext extends ParserRuleContext {
	public constant(): ConstantContext | undefined {
		return this.tryGetRuleContext(0, ConstantContext);
	}
	public function_(): Function_Context | undefined {
		return this.tryGetRuleContext(0, Function_Context);
	}
	public castExpression(): CastExpressionContext | undefined {
		return this.tryGetRuleContext(0, CastExpressionContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_defaultVal; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterDefaultVal) {
			listener.enterDefaultVal(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitDefaultVal) {
			listener.exitDefaultVal(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitDefaultVal) {
			return visitor.visitDefaultVal(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class TableConstraintTypeContext extends ParserRuleContext {
	public KW_PRIMARY(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_PRIMARY, 0); }
	public KW_KEY(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_KEY, 0); }
	public KW_UNIQUE(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_UNIQUE, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_tableConstraintType; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterTableConstraintType) {
			listener.enterTableConstraintType(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitTableConstraintType) {
			listener.exitTableConstraintType(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitTableConstraintType) {
			return visitor.visitTableConstraintType(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ConstraintOptsCreateContext extends ParserRuleContext {
	public enableValidateSpecification(): EnableValidateSpecificationContext {
		return this.getRuleContext(0, EnableValidateSpecificationContext);
	}
	public relySpecification(): RelySpecificationContext | undefined {
		return this.tryGetRuleContext(0, RelySpecificationContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_constraintOptsCreate; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterConstraintOptsCreate) {
			listener.enterConstraintOptsCreate(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitConstraintOptsCreate) {
			listener.exitConstraintOptsCreate(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitConstraintOptsCreate) {
			return visitor.visitConstraintOptsCreate(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ConstraintOptsAlterContext extends ParserRuleContext {
	public enableValidateSpecification(): EnableValidateSpecificationContext {
		return this.getRuleContext(0, EnableValidateSpecificationContext);
	}
	public relySpecification(): RelySpecificationContext | undefined {
		return this.tryGetRuleContext(0, RelySpecificationContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_constraintOptsAlter; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterConstraintOptsAlter) {
			listener.enterConstraintOptsAlter(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitConstraintOptsAlter) {
			listener.exitConstraintOptsAlter(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitConstraintOptsAlter) {
			return visitor.visitConstraintOptsAlter(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ColumnNameColonTypeContext extends ParserRuleContext {
	public _colName!: ColumnNameCreateContext;
	public _comment!: Token;
	public COLON(): TerminalNode { return this.getToken(HiveSqlParser.COLON, 0); }
	public colType(): ColTypeContext {
		return this.getRuleContext(0, ColTypeContext);
	}
	public columnNameCreate(): ColumnNameCreateContext {
		return this.getRuleContext(0, ColumnNameCreateContext);
	}
	public KW_COMMENT(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_COMMENT, 0); }
	public StringLiteral(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.StringLiteral, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_columnNameColonType; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterColumnNameColonType) {
			listener.enterColumnNameColonType(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitColumnNameColonType) {
			listener.exitColumnNameColonType(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitColumnNameColonType) {
			return visitor.visitColumnNameColonType(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ColTypeContext extends ParserRuleContext {
	public type(): TypeContext {
		return this.getRuleContext(0, TypeContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_colType; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterColType) {
			listener.enterColType(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitColType) {
			listener.exitColType(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitColType) {
			return visitor.visitColType(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ColTypeListContext extends ParserRuleContext {
	public colType(): ColTypeContext[];
	public colType(i: number): ColTypeContext;
	public colType(i?: number): ColTypeContext | ColTypeContext[] {
		if (i === undefined) {
			return this.getRuleContexts(ColTypeContext);
		} else {
			return this.getRuleContext(i, ColTypeContext);
		}
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(HiveSqlParser.COMMA);
		} else {
			return this.getToken(HiveSqlParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_colTypeList; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterColTypeList) {
			listener.enterColTypeList(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitColTypeList) {
			listener.exitColTypeList(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitColTypeList) {
			return visitor.visitColTypeList(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class TypeContext extends ParserRuleContext {
	public primitiveType(): PrimitiveTypeContext | undefined {
		return this.tryGetRuleContext(0, PrimitiveTypeContext);
	}
	public listType(): ListTypeContext | undefined {
		return this.tryGetRuleContext(0, ListTypeContext);
	}
	public structType(): StructTypeContext | undefined {
		return this.tryGetRuleContext(0, StructTypeContext);
	}
	public mapType(): MapTypeContext | undefined {
		return this.tryGetRuleContext(0, MapTypeContext);
	}
	public unionType(): UnionTypeContext | undefined {
		return this.tryGetRuleContext(0, UnionTypeContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_type; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterType) {
			listener.enterType(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitType) {
			listener.exitType(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitType) {
			return visitor.visitType(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class PrimitiveTypeContext extends ParserRuleContext {
	public _prec!: Token;
	public _scale!: Token;
	public _length!: Token;
	public KW_TINYINT(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_TINYINT, 0); }
	public KW_SMALLINT(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_SMALLINT, 0); }
	public KW_INT(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_INT, 0); }
	public KW_INTEGER(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_INTEGER, 0); }
	public KW_BIGINT(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_BIGINT, 0); }
	public KW_BOOLEAN(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_BOOLEAN, 0); }
	public KW_FLOAT(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_FLOAT, 0); }
	public KW_REAL(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_REAL, 0); }
	public KW_DOUBLE(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_DOUBLE, 0); }
	public KW_PRECISION(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_PRECISION, 0); }
	public KW_DATE(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_DATE, 0); }
	public KW_DATETIME(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_DATETIME, 0); }
	public KW_TIMESTAMP(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_TIMESTAMP, 0); }
	public KW_TIMESTAMPLOCALTZ(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_TIMESTAMPLOCALTZ, 0); }
	public KW_WITH(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_WITH, 0); }
	public KW_LOCAL(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_LOCAL, 0); }
	public KW_TIME(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_TIME, 0); }
	public KW_ZONE(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_ZONE, 0); }
	public KW_STRING(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_STRING, 0); }
	public KW_BINARY(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_BINARY, 0); }
	public decimal(): DecimalContext | undefined {
		return this.tryGetRuleContext(0, DecimalContext);
	}
	public LPAREN(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.LPAREN, 0); }
	public RPAREN(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.RPAREN, 0); }
	public Number(): TerminalNode[];
	public Number(i: number): TerminalNode;
	public Number(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(HiveSqlParser.Number);
		} else {
			return this.getToken(HiveSqlParser.Number, i);
		}
	}
	public COMMA(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.COMMA, 0); }
	public KW_VARCHAR(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_VARCHAR, 0); }
	public KW_CHAR(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_CHAR, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_primitiveType; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterPrimitiveType) {
			listener.enterPrimitiveType(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitPrimitiveType) {
			listener.exitPrimitiveType(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitPrimitiveType) {
			return visitor.visitPrimitiveType(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ListTypeContext extends ParserRuleContext {
	public KW_ARRAY(): TerminalNode { return this.getToken(HiveSqlParser.KW_ARRAY, 0); }
	public LESSTHAN(): TerminalNode { return this.getToken(HiveSqlParser.LESSTHAN, 0); }
	public type(): TypeContext {
		return this.getRuleContext(0, TypeContext);
	}
	public GREATERTHAN(): TerminalNode { return this.getToken(HiveSqlParser.GREATERTHAN, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_listType; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterListType) {
			listener.enterListType(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitListType) {
			listener.exitListType(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitListType) {
			return visitor.visitListType(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class StructTypeContext extends ParserRuleContext {
	public KW_STRUCT(): TerminalNode { return this.getToken(HiveSqlParser.KW_STRUCT, 0); }
	public LESSTHAN(): TerminalNode { return this.getToken(HiveSqlParser.LESSTHAN, 0); }
	public columnNameColonTypeList(): ColumnNameColonTypeListContext {
		return this.getRuleContext(0, ColumnNameColonTypeListContext);
	}
	public GREATERTHAN(): TerminalNode { return this.getToken(HiveSqlParser.GREATERTHAN, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_structType; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterStructType) {
			listener.enterStructType(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitStructType) {
			listener.exitStructType(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitStructType) {
			return visitor.visitStructType(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class MapTypeContext extends ParserRuleContext {
	public _left!: PrimitiveTypeContext;
	public _right!: TypeContext;
	public KW_MAP(): TerminalNode { return this.getToken(HiveSqlParser.KW_MAP, 0); }
	public LESSTHAN(): TerminalNode { return this.getToken(HiveSqlParser.LESSTHAN, 0); }
	public COMMA(): TerminalNode { return this.getToken(HiveSqlParser.COMMA, 0); }
	public GREATERTHAN(): TerminalNode { return this.getToken(HiveSqlParser.GREATERTHAN, 0); }
	public primitiveType(): PrimitiveTypeContext {
		return this.getRuleContext(0, PrimitiveTypeContext);
	}
	public type(): TypeContext {
		return this.getRuleContext(0, TypeContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_mapType; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterMapType) {
			listener.enterMapType(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitMapType) {
			listener.exitMapType(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitMapType) {
			return visitor.visitMapType(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class UnionTypeContext extends ParserRuleContext {
	public KW_UNIONTYPE(): TerminalNode { return this.getToken(HiveSqlParser.KW_UNIONTYPE, 0); }
	public LESSTHAN(): TerminalNode { return this.getToken(HiveSqlParser.LESSTHAN, 0); }
	public colTypeList(): ColTypeListContext {
		return this.getRuleContext(0, ColTypeListContext);
	}
	public GREATERTHAN(): TerminalNode { return this.getToken(HiveSqlParser.GREATERTHAN, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_unionType; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterUnionType) {
			listener.enterUnionType(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitUnionType) {
			listener.exitUnionType(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitUnionType) {
			return visitor.visitUnionType(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class SetOperatorContext extends ParserRuleContext {
	public KW_UNION(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_UNION, 0); }
	public KW_INTERSECT(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_INTERSECT, 0); }
	public KW_EXCEPT(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_EXCEPT, 0); }
	public KW_MINUS(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_MINUS, 0); }
	public KW_ALL(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_ALL, 0); }
	public KW_DISTINCT(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_DISTINCT, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_setOperator; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterSetOperator) {
			listener.enterSetOperator(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitSetOperator) {
			listener.exitSetOperator(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitSetOperator) {
			return visitor.visitSetOperator(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class QueryStatementExpressionContext extends ParserRuleContext {
	public _w!: WithClauseContext;
	public queryStatementExpressionBody(): QueryStatementExpressionBodyContext {
		return this.getRuleContext(0, QueryStatementExpressionBodyContext);
	}
	public withClause(): WithClauseContext | undefined {
		return this.tryGetRuleContext(0, WithClauseContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_queryStatementExpression; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterQueryStatementExpression) {
			listener.enterQueryStatementExpression(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitQueryStatementExpression) {
			listener.exitQueryStatementExpression(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitQueryStatementExpression) {
			return visitor.visitQueryStatementExpression(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class QueryStatementExpressionBodyContext extends ParserRuleContext {
	public fromStatement(): FromStatementContext | undefined {
		return this.tryGetRuleContext(0, FromStatementContext);
	}
	public regularBody(): RegularBodyContext | undefined {
		return this.tryGetRuleContext(0, RegularBodyContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_queryStatementExpressionBody; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterQueryStatementExpressionBody) {
			listener.enterQueryStatementExpressionBody(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitQueryStatementExpressionBody) {
			listener.exitQueryStatementExpressionBody(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitQueryStatementExpressionBody) {
			return visitor.visitQueryStatementExpressionBody(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class WithClauseContext extends ParserRuleContext {
	public KW_WITH(): TerminalNode { return this.getToken(HiveSqlParser.KW_WITH, 0); }
	public cteStatement(): CteStatementContext[];
	public cteStatement(i: number): CteStatementContext;
	public cteStatement(i?: number): CteStatementContext | CteStatementContext[] {
		if (i === undefined) {
			return this.getRuleContexts(CteStatementContext);
		} else {
			return this.getRuleContext(i, CteStatementContext);
		}
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(HiveSqlParser.COMMA);
		} else {
			return this.getToken(HiveSqlParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_withClause; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterWithClause) {
			listener.enterWithClause(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitWithClause) {
			listener.exitWithClause(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitWithClause) {
			return visitor.visitWithClause(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class CteStatementContext extends ParserRuleContext {
	public _colAliases!: ColumnNameListContext;
	public id_(): Id_Context {
		return this.getRuleContext(0, Id_Context);
	}
	public KW_AS(): TerminalNode { return this.getToken(HiveSqlParser.KW_AS, 0); }
	public LPAREN(): TerminalNode[];
	public LPAREN(i: number): TerminalNode;
	public LPAREN(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(HiveSqlParser.LPAREN);
		} else {
			return this.getToken(HiveSqlParser.LPAREN, i);
		}
	}
	public queryStatementExpression(): QueryStatementExpressionContext {
		return this.getRuleContext(0, QueryStatementExpressionContext);
	}
	public RPAREN(): TerminalNode[];
	public RPAREN(i: number): TerminalNode;
	public RPAREN(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(HiveSqlParser.RPAREN);
		} else {
			return this.getToken(HiveSqlParser.RPAREN, i);
		}
	}
	public columnNameList(): ColumnNameListContext | undefined {
		return this.tryGetRuleContext(0, ColumnNameListContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_cteStatement; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterCteStatement) {
			listener.enterCteStatement(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitCteStatement) {
			listener.exitCteStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitCteStatement) {
			return visitor.visitCteStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class FromStatementContext extends ParserRuleContext {
	public _u!: SetOperatorContext;
	public _r!: SingleFromStatementContext;
	public singleFromStatement(): SingleFromStatementContext[];
	public singleFromStatement(i: number): SingleFromStatementContext;
	public singleFromStatement(i?: number): SingleFromStatementContext | SingleFromStatementContext[] {
		if (i === undefined) {
			return this.getRuleContexts(SingleFromStatementContext);
		} else {
			return this.getRuleContext(i, SingleFromStatementContext);
		}
	}
	public setOperator(): SetOperatorContext[];
	public setOperator(i: number): SetOperatorContext;
	public setOperator(i?: number): SetOperatorContext | SetOperatorContext[] {
		if (i === undefined) {
			return this.getRuleContexts(SetOperatorContext);
		} else {
			return this.getRuleContext(i, SetOperatorContext);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_fromStatement; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterFromStatement) {
			listener.enterFromStatement(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitFromStatement) {
			listener.exitFromStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitFromStatement) {
			return visitor.visitFromStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class SingleFromStatementContext extends ParserRuleContext {
	public _body!: BodyContext;
	public _b: BodyContext[] = [];
	public fromClause(): FromClauseContext {
		return this.getRuleContext(0, FromClauseContext);
	}
	public body(): BodyContext[];
	public body(i: number): BodyContext;
	public body(i?: number): BodyContext | BodyContext[] {
		if (i === undefined) {
			return this.getRuleContexts(BodyContext);
		} else {
			return this.getRuleContext(i, BodyContext);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_singleFromStatement; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterSingleFromStatement) {
			listener.enterSingleFromStatement(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitSingleFromStatement) {
			listener.exitSingleFromStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitSingleFromStatement) {
			return visitor.visitSingleFromStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class RegularBodyContext extends ParserRuleContext {
	public _i!: InsertClauseContext;
	public _s!: SelectStatementContext;
	public insertClause(): InsertClauseContext | undefined {
		return this.tryGetRuleContext(0, InsertClauseContext);
	}
	public selectStatement(): SelectStatementContext {
		return this.getRuleContext(0, SelectStatementContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_regularBody; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterRegularBody) {
			listener.enterRegularBody(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitRegularBody) {
			listener.exitRegularBody(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitRegularBody) {
			return visitor.visitRegularBody(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class AtomSelectStatementContext extends ParserRuleContext {
	public _s!: SelectClauseContext;
	public _f!: FromClauseContext;
	public _w!: WhereClauseContext;
	public _g!: GroupByClauseContext;
	public _h!: HavingClauseContext;
	public _win!: Window_clauseContext;
	public _q!: QualifyClauseContext;
	public selectClause(): SelectClauseContext | undefined {
		return this.tryGetRuleContext(0, SelectClauseContext);
	}
	public fromClause(): FromClauseContext | undefined {
		return this.tryGetRuleContext(0, FromClauseContext);
	}
	public whereClause(): WhereClauseContext | undefined {
		return this.tryGetRuleContext(0, WhereClauseContext);
	}
	public groupByClause(): GroupByClauseContext | undefined {
		return this.tryGetRuleContext(0, GroupByClauseContext);
	}
	public havingClause(): HavingClauseContext | undefined {
		return this.tryGetRuleContext(0, HavingClauseContext);
	}
	public window_clause(): Window_clauseContext | undefined {
		return this.tryGetRuleContext(0, Window_clauseContext);
	}
	public qualifyClause(): QualifyClauseContext | undefined {
		return this.tryGetRuleContext(0, QualifyClauseContext);
	}
	public LPAREN(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.LPAREN, 0); }
	public selectStatement(): SelectStatementContext | undefined {
		return this.tryGetRuleContext(0, SelectStatementContext);
	}
	public RPAREN(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.RPAREN, 0); }
	public valuesSource(): ValuesSourceContext | undefined {
		return this.tryGetRuleContext(0, ValuesSourceContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_atomSelectStatement; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterAtomSelectStatement) {
			listener.enterAtomSelectStatement(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitAtomSelectStatement) {
			listener.exitAtomSelectStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitAtomSelectStatement) {
			return visitor.visitAtomSelectStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class SelectStatementContext extends ParserRuleContext {
	public _a!: AtomSelectStatementContext;
	public _set!: SetOpSelectStatementContext;
	public _o!: OrderByClauseContext;
	public _c!: ClusterByClauseContext;
	public _d!: DistributeByClauseContext;
	public _sort!: SortByClauseContext;
	public _l!: LimitClauseContext;
	public atomSelectStatement(): AtomSelectStatementContext {
		return this.getRuleContext(0, AtomSelectStatementContext);
	}
	public setOpSelectStatement(): SetOpSelectStatementContext | undefined {
		return this.tryGetRuleContext(0, SetOpSelectStatementContext);
	}
	public orderByClause(): OrderByClauseContext | undefined {
		return this.tryGetRuleContext(0, OrderByClauseContext);
	}
	public clusterByClause(): ClusterByClauseContext | undefined {
		return this.tryGetRuleContext(0, ClusterByClauseContext);
	}
	public distributeByClause(): DistributeByClauseContext | undefined {
		return this.tryGetRuleContext(0, DistributeByClauseContext);
	}
	public sortByClause(): SortByClauseContext | undefined {
		return this.tryGetRuleContext(0, SortByClauseContext);
	}
	public limitClause(): LimitClauseContext | undefined {
		return this.tryGetRuleContext(0, LimitClauseContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_selectStatement; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterSelectStatement) {
			listener.enterSelectStatement(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitSelectStatement) {
			listener.exitSelectStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitSelectStatement) {
			return visitor.visitSelectStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class SetOpSelectStatementContext extends ParserRuleContext {
	public _u!: SetOperatorContext;
	public _b!: AtomSelectStatementContext;
	public setOperator(): SetOperatorContext[];
	public setOperator(i: number): SetOperatorContext;
	public setOperator(i?: number): SetOperatorContext | SetOperatorContext[] {
		if (i === undefined) {
			return this.getRuleContexts(SetOperatorContext);
		} else {
			return this.getRuleContext(i, SetOperatorContext);
		}
	}
	public atomSelectStatement(): AtomSelectStatementContext[];
	public atomSelectStatement(i: number): AtomSelectStatementContext;
	public atomSelectStatement(i?: number): AtomSelectStatementContext | AtomSelectStatementContext[] {
		if (i === undefined) {
			return this.getRuleContexts(AtomSelectStatementContext);
		} else {
			return this.getRuleContext(i, AtomSelectStatementContext);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_setOpSelectStatement; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterSetOpSelectStatement) {
			listener.enterSetOpSelectStatement(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitSetOpSelectStatement) {
			listener.exitSetOpSelectStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitSetOpSelectStatement) {
			return visitor.visitSetOpSelectStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class SelectStatementWithCTEContext extends ParserRuleContext {
	public _w!: WithClauseContext;
	public selectStatement(): SelectStatementContext {
		return this.getRuleContext(0, SelectStatementContext);
	}
	public withClause(): WithClauseContext | undefined {
		return this.tryGetRuleContext(0, WithClauseContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_selectStatementWithCTE; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterSelectStatementWithCTE) {
			listener.enterSelectStatementWithCTE(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitSelectStatementWithCTE) {
			listener.exitSelectStatementWithCTE(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitSelectStatementWithCTE) {
			return visitor.visitSelectStatementWithCTE(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class BodyContext extends ParserRuleContext {
	public insertClause(): InsertClauseContext | undefined {
		return this.tryGetRuleContext(0, InsertClauseContext);
	}
	public selectClause(): SelectClauseContext {
		return this.getRuleContext(0, SelectClauseContext);
	}
	public lateralView(): LateralViewContext | undefined {
		return this.tryGetRuleContext(0, LateralViewContext);
	}
	public whereClause(): WhereClauseContext | undefined {
		return this.tryGetRuleContext(0, WhereClauseContext);
	}
	public groupByClause(): GroupByClauseContext | undefined {
		return this.tryGetRuleContext(0, GroupByClauseContext);
	}
	public havingClause(): HavingClauseContext | undefined {
		return this.tryGetRuleContext(0, HavingClauseContext);
	}
	public window_clause(): Window_clauseContext | undefined {
		return this.tryGetRuleContext(0, Window_clauseContext);
	}
	public qualifyClause(): QualifyClauseContext | undefined {
		return this.tryGetRuleContext(0, QualifyClauseContext);
	}
	public orderByClause(): OrderByClauseContext | undefined {
		return this.tryGetRuleContext(0, OrderByClauseContext);
	}
	public clusterByClause(): ClusterByClauseContext | undefined {
		return this.tryGetRuleContext(0, ClusterByClauseContext);
	}
	public distributeByClause(): DistributeByClauseContext | undefined {
		return this.tryGetRuleContext(0, DistributeByClauseContext);
	}
	public sortByClause(): SortByClauseContext | undefined {
		return this.tryGetRuleContext(0, SortByClauseContext);
	}
	public limitClause(): LimitClauseContext | undefined {
		return this.tryGetRuleContext(0, LimitClauseContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_body; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterBody) {
			listener.enterBody(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitBody) {
			listener.exitBody(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitBody) {
			return visitor.visitBody(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class InsertClauseContext extends ParserRuleContext {
	public _targetCols!: ColumnNameListContext;
	public KW_INSERT(): TerminalNode { return this.getToken(HiveSqlParser.KW_INSERT, 0); }
	public KW_OVERWRITE(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_OVERWRITE, 0); }
	public destination(): DestinationContext | undefined {
		return this.tryGetRuleContext(0, DestinationContext);
	}
	public KW_INTO(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_INTO, 0); }
	public tableOrPartition(): TableOrPartitionContext | undefined {
		return this.tryGetRuleContext(0, TableOrPartitionContext);
	}
	public ifNotExists(): IfNotExistsContext | undefined {
		return this.tryGetRuleContext(0, IfNotExistsContext);
	}
	public KW_TABLE(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_TABLE, 0); }
	public LPAREN(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.LPAREN, 0); }
	public RPAREN(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.RPAREN, 0); }
	public columnNameList(): ColumnNameListContext | undefined {
		return this.tryGetRuleContext(0, ColumnNameListContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_insertClause; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterInsertClause) {
			listener.enterInsertClause(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitInsertClause) {
			listener.exitInsertClause(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitInsertClause) {
			return visitor.visitInsertClause(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class DestinationContext extends ParserRuleContext {
	public _local!: Token;
	public KW_DIRECTORY(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_DIRECTORY, 0); }
	public StringLiteral(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.StringLiteral, 0); }
	public tableRowFormat(): TableRowFormatContext | undefined {
		return this.tryGetRuleContext(0, TableRowFormatContext);
	}
	public tableFileFormat(): TableFileFormatContext | undefined {
		return this.tryGetRuleContext(0, TableFileFormatContext);
	}
	public KW_LOCAL(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_LOCAL, 0); }
	public KW_TABLE(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_TABLE, 0); }
	public tableOrPartition(): TableOrPartitionContext | undefined {
		return this.tryGetRuleContext(0, TableOrPartitionContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_destination; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterDestination) {
			listener.enterDestination(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitDestination) {
			listener.exitDestination(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitDestination) {
			return visitor.visitDestination(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class LimitClauseContext extends ParserRuleContext {
	public _offset!: Token;
	public _num!: Token;
	public KW_LIMIT(): TerminalNode { return this.getToken(HiveSqlParser.KW_LIMIT, 0); }
	public KW_OFFSET(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_OFFSET, 0); }
	public Number(): TerminalNode[];
	public Number(i: number): TerminalNode;
	public Number(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(HiveSqlParser.Number);
		} else {
			return this.getToken(HiveSqlParser.Number, i);
		}
	}
	public COMMA(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.COMMA, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_limitClause; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterLimitClause) {
			listener.enterLimitClause(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitLimitClause) {
			listener.exitLimitClause(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitLimitClause) {
			return visitor.visitLimitClause(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class DeleteStatementContext extends ParserRuleContext {
	public KW_DELETE(): TerminalNode { return this.getToken(HiveSqlParser.KW_DELETE, 0); }
	public KW_FROM(): TerminalNode { return this.getToken(HiveSqlParser.KW_FROM, 0); }
	public tableName(): TableNameContext {
		return this.getRuleContext(0, TableNameContext);
	}
	public whereClause(): WhereClauseContext | undefined {
		return this.tryGetRuleContext(0, WhereClauseContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_deleteStatement; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterDeleteStatement) {
			listener.enterDeleteStatement(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitDeleteStatement) {
			listener.exitDeleteStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitDeleteStatement) {
			return visitor.visitDeleteStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ColumnAssignmentClauseContext extends ParserRuleContext {
	public columnName(): ColumnNameContext {
		return this.getRuleContext(0, ColumnNameContext);
	}
	public EQUAL(): TerminalNode { return this.getToken(HiveSqlParser.EQUAL, 0); }
	public precedencePlusExpressionOrDefault(): PrecedencePlusExpressionOrDefaultContext {
		return this.getRuleContext(0, PrecedencePlusExpressionOrDefaultContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_columnAssignmentClause; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterColumnAssignmentClause) {
			listener.enterColumnAssignmentClause(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitColumnAssignmentClause) {
			listener.exitColumnAssignmentClause(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitColumnAssignmentClause) {
			return visitor.visitColumnAssignmentClause(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class PrecedencePlusExpressionOrDefaultContext extends ParserRuleContext {
	public defaultValue(): DefaultValueContext | undefined {
		return this.tryGetRuleContext(0, DefaultValueContext);
	}
	public precedencePlusExpression(): PrecedencePlusExpressionContext | undefined {
		return this.tryGetRuleContext(0, PrecedencePlusExpressionContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_precedencePlusExpressionOrDefault; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterPrecedencePlusExpressionOrDefault) {
			listener.enterPrecedencePlusExpressionOrDefault(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitPrecedencePlusExpressionOrDefault) {
			listener.exitPrecedencePlusExpressionOrDefault(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitPrecedencePlusExpressionOrDefault) {
			return visitor.visitPrecedencePlusExpressionOrDefault(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class SetColumnsClauseContext extends ParserRuleContext {
	public KW_SET(): TerminalNode { return this.getToken(HiveSqlParser.KW_SET, 0); }
	public columnAssignmentClause(): ColumnAssignmentClauseContext[];
	public columnAssignmentClause(i: number): ColumnAssignmentClauseContext;
	public columnAssignmentClause(i?: number): ColumnAssignmentClauseContext | ColumnAssignmentClauseContext[] {
		if (i === undefined) {
			return this.getRuleContexts(ColumnAssignmentClauseContext);
		} else {
			return this.getRuleContext(i, ColumnAssignmentClauseContext);
		}
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(HiveSqlParser.COMMA);
		} else {
			return this.getToken(HiveSqlParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_setColumnsClause; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterSetColumnsClause) {
			listener.enterSetColumnsClause(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitSetColumnsClause) {
			listener.exitSetColumnsClause(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitSetColumnsClause) {
			return visitor.visitSetColumnsClause(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class UpdateStatementContext extends ParserRuleContext {
	public KW_UPDATE(): TerminalNode { return this.getToken(HiveSqlParser.KW_UPDATE, 0); }
	public tableName(): TableNameContext {
		return this.getRuleContext(0, TableNameContext);
	}
	public setColumnsClause(): SetColumnsClauseContext {
		return this.getRuleContext(0, SetColumnsClauseContext);
	}
	public whereClause(): WhereClauseContext | undefined {
		return this.tryGetRuleContext(0, WhereClauseContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_updateStatement; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterUpdateStatement) {
			listener.enterUpdateStatement(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitUpdateStatement) {
			listener.exitUpdateStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitUpdateStatement) {
			return visitor.visitUpdateStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class SqlTransactionStatementContext extends ParserRuleContext {
	public startTransactionStatement(): StartTransactionStatementContext | undefined {
		return this.tryGetRuleContext(0, StartTransactionStatementContext);
	}
	public commitStatement(): CommitStatementContext | undefined {
		return this.tryGetRuleContext(0, CommitStatementContext);
	}
	public rollbackStatement(): RollbackStatementContext | undefined {
		return this.tryGetRuleContext(0, RollbackStatementContext);
	}
	public setAutoCommitStatement(): SetAutoCommitStatementContext | undefined {
		return this.tryGetRuleContext(0, SetAutoCommitStatementContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_sqlTransactionStatement; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterSqlTransactionStatement) {
			listener.enterSqlTransactionStatement(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitSqlTransactionStatement) {
			listener.exitSqlTransactionStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitSqlTransactionStatement) {
			return visitor.visitSqlTransactionStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class StartTransactionStatementContext extends ParserRuleContext {
	public KW_START(): TerminalNode { return this.getToken(HiveSqlParser.KW_START, 0); }
	public KW_TRANSACTION(): TerminalNode { return this.getToken(HiveSqlParser.KW_TRANSACTION, 0); }
	public transactionMode(): TransactionModeContext[];
	public transactionMode(i: number): TransactionModeContext;
	public transactionMode(i?: number): TransactionModeContext | TransactionModeContext[] {
		if (i === undefined) {
			return this.getRuleContexts(TransactionModeContext);
		} else {
			return this.getRuleContext(i, TransactionModeContext);
		}
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(HiveSqlParser.COMMA);
		} else {
			return this.getToken(HiveSqlParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_startTransactionStatement; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterStartTransactionStatement) {
			listener.enterStartTransactionStatement(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitStartTransactionStatement) {
			listener.exitStartTransactionStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitStartTransactionStatement) {
			return visitor.visitStartTransactionStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class TransactionModeContext extends ParserRuleContext {
	public isolationLevel(): IsolationLevelContext | undefined {
		return this.tryGetRuleContext(0, IsolationLevelContext);
	}
	public transactionAccessMode(): TransactionAccessModeContext | undefined {
		return this.tryGetRuleContext(0, TransactionAccessModeContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_transactionMode; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterTransactionMode) {
			listener.enterTransactionMode(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitTransactionMode) {
			listener.exitTransactionMode(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitTransactionMode) {
			return visitor.visitTransactionMode(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class TransactionAccessModeContext extends ParserRuleContext {
	public KW_READ(): TerminalNode { return this.getToken(HiveSqlParser.KW_READ, 0); }
	public KW_ONLY(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_ONLY, 0); }
	public KW_WRITE(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_WRITE, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_transactionAccessMode; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterTransactionAccessMode) {
			listener.enterTransactionAccessMode(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitTransactionAccessMode) {
			listener.exitTransactionAccessMode(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitTransactionAccessMode) {
			return visitor.visitTransactionAccessMode(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class IsolationLevelContext extends ParserRuleContext {
	public KW_ISOLATION(): TerminalNode { return this.getToken(HiveSqlParser.KW_ISOLATION, 0); }
	public KW_LEVEL(): TerminalNode { return this.getToken(HiveSqlParser.KW_LEVEL, 0); }
	public levelOfIsolation(): LevelOfIsolationContext {
		return this.getRuleContext(0, LevelOfIsolationContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_isolationLevel; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterIsolationLevel) {
			listener.enterIsolationLevel(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitIsolationLevel) {
			listener.exitIsolationLevel(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitIsolationLevel) {
			return visitor.visitIsolationLevel(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class LevelOfIsolationContext extends ParserRuleContext {
	public KW_SNAPSHOT(): TerminalNode { return this.getToken(HiveSqlParser.KW_SNAPSHOT, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_levelOfIsolation; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterLevelOfIsolation) {
			listener.enterLevelOfIsolation(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitLevelOfIsolation) {
			listener.exitLevelOfIsolation(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitLevelOfIsolation) {
			return visitor.visitLevelOfIsolation(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class CommitStatementContext extends ParserRuleContext {
	public KW_COMMIT(): TerminalNode { return this.getToken(HiveSqlParser.KW_COMMIT, 0); }
	public KW_WORK(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_WORK, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_commitStatement; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterCommitStatement) {
			listener.enterCommitStatement(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitCommitStatement) {
			listener.exitCommitStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitCommitStatement) {
			return visitor.visitCommitStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class RollbackStatementContext extends ParserRuleContext {
	public KW_ROLLBACK(): TerminalNode { return this.getToken(HiveSqlParser.KW_ROLLBACK, 0); }
	public KW_WORK(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_WORK, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_rollbackStatement; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterRollbackStatement) {
			listener.enterRollbackStatement(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitRollbackStatement) {
			listener.exitRollbackStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitRollbackStatement) {
			return visitor.visitRollbackStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class SetAutoCommitStatementContext extends ParserRuleContext {
	public KW_SET(): TerminalNode { return this.getToken(HiveSqlParser.KW_SET, 0); }
	public KW_AUTOCOMMIT(): TerminalNode { return this.getToken(HiveSqlParser.KW_AUTOCOMMIT, 0); }
	public booleanValueTok(): BooleanValueTokContext {
		return this.getRuleContext(0, BooleanValueTokContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_setAutoCommitStatement; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterSetAutoCommitStatement) {
			listener.enterSetAutoCommitStatement(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitSetAutoCommitStatement) {
			listener.exitSetAutoCommitStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitSetAutoCommitStatement) {
			return visitor.visitSetAutoCommitStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class AbortTransactionStatementContext extends ParserRuleContext {
	public KW_ABORT(): TerminalNode { return this.getToken(HiveSqlParser.KW_ABORT, 0); }
	public KW_TRANSACTIONS(): TerminalNode { return this.getToken(HiveSqlParser.KW_TRANSACTIONS, 0); }
	public Number(): TerminalNode[];
	public Number(i: number): TerminalNode;
	public Number(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(HiveSqlParser.Number);
		} else {
			return this.getToken(HiveSqlParser.Number, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_abortTransactionStatement; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterAbortTransactionStatement) {
			listener.enterAbortTransactionStatement(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitAbortTransactionStatement) {
			listener.exitAbortTransactionStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitAbortTransactionStatement) {
			return visitor.visitAbortTransactionStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class AbortCompactionStatementContext extends ParserRuleContext {
	public KW_ABORT(): TerminalNode { return this.getToken(HiveSqlParser.KW_ABORT, 0); }
	public KW_COMPACTIONS(): TerminalNode { return this.getToken(HiveSqlParser.KW_COMPACTIONS, 0); }
	public Number(): TerminalNode[];
	public Number(i: number): TerminalNode;
	public Number(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(HiveSqlParser.Number);
		} else {
			return this.getToken(HiveSqlParser.Number, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_abortCompactionStatement; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterAbortCompactionStatement) {
			listener.enterAbortCompactionStatement(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitAbortCompactionStatement) {
			listener.exitAbortCompactionStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitAbortCompactionStatement) {
			return visitor.visitAbortCompactionStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class MergeStatementContext extends ParserRuleContext {
	public KW_MERGE(): TerminalNode { return this.getToken(HiveSqlParser.KW_MERGE, 0); }
	public KW_INTO(): TerminalNode { return this.getToken(HiveSqlParser.KW_INTO, 0); }
	public tableName(): TableNameContext {
		return this.getRuleContext(0, TableNameContext);
	}
	public KW_USING(): TerminalNode { return this.getToken(HiveSqlParser.KW_USING, 0); }
	public joinSourcePart(): JoinSourcePartContext {
		return this.getRuleContext(0, JoinSourcePartContext);
	}
	public KW_ON(): TerminalNode { return this.getToken(HiveSqlParser.KW_ON, 0); }
	public expression(): ExpressionContext {
		return this.getRuleContext(0, ExpressionContext);
	}
	public whenClauses(): WhenClausesContext {
		return this.getRuleContext(0, WhenClausesContext);
	}
	public QUERY_HINT(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.QUERY_HINT, 0); }
	public id_(): Id_Context | undefined {
		return this.tryGetRuleContext(0, Id_Context);
	}
	public KW_AS(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_AS, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_mergeStatement; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterMergeStatement) {
			listener.enterMergeStatement(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitMergeStatement) {
			listener.exitMergeStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitMergeStatement) {
			return visitor.visitMergeStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class WhenClausesContext extends ParserRuleContext {
	public whenMatchedAndClause(): WhenMatchedAndClauseContext[];
	public whenMatchedAndClause(i: number): WhenMatchedAndClauseContext;
	public whenMatchedAndClause(i?: number): WhenMatchedAndClauseContext | WhenMatchedAndClauseContext[] {
		if (i === undefined) {
			return this.getRuleContexts(WhenMatchedAndClauseContext);
		} else {
			return this.getRuleContext(i, WhenMatchedAndClauseContext);
		}
	}
	public whenMatchedThenClause(): WhenMatchedThenClauseContext[];
	public whenMatchedThenClause(i: number): WhenMatchedThenClauseContext;
	public whenMatchedThenClause(i?: number): WhenMatchedThenClauseContext | WhenMatchedThenClauseContext[] {
		if (i === undefined) {
			return this.getRuleContexts(WhenMatchedThenClauseContext);
		} else {
			return this.getRuleContext(i, WhenMatchedThenClauseContext);
		}
	}
	public whenNotMatchedClause(): WhenNotMatchedClauseContext | undefined {
		return this.tryGetRuleContext(0, WhenNotMatchedClauseContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_whenClauses; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterWhenClauses) {
			listener.enterWhenClauses(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitWhenClauses) {
			listener.exitWhenClauses(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitWhenClauses) {
			return visitor.visitWhenClauses(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class WhenNotMatchedClauseContext extends ParserRuleContext {
	public _targetCols!: ColumnParenthesesListContext;
	public KW_WHEN(): TerminalNode { return this.getToken(HiveSqlParser.KW_WHEN, 0); }
	public KW_NOT(): TerminalNode { return this.getToken(HiveSqlParser.KW_NOT, 0); }
	public KW_MATCHED(): TerminalNode { return this.getToken(HiveSqlParser.KW_MATCHED, 0); }
	public KW_THEN(): TerminalNode { return this.getToken(HiveSqlParser.KW_THEN, 0); }
	public KW_INSERT(): TerminalNode { return this.getToken(HiveSqlParser.KW_INSERT, 0); }
	public KW_VALUES(): TerminalNode { return this.getToken(HiveSqlParser.KW_VALUES, 0); }
	public valueRowConstructor(): ValueRowConstructorContext {
		return this.getRuleContext(0, ValueRowConstructorContext);
	}
	public KW_AND(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_AND, 0); }
	public expression(): ExpressionContext | undefined {
		return this.tryGetRuleContext(0, ExpressionContext);
	}
	public columnParenthesesList(): ColumnParenthesesListContext | undefined {
		return this.tryGetRuleContext(0, ColumnParenthesesListContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_whenNotMatchedClause; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterWhenNotMatchedClause) {
			listener.enterWhenNotMatchedClause(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitWhenNotMatchedClause) {
			listener.exitWhenNotMatchedClause(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitWhenNotMatchedClause) {
			return visitor.visitWhenNotMatchedClause(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class WhenMatchedAndClauseContext extends ParserRuleContext {
	public KW_WHEN(): TerminalNode { return this.getToken(HiveSqlParser.KW_WHEN, 0); }
	public KW_MATCHED(): TerminalNode { return this.getToken(HiveSqlParser.KW_MATCHED, 0); }
	public KW_AND(): TerminalNode { return this.getToken(HiveSqlParser.KW_AND, 0); }
	public expression(): ExpressionContext {
		return this.getRuleContext(0, ExpressionContext);
	}
	public KW_THEN(): TerminalNode { return this.getToken(HiveSqlParser.KW_THEN, 0); }
	public updateOrDelete(): UpdateOrDeleteContext {
		return this.getRuleContext(0, UpdateOrDeleteContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_whenMatchedAndClause; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterWhenMatchedAndClause) {
			listener.enterWhenMatchedAndClause(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitWhenMatchedAndClause) {
			listener.exitWhenMatchedAndClause(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitWhenMatchedAndClause) {
			return visitor.visitWhenMatchedAndClause(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class WhenMatchedThenClauseContext extends ParserRuleContext {
	public KW_WHEN(): TerminalNode { return this.getToken(HiveSqlParser.KW_WHEN, 0); }
	public KW_MATCHED(): TerminalNode { return this.getToken(HiveSqlParser.KW_MATCHED, 0); }
	public KW_THEN(): TerminalNode { return this.getToken(HiveSqlParser.KW_THEN, 0); }
	public updateOrDelete(): UpdateOrDeleteContext {
		return this.getRuleContext(0, UpdateOrDeleteContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_whenMatchedThenClause; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterWhenMatchedThenClause) {
			listener.enterWhenMatchedThenClause(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitWhenMatchedThenClause) {
			listener.exitWhenMatchedThenClause(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitWhenMatchedThenClause) {
			return visitor.visitWhenMatchedThenClause(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class UpdateOrDeleteContext extends ParserRuleContext {
	public KW_UPDATE(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_UPDATE, 0); }
	public setColumnsClause(): SetColumnsClauseContext | undefined {
		return this.tryGetRuleContext(0, SetColumnsClauseContext);
	}
	public KW_DELETE(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_DELETE, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_updateOrDelete; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterUpdateOrDelete) {
			listener.enterUpdateOrDelete(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitUpdateOrDelete) {
			listener.exitUpdateOrDelete(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitUpdateOrDelete) {
			return visitor.visitUpdateOrDelete(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class KillQueryStatementContext extends ParserRuleContext {
	public KW_KILL(): TerminalNode { return this.getToken(HiveSqlParser.KW_KILL, 0); }
	public KW_QUERY(): TerminalNode { return this.getToken(HiveSqlParser.KW_QUERY, 0); }
	public StringLiteral(): TerminalNode[];
	public StringLiteral(i: number): TerminalNode;
	public StringLiteral(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(HiveSqlParser.StringLiteral);
		} else {
			return this.getToken(HiveSqlParser.StringLiteral, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_killQueryStatement; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterKillQueryStatement) {
			listener.enterKillQueryStatement(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitKillQueryStatement) {
			listener.exitKillQueryStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitKillQueryStatement) {
			return visitor.visitKillQueryStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class CompactionIdContext extends ParserRuleContext {
	public _compactId!: Token;
	public KW_COMPACT_ID(): TerminalNode { return this.getToken(HiveSqlParser.KW_COMPACT_ID, 0); }
	public EQUAL(): TerminalNode { return this.getToken(HiveSqlParser.EQUAL, 0); }
	public Number(): TerminalNode { return this.getToken(HiveSqlParser.Number, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_compactionId; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterCompactionId) {
			listener.enterCompactionId(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitCompactionId) {
			listener.exitCompactionId(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitCompactionId) {
			return visitor.visitCompactionId(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class CompactionPoolContext extends ParserRuleContext {
	public _poolName!: Token;
	public KW_POOL(): TerminalNode { return this.getToken(HiveSqlParser.KW_POOL, 0); }
	public StringLiteral(): TerminalNode { return this.getToken(HiveSqlParser.StringLiteral, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_compactionPool; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterCompactionPool) {
			listener.enterCompactionPool(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitCompactionPool) {
			listener.exitCompactionPool(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitCompactionPool) {
			return visitor.visitCompactionPool(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class CompactionTypeContext extends ParserRuleContext {
	public _compactType!: Token;
	public KW_TYPE(): TerminalNode { return this.getToken(HiveSqlParser.KW_TYPE, 0); }
	public StringLiteral(): TerminalNode { return this.getToken(HiveSqlParser.StringLiteral, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_compactionType; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterCompactionType) {
			listener.enterCompactionType(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitCompactionType) {
			listener.exitCompactionType(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitCompactionType) {
			return visitor.visitCompactionType(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class CompactionStatusContext extends ParserRuleContext {
	public _status!: Token;
	public KW_STATUS(): TerminalNode { return this.getToken(HiveSqlParser.KW_STATUS, 0); }
	public StringLiteral(): TerminalNode { return this.getToken(HiveSqlParser.StringLiteral, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_compactionStatus; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterCompactionStatus) {
			listener.enterCompactionStatus(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitCompactionStatus) {
			listener.exitCompactionStatus(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitCompactionStatus) {
			return visitor.visitCompactionStatus(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class AlterStatementContext extends ParserRuleContext {
	public _tableNameTree!: ViewNameContext;
	public KW_ALTER(): TerminalNode { return this.getToken(HiveSqlParser.KW_ALTER, 0); }
	public KW_TABLE(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_TABLE, 0); }
	public tableName(): TableNameContext | undefined {
		return this.tryGetRuleContext(0, TableNameContext);
	}
	public alterTableStatementSuffix(): AlterTableStatementSuffixContext | undefined {
		return this.tryGetRuleContext(0, AlterTableStatementSuffixContext);
	}
	public KW_VIEW(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_VIEW, 0); }
	public viewName(): ViewNameContext | undefined {
		return this.tryGetRuleContext(0, ViewNameContext);
	}
	public alterViewStatementSuffix(): AlterViewStatementSuffixContext | undefined {
		return this.tryGetRuleContext(0, AlterViewStatementSuffixContext);
	}
	public KW_MATERIALIZED(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_MATERIALIZED, 0); }
	public alterMaterializedViewStatementSuffix(): AlterMaterializedViewStatementSuffixContext | undefined {
		return this.tryGetRuleContext(0, AlterMaterializedViewStatementSuffixContext);
	}
	public db_schema(): Db_schemaContext | undefined {
		return this.tryGetRuleContext(0, Db_schemaContext);
	}
	public alterDatabaseStatementSuffix(): AlterDatabaseStatementSuffixContext | undefined {
		return this.tryGetRuleContext(0, AlterDatabaseStatementSuffixContext);
	}
	public KW_DATACONNECTOR(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_DATACONNECTOR, 0); }
	public alterDataConnectorStatementSuffix(): AlterDataConnectorStatementSuffixContext | undefined {
		return this.tryGetRuleContext(0, AlterDataConnectorStatementSuffixContext);
	}
	public KW_INDEX(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_INDEX, 0); }
	public alterIndexStatementSuffix(): AlterIndexStatementSuffixContext | undefined {
		return this.tryGetRuleContext(0, AlterIndexStatementSuffixContext);
	}
	public KW_AS(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_AS, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_alterStatement; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterAlterStatement) {
			listener.enterAlterStatement(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitAlterStatement) {
			listener.exitAlterStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitAlterStatement) {
			return visitor.visitAlterStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class AlterTableStatementSuffixContext extends ParserRuleContext {
	public alterStatementSuffixRename(): AlterStatementSuffixRenameContext | undefined {
		return this.tryGetRuleContext(0, AlterStatementSuffixRenameContext);
	}
	public alterStatementSuffixRecoverPartitions(): AlterStatementSuffixRecoverPartitionsContext | undefined {
		return this.tryGetRuleContext(0, AlterStatementSuffixRecoverPartitionsContext);
	}
	public alterStatementSuffixDropPartitions(): AlterStatementSuffixDropPartitionsContext | undefined {
		return this.tryGetRuleContext(0, AlterStatementSuffixDropPartitionsContext);
	}
	public alterStatementSuffixAddPartitions(): AlterStatementSuffixAddPartitionsContext | undefined {
		return this.tryGetRuleContext(0, AlterStatementSuffixAddPartitionsContext);
	}
	public alterStatementSuffixTouch(): AlterStatementSuffixTouchContext | undefined {
		return this.tryGetRuleContext(0, AlterStatementSuffixTouchContext);
	}
	public alterStatementSuffixArchive(): AlterStatementSuffixArchiveContext | undefined {
		return this.tryGetRuleContext(0, AlterStatementSuffixArchiveContext);
	}
	public alterStatementSuffixUnArchive(): AlterStatementSuffixUnArchiveContext | undefined {
		return this.tryGetRuleContext(0, AlterStatementSuffixUnArchiveContext);
	}
	public alterStatementSuffixProperties(): AlterStatementSuffixPropertiesContext | undefined {
		return this.tryGetRuleContext(0, AlterStatementSuffixPropertiesContext);
	}
	public alterStatementSuffixSkewedby(): AlterStatementSuffixSkewedbyContext | undefined {
		return this.tryGetRuleContext(0, AlterStatementSuffixSkewedbyContext);
	}
	public alterStatementSuffixExchangePartition(): AlterStatementSuffixExchangePartitionContext | undefined {
		return this.tryGetRuleContext(0, AlterStatementSuffixExchangePartitionContext);
	}
	public alterStatementPartitionKeyType(): AlterStatementPartitionKeyTypeContext | undefined {
		return this.tryGetRuleContext(0, AlterStatementPartitionKeyTypeContext);
	}
	public alterStatementSuffixDropConstraint(): AlterStatementSuffixDropConstraintContext | undefined {
		return this.tryGetRuleContext(0, AlterStatementSuffixDropConstraintContext);
	}
	public alterStatementSuffixAddConstraint(): AlterStatementSuffixAddConstraintContext | undefined {
		return this.tryGetRuleContext(0, AlterStatementSuffixAddConstraintContext);
	}
	public alterTblPartitionStatementSuffix(): AlterTblPartitionStatementSuffixContext | undefined {
		return this.tryGetRuleContext(0, AlterTblPartitionStatementSuffixContext);
	}
	public partitionSpec(): PartitionSpecContext | undefined {
		return this.tryGetRuleContext(0, PartitionSpecContext);
	}
	public alterStatementSuffixSetOwner(): AlterStatementSuffixSetOwnerContext | undefined {
		return this.tryGetRuleContext(0, AlterStatementSuffixSetOwnerContext);
	}
	public alterStatementSuffixSetPartSpec(): AlterStatementSuffixSetPartSpecContext | undefined {
		return this.tryGetRuleContext(0, AlterStatementSuffixSetPartSpecContext);
	}
	public alterStatementSuffixExecute(): AlterStatementSuffixExecuteContext | undefined {
		return this.tryGetRuleContext(0, AlterStatementSuffixExecuteContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_alterTableStatementSuffix; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterAlterTableStatementSuffix) {
			listener.enterAlterTableStatementSuffix(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitAlterTableStatementSuffix) {
			listener.exitAlterTableStatementSuffix(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitAlterTableStatementSuffix) {
			return visitor.visitAlterTableStatementSuffix(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class AlterTblPartitionStatementSuffixContext extends ParserRuleContext {
	public alterStatementSuffixFileFormat(): AlterStatementSuffixFileFormatContext | undefined {
		return this.tryGetRuleContext(0, AlterStatementSuffixFileFormatContext);
	}
	public alterStatementSuffixLocation(): AlterStatementSuffixLocationContext | undefined {
		return this.tryGetRuleContext(0, AlterStatementSuffixLocationContext);
	}
	public alterStatementSuffixMergeFiles(): AlterStatementSuffixMergeFilesContext | undefined {
		return this.tryGetRuleContext(0, AlterStatementSuffixMergeFilesContext);
	}
	public alterStatementSuffixSerdeProperties(): AlterStatementSuffixSerdePropertiesContext | undefined {
		return this.tryGetRuleContext(0, AlterStatementSuffixSerdePropertiesContext);
	}
	public alterStatementSuffixRenamePart(): AlterStatementSuffixRenamePartContext | undefined {
		return this.tryGetRuleContext(0, AlterStatementSuffixRenamePartContext);
	}
	public alterStatementSuffixBucketNum(): AlterStatementSuffixBucketNumContext | undefined {
		return this.tryGetRuleContext(0, AlterStatementSuffixBucketNumContext);
	}
	public alterTblPartitionStatementSuffixSkewedLocation(): AlterTblPartitionStatementSuffixSkewedLocationContext | undefined {
		return this.tryGetRuleContext(0, AlterTblPartitionStatementSuffixSkewedLocationContext);
	}
	public alterStatementSuffixClusterbySortby(): AlterStatementSuffixClusterbySortbyContext | undefined {
		return this.tryGetRuleContext(0, AlterStatementSuffixClusterbySortbyContext);
	}
	public alterStatementSuffixCompact(): AlterStatementSuffixCompactContext | undefined {
		return this.tryGetRuleContext(0, AlterStatementSuffixCompactContext);
	}
	public alterStatementSuffixUpdateStatsCol(): AlterStatementSuffixUpdateStatsColContext | undefined {
		return this.tryGetRuleContext(0, AlterStatementSuffixUpdateStatsColContext);
	}
	public alterStatementSuffixUpdateStats(): AlterStatementSuffixUpdateStatsContext | undefined {
		return this.tryGetRuleContext(0, AlterStatementSuffixUpdateStatsContext);
	}
	public alterStatementSuffixRenameCol(): AlterStatementSuffixRenameColContext | undefined {
		return this.tryGetRuleContext(0, AlterStatementSuffixRenameColContext);
	}
	public alterStatementSuffixAddCol(): AlterStatementSuffixAddColContext | undefined {
		return this.tryGetRuleContext(0, AlterStatementSuffixAddColContext);
	}
	public alterStatementSuffixUpdateColumns(): AlterStatementSuffixUpdateColumnsContext | undefined {
		return this.tryGetRuleContext(0, AlterStatementSuffixUpdateColumnsContext);
	}
	public alterStatementSuffixProtections(): AlterStatementSuffixProtectionsContext | undefined {
		return this.tryGetRuleContext(0, AlterStatementSuffixProtectionsContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_alterTblPartitionStatementSuffix; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterAlterTblPartitionStatementSuffix) {
			listener.enterAlterTblPartitionStatementSuffix(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitAlterTblPartitionStatementSuffix) {
			listener.exitAlterTblPartitionStatementSuffix(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitAlterTblPartitionStatementSuffix) {
			return visitor.visitAlterTblPartitionStatementSuffix(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class AlterStatementPartitionKeyTypeContext extends ParserRuleContext {
	public KW_PARTITION(): TerminalNode { return this.getToken(HiveSqlParser.KW_PARTITION, 0); }
	public KW_COLUMN(): TerminalNode { return this.getToken(HiveSqlParser.KW_COLUMN, 0); }
	public LPAREN(): TerminalNode { return this.getToken(HiveSqlParser.LPAREN, 0); }
	public columnNameType(): ColumnNameTypeContext {
		return this.getRuleContext(0, ColumnNameTypeContext);
	}
	public RPAREN(): TerminalNode { return this.getToken(HiveSqlParser.RPAREN, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_alterStatementPartitionKeyType; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterAlterStatementPartitionKeyType) {
			listener.enterAlterStatementPartitionKeyType(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitAlterStatementPartitionKeyType) {
			listener.exitAlterStatementPartitionKeyType(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitAlterStatementPartitionKeyType) {
			return visitor.visitAlterStatementPartitionKeyType(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class AlterViewStatementSuffixContext extends ParserRuleContext {
	public alterViewSuffixProperties(): AlterViewSuffixPropertiesContext | undefined {
		return this.tryGetRuleContext(0, AlterViewSuffixPropertiesContext);
	}
	public alterStatementSuffixRename(): AlterStatementSuffixRenameContext | undefined {
		return this.tryGetRuleContext(0, AlterStatementSuffixRenameContext);
	}
	public alterStatementSuffixAddPartitions(): AlterStatementSuffixAddPartitionsContext | undefined {
		return this.tryGetRuleContext(0, AlterStatementSuffixAddPartitionsContext);
	}
	public alterStatementSuffixDropPartitions(): AlterStatementSuffixDropPartitionsContext | undefined {
		return this.tryGetRuleContext(0, AlterStatementSuffixDropPartitionsContext);
	}
	public selectStatementWithCTE(): SelectStatementWithCTEContext | undefined {
		return this.tryGetRuleContext(0, SelectStatementWithCTEContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_alterViewStatementSuffix; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterAlterViewStatementSuffix) {
			listener.enterAlterViewStatementSuffix(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitAlterViewStatementSuffix) {
			listener.exitAlterViewStatementSuffix(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitAlterViewStatementSuffix) {
			return visitor.visitAlterViewStatementSuffix(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class AlterMaterializedViewStatementSuffixContext extends ParserRuleContext {
	public alterMaterializedViewSuffixRewrite(): AlterMaterializedViewSuffixRewriteContext | undefined {
		return this.tryGetRuleContext(0, AlterMaterializedViewSuffixRewriteContext);
	}
	public alterMaterializedViewSuffixRebuild(): AlterMaterializedViewSuffixRebuildContext | undefined {
		return this.tryGetRuleContext(0, AlterMaterializedViewSuffixRebuildContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_alterMaterializedViewStatementSuffix; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterAlterMaterializedViewStatementSuffix) {
			listener.enterAlterMaterializedViewStatementSuffix(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitAlterMaterializedViewStatementSuffix) {
			listener.exitAlterMaterializedViewStatementSuffix(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitAlterMaterializedViewStatementSuffix) {
			return visitor.visitAlterMaterializedViewStatementSuffix(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class AlterMaterializedViewSuffixRewriteContext extends ParserRuleContext {
	public _mvRewriteFlag!: RewriteEnabledContext;
	public _mvRewriteFlag2!: RewriteDisabledContext;
	public rewriteEnabled(): RewriteEnabledContext | undefined {
		return this.tryGetRuleContext(0, RewriteEnabledContext);
	}
	public rewriteDisabled(): RewriteDisabledContext | undefined {
		return this.tryGetRuleContext(0, RewriteDisabledContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_alterMaterializedViewSuffixRewrite; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterAlterMaterializedViewSuffixRewrite) {
			listener.enterAlterMaterializedViewSuffixRewrite(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitAlterMaterializedViewSuffixRewrite) {
			listener.exitAlterMaterializedViewSuffixRewrite(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitAlterMaterializedViewSuffixRewrite) {
			return visitor.visitAlterMaterializedViewSuffixRewrite(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class AlterMaterializedViewSuffixRebuildContext extends ParserRuleContext {
	public KW_REBUILD(): TerminalNode { return this.getToken(HiveSqlParser.KW_REBUILD, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_alterMaterializedViewSuffixRebuild; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterAlterMaterializedViewSuffixRebuild) {
			listener.enterAlterMaterializedViewSuffixRebuild(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitAlterMaterializedViewSuffixRebuild) {
			listener.exitAlterMaterializedViewSuffixRebuild(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitAlterMaterializedViewSuffixRebuild) {
			return visitor.visitAlterMaterializedViewSuffixRebuild(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class AlterDatabaseStatementSuffixContext extends ParserRuleContext {
	public alterDatabaseSuffixProperties(): AlterDatabaseSuffixPropertiesContext | undefined {
		return this.tryGetRuleContext(0, AlterDatabaseSuffixPropertiesContext);
	}
	public alterDatabaseSuffixSetOwner(): AlterDatabaseSuffixSetOwnerContext | undefined {
		return this.tryGetRuleContext(0, AlterDatabaseSuffixSetOwnerContext);
	}
	public alterDatabaseSuffixSetLocation(): AlterDatabaseSuffixSetLocationContext | undefined {
		return this.tryGetRuleContext(0, AlterDatabaseSuffixSetLocationContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_alterDatabaseStatementSuffix; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterAlterDatabaseStatementSuffix) {
			listener.enterAlterDatabaseStatementSuffix(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitAlterDatabaseStatementSuffix) {
			listener.exitAlterDatabaseStatementSuffix(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitAlterDatabaseStatementSuffix) {
			return visitor.visitAlterDatabaseStatementSuffix(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class AlterDatabaseSuffixPropertiesContext extends ParserRuleContext {
	public _name!: DbSchemaNameContext;
	public KW_SET(): TerminalNode { return this.getToken(HiveSqlParser.KW_SET, 0); }
	public KW_DBPROPERTIES(): TerminalNode { return this.getToken(HiveSqlParser.KW_DBPROPERTIES, 0); }
	public dbProperties(): DbPropertiesContext {
		return this.getRuleContext(0, DbPropertiesContext);
	}
	public dbSchemaName(): DbSchemaNameContext {
		return this.getRuleContext(0, DbSchemaNameContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_alterDatabaseSuffixProperties; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterAlterDatabaseSuffixProperties) {
			listener.enterAlterDatabaseSuffixProperties(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitAlterDatabaseSuffixProperties) {
			listener.exitAlterDatabaseSuffixProperties(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitAlterDatabaseSuffixProperties) {
			return visitor.visitAlterDatabaseSuffixProperties(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class AlterDatabaseSuffixSetOwnerContext extends ParserRuleContext {
	public _dbName!: DbSchemaNameContext;
	public KW_SET(): TerminalNode { return this.getToken(HiveSqlParser.KW_SET, 0); }
	public KW_OWNER(): TerminalNode { return this.getToken(HiveSqlParser.KW_OWNER, 0); }
	public principalAlterName(): PrincipalAlterNameContext {
		return this.getRuleContext(0, PrincipalAlterNameContext);
	}
	public dbSchemaName(): DbSchemaNameContext {
		return this.getRuleContext(0, DbSchemaNameContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_alterDatabaseSuffixSetOwner; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterAlterDatabaseSuffixSetOwner) {
			listener.enterAlterDatabaseSuffixSetOwner(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitAlterDatabaseSuffixSetOwner) {
			listener.exitAlterDatabaseSuffixSetOwner(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitAlterDatabaseSuffixSetOwner) {
			return visitor.visitAlterDatabaseSuffixSetOwner(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class AlterDatabaseSuffixSetLocationContext extends ParserRuleContext {
	public _dbName!: DbSchemaNameContext;
	public _newLocation!: Token;
	public KW_SET(): TerminalNode { return this.getToken(HiveSqlParser.KW_SET, 0); }
	public dbSchemaName(): DbSchemaNameContext {
		return this.getRuleContext(0, DbSchemaNameContext);
	}
	public KW_LOCATION(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_LOCATION, 0); }
	public KW_MANAGEDLOCATION(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_MANAGEDLOCATION, 0); }
	public StringLiteral(): TerminalNode { return this.getToken(HiveSqlParser.StringLiteral, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_alterDatabaseSuffixSetLocation; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterAlterDatabaseSuffixSetLocation) {
			listener.enterAlterDatabaseSuffixSetLocation(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitAlterDatabaseSuffixSetLocation) {
			listener.exitAlterDatabaseSuffixSetLocation(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitAlterDatabaseSuffixSetLocation) {
			return visitor.visitAlterDatabaseSuffixSetLocation(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class AlterDatabaseSuffixSetManagedLocationContext extends ParserRuleContext {
	public _dbName!: DbSchemaNameContext;
	public _newLocation!: Token;
	public KW_SET(): TerminalNode { return this.getToken(HiveSqlParser.KW_SET, 0); }
	public KW_MANAGEDLOCATION(): TerminalNode { return this.getToken(HiveSqlParser.KW_MANAGEDLOCATION, 0); }
	public dbSchemaName(): DbSchemaNameContext {
		return this.getRuleContext(0, DbSchemaNameContext);
	}
	public StringLiteral(): TerminalNode { return this.getToken(HiveSqlParser.StringLiteral, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_alterDatabaseSuffixSetManagedLocation; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterAlterDatabaseSuffixSetManagedLocation) {
			listener.enterAlterDatabaseSuffixSetManagedLocation(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitAlterDatabaseSuffixSetManagedLocation) {
			listener.exitAlterDatabaseSuffixSetManagedLocation(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitAlterDatabaseSuffixSetManagedLocation) {
			return visitor.visitAlterDatabaseSuffixSetManagedLocation(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class AlterStatementSuffixRenameContext extends ParserRuleContext {
	public KW_RENAME(): TerminalNode { return this.getToken(HiveSqlParser.KW_RENAME, 0); }
	public KW_TO(): TerminalNode { return this.getToken(HiveSqlParser.KW_TO, 0); }
	public tableNameCreate(): TableNameCreateContext {
		return this.getRuleContext(0, TableNameCreateContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_alterStatementSuffixRename; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterAlterStatementSuffixRename) {
			listener.enterAlterStatementSuffixRename(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitAlterStatementSuffixRename) {
			listener.exitAlterStatementSuffixRename(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitAlterStatementSuffixRename) {
			return visitor.visitAlterStatementSuffixRename(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class AlterStatementSuffixAddColContext extends ParserRuleContext {
	public _add!: Token;
	public _replace!: Token;
	public KW_COLUMNS(): TerminalNode { return this.getToken(HiveSqlParser.KW_COLUMNS, 0); }
	public LPAREN(): TerminalNode { return this.getToken(HiveSqlParser.LPAREN, 0); }
	public columnNameTypeList(): ColumnNameTypeListContext {
		return this.getRuleContext(0, ColumnNameTypeListContext);
	}
	public RPAREN(): TerminalNode { return this.getToken(HiveSqlParser.RPAREN, 0); }
	public KW_ADD(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_ADD, 0); }
	public KW_REPLACE(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_REPLACE, 0); }
	public restrictOrCascade(): RestrictOrCascadeContext | undefined {
		return this.tryGetRuleContext(0, RestrictOrCascadeContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_alterStatementSuffixAddCol; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterAlterStatementSuffixAddCol) {
			listener.enterAlterStatementSuffixAddCol(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitAlterStatementSuffixAddCol) {
			listener.exitAlterStatementSuffixAddCol(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitAlterStatementSuffixAddCol) {
			return visitor.visitAlterStatementSuffixAddCol(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class AlterStatementSuffixAddConstraintContext extends ParserRuleContext {
	public _fk!: AlterForeignKeyWithNameContext;
	public KW_ADD(): TerminalNode { return this.getToken(HiveSqlParser.KW_ADD, 0); }
	public alterConstraintWithName(): AlterConstraintWithNameContext | undefined {
		return this.tryGetRuleContext(0, AlterConstraintWithNameContext);
	}
	public alterForeignKeyWithName(): AlterForeignKeyWithNameContext | undefined {
		return this.tryGetRuleContext(0, AlterForeignKeyWithNameContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_alterStatementSuffixAddConstraint; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterAlterStatementSuffixAddConstraint) {
			listener.enterAlterStatementSuffixAddConstraint(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitAlterStatementSuffixAddConstraint) {
			listener.exitAlterStatementSuffixAddConstraint(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitAlterStatementSuffixAddConstraint) {
			return visitor.visitAlterStatementSuffixAddConstraint(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class AlterStatementSuffixUpdateColumnsContext extends ParserRuleContext {
	public KW_UPDATE(): TerminalNode { return this.getToken(HiveSqlParser.KW_UPDATE, 0); }
	public KW_COLUMNS(): TerminalNode { return this.getToken(HiveSqlParser.KW_COLUMNS, 0); }
	public restrictOrCascade(): RestrictOrCascadeContext | undefined {
		return this.tryGetRuleContext(0, RestrictOrCascadeContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_alterStatementSuffixUpdateColumns; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterAlterStatementSuffixUpdateColumns) {
			listener.enterAlterStatementSuffixUpdateColumns(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitAlterStatementSuffixUpdateColumns) {
			listener.exitAlterStatementSuffixUpdateColumns(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitAlterStatementSuffixUpdateColumns) {
			return visitor.visitAlterStatementSuffixUpdateColumns(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class AlterStatementSuffixProtectionsContext extends ParserRuleContext {
	public enableSpecification(): EnableSpecificationContext {
		return this.getRuleContext(0, EnableSpecificationContext);
	}
	public KW_NO_DROP(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_NO_DROP, 0); }
	public KW_CASCADE(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_CASCADE, 0); }
	public KW_OFFLINE(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_OFFLINE, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_alterStatementSuffixProtections; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterAlterStatementSuffixProtections) {
			listener.enterAlterStatementSuffixProtections(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitAlterStatementSuffixProtections) {
			listener.exitAlterStatementSuffixProtections(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitAlterStatementSuffixProtections) {
			return visitor.visitAlterStatementSuffixProtections(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class AlterStatementSuffixDropConstraintContext extends ParserRuleContext {
	public _cName!: Id_Context;
	public KW_DROP(): TerminalNode { return this.getToken(HiveSqlParser.KW_DROP, 0); }
	public KW_CONSTRAINT(): TerminalNode { return this.getToken(HiveSqlParser.KW_CONSTRAINT, 0); }
	public id_(): Id_Context {
		return this.getRuleContext(0, Id_Context);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_alterStatementSuffixDropConstraint; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterAlterStatementSuffixDropConstraint) {
			listener.enterAlterStatementSuffixDropConstraint(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitAlterStatementSuffixDropConstraint) {
			listener.exitAlterStatementSuffixDropConstraint(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitAlterStatementSuffixDropConstraint) {
			return visitor.visitAlterStatementSuffixDropConstraint(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class AlterStatementSuffixRenameColContext extends ParserRuleContext {
	public _oldName!: ColumnNameContext;
	public _newName!: ColumnNameCreateContext;
	public _comment!: Token;
	public KW_CHANGE(): TerminalNode { return this.getToken(HiveSqlParser.KW_CHANGE, 0); }
	public colType(): ColTypeContext {
		return this.getRuleContext(0, ColTypeContext);
	}
	public columnName(): ColumnNameContext {
		return this.getRuleContext(0, ColumnNameContext);
	}
	public columnNameCreate(): ColumnNameCreateContext {
		return this.getRuleContext(0, ColumnNameCreateContext);
	}
	public KW_COLUMN(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_COLUMN, 0); }
	public alterColumnConstraint(): AlterColumnConstraintContext | undefined {
		return this.tryGetRuleContext(0, AlterColumnConstraintContext);
	}
	public KW_COMMENT(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_COMMENT, 0); }
	public alterStatementChangeColPosition(): AlterStatementChangeColPositionContext | undefined {
		return this.tryGetRuleContext(0, AlterStatementChangeColPositionContext);
	}
	public restrictOrCascade(): RestrictOrCascadeContext | undefined {
		return this.tryGetRuleContext(0, RestrictOrCascadeContext);
	}
	public StringLiteral(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.StringLiteral, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_alterStatementSuffixRenameCol; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterAlterStatementSuffixRenameCol) {
			listener.enterAlterStatementSuffixRenameCol(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitAlterStatementSuffixRenameCol) {
			listener.exitAlterStatementSuffixRenameCol(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitAlterStatementSuffixRenameCol) {
			return visitor.visitAlterStatementSuffixRenameCol(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class AlterStatementSuffixUpdateStatsColContext extends ParserRuleContext {
	public _colName!: ColumnNameContext;
	public _comment!: Token;
	public KW_UPDATE(): TerminalNode { return this.getToken(HiveSqlParser.KW_UPDATE, 0); }
	public KW_STATISTICS(): TerminalNode { return this.getToken(HiveSqlParser.KW_STATISTICS, 0); }
	public KW_FOR(): TerminalNode { return this.getToken(HiveSqlParser.KW_FOR, 0); }
	public KW_SET(): TerminalNode { return this.getToken(HiveSqlParser.KW_SET, 0); }
	public tableProperties(): TablePropertiesContext {
		return this.getRuleContext(0, TablePropertiesContext);
	}
	public columnName(): ColumnNameContext {
		return this.getRuleContext(0, ColumnNameContext);
	}
	public KW_COLUMN(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_COLUMN, 0); }
	public KW_COMMENT(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_COMMENT, 0); }
	public StringLiteral(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.StringLiteral, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_alterStatementSuffixUpdateStatsCol; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterAlterStatementSuffixUpdateStatsCol) {
			listener.enterAlterStatementSuffixUpdateStatsCol(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitAlterStatementSuffixUpdateStatsCol) {
			listener.exitAlterStatementSuffixUpdateStatsCol(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitAlterStatementSuffixUpdateStatsCol) {
			return visitor.visitAlterStatementSuffixUpdateStatsCol(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class AlterStatementSuffixUpdateStatsContext extends ParserRuleContext {
	public KW_UPDATE(): TerminalNode { return this.getToken(HiveSqlParser.KW_UPDATE, 0); }
	public KW_STATISTICS(): TerminalNode { return this.getToken(HiveSqlParser.KW_STATISTICS, 0); }
	public KW_SET(): TerminalNode { return this.getToken(HiveSqlParser.KW_SET, 0); }
	public tableProperties(): TablePropertiesContext {
		return this.getRuleContext(0, TablePropertiesContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_alterStatementSuffixUpdateStats; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterAlterStatementSuffixUpdateStats) {
			listener.enterAlterStatementSuffixUpdateStats(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitAlterStatementSuffixUpdateStats) {
			listener.exitAlterStatementSuffixUpdateStats(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitAlterStatementSuffixUpdateStats) {
			return visitor.visitAlterStatementSuffixUpdateStats(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class AlterStatementChangeColPositionContext extends ParserRuleContext {
	public _first!: Token;
	public _afterCol!: Id_Context;
	public KW_FIRST(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_FIRST, 0); }
	public KW_AFTER(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_AFTER, 0); }
	public id_(): Id_Context | undefined {
		return this.tryGetRuleContext(0, Id_Context);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_alterStatementChangeColPosition; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterAlterStatementChangeColPosition) {
			listener.enterAlterStatementChangeColPosition(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitAlterStatementChangeColPosition) {
			listener.exitAlterStatementChangeColPosition(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitAlterStatementChangeColPosition) {
			return visitor.visitAlterStatementChangeColPosition(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class AlterStatementSuffixAddPartitionsContext extends ParserRuleContext {
	public KW_ADD(): TerminalNode { return this.getToken(HiveSqlParser.KW_ADD, 0); }
	public ifNotExists(): IfNotExistsContext | undefined {
		return this.tryGetRuleContext(0, IfNotExistsContext);
	}
	public alterStatementSuffixAddPartitionsElement(): AlterStatementSuffixAddPartitionsElementContext[];
	public alterStatementSuffixAddPartitionsElement(i: number): AlterStatementSuffixAddPartitionsElementContext;
	public alterStatementSuffixAddPartitionsElement(i?: number): AlterStatementSuffixAddPartitionsElementContext | AlterStatementSuffixAddPartitionsElementContext[] {
		if (i === undefined) {
			return this.getRuleContexts(AlterStatementSuffixAddPartitionsElementContext);
		} else {
			return this.getRuleContext(i, AlterStatementSuffixAddPartitionsElementContext);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_alterStatementSuffixAddPartitions; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterAlterStatementSuffixAddPartitions) {
			listener.enterAlterStatementSuffixAddPartitions(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitAlterStatementSuffixAddPartitions) {
			listener.exitAlterStatementSuffixAddPartitions(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitAlterStatementSuffixAddPartitions) {
			return visitor.visitAlterStatementSuffixAddPartitions(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class AlterStatementSuffixAddPartitionsElementContext extends ParserRuleContext {
	public partitionSpec(): PartitionSpecContext {
		return this.getRuleContext(0, PartitionSpecContext);
	}
	public partitionLocation(): PartitionLocationContext | undefined {
		return this.tryGetRuleContext(0, PartitionLocationContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_alterStatementSuffixAddPartitionsElement; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterAlterStatementSuffixAddPartitionsElement) {
			listener.enterAlterStatementSuffixAddPartitionsElement(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitAlterStatementSuffixAddPartitionsElement) {
			listener.exitAlterStatementSuffixAddPartitionsElement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitAlterStatementSuffixAddPartitionsElement) {
			return visitor.visitAlterStatementSuffixAddPartitionsElement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class AlterStatementSuffixTouchContext extends ParserRuleContext {
	public KW_TOUCH(): TerminalNode { return this.getToken(HiveSqlParser.KW_TOUCH, 0); }
	public partitionSpec(): PartitionSpecContext[];
	public partitionSpec(i: number): PartitionSpecContext;
	public partitionSpec(i?: number): PartitionSpecContext | PartitionSpecContext[] {
		if (i === undefined) {
			return this.getRuleContexts(PartitionSpecContext);
		} else {
			return this.getRuleContext(i, PartitionSpecContext);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_alterStatementSuffixTouch; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterAlterStatementSuffixTouch) {
			listener.enterAlterStatementSuffixTouch(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitAlterStatementSuffixTouch) {
			listener.exitAlterStatementSuffixTouch(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitAlterStatementSuffixTouch) {
			return visitor.visitAlterStatementSuffixTouch(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class AlterStatementSuffixArchiveContext extends ParserRuleContext {
	public KW_ARCHIVE(): TerminalNode { return this.getToken(HiveSqlParser.KW_ARCHIVE, 0); }
	public partitionSpec(): PartitionSpecContext[];
	public partitionSpec(i: number): PartitionSpecContext;
	public partitionSpec(i?: number): PartitionSpecContext | PartitionSpecContext[] {
		if (i === undefined) {
			return this.getRuleContexts(PartitionSpecContext);
		} else {
			return this.getRuleContext(i, PartitionSpecContext);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_alterStatementSuffixArchive; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterAlterStatementSuffixArchive) {
			listener.enterAlterStatementSuffixArchive(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitAlterStatementSuffixArchive) {
			listener.exitAlterStatementSuffixArchive(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitAlterStatementSuffixArchive) {
			return visitor.visitAlterStatementSuffixArchive(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class AlterStatementSuffixUnArchiveContext extends ParserRuleContext {
	public KW_UNARCHIVE(): TerminalNode { return this.getToken(HiveSqlParser.KW_UNARCHIVE, 0); }
	public partitionSpec(): PartitionSpecContext[];
	public partitionSpec(i: number): PartitionSpecContext;
	public partitionSpec(i?: number): PartitionSpecContext | PartitionSpecContext[] {
		if (i === undefined) {
			return this.getRuleContexts(PartitionSpecContext);
		} else {
			return this.getRuleContext(i, PartitionSpecContext);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_alterStatementSuffixUnArchive; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterAlterStatementSuffixUnArchive) {
			listener.enterAlterStatementSuffixUnArchive(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitAlterStatementSuffixUnArchive) {
			listener.exitAlterStatementSuffixUnArchive(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitAlterStatementSuffixUnArchive) {
			return visitor.visitAlterStatementSuffixUnArchive(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class PartitionLocationContext extends ParserRuleContext {
	public _locn!: Token;
	public KW_LOCATION(): TerminalNode { return this.getToken(HiveSqlParser.KW_LOCATION, 0); }
	public StringLiteral(): TerminalNode { return this.getToken(HiveSqlParser.StringLiteral, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_partitionLocation; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterPartitionLocation) {
			listener.enterPartitionLocation(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitPartitionLocation) {
			listener.exitPartitionLocation(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitPartitionLocation) {
			return visitor.visitPartitionLocation(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class AlterStatementSuffixRecoverPartitionsContext extends ParserRuleContext {
	public KW_RECOVER(): TerminalNode { return this.getToken(HiveSqlParser.KW_RECOVER, 0); }
	public KW_PARTITIONS(): TerminalNode { return this.getToken(HiveSqlParser.KW_PARTITIONS, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_alterStatementSuffixRecoverPartitions; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterAlterStatementSuffixRecoverPartitions) {
			listener.enterAlterStatementSuffixRecoverPartitions(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitAlterStatementSuffixRecoverPartitions) {
			listener.exitAlterStatementSuffixRecoverPartitions(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitAlterStatementSuffixRecoverPartitions) {
			return visitor.visitAlterStatementSuffixRecoverPartitions(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class AlterStatementSuffixDropPartitionsContext extends ParserRuleContext {
	public KW_DROP(): TerminalNode { return this.getToken(HiveSqlParser.KW_DROP, 0); }
	public KW_PARTITION(): TerminalNode[];
	public KW_PARTITION(i: number): TerminalNode;
	public KW_PARTITION(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(HiveSqlParser.KW_PARTITION);
		} else {
			return this.getToken(HiveSqlParser.KW_PARTITION, i);
		}
	}
	public partitionSelectorSpec(): PartitionSelectorSpecContext[];
	public partitionSelectorSpec(i: number): PartitionSelectorSpecContext;
	public partitionSelectorSpec(i?: number): PartitionSelectorSpecContext | PartitionSelectorSpecContext[] {
		if (i === undefined) {
			return this.getRuleContexts(PartitionSelectorSpecContext);
		} else {
			return this.getRuleContext(i, PartitionSelectorSpecContext);
		}
	}
	public ifExists(): IfExistsContext | undefined {
		return this.tryGetRuleContext(0, IfExistsContext);
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(HiveSqlParser.COMMA);
		} else {
			return this.getToken(HiveSqlParser.COMMA, i);
		}
	}
	public dropPartitionsIgnoreClause(): DropPartitionsIgnoreClauseContext | undefined {
		return this.tryGetRuleContext(0, DropPartitionsIgnoreClauseContext);
	}
	public KW_PURGE(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_PURGE, 0); }
	public replicationClause(): ReplicationClauseContext | undefined {
		return this.tryGetRuleContext(0, ReplicationClauseContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_alterStatementSuffixDropPartitions; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterAlterStatementSuffixDropPartitions) {
			listener.enterAlterStatementSuffixDropPartitions(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitAlterStatementSuffixDropPartitions) {
			listener.exitAlterStatementSuffixDropPartitions(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitAlterStatementSuffixDropPartitions) {
			return visitor.visitAlterStatementSuffixDropPartitions(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class AlterStatementSuffixPropertiesContext extends ParserRuleContext {
	public KW_SET(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_SET, 0); }
	public KW_TBLPROPERTIES(): TerminalNode { return this.getToken(HiveSqlParser.KW_TBLPROPERTIES, 0); }
	public tableProperties(): TablePropertiesContext {
		return this.getRuleContext(0, TablePropertiesContext);
	}
	public KW_UNSET(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_UNSET, 0); }
	public ifExists(): IfExistsContext | undefined {
		return this.tryGetRuleContext(0, IfExistsContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_alterStatementSuffixProperties; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterAlterStatementSuffixProperties) {
			listener.enterAlterStatementSuffixProperties(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitAlterStatementSuffixProperties) {
			listener.exitAlterStatementSuffixProperties(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitAlterStatementSuffixProperties) {
			return visitor.visitAlterStatementSuffixProperties(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class AlterViewSuffixPropertiesContext extends ParserRuleContext {
	public KW_SET(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_SET, 0); }
	public KW_TBLPROPERTIES(): TerminalNode { return this.getToken(HiveSqlParser.KW_TBLPROPERTIES, 0); }
	public tableProperties(): TablePropertiesContext {
		return this.getRuleContext(0, TablePropertiesContext);
	}
	public KW_UNSET(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_UNSET, 0); }
	public ifExists(): IfExistsContext | undefined {
		return this.tryGetRuleContext(0, IfExistsContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_alterViewSuffixProperties; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterAlterViewSuffixProperties) {
			listener.enterAlterViewSuffixProperties(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitAlterViewSuffixProperties) {
			listener.exitAlterViewSuffixProperties(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitAlterViewSuffixProperties) {
			return visitor.visitAlterViewSuffixProperties(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class AlterStatementSuffixSerdePropertiesContext extends ParserRuleContext {
	public _serdeName!: Token;
	public KW_SET(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_SET, 0); }
	public KW_SERDE(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_SERDE, 0); }
	public KW_SERDEPROPERTIES(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_SERDEPROPERTIES, 0); }
	public tableProperties(): TablePropertiesContext | undefined {
		return this.tryGetRuleContext(0, TablePropertiesContext);
	}
	public StringLiteral(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.StringLiteral, 0); }
	public KW_WITH(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_WITH, 0); }
	public KW_UNSET(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_UNSET, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_alterStatementSuffixSerdeProperties; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterAlterStatementSuffixSerdeProperties) {
			listener.enterAlterStatementSuffixSerdeProperties(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitAlterStatementSuffixSerdeProperties) {
			listener.exitAlterStatementSuffixSerdeProperties(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitAlterStatementSuffixSerdeProperties) {
			return visitor.visitAlterStatementSuffixSerdeProperties(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class TablePartitionPrefixContext extends ParserRuleContext {
	public tableName(): TableNameContext {
		return this.getRuleContext(0, TableNameContext);
	}
	public partitionSpec(): PartitionSpecContext | undefined {
		return this.tryGetRuleContext(0, PartitionSpecContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_tablePartitionPrefix; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterTablePartitionPrefix) {
			listener.enterTablePartitionPrefix(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitTablePartitionPrefix) {
			listener.exitTablePartitionPrefix(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitTablePartitionPrefix) {
			return visitor.visitTablePartitionPrefix(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class AlterStatementSuffixFileFormatContext extends ParserRuleContext {
	public KW_SET(): TerminalNode { return this.getToken(HiveSqlParser.KW_SET, 0); }
	public KW_FILEFORMAT(): TerminalNode { return this.getToken(HiveSqlParser.KW_FILEFORMAT, 0); }
	public fileFormat(): FileFormatContext {
		return this.getRuleContext(0, FileFormatContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_alterStatementSuffixFileFormat; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterAlterStatementSuffixFileFormat) {
			listener.enterAlterStatementSuffixFileFormat(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitAlterStatementSuffixFileFormat) {
			listener.exitAlterStatementSuffixFileFormat(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitAlterStatementSuffixFileFormat) {
			return visitor.visitAlterStatementSuffixFileFormat(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class AlterStatementSuffixClusterbySortbyContext extends ParserRuleContext {
	public KW_NOT(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_NOT, 0); }
	public KW_CLUSTERED(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_CLUSTERED, 0); }
	public KW_SORTED(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_SORTED, 0); }
	public tableBuckets(): TableBucketsContext | undefined {
		return this.tryGetRuleContext(0, TableBucketsContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_alterStatementSuffixClusterbySortby; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterAlterStatementSuffixClusterbySortby) {
			listener.enterAlterStatementSuffixClusterbySortby(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitAlterStatementSuffixClusterbySortby) {
			listener.exitAlterStatementSuffixClusterbySortby(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitAlterStatementSuffixClusterbySortby) {
			return visitor.visitAlterStatementSuffixClusterbySortby(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class AlterTblPartitionStatementSuffixSkewedLocationContext extends ParserRuleContext {
	public KW_SET(): TerminalNode { return this.getToken(HiveSqlParser.KW_SET, 0); }
	public KW_SKEWED(): TerminalNode { return this.getToken(HiveSqlParser.KW_SKEWED, 0); }
	public KW_LOCATION(): TerminalNode { return this.getToken(HiveSqlParser.KW_LOCATION, 0); }
	public skewedLocations(): SkewedLocationsContext {
		return this.getRuleContext(0, SkewedLocationsContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_alterTblPartitionStatementSuffixSkewedLocation; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterAlterTblPartitionStatementSuffixSkewedLocation) {
			listener.enterAlterTblPartitionStatementSuffixSkewedLocation(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitAlterTblPartitionStatementSuffixSkewedLocation) {
			listener.exitAlterTblPartitionStatementSuffixSkewedLocation(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitAlterTblPartitionStatementSuffixSkewedLocation) {
			return visitor.visitAlterTblPartitionStatementSuffixSkewedLocation(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class SkewedLocationsContext extends ParserRuleContext {
	public LPAREN(): TerminalNode { return this.getToken(HiveSqlParser.LPAREN, 0); }
	public skewedLocationsList(): SkewedLocationsListContext {
		return this.getRuleContext(0, SkewedLocationsListContext);
	}
	public RPAREN(): TerminalNode { return this.getToken(HiveSqlParser.RPAREN, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_skewedLocations; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterSkewedLocations) {
			listener.enterSkewedLocations(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitSkewedLocations) {
			listener.exitSkewedLocations(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitSkewedLocations) {
			return visitor.visitSkewedLocations(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class SkewedLocationsListContext extends ParserRuleContext {
	public skewedLocationMap(): SkewedLocationMapContext[];
	public skewedLocationMap(i: number): SkewedLocationMapContext;
	public skewedLocationMap(i?: number): SkewedLocationMapContext | SkewedLocationMapContext[] {
		if (i === undefined) {
			return this.getRuleContexts(SkewedLocationMapContext);
		} else {
			return this.getRuleContext(i, SkewedLocationMapContext);
		}
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(HiveSqlParser.COMMA);
		} else {
			return this.getToken(HiveSqlParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_skewedLocationsList; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterSkewedLocationsList) {
			listener.enterSkewedLocationsList(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitSkewedLocationsList) {
			listener.exitSkewedLocationsList(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitSkewedLocationsList) {
			return visitor.visitSkewedLocationsList(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class SkewedLocationMapContext extends ParserRuleContext {
	public _key!: SkewedValueLocationElementContext;
	public _value!: Token;
	public EQUAL(): TerminalNode { return this.getToken(HiveSqlParser.EQUAL, 0); }
	public skewedValueLocationElement(): SkewedValueLocationElementContext {
		return this.getRuleContext(0, SkewedValueLocationElementContext);
	}
	public StringLiteral(): TerminalNode { return this.getToken(HiveSqlParser.StringLiteral, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_skewedLocationMap; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterSkewedLocationMap) {
			listener.enterSkewedLocationMap(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitSkewedLocationMap) {
			listener.exitSkewedLocationMap(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitSkewedLocationMap) {
			return visitor.visitSkewedLocationMap(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class AlterStatementSuffixLocationContext extends ParserRuleContext {
	public _newLoc!: Token;
	public KW_SET(): TerminalNode { return this.getToken(HiveSqlParser.KW_SET, 0); }
	public KW_LOCATION(): TerminalNode { return this.getToken(HiveSqlParser.KW_LOCATION, 0); }
	public StringLiteral(): TerminalNode { return this.getToken(HiveSqlParser.StringLiteral, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_alterStatementSuffixLocation; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterAlterStatementSuffixLocation) {
			listener.enterAlterStatementSuffixLocation(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitAlterStatementSuffixLocation) {
			listener.exitAlterStatementSuffixLocation(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitAlterStatementSuffixLocation) {
			return visitor.visitAlterStatementSuffixLocation(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class AlterStatementSuffixSkewedbyContext extends ParserRuleContext {
	public tableSkewed(): TableSkewedContext | undefined {
		return this.tryGetRuleContext(0, TableSkewedContext);
	}
	public KW_NOT(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_NOT, 0); }
	public KW_SKEWED(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_SKEWED, 0); }
	public storedAsDirs(): StoredAsDirsContext | undefined {
		return this.tryGetRuleContext(0, StoredAsDirsContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_alterStatementSuffixSkewedby; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterAlterStatementSuffixSkewedby) {
			listener.enterAlterStatementSuffixSkewedby(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitAlterStatementSuffixSkewedby) {
			listener.exitAlterStatementSuffixSkewedby(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitAlterStatementSuffixSkewedby) {
			return visitor.visitAlterStatementSuffixSkewedby(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class AlterStatementSuffixExchangePartitionContext extends ParserRuleContext {
	public _exchangename!: TableNameContext;
	public KW_EXCHANGE(): TerminalNode { return this.getToken(HiveSqlParser.KW_EXCHANGE, 0); }
	public partitionSpec(): PartitionSpecContext {
		return this.getRuleContext(0, PartitionSpecContext);
	}
	public KW_WITH(): TerminalNode { return this.getToken(HiveSqlParser.KW_WITH, 0); }
	public KW_TABLE(): TerminalNode { return this.getToken(HiveSqlParser.KW_TABLE, 0); }
	public tableName(): TableNameContext {
		return this.getRuleContext(0, TableNameContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_alterStatementSuffixExchangePartition; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterAlterStatementSuffixExchangePartition) {
			listener.enterAlterStatementSuffixExchangePartition(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitAlterStatementSuffixExchangePartition) {
			listener.exitAlterStatementSuffixExchangePartition(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitAlterStatementSuffixExchangePartition) {
			return visitor.visitAlterStatementSuffixExchangePartition(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class AlterStatementSuffixRenamePartContext extends ParserRuleContext {
	public KW_RENAME(): TerminalNode { return this.getToken(HiveSqlParser.KW_RENAME, 0); }
	public KW_TO(): TerminalNode { return this.getToken(HiveSqlParser.KW_TO, 0); }
	public partitionSpec(): PartitionSpecContext {
		return this.getRuleContext(0, PartitionSpecContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_alterStatementSuffixRenamePart; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterAlterStatementSuffixRenamePart) {
			listener.enterAlterStatementSuffixRenamePart(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitAlterStatementSuffixRenamePart) {
			listener.exitAlterStatementSuffixRenamePart(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitAlterStatementSuffixRenamePart) {
			return visitor.visitAlterStatementSuffixRenamePart(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class AlterStatementSuffixStatsPartContext extends ParserRuleContext {
	public _colName!: ColumnNameContext;
	public _comment!: Token;
	public KW_UPDATE(): TerminalNode { return this.getToken(HiveSqlParser.KW_UPDATE, 0); }
	public KW_STATISTICS(): TerminalNode { return this.getToken(HiveSqlParser.KW_STATISTICS, 0); }
	public KW_FOR(): TerminalNode { return this.getToken(HiveSqlParser.KW_FOR, 0); }
	public KW_SET(): TerminalNode { return this.getToken(HiveSqlParser.KW_SET, 0); }
	public tableProperties(): TablePropertiesContext {
		return this.getRuleContext(0, TablePropertiesContext);
	}
	public columnName(): ColumnNameContext {
		return this.getRuleContext(0, ColumnNameContext);
	}
	public KW_COLUMN(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_COLUMN, 0); }
	public KW_COMMENT(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_COMMENT, 0); }
	public StringLiteral(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.StringLiteral, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_alterStatementSuffixStatsPart; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterAlterStatementSuffixStatsPart) {
			listener.enterAlterStatementSuffixStatsPart(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitAlterStatementSuffixStatsPart) {
			listener.exitAlterStatementSuffixStatsPart(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitAlterStatementSuffixStatsPart) {
			return visitor.visitAlterStatementSuffixStatsPart(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class AlterStatementSuffixMergeFilesContext extends ParserRuleContext {
	public KW_CONCATENATE(): TerminalNode { return this.getToken(HiveSqlParser.KW_CONCATENATE, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_alterStatementSuffixMergeFiles; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterAlterStatementSuffixMergeFiles) {
			listener.enterAlterStatementSuffixMergeFiles(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitAlterStatementSuffixMergeFiles) {
			listener.exitAlterStatementSuffixMergeFiles(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitAlterStatementSuffixMergeFiles) {
			return visitor.visitAlterStatementSuffixMergeFiles(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class AlterStatementSuffixBucketNumContext extends ParserRuleContext {
	public _num!: Token;
	public KW_INTO(): TerminalNode { return this.getToken(HiveSqlParser.KW_INTO, 0); }
	public KW_BUCKETS(): TerminalNode { return this.getToken(HiveSqlParser.KW_BUCKETS, 0); }
	public Number(): TerminalNode { return this.getToken(HiveSqlParser.Number, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_alterStatementSuffixBucketNum; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterAlterStatementSuffixBucketNum) {
			listener.enterAlterStatementSuffixBucketNum(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitAlterStatementSuffixBucketNum) {
			listener.exitAlterStatementSuffixBucketNum(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitAlterStatementSuffixBucketNum) {
			return visitor.visitAlterStatementSuffixBucketNum(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class BlockingContext extends ParserRuleContext {
	public KW_AND(): TerminalNode { return this.getToken(HiveSqlParser.KW_AND, 0); }
	public KW_WAIT(): TerminalNode { return this.getToken(HiveSqlParser.KW_WAIT, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_blocking; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterBlocking) {
			listener.enterBlocking(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitBlocking) {
			listener.exitBlocking(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitBlocking) {
			return visitor.visitBlocking(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class CompactPoolContext extends ParserRuleContext {
	public _poolName!: Token;
	public KW_POOL(): TerminalNode { return this.getToken(HiveSqlParser.KW_POOL, 0); }
	public StringLiteral(): TerminalNode { return this.getToken(HiveSqlParser.StringLiteral, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_compactPool; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterCompactPool) {
			listener.enterCompactPool(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitCompactPool) {
			listener.exitCompactPool(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitCompactPool) {
			return visitor.visitCompactPool(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class AlterStatementSuffixCompactContext extends ParserRuleContext {
	public _compactType!: Token;
	public KW_COMPACT(): TerminalNode { return this.getToken(HiveSqlParser.KW_COMPACT, 0); }
	public StringLiteral(): TerminalNode { return this.getToken(HiveSqlParser.StringLiteral, 0); }
	public blocking(): BlockingContext | undefined {
		return this.tryGetRuleContext(0, BlockingContext);
	}
	public tableImplBuckets(): TableImplBucketsContext | undefined {
		return this.tryGetRuleContext(0, TableImplBucketsContext);
	}
	public orderByClause(): OrderByClauseContext | undefined {
		return this.tryGetRuleContext(0, OrderByClauseContext);
	}
	public compactPool(): CompactPoolContext | undefined {
		return this.tryGetRuleContext(0, CompactPoolContext);
	}
	public KW_WITH(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_WITH, 0); }
	public KW_OVERWRITE(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_OVERWRITE, 0); }
	public KW_TBLPROPERTIES(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_TBLPROPERTIES, 0); }
	public tableProperties(): TablePropertiesContext | undefined {
		return this.tryGetRuleContext(0, TablePropertiesContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_alterStatementSuffixCompact; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterAlterStatementSuffixCompact) {
			listener.enterAlterStatementSuffixCompact(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitAlterStatementSuffixCompact) {
			listener.exitAlterStatementSuffixCompact(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitAlterStatementSuffixCompact) {
			return visitor.visitAlterStatementSuffixCompact(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class AlterStatementSuffixSetOwnerContext extends ParserRuleContext {
	public KW_SET(): TerminalNode { return this.getToken(HiveSqlParser.KW_SET, 0); }
	public KW_OWNER(): TerminalNode { return this.getToken(HiveSqlParser.KW_OWNER, 0); }
	public principalName(): PrincipalNameContext {
		return this.getRuleContext(0, PrincipalNameContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_alterStatementSuffixSetOwner; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterAlterStatementSuffixSetOwner) {
			listener.enterAlterStatementSuffixSetOwner(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitAlterStatementSuffixSetOwner) {
			listener.exitAlterStatementSuffixSetOwner(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitAlterStatementSuffixSetOwner) {
			return visitor.visitAlterStatementSuffixSetOwner(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class AlterStatementSuffixSetPartSpecContext extends ParserRuleContext {
	public _spec!: PartitionTransformSpecContext;
	public KW_SET(): TerminalNode { return this.getToken(HiveSqlParser.KW_SET, 0); }
	public KW_PARTITION(): TerminalNode { return this.getToken(HiveSqlParser.KW_PARTITION, 0); }
	public KW_SPEC(): TerminalNode { return this.getToken(HiveSqlParser.KW_SPEC, 0); }
	public LPAREN(): TerminalNode { return this.getToken(HiveSqlParser.LPAREN, 0); }
	public RPAREN(): TerminalNode { return this.getToken(HiveSqlParser.RPAREN, 0); }
	public partitionTransformSpec(): PartitionTransformSpecContext {
		return this.getRuleContext(0, PartitionTransformSpecContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_alterStatementSuffixSetPartSpec; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterAlterStatementSuffixSetPartSpec) {
			listener.enterAlterStatementSuffixSetPartSpec(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitAlterStatementSuffixSetPartSpec) {
			listener.exitAlterStatementSuffixSetPartSpec(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitAlterStatementSuffixSetPartSpec) {
			return visitor.visitAlterStatementSuffixSetPartSpec(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class AlterStatementSuffixExecuteContext extends ParserRuleContext {
	public _rollbackParam!: Token;
	public _expireParam!: Token;
	public _snapshotParam!: Token;
	public KW_EXECUTE(): TerminalNode { return this.getToken(HiveSqlParser.KW_EXECUTE, 0); }
	public RPAREN(): TerminalNode { return this.getToken(HiveSqlParser.RPAREN, 0); }
	public KW_ROLLBACK(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_ROLLBACK, 0); }
	public LPAREN(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.LPAREN, 0); }
	public KW_EXPIRE_SNAPSHOTS(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_EXPIRE_SNAPSHOTS, 0); }
	public KW_SET_CURRENT_SNAPSHOT(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_SET_CURRENT_SNAPSHOT, 0); }
	public StringLiteral(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.StringLiteral, 0); }
	public Number(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.Number, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_alterStatementSuffixExecute; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterAlterStatementSuffixExecute) {
			listener.enterAlterStatementSuffixExecute(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitAlterStatementSuffixExecute) {
			listener.exitAlterStatementSuffixExecute(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitAlterStatementSuffixExecute) {
			return visitor.visitAlterStatementSuffixExecute(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class AlterIndexStatementSuffixContext extends ParserRuleContext {
	public id_(): Id_Context {
		return this.getRuleContext(0, Id_Context);
	}
	public KW_ON(): TerminalNode { return this.getToken(HiveSqlParser.KW_ON, 0); }
	public tableName(): TableNameContext {
		return this.getRuleContext(0, TableNameContext);
	}
	public KW_REBUILD(): TerminalNode { return this.getToken(HiveSqlParser.KW_REBUILD, 0); }
	public partitionSpec(): PartitionSpecContext | undefined {
		return this.tryGetRuleContext(0, PartitionSpecContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_alterIndexStatementSuffix; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterAlterIndexStatementSuffix) {
			listener.enterAlterIndexStatementSuffix(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitAlterIndexStatementSuffix) {
			listener.exitAlterIndexStatementSuffix(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitAlterIndexStatementSuffix) {
			return visitor.visitAlterIndexStatementSuffix(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class FileFormatContext extends ParserRuleContext {
	public _inFmt!: Token;
	public _outFmt!: Token;
	public _serdeCls!: Token;
	public _inDriver!: Token;
	public _outDriver!: Token;
	public _genericSpec!: Id_Context;
	public KW_INPUTFORMAT(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_INPUTFORMAT, 0); }
	public KW_OUTPUTFORMAT(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_OUTPUTFORMAT, 0); }
	public KW_SERDE(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_SERDE, 0); }
	public StringLiteral(): TerminalNode[];
	public StringLiteral(i: number): TerminalNode;
	public StringLiteral(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(HiveSqlParser.StringLiteral);
		} else {
			return this.getToken(HiveSqlParser.StringLiteral, i);
		}
	}
	public KW_INPUTDRIVER(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_INPUTDRIVER, 0); }
	public KW_OUTPUTDRIVER(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_OUTPUTDRIVER, 0); }
	public id_(): Id_Context | undefined {
		return this.tryGetRuleContext(0, Id_Context);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_fileFormat; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterFileFormat) {
			listener.enterFileFormat(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitFileFormat) {
			listener.exitFileFormat(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitFileFormat) {
			return visitor.visitFileFormat(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class AlterDataConnectorStatementSuffixContext extends ParserRuleContext {
	public alterDataConnectorSuffixProperties(): AlterDataConnectorSuffixPropertiesContext | undefined {
		return this.tryGetRuleContext(0, AlterDataConnectorSuffixPropertiesContext);
	}
	public alterDataConnectorSuffixSetOwner(): AlterDataConnectorSuffixSetOwnerContext | undefined {
		return this.tryGetRuleContext(0, AlterDataConnectorSuffixSetOwnerContext);
	}
	public alterDataConnectorSuffixSetUrl(): AlterDataConnectorSuffixSetUrlContext | undefined {
		return this.tryGetRuleContext(0, AlterDataConnectorSuffixSetUrlContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_alterDataConnectorStatementSuffix; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterAlterDataConnectorStatementSuffix) {
			listener.enterAlterDataConnectorStatementSuffix(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitAlterDataConnectorStatementSuffix) {
			listener.exitAlterDataConnectorStatementSuffix(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitAlterDataConnectorStatementSuffix) {
			return visitor.visitAlterDataConnectorStatementSuffix(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class AlterDataConnectorSuffixPropertiesContext extends ParserRuleContext {
	public _name!: DbSchemaNameContext;
	public KW_SET(): TerminalNode { return this.getToken(HiveSqlParser.KW_SET, 0); }
	public KW_DCPROPERTIES(): TerminalNode { return this.getToken(HiveSqlParser.KW_DCPROPERTIES, 0); }
	public dcProperties(): DcPropertiesContext {
		return this.getRuleContext(0, DcPropertiesContext);
	}
	public dbSchemaName(): DbSchemaNameContext {
		return this.getRuleContext(0, DbSchemaNameContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_alterDataConnectorSuffixProperties; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterAlterDataConnectorSuffixProperties) {
			listener.enterAlterDataConnectorSuffixProperties(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitAlterDataConnectorSuffixProperties) {
			listener.exitAlterDataConnectorSuffixProperties(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitAlterDataConnectorSuffixProperties) {
			return visitor.visitAlterDataConnectorSuffixProperties(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class AlterDataConnectorSuffixSetOwnerContext extends ParserRuleContext {
	public _dcName!: DbSchemaNameContext;
	public KW_SET(): TerminalNode { return this.getToken(HiveSqlParser.KW_SET, 0); }
	public KW_OWNER(): TerminalNode { return this.getToken(HiveSqlParser.KW_OWNER, 0); }
	public principalAlterName(): PrincipalAlterNameContext {
		return this.getRuleContext(0, PrincipalAlterNameContext);
	}
	public dbSchemaName(): DbSchemaNameContext {
		return this.getRuleContext(0, DbSchemaNameContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_alterDataConnectorSuffixSetOwner; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterAlterDataConnectorSuffixSetOwner) {
			listener.enterAlterDataConnectorSuffixSetOwner(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitAlterDataConnectorSuffixSetOwner) {
			listener.exitAlterDataConnectorSuffixSetOwner(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitAlterDataConnectorSuffixSetOwner) {
			return visitor.visitAlterDataConnectorSuffixSetOwner(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class AlterDataConnectorSuffixSetUrlContext extends ParserRuleContext {
	public _dcName!: DbSchemaNameContext;
	public _newUri!: Token;
	public KW_SET(): TerminalNode { return this.getToken(HiveSqlParser.KW_SET, 0); }
	public KW_URL(): TerminalNode { return this.getToken(HiveSqlParser.KW_URL, 0); }
	public dbSchemaName(): DbSchemaNameContext {
		return this.getRuleContext(0, DbSchemaNameContext);
	}
	public StringLiteral(): TerminalNode { return this.getToken(HiveSqlParser.StringLiteral, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_alterDataConnectorSuffixSetUrl; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterAlterDataConnectorSuffixSetUrl) {
			listener.enterAlterDataConnectorSuffixSetUrl(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitAlterDataConnectorSuffixSetUrl) {
			listener.exitAlterDataConnectorSuffixSetUrl(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitAlterDataConnectorSuffixSetUrl) {
			return visitor.visitAlterDataConnectorSuffixSetUrl(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class LikeTableOrFileContext extends ParserRuleContext {
	public _format!: Id_Context;
	public _uri!: Token;
	public _likeName!: TableNameContext;
	public KW_LIKE(): TerminalNode { return this.getToken(HiveSqlParser.KW_LIKE, 0); }
	public KW_FILE(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_FILE, 0); }
	public id_(): Id_Context | undefined {
		return this.tryGetRuleContext(0, Id_Context);
	}
	public StringLiteral(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.StringLiteral, 0); }
	public tableName(): TableNameContext | undefined {
		return this.tryGetRuleContext(0, TableNameContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_likeTableOrFile; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterLikeTableOrFile) {
			listener.enterLikeTableOrFile(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitLikeTableOrFile) {
			listener.exitLikeTableOrFile(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitLikeTableOrFile) {
			return visitor.visitLikeTableOrFile(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class CreateTableStatementContext extends ParserRuleContext {
	public _temp!: Token;
	public _trans!: Token;
	public _ext!: Token;
	public _name!: TableNameCreateContext;
	public _mgd!: Token;
	public KW_CREATE(): TerminalNode { return this.getToken(HiveSqlParser.KW_CREATE, 0); }
	public KW_TABLE(): TerminalNode { return this.getToken(HiveSqlParser.KW_TABLE, 0); }
	public tableNameCreate(): TableNameCreateContext {
		return this.getRuleContext(0, TableNameCreateContext);
	}
	public likeTableOrFile(): LikeTableOrFileContext | undefined {
		return this.tryGetRuleContext(0, LikeTableOrFileContext);
	}
	public ifNotExists(): IfNotExistsContext | undefined {
		return this.tryGetRuleContext(0, IfNotExistsContext);
	}
	public KW_TEMPORARY(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_TEMPORARY, 0); }
	public KW_TRANSACTIONAL(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_TRANSACTIONAL, 0); }
	public KW_EXTERNAL(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_EXTERNAL, 0); }
	public createTablePartitionSpec(): CreateTablePartitionSpecContext | undefined {
		return this.tryGetRuleContext(0, CreateTablePartitionSpecContext);
	}
	public tableRowFormat(): TableRowFormatContext | undefined {
		return this.tryGetRuleContext(0, TableRowFormatContext);
	}
	public tableFileFormat(): TableFileFormatContext | undefined {
		return this.tryGetRuleContext(0, TableFileFormatContext);
	}
	public tableLocation(): TableLocationContext | undefined {
		return this.tryGetRuleContext(0, TableLocationContext);
	}
	public tablePropertiesPrefixed(): TablePropertiesPrefixedContext | undefined {
		return this.tryGetRuleContext(0, TablePropertiesPrefixedContext);
	}
	public LPAREN(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.LPAREN, 0); }
	public columnNameTypeOrConstraintList(): ColumnNameTypeOrConstraintListContext | undefined {
		return this.tryGetRuleContext(0, ColumnNameTypeOrConstraintListContext);
	}
	public RPAREN(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.RPAREN, 0); }
	public tableComment(): TableCommentContext | undefined {
		return this.tryGetRuleContext(0, TableCommentContext);
	}
	public tableBuckets(): TableBucketsContext | undefined {
		return this.tryGetRuleContext(0, TableBucketsContext);
	}
	public tableSkewed(): TableSkewedContext | undefined {
		return this.tryGetRuleContext(0, TableSkewedContext);
	}
	public KW_AS(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_AS, 0); }
	public selectStatementWithCTE(): SelectStatementWithCTEContext | undefined {
		return this.tryGetRuleContext(0, SelectStatementWithCTEContext);
	}
	public KW_MANAGED(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_MANAGED, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_createTableStatement; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterCreateTableStatement) {
			listener.enterCreateTableStatement(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitCreateTableStatement) {
			listener.exitCreateTableStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitCreateTableStatement) {
			return visitor.visitCreateTableStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class CreateDataConnectorStatementContext extends ParserRuleContext {
	public _name!: Id_Context;
	public _dcprops!: DcPropertiesContext;
	public KW_CREATE(): TerminalNode { return this.getToken(HiveSqlParser.KW_CREATE, 0); }
	public KW_DATACONNECTOR(): TerminalNode { return this.getToken(HiveSqlParser.KW_DATACONNECTOR, 0); }
	public id_(): Id_Context {
		return this.getRuleContext(0, Id_Context);
	}
	public ifNotExists(): IfNotExistsContext | undefined {
		return this.tryGetRuleContext(0, IfNotExistsContext);
	}
	public dataConnectorType(): DataConnectorTypeContext | undefined {
		return this.tryGetRuleContext(0, DataConnectorTypeContext);
	}
	public dataConnectorUrl(): DataConnectorUrlContext | undefined {
		return this.tryGetRuleContext(0, DataConnectorUrlContext);
	}
	public dataConnectorComment(): DataConnectorCommentContext | undefined {
		return this.tryGetRuleContext(0, DataConnectorCommentContext);
	}
	public KW_WITH(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_WITH, 0); }
	public KW_DCPROPERTIES(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_DCPROPERTIES, 0); }
	public dcProperties(): DcPropertiesContext | undefined {
		return this.tryGetRuleContext(0, DcPropertiesContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_createDataConnectorStatement; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterCreateDataConnectorStatement) {
			listener.enterCreateDataConnectorStatement(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitCreateDataConnectorStatement) {
			listener.exitCreateDataConnectorStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitCreateDataConnectorStatement) {
			return visitor.visitCreateDataConnectorStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class DataConnectorCommentContext extends ParserRuleContext {
	public _comment!: Token;
	public KW_COMMENT(): TerminalNode { return this.getToken(HiveSqlParser.KW_COMMENT, 0); }
	public StringLiteral(): TerminalNode { return this.getToken(HiveSqlParser.StringLiteral, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_dataConnectorComment; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterDataConnectorComment) {
			listener.enterDataConnectorComment(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitDataConnectorComment) {
			listener.exitDataConnectorComment(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitDataConnectorComment) {
			return visitor.visitDataConnectorComment(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class DataConnectorUrlContext extends ParserRuleContext {
	public _url!: Token;
	public KW_URL(): TerminalNode { return this.getToken(HiveSqlParser.KW_URL, 0); }
	public StringLiteral(): TerminalNode { return this.getToken(HiveSqlParser.StringLiteral, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_dataConnectorUrl; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterDataConnectorUrl) {
			listener.enterDataConnectorUrl(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitDataConnectorUrl) {
			listener.exitDataConnectorUrl(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitDataConnectorUrl) {
			return visitor.visitDataConnectorUrl(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class DataConnectorTypeContext extends ParserRuleContext {
	public _dcType!: Token;
	public KW_TYPE(): TerminalNode { return this.getToken(HiveSqlParser.KW_TYPE, 0); }
	public StringLiteral(): TerminalNode { return this.getToken(HiveSqlParser.StringLiteral, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_dataConnectorType; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterDataConnectorType) {
			listener.enterDataConnectorType(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitDataConnectorType) {
			listener.exitDataConnectorType(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitDataConnectorType) {
			return visitor.visitDataConnectorType(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class DcPropertiesContext extends ParserRuleContext {
	public LPAREN(): TerminalNode { return this.getToken(HiveSqlParser.LPAREN, 0); }
	public dbPropertiesList(): DbPropertiesListContext {
		return this.getRuleContext(0, DbPropertiesListContext);
	}
	public RPAREN(): TerminalNode { return this.getToken(HiveSqlParser.RPAREN, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_dcProperties; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterDcProperties) {
			listener.enterDcProperties(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitDcProperties) {
			listener.exitDcProperties(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitDcProperties) {
			return visitor.visitDcProperties(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class DropDataConnectorStatementContext extends ParserRuleContext {
	public KW_DROP(): TerminalNode { return this.getToken(HiveSqlParser.KW_DROP, 0); }
	public KW_DATACONNECTOR(): TerminalNode { return this.getToken(HiveSqlParser.KW_DATACONNECTOR, 0); }
	public id_(): Id_Context {
		return this.getRuleContext(0, Id_Context);
	}
	public ifExists(): IfExistsContext | undefined {
		return this.tryGetRuleContext(0, IfExistsContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_dropDataConnectorStatement; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterDropDataConnectorStatement) {
			listener.enterDropDataConnectorStatement(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitDropDataConnectorStatement) {
			listener.exitDropDataConnectorStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitDropDataConnectorStatement) {
			return visitor.visitDropDataConnectorStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class TableAllColumnsContext extends ParserRuleContext {
	public STAR(): TerminalNode { return this.getToken(HiveSqlParser.STAR, 0); }
	public tableOrView(): TableOrViewContext | undefined {
		return this.tryGetRuleContext(0, TableOrViewContext);
	}
	public DOT(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.DOT, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_tableAllColumns; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterTableAllColumns) {
			listener.enterTableAllColumns(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitTableAllColumns) {
			listener.exitTableAllColumns(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitTableAllColumns) {
			return visitor.visitTableAllColumns(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class DefaultValueContext extends ParserRuleContext {
	public KW_DEFAULT(): TerminalNode { return this.getToken(HiveSqlParser.KW_DEFAULT, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_defaultValue; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterDefaultValue) {
			listener.enterDefaultValue(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitDefaultValue) {
			listener.exitDefaultValue(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitDefaultValue) {
			return visitor.visitDefaultValue(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ExpressionListContext extends ParserRuleContext {
	public expression(): ExpressionContext[];
	public expression(i: number): ExpressionContext;
	public expression(i?: number): ExpressionContext | ExpressionContext[] {
		if (i === undefined) {
			return this.getRuleContexts(ExpressionContext);
		} else {
			return this.getRuleContext(i, ExpressionContext);
		}
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(HiveSqlParser.COMMA);
		} else {
			return this.getToken(HiveSqlParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_expressionList; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterExpressionList) {
			listener.enterExpressionList(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitExpressionList) {
			listener.exitExpressionList(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitExpressionList) {
			return visitor.visitExpressionList(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class AliasListContext extends ParserRuleContext {
	public id_(): Id_Context[];
	public id_(i: number): Id_Context;
	public id_(i?: number): Id_Context | Id_Context[] {
		if (i === undefined) {
			return this.getRuleContexts(Id_Context);
		} else {
			return this.getRuleContext(i, Id_Context);
		}
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(HiveSqlParser.COMMA);
		} else {
			return this.getToken(HiveSqlParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_aliasList; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterAliasList) {
			listener.enterAliasList(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitAliasList) {
			listener.exitAliasList(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitAliasList) {
			return visitor.visitAliasList(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class FromClauseContext extends ParserRuleContext {
	public KW_FROM(): TerminalNode { return this.getToken(HiveSqlParser.KW_FROM, 0); }
	public fromSource(): FromSourceContext {
		return this.getRuleContext(0, FromSourceContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_fromClause; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterFromClause) {
			listener.enterFromClause(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitFromClause) {
			listener.exitFromClause(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitFromClause) {
			return visitor.visitFromClause(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class FromSourceContext extends ParserRuleContext {
	public uniqueJoinToken(): UniqueJoinTokenContext | undefined {
		return this.tryGetRuleContext(0, UniqueJoinTokenContext);
	}
	public uniqueJoinSource(): UniqueJoinSourceContext[];
	public uniqueJoinSource(i: number): UniqueJoinSourceContext;
	public uniqueJoinSource(i?: number): UniqueJoinSourceContext | UniqueJoinSourceContext[] {
		if (i === undefined) {
			return this.getRuleContexts(UniqueJoinSourceContext);
		} else {
			return this.getRuleContext(i, UniqueJoinSourceContext);
		}
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(HiveSqlParser.COMMA);
		} else {
			return this.getToken(HiveSqlParser.COMMA, i);
		}
	}
	public joinSource(): JoinSourceContext | undefined {
		return this.tryGetRuleContext(0, JoinSourceContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_fromSource; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterFromSource) {
			listener.enterFromSource(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitFromSource) {
			listener.exitFromSource(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitFromSource) {
			return visitor.visitFromSource(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class AtomjoinSourceContext extends ParserRuleContext {
	public tableSource(): TableSourceContext | undefined {
		return this.tryGetRuleContext(0, TableSourceContext);
	}
	public lateralView(): LateralViewContext[];
	public lateralView(i: number): LateralViewContext;
	public lateralView(i?: number): LateralViewContext | LateralViewContext[] {
		if (i === undefined) {
			return this.getRuleContexts(LateralViewContext);
		} else {
			return this.getRuleContext(i, LateralViewContext);
		}
	}
	public virtualTableSource(): VirtualTableSourceContext | undefined {
		return this.tryGetRuleContext(0, VirtualTableSourceContext);
	}
	public subQuerySource(): SubQuerySourceContext | undefined {
		return this.tryGetRuleContext(0, SubQuerySourceContext);
	}
	public partitionedTableFunction(): PartitionedTableFunctionContext | undefined {
		return this.tryGetRuleContext(0, PartitionedTableFunctionContext);
	}
	public LPAREN(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.LPAREN, 0); }
	public joinSource(): JoinSourceContext | undefined {
		return this.tryGetRuleContext(0, JoinSourceContext);
	}
	public RPAREN(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.RPAREN, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_atomjoinSource; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterAtomjoinSource) {
			listener.enterAtomjoinSource(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitAtomjoinSource) {
			listener.exitAtomjoinSource(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitAtomjoinSource) {
			return visitor.visitAtomjoinSource(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class JoinSourceContext extends ParserRuleContext {
	public atomjoinSource(): AtomjoinSourceContext {
		return this.getRuleContext(0, AtomjoinSourceContext);
	}
	public joinToken(): JoinTokenContext[];
	public joinToken(i: number): JoinTokenContext;
	public joinToken(i?: number): JoinTokenContext | JoinTokenContext[] {
		if (i === undefined) {
			return this.getRuleContexts(JoinTokenContext);
		} else {
			return this.getRuleContext(i, JoinTokenContext);
		}
	}
	public joinSourcePart(): JoinSourcePartContext[];
	public joinSourcePart(i: number): JoinSourcePartContext;
	public joinSourcePart(i?: number): JoinSourcePartContext | JoinSourcePartContext[] {
		if (i === undefined) {
			return this.getRuleContexts(JoinSourcePartContext);
		} else {
			return this.getRuleContext(i, JoinSourcePartContext);
		}
	}
	public KW_ON(): TerminalNode[];
	public KW_ON(i: number): TerminalNode;
	public KW_ON(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(HiveSqlParser.KW_ON);
		} else {
			return this.getToken(HiveSqlParser.KW_ON, i);
		}
	}
	public expression(): ExpressionContext[];
	public expression(i: number): ExpressionContext;
	public expression(i?: number): ExpressionContext | ExpressionContext[] {
		if (i === undefined) {
			return this.getRuleContexts(ExpressionContext);
		} else {
			return this.getRuleContext(i, ExpressionContext);
		}
	}
	public KW_USING(): TerminalNode[];
	public KW_USING(i: number): TerminalNode;
	public KW_USING(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(HiveSqlParser.KW_USING);
		} else {
			return this.getToken(HiveSqlParser.KW_USING, i);
		}
	}
	public columnParenthesesList(): ColumnParenthesesListContext[];
	public columnParenthesesList(i: number): ColumnParenthesesListContext;
	public columnParenthesesList(i?: number): ColumnParenthesesListContext | ColumnParenthesesListContext[] {
		if (i === undefined) {
			return this.getRuleContexts(ColumnParenthesesListContext);
		} else {
			return this.getRuleContext(i, ColumnParenthesesListContext);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_joinSource; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterJoinSource) {
			listener.enterJoinSource(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitJoinSource) {
			listener.exitJoinSource(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitJoinSource) {
			return visitor.visitJoinSource(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class JoinSourcePartContext extends ParserRuleContext {
	public tableSource(): TableSourceContext | undefined {
		return this.tryGetRuleContext(0, TableSourceContext);
	}
	public virtualTableSource(): VirtualTableSourceContext | undefined {
		return this.tryGetRuleContext(0, VirtualTableSourceContext);
	}
	public subQuerySource(): SubQuerySourceContext | undefined {
		return this.tryGetRuleContext(0, SubQuerySourceContext);
	}
	public partitionedTableFunction(): PartitionedTableFunctionContext | undefined {
		return this.tryGetRuleContext(0, PartitionedTableFunctionContext);
	}
	public lateralView(): LateralViewContext[];
	public lateralView(i: number): LateralViewContext;
	public lateralView(i?: number): LateralViewContext | LateralViewContext[] {
		if (i === undefined) {
			return this.getRuleContexts(LateralViewContext);
		} else {
			return this.getRuleContext(i, LateralViewContext);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_joinSourcePart; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterJoinSourcePart) {
			listener.enterJoinSourcePart(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitJoinSourcePart) {
			listener.exitJoinSourcePart(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitJoinSourcePart) {
			return visitor.visitJoinSourcePart(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class UniqueJoinSourceContext extends ParserRuleContext {
	public uniqueJoinTableSource(): UniqueJoinTableSourceContext {
		return this.getRuleContext(0, UniqueJoinTableSourceContext);
	}
	public uniqueJoinExpr(): UniqueJoinExprContext {
		return this.getRuleContext(0, UniqueJoinExprContext);
	}
	public KW_PRESERVE(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_PRESERVE, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_uniqueJoinSource; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterUniqueJoinSource) {
			listener.enterUniqueJoinSource(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitUniqueJoinSource) {
			listener.exitUniqueJoinSource(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitUniqueJoinSource) {
			return visitor.visitUniqueJoinSource(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class UniqueJoinExprContext extends ParserRuleContext {
	public LPAREN(): TerminalNode { return this.getToken(HiveSqlParser.LPAREN, 0); }
	public expressionList(): ExpressionListContext {
		return this.getRuleContext(0, ExpressionListContext);
	}
	public RPAREN(): TerminalNode { return this.getToken(HiveSqlParser.RPAREN, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_uniqueJoinExpr; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterUniqueJoinExpr) {
			listener.enterUniqueJoinExpr(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitUniqueJoinExpr) {
			listener.exitUniqueJoinExpr(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitUniqueJoinExpr) {
			return visitor.visitUniqueJoinExpr(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class UniqueJoinTokenContext extends ParserRuleContext {
	public KW_UNIQUEJOIN(): TerminalNode { return this.getToken(HiveSqlParser.KW_UNIQUEJOIN, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_uniqueJoinToken; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterUniqueJoinToken) {
			listener.enterUniqueJoinToken(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitUniqueJoinToken) {
			listener.exitUniqueJoinToken(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitUniqueJoinToken) {
			return visitor.visitUniqueJoinToken(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class JoinTokenContext extends ParserRuleContext {
	public COMMA(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.COMMA, 0); }
	public KW_JOIN(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_JOIN, 0); }
	public KW_INNER(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_INNER, 0); }
	public KW_CROSS(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_CROSS, 0); }
	public KW_LEFT(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_LEFT, 0); }
	public KW_RIGHT(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_RIGHT, 0); }
	public KW_FULL(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_FULL, 0); }
	public KW_OUTER(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_OUTER, 0); }
	public KW_SEMI(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_SEMI, 0); }
	public KW_ANTI(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_ANTI, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_joinToken; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterJoinToken) {
			listener.enterJoinToken(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitJoinToken) {
			listener.exitJoinToken(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitJoinToken) {
			return visitor.visitJoinToken(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class LateralViewContext extends ParserRuleContext {
	public KW_LATERAL(): TerminalNode { return this.getToken(HiveSqlParser.KW_LATERAL, 0); }
	public KW_VIEW(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_VIEW, 0); }
	public KW_OUTER(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_OUTER, 0); }
	public function_(): Function_Context | undefined {
		return this.tryGetRuleContext(0, Function_Context);
	}
	public tableAlias(): TableAliasContext | undefined {
		return this.tryGetRuleContext(0, TableAliasContext);
	}
	public KW_AS(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_AS, 0); }
	public id_(): Id_Context[];
	public id_(i: number): Id_Context;
	public id_(i?: number): Id_Context | Id_Context[] {
		if (i === undefined) {
			return this.getRuleContexts(Id_Context);
		} else {
			return this.getRuleContext(i, Id_Context);
		}
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(HiveSqlParser.COMMA);
		} else {
			return this.getToken(HiveSqlParser.COMMA, i);
		}
	}
	public KW_TABLE(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_TABLE, 0); }
	public LPAREN(): TerminalNode[];
	public LPAREN(i: number): TerminalNode;
	public LPAREN(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(HiveSqlParser.LPAREN);
		} else {
			return this.getToken(HiveSqlParser.LPAREN, i);
		}
	}
	public valuesClause(): ValuesClauseContext | undefined {
		return this.tryGetRuleContext(0, ValuesClauseContext);
	}
	public RPAREN(): TerminalNode[];
	public RPAREN(i: number): TerminalNode;
	public RPAREN(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(HiveSqlParser.RPAREN);
		} else {
			return this.getToken(HiveSqlParser.RPAREN, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_lateralView; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterLateralView) {
			listener.enterLateralView(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitLateralView) {
			listener.exitLateralView(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitLateralView) {
			return visitor.visitLateralView(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class TableAliasContext extends ParserRuleContext {
	public id_(): Id_Context {
		return this.getRuleContext(0, Id_Context);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_tableAlias; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterTableAlias) {
			listener.enterTableAlias(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitTableAlias) {
			listener.exitTableAlias(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitTableAlias) {
			return visitor.visitTableAlias(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class TableBucketSampleContext extends ParserRuleContext {
	public _numerator!: Token;
	public _denominator!: Token;
	public _expression!: ExpressionContext;
	public _expr: ExpressionContext[] = [];
	public KW_TABLESAMPLE(): TerminalNode { return this.getToken(HiveSqlParser.KW_TABLESAMPLE, 0); }
	public LPAREN(): TerminalNode { return this.getToken(HiveSqlParser.LPAREN, 0); }
	public KW_BUCKET(): TerminalNode { return this.getToken(HiveSqlParser.KW_BUCKET, 0); }
	public KW_OUT(): TerminalNode { return this.getToken(HiveSqlParser.KW_OUT, 0); }
	public KW_OF(): TerminalNode { return this.getToken(HiveSqlParser.KW_OF, 0); }
	public RPAREN(): TerminalNode { return this.getToken(HiveSqlParser.RPAREN, 0); }
	public Number(): TerminalNode[];
	public Number(i: number): TerminalNode;
	public Number(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(HiveSqlParser.Number);
		} else {
			return this.getToken(HiveSqlParser.Number, i);
		}
	}
	public KW_ON(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_ON, 0); }
	public expression(): ExpressionContext[];
	public expression(i: number): ExpressionContext;
	public expression(i?: number): ExpressionContext | ExpressionContext[] {
		if (i === undefined) {
			return this.getRuleContexts(ExpressionContext);
		} else {
			return this.getRuleContext(i, ExpressionContext);
		}
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(HiveSqlParser.COMMA);
		} else {
			return this.getToken(HiveSqlParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_tableBucketSample; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterTableBucketSample) {
			listener.enterTableBucketSample(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitTableBucketSample) {
			listener.exitTableBucketSample(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitTableBucketSample) {
			return visitor.visitTableBucketSample(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class SplitSampleContext extends ParserRuleContext {
	public KW_TABLESAMPLE(): TerminalNode { return this.getToken(HiveSqlParser.KW_TABLESAMPLE, 0); }
	public LPAREN(): TerminalNode { return this.getToken(HiveSqlParser.LPAREN, 0); }
	public RPAREN(): TerminalNode { return this.getToken(HiveSqlParser.RPAREN, 0); }
	public Number(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.Number, 0); }
	public ByteLengthLiteral(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.ByteLengthLiteral, 0); }
	public KW_PERCENT(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_PERCENT, 0); }
	public KW_ROWS(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_ROWS, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_splitSample; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterSplitSample) {
			listener.enterSplitSample(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitSplitSample) {
			listener.exitSplitSample(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitSplitSample) {
			return visitor.visitSplitSample(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class TableSampleContext extends ParserRuleContext {
	public tableBucketSample(): TableBucketSampleContext | undefined {
		return this.tryGetRuleContext(0, TableBucketSampleContext);
	}
	public splitSample(): SplitSampleContext | undefined {
		return this.tryGetRuleContext(0, SplitSampleContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_tableSample; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterTableSample) {
			listener.enterTableSample(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitTableSample) {
			listener.exitTableSample(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitTableSample) {
			return visitor.visitTableSample(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class TableSourceContext extends ParserRuleContext {
	public _tabname!: TableOrViewContext;
	public _props!: TablePropertiesContext;
	public _ts!: TableSampleContext;
	public _asOf!: AsOfClauseContext;
	public _alias!: Id_Context;
	public tableOrView(): TableOrViewContext {
		return this.getRuleContext(0, TableOrViewContext);
	}
	public tableProperties(): TablePropertiesContext | undefined {
		return this.tryGetRuleContext(0, TablePropertiesContext);
	}
	public tableSample(): TableSampleContext | undefined {
		return this.tryGetRuleContext(0, TableSampleContext);
	}
	public asOfClause(): AsOfClauseContext | undefined {
		return this.tryGetRuleContext(0, AsOfClauseContext);
	}
	public id_(): Id_Context | undefined {
		return this.tryGetRuleContext(0, Id_Context);
	}
	public KW_AS(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_AS, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_tableSource; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterTableSource) {
			listener.enterTableSource(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitTableSource) {
			listener.exitTableSource(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitTableSource) {
			return visitor.visitTableSource(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class AsOfClauseContext extends ParserRuleContext {
	public _asOfTime!: ExpressionContext;
	public _asOfVersion!: Token;
	public KW_FOR(): TerminalNode[];
	public KW_FOR(i: number): TerminalNode;
	public KW_FOR(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(HiveSqlParser.KW_FOR);
		} else {
			return this.getToken(HiveSqlParser.KW_FOR, i);
		}
	}
	public KW_SYSTEM_TIME(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_SYSTEM_TIME, 0); }
	public KW_AS(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_AS, 0); }
	public KW_OF(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_OF, 0); }
	public KW_SYSTEM_VERSION(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_SYSTEM_VERSION, 0); }
	public expression(): ExpressionContext | undefined {
		return this.tryGetRuleContext(0, ExpressionContext);
	}
	public Number(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.Number, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_asOfClause; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterAsOfClause) {
			listener.enterAsOfClause(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitAsOfClause) {
			listener.exitAsOfClause(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitAsOfClause) {
			return visitor.visitAsOfClause(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class UniqueJoinTableSourceContext extends ParserRuleContext {
	public _tabname!: TableOrViewContext;
	public _ts!: TableSampleContext;
	public _alias!: Id_Context;
	public tableOrView(): TableOrViewContext {
		return this.getRuleContext(0, TableOrViewContext);
	}
	public tableSample(): TableSampleContext | undefined {
		return this.tryGetRuleContext(0, TableSampleContext);
	}
	public id_(): Id_Context | undefined {
		return this.tryGetRuleContext(0, Id_Context);
	}
	public KW_AS(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_AS, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_uniqueJoinTableSource; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterUniqueJoinTableSource) {
			listener.enterUniqueJoinTableSource(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitUniqueJoinTableSource) {
			listener.exitUniqueJoinTableSource(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitUniqueJoinTableSource) {
			return visitor.visitUniqueJoinTableSource(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class DbSchemaNameContext extends ParserRuleContext {
	public id_(): Id_Context {
		return this.getRuleContext(0, Id_Context);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_dbSchemaName; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterDbSchemaName) {
			listener.enterDbSchemaName(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitDbSchemaName) {
			listener.exitDbSchemaName(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitDbSchemaName) {
			return visitor.visitDbSchemaName(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class DbSchemaNameCreateContext extends ParserRuleContext {
	public id_(): Id_Context {
		return this.getRuleContext(0, Id_Context);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_dbSchemaNameCreate; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterDbSchemaNameCreate) {
			listener.enterDbSchemaNameCreate(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitDbSchemaNameCreate) {
			listener.exitDbSchemaNameCreate(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitDbSchemaNameCreate) {
			return visitor.visitDbSchemaNameCreate(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class TableOrViewContext extends ParserRuleContext {
	public tableName(): TableNameContext | undefined {
		return this.tryGetRuleContext(0, TableNameContext);
	}
	public viewName(): ViewNameContext | undefined {
		return this.tryGetRuleContext(0, ViewNameContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_tableOrView; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterTableOrView) {
			listener.enterTableOrView(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitTableOrView) {
			listener.exitTableOrView(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitTableOrView) {
			return visitor.visitTableOrView(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class TableNameContext extends ParserRuleContext {
	public _db!: Id_Context;
	public _tab!: Id_Context;
	public _meta!: Id_Context;
	public DOT(): TerminalNode[];
	public DOT(i: number): TerminalNode;
	public DOT(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(HiveSqlParser.DOT);
		} else {
			return this.getToken(HiveSqlParser.DOT, i);
		}
	}
	public id_(): Id_Context[];
	public id_(i: number): Id_Context;
	public id_(i?: number): Id_Context | Id_Context[] {
		if (i === undefined) {
			return this.getRuleContexts(Id_Context);
		} else {
			return this.getRuleContext(i, Id_Context);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_tableName; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterTableName) {
			listener.enterTableName(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitTableName) {
			listener.exitTableName(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitTableName) {
			return visitor.visitTableName(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class TableNameCreateContext extends ParserRuleContext {
	public _db!: Id_Context;
	public _tab!: Id_Context;
	public _meta!: Id_Context;
	public DOT(): TerminalNode[];
	public DOT(i: number): TerminalNode;
	public DOT(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(HiveSqlParser.DOT);
		} else {
			return this.getToken(HiveSqlParser.DOT, i);
		}
	}
	public id_(): Id_Context[];
	public id_(i: number): Id_Context;
	public id_(i?: number): Id_Context | Id_Context[] {
		if (i === undefined) {
			return this.getRuleContexts(Id_Context);
		} else {
			return this.getRuleContext(i, Id_Context);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_tableNameCreate; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterTableNameCreate) {
			listener.enterTableNameCreate(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitTableNameCreate) {
			listener.exitTableNameCreate(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitTableNameCreate) {
			return visitor.visitTableNameCreate(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ViewNameContext extends ParserRuleContext {
	public _db!: Id_Context;
	public _view!: Id_Context;
	public id_(): Id_Context[];
	public id_(i: number): Id_Context;
	public id_(i?: number): Id_Context | Id_Context[] {
		if (i === undefined) {
			return this.getRuleContexts(Id_Context);
		} else {
			return this.getRuleContext(i, Id_Context);
		}
	}
	public DOT(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.DOT, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_viewName; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterViewName) {
			listener.enterViewName(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitViewName) {
			listener.exitViewName(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitViewName) {
			return visitor.visitViewName(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ViewNameCreateContext extends ParserRuleContext {
	public _db!: Id_Context;
	public _view!: Id_Context;
	public id_(): Id_Context[];
	public id_(i: number): Id_Context;
	public id_(i?: number): Id_Context | Id_Context[] {
		if (i === undefined) {
			return this.getRuleContexts(Id_Context);
		} else {
			return this.getRuleContext(i, Id_Context);
		}
	}
	public DOT(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.DOT, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_viewNameCreate; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterViewNameCreate) {
			listener.enterViewNameCreate(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitViewNameCreate) {
			listener.exitViewNameCreate(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitViewNameCreate) {
			return visitor.visitViewNameCreate(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class SubQuerySourceContext extends ParserRuleContext {
	public LPAREN(): TerminalNode { return this.getToken(HiveSqlParser.LPAREN, 0); }
	public queryStatementExpression(): QueryStatementExpressionContext {
		return this.getRuleContext(0, QueryStatementExpressionContext);
	}
	public RPAREN(): TerminalNode { return this.getToken(HiveSqlParser.RPAREN, 0); }
	public id_(): Id_Context {
		return this.getRuleContext(0, Id_Context);
	}
	public KW_AS(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_AS, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_subQuerySource; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterSubQuerySource) {
			listener.enterSubQuerySource(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitSubQuerySource) {
			listener.exitSubQuerySource(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitSubQuerySource) {
			return visitor.visitSubQuerySource(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class PartitioningSpecContext extends ParserRuleContext {
	public partitionByClause(): PartitionByClauseContext | undefined {
		return this.tryGetRuleContext(0, PartitionByClauseContext);
	}
	public orderByClause(): OrderByClauseContext | undefined {
		return this.tryGetRuleContext(0, OrderByClauseContext);
	}
	public distributeByClause(): DistributeByClauseContext | undefined {
		return this.tryGetRuleContext(0, DistributeByClauseContext);
	}
	public sortByClause(): SortByClauseContext | undefined {
		return this.tryGetRuleContext(0, SortByClauseContext);
	}
	public clusterByClause(): ClusterByClauseContext | undefined {
		return this.tryGetRuleContext(0, ClusterByClauseContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_partitioningSpec; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterPartitioningSpec) {
			listener.enterPartitioningSpec(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitPartitioningSpec) {
			listener.exitPartitioningSpec(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitPartitioningSpec) {
			return visitor.visitPartitioningSpec(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class PartitionTableFunctionSourceContext extends ParserRuleContext {
	public subQuerySource(): SubQuerySourceContext | undefined {
		return this.tryGetRuleContext(0, SubQuerySourceContext);
	}
	public tableSource(): TableSourceContext | undefined {
		return this.tryGetRuleContext(0, TableSourceContext);
	}
	public partitionedTableFunction(): PartitionedTableFunctionContext | undefined {
		return this.tryGetRuleContext(0, PartitionedTableFunctionContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_partitionTableFunctionSource; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterPartitionTableFunctionSource) {
			listener.enterPartitionTableFunctionSource(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitPartitionTableFunctionSource) {
			listener.exitPartitionTableFunctionSource(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitPartitionTableFunctionSource) {
			return visitor.visitPartitionTableFunctionSource(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class PartitionedTableFunctionContext extends ParserRuleContext {
	public _n!: Id_Context;
	public _ptfsrc!: PartitionTableFunctionSourceContext;
	public _spec!: PartitioningSpecContext;
	public _alias!: Id_Context;
	public LPAREN(): TerminalNode[];
	public LPAREN(i: number): TerminalNode;
	public LPAREN(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(HiveSqlParser.LPAREN);
		} else {
			return this.getToken(HiveSqlParser.LPAREN, i);
		}
	}
	public KW_ON(): TerminalNode { return this.getToken(HiveSqlParser.KW_ON, 0); }
	public RPAREN(): TerminalNode[];
	public RPAREN(i: number): TerminalNode;
	public RPAREN(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(HiveSqlParser.RPAREN);
		} else {
			return this.getToken(HiveSqlParser.RPAREN, i);
		}
	}
	public id_(): Id_Context[];
	public id_(i: number): Id_Context;
	public id_(i?: number): Id_Context | Id_Context[] {
		if (i === undefined) {
			return this.getRuleContexts(Id_Context);
		} else {
			return this.getRuleContext(i, Id_Context);
		}
	}
	public partitionTableFunctionSource(): PartitionTableFunctionSourceContext {
		return this.getRuleContext(0, PartitionTableFunctionSourceContext);
	}
	public Identifier(): TerminalNode[];
	public Identifier(i: number): TerminalNode;
	public Identifier(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(HiveSqlParser.Identifier);
		} else {
			return this.getToken(HiveSqlParser.Identifier, i);
		}
	}
	public expression(): ExpressionContext[];
	public expression(i: number): ExpressionContext;
	public expression(i?: number): ExpressionContext | ExpressionContext[] {
		if (i === undefined) {
			return this.getRuleContexts(ExpressionContext);
		} else {
			return this.getRuleContext(i, ExpressionContext);
		}
	}
	public partitioningSpec(): PartitioningSpecContext | undefined {
		return this.tryGetRuleContext(0, PartitioningSpecContext);
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(HiveSqlParser.COMMA);
		} else {
			return this.getToken(HiveSqlParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_partitionedTableFunction; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterPartitionedTableFunction) {
			listener.enterPartitionedTableFunction(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitPartitionedTableFunction) {
			listener.exitPartitionedTableFunction(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitPartitionedTableFunction) {
			return visitor.visitPartitionedTableFunction(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class WhereClauseContext extends ParserRuleContext {
	public KW_WHERE(): TerminalNode { return this.getToken(HiveSqlParser.KW_WHERE, 0); }
	public searchCondition(): SearchConditionContext {
		return this.getRuleContext(0, SearchConditionContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_whereClause; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterWhereClause) {
			listener.enterWhereClause(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitWhereClause) {
			listener.exitWhereClause(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitWhereClause) {
			return visitor.visitWhereClause(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class SearchConditionContext extends ParserRuleContext {
	public expression(): ExpressionContext {
		return this.getRuleContext(0, ExpressionContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_searchCondition; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterSearchCondition) {
			listener.enterSearchCondition(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitSearchCondition) {
			listener.exitSearchCondition(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitSearchCondition) {
			return visitor.visitSearchCondition(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ValuesSourceContext extends ParserRuleContext {
	public valuesClause(): ValuesClauseContext {
		return this.getRuleContext(0, ValuesClauseContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_valuesSource; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterValuesSource) {
			listener.enterValuesSource(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitValuesSource) {
			listener.exitValuesSource(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitValuesSource) {
			return visitor.visitValuesSource(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ValuesClauseContext extends ParserRuleContext {
	public KW_VALUES(): TerminalNode { return this.getToken(HiveSqlParser.KW_VALUES, 0); }
	public valuesTableConstructor(): ValuesTableConstructorContext {
		return this.getRuleContext(0, ValuesTableConstructorContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_valuesClause; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterValuesClause) {
			listener.enterValuesClause(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitValuesClause) {
			listener.exitValuesClause(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitValuesClause) {
			return visitor.visitValuesClause(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ValuesTableConstructorContext extends ParserRuleContext {
	public valueRowConstructor(): ValueRowConstructorContext[];
	public valueRowConstructor(i: number): ValueRowConstructorContext;
	public valueRowConstructor(i?: number): ValueRowConstructorContext | ValueRowConstructorContext[] {
		if (i === undefined) {
			return this.getRuleContexts(ValueRowConstructorContext);
		} else {
			return this.getRuleContext(i, ValueRowConstructorContext);
		}
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(HiveSqlParser.COMMA);
		} else {
			return this.getToken(HiveSqlParser.COMMA, i);
		}
	}
	public firstValueRowConstructor(): FirstValueRowConstructorContext | undefined {
		return this.tryGetRuleContext(0, FirstValueRowConstructorContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_valuesTableConstructor; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterValuesTableConstructor) {
			listener.enterValuesTableConstructor(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitValuesTableConstructor) {
			listener.exitValuesTableConstructor(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitValuesTableConstructor) {
			return visitor.visitValuesTableConstructor(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ValueRowConstructorContext extends ParserRuleContext {
	public expressionsInParenthesis(): ExpressionsInParenthesisContext {
		return this.getRuleContext(0, ExpressionsInParenthesisContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_valueRowConstructor; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterValueRowConstructor) {
			listener.enterValueRowConstructor(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitValueRowConstructor) {
			listener.exitValueRowConstructor(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitValueRowConstructor) {
			return visitor.visitValueRowConstructor(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class FirstValueRowConstructorContext extends ParserRuleContext {
	public LPAREN(): TerminalNode { return this.getToken(HiveSqlParser.LPAREN, 0); }
	public firstExpressionsWithAlias(): FirstExpressionsWithAliasContext {
		return this.getRuleContext(0, FirstExpressionsWithAliasContext);
	}
	public RPAREN(): TerminalNode { return this.getToken(HiveSqlParser.RPAREN, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_firstValueRowConstructor; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterFirstValueRowConstructor) {
			listener.enterFirstValueRowConstructor(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitFirstValueRowConstructor) {
			listener.exitFirstValueRowConstructor(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitFirstValueRowConstructor) {
			return visitor.visitFirstValueRowConstructor(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class VirtualTableSourceContext extends ParserRuleContext {
	public KW_TABLE(): TerminalNode { return this.getToken(HiveSqlParser.KW_TABLE, 0); }
	public LPAREN(): TerminalNode[];
	public LPAREN(i: number): TerminalNode;
	public LPAREN(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(HiveSqlParser.LPAREN);
		} else {
			return this.getToken(HiveSqlParser.LPAREN, i);
		}
	}
	public valuesClause(): ValuesClauseContext {
		return this.getRuleContext(0, ValuesClauseContext);
	}
	public RPAREN(): TerminalNode[];
	public RPAREN(i: number): TerminalNode;
	public RPAREN(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(HiveSqlParser.RPAREN);
		} else {
			return this.getToken(HiveSqlParser.RPAREN, i);
		}
	}
	public tableAlias(): TableAliasContext {
		return this.getRuleContext(0, TableAliasContext);
	}
	public KW_AS(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_AS, 0); }
	public id_(): Id_Context[];
	public id_(i: number): Id_Context;
	public id_(i?: number): Id_Context | Id_Context[] {
		if (i === undefined) {
			return this.getRuleContexts(Id_Context);
		} else {
			return this.getRuleContext(i, Id_Context);
		}
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(HiveSqlParser.COMMA);
		} else {
			return this.getToken(HiveSqlParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_virtualTableSource; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterVirtualTableSource) {
			listener.enterVirtualTableSource(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitVirtualTableSource) {
			listener.exitVirtualTableSource(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitVirtualTableSource) {
			return visitor.visitVirtualTableSource(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class SelectClauseContext extends ParserRuleContext {
	public KW_SELECT(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_SELECT, 0); }
	public selectList(): SelectListContext | undefined {
		return this.tryGetRuleContext(0, SelectListContext);
	}
	public KW_TRANSFORM(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_TRANSFORM, 0); }
	public selectTrfmClause(): SelectTrfmClauseContext | undefined {
		return this.tryGetRuleContext(0, SelectTrfmClauseContext);
	}
	public QUERY_HINT(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.QUERY_HINT, 0); }
	public all_distinct(): All_distinctContext | undefined {
		return this.tryGetRuleContext(0, All_distinctContext);
	}
	public trfmClause(): TrfmClauseContext | undefined {
		return this.tryGetRuleContext(0, TrfmClauseContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_selectClause; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterSelectClause) {
			listener.enterSelectClause(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitSelectClause) {
			listener.exitSelectClause(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitSelectClause) {
			return visitor.visitSelectClause(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class All_distinctContext extends ParserRuleContext {
	public KW_ALL(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_ALL, 0); }
	public KW_DISTINCT(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_DISTINCT, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_all_distinct; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterAll_distinct) {
			listener.enterAll_distinct(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitAll_distinct) {
			listener.exitAll_distinct(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitAll_distinct) {
			return visitor.visitAll_distinct(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class SelectListContext extends ParserRuleContext {
	public selectItem(): SelectItemContext[];
	public selectItem(i: number): SelectItemContext;
	public selectItem(i?: number): SelectItemContext | SelectItemContext[] {
		if (i === undefined) {
			return this.getRuleContexts(SelectItemContext);
		} else {
			return this.getRuleContext(i, SelectItemContext);
		}
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(HiveSqlParser.COMMA);
		} else {
			return this.getToken(HiveSqlParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_selectList; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterSelectList) {
			listener.enterSelectList(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitSelectList) {
			listener.exitSelectList(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitSelectList) {
			return visitor.visitSelectList(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class SelectTrfmClauseContext extends ParserRuleContext {
	public LPAREN(): TerminalNode[];
	public LPAREN(i: number): TerminalNode;
	public LPAREN(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(HiveSqlParser.LPAREN);
		} else {
			return this.getToken(HiveSqlParser.LPAREN, i);
		}
	}
	public selectExpressionList(): SelectExpressionListContext {
		return this.getRuleContext(0, SelectExpressionListContext);
	}
	public RPAREN(): TerminalNode[];
	public RPAREN(i: number): TerminalNode;
	public RPAREN(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(HiveSqlParser.RPAREN);
		} else {
			return this.getToken(HiveSqlParser.RPAREN, i);
		}
	}
	public rowFormat(): RowFormatContext[];
	public rowFormat(i: number): RowFormatContext;
	public rowFormat(i?: number): RowFormatContext | RowFormatContext[] {
		if (i === undefined) {
			return this.getRuleContexts(RowFormatContext);
		} else {
			return this.getRuleContext(i, RowFormatContext);
		}
	}
	public recordWriter(): RecordWriterContext {
		return this.getRuleContext(0, RecordWriterContext);
	}
	public KW_USING(): TerminalNode { return this.getToken(HiveSqlParser.KW_USING, 0); }
	public StringLiteral(): TerminalNode { return this.getToken(HiveSqlParser.StringLiteral, 0); }
	public recordReader(): RecordReaderContext {
		return this.getRuleContext(0, RecordReaderContext);
	}
	public KW_AS(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_AS, 0); }
	public aliasList(): AliasListContext | undefined {
		return this.tryGetRuleContext(0, AliasListContext);
	}
	public columnNameTypeList(): ColumnNameTypeListContext | undefined {
		return this.tryGetRuleContext(0, ColumnNameTypeListContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_selectTrfmClause; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterSelectTrfmClause) {
			listener.enterSelectTrfmClause(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitSelectTrfmClause) {
			listener.exitSelectTrfmClause(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitSelectTrfmClause) {
			return visitor.visitSelectTrfmClause(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class SelectItemContext extends ParserRuleContext {
	public tableAllColumns(): TableAllColumnsContext | undefined {
		return this.tryGetRuleContext(0, TableAllColumnsContext);
	}
	public columnName(): ColumnNameContext | undefined {
		return this.tryGetRuleContext(0, ColumnNameContext);
	}
	public expression(): ExpressionContext | undefined {
		return this.tryGetRuleContext(0, ExpressionContext);
	}
	public id_(): Id_Context[];
	public id_(i: number): Id_Context;
	public id_(i?: number): Id_Context | Id_Context[] {
		if (i === undefined) {
			return this.getRuleContexts(Id_Context);
		} else {
			return this.getRuleContext(i, Id_Context);
		}
	}
	public KW_AS(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_AS, 0); }
	public LPAREN(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.LPAREN, 0); }
	public RPAREN(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.RPAREN, 0); }
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(HiveSqlParser.COMMA);
		} else {
			return this.getToken(HiveSqlParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_selectItem; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterSelectItem) {
			listener.enterSelectItem(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitSelectItem) {
			listener.exitSelectItem(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitSelectItem) {
			return visitor.visitSelectItem(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class TrfmClauseContext extends ParserRuleContext {
	public selectExpressionList(): SelectExpressionListContext {
		return this.getRuleContext(0, SelectExpressionListContext);
	}
	public rowFormat(): RowFormatContext[];
	public rowFormat(i: number): RowFormatContext;
	public rowFormat(i?: number): RowFormatContext | RowFormatContext[] {
		if (i === undefined) {
			return this.getRuleContexts(RowFormatContext);
		} else {
			return this.getRuleContext(i, RowFormatContext);
		}
	}
	public recordWriter(): RecordWriterContext {
		return this.getRuleContext(0, RecordWriterContext);
	}
	public KW_USING(): TerminalNode { return this.getToken(HiveSqlParser.KW_USING, 0); }
	public StringLiteral(): TerminalNode { return this.getToken(HiveSqlParser.StringLiteral, 0); }
	public recordReader(): RecordReaderContext {
		return this.getRuleContext(0, RecordReaderContext);
	}
	public KW_MAP(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_MAP, 0); }
	public KW_REDUCE(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_REDUCE, 0); }
	public KW_AS(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_AS, 0); }
	public LPAREN(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.LPAREN, 0); }
	public RPAREN(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.RPAREN, 0); }
	public aliasList(): AliasListContext | undefined {
		return this.tryGetRuleContext(0, AliasListContext);
	}
	public columnNameTypeList(): ColumnNameTypeListContext | undefined {
		return this.tryGetRuleContext(0, ColumnNameTypeListContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_trfmClause; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterTrfmClause) {
			listener.enterTrfmClause(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitTrfmClause) {
			listener.exitTrfmClause(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitTrfmClause) {
			return visitor.visitTrfmClause(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class SelectExpressionContext extends ParserRuleContext {
	public tableAllColumns(): TableAllColumnsContext | undefined {
		return this.tryGetRuleContext(0, TableAllColumnsContext);
	}
	public expression(): ExpressionContext | undefined {
		return this.tryGetRuleContext(0, ExpressionContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_selectExpression; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterSelectExpression) {
			listener.enterSelectExpression(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitSelectExpression) {
			listener.exitSelectExpression(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitSelectExpression) {
			return visitor.visitSelectExpression(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class SelectExpressionListContext extends ParserRuleContext {
	public selectExpression(): SelectExpressionContext[];
	public selectExpression(i: number): SelectExpressionContext;
	public selectExpression(i?: number): SelectExpressionContext | SelectExpressionContext[] {
		if (i === undefined) {
			return this.getRuleContexts(SelectExpressionContext);
		} else {
			return this.getRuleContext(i, SelectExpressionContext);
		}
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(HiveSqlParser.COMMA);
		} else {
			return this.getToken(HiveSqlParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_selectExpressionList; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterSelectExpressionList) {
			listener.enterSelectExpressionList(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitSelectExpressionList) {
			listener.exitSelectExpressionList(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitSelectExpressionList) {
			return visitor.visitSelectExpressionList(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Window_clauseContext extends ParserRuleContext {
	public KW_WINDOW(): TerminalNode { return this.getToken(HiveSqlParser.KW_WINDOW, 0); }
	public window_defn(): Window_defnContext[];
	public window_defn(i: number): Window_defnContext;
	public window_defn(i?: number): Window_defnContext | Window_defnContext[] {
		if (i === undefined) {
			return this.getRuleContexts(Window_defnContext);
		} else {
			return this.getRuleContext(i, Window_defnContext);
		}
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(HiveSqlParser.COMMA);
		} else {
			return this.getToken(HiveSqlParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_window_clause; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterWindow_clause) {
			listener.enterWindow_clause(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitWindow_clause) {
			listener.exitWindow_clause(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitWindow_clause) {
			return visitor.visitWindow_clause(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Window_defnContext extends ParserRuleContext {
	public id_(): Id_Context {
		return this.getRuleContext(0, Id_Context);
	}
	public KW_AS(): TerminalNode { return this.getToken(HiveSqlParser.KW_AS, 0); }
	public window_specification(): Window_specificationContext {
		return this.getRuleContext(0, Window_specificationContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_window_defn; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterWindow_defn) {
			listener.enterWindow_defn(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitWindow_defn) {
			listener.exitWindow_defn(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitWindow_defn) {
			return visitor.visitWindow_defn(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Window_specificationContext extends ParserRuleContext {
	public id_(): Id_Context | undefined {
		return this.tryGetRuleContext(0, Id_Context);
	}
	public LPAREN(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.LPAREN, 0); }
	public RPAREN(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.RPAREN, 0); }
	public partitioningSpec(): PartitioningSpecContext | undefined {
		return this.tryGetRuleContext(0, PartitioningSpecContext);
	}
	public window_frame(): Window_frameContext | undefined {
		return this.tryGetRuleContext(0, Window_frameContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_window_specification; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterWindow_specification) {
			listener.enterWindow_specification(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitWindow_specification) {
			listener.exitWindow_specification(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitWindow_specification) {
			return visitor.visitWindow_specification(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Window_frameContext extends ParserRuleContext {
	public window_range_expression(): Window_range_expressionContext | undefined {
		return this.tryGetRuleContext(0, Window_range_expressionContext);
	}
	public window_value_expression(): Window_value_expressionContext | undefined {
		return this.tryGetRuleContext(0, Window_value_expressionContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_window_frame; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterWindow_frame) {
			listener.enterWindow_frame(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitWindow_frame) {
			listener.exitWindow_frame(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitWindow_frame) {
			return visitor.visitWindow_frame(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Window_range_expressionContext extends ParserRuleContext {
	public KW_ROWS(): TerminalNode { return this.getToken(HiveSqlParser.KW_ROWS, 0); }
	public window_frame_start_boundary(): Window_frame_start_boundaryContext | undefined {
		return this.tryGetRuleContext(0, Window_frame_start_boundaryContext);
	}
	public KW_BETWEEN(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_BETWEEN, 0); }
	public window_frame_boundary(): Window_frame_boundaryContext[];
	public window_frame_boundary(i: number): Window_frame_boundaryContext;
	public window_frame_boundary(i?: number): Window_frame_boundaryContext | Window_frame_boundaryContext[] {
		if (i === undefined) {
			return this.getRuleContexts(Window_frame_boundaryContext);
		} else {
			return this.getRuleContext(i, Window_frame_boundaryContext);
		}
	}
	public KW_AND(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_AND, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_window_range_expression; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterWindow_range_expression) {
			listener.enterWindow_range_expression(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitWindow_range_expression) {
			listener.exitWindow_range_expression(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitWindow_range_expression) {
			return visitor.visitWindow_range_expression(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Window_value_expressionContext extends ParserRuleContext {
	public KW_RANGE(): TerminalNode { return this.getToken(HiveSqlParser.KW_RANGE, 0); }
	public window_frame_start_boundary(): Window_frame_start_boundaryContext | undefined {
		return this.tryGetRuleContext(0, Window_frame_start_boundaryContext);
	}
	public KW_BETWEEN(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_BETWEEN, 0); }
	public window_frame_boundary(): Window_frame_boundaryContext[];
	public window_frame_boundary(i: number): Window_frame_boundaryContext;
	public window_frame_boundary(i?: number): Window_frame_boundaryContext | Window_frame_boundaryContext[] {
		if (i === undefined) {
			return this.getRuleContexts(Window_frame_boundaryContext);
		} else {
			return this.getRuleContext(i, Window_frame_boundaryContext);
		}
	}
	public KW_AND(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_AND, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_window_value_expression; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterWindow_value_expression) {
			listener.enterWindow_value_expression(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitWindow_value_expression) {
			listener.exitWindow_value_expression(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitWindow_value_expression) {
			return visitor.visitWindow_value_expression(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Window_frame_start_boundaryContext extends ParserRuleContext {
	public KW_UNBOUNDED(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_UNBOUNDED, 0); }
	public KW_PRECEDING(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_PRECEDING, 0); }
	public KW_CURRENT(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_CURRENT, 0); }
	public KW_ROW(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_ROW, 0); }
	public Number(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.Number, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_window_frame_start_boundary; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterWindow_frame_start_boundary) {
			listener.enterWindow_frame_start_boundary(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitWindow_frame_start_boundary) {
			listener.exitWindow_frame_start_boundary(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitWindow_frame_start_boundary) {
			return visitor.visitWindow_frame_start_boundary(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Window_frame_boundaryContext extends ParserRuleContext {
	public KW_UNBOUNDED(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_UNBOUNDED, 0); }
	public Number(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.Number, 0); }
	public KW_PRECEDING(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_PRECEDING, 0); }
	public KW_FOLLOWING(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_FOLLOWING, 0); }
	public KW_CURRENT(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_CURRENT, 0); }
	public KW_ROW(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_ROW, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_window_frame_boundary; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterWindow_frame_boundary) {
			listener.enterWindow_frame_boundary(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitWindow_frame_boundary) {
			listener.exitWindow_frame_boundary(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitWindow_frame_boundary) {
			return visitor.visitWindow_frame_boundary(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class GroupByClauseContext extends ParserRuleContext {
	public KW_GROUP(): TerminalNode { return this.getToken(HiveSqlParser.KW_GROUP, 0); }
	public KW_BY(): TerminalNode { return this.getToken(HiveSqlParser.KW_BY, 0); }
	public groupby_expression(): Groupby_expressionContext {
		return this.getRuleContext(0, Groupby_expressionContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_groupByClause; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterGroupByClause) {
			listener.enterGroupByClause(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitGroupByClause) {
			listener.exitGroupByClause(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitGroupByClause) {
			return visitor.visitGroupByClause(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Groupby_expressionContext extends ParserRuleContext {
	public columnName(): ColumnNameContext | undefined {
		return this.tryGetRuleContext(0, ColumnNameContext);
	}
	public rollupStandard(): RollupStandardContext | undefined {
		return this.tryGetRuleContext(0, RollupStandardContext);
	}
	public rollupOldSyntax(): RollupOldSyntaxContext | undefined {
		return this.tryGetRuleContext(0, RollupOldSyntaxContext);
	}
	public groupByEmpty(): GroupByEmptyContext | undefined {
		return this.tryGetRuleContext(0, GroupByEmptyContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_groupby_expression; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterGroupby_expression) {
			listener.enterGroupby_expression(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitGroupby_expression) {
			listener.exitGroupby_expression(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitGroupby_expression) {
			return visitor.visitGroupby_expression(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class GroupByEmptyContext extends ParserRuleContext {
	public LPAREN(): TerminalNode { return this.getToken(HiveSqlParser.LPAREN, 0); }
	public RPAREN(): TerminalNode { return this.getToken(HiveSqlParser.RPAREN, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_groupByEmpty; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterGroupByEmpty) {
			listener.enterGroupByEmpty(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitGroupByEmpty) {
			listener.exitGroupByEmpty(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitGroupByEmpty) {
			return visitor.visitGroupByEmpty(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class RollupStandardContext extends ParserRuleContext {
	public _rollup!: Token;
	public _cube!: Token;
	public LPAREN(): TerminalNode { return this.getToken(HiveSqlParser.LPAREN, 0); }
	public expression(): ExpressionContext[];
	public expression(i: number): ExpressionContext;
	public expression(i?: number): ExpressionContext | ExpressionContext[] {
		if (i === undefined) {
			return this.getRuleContexts(ExpressionContext);
		} else {
			return this.getRuleContext(i, ExpressionContext);
		}
	}
	public RPAREN(): TerminalNode { return this.getToken(HiveSqlParser.RPAREN, 0); }
	public KW_ROLLUP(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_ROLLUP, 0); }
	public KW_CUBE(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_CUBE, 0); }
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(HiveSqlParser.COMMA);
		} else {
			return this.getToken(HiveSqlParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_rollupStandard; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterRollupStandard) {
			listener.enterRollupStandard(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitRollupStandard) {
			listener.exitRollupStandard(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitRollupStandard) {
			return visitor.visitRollupStandard(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class RollupOldSyntaxContext extends ParserRuleContext {
	public _expr!: ExpressionsNotInParenthesisContext;
	public _rollup!: Token;
	public _cube!: Token;
	public _sets!: Token;
	public expressionsNotInParenthesis(): ExpressionsNotInParenthesisContext {
		return this.getRuleContext(0, ExpressionsNotInParenthesisContext);
	}
	public KW_ROLLUP(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_ROLLUP, 0); }
	public KW_CUBE(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_CUBE, 0); }
	public KW_SETS(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_SETS, 0); }
	public LPAREN(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.LPAREN, 0); }
	public groupingSetExpression(): GroupingSetExpressionContext[];
	public groupingSetExpression(i: number): GroupingSetExpressionContext;
	public groupingSetExpression(i?: number): GroupingSetExpressionContext | GroupingSetExpressionContext[] {
		if (i === undefined) {
			return this.getRuleContexts(GroupingSetExpressionContext);
		} else {
			return this.getRuleContext(i, GroupingSetExpressionContext);
		}
	}
	public RPAREN(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.RPAREN, 0); }
	public KW_WITH(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_WITH, 0); }
	public KW_GROUPING(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_GROUPING, 0); }
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(HiveSqlParser.COMMA);
		} else {
			return this.getToken(HiveSqlParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_rollupOldSyntax; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterRollupOldSyntax) {
			listener.enterRollupOldSyntax(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitRollupOldSyntax) {
			listener.exitRollupOldSyntax(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitRollupOldSyntax) {
			return visitor.visitRollupOldSyntax(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class GroupingSetExpressionContext extends ParserRuleContext {
	public groupingSetExpressionMultiple(): GroupingSetExpressionMultipleContext | undefined {
		return this.tryGetRuleContext(0, GroupingSetExpressionMultipleContext);
	}
	public groupingExpressionSingle(): GroupingExpressionSingleContext | undefined {
		return this.tryGetRuleContext(0, GroupingExpressionSingleContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_groupingSetExpression; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterGroupingSetExpression) {
			listener.enterGroupingSetExpression(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitGroupingSetExpression) {
			listener.exitGroupingSetExpression(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitGroupingSetExpression) {
			return visitor.visitGroupingSetExpression(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class GroupingSetExpressionMultipleContext extends ParserRuleContext {
	public LPAREN(): TerminalNode { return this.getToken(HiveSqlParser.LPAREN, 0); }
	public RPAREN(): TerminalNode { return this.getToken(HiveSqlParser.RPAREN, 0); }
	public expression(): ExpressionContext[];
	public expression(i: number): ExpressionContext;
	public expression(i?: number): ExpressionContext | ExpressionContext[] {
		if (i === undefined) {
			return this.getRuleContexts(ExpressionContext);
		} else {
			return this.getRuleContext(i, ExpressionContext);
		}
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(HiveSqlParser.COMMA);
		} else {
			return this.getToken(HiveSqlParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_groupingSetExpressionMultiple; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterGroupingSetExpressionMultiple) {
			listener.enterGroupingSetExpressionMultiple(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitGroupingSetExpressionMultiple) {
			listener.exitGroupingSetExpressionMultiple(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitGroupingSetExpressionMultiple) {
			return visitor.visitGroupingSetExpressionMultiple(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class GroupingExpressionSingleContext extends ParserRuleContext {
	public expression(): ExpressionContext {
		return this.getRuleContext(0, ExpressionContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_groupingExpressionSingle; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterGroupingExpressionSingle) {
			listener.enterGroupingExpressionSingle(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitGroupingExpressionSingle) {
			listener.exitGroupingExpressionSingle(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitGroupingExpressionSingle) {
			return visitor.visitGroupingExpressionSingle(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class HavingClauseContext extends ParserRuleContext {
	public KW_HAVING(): TerminalNode { return this.getToken(HiveSqlParser.KW_HAVING, 0); }
	public havingCondition(): HavingConditionContext {
		return this.getRuleContext(0, HavingConditionContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_havingClause; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterHavingClause) {
			listener.enterHavingClause(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitHavingClause) {
			listener.exitHavingClause(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitHavingClause) {
			return visitor.visitHavingClause(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class QualifyClauseContext extends ParserRuleContext {
	public KW_QUALIFY(): TerminalNode { return this.getToken(HiveSqlParser.KW_QUALIFY, 0); }
	public expression(): ExpressionContext {
		return this.getRuleContext(0, ExpressionContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_qualifyClause; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterQualifyClause) {
			listener.enterQualifyClause(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitQualifyClause) {
			listener.exitQualifyClause(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitQualifyClause) {
			return visitor.visitQualifyClause(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class HavingConditionContext extends ParserRuleContext {
	public expression(): ExpressionContext {
		return this.getRuleContext(0, ExpressionContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_havingCondition; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterHavingCondition) {
			listener.enterHavingCondition(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitHavingCondition) {
			listener.exitHavingCondition(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitHavingCondition) {
			return visitor.visitHavingCondition(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ExpressionsInParenthesisContext extends ParserRuleContext {
	public LPAREN(): TerminalNode { return this.getToken(HiveSqlParser.LPAREN, 0); }
	public expressionsNotInParenthesis(): ExpressionsNotInParenthesisContext {
		return this.getRuleContext(0, ExpressionsNotInParenthesisContext);
	}
	public RPAREN(): TerminalNode { return this.getToken(HiveSqlParser.RPAREN, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_expressionsInParenthesis; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterExpressionsInParenthesis) {
			listener.enterExpressionsInParenthesis(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitExpressionsInParenthesis) {
			listener.exitExpressionsInParenthesis(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitExpressionsInParenthesis) {
			return visitor.visitExpressionsInParenthesis(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ExpressionsNotInParenthesisContext extends ParserRuleContext {
	public _first!: ExpressionOrDefaultContext;
	public _more!: ExpressionPartContext;
	public expressionOrDefault(): ExpressionOrDefaultContext {
		return this.getRuleContext(0, ExpressionOrDefaultContext);
	}
	public expressionPart(): ExpressionPartContext | undefined {
		return this.tryGetRuleContext(0, ExpressionPartContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_expressionsNotInParenthesis; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterExpressionsNotInParenthesis) {
			listener.enterExpressionsNotInParenthesis(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitExpressionsNotInParenthesis) {
			listener.exitExpressionsNotInParenthesis(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitExpressionsNotInParenthesis) {
			return visitor.visitExpressionsNotInParenthesis(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ExpressionPartContext extends ParserRuleContext {
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(HiveSqlParser.COMMA);
		} else {
			return this.getToken(HiveSqlParser.COMMA, i);
		}
	}
	public expressionOrDefault(): ExpressionOrDefaultContext[];
	public expressionOrDefault(i: number): ExpressionOrDefaultContext;
	public expressionOrDefault(i?: number): ExpressionOrDefaultContext | ExpressionOrDefaultContext[] {
		if (i === undefined) {
			return this.getRuleContexts(ExpressionOrDefaultContext);
		} else {
			return this.getRuleContext(i, ExpressionOrDefaultContext);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_expressionPart; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterExpressionPart) {
			listener.enterExpressionPart(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitExpressionPart) {
			listener.exitExpressionPart(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitExpressionPart) {
			return visitor.visitExpressionPart(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ExpressionOrDefaultContext extends ParserRuleContext {
	public defaultValue(): DefaultValueContext | undefined {
		return this.tryGetRuleContext(0, DefaultValueContext);
	}
	public expression(): ExpressionContext | undefined {
		return this.tryGetRuleContext(0, ExpressionContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_expressionOrDefault; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterExpressionOrDefault) {
			listener.enterExpressionOrDefault(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitExpressionOrDefault) {
			listener.exitExpressionOrDefault(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitExpressionOrDefault) {
			return visitor.visitExpressionOrDefault(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class FirstExpressionsWithAliasContext extends ParserRuleContext {
	public _first!: ExpressionContext;
	public _colAlias!: Id_Context;
	public expression(): ExpressionContext {
		return this.getRuleContext(0, ExpressionContext);
	}
	public KW_AS(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_AS, 0); }
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(HiveSqlParser.COMMA);
		} else {
			return this.getToken(HiveSqlParser.COMMA, i);
		}
	}
	public expressionWithAlias(): ExpressionWithAliasContext[];
	public expressionWithAlias(i: number): ExpressionWithAliasContext;
	public expressionWithAlias(i?: number): ExpressionWithAliasContext | ExpressionWithAliasContext[] {
		if (i === undefined) {
			return this.getRuleContexts(ExpressionWithAliasContext);
		} else {
			return this.getRuleContext(i, ExpressionWithAliasContext);
		}
	}
	public id_(): Id_Context | undefined {
		return this.tryGetRuleContext(0, Id_Context);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_firstExpressionsWithAlias; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterFirstExpressionsWithAlias) {
			listener.enterFirstExpressionsWithAlias(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitFirstExpressionsWithAlias) {
			listener.exitFirstExpressionsWithAlias(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitFirstExpressionsWithAlias) {
			return visitor.visitFirstExpressionsWithAlias(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ExpressionWithAliasContext extends ParserRuleContext {
	public _alias!: Id_Context;
	public expression(): ExpressionContext {
		return this.getRuleContext(0, ExpressionContext);
	}
	public KW_AS(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_AS, 0); }
	public id_(): Id_Context | undefined {
		return this.tryGetRuleContext(0, Id_Context);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_expressionWithAlias; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterExpressionWithAlias) {
			listener.enterExpressionWithAlias(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitExpressionWithAlias) {
			listener.exitExpressionWithAlias(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitExpressionWithAlias) {
			return visitor.visitExpressionWithAlias(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ExpressionsContext extends ParserRuleContext {
	public expressionsInParenthesis(): ExpressionsInParenthesisContext | undefined {
		return this.tryGetRuleContext(0, ExpressionsInParenthesisContext);
	}
	public expressionsNotInParenthesis(): ExpressionsNotInParenthesisContext | undefined {
		return this.tryGetRuleContext(0, ExpressionsNotInParenthesisContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_expressions; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterExpressions) {
			listener.enterExpressions(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitExpressions) {
			listener.exitExpressions(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitExpressions) {
			return visitor.visitExpressions(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ColumnRefOrderInParenthesisContext extends ParserRuleContext {
	public LPAREN(): TerminalNode { return this.getToken(HiveSqlParser.LPAREN, 0); }
	public columnRefOrder(): ColumnRefOrderContext[];
	public columnRefOrder(i: number): ColumnRefOrderContext;
	public columnRefOrder(i?: number): ColumnRefOrderContext | ColumnRefOrderContext[] {
		if (i === undefined) {
			return this.getRuleContexts(ColumnRefOrderContext);
		} else {
			return this.getRuleContext(i, ColumnRefOrderContext);
		}
	}
	public RPAREN(): TerminalNode { return this.getToken(HiveSqlParser.RPAREN, 0); }
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(HiveSqlParser.COMMA);
		} else {
			return this.getToken(HiveSqlParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_columnRefOrderInParenthesis; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterColumnRefOrderInParenthesis) {
			listener.enterColumnRefOrderInParenthesis(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitColumnRefOrderInParenthesis) {
			listener.exitColumnRefOrderInParenthesis(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitColumnRefOrderInParenthesis) {
			return visitor.visitColumnRefOrderInParenthesis(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ColumnRefOrderNotInParenthesisContext extends ParserRuleContext {
	public columnRefOrder(): ColumnRefOrderContext[];
	public columnRefOrder(i: number): ColumnRefOrderContext;
	public columnRefOrder(i?: number): ColumnRefOrderContext | ColumnRefOrderContext[] {
		if (i === undefined) {
			return this.getRuleContexts(ColumnRefOrderContext);
		} else {
			return this.getRuleContext(i, ColumnRefOrderContext);
		}
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(HiveSqlParser.COMMA);
		} else {
			return this.getToken(HiveSqlParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_columnRefOrderNotInParenthesis; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterColumnRefOrderNotInParenthesis) {
			listener.enterColumnRefOrderNotInParenthesis(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitColumnRefOrderNotInParenthesis) {
			listener.exitColumnRefOrderNotInParenthesis(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitColumnRefOrderNotInParenthesis) {
			return visitor.visitColumnRefOrderNotInParenthesis(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class OrderByClauseContext extends ParserRuleContext {
	public KW_ORDER(): TerminalNode { return this.getToken(HiveSqlParser.KW_ORDER, 0); }
	public KW_BY(): TerminalNode { return this.getToken(HiveSqlParser.KW_BY, 0); }
	public columnRefOrder(): ColumnRefOrderContext[];
	public columnRefOrder(i: number): ColumnRefOrderContext;
	public columnRefOrder(i?: number): ColumnRefOrderContext | ColumnRefOrderContext[] {
		if (i === undefined) {
			return this.getRuleContexts(ColumnRefOrderContext);
		} else {
			return this.getRuleContext(i, ColumnRefOrderContext);
		}
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(HiveSqlParser.COMMA);
		} else {
			return this.getToken(HiveSqlParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_orderByClause; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterOrderByClause) {
			listener.enterOrderByClause(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitOrderByClause) {
			listener.exitOrderByClause(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitOrderByClause) {
			return visitor.visitOrderByClause(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ClusterByClauseContext extends ParserRuleContext {
	public KW_CLUSTER(): TerminalNode { return this.getToken(HiveSqlParser.KW_CLUSTER, 0); }
	public KW_BY(): TerminalNode { return this.getToken(HiveSqlParser.KW_BY, 0); }
	public expressions(): ExpressionsContext {
		return this.getRuleContext(0, ExpressionsContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_clusterByClause; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterClusterByClause) {
			listener.enterClusterByClause(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitClusterByClause) {
			listener.exitClusterByClause(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitClusterByClause) {
			return visitor.visitClusterByClause(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class PartitionByClauseContext extends ParserRuleContext {
	public KW_PARTITION(): TerminalNode { return this.getToken(HiveSqlParser.KW_PARTITION, 0); }
	public KW_BY(): TerminalNode { return this.getToken(HiveSqlParser.KW_BY, 0); }
	public expressions(): ExpressionsContext {
		return this.getRuleContext(0, ExpressionsContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_partitionByClause; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterPartitionByClause) {
			listener.enterPartitionByClause(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitPartitionByClause) {
			listener.exitPartitionByClause(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitPartitionByClause) {
			return visitor.visitPartitionByClause(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class DistributeByClauseContext extends ParserRuleContext {
	public KW_DISTRIBUTE(): TerminalNode { return this.getToken(HiveSqlParser.KW_DISTRIBUTE, 0); }
	public KW_BY(): TerminalNode { return this.getToken(HiveSqlParser.KW_BY, 0); }
	public expressions(): ExpressionsContext {
		return this.getRuleContext(0, ExpressionsContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_distributeByClause; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterDistributeByClause) {
			listener.enterDistributeByClause(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitDistributeByClause) {
			listener.exitDistributeByClause(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitDistributeByClause) {
			return visitor.visitDistributeByClause(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class SortByClauseContext extends ParserRuleContext {
	public KW_SORT(): TerminalNode { return this.getToken(HiveSqlParser.KW_SORT, 0); }
	public KW_BY(): TerminalNode { return this.getToken(HiveSqlParser.KW_BY, 0); }
	public columnRefOrderInParenthesis(): ColumnRefOrderInParenthesisContext | undefined {
		return this.tryGetRuleContext(0, ColumnRefOrderInParenthesisContext);
	}
	public columnRefOrderNotInParenthesis(): ColumnRefOrderNotInParenthesisContext | undefined {
		return this.tryGetRuleContext(0, ColumnRefOrderNotInParenthesisContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_sortByClause; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterSortByClause) {
			listener.enterSortByClause(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitSortByClause) {
			listener.exitSortByClause(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitSortByClause) {
			return visitor.visitSortByClause(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class TrimFunctionContext extends ParserRuleContext {
	public _leading!: Token;
	public _trailing!: Token;
	public _trim_characters!: SelectExpressionContext;
	public _str!: SelectExpressionContext;
	public KW_TRIM(): TerminalNode { return this.getToken(HiveSqlParser.KW_TRIM, 0); }
	public LPAREN(): TerminalNode { return this.getToken(HiveSqlParser.LPAREN, 0); }
	public KW_FROM(): TerminalNode { return this.getToken(HiveSqlParser.KW_FROM, 0); }
	public RPAREN(): TerminalNode { return this.getToken(HiveSqlParser.RPAREN, 0); }
	public selectExpression(): SelectExpressionContext[];
	public selectExpression(i: number): SelectExpressionContext;
	public selectExpression(i?: number): SelectExpressionContext | SelectExpressionContext[] {
		if (i === undefined) {
			return this.getRuleContexts(SelectExpressionContext);
		} else {
			return this.getRuleContext(i, SelectExpressionContext);
		}
	}
	public KW_BOTH(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_BOTH, 0); }
	public KW_LEADING(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_LEADING, 0); }
	public KW_TRAILING(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_TRAILING, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_trimFunction; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterTrimFunction) {
			listener.enterTrimFunction(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitTrimFunction) {
			listener.exitTrimFunction(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitTrimFunction) {
			return visitor.visitTrimFunction(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Function_Context extends ParserRuleContext {
	public _star!: Token;
	public _dist!: All_distinctContext;
	public _within!: Token;
	public _ordBy!: OrderByClauseContext;
	public _nt!: Null_treatmentContext;
	public _ws!: Window_specificationContext;
	public trimFunction(): TrimFunctionContext | undefined {
		return this.tryGetRuleContext(0, TrimFunctionContext);
	}
	public functionNameForInvoke(): FunctionNameForInvokeContext | undefined {
		return this.tryGetRuleContext(0, FunctionNameForInvokeContext);
	}
	public LPAREN(): TerminalNode[];
	public LPAREN(i: number): TerminalNode;
	public LPAREN(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(HiveSqlParser.LPAREN);
		} else {
			return this.getToken(HiveSqlParser.LPAREN, i);
		}
	}
	public RPAREN(): TerminalNode[];
	public RPAREN(i: number): TerminalNode;
	public RPAREN(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(HiveSqlParser.RPAREN);
		} else {
			return this.getToken(HiveSqlParser.RPAREN, i);
		}
	}
	public KW_GROUP(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_GROUP, 0); }
	public KW_OVER(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_OVER, 0); }
	public STAR(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.STAR, 0); }
	public KW_WITHIN(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_WITHIN, 0); }
	public orderByClause(): OrderByClauseContext | undefined {
		return this.tryGetRuleContext(0, OrderByClauseContext);
	}
	public window_specification(): Window_specificationContext | undefined {
		return this.tryGetRuleContext(0, Window_specificationContext);
	}
	public null_treatment(): Null_treatmentContext | undefined {
		return this.tryGetRuleContext(0, Null_treatmentContext);
	}
	public selectExpression(): SelectExpressionContext[];
	public selectExpression(i: number): SelectExpressionContext;
	public selectExpression(i?: number): SelectExpressionContext | SelectExpressionContext[] {
		if (i === undefined) {
			return this.getRuleContexts(SelectExpressionContext);
		} else {
			return this.getRuleContext(i, SelectExpressionContext);
		}
	}
	public all_distinct(): All_distinctContext | undefined {
		return this.tryGetRuleContext(0, All_distinctContext);
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(HiveSqlParser.COMMA);
		} else {
			return this.getToken(HiveSqlParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_function_; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterFunction_) {
			listener.enterFunction_(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitFunction_) {
			listener.exitFunction_(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitFunction_) {
			return visitor.visitFunction_(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Null_treatmentContext extends ParserRuleContext {
	public KW_RESPECT(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_RESPECT, 0); }
	public KW_NULLS(): TerminalNode { return this.getToken(HiveSqlParser.KW_NULLS, 0); }
	public KW_IGNORE(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_IGNORE, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_null_treatment; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterNull_treatment) {
			listener.enterNull_treatment(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitNull_treatment) {
			listener.exitNull_treatment(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitNull_treatment) {
			return visitor.visitNull_treatment(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class FunctionNameCreateContext extends ParserRuleContext {
	public functionIdentifier(): FunctionIdentifierContext {
		return this.getRuleContext(0, FunctionIdentifierContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_functionNameCreate; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterFunctionNameCreate) {
			listener.enterFunctionNameCreate(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitFunctionNameCreate) {
			listener.exitFunctionNameCreate(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitFunctionNameCreate) {
			return visitor.visitFunctionNameCreate(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class FunctionNameForDDLContext extends ParserRuleContext {
	public userDefinedFuncName(): UserDefinedFuncNameContext | undefined {
		return this.tryGetRuleContext(0, UserDefinedFuncNameContext);
	}
	public StringLiteral(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.StringLiteral, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_functionNameForDDL; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterFunctionNameForDDL) {
			listener.enterFunctionNameForDDL(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitFunctionNameForDDL) {
			listener.exitFunctionNameForDDL(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitFunctionNameForDDL) {
			return visitor.visitFunctionNameForDDL(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class FunctionNameForInvokeContext extends ParserRuleContext {
	public userDefinedFuncName(): UserDefinedFuncNameContext | undefined {
		return this.tryGetRuleContext(0, UserDefinedFuncNameContext);
	}
	public internalFunctionName(): InternalFunctionNameContext | undefined {
		return this.tryGetRuleContext(0, InternalFunctionNameContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_functionNameForInvoke; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterFunctionNameForInvoke) {
			listener.enterFunctionNameForInvoke(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitFunctionNameForInvoke) {
			listener.exitFunctionNameForInvoke(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitFunctionNameForInvoke) {
			return visitor.visitFunctionNameForInvoke(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class UserDefinedFuncNameContext extends ParserRuleContext {
	public functionIdentifier(): FunctionIdentifierContext {
		return this.getRuleContext(0, FunctionIdentifierContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_userDefinedFuncName; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterUserDefinedFuncName) {
			listener.enterUserDefinedFuncName(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitUserDefinedFuncName) {
			listener.exitUserDefinedFuncName(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitUserDefinedFuncName) {
			return visitor.visitUserDefinedFuncName(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class InternalFunctionNameContext extends ParserRuleContext {
	public sql11ReservedKeywordsUsedAsFunctionName(): Sql11ReservedKeywordsUsedAsFunctionNameContext | undefined {
		return this.tryGetRuleContext(0, Sql11ReservedKeywordsUsedAsFunctionNameContext);
	}
	public sysFuncNames(): SysFuncNamesContext | undefined {
		return this.tryGetRuleContext(0, SysFuncNamesContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_internalFunctionName; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterInternalFunctionName) {
			listener.enterInternalFunctionName(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitInternalFunctionName) {
			listener.exitInternalFunctionName(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitInternalFunctionName) {
			return visitor.visitInternalFunctionName(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class CastExpressionContext extends ParserRuleContext {
	public _toType!: PrimitiveTypeContext;
	public _fmt!: Token;
	public KW_CAST(): TerminalNode { return this.getToken(HiveSqlParser.KW_CAST, 0); }
	public LPAREN(): TerminalNode { return this.getToken(HiveSqlParser.LPAREN, 0); }
	public expression(): ExpressionContext {
		return this.getRuleContext(0, ExpressionContext);
	}
	public KW_AS(): TerminalNode { return this.getToken(HiveSqlParser.KW_AS, 0); }
	public RPAREN(): TerminalNode { return this.getToken(HiveSqlParser.RPAREN, 0); }
	public primitiveType(): PrimitiveTypeContext {
		return this.getRuleContext(0, PrimitiveTypeContext);
	}
	public StringLiteral(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.StringLiteral, 0); }
	public KW_FORMAT(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_FORMAT, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_castExpression; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterCastExpression) {
			listener.enterCastExpression(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitCastExpression) {
			listener.exitCastExpression(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitCastExpression) {
			return visitor.visitCastExpression(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class CaseExpressionContext extends ParserRuleContext {
	public KW_CASE(): TerminalNode { return this.getToken(HiveSqlParser.KW_CASE, 0); }
	public expression(): ExpressionContext[];
	public expression(i: number): ExpressionContext;
	public expression(i?: number): ExpressionContext | ExpressionContext[] {
		if (i === undefined) {
			return this.getRuleContexts(ExpressionContext);
		} else {
			return this.getRuleContext(i, ExpressionContext);
		}
	}
	public KW_END(): TerminalNode { return this.getToken(HiveSqlParser.KW_END, 0); }
	public KW_WHEN(): TerminalNode[];
	public KW_WHEN(i: number): TerminalNode;
	public KW_WHEN(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(HiveSqlParser.KW_WHEN);
		} else {
			return this.getToken(HiveSqlParser.KW_WHEN, i);
		}
	}
	public KW_THEN(): TerminalNode[];
	public KW_THEN(i: number): TerminalNode;
	public KW_THEN(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(HiveSqlParser.KW_THEN);
		} else {
			return this.getToken(HiveSqlParser.KW_THEN, i);
		}
	}
	public KW_ELSE(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_ELSE, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_caseExpression; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterCaseExpression) {
			listener.enterCaseExpression(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitCaseExpression) {
			listener.exitCaseExpression(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitCaseExpression) {
			return visitor.visitCaseExpression(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class WhenExpressionContext extends ParserRuleContext {
	public KW_CASE(): TerminalNode { return this.getToken(HiveSqlParser.KW_CASE, 0); }
	public KW_END(): TerminalNode { return this.getToken(HiveSqlParser.KW_END, 0); }
	public KW_WHEN(): TerminalNode[];
	public KW_WHEN(i: number): TerminalNode;
	public KW_WHEN(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(HiveSqlParser.KW_WHEN);
		} else {
			return this.getToken(HiveSqlParser.KW_WHEN, i);
		}
	}
	public expression(): ExpressionContext[];
	public expression(i: number): ExpressionContext;
	public expression(i?: number): ExpressionContext | ExpressionContext[] {
		if (i === undefined) {
			return this.getRuleContexts(ExpressionContext);
		} else {
			return this.getRuleContext(i, ExpressionContext);
		}
	}
	public KW_THEN(): TerminalNode[];
	public KW_THEN(i: number): TerminalNode;
	public KW_THEN(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(HiveSqlParser.KW_THEN);
		} else {
			return this.getToken(HiveSqlParser.KW_THEN, i);
		}
	}
	public KW_ELSE(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_ELSE, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_whenExpression; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterWhenExpression) {
			listener.enterWhenExpression(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitWhenExpression) {
			listener.exitWhenExpression(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitWhenExpression) {
			return visitor.visitWhenExpression(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class FloorExpressionContext extends ParserRuleContext {
	public _floorUnit!: FloorDateQualifiersContext;
	public KW_FLOOR(): TerminalNode { return this.getToken(HiveSqlParser.KW_FLOOR, 0); }
	public LPAREN(): TerminalNode { return this.getToken(HiveSqlParser.LPAREN, 0); }
	public expression(): ExpressionContext {
		return this.getRuleContext(0, ExpressionContext);
	}
	public RPAREN(): TerminalNode { return this.getToken(HiveSqlParser.RPAREN, 0); }
	public KW_TO(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_TO, 0); }
	public floorDateQualifiers(): FloorDateQualifiersContext | undefined {
		return this.tryGetRuleContext(0, FloorDateQualifiersContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_floorExpression; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterFloorExpression) {
			listener.enterFloorExpression(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitFloorExpression) {
			listener.exitFloorExpression(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitFloorExpression) {
			return visitor.visitFloorExpression(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class FloorDateQualifiersContext extends ParserRuleContext {
	public year(): YearContext | undefined {
		return this.tryGetRuleContext(0, YearContext);
	}
	public KW_QUARTER(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_QUARTER, 0); }
	public month(): MonthContext | undefined {
		return this.tryGetRuleContext(0, MonthContext);
	}
	public week(): WeekContext | undefined {
		return this.tryGetRuleContext(0, WeekContext);
	}
	public day(): DayContext | undefined {
		return this.tryGetRuleContext(0, DayContext);
	}
	public hour(): HourContext | undefined {
		return this.tryGetRuleContext(0, HourContext);
	}
	public minute(): MinuteContext | undefined {
		return this.tryGetRuleContext(0, MinuteContext);
	}
	public second(): SecondContext | undefined {
		return this.tryGetRuleContext(0, SecondContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_floorDateQualifiers; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterFloorDateQualifiers) {
			listener.enterFloorDateQualifiers(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitFloorDateQualifiers) {
			listener.exitFloorDateQualifiers(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitFloorDateQualifiers) {
			return visitor.visitFloorDateQualifiers(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ExtractExpressionContext extends ParserRuleContext {
	public _timeUnit!: TimeQualifiersContext;
	public KW_EXTRACT(): TerminalNode { return this.getToken(HiveSqlParser.KW_EXTRACT, 0); }
	public LPAREN(): TerminalNode { return this.getToken(HiveSqlParser.LPAREN, 0); }
	public KW_FROM(): TerminalNode { return this.getToken(HiveSqlParser.KW_FROM, 0); }
	public expression(): ExpressionContext {
		return this.getRuleContext(0, ExpressionContext);
	}
	public RPAREN(): TerminalNode { return this.getToken(HiveSqlParser.RPAREN, 0); }
	public timeQualifiers(): TimeQualifiersContext {
		return this.getRuleContext(0, TimeQualifiersContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_extractExpression; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterExtractExpression) {
			listener.enterExtractExpression(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitExtractExpression) {
			listener.exitExtractExpression(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitExtractExpression) {
			return visitor.visitExtractExpression(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class TimeQualifiersContext extends ParserRuleContext {
	public year(): YearContext | undefined {
		return this.tryGetRuleContext(0, YearContext);
	}
	public KW_QUARTER(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_QUARTER, 0); }
	public month(): MonthContext | undefined {
		return this.tryGetRuleContext(0, MonthContext);
	}
	public week(): WeekContext | undefined {
		return this.tryGetRuleContext(0, WeekContext);
	}
	public day(): DayContext | undefined {
		return this.tryGetRuleContext(0, DayContext);
	}
	public hour(): HourContext | undefined {
		return this.tryGetRuleContext(0, HourContext);
	}
	public minute(): MinuteContext | undefined {
		return this.tryGetRuleContext(0, MinuteContext);
	}
	public second(): SecondContext | undefined {
		return this.tryGetRuleContext(0, SecondContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_timeQualifiers; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterTimeQualifiers) {
			listener.enterTimeQualifiers(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitTimeQualifiers) {
			listener.exitTimeQualifiers(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitTimeQualifiers) {
			return visitor.visitTimeQualifiers(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ConstantContext extends ParserRuleContext {
	public intervalLiteral(): IntervalLiteralContext | undefined {
		return this.tryGetRuleContext(0, IntervalLiteralContext);
	}
	public Number(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.Number, 0); }
	public dateLiteral(): DateLiteralContext | undefined {
		return this.tryGetRuleContext(0, DateLiteralContext);
	}
	public timestampLiteral(): TimestampLiteralContext | undefined {
		return this.tryGetRuleContext(0, TimestampLiteralContext);
	}
	public timestampLocalTZLiteral(): TimestampLocalTZLiteralContext | undefined {
		return this.tryGetRuleContext(0, TimestampLocalTZLiteralContext);
	}
	public StringLiteral(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.StringLiteral, 0); }
	public stringLiteralSequence(): StringLiteralSequenceContext | undefined {
		return this.tryGetRuleContext(0, StringLiteralSequenceContext);
	}
	public IntegralLiteral(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.IntegralLiteral, 0); }
	public NumberLiteral(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.NumberLiteral, 0); }
	public charSetStringLiteral(): CharSetStringLiteralContext | undefined {
		return this.tryGetRuleContext(0, CharSetStringLiteralContext);
	}
	public booleanValue(): BooleanValueContext | undefined {
		return this.tryGetRuleContext(0, BooleanValueContext);
	}
	public KW_NULL(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_NULL, 0); }
	public prepareStmtParam(): PrepareStmtParamContext | undefined {
		return this.tryGetRuleContext(0, PrepareStmtParamContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_constant; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterConstant) {
			listener.enterConstant(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitConstant) {
			listener.exitConstant(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitConstant) {
			return visitor.visitConstant(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class PrepareStmtParamContext extends ParserRuleContext {
	public _p!: ParameterIdxContext;
	public parameterIdx(): ParameterIdxContext {
		return this.getRuleContext(0, ParameterIdxContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_prepareStmtParam; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterPrepareStmtParam) {
			listener.enterPrepareStmtParam(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitPrepareStmtParam) {
			listener.exitPrepareStmtParam(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitPrepareStmtParam) {
			return visitor.visitPrepareStmtParam(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ParameterIdxContext extends ParserRuleContext {
	public QUESTION(): TerminalNode { return this.getToken(HiveSqlParser.QUESTION, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_parameterIdx; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterParameterIdx) {
			listener.enterParameterIdx(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitParameterIdx) {
			listener.exitParameterIdx(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitParameterIdx) {
			return visitor.visitParameterIdx(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class StringLiteralSequenceContext extends ParserRuleContext {
	public StringLiteral(): TerminalNode[];
	public StringLiteral(i: number): TerminalNode;
	public StringLiteral(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(HiveSqlParser.StringLiteral);
		} else {
			return this.getToken(HiveSqlParser.StringLiteral, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_stringLiteralSequence; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterStringLiteralSequence) {
			listener.enterStringLiteralSequence(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitStringLiteralSequence) {
			listener.exitStringLiteralSequence(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitStringLiteralSequence) {
			return visitor.visitStringLiteralSequence(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class CharSetStringLiteralContext extends ParserRuleContext {
	public _csName!: Token;
	public _csLiteral!: Token;
	public CharSetName(): TerminalNode { return this.getToken(HiveSqlParser.CharSetName, 0); }
	public CharSetLiteral(): TerminalNode { return this.getToken(HiveSqlParser.CharSetLiteral, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_charSetStringLiteral; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterCharSetStringLiteral) {
			listener.enterCharSetStringLiteral(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitCharSetStringLiteral) {
			listener.exitCharSetStringLiteral(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitCharSetStringLiteral) {
			return visitor.visitCharSetStringLiteral(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class DateLiteralContext extends ParserRuleContext {
	public KW_DATE(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_DATE, 0); }
	public StringLiteral(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.StringLiteral, 0); }
	public KW_CURRENT_DATE(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_CURRENT_DATE, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_dateLiteral; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterDateLiteral) {
			listener.enterDateLiteral(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitDateLiteral) {
			listener.exitDateLiteral(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitDateLiteral) {
			return visitor.visitDateLiteral(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class TimestampLiteralContext extends ParserRuleContext {
	public KW_TIMESTAMP(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_TIMESTAMP, 0); }
	public StringLiteral(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.StringLiteral, 0); }
	public KW_CURRENT_TIMESTAMP(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_CURRENT_TIMESTAMP, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_timestampLiteral; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterTimestampLiteral) {
			listener.enterTimestampLiteral(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitTimestampLiteral) {
			listener.exitTimestampLiteral(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitTimestampLiteral) {
			return visitor.visitTimestampLiteral(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class TimestampLocalTZLiteralContext extends ParserRuleContext {
	public KW_TIMESTAMPLOCALTZ(): TerminalNode { return this.getToken(HiveSqlParser.KW_TIMESTAMPLOCALTZ, 0); }
	public StringLiteral(): TerminalNode { return this.getToken(HiveSqlParser.StringLiteral, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_timestampLocalTZLiteral; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterTimestampLocalTZLiteral) {
			listener.enterTimestampLocalTZLiteral(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitTimestampLocalTZLiteral) {
			listener.exitTimestampLocalTZLiteral(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitTimestampLocalTZLiteral) {
			return visitor.visitTimestampLocalTZLiteral(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class IntervalValueContext extends ParserRuleContext {
	public StringLiteral(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.StringLiteral, 0); }
	public Number(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.Number, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_intervalValue; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterIntervalValue) {
			listener.enterIntervalValue(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitIntervalValue) {
			listener.exitIntervalValue(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitIntervalValue) {
			return visitor.visitIntervalValue(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class IntervalLiteralContext extends ParserRuleContext {
	public _value!: IntervalValueContext;
	public _qualifiers!: IntervalQualifiersContext;
	public intervalValue(): IntervalValueContext {
		return this.getRuleContext(0, IntervalValueContext);
	}
	public intervalQualifiers(): IntervalQualifiersContext {
		return this.getRuleContext(0, IntervalQualifiersContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_intervalLiteral; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterIntervalLiteral) {
			listener.enterIntervalLiteral(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitIntervalLiteral) {
			listener.exitIntervalLiteral(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitIntervalLiteral) {
			return visitor.visitIntervalLiteral(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class IntervalExpressionContext extends ParserRuleContext {
	public _value!: IntervalValueContext;
	public _qualifiers!: IntervalQualifiersContext;
	public _expr!: ExpressionContext;
	public LPAREN(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.LPAREN, 0); }
	public RPAREN(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.RPAREN, 0); }
	public intervalValue(): IntervalValueContext | undefined {
		return this.tryGetRuleContext(0, IntervalValueContext);
	}
	public intervalQualifiers(): IntervalQualifiersContext {
		return this.getRuleContext(0, IntervalQualifiersContext);
	}
	public KW_INTERVAL(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_INTERVAL, 0); }
	public expression(): ExpressionContext | undefined {
		return this.tryGetRuleContext(0, ExpressionContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_intervalExpression; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterIntervalExpression) {
			listener.enterIntervalExpression(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitIntervalExpression) {
			listener.exitIntervalExpression(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitIntervalExpression) {
			return visitor.visitIntervalExpression(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class IntervalQualifiersContext extends ParserRuleContext {
	public year(): YearContext | undefined {
		return this.tryGetRuleContext(0, YearContext);
	}
	public KW_TO(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_TO, 0); }
	public month(): MonthContext | undefined {
		return this.tryGetRuleContext(0, MonthContext);
	}
	public day(): DayContext | undefined {
		return this.tryGetRuleContext(0, DayContext);
	}
	public second(): SecondContext | undefined {
		return this.tryGetRuleContext(0, SecondContext);
	}
	public hour(): HourContext | undefined {
		return this.tryGetRuleContext(0, HourContext);
	}
	public minute(): MinuteContext | undefined {
		return this.tryGetRuleContext(0, MinuteContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_intervalQualifiers; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterIntervalQualifiers) {
			listener.enterIntervalQualifiers(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitIntervalQualifiers) {
			listener.exitIntervalQualifiers(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitIntervalQualifiers) {
			return visitor.visitIntervalQualifiers(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ExpressionContext extends ParserRuleContext {
	public precedenceOrExpression(): PrecedenceOrExpressionContext {
		return this.getRuleContext(0, PrecedenceOrExpressionContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_expression; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterExpression) {
			listener.enterExpression(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitExpression) {
			listener.exitExpression(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitExpression) {
			return visitor.visitExpression(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class AtomExpressionContext extends ParserRuleContext {
	public constant(): ConstantContext | undefined {
		return this.tryGetRuleContext(0, ConstantContext);
	}
	public intervalExpression(): IntervalExpressionContext | undefined {
		return this.tryGetRuleContext(0, IntervalExpressionContext);
	}
	public castExpression(): CastExpressionContext | undefined {
		return this.tryGetRuleContext(0, CastExpressionContext);
	}
	public extractExpression(): ExtractExpressionContext | undefined {
		return this.tryGetRuleContext(0, ExtractExpressionContext);
	}
	public floorExpression(): FloorExpressionContext | undefined {
		return this.tryGetRuleContext(0, FloorExpressionContext);
	}
	public caseExpression(): CaseExpressionContext | undefined {
		return this.tryGetRuleContext(0, CaseExpressionContext);
	}
	public whenExpression(): WhenExpressionContext | undefined {
		return this.tryGetRuleContext(0, WhenExpressionContext);
	}
	public subQueryExpression(): SubQueryExpressionContext | undefined {
		return this.tryGetRuleContext(0, SubQueryExpressionContext);
	}
	public function_(): Function_Context | undefined {
		return this.tryGetRuleContext(0, Function_Context);
	}
	public expressionsInParenthesis(): ExpressionsInParenthesisContext | undefined {
		return this.tryGetRuleContext(0, ExpressionsInParenthesisContext);
	}
	public id_(): Id_Context | undefined {
		return this.tryGetRuleContext(0, Id_Context);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_atomExpression; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterAtomExpression) {
			listener.enterAtomExpression(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitAtomExpression) {
			listener.exitAtomExpression(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitAtomExpression) {
			return visitor.visitAtomExpression(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class PrecedenceFieldExpressionContext extends ParserRuleContext {
	public atomExpression(): AtomExpressionContext {
		return this.getRuleContext(0, AtomExpressionContext);
	}
	public LSQUARE(): TerminalNode[];
	public LSQUARE(i: number): TerminalNode;
	public LSQUARE(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(HiveSqlParser.LSQUARE);
		} else {
			return this.getToken(HiveSqlParser.LSQUARE, i);
		}
	}
	public expression(): ExpressionContext[];
	public expression(i: number): ExpressionContext;
	public expression(i?: number): ExpressionContext | ExpressionContext[] {
		if (i === undefined) {
			return this.getRuleContexts(ExpressionContext);
		} else {
			return this.getRuleContext(i, ExpressionContext);
		}
	}
	public RSQUARE(): TerminalNode[];
	public RSQUARE(i: number): TerminalNode;
	public RSQUARE(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(HiveSqlParser.RSQUARE);
		} else {
			return this.getToken(HiveSqlParser.RSQUARE, i);
		}
	}
	public DOT(): TerminalNode[];
	public DOT(i: number): TerminalNode;
	public DOT(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(HiveSqlParser.DOT);
		} else {
			return this.getToken(HiveSqlParser.DOT, i);
		}
	}
	public id_(): Id_Context[];
	public id_(i: number): Id_Context;
	public id_(i?: number): Id_Context | Id_Context[] {
		if (i === undefined) {
			return this.getRuleContexts(Id_Context);
		} else {
			return this.getRuleContext(i, Id_Context);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_precedenceFieldExpression; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterPrecedenceFieldExpression) {
			listener.enterPrecedenceFieldExpression(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitPrecedenceFieldExpression) {
			listener.exitPrecedenceFieldExpression(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitPrecedenceFieldExpression) {
			return visitor.visitPrecedenceFieldExpression(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class PrecedenceUnaryOperatorContext extends ParserRuleContext {
	public PLUS(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.PLUS, 0); }
	public MINUS(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.MINUS, 0); }
	public TILDE(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.TILDE, 0); }
	public BITWISENOT(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.BITWISENOT, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_precedenceUnaryOperator; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterPrecedenceUnaryOperator) {
			listener.enterPrecedenceUnaryOperator(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitPrecedenceUnaryOperator) {
			listener.exitPrecedenceUnaryOperator(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitPrecedenceUnaryOperator) {
			return visitor.visitPrecedenceUnaryOperator(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class PrecedenceUnaryPrefixExpressionContext extends ParserRuleContext {
	public precedenceFieldExpression(): PrecedenceFieldExpressionContext {
		return this.getRuleContext(0, PrecedenceFieldExpressionContext);
	}
	public precedenceUnaryOperator(): PrecedenceUnaryOperatorContext[];
	public precedenceUnaryOperator(i: number): PrecedenceUnaryOperatorContext;
	public precedenceUnaryOperator(i?: number): PrecedenceUnaryOperatorContext | PrecedenceUnaryOperatorContext[] {
		if (i === undefined) {
			return this.getRuleContexts(PrecedenceUnaryOperatorContext);
		} else {
			return this.getRuleContext(i, PrecedenceUnaryOperatorContext);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_precedenceUnaryPrefixExpression; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterPrecedenceUnaryPrefixExpression) {
			listener.enterPrecedenceUnaryPrefixExpression(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitPrecedenceUnaryPrefixExpression) {
			listener.exitPrecedenceUnaryPrefixExpression(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitPrecedenceUnaryPrefixExpression) {
			return visitor.visitPrecedenceUnaryPrefixExpression(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class PrecedenceBitwiseXorOperatorContext extends ParserRuleContext {
	public BITWISEXOR(): TerminalNode { return this.getToken(HiveSqlParser.BITWISEXOR, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_precedenceBitwiseXorOperator; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterPrecedenceBitwiseXorOperator) {
			listener.enterPrecedenceBitwiseXorOperator(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitPrecedenceBitwiseXorOperator) {
			listener.exitPrecedenceBitwiseXorOperator(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitPrecedenceBitwiseXorOperator) {
			return visitor.visitPrecedenceBitwiseXorOperator(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class PrecedenceBitwiseXorExpressionContext extends ParserRuleContext {
	public precedenceUnaryPrefixExpression(): PrecedenceUnaryPrefixExpressionContext[];
	public precedenceUnaryPrefixExpression(i: number): PrecedenceUnaryPrefixExpressionContext;
	public precedenceUnaryPrefixExpression(i?: number): PrecedenceUnaryPrefixExpressionContext | PrecedenceUnaryPrefixExpressionContext[] {
		if (i === undefined) {
			return this.getRuleContexts(PrecedenceUnaryPrefixExpressionContext);
		} else {
			return this.getRuleContext(i, PrecedenceUnaryPrefixExpressionContext);
		}
	}
	public precedenceBitwiseXorOperator(): PrecedenceBitwiseXorOperatorContext[];
	public precedenceBitwiseXorOperator(i: number): PrecedenceBitwiseXorOperatorContext;
	public precedenceBitwiseXorOperator(i?: number): PrecedenceBitwiseXorOperatorContext | PrecedenceBitwiseXorOperatorContext[] {
		if (i === undefined) {
			return this.getRuleContexts(PrecedenceBitwiseXorOperatorContext);
		} else {
			return this.getRuleContext(i, PrecedenceBitwiseXorOperatorContext);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_precedenceBitwiseXorExpression; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterPrecedenceBitwiseXorExpression) {
			listener.enterPrecedenceBitwiseXorExpression(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitPrecedenceBitwiseXorExpression) {
			listener.exitPrecedenceBitwiseXorExpression(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitPrecedenceBitwiseXorExpression) {
			return visitor.visitPrecedenceBitwiseXorExpression(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class PrecedenceStarOperatorContext extends ParserRuleContext {
	public STAR(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.STAR, 0); }
	public DIVIDE(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.DIVIDE, 0); }
	public MOD(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.MOD, 0); }
	public DIV(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.DIV, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_precedenceStarOperator; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterPrecedenceStarOperator) {
			listener.enterPrecedenceStarOperator(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitPrecedenceStarOperator) {
			listener.exitPrecedenceStarOperator(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitPrecedenceStarOperator) {
			return visitor.visitPrecedenceStarOperator(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class PrecedenceStarExpressionContext extends ParserRuleContext {
	public precedenceBitwiseXorExpression(): PrecedenceBitwiseXorExpressionContext[];
	public precedenceBitwiseXorExpression(i: number): PrecedenceBitwiseXorExpressionContext;
	public precedenceBitwiseXorExpression(i?: number): PrecedenceBitwiseXorExpressionContext | PrecedenceBitwiseXorExpressionContext[] {
		if (i === undefined) {
			return this.getRuleContexts(PrecedenceBitwiseXorExpressionContext);
		} else {
			return this.getRuleContext(i, PrecedenceBitwiseXorExpressionContext);
		}
	}
	public precedenceStarOperator(): PrecedenceStarOperatorContext[];
	public precedenceStarOperator(i: number): PrecedenceStarOperatorContext;
	public precedenceStarOperator(i?: number): PrecedenceStarOperatorContext | PrecedenceStarOperatorContext[] {
		if (i === undefined) {
			return this.getRuleContexts(PrecedenceStarOperatorContext);
		} else {
			return this.getRuleContext(i, PrecedenceStarOperatorContext);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_precedenceStarExpression; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterPrecedenceStarExpression) {
			listener.enterPrecedenceStarExpression(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitPrecedenceStarExpression) {
			listener.exitPrecedenceStarExpression(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitPrecedenceStarExpression) {
			return visitor.visitPrecedenceStarExpression(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class PrecedencePlusOperatorContext extends ParserRuleContext {
	public PLUS(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.PLUS, 0); }
	public MINUS(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.MINUS, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_precedencePlusOperator; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterPrecedencePlusOperator) {
			listener.enterPrecedencePlusOperator(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitPrecedencePlusOperator) {
			listener.exitPrecedencePlusOperator(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitPrecedencePlusOperator) {
			return visitor.visitPrecedencePlusOperator(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class PrecedencePlusExpressionContext extends ParserRuleContext {
	public precedenceStarExpression(): PrecedenceStarExpressionContext[];
	public precedenceStarExpression(i: number): PrecedenceStarExpressionContext;
	public precedenceStarExpression(i?: number): PrecedenceStarExpressionContext | PrecedenceStarExpressionContext[] {
		if (i === undefined) {
			return this.getRuleContexts(PrecedenceStarExpressionContext);
		} else {
			return this.getRuleContext(i, PrecedenceStarExpressionContext);
		}
	}
	public precedencePlusOperator(): PrecedencePlusOperatorContext[];
	public precedencePlusOperator(i: number): PrecedencePlusOperatorContext;
	public precedencePlusOperator(i?: number): PrecedencePlusOperatorContext | PrecedencePlusOperatorContext[] {
		if (i === undefined) {
			return this.getRuleContexts(PrecedencePlusOperatorContext);
		} else {
			return this.getRuleContext(i, PrecedencePlusOperatorContext);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_precedencePlusExpression; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterPrecedencePlusExpression) {
			listener.enterPrecedencePlusExpression(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitPrecedencePlusExpression) {
			listener.exitPrecedencePlusExpression(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitPrecedencePlusExpression) {
			return visitor.visitPrecedencePlusExpression(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class PrecedenceConcatenateOperatorContext extends ParserRuleContext {
	public CONCATENATE(): TerminalNode { return this.getToken(HiveSqlParser.CONCATENATE, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_precedenceConcatenateOperator; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterPrecedenceConcatenateOperator) {
			listener.enterPrecedenceConcatenateOperator(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitPrecedenceConcatenateOperator) {
			listener.exitPrecedenceConcatenateOperator(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitPrecedenceConcatenateOperator) {
			return visitor.visitPrecedenceConcatenateOperator(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class PrecedenceConcatenateExpressionContext extends ParserRuleContext {
	public _plus!: PrecedencePlusExpressionContext;
	public precedencePlusExpression(): PrecedencePlusExpressionContext[];
	public precedencePlusExpression(i: number): PrecedencePlusExpressionContext;
	public precedencePlusExpression(i?: number): PrecedencePlusExpressionContext | PrecedencePlusExpressionContext[] {
		if (i === undefined) {
			return this.getRuleContexts(PrecedencePlusExpressionContext);
		} else {
			return this.getRuleContext(i, PrecedencePlusExpressionContext);
		}
	}
	public precedenceConcatenateOperator(): PrecedenceConcatenateOperatorContext[];
	public precedenceConcatenateOperator(i: number): PrecedenceConcatenateOperatorContext;
	public precedenceConcatenateOperator(i?: number): PrecedenceConcatenateOperatorContext | PrecedenceConcatenateOperatorContext[] {
		if (i === undefined) {
			return this.getRuleContexts(PrecedenceConcatenateOperatorContext);
		} else {
			return this.getRuleContext(i, PrecedenceConcatenateOperatorContext);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_precedenceConcatenateExpression; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterPrecedenceConcatenateExpression) {
			listener.enterPrecedenceConcatenateExpression(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitPrecedenceConcatenateExpression) {
			listener.exitPrecedenceConcatenateExpression(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitPrecedenceConcatenateExpression) {
			return visitor.visitPrecedenceConcatenateExpression(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class PrecedenceAmpersandOperatorContext extends ParserRuleContext {
	public AMPERSAND(): TerminalNode { return this.getToken(HiveSqlParser.AMPERSAND, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_precedenceAmpersandOperator; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterPrecedenceAmpersandOperator) {
			listener.enterPrecedenceAmpersandOperator(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitPrecedenceAmpersandOperator) {
			listener.exitPrecedenceAmpersandOperator(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitPrecedenceAmpersandOperator) {
			return visitor.visitPrecedenceAmpersandOperator(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class PrecedenceAmpersandExpressionContext extends ParserRuleContext {
	public precedenceConcatenateExpression(): PrecedenceConcatenateExpressionContext[];
	public precedenceConcatenateExpression(i: number): PrecedenceConcatenateExpressionContext;
	public precedenceConcatenateExpression(i?: number): PrecedenceConcatenateExpressionContext | PrecedenceConcatenateExpressionContext[] {
		if (i === undefined) {
			return this.getRuleContexts(PrecedenceConcatenateExpressionContext);
		} else {
			return this.getRuleContext(i, PrecedenceConcatenateExpressionContext);
		}
	}
	public precedenceAmpersandOperator(): PrecedenceAmpersandOperatorContext[];
	public precedenceAmpersandOperator(i: number): PrecedenceAmpersandOperatorContext;
	public precedenceAmpersandOperator(i?: number): PrecedenceAmpersandOperatorContext | PrecedenceAmpersandOperatorContext[] {
		if (i === undefined) {
			return this.getRuleContexts(PrecedenceAmpersandOperatorContext);
		} else {
			return this.getRuleContext(i, PrecedenceAmpersandOperatorContext);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_precedenceAmpersandExpression; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterPrecedenceAmpersandExpression) {
			listener.enterPrecedenceAmpersandExpression(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitPrecedenceAmpersandExpression) {
			listener.exitPrecedenceAmpersandExpression(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitPrecedenceAmpersandExpression) {
			return visitor.visitPrecedenceAmpersandExpression(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class PrecedenceBitwiseOrOperatorContext extends ParserRuleContext {
	public BITWISEOR(): TerminalNode { return this.getToken(HiveSqlParser.BITWISEOR, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_precedenceBitwiseOrOperator; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterPrecedenceBitwiseOrOperator) {
			listener.enterPrecedenceBitwiseOrOperator(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitPrecedenceBitwiseOrOperator) {
			listener.exitPrecedenceBitwiseOrOperator(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitPrecedenceBitwiseOrOperator) {
			return visitor.visitPrecedenceBitwiseOrOperator(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class PrecedenceBitwiseOrExpressionContext extends ParserRuleContext {
	public precedenceAmpersandExpression(): PrecedenceAmpersandExpressionContext[];
	public precedenceAmpersandExpression(i: number): PrecedenceAmpersandExpressionContext;
	public precedenceAmpersandExpression(i?: number): PrecedenceAmpersandExpressionContext | PrecedenceAmpersandExpressionContext[] {
		if (i === undefined) {
			return this.getRuleContexts(PrecedenceAmpersandExpressionContext);
		} else {
			return this.getRuleContext(i, PrecedenceAmpersandExpressionContext);
		}
	}
	public precedenceBitwiseOrOperator(): PrecedenceBitwiseOrOperatorContext[];
	public precedenceBitwiseOrOperator(i: number): PrecedenceBitwiseOrOperatorContext;
	public precedenceBitwiseOrOperator(i?: number): PrecedenceBitwiseOrOperatorContext | PrecedenceBitwiseOrOperatorContext[] {
		if (i === undefined) {
			return this.getRuleContexts(PrecedenceBitwiseOrOperatorContext);
		} else {
			return this.getRuleContext(i, PrecedenceBitwiseOrOperatorContext);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_precedenceBitwiseOrExpression; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterPrecedenceBitwiseOrExpression) {
			listener.enterPrecedenceBitwiseOrExpression(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitPrecedenceBitwiseOrExpression) {
			listener.exitPrecedenceBitwiseOrExpression(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitPrecedenceBitwiseOrExpression) {
			return visitor.visitPrecedenceBitwiseOrExpression(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class PrecedenceRegexpOperatorContext extends ParserRuleContext {
	public KW_LIKE(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_LIKE, 0); }
	public KW_RLIKE(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_RLIKE, 0); }
	public KW_REGEXP(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_REGEXP, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_precedenceRegexpOperator; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterPrecedenceRegexpOperator) {
			listener.enterPrecedenceRegexpOperator(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitPrecedenceRegexpOperator) {
			listener.exitPrecedenceRegexpOperator(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitPrecedenceRegexpOperator) {
			return visitor.visitPrecedenceRegexpOperator(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class PrecedenceSimilarOperatorContext extends ParserRuleContext {
	public precedenceRegexpOperator(): PrecedenceRegexpOperatorContext | undefined {
		return this.tryGetRuleContext(0, PrecedenceRegexpOperatorContext);
	}
	public LESSTHANOREQUALTO(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.LESSTHANOREQUALTO, 0); }
	public LESSTHAN(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.LESSTHAN, 0); }
	public GREATERTHANOREQUALTO(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.GREATERTHANOREQUALTO, 0); }
	public GREATERTHAN(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.GREATERTHAN, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_precedenceSimilarOperator; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterPrecedenceSimilarOperator) {
			listener.enterPrecedenceSimilarOperator(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitPrecedenceSimilarOperator) {
			listener.exitPrecedenceSimilarOperator(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitPrecedenceSimilarOperator) {
			return visitor.visitPrecedenceSimilarOperator(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class SubQueryExpressionContext extends ParserRuleContext {
	public LPAREN(): TerminalNode { return this.getToken(HiveSqlParser.LPAREN, 0); }
	public selectStatement(): SelectStatementContext {
		return this.getRuleContext(0, SelectStatementContext);
	}
	public RPAREN(): TerminalNode { return this.getToken(HiveSqlParser.RPAREN, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_subQueryExpression; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterSubQueryExpression) {
			listener.enterSubQueryExpression(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitSubQueryExpression) {
			listener.exitSubQueryExpression(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitSubQueryExpression) {
			return visitor.visitSubQueryExpression(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class PrecedenceSimilarExpressionContext extends ParserRuleContext {
	public precedenceSimilarExpressionMain(): PrecedenceSimilarExpressionMainContext | undefined {
		return this.tryGetRuleContext(0, PrecedenceSimilarExpressionMainContext);
	}
	public KW_EXISTS(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_EXISTS, 0); }
	public subQueryExpression(): SubQueryExpressionContext | undefined {
		return this.tryGetRuleContext(0, SubQueryExpressionContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_precedenceSimilarExpression; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterPrecedenceSimilarExpression) {
			listener.enterPrecedenceSimilarExpression(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitPrecedenceSimilarExpression) {
			listener.exitPrecedenceSimilarExpression(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitPrecedenceSimilarExpression) {
			return visitor.visitPrecedenceSimilarExpression(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class PrecedenceSimilarExpressionMainContext extends ParserRuleContext {
	public _a!: PrecedenceBitwiseOrExpressionContext;
	public _part!: PrecedenceSimilarExpressionPartContext;
	public precedenceBitwiseOrExpression(): PrecedenceBitwiseOrExpressionContext {
		return this.getRuleContext(0, PrecedenceBitwiseOrExpressionContext);
	}
	public precedenceSimilarExpressionPart(): PrecedenceSimilarExpressionPartContext | undefined {
		return this.tryGetRuleContext(0, PrecedenceSimilarExpressionPartContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_precedenceSimilarExpressionMain; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterPrecedenceSimilarExpressionMain) {
			listener.enterPrecedenceSimilarExpressionMain(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitPrecedenceSimilarExpressionMain) {
			listener.exitPrecedenceSimilarExpressionMain(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitPrecedenceSimilarExpressionMain) {
			return visitor.visitPrecedenceSimilarExpressionMain(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class PrecedenceSimilarExpressionPartContext extends ParserRuleContext {
	public _equalExpr!: PrecedenceBitwiseOrExpressionContext;
	public precedenceSimilarOperator(): PrecedenceSimilarOperatorContext | undefined {
		return this.tryGetRuleContext(0, PrecedenceSimilarOperatorContext);
	}
	public precedenceBitwiseOrExpression(): PrecedenceBitwiseOrExpressionContext | undefined {
		return this.tryGetRuleContext(0, PrecedenceBitwiseOrExpressionContext);
	}
	public precedenceSimilarExpressionAtom(): PrecedenceSimilarExpressionAtomContext | undefined {
		return this.tryGetRuleContext(0, PrecedenceSimilarExpressionAtomContext);
	}
	public KW_NOT(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_NOT, 0); }
	public precedenceSimilarExpressionPartNot(): PrecedenceSimilarExpressionPartNotContext | undefined {
		return this.tryGetRuleContext(0, PrecedenceSimilarExpressionPartNotContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_precedenceSimilarExpressionPart; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterPrecedenceSimilarExpressionPart) {
			listener.enterPrecedenceSimilarExpressionPart(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitPrecedenceSimilarExpressionPart) {
			listener.exitPrecedenceSimilarExpressionPart(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitPrecedenceSimilarExpressionPart) {
			return visitor.visitPrecedenceSimilarExpressionPart(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class PrecedenceSimilarExpressionAtomContext extends ParserRuleContext {
	public _min!: PrecedenceBitwiseOrExpressionContext;
	public _max!: PrecedenceBitwiseOrExpressionContext;
	public _expr!: ExpressionsInParenthesisContext;
	public KW_IN(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_IN, 0); }
	public precedenceSimilarExpressionIn(): PrecedenceSimilarExpressionInContext | undefined {
		return this.tryGetRuleContext(0, PrecedenceSimilarExpressionInContext);
	}
	public KW_BETWEEN(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_BETWEEN, 0); }
	public KW_AND(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_AND, 0); }
	public precedenceBitwiseOrExpression(): PrecedenceBitwiseOrExpressionContext[];
	public precedenceBitwiseOrExpression(i: number): PrecedenceBitwiseOrExpressionContext;
	public precedenceBitwiseOrExpression(i?: number): PrecedenceBitwiseOrExpressionContext | PrecedenceBitwiseOrExpressionContext[] {
		if (i === undefined) {
			return this.getRuleContexts(PrecedenceBitwiseOrExpressionContext);
		} else {
			return this.getRuleContext(i, PrecedenceBitwiseOrExpressionContext);
		}
	}
	public KW_LIKE(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_LIKE, 0); }
	public KW_ANY(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_ANY, 0); }
	public KW_ALL(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_ALL, 0); }
	public expressionsInParenthesis(): ExpressionsInParenthesisContext | undefined {
		return this.tryGetRuleContext(0, ExpressionsInParenthesisContext);
	}
	public precedenceSimilarExpressionQuantifierPredicate(): PrecedenceSimilarExpressionQuantifierPredicateContext | undefined {
		return this.tryGetRuleContext(0, PrecedenceSimilarExpressionQuantifierPredicateContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_precedenceSimilarExpressionAtom; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterPrecedenceSimilarExpressionAtom) {
			listener.enterPrecedenceSimilarExpressionAtom(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitPrecedenceSimilarExpressionAtom) {
			listener.exitPrecedenceSimilarExpressionAtom(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitPrecedenceSimilarExpressionAtom) {
			return visitor.visitPrecedenceSimilarExpressionAtom(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class PrecedenceSimilarExpressionQuantifierPredicateContext extends ParserRuleContext {
	public subQuerySelectorOperator(): SubQuerySelectorOperatorContext {
		return this.getRuleContext(0, SubQuerySelectorOperatorContext);
	}
	public quantifierType(): QuantifierTypeContext {
		return this.getRuleContext(0, QuantifierTypeContext);
	}
	public subQueryExpression(): SubQueryExpressionContext {
		return this.getRuleContext(0, SubQueryExpressionContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_precedenceSimilarExpressionQuantifierPredicate; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterPrecedenceSimilarExpressionQuantifierPredicate) {
			listener.enterPrecedenceSimilarExpressionQuantifierPredicate(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitPrecedenceSimilarExpressionQuantifierPredicate) {
			listener.exitPrecedenceSimilarExpressionQuantifierPredicate(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitPrecedenceSimilarExpressionQuantifierPredicate) {
			return visitor.visitPrecedenceSimilarExpressionQuantifierPredicate(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class QuantifierTypeContext extends ParserRuleContext {
	public KW_ANY(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_ANY, 0); }
	public KW_SOME(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_SOME, 0); }
	public KW_ALL(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_ALL, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_quantifierType; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterQuantifierType) {
			listener.enterQuantifierType(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitQuantifierType) {
			listener.exitQuantifierType(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitQuantifierType) {
			return visitor.visitQuantifierType(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class PrecedenceSimilarExpressionInContext extends ParserRuleContext {
	public _expr!: ExpressionsInParenthesisContext;
	public subQueryExpression(): SubQueryExpressionContext | undefined {
		return this.tryGetRuleContext(0, SubQueryExpressionContext);
	}
	public expressionsInParenthesis(): ExpressionsInParenthesisContext | undefined {
		return this.tryGetRuleContext(0, ExpressionsInParenthesisContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_precedenceSimilarExpressionIn; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterPrecedenceSimilarExpressionIn) {
			listener.enterPrecedenceSimilarExpressionIn(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitPrecedenceSimilarExpressionIn) {
			listener.exitPrecedenceSimilarExpressionIn(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitPrecedenceSimilarExpressionIn) {
			return visitor.visitPrecedenceSimilarExpressionIn(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class PrecedenceSimilarExpressionPartNotContext extends ParserRuleContext {
	public _notExpr!: PrecedenceBitwiseOrExpressionContext;
	public precedenceRegexpOperator(): PrecedenceRegexpOperatorContext | undefined {
		return this.tryGetRuleContext(0, PrecedenceRegexpOperatorContext);
	}
	public precedenceBitwiseOrExpression(): PrecedenceBitwiseOrExpressionContext | undefined {
		return this.tryGetRuleContext(0, PrecedenceBitwiseOrExpressionContext);
	}
	public precedenceSimilarExpressionAtom(): PrecedenceSimilarExpressionAtomContext | undefined {
		return this.tryGetRuleContext(0, PrecedenceSimilarExpressionAtomContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_precedenceSimilarExpressionPartNot; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterPrecedenceSimilarExpressionPartNot) {
			listener.enterPrecedenceSimilarExpressionPartNot(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitPrecedenceSimilarExpressionPartNot) {
			listener.exitPrecedenceSimilarExpressionPartNot(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitPrecedenceSimilarExpressionPartNot) {
			return visitor.visitPrecedenceSimilarExpressionPartNot(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class PrecedenceDistinctOperatorContext extends ParserRuleContext {
	public KW_IS(): TerminalNode { return this.getToken(HiveSqlParser.KW_IS, 0); }
	public KW_DISTINCT(): TerminalNode { return this.getToken(HiveSqlParser.KW_DISTINCT, 0); }
	public KW_FROM(): TerminalNode { return this.getToken(HiveSqlParser.KW_FROM, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_precedenceDistinctOperator; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterPrecedenceDistinctOperator) {
			listener.enterPrecedenceDistinctOperator(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitPrecedenceDistinctOperator) {
			listener.exitPrecedenceDistinctOperator(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitPrecedenceDistinctOperator) {
			return visitor.visitPrecedenceDistinctOperator(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class PrecedenceEqualOperatorContext extends ParserRuleContext {
	public EQUAL(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.EQUAL, 0); }
	public EQUAL_NS(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.EQUAL_NS, 0); }
	public NOTEQUAL(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.NOTEQUAL, 0); }
	public KW_IS(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_IS, 0); }
	public KW_NOT(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_NOT, 0); }
	public KW_DISTINCT(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_DISTINCT, 0); }
	public KW_FROM(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_FROM, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_precedenceEqualOperator; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterPrecedenceEqualOperator) {
			listener.enterPrecedenceEqualOperator(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitPrecedenceEqualOperator) {
			listener.exitPrecedenceEqualOperator(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitPrecedenceEqualOperator) {
			return visitor.visitPrecedenceEqualOperator(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class PrecedenceEqualExpressionContext extends ParserRuleContext {
	public _precedenceEqualOperator!: PrecedenceEqualOperatorContext;
	public _equal: PrecedenceEqualOperatorContext[] = [];
	public _precedenceSimilarExpression!: PrecedenceSimilarExpressionContext;
	public _p: PrecedenceSimilarExpressionContext[] = [];
	public _precedenceDistinctOperator!: PrecedenceDistinctOperatorContext;
	public _dist: PrecedenceDistinctOperatorContext[] = [];
	public precedenceSimilarExpression(): PrecedenceSimilarExpressionContext[];
	public precedenceSimilarExpression(i: number): PrecedenceSimilarExpressionContext;
	public precedenceSimilarExpression(i?: number): PrecedenceSimilarExpressionContext | PrecedenceSimilarExpressionContext[] {
		if (i === undefined) {
			return this.getRuleContexts(PrecedenceSimilarExpressionContext);
		} else {
			return this.getRuleContext(i, PrecedenceSimilarExpressionContext);
		}
	}
	public precedenceEqualOperator(): PrecedenceEqualOperatorContext[];
	public precedenceEqualOperator(i: number): PrecedenceEqualOperatorContext;
	public precedenceEqualOperator(i?: number): PrecedenceEqualOperatorContext | PrecedenceEqualOperatorContext[] {
		if (i === undefined) {
			return this.getRuleContexts(PrecedenceEqualOperatorContext);
		} else {
			return this.getRuleContext(i, PrecedenceEqualOperatorContext);
		}
	}
	public precedenceDistinctOperator(): PrecedenceDistinctOperatorContext[];
	public precedenceDistinctOperator(i: number): PrecedenceDistinctOperatorContext;
	public precedenceDistinctOperator(i?: number): PrecedenceDistinctOperatorContext | PrecedenceDistinctOperatorContext[] {
		if (i === undefined) {
			return this.getRuleContexts(PrecedenceDistinctOperatorContext);
		} else {
			return this.getRuleContext(i, PrecedenceDistinctOperatorContext);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_precedenceEqualExpression; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterPrecedenceEqualExpression) {
			listener.enterPrecedenceEqualExpression(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitPrecedenceEqualExpression) {
			listener.exitPrecedenceEqualExpression(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitPrecedenceEqualExpression) {
			return visitor.visitPrecedenceEqualExpression(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class IsConditionContext extends ParserRuleContext {
	public KW_NULL(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_NULL, 0); }
	public KW_TRUE(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_TRUE, 0); }
	public KW_FALSE(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_FALSE, 0); }
	public KW_UNKNOWN(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_UNKNOWN, 0); }
	public KW_NOT(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_NOT, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_isCondition; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterIsCondition) {
			listener.enterIsCondition(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitIsCondition) {
			listener.exitIsCondition(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitIsCondition) {
			return visitor.visitIsCondition(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class PrecedenceUnarySuffixExpressionContext extends ParserRuleContext {
	public _a!: Token;
	public precedenceEqualExpression(): PrecedenceEqualExpressionContext {
		return this.getRuleContext(0, PrecedenceEqualExpressionContext);
	}
	public isCondition(): IsConditionContext | undefined {
		return this.tryGetRuleContext(0, IsConditionContext);
	}
	public KW_IS(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_IS, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_precedenceUnarySuffixExpression; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterPrecedenceUnarySuffixExpression) {
			listener.enterPrecedenceUnarySuffixExpression(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitPrecedenceUnarySuffixExpression) {
			listener.exitPrecedenceUnarySuffixExpression(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitPrecedenceUnarySuffixExpression) {
			return visitor.visitPrecedenceUnarySuffixExpression(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class PrecedenceNotOperatorContext extends ParserRuleContext {
	public KW_NOT(): TerminalNode { return this.getToken(HiveSqlParser.KW_NOT, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_precedenceNotOperator; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterPrecedenceNotOperator) {
			listener.enterPrecedenceNotOperator(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitPrecedenceNotOperator) {
			listener.exitPrecedenceNotOperator(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitPrecedenceNotOperator) {
			return visitor.visitPrecedenceNotOperator(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class PrecedenceNotExpressionContext extends ParserRuleContext {
	public precedenceUnarySuffixExpression(): PrecedenceUnarySuffixExpressionContext {
		return this.getRuleContext(0, PrecedenceUnarySuffixExpressionContext);
	}
	public precedenceNotOperator(): PrecedenceNotOperatorContext[];
	public precedenceNotOperator(i: number): PrecedenceNotOperatorContext;
	public precedenceNotOperator(i?: number): PrecedenceNotOperatorContext | PrecedenceNotOperatorContext[] {
		if (i === undefined) {
			return this.getRuleContexts(PrecedenceNotOperatorContext);
		} else {
			return this.getRuleContext(i, PrecedenceNotOperatorContext);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_precedenceNotExpression; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterPrecedenceNotExpression) {
			listener.enterPrecedenceNotExpression(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitPrecedenceNotExpression) {
			listener.exitPrecedenceNotExpression(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitPrecedenceNotExpression) {
			return visitor.visitPrecedenceNotExpression(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class PrecedenceAndOperatorContext extends ParserRuleContext {
	public KW_AND(): TerminalNode { return this.getToken(HiveSqlParser.KW_AND, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_precedenceAndOperator; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterPrecedenceAndOperator) {
			listener.enterPrecedenceAndOperator(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitPrecedenceAndOperator) {
			listener.exitPrecedenceAndOperator(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitPrecedenceAndOperator) {
			return visitor.visitPrecedenceAndOperator(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class PrecedenceAndExpressionContext extends ParserRuleContext {
	public precedenceNotExpression(): PrecedenceNotExpressionContext[];
	public precedenceNotExpression(i: number): PrecedenceNotExpressionContext;
	public precedenceNotExpression(i?: number): PrecedenceNotExpressionContext | PrecedenceNotExpressionContext[] {
		if (i === undefined) {
			return this.getRuleContexts(PrecedenceNotExpressionContext);
		} else {
			return this.getRuleContext(i, PrecedenceNotExpressionContext);
		}
	}
	public precedenceAndOperator(): PrecedenceAndOperatorContext[];
	public precedenceAndOperator(i: number): PrecedenceAndOperatorContext;
	public precedenceAndOperator(i?: number): PrecedenceAndOperatorContext | PrecedenceAndOperatorContext[] {
		if (i === undefined) {
			return this.getRuleContexts(PrecedenceAndOperatorContext);
		} else {
			return this.getRuleContext(i, PrecedenceAndOperatorContext);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_precedenceAndExpression; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterPrecedenceAndExpression) {
			listener.enterPrecedenceAndExpression(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitPrecedenceAndExpression) {
			listener.exitPrecedenceAndExpression(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitPrecedenceAndExpression) {
			return visitor.visitPrecedenceAndExpression(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class PrecedenceOrOperatorContext extends ParserRuleContext {
	public KW_OR(): TerminalNode { return this.getToken(HiveSqlParser.KW_OR, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_precedenceOrOperator; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterPrecedenceOrOperator) {
			listener.enterPrecedenceOrOperator(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitPrecedenceOrOperator) {
			listener.exitPrecedenceOrOperator(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitPrecedenceOrOperator) {
			return visitor.visitPrecedenceOrOperator(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class PrecedenceOrExpressionContext extends ParserRuleContext {
	public precedenceAndExpression(): PrecedenceAndExpressionContext[];
	public precedenceAndExpression(i: number): PrecedenceAndExpressionContext;
	public precedenceAndExpression(i?: number): PrecedenceAndExpressionContext | PrecedenceAndExpressionContext[] {
		if (i === undefined) {
			return this.getRuleContexts(PrecedenceAndExpressionContext);
		} else {
			return this.getRuleContext(i, PrecedenceAndExpressionContext);
		}
	}
	public precedenceOrOperator(): PrecedenceOrOperatorContext[];
	public precedenceOrOperator(i: number): PrecedenceOrOperatorContext;
	public precedenceOrOperator(i?: number): PrecedenceOrOperatorContext | PrecedenceOrOperatorContext[] {
		if (i === undefined) {
			return this.getRuleContexts(PrecedenceOrOperatorContext);
		} else {
			return this.getRuleContext(i, PrecedenceOrOperatorContext);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_precedenceOrExpression; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterPrecedenceOrExpression) {
			listener.enterPrecedenceOrExpression(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitPrecedenceOrExpression) {
			listener.exitPrecedenceOrExpression(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitPrecedenceOrExpression) {
			return visitor.visitPrecedenceOrExpression(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class BooleanValueContext extends ParserRuleContext {
	public KW_TRUE(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_TRUE, 0); }
	public KW_FALSE(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_FALSE, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_booleanValue; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterBooleanValue) {
			listener.enterBooleanValue(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitBooleanValue) {
			listener.exitBooleanValue(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitBooleanValue) {
			return visitor.visitBooleanValue(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class BooleanValueTokContext extends ParserRuleContext {
	public KW_TRUE(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_TRUE, 0); }
	public KW_FALSE(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_FALSE, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_booleanValueTok; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterBooleanValueTok) {
			listener.enterBooleanValueTok(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitBooleanValueTok) {
			listener.exitBooleanValueTok(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitBooleanValueTok) {
			return visitor.visitBooleanValueTok(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class TableOrPartitionContext extends ParserRuleContext {
	public tableName(): TableNameContext {
		return this.getRuleContext(0, TableNameContext);
	}
	public partitionSpec(): PartitionSpecContext | undefined {
		return this.tryGetRuleContext(0, PartitionSpecContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_tableOrPartition; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterTableOrPartition) {
			listener.enterTableOrPartition(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitTableOrPartition) {
			listener.exitTableOrPartition(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitTableOrPartition) {
			return visitor.visitTableOrPartition(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class PartitionSpecContext extends ParserRuleContext {
	public KW_PARTITION(): TerminalNode { return this.getToken(HiveSqlParser.KW_PARTITION, 0); }
	public LPAREN(): TerminalNode { return this.getToken(HiveSqlParser.LPAREN, 0); }
	public partitionVal(): PartitionValContext[];
	public partitionVal(i: number): PartitionValContext;
	public partitionVal(i?: number): PartitionValContext | PartitionValContext[] {
		if (i === undefined) {
			return this.getRuleContexts(PartitionValContext);
		} else {
			return this.getRuleContext(i, PartitionValContext);
		}
	}
	public RPAREN(): TerminalNode { return this.getToken(HiveSqlParser.RPAREN, 0); }
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(HiveSqlParser.COMMA);
		} else {
			return this.getToken(HiveSqlParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_partitionSpec; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterPartitionSpec) {
			listener.enterPartitionSpec(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitPartitionSpec) {
			listener.exitPartitionSpec(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitPartitionSpec) {
			return visitor.visitPartitionSpec(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class PartitionValContext extends ParserRuleContext {
	public id_(): Id_Context {
		return this.getRuleContext(0, Id_Context);
	}
	public EQUAL(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.EQUAL, 0); }
	public constant(): ConstantContext | undefined {
		return this.tryGetRuleContext(0, ConstantContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_partitionVal; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterPartitionVal) {
			listener.enterPartitionVal(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitPartitionVal) {
			listener.exitPartitionVal(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitPartitionVal) {
			return visitor.visitPartitionVal(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class PartitionSelectorSpecContext extends ParserRuleContext {
	public LPAREN(): TerminalNode { return this.getToken(HiveSqlParser.LPAREN, 0); }
	public partitionSelectorVal(): PartitionSelectorValContext[];
	public partitionSelectorVal(i: number): PartitionSelectorValContext;
	public partitionSelectorVal(i?: number): PartitionSelectorValContext | PartitionSelectorValContext[] {
		if (i === undefined) {
			return this.getRuleContexts(PartitionSelectorValContext);
		} else {
			return this.getRuleContext(i, PartitionSelectorValContext);
		}
	}
	public RPAREN(): TerminalNode { return this.getToken(HiveSqlParser.RPAREN, 0); }
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(HiveSqlParser.COMMA);
		} else {
			return this.getToken(HiveSqlParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_partitionSelectorSpec; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterPartitionSelectorSpec) {
			listener.enterPartitionSelectorSpec(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitPartitionSelectorSpec) {
			listener.exitPartitionSelectorSpec(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitPartitionSelectorSpec) {
			return visitor.visitPartitionSelectorSpec(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class PartitionSelectorValContext extends ParserRuleContext {
	public id_(): Id_Context {
		return this.getRuleContext(0, Id_Context);
	}
	public partitionSelectorOperator(): PartitionSelectorOperatorContext {
		return this.getRuleContext(0, PartitionSelectorOperatorContext);
	}
	public constant(): ConstantContext {
		return this.getRuleContext(0, ConstantContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_partitionSelectorVal; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterPartitionSelectorVal) {
			listener.enterPartitionSelectorVal(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitPartitionSelectorVal) {
			listener.exitPartitionSelectorVal(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitPartitionSelectorVal) {
			return visitor.visitPartitionSelectorVal(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class PartitionSelectorOperatorContext extends ParserRuleContext {
	public KW_LIKE(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_LIKE, 0); }
	public subQuerySelectorOperator(): SubQuerySelectorOperatorContext | undefined {
		return this.tryGetRuleContext(0, SubQuerySelectorOperatorContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_partitionSelectorOperator; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterPartitionSelectorOperator) {
			listener.enterPartitionSelectorOperator(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitPartitionSelectorOperator) {
			listener.exitPartitionSelectorOperator(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitPartitionSelectorOperator) {
			return visitor.visitPartitionSelectorOperator(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class SubQuerySelectorOperatorContext extends ParserRuleContext {
	public EQUAL(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.EQUAL, 0); }
	public NOTEQUAL(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.NOTEQUAL, 0); }
	public LESSTHANOREQUALTO(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.LESSTHANOREQUALTO, 0); }
	public LESSTHAN(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.LESSTHAN, 0); }
	public GREATERTHANOREQUALTO(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.GREATERTHANOREQUALTO, 0); }
	public GREATERTHAN(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.GREATERTHAN, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_subQuerySelectorOperator; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterSubQuerySelectorOperator) {
			listener.enterSubQuerySelectorOperator(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitSubQuerySelectorOperator) {
			listener.exitSubQuerySelectorOperator(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitSubQuerySelectorOperator) {
			return visitor.visitSubQuerySelectorOperator(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class SysFuncNamesContext extends ParserRuleContext {
	public KW_AND(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_AND, 0); }
	public KW_OR(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_OR, 0); }
	public KW_NOT(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_NOT, 0); }
	public KW_LIKE(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_LIKE, 0); }
	public KW_IF(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_IF, 0); }
	public KW_CASE(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_CASE, 0); }
	public KW_WHEN(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_WHEN, 0); }
	public KW_FLOOR(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_FLOOR, 0); }
	public KW_TINYINT(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_TINYINT, 0); }
	public KW_SMALLINT(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_SMALLINT, 0); }
	public KW_INT(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_INT, 0); }
	public KW_INTEGER(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_INTEGER, 0); }
	public KW_BIGINT(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_BIGINT, 0); }
	public KW_FLOAT(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_FLOAT, 0); }
	public KW_REAL(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_REAL, 0); }
	public KW_DOUBLE(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_DOUBLE, 0); }
	public KW_BOOLEAN(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_BOOLEAN, 0); }
	public KW_STRING(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_STRING, 0); }
	public KW_BINARY(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_BINARY, 0); }
	public KW_ARRAY(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_ARRAY, 0); }
	public KW_MAP(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_MAP, 0); }
	public KW_STRUCT(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_STRUCT, 0); }
	public KW_UNIONTYPE(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_UNIONTYPE, 0); }
	public EQUAL(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.EQUAL, 0); }
	public EQUAL_NS(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.EQUAL_NS, 0); }
	public NOTEQUAL(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.NOTEQUAL, 0); }
	public LESSTHANOREQUALTO(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.LESSTHANOREQUALTO, 0); }
	public LESSTHAN(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.LESSTHAN, 0); }
	public GREATERTHANOREQUALTO(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.GREATERTHANOREQUALTO, 0); }
	public GREATERTHAN(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.GREATERTHAN, 0); }
	public DIVIDE(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.DIVIDE, 0); }
	public PLUS(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.PLUS, 0); }
	public MINUS(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.MINUS, 0); }
	public STAR(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.STAR, 0); }
	public MOD(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.MOD, 0); }
	public DIV(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.DIV, 0); }
	public AMPERSAND(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.AMPERSAND, 0); }
	public TILDE(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.TILDE, 0); }
	public BITWISEOR(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.BITWISEOR, 0); }
	public BITWISEXOR(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.BITWISEXOR, 0); }
	public KW_RLIKE(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_RLIKE, 0); }
	public KW_REGEXP(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_REGEXP, 0); }
	public KW_IN(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_IN, 0); }
	public KW_BETWEEN(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_BETWEEN, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_sysFuncNames; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterSysFuncNames) {
			listener.enterSysFuncNames(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitSysFuncNames) {
			listener.exitSysFuncNames(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitSysFuncNames) {
			return visitor.visitSysFuncNames(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Id_Context extends ParserRuleContext {
	public Identifier(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.Identifier, 0); }
	public nonReserved(): NonReservedContext | undefined {
		return this.tryGetRuleContext(0, NonReservedContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_id_; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterId_) {
			listener.enterId_(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitId_) {
			listener.exitId_(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitId_) {
			return visitor.visitId_(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class FunctionIdentifierContext extends ParserRuleContext {
	public _fn!: Id_Context;
	public id_(): Id_Context[];
	public id_(i: number): Id_Context;
	public id_(i?: number): Id_Context | Id_Context[] {
		if (i === undefined) {
			return this.getRuleContexts(Id_Context);
		} else {
			return this.getRuleContext(i, Id_Context);
		}
	}
	public DOT(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.DOT, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_functionIdentifier; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterFunctionIdentifier) {
			listener.enterFunctionIdentifier(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitFunctionIdentifier) {
			listener.exitFunctionIdentifier(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitFunctionIdentifier) {
			return visitor.visitFunctionIdentifier(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class PrincipalIdentifierContext extends ParserRuleContext {
	public id_(): Id_Context {
		return this.getRuleContext(0, Id_Context);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_principalIdentifier; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterPrincipalIdentifier) {
			listener.enterPrincipalIdentifier(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitPrincipalIdentifier) {
			listener.exitPrincipalIdentifier(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitPrincipalIdentifier) {
			return visitor.visitPrincipalIdentifier(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class NonReservedContext extends ParserRuleContext {
	public KW_ABORT(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_ABORT, 0); }
	public KW_ACTIVATE(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_ACTIVATE, 0); }
	public KW_ACTIVE(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_ACTIVE, 0); }
	public KW_ADD(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_ADD, 0); }
	public KW_ADMIN(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_ADMIN, 0); }
	public KW_AFTER(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_AFTER, 0); }
	public KW_ALLOC_FRACTION(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_ALLOC_FRACTION, 0); }
	public KW_ANALYZE(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_ANALYZE, 0); }
	public KW_ARCHIVE(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_ARCHIVE, 0); }
	public KW_ASC(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_ASC, 0); }
	public KW_AST(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_AST, 0); }
	public KW_AT(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_AT, 0); }
	public KW_AUTOCOMMIT(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_AUTOCOMMIT, 0); }
	public KW_BATCH(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_BATCH, 0); }
	public KW_BEFORE(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_BEFORE, 0); }
	public KW_BUCKET(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_BUCKET, 0); }
	public KW_BUCKETS(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_BUCKETS, 0); }
	public KW_CACHE(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_CACHE, 0); }
	public KW_CASCADE(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_CASCADE, 0); }
	public KW_CBO(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_CBO, 0); }
	public KW_CHANGE(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_CHANGE, 0); }
	public KW_CHECK(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_CHECK, 0); }
	public KW_CLUSTER(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_CLUSTER, 0); }
	public KW_CLUSTERED(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_CLUSTERED, 0); }
	public KW_CLUSTERSTATUS(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_CLUSTERSTATUS, 0); }
	public KW_COLLECTION(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_COLLECTION, 0); }
	public KW_COLUMNS(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_COLUMNS, 0); }
	public KW_COMMENT(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_COMMENT, 0); }
	public KW_COMPACT(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_COMPACT, 0); }
	public KW_COMPACTIONS(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_COMPACTIONS, 0); }
	public KW_COMPUTE(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_COMPUTE, 0); }
	public KW_CONCATENATE(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_CONCATENATE, 0); }
	public KW_CONTINUE(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_CONTINUE, 0); }
	public KW_COST(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_COST, 0); }
	public KW_CRON(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_CRON, 0); }
	public KW_DATA(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_DATA, 0); }
	public KW_DATABASES(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_DATABASES, 0); }
	public KW_DATETIME(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_DATETIME, 0); }
	public KW_DAY(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_DAY, 0); }
	public KW_DAYS(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_DAYS, 0); }
	public KW_DAYOFWEEK(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_DAYOFWEEK, 0); }
	public KW_DBPROPERTIES(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_DBPROPERTIES, 0); }
	public KW_DCPROPERTIES(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_DCPROPERTIES, 0); }
	public KW_DEBUG(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_DEBUG, 0); }
	public KW_DEFAULT(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_DEFAULT, 0); }
	public KW_DEFERRED(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_DEFERRED, 0); }
	public KW_DEFINED(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_DEFINED, 0); }
	public KW_DELIMITED(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_DELIMITED, 0); }
	public KW_DEPENDENCY(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_DEPENDENCY, 0); }
	public KW_DESC(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_DESC, 0); }
	public KW_DETAIL(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_DETAIL, 0); }
	public KW_DIRECTORIES(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_DIRECTORIES, 0); }
	public KW_DIRECTORY(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_DIRECTORY, 0); }
	public KW_DISABLE(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_DISABLE, 0); }
	public KW_DISABLED(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_DISABLED, 0); }
	public KW_DISTRIBUTE(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_DISTRIBUTE, 0); }
	public KW_DISTRIBUTED(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_DISTRIBUTED, 0); }
	public KW_DO(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_DO, 0); }
	public KW_DUMP(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_DUMP, 0); }
	public KW_ELEM_TYPE(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_ELEM_TYPE, 0); }
	public KW_ENABLE(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_ENABLE, 0); }
	public KW_ENABLED(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_ENABLED, 0); }
	public KW_ENFORCED(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_ENFORCED, 0); }
	public KW_ESCAPED(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_ESCAPED, 0); }
	public KW_EVERY(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_EVERY, 0); }
	public KW_EXCLUSIVE(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_EXCLUSIVE, 0); }
	public KW_EXECUTE(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_EXECUTE, 0); }
	public KW_EXECUTED(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_EXECUTED, 0); }
	public KW_EXPIRE_SNAPSHOTS(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_EXPIRE_SNAPSHOTS, 0); }
	public KW_EXPLAIN(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_EXPLAIN, 0); }
	public KW_EXPORT(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_EXPORT, 0); }
	public KW_EXPRESSION(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_EXPRESSION, 0); }
	public KW_FIELDS(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_FIELDS, 0); }
	public KW_FILE(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_FILE, 0); }
	public KW_FILEFORMAT(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_FILEFORMAT, 0); }
	public KW_FIRST(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_FIRST, 0); }
	public KW_FORMAT(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_FORMAT, 0); }
	public KW_FORMATTED(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_FORMATTED, 0); }
	public KW_FUNCTIONS(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_FUNCTIONS, 0); }
	public KW_HOLD_DDLTIME(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_HOLD_DDLTIME, 0); }
	public KW_HOUR(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_HOUR, 0); }
	public KW_HOURS(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_HOURS, 0); }
	public KW_IDXPROPERTIES(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_IDXPROPERTIES, 0); }
	public KW_IGNORE(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_IGNORE, 0); }
	public KW_INDEX(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_INDEX, 0); }
	public KW_INDEXES(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_INDEXES, 0); }
	public KW_INPATH(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_INPATH, 0); }
	public KW_INPUTDRIVER(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_INPUTDRIVER, 0); }
	public KW_INPUTFORMAT(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_INPUTFORMAT, 0); }
	public KW_ISOLATION(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_ISOLATION, 0); }
	public KW_ITEMS(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_ITEMS, 0); }
	public KW_JAR(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_JAR, 0); }
	public KW_JOINCOST(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_JOINCOST, 0); }
	public KW_KEY(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_KEY, 0); }
	public KW_KEYS(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_KEYS, 0); }
	public KW_KEY_TYPE(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_KEY_TYPE, 0); }
	public KW_KILL(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_KILL, 0); }
	public KW_LAST(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_LAST, 0); }
	public KW_LEVEL(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_LEVEL, 0); }
	public KW_LIMIT(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_LIMIT, 0); }
	public KW_LINES(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_LINES, 0); }
	public KW_LOAD(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_LOAD, 0); }
	public KW_LOCATION(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_LOCATION, 0); }
	public KW_LOCK(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_LOCK, 0); }
	public KW_LOCKS(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_LOCKS, 0); }
	public KW_LOGICAL(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_LOGICAL, 0); }
	public KW_LONG(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_LONG, 0); }
	public KW_MANAGED(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_MANAGED, 0); }
	public KW_MANAGEDLOCATION(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_MANAGEDLOCATION, 0); }
	public KW_MANAGEMENT(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_MANAGEMENT, 0); }
	public KW_MAPJOIN(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_MAPJOIN, 0); }
	public KW_MAPPING(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_MAPPING, 0); }
	public KW_MATCHED(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_MATCHED, 0); }
	public KW_MATERIALIZED(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_MATERIALIZED, 0); }
	public KW_METADATA(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_METADATA, 0); }
	public KW_MINUTE(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_MINUTE, 0); }
	public KW_MINUTES(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_MINUTES, 0); }
	public KW_MONTH(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_MONTH, 0); }
	public KW_MONTHS(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_MONTHS, 0); }
	public KW_MOVE(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_MOVE, 0); }
	public KW_MSCK(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_MSCK, 0); }
	public KW_NORELY(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_NORELY, 0); }
	public KW_NOSCAN(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_NOSCAN, 0); }
	public KW_NOVALIDATE(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_NOVALIDATE, 0); }
	public KW_NO_DROP(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_NO_DROP, 0); }
	public KW_NULLS(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_NULLS, 0); }
	public KW_OFFLINE(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_OFFLINE, 0); }
	public KW_OFFSET(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_OFFSET, 0); }
	public KW_OPERATOR(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_OPERATOR, 0); }
	public KW_OPTION(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_OPTION, 0); }
	public KW_OUTPUTDRIVER(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_OUTPUTDRIVER, 0); }
	public KW_OUTPUTFORMAT(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_OUTPUTFORMAT, 0); }
	public KW_OVERWRITE(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_OVERWRITE, 0); }
	public KW_OWNER(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_OWNER, 0); }
	public KW_PARTITIONED(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_PARTITIONED, 0); }
	public KW_PARTITIONS(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_PARTITIONS, 0); }
	public KW_PATH(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_PATH, 0); }
	public KW_PLAN(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_PLAN, 0); }
	public KW_PLANS(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_PLANS, 0); }
	public KW_PLUS(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_PLUS, 0); }
	public KW_POOL(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_POOL, 0); }
	public KW_PRINCIPALS(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_PRINCIPALS, 0); }
	public KW_PROTECTION(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_PROTECTION, 0); }
	public KW_PURGE(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_PURGE, 0); }
	public KW_QUARTER(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_QUARTER, 0); }
	public KW_QUERY(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_QUERY, 0); }
	public KW_QUERY_PARALLELISM(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_QUERY_PARALLELISM, 0); }
	public KW_READ(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_READ, 0); }
	public KW_READONLY(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_READONLY, 0); }
	public KW_REBUILD(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_REBUILD, 0); }
	public KW_RECORDREADER(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_RECORDREADER, 0); }
	public KW_RECORDWRITER(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_RECORDWRITER, 0); }
	public KW_RELOAD(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_RELOAD, 0); }
	public KW_RELY(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_RELY, 0); }
	public KW_REMOTE(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_REMOTE, 0); }
	public KW_RENAME(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_RENAME, 0); }
	public KW_REOPTIMIZATION(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_REOPTIMIZATION, 0); }
	public KW_REPAIR(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_REPAIR, 0); }
	public KW_REPL(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_REPL, 0); }
	public KW_REPLACE(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_REPLACE, 0); }
	public KW_REPLICATION(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_REPLICATION, 0); }
	public KW_RESOURCE(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_RESOURCE, 0); }
	public KW_RESPECT(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_RESPECT, 0); }
	public KW_RESTRICT(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_RESTRICT, 0); }
	public KW_REWRITE(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_REWRITE, 0); }
	public KW_ROLE(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_ROLE, 0); }
	public KW_ROLES(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_ROLES, 0); }
	public KW_SCHEDULED(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_SCHEDULED, 0); }
	public KW_SCHEDULING_POLICY(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_SCHEDULING_POLICY, 0); }
	public KW_SCHEMA(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_SCHEMA, 0); }
	public KW_SCHEMAS(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_SCHEMAS, 0); }
	public KW_SECOND(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_SECOND, 0); }
	public KW_SECONDS(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_SECONDS, 0); }
	public KW_SEMI(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_SEMI, 0); }
	public KW_SERDE(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_SERDE, 0); }
	public KW_SERDEPROPERTIES(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_SERDEPROPERTIES, 0); }
	public KW_SERVER(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_SERVER, 0); }
	public KW_SETS(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_SETS, 0); }
	public KW_SET_CURRENT_SNAPSHOT(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_SET_CURRENT_SNAPSHOT, 0); }
	public KW_SHARED(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_SHARED, 0); }
	public KW_SHOW(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_SHOW, 0); }
	public KW_SHOW_DATABASE(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_SHOW_DATABASE, 0); }
	public KW_SKEWED(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_SKEWED, 0); }
	public KW_SNAPSHOT(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_SNAPSHOT, 0); }
	public KW_SORT(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_SORT, 0); }
	public KW_SORTED(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_SORTED, 0); }
	public KW_SPEC(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_SPEC, 0); }
	public KW_SSL(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_SSL, 0); }
	public KW_STATISTICS(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_STATISTICS, 0); }
	public KW_STATUS(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_STATUS, 0); }
	public KW_STORED(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_STORED, 0); }
	public KW_STREAMTABLE(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_STREAMTABLE, 0); }
	public KW_STRING(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_STRING, 0); }
	public KW_STRUCT(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_STRUCT, 0); }
	public KW_SUMMARY(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_SUMMARY, 0); }
	public KW_SYSTEM_TIME(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_SYSTEM_TIME, 0); }
	public KW_SYSTEM_VERSION(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_SYSTEM_VERSION, 0); }
	public KW_TABLES(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_TABLES, 0); }
	public KW_TBLPROPERTIES(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_TBLPROPERTIES, 0); }
	public KW_TEMPORARY(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_TEMPORARY, 0); }
	public KW_TERMINATED(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_TERMINATED, 0); }
	public KW_TIMESTAMPTZ(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_TIMESTAMPTZ, 0); }
	public KW_TINYINT(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_TINYINT, 0); }
	public KW_TOUCH(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_TOUCH, 0); }
	public KW_TRANSACTION(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_TRANSACTION, 0); }
	public KW_TRANSACTIONAL(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_TRANSACTIONAL, 0); }
	public KW_TRANSACTIONS(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_TRANSACTIONS, 0); }
	public KW_TRIM(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_TRIM, 0); }
	public KW_TYPE(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_TYPE, 0); }
	public KW_UNARCHIVE(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_UNARCHIVE, 0); }
	public KW_UNDO(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_UNDO, 0); }
	public KW_UNIONTYPE(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_UNIONTYPE, 0); }
	public KW_UNKNOWN(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_UNKNOWN, 0); }
	public KW_UNLOCK(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_UNLOCK, 0); }
	public KW_UNMANAGED(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_UNMANAGED, 0); }
	public KW_UNSET(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_UNSET, 0); }
	public KW_UNSIGNED(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_UNSIGNED, 0); }
	public KW_URI(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_URI, 0); }
	public KW_URL(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_URL, 0); }
	public KW_USE(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_USE, 0); }
	public KW_UTC(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_UTC, 0); }
	public KW_UTCTIMESTAMP(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_UTCTIMESTAMP, 0); }
	public KW_VALIDATE(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_VALIDATE, 0); }
	public KW_VALUE_TYPE(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_VALUE_TYPE, 0); }
	public KW_VECTORIZATION(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_VECTORIZATION, 0); }
	public KW_VIEW(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_VIEW, 0); }
	public KW_VIEWS(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_VIEWS, 0); }
	public KW_WAIT(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_WAIT, 0); }
	public KW_WEEK(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_WEEK, 0); }
	public KW_WEEKS(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_WEEKS, 0); }
	public KW_WHILE(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_WHILE, 0); }
	public KW_WITHIN(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_WITHIN, 0); }
	public KW_WORK(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_WORK, 0); }
	public KW_WORKLOAD(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_WORKLOAD, 0); }
	public KW_WRITE(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_WRITE, 0); }
	public KW_YEAR(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_YEAR, 0); }
	public KW_YEARS(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_YEARS, 0); }
	public KW_ZONE(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_ZONE, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_nonReserved; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterNonReserved) {
			listener.enterNonReserved(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitNonReserved) {
			listener.exitNonReserved(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitNonReserved) {
			return visitor.visitNonReserved(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Sql11ReservedKeywordsUsedAsFunctionNameContext extends ParserRuleContext {
	public KW_ARRAY(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_ARRAY, 0); }
	public KW_BIGINT(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_BIGINT, 0); }
	public KW_BINARY(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_BINARY, 0); }
	public KW_BOOLEAN(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_BOOLEAN, 0); }
	public KW_CURRENT_DATE(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_CURRENT_DATE, 0); }
	public KW_CURRENT_TIMESTAMP(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_CURRENT_TIMESTAMP, 0); }
	public KW_DATE(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_DATE, 0); }
	public KW_DOUBLE(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_DOUBLE, 0); }
	public KW_FLOAT(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_FLOAT, 0); }
	public KW_GROUPING(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_GROUPING, 0); }
	public KW_IF(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_IF, 0); }
	public KW_INT(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_INT, 0); }
	public KW_INTEGER(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_INTEGER, 0); }
	public KW_MAP(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_MAP, 0); }
	public KW_REAL(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_REAL, 0); }
	public KW_SMALLINT(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_SMALLINT, 0); }
	public KW_TIMESTAMP(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_TIMESTAMP, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_sql11ReservedKeywordsUsedAsFunctionName; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterSql11ReservedKeywordsUsedAsFunctionName) {
			listener.enterSql11ReservedKeywordsUsedAsFunctionName(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitSql11ReservedKeywordsUsedAsFunctionName) {
			listener.exitSql11ReservedKeywordsUsedAsFunctionName(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitSql11ReservedKeywordsUsedAsFunctionName) {
			return visitor.visitSql11ReservedKeywordsUsedAsFunctionName(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class HintContext extends ParserRuleContext {
	public hintList(): HintListContext {
		return this.getRuleContext(0, HintListContext);
	}
	public EOF(): TerminalNode { return this.getToken(HiveSqlParser.EOF, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_hint; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterHint) {
			listener.enterHint(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitHint) {
			listener.exitHint(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitHint) {
			return visitor.visitHint(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class HintListContext extends ParserRuleContext {
	public hintItem(): HintItemContext[];
	public hintItem(i: number): HintItemContext;
	public hintItem(i?: number): HintItemContext | HintItemContext[] {
		if (i === undefined) {
			return this.getRuleContexts(HintItemContext);
		} else {
			return this.getRuleContext(i, HintItemContext);
		}
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(HiveSqlParser.COMMA);
		} else {
			return this.getToken(HiveSqlParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_hintList; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterHintList) {
			listener.enterHintList(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitHintList) {
			listener.exitHintList(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitHintList) {
			return visitor.visitHintList(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class HintItemContext extends ParserRuleContext {
	public hintName(): HintNameContext {
		return this.getRuleContext(0, HintNameContext);
	}
	public LPAREN(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.LPAREN, 0); }
	public hintArgs(): HintArgsContext | undefined {
		return this.tryGetRuleContext(0, HintArgsContext);
	}
	public RPAREN(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.RPAREN, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_hintItem; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterHintItem) {
			listener.enterHintItem(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitHintItem) {
			listener.exitHintItem(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitHintItem) {
			return visitor.visitHintItem(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class HintNameContext extends ParserRuleContext {
	public KW_MAPJOIN(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_MAPJOIN, 0); }
	public KW_SEMI(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_SEMI, 0); }
	public KW_STREAMTABLE(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_STREAMTABLE, 0); }
	public KW_PKFK_JOIN(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_PKFK_JOIN, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_hintName; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterHintName) {
			listener.enterHintName(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitHintName) {
			listener.exitHintName(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitHintName) {
			return visitor.visitHintName(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class HintArgsContext extends ParserRuleContext {
	public hintArgName(): HintArgNameContext[];
	public hintArgName(i: number): HintArgNameContext;
	public hintArgName(i?: number): HintArgNameContext | HintArgNameContext[] {
		if (i === undefined) {
			return this.getRuleContexts(HintArgNameContext);
		} else {
			return this.getRuleContext(i, HintArgNameContext);
		}
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(HiveSqlParser.COMMA);
		} else {
			return this.getToken(HiveSqlParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_hintArgs; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterHintArgs) {
			listener.enterHintArgs(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitHintArgs) {
			listener.exitHintArgs(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitHintArgs) {
			return visitor.visitHintArgs(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class HintArgNameContext extends ParserRuleContext {
	public Identifier(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.Identifier, 0); }
	public Number(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.Number, 0); }
	public KW_NONE(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_NONE, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_hintArgName; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterHintArgName) {
			listener.enterHintArgName(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitHintArgName) {
			listener.exitHintArgName(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitHintArgName) {
			return visitor.visitHintArgName(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class PrepareStatementContext extends ParserRuleContext {
	public KW_PREPARE(): TerminalNode { return this.getToken(HiveSqlParser.KW_PREPARE, 0); }
	public id_(): Id_Context {
		return this.getRuleContext(0, Id_Context);
	}
	public KW_FROM(): TerminalNode { return this.getToken(HiveSqlParser.KW_FROM, 0); }
	public queryStatementExpression(): QueryStatementExpressionContext {
		return this.getRuleContext(0, QueryStatementExpressionContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_prepareStatement; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterPrepareStatement) {
			listener.enterPrepareStatement(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitPrepareStatement) {
			listener.exitPrepareStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitPrepareStatement) {
			return visitor.visitPrepareStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ExecuteStatementContext extends ParserRuleContext {
	public KW_EXECUTE(): TerminalNode { return this.getToken(HiveSqlParser.KW_EXECUTE, 0); }
	public id_(): Id_Context {
		return this.getRuleContext(0, Id_Context);
	}
	public KW_USING(): TerminalNode { return this.getToken(HiveSqlParser.KW_USING, 0); }
	public executeParamList(): ExecuteParamListContext {
		return this.getRuleContext(0, ExecuteParamListContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_executeStatement; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterExecuteStatement) {
			listener.enterExecuteStatement(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitExecuteStatement) {
			listener.exitExecuteStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitExecuteStatement) {
			return visitor.visitExecuteStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ExecuteParamListContext extends ParserRuleContext {
	public constant(): ConstantContext[];
	public constant(i: number): ConstantContext;
	public constant(i?: number): ConstantContext | ConstantContext[] {
		if (i === undefined) {
			return this.getRuleContexts(ConstantContext);
		} else {
			return this.getRuleContext(i, ConstantContext);
		}
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(HiveSqlParser.COMMA);
		} else {
			return this.getToken(HiveSqlParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_executeParamList; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterExecuteParamList) {
			listener.enterExecuteParamList(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitExecuteParamList) {
			listener.exitExecuteParamList(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitExecuteParamList) {
			return visitor.visitExecuteParamList(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ResourcePlanDdlStatementsContext extends ParserRuleContext {
	public createResourcePlanStatement(): CreateResourcePlanStatementContext | undefined {
		return this.tryGetRuleContext(0, CreateResourcePlanStatementContext);
	}
	public alterResourcePlanStatement(): AlterResourcePlanStatementContext | undefined {
		return this.tryGetRuleContext(0, AlterResourcePlanStatementContext);
	}
	public dropResourcePlanStatement(): DropResourcePlanStatementContext | undefined {
		return this.tryGetRuleContext(0, DropResourcePlanStatementContext);
	}
	public globalWmStatement(): GlobalWmStatementContext | undefined {
		return this.tryGetRuleContext(0, GlobalWmStatementContext);
	}
	public replaceResourcePlanStatement(): ReplaceResourcePlanStatementContext | undefined {
		return this.tryGetRuleContext(0, ReplaceResourcePlanStatementContext);
	}
	public createTriggerStatement(): CreateTriggerStatementContext | undefined {
		return this.tryGetRuleContext(0, CreateTriggerStatementContext);
	}
	public alterTriggerStatement(): AlterTriggerStatementContext | undefined {
		return this.tryGetRuleContext(0, AlterTriggerStatementContext);
	}
	public dropTriggerStatement(): DropTriggerStatementContext | undefined {
		return this.tryGetRuleContext(0, DropTriggerStatementContext);
	}
	public createPoolStatement(): CreatePoolStatementContext | undefined {
		return this.tryGetRuleContext(0, CreatePoolStatementContext);
	}
	public alterPoolStatement(): AlterPoolStatementContext | undefined {
		return this.tryGetRuleContext(0, AlterPoolStatementContext);
	}
	public dropPoolStatement(): DropPoolStatementContext | undefined {
		return this.tryGetRuleContext(0, DropPoolStatementContext);
	}
	public createMappingStatement(): CreateMappingStatementContext | undefined {
		return this.tryGetRuleContext(0, CreateMappingStatementContext);
	}
	public alterMappingStatement(): AlterMappingStatementContext | undefined {
		return this.tryGetRuleContext(0, AlterMappingStatementContext);
	}
	public dropMappingStatement(): DropMappingStatementContext | undefined {
		return this.tryGetRuleContext(0, DropMappingStatementContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_resourcePlanDdlStatements; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterResourcePlanDdlStatements) {
			listener.enterResourcePlanDdlStatements(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitResourcePlanDdlStatements) {
			listener.exitResourcePlanDdlStatements(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitResourcePlanDdlStatements) {
			return visitor.visitResourcePlanDdlStatements(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class RpAssignContext extends ParserRuleContext {
	public _parallelism!: Token;
	public KW_QUERY_PARALLELISM(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_QUERY_PARALLELISM, 0); }
	public EQUAL(): TerminalNode { return this.getToken(HiveSqlParser.EQUAL, 0); }
	public Number(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.Number, 0); }
	public KW_DEFAULT(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_DEFAULT, 0); }
	public KW_POOL(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_POOL, 0); }
	public poolPath(): PoolPathContext | undefined {
		return this.tryGetRuleContext(0, PoolPathContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_rpAssign; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterRpAssign) {
			listener.enterRpAssign(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitRpAssign) {
			listener.exitRpAssign(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitRpAssign) {
			return visitor.visitRpAssign(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class RpAssignListContext extends ParserRuleContext {
	public rpAssign(): RpAssignContext[];
	public rpAssign(i: number): RpAssignContext;
	public rpAssign(i?: number): RpAssignContext | RpAssignContext[] {
		if (i === undefined) {
			return this.getRuleContexts(RpAssignContext);
		} else {
			return this.getRuleContext(i, RpAssignContext);
		}
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(HiveSqlParser.COMMA);
		} else {
			return this.getToken(HiveSqlParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_rpAssignList; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterRpAssignList) {
			listener.enterRpAssignList(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitRpAssignList) {
			listener.exitRpAssignList(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitRpAssignList) {
			return visitor.visitRpAssignList(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class RpUnassignContext extends ParserRuleContext {
	public KW_QUERY_PARALLELISM(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_QUERY_PARALLELISM, 0); }
	public KW_DEFAULT(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_DEFAULT, 0); }
	public KW_POOL(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_POOL, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_rpUnassign; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterRpUnassign) {
			listener.enterRpUnassign(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitRpUnassign) {
			listener.exitRpUnassign(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitRpUnassign) {
			return visitor.visitRpUnassign(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class RpUnassignListContext extends ParserRuleContext {
	public rpUnassign(): RpUnassignContext[];
	public rpUnassign(i: number): RpUnassignContext;
	public rpUnassign(i?: number): RpUnassignContext | RpUnassignContext[] {
		if (i === undefined) {
			return this.getRuleContexts(RpUnassignContext);
		} else {
			return this.getRuleContext(i, RpUnassignContext);
		}
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(HiveSqlParser.COMMA);
		} else {
			return this.getToken(HiveSqlParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_rpUnassignList; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterRpUnassignList) {
			listener.enterRpUnassignList(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitRpUnassignList) {
			listener.exitRpUnassignList(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitRpUnassignList) {
			return visitor.visitRpUnassignList(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class CreateResourcePlanStatementContext extends ParserRuleContext {
	public _name!: Id_Context;
	public _likeName!: Id_Context;
	public KW_CREATE(): TerminalNode { return this.getToken(HiveSqlParser.KW_CREATE, 0); }
	public KW_RESOURCE(): TerminalNode { return this.getToken(HiveSqlParser.KW_RESOURCE, 0); }
	public KW_PLAN(): TerminalNode { return this.getToken(HiveSqlParser.KW_PLAN, 0); }
	public KW_LIKE(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_LIKE, 0); }
	public ifNotExists(): IfNotExistsContext | undefined {
		return this.tryGetRuleContext(0, IfNotExistsContext);
	}
	public id_(): Id_Context[];
	public id_(i: number): Id_Context;
	public id_(i?: number): Id_Context | Id_Context[] {
		if (i === undefined) {
			return this.getRuleContexts(Id_Context);
		} else {
			return this.getRuleContext(i, Id_Context);
		}
	}
	public KW_WITH(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_WITH, 0); }
	public rpAssignList(): RpAssignListContext | undefined {
		return this.tryGetRuleContext(0, RpAssignListContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_createResourcePlanStatement; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterCreateResourcePlanStatement) {
			listener.enterCreateResourcePlanStatement(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitCreateResourcePlanStatement) {
			listener.exitCreateResourcePlanStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitCreateResourcePlanStatement) {
			return visitor.visitCreateResourcePlanStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class WithReplaceContext extends ParserRuleContext {
	public KW_WITH(): TerminalNode { return this.getToken(HiveSqlParser.KW_WITH, 0); }
	public KW_REPLACE(): TerminalNode { return this.getToken(HiveSqlParser.KW_REPLACE, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_withReplace; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterWithReplace) {
			listener.enterWithReplace(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitWithReplace) {
			listener.exitWithReplace(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitWithReplace) {
			return visitor.visitWithReplace(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ActivateContext extends ParserRuleContext {
	public KW_ACTIVATE(): TerminalNode { return this.getToken(HiveSqlParser.KW_ACTIVATE, 0); }
	public withReplace(): WithReplaceContext | undefined {
		return this.tryGetRuleContext(0, WithReplaceContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_activate; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterActivate) {
			listener.enterActivate(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitActivate) {
			listener.exitActivate(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitActivate) {
			return visitor.visitActivate(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class EnableContext extends ParserRuleContext {
	public KW_ENABLE(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_ENABLE, 0); }
	public KW_ENABLED(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_ENABLED, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_enable; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterEnable) {
			listener.enterEnable(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitEnable) {
			listener.exitEnable(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitEnable) {
			return visitor.visitEnable(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class DisableContext extends ParserRuleContext {
	public KW_DISABLE(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_DISABLE, 0); }
	public KW_DISABLED(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_DISABLED, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_disable; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterDisable) {
			listener.enterDisable(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitDisable) {
			listener.exitDisable(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitDisable) {
			return visitor.visitDisable(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class UnmanagedContext extends ParserRuleContext {
	public KW_UNMANAGED(): TerminalNode { return this.getToken(HiveSqlParser.KW_UNMANAGED, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_unmanaged; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterUnmanaged) {
			listener.enterUnmanaged(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitUnmanaged) {
			listener.exitUnmanaged(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitUnmanaged) {
			return visitor.visitUnmanaged(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class YearContext extends ParserRuleContext {
	public KW_YEAR(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_YEAR, 0); }
	public KW_YEARS(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_YEARS, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_year; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterYear) {
			listener.enterYear(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitYear) {
			listener.exitYear(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitYear) {
			return visitor.visitYear(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class MonthContext extends ParserRuleContext {
	public KW_MONTH(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_MONTH, 0); }
	public KW_MONTHS(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_MONTHS, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_month; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterMonth) {
			listener.enterMonth(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitMonth) {
			listener.exitMonth(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitMonth) {
			return visitor.visitMonth(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class WeekContext extends ParserRuleContext {
	public KW_WEEK(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_WEEK, 0); }
	public KW_WEEKS(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_WEEKS, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_week; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterWeek) {
			listener.enterWeek(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitWeek) {
			listener.exitWeek(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitWeek) {
			return visitor.visitWeek(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class DayContext extends ParserRuleContext {
	public KW_DAY(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_DAY, 0); }
	public KW_DAYS(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_DAYS, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_day; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterDay) {
			listener.enterDay(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitDay) {
			listener.exitDay(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitDay) {
			return visitor.visitDay(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class HourContext extends ParserRuleContext {
	public KW_HOUR(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_HOUR, 0); }
	public KW_HOURS(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_HOURS, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_hour; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterHour) {
			listener.enterHour(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitHour) {
			listener.exitHour(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitHour) {
			return visitor.visitHour(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class MinuteContext extends ParserRuleContext {
	public KW_MINUTE(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_MINUTE, 0); }
	public KW_MINUTES(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_MINUTES, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_minute; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterMinute) {
			listener.enterMinute(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitMinute) {
			listener.exitMinute(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitMinute) {
			return visitor.visitMinute(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class SecondContext extends ParserRuleContext {
	public KW_SECOND(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_SECOND, 0); }
	public KW_SECONDS(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_SECONDS, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_second; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterSecond) {
			listener.enterSecond(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitSecond) {
			listener.exitSecond(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitSecond) {
			return visitor.visitSecond(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class DecimalContext extends ParserRuleContext {
	public KW_DEC(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_DEC, 0); }
	public KW_DECIMAL(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_DECIMAL, 0); }
	public KW_NUMERIC(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_NUMERIC, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_decimal; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterDecimal) {
			listener.enterDecimal(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitDecimal) {
			listener.exitDecimal(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitDecimal) {
			return visitor.visitDecimal(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class AlterResourcePlanStatementContext extends ParserRuleContext {
	public _name!: Id_Context;
	public _newName!: Id_Context;
	public KW_ALTER(): TerminalNode { return this.getToken(HiveSqlParser.KW_ALTER, 0); }
	public KW_RESOURCE(): TerminalNode { return this.getToken(HiveSqlParser.KW_RESOURCE, 0); }
	public KW_PLAN(): TerminalNode { return this.getToken(HiveSqlParser.KW_PLAN, 0); }
	public id_(): Id_Context[];
	public id_(i: number): Id_Context;
	public id_(i?: number): Id_Context | Id_Context[] {
		if (i === undefined) {
			return this.getRuleContexts(Id_Context);
		} else {
			return this.getRuleContext(i, Id_Context);
		}
	}
	public KW_VALIDATE(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_VALIDATE, 0); }
	public disable(): DisableContext | undefined {
		return this.tryGetRuleContext(0, DisableContext);
	}
	public KW_SET(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_SET, 0); }
	public rpAssignList(): RpAssignListContext | undefined {
		return this.tryGetRuleContext(0, RpAssignListContext);
	}
	public KW_UNSET(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_UNSET, 0); }
	public rpUnassignList(): RpUnassignListContext | undefined {
		return this.tryGetRuleContext(0, RpUnassignListContext);
	}
	public KW_RENAME(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_RENAME, 0); }
	public KW_TO(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_TO, 0); }
	public activate(): ActivateContext | undefined {
		return this.tryGetRuleContext(0, ActivateContext);
	}
	public enable(): EnableContext | undefined {
		return this.tryGetRuleContext(0, EnableContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_alterResourcePlanStatement; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterAlterResourcePlanStatement) {
			listener.enterAlterResourcePlanStatement(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitAlterResourcePlanStatement) {
			listener.exitAlterResourcePlanStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitAlterResourcePlanStatement) {
			return visitor.visitAlterResourcePlanStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class GlobalWmStatementContext extends ParserRuleContext {
	public KW_WORKLOAD(): TerminalNode { return this.getToken(HiveSqlParser.KW_WORKLOAD, 0); }
	public KW_MANAGEMENT(): TerminalNode { return this.getToken(HiveSqlParser.KW_MANAGEMENT, 0); }
	public enable(): EnableContext | undefined {
		return this.tryGetRuleContext(0, EnableContext);
	}
	public disable(): DisableContext | undefined {
		return this.tryGetRuleContext(0, DisableContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_globalWmStatement; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterGlobalWmStatement) {
			listener.enterGlobalWmStatement(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitGlobalWmStatement) {
			listener.exitGlobalWmStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitGlobalWmStatement) {
			return visitor.visitGlobalWmStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ReplaceResourcePlanStatementContext extends ParserRuleContext {
	public _src!: Id_Context;
	public _dest!: Id_Context;
	public KW_REPLACE(): TerminalNode { return this.getToken(HiveSqlParser.KW_REPLACE, 0); }
	public KW_ACTIVE(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_ACTIVE, 0); }
	public KW_RESOURCE(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_RESOURCE, 0); }
	public KW_PLAN(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_PLAN, 0); }
	public KW_WITH(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_WITH, 0); }
	public id_(): Id_Context[];
	public id_(i: number): Id_Context;
	public id_(i?: number): Id_Context | Id_Context[] {
		if (i === undefined) {
			return this.getRuleContexts(Id_Context);
		} else {
			return this.getRuleContext(i, Id_Context);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_replaceResourcePlanStatement; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterReplaceResourcePlanStatement) {
			listener.enterReplaceResourcePlanStatement(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitReplaceResourcePlanStatement) {
			listener.exitReplaceResourcePlanStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitReplaceResourcePlanStatement) {
			return visitor.visitReplaceResourcePlanStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class DropResourcePlanStatementContext extends ParserRuleContext {
	public _name!: Id_Context;
	public KW_DROP(): TerminalNode { return this.getToken(HiveSqlParser.KW_DROP, 0); }
	public KW_RESOURCE(): TerminalNode { return this.getToken(HiveSqlParser.KW_RESOURCE, 0); }
	public KW_PLAN(): TerminalNode { return this.getToken(HiveSqlParser.KW_PLAN, 0); }
	public id_(): Id_Context {
		return this.getRuleContext(0, Id_Context);
	}
	public ifExists(): IfExistsContext | undefined {
		return this.tryGetRuleContext(0, IfExistsContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_dropResourcePlanStatement; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterDropResourcePlanStatement) {
			listener.enterDropResourcePlanStatement(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitDropResourcePlanStatement) {
			listener.exitDropResourcePlanStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitDropResourcePlanStatement) {
			return visitor.visitDropResourcePlanStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class PoolPathContext extends ParserRuleContext {
	public id_(): Id_Context[];
	public id_(i: number): Id_Context;
	public id_(i?: number): Id_Context | Id_Context[] {
		if (i === undefined) {
			return this.getRuleContexts(Id_Context);
		} else {
			return this.getRuleContext(i, Id_Context);
		}
	}
	public DOT(): TerminalNode[];
	public DOT(i: number): TerminalNode;
	public DOT(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(HiveSqlParser.DOT);
		} else {
			return this.getToken(HiveSqlParser.DOT, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_poolPath; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterPoolPath) {
			listener.enterPoolPath(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitPoolPath) {
			listener.exitPoolPath(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitPoolPath) {
			return visitor.visitPoolPath(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class TriggerExpressionContext extends ParserRuleContext {
	public triggerAtomExpression(): TriggerAtomExpressionContext {
		return this.getRuleContext(0, TriggerAtomExpressionContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_triggerExpression; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterTriggerExpression) {
			listener.enterTriggerExpression(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitTriggerExpression) {
			listener.exitTriggerExpression(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitTriggerExpression) {
			return visitor.visitTriggerExpression(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class TriggerExpressionStandaloneContext extends ParserRuleContext {
	public triggerExpression(): TriggerExpressionContext {
		return this.getRuleContext(0, TriggerExpressionContext);
	}
	public EOF(): TerminalNode { return this.getToken(HiveSqlParser.EOF, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_triggerExpressionStandalone; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterTriggerExpressionStandalone) {
			listener.enterTriggerExpressionStandalone(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitTriggerExpressionStandalone) {
			listener.exitTriggerExpressionStandalone(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitTriggerExpressionStandalone) {
			return visitor.visitTriggerExpressionStandalone(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class TriggerOrExpressionContext extends ParserRuleContext {
	public triggerAndExpression(): TriggerAndExpressionContext[];
	public triggerAndExpression(i: number): TriggerAndExpressionContext;
	public triggerAndExpression(i?: number): TriggerAndExpressionContext | TriggerAndExpressionContext[] {
		if (i === undefined) {
			return this.getRuleContexts(TriggerAndExpressionContext);
		} else {
			return this.getRuleContext(i, TriggerAndExpressionContext);
		}
	}
	public KW_OR(): TerminalNode[];
	public KW_OR(i: number): TerminalNode;
	public KW_OR(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(HiveSqlParser.KW_OR);
		} else {
			return this.getToken(HiveSqlParser.KW_OR, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_triggerOrExpression; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterTriggerOrExpression) {
			listener.enterTriggerOrExpression(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitTriggerOrExpression) {
			listener.exitTriggerOrExpression(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitTriggerOrExpression) {
			return visitor.visitTriggerOrExpression(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class TriggerAndExpressionContext extends ParserRuleContext {
	public triggerAtomExpression(): TriggerAtomExpressionContext[];
	public triggerAtomExpression(i: number): TriggerAtomExpressionContext;
	public triggerAtomExpression(i?: number): TriggerAtomExpressionContext | TriggerAtomExpressionContext[] {
		if (i === undefined) {
			return this.getRuleContexts(TriggerAtomExpressionContext);
		} else {
			return this.getRuleContext(i, TriggerAtomExpressionContext);
		}
	}
	public KW_AND(): TerminalNode[];
	public KW_AND(i: number): TerminalNode;
	public KW_AND(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(HiveSqlParser.KW_AND);
		} else {
			return this.getToken(HiveSqlParser.KW_AND, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_triggerAndExpression; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterTriggerAndExpression) {
			listener.enterTriggerAndExpression(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitTriggerAndExpression) {
			listener.exitTriggerAndExpression(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitTriggerAndExpression) {
			return visitor.visitTriggerAndExpression(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class TriggerAtomExpressionContext extends ParserRuleContext {
	public id_(): Id_Context {
		return this.getRuleContext(0, Id_Context);
	}
	public comparisionOperator(): ComparisionOperatorContext {
		return this.getRuleContext(0, ComparisionOperatorContext);
	}
	public triggerLiteral(): TriggerLiteralContext {
		return this.getRuleContext(0, TriggerLiteralContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_triggerAtomExpression; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterTriggerAtomExpression) {
			listener.enterTriggerAtomExpression(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitTriggerAtomExpression) {
			listener.exitTriggerAtomExpression(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitTriggerAtomExpression) {
			return visitor.visitTriggerAtomExpression(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class TriggerLiteralContext extends ParserRuleContext {
	public Number(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.Number, 0); }
	public StringLiteral(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.StringLiteral, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_triggerLiteral; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterTriggerLiteral) {
			listener.enterTriggerLiteral(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitTriggerLiteral) {
			listener.exitTriggerLiteral(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitTriggerLiteral) {
			return visitor.visitTriggerLiteral(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ComparisionOperatorContext extends ParserRuleContext {
	public GREATERTHAN(): TerminalNode { return this.getToken(HiveSqlParser.GREATERTHAN, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_comparisionOperator; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterComparisionOperator) {
			listener.enterComparisionOperator(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitComparisionOperator) {
			listener.exitComparisionOperator(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitComparisionOperator) {
			return visitor.visitComparisionOperator(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class TriggerActionExpressionContext extends ParserRuleContext {
	public KW_KILL(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_KILL, 0); }
	public KW_MOVE(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_MOVE, 0); }
	public KW_TO(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_TO, 0); }
	public poolPath(): PoolPathContext | undefined {
		return this.tryGetRuleContext(0, PoolPathContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_triggerActionExpression; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterTriggerActionExpression) {
			listener.enterTriggerActionExpression(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitTriggerActionExpression) {
			listener.exitTriggerActionExpression(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitTriggerActionExpression) {
			return visitor.visitTriggerActionExpression(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class TriggerActionExpressionStandaloneContext extends ParserRuleContext {
	public triggerActionExpression(): TriggerActionExpressionContext {
		return this.getRuleContext(0, TriggerActionExpressionContext);
	}
	public EOF(): TerminalNode { return this.getToken(HiveSqlParser.EOF, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_triggerActionExpressionStandalone; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterTriggerActionExpressionStandalone) {
			listener.enterTriggerActionExpressionStandalone(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitTriggerActionExpressionStandalone) {
			listener.exitTriggerActionExpressionStandalone(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitTriggerActionExpressionStandalone) {
			return visitor.visitTriggerActionExpressionStandalone(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class CreateTriggerStatementContext extends ParserRuleContext {
	public _rpName!: Id_Context;
	public _triggerName!: Id_Context;
	public KW_CREATE(): TerminalNode { return this.getToken(HiveSqlParser.KW_CREATE, 0); }
	public KW_TRIGGER(): TerminalNode { return this.getToken(HiveSqlParser.KW_TRIGGER, 0); }
	public DOT(): TerminalNode { return this.getToken(HiveSqlParser.DOT, 0); }
	public KW_WHEN(): TerminalNode { return this.getToken(HiveSqlParser.KW_WHEN, 0); }
	public triggerExpression(): TriggerExpressionContext {
		return this.getRuleContext(0, TriggerExpressionContext);
	}
	public KW_DO(): TerminalNode { return this.getToken(HiveSqlParser.KW_DO, 0); }
	public triggerActionExpression(): TriggerActionExpressionContext {
		return this.getRuleContext(0, TriggerActionExpressionContext);
	}
	public id_(): Id_Context[];
	public id_(i: number): Id_Context;
	public id_(i?: number): Id_Context | Id_Context[] {
		if (i === undefined) {
			return this.getRuleContexts(Id_Context);
		} else {
			return this.getRuleContext(i, Id_Context);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_createTriggerStatement; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterCreateTriggerStatement) {
			listener.enterCreateTriggerStatement(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitCreateTriggerStatement) {
			listener.exitCreateTriggerStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitCreateTriggerStatement) {
			return visitor.visitCreateTriggerStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class AlterTriggerStatementContext extends ParserRuleContext {
	public _rpName!: Id_Context;
	public _triggerName!: Id_Context;
	public _poolName!: PoolPathContext;
	public KW_ALTER(): TerminalNode { return this.getToken(HiveSqlParser.KW_ALTER, 0); }
	public KW_TRIGGER(): TerminalNode { return this.getToken(HiveSqlParser.KW_TRIGGER, 0); }
	public DOT(): TerminalNode { return this.getToken(HiveSqlParser.DOT, 0); }
	public id_(): Id_Context[];
	public id_(i: number): Id_Context;
	public id_(i?: number): Id_Context | Id_Context[] {
		if (i === undefined) {
			return this.getRuleContexts(Id_Context);
		} else {
			return this.getRuleContext(i, Id_Context);
		}
	}
	public KW_WHEN(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_WHEN, 0); }
	public triggerExpression(): TriggerExpressionContext | undefined {
		return this.tryGetRuleContext(0, TriggerExpressionContext);
	}
	public KW_DO(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_DO, 0); }
	public triggerActionExpression(): TriggerActionExpressionContext | undefined {
		return this.tryGetRuleContext(0, TriggerActionExpressionContext);
	}
	public KW_ADD(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_ADD, 0); }
	public KW_TO(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_TO, 0); }
	public KW_DROP(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_DROP, 0); }
	public KW_FROM(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_FROM, 0); }
	public KW_POOL(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_POOL, 0); }
	public KW_UNMANAGED(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_UNMANAGED, 0); }
	public poolPath(): PoolPathContext | undefined {
		return this.tryGetRuleContext(0, PoolPathContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_alterTriggerStatement; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterAlterTriggerStatement) {
			listener.enterAlterTriggerStatement(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitAlterTriggerStatement) {
			listener.exitAlterTriggerStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitAlterTriggerStatement) {
			return visitor.visitAlterTriggerStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class DropTriggerStatementContext extends ParserRuleContext {
	public _rpName!: Id_Context;
	public _triggerName!: Id_Context;
	public KW_DROP(): TerminalNode { return this.getToken(HiveSqlParser.KW_DROP, 0); }
	public KW_TRIGGER(): TerminalNode { return this.getToken(HiveSqlParser.KW_TRIGGER, 0); }
	public DOT(): TerminalNode { return this.getToken(HiveSqlParser.DOT, 0); }
	public id_(): Id_Context[];
	public id_(i: number): Id_Context;
	public id_(i?: number): Id_Context | Id_Context[] {
		if (i === undefined) {
			return this.getRuleContexts(Id_Context);
		} else {
			return this.getRuleContext(i, Id_Context);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_dropTriggerStatement; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterDropTriggerStatement) {
			listener.enterDropTriggerStatement(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitDropTriggerStatement) {
			listener.exitDropTriggerStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitDropTriggerStatement) {
			return visitor.visitDropTriggerStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class PoolAssignContext extends ParserRuleContext {
	public _allocFraction!: Token;
	public _parallelism!: Token;
	public _policy!: Token;
	public _path!: PoolPathContext;
	public KW_ALLOC_FRACTION(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_ALLOC_FRACTION, 0); }
	public EQUAL(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.EQUAL, 0); }
	public KW_QUERY_PARALLELISM(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_QUERY_PARALLELISM, 0); }
	public KW_SCHEDULING_POLICY(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_SCHEDULING_POLICY, 0); }
	public KW_PATH(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_PATH, 0); }
	public Number(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.Number, 0); }
	public StringLiteral(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.StringLiteral, 0); }
	public poolPath(): PoolPathContext | undefined {
		return this.tryGetRuleContext(0, PoolPathContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_poolAssign; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterPoolAssign) {
			listener.enterPoolAssign(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitPoolAssign) {
			listener.exitPoolAssign(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitPoolAssign) {
			return visitor.visitPoolAssign(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class PoolAssignListContext extends ParserRuleContext {
	public poolAssign(): PoolAssignContext[];
	public poolAssign(i: number): PoolAssignContext;
	public poolAssign(i?: number): PoolAssignContext | PoolAssignContext[] {
		if (i === undefined) {
			return this.getRuleContexts(PoolAssignContext);
		} else {
			return this.getRuleContext(i, PoolAssignContext);
		}
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(HiveSqlParser.COMMA);
		} else {
			return this.getToken(HiveSqlParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_poolAssignList; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterPoolAssignList) {
			listener.enterPoolAssignList(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitPoolAssignList) {
			listener.exitPoolAssignList(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitPoolAssignList) {
			return visitor.visitPoolAssignList(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class CreatePoolStatementContext extends ParserRuleContext {
	public _rpName!: Id_Context;
	public KW_CREATE(): TerminalNode { return this.getToken(HiveSqlParser.KW_CREATE, 0); }
	public KW_POOL(): TerminalNode { return this.getToken(HiveSqlParser.KW_POOL, 0); }
	public DOT(): TerminalNode { return this.getToken(HiveSqlParser.DOT, 0); }
	public poolPath(): PoolPathContext {
		return this.getRuleContext(0, PoolPathContext);
	}
	public KW_WITH(): TerminalNode { return this.getToken(HiveSqlParser.KW_WITH, 0); }
	public poolAssignList(): PoolAssignListContext {
		return this.getRuleContext(0, PoolAssignListContext);
	}
	public id_(): Id_Context {
		return this.getRuleContext(0, Id_Context);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_createPoolStatement; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterCreatePoolStatement) {
			listener.enterCreatePoolStatement(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitCreatePoolStatement) {
			listener.exitCreatePoolStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitCreatePoolStatement) {
			return visitor.visitCreatePoolStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class AlterPoolStatementContext extends ParserRuleContext {
	public _rpName!: Id_Context;
	public _triggerName!: Id_Context;
	public KW_ALTER(): TerminalNode { return this.getToken(HiveSqlParser.KW_ALTER, 0); }
	public KW_POOL(): TerminalNode { return this.getToken(HiveSqlParser.KW_POOL, 0); }
	public DOT(): TerminalNode { return this.getToken(HiveSqlParser.DOT, 0); }
	public poolPath(): PoolPathContext {
		return this.getRuleContext(0, PoolPathContext);
	}
	public id_(): Id_Context[];
	public id_(i: number): Id_Context;
	public id_(i?: number): Id_Context | Id_Context[] {
		if (i === undefined) {
			return this.getRuleContexts(Id_Context);
		} else {
			return this.getRuleContext(i, Id_Context);
		}
	}
	public KW_SET(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_SET, 0); }
	public poolAssignList(): PoolAssignListContext | undefined {
		return this.tryGetRuleContext(0, PoolAssignListContext);
	}
	public KW_UNSET(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_UNSET, 0); }
	public KW_SCHEDULING_POLICY(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_SCHEDULING_POLICY, 0); }
	public KW_TRIGGER(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_TRIGGER, 0); }
	public KW_ADD(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_ADD, 0); }
	public KW_DROP(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_DROP, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_alterPoolStatement; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterAlterPoolStatement) {
			listener.enterAlterPoolStatement(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitAlterPoolStatement) {
			listener.exitAlterPoolStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitAlterPoolStatement) {
			return visitor.visitAlterPoolStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class DropPoolStatementContext extends ParserRuleContext {
	public _rpName!: Id_Context;
	public KW_DROP(): TerminalNode { return this.getToken(HiveSqlParser.KW_DROP, 0); }
	public KW_POOL(): TerminalNode { return this.getToken(HiveSqlParser.KW_POOL, 0); }
	public DOT(): TerminalNode { return this.getToken(HiveSqlParser.DOT, 0); }
	public poolPath(): PoolPathContext {
		return this.getRuleContext(0, PoolPathContext);
	}
	public id_(): Id_Context {
		return this.getRuleContext(0, Id_Context);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_dropPoolStatement; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterDropPoolStatement) {
			listener.enterDropPoolStatement(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitDropPoolStatement) {
			listener.exitDropPoolStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitDropPoolStatement) {
			return visitor.visitDropPoolStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class CreateMappingStatementContext extends ParserRuleContext {
	public _mappingType!: Token;
	public _name!: Token;
	public _rpName!: Id_Context;
	public _path!: PoolPathContext;
	public _order!: Token;
	public KW_CREATE(): TerminalNode { return this.getToken(HiveSqlParser.KW_CREATE, 0); }
	public KW_MAPPING(): TerminalNode { return this.getToken(HiveSqlParser.KW_MAPPING, 0); }
	public KW_IN(): TerminalNode { return this.getToken(HiveSqlParser.KW_IN, 0); }
	public StringLiteral(): TerminalNode { return this.getToken(HiveSqlParser.StringLiteral, 0); }
	public id_(): Id_Context {
		return this.getRuleContext(0, Id_Context);
	}
	public KW_USER(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_USER, 0); }
	public KW_GROUP(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_GROUP, 0); }
	public KW_APPLICATION(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_APPLICATION, 0); }
	public KW_TO(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_TO, 0); }
	public unmanaged(): UnmanagedContext | undefined {
		return this.tryGetRuleContext(0, UnmanagedContext);
	}
	public poolPath(): PoolPathContext | undefined {
		return this.tryGetRuleContext(0, PoolPathContext);
	}
	public KW_WITH(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_WITH, 0); }
	public KW_ORDER(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_ORDER, 0); }
	public Number(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.Number, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_createMappingStatement; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterCreateMappingStatement) {
			listener.enterCreateMappingStatement(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitCreateMappingStatement) {
			listener.exitCreateMappingStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitCreateMappingStatement) {
			return visitor.visitCreateMappingStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class AlterMappingStatementContext extends ParserRuleContext {
	public _mappingType!: Token;
	public _name!: Token;
	public _rpName!: Id_Context;
	public _path!: PoolPathContext;
	public _order!: Token;
	public KW_ALTER(): TerminalNode { return this.getToken(HiveSqlParser.KW_ALTER, 0); }
	public KW_MAPPING(): TerminalNode { return this.getToken(HiveSqlParser.KW_MAPPING, 0); }
	public KW_IN(): TerminalNode { return this.getToken(HiveSqlParser.KW_IN, 0); }
	public StringLiteral(): TerminalNode { return this.getToken(HiveSqlParser.StringLiteral, 0); }
	public id_(): Id_Context {
		return this.getRuleContext(0, Id_Context);
	}
	public KW_USER(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_USER, 0); }
	public KW_GROUP(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_GROUP, 0); }
	public KW_APPLICATION(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_APPLICATION, 0); }
	public KW_TO(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_TO, 0); }
	public unmanaged(): UnmanagedContext | undefined {
		return this.tryGetRuleContext(0, UnmanagedContext);
	}
	public poolPath(): PoolPathContext | undefined {
		return this.tryGetRuleContext(0, PoolPathContext);
	}
	public KW_WITH(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_WITH, 0); }
	public KW_ORDER(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_ORDER, 0); }
	public Number(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.Number, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_alterMappingStatement; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterAlterMappingStatement) {
			listener.enterAlterMappingStatement(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitAlterMappingStatement) {
			listener.exitAlterMappingStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitAlterMappingStatement) {
			return visitor.visitAlterMappingStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class DropMappingStatementContext extends ParserRuleContext {
	public _mappingType!: Token;
	public _name!: Token;
	public _rpName!: Id_Context;
	public KW_DROP(): TerminalNode { return this.getToken(HiveSqlParser.KW_DROP, 0); }
	public KW_MAPPING(): TerminalNode { return this.getToken(HiveSqlParser.KW_MAPPING, 0); }
	public KW_IN(): TerminalNode { return this.getToken(HiveSqlParser.KW_IN, 0); }
	public StringLiteral(): TerminalNode { return this.getToken(HiveSqlParser.StringLiteral, 0); }
	public id_(): Id_Context {
		return this.getRuleContext(0, Id_Context);
	}
	public KW_USER(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_USER, 0); }
	public KW_GROUP(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_GROUP, 0); }
	public KW_APPLICATION(): TerminalNode | undefined { return this.tryGetToken(HiveSqlParser.KW_APPLICATION, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return HiveSqlParser.RULE_dropMappingStatement; }
	// @Override
	public enterRule(listener: HiveSqlParserListener): void {
		if (listener.enterDropMappingStatement) {
			listener.enterDropMappingStatement(this);
		}
	}
	// @Override
	public exitRule(listener: HiveSqlParserListener): void {
		if (listener.exitDropMappingStatement) {
			listener.exitDropMappingStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: HiveSqlParserVisitor<Result>): Result {
		if (visitor.visitDropMappingStatement) {
			return visitor.visitDropMappingStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


