// dt-sql-parser/src/grammar/generic/SqlParser.g4 by ANTLR 4.12.0
// noinspection ES6UnusedImports,JSUnusedGlobalSymbols,JSUnusedLocalSymbols

import {
	ATN,
	ATNDeserializer, DecisionState, DFA, FailedPredicateException,
	RecognitionException, NoViableAltException,
	Parser, ParserATNSimulator,
	RuleContext, ParserRuleContext, PredictionContextCache,
	TerminalNode,
	Token, TokenStream,
} from 'antlr4';
import SqlParserListener from "./SqlParserListener.js";
import SqlParserVisitor from "./SqlParserVisitor.js";

export default class SqlParser extends Parser {
	public static readonly SPACE = 1;
	public static readonly SPEC_MYSQL_COMMENT = 2;
	public static readonly COMMENT_INPUT = 3;
	public static readonly LINE_COMMENT = 4;
	public static readonly ADD = 5;
	public static readonly ALL = 6;
	public static readonly ALTER = 7;
	public static readonly ALWAYS = 8;
	public static readonly ANALYZE = 9;
	public static readonly AND = 10;
	public static readonly AS = 11;
	public static readonly ASC = 12;
	public static readonly BEFORE = 13;
	public static readonly BETWEEN = 14;
	public static readonly BOTH = 15;
	public static readonly BY = 16;
	public static readonly CALL = 17;
	public static readonly CASCADE = 18;
	public static readonly CASE = 19;
	public static readonly CAST = 20;
	public static readonly CHANGE = 21;
	public static readonly CHARACTER = 22;
	public static readonly CHECK = 23;
	public static readonly COLLATE = 24;
	public static readonly COLUMN = 25;
	public static readonly CONDITION = 26;
	public static readonly CONSTRAINT = 27;
	public static readonly CONTINUE = 28;
	public static readonly CONVERT = 29;
	public static readonly CREATE = 30;
	public static readonly CROSS = 31;
	public static readonly CURRENT = 32;
	public static readonly CURRENT_USER = 33;
	public static readonly CURSOR = 34;
	public static readonly DATABASE = 35;
	public static readonly DATABASES = 36;
	public static readonly DECLARE = 37;
	public static readonly DEFAULT = 38;
	public static readonly DELAYED = 39;
	public static readonly DELETE = 40;
	public static readonly DESC = 41;
	public static readonly DESCRIBE = 42;
	public static readonly DETERMINISTIC = 43;
	public static readonly DIAGNOSTICS = 44;
	public static readonly DISTINCT = 45;
	public static readonly DISTINCTROW = 46;
	public static readonly DROP = 47;
	public static readonly EACH = 48;
	public static readonly ELSE = 49;
	public static readonly ELSEIF = 50;
	public static readonly ENCLOSED = 51;
	public static readonly ESCAPED = 52;
	public static readonly EXISTS = 53;
	public static readonly EXIT = 54;
	public static readonly EXPLAIN = 55;
	public static readonly FALSE = 56;
	public static readonly FETCH = 57;
	public static readonly FOR = 58;
	public static readonly FORCE = 59;
	public static readonly FOREIGN = 60;
	public static readonly FROM = 61;
	public static readonly FULLTEXT = 62;
	public static readonly GENERATED = 63;
	public static readonly GET = 64;
	public static readonly GRANT = 65;
	public static readonly GROUP = 66;
	public static readonly HAVING = 67;
	public static readonly HIGH_PRIORITY = 68;
	public static readonly IF = 69;
	public static readonly IGNORE = 70;
	public static readonly IN = 71;
	public static readonly INDEX = 72;
	public static readonly INFILE = 73;
	public static readonly INNER = 74;
	public static readonly INOUT = 75;
	public static readonly INSERT = 76;
	public static readonly INTERVAL = 77;
	public static readonly INTO = 78;
	public static readonly IS = 79;
	public static readonly ITERATE = 80;
	public static readonly JOIN = 81;
	public static readonly KEY = 82;
	public static readonly KEYS = 83;
	public static readonly KILL = 84;
	public static readonly LEADING = 85;
	public static readonly LEAVE = 86;
	public static readonly LEFT = 87;
	public static readonly LIKE = 88;
	public static readonly LIMIT = 89;
	public static readonly LINEAR = 90;
	public static readonly LINES = 91;
	public static readonly LOAD = 92;
	public static readonly LOCK = 93;
	public static readonly LOOP = 94;
	public static readonly LOW_PRIORITY = 95;
	public static readonly MASTER_BIND = 96;
	public static readonly MASTER_SSL_VERIFY_SERVER_CERT = 97;
	public static readonly MATCH = 98;
	public static readonly MAXVALUE = 99;
	public static readonly MODIFIES = 100;
	public static readonly NATURAL = 101;
	public static readonly NOT = 102;
	public static readonly NO_WRITE_TO_BINLOG = 103;
	public static readonly NULL_LITERAL = 104;
	public static readonly NUMBER = 105;
	public static readonly ON = 106;
	public static readonly OPTIMIZE = 107;
	public static readonly OPTION = 108;
	public static readonly OPTIONALLY = 109;
	public static readonly OR = 110;
	public static readonly ORDER = 111;
	public static readonly OUT = 112;
	public static readonly OUTER = 113;
	public static readonly OUTFILE = 114;
	public static readonly PARTITION = 115;
	public static readonly PRIMARY = 116;
	public static readonly PROCEDURE = 117;
	public static readonly PURGE = 118;
	public static readonly RANGE = 119;
	public static readonly READ = 120;
	public static readonly READS = 121;
	public static readonly REFERENCES = 122;
	public static readonly REGEXP = 123;
	public static readonly RELEASE = 124;
	public static readonly RENAME = 125;
	public static readonly REPEAT = 126;
	public static readonly REPLACE = 127;
	public static readonly REQUIRE = 128;
	public static readonly RESIGNAL = 129;
	public static readonly RESTRICT = 130;
	public static readonly RETURN = 131;
	public static readonly REVOKE = 132;
	public static readonly RIGHT = 133;
	public static readonly RLIKE = 134;
	public static readonly SCHEMA = 135;
	public static readonly SCHEMAS = 136;
	public static readonly SELECT = 137;
	public static readonly SET = 138;
	public static readonly SEPARATOR = 139;
	public static readonly SHOW = 140;
	public static readonly SIGNAL = 141;
	public static readonly SPATIAL = 142;
	public static readonly SQL = 143;
	public static readonly SQLEXCEPTION = 144;
	public static readonly SQLSTATE = 145;
	public static readonly SQLWARNING = 146;
	public static readonly SQL_BIG_RESULT = 147;
	public static readonly SQL_CALC_FOUND_ROWS = 148;
	public static readonly SQL_SMALL_RESULT = 149;
	public static readonly SSL = 150;
	public static readonly STACKED = 151;
	public static readonly STARTING = 152;
	public static readonly STRAIGHT_JOIN = 153;
	public static readonly TABLE = 154;
	public static readonly TERMINATED = 155;
	public static readonly THEN = 156;
	public static readonly TO = 157;
	public static readonly TRAILING = 158;
	public static readonly TRIGGER = 159;
	public static readonly TRUE = 160;
	public static readonly UNDO = 161;
	public static readonly UNION = 162;
	public static readonly UNIQUE = 163;
	public static readonly UNLOCK = 164;
	public static readonly UNSIGNED = 165;
	public static readonly UPDATE = 166;
	public static readonly USAGE = 167;
	public static readonly USE = 168;
	public static readonly USING = 169;
	public static readonly VALUES = 170;
	public static readonly WHEN = 171;
	public static readonly WHERE = 172;
	public static readonly WHILE = 173;
	public static readonly WITH = 174;
	public static readonly WRITE = 175;
	public static readonly XOR = 176;
	public static readonly ZEROFILL = 177;
	public static readonly TINYINT = 178;
	public static readonly SMALLINT = 179;
	public static readonly MEDIUMINT = 180;
	public static readonly MIDDLEINT = 181;
	public static readonly INT = 182;
	public static readonly INT1 = 183;
	public static readonly INT2 = 184;
	public static readonly INT3 = 185;
	public static readonly INT4 = 186;
	public static readonly INT8 = 187;
	public static readonly INTEGER = 188;
	public static readonly BIGINT = 189;
	public static readonly REAL = 190;
	public static readonly DOUBLE = 191;
	public static readonly PRECISION = 192;
	public static readonly FLOAT = 193;
	public static readonly FLOAT4 = 194;
	public static readonly FLOAT8 = 195;
	public static readonly DECIMAL = 196;
	public static readonly DEC = 197;
	public static readonly NUMERIC = 198;
	public static readonly DATE = 199;
	public static readonly TIME = 200;
	public static readonly TIMESTAMP = 201;
	public static readonly DATETIME = 202;
	public static readonly YEAR = 203;
	public static readonly CHAR = 204;
	public static readonly VARCHAR = 205;
	public static readonly NVARCHAR = 206;
	public static readonly NATIONAL = 207;
	public static readonly BINARY = 208;
	public static readonly VARBINARY = 209;
	public static readonly TINYBLOB = 210;
	public static readonly BLOB = 211;
	public static readonly MEDIUMBLOB = 212;
	public static readonly LONG = 213;
	public static readonly LONGBLOB = 214;
	public static readonly TINYTEXT = 215;
	public static readonly TEXT = 216;
	public static readonly MEDIUMTEXT = 217;
	public static readonly LONGTEXT = 218;
	public static readonly ENUM = 219;
	public static readonly VARYING = 220;
	public static readonly SERIAL = 221;
	public static readonly YEAR_MONTH = 222;
	public static readonly DAY_HOUR = 223;
	public static readonly DAY_MINUTE = 224;
	public static readonly DAY_SECOND = 225;
	public static readonly HOUR_MINUTE = 226;
	public static readonly HOUR_SECOND = 227;
	public static readonly MINUTE_SECOND = 228;
	public static readonly SECOND_MICROSECOND = 229;
	public static readonly MINUTE_MICROSECOND = 230;
	public static readonly HOUR_MICROSECOND = 231;
	public static readonly DAY_MICROSECOND = 232;
	public static readonly JSON_VALID = 233;
	public static readonly JSON_SCHEMA_VALID = 234;
	public static readonly AVG = 235;
	public static readonly BIT_AND = 236;
	public static readonly BIT_OR = 237;
	public static readonly BIT_XOR = 238;
	public static readonly COUNT = 239;
	public static readonly GROUP_CONCAT = 240;
	public static readonly MAX = 241;
	public static readonly MIN = 242;
	public static readonly STD = 243;
	public static readonly STDDEV = 244;
	public static readonly STDDEV_POP = 245;
	public static readonly STDDEV_SAMP = 246;
	public static readonly SUM = 247;
	public static readonly VAR_POP = 248;
	public static readonly VAR_SAMP = 249;
	public static readonly VARIANCE = 250;
	public static readonly CURRENT_DATE = 251;
	public static readonly CURRENT_TIME = 252;
	public static readonly CURRENT_TIMESTAMP = 253;
	public static readonly LOCALTIME = 254;
	public static readonly CURDATE = 255;
	public static readonly CURTIME = 256;
	public static readonly DATE_ADD = 257;
	public static readonly DATE_SUB = 258;
	public static readonly EXTRACT = 259;
	public static readonly LOCALTIMESTAMP = 260;
	public static readonly NOW = 261;
	public static readonly POSITION = 262;
	public static readonly SUBSTR = 263;
	public static readonly SUBSTRING = 264;
	public static readonly SYSDATE = 265;
	public static readonly TRIM = 266;
	public static readonly UTC_DATE = 267;
	public static readonly UTC_TIME = 268;
	public static readonly UTC_TIMESTAMP = 269;
	public static readonly ACCOUNT = 270;
	public static readonly ACTION = 271;
	public static readonly AFTER = 272;
	public static readonly AGGREGATE = 273;
	public static readonly ALGORITHM = 274;
	public static readonly ANY = 275;
	public static readonly AT = 276;
	public static readonly AUTHORS = 277;
	public static readonly AUTOCOMMIT = 278;
	public static readonly AUTOEXTEND_SIZE = 279;
	public static readonly AUTO_INCREMENT = 280;
	public static readonly AVG_ROW_LENGTH = 281;
	public static readonly BEGIN = 282;
	public static readonly BINLOG = 283;
	public static readonly BIT = 284;
	public static readonly BLOCK = 285;
	public static readonly BOOL = 286;
	public static readonly BOOLEAN = 287;
	public static readonly BTREE = 288;
	public static readonly CACHE = 289;
	public static readonly CASCADED = 290;
	public static readonly CHAIN = 291;
	public static readonly CHANGED = 292;
	public static readonly CHANNEL = 293;
	public static readonly CHECKSUM = 294;
	public static readonly PAGE_CHECKSUM = 295;
	public static readonly CIPHER = 296;
	public static readonly CLASS_ORIGIN = 297;
	public static readonly CLIENT = 298;
	public static readonly CLOSE = 299;
	public static readonly COALESCE = 300;
	public static readonly CODE = 301;
	public static readonly COLUMNS = 302;
	public static readonly COLUMN_FORMAT = 303;
	public static readonly COLUMN_NAME = 304;
	public static readonly COMMENT = 305;
	public static readonly COMMIT = 306;
	public static readonly COMPACT = 307;
	public static readonly COMPLETION = 308;
	public static readonly COMPRESSED = 309;
	public static readonly COMPRESSION = 310;
	public static readonly CONCURRENT = 311;
	public static readonly CONNECTION = 312;
	public static readonly CONSISTENT = 313;
	public static readonly CONSTRAINT_CATALOG = 314;
	public static readonly CONSTRAINT_SCHEMA = 315;
	public static readonly CONSTRAINT_NAME = 316;
	public static readonly CONTAINS = 317;
	public static readonly CONTEXT = 318;
	public static readonly CONTRIBUTORS = 319;
	public static readonly COPY = 320;
	public static readonly CPU = 321;
	public static readonly CURSOR_NAME = 322;
	public static readonly DATA = 323;
	public static readonly DATAFILE = 324;
	public static readonly DEALLOCATE = 325;
	public static readonly DEFAULT_AUTH = 326;
	public static readonly DEFINER = 327;
	public static readonly DELAY_KEY_WRITE = 328;
	public static readonly DES_KEY_FILE = 329;
	public static readonly DIRECTORY = 330;
	public static readonly DISABLE = 331;
	public static readonly DISCARD = 332;
	public static readonly DISK = 333;
	public static readonly DO = 334;
	public static readonly DUMPFILE = 335;
	public static readonly DUPLICATE = 336;
	public static readonly DYNAMIC = 337;
	public static readonly ENABLE = 338;
	public static readonly ENCRYPTION = 339;
	public static readonly END = 340;
	public static readonly ENDS = 341;
	public static readonly ENGINE = 342;
	public static readonly ENGINES = 343;
	public static readonly ERROR = 344;
	public static readonly ERRORS = 345;
	public static readonly ESCAPE = 346;
	public static readonly EVEN = 347;
	public static readonly EVENT = 348;
	public static readonly EVENTS = 349;
	public static readonly EVERY = 350;
	public static readonly EXCHANGE = 351;
	public static readonly EXCLUSIVE = 352;
	public static readonly EXPIRE = 353;
	public static readonly EXPORT = 354;
	public static readonly EXTENDED = 355;
	public static readonly EXTENT_SIZE = 356;
	public static readonly FAST = 357;
	public static readonly FAULTS = 358;
	public static readonly FIELDS = 359;
	public static readonly FILE_BLOCK_SIZE = 360;
	public static readonly FILTER = 361;
	public static readonly FIRST = 362;
	public static readonly FIXED = 363;
	public static readonly FLUSH = 364;
	public static readonly FOLLOWS = 365;
	public static readonly FOUND = 366;
	public static readonly FULL = 367;
	public static readonly FUNCTION = 368;
	public static readonly GENERAL = 369;
	public static readonly GLOBAL = 370;
	public static readonly GRANTS = 371;
	public static readonly GROUP_REPLICATION = 372;
	public static readonly HANDLER = 373;
	public static readonly HASH = 374;
	public static readonly HELP = 375;
	public static readonly HOST = 376;
	public static readonly HOSTS = 377;
	public static readonly IDENTIFIED = 378;
	public static readonly IGNORE_SERVER_IDS = 379;
	public static readonly IMPORT = 380;
	public static readonly INDEXES = 381;
	public static readonly INITIAL_SIZE = 382;
	public static readonly INPLACE = 383;
	public static readonly INSERT_METHOD = 384;
	public static readonly INSTALL = 385;
	public static readonly INSTANCE = 386;
	public static readonly INVISIBLE = 387;
	public static readonly INVOKER = 388;
	public static readonly IO = 389;
	public static readonly IO_THREAD = 390;
	public static readonly IPC = 391;
	public static readonly ISOLATION = 392;
	public static readonly ISSUER = 393;
	public static readonly JSON = 394;
	public static readonly KEY_BLOCK_SIZE = 395;
	public static readonly LANGUAGE = 396;
	public static readonly LAST = 397;
	public static readonly LEAVES = 398;
	public static readonly LESS = 399;
	public static readonly LEVEL = 400;
	public static readonly LIST = 401;
	public static readonly LOCAL = 402;
	public static readonly LOGFILE = 403;
	public static readonly LOGS = 404;
	public static readonly MASTER = 405;
	public static readonly MASTER_AUTO_POSITION = 406;
	public static readonly MASTER_CONNECT_RETRY = 407;
	public static readonly MASTER_DELAY = 408;
	public static readonly MASTER_HEARTBEAT_PERIOD = 409;
	public static readonly MASTER_HOST = 410;
	public static readonly MASTER_LOG_FILE = 411;
	public static readonly MASTER_LOG_POS = 412;
	public static readonly MASTER_PASSWORD = 413;
	public static readonly MASTER_PORT = 414;
	public static readonly MASTER_RETRY_COUNT = 415;
	public static readonly MASTER_SSL = 416;
	public static readonly MASTER_SSL_CA = 417;
	public static readonly MASTER_SSL_CAPATH = 418;
	public static readonly MASTER_SSL_CERT = 419;
	public static readonly MASTER_SSL_CIPHER = 420;
	public static readonly MASTER_SSL_CRL = 421;
	public static readonly MASTER_SSL_CRLPATH = 422;
	public static readonly MASTER_SSL_KEY = 423;
	public static readonly MASTER_TLS_VERSION = 424;
	public static readonly MASTER_USER = 425;
	public static readonly MAX_CONNECTIONS_PER_HOUR = 426;
	public static readonly MAX_QUERIES_PER_HOUR = 427;
	public static readonly MAX_ROWS = 428;
	public static readonly MAX_SIZE = 429;
	public static readonly MAX_UPDATES_PER_HOUR = 430;
	public static readonly MAX_USER_CONNECTIONS = 431;
	public static readonly MEDIUM = 432;
	public static readonly MERGE = 433;
	public static readonly MESSAGE_TEXT = 434;
	public static readonly MID = 435;
	public static readonly MIGRATE = 436;
	public static readonly MIN_ROWS = 437;
	public static readonly MODE = 438;
	public static readonly MODIFY = 439;
	public static readonly MUTEX = 440;
	public static readonly MYSQL = 441;
	public static readonly MYSQL_ERRNO = 442;
	public static readonly NAME = 443;
	public static readonly NAMES = 444;
	public static readonly NCHAR = 445;
	public static readonly NEVER = 446;
	public static readonly NEXT = 447;
	public static readonly NO = 448;
	public static readonly NODEGROUP = 449;
	public static readonly NONE = 450;
	public static readonly OFFLINE = 451;
	public static readonly OFFSET = 452;
	public static readonly OJ = 453;
	public static readonly OLD_PASSWORD = 454;
	public static readonly ONE = 455;
	public static readonly ONLINE = 456;
	public static readonly ONLY = 457;
	public static readonly OPEN = 458;
	public static readonly OPTIMIZER_COSTS = 459;
	public static readonly OPTIONS = 460;
	public static readonly OWNER = 461;
	public static readonly PACK_KEYS = 462;
	public static readonly PAGE = 463;
	public static readonly PARSER = 464;
	public static readonly PARTIAL = 465;
	public static readonly PARTITIONING = 466;
	public static readonly PARTITIONS = 467;
	public static readonly PASSWORD = 468;
	public static readonly PHASE = 469;
	public static readonly PLUGIN = 470;
	public static readonly PLUGIN_DIR = 471;
	public static readonly PLUGINS = 472;
	public static readonly PORT = 473;
	public static readonly PRECEDES = 474;
	public static readonly PREPARE = 475;
	public static readonly PRESERVE = 476;
	public static readonly PREV = 477;
	public static readonly PROCESSLIST = 478;
	public static readonly PROFILE = 479;
	public static readonly PROFILES = 480;
	public static readonly PROXY = 481;
	public static readonly QUERY = 482;
	public static readonly QUICK = 483;
	public static readonly REBUILD = 484;
	public static readonly RECOVER = 485;
	public static readonly REDO_BUFFER_SIZE = 486;
	public static readonly REDUNDANT = 487;
	public static readonly RELAY = 488;
	public static readonly RELAY_LOG_FILE = 489;
	public static readonly RELAY_LOG_POS = 490;
	public static readonly RELAYLOG = 491;
	public static readonly REMOVE = 492;
	public static readonly REORGANIZE = 493;
	public static readonly REPAIR = 494;
	public static readonly REPLICATE_DO_DB = 495;
	public static readonly REPLICATE_DO_TABLE = 496;
	public static readonly REPLICATE_IGNORE_DB = 497;
	public static readonly REPLICATE_IGNORE_TABLE = 498;
	public static readonly REPLICATE_REWRITE_DB = 499;
	public static readonly REPLICATE_WILD_DO_TABLE = 500;
	public static readonly REPLICATE_WILD_IGNORE_TABLE = 501;
	public static readonly REPLICATION = 502;
	public static readonly RESET = 503;
	public static readonly RESUME = 504;
	public static readonly RETURNED_SQLSTATE = 505;
	public static readonly RETURNS = 506;
	public static readonly ROLE = 507;
	public static readonly ROLLBACK = 508;
	public static readonly ROLLUP = 509;
	public static readonly ROTATE = 510;
	public static readonly ROW = 511;
	public static readonly ROWS = 512;
	public static readonly ROW_FORMAT = 513;
	public static readonly SAVEPOINT = 514;
	public static readonly SCHEDULE = 515;
	public static readonly SECURITY = 516;
	public static readonly SERVER = 517;
	public static readonly SESSION = 518;
	public static readonly SHARE = 519;
	public static readonly SHARED = 520;
	public static readonly SIGNED = 521;
	public static readonly SIMPLE = 522;
	public static readonly SLAVE = 523;
	public static readonly SLOW = 524;
	public static readonly SNAPSHOT = 525;
	public static readonly SOCKET = 526;
	public static readonly SOME = 527;
	public static readonly SONAME = 528;
	public static readonly SOUNDS = 529;
	public static readonly SOURCE = 530;
	public static readonly SQL_AFTER_GTIDS = 531;
	public static readonly SQL_AFTER_MTS_GAPS = 532;
	public static readonly SQL_BEFORE_GTIDS = 533;
	public static readonly SQL_BUFFER_RESULT = 534;
	public static readonly SQL_CACHE = 535;
	public static readonly SQL_NO_CACHE = 536;
	public static readonly SQL_THREAD = 537;
	public static readonly START = 538;
	public static readonly STARTS = 539;
	public static readonly STATS_AUTO_RECALC = 540;
	public static readonly STATS_PERSISTENT = 541;
	public static readonly STATS_SAMPLE_PAGES = 542;
	public static readonly STATUS = 543;
	public static readonly STOP = 544;
	public static readonly STORAGE = 545;
	public static readonly STORED = 546;
	public static readonly STRING = 547;
	public static readonly SUBCLASS_ORIGIN = 548;
	public static readonly SUBJECT = 549;
	public static readonly SUBPARTITION = 550;
	public static readonly SUBPARTITIONS = 551;
	public static readonly SUSPEND = 552;
	public static readonly SWAPS = 553;
	public static readonly SWITCHES = 554;
	public static readonly TABLE_NAME = 555;
	public static readonly TABLESPACE = 556;
	public static readonly TEMPORARY = 557;
	public static readonly TEMPTABLE = 558;
	public static readonly THAN = 559;
	public static readonly TRADITIONAL = 560;
	public static readonly TRANSACTION = 561;
	public static readonly TRANSACTIONAL = 562;
	public static readonly TRIGGERS = 563;
	public static readonly TRUNCATE = 564;
	public static readonly UNDEFINED = 565;
	public static readonly UNDOFILE = 566;
	public static readonly UNDO_BUFFER_SIZE = 567;
	public static readonly UNINSTALL = 568;
	public static readonly UNKNOWN = 569;
	public static readonly UNTIL = 570;
	public static readonly UPGRADE = 571;
	public static readonly USER = 572;
	public static readonly USE_FRM = 573;
	public static readonly USER_RESOURCES = 574;
	public static readonly VALIDATION = 575;
	public static readonly VALUE = 576;
	public static readonly VARIABLES = 577;
	public static readonly VIEW = 578;
	public static readonly VIRTUAL = 579;
	public static readonly VISIBLE = 580;
	public static readonly WAIT = 581;
	public static readonly WARNINGS = 582;
	public static readonly WITHOUT = 583;
	public static readonly WORK = 584;
	public static readonly WRAPPER = 585;
	public static readonly X509 = 586;
	public static readonly XA = 587;
	public static readonly XML = 588;
	public static readonly EUR = 589;
	public static readonly USA = 590;
	public static readonly JIS = 591;
	public static readonly ISO = 592;
	public static readonly INTERNAL = 593;
	public static readonly QUARTER = 594;
	public static readonly MONTH = 595;
	public static readonly DAY = 596;
	public static readonly HOUR = 597;
	public static readonly MINUTE = 598;
	public static readonly WEEK = 599;
	public static readonly SECOND = 600;
	public static readonly MICROSECOND = 601;
	public static readonly TABLES = 602;
	public static readonly ROUTINE = 603;
	public static readonly EXECUTE = 604;
	public static readonly FILE = 605;
	public static readonly PROCESS = 606;
	public static readonly RELOAD = 607;
	public static readonly SHUTDOWN = 608;
	public static readonly SUPER = 609;
	public static readonly PRIVILEGES = 610;
	public static readonly APPLICATION_PASSWORD_ADMIN = 611;
	public static readonly AUDIT_ADMIN = 612;
	public static readonly BACKUP_ADMIN = 613;
	public static readonly BINLOG_ADMIN = 614;
	public static readonly BINLOG_ENCRYPTION_ADMIN = 615;
	public static readonly CLONE_ADMIN = 616;
	public static readonly CONNECTION_ADMIN = 617;
	public static readonly ENCRYPTION_KEY_ADMIN = 618;
	public static readonly FIREWALL_ADMIN = 619;
	public static readonly FIREWALL_USER = 620;
	public static readonly GROUP_REPLICATION_ADMIN = 621;
	public static readonly INNODB_REDO_LOG_ARCHIVE = 622;
	public static readonly NDB_STORED_USER = 623;
	public static readonly PERSIST_RO_VARIABLES_ADMIN = 624;
	public static readonly REPLICATION_APPLIER = 625;
	public static readonly REPLICATION_SLAVE_ADMIN = 626;
	public static readonly RESOURCE_GROUP_ADMIN = 627;
	public static readonly RESOURCE_GROUP_USER = 628;
	public static readonly ROLE_ADMIN = 629;
	public static readonly SESSION_VARIABLES_ADMIN = 630;
	public static readonly SET_USER_ID = 631;
	public static readonly SHOW_ROUTINE = 632;
	public static readonly SYSTEM_VARIABLES_ADMIN = 633;
	public static readonly TABLE_ENCRYPTION_ADMIN = 634;
	public static readonly VERSION_TOKEN_ADMIN = 635;
	public static readonly XA_RECOVER_ADMIN = 636;
	public static readonly ARMSCII8 = 637;
	public static readonly ASCII = 638;
	public static readonly BIG5 = 639;
	public static readonly CP1250 = 640;
	public static readonly CP1251 = 641;
	public static readonly CP1256 = 642;
	public static readonly CP1257 = 643;
	public static readonly CP850 = 644;
	public static readonly CP852 = 645;
	public static readonly CP866 = 646;
	public static readonly CP932 = 647;
	public static readonly DEC8 = 648;
	public static readonly EUCJPMS = 649;
	public static readonly EUCKR = 650;
	public static readonly GB2312 = 651;
	public static readonly GBK = 652;
	public static readonly GEOSTD8 = 653;
	public static readonly GREEK = 654;
	public static readonly HEBREW = 655;
	public static readonly HP8 = 656;
	public static readonly KEYBCS2 = 657;
	public static readonly KOI8R = 658;
	public static readonly KOI8U = 659;
	public static readonly LATIN1 = 660;
	public static readonly LATIN2 = 661;
	public static readonly LATIN5 = 662;
	public static readonly LATIN7 = 663;
	public static readonly MACCE = 664;
	public static readonly MACROMAN = 665;
	public static readonly SJIS = 666;
	public static readonly SWE7 = 667;
	public static readonly TIS620 = 668;
	public static readonly UCS2 = 669;
	public static readonly UJIS = 670;
	public static readonly UTF16 = 671;
	public static readonly UTF16LE = 672;
	public static readonly UTF32 = 673;
	public static readonly UTF8 = 674;
	public static readonly UTF8MB3 = 675;
	public static readonly UTF8MB4 = 676;
	public static readonly ARCHIVE = 677;
	public static readonly BLACKHOLE = 678;
	public static readonly CSV = 679;
	public static readonly FEDERATED = 680;
	public static readonly INNODB = 681;
	public static readonly MEMORY = 682;
	public static readonly MRG_MYISAM = 683;
	public static readonly MYISAM = 684;
	public static readonly NDB = 685;
	public static readonly NDBCLUSTER = 686;
	public static readonly PERFORMANCE_SCHEMA = 687;
	public static readonly TOKUDB = 688;
	public static readonly REPEATABLE = 689;
	public static readonly COMMITTED = 690;
	public static readonly UNCOMMITTED = 691;
	public static readonly SERIALIZABLE = 692;
	public static readonly GEOMETRYCOLLECTION = 693;
	public static readonly GEOMCOLLECTION = 694;
	public static readonly GEOMETRY = 695;
	public static readonly LINESTRING = 696;
	public static readonly MULTILINESTRING = 697;
	public static readonly MULTIPOINT = 698;
	public static readonly MULTIPOLYGON = 699;
	public static readonly POINT = 700;
	public static readonly POLYGON = 701;
	public static readonly ABS = 702;
	public static readonly ACOS = 703;
	public static readonly ADDDATE = 704;
	public static readonly ADDTIME = 705;
	public static readonly AES_DECRYPT = 706;
	public static readonly AES_ENCRYPT = 707;
	public static readonly AREA = 708;
	public static readonly ASBINARY = 709;
	public static readonly ASIN = 710;
	public static readonly ASTEXT = 711;
	public static readonly ASWKB = 712;
	public static readonly ASWKT = 713;
	public static readonly ASYMMETRIC_DECRYPT = 714;
	public static readonly ASYMMETRIC_DERIVE = 715;
	public static readonly ASYMMETRIC_ENCRYPT = 716;
	public static readonly ASYMMETRIC_SIGN = 717;
	public static readonly ASYMMETRIC_VERIFY = 718;
	public static readonly ATAN = 719;
	public static readonly ATAN2 = 720;
	public static readonly BENCHMARK = 721;
	public static readonly BIN = 722;
	public static readonly BIT_COUNT = 723;
	public static readonly BIT_LENGTH = 724;
	public static readonly BUFFER = 725;
	public static readonly CATALOG_NAME = 726;
	public static readonly CEIL = 727;
	public static readonly CEILING = 728;
	public static readonly CENTROID = 729;
	public static readonly CHARACTER_LENGTH = 730;
	public static readonly CHARSET = 731;
	public static readonly CHAR_LENGTH = 732;
	public static readonly COERCIBILITY = 733;
	public static readonly COLLATION = 734;
	public static readonly COMPRESS = 735;
	public static readonly CONCAT = 736;
	public static readonly CONCAT_WS = 737;
	public static readonly CONNECTION_ID = 738;
	public static readonly CONV = 739;
	public static readonly CONVERT_TZ = 740;
	public static readonly COS = 741;
	public static readonly COT = 742;
	public static readonly CRC32 = 743;
	public static readonly CREATE_ASYMMETRIC_PRIV_KEY = 744;
	public static readonly CREATE_ASYMMETRIC_PUB_KEY = 745;
	public static readonly CREATE_DH_PARAMETERS = 746;
	public static readonly CREATE_DIGEST = 747;
	public static readonly CROSSES = 748;
	public static readonly DATEDIFF = 749;
	public static readonly DATE_FORMAT = 750;
	public static readonly DAYNAME = 751;
	public static readonly DAYOFMONTH = 752;
	public static readonly DAYOFWEEK = 753;
	public static readonly DAYOFYEAR = 754;
	public static readonly DECODE = 755;
	public static readonly DEGREES = 756;
	public static readonly DES_DECRYPT = 757;
	public static readonly DES_ENCRYPT = 758;
	public static readonly DIMENSION = 759;
	public static readonly DISJOINT = 760;
	public static readonly ELT = 761;
	public static readonly ENCODE = 762;
	public static readonly ENCRYPT = 763;
	public static readonly ENDPOINT = 764;
	public static readonly ENVELOPE = 765;
	public static readonly EQUALS = 766;
	public static readonly EXP = 767;
	public static readonly EXPORT_SET = 768;
	public static readonly EXTERIORRING = 769;
	public static readonly EXTRACTVALUE = 770;
	public static readonly FIELD = 771;
	public static readonly FIND_IN_SET = 772;
	public static readonly FLOOR = 773;
	public static readonly FORMAT = 774;
	public static readonly FOUND_ROWS = 775;
	public static readonly FROM_BASE64 = 776;
	public static readonly FROM_DAYS = 777;
	public static readonly FROM_UNIXTIME = 778;
	public static readonly GEOMCOLLFROMTEXT = 779;
	public static readonly GEOMCOLLFROMWKB = 780;
	public static readonly GEOMETRYCOLLECTIONFROMTEXT = 781;
	public static readonly GEOMETRYCOLLECTIONFROMWKB = 782;
	public static readonly GEOMETRYFROMTEXT = 783;
	public static readonly GEOMETRYFROMWKB = 784;
	public static readonly GEOMETRYN = 785;
	public static readonly GEOMETRYTYPE = 786;
	public static readonly GEOMFROMTEXT = 787;
	public static readonly GEOMFROMWKB = 788;
	public static readonly GET_FORMAT = 789;
	public static readonly GET_LOCK = 790;
	public static readonly GLENGTH = 791;
	public static readonly GREATEST = 792;
	public static readonly GTID_SUBSET = 793;
	public static readonly GTID_SUBTRACT = 794;
	public static readonly HEX = 795;
	public static readonly IFNULL = 796;
	public static readonly INET6_ATON = 797;
	public static readonly INET6_NTOA = 798;
	public static readonly INET_ATON = 799;
	public static readonly INET_NTOA = 800;
	public static readonly INSTR = 801;
	public static readonly INTERIORRINGN = 802;
	public static readonly INTERSECTS = 803;
	public static readonly ISCLOSED = 804;
	public static readonly ISEMPTY = 805;
	public static readonly ISNULL = 806;
	public static readonly ISSIMPLE = 807;
	public static readonly IS_FREE_LOCK = 808;
	public static readonly IS_IPV4 = 809;
	public static readonly IS_IPV4_COMPAT = 810;
	public static readonly IS_IPV4_MAPPED = 811;
	public static readonly IS_IPV6 = 812;
	public static readonly IS_USED_LOCK = 813;
	public static readonly LAST_INSERT_ID = 814;
	public static readonly LCASE = 815;
	public static readonly LEAST = 816;
	public static readonly LENGTH = 817;
	public static readonly LINEFROMTEXT = 818;
	public static readonly LINEFROMWKB = 819;
	public static readonly LINESTRINGFROMTEXT = 820;
	public static readonly LINESTRINGFROMWKB = 821;
	public static readonly LN = 822;
	public static readonly LOAD_FILE = 823;
	public static readonly LOCATE = 824;
	public static readonly LOG = 825;
	public static readonly LOG10 = 826;
	public static readonly LOG2 = 827;
	public static readonly LOWER = 828;
	public static readonly LPAD = 829;
	public static readonly LTRIM = 830;
	public static readonly MAKEDATE = 831;
	public static readonly MAKETIME = 832;
	public static readonly MAKE_SET = 833;
	public static readonly MASTER_POS_WAIT = 834;
	public static readonly MBRCONTAINS = 835;
	public static readonly MBRDISJOINT = 836;
	public static readonly MBREQUAL = 837;
	public static readonly MBRINTERSECTS = 838;
	public static readonly MBROVERLAPS = 839;
	public static readonly MBRTOUCHES = 840;
	public static readonly MBRWITHIN = 841;
	public static readonly MD5 = 842;
	public static readonly MLINEFROMTEXT = 843;
	public static readonly MLINEFROMWKB = 844;
	public static readonly MONTHNAME = 845;
	public static readonly MPOINTFROMTEXT = 846;
	public static readonly MPOINTFROMWKB = 847;
	public static readonly MPOLYFROMTEXT = 848;
	public static readonly MPOLYFROMWKB = 849;
	public static readonly MULTILINESTRINGFROMTEXT = 850;
	public static readonly MULTILINESTRINGFROMWKB = 851;
	public static readonly MULTIPOINTFROMTEXT = 852;
	public static readonly MULTIPOINTFROMWKB = 853;
	public static readonly MULTIPOLYGONFROMTEXT = 854;
	public static readonly MULTIPOLYGONFROMWKB = 855;
	public static readonly NAME_CONST = 856;
	public static readonly NULLIF = 857;
	public static readonly NUMGEOMETRIES = 858;
	public static readonly NUMINTERIORRINGS = 859;
	public static readonly NUMPOINTS = 860;
	public static readonly OCT = 861;
	public static readonly OCTET_LENGTH = 862;
	public static readonly ORD = 863;
	public static readonly OVERLAPS = 864;
	public static readonly PERIOD_ADD = 865;
	public static readonly PERIOD_DIFF = 866;
	public static readonly PI = 867;
	public static readonly POINTFROMTEXT = 868;
	public static readonly POINTFROMWKB = 869;
	public static readonly POINTN = 870;
	public static readonly POLYFROMTEXT = 871;
	public static readonly POLYFROMWKB = 872;
	public static readonly POLYGONFROMTEXT = 873;
	public static readonly POLYGONFROMWKB = 874;
	public static readonly POW = 875;
	public static readonly POWER = 876;
	public static readonly QUOTE = 877;
	public static readonly RADIANS = 878;
	public static readonly RAND = 879;
	public static readonly RANDOM_BYTES = 880;
	public static readonly RELEASE_LOCK = 881;
	public static readonly REVERSE = 882;
	public static readonly ROUND = 883;
	public static readonly ROW_COUNT = 884;
	public static readonly RPAD = 885;
	public static readonly RTRIM = 886;
	public static readonly SEC_TO_TIME = 887;
	public static readonly SESSION_USER = 888;
	public static readonly SHA = 889;
	public static readonly SHA1 = 890;
	public static readonly SHA2 = 891;
	public static readonly SCHEMA_NAME = 892;
	public static readonly SIGN = 893;
	public static readonly SIN = 894;
	public static readonly SLEEP = 895;
	public static readonly SOUNDEX = 896;
	public static readonly SQL_THREAD_WAIT_AFTER_GTIDS = 897;
	public static readonly SQRT = 898;
	public static readonly SRID = 899;
	public static readonly STARTPOINT = 900;
	public static readonly STRCMP = 901;
	public static readonly STR_TO_DATE = 902;
	public static readonly ST_AREA = 903;
	public static readonly ST_ASBINARY = 904;
	public static readonly ST_ASTEXT = 905;
	public static readonly ST_ASWKB = 906;
	public static readonly ST_ASWKT = 907;
	public static readonly ST_BUFFER = 908;
	public static readonly ST_CENTROID = 909;
	public static readonly ST_CONTAINS = 910;
	public static readonly ST_CROSSES = 911;
	public static readonly ST_DIFFERENCE = 912;
	public static readonly ST_DIMENSION = 913;
	public static readonly ST_DISJOINT = 914;
	public static readonly ST_DISTANCE = 915;
	public static readonly ST_ENDPOINT = 916;
	public static readonly ST_ENVELOPE = 917;
	public static readonly ST_EQUALS = 918;
	public static readonly ST_EXTERIORRING = 919;
	public static readonly ST_GEOMCOLLFROMTEXT = 920;
	public static readonly ST_GEOMCOLLFROMTXT = 921;
	public static readonly ST_GEOMCOLLFROMWKB = 922;
	public static readonly ST_GEOMETRYCOLLECTIONFROMTEXT = 923;
	public static readonly ST_GEOMETRYCOLLECTIONFROMWKB = 924;
	public static readonly ST_GEOMETRYFROMTEXT = 925;
	public static readonly ST_GEOMETRYFROMWKB = 926;
	public static readonly ST_GEOMETRYN = 927;
	public static readonly ST_GEOMETRYTYPE = 928;
	public static readonly ST_GEOMFROMTEXT = 929;
	public static readonly ST_GEOMFROMWKB = 930;
	public static readonly ST_INTERIORRINGN = 931;
	public static readonly ST_INTERSECTION = 932;
	public static readonly ST_INTERSECTS = 933;
	public static readonly ST_ISCLOSED = 934;
	public static readonly ST_ISEMPTY = 935;
	public static readonly ST_ISSIMPLE = 936;
	public static readonly ST_LINEFROMTEXT = 937;
	public static readonly ST_LINEFROMWKB = 938;
	public static readonly ST_LINESTRINGFROMTEXT = 939;
	public static readonly ST_LINESTRINGFROMWKB = 940;
	public static readonly ST_NUMGEOMETRIES = 941;
	public static readonly ST_NUMINTERIORRING = 942;
	public static readonly ST_NUMINTERIORRINGS = 943;
	public static readonly ST_NUMPOINTS = 944;
	public static readonly ST_OVERLAPS = 945;
	public static readonly ST_POINTFROMTEXT = 946;
	public static readonly ST_POINTFROMWKB = 947;
	public static readonly ST_POINTN = 948;
	public static readonly ST_POLYFROMTEXT = 949;
	public static readonly ST_POLYFROMWKB = 950;
	public static readonly ST_POLYGONFROMTEXT = 951;
	public static readonly ST_POLYGONFROMWKB = 952;
	public static readonly ST_SRID = 953;
	public static readonly ST_STARTPOINT = 954;
	public static readonly ST_SYMDIFFERENCE = 955;
	public static readonly ST_TOUCHES = 956;
	public static readonly ST_UNION = 957;
	public static readonly ST_WITHIN = 958;
	public static readonly ST_X = 959;
	public static readonly ST_Y = 960;
	public static readonly SUBDATE = 961;
	public static readonly SUBSTRING_INDEX = 962;
	public static readonly SUBTIME = 963;
	public static readonly SYSTEM_USER = 964;
	public static readonly TAN = 965;
	public static readonly TIMEDIFF = 966;
	public static readonly TIMESTAMPADD = 967;
	public static readonly TIMESTAMPDIFF = 968;
	public static readonly TIME_FORMAT = 969;
	public static readonly TIME_TO_SEC = 970;
	public static readonly TOUCHES = 971;
	public static readonly TO_BASE64 = 972;
	public static readonly TO_DAYS = 973;
	public static readonly TO_SECONDS = 974;
	public static readonly UCASE = 975;
	public static readonly UNCOMPRESS = 976;
	public static readonly UNCOMPRESSED_LENGTH = 977;
	public static readonly UNHEX = 978;
	public static readonly UNIX_TIMESTAMP = 979;
	public static readonly UPDATEXML = 980;
	public static readonly UPPER = 981;
	public static readonly UUID = 982;
	public static readonly UUID_SHORT = 983;
	public static readonly VALIDATE_PASSWORD_STRENGTH = 984;
	public static readonly VERSION = 985;
	public static readonly WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS = 986;
	public static readonly WEEKDAY = 987;
	public static readonly WEEKOFYEAR = 988;
	public static readonly WEIGHT_STRING = 989;
	public static readonly WITHIN = 990;
	public static readonly YEARWEEK = 991;
	public static readonly Y_FUNCTION = 992;
	public static readonly X_FUNCTION = 993;
	public static readonly VAR_ASSIGN = 994;
	public static readonly PLUS_ASSIGN = 995;
	public static readonly MINUS_ASSIGN = 996;
	public static readonly MULT_ASSIGN = 997;
	public static readonly DIV_ASSIGN = 998;
	public static readonly MOD_ASSIGN = 999;
	public static readonly AND_ASSIGN = 1000;
	public static readonly XOR_ASSIGN = 1001;
	public static readonly OR_ASSIGN = 1002;
	public static readonly STAR = 1003;
	public static readonly DIVIDE = 1004;
	public static readonly MODULE = 1005;
	public static readonly PLUS = 1006;
	public static readonly MINUSMINUS = 1007;
	public static readonly MINUS = 1008;
	public static readonly DIV = 1009;
	public static readonly MOD = 1010;
	public static readonly EQUAL_SYMBOL = 1011;
	public static readonly GREATER_SYMBOL = 1012;
	public static readonly LESS_SYMBOL = 1013;
	public static readonly EXCLAMATION_SYMBOL = 1014;
	public static readonly BIT_NOT_OP = 1015;
	public static readonly BIT_OR_OP = 1016;
	public static readonly BIT_AND_OP = 1017;
	public static readonly BIT_XOR_OP = 1018;
	public static readonly DOT = 1019;
	public static readonly LR_BRACKET = 1020;
	public static readonly RR_BRACKET = 1021;
	public static readonly COMMA = 1022;
	public static readonly SEMI = 1023;
	public static readonly AT_SIGN = 1024;
	public static readonly ZERO_DECIMAL = 1025;
	public static readonly ONE_DECIMAL = 1026;
	public static readonly TWO_DECIMAL = 1027;
	public static readonly SINGLE_QUOTE_SYMB = 1028;
	public static readonly DOUBLE_QUOTE_SYMB = 1029;
	public static readonly REVERSE_QUOTE_SYMB = 1030;
	public static readonly COLON_SYMB = 1031;
	public static readonly CHARSET_REVERSE_QOUTE_STRING = 1032;
	public static readonly FILESIZE_LITERAL = 1033;
	public static readonly START_NATIONAL_STRING_LITERAL = 1034;
	public static readonly STRING_LITERAL = 1035;
	public static readonly DECIMAL_LITERAL = 1036;
	public static readonly HEXADECIMAL_LITERAL = 1037;
	public static readonly REAL_LITERAL = 1038;
	public static readonly NULL_SPEC_LITERAL = 1039;
	public static readonly BIT_STRING = 1040;
	public static readonly STRING_CHARSET_NAME = 1041;
	public static readonly DOT_ID = 1042;
	public static readonly ID = 1043;
	public static readonly REVERSE_QUOTE_ID = 1044;
	public static readonly STRING_USER_NAME = 1045;
	public static readonly LOCAL_ID = 1046;
	public static readonly GLOBAL_ID = 1047;
	public static readonly ERROR_RECONGNIGION = 1048;
	public static readonly EOF = Token.EOF;
	public static readonly RULE_program = 0;
	public static readonly RULE_statement = 1;
	public static readonly RULE_sqlStatements = 2;
	public static readonly RULE_sqlStatement = 3;
	public static readonly RULE_emptyStatement = 4;
	public static readonly RULE_ddlStatement = 5;
	public static readonly RULE_dmlStatement = 6;
	public static readonly RULE_transactionStatement = 7;
	public static readonly RULE_replicationStatement = 8;
	public static readonly RULE_preparedStatement = 9;
	public static readonly RULE_compoundStatement = 10;
	public static readonly RULE_administrationStatement = 11;
	public static readonly RULE_utilityStatement = 12;
	public static readonly RULE_createDatabase = 13;
	public static readonly RULE_createEvent = 14;
	public static readonly RULE_createIndex = 15;
	public static readonly RULE_createLogfileGroup = 16;
	public static readonly RULE_createProcedure = 17;
	public static readonly RULE_createFunction = 18;
	public static readonly RULE_createServer = 19;
	public static readonly RULE_createTable = 20;
	public static readonly RULE_createTablespaceInnodb = 21;
	public static readonly RULE_createTablespaceNdb = 22;
	public static readonly RULE_createTrigger = 23;
	public static readonly RULE_createView = 24;
	public static readonly RULE_createDatabaseOption = 25;
	public static readonly RULE_ownerStatement = 26;
	public static readonly RULE_scheduleExpression = 27;
	public static readonly RULE_timestampValue = 28;
	public static readonly RULE_intervalExpr = 29;
	public static readonly RULE_intervalType = 30;
	public static readonly RULE_enableType = 31;
	public static readonly RULE_indexType = 32;
	public static readonly RULE_indexOption = 33;
	public static readonly RULE_procedureParameter = 34;
	public static readonly RULE_functionParameter = 35;
	public static readonly RULE_routineOption = 36;
	public static readonly RULE_serverOption = 37;
	public static readonly RULE_createDefinitions = 38;
	public static readonly RULE_createDefinition = 39;
	public static readonly RULE_columnDefinition = 40;
	public static readonly RULE_columnConstraint = 41;
	public static readonly RULE_tableConstraint = 42;
	public static readonly RULE_referenceDefinition = 43;
	public static readonly RULE_referenceAction = 44;
	public static readonly RULE_referenceControlType = 45;
	public static readonly RULE_indexColumnDefinition = 46;
	public static readonly RULE_tableOption = 47;
	public static readonly RULE_tablespaceStorage = 48;
	public static readonly RULE_partitionDefinitions = 49;
	public static readonly RULE_partitionFunctionDefinition = 50;
	public static readonly RULE_subpartitionFunctionDefinition = 51;
	public static readonly RULE_partitionDefinition = 52;
	public static readonly RULE_partitionDefinerAtom = 53;
	public static readonly RULE_partitionDefinerVector = 54;
	public static readonly RULE_subpartitionDefinition = 55;
	public static readonly RULE_partitionOption = 56;
	public static readonly RULE_alterDatabase = 57;
	public static readonly RULE_alterEvent = 58;
	public static readonly RULE_alterFunction = 59;
	public static readonly RULE_alterInstance = 60;
	public static readonly RULE_alterLogfileGroup = 61;
	public static readonly RULE_alterProcedure = 62;
	public static readonly RULE_alterServer = 63;
	public static readonly RULE_alterTable = 64;
	public static readonly RULE_alterTablespace = 65;
	public static readonly RULE_alterView = 66;
	public static readonly RULE_alterSpecification = 67;
	public static readonly RULE_dropDatabase = 68;
	public static readonly RULE_dropEvent = 69;
	public static readonly RULE_dropIndex = 70;
	public static readonly RULE_dropLogfileGroup = 71;
	public static readonly RULE_dropProcedure = 72;
	public static readonly RULE_dropFunction = 73;
	public static readonly RULE_dropServer = 74;
	public static readonly RULE_dropTable = 75;
	public static readonly RULE_dropTablespace = 76;
	public static readonly RULE_dropTrigger = 77;
	public static readonly RULE_dropView = 78;
	public static readonly RULE_renameTable = 79;
	public static readonly RULE_renameTableClause = 80;
	public static readonly RULE_truncateTable = 81;
	public static readonly RULE_callStatement = 82;
	public static readonly RULE_deleteStatement = 83;
	public static readonly RULE_doStatement = 84;
	public static readonly RULE_handlerStatement = 85;
	public static readonly RULE_insertStatement = 86;
	public static readonly RULE_loadDataStatement = 87;
	public static readonly RULE_loadXmlStatement = 88;
	public static readonly RULE_replaceStatement = 89;
	public static readonly RULE_selectStatement = 90;
	public static readonly RULE_updateStatement = 91;
	public static readonly RULE_insertStatementValue = 92;
	public static readonly RULE_updatedElement = 93;
	public static readonly RULE_assignmentField = 94;
	public static readonly RULE_lockClause = 95;
	public static readonly RULE_singleDeleteStatement = 96;
	public static readonly RULE_multipleDeleteStatement = 97;
	public static readonly RULE_handlerOpenStatement = 98;
	public static readonly RULE_handlerReadIndexStatement = 99;
	public static readonly RULE_handlerReadStatement = 100;
	public static readonly RULE_handlerCloseStatement = 101;
	public static readonly RULE_singleUpdateStatement = 102;
	public static readonly RULE_multipleUpdateStatement = 103;
	public static readonly RULE_orderByClause = 104;
	public static readonly RULE_orderByExpression = 105;
	public static readonly RULE_tableSources = 106;
	public static readonly RULE_tableSource = 107;
	public static readonly RULE_tableSourceItem = 108;
	public static readonly RULE_indexHint = 109;
	public static readonly RULE_indexHintType = 110;
	public static readonly RULE_joinPart = 111;
	public static readonly RULE_queryExpression = 112;
	public static readonly RULE_queryExpressionNointo = 113;
	public static readonly RULE_querySpecification = 114;
	public static readonly RULE_querySpecificationNointo = 115;
	public static readonly RULE_unionParenthesis = 116;
	public static readonly RULE_unionStatement = 117;
	public static readonly RULE_selectSpec = 118;
	public static readonly RULE_selectElements = 119;
	public static readonly RULE_selectElement = 120;
	public static readonly RULE_selectIntoExpression = 121;
	public static readonly RULE_selectFieldsInto = 122;
	public static readonly RULE_selectLinesInto = 123;
	public static readonly RULE_fromClause = 124;
	public static readonly RULE_groupByItem = 125;
	public static readonly RULE_limitClause = 126;
	public static readonly RULE_limitClauseAtom = 127;
	public static readonly RULE_startTransaction = 128;
	public static readonly RULE_beginWork = 129;
	public static readonly RULE_commitWork = 130;
	public static readonly RULE_rollbackWork = 131;
	public static readonly RULE_savepointStatement = 132;
	public static readonly RULE_rollbackStatement = 133;
	public static readonly RULE_releaseStatement = 134;
	public static readonly RULE_lockTables = 135;
	public static readonly RULE_unlockTables = 136;
	public static readonly RULE_setAutocommitStatement = 137;
	public static readonly RULE_setTransactionStatement = 138;
	public static readonly RULE_transactionMode = 139;
	public static readonly RULE_lockTableElement = 140;
	public static readonly RULE_lockAction = 141;
	public static readonly RULE_transactionOption = 142;
	public static readonly RULE_transactionLevel = 143;
	public static readonly RULE_changeMaster = 144;
	public static readonly RULE_changeReplicationFilter = 145;
	public static readonly RULE_purgeBinaryLogs = 146;
	public static readonly RULE_resetMaster = 147;
	public static readonly RULE_resetSlave = 148;
	public static readonly RULE_startSlave = 149;
	public static readonly RULE_stopSlave = 150;
	public static readonly RULE_startGroupReplication = 151;
	public static readonly RULE_stopGroupReplication = 152;
	public static readonly RULE_masterOption = 153;
	public static readonly RULE_stringMasterOption = 154;
	public static readonly RULE_decimalMasterOption = 155;
	public static readonly RULE_boolMasterOption = 156;
	public static readonly RULE_channelOption = 157;
	public static readonly RULE_replicationFilter = 158;
	public static readonly RULE_tablePair = 159;
	public static readonly RULE_threadType = 160;
	public static readonly RULE_untilOption = 161;
	public static readonly RULE_connectionOption = 162;
	public static readonly RULE_gtuidSet = 163;
	public static readonly RULE_xaStartTransaction = 164;
	public static readonly RULE_xaEndTransaction = 165;
	public static readonly RULE_xaPrepareStatement = 166;
	public static readonly RULE_xaCommitWork = 167;
	public static readonly RULE_xaRollbackWork = 168;
	public static readonly RULE_xaRecoverWork = 169;
	public static readonly RULE_prepareStatement = 170;
	public static readonly RULE_executeStatement = 171;
	public static readonly RULE_deallocatePrepare = 172;
	public static readonly RULE_routineBody = 173;
	public static readonly RULE_blockStatement = 174;
	public static readonly RULE_caseStatement = 175;
	public static readonly RULE_ifStatement = 176;
	public static readonly RULE_iterateStatement = 177;
	public static readonly RULE_leaveStatement = 178;
	public static readonly RULE_loopStatement = 179;
	public static readonly RULE_repeatStatement = 180;
	public static readonly RULE_returnStatement = 181;
	public static readonly RULE_whileStatement = 182;
	public static readonly RULE_cursorStatement = 183;
	public static readonly RULE_declareVariable = 184;
	public static readonly RULE_declareCondition = 185;
	public static readonly RULE_declareCursor = 186;
	public static readonly RULE_declareHandler = 187;
	public static readonly RULE_handlerConditionValue = 188;
	public static readonly RULE_procedureSqlStatement = 189;
	public static readonly RULE_caseAlternative = 190;
	public static readonly RULE_elifAlternative = 191;
	public static readonly RULE_alterUser = 192;
	public static readonly RULE_createUser = 193;
	public static readonly RULE_dropUser = 194;
	public static readonly RULE_grantStatement = 195;
	public static readonly RULE_grantProxy = 196;
	public static readonly RULE_renameUser = 197;
	public static readonly RULE_revokeStatement = 198;
	public static readonly RULE_revokeProxy = 199;
	public static readonly RULE_setPasswordStatement = 200;
	public static readonly RULE_userSpecification = 201;
	public static readonly RULE_userAuthOption = 202;
	public static readonly RULE_tlsOption = 203;
	public static readonly RULE_userResourceOption = 204;
	public static readonly RULE_userPasswordOption = 205;
	public static readonly RULE_userLockOption = 206;
	public static readonly RULE_privelegeClause = 207;
	public static readonly RULE_privilege = 208;
	public static readonly RULE_privilegeLevel = 209;
	public static readonly RULE_renameUserClause = 210;
	public static readonly RULE_analyzeTable = 211;
	public static readonly RULE_checkTable = 212;
	public static readonly RULE_checksumTable = 213;
	public static readonly RULE_optimizeTable = 214;
	public static readonly RULE_repairTable = 215;
	public static readonly RULE_checkTableOption = 216;
	public static readonly RULE_createUdfunction = 217;
	public static readonly RULE_installPlugin = 218;
	public static readonly RULE_uninstallPlugin = 219;
	public static readonly RULE_setStatement = 220;
	public static readonly RULE_showStatement = 221;
	public static readonly RULE_variableClause = 222;
	public static readonly RULE_showCommonEntity = 223;
	public static readonly RULE_showFilter = 224;
	public static readonly RULE_showGlobalInfoClause = 225;
	public static readonly RULE_showSchemaEntity = 226;
	public static readonly RULE_showProfileType = 227;
	public static readonly RULE_binlogStatement = 228;
	public static readonly RULE_cacheIndexStatement = 229;
	public static readonly RULE_flushStatement = 230;
	public static readonly RULE_killStatement = 231;
	public static readonly RULE_loadIndexIntoCache = 232;
	public static readonly RULE_resetStatement = 233;
	public static readonly RULE_shutdownStatement = 234;
	public static readonly RULE_tableIndexes = 235;
	public static readonly RULE_flushOption = 236;
	public static readonly RULE_flushTableOption = 237;
	public static readonly RULE_loadedTableIndexes = 238;
	public static readonly RULE_simpleDescribeStatement = 239;
	public static readonly RULE_fullDescribeStatement = 240;
	public static readonly RULE_helpStatement = 241;
	public static readonly RULE_useStatement = 242;
	public static readonly RULE_signalStatement = 243;
	public static readonly RULE_resignalStatement = 244;
	public static readonly RULE_signalConditionInformation = 245;
	public static readonly RULE_diagnosticsStatement = 246;
	public static readonly RULE_diagnosticsConditionInformationName = 247;
	public static readonly RULE_describeObjectClause = 248;
	public static readonly RULE_fullId = 249;
	public static readonly RULE_tableName = 250;
	public static readonly RULE_fullColumnName = 251;
	public static readonly RULE_indexColumnName = 252;
	public static readonly RULE_userName = 253;
	public static readonly RULE_mysqlVariable = 254;
	public static readonly RULE_charsetName = 255;
	public static readonly RULE_collationName = 256;
	public static readonly RULE_engineName = 257;
	public static readonly RULE_uuidSet = 258;
	public static readonly RULE_xid = 259;
	public static readonly RULE_xuidStringId = 260;
	public static readonly RULE_authPlugin = 261;
	public static readonly RULE_uid = 262;
	public static readonly RULE_simpleId = 263;
	public static readonly RULE_dottedId = 264;
	public static readonly RULE_decimalLiteral = 265;
	public static readonly RULE_fileSizeLiteral = 266;
	public static readonly RULE_stringLiteral = 267;
	public static readonly RULE_booleanLiteral = 268;
	public static readonly RULE_hexadecimalLiteral = 269;
	public static readonly RULE_nullNotnull = 270;
	public static readonly RULE_constant = 271;
	public static readonly RULE_dataType = 272;
	public static readonly RULE_collectionOptions = 273;
	public static readonly RULE_convertedDataType = 274;
	public static readonly RULE_lengthOneDimension = 275;
	public static readonly RULE_lengthTwoDimension = 276;
	public static readonly RULE_lengthTwoOptionalDimension = 277;
	public static readonly RULE_uidList = 278;
	public static readonly RULE_tables = 279;
	public static readonly RULE_indexColumnNames = 280;
	public static readonly RULE_expressions = 281;
	public static readonly RULE_expressionsWithDefaults = 282;
	public static readonly RULE_constants = 283;
	public static readonly RULE_simpleStrings = 284;
	public static readonly RULE_userVariables = 285;
	public static readonly RULE_defaultValue = 286;
	public static readonly RULE_currentTimestamp = 287;
	public static readonly RULE_expressionOrDefault = 288;
	public static readonly RULE_ifExists = 289;
	public static readonly RULE_ifNotExists = 290;
	public static readonly RULE_functionCall = 291;
	public static readonly RULE_specificFunction = 292;
	public static readonly RULE_caseFuncAlternative = 293;
	public static readonly RULE_levelsInWeightString = 294;
	public static readonly RULE_levelInWeightListElement = 295;
	public static readonly RULE_aggregateWindowedFunction = 296;
	public static readonly RULE_scalarFunctionName = 297;
	public static readonly RULE_passwordFunctionClause = 298;
	public static readonly RULE_functionArgs = 299;
	public static readonly RULE_functionArg = 300;
	public static readonly RULE_expression = 301;
	public static readonly RULE_predicate = 302;
	public static readonly RULE_expressionAtom = 303;
	public static readonly RULE_unaryOperator = 304;
	public static readonly RULE_comparisonOperator = 305;
	public static readonly RULE_logicalOperator = 306;
	public static readonly RULE_bitOperator = 307;
	public static readonly RULE_mathOperator = 308;
	public static readonly RULE_charsetNameBase = 309;
	public static readonly RULE_transactionLevelBase = 310;
	public static readonly RULE_privilegesBase = 311;
	public static readonly RULE_intervalTypeBase = 312;
	public static readonly RULE_dataTypeBase = 313;
	public static readonly RULE_keywordsCanBeId = 314;
	public static readonly RULE_functionNameBase = 315;
	public static readonly literalNames: (string | null)[] = [ null, null, 
                                                            null, null, 
                                                            null, "'ADD'", 
                                                            "'ALL'", "'ALTER'", 
                                                            "'ALWAYS'", 
                                                            "'ANALYZE'", 
                                                            "'AND'", "'AS'", 
                                                            "'ASC'", "'BEFORE'", 
                                                            "'BETWEEN'", 
                                                            "'BOTH'", "'BY'", 
                                                            "'CALL'", "'CASCADE'", 
                                                            "'CASE'", "'CAST'", 
                                                            "'CHANGE'", 
                                                            "'CHARACTER'", 
                                                            "'CHECK'", "'COLLATE'", 
                                                            "'COLUMN'", 
                                                            "'CONDITION'", 
                                                            "'CONSTRAINT'", 
                                                            "'CONTINUE'", 
                                                            "'CONVERT'", 
                                                            "'CREATE'", 
                                                            "'CROSS'", "'CURRENT'", 
                                                            "'CURRENT_USER'", 
                                                            "'CURSOR'", 
                                                            "'DATABASE'", 
                                                            "'DATABASES'", 
                                                            "'DECLARE'", 
                                                            "'DEFAULT'", 
                                                            "'DELAYED'", 
                                                            "'DELETE'", 
                                                            "'DESC'", "'DESCRIBE'", 
                                                            "'DETERMINISTIC'", 
                                                            "'DIAGNOSTICS'", 
                                                            "'DISTINCT'", 
                                                            "'DISTINCTROW'", 
                                                            "'DROP'", "'EACH'", 
                                                            "'ELSE'", "'ELSEIF'", 
                                                            "'ENCLOSED'", 
                                                            "'ESCAPED'", 
                                                            "'EXISTS'", 
                                                            "'EXIT'", "'EXPLAIN'", 
                                                            "'FALSE'", "'FETCH'", 
                                                            "'FOR'", "'FORCE'", 
                                                            "'FOREIGN'", 
                                                            "'FROM'", "'FULLTEXT'", 
                                                            "'GENERATED'", 
                                                            "'GET'", "'GRANT'", 
                                                            "'GROUP'", "'HAVING'", 
                                                            "'HIGH_PRIORITY'", 
                                                            "'IF'", "'IGNORE'", 
                                                            "'IN'", "'INDEX'", 
                                                            "'INFILE'", 
                                                            "'INNER'", "'INOUT'", 
                                                            "'INSERT'", 
                                                            "'INTERVAL'", 
                                                            "'INTO'", "'IS'", 
                                                            "'ITERATE'", 
                                                            "'JOIN'", "'KEY'", 
                                                            "'KEYS'", "'KILL'", 
                                                            "'LEADING'", 
                                                            "'LEAVE'", "'LEFT'", 
                                                            "'LIKE'", "'LIMIT'", 
                                                            "'LINEAR'", 
                                                            "'LINES'", "'LOAD'", 
                                                            "'LOCK'", "'LOOP'", 
                                                            "'LOW_PRIORITY'", 
                                                            "'MASTER_BIND'", 
                                                            "'MASTER_SSL_VERIFY_SERVER_CERT'", 
                                                            "'MATCH'", "'MAXVALUE'", 
                                                            "'MODIFIES'", 
                                                            "'NATURAL'", 
                                                            "'NOT'", "'NO_WRITE_TO_BINLOG'", 
                                                            "'NULL'", "'NUMBER'", 
                                                            "'ON'", "'OPTIMIZE'", 
                                                            "'OPTION'", 
                                                            "'OPTIONALLY'", 
                                                            "'OR'", "'ORDER'", 
                                                            "'OUT'", "'OUTER'", 
                                                            "'OUTFILE'", 
                                                            "'PARTITION'", 
                                                            "'PRIMARY'", 
                                                            "'PROCEDURE'", 
                                                            "'PURGE'", "'RANGE'", 
                                                            "'READ'", "'READS'", 
                                                            "'REFERENCES'", 
                                                            "'REGEXP'", 
                                                            "'RELEASE'", 
                                                            "'RENAME'", 
                                                            "'REPEAT'", 
                                                            "'REPLACE'", 
                                                            "'REQUIRE'", 
                                                            "'RESIGNAL'", 
                                                            "'RESTRICT'", 
                                                            "'RETURN'", 
                                                            "'REVOKE'", 
                                                            "'RIGHT'", "'RLIKE'", 
                                                            "'SCHEMA'", 
                                                            "'SCHEMAS'", 
                                                            "'SELECT'", 
                                                            "'SET'", "'SEPARATOR'", 
                                                            "'SHOW'", "'SIGNAL'", 
                                                            "'SPATIAL'", 
                                                            "'SQL'", "'SQLEXCEPTION'", 
                                                            "'SQLSTATE'", 
                                                            "'SQLWARNING'", 
                                                            "'SQL_BIG_RESULT'", 
                                                            "'SQL_CALC_FOUND_ROWS'", 
                                                            "'SQL_SMALL_RESULT'", 
                                                            "'SSL'", "'STACKED'", 
                                                            "'STARTING'", 
                                                            "'STRAIGHT_JOIN'", 
                                                            "'TABLE'", "'TERMINATED'", 
                                                            "'THEN'", "'TO'", 
                                                            "'TRAILING'", 
                                                            "'TRIGGER'", 
                                                            "'TRUE'", "'UNDO'", 
                                                            "'UNION'", "'UNIQUE'", 
                                                            "'UNLOCK'", 
                                                            "'UNSIGNED'", 
                                                            "'UPDATE'", 
                                                            "'USAGE'", "'USE'", 
                                                            "'USING'", "'VALUES'", 
                                                            "'WHEN'", "'WHERE'", 
                                                            "'WHILE'", "'WITH'", 
                                                            "'WRITE'", "'XOR'", 
                                                            "'ZEROFILL'", 
                                                            "'TINYINT'", 
                                                            "'SMALLINT'", 
                                                            "'MEDIUMINT'", 
                                                            "'MIDDLEINT'", 
                                                            "'INT'", "'INT1'", 
                                                            "'INT2'", "'INT3'", 
                                                            "'INT4'", "'INT8'", 
                                                            "'INTEGER'", 
                                                            "'BIGINT'", 
                                                            "'REAL'", "'DOUBLE'", 
                                                            "'PRECISION'", 
                                                            "'FLOAT'", "'FLOAT4'", 
                                                            "'FLOAT8'", 
                                                            "'DECIMAL'", 
                                                            "'DEC'", "'NUMERIC'", 
                                                            "'DATE'", "'TIME'", 
                                                            "'TIMESTAMP'", 
                                                            "'DATETIME'", 
                                                            "'YEAR'", "'CHAR'", 
                                                            "'VARCHAR'", 
                                                            "'NVARCHAR'", 
                                                            "'NATIONAL'", 
                                                            "'BINARY'", 
                                                            "'VARBINARY'", 
                                                            "'TINYBLOB'", 
                                                            "'BLOB'", "'MEDIUMBLOB'", 
                                                            "'LONG'", "'LONGBLOB'", 
                                                            "'TINYTEXT'", 
                                                            "'TEXT'", "'MEDIUMTEXT'", 
                                                            "'LONGTEXT'", 
                                                            "'ENUM'", "'VARYING'", 
                                                            "'SERIAL'", 
                                                            "'YEAR_MONTH'", 
                                                            "'DAY_HOUR'", 
                                                            "'DAY_MINUTE'", 
                                                            "'DAY_SECOND'", 
                                                            "'HOUR_MINUTE'", 
                                                            "'HOUR_SECOND'", 
                                                            "'MINUTE_SECOND'", 
                                                            "'SECOND_MICROSECOND'", 
                                                            "'MINUTE_MICROSECOND'", 
                                                            "'HOUR_MICROSECOND'", 
                                                            "'DAY_MICROSECOND'", 
                                                            "'JSON_VALID'", 
                                                            "'JSON_SCHEMA_VALID'", 
                                                            "'AVG'", "'BIT_AND'", 
                                                            "'BIT_OR'", 
                                                            "'BIT_XOR'", 
                                                            "'COUNT'", "'GROUP_CONCAT'", 
                                                            "'MAX'", "'MIN'", 
                                                            "'STD'", "'STDDEV'", 
                                                            "'STDDEV_POP'", 
                                                            "'STDDEV_SAMP'", 
                                                            "'SUM'", "'VAR_POP'", 
                                                            "'VAR_SAMP'", 
                                                            "'VARIANCE'", 
                                                            "'CURRENT_DATE'", 
                                                            "'CURRENT_TIME'", 
                                                            "'CURRENT_TIMESTAMP'", 
                                                            "'LOCALTIME'", 
                                                            "'CURDATE'", 
                                                            "'CURTIME'", 
                                                            "'DATE_ADD'", 
                                                            "'DATE_SUB'", 
                                                            "'EXTRACT'", 
                                                            "'LOCALTIMESTAMP'", 
                                                            "'NOW'", "'POSITION'", 
                                                            "'SUBSTR'", 
                                                            "'SUBSTRING'", 
                                                            "'SYSDATE'", 
                                                            "'TRIM'", "'UTC_DATE'", 
                                                            "'UTC_TIME'", 
                                                            "'UTC_TIMESTAMP'", 
                                                            "'ACCOUNT'", 
                                                            "'ACTION'", 
                                                            "'AFTER'", "'AGGREGATE'", 
                                                            "'ALGORITHM'", 
                                                            "'ANY'", "'AT'", 
                                                            "'AUTHORS'", 
                                                            "'AUTOCOMMIT'", 
                                                            "'AUTOEXTEND_SIZE'", 
                                                            "'AUTO_INCREMENT'", 
                                                            "'AVG_ROW_LENGTH'", 
                                                            "'BEGIN'", "'BINLOG'", 
                                                            "'BIT'", "'BLOCK'", 
                                                            "'BOOL'", "'BOOLEAN'", 
                                                            "'BTREE'", "'CACHE'", 
                                                            "'CASCADED'", 
                                                            "'CHAIN'", "'CHANGED'", 
                                                            "'CHANNEL'", 
                                                            "'CHECKSUM'", 
                                                            "'PAGE_CHECKSUM'", 
                                                            "'CIPHER'", 
                                                            "'CLASS_ORIGIN'", 
                                                            "'CLIENT'", 
                                                            "'CLOSE'", "'COALESCE'", 
                                                            "'CODE'", "'COLUMNS'", 
                                                            "'COLUMN_FORMAT'", 
                                                            "'COLUMN_NAME'", 
                                                            "'COMMENT'", 
                                                            "'COMMIT'", 
                                                            "'COMPACT'", 
                                                            "'COMPLETION'", 
                                                            "'COMPRESSED'", 
                                                            "'COMPRESSION'", 
                                                            "'CONCURRENT'", 
                                                            "'CONNECTION'", 
                                                            "'CONSISTENT'", 
                                                            "'CONSTRAINT_CATALOG'", 
                                                            "'CONSTRAINT_SCHEMA'", 
                                                            "'CONSTRAINT_NAME'", 
                                                            "'CONTAINS'", 
                                                            "'CONTEXT'", 
                                                            "'CONTRIBUTORS'", 
                                                            "'COPY'", "'CPU'", 
                                                            "'CURSOR_NAME'", 
                                                            "'DATA'", "'DATAFILE'", 
                                                            "'DEALLOCATE'", 
                                                            "'DEFAULT_AUTH'", 
                                                            "'DEFINER'", 
                                                            "'DELAY_KEY_WRITE'", 
                                                            "'DES_KEY_FILE'", 
                                                            "'DIRECTORY'", 
                                                            "'DISABLE'", 
                                                            "'DISCARD'", 
                                                            "'DISK'", "'DO'", 
                                                            "'DUMPFILE'", 
                                                            "'DUPLICATE'", 
                                                            "'DYNAMIC'", 
                                                            "'ENABLE'", 
                                                            "'ENCRYPTION'", 
                                                            "'END'", "'ENDS'", 
                                                            "'ENGINE'", 
                                                            "'ENGINES'", 
                                                            "'ERROR'", "'ERRORS'", 
                                                            "'ESCAPE'", 
                                                            "'EVEN'", "'EVENT'", 
                                                            "'EVENTS'", 
                                                            "'EVERY'", "'EXCHANGE'", 
                                                            "'EXCLUSIVE'", 
                                                            "'EXPIRE'", 
                                                            "'EXPORT'", 
                                                            "'EXTENDED'", 
                                                            "'EXTENT_SIZE'", 
                                                            "'FAST'", "'FAULTS'", 
                                                            "'FIELDS'", 
                                                            "'FILE_BLOCK_SIZE'", 
                                                            "'FILTER'", 
                                                            "'FIRST'", "'FIXED'", 
                                                            "'FLUSH'", "'FOLLOWS'", 
                                                            "'FOUND'", "'FULL'", 
                                                            "'FUNCTION'", 
                                                            "'GENERAL'", 
                                                            "'GLOBAL'", 
                                                            "'GRANTS'", 
                                                            "'GROUP_REPLICATION'", 
                                                            "'HANDLER'", 
                                                            "'HASH'", "'HELP'", 
                                                            "'HOST'", "'HOSTS'", 
                                                            "'IDENTIFIED'", 
                                                            "'IGNORE_SERVER_IDS'", 
                                                            "'IMPORT'", 
                                                            "'INDEXES'", 
                                                            "'INITIAL_SIZE'", 
                                                            "'INPLACE'", 
                                                            "'INSERT_METHOD'", 
                                                            "'INSTALL'", 
                                                            "'INSTANCE'", 
                                                            "'INVISIBLE'", 
                                                            "'INVOKER'", 
                                                            "'IO'", "'IO_THREAD'", 
                                                            "'IPC'", "'ISOLATION'", 
                                                            "'ISSUER'", 
                                                            "'JSON'", "'KEY_BLOCK_SIZE'", 
                                                            "'LANGUAGE'", 
                                                            "'LAST'", "'LEAVES'", 
                                                            "'LESS'", "'LEVEL'", 
                                                            "'LIST'", "'LOCAL'", 
                                                            "'LOGFILE'", 
                                                            "'LOGS'", "'MASTER'", 
                                                            "'MASTER_AUTO_POSITION'", 
                                                            "'MASTER_CONNECT_RETRY'", 
                                                            "'MASTER_DELAY'", 
                                                            "'MASTER_HEARTBEAT_PERIOD'", 
                                                            "'MASTER_HOST'", 
                                                            "'MASTER_LOG_FILE'", 
                                                            "'MASTER_LOG_POS'", 
                                                            "'MASTER_PASSWORD'", 
                                                            "'MASTER_PORT'", 
                                                            "'MASTER_RETRY_COUNT'", 
                                                            "'MASTER_SSL'", 
                                                            "'MASTER_SSL_CA'", 
                                                            "'MASTER_SSL_CAPATH'", 
                                                            "'MASTER_SSL_CERT'", 
                                                            "'MASTER_SSL_CIPHER'", 
                                                            "'MASTER_SSL_CRL'", 
                                                            "'MASTER_SSL_CRLPATH'", 
                                                            "'MASTER_SSL_KEY'", 
                                                            "'MASTER_TLS_VERSION'", 
                                                            "'MASTER_USER'", 
                                                            "'MAX_CONNECTIONS_PER_HOUR'", 
                                                            "'MAX_QUERIES_PER_HOUR'", 
                                                            "'MAX_ROWS'", 
                                                            "'MAX_SIZE'", 
                                                            "'MAX_UPDATES_PER_HOUR'", 
                                                            "'MAX_USER_CONNECTIONS'", 
                                                            "'MEDIUM'", 
                                                            "'MERGE'", "'MESSAGE_TEXT'", 
                                                            "'MID'", "'MIGRATE'", 
                                                            "'MIN_ROWS'", 
                                                            "'MODE'", "'MODIFY'", 
                                                            "'MUTEX'", "'MYSQL'", 
                                                            "'MYSQL_ERRNO'", 
                                                            "'NAME'", "'NAMES'", 
                                                            "'NCHAR'", "'NEVER'", 
                                                            "'NEXT'", "'NO'", 
                                                            "'NODEGROUP'", 
                                                            "'NONE'", "'OFFLINE'", 
                                                            "'OFFSET'", 
                                                            "'OJ'", "'OLD_PASSWORD'", 
                                                            "'ONE'", "'ONLINE'", 
                                                            "'ONLY'", "'OPEN'", 
                                                            "'OPTIMIZER_COSTS'", 
                                                            "'OPTIONS'", 
                                                            "'OWNER'", "'PACK_KEYS'", 
                                                            "'PAGE'", "'PARSER'", 
                                                            "'PARTIAL'", 
                                                            "'PARTITIONING'", 
                                                            "'PARTITIONS'", 
                                                            "'PASSWORD'", 
                                                            "'PHASE'", "'PLUGIN'", 
                                                            "'PLUGIN_DIR'", 
                                                            "'PLUGINS'", 
                                                            "'PORT'", "'PRECEDES'", 
                                                            "'PREPARE'", 
                                                            "'PRESERVE'", 
                                                            "'PREV'", "'PROCESSLIST'", 
                                                            "'PROFILE'", 
                                                            "'PROFILES'", 
                                                            "'PROXY'", "'QUERY'", 
                                                            "'QUICK'", "'REBUILD'", 
                                                            "'RECOVER'", 
                                                            "'REDO_BUFFER_SIZE'", 
                                                            "'REDUNDANT'", 
                                                            "'RELAY'", "'RELAY_LOG_FILE'", 
                                                            "'RELAY_LOG_POS'", 
                                                            "'RELAYLOG'", 
                                                            "'REMOVE'", 
                                                            "'REORGANIZE'", 
                                                            "'REPAIR'", 
                                                            "'REPLICATE_DO_DB'", 
                                                            "'REPLICATE_DO_TABLE'", 
                                                            "'REPLICATE_IGNORE_DB'", 
                                                            "'REPLICATE_IGNORE_TABLE'", 
                                                            "'REPLICATE_REWRITE_DB'", 
                                                            "'REPLICATE_WILD_DO_TABLE'", 
                                                            "'REPLICATE_WILD_IGNORE_TABLE'", 
                                                            "'REPLICATION'", 
                                                            "'RESET'", "'RESUME'", 
                                                            "'RETURNED_SQLSTATE'", 
                                                            "'RETURNS'", 
                                                            "'ROLE'", "'ROLLBACK'", 
                                                            "'ROLLUP'", 
                                                            "'ROTATE'", 
                                                            "'ROW'", "'ROWS'", 
                                                            "'ROW_FORMAT'", 
                                                            "'SAVEPOINT'", 
                                                            "'SCHEDULE'", 
                                                            "'SECURITY'", 
                                                            "'SERVER'", 
                                                            "'SESSION'", 
                                                            "'SHARE'", "'SHARED'", 
                                                            "'SIGNED'", 
                                                            "'SIMPLE'", 
                                                            "'SLAVE'", "'SLOW'", 
                                                            "'SNAPSHOT'", 
                                                            "'SOCKET'", 
                                                            "'SOME'", "'SONAME'", 
                                                            "'SOUNDS'", 
                                                            "'SOURCE'", 
                                                            "'SQL_AFTER_GTIDS'", 
                                                            "'SQL_AFTER_MTS_GAPS'", 
                                                            "'SQL_BEFORE_GTIDS'", 
                                                            "'SQL_BUFFER_RESULT'", 
                                                            "'SQL_CACHE'", 
                                                            "'SQL_NO_CACHE'", 
                                                            "'SQL_THREAD'", 
                                                            "'START'", "'STARTS'", 
                                                            "'STATS_AUTO_RECALC'", 
                                                            "'STATS_PERSISTENT'", 
                                                            "'STATS_SAMPLE_PAGES'", 
                                                            "'STATUS'", 
                                                            "'STOP'", "'STORAGE'", 
                                                            "'STORED'", 
                                                            "'STRING'", 
                                                            "'SUBCLASS_ORIGIN'", 
                                                            "'SUBJECT'", 
                                                            "'SUBPARTITION'", 
                                                            "'SUBPARTITIONS'", 
                                                            "'SUSPEND'", 
                                                            "'SWAPS'", "'SWITCHES'", 
                                                            "'TABLE_NAME'", 
                                                            "'TABLESPACE'", 
                                                            "'TEMPORARY'", 
                                                            "'TEMPTABLE'", 
                                                            "'THAN'", "'TRADITIONAL'", 
                                                            "'TRANSACTION'", 
                                                            "'TRANSACTIONAL'", 
                                                            "'TRIGGERS'", 
                                                            "'TRUNCATE'", 
                                                            "'UNDEFINED'", 
                                                            "'UNDOFILE'", 
                                                            "'UNDO_BUFFER_SIZE'", 
                                                            "'UNINSTALL'", 
                                                            "'UNKNOWN'", 
                                                            "'UNTIL'", "'UPGRADE'", 
                                                            "'USER'", "'USE_FRM'", 
                                                            "'USER_RESOURCES'", 
                                                            "'VALIDATION'", 
                                                            "'VALUE'", "'VARIABLES'", 
                                                            "'VIEW'", "'VIRTUAL'", 
                                                            "'VISIBLE'", 
                                                            "'WAIT'", "'WARNINGS'", 
                                                            "'WITHOUT'", 
                                                            "'WORK'", "'WRAPPER'", 
                                                            "'X509'", "'XA'", 
                                                            "'XML'", "'EUR'", 
                                                            "'USA'", "'JIS'", 
                                                            "'ISO'", "'INTERNAL'", 
                                                            "'QUARTER'", 
                                                            "'MONTH'", "'DAY'", 
                                                            "'HOUR'", "'MINUTE'", 
                                                            "'WEEK'", "'SECOND'", 
                                                            "'MICROSECOND'", 
                                                            "'TABLES'", 
                                                            "'ROUTINE'", 
                                                            "'EXECUTE'", 
                                                            "'FILE'", "'PROCESS'", 
                                                            "'RELOAD'", 
                                                            "'SHUTDOWN'", 
                                                            "'SUPER'", "'PRIVILEGES'", 
                                                            "'APPLICATION_PASSWORD_ADMIN'", 
                                                            "'AUDIT_ADMIN'", 
                                                            "'BACKUP_ADMIN'", 
                                                            "'BINLOG_ADMIN'", 
                                                            "'BINLOG_ENCRYPTION_ADMIN'", 
                                                            "'CLONE_ADMIN'", 
                                                            "'CONNECTION_ADMIN'", 
                                                            "'ENCRYPTION_KEY_ADMIN'", 
                                                            "'FIREWALL_ADMIN'", 
                                                            "'FIREWALL_USER'", 
                                                            "'GROUP_REPLICATION_ADMIN'", 
                                                            "'INNODB_REDO_LOG_ARCHIVE'", 
                                                            "'NDB_STORED_USER'", 
                                                            "'PERSIST_RO_VARIABLES_ADMIN'", 
                                                            "'REPLICATION_APPLIER'", 
                                                            "'REPLICATION_SLAVE_ADMIN'", 
                                                            "'RESOURCE_GROUP_ADMIN'", 
                                                            "'RESOURCE_GROUP_USER'", 
                                                            "'ROLE_ADMIN'", 
                                                            null, "'SET_USER_ID'", 
                                                            "'SHOW_ROUTINE'", 
                                                            "'SYSTEM_VARIABLES_ADMIN'", 
                                                            "'TABLE_ENCRYPTION_ADMIN'", 
                                                            "'VERSION_TOKEN_ADMIN'", 
                                                            "'XA_RECOVER_ADMIN'", 
                                                            "'ARMSCII8'", 
                                                            "'ASCII'", "'BIG5'", 
                                                            "'CP1250'", 
                                                            "'CP1251'", 
                                                            "'CP1256'", 
                                                            "'CP1257'", 
                                                            "'CP850'", "'CP852'", 
                                                            "'CP866'", "'CP932'", 
                                                            "'DEC8'", "'EUCJPMS'", 
                                                            "'EUCKR'", "'GB2312'", 
                                                            "'GBK'", "'GEOSTD8'", 
                                                            "'GREEK'", "'HEBREW'", 
                                                            "'HP8'", "'KEYBCS2'", 
                                                            "'KOI8R'", "'KOI8U'", 
                                                            "'LATIN1'", 
                                                            "'LATIN2'", 
                                                            "'LATIN5'", 
                                                            "'LATIN7'", 
                                                            "'MACCE'", "'MACROMAN'", 
                                                            "'SJIS'", "'SWE7'", 
                                                            "'TIS620'", 
                                                            "'UCS2'", "'UJIS'", 
                                                            "'UTF16'", "'UTF16LE'", 
                                                            "'UTF32'", "'UTF8'", 
                                                            "'UTF8MB3'", 
                                                            "'UTF8MB4'", 
                                                            "'ARCHIVE'", 
                                                            "'BLACKHOLE'", 
                                                            "'CSV'", "'FEDERATED'", 
                                                            "'INNODB'", 
                                                            "'MEMORY'", 
                                                            "'MRG_MYISAM'", 
                                                            "'MYISAM'", 
                                                            "'NDB'", "'NDBCLUSTER'", 
                                                            "'PERFORMANCE_SCHEMA'", 
                                                            "'TOKUDB'", 
                                                            "'REPEATABLE'", 
                                                            "'COMMITTED'", 
                                                            "'UNCOMMITTED'", 
                                                            "'SERIALIZABLE'", 
                                                            "'GEOMETRYCOLLECTION'", 
                                                            "'GEOMCOLLECTION'", 
                                                            "'GEOMETRY'", 
                                                            "'LINESTRING'", 
                                                            "'MULTILINESTRING'", 
                                                            "'MULTIPOINT'", 
                                                            "'MULTIPOLYGON'", 
                                                            "'POINT'", "'POLYGON'", 
                                                            "'ABS'", "'ACOS'", 
                                                            "'ADDDATE'", 
                                                            "'ADDTIME'", 
                                                            "'AES_DECRYPT'", 
                                                            "'AES_ENCRYPT'", 
                                                            "'AREA'", "'ASBINARY'", 
                                                            "'ASIN'", "'ASTEXT'", 
                                                            "'ASWKB'", "'ASWKT'", 
                                                            "'ASYMMETRIC_DECRYPT'", 
                                                            "'ASYMMETRIC_DERIVE'", 
                                                            "'ASYMMETRIC_ENCRYPT'", 
                                                            "'ASYMMETRIC_SIGN'", 
                                                            "'ASYMMETRIC_VERIFY'", 
                                                            "'ATAN'", "'ATAN2'", 
                                                            "'BENCHMARK'", 
                                                            "'BIN'", "'BIT_COUNT'", 
                                                            "'BIT_LENGTH'", 
                                                            "'BUFFER'", 
                                                            "'CATALOG_NAME'", 
                                                            "'CEIL'", "'CEILING'", 
                                                            "'CENTROID'", 
                                                            "'CHARACTER_LENGTH'", 
                                                            "'CHARSET'", 
                                                            "'CHAR_LENGTH'", 
                                                            "'COERCIBILITY'", 
                                                            "'COLLATION'", 
                                                            "'COMPRESS'", 
                                                            "'CONCAT'", 
                                                            "'CONCAT_WS'", 
                                                            "'CONNECTION_ID'", 
                                                            "'CONV'", "'CONVERT_TZ'", 
                                                            "'COS'", "'COT'", 
                                                            "'CRC32'", "'CREATE_ASYMMETRIC_PRIV_KEY'", 
                                                            "'CREATE_ASYMMETRIC_PUB_KEY'", 
                                                            "'CREATE_DH_PARAMETERS'", 
                                                            "'CREATE_DIGEST'", 
                                                            "'CROSSES'", 
                                                            "'DATEDIFF'", 
                                                            "'DATE_FORMAT'", 
                                                            "'DAYNAME'", 
                                                            "'DAYOFMONTH'", 
                                                            "'DAYOFWEEK'", 
                                                            "'DAYOFYEAR'", 
                                                            "'DECODE'", 
                                                            "'DEGREES'", 
                                                            "'DES_DECRYPT'", 
                                                            "'DES_ENCRYPT'", 
                                                            "'DIMENSION'", 
                                                            "'DISJOINT'", 
                                                            "'ELT'", "'ENCODE'", 
                                                            "'ENCRYPT'", 
                                                            "'ENDPOINT'", 
                                                            "'ENVELOPE'", 
                                                            "'EQUALS'", 
                                                            "'EXP'", "'EXPORT_SET'", 
                                                            "'EXTERIORRING'", 
                                                            "'EXTRACTVALUE'", 
                                                            "'FIELD'", "'FIND_IN_SET'", 
                                                            "'FLOOR'", "'FORMAT'", 
                                                            "'FOUND_ROWS'", 
                                                            "'FROM_BASE64'", 
                                                            "'FROM_DAYS'", 
                                                            "'FROM_UNIXTIME'", 
                                                            "'GEOMCOLLFROMTEXT'", 
                                                            "'GEOMCOLLFROMWKB'", 
                                                            "'GEOMETRYCOLLECTIONFROMTEXT'", 
                                                            "'GEOMETRYCOLLECTIONFROMWKB'", 
                                                            "'GEOMETRYFROMTEXT'", 
                                                            "'GEOMETRYFROMWKB'", 
                                                            "'GEOMETRYN'", 
                                                            "'GEOMETRYTYPE'", 
                                                            "'GEOMFROMTEXT'", 
                                                            "'GEOMFROMWKB'", 
                                                            "'GET_FORMAT'", 
                                                            "'GET_LOCK'", 
                                                            "'GLENGTH'", 
                                                            "'GREATEST'", 
                                                            "'GTID_SUBSET'", 
                                                            "'GTID_SUBTRACT'", 
                                                            "'HEX'", "'IFNULL'", 
                                                            "'INET6_ATON'", 
                                                            "'INET6_NTOA'", 
                                                            "'INET_ATON'", 
                                                            "'INET_NTOA'", 
                                                            "'INSTR'", "'INTERIORRINGN'", 
                                                            "'INTERSECTS'", 
                                                            "'ISCLOSED'", 
                                                            "'ISEMPTY'", 
                                                            "'ISNULL'", 
                                                            "'ISSIMPLE'", 
                                                            "'IS_FREE_LOCK'", 
                                                            "'IS_IPV4'", 
                                                            "'IS_IPV4_COMPAT'", 
                                                            "'IS_IPV4_MAPPED'", 
                                                            "'IS_IPV6'", 
                                                            "'IS_USED_LOCK'", 
                                                            "'LAST_INSERT_ID'", 
                                                            "'LCASE'", "'LEAST'", 
                                                            "'LENGTH'", 
                                                            "'LINEFROMTEXT'", 
                                                            "'LINEFROMWKB'", 
                                                            "'LINESTRINGFROMTEXT'", 
                                                            "'LINESTRINGFROMWKB'", 
                                                            "'LN'", "'LOAD_FILE'", 
                                                            "'LOCATE'", 
                                                            "'LOG'", "'LOG10'", 
                                                            "'LOG2'", "'LOWER'", 
                                                            "'LPAD'", "'LTRIM'", 
                                                            "'MAKEDATE'", 
                                                            "'MAKETIME'", 
                                                            "'MAKE_SET'", 
                                                            "'MASTER_POS_WAIT'", 
                                                            "'MBRCONTAINS'", 
                                                            "'MBRDISJOINT'", 
                                                            "'MBREQUAL'", 
                                                            "'MBRINTERSECTS'", 
                                                            "'MBROVERLAPS'", 
                                                            "'MBRTOUCHES'", 
                                                            "'MBRWITHIN'", 
                                                            "'MD5'", "'MLINEFROMTEXT'", 
                                                            "'MLINEFROMWKB'", 
                                                            "'MONTHNAME'", 
                                                            "'MPOINTFROMTEXT'", 
                                                            "'MPOINTFROMWKB'", 
                                                            "'MPOLYFROMTEXT'", 
                                                            "'MPOLYFROMWKB'", 
                                                            "'MULTILINESTRINGFROMTEXT'", 
                                                            "'MULTILINESTRINGFROMWKB'", 
                                                            "'MULTIPOINTFROMTEXT'", 
                                                            "'MULTIPOINTFROMWKB'", 
                                                            "'MULTIPOLYGONFROMTEXT'", 
                                                            "'MULTIPOLYGONFROMWKB'", 
                                                            "'NAME_CONST'", 
                                                            "'NULLIF'", 
                                                            "'NUMGEOMETRIES'", 
                                                            "'NUMINTERIORRINGS'", 
                                                            "'NUMPOINTS'", 
                                                            "'OCT'", "'OCTET_LENGTH'", 
                                                            "'ORD'", "'OVERLAPS'", 
                                                            "'PERIOD_ADD'", 
                                                            "'PERIOD_DIFF'", 
                                                            "'PI'", "'POINTFROMTEXT'", 
                                                            "'POINTFROMWKB'", 
                                                            "'POINTN'", 
                                                            "'POLYFROMTEXT'", 
                                                            "'POLYFROMWKB'", 
                                                            "'POLYGONFROMTEXT'", 
                                                            "'POLYGONFROMWKB'", 
                                                            "'POW'", "'POWER'", 
                                                            "'QUOTE'", "'RADIANS'", 
                                                            "'RAND'", "'RANDOM_BYTES'", 
                                                            "'RELEASE_LOCK'", 
                                                            "'REVERSE'", 
                                                            "'ROUND'", "'ROW_COUNT'", 
                                                            "'RPAD'", "'RTRIM'", 
                                                            "'SEC_TO_TIME'", 
                                                            "'SESSION_USER'", 
                                                            "'SHA'", "'SHA1'", 
                                                            "'SHA2'", "'SCHEMA_NAME'", 
                                                            "'SIGN'", "'SIN'", 
                                                            "'SLEEP'", "'SOUNDEX'", 
                                                            "'SQL_THREAD_WAIT_AFTER_GTIDS'", 
                                                            "'SQRT'", "'SRID'", 
                                                            "'STARTPOINT'", 
                                                            "'STRCMP'", 
                                                            "'STR_TO_DATE'", 
                                                            "'ST_AREA'", 
                                                            "'ST_ASBINARY'", 
                                                            "'ST_ASTEXT'", 
                                                            "'ST_ASWKB'", 
                                                            "'ST_ASWKT'", 
                                                            "'ST_BUFFER'", 
                                                            "'ST_CENTROID'", 
                                                            "'ST_CONTAINS'", 
                                                            "'ST_CROSSES'", 
                                                            "'ST_DIFFERENCE'", 
                                                            "'ST_DIMENSION'", 
                                                            "'ST_DISJOINT'", 
                                                            "'ST_DISTANCE'", 
                                                            "'ST_ENDPOINT'", 
                                                            "'ST_ENVELOPE'", 
                                                            "'ST_EQUALS'", 
                                                            "'ST_EXTERIORRING'", 
                                                            "'ST_GEOMCOLLFROMTEXT'", 
                                                            "'ST_GEOMCOLLFROMTXT'", 
                                                            "'ST_GEOMCOLLFROMWKB'", 
                                                            "'ST_GEOMETRYCOLLECTIONFROMTEXT'", 
                                                            "'ST_GEOMETRYCOLLECTIONFROMWKB'", 
                                                            "'ST_GEOMETRYFROMTEXT'", 
                                                            "'ST_GEOMETRYFROMWKB'", 
                                                            "'ST_GEOMETRYN'", 
                                                            "'ST_GEOMETRYTYPE'", 
                                                            "'ST_GEOMFROMTEXT'", 
                                                            "'ST_GEOMFROMWKB'", 
                                                            "'ST_INTERIORRINGN'", 
                                                            "'ST_INTERSECTION'", 
                                                            "'ST_INTERSECTS'", 
                                                            "'ST_ISCLOSED'", 
                                                            "'ST_ISEMPTY'", 
                                                            "'ST_ISSIMPLE'", 
                                                            "'ST_LINEFROMTEXT'", 
                                                            "'ST_LINEFROMWKB'", 
                                                            "'ST_LINESTRINGFROMTEXT'", 
                                                            "'ST_LINESTRINGFROMWKB'", 
                                                            "'ST_NUMGEOMETRIES'", 
                                                            "'ST_NUMINTERIORRING'", 
                                                            "'ST_NUMINTERIORRINGS'", 
                                                            "'ST_NUMPOINTS'", 
                                                            "'ST_OVERLAPS'", 
                                                            "'ST_POINTFROMTEXT'", 
                                                            "'ST_POINTFROMWKB'", 
                                                            "'ST_POINTN'", 
                                                            "'ST_POLYFROMTEXT'", 
                                                            "'ST_POLYFROMWKB'", 
                                                            "'ST_POLYGONFROMTEXT'", 
                                                            "'ST_POLYGONFROMWKB'", 
                                                            "'ST_SRID'", 
                                                            "'ST_STARTPOINT'", 
                                                            "'ST_SYMDIFFERENCE'", 
                                                            "'ST_TOUCHES'", 
                                                            "'ST_UNION'", 
                                                            "'ST_WITHIN'", 
                                                            "'ST_X'", "'ST_Y'", 
                                                            "'SUBDATE'", 
                                                            "'SUBSTRING_INDEX'", 
                                                            "'SUBTIME'", 
                                                            "'SYSTEM_USER'", 
                                                            "'TAN'", "'TIMEDIFF'", 
                                                            "'TIMESTAMPADD'", 
                                                            "'TIMESTAMPDIFF'", 
                                                            "'TIME_FORMAT'", 
                                                            "'TIME_TO_SEC'", 
                                                            "'TOUCHES'", 
                                                            "'TO_BASE64'", 
                                                            "'TO_DAYS'", 
                                                            "'TO_SECONDS'", 
                                                            "'UCASE'", "'UNCOMPRESS'", 
                                                            "'UNCOMPRESSED_LENGTH'", 
                                                            "'UNHEX'", "'UNIX_TIMESTAMP'", 
                                                            "'UPDATEXML'", 
                                                            "'UPPER'", "'UUID'", 
                                                            "'UUID_SHORT'", 
                                                            "'VALIDATE_PASSWORD_STRENGTH'", 
                                                            "'VERSION'", 
                                                            "'WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS'", 
                                                            "'WEEKDAY'", 
                                                            "'WEEKOFYEAR'", 
                                                            "'WEIGHT_STRING'", 
                                                            "'WITHIN'", 
                                                            "'YEARWEEK'", 
                                                            "'Y'", "'X'", 
                                                            "':='", "'+='", 
                                                            "'-='", "'*='", 
                                                            "'/='", "'%='", 
                                                            "'&='", "'^='", 
                                                            "'|='", "'*'", 
                                                            "'/'", "'%'", 
                                                            "'+'", "'--'", 
                                                            "'-'", "'DIV'", 
                                                            "'MOD'", "'='", 
                                                            "'>'", "'<'", 
                                                            "'!'", "'~'", 
                                                            "'|'", "'&'", 
                                                            "'^'", "'.'", 
                                                            "'('", "')'", 
                                                            "','", "';'", 
                                                            "'@'", "'0'", 
                                                            "'1'", "'2'", 
                                                            "'''", "'\"'", 
                                                            "'`'", "':'" ];
	public static readonly symbolicNames: (string | null)[] = [ null, "SPACE", 
                                                             "SPEC_MYSQL_COMMENT", 
                                                             "COMMENT_INPUT", 
                                                             "LINE_COMMENT", 
                                                             "ADD", "ALL", 
                                                             "ALTER", "ALWAYS", 
                                                             "ANALYZE", 
                                                             "AND", "AS", 
                                                             "ASC", "BEFORE", 
                                                             "BETWEEN", 
                                                             "BOTH", "BY", 
                                                             "CALL", "CASCADE", 
                                                             "CASE", "CAST", 
                                                             "CHANGE", "CHARACTER", 
                                                             "CHECK", "COLLATE", 
                                                             "COLUMN", "CONDITION", 
                                                             "CONSTRAINT", 
                                                             "CONTINUE", 
                                                             "CONVERT", 
                                                             "CREATE", "CROSS", 
                                                             "CURRENT", 
                                                             "CURRENT_USER", 
                                                             "CURSOR", "DATABASE", 
                                                             "DATABASES", 
                                                             "DECLARE", 
                                                             "DEFAULT", 
                                                             "DELAYED", 
                                                             "DELETE", "DESC", 
                                                             "DESCRIBE", 
                                                             "DETERMINISTIC", 
                                                             "DIAGNOSTICS", 
                                                             "DISTINCT", 
                                                             "DISTINCTROW", 
                                                             "DROP", "EACH", 
                                                             "ELSE", "ELSEIF", 
                                                             "ENCLOSED", 
                                                             "ESCAPED", 
                                                             "EXISTS", "EXIT", 
                                                             "EXPLAIN", 
                                                             "FALSE", "FETCH", 
                                                             "FOR", "FORCE", 
                                                             "FOREIGN", 
                                                             "FROM", "FULLTEXT", 
                                                             "GENERATED", 
                                                             "GET", "GRANT", 
                                                             "GROUP", "HAVING", 
                                                             "HIGH_PRIORITY", 
                                                             "IF", "IGNORE", 
                                                             "IN", "INDEX", 
                                                             "INFILE", "INNER", 
                                                             "INOUT", "INSERT", 
                                                             "INTERVAL", 
                                                             "INTO", "IS", 
                                                             "ITERATE", 
                                                             "JOIN", "KEY", 
                                                             "KEYS", "KILL", 
                                                             "LEADING", 
                                                             "LEAVE", "LEFT", 
                                                             "LIKE", "LIMIT", 
                                                             "LINEAR", "LINES", 
                                                             "LOAD", "LOCK", 
                                                             "LOOP", "LOW_PRIORITY", 
                                                             "MASTER_BIND", 
                                                             "MASTER_SSL_VERIFY_SERVER_CERT", 
                                                             "MATCH", "MAXVALUE", 
                                                             "MODIFIES", 
                                                             "NATURAL", 
                                                             "NOT", "NO_WRITE_TO_BINLOG", 
                                                             "NULL_LITERAL", 
                                                             "NUMBER", "ON", 
                                                             "OPTIMIZE", 
                                                             "OPTION", "OPTIONALLY", 
                                                             "OR", "ORDER", 
                                                             "OUT", "OUTER", 
                                                             "OUTFILE", 
                                                             "PARTITION", 
                                                             "PRIMARY", 
                                                             "PROCEDURE", 
                                                             "PURGE", "RANGE", 
                                                             "READ", "READS", 
                                                             "REFERENCES", 
                                                             "REGEXP", "RELEASE", 
                                                             "RENAME", "REPEAT", 
                                                             "REPLACE", 
                                                             "REQUIRE", 
                                                             "RESIGNAL", 
                                                             "RESTRICT", 
                                                             "RETURN", "REVOKE", 
                                                             "RIGHT", "RLIKE", 
                                                             "SCHEMA", "SCHEMAS", 
                                                             "SELECT", "SET", 
                                                             "SEPARATOR", 
                                                             "SHOW", "SIGNAL", 
                                                             "SPATIAL", 
                                                             "SQL", "SQLEXCEPTION", 
                                                             "SQLSTATE", 
                                                             "SQLWARNING", 
                                                             "SQL_BIG_RESULT", 
                                                             "SQL_CALC_FOUND_ROWS", 
                                                             "SQL_SMALL_RESULT", 
                                                             "SSL", "STACKED", 
                                                             "STARTING", 
                                                             "STRAIGHT_JOIN", 
                                                             "TABLE", "TERMINATED", 
                                                             "THEN", "TO", 
                                                             "TRAILING", 
                                                             "TRIGGER", 
                                                             "TRUE", "UNDO", 
                                                             "UNION", "UNIQUE", 
                                                             "UNLOCK", "UNSIGNED", 
                                                             "UPDATE", "USAGE", 
                                                             "USE", "USING", 
                                                             "VALUES", "WHEN", 
                                                             "WHERE", "WHILE", 
                                                             "WITH", "WRITE", 
                                                             "XOR", "ZEROFILL", 
                                                             "TINYINT", 
                                                             "SMALLINT", 
                                                             "MEDIUMINT", 
                                                             "MIDDLEINT", 
                                                             "INT", "INT1", 
                                                             "INT2", "INT3", 
                                                             "INT4", "INT8", 
                                                             "INTEGER", 
                                                             "BIGINT", "REAL", 
                                                             "DOUBLE", "PRECISION", 
                                                             "FLOAT", "FLOAT4", 
                                                             "FLOAT8", "DECIMAL", 
                                                             "DEC", "NUMERIC", 
                                                             "DATE", "TIME", 
                                                             "TIMESTAMP", 
                                                             "DATETIME", 
                                                             "YEAR", "CHAR", 
                                                             "VARCHAR", 
                                                             "NVARCHAR", 
                                                             "NATIONAL", 
                                                             "BINARY", "VARBINARY", 
                                                             "TINYBLOB", 
                                                             "BLOB", "MEDIUMBLOB", 
                                                             "LONG", "LONGBLOB", 
                                                             "TINYTEXT", 
                                                             "TEXT", "MEDIUMTEXT", 
                                                             "LONGTEXT", 
                                                             "ENUM", "VARYING", 
                                                             "SERIAL", "YEAR_MONTH", 
                                                             "DAY_HOUR", 
                                                             "DAY_MINUTE", 
                                                             "DAY_SECOND", 
                                                             "HOUR_MINUTE", 
                                                             "HOUR_SECOND", 
                                                             "MINUTE_SECOND", 
                                                             "SECOND_MICROSECOND", 
                                                             "MINUTE_MICROSECOND", 
                                                             "HOUR_MICROSECOND", 
                                                             "DAY_MICROSECOND", 
                                                             "JSON_VALID", 
                                                             "JSON_SCHEMA_VALID", 
                                                             "AVG", "BIT_AND", 
                                                             "BIT_OR", "BIT_XOR", 
                                                             "COUNT", "GROUP_CONCAT", 
                                                             "MAX", "MIN", 
                                                             "STD", "STDDEV", 
                                                             "STDDEV_POP", 
                                                             "STDDEV_SAMP", 
                                                             "SUM", "VAR_POP", 
                                                             "VAR_SAMP", 
                                                             "VARIANCE", 
                                                             "CURRENT_DATE", 
                                                             "CURRENT_TIME", 
                                                             "CURRENT_TIMESTAMP", 
                                                             "LOCALTIME", 
                                                             "CURDATE", 
                                                             "CURTIME", 
                                                             "DATE_ADD", 
                                                             "DATE_SUB", 
                                                             "EXTRACT", 
                                                             "LOCALTIMESTAMP", 
                                                             "NOW", "POSITION", 
                                                             "SUBSTR", "SUBSTRING", 
                                                             "SYSDATE", 
                                                             "TRIM", "UTC_DATE", 
                                                             "UTC_TIME", 
                                                             "UTC_TIMESTAMP", 
                                                             "ACCOUNT", 
                                                             "ACTION", "AFTER", 
                                                             "AGGREGATE", 
                                                             "ALGORITHM", 
                                                             "ANY", "AT", 
                                                             "AUTHORS", 
                                                             "AUTOCOMMIT", 
                                                             "AUTOEXTEND_SIZE", 
                                                             "AUTO_INCREMENT", 
                                                             "AVG_ROW_LENGTH", 
                                                             "BEGIN", "BINLOG", 
                                                             "BIT", "BLOCK", 
                                                             "BOOL", "BOOLEAN", 
                                                             "BTREE", "CACHE", 
                                                             "CASCADED", 
                                                             "CHAIN", "CHANGED", 
                                                             "CHANNEL", 
                                                             "CHECKSUM", 
                                                             "PAGE_CHECKSUM", 
                                                             "CIPHER", "CLASS_ORIGIN", 
                                                             "CLIENT", "CLOSE", 
                                                             "COALESCE", 
                                                             "CODE", "COLUMNS", 
                                                             "COLUMN_FORMAT", 
                                                             "COLUMN_NAME", 
                                                             "COMMENT", 
                                                             "COMMIT", "COMPACT", 
                                                             "COMPLETION", 
                                                             "COMPRESSED", 
                                                             "COMPRESSION", 
                                                             "CONCURRENT", 
                                                             "CONNECTION", 
                                                             "CONSISTENT", 
                                                             "CONSTRAINT_CATALOG", 
                                                             "CONSTRAINT_SCHEMA", 
                                                             "CONSTRAINT_NAME", 
                                                             "CONTAINS", 
                                                             "CONTEXT", 
                                                             "CONTRIBUTORS", 
                                                             "COPY", "CPU", 
                                                             "CURSOR_NAME", 
                                                             "DATA", "DATAFILE", 
                                                             "DEALLOCATE", 
                                                             "DEFAULT_AUTH", 
                                                             "DEFINER", 
                                                             "DELAY_KEY_WRITE", 
                                                             "DES_KEY_FILE", 
                                                             "DIRECTORY", 
                                                             "DISABLE", 
                                                             "DISCARD", 
                                                             "DISK", "DO", 
                                                             "DUMPFILE", 
                                                             "DUPLICATE", 
                                                             "DYNAMIC", 
                                                             "ENABLE", "ENCRYPTION", 
                                                             "END", "ENDS", 
                                                             "ENGINE", "ENGINES", 
                                                             "ERROR", "ERRORS", 
                                                             "ESCAPE", "EVEN", 
                                                             "EVENT", "EVENTS", 
                                                             "EVERY", "EXCHANGE", 
                                                             "EXCLUSIVE", 
                                                             "EXPIRE", "EXPORT", 
                                                             "EXTENDED", 
                                                             "EXTENT_SIZE", 
                                                             "FAST", "FAULTS", 
                                                             "FIELDS", "FILE_BLOCK_SIZE", 
                                                             "FILTER", "FIRST", 
                                                             "FIXED", "FLUSH", 
                                                             "FOLLOWS", 
                                                             "FOUND", "FULL", 
                                                             "FUNCTION", 
                                                             "GENERAL", 
                                                             "GLOBAL", "GRANTS", 
                                                             "GROUP_REPLICATION", 
                                                             "HANDLER", 
                                                             "HASH", "HELP", 
                                                             "HOST", "HOSTS", 
                                                             "IDENTIFIED", 
                                                             "IGNORE_SERVER_IDS", 
                                                             "IMPORT", "INDEXES", 
                                                             "INITIAL_SIZE", 
                                                             "INPLACE", 
                                                             "INSERT_METHOD", 
                                                             "INSTALL", 
                                                             "INSTANCE", 
                                                             "INVISIBLE", 
                                                             "INVOKER", 
                                                             "IO", "IO_THREAD", 
                                                             "IPC", "ISOLATION", 
                                                             "ISSUER", "JSON", 
                                                             "KEY_BLOCK_SIZE", 
                                                             "LANGUAGE", 
                                                             "LAST", "LEAVES", 
                                                             "LESS", "LEVEL", 
                                                             "LIST", "LOCAL", 
                                                             "LOGFILE", 
                                                             "LOGS", "MASTER", 
                                                             "MASTER_AUTO_POSITION", 
                                                             "MASTER_CONNECT_RETRY", 
                                                             "MASTER_DELAY", 
                                                             "MASTER_HEARTBEAT_PERIOD", 
                                                             "MASTER_HOST", 
                                                             "MASTER_LOG_FILE", 
                                                             "MASTER_LOG_POS", 
                                                             "MASTER_PASSWORD", 
                                                             "MASTER_PORT", 
                                                             "MASTER_RETRY_COUNT", 
                                                             "MASTER_SSL", 
                                                             "MASTER_SSL_CA", 
                                                             "MASTER_SSL_CAPATH", 
                                                             "MASTER_SSL_CERT", 
                                                             "MASTER_SSL_CIPHER", 
                                                             "MASTER_SSL_CRL", 
                                                             "MASTER_SSL_CRLPATH", 
                                                             "MASTER_SSL_KEY", 
                                                             "MASTER_TLS_VERSION", 
                                                             "MASTER_USER", 
                                                             "MAX_CONNECTIONS_PER_HOUR", 
                                                             "MAX_QUERIES_PER_HOUR", 
                                                             "MAX_ROWS", 
                                                             "MAX_SIZE", 
                                                             "MAX_UPDATES_PER_HOUR", 
                                                             "MAX_USER_CONNECTIONS", 
                                                             "MEDIUM", "MERGE", 
                                                             "MESSAGE_TEXT", 
                                                             "MID", "MIGRATE", 
                                                             "MIN_ROWS", 
                                                             "MODE", "MODIFY", 
                                                             "MUTEX", "MYSQL", 
                                                             "MYSQL_ERRNO", 
                                                             "NAME", "NAMES", 
                                                             "NCHAR", "NEVER", 
                                                             "NEXT", "NO", 
                                                             "NODEGROUP", 
                                                             "NONE", "OFFLINE", 
                                                             "OFFSET", "OJ", 
                                                             "OLD_PASSWORD", 
                                                             "ONE", "ONLINE", 
                                                             "ONLY", "OPEN", 
                                                             "OPTIMIZER_COSTS", 
                                                             "OPTIONS", 
                                                             "OWNER", "PACK_KEYS", 
                                                             "PAGE", "PARSER", 
                                                             "PARTIAL", 
                                                             "PARTITIONING", 
                                                             "PARTITIONS", 
                                                             "PASSWORD", 
                                                             "PHASE", "PLUGIN", 
                                                             "PLUGIN_DIR", 
                                                             "PLUGINS", 
                                                             "PORT", "PRECEDES", 
                                                             "PREPARE", 
                                                             "PRESERVE", 
                                                             "PREV", "PROCESSLIST", 
                                                             "PROFILE", 
                                                             "PROFILES", 
                                                             "PROXY", "QUERY", 
                                                             "QUICK", "REBUILD", 
                                                             "RECOVER", 
                                                             "REDO_BUFFER_SIZE", 
                                                             "REDUNDANT", 
                                                             "RELAY", "RELAY_LOG_FILE", 
                                                             "RELAY_LOG_POS", 
                                                             "RELAYLOG", 
                                                             "REMOVE", "REORGANIZE", 
                                                             "REPAIR", "REPLICATE_DO_DB", 
                                                             "REPLICATE_DO_TABLE", 
                                                             "REPLICATE_IGNORE_DB", 
                                                             "REPLICATE_IGNORE_TABLE", 
                                                             "REPLICATE_REWRITE_DB", 
                                                             "REPLICATE_WILD_DO_TABLE", 
                                                             "REPLICATE_WILD_IGNORE_TABLE", 
                                                             "REPLICATION", 
                                                             "RESET", "RESUME", 
                                                             "RETURNED_SQLSTATE", 
                                                             "RETURNS", 
                                                             "ROLE", "ROLLBACK", 
                                                             "ROLLUP", "ROTATE", 
                                                             "ROW", "ROWS", 
                                                             "ROW_FORMAT", 
                                                             "SAVEPOINT", 
                                                             "SCHEDULE", 
                                                             "SECURITY", 
                                                             "SERVER", "SESSION", 
                                                             "SHARE", "SHARED", 
                                                             "SIGNED", "SIMPLE", 
                                                             "SLAVE", "SLOW", 
                                                             "SNAPSHOT", 
                                                             "SOCKET", "SOME", 
                                                             "SONAME", "SOUNDS", 
                                                             "SOURCE", "SQL_AFTER_GTIDS", 
                                                             "SQL_AFTER_MTS_GAPS", 
                                                             "SQL_BEFORE_GTIDS", 
                                                             "SQL_BUFFER_RESULT", 
                                                             "SQL_CACHE", 
                                                             "SQL_NO_CACHE", 
                                                             "SQL_THREAD", 
                                                             "START", "STARTS", 
                                                             "STATS_AUTO_RECALC", 
                                                             "STATS_PERSISTENT", 
                                                             "STATS_SAMPLE_PAGES", 
                                                             "STATUS", "STOP", 
                                                             "STORAGE", 
                                                             "STORED", "STRING", 
                                                             "SUBCLASS_ORIGIN", 
                                                             "SUBJECT", 
                                                             "SUBPARTITION", 
                                                             "SUBPARTITIONS", 
                                                             "SUSPEND", 
                                                             "SWAPS", "SWITCHES", 
                                                             "TABLE_NAME", 
                                                             "TABLESPACE", 
                                                             "TEMPORARY", 
                                                             "TEMPTABLE", 
                                                             "THAN", "TRADITIONAL", 
                                                             "TRANSACTION", 
                                                             "TRANSACTIONAL", 
                                                             "TRIGGERS", 
                                                             "TRUNCATE", 
                                                             "UNDEFINED", 
                                                             "UNDOFILE", 
                                                             "UNDO_BUFFER_SIZE", 
                                                             "UNINSTALL", 
                                                             "UNKNOWN", 
                                                             "UNTIL", "UPGRADE", 
                                                             "USER", "USE_FRM", 
                                                             "USER_RESOURCES", 
                                                             "VALIDATION", 
                                                             "VALUE", "VARIABLES", 
                                                             "VIEW", "VIRTUAL", 
                                                             "VISIBLE", 
                                                             "WAIT", "WARNINGS", 
                                                             "WITHOUT", 
                                                             "WORK", "WRAPPER", 
                                                             "X509", "XA", 
                                                             "XML", "EUR", 
                                                             "USA", "JIS", 
                                                             "ISO", "INTERNAL", 
                                                             "QUARTER", 
                                                             "MONTH", "DAY", 
                                                             "HOUR", "MINUTE", 
                                                             "WEEK", "SECOND", 
                                                             "MICROSECOND", 
                                                             "TABLES", "ROUTINE", 
                                                             "EXECUTE", 
                                                             "FILE", "PROCESS", 
                                                             "RELOAD", "SHUTDOWN", 
                                                             "SUPER", "PRIVILEGES", 
                                                             "APPLICATION_PASSWORD_ADMIN", 
                                                             "AUDIT_ADMIN", 
                                                             "BACKUP_ADMIN", 
                                                             "BINLOG_ADMIN", 
                                                             "BINLOG_ENCRYPTION_ADMIN", 
                                                             "CLONE_ADMIN", 
                                                             "CONNECTION_ADMIN", 
                                                             "ENCRYPTION_KEY_ADMIN", 
                                                             "FIREWALL_ADMIN", 
                                                             "FIREWALL_USER", 
                                                             "GROUP_REPLICATION_ADMIN", 
                                                             "INNODB_REDO_LOG_ARCHIVE", 
                                                             "NDB_STORED_USER", 
                                                             "PERSIST_RO_VARIABLES_ADMIN", 
                                                             "REPLICATION_APPLIER", 
                                                             "REPLICATION_SLAVE_ADMIN", 
                                                             "RESOURCE_GROUP_ADMIN", 
                                                             "RESOURCE_GROUP_USER", 
                                                             "ROLE_ADMIN", 
                                                             "SESSION_VARIABLES_ADMIN", 
                                                             "SET_USER_ID", 
                                                             "SHOW_ROUTINE", 
                                                             "SYSTEM_VARIABLES_ADMIN", 
                                                             "TABLE_ENCRYPTION_ADMIN", 
                                                             "VERSION_TOKEN_ADMIN", 
                                                             "XA_RECOVER_ADMIN", 
                                                             "ARMSCII8", 
                                                             "ASCII", "BIG5", 
                                                             "CP1250", "CP1251", 
                                                             "CP1256", "CP1257", 
                                                             "CP850", "CP852", 
                                                             "CP866", "CP932", 
                                                             "DEC8", "EUCJPMS", 
                                                             "EUCKR", "GB2312", 
                                                             "GBK", "GEOSTD8", 
                                                             "GREEK", "HEBREW", 
                                                             "HP8", "KEYBCS2", 
                                                             "KOI8R", "KOI8U", 
                                                             "LATIN1", "LATIN2", 
                                                             "LATIN5", "LATIN7", 
                                                             "MACCE", "MACROMAN", 
                                                             "SJIS", "SWE7", 
                                                             "TIS620", "UCS2", 
                                                             "UJIS", "UTF16", 
                                                             "UTF16LE", 
                                                             "UTF32", "UTF8", 
                                                             "UTF8MB3", 
                                                             "UTF8MB4", 
                                                             "ARCHIVE", 
                                                             "BLACKHOLE", 
                                                             "CSV", "FEDERATED", 
                                                             "INNODB", "MEMORY", 
                                                             "MRG_MYISAM", 
                                                             "MYISAM", "NDB", 
                                                             "NDBCLUSTER", 
                                                             "PERFORMANCE_SCHEMA", 
                                                             "TOKUDB", "REPEATABLE", 
                                                             "COMMITTED", 
                                                             "UNCOMMITTED", 
                                                             "SERIALIZABLE", 
                                                             "GEOMETRYCOLLECTION", 
                                                             "GEOMCOLLECTION", 
                                                             "GEOMETRY", 
                                                             "LINESTRING", 
                                                             "MULTILINESTRING", 
                                                             "MULTIPOINT", 
                                                             "MULTIPOLYGON", 
                                                             "POINT", "POLYGON", 
                                                             "ABS", "ACOS", 
                                                             "ADDDATE", 
                                                             "ADDTIME", 
                                                             "AES_DECRYPT", 
                                                             "AES_ENCRYPT", 
                                                             "AREA", "ASBINARY", 
                                                             "ASIN", "ASTEXT", 
                                                             "ASWKB", "ASWKT", 
                                                             "ASYMMETRIC_DECRYPT", 
                                                             "ASYMMETRIC_DERIVE", 
                                                             "ASYMMETRIC_ENCRYPT", 
                                                             "ASYMMETRIC_SIGN", 
                                                             "ASYMMETRIC_VERIFY", 
                                                             "ATAN", "ATAN2", 
                                                             "BENCHMARK", 
                                                             "BIN", "BIT_COUNT", 
                                                             "BIT_LENGTH", 
                                                             "BUFFER", "CATALOG_NAME", 
                                                             "CEIL", "CEILING", 
                                                             "CENTROID", 
                                                             "CHARACTER_LENGTH", 
                                                             "CHARSET", 
                                                             "CHAR_LENGTH", 
                                                             "COERCIBILITY", 
                                                             "COLLATION", 
                                                             "COMPRESS", 
                                                             "CONCAT", "CONCAT_WS", 
                                                             "CONNECTION_ID", 
                                                             "CONV", "CONVERT_TZ", 
                                                             "COS", "COT", 
                                                             "CRC32", "CREATE_ASYMMETRIC_PRIV_KEY", 
                                                             "CREATE_ASYMMETRIC_PUB_KEY", 
                                                             "CREATE_DH_PARAMETERS", 
                                                             "CREATE_DIGEST", 
                                                             "CROSSES", 
                                                             "DATEDIFF", 
                                                             "DATE_FORMAT", 
                                                             "DAYNAME", 
                                                             "DAYOFMONTH", 
                                                             "DAYOFWEEK", 
                                                             "DAYOFYEAR", 
                                                             "DECODE", "DEGREES", 
                                                             "DES_DECRYPT", 
                                                             "DES_ENCRYPT", 
                                                             "DIMENSION", 
                                                             "DISJOINT", 
                                                             "ELT", "ENCODE", 
                                                             "ENCRYPT", 
                                                             "ENDPOINT", 
                                                             "ENVELOPE", 
                                                             "EQUALS", "EXP", 
                                                             "EXPORT_SET", 
                                                             "EXTERIORRING", 
                                                             "EXTRACTVALUE", 
                                                             "FIELD", "FIND_IN_SET", 
                                                             "FLOOR", "FORMAT", 
                                                             "FOUND_ROWS", 
                                                             "FROM_BASE64", 
                                                             "FROM_DAYS", 
                                                             "FROM_UNIXTIME", 
                                                             "GEOMCOLLFROMTEXT", 
                                                             "GEOMCOLLFROMWKB", 
                                                             "GEOMETRYCOLLECTIONFROMTEXT", 
                                                             "GEOMETRYCOLLECTIONFROMWKB", 
                                                             "GEOMETRYFROMTEXT", 
                                                             "GEOMETRYFROMWKB", 
                                                             "GEOMETRYN", 
                                                             "GEOMETRYTYPE", 
                                                             "GEOMFROMTEXT", 
                                                             "GEOMFROMWKB", 
                                                             "GET_FORMAT", 
                                                             "GET_LOCK", 
                                                             "GLENGTH", 
                                                             "GREATEST", 
                                                             "GTID_SUBSET", 
                                                             "GTID_SUBTRACT", 
                                                             "HEX", "IFNULL", 
                                                             "INET6_ATON", 
                                                             "INET6_NTOA", 
                                                             "INET_ATON", 
                                                             "INET_NTOA", 
                                                             "INSTR", "INTERIORRINGN", 
                                                             "INTERSECTS", 
                                                             "ISCLOSED", 
                                                             "ISEMPTY", 
                                                             "ISNULL", "ISSIMPLE", 
                                                             "IS_FREE_LOCK", 
                                                             "IS_IPV4", 
                                                             "IS_IPV4_COMPAT", 
                                                             "IS_IPV4_MAPPED", 
                                                             "IS_IPV6", 
                                                             "IS_USED_LOCK", 
                                                             "LAST_INSERT_ID", 
                                                             "LCASE", "LEAST", 
                                                             "LENGTH", "LINEFROMTEXT", 
                                                             "LINEFROMWKB", 
                                                             "LINESTRINGFROMTEXT", 
                                                             "LINESTRINGFROMWKB", 
                                                             "LN", "LOAD_FILE", 
                                                             "LOCATE", "LOG", 
                                                             "LOG10", "LOG2", 
                                                             "LOWER", "LPAD", 
                                                             "LTRIM", "MAKEDATE", 
                                                             "MAKETIME", 
                                                             "MAKE_SET", 
                                                             "MASTER_POS_WAIT", 
                                                             "MBRCONTAINS", 
                                                             "MBRDISJOINT", 
                                                             "MBREQUAL", 
                                                             "MBRINTERSECTS", 
                                                             "MBROVERLAPS", 
                                                             "MBRTOUCHES", 
                                                             "MBRWITHIN", 
                                                             "MD5", "MLINEFROMTEXT", 
                                                             "MLINEFROMWKB", 
                                                             "MONTHNAME", 
                                                             "MPOINTFROMTEXT", 
                                                             "MPOINTFROMWKB", 
                                                             "MPOLYFROMTEXT", 
                                                             "MPOLYFROMWKB", 
                                                             "MULTILINESTRINGFROMTEXT", 
                                                             "MULTILINESTRINGFROMWKB", 
                                                             "MULTIPOINTFROMTEXT", 
                                                             "MULTIPOINTFROMWKB", 
                                                             "MULTIPOLYGONFROMTEXT", 
                                                             "MULTIPOLYGONFROMWKB", 
                                                             "NAME_CONST", 
                                                             "NULLIF", "NUMGEOMETRIES", 
                                                             "NUMINTERIORRINGS", 
                                                             "NUMPOINTS", 
                                                             "OCT", "OCTET_LENGTH", 
                                                             "ORD", "OVERLAPS", 
                                                             "PERIOD_ADD", 
                                                             "PERIOD_DIFF", 
                                                             "PI", "POINTFROMTEXT", 
                                                             "POINTFROMWKB", 
                                                             "POINTN", "POLYFROMTEXT", 
                                                             "POLYFROMWKB", 
                                                             "POLYGONFROMTEXT", 
                                                             "POLYGONFROMWKB", 
                                                             "POW", "POWER", 
                                                             "QUOTE", "RADIANS", 
                                                             "RAND", "RANDOM_BYTES", 
                                                             "RELEASE_LOCK", 
                                                             "REVERSE", 
                                                             "ROUND", "ROW_COUNT", 
                                                             "RPAD", "RTRIM", 
                                                             "SEC_TO_TIME", 
                                                             "SESSION_USER", 
                                                             "SHA", "SHA1", 
                                                             "SHA2", "SCHEMA_NAME", 
                                                             "SIGN", "SIN", 
                                                             "SLEEP", "SOUNDEX", 
                                                             "SQL_THREAD_WAIT_AFTER_GTIDS", 
                                                             "SQRT", "SRID", 
                                                             "STARTPOINT", 
                                                             "STRCMP", "STR_TO_DATE", 
                                                             "ST_AREA", 
                                                             "ST_ASBINARY", 
                                                             "ST_ASTEXT", 
                                                             "ST_ASWKB", 
                                                             "ST_ASWKT", 
                                                             "ST_BUFFER", 
                                                             "ST_CENTROID", 
                                                             "ST_CONTAINS", 
                                                             "ST_CROSSES", 
                                                             "ST_DIFFERENCE", 
                                                             "ST_DIMENSION", 
                                                             "ST_DISJOINT", 
                                                             "ST_DISTANCE", 
                                                             "ST_ENDPOINT", 
                                                             "ST_ENVELOPE", 
                                                             "ST_EQUALS", 
                                                             "ST_EXTERIORRING", 
                                                             "ST_GEOMCOLLFROMTEXT", 
                                                             "ST_GEOMCOLLFROMTXT", 
                                                             "ST_GEOMCOLLFROMWKB", 
                                                             "ST_GEOMETRYCOLLECTIONFROMTEXT", 
                                                             "ST_GEOMETRYCOLLECTIONFROMWKB", 
                                                             "ST_GEOMETRYFROMTEXT", 
                                                             "ST_GEOMETRYFROMWKB", 
                                                             "ST_GEOMETRYN", 
                                                             "ST_GEOMETRYTYPE", 
                                                             "ST_GEOMFROMTEXT", 
                                                             "ST_GEOMFROMWKB", 
                                                             "ST_INTERIORRINGN", 
                                                             "ST_INTERSECTION", 
                                                             "ST_INTERSECTS", 
                                                             "ST_ISCLOSED", 
                                                             "ST_ISEMPTY", 
                                                             "ST_ISSIMPLE", 
                                                             "ST_LINEFROMTEXT", 
                                                             "ST_LINEFROMWKB", 
                                                             "ST_LINESTRINGFROMTEXT", 
                                                             "ST_LINESTRINGFROMWKB", 
                                                             "ST_NUMGEOMETRIES", 
                                                             "ST_NUMINTERIORRING", 
                                                             "ST_NUMINTERIORRINGS", 
                                                             "ST_NUMPOINTS", 
                                                             "ST_OVERLAPS", 
                                                             "ST_POINTFROMTEXT", 
                                                             "ST_POINTFROMWKB", 
                                                             "ST_POINTN", 
                                                             "ST_POLYFROMTEXT", 
                                                             "ST_POLYFROMWKB", 
                                                             "ST_POLYGONFROMTEXT", 
                                                             "ST_POLYGONFROMWKB", 
                                                             "ST_SRID", 
                                                             "ST_STARTPOINT", 
                                                             "ST_SYMDIFFERENCE", 
                                                             "ST_TOUCHES", 
                                                             "ST_UNION", 
                                                             "ST_WITHIN", 
                                                             "ST_X", "ST_Y", 
                                                             "SUBDATE", 
                                                             "SUBSTRING_INDEX", 
                                                             "SUBTIME", 
                                                             "SYSTEM_USER", 
                                                             "TAN", "TIMEDIFF", 
                                                             "TIMESTAMPADD", 
                                                             "TIMESTAMPDIFF", 
                                                             "TIME_FORMAT", 
                                                             "TIME_TO_SEC", 
                                                             "TOUCHES", 
                                                             "TO_BASE64", 
                                                             "TO_DAYS", 
                                                             "TO_SECONDS", 
                                                             "UCASE", "UNCOMPRESS", 
                                                             "UNCOMPRESSED_LENGTH", 
                                                             "UNHEX", "UNIX_TIMESTAMP", 
                                                             "UPDATEXML", 
                                                             "UPPER", "UUID", 
                                                             "UUID_SHORT", 
                                                             "VALIDATE_PASSWORD_STRENGTH", 
                                                             "VERSION", 
                                                             "WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS", 
                                                             "WEEKDAY", 
                                                             "WEEKOFYEAR", 
                                                             "WEIGHT_STRING", 
                                                             "WITHIN", "YEARWEEK", 
                                                             "Y_FUNCTION", 
                                                             "X_FUNCTION", 
                                                             "VAR_ASSIGN", 
                                                             "PLUS_ASSIGN", 
                                                             "MINUS_ASSIGN", 
                                                             "MULT_ASSIGN", 
                                                             "DIV_ASSIGN", 
                                                             "MOD_ASSIGN", 
                                                             "AND_ASSIGN", 
                                                             "XOR_ASSIGN", 
                                                             "OR_ASSIGN", 
                                                             "STAR", "DIVIDE", 
                                                             "MODULE", "PLUS", 
                                                             "MINUSMINUS", 
                                                             "MINUS", "DIV", 
                                                             "MOD", "EQUAL_SYMBOL", 
                                                             "GREATER_SYMBOL", 
                                                             "LESS_SYMBOL", 
                                                             "EXCLAMATION_SYMBOL", 
                                                             "BIT_NOT_OP", 
                                                             "BIT_OR_OP", 
                                                             "BIT_AND_OP", 
                                                             "BIT_XOR_OP", 
                                                             "DOT", "LR_BRACKET", 
                                                             "RR_BRACKET", 
                                                             "COMMA", "SEMI", 
                                                             "AT_SIGN", 
                                                             "ZERO_DECIMAL", 
                                                             "ONE_DECIMAL", 
                                                             "TWO_DECIMAL", 
                                                             "SINGLE_QUOTE_SYMB", 
                                                             "DOUBLE_QUOTE_SYMB", 
                                                             "REVERSE_QUOTE_SYMB", 
                                                             "COLON_SYMB", 
                                                             "CHARSET_REVERSE_QOUTE_STRING", 
                                                             "FILESIZE_LITERAL", 
                                                             "START_NATIONAL_STRING_LITERAL", 
                                                             "STRING_LITERAL", 
                                                             "DECIMAL_LITERAL", 
                                                             "HEXADECIMAL_LITERAL", 
                                                             "REAL_LITERAL", 
                                                             "NULL_SPEC_LITERAL", 
                                                             "BIT_STRING", 
                                                             "STRING_CHARSET_NAME", 
                                                             "DOT_ID", "ID", 
                                                             "REVERSE_QUOTE_ID", 
                                                             "STRING_USER_NAME", 
                                                             "LOCAL_ID", 
                                                             "GLOBAL_ID", 
                                                             "ERROR_RECONGNIGION" ];
	// tslint:disable:no-trailing-whitespace
	public static readonly ruleNames: string[] = [
		"program", "statement", "sqlStatements", "sqlStatement", "emptyStatement", 
		"ddlStatement", "dmlStatement", "transactionStatement", "replicationStatement", 
		"preparedStatement", "compoundStatement", "administrationStatement", "utilityStatement", 
		"createDatabase", "createEvent", "createIndex", "createLogfileGroup", 
		"createProcedure", "createFunction", "createServer", "createTable", "createTablespaceInnodb", 
		"createTablespaceNdb", "createTrigger", "createView", "createDatabaseOption", 
		"ownerStatement", "scheduleExpression", "timestampValue", "intervalExpr", 
		"intervalType", "enableType", "indexType", "indexOption", "procedureParameter", 
		"functionParameter", "routineOption", "serverOption", "createDefinitions", 
		"createDefinition", "columnDefinition", "columnConstraint", "tableConstraint", 
		"referenceDefinition", "referenceAction", "referenceControlType", "indexColumnDefinition", 
		"tableOption", "tablespaceStorage", "partitionDefinitions", "partitionFunctionDefinition", 
		"subpartitionFunctionDefinition", "partitionDefinition", "partitionDefinerAtom", 
		"partitionDefinerVector", "subpartitionDefinition", "partitionOption", 
		"alterDatabase", "alterEvent", "alterFunction", "alterInstance", "alterLogfileGroup", 
		"alterProcedure", "alterServer", "alterTable", "alterTablespace", "alterView", 
		"alterSpecification", "dropDatabase", "dropEvent", "dropIndex", "dropLogfileGroup", 
		"dropProcedure", "dropFunction", "dropServer", "dropTable", "dropTablespace", 
		"dropTrigger", "dropView", "renameTable", "renameTableClause", "truncateTable", 
		"callStatement", "deleteStatement", "doStatement", "handlerStatement", 
		"insertStatement", "loadDataStatement", "loadXmlStatement", "replaceStatement", 
		"selectStatement", "updateStatement", "insertStatementValue", "updatedElement", 
		"assignmentField", "lockClause", "singleDeleteStatement", "multipleDeleteStatement", 
		"handlerOpenStatement", "handlerReadIndexStatement", "handlerReadStatement", 
		"handlerCloseStatement", "singleUpdateStatement", "multipleUpdateStatement", 
		"orderByClause", "orderByExpression", "tableSources", "tableSource", "tableSourceItem", 
		"indexHint", "indexHintType", "joinPart", "queryExpression", "queryExpressionNointo", 
		"querySpecification", "querySpecificationNointo", "unionParenthesis", 
		"unionStatement", "selectSpec", "selectElements", "selectElement", "selectIntoExpression", 
		"selectFieldsInto", "selectLinesInto", "fromClause", "groupByItem", "limitClause", 
		"limitClauseAtom", "startTransaction", "beginWork", "commitWork", "rollbackWork", 
		"savepointStatement", "rollbackStatement", "releaseStatement", "lockTables", 
		"unlockTables", "setAutocommitStatement", "setTransactionStatement", "transactionMode", 
		"lockTableElement", "lockAction", "transactionOption", "transactionLevel", 
		"changeMaster", "changeReplicationFilter", "purgeBinaryLogs", "resetMaster", 
		"resetSlave", "startSlave", "stopSlave", "startGroupReplication", "stopGroupReplication", 
		"masterOption", "stringMasterOption", "decimalMasterOption", "boolMasterOption", 
		"channelOption", "replicationFilter", "tablePair", "threadType", "untilOption", 
		"connectionOption", "gtuidSet", "xaStartTransaction", "xaEndTransaction", 
		"xaPrepareStatement", "xaCommitWork", "xaRollbackWork", "xaRecoverWork", 
		"prepareStatement", "executeStatement", "deallocatePrepare", "routineBody", 
		"blockStatement", "caseStatement", "ifStatement", "iterateStatement", 
		"leaveStatement", "loopStatement", "repeatStatement", "returnStatement", 
		"whileStatement", "cursorStatement", "declareVariable", "declareCondition", 
		"declareCursor", "declareHandler", "handlerConditionValue", "procedureSqlStatement", 
		"caseAlternative", "elifAlternative", "alterUser", "createUser", "dropUser", 
		"grantStatement", "grantProxy", "renameUser", "revokeStatement", "revokeProxy", 
		"setPasswordStatement", "userSpecification", "userAuthOption", "tlsOption", 
		"userResourceOption", "userPasswordOption", "userLockOption", "privelegeClause", 
		"privilege", "privilegeLevel", "renameUserClause", "analyzeTable", "checkTable", 
		"checksumTable", "optimizeTable", "repairTable", "checkTableOption", "createUdfunction", 
		"installPlugin", "uninstallPlugin", "setStatement", "showStatement", "variableClause", 
		"showCommonEntity", "showFilter", "showGlobalInfoClause", "showSchemaEntity", 
		"showProfileType", "binlogStatement", "cacheIndexStatement", "flushStatement", 
		"killStatement", "loadIndexIntoCache", "resetStatement", "shutdownStatement", 
		"tableIndexes", "flushOption", "flushTableOption", "loadedTableIndexes", 
		"simpleDescribeStatement", "fullDescribeStatement", "helpStatement", "useStatement", 
		"signalStatement", "resignalStatement", "signalConditionInformation", 
		"diagnosticsStatement", "diagnosticsConditionInformationName", "describeObjectClause", 
		"fullId", "tableName", "fullColumnName", "indexColumnName", "userName", 
		"mysqlVariable", "charsetName", "collationName", "engineName", "uuidSet", 
		"xid", "xuidStringId", "authPlugin", "uid", "simpleId", "dottedId", "decimalLiteral", 
		"fileSizeLiteral", "stringLiteral", "booleanLiteral", "hexadecimalLiteral", 
		"nullNotnull", "constant", "dataType", "collectionOptions", "convertedDataType", 
		"lengthOneDimension", "lengthTwoDimension", "lengthTwoOptionalDimension", 
		"uidList", "tables", "indexColumnNames", "expressions", "expressionsWithDefaults", 
		"constants", "simpleStrings", "userVariables", "defaultValue", "currentTimestamp", 
		"expressionOrDefault", "ifExists", "ifNotExists", "functionCall", "specificFunction", 
		"caseFuncAlternative", "levelsInWeightString", "levelInWeightListElement", 
		"aggregateWindowedFunction", "scalarFunctionName", "passwordFunctionClause", 
		"functionArgs", "functionArg", "expression", "predicate", "expressionAtom", 
		"unaryOperator", "comparisonOperator", "logicalOperator", "bitOperator", 
		"mathOperator", "charsetNameBase", "transactionLevelBase", "privilegesBase", 
		"intervalTypeBase", "dataTypeBase", "keywordsCanBeId", "functionNameBase",
	];
	public get grammarFileName(): string { return "SqlParser.g4"; }
	public get literalNames(): (string | null)[] { return SqlParser.literalNames; }
	public get symbolicNames(): (string | null)[] { return SqlParser.symbolicNames; }
	public get ruleNames(): string[] { return SqlParser.ruleNames; }
	public get serializedATN(): number[] { return SqlParser._serializedATN; }

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

	constructor(input: TokenStream) {
		super(input);
		this._interp = new ParserATNSimulator(this, SqlParser._ATN, SqlParser.DecisionsToDFA, new PredictionContextCache());
	}
	// @RuleVersion(0)
	public program(): ProgramContext {
		let localctx: ProgramContext = new ProgramContext(this, this._ctx, this.state);
		this.enterRule(localctx, 0, SqlParser.RULE_program);
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 632;
			this.statement();
			this.state = 633;
			this.match(SqlParser.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, this._ctx, this.state);
		this.enterRule(localctx, 2, SqlParser.RULE_statement);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 636;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 1084359296) !== 0) || ((((_la - 40)) & ~0x1F) === 0 && ((1 << (_la - 40)) & 50364551) !== 0) || ((((_la - 76)) & ~0x1F) === 0 && ((1 << (_la - 76)) & 2147680513) !== 0) || ((((_la - 118)) & ~0x1F) === 0 && ((1 << (_la - 118)) & 14174913) !== 0) || ((((_la - 164)) & ~0x1F) === 0 && ((1 << (_la - 164)) & 21) !== 0) || ((((_la - 282)) & ~0x1F) === 0 && ((1 << (_la - 282)) & 16781443) !== 0) || _la===325 || _la===334 || ((((_la - 364)) & ~0x1F) === 0 && ((1 << (_la - 364)) & 2099713) !== 0) || ((((_la - 475)) & ~0x1F) === 0 && ((1 << (_la - 475)) & 268959745) !== 0) || ((((_la - 508)) & ~0x1F) === 0 && ((1 << (_la - 508)) & 1073741889) !== 0) || ((((_la - 544)) & ~0x1F) === 0 && ((1 << (_la - 544)) & 17825793) !== 0) || ((((_la - 587)) & ~0x1F) === 0 && ((1 << (_la - 587)) & 2228225) !== 0) || _la===1020 || _la===1023) {
				{
				this.state = 635;
				this.sqlStatements();
				}
			}

			this.state = 639;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===1007) {
				{
				this.state = 638;
				this.match(SqlParser.MINUSMINUS);
				}
			}

			this.state = 641;
			this.match(SqlParser.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 sqlStatements(): SqlStatementsContext {
		let localctx: SqlStatementsContext = new SqlStatementsContext(this, this._ctx, this.state);
		this.enterRule(localctx, 4, SqlParser.RULE_sqlStatements);
		let _la: number;
		try {
			let _alt: number;
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 653;
			this._errHandler.sync(this);
			_alt = this._interp.adaptivePredict(this._input, 5, this._ctx);
			while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) {
				if (_alt === 1) {
					{
					this.state = 651;
					this._errHandler.sync(this);
					switch (this._input.LA(1)) {
					case 7:
					case 9:
					case 17:
					case 21:
					case 23:
					case 30:
					case 40:
					case 41:
					case 42:
					case 47:
					case 55:
					case 64:
					case 65:
					case 76:
					case 84:
					case 92:
					case 93:
					case 107:
					case 118:
					case 124:
					case 125:
					case 127:
					case 129:
					case 132:
					case 137:
					case 138:
					case 140:
					case 141:
					case 164:
					case 166:
					case 168:
					case 282:
					case 283:
					case 289:
					case 294:
					case 306:
					case 325:
					case 334:
					case 364:
					case 373:
					case 375:
					case 385:
					case 475:
					case 494:
					case 503:
					case 508:
					case 514:
					case 538:
					case 544:
					case 564:
					case 568:
					case 587:
					case 604:
					case 608:
					case 1020:
						{
						this.state = 643;
						this.sqlStatement();
						this.state = 645;
						this._errHandler.sync(this);
						_la = this._input.LA(1);
						if (_la===1007) {
							{
							this.state = 644;
							this.match(SqlParser.MINUSMINUS);
							}
						}

						this.state = 648;
						this._errHandler.sync(this);
						switch ( this._interp.adaptivePredict(this._input, 3, this._ctx) ) {
						case 1:
							{
							this.state = 647;
							this.match(SqlParser.SEMI);
							}
							break;
						}
						}
						break;
					case 1023:
						{
						this.state = 650;
						this.emptyStatement();
						}
						break;
					default:
						throw new NoViableAltException(this);
					}
					}
				}
				this.state = 655;
				this._errHandler.sync(this);
				_alt = this._interp.adaptivePredict(this._input, 5, this._ctx);
			}
			this.state = 664;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case 7:
			case 9:
			case 17:
			case 21:
			case 23:
			case 30:
			case 40:
			case 41:
			case 42:
			case 47:
			case 55:
			case 64:
			case 65:
			case 76:
			case 84:
			case 92:
			case 93:
			case 107:
			case 118:
			case 124:
			case 125:
			case 127:
			case 129:
			case 132:
			case 137:
			case 138:
			case 140:
			case 141:
			case 164:
			case 166:
			case 168:
			case 282:
			case 283:
			case 289:
			case 294:
			case 306:
			case 325:
			case 334:
			case 364:
			case 373:
			case 375:
			case 385:
			case 475:
			case 494:
			case 503:
			case 508:
			case 514:
			case 538:
			case 544:
			case 564:
			case 568:
			case 587:
			case 604:
			case 608:
			case 1020:
				{
				this.state = 656;
				this.sqlStatement();
				this.state = 661;
				this._errHandler.sync(this);
				switch ( this._interp.adaptivePredict(this._input, 7, this._ctx) ) {
				case 1:
					{
					this.state = 658;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
					if (_la===1007) {
						{
						this.state = 657;
						this.match(SqlParser.MINUSMINUS);
						}
					}

					this.state = 660;
					this.match(SqlParser.SEMI);
					}
					break;
				}
				}
				break;
			case 1023:
				{
				this.state = 663;
				this.emptyStatement();
				}
				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 sqlStatement(): SqlStatementContext {
		let localctx: SqlStatementContext = new SqlStatementContext(this, this._ctx, this.state);
		this.enterRule(localctx, 6, SqlParser.RULE_sqlStatement);
		try {
			this.state = 673;
			this._errHandler.sync(this);
			switch ( this._interp.adaptivePredict(this._input, 9, this._ctx) ) {
			case 1:
				this.enterOuterAlt(localctx, 1);
				{
				this.state = 666;
				this.ddlStatement();
				}
				break;
			case 2:
				this.enterOuterAlt(localctx, 2);
				{
				this.state = 667;
				this.dmlStatement();
				}
				break;
			case 3:
				this.enterOuterAlt(localctx, 3);
				{
				this.state = 668;
				this.transactionStatement();
				}
				break;
			case 4:
				this.enterOuterAlt(localctx, 4);
				{
				this.state = 669;
				this.replicationStatement();
				}
				break;
			case 5:
				this.enterOuterAlt(localctx, 5);
				{
				this.state = 670;
				this.preparedStatement();
				}
				break;
			case 6:
				this.enterOuterAlt(localctx, 6);
				{
				this.state = 671;
				this.administrationStatement();
				}
				break;
			case 7:
				this.enterOuterAlt(localctx, 7);
				{
				this.state = 672;
				this.utilityStatement();
				}
				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 emptyStatement(): EmptyStatementContext {
		let localctx: EmptyStatementContext = new EmptyStatementContext(this, this._ctx, this.state);
		this.enterRule(localctx, 8, SqlParser.RULE_emptyStatement);
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 675;
			this.match(SqlParser.SEMI);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				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, this._ctx, this.state);
		this.enterRule(localctx, 10, SqlParser.RULE_ddlStatement);
		try {
			this.state = 712;
			this._errHandler.sync(this);
			switch ( this._interp.adaptivePredict(this._input, 10, this._ctx) ) {
			case 1:
				this.enterOuterAlt(localctx, 1);
				{
				this.state = 677;
				this.createDatabase();
				}
				break;
			case 2:
				this.enterOuterAlt(localctx, 2);
				{
				this.state = 678;
				this.createEvent();
				}
				break;
			case 3:
				this.enterOuterAlt(localctx, 3);
				{
				this.state = 679;
				this.createIndex();
				}
				break;
			case 4:
				this.enterOuterAlt(localctx, 4);
				{
				this.state = 680;
				this.createLogfileGroup();
				}
				break;
			case 5:
				this.enterOuterAlt(localctx, 5);
				{
				this.state = 681;
				this.createProcedure();
				}
				break;
			case 6:
				this.enterOuterAlt(localctx, 6);
				{
				this.state = 682;
				this.createFunction();
				}
				break;
			case 7:
				this.enterOuterAlt(localctx, 7);
				{
				this.state = 683;
				this.createServer();
				}
				break;
			case 8:
				this.enterOuterAlt(localctx, 8);
				{
				this.state = 684;
				this.createTable();
				}
				break;
			case 9:
				this.enterOuterAlt(localctx, 9);
				{
				this.state = 685;
				this.createTablespaceInnodb();
				}
				break;
			case 10:
				this.enterOuterAlt(localctx, 10);
				{
				this.state = 686;
				this.createTablespaceNdb();
				}
				break;
			case 11:
				this.enterOuterAlt(localctx, 11);
				{
				this.state = 687;
				this.createTrigger();
				}
				break;
			case 12:
				this.enterOuterAlt(localctx, 12);
				{
				this.state = 688;
				this.createView();
				}
				break;
			case 13:
				this.enterOuterAlt(localctx, 13);
				{
				this.state = 689;
				this.alterDatabase();
				}
				break;
			case 14:
				this.enterOuterAlt(localctx, 14);
				{
				this.state = 690;
				this.alterEvent();
				}
				break;
			case 15:
				this.enterOuterAlt(localctx, 15);
				{
				this.state = 691;
				this.alterFunction();
				}
				break;
			case 16:
				this.enterOuterAlt(localctx, 16);
				{
				this.state = 692;
				this.alterInstance();
				}
				break;
			case 17:
				this.enterOuterAlt(localctx, 17);
				{
				this.state = 693;
				this.alterLogfileGroup();
				}
				break;
			case 18:
				this.enterOuterAlt(localctx, 18);
				{
				this.state = 694;
				this.alterProcedure();
				}
				break;
			case 19:
				this.enterOuterAlt(localctx, 19);
				{
				this.state = 695;
				this.alterServer();
				}
				break;
			case 20:
				this.enterOuterAlt(localctx, 20);
				{
				this.state = 696;
				this.alterTable();
				}
				break;
			case 21:
				this.enterOuterAlt(localctx, 21);
				{
				this.state = 697;
				this.alterTablespace();
				}
				break;
			case 22:
				this.enterOuterAlt(localctx, 22);
				{
				this.state = 698;
				this.alterView();
				}
				break;
			case 23:
				this.enterOuterAlt(localctx, 23);
				{
				this.state = 699;
				this.dropDatabase();
				}
				break;
			case 24:
				this.enterOuterAlt(localctx, 24);
				{
				this.state = 700;
				this.dropEvent();
				}
				break;
			case 25:
				this.enterOuterAlt(localctx, 25);
				{
				this.state = 701;
				this.dropIndex();
				}
				break;
			case 26:
				this.enterOuterAlt(localctx, 26);
				{
				this.state = 702;
				this.dropLogfileGroup();
				}
				break;
			case 27:
				this.enterOuterAlt(localctx, 27);
				{
				this.state = 703;
				this.dropProcedure();
				}
				break;
			case 28:
				this.enterOuterAlt(localctx, 28);
				{
				this.state = 704;
				this.dropFunction();
				}
				break;
			case 29:
				this.enterOuterAlt(localctx, 29);
				{
				this.state = 705;
				this.dropServer();
				}
				break;
			case 30:
				this.enterOuterAlt(localctx, 30);
				{
				this.state = 706;
				this.dropTable();
				}
				break;
			case 31:
				this.enterOuterAlt(localctx, 31);
				{
				this.state = 707;
				this.dropTablespace();
				}
				break;
			case 32:
				this.enterOuterAlt(localctx, 32);
				{
				this.state = 708;
				this.dropTrigger();
				}
				break;
			case 33:
				this.enterOuterAlt(localctx, 33);
				{
				this.state = 709;
				this.dropView();
				}
				break;
			case 34:
				this.enterOuterAlt(localctx, 34);
				{
				this.state = 710;
				this.renameTable();
				}
				break;
			case 35:
				this.enterOuterAlt(localctx, 35);
				{
				this.state = 711;
				this.truncateTable();
				}
				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 dmlStatement(): DmlStatementContext {
		let localctx: DmlStatementContext = new DmlStatementContext(this, this._ctx, this.state);
		this.enterRule(localctx, 12, SqlParser.RULE_dmlStatement);
		try {
			this.state = 724;
			this._errHandler.sync(this);
			switch ( this._interp.adaptivePredict(this._input, 11, this._ctx) ) {
			case 1:
				this.enterOuterAlt(localctx, 1);
				{
				this.state = 714;
				this.selectStatement();
				}
				break;
			case 2:
				this.enterOuterAlt(localctx, 2);
				{
				this.state = 715;
				this.insertStatement();
				}
				break;
			case 3:
				this.enterOuterAlt(localctx, 3);
				{
				this.state = 716;
				this.updateStatement();
				}
				break;
			case 4:
				this.enterOuterAlt(localctx, 4);
				{
				this.state = 717;
				this.deleteStatement();
				}
				break;
			case 5:
				this.enterOuterAlt(localctx, 5);
				{
				this.state = 718;
				this.replaceStatement();
				}
				break;
			case 6:
				this.enterOuterAlt(localctx, 6);
				{
				this.state = 719;
				this.callStatement();
				}
				break;
			case 7:
				this.enterOuterAlt(localctx, 7);
				{
				this.state = 720;
				this.loadDataStatement();
				}
				break;
			case 8:
				this.enterOuterAlt(localctx, 8);
				{
				this.state = 721;
				this.loadXmlStatement();
				}
				break;
			case 9:
				this.enterOuterAlt(localctx, 9);
				{
				this.state = 722;
				this.doStatement();
				}
				break;
			case 10:
				this.enterOuterAlt(localctx, 10);
				{
				this.state = 723;
				this.handlerStatement();
				}
				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 transactionStatement(): TransactionStatementContext {
		let localctx: TransactionStatementContext = new TransactionStatementContext(this, this._ctx, this.state);
		this.enterRule(localctx, 14, SqlParser.RULE_transactionStatement);
		try {
			this.state = 735;
			this._errHandler.sync(this);
			switch ( this._interp.adaptivePredict(this._input, 12, this._ctx) ) {
			case 1:
				this.enterOuterAlt(localctx, 1);
				{
				this.state = 726;
				this.startTransaction();
				}
				break;
			case 2:
				this.enterOuterAlt(localctx, 2);
				{
				this.state = 727;
				this.beginWork();
				}
				break;
			case 3:
				this.enterOuterAlt(localctx, 3);
				{
				this.state = 728;
				this.commitWork();
				}
				break;
			case 4:
				this.enterOuterAlt(localctx, 4);
				{
				this.state = 729;
				this.rollbackWork();
				}
				break;
			case 5:
				this.enterOuterAlt(localctx, 5);
				{
				this.state = 730;
				this.savepointStatement();
				}
				break;
			case 6:
				this.enterOuterAlt(localctx, 6);
				{
				this.state = 731;
				this.rollbackStatement();
				}
				break;
			case 7:
				this.enterOuterAlt(localctx, 7);
				{
				this.state = 732;
				this.releaseStatement();
				}
				break;
			case 8:
				this.enterOuterAlt(localctx, 8);
				{
				this.state = 733;
				this.lockTables();
				}
				break;
			case 9:
				this.enterOuterAlt(localctx, 9);
				{
				this.state = 734;
				this.unlockTables();
				}
				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 replicationStatement(): ReplicationStatementContext {
		let localctx: ReplicationStatementContext = new ReplicationStatementContext(this, this._ctx, this.state);
		this.enterRule(localctx, 16, SqlParser.RULE_replicationStatement);
		try {
			this.state = 752;
			this._errHandler.sync(this);
			switch ( this._interp.adaptivePredict(this._input, 13, this._ctx) ) {
			case 1:
				this.enterOuterAlt(localctx, 1);
				{
				this.state = 737;
				this.changeMaster();
				}
				break;
			case 2:
				this.enterOuterAlt(localctx, 2);
				{
				this.state = 738;
				this.changeReplicationFilter();
				}
				break;
			case 3:
				this.enterOuterAlt(localctx, 3);
				{
				this.state = 739;
				this.purgeBinaryLogs();
				}
				break;
			case 4:
				this.enterOuterAlt(localctx, 4);
				{
				this.state = 740;
				this.resetMaster();
				}
				break;
			case 5:
				this.enterOuterAlt(localctx, 5);
				{
				this.state = 741;
				this.resetSlave();
				}
				break;
			case 6:
				this.enterOuterAlt(localctx, 6);
				{
				this.state = 742;
				this.startSlave();
				}
				break;
			case 7:
				this.enterOuterAlt(localctx, 7);
				{
				this.state = 743;
				this.stopSlave();
				}
				break;
			case 8:
				this.enterOuterAlt(localctx, 8);
				{
				this.state = 744;
				this.startGroupReplication();
				}
				break;
			case 9:
				this.enterOuterAlt(localctx, 9);
				{
				this.state = 745;
				this.stopGroupReplication();
				}
				break;
			case 10:
				this.enterOuterAlt(localctx, 10);
				{
				this.state = 746;
				this.xaStartTransaction();
				}
				break;
			case 11:
				this.enterOuterAlt(localctx, 11);
				{
				this.state = 747;
				this.xaEndTransaction();
				}
				break;
			case 12:
				this.enterOuterAlt(localctx, 12);
				{
				this.state = 748;
				this.xaPrepareStatement();
				}
				break;
			case 13:
				this.enterOuterAlt(localctx, 13);
				{
				this.state = 749;
				this.xaCommitWork();
				}
				break;
			case 14:
				this.enterOuterAlt(localctx, 14);
				{
				this.state = 750;
				this.xaRollbackWork();
				}
				break;
			case 15:
				this.enterOuterAlt(localctx, 15);
				{
				this.state = 751;
				this.xaRecoverWork();
				}
				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 preparedStatement(): PreparedStatementContext {
		let localctx: PreparedStatementContext = new PreparedStatementContext(this, this._ctx, this.state);
		this.enterRule(localctx, 18, SqlParser.RULE_preparedStatement);
		try {
			this.state = 757;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case 475:
				this.enterOuterAlt(localctx, 1);
				{
				this.state = 754;
				this.prepareStatement();
				}
				break;
			case 604:
				this.enterOuterAlt(localctx, 2);
				{
				this.state = 755;
				this.executeStatement();
				}
				break;
			case 47:
			case 325:
				this.enterOuterAlt(localctx, 3);
				{
				this.state = 756;
				this.deallocatePrepare();
				}
				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 compoundStatement(): CompoundStatementContext {
		let localctx: CompoundStatementContext = new CompoundStatementContext(this, this._ctx, this.state);
		this.enterRule(localctx, 20, SqlParser.RULE_compoundStatement);
		try {
			this.state = 769;
			this._errHandler.sync(this);
			switch ( this._interp.adaptivePredict(this._input, 15, this._ctx) ) {
			case 1:
				this.enterOuterAlt(localctx, 1);
				{
				this.state = 759;
				this.blockStatement();
				}
				break;
			case 2:
				this.enterOuterAlt(localctx, 2);
				{
				this.state = 760;
				this.caseStatement();
				}
				break;
			case 3:
				this.enterOuterAlt(localctx, 3);
				{
				this.state = 761;
				this.ifStatement();
				}
				break;
			case 4:
				this.enterOuterAlt(localctx, 4);
				{
				this.state = 762;
				this.leaveStatement();
				}
				break;
			case 5:
				this.enterOuterAlt(localctx, 5);
				{
				this.state = 763;
				this.loopStatement();
				}
				break;
			case 6:
				this.enterOuterAlt(localctx, 6);
				{
				this.state = 764;
				this.repeatStatement();
				}
				break;
			case 7:
				this.enterOuterAlt(localctx, 7);
				{
				this.state = 765;
				this.whileStatement();
				}
				break;
			case 8:
				this.enterOuterAlt(localctx, 8);
				{
				this.state = 766;
				this.iterateStatement();
				}
				break;
			case 9:
				this.enterOuterAlt(localctx, 9);
				{
				this.state = 767;
				this.returnStatement();
				}
				break;
			case 10:
				this.enterOuterAlt(localctx, 10);
				{
				this.state = 768;
				this.cursorStatement();
				}
				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 administrationStatement(): AdministrationStatementContext {
		let localctx: AdministrationStatementContext = new AdministrationStatementContext(this, this._ctx, this.state);
		this.enterRule(localctx, 22, SqlParser.RULE_administrationStatement);
		try {
			this.state = 796;
			this._errHandler.sync(this);
			switch ( this._interp.adaptivePredict(this._input, 16, this._ctx) ) {
			case 1:
				this.enterOuterAlt(localctx, 1);
				{
				this.state = 771;
				this.alterUser();
				}
				break;
			case 2:
				this.enterOuterAlt(localctx, 2);
				{
				this.state = 772;
				this.createUser();
				}
				break;
			case 3:
				this.enterOuterAlt(localctx, 3);
				{
				this.state = 773;
				this.dropUser();
				}
				break;
			case 4:
				this.enterOuterAlt(localctx, 4);
				{
				this.state = 774;
				this.grantStatement();
				}
				break;
			case 5:
				this.enterOuterAlt(localctx, 5);
				{
				this.state = 775;
				this.grantProxy();
				}
				break;
			case 6:
				this.enterOuterAlt(localctx, 6);
				{
				this.state = 776;
				this.renameUser();
				}
				break;
			case 7:
				this.enterOuterAlt(localctx, 7);
				{
				this.state = 777;
				this.revokeStatement();
				}
				break;
			case 8:
				this.enterOuterAlt(localctx, 8);
				{
				this.state = 778;
				this.revokeProxy();
				}
				break;
			case 9:
				this.enterOuterAlt(localctx, 9);
				{
				this.state = 779;
				this.analyzeTable();
				}
				break;
			case 10:
				this.enterOuterAlt(localctx, 10);
				{
				this.state = 780;
				this.checkTable();
				}
				break;
			case 11:
				this.enterOuterAlt(localctx, 11);
				{
				this.state = 781;
				this.checksumTable();
				}
				break;
			case 12:
				this.enterOuterAlt(localctx, 12);
				{
				this.state = 782;
				this.optimizeTable();
				}
				break;
			case 13:
				this.enterOuterAlt(localctx, 13);
				{
				this.state = 783;
				this.repairTable();
				}
				break;
			case 14:
				this.enterOuterAlt(localctx, 14);
				{
				this.state = 784;
				this.createUdfunction();
				}
				break;
			case 15:
				this.enterOuterAlt(localctx, 15);
				{
				this.state = 785;
				this.installPlugin();
				}
				break;
			case 16:
				this.enterOuterAlt(localctx, 16);
				{
				this.state = 786;
				this.uninstallPlugin();
				}
				break;
			case 17:
				this.enterOuterAlt(localctx, 17);
				{
				this.state = 787;
				this.setStatement();
				}
				break;
			case 18:
				this.enterOuterAlt(localctx, 18);
				{
				this.state = 788;
				this.showStatement();
				}
				break;
			case 19:
				this.enterOuterAlt(localctx, 19);
				{
				this.state = 789;
				this.binlogStatement();
				}
				break;
			case 20:
				this.enterOuterAlt(localctx, 20);
				{
				this.state = 790;
				this.cacheIndexStatement();
				}
				break;
			case 21:
				this.enterOuterAlt(localctx, 21);
				{
				this.state = 791;
				this.flushStatement();
				}
				break;
			case 22:
				this.enterOuterAlt(localctx, 22);
				{
				this.state = 792;
				this.killStatement();
				}
				break;
			case 23:
				this.enterOuterAlt(localctx, 23);
				{
				this.state = 793;
				this.loadIndexIntoCache();
				}
				break;
			case 24:
				this.enterOuterAlt(localctx, 24);
				{
				this.state = 794;
				this.resetStatement();
				}
				break;
			case 25:
				this.enterOuterAlt(localctx, 25);
				{
				this.state = 795;
				this.shutdownStatement();
				}
				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 utilityStatement(): UtilityStatementContext {
		let localctx: UtilityStatementContext = new UtilityStatementContext(this, this._ctx, this.state);
		this.enterRule(localctx, 24, SqlParser.RULE_utilityStatement);
		try {
			this.state = 805;
			this._errHandler.sync(this);
			switch ( this._interp.adaptivePredict(this._input, 17, this._ctx) ) {
			case 1:
				this.enterOuterAlt(localctx, 1);
				{
				this.state = 798;
				this.simpleDescribeStatement();
				}
				break;
			case 2:
				this.enterOuterAlt(localctx, 2);
				{
				this.state = 799;
				this.fullDescribeStatement();
				}
				break;
			case 3:
				this.enterOuterAlt(localctx, 3);
				{
				this.state = 800;
				this.helpStatement();
				}
				break;
			case 4:
				this.enterOuterAlt(localctx, 4);
				{
				this.state = 801;
				this.useStatement();
				}
				break;
			case 5:
				this.enterOuterAlt(localctx, 5);
				{
				this.state = 802;
				this.signalStatement();
				}
				break;
			case 6:
				this.enterOuterAlt(localctx, 6);
				{
				this.state = 803;
				this.resignalStatement();
				}
				break;
			case 7:
				this.enterOuterAlt(localctx, 7);
				{
				this.state = 804;
				this.diagnosticsStatement();
				}
				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 createDatabase(): CreateDatabaseContext {
		let localctx: CreateDatabaseContext = new CreateDatabaseContext(this, this._ctx, this.state);
		this.enterRule(localctx, 26, SqlParser.RULE_createDatabase);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 807;
			this.match(SqlParser.CREATE);
			this.state = 808;
			localctx._dbFormat = this._input.LT(1);
			_la = this._input.LA(1);
			if(!(_la===35 || _la===135)) {
			    localctx._dbFormat = this._errHandler.recoverInline(this);
			}
			else {
				this._errHandler.reportMatch(this);
			    this.consume();
			}
			this.state = 810;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===69) {
				{
				this.state = 809;
				this.ifNotExists();
				}
			}

			this.state = 812;
			this.uid();
			this.state = 816;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (((((_la - 22)) & ~0x1F) === 0 && ((1 << (_la - 22)) & 65541) !== 0) || _la===731) {
				{
				{
				this.state = 813;
				this.createDatabaseOption();
				}
				}
				this.state = 818;
				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 createEvent(): CreateEventContext {
		let localctx: CreateEventContext = new CreateEventContext(this, this._ctx, this.state);
		this.enterRule(localctx, 28, SqlParser.RULE_createEvent);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 819;
			this.match(SqlParser.CREATE);
			this.state = 821;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===327) {
				{
				this.state = 820;
				this.ownerStatement();
				}
			}

			this.state = 823;
			this.match(SqlParser.EVENT);
			this.state = 825;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===69) {
				{
				this.state = 824;
				this.ifNotExists();
				}
			}

			this.state = 827;
			this.fullId();
			this.state = 828;
			this.match(SqlParser.ON);
			this.state = 829;
			this.match(SqlParser.SCHEDULE);
			this.state = 830;
			this.scheduleExpression();
			this.state = 837;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===106) {
				{
				this.state = 831;
				this.match(SqlParser.ON);
				this.state = 832;
				this.match(SqlParser.COMPLETION);
				this.state = 834;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===102) {
					{
					this.state = 833;
					this.match(SqlParser.NOT);
					}
				}

				this.state = 836;
				this.match(SqlParser.PRESERVE);
				}
			}

			this.state = 840;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===331 || _la===338) {
				{
				this.state = 839;
				this.enableType();
				}
			}

			this.state = 844;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===305) {
				{
				this.state = 842;
				this.match(SqlParser.COMMENT);
				this.state = 843;
				this.match(SqlParser.STRING_LITERAL);
				}
			}

			this.state = 846;
			this.match(SqlParser.DO);
			this.state = 847;
			this.routineBody();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public createIndex(): CreateIndexContext {
		let localctx: CreateIndexContext = new CreateIndexContext(this, this._ctx, this.state);
		this.enterRule(localctx, 30, SqlParser.RULE_createIndex);
		let _la: number;
		try {
			let _alt: number;
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 849;
			this.match(SqlParser.CREATE);
			this.state = 851;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===451 || _la===456) {
				{
				this.state = 850;
				localctx._intimeAction = this._input.LT(1);
				_la = this._input.LA(1);
				if(!(_la===451 || _la===456)) {
				    localctx._intimeAction = this._errHandler.recoverInline(this);
				}
				else {
					this._errHandler.reportMatch(this);
				    this.consume();
				}
				}
			}

			this.state = 854;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===62 || _la===142 || _la===163) {
				{
				this.state = 853;
				localctx._indexCategory = this._input.LT(1);
				_la = this._input.LA(1);
				if(!(_la===62 || _la===142 || _la===163)) {
				    localctx._indexCategory = this._errHandler.recoverInline(this);
				}
				else {
					this._errHandler.reportMatch(this);
				    this.consume();
				}
				}
			}

			this.state = 856;
			this.match(SqlParser.INDEX);
			this.state = 857;
			this.uid();
			this.state = 859;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===169) {
				{
				this.state = 858;
				this.indexType();
				}
			}

			this.state = 861;
			this.match(SqlParser.ON);
			this.state = 862;
			this.tableName();
			this.state = 863;
			this.indexColumnNames();
			this.state = 867;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la===169 || _la===174 || _la===305 || _la===387 || _la===395 || _la===580) {
				{
				{
				this.state = 864;
				this.indexOption();
				}
				}
				this.state = 869;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			}
			this.state = 882;
			this._errHandler.sync(this);
			_alt = this._interp.adaptivePredict(this._input, 33, this._ctx);
			while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) {
				if (_alt === 1) {
					{
					this.state = 880;
					this._errHandler.sync(this);
					switch (this._input.LA(1)) {
					case 274:
						{
						this.state = 870;
						this.match(SqlParser.ALGORITHM);
						this.state = 872;
						this._errHandler.sync(this);
						_la = this._input.LA(1);
						if (_la===1011) {
							{
							this.state = 871;
							this.match(SqlParser.EQUAL_SYMBOL);
							}
						}

						this.state = 874;
						localctx._algType = this._input.LT(1);
						_la = this._input.LA(1);
						if(!(_la===38 || _la===320 || _la===383)) {
						    localctx._algType = this._errHandler.recoverInline(this);
						}
						else {
							this._errHandler.reportMatch(this);
						    this.consume();
						}
						}
						break;
					case 93:
						{
						this.state = 875;
						this.match(SqlParser.LOCK);
						this.state = 877;
						this._errHandler.sync(this);
						_la = this._input.LA(1);
						if (_la===1011) {
							{
							this.state = 876;
							this.match(SqlParser.EQUAL_SYMBOL);
							}
						}

						this.state = 879;
						localctx._lockType = this._input.LT(1);
						_la = this._input.LA(1);
						if(!(_la===38 || _la===352 || _la===450 || _la===520)) {
						    localctx._lockType = this._errHandler.recoverInline(this);
						}
						else {
							this._errHandler.reportMatch(this);
						    this.consume();
						}
						}
						break;
					default:
						throw new NoViableAltException(this);
					}
					}
				}
				this.state = 884;
				this._errHandler.sync(this);
				_alt = this._interp.adaptivePredict(this._input, 33, 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 createLogfileGroup(): CreateLogfileGroupContext {
		let localctx: CreateLogfileGroupContext = new CreateLogfileGroupContext(this, this._ctx, this.state);
		this.enterRule(localctx, 32, SqlParser.RULE_createLogfileGroup);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 885;
			this.match(SqlParser.CREATE);
			this.state = 886;
			this.match(SqlParser.LOGFILE);
			this.state = 887;
			this.match(SqlParser.GROUP);
			this.state = 888;
			this.uid();
			this.state = 889;
			this.match(SqlParser.ADD);
			this.state = 890;
			this.match(SqlParser.UNDOFILE);
			this.state = 891;
			localctx._undoFile = this.match(SqlParser.STRING_LITERAL);
			this.state = 897;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===382) {
				{
				this.state = 892;
				this.match(SqlParser.INITIAL_SIZE);
				this.state = 894;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===1011) {
					{
					this.state = 893;
					this.match(SqlParser.EQUAL_SYMBOL);
					}
				}

				this.state = 896;
				localctx._initSize = this.fileSizeLiteral();
				}
			}

			this.state = 904;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===567) {
				{
				this.state = 899;
				this.match(SqlParser.UNDO_BUFFER_SIZE);
				this.state = 901;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===1011) {
					{
					this.state = 900;
					this.match(SqlParser.EQUAL_SYMBOL);
					}
				}

				this.state = 903;
				localctx._undoSize = this.fileSizeLiteral();
				}
			}

			this.state = 911;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===486) {
				{
				this.state = 906;
				this.match(SqlParser.REDO_BUFFER_SIZE);
				this.state = 908;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===1011) {
					{
					this.state = 907;
					this.match(SqlParser.EQUAL_SYMBOL);
					}
				}

				this.state = 910;
				localctx._redoSize = this.fileSizeLiteral();
				}
			}

			this.state = 918;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===449) {
				{
				this.state = 913;
				this.match(SqlParser.NODEGROUP);
				this.state = 915;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===1011) {
					{
					this.state = 914;
					this.match(SqlParser.EQUAL_SYMBOL);
					}
				}

				this.state = 917;
				this.uid();
				}
			}

			this.state = 921;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===581) {
				{
				this.state = 920;
				this.match(SqlParser.WAIT);
				}
			}

			this.state = 928;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===305) {
				{
				this.state = 923;
				this.match(SqlParser.COMMENT);
				this.state = 925;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===1011) {
					{
					this.state = 924;
					this.match(SqlParser.EQUAL_SYMBOL);
					}
				}

				this.state = 927;
				localctx._comment = this.match(SqlParser.STRING_LITERAL);
				}
			}

			this.state = 930;
			this.match(SqlParser.ENGINE);
			this.state = 932;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===1011) {
				{
				this.state = 931;
				this.match(SqlParser.EQUAL_SYMBOL);
				}
			}

			this.state = 934;
			this.engineName();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public createProcedure(): CreateProcedureContext {
		let localctx: CreateProcedureContext = new CreateProcedureContext(this, this._ctx, this.state);
		this.enterRule(localctx, 34, SqlParser.RULE_createProcedure);
		let _la: number;
		try {
			let _alt: number;
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 936;
			this.match(SqlParser.CREATE);
			this.state = 938;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===327) {
				{
				this.state = 937;
				this.ownerStatement();
				}
			}

			this.state = 940;
			this.match(SqlParser.PROCEDURE);
			this.state = 941;
			this.fullId();
			this.state = 942;
			this.match(SqlParser.LR_BRACKET);
			this.state = 944;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (((((_la - 32)) & ~0x1F) === 0 && ((1 << (_la - 32)) & 4105) !== 0) || ((((_la - 71)) & ~0x1F) === 0 && ((1 << (_la - 71)) & 65553) !== 0) || ((((_la - 105)) & ~0x1F) === 0 && ((1 << (_la - 105)) & 268435585) !== 0) || _la===151 || ((((_la - 199)) & ~0x1F) === 0 && ((1 << (_la - 199)) & 5373983) !== 0) || ((((_la - 233)) & ~0x1F) === 0 && ((1 << (_la - 233)) & 536870979) !== 0) || ((((_la - 270)) & ~0x1F) === 0 && ((1 << (_la - 270)) & 4294967295) !== 0) || ((((_la - 302)) & ~0x1F) === 0 && ((1 << (_la - 302)) & 4294967295) !== 0) || ((((_la - 334)) & ~0x1F) === 0 && ((1 << (_la - 334)) & 4294967295) !== 0) || ((((_la - 366)) & ~0x1F) === 0 && ((1 << (_la - 366)) & 4294967295) !== 0) || ((((_la - 398)) & ~0x1F) === 0 && ((1 << (_la - 398)) & 4294967295) !== 0) || ((((_la - 430)) & ~0x1F) === 0 && ((1 << (_la - 430)) & 4294967295) !== 0) || ((((_la - 462)) & ~0x1F) === 0 && ((1 << (_la - 462)) & 4294967295) !== 0) || ((((_la - 494)) & ~0x1F) === 0 && ((1 << (_la - 494)) & 4294967295) !== 0) || ((((_la - 526)) & ~0x1F) === 0 && ((1 << (_la - 526)) & 4293918719) !== 0) || ((((_la - 558)) & ~0x1F) === 0 && ((1 << (_la - 558)) & 2145386495) !== 0) || ((((_la - 593)) & ~0x1F) === 0 && ((1 << (_la - 593)) & 4294705151) !== 0) || ((((_la - 625)) & ~0x1F) === 0 && ((1 << (_la - 625)) & 4294967295) !== 0) || ((((_la - 657)) & ~0x1F) === 0 && ((1 << (_la - 657)) & 4294967295) !== 0) || ((((_la - 689)) & ~0x1F) === 0 && ((1 << (_la - 689)) & 4294967199) !== 0) || ((((_la - 721)) & ~0x1F) === 0 && ((1 << (_la - 721)) & 4294967295) !== 0) || ((((_la - 753)) & ~0x1F) === 0 && ((1 << (_la - 753)) & 4294967295) !== 0) || ((((_la - 785)) & ~0x1F) === 0 && ((1 << (_la - 785)) & 4294967295) !== 0) || ((((_la - 817)) & ~0x1F) === 0 && ((1 << (_la - 817)) & 4294967295) !== 0) || ((((_la - 849)) & ~0x1F) === 0 && ((1 << (_la - 849)) & 4294967295) !== 0) || ((((_la - 881)) & ~0x1F) === 0 && ((1 << (_la - 881)) & 4294967295) !== 0) || ((((_la - 913)) & ~0x1F) === 0 && ((1 << (_la - 913)) & 4294967295) !== 0) || ((((_la - 945)) & ~0x1F) === 0 && ((1 << (_la - 945)) & 4294967295) !== 0) || ((((_la - 977)) & ~0x1F) === 0 && ((1 << (_la - 977)) & 131071) !== 0) || ((((_la - 1032)) & ~0x1F) === 0 && ((1 << (_la - 1032)) & 6153) !== 0)) {
				{
				this.state = 943;
				this.procedureParameter();
				}
			}

			this.state = 950;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la===1022) {
				{
				{
				this.state = 946;
				this.match(SqlParser.COMMA);
				this.state = 947;
				this.procedureParameter();
				}
				}
				this.state = 952;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			}
			this.state = 953;
			this.match(SqlParser.RR_BRACKET);
			this.state = 957;
			this._errHandler.sync(this);
			_alt = this._interp.adaptivePredict(this._input, 49, this._ctx);
			while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) {
				if (_alt === 1) {
					{
					{
					this.state = 954;
					this.routineOption();
					}
					}
				}
				this.state = 959;
				this._errHandler.sync(this);
				_alt = this._interp.adaptivePredict(this._input, 49, this._ctx);
			}
			this.state = 960;
			this.routineBody();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public createFunction(): CreateFunctionContext {
		let localctx: CreateFunctionContext = new CreateFunctionContext(this, this._ctx, this.state);
		this.enterRule(localctx, 36, SqlParser.RULE_createFunction);
		let _la: number;
		try {
			let _alt: number;
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 962;
			this.match(SqlParser.CREATE);
			this.state = 964;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===327) {
				{
				this.state = 963;
				this.ownerStatement();
				}
			}

			this.state = 966;
			this.match(SqlParser.FUNCTION);
			this.state = 967;
			this.fullId();
			this.state = 968;
			this.match(SqlParser.LR_BRACKET);
			this.state = 970;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (((((_la - 32)) & ~0x1F) === 0 && ((1 << (_la - 32)) & 4105) !== 0) || _la===87 || _la===105 || _la===133 || _la===151 || ((((_la - 199)) & ~0x1F) === 0 && ((1 << (_la - 199)) & 5373983) !== 0) || ((((_la - 233)) & ~0x1F) === 0 && ((1 << (_la - 233)) & 536870979) !== 0) || ((((_la - 270)) & ~0x1F) === 0 && ((1 << (_la - 270)) & 4294967295) !== 0) || ((((_la - 302)) & ~0x1F) === 0 && ((1 << (_la - 302)) & 4294967295) !== 0) || ((((_la - 334)) & ~0x1F) === 0 && ((1 << (_la - 334)) & 4294967295) !== 0) || ((((_la - 366)) & ~0x1F) === 0 && ((1 << (_la - 366)) & 4294967295) !== 0) || ((((_la - 398)) & ~0x1F) === 0 && ((1 << (_la - 398)) & 4294967295) !== 0) || ((((_la - 430)) & ~0x1F) === 0 && ((1 << (_la - 430)) & 4294967295) !== 0) || ((((_la - 462)) & ~0x1F) === 0 && ((1 << (_la - 462)) & 4294967295) !== 0) || ((((_la - 494)) & ~0x1F) === 0 && ((1 << (_la - 494)) & 4294967295) !== 0) || ((((_la - 526)) & ~0x1F) === 0 && ((1 << (_la - 526)) & 4293918719) !== 0) || ((((_la - 558)) & ~0x1F) === 0 && ((1 << (_la - 558)) & 2145386495) !== 0) || ((((_la - 593)) & ~0x1F) === 0 && ((1 << (_la - 593)) & 4294705151) !== 0) || ((((_la - 625)) & ~0x1F) === 0 && ((1 << (_la - 625)) & 4294967295) !== 0) || ((((_la - 657)) & ~0x1F) === 0 && ((1 << (_la - 657)) & 4294967295) !== 0) || ((((_la - 689)) & ~0x1F) === 0 && ((1 << (_la - 689)) & 4294967199) !== 0) || ((((_la - 721)) & ~0x1F) === 0 && ((1 << (_la - 721)) & 4294967295) !== 0) || ((((_la - 753)) & ~0x1F) === 0 && ((1 << (_la - 753)) & 4294967295) !== 0) || ((((_la - 785)) & ~0x1F) === 0 && ((1 << (_la - 785)) & 4294967295) !== 0) || ((((_la - 817)) & ~0x1F) === 0 && ((1 << (_la - 817)) & 4294967295) !== 0) || ((((_la - 849)) & ~0x1F) === 0 && ((1 << (_la - 849)) & 4294967295) !== 0) || ((((_la - 881)) & ~0x1F) === 0 && ((1 << (_la - 881)) & 4294967295) !== 0) || ((((_la - 913)) & ~0x1F) === 0 && ((1 << (_la - 913)) & 4294967295) !== 0) || ((((_la - 945)) & ~0x1F) === 0 && ((1 << (_la - 945)) & 4294967295) !== 0) || ((((_la - 977)) & ~0x1F) === 0 && ((1 << (_la - 977)) & 131071) !== 0) || ((((_la - 1032)) & ~0x1F) === 0 && ((1 << (_la - 1032)) & 6153) !== 0)) {
				{
				this.state = 969;
				this.functionParameter();
				}
			}

			this.state = 976;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la===1022) {
				{
				{
				this.state = 972;
				this.match(SqlParser.COMMA);
				this.state = 973;
				this.functionParameter();
				}
				}
				this.state = 978;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			}
			this.state = 979;
			this.match(SqlParser.RR_BRACKET);
			this.state = 980;
			this.match(SqlParser.RETURNS);
			this.state = 981;
			this.dataType();
			this.state = 985;
			this._errHandler.sync(this);
			_alt = this._interp.adaptivePredict(this._input, 53, this._ctx);
			while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) {
				if (_alt === 1) {
					{
					{
					this.state = 982;
					this.routineOption();
					}
					}
				}
				this.state = 987;
				this._errHandler.sync(this);
				_alt = this._interp.adaptivePredict(this._input, 53, this._ctx);
			}
			this.state = 990;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case 7:
			case 9:
			case 17:
			case 21:
			case 23:
			case 30:
			case 32:
			case 35:
			case 40:
			case 41:
			case 42:
			case 44:
			case 47:
			case 55:
			case 64:
			case 65:
			case 76:
			case 84:
			case 87:
			case 92:
			case 93:
			case 105:
			case 107:
			case 118:
			case 124:
			case 125:
			case 127:
			case 129:
			case 132:
			case 133:
			case 137:
			case 138:
			case 140:
			case 141:
			case 151:
			case 164:
			case 166:
			case 168:
			case 199:
			case 200:
			case 201:
			case 202:
			case 203:
			case 216:
			case 219:
			case 221:
			case 233:
			case 234:
			case 239:
			case 262:
			case 270:
			case 271:
			case 272:
			case 273:
			case 274:
			case 275:
			case 276:
			case 277:
			case 278:
			case 279:
			case 280:
			case 281:
			case 282:
			case 283:
			case 284:
			case 285:
			case 286:
			case 287:
			case 288:
			case 289:
			case 290:
			case 291:
			case 292:
			case 293:
			case 294:
			case 295:
			case 296:
			case 297:
			case 298:
			case 299:
			case 300:
			case 301:
			case 302:
			case 303:
			case 304:
			case 305:
			case 306:
			case 307:
			case 308:
			case 309:
			case 310:
			case 311:
			case 312:
			case 313:
			case 314:
			case 315:
			case 316:
			case 317:
			case 318:
			case 319:
			case 320:
			case 321:
			case 322:
			case 323:
			case 324:
			case 325:
			case 326:
			case 327:
			case 328:
			case 329:
			case 330:
			case 331:
			case 332:
			case 333:
			case 334:
			case 335:
			case 336:
			case 337:
			case 338:
			case 339:
			case 340:
			case 341:
			case 342:
			case 343:
			case 344:
			case 345:
			case 346:
			case 347:
			case 348:
			case 349:
			case 350:
			case 351:
			case 352:
			case 353:
			case 354:
			case 355:
			case 356:
			case 357:
			case 358:
			case 359:
			case 360:
			case 361:
			case 362:
			case 363:
			case 364:
			case 365:
			case 366:
			case 367:
			case 368:
			case 369:
			case 370:
			case 371:
			case 372:
			case 373:
			case 374:
			case 375:
			case 376:
			case 377:
			case 378:
			case 379:
			case 380:
			case 381:
			case 382:
			case 383:
			case 384:
			case 385:
			case 386:
			case 387:
			case 388:
			case 389:
			case 390:
			case 391:
			case 392:
			case 393:
			case 394:
			case 395:
			case 396:
			case 397:
			case 398:
			case 399:
			case 400:
			case 401:
			case 402:
			case 403:
			case 404:
			case 405:
			case 406:
			case 407:
			case 408:
			case 409:
			case 410:
			case 411:
			case 412:
			case 413:
			case 414:
			case 415:
			case 416:
			case 417:
			case 418:
			case 419:
			case 420:
			case 421:
			case 422:
			case 423:
			case 424:
			case 425:
			case 426:
			case 427:
			case 428:
			case 429:
			case 430:
			case 431:
			case 432:
			case 433:
			case 434:
			case 435:
			case 436:
			case 437:
			case 438:
			case 439:
			case 440:
			case 441:
			case 442:
			case 443:
			case 444:
			case 445:
			case 446:
			case 447:
			case 448:
			case 449:
			case 450:
			case 451:
			case 452:
			case 453:
			case 454:
			case 455:
			case 456:
			case 457:
			case 458:
			case 459:
			case 460:
			case 461:
			case 462:
			case 463:
			case 464:
			case 465:
			case 466:
			case 467:
			case 468:
			case 469:
			case 470:
			case 471:
			case 472:
			case 473:
			case 474:
			case 475:
			case 476:
			case 477:
			case 478:
			case 479:
			case 480:
			case 481:
			case 482:
			case 483:
			case 484:
			case 485:
			case 486:
			case 487:
			case 488:
			case 489:
			case 490:
			case 491:
			case 492:
			case 493:
			case 494:
			case 495:
			case 496:
			case 497:
			case 498:
			case 499:
			case 500:
			case 501:
			case 502:
			case 503:
			case 504:
			case 505:
			case 506:
			case 507:
			case 508:
			case 509:
			case 510:
			case 511:
			case 512:
			case 513:
			case 514:
			case 515:
			case 516:
			case 517:
			case 518:
			case 519:
			case 520:
			case 521:
			case 522:
			case 523:
			case 524:
			case 525:
			case 526:
			case 527:
			case 528:
			case 529:
			case 530:
			case 531:
			case 532:
			case 533:
			case 534:
			case 535:
			case 536:
			case 537:
			case 538:
			case 539:
			case 540:
			case 541:
			case 542:
			case 543:
			case 544:
			case 545:
			case 547:
			case 548:
			case 549:
			case 550:
			case 551:
			case 552:
			case 553:
			case 554:
			case 555:
			case 556:
			case 557:
			case 558:
			case 559:
			case 560:
			case 561:
			case 562:
			case 563:
			case 564:
			case 565:
			case 566:
			case 567:
			case 568:
			case 569:
			case 570:
			case 571:
			case 572:
			case 573:
			case 574:
			case 575:
			case 576:
			case 577:
			case 578:
			case 580:
			case 581:
			case 582:
			case 583:
			case 584:
			case 585:
			case 586:
			case 587:
			case 588:
			case 593:
			case 594:
			case 595:
			case 596:
			case 597:
			case 598:
			case 599:
			case 600:
			case 601:
			case 602:
			case 603:
			case 604:
			case 605:
			case 606:
			case 607:
			case 608:
			case 609:
			case 610:
			case 612:
			case 613:
			case 614:
			case 615:
			case 616:
			case 617:
			case 618:
			case 619:
			case 620:
			case 621:
			case 622:
			case 623:
			case 624:
			case 625:
			case 626:
			case 627:
			case 628:
			case 629:
			case 630:
			case 631:
			case 632:
			case 633:
			case 634:
			case 635:
			case 636:
			case 637:
			case 638:
			case 639:
			case 640:
			case 641:
			case 642:
			case 643:
			case 644:
			case 645:
			case 646:
			case 647:
			case 648:
			case 649:
			case 650:
			case 651:
			case 652:
			case 653:
			case 654:
			case 655:
			case 656:
			case 657:
			case 658:
			case 659:
			case 660:
			case 661:
			case 662:
			case 663:
			case 664:
			case 665:
			case 666:
			case 667:
			case 668:
			case 669:
			case 670:
			case 671:
			case 672:
			case 673:
			case 674:
			case 675:
			case 676:
			case 677:
			case 678:
			case 679:
			case 680:
			case 681:
			case 682:
			case 683:
			case 684:
			case 685:
			case 686:
			case 687:
			case 688:
			case 689:
			case 690:
			case 691:
			case 692:
			case 693:
			case 696:
			case 697:
			case 698:
			case 699:
			case 700:
			case 701:
			case 702:
			case 703:
			case 704:
			case 705:
			case 706:
			case 707:
			case 708:
			case 709:
			case 710:
			case 711:
			case 712:
			case 713:
			case 714:
			case 715:
			case 716:
			case 717:
			case 718:
			case 719:
			case 720:
			case 721:
			case 722:
			case 723:
			case 724:
			case 725:
			case 726:
			case 727:
			case 728:
			case 729:
			case 730:
			case 731:
			case 732:
			case 733:
			case 734:
			case 735:
			case 736:
			case 737:
			case 738:
			case 739:
			case 740:
			case 741:
			case 742:
			case 743:
			case 744:
			case 745:
			case 746:
			case 747:
			case 748:
			case 749:
			case 750:
			case 751:
			case 752:
			case 753:
			case 754:
			case 755:
			case 756:
			case 757:
			case 758:
			case 759:
			case 760:
			case 761:
			case 762:
			case 763:
			case 764:
			case 765:
			case 766:
			case 767:
			case 768:
			case 769:
			case 770:
			case 771:
			case 772:
			case 773:
			case 774:
			case 775:
			case 776:
			case 777:
			case 778:
			case 779:
			case 780:
			case 781:
			case 782:
			case 783:
			case 784:
			case 785:
			case 786:
			case 787:
			case 788:
			case 789:
			case 790:
			case 791:
			case 792:
			case 793:
			case 794:
			case 795:
			case 796:
			case 797:
			case 798:
			case 799:
			case 800:
			case 801:
			case 802:
			case 803:
			case 804:
			case 805:
			case 806:
			case 807:
			case 808:
			case 809:
			case 810:
			case 811:
			case 812:
			case 813:
			case 814:
			case 815:
			case 816:
			case 817:
			case 818:
			case 819:
			case 820:
			case 821:
			case 822:
			case 823:
			case 824:
			case 825:
			case 826:
			case 827:
			case 828:
			case 829:
			case 830:
			case 831:
			case 832:
			case 833:
			case 834:
			case 835:
			case 836:
			case 837:
			case 838:
			case 839:
			case 840:
			case 841:
			case 842:
			case 843:
			case 844:
			case 845:
			case 846:
			case 847:
			case 848:
			case 849:
			case 850:
			case 851:
			case 852:
			case 853:
			case 854:
			case 855:
			case 856:
			case 857:
			case 858:
			case 859:
			case 860:
			case 861:
			case 862:
			case 863:
			case 864:
			case 865:
			case 866:
			case 867:
			case 868:
			case 869:
			case 870:
			case 871:
			case 872:
			case 873:
			case 874:
			case 875:
			case 876:
			case 877:
			case 878:
			case 879:
			case 880:
			case 881:
			case 882:
			case 883:
			case 884:
			case 885:
			case 886:
			case 887:
			case 888:
			case 889:
			case 890:
			case 891:
			case 892:
			case 893:
			case 894:
			case 895:
			case 896:
			case 897:
			case 898:
			case 899:
			case 900:
			case 901:
			case 902:
			case 903:
			case 904:
			case 905:
			case 906:
			case 907:
			case 908:
			case 909:
			case 910:
			case 911:
			case 912:
			case 913:
			case 914:
			case 915:
			case 916:
			case 917:
			case 918:
			case 919:
			case 920:
			case 921:
			case 922:
			case 923:
			case 924:
			case 925:
			case 926:
			case 927:
			case 928:
			case 929:
			case 930:
			case 931:
			case 932:
			case 933:
			case 934:
			case 935:
			case 936:
			case 937:
			case 938:
			case 939:
			case 940:
			case 941:
			case 942:
			case 943:
			case 944:
			case 945:
			case 946:
			case 947:
			case 948:
			case 949:
			case 950:
			case 951:
			case 952:
			case 953:
			case 954:
			case 955:
			case 956:
			case 957:
			case 958:
			case 959:
			case 960:
			case 961:
			case 962:
			case 963:
			case 964:
			case 965:
			case 966:
			case 967:
			case 968:
			case 969:
			case 970:
			case 971:
			case 972:
			case 973:
			case 974:
			case 975:
			case 976:
			case 977:
			case 978:
			case 979:
			case 980:
			case 981:
			case 982:
			case 983:
			case 984:
			case 985:
			case 986:
			case 987:
			case 988:
			case 989:
			case 990:
			case 991:
			case 992:
			case 993:
			case 1020:
			case 1032:
			case 1035:
			case 1043:
			case 1044:
				{
				this.state = 988;
				this.routineBody();
				}
				break;
			case 131:
				{
				this.state = 989;
				this.returnStatement();
				}
				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 createServer(): CreateServerContext {
		let localctx: CreateServerContext = new CreateServerContext(this, this._ctx, this.state);
		this.enterRule(localctx, 38, SqlParser.RULE_createServer);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 992;
			this.match(SqlParser.CREATE);
			this.state = 993;
			this.match(SqlParser.SERVER);
			this.state = 994;
			this.uid();
			this.state = 995;
			this.match(SqlParser.FOREIGN);
			this.state = 996;
			this.match(SqlParser.DATA);
			this.state = 997;
			this.match(SqlParser.WRAPPER);
			this.state = 998;
			localctx._wrapperName = this._input.LT(1);
			_la = this._input.LA(1);
			if(!(_la===441 || _la===1035)) {
			    localctx._wrapperName = this._errHandler.recoverInline(this);
			}
			else {
				this._errHandler.reportMatch(this);
			    this.consume();
			}
			this.state = 999;
			this.match(SqlParser.OPTIONS);
			this.state = 1000;
			this.match(SqlParser.LR_BRACKET);
			this.state = 1001;
			this.serverOption();
			this.state = 1006;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la===1022) {
				{
				{
				this.state = 1002;
				this.match(SqlParser.COMMA);
				this.state = 1003;
				this.serverOption();
				}
				}
				this.state = 1008;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			}
			this.state = 1009;
			this.match(SqlParser.RR_BRACKET);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public createTable(): CreateTableContext {
		let localctx: CreateTableContext = new CreateTableContext(this, this._ctx, this.state);
		this.enterRule(localctx, 40, SqlParser.RULE_createTable);
		let _la: number;
		try {
			let _alt: number;
			this.state = 1089;
			this._errHandler.sync(this);
			switch ( this._interp.adaptivePredict(this._input, 74, this._ctx) ) {
			case 1:
				localctx = new CopyCreateTableContext(this, localctx);
				this.enterOuterAlt(localctx, 1);
				{
				this.state = 1011;
				this.match(SqlParser.CREATE);
				this.state = 1013;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===557) {
					{
					this.state = 1012;
					this.match(SqlParser.TEMPORARY);
					}
				}

				this.state = 1015;
				this.match(SqlParser.TABLE);
				this.state = 1017;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===69) {
					{
					this.state = 1016;
					this.ifNotExists();
					}
				}

				this.state = 1019;
				this.tableName();
				this.state = 1027;
				this._errHandler.sync(this);
				switch (this._input.LA(1)) {
				case 88:
					{
					this.state = 1020;
					this.match(SqlParser.LIKE);
					this.state = 1021;
					this.tableName();
					}
					break;
				case 1020:
					{
					this.state = 1022;
					this.match(SqlParser.LR_BRACKET);
					this.state = 1023;
					this.match(SqlParser.LIKE);
					this.state = 1024;
					(localctx as CopyCreateTableContext)._parenthesisTable = this.tableName();
					this.state = 1025;
					this.match(SqlParser.RR_BRACKET);
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				}
				break;
			case 2:
				localctx = new QueryCreateTableContext(this, localctx);
				this.enterOuterAlt(localctx, 2);
				{
				this.state = 1029;
				this.match(SqlParser.CREATE);
				this.state = 1031;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===557) {
					{
					this.state = 1030;
					this.match(SqlParser.TEMPORARY);
					}
				}

				this.state = 1033;
				this.match(SqlParser.TABLE);
				this.state = 1035;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===69) {
					{
					this.state = 1034;
					this.ifNotExists();
					}
				}

				this.state = 1037;
				this.tableName();
				this.state = 1039;
				this._errHandler.sync(this);
				switch ( this._interp.adaptivePredict(this._input, 61, this._ctx) ) {
				case 1:
					{
					this.state = 1038;
					this.createDefinitions();
					}
					break;
				}
				this.state = 1051;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (((((_la - 22)) & ~0x1F) === 0 && ((1 << (_la - 22)) & 65541) !== 0) || _la===72 || _la===162 || ((((_la - 280)) & ~0x1F) === 0 && ((1 << (_la - 280)) & 1107345411) !== 0) || ((((_la - 312)) & ~0x1F) === 0 && ((1 << (_la - 312)) & 1208027137) !== 0) || _la===384 || _la===395 || _la===428 || _la===437 || _la===462 || _la===468 || ((((_la - 513)) & ~0x1F) === 0 && ((1 << (_la - 513)) & 939524097) !== 0) || _la===545 || _la===556 || _la===731) {
					{
					this.state = 1041;
					this.tableOption();
					this.state = 1048;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
					while (((((_la - 22)) & ~0x1F) === 0 && ((1 << (_la - 22)) & 65541) !== 0) || _la===72 || _la===162 || ((((_la - 280)) & ~0x1F) === 0 && ((1 << (_la - 280)) & 1107345411) !== 0) || ((((_la - 312)) & ~0x1F) === 0 && ((1 << (_la - 312)) & 1208027137) !== 0) || _la===384 || _la===395 || _la===428 || _la===437 || _la===462 || _la===468 || ((((_la - 513)) & ~0x1F) === 0 && ((1 << (_la - 513)) & 939524097) !== 0) || _la===545 || _la===556 || _la===731 || _la===1022) {
						{
						{
						this.state = 1043;
						this._errHandler.sync(this);
						_la = this._input.LA(1);
						if (_la===1022) {
							{
							this.state = 1042;
							this.match(SqlParser.COMMA);
							}
						}

						this.state = 1045;
						this.tableOption();
						}
						}
						this.state = 1050;
						this._errHandler.sync(this);
						_la = this._input.LA(1);
					}
					}
				}

				this.state = 1054;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===115) {
					{
					this.state = 1053;
					this.partitionDefinitions();
					}
				}

				this.state = 1057;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===70 || _la===127) {
					{
					this.state = 1056;
					(localctx as QueryCreateTableContext)._keyViolate = this._input.LT(1);
					_la = this._input.LA(1);
					if(!(_la===70 || _la===127)) {
					    (localctx as QueryCreateTableContext)._keyViolate = this._errHandler.recoverInline(this);
					}
					else {
						this._errHandler.reportMatch(this);
					    this.consume();
					}
					}
				}

				this.state = 1060;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===11) {
					{
					this.state = 1059;
					this.match(SqlParser.AS);
					}
				}

				this.state = 1062;
				this.selectStatement();
				}
				break;
			case 3:
				localctx = new ColumnCreateTableContext(this, localctx);
				this.enterOuterAlt(localctx, 3);
				{
				this.state = 1064;
				this.match(SqlParser.CREATE);
				this.state = 1066;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===557) {
					{
					this.state = 1065;
					this.match(SqlParser.TEMPORARY);
					}
				}

				this.state = 1068;
				this.match(SqlParser.TABLE);
				this.state = 1070;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===69) {
					{
					this.state = 1069;
					this.ifNotExists();
					}
				}

				this.state = 1072;
				this.tableName();
				this.state = 1073;
				this.createDefinitions();
				this.state = 1084;
				this._errHandler.sync(this);
				switch ( this._interp.adaptivePredict(this._input, 72, this._ctx) ) {
				case 1:
					{
					this.state = 1074;
					this.tableOption();
					this.state = 1081;
					this._errHandler.sync(this);
					_alt = this._interp.adaptivePredict(this._input, 71, this._ctx);
					while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) {
						if (_alt === 1) {
							{
							{
							this.state = 1076;
							this._errHandler.sync(this);
							_la = this._input.LA(1);
							if (_la===1022) {
								{
								this.state = 1075;
								this.match(SqlParser.COMMA);
								}
							}

							this.state = 1078;
							this.tableOption();
							}
							}
						}
						this.state = 1083;
						this._errHandler.sync(this);
						_alt = this._interp.adaptivePredict(this._input, 71, this._ctx);
					}
					}
					break;
				}
				this.state = 1087;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===115) {
					{
					this.state = 1086;
					this.partitionDefinitions();
					}
				}

				}
				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 createTablespaceInnodb(): CreateTablespaceInnodbContext {
		let localctx: CreateTablespaceInnodbContext = new CreateTablespaceInnodbContext(this, this._ctx, this.state);
		this.enterRule(localctx, 42, SqlParser.RULE_createTablespaceInnodb);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 1091;
			this.match(SqlParser.CREATE);
			this.state = 1092;
			this.match(SqlParser.TABLESPACE);
			this.state = 1093;
			this.uid();
			this.state = 1094;
			this.match(SqlParser.ADD);
			this.state = 1095;
			this.match(SqlParser.DATAFILE);
			this.state = 1096;
			localctx._datafile = this.match(SqlParser.STRING_LITERAL);
			this.state = 1100;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===360) {
				{
				this.state = 1097;
				this.match(SqlParser.FILE_BLOCK_SIZE);
				this.state = 1098;
				this.match(SqlParser.EQUAL_SYMBOL);
				this.state = 1099;
				localctx._fileBlockSize = this.fileSizeLiteral();
				}
			}

			this.state = 1107;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===342) {
				{
				this.state = 1102;
				this.match(SqlParser.ENGINE);
				this.state = 1104;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===1011) {
					{
					this.state = 1103;
					this.match(SqlParser.EQUAL_SYMBOL);
					}
				}

				this.state = 1106;
				this.engineName();
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public createTablespaceNdb(): CreateTablespaceNdbContext {
		let localctx: CreateTablespaceNdbContext = new CreateTablespaceNdbContext(this, this._ctx, this.state);
		this.enterRule(localctx, 44, SqlParser.RULE_createTablespaceNdb);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 1109;
			this.match(SqlParser.CREATE);
			this.state = 1110;
			this.match(SqlParser.TABLESPACE);
			this.state = 1111;
			this.uid();
			this.state = 1112;
			this.match(SqlParser.ADD);
			this.state = 1113;
			this.match(SqlParser.DATAFILE);
			this.state = 1114;
			localctx._datafile = this.match(SqlParser.STRING_LITERAL);
			this.state = 1115;
			this.match(SqlParser.USE);
			this.state = 1116;
			this.match(SqlParser.LOGFILE);
			this.state = 1117;
			this.match(SqlParser.GROUP);
			this.state = 1118;
			this.uid();
			this.state = 1124;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===356) {
				{
				this.state = 1119;
				this.match(SqlParser.EXTENT_SIZE);
				this.state = 1121;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===1011) {
					{
					this.state = 1120;
					this.match(SqlParser.EQUAL_SYMBOL);
					}
				}

				this.state = 1123;
				localctx._extentSize = this.fileSizeLiteral();
				}
			}

			this.state = 1131;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===382) {
				{
				this.state = 1126;
				this.match(SqlParser.INITIAL_SIZE);
				this.state = 1128;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===1011) {
					{
					this.state = 1127;
					this.match(SqlParser.EQUAL_SYMBOL);
					}
				}

				this.state = 1130;
				localctx._initialSize = this.fileSizeLiteral();
				}
			}

			this.state = 1138;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===279) {
				{
				this.state = 1133;
				this.match(SqlParser.AUTOEXTEND_SIZE);
				this.state = 1135;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===1011) {
					{
					this.state = 1134;
					this.match(SqlParser.EQUAL_SYMBOL);
					}
				}

				this.state = 1137;
				localctx._autoextendSize = this.fileSizeLiteral();
				}
			}

			this.state = 1145;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===429) {
				{
				this.state = 1140;
				this.match(SqlParser.MAX_SIZE);
				this.state = 1142;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===1011) {
					{
					this.state = 1141;
					this.match(SqlParser.EQUAL_SYMBOL);
					}
				}

				this.state = 1144;
				localctx._maxSize = this.fileSizeLiteral();
				}
			}

			this.state = 1152;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===449) {
				{
				this.state = 1147;
				this.match(SqlParser.NODEGROUP);
				this.state = 1149;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===1011) {
					{
					this.state = 1148;
					this.match(SqlParser.EQUAL_SYMBOL);
					}
				}

				this.state = 1151;
				this.uid();
				}
			}

			this.state = 1155;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===581) {
				{
				this.state = 1154;
				this.match(SqlParser.WAIT);
				}
			}

			this.state = 1162;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===305) {
				{
				this.state = 1157;
				this.match(SqlParser.COMMENT);
				this.state = 1159;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===1011) {
					{
					this.state = 1158;
					this.match(SqlParser.EQUAL_SYMBOL);
					}
				}

				this.state = 1161;
				localctx._comment = this.match(SqlParser.STRING_LITERAL);
				}
			}

			this.state = 1164;
			this.match(SqlParser.ENGINE);
			this.state = 1166;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===1011) {
				{
				this.state = 1165;
				this.match(SqlParser.EQUAL_SYMBOL);
				}
			}

			this.state = 1168;
			this.engineName();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public createTrigger(): CreateTriggerContext {
		let localctx: CreateTriggerContext = new CreateTriggerContext(this, this._ctx, this.state);
		this.enterRule(localctx, 46, SqlParser.RULE_createTrigger);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 1170;
			this.match(SqlParser.CREATE);
			this.state = 1172;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===327) {
				{
				this.state = 1171;
				this.ownerStatement();
				}
			}

			this.state = 1174;
			this.match(SqlParser.TRIGGER);
			this.state = 1175;
			localctx._thisTrigger = this.fullId();
			this.state = 1176;
			localctx._triggerTime = this._input.LT(1);
			_la = this._input.LA(1);
			if(!(_la===13 || _la===272)) {
			    localctx._triggerTime = this._errHandler.recoverInline(this);
			}
			else {
				this._errHandler.reportMatch(this);
			    this.consume();
			}
			this.state = 1177;
			localctx._triggerEvent = this._input.LT(1);
			_la = this._input.LA(1);
			if(!(_la===40 || _la===76 || _la===166)) {
			    localctx._triggerEvent = this._errHandler.recoverInline(this);
			}
			else {
				this._errHandler.reportMatch(this);
			    this.consume();
			}
			this.state = 1178;
			this.match(SqlParser.ON);
			this.state = 1179;
			this.tableName();
			this.state = 1180;
			this.match(SqlParser.FOR);
			this.state = 1181;
			this.match(SqlParser.EACH);
			this.state = 1182;
			this.match(SqlParser.ROW);
			this.state = 1185;
			this._errHandler.sync(this);
			switch ( this._interp.adaptivePredict(this._input, 93, this._ctx) ) {
			case 1:
				{
				this.state = 1183;
				localctx._triggerPlace = this._input.LT(1);
				_la = this._input.LA(1);
				if(!(_la===365 || _la===474)) {
				    localctx._triggerPlace = this._errHandler.recoverInline(this);
				}
				else {
					this._errHandler.reportMatch(this);
				    this.consume();
				}
				this.state = 1184;
				localctx._otherTrigger = this.fullId();
				}
				break;
			}
			this.state = 1187;
			this.routineBody();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public createView(): CreateViewContext {
		let localctx: CreateViewContext = new CreateViewContext(this, this._ctx, this.state);
		this.enterRule(localctx, 48, SqlParser.RULE_createView);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 1189;
			this.match(SqlParser.CREATE);
			this.state = 1192;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===110) {
				{
				this.state = 1190;
				this.match(SqlParser.OR);
				this.state = 1191;
				this.match(SqlParser.REPLACE);
				}
			}

			this.state = 1197;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===274) {
				{
				this.state = 1194;
				this.match(SqlParser.ALGORITHM);
				this.state = 1195;
				this.match(SqlParser.EQUAL_SYMBOL);
				this.state = 1196;
				localctx._algType = this._input.LT(1);
				_la = this._input.LA(1);
				if(!(_la===433 || _la===558 || _la===565)) {
				    localctx._algType = this._errHandler.recoverInline(this);
				}
				else {
					this._errHandler.reportMatch(this);
				    this.consume();
				}
				}
			}

			this.state = 1200;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===327) {
				{
				this.state = 1199;
				this.ownerStatement();
				}
			}

			this.state = 1205;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===143) {
				{
				this.state = 1202;
				this.match(SqlParser.SQL);
				this.state = 1203;
				this.match(SqlParser.SECURITY);
				this.state = 1204;
				localctx._secContext = this._input.LT(1);
				_la = this._input.LA(1);
				if(!(_la===327 || _la===388)) {
				    localctx._secContext = this._errHandler.recoverInline(this);
				}
				else {
					this._errHandler.reportMatch(this);
				    this.consume();
				}
				}
			}

			this.state = 1207;
			this.match(SqlParser.VIEW);
			this.state = 1208;
			this.fullId();
			this.state = 1213;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===1020) {
				{
				this.state = 1209;
				this.match(SqlParser.LR_BRACKET);
				this.state = 1210;
				this.uidList();
				this.state = 1211;
				this.match(SqlParser.RR_BRACKET);
				}
			}

			this.state = 1215;
			this.match(SqlParser.AS);
			this.state = 1216;
			this.selectStatement();
			this.state = 1223;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===174) {
				{
				this.state = 1217;
				this.match(SqlParser.WITH);
				this.state = 1219;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===290 || _la===402) {
					{
					this.state = 1218;
					localctx._checkOption = this._input.LT(1);
					_la = this._input.LA(1);
					if(!(_la===290 || _la===402)) {
					    localctx._checkOption = this._errHandler.recoverInline(this);
					}
					else {
						this._errHandler.reportMatch(this);
					    this.consume();
					}
					}
				}

				this.state = 1221;
				this.match(SqlParser.CHECK);
				this.state = 1222;
				this.match(SqlParser.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 createDatabaseOption(): CreateDatabaseOptionContext {
		let localctx: CreateDatabaseOptionContext = new CreateDatabaseOptionContext(this, this._ctx, this.state);
		this.enterRule(localctx, 50, SqlParser.RULE_createDatabaseOption);
		let _la: number;
		try {
			this.state = 1248;
			this._errHandler.sync(this);
			switch ( this._interp.adaptivePredict(this._input, 107, this._ctx) ) {
			case 1:
				this.enterOuterAlt(localctx, 1);
				{
				this.state = 1226;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===38) {
					{
					this.state = 1225;
					this.match(SqlParser.DEFAULT);
					}
				}

				this.state = 1231;
				this._errHandler.sync(this);
				switch (this._input.LA(1)) {
				case 22:
					{
					this.state = 1228;
					this.match(SqlParser.CHARACTER);
					this.state = 1229;
					this.match(SqlParser.SET);
					}
					break;
				case 731:
					{
					this.state = 1230;
					this.match(SqlParser.CHARSET);
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				this.state = 1234;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===1011) {
					{
					this.state = 1233;
					this.match(SqlParser.EQUAL_SYMBOL);
					}
				}

				this.state = 1238;
				this._errHandler.sync(this);
				switch (this._input.LA(1)) {
				case 208:
				case 637:
				case 638:
				case 639:
				case 640:
				case 641:
				case 642:
				case 643:
				case 644:
				case 645:
				case 646:
				case 647:
				case 648:
				case 649:
				case 650:
				case 651:
				case 652:
				case 653:
				case 654:
				case 655:
				case 656:
				case 657:
				case 658:
				case 659:
				case 660:
				case 661:
				case 662:
				case 663:
				case 664:
				case 665:
				case 666:
				case 667:
				case 668:
				case 669:
				case 670:
				case 671:
				case 672:
				case 673:
				case 674:
				case 675:
				case 676:
				case 1032:
				case 1035:
					{
					this.state = 1236;
					this.charsetName();
					}
					break;
				case 38:
					{
					this.state = 1237;
					this.match(SqlParser.DEFAULT);
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				}
				break;
			case 2:
				this.enterOuterAlt(localctx, 2);
				{
				this.state = 1241;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===38) {
					{
					this.state = 1240;
					this.match(SqlParser.DEFAULT);
					}
				}

				this.state = 1243;
				this.match(SqlParser.COLLATE);
				this.state = 1245;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===1011) {
					{
					this.state = 1244;
					this.match(SqlParser.EQUAL_SYMBOL);
					}
				}

				this.state = 1247;
				this.collationName();
				}
				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 ownerStatement(): OwnerStatementContext {
		let localctx: OwnerStatementContext = new OwnerStatementContext(this, this._ctx, this.state);
		this.enterRule(localctx, 52, SqlParser.RULE_ownerStatement);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 1250;
			this.match(SqlParser.DEFINER);
			this.state = 1251;
			this.match(SqlParser.EQUAL_SYMBOL);
			this.state = 1258;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case 1035:
			case 1043:
			case 1045:
				{
				this.state = 1252;
				this.userName();
				}
				break;
			case 33:
				{
				this.state = 1253;
				this.match(SqlParser.CURRENT_USER);
				this.state = 1256;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===1020) {
					{
					this.state = 1254;
					this.match(SqlParser.LR_BRACKET);
					this.state = 1255;
					this.match(SqlParser.RR_BRACKET);
					}
				}

				}
				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 scheduleExpression(): ScheduleExpressionContext {
		let localctx: ScheduleExpressionContext = new ScheduleExpressionContext(this, this._ctx, this.state);
		this.enterRule(localctx, 54, SqlParser.RULE_scheduleExpression);
		let _la: number;
		try {
			this.state = 1294;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case 276:
				localctx = new PreciseScheduleContext(this, localctx);
				this.enterOuterAlt(localctx, 1);
				{
				this.state = 1260;
				this.match(SqlParser.AT);
				this.state = 1261;
				this.timestampValue();
				this.state = 1265;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				while (_la===1006) {
					{
					{
					this.state = 1262;
					this.intervalExpr();
					}
					}
					this.state = 1267;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
				}
				}
				break;
			case 350:
				localctx = new IntervalScheduleContext(this, localctx);
				this.enterOuterAlt(localctx, 2);
				{
				this.state = 1268;
				this.match(SqlParser.EVERY);
				this.state = 1271;
				this._errHandler.sync(this);
				switch ( this._interp.adaptivePredict(this._input, 111, this._ctx) ) {
				case 1:
					{
					this.state = 1269;
					this.decimalLiteral();
					}
					break;
				case 2:
					{
					this.state = 1270;
					this.expression(0);
					}
					break;
				}
				this.state = 1273;
				this.intervalType();
				this.state = 1282;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===539) {
					{
					this.state = 1274;
					this.match(SqlParser.STARTS);
					this.state = 1275;
					(localctx as IntervalScheduleContext)._startTimestamp = this.timestampValue();
					this.state = 1279;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
					while (_la===1006) {
						{
						{
						this.state = 1276;
						(localctx as IntervalScheduleContext)._intervalExpr = this.intervalExpr();
						(localctx as IntervalScheduleContext)._startIntervals.push((localctx as IntervalScheduleContext)._intervalExpr);
						}
						}
						this.state = 1281;
						this._errHandler.sync(this);
						_la = this._input.LA(1);
					}
					}
				}

				this.state = 1292;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===341) {
					{
					this.state = 1284;
					this.match(SqlParser.ENDS);
					this.state = 1285;
					(localctx as IntervalScheduleContext)._endTimestamp = this.timestampValue();
					this.state = 1289;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
					while (_la===1006) {
						{
						{
						this.state = 1286;
						(localctx as IntervalScheduleContext)._intervalExpr = this.intervalExpr();
						(localctx as IntervalScheduleContext)._endIntervals.push((localctx as IntervalScheduleContext)._intervalExpr);
						}
						}
						this.state = 1291;
						this._errHandler.sync(this);
						_la = this._input.LA(1);
					}
					}
				}

				}
				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 timestampValue(): TimestampValueContext {
		let localctx: TimestampValueContext = new TimestampValueContext(this, this._ctx, this.state);
		this.enterRule(localctx, 56, SqlParser.RULE_timestampValue);
		try {
			this.state = 1300;
			this._errHandler.sync(this);
			switch ( this._interp.adaptivePredict(this._input, 117, this._ctx) ) {
			case 1:
				this.enterOuterAlt(localctx, 1);
				{
				this.state = 1296;
				this.match(SqlParser.CURRENT_TIMESTAMP);
				}
				break;
			case 2:
				this.enterOuterAlt(localctx, 2);
				{
				this.state = 1297;
				this.stringLiteral();
				}
				break;
			case 3:
				this.enterOuterAlt(localctx, 3);
				{
				this.state = 1298;
				this.decimalLiteral();
				}
				break;
			case 4:
				this.enterOuterAlt(localctx, 4);
				{
				this.state = 1299;
				this.expression(0);
				}
				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 intervalExpr(): IntervalExprContext {
		let localctx: IntervalExprContext = new IntervalExprContext(this, this._ctx, this.state);
		this.enterRule(localctx, 58, SqlParser.RULE_intervalExpr);
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 1302;
			this.match(SqlParser.PLUS);
			this.state = 1303;
			this.match(SqlParser.INTERVAL);
			this.state = 1306;
			this._errHandler.sync(this);
			switch ( this._interp.adaptivePredict(this._input, 118, this._ctx) ) {
			case 1:
				{
				this.state = 1304;
				this.decimalLiteral();
				}
				break;
			case 2:
				{
				this.state = 1305;
				this.expression(0);
				}
				break;
			}
			this.state = 1308;
			this.intervalType();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public intervalType(): IntervalTypeContext {
		let localctx: IntervalTypeContext = new IntervalTypeContext(this, this._ctx, this.state);
		this.enterRule(localctx, 60, SqlParser.RULE_intervalType);
		try {
			this.state = 1323;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case 594:
			case 595:
			case 596:
			case 597:
			case 598:
			case 599:
			case 600:
			case 601:
				this.enterOuterAlt(localctx, 1);
				{
				this.state = 1310;
				this.intervalTypeBase();
				}
				break;
			case 203:
				this.enterOuterAlt(localctx, 2);
				{
				this.state = 1311;
				this.match(SqlParser.YEAR);
				}
				break;
			case 222:
				this.enterOuterAlt(localctx, 3);
				{
				this.state = 1312;
				this.match(SqlParser.YEAR_MONTH);
				}
				break;
			case 223:
				this.enterOuterAlt(localctx, 4);
				{
				this.state = 1313;
				this.match(SqlParser.DAY_HOUR);
				}
				break;
			case 224:
				this.enterOuterAlt(localctx, 5);
				{
				this.state = 1314;
				this.match(SqlParser.DAY_MINUTE);
				}
				break;
			case 225:
				this.enterOuterAlt(localctx, 6);
				{
				this.state = 1315;
				this.match(SqlParser.DAY_SECOND);
				}
				break;
			case 226:
				this.enterOuterAlt(localctx, 7);
				{
				this.state = 1316;
				this.match(SqlParser.HOUR_MINUTE);
				}
				break;
			case 227:
				this.enterOuterAlt(localctx, 8);
				{
				this.state = 1317;
				this.match(SqlParser.HOUR_SECOND);
				}
				break;
			case 228:
				this.enterOuterAlt(localctx, 9);
				{
				this.state = 1318;
				this.match(SqlParser.MINUTE_SECOND);
				}
				break;
			case 229:
				this.enterOuterAlt(localctx, 10);
				{
				this.state = 1319;
				this.match(SqlParser.SECOND_MICROSECOND);
				}
				break;
			case 230:
				this.enterOuterAlt(localctx, 11);
				{
				this.state = 1320;
				this.match(SqlParser.MINUTE_MICROSECOND);
				}
				break;
			case 231:
				this.enterOuterAlt(localctx, 12);
				{
				this.state = 1321;
				this.match(SqlParser.HOUR_MICROSECOND);
				}
				break;
			case 232:
				this.enterOuterAlt(localctx, 13);
				{
				this.state = 1322;
				this.match(SqlParser.DAY_MICROSECOND);
				}
				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 enableType(): EnableTypeContext {
		let localctx: EnableTypeContext = new EnableTypeContext(this, this._ctx, this.state);
		this.enterRule(localctx, 62, SqlParser.RULE_enableType);
		try {
			this.state = 1330;
			this._errHandler.sync(this);
			switch ( this._interp.adaptivePredict(this._input, 120, this._ctx) ) {
			case 1:
				this.enterOuterAlt(localctx, 1);
				{
				this.state = 1325;
				this.match(SqlParser.ENABLE);
				}
				break;
			case 2:
				this.enterOuterAlt(localctx, 2);
				{
				this.state = 1326;
				this.match(SqlParser.DISABLE);
				}
				break;
			case 3:
				this.enterOuterAlt(localctx, 3);
				{
				this.state = 1327;
				this.match(SqlParser.DISABLE);
				this.state = 1328;
				this.match(SqlParser.ON);
				this.state = 1329;
				this.match(SqlParser.SLAVE);
				}
				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 indexType(): IndexTypeContext {
		let localctx: IndexTypeContext = new IndexTypeContext(this, this._ctx, this.state);
		this.enterRule(localctx, 64, SqlParser.RULE_indexType);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 1332;
			this.match(SqlParser.USING);
			this.state = 1333;
			_la = this._input.LA(1);
			if(!(_la===288 || _la===374)) {
			this._errHandler.recoverInline(this);
			}
			else {
				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 indexOption(): IndexOptionContext {
		let localctx: IndexOptionContext = new IndexOptionContext(this, this._ctx, this.state);
		this.enterRule(localctx, 66, SqlParser.RULE_indexOption);
		let _la: number;
		try {
			this.state = 1348;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case 395:
				this.enterOuterAlt(localctx, 1);
				{
				this.state = 1335;
				this.match(SqlParser.KEY_BLOCK_SIZE);
				this.state = 1337;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===1011) {
					{
					this.state = 1336;
					this.match(SqlParser.EQUAL_SYMBOL);
					}
				}

				this.state = 1339;
				this.fileSizeLiteral();
				}
				break;
			case 169:
				this.enterOuterAlt(localctx, 2);
				{
				this.state = 1340;
				this.indexType();
				}
				break;
			case 174:
				this.enterOuterAlt(localctx, 3);
				{
				this.state = 1341;
				this.match(SqlParser.WITH);
				this.state = 1342;
				this.match(SqlParser.PARSER);
				this.state = 1343;
				this.uid();
				}
				break;
			case 305:
				this.enterOuterAlt(localctx, 4);
				{
				this.state = 1344;
				this.match(SqlParser.COMMENT);
				this.state = 1345;
				this.match(SqlParser.STRING_LITERAL);
				}
				break;
			case 387:
				this.enterOuterAlt(localctx, 5);
				{
				this.state = 1346;
				this.match(SqlParser.INVISIBLE);
				}
				break;
			case 580:
				this.enterOuterAlt(localctx, 6);
				{
				this.state = 1347;
				this.match(SqlParser.VISIBLE);
				}
				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 procedureParameter(): ProcedureParameterContext {
		let localctx: ProcedureParameterContext = new ProcedureParameterContext(this, this._ctx, this.state);
		this.enterRule(localctx, 68, SqlParser.RULE_procedureParameter);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 1351;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===71 || _la===75 || _la===112) {
				{
				this.state = 1350;
				localctx._direction = this._input.LT(1);
				_la = this._input.LA(1);
				if(!(_la===71 || _la===75 || _la===112)) {
				    localctx._direction = this._errHandler.recoverInline(this);
				}
				else {
					this._errHandler.reportMatch(this);
				    this.consume();
				}
				}
			}

			this.state = 1353;
			this.uid();
			this.state = 1354;
			this.dataType();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public functionParameter(): FunctionParameterContext {
		let localctx: FunctionParameterContext = new FunctionParameterContext(this, this._ctx, this.state);
		this.enterRule(localctx, 70, SqlParser.RULE_functionParameter);
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 1356;
			this.uid();
			this.state = 1357;
			this.dataType();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public routineOption(): RoutineOptionContext {
		let localctx: RoutineOptionContext = new RoutineOptionContext(this, this._ctx, this.state);
		this.enterRule(localctx, 72, SqlParser.RULE_routineOption);
		let _la: number;
		try {
			this.state = 1382;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case 305:
				localctx = new RoutineCommentContext(this, localctx);
				this.enterOuterAlt(localctx, 1);
				{
				this.state = 1359;
				this.match(SqlParser.COMMENT);
				this.state = 1360;
				this.match(SqlParser.STRING_LITERAL);
				}
				break;
			case 396:
				localctx = new RoutineLanguageContext(this, localctx);
				this.enterOuterAlt(localctx, 2);
				{
				this.state = 1361;
				this.match(SqlParser.LANGUAGE);
				this.state = 1362;
				this.match(SqlParser.SQL);
				}
				break;
			case 43:
			case 102:
				localctx = new RoutineBehaviorContext(this, localctx);
				this.enterOuterAlt(localctx, 3);
				{
				this.state = 1364;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===102) {
					{
					this.state = 1363;
					this.match(SqlParser.NOT);
					}
				}

				this.state = 1366;
				this.match(SqlParser.DETERMINISTIC);
				}
				break;
			case 100:
			case 121:
			case 317:
			case 448:
				localctx = new RoutineDataContext(this, localctx);
				this.enterOuterAlt(localctx, 4);
				{
				this.state = 1377;
				this._errHandler.sync(this);
				switch (this._input.LA(1)) {
				case 317:
					{
					this.state = 1367;
					this.match(SqlParser.CONTAINS);
					this.state = 1368;
					this.match(SqlParser.SQL);
					}
					break;
				case 448:
					{
					this.state = 1369;
					this.match(SqlParser.NO);
					this.state = 1370;
					this.match(SqlParser.SQL);
					}
					break;
				case 121:
					{
					this.state = 1371;
					this.match(SqlParser.READS);
					this.state = 1372;
					this.match(SqlParser.SQL);
					this.state = 1373;
					this.match(SqlParser.DATA);
					}
					break;
				case 100:
					{
					this.state = 1374;
					this.match(SqlParser.MODIFIES);
					this.state = 1375;
					this.match(SqlParser.SQL);
					this.state = 1376;
					this.match(SqlParser.DATA);
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				}
				break;
			case 143:
				localctx = new RoutineSecurityContext(this, localctx);
				this.enterOuterAlt(localctx, 5);
				{
				this.state = 1379;
				this.match(SqlParser.SQL);
				this.state = 1380;
				this.match(SqlParser.SECURITY);
				this.state = 1381;
				(localctx as RoutineSecurityContext)._context = this._input.LT(1);
				_la = this._input.LA(1);
				if(!(_la===327 || _la===388)) {
				    (localctx as RoutineSecurityContext)._context = this._errHandler.recoverInline(this);
				}
				else {
					this._errHandler.reportMatch(this);
				    this.consume();
				}
				}
				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 serverOption(): ServerOptionContext {
		let localctx: ServerOptionContext = new ServerOptionContext(this, this._ctx, this.state);
		this.enterRule(localctx, 74, SqlParser.RULE_serverOption);
		try {
			this.state = 1398;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case 376:
				this.enterOuterAlt(localctx, 1);
				{
				this.state = 1384;
				this.match(SqlParser.HOST);
				this.state = 1385;
				this.match(SqlParser.STRING_LITERAL);
				}
				break;
			case 35:
				this.enterOuterAlt(localctx, 2);
				{
				this.state = 1386;
				this.match(SqlParser.DATABASE);
				this.state = 1387;
				this.match(SqlParser.STRING_LITERAL);
				}
				break;
			case 572:
				this.enterOuterAlt(localctx, 3);
				{
				this.state = 1388;
				this.match(SqlParser.USER);
				this.state = 1389;
				this.match(SqlParser.STRING_LITERAL);
				}
				break;
			case 468:
				this.enterOuterAlt(localctx, 4);
				{
				this.state = 1390;
				this.match(SqlParser.PASSWORD);
				this.state = 1391;
				this.match(SqlParser.STRING_LITERAL);
				}
				break;
			case 526:
				this.enterOuterAlt(localctx, 5);
				{
				this.state = 1392;
				this.match(SqlParser.SOCKET);
				this.state = 1393;
				this.match(SqlParser.STRING_LITERAL);
				}
				break;
			case 461:
				this.enterOuterAlt(localctx, 6);
				{
				this.state = 1394;
				this.match(SqlParser.OWNER);
				this.state = 1395;
				this.match(SqlParser.STRING_LITERAL);
				}
				break;
			case 473:
				this.enterOuterAlt(localctx, 7);
				{
				this.state = 1396;
				this.match(SqlParser.PORT);
				this.state = 1397;
				this.decimalLiteral();
				}
				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 createDefinitions(): CreateDefinitionsContext {
		let localctx: CreateDefinitionsContext = new CreateDefinitionsContext(this, this._ctx, this.state);
		this.enterRule(localctx, 76, SqlParser.RULE_createDefinitions);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 1400;
			this.match(SqlParser.LR_BRACKET);
			this.state = 1401;
			this.createDefinition();
			this.state = 1406;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la===1022) {
				{
				{
				this.state = 1402;
				this.match(SqlParser.COMMA);
				this.state = 1403;
				this.createDefinition();
				}
				}
				this.state = 1408;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			}
			this.state = 1409;
			this.match(SqlParser.RR_BRACKET);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public createDefinition(): CreateDefinitionContext {
		let localctx: CreateDefinitionContext = new CreateDefinitionContext(this, this._ctx, this.state);
		this.enterRule(localctx, 78, SqlParser.RULE_createDefinition);
		try {
			this.state = 1416;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case 32:
			case 35:
			case 44:
			case 87:
			case 105:
			case 133:
			case 151:
			case 199:
			case 200:
			case 201:
			case 202:
			case 203:
			case 216:
			case 219:
			case 221:
			case 233:
			case 234:
			case 239:
			case 262:
			case 270:
			case 271:
			case 272:
			case 273:
			case 274:
			case 275:
			case 276:
			case 277:
			case 278:
			case 279:
			case 280:
			case 281:
			case 282:
			case 283:
			case 284:
			case 285:
			case 286:
			case 287:
			case 288:
			case 289:
			case 290:
			case 291:
			case 292:
			case 293:
			case 294:
			case 295:
			case 296:
			case 297:
			case 298:
			case 299:
			case 300:
			case 301:
			case 302:
			case 303:
			case 304:
			case 305:
			case 306:
			case 307:
			case 308:
			case 309:
			case 310:
			case 311:
			case 312:
			case 313:
			case 314:
			case 315:
			case 316:
			case 317:
			case 318:
			case 319:
			case 320:
			case 321:
			case 322:
			case 323:
			case 324:
			case 325:
			case 326:
			case 327:
			case 328:
			case 329:
			case 330:
			case 331:
			case 332:
			case 333:
			case 334:
			case 335:
			case 336:
			case 337:
			case 338:
			case 339:
			case 340:
			case 341:
			case 342:
			case 343:
			case 344:
			case 345:
			case 346:
			case 347:
			case 348:
			case 349:
			case 350:
			case 351:
			case 352:
			case 353:
			case 354:
			case 355:
			case 356:
			case 357:
			case 358:
			case 359:
			case 360:
			case 361:
			case 362:
			case 363:
			case 364:
			case 365:
			case 366:
			case 367:
			case 368:
			case 369:
			case 370:
			case 371:
			case 372:
			case 373:
			case 374:
			case 375:
			case 376:
			case 377:
			case 378:
			case 379:
			case 380:
			case 381:
			case 382:
			case 383:
			case 384:
			case 385:
			case 386:
			case 387:
			case 388:
			case 389:
			case 390:
			case 391:
			case 392:
			case 393:
			case 394:
			case 395:
			case 396:
			case 397:
			case 398:
			case 399:
			case 400:
			case 401:
			case 402:
			case 403:
			case 404:
			case 405:
			case 406:
			case 407:
			case 408:
			case 409:
			case 410:
			case 411:
			case 412:
			case 413:
			case 414:
			case 415:
			case 416:
			case 417:
			case 418:
			case 419:
			case 420:
			case 421:
			case 422:
			case 423:
			case 424:
			case 425:
			case 426:
			case 427:
			case 428:
			case 429:
			case 430:
			case 431:
			case 432:
			case 433:
			case 434:
			case 435:
			case 436:
			case 437:
			case 438:
			case 439:
			case 440:
			case 441:
			case 442:
			case 443:
			case 444:
			case 445:
			case 446:
			case 447:
			case 448:
			case 449:
			case 450:
			case 451:
			case 452:
			case 453:
			case 454:
			case 455:
			case 456:
			case 457:
			case 458:
			case 459:
			case 460:
			case 461:
			case 462:
			case 463:
			case 464:
			case 465:
			case 466:
			case 467:
			case 468:
			case 469:
			case 470:
			case 471:
			case 472:
			case 473:
			case 474:
			case 475:
			case 476:
			case 477:
			case 478:
			case 479:
			case 480:
			case 481:
			case 482:
			case 483:
			case 484:
			case 485:
			case 486:
			case 487:
			case 488:
			case 489:
			case 490:
			case 491:
			case 492:
			case 493:
			case 494:
			case 495:
			case 496:
			case 497:
			case 498:
			case 499:
			case 500:
			case 501:
			case 502:
			case 503:
			case 504:
			case 505:
			case 506:
			case 507:
			case 508:
			case 509:
			case 510:
			case 511:
			case 512:
			case 513:
			case 514:
			case 515:
			case 516:
			case 517:
			case 518:
			case 519:
			case 520:
			case 521:
			case 522:
			case 523:
			case 524:
			case 525:
			case 526:
			case 527:
			case 528:
			case 529:
			case 530:
			case 531:
			case 532:
			case 533:
			case 534:
			case 535:
			case 536:
			case 537:
			case 538:
			case 539:
			case 540:
			case 541:
			case 542:
			case 543:
			case 544:
			case 545:
			case 547:
			case 548:
			case 549:
			case 550:
			case 551:
			case 552:
			case 553:
			case 554:
			case 555:
			case 556:
			case 557:
			case 558:
			case 559:
			case 560:
			case 561:
			case 562:
			case 563:
			case 564:
			case 565:
			case 566:
			case 567:
			case 568:
			case 569:
			case 570:
			case 571:
			case 572:
			case 573:
			case 574:
			case 575:
			case 576:
			case 577:
			case 578:
			case 580:
			case 581:
			case 582:
			case 583:
			case 584:
			case 585:
			case 586:
			case 587:
			case 588:
			case 593:
			case 594:
			case 595:
			case 596:
			case 597:
			case 598:
			case 599:
			case 600:
			case 601:
			case 602:
			case 603:
			case 604:
			case 605:
			case 606:
			case 607:
			case 608:
			case 609:
			case 610:
			case 612:
			case 613:
			case 614:
			case 615:
			case 616:
			case 617:
			case 618:
			case 619:
			case 620:
			case 621:
			case 622:
			case 623:
			case 624:
			case 625:
			case 626:
			case 627:
			case 628:
			case 629:
			case 630:
			case 631:
			case 632:
			case 633:
			case 634:
			case 635:
			case 636:
			case 637:
			case 638:
			case 639:
			case 640:
			case 641:
			case 642:
			case 643:
			case 644:
			case 645:
			case 646:
			case 647:
			case 648:
			case 649:
			case 650:
			case 651:
			case 652:
			case 653:
			case 654:
			case 655:
			case 656:
			case 657:
			case 658:
			case 659:
			case 660:
			case 661:
			case 662:
			case 663:
			case 664:
			case 665:
			case 666:
			case 667:
			case 668:
			case 669:
			case 670:
			case 671:
			case 672:
			case 673:
			case 674:
			case 675:
			case 676:
			case 677:
			case 678:
			case 679:
			case 680:
			case 681:
			case 682:
			case 683:
			case 684:
			case 685:
			case 686:
			case 687:
			case 688:
			case 689:
			case 690:
			case 691:
			case 692:
			case 693:
			case 696:
			case 697:
			case 698:
			case 699:
			case 700:
			case 701:
			case 702:
			case 703:
			case 704:
			case 705:
			case 706:
			case 707:
			case 708:
			case 709:
			case 710:
			case 711:
			case 712:
			case 713:
			case 714:
			case 715:
			case 716:
			case 717:
			case 718:
			case 719:
			case 720:
			case 721:
			case 722:
			case 723:
			case 724:
			case 725:
			case 726:
			case 727:
			case 728:
			case 729:
			case 730:
			case 731:
			case 732:
			case 733:
			case 734:
			case 735:
			case 736:
			case 737:
			case 738:
			case 739:
			case 740:
			case 741:
			case 742:
			case 743:
			case 744:
			case 745:
			case 746:
			case 747:
			case 748:
			case 749:
			case 750:
			case 751:
			case 752:
			case 753:
			case 754:
			case 755:
			case 756:
			case 757:
			case 758:
			case 759:
			case 760:
			case 761:
			case 762:
			case 763:
			case 764:
			case 765:
			case 766:
			case 767:
			case 768:
			case 769:
			case 770:
			case 771:
			case 772:
			case 773:
			case 774:
			case 775:
			case 776:
			case 777:
			case 778:
			case 779:
			case 780:
			case 781:
			case 782:
			case 783:
			case 784:
			case 785:
			case 786:
			case 787:
			case 788:
			case 789:
			case 790:
			case 791:
			case 792:
			case 793:
			case 794:
			case 795:
			case 796:
			case 797:
			case 798:
			case 799:
			case 800:
			case 801:
			case 802:
			case 803:
			case 804:
			case 805:
			case 806:
			case 807:
			case 808:
			case 809:
			case 810:
			case 811:
			case 812:
			case 813:
			case 814:
			case 815:
			case 816:
			case 817:
			case 818:
			case 819:
			case 820:
			case 821:
			case 822:
			case 823:
			case 824:
			case 825:
			case 826:
			case 827:
			case 828:
			case 829:
			case 830:
			case 831:
			case 832:
			case 833:
			case 834:
			case 835:
			case 836:
			case 837:
			case 838:
			case 839:
			case 840:
			case 841:
			case 842:
			case 843:
			case 844:
			case 845:
			case 846:
			case 847:
			case 848:
			case 849:
			case 850:
			case 851:
			case 852:
			case 853:
			case 854:
			case 855:
			case 856:
			case 857:
			case 858:
			case 859:
			case 860:
			case 861:
			case 862:
			case 863:
			case 864:
			case 865:
			case 866:
			case 867:
			case 868:
			case 869:
			case 870:
			case 871:
			case 872:
			case 873:
			case 874:
			case 875:
			case 876:
			case 877:
			case 878:
			case 879:
			case 880:
			case 881:
			case 882:
			case 883:
			case 884:
			case 885:
			case 886:
			case 887:
			case 888:
			case 889:
			case 890:
			case 891:
			case 892:
			case 893:
			case 894:
			case 895:
			case 896:
			case 897:
			case 898:
			case 899:
			case 900:
			case 901:
			case 902:
			case 903:
			case 904:
			case 905:
			case 906:
			case 907:
			case 908:
			case 909:
			case 910:
			case 911:
			case 912:
			case 913:
			case 914:
			case 915:
			case 916:
			case 917:
			case 918:
			case 919:
			case 920:
			case 921:
			case 922:
			case 923:
			case 924:
			case 925:
			case 926:
			case 927:
			case 928:
			case 929:
			case 930:
			case 931:
			case 932:
			case 933:
			case 934:
			case 935:
			case 936:
			case 937:
			case 938:
			case 939:
			case 940:
			case 941:
			case 942:
			case 943:
			case 944:
			case 945:
			case 946:
			case 947:
			case 948:
			case 949:
			case 950:
			case 951:
			case 952:
			case 953:
			case 954:
			case 955:
			case 956:
			case 957:
			case 958:
			case 959:
			case 960:
			case 961:
			case 962:
			case 963:
			case 964:
			case 965:
			case 966:
			case 967:
			case 968:
			case 969:
			case 970:
			case 971:
			case 972:
			case 973:
			case 974:
			case 975:
			case 976:
			case 977:
			case 978:
			case 979:
			case 980:
			case 981:
			case 982:
			case 983:
			case 984:
			case 985:
			case 986:
			case 987:
			case 988:
			case 989:
			case 990:
			case 991:
			case 992:
			case 993:
			case 1032:
			case 1035:
			case 1043:
			case 1044:
				localctx = new ColumnDeclarationContext(this, localctx);
				this.enterOuterAlt(localctx, 1);
				{
				this.state = 1411;
				this.uid();
				this.state = 1412;
				this.columnDefinition();
				}
				break;
			case 23:
			case 27:
			case 60:
			case 116:
			case 163:
				localctx = new ConstraintDeclarationContext(this, localctx);
				this.enterOuterAlt(localctx, 2);
				{
				this.state = 1414;
				this.tableConstraint();
				}
				break;
			case 62:
			case 72:
			case 82:
			case 142:
				localctx = new IndexDeclarationContext(this, localctx);
				this.enterOuterAlt(localctx, 3);
				{
				this.state = 1415;
				this.indexColumnDefinition();
				}
				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 columnDefinition(): ColumnDefinitionContext {
		let localctx: ColumnDefinitionContext = new ColumnDefinitionContext(this, this._ctx, this.state);
		this.enterRule(localctx, 80, SqlParser.RULE_columnDefinition);
		try {
			let _alt: number;
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 1418;
			this.dataType();
			this.state = 1422;
			this._errHandler.sync(this);
			_alt = this._interp.adaptivePredict(this._input, 130, this._ctx);
			while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) {
				if (_alt === 1) {
					{
					{
					this.state = 1419;
					this.columnConstraint();
					}
					}
				}
				this.state = 1424;
				this._errHandler.sync(this);
				_alt = this._interp.adaptivePredict(this._input, 130, 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 columnConstraint(): ColumnConstraintContext {
		let localctx: ColumnConstraintContext = new ColumnConstraintContext(this, this._ctx, this.state);
		this.enterRule(localctx, 82, SqlParser.RULE_columnConstraint);
		let _la: number;
		try {
			this.state = 1476;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case 102:
			case 104:
			case 1039:
				localctx = new NullColumnConstraintContext(this, localctx);
				this.enterOuterAlt(localctx, 1);
				{
				this.state = 1425;
				this.nullNotnull();
				}
				break;
			case 38:
				localctx = new DefaultColumnConstraintContext(this, localctx);
				this.enterOuterAlt(localctx, 2);
				{
				this.state = 1426;
				this.match(SqlParser.DEFAULT);
				this.state = 1427;
				this.defaultValue();
				}
				break;
			case 106:
			case 280:
				localctx = new AutoIncrementColumnConstraintContext(this, localctx);
				this.enterOuterAlt(localctx, 3);
				{
				this.state = 1432;
				this._errHandler.sync(this);
				switch (this._input.LA(1)) {
				case 280:
					{
					this.state = 1428;
					this.match(SqlParser.AUTO_INCREMENT);
					}
					break;
				case 106:
					{
					this.state = 1429;
					this.match(SqlParser.ON);
					this.state = 1430;
					this.match(SqlParser.UPDATE);
					this.state = 1431;
					this.currentTimestamp();
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				}
				break;
			case 82:
			case 116:
				localctx = new PrimaryKeyColumnConstraintContext(this, localctx);
				this.enterOuterAlt(localctx, 4);
				{
				this.state = 1435;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===116) {
					{
					this.state = 1434;
					this.match(SqlParser.PRIMARY);
					}
				}

				this.state = 1437;
				this.match(SqlParser.KEY);
				}
				break;
			case 163:
				localctx = new UniqueKeyColumnConstraintContext(this, localctx);
				this.enterOuterAlt(localctx, 5);
				{
				this.state = 1438;
				this.match(SqlParser.UNIQUE);
				this.state = 1440;
				this._errHandler.sync(this);
				switch ( this._interp.adaptivePredict(this._input, 133, this._ctx) ) {
				case 1:
					{
					this.state = 1439;
					this.match(SqlParser.KEY);
					}
					break;
				}
				}
				break;
			case 305:
				localctx = new CommentColumnConstraintContext(this, localctx);
				this.enterOuterAlt(localctx, 6);
				{
				this.state = 1442;
				this.match(SqlParser.COMMENT);
				this.state = 1443;
				this.match(SqlParser.STRING_LITERAL);
				}
				break;
			case 303:
				localctx = new FormatColumnConstraintContext(this, localctx);
				this.enterOuterAlt(localctx, 7);
				{
				this.state = 1444;
				this.match(SqlParser.COLUMN_FORMAT);
				this.state = 1445;
				(localctx as FormatColumnConstraintContext)._colformat = this._input.LT(1);
				_la = this._input.LA(1);
				if(!(_la===38 || _la===337 || _la===363)) {
				    (localctx as FormatColumnConstraintContext)._colformat = this._errHandler.recoverInline(this);
				}
				else {
					this._errHandler.reportMatch(this);
				    this.consume();
				}
				}
				break;
			case 545:
				localctx = new StorageColumnConstraintContext(this, localctx);
				this.enterOuterAlt(localctx, 8);
				{
				this.state = 1446;
				this.match(SqlParser.STORAGE);
				this.state = 1447;
				(localctx as StorageColumnConstraintContext)._storageval = this._input.LT(1);
				_la = this._input.LA(1);
				if(!(_la===38 || _la===333 || _la===682)) {
				    (localctx as StorageColumnConstraintContext)._storageval = this._errHandler.recoverInline(this);
				}
				else {
					this._errHandler.reportMatch(this);
				    this.consume();
				}
				}
				break;
			case 122:
				localctx = new ReferenceColumnConstraintContext(this, localctx);
				this.enterOuterAlt(localctx, 9);
				{
				this.state = 1448;
				this.referenceDefinition();
				}
				break;
			case 24:
				localctx = new CollateColumnConstraintContext(this, localctx);
				this.enterOuterAlt(localctx, 10);
				{
				this.state = 1449;
				this.match(SqlParser.COLLATE);
				this.state = 1450;
				this.collationName();
				}
				break;
			case 11:
			case 63:
				localctx = new GeneratedColumnConstraintContext(this, localctx);
				this.enterOuterAlt(localctx, 11);
				{
				this.state = 1453;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===63) {
					{
					this.state = 1451;
					this.match(SqlParser.GENERATED);
					this.state = 1452;
					this.match(SqlParser.ALWAYS);
					}
				}

				this.state = 1455;
				this.match(SqlParser.AS);
				this.state = 1456;
				this.match(SqlParser.LR_BRACKET);
				this.state = 1457;
				this.expression(0);
				this.state = 1458;
				this.match(SqlParser.RR_BRACKET);
				this.state = 1460;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===546 || _la===579) {
					{
					this.state = 1459;
					_la = this._input.LA(1);
					if(!(_la===546 || _la===579)) {
					this._errHandler.recoverInline(this);
					}
					else {
						this._errHandler.reportMatch(this);
					    this.consume();
					}
					}
				}

				}
				break;
			case 221:
				localctx = new SerialDefaultColumnConstraintContext(this, localctx);
				this.enterOuterAlt(localctx, 12);
				{
				this.state = 1462;
				this.match(SqlParser.SERIAL);
				this.state = 1463;
				this.match(SqlParser.DEFAULT);
				this.state = 1464;
				this.match(SqlParser.VALUE);
				}
				break;
			case 23:
			case 27:
				localctx = new CheckColumnConstraintContext(this, localctx);
				this.enterOuterAlt(localctx, 13);
				{
				this.state = 1469;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===27) {
					{
					this.state = 1465;
					this.match(SqlParser.CONSTRAINT);
					this.state = 1467;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
					if (((((_la - 32)) & ~0x1F) === 0 && ((1 << (_la - 32)) & 4105) !== 0) || _la===87 || _la===105 || _la===133 || _la===151 || ((((_la - 199)) & ~0x1F) === 0 && ((1 << (_la - 199)) & 5373983) !== 0) || ((((_la - 233)) & ~0x1F) === 0 && ((1 << (_la - 233)) & 536870979) !== 0) || ((((_la - 270)) & ~0x1F) === 0 && ((1 << (_la - 270)) & 4294967295) !== 0) || ((((_la - 302)) & ~0x1F) === 0 && ((1 << (_la - 302)) & 4294967295) !== 0) || ((((_la - 334)) & ~0x1F) === 0 && ((1 << (_la - 334)) & 4294967295) !== 0) || ((((_la - 366)) & ~0x1F) === 0 && ((1 << (_la - 366)) & 4294967295) !== 0) || ((((_la - 398)) & ~0x1F) === 0 && ((1 << (_la - 398)) & 4294967295) !== 0) || ((((_la - 430)) & ~0x1F) === 0 && ((1 << (_la - 430)) & 4294967295) !== 0) || ((((_la - 462)) & ~0x1F) === 0 && ((1 << (_la - 462)) & 4294967295) !== 0) || ((((_la - 494)) & ~0x1F) === 0 && ((1 << (_la - 494)) & 4294967295) !== 0) || ((((_la - 526)) & ~0x1F) === 0 && ((1 << (_la - 526)) & 4293918719) !== 0) || ((((_la - 558)) & ~0x1F) === 0 && ((1 << (_la - 558)) & 2145386495) !== 0) || ((((_la - 593)) & ~0x1F) === 0 && ((1 << (_la - 593)) & 4294705151) !== 0) || ((((_la - 625)) & ~0x1F) === 0 && ((1 << (_la - 625)) & 4294967295) !== 0) || ((((_la - 657)) & ~0x1F) === 0 && ((1 << (_la - 657)) & 4294967295) !== 0) || ((((_la - 689)) & ~0x1F) === 0 && ((1 << (_la - 689)) & 4294967199) !== 0) || ((((_la - 721)) & ~0x1F) === 0 && ((1 << (_la - 721)) & 4294967295) !== 0) || ((((_la - 753)) & ~0x1F) === 0 && ((1 << (_la - 753)) & 4294967295) !== 0) || ((((_la - 785)) & ~0x1F) === 0 && ((1 << (_la - 785)) & 4294967295) !== 0) || ((((_la - 817)) & ~0x1F) === 0 && ((1 << (_la - 817)) & 4294967295) !== 0) || ((((_la - 849)) & ~0x1F) === 0 && ((1 << (_la - 849)) & 4294967295) !== 0) || ((((_la - 881)) & ~0x1F) === 0 && ((1 << (_la - 881)) & 4294967295) !== 0) || ((((_la - 913)) & ~0x1F) === 0 && ((1 << (_la - 913)) & 4294967295) !== 0) || ((((_la - 945)) & ~0x1F) === 0 && ((1 << (_la - 945)) & 4294967295) !== 0) || ((((_la - 977)) & ~0x1F) === 0 && ((1 << (_la - 977)) & 131071) !== 0) || ((((_la - 1032)) & ~0x1F) === 0 && ((1 << (_la - 1032)) & 6153) !== 0)) {
						{
						this.state = 1466;
						(localctx as CheckColumnConstraintContext)._name = this.uid();
						}
					}

					}
				}

				this.state = 1471;
				this.match(SqlParser.CHECK);
				this.state = 1472;
				this.match(SqlParser.LR_BRACKET);
				this.state = 1473;
				this.expression(0);
				this.state = 1474;
				this.match(SqlParser.RR_BRACKET);
				}
				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 tableConstraint(): TableConstraintContext {
		let localctx: TableConstraintContext = new TableConstraintContext(this, this._ctx, this.state);
		this.enterRule(localctx, 84, SqlParser.RULE_tableConstraint);
		let _la: number;
		try {
			this.state = 1547;
			this._errHandler.sync(this);
			switch ( this._interp.adaptivePredict(this._input, 155, this._ctx) ) {
			case 1:
				localctx = new PrimaryKeyTableConstraintContext(this, localctx);
				this.enterOuterAlt(localctx, 1);
				{
				this.state = 1482;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===27) {
					{
					this.state = 1478;
					this.match(SqlParser.CONSTRAINT);
					this.state = 1480;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
					if (((((_la - 32)) & ~0x1F) === 0 && ((1 << (_la - 32)) & 4105) !== 0) || _la===87 || _la===105 || _la===133 || _la===151 || ((((_la - 199)) & ~0x1F) === 0 && ((1 << (_la - 199)) & 5373983) !== 0) || ((((_la - 233)) & ~0x1F) === 0 && ((1 << (_la - 233)) & 536870979) !== 0) || ((((_la - 270)) & ~0x1F) === 0 && ((1 << (_la - 270)) & 4294967295) !== 0) || ((((_la - 302)) & ~0x1F) === 0 && ((1 << (_la - 302)) & 4294967295) !== 0) || ((((_la - 334)) & ~0x1F) === 0 && ((1 << (_la - 334)) & 4294967295) !== 0) || ((((_la - 366)) & ~0x1F) === 0 && ((1 << (_la - 366)) & 4294967295) !== 0) || ((((_la - 398)) & ~0x1F) === 0 && ((1 << (_la - 398)) & 4294967295) !== 0) || ((((_la - 430)) & ~0x1F) === 0 && ((1 << (_la - 430)) & 4294967295) !== 0) || ((((_la - 462)) & ~0x1F) === 0 && ((1 << (_la - 462)) & 4294967295) !== 0) || ((((_la - 494)) & ~0x1F) === 0 && ((1 << (_la - 494)) & 4294967295) !== 0) || ((((_la - 526)) & ~0x1F) === 0 && ((1 << (_la - 526)) & 4293918719) !== 0) || ((((_la - 558)) & ~0x1F) === 0 && ((1 << (_la - 558)) & 2145386495) !== 0) || ((((_la - 593)) & ~0x1F) === 0 && ((1 << (_la - 593)) & 4294705151) !== 0) || ((((_la - 625)) & ~0x1F) === 0 && ((1 << (_la - 625)) & 4294967295) !== 0) || ((((_la - 657)) & ~0x1F) === 0 && ((1 << (_la - 657)) & 4294967295) !== 0) || ((((_la - 689)) & ~0x1F) === 0 && ((1 << (_la - 689)) & 4294967199) !== 0) || ((((_la - 721)) & ~0x1F) === 0 && ((1 << (_la - 721)) & 4294967295) !== 0) || ((((_la - 753)) & ~0x1F) === 0 && ((1 << (_la - 753)) & 4294967295) !== 0) || ((((_la - 785)) & ~0x1F) === 0 && ((1 << (_la - 785)) & 4294967295) !== 0) || ((((_la - 817)) & ~0x1F) === 0 && ((1 << (_la - 817)) & 4294967295) !== 0) || ((((_la - 849)) & ~0x1F) === 0 && ((1 << (_la - 849)) & 4294967295) !== 0) || ((((_la - 881)) & ~0x1F) === 0 && ((1 << (_la - 881)) & 4294967295) !== 0) || ((((_la - 913)) & ~0x1F) === 0 && ((1 << (_la - 913)) & 4294967295) !== 0) || ((((_la - 945)) & ~0x1F) === 0 && ((1 << (_la - 945)) & 4294967295) !== 0) || ((((_la - 977)) & ~0x1F) === 0 && ((1 << (_la - 977)) & 131071) !== 0) || ((((_la - 1032)) & ~0x1F) === 0 && ((1 << (_la - 1032)) & 6153) !== 0)) {
						{
						this.state = 1479;
						(localctx as PrimaryKeyTableConstraintContext)._name = this.uid();
						}
					}

					}
				}

				this.state = 1484;
				this.match(SqlParser.PRIMARY);
				this.state = 1485;
				this.match(SqlParser.KEY);
				this.state = 1487;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (((((_la - 32)) & ~0x1F) === 0 && ((1 << (_la - 32)) & 4105) !== 0) || _la===87 || _la===105 || _la===133 || _la===151 || ((((_la - 199)) & ~0x1F) === 0 && ((1 << (_la - 199)) & 5373983) !== 0) || ((((_la - 233)) & ~0x1F) === 0 && ((1 << (_la - 233)) & 536870979) !== 0) || ((((_la - 270)) & ~0x1F) === 0 && ((1 << (_la - 270)) & 4294967295) !== 0) || ((((_la - 302)) & ~0x1F) === 0 && ((1 << (_la - 302)) & 4294967295) !== 0) || ((((_la - 334)) & ~0x1F) === 0 && ((1 << (_la - 334)) & 4294967295) !== 0) || ((((_la - 366)) & ~0x1F) === 0 && ((1 << (_la - 366)) & 4294967295) !== 0) || ((((_la - 398)) & ~0x1F) === 0 && ((1 << (_la - 398)) & 4294967295) !== 0) || ((((_la - 430)) & ~0x1F) === 0 && ((1 << (_la - 430)) & 4294967295) !== 0) || ((((_la - 462)) & ~0x1F) === 0 && ((1 << (_la - 462)) & 4294967295) !== 0) || ((((_la - 494)) & ~0x1F) === 0 && ((1 << (_la - 494)) & 4294967295) !== 0) || ((((_la - 526)) & ~0x1F) === 0 && ((1 << (_la - 526)) & 4293918719) !== 0) || ((((_la - 558)) & ~0x1F) === 0 && ((1 << (_la - 558)) & 2145386495) !== 0) || ((((_la - 593)) & ~0x1F) === 0 && ((1 << (_la - 593)) & 4294705151) !== 0) || ((((_la - 625)) & ~0x1F) === 0 && ((1 << (_la - 625)) & 4294967295) !== 0) || ((((_la - 657)) & ~0x1F) === 0 && ((1 << (_la - 657)) & 4294967295) !== 0) || ((((_la - 689)) & ~0x1F) === 0 && ((1 << (_la - 689)) & 4294967199) !== 0) || ((((_la - 721)) & ~0x1F) === 0 && ((1 << (_la - 721)) & 4294967295) !== 0) || ((((_la - 753)) & ~0x1F) === 0 && ((1 << (_la - 753)) & 4294967295) !== 0) || ((((_la - 785)) & ~0x1F) === 0 && ((1 << (_la - 785)) & 4294967295) !== 0) || ((((_la - 817)) & ~0x1F) === 0 && ((1 << (_la - 817)) & 4294967295) !== 0) || ((((_la - 849)) & ~0x1F) === 0 && ((1 << (_la - 849)) & 4294967295) !== 0) || ((((_la - 881)) & ~0x1F) === 0 && ((1 << (_la - 881)) & 4294967295) !== 0) || ((((_la - 913)) & ~0x1F) === 0 && ((1 << (_la - 913)) & 4294967295) !== 0) || ((((_la - 945)) & ~0x1F) === 0 && ((1 << (_la - 945)) & 4294967295) !== 0) || ((((_la - 977)) & ~0x1F) === 0 && ((1 << (_la - 977)) & 131071) !== 0) || ((((_la - 1032)) & ~0x1F) === 0 && ((1 << (_la - 1032)) & 6153) !== 0)) {
					{
					this.state = 1486;
					(localctx as PrimaryKeyTableConstraintContext)._index = this.uid();
					}
				}

				this.state = 1490;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===169) {
					{
					this.state = 1489;
					this.indexType();
					}
				}

				this.state = 1492;
				this.indexColumnNames();
				this.state = 1496;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				while (_la===169 || _la===174 || _la===305 || _la===387 || _la===395 || _la===580) {
					{
					{
					this.state = 1493;
					this.indexOption();
					}
					}
					this.state = 1498;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
				}
				}
				break;
			case 2:
				localctx = new UniqueKeyTableConstraintContext(this, localctx);
				this.enterOuterAlt(localctx, 2);
				{
				this.state = 1503;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===27) {
					{
					this.state = 1499;
					this.match(SqlParser.CONSTRAINT);
					this.state = 1501;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
					if (((((_la - 32)) & ~0x1F) === 0 && ((1 << (_la - 32)) & 4105) !== 0) || _la===87 || _la===105 || _la===133 || _la===151 || ((((_la - 199)) & ~0x1F) === 0 && ((1 << (_la - 199)) & 5373983) !== 0) || ((((_la - 233)) & ~0x1F) === 0 && ((1 << (_la - 233)) & 536870979) !== 0) || ((((_la - 270)) & ~0x1F) === 0 && ((1 << (_la - 270)) & 4294967295) !== 0) || ((((_la - 302)) & ~0x1F) === 0 && ((1 << (_la - 302)) & 4294967295) !== 0) || ((((_la - 334)) & ~0x1F) === 0 && ((1 << (_la - 334)) & 4294967295) !== 0) || ((((_la - 366)) & ~0x1F) === 0 && ((1 << (_la - 366)) & 4294967295) !== 0) || ((((_la - 398)) & ~0x1F) === 0 && ((1 << (_la - 398)) & 4294967295) !== 0) || ((((_la - 430)) & ~0x1F) === 0 && ((1 << (_la - 430)) & 4294967295) !== 0) || ((((_la - 462)) & ~0x1F) === 0 && ((1 << (_la - 462)) & 4294967295) !== 0) || ((((_la - 494)) & ~0x1F) === 0 && ((1 << (_la - 494)) & 4294967295) !== 0) || ((((_la - 526)) & ~0x1F) === 0 && ((1 << (_la - 526)) & 4293918719) !== 0) || ((((_la - 558)) & ~0x1F) === 0 && ((1 << (_la - 558)) & 2145386495) !== 0) || ((((_la - 593)) & ~0x1F) === 0 && ((1 << (_la - 593)) & 4294705151) !== 0) || ((((_la - 625)) & ~0x1F) === 0 && ((1 << (_la - 625)) & 4294967295) !== 0) || ((((_la - 657)) & ~0x1F) === 0 && ((1 << (_la - 657)) & 4294967295) !== 0) || ((((_la - 689)) & ~0x1F) === 0 && ((1 << (_la - 689)) & 4294967199) !== 0) || ((((_la - 721)) & ~0x1F) === 0 && ((1 << (_la - 721)) & 4294967295) !== 0) || ((((_la - 753)) & ~0x1F) === 0 && ((1 << (_la - 753)) & 4294967295) !== 0) || ((((_la - 785)) & ~0x1F) === 0 && ((1 << (_la - 785)) & 4294967295) !== 0) || ((((_la - 817)) & ~0x1F) === 0 && ((1 << (_la - 817)) & 4294967295) !== 0) || ((((_la - 849)) & ~0x1F) === 0 && ((1 << (_la - 849)) & 4294967295) !== 0) || ((((_la - 881)) & ~0x1F) === 0 && ((1 << (_la - 881)) & 4294967295) !== 0) || ((((_la - 913)) & ~0x1F) === 0 && ((1 << (_la - 913)) & 4294967295) !== 0) || ((((_la - 945)) & ~0x1F) === 0 && ((1 << (_la - 945)) & 4294967295) !== 0) || ((((_la - 977)) & ~0x1F) === 0 && ((1 << (_la - 977)) & 131071) !== 0) || ((((_la - 1032)) & ~0x1F) === 0 && ((1 << (_la - 1032)) & 6153) !== 0)) {
						{
						this.state = 1500;
						(localctx as UniqueKeyTableConstraintContext)._name = this.uid();
						}
					}

					}
				}

				this.state = 1505;
				this.match(SqlParser.UNIQUE);
				this.state = 1507;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===72 || _la===82) {
					{
					this.state = 1506;
					(localctx as UniqueKeyTableConstraintContext)._indexFormat = this._input.LT(1);
					_la = this._input.LA(1);
					if(!(_la===72 || _la===82)) {
					    (localctx as UniqueKeyTableConstraintContext)._indexFormat = this._errHandler.recoverInline(this);
					}
					else {
						this._errHandler.reportMatch(this);
					    this.consume();
					}
					}
				}

				this.state = 1510;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (((((_la - 32)) & ~0x1F) === 0 && ((1 << (_la - 32)) & 4105) !== 0) || _la===87 || _la===105 || _la===133 || _la===151 || ((((_la - 199)) & ~0x1F) === 0 && ((1 << (_la - 199)) & 5373983) !== 0) || ((((_la - 233)) & ~0x1F) === 0 && ((1 << (_la - 233)) & 536870979) !== 0) || ((((_la - 270)) & ~0x1F) === 0 && ((1 << (_la - 270)) & 4294967295) !== 0) || ((((_la - 302)) & ~0x1F) === 0 && ((1 << (_la - 302)) & 4294967295) !== 0) || ((((_la - 334)) & ~0x1F) === 0 && ((1 << (_la - 334)) & 4294967295) !== 0) || ((((_la - 366)) & ~0x1F) === 0 && ((1 << (_la - 366)) & 4294967295) !== 0) || ((((_la - 398)) & ~0x1F) === 0 && ((1 << (_la - 398)) & 4294967295) !== 0) || ((((_la - 430)) & ~0x1F) === 0 && ((1 << (_la - 430)) & 4294967295) !== 0) || ((((_la - 462)) & ~0x1F) === 0 && ((1 << (_la - 462)) & 4294967295) !== 0) || ((((_la - 494)) & ~0x1F) === 0 && ((1 << (_la - 494)) & 4294967295) !== 0) || ((((_la - 526)) & ~0x1F) === 0 && ((1 << (_la - 526)) & 4293918719) !== 0) || ((((_la - 558)) & ~0x1F) === 0 && ((1 << (_la - 558)) & 2145386495) !== 0) || ((((_la - 593)) & ~0x1F) === 0 && ((1 << (_la - 593)) & 4294705151) !== 0) || ((((_la - 625)) & ~0x1F) === 0 && ((1 << (_la - 625)) & 4294967295) !== 0) || ((((_la - 657)) & ~0x1F) === 0 && ((1 << (_la - 657)) & 4294967295) !== 0) || ((((_la - 689)) & ~0x1F) === 0 && ((1 << (_la - 689)) & 4294967199) !== 0) || ((((_la - 721)) & ~0x1F) === 0 && ((1 << (_la - 721)) & 4294967295) !== 0) || ((((_la - 753)) & ~0x1F) === 0 && ((1 << (_la - 753)) & 4294967295) !== 0) || ((((_la - 785)) & ~0x1F) === 0 && ((1 << (_la - 785)) & 4294967295) !== 0) || ((((_la - 817)) & ~0x1F) === 0 && ((1 << (_la - 817)) & 4294967295) !== 0) || ((((_la - 849)) & ~0x1F) === 0 && ((1 << (_la - 849)) & 4294967295) !== 0) || ((((_la - 881)) & ~0x1F) === 0 && ((1 << (_la - 881)) & 4294967295) !== 0) || ((((_la - 913)) & ~0x1F) === 0 && ((1 << (_la - 913)) & 4294967295) !== 0) || ((((_la - 945)) & ~0x1F) === 0 && ((1 << (_la - 945)) & 4294967295) !== 0) || ((((_la - 977)) & ~0x1F) === 0 && ((1 << (_la - 977)) & 131071) !== 0) || ((((_la - 1032)) & ~0x1F) === 0 && ((1 << (_la - 1032)) & 6153) !== 0)) {
					{
					this.state = 1509;
					(localctx as UniqueKeyTableConstraintContext)._index = this.uid();
					}
				}

				this.state = 1513;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===169) {
					{
					this.state = 1512;
					this.indexType();
					}
				}

				this.state = 1515;
				this.indexColumnNames();
				this.state = 1519;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				while (_la===169 || _la===174 || _la===305 || _la===387 || _la===395 || _la===580) {
					{
					{
					this.state = 1516;
					this.indexOption();
					}
					}
					this.state = 1521;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
				}
				}
				break;
			case 3:
				localctx = new ForeignKeyTableConstraintContext(this, localctx);
				this.enterOuterAlt(localctx, 3);
				{
				this.state = 1526;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===27) {
					{
					this.state = 1522;
					this.match(SqlParser.CONSTRAINT);
					this.state = 1524;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
					if (((((_la - 32)) & ~0x1F) === 0 && ((1 << (_la - 32)) & 4105) !== 0) || _la===87 || _la===105 || _la===133 || _la===151 || ((((_la - 199)) & ~0x1F) === 0 && ((1 << (_la - 199)) & 5373983) !== 0) || ((((_la - 233)) & ~0x1F) === 0 && ((1 << (_la - 233)) & 536870979) !== 0) || ((((_la - 270)) & ~0x1F) === 0 && ((1 << (_la - 270)) & 4294967295) !== 0) || ((((_la - 302)) & ~0x1F) === 0 && ((1 << (_la - 302)) & 4294967295) !== 0) || ((((_la - 334)) & ~0x1F) === 0 && ((1 << (_la - 334)) & 4294967295) !== 0) || ((((_la - 366)) & ~0x1F) === 0 && ((1 << (_la - 366)) & 4294967295) !== 0) || ((((_la - 398)) & ~0x1F) === 0 && ((1 << (_la - 398)) & 4294967295) !== 0) || ((((_la - 430)) & ~0x1F) === 0 && ((1 << (_la - 430)) & 4294967295) !== 0) || ((((_la - 462)) & ~0x1F) === 0 && ((1 << (_la - 462)) & 4294967295) !== 0) || ((((_la - 494)) & ~0x1F) === 0 && ((1 << (_la - 494)) & 4294967295) !== 0) || ((((_la - 526)) & ~0x1F) === 0 && ((1 << (_la - 526)) & 4293918719) !== 0) || ((((_la - 558)) & ~0x1F) === 0 && ((1 << (_la - 558)) & 2145386495) !== 0) || ((((_la - 593)) & ~0x1F) === 0 && ((1 << (_la - 593)) & 4294705151) !== 0) || ((((_la - 625)) & ~0x1F) === 0 && ((1 << (_la - 625)) & 4294967295) !== 0) || ((((_la - 657)) & ~0x1F) === 0 && ((1 << (_la - 657)) & 4294967295) !== 0) || ((((_la - 689)) & ~0x1F) === 0 && ((1 << (_la - 689)) & 4294967199) !== 0) || ((((_la - 721)) & ~0x1F) === 0 && ((1 << (_la - 721)) & 4294967295) !== 0) || ((((_la - 753)) & ~0x1F) === 0 && ((1 << (_la - 753)) & 4294967295) !== 0) || ((((_la - 785)) & ~0x1F) === 0 && ((1 << (_la - 785)) & 4294967295) !== 0) || ((((_la - 817)) & ~0x1F) === 0 && ((1 << (_la - 817)) & 4294967295) !== 0) || ((((_la - 849)) & ~0x1F) === 0 && ((1 << (_la - 849)) & 4294967295) !== 0) || ((((_la - 881)) & ~0x1F) === 0 && ((1 << (_la - 881)) & 4294967295) !== 0) || ((((_la - 913)) & ~0x1F) === 0 && ((1 << (_la - 913)) & 4294967295) !== 0) || ((((_la - 945)) & ~0x1F) === 0 && ((1 << (_la - 945)) & 4294967295) !== 0) || ((((_la - 977)) & ~0x1F) === 0 && ((1 << (_la - 977)) & 131071) !== 0) || ((((_la - 1032)) & ~0x1F) === 0 && ((1 << (_la - 1032)) & 6153) !== 0)) {
						{
						this.state = 1523;
						(localctx as ForeignKeyTableConstraintContext)._name = this.uid();
						}
					}

					}
				}

				this.state = 1528;
				this.match(SqlParser.FOREIGN);
				this.state = 1529;
				this.match(SqlParser.KEY);
				this.state = 1531;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (((((_la - 32)) & ~0x1F) === 0 && ((1 << (_la - 32)) & 4105) !== 0) || _la===87 || _la===105 || _la===133 || _la===151 || ((((_la - 199)) & ~0x1F) === 0 && ((1 << (_la - 199)) & 5373983) !== 0) || ((((_la - 233)) & ~0x1F) === 0 && ((1 << (_la - 233)) & 536870979) !== 0) || ((((_la - 270)) & ~0x1F) === 0 && ((1 << (_la - 270)) & 4294967295) !== 0) || ((((_la - 302)) & ~0x1F) === 0 && ((1 << (_la - 302)) & 4294967295) !== 0) || ((((_la - 334)) & ~0x1F) === 0 && ((1 << (_la - 334)) & 4294967295) !== 0) || ((((_la - 366)) & ~0x1F) === 0 && ((1 << (_la - 366)) & 4294967295) !== 0) || ((((_la - 398)) & ~0x1F) === 0 && ((1 << (_la - 398)) & 4294967295) !== 0) || ((((_la - 430)) & ~0x1F) === 0 && ((1 << (_la - 430)) & 4294967295) !== 0) || ((((_la - 462)) & ~0x1F) === 0 && ((1 << (_la - 462)) & 4294967295) !== 0) || ((((_la - 494)) & ~0x1F) === 0 && ((1 << (_la - 494)) & 4294967295) !== 0) || ((((_la - 526)) & ~0x1F) === 0 && ((1 << (_la - 526)) & 4293918719) !== 0) || ((((_la - 558)) & ~0x1F) === 0 && ((1 << (_la - 558)) & 2145386495) !== 0) || ((((_la - 593)) & ~0x1F) === 0 && ((1 << (_la - 593)) & 4294705151) !== 0) || ((((_la - 625)) & ~0x1F) === 0 && ((1 << (_la - 625)) & 4294967295) !== 0) || ((((_la - 657)) & ~0x1F) === 0 && ((1 << (_la - 657)) & 4294967295) !== 0) || ((((_la - 689)) & ~0x1F) === 0 && ((1 << (_la - 689)) & 4294967199) !== 0) || ((((_la - 721)) & ~0x1F) === 0 && ((1 << (_la - 721)) & 4294967295) !== 0) || ((((_la - 753)) & ~0x1F) === 0 && ((1 << (_la - 753)) & 4294967295) !== 0) || ((((_la - 785)) & ~0x1F) === 0 && ((1 << (_la - 785)) & 4294967295) !== 0) || ((((_la - 817)) & ~0x1F) === 0 && ((1 << (_la - 817)) & 4294967295) !== 0) || ((((_la - 849)) & ~0x1F) === 0 && ((1 << (_la - 849)) & 4294967295) !== 0) || ((((_la - 881)) & ~0x1F) === 0 && ((1 << (_la - 881)) & 4294967295) !== 0) || ((((_la - 913)) & ~0x1F) === 0 && ((1 << (_la - 913)) & 4294967295) !== 0) || ((((_la - 945)) & ~0x1F) === 0 && ((1 << (_la - 945)) & 4294967295) !== 0) || ((((_la - 977)) & ~0x1F) === 0 && ((1 << (_la - 977)) & 131071) !== 0) || ((((_la - 1032)) & ~0x1F) === 0 && ((1 << (_la - 1032)) & 6153) !== 0)) {
					{
					this.state = 1530;
					(localctx as ForeignKeyTableConstraintContext)._index = this.uid();
					}
				}

				this.state = 1533;
				this.indexColumnNames();
				this.state = 1534;
				this.referenceDefinition();
				}
				break;
			case 4:
				localctx = new CheckTableConstraintContext(this, localctx);
				this.enterOuterAlt(localctx, 4);
				{
				this.state = 1540;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===27) {
					{
					this.state = 1536;
					this.match(SqlParser.CONSTRAINT);
					this.state = 1538;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
					if (((((_la - 32)) & ~0x1F) === 0 && ((1 << (_la - 32)) & 4105) !== 0) || _la===87 || _la===105 || _la===133 || _la===151 || ((((_la - 199)) & ~0x1F) === 0 && ((1 << (_la - 199)) & 5373983) !== 0) || ((((_la - 233)) & ~0x1F) === 0 && ((1 << (_la - 233)) & 536870979) !== 0) || ((((_la - 270)) & ~0x1F) === 0 && ((1 << (_la - 270)) & 4294967295) !== 0) || ((((_la - 302)) & ~0x1F) === 0 && ((1 << (_la - 302)) & 4294967295) !== 0) || ((((_la - 334)) & ~0x1F) === 0 && ((1 << (_la - 334)) & 4294967295) !== 0) || ((((_la - 366)) & ~0x1F) === 0 && ((1 << (_la - 366)) & 4294967295) !== 0) || ((((_la - 398)) & ~0x1F) === 0 && ((1 << (_la - 398)) & 4294967295) !== 0) || ((((_la - 430)) & ~0x1F) === 0 && ((1 << (_la - 430)) & 4294967295) !== 0) || ((((_la - 462)) & ~0x1F) === 0 && ((1 << (_la - 462)) & 4294967295) !== 0) || ((((_la - 494)) & ~0x1F) === 0 && ((1 << (_la - 494)) & 4294967295) !== 0) || ((((_la - 526)) & ~0x1F) === 0 && ((1 << (_la - 526)) & 4293918719) !== 0) || ((((_la - 558)) & ~0x1F) === 0 && ((1 << (_la - 558)) & 2145386495) !== 0) || ((((_la - 593)) & ~0x1F) === 0 && ((1 << (_la - 593)) & 4294705151) !== 0) || ((((_la - 625)) & ~0x1F) === 0 && ((1 << (_la - 625)) & 4294967295) !== 0) || ((((_la - 657)) & ~0x1F) === 0 && ((1 << (_la - 657)) & 4294967295) !== 0) || ((((_la - 689)) & ~0x1F) === 0 && ((1 << (_la - 689)) & 4294967199) !== 0) || ((((_la - 721)) & ~0x1F) === 0 && ((1 << (_la - 721)) & 4294967295) !== 0) || ((((_la - 753)) & ~0x1F) === 0 && ((1 << (_la - 753)) & 4294967295) !== 0) || ((((_la - 785)) & ~0x1F) === 0 && ((1 << (_la - 785)) & 4294967295) !== 0) || ((((_la - 817)) & ~0x1F) === 0 && ((1 << (_la - 817)) & 4294967295) !== 0) || ((((_la - 849)) & ~0x1F) === 0 && ((1 << (_la - 849)) & 4294967295) !== 0) || ((((_la - 881)) & ~0x1F) === 0 && ((1 << (_la - 881)) & 4294967295) !== 0) || ((((_la - 913)) & ~0x1F) === 0 && ((1 << (_la - 913)) & 4294967295) !== 0) || ((((_la - 945)) & ~0x1F) === 0 && ((1 << (_la - 945)) & 4294967295) !== 0) || ((((_la - 977)) & ~0x1F) === 0 && ((1 << (_la - 977)) & 131071) !== 0) || ((((_la - 1032)) & ~0x1F) === 0 && ((1 << (_la - 1032)) & 6153) !== 0)) {
						{
						this.state = 1537;
						(localctx as CheckTableConstraintContext)._name = this.uid();
						}
					}

					}
				}

				this.state = 1542;
				this.match(SqlParser.CHECK);
				this.state = 1543;
				this.match(SqlParser.LR_BRACKET);
				this.state = 1544;
				this.expression(0);
				this.state = 1545;
				this.match(SqlParser.RR_BRACKET);
				}
				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 referenceDefinition(): ReferenceDefinitionContext {
		let localctx: ReferenceDefinitionContext = new ReferenceDefinitionContext(this, this._ctx, this.state);
		this.enterRule(localctx, 86, SqlParser.RULE_referenceDefinition);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 1549;
			this.match(SqlParser.REFERENCES);
			this.state = 1550;
			this.tableName();
			this.state = 1552;
			this._errHandler.sync(this);
			switch ( this._interp.adaptivePredict(this._input, 156, this._ctx) ) {
			case 1:
				{
				this.state = 1551;
				this.indexColumnNames();
				}
				break;
			}
			this.state = 1556;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===98) {
				{
				this.state = 1554;
				this.match(SqlParser.MATCH);
				this.state = 1555;
				localctx._matchType = this._input.LT(1);
				_la = this._input.LA(1);
				if(!(_la===367 || _la===465 || _la===522)) {
				    localctx._matchType = this._errHandler.recoverInline(this);
				}
				else {
					this._errHandler.reportMatch(this);
				    this.consume();
				}
				}
			}

			this.state = 1559;
			this._errHandler.sync(this);
			switch ( this._interp.adaptivePredict(this._input, 158, this._ctx) ) {
			case 1:
				{
				this.state = 1558;
				this.referenceAction();
				}
				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 referenceAction(): ReferenceActionContext {
		let localctx: ReferenceActionContext = new ReferenceActionContext(this, this._ctx, this.state);
		this.enterRule(localctx, 88, SqlParser.RULE_referenceAction);
		try {
			this.state = 1577;
			this._errHandler.sync(this);
			switch ( this._interp.adaptivePredict(this._input, 161, this._ctx) ) {
			case 1:
				this.enterOuterAlt(localctx, 1);
				{
				this.state = 1561;
				this.match(SqlParser.ON);
				this.state = 1562;
				this.match(SqlParser.DELETE);
				this.state = 1563;
				localctx._onDelete = this.referenceControlType();
				this.state = 1567;
				this._errHandler.sync(this);
				switch ( this._interp.adaptivePredict(this._input, 159, this._ctx) ) {
				case 1:
					{
					this.state = 1564;
					this.match(SqlParser.ON);
					this.state = 1565;
					this.match(SqlParser.UPDATE);
					this.state = 1566;
					localctx._onUpdate = this.referenceControlType();
					}
					break;
				}
				}
				break;
			case 2:
				this.enterOuterAlt(localctx, 2);
				{
				this.state = 1569;
				this.match(SqlParser.ON);
				this.state = 1570;
				this.match(SqlParser.UPDATE);
				this.state = 1571;
				localctx._onUpdate = this.referenceControlType();
				this.state = 1575;
				this._errHandler.sync(this);
				switch ( this._interp.adaptivePredict(this._input, 160, this._ctx) ) {
				case 1:
					{
					this.state = 1572;
					this.match(SqlParser.ON);
					this.state = 1573;
					this.match(SqlParser.DELETE);
					this.state = 1574;
					localctx._onDelete = this.referenceControlType();
					}
					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 referenceControlType(): ReferenceControlTypeContext {
		let localctx: ReferenceControlTypeContext = new ReferenceControlTypeContext(this, this._ctx, this.state);
		this.enterRule(localctx, 90, SqlParser.RULE_referenceControlType);
		try {
			this.state = 1585;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case 130:
				this.enterOuterAlt(localctx, 1);
				{
				this.state = 1579;
				this.match(SqlParser.RESTRICT);
				}
				break;
			case 18:
				this.enterOuterAlt(localctx, 2);
				{
				this.state = 1580;
				this.match(SqlParser.CASCADE);
				}
				break;
			case 138:
				this.enterOuterAlt(localctx, 3);
				{
				this.state = 1581;
				this.match(SqlParser.SET);
				this.state = 1582;
				this.match(SqlParser.NULL_LITERAL);
				}
				break;
			case 448:
				this.enterOuterAlt(localctx, 4);
				{
				this.state = 1583;
				this.match(SqlParser.NO);
				this.state = 1584;
				this.match(SqlParser.ACTION);
				}
				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 indexColumnDefinition(): IndexColumnDefinitionContext {
		let localctx: IndexColumnDefinitionContext = new IndexColumnDefinitionContext(this, this._ctx, this.state);
		this.enterRule(localctx, 92, SqlParser.RULE_indexColumnDefinition);
		let _la: number;
		try {
			this.state = 1615;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case 72:
			case 82:
				localctx = new SimpleIndexDeclarationContext(this, localctx);
				this.enterOuterAlt(localctx, 1);
				{
				this.state = 1587;
				(localctx as SimpleIndexDeclarationContext)._indexFormat = this._input.LT(1);
				_la = this._input.LA(1);
				if(!(_la===72 || _la===82)) {
				    (localctx as SimpleIndexDeclarationContext)._indexFormat = this._errHandler.recoverInline(this);
				}
				else {
					this._errHandler.reportMatch(this);
				    this.consume();
				}
				this.state = 1589;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (((((_la - 32)) & ~0x1F) === 0 && ((1 << (_la - 32)) & 4105) !== 0) || _la===87 || _la===105 || _la===133 || _la===151 || ((((_la - 199)) & ~0x1F) === 0 && ((1 << (_la - 199)) & 5373983) !== 0) || ((((_la - 233)) & ~0x1F) === 0 && ((1 << (_la - 233)) & 536870979) !== 0) || ((((_la - 270)) & ~0x1F) === 0 && ((1 << (_la - 270)) & 4294967295) !== 0) || ((((_la - 302)) & ~0x1F) === 0 && ((1 << (_la - 302)) & 4294967295) !== 0) || ((((_la - 334)) & ~0x1F) === 0 && ((1 << (_la - 334)) & 4294967295) !== 0) || ((((_la - 366)) & ~0x1F) === 0 && ((1 << (_la - 366)) & 4294967295) !== 0) || ((((_la - 398)) & ~0x1F) === 0 && ((1 << (_la - 398)) & 4294967295) !== 0) || ((((_la - 430)) & ~0x1F) === 0 && ((1 << (_la - 430)) & 4294967295) !== 0) || ((((_la - 462)) & ~0x1F) === 0 && ((1 << (_la - 462)) & 4294967295) !== 0) || ((((_la - 494)) & ~0x1F) === 0 && ((1 << (_la - 494)) & 4294967295) !== 0) || ((((_la - 526)) & ~0x1F) === 0 && ((1 << (_la - 526)) & 4293918719) !== 0) || ((((_la - 558)) & ~0x1F) === 0 && ((1 << (_la - 558)) & 2145386495) !== 0) || ((((_la - 593)) & ~0x1F) === 0 && ((1 << (_la - 593)) & 4294705151) !== 0) || ((((_la - 625)) & ~0x1F) === 0 && ((1 << (_la - 625)) & 4294967295) !== 0) || ((((_la - 657)) & ~0x1F) === 0 && ((1 << (_la - 657)) & 4294967295) !== 0) || ((((_la - 689)) & ~0x1F) === 0 && ((1 << (_la - 689)) & 4294967199) !== 0) || ((((_la - 721)) & ~0x1F) === 0 && ((1 << (_la - 721)) & 4294967295) !== 0) || ((((_la - 753)) & ~0x1F) === 0 && ((1 << (_la - 753)) & 4294967295) !== 0) || ((((_la - 785)) & ~0x1F) === 0 && ((1 << (_la - 785)) & 4294967295) !== 0) || ((((_la - 817)) & ~0x1F) === 0 && ((1 << (_la - 817)) & 4294967295) !== 0) || ((((_la - 849)) & ~0x1F) === 0 && ((1 << (_la - 849)) & 4294967295) !== 0) || ((((_la - 881)) & ~0x1F) === 0 && ((1 << (_la - 881)) & 4294967295) !== 0) || ((((_la - 913)) & ~0x1F) === 0 && ((1 << (_la - 913)) & 4294967295) !== 0) || ((((_la - 945)) & ~0x1F) === 0 && ((1 << (_la - 945)) & 4294967295) !== 0) || ((((_la - 977)) & ~0x1F) === 0 && ((1 << (_la - 977)) & 131071) !== 0) || ((((_la - 1032)) & ~0x1F) === 0 && ((1 << (_la - 1032)) & 6153) !== 0)) {
					{
					this.state = 1588;
					this.uid();
					}
				}

				this.state = 1592;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===169) {
					{
					this.state = 1591;
					this.indexType();
					}
				}

				this.state = 1594;
				this.indexColumnNames();
				this.state = 1598;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				while (_la===169 || _la===174 || _la===305 || _la===387 || _la===395 || _la===580) {
					{
					{
					this.state = 1595;
					this.indexOption();
					}
					}
					this.state = 1600;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
				}
				}
				break;
			case 62:
			case 142:
				localctx = new SpecialIndexDeclarationContext(this, localctx);
				this.enterOuterAlt(localctx, 2);
				{
				this.state = 1601;
				_la = this._input.LA(1);
				if(!(_la===62 || _la===142)) {
				this._errHandler.recoverInline(this);
				}
				else {
					this._errHandler.reportMatch(this);
				    this.consume();
				}
				this.state = 1603;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===72 || _la===82) {
					{
					this.state = 1602;
					(localctx as SpecialIndexDeclarationContext)._indexFormat = this._input.LT(1);
					_la = this._input.LA(1);
					if(!(_la===72 || _la===82)) {
					    (localctx as SpecialIndexDeclarationContext)._indexFormat = this._errHandler.recoverInline(this);
					}
					else {
						this._errHandler.reportMatch(this);
					    this.consume();
					}
					}
				}

				this.state = 1606;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (((((_la - 32)) & ~0x1F) === 0 && ((1 << (_la - 32)) & 4105) !== 0) || _la===87 || _la===105 || _la===133 || _la===151 || ((((_la - 199)) & ~0x1F) === 0 && ((1 << (_la - 199)) & 5373983) !== 0) || ((((_la - 233)) & ~0x1F) === 0 && ((1 << (_la - 233)) & 536870979) !== 0) || ((((_la - 270)) & ~0x1F) === 0 && ((1 << (_la - 270)) & 4294967295) !== 0) || ((((_la - 302)) & ~0x1F) === 0 && ((1 << (_la - 302)) & 4294967295) !== 0) || ((((_la - 334)) & ~0x1F) === 0 && ((1 << (_la - 334)) & 4294967295) !== 0) || ((((_la - 366)) & ~0x1F) === 0 && ((1 << (_la - 366)) & 4294967295) !== 0) || ((((_la - 398)) & ~0x1F) === 0 && ((1 << (_la - 398)) & 4294967295) !== 0) || ((((_la - 430)) & ~0x1F) === 0 && ((1 << (_la - 430)) & 4294967295) !== 0) || ((((_la - 462)) & ~0x1F) === 0 && ((1 << (_la - 462)) & 4294967295) !== 0) || ((((_la - 494)) & ~0x1F) === 0 && ((1 << (_la - 494)) & 4294967295) !== 0) || ((((_la - 526)) & ~0x1F) === 0 && ((1 << (_la - 526)) & 4293918719) !== 0) || ((((_la - 558)) & ~0x1F) === 0 && ((1 << (_la - 558)) & 2145386495) !== 0) || ((((_la - 593)) & ~0x1F) === 0 && ((1 << (_la - 593)) & 4294705151) !== 0) || ((((_la - 625)) & ~0x1F) === 0 && ((1 << (_la - 625)) & 4294967295) !== 0) || ((((_la - 657)) & ~0x1F) === 0 && ((1 << (_la - 657)) & 4294967295) !== 0) || ((((_la - 689)) & ~0x1F) === 0 && ((1 << (_la - 689)) & 4294967199) !== 0) || ((((_la - 721)) & ~0x1F) === 0 && ((1 << (_la - 721)) & 4294967295) !== 0) || ((((_la - 753)) & ~0x1F) === 0 && ((1 << (_la - 753)) & 4294967295) !== 0) || ((((_la - 785)) & ~0x1F) === 0 && ((1 << (_la - 785)) & 4294967295) !== 0) || ((((_la - 817)) & ~0x1F) === 0 && ((1 << (_la - 817)) & 4294967295) !== 0) || ((((_la - 849)) & ~0x1F) === 0 && ((1 << (_la - 849)) & 4294967295) !== 0) || ((((_la - 881)) & ~0x1F) === 0 && ((1 << (_la - 881)) & 4294967295) !== 0) || ((((_la - 913)) & ~0x1F) === 0 && ((1 << (_la - 913)) & 4294967295) !== 0) || ((((_la - 945)) & ~0x1F) === 0 && ((1 << (_la - 945)) & 4294967295) !== 0) || ((((_la - 977)) & ~0x1F) === 0 && ((1 << (_la - 977)) & 131071) !== 0) || ((((_la - 1032)) & ~0x1F) === 0 && ((1 << (_la - 1032)) & 6153) !== 0)) {
					{
					this.state = 1605;
					this.uid();
					}
				}

				this.state = 1608;
				this.indexColumnNames();
				this.state = 1612;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				while (_la===169 || _la===174 || _la===305 || _la===387 || _la===395 || _la===580) {
					{
					{
					this.state = 1609;
					this.indexOption();
					}
					}
					this.state = 1614;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
				}
				}
				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 tableOption(): TableOptionContext {
		let localctx: TableOptionContext = new TableOptionContext(this, this._ctx, this.state);
		this.enterRule(localctx, 94, SqlParser.RULE_tableOption);
		let _la: number;
		try {
			this.state = 1761;
			this._errHandler.sync(this);
			switch ( this._interp.adaptivePredict(this._input, 199, this._ctx) ) {
			case 1:
				localctx = new TableOptionEngineContext(this, localctx);
				this.enterOuterAlt(localctx, 1);
				{
				this.state = 1617;
				this.match(SqlParser.ENGINE);
				this.state = 1619;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===1011) {
					{
					this.state = 1618;
					this.match(SqlParser.EQUAL_SYMBOL);
					}
				}

				this.state = 1621;
				this.engineName();
				}
				break;
			case 2:
				localctx = new TableOptionAutoIncrementContext(this, localctx);
				this.enterOuterAlt(localctx, 2);
				{
				this.state = 1622;
				this.match(SqlParser.AUTO_INCREMENT);
				this.state = 1624;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===1011) {
					{
					this.state = 1623;
					this.match(SqlParser.EQUAL_SYMBOL);
					}
				}

				this.state = 1626;
				this.decimalLiteral();
				}
				break;
			case 3:
				localctx = new TableOptionAverageContext(this, localctx);
				this.enterOuterAlt(localctx, 3);
				{
				this.state = 1627;
				this.match(SqlParser.AVG_ROW_LENGTH);
				this.state = 1629;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===1011) {
					{
					this.state = 1628;
					this.match(SqlParser.EQUAL_SYMBOL);
					}
				}

				this.state = 1631;
				this.decimalLiteral();
				}
				break;
			case 4:
				localctx = new TableOptionCharsetContext(this, localctx);
				this.enterOuterAlt(localctx, 4);
				{
				this.state = 1633;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===38) {
					{
					this.state = 1632;
					this.match(SqlParser.DEFAULT);
					}
				}

				this.state = 1638;
				this._errHandler.sync(this);
				switch (this._input.LA(1)) {
				case 22:
					{
					this.state = 1635;
					this.match(SqlParser.CHARACTER);
					this.state = 1636;
					this.match(SqlParser.SET);
					}
					break;
				case 731:
					{
					this.state = 1637;
					this.match(SqlParser.CHARSET);
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				this.state = 1641;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===1011) {
					{
					this.state = 1640;
					this.match(SqlParser.EQUAL_SYMBOL);
					}
				}

				this.state = 1645;
				this._errHandler.sync(this);
				switch (this._input.LA(1)) {
				case 208:
				case 637:
				case 638:
				case 639:
				case 640:
				case 641:
				case 642:
				case 643:
				case 644:
				case 645:
				case 646:
				case 647:
				case 648:
				case 649:
				case 650:
				case 651:
				case 652:
				case 653:
				case 654:
				case 655:
				case 656:
				case 657:
				case 658:
				case 659:
				case 660:
				case 661:
				case 662:
				case 663:
				case 664:
				case 665:
				case 666:
				case 667:
				case 668:
				case 669:
				case 670:
				case 671:
				case 672:
				case 673:
				case 674:
				case 675:
				case 676:
				case 1032:
				case 1035:
					{
					this.state = 1643;
					this.charsetName();
					}
					break;
				case 38:
					{
					this.state = 1644;
					this.match(SqlParser.DEFAULT);
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				}
				break;
			case 5:
				localctx = new TableOptionChecksumContext(this, localctx);
				this.enterOuterAlt(localctx, 5);
				{
				this.state = 1647;
				_la = this._input.LA(1);
				if(!(_la===294 || _la===295)) {
				this._errHandler.recoverInline(this);
				}
				else {
					this._errHandler.reportMatch(this);
				    this.consume();
				}
				this.state = 1649;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===1011) {
					{
					this.state = 1648;
					this.match(SqlParser.EQUAL_SYMBOL);
					}
				}

				this.state = 1651;
				(localctx as TableOptionChecksumContext)._boolValue = this._input.LT(1);
				_la = this._input.LA(1);
				if(!(_la===1025 || _la===1026)) {
				    (localctx as TableOptionChecksumContext)._boolValue = this._errHandler.recoverInline(this);
				}
				else {
					this._errHandler.reportMatch(this);
				    this.consume();
				}
				}
				break;
			case 6:
				localctx = new TableOptionCollateContext(this, localctx);
				this.enterOuterAlt(localctx, 6);
				{
				this.state = 1653;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===38) {
					{
					this.state = 1652;
					this.match(SqlParser.DEFAULT);
					}
				}

				this.state = 1655;
				this.match(SqlParser.COLLATE);
				this.state = 1657;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===1011) {
					{
					this.state = 1656;
					this.match(SqlParser.EQUAL_SYMBOL);
					}
				}

				this.state = 1659;
				this.collationName();
				}
				break;
			case 7:
				localctx = new TableOptionCommentContext(this, localctx);
				this.enterOuterAlt(localctx, 7);
				{
				this.state = 1660;
				this.match(SqlParser.COMMENT);
				this.state = 1662;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===1011) {
					{
					this.state = 1661;
					this.match(SqlParser.EQUAL_SYMBOL);
					}
				}

				this.state = 1664;
				this.match(SqlParser.STRING_LITERAL);
				}
				break;
			case 8:
				localctx = new TableOptionCompressionContext(this, localctx);
				this.enterOuterAlt(localctx, 8);
				{
				this.state = 1665;
				this.match(SqlParser.COMPRESSION);
				this.state = 1667;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===1011) {
					{
					this.state = 1666;
					this.match(SqlParser.EQUAL_SYMBOL);
					}
				}

				this.state = 1669;
				_la = this._input.LA(1);
				if(!(_la===1035 || _la===1043)) {
				this._errHandler.recoverInline(this);
				}
				else {
					this._errHandler.reportMatch(this);
				    this.consume();
				}
				}
				break;
			case 9:
				localctx = new TableOptionConnectionContext(this, localctx);
				this.enterOuterAlt(localctx, 9);
				{
				this.state = 1670;
				this.match(SqlParser.CONNECTION);
				this.state = 1672;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===1011) {
					{
					this.state = 1671;
					this.match(SqlParser.EQUAL_SYMBOL);
					}
				}

				this.state = 1674;
				this.match(SqlParser.STRING_LITERAL);
				}
				break;
			case 10:
				localctx = new TableOptionDataDirectoryContext(this, localctx);
				this.enterOuterAlt(localctx, 10);
				{
				this.state = 1675;
				this.match(SqlParser.DATA);
				this.state = 1676;
				this.match(SqlParser.DIRECTORY);
				this.state = 1678;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===1011) {
					{
					this.state = 1677;
					this.match(SqlParser.EQUAL_SYMBOL);
					}
				}

				this.state = 1680;
				this.match(SqlParser.STRING_LITERAL);
				}
				break;
			case 11:
				localctx = new TableOptionDelayContext(this, localctx);
				this.enterOuterAlt(localctx, 11);
				{
				this.state = 1681;
				this.match(SqlParser.DELAY_KEY_WRITE);
				this.state = 1683;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===1011) {
					{
					this.state = 1682;
					this.match(SqlParser.EQUAL_SYMBOL);
					}
				}

				this.state = 1685;
				(localctx as TableOptionDelayContext)._boolValue = this._input.LT(1);
				_la = this._input.LA(1);
				if(!(_la===1025 || _la===1026)) {
				    (localctx as TableOptionDelayContext)._boolValue = this._errHandler.recoverInline(this);
				}
				else {
					this._errHandler.reportMatch(this);
				    this.consume();
				}
				}
				break;
			case 12:
				localctx = new TableOptionEncryptionContext(this, localctx);
				this.enterOuterAlt(localctx, 12);
				{
				this.state = 1686;
				this.match(SqlParser.ENCRYPTION);
				this.state = 1688;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===1011) {
					{
					this.state = 1687;
					this.match(SqlParser.EQUAL_SYMBOL);
					}
				}

				this.state = 1690;
				this.match(SqlParser.STRING_LITERAL);
				}
				break;
			case 13:
				localctx = new TableOptionIndexDirectoryContext(this, localctx);
				this.enterOuterAlt(localctx, 13);
				{
				this.state = 1691;
				this.match(SqlParser.INDEX);
				this.state = 1692;
				this.match(SqlParser.DIRECTORY);
				this.state = 1694;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===1011) {
					{
					this.state = 1693;
					this.match(SqlParser.EQUAL_SYMBOL);
					}
				}

				this.state = 1696;
				this.match(SqlParser.STRING_LITERAL);
				}
				break;
			case 14:
				localctx = new TableOptionInsertMethodContext(this, localctx);
				this.enterOuterAlt(localctx, 14);
				{
				this.state = 1697;
				this.match(SqlParser.INSERT_METHOD);
				this.state = 1699;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===1011) {
					{
					this.state = 1698;
					this.match(SqlParser.EQUAL_SYMBOL);
					}
				}

				this.state = 1701;
				(localctx as TableOptionInsertMethodContext)._insertMethod = this._input.LT(1);
				_la = this._input.LA(1);
				if(!(_la===362 || _la===397 || _la===448)) {
				    (localctx as TableOptionInsertMethodContext)._insertMethod = this._errHandler.recoverInline(this);
				}
				else {
					this._errHandler.reportMatch(this);
				    this.consume();
				}
				}
				break;
			case 15:
				localctx = new TableOptionKeyBlockSizeContext(this, localctx);
				this.enterOuterAlt(localctx, 15);
				{
				this.state = 1702;
				this.match(SqlParser.KEY_BLOCK_SIZE);
				this.state = 1704;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===1011) {
					{
					this.state = 1703;
					this.match(SqlParser.EQUAL_SYMBOL);
					}
				}

				this.state = 1706;
				this.fileSizeLiteral();
				}
				break;
			case 16:
				localctx = new TableOptionMaxRowsContext(this, localctx);
				this.enterOuterAlt(localctx, 16);
				{
				this.state = 1707;
				this.match(SqlParser.MAX_ROWS);
				this.state = 1709;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===1011) {
					{
					this.state = 1708;
					this.match(SqlParser.EQUAL_SYMBOL);
					}
				}

				this.state = 1711;
				this.decimalLiteral();
				}
				break;
			case 17:
				localctx = new TableOptionMinRowsContext(this, localctx);
				this.enterOuterAlt(localctx, 17);
				{
				this.state = 1712;
				this.match(SqlParser.MIN_ROWS);
				this.state = 1714;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===1011) {
					{
					this.state = 1713;
					this.match(SqlParser.EQUAL_SYMBOL);
					}
				}

				this.state = 1716;
				this.decimalLiteral();
				}
				break;
			case 18:
				localctx = new TableOptionPackKeysContext(this, localctx);
				this.enterOuterAlt(localctx, 18);
				{
				this.state = 1717;
				this.match(SqlParser.PACK_KEYS);
				this.state = 1719;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===1011) {
					{
					this.state = 1718;
					this.match(SqlParser.EQUAL_SYMBOL);
					}
				}

				this.state = 1721;
				(localctx as TableOptionPackKeysContext)._extBoolValue = this._input.LT(1);
				_la = this._input.LA(1);
				if(!(_la===38 || _la===1025 || _la===1026)) {
				    (localctx as TableOptionPackKeysContext)._extBoolValue = this._errHandler.recoverInline(this);
				}
				else {
					this._errHandler.reportMatch(this);
				    this.consume();
				}
				}
				break;
			case 19:
				localctx = new TableOptionPasswordContext(this, localctx);
				this.enterOuterAlt(localctx, 19);
				{
				this.state = 1722;
				this.match(SqlParser.PASSWORD);
				this.state = 1724;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===1011) {
					{
					this.state = 1723;
					this.match(SqlParser.EQUAL_SYMBOL);
					}
				}

				this.state = 1726;
				this.match(SqlParser.STRING_LITERAL);
				}
				break;
			case 20:
				localctx = new TableOptionRowFormatContext(this, localctx);
				this.enterOuterAlt(localctx, 20);
				{
				this.state = 1727;
				this.match(SqlParser.ROW_FORMAT);
				this.state = 1729;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===1011) {
					{
					this.state = 1728;
					this.match(SqlParser.EQUAL_SYMBOL);
					}
				}

				this.state = 1731;
				(localctx as TableOptionRowFormatContext)._rowFormat = this._input.LT(1);
				_la = this._input.LA(1);
				if(!(_la===38 || ((((_la - 307)) & ~0x1F) === 0 && ((1 << (_la - 307)) & 1073741829) !== 0) || _la===363 || _la===487)) {
				    (localctx as TableOptionRowFormatContext)._rowFormat = this._errHandler.recoverInline(this);
				}
				else {
					this._errHandler.reportMatch(this);
				    this.consume();
				}
				}
				break;
			case 21:
				localctx = new TableOptionRecalculationContext(this, localctx);
				this.enterOuterAlt(localctx, 21);
				{
				this.state = 1732;
				this.match(SqlParser.STATS_AUTO_RECALC);
				this.state = 1734;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===1011) {
					{
					this.state = 1733;
					this.match(SqlParser.EQUAL_SYMBOL);
					}
				}

				this.state = 1736;
				(localctx as TableOptionRecalculationContext)._extBoolValue = this._input.LT(1);
				_la = this._input.LA(1);
				if(!(_la===38 || _la===1025 || _la===1026)) {
				    (localctx as TableOptionRecalculationContext)._extBoolValue = this._errHandler.recoverInline(this);
				}
				else {
					this._errHandler.reportMatch(this);
				    this.consume();
				}
				}
				break;
			case 22:
				localctx = new TableOptionPersistentContext(this, localctx);
				this.enterOuterAlt(localctx, 22);
				{
				this.state = 1737;
				this.match(SqlParser.STATS_PERSISTENT);
				this.state = 1739;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===1011) {
					{
					this.state = 1738;
					this.match(SqlParser.EQUAL_SYMBOL);
					}
				}

				this.state = 1741;
				(localctx as TableOptionPersistentContext)._extBoolValue = this._input.LT(1);
				_la = this._input.LA(1);
				if(!(_la===38 || _la===1025 || _la===1026)) {
				    (localctx as TableOptionPersistentContext)._extBoolValue = this._errHandler.recoverInline(this);
				}
				else {
					this._errHandler.reportMatch(this);
				    this.consume();
				}
				}
				break;
			case 23:
				localctx = new TableOptionSamplePageContext(this, localctx);
				this.enterOuterAlt(localctx, 23);
				{
				this.state = 1742;
				this.match(SqlParser.STATS_SAMPLE_PAGES);
				this.state = 1744;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===1011) {
					{
					this.state = 1743;
					this.match(SqlParser.EQUAL_SYMBOL);
					}
				}

				this.state = 1746;
				this.decimalLiteral();
				}
				break;
			case 24:
				localctx = new TableOptionTablespaceContext(this, localctx);
				this.enterOuterAlt(localctx, 24);
				{
				this.state = 1747;
				this.match(SqlParser.TABLESPACE);
				this.state = 1748;
				this.uid();
				this.state = 1750;
				this._errHandler.sync(this);
				switch ( this._interp.adaptivePredict(this._input, 197, this._ctx) ) {
				case 1:
					{
					this.state = 1749;
					this.tablespaceStorage();
					}
					break;
				}
				}
				break;
			case 25:
				localctx = new TableOptionTablespaceContext(this, localctx);
				this.enterOuterAlt(localctx, 25);
				{
				this.state = 1752;
				this.tablespaceStorage();
				}
				break;
			case 26:
				localctx = new TableOptionUnionContext(this, localctx);
				this.enterOuterAlt(localctx, 26);
				{
				this.state = 1753;
				this.match(SqlParser.UNION);
				this.state = 1755;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===1011) {
					{
					this.state = 1754;
					this.match(SqlParser.EQUAL_SYMBOL);
					}
				}

				this.state = 1757;
				this.match(SqlParser.LR_BRACKET);
				this.state = 1758;
				this.tables();
				this.state = 1759;
				this.match(SqlParser.RR_BRACKET);
				}
				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 tablespaceStorage(): TablespaceStorageContext {
		let localctx: TablespaceStorageContext = new TablespaceStorageContext(this, this._ctx, this.state);
		this.enterRule(localctx, 96, SqlParser.RULE_tablespaceStorage);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 1763;
			this.match(SqlParser.STORAGE);
			this.state = 1764;
			_la = this._input.LA(1);
			if(!(_la===38 || _la===333 || _la===682)) {
			this._errHandler.recoverInline(this);
			}
			else {
				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 partitionDefinitions(): PartitionDefinitionsContext {
		let localctx: PartitionDefinitionsContext = new PartitionDefinitionsContext(this, this._ctx, this.state);
		this.enterRule(localctx, 98, SqlParser.RULE_partitionDefinitions);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 1766;
			this.match(SqlParser.PARTITION);
			this.state = 1767;
			this.match(SqlParser.BY);
			this.state = 1768;
			this.partitionFunctionDefinition();
			this.state = 1771;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===467) {
				{
				this.state = 1769;
				this.match(SqlParser.PARTITIONS);
				this.state = 1770;
				localctx._count = this.decimalLiteral();
				}
			}

			this.state = 1780;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===550) {
				{
				this.state = 1773;
				this.match(SqlParser.SUBPARTITION);
				this.state = 1774;
				this.match(SqlParser.BY);
				this.state = 1775;
				this.subpartitionFunctionDefinition();
				this.state = 1778;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===551) {
					{
					this.state = 1776;
					this.match(SqlParser.SUBPARTITIONS);
					this.state = 1777;
					localctx._subCount = this.decimalLiteral();
					}
				}

				}
			}

			this.state = 1793;
			this._errHandler.sync(this);
			switch ( this._interp.adaptivePredict(this._input, 204, this._ctx) ) {
			case 1:
				{
				this.state = 1782;
				this.match(SqlParser.LR_BRACKET);
				this.state = 1783;
				this.partitionDefinition();
				this.state = 1788;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				while (_la===1022) {
					{
					{
					this.state = 1784;
					this.match(SqlParser.COMMA);
					this.state = 1785;
					this.partitionDefinition();
					}
					}
					this.state = 1790;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
				}
				this.state = 1791;
				this.match(SqlParser.RR_BRACKET);
				}
				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 partitionFunctionDefinition(): PartitionFunctionDefinitionContext {
		let localctx: PartitionFunctionDefinitionContext = new PartitionFunctionDefinitionContext(this, this._ctx, this.state);
		this.enterRule(localctx, 100, SqlParser.RULE_partitionFunctionDefinition);
		let _la: number;
		try {
			this.state = 1840;
			this._errHandler.sync(this);
			switch ( this._interp.adaptivePredict(this._input, 210, this._ctx) ) {
			case 1:
				localctx = new PartitionFunctionHashContext(this, localctx);
				this.enterOuterAlt(localctx, 1);
				{
				this.state = 1796;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===90) {
					{
					this.state = 1795;
					this.match(SqlParser.LINEAR);
					}
				}

				this.state = 1798;
				this.match(SqlParser.HASH);
				this.state = 1799;
				this.match(SqlParser.LR_BRACKET);
				this.state = 1800;
				this.expression(0);
				this.state = 1801;
				this.match(SqlParser.RR_BRACKET);
				}
				break;
			case 2:
				localctx = new PartitionFunctionKeyContext(this, localctx);
				this.enterOuterAlt(localctx, 2);
				{
				this.state = 1804;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===90) {
					{
					this.state = 1803;
					this.match(SqlParser.LINEAR);
					}
				}

				this.state = 1806;
				this.match(SqlParser.KEY);
				this.state = 1810;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===274) {
					{
					this.state = 1807;
					this.match(SqlParser.ALGORITHM);
					this.state = 1808;
					this.match(SqlParser.EQUAL_SYMBOL);
					this.state = 1809;
					(localctx as PartitionFunctionKeyContext)._algType = this._input.LT(1);
					_la = this._input.LA(1);
					if(!(_la===1026 || _la===1027)) {
					    (localctx as PartitionFunctionKeyContext)._algType = this._errHandler.recoverInline(this);
					}
					else {
						this._errHandler.reportMatch(this);
					    this.consume();
					}
					}
				}

				this.state = 1812;
				this.match(SqlParser.LR_BRACKET);
				this.state = 1813;
				this.uidList();
				this.state = 1814;
				this.match(SqlParser.RR_BRACKET);
				}
				break;
			case 3:
				localctx = new PartitionFunctionRangeContext(this, localctx);
				this.enterOuterAlt(localctx, 3);
				{
				this.state = 1816;
				this.match(SqlParser.RANGE);
				this.state = 1826;
				this._errHandler.sync(this);
				switch (this._input.LA(1)) {
				case 1020:
					{
					this.state = 1817;
					this.match(SqlParser.LR_BRACKET);
					this.state = 1818;
					this.expression(0);
					this.state = 1819;
					this.match(SqlParser.RR_BRACKET);
					}
					break;
				case 302:
					{
					this.state = 1821;
					this.match(SqlParser.COLUMNS);
					this.state = 1822;
					this.match(SqlParser.LR_BRACKET);
					this.state = 1823;
					this.uidList();
					this.state = 1824;
					this.match(SqlParser.RR_BRACKET);
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				}
				break;
			case 4:
				localctx = new PartitionFunctionListContext(this, localctx);
				this.enterOuterAlt(localctx, 4);
				{
				this.state = 1828;
				this.match(SqlParser.LIST);
				this.state = 1838;
				this._errHandler.sync(this);
				switch (this._input.LA(1)) {
				case 1020:
					{
					this.state = 1829;
					this.match(SqlParser.LR_BRACKET);
					this.state = 1830;
					this.expression(0);
					this.state = 1831;
					this.match(SqlParser.RR_BRACKET);
					}
					break;
				case 302:
					{
					this.state = 1833;
					this.match(SqlParser.COLUMNS);
					this.state = 1834;
					this.match(SqlParser.LR_BRACKET);
					this.state = 1835;
					this.uidList();
					this.state = 1836;
					this.match(SqlParser.RR_BRACKET);
					}
					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 subpartitionFunctionDefinition(): SubpartitionFunctionDefinitionContext {
		let localctx: SubpartitionFunctionDefinitionContext = new SubpartitionFunctionDefinitionContext(this, this._ctx, this.state);
		this.enterRule(localctx, 102, SqlParser.RULE_subpartitionFunctionDefinition);
		let _la: number;
		try {
			this.state = 1863;
			this._errHandler.sync(this);
			switch ( this._interp.adaptivePredict(this._input, 214, this._ctx) ) {
			case 1:
				localctx = new SubPartitionFunctionHashContext(this, localctx);
				this.enterOuterAlt(localctx, 1);
				{
				this.state = 1843;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===90) {
					{
					this.state = 1842;
					this.match(SqlParser.LINEAR);
					}
				}

				this.state = 1845;
				this.match(SqlParser.HASH);
				this.state = 1846;
				this.match(SqlParser.LR_BRACKET);
				this.state = 1847;
				this.expression(0);
				this.state = 1848;
				this.match(SqlParser.RR_BRACKET);
				}
				break;
			case 2:
				localctx = new SubPartitionFunctionKeyContext(this, localctx);
				this.enterOuterAlt(localctx, 2);
				{
				this.state = 1851;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===90) {
					{
					this.state = 1850;
					this.match(SqlParser.LINEAR);
					}
				}

				this.state = 1853;
				this.match(SqlParser.KEY);
				this.state = 1857;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===274) {
					{
					this.state = 1854;
					this.match(SqlParser.ALGORITHM);
					this.state = 1855;
					this.match(SqlParser.EQUAL_SYMBOL);
					this.state = 1856;
					(localctx as SubPartitionFunctionKeyContext)._algType = this._input.LT(1);
					_la = this._input.LA(1);
					if(!(_la===1026 || _la===1027)) {
					    (localctx as SubPartitionFunctionKeyContext)._algType = this._errHandler.recoverInline(this);
					}
					else {
						this._errHandler.reportMatch(this);
					    this.consume();
					}
					}
				}

				this.state = 1859;
				this.match(SqlParser.LR_BRACKET);
				this.state = 1860;
				this.uidList();
				this.state = 1861;
				this.match(SqlParser.RR_BRACKET);
				}
				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 partitionDefinition(): PartitionDefinitionContext {
		let localctx: PartitionDefinitionContext = new PartitionDefinitionContext(this, this._ctx, this.state);
		this.enterRule(localctx, 104, SqlParser.RULE_partitionDefinition);
		let _la: number;
		try {
			let _alt: number;
			this.state = 1996;
			this._errHandler.sync(this);
			switch ( this._interp.adaptivePredict(this._input, 233, this._ctx) ) {
			case 1:
				localctx = new PartitionComparisionContext(this, localctx);
				this.enterOuterAlt(localctx, 1);
				{
				this.state = 1865;
				this.match(SqlParser.PARTITION);
				this.state = 1866;
				this.uid();
				this.state = 1867;
				this.match(SqlParser.VALUES);
				this.state = 1868;
				this.match(SqlParser.LESS);
				this.state = 1869;
				this.match(SqlParser.THAN);
				this.state = 1870;
				this.match(SqlParser.LR_BRACKET);
				this.state = 1871;
				this.partitionDefinerAtom();
				this.state = 1876;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				while (_la===1022) {
					{
					{
					this.state = 1872;
					this.match(SqlParser.COMMA);
					this.state = 1873;
					this.partitionDefinerAtom();
					}
					}
					this.state = 1878;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
				}
				this.state = 1879;
				this.match(SqlParser.RR_BRACKET);
				this.state = 1883;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				while (_la===72 || _la===305 || _la===323 || _la===342 || ((((_la - 428)) & ~0x1F) === 0 && ((1 << (_la - 428)) & 2097665) !== 0) || _la===545 || _la===556) {
					{
					{
					this.state = 1880;
					this.partitionOption();
					}
					}
					this.state = 1885;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
				}
				this.state = 1894;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===550) {
					{
					this.state = 1886;
					this.subpartitionDefinition();
					this.state = 1891;
					this._errHandler.sync(this);
					_alt = this._interp.adaptivePredict(this._input, 217, this._ctx);
					while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) {
						if (_alt === 1) {
							{
							{
							this.state = 1887;
							this.match(SqlParser.COMMA);
							this.state = 1888;
							this.subpartitionDefinition();
							}
							}
						}
						this.state = 1893;
						this._errHandler.sync(this);
						_alt = this._interp.adaptivePredict(this._input, 217, this._ctx);
					}
					}
				}

				}
				break;
			case 2:
				localctx = new PartitionComparisionContext(this, localctx);
				this.enterOuterAlt(localctx, 2);
				{
				this.state = 1896;
				this.match(SqlParser.PARTITION);
				this.state = 1897;
				this.uid();
				this.state = 1898;
				this.match(SqlParser.VALUES);
				this.state = 1899;
				this.match(SqlParser.LESS);
				this.state = 1900;
				this.match(SqlParser.THAN);
				this.state = 1901;
				this.partitionDefinerAtom();
				this.state = 1905;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				while (_la===72 || _la===305 || _la===323 || _la===342 || ((((_la - 428)) & ~0x1F) === 0 && ((1 << (_la - 428)) & 2097665) !== 0) || _la===545 || _la===556) {
					{
					{
					this.state = 1902;
					this.partitionOption();
					}
					}
					this.state = 1907;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
				}
				this.state = 1916;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===550) {
					{
					this.state = 1908;
					this.subpartitionDefinition();
					this.state = 1913;
					this._errHandler.sync(this);
					_alt = this._interp.adaptivePredict(this._input, 220, this._ctx);
					while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) {
						if (_alt === 1) {
							{
							{
							this.state = 1909;
							this.match(SqlParser.COMMA);
							this.state = 1910;
							this.subpartitionDefinition();
							}
							}
						}
						this.state = 1915;
						this._errHandler.sync(this);
						_alt = this._interp.adaptivePredict(this._input, 220, this._ctx);
					}
					}
				}

				}
				break;
			case 3:
				localctx = new PartitionListAtomContext(this, localctx);
				this.enterOuterAlt(localctx, 3);
				{
				this.state = 1918;
				this.match(SqlParser.PARTITION);
				this.state = 1919;
				this.uid();
				this.state = 1920;
				this.match(SqlParser.VALUES);
				this.state = 1921;
				this.match(SqlParser.IN);
				this.state = 1922;
				this.match(SqlParser.LR_BRACKET);
				this.state = 1923;
				this.partitionDefinerAtom();
				this.state = 1928;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				while (_la===1022) {
					{
					{
					this.state = 1924;
					this.match(SqlParser.COMMA);
					this.state = 1925;
					this.partitionDefinerAtom();
					}
					}
					this.state = 1930;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
				}
				this.state = 1931;
				this.match(SqlParser.RR_BRACKET);
				this.state = 1935;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				while (_la===72 || _la===305 || _la===323 || _la===342 || ((((_la - 428)) & ~0x1F) === 0 && ((1 << (_la - 428)) & 2097665) !== 0) || _la===545 || _la===556) {
					{
					{
					this.state = 1932;
					this.partitionOption();
					}
					}
					this.state = 1937;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
				}
				this.state = 1946;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===550) {
					{
					this.state = 1938;
					this.subpartitionDefinition();
					this.state = 1943;
					this._errHandler.sync(this);
					_alt = this._interp.adaptivePredict(this._input, 224, this._ctx);
					while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) {
						if (_alt === 1) {
							{
							{
							this.state = 1939;
							this.match(SqlParser.COMMA);
							this.state = 1940;
							this.subpartitionDefinition();
							}
							}
						}
						this.state = 1945;
						this._errHandler.sync(this);
						_alt = this._interp.adaptivePredict(this._input, 224, this._ctx);
					}
					}
				}

				}
				break;
			case 4:
				localctx = new PartitionListVectorContext(this, localctx);
				this.enterOuterAlt(localctx, 4);
				{
				this.state = 1948;
				this.match(SqlParser.PARTITION);
				this.state = 1949;
				this.uid();
				this.state = 1950;
				this.match(SqlParser.VALUES);
				this.state = 1951;
				this.match(SqlParser.IN);
				this.state = 1952;
				this.match(SqlParser.LR_BRACKET);
				this.state = 1953;
				this.partitionDefinerVector();
				this.state = 1958;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				while (_la===1022) {
					{
					{
					this.state = 1954;
					this.match(SqlParser.COMMA);
					this.state = 1955;
					this.partitionDefinerVector();
					}
					}
					this.state = 1960;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
				}
				this.state = 1961;
				this.match(SqlParser.RR_BRACKET);
				this.state = 1965;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				while (_la===72 || _la===305 || _la===323 || _la===342 || ((((_la - 428)) & ~0x1F) === 0 && ((1 << (_la - 428)) & 2097665) !== 0) || _la===545 || _la===556) {
					{
					{
					this.state = 1962;
					this.partitionOption();
					}
					}
					this.state = 1967;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
				}
				this.state = 1976;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===550) {
					{
					this.state = 1968;
					this.subpartitionDefinition();
					this.state = 1973;
					this._errHandler.sync(this);
					_alt = this._interp.adaptivePredict(this._input, 228, this._ctx);
					while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) {
						if (_alt === 1) {
							{
							{
							this.state = 1969;
							this.match(SqlParser.COMMA);
							this.state = 1970;
							this.subpartitionDefinition();
							}
							}
						}
						this.state = 1975;
						this._errHandler.sync(this);
						_alt = this._interp.adaptivePredict(this._input, 228, this._ctx);
					}
					}
				}

				}
				break;
			case 5:
				localctx = new PartitionSimpleContext(this, localctx);
				this.enterOuterAlt(localctx, 5);
				{
				this.state = 1978;
				this.match(SqlParser.PARTITION);
				this.state = 1979;
				this.uid();
				this.state = 1983;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				while (_la===72 || _la===305 || _la===323 || _la===342 || ((((_la - 428)) & ~0x1F) === 0 && ((1 << (_la - 428)) & 2097665) !== 0) || _la===545 || _la===556) {
					{
					{
					this.state = 1980;
					this.partitionOption();
					}
					}
					this.state = 1985;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
				}
				this.state = 1994;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===550) {
					{
					this.state = 1986;
					this.subpartitionDefinition();
					this.state = 1991;
					this._errHandler.sync(this);
					_alt = this._interp.adaptivePredict(this._input, 231, this._ctx);
					while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) {
						if (_alt === 1) {
							{
							{
							this.state = 1987;
							this.match(SqlParser.COMMA);
							this.state = 1988;
							this.subpartitionDefinition();
							}
							}
						}
						this.state = 1993;
						this._errHandler.sync(this);
						_alt = this._interp.adaptivePredict(this._input, 231, this._ctx);
					}
					}
				}

				}
				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 partitionDefinerAtom(): PartitionDefinerAtomContext {
		let localctx: PartitionDefinerAtomContext = new PartitionDefinerAtomContext(this, this._ctx, this.state);
		this.enterRule(localctx, 106, SqlParser.RULE_partitionDefinerAtom);
		try {
			this.state = 2001;
			this._errHandler.sync(this);
			switch ( this._interp.adaptivePredict(this._input, 234, this._ctx) ) {
			case 1:
				this.enterOuterAlt(localctx, 1);
				{
				this.state = 1998;
				this.constant();
				}
				break;
			case 2:
				this.enterOuterAlt(localctx, 2);
				{
				this.state = 1999;
				this.expression(0);
				}
				break;
			case 3:
				this.enterOuterAlt(localctx, 3);
				{
				this.state = 2000;
				this.match(SqlParser.MAXVALUE);
				}
				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 partitionDefinerVector(): PartitionDefinerVectorContext {
		let localctx: PartitionDefinerVectorContext = new PartitionDefinerVectorContext(this, this._ctx, this.state);
		this.enterRule(localctx, 108, SqlParser.RULE_partitionDefinerVector);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 2003;
			this.match(SqlParser.LR_BRACKET);
			this.state = 2004;
			this.partitionDefinerAtom();
			this.state = 2007;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			do {
				{
				{
				this.state = 2005;
				this.match(SqlParser.COMMA);
				this.state = 2006;
				this.partitionDefinerAtom();
				}
				}
				this.state = 2009;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			} while (_la===1022);
			this.state = 2011;
			this.match(SqlParser.RR_BRACKET);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public subpartitionDefinition(): SubpartitionDefinitionContext {
		let localctx: SubpartitionDefinitionContext = new SubpartitionDefinitionContext(this, this._ctx, this.state);
		this.enterRule(localctx, 110, SqlParser.RULE_subpartitionDefinition);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 2013;
			this.match(SqlParser.SUBPARTITION);
			this.state = 2014;
			this.uid();
			this.state = 2018;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la===72 || _la===305 || _la===323 || _la===342 || ((((_la - 428)) & ~0x1F) === 0 && ((1 << (_la - 428)) & 2097665) !== 0) || _la===545 || _la===556) {
				{
				{
				this.state = 2015;
				this.partitionOption();
				}
				}
				this.state = 2020;
				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 partitionOption(): PartitionOptionContext {
		let localctx: PartitionOptionContext = new PartitionOptionContext(this, this._ctx, this.state);
		this.enterRule(localctx, 112, SqlParser.RULE_partitionOption);
		let _la: number;
		try {
			this.state = 2066;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case 342:
			case 545:
				localctx = new PartitionOptionEngineContext(this, localctx);
				this.enterOuterAlt(localctx, 1);
				{
				this.state = 2022;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===545) {
					{
					this.state = 2021;
					this.match(SqlParser.STORAGE);
					}
				}

				this.state = 2024;
				this.match(SqlParser.ENGINE);
				this.state = 2026;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===1011) {
					{
					this.state = 2025;
					this.match(SqlParser.EQUAL_SYMBOL);
					}
				}

				this.state = 2028;
				this.engineName();
				}
				break;
			case 305:
				localctx = new PartitionOptionCommentContext(this, localctx);
				this.enterOuterAlt(localctx, 2);
				{
				this.state = 2029;
				this.match(SqlParser.COMMENT);
				this.state = 2031;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===1011) {
					{
					this.state = 2030;
					this.match(SqlParser.EQUAL_SYMBOL);
					}
				}

				this.state = 2033;
				(localctx as PartitionOptionCommentContext)._comment = this.match(SqlParser.STRING_LITERAL);
				}
				break;
			case 323:
				localctx = new PartitionOptionDataDirectoryContext(this, localctx);
				this.enterOuterAlt(localctx, 3);
				{
				this.state = 2034;
				this.match(SqlParser.DATA);
				this.state = 2035;
				this.match(SqlParser.DIRECTORY);
				this.state = 2037;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===1011) {
					{
					this.state = 2036;
					this.match(SqlParser.EQUAL_SYMBOL);
					}
				}

				this.state = 2039;
				(localctx as PartitionOptionDataDirectoryContext)._dataDirectory = this.match(SqlParser.STRING_LITERAL);
				}
				break;
			case 72:
				localctx = new PartitionOptionIndexDirectoryContext(this, localctx);
				this.enterOuterAlt(localctx, 4);
				{
				this.state = 2040;
				this.match(SqlParser.INDEX);
				this.state = 2041;
				this.match(SqlParser.DIRECTORY);
				this.state = 2043;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===1011) {
					{
					this.state = 2042;
					this.match(SqlParser.EQUAL_SYMBOL);
					}
				}

				this.state = 2045;
				(localctx as PartitionOptionIndexDirectoryContext)._indexDirectory = this.match(SqlParser.STRING_LITERAL);
				}
				break;
			case 428:
				localctx = new PartitionOptionMaxRowsContext(this, localctx);
				this.enterOuterAlt(localctx, 5);
				{
				this.state = 2046;
				this.match(SqlParser.MAX_ROWS);
				this.state = 2048;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===1011) {
					{
					this.state = 2047;
					this.match(SqlParser.EQUAL_SYMBOL);
					}
				}

				this.state = 2050;
				(localctx as PartitionOptionMaxRowsContext)._maxRows = this.decimalLiteral();
				}
				break;
			case 437:
				localctx = new PartitionOptionMinRowsContext(this, localctx);
				this.enterOuterAlt(localctx, 6);
				{
				this.state = 2051;
				this.match(SqlParser.MIN_ROWS);
				this.state = 2053;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===1011) {
					{
					this.state = 2052;
					this.match(SqlParser.EQUAL_SYMBOL);
					}
				}

				this.state = 2055;
				(localctx as PartitionOptionMinRowsContext)._minRows = this.decimalLiteral();
				}
				break;
			case 556:
				localctx = new PartitionOptionTablespaceContext(this, localctx);
				this.enterOuterAlt(localctx, 7);
				{
				this.state = 2056;
				this.match(SqlParser.TABLESPACE);
				this.state = 2058;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===1011) {
					{
					this.state = 2057;
					this.match(SqlParser.EQUAL_SYMBOL);
					}
				}

				this.state = 2060;
				(localctx as PartitionOptionTablespaceContext)._tablespace = this.uid();
				}
				break;
			case 449:
				localctx = new PartitionOptionNodeGroupContext(this, localctx);
				this.enterOuterAlt(localctx, 8);
				{
				this.state = 2061;
				this.match(SqlParser.NODEGROUP);
				this.state = 2063;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===1011) {
					{
					this.state = 2062;
					this.match(SqlParser.EQUAL_SYMBOL);
					}
				}

				this.state = 2065;
				(localctx as PartitionOptionNodeGroupContext)._nodegroup = this.uid();
				}
				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 alterDatabase(): AlterDatabaseContext {
		let localctx: AlterDatabaseContext = new AlterDatabaseContext(this, this._ctx, this.state);
		this.enterRule(localctx, 114, SqlParser.RULE_alterDatabase);
		let _la: number;
		try {
			this.state = 2086;
			this._errHandler.sync(this);
			switch ( this._interp.adaptivePredict(this._input, 249, this._ctx) ) {
			case 1:
				localctx = new AlterSimpleDatabaseContext(this, localctx);
				this.enterOuterAlt(localctx, 1);
				{
				this.state = 2068;
				this.match(SqlParser.ALTER);
				this.state = 2069;
				(localctx as AlterSimpleDatabaseContext)._dbFormat = this._input.LT(1);
				_la = this._input.LA(1);
				if(!(_la===35 || _la===135)) {
				    (localctx as AlterSimpleDatabaseContext)._dbFormat = this._errHandler.recoverInline(this);
				}
				else {
					this._errHandler.reportMatch(this);
				    this.consume();
				}
				this.state = 2071;
				this._errHandler.sync(this);
				switch ( this._interp.adaptivePredict(this._input, 247, this._ctx) ) {
				case 1:
					{
					this.state = 2070;
					this.uid();
					}
					break;
				}
				this.state = 2074;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				do {
					{
					{
					this.state = 2073;
					this.createDatabaseOption();
					}
					}
					this.state = 2076;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
				} while (((((_la - 22)) & ~0x1F) === 0 && ((1 << (_la - 22)) & 65541) !== 0) || _la===731);
				}
				break;
			case 2:
				localctx = new AlterUpgradeNameContext(this, localctx);
				this.enterOuterAlt(localctx, 2);
				{
				this.state = 2078;
				this.match(SqlParser.ALTER);
				this.state = 2079;
				(localctx as AlterUpgradeNameContext)._dbFormat = this._input.LT(1);
				_la = this._input.LA(1);
				if(!(_la===35 || _la===135)) {
				    (localctx as AlterUpgradeNameContext)._dbFormat = this._errHandler.recoverInline(this);
				}
				else {
					this._errHandler.reportMatch(this);
				    this.consume();
				}
				this.state = 2080;
				this.uid();
				this.state = 2081;
				this.match(SqlParser.UPGRADE);
				this.state = 2082;
				this.match(SqlParser.DATA);
				this.state = 2083;
				this.match(SqlParser.DIRECTORY);
				this.state = 2084;
				this.match(SqlParser.NAME);
				}
				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 alterEvent(): AlterEventContext {
		let localctx: AlterEventContext = new AlterEventContext(this, this._ctx, this.state);
		this.enterRule(localctx, 116, SqlParser.RULE_alterEvent);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 2088;
			this.match(SqlParser.ALTER);
			this.state = 2090;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===327) {
				{
				this.state = 2089;
				this.ownerStatement();
				}
			}

			this.state = 2092;
			this.match(SqlParser.EVENT);
			this.state = 2093;
			this.fullId();
			this.state = 2097;
			this._errHandler.sync(this);
			switch ( this._interp.adaptivePredict(this._input, 251, this._ctx) ) {
			case 1:
				{
				this.state = 2094;
				this.match(SqlParser.ON);
				this.state = 2095;
				this.match(SqlParser.SCHEDULE);
				this.state = 2096;
				this.scheduleExpression();
				}
				break;
			}
			this.state = 2105;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===106) {
				{
				this.state = 2099;
				this.match(SqlParser.ON);
				this.state = 2100;
				this.match(SqlParser.COMPLETION);
				this.state = 2102;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===102) {
					{
					this.state = 2101;
					this.match(SqlParser.NOT);
					}
				}

				this.state = 2104;
				this.match(SqlParser.PRESERVE);
				}
			}

			this.state = 2110;
			this._errHandler.sync(this);
			switch ( this._interp.adaptivePredict(this._input, 254, this._ctx) ) {
			case 1:
				{
				this.state = 2107;
				this.match(SqlParser.RENAME);
				this.state = 2108;
				this.match(SqlParser.TO);
				this.state = 2109;
				this.fullId();
				}
				break;
			}
			this.state = 2113;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===331 || _la===338) {
				{
				this.state = 2112;
				this.enableType();
				}
			}

			this.state = 2117;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===305) {
				{
				this.state = 2115;
				this.match(SqlParser.COMMENT);
				this.state = 2116;
				this.match(SqlParser.STRING_LITERAL);
				}
			}

			this.state = 2121;
			this._errHandler.sync(this);
			switch ( this._interp.adaptivePredict(this._input, 257, this._ctx) ) {
			case 1:
				{
				this.state = 2119;
				this.match(SqlParser.DO);
				this.state = 2120;
				this.routineBody();
				}
				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 alterFunction(): AlterFunctionContext {
		let localctx: AlterFunctionContext = new AlterFunctionContext(this, this._ctx, this.state);
		this.enterRule(localctx, 118, SqlParser.RULE_alterFunction);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 2123;
			this.match(SqlParser.ALTER);
			this.state = 2124;
			this.match(SqlParser.FUNCTION);
			this.state = 2125;
			this.fullId();
			this.state = 2129;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la===43 || ((((_la - 100)) & ~0x1F) === 0 && ((1 << (_la - 100)) & 2097157) !== 0) || _la===143 || _la===305 || _la===317 || _la===396 || _la===448) {
				{
				{
				this.state = 2126;
				this.routineOption();
				}
				}
				this.state = 2131;
				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 alterInstance(): AlterInstanceContext {
		let localctx: AlterInstanceContext = new AlterInstanceContext(this, this._ctx, this.state);
		this.enterRule(localctx, 120, SqlParser.RULE_alterInstance);
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 2132;
			this.match(SqlParser.ALTER);
			this.state = 2133;
			this.match(SqlParser.INSTANCE);
			this.state = 2134;
			this.match(SqlParser.ROTATE);
			this.state = 2135;
			this.match(SqlParser.INNODB);
			this.state = 2136;
			this.match(SqlParser.MASTER);
			this.state = 2137;
			this.match(SqlParser.KEY);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public alterLogfileGroup(): AlterLogfileGroupContext {
		let localctx: AlterLogfileGroupContext = new AlterLogfileGroupContext(this, this._ctx, this.state);
		this.enterRule(localctx, 122, SqlParser.RULE_alterLogfileGroup);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 2139;
			this.match(SqlParser.ALTER);
			this.state = 2140;
			this.match(SqlParser.LOGFILE);
			this.state = 2141;
			this.match(SqlParser.GROUP);
			this.state = 2142;
			this.uid();
			this.state = 2143;
			this.match(SqlParser.ADD);
			this.state = 2144;
			this.match(SqlParser.UNDOFILE);
			this.state = 2145;
			this.match(SqlParser.STRING_LITERAL);
			this.state = 2151;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===382) {
				{
				this.state = 2146;
				this.match(SqlParser.INITIAL_SIZE);
				this.state = 2148;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===1011) {
					{
					this.state = 2147;
					this.match(SqlParser.EQUAL_SYMBOL);
					}
				}

				this.state = 2150;
				this.fileSizeLiteral();
				}
			}

			this.state = 2154;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===581) {
				{
				this.state = 2153;
				this.match(SqlParser.WAIT);
				}
			}

			this.state = 2156;
			this.match(SqlParser.ENGINE);
			this.state = 2158;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===1011) {
				{
				this.state = 2157;
				this.match(SqlParser.EQUAL_SYMBOL);
				}
			}

			this.state = 2160;
			this.engineName();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public alterProcedure(): AlterProcedureContext {
		let localctx: AlterProcedureContext = new AlterProcedureContext(this, this._ctx, this.state);
		this.enterRule(localctx, 124, SqlParser.RULE_alterProcedure);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 2162;
			this.match(SqlParser.ALTER);
			this.state = 2163;
			this.match(SqlParser.PROCEDURE);
			this.state = 2164;
			this.fullId();
			this.state = 2168;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la===43 || ((((_la - 100)) & ~0x1F) === 0 && ((1 << (_la - 100)) & 2097157) !== 0) || _la===143 || _la===305 || _la===317 || _la===396 || _la===448) {
				{
				{
				this.state = 2165;
				this.routineOption();
				}
				}
				this.state = 2170;
				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 alterServer(): AlterServerContext {
		let localctx: AlterServerContext = new AlterServerContext(this, this._ctx, this.state);
		this.enterRule(localctx, 126, SqlParser.RULE_alterServer);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 2171;
			this.match(SqlParser.ALTER);
			this.state = 2172;
			this.match(SqlParser.SERVER);
			this.state = 2173;
			this.uid();
			this.state = 2174;
			this.match(SqlParser.OPTIONS);
			this.state = 2175;
			this.match(SqlParser.LR_BRACKET);
			this.state = 2176;
			this.serverOption();
			this.state = 2181;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la===1022) {
				{
				{
				this.state = 2177;
				this.match(SqlParser.COMMA);
				this.state = 2178;
				this.serverOption();
				}
				}
				this.state = 2183;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			}
			this.state = 2184;
			this.match(SqlParser.RR_BRACKET);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public alterTable(): AlterTableContext {
		let localctx: AlterTableContext = new AlterTableContext(this, this._ctx, this.state);
		this.enterRule(localctx, 128, SqlParser.RULE_alterTable);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 2186;
			this.match(SqlParser.ALTER);
			this.state = 2188;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===451 || _la===456) {
				{
				this.state = 2187;
				localctx._intimeAction = this._input.LT(1);
				_la = this._input.LA(1);
				if(!(_la===451 || _la===456)) {
				    localctx._intimeAction = this._errHandler.recoverInline(this);
				}
				else {
					this._errHandler.reportMatch(this);
				    this.consume();
				}
				}
			}

			this.state = 2191;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===70) {
				{
				this.state = 2190;
				this.match(SqlParser.IGNORE);
				}
			}

			this.state = 2193;
			this.match(SqlParser.TABLE);
			this.state = 2194;
			this.tableName();
			this.state = 2203;
			this._errHandler.sync(this);
			switch ( this._interp.adaptivePredict(this._input, 268, this._ctx) ) {
			case 1:
				{
				this.state = 2195;
				this.alterSpecification();
				this.state = 2200;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				while (_la===1022) {
					{
					{
					this.state = 2196;
					this.match(SqlParser.COMMA);
					this.state = 2197;
					this.alterSpecification();
					}
					}
					this.state = 2202;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
				}
				}
				break;
			}
			this.state = 2206;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===115) {
				{
				this.state = 2205;
				this.partitionDefinitions();
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public alterTablespace(): AlterTablespaceContext {
		let localctx: AlterTablespaceContext = new AlterTablespaceContext(this, this._ctx, this.state);
		this.enterRule(localctx, 130, SqlParser.RULE_alterTablespace);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 2208;
			this.match(SqlParser.ALTER);
			this.state = 2209;
			this.match(SqlParser.TABLESPACE);
			this.state = 2210;
			this.uid();
			this.state = 2211;
			localctx._objectAction = this._input.LT(1);
			_la = this._input.LA(1);
			if(!(_la===5 || _la===47)) {
			    localctx._objectAction = this._errHandler.recoverInline(this);
			}
			else {
				this._errHandler.reportMatch(this);
			    this.consume();
			}
			this.state = 2212;
			this.match(SqlParser.DATAFILE);
			this.state = 2213;
			this.match(SqlParser.STRING_LITERAL);
			this.state = 2217;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===382) {
				{
				this.state = 2214;
				this.match(SqlParser.INITIAL_SIZE);
				this.state = 2215;
				this.match(SqlParser.EQUAL_SYMBOL);
				this.state = 2216;
				this.fileSizeLiteral();
				}
			}

			this.state = 2220;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===581) {
				{
				this.state = 2219;
				this.match(SqlParser.WAIT);
				}
			}

			this.state = 2222;
			this.match(SqlParser.ENGINE);
			this.state = 2224;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===1011) {
				{
				this.state = 2223;
				this.match(SqlParser.EQUAL_SYMBOL);
				}
			}

			this.state = 2226;
			this.engineName();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public alterView(): AlterViewContext {
		let localctx: AlterViewContext = new AlterViewContext(this, this._ctx, this.state);
		this.enterRule(localctx, 132, SqlParser.RULE_alterView);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 2228;
			this.match(SqlParser.ALTER);
			this.state = 2232;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===274) {
				{
				this.state = 2229;
				this.match(SqlParser.ALGORITHM);
				this.state = 2230;
				this.match(SqlParser.EQUAL_SYMBOL);
				this.state = 2231;
				localctx._algType = this._input.LT(1);
				_la = this._input.LA(1);
				if(!(_la===433 || _la===558 || _la===565)) {
				    localctx._algType = this._errHandler.recoverInline(this);
				}
				else {
					this._errHandler.reportMatch(this);
				    this.consume();
				}
				}
			}

			this.state = 2235;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===327) {
				{
				this.state = 2234;
				this.ownerStatement();
				}
			}

			this.state = 2240;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===143) {
				{
				this.state = 2237;
				this.match(SqlParser.SQL);
				this.state = 2238;
				this.match(SqlParser.SECURITY);
				this.state = 2239;
				localctx._secContext = this._input.LT(1);
				_la = this._input.LA(1);
				if(!(_la===327 || _la===388)) {
				    localctx._secContext = this._errHandler.recoverInline(this);
				}
				else {
					this._errHandler.reportMatch(this);
				    this.consume();
				}
				}
			}

			this.state = 2242;
			this.match(SqlParser.VIEW);
			this.state = 2243;
			this.fullId();
			this.state = 2248;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===1020) {
				{
				this.state = 2244;
				this.match(SqlParser.LR_BRACKET);
				this.state = 2245;
				this.uidList();
				this.state = 2246;
				this.match(SqlParser.RR_BRACKET);
				}
			}

			this.state = 2250;
			this.match(SqlParser.AS);
			this.state = 2251;
			this.selectStatement();
			this.state = 2258;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===174) {
				{
				this.state = 2252;
				this.match(SqlParser.WITH);
				this.state = 2254;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===290 || _la===402) {
					{
					this.state = 2253;
					localctx._checkOpt = this._input.LT(1);
					_la = this._input.LA(1);
					if(!(_la===290 || _la===402)) {
					    localctx._checkOpt = this._errHandler.recoverInline(this);
					}
					else {
						this._errHandler.reportMatch(this);
					    this.consume();
					}
					}
				}

				this.state = 2256;
				this.match(SqlParser.CHECK);
				this.state = 2257;
				this.match(SqlParser.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 alterSpecification(): AlterSpecificationContext {
		let localctx: AlterSpecificationContext = new AlterSpecificationContext(this, this._ctx, this.state);
		this.enterRule(localctx, 134, SqlParser.RULE_alterSpecification);
		let _la: number;
		try {
			let _alt: number;
			this.state = 2623;
			this._errHandler.sync(this);
			switch ( this._interp.adaptivePredict(this._input, 333, this._ctx) ) {
			case 1:
				localctx = new AlterByTableOptionContext(this, localctx);
				this.enterOuterAlt(localctx, 1);
				{
				this.state = 2260;
				this.tableOption();
				this.state = 2267;
				this._errHandler.sync(this);
				_alt = this._interp.adaptivePredict(this._input, 280, this._ctx);
				while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) {
					if (_alt === 1) {
						{
						{
						this.state = 2262;
						this._errHandler.sync(this);
						_la = this._input.LA(1);
						if (_la===1022) {
							{
							this.state = 2261;
							this.match(SqlParser.COMMA);
							}
						}

						this.state = 2264;
						this.tableOption();
						}
						}
					}
					this.state = 2269;
					this._errHandler.sync(this);
					_alt = this._interp.adaptivePredict(this._input, 280, this._ctx);
				}
				}
				break;
			case 2:
				localctx = new AlterByAddColumnContext(this, localctx);
				this.enterOuterAlt(localctx, 2);
				{
				this.state = 2270;
				this.match(SqlParser.ADD);
				this.state = 2272;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===25) {
					{
					this.state = 2271;
					this.match(SqlParser.COLUMN);
					}
				}

				this.state = 2274;
				this.uid();
				this.state = 2275;
				this.columnDefinition();
				this.state = 2279;
				this._errHandler.sync(this);
				switch (this._input.LA(1)) {
				case 362:
					{
					this.state = 2276;
					this.match(SqlParser.FIRST);
					}
					break;
				case 272:
					{
					this.state = 2277;
					this.match(SqlParser.AFTER);
					this.state = 2278;
					this.uid();
					}
					break;
				case -1:
				case 7:
				case 9:
				case 17:
				case 21:
				case 23:
				case 30:
				case 40:
				case 41:
				case 42:
				case 47:
				case 55:
				case 64:
				case 65:
				case 76:
				case 84:
				case 92:
				case 93:
				case 107:
				case 115:
				case 118:
				case 124:
				case 125:
				case 127:
				case 129:
				case 132:
				case 137:
				case 138:
				case 140:
				case 141:
				case 164:
				case 166:
				case 168:
				case 282:
				case 283:
				case 289:
				case 294:
				case 306:
				case 325:
				case 334:
				case 364:
				case 373:
				case 375:
				case 385:
				case 475:
				case 494:
				case 503:
				case 508:
				case 514:
				case 538:
				case 544:
				case 564:
				case 568:
				case 587:
				case 604:
				case 608:
				case 1007:
				case 1020:
				case 1022:
				case 1023:
					break;
				default:
					break;
				}
				}
				break;
			case 3:
				localctx = new AlterByAddColumnsContext(this, localctx);
				this.enterOuterAlt(localctx, 3);
				{
				this.state = 2281;
				this.match(SqlParser.ADD);
				this.state = 2283;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===25) {
					{
					this.state = 2282;
					this.match(SqlParser.COLUMN);
					}
				}

				this.state = 2285;
				this.match(SqlParser.LR_BRACKET);
				this.state = 2286;
				this.uid();
				this.state = 2287;
				this.columnDefinition();
				this.state = 2294;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				while (_la===1022) {
					{
					{
					this.state = 2288;
					this.match(SqlParser.COMMA);
					this.state = 2289;
					this.uid();
					this.state = 2290;
					this.columnDefinition();
					}
					}
					this.state = 2296;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
				}
				this.state = 2297;
				this.match(SqlParser.RR_BRACKET);
				}
				break;
			case 4:
				localctx = new AlterByAddIndexContext(this, localctx);
				this.enterOuterAlt(localctx, 4);
				{
				this.state = 2299;
				this.match(SqlParser.ADD);
				this.state = 2300;
				(localctx as AlterByAddIndexContext)._indexFormat = this._input.LT(1);
				_la = this._input.LA(1);
				if(!(_la===72 || _la===82)) {
				    (localctx as AlterByAddIndexContext)._indexFormat = this._errHandler.recoverInline(this);
				}
				else {
					this._errHandler.reportMatch(this);
				    this.consume();
				}
				this.state = 2302;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (((((_la - 32)) & ~0x1F) === 0 && ((1 << (_la - 32)) & 4105) !== 0) || _la===87 || _la===105 || _la===133 || _la===151 || ((((_la - 199)) & ~0x1F) === 0 && ((1 << (_la - 199)) & 5373983) !== 0) || ((((_la - 233)) & ~0x1F) === 0 && ((1 << (_la - 233)) & 536870979) !== 0) || ((((_la - 270)) & ~0x1F) === 0 && ((1 << (_la - 270)) & 4294967295) !== 0) || ((((_la - 302)) & ~0x1F) === 0 && ((1 << (_la - 302)) & 4294967295) !== 0) || ((((_la - 334)) & ~0x1F) === 0 && ((1 << (_la - 334)) & 4294967295) !== 0) || ((((_la - 366)) & ~0x1F) === 0 && ((1 << (_la - 366)) & 4294967295) !== 0) || ((((_la - 398)) & ~0x1F) === 0 && ((1 << (_la - 398)) & 4294967295) !== 0) || ((((_la - 430)) & ~0x1F) === 0 && ((1 << (_la - 430)) & 4294967295) !== 0) || ((((_la - 462)) & ~0x1F) === 0 && ((1 << (_la - 462)) & 4294967295) !== 0) || ((((_la - 494)) & ~0x1F) === 0 && ((1 << (_la - 494)) & 4294967295) !== 0) || ((((_la - 526)) & ~0x1F) === 0 && ((1 << (_la - 526)) & 4293918719) !== 0) || ((((_la - 558)) & ~0x1F) === 0 && ((1 << (_la - 558)) & 2145386495) !== 0) || ((((_la - 593)) & ~0x1F) === 0 && ((1 << (_la - 593)) & 4294705151) !== 0) || ((((_la - 625)) & ~0x1F) === 0 && ((1 << (_la - 625)) & 4294967295) !== 0) || ((((_la - 657)) & ~0x1F) === 0 && ((1 << (_la - 657)) & 4294967295) !== 0) || ((((_la - 689)) & ~0x1F) === 0 && ((1 << (_la - 689)) & 4294967199) !== 0) || ((((_la - 721)) & ~0x1F) === 0 && ((1 << (_la - 721)) & 4294967295) !== 0) || ((((_la - 753)) & ~0x1F) === 0 && ((1 << (_la - 753)) & 4294967295) !== 0) || ((((_la - 785)) & ~0x1F) === 0 && ((1 << (_la - 785)) & 4294967295) !== 0) || ((((_la - 817)) & ~0x1F) === 0 && ((1 << (_la - 817)) & 4294967295) !== 0) || ((((_la - 849)) & ~0x1F) === 0 && ((1 << (_la - 849)) & 4294967295) !== 0) || ((((_la - 881)) & ~0x1F) === 0 && ((1 << (_la - 881)) & 4294967295) !== 0) || ((((_la - 913)) & ~0x1F) === 0 && ((1 << (_la - 913)) & 4294967295) !== 0) || ((((_la - 945)) & ~0x1F) === 0 && ((1 << (_la - 945)) & 4294967295) !== 0) || ((((_la - 977)) & ~0x1F) === 0 && ((1 << (_la - 977)) & 131071) !== 0) || ((((_la - 1032)) & ~0x1F) === 0 && ((1 << (_la - 1032)) & 6153) !== 0)) {
					{
					this.state = 2301;
					this.uid();
					}
				}

				this.state = 2305;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===169) {
					{
					this.state = 2304;
					this.indexType();
					}
				}

				this.state = 2307;
				this.indexColumnNames();
				this.state = 2311;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				while (_la===169 || _la===174 || _la===305 || _la===387 || _la===395 || _la===580) {
					{
					{
					this.state = 2308;
					this.indexOption();
					}
					}
					this.state = 2313;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
				}
				}
				break;
			case 5:
				localctx = new AlterByAddPrimaryKeyContext(this, localctx);
				this.enterOuterAlt(localctx, 5);
				{
				this.state = 2314;
				this.match(SqlParser.ADD);
				this.state = 2319;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===27) {
					{
					this.state = 2315;
					this.match(SqlParser.CONSTRAINT);
					this.state = 2317;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
					if (((((_la - 32)) & ~0x1F) === 0 && ((1 << (_la - 32)) & 4105) !== 0) || _la===87 || _la===105 || _la===133 || _la===151 || ((((_la - 199)) & ~0x1F) === 0 && ((1 << (_la - 199)) & 5373983) !== 0) || ((((_la - 233)) & ~0x1F) === 0 && ((1 << (_la - 233)) & 536870979) !== 0) || ((((_la - 270)) & ~0x1F) === 0 && ((1 << (_la - 270)) & 4294967295) !== 0) || ((((_la - 302)) & ~0x1F) === 0 && ((1 << (_la - 302)) & 4294967295) !== 0) || ((((_la - 334)) & ~0x1F) === 0 && ((1 << (_la - 334)) & 4294967295) !== 0) || ((((_la - 366)) & ~0x1F) === 0 && ((1 << (_la - 366)) & 4294967295) !== 0) || ((((_la - 398)) & ~0x1F) === 0 && ((1 << (_la - 398)) & 4294967295) !== 0) || ((((_la - 430)) & ~0x1F) === 0 && ((1 << (_la - 430)) & 4294967295) !== 0) || ((((_la - 462)) & ~0x1F) === 0 && ((1 << (_la - 462)) & 4294967295) !== 0) || ((((_la - 494)) & ~0x1F) === 0 && ((1 << (_la - 494)) & 4294967295) !== 0) || ((((_la - 526)) & ~0x1F) === 0 && ((1 << (_la - 526)) & 4293918719) !== 0) || ((((_la - 558)) & ~0x1F) === 0 && ((1 << (_la - 558)) & 2145386495) !== 0) || ((((_la - 593)) & ~0x1F) === 0 && ((1 << (_la - 593)) & 4294705151) !== 0) || ((((_la - 625)) & ~0x1F) === 0 && ((1 << (_la - 625)) & 4294967295) !== 0) || ((((_la - 657)) & ~0x1F) === 0 && ((1 << (_la - 657)) & 4294967295) !== 0) || ((((_la - 689)) & ~0x1F) === 0 && ((1 << (_la - 689)) & 4294967199) !== 0) || ((((_la - 721)) & ~0x1F) === 0 && ((1 << (_la - 721)) & 4294967295) !== 0) || ((((_la - 753)) & ~0x1F) === 0 && ((1 << (_la - 753)) & 4294967295) !== 0) || ((((_la - 785)) & ~0x1F) === 0 && ((1 << (_la - 785)) & 4294967295) !== 0) || ((((_la - 817)) & ~0x1F) === 0 && ((1 << (_la - 817)) & 4294967295) !== 0) || ((((_la - 849)) & ~0x1F) === 0 && ((1 << (_la - 849)) & 4294967295) !== 0) || ((((_la - 881)) & ~0x1F) === 0 && ((1 << (_la - 881)) & 4294967295) !== 0) || ((((_la - 913)) & ~0x1F) === 0 && ((1 << (_la - 913)) & 4294967295) !== 0) || ((((_la - 945)) & ~0x1F) === 0 && ((1 << (_la - 945)) & 4294967295) !== 0) || ((((_la - 977)) & ~0x1F) === 0 && ((1 << (_la - 977)) & 131071) !== 0) || ((((_la - 1032)) & ~0x1F) === 0 && ((1 << (_la - 1032)) & 6153) !== 0)) {
						{
						this.state = 2316;
						(localctx as AlterByAddPrimaryKeyContext)._name = this.uid();
						}
					}

					}
				}

				this.state = 2321;
				this.match(SqlParser.PRIMARY);
				this.state = 2322;
				this.match(SqlParser.KEY);
				this.state = 2324;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (((((_la - 32)) & ~0x1F) === 0 && ((1 << (_la - 32)) & 4105) !== 0) || _la===87 || _la===105 || _la===133 || _la===151 || ((((_la - 199)) & ~0x1F) === 0 && ((1 << (_la - 199)) & 5373983) !== 0) || ((((_la - 233)) & ~0x1F) === 0 && ((1 << (_la - 233)) & 536870979) !== 0) || ((((_la - 270)) & ~0x1F) === 0 && ((1 << (_la - 270)) & 4294967295) !== 0) || ((((_la - 302)) & ~0x1F) === 0 && ((1 << (_la - 302)) & 4294967295) !== 0) || ((((_la - 334)) & ~0x1F) === 0 && ((1 << (_la - 334)) & 4294967295) !== 0) || ((((_la - 366)) & ~0x1F) === 0 && ((1 << (_la - 366)) & 4294967295) !== 0) || ((((_la - 398)) & ~0x1F) === 0 && ((1 << (_la - 398)) & 4294967295) !== 0) || ((((_la - 430)) & ~0x1F) === 0 && ((1 << (_la - 430)) & 4294967295) !== 0) || ((((_la - 462)) & ~0x1F) === 0 && ((1 << (_la - 462)) & 4294967295) !== 0) || ((((_la - 494)) & ~0x1F) === 0 && ((1 << (_la - 494)) & 4294967295) !== 0) || ((((_la - 526)) & ~0x1F) === 0 && ((1 << (_la - 526)) & 4293918719) !== 0) || ((((_la - 558)) & ~0x1F) === 0 && ((1 << (_la - 558)) & 2145386495) !== 0) || ((((_la - 593)) & ~0x1F) === 0 && ((1 << (_la - 593)) & 4294705151) !== 0) || ((((_la - 625)) & ~0x1F) === 0 && ((1 << (_la - 625)) & 4294967295) !== 0) || ((((_la - 657)) & ~0x1F) === 0 && ((1 << (_la - 657)) & 4294967295) !== 0) || ((((_la - 689)) & ~0x1F) === 0 && ((1 << (_la - 689)) & 4294967199) !== 0) || ((((_la - 721)) & ~0x1F) === 0 && ((1 << (_la - 721)) & 4294967295) !== 0) || ((((_la - 753)) & ~0x1F) === 0 && ((1 << (_la - 753)) & 4294967295) !== 0) || ((((_la - 785)) & ~0x1F) === 0 && ((1 << (_la - 785)) & 4294967295) !== 0) || ((((_la - 817)) & ~0x1F) === 0 && ((1 << (_la - 817)) & 4294967295) !== 0) || ((((_la - 849)) & ~0x1F) === 0 && ((1 << (_la - 849)) & 4294967295) !== 0) || ((((_la - 881)) & ~0x1F) === 0 && ((1 << (_la - 881)) & 4294967295) !== 0) || ((((_la - 913)) & ~0x1F) === 0 && ((1 << (_la - 913)) & 4294967295) !== 0) || ((((_la - 945)) & ~0x1F) === 0 && ((1 << (_la - 945)) & 4294967295) !== 0) || ((((_la - 977)) & ~0x1F) === 0 && ((1 << (_la - 977)) & 131071) !== 0) || ((((_la - 1032)) & ~0x1F) === 0 && ((1 << (_la - 1032)) & 6153) !== 0)) {
					{
					this.state = 2323;
					(localctx as AlterByAddPrimaryKeyContext)._index = this.uid();
					}
				}

				this.state = 2327;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===169) {
					{
					this.state = 2326;
					this.indexType();
					}
				}

				this.state = 2329;
				this.indexColumnNames();
				this.state = 2333;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				while (_la===169 || _la===174 || _la===305 || _la===387 || _la===395 || _la===580) {
					{
					{
					this.state = 2330;
					this.indexOption();
					}
					}
					this.state = 2335;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
				}
				}
				break;
			case 6:
				localctx = new AlterByAddUniqueKeyContext(this, localctx);
				this.enterOuterAlt(localctx, 6);
				{
				this.state = 2336;
				this.match(SqlParser.ADD);
				this.state = 2341;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===27) {
					{
					this.state = 2337;
					this.match(SqlParser.CONSTRAINT);
					this.state = 2339;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
					if (((((_la - 32)) & ~0x1F) === 0 && ((1 << (_la - 32)) & 4105) !== 0) || _la===87 || _la===105 || _la===133 || _la===151 || ((((_la - 199)) & ~0x1F) === 0 && ((1 << (_la - 199)) & 5373983) !== 0) || ((((_la - 233)) & ~0x1F) === 0 && ((1 << (_la - 233)) & 536870979) !== 0) || ((((_la - 270)) & ~0x1F) === 0 && ((1 << (_la - 270)) & 4294967295) !== 0) || ((((_la - 302)) & ~0x1F) === 0 && ((1 << (_la - 302)) & 4294967295) !== 0) || ((((_la - 334)) & ~0x1F) === 0 && ((1 << (_la - 334)) & 4294967295) !== 0) || ((((_la - 366)) & ~0x1F) === 0 && ((1 << (_la - 366)) & 4294967295) !== 0) || ((((_la - 398)) & ~0x1F) === 0 && ((1 << (_la - 398)) & 4294967295) !== 0) || ((((_la - 430)) & ~0x1F) === 0 && ((1 << (_la - 430)) & 4294967295) !== 0) || ((((_la - 462)) & ~0x1F) === 0 && ((1 << (_la - 462)) & 4294967295) !== 0) || ((((_la - 494)) & ~0x1F) === 0 && ((1 << (_la - 494)) & 4294967295) !== 0) || ((((_la - 526)) & ~0x1F) === 0 && ((1 << (_la - 526)) & 4293918719) !== 0) || ((((_la - 558)) & ~0x1F) === 0 && ((1 << (_la - 558)) & 2145386495) !== 0) || ((((_la - 593)) & ~0x1F) === 0 && ((1 << (_la - 593)) & 4294705151) !== 0) || ((((_la - 625)) & ~0x1F) === 0 && ((1 << (_la - 625)) & 4294967295) !== 0) || ((((_la - 657)) & ~0x1F) === 0 && ((1 << (_la - 657)) & 4294967295) !== 0) || ((((_la - 689)) & ~0x1F) === 0 && ((1 << (_la - 689)) & 4294967199) !== 0) || ((((_la - 721)) & ~0x1F) === 0 && ((1 << (_la - 721)) & 4294967295) !== 0) || ((((_la - 753)) & ~0x1F) === 0 && ((1 << (_la - 753)) & 4294967295) !== 0) || ((((_la - 785)) & ~0x1F) === 0 && ((1 << (_la - 785)) & 4294967295) !== 0) || ((((_la - 817)) & ~0x1F) === 0 && ((1 << (_la - 817)) & 4294967295) !== 0) || ((((_la - 849)) & ~0x1F) === 0 && ((1 << (_la - 849)) & 4294967295) !== 0) || ((((_la - 881)) & ~0x1F) === 0 && ((1 << (_la - 881)) & 4294967295) !== 0) || ((((_la - 913)) & ~0x1F) === 0 && ((1 << (_la - 913)) & 4294967295) !== 0) || ((((_la - 945)) & ~0x1F) === 0 && ((1 << (_la - 945)) & 4294967295) !== 0) || ((((_la - 977)) & ~0x1F) === 0 && ((1 << (_la - 977)) & 131071) !== 0) || ((((_la - 1032)) & ~0x1F) === 0 && ((1 << (_la - 1032)) & 6153) !== 0)) {
						{
						this.state = 2338;
						(localctx as AlterByAddUniqueKeyContext)._name = this.uid();
						}
					}

					}
				}

				this.state = 2343;
				this.match(SqlParser.UNIQUE);
				this.state = 2345;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===72 || _la===82) {
					{
					this.state = 2344;
					(localctx as AlterByAddUniqueKeyContext)._indexFormat = this._input.LT(1);
					_la = this._input.LA(1);
					if(!(_la===72 || _la===82)) {
					    (localctx as AlterByAddUniqueKeyContext)._indexFormat = this._errHandler.recoverInline(this);
					}
					else {
						this._errHandler.reportMatch(this);
					    this.consume();
					}
					}
				}

				this.state = 2348;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (((((_la - 32)) & ~0x1F) === 0 && ((1 << (_la - 32)) & 4105) !== 0) || _la===87 || _la===105 || _la===133 || _la===151 || ((((_la - 199)) & ~0x1F) === 0 && ((1 << (_la - 199)) & 5373983) !== 0) || ((((_la - 233)) & ~0x1F) === 0 && ((1 << (_la - 233)) & 536870979) !== 0) || ((((_la - 270)) & ~0x1F) === 0 && ((1 << (_la - 270)) & 4294967295) !== 0) || ((((_la - 302)) & ~0x1F) === 0 && ((1 << (_la - 302)) & 4294967295) !== 0) || ((((_la - 334)) & ~0x1F) === 0 && ((1 << (_la - 334)) & 4294967295) !== 0) || ((((_la - 366)) & ~0x1F) === 0 && ((1 << (_la - 366)) & 4294967295) !== 0) || ((((_la - 398)) & ~0x1F) === 0 && ((1 << (_la - 398)) & 4294967295) !== 0) || ((((_la - 430)) & ~0x1F) === 0 && ((1 << (_la - 430)) & 4294967295) !== 0) || ((((_la - 462)) & ~0x1F) === 0 && ((1 << (_la - 462)) & 4294967295) !== 0) || ((((_la - 494)) & ~0x1F) === 0 && ((1 << (_la - 494)) & 4294967295) !== 0) || ((((_la - 526)) & ~0x1F) === 0 && ((1 << (_la - 526)) & 4293918719) !== 0) || ((((_la - 558)) & ~0x1F) === 0 && ((1 << (_la - 558)) & 2145386495) !== 0) || ((((_la - 593)) & ~0x1F) === 0 && ((1 << (_la - 593)) & 4294705151) !== 0) || ((((_la - 625)) & ~0x1F) === 0 && ((1 << (_la - 625)) & 4294967295) !== 0) || ((((_la - 657)) & ~0x1F) === 0 && ((1 << (_la - 657)) & 4294967295) !== 0) || ((((_la - 689)) & ~0x1F) === 0 && ((1 << (_la - 689)) & 4294967199) !== 0) || ((((_la - 721)) & ~0x1F) === 0 && ((1 << (_la - 721)) & 4294967295) !== 0) || ((((_la - 753)) & ~0x1F) === 0 && ((1 << (_la - 753)) & 4294967295) !== 0) || ((((_la - 785)) & ~0x1F) === 0 && ((1 << (_la - 785)) & 4294967295) !== 0) || ((((_la - 817)) & ~0x1F) === 0 && ((1 << (_la - 817)) & 4294967295) !== 0) || ((((_la - 849)) & ~0x1F) === 0 && ((1 << (_la - 849)) & 4294967295) !== 0) || ((((_la - 881)) & ~0x1F) === 0 && ((1 << (_la - 881)) & 4294967295) !== 0) || ((((_la - 913)) & ~0x1F) === 0 && ((1 << (_la - 913)) & 4294967295) !== 0) || ((((_la - 945)) & ~0x1F) === 0 && ((1 << (_la - 945)) & 4294967295) !== 0) || ((((_la - 977)) & ~0x1F) === 0 && ((1 << (_la - 977)) & 131071) !== 0) || ((((_la - 1032)) & ~0x1F) === 0 && ((1 << (_la - 1032)) & 6153) !== 0)) {
					{
					this.state = 2347;
					(localctx as AlterByAddUniqueKeyContext)._indexName = this.uid();
					}
				}

				this.state = 2351;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===169) {
					{
					this.state = 2350;
					this.indexType();
					}
				}

				this.state = 2353;
				this.indexColumnNames();
				this.state = 2357;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				while (_la===169 || _la===174 || _la===305 || _la===387 || _la===395 || _la===580) {
					{
					{
					this.state = 2354;
					this.indexOption();
					}
					}
					this.state = 2359;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
				}
				}
				break;
			case 7:
				localctx = new AlterByAddSpecialIndexContext(this, localctx);
				this.enterOuterAlt(localctx, 7);
				{
				this.state = 2360;
				this.match(SqlParser.ADD);
				this.state = 2361;
				(localctx as AlterByAddSpecialIndexContext)._keyType = this._input.LT(1);
				_la = this._input.LA(1);
				if(!(_la===62 || _la===142)) {
				    (localctx as AlterByAddSpecialIndexContext)._keyType = this._errHandler.recoverInline(this);
				}
				else {
					this._errHandler.reportMatch(this);
				    this.consume();
				}
				this.state = 2363;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===72 || _la===82) {
					{
					this.state = 2362;
					(localctx as AlterByAddSpecialIndexContext)._indexFormat = this._input.LT(1);
					_la = this._input.LA(1);
					if(!(_la===72 || _la===82)) {
					    (localctx as AlterByAddSpecialIndexContext)._indexFormat = this._errHandler.recoverInline(this);
					}
					else {
						this._errHandler.reportMatch(this);
					    this.consume();
					}
					}
				}

				this.state = 2366;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (((((_la - 32)) & ~0x1F) === 0 && ((1 << (_la - 32)) & 4105) !== 0) || _la===87 || _la===105 || _la===133 || _la===151 || ((((_la - 199)) & ~0x1F) === 0 && ((1 << (_la - 199)) & 5373983) !== 0) || ((((_la - 233)) & ~0x1F) === 0 && ((1 << (_la - 233)) & 536870979) !== 0) || ((((_la - 270)) & ~0x1F) === 0 && ((1 << (_la - 270)) & 4294967295) !== 0) || ((((_la - 302)) & ~0x1F) === 0 && ((1 << (_la - 302)) & 4294967295) !== 0) || ((((_la - 334)) & ~0x1F) === 0 && ((1 << (_la - 334)) & 4294967295) !== 0) || ((((_la - 366)) & ~0x1F) === 0 && ((1 << (_la - 366)) & 4294967295) !== 0) || ((((_la - 398)) & ~0x1F) === 0 && ((1 << (_la - 398)) & 4294967295) !== 0) || ((((_la - 430)) & ~0x1F) === 0 && ((1 << (_la - 430)) & 4294967295) !== 0) || ((((_la - 462)) & ~0x1F) === 0 && ((1 << (_la - 462)) & 4294967295) !== 0) || ((((_la - 494)) & ~0x1F) === 0 && ((1 << (_la - 494)) & 4294967295) !== 0) || ((((_la - 526)) & ~0x1F) === 0 && ((1 << (_la - 526)) & 4293918719) !== 0) || ((((_la - 558)) & ~0x1F) === 0 && ((1 << (_la - 558)) & 2145386495) !== 0) || ((((_la - 593)) & ~0x1F) === 0 && ((1 << (_la - 593)) & 4294705151) !== 0) || ((((_la - 625)) & ~0x1F) === 0 && ((1 << (_la - 625)) & 4294967295) !== 0) || ((((_la - 657)) & ~0x1F) === 0 && ((1 << (_la - 657)) & 4294967295) !== 0) || ((((_la - 689)) & ~0x1F) === 0 && ((1 << (_la - 689)) & 4294967199) !== 0) || ((((_la - 721)) & ~0x1F) === 0 && ((1 << (_la - 721)) & 4294967295) !== 0) || ((((_la - 753)) & ~0x1F) === 0 && ((1 << (_la - 753)) & 4294967295) !== 0) || ((((_la - 785)) & ~0x1F) === 0 && ((1 << (_la - 785)) & 4294967295) !== 0) || ((((_la - 817)) & ~0x1F) === 0 && ((1 << (_la - 817)) & 4294967295) !== 0) || ((((_la - 849)) & ~0x1F) === 0 && ((1 << (_la - 849)) & 4294967295) !== 0) || ((((_la - 881)) & ~0x1F) === 0 && ((1 << (_la - 881)) & 4294967295) !== 0) || ((((_la - 913)) & ~0x1F) === 0 && ((1 << (_la - 913)) & 4294967295) !== 0) || ((((_la - 945)) & ~0x1F) === 0 && ((1 << (_la - 945)) & 4294967295) !== 0) || ((((_la - 977)) & ~0x1F) === 0 && ((1 << (_la - 977)) & 131071) !== 0) || ((((_la - 1032)) & ~0x1F) === 0 && ((1 << (_la - 1032)) & 6153) !== 0)) {
					{
					this.state = 2365;
					this.uid();
					}
				}

				this.state = 2368;
				this.indexColumnNames();
				this.state = 2372;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				while (_la===169 || _la===174 || _la===305 || _la===387 || _la===395 || _la===580) {
					{
					{
					this.state = 2369;
					this.indexOption();
					}
					}
					this.state = 2374;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
				}
				}
				break;
			case 8:
				localctx = new AlterByAddForeignKeyContext(this, localctx);
				this.enterOuterAlt(localctx, 8);
				{
				this.state = 2375;
				this.match(SqlParser.ADD);
				this.state = 2380;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===27) {
					{
					this.state = 2376;
					this.match(SqlParser.CONSTRAINT);
					this.state = 2378;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
					if (((((_la - 32)) & ~0x1F) === 0 && ((1 << (_la - 32)) & 4105) !== 0) || _la===87 || _la===105 || _la===133 || _la===151 || ((((_la - 199)) & ~0x1F) === 0 && ((1 << (_la - 199)) & 5373983) !== 0) || ((((_la - 233)) & ~0x1F) === 0 && ((1 << (_la - 233)) & 536870979) !== 0) || ((((_la - 270)) & ~0x1F) === 0 && ((1 << (_la - 270)) & 4294967295) !== 0) || ((((_la - 302)) & ~0x1F) === 0 && ((1 << (_la - 302)) & 4294967295) !== 0) || ((((_la - 334)) & ~0x1F) === 0 && ((1 << (_la - 334)) & 4294967295) !== 0) || ((((_la - 366)) & ~0x1F) === 0 && ((1 << (_la - 366)) & 4294967295) !== 0) || ((((_la - 398)) & ~0x1F) === 0 && ((1 << (_la - 398)) & 4294967295) !== 0) || ((((_la - 430)) & ~0x1F) === 0 && ((1 << (_la - 430)) & 4294967295) !== 0) || ((((_la - 462)) & ~0x1F) === 0 && ((1 << (_la - 462)) & 4294967295) !== 0) || ((((_la - 494)) & ~0x1F) === 0 && ((1 << (_la - 494)) & 4294967295) !== 0) || ((((_la - 526)) & ~0x1F) === 0 && ((1 << (_la - 526)) & 4293918719) !== 0) || ((((_la - 558)) & ~0x1F) === 0 && ((1 << (_la - 558)) & 2145386495) !== 0) || ((((_la - 593)) & ~0x1F) === 0 && ((1 << (_la - 593)) & 4294705151) !== 0) || ((((_la - 625)) & ~0x1F) === 0 && ((1 << (_la - 625)) & 4294967295) !== 0) || ((((_la - 657)) & ~0x1F) === 0 && ((1 << (_la - 657)) & 4294967295) !== 0) || ((((_la - 689)) & ~0x1F) === 0 && ((1 << (_la - 689)) & 4294967199) !== 0) || ((((_la - 721)) & ~0x1F) === 0 && ((1 << (_la - 721)) & 4294967295) !== 0) || ((((_la - 753)) & ~0x1F) === 0 && ((1 << (_la - 753)) & 4294967295) !== 0) || ((((_la - 785)) & ~0x1F) === 0 && ((1 << (_la - 785)) & 4294967295) !== 0) || ((((_la - 817)) & ~0x1F) === 0 && ((1 << (_la - 817)) & 4294967295) !== 0) || ((((_la - 849)) & ~0x1F) === 0 && ((1 << (_la - 849)) & 4294967295) !== 0) || ((((_la - 881)) & ~0x1F) === 0 && ((1 << (_la - 881)) & 4294967295) !== 0) || ((((_la - 913)) & ~0x1F) === 0 && ((1 << (_la - 913)) & 4294967295) !== 0) || ((((_la - 945)) & ~0x1F) === 0 && ((1 << (_la - 945)) & 4294967295) !== 0) || ((((_la - 977)) & ~0x1F) === 0 && ((1 << (_la - 977)) & 131071) !== 0) || ((((_la - 1032)) & ~0x1F) === 0 && ((1 << (_la - 1032)) & 6153) !== 0)) {
						{
						this.state = 2377;
						(localctx as AlterByAddForeignKeyContext)._name = this.uid();
						}
					}

					}
				}

				this.state = 2382;
				this.match(SqlParser.FOREIGN);
				this.state = 2383;
				this.match(SqlParser.KEY);
				this.state = 2385;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (((((_la - 32)) & ~0x1F) === 0 && ((1 << (_la - 32)) & 4105) !== 0) || _la===87 || _la===105 || _la===133 || _la===151 || ((((_la - 199)) & ~0x1F) === 0 && ((1 << (_la - 199)) & 5373983) !== 0) || ((((_la - 233)) & ~0x1F) === 0 && ((1 << (_la - 233)) & 536870979) !== 0) || ((((_la - 270)) & ~0x1F) === 0 && ((1 << (_la - 270)) & 4294967295) !== 0) || ((((_la - 302)) & ~0x1F) === 0 && ((1 << (_la - 302)) & 4294967295) !== 0) || ((((_la - 334)) & ~0x1F) === 0 && ((1 << (_la - 334)) & 4294967295) !== 0) || ((((_la - 366)) & ~0x1F) === 0 && ((1 << (_la - 366)) & 4294967295) !== 0) || ((((_la - 398)) & ~0x1F) === 0 && ((1 << (_la - 398)) & 4294967295) !== 0) || ((((_la - 430)) & ~0x1F) === 0 && ((1 << (_la - 430)) & 4294967295) !== 0) || ((((_la - 462)) & ~0x1F) === 0 && ((1 << (_la - 462)) & 4294967295) !== 0) || ((((_la - 494)) & ~0x1F) === 0 && ((1 << (_la - 494)) & 4294967295) !== 0) || ((((_la - 526)) & ~0x1F) === 0 && ((1 << (_la - 526)) & 4293918719) !== 0) || ((((_la - 558)) & ~0x1F) === 0 && ((1 << (_la - 558)) & 2145386495) !== 0) || ((((_la - 593)) & ~0x1F) === 0 && ((1 << (_la - 593)) & 4294705151) !== 0) || ((((_la - 625)) & ~0x1F) === 0 && ((1 << (_la - 625)) & 4294967295) !== 0) || ((((_la - 657)) & ~0x1F) === 0 && ((1 << (_la - 657)) & 4294967295) !== 0) || ((((_la - 689)) & ~0x1F) === 0 && ((1 << (_la - 689)) & 4294967199) !== 0) || ((((_la - 721)) & ~0x1F) === 0 && ((1 << (_la - 721)) & 4294967295) !== 0) || ((((_la - 753)) & ~0x1F) === 0 && ((1 << (_la - 753)) & 4294967295) !== 0) || ((((_la - 785)) & ~0x1F) === 0 && ((1 << (_la - 785)) & 4294967295) !== 0) || ((((_la - 817)) & ~0x1F) === 0 && ((1 << (_la - 817)) & 4294967295) !== 0) || ((((_la - 849)) & ~0x1F) === 0 && ((1 << (_la - 849)) & 4294967295) !== 0) || ((((_la - 881)) & ~0x1F) === 0 && ((1 << (_la - 881)) & 4294967295) !== 0) || ((((_la - 913)) & ~0x1F) === 0 && ((1 << (_la - 913)) & 4294967295) !== 0) || ((((_la - 945)) & ~0x1F) === 0 && ((1 << (_la - 945)) & 4294967295) !== 0) || ((((_la - 977)) & ~0x1F) === 0 && ((1 << (_la - 977)) & 131071) !== 0) || ((((_la - 1032)) & ~0x1F) === 0 && ((1 << (_la - 1032)) & 6153) !== 0)) {
					{
					this.state = 2384;
					(localctx as AlterByAddForeignKeyContext)._indexName = this.uid();
					}
				}

				this.state = 2387;
				this.indexColumnNames();
				this.state = 2388;
				this.referenceDefinition();
				}
				break;
			case 9:
				localctx = new AlterByAddCheckTableConstraintContext(this, localctx);
				this.enterOuterAlt(localctx, 9);
				{
				this.state = 2390;
				this.match(SqlParser.ADD);
				this.state = 2395;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===27) {
					{
					this.state = 2391;
					this.match(SqlParser.CONSTRAINT);
					this.state = 2393;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
					if (((((_la - 32)) & ~0x1F) === 0 && ((1 << (_la - 32)) & 4105) !== 0) || _la===87 || _la===105 || _la===133 || _la===151 || ((((_la - 199)) & ~0x1F) === 0 && ((1 << (_la - 199)) & 5373983) !== 0) || ((((_la - 233)) & ~0x1F) === 0 && ((1 << (_la - 233)) & 536870979) !== 0) || ((((_la - 270)) & ~0x1F) === 0 && ((1 << (_la - 270)) & 4294967295) !== 0) || ((((_la - 302)) & ~0x1F) === 0 && ((1 << (_la - 302)) & 4294967295) !== 0) || ((((_la - 334)) & ~0x1F) === 0 && ((1 << (_la - 334)) & 4294967295) !== 0) || ((((_la - 366)) & ~0x1F) === 0 && ((1 << (_la - 366)) & 4294967295) !== 0) || ((((_la - 398)) & ~0x1F) === 0 && ((1 << (_la - 398)) & 4294967295) !== 0) || ((((_la - 430)) & ~0x1F) === 0 && ((1 << (_la - 430)) & 4294967295) !== 0) || ((((_la - 462)) & ~0x1F) === 0 && ((1 << (_la - 462)) & 4294967295) !== 0) || ((((_la - 494)) & ~0x1F) === 0 && ((1 << (_la - 494)) & 4294967295) !== 0) || ((((_la - 526)) & ~0x1F) === 0 && ((1 << (_la - 526)) & 4293918719) !== 0) || ((((_la - 558)) & ~0x1F) === 0 && ((1 << (_la - 558)) & 2145386495) !== 0) || ((((_la - 593)) & ~0x1F) === 0 && ((1 << (_la - 593)) & 4294705151) !== 0) || ((((_la - 625)) & ~0x1F) === 0 && ((1 << (_la - 625)) & 4294967295) !== 0) || ((((_la - 657)) & ~0x1F) === 0 && ((1 << (_la - 657)) & 4294967295) !== 0) || ((((_la - 689)) & ~0x1F) === 0 && ((1 << (_la - 689)) & 4294967199) !== 0) || ((((_la - 721)) & ~0x1F) === 0 && ((1 << (_la - 721)) & 4294967295) !== 0) || ((((_la - 753)) & ~0x1F) === 0 && ((1 << (_la - 753)) & 4294967295) !== 0) || ((((_la - 785)) & ~0x1F) === 0 && ((1 << (_la - 785)) & 4294967295) !== 0) || ((((_la - 817)) & ~0x1F) === 0 && ((1 << (_la - 817)) & 4294967295) !== 0) || ((((_la - 849)) & ~0x1F) === 0 && ((1 << (_la - 849)) & 4294967295) !== 0) || ((((_la - 881)) & ~0x1F) === 0 && ((1 << (_la - 881)) & 4294967295) !== 0) || ((((_la - 913)) & ~0x1F) === 0 && ((1 << (_la - 913)) & 4294967295) !== 0) || ((((_la - 945)) & ~0x1F) === 0 && ((1 << (_la - 945)) & 4294967295) !== 0) || ((((_la - 977)) & ~0x1F) === 0 && ((1 << (_la - 977)) & 131071) !== 0) || ((((_la - 1032)) & ~0x1F) === 0 && ((1 << (_la - 1032)) & 6153) !== 0)) {
						{
						this.state = 2392;
						(localctx as AlterByAddCheckTableConstraintContext)._name = this.uid();
						}
					}

					}
				}

				this.state = 2397;
				this.match(SqlParser.CHECK);
				this.state = 2398;
				this.match(SqlParser.LR_BRACKET);
				this.state = 2399;
				this.expression(0);
				this.state = 2400;
				this.match(SqlParser.RR_BRACKET);
				}
				break;
			case 10:
				localctx = new AlterBySetAlgorithmContext(this, localctx);
				this.enterOuterAlt(localctx, 10);
				{
				this.state = 2402;
				this.match(SqlParser.ALGORITHM);
				this.state = 2404;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===1011) {
					{
					this.state = 2403;
					this.match(SqlParser.EQUAL_SYMBOL);
					}
				}

				this.state = 2406;
				(localctx as AlterBySetAlgorithmContext)._algType = this._input.LT(1);
				_la = this._input.LA(1);
				if(!(_la===38 || _la===320 || _la===383)) {
				    (localctx as AlterBySetAlgorithmContext)._algType = this._errHandler.recoverInline(this);
				}
				else {
					this._errHandler.reportMatch(this);
				    this.consume();
				}
				}
				break;
			case 11:
				localctx = new AlterByChangeDefaultContext(this, localctx);
				this.enterOuterAlt(localctx, 11);
				{
				this.state = 2407;
				this.match(SqlParser.ALTER);
				this.state = 2409;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===25) {
					{
					this.state = 2408;
					this.match(SqlParser.COLUMN);
					}
				}

				this.state = 2411;
				this.uid();
				this.state = 2417;
				this._errHandler.sync(this);
				switch (this._input.LA(1)) {
				case 138:
					{
					this.state = 2412;
					this.match(SqlParser.SET);
					this.state = 2413;
					this.match(SqlParser.DEFAULT);
					this.state = 2414;
					this.defaultValue();
					}
					break;
				case 47:
					{
					this.state = 2415;
					this.match(SqlParser.DROP);
					this.state = 2416;
					this.match(SqlParser.DEFAULT);
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				}
				break;
			case 12:
				localctx = new AlterByChangeColumnContext(this, localctx);
				this.enterOuterAlt(localctx, 12);
				{
				this.state = 2419;
				this.match(SqlParser.CHANGE);
				this.state = 2421;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===25) {
					{
					this.state = 2420;
					this.match(SqlParser.COLUMN);
					}
				}

				this.state = 2423;
				(localctx as AlterByChangeColumnContext)._oldColumn = this.uid();
				this.state = 2424;
				(localctx as AlterByChangeColumnContext)._newColumn = this.uid();
				this.state = 2425;
				this.columnDefinition();
				this.state = 2429;
				this._errHandler.sync(this);
				switch (this._input.LA(1)) {
				case 362:
					{
					this.state = 2426;
					this.match(SqlParser.FIRST);
					}
					break;
				case 272:
					{
					this.state = 2427;
					this.match(SqlParser.AFTER);
					this.state = 2428;
					(localctx as AlterByChangeColumnContext)._afterColumn = this.uid();
					}
					break;
				case -1:
				case 7:
				case 9:
				case 17:
				case 21:
				case 23:
				case 30:
				case 40:
				case 41:
				case 42:
				case 47:
				case 55:
				case 64:
				case 65:
				case 76:
				case 84:
				case 92:
				case 93:
				case 107:
				case 115:
				case 118:
				case 124:
				case 125:
				case 127:
				case 129:
				case 132:
				case 137:
				case 138:
				case 140:
				case 141:
				case 164:
				case 166:
				case 168:
				case 282:
				case 283:
				case 289:
				case 294:
				case 306:
				case 325:
				case 334:
				case 364:
				case 373:
				case 375:
				case 385:
				case 475:
				case 494:
				case 503:
				case 508:
				case 514:
				case 538:
				case 544:
				case 564:
				case 568:
				case 587:
				case 604:
				case 608:
				case 1007:
				case 1020:
				case 1022:
				case 1023:
					break;
				default:
					break;
				}
				}
				break;
			case 13:
				localctx = new AlterByRenameColumnContext(this, localctx);
				this.enterOuterAlt(localctx, 13);
				{
				this.state = 2431;
				this.match(SqlParser.RENAME);
				this.state = 2432;
				this.match(SqlParser.COLUMN);
				this.state = 2433;
				(localctx as AlterByRenameColumnContext)._oldColumn = this.uid();
				this.state = 2434;
				this.match(SqlParser.TO);
				this.state = 2435;
				(localctx as AlterByRenameColumnContext)._newColumn = this.uid();
				}
				break;
			case 14:
				localctx = new AlterByLockContext(this, localctx);
				this.enterOuterAlt(localctx, 14);
				{
				this.state = 2437;
				this.match(SqlParser.LOCK);
				this.state = 2439;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===1011) {
					{
					this.state = 2438;
					this.match(SqlParser.EQUAL_SYMBOL);
					}
				}

				this.state = 2441;
				(localctx as AlterByLockContext)._lockType = this._input.LT(1);
				_la = this._input.LA(1);
				if(!(_la===38 || _la===352 || _la===450 || _la===520)) {
				    (localctx as AlterByLockContext)._lockType = this._errHandler.recoverInline(this);
				}
				else {
					this._errHandler.reportMatch(this);
				    this.consume();
				}
				}
				break;
			case 15:
				localctx = new AlterByModifyColumnContext(this, localctx);
				this.enterOuterAlt(localctx, 15);
				{
				this.state = 2442;
				this.match(SqlParser.MODIFY);
				this.state = 2444;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===25) {
					{
					this.state = 2443;
					this.match(SqlParser.COLUMN);
					}
				}

				this.state = 2446;
				this.uid();
				this.state = 2447;
				this.columnDefinition();
				this.state = 2451;
				this._errHandler.sync(this);
				switch (this._input.LA(1)) {
				case 362:
					{
					this.state = 2448;
					this.match(SqlParser.FIRST);
					}
					break;
				case 272:
					{
					this.state = 2449;
					this.match(SqlParser.AFTER);
					this.state = 2450;
					this.uid();
					}
					break;
				case -1:
				case 7:
				case 9:
				case 17:
				case 21:
				case 23:
				case 30:
				case 40:
				case 41:
				case 42:
				case 47:
				case 55:
				case 64:
				case 65:
				case 76:
				case 84:
				case 92:
				case 93:
				case 107:
				case 115:
				case 118:
				case 124:
				case 125:
				case 127:
				case 129:
				case 132:
				case 137:
				case 138:
				case 140:
				case 141:
				case 164:
				case 166:
				case 168:
				case 282:
				case 283:
				case 289:
				case 294:
				case 306:
				case 325:
				case 334:
				case 364:
				case 373:
				case 375:
				case 385:
				case 475:
				case 494:
				case 503:
				case 508:
				case 514:
				case 538:
				case 544:
				case 564:
				case 568:
				case 587:
				case 604:
				case 608:
				case 1007:
				case 1020:
				case 1022:
				case 1023:
					break;
				default:
					break;
				}
				}
				break;
			case 16:
				localctx = new AlterByDropColumnContext(this, localctx);
				this.enterOuterAlt(localctx, 16);
				{
				this.state = 2453;
				this.match(SqlParser.DROP);
				this.state = 2455;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===25) {
					{
					this.state = 2454;
					this.match(SqlParser.COLUMN);
					}
				}

				this.state = 2457;
				this.uid();
				this.state = 2459;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===130) {
					{
					this.state = 2458;
					this.match(SqlParser.RESTRICT);
					}
				}

				}
				break;
			case 17:
				localctx = new AlterByDropPrimaryKeyContext(this, localctx);
				this.enterOuterAlt(localctx, 17);
				{
				this.state = 2461;
				this.match(SqlParser.DROP);
				this.state = 2462;
				this.match(SqlParser.PRIMARY);
				this.state = 2463;
				this.match(SqlParser.KEY);
				}
				break;
			case 18:
				localctx = new AlterByRenameIndexContext(this, localctx);
				this.enterOuterAlt(localctx, 18);
				{
				this.state = 2464;
				this.match(SqlParser.RENAME);
				this.state = 2465;
				(localctx as AlterByRenameIndexContext)._indexFormat = this._input.LT(1);
				_la = this._input.LA(1);
				if(!(_la===72 || _la===82)) {
				    (localctx as AlterByRenameIndexContext)._indexFormat = this._errHandler.recoverInline(this);
				}
				else {
					this._errHandler.reportMatch(this);
				    this.consume();
				}
				this.state = 2466;
				this.uid();
				this.state = 2467;
				this.match(SqlParser.TO);
				this.state = 2468;
				this.uid();
				}
				break;
			case 19:
				localctx = new AlterByAlterIndexVisibilityContext(this, localctx);
				this.enterOuterAlt(localctx, 19);
				{
				this.state = 2470;
				this.match(SqlParser.ALTER);
				this.state = 2471;
				this.match(SqlParser.INDEX);
				this.state = 2472;
				this.uid();
				this.state = 2473;
				_la = this._input.LA(1);
				if(!(_la===387 || _la===580)) {
				this._errHandler.recoverInline(this);
				}
				else {
					this._errHandler.reportMatch(this);
				    this.consume();
				}
				}
				break;
			case 20:
				localctx = new AlterByDropIndexContext(this, localctx);
				this.enterOuterAlt(localctx, 20);
				{
				this.state = 2475;
				this.match(SqlParser.DROP);
				this.state = 2476;
				(localctx as AlterByDropIndexContext)._indexFormat = this._input.LT(1);
				_la = this._input.LA(1);
				if(!(_la===72 || _la===82)) {
				    (localctx as AlterByDropIndexContext)._indexFormat = this._errHandler.recoverInline(this);
				}
				else {
					this._errHandler.reportMatch(this);
				    this.consume();
				}
				this.state = 2477;
				this.uid();
				}
				break;
			case 21:
				localctx = new AlterByDropForeignKeyContext(this, localctx);
				this.enterOuterAlt(localctx, 21);
				{
				this.state = 2478;
				this.match(SqlParser.DROP);
				this.state = 2479;
				this.match(SqlParser.FOREIGN);
				this.state = 2480;
				this.match(SqlParser.KEY);
				this.state = 2481;
				this.uid();
				}
				break;
			case 22:
				localctx = new AlterByDisableKeysContext(this, localctx);
				this.enterOuterAlt(localctx, 22);
				{
				this.state = 2482;
				this.match(SqlParser.DISABLE);
				this.state = 2483;
				this.match(SqlParser.KEYS);
				}
				break;
			case 23:
				localctx = new AlterByEnableKeysContext(this, localctx);
				this.enterOuterAlt(localctx, 23);
				{
				this.state = 2484;
				this.match(SqlParser.ENABLE);
				this.state = 2485;
				this.match(SqlParser.KEYS);
				}
				break;
			case 24:
				localctx = new AlterByRenameContext(this, localctx);
				this.enterOuterAlt(localctx, 24);
				{
				this.state = 2486;
				this.match(SqlParser.RENAME);
				this.state = 2488;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===11 || _la===157) {
					{
					this.state = 2487;
					(localctx as AlterByRenameContext)._renameFormat = this._input.LT(1);
					_la = this._input.LA(1);
					if(!(_la===11 || _la===157)) {
					    (localctx as AlterByRenameContext)._renameFormat = this._errHandler.recoverInline(this);
					}
					else {
						this._errHandler.reportMatch(this);
					    this.consume();
					}
					}
				}

				this.state = 2492;
				this._errHandler.sync(this);
				switch ( this._interp.adaptivePredict(this._input, 318, this._ctx) ) {
				case 1:
					{
					this.state = 2490;
					this.uid();
					}
					break;
				case 2:
					{
					this.state = 2491;
					this.fullId();
					}
					break;
				}
				}
				break;
			case 25:
				localctx = new AlterByOrderContext(this, localctx);
				this.enterOuterAlt(localctx, 25);
				{
				this.state = 2494;
				this.match(SqlParser.ORDER);
				this.state = 2495;
				this.match(SqlParser.BY);
				this.state = 2496;
				this.uidList();
				}
				break;
			case 26:
				localctx = new AlterByConvertCharsetContext(this, localctx);
				this.enterOuterAlt(localctx, 26);
				{
				this.state = 2497;
				this.match(SqlParser.CONVERT);
				this.state = 2498;
				this.match(SqlParser.TO);
				this.state = 2499;
				this.match(SqlParser.CHARACTER);
				this.state = 2500;
				this.match(SqlParser.SET);
				this.state = 2501;
				this.charsetName();
				this.state = 2504;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===24) {
					{
					this.state = 2502;
					this.match(SqlParser.COLLATE);
					this.state = 2503;
					this.collationName();
					}
				}

				}
				break;
			case 27:
				localctx = new AlterByDefaultCharsetContext(this, localctx);
				this.enterOuterAlt(localctx, 27);
				{
				this.state = 2507;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===38) {
					{
					this.state = 2506;
					this.match(SqlParser.DEFAULT);
					}
				}

				this.state = 2509;
				this.match(SqlParser.CHARACTER);
				this.state = 2510;
				this.match(SqlParser.SET);
				this.state = 2511;
				this.match(SqlParser.EQUAL_SYMBOL);
				this.state = 2512;
				this.charsetName();
				this.state = 2516;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===24) {
					{
					this.state = 2513;
					this.match(SqlParser.COLLATE);
					this.state = 2514;
					this.match(SqlParser.EQUAL_SYMBOL);
					this.state = 2515;
					this.collationName();
					}
				}

				}
				break;
			case 28:
				localctx = new AlterByDiscardTablespaceContext(this, localctx);
				this.enterOuterAlt(localctx, 28);
				{
				this.state = 2518;
				this.match(SqlParser.DISCARD);
				this.state = 2519;
				this.match(SqlParser.TABLESPACE);
				}
				break;
			case 29:
				localctx = new AlterByImportTablespaceContext(this, localctx);
				this.enterOuterAlt(localctx, 29);
				{
				this.state = 2520;
				this.match(SqlParser.IMPORT);
				this.state = 2521;
				this.match(SqlParser.TABLESPACE);
				}
				break;
			case 30:
				localctx = new AlterByForceContext(this, localctx);
				this.enterOuterAlt(localctx, 30);
				{
				this.state = 2522;
				this.match(SqlParser.FORCE);
				}
				break;
			case 31:
				localctx = new AlterByValidateContext(this, localctx);
				this.enterOuterAlt(localctx, 31);
				{
				this.state = 2523;
				(localctx as AlterByValidateContext)._validationFormat = this._input.LT(1);
				_la = this._input.LA(1);
				if(!(_la===174 || _la===583)) {
				    (localctx as AlterByValidateContext)._validationFormat = this._errHandler.recoverInline(this);
				}
				else {
					this._errHandler.reportMatch(this);
				    this.consume();
				}
				this.state = 2524;
				this.match(SqlParser.VALIDATION);
				}
				break;
			case 32:
				localctx = new AlterByAddPartitionContext(this, localctx);
				this.enterOuterAlt(localctx, 32);
				{
				this.state = 2525;
				this.match(SqlParser.ADD);
				this.state = 2526;
				this.match(SqlParser.PARTITION);
				this.state = 2527;
				this.match(SqlParser.LR_BRACKET);
				this.state = 2528;
				this.partitionDefinition();
				this.state = 2533;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				while (_la===1022) {
					{
					{
					this.state = 2529;
					this.match(SqlParser.COMMA);
					this.state = 2530;
					this.partitionDefinition();
					}
					}
					this.state = 2535;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
				}
				this.state = 2536;
				this.match(SqlParser.RR_BRACKET);
				}
				break;
			case 33:
				localctx = new AlterByDropPartitionContext(this, localctx);
				this.enterOuterAlt(localctx, 33);
				{
				this.state = 2538;
				this.match(SqlParser.DROP);
				this.state = 2539;
				this.match(SqlParser.PARTITION);
				this.state = 2540;
				this.uidList();
				}
				break;
			case 34:
				localctx = new AlterByDiscardPartitionContext(this, localctx);
				this.enterOuterAlt(localctx, 34);
				{
				this.state = 2541;
				this.match(SqlParser.DISCARD);
				this.state = 2542;
				this.match(SqlParser.PARTITION);
				this.state = 2545;
				this._errHandler.sync(this);
				switch (this._input.LA(1)) {
				case 32:
				case 35:
				case 44:
				case 87:
				case 105:
				case 133:
				case 151:
				case 199:
				case 200:
				case 201:
				case 202:
				case 203:
				case 216:
				case 219:
				case 221:
				case 233:
				case 234:
				case 239:
				case 262:
				case 270:
				case 271:
				case 272:
				case 273:
				case 274:
				case 275:
				case 276:
				case 277:
				case 278:
				case 279:
				case 280:
				case 281:
				case 282:
				case 283:
				case 284:
				case 285:
				case 286:
				case 287:
				case 288:
				case 289:
				case 290:
				case 291:
				case 292:
				case 293:
				case 294:
				case 295:
				case 296:
				case 297:
				case 298:
				case 299:
				case 300:
				case 301:
				case 302:
				case 303:
				case 304:
				case 305:
				case 306:
				case 307:
				case 308:
				case 309:
				case 310:
				case 311:
				case 312:
				case 313:
				case 314:
				case 315:
				case 316:
				case 317:
				case 318:
				case 319:
				case 320:
				case 321:
				case 322:
				case 323:
				case 324:
				case 325:
				case 326:
				case 327:
				case 328:
				case 329:
				case 330:
				case 331:
				case 332:
				case 333:
				case 334:
				case 335:
				case 336:
				case 337:
				case 338:
				case 339:
				case 340:
				case 341:
				case 342:
				case 343:
				case 344:
				case 345:
				case 346:
				case 347:
				case 348:
				case 349:
				case 350:
				case 351:
				case 352:
				case 353:
				case 354:
				case 355:
				case 356:
				case 357:
				case 358:
				case 359:
				case 360:
				case 361:
				case 362:
				case 363:
				case 364:
				case 365:
				case 366:
				case 367:
				case 368:
				case 369:
				case 370:
				case 371:
				case 372:
				case 373:
				case 374:
				case 375:
				case 376:
				case 377:
				case 378:
				case 379:
				case 380:
				case 381:
				case 382:
				case 383:
				case 384:
				case 385:
				case 386:
				case 387:
				case 388:
				case 389:
				case 390:
				case 391:
				case 392:
				case 393:
				case 394:
				case 395:
				case 396:
				case 397:
				case 398:
				case 399:
				case 400:
				case 401:
				case 402:
				case 403:
				case 404:
				case 405:
				case 406:
				case 407:
				case 408:
				case 409:
				case 410:
				case 411:
				case 412:
				case 413:
				case 414:
				case 415:
				case 416:
				case 417:
				case 418:
				case 419:
				case 420:
				case 421:
				case 422:
				case 423:
				case 424:
				case 425:
				case 426:
				case 427:
				case 428:
				case 429:
				case 430:
				case 431:
				case 432:
				case 433:
				case 434:
				case 435:
				case 436:
				case 437:
				case 438:
				case 439:
				case 440:
				case 441:
				case 442:
				case 443:
				case 444:
				case 445:
				case 446:
				case 447:
				case 448:
				case 449:
				case 450:
				case 451:
				case 452:
				case 453:
				case 454:
				case 455:
				case 456:
				case 457:
				case 458:
				case 459:
				case 460:
				case 461:
				case 462:
				case 463:
				case 464:
				case 465:
				case 466:
				case 467:
				case 468:
				case 469:
				case 470:
				case 471:
				case 472:
				case 473:
				case 474:
				case 475:
				case 476:
				case 477:
				case 478:
				case 479:
				case 480:
				case 481:
				case 482:
				case 483:
				case 484:
				case 485:
				case 486:
				case 487:
				case 488:
				case 489:
				case 490:
				case 491:
				case 492:
				case 493:
				case 494:
				case 495:
				case 496:
				case 497:
				case 498:
				case 499:
				case 500:
				case 501:
				case 502:
				case 503:
				case 504:
				case 505:
				case 506:
				case 507:
				case 508:
				case 509:
				case 510:
				case 511:
				case 512:
				case 513:
				case 514:
				case 515:
				case 516:
				case 517:
				case 518:
				case 519:
				case 520:
				case 521:
				case 522:
				case 523:
				case 524:
				case 525:
				case 526:
				case 527:
				case 528:
				case 529:
				case 530:
				case 531:
				case 532:
				case 533:
				case 534:
				case 535:
				case 536:
				case 537:
				case 538:
				case 539:
				case 540:
				case 541:
				case 542:
				case 543:
				case 544:
				case 545:
				case 547:
				case 548:
				case 549:
				case 550:
				case 551:
				case 552:
				case 553:
				case 554:
				case 555:
				case 556:
				case 557:
				case 558:
				case 559:
				case 560:
				case 561:
				case 562:
				case 563:
				case 564:
				case 565:
				case 566:
				case 567:
				case 568:
				case 569:
				case 570:
				case 571:
				case 572:
				case 573:
				case 574:
				case 575:
				case 576:
				case 577:
				case 578:
				case 580:
				case 581:
				case 582:
				case 583:
				case 584:
				case 585:
				case 586:
				case 587:
				case 588:
				case 593:
				case 594:
				case 595:
				case 596:
				case 597:
				case 598:
				case 599:
				case 600:
				case 601:
				case 602:
				case 603:
				case 604:
				case 605:
				case 606:
				case 607:
				case 608:
				case 609:
				case 610:
				case 612:
				case 613:
				case 614:
				case 615:
				case 616:
				case 617:
				case 618:
				case 619:
				case 620:
				case 621:
				case 622:
				case 623:
				case 624:
				case 625:
				case 626:
				case 627:
				case 628:
				case 629:
				case 630:
				case 631:
				case 632:
				case 633:
				case 634:
				case 635:
				case 636:
				case 637:
				case 638:
				case 639:
				case 640:
				case 641:
				case 642:
				case 643:
				case 644:
				case 645:
				case 646:
				case 647:
				case 648:
				case 649:
				case 650:
				case 651:
				case 652:
				case 653:
				case 654:
				case 655:
				case 656:
				case 657:
				case 658:
				case 659:
				case 660:
				case 661:
				case 662:
				case 663:
				case 664:
				case 665:
				case 666:
				case 667:
				case 668:
				case 669:
				case 670:
				case 671:
				case 672:
				case 673:
				case 674:
				case 675:
				case 676:
				case 677:
				case 678:
				case 679:
				case 680:
				case 681:
				case 682:
				case 683:
				case 684:
				case 685:
				case 686:
				case 687:
				case 688:
				case 689:
				case 690:
				case 691:
				case 692:
				case 693:
				case 696:
				case 697:
				case 698:
				case 699:
				case 700:
				case 701:
				case 702:
				case 703:
				case 704:
				case 705:
				case 706:
				case 707:
				case 708:
				case 709:
				case 710:
				case 711:
				case 712:
				case 713:
				case 714:
				case 715:
				case 716:
				case 717:
				case 718:
				case 719:
				case 720:
				case 721:
				case 722:
				case 723:
				case 724:
				case 725:
				case 726:
				case 727:
				case 728:
				case 729:
				case 730:
				case 731:
				case 732:
				case 733:
				case 734:
				case 735:
				case 736:
				case 737:
				case 738:
				case 739:
				case 740:
				case 741:
				case 742:
				case 743:
				case 744:
				case 745:
				case 746:
				case 747:
				case 748:
				case 749:
				case 750:
				case 751:
				case 752:
				case 753:
				case 754:
				case 755:
				case 756:
				case 757:
				case 758:
				case 759:
				case 760:
				case 761:
				case 762:
				case 763:
				case 764:
				case 765:
				case 766:
				case 767:
				case 768:
				case 769:
				case 770:
				case 771:
				case 772:
				case 773:
				case 774:
				case 775:
				case 776:
				case 777:
				case 778:
				case 779:
				case 780:
				case 781:
				case 782:
				case 783:
				case 784:
				case 785:
				case 786:
				case 787:
				case 788:
				case 789:
				case 790:
				case 791:
				case 792:
				case 793:
				case 794:
				case 795:
				case 796:
				case 797:
				case 798:
				case 799:
				case 800:
				case 801:
				case 802:
				case 803:
				case 804:
				case 805:
				case 806:
				case 807:
				case 808:
				case 809:
				case 810:
				case 811:
				case 812:
				case 813:
				case 814:
				case 815:
				case 816:
				case 817:
				case 818:
				case 819:
				case 820:
				case 821:
				case 822:
				case 823:
				case 824:
				case 825:
				case 826:
				case 827:
				case 828:
				case 829:
				case 830:
				case 831:
				case 832:
				case 833:
				case 834:
				case 835:
				case 836:
				case 837:
				case 838:
				case 839:
				case 840:
				case 841:
				case 842:
				case 843:
				case 844:
				case 845:
				case 846:
				case 847:
				case 848:
				case 849:
				case 850:
				case 851:
				case 852:
				case 853:
				case 854:
				case 855:
				case 856:
				case 857:
				case 858:
				case 859:
				case 860:
				case 861:
				case 862:
				case 863:
				case 864:
				case 865:
				case 866:
				case 867:
				case 868:
				case 869:
				case 870:
				case 871:
				case 872:
				case 873:
				case 874:
				case 875:
				case 876:
				case 877:
				case 878:
				case 879:
				case 880:
				case 881:
				case 882:
				case 883:
				case 884:
				case 885:
				case 886:
				case 887:
				case 888:
				case 889:
				case 890:
				case 891:
				case 892:
				case 893:
				case 894:
				case 895:
				case 896:
				case 897:
				case 898:
				case 899:
				case 900:
				case 901:
				case 902:
				case 903:
				case 904:
				case 905:
				case 906:
				case 907:
				case 908:
				case 909:
				case 910:
				case 911:
				case 912:
				case 913:
				case 914:
				case 915:
				case 916:
				case 917:
				case 918:
				case 919:
				case 920:
				case 921:
				case 922:
				case 923:
				case 924:
				case 925:
				case 926:
				case 927:
				case 928:
				case 929:
				case 930:
				case 931:
				case 932:
				case 933:
				case 934:
				case 935:
				case 936:
				case 937:
				case 938:
				case 939:
				case 940:
				case 941:
				case 942:
				case 943:
				case 944:
				case 945:
				case 946:
				case 947:
				case 948:
				case 949:
				case 950:
				case 951:
				case 952:
				case 953:
				case 954:
				case 955:
				case 956:
				case 957:
				case 958:
				case 959:
				case 960:
				case 961:
				case 962:
				case 963:
				case 964:
				case 965:
				case 966:
				case 967:
				case 968:
				case 969:
				case 970:
				case 971:
				case 972:
				case 973:
				case 974:
				case 975:
				case 976:
				case 977:
				case 978:
				case 979:
				case 980:
				case 981:
				case 982:
				case 983:
				case 984:
				case 985:
				case 986:
				case 987:
				case 988:
				case 989:
				case 990:
				case 991:
				case 992:
				case 993:
				case 1032:
				case 1035:
				case 1043:
				case 1044:
					{
					this.state = 2543;
					this.uidList();
					}
					break;
				case 6:
					{
					this.state = 2544;
					this.match(SqlParser.ALL);
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				this.state = 2547;
				this.match(SqlParser.TABLESPACE);
				}
				break;
			case 35:
				localctx = new AlterByImportPartitionContext(this, localctx);
				this.enterOuterAlt(localctx, 35);
				{
				this.state = 2548;
				this.match(SqlParser.IMPORT);
				this.state = 2549;
				this.match(SqlParser.PARTITION);
				this.state = 2552;
				this._errHandler.sync(this);
				switch (this._input.LA(1)) {
				case 32:
				case 35:
				case 44:
				case 87:
				case 105:
				case 133:
				case 151:
				case 199:
				case 200:
				case 201:
				case 202:
				case 203:
				case 216:
				case 219:
				case 221:
				case 233:
				case 234:
				case 239:
				case 262:
				case 270:
				case 271:
				case 272:
				case 273:
				case 274:
				case 275:
				case 276:
				case 277:
				case 278:
				case 279:
				case 280:
				case 281:
				case 282:
				case 283:
				case 284:
				case 285:
				case 286:
				case 287:
				case 288:
				case 289:
				case 290:
				case 291:
				case 292:
				case 293:
				case 294:
				case 295:
				case 296:
				case 297:
				case 298:
				case 299:
				case 300:
				case 301:
				case 302:
				case 303:
				case 304:
				case 305:
				case 306:
				case 307:
				case 308:
				case 309:
				case 310:
				case 311:
				case 312:
				case 313:
				case 314:
				case 315:
				case 316:
				case 317:
				case 318:
				case 319:
				case 320:
				case 321:
				case 322:
				case 323:
				case 324:
				case 325:
				case 326:
				case 327:
				case 328:
				case 329:
				case 330:
				case 331:
				case 332:
				case 333:
				case 334:
				case 335:
				case 336:
				case 337:
				case 338:
				case 339:
				case 340:
				case 341:
				case 342:
				case 343:
				case 344:
				case 345:
				case 346:
				case 347:
				case 348:
				case 349:
				case 350:
				case 351:
				case 352:
				case 353:
				case 354:
				case 355:
				case 356:
				case 357:
				case 358:
				case 359:
				case 360:
				case 361:
				case 362:
				case 363:
				case 364:
				case 365:
				case 366:
				case 367:
				case 368:
				case 369:
				case 370:
				case 371:
				case 372:
				case 373:
				case 374:
				case 375:
				case 376:
				case 377:
				case 378:
				case 379:
				case 380:
				case 381:
				case 382:
				case 383:
				case 384:
				case 385:
				case 386:
				case 387:
				case 388:
				case 389:
				case 390:
				case 391:
				case 392:
				case 393:
				case 394:
				case 395:
				case 396:
				case 397:
				case 398:
				case 399:
				case 400:
				case 401:
				case 402:
				case 403:
				case 404:
				case 405:
				case 406:
				case 407:
				case 408:
				case 409:
				case 410:
				case 411:
				case 412:
				case 413:
				case 414:
				case 415:
				case 416:
				case 417:
				case 418:
				case 419:
				case 420:
				case 421:
				case 422:
				case 423:
				case 424:
				case 425:
				case 426:
				case 427:
				case 428:
				case 429:
				case 430:
				case 431:
				case 432:
				case 433:
				case 434:
				case 435:
				case 436:
				case 437:
				case 438:
				case 439:
				case 440:
				case 441:
				case 442:
				case 443:
				case 444:
				case 445:
				case 446:
				case 447:
				case 448:
				case 449:
				case 450:
				case 451:
				case 452:
				case 453:
				case 454:
				case 455:
				case 456:
				case 457:
				case 458:
				case 459:
				case 460:
				case 461:
				case 462:
				case 463:
				case 464:
				case 465:
				case 466:
				case 467:
				case 468:
				case 469:
				case 470:
				case 471:
				case 472:
				case 473:
				case 474:
				case 475:
				case 476:
				case 477:
				case 478:
				case 479:
				case 480:
				case 481:
				case 482:
				case 483:
				case 484:
				case 485:
				case 486:
				case 487:
				case 488:
				case 489:
				case 490:
				case 491:
				case 492:
				case 493:
				case 494:
				case 495:
				case 496:
				case 497:
				case 498:
				case 499:
				case 500:
				case 501:
				case 502:
				case 503:
				case 504:
				case 505:
				case 506:
				case 507:
				case 508:
				case 509:
				case 510:
				case 511:
				case 512:
				case 513:
				case 514:
				case 515:
				case 516:
				case 517:
				case 518:
				case 519:
				case 520:
				case 521:
				case 522:
				case 523:
				case 524:
				case 525:
				case 526:
				case 527:
				case 528:
				case 529:
				case 530:
				case 531:
				case 532:
				case 533:
				case 534:
				case 535:
				case 536:
				case 537:
				case 538:
				case 539:
				case 540:
				case 541:
				case 542:
				case 543:
				case 544:
				case 545:
				case 547:
				case 548:
				case 549:
				case 550:
				case 551:
				case 552:
				case 553:
				case 554:
				case 555:
				case 556:
				case 557:
				case 558:
				case 559:
				case 560:
				case 561:
				case 562:
				case 563:
				case 564:
				case 565:
				case 566:
				case 567:
				case 568:
				case 569:
				case 570:
				case 571:
				case 572:
				case 573:
				case 574:
				case 575:
				case 576:
				case 577:
				case 578:
				case 580:
				case 581:
				case 582:
				case 583:
				case 584:
				case 585:
				case 586:
				case 587:
				case 588:
				case 593:
				case 594:
				case 595:
				case 596:
				case 597:
				case 598:
				case 599:
				case 600:
				case 601:
				case 602:
				case 603:
				case 604:
				case 605:
				case 606:
				case 607:
				case 608:
				case 609:
				case 610:
				case 612:
				case 613:
				case 614:
				case 615:
				case 616:
				case 617:
				case 618:
				case 619:
				case 620:
				case 621:
				case 622:
				case 623:
				case 624:
				case 625:
				case 626:
				case 627:
				case 628:
				case 629:
				case 630:
				case 631:
				case 632:
				case 633:
				case 634:
				case 635:
				case 636:
				case 637:
				case 638:
				case 639:
				case 640:
				case 641:
				case 642:
				case 643:
				case 644:
				case 645:
				case 646:
				case 647:
				case 648:
				case 649:
				case 650:
				case 651:
				case 652:
				case 653:
				case 654:
				case 655:
				case 656:
				case 657:
				case 658:
				case 659:
				case 660:
				case 661:
				case 662:
				case 663:
				case 664:
				case 665:
				case 666:
				case 667:
				case 668:
				case 669:
				case 670:
				case 671:
				case 672:
				case 673:
				case 674:
				case 675:
				case 676:
				case 677:
				case 678:
				case 679:
				case 680:
				case 681:
				case 682:
				case 683:
				case 684:
				case 685:
				case 686:
				case 687:
				case 688:
				case 689:
				case 690:
				case 691:
				case 692:
				case 693:
				case 696:
				case 697:
				case 698:
				case 699:
				case 700:
				case 701:
				case 702:
				case 703:
				case 704:
				case 705:
				case 706:
				case 707:
				case 708:
				case 709:
				case 710:
				case 711:
				case 712:
				case 713:
				case 714:
				case 715:
				case 716:
				case 717:
				case 718:
				case 719:
				case 720:
				case 721:
				case 722:
				case 723:
				case 724:
				case 725:
				case 726:
				case 727:
				case 728:
				case 729:
				case 730:
				case 731:
				case 732:
				case 733:
				case 734:
				case 735:
				case 736:
				case 737:
				case 738:
				case 739:
				case 740:
				case 741:
				case 742:
				case 743:
				case 744:
				case 745:
				case 746:
				case 747:
				case 748:
				case 749:
				case 750:
				case 751:
				case 752:
				case 753:
				case 754:
				case 755:
				case 756:
				case 757:
				case 758:
				case 759:
				case 760:
				case 761:
				case 762:
				case 763:
				case 764:
				case 765:
				case 766:
				case 767:
				case 768:
				case 769:
				case 770:
				case 771:
				case 772:
				case 773:
				case 774:
				case 775:
				case 776:
				case 777:
				case 778:
				case 779:
				case 780:
				case 781:
				case 782:
				case 783:
				case 784:
				case 785:
				case 786:
				case 787:
				case 788:
				case 789:
				case 790:
				case 791:
				case 792:
				case 793:
				case 794:
				case 795:
				case 796:
				case 797:
				case 798:
				case 799:
				case 800:
				case 801:
				case 802:
				case 803:
				case 804:
				case 805:
				case 806:
				case 807:
				case 808:
				case 809:
				case 810:
				case 811:
				case 812:
				case 813:
				case 814:
				case 815:
				case 816:
				case 817:
				case 818:
				case 819:
				case 820:
				case 821:
				case 822:
				case 823:
				case 824:
				case 825:
				case 826:
				case 827:
				case 828:
				case 829:
				case 830:
				case 831:
				case 832:
				case 833:
				case 834:
				case 835:
				case 836:
				case 837:
				case 838:
				case 839:
				case 840:
				case 841:
				case 842:
				case 843:
				case 844:
				case 845:
				case 846:
				case 847:
				case 848:
				case 849:
				case 850:
				case 851:
				case 852:
				case 853:
				case 854:
				case 855:
				case 856:
				case 857:
				case 858:
				case 859:
				case 860:
				case 861:
				case 862:
				case 863:
				case 864:
				case 865:
				case 866:
				case 867:
				case 868:
				case 869:
				case 870:
				case 871:
				case 872:
				case 873:
				case 874:
				case 875:
				case 876:
				case 877:
				case 878:
				case 879:
				case 880:
				case 881:
				case 882:
				case 883:
				case 884:
				case 885:
				case 886:
				case 887:
				case 888:
				case 889:
				case 890:
				case 891:
				case 892:
				case 893:
				case 894:
				case 895:
				case 896:
				case 897:
				case 898:
				case 899:
				case 900:
				case 901:
				case 902:
				case 903:
				case 904:
				case 905:
				case 906:
				case 907:
				case 908:
				case 909:
				case 910:
				case 911:
				case 912:
				case 913:
				case 914:
				case 915:
				case 916:
				case 917:
				case 918:
				case 919:
				case 920:
				case 921:
				case 922:
				case 923:
				case 924:
				case 925:
				case 926:
				case 927:
				case 928:
				case 929:
				case 930:
				case 931:
				case 932:
				case 933:
				case 934:
				case 935:
				case 936:
				case 937:
				case 938:
				case 939:
				case 940:
				case 941:
				case 942:
				case 943:
				case 944:
				case 945:
				case 946:
				case 947:
				case 948:
				case 949:
				case 950:
				case 951:
				case 952:
				case 953:
				case 954:
				case 955:
				case 956:
				case 957:
				case 958:
				case 959:
				case 960:
				case 961:
				case 962:
				case 963:
				case 964:
				case 965:
				case 966:
				case 967:
				case 968:
				case 969:
				case 970:
				case 971:
				case 972:
				case 973:
				case 974:
				case 975:
				case 976:
				case 977:
				case 978:
				case 979:
				case 980:
				case 981:
				case 982:
				case 983:
				case 984:
				case 985:
				case 986:
				case 987:
				case 988:
				case 989:
				case 990:
				case 991:
				case 992:
				case 993:
				case 1032:
				case 1035:
				case 1043:
				case 1044:
					{
					this.state = 2550;
					this.uidList();
					}
					break;
				case 6:
					{
					this.state = 2551;
					this.match(SqlParser.ALL);
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				this.state = 2554;
				this.match(SqlParser.TABLESPACE);
				}
				break;
			case 36:
				localctx = new AlterByTruncatePartitionContext(this, localctx);
				this.enterOuterAlt(localctx, 36);
				{
				this.state = 2555;
				this.match(SqlParser.TRUNCATE);
				this.state = 2556;
				this.match(SqlParser.PARTITION);
				this.state = 2559;
				this._errHandler.sync(this);
				switch (this._input.LA(1)) {
				case 32:
				case 35:
				case 44:
				case 87:
				case 105:
				case 133:
				case 151:
				case 199:
				case 200:
				case 201:
				case 202:
				case 203:
				case 216:
				case 219:
				case 221:
				case 233:
				case 234:
				case 239:
				case 262:
				case 270:
				case 271:
				case 272:
				case 273:
				case 274:
				case 275:
				case 276:
				case 277:
				case 278:
				case 279:
				case 280:
				case 281:
				case 282:
				case 283:
				case 284:
				case 285:
				case 286:
				case 287:
				case 288:
				case 289:
				case 290:
				case 291:
				case 292:
				case 293:
				case 294:
				case 295:
				case 296:
				case 297:
				case 298:
				case 299:
				case 300:
				case 301:
				case 302:
				case 303:
				case 304:
				case 305:
				case 306:
				case 307:
				case 308:
				case 309:
				case 310:
				case 311:
				case 312:
				case 313:
				case 314:
				case 315:
				case 316:
				case 317:
				case 318:
				case 319:
				case 320:
				case 321:
				case 322:
				case 323:
				case 324:
				case 325:
				case 326:
				case 327:
				case 328:
				case 329:
				case 330:
				case 331:
				case 332:
				case 333:
				case 334:
				case 335:
				case 336:
				case 337:
				case 338:
				case 339:
				case 340:
				case 341:
				case 342:
				case 343:
				case 344:
				case 345:
				case 346:
				case 347:
				case 348:
				case 349:
				case 350:
				case 351:
				case 352:
				case 353:
				case 354:
				case 355:
				case 356:
				case 357:
				case 358:
				case 359:
				case 360:
				case 361:
				case 362:
				case 363:
				case 364:
				case 365:
				case 366:
				case 367:
				case 368:
				case 369:
				case 370:
				case 371:
				case 372:
				case 373:
				case 374:
				case 375:
				case 376:
				case 377:
				case 378:
				case 379:
				case 380:
				case 381:
				case 382:
				case 383:
				case 384:
				case 385:
				case 386:
				case 387:
				case 388:
				case 389:
				case 390:
				case 391:
				case 392:
				case 393:
				case 394:
				case 395:
				case 396:
				case 397:
				case 398:
				case 399:
				case 400:
				case 401:
				case 402:
				case 403:
				case 404:
				case 405:
				case 406:
				case 407:
				case 408:
				case 409:
				case 410:
				case 411:
				case 412:
				case 413:
				case 414:
				case 415:
				case 416:
				case 417:
				case 418:
				case 419:
				case 420:
				case 421:
				case 422:
				case 423:
				case 424:
				case 425:
				case 426:
				case 427:
				case 428:
				case 429:
				case 430:
				case 431:
				case 432:
				case 433:
				case 434:
				case 435:
				case 436:
				case 437:
				case 438:
				case 439:
				case 440:
				case 441:
				case 442:
				case 443:
				case 444:
				case 445:
				case 446:
				case 447:
				case 448:
				case 449:
				case 450:
				case 451:
				case 452:
				case 453:
				case 454:
				case 455:
				case 456:
				case 457:
				case 458:
				case 459:
				case 460:
				case 461:
				case 462:
				case 463:
				case 464:
				case 465:
				case 466:
				case 467:
				case 468:
				case 469:
				case 470:
				case 471:
				case 472:
				case 473:
				case 474:
				case 475:
				case 476:
				case 477:
				case 478:
				case 479:
				case 480:
				case 481:
				case 482:
				case 483:
				case 484:
				case 485:
				case 486:
				case 487:
				case 488:
				case 489:
				case 490:
				case 491:
				case 492:
				case 493:
				case 494:
				case 495:
				case 496:
				case 497:
				case 498:
				case 499:
				case 500:
				case 501:
				case 502:
				case 503:
				case 504:
				case 505:
				case 506:
				case 507:
				case 508:
				case 509:
				case 510:
				case 511:
				case 512:
				case 513:
				case 514:
				case 515:
				case 516:
				case 517:
				case 518:
				case 519:
				case 520:
				case 521:
				case 522:
				case 523:
				case 524:
				case 525:
				case 526:
				case 527:
				case 528:
				case 529:
				case 530:
				case 531:
				case 532:
				case 533:
				case 534:
				case 535:
				case 536:
				case 537:
				case 538:
				case 539:
				case 540:
				case 541:
				case 542:
				case 543:
				case 544:
				case 545:
				case 547:
				case 548:
				case 549:
				case 550:
				case 551:
				case 552:
				case 553:
				case 554:
				case 555:
				case 556:
				case 557:
				case 558:
				case 559:
				case 560:
				case 561:
				case 562:
				case 563:
				case 564:
				case 565:
				case 566:
				case 567:
				case 568:
				case 569:
				case 570:
				case 571:
				case 572:
				case 573:
				case 574:
				case 575:
				case 576:
				case 577:
				case 578:
				case 580:
				case 581:
				case 582:
				case 583:
				case 584:
				case 585:
				case 586:
				case 587:
				case 588:
				case 593:
				case 594:
				case 595:
				case 596:
				case 597:
				case 598:
				case 599:
				case 600:
				case 601:
				case 602:
				case 603:
				case 604:
				case 605:
				case 606:
				case 607:
				case 608:
				case 609:
				case 610:
				case 612:
				case 613:
				case 614:
				case 615:
				case 616:
				case 617:
				case 618:
				case 619:
				case 620:
				case 621:
				case 622:
				case 623:
				case 624:
				case 625:
				case 626:
				case 627:
				case 628:
				case 629:
				case 630:
				case 631:
				case 632:
				case 633:
				case 634:
				case 635:
				case 636:
				case 637:
				case 638:
				case 639:
				case 640:
				case 641:
				case 642:
				case 643:
				case 644:
				case 645:
				case 646:
				case 647:
				case 648:
				case 649:
				case 650:
				case 651:
				case 652:
				case 653:
				case 654:
				case 655:
				case 656:
				case 657:
				case 658:
				case 659:
				case 660:
				case 661:
				case 662:
				case 663:
				case 664:
				case 665:
				case 666:
				case 667:
				case 668:
				case 669:
				case 670:
				case 671:
				case 672:
				case 673:
				case 674:
				case 675:
				case 676:
				case 677:
				case 678:
				case 679:
				case 680:
				case 681:
				case 682:
				case 683:
				case 684:
				case 685:
				case 686:
				case 687:
				case 688:
				case 689:
				case 690:
				case 691:
				case 692:
				case 693:
				case 696:
				case 697:
				case 698:
				case 699:
				case 700:
				case 701:
				case 702:
				case 703:
				case 704:
				case 705:
				case 706:
				case 707:
				case 708:
				case 709:
				case 710:
				case 711:
				case 712:
				case 713:
				case 714:
				case 715:
				case 716:
				case 717:
				case 718:
				case 719:
				case 720:
				case 721:
				case 722:
				case 723:
				case 724:
				case 725:
				case 726:
				case 727:
				case 728:
				case 729:
				case 730:
				case 731:
				case 732:
				case 733:
				case 734:
				case 735:
				case 736:
				case 737:
				case 738:
				case 739:
				case 740:
				case 741:
				case 742:
				case 743:
				case 744:
				case 745:
				case 746:
				case 747:
				case 748:
				case 749:
				case 750:
				case 751:
				case 752:
				case 753:
				case 754:
				case 755:
				case 756:
				case 757:
				case 758:
				case 759:
				case 760:
				case 761:
				case 762:
				case 763:
				case 764:
				case 765:
				case 766:
				case 767:
				case 768:
				case 769:
				case 770:
				case 771:
				case 772:
				case 773:
				case 774:
				case 775:
				case 776:
				case 777:
				case 778:
				case 779:
				case 780:
				case 781:
				case 782:
				case 783:
				case 784:
				case 785:
				case 786:
				case 787:
				case 788:
				case 789:
				case 790:
				case 791:
				case 792:
				case 793:
				case 794:
				case 795:
				case 796:
				case 797:
				case 798:
				case 799:
				case 800:
				case 801:
				case 802:
				case 803:
				case 804:
				case 805:
				case 806:
				case 807:
				case 808:
				case 809:
				case 810:
				case 811:
				case 812:
				case 813:
				case 814:
				case 815:
				case 816:
				case 817:
				case 818:
				case 819:
				case 820:
				case 821:
				case 822:
				case 823:
				case 824:
				case 825:
				case 826:
				case 827:
				case 828:
				case 829:
				case 830:
				case 831:
				case 832:
				case 833:
				case 834:
				case 835:
				case 836:
				case 837:
				case 838:
				case 839:
				case 840:
				case 841:
				case 842:
				case 843:
				case 844:
				case 845:
				case 846:
				case 847:
				case 848:
				case 849:
				case 850:
				case 851:
				case 852:
				case 853:
				case 854:
				case 855:
				case 856:
				case 857:
				case 858:
				case 859:
				case 860:
				case 861:
				case 862:
				case 863:
				case 864:
				case 865:
				case 866:
				case 867:
				case 868:
				case 869:
				case 870:
				case 871:
				case 872:
				case 873:
				case 874:
				case 875:
				case 876:
				case 877:
				case 878:
				case 879:
				case 880:
				case 881:
				case 882:
				case 883:
				case 884:
				case 885:
				case 886:
				case 887:
				case 888:
				case 889:
				case 890:
				case 891:
				case 892:
				case 893:
				case 894:
				case 895:
				case 896:
				case 897:
				case 898:
				case 899:
				case 900:
				case 901:
				case 902:
				case 903:
				case 904:
				case 905:
				case 906:
				case 907:
				case 908:
				case 909:
				case 910:
				case 911:
				case 912:
				case 913:
				case 914:
				case 915:
				case 916:
				case 917:
				case 918:
				case 919:
				case 920:
				case 921:
				case 922:
				case 923:
				case 924:
				case 925:
				case 926:
				case 927:
				case 928:
				case 929:
				case 930:
				case 931:
				case 932:
				case 933:
				case 934:
				case 935:
				case 936:
				case 937:
				case 938:
				case 939:
				case 940:
				case 941:
				case 942:
				case 943:
				case 944:
				case 945:
				case 946:
				case 947:
				case 948:
				case 949:
				case 950:
				case 951:
				case 952:
				case 953:
				case 954:
				case 955:
				case 956:
				case 957:
				case 958:
				case 959:
				case 960:
				case 961:
				case 962:
				case 963:
				case 964:
				case 965:
				case 966:
				case 967:
				case 968:
				case 969:
				case 970:
				case 971:
				case 972:
				case 973:
				case 974:
				case 975:
				case 976:
				case 977:
				case 978:
				case 979:
				case 980:
				case 981:
				case 982:
				case 983:
				case 984:
				case 985:
				case 986:
				case 987:
				case 988:
				case 989:
				case 990:
				case 991:
				case 992:
				case 993:
				case 1032:
				case 1035:
				case 1043:
				case 1044:
					{
					this.state = 2557;
					this.uidList();
					}
					break;
				case 6:
					{
					this.state = 2558;
					this.match(SqlParser.ALL);
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				}
				break;
			case 37:
				localctx = new AlterByCoalescePartitionContext(this, localctx);
				this.enterOuterAlt(localctx, 37);
				{
				this.state = 2561;
				this.match(SqlParser.COALESCE);
				this.state = 2562;
				this.match(SqlParser.PARTITION);
				this.state = 2563;
				this.decimalLiteral();
				}
				break;
			case 38:
				localctx = new AlterByReorganizePartitionContext(this, localctx);
				this.enterOuterAlt(localctx, 38);
				{
				this.state = 2564;
				this.match(SqlParser.REORGANIZE);
				this.state = 2565;
				this.match(SqlParser.PARTITION);
				this.state = 2566;
				this.uidList();
				this.state = 2567;
				this.match(SqlParser.INTO);
				this.state = 2568;
				this.match(SqlParser.LR_BRACKET);
				this.state = 2569;
				this.partitionDefinition();
				this.state = 2574;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				while (_la===1022) {
					{
					{
					this.state = 2570;
					this.match(SqlParser.COMMA);
					this.state = 2571;
					this.partitionDefinition();
					}
					}
					this.state = 2576;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
				}
				this.state = 2577;
				this.match(SqlParser.RR_BRACKET);
				}
				break;
			case 39:
				localctx = new AlterByExchangePartitionContext(this, localctx);
				this.enterOuterAlt(localctx, 39);
				{
				this.state = 2579;
				this.match(SqlParser.EXCHANGE);
				this.state = 2580;
				this.match(SqlParser.PARTITION);
				this.state = 2581;
				this.uid();
				this.state = 2582;
				this.match(SqlParser.WITH);
				this.state = 2583;
				this.match(SqlParser.TABLE);
				this.state = 2584;
				this.tableName();
				this.state = 2587;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===174 || _la===583) {
					{
					this.state = 2585;
					(localctx as AlterByExchangePartitionContext)._validationFormat = this._input.LT(1);
					_la = this._input.LA(1);
					if(!(_la===174 || _la===583)) {
					    (localctx as AlterByExchangePartitionContext)._validationFormat = this._errHandler.recoverInline(this);
					}
					else {
						this._errHandler.reportMatch(this);
					    this.consume();
					}
					this.state = 2586;
					this.match(SqlParser.VALIDATION);
					}
				}

				}
				break;
			case 40:
				localctx = new AlterByAnalyzePartitionContext(this, localctx);
				this.enterOuterAlt(localctx, 40);
				{
				this.state = 2589;
				this.match(SqlParser.ANALYZE);
				this.state = 2590;
				this.match(SqlParser.PARTITION);
				this.state = 2593;
				this._errHandler.sync(this);
				switch (this._input.LA(1)) {
				case 32:
				case 35:
				case 44:
				case 87:
				case 105:
				case 133:
				case 151:
				case 199:
				case 200:
				case 201:
				case 202:
				case 203:
				case 216:
				case 219:
				case 221:
				case 233:
				case 234:
				case 239:
				case 262:
				case 270:
				case 271:
				case 272:
				case 273:
				case 274:
				case 275:
				case 276:
				case 277:
				case 278:
				case 279:
				case 280:
				case 281:
				case 282:
				case 283:
				case 284:
				case 285:
				case 286:
				case 287:
				case 288:
				case 289:
				case 290:
				case 291:
				case 292:
				case 293:
				case 294:
				case 295:
				case 296:
				case 297:
				case 298:
				case 299:
				case 300:
				case 301:
				case 302:
				case 303:
				case 304:
				case 305:
				case 306:
				case 307:
				case 308:
				case 309:
				case 310:
				case 311:
				case 312:
				case 313:
				case 314:
				case 315:
				case 316:
				case 317:
				case 318:
				case 319:
				case 320:
				case 321:
				case 322:
				case 323:
				case 324:
				case 325:
				case 326:
				case 327:
				case 328:
				case 329:
				case 330:
				case 331:
				case 332:
				case 333:
				case 334:
				case 335:
				case 336:
				case 337:
				case 338:
				case 339:
				case 340:
				case 341:
				case 342:
				case 343:
				case 344:
				case 345:
				case 346:
				case 347:
				case 348:
				case 349:
				case 350:
				case 351:
				case 352:
				case 353:
				case 354:
				case 355:
				case 356:
				case 357:
				case 358:
				case 359:
				case 360:
				case 361:
				case 362:
				case 363:
				case 364:
				case 365:
				case 366:
				case 367:
				case 368:
				case 369:
				case 370:
				case 371:
				case 372:
				case 373:
				case 374:
				case 375:
				case 376:
				case 377:
				case 378:
				case 379:
				case 380:
				case 381:
				case 382:
				case 383:
				case 384:
				case 385:
				case 386:
				case 387:
				case 388:
				case 389:
				case 390:
				case 391:
				case 392:
				case 393:
				case 394:
				case 395:
				case 396:
				case 397:
				case 398:
				case 399:
				case 400:
				case 401:
				case 402:
				case 403:
				case 404:
				case 405:
				case 406:
				case 407:
				case 408:
				case 409:
				case 410:
				case 411:
				case 412:
				case 413:
				case 414:
				case 415:
				case 416:
				case 417:
				case 418:
				case 419:
				case 420:
				case 421:
				case 422:
				case 423:
				case 424:
				case 425:
				case 426:
				case 427:
				case 428:
				case 429:
				case 430:
				case 431:
				case 432:
				case 433:
				case 434:
				case 435:
				case 436:
				case 437:
				case 438:
				case 439:
				case 440:
				case 441:
				case 442:
				case 443:
				case 444:
				case 445:
				case 446:
				case 447:
				case 448:
				case 449:
				case 450:
				case 451:
				case 452:
				case 453:
				case 454:
				case 455:
				case 456:
				case 457:
				case 458:
				case 459:
				case 460:
				case 461:
				case 462:
				case 463:
				case 464:
				case 465:
				case 466:
				case 467:
				case 468:
				case 469:
				case 470:
				case 471:
				case 472:
				case 473:
				case 474:
				case 475:
				case 476:
				case 477:
				case 478:
				case 479:
				case 480:
				case 481:
				case 482:
				case 483:
				case 484:
				case 485:
				case 486:
				case 487:
				case 488:
				case 489:
				case 490:
				case 491:
				case 492:
				case 493:
				case 494:
				case 495:
				case 496:
				case 497:
				case 498:
				case 499:
				case 500:
				case 501:
				case 502:
				case 503:
				case 504:
				case 505:
				case 506:
				case 507:
				case 508:
				case 509:
				case 510:
				case 511:
				case 512:
				case 513:
				case 514:
				case 515:
				case 516:
				case 517:
				case 518:
				case 519:
				case 520:
				case 521:
				case 522:
				case 523:
				case 524:
				case 525:
				case 526:
				case 527:
				case 528:
				case 529:
				case 530:
				case 531:
				case 532:
				case 533:
				case 534:
				case 535:
				case 536:
				case 537:
				case 538:
				case 539:
				case 540:
				case 541:
				case 542:
				case 543:
				case 544:
				case 545:
				case 547:
				case 548:
				case 549:
				case 550:
				case 551:
				case 552:
				case 553:
				case 554:
				case 555:
				case 556:
				case 557:
				case 558:
				case 559:
				case 560:
				case 561:
				case 562:
				case 563:
				case 564:
				case 565:
				case 566:
				case 567:
				case 568:
				case 569:
				case 570:
				case 571:
				case 572:
				case 573:
				case 574:
				case 575:
				case 576:
				case 577:
				case 578:
				case 580:
				case 581:
				case 582:
				case 583:
				case 584:
				case 585:
				case 586:
				case 587:
				case 588:
				case 593:
				case 594:
				case 595:
				case 596:
				case 597:
				case 598:
				case 599:
				case 600:
				case 601:
				case 602:
				case 603:
				case 604:
				case 605:
				case 606:
				case 607:
				case 608:
				case 609:
				case 610:
				case 612:
				case 613:
				case 614:
				case 615:
				case 616:
				case 617:
				case 618:
				case 619:
				case 620:
				case 621:
				case 622:
				case 623:
				case 624:
				case 625:
				case 626:
				case 627:
				case 628:
				case 629:
				case 630:
				case 631:
				case 632:
				case 633:
				case 634:
				case 635:
				case 636:
				case 637:
				case 638:
				case 639:
				case 640:
				case 641:
				case 642:
				case 643:
				case 644:
				case 645:
				case 646:
				case 647:
				case 648:
				case 649:
				case 650:
				case 651:
				case 652:
				case 653:
				case 654:
				case 655:
				case 656:
				case 657:
				case 658:
				case 659:
				case 660:
				case 661:
				case 662:
				case 663:
				case 664:
				case 665:
				case 666:
				case 667:
				case 668:
				case 669:
				case 670:
				case 671:
				case 672:
				case 673:
				case 674:
				case 675:
				case 676:
				case 677:
				case 678:
				case 679:
				case 680:
				case 681:
				case 682:
				case 683:
				case 684:
				case 685:
				case 686:
				case 687:
				case 688:
				case 689:
				case 690:
				case 691:
				case 692:
				case 693:
				case 696:
				case 697:
				case 698:
				case 699:
				case 700:
				case 701:
				case 702:
				case 703:
				case 704:
				case 705:
				case 706:
				case 707:
				case 708:
				case 709:
				case 710:
				case 711:
				case 712:
				case 713:
				case 714:
				case 715:
				case 716:
				case 717:
				case 718:
				case 719:
				case 720:
				case 721:
				case 722:
				case 723:
				case 724:
				case 725:
				case 726:
				case 727:
				case 728:
				case 729:
				case 730:
				case 731:
				case 732:
				case 733:
				case 734:
				case 735:
				case 736:
				case 737:
				case 738:
				case 739:
				case 740:
				case 741:
				case 742:
				case 743:
				case 744:
				case 745:
				case 746:
				case 747:
				case 748:
				case 749:
				case 750:
				case 751:
				case 752:
				case 753:
				case 754:
				case 755:
				case 756:
				case 757:
				case 758:
				case 759:
				case 760:
				case 761:
				case 762:
				case 763:
				case 764:
				case 765:
				case 766:
				case 767:
				case 768:
				case 769:
				case 770:
				case 771:
				case 772:
				case 773:
				case 774:
				case 775:
				case 776:
				case 777:
				case 778:
				case 779:
				case 780:
				case 781:
				case 782:
				case 783:
				case 784:
				case 785:
				case 786:
				case 787:
				case 788:
				case 789:
				case 790:
				case 791:
				case 792:
				case 793:
				case 794:
				case 795:
				case 796:
				case 797:
				case 798:
				case 799:
				case 800:
				case 801:
				case 802:
				case 803:
				case 804:
				case 805:
				case 806:
				case 807:
				case 808:
				case 809:
				case 810:
				case 811:
				case 812:
				case 813:
				case 814:
				case 815:
				case 816:
				case 817:
				case 818:
				case 819:
				case 820:
				case 821:
				case 822:
				case 823:
				case 824:
				case 825:
				case 826:
				case 827:
				case 828:
				case 829:
				case 830:
				case 831:
				case 832:
				case 833:
				case 834:
				case 835:
				case 836:
				case 837:
				case 838:
				case 839:
				case 840:
				case 841:
				case 842:
				case 843:
				case 844:
				case 845:
				case 846:
				case 847:
				case 848:
				case 849:
				case 850:
				case 851:
				case 852:
				case 853:
				case 854:
				case 855:
				case 856:
				case 857:
				case 858:
				case 859:
				case 860:
				case 861:
				case 862:
				case 863:
				case 864:
				case 865:
				case 866:
				case 867:
				case 868:
				case 869:
				case 870:
				case 871:
				case 872:
				case 873:
				case 874:
				case 875:
				case 876:
				case 877:
				case 878:
				case 879:
				case 880:
				case 881:
				case 882:
				case 883:
				case 884:
				case 885:
				case 886:
				case 887:
				case 888:
				case 889:
				case 890:
				case 891:
				case 892:
				case 893:
				case 894:
				case 895:
				case 896:
				case 897:
				case 898:
				case 899:
				case 900:
				case 901:
				case 902:
				case 903:
				case 904:
				case 905:
				case 906:
				case 907:
				case 908:
				case 909:
				case 910:
				case 911:
				case 912:
				case 913:
				case 914:
				case 915:
				case 916:
				case 917:
				case 918:
				case 919:
				case 920:
				case 921:
				case 922:
				case 923:
				case 924:
				case 925:
				case 926:
				case 927:
				case 928:
				case 929:
				case 930:
				case 931:
				case 932:
				case 933:
				case 934:
				case 935:
				case 936:
				case 937:
				case 938:
				case 939:
				case 940:
				case 941:
				case 942:
				case 943:
				case 944:
				case 945:
				case 946:
				case 947:
				case 948:
				case 949:
				case 950:
				case 951:
				case 952:
				case 953:
				case 954:
				case 955:
				case 956:
				case 957:
				case 958:
				case 959:
				case 960:
				case 961:
				case 962:
				case 963:
				case 964:
				case 965:
				case 966:
				case 967:
				case 968:
				case 969:
				case 970:
				case 971:
				case 972:
				case 973:
				case 974:
				case 975:
				case 976:
				case 977:
				case 978:
				case 979:
				case 980:
				case 981:
				case 982:
				case 983:
				case 984:
				case 985:
				case 986:
				case 987:
				case 988:
				case 989:
				case 990:
				case 991:
				case 992:
				case 993:
				case 1032:
				case 1035:
				case 1043:
				case 1044:
					{
					this.state = 2591;
					this.uidList();
					}
					break;
				case 6:
					{
					this.state = 2592;
					this.match(SqlParser.ALL);
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				}
				break;
			case 41:
				localctx = new AlterByCheckPartitionContext(this, localctx);
				this.enterOuterAlt(localctx, 41);
				{
				this.state = 2595;
				this.match(SqlParser.CHECK);
				this.state = 2596;
				this.match(SqlParser.PARTITION);
				this.state = 2599;
				this._errHandler.sync(this);
				switch (this._input.LA(1)) {
				case 32:
				case 35:
				case 44:
				case 87:
				case 105:
				case 133:
				case 151:
				case 199:
				case 200:
				case 201:
				case 202:
				case 203:
				case 216:
				case 219:
				case 221:
				case 233:
				case 234:
				case 239:
				case 262:
				case 270:
				case 271:
				case 272:
				case 273:
				case 274:
				case 275:
				case 276:
				case 277:
				case 278:
				case 279:
				case 280:
				case 281:
				case 282:
				case 283:
				case 284:
				case 285:
				case 286:
				case 287:
				case 288:
				case 289:
				case 290:
				case 291:
				case 292:
				case 293:
				case 294:
				case 295:
				case 296:
				case 297:
				case 298:
				case 299:
				case 300:
				case 301:
				case 302:
				case 303:
				case 304:
				case 305:
				case 306:
				case 307:
				case 308:
				case 309:
				case 310:
				case 311:
				case 312:
				case 313:
				case 314:
				case 315:
				case 316:
				case 317:
				case 318:
				case 319:
				case 320:
				case 321:
				case 322:
				case 323:
				case 324:
				case 325:
				case 326:
				case 327:
				case 328:
				case 329:
				case 330:
				case 331:
				case 332:
				case 333:
				case 334:
				case 335:
				case 336:
				case 337:
				case 338:
				case 339:
				case 340:
				case 341:
				case 342:
				case 343:
				case 344:
				case 345:
				case 346:
				case 347:
				case 348:
				case 349:
				case 350:
				case 351:
				case 352:
				case 353:
				case 354:
				case 355:
				case 356:
				case 357:
				case 358:
				case 359:
				case 360:
				case 361:
				case 362:
				case 363:
				case 364:
				case 365:
				case 366:
				case 367:
				case 368:
				case 369:
				case 370:
				case 371:
				case 372:
				case 373:
				case 374:
				case 375:
				case 376:
				case 377:
				case 378:
				case 379:
				case 380:
				case 381:
				case 382:
				case 383:
				case 384:
				case 385:
				case 386:
				case 387:
				case 388:
				case 389:
				case 390:
				case 391:
				case 392:
				case 393:
				case 394:
				case 395:
				case 396:
				case 397:
				case 398:
				case 399:
				case 400:
				case 401:
				case 402:
				case 403:
				case 404:
				case 405:
				case 406:
				case 407:
				case 408:
				case 409:
				case 410:
				case 411:
				case 412:
				case 413:
				case 414:
				case 415:
				case 416:
				case 417:
				case 418:
				case 419:
				case 420:
				case 421:
				case 422:
				case 423:
				case 424:
				case 425:
				case 426:
				case 427:
				case 428:
				case 429:
				case 430:
				case 431:
				case 432:
				case 433:
				case 434:
				case 435:
				case 436:
				case 437:
				case 438:
				case 439:
				case 440:
				case 441:
				case 442:
				case 443:
				case 444:
				case 445:
				case 446:
				case 447:
				case 448:
				case 449:
				case 450:
				case 451:
				case 452:
				case 453:
				case 454:
				case 455:
				case 456:
				case 457:
				case 458:
				case 459:
				case 460:
				case 461:
				case 462:
				case 463:
				case 464:
				case 465:
				case 466:
				case 467:
				case 468:
				case 469:
				case 470:
				case 471:
				case 472:
				case 473:
				case 474:
				case 475:
				case 476:
				case 477:
				case 478:
				case 479:
				case 480:
				case 481:
				case 482:
				case 483:
				case 484:
				case 485:
				case 486:
				case 487:
				case 488:
				case 489:
				case 490:
				case 491:
				case 492:
				case 493:
				case 494:
				case 495:
				case 496:
				case 497:
				case 498:
				case 499:
				case 500:
				case 501:
				case 502:
				case 503:
				case 504:
				case 505:
				case 506:
				case 507:
				case 508:
				case 509:
				case 510:
				case 511:
				case 512:
				case 513:
				case 514:
				case 515:
				case 516:
				case 517:
				case 518:
				case 519:
				case 520:
				case 521:
				case 522:
				case 523:
				case 524:
				case 525:
				case 526:
				case 527:
				case 528:
				case 529:
				case 530:
				case 531:
				case 532:
				case 533:
				case 534:
				case 535:
				case 536:
				case 537:
				case 538:
				case 539:
				case 540:
				case 541:
				case 542:
				case 543:
				case 544:
				case 545:
				case 547:
				case 548:
				case 549:
				case 550:
				case 551:
				case 552:
				case 553:
				case 554:
				case 555:
				case 556:
				case 557:
				case 558:
				case 559:
				case 560:
				case 561:
				case 562:
				case 563:
				case 564:
				case 565:
				case 566:
				case 567:
				case 568:
				case 569:
				case 570:
				case 571:
				case 572:
				case 573:
				case 574:
				case 575:
				case 576:
				case 577:
				case 578:
				case 580:
				case 581:
				case 582:
				case 583:
				case 584:
				case 585:
				case 586:
				case 587:
				case 588:
				case 593:
				case 594:
				case 595:
				case 596:
				case 597:
				case 598:
				case 599:
				case 600:
				case 601:
				case 602:
				case 603:
				case 604:
				case 605:
				case 606:
				case 607:
				case 608:
				case 609:
				case 610:
				case 612:
				case 613:
				case 614:
				case 615:
				case 616:
				case 617:
				case 618:
				case 619:
				case 620:
				case 621:
				case 622:
				case 623:
				case 624:
				case 625:
				case 626:
				case 627:
				case 628:
				case 629:
				case 630:
				case 631:
				case 632:
				case 633:
				case 634:
				case 635:
				case 636:
				case 637:
				case 638:
				case 639:
				case 640:
				case 641:
				case 642:
				case 643:
				case 644:
				case 645:
				case 646:
				case 647:
				case 648:
				case 649:
				case 650:
				case 651:
				case 652:
				case 653:
				case 654:
				case 655:
				case 656:
				case 657:
				case 658:
				case 659:
				case 660:
				case 661:
				case 662:
				case 663:
				case 664:
				case 665:
				case 666:
				case 667:
				case 668:
				case 669:
				case 670:
				case 671:
				case 672:
				case 673:
				case 674:
				case 675:
				case 676:
				case 677:
				case 678:
				case 679:
				case 680:
				case 681:
				case 682:
				case 683:
				case 684:
				case 685:
				case 686:
				case 687:
				case 688:
				case 689:
				case 690:
				case 691:
				case 692:
				case 693:
				case 696:
				case 697:
				case 698:
				case 699:
				case 700:
				case 701:
				case 702:
				case 703:
				case 704:
				case 705:
				case 706:
				case 707:
				case 708:
				case 709:
				case 710:
				case 711:
				case 712:
				case 713:
				case 714:
				case 715:
				case 716:
				case 717:
				case 718:
				case 719:
				case 720:
				case 721:
				case 722:
				case 723:
				case 724:
				case 725:
				case 726:
				case 727:
				case 728:
				case 729:
				case 730:
				case 731:
				case 732:
				case 733:
				case 734:
				case 735:
				case 736:
				case 737:
				case 738:
				case 739:
				case 740:
				case 741:
				case 742:
				case 743:
				case 744:
				case 745:
				case 746:
				case 747:
				case 748:
				case 749:
				case 750:
				case 751:
				case 752:
				case 753:
				case 754:
				case 755:
				case 756:
				case 757:
				case 758:
				case 759:
				case 760:
				case 761:
				case 762:
				case 763:
				case 764:
				case 765:
				case 766:
				case 767:
				case 768:
				case 769:
				case 770:
				case 771:
				case 772:
				case 773:
				case 774:
				case 775:
				case 776:
				case 777:
				case 778:
				case 779:
				case 780:
				case 781:
				case 782:
				case 783:
				case 784:
				case 785:
				case 786:
				case 787:
				case 788:
				case 789:
				case 790:
				case 791:
				case 792:
				case 793:
				case 794:
				case 795:
				case 796:
				case 797:
				case 798:
				case 799:
				case 800:
				case 801:
				case 802:
				case 803:
				case 804:
				case 805:
				case 806:
				case 807:
				case 808:
				case 809:
				case 810:
				case 811:
				case 812:
				case 813:
				case 814:
				case 815:
				case 816:
				case 817:
				case 818:
				case 819:
				case 820:
				case 821:
				case 822:
				case 823:
				case 824:
				case 825:
				case 826:
				case 827:
				case 828:
				case 829:
				case 830:
				case 831:
				case 832:
				case 833:
				case 834:
				case 835:
				case 836:
				case 837:
				case 838:
				case 839:
				case 840:
				case 841:
				case 842:
				case 843:
				case 844:
				case 845:
				case 846:
				case 847:
				case 848:
				case 849:
				case 850:
				case 851:
				case 852:
				case 853:
				case 854:
				case 855:
				case 856:
				case 857:
				case 858:
				case 859:
				case 860:
				case 861:
				case 862:
				case 863:
				case 864:
				case 865:
				case 866:
				case 867:
				case 868:
				case 869:
				case 870:
				case 871:
				case 872:
				case 873:
				case 874:
				case 875:
				case 876:
				case 877:
				case 878:
				case 879:
				case 880:
				case 881:
				case 882:
				case 883:
				case 884:
				case 885:
				case 886:
				case 887:
				case 888:
				case 889:
				case 890:
				case 891:
				case 892:
				case 893:
				case 894:
				case 895:
				case 896:
				case 897:
				case 898:
				case 899:
				case 900:
				case 901:
				case 902:
				case 903:
				case 904:
				case 905:
				case 906:
				case 907:
				case 908:
				case 909:
				case 910:
				case 911:
				case 912:
				case 913:
				case 914:
				case 915:
				case 916:
				case 917:
				case 918:
				case 919:
				case 920:
				case 921:
				case 922:
				case 923:
				case 924:
				case 925:
				case 926:
				case 927:
				case 928:
				case 929:
				case 930:
				case 931:
				case 932:
				case 933:
				case 934:
				case 935:
				case 936:
				case 937:
				case 938:
				case 939:
				case 940:
				case 941:
				case 942:
				case 943:
				case 944:
				case 945:
				case 946:
				case 947:
				case 948:
				case 949:
				case 950:
				case 951:
				case 952:
				case 953:
				case 954:
				case 955:
				case 956:
				case 957:
				case 958:
				case 959:
				case 960:
				case 961:
				case 962:
				case 963:
				case 964:
				case 965:
				case 966:
				case 967:
				case 968:
				case 969:
				case 970:
				case 971:
				case 972:
				case 973:
				case 974:
				case 975:
				case 976:
				case 977:
				case 978:
				case 979:
				case 980:
				case 981:
				case 982:
				case 983:
				case 984:
				case 985:
				case 986:
				case 987:
				case 988:
				case 989:
				case 990:
				case 991:
				case 992:
				case 993:
				case 1032:
				case 1035:
				case 1043:
				case 1044:
					{
					this.state = 2597;
					this.uidList();
					}
					break;
				case 6:
					{
					this.state = 2598;
					this.match(SqlParser.ALL);
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				}
				break;
			case 42:
				localctx = new AlterByOptimizePartitionContext(this, localctx);
				this.enterOuterAlt(localctx, 42);
				{
				this.state = 2601;
				this.match(SqlParser.OPTIMIZE);
				this.state = 2602;
				this.match(SqlParser.PARTITION);
				this.state = 2605;
				this._errHandler.sync(this);
				switch (this._input.LA(1)) {
				case 32:
				case 35:
				case 44:
				case 87:
				case 105:
				case 133:
				case 151:
				case 199:
				case 200:
				case 201:
				case 202:
				case 203:
				case 216:
				case 219:
				case 221:
				case 233:
				case 234:
				case 239:
				case 262:
				case 270:
				case 271:
				case 272:
				case 273:
				case 274:
				case 275:
				case 276:
				case 277:
				case 278:
				case 279:
				case 280:
				case 281:
				case 282:
				case 283:
				case 284:
				case 285:
				case 286:
				case 287:
				case 288:
				case 289:
				case 290:
				case 291:
				case 292:
				case 293:
				case 294:
				case 295:
				case 296:
				case 297:
				case 298:
				case 299:
				case 300:
				case 301:
				case 302:
				case 303:
				case 304:
				case 305:
				case 306:
				case 307:
				case 308:
				case 309:
				case 310:
				case 311:
				case 312:
				case 313:
				case 314:
				case 315:
				case 316:
				case 317:
				case 318:
				case 319:
				case 320:
				case 321:
				case 322:
				case 323:
				case 324:
				case 325:
				case 326:
				case 327:
				case 328:
				case 329:
				case 330:
				case 331:
				case 332:
				case 333:
				case 334:
				case 335:
				case 336:
				case 337:
				case 338:
				case 339:
				case 340:
				case 341:
				case 342:
				case 343:
				case 344:
				case 345:
				case 346:
				case 347:
				case 348:
				case 349:
				case 350:
				case 351:
				case 352:
				case 353:
				case 354:
				case 355:
				case 356:
				case 357:
				case 358:
				case 359:
				case 360:
				case 361:
				case 362:
				case 363:
				case 364:
				case 365:
				case 366:
				case 367:
				case 368:
				case 369:
				case 370:
				case 371:
				case 372:
				case 373:
				case 374:
				case 375:
				case 376:
				case 377:
				case 378:
				case 379:
				case 380:
				case 381:
				case 382:
				case 383:
				case 384:
				case 385:
				case 386:
				case 387:
				case 388:
				case 389:
				case 390:
				case 391:
				case 392:
				case 393:
				case 394:
				case 395:
				case 396:
				case 397:
				case 398:
				case 399:
				case 400:
				case 401:
				case 402:
				case 403:
				case 404:
				case 405:
				case 406:
				case 407:
				case 408:
				case 409:
				case 410:
				case 411:
				case 412:
				case 413:
				case 414:
				case 415:
				case 416:
				case 417:
				case 418:
				case 419:
				case 420:
				case 421:
				case 422:
				case 423:
				case 424:
				case 425:
				case 426:
				case 427:
				case 428:
				case 429:
				case 430:
				case 431:
				case 432:
				case 433:
				case 434:
				case 435:
				case 436:
				case 437:
				case 438:
				case 439:
				case 440:
				case 441:
				case 442:
				case 443:
				case 444:
				case 445:
				case 446:
				case 447:
				case 448:
				case 449:
				case 450:
				case 451:
				case 452:
				case 453:
				case 454:
				case 455:
				case 456:
				case 457:
				case 458:
				case 459:
				case 460:
				case 461:
				case 462:
				case 463:
				case 464:
				case 465:
				case 466:
				case 467:
				case 468:
				case 469:
				case 470:
				case 471:
				case 472:
				case 473:
				case 474:
				case 475:
				case 476:
				case 477:
				case 478:
				case 479:
				case 480:
				case 481:
				case 482:
				case 483:
				case 484:
				case 485:
				case 486:
				case 487:
				case 488:
				case 489:
				case 490:
				case 491:
				case 492:
				case 493:
				case 494:
				case 495:
				case 496:
				case 497:
				case 498:
				case 499:
				case 500:
				case 501:
				case 502:
				case 503:
				case 504:
				case 505:
				case 506:
				case 507:
				case 508:
				case 509:
				case 510:
				case 511:
				case 512:
				case 513:
				case 514:
				case 515:
				case 516:
				case 517:
				case 518:
				case 519:
				case 520:
				case 521:
				case 522:
				case 523:
				case 524:
				case 525:
				case 526:
				case 527:
				case 528:
				case 529:
				case 530:
				case 531:
				case 532:
				case 533:
				case 534:
				case 535:
				case 536:
				case 537:
				case 538:
				case 539:
				case 540:
				case 541:
				case 542:
				case 543:
				case 544:
				case 545:
				case 547:
				case 548:
				case 549:
				case 550:
				case 551:
				case 552:
				case 553:
				case 554:
				case 555:
				case 556:
				case 557:
				case 558:
				case 559:
				case 560:
				case 561:
				case 562:
				case 563:
				case 564:
				case 565:
				case 566:
				case 567:
				case 568:
				case 569:
				case 570:
				case 571:
				case 572:
				case 573:
				case 574:
				case 575:
				case 576:
				case 577:
				case 578:
				case 580:
				case 581:
				case 582:
				case 583:
				case 584:
				case 585:
				case 586:
				case 587:
				case 588:
				case 593:
				case 594:
				case 595:
				case 596:
				case 597:
				case 598:
				case 599:
				case 600:
				case 601:
				case 602:
				case 603:
				case 604:
				case 605:
				case 606:
				case 607:
				case 608:
				case 609:
				case 610:
				case 612:
				case 613:
				case 614:
				case 615:
				case 616:
				case 617:
				case 618:
				case 619:
				case 620:
				case 621:
				case 622:
				case 623:
				case 624:
				case 625:
				case 626:
				case 627:
				case 628:
				case 629:
				case 630:
				case 631:
				case 632:
				case 633:
				case 634:
				case 635:
				case 636:
				case 637:
				case 638:
				case 639:
				case 640:
				case 641:
				case 642:
				case 643:
				case 644:
				case 645:
				case 646:
				case 647:
				case 648:
				case 649:
				case 650:
				case 651:
				case 652:
				case 653:
				case 654:
				case 655:
				case 656:
				case 657:
				case 658:
				case 659:
				case 660:
				case 661:
				case 662:
				case 663:
				case 664:
				case 665:
				case 666:
				case 667:
				case 668:
				case 669:
				case 670:
				case 671:
				case 672:
				case 673:
				case 674:
				case 675:
				case 676:
				case 677:
				case 678:
				case 679:
				case 680:
				case 681:
				case 682:
				case 683:
				case 684:
				case 685:
				case 686:
				case 687:
				case 688:
				case 689:
				case 690:
				case 691:
				case 692:
				case 693:
				case 696:
				case 697:
				case 698:
				case 699:
				case 700:
				case 701:
				case 702:
				case 703:
				case 704:
				case 705:
				case 706:
				case 707:
				case 708:
				case 709:
				case 710:
				case 711:
				case 712:
				case 713:
				case 714:
				case 715:
				case 716:
				case 717:
				case 718:
				case 719:
				case 720:
				case 721:
				case 722:
				case 723:
				case 724:
				case 725:
				case 726:
				case 727:
				case 728:
				case 729:
				case 730:
				case 731:
				case 732:
				case 733:
				case 734:
				case 735:
				case 736:
				case 737:
				case 738:
				case 739:
				case 740:
				case 741:
				case 742:
				case 743:
				case 744:
				case 745:
				case 746:
				case 747:
				case 748:
				case 749:
				case 750:
				case 751:
				case 752:
				case 753:
				case 754:
				case 755:
				case 756:
				case 757:
				case 758:
				case 759:
				case 760:
				case 761:
				case 762:
				case 763:
				case 764:
				case 765:
				case 766:
				case 767:
				case 768:
				case 769:
				case 770:
				case 771:
				case 772:
				case 773:
				case 774:
				case 775:
				case 776:
				case 777:
				case 778:
				case 779:
				case 780:
				case 781:
				case 782:
				case 783:
				case 784:
				case 785:
				case 786:
				case 787:
				case 788:
				case 789:
				case 790:
				case 791:
				case 792:
				case 793:
				case 794:
				case 795:
				case 796:
				case 797:
				case 798:
				case 799:
				case 800:
				case 801:
				case 802:
				case 803:
				case 804:
				case 805:
				case 806:
				case 807:
				case 808:
				case 809:
				case 810:
				case 811:
				case 812:
				case 813:
				case 814:
				case 815:
				case 816:
				case 817:
				case 818:
				case 819:
				case 820:
				case 821:
				case 822:
				case 823:
				case 824:
				case 825:
				case 826:
				case 827:
				case 828:
				case 829:
				case 830:
				case 831:
				case 832:
				case 833:
				case 834:
				case 835:
				case 836:
				case 837:
				case 838:
				case 839:
				case 840:
				case 841:
				case 842:
				case 843:
				case 844:
				case 845:
				case 846:
				case 847:
				case 848:
				case 849:
				case 850:
				case 851:
				case 852:
				case 853:
				case 854:
				case 855:
				case 856:
				case 857:
				case 858:
				case 859:
				case 860:
				case 861:
				case 862:
				case 863:
				case 864:
				case 865:
				case 866:
				case 867:
				case 868:
				case 869:
				case 870:
				case 871:
				case 872:
				case 873:
				case 874:
				case 875:
				case 876:
				case 877:
				case 878:
				case 879:
				case 880:
				case 881:
				case 882:
				case 883:
				case 884:
				case 885:
				case 886:
				case 887:
				case 888:
				case 889:
				case 890:
				case 891:
				case 892:
				case 893:
				case 894:
				case 895:
				case 896:
				case 897:
				case 898:
				case 899:
				case 900:
				case 901:
				case 902:
				case 903:
				case 904:
				case 905:
				case 906:
				case 907:
				case 908:
				case 909:
				case 910:
				case 911:
				case 912:
				case 913:
				case 914:
				case 915:
				case 916:
				case 917:
				case 918:
				case 919:
				case 920:
				case 921:
				case 922:
				case 923:
				case 924:
				case 925:
				case 926:
				case 927:
				case 928:
				case 929:
				case 930:
				case 931:
				case 932:
				case 933:
				case 934:
				case 935:
				case 936:
				case 937:
				case 938:
				case 939:
				case 940:
				case 941:
				case 942:
				case 943:
				case 944:
				case 945:
				case 946:
				case 947:
				case 948:
				case 949:
				case 950:
				case 951:
				case 952:
				case 953:
				case 954:
				case 955:
				case 956:
				case 957:
				case 958:
				case 959:
				case 960:
				case 961:
				case 962:
				case 963:
				case 964:
				case 965:
				case 966:
				case 967:
				case 968:
				case 969:
				case 970:
				case 971:
				case 972:
				case 973:
				case 974:
				case 975:
				case 976:
				case 977:
				case 978:
				case 979:
				case 980:
				case 981:
				case 982:
				case 983:
				case 984:
				case 985:
				case 986:
				case 987:
				case 988:
				case 989:
				case 990:
				case 991:
				case 992:
				case 993:
				case 1032:
				case 1035:
				case 1043:
				case 1044:
					{
					this.state = 2603;
					this.uidList();
					}
					break;
				case 6:
					{
					this.state = 2604;
					this.match(SqlParser.ALL);
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				}
				break;
			case 43:
				localctx = new AlterByRebuildPartitionContext(this, localctx);
				this.enterOuterAlt(localctx, 43);
				{
				this.state = 2607;
				this.match(SqlParser.REBUILD);
				this.state = 2608;
				this.match(SqlParser.PARTITION);
				this.state = 2611;
				this._errHandler.sync(this);
				switch (this._input.LA(1)) {
				case 32:
				case 35:
				case 44:
				case 87:
				case 105:
				case 133:
				case 151:
				case 199:
				case 200:
				case 201:
				case 202:
				case 203:
				case 216:
				case 219:
				case 221:
				case 233:
				case 234:
				case 239:
				case 262:
				case 270:
				case 271:
				case 272:
				case 273:
				case 274:
				case 275:
				case 276:
				case 277:
				case 278:
				case 279:
				case 280:
				case 281:
				case 282:
				case 283:
				case 284:
				case 285:
				case 286:
				case 287:
				case 288:
				case 289:
				case 290:
				case 291:
				case 292:
				case 293:
				case 294:
				case 295:
				case 296:
				case 297:
				case 298:
				case 299:
				case 300:
				case 301:
				case 302:
				case 303:
				case 304:
				case 305:
				case 306:
				case 307:
				case 308:
				case 309:
				case 310:
				case 311:
				case 312:
				case 313:
				case 314:
				case 315:
				case 316:
				case 317:
				case 318:
				case 319:
				case 320:
				case 321:
				case 322:
				case 323:
				case 324:
				case 325:
				case 326:
				case 327:
				case 328:
				case 329:
				case 330:
				case 331:
				case 332:
				case 333:
				case 334:
				case 335:
				case 336:
				case 337:
				case 338:
				case 339:
				case 340:
				case 341:
				case 342:
				case 343:
				case 344:
				case 345:
				case 346:
				case 347:
				case 348:
				case 349:
				case 350:
				case 351:
				case 352:
				case 353:
				case 354:
				case 355:
				case 356:
				case 357:
				case 358:
				case 359:
				case 360:
				case 361:
				case 362:
				case 363:
				case 364:
				case 365:
				case 366:
				case 367:
				case 368:
				case 369:
				case 370:
				case 371:
				case 372:
				case 373:
				case 374:
				case 375:
				case 376:
				case 377:
				case 378:
				case 379:
				case 380:
				case 381:
				case 382:
				case 383:
				case 384:
				case 385:
				case 386:
				case 387:
				case 388:
				case 389:
				case 390:
				case 391:
				case 392:
				case 393:
				case 394:
				case 395:
				case 396:
				case 397:
				case 398:
				case 399:
				case 400:
				case 401:
				case 402:
				case 403:
				case 404:
				case 405:
				case 406:
				case 407:
				case 408:
				case 409:
				case 410:
				case 411:
				case 412:
				case 413:
				case 414:
				case 415:
				case 416:
				case 417:
				case 418:
				case 419:
				case 420:
				case 421:
				case 422:
				case 423:
				case 424:
				case 425:
				case 426:
				case 427:
				case 428:
				case 429:
				case 430:
				case 431:
				case 432:
				case 433:
				case 434:
				case 435:
				case 436:
				case 437:
				case 438:
				case 439:
				case 440:
				case 441:
				case 442:
				case 443:
				case 444:
				case 445:
				case 446:
				case 447:
				case 448:
				case 449:
				case 450:
				case 451:
				case 452:
				case 453:
				case 454:
				case 455:
				case 456:
				case 457:
				case 458:
				case 459:
				case 460:
				case 461:
				case 462:
				case 463:
				case 464:
				case 465:
				case 466:
				case 467:
				case 468:
				case 469:
				case 470:
				case 471:
				case 472:
				case 473:
				case 474:
				case 475:
				case 476:
				case 477:
				case 478:
				case 479:
				case 480:
				case 481:
				case 482:
				case 483:
				case 484:
				case 485:
				case 486:
				case 487:
				case 488:
				case 489:
				case 490:
				case 491:
				case 492:
				case 493:
				case 494:
				case 495:
				case 496:
				case 497:
				case 498:
				case 499:
				case 500:
				case 501:
				case 502:
				case 503:
				case 504:
				case 505:
				case 506:
				case 507:
				case 508:
				case 509:
				case 510:
				case 511:
				case 512:
				case 513:
				case 514:
				case 515:
				case 516:
				case 517:
				case 518:
				case 519:
				case 520:
				case 521:
				case 522:
				case 523:
				case 524:
				case 525:
				case 526:
				case 527:
				case 528:
				case 529:
				case 530:
				case 531:
				case 532:
				case 533:
				case 534:
				case 535:
				case 536:
				case 537:
				case 538:
				case 539:
				case 540:
				case 541:
				case 542:
				case 543:
				case 544:
				case 545:
				case 547:
				case 548:
				case 549:
				case 550:
				case 551:
				case 552:
				case 553:
				case 554:
				case 555:
				case 556:
				case 557:
				case 558:
				case 559:
				case 560:
				case 561:
				case 562:
				case 563:
				case 564:
				case 565:
				case 566:
				case 567:
				case 568:
				case 569:
				case 570:
				case 571:
				case 572:
				case 573:
				case 574:
				case 575:
				case 576:
				case 577:
				case 578:
				case 580:
				case 581:
				case 582:
				case 583:
				case 584:
				case 585:
				case 586:
				case 587:
				case 588:
				case 593:
				case 594:
				case 595:
				case 596:
				case 597:
				case 598:
				case 599:
				case 600:
				case 601:
				case 602:
				case 603:
				case 604:
				case 605:
				case 606:
				case 607:
				case 608:
				case 609:
				case 610:
				case 612:
				case 613:
				case 614:
				case 615:
				case 616:
				case 617:
				case 618:
				case 619:
				case 620:
				case 621:
				case 622:
				case 623:
				case 624:
				case 625:
				case 626:
				case 627:
				case 628:
				case 629:
				case 630:
				case 631:
				case 632:
				case 633:
				case 634:
				case 635:
				case 636:
				case 637:
				case 638:
				case 639:
				case 640:
				case 641:
				case 642:
				case 643:
				case 644:
				case 645:
				case 646:
				case 647:
				case 648:
				case 649:
				case 650:
				case 651:
				case 652:
				case 653:
				case 654:
				case 655:
				case 656:
				case 657:
				case 658:
				case 659:
				case 660:
				case 661:
				case 662:
				case 663:
				case 664:
				case 665:
				case 666:
				case 667:
				case 668:
				case 669:
				case 670:
				case 671:
				case 672:
				case 673:
				case 674:
				case 675:
				case 676:
				case 677:
				case 678:
				case 679:
				case 680:
				case 681:
				case 682:
				case 683:
				case 684:
				case 685:
				case 686:
				case 687:
				case 688:
				case 689:
				case 690:
				case 691:
				case 692:
				case 693:
				case 696:
				case 697:
				case 698:
				case 699:
				case 700:
				case 701:
				case 702:
				case 703:
				case 704:
				case 705:
				case 706:
				case 707:
				case 708:
				case 709:
				case 710:
				case 711:
				case 712:
				case 713:
				case 714:
				case 715:
				case 716:
				case 717:
				case 718:
				case 719:
				case 720:
				case 721:
				case 722:
				case 723:
				case 724:
				case 725:
				case 726:
				case 727:
				case 728:
				case 729:
				case 730:
				case 731:
				case 732:
				case 733:
				case 734:
				case 735:
				case 736:
				case 737:
				case 738:
				case 739:
				case 740:
				case 741:
				case 742:
				case 743:
				case 744:
				case 745:
				case 746:
				case 747:
				case 748:
				case 749:
				case 750:
				case 751:
				case 752:
				case 753:
				case 754:
				case 755:
				case 756:
				case 757:
				case 758:
				case 759:
				case 760:
				case 761:
				case 762:
				case 763:
				case 764:
				case 765:
				case 766:
				case 767:
				case 768:
				case 769:
				case 770:
				case 771:
				case 772:
				case 773:
				case 774:
				case 775:
				case 776:
				case 777:
				case 778:
				case 779:
				case 780:
				case 781:
				case 782:
				case 783:
				case 784:
				case 785:
				case 786:
				case 787:
				case 788:
				case 789:
				case 790:
				case 791:
				case 792:
				case 793:
				case 794:
				case 795:
				case 796:
				case 797:
				case 798:
				case 799:
				case 800:
				case 801:
				case 802:
				case 803:
				case 804:
				case 805:
				case 806:
				case 807:
				case 808:
				case 809:
				case 810:
				case 811:
				case 812:
				case 813:
				case 814:
				case 815:
				case 816:
				case 817:
				case 818:
				case 819:
				case 820:
				case 821:
				case 822:
				case 823:
				case 824:
				case 825:
				case 826:
				case 827:
				case 828:
				case 829:
				case 830:
				case 831:
				case 832:
				case 833:
				case 834:
				case 835:
				case 836:
				case 837:
				case 838:
				case 839:
				case 840:
				case 841:
				case 842:
				case 843:
				case 844:
				case 845:
				case 846:
				case 847:
				case 848:
				case 849:
				case 850:
				case 851:
				case 852:
				case 853:
				case 854:
				case 855:
				case 856:
				case 857:
				case 858:
				case 859:
				case 860:
				case 861:
				case 862:
				case 863:
				case 864:
				case 865:
				case 866:
				case 867:
				case 868:
				case 869:
				case 870:
				case 871:
				case 872:
				case 873:
				case 874:
				case 875:
				case 876:
				case 877:
				case 878:
				case 879:
				case 880:
				case 881:
				case 882:
				case 883:
				case 884:
				case 885:
				case 886:
				case 887:
				case 888:
				case 889:
				case 890:
				case 891:
				case 892:
				case 893:
				case 894:
				case 895:
				case 896:
				case 897:
				case 898:
				case 899:
				case 900:
				case 901:
				case 902:
				case 903:
				case 904:
				case 905:
				case 906:
				case 907:
				case 908:
				case 909:
				case 910:
				case 911:
				case 912:
				case 913:
				case 914:
				case 915:
				case 916:
				case 917:
				case 918:
				case 919:
				case 920:
				case 921:
				case 922:
				case 923:
				case 924:
				case 925:
				case 926:
				case 927:
				case 928:
				case 929:
				case 930:
				case 931:
				case 932:
				case 933:
				case 934:
				case 935:
				case 936:
				case 937:
				case 938:
				case 939:
				case 940:
				case 941:
				case 942:
				case 943:
				case 944:
				case 945:
				case 946:
				case 947:
				case 948:
				case 949:
				case 950:
				case 951:
				case 952:
				case 953:
				case 954:
				case 955:
				case 956:
				case 957:
				case 958:
				case 959:
				case 960:
				case 961:
				case 962:
				case 963:
				case 964:
				case 965:
				case 966:
				case 967:
				case 968:
				case 969:
				case 970:
				case 971:
				case 972:
				case 973:
				case 974:
				case 975:
				case 976:
				case 977:
				case 978:
				case 979:
				case 980:
				case 981:
				case 982:
				case 983:
				case 984:
				case 985:
				case 986:
				case 987:
				case 988:
				case 989:
				case 990:
				case 991:
				case 992:
				case 993:
				case 1032:
				case 1035:
				case 1043:
				case 1044:
					{
					this.state = 2609;
					this.uidList();
					}
					break;
				case 6:
					{
					this.state = 2610;
					this.match(SqlParser.ALL);
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				}
				break;
			case 44:
				localctx = new AlterByRepairPartitionContext(this, localctx);
				this.enterOuterAlt(localctx, 44);
				{
				this.state = 2613;
				this.match(SqlParser.REPAIR);
				this.state = 2614;
				this.match(SqlParser.PARTITION);
				this.state = 2617;
				this._errHandler.sync(this);
				switch (this._input.LA(1)) {
				case 32:
				case 35:
				case 44:
				case 87:
				case 105:
				case 133:
				case 151:
				case 199:
				case 200:
				case 201:
				case 202:
				case 203:
				case 216:
				case 219:
				case 221:
				case 233:
				case 234:
				case 239:
				case 262:
				case 270:
				case 271:
				case 272:
				case 273:
				case 274:
				case 275:
				case 276:
				case 277:
				case 278:
				case 279:
				case 280:
				case 281:
				case 282:
				case 283:
				case 284:
				case 285:
				case 286:
				case 287:
				case 288:
				case 289:
				case 290:
				case 291:
				case 292:
				case 293:
				case 294:
				case 295:
				case 296:
				case 297:
				case 298:
				case 299:
				case 300:
				case 301:
				case 302:
				case 303:
				case 304:
				case 305:
				case 306:
				case 307:
				case 308:
				case 309:
				case 310:
				case 311:
				case 312:
				case 313:
				case 314:
				case 315:
				case 316:
				case 317:
				case 318:
				case 319:
				case 320:
				case 321:
				case 322:
				case 323:
				case 324:
				case 325:
				case 326:
				case 327:
				case 328:
				case 329:
				case 330:
				case 331:
				case 332:
				case 333:
				case 334:
				case 335:
				case 336:
				case 337:
				case 338:
				case 339:
				case 340:
				case 341:
				case 342:
				case 343:
				case 344:
				case 345:
				case 346:
				case 347:
				case 348:
				case 349:
				case 350:
				case 351:
				case 352:
				case 353:
				case 354:
				case 355:
				case 356:
				case 357:
				case 358:
				case 359:
				case 360:
				case 361:
				case 362:
				case 363:
				case 364:
				case 365:
				case 366:
				case 367:
				case 368:
				case 369:
				case 370:
				case 371:
				case 372:
				case 373:
				case 374:
				case 375:
				case 376:
				case 377:
				case 378:
				case 379:
				case 380:
				case 381:
				case 382:
				case 383:
				case 384:
				case 385:
				case 386:
				case 387:
				case 388:
				case 389:
				case 390:
				case 391:
				case 392:
				case 393:
				case 394:
				case 395:
				case 396:
				case 397:
				case 398:
				case 399:
				case 400:
				case 401:
				case 402:
				case 403:
				case 404:
				case 405:
				case 406:
				case 407:
				case 408:
				case 409:
				case 410:
				case 411:
				case 412:
				case 413:
				case 414:
				case 415:
				case 416:
				case 417:
				case 418:
				case 419:
				case 420:
				case 421:
				case 422:
				case 423:
				case 424:
				case 425:
				case 426:
				case 427:
				case 428:
				case 429:
				case 430:
				case 431:
				case 432:
				case 433:
				case 434:
				case 435:
				case 436:
				case 437:
				case 438:
				case 439:
				case 440:
				case 441:
				case 442:
				case 443:
				case 444:
				case 445:
				case 446:
				case 447:
				case 448:
				case 449:
				case 450:
				case 451:
				case 452:
				case 453:
				case 454:
				case 455:
				case 456:
				case 457:
				case 458:
				case 459:
				case 460:
				case 461:
				case 462:
				case 463:
				case 464:
				case 465:
				case 466:
				case 467:
				case 468:
				case 469:
				case 470:
				case 471:
				case 472:
				case 473:
				case 474:
				case 475:
				case 476:
				case 477:
				case 478:
				case 479:
				case 480:
				case 481:
				case 482:
				case 483:
				case 484:
				case 485:
				case 486:
				case 487:
				case 488:
				case 489:
				case 490:
				case 491:
				case 492:
				case 493:
				case 494:
				case 495:
				case 496:
				case 497:
				case 498:
				case 499:
				case 500:
				case 501:
				case 502:
				case 503:
				case 504:
				case 505:
				case 506:
				case 507:
				case 508:
				case 509:
				case 510:
				case 511:
				case 512:
				case 513:
				case 514:
				case 515:
				case 516:
				case 517:
				case 518:
				case 519:
				case 520:
				case 521:
				case 522:
				case 523:
				case 524:
				case 525:
				case 526:
				case 527:
				case 528:
				case 529:
				case 530:
				case 531:
				case 532:
				case 533:
				case 534:
				case 535:
				case 536:
				case 537:
				case 538:
				case 539:
				case 540:
				case 541:
				case 542:
				case 543:
				case 544:
				case 545:
				case 547:
				case 548:
				case 549:
				case 550:
				case 551:
				case 552:
				case 553:
				case 554:
				case 555:
				case 556:
				case 557:
				case 558:
				case 559:
				case 560:
				case 561:
				case 562:
				case 563:
				case 564:
				case 565:
				case 566:
				case 567:
				case 568:
				case 569:
				case 570:
				case 571:
				case 572:
				case 573:
				case 574:
				case 575:
				case 576:
				case 577:
				case 578:
				case 580:
				case 581:
				case 582:
				case 583:
				case 584:
				case 585:
				case 586:
				case 587:
				case 588:
				case 593:
				case 594:
				case 595:
				case 596:
				case 597:
				case 598:
				case 599:
				case 600:
				case 601:
				case 602:
				case 603:
				case 604:
				case 605:
				case 606:
				case 607:
				case 608:
				case 609:
				case 610:
				case 612:
				case 613:
				case 614:
				case 615:
				case 616:
				case 617:
				case 618:
				case 619:
				case 620:
				case 621:
				case 622:
				case 623:
				case 624:
				case 625:
				case 626:
				case 627:
				case 628:
				case 629:
				case 630:
				case 631:
				case 632:
				case 633:
				case 634:
				case 635:
				case 636:
				case 637:
				case 638:
				case 639:
				case 640:
				case 641:
				case 642:
				case 643:
				case 644:
				case 645:
				case 646:
				case 647:
				case 648:
				case 649:
				case 650:
				case 651:
				case 652:
				case 653:
				case 654:
				case 655:
				case 656:
				case 657:
				case 658:
				case 659:
				case 660:
				case 661:
				case 662:
				case 663:
				case 664:
				case 665:
				case 666:
				case 667:
				case 668:
				case 669:
				case 670:
				case 671:
				case 672:
				case 673:
				case 674:
				case 675:
				case 676:
				case 677:
				case 678:
				case 679:
				case 680:
				case 681:
				case 682:
				case 683:
				case 684:
				case 685:
				case 686:
				case 687:
				case 688:
				case 689:
				case 690:
				case 691:
				case 692:
				case 693:
				case 696:
				case 697:
				case 698:
				case 699:
				case 700:
				case 701:
				case 702:
				case 703:
				case 704:
				case 705:
				case 706:
				case 707:
				case 708:
				case 709:
				case 710:
				case 711:
				case 712:
				case 713:
				case 714:
				case 715:
				case 716:
				case 717:
				case 718:
				case 719:
				case 720:
				case 721:
				case 722:
				case 723:
				case 724:
				case 725:
				case 726:
				case 727:
				case 728:
				case 729:
				case 730:
				case 731:
				case 732:
				case 733:
				case 734:
				case 735:
				case 736:
				case 737:
				case 738:
				case 739:
				case 740:
				case 741:
				case 742:
				case 743:
				case 744:
				case 745:
				case 746:
				case 747:
				case 748:
				case 749:
				case 750:
				case 751:
				case 752:
				case 753:
				case 754:
				case 755:
				case 756:
				case 757:
				case 758:
				case 759:
				case 760:
				case 761:
				case 762:
				case 763:
				case 764:
				case 765:
				case 766:
				case 767:
				case 768:
				case 769:
				case 770:
				case 771:
				case 772:
				case 773:
				case 774:
				case 775:
				case 776:
				case 777:
				case 778:
				case 779:
				case 780:
				case 781:
				case 782:
				case 783:
				case 784:
				case 785:
				case 786:
				case 787:
				case 788:
				case 789:
				case 790:
				case 791:
				case 792:
				case 793:
				case 794:
				case 795:
				case 796:
				case 797:
				case 798:
				case 799:
				case 800:
				case 801:
				case 802:
				case 803:
				case 804:
				case 805:
				case 806:
				case 807:
				case 808:
				case 809:
				case 810:
				case 811:
				case 812:
				case 813:
				case 814:
				case 815:
				case 816:
				case 817:
				case 818:
				case 819:
				case 820:
				case 821:
				case 822:
				case 823:
				case 824:
				case 825:
				case 826:
				case 827:
				case 828:
				case 829:
				case 830:
				case 831:
				case 832:
				case 833:
				case 834:
				case 835:
				case 836:
				case 837:
				case 838:
				case 839:
				case 840:
				case 841:
				case 842:
				case 843:
				case 844:
				case 845:
				case 846:
				case 847:
				case 848:
				case 849:
				case 850:
				case 851:
				case 852:
				case 853:
				case 854:
				case 855:
				case 856:
				case 857:
				case 858:
				case 859:
				case 860:
				case 861:
				case 862:
				case 863:
				case 864:
				case 865:
				case 866:
				case 867:
				case 868:
				case 869:
				case 870:
				case 871:
				case 872:
				case 873:
				case 874:
				case 875:
				case 876:
				case 877:
				case 878:
				case 879:
				case 880:
				case 881:
				case 882:
				case 883:
				case 884:
				case 885:
				case 886:
				case 887:
				case 888:
				case 889:
				case 890:
				case 891:
				case 892:
				case 893:
				case 894:
				case 895:
				case 896:
				case 897:
				case 898:
				case 899:
				case 900:
				case 901:
				case 902:
				case 903:
				case 904:
				case 905:
				case 906:
				case 907:
				case 908:
				case 909:
				case 910:
				case 911:
				case 912:
				case 913:
				case 914:
				case 915:
				case 916:
				case 917:
				case 918:
				case 919:
				case 920:
				case 921:
				case 922:
				case 923:
				case 924:
				case 925:
				case 926:
				case 927:
				case 928:
				case 929:
				case 930:
				case 931:
				case 932:
				case 933:
				case 934:
				case 935:
				case 936:
				case 937:
				case 938:
				case 939:
				case 940:
				case 941:
				case 942:
				case 943:
				case 944:
				case 945:
				case 946:
				case 947:
				case 948:
				case 949:
				case 950:
				case 951:
				case 952:
				case 953:
				case 954:
				case 955:
				case 956:
				case 957:
				case 958:
				case 959:
				case 960:
				case 961:
				case 962:
				case 963:
				case 964:
				case 965:
				case 966:
				case 967:
				case 968:
				case 969:
				case 970:
				case 971:
				case 972:
				case 973:
				case 974:
				case 975:
				case 976:
				case 977:
				case 978:
				case 979:
				case 980:
				case 981:
				case 982:
				case 983:
				case 984:
				case 985:
				case 986:
				case 987:
				case 988:
				case 989:
				case 990:
				case 991:
				case 992:
				case 993:
				case 1032:
				case 1035:
				case 1043:
				case 1044:
					{
					this.state = 2615;
					this.uidList();
					}
					break;
				case 6:
					{
					this.state = 2616;
					this.match(SqlParser.ALL);
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				}
				break;
			case 45:
				localctx = new AlterByRemovePartitioningContext(this, localctx);
				this.enterOuterAlt(localctx, 45);
				{
				this.state = 2619;
				this.match(SqlParser.REMOVE);
				this.state = 2620;
				this.match(SqlParser.PARTITIONING);
				}
				break;
			case 46:
				localctx = new AlterByUpgradePartitioningContext(this, localctx);
				this.enterOuterAlt(localctx, 46);
				{
				this.state = 2621;
				this.match(SqlParser.UPGRADE);
				this.state = 2622;
				this.match(SqlParser.PARTITIONING);
				}
				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 dropDatabase(): DropDatabaseContext {
		let localctx: DropDatabaseContext = new DropDatabaseContext(this, this._ctx, this.state);
		this.enterRule(localctx, 136, SqlParser.RULE_dropDatabase);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 2625;
			this.match(SqlParser.DROP);
			this.state = 2626;
			localctx._dbFormat = this._input.LT(1);
			_la = this._input.LA(1);
			if(!(_la===35 || _la===135)) {
			    localctx._dbFormat = this._errHandler.recoverInline(this);
			}
			else {
				this._errHandler.reportMatch(this);
			    this.consume();
			}
			this.state = 2628;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===69) {
				{
				this.state = 2627;
				this.ifExists();
				}
			}

			this.state = 2630;
			this.uid();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public dropEvent(): DropEventContext {
		let localctx: DropEventContext = new DropEventContext(this, this._ctx, this.state);
		this.enterRule(localctx, 138, SqlParser.RULE_dropEvent);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 2632;
			this.match(SqlParser.DROP);
			this.state = 2633;
			this.match(SqlParser.EVENT);
			this.state = 2635;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===69) {
				{
				this.state = 2634;
				this.ifExists();
				}
			}

			this.state = 2637;
			this.fullId();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public dropIndex(): DropIndexContext {
		let localctx: DropIndexContext = new DropIndexContext(this, this._ctx, this.state);
		this.enterRule(localctx, 140, SqlParser.RULE_dropIndex);
		let _la: number;
		try {
			let _alt: number;
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 2639;
			this.match(SqlParser.DROP);
			this.state = 2640;
			this.match(SqlParser.INDEX);
			this.state = 2642;
			this._errHandler.sync(this);
			switch ( this._interp.adaptivePredict(this._input, 336, this._ctx) ) {
			case 1:
				{
				this.state = 2641;
				localctx._intimeAction = this._input.LT(1);
				_la = this._input.LA(1);
				if(!(_la===451 || _la===456)) {
				    localctx._intimeAction = this._errHandler.recoverInline(this);
				}
				else {
					this._errHandler.reportMatch(this);
				    this.consume();
				}
				}
				break;
			}
			this.state = 2644;
			this.uid();
			this.state = 2645;
			this.match(SqlParser.ON);
			this.state = 2646;
			this.tableName();
			this.state = 2659;
			this._errHandler.sync(this);
			_alt = this._interp.adaptivePredict(this._input, 340, this._ctx);
			while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) {
				if (_alt === 1) {
					{
					this.state = 2657;
					this._errHandler.sync(this);
					switch (this._input.LA(1)) {
					case 274:
						{
						this.state = 2647;
						this.match(SqlParser.ALGORITHM);
						this.state = 2649;
						this._errHandler.sync(this);
						_la = this._input.LA(1);
						if (_la===1011) {
							{
							this.state = 2648;
							this.match(SqlParser.EQUAL_SYMBOL);
							}
						}

						this.state = 2651;
						localctx._algType = this._input.LT(1);
						_la = this._input.LA(1);
						if(!(_la===38 || _la===320 || _la===383)) {
						    localctx._algType = this._errHandler.recoverInline(this);
						}
						else {
							this._errHandler.reportMatch(this);
						    this.consume();
						}
						}
						break;
					case 93:
						{
						this.state = 2652;
						this.match(SqlParser.LOCK);
						this.state = 2654;
						this._errHandler.sync(this);
						_la = this._input.LA(1);
						if (_la===1011) {
							{
							this.state = 2653;
							this.match(SqlParser.EQUAL_SYMBOL);
							}
						}

						this.state = 2656;
						localctx._lockType = this._input.LT(1);
						_la = this._input.LA(1);
						if(!(_la===38 || _la===352 || _la===450 || _la===520)) {
						    localctx._lockType = this._errHandler.recoverInline(this);
						}
						else {
							this._errHandler.reportMatch(this);
						    this.consume();
						}
						}
						break;
					default:
						throw new NoViableAltException(this);
					}
					}
				}
				this.state = 2661;
				this._errHandler.sync(this);
				_alt = this._interp.adaptivePredict(this._input, 340, 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 dropLogfileGroup(): DropLogfileGroupContext {
		let localctx: DropLogfileGroupContext = new DropLogfileGroupContext(this, this._ctx, this.state);
		this.enterRule(localctx, 142, SqlParser.RULE_dropLogfileGroup);
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 2662;
			this.match(SqlParser.DROP);
			this.state = 2663;
			this.match(SqlParser.LOGFILE);
			this.state = 2664;
			this.match(SqlParser.GROUP);
			this.state = 2665;
			this.uid();
			this.state = 2666;
			this.match(SqlParser.ENGINE);
			this.state = 2667;
			this.match(SqlParser.EQUAL_SYMBOL);
			this.state = 2668;
			this.engineName();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public dropProcedure(): DropProcedureContext {
		let localctx: DropProcedureContext = new DropProcedureContext(this, this._ctx, this.state);
		this.enterRule(localctx, 144, SqlParser.RULE_dropProcedure);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 2670;
			this.match(SqlParser.DROP);
			this.state = 2671;
			this.match(SqlParser.PROCEDURE);
			this.state = 2673;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===69) {
				{
				this.state = 2672;
				this.ifExists();
				}
			}

			this.state = 2675;
			this.fullId();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public dropFunction(): DropFunctionContext {
		let localctx: DropFunctionContext = new DropFunctionContext(this, this._ctx, this.state);
		this.enterRule(localctx, 146, SqlParser.RULE_dropFunction);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 2677;
			this.match(SqlParser.DROP);
			this.state = 2678;
			this.match(SqlParser.FUNCTION);
			this.state = 2680;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===69) {
				{
				this.state = 2679;
				this.ifExists();
				}
			}

			this.state = 2682;
			this.fullId();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public dropServer(): DropServerContext {
		let localctx: DropServerContext = new DropServerContext(this, this._ctx, this.state);
		this.enterRule(localctx, 148, SqlParser.RULE_dropServer);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 2684;
			this.match(SqlParser.DROP);
			this.state = 2685;
			this.match(SqlParser.SERVER);
			this.state = 2687;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===69) {
				{
				this.state = 2686;
				this.ifExists();
				}
			}

			this.state = 2689;
			this.uid();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public dropTable(): DropTableContext {
		let localctx: DropTableContext = new DropTableContext(this, this._ctx, this.state);
		this.enterRule(localctx, 150, SqlParser.RULE_dropTable);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 2691;
			this.match(SqlParser.DROP);
			this.state = 2693;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===557) {
				{
				this.state = 2692;
				this.match(SqlParser.TEMPORARY);
				}
			}

			this.state = 2695;
			this.match(SqlParser.TABLE);
			this.state = 2697;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===69) {
				{
				this.state = 2696;
				this.ifExists();
				}
			}

			this.state = 2699;
			this.tables();
			this.state = 2701;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===18 || _la===130) {
				{
				this.state = 2700;
				localctx._dropType = this._input.LT(1);
				_la = this._input.LA(1);
				if(!(_la===18 || _la===130)) {
				    localctx._dropType = this._errHandler.recoverInline(this);
				}
				else {
					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 dropTablespace(): DropTablespaceContext {
		let localctx: DropTablespaceContext = new DropTablespaceContext(this, this._ctx, this.state);
		this.enterRule(localctx, 152, SqlParser.RULE_dropTablespace);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 2703;
			this.match(SqlParser.DROP);
			this.state = 2704;
			this.match(SqlParser.TABLESPACE);
			this.state = 2705;
			this.uid();
			this.state = 2711;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===342) {
				{
				this.state = 2706;
				this.match(SqlParser.ENGINE);
				this.state = 2708;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===1011) {
					{
					this.state = 2707;
					this.match(SqlParser.EQUAL_SYMBOL);
					}
				}

				this.state = 2710;
				this.engineName();
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public dropTrigger(): DropTriggerContext {
		let localctx: DropTriggerContext = new DropTriggerContext(this, this._ctx, this.state);
		this.enterRule(localctx, 154, SqlParser.RULE_dropTrigger);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 2713;
			this.match(SqlParser.DROP);
			this.state = 2714;
			this.match(SqlParser.TRIGGER);
			this.state = 2716;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===69) {
				{
				this.state = 2715;
				this.ifExists();
				}
			}

			this.state = 2718;
			this.fullId();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public dropView(): DropViewContext {
		let localctx: DropViewContext = new DropViewContext(this, this._ctx, this.state);
		this.enterRule(localctx, 156, SqlParser.RULE_dropView);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 2720;
			this.match(SqlParser.DROP);
			this.state = 2721;
			this.match(SqlParser.VIEW);
			this.state = 2723;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===69) {
				{
				this.state = 2722;
				this.ifExists();
				}
			}

			this.state = 2725;
			this.fullId();
			this.state = 2730;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la===1022) {
				{
				{
				this.state = 2726;
				this.match(SqlParser.COMMA);
				this.state = 2727;
				this.fullId();
				}
				}
				this.state = 2732;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			}
			this.state = 2734;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===18 || _la===130) {
				{
				this.state = 2733;
				localctx._dropType = this._input.LT(1);
				_la = this._input.LA(1);
				if(!(_la===18 || _la===130)) {
				    localctx._dropType = this._errHandler.recoverInline(this);
				}
				else {
					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 renameTable(): RenameTableContext {
		let localctx: RenameTableContext = new RenameTableContext(this, this._ctx, this.state);
		this.enterRule(localctx, 158, SqlParser.RULE_renameTable);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 2736;
			this.match(SqlParser.RENAME);
			this.state = 2737;
			this.match(SqlParser.TABLE);
			this.state = 2738;
			this.renameTableClause();
			this.state = 2743;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la===1022) {
				{
				{
				this.state = 2739;
				this.match(SqlParser.COMMA);
				this.state = 2740;
				this.renameTableClause();
				}
				}
				this.state = 2745;
				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 renameTableClause(): RenameTableClauseContext {
		let localctx: RenameTableClauseContext = new RenameTableClauseContext(this, this._ctx, this.state);
		this.enterRule(localctx, 160, SqlParser.RULE_renameTableClause);
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 2746;
			this.tableName();
			this.state = 2747;
			this.match(SqlParser.TO);
			this.state = 2748;
			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 truncateTable(): TruncateTableContext {
		let localctx: TruncateTableContext = new TruncateTableContext(this, this._ctx, this.state);
		this.enterRule(localctx, 162, SqlParser.RULE_truncateTable);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 2750;
			this.match(SqlParser.TRUNCATE);
			this.state = 2752;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===154) {
				{
				this.state = 2751;
				this.match(SqlParser.TABLE);
				}
			}

			this.state = 2754;
			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 callStatement(): CallStatementContext {
		let localctx: CallStatementContext = new CallStatementContext(this, this._ctx, this.state);
		this.enterRule(localctx, 164, SqlParser.RULE_callStatement);
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 2756;
			this.match(SqlParser.CALL);
			this.state = 2757;
			this.fullId();
			this.state = 2764;
			this._errHandler.sync(this);
			switch ( this._interp.adaptivePredict(this._input, 356, this._ctx) ) {
			case 1:
				{
				this.state = 2758;
				this.match(SqlParser.LR_BRACKET);
				this.state = 2761;
				this._errHandler.sync(this);
				switch ( this._interp.adaptivePredict(this._input, 355, this._ctx) ) {
				case 1:
					{
					this.state = 2759;
					this.constants();
					}
					break;
				case 2:
					{
					this.state = 2760;
					this.expressions();
					}
					break;
				}
				this.state = 2763;
				this.match(SqlParser.RR_BRACKET);
				}
				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, this._ctx, this.state);
		this.enterRule(localctx, 166, SqlParser.RULE_deleteStatement);
		try {
			this.state = 2768;
			this._errHandler.sync(this);
			switch ( this._interp.adaptivePredict(this._input, 357, this._ctx) ) {
			case 1:
				this.enterOuterAlt(localctx, 1);
				{
				this.state = 2766;
				this.singleDeleteStatement();
				}
				break;
			case 2:
				this.enterOuterAlt(localctx, 2);
				{
				this.state = 2767;
				this.multipleDeleteStatement();
				}
				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 doStatement(): DoStatementContext {
		let localctx: DoStatementContext = new DoStatementContext(this, this._ctx, this.state);
		this.enterRule(localctx, 168, SqlParser.RULE_doStatement);
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 2770;
			this.match(SqlParser.DO);
			this.state = 2771;
			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 handlerStatement(): HandlerStatementContext {
		let localctx: HandlerStatementContext = new HandlerStatementContext(this, this._ctx, this.state);
		this.enterRule(localctx, 170, SqlParser.RULE_handlerStatement);
		try {
			this.state = 2777;
			this._errHandler.sync(this);
			switch ( this._interp.adaptivePredict(this._input, 358, this._ctx) ) {
			case 1:
				this.enterOuterAlt(localctx, 1);
				{
				this.state = 2773;
				this.handlerOpenStatement();
				}
				break;
			case 2:
				this.enterOuterAlt(localctx, 2);
				{
				this.state = 2774;
				this.handlerReadIndexStatement();
				}
				break;
			case 3:
				this.enterOuterAlt(localctx, 3);
				{
				this.state = 2775;
				this.handlerReadStatement();
				}
				break;
			case 4:
				this.enterOuterAlt(localctx, 4);
				{
				this.state = 2776;
				this.handlerCloseStatement();
				}
				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 insertStatement(): InsertStatementContext {
		let localctx: InsertStatementContext = new InsertStatementContext(this, this._ctx, this.state);
		this.enterRule(localctx, 172, SqlParser.RULE_insertStatement);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 2779;
			this.match(SqlParser.INSERT);
			this.state = 2781;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===39 || _la===68 || _la===95) {
				{
				this.state = 2780;
				localctx._priority = this._input.LT(1);
				_la = this._input.LA(1);
				if(!(_la===39 || _la===68 || _la===95)) {
				    localctx._priority = this._errHandler.recoverInline(this);
				}
				else {
					this._errHandler.reportMatch(this);
				    this.consume();
				}
				}
			}

			this.state = 2784;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===70) {
				{
				this.state = 2783;
				this.match(SqlParser.IGNORE);
				}
			}

			this.state = 2787;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===78) {
				{
				this.state = 2786;
				this.match(SqlParser.INTO);
				}
			}

			this.state = 2789;
			this.tableName();
			this.state = 2796;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===115) {
				{
				this.state = 2790;
				this.match(SqlParser.PARTITION);
				this.state = 2791;
				this.match(SqlParser.LR_BRACKET);
				this.state = 2793;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (((((_la - 32)) & ~0x1F) === 0 && ((1 << (_la - 32)) & 4105) !== 0) || _la===87 || _la===105 || _la===133 || _la===151 || ((((_la - 199)) & ~0x1F) === 0 && ((1 << (_la - 199)) & 5373983) !== 0) || ((((_la - 233)) & ~0x1F) === 0 && ((1 << (_la - 233)) & 536870979) !== 0) || ((((_la - 270)) & ~0x1F) === 0 && ((1 << (_la - 270)) & 4294967295) !== 0) || ((((_la - 302)) & ~0x1F) === 0 && ((1 << (_la - 302)) & 4294967295) !== 0) || ((((_la - 334)) & ~0x1F) === 0 && ((1 << (_la - 334)) & 4294967295) !== 0) || ((((_la - 366)) & ~0x1F) === 0 && ((1 << (_la - 366)) & 4294967295) !== 0) || ((((_la - 398)) & ~0x1F) === 0 && ((1 << (_la - 398)) & 4294967295) !== 0) || ((((_la - 430)) & ~0x1F) === 0 && ((1 << (_la - 430)) & 4294967295) !== 0) || ((((_la - 462)) & ~0x1F) === 0 && ((1 << (_la - 462)) & 4294967295) !== 0) || ((((_la - 494)) & ~0x1F) === 0 && ((1 << (_la - 494)) & 4294967295) !== 0) || ((((_la - 526)) & ~0x1F) === 0 && ((1 << (_la - 526)) & 4293918719) !== 0) || ((((_la - 558)) & ~0x1F) === 0 && ((1 << (_la - 558)) & 2145386495) !== 0) || ((((_la - 593)) & ~0x1F) === 0 && ((1 << (_la - 593)) & 4294705151) !== 0) || ((((_la - 625)) & ~0x1F) === 0 && ((1 << (_la - 625)) & 4294967295) !== 0) || ((((_la - 657)) & ~0x1F) === 0 && ((1 << (_la - 657)) & 4294967295) !== 0) || ((((_la - 689)) & ~0x1F) === 0 && ((1 << (_la - 689)) & 4294967199) !== 0) || ((((_la - 721)) & ~0x1F) === 0 && ((1 << (_la - 721)) & 4294967295) !== 0) || ((((_la - 753)) & ~0x1F) === 0 && ((1 << (_la - 753)) & 4294967295) !== 0) || ((((_la - 785)) & ~0x1F) === 0 && ((1 << (_la - 785)) & 4294967295) !== 0) || ((((_la - 817)) & ~0x1F) === 0 && ((1 << (_la - 817)) & 4294967295) !== 0) || ((((_la - 849)) & ~0x1F) === 0 && ((1 << (_la - 849)) & 4294967295) !== 0) || ((((_la - 881)) & ~0x1F) === 0 && ((1 << (_la - 881)) & 4294967295) !== 0) || ((((_la - 913)) & ~0x1F) === 0 && ((1 << (_la - 913)) & 4294967295) !== 0) || ((((_la - 945)) & ~0x1F) === 0 && ((1 << (_la - 945)) & 4294967295) !== 0) || ((((_la - 977)) & ~0x1F) === 0 && ((1 << (_la - 977)) & 131071) !== 0) || ((((_la - 1032)) & ~0x1F) === 0 && ((1 << (_la - 1032)) & 6153) !== 0)) {
					{
					this.state = 2792;
					localctx._partitions = this.uidList();
					}
				}

				this.state = 2795;
				this.match(SqlParser.RR_BRACKET);
				}
			}

			this.state = 2814;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case 137:
			case 170:
			case 576:
			case 1020:
				{
				this.state = 2802;
				this._errHandler.sync(this);
				switch ( this._interp.adaptivePredict(this._input, 364, this._ctx) ) {
				case 1:
					{
					this.state = 2798;
					this.match(SqlParser.LR_BRACKET);
					this.state = 2799;
					localctx._columns = this.uidList();
					this.state = 2800;
					this.match(SqlParser.RR_BRACKET);
					}
					break;
				}
				this.state = 2804;
				this.insertStatementValue();
				}
				break;
			case 138:
				{
				this.state = 2805;
				this.match(SqlParser.SET);
				this.state = 2806;
				localctx._setFirst = this.updatedElement();
				this.state = 2811;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				while (_la===1022) {
					{
					{
					this.state = 2807;
					this.match(SqlParser.COMMA);
					this.state = 2808;
					localctx._updatedElement = this.updatedElement();
					localctx._setElements.push(localctx._updatedElement);
					}
					}
					this.state = 2813;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
				}
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			this.state = 2828;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===106) {
				{
				this.state = 2816;
				this.match(SqlParser.ON);
				this.state = 2817;
				this.match(SqlParser.DUPLICATE);
				this.state = 2818;
				this.match(SqlParser.KEY);
				this.state = 2819;
				this.match(SqlParser.UPDATE);
				this.state = 2820;
				localctx._duplicatedFirst = this.updatedElement();
				this.state = 2825;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				while (_la===1022) {
					{
					{
					this.state = 2821;
					this.match(SqlParser.COMMA);
					this.state = 2822;
					localctx._updatedElement = this.updatedElement();
					localctx._duplicatedElements.push(localctx._updatedElement);
					}
					}
					this.state = 2827;
					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 loadDataStatement(): LoadDataStatementContext {
		let localctx: LoadDataStatementContext = new LoadDataStatementContext(this, this._ctx, this.state);
		this.enterRule(localctx, 174, SqlParser.RULE_loadDataStatement);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 2830;
			this.match(SqlParser.LOAD);
			this.state = 2831;
			this.match(SqlParser.DATA);
			this.state = 2833;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===95 || _la===311) {
				{
				this.state = 2832;
				localctx._priority = this._input.LT(1);
				_la = this._input.LA(1);
				if(!(_la===95 || _la===311)) {
				    localctx._priority = this._errHandler.recoverInline(this);
				}
				else {
					this._errHandler.reportMatch(this);
				    this.consume();
				}
				}
			}

			this.state = 2836;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===402) {
				{
				this.state = 2835;
				this.match(SqlParser.LOCAL);
				}
			}

			this.state = 2838;
			this.match(SqlParser.INFILE);
			this.state = 2839;
			localctx._filename = this.match(SqlParser.STRING_LITERAL);
			this.state = 2841;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===70 || _la===127) {
				{
				this.state = 2840;
				localctx._violation = this._input.LT(1);
				_la = this._input.LA(1);
				if(!(_la===70 || _la===127)) {
				    localctx._violation = this._errHandler.recoverInline(this);
				}
				else {
					this._errHandler.reportMatch(this);
				    this.consume();
				}
				}
			}

			this.state = 2843;
			this.match(SqlParser.INTO);
			this.state = 2844;
			this.match(SqlParser.TABLE);
			this.state = 2845;
			this.tableName();
			this.state = 2851;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===115) {
				{
				this.state = 2846;
				this.match(SqlParser.PARTITION);
				this.state = 2847;
				this.match(SqlParser.LR_BRACKET);
				this.state = 2848;
				this.uidList();
				this.state = 2849;
				this.match(SqlParser.RR_BRACKET);
				}
			}

			this.state = 2856;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===22) {
				{
				this.state = 2853;
				this.match(SqlParser.CHARACTER);
				this.state = 2854;
				this.match(SqlParser.SET);
				this.state = 2855;
				localctx._charset = this.charsetName();
				}
			}

			this.state = 2864;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===302 || _la===359) {
				{
				this.state = 2858;
				localctx._fieldsFormat = this._input.LT(1);
				_la = this._input.LA(1);
				if(!(_la===302 || _la===359)) {
				    localctx._fieldsFormat = this._errHandler.recoverInline(this);
				}
				else {
					this._errHandler.reportMatch(this);
				    this.consume();
				}
				this.state = 2860;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				do {
					{
					{
					this.state = 2859;
					this.selectFieldsInto();
					}
					}
					this.state = 2862;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
				} while (_la===51 || _la===52 || _la===109 || _la===155);
				}
			}

			this.state = 2872;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===91) {
				{
				this.state = 2866;
				this.match(SqlParser.LINES);
				this.state = 2868;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				do {
					{
					{
					this.state = 2867;
					this.selectLinesInto();
					}
					}
					this.state = 2870;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
				} while (_la===152 || _la===155);
				}
			}

			this.state = 2878;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===70) {
				{
				this.state = 2874;
				this.match(SqlParser.IGNORE);
				this.state = 2875;
				this.decimalLiteral();
				this.state = 2876;
				localctx._linesFormat = this._input.LT(1);
				_la = this._input.LA(1);
				if(!(_la===91 || _la===512)) {
				    localctx._linesFormat = this._errHandler.recoverInline(this);
				}
				else {
					this._errHandler.reportMatch(this);
				    this.consume();
				}
				}
			}

			this.state = 2891;
			this._errHandler.sync(this);
			switch ( this._interp.adaptivePredict(this._input, 380, this._ctx) ) {
			case 1:
				{
				this.state = 2880;
				this.match(SqlParser.LR_BRACKET);
				this.state = 2881;
				this.assignmentField();
				this.state = 2886;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				while (_la===1022) {
					{
					{
					this.state = 2882;
					this.match(SqlParser.COMMA);
					this.state = 2883;
					this.assignmentField();
					}
					}
					this.state = 2888;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
				}
				this.state = 2889;
				this.match(SqlParser.RR_BRACKET);
				}
				break;
			}
			this.state = 2902;
			this._errHandler.sync(this);
			switch ( this._interp.adaptivePredict(this._input, 382, this._ctx) ) {
			case 1:
				{
				this.state = 2893;
				this.match(SqlParser.SET);
				this.state = 2894;
				this.updatedElement();
				this.state = 2899;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				while (_la===1022) {
					{
					{
					this.state = 2895;
					this.match(SqlParser.COMMA);
					this.state = 2896;
					this.updatedElement();
					}
					}
					this.state = 2901;
					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 loadXmlStatement(): LoadXmlStatementContext {
		let localctx: LoadXmlStatementContext = new LoadXmlStatementContext(this, this._ctx, this.state);
		this.enterRule(localctx, 176, SqlParser.RULE_loadXmlStatement);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 2904;
			this.match(SqlParser.LOAD);
			this.state = 2905;
			this.match(SqlParser.XML);
			this.state = 2907;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===95 || _la===311) {
				{
				this.state = 2906;
				localctx._priority = this._input.LT(1);
				_la = this._input.LA(1);
				if(!(_la===95 || _la===311)) {
				    localctx._priority = this._errHandler.recoverInline(this);
				}
				else {
					this._errHandler.reportMatch(this);
				    this.consume();
				}
				}
			}

			this.state = 2910;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===402) {
				{
				this.state = 2909;
				this.match(SqlParser.LOCAL);
				}
			}

			this.state = 2912;
			this.match(SqlParser.INFILE);
			this.state = 2913;
			localctx._filename = this.match(SqlParser.STRING_LITERAL);
			this.state = 2915;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===70 || _la===127) {
				{
				this.state = 2914;
				localctx._violation = this._input.LT(1);
				_la = this._input.LA(1);
				if(!(_la===70 || _la===127)) {
				    localctx._violation = this._errHandler.recoverInline(this);
				}
				else {
					this._errHandler.reportMatch(this);
				    this.consume();
				}
				}
			}

			this.state = 2917;
			this.match(SqlParser.INTO);
			this.state = 2918;
			this.match(SqlParser.TABLE);
			this.state = 2919;
			this.tableName();
			this.state = 2923;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===22) {
				{
				this.state = 2920;
				this.match(SqlParser.CHARACTER);
				this.state = 2921;
				this.match(SqlParser.SET);
				this.state = 2922;
				localctx._charset = this.charsetName();
				}
			}

			this.state = 2931;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===512) {
				{
				this.state = 2925;
				this.match(SqlParser.ROWS);
				this.state = 2926;
				this.match(SqlParser.IDENTIFIED);
				this.state = 2927;
				this.match(SqlParser.BY);
				this.state = 2928;
				this.match(SqlParser.LESS_SYMBOL);
				this.state = 2929;
				localctx._tag = this.match(SqlParser.STRING_LITERAL);
				this.state = 2930;
				this.match(SqlParser.GREATER_SYMBOL);
				}
			}

			this.state = 2937;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===70) {
				{
				this.state = 2933;
				this.match(SqlParser.IGNORE);
				this.state = 2934;
				this.decimalLiteral();
				this.state = 2935;
				localctx._linesFormat = this._input.LT(1);
				_la = this._input.LA(1);
				if(!(_la===91 || _la===512)) {
				    localctx._linesFormat = this._errHandler.recoverInline(this);
				}
				else {
					this._errHandler.reportMatch(this);
				    this.consume();
				}
				}
			}

			this.state = 2950;
			this._errHandler.sync(this);
			switch ( this._interp.adaptivePredict(this._input, 390, this._ctx) ) {
			case 1:
				{
				this.state = 2939;
				this.match(SqlParser.LR_BRACKET);
				this.state = 2940;
				this.assignmentField();
				this.state = 2945;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				while (_la===1022) {
					{
					{
					this.state = 2941;
					this.match(SqlParser.COMMA);
					this.state = 2942;
					this.assignmentField();
					}
					}
					this.state = 2947;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
				}
				this.state = 2948;
				this.match(SqlParser.RR_BRACKET);
				}
				break;
			}
			this.state = 2961;
			this._errHandler.sync(this);
			switch ( this._interp.adaptivePredict(this._input, 392, this._ctx) ) {
			case 1:
				{
				this.state = 2952;
				this.match(SqlParser.SET);
				this.state = 2953;
				this.updatedElement();
				this.state = 2958;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				while (_la===1022) {
					{
					{
					this.state = 2954;
					this.match(SqlParser.COMMA);
					this.state = 2955;
					this.updatedElement();
					}
					}
					this.state = 2960;
					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 replaceStatement(): ReplaceStatementContext {
		let localctx: ReplaceStatementContext = new ReplaceStatementContext(this, this._ctx, this.state);
		this.enterRule(localctx, 178, SqlParser.RULE_replaceStatement);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 2963;
			this.match(SqlParser.REPLACE);
			this.state = 2965;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===39 || _la===95) {
				{
				this.state = 2964;
				localctx._priority = this._input.LT(1);
				_la = this._input.LA(1);
				if(!(_la===39 || _la===95)) {
				    localctx._priority = this._errHandler.recoverInline(this);
				}
				else {
					this._errHandler.reportMatch(this);
				    this.consume();
				}
				}
			}

			this.state = 2968;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===78) {
				{
				this.state = 2967;
				this.match(SqlParser.INTO);
				}
			}

			this.state = 2970;
			this.tableName();
			this.state = 2976;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===115) {
				{
				this.state = 2971;
				this.match(SqlParser.PARTITION);
				this.state = 2972;
				this.match(SqlParser.LR_BRACKET);
				this.state = 2973;
				localctx._partitions = this.uidList();
				this.state = 2974;
				this.match(SqlParser.RR_BRACKET);
				}
			}

			this.state = 2994;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case 137:
			case 170:
			case 576:
			case 1020:
				{
				this.state = 2982;
				this._errHandler.sync(this);
				switch ( this._interp.adaptivePredict(this._input, 396, this._ctx) ) {
				case 1:
					{
					this.state = 2978;
					this.match(SqlParser.LR_BRACKET);
					this.state = 2979;
					localctx._columns = this.uidList();
					this.state = 2980;
					this.match(SqlParser.RR_BRACKET);
					}
					break;
				}
				this.state = 2984;
				this.insertStatementValue();
				}
				break;
			case 138:
				{
				this.state = 2985;
				this.match(SqlParser.SET);
				this.state = 2986;
				localctx._setFirst = this.updatedElement();
				this.state = 2991;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				while (_la===1022) {
					{
					{
					this.state = 2987;
					this.match(SqlParser.COMMA);
					this.state = 2988;
					localctx._updatedElement = this.updatedElement();
					localctx._setElements.push(localctx._updatedElement);
					}
					}
					this.state = 2993;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
				}
				}
				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, this._ctx, this.state);
		this.enterRule(localctx, 180, SqlParser.RULE_selectStatement);
		let _la: number;
		try {
			let _alt: number;
			this.state = 3051;
			this._errHandler.sync(this);
			switch ( this._interp.adaptivePredict(this._input, 414, this._ctx) ) {
			case 1:
				localctx = new SimpleSelectContext(this, localctx);
				this.enterOuterAlt(localctx, 1);
				{
				this.state = 2996;
				this.querySpecification();
				this.state = 2998;
				this._errHandler.sync(this);
				switch ( this._interp.adaptivePredict(this._input, 399, this._ctx) ) {
				case 1:
					{
					this.state = 2997;
					this.lockClause();
					}
					break;
				}
				}
				break;
			case 2:
				localctx = new ParenthesisSelectContext(this, localctx);
				this.enterOuterAlt(localctx, 2);
				{
				this.state = 3000;
				this.queryExpression();
				this.state = 3002;
				this._errHandler.sync(this);
				switch ( this._interp.adaptivePredict(this._input, 400, this._ctx) ) {
				case 1:
					{
					this.state = 3001;
					this.lockClause();
					}
					break;
				}
				}
				break;
			case 3:
				localctx = new UnionSelectContext(this, localctx);
				this.enterOuterAlt(localctx, 3);
				{
				this.state = 3004;
				this.querySpecificationNointo();
				this.state = 3006;
				this._errHandler.sync(this);
				_alt = 1;
				do {
					switch (_alt) {
					case 1:
						{
						{
						this.state = 3005;
						this.unionStatement();
						}
						}
						break;
					default:
						throw new NoViableAltException(this);
					}
					this.state = 3008;
					this._errHandler.sync(this);
					_alt = this._interp.adaptivePredict(this._input, 401, this._ctx);
				} while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER);
				this.state = 3018;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===162) {
					{
					this.state = 3010;
					this.match(SqlParser.UNION);
					this.state = 3012;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
					if (_la===6 || _la===45) {
						{
						this.state = 3011;
						(localctx as UnionSelectContext)._unionType = this._input.LT(1);
						_la = this._input.LA(1);
						if(!(_la===6 || _la===45)) {
						    (localctx as UnionSelectContext)._unionType = this._errHandler.recoverInline(this);
						}
						else {
							this._errHandler.reportMatch(this);
						    this.consume();
						}
						}
					}

					this.state = 3016;
					this._errHandler.sync(this);
					switch (this._input.LA(1)) {
					case 137:
						{
						this.state = 3014;
						this.querySpecification();
						}
						break;
					case 1020:
						{
						this.state = 3015;
						this.queryExpression();
						}
						break;
					default:
						throw new NoViableAltException(this);
					}
					}
				}

				this.state = 3021;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===111) {
					{
					this.state = 3020;
					this.orderByClause();
					}
				}

				this.state = 3024;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===89) {
					{
					this.state = 3023;
					this.limitClause();
					}
				}

				this.state = 3027;
				this._errHandler.sync(this);
				switch ( this._interp.adaptivePredict(this._input, 407, this._ctx) ) {
				case 1:
					{
					this.state = 3026;
					this.lockClause();
					}
					break;
				}
				}
				break;
			case 4:
				localctx = new UnionParenthesisSelectContext(this, localctx);
				this.enterOuterAlt(localctx, 4);
				{
				this.state = 3029;
				this.queryExpressionNointo();
				this.state = 3031;
				this._errHandler.sync(this);
				_alt = 1;
				do {
					switch (_alt) {
					case 1:
						{
						{
						this.state = 3030;
						this.unionParenthesis();
						}
						}
						break;
					default:
						throw new NoViableAltException(this);
					}
					this.state = 3033;
					this._errHandler.sync(this);
					_alt = this._interp.adaptivePredict(this._input, 408, this._ctx);
				} while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER);
				this.state = 3040;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===162) {
					{
					this.state = 3035;
					this.match(SqlParser.UNION);
					this.state = 3037;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
					if (_la===6 || _la===45) {
						{
						this.state = 3036;
						(localctx as UnionParenthesisSelectContext)._unionType = this._input.LT(1);
						_la = this._input.LA(1);
						if(!(_la===6 || _la===45)) {
						    (localctx as UnionParenthesisSelectContext)._unionType = this._errHandler.recoverInline(this);
						}
						else {
							this._errHandler.reportMatch(this);
						    this.consume();
						}
						}
					}

					this.state = 3039;
					this.queryExpression();
					}
				}

				this.state = 3043;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===111) {
					{
					this.state = 3042;
					this.orderByClause();
					}
				}

				this.state = 3046;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===89) {
					{
					this.state = 3045;
					this.limitClause();
					}
				}

				this.state = 3049;
				this._errHandler.sync(this);
				switch ( this._interp.adaptivePredict(this._input, 413, this._ctx) ) {
				case 1:
					{
					this.state = 3048;
					this.lockClause();
					}
					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 updateStatement(): UpdateStatementContext {
		let localctx: UpdateStatementContext = new UpdateStatementContext(this, this._ctx, this.state);
		this.enterRule(localctx, 182, SqlParser.RULE_updateStatement);
		try {
			this.state = 3055;
			this._errHandler.sync(this);
			switch ( this._interp.adaptivePredict(this._input, 415, this._ctx) ) {
			case 1:
				this.enterOuterAlt(localctx, 1);
				{
				this.state = 3053;
				this.singleUpdateStatement();
				}
				break;
			case 2:
				this.enterOuterAlt(localctx, 2);
				{
				this.state = 3054;
				this.multipleUpdateStatement();
				}
				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 insertStatementValue(): InsertStatementValueContext {
		let localctx: InsertStatementValueContext = new InsertStatementValueContext(this, this._ctx, this.state);
		this.enterRule(localctx, 184, SqlParser.RULE_insertStatementValue);
		let _la: number;
		try {
			this.state = 3075;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case 137:
			case 1020:
				this.enterOuterAlt(localctx, 1);
				{
				this.state = 3057;
				this.selectStatement();
				}
				break;
			case 170:
			case 576:
				this.enterOuterAlt(localctx, 2);
				{
				this.state = 3058;
				localctx._insertFormat = this._input.LT(1);
				_la = this._input.LA(1);
				if(!(_la===170 || _la===576)) {
				    localctx._insertFormat = this._errHandler.recoverInline(this);
				}
				else {
					this._errHandler.reportMatch(this);
				    this.consume();
				}
				this.state = 3059;
				this.match(SqlParser.LR_BRACKET);
				this.state = 3061;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 538443776) !== 0) || ((((_la - 32)) & ~0x1F) === 0 && ((1 << (_la - 32)) & 18878539) !== 0) || ((((_la - 69)) & ~0x1F) === 0 && ((1 << (_la - 69)) & 262529) !== 0) || ((((_la - 102)) & ~0x1F) === 0 && ((1 << (_la - 102)) & 2181038093) !== 0) || ((((_la - 151)) & ~0x1F) === 0 && ((1 << (_la - 151)) & 524801) !== 0) || ((((_la - 199)) & ~0x1F) === 0 && ((1 << (_la - 199)) & 5374527) !== 0) || ((((_la - 233)) & ~0x1F) === 0 && ((1 << (_la - 233)) & 4294967295) !== 0) || ((((_la - 265)) & ~0x1F) === 0 && ((1 << (_la - 265)) & 4294967295) !== 0) || ((((_la - 297)) & ~0x1F) === 0 && ((1 << (_la - 297)) & 4294967295) !== 0) || ((((_la - 329)) & ~0x1F) === 0 && ((1 << (_la - 329)) & 4294967295) !== 0) || ((((_la - 361)) & ~0x1F) === 0 && ((1 << (_la - 361)) & 4294967295) !== 0) || ((((_la - 393)) & ~0x1F) === 0 && ((1 << (_la - 393)) & 4294967295) !== 0) || ((((_la - 425)) & ~0x1F) === 0 && ((1 << (_la - 425)) & 4294967295) !== 0) || ((((_la - 457)) & ~0x1F) === 0 && ((1 << (_la - 457)) & 4294967295) !== 0) || ((((_la - 489)) & ~0x1F) === 0 && ((1 << (_la - 489)) & 4294967295) !== 0) || ((((_la - 521)) & ~0x1F) === 0 && ((1 << (_la - 521)) & 4261412863) !== 0) || ((((_la - 553)) & ~0x1F) === 0 && ((1 << (_la - 553)) & 4227858431) !== 0) || ((((_la - 585)) & ~0x1F) === 0 && ((1 << (_la - 585)) & 4227858191) !== 0) || ((((_la - 617)) & ~0x1F) === 0 && ((1 << (_la - 617)) & 4294967295) !== 0) || ((((_la - 649)) & ~0x1F) === 0 && ((1 << (_la - 649)) & 4294967295) !== 0) || ((((_la - 681)) & ~0x1F) === 0 && ((1 << (_la - 681)) & 4294942719) !== 0) || ((((_la - 713)) & ~0x1F) === 0 && ((1 << (_la - 713)) & 4294967295) !== 0) || ((((_la - 745)) & ~0x1F) === 0 && ((1 << (_la - 745)) & 4294967295) !== 0) || ((((_la - 777)) & ~0x1F) === 0 && ((1 << (_la - 777)) & 4294967295) !== 0) || ((((_la - 809)) & ~0x1F) === 0 && ((1 << (_la - 809)) & 4294967295) !== 0) || ((((_la - 841)) & ~0x1F) === 0 && ((1 << (_la - 841)) & 4294967295) !== 0) || ((((_la - 873)) & ~0x1F) === 0 && ((1 << (_la - 873)) & 4294967295) !== 0) || ((((_la - 905)) & ~0x1F) === 0 && ((1 << (_la - 905)) & 4294967295) !== 0) || ((((_la - 937)) & ~0x1F) === 0 && ((1 << (_la - 937)) & 4294967295) !== 0) || ((((_la - 969)) & ~0x1F) === 0 && ((1 << (_la - 969)) & 33554431) !== 0) || ((((_la - 1006)) & ~0x1F) === 0 && ((1 << (_la - 1006)) & 4097327877) !== 0) || ((((_la - 1038)) & ~0x1F) === 0 && ((1 << (_la - 1038)) & 879) !== 0)) {
					{
					this.state = 3060;
					this.expressionsWithDefaults();
					}
				}

				this.state = 3063;
				this.match(SqlParser.RR_BRACKET);
				this.state = 3072;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				while (_la===1022) {
					{
					{
					this.state = 3064;
					this.match(SqlParser.COMMA);
					this.state = 3065;
					this.match(SqlParser.LR_BRACKET);
					this.state = 3067;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
					if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 538443776) !== 0) || ((((_la - 32)) & ~0x1F) === 0 && ((1 << (_la - 32)) & 18878539) !== 0) || ((((_la - 69)) & ~0x1F) === 0 && ((1 << (_la - 69)) & 262529) !== 0) || ((((_la - 102)) & ~0x1F) === 0 && ((1 << (_la - 102)) & 2181038093) !== 0) || ((((_la - 151)) & ~0x1F) === 0 && ((1 << (_la - 151)) & 524801) !== 0) || ((((_la - 199)) & ~0x1F) === 0 && ((1 << (_la - 199)) & 5374527) !== 0) || ((((_la - 233)) & ~0x1F) === 0 && ((1 << (_la - 233)) & 4294967295) !== 0) || ((((_la - 265)) & ~0x1F) === 0 && ((1 << (_la - 265)) & 4294967295) !== 0) || ((((_la - 297)) & ~0x1F) === 0 && ((1 << (_la - 297)) & 4294967295) !== 0) || ((((_la - 329)) & ~0x1F) === 0 && ((1 << (_la - 329)) & 4294967295) !== 0) || ((((_la - 361)) & ~0x1F) === 0 && ((1 << (_la - 361)) & 4294967295) !== 0) || ((((_la - 393)) & ~0x1F) === 0 && ((1 << (_la - 393)) & 4294967295) !== 0) || ((((_la - 425)) & ~0x1F) === 0 && ((1 << (_la - 425)) & 4294967295) !== 0) || ((((_la - 457)) & ~0x1F) === 0 && ((1 << (_la - 457)) & 4294967295) !== 0) || ((((_la - 489)) & ~0x1F) === 0 && ((1 << (_la - 489)) & 4294967295) !== 0) || ((((_la - 521)) & ~0x1F) === 0 && ((1 << (_la - 521)) & 4261412863) !== 0) || ((((_la - 553)) & ~0x1F) === 0 && ((1 << (_la - 553)) & 4227858431) !== 0) || ((((_la - 585)) & ~0x1F) === 0 && ((1 << (_la - 585)) & 4227858191) !== 0) || ((((_la - 617)) & ~0x1F) === 0 && ((1 << (_la - 617)) & 4294967295) !== 0) || ((((_la - 649)) & ~0x1F) === 0 && ((1 << (_la - 649)) & 4294967295) !== 0) || ((((_la - 681)) & ~0x1F) === 0 && ((1 << (_la - 681)) & 4294942719) !== 0) || ((((_la - 713)) & ~0x1F) === 0 && ((1 << (_la - 713)) & 4294967295) !== 0) || ((((_la - 745)) & ~0x1F) === 0 && ((1 << (_la - 745)) & 4294967295) !== 0) || ((((_la - 777)) & ~0x1F) === 0 && ((1 << (_la - 777)) & 4294967295) !== 0) || ((((_la - 809)) & ~0x1F) === 0 && ((1 << (_la - 809)) & 4294967295) !== 0) || ((((_la - 841)) & ~0x1F) === 0 && ((1 << (_la - 841)) & 4294967295) !== 0) || ((((_la - 873)) & ~0x1F) === 0 && ((1 << (_la - 873)) & 4294967295) !== 0) || ((((_la - 905)) & ~0x1F) === 0 && ((1 << (_la - 905)) & 4294967295) !== 0) || ((((_la - 937)) & ~0x1F) === 0 && ((1 << (_la - 937)) & 4294967295) !== 0) || ((((_la - 969)) & ~0x1F) === 0 && ((1 << (_la - 969)) & 33554431) !== 0) || ((((_la - 1006)) & ~0x1F) === 0 && ((1 << (_la - 1006)) & 4097327877) !== 0) || ((((_la - 1038)) & ~0x1F) === 0 && ((1 << (_la - 1038)) & 879) !== 0)) {
						{
						this.state = 3066;
						this.expressionsWithDefaults();
						}
					}

					this.state = 3069;
					this.match(SqlParser.RR_BRACKET);
					}
					}
					this.state = 3074;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
				}
				}
				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 updatedElement(): UpdatedElementContext {
		let localctx: UpdatedElementContext = new UpdatedElementContext(this, this._ctx, this.state);
		this.enterRule(localctx, 186, SqlParser.RULE_updatedElement);
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 3077;
			this.fullColumnName();
			this.state = 3078;
			this.match(SqlParser.EQUAL_SYMBOL);
			this.state = 3081;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case 19:
			case 20:
			case 29:
			case 32:
			case 33:
			case 35:
			case 44:
			case 53:
			case 56:
			case 69:
			case 76:
			case 77:
			case 87:
			case 102:
			case 104:
			case 105:
			case 127:
			case 133:
			case 151:
			case 160:
			case 170:
			case 199:
			case 200:
			case 201:
			case 202:
			case 203:
			case 204:
			case 208:
			case 216:
			case 219:
			case 221:
			case 233:
			case 234:
			case 235:
			case 236:
			case 237:
			case 238:
			case 239:
			case 240:
			case 241:
			case 242:
			case 243:
			case 244:
			case 245:
			case 246:
			case 247:
			case 248:
			case 249:
			case 250:
			case 251:
			case 252:
			case 253:
			case 254:
			case 255:
			case 256:
			case 257:
			case 258:
			case 259:
			case 260:
			case 261:
			case 262:
			case 263:
			case 264:
			case 265:
			case 266:
			case 267:
			case 268:
			case 269:
			case 270:
			case 271:
			case 272:
			case 273:
			case 274:
			case 275:
			case 276:
			case 277:
			case 278:
			case 279:
			case 280:
			case 281:
			case 282:
			case 283:
			case 284:
			case 285:
			case 286:
			case 287:
			case 288:
			case 289:
			case 290:
			case 291:
			case 292:
			case 293:
			case 294:
			case 295:
			case 296:
			case 297:
			case 298:
			case 299:
			case 300:
			case 301:
			case 302:
			case 303:
			case 304:
			case 305:
			case 306:
			case 307:
			case 308:
			case 309:
			case 310:
			case 311:
			case 312:
			case 313:
			case 314:
			case 315:
			case 316:
			case 317:
			case 318:
			case 319:
			case 320:
			case 321:
			case 322:
			case 323:
			case 324:
			case 325:
			case 326:
			case 327:
			case 328:
			case 329:
			case 330:
			case 331:
			case 332:
			case 333:
			case 334:
			case 335:
			case 336:
			case 337:
			case 338:
			case 339:
			case 340:
			case 341:
			case 342:
			case 343:
			case 344:
			case 345:
			case 346:
			case 347:
			case 348:
			case 349:
			case 350:
			case 351:
			case 352:
			case 353:
			case 354:
			case 355:
			case 356:
			case 357:
			case 358:
			case 359:
			case 360:
			case 361:
			case 362:
			case 363:
			case 364:
			case 365:
			case 366:
			case 367:
			case 368:
			case 369:
			case 370:
			case 371:
			case 372:
			case 373:
			case 374:
			case 375:
			case 376:
			case 377:
			case 378:
			case 379:
			case 380:
			case 381:
			case 382:
			case 383:
			case 384:
			case 385:
			case 386:
			case 387:
			case 388:
			case 389:
			case 390:
			case 391:
			case 392:
			case 393:
			case 394:
			case 395:
			case 396:
			case 397:
			case 398:
			case 399:
			case 400:
			case 401:
			case 402:
			case 403:
			case 404:
			case 405:
			case 406:
			case 407:
			case 408:
			case 409:
			case 410:
			case 411:
			case 412:
			case 413:
			case 414:
			case 415:
			case 416:
			case 417:
			case 418:
			case 419:
			case 420:
			case 421:
			case 422:
			case 423:
			case 424:
			case 425:
			case 426:
			case 427:
			case 428:
			case 429:
			case 430:
			case 431:
			case 432:
			case 433:
			case 434:
			case 435:
			case 436:
			case 437:
			case 438:
			case 439:
			case 440:
			case 441:
			case 442:
			case 443:
			case 444:
			case 445:
			case 446:
			case 447:
			case 448:
			case 449:
			case 450:
			case 451:
			case 452:
			case 453:
			case 454:
			case 455:
			case 456:
			case 457:
			case 458:
			case 459:
			case 460:
			case 461:
			case 462:
			case 463:
			case 464:
			case 465:
			case 466:
			case 467:
			case 468:
			case 469:
			case 470:
			case 471:
			case 472:
			case 473:
			case 474:
			case 475:
			case 476:
			case 477:
			case 478:
			case 479:
			case 480:
			case 481:
			case 482:
			case 483:
			case 484:
			case 485:
			case 486:
			case 487:
			case 488:
			case 489:
			case 490:
			case 491:
			case 492:
			case 493:
			case 494:
			case 495:
			case 496:
			case 497:
			case 498:
			case 499:
			case 500:
			case 501:
			case 502:
			case 503:
			case 504:
			case 505:
			case 506:
			case 507:
			case 508:
			case 509:
			case 510:
			case 511:
			case 512:
			case 513:
			case 514:
			case 515:
			case 516:
			case 517:
			case 518:
			case 519:
			case 520:
			case 521:
			case 522:
			case 523:
			case 524:
			case 525:
			case 526:
			case 527:
			case 528:
			case 529:
			case 530:
			case 531:
			case 532:
			case 533:
			case 534:
			case 535:
			case 536:
			case 537:
			case 538:
			case 539:
			case 540:
			case 541:
			case 542:
			case 543:
			case 544:
			case 545:
			case 547:
			case 548:
			case 549:
			case 550:
			case 551:
			case 552:
			case 553:
			case 554:
			case 555:
			case 556:
			case 557:
			case 558:
			case 559:
			case 560:
			case 561:
			case 562:
			case 563:
			case 564:
			case 565:
			case 566:
			case 567:
			case 568:
			case 569:
			case 570:
			case 571:
			case 572:
			case 573:
			case 574:
			case 575:
			case 576:
			case 577:
			case 578:
			case 580:
			case 581:
			case 582:
			case 583:
			case 584:
			case 585:
			case 586:
			case 587:
			case 588:
			case 593:
			case 594:
			case 595:
			case 596:
			case 597:
			case 598:
			case 599:
			case 600:
			case 601:
			case 602:
			case 603:
			case 604:
			case 605:
			case 606:
			case 607:
			case 608:
			case 609:
			case 610:
			case 612:
			case 613:
			case 614:
			case 615:
			case 616:
			case 617:
			case 618:
			case 619:
			case 620:
			case 621:
			case 622:
			case 623:
			case 624:
			case 625:
			case 626:
			case 627:
			case 628:
			case 629:
			case 630:
			case 631:
			case 632:
			case 633:
			case 634:
			case 635:
			case 636:
			case 637:
			case 638:
			case 639:
			case 640:
			case 641:
			case 642:
			case 643:
			case 644:
			case 645:
			case 646:
			case 647:
			case 648:
			case 649:
			case 650:
			case 651:
			case 652:
			case 653:
			case 654:
			case 655:
			case 656:
			case 657:
			case 658:
			case 659:
			case 660:
			case 661:
			case 662:
			case 663:
			case 664:
			case 665:
			case 666:
			case 667:
			case 668:
			case 669:
			case 670:
			case 671:
			case 672:
			case 673:
			case 674:
			case 675:
			case 676:
			case 677:
			case 678:
			case 679:
			case 680:
			case 681:
			case 682:
			case 683:
			case 684:
			case 685:
			case 686:
			case 687:
			case 688:
			case 689:
			case 690:
			case 691:
			case 692:
			case 693:
			case 696:
			case 697:
			case 698:
			case 699:
			case 700:
			case 701:
			case 702:
			case 703:
			case 704:
			case 705:
			case 706:
			case 707:
			case 708:
			case 709:
			case 710:
			case 711:
			case 712:
			case 713:
			case 714:
			case 715:
			case 716:
			case 717:
			case 718:
			case 719:
			case 720:
			case 721:
			case 722:
			case 723:
			case 724:
			case 725:
			case 726:
			case 727:
			case 728:
			case 729:
			case 730:
			case 731:
			case 732:
			case 733:
			case 734:
			case 735:
			case 736:
			case 737:
			case 738:
			case 739:
			case 740:
			case 741:
			case 742:
			case 743:
			case 744:
			case 745:
			case 746:
			case 747:
			case 748:
			case 749:
			case 750:
			case 751:
			case 752:
			case 753:
			case 754:
			case 755:
			case 756:
			case 757:
			case 758:
			case 759:
			case 760:
			case 761:
			case 762:
			case 763:
			case 764:
			case 765:
			case 766:
			case 767:
			case 768:
			case 769:
			case 770:
			case 771:
			case 772:
			case 773:
			case 774:
			case 775:
			case 776:
			case 777:
			case 778:
			case 779:
			case 780:
			case 781:
			case 782:
			case 783:
			case 784:
			case 785:
			case 786:
			case 787:
			case 788:
			case 789:
			case 790:
			case 791:
			case 792:
			case 793:
			case 794:
			case 795:
			case 796:
			case 797:
			case 798:
			case 799:
			case 800:
			case 801:
			case 802:
			case 803:
			case 804:
			case 805:
			case 806:
			case 807:
			case 808:
			case 809:
			case 810:
			case 811:
			case 812:
			case 813:
			case 814:
			case 815:
			case 816:
			case 817:
			case 818:
			case 819:
			case 820:
			case 821:
			case 822:
			case 823:
			case 824:
			case 825:
			case 826:
			case 827:
			case 828:
			case 829:
			case 830:
			case 831:
			case 832:
			case 833:
			case 834:
			case 835:
			case 836:
			case 837:
			case 838:
			case 839:
			case 840:
			case 841:
			case 842:
			case 843:
			case 844:
			case 845:
			case 846:
			case 847:
			case 848:
			case 849:
			case 850:
			case 851:
			case 852:
			case 853:
			case 854:
			case 855:
			case 856:
			case 857:
			case 858:
			case 859:
			case 860:
			case 861:
			case 862:
			case 863:
			case 864:
			case 865:
			case 866:
			case 867:
			case 868:
			case 869:
			case 870:
			case 871:
			case 872:
			case 873:
			case 874:
			case 875:
			case 876:
			case 877:
			case 878:
			case 879:
			case 880:
			case 881:
			case 882:
			case 883:
			case 884:
			case 885:
			case 886:
			case 887:
			case 888:
			case 889:
			case 890:
			case 891:
			case 892:
			case 893:
			case 894:
			case 895:
			case 896:
			case 897:
			case 898:
			case 899:
			case 900:
			case 901:
			case 902:
			case 903:
			case 904:
			case 905:
			case 906:
			case 907:
			case 908:
			case 909:
			case 910:
			case 911:
			case 912:
			case 913:
			case 914:
			case 915:
			case 916:
			case 917:
			case 918:
			case 919:
			case 920:
			case 921:
			case 922:
			case 923:
			case 924:
			case 925:
			case 926:
			case 927:
			case 928:
			case 929:
			case 930:
			case 931:
			case 932:
			case 933:
			case 934:
			case 935:
			case 936:
			case 937:
			case 938:
			case 939:
			case 940:
			case 941:
			case 942:
			case 943:
			case 944:
			case 945:
			case 946:
			case 947:
			case 948:
			case 949:
			case 950:
			case 951:
			case 952:
			case 953:
			case 954:
			case 955:
			case 956:
			case 957:
			case 958:
			case 959:
			case 960:
			case 961:
			case 962:
			case 963:
			case 964:
			case 965:
			case 966:
			case 967:
			case 968:
			case 969:
			case 970:
			case 971:
			case 972:
			case 973:
			case 974:
			case 975:
			case 976:
			case 977:
			case 978:
			case 979:
			case 980:
			case 981:
			case 982:
			case 983:
			case 984:
			case 985:
			case 986:
			case 987:
			case 988:
			case 989:
			case 990:
			case 991:
			case 992:
			case 993:
			case 1006:
			case 1008:
			case 1014:
			case 1015:
			case 1020:
			case 1025:
			case 1026:
			case 1027:
			case 1032:
			case 1034:
			case 1035:
			case 1036:
			case 1037:
			case 1038:
			case 1039:
			case 1040:
			case 1041:
			case 1043:
			case 1044:
			case 1046:
			case 1047:
				{
				this.state = 3079;
				this.expression(0);
				}
				break;
			case 38:
				{
				this.state = 3080;
				this.match(SqlParser.DEFAULT);
				}
				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 assignmentField(): AssignmentFieldContext {
		let localctx: AssignmentFieldContext = new AssignmentFieldContext(this, this._ctx, this.state);
		this.enterRule(localctx, 188, SqlParser.RULE_assignmentField);
		try {
			this.state = 3085;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case 32:
			case 35:
			case 44:
			case 87:
			case 105:
			case 133:
			case 151:
			case 199:
			case 200:
			case 201:
			case 202:
			case 203:
			case 216:
			case 219:
			case 221:
			case 233:
			case 234:
			case 239:
			case 262:
			case 270:
			case 271:
			case 272:
			case 273:
			case 274:
			case 275:
			case 276:
			case 277:
			case 278:
			case 279:
			case 280:
			case 281:
			case 282:
			case 283:
			case 284:
			case 285:
			case 286:
			case 287:
			case 288:
			case 289:
			case 290:
			case 291:
			case 292:
			case 293:
			case 294:
			case 295:
			case 296:
			case 297:
			case 298:
			case 299:
			case 300:
			case 301:
			case 302:
			case 303:
			case 304:
			case 305:
			case 306:
			case 307:
			case 308:
			case 309:
			case 310:
			case 311:
			case 312:
			case 313:
			case 314:
			case 315:
			case 316:
			case 317:
			case 318:
			case 319:
			case 320:
			case 321:
			case 322:
			case 323:
			case 324:
			case 325:
			case 326:
			case 327:
			case 328:
			case 329:
			case 330:
			case 331:
			case 332:
			case 333:
			case 334:
			case 335:
			case 336:
			case 337:
			case 338:
			case 339:
			case 340:
			case 341:
			case 342:
			case 343:
			case 344:
			case 345:
			case 346:
			case 347:
			case 348:
			case 349:
			case 350:
			case 351:
			case 352:
			case 353:
			case 354:
			case 355:
			case 356:
			case 357:
			case 358:
			case 359:
			case 360:
			case 361:
			case 362:
			case 363:
			case 364:
			case 365:
			case 366:
			case 367:
			case 368:
			case 369:
			case 370:
			case 371:
			case 372:
			case 373:
			case 374:
			case 375:
			case 376:
			case 377:
			case 378:
			case 379:
			case 380:
			case 381:
			case 382:
			case 383:
			case 384:
			case 385:
			case 386:
			case 387:
			case 388:
			case 389:
			case 390:
			case 391:
			case 392:
			case 393:
			case 394:
			case 395:
			case 396:
			case 397:
			case 398:
			case 399:
			case 400:
			case 401:
			case 402:
			case 403:
			case 404:
			case 405:
			case 406:
			case 407:
			case 408:
			case 409:
			case 410:
			case 411:
			case 412:
			case 413:
			case 414:
			case 415:
			case 416:
			case 417:
			case 418:
			case 419:
			case 420:
			case 421:
			case 422:
			case 423:
			case 424:
			case 425:
			case 426:
			case 427:
			case 428:
			case 429:
			case 430:
			case 431:
			case 432:
			case 433:
			case 434:
			case 435:
			case 436:
			case 437:
			case 438:
			case 439:
			case 440:
			case 441:
			case 442:
			case 443:
			case 444:
			case 445:
			case 446:
			case 447:
			case 448:
			case 449:
			case 450:
			case 451:
			case 452:
			case 453:
			case 454:
			case 455:
			case 456:
			case 457:
			case 458:
			case 459:
			case 460:
			case 461:
			case 462:
			case 463:
			case 464:
			case 465:
			case 466:
			case 467:
			case 468:
			case 469:
			case 470:
			case 471:
			case 472:
			case 473:
			case 474:
			case 475:
			case 476:
			case 477:
			case 478:
			case 479:
			case 480:
			case 481:
			case 482:
			case 483:
			case 484:
			case 485:
			case 486:
			case 487:
			case 488:
			case 489:
			case 490:
			case 491:
			case 492:
			case 493:
			case 494:
			case 495:
			case 496:
			case 497:
			case 498:
			case 499:
			case 500:
			case 501:
			case 502:
			case 503:
			case 504:
			case 505:
			case 506:
			case 507:
			case 508:
			case 509:
			case 510:
			case 511:
			case 512:
			case 513:
			case 514:
			case 515:
			case 516:
			case 517:
			case 518:
			case 519:
			case 520:
			case 521:
			case 522:
			case 523:
			case 524:
			case 525:
			case 526:
			case 527:
			case 528:
			case 529:
			case 530:
			case 531:
			case 532:
			case 533:
			case 534:
			case 535:
			case 536:
			case 537:
			case 538:
			case 539:
			case 540:
			case 541:
			case 542:
			case 543:
			case 544:
			case 545:
			case 547:
			case 548:
			case 549:
			case 550:
			case 551:
			case 552:
			case 553:
			case 554:
			case 555:
			case 556:
			case 557:
			case 558:
			case 559:
			case 560:
			case 561:
			case 562:
			case 563:
			case 564:
			case 565:
			case 566:
			case 567:
			case 568:
			case 569:
			case 570:
			case 571:
			case 572:
			case 573:
			case 574:
			case 575:
			case 576:
			case 577:
			case 578:
			case 580:
			case 581:
			case 582:
			case 583:
			case 584:
			case 585:
			case 586:
			case 587:
			case 588:
			case 593:
			case 594:
			case 595:
			case 596:
			case 597:
			case 598:
			case 599:
			case 600:
			case 601:
			case 602:
			case 603:
			case 604:
			case 605:
			case 606:
			case 607:
			case 608:
			case 609:
			case 610:
			case 612:
			case 613:
			case 614:
			case 615:
			case 616:
			case 617:
			case 618:
			case 619:
			case 620:
			case 621:
			case 622:
			case 623:
			case 624:
			case 625:
			case 626:
			case 627:
			case 628:
			case 629:
			case 630:
			case 631:
			case 632:
			case 633:
			case 634:
			case 635:
			case 636:
			case 637:
			case 638:
			case 639:
			case 640:
			case 641:
			case 642:
			case 643:
			case 644:
			case 645:
			case 646:
			case 647:
			case 648:
			case 649:
			case 650:
			case 651:
			case 652:
			case 653:
			case 654:
			case 655:
			case 656:
			case 657:
			case 658:
			case 659:
			case 660:
			case 661:
			case 662:
			case 663:
			case 664:
			case 665:
			case 666:
			case 667:
			case 668:
			case 669:
			case 670:
			case 671:
			case 672:
			case 673:
			case 674:
			case 675:
			case 676:
			case 677:
			case 678:
			case 679:
			case 680:
			case 681:
			case 682:
			case 683:
			case 684:
			case 685:
			case 686:
			case 687:
			case 688:
			case 689:
			case 690:
			case 691:
			case 692:
			case 693:
			case 696:
			case 697:
			case 698:
			case 699:
			case 700:
			case 701:
			case 702:
			case 703:
			case 704:
			case 705:
			case 706:
			case 707:
			case 708:
			case 709:
			case 710:
			case 711:
			case 712:
			case 713:
			case 714:
			case 715:
			case 716:
			case 717:
			case 718:
			case 719:
			case 720:
			case 721:
			case 722:
			case 723:
			case 724:
			case 725:
			case 726:
			case 727:
			case 728:
			case 729:
			case 730:
			case 731:
			case 732:
			case 733:
			case 734:
			case 735:
			case 736:
			case 737:
			case 738:
			case 739:
			case 740:
			case 741:
			case 742:
			case 743:
			case 744:
			case 745:
			case 746:
			case 747:
			case 748:
			case 749:
			case 750:
			case 751:
			case 752:
			case 753:
			case 754:
			case 755:
			case 756:
			case 757:
			case 758:
			case 759:
			case 760:
			case 761:
			case 762:
			case 763:
			case 764:
			case 765:
			case 766:
			case 767:
			case 768:
			case 769:
			case 770:
			case 771:
			case 772:
			case 773:
			case 774:
			case 775:
			case 776:
			case 777:
			case 778:
			case 779:
			case 780:
			case 781:
			case 782:
			case 783:
			case 784:
			case 785:
			case 786:
			case 787:
			case 788:
			case 789:
			case 790:
			case 791:
			case 792:
			case 793:
			case 794:
			case 795:
			case 796:
			case 797:
			case 798:
			case 799:
			case 800:
			case 801:
			case 802:
			case 803:
			case 804:
			case 805:
			case 806:
			case 807:
			case 808:
			case 809:
			case 810:
			case 811:
			case 812:
			case 813:
			case 814:
			case 815:
			case 816:
			case 817:
			case 818:
			case 819:
			case 820:
			case 821:
			case 822:
			case 823:
			case 824:
			case 825:
			case 826:
			case 827:
			case 828:
			case 829:
			case 830:
			case 831:
			case 832:
			case 833:
			case 834:
			case 835:
			case 836:
			case 837:
			case 838:
			case 839:
			case 840:
			case 841:
			case 842:
			case 843:
			case 844:
			case 845:
			case 846:
			case 847:
			case 848:
			case 849:
			case 850:
			case 851:
			case 852:
			case 853:
			case 854:
			case 855:
			case 856:
			case 857:
			case 858:
			case 859:
			case 860:
			case 861:
			case 862:
			case 863:
			case 864:
			case 865:
			case 866:
			case 867:
			case 868:
			case 869:
			case 870:
			case 871:
			case 872:
			case 873:
			case 874:
			case 875:
			case 876:
			case 877:
			case 878:
			case 879:
			case 880:
			case 881:
			case 882:
			case 883:
			case 884:
			case 885:
			case 886:
			case 887:
			case 888:
			case 889:
			case 890:
			case 891:
			case 892:
			case 893:
			case 894:
			case 895:
			case 896:
			case 897:
			case 898:
			case 899:
			case 900:
			case 901:
			case 902:
			case 903:
			case 904:
			case 905:
			case 906:
			case 907:
			case 908:
			case 909:
			case 910:
			case 911:
			case 912:
			case 913:
			case 914:
			case 915:
			case 916:
			case 917:
			case 918:
			case 919:
			case 920:
			case 921:
			case 922:
			case 923:
			case 924:
			case 925:
			case 926:
			case 927:
			case 928:
			case 929:
			case 930:
			case 931:
			case 932:
			case 933:
			case 934:
			case 935:
			case 936:
			case 937:
			case 938:
			case 939:
			case 940:
			case 941:
			case 942:
			case 943:
			case 944:
			case 945:
			case 946:
			case 947:
			case 948:
			case 949:
			case 950:
			case 951:
			case 952:
			case 953:
			case 954:
			case 955:
			case 956:
			case 957:
			case 958:
			case 959:
			case 960:
			case 961:
			case 962:
			case 963:
			case 964:
			case 965:
			case 966:
			case 967:
			case 968:
			case 969:
			case 970:
			case 971:
			case 972:
			case 973:
			case 974:
			case 975:
			case 976:
			case 977:
			case 978:
			case 979:
			case 980:
			case 981:
			case 982:
			case 983:
			case 984:
			case 985:
			case 986:
			case 987:
			case 988:
			case 989:
			case 990:
			case 991:
			case 992:
			case 993:
			case 1032:
			case 1035:
			case 1043:
			case 1044:
				this.enterOuterAlt(localctx, 1);
				{
				this.state = 3083;
				this.uid();
				}
				break;
			case 1046:
				this.enterOuterAlt(localctx, 2);
				{
				this.state = 3084;
				this.match(SqlParser.LOCAL_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 lockClause(): LockClauseContext {
		let localctx: LockClauseContext = new LockClauseContext(this, this._ctx, this.state);
		this.enterRule(localctx, 190, SqlParser.RULE_lockClause);
		try {
			this.state = 3093;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case 58:
				this.enterOuterAlt(localctx, 1);
				{
				this.state = 3087;
				this.match(SqlParser.FOR);
				this.state = 3088;
				this.match(SqlParser.UPDATE);
				}
				break;
			case 93:
				this.enterOuterAlt(localctx, 2);
				{
				this.state = 3089;
				this.match(SqlParser.LOCK);
				this.state = 3090;
				this.match(SqlParser.IN);
				this.state = 3091;
				this.match(SqlParser.SHARE);
				this.state = 3092;
				this.match(SqlParser.MODE);
				}
				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 singleDeleteStatement(): SingleDeleteStatementContext {
		let localctx: SingleDeleteStatementContext = new SingleDeleteStatementContext(this, this._ctx, this.state);
		this.enterRule(localctx, 192, SqlParser.RULE_singleDeleteStatement);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 3095;
			this.match(SqlParser.DELETE);
			this.state = 3097;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===95) {
				{
				this.state = 3096;
				localctx._priority = this.match(SqlParser.LOW_PRIORITY);
				}
			}

			this.state = 3100;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===483) {
				{
				this.state = 3099;
				this.match(SqlParser.QUICK);
				}
			}

			this.state = 3103;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===70) {
				{
				this.state = 3102;
				this.match(SqlParser.IGNORE);
				}
			}

			this.state = 3105;
			this.match(SqlParser.FROM);
			this.state = 3106;
			this.tableName();
			this.state = 3112;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===115) {
				{
				this.state = 3107;
				this.match(SqlParser.PARTITION);
				this.state = 3108;
				this.match(SqlParser.LR_BRACKET);
				this.state = 3109;
				this.uidList();
				this.state = 3110;
				this.match(SqlParser.RR_BRACKET);
				}
			}

			this.state = 3116;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===172) {
				{
				this.state = 3114;
				this.match(SqlParser.WHERE);
				this.state = 3115;
				this.expression(0);
				}
			}

			this.state = 3119;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===111) {
				{
				this.state = 3118;
				this.orderByClause();
				}
			}

			this.state = 3123;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===89) {
				{
				this.state = 3121;
				this.match(SqlParser.LIMIT);
				this.state = 3122;
				this.limitClauseAtom();
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public multipleDeleteStatement(): MultipleDeleteStatementContext {
		let localctx: MultipleDeleteStatementContext = new MultipleDeleteStatementContext(this, this._ctx, this.state);
		this.enterRule(localctx, 194, SqlParser.RULE_multipleDeleteStatement);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 3125;
			this.match(SqlParser.DELETE);
			this.state = 3127;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===95) {
				{
				this.state = 3126;
				localctx._priority = this.match(SqlParser.LOW_PRIORITY);
				}
			}

			this.state = 3130;
			this._errHandler.sync(this);
			switch ( this._interp.adaptivePredict(this._input, 431, this._ctx) ) {
			case 1:
				{
				this.state = 3129;
				this.match(SqlParser.QUICK);
				}
				break;
			}
			this.state = 3133;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===70) {
				{
				this.state = 3132;
				this.match(SqlParser.IGNORE);
				}
			}

			this.state = 3174;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case 32:
			case 35:
			case 44:
			case 87:
			case 105:
			case 133:
			case 151:
			case 199:
			case 200:
			case 201:
			case 202:
			case 203:
			case 216:
			case 219:
			case 221:
			case 233:
			case 234:
			case 239:
			case 262:
			case 270:
			case 271:
			case 272:
			case 273:
			case 274:
			case 275:
			case 276:
			case 277:
			case 278:
			case 279:
			case 280:
			case 281:
			case 282:
			case 283:
			case 284:
			case 285:
			case 286:
			case 287:
			case 288:
			case 289:
			case 290:
			case 291:
			case 292:
			case 293:
			case 294:
			case 295:
			case 296:
			case 297:
			case 298:
			case 299:
			case 300:
			case 301:
			case 302:
			case 303:
			case 304:
			case 305:
			case 306:
			case 307:
			case 308:
			case 309:
			case 310:
			case 311:
			case 312:
			case 313:
			case 314:
			case 315:
			case 316:
			case 317:
			case 318:
			case 319:
			case 320:
			case 321:
			case 322:
			case 323:
			case 324:
			case 325:
			case 326:
			case 327:
			case 328:
			case 329:
			case 330:
			case 331:
			case 332:
			case 333:
			case 334:
			case 335:
			case 336:
			case 337:
			case 338:
			case 339:
			case 340:
			case 341:
			case 342:
			case 343:
			case 344:
			case 345:
			case 346:
			case 347:
			case 348:
			case 349:
			case 350:
			case 351:
			case 352:
			case 353:
			case 354:
			case 355:
			case 356:
			case 357:
			case 358:
			case 359:
			case 360:
			case 361:
			case 362:
			case 363:
			case 364:
			case 365:
			case 366:
			case 367:
			case 368:
			case 369:
			case 370:
			case 371:
			case 372:
			case 373:
			case 374:
			case 375:
			case 376:
			case 377:
			case 378:
			case 379:
			case 380:
			case 381:
			case 382:
			case 383:
			case 384:
			case 385:
			case 386:
			case 387:
			case 388:
			case 389:
			case 390:
			case 391:
			case 392:
			case 393:
			case 394:
			case 395:
			case 396:
			case 397:
			case 398:
			case 399:
			case 400:
			case 401:
			case 402:
			case 403:
			case 404:
			case 405:
			case 406:
			case 407:
			case 408:
			case 409:
			case 410:
			case 411:
			case 412:
			case 413:
			case 414:
			case 415:
			case 416:
			case 417:
			case 418:
			case 419:
			case 420:
			case 421:
			case 422:
			case 423:
			case 424:
			case 425:
			case 426:
			case 427:
			case 428:
			case 429:
			case 430:
			case 431:
			case 432:
			case 433:
			case 434:
			case 435:
			case 436:
			case 437:
			case 438:
			case 439:
			case 440:
			case 441:
			case 442:
			case 443:
			case 444:
			case 445:
			case 446:
			case 447:
			case 448:
			case 449:
			case 450:
			case 451:
			case 452:
			case 453:
			case 454:
			case 455:
			case 456:
			case 457:
			case 458:
			case 459:
			case 460:
			case 461:
			case 462:
			case 463:
			case 464:
			case 465:
			case 466:
			case 467:
			case 468:
			case 469:
			case 470:
			case 471:
			case 472:
			case 473:
			case 474:
			case 475:
			case 476:
			case 477:
			case 478:
			case 479:
			case 480:
			case 481:
			case 482:
			case 483:
			case 484:
			case 485:
			case 486:
			case 487:
			case 488:
			case 489:
			case 490:
			case 491:
			case 492:
			case 493:
			case 494:
			case 495:
			case 496:
			case 497:
			case 498:
			case 499:
			case 500:
			case 501:
			case 502:
			case 503:
			case 504:
			case 505:
			case 506:
			case 507:
			case 508:
			case 509:
			case 510:
			case 511:
			case 512:
			case 513:
			case 514:
			case 515:
			case 516:
			case 517:
			case 518:
			case 519:
			case 520:
			case 521:
			case 522:
			case 523:
			case 524:
			case 525:
			case 526:
			case 527:
			case 528:
			case 529:
			case 530:
			case 531:
			case 532:
			case 533:
			case 534:
			case 535:
			case 536:
			case 537:
			case 538:
			case 539:
			case 540:
			case 541:
			case 542:
			case 543:
			case 544:
			case 545:
			case 547:
			case 548:
			case 549:
			case 550:
			case 551:
			case 552:
			case 553:
			case 554:
			case 555:
			case 556:
			case 557:
			case 558:
			case 559:
			case 560:
			case 561:
			case 562:
			case 563:
			case 564:
			case 565:
			case 566:
			case 567:
			case 568:
			case 569:
			case 570:
			case 571:
			case 572:
			case 573:
			case 574:
			case 575:
			case 576:
			case 577:
			case 578:
			case 580:
			case 581:
			case 582:
			case 583:
			case 584:
			case 585:
			case 586:
			case 587:
			case 588:
			case 593:
			case 594:
			case 595:
			case 596:
			case 597:
			case 598:
			case 599:
			case 600:
			case 601:
			case 602:
			case 603:
			case 604:
			case 605:
			case 606:
			case 607:
			case 608:
			case 609:
			case 610:
			case 612:
			case 613:
			case 614:
			case 615:
			case 616:
			case 617:
			case 618:
			case 619:
			case 620:
			case 621:
			case 622:
			case 623:
			case 624:
			case 625:
			case 626:
			case 627:
			case 628:
			case 629:
			case 630:
			case 631:
			case 632:
			case 633:
			case 634:
			case 635:
			case 636:
			case 637:
			case 638:
			case 639:
			case 640:
			case 641:
			case 642:
			case 643:
			case 644:
			case 645:
			case 646:
			case 647:
			case 648:
			case 649:
			case 650:
			case 651:
			case 652:
			case 653:
			case 654:
			case 655:
			case 656:
			case 657:
			case 658:
			case 659:
			case 660:
			case 661:
			case 662:
			case 663:
			case 664:
			case 665:
			case 666:
			case 667:
			case 668:
			case 669:
			case 670:
			case 671:
			case 672:
			case 673:
			case 674:
			case 675:
			case 676:
			case 677:
			case 678:
			case 679:
			case 680:
			case 681:
			case 682:
			case 683:
			case 684:
			case 685:
			case 686:
			case 687:
			case 688:
			case 689:
			case 690:
			case 691:
			case 692:
			case 693:
			case 696:
			case 697:
			case 698:
			case 699:
			case 700:
			case 701:
			case 702:
			case 703:
			case 704:
			case 705:
			case 706:
			case 707:
			case 708:
			case 709:
			case 710:
			case 711:
			case 712:
			case 713:
			case 714:
			case 715:
			case 716:
			case 717:
			case 718:
			case 719:
			case 720:
			case 721:
			case 722:
			case 723:
			case 724:
			case 725:
			case 726:
			case 727:
			case 728:
			case 729:
			case 730:
			case 731:
			case 732:
			case 733:
			case 734:
			case 735:
			case 736:
			case 737:
			case 738:
			case 739:
			case 740:
			case 741:
			case 742:
			case 743:
			case 744:
			case 745:
			case 746:
			case 747:
			case 748:
			case 749:
			case 750:
			case 751:
			case 752:
			case 753:
			case 754:
			case 755:
			case 756:
			case 757:
			case 758:
			case 759:
			case 760:
			case 761:
			case 762:
			case 763:
			case 764:
			case 765:
			case 766:
			case 767:
			case 768:
			case 769:
			case 770:
			case 771:
			case 772:
			case 773:
			case 774:
			case 775:
			case 776:
			case 777:
			case 778:
			case 779:
			case 780:
			case 781:
			case 782:
			case 783:
			case 784:
			case 785:
			case 786:
			case 787:
			case 788:
			case 789:
			case 790:
			case 791:
			case 792:
			case 793:
			case 794:
			case 795:
			case 796:
			case 797:
			case 798:
			case 799:
			case 800:
			case 801:
			case 802:
			case 803:
			case 804:
			case 805:
			case 806:
			case 807:
			case 808:
			case 809:
			case 810:
			case 811:
			case 812:
			case 813:
			case 814:
			case 815:
			case 816:
			case 817:
			case 818:
			case 819:
			case 820:
			case 821:
			case 822:
			case 823:
			case 824:
			case 825:
			case 826:
			case 827:
			case 828:
			case 829:
			case 830:
			case 831:
			case 832:
			case 833:
			case 834:
			case 835:
			case 836:
			case 837:
			case 838:
			case 839:
			case 840:
			case 841:
			case 842:
			case 843:
			case 844:
			case 845:
			case 846:
			case 847:
			case 848:
			case 849:
			case 850:
			case 851:
			case 852:
			case 853:
			case 854:
			case 855:
			case 856:
			case 857:
			case 858:
			case 859:
			case 860:
			case 861:
			case 862:
			case 863:
			case 864:
			case 865:
			case 866:
			case 867:
			case 868:
			case 869:
			case 870:
			case 871:
			case 872:
			case 873:
			case 874:
			case 875:
			case 876:
			case 877:
			case 878:
			case 879:
			case 880:
			case 881:
			case 882:
			case 883:
			case 884:
			case 885:
			case 886:
			case 887:
			case 888:
			case 889:
			case 890:
			case 891:
			case 892:
			case 893:
			case 894:
			case 895:
			case 896:
			case 897:
			case 898:
			case 899:
			case 900:
			case 901:
			case 902:
			case 903:
			case 904:
			case 905:
			case 906:
			case 907:
			case 908:
			case 909:
			case 910:
			case 911:
			case 912:
			case 913:
			case 914:
			case 915:
			case 916:
			case 917:
			case 918:
			case 919:
			case 920:
			case 921:
			case 922:
			case 923:
			case 924:
			case 925:
			case 926:
			case 927:
			case 928:
			case 929:
			case 930:
			case 931:
			case 932:
			case 933:
			case 934:
			case 935:
			case 936:
			case 937:
			case 938:
			case 939:
			case 940:
			case 941:
			case 942:
			case 943:
			case 944:
			case 945:
			case 946:
			case 947:
			case 948:
			case 949:
			case 950:
			case 951:
			case 952:
			case 953:
			case 954:
			case 955:
			case 956:
			case 957:
			case 958:
			case 959:
			case 960:
			case 961:
			case 962:
			case 963:
			case 964:
			case 965:
			case 966:
			case 967:
			case 968:
			case 969:
			case 970:
			case 971:
			case 972:
			case 973:
			case 974:
			case 975:
			case 976:
			case 977:
			case 978:
			case 979:
			case 980:
			case 981:
			case 982:
			case 983:
			case 984:
			case 985:
			case 986:
			case 987:
			case 988:
			case 989:
			case 990:
			case 991:
			case 992:
			case 993:
			case 1032:
			case 1035:
			case 1043:
			case 1044:
				{
				this.state = 3135;
				this.tableName();
				this.state = 3138;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===1019) {
					{
					this.state = 3136;
					this.match(SqlParser.DOT);
					this.state = 3137;
					this.match(SqlParser.STAR);
					}
				}

				this.state = 3148;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				while (_la===1022) {
					{
					{
					this.state = 3140;
					this.match(SqlParser.COMMA);
					this.state = 3141;
					this.tableName();
					this.state = 3144;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
					if (_la===1019) {
						{
						this.state = 3142;
						this.match(SqlParser.DOT);
						this.state = 3143;
						this.match(SqlParser.STAR);
						}
					}

					}
					}
					this.state = 3150;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
				}
				this.state = 3151;
				this.match(SqlParser.FROM);
				this.state = 3152;
				this.tableSources();
				}
				break;
			case 61:
				{
				this.state = 3154;
				this.match(SqlParser.FROM);
				this.state = 3155;
				this.tableName();
				this.state = 3158;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===1019) {
					{
					this.state = 3156;
					this.match(SqlParser.DOT);
					this.state = 3157;
					this.match(SqlParser.STAR);
					}
				}

				this.state = 3168;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				while (_la===1022) {
					{
					{
					this.state = 3160;
					this.match(SqlParser.COMMA);
					this.state = 3161;
					this.tableName();
					this.state = 3164;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
					if (_la===1019) {
						{
						this.state = 3162;
						this.match(SqlParser.DOT);
						this.state = 3163;
						this.match(SqlParser.STAR);
						}
					}

					}
					}
					this.state = 3170;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
				}
				this.state = 3171;
				this.match(SqlParser.USING);
				this.state = 3172;
				this.tableSources();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			this.state = 3178;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===172) {
				{
				this.state = 3176;
				this.match(SqlParser.WHERE);
				this.state = 3177;
				this.expression(0);
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public handlerOpenStatement(): HandlerOpenStatementContext {
		let localctx: HandlerOpenStatementContext = new HandlerOpenStatementContext(this, this._ctx, this.state);
		this.enterRule(localctx, 196, SqlParser.RULE_handlerOpenStatement);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 3180;
			this.match(SqlParser.HANDLER);
			this.state = 3181;
			this.tableName();
			this.state = 3182;
			this.match(SqlParser.OPEN);
			this.state = 3187;
			this._errHandler.sync(this);
			switch ( this._interp.adaptivePredict(this._input, 442, this._ctx) ) {
			case 1:
				{
				this.state = 3184;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===11) {
					{
					this.state = 3183;
					this.match(SqlParser.AS);
					}
				}

				this.state = 3186;
				this.uid();
				}
				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 handlerReadIndexStatement(): HandlerReadIndexStatementContext {
		let localctx: HandlerReadIndexStatementContext = new HandlerReadIndexStatementContext(this, this._ctx, this.state);
		this.enterRule(localctx, 198, SqlParser.RULE_handlerReadIndexStatement);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 3189;
			this.match(SqlParser.HANDLER);
			this.state = 3190;
			this.tableName();
			this.state = 3191;
			this.match(SqlParser.READ);
			this.state = 3192;
			localctx._index = this.uid();
			this.state = 3199;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case 1011:
			case 1012:
			case 1013:
			case 1014:
				{
				this.state = 3193;
				this.comparisonOperator();
				this.state = 3194;
				this.match(SqlParser.LR_BRACKET);
				this.state = 3195;
				this.constants();
				this.state = 3196;
				this.match(SqlParser.RR_BRACKET);
				}
				break;
			case 362:
			case 397:
			case 447:
			case 477:
				{
				this.state = 3198;
				localctx._moveOrder = this._input.LT(1);
				_la = this._input.LA(1);
				if(!(_la===362 || _la===397 || _la===447 || _la===477)) {
				    localctx._moveOrder = this._errHandler.recoverInline(this);
				}
				else {
					this._errHandler.reportMatch(this);
				    this.consume();
				}
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			this.state = 3203;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===172) {
				{
				this.state = 3201;
				this.match(SqlParser.WHERE);
				this.state = 3202;
				this.expression(0);
				}
			}

			this.state = 3207;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===89) {
				{
				this.state = 3205;
				this.match(SqlParser.LIMIT);
				this.state = 3206;
				this.limitClauseAtom();
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public handlerReadStatement(): HandlerReadStatementContext {
		let localctx: HandlerReadStatementContext = new HandlerReadStatementContext(this, this._ctx, this.state);
		this.enterRule(localctx, 200, SqlParser.RULE_handlerReadStatement);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 3209;
			this.match(SqlParser.HANDLER);
			this.state = 3210;
			this.tableName();
			this.state = 3211;
			this.match(SqlParser.READ);
			this.state = 3212;
			localctx._moveOrder = this._input.LT(1);
			_la = this._input.LA(1);
			if(!(_la===362 || _la===447)) {
			    localctx._moveOrder = this._errHandler.recoverInline(this);
			}
			else {
				this._errHandler.reportMatch(this);
			    this.consume();
			}
			this.state = 3215;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===172) {
				{
				this.state = 3213;
				this.match(SqlParser.WHERE);
				this.state = 3214;
				this.expression(0);
				}
			}

			this.state = 3219;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===89) {
				{
				this.state = 3217;
				this.match(SqlParser.LIMIT);
				this.state = 3218;
				this.limitClauseAtom();
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public handlerCloseStatement(): HandlerCloseStatementContext {
		let localctx: HandlerCloseStatementContext = new HandlerCloseStatementContext(this, this._ctx, this.state);
		this.enterRule(localctx, 202, SqlParser.RULE_handlerCloseStatement);
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 3221;
			this.match(SqlParser.HANDLER);
			this.state = 3222;
			this.tableName();
			this.state = 3223;
			this.match(SqlParser.CLOSE);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public singleUpdateStatement(): SingleUpdateStatementContext {
		let localctx: SingleUpdateStatementContext = new SingleUpdateStatementContext(this, this._ctx, this.state);
		this.enterRule(localctx, 204, SqlParser.RULE_singleUpdateStatement);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 3225;
			this.match(SqlParser.UPDATE);
			this.state = 3227;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===95) {
				{
				this.state = 3226;
				localctx._priority = this.match(SqlParser.LOW_PRIORITY);
				}
			}

			this.state = 3230;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===70) {
				{
				this.state = 3229;
				this.match(SqlParser.IGNORE);
				}
			}

			this.state = 3232;
			this.tableName();
			this.state = 3237;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===11 || ((((_la - 32)) & ~0x1F) === 0 && ((1 << (_la - 32)) & 4105) !== 0) || _la===87 || _la===105 || _la===133 || _la===151 || ((((_la - 199)) & ~0x1F) === 0 && ((1 << (_la - 199)) & 5373983) !== 0) || ((((_la - 233)) & ~0x1F) === 0 && ((1 << (_la - 233)) & 536870979) !== 0) || ((((_la - 270)) & ~0x1F) === 0 && ((1 << (_la - 270)) & 4294967295) !== 0) || ((((_la - 302)) & ~0x1F) === 0 && ((1 << (_la - 302)) & 4294967295) !== 0) || ((((_la - 334)) & ~0x1F) === 0 && ((1 << (_la - 334)) & 4294967295) !== 0) || ((((_la - 366)) & ~0x1F) === 0 && ((1 << (_la - 366)) & 4294967295) !== 0) || ((((_la - 398)) & ~0x1F) === 0 && ((1 << (_la - 398)) & 4294967295) !== 0) || ((((_la - 430)) & ~0x1F) === 0 && ((1 << (_la - 430)) & 4294967295) !== 0) || ((((_la - 462)) & ~0x1F) === 0 && ((1 << (_la - 462)) & 4294967295) !== 0) || ((((_la - 494)) & ~0x1F) === 0 && ((1 << (_la - 494)) & 4294967295) !== 0) || ((((_la - 526)) & ~0x1F) === 0 && ((1 << (_la - 526)) & 4293918719) !== 0) || ((((_la - 558)) & ~0x1F) === 0 && ((1 << (_la - 558)) & 2145386495) !== 0) || ((((_la - 593)) & ~0x1F) === 0 && ((1 << (_la - 593)) & 4294705151) !== 0) || ((((_la - 625)) & ~0x1F) === 0 && ((1 << (_la - 625)) & 4294967295) !== 0) || ((((_la - 657)) & ~0x1F) === 0 && ((1 << (_la - 657)) & 4294967295) !== 0) || ((((_la - 689)) & ~0x1F) === 0 && ((1 << (_la - 689)) & 4294967199) !== 0) || ((((_la - 721)) & ~0x1F) === 0 && ((1 << (_la - 721)) & 4294967295) !== 0) || ((((_la - 753)) & ~0x1F) === 0 && ((1 << (_la - 753)) & 4294967295) !== 0) || ((((_la - 785)) & ~0x1F) === 0 && ((1 << (_la - 785)) & 4294967295) !== 0) || ((((_la - 817)) & ~0x1F) === 0 && ((1 << (_la - 817)) & 4294967295) !== 0) || ((((_la - 849)) & ~0x1F) === 0 && ((1 << (_la - 849)) & 4294967295) !== 0) || ((((_la - 881)) & ~0x1F) === 0 && ((1 << (_la - 881)) & 4294967295) !== 0) || ((((_la - 913)) & ~0x1F) === 0 && ((1 << (_la - 913)) & 4294967295) !== 0) || ((((_la - 945)) & ~0x1F) === 0 && ((1 << (_la - 945)) & 4294967295) !== 0) || ((((_la - 977)) & ~0x1F) === 0 && ((1 << (_la - 977)) & 131071) !== 0) || ((((_la - 1032)) & ~0x1F) === 0 && ((1 << (_la - 1032)) & 6153) !== 0)) {
				{
				this.state = 3234;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===11) {
					{
					this.state = 3233;
					this.match(SqlParser.AS);
					}
				}

				this.state = 3236;
				this.uid();
				}
			}

			this.state = 3239;
			this.match(SqlParser.SET);
			this.state = 3240;
			this.updatedElement();
			this.state = 3245;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la===1022) {
				{
				{
				this.state = 3241;
				this.match(SqlParser.COMMA);
				this.state = 3242;
				this.updatedElement();
				}
				}
				this.state = 3247;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			}
			this.state = 3250;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===172) {
				{
				this.state = 3248;
				this.match(SqlParser.WHERE);
				this.state = 3249;
				this.expression(0);
				}
			}

			this.state = 3253;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===111) {
				{
				this.state = 3252;
				this.orderByClause();
				}
			}

			this.state = 3256;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===89) {
				{
				this.state = 3255;
				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 multipleUpdateStatement(): MultipleUpdateStatementContext {
		let localctx: MultipleUpdateStatementContext = new MultipleUpdateStatementContext(this, this._ctx, this.state);
		this.enterRule(localctx, 206, SqlParser.RULE_multipleUpdateStatement);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 3258;
			this.match(SqlParser.UPDATE);
			this.state = 3260;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===95) {
				{
				this.state = 3259;
				localctx._priority = this.match(SqlParser.LOW_PRIORITY);
				}
			}

			this.state = 3263;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===70) {
				{
				this.state = 3262;
				this.match(SqlParser.IGNORE);
				}
			}

			this.state = 3265;
			this.tableSources();
			this.state = 3266;
			this.match(SqlParser.SET);
			this.state = 3267;
			this.updatedElement();
			this.state = 3272;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la===1022) {
				{
				{
				this.state = 3268;
				this.match(SqlParser.COMMA);
				this.state = 3269;
				this.updatedElement();
				}
				}
				this.state = 3274;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			}
			this.state = 3277;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===172) {
				{
				this.state = 3275;
				this.match(SqlParser.WHERE);
				this.state = 3276;
				this.expression(0);
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				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, this._ctx, this.state);
		this.enterRule(localctx, 208, SqlParser.RULE_orderByClause);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 3279;
			this.match(SqlParser.ORDER);
			this.state = 3280;
			this.match(SqlParser.BY);
			this.state = 3281;
			this.orderByExpression();
			this.state = 3286;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la===1022) {
				{
				{
				this.state = 3282;
				this.match(SqlParser.COMMA);
				this.state = 3283;
				this.orderByExpression();
				}
				}
				this.state = 3288;
				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 orderByExpression(): OrderByExpressionContext {
		let localctx: OrderByExpressionContext = new OrderByExpressionContext(this, this._ctx, this.state);
		this.enterRule(localctx, 210, SqlParser.RULE_orderByExpression);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 3289;
			this.expression(0);
			this.state = 3291;
			this._errHandler.sync(this);
			switch ( this._interp.adaptivePredict(this._input, 461, this._ctx) ) {
			case 1:
				{
				this.state = 3290;
				localctx._order = this._input.LT(1);
				_la = this._input.LA(1);
				if(!(_la===12 || _la===41)) {
				    localctx._order = this._errHandler.recoverInline(this);
				}
				else {
					this._errHandler.reportMatch(this);
				    this.consume();
				}
				}
				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 tableSources(): TableSourcesContext {
		let localctx: TableSourcesContext = new TableSourcesContext(this, this._ctx, this.state);
		this.enterRule(localctx, 212, SqlParser.RULE_tableSources);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 3293;
			this.tableSource();
			this.state = 3298;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la===1022) {
				{
				{
				this.state = 3294;
				this.match(SqlParser.COMMA);
				this.state = 3295;
				this.tableSource();
				}
				}
				this.state = 3300;
				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 tableSource(): TableSourceContext {
		let localctx: TableSourceContext = new TableSourceContext(this, this._ctx, this.state);
		this.enterRule(localctx, 214, SqlParser.RULE_tableSource);
		let _la: number;
		try {
			let _alt: number;
			this.state = 3318;
			this._errHandler.sync(this);
			switch ( this._interp.adaptivePredict(this._input, 465, this._ctx) ) {
			case 1:
				localctx = new TableSourceBaseContext(this, localctx);
				this.enterOuterAlt(localctx, 1);
				{
				this.state = 3301;
				this.tableSourceItem();
				this.state = 3305;
				this._errHandler.sync(this);
				_alt = this._interp.adaptivePredict(this._input, 463, this._ctx);
				while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) {
					if (_alt === 1) {
						{
						{
						this.state = 3302;
						this.joinPart();
						}
						}
					}
					this.state = 3307;
					this._errHandler.sync(this);
					_alt = this._interp.adaptivePredict(this._input, 463, this._ctx);
				}
				}
				break;
			case 2:
				localctx = new TableSourceNestedContext(this, localctx);
				this.enterOuterAlt(localctx, 2);
				{
				this.state = 3308;
				this.match(SqlParser.LR_BRACKET);
				this.state = 3309;
				this.tableSourceItem();
				this.state = 3313;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				while (_la===31 || ((((_la - 74)) & ~0x1F) === 0 && ((1 << (_la - 74)) & 134226049) !== 0) || _la===133 || _la===153) {
					{
					{
					this.state = 3310;
					this.joinPart();
					}
					}
					this.state = 3315;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
				}
				this.state = 3316;
				this.match(SqlParser.RR_BRACKET);
				}
				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 tableSourceItem(): TableSourceItemContext {
		let localctx: TableSourceItemContext = new TableSourceItemContext(this, this._ctx, this.state);
		this.enterRule(localctx, 216, SqlParser.RULE_tableSourceItem);
		let _la: number;
		try {
			let _alt: number;
			this.state = 3360;
			this._errHandler.sync(this);
			switch ( this._interp.adaptivePredict(this._input, 473, this._ctx) ) {
			case 1:
				localctx = new AtomTableItemContext(this, localctx);
				this.enterOuterAlt(localctx, 1);
				{
				this.state = 3320;
				this.tableName();
				this.state = 3326;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===115) {
					{
					this.state = 3321;
					this.match(SqlParser.PARTITION);
					this.state = 3322;
					this.match(SqlParser.LR_BRACKET);
					this.state = 3323;
					this.uidList();
					this.state = 3324;
					this.match(SqlParser.RR_BRACKET);
					}
				}

				this.state = 3332;
				this._errHandler.sync(this);
				switch ( this._interp.adaptivePredict(this._input, 468, this._ctx) ) {
				case 1:
					{
					this.state = 3329;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
					if (_la===11) {
						{
						this.state = 3328;
						this.match(SqlParser.AS);
						}
					}

					this.state = 3331;
					(localctx as AtomTableItemContext)._alias = this.uid();
					}
					break;
				}
				this.state = 3342;
				this._errHandler.sync(this);
				switch ( this._interp.adaptivePredict(this._input, 470, this._ctx) ) {
				case 1:
					{
					this.state = 3334;
					this.indexHint();
					this.state = 3339;
					this._errHandler.sync(this);
					_alt = this._interp.adaptivePredict(this._input, 469, this._ctx);
					while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) {
						if (_alt === 1) {
							{
							{
							this.state = 3335;
							this.match(SqlParser.COMMA);
							this.state = 3336;
							this.indexHint();
							}
							}
						}
						this.state = 3341;
						this._errHandler.sync(this);
						_alt = this._interp.adaptivePredict(this._input, 469, this._ctx);
					}
					}
					break;
				}
				}
				break;
			case 2:
				localctx = new SubqueryTableItemContext(this, localctx);
				this.enterOuterAlt(localctx, 2);
				{
				this.state = 3349;
				this._errHandler.sync(this);
				switch ( this._interp.adaptivePredict(this._input, 471, this._ctx) ) {
				case 1:
					{
					this.state = 3344;
					this.selectStatement();
					}
					break;
				case 2:
					{
					this.state = 3345;
					this.match(SqlParser.LR_BRACKET);
					this.state = 3346;
					(localctx as SubqueryTableItemContext)._parenthesisSubquery = this.selectStatement();
					this.state = 3347;
					this.match(SqlParser.RR_BRACKET);
					}
					break;
				}
				this.state = 3352;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===11) {
					{
					this.state = 3351;
					this.match(SqlParser.AS);
					}
				}

				this.state = 3354;
				(localctx as SubqueryTableItemContext)._alias = this.uid();
				}
				break;
			case 3:
				localctx = new TableSourcesItemContext(this, localctx);
				this.enterOuterAlt(localctx, 3);
				{
				this.state = 3356;
				this.match(SqlParser.LR_BRACKET);
				this.state = 3357;
				this.tableSources();
				this.state = 3358;
				this.match(SqlParser.RR_BRACKET);
				}
				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 indexHint(): IndexHintContext {
		let localctx: IndexHintContext = new IndexHintContext(this, this._ctx, this.state);
		this.enterRule(localctx, 218, SqlParser.RULE_indexHint);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 3362;
			localctx._indexHintAction = this._input.LT(1);
			_la = this._input.LA(1);
			if(!(_la===59 || _la===70 || _la===168)) {
			    localctx._indexHintAction = this._errHandler.recoverInline(this);
			}
			else {
				this._errHandler.reportMatch(this);
			    this.consume();
			}
			this.state = 3363;
			localctx._keyFormat = this._input.LT(1);
			_la = this._input.LA(1);
			if(!(_la===72 || _la===82)) {
			    localctx._keyFormat = this._errHandler.recoverInline(this);
			}
			else {
				this._errHandler.reportMatch(this);
			    this.consume();
			}
			this.state = 3366;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===58) {
				{
				this.state = 3364;
				this.match(SqlParser.FOR);
				this.state = 3365;
				this.indexHintType();
				}
			}

			this.state = 3368;
			this.match(SqlParser.LR_BRACKET);
			this.state = 3369;
			this.uidList();
			this.state = 3370;
			this.match(SqlParser.RR_BRACKET);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public indexHintType(): IndexHintTypeContext {
		let localctx: IndexHintTypeContext = new IndexHintTypeContext(this, this._ctx, this.state);
		this.enterRule(localctx, 220, SqlParser.RULE_indexHintType);
		try {
			this.state = 3377;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case 81:
				this.enterOuterAlt(localctx, 1);
				{
				this.state = 3372;
				this.match(SqlParser.JOIN);
				}
				break;
			case 111:
				this.enterOuterAlt(localctx, 2);
				{
				this.state = 3373;
				this.match(SqlParser.ORDER);
				this.state = 3374;
				this.match(SqlParser.BY);
				}
				break;
			case 66:
				this.enterOuterAlt(localctx, 3);
				{
				this.state = 3375;
				this.match(SqlParser.GROUP);
				this.state = 3376;
				this.match(SqlParser.BY);
				}
				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 joinPart(): JoinPartContext {
		let localctx: JoinPartContext = new JoinPartContext(this, this._ctx, this.state);
		this.enterRule(localctx, 222, SqlParser.RULE_joinPart);
		let _la: number;
		try {
			this.state = 3423;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case 31:
			case 74:
			case 81:
				localctx = new InnerJoinContext(this, localctx);
				this.enterOuterAlt(localctx, 1);
				{
				this.state = 3380;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===31 || _la===74) {
					{
					this.state = 3379;
					_la = this._input.LA(1);
					if(!(_la===31 || _la===74)) {
					this._errHandler.recoverInline(this);
					}
					else {
						this._errHandler.reportMatch(this);
					    this.consume();
					}
					}
				}

				this.state = 3382;
				this.match(SqlParser.JOIN);
				this.state = 3383;
				this.tableSourceItem();
				this.state = 3391;
				this._errHandler.sync(this);
				switch ( this._interp.adaptivePredict(this._input, 477, this._ctx) ) {
				case 1:
					{
					this.state = 3384;
					this.match(SqlParser.ON);
					this.state = 3385;
					this.expression(0);
					}
					break;
				case 2:
					{
					this.state = 3386;
					this.match(SqlParser.USING);
					this.state = 3387;
					this.match(SqlParser.LR_BRACKET);
					this.state = 3388;
					this.uidList();
					this.state = 3389;
					this.match(SqlParser.RR_BRACKET);
					}
					break;
				}
				}
				break;
			case 153:
				localctx = new StraightJoinContext(this, localctx);
				this.enterOuterAlt(localctx, 2);
				{
				this.state = 3393;
				this.match(SqlParser.STRAIGHT_JOIN);
				this.state = 3394;
				this.tableSourceItem();
				this.state = 3397;
				this._errHandler.sync(this);
				switch ( this._interp.adaptivePredict(this._input, 478, this._ctx) ) {
				case 1:
					{
					this.state = 3395;
					this.match(SqlParser.ON);
					this.state = 3396;
					this.expression(0);
					}
					break;
				}
				}
				break;
			case 87:
			case 133:
				localctx = new OuterJoinContext(this, localctx);
				this.enterOuterAlt(localctx, 3);
				{
				this.state = 3399;
				_la = this._input.LA(1);
				if(!(_la===87 || _la===133)) {
				this._errHandler.recoverInline(this);
				}
				else {
					this._errHandler.reportMatch(this);
				    this.consume();
				}
				this.state = 3401;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===113) {
					{
					this.state = 3400;
					this.match(SqlParser.OUTER);
					}
				}

				this.state = 3403;
				this.match(SqlParser.JOIN);
				this.state = 3404;
				this.tableSourceItem();
				this.state = 3412;
				this._errHandler.sync(this);
				switch (this._input.LA(1)) {
				case 106:
					{
					this.state = 3405;
					this.match(SqlParser.ON);
					this.state = 3406;
					this.expression(0);
					}
					break;
				case 169:
					{
					this.state = 3407;
					this.match(SqlParser.USING);
					this.state = 3408;
					this.match(SqlParser.LR_BRACKET);
					this.state = 3409;
					this.uidList();
					this.state = 3410;
					this.match(SqlParser.RR_BRACKET);
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				}
				break;
			case 101:
				localctx = new NaturalJoinContext(this, localctx);
				this.enterOuterAlt(localctx, 4);
				{
				this.state = 3414;
				this.match(SqlParser.NATURAL);
				this.state = 3419;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===87 || _la===133) {
					{
					this.state = 3415;
					_la = this._input.LA(1);
					if(!(_la===87 || _la===133)) {
					this._errHandler.recoverInline(this);
					}
					else {
						this._errHandler.reportMatch(this);
					    this.consume();
					}
					this.state = 3417;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
					if (_la===113) {
						{
						this.state = 3416;
						this.match(SqlParser.OUTER);
						}
					}

					}
				}

				this.state = 3421;
				this.match(SqlParser.JOIN);
				this.state = 3422;
				this.tableSourceItem();
				}
				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 queryExpression(): QueryExpressionContext {
		let localctx: QueryExpressionContext = new QueryExpressionContext(this, this._ctx, this.state);
		this.enterRule(localctx, 224, SqlParser.RULE_queryExpression);
		try {
			this.state = 3433;
			this._errHandler.sync(this);
			switch ( this._interp.adaptivePredict(this._input, 484, this._ctx) ) {
			case 1:
				this.enterOuterAlt(localctx, 1);
				{
				this.state = 3425;
				this.match(SqlParser.LR_BRACKET);
				this.state = 3426;
				this.querySpecification();
				this.state = 3427;
				this.match(SqlParser.RR_BRACKET);
				}
				break;
			case 2:
				this.enterOuterAlt(localctx, 2);
				{
				this.state = 3429;
				this.match(SqlParser.LR_BRACKET);
				this.state = 3430;
				this.queryExpression();
				this.state = 3431;
				this.match(SqlParser.RR_BRACKET);
				}
				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 queryExpressionNointo(): QueryExpressionNointoContext {
		let localctx: QueryExpressionNointoContext = new QueryExpressionNointoContext(this, this._ctx, this.state);
		this.enterRule(localctx, 226, SqlParser.RULE_queryExpressionNointo);
		try {
			this.state = 3443;
			this._errHandler.sync(this);
			switch ( this._interp.adaptivePredict(this._input, 485, this._ctx) ) {
			case 1:
				this.enterOuterAlt(localctx, 1);
				{
				this.state = 3435;
				this.match(SqlParser.LR_BRACKET);
				this.state = 3436;
				this.querySpecificationNointo();
				this.state = 3437;
				this.match(SqlParser.RR_BRACKET);
				}
				break;
			case 2:
				this.enterOuterAlt(localctx, 2);
				{
				this.state = 3439;
				this.match(SqlParser.LR_BRACKET);
				this.state = 3440;
				this.queryExpressionNointo();
				this.state = 3441;
				this.match(SqlParser.RR_BRACKET);
				}
				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 querySpecification(): QuerySpecificationContext {
		let localctx: QuerySpecificationContext = new QuerySpecificationContext(this, this._ctx, this.state);
		this.enterRule(localctx, 228, SqlParser.RULE_querySpecification);
		let _la: number;
		try {
			let _alt: number;
			this.state = 3485;
			this._errHandler.sync(this);
			switch ( this._interp.adaptivePredict(this._input, 496, this._ctx) ) {
			case 1:
				this.enterOuterAlt(localctx, 1);
				{
				this.state = 3445;
				this.match(SqlParser.SELECT);
				this.state = 3449;
				this._errHandler.sync(this);
				_alt = this._interp.adaptivePredict(this._input, 486, this._ctx);
				while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) {
					if (_alt === 1) {
						{
						{
						this.state = 3446;
						this.selectSpec();
						}
						}
					}
					this.state = 3451;
					this._errHandler.sync(this);
					_alt = this._interp.adaptivePredict(this._input, 486, this._ctx);
				}
				this.state = 3452;
				this.selectElements();
				this.state = 3454;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===78) {
					{
					this.state = 3453;
					this.selectIntoExpression();
					}
				}

				this.state = 3457;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===61) {
					{
					this.state = 3456;
					this.fromClause();
					}
				}

				this.state = 3460;
				this._errHandler.sync(this);
				switch ( this._interp.adaptivePredict(this._input, 489, this._ctx) ) {
				case 1:
					{
					this.state = 3459;
					this.orderByClause();
					}
					break;
				}
				this.state = 3463;
				this._errHandler.sync(this);
				switch ( this._interp.adaptivePredict(this._input, 490, this._ctx) ) {
				case 1:
					{
					this.state = 3462;
					this.limitClause();
					}
					break;
				}
				}
				break;
			case 2:
				this.enterOuterAlt(localctx, 2);
				{
				this.state = 3465;
				this.match(SqlParser.SELECT);
				this.state = 3469;
				this._errHandler.sync(this);
				_alt = this._interp.adaptivePredict(this._input, 491, this._ctx);
				while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) {
					if (_alt === 1) {
						{
						{
						this.state = 3466;
						this.selectSpec();
						}
						}
					}
					this.state = 3471;
					this._errHandler.sync(this);
					_alt = this._interp.adaptivePredict(this._input, 491, this._ctx);
				}
				this.state = 3472;
				this.selectElements();
				this.state = 3474;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===61) {
					{
					this.state = 3473;
					this.fromClause();
					}
				}

				this.state = 3477;
				this._errHandler.sync(this);
				switch ( this._interp.adaptivePredict(this._input, 493, this._ctx) ) {
				case 1:
					{
					this.state = 3476;
					this.orderByClause();
					}
					break;
				}
				this.state = 3480;
				this._errHandler.sync(this);
				switch ( this._interp.adaptivePredict(this._input, 494, this._ctx) ) {
				case 1:
					{
					this.state = 3479;
					this.limitClause();
					}
					break;
				}
				this.state = 3483;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===78) {
					{
					this.state = 3482;
					this.selectIntoExpression();
					}
				}

				}
				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 querySpecificationNointo(): QuerySpecificationNointoContext {
		let localctx: QuerySpecificationNointoContext = new QuerySpecificationNointoContext(this, this._ctx, this.state);
		this.enterRule(localctx, 230, SqlParser.RULE_querySpecificationNointo);
		let _la: number;
		try {
			let _alt: number;
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 3487;
			this.match(SqlParser.SELECT);
			this.state = 3491;
			this._errHandler.sync(this);
			_alt = this._interp.adaptivePredict(this._input, 497, this._ctx);
			while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) {
				if (_alt === 1) {
					{
					{
					this.state = 3488;
					this.selectSpec();
					}
					}
				}
				this.state = 3493;
				this._errHandler.sync(this);
				_alt = this._interp.adaptivePredict(this._input, 497, this._ctx);
			}
			this.state = 3494;
			this.selectElements();
			this.state = 3496;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===61) {
				{
				this.state = 3495;
				this.fromClause();
				}
			}

			this.state = 3499;
			this._errHandler.sync(this);
			switch ( this._interp.adaptivePredict(this._input, 499, this._ctx) ) {
			case 1:
				{
				this.state = 3498;
				this.orderByClause();
				}
				break;
			}
			this.state = 3502;
			this._errHandler.sync(this);
			switch ( this._interp.adaptivePredict(this._input, 500, this._ctx) ) {
			case 1:
				{
				this.state = 3501;
				this.limitClause();
				}
				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 unionParenthesis(): UnionParenthesisContext {
		let localctx: UnionParenthesisContext = new UnionParenthesisContext(this, this._ctx, this.state);
		this.enterRule(localctx, 232, SqlParser.RULE_unionParenthesis);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 3504;
			this.match(SqlParser.UNION);
			this.state = 3506;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===6 || _la===45) {
				{
				this.state = 3505;
				localctx._unionType = this._input.LT(1);
				_la = this._input.LA(1);
				if(!(_la===6 || _la===45)) {
				    localctx._unionType = this._errHandler.recoverInline(this);
				}
				else {
					this._errHandler.reportMatch(this);
				    this.consume();
				}
				}
			}

			this.state = 3508;
			this.queryExpressionNointo();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public unionStatement(): UnionStatementContext {
		let localctx: UnionStatementContext = new UnionStatementContext(this, this._ctx, this.state);
		this.enterRule(localctx, 234, SqlParser.RULE_unionStatement);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 3510;
			this.match(SqlParser.UNION);
			this.state = 3512;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===6 || _la===45) {
				{
				this.state = 3511;
				localctx._unionType = this._input.LT(1);
				_la = this._input.LA(1);
				if(!(_la===6 || _la===45)) {
				    localctx._unionType = this._errHandler.recoverInline(this);
				}
				else {
					this._errHandler.reportMatch(this);
				    this.consume();
				}
				}
			}

			this.state = 3516;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case 137:
				{
				this.state = 3514;
				this.querySpecificationNointo();
				}
				break;
			case 1020:
				{
				this.state = 3515;
				this.queryExpressionNointo();
				}
				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 selectSpec(): SelectSpecContext {
		let localctx: SelectSpecContext = new SelectSpecContext(this, this._ctx, this.state);
		this.enterRule(localctx, 236, SqlParser.RULE_selectSpec);
		let _la: number;
		try {
			this.state = 3526;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case 6:
			case 45:
			case 46:
				this.enterOuterAlt(localctx, 1);
				{
				this.state = 3518;
				_la = this._input.LA(1);
				if(!(_la===6 || _la===45 || _la===46)) {
				this._errHandler.recoverInline(this);
				}
				else {
					this._errHandler.reportMatch(this);
				    this.consume();
				}
				}
				break;
			case 68:
				this.enterOuterAlt(localctx, 2);
				{
				this.state = 3519;
				this.match(SqlParser.HIGH_PRIORITY);
				}
				break;
			case 153:
				this.enterOuterAlt(localctx, 3);
				{
				this.state = 3520;
				this.match(SqlParser.STRAIGHT_JOIN);
				}
				break;
			case 149:
				this.enterOuterAlt(localctx, 4);
				{
				this.state = 3521;
				this.match(SqlParser.SQL_SMALL_RESULT);
				}
				break;
			case 147:
				this.enterOuterAlt(localctx, 5);
				{
				this.state = 3522;
				this.match(SqlParser.SQL_BIG_RESULT);
				}
				break;
			case 534:
				this.enterOuterAlt(localctx, 6);
				{
				this.state = 3523;
				this.match(SqlParser.SQL_BUFFER_RESULT);
				}
				break;
			case 535:
			case 536:
				this.enterOuterAlt(localctx, 7);
				{
				this.state = 3524;
				_la = this._input.LA(1);
				if(!(_la===535 || _la===536)) {
				this._errHandler.recoverInline(this);
				}
				else {
					this._errHandler.reportMatch(this);
				    this.consume();
				}
				}
				break;
			case 148:
				this.enterOuterAlt(localctx, 8);
				{
				this.state = 3525;
				this.match(SqlParser.SQL_CALC_FOUND_ROWS);
				}
				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 selectElements(): SelectElementsContext {
		let localctx: SelectElementsContext = new SelectElementsContext(this, this._ctx, this.state);
		this.enterRule(localctx, 238, SqlParser.RULE_selectElements);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 3530;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case 1003:
				{
				this.state = 3528;
				localctx._star = this.match(SqlParser.STAR);
				}
				break;
			case 19:
			case 20:
			case 29:
			case 32:
			case 33:
			case 35:
			case 44:
			case 53:
			case 56:
			case 69:
			case 76:
			case 77:
			case 87:
			case 102:
			case 104:
			case 105:
			case 127:
			case 133:
			case 151:
			case 160:
			case 170:
			case 199:
			case 200:
			case 201:
			case 202:
			case 203:
			case 204:
			case 208:
			case 216:
			case 219:
			case 221:
			case 233:
			case 234:
			case 235:
			case 236:
			case 237:
			case 238:
			case 239:
			case 240:
			case 241:
			case 242:
			case 243:
			case 244:
			case 245:
			case 246:
			case 247:
			case 248:
			case 249:
			case 250:
			case 251:
			case 252:
			case 253:
			case 254:
			case 255:
			case 256:
			case 257:
			case 258:
			case 259:
			case 260:
			case 261:
			case 262:
			case 263:
			case 264:
			case 265:
			case 266:
			case 267:
			case 268:
			case 269:
			case 270:
			case 271:
			case 272:
			case 273:
			case 274:
			case 275:
			case 276:
			case 277:
			case 278:
			case 279:
			case 280:
			case 281:
			case 282:
			case 283:
			case 284:
			case 285:
			case 286:
			case 287:
			case 288:
			case 289:
			case 290:
			case 291:
			case 292:
			case 293:
			case 294:
			case 295:
			case 296:
			case 297:
			case 298:
			case 299:
			case 300:
			case 301:
			case 302:
			case 303:
			case 304:
			case 305:
			case 306:
			case 307:
			case 308:
			case 309:
			case 310:
			case 311:
			case 312:
			case 313:
			case 314:
			case 315:
			case 316:
			case 317:
			case 318:
			case 319:
			case 320:
			case 321:
			case 322:
			case 323:
			case 324:
			case 325:
			case 326:
			case 327:
			case 328:
			case 329:
			case 330:
			case 331:
			case 332:
			case 333:
			case 334:
			case 335:
			case 336:
			case 337:
			case 338:
			case 339:
			case 340:
			case 341:
			case 342:
			case 343:
			case 344:
			case 345:
			case 346:
			case 347:
			case 348:
			case 349:
			case 350:
			case 351:
			case 352:
			case 353:
			case 354:
			case 355:
			case 356:
			case 357:
			case 358:
			case 359:
			case 360:
			case 361:
			case 362:
			case 363:
			case 364:
			case 365:
			case 366:
			case 367:
			case 368:
			case 369:
			case 370:
			case 371:
			case 372:
			case 373:
			case 374:
			case 375:
			case 376:
			case 377:
			case 378:
			case 379:
			case 380:
			case 381:
			case 382:
			case 383:
			case 384:
			case 385:
			case 386:
			case 387:
			case 388:
			case 389:
			case 390:
			case 391:
			case 392:
			case 393:
			case 394:
			case 395:
			case 396:
			case 397:
			case 398:
			case 399:
			case 400:
			case 401:
			case 402:
			case 403:
			case 404:
			case 405:
			case 406:
			case 407:
			case 408:
			case 409:
			case 410:
			case 411:
			case 412:
			case 413:
			case 414:
			case 415:
			case 416:
			case 417:
			case 418:
			case 419:
			case 420:
			case 421:
			case 422:
			case 423:
			case 424:
			case 425:
			case 426:
			case 427:
			case 428:
			case 429:
			case 430:
			case 431:
			case 432:
			case 433:
			case 434:
			case 435:
			case 436:
			case 437:
			case 438:
			case 439:
			case 440:
			case 441:
			case 442:
			case 443:
			case 444:
			case 445:
			case 446:
			case 447:
			case 448:
			case 449:
			case 450:
			case 451:
			case 452:
			case 453:
			case 454:
			case 455:
			case 456:
			case 457:
			case 458:
			case 459:
			case 460:
			case 461:
			case 462:
			case 463:
			case 464:
			case 465:
			case 466:
			case 467:
			case 468:
			case 469:
			case 470:
			case 471:
			case 472:
			case 473:
			case 474:
			case 475:
			case 476:
			case 477:
			case 478:
			case 479:
			case 480:
			case 481:
			case 482:
			case 483:
			case 484:
			case 485:
			case 486:
			case 487:
			case 488:
			case 489:
			case 490:
			case 491:
			case 492:
			case 493:
			case 494:
			case 495:
			case 496:
			case 497:
			case 498:
			case 499:
			case 500:
			case 501:
			case 502:
			case 503:
			case 504:
			case 505:
			case 506:
			case 507:
			case 508:
			case 509:
			case 510:
			case 511:
			case 512:
			case 513:
			case 514:
			case 515:
			case 516:
			case 517:
			case 518:
			case 519:
			case 520:
			case 521:
			case 522:
			case 523:
			case 524:
			case 525:
			case 526:
			case 527:
			case 528:
			case 529:
			case 530:
			case 531:
			case 532:
			case 533:
			case 534:
			case 535:
			case 536:
			case 537:
			case 538:
			case 539:
			case 540:
			case 541:
			case 542:
			case 543:
			case 544:
			case 545:
			case 547:
			case 548:
			case 549:
			case 550:
			case 551:
			case 552:
			case 553:
			case 554:
			case 555:
			case 556:
			case 557:
			case 558:
			case 559:
			case 560:
			case 561:
			case 562:
			case 563:
			case 564:
			case 565:
			case 566:
			case 567:
			case 568:
			case 569:
			case 570:
			case 571:
			case 572:
			case 573:
			case 574:
			case 575:
			case 576:
			case 577:
			case 578:
			case 580:
			case 581:
			case 582:
			case 583:
			case 584:
			case 585:
			case 586:
			case 587:
			case 588:
			case 593:
			case 594:
			case 595:
			case 596:
			case 597:
			case 598:
			case 599:
			case 600:
			case 601:
			case 602:
			case 603:
			case 604:
			case 605:
			case 606:
			case 607:
			case 608:
			case 609:
			case 610:
			case 612:
			case 613:
			case 614:
			case 615:
			case 616:
			case 617:
			case 618:
			case 619:
			case 620:
			case 621:
			case 622:
			case 623:
			case 624:
			case 625:
			case 626:
			case 627:
			case 628:
			case 629:
			case 630:
			case 631:
			case 632:
			case 633:
			case 634:
			case 635:
			case 636:
			case 637:
			case 638:
			case 639:
			case 640:
			case 641:
			case 642:
			case 643:
			case 644:
			case 645:
			case 646:
			case 647:
			case 648:
			case 649:
			case 650:
			case 651:
			case 652:
			case 653:
			case 654:
			case 655:
			case 656:
			case 657:
			case 658:
			case 659:
			case 660:
			case 661:
			case 662:
			case 663:
			case 664:
			case 665:
			case 666:
			case 667:
			case 668:
			case 669:
			case 670:
			case 671:
			case 672:
			case 673:
			case 674:
			case 675:
			case 676:
			case 677:
			case 678:
			case 679:
			case 680:
			case 681:
			case 682:
			case 683:
			case 684:
			case 685:
			case 686:
			case 687:
			case 688:
			case 689:
			case 690:
			case 691:
			case 692:
			case 693:
			case 696:
			case 697:
			case 698:
			case 699:
			case 700:
			case 701:
			case 702:
			case 703:
			case 704:
			case 705:
			case 706:
			case 707:
			case 708:
			case 709:
			case 710:
			case 711:
			case 712:
			case 713:
			case 714:
			case 715:
			case 716:
			case 717:
			case 718:
			case 719:
			case 720:
			case 721:
			case 722:
			case 723:
			case 724:
			case 725:
			case 726:
			case 727:
			case 728:
			case 729:
			case 730:
			case 731:
			case 732:
			case 733:
			case 734:
			case 735:
			case 736:
			case 737:
			case 738:
			case 739:
			case 740:
			case 741:
			case 742:
			case 743:
			case 744:
			case 745:
			case 746:
			case 747:
			case 748:
			case 749:
			case 750:
			case 751:
			case 752:
			case 753:
			case 754:
			case 755:
			case 756:
			case 757:
			case 758:
			case 759:
			case 760:
			case 761:
			case 762:
			case 763:
			case 764:
			case 765:
			case 766:
			case 767:
			case 768:
			case 769:
			case 770:
			case 771:
			case 772:
			case 773:
			case 774:
			case 775:
			case 776:
			case 777:
			case 778:
			case 779:
			case 780:
			case 781:
			case 782:
			case 783:
			case 784:
			case 785:
			case 786:
			case 787:
			case 788:
			case 789:
			case 790:
			case 791:
			case 792:
			case 793:
			case 794:
			case 795:
			case 796:
			case 797:
			case 798:
			case 799:
			case 800:
			case 801:
			case 802:
			case 803:
			case 804:
			case 805:
			case 806:
			case 807:
			case 808:
			case 809:
			case 810:
			case 811:
			case 812:
			case 813:
			case 814:
			case 815:
			case 816:
			case 817:
			case 818:
			case 819:
			case 820:
			case 821:
			case 822:
			case 823:
			case 824:
			case 825:
			case 826:
			case 827:
			case 828:
			case 829:
			case 830:
			case 831:
			case 832:
			case 833:
			case 834:
			case 835:
			case 836:
			case 837:
			case 838:
			case 839:
			case 840:
			case 841:
			case 842:
			case 843:
			case 844:
			case 845:
			case 846:
			case 847:
			case 848:
			case 849:
			case 850:
			case 851:
			case 852:
			case 853:
			case 854:
			case 855:
			case 856:
			case 857:
			case 858:
			case 859:
			case 860:
			case 861:
			case 862:
			case 863:
			case 864:
			case 865:
			case 866:
			case 867:
			case 868:
			case 869:
			case 870:
			case 871:
			case 872:
			case 873:
			case 874:
			case 875:
			case 876:
			case 877:
			case 878:
			case 879:
			case 880:
			case 881:
			case 882:
			case 883:
			case 884:
			case 885:
			case 886:
			case 887:
			case 888:
			case 889:
			case 890:
			case 891:
			case 892:
			case 893:
			case 894:
			case 895:
			case 896:
			case 897:
			case 898:
			case 899:
			case 900:
			case 901:
			case 902:
			case 903:
			case 904:
			case 905:
			case 906:
			case 907:
			case 908:
			case 909:
			case 910:
			case 911:
			case 912:
			case 913:
			case 914:
			case 915:
			case 916:
			case 917:
			case 918:
			case 919:
			case 920:
			case 921:
			case 922:
			case 923:
			case 924:
			case 925:
			case 926:
			case 927:
			case 928:
			case 929:
			case 930:
			case 931:
			case 932:
			case 933:
			case 934:
			case 935:
			case 936:
			case 937:
			case 938:
			case 939:
			case 940:
			case 941:
			case 942:
			case 943:
			case 944:
			case 945:
			case 946:
			case 947:
			case 948:
			case 949:
			case 950:
			case 951:
			case 952:
			case 953:
			case 954:
			case 955:
			case 956:
			case 957:
			case 958:
			case 959:
			case 960:
			case 961:
			case 962:
			case 963:
			case 964:
			case 965:
			case 966:
			case 967:
			case 968:
			case 969:
			case 970:
			case 971:
			case 972:
			case 973:
			case 974:
			case 975:
			case 976:
			case 977:
			case 978:
			case 979:
			case 980:
			case 981:
			case 982:
			case 983:
			case 984:
			case 985:
			case 986:
			case 987:
			case 988:
			case 989:
			case 990:
			case 991:
			case 992:
			case 993:
			case 1006:
			case 1008:
			case 1014:
			case 1015:
			case 1020:
			case 1025:
			case 1026:
			case 1027:
			case 1032:
			case 1034:
			case 1035:
			case 1036:
			case 1037:
			case 1038:
			case 1039:
			case 1040:
			case 1041:
			case 1043:
			case 1044:
			case 1046:
			case 1047:
				{
				this.state = 3529;
				this.selectElement();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			this.state = 3536;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la===1022) {
				{
				{
				this.state = 3532;
				this.match(SqlParser.COMMA);
				this.state = 3533;
				this.selectElement();
				}
				}
				this.state = 3538;
				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 selectElement(): SelectElementContext {
		let localctx: SelectElementContext = new SelectElementContext(this, this._ctx, this.state);
		this.enterRule(localctx, 240, SqlParser.RULE_selectElement);
		let _la: number;
		try {
			this.state = 3568;
			this._errHandler.sync(this);
			switch ( this._interp.adaptivePredict(this._input, 514, this._ctx) ) {
			case 1:
				localctx = new SelectStarElementContext(this, localctx);
				this.enterOuterAlt(localctx, 1);
				{
				this.state = 3539;
				this.fullId();
				this.state = 3540;
				this.match(SqlParser.DOT);
				this.state = 3541;
				this.match(SqlParser.STAR);
				}
				break;
			case 2:
				localctx = new SelectColumnElementContext(this, localctx);
				this.enterOuterAlt(localctx, 2);
				{
				this.state = 3543;
				this.fullColumnName();
				this.state = 3548;
				this._errHandler.sync(this);
				switch ( this._interp.adaptivePredict(this._input, 508, this._ctx) ) {
				case 1:
					{
					this.state = 3545;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
					if (_la===11) {
						{
						this.state = 3544;
						this.match(SqlParser.AS);
						}
					}

					this.state = 3547;
					this.uid();
					}
					break;
				}
				}
				break;
			case 3:
				localctx = new SelectFunctionElementContext(this, localctx);
				this.enterOuterAlt(localctx, 3);
				{
				this.state = 3550;
				this.functionCall();
				this.state = 3555;
				this._errHandler.sync(this);
				switch ( this._interp.adaptivePredict(this._input, 510, this._ctx) ) {
				case 1:
					{
					this.state = 3552;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
					if (_la===11) {
						{
						this.state = 3551;
						this.match(SqlParser.AS);
						}
					}

					this.state = 3554;
					this.uid();
					}
					break;
				}
				}
				break;
			case 4:
				localctx = new SelectExpressionElementContext(this, localctx);
				this.enterOuterAlt(localctx, 4);
				{
				this.state = 3559;
				this._errHandler.sync(this);
				switch ( this._interp.adaptivePredict(this._input, 511, this._ctx) ) {
				case 1:
					{
					this.state = 3557;
					this.match(SqlParser.LOCAL_ID);
					this.state = 3558;
					this.match(SqlParser.VAR_ASSIGN);
					}
					break;
				}
				this.state = 3561;
				this.expression(0);
				this.state = 3566;
				this._errHandler.sync(this);
				switch ( this._interp.adaptivePredict(this._input, 513, this._ctx) ) {
				case 1:
					{
					this.state = 3563;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
					if (_la===11) {
						{
						this.state = 3562;
						this.match(SqlParser.AS);
						}
					}

					this.state = 3565;
					this.uid();
					}
					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 selectIntoExpression(): SelectIntoExpressionContext {
		let localctx: SelectIntoExpressionContext = new SelectIntoExpressionContext(this, this._ctx, this.state);
		this.enterRule(localctx, 242, SqlParser.RULE_selectIntoExpression);
		let _la: number;
		try {
			this.state = 3606;
			this._errHandler.sync(this);
			switch ( this._interp.adaptivePredict(this._input, 521, this._ctx) ) {
			case 1:
				localctx = new SelectIntoVariablesContext(this, localctx);
				this.enterOuterAlt(localctx, 1);
				{
				this.state = 3570;
				this.match(SqlParser.INTO);
				this.state = 3571;
				this.assignmentField();
				this.state = 3576;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				while (_la===1022) {
					{
					{
					this.state = 3572;
					this.match(SqlParser.COMMA);
					this.state = 3573;
					this.assignmentField();
					}
					}
					this.state = 3578;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
				}
				}
				break;
			case 2:
				localctx = new SelectIntoDumpFileContext(this, localctx);
				this.enterOuterAlt(localctx, 2);
				{
				this.state = 3579;
				this.match(SqlParser.INTO);
				this.state = 3580;
				this.match(SqlParser.DUMPFILE);
				this.state = 3581;
				this.match(SqlParser.STRING_LITERAL);
				}
				break;
			case 3:
				localctx = new SelectIntoTextFileContext(this, localctx);
				this.enterOuterAlt(localctx, 3);
				{
				{
				this.state = 3582;
				this.match(SqlParser.INTO);
				this.state = 3583;
				this.match(SqlParser.OUTFILE);
				this.state = 3584;
				(localctx as SelectIntoTextFileContext)._filename = this.match(SqlParser.STRING_LITERAL);
				this.state = 3588;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===22) {
					{
					this.state = 3585;
					this.match(SqlParser.CHARACTER);
					this.state = 3586;
					this.match(SqlParser.SET);
					this.state = 3587;
					(localctx as SelectIntoTextFileContext)._charset = this.charsetName();
					}
				}

				this.state = 3596;
				this._errHandler.sync(this);
				switch ( this._interp.adaptivePredict(this._input, 518, this._ctx) ) {
				case 1:
					{
					this.state = 3590;
					(localctx as SelectIntoTextFileContext)._fieldsFormat = this._input.LT(1);
					_la = this._input.LA(1);
					if(!(_la===302 || _la===359)) {
					    (localctx as SelectIntoTextFileContext)._fieldsFormat = this._errHandler.recoverInline(this);
					}
					else {
						this._errHandler.reportMatch(this);
					    this.consume();
					}
					this.state = 3592;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
					do {
						{
						{
						this.state = 3591;
						this.selectFieldsInto();
						}
						}
						this.state = 3594;
						this._errHandler.sync(this);
						_la = this._input.LA(1);
					} while (_la===51 || _la===52 || _la===109 || _la===155);
					}
					break;
				}
				this.state = 3604;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===91) {
					{
					this.state = 3598;
					this.match(SqlParser.LINES);
					this.state = 3600;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
					do {
						{
						{
						this.state = 3599;
						this.selectLinesInto();
						}
						}
						this.state = 3602;
						this._errHandler.sync(this);
						_la = this._input.LA(1);
					} while (_la===152 || _la===155);
					}
				}

				}
				}
				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 selectFieldsInto(): SelectFieldsIntoContext {
		let localctx: SelectFieldsIntoContext = new SelectFieldsIntoContext(this, this._ctx, this.state);
		this.enterRule(localctx, 244, SqlParser.RULE_selectFieldsInto);
		let _la: number;
		try {
			this.state = 3620;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case 155:
				this.enterOuterAlt(localctx, 1);
				{
				this.state = 3608;
				this.match(SqlParser.TERMINATED);
				this.state = 3609;
				this.match(SqlParser.BY);
				this.state = 3610;
				localctx._terminationField = this.match(SqlParser.STRING_LITERAL);
				}
				break;
			case 51:
			case 109:
				this.enterOuterAlt(localctx, 2);
				{
				this.state = 3612;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===109) {
					{
					this.state = 3611;
					this.match(SqlParser.OPTIONALLY);
					}
				}

				this.state = 3614;
				this.match(SqlParser.ENCLOSED);
				this.state = 3615;
				this.match(SqlParser.BY);
				this.state = 3616;
				localctx._enclosion = this.match(SqlParser.STRING_LITERAL);
				}
				break;
			case 52:
				this.enterOuterAlt(localctx, 3);
				{
				this.state = 3617;
				this.match(SqlParser.ESCAPED);
				this.state = 3618;
				this.match(SqlParser.BY);
				this.state = 3619;
				localctx._escaping = this.match(SqlParser.STRING_LITERAL);
				}
				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 selectLinesInto(): SelectLinesIntoContext {
		let localctx: SelectLinesIntoContext = new SelectLinesIntoContext(this, this._ctx, this.state);
		this.enterRule(localctx, 246, SqlParser.RULE_selectLinesInto);
		try {
			this.state = 3628;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case 152:
				this.enterOuterAlt(localctx, 1);
				{
				this.state = 3622;
				this.match(SqlParser.STARTING);
				this.state = 3623;
				this.match(SqlParser.BY);
				this.state = 3624;
				localctx._starting = this.match(SqlParser.STRING_LITERAL);
				}
				break;
			case 155:
				this.enterOuterAlt(localctx, 2);
				{
				this.state = 3625;
				this.match(SqlParser.TERMINATED);
				this.state = 3626;
				this.match(SqlParser.BY);
				this.state = 3627;
				localctx._terminationLine = this.match(SqlParser.STRING_LITERAL);
				}
				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 fromClause(): FromClauseContext {
		let localctx: FromClauseContext = new FromClauseContext(this, this._ctx, this.state);
		this.enterRule(localctx, 248, SqlParser.RULE_fromClause);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 3630;
			this.match(SqlParser.FROM);
			this.state = 3631;
			this.tableSources();
			this.state = 3634;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===172) {
				{
				this.state = 3632;
				this.match(SqlParser.WHERE);
				this.state = 3633;
				localctx._whereExpr = this.expression(0);
				}
			}

			this.state = 3650;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===66) {
				{
				this.state = 3636;
				this.match(SqlParser.GROUP);
				this.state = 3637;
				this.match(SqlParser.BY);
				this.state = 3638;
				this.groupByItem();
				this.state = 3643;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				while (_la===1022) {
					{
					{
					this.state = 3639;
					this.match(SqlParser.COMMA);
					this.state = 3640;
					this.groupByItem();
					}
					}
					this.state = 3645;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
				}
				this.state = 3648;
				this._errHandler.sync(this);
				switch ( this._interp.adaptivePredict(this._input, 527, this._ctx) ) {
				case 1:
					{
					this.state = 3646;
					this.match(SqlParser.WITH);
					this.state = 3647;
					this.match(SqlParser.ROLLUP);
					}
					break;
				}
				}
			}

			this.state = 3654;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===67) {
				{
				this.state = 3652;
				this.match(SqlParser.HAVING);
				this.state = 3653;
				localctx._havingExpr = this.expression(0);
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public groupByItem(): GroupByItemContext {
		let localctx: GroupByItemContext = new GroupByItemContext(this, this._ctx, this.state);
		this.enterRule(localctx, 250, SqlParser.RULE_groupByItem);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 3656;
			this.expression(0);
			this.state = 3658;
			this._errHandler.sync(this);
			switch ( this._interp.adaptivePredict(this._input, 530, this._ctx) ) {
			case 1:
				{
				this.state = 3657;
				localctx._order = this._input.LT(1);
				_la = this._input.LA(1);
				if(!(_la===12 || _la===41)) {
				    localctx._order = this._errHandler.recoverInline(this);
				}
				else {
					this._errHandler.reportMatch(this);
				    this.consume();
				}
				}
				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 limitClause(): LimitClauseContext {
		let localctx: LimitClauseContext = new LimitClauseContext(this, this._ctx, this.state);
		this.enterRule(localctx, 252, SqlParser.RULE_limitClause);
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 3660;
			this.match(SqlParser.LIMIT);
			this.state = 3671;
			this._errHandler.sync(this);
			switch ( this._interp.adaptivePredict(this._input, 532, this._ctx) ) {
			case 1:
				{
				this.state = 3664;
				this._errHandler.sync(this);
				switch ( this._interp.adaptivePredict(this._input, 531, this._ctx) ) {
				case 1:
					{
					this.state = 3661;
					localctx._offset = this.limitClauseAtom();
					this.state = 3662;
					this.match(SqlParser.COMMA);
					}
					break;
				}
				this.state = 3666;
				localctx._limit = this.limitClauseAtom();
				}
				break;
			case 2:
				{
				this.state = 3667;
				localctx._limit = this.limitClauseAtom();
				this.state = 3668;
				this.match(SqlParser.OFFSET);
				this.state = 3669;
				localctx._offset = this.limitClauseAtom();
				}
				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 limitClauseAtom(): LimitClauseAtomContext {
		let localctx: LimitClauseAtomContext = new LimitClauseAtomContext(this, this._ctx, this.state);
		this.enterRule(localctx, 254, SqlParser.RULE_limitClauseAtom);
		try {
			this.state = 3675;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case 1025:
			case 1026:
			case 1027:
			case 1036:
				this.enterOuterAlt(localctx, 1);
				{
				this.state = 3673;
				this.decimalLiteral();
				}
				break;
			case 1046:
			case 1047:
				this.enterOuterAlt(localctx, 2);
				{
				this.state = 3674;
				this.mysqlVariable();
				}
				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 startTransaction(): StartTransactionContext {
		let localctx: StartTransactionContext = new StartTransactionContext(this, this._ctx, this.state);
		this.enterRule(localctx, 256, SqlParser.RULE_startTransaction);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 3677;
			this.match(SqlParser.START);
			this.state = 3678;
			this.match(SqlParser.TRANSACTION);
			this.state = 3687;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===120 || _la===174) {
				{
				this.state = 3679;
				this.transactionMode();
				this.state = 3684;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				while (_la===1022) {
					{
					{
					this.state = 3680;
					this.match(SqlParser.COMMA);
					this.state = 3681;
					this.transactionMode();
					}
					}
					this.state = 3686;
					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 beginWork(): BeginWorkContext {
		let localctx: BeginWorkContext = new BeginWorkContext(this, this._ctx, this.state);
		this.enterRule(localctx, 258, SqlParser.RULE_beginWork);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 3689;
			this.match(SqlParser.BEGIN);
			this.state = 3691;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===584) {
				{
				this.state = 3690;
				this.match(SqlParser.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 commitWork(): CommitWorkContext {
		let localctx: CommitWorkContext = new CommitWorkContext(this, this._ctx, this.state);
		this.enterRule(localctx, 260, SqlParser.RULE_commitWork);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 3693;
			this.match(SqlParser.COMMIT);
			this.state = 3695;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===584) {
				{
				this.state = 3694;
				this.match(SqlParser.WORK);
				}
			}

			this.state = 3702;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===10) {
				{
				this.state = 3697;
				this.match(SqlParser.AND);
				this.state = 3699;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===448) {
					{
					this.state = 3698;
					localctx._nochain = this.match(SqlParser.NO);
					}
				}

				this.state = 3701;
				this.match(SqlParser.CHAIN);
				}
			}

			this.state = 3708;
			this._errHandler.sync(this);
			switch ( this._interp.adaptivePredict(this._input, 541, this._ctx) ) {
			case 1:
				{
				this.state = 3705;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===448) {
					{
					this.state = 3704;
					localctx._norelease = this.match(SqlParser.NO);
					}
				}

				this.state = 3707;
				this.match(SqlParser.RELEASE);
				}
				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 rollbackWork(): RollbackWorkContext {
		let localctx: RollbackWorkContext = new RollbackWorkContext(this, this._ctx, this.state);
		this.enterRule(localctx, 262, SqlParser.RULE_rollbackWork);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 3710;
			this.match(SqlParser.ROLLBACK);
			this.state = 3712;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===584) {
				{
				this.state = 3711;
				this.match(SqlParser.WORK);
				}
			}

			this.state = 3719;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===10) {
				{
				this.state = 3714;
				this.match(SqlParser.AND);
				this.state = 3716;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===448) {
					{
					this.state = 3715;
					localctx._nochain = this.match(SqlParser.NO);
					}
				}

				this.state = 3718;
				this.match(SqlParser.CHAIN);
				}
			}

			this.state = 3725;
			this._errHandler.sync(this);
			switch ( this._interp.adaptivePredict(this._input, 546, this._ctx) ) {
			case 1:
				{
				this.state = 3722;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===448) {
					{
					this.state = 3721;
					localctx._norelease = this.match(SqlParser.NO);
					}
				}

				this.state = 3724;
				this.match(SqlParser.RELEASE);
				}
				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 savepointStatement(): SavepointStatementContext {
		let localctx: SavepointStatementContext = new SavepointStatementContext(this, this._ctx, this.state);
		this.enterRule(localctx, 264, SqlParser.RULE_savepointStatement);
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 3727;
			this.match(SqlParser.SAVEPOINT);
			this.state = 3728;
			this.uid();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				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, this._ctx, this.state);
		this.enterRule(localctx, 266, SqlParser.RULE_rollbackStatement);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 3730;
			this.match(SqlParser.ROLLBACK);
			this.state = 3732;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===584) {
				{
				this.state = 3731;
				this.match(SqlParser.WORK);
				}
			}

			this.state = 3734;
			this.match(SqlParser.TO);
			this.state = 3736;
			this._errHandler.sync(this);
			switch ( this._interp.adaptivePredict(this._input, 548, this._ctx) ) {
			case 1:
				{
				this.state = 3735;
				this.match(SqlParser.SAVEPOINT);
				}
				break;
			}
			this.state = 3738;
			this.uid();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public releaseStatement(): ReleaseStatementContext {
		let localctx: ReleaseStatementContext = new ReleaseStatementContext(this, this._ctx, this.state);
		this.enterRule(localctx, 268, SqlParser.RULE_releaseStatement);
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 3740;
			this.match(SqlParser.RELEASE);
			this.state = 3741;
			this.match(SqlParser.SAVEPOINT);
			this.state = 3742;
			this.uid();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public lockTables(): LockTablesContext {
		let localctx: LockTablesContext = new LockTablesContext(this, this._ctx, this.state);
		this.enterRule(localctx, 270, SqlParser.RULE_lockTables);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 3744;
			this.match(SqlParser.LOCK);
			this.state = 3745;
			this.match(SqlParser.TABLES);
			this.state = 3746;
			this.lockTableElement();
			this.state = 3751;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la===1022) {
				{
				{
				this.state = 3747;
				this.match(SqlParser.COMMA);
				this.state = 3748;
				this.lockTableElement();
				}
				}
				this.state = 3753;
				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 unlockTables(): UnlockTablesContext {
		let localctx: UnlockTablesContext = new UnlockTablesContext(this, this._ctx, this.state);
		this.enterRule(localctx, 272, SqlParser.RULE_unlockTables);
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 3754;
			this.match(SqlParser.UNLOCK);
			this.state = 3755;
			this.match(SqlParser.TABLES);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				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, this._ctx, this.state);
		this.enterRule(localctx, 274, SqlParser.RULE_setAutocommitStatement);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 3757;
			this.match(SqlParser.SET);
			this.state = 3758;
			this.match(SqlParser.AUTOCOMMIT);
			this.state = 3759;
			this.match(SqlParser.EQUAL_SYMBOL);
			this.state = 3760;
			localctx._autocommitValue = this._input.LT(1);
			_la = this._input.LA(1);
			if(!(_la===1025 || _la===1026)) {
			    localctx._autocommitValue = this._errHandler.recoverInline(this);
			}
			else {
				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 setTransactionStatement(): SetTransactionStatementContext {
		let localctx: SetTransactionStatementContext = new SetTransactionStatementContext(this, this._ctx, this.state);
		this.enterRule(localctx, 276, SqlParser.RULE_setTransactionStatement);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 3762;
			this.match(SqlParser.SET);
			this.state = 3764;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===370 || _la===518) {
				{
				this.state = 3763;
				localctx._transactionContext = this._input.LT(1);
				_la = this._input.LA(1);
				if(!(_la===370 || _la===518)) {
				    localctx._transactionContext = this._errHandler.recoverInline(this);
				}
				else {
					this._errHandler.reportMatch(this);
				    this.consume();
				}
				}
			}

			this.state = 3766;
			this.match(SqlParser.TRANSACTION);
			this.state = 3767;
			this.transactionOption();
			this.state = 3772;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la===1022) {
				{
				{
				this.state = 3768;
				this.match(SqlParser.COMMA);
				this.state = 3769;
				this.transactionOption();
				}
				}
				this.state = 3774;
				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, this._ctx, this.state);
		this.enterRule(localctx, 278, SqlParser.RULE_transactionMode);
		try {
			this.state = 3782;
			this._errHandler.sync(this);
			switch ( this._interp.adaptivePredict(this._input, 552, this._ctx) ) {
			case 1:
				this.enterOuterAlt(localctx, 1);
				{
				this.state = 3775;
				this.match(SqlParser.WITH);
				this.state = 3776;
				this.match(SqlParser.CONSISTENT);
				this.state = 3777;
				this.match(SqlParser.SNAPSHOT);
				}
				break;
			case 2:
				this.enterOuterAlt(localctx, 2);
				{
				this.state = 3778;
				this.match(SqlParser.READ);
				this.state = 3779;
				this.match(SqlParser.WRITE);
				}
				break;
			case 3:
				this.enterOuterAlt(localctx, 3);
				{
				this.state = 3780;
				this.match(SqlParser.READ);
				this.state = 3781;
				this.match(SqlParser.ONLY);
				}
				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 lockTableElement(): LockTableElementContext {
		let localctx: LockTableElementContext = new LockTableElementContext(this, this._ctx, this.state);
		this.enterRule(localctx, 280, SqlParser.RULE_lockTableElement);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 3784;
			this.tableName();
			this.state = 3789;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===11 || ((((_la - 32)) & ~0x1F) === 0 && ((1 << (_la - 32)) & 4105) !== 0) || _la===87 || _la===105 || _la===133 || _la===151 || ((((_la - 199)) & ~0x1F) === 0 && ((1 << (_la - 199)) & 5373983) !== 0) || ((((_la - 233)) & ~0x1F) === 0 && ((1 << (_la - 233)) & 536870979) !== 0) || ((((_la - 270)) & ~0x1F) === 0 && ((1 << (_la - 270)) & 4294967295) !== 0) || ((((_la - 302)) & ~0x1F) === 0 && ((1 << (_la - 302)) & 4294967295) !== 0) || ((((_la - 334)) & ~0x1F) === 0 && ((1 << (_la - 334)) & 4294967295) !== 0) || ((((_la - 366)) & ~0x1F) === 0 && ((1 << (_la - 366)) & 4294967295) !== 0) || ((((_la - 398)) & ~0x1F) === 0 && ((1 << (_la - 398)) & 4294967295) !== 0) || ((((_la - 430)) & ~0x1F) === 0 && ((1 << (_la - 430)) & 4294967295) !== 0) || ((((_la - 462)) & ~0x1F) === 0 && ((1 << (_la - 462)) & 4294967295) !== 0) || ((((_la - 494)) & ~0x1F) === 0 && ((1 << (_la - 494)) & 4294967295) !== 0) || ((((_la - 526)) & ~0x1F) === 0 && ((1 << (_la - 526)) & 4293918719) !== 0) || ((((_la - 558)) & ~0x1F) === 0 && ((1 << (_la - 558)) & 2145386495) !== 0) || ((((_la - 593)) & ~0x1F) === 0 && ((1 << (_la - 593)) & 4294705151) !== 0) || ((((_la - 625)) & ~0x1F) === 0 && ((1 << (_la - 625)) & 4294967295) !== 0) || ((((_la - 657)) & ~0x1F) === 0 && ((1 << (_la - 657)) & 4294967295) !== 0) || ((((_la - 689)) & ~0x1F) === 0 && ((1 << (_la - 689)) & 4294967199) !== 0) || ((((_la - 721)) & ~0x1F) === 0 && ((1 << (_la - 721)) & 4294967295) !== 0) || ((((_la - 753)) & ~0x1F) === 0 && ((1 << (_la - 753)) & 4294967295) !== 0) || ((((_la - 785)) & ~0x1F) === 0 && ((1 << (_la - 785)) & 4294967295) !== 0) || ((((_la - 817)) & ~0x1F) === 0 && ((1 << (_la - 817)) & 4294967295) !== 0) || ((((_la - 849)) & ~0x1F) === 0 && ((1 << (_la - 849)) & 4294967295) !== 0) || ((((_la - 881)) & ~0x1F) === 0 && ((1 << (_la - 881)) & 4294967295) !== 0) || ((((_la - 913)) & ~0x1F) === 0 && ((1 << (_la - 913)) & 4294967295) !== 0) || ((((_la - 945)) & ~0x1F) === 0 && ((1 << (_la - 945)) & 4294967295) !== 0) || ((((_la - 977)) & ~0x1F) === 0 && ((1 << (_la - 977)) & 131071) !== 0) || ((((_la - 1032)) & ~0x1F) === 0 && ((1 << (_la - 1032)) & 6153) !== 0)) {
				{
				this.state = 3786;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===11) {
					{
					this.state = 3785;
					this.match(SqlParser.AS);
					}
				}

				this.state = 3788;
				this.uid();
				}
			}

			this.state = 3791;
			this.lockAction();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public lockAction(): LockActionContext {
		let localctx: LockActionContext = new LockActionContext(this, this._ctx, this.state);
		this.enterRule(localctx, 282, SqlParser.RULE_lockAction);
		let _la: number;
		try {
			this.state = 3801;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case 120:
				this.enterOuterAlt(localctx, 1);
				{
				this.state = 3793;
				this.match(SqlParser.READ);
				this.state = 3795;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===402) {
					{
					this.state = 3794;
					this.match(SqlParser.LOCAL);
					}
				}

				}
				break;
			case 95:
			case 175:
				this.enterOuterAlt(localctx, 2);
				{
				this.state = 3798;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===95) {
					{
					this.state = 3797;
					this.match(SqlParser.LOW_PRIORITY);
					}
				}

				this.state = 3800;
				this.match(SqlParser.WRITE);
				}
				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 transactionOption(): TransactionOptionContext {
		let localctx: TransactionOptionContext = new TransactionOptionContext(this, this._ctx, this.state);
		this.enterRule(localctx, 284, SqlParser.RULE_transactionOption);
		try {
			this.state = 3810;
			this._errHandler.sync(this);
			switch ( this._interp.adaptivePredict(this._input, 558, this._ctx) ) {
			case 1:
				this.enterOuterAlt(localctx, 1);
				{
				this.state = 3803;
				this.match(SqlParser.ISOLATION);
				this.state = 3804;
				this.match(SqlParser.LEVEL);
				this.state = 3805;
				this.transactionLevel();
				}
				break;
			case 2:
				this.enterOuterAlt(localctx, 2);
				{
				this.state = 3806;
				this.match(SqlParser.READ);
				this.state = 3807;
				this.match(SqlParser.WRITE);
				}
				break;
			case 3:
				this.enterOuterAlt(localctx, 3);
				{
				this.state = 3808;
				this.match(SqlParser.READ);
				this.state = 3809;
				this.match(SqlParser.ONLY);
				}
				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 transactionLevel(): TransactionLevelContext {
		let localctx: TransactionLevelContext = new TransactionLevelContext(this, this._ctx, this.state);
		this.enterRule(localctx, 286, SqlParser.RULE_transactionLevel);
		try {
			this.state = 3819;
			this._errHandler.sync(this);
			switch ( this._interp.adaptivePredict(this._input, 559, this._ctx) ) {
			case 1:
				this.enterOuterAlt(localctx, 1);
				{
				this.state = 3812;
				this.match(SqlParser.REPEATABLE);
				this.state = 3813;
				this.match(SqlParser.READ);
				}
				break;
			case 2:
				this.enterOuterAlt(localctx, 2);
				{
				this.state = 3814;
				this.match(SqlParser.READ);
				this.state = 3815;
				this.match(SqlParser.COMMITTED);
				}
				break;
			case 3:
				this.enterOuterAlt(localctx, 3);
				{
				this.state = 3816;
				this.match(SqlParser.READ);
				this.state = 3817;
				this.match(SqlParser.UNCOMMITTED);
				}
				break;
			case 4:
				this.enterOuterAlt(localctx, 4);
				{
				this.state = 3818;
				this.match(SqlParser.SERIALIZABLE);
				}
				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 changeMaster(): ChangeMasterContext {
		let localctx: ChangeMasterContext = new ChangeMasterContext(this, this._ctx, this.state);
		this.enterRule(localctx, 288, SqlParser.RULE_changeMaster);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 3821;
			this.match(SqlParser.CHANGE);
			this.state = 3822;
			this.match(SqlParser.MASTER);
			this.state = 3823;
			this.match(SqlParser.TO);
			this.state = 3824;
			this.masterOption();
			this.state = 3829;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la===1022) {
				{
				{
				this.state = 3825;
				this.match(SqlParser.COMMA);
				this.state = 3826;
				this.masterOption();
				}
				}
				this.state = 3831;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			}
			this.state = 3833;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===58) {
				{
				this.state = 3832;
				this.channelOption();
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public changeReplicationFilter(): ChangeReplicationFilterContext {
		let localctx: ChangeReplicationFilterContext = new ChangeReplicationFilterContext(this, this._ctx, this.state);
		this.enterRule(localctx, 290, SqlParser.RULE_changeReplicationFilter);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 3835;
			this.match(SqlParser.CHANGE);
			this.state = 3836;
			this.match(SqlParser.REPLICATION);
			this.state = 3837;
			this.match(SqlParser.FILTER);
			this.state = 3838;
			this.replicationFilter();
			this.state = 3843;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la===1022) {
				{
				{
				this.state = 3839;
				this.match(SqlParser.COMMA);
				this.state = 3840;
				this.replicationFilter();
				}
				}
				this.state = 3845;
				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 purgeBinaryLogs(): PurgeBinaryLogsContext {
		let localctx: PurgeBinaryLogsContext = new PurgeBinaryLogsContext(this, this._ctx, this.state);
		this.enterRule(localctx, 292, SqlParser.RULE_purgeBinaryLogs);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 3846;
			this.match(SqlParser.PURGE);
			this.state = 3847;
			localctx._purgeFormat = this._input.LT(1);
			_la = this._input.LA(1);
			if(!(_la===208 || _la===405)) {
			    localctx._purgeFormat = this._errHandler.recoverInline(this);
			}
			else {
				this._errHandler.reportMatch(this);
			    this.consume();
			}
			this.state = 3848;
			this.match(SqlParser.LOGS);
			this.state = 3853;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case 157:
				{
				this.state = 3849;
				this.match(SqlParser.TO);
				this.state = 3850;
				localctx._fileName = this.match(SqlParser.STRING_LITERAL);
				}
				break;
			case 13:
				{
				this.state = 3851;
				this.match(SqlParser.BEFORE);
				this.state = 3852;
				localctx._timeValue = this.match(SqlParser.STRING_LITERAL);
				}
				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 resetMaster(): ResetMasterContext {
		let localctx: ResetMasterContext = new ResetMasterContext(this, this._ctx, this.state);
		this.enterRule(localctx, 294, SqlParser.RULE_resetMaster);
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 3855;
			this.match(SqlParser.RESET);
			this.state = 3856;
			this.match(SqlParser.MASTER);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public resetSlave(): ResetSlaveContext {
		let localctx: ResetSlaveContext = new ResetSlaveContext(this, this._ctx, this.state);
		this.enterRule(localctx, 296, SqlParser.RULE_resetSlave);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 3858;
			this.match(SqlParser.RESET);
			this.state = 3859;
			this.match(SqlParser.SLAVE);
			this.state = 3861;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===6) {
				{
				this.state = 3860;
				this.match(SqlParser.ALL);
				}
			}

			this.state = 3864;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===58) {
				{
				this.state = 3863;
				this.channelOption();
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public startSlave(): StartSlaveContext {
		let localctx: StartSlaveContext = new StartSlaveContext(this, this._ctx, this.state);
		this.enterRule(localctx, 298, SqlParser.RULE_startSlave);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 3866;
			this.match(SqlParser.START);
			this.state = 3867;
			this.match(SqlParser.SLAVE);
			this.state = 3876;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===390 || _la===537) {
				{
				this.state = 3868;
				this.threadType();
				this.state = 3873;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				while (_la===1022) {
					{
					{
					this.state = 3869;
					this.match(SqlParser.COMMA);
					this.state = 3870;
					this.threadType();
					}
					}
					this.state = 3875;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
				}
				}
			}

			this.state = 3880;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===570) {
				{
				this.state = 3878;
				this.match(SqlParser.UNTIL);
				this.state = 3879;
				this.untilOption();
				}
			}

			this.state = 3885;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la===326 || _la===468 || _la===471 || _la===572) {
				{
				{
				this.state = 3882;
				this.connectionOption();
				}
				}
				this.state = 3887;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			}
			this.state = 3889;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===58) {
				{
				this.state = 3888;
				this.channelOption();
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public stopSlave(): StopSlaveContext {
		let localctx: StopSlaveContext = new StopSlaveContext(this, this._ctx, this.state);
		this.enterRule(localctx, 300, SqlParser.RULE_stopSlave);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 3891;
			this.match(SqlParser.STOP);
			this.state = 3892;
			this.match(SqlParser.SLAVE);
			this.state = 3901;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===390 || _la===537) {
				{
				this.state = 3893;
				this.threadType();
				this.state = 3898;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				while (_la===1022) {
					{
					{
					this.state = 3894;
					this.match(SqlParser.COMMA);
					this.state = 3895;
					this.threadType();
					}
					}
					this.state = 3900;
					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 startGroupReplication(): StartGroupReplicationContext {
		let localctx: StartGroupReplicationContext = new StartGroupReplicationContext(this, this._ctx, this.state);
		this.enterRule(localctx, 302, SqlParser.RULE_startGroupReplication);
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 3903;
			this.match(SqlParser.START);
			this.state = 3904;
			this.match(SqlParser.GROUP_REPLICATION);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public stopGroupReplication(): StopGroupReplicationContext {
		let localctx: StopGroupReplicationContext = new StopGroupReplicationContext(this, this._ctx, this.state);
		this.enterRule(localctx, 304, SqlParser.RULE_stopGroupReplication);
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 3906;
			this.match(SqlParser.STOP);
			this.state = 3907;
			this.match(SqlParser.GROUP_REPLICATION);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public masterOption(): MasterOptionContext {
		let localctx: MasterOptionContext = new MasterOptionContext(this, this._ctx, this.state);
		this.enterRule(localctx, 306, SqlParser.RULE_masterOption);
		let _la: number;
		try {
			this.state = 3938;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case 96:
			case 410:
			case 411:
			case 413:
			case 417:
			case 418:
			case 419:
			case 420:
			case 421:
			case 422:
			case 423:
			case 424:
			case 425:
			case 489:
				localctx = new MasterStringOptionContext(this, localctx);
				this.enterOuterAlt(localctx, 1);
				{
				this.state = 3909;
				this.stringMasterOption();
				this.state = 3910;
				this.match(SqlParser.EQUAL_SYMBOL);
				this.state = 3911;
				this.match(SqlParser.STRING_LITERAL);
				}
				break;
			case 407:
			case 408:
			case 412:
			case 414:
			case 415:
			case 490:
				localctx = new MasterDecimalOptionContext(this, localctx);
				this.enterOuterAlt(localctx, 2);
				{
				this.state = 3913;
				this.decimalMasterOption();
				this.state = 3914;
				this.match(SqlParser.EQUAL_SYMBOL);
				this.state = 3915;
				this.decimalLiteral();
				}
				break;
			case 97:
			case 406:
			case 416:
				localctx = new MasterBoolOptionContext(this, localctx);
				this.enterOuterAlt(localctx, 3);
				{
				this.state = 3917;
				this.boolMasterOption();
				this.state = 3918;
				this.match(SqlParser.EQUAL_SYMBOL);
				this.state = 3919;
				(localctx as MasterBoolOptionContext)._boolVal = this._input.LT(1);
				_la = this._input.LA(1);
				if(!(_la===1025 || _la===1026)) {
				    (localctx as MasterBoolOptionContext)._boolVal = this._errHandler.recoverInline(this);
				}
				else {
					this._errHandler.reportMatch(this);
				    this.consume();
				}
				}
				break;
			case 409:
				localctx = new MasterRealOptionContext(this, localctx);
				this.enterOuterAlt(localctx, 4);
				{
				this.state = 3921;
				this.match(SqlParser.MASTER_HEARTBEAT_PERIOD);
				this.state = 3922;
				this.match(SqlParser.EQUAL_SYMBOL);
				this.state = 3923;
				this.match(SqlParser.REAL_LITERAL);
				}
				break;
			case 379:
				localctx = new MasterUidListOptionContext(this, localctx);
				this.enterOuterAlt(localctx, 5);
				{
				this.state = 3924;
				this.match(SqlParser.IGNORE_SERVER_IDS);
				this.state = 3925;
				this.match(SqlParser.EQUAL_SYMBOL);
				this.state = 3926;
				this.match(SqlParser.LR_BRACKET);
				this.state = 3935;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (((((_la - 32)) & ~0x1F) === 0 && ((1 << (_la - 32)) & 4105) !== 0) || _la===87 || _la===105 || _la===133 || _la===151 || ((((_la - 199)) & ~0x1F) === 0 && ((1 << (_la - 199)) & 5373983) !== 0) || ((((_la - 233)) & ~0x1F) === 0 && ((1 << (_la - 233)) & 536870979) !== 0) || ((((_la - 270)) & ~0x1F) === 0 && ((1 << (_la - 270)) & 4294967295) !== 0) || ((((_la - 302)) & ~0x1F) === 0 && ((1 << (_la - 302)) & 4294967295) !== 0) || ((((_la - 334)) & ~0x1F) === 0 && ((1 << (_la - 334)) & 4294967295) !== 0) || ((((_la - 366)) & ~0x1F) === 0 && ((1 << (_la - 366)) & 4294967295) !== 0) || ((((_la - 398)) & ~0x1F) === 0 && ((1 << (_la - 398)) & 4294967295) !== 0) || ((((_la - 430)) & ~0x1F) === 0 && ((1 << (_la - 430)) & 4294967295) !== 0) || ((((_la - 462)) & ~0x1F) === 0 && ((1 << (_la - 462)) & 4294967295) !== 0) || ((((_la - 494)) & ~0x1F) === 0 && ((1 << (_la - 494)) & 4294967295) !== 0) || ((((_la - 526)) & ~0x1F) === 0 && ((1 << (_la - 526)) & 4293918719) !== 0) || ((((_la - 558)) & ~0x1F) === 0 && ((1 << (_la - 558)) & 2145386495) !== 0) || ((((_la - 593)) & ~0x1F) === 0 && ((1 << (_la - 593)) & 4294705151) !== 0) || ((((_la - 625)) & ~0x1F) === 0 && ((1 << (_la - 625)) & 4294967295) !== 0) || ((((_la - 657)) & ~0x1F) === 0 && ((1 << (_la - 657)) & 4294967295) !== 0) || ((((_la - 689)) & ~0x1F) === 0 && ((1 << (_la - 689)) & 4294967199) !== 0) || ((((_la - 721)) & ~0x1F) === 0 && ((1 << (_la - 721)) & 4294967295) !== 0) || ((((_la - 753)) & ~0x1F) === 0 && ((1 << (_la - 753)) & 4294967295) !== 0) || ((((_la - 785)) & ~0x1F) === 0 && ((1 << (_la - 785)) & 4294967295) !== 0) || ((((_la - 817)) & ~0x1F) === 0 && ((1 << (_la - 817)) & 4294967295) !== 0) || ((((_la - 849)) & ~0x1F) === 0 && ((1 << (_la - 849)) & 4294967295) !== 0) || ((((_la - 881)) & ~0x1F) === 0 && ((1 << (_la - 881)) & 4294967295) !== 0) || ((((_la - 913)) & ~0x1F) === 0 && ((1 << (_la - 913)) & 4294967295) !== 0) || ((((_la - 945)) & ~0x1F) === 0 && ((1 << (_la - 945)) & 4294967295) !== 0) || ((((_la - 977)) & ~0x1F) === 0 && ((1 << (_la - 977)) & 131071) !== 0) || ((((_la - 1032)) & ~0x1F) === 0 && ((1 << (_la - 1032)) & 6153) !== 0)) {
					{
					this.state = 3927;
					this.uid();
					this.state = 3932;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
					while (_la===1022) {
						{
						{
						this.state = 3928;
						this.match(SqlParser.COMMA);
						this.state = 3929;
						this.uid();
						}
						}
						this.state = 3934;
						this._errHandler.sync(this);
						_la = this._input.LA(1);
					}
					}
				}

				this.state = 3937;
				this.match(SqlParser.RR_BRACKET);
				}
				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 stringMasterOption(): StringMasterOptionContext {
		let localctx: StringMasterOptionContext = new StringMasterOptionContext(this, this._ctx, this.state);
		this.enterRule(localctx, 308, SqlParser.RULE_stringMasterOption);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 3940;
			_la = this._input.LA(1);
			if(!(_la===96 || ((((_la - 410)) & ~0x1F) === 0 && ((1 << (_la - 410)) & 65419) !== 0) || _la===489)) {
			this._errHandler.recoverInline(this);
			}
			else {
				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 decimalMasterOption(): DecimalMasterOptionContext {
		let localctx: DecimalMasterOptionContext = new DecimalMasterOptionContext(this, this._ctx, this.state);
		this.enterRule(localctx, 310, SqlParser.RULE_decimalMasterOption);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 3942;
			_la = this._input.LA(1);
			if(!(((((_la - 407)) & ~0x1F) === 0 && ((1 << (_la - 407)) & 419) !== 0) || _la===490)) {
			this._errHandler.recoverInline(this);
			}
			else {
				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 boolMasterOption(): BoolMasterOptionContext {
		let localctx: BoolMasterOptionContext = new BoolMasterOptionContext(this, this._ctx, this.state);
		this.enterRule(localctx, 312, SqlParser.RULE_boolMasterOption);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 3944;
			_la = this._input.LA(1);
			if(!(_la===97 || _la===406 || _la===416)) {
			this._errHandler.recoverInline(this);
			}
			else {
				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 channelOption(): ChannelOptionContext {
		let localctx: ChannelOptionContext = new ChannelOptionContext(this, this._ctx, this.state);
		this.enterRule(localctx, 314, SqlParser.RULE_channelOption);
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 3946;
			this.match(SqlParser.FOR);
			this.state = 3947;
			this.match(SqlParser.CHANNEL);
			this.state = 3948;
			this.match(SqlParser.STRING_LITERAL);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public replicationFilter(): ReplicationFilterContext {
		let localctx: ReplicationFilterContext = new ReplicationFilterContext(this, this._ctx, this.state);
		this.enterRule(localctx, 316, SqlParser.RULE_replicationFilter);
		let _la: number;
		try {
			this.state = 3999;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case 495:
				localctx = new DoDbReplicationContext(this, localctx);
				this.enterOuterAlt(localctx, 1);
				{
				this.state = 3950;
				this.match(SqlParser.REPLICATE_DO_DB);
				this.state = 3951;
				this.match(SqlParser.EQUAL_SYMBOL);
				this.state = 3952;
				this.match(SqlParser.LR_BRACKET);
				this.state = 3953;
				this.uidList();
				this.state = 3954;
				this.match(SqlParser.RR_BRACKET);
				}
				break;
			case 497:
				localctx = new IgnoreDbReplicationContext(this, localctx);
				this.enterOuterAlt(localctx, 2);
				{
				this.state = 3956;
				this.match(SqlParser.REPLICATE_IGNORE_DB);
				this.state = 3957;
				this.match(SqlParser.EQUAL_SYMBOL);
				this.state = 3958;
				this.match(SqlParser.LR_BRACKET);
				this.state = 3959;
				this.uidList();
				this.state = 3960;
				this.match(SqlParser.RR_BRACKET);
				}
				break;
			case 496:
				localctx = new DoTableReplicationContext(this, localctx);
				this.enterOuterAlt(localctx, 3);
				{
				this.state = 3962;
				this.match(SqlParser.REPLICATE_DO_TABLE);
				this.state = 3963;
				this.match(SqlParser.EQUAL_SYMBOL);
				this.state = 3964;
				this.match(SqlParser.LR_BRACKET);
				this.state = 3965;
				this.tables();
				this.state = 3966;
				this.match(SqlParser.RR_BRACKET);
				}
				break;
			case 498:
				localctx = new IgnoreTableReplicationContext(this, localctx);
				this.enterOuterAlt(localctx, 4);
				{
				this.state = 3968;
				this.match(SqlParser.REPLICATE_IGNORE_TABLE);
				this.state = 3969;
				this.match(SqlParser.EQUAL_SYMBOL);
				this.state = 3970;
				this.match(SqlParser.LR_BRACKET);
				this.state = 3971;
				this.tables();
				this.state = 3972;
				this.match(SqlParser.RR_BRACKET);
				}
				break;
			case 500:
				localctx = new WildDoTableReplicationContext(this, localctx);
				this.enterOuterAlt(localctx, 5);
				{
				this.state = 3974;
				this.match(SqlParser.REPLICATE_WILD_DO_TABLE);
				this.state = 3975;
				this.match(SqlParser.EQUAL_SYMBOL);
				this.state = 3976;
				this.match(SqlParser.LR_BRACKET);
				this.state = 3977;
				this.simpleStrings();
				this.state = 3978;
				this.match(SqlParser.RR_BRACKET);
				}
				break;
			case 501:
				localctx = new WildIgnoreTableReplicationContext(this, localctx);
				this.enterOuterAlt(localctx, 6);
				{
				this.state = 3980;
				this.match(SqlParser.REPLICATE_WILD_IGNORE_TABLE);
				this.state = 3981;
				this.match(SqlParser.EQUAL_SYMBOL);
				this.state = 3982;
				this.match(SqlParser.LR_BRACKET);
				this.state = 3983;
				this.simpleStrings();
				this.state = 3984;
				this.match(SqlParser.RR_BRACKET);
				}
				break;
			case 499:
				localctx = new RewriteDbReplicationContext(this, localctx);
				this.enterOuterAlt(localctx, 7);
				{
				this.state = 3986;
				this.match(SqlParser.REPLICATE_REWRITE_DB);
				this.state = 3987;
				this.match(SqlParser.EQUAL_SYMBOL);
				this.state = 3988;
				this.match(SqlParser.LR_BRACKET);
				this.state = 3989;
				this.tablePair();
				this.state = 3994;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				while (_la===1022) {
					{
					{
					this.state = 3990;
					this.match(SqlParser.COMMA);
					this.state = 3991;
					this.tablePair();
					}
					}
					this.state = 3996;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
				}
				this.state = 3997;
				this.match(SqlParser.RR_BRACKET);
				}
				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 tablePair(): TablePairContext {
		let localctx: TablePairContext = new TablePairContext(this, this._ctx, this.state);
		this.enterRule(localctx, 318, SqlParser.RULE_tablePair);
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 4001;
			this.match(SqlParser.LR_BRACKET);
			this.state = 4002;
			localctx._firstTable = this.tableName();
			this.state = 4003;
			this.match(SqlParser.COMMA);
			this.state = 4004;
			localctx._secondTable = this.tableName();
			this.state = 4005;
			this.match(SqlParser.RR_BRACKET);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public threadType(): ThreadTypeContext {
		let localctx: ThreadTypeContext = new ThreadTypeContext(this, this._ctx, this.state);
		this.enterRule(localctx, 320, SqlParser.RULE_threadType);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 4007;
			_la = this._input.LA(1);
			if(!(_la===390 || _la===537)) {
			this._errHandler.recoverInline(this);
			}
			else {
				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 untilOption(): UntilOptionContext {
		let localctx: UntilOptionContext = new UntilOptionContext(this, this._ctx, this.state);
		this.enterRule(localctx, 322, SqlParser.RULE_untilOption);
		let _la: number;
		try {
			this.state = 4027;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case 531:
			case 533:
				localctx = new GtidsUntilOptionContext(this, localctx);
				this.enterOuterAlt(localctx, 1);
				{
				this.state = 4009;
				(localctx as GtidsUntilOptionContext)._gtids = this._input.LT(1);
				_la = this._input.LA(1);
				if(!(_la===531 || _la===533)) {
				    (localctx as GtidsUntilOptionContext)._gtids = this._errHandler.recoverInline(this);
				}
				else {
					this._errHandler.reportMatch(this);
				    this.consume();
				}
				this.state = 4010;
				this.match(SqlParser.EQUAL_SYMBOL);
				this.state = 4011;
				this.gtuidSet();
				}
				break;
			case 411:
				localctx = new MasterLogUntilOptionContext(this, localctx);
				this.enterOuterAlt(localctx, 2);
				{
				this.state = 4012;
				this.match(SqlParser.MASTER_LOG_FILE);
				this.state = 4013;
				this.match(SqlParser.EQUAL_SYMBOL);
				this.state = 4014;
				this.match(SqlParser.STRING_LITERAL);
				this.state = 4015;
				this.match(SqlParser.COMMA);
				this.state = 4016;
				this.match(SqlParser.MASTER_LOG_POS);
				this.state = 4017;
				this.match(SqlParser.EQUAL_SYMBOL);
				this.state = 4018;
				this.decimalLiteral();
				}
				break;
			case 489:
				localctx = new RelayLogUntilOptionContext(this, localctx);
				this.enterOuterAlt(localctx, 3);
				{
				this.state = 4019;
				this.match(SqlParser.RELAY_LOG_FILE);
				this.state = 4020;
				this.match(SqlParser.EQUAL_SYMBOL);
				this.state = 4021;
				this.match(SqlParser.STRING_LITERAL);
				this.state = 4022;
				this.match(SqlParser.COMMA);
				this.state = 4023;
				this.match(SqlParser.RELAY_LOG_POS);
				this.state = 4024;
				this.match(SqlParser.EQUAL_SYMBOL);
				this.state = 4025;
				this.decimalLiteral();
				}
				break;
			case 532:
				localctx = new SqlGapsUntilOptionContext(this, localctx);
				this.enterOuterAlt(localctx, 4);
				{
				this.state = 4026;
				this.match(SqlParser.SQL_AFTER_MTS_GAPS);
				}
				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 connectionOption(): ConnectionOptionContext {
		let localctx: ConnectionOptionContext = new ConnectionOptionContext(this, this._ctx, this.state);
		this.enterRule(localctx, 324, SqlParser.RULE_connectionOption);
		try {
			this.state = 4041;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case 572:
				localctx = new UserConnectionOptionContext(this, localctx);
				this.enterOuterAlt(localctx, 1);
				{
				this.state = 4029;
				this.match(SqlParser.USER);
				this.state = 4030;
				this.match(SqlParser.EQUAL_SYMBOL);
				this.state = 4031;
				(localctx as UserConnectionOptionContext)._conOptUser = this.match(SqlParser.STRING_LITERAL);
				}
				break;
			case 468:
				localctx = new PasswordConnectionOptionContext(this, localctx);
				this.enterOuterAlt(localctx, 2);
				{
				this.state = 4032;
				this.match(SqlParser.PASSWORD);
				this.state = 4033;
				this.match(SqlParser.EQUAL_SYMBOL);
				this.state = 4034;
				(localctx as PasswordConnectionOptionContext)._conOptPassword = this.match(SqlParser.STRING_LITERAL);
				}
				break;
			case 326:
				localctx = new DefaultAuthConnectionOptionContext(this, localctx);
				this.enterOuterAlt(localctx, 3);
				{
				this.state = 4035;
				this.match(SqlParser.DEFAULT_AUTH);
				this.state = 4036;
				this.match(SqlParser.EQUAL_SYMBOL);
				this.state = 4037;
				(localctx as DefaultAuthConnectionOptionContext)._conOptDefAuth = this.match(SqlParser.STRING_LITERAL);
				}
				break;
			case 471:
				localctx = new PluginDirConnectionOptionContext(this, localctx);
				this.enterOuterAlt(localctx, 4);
				{
				this.state = 4038;
				this.match(SqlParser.PLUGIN_DIR);
				this.state = 4039;
				this.match(SqlParser.EQUAL_SYMBOL);
				this.state = 4040;
				(localctx as PluginDirConnectionOptionContext)._conOptPluginDir = this.match(SqlParser.STRING_LITERAL);
				}
				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 gtuidSet(): GtuidSetContext {
		let localctx: GtuidSetContext = new GtuidSetContext(this, this._ctx, this.state);
		this.enterRule(localctx, 326, SqlParser.RULE_gtuidSet);
		let _la: number;
		try {
			this.state = 4052;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case 1025:
			case 1026:
			case 1027:
			case 1036:
				this.enterOuterAlt(localctx, 1);
				{
				this.state = 4043;
				this.uuidSet();
				this.state = 4048;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				while (_la===1022) {
					{
					{
					this.state = 4044;
					this.match(SqlParser.COMMA);
					this.state = 4045;
					this.uuidSet();
					}
					}
					this.state = 4050;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
				}
				}
				break;
			case 1035:
				this.enterOuterAlt(localctx, 2);
				{
				this.state = 4051;
				this.match(SqlParser.STRING_LITERAL);
				}
				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 xaStartTransaction(): XaStartTransactionContext {
		let localctx: XaStartTransactionContext = new XaStartTransactionContext(this, this._ctx, this.state);
		this.enterRule(localctx, 328, SqlParser.RULE_xaStartTransaction);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 4054;
			this.match(SqlParser.XA);
			this.state = 4055;
			localctx._xaStart = this._input.LT(1);
			_la = this._input.LA(1);
			if(!(_la===282 || _la===538)) {
			    localctx._xaStart = this._errHandler.recoverInline(this);
			}
			else {
				this._errHandler.reportMatch(this);
			    this.consume();
			}
			this.state = 4056;
			this.xid();
			this.state = 4058;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===81 || _la===504) {
				{
				this.state = 4057;
				localctx._xaAction = this._input.LT(1);
				_la = this._input.LA(1);
				if(!(_la===81 || _la===504)) {
				    localctx._xaAction = this._errHandler.recoverInline(this);
				}
				else {
					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 xaEndTransaction(): XaEndTransactionContext {
		let localctx: XaEndTransactionContext = new XaEndTransactionContext(this, this._ctx, this.state);
		this.enterRule(localctx, 330, SqlParser.RULE_xaEndTransaction);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 4060;
			this.match(SqlParser.XA);
			this.state = 4061;
			this.match(SqlParser.END);
			this.state = 4062;
			this.xid();
			this.state = 4068;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===552) {
				{
				this.state = 4063;
				this.match(SqlParser.SUSPEND);
				this.state = 4066;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===58) {
					{
					this.state = 4064;
					this.match(SqlParser.FOR);
					this.state = 4065;
					this.match(SqlParser.MIGRATE);
					}
				}

				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public xaPrepareStatement(): XaPrepareStatementContext {
		let localctx: XaPrepareStatementContext = new XaPrepareStatementContext(this, this._ctx, this.state);
		this.enterRule(localctx, 332, SqlParser.RULE_xaPrepareStatement);
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 4070;
			this.match(SqlParser.XA);
			this.state = 4071;
			this.match(SqlParser.PREPARE);
			this.state = 4072;
			this.xid();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public xaCommitWork(): XaCommitWorkContext {
		let localctx: XaCommitWorkContext = new XaCommitWorkContext(this, this._ctx, this.state);
		this.enterRule(localctx, 334, SqlParser.RULE_xaCommitWork);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 4074;
			this.match(SqlParser.XA);
			this.state = 4075;
			this.match(SqlParser.COMMIT);
			this.state = 4076;
			this.xid();
			this.state = 4079;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===455) {
				{
				this.state = 4077;
				this.match(SqlParser.ONE);
				this.state = 4078;
				this.match(SqlParser.PHASE);
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public xaRollbackWork(): XaRollbackWorkContext {
		let localctx: XaRollbackWorkContext = new XaRollbackWorkContext(this, this._ctx, this.state);
		this.enterRule(localctx, 336, SqlParser.RULE_xaRollbackWork);
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 4081;
			this.match(SqlParser.XA);
			this.state = 4082;
			this.match(SqlParser.ROLLBACK);
			this.state = 4083;
			this.xid();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public xaRecoverWork(): XaRecoverWorkContext {
		let localctx: XaRecoverWorkContext = new XaRecoverWorkContext(this, this._ctx, this.state);
		this.enterRule(localctx, 338, SqlParser.RULE_xaRecoverWork);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 4085;
			this.match(SqlParser.XA);
			this.state = 4086;
			this.match(SqlParser.RECOVER);
			this.state = 4089;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===29) {
				{
				this.state = 4087;
				this.match(SqlParser.CONVERT);
				this.state = 4088;
				this.xid();
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				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, this._ctx, this.state);
		this.enterRule(localctx, 340, SqlParser.RULE_prepareStatement);
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 4091;
			this.match(SqlParser.PREPARE);
			this.state = 4092;
			this.uid();
			this.state = 4093;
			this.match(SqlParser.FROM);
			this.state = 4096;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case 1035:
				{
				this.state = 4094;
				localctx._query = this.match(SqlParser.STRING_LITERAL);
				}
				break;
			case 1046:
				{
				this.state = 4095;
				localctx._variable = this.match(SqlParser.LOCAL_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 executeStatement(): ExecuteStatementContext {
		let localctx: ExecuteStatementContext = new ExecuteStatementContext(this, this._ctx, this.state);
		this.enterRule(localctx, 342, SqlParser.RULE_executeStatement);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 4098;
			this.match(SqlParser.EXECUTE);
			this.state = 4099;
			this.uid();
			this.state = 4102;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===169) {
				{
				this.state = 4100;
				this.match(SqlParser.USING);
				this.state = 4101;
				this.userVariables();
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public deallocatePrepare(): DeallocatePrepareContext {
		let localctx: DeallocatePrepareContext = new DeallocatePrepareContext(this, this._ctx, this.state);
		this.enterRule(localctx, 344, SqlParser.RULE_deallocatePrepare);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 4104;
			localctx._dropFormat = this._input.LT(1);
			_la = this._input.LA(1);
			if(!(_la===47 || _la===325)) {
			    localctx._dropFormat = this._errHandler.recoverInline(this);
			}
			else {
				this._errHandler.reportMatch(this);
			    this.consume();
			}
			this.state = 4105;
			this.match(SqlParser.PREPARE);
			this.state = 4106;
			this.uid();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public routineBody(): RoutineBodyContext {
		let localctx: RoutineBodyContext = new RoutineBodyContext(this, this._ctx, this.state);
		this.enterRule(localctx, 346, SqlParser.RULE_routineBody);
		try {
			this.state = 4110;
			this._errHandler.sync(this);
			switch ( this._interp.adaptivePredict(this._input, 589, this._ctx) ) {
			case 1:
				this.enterOuterAlt(localctx, 1);
				{
				this.state = 4108;
				this.blockStatement();
				}
				break;
			case 2:
				this.enterOuterAlt(localctx, 2);
				{
				this.state = 4109;
				this.sqlStatement();
				}
				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 blockStatement(): BlockStatementContext {
		let localctx: BlockStatementContext = new BlockStatementContext(this, this._ctx, this.state);
		this.enterRule(localctx, 348, SqlParser.RULE_blockStatement);
		let _la: number;
		try {
			let _alt: number;
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 4115;
			this._errHandler.sync(this);
			switch ( this._interp.adaptivePredict(this._input, 590, this._ctx) ) {
			case 1:
				{
				this.state = 4112;
				this.uid();
				this.state = 4113;
				this.match(SqlParser.COLON_SYMB);
				}
				break;
			}
			this.state = 4117;
			this.match(SqlParser.BEGIN);
			this.state = 4156;
			this._errHandler.sync(this);
			switch ( this._interp.adaptivePredict(this._input, 596, this._ctx) ) {
			case 1:
				{
				this.state = 4123;
				this._errHandler.sync(this);
				_alt = this._interp.adaptivePredict(this._input, 591, this._ctx);
				while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) {
					if (_alt === 1) {
						{
						{
						this.state = 4118;
						this.declareVariable();
						this.state = 4119;
						this.match(SqlParser.SEMI);
						}
						}
					}
					this.state = 4125;
					this._errHandler.sync(this);
					_alt = this._interp.adaptivePredict(this._input, 591, this._ctx);
				}
				this.state = 4131;
				this._errHandler.sync(this);
				_alt = this._interp.adaptivePredict(this._input, 592, this._ctx);
				while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) {
					if (_alt === 1) {
						{
						{
						this.state = 4126;
						this.declareCondition();
						this.state = 4127;
						this.match(SqlParser.SEMI);
						}
						}
					}
					this.state = 4133;
					this._errHandler.sync(this);
					_alt = this._interp.adaptivePredict(this._input, 592, this._ctx);
				}
				this.state = 4139;
				this._errHandler.sync(this);
				_alt = this._interp.adaptivePredict(this._input, 593, this._ctx);
				while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) {
					if (_alt === 1) {
						{
						{
						this.state = 4134;
						this.declareCursor();
						this.state = 4135;
						this.match(SqlParser.SEMI);
						}
						}
					}
					this.state = 4141;
					this._errHandler.sync(this);
					_alt = this._interp.adaptivePredict(this._input, 593, this._ctx);
				}
				this.state = 4147;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				while (_la===37) {
					{
					{
					this.state = 4142;
					this.declareHandler();
					this.state = 4143;
					this.match(SqlParser.SEMI);
					}
					}
					this.state = 4149;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
				}
				this.state = 4153;
				this._errHandler.sync(this);
				_alt = this._interp.adaptivePredict(this._input, 595, this._ctx);
				while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) {
					if (_alt === 1) {
						{
						{
						this.state = 4150;
						this.procedureSqlStatement();
						}
						}
					}
					this.state = 4155;
					this._errHandler.sync(this);
					_alt = this._interp.adaptivePredict(this._input, 595, this._ctx);
				}
				}
				break;
			}
			this.state = 4158;
			this.match(SqlParser.END);
			this.state = 4160;
			this._errHandler.sync(this);
			switch ( this._interp.adaptivePredict(this._input, 597, this._ctx) ) {
			case 1:
				{
				this.state = 4159;
				this.uid();
				}
				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 caseStatement(): CaseStatementContext {
		let localctx: CaseStatementContext = new CaseStatementContext(this, this._ctx, this.state);
		this.enterRule(localctx, 350, SqlParser.RULE_caseStatement);
		let _la: number;
		try {
			let _alt: number;
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 4162;
			this.match(SqlParser.CASE);
			this.state = 4165;
			this._errHandler.sync(this);
			switch ( this._interp.adaptivePredict(this._input, 598, this._ctx) ) {
			case 1:
				{
				this.state = 4163;
				this.uid();
				}
				break;
			case 2:
				{
				this.state = 4164;
				this.expression(0);
				}
				break;
			}
			this.state = 4168;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			do {
				{
				{
				this.state = 4167;
				this.caseAlternative();
				}
				}
				this.state = 4170;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			} while (_la===171);
			this.state = 4178;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===49) {
				{
				this.state = 4172;
				this.match(SqlParser.ELSE);
				this.state = 4174;
				this._errHandler.sync(this);
				_alt = 1;
				do {
					switch (_alt) {
					case 1:
						{
						{
						this.state = 4173;
						this.procedureSqlStatement();
						}
						}
						break;
					default:
						throw new NoViableAltException(this);
					}
					this.state = 4176;
					this._errHandler.sync(this);
					_alt = this._interp.adaptivePredict(this._input, 600, this._ctx);
				} while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER);
				}
			}

			this.state = 4180;
			this.match(SqlParser.END);
			this.state = 4181;
			this.match(SqlParser.CASE);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public ifStatement(): IfStatementContext {
		let localctx: IfStatementContext = new IfStatementContext(this, this._ctx, this.state);
		this.enterRule(localctx, 352, SqlParser.RULE_ifStatement);
		let _la: number;
		try {
			let _alt: number;
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 4183;
			this.match(SqlParser.IF);
			this.state = 4184;
			this.expression(0);
			this.state = 4185;
			this.match(SqlParser.THEN);
			this.state = 4187;
			this._errHandler.sync(this);
			_alt = 1;
			do {
				switch (_alt) {
				case 1:
					{
					{
					this.state = 4186;
					localctx._procedureSqlStatement = this.procedureSqlStatement();
					localctx._thenStatements.push(localctx._procedureSqlStatement);
					}
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				this.state = 4189;
				this._errHandler.sync(this);
				_alt = this._interp.adaptivePredict(this._input, 602, this._ctx);
			} while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER);
			this.state = 4194;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la===50) {
				{
				{
				this.state = 4191;
				this.elifAlternative();
				}
				}
				this.state = 4196;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			}
			this.state = 4203;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===49) {
				{
				this.state = 4197;
				this.match(SqlParser.ELSE);
				this.state = 4199;
				this._errHandler.sync(this);
				_alt = 1;
				do {
					switch (_alt) {
					case 1:
						{
						{
						this.state = 4198;
						localctx._procedureSqlStatement = this.procedureSqlStatement();
						localctx._elseStatements.push(localctx._procedureSqlStatement);
						}
						}
						break;
					default:
						throw new NoViableAltException(this);
					}
					this.state = 4201;
					this._errHandler.sync(this);
					_alt = this._interp.adaptivePredict(this._input, 604, this._ctx);
				} while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER);
				}
			}

			this.state = 4205;
			this.match(SqlParser.END);
			this.state = 4206;
			this.match(SqlParser.IF);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public iterateStatement(): IterateStatementContext {
		let localctx: IterateStatementContext = new IterateStatementContext(this, this._ctx, this.state);
		this.enterRule(localctx, 354, SqlParser.RULE_iterateStatement);
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 4208;
			this.match(SqlParser.ITERATE);
			this.state = 4209;
			this.uid();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public leaveStatement(): LeaveStatementContext {
		let localctx: LeaveStatementContext = new LeaveStatementContext(this, this._ctx, this.state);
		this.enterRule(localctx, 356, SqlParser.RULE_leaveStatement);
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 4211;
			this.match(SqlParser.LEAVE);
			this.state = 4212;
			this.uid();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public loopStatement(): LoopStatementContext {
		let localctx: LoopStatementContext = new LoopStatementContext(this, this._ctx, this.state);
		this.enterRule(localctx, 358, SqlParser.RULE_loopStatement);
		let _la: number;
		try {
			let _alt: number;
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 4217;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (((((_la - 32)) & ~0x1F) === 0 && ((1 << (_la - 32)) & 4105) !== 0) || _la===87 || _la===105 || _la===133 || _la===151 || ((((_la - 199)) & ~0x1F) === 0 && ((1 << (_la - 199)) & 5373983) !== 0) || ((((_la - 233)) & ~0x1F) === 0 && ((1 << (_la - 233)) & 536870979) !== 0) || ((((_la - 270)) & ~0x1F) === 0 && ((1 << (_la - 270)) & 4294967295) !== 0) || ((((_la - 302)) & ~0x1F) === 0 && ((1 << (_la - 302)) & 4294967295) !== 0) || ((((_la - 334)) & ~0x1F) === 0 && ((1 << (_la - 334)) & 4294967295) !== 0) || ((((_la - 366)) & ~0x1F) === 0 && ((1 << (_la - 366)) & 4294967295) !== 0) || ((((_la - 398)) & ~0x1F) === 0 && ((1 << (_la - 398)) & 4294967295) !== 0) || ((((_la - 430)) & ~0x1F) === 0 && ((1 << (_la - 430)) & 4294967295) !== 0) || ((((_la - 462)) & ~0x1F) === 0 && ((1 << (_la - 462)) & 4294967295) !== 0) || ((((_la - 494)) & ~0x1F) === 0 && ((1 << (_la - 494)) & 4294967295) !== 0) || ((((_la - 526)) & ~0x1F) === 0 && ((1 << (_la - 526)) & 4293918719) !== 0) || ((((_la - 558)) & ~0x1F) === 0 && ((1 << (_la - 558)) & 2145386495) !== 0) || ((((_la - 593)) & ~0x1F) === 0 && ((1 << (_la - 593)) & 4294705151) !== 0) || ((((_la - 625)) & ~0x1F) === 0 && ((1 << (_la - 625)) & 4294967295) !== 0) || ((((_la - 657)) & ~0x1F) === 0 && ((1 << (_la - 657)) & 4294967295) !== 0) || ((((_la - 689)) & ~0x1F) === 0 && ((1 << (_la - 689)) & 4294967199) !== 0) || ((((_la - 721)) & ~0x1F) === 0 && ((1 << (_la - 721)) & 4294967295) !== 0) || ((((_la - 753)) & ~0x1F) === 0 && ((1 << (_la - 753)) & 4294967295) !== 0) || ((((_la - 785)) & ~0x1F) === 0 && ((1 << (_la - 785)) & 4294967295) !== 0) || ((((_la - 817)) & ~0x1F) === 0 && ((1 << (_la - 817)) & 4294967295) !== 0) || ((((_la - 849)) & ~0x1F) === 0 && ((1 << (_la - 849)) & 4294967295) !== 0) || ((((_la - 881)) & ~0x1F) === 0 && ((1 << (_la - 881)) & 4294967295) !== 0) || ((((_la - 913)) & ~0x1F) === 0 && ((1 << (_la - 913)) & 4294967295) !== 0) || ((((_la - 945)) & ~0x1F) === 0 && ((1 << (_la - 945)) & 4294967295) !== 0) || ((((_la - 977)) & ~0x1F) === 0 && ((1 << (_la - 977)) & 131071) !== 0) || ((((_la - 1032)) & ~0x1F) === 0 && ((1 << (_la - 1032)) & 6153) !== 0)) {
				{
				this.state = 4214;
				this.uid();
				this.state = 4215;
				this.match(SqlParser.COLON_SYMB);
				}
			}

			this.state = 4219;
			this.match(SqlParser.LOOP);
			this.state = 4221;
			this._errHandler.sync(this);
			_alt = 1;
			do {
				switch (_alt) {
				case 1:
					{
					{
					this.state = 4220;
					this.procedureSqlStatement();
					}
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				this.state = 4223;
				this._errHandler.sync(this);
				_alt = this._interp.adaptivePredict(this._input, 607, this._ctx);
			} while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER);
			this.state = 4225;
			this.match(SqlParser.END);
			this.state = 4226;
			this.match(SqlParser.LOOP);
			this.state = 4228;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (((((_la - 32)) & ~0x1F) === 0 && ((1 << (_la - 32)) & 4105) !== 0) || _la===87 || _la===105 || _la===133 || _la===151 || ((((_la - 199)) & ~0x1F) === 0 && ((1 << (_la - 199)) & 5373983) !== 0) || ((((_la - 233)) & ~0x1F) === 0 && ((1 << (_la - 233)) & 536870979) !== 0) || ((((_la - 270)) & ~0x1F) === 0 && ((1 << (_la - 270)) & 4294967295) !== 0) || ((((_la - 302)) & ~0x1F) === 0 && ((1 << (_la - 302)) & 4294967295) !== 0) || ((((_la - 334)) & ~0x1F) === 0 && ((1 << (_la - 334)) & 4294967295) !== 0) || ((((_la - 366)) & ~0x1F) === 0 && ((1 << (_la - 366)) & 4294967295) !== 0) || ((((_la - 398)) & ~0x1F) === 0 && ((1 << (_la - 398)) & 4294967295) !== 0) || ((((_la - 430)) & ~0x1F) === 0 && ((1 << (_la - 430)) & 4294967295) !== 0) || ((((_la - 462)) & ~0x1F) === 0 && ((1 << (_la - 462)) & 4294967295) !== 0) || ((((_la - 494)) & ~0x1F) === 0 && ((1 << (_la - 494)) & 4294967295) !== 0) || ((((_la - 526)) & ~0x1F) === 0 && ((1 << (_la - 526)) & 4293918719) !== 0) || ((((_la - 558)) & ~0x1F) === 0 && ((1 << (_la - 558)) & 2145386495) !== 0) || ((((_la - 593)) & ~0x1F) === 0 && ((1 << (_la - 593)) & 4294705151) !== 0) || ((((_la - 625)) & ~0x1F) === 0 && ((1 << (_la - 625)) & 4294967295) !== 0) || ((((_la - 657)) & ~0x1F) === 0 && ((1 << (_la - 657)) & 4294967295) !== 0) || ((((_la - 689)) & ~0x1F) === 0 && ((1 << (_la - 689)) & 4294967199) !== 0) || ((((_la - 721)) & ~0x1F) === 0 && ((1 << (_la - 721)) & 4294967295) !== 0) || ((((_la - 753)) & ~0x1F) === 0 && ((1 << (_la - 753)) & 4294967295) !== 0) || ((((_la - 785)) & ~0x1F) === 0 && ((1 << (_la - 785)) & 4294967295) !== 0) || ((((_la - 817)) & ~0x1F) === 0 && ((1 << (_la - 817)) & 4294967295) !== 0) || ((((_la - 849)) & ~0x1F) === 0 && ((1 << (_la - 849)) & 4294967295) !== 0) || ((((_la - 881)) & ~0x1F) === 0 && ((1 << (_la - 881)) & 4294967295) !== 0) || ((((_la - 913)) & ~0x1F) === 0 && ((1 << (_la - 913)) & 4294967295) !== 0) || ((((_la - 945)) & ~0x1F) === 0 && ((1 << (_la - 945)) & 4294967295) !== 0) || ((((_la - 977)) & ~0x1F) === 0 && ((1 << (_la - 977)) & 131071) !== 0) || ((((_la - 1032)) & ~0x1F) === 0 && ((1 << (_la - 1032)) & 6153) !== 0)) {
				{
				this.state = 4227;
				this.uid();
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public repeatStatement(): RepeatStatementContext {
		let localctx: RepeatStatementContext = new RepeatStatementContext(this, this._ctx, this.state);
		this.enterRule(localctx, 360, SqlParser.RULE_repeatStatement);
		let _la: number;
		try {
			let _alt: number;
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 4233;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (((((_la - 32)) & ~0x1F) === 0 && ((1 << (_la - 32)) & 4105) !== 0) || _la===87 || _la===105 || _la===133 || _la===151 || ((((_la - 199)) & ~0x1F) === 0 && ((1 << (_la - 199)) & 5373983) !== 0) || ((((_la - 233)) & ~0x1F) === 0 && ((1 << (_la - 233)) & 536870979) !== 0) || ((((_la - 270)) & ~0x1F) === 0 && ((1 << (_la - 270)) & 4294967295) !== 0) || ((((_la - 302)) & ~0x1F) === 0 && ((1 << (_la - 302)) & 4294967295) !== 0) || ((((_la - 334)) & ~0x1F) === 0 && ((1 << (_la - 334)) & 4294967295) !== 0) || ((((_la - 366)) & ~0x1F) === 0 && ((1 << (_la - 366)) & 4294967295) !== 0) || ((((_la - 398)) & ~0x1F) === 0 && ((1 << (_la - 398)) & 4294967295) !== 0) || ((((_la - 430)) & ~0x1F) === 0 && ((1 << (_la - 430)) & 4294967295) !== 0) || ((((_la - 462)) & ~0x1F) === 0 && ((1 << (_la - 462)) & 4294967295) !== 0) || ((((_la - 494)) & ~0x1F) === 0 && ((1 << (_la - 494)) & 4294967295) !== 0) || ((((_la - 526)) & ~0x1F) === 0 && ((1 << (_la - 526)) & 4293918719) !== 0) || ((((_la - 558)) & ~0x1F) === 0 && ((1 << (_la - 558)) & 2145386495) !== 0) || ((((_la - 593)) & ~0x1F) === 0 && ((1 << (_la - 593)) & 4294705151) !== 0) || ((((_la - 625)) & ~0x1F) === 0 && ((1 << (_la - 625)) & 4294967295) !== 0) || ((((_la - 657)) & ~0x1F) === 0 && ((1 << (_la - 657)) & 4294967295) !== 0) || ((((_la - 689)) & ~0x1F) === 0 && ((1 << (_la - 689)) & 4294967199) !== 0) || ((((_la - 721)) & ~0x1F) === 0 && ((1 << (_la - 721)) & 4294967295) !== 0) || ((((_la - 753)) & ~0x1F) === 0 && ((1 << (_la - 753)) & 4294967295) !== 0) || ((((_la - 785)) & ~0x1F) === 0 && ((1 << (_la - 785)) & 4294967295) !== 0) || ((((_la - 817)) & ~0x1F) === 0 && ((1 << (_la - 817)) & 4294967295) !== 0) || ((((_la - 849)) & ~0x1F) === 0 && ((1 << (_la - 849)) & 4294967295) !== 0) || ((((_la - 881)) & ~0x1F) === 0 && ((1 << (_la - 881)) & 4294967295) !== 0) || ((((_la - 913)) & ~0x1F) === 0 && ((1 << (_la - 913)) & 4294967295) !== 0) || ((((_la - 945)) & ~0x1F) === 0 && ((1 << (_la - 945)) & 4294967295) !== 0) || ((((_la - 977)) & ~0x1F) === 0 && ((1 << (_la - 977)) & 131071) !== 0) || ((((_la - 1032)) & ~0x1F) === 0 && ((1 << (_la - 1032)) & 6153) !== 0)) {
				{
				this.state = 4230;
				this.uid();
				this.state = 4231;
				this.match(SqlParser.COLON_SYMB);
				}
			}

			this.state = 4235;
			this.match(SqlParser.REPEAT);
			this.state = 4237;
			this._errHandler.sync(this);
			_alt = 1;
			do {
				switch (_alt) {
				case 1:
					{
					{
					this.state = 4236;
					this.procedureSqlStatement();
					}
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				this.state = 4239;
				this._errHandler.sync(this);
				_alt = this._interp.adaptivePredict(this._input, 610, this._ctx);
			} while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER);
			this.state = 4241;
			this.match(SqlParser.UNTIL);
			this.state = 4242;
			this.expression(0);
			this.state = 4243;
			this.match(SqlParser.END);
			this.state = 4244;
			this.match(SqlParser.REPEAT);
			this.state = 4246;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (((((_la - 32)) & ~0x1F) === 0 && ((1 << (_la - 32)) & 4105) !== 0) || _la===87 || _la===105 || _la===133 || _la===151 || ((((_la - 199)) & ~0x1F) === 0 && ((1 << (_la - 199)) & 5373983) !== 0) || ((((_la - 233)) & ~0x1F) === 0 && ((1 << (_la - 233)) & 536870979) !== 0) || ((((_la - 270)) & ~0x1F) === 0 && ((1 << (_la - 270)) & 4294967295) !== 0) || ((((_la - 302)) & ~0x1F) === 0 && ((1 << (_la - 302)) & 4294967295) !== 0) || ((((_la - 334)) & ~0x1F) === 0 && ((1 << (_la - 334)) & 4294967295) !== 0) || ((((_la - 366)) & ~0x1F) === 0 && ((1 << (_la - 366)) & 4294967295) !== 0) || ((((_la - 398)) & ~0x1F) === 0 && ((1 << (_la - 398)) & 4294967295) !== 0) || ((((_la - 430)) & ~0x1F) === 0 && ((1 << (_la - 430)) & 4294967295) !== 0) || ((((_la - 462)) & ~0x1F) === 0 && ((1 << (_la - 462)) & 4294967295) !== 0) || ((((_la - 494)) & ~0x1F) === 0 && ((1 << (_la - 494)) & 4294967295) !== 0) || ((((_la - 526)) & ~0x1F) === 0 && ((1 << (_la - 526)) & 4293918719) !== 0) || ((((_la - 558)) & ~0x1F) === 0 && ((1 << (_la - 558)) & 2145386495) !== 0) || ((((_la - 593)) & ~0x1F) === 0 && ((1 << (_la - 593)) & 4294705151) !== 0) || ((((_la - 625)) & ~0x1F) === 0 && ((1 << (_la - 625)) & 4294967295) !== 0) || ((((_la - 657)) & ~0x1F) === 0 && ((1 << (_la - 657)) & 4294967295) !== 0) || ((((_la - 689)) & ~0x1F) === 0 && ((1 << (_la - 689)) & 4294967199) !== 0) || ((((_la - 721)) & ~0x1F) === 0 && ((1 << (_la - 721)) & 4294967295) !== 0) || ((((_la - 753)) & ~0x1F) === 0 && ((1 << (_la - 753)) & 4294967295) !== 0) || ((((_la - 785)) & ~0x1F) === 0 && ((1 << (_la - 785)) & 4294967295) !== 0) || ((((_la - 817)) & ~0x1F) === 0 && ((1 << (_la - 817)) & 4294967295) !== 0) || ((((_la - 849)) & ~0x1F) === 0 && ((1 << (_la - 849)) & 4294967295) !== 0) || ((((_la - 881)) & ~0x1F) === 0 && ((1 << (_la - 881)) & 4294967295) !== 0) || ((((_la - 913)) & ~0x1F) === 0 && ((1 << (_la - 913)) & 4294967295) !== 0) || ((((_la - 945)) & ~0x1F) === 0 && ((1 << (_la - 945)) & 4294967295) !== 0) || ((((_la - 977)) & ~0x1F) === 0 && ((1 << (_la - 977)) & 131071) !== 0) || ((((_la - 1032)) & ~0x1F) === 0 && ((1 << (_la - 1032)) & 6153) !== 0)) {
				{
				this.state = 4245;
				this.uid();
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public returnStatement(): ReturnStatementContext {
		let localctx: ReturnStatementContext = new ReturnStatementContext(this, this._ctx, this.state);
		this.enterRule(localctx, 362, SqlParser.RULE_returnStatement);
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 4248;
			this.match(SqlParser.RETURN);
			this.state = 4249;
			this.expression(0);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public whileStatement(): WhileStatementContext {
		let localctx: WhileStatementContext = new WhileStatementContext(this, this._ctx, this.state);
		this.enterRule(localctx, 364, SqlParser.RULE_whileStatement);
		let _la: number;
		try {
			let _alt: number;
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 4254;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (((((_la - 32)) & ~0x1F) === 0 && ((1 << (_la - 32)) & 4105) !== 0) || _la===87 || _la===105 || _la===133 || _la===151 || ((((_la - 199)) & ~0x1F) === 0 && ((1 << (_la - 199)) & 5373983) !== 0) || ((((_la - 233)) & ~0x1F) === 0 && ((1 << (_la - 233)) & 536870979) !== 0) || ((((_la - 270)) & ~0x1F) === 0 && ((1 << (_la - 270)) & 4294967295) !== 0) || ((((_la - 302)) & ~0x1F) === 0 && ((1 << (_la - 302)) & 4294967295) !== 0) || ((((_la - 334)) & ~0x1F) === 0 && ((1 << (_la - 334)) & 4294967295) !== 0) || ((((_la - 366)) & ~0x1F) === 0 && ((1 << (_la - 366)) & 4294967295) !== 0) || ((((_la - 398)) & ~0x1F) === 0 && ((1 << (_la - 398)) & 4294967295) !== 0) || ((((_la - 430)) & ~0x1F) === 0 && ((1 << (_la - 430)) & 4294967295) !== 0) || ((((_la - 462)) & ~0x1F) === 0 && ((1 << (_la - 462)) & 4294967295) !== 0) || ((((_la - 494)) & ~0x1F) === 0 && ((1 << (_la - 494)) & 4294967295) !== 0) || ((((_la - 526)) & ~0x1F) === 0 && ((1 << (_la - 526)) & 4293918719) !== 0) || ((((_la - 558)) & ~0x1F) === 0 && ((1 << (_la - 558)) & 2145386495) !== 0) || ((((_la - 593)) & ~0x1F) === 0 && ((1 << (_la - 593)) & 4294705151) !== 0) || ((((_la - 625)) & ~0x1F) === 0 && ((1 << (_la - 625)) & 4294967295) !== 0) || ((((_la - 657)) & ~0x1F) === 0 && ((1 << (_la - 657)) & 4294967295) !== 0) || ((((_la - 689)) & ~0x1F) === 0 && ((1 << (_la - 689)) & 4294967199) !== 0) || ((((_la - 721)) & ~0x1F) === 0 && ((1 << (_la - 721)) & 4294967295) !== 0) || ((((_la - 753)) & ~0x1F) === 0 && ((1 << (_la - 753)) & 4294967295) !== 0) || ((((_la - 785)) & ~0x1F) === 0 && ((1 << (_la - 785)) & 4294967295) !== 0) || ((((_la - 817)) & ~0x1F) === 0 && ((1 << (_la - 817)) & 4294967295) !== 0) || ((((_la - 849)) & ~0x1F) === 0 && ((1 << (_la - 849)) & 4294967295) !== 0) || ((((_la - 881)) & ~0x1F) === 0 && ((1 << (_la - 881)) & 4294967295) !== 0) || ((((_la - 913)) & ~0x1F) === 0 && ((1 << (_la - 913)) & 4294967295) !== 0) || ((((_la - 945)) & ~0x1F) === 0 && ((1 << (_la - 945)) & 4294967295) !== 0) || ((((_la - 977)) & ~0x1F) === 0 && ((1 << (_la - 977)) & 131071) !== 0) || ((((_la - 1032)) & ~0x1F) === 0 && ((1 << (_la - 1032)) & 6153) !== 0)) {
				{
				this.state = 4251;
				this.uid();
				this.state = 4252;
				this.match(SqlParser.COLON_SYMB);
				}
			}

			this.state = 4256;
			this.match(SqlParser.WHILE);
			this.state = 4257;
			this.expression(0);
			this.state = 4258;
			this.match(SqlParser.DO);
			this.state = 4260;
			this._errHandler.sync(this);
			_alt = 1;
			do {
				switch (_alt) {
				case 1:
					{
					{
					this.state = 4259;
					this.procedureSqlStatement();
					}
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				this.state = 4262;
				this._errHandler.sync(this);
				_alt = this._interp.adaptivePredict(this._input, 613, this._ctx);
			} while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER);
			this.state = 4264;
			this.match(SqlParser.END);
			this.state = 4265;
			this.match(SqlParser.WHILE);
			this.state = 4267;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (((((_la - 32)) & ~0x1F) === 0 && ((1 << (_la - 32)) & 4105) !== 0) || _la===87 || _la===105 || _la===133 || _la===151 || ((((_la - 199)) & ~0x1F) === 0 && ((1 << (_la - 199)) & 5373983) !== 0) || ((((_la - 233)) & ~0x1F) === 0 && ((1 << (_la - 233)) & 536870979) !== 0) || ((((_la - 270)) & ~0x1F) === 0 && ((1 << (_la - 270)) & 4294967295) !== 0) || ((((_la - 302)) & ~0x1F) === 0 && ((1 << (_la - 302)) & 4294967295) !== 0) || ((((_la - 334)) & ~0x1F) === 0 && ((1 << (_la - 334)) & 4294967295) !== 0) || ((((_la - 366)) & ~0x1F) === 0 && ((1 << (_la - 366)) & 4294967295) !== 0) || ((((_la - 398)) & ~0x1F) === 0 && ((1 << (_la - 398)) & 4294967295) !== 0) || ((((_la - 430)) & ~0x1F) === 0 && ((1 << (_la - 430)) & 4294967295) !== 0) || ((((_la - 462)) & ~0x1F) === 0 && ((1 << (_la - 462)) & 4294967295) !== 0) || ((((_la - 494)) & ~0x1F) === 0 && ((1 << (_la - 494)) & 4294967295) !== 0) || ((((_la - 526)) & ~0x1F) === 0 && ((1 << (_la - 526)) & 4293918719) !== 0) || ((((_la - 558)) & ~0x1F) === 0 && ((1 << (_la - 558)) & 2145386495) !== 0) || ((((_la - 593)) & ~0x1F) === 0 && ((1 << (_la - 593)) & 4294705151) !== 0) || ((((_la - 625)) & ~0x1F) === 0 && ((1 << (_la - 625)) & 4294967295) !== 0) || ((((_la - 657)) & ~0x1F) === 0 && ((1 << (_la - 657)) & 4294967295) !== 0) || ((((_la - 689)) & ~0x1F) === 0 && ((1 << (_la - 689)) & 4294967199) !== 0) || ((((_la - 721)) & ~0x1F) === 0 && ((1 << (_la - 721)) & 4294967295) !== 0) || ((((_la - 753)) & ~0x1F) === 0 && ((1 << (_la - 753)) & 4294967295) !== 0) || ((((_la - 785)) & ~0x1F) === 0 && ((1 << (_la - 785)) & 4294967295) !== 0) || ((((_la - 817)) & ~0x1F) === 0 && ((1 << (_la - 817)) & 4294967295) !== 0) || ((((_la - 849)) & ~0x1F) === 0 && ((1 << (_la - 849)) & 4294967295) !== 0) || ((((_la - 881)) & ~0x1F) === 0 && ((1 << (_la - 881)) & 4294967295) !== 0) || ((((_la - 913)) & ~0x1F) === 0 && ((1 << (_la - 913)) & 4294967295) !== 0) || ((((_la - 945)) & ~0x1F) === 0 && ((1 << (_la - 945)) & 4294967295) !== 0) || ((((_la - 977)) & ~0x1F) === 0 && ((1 << (_la - 977)) & 131071) !== 0) || ((((_la - 1032)) & ~0x1F) === 0 && ((1 << (_la - 1032)) & 6153) !== 0)) {
				{
				this.state = 4266;
				this.uid();
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public cursorStatement(): CursorStatementContext {
		let localctx: CursorStatementContext = new CursorStatementContext(this, this._ctx, this.state);
		this.enterRule(localctx, 366, SqlParser.RULE_cursorStatement);
		let _la: number;
		try {
			this.state = 4284;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case 299:
				localctx = new CloseCursorContext(this, localctx);
				this.enterOuterAlt(localctx, 1);
				{
				this.state = 4269;
				this.match(SqlParser.CLOSE);
				this.state = 4270;
				this.uid();
				}
				break;
			case 57:
				localctx = new FetchCursorContext(this, localctx);
				this.enterOuterAlt(localctx, 2);
				{
				this.state = 4271;
				this.match(SqlParser.FETCH);
				this.state = 4276;
				this._errHandler.sync(this);
				switch ( this._interp.adaptivePredict(this._input, 616, this._ctx) ) {
				case 1:
					{
					this.state = 4273;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
					if (_la===447) {
						{
						this.state = 4272;
						this.match(SqlParser.NEXT);
						}
					}

					this.state = 4275;
					this.match(SqlParser.FROM);
					}
					break;
				}
				this.state = 4278;
				this.uid();
				this.state = 4279;
				this.match(SqlParser.INTO);
				this.state = 4280;
				this.uidList();
				}
				break;
			case 458:
				localctx = new OpenCursorContext(this, localctx);
				this.enterOuterAlt(localctx, 3);
				{
				this.state = 4282;
				this.match(SqlParser.OPEN);
				this.state = 4283;
				this.uid();
				}
				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 declareVariable(): DeclareVariableContext {
		let localctx: DeclareVariableContext = new DeclareVariableContext(this, this._ctx, this.state);
		this.enterRule(localctx, 368, SqlParser.RULE_declareVariable);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 4286;
			this.match(SqlParser.DECLARE);
			this.state = 4287;
			this.uidList();
			this.state = 4288;
			this.dataType();
			this.state = 4291;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===38) {
				{
				this.state = 4289;
				this.match(SqlParser.DEFAULT);
				this.state = 4290;
				this.defaultValue();
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public declareCondition(): DeclareConditionContext {
		let localctx: DeclareConditionContext = new DeclareConditionContext(this, this._ctx, this.state);
		this.enterRule(localctx, 370, SqlParser.RULE_declareCondition);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 4293;
			this.match(SqlParser.DECLARE);
			this.state = 4294;
			this.uid();
			this.state = 4295;
			this.match(SqlParser.CONDITION);
			this.state = 4296;
			this.match(SqlParser.FOR);
			this.state = 4303;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case 1025:
			case 1026:
			case 1027:
			case 1036:
				{
				this.state = 4297;
				this.decimalLiteral();
				}
				break;
			case 145:
				{
				this.state = 4298;
				this.match(SqlParser.SQLSTATE);
				this.state = 4300;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===576) {
					{
					this.state = 4299;
					this.match(SqlParser.VALUE);
					}
				}

				this.state = 4302;
				this.match(SqlParser.STRING_LITERAL);
				}
				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 declareCursor(): DeclareCursorContext {
		let localctx: DeclareCursorContext = new DeclareCursorContext(this, this._ctx, this.state);
		this.enterRule(localctx, 372, SqlParser.RULE_declareCursor);
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 4305;
			this.match(SqlParser.DECLARE);
			this.state = 4306;
			this.uid();
			this.state = 4307;
			this.match(SqlParser.CURSOR);
			this.state = 4308;
			this.match(SqlParser.FOR);
			this.state = 4309;
			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 declareHandler(): DeclareHandlerContext {
		let localctx: DeclareHandlerContext = new DeclareHandlerContext(this, this._ctx, this.state);
		this.enterRule(localctx, 374, SqlParser.RULE_declareHandler);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 4311;
			this.match(SqlParser.DECLARE);
			this.state = 4312;
			localctx._handlerAction = this._input.LT(1);
			_la = this._input.LA(1);
			if(!(_la===28 || _la===54 || _la===161)) {
			    localctx._handlerAction = this._errHandler.recoverInline(this);
			}
			else {
				this._errHandler.reportMatch(this);
			    this.consume();
			}
			this.state = 4313;
			this.match(SqlParser.HANDLER);
			this.state = 4314;
			this.match(SqlParser.FOR);
			this.state = 4315;
			this.handlerConditionValue();
			this.state = 4320;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la===1022) {
				{
				{
				this.state = 4316;
				this.match(SqlParser.COMMA);
				this.state = 4317;
				this.handlerConditionValue();
				}
				}
				this.state = 4322;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			}
			this.state = 4323;
			this.routineBody();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public handlerConditionValue(): HandlerConditionValueContext {
		let localctx: HandlerConditionValueContext = new HandlerConditionValueContext(this, this._ctx, this.state);
		this.enterRule(localctx, 376, SqlParser.RULE_handlerConditionValue);
		let _la: number;
		try {
			this.state = 4336;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case 1025:
			case 1026:
			case 1027:
			case 1036:
				localctx = new HandlerConditionCodeContext(this, localctx);
				this.enterOuterAlt(localctx, 1);
				{
				this.state = 4325;
				this.decimalLiteral();
				}
				break;
			case 145:
				localctx = new HandlerConditionStateContext(this, localctx);
				this.enterOuterAlt(localctx, 2);
				{
				this.state = 4326;
				this.match(SqlParser.SQLSTATE);
				this.state = 4328;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===576) {
					{
					this.state = 4327;
					this.match(SqlParser.VALUE);
					}
				}

				this.state = 4330;
				this.match(SqlParser.STRING_LITERAL);
				}
				break;
			case 32:
			case 35:
			case 44:
			case 87:
			case 105:
			case 133:
			case 151:
			case 199:
			case 200:
			case 201:
			case 202:
			case 203:
			case 216:
			case 219:
			case 221:
			case 233:
			case 234:
			case 239:
			case 262:
			case 270:
			case 271:
			case 272:
			case 273:
			case 274:
			case 275:
			case 276:
			case 277:
			case 278:
			case 279:
			case 280:
			case 281:
			case 282:
			case 283:
			case 284:
			case 285:
			case 286:
			case 287:
			case 288:
			case 289:
			case 290:
			case 291:
			case 292:
			case 293:
			case 294:
			case 295:
			case 296:
			case 297:
			case 298:
			case 299:
			case 300:
			case 301:
			case 302:
			case 303:
			case 304:
			case 305:
			case 306:
			case 307:
			case 308:
			case 309:
			case 310:
			case 311:
			case 312:
			case 313:
			case 314:
			case 315:
			case 316:
			case 317:
			case 318:
			case 319:
			case 320:
			case 321:
			case 322:
			case 323:
			case 324:
			case 325:
			case 326:
			case 327:
			case 328:
			case 329:
			case 330:
			case 331:
			case 332:
			case 333:
			case 334:
			case 335:
			case 336:
			case 337:
			case 338:
			case 339:
			case 340:
			case 341:
			case 342:
			case 343:
			case 344:
			case 345:
			case 346:
			case 347:
			case 348:
			case 349:
			case 350:
			case 351:
			case 352:
			case 353:
			case 354:
			case 355:
			case 356:
			case 357:
			case 358:
			case 359:
			case 360:
			case 361:
			case 362:
			case 363:
			case 364:
			case 365:
			case 366:
			case 367:
			case 368:
			case 369:
			case 370:
			case 371:
			case 372:
			case 373:
			case 374:
			case 375:
			case 376:
			case 377:
			case 378:
			case 379:
			case 380:
			case 381:
			case 382:
			case 383:
			case 384:
			case 385:
			case 386:
			case 387:
			case 388:
			case 389:
			case 390:
			case 391:
			case 392:
			case 393:
			case 394:
			case 395:
			case 396:
			case 397:
			case 398:
			case 399:
			case 400:
			case 401:
			case 402:
			case 403:
			case 404:
			case 405:
			case 406:
			case 407:
			case 408:
			case 409:
			case 410:
			case 411:
			case 412:
			case 413:
			case 414:
			case 415:
			case 416:
			case 417:
			case 418:
			case 419:
			case 420:
			case 421:
			case 422:
			case 423:
			case 424:
			case 425:
			case 426:
			case 427:
			case 428:
			case 429:
			case 430:
			case 431:
			case 432:
			case 433:
			case 434:
			case 435:
			case 436:
			case 437:
			case 438:
			case 439:
			case 440:
			case 441:
			case 442:
			case 443:
			case 444:
			case 445:
			case 446:
			case 447:
			case 448:
			case 449:
			case 450:
			case 451:
			case 452:
			case 453:
			case 454:
			case 455:
			case 456:
			case 457:
			case 458:
			case 459:
			case 460:
			case 461:
			case 462:
			case 463:
			case 464:
			case 465:
			case 466:
			case 467:
			case 468:
			case 469:
			case 470:
			case 471:
			case 472:
			case 473:
			case 474:
			case 475:
			case 476:
			case 477:
			case 478:
			case 479:
			case 480:
			case 481:
			case 482:
			case 483:
			case 484:
			case 485:
			case 486:
			case 487:
			case 488:
			case 489:
			case 490:
			case 491:
			case 492:
			case 493:
			case 494:
			case 495:
			case 496:
			case 497:
			case 498:
			case 499:
			case 500:
			case 501:
			case 502:
			case 503:
			case 504:
			case 505:
			case 506:
			case 507:
			case 508:
			case 509:
			case 510:
			case 511:
			case 512:
			case 513:
			case 514:
			case 515:
			case 516:
			case 517:
			case 518:
			case 519:
			case 520:
			case 521:
			case 522:
			case 523:
			case 524:
			case 525:
			case 526:
			case 527:
			case 528:
			case 529:
			case 530:
			case 531:
			case 532:
			case 533:
			case 534:
			case 535:
			case 536:
			case 537:
			case 538:
			case 539:
			case 540:
			case 541:
			case 542:
			case 543:
			case 544:
			case 545:
			case 547:
			case 548:
			case 549:
			case 550:
			case 551:
			case 552:
			case 553:
			case 554:
			case 555:
			case 556:
			case 557:
			case 558:
			case 559:
			case 560:
			case 561:
			case 562:
			case 563:
			case 564:
			case 565:
			case 566:
			case 567:
			case 568:
			case 569:
			case 570:
			case 571:
			case 572:
			case 573:
			case 574:
			case 575:
			case 576:
			case 577:
			case 578:
			case 580:
			case 581:
			case 582:
			case 583:
			case 584:
			case 585:
			case 586:
			case 587:
			case 588:
			case 593:
			case 594:
			case 595:
			case 596:
			case 597:
			case 598:
			case 599:
			case 600:
			case 601:
			case 602:
			case 603:
			case 604:
			case 605:
			case 606:
			case 607:
			case 608:
			case 609:
			case 610:
			case 612:
			case 613:
			case 614:
			case 615:
			case 616:
			case 617:
			case 618:
			case 619:
			case 620:
			case 621:
			case 622:
			case 623:
			case 624:
			case 625:
			case 626:
			case 627:
			case 628:
			case 629:
			case 630:
			case 631:
			case 632:
			case 633:
			case 634:
			case 635:
			case 636:
			case 637:
			case 638:
			case 639:
			case 640:
			case 641:
			case 642:
			case 643:
			case 644:
			case 645:
			case 646:
			case 647:
			case 648:
			case 649:
			case 650:
			case 651:
			case 652:
			case 653:
			case 654:
			case 655:
			case 656:
			case 657:
			case 658:
			case 659:
			case 660:
			case 661:
			case 662:
			case 663:
			case 664:
			case 665:
			case 666:
			case 667:
			case 668:
			case 669:
			case 670:
			case 671:
			case 672:
			case 673:
			case 674:
			case 675:
			case 676:
			case 677:
			case 678:
			case 679:
			case 680:
			case 681:
			case 682:
			case 683:
			case 684:
			case 685:
			case 686:
			case 687:
			case 688:
			case 689:
			case 690:
			case 691:
			case 692:
			case 693:
			case 696:
			case 697:
			case 698:
			case 699:
			case 700:
			case 701:
			case 702:
			case 703:
			case 704:
			case 705:
			case 706:
			case 707:
			case 708:
			case 709:
			case 710:
			case 711:
			case 712:
			case 713:
			case 714:
			case 715:
			case 716:
			case 717:
			case 718:
			case 719:
			case 720:
			case 721:
			case 722:
			case 723:
			case 724:
			case 725:
			case 726:
			case 727:
			case 728:
			case 729:
			case 730:
			case 731:
			case 732:
			case 733:
			case 734:
			case 735:
			case 736:
			case 737:
			case 738:
			case 739:
			case 740:
			case 741:
			case 742:
			case 743:
			case 744:
			case 745:
			case 746:
			case 747:
			case 748:
			case 749:
			case 750:
			case 751:
			case 752:
			case 753:
			case 754:
			case 755:
			case 756:
			case 757:
			case 758:
			case 759:
			case 760:
			case 761:
			case 762:
			case 763:
			case 764:
			case 765:
			case 766:
			case 767:
			case 768:
			case 769:
			case 770:
			case 771:
			case 772:
			case 773:
			case 774:
			case 775:
			case 776:
			case 777:
			case 778:
			case 779:
			case 780:
			case 781:
			case 782:
			case 783:
			case 784:
			case 785:
			case 786:
			case 787:
			case 788:
			case 789:
			case 790:
			case 791:
			case 792:
			case 793:
			case 794:
			case 795:
			case 796:
			case 797:
			case 798:
			case 799:
			case 800:
			case 801:
			case 802:
			case 803:
			case 804:
			case 805:
			case 806:
			case 807:
			case 808:
			case 809:
			case 810:
			case 811:
			case 812:
			case 813:
			case 814:
			case 815:
			case 816:
			case 817:
			case 818:
			case 819:
			case 820:
			case 821:
			case 822:
			case 823:
			case 824:
			case 825:
			case 826:
			case 827:
			case 828:
			case 829:
			case 830:
			case 831:
			case 832:
			case 833:
			case 834:
			case 835:
			case 836:
			case 837:
			case 838:
			case 839:
			case 840:
			case 841:
			case 842:
			case 843:
			case 844:
			case 845:
			case 846:
			case 847:
			case 848:
			case 849:
			case 850:
			case 851:
			case 852:
			case 853:
			case 854:
			case 855:
			case 856:
			case 857:
			case 858:
			case 859:
			case 860:
			case 861:
			case 862:
			case 863:
			case 864:
			case 865:
			case 866:
			case 867:
			case 868:
			case 869:
			case 870:
			case 871:
			case 872:
			case 873:
			case 874:
			case 875:
			case 876:
			case 877:
			case 878:
			case 879:
			case 880:
			case 881:
			case 882:
			case 883:
			case 884:
			case 885:
			case 886:
			case 887:
			case 888:
			case 889:
			case 890:
			case 891:
			case 892:
			case 893:
			case 894:
			case 895:
			case 896:
			case 897:
			case 898:
			case 899:
			case 900:
			case 901:
			case 902:
			case 903:
			case 904:
			case 905:
			case 906:
			case 907:
			case 908:
			case 909:
			case 910:
			case 911:
			case 912:
			case 913:
			case 914:
			case 915:
			case 916:
			case 917:
			case 918:
			case 919:
			case 920:
			case 921:
			case 922:
			case 923:
			case 924:
			case 925:
			case 926:
			case 927:
			case 928:
			case 929:
			case 930:
			case 931:
			case 932:
			case 933:
			case 934:
			case 935:
			case 936:
			case 937:
			case 938:
			case 939:
			case 940:
			case 941:
			case 942:
			case 943:
			case 944:
			case 945:
			case 946:
			case 947:
			case 948:
			case 949:
			case 950:
			case 951:
			case 952:
			case 953:
			case 954:
			case 955:
			case 956:
			case 957:
			case 958:
			case 959:
			case 960:
			case 961:
			case 962:
			case 963:
			case 964:
			case 965:
			case 966:
			case 967:
			case 968:
			case 969:
			case 970:
			case 971:
			case 972:
			case 973:
			case 974:
			case 975:
			case 976:
			case 977:
			case 978:
			case 979:
			case 980:
			case 981:
			case 982:
			case 983:
			case 984:
			case 985:
			case 986:
			case 987:
			case 988:
			case 989:
			case 990:
			case 991:
			case 992:
			case 993:
			case 1032:
			case 1035:
			case 1043:
			case 1044:
				localctx = new HandlerConditionNameContext(this, localctx);
				this.enterOuterAlt(localctx, 3);
				{
				this.state = 4331;
				this.uid();
				}
				break;
			case 146:
				localctx = new HandlerConditionWarningContext(this, localctx);
				this.enterOuterAlt(localctx, 4);
				{
				this.state = 4332;
				this.match(SqlParser.SQLWARNING);
				}
				break;
			case 102:
				localctx = new HandlerConditionNotfoundContext(this, localctx);
				this.enterOuterAlt(localctx, 5);
				{
				this.state = 4333;
				this.match(SqlParser.NOT);
				this.state = 4334;
				this.match(SqlParser.FOUND);
				}
				break;
			case 144:
				localctx = new HandlerConditionExceptionContext(this, localctx);
				this.enterOuterAlt(localctx, 6);
				{
				this.state = 4335;
				this.match(SqlParser.SQLEXCEPTION);
				}
				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 procedureSqlStatement(): ProcedureSqlStatementContext {
		let localctx: ProcedureSqlStatementContext = new ProcedureSqlStatementContext(this, this._ctx, this.state);
		this.enterRule(localctx, 378, SqlParser.RULE_procedureSqlStatement);
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 4340;
			this._errHandler.sync(this);
			switch ( this._interp.adaptivePredict(this._input, 624, this._ctx) ) {
			case 1:
				{
				this.state = 4338;
				this.compoundStatement();
				}
				break;
			case 2:
				{
				this.state = 4339;
				this.sqlStatement();
				}
				break;
			}
			this.state = 4342;
			this.match(SqlParser.SEMI);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public caseAlternative(): CaseAlternativeContext {
		let localctx: CaseAlternativeContext = new CaseAlternativeContext(this, this._ctx, this.state);
		this.enterRule(localctx, 380, SqlParser.RULE_caseAlternative);
		try {
			let _alt: number;
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 4344;
			this.match(SqlParser.WHEN);
			this.state = 4347;
			this._errHandler.sync(this);
			switch ( this._interp.adaptivePredict(this._input, 625, this._ctx) ) {
			case 1:
				{
				this.state = 4345;
				this.constant();
				}
				break;
			case 2:
				{
				this.state = 4346;
				this.expression(0);
				}
				break;
			}
			this.state = 4349;
			this.match(SqlParser.THEN);
			this.state = 4351;
			this._errHandler.sync(this);
			_alt = 1;
			do {
				switch (_alt) {
				case 1:
					{
					{
					this.state = 4350;
					this.procedureSqlStatement();
					}
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				this.state = 4353;
				this._errHandler.sync(this);
				_alt = this._interp.adaptivePredict(this._input, 626, 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 elifAlternative(): ElifAlternativeContext {
		let localctx: ElifAlternativeContext = new ElifAlternativeContext(this, this._ctx, this.state);
		this.enterRule(localctx, 382, SqlParser.RULE_elifAlternative);
		try {
			let _alt: number;
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 4355;
			this.match(SqlParser.ELSEIF);
			this.state = 4356;
			this.expression(0);
			this.state = 4357;
			this.match(SqlParser.THEN);
			this.state = 4359;
			this._errHandler.sync(this);
			_alt = 1;
			do {
				switch (_alt) {
				case 1:
					{
					{
					this.state = 4358;
					this.procedureSqlStatement();
					}
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				this.state = 4361;
				this._errHandler.sync(this);
				_alt = this._interp.adaptivePredict(this._input, 627, 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 alterUser(): AlterUserContext {
		let localctx: AlterUserContext = new AlterUserContext(this, this._ctx, this.state);
		this.enterRule(localctx, 384, SqlParser.RULE_alterUser);
		let _la: number;
		try {
			this.state = 4417;
			this._errHandler.sync(this);
			switch ( this._interp.adaptivePredict(this._input, 639, this._ctx) ) {
			case 1:
				localctx = new AlterUserMysqlV56Context(this, localctx);
				this.enterOuterAlt(localctx, 1);
				{
				this.state = 4363;
				this.match(SqlParser.ALTER);
				this.state = 4364;
				this.match(SqlParser.USER);
				this.state = 4365;
				this.userSpecification();
				this.state = 4370;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				while (_la===1022) {
					{
					{
					this.state = 4366;
					this.match(SqlParser.COMMA);
					this.state = 4367;
					this.userSpecification();
					}
					}
					this.state = 4372;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
				}
				}
				break;
			case 2:
				localctx = new AlterUserMysqlV57Context(this, localctx);
				this.enterOuterAlt(localctx, 2);
				{
				this.state = 4373;
				this.match(SqlParser.ALTER);
				this.state = 4374;
				this.match(SqlParser.USER);
				this.state = 4376;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===69) {
					{
					this.state = 4375;
					this.ifExists();
					}
				}

				this.state = 4378;
				this.userAuthOption();
				this.state = 4383;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				while (_la===1022) {
					{
					{
					this.state = 4379;
					this.match(SqlParser.COMMA);
					this.state = 4380;
					this.userAuthOption();
					}
					}
					this.state = 4385;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
				}
				this.state = 4400;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===128) {
					{
					this.state = 4386;
					this.match(SqlParser.REQUIRE);
					this.state = 4398;
					this._errHandler.sync(this);
					switch (this._input.LA(1)) {
					case 450:
						{
						this.state = 4387;
						(localctx as AlterUserMysqlV57Context)._tlsNone = this.match(SqlParser.NONE);
						}
						break;
					case 150:
					case 296:
					case 393:
					case 549:
					case 586:
						{
						this.state = 4388;
						this.tlsOption();
						this.state = 4395;
						this._errHandler.sync(this);
						_la = this._input.LA(1);
						while (_la===10 || _la===150 || _la===296 || _la===393 || _la===549 || _la===586) {
							{
							{
							this.state = 4390;
							this._errHandler.sync(this);
							_la = this._input.LA(1);
							if (_la===10) {
								{
								this.state = 4389;
								this.match(SqlParser.AND);
								}
							}

							this.state = 4392;
							this.tlsOption();
							}
							}
							this.state = 4397;
							this._errHandler.sync(this);
							_la = this._input.LA(1);
						}
						}
						break;
					default:
						throw new NoViableAltException(this);
					}
					}
				}

				this.state = 4408;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===174) {
					{
					this.state = 4402;
					this.match(SqlParser.WITH);
					this.state = 4404;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
					do {
						{
						{
						this.state = 4403;
						this.userResourceOption();
						}
						}
						this.state = 4406;
						this._errHandler.sync(this);
						_la = this._input.LA(1);
					} while (((((_la - 426)) & ~0x1F) === 0 && ((1 << (_la - 426)) & 51) !== 0));
					}
				}

				this.state = 4414;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				while (_la===270 || _la===468) {
					{
					this.state = 4412;
					this._errHandler.sync(this);
					switch (this._input.LA(1)) {
					case 468:
						{
						this.state = 4410;
						this.userPasswordOption();
						}
						break;
					case 270:
						{
						this.state = 4411;
						this.userLockOption();
						}
						break;
					default:
						throw new NoViableAltException(this);
					}
					}
					this.state = 4416;
					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 createUser(): CreateUserContext {
		let localctx: CreateUserContext = new CreateUserContext(this, this._ctx, this.state);
		this.enterRule(localctx, 386, SqlParser.RULE_createUser);
		let _la: number;
		try {
			this.state = 4473;
			this._errHandler.sync(this);
			switch ( this._interp.adaptivePredict(this._input, 651, this._ctx) ) {
			case 1:
				localctx = new CreateUserMysqlV56Context(this, localctx);
				this.enterOuterAlt(localctx, 1);
				{
				this.state = 4419;
				this.match(SqlParser.CREATE);
				this.state = 4420;
				this.match(SqlParser.USER);
				this.state = 4421;
				this.userAuthOption();
				this.state = 4426;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				while (_la===1022) {
					{
					{
					this.state = 4422;
					this.match(SqlParser.COMMA);
					this.state = 4423;
					this.userAuthOption();
					}
					}
					this.state = 4428;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
				}
				}
				break;
			case 2:
				localctx = new CreateUserMysqlV57Context(this, localctx);
				this.enterOuterAlt(localctx, 2);
				{
				this.state = 4429;
				this.match(SqlParser.CREATE);
				this.state = 4430;
				this.match(SqlParser.USER);
				this.state = 4432;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===69) {
					{
					this.state = 4431;
					this.ifNotExists();
					}
				}

				this.state = 4434;
				this.userAuthOption();
				this.state = 4439;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				while (_la===1022) {
					{
					{
					this.state = 4435;
					this.match(SqlParser.COMMA);
					this.state = 4436;
					this.userAuthOption();
					}
					}
					this.state = 4441;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
				}
				this.state = 4456;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===128) {
					{
					this.state = 4442;
					this.match(SqlParser.REQUIRE);
					this.state = 4454;
					this._errHandler.sync(this);
					switch (this._input.LA(1)) {
					case 450:
						{
						this.state = 4443;
						(localctx as CreateUserMysqlV57Context)._tlsNone = this.match(SqlParser.NONE);
						}
						break;
					case 150:
					case 296:
					case 393:
					case 549:
					case 586:
						{
						this.state = 4444;
						this.tlsOption();
						this.state = 4451;
						this._errHandler.sync(this);
						_la = this._input.LA(1);
						while (_la===10 || _la===150 || _la===296 || _la===393 || _la===549 || _la===586) {
							{
							{
							this.state = 4446;
							this._errHandler.sync(this);
							_la = this._input.LA(1);
							if (_la===10) {
								{
								this.state = 4445;
								this.match(SqlParser.AND);
								}
							}

							this.state = 4448;
							this.tlsOption();
							}
							}
							this.state = 4453;
							this._errHandler.sync(this);
							_la = this._input.LA(1);
						}
						}
						break;
					default:
						throw new NoViableAltException(this);
					}
					}
				}

				this.state = 4464;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===174) {
					{
					this.state = 4458;
					this.match(SqlParser.WITH);
					this.state = 4460;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
					do {
						{
						{
						this.state = 4459;
						this.userResourceOption();
						}
						}
						this.state = 4462;
						this._errHandler.sync(this);
						_la = this._input.LA(1);
					} while (((((_la - 426)) & ~0x1F) === 0 && ((1 << (_la - 426)) & 51) !== 0));
					}
				}

				this.state = 4470;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				while (_la===270 || _la===468) {
					{
					this.state = 4468;
					this._errHandler.sync(this);
					switch (this._input.LA(1)) {
					case 468:
						{
						this.state = 4466;
						this.userPasswordOption();
						}
						break;
					case 270:
						{
						this.state = 4467;
						this.userLockOption();
						}
						break;
					default:
						throw new NoViableAltException(this);
					}
					}
					this.state = 4472;
					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 dropUser(): DropUserContext {
		let localctx: DropUserContext = new DropUserContext(this, this._ctx, this.state);
		this.enterRule(localctx, 388, SqlParser.RULE_dropUser);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 4475;
			this.match(SqlParser.DROP);
			this.state = 4476;
			this.match(SqlParser.USER);
			this.state = 4478;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===69) {
				{
				this.state = 4477;
				this.ifExists();
				}
			}

			this.state = 4480;
			this.userName();
			this.state = 4485;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la===1022) {
				{
				{
				this.state = 4481;
				this.match(SqlParser.COMMA);
				this.state = 4482;
				this.userName();
				}
				}
				this.state = 4487;
				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 grantStatement(): GrantStatementContext {
		let localctx: GrantStatementContext = new GrantStatementContext(this, this._ctx, this.state);
		this.enterRule(localctx, 390, SqlParser.RULE_grantStatement);
		let _la: number;
		try {
			let _alt: number;
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 4488;
			this.match(SqlParser.GRANT);
			this.state = 4489;
			this.privelegeClause();
			this.state = 4494;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la===1022) {
				{
				{
				this.state = 4490;
				this.match(SqlParser.COMMA);
				this.state = 4491;
				this.privelegeClause();
				}
				}
				this.state = 4496;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			}
			this.state = 4497;
			this.match(SqlParser.ON);
			this.state = 4499;
			this._errHandler.sync(this);
			switch ( this._interp.adaptivePredict(this._input, 655, this._ctx) ) {
			case 1:
				{
				this.state = 4498;
				localctx._privilegeObject = this._input.LT(1);
				_la = this._input.LA(1);
				if(!(_la===117 || _la===154 || _la===368)) {
				    localctx._privilegeObject = this._errHandler.recoverInline(this);
				}
				else {
					this._errHandler.reportMatch(this);
				    this.consume();
				}
				}
				break;
			}
			this.state = 4501;
			this.privilegeLevel();
			this.state = 4502;
			this.match(SqlParser.TO);
			this.state = 4503;
			this.userAuthOption();
			this.state = 4508;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la===1022) {
				{
				{
				this.state = 4504;
				this.match(SqlParser.COMMA);
				this.state = 4505;
				this.userAuthOption();
				}
				}
				this.state = 4510;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			}
			this.state = 4525;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===128) {
				{
				this.state = 4511;
				this.match(SqlParser.REQUIRE);
				this.state = 4523;
				this._errHandler.sync(this);
				switch (this._input.LA(1)) {
				case 450:
					{
					this.state = 4512;
					localctx._tlsNone = this.match(SqlParser.NONE);
					}
					break;
				case 150:
				case 296:
				case 393:
				case 549:
				case 586:
					{
					this.state = 4513;
					this.tlsOption();
					this.state = 4520;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
					while (_la===10 || _la===150 || _la===296 || _la===393 || _la===549 || _la===586) {
						{
						{
						this.state = 4515;
						this._errHandler.sync(this);
						_la = this._input.LA(1);
						if (_la===10) {
							{
							this.state = 4514;
							this.match(SqlParser.AND);
							}
						}

						this.state = 4517;
						this.tlsOption();
						}
						}
						this.state = 4522;
						this._errHandler.sync(this);
						_la = this._input.LA(1);
					}
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				}
			}

			this.state = 4536;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===174) {
				{
				this.state = 4527;
				this.match(SqlParser.WITH);
				this.state = 4533;
				this._errHandler.sync(this);
				_alt = this._interp.adaptivePredict(this._input, 662, this._ctx);
				while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) {
					if (_alt === 1) {
						{
						this.state = 4531;
						this._errHandler.sync(this);
						switch (this._input.LA(1)) {
						case 65:
							{
							this.state = 4528;
							this.match(SqlParser.GRANT);
							this.state = 4529;
							this.match(SqlParser.OPTION);
							}
							break;
						case 426:
						case 427:
						case 430:
						case 431:
							{
							this.state = 4530;
							this.userResourceOption();
							}
							break;
						default:
							throw new NoViableAltException(this);
						}
						}
					}
					this.state = 4535;
					this._errHandler.sync(this);
					_alt = this._interp.adaptivePredict(this._input, 662, 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 grantProxy(): GrantProxyContext {
		let localctx: GrantProxyContext = new GrantProxyContext(this, this._ctx, this.state);
		this.enterRule(localctx, 392, SqlParser.RULE_grantProxy);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 4538;
			this.match(SqlParser.GRANT);
			this.state = 4539;
			this.match(SqlParser.PROXY);
			this.state = 4540;
			this.match(SqlParser.ON);
			this.state = 4541;
			localctx._fromFirst = this.userName();
			this.state = 4542;
			this.match(SqlParser.TO);
			this.state = 4543;
			localctx._toFirst = this.userName();
			this.state = 4548;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la===1022) {
				{
				{
				this.state = 4544;
				this.match(SqlParser.COMMA);
				this.state = 4545;
				localctx._userName = this.userName();
				localctx._toOther.push(localctx._userName);
				}
				}
				this.state = 4550;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			}
			this.state = 4554;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===174) {
				{
				this.state = 4551;
				this.match(SqlParser.WITH);
				this.state = 4552;
				this.match(SqlParser.GRANT);
				this.state = 4553;
				this.match(SqlParser.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 renameUser(): RenameUserContext {
		let localctx: RenameUserContext = new RenameUserContext(this, this._ctx, this.state);
		this.enterRule(localctx, 394, SqlParser.RULE_renameUser);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 4556;
			this.match(SqlParser.RENAME);
			this.state = 4557;
			this.match(SqlParser.USER);
			this.state = 4558;
			this.renameUserClause();
			this.state = 4563;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la===1022) {
				{
				{
				this.state = 4559;
				this.match(SqlParser.COMMA);
				this.state = 4560;
				this.renameUserClause();
				}
				}
				this.state = 4565;
				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 revokeStatement(): RevokeStatementContext {
		let localctx: RevokeStatementContext = new RevokeStatementContext(this, this._ctx, this.state);
		this.enterRule(localctx, 396, SqlParser.RULE_revokeStatement);
		let _la: number;
		try {
			this.state = 4606;
			this._errHandler.sync(this);
			switch ( this._interp.adaptivePredict(this._input, 672, this._ctx) ) {
			case 1:
				localctx = new DetailRevokeContext(this, localctx);
				this.enterOuterAlt(localctx, 1);
				{
				this.state = 4566;
				this.match(SqlParser.REVOKE);
				this.state = 4567;
				this.privelegeClause();
				this.state = 4572;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				while (_la===1022) {
					{
					{
					this.state = 4568;
					this.match(SqlParser.COMMA);
					this.state = 4569;
					this.privelegeClause();
					}
					}
					this.state = 4574;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
				}
				this.state = 4575;
				this.match(SqlParser.ON);
				this.state = 4577;
				this._errHandler.sync(this);
				switch ( this._interp.adaptivePredict(this._input, 668, this._ctx) ) {
				case 1:
					{
					this.state = 4576;
					(localctx as DetailRevokeContext)._privilegeObject = this._input.LT(1);
					_la = this._input.LA(1);
					if(!(_la===117 || _la===154 || _la===368)) {
					    (localctx as DetailRevokeContext)._privilegeObject = this._errHandler.recoverInline(this);
					}
					else {
						this._errHandler.reportMatch(this);
					    this.consume();
					}
					}
					break;
				}
				this.state = 4579;
				this.privilegeLevel();
				this.state = 4580;
				this.match(SqlParser.FROM);
				this.state = 4581;
				this.userName();
				this.state = 4586;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				while (_la===1022) {
					{
					{
					this.state = 4582;
					this.match(SqlParser.COMMA);
					this.state = 4583;
					this.userName();
					}
					}
					this.state = 4588;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
				}
				}
				break;
			case 2:
				localctx = new ShortRevokeContext(this, localctx);
				this.enterOuterAlt(localctx, 2);
				{
				this.state = 4589;
				this.match(SqlParser.REVOKE);
				this.state = 4590;
				this.match(SqlParser.ALL);
				this.state = 4592;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===610) {
					{
					this.state = 4591;
					this.match(SqlParser.PRIVILEGES);
					}
				}

				this.state = 4594;
				this.match(SqlParser.COMMA);
				this.state = 4595;
				this.match(SqlParser.GRANT);
				this.state = 4596;
				this.match(SqlParser.OPTION);
				this.state = 4597;
				this.match(SqlParser.FROM);
				this.state = 4598;
				this.userName();
				this.state = 4603;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				while (_la===1022) {
					{
					{
					this.state = 4599;
					this.match(SqlParser.COMMA);
					this.state = 4600;
					this.userName();
					}
					}
					this.state = 4605;
					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 revokeProxy(): RevokeProxyContext {
		let localctx: RevokeProxyContext = new RevokeProxyContext(this, this._ctx, this.state);
		this.enterRule(localctx, 398, SqlParser.RULE_revokeProxy);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 4608;
			this.match(SqlParser.REVOKE);
			this.state = 4609;
			this.match(SqlParser.PROXY);
			this.state = 4610;
			this.match(SqlParser.ON);
			this.state = 4611;
			localctx._onUser = this.userName();
			this.state = 4612;
			this.match(SqlParser.FROM);
			this.state = 4613;
			localctx._fromFirst = this.userName();
			this.state = 4618;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la===1022) {
				{
				{
				this.state = 4614;
				this.match(SqlParser.COMMA);
				this.state = 4615;
				localctx._userName = this.userName();
				localctx._fromOther.push(localctx._userName);
				}
				}
				this.state = 4620;
				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 setPasswordStatement(): SetPasswordStatementContext {
		let localctx: SetPasswordStatementContext = new SetPasswordStatementContext(this, this._ctx, this.state);
		this.enterRule(localctx, 400, SqlParser.RULE_setPasswordStatement);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 4621;
			this.match(SqlParser.SET);
			this.state = 4622;
			this.match(SqlParser.PASSWORD);
			this.state = 4625;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===58) {
				{
				this.state = 4623;
				this.match(SqlParser.FOR);
				this.state = 4624;
				this.userName();
				}
			}

			this.state = 4627;
			this.match(SqlParser.EQUAL_SYMBOL);
			this.state = 4630;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case 454:
			case 468:
				{
				this.state = 4628;
				this.passwordFunctionClause();
				}
				break;
			case 1035:
				{
				this.state = 4629;
				this.match(SqlParser.STRING_LITERAL);
				}
				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 userSpecification(): UserSpecificationContext {
		let localctx: UserSpecificationContext = new UserSpecificationContext(this, this._ctx, this.state);
		this.enterRule(localctx, 402, SqlParser.RULE_userSpecification);
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 4632;
			this.userName();
			this.state = 4633;
			this.userPasswordOption();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public userAuthOption(): UserAuthOptionContext {
		let localctx: UserAuthOptionContext = new UserAuthOptionContext(this, this._ctx, this.state);
		this.enterRule(localctx, 404, SqlParser.RULE_userAuthOption);
		let _la: number;
		try {
			this.state = 4659;
			this._errHandler.sync(this);
			switch ( this._interp.adaptivePredict(this._input, 678, this._ctx) ) {
			case 1:
				localctx = new PasswordAuthOptionContext(this, localctx);
				this.enterOuterAlt(localctx, 1);
				{
				this.state = 4635;
				this.userName();
				this.state = 4636;
				this.match(SqlParser.IDENTIFIED);
				this.state = 4637;
				this.match(SqlParser.BY);
				this.state = 4638;
				this.match(SqlParser.PASSWORD);
				this.state = 4639;
				(localctx as PasswordAuthOptionContext)._hashed = this.match(SqlParser.STRING_LITERAL);
				}
				break;
			case 2:
				localctx = new StringAuthOptionContext(this, localctx);
				this.enterOuterAlt(localctx, 2);
				{
				this.state = 4641;
				this.userName();
				this.state = 4642;
				this.match(SqlParser.IDENTIFIED);
				this.state = 4645;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===174) {
					{
					this.state = 4643;
					this.match(SqlParser.WITH);
					this.state = 4644;
					this.authPlugin();
					}
				}

				this.state = 4647;
				this.match(SqlParser.BY);
				this.state = 4648;
				this.match(SqlParser.STRING_LITERAL);
				}
				break;
			case 3:
				localctx = new HashAuthOptionContext(this, localctx);
				this.enterOuterAlt(localctx, 3);
				{
				this.state = 4650;
				this.userName();
				this.state = 4651;
				this.match(SqlParser.IDENTIFIED);
				this.state = 4652;
				this.match(SqlParser.WITH);
				this.state = 4653;
				this.authPlugin();
				this.state = 4656;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===11) {
					{
					this.state = 4654;
					this.match(SqlParser.AS);
					this.state = 4655;
					this.match(SqlParser.STRING_LITERAL);
					}
				}

				}
				break;
			case 4:
				localctx = new SimpleAuthOptionContext(this, localctx);
				this.enterOuterAlt(localctx, 4);
				{
				this.state = 4658;
				this.userName();
				}
				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 tlsOption(): TlsOptionContext {
		let localctx: TlsOptionContext = new TlsOptionContext(this, this._ctx, this.state);
		this.enterRule(localctx, 406, SqlParser.RULE_tlsOption);
		try {
			this.state = 4669;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case 150:
				this.enterOuterAlt(localctx, 1);
				{
				this.state = 4661;
				this.match(SqlParser.SSL);
				}
				break;
			case 586:
				this.enterOuterAlt(localctx, 2);
				{
				this.state = 4662;
				this.match(SqlParser.X509);
				}
				break;
			case 296:
				this.enterOuterAlt(localctx, 3);
				{
				this.state = 4663;
				this.match(SqlParser.CIPHER);
				this.state = 4664;
				this.match(SqlParser.STRING_LITERAL);
				}
				break;
			case 393:
				this.enterOuterAlt(localctx, 4);
				{
				this.state = 4665;
				this.match(SqlParser.ISSUER);
				this.state = 4666;
				this.match(SqlParser.STRING_LITERAL);
				}
				break;
			case 549:
				this.enterOuterAlt(localctx, 5);
				{
				this.state = 4667;
				this.match(SqlParser.SUBJECT);
				this.state = 4668;
				this.match(SqlParser.STRING_LITERAL);
				}
				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 userResourceOption(): UserResourceOptionContext {
		let localctx: UserResourceOptionContext = new UserResourceOptionContext(this, this._ctx, this.state);
		this.enterRule(localctx, 408, SqlParser.RULE_userResourceOption);
		try {
			this.state = 4679;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case 427:
				this.enterOuterAlt(localctx, 1);
				{
				this.state = 4671;
				this.match(SqlParser.MAX_QUERIES_PER_HOUR);
				this.state = 4672;
				this.decimalLiteral();
				}
				break;
			case 430:
				this.enterOuterAlt(localctx, 2);
				{
				this.state = 4673;
				this.match(SqlParser.MAX_UPDATES_PER_HOUR);
				this.state = 4674;
				this.decimalLiteral();
				}
				break;
			case 426:
				this.enterOuterAlt(localctx, 3);
				{
				this.state = 4675;
				this.match(SqlParser.MAX_CONNECTIONS_PER_HOUR);
				this.state = 4676;
				this.decimalLiteral();
				}
				break;
			case 431:
				this.enterOuterAlt(localctx, 4);
				{
				this.state = 4677;
				this.match(SqlParser.MAX_USER_CONNECTIONS);
				this.state = 4678;
				this.decimalLiteral();
				}
				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 userPasswordOption(): UserPasswordOptionContext {
		let localctx: UserPasswordOptionContext = new UserPasswordOptionContext(this, this._ctx, this.state);
		this.enterRule(localctx, 410, SqlParser.RULE_userPasswordOption);
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 4681;
			this.match(SqlParser.PASSWORD);
			this.state = 4682;
			this.match(SqlParser.EXPIRE);
			this.state = 4689;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case 38:
				{
				this.state = 4683;
				localctx._expireType = this.match(SqlParser.DEFAULT);
				}
				break;
			case 446:
				{
				this.state = 4684;
				localctx._expireType = this.match(SqlParser.NEVER);
				}
				break;
			case 77:
				{
				this.state = 4685;
				localctx._expireType = this.match(SqlParser.INTERVAL);
				this.state = 4686;
				this.decimalLiteral();
				this.state = 4687;
				this.match(SqlParser.DAY);
				}
				break;
			case -1:
			case 7:
			case 9:
			case 17:
			case 21:
			case 23:
			case 30:
			case 40:
			case 41:
			case 42:
			case 47:
			case 55:
			case 64:
			case 65:
			case 76:
			case 84:
			case 92:
			case 93:
			case 107:
			case 118:
			case 124:
			case 125:
			case 127:
			case 129:
			case 132:
			case 137:
			case 138:
			case 140:
			case 141:
			case 164:
			case 166:
			case 168:
			case 270:
			case 282:
			case 283:
			case 289:
			case 294:
			case 306:
			case 325:
			case 334:
			case 364:
			case 373:
			case 375:
			case 385:
			case 468:
			case 475:
			case 494:
			case 503:
			case 508:
			case 514:
			case 538:
			case 544:
			case 564:
			case 568:
			case 587:
			case 604:
			case 608:
			case 1007:
			case 1020:
			case 1022:
			case 1023:
				break;
			default:
				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 userLockOption(): UserLockOptionContext {
		let localctx: UserLockOptionContext = new UserLockOptionContext(this, this._ctx, this.state);
		this.enterRule(localctx, 412, SqlParser.RULE_userLockOption);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 4691;
			this.match(SqlParser.ACCOUNT);
			this.state = 4692;
			localctx._lockType = this._input.LT(1);
			_la = this._input.LA(1);
			if(!(_la===93 || _la===164)) {
			    localctx._lockType = this._errHandler.recoverInline(this);
			}
			else {
				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 privelegeClause(): PrivelegeClauseContext {
		let localctx: PrivelegeClauseContext = new PrivelegeClauseContext(this, this._ctx, this.state);
		this.enterRule(localctx, 414, SqlParser.RULE_privelegeClause);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 4694;
			this.privilege();
			this.state = 4699;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===1020) {
				{
				this.state = 4695;
				this.match(SqlParser.LR_BRACKET);
				this.state = 4696;
				this.uidList();
				this.state = 4697;
				this.match(SqlParser.RR_BRACKET);
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public privilege(): PrivilegeContext {
		let localctx: PrivilegeContext = new PrivilegeContext(this, this._ctx, this.state);
		this.enterRule(localctx, 416, SqlParser.RULE_privilege);
		let _la: number;
		try {
			this.state = 4772;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case 6:
				this.enterOuterAlt(localctx, 1);
				{
				this.state = 4701;
				this.match(SqlParser.ALL);
				this.state = 4703;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===610) {
					{
					this.state = 4702;
					this.match(SqlParser.PRIVILEGES);
					}
				}

				}
				break;
			case 7:
				this.enterOuterAlt(localctx, 2);
				{
				this.state = 4705;
				this.match(SqlParser.ALTER);
				this.state = 4707;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===603) {
					{
					this.state = 4706;
					this.match(SqlParser.ROUTINE);
					}
				}

				}
				break;
			case 30:
				this.enterOuterAlt(localctx, 3);
				{
				this.state = 4709;
				this.match(SqlParser.CREATE);
				this.state = 4717;
				this._errHandler.sync(this);
				switch (this._input.LA(1)) {
				case 557:
					{
					this.state = 4710;
					this.match(SqlParser.TEMPORARY);
					this.state = 4711;
					this.match(SqlParser.TABLES);
					}
					break;
				case 603:
					{
					this.state = 4712;
					this.match(SqlParser.ROUTINE);
					}
					break;
				case 578:
					{
					this.state = 4713;
					this.match(SqlParser.VIEW);
					}
					break;
				case 572:
					{
					this.state = 4714;
					this.match(SqlParser.USER);
					}
					break;
				case 556:
					{
					this.state = 4715;
					this.match(SqlParser.TABLESPACE);
					}
					break;
				case 507:
					{
					this.state = 4716;
					this.match(SqlParser.ROLE);
					}
					break;
				case 106:
				case 1020:
				case 1022:
					break;
				default:
					break;
				}
				}
				break;
			case 40:
				this.enterOuterAlt(localctx, 4);
				{
				this.state = 4719;
				this.match(SqlParser.DELETE);
				}
				break;
			case 47:
				this.enterOuterAlt(localctx, 5);
				{
				this.state = 4720;
				this.match(SqlParser.DROP);
				this.state = 4722;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===507) {
					{
					this.state = 4721;
					this.match(SqlParser.ROLE);
					}
				}

				}
				break;
			case 348:
				this.enterOuterAlt(localctx, 6);
				{
				this.state = 4724;
				this.match(SqlParser.EVENT);
				}
				break;
			case 604:
				this.enterOuterAlt(localctx, 7);
				{
				this.state = 4725;
				this.match(SqlParser.EXECUTE);
				}
				break;
			case 605:
				this.enterOuterAlt(localctx, 8);
				{
				this.state = 4726;
				this.match(SqlParser.FILE);
				}
				break;
			case 65:
				this.enterOuterAlt(localctx, 9);
				{
				this.state = 4727;
				this.match(SqlParser.GRANT);
				this.state = 4728;
				this.match(SqlParser.OPTION);
				}
				break;
			case 72:
				this.enterOuterAlt(localctx, 10);
				{
				this.state = 4729;
				this.match(SqlParser.INDEX);
				}
				break;
			case 76:
				this.enterOuterAlt(localctx, 11);
				{
				this.state = 4730;
				this.match(SqlParser.INSERT);
				}
				break;
			case 93:
				this.enterOuterAlt(localctx, 12);
				{
				this.state = 4731;
				this.match(SqlParser.LOCK);
				this.state = 4732;
				this.match(SqlParser.TABLES);
				}
				break;
			case 606:
				this.enterOuterAlt(localctx, 13);
				{
				this.state = 4733;
				this.match(SqlParser.PROCESS);
				}
				break;
			case 481:
				this.enterOuterAlt(localctx, 14);
				{
				this.state = 4734;
				this.match(SqlParser.PROXY);
				}
				break;
			case 122:
				this.enterOuterAlt(localctx, 15);
				{
				this.state = 4735;
				this.match(SqlParser.REFERENCES);
				}
				break;
			case 607:
				this.enterOuterAlt(localctx, 16);
				{
				this.state = 4736;
				this.match(SqlParser.RELOAD);
				}
				break;
			case 502:
				this.enterOuterAlt(localctx, 17);
				{
				this.state = 4737;
				this.match(SqlParser.REPLICATION);
				this.state = 4738;
				_la = this._input.LA(1);
				if(!(_la===298 || _la===523)) {
				this._errHandler.recoverInline(this);
				}
				else {
					this._errHandler.reportMatch(this);
				    this.consume();
				}
				}
				break;
			case 137:
				this.enterOuterAlt(localctx, 18);
				{
				this.state = 4739;
				this.match(SqlParser.SELECT);
				}
				break;
			case 140:
				this.enterOuterAlt(localctx, 19);
				{
				this.state = 4740;
				this.match(SqlParser.SHOW);
				this.state = 4741;
				_la = this._input.LA(1);
				if(!(_la===36 || _la===578)) {
				this._errHandler.recoverInline(this);
				}
				else {
					this._errHandler.reportMatch(this);
				    this.consume();
				}
				}
				break;
			case 608:
				this.enterOuterAlt(localctx, 20);
				{
				this.state = 4742;
				this.match(SqlParser.SHUTDOWN);
				}
				break;
			case 609:
				this.enterOuterAlt(localctx, 21);
				{
				this.state = 4743;
				this.match(SqlParser.SUPER);
				}
				break;
			case 159:
				this.enterOuterAlt(localctx, 22);
				{
				this.state = 4744;
				this.match(SqlParser.TRIGGER);
				}
				break;
			case 166:
				this.enterOuterAlt(localctx, 23);
				{
				this.state = 4745;
				this.match(SqlParser.UPDATE);
				}
				break;
			case 167:
				this.enterOuterAlt(localctx, 24);
				{
				this.state = 4746;
				this.match(SqlParser.USAGE);
				}
				break;
			case 612:
				this.enterOuterAlt(localctx, 25);
				{
				this.state = 4747;
				this.match(SqlParser.AUDIT_ADMIN);
				}
				break;
			case 613:
				this.enterOuterAlt(localctx, 26);
				{
				this.state = 4748;
				this.match(SqlParser.BACKUP_ADMIN);
				}
				break;
			case 614:
				this.enterOuterAlt(localctx, 27);
				{
				this.state = 4749;
				this.match(SqlParser.BINLOG_ADMIN);
				}
				break;
			case 615:
				this.enterOuterAlt(localctx, 28);
				{
				this.state = 4750;
				this.match(SqlParser.BINLOG_ENCRYPTION_ADMIN);
				}
				break;
			case 616:
				this.enterOuterAlt(localctx, 29);
				{
				this.state = 4751;
				this.match(SqlParser.CLONE_ADMIN);
				}
				break;
			case 617:
				this.enterOuterAlt(localctx, 30);
				{
				this.state = 4752;
				this.match(SqlParser.CONNECTION_ADMIN);
				}
				break;
			case 618:
				this.enterOuterAlt(localctx, 31);
				{
				this.state = 4753;
				this.match(SqlParser.ENCRYPTION_KEY_ADMIN);
				}
				break;
			case 619:
				this.enterOuterAlt(localctx, 32);
				{
				this.state = 4754;
				this.match(SqlParser.FIREWALL_ADMIN);
				}
				break;
			case 620:
				this.enterOuterAlt(localctx, 33);
				{
				this.state = 4755;
				this.match(SqlParser.FIREWALL_USER);
				}
				break;
			case 621:
				this.enterOuterAlt(localctx, 34);
				{
				this.state = 4756;
				this.match(SqlParser.GROUP_REPLICATION_ADMIN);
				}
				break;
			case 622:
				this.enterOuterAlt(localctx, 35);
				{
				this.state = 4757;
				this.match(SqlParser.INNODB_REDO_LOG_ARCHIVE);
				}
				break;
			case 623:
				this.enterOuterAlt(localctx, 36);
				{
				this.state = 4758;
				this.match(SqlParser.NDB_STORED_USER);
				}
				break;
			case 624:
				this.enterOuterAlt(localctx, 37);
				{
				this.state = 4759;
				this.match(SqlParser.PERSIST_RO_VARIABLES_ADMIN);
				}
				break;
			case 625:
				this.enterOuterAlt(localctx, 38);
				{
				this.state = 4760;
				this.match(SqlParser.REPLICATION_APPLIER);
				}
				break;
			case 626:
				this.enterOuterAlt(localctx, 39);
				{
				this.state = 4761;
				this.match(SqlParser.REPLICATION_SLAVE_ADMIN);
				}
				break;
			case 627:
				this.enterOuterAlt(localctx, 40);
				{
				this.state = 4762;
				this.match(SqlParser.RESOURCE_GROUP_ADMIN);
				}
				break;
			case 628:
				this.enterOuterAlt(localctx, 41);
				{
				this.state = 4763;
				this.match(SqlParser.RESOURCE_GROUP_USER);
				}
				break;
			case 629:
				this.enterOuterAlt(localctx, 42);
				{
				this.state = 4764;
				this.match(SqlParser.ROLE_ADMIN);
				}
				break;
			case 630:
				this.enterOuterAlt(localctx, 43);
				{
				this.state = 4765;
				this.match(SqlParser.SESSION_VARIABLES_ADMIN);
				}
				break;
			case 631:
				this.enterOuterAlt(localctx, 44);
				{
				this.state = 4766;
				this.match(SqlParser.SET_USER_ID);
				}
				break;
			case 632:
				this.enterOuterAlt(localctx, 45);
				{
				this.state = 4767;
				this.match(SqlParser.SHOW_ROUTINE);
				}
				break;
			case 633:
				this.enterOuterAlt(localctx, 46);
				{
				this.state = 4768;
				this.match(SqlParser.SYSTEM_VARIABLES_ADMIN);
				}
				break;
			case 634:
				this.enterOuterAlt(localctx, 47);
				{
				this.state = 4769;
				this.match(SqlParser.TABLE_ENCRYPTION_ADMIN);
				}
				break;
			case 635:
				this.enterOuterAlt(localctx, 48);
				{
				this.state = 4770;
				this.match(SqlParser.VERSION_TOKEN_ADMIN);
				}
				break;
			case 636:
				this.enterOuterAlt(localctx, 49);
				{
				this.state = 4771;
				this.match(SqlParser.XA_RECOVER_ADMIN);
				}
				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 privilegeLevel(): PrivilegeLevelContext {
		let localctx: PrivilegeLevelContext = new PrivilegeLevelContext(this, this._ctx, this.state);
		this.enterRule(localctx, 418, SqlParser.RULE_privilegeLevel);
		try {
			this.state = 4790;
			this._errHandler.sync(this);
			switch ( this._interp.adaptivePredict(this._input, 688, this._ctx) ) {
			case 1:
				localctx = new CurrentSchemaPriviLevelContext(this, localctx);
				this.enterOuterAlt(localctx, 1);
				{
				this.state = 4774;
				this.match(SqlParser.STAR);
				}
				break;
			case 2:
				localctx = new GlobalPrivLevelContext(this, localctx);
				this.enterOuterAlt(localctx, 2);
				{
				this.state = 4775;
				this.match(SqlParser.STAR);
				this.state = 4776;
				this.match(SqlParser.DOT);
				this.state = 4777;
				this.match(SqlParser.STAR);
				}
				break;
			case 3:
				localctx = new DefiniteSchemaPrivLevelContext(this, localctx);
				this.enterOuterAlt(localctx, 3);
				{
				this.state = 4778;
				this.uid();
				this.state = 4779;
				this.match(SqlParser.DOT);
				this.state = 4780;
				this.match(SqlParser.STAR);
				}
				break;
			case 4:
				localctx = new DefiniteFullTablePrivLevelContext(this, localctx);
				this.enterOuterAlt(localctx, 4);
				{
				this.state = 4782;
				this.uid();
				this.state = 4783;
				this.match(SqlParser.DOT);
				this.state = 4784;
				this.uid();
				}
				break;
			case 5:
				localctx = new DefiniteFullTablePrivLevel2Context(this, localctx);
				this.enterOuterAlt(localctx, 5);
				{
				this.state = 4786;
				this.uid();
				this.state = 4787;
				this.dottedId();
				}
				break;
			case 6:
				localctx = new DefiniteTablePrivLevelContext(this, localctx);
				this.enterOuterAlt(localctx, 6);
				{
				this.state = 4789;
				this.uid();
				}
				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 renameUserClause(): RenameUserClauseContext {
		let localctx: RenameUserClauseContext = new RenameUserClauseContext(this, this._ctx, this.state);
		this.enterRule(localctx, 420, SqlParser.RULE_renameUserClause);
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 4792;
			localctx._fromFirst = this.userName();
			this.state = 4793;
			this.match(SqlParser.TO);
			this.state = 4794;
			localctx._toFirst = this.userName();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public analyzeTable(): AnalyzeTableContext {
		let localctx: AnalyzeTableContext = new AnalyzeTableContext(this, this._ctx, this.state);
		this.enterRule(localctx, 422, SqlParser.RULE_analyzeTable);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 4796;
			this.match(SqlParser.ANALYZE);
			this.state = 4798;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===103 || _la===402) {
				{
				this.state = 4797;
				localctx._actionOption = this._input.LT(1);
				_la = this._input.LA(1);
				if(!(_la===103 || _la===402)) {
				    localctx._actionOption = this._errHandler.recoverInline(this);
				}
				else {
					this._errHandler.reportMatch(this);
				    this.consume();
				}
				}
			}

			this.state = 4800;
			this.match(SqlParser.TABLE);
			this.state = 4801;
			this.tables();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public checkTable(): CheckTableContext {
		let localctx: CheckTableContext = new CheckTableContext(this, this._ctx, this.state);
		this.enterRule(localctx, 424, SqlParser.RULE_checkTable);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 4803;
			this.match(SqlParser.CHECK);
			this.state = 4804;
			this.match(SqlParser.TABLE);
			this.state = 4805;
			this.tables();
			this.state = 4809;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la===58 || _la===292 || _la===355 || _la===357 || _la===432 || _la===483) {
				{
				{
				this.state = 4806;
				this.checkTableOption();
				}
				}
				this.state = 4811;
				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 checksumTable(): ChecksumTableContext {
		let localctx: ChecksumTableContext = new ChecksumTableContext(this, this._ctx, this.state);
		this.enterRule(localctx, 426, SqlParser.RULE_checksumTable);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 4812;
			this.match(SqlParser.CHECKSUM);
			this.state = 4813;
			this.match(SqlParser.TABLE);
			this.state = 4814;
			this.tables();
			this.state = 4816;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===355 || _la===483) {
				{
				this.state = 4815;
				localctx._actionOption = this._input.LT(1);
				_la = this._input.LA(1);
				if(!(_la===355 || _la===483)) {
				    localctx._actionOption = this._errHandler.recoverInline(this);
				}
				else {
					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 optimizeTable(): OptimizeTableContext {
		let localctx: OptimizeTableContext = new OptimizeTableContext(this, this._ctx, this.state);
		this.enterRule(localctx, 428, SqlParser.RULE_optimizeTable);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 4818;
			this.match(SqlParser.OPTIMIZE);
			this.state = 4820;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===103 || _la===402) {
				{
				this.state = 4819;
				localctx._actionOption = this._input.LT(1);
				_la = this._input.LA(1);
				if(!(_la===103 || _la===402)) {
				    localctx._actionOption = this._errHandler.recoverInline(this);
				}
				else {
					this._errHandler.reportMatch(this);
				    this.consume();
				}
				}
			}

			this.state = 4822;
			this.match(SqlParser.TABLE);
			this.state = 4823;
			this.tables();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public repairTable(): RepairTableContext {
		let localctx: RepairTableContext = new RepairTableContext(this, this._ctx, this.state);
		this.enterRule(localctx, 430, SqlParser.RULE_repairTable);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 4825;
			this.match(SqlParser.REPAIR);
			this.state = 4827;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===103 || _la===402) {
				{
				this.state = 4826;
				localctx._actionOption = this._input.LT(1);
				_la = this._input.LA(1);
				if(!(_la===103 || _la===402)) {
				    localctx._actionOption = this._errHandler.recoverInline(this);
				}
				else {
					this._errHandler.reportMatch(this);
				    this.consume();
				}
				}
			}

			this.state = 4829;
			this.match(SqlParser.TABLE);
			this.state = 4830;
			this.tables();
			this.state = 4832;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===483) {
				{
				this.state = 4831;
				this.match(SqlParser.QUICK);
				}
			}

			this.state = 4835;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===355) {
				{
				this.state = 4834;
				this.match(SqlParser.EXTENDED);
				}
			}

			this.state = 4838;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===573) {
				{
				this.state = 4837;
				this.match(SqlParser.USE_FRM);
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public checkTableOption(): CheckTableOptionContext {
		let localctx: CheckTableOptionContext = new CheckTableOptionContext(this, this._ctx, this.state);
		this.enterRule(localctx, 432, SqlParser.RULE_checkTableOption);
		try {
			this.state = 4847;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case 58:
				this.enterOuterAlt(localctx, 1);
				{
				this.state = 4840;
				this.match(SqlParser.FOR);
				this.state = 4841;
				this.match(SqlParser.UPGRADE);
				}
				break;
			case 483:
				this.enterOuterAlt(localctx, 2);
				{
				this.state = 4842;
				this.match(SqlParser.QUICK);
				}
				break;
			case 357:
				this.enterOuterAlt(localctx, 3);
				{
				this.state = 4843;
				this.match(SqlParser.FAST);
				}
				break;
			case 432:
				this.enterOuterAlt(localctx, 4);
				{
				this.state = 4844;
				this.match(SqlParser.MEDIUM);
				}
				break;
			case 355:
				this.enterOuterAlt(localctx, 5);
				{
				this.state = 4845;
				this.match(SqlParser.EXTENDED);
				}
				break;
			case 292:
				this.enterOuterAlt(localctx, 6);
				{
				this.state = 4846;
				this.match(SqlParser.CHANGED);
				}
				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 createUdfunction(): CreateUdfunctionContext {
		let localctx: CreateUdfunctionContext = new CreateUdfunctionContext(this, this._ctx, this.state);
		this.enterRule(localctx, 434, SqlParser.RULE_createUdfunction);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 4849;
			this.match(SqlParser.CREATE);
			this.state = 4851;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===273) {
				{
				this.state = 4850;
				this.match(SqlParser.AGGREGATE);
				}
			}

			this.state = 4853;
			this.match(SqlParser.FUNCTION);
			this.state = 4854;
			this.uid();
			this.state = 4855;
			this.match(SqlParser.RETURNS);
			this.state = 4856;
			localctx._returnType = this._input.LT(1);
			_la = this._input.LA(1);
			if(!(((((_la - 188)) & ~0x1F) === 0 && ((1 << (_la - 188)) & 261) !== 0) || _la===547)) {
			    localctx._returnType = this._errHandler.recoverInline(this);
			}
			else {
				this._errHandler.reportMatch(this);
			    this.consume();
			}
			this.state = 4857;
			this.match(SqlParser.SONAME);
			this.state = 4858;
			this.match(SqlParser.STRING_LITERAL);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public installPlugin(): InstallPluginContext {
		let localctx: InstallPluginContext = new InstallPluginContext(this, this._ctx, this.state);
		this.enterRule(localctx, 436, SqlParser.RULE_installPlugin);
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 4860;
			this.match(SqlParser.INSTALL);
			this.state = 4861;
			this.match(SqlParser.PLUGIN);
			this.state = 4862;
			this.uid();
			this.state = 4863;
			this.match(SqlParser.SONAME);
			this.state = 4864;
			this.match(SqlParser.STRING_LITERAL);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public uninstallPlugin(): UninstallPluginContext {
		let localctx: UninstallPluginContext = new UninstallPluginContext(this, this._ctx, this.state);
		this.enterRule(localctx, 438, SqlParser.RULE_uninstallPlugin);
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 4866;
			this.match(SqlParser.UNINSTALL);
			this.state = 4867;
			this.match(SqlParser.PLUGIN);
			this.state = 4868;
			this.uid();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public setStatement(): SetStatementContext {
		let localctx: SetStatementContext = new SetStatementContext(this, this._ctx, this.state);
		this.enterRule(localctx, 440, SqlParser.RULE_setStatement);
		let _la: number;
		try {
			this.state = 4921;
			this._errHandler.sync(this);
			switch ( this._interp.adaptivePredict(this._input, 705, this._ctx) ) {
			case 1:
				localctx = new SetVariableContext(this, localctx);
				this.enterOuterAlt(localctx, 1);
				{
				this.state = 4870;
				this.match(SqlParser.SET);
				this.state = 4871;
				this.variableClause();
				this.state = 4872;
				_la = this._input.LA(1);
				if(!(_la===994 || _la===1011)) {
				this._errHandler.recoverInline(this);
				}
				else {
					this._errHandler.reportMatch(this);
				    this.consume();
				}
				this.state = 4873;
				this.expression(0);
				this.state = 4881;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				while (_la===1022) {
					{
					{
					this.state = 4874;
					this.match(SqlParser.COMMA);
					this.state = 4875;
					this.variableClause();
					this.state = 4876;
					_la = this._input.LA(1);
					if(!(_la===994 || _la===1011)) {
					this._errHandler.recoverInline(this);
					}
					else {
						this._errHandler.reportMatch(this);
					    this.consume();
					}
					this.state = 4877;
					this.expression(0);
					}
					}
					this.state = 4883;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
				}
				}
				break;
			case 2:
				localctx = new SetCharsetContext(this, localctx);
				this.enterOuterAlt(localctx, 2);
				{
				this.state = 4884;
				this.match(SqlParser.SET);
				this.state = 4888;
				this._errHandler.sync(this);
				switch (this._input.LA(1)) {
				case 22:
					{
					this.state = 4885;
					this.match(SqlParser.CHARACTER);
					this.state = 4886;
					this.match(SqlParser.SET);
					}
					break;
				case 731:
					{
					this.state = 4887;
					this.match(SqlParser.CHARSET);
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				this.state = 4892;
				this._errHandler.sync(this);
				switch (this._input.LA(1)) {
				case 208:
				case 637:
				case 638:
				case 639:
				case 640:
				case 641:
				case 642:
				case 643:
				case 644:
				case 645:
				case 646:
				case 647:
				case 648:
				case 649:
				case 650:
				case 651:
				case 652:
				case 653:
				case 654:
				case 655:
				case 656:
				case 657:
				case 658:
				case 659:
				case 660:
				case 661:
				case 662:
				case 663:
				case 664:
				case 665:
				case 666:
				case 667:
				case 668:
				case 669:
				case 670:
				case 671:
				case 672:
				case 673:
				case 674:
				case 675:
				case 676:
				case 1032:
				case 1035:
					{
					this.state = 4890;
					this.charsetName();
					}
					break;
				case 38:
					{
					this.state = 4891;
					this.match(SqlParser.DEFAULT);
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				}
				break;
			case 3:
				localctx = new SetNamesContext(this, localctx);
				this.enterOuterAlt(localctx, 3);
				{
				this.state = 4894;
				this.match(SqlParser.SET);
				this.state = 4895;
				this.match(SqlParser.NAMES);
				this.state = 4902;
				this._errHandler.sync(this);
				switch (this._input.LA(1)) {
				case 208:
				case 637:
				case 638:
				case 639:
				case 640:
				case 641:
				case 642:
				case 643:
				case 644:
				case 645:
				case 646:
				case 647:
				case 648:
				case 649:
				case 650:
				case 651:
				case 652:
				case 653:
				case 654:
				case 655:
				case 656:
				case 657:
				case 658:
				case 659:
				case 660:
				case 661:
				case 662:
				case 663:
				case 664:
				case 665:
				case 666:
				case 667:
				case 668:
				case 669:
				case 670:
				case 671:
				case 672:
				case 673:
				case 674:
				case 675:
				case 676:
				case 1032:
				case 1035:
					{
					this.state = 4896;
					this.charsetName();
					this.state = 4899;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
					if (_la===24) {
						{
						this.state = 4897;
						this.match(SqlParser.COLLATE);
						this.state = 4898;
						this.collationName();
						}
					}

					}
					break;
				case 38:
					{
					this.state = 4901;
					this.match(SqlParser.DEFAULT);
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				}
				break;
			case 4:
				localctx = new SetPasswordContext(this, localctx);
				this.enterOuterAlt(localctx, 4);
				{
				this.state = 4904;
				this.setPasswordStatement();
				}
				break;
			case 5:
				localctx = new SetTransactionContext(this, localctx);
				this.enterOuterAlt(localctx, 5);
				{
				this.state = 4905;
				this.setTransactionStatement();
				}
				break;
			case 6:
				localctx = new SetAutocommitContext(this, localctx);
				this.enterOuterAlt(localctx, 6);
				{
				this.state = 4906;
				this.setAutocommitStatement();
				}
				break;
			case 7:
				localctx = new SetNewValueInsideTriggerContext(this, localctx);
				this.enterOuterAlt(localctx, 7);
				{
				this.state = 4907;
				this.match(SqlParser.SET);
				this.state = 4908;
				this.fullId();
				this.state = 4909;
				_la = this._input.LA(1);
				if(!(_la===994 || _la===1011)) {
				this._errHandler.recoverInline(this);
				}
				else {
					this._errHandler.reportMatch(this);
				    this.consume();
				}
				this.state = 4910;
				this.expression(0);
				this.state = 4918;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				while (_la===1022) {
					{
					{
					this.state = 4911;
					this.match(SqlParser.COMMA);
					this.state = 4912;
					this.fullId();
					this.state = 4913;
					_la = this._input.LA(1);
					if(!(_la===994 || _la===1011)) {
					this._errHandler.recoverInline(this);
					}
					else {
						this._errHandler.reportMatch(this);
					    this.consume();
					}
					this.state = 4914;
					this.expression(0);
					}
					}
					this.state = 4920;
					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 showStatement(): ShowStatementContext {
		let localctx: ShowStatementContext = new ShowStatementContext(this, this._ctx, this.state);
		this.enterRule(localctx, 442, SqlParser.RULE_showStatement);
		let _la: number;
		try {
			this.state = 5074;
			this._errHandler.sync(this);
			switch ( this._interp.adaptivePredict(this._input, 727, this._ctx) ) {
			case 1:
				localctx = new ShowMasterLogsContext(this, localctx);
				this.enterOuterAlt(localctx, 1);
				{
				this.state = 4923;
				this.match(SqlParser.SHOW);
				this.state = 4924;
				(localctx as ShowMasterLogsContext)._logFormat = this._input.LT(1);
				_la = this._input.LA(1);
				if(!(_la===208 || _la===405)) {
				    (localctx as ShowMasterLogsContext)._logFormat = this._errHandler.recoverInline(this);
				}
				else {
					this._errHandler.reportMatch(this);
				    this.consume();
				}
				this.state = 4925;
				this.match(SqlParser.LOGS);
				}
				break;
			case 2:
				localctx = new ShowLogEventsContext(this, localctx);
				this.enterOuterAlt(localctx, 2);
				{
				this.state = 4926;
				this.match(SqlParser.SHOW);
				this.state = 4927;
				(localctx as ShowLogEventsContext)._logFormat = this._input.LT(1);
				_la = this._input.LA(1);
				if(!(_la===283 || _la===491)) {
				    (localctx as ShowLogEventsContext)._logFormat = this._errHandler.recoverInline(this);
				}
				else {
					this._errHandler.reportMatch(this);
				    this.consume();
				}
				this.state = 4928;
				this.match(SqlParser.EVENTS);
				this.state = 4931;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===71) {
					{
					this.state = 4929;
					this.match(SqlParser.IN);
					this.state = 4930;
					(localctx as ShowLogEventsContext)._filename = this.match(SqlParser.STRING_LITERAL);
					}
				}

				this.state = 4935;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===61) {
					{
					this.state = 4933;
					this.match(SqlParser.FROM);
					this.state = 4934;
					(localctx as ShowLogEventsContext)._fromPosition = this.decimalLiteral();
					}
				}

				this.state = 4944;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===89) {
					{
					this.state = 4937;
					this.match(SqlParser.LIMIT);
					this.state = 4941;
					this._errHandler.sync(this);
					switch ( this._interp.adaptivePredict(this._input, 708, this._ctx) ) {
					case 1:
						{
						this.state = 4938;
						(localctx as ShowLogEventsContext)._offset = this.decimalLiteral();
						this.state = 4939;
						this.match(SqlParser.COMMA);
						}
						break;
					}
					this.state = 4943;
					(localctx as ShowLogEventsContext)._rowCount = this.decimalLiteral();
					}
				}

				}
				break;
			case 3:
				localctx = new ShowObjectFilterContext(this, localctx);
				this.enterOuterAlt(localctx, 3);
				{
				this.state = 4946;
				this.match(SqlParser.SHOW);
				this.state = 4947;
				this.showCommonEntity();
				this.state = 4949;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===88 || _la===172) {
					{
					this.state = 4948;
					this.showFilter();
					}
				}

				}
				break;
			case 4:
				localctx = new ShowColumnsContext(this, localctx);
				this.enterOuterAlt(localctx, 4);
				{
				this.state = 4951;
				this.match(SqlParser.SHOW);
				this.state = 4953;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===367) {
					{
					this.state = 4952;
					this.match(SqlParser.FULL);
					}
				}

				this.state = 4955;
				(localctx as ShowColumnsContext)._columnsFormat = this._input.LT(1);
				_la = this._input.LA(1);
				if(!(_la===302 || _la===359)) {
				    (localctx as ShowColumnsContext)._columnsFormat = this._errHandler.recoverInline(this);
				}
				else {
					this._errHandler.reportMatch(this);
				    this.consume();
				}
				this.state = 4956;
				(localctx as ShowColumnsContext)._tableFormat = this._input.LT(1);
				_la = this._input.LA(1);
				if(!(_la===61 || _la===71)) {
				    (localctx as ShowColumnsContext)._tableFormat = this._errHandler.recoverInline(this);
				}
				else {
					this._errHandler.reportMatch(this);
				    this.consume();
				}
				this.state = 4957;
				this.tableName();
				this.state = 4960;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===61 || _la===71) {
					{
					this.state = 4958;
					(localctx as ShowColumnsContext)._schemaFormat = this._input.LT(1);
					_la = this._input.LA(1);
					if(!(_la===61 || _la===71)) {
					    (localctx as ShowColumnsContext)._schemaFormat = this._errHandler.recoverInline(this);
					}
					else {
						this._errHandler.reportMatch(this);
					    this.consume();
					}
					this.state = 4959;
					this.uid();
					}
				}

				this.state = 4963;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===88 || _la===172) {
					{
					this.state = 4962;
					this.showFilter();
					}
				}

				}
				break;
			case 5:
				localctx = new ShowCreateDbContext(this, localctx);
				this.enterOuterAlt(localctx, 5);
				{
				this.state = 4965;
				this.match(SqlParser.SHOW);
				this.state = 4966;
				this.match(SqlParser.CREATE);
				this.state = 4967;
				(localctx as ShowCreateDbContext)._schemaFormat = this._input.LT(1);
				_la = this._input.LA(1);
				if(!(_la===35 || _la===135)) {
				    (localctx as ShowCreateDbContext)._schemaFormat = this._errHandler.recoverInline(this);
				}
				else {
					this._errHandler.reportMatch(this);
				    this.consume();
				}
				this.state = 4969;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===69) {
					{
					this.state = 4968;
					this.ifNotExists();
					}
				}

				this.state = 4971;
				this.uid();
				}
				break;
			case 6:
				localctx = new ShowCreateFullIdObjectContext(this, localctx);
				this.enterOuterAlt(localctx, 6);
				{
				this.state = 4972;
				this.match(SqlParser.SHOW);
				this.state = 4973;
				this.match(SqlParser.CREATE);
				this.state = 4974;
				(localctx as ShowCreateFullIdObjectContext)._namedEntity = this._input.LT(1);
				_la = this._input.LA(1);
				if(!(_la===117 || _la===154 || _la===159 || _la===348 || _la===368 || _la===578)) {
				    (localctx as ShowCreateFullIdObjectContext)._namedEntity = this._errHandler.recoverInline(this);
				}
				else {
					this._errHandler.reportMatch(this);
				    this.consume();
				}
				this.state = 4975;
				this.fullId();
				}
				break;
			case 7:
				localctx = new ShowCreateUserContext(this, localctx);
				this.enterOuterAlt(localctx, 7);
				{
				this.state = 4976;
				this.match(SqlParser.SHOW);
				this.state = 4977;
				this.match(SqlParser.CREATE);
				this.state = 4978;
				this.match(SqlParser.USER);
				this.state = 4979;
				this.userName();
				}
				break;
			case 8:
				localctx = new ShowEngineContext(this, localctx);
				this.enterOuterAlt(localctx, 8);
				{
				this.state = 4980;
				this.match(SqlParser.SHOW);
				this.state = 4981;
				this.match(SqlParser.ENGINE);
				this.state = 4982;
				this.engineName();
				this.state = 4983;
				(localctx as ShowEngineContext)._engineOption = this._input.LT(1);
				_la = this._input.LA(1);
				if(!(_la===440 || _la===543)) {
				    (localctx as ShowEngineContext)._engineOption = this._errHandler.recoverInline(this);
				}
				else {
					this._errHandler.reportMatch(this);
				    this.consume();
				}
				}
				break;
			case 9:
				localctx = new ShowGlobalInfoContext(this, localctx);
				this.enterOuterAlt(localctx, 9);
				{
				this.state = 4985;
				this.match(SqlParser.SHOW);
				this.state = 4986;
				this.showGlobalInfoClause();
				}
				break;
			case 10:
				localctx = new ShowErrorsContext(this, localctx);
				this.enterOuterAlt(localctx, 10);
				{
				this.state = 4987;
				this.match(SqlParser.SHOW);
				this.state = 4988;
				(localctx as ShowErrorsContext)._errorFormat = this._input.LT(1);
				_la = this._input.LA(1);
				if(!(_la===345 || _la===582)) {
				    (localctx as ShowErrorsContext)._errorFormat = this._errHandler.recoverInline(this);
				}
				else {
					this._errHandler.reportMatch(this);
				    this.consume();
				}
				{
				this.state = 4989;
				this.match(SqlParser.LIMIT);
				this.state = 4993;
				this._errHandler.sync(this);
				switch ( this._interp.adaptivePredict(this._input, 715, this._ctx) ) {
				case 1:
					{
					this.state = 4990;
					(localctx as ShowErrorsContext)._offset = this.decimalLiteral();
					this.state = 4991;
					this.match(SqlParser.COMMA);
					}
					break;
				}
				this.state = 4995;
				(localctx as ShowErrorsContext)._rowCount = this.decimalLiteral();
				}
				}
				break;
			case 11:
				localctx = new ShowCountErrorsContext(this, localctx);
				this.enterOuterAlt(localctx, 11);
				{
				this.state = 4996;
				this.match(SqlParser.SHOW);
				this.state = 4997;
				this.match(SqlParser.COUNT);
				this.state = 4998;
				this.match(SqlParser.LR_BRACKET);
				this.state = 4999;
				this.match(SqlParser.STAR);
				this.state = 5000;
				this.match(SqlParser.RR_BRACKET);
				this.state = 5001;
				(localctx as ShowCountErrorsContext)._errorFormat = this._input.LT(1);
				_la = this._input.LA(1);
				if(!(_la===345 || _la===582)) {
				    (localctx as ShowCountErrorsContext)._errorFormat = this._errHandler.recoverInline(this);
				}
				else {
					this._errHandler.reportMatch(this);
				    this.consume();
				}
				}
				break;
			case 12:
				localctx = new ShowSchemaFilterContext(this, localctx);
				this.enterOuterAlt(localctx, 12);
				{
				this.state = 5002;
				this.match(SqlParser.SHOW);
				this.state = 5003;
				this.showSchemaEntity();
				this.state = 5006;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===61 || _la===71) {
					{
					this.state = 5004;
					(localctx as ShowSchemaFilterContext)._schemaFormat = this._input.LT(1);
					_la = this._input.LA(1);
					if(!(_la===61 || _la===71)) {
					    (localctx as ShowSchemaFilterContext)._schemaFormat = this._errHandler.recoverInline(this);
					}
					else {
						this._errHandler.reportMatch(this);
					    this.consume();
					}
					this.state = 5005;
					this.uid();
					}
				}

				this.state = 5009;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===88 || _la===172) {
					{
					this.state = 5008;
					this.showFilter();
					}
				}

				}
				break;
			case 13:
				localctx = new ShowRoutineContext(this, localctx);
				this.enterOuterAlt(localctx, 13);
				{
				this.state = 5011;
				this.match(SqlParser.SHOW);
				this.state = 5012;
				(localctx as ShowRoutineContext)._routine = this._input.LT(1);
				_la = this._input.LA(1);
				if(!(_la===117 || _la===368)) {
				    (localctx as ShowRoutineContext)._routine = this._errHandler.recoverInline(this);
				}
				else {
					this._errHandler.reportMatch(this);
				    this.consume();
				}
				this.state = 5013;
				this.match(SqlParser.CODE);
				this.state = 5014;
				this.fullId();
				}
				break;
			case 14:
				localctx = new ShowGrantsContext(this, localctx);
				this.enterOuterAlt(localctx, 14);
				{
				this.state = 5015;
				this.match(SqlParser.SHOW);
				this.state = 5016;
				this.match(SqlParser.GRANTS);
				this.state = 5019;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===58) {
					{
					this.state = 5017;
					this.match(SqlParser.FOR);
					this.state = 5018;
					this.userName();
					}
				}

				}
				break;
			case 15:
				localctx = new ShowIndexesContext(this, localctx);
				this.enterOuterAlt(localctx, 15);
				{
				this.state = 5021;
				this.match(SqlParser.SHOW);
				this.state = 5022;
				(localctx as ShowIndexesContext)._indexFormat = this._input.LT(1);
				_la = this._input.LA(1);
				if(!(_la===72 || _la===83 || _la===381)) {
				    (localctx as ShowIndexesContext)._indexFormat = this._errHandler.recoverInline(this);
				}
				else {
					this._errHandler.reportMatch(this);
				    this.consume();
				}
				this.state = 5023;
				(localctx as ShowIndexesContext)._tableFormat = this._input.LT(1);
				_la = this._input.LA(1);
				if(!(_la===61 || _la===71)) {
				    (localctx as ShowIndexesContext)._tableFormat = this._errHandler.recoverInline(this);
				}
				else {
					this._errHandler.reportMatch(this);
				    this.consume();
				}
				this.state = 5024;
				this.tableName();
				this.state = 5027;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===61 || _la===71) {
					{
					this.state = 5025;
					(localctx as ShowIndexesContext)._schemaFormat = this._input.LT(1);
					_la = this._input.LA(1);
					if(!(_la===61 || _la===71)) {
					    (localctx as ShowIndexesContext)._schemaFormat = this._errHandler.recoverInline(this);
					}
					else {
						this._errHandler.reportMatch(this);
					    this.consume();
					}
					this.state = 5026;
					this.uid();
					}
				}

				this.state = 5031;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===172) {
					{
					this.state = 5029;
					this.match(SqlParser.WHERE);
					this.state = 5030;
					this.expression(0);
					}
				}

				}
				break;
			case 16:
				localctx = new ShowOpenTablesContext(this, localctx);
				this.enterOuterAlt(localctx, 16);
				{
				this.state = 5033;
				this.match(SqlParser.SHOW);
				this.state = 5034;
				this.match(SqlParser.OPEN);
				this.state = 5035;
				this.match(SqlParser.TABLES);
				this.state = 5038;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===61 || _la===71) {
					{
					this.state = 5036;
					(localctx as ShowOpenTablesContext)._schemaFormat = this._input.LT(1);
					_la = this._input.LA(1);
					if(!(_la===61 || _la===71)) {
					    (localctx as ShowOpenTablesContext)._schemaFormat = this._errHandler.recoverInline(this);
					}
					else {
						this._errHandler.reportMatch(this);
					    this.consume();
					}
					this.state = 5037;
					this.uid();
					}
				}

				this.state = 5041;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===88 || _la===172) {
					{
					this.state = 5040;
					this.showFilter();
					}
				}

				}
				break;
			case 17:
				localctx = new ShowProfileContext(this, localctx);
				this.enterOuterAlt(localctx, 17);
				{
				this.state = 5043;
				this.match(SqlParser.SHOW);
				this.state = 5044;
				this.match(SqlParser.PROFILE);
				this.state = 5045;
				this.showProfileType();
				this.state = 5050;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				while (_la===1022) {
					{
					{
					this.state = 5046;
					this.match(SqlParser.COMMA);
					this.state = 5047;
					this.showProfileType();
					}
					}
					this.state = 5052;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
				}
				this.state = 5056;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===58) {
					{
					this.state = 5053;
					this.match(SqlParser.FOR);
					this.state = 5054;
					this.match(SqlParser.QUERY);
					this.state = 5055;
					(localctx as ShowProfileContext)._queryCount = this.decimalLiteral();
					}
				}

				{
				this.state = 5058;
				this.match(SqlParser.LIMIT);
				this.state = 5062;
				this._errHandler.sync(this);
				switch ( this._interp.adaptivePredict(this._input, 725, this._ctx) ) {
				case 1:
					{
					this.state = 5059;
					(localctx as ShowProfileContext)._offset = this.decimalLiteral();
					this.state = 5060;
					this.match(SqlParser.COMMA);
					}
					break;
				}
				this.state = 5064;
				(localctx as ShowProfileContext)._rowCount = this.decimalLiteral();
				}
				}
				break;
			case 18:
				localctx = new ShowSlaveStatusContext(this, localctx);
				this.enterOuterAlt(localctx, 18);
				{
				this.state = 5066;
				this.match(SqlParser.SHOW);
				this.state = 5067;
				this.match(SqlParser.SLAVE);
				this.state = 5068;
				this.match(SqlParser.STATUS);
				this.state = 5072;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===58) {
					{
					this.state = 5069;
					this.match(SqlParser.FOR);
					this.state = 5070;
					this.match(SqlParser.CHANNEL);
					this.state = 5071;
					this.match(SqlParser.STRING_LITERAL);
					}
				}

				}
				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 variableClause(): VariableClauseContext {
		let localctx: VariableClauseContext = new VariableClauseContext(this, this._ctx, this.state);
		this.enterRule(localctx, 444, SqlParser.RULE_variableClause);
		let _la: number;
		try {
			this.state = 5086;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case 1046:
				this.enterOuterAlt(localctx, 1);
				{
				this.state = 5076;
				this.match(SqlParser.LOCAL_ID);
				}
				break;
			case 1047:
				this.enterOuterAlt(localctx, 2);
				{
				this.state = 5077;
				this.match(SqlParser.GLOBAL_ID);
				}
				break;
			case 32:
			case 35:
			case 44:
			case 87:
			case 105:
			case 133:
			case 151:
			case 199:
			case 200:
			case 201:
			case 202:
			case 203:
			case 216:
			case 219:
			case 221:
			case 233:
			case 234:
			case 239:
			case 262:
			case 270:
			case 271:
			case 272:
			case 273:
			case 274:
			case 275:
			case 276:
			case 277:
			case 278:
			case 279:
			case 280:
			case 281:
			case 282:
			case 283:
			case 284:
			case 285:
			case 286:
			case 287:
			case 288:
			case 289:
			case 290:
			case 291:
			case 292:
			case 293:
			case 294:
			case 295:
			case 296:
			case 297:
			case 298:
			case 299:
			case 300:
			case 301:
			case 302:
			case 303:
			case 304:
			case 305:
			case 306:
			case 307:
			case 308:
			case 309:
			case 310:
			case 311:
			case 312:
			case 313:
			case 314:
			case 315:
			case 316:
			case 317:
			case 318:
			case 319:
			case 320:
			case 321:
			case 322:
			case 323:
			case 324:
			case 325:
			case 326:
			case 327:
			case 328:
			case 329:
			case 330:
			case 331:
			case 332:
			case 333:
			case 334:
			case 335:
			case 336:
			case 337:
			case 338:
			case 339:
			case 340:
			case 341:
			case 342:
			case 343:
			case 344:
			case 345:
			case 346:
			case 347:
			case 348:
			case 349:
			case 350:
			case 351:
			case 352:
			case 353:
			case 354:
			case 355:
			case 356:
			case 357:
			case 358:
			case 359:
			case 360:
			case 361:
			case 362:
			case 363:
			case 364:
			case 365:
			case 366:
			case 367:
			case 368:
			case 369:
			case 370:
			case 371:
			case 372:
			case 373:
			case 374:
			case 375:
			case 376:
			case 377:
			case 378:
			case 379:
			case 380:
			case 381:
			case 382:
			case 383:
			case 384:
			case 385:
			case 386:
			case 387:
			case 388:
			case 389:
			case 390:
			case 391:
			case 392:
			case 393:
			case 394:
			case 395:
			case 396:
			case 397:
			case 398:
			case 399:
			case 400:
			case 401:
			case 402:
			case 403:
			case 404:
			case 405:
			case 406:
			case 407:
			case 408:
			case 409:
			case 410:
			case 411:
			case 412:
			case 413:
			case 414:
			case 415:
			case 416:
			case 417:
			case 418:
			case 419:
			case 420:
			case 421:
			case 422:
			case 423:
			case 424:
			case 425:
			case 426:
			case 427:
			case 428:
			case 429:
			case 430:
			case 431:
			case 432:
			case 433:
			case 434:
			case 435:
			case 436:
			case 437:
			case 438:
			case 439:
			case 440:
			case 441:
			case 442:
			case 443:
			case 444:
			case 445:
			case 446:
			case 447:
			case 448:
			case 449:
			case 450:
			case 451:
			case 452:
			case 453:
			case 454:
			case 455:
			case 456:
			case 457:
			case 458:
			case 459:
			case 460:
			case 461:
			case 462:
			case 463:
			case 464:
			case 465:
			case 466:
			case 467:
			case 468:
			case 469:
			case 470:
			case 471:
			case 472:
			case 473:
			case 474:
			case 475:
			case 476:
			case 477:
			case 478:
			case 479:
			case 480:
			case 481:
			case 482:
			case 483:
			case 484:
			case 485:
			case 486:
			case 487:
			case 488:
			case 489:
			case 490:
			case 491:
			case 492:
			case 493:
			case 494:
			case 495:
			case 496:
			case 497:
			case 498:
			case 499:
			case 500:
			case 501:
			case 502:
			case 503:
			case 504:
			case 505:
			case 506:
			case 507:
			case 508:
			case 509:
			case 510:
			case 511:
			case 512:
			case 513:
			case 514:
			case 515:
			case 516:
			case 517:
			case 518:
			case 519:
			case 520:
			case 521:
			case 522:
			case 523:
			case 524:
			case 525:
			case 526:
			case 527:
			case 528:
			case 529:
			case 530:
			case 531:
			case 532:
			case 533:
			case 534:
			case 535:
			case 536:
			case 537:
			case 538:
			case 539:
			case 540:
			case 541:
			case 542:
			case 543:
			case 544:
			case 545:
			case 547:
			case 548:
			case 549:
			case 550:
			case 551:
			case 552:
			case 553:
			case 554:
			case 555:
			case 556:
			case 557:
			case 558:
			case 559:
			case 560:
			case 561:
			case 562:
			case 563:
			case 564:
			case 565:
			case 566:
			case 567:
			case 568:
			case 569:
			case 570:
			case 571:
			case 572:
			case 573:
			case 574:
			case 575:
			case 576:
			case 577:
			case 578:
			case 580:
			case 581:
			case 582:
			case 583:
			case 584:
			case 585:
			case 586:
			case 587:
			case 588:
			case 593:
			case 594:
			case 595:
			case 596:
			case 597:
			case 598:
			case 599:
			case 600:
			case 601:
			case 602:
			case 603:
			case 604:
			case 605:
			case 606:
			case 607:
			case 608:
			case 609:
			case 610:
			case 612:
			case 613:
			case 614:
			case 615:
			case 616:
			case 617:
			case 618:
			case 619:
			case 620:
			case 621:
			case 622:
			case 623:
			case 624:
			case 625:
			case 626:
			case 627:
			case 628:
			case 629:
			case 630:
			case 631:
			case 632:
			case 633:
			case 634:
			case 635:
			case 636:
			case 637:
			case 638:
			case 639:
			case 640:
			case 641:
			case 642:
			case 643:
			case 644:
			case 645:
			case 646:
			case 647:
			case 648:
			case 649:
			case 650:
			case 651:
			case 652:
			case 653:
			case 654:
			case 655:
			case 656:
			case 657:
			case 658:
			case 659:
			case 660:
			case 661:
			case 662:
			case 663:
			case 664:
			case 665:
			case 666:
			case 667:
			case 668:
			case 669:
			case 670:
			case 671:
			case 672:
			case 673:
			case 674:
			case 675:
			case 676:
			case 677:
			case 678:
			case 679:
			case 680:
			case 681:
			case 682:
			case 683:
			case 684:
			case 685:
			case 686:
			case 687:
			case 688:
			case 689:
			case 690:
			case 691:
			case 692:
			case 693:
			case 696:
			case 697:
			case 698:
			case 699:
			case 700:
			case 701:
			case 702:
			case 703:
			case 704:
			case 705:
			case 706:
			case 707:
			case 708:
			case 709:
			case 710:
			case 711:
			case 712:
			case 713:
			case 714:
			case 715:
			case 716:
			case 717:
			case 718:
			case 719:
			case 720:
			case 721:
			case 722:
			case 723:
			case 724:
			case 725:
			case 726:
			case 727:
			case 728:
			case 729:
			case 730:
			case 731:
			case 732:
			case 733:
			case 734:
			case 735:
			case 736:
			case 737:
			case 738:
			case 739:
			case 740:
			case 741:
			case 742:
			case 743:
			case 744:
			case 745:
			case 746:
			case 747:
			case 748:
			case 749:
			case 750:
			case 751:
			case 752:
			case 753:
			case 754:
			case 755:
			case 756:
			case 757:
			case 758:
			case 759:
			case 760:
			case 761:
			case 762:
			case 763:
			case 764:
			case 765:
			case 766:
			case 767:
			case 768:
			case 769:
			case 770:
			case 771:
			case 772:
			case 773:
			case 774:
			case 775:
			case 776:
			case 777:
			case 778:
			case 779:
			case 780:
			case 781:
			case 782:
			case 783:
			case 784:
			case 785:
			case 786:
			case 787:
			case 788:
			case 789:
			case 790:
			case 791:
			case 792:
			case 793:
			case 794:
			case 795:
			case 796:
			case 797:
			case 798:
			case 799:
			case 800:
			case 801:
			case 802:
			case 803:
			case 804:
			case 805:
			case 806:
			case 807:
			case 808:
			case 809:
			case 810:
			case 811:
			case 812:
			case 813:
			case 814:
			case 815:
			case 816:
			case 817:
			case 818:
			case 819:
			case 820:
			case 821:
			case 822:
			case 823:
			case 824:
			case 825:
			case 826:
			case 827:
			case 828:
			case 829:
			case 830:
			case 831:
			case 832:
			case 833:
			case 834:
			case 835:
			case 836:
			case 837:
			case 838:
			case 839:
			case 840:
			case 841:
			case 842:
			case 843:
			case 844:
			case 845:
			case 846:
			case 847:
			case 848:
			case 849:
			case 850:
			case 851:
			case 852:
			case 853:
			case 854:
			case 855:
			case 856:
			case 857:
			case 858:
			case 859:
			case 860:
			case 861:
			case 862:
			case 863:
			case 864:
			case 865:
			case 866:
			case 867:
			case 868:
			case 869:
			case 870:
			case 871:
			case 872:
			case 873:
			case 874:
			case 875:
			case 876:
			case 877:
			case 878:
			case 879:
			case 880:
			case 881:
			case 882:
			case 883:
			case 884:
			case 885:
			case 886:
			case 887:
			case 888:
			case 889:
			case 890:
			case 891:
			case 892:
			case 893:
			case 894:
			case 895:
			case 896:
			case 897:
			case 898:
			case 899:
			case 900:
			case 901:
			case 902:
			case 903:
			case 904:
			case 905:
			case 906:
			case 907:
			case 908:
			case 909:
			case 910:
			case 911:
			case 912:
			case 913:
			case 914:
			case 915:
			case 916:
			case 917:
			case 918:
			case 919:
			case 920:
			case 921:
			case 922:
			case 923:
			case 924:
			case 925:
			case 926:
			case 927:
			case 928:
			case 929:
			case 930:
			case 931:
			case 932:
			case 933:
			case 934:
			case 935:
			case 936:
			case 937:
			case 938:
			case 939:
			case 940:
			case 941:
			case 942:
			case 943:
			case 944:
			case 945:
			case 946:
			case 947:
			case 948:
			case 949:
			case 950:
			case 951:
			case 952:
			case 953:
			case 954:
			case 955:
			case 956:
			case 957:
			case 958:
			case 959:
			case 960:
			case 961:
			case 962:
			case 963:
			case 964:
			case 965:
			case 966:
			case 967:
			case 968:
			case 969:
			case 970:
			case 971:
			case 972:
			case 973:
			case 974:
			case 975:
			case 976:
			case 977:
			case 978:
			case 979:
			case 980:
			case 981:
			case 982:
			case 983:
			case 984:
			case 985:
			case 986:
			case 987:
			case 988:
			case 989:
			case 990:
			case 991:
			case 992:
			case 993:
			case 1024:
			case 1032:
			case 1035:
			case 1043:
			case 1044:
				this.enterOuterAlt(localctx, 3);
				{
				this.state = 5083;
				this._errHandler.sync(this);
				switch ( this._interp.adaptivePredict(this._input, 729, this._ctx) ) {
				case 1:
					{
					this.state = 5080;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
					if (_la===1024) {
						{
						this.state = 5078;
						this.match(SqlParser.AT_SIGN);
						this.state = 5079;
						this.match(SqlParser.AT_SIGN);
						}
					}

					this.state = 5082;
					_la = this._input.LA(1);
					if(!(_la===370 || _la===402 || _la===518)) {
					this._errHandler.recoverInline(this);
					}
					else {
						this._errHandler.reportMatch(this);
					    this.consume();
					}
					}
					break;
				}
				this.state = 5085;
				this.uid();
				}
				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 showCommonEntity(): ShowCommonEntityContext {
		let localctx: ShowCommonEntityContext = new ShowCommonEntityContext(this, this._ctx, this.state);
		this.enterRule(localctx, 446, SqlParser.RULE_showCommonEntity);
		let _la: number;
		try {
			this.state = 5101;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case 22:
				this.enterOuterAlt(localctx, 1);
				{
				this.state = 5088;
				this.match(SqlParser.CHARACTER);
				this.state = 5089;
				this.match(SqlParser.SET);
				}
				break;
			case 734:
				this.enterOuterAlt(localctx, 2);
				{
				this.state = 5090;
				this.match(SqlParser.COLLATION);
				}
				break;
			case 36:
				this.enterOuterAlt(localctx, 3);
				{
				this.state = 5091;
				this.match(SqlParser.DATABASES);
				}
				break;
			case 136:
				this.enterOuterAlt(localctx, 4);
				{
				this.state = 5092;
				this.match(SqlParser.SCHEMAS);
				}
				break;
			case 368:
				this.enterOuterAlt(localctx, 5);
				{
				this.state = 5093;
				this.match(SqlParser.FUNCTION);
				this.state = 5094;
				this.match(SqlParser.STATUS);
				}
				break;
			case 117:
				this.enterOuterAlt(localctx, 6);
				{
				this.state = 5095;
				this.match(SqlParser.PROCEDURE);
				this.state = 5096;
				this.match(SqlParser.STATUS);
				}
				break;
			case 370:
			case 518:
			case 543:
			case 577:
				this.enterOuterAlt(localctx, 7);
				{
				this.state = 5098;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===370 || _la===518) {
					{
					this.state = 5097;
					_la = this._input.LA(1);
					if(!(_la===370 || _la===518)) {
					this._errHandler.recoverInline(this);
					}
					else {
						this._errHandler.reportMatch(this);
					    this.consume();
					}
					}
				}

				this.state = 5100;
				_la = this._input.LA(1);
				if(!(_la===543 || _la===577)) {
				this._errHandler.recoverInline(this);
				}
				else {
					this._errHandler.reportMatch(this);
				    this.consume();
				}
				}
				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 showFilter(): ShowFilterContext {
		let localctx: ShowFilterContext = new ShowFilterContext(this, this._ctx, this.state);
		this.enterRule(localctx, 448, SqlParser.RULE_showFilter);
		try {
			this.state = 5107;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case 88:
				this.enterOuterAlt(localctx, 1);
				{
				this.state = 5103;
				this.match(SqlParser.LIKE);
				this.state = 5104;
				this.match(SqlParser.STRING_LITERAL);
				}
				break;
			case 172:
				this.enterOuterAlt(localctx, 2);
				{
				this.state = 5105;
				this.match(SqlParser.WHERE);
				this.state = 5106;
				this.expression(0);
				}
				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 showGlobalInfoClause(): ShowGlobalInfoClauseContext {
		let localctx: ShowGlobalInfoClauseContext = new ShowGlobalInfoClauseContext(this, this._ctx, this.state);
		this.enterRule(localctx, 450, SqlParser.RULE_showGlobalInfoClause);
		let _la: number;
		try {
			this.state = 5126;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case 343:
			case 545:
				this.enterOuterAlt(localctx, 1);
				{
				this.state = 5110;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===545) {
					{
					this.state = 5109;
					this.match(SqlParser.STORAGE);
					}
				}

				this.state = 5112;
				this.match(SqlParser.ENGINES);
				}
				break;
			case 405:
				this.enterOuterAlt(localctx, 2);
				{
				this.state = 5113;
				this.match(SqlParser.MASTER);
				this.state = 5114;
				this.match(SqlParser.STATUS);
				}
				break;
			case 472:
				this.enterOuterAlt(localctx, 3);
				{
				this.state = 5115;
				this.match(SqlParser.PLUGINS);
				}
				break;
			case 610:
				this.enterOuterAlt(localctx, 4);
				{
				this.state = 5116;
				this.match(SqlParser.PRIVILEGES);
				}
				break;
			case 367:
			case 478:
				this.enterOuterAlt(localctx, 5);
				{
				this.state = 5118;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===367) {
					{
					this.state = 5117;
					this.match(SqlParser.FULL);
					}
				}

				this.state = 5120;
				this.match(SqlParser.PROCESSLIST);
				}
				break;
			case 480:
				this.enterOuterAlt(localctx, 6);
				{
				this.state = 5121;
				this.match(SqlParser.PROFILES);
				}
				break;
			case 523:
				this.enterOuterAlt(localctx, 7);
				{
				this.state = 5122;
				this.match(SqlParser.SLAVE);
				this.state = 5123;
				this.match(SqlParser.HOSTS);
				}
				break;
			case 277:
				this.enterOuterAlt(localctx, 8);
				{
				this.state = 5124;
				this.match(SqlParser.AUTHORS);
				}
				break;
			case 319:
				this.enterOuterAlt(localctx, 9);
				{
				this.state = 5125;
				this.match(SqlParser.CONTRIBUTORS);
				}
				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 showSchemaEntity(): ShowSchemaEntityContext {
		let localctx: ShowSchemaEntityContext = new ShowSchemaEntityContext(this, this._ctx, this.state);
		this.enterRule(localctx, 452, SqlParser.RULE_showSchemaEntity);
		let _la: number;
		try {
			this.state = 5136;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case 349:
				this.enterOuterAlt(localctx, 1);
				{
				this.state = 5128;
				this.match(SqlParser.EVENTS);
				}
				break;
			case 154:
				this.enterOuterAlt(localctx, 2);
				{
				this.state = 5129;
				this.match(SqlParser.TABLE);
				this.state = 5130;
				this.match(SqlParser.STATUS);
				}
				break;
			case 367:
			case 602:
				this.enterOuterAlt(localctx, 3);
				{
				this.state = 5132;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===367) {
					{
					this.state = 5131;
					this.match(SqlParser.FULL);
					}
				}

				this.state = 5134;
				this.match(SqlParser.TABLES);
				}
				break;
			case 563:
				this.enterOuterAlt(localctx, 4);
				{
				this.state = 5135;
				this.match(SqlParser.TRIGGERS);
				}
				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 showProfileType(): ShowProfileTypeContext {
		let localctx: ShowProfileTypeContext = new ShowProfileTypeContext(this, this._ctx, this.state);
		this.enterRule(localctx, 454, SqlParser.RULE_showProfileType);
		try {
			this.state = 5150;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case 6:
				this.enterOuterAlt(localctx, 1);
				{
				this.state = 5138;
				this.match(SqlParser.ALL);
				}
				break;
			case 285:
				this.enterOuterAlt(localctx, 2);
				{
				this.state = 5139;
				this.match(SqlParser.BLOCK);
				this.state = 5140;
				this.match(SqlParser.IO);
				}
				break;
			case 318:
				this.enterOuterAlt(localctx, 3);
				{
				this.state = 5141;
				this.match(SqlParser.CONTEXT);
				this.state = 5142;
				this.match(SqlParser.SWITCHES);
				}
				break;
			case 321:
				this.enterOuterAlt(localctx, 4);
				{
				this.state = 5143;
				this.match(SqlParser.CPU);
				}
				break;
			case 391:
				this.enterOuterAlt(localctx, 5);
				{
				this.state = 5144;
				this.match(SqlParser.IPC);
				}
				break;
			case 682:
				this.enterOuterAlt(localctx, 6);
				{
				this.state = 5145;
				this.match(SqlParser.MEMORY);
				}
				break;
			case 463:
				this.enterOuterAlt(localctx, 7);
				{
				this.state = 5146;
				this.match(SqlParser.PAGE);
				this.state = 5147;
				this.match(SqlParser.FAULTS);
				}
				break;
			case 530:
				this.enterOuterAlt(localctx, 8);
				{
				this.state = 5148;
				this.match(SqlParser.SOURCE);
				}
				break;
			case 553:
				this.enterOuterAlt(localctx, 9);
				{
				this.state = 5149;
				this.match(SqlParser.SWAPS);
				}
				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 binlogStatement(): BinlogStatementContext {
		let localctx: BinlogStatementContext = new BinlogStatementContext(this, this._ctx, this.state);
		this.enterRule(localctx, 456, SqlParser.RULE_binlogStatement);
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 5152;
			this.match(SqlParser.BINLOG);
			this.state = 5153;
			this.match(SqlParser.STRING_LITERAL);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public cacheIndexStatement(): CacheIndexStatementContext {
		let localctx: CacheIndexStatementContext = new CacheIndexStatementContext(this, this._ctx, this.state);
		this.enterRule(localctx, 458, SqlParser.RULE_cacheIndexStatement);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 5155;
			this.match(SqlParser.CACHE);
			this.state = 5156;
			this.match(SqlParser.INDEX);
			this.state = 5157;
			this.tableIndexes();
			this.state = 5162;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la===1022) {
				{
				{
				this.state = 5158;
				this.match(SqlParser.COMMA);
				this.state = 5159;
				this.tableIndexes();
				}
				}
				this.state = 5164;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			}
			this.state = 5172;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===115) {
				{
				this.state = 5165;
				this.match(SqlParser.PARTITION);
				this.state = 5166;
				this.match(SqlParser.LR_BRACKET);
				this.state = 5169;
				this._errHandler.sync(this);
				switch (this._input.LA(1)) {
				case 32:
				case 35:
				case 44:
				case 87:
				case 105:
				case 133:
				case 151:
				case 199:
				case 200:
				case 201:
				case 202:
				case 203:
				case 216:
				case 219:
				case 221:
				case 233:
				case 234:
				case 239:
				case 262:
				case 270:
				case 271:
				case 272:
				case 273:
				case 274:
				case 275:
				case 276:
				case 277:
				case 278:
				case 279:
				case 280:
				case 281:
				case 282:
				case 283:
				case 284:
				case 285:
				case 286:
				case 287:
				case 288:
				case 289:
				case 290:
				case 291:
				case 292:
				case 293:
				case 294:
				case 295:
				case 296:
				case 297:
				case 298:
				case 299:
				case 300:
				case 301:
				case 302:
				case 303:
				case 304:
				case 305:
				case 306:
				case 307:
				case 308:
				case 309:
				case 310:
				case 311:
				case 312:
				case 313:
				case 314:
				case 315:
				case 316:
				case 317:
				case 318:
				case 319:
				case 320:
				case 321:
				case 322:
				case 323:
				case 324:
				case 325:
				case 326:
				case 327:
				case 328:
				case 329:
				case 330:
				case 331:
				case 332:
				case 333:
				case 334:
				case 335:
				case 336:
				case 337:
				case 338:
				case 339:
				case 340:
				case 341:
				case 342:
				case 343:
				case 344:
				case 345:
				case 346:
				case 347:
				case 348:
				case 349:
				case 350:
				case 351:
				case 352:
				case 353:
				case 354:
				case 355:
				case 356:
				case 357:
				case 358:
				case 359:
				case 360:
				case 361:
				case 362:
				case 363:
				case 364:
				case 365:
				case 366:
				case 367:
				case 368:
				case 369:
				case 370:
				case 371:
				case 372:
				case 373:
				case 374:
				case 375:
				case 376:
				case 377:
				case 378:
				case 379:
				case 380:
				case 381:
				case 382:
				case 383:
				case 384:
				case 385:
				case 386:
				case 387:
				case 388:
				case 389:
				case 390:
				case 391:
				case 392:
				case 393:
				case 394:
				case 395:
				case 396:
				case 397:
				case 398:
				case 399:
				case 400:
				case 401:
				case 402:
				case 403:
				case 404:
				case 405:
				case 406:
				case 407:
				case 408:
				case 409:
				case 410:
				case 411:
				case 412:
				case 413:
				case 414:
				case 415:
				case 416:
				case 417:
				case 418:
				case 419:
				case 420:
				case 421:
				case 422:
				case 423:
				case 424:
				case 425:
				case 426:
				case 427:
				case 428:
				case 429:
				case 430:
				case 431:
				case 432:
				case 433:
				case 434:
				case 435:
				case 436:
				case 437:
				case 438:
				case 439:
				case 440:
				case 441:
				case 442:
				case 443:
				case 444:
				case 445:
				case 446:
				case 447:
				case 448:
				case 449:
				case 450:
				case 451:
				case 452:
				case 453:
				case 454:
				case 455:
				case 456:
				case 457:
				case 458:
				case 459:
				case 460:
				case 461:
				case 462:
				case 463:
				case 464:
				case 465:
				case 466:
				case 467:
				case 468:
				case 469:
				case 470:
				case 471:
				case 472:
				case 473:
				case 474:
				case 475:
				case 476:
				case 477:
				case 478:
				case 479:
				case 480:
				case 481:
				case 482:
				case 483:
				case 484:
				case 485:
				case 486:
				case 487:
				case 488:
				case 489:
				case 490:
				case 491:
				case 492:
				case 493:
				case 494:
				case 495:
				case 496:
				case 497:
				case 498:
				case 499:
				case 500:
				case 501:
				case 502:
				case 503:
				case 504:
				case 505:
				case 506:
				case 507:
				case 508:
				case 509:
				case 510:
				case 511:
				case 512:
				case 513:
				case 514:
				case 515:
				case 516:
				case 517:
				case 518:
				case 519:
				case 520:
				case 521:
				case 522:
				case 523:
				case 524:
				case 525:
				case 526:
				case 527:
				case 528:
				case 529:
				case 530:
				case 531:
				case 532:
				case 533:
				case 534:
				case 535:
				case 536:
				case 537:
				case 538:
				case 539:
				case 540:
				case 541:
				case 542:
				case 543:
				case 544:
				case 545:
				case 547:
				case 548:
				case 549:
				case 550:
				case 551:
				case 552:
				case 553:
				case 554:
				case 555:
				case 556:
				case 557:
				case 558:
				case 559:
				case 560:
				case 561:
				case 562:
				case 563:
				case 564:
				case 565:
				case 566:
				case 567:
				case 568:
				case 569:
				case 570:
				case 571:
				case 572:
				case 573:
				case 574:
				case 575:
				case 576:
				case 577:
				case 578:
				case 580:
				case 581:
				case 582:
				case 583:
				case 584:
				case 585:
				case 586:
				case 587:
				case 588:
				case 593:
				case 594:
				case 595:
				case 596:
				case 597:
				case 598:
				case 599:
				case 600:
				case 601:
				case 602:
				case 603:
				case 604:
				case 605:
				case 606:
				case 607:
				case 608:
				case 609:
				case 610:
				case 612:
				case 613:
				case 614:
				case 615:
				case 616:
				case 617:
				case 618:
				case 619:
				case 620:
				case 621:
				case 622:
				case 623:
				case 624:
				case 625:
				case 626:
				case 627:
				case 628:
				case 629:
				case 630:
				case 631:
				case 632:
				case 633:
				case 634:
				case 635:
				case 636:
				case 637:
				case 638:
				case 639:
				case 640:
				case 641:
				case 642:
				case 643:
				case 644:
				case 645:
				case 646:
				case 647:
				case 648:
				case 649:
				case 650:
				case 651:
				case 652:
				case 653:
				case 654:
				case 655:
				case 656:
				case 657:
				case 658:
				case 659:
				case 660:
				case 661:
				case 662:
				case 663:
				case 664:
				case 665:
				case 666:
				case 667:
				case 668:
				case 669:
				case 670:
				case 671:
				case 672:
				case 673:
				case 674:
				case 675:
				case 676:
				case 677:
				case 678:
				case 679:
				case 680:
				case 681:
				case 682:
				case 683:
				case 684:
				case 685:
				case 686:
				case 687:
				case 688:
				case 689:
				case 690:
				case 691:
				case 692:
				case 693:
				case 696:
				case 697:
				case 698:
				case 699:
				case 700:
				case 701:
				case 702:
				case 703:
				case 704:
				case 705:
				case 706:
				case 707:
				case 708:
				case 709:
				case 710:
				case 711:
				case 712:
				case 713:
				case 714:
				case 715:
				case 716:
				case 717:
				case 718:
				case 719:
				case 720:
				case 721:
				case 722:
				case 723:
				case 724:
				case 725:
				case 726:
				case 727:
				case 728:
				case 729:
				case 730:
				case 731:
				case 732:
				case 733:
				case 734:
				case 735:
				case 736:
				case 737:
				case 738:
				case 739:
				case 740:
				case 741:
				case 742:
				case 743:
				case 744:
				case 745:
				case 746:
				case 747:
				case 748:
				case 749:
				case 750:
				case 751:
				case 752:
				case 753:
				case 754:
				case 755:
				case 756:
				case 757:
				case 758:
				case 759:
				case 760:
				case 761:
				case 762:
				case 763:
				case 764:
				case 765:
				case 766:
				case 767:
				case 768:
				case 769:
				case 770:
				case 771:
				case 772:
				case 773:
				case 774:
				case 775:
				case 776:
				case 777:
				case 778:
				case 779:
				case 780:
				case 781:
				case 782:
				case 783:
				case 784:
				case 785:
				case 786:
				case 787:
				case 788:
				case 789:
				case 790:
				case 791:
				case 792:
				case 793:
				case 794:
				case 795:
				case 796:
				case 797:
				case 798:
				case 799:
				case 800:
				case 801:
				case 802:
				case 803:
				case 804:
				case 805:
				case 806:
				case 807:
				case 808:
				case 809:
				case 810:
				case 811:
				case 812:
				case 813:
				case 814:
				case 815:
				case 816:
				case 817:
				case 818:
				case 819:
				case 820:
				case 821:
				case 822:
				case 823:
				case 824:
				case 825:
				case 826:
				case 827:
				case 828:
				case 829:
				case 830:
				case 831:
				case 832:
				case 833:
				case 834:
				case 835:
				case 836:
				case 837:
				case 838:
				case 839:
				case 840:
				case 841:
				case 842:
				case 843:
				case 844:
				case 845:
				case 846:
				case 847:
				case 848:
				case 849:
				case 850:
				case 851:
				case 852:
				case 853:
				case 854:
				case 855:
				case 856:
				case 857:
				case 858:
				case 859:
				case 860:
				case 861:
				case 862:
				case 863:
				case 864:
				case 865:
				case 866:
				case 867:
				case 868:
				case 869:
				case 870:
				case 871:
				case 872:
				case 873:
				case 874:
				case 875:
				case 876:
				case 877:
				case 878:
				case 879:
				case 880:
				case 881:
				case 882:
				case 883:
				case 884:
				case 885:
				case 886:
				case 887:
				case 888:
				case 889:
				case 890:
				case 891:
				case 892:
				case 893:
				case 894:
				case 895:
				case 896:
				case 897:
				case 898:
				case 899:
				case 900:
				case 901:
				case 902:
				case 903:
				case 904:
				case 905:
				case 906:
				case 907:
				case 908:
				case 909:
				case 910:
				case 911:
				case 912:
				case 913:
				case 914:
				case 915:
				case 916:
				case 917:
				case 918:
				case 919:
				case 920:
				case 921:
				case 922:
				case 923:
				case 924:
				case 925:
				case 926:
				case 927:
				case 928:
				case 929:
				case 930:
				case 931:
				case 932:
				case 933:
				case 934:
				case 935:
				case 936:
				case 937:
				case 938:
				case 939:
				case 940:
				case 941:
				case 942:
				case 943:
				case 944:
				case 945:
				case 946:
				case 947:
				case 948:
				case 949:
				case 950:
				case 951:
				case 952:
				case 953:
				case 954:
				case 955:
				case 956:
				case 957:
				case 958:
				case 959:
				case 960:
				case 961:
				case 962:
				case 963:
				case 964:
				case 965:
				case 966:
				case 967:
				case 968:
				case 969:
				case 970:
				case 971:
				case 972:
				case 973:
				case 974:
				case 975:
				case 976:
				case 977:
				case 978:
				case 979:
				case 980:
				case 981:
				case 982:
				case 983:
				case 984:
				case 985:
				case 986:
				case 987:
				case 988:
				case 989:
				case 990:
				case 991:
				case 992:
				case 993:
				case 1032:
				case 1035:
				case 1043:
				case 1044:
					{
					this.state = 5167;
					this.uidList();
					}
					break;
				case 6:
					{
					this.state = 5168;
					this.match(SqlParser.ALL);
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				this.state = 5171;
				this.match(SqlParser.RR_BRACKET);
				}
			}

			this.state = 5174;
			this.match(SqlParser.IN);
			this.state = 5175;
			localctx._schema = this.uid();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public flushStatement(): FlushStatementContext {
		let localctx: FlushStatementContext = new FlushStatementContext(this, this._ctx, this.state);
		this.enterRule(localctx, 460, SqlParser.RULE_flushStatement);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 5177;
			this.match(SqlParser.FLUSH);
			this.state = 5179;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===103 || _la===402) {
				{
				this.state = 5178;
				localctx._flushFormat = this._input.LT(1);
				_la = this._input.LA(1);
				if(!(_la===103 || _la===402)) {
				    localctx._flushFormat = this._errHandler.recoverInline(this);
				}
				else {
					this._errHandler.reportMatch(this);
				    this.consume();
				}
				}
			}

			this.state = 5181;
			this.flushOption();
			this.state = 5186;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la===1022) {
				{
				{
				this.state = 5182;
				this.match(SqlParser.COMMA);
				this.state = 5183;
				this.flushOption();
				}
				}
				this.state = 5188;
				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 killStatement(): KillStatementContext {
		let localctx: KillStatementContext = new KillStatementContext(this, this._ctx, this.state);
		this.enterRule(localctx, 462, SqlParser.RULE_killStatement);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 5189;
			this.match(SqlParser.KILL);
			this.state = 5191;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===312 || _la===482) {
				{
				this.state = 5190;
				localctx._connectionFormat = this._input.LT(1);
				_la = this._input.LA(1);
				if(!(_la===312 || _la===482)) {
				    localctx._connectionFormat = this._errHandler.recoverInline(this);
				}
				else {
					this._errHandler.reportMatch(this);
				    this.consume();
				}
				}
			}

			this.state = 5194;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			do {
				{
				{
				this.state = 5193;
				this.decimalLiteral();
				}
				}
				this.state = 5196;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			} while (((((_la - 1025)) & ~0x1F) === 0 && ((1 << (_la - 1025)) & 2055) !== 0));
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public loadIndexIntoCache(): LoadIndexIntoCacheContext {
		let localctx: LoadIndexIntoCacheContext = new LoadIndexIntoCacheContext(this, this._ctx, this.state);
		this.enterRule(localctx, 464, SqlParser.RULE_loadIndexIntoCache);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 5198;
			this.match(SqlParser.LOAD);
			this.state = 5199;
			this.match(SqlParser.INDEX);
			this.state = 5200;
			this.match(SqlParser.INTO);
			this.state = 5201;
			this.match(SqlParser.CACHE);
			this.state = 5202;
			this.loadedTableIndexes();
			this.state = 5207;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la===1022) {
				{
				{
				this.state = 5203;
				this.match(SqlParser.COMMA);
				this.state = 5204;
				this.loadedTableIndexes();
				}
				}
				this.state = 5209;
				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 resetStatement(): ResetStatementContext {
		let localctx: ResetStatementContext = new ResetStatementContext(this, this._ctx, this.state);
		this.enterRule(localctx, 466, SqlParser.RULE_resetStatement);
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 5210;
			this.match(SqlParser.RESET);
			this.state = 5211;
			this.match(SqlParser.QUERY);
			this.state = 5212;
			this.match(SqlParser.CACHE);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public shutdownStatement(): ShutdownStatementContext {
		let localctx: ShutdownStatementContext = new ShutdownStatementContext(this, this._ctx, this.state);
		this.enterRule(localctx, 468, SqlParser.RULE_shutdownStatement);
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 5214;
			this.match(SqlParser.SHUTDOWN);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public tableIndexes(): TableIndexesContext {
		let localctx: TableIndexesContext = new TableIndexesContext(this, this._ctx, this.state);
		this.enterRule(localctx, 470, SqlParser.RULE_tableIndexes);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 5216;
			this.tableName();
			this.state = 5224;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===72 || _la===82 || _la===1020) {
				{
				this.state = 5218;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===72 || _la===82) {
					{
					this.state = 5217;
					localctx._indexFormat = this._input.LT(1);
					_la = this._input.LA(1);
					if(!(_la===72 || _la===82)) {
					    localctx._indexFormat = this._errHandler.recoverInline(this);
					}
					else {
						this._errHandler.reportMatch(this);
					    this.consume();
					}
					}
				}

				this.state = 5220;
				this.match(SqlParser.LR_BRACKET);
				this.state = 5221;
				this.uidList();
				this.state = 5222;
				this.match(SqlParser.RR_BRACKET);
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public flushOption(): FlushOptionContext {
		let localctx: FlushOptionContext = new FlushOptionContext(this, this._ctx, this.state);
		this.enterRule(localctx, 472, SqlParser.RULE_flushOption);
		let _la: number;
		try {
			this.state = 5256;
			this._errHandler.sync(this);
			switch ( this._interp.adaptivePredict(this._input, 755, this._ctx) ) {
			case 1:
				localctx = new SimpleFlushOptionContext(this, localctx);
				this.enterOuterAlt(localctx, 1);
				{
				this.state = 5244;
				this._errHandler.sync(this);
				switch (this._input.LA(1)) {
				case 329:
					{
					this.state = 5226;
					this.match(SqlParser.DES_KEY_FILE);
					}
					break;
				case 377:
					{
					this.state = 5227;
					this.match(SqlParser.HOSTS);
					}
					break;
				case 208:
				case 342:
				case 344:
				case 369:
				case 404:
				case 488:
				case 524:
					{
					this.state = 5229;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
					if (_la===208 || ((((_la - 342)) & ~0x1F) === 0 && ((1 << (_la - 342)) & 134217733) !== 0) || _la===488 || _la===524) {
						{
						this.state = 5228;
						_la = this._input.LA(1);
						if(!(_la===208 || ((((_la - 342)) & ~0x1F) === 0 && ((1 << (_la - 342)) & 134217733) !== 0) || _la===488 || _la===524)) {
						this._errHandler.recoverInline(this);
						}
						else {
							this._errHandler.reportMatch(this);
						    this.consume();
						}
						}
					}

					this.state = 5231;
					this.match(SqlParser.LOGS);
					}
					break;
				case 459:
					{
					this.state = 5232;
					this.match(SqlParser.OPTIMIZER_COSTS);
					}
					break;
				case 610:
					{
					this.state = 5233;
					this.match(SqlParser.PRIVILEGES);
					}
					break;
				case 482:
					{
					this.state = 5234;
					this.match(SqlParser.QUERY);
					this.state = 5235;
					this.match(SqlParser.CACHE);
					}
					break;
				case 543:
					{
					this.state = 5236;
					this.match(SqlParser.STATUS);
					}
					break;
				case 574:
					{
					this.state = 5237;
					this.match(SqlParser.USER_RESOURCES);
					}
					break;
				case 602:
					{
					this.state = 5238;
					this.match(SqlParser.TABLES);
					this.state = 5242;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
					if (_la===174) {
						{
						this.state = 5239;
						this.match(SqlParser.WITH);
						this.state = 5240;
						this.match(SqlParser.READ);
						this.state = 5241;
						this.match(SqlParser.LOCK);
						}
					}

					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				}
				break;
			case 2:
				localctx = new ChannelFlushOptionContext(this, localctx);
				this.enterOuterAlt(localctx, 2);
				{
				this.state = 5246;
				this.match(SqlParser.RELAY);
				this.state = 5247;
				this.match(SqlParser.LOGS);
				this.state = 5249;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===58) {
					{
					this.state = 5248;
					this.channelOption();
					}
				}

				}
				break;
			case 3:
				localctx = new TableFlushOptionContext(this, localctx);
				this.enterOuterAlt(localctx, 3);
				{
				this.state = 5251;
				this.match(SqlParser.TABLES);
				this.state = 5252;
				this.tables();
				this.state = 5254;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===58 || _la===174) {
					{
					this.state = 5253;
					this.flushTableOption();
					}
				}

				}
				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 flushTableOption(): FlushTableOptionContext {
		let localctx: FlushTableOptionContext = new FlushTableOptionContext(this, this._ctx, this.state);
		this.enterRule(localctx, 474, SqlParser.RULE_flushTableOption);
		try {
			this.state = 5263;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case 174:
				this.enterOuterAlt(localctx, 1);
				{
				this.state = 5258;
				this.match(SqlParser.WITH);
				this.state = 5259;
				this.match(SqlParser.READ);
				this.state = 5260;
				this.match(SqlParser.LOCK);
				}
				break;
			case 58:
				this.enterOuterAlt(localctx, 2);
				{
				this.state = 5261;
				this.match(SqlParser.FOR);
				this.state = 5262;
				this.match(SqlParser.EXPORT);
				}
				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 loadedTableIndexes(): LoadedTableIndexesContext {
		let localctx: LoadedTableIndexesContext = new LoadedTableIndexesContext(this, this._ctx, this.state);
		this.enterRule(localctx, 476, SqlParser.RULE_loadedTableIndexes);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 5265;
			this.tableName();
			this.state = 5273;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===115) {
				{
				this.state = 5266;
				this.match(SqlParser.PARTITION);
				this.state = 5267;
				this.match(SqlParser.LR_BRACKET);
				this.state = 5270;
				this._errHandler.sync(this);
				switch (this._input.LA(1)) {
				case 32:
				case 35:
				case 44:
				case 87:
				case 105:
				case 133:
				case 151:
				case 199:
				case 200:
				case 201:
				case 202:
				case 203:
				case 216:
				case 219:
				case 221:
				case 233:
				case 234:
				case 239:
				case 262:
				case 270:
				case 271:
				case 272:
				case 273:
				case 274:
				case 275:
				case 276:
				case 277:
				case 278:
				case 279:
				case 280:
				case 281:
				case 282:
				case 283:
				case 284:
				case 285:
				case 286:
				case 287:
				case 288:
				case 289:
				case 290:
				case 291:
				case 292:
				case 293:
				case 294:
				case 295:
				case 296:
				case 297:
				case 298:
				case 299:
				case 300:
				case 301:
				case 302:
				case 303:
				case 304:
				case 305:
				case 306:
				case 307:
				case 308:
				case 309:
				case 310:
				case 311:
				case 312:
				case 313:
				case 314:
				case 315:
				case 316:
				case 317:
				case 318:
				case 319:
				case 320:
				case 321:
				case 322:
				case 323:
				case 324:
				case 325:
				case 326:
				case 327:
				case 328:
				case 329:
				case 330:
				case 331:
				case 332:
				case 333:
				case 334:
				case 335:
				case 336:
				case 337:
				case 338:
				case 339:
				case 340:
				case 341:
				case 342:
				case 343:
				case 344:
				case 345:
				case 346:
				case 347:
				case 348:
				case 349:
				case 350:
				case 351:
				case 352:
				case 353:
				case 354:
				case 355:
				case 356:
				case 357:
				case 358:
				case 359:
				case 360:
				case 361:
				case 362:
				case 363:
				case 364:
				case 365:
				case 366:
				case 367:
				case 368:
				case 369:
				case 370:
				case 371:
				case 372:
				case 373:
				case 374:
				case 375:
				case 376:
				case 377:
				case 378:
				case 379:
				case 380:
				case 381:
				case 382:
				case 383:
				case 384:
				case 385:
				case 386:
				case 387:
				case 388:
				case 389:
				case 390:
				case 391:
				case 392:
				case 393:
				case 394:
				case 395:
				case 396:
				case 397:
				case 398:
				case 399:
				case 400:
				case 401:
				case 402:
				case 403:
				case 404:
				case 405:
				case 406:
				case 407:
				case 408:
				case 409:
				case 410:
				case 411:
				case 412:
				case 413:
				case 414:
				case 415:
				case 416:
				case 417:
				case 418:
				case 419:
				case 420:
				case 421:
				case 422:
				case 423:
				case 424:
				case 425:
				case 426:
				case 427:
				case 428:
				case 429:
				case 430:
				case 431:
				case 432:
				case 433:
				case 434:
				case 435:
				case 436:
				case 437:
				case 438:
				case 439:
				case 440:
				case 441:
				case 442:
				case 443:
				case 444:
				case 445:
				case 446:
				case 447:
				case 448:
				case 449:
				case 450:
				case 451:
				case 452:
				case 453:
				case 454:
				case 455:
				case 456:
				case 457:
				case 458:
				case 459:
				case 460:
				case 461:
				case 462:
				case 463:
				case 464:
				case 465:
				case 466:
				case 467:
				case 468:
				case 469:
				case 470:
				case 471:
				case 472:
				case 473:
				case 474:
				case 475:
				case 476:
				case 477:
				case 478:
				case 479:
				case 480:
				case 481:
				case 482:
				case 483:
				case 484:
				case 485:
				case 486:
				case 487:
				case 488:
				case 489:
				case 490:
				case 491:
				case 492:
				case 493:
				case 494:
				case 495:
				case 496:
				case 497:
				case 498:
				case 499:
				case 500:
				case 501:
				case 502:
				case 503:
				case 504:
				case 505:
				case 506:
				case 507:
				case 508:
				case 509:
				case 510:
				case 511:
				case 512:
				case 513:
				case 514:
				case 515:
				case 516:
				case 517:
				case 518:
				case 519:
				case 520:
				case 521:
				case 522:
				case 523:
				case 524:
				case 525:
				case 526:
				case 527:
				case 528:
				case 529:
				case 530:
				case 531:
				case 532:
				case 533:
				case 534:
				case 535:
				case 536:
				case 537:
				case 538:
				case 539:
				case 540:
				case 541:
				case 542:
				case 543:
				case 544:
				case 545:
				case 547:
				case 548:
				case 549:
				case 550:
				case 551:
				case 552:
				case 553:
				case 554:
				case 555:
				case 556:
				case 557:
				case 558:
				case 559:
				case 560:
				case 561:
				case 562:
				case 563:
				case 564:
				case 565:
				case 566:
				case 567:
				case 568:
				case 569:
				case 570:
				case 571:
				case 572:
				case 573:
				case 574:
				case 575:
				case 576:
				case 577:
				case 578:
				case 580:
				case 581:
				case 582:
				case 583:
				case 584:
				case 585:
				case 586:
				case 587:
				case 588:
				case 593:
				case 594:
				case 595:
				case 596:
				case 597:
				case 598:
				case 599:
				case 600:
				case 601:
				case 602:
				case 603:
				case 604:
				case 605:
				case 606:
				case 607:
				case 608:
				case 609:
				case 610:
				case 612:
				case 613:
				case 614:
				case 615:
				case 616:
				case 617:
				case 618:
				case 619:
				case 620:
				case 621:
				case 622:
				case 623:
				case 624:
				case 625:
				case 626:
				case 627:
				case 628:
				case 629:
				case 630:
				case 631:
				case 632:
				case 633:
				case 634:
				case 635:
				case 636:
				case 637:
				case 638:
				case 639:
				case 640:
				case 641:
				case 642:
				case 643:
				case 644:
				case 645:
				case 646:
				case 647:
				case 648:
				case 649:
				case 650:
				case 651:
				case 652:
				case 653:
				case 654:
				case 655:
				case 656:
				case 657:
				case 658:
				case 659:
				case 660:
				case 661:
				case 662:
				case 663:
				case 664:
				case 665:
				case 666:
				case 667:
				case 668:
				case 669:
				case 670:
				case 671:
				case 672:
				case 673:
				case 674:
				case 675:
				case 676:
				case 677:
				case 678:
				case 679:
				case 680:
				case 681:
				case 682:
				case 683:
				case 684:
				case 685:
				case 686:
				case 687:
				case 688:
				case 689:
				case 690:
				case 691:
				case 692:
				case 693:
				case 696:
				case 697:
				case 698:
				case 699:
				case 700:
				case 701:
				case 702:
				case 703:
				case 704:
				case 705:
				case 706:
				case 707:
				case 708:
				case 709:
				case 710:
				case 711:
				case 712:
				case 713:
				case 714:
				case 715:
				case 716:
				case 717:
				case 718:
				case 719:
				case 720:
				case 721:
				case 722:
				case 723:
				case 724:
				case 725:
				case 726:
				case 727:
				case 728:
				case 729:
				case 730:
				case 731:
				case 732:
				case 733:
				case 734:
				case 735:
				case 736:
				case 737:
				case 738:
				case 739:
				case 740:
				case 741:
				case 742:
				case 743:
				case 744:
				case 745:
				case 746:
				case 747:
				case 748:
				case 749:
				case 750:
				case 751:
				case 752:
				case 753:
				case 754:
				case 755:
				case 756:
				case 757:
				case 758:
				case 759:
				case 760:
				case 761:
				case 762:
				case 763:
				case 764:
				case 765:
				case 766:
				case 767:
				case 768:
				case 769:
				case 770:
				case 771:
				case 772:
				case 773:
				case 774:
				case 775:
				case 776:
				case 777:
				case 778:
				case 779:
				case 780:
				case 781:
				case 782:
				case 783:
				case 784:
				case 785:
				case 786:
				case 787:
				case 788:
				case 789:
				case 790:
				case 791:
				case 792:
				case 793:
				case 794:
				case 795:
				case 796:
				case 797:
				case 798:
				case 799:
				case 800:
				case 801:
				case 802:
				case 803:
				case 804:
				case 805:
				case 806:
				case 807:
				case 808:
				case 809:
				case 810:
				case 811:
				case 812:
				case 813:
				case 814:
				case 815:
				case 816:
				case 817:
				case 818:
				case 819:
				case 820:
				case 821:
				case 822:
				case 823:
				case 824:
				case 825:
				case 826:
				case 827:
				case 828:
				case 829:
				case 830:
				case 831:
				case 832:
				case 833:
				case 834:
				case 835:
				case 836:
				case 837:
				case 838:
				case 839:
				case 840:
				case 841:
				case 842:
				case 843:
				case 844:
				case 845:
				case 846:
				case 847:
				case 848:
				case 849:
				case 850:
				case 851:
				case 852:
				case 853:
				case 854:
				case 855:
				case 856:
				case 857:
				case 858:
				case 859:
				case 860:
				case 861:
				case 862:
				case 863:
				case 864:
				case 865:
				case 866:
				case 867:
				case 868:
				case 869:
				case 870:
				case 871:
				case 872:
				case 873:
				case 874:
				case 875:
				case 876:
				case 877:
				case 878:
				case 879:
				case 880:
				case 881:
				case 882:
				case 883:
				case 884:
				case 885:
				case 886:
				case 887:
				case 888:
				case 889:
				case 890:
				case 891:
				case 892:
				case 893:
				case 894:
				case 895:
				case 896:
				case 897:
				case 898:
				case 899:
				case 900:
				case 901:
				case 902:
				case 903:
				case 904:
				case 905:
				case 906:
				case 907:
				case 908:
				case 909:
				case 910:
				case 911:
				case 912:
				case 913:
				case 914:
				case 915:
				case 916:
				case 917:
				case 918:
				case 919:
				case 920:
				case 921:
				case 922:
				case 923:
				case 924:
				case 925:
				case 926:
				case 927:
				case 928:
				case 929:
				case 930:
				case 931:
				case 932:
				case 933:
				case 934:
				case 935:
				case 936:
				case 937:
				case 938:
				case 939:
				case 940:
				case 941:
				case 942:
				case 943:
				case 944:
				case 945:
				case 946:
				case 947:
				case 948:
				case 949:
				case 950:
				case 951:
				case 952:
				case 953:
				case 954:
				case 955:
				case 956:
				case 957:
				case 958:
				case 959:
				case 960:
				case 961:
				case 962:
				case 963:
				case 964:
				case 965:
				case 966:
				case 967:
				case 968:
				case 969:
				case 970:
				case 971:
				case 972:
				case 973:
				case 974:
				case 975:
				case 976:
				case 977:
				case 978:
				case 979:
				case 980:
				case 981:
				case 982:
				case 983:
				case 984:
				case 985:
				case 986:
				case 987:
				case 988:
				case 989:
				case 990:
				case 991:
				case 992:
				case 993:
				case 1032:
				case 1035:
				case 1043:
				case 1044:
					{
					this.state = 5268;
					localctx._partitionList = this.uidList();
					}
					break;
				case 6:
					{
					this.state = 5269;
					this.match(SqlParser.ALL);
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				this.state = 5272;
				this.match(SqlParser.RR_BRACKET);
				}
			}

			this.state = 5282;
			this._errHandler.sync(this);
			switch ( this._interp.adaptivePredict(this._input, 760, this._ctx) ) {
			case 1:
				{
				this.state = 5276;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===72 || _la===82) {
					{
					this.state = 5275;
					localctx._indexFormat = this._input.LT(1);
					_la = this._input.LA(1);
					if(!(_la===72 || _la===82)) {
					    localctx._indexFormat = this._errHandler.recoverInline(this);
					}
					else {
						this._errHandler.reportMatch(this);
					    this.consume();
					}
					}
				}

				this.state = 5278;
				this.match(SqlParser.LR_BRACKET);
				this.state = 5279;
				localctx._indexList = this.uidList();
				this.state = 5280;
				this.match(SqlParser.RR_BRACKET);
				}
				break;
			}
			this.state = 5286;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===70) {
				{
				this.state = 5284;
				this.match(SqlParser.IGNORE);
				this.state = 5285;
				this.match(SqlParser.LEAVES);
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public simpleDescribeStatement(): SimpleDescribeStatementContext {
		let localctx: SimpleDescribeStatementContext = new SimpleDescribeStatementContext(this, this._ctx, this.state);
		this.enterRule(localctx, 478, SqlParser.RULE_simpleDescribeStatement);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 5288;
			localctx._command = this._input.LT(1);
			_la = this._input.LA(1);
			if(!(((((_la - 41)) & ~0x1F) === 0 && ((1 << (_la - 41)) & 16387) !== 0))) {
			    localctx._command = this._errHandler.recoverInline(this);
			}
			else {
				this._errHandler.reportMatch(this);
			    this.consume();
			}
			this.state = 5289;
			this.tableName();
			this.state = 5292;
			this._errHandler.sync(this);
			switch ( this._interp.adaptivePredict(this._input, 762, this._ctx) ) {
			case 1:
				{
				this.state = 5290;
				localctx._column = this.uid();
				}
				break;
			case 2:
				{
				this.state = 5291;
				localctx._pattern = this.match(SqlParser.STRING_LITERAL);
				}
				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 fullDescribeStatement(): FullDescribeStatementContext {
		let localctx: FullDescribeStatementContext = new FullDescribeStatementContext(this, this._ctx, this.state);
		this.enterRule(localctx, 480, SqlParser.RULE_fullDescribeStatement);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 5294;
			localctx._command = this._input.LT(1);
			_la = this._input.LA(1);
			if(!(((((_la - 41)) & ~0x1F) === 0 && ((1 << (_la - 41)) & 16387) !== 0))) {
			    localctx._command = this._errHandler.recoverInline(this);
			}
			else {
				this._errHandler.reportMatch(this);
			    this.consume();
			}
			this.state = 5298;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===355 || _la===467 || _la===774) {
				{
				this.state = 5295;
				localctx._formatType = this._input.LT(1);
				_la = this._input.LA(1);
				if(!(_la===355 || _la===467 || _la===774)) {
				    localctx._formatType = this._errHandler.recoverInline(this);
				}
				else {
					this._errHandler.reportMatch(this);
				    this.consume();
				}
				this.state = 5296;
				this.match(SqlParser.EQUAL_SYMBOL);
				this.state = 5297;
				localctx._formatValue = this._input.LT(1);
				_la = this._input.LA(1);
				if(!(_la===394 || _la===560)) {
				    localctx._formatValue = this._errHandler.recoverInline(this);
				}
				else {
					this._errHandler.reportMatch(this);
				    this.consume();
				}
				}
			}

			this.state = 5300;
			this.describeObjectClause();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public helpStatement(): HelpStatementContext {
		let localctx: HelpStatementContext = new HelpStatementContext(this, this._ctx, this.state);
		this.enterRule(localctx, 482, SqlParser.RULE_helpStatement);
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 5302;
			this.match(SqlParser.HELP);
			this.state = 5303;
			this.match(SqlParser.STRING_LITERAL);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public useStatement(): UseStatementContext {
		let localctx: UseStatementContext = new UseStatementContext(this, this._ctx, this.state);
		this.enterRule(localctx, 484, SqlParser.RULE_useStatement);
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 5305;
			this.match(SqlParser.USE);
			this.state = 5306;
			this.uid();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public signalStatement(): SignalStatementContext {
		let localctx: SignalStatementContext = new SignalStatementContext(this, this._ctx, this.state);
		this.enterRule(localctx, 486, SqlParser.RULE_signalStatement);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 5308;
			this.match(SqlParser.SIGNAL);
			this.state = 5316;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case 145:
				{
				{
				this.state = 5309;
				this.match(SqlParser.SQLSTATE);
				this.state = 5311;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===576) {
					{
					this.state = 5310;
					this.match(SqlParser.VALUE);
					}
				}

				this.state = 5313;
				this.stringLiteral();
				}
				}
				break;
			case 1043:
				{
				this.state = 5314;
				this.match(SqlParser.ID);
				}
				break;
			case 1044:
				{
				this.state = 5315;
				this.match(SqlParser.REVERSE_QUOTE_ID);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			this.state = 5327;
			this._errHandler.sync(this);
			switch ( this._interp.adaptivePredict(this._input, 767, this._ctx) ) {
			case 1:
				{
				this.state = 5318;
				this.match(SqlParser.SET);
				this.state = 5319;
				this.signalConditionInformation();
				this.state = 5324;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				while (_la===1022) {
					{
					{
					this.state = 5320;
					this.match(SqlParser.COMMA);
					this.state = 5321;
					this.signalConditionInformation();
					}
					}
					this.state = 5326;
					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 resignalStatement(): ResignalStatementContext {
		let localctx: ResignalStatementContext = new ResignalStatementContext(this, this._ctx, this.state);
		this.enterRule(localctx, 488, SqlParser.RULE_resignalStatement);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 5329;
			this.match(SqlParser.RESIGNAL);
			this.state = 5337;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case 145:
				{
				{
				this.state = 5330;
				this.match(SqlParser.SQLSTATE);
				this.state = 5332;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===576) {
					{
					this.state = 5331;
					this.match(SqlParser.VALUE);
					}
				}

				this.state = 5334;
				this.stringLiteral();
				}
				}
				break;
			case 1043:
				{
				this.state = 5335;
				this.match(SqlParser.ID);
				}
				break;
			case 1044:
				{
				this.state = 5336;
				this.match(SqlParser.REVERSE_QUOTE_ID);
				}
				break;
			case -1:
			case 7:
			case 9:
			case 17:
			case 21:
			case 23:
			case 30:
			case 40:
			case 41:
			case 42:
			case 47:
			case 55:
			case 64:
			case 65:
			case 76:
			case 84:
			case 92:
			case 93:
			case 107:
			case 118:
			case 124:
			case 125:
			case 127:
			case 129:
			case 132:
			case 137:
			case 138:
			case 140:
			case 141:
			case 164:
			case 166:
			case 168:
			case 282:
			case 283:
			case 289:
			case 294:
			case 306:
			case 325:
			case 334:
			case 364:
			case 373:
			case 375:
			case 385:
			case 475:
			case 494:
			case 503:
			case 508:
			case 514:
			case 538:
			case 544:
			case 564:
			case 568:
			case 587:
			case 604:
			case 608:
			case 1007:
			case 1020:
			case 1023:
				break;
			default:
				break;
			}
			this.state = 5348;
			this._errHandler.sync(this);
			switch ( this._interp.adaptivePredict(this._input, 771, this._ctx) ) {
			case 1:
				{
				this.state = 5339;
				this.match(SqlParser.SET);
				this.state = 5340;
				this.signalConditionInformation();
				this.state = 5345;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				while (_la===1022) {
					{
					{
					this.state = 5341;
					this.match(SqlParser.COMMA);
					this.state = 5342;
					this.signalConditionInformation();
					}
					}
					this.state = 5347;
					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 signalConditionInformation(): SignalConditionInformationContext {
		let localctx: SignalConditionInformationContext = new SignalConditionInformationContext(this, this._ctx, this.state);
		this.enterRule(localctx, 490, SqlParser.RULE_signalConditionInformation);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 5350;
			_la = this._input.LA(1);
			if(!(((((_la - 297)) & ~0x1F) === 0 && ((1 << (_la - 297)) & 34472065) !== 0) || _la===434 || _la===442 || _la===548 || _la===555 || _la===726 || _la===892)) {
			this._errHandler.recoverInline(this);
			}
			else {
				this._errHandler.reportMatch(this);
			    this.consume();
			}
			this.state = 5351;
			this.match(SqlParser.EQUAL_SYMBOL);
			this.state = 5354;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case 1034:
			case 1035:
			case 1041:
				{
				this.state = 5352;
				this.stringLiteral();
				}
				break;
			case 1036:
				{
				this.state = 5353;
				this.match(SqlParser.DECIMAL_LITERAL);
				}
				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 diagnosticsStatement(): DiagnosticsStatementContext {
		let localctx: DiagnosticsStatementContext = new DiagnosticsStatementContext(this, this._ctx, this.state);
		this.enterRule(localctx, 492, SqlParser.RULE_diagnosticsStatement);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 5356;
			this.match(SqlParser.GET);
			this.state = 5358;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===32 || _la===151) {
				{
				this.state = 5357;
				_la = this._input.LA(1);
				if(!(_la===32 || _la===151)) {
				this._errHandler.recoverInline(this);
				}
				else {
					this._errHandler.reportMatch(this);
				    this.consume();
				}
				}
			}

			this.state = 5360;
			this.match(SqlParser.DIAGNOSTICS);
			this.state = 5392;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case 32:
			case 35:
			case 44:
			case 87:
			case 105:
			case 133:
			case 151:
			case 199:
			case 200:
			case 201:
			case 202:
			case 203:
			case 216:
			case 219:
			case 221:
			case 233:
			case 234:
			case 239:
			case 262:
			case 270:
			case 271:
			case 272:
			case 273:
			case 274:
			case 275:
			case 276:
			case 277:
			case 278:
			case 279:
			case 280:
			case 281:
			case 282:
			case 283:
			case 284:
			case 285:
			case 286:
			case 287:
			case 288:
			case 289:
			case 290:
			case 291:
			case 292:
			case 293:
			case 294:
			case 295:
			case 296:
			case 297:
			case 298:
			case 299:
			case 300:
			case 301:
			case 302:
			case 303:
			case 304:
			case 305:
			case 306:
			case 307:
			case 308:
			case 309:
			case 310:
			case 311:
			case 312:
			case 313:
			case 314:
			case 315:
			case 316:
			case 317:
			case 318:
			case 319:
			case 320:
			case 321:
			case 322:
			case 323:
			case 324:
			case 325:
			case 326:
			case 327:
			case 328:
			case 329:
			case 330:
			case 331:
			case 332:
			case 333:
			case 334:
			case 335:
			case 336:
			case 337:
			case 338:
			case 339:
			case 340:
			case 341:
			case 342:
			case 343:
			case 344:
			case 345:
			case 346:
			case 347:
			case 348:
			case 349:
			case 350:
			case 351:
			case 352:
			case 353:
			case 354:
			case 355:
			case 356:
			case 357:
			case 358:
			case 359:
			case 360:
			case 361:
			case 362:
			case 363:
			case 364:
			case 365:
			case 366:
			case 367:
			case 368:
			case 369:
			case 370:
			case 371:
			case 372:
			case 373:
			case 374:
			case 375:
			case 376:
			case 377:
			case 378:
			case 379:
			case 380:
			case 381:
			case 382:
			case 383:
			case 384:
			case 385:
			case 386:
			case 387:
			case 388:
			case 389:
			case 390:
			case 391:
			case 392:
			case 393:
			case 394:
			case 395:
			case 396:
			case 397:
			case 398:
			case 399:
			case 400:
			case 401:
			case 402:
			case 403:
			case 404:
			case 405:
			case 406:
			case 407:
			case 408:
			case 409:
			case 410:
			case 411:
			case 412:
			case 413:
			case 414:
			case 415:
			case 416:
			case 417:
			case 418:
			case 419:
			case 420:
			case 421:
			case 422:
			case 423:
			case 424:
			case 425:
			case 426:
			case 427:
			case 428:
			case 429:
			case 430:
			case 431:
			case 432:
			case 433:
			case 434:
			case 435:
			case 436:
			case 437:
			case 438:
			case 439:
			case 440:
			case 441:
			case 442:
			case 443:
			case 444:
			case 445:
			case 446:
			case 447:
			case 448:
			case 449:
			case 450:
			case 451:
			case 452:
			case 453:
			case 454:
			case 455:
			case 456:
			case 457:
			case 458:
			case 459:
			case 460:
			case 461:
			case 462:
			case 463:
			case 464:
			case 465:
			case 466:
			case 467:
			case 468:
			case 469:
			case 470:
			case 471:
			case 472:
			case 473:
			case 474:
			case 475:
			case 476:
			case 477:
			case 478:
			case 479:
			case 480:
			case 481:
			case 482:
			case 483:
			case 484:
			case 485:
			case 486:
			case 487:
			case 488:
			case 489:
			case 490:
			case 491:
			case 492:
			case 493:
			case 494:
			case 495:
			case 496:
			case 497:
			case 498:
			case 499:
			case 500:
			case 501:
			case 502:
			case 503:
			case 504:
			case 505:
			case 506:
			case 507:
			case 508:
			case 509:
			case 510:
			case 511:
			case 512:
			case 513:
			case 514:
			case 515:
			case 516:
			case 517:
			case 518:
			case 519:
			case 520:
			case 521:
			case 522:
			case 523:
			case 524:
			case 525:
			case 526:
			case 527:
			case 528:
			case 529:
			case 530:
			case 531:
			case 532:
			case 533:
			case 534:
			case 535:
			case 536:
			case 537:
			case 538:
			case 539:
			case 540:
			case 541:
			case 542:
			case 543:
			case 544:
			case 545:
			case 547:
			case 548:
			case 549:
			case 550:
			case 551:
			case 552:
			case 553:
			case 554:
			case 555:
			case 556:
			case 557:
			case 558:
			case 559:
			case 560:
			case 561:
			case 562:
			case 563:
			case 564:
			case 565:
			case 566:
			case 567:
			case 568:
			case 569:
			case 570:
			case 571:
			case 572:
			case 573:
			case 574:
			case 575:
			case 576:
			case 577:
			case 578:
			case 580:
			case 581:
			case 582:
			case 583:
			case 584:
			case 585:
			case 586:
			case 587:
			case 588:
			case 593:
			case 594:
			case 595:
			case 596:
			case 597:
			case 598:
			case 599:
			case 600:
			case 601:
			case 602:
			case 603:
			case 604:
			case 605:
			case 606:
			case 607:
			case 608:
			case 609:
			case 610:
			case 612:
			case 613:
			case 614:
			case 615:
			case 616:
			case 617:
			case 618:
			case 619:
			case 620:
			case 621:
			case 622:
			case 623:
			case 624:
			case 625:
			case 626:
			case 627:
			case 628:
			case 629:
			case 630:
			case 631:
			case 632:
			case 633:
			case 634:
			case 635:
			case 636:
			case 637:
			case 638:
			case 639:
			case 640:
			case 641:
			case 642:
			case 643:
			case 644:
			case 645:
			case 646:
			case 647:
			case 648:
			case 649:
			case 650:
			case 651:
			case 652:
			case 653:
			case 654:
			case 655:
			case 656:
			case 657:
			case 658:
			case 659:
			case 660:
			case 661:
			case 662:
			case 663:
			case 664:
			case 665:
			case 666:
			case 667:
			case 668:
			case 669:
			case 670:
			case 671:
			case 672:
			case 673:
			case 674:
			case 675:
			case 676:
			case 677:
			case 678:
			case 679:
			case 680:
			case 681:
			case 682:
			case 683:
			case 684:
			case 685:
			case 686:
			case 687:
			case 688:
			case 689:
			case 690:
			case 691:
			case 692:
			case 693:
			case 696:
			case 697:
			case 698:
			case 699:
			case 700:
			case 701:
			case 702:
			case 703:
			case 704:
			case 705:
			case 706:
			case 707:
			case 708:
			case 709:
			case 710:
			case 711:
			case 712:
			case 713:
			case 714:
			case 715:
			case 716:
			case 717:
			case 718:
			case 719:
			case 720:
			case 721:
			case 722:
			case 723:
			case 724:
			case 725:
			case 726:
			case 727:
			case 728:
			case 729:
			case 730:
			case 731:
			case 732:
			case 733:
			case 734:
			case 735:
			case 736:
			case 737:
			case 738:
			case 739:
			case 740:
			case 741:
			case 742:
			case 743:
			case 744:
			case 745:
			case 746:
			case 747:
			case 748:
			case 749:
			case 750:
			case 751:
			case 752:
			case 753:
			case 754:
			case 755:
			case 756:
			case 757:
			case 758:
			case 759:
			case 760:
			case 761:
			case 762:
			case 763:
			case 764:
			case 765:
			case 766:
			case 767:
			case 768:
			case 769:
			case 770:
			case 771:
			case 772:
			case 773:
			case 774:
			case 775:
			case 776:
			case 777:
			case 778:
			case 779:
			case 780:
			case 781:
			case 782:
			case 783:
			case 784:
			case 785:
			case 786:
			case 787:
			case 788:
			case 789:
			case 790:
			case 791:
			case 792:
			case 793:
			case 794:
			case 795:
			case 796:
			case 797:
			case 798:
			case 799:
			case 800:
			case 801:
			case 802:
			case 803:
			case 804:
			case 805:
			case 806:
			case 807:
			case 808:
			case 809:
			case 810:
			case 811:
			case 812:
			case 813:
			case 814:
			case 815:
			case 816:
			case 817:
			case 818:
			case 819:
			case 820:
			case 821:
			case 822:
			case 823:
			case 824:
			case 825:
			case 826:
			case 827:
			case 828:
			case 829:
			case 830:
			case 831:
			case 832:
			case 833:
			case 834:
			case 835:
			case 836:
			case 837:
			case 838:
			case 839:
			case 840:
			case 841:
			case 842:
			case 843:
			case 844:
			case 845:
			case 846:
			case 847:
			case 848:
			case 849:
			case 850:
			case 851:
			case 852:
			case 853:
			case 854:
			case 855:
			case 856:
			case 857:
			case 858:
			case 859:
			case 860:
			case 861:
			case 862:
			case 863:
			case 864:
			case 865:
			case 866:
			case 867:
			case 868:
			case 869:
			case 870:
			case 871:
			case 872:
			case 873:
			case 874:
			case 875:
			case 876:
			case 877:
			case 878:
			case 879:
			case 880:
			case 881:
			case 882:
			case 883:
			case 884:
			case 885:
			case 886:
			case 887:
			case 888:
			case 889:
			case 890:
			case 891:
			case 892:
			case 893:
			case 894:
			case 895:
			case 896:
			case 897:
			case 898:
			case 899:
			case 900:
			case 901:
			case 902:
			case 903:
			case 904:
			case 905:
			case 906:
			case 907:
			case 908:
			case 909:
			case 910:
			case 911:
			case 912:
			case 913:
			case 914:
			case 915:
			case 916:
			case 917:
			case 918:
			case 919:
			case 920:
			case 921:
			case 922:
			case 923:
			case 924:
			case 925:
			case 926:
			case 927:
			case 928:
			case 929:
			case 930:
			case 931:
			case 932:
			case 933:
			case 934:
			case 935:
			case 936:
			case 937:
			case 938:
			case 939:
			case 940:
			case 941:
			case 942:
			case 943:
			case 944:
			case 945:
			case 946:
			case 947:
			case 948:
			case 949:
			case 950:
			case 951:
			case 952:
			case 953:
			case 954:
			case 955:
			case 956:
			case 957:
			case 958:
			case 959:
			case 960:
			case 961:
			case 962:
			case 963:
			case 964:
			case 965:
			case 966:
			case 967:
			case 968:
			case 969:
			case 970:
			case 971:
			case 972:
			case 973:
			case 974:
			case 975:
			case 976:
			case 977:
			case 978:
			case 979:
			case 980:
			case 981:
			case 982:
			case 983:
			case 984:
			case 985:
			case 986:
			case 987:
			case 988:
			case 989:
			case 990:
			case 991:
			case 992:
			case 993:
			case 1024:
			case 1032:
			case 1035:
			case 1043:
			case 1044:
			case 1046:
			case 1047:
				{
				{
				this.state = 5361;
				this.variableClause();
				this.state = 5362;
				this.match(SqlParser.EQUAL_SYMBOL);
				this.state = 5363;
				_la = this._input.LA(1);
				if(!(_la===105 || _la===884)) {
				this._errHandler.recoverInline(this);
				}
				else {
					this._errHandler.reportMatch(this);
				    this.consume();
				}
				this.state = 5371;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				while (_la===1022) {
					{
					{
					this.state = 5364;
					this.match(SqlParser.COMMA);
					this.state = 5365;
					this.variableClause();
					this.state = 5366;
					this.match(SqlParser.EQUAL_SYMBOL);
					this.state = 5367;
					_la = this._input.LA(1);
					if(!(_la===105 || _la===884)) {
					this._errHandler.recoverInline(this);
					}
					else {
						this._errHandler.reportMatch(this);
					    this.consume();
					}
					}
					}
					this.state = 5373;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
				}
				}
				}
				break;
			case 26:
				{
				{
				this.state = 5374;
				this.match(SqlParser.CONDITION);
				this.state = 5377;
				this._errHandler.sync(this);
				switch (this._input.LA(1)) {
				case 1025:
				case 1026:
				case 1027:
				case 1036:
					{
					this.state = 5375;
					this.decimalLiteral();
					}
					break;
				case 32:
				case 35:
				case 44:
				case 87:
				case 105:
				case 133:
				case 151:
				case 199:
				case 200:
				case 201:
				case 202:
				case 203:
				case 216:
				case 219:
				case 221:
				case 233:
				case 234:
				case 239:
				case 262:
				case 270:
				case 271:
				case 272:
				case 273:
				case 274:
				case 275:
				case 276:
				case 277:
				case 278:
				case 279:
				case 280:
				case 281:
				case 282:
				case 283:
				case 284:
				case 285:
				case 286:
				case 287:
				case 288:
				case 289:
				case 290:
				case 291:
				case 292:
				case 293:
				case 294:
				case 295:
				case 296:
				case 297:
				case 298:
				case 299:
				case 300:
				case 301:
				case 302:
				case 303:
				case 304:
				case 305:
				case 306:
				case 307:
				case 308:
				case 309:
				case 310:
				case 311:
				case 312:
				case 313:
				case 314:
				case 315:
				case 316:
				case 317:
				case 318:
				case 319:
				case 320:
				case 321:
				case 322:
				case 323:
				case 324:
				case 325:
				case 326:
				case 327:
				case 328:
				case 329:
				case 330:
				case 331:
				case 332:
				case 333:
				case 334:
				case 335:
				case 336:
				case 337:
				case 338:
				case 339:
				case 340:
				case 341:
				case 342:
				case 343:
				case 344:
				case 345:
				case 346:
				case 347:
				case 348:
				case 349:
				case 350:
				case 351:
				case 352:
				case 353:
				case 354:
				case 355:
				case 356:
				case 357:
				case 358:
				case 359:
				case 360:
				case 361:
				case 362:
				case 363:
				case 364:
				case 365:
				case 366:
				case 367:
				case 368:
				case 369:
				case 370:
				case 371:
				case 372:
				case 373:
				case 374:
				case 375:
				case 376:
				case 377:
				case 378:
				case 379:
				case 380:
				case 381:
				case 382:
				case 383:
				case 384:
				case 385:
				case 386:
				case 387:
				case 388:
				case 389:
				case 390:
				case 391:
				case 392:
				case 393:
				case 394:
				case 395:
				case 396:
				case 397:
				case 398:
				case 399:
				case 400:
				case 401:
				case 402:
				case 403:
				case 404:
				case 405:
				case 406:
				case 407:
				case 408:
				case 409:
				case 410:
				case 411:
				case 412:
				case 413:
				case 414:
				case 415:
				case 416:
				case 417:
				case 418:
				case 419:
				case 420:
				case 421:
				case 422:
				case 423:
				case 424:
				case 425:
				case 426:
				case 427:
				case 428:
				case 429:
				case 430:
				case 431:
				case 432:
				case 433:
				case 434:
				case 435:
				case 436:
				case 437:
				case 438:
				case 439:
				case 440:
				case 441:
				case 442:
				case 443:
				case 444:
				case 445:
				case 446:
				case 447:
				case 448:
				case 449:
				case 450:
				case 451:
				case 452:
				case 453:
				case 454:
				case 455:
				case 456:
				case 457:
				case 458:
				case 459:
				case 460:
				case 461:
				case 462:
				case 463:
				case 464:
				case 465:
				case 466:
				case 467:
				case 468:
				case 469:
				case 470:
				case 471:
				case 472:
				case 473:
				case 474:
				case 475:
				case 476:
				case 477:
				case 478:
				case 479:
				case 480:
				case 481:
				case 482:
				case 483:
				case 484:
				case 485:
				case 486:
				case 487:
				case 488:
				case 489:
				case 490:
				case 491:
				case 492:
				case 493:
				case 494:
				case 495:
				case 496:
				case 497:
				case 498:
				case 499:
				case 500:
				case 501:
				case 502:
				case 503:
				case 504:
				case 505:
				case 506:
				case 507:
				case 508:
				case 509:
				case 510:
				case 511:
				case 512:
				case 513:
				case 514:
				case 515:
				case 516:
				case 517:
				case 518:
				case 519:
				case 520:
				case 521:
				case 522:
				case 523:
				case 524:
				case 525:
				case 526:
				case 527:
				case 528:
				case 529:
				case 530:
				case 531:
				case 532:
				case 533:
				case 534:
				case 535:
				case 536:
				case 537:
				case 538:
				case 539:
				case 540:
				case 541:
				case 542:
				case 543:
				case 544:
				case 545:
				case 547:
				case 548:
				case 549:
				case 550:
				case 551:
				case 552:
				case 553:
				case 554:
				case 555:
				case 556:
				case 557:
				case 558:
				case 559:
				case 560:
				case 561:
				case 562:
				case 563:
				case 564:
				case 565:
				case 566:
				case 567:
				case 568:
				case 569:
				case 570:
				case 571:
				case 572:
				case 573:
				case 574:
				case 575:
				case 576:
				case 577:
				case 578:
				case 580:
				case 581:
				case 582:
				case 583:
				case 584:
				case 585:
				case 586:
				case 587:
				case 588:
				case 593:
				case 594:
				case 595:
				case 596:
				case 597:
				case 598:
				case 599:
				case 600:
				case 601:
				case 602:
				case 603:
				case 604:
				case 605:
				case 606:
				case 607:
				case 608:
				case 609:
				case 610:
				case 612:
				case 613:
				case 614:
				case 615:
				case 616:
				case 617:
				case 618:
				case 619:
				case 620:
				case 621:
				case 622:
				case 623:
				case 624:
				case 625:
				case 626:
				case 627:
				case 628:
				case 629:
				case 630:
				case 631:
				case 632:
				case 633:
				case 634:
				case 635:
				case 636:
				case 637:
				case 638:
				case 639:
				case 640:
				case 641:
				case 642:
				case 643:
				case 644:
				case 645:
				case 646:
				case 647:
				case 648:
				case 649:
				case 650:
				case 651:
				case 652:
				case 653:
				case 654:
				case 655:
				case 656:
				case 657:
				case 658:
				case 659:
				case 660:
				case 661:
				case 662:
				case 663:
				case 664:
				case 665:
				case 666:
				case 667:
				case 668:
				case 669:
				case 670:
				case 671:
				case 672:
				case 673:
				case 674:
				case 675:
				case 676:
				case 677:
				case 678:
				case 679:
				case 680:
				case 681:
				case 682:
				case 683:
				case 684:
				case 685:
				case 686:
				case 687:
				case 688:
				case 689:
				case 690:
				case 691:
				case 692:
				case 693:
				case 696:
				case 697:
				case 698:
				case 699:
				case 700:
				case 701:
				case 702:
				case 703:
				case 704:
				case 705:
				case 706:
				case 707:
				case 708:
				case 709:
				case 710:
				case 711:
				case 712:
				case 713:
				case 714:
				case 715:
				case 716:
				case 717:
				case 718:
				case 719:
				case 720:
				case 721:
				case 722:
				case 723:
				case 724:
				case 725:
				case 726:
				case 727:
				case 728:
				case 729:
				case 730:
				case 731:
				case 732:
				case 733:
				case 734:
				case 735:
				case 736:
				case 737:
				case 738:
				case 739:
				case 740:
				case 741:
				case 742:
				case 743:
				case 744:
				case 745:
				case 746:
				case 747:
				case 748:
				case 749:
				case 750:
				case 751:
				case 752:
				case 753:
				case 754:
				case 755:
				case 756:
				case 757:
				case 758:
				case 759:
				case 760:
				case 761:
				case 762:
				case 763:
				case 764:
				case 765:
				case 766:
				case 767:
				case 768:
				case 769:
				case 770:
				case 771:
				case 772:
				case 773:
				case 774:
				case 775:
				case 776:
				case 777:
				case 778:
				case 779:
				case 780:
				case 781:
				case 782:
				case 783:
				case 784:
				case 785:
				case 786:
				case 787:
				case 788:
				case 789:
				case 790:
				case 791:
				case 792:
				case 793:
				case 794:
				case 795:
				case 796:
				case 797:
				case 798:
				case 799:
				case 800:
				case 801:
				case 802:
				case 803:
				case 804:
				case 805:
				case 806:
				case 807:
				case 808:
				case 809:
				case 810:
				case 811:
				case 812:
				case 813:
				case 814:
				case 815:
				case 816:
				case 817:
				case 818:
				case 819:
				case 820:
				case 821:
				case 822:
				case 823:
				case 824:
				case 825:
				case 826:
				case 827:
				case 828:
				case 829:
				case 830:
				case 831:
				case 832:
				case 833:
				case 834:
				case 835:
				case 836:
				case 837:
				case 838:
				case 839:
				case 840:
				case 841:
				case 842:
				case 843:
				case 844:
				case 845:
				case 846:
				case 847:
				case 848:
				case 849:
				case 850:
				case 851:
				case 852:
				case 853:
				case 854:
				case 855:
				case 856:
				case 857:
				case 858:
				case 859:
				case 860:
				case 861:
				case 862:
				case 863:
				case 864:
				case 865:
				case 866:
				case 867:
				case 868:
				case 869:
				case 870:
				case 871:
				case 872:
				case 873:
				case 874:
				case 875:
				case 876:
				case 877:
				case 878:
				case 879:
				case 880:
				case 881:
				case 882:
				case 883:
				case 884:
				case 885:
				case 886:
				case 887:
				case 888:
				case 889:
				case 890:
				case 891:
				case 892:
				case 893:
				case 894:
				case 895:
				case 896:
				case 897:
				case 898:
				case 899:
				case 900:
				case 901:
				case 902:
				case 903:
				case 904:
				case 905:
				case 906:
				case 907:
				case 908:
				case 909:
				case 910:
				case 911:
				case 912:
				case 913:
				case 914:
				case 915:
				case 916:
				case 917:
				case 918:
				case 919:
				case 920:
				case 921:
				case 922:
				case 923:
				case 924:
				case 925:
				case 926:
				case 927:
				case 928:
				case 929:
				case 930:
				case 931:
				case 932:
				case 933:
				case 934:
				case 935:
				case 936:
				case 937:
				case 938:
				case 939:
				case 940:
				case 941:
				case 942:
				case 943:
				case 944:
				case 945:
				case 946:
				case 947:
				case 948:
				case 949:
				case 950:
				case 951:
				case 952:
				case 953:
				case 954:
				case 955:
				case 956:
				case 957:
				case 958:
				case 959:
				case 960:
				case 961:
				case 962:
				case 963:
				case 964:
				case 965:
				case 966:
				case 967:
				case 968:
				case 969:
				case 970:
				case 971:
				case 972:
				case 973:
				case 974:
				case 975:
				case 976:
				case 977:
				case 978:
				case 979:
				case 980:
				case 981:
				case 982:
				case 983:
				case 984:
				case 985:
				case 986:
				case 987:
				case 988:
				case 989:
				case 990:
				case 991:
				case 992:
				case 993:
				case 1024:
				case 1032:
				case 1035:
				case 1043:
				case 1044:
				case 1046:
				case 1047:
					{
					this.state = 5376;
					this.variableClause();
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				this.state = 5379;
				this.variableClause();
				this.state = 5380;
				this.match(SqlParser.EQUAL_SYMBOL);
				this.state = 5381;
				this.diagnosticsConditionInformationName();
				this.state = 5389;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				while (_la===1022) {
					{
					{
					this.state = 5382;
					this.match(SqlParser.COMMA);
					this.state = 5383;
					this.variableClause();
					this.state = 5384;
					this.match(SqlParser.EQUAL_SYMBOL);
					this.state = 5385;
					this.diagnosticsConditionInformationName();
					}
					}
					this.state = 5391;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
				}
				}
				}
				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 diagnosticsConditionInformationName(): DiagnosticsConditionInformationNameContext {
		let localctx: DiagnosticsConditionInformationNameContext = new DiagnosticsConditionInformationNameContext(this, this._ctx, this.state);
		this.enterRule(localctx, 494, SqlParser.RULE_diagnosticsConditionInformationName);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 5394;
			_la = this._input.LA(1);
			if(!(((((_la - 297)) & ~0x1F) === 0 && ((1 << (_la - 297)) & 34472065) !== 0) || _la===434 || _la===442 || _la===505 || _la===548 || _la===555 || _la===726 || _la===892)) {
			this._errHandler.recoverInline(this);
			}
			else {
				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 describeObjectClause(): DescribeObjectClauseContext {
		let localctx: DescribeObjectClauseContext = new DescribeObjectClauseContext(this, this._ctx, this.state);
		this.enterRule(localctx, 496, SqlParser.RULE_describeObjectClause);
		try {
			this.state = 5406;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case 40:
			case 76:
			case 127:
			case 137:
			case 166:
			case 1020:
				localctx = new DescribeStatementsContext(this, localctx);
				this.enterOuterAlt(localctx, 1);
				{
				this.state = 5401;
				this._errHandler.sync(this);
				switch (this._input.LA(1)) {
				case 137:
				case 1020:
					{
					this.state = 5396;
					this.selectStatement();
					}
					break;
				case 40:
					{
					this.state = 5397;
					this.deleteStatement();
					}
					break;
				case 76:
					{
					this.state = 5398;
					this.insertStatement();
					}
					break;
				case 127:
					{
					this.state = 5399;
					this.replaceStatement();
					}
					break;
				case 166:
					{
					this.state = 5400;
					this.updateStatement();
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				}
				break;
			case 58:
				localctx = new DescribeConnectionContext(this, localctx);
				this.enterOuterAlt(localctx, 2);
				{
				this.state = 5403;
				this.match(SqlParser.FOR);
				this.state = 5404;
				this.match(SqlParser.CONNECTION);
				this.state = 5405;
				this.uid();
				}
				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 fullId(): FullIdContext {
		let localctx: FullIdContext = new FullIdContext(this, this._ctx, this.state);
		this.enterRule(localctx, 498, SqlParser.RULE_fullId);
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 5408;
			this.uid();
			this.state = 5412;
			this._errHandler.sync(this);
			switch ( this._interp.adaptivePredict(this._input, 780, this._ctx) ) {
			case 1:
				{
				this.state = 5409;
				this.match(SqlParser.DOT_ID);
				}
				break;
			case 2:
				{
				this.state = 5410;
				this.match(SqlParser.DOT);
				this.state = 5411;
				this.uid();
				}
				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, this._ctx, this.state);
		this.enterRule(localctx, 500, SqlParser.RULE_tableName);
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 5414;
			this.fullId();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public fullColumnName(): FullColumnNameContext {
		let localctx: FullColumnNameContext = new FullColumnNameContext(this, this._ctx, this.state);
		this.enterRule(localctx, 502, SqlParser.RULE_fullColumnName);
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 5416;
			this.uid();
			this.state = 5421;
			this._errHandler.sync(this);
			switch ( this._interp.adaptivePredict(this._input, 782, this._ctx) ) {
			case 1:
				{
				this.state = 5417;
				this.dottedId();
				this.state = 5419;
				this._errHandler.sync(this);
				switch ( this._interp.adaptivePredict(this._input, 781, this._ctx) ) {
				case 1:
					{
					this.state = 5418;
					this.dottedId();
					}
					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 indexColumnName(): IndexColumnNameContext {
		let localctx: IndexColumnNameContext = new IndexColumnNameContext(this, this._ctx, this.state);
		this.enterRule(localctx, 504, SqlParser.RULE_indexColumnName);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 5425;
			this._errHandler.sync(this);
			switch ( this._interp.adaptivePredict(this._input, 783, this._ctx) ) {
			case 1:
				{
				this.state = 5423;
				this.uid();
				}
				break;
			case 2:
				{
				this.state = 5424;
				this.match(SqlParser.STRING_LITERAL);
				}
				break;
			}
			this.state = 5431;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===1020) {
				{
				this.state = 5427;
				this.match(SqlParser.LR_BRACKET);
				this.state = 5428;
				this.decimalLiteral();
				this.state = 5429;
				this.match(SqlParser.RR_BRACKET);
				}
			}

			this.state = 5434;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===12 || _la===41) {
				{
				this.state = 5433;
				localctx._sortType = this._input.LT(1);
				_la = this._input.LA(1);
				if(!(_la===12 || _la===41)) {
				    localctx._sortType = this._errHandler.recoverInline(this);
				}
				else {
					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 userName(): UserNameContext {
		let localctx: UserNameContext = new UserNameContext(this, this._ctx, this.state);
		this.enterRule(localctx, 506, SqlParser.RULE_userName);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 5436;
			_la = this._input.LA(1);
			if(!(((((_la - 1035)) & ~0x1F) === 0 && ((1 << (_la - 1035)) & 1281) !== 0))) {
			this._errHandler.recoverInline(this);
			}
			else {
				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 mysqlVariable(): MysqlVariableContext {
		let localctx: MysqlVariableContext = new MysqlVariableContext(this, this._ctx, this.state);
		this.enterRule(localctx, 508, SqlParser.RULE_mysqlVariable);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 5438;
			_la = this._input.LA(1);
			if(!(_la===1046 || _la===1047)) {
			this._errHandler.recoverInline(this);
			}
			else {
				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 charsetName(): CharsetNameContext {
		let localctx: CharsetNameContext = new CharsetNameContext(this, this._ctx, this.state);
		this.enterRule(localctx, 510, SqlParser.RULE_charsetName);
		try {
			this.state = 5444;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case 208:
				this.enterOuterAlt(localctx, 1);
				{
				this.state = 5440;
				this.match(SqlParser.BINARY);
				}
				break;
			case 637:
			case 638:
			case 639:
			case 640:
			case 641:
			case 642:
			case 643:
			case 644:
			case 645:
			case 646:
			case 647:
			case 648:
			case 649:
			case 650:
			case 651:
			case 652:
			case 653:
			case 654:
			case 655:
			case 656:
			case 657:
			case 658:
			case 659:
			case 660:
			case 661:
			case 662:
			case 663:
			case 664:
			case 665:
			case 666:
			case 667:
			case 668:
			case 669:
			case 670:
			case 671:
			case 672:
			case 673:
			case 674:
			case 675:
			case 676:
				this.enterOuterAlt(localctx, 2);
				{
				this.state = 5441;
				this.charsetNameBase();
				}
				break;
			case 1035:
				this.enterOuterAlt(localctx, 3);
				{
				this.state = 5442;
				this.match(SqlParser.STRING_LITERAL);
				}
				break;
			case 1032:
				this.enterOuterAlt(localctx, 4);
				{
				this.state = 5443;
				this.match(SqlParser.CHARSET_REVERSE_QOUTE_STRING);
				}
				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 collationName(): CollationNameContext {
		let localctx: CollationNameContext = new CollationNameContext(this, this._ctx, this.state);
		this.enterRule(localctx, 512, SqlParser.RULE_collationName);
		try {
			this.state = 5448;
			this._errHandler.sync(this);
			switch ( this._interp.adaptivePredict(this._input, 787, this._ctx) ) {
			case 1:
				this.enterOuterAlt(localctx, 1);
				{
				this.state = 5446;
				this.uid();
				}
				break;
			case 2:
				this.enterOuterAlt(localctx, 2);
				{
				this.state = 5447;
				this.match(SqlParser.STRING_LITERAL);
				}
				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 engineName(): EngineNameContext {
		let localctx: EngineNameContext = new EngineNameContext(this, this._ctx, this.state);
		this.enterRule(localctx, 514, SqlParser.RULE_engineName);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 5450;
			_la = this._input.LA(1);
			if(!(((((_la - 677)) & ~0x1F) === 0 && ((1 << (_la - 677)) & 4095) !== 0) || ((((_la - 1035)) & ~0x1F) === 0 && ((1 << (_la - 1035)) & 769) !== 0))) {
			this._errHandler.recoverInline(this);
			}
			else {
				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 uuidSet(): UuidSetContext {
		let localctx: UuidSetContext = new UuidSetContext(this, this._ctx, this.state);
		this.enterRule(localctx, 516, SqlParser.RULE_uuidSet);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 5452;
			this.decimalLiteral();
			this.state = 5453;
			this.match(SqlParser.MINUS);
			this.state = 5454;
			this.decimalLiteral();
			this.state = 5455;
			this.match(SqlParser.MINUS);
			this.state = 5456;
			this.decimalLiteral();
			this.state = 5457;
			this.match(SqlParser.MINUS);
			this.state = 5458;
			this.decimalLiteral();
			this.state = 5459;
			this.match(SqlParser.MINUS);
			this.state = 5460;
			this.decimalLiteral();
			this.state = 5466;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			do {
				{
				{
				this.state = 5461;
				this.match(SqlParser.COLON_SYMB);
				this.state = 5462;
				this.decimalLiteral();
				this.state = 5463;
				this.match(SqlParser.MINUS);
				this.state = 5464;
				this.decimalLiteral();
				}
				}
				this.state = 5468;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			} while (_la===1031);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public xid(): XidContext {
		let localctx: XidContext = new XidContext(this, this._ctx, this.state);
		this.enterRule(localctx, 518, SqlParser.RULE_xid);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 5470;
			localctx._globalTableUid = this.xuidStringId();
			this.state = 5477;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===1022) {
				{
				this.state = 5471;
				this.match(SqlParser.COMMA);
				this.state = 5472;
				localctx._qualifier = this.xuidStringId();
				this.state = 5475;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===1022) {
					{
					this.state = 5473;
					this.match(SqlParser.COMMA);
					this.state = 5474;
					localctx._idFormat = this.decimalLiteral();
					}
				}

				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public xuidStringId(): XuidStringIdContext {
		let localctx: XuidStringIdContext = new XuidStringIdContext(this, this._ctx, this.state);
		this.enterRule(localctx, 520, SqlParser.RULE_xuidStringId);
		let _la: number;
		try {
			this.state = 5486;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case 1035:
				this.enterOuterAlt(localctx, 1);
				{
				this.state = 5479;
				this.match(SqlParser.STRING_LITERAL);
				}
				break;
			case 1040:
				this.enterOuterAlt(localctx, 2);
				{
				this.state = 5480;
				this.match(SqlParser.BIT_STRING);
				}
				break;
			case 1037:
				this.enterOuterAlt(localctx, 3);
				{
				this.state = 5482;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				do {
					{
					{
					this.state = 5481;
					this.match(SqlParser.HEXADECIMAL_LITERAL);
					}
					}
					this.state = 5484;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
				} while (_la===1037);
				}
				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 authPlugin(): AuthPluginContext {
		let localctx: AuthPluginContext = new AuthPluginContext(this, this._ctx, this.state);
		this.enterRule(localctx, 522, SqlParser.RULE_authPlugin);
		try {
			this.state = 5490;
			this._errHandler.sync(this);
			switch ( this._interp.adaptivePredict(this._input, 793, this._ctx) ) {
			case 1:
				this.enterOuterAlt(localctx, 1);
				{
				this.state = 5488;
				this.uid();
				}
				break;
			case 2:
				this.enterOuterAlt(localctx, 2);
				{
				this.state = 5489;
				this.match(SqlParser.STRING_LITERAL);
				}
				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 uid(): UidContext {
		let localctx: UidContext = new UidContext(this, this._ctx, this.state);
		this.enterRule(localctx, 524, SqlParser.RULE_uid);
		try {
			this.state = 5495;
			this._errHandler.sync(this);
			switch ( this._interp.adaptivePredict(this._input, 794, this._ctx) ) {
			case 1:
				this.enterOuterAlt(localctx, 1);
				{
				this.state = 5492;
				this.simpleId();
				}
				break;
			case 2:
				this.enterOuterAlt(localctx, 2);
				{
				this.state = 5493;
				this.match(SqlParser.REVERSE_QUOTE_ID);
				}
				break;
			case 3:
				this.enterOuterAlt(localctx, 3);
				{
				this.state = 5494;
				this.match(SqlParser.CHARSET_REVERSE_QOUTE_STRING);
				}
				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 simpleId(): SimpleIdContext {
		let localctx: SimpleIdContext = new SimpleIdContext(this, this._ctx, this.state);
		this.enterRule(localctx, 526, SqlParser.RULE_simpleId);
		try {
			this.state = 5506;
			this._errHandler.sync(this);
			switch ( this._interp.adaptivePredict(this._input, 795, this._ctx) ) {
			case 1:
				this.enterOuterAlt(localctx, 1);
				{
				this.state = 5497;
				this.match(SqlParser.ID);
				}
				break;
			case 2:
				this.enterOuterAlt(localctx, 2);
				{
				this.state = 5498;
				this.charsetNameBase();
				}
				break;
			case 3:
				this.enterOuterAlt(localctx, 3);
				{
				this.state = 5499;
				this.transactionLevelBase();
				}
				break;
			case 4:
				this.enterOuterAlt(localctx, 4);
				{
				this.state = 5500;
				this.engineName();
				}
				break;
			case 5:
				this.enterOuterAlt(localctx, 5);
				{
				this.state = 5501;
				this.privilegesBase();
				}
				break;
			case 6:
				this.enterOuterAlt(localctx, 6);
				{
				this.state = 5502;
				this.intervalTypeBase();
				}
				break;
			case 7:
				this.enterOuterAlt(localctx, 7);
				{
				this.state = 5503;
				this.dataTypeBase();
				}
				break;
			case 8:
				this.enterOuterAlt(localctx, 8);
				{
				this.state = 5504;
				this.keywordsCanBeId();
				}
				break;
			case 9:
				this.enterOuterAlt(localctx, 9);
				{
				this.state = 5505;
				this.functionNameBase();
				}
				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 dottedId(): DottedIdContext {
		let localctx: DottedIdContext = new DottedIdContext(this, this._ctx, this.state);
		this.enterRule(localctx, 528, SqlParser.RULE_dottedId);
		try {
			this.state = 5511;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case 1042:
				this.enterOuterAlt(localctx, 1);
				{
				this.state = 5508;
				this.match(SqlParser.DOT_ID);
				}
				break;
			case 1019:
				this.enterOuterAlt(localctx, 2);
				{
				this.state = 5509;
				this.match(SqlParser.DOT);
				this.state = 5510;
				this.uid();
				}
				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 decimalLiteral(): DecimalLiteralContext {
		let localctx: DecimalLiteralContext = new DecimalLiteralContext(this, this._ctx, this.state);
		this.enterRule(localctx, 530, SqlParser.RULE_decimalLiteral);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 5513;
			_la = this._input.LA(1);
			if(!(((((_la - 1025)) & ~0x1F) === 0 && ((1 << (_la - 1025)) & 2055) !== 0))) {
			this._errHandler.recoverInline(this);
			}
			else {
				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 fileSizeLiteral(): FileSizeLiteralContext {
		let localctx: FileSizeLiteralContext = new FileSizeLiteralContext(this, this._ctx, this.state);
		this.enterRule(localctx, 532, SqlParser.RULE_fileSizeLiteral);
		try {
			this.state = 5517;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case 1033:
				this.enterOuterAlt(localctx, 1);
				{
				this.state = 5515;
				this.match(SqlParser.FILESIZE_LITERAL);
				}
				break;
			case 1025:
			case 1026:
			case 1027:
			case 1036:
				this.enterOuterAlt(localctx, 2);
				{
				this.state = 5516;
				this.decimalLiteral();
				}
				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 stringLiteral(): StringLiteralContext {
		let localctx: StringLiteralContext = new StringLiteralContext(this, this._ctx, this.state);
		this.enterRule(localctx, 534, SqlParser.RULE_stringLiteral);
		let _la: number;
		try {
			let _alt: number;
			this.state = 5542;
			this._errHandler.sync(this);
			switch ( this._interp.adaptivePredict(this._input, 804, this._ctx) ) {
			case 1:
				this.enterOuterAlt(localctx, 1);
				{
				this.state = 5524;
				this._errHandler.sync(this);
				switch (this._input.LA(1)) {
				case 1035:
				case 1041:
					{
					this.state = 5520;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
					if (_la===1041) {
						{
						this.state = 5519;
						this.match(SqlParser.STRING_CHARSET_NAME);
						}
					}

					this.state = 5522;
					this.match(SqlParser.STRING_LITERAL);
					}
					break;
				case 1034:
					{
					this.state = 5523;
					this.match(SqlParser.START_NATIONAL_STRING_LITERAL);
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				this.state = 5527;
				this._errHandler.sync(this);
				_alt = 1;
				do {
					switch (_alt) {
					case 1:
						{
						{
						this.state = 5526;
						this.match(SqlParser.STRING_LITERAL);
						}
						}
						break;
					default:
						throw new NoViableAltException(this);
					}
					this.state = 5529;
					this._errHandler.sync(this);
					_alt = this._interp.adaptivePredict(this._input, 800, this._ctx);
				} while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER);
				}
				break;
			case 2:
				this.enterOuterAlt(localctx, 2);
				{
				this.state = 5536;
				this._errHandler.sync(this);
				switch (this._input.LA(1)) {
				case 1035:
				case 1041:
					{
					this.state = 5532;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
					if (_la===1041) {
						{
						this.state = 5531;
						this.match(SqlParser.STRING_CHARSET_NAME);
						}
					}

					this.state = 5534;
					this.match(SqlParser.STRING_LITERAL);
					}
					break;
				case 1034:
					{
					this.state = 5535;
					this.match(SqlParser.START_NATIONAL_STRING_LITERAL);
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				this.state = 5540;
				this._errHandler.sync(this);
				switch ( this._interp.adaptivePredict(this._input, 803, this._ctx) ) {
				case 1:
					{
					this.state = 5538;
					this.match(SqlParser.COLLATE);
					this.state = 5539;
					this.collationName();
					}
					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 booleanLiteral(): BooleanLiteralContext {
		let localctx: BooleanLiteralContext = new BooleanLiteralContext(this, this._ctx, this.state);
		this.enterRule(localctx, 536, SqlParser.RULE_booleanLiteral);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 5544;
			_la = this._input.LA(1);
			if(!(_la===56 || _la===160)) {
			this._errHandler.recoverInline(this);
			}
			else {
				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 hexadecimalLiteral(): HexadecimalLiteralContext {
		let localctx: HexadecimalLiteralContext = new HexadecimalLiteralContext(this, this._ctx, this.state);
		this.enterRule(localctx, 538, SqlParser.RULE_hexadecimalLiteral);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 5547;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===1041) {
				{
				this.state = 5546;
				this.match(SqlParser.STRING_CHARSET_NAME);
				}
			}

			this.state = 5549;
			this.match(SqlParser.HEXADECIMAL_LITERAL);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public nullNotnull(): NullNotnullContext {
		let localctx: NullNotnullContext = new NullNotnullContext(this, this._ctx, this.state);
		this.enterRule(localctx, 540, SqlParser.RULE_nullNotnull);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 5552;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===102) {
				{
				this.state = 5551;
				this.match(SqlParser.NOT);
				}
			}

			this.state = 5554;
			_la = this._input.LA(1);
			if(!(_la===104 || _la===1039)) {
			this._errHandler.recoverInline(this);
			}
			else {
				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 constant(): ConstantContext {
		let localctx: ConstantContext = new ConstantContext(this, this._ctx, this.state);
		this.enterRule(localctx, 542, SqlParser.RULE_constant);
		let _la: number;
		try {
			this.state = 5568;
			this._errHandler.sync(this);
			switch ( this._interp.adaptivePredict(this._input, 808, this._ctx) ) {
			case 1:
				this.enterOuterAlt(localctx, 1);
				{
				this.state = 5556;
				this.stringLiteral();
				}
				break;
			case 2:
				this.enterOuterAlt(localctx, 2);
				{
				this.state = 5557;
				this.decimalLiteral();
				}
				break;
			case 3:
				this.enterOuterAlt(localctx, 3);
				{
				this.state = 5558;
				this.match(SqlParser.MINUS);
				this.state = 5559;
				this.decimalLiteral();
				}
				break;
			case 4:
				this.enterOuterAlt(localctx, 4);
				{
				this.state = 5560;
				this.hexadecimalLiteral();
				}
				break;
			case 5:
				this.enterOuterAlt(localctx, 5);
				{
				this.state = 5561;
				this.booleanLiteral();
				}
				break;
			case 6:
				this.enterOuterAlt(localctx, 6);
				{
				this.state = 5562;
				this.match(SqlParser.REAL_LITERAL);
				}
				break;
			case 7:
				this.enterOuterAlt(localctx, 7);
				{
				this.state = 5563;
				this.match(SqlParser.BIT_STRING);
				}
				break;
			case 8:
				this.enterOuterAlt(localctx, 8);
				{
				this.state = 5565;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===102) {
					{
					this.state = 5564;
					this.match(SqlParser.NOT);
					}
				}

				this.state = 5567;
				localctx._nullLiteral = this._input.LT(1);
				_la = this._input.LA(1);
				if(!(_la===104 || _la===1039)) {
				    localctx._nullLiteral = this._errHandler.recoverInline(this);
				}
				else {
					this._errHandler.reportMatch(this);
				    this.consume();
				}
				}
				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 dataType(): DataTypeContext {
		let localctx: DataTypeContext = new DataTypeContext(this, this._ctx, this.state);
		this.enterRule(localctx, 544, SqlParser.RULE_dataType);
		let _la: number;
		try {
			this.state = 5697;
			this._errHandler.sync(this);
			switch ( this._interp.adaptivePredict(this._input, 842, this._ctx) ) {
			case 1:
				localctx = new StringDataTypeContext(this, localctx);
				this.enterOuterAlt(localctx, 1);
				{
				this.state = 5570;
				(localctx as StringDataTypeContext)._typeName = this._input.LT(1);
				_la = this._input.LA(1);
				if(!(_la===22 || ((((_la - 204)) & ~0x1F) === 0 && ((1 << (_la - 204)) & 31239) !== 0) || _la===445)) {
				    (localctx as StringDataTypeContext)._typeName = this._errHandler.recoverInline(this);
				}
				else {
					this._errHandler.reportMatch(this);
				    this.consume();
				}
				this.state = 5572;
				this._errHandler.sync(this);
				switch ( this._interp.adaptivePredict(this._input, 809, this._ctx) ) {
				case 1:
					{
					this.state = 5571;
					this.lengthOneDimension();
					}
					break;
				}
				this.state = 5575;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===208) {
					{
					this.state = 5574;
					this.match(SqlParser.BINARY);
					}
				}

				this.state = 5583;
				this._errHandler.sync(this);
				switch ( this._interp.adaptivePredict(this._input, 812, this._ctx) ) {
				case 1:
					{
					this.state = 5580;
					this._errHandler.sync(this);
					switch (this._input.LA(1)) {
					case 22:
						{
						this.state = 5577;
						this.match(SqlParser.CHARACTER);
						this.state = 5578;
						this.match(SqlParser.SET);
						}
						break;
					case 731:
						{
						this.state = 5579;
						this.match(SqlParser.CHARSET);
						}
						break;
					default:
						throw new NoViableAltException(this);
					}
					this.state = 5582;
					this.charsetName();
					}
					break;
				}
				this.state = 5587;
				this._errHandler.sync(this);
				switch ( this._interp.adaptivePredict(this._input, 813, this._ctx) ) {
				case 1:
					{
					this.state = 5585;
					this.match(SqlParser.COLLATE);
					this.state = 5586;
					this.collationName();
					}
					break;
				}
				}
				break;
			case 2:
				localctx = new NationalStringDataTypeContext(this, localctx);
				this.enterOuterAlt(localctx, 2);
				{
				this.state = 5589;
				this.match(SqlParser.NATIONAL);
				this.state = 5590;
				(localctx as NationalStringDataTypeContext)._typeName = this._input.LT(1);
				_la = this._input.LA(1);
				if(!(_la===22 || _la===205)) {
				    (localctx as NationalStringDataTypeContext)._typeName = this._errHandler.recoverInline(this);
				}
				else {
					this._errHandler.reportMatch(this);
				    this.consume();
				}
				this.state = 5592;
				this._errHandler.sync(this);
				switch ( this._interp.adaptivePredict(this._input, 814, this._ctx) ) {
				case 1:
					{
					this.state = 5591;
					this.lengthOneDimension();
					}
					break;
				}
				this.state = 5595;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===208) {
					{
					this.state = 5594;
					this.match(SqlParser.BINARY);
					}
				}

				}
				break;
			case 3:
				localctx = new NationalStringDataTypeContext(this, localctx);
				this.enterOuterAlt(localctx, 3);
				{
				this.state = 5597;
				this.match(SqlParser.NCHAR);
				this.state = 5598;
				(localctx as NationalStringDataTypeContext)._typeName = this.match(SqlParser.VARCHAR);
				this.state = 5600;
				this._errHandler.sync(this);
				switch ( this._interp.adaptivePredict(this._input, 816, this._ctx) ) {
				case 1:
					{
					this.state = 5599;
					this.lengthOneDimension();
					}
					break;
				}
				this.state = 5603;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===208) {
					{
					this.state = 5602;
					this.match(SqlParser.BINARY);
					}
				}

				}
				break;
			case 4:
				localctx = new NationalVaryingStringDataTypeContext(this, localctx);
				this.enterOuterAlt(localctx, 4);
				{
				this.state = 5605;
				this.match(SqlParser.NATIONAL);
				this.state = 5606;
				(localctx as NationalVaryingStringDataTypeContext)._typeName = this._input.LT(1);
				_la = this._input.LA(1);
				if(!(_la===22 || _la===204)) {
				    (localctx as NationalVaryingStringDataTypeContext)._typeName = this._errHandler.recoverInline(this);
				}
				else {
					this._errHandler.reportMatch(this);
				    this.consume();
				}
				this.state = 5607;
				this.match(SqlParser.VARYING);
				this.state = 5609;
				this._errHandler.sync(this);
				switch ( this._interp.adaptivePredict(this._input, 818, this._ctx) ) {
				case 1:
					{
					this.state = 5608;
					this.lengthOneDimension();
					}
					break;
				}
				this.state = 5612;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===208) {
					{
					this.state = 5611;
					this.match(SqlParser.BINARY);
					}
				}

				}
				break;
			case 5:
				localctx = new DimensionDataTypeContext(this, localctx);
				this.enterOuterAlt(localctx, 5);
				{
				this.state = 5614;
				(localctx as DimensionDataTypeContext)._typeName = this._input.LT(1);
				_la = this._input.LA(1);
				if(!(((((_la - 178)) & ~0x1F) === 0 && ((1 << (_la - 178)) & 4095) !== 0))) {
				    (localctx as DimensionDataTypeContext)._typeName = this._errHandler.recoverInline(this);
				}
				else {
					this._errHandler.reportMatch(this);
				    this.consume();
				}
				this.state = 5616;
				this._errHandler.sync(this);
				switch ( this._interp.adaptivePredict(this._input, 820, this._ctx) ) {
				case 1:
					{
					this.state = 5615;
					this.lengthOneDimension();
					}
					break;
				}
				this.state = 5619;
				this._errHandler.sync(this);
				switch ( this._interp.adaptivePredict(this._input, 821, this._ctx) ) {
				case 1:
					{
					this.state = 5618;
					_la = this._input.LA(1);
					if(!(_la===165 || _la===521)) {
					this._errHandler.recoverInline(this);
					}
					else {
						this._errHandler.reportMatch(this);
					    this.consume();
					}
					}
					break;
				}
				this.state = 5622;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===177) {
					{
					this.state = 5621;
					this.match(SqlParser.ZEROFILL);
					}
				}

				}
				break;
			case 6:
				localctx = new DimensionDataTypeContext(this, localctx);
				this.enterOuterAlt(localctx, 6);
				{
				this.state = 5624;
				(localctx as DimensionDataTypeContext)._typeName = this.match(SqlParser.REAL);
				this.state = 5626;
				this._errHandler.sync(this);
				switch ( this._interp.adaptivePredict(this._input, 823, this._ctx) ) {
				case 1:
					{
					this.state = 5625;
					this.lengthTwoDimension();
					}
					break;
				}
				this.state = 5629;
				this._errHandler.sync(this);
				switch ( this._interp.adaptivePredict(this._input, 824, this._ctx) ) {
				case 1:
					{
					this.state = 5628;
					_la = this._input.LA(1);
					if(!(_la===165 || _la===521)) {
					this._errHandler.recoverInline(this);
					}
					else {
						this._errHandler.reportMatch(this);
					    this.consume();
					}
					}
					break;
				}
				this.state = 5632;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===177) {
					{
					this.state = 5631;
					this.match(SqlParser.ZEROFILL);
					}
				}

				}
				break;
			case 7:
				localctx = new DimensionDataTypeContext(this, localctx);
				this.enterOuterAlt(localctx, 7);
				{
				this.state = 5634;
				(localctx as DimensionDataTypeContext)._typeName = this.match(SqlParser.DOUBLE);
				this.state = 5636;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===192) {
					{
					this.state = 5635;
					this.match(SqlParser.PRECISION);
					}
				}

				this.state = 5639;
				this._errHandler.sync(this);
				switch ( this._interp.adaptivePredict(this._input, 827, this._ctx) ) {
				case 1:
					{
					this.state = 5638;
					this.lengthTwoDimension();
					}
					break;
				}
				this.state = 5642;
				this._errHandler.sync(this);
				switch ( this._interp.adaptivePredict(this._input, 828, this._ctx) ) {
				case 1:
					{
					this.state = 5641;
					_la = this._input.LA(1);
					if(!(_la===165 || _la===521)) {
					this._errHandler.recoverInline(this);
					}
					else {
						this._errHandler.reportMatch(this);
					    this.consume();
					}
					}
					break;
				}
				this.state = 5645;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===177) {
					{
					this.state = 5644;
					this.match(SqlParser.ZEROFILL);
					}
				}

				}
				break;
			case 8:
				localctx = new DimensionDataTypeContext(this, localctx);
				this.enterOuterAlt(localctx, 8);
				{
				this.state = 5647;
				(localctx as DimensionDataTypeContext)._typeName = this._input.LT(1);
				_la = this._input.LA(1);
				if(!(((((_la - 193)) & ~0x1F) === 0 && ((1 << (_la - 193)) & 63) !== 0) || _la===363)) {
				    (localctx as DimensionDataTypeContext)._typeName = this._errHandler.recoverInline(this);
				}
				else {
					this._errHandler.reportMatch(this);
				    this.consume();
				}
				this.state = 5649;
				this._errHandler.sync(this);
				switch ( this._interp.adaptivePredict(this._input, 830, this._ctx) ) {
				case 1:
					{
					this.state = 5648;
					this.lengthTwoOptionalDimension();
					}
					break;
				}
				this.state = 5652;
				this._errHandler.sync(this);
				switch ( this._interp.adaptivePredict(this._input, 831, this._ctx) ) {
				case 1:
					{
					this.state = 5651;
					_la = this._input.LA(1);
					if(!(_la===165 || _la===521)) {
					this._errHandler.recoverInline(this);
					}
					else {
						this._errHandler.reportMatch(this);
					    this.consume();
					}
					}
					break;
				}
				this.state = 5655;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===177) {
					{
					this.state = 5654;
					this.match(SqlParser.ZEROFILL);
					}
				}

				}
				break;
			case 9:
				localctx = new SimpleDataTypeContext(this, localctx);
				this.enterOuterAlt(localctx, 9);
				{
				this.state = 5657;
				(localctx as SimpleDataTypeContext)._typeName = this._input.LT(1);
				_la = this._input.LA(1);
				if(!(((((_la - 199)) & ~0x1F) === 0 && ((1 << (_la - 199)) & 4241409) !== 0) || _la===286 || _la===287)) {
				    (localctx as SimpleDataTypeContext)._typeName = this._errHandler.recoverInline(this);
				}
				else {
					this._errHandler.reportMatch(this);
				    this.consume();
				}
				}
				break;
			case 10:
				localctx = new DimensionDataTypeContext(this, localctx);
				this.enterOuterAlt(localctx, 10);
				{
				this.state = 5658;
				(localctx as DimensionDataTypeContext)._typeName = this._input.LT(1);
				_la = this._input.LA(1);
				if(!(((((_la - 200)) & ~0x1F) === 0 && ((1 << (_la - 200)) & 783) !== 0) || _la===284)) {
				    (localctx as DimensionDataTypeContext)._typeName = this._errHandler.recoverInline(this);
				}
				else {
					this._errHandler.reportMatch(this);
				    this.consume();
				}
				this.state = 5660;
				this._errHandler.sync(this);
				switch ( this._interp.adaptivePredict(this._input, 833, this._ctx) ) {
				case 1:
					{
					this.state = 5659;
					this.lengthOneDimension();
					}
					break;
				}
				}
				break;
			case 11:
				localctx = new CollectionDataTypeContext(this, localctx);
				this.enterOuterAlt(localctx, 11);
				{
				this.state = 5662;
				(localctx as CollectionDataTypeContext)._typeName = this._input.LT(1);
				_la = this._input.LA(1);
				if(!(_la===138 || _la===219)) {
				    (localctx as CollectionDataTypeContext)._typeName = this._errHandler.recoverInline(this);
				}
				else {
					this._errHandler.reportMatch(this);
				    this.consume();
				}
				this.state = 5663;
				this.collectionOptions();
				this.state = 5665;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===208) {
					{
					this.state = 5664;
					this.match(SqlParser.BINARY);
					}
				}

				this.state = 5673;
				this._errHandler.sync(this);
				switch ( this._interp.adaptivePredict(this._input, 836, this._ctx) ) {
				case 1:
					{
					this.state = 5670;
					this._errHandler.sync(this);
					switch (this._input.LA(1)) {
					case 22:
						{
						this.state = 5667;
						this.match(SqlParser.CHARACTER);
						this.state = 5668;
						this.match(SqlParser.SET);
						}
						break;
					case 731:
						{
						this.state = 5669;
						this.match(SqlParser.CHARSET);
						}
						break;
					default:
						throw new NoViableAltException(this);
					}
					this.state = 5672;
					this.charsetName();
					}
					break;
				}
				}
				break;
			case 12:
				localctx = new SpatialDataTypeContext(this, localctx);
				this.enterOuterAlt(localctx, 12);
				{
				this.state = 5675;
				(localctx as SpatialDataTypeContext)._typeName = this._input.LT(1);
				_la = this._input.LA(1);
				if(!(_la===394 || ((((_la - 693)) & ~0x1F) === 0 && ((1 << (_la - 693)) & 511) !== 0))) {
				    (localctx as SpatialDataTypeContext)._typeName = this._errHandler.recoverInline(this);
				}
				else {
					this._errHandler.reportMatch(this);
				    this.consume();
				}
				}
				break;
			case 13:
				localctx = new LongVarcharDataTypeContext(this, localctx);
				this.enterOuterAlt(localctx, 13);
				{
				this.state = 5676;
				(localctx as LongVarcharDataTypeContext)._typeName = this.match(SqlParser.LONG);
				this.state = 5678;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===205) {
					{
					this.state = 5677;
					this.match(SqlParser.VARCHAR);
					}
				}

				this.state = 5681;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===208) {
					{
					this.state = 5680;
					this.match(SqlParser.BINARY);
					}
				}

				this.state = 5689;
				this._errHandler.sync(this);
				switch ( this._interp.adaptivePredict(this._input, 840, this._ctx) ) {
				case 1:
					{
					this.state = 5686;
					this._errHandler.sync(this);
					switch (this._input.LA(1)) {
					case 22:
						{
						this.state = 5683;
						this.match(SqlParser.CHARACTER);
						this.state = 5684;
						this.match(SqlParser.SET);
						}
						break;
					case 731:
						{
						this.state = 5685;
						this.match(SqlParser.CHARSET);
						}
						break;
					default:
						throw new NoViableAltException(this);
					}
					this.state = 5688;
					this.charsetName();
					}
					break;
				}
				this.state = 5693;
				this._errHandler.sync(this);
				switch ( this._interp.adaptivePredict(this._input, 841, this._ctx) ) {
				case 1:
					{
					this.state = 5691;
					this.match(SqlParser.COLLATE);
					this.state = 5692;
					this.collationName();
					}
					break;
				}
				}
				break;
			case 14:
				localctx = new LongVarbinaryDataTypeContext(this, localctx);
				this.enterOuterAlt(localctx, 14);
				{
				this.state = 5695;
				this.match(SqlParser.LONG);
				this.state = 5696;
				this.match(SqlParser.VARBINARY);
				}
				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 collectionOptions(): CollectionOptionsContext {
		let localctx: CollectionOptionsContext = new CollectionOptionsContext(this, this._ctx, this.state);
		this.enterRule(localctx, 546, SqlParser.RULE_collectionOptions);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 5699;
			this.match(SqlParser.LR_BRACKET);
			this.state = 5700;
			this.match(SqlParser.STRING_LITERAL);
			this.state = 5705;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la===1022) {
				{
				{
				this.state = 5701;
				this.match(SqlParser.COMMA);
				this.state = 5702;
				this.match(SqlParser.STRING_LITERAL);
				}
				}
				this.state = 5707;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			}
			this.state = 5708;
			this.match(SqlParser.RR_BRACKET);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public convertedDataType(): ConvertedDataTypeContext {
		let localctx: ConvertedDataTypeContext = new ConvertedDataTypeContext(this, this._ctx, this.state);
		this.enterRule(localctx, 548, SqlParser.RULE_convertedDataType);
		let _la: number;
		try {
			this.state = 5735;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case 208:
			case 445:
				this.enterOuterAlt(localctx, 1);
				{
				this.state = 5710;
				localctx._typeName = this._input.LT(1);
				_la = this._input.LA(1);
				if(!(_la===208 || _la===445)) {
				    localctx._typeName = this._errHandler.recoverInline(this);
				}
				else {
					this._errHandler.reportMatch(this);
				    this.consume();
				}
				this.state = 5712;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===1020) {
					{
					this.state = 5711;
					this.lengthOneDimension();
					}
				}

				}
				break;
			case 204:
				this.enterOuterAlt(localctx, 2);
				{
				this.state = 5714;
				localctx._typeName = this.match(SqlParser.CHAR);
				this.state = 5716;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===1020) {
					{
					this.state = 5715;
					this.lengthOneDimension();
					}
				}

				this.state = 5724;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===22 || _la===731) {
					{
					this.state = 5721;
					this._errHandler.sync(this);
					switch (this._input.LA(1)) {
					case 22:
						{
						this.state = 5718;
						this.match(SqlParser.CHARACTER);
						this.state = 5719;
						this.match(SqlParser.SET);
						}
						break;
					case 731:
						{
						this.state = 5720;
						this.match(SqlParser.CHARSET);
						}
						break;
					default:
						throw new NoViableAltException(this);
					}
					this.state = 5723;
					this.charsetName();
					}
				}

				}
				break;
			case 199:
			case 200:
			case 202:
			case 394:
				this.enterOuterAlt(localctx, 3);
				{
				this.state = 5726;
				localctx._typeName = this._input.LT(1);
				_la = this._input.LA(1);
				if(!(((((_la - 199)) & ~0x1F) === 0 && ((1 << (_la - 199)) & 11) !== 0) || _la===394)) {
				    localctx._typeName = this._errHandler.recoverInline(this);
				}
				else {
					this._errHandler.reportMatch(this);
				    this.consume();
				}
				}
				break;
			case 196:
				this.enterOuterAlt(localctx, 4);
				{
				this.state = 5727;
				localctx._typeName = this.match(SqlParser.DECIMAL);
				this.state = 5729;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===1020) {
					{
					this.state = 5728;
					this.lengthTwoDimension();
					}
				}

				}
				break;
			case 165:
			case 521:
				this.enterOuterAlt(localctx, 5);
				{
				this.state = 5731;
				_la = this._input.LA(1);
				if(!(_la===165 || _la===521)) {
				this._errHandler.recoverInline(this);
				}
				else {
					this._errHandler.reportMatch(this);
				    this.consume();
				}
				this.state = 5733;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===188) {
					{
					this.state = 5732;
					this.match(SqlParser.INTEGER);
					}
				}

				}
				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 lengthOneDimension(): LengthOneDimensionContext {
		let localctx: LengthOneDimensionContext = new LengthOneDimensionContext(this, this._ctx, this.state);
		this.enterRule(localctx, 550, SqlParser.RULE_lengthOneDimension);
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 5737;
			this.match(SqlParser.LR_BRACKET);
			this.state = 5738;
			this.decimalLiteral();
			this.state = 5739;
			this.match(SqlParser.RR_BRACKET);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public lengthTwoDimension(): LengthTwoDimensionContext {
		let localctx: LengthTwoDimensionContext = new LengthTwoDimensionContext(this, this._ctx, this.state);
		this.enterRule(localctx, 552, SqlParser.RULE_lengthTwoDimension);
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 5741;
			this.match(SqlParser.LR_BRACKET);
			this.state = 5742;
			this.decimalLiteral();
			this.state = 5743;
			this.match(SqlParser.COMMA);
			this.state = 5744;
			this.decimalLiteral();
			this.state = 5745;
			this.match(SqlParser.RR_BRACKET);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public lengthTwoOptionalDimension(): LengthTwoOptionalDimensionContext {
		let localctx: LengthTwoOptionalDimensionContext = new LengthTwoOptionalDimensionContext(this, this._ctx, this.state);
		this.enterRule(localctx, 554, SqlParser.RULE_lengthTwoOptionalDimension);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 5747;
			this.match(SqlParser.LR_BRACKET);
			this.state = 5748;
			this.decimalLiteral();
			this.state = 5751;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===1022) {
				{
				this.state = 5749;
				this.match(SqlParser.COMMA);
				this.state = 5750;
				this.decimalLiteral();
				}
			}

			this.state = 5753;
			this.match(SqlParser.RR_BRACKET);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public uidList(): UidListContext {
		let localctx: UidListContext = new UidListContext(this, this._ctx, this.state);
		this.enterRule(localctx, 556, SqlParser.RULE_uidList);
		try {
			let _alt: number;
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 5755;
			this.uid();
			this.state = 5760;
			this._errHandler.sync(this);
			_alt = this._interp.adaptivePredict(this._input, 852, this._ctx);
			while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) {
				if (_alt === 1) {
					{
					{
					this.state = 5756;
					this.match(SqlParser.COMMA);
					this.state = 5757;
					this.uid();
					}
					}
				}
				this.state = 5762;
				this._errHandler.sync(this);
				_alt = this._interp.adaptivePredict(this._input, 852, 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 tables(): TablesContext {
		let localctx: TablesContext = new TablesContext(this, this._ctx, this.state);
		this.enterRule(localctx, 558, SqlParser.RULE_tables);
		try {
			let _alt: number;
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 5763;
			this.tableName();
			this.state = 5768;
			this._errHandler.sync(this);
			_alt = this._interp.adaptivePredict(this._input, 853, this._ctx);
			while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) {
				if (_alt === 1) {
					{
					{
					this.state = 5764;
					this.match(SqlParser.COMMA);
					this.state = 5765;
					this.tableName();
					}
					}
				}
				this.state = 5770;
				this._errHandler.sync(this);
				_alt = this._interp.adaptivePredict(this._input, 853, 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 indexColumnNames(): IndexColumnNamesContext {
		let localctx: IndexColumnNamesContext = new IndexColumnNamesContext(this, this._ctx, this.state);
		this.enterRule(localctx, 560, SqlParser.RULE_indexColumnNames);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 5771;
			this.match(SqlParser.LR_BRACKET);
			this.state = 5772;
			this.indexColumnName();
			this.state = 5777;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la===1022) {
				{
				{
				this.state = 5773;
				this.match(SqlParser.COMMA);
				this.state = 5774;
				this.indexColumnName();
				}
				}
				this.state = 5779;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			}
			this.state = 5780;
			this.match(SqlParser.RR_BRACKET);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				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, this._ctx, this.state);
		this.enterRule(localctx, 562, SqlParser.RULE_expressions);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 5782;
			this.expression(0);
			this.state = 5787;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la===1022) {
				{
				{
				this.state = 5783;
				this.match(SqlParser.COMMA);
				this.state = 5784;
				this.expression(0);
				}
				}
				this.state = 5789;
				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 expressionsWithDefaults(): ExpressionsWithDefaultsContext {
		let localctx: ExpressionsWithDefaultsContext = new ExpressionsWithDefaultsContext(this, this._ctx, this.state);
		this.enterRule(localctx, 564, SqlParser.RULE_expressionsWithDefaults);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 5790;
			this.expressionOrDefault();
			this.state = 5795;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la===1022) {
				{
				{
				this.state = 5791;
				this.match(SqlParser.COMMA);
				this.state = 5792;
				this.expressionOrDefault();
				}
				}
				this.state = 5797;
				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 constants(): ConstantsContext {
		let localctx: ConstantsContext = new ConstantsContext(this, this._ctx, this.state);
		this.enterRule(localctx, 566, SqlParser.RULE_constants);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 5798;
			this.constant();
			this.state = 5803;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la===1022) {
				{
				{
				this.state = 5799;
				this.match(SqlParser.COMMA);
				this.state = 5800;
				this.constant();
				}
				}
				this.state = 5805;
				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 simpleStrings(): SimpleStringsContext {
		let localctx: SimpleStringsContext = new SimpleStringsContext(this, this._ctx, this.state);
		this.enterRule(localctx, 568, SqlParser.RULE_simpleStrings);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 5806;
			this.match(SqlParser.STRING_LITERAL);
			this.state = 5811;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la===1022) {
				{
				{
				this.state = 5807;
				this.match(SqlParser.COMMA);
				this.state = 5808;
				this.match(SqlParser.STRING_LITERAL);
				}
				}
				this.state = 5813;
				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 userVariables(): UserVariablesContext {
		let localctx: UserVariablesContext = new UserVariablesContext(this, this._ctx, this.state);
		this.enterRule(localctx, 570, SqlParser.RULE_userVariables);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 5814;
			this.match(SqlParser.LOCAL_ID);
			this.state = 5819;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la===1022) {
				{
				{
				this.state = 5815;
				this.match(SqlParser.COMMA);
				this.state = 5816;
				this.match(SqlParser.LOCAL_ID);
				}
				}
				this.state = 5821;
				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 defaultValue(): DefaultValueContext {
		let localctx: DefaultValueContext = new DefaultValueContext(this, this._ctx, this.state);
		this.enterRule(localctx, 572, SqlParser.RULE_defaultValue);
		try {
			this.state = 5833;
			this._errHandler.sync(this);
			switch ( this._interp.adaptivePredict(this._input, 862, this._ctx) ) {
			case 1:
				this.enterOuterAlt(localctx, 1);
				{
				this.state = 5822;
				this.match(SqlParser.NULL_LITERAL);
				}
				break;
			case 2:
				this.enterOuterAlt(localctx, 2);
				{
				this.state = 5824;
				this._errHandler.sync(this);
				switch ( this._interp.adaptivePredict(this._input, 860, this._ctx) ) {
				case 1:
					{
					this.state = 5823;
					this.unaryOperator();
					}
					break;
				}
				this.state = 5826;
				this.constant();
				}
				break;
			case 3:
				this.enterOuterAlt(localctx, 3);
				{
				this.state = 5827;
				this.currentTimestamp();
				this.state = 5831;
				this._errHandler.sync(this);
				switch ( this._interp.adaptivePredict(this._input, 861, this._ctx) ) {
				case 1:
					{
					this.state = 5828;
					this.match(SqlParser.ON);
					this.state = 5829;
					this.match(SqlParser.UPDATE);
					this.state = 5830;
					this.currentTimestamp();
					}
					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 currentTimestamp(): CurrentTimestampContext {
		let localctx: CurrentTimestampContext = new CurrentTimestampContext(this, this._ctx, this.state);
		this.enterRule(localctx, 574, SqlParser.RULE_currentTimestamp);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 5849;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case 253:
			case 254:
			case 260:
				{
				this.state = 5835;
				_la = this._input.LA(1);
				if(!(((((_la - 253)) & ~0x1F) === 0 && ((1 << (_la - 253)) & 131) !== 0))) {
				this._errHandler.recoverInline(this);
				}
				else {
					this._errHandler.reportMatch(this);
				    this.consume();
				}
				this.state = 5841;
				this._errHandler.sync(this);
				switch ( this._interp.adaptivePredict(this._input, 864, this._ctx) ) {
				case 1:
					{
					this.state = 5836;
					this.match(SqlParser.LR_BRACKET);
					this.state = 5838;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
					if (((((_la - 1025)) & ~0x1F) === 0 && ((1 << (_la - 1025)) & 2055) !== 0)) {
						{
						this.state = 5837;
						this.decimalLiteral();
						}
					}

					this.state = 5840;
					this.match(SqlParser.RR_BRACKET);
					}
					break;
				}
				}
				break;
			case 261:
				{
				this.state = 5843;
				this.match(SqlParser.NOW);
				this.state = 5844;
				this.match(SqlParser.LR_BRACKET);
				this.state = 5846;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (((((_la - 1025)) & ~0x1F) === 0 && ((1 << (_la - 1025)) & 2055) !== 0)) {
					{
					this.state = 5845;
					this.decimalLiteral();
					}
				}

				this.state = 5848;
				this.match(SqlParser.RR_BRACKET);
				}
				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 expressionOrDefault(): ExpressionOrDefaultContext {
		let localctx: ExpressionOrDefaultContext = new ExpressionOrDefaultContext(this, this._ctx, this.state);
		this.enterRule(localctx, 576, SqlParser.RULE_expressionOrDefault);
		try {
			this.state = 5853;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case 19:
			case 20:
			case 29:
			case 32:
			case 33:
			case 35:
			case 44:
			case 53:
			case 56:
			case 69:
			case 76:
			case 77:
			case 87:
			case 102:
			case 104:
			case 105:
			case 127:
			case 133:
			case 151:
			case 160:
			case 170:
			case 199:
			case 200:
			case 201:
			case 202:
			case 203:
			case 204:
			case 208:
			case 216:
			case 219:
			case 221:
			case 233:
			case 234:
			case 235:
			case 236:
			case 237:
			case 238:
			case 239:
			case 240:
			case 241:
			case 242:
			case 243:
			case 244:
			case 245:
			case 246:
			case 247:
			case 248:
			case 249:
			case 250:
			case 251:
			case 252:
			case 253:
			case 254:
			case 255:
			case 256:
			case 257:
			case 258:
			case 259:
			case 260:
			case 261:
			case 262:
			case 263:
			case 264:
			case 265:
			case 266:
			case 267:
			case 268:
			case 269:
			case 270:
			case 271:
			case 272:
			case 273:
			case 274:
			case 275:
			case 276:
			case 277:
			case 278:
			case 279:
			case 280:
			case 281:
			case 282:
			case 283:
			case 284:
			case 285:
			case 286:
			case 287:
			case 288:
			case 289:
			case 290:
			case 291:
			case 292:
			case 293:
			case 294:
			case 295:
			case 296:
			case 297:
			case 298:
			case 299:
			case 300:
			case 301:
			case 302:
			case 303:
			case 304:
			case 305:
			case 306:
			case 307:
			case 308:
			case 309:
			case 310:
			case 311:
			case 312:
			case 313:
			case 314:
			case 315:
			case 316:
			case 317:
			case 318:
			case 319:
			case 320:
			case 321:
			case 322:
			case 323:
			case 324:
			case 325:
			case 326:
			case 327:
			case 328:
			case 329:
			case 330:
			case 331:
			case 332:
			case 333:
			case 334:
			case 335:
			case 336:
			case 337:
			case 338:
			case 339:
			case 340:
			case 341:
			case 342:
			case 343:
			case 344:
			case 345:
			case 346:
			case 347:
			case 348:
			case 349:
			case 350:
			case 351:
			case 352:
			case 353:
			case 354:
			case 355:
			case 356:
			case 357:
			case 358:
			case 359:
			case 360:
			case 361:
			case 362:
			case 363:
			case 364:
			case 365:
			case 366:
			case 367:
			case 368:
			case 369:
			case 370:
			case 371:
			case 372:
			case 373:
			case 374:
			case 375:
			case 376:
			case 377:
			case 378:
			case 379:
			case 380:
			case 381:
			case 382:
			case 383:
			case 384:
			case 385:
			case 386:
			case 387:
			case 388:
			case 389:
			case 390:
			case 391:
			case 392:
			case 393:
			case 394:
			case 395:
			case 396:
			case 397:
			case 398:
			case 399:
			case 400:
			case 401:
			case 402:
			case 403:
			case 404:
			case 405:
			case 406:
			case 407:
			case 408:
			case 409:
			case 410:
			case 411:
			case 412:
			case 413:
			case 414:
			case 415:
			case 416:
			case 417:
			case 418:
			case 419:
			case 420:
			case 421:
			case 422:
			case 423:
			case 424:
			case 425:
			case 426:
			case 427:
			case 428:
			case 429:
			case 430:
			case 431:
			case 432:
			case 433:
			case 434:
			case 435:
			case 436:
			case 437:
			case 438:
			case 439:
			case 440:
			case 441:
			case 442:
			case 443:
			case 444:
			case 445:
			case 446:
			case 447:
			case 448:
			case 449:
			case 450:
			case 451:
			case 452:
			case 453:
			case 454:
			case 455:
			case 456:
			case 457:
			case 458:
			case 459:
			case 460:
			case 461:
			case 462:
			case 463:
			case 464:
			case 465:
			case 466:
			case 467:
			case 468:
			case 469:
			case 470:
			case 471:
			case 472:
			case 473:
			case 474:
			case 475:
			case 476:
			case 477:
			case 478:
			case 479:
			case 480:
			case 481:
			case 482:
			case 483:
			case 484:
			case 485:
			case 486:
			case 487:
			case 488:
			case 489:
			case 490:
			case 491:
			case 492:
			case 493:
			case 494:
			case 495:
			case 496:
			case 497:
			case 498:
			case 499:
			case 500:
			case 501:
			case 502:
			case 503:
			case 504:
			case 505:
			case 506:
			case 507:
			case 508:
			case 509:
			case 510:
			case 511:
			case 512:
			case 513:
			case 514:
			case 515:
			case 516:
			case 517:
			case 518:
			case 519:
			case 520:
			case 521:
			case 522:
			case 523:
			case 524:
			case 525:
			case 526:
			case 527:
			case 528:
			case 529:
			case 530:
			case 531:
			case 532:
			case 533:
			case 534:
			case 535:
			case 536:
			case 537:
			case 538:
			case 539:
			case 540:
			case 541:
			case 542:
			case 543:
			case 544:
			case 545:
			case 547:
			case 548:
			case 549:
			case 550:
			case 551:
			case 552:
			case 553:
			case 554:
			case 555:
			case 556:
			case 557:
			case 558:
			case 559:
			case 560:
			case 561:
			case 562:
			case 563:
			case 564:
			case 565:
			case 566:
			case 567:
			case 568:
			case 569:
			case 570:
			case 571:
			case 572:
			case 573:
			case 574:
			case 575:
			case 576:
			case 577:
			case 578:
			case 580:
			case 581:
			case 582:
			case 583:
			case 584:
			case 585:
			case 586:
			case 587:
			case 588:
			case 593:
			case 594:
			case 595:
			case 596:
			case 597:
			case 598:
			case 599:
			case 600:
			case 601:
			case 602:
			case 603:
			case 604:
			case 605:
			case 606:
			case 607:
			case 608:
			case 609:
			case 610:
			case 612:
			case 613:
			case 614:
			case 615:
			case 616:
			case 617:
			case 618:
			case 619:
			case 620:
			case 621:
			case 622:
			case 623:
			case 624:
			case 625:
			case 626:
			case 627:
			case 628:
			case 629:
			case 630:
			case 631:
			case 632:
			case 633:
			case 634:
			case 635:
			case 636:
			case 637:
			case 638:
			case 639:
			case 640:
			case 641:
			case 642:
			case 643:
			case 644:
			case 645:
			case 646:
			case 647:
			case 648:
			case 649:
			case 650:
			case 651:
			case 652:
			case 653:
			case 654:
			case 655:
			case 656:
			case 657:
			case 658:
			case 659:
			case 660:
			case 661:
			case 662:
			case 663:
			case 664:
			case 665:
			case 666:
			case 667:
			case 668:
			case 669:
			case 670:
			case 671:
			case 672:
			case 673:
			case 674:
			case 675:
			case 676:
			case 677:
			case 678:
			case 679:
			case 680:
			case 681:
			case 682:
			case 683:
			case 684:
			case 685:
			case 686:
			case 687:
			case 688:
			case 689:
			case 690:
			case 691:
			case 692:
			case 693:
			case 696:
			case 697:
			case 698:
			case 699:
			case 700:
			case 701:
			case 702:
			case 703:
			case 704:
			case 705:
			case 706:
			case 707:
			case 708:
			case 709:
			case 710:
			case 711:
			case 712:
			case 713:
			case 714:
			case 715:
			case 716:
			case 717:
			case 718:
			case 719:
			case 720:
			case 721:
			case 722:
			case 723:
			case 724:
			case 725:
			case 726:
			case 727:
			case 728:
			case 729:
			case 730:
			case 731:
			case 732:
			case 733:
			case 734:
			case 735:
			case 736:
			case 737:
			case 738:
			case 739:
			case 740:
			case 741:
			case 742:
			case 743:
			case 744:
			case 745:
			case 746:
			case 747:
			case 748:
			case 749:
			case 750:
			case 751:
			case 752:
			case 753:
			case 754:
			case 755:
			case 756:
			case 757:
			case 758:
			case 759:
			case 760:
			case 761:
			case 762:
			case 763:
			case 764:
			case 765:
			case 766:
			case 767:
			case 768:
			case 769:
			case 770:
			case 771:
			case 772:
			case 773:
			case 774:
			case 775:
			case 776:
			case 777:
			case 778:
			case 779:
			case 780:
			case 781:
			case 782:
			case 783:
			case 784:
			case 785:
			case 786:
			case 787:
			case 788:
			case 789:
			case 790:
			case 791:
			case 792:
			case 793:
			case 794:
			case 795:
			case 796:
			case 797:
			case 798:
			case 799:
			case 800:
			case 801:
			case 802:
			case 803:
			case 804:
			case 805:
			case 806:
			case 807:
			case 808:
			case 809:
			case 810:
			case 811:
			case 812:
			case 813:
			case 814:
			case 815:
			case 816:
			case 817:
			case 818:
			case 819:
			case 820:
			case 821:
			case 822:
			case 823:
			case 824:
			case 825:
			case 826:
			case 827:
			case 828:
			case 829:
			case 830:
			case 831:
			case 832:
			case 833:
			case 834:
			case 835:
			case 836:
			case 837:
			case 838:
			case 839:
			case 840:
			case 841:
			case 842:
			case 843:
			case 844:
			case 845:
			case 846:
			case 847:
			case 848:
			case 849:
			case 850:
			case 851:
			case 852:
			case 853:
			case 854:
			case 855:
			case 856:
			case 857:
			case 858:
			case 859:
			case 860:
			case 861:
			case 862:
			case 863:
			case 864:
			case 865:
			case 866:
			case 867:
			case 868:
			case 869:
			case 870:
			case 871:
			case 872:
			case 873:
			case 874:
			case 875:
			case 876:
			case 877:
			case 878:
			case 879:
			case 880:
			case 881:
			case 882:
			case 883:
			case 884:
			case 885:
			case 886:
			case 887:
			case 888:
			case 889:
			case 890:
			case 891:
			case 892:
			case 893:
			case 894:
			case 895:
			case 896:
			case 897:
			case 898:
			case 899:
			case 900:
			case 901:
			case 902:
			case 903:
			case 904:
			case 905:
			case 906:
			case 907:
			case 908:
			case 909:
			case 910:
			case 911:
			case 912:
			case 913:
			case 914:
			case 915:
			case 916:
			case 917:
			case 918:
			case 919:
			case 920:
			case 921:
			case 922:
			case 923:
			case 924:
			case 925:
			case 926:
			case 927:
			case 928:
			case 929:
			case 930:
			case 931:
			case 932:
			case 933:
			case 934:
			case 935:
			case 936:
			case 937:
			case 938:
			case 939:
			case 940:
			case 941:
			case 942:
			case 943:
			case 944:
			case 945:
			case 946:
			case 947:
			case 948:
			case 949:
			case 950:
			case 951:
			case 952:
			case 953:
			case 954:
			case 955:
			case 956:
			case 957:
			case 958:
			case 959:
			case 960:
			case 961:
			case 962:
			case 963:
			case 964:
			case 965:
			case 966:
			case 967:
			case 968:
			case 969:
			case 970:
			case 971:
			case 972:
			case 973:
			case 974:
			case 975:
			case 976:
			case 977:
			case 978:
			case 979:
			case 980:
			case 981:
			case 982:
			case 983:
			case 984:
			case 985:
			case 986:
			case 987:
			case 988:
			case 989:
			case 990:
			case 991:
			case 992:
			case 993:
			case 1006:
			case 1008:
			case 1014:
			case 1015:
			case 1020:
			case 1025:
			case 1026:
			case 1027:
			case 1032:
			case 1034:
			case 1035:
			case 1036:
			case 1037:
			case 1038:
			case 1039:
			case 1040:
			case 1041:
			case 1043:
			case 1044:
			case 1046:
			case 1047:
				this.enterOuterAlt(localctx, 1);
				{
				this.state = 5851;
				this.expression(0);
				}
				break;
			case 38:
				this.enterOuterAlt(localctx, 2);
				{
				this.state = 5852;
				this.match(SqlParser.DEFAULT);
				}
				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 ifExists(): IfExistsContext {
		let localctx: IfExistsContext = new IfExistsContext(this, this._ctx, this.state);
		this.enterRule(localctx, 578, SqlParser.RULE_ifExists);
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 5855;
			this.match(SqlParser.IF);
			this.state = 5856;
			this.match(SqlParser.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 ifNotExists(): IfNotExistsContext {
		let localctx: IfNotExistsContext = new IfNotExistsContext(this, this._ctx, this.state);
		this.enterRule(localctx, 580, SqlParser.RULE_ifNotExists);
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 5858;
			this.match(SqlParser.IF);
			this.state = 5859;
			this.match(SqlParser.NOT);
			this.state = 5860;
			this.match(SqlParser.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 functionCall(): FunctionCallContext {
		let localctx: FunctionCallContext = new FunctionCallContext(this, this._ctx, this.state);
		this.enterRule(localctx, 582, SqlParser.RULE_functionCall);
		let _la: number;
		try {
			this.state = 5879;
			this._errHandler.sync(this);
			switch ( this._interp.adaptivePredict(this._input, 870, this._ctx) ) {
			case 1:
				localctx = new SpecificFunctionCallContext(this, localctx);
				this.enterOuterAlt(localctx, 1);
				{
				this.state = 5862;
				this.specificFunction();
				}
				break;
			case 2:
				localctx = new AggregateFunctionCallContext(this, localctx);
				this.enterOuterAlt(localctx, 2);
				{
				this.state = 5863;
				this.aggregateWindowedFunction();
				}
				break;
			case 3:
				localctx = new ScalarFunctionCallContext(this, localctx);
				this.enterOuterAlt(localctx, 3);
				{
				this.state = 5864;
				this.scalarFunctionName();
				this.state = 5865;
				this.match(SqlParser.LR_BRACKET);
				this.state = 5867;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 538443776) !== 0) || ((((_la - 32)) & ~0x1F) === 0 && ((1 << (_la - 32)) & 18878475) !== 0) || ((((_la - 69)) & ~0x1F) === 0 && ((1 << (_la - 69)) & 262529) !== 0) || ((((_la - 102)) & ~0x1F) === 0 && ((1 << (_la - 102)) & 2181038093) !== 0) || ((((_la - 151)) & ~0x1F) === 0 && ((1 << (_la - 151)) & 524801) !== 0) || ((((_la - 199)) & ~0x1F) === 0 && ((1 << (_la - 199)) & 5374527) !== 0) || ((((_la - 233)) & ~0x1F) === 0 && ((1 << (_la - 233)) & 4294967295) !== 0) || ((((_la - 265)) & ~0x1F) === 0 && ((1 << (_la - 265)) & 4294967295) !== 0) || ((((_la - 297)) & ~0x1F) === 0 && ((1 << (_la - 297)) & 4294967295) !== 0) || ((((_la - 329)) & ~0x1F) === 0 && ((1 << (_la - 329)) & 4294967295) !== 0) || ((((_la - 361)) & ~0x1F) === 0 && ((1 << (_la - 361)) & 4294967295) !== 0) || ((((_la - 393)) & ~0x1F) === 0 && ((1 << (_la - 393)) & 4294967295) !== 0) || ((((_la - 425)) & ~0x1F) === 0 && ((1 << (_la - 425)) & 4294967295) !== 0) || ((((_la - 457)) & ~0x1F) === 0 && ((1 << (_la - 457)) & 4294967295) !== 0) || ((((_la - 489)) & ~0x1F) === 0 && ((1 << (_la - 489)) & 4294967295) !== 0) || ((((_la - 521)) & ~0x1F) === 0 && ((1 << (_la - 521)) & 4261412863) !== 0) || ((((_la - 553)) & ~0x1F) === 0 && ((1 << (_la - 553)) & 4227858431) !== 0) || ((((_la - 585)) & ~0x1F) === 0 && ((1 << (_la - 585)) & 4227858191) !== 0) || ((((_la - 617)) & ~0x1F) === 0 && ((1 << (_la - 617)) & 4294967295) !== 0) || ((((_la - 649)) & ~0x1F) === 0 && ((1 << (_la - 649)) & 4294967295) !== 0) || ((((_la - 681)) & ~0x1F) === 0 && ((1 << (_la - 681)) & 4294942719) !== 0) || ((((_la - 713)) & ~0x1F) === 0 && ((1 << (_la - 713)) & 4294967295) !== 0) || ((((_la - 745)) & ~0x1F) === 0 && ((1 << (_la - 745)) & 4294967295) !== 0) || ((((_la - 777)) & ~0x1F) === 0 && ((1 << (_la - 777)) & 4294967295) !== 0) || ((((_la - 809)) & ~0x1F) === 0 && ((1 << (_la - 809)) & 4294967295) !== 0) || ((((_la - 841)) & ~0x1F) === 0 && ((1 << (_la - 841)) & 4294967295) !== 0) || ((((_la - 873)) & ~0x1F) === 0 && ((1 << (_la - 873)) & 4294967295) !== 0) || ((((_la - 905)) & ~0x1F) === 0 && ((1 << (_la - 905)) & 4294967295) !== 0) || ((((_la - 937)) & ~0x1F) === 0 && ((1 << (_la - 937)) & 4294967295) !== 0) || ((((_la - 969)) & ~0x1F) === 0 && ((1 << (_la - 969)) & 33554431) !== 0) || ((((_la - 1006)) & ~0x1F) === 0 && ((1 << (_la - 1006)) & 4097327877) !== 0) || ((((_la - 1038)) & ~0x1F) === 0 && ((1 << (_la - 1038)) & 879) !== 0)) {
					{
					this.state = 5866;
					this.functionArgs();
					}
				}

				this.state = 5869;
				this.match(SqlParser.RR_BRACKET);
				}
				break;
			case 4:
				localctx = new UdfFunctionCallContext(this, localctx);
				this.enterOuterAlt(localctx, 4);
				{
				this.state = 5871;
				this.fullId();
				this.state = 5872;
				this.match(SqlParser.LR_BRACKET);
				this.state = 5874;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 538443776) !== 0) || ((((_la - 32)) & ~0x1F) === 0 && ((1 << (_la - 32)) & 18878475) !== 0) || ((((_la - 69)) & ~0x1F) === 0 && ((1 << (_la - 69)) & 262529) !== 0) || ((((_la - 102)) & ~0x1F) === 0 && ((1 << (_la - 102)) & 2181038093) !== 0) || ((((_la - 151)) & ~0x1F) === 0 && ((1 << (_la - 151)) & 524801) !== 0) || ((((_la - 199)) & ~0x1F) === 0 && ((1 << (_la - 199)) & 5374527) !== 0) || ((((_la - 233)) & ~0x1F) === 0 && ((1 << (_la - 233)) & 4294967295) !== 0) || ((((_la - 265)) & ~0x1F) === 0 && ((1 << (_la - 265)) & 4294967295) !== 0) || ((((_la - 297)) & ~0x1F) === 0 && ((1 << (_la - 297)) & 4294967295) !== 0) || ((((_la - 329)) & ~0x1F) === 0 && ((1 << (_la - 329)) & 4294967295) !== 0) || ((((_la - 361)) & ~0x1F) === 0 && ((1 << (_la - 361)) & 4294967295) !== 0) || ((((_la - 393)) & ~0x1F) === 0 && ((1 << (_la - 393)) & 4294967295) !== 0) || ((((_la - 425)) & ~0x1F) === 0 && ((1 << (_la - 425)) & 4294967295) !== 0) || ((((_la - 457)) & ~0x1F) === 0 && ((1 << (_la - 457)) & 4294967295) !== 0) || ((((_la - 489)) & ~0x1F) === 0 && ((1 << (_la - 489)) & 4294967295) !== 0) || ((((_la - 521)) & ~0x1F) === 0 && ((1 << (_la - 521)) & 4261412863) !== 0) || ((((_la - 553)) & ~0x1F) === 0 && ((1 << (_la - 553)) & 4227858431) !== 0) || ((((_la - 585)) & ~0x1F) === 0 && ((1 << (_la - 585)) & 4227858191) !== 0) || ((((_la - 617)) & ~0x1F) === 0 && ((1 << (_la - 617)) & 4294967295) !== 0) || ((((_la - 649)) & ~0x1F) === 0 && ((1 << (_la - 649)) & 4294967295) !== 0) || ((((_la - 681)) & ~0x1F) === 0 && ((1 << (_la - 681)) & 4294942719) !== 0) || ((((_la - 713)) & ~0x1F) === 0 && ((1 << (_la - 713)) & 4294967295) !== 0) || ((((_la - 745)) & ~0x1F) === 0 && ((1 << (_la - 745)) & 4294967295) !== 0) || ((((_la - 777)) & ~0x1F) === 0 && ((1 << (_la - 777)) & 4294967295) !== 0) || ((((_la - 809)) & ~0x1F) === 0 && ((1 << (_la - 809)) & 4294967295) !== 0) || ((((_la - 841)) & ~0x1F) === 0 && ((1 << (_la - 841)) & 4294967295) !== 0) || ((((_la - 873)) & ~0x1F) === 0 && ((1 << (_la - 873)) & 4294967295) !== 0) || ((((_la - 905)) & ~0x1F) === 0 && ((1 << (_la - 905)) & 4294967295) !== 0) || ((((_la - 937)) & ~0x1F) === 0 && ((1 << (_la - 937)) & 4294967295) !== 0) || ((((_la - 969)) & ~0x1F) === 0 && ((1 << (_la - 969)) & 33554431) !== 0) || ((((_la - 1006)) & ~0x1F) === 0 && ((1 << (_la - 1006)) & 4097327877) !== 0) || ((((_la - 1038)) & ~0x1F) === 0 && ((1 << (_la - 1038)) & 879) !== 0)) {
					{
					this.state = 5873;
					this.functionArgs();
					}
				}

				this.state = 5876;
				this.match(SqlParser.RR_BRACKET);
				}
				break;
			case 5:
				localctx = new PasswordFunctionCallContext(this, localctx);
				this.enterOuterAlt(localctx, 5);
				{
				this.state = 5878;
				this.passwordFunctionClause();
				}
				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 specificFunction(): SpecificFunctionContext {
		let localctx: SpecificFunctionContext = new SpecificFunctionContext(this, this._ctx, this.state);
		this.enterRule(localctx, 584, SqlParser.RULE_specificFunction);
		let _la: number;
		try {
			this.state = 6038;
			this._errHandler.sync(this);
			switch ( this._interp.adaptivePredict(this._input, 890, this._ctx) ) {
			case 1:
				localctx = new SimpleFunctionCallContext(this, localctx);
				this.enterOuterAlt(localctx, 1);
				{
				this.state = 5881;
				_la = this._input.LA(1);
				if(!(_la===33 || ((((_la - 251)) & ~0x1F) === 0 && ((1 << (_la - 251)) & 15) !== 0))) {
				this._errHandler.recoverInline(this);
				}
				else {
					this._errHandler.reportMatch(this);
				    this.consume();
				}
				}
				break;
			case 2:
				localctx = new DataTypeFunctionCallContext(this, localctx);
				this.enterOuterAlt(localctx, 2);
				{
				this.state = 5882;
				this.match(SqlParser.CONVERT);
				this.state = 5883;
				this.match(SqlParser.LR_BRACKET);
				this.state = 5884;
				this.expression(0);
				this.state = 5885;
				(localctx as DataTypeFunctionCallContext)._separator = this.match(SqlParser.COMMA);
				this.state = 5886;
				this.convertedDataType();
				this.state = 5887;
				this.match(SqlParser.RR_BRACKET);
				}
				break;
			case 3:
				localctx = new DataTypeFunctionCallContext(this, localctx);
				this.enterOuterAlt(localctx, 3);
				{
				this.state = 5889;
				this.match(SqlParser.CONVERT);
				this.state = 5890;
				this.match(SqlParser.LR_BRACKET);
				this.state = 5891;
				this.expression(0);
				this.state = 5892;
				this.match(SqlParser.USING);
				this.state = 5893;
				this.charsetName();
				this.state = 5894;
				this.match(SqlParser.RR_BRACKET);
				}
				break;
			case 4:
				localctx = new DataTypeFunctionCallContext(this, localctx);
				this.enterOuterAlt(localctx, 4);
				{
				this.state = 5896;
				this.match(SqlParser.CAST);
				this.state = 5897;
				this.match(SqlParser.LR_BRACKET);
				this.state = 5898;
				this.expression(0);
				this.state = 5899;
				this.match(SqlParser.AS);
				this.state = 5900;
				this.convertedDataType();
				this.state = 5901;
				this.match(SqlParser.RR_BRACKET);
				}
				break;
			case 5:
				localctx = new ValuesFunctionCallContext(this, localctx);
				this.enterOuterAlt(localctx, 5);
				{
				this.state = 5903;
				this.match(SqlParser.VALUES);
				this.state = 5904;
				this.match(SqlParser.LR_BRACKET);
				this.state = 5905;
				this.fullColumnName();
				this.state = 5906;
				this.match(SqlParser.RR_BRACKET);
				}
				break;
			case 6:
				localctx = new CaseFunctionCallContext(this, localctx);
				this.enterOuterAlt(localctx, 6);
				{
				this.state = 5908;
				this.match(SqlParser.CASE);
				this.state = 5909;
				this.expression(0);
				this.state = 5911;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				do {
					{
					{
					this.state = 5910;
					this.caseFuncAlternative();
					}
					}
					this.state = 5913;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
				} while (_la===171);
				this.state = 5917;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===49) {
					{
					this.state = 5915;
					this.match(SqlParser.ELSE);
					this.state = 5916;
					(localctx as CaseFunctionCallContext)._elseArg = this.functionArg();
					}
				}

				this.state = 5919;
				this.match(SqlParser.END);
				}
				break;
			case 7:
				localctx = new CaseFunctionCallContext(this, localctx);
				this.enterOuterAlt(localctx, 7);
				{
				this.state = 5921;
				this.match(SqlParser.CASE);
				this.state = 5923;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				do {
					{
					{
					this.state = 5922;
					this.caseFuncAlternative();
					}
					}
					this.state = 5925;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
				} while (_la===171);
				this.state = 5929;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===49) {
					{
					this.state = 5927;
					this.match(SqlParser.ELSE);
					this.state = 5928;
					(localctx as CaseFunctionCallContext)._elseArg = this.functionArg();
					}
				}

				this.state = 5931;
				this.match(SqlParser.END);
				}
				break;
			case 8:
				localctx = new CharFunctionCallContext(this, localctx);
				this.enterOuterAlt(localctx, 8);
				{
				this.state = 5933;
				this.match(SqlParser.CHAR);
				this.state = 5934;
				this.match(SqlParser.LR_BRACKET);
				this.state = 5935;
				this.functionArgs();
				this.state = 5938;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===169) {
					{
					this.state = 5936;
					this.match(SqlParser.USING);
					this.state = 5937;
					this.charsetName();
					}
				}

				this.state = 5940;
				this.match(SqlParser.RR_BRACKET);
				}
				break;
			case 9:
				localctx = new PositionFunctionCallContext(this, localctx);
				this.enterOuterAlt(localctx, 9);
				{
				this.state = 5942;
				this.match(SqlParser.POSITION);
				this.state = 5943;
				this.match(SqlParser.LR_BRACKET);
				this.state = 5946;
				this._errHandler.sync(this);
				switch ( this._interp.adaptivePredict(this._input, 876, this._ctx) ) {
				case 1:
					{
					this.state = 5944;
					(localctx as PositionFunctionCallContext)._positionString = this.stringLiteral();
					}
					break;
				case 2:
					{
					this.state = 5945;
					(localctx as PositionFunctionCallContext)._positionExpression = this.expression(0);
					}
					break;
				}
				this.state = 5948;
				this.match(SqlParser.IN);
				this.state = 5951;
				this._errHandler.sync(this);
				switch ( this._interp.adaptivePredict(this._input, 877, this._ctx) ) {
				case 1:
					{
					this.state = 5949;
					(localctx as PositionFunctionCallContext)._inString = this.stringLiteral();
					}
					break;
				case 2:
					{
					this.state = 5950;
					(localctx as PositionFunctionCallContext)._inExpression = this.expression(0);
					}
					break;
				}
				this.state = 5953;
				this.match(SqlParser.RR_BRACKET);
				}
				break;
			case 10:
				localctx = new SubstrFunctionCallContext(this, localctx);
				this.enterOuterAlt(localctx, 10);
				{
				this.state = 5955;
				_la = this._input.LA(1);
				if(!(_la===263 || _la===264)) {
				this._errHandler.recoverInline(this);
				}
				else {
					this._errHandler.reportMatch(this);
				    this.consume();
				}
				this.state = 5956;
				this.match(SqlParser.LR_BRACKET);
				this.state = 5959;
				this._errHandler.sync(this);
				switch ( this._interp.adaptivePredict(this._input, 878, this._ctx) ) {
				case 1:
					{
					this.state = 5957;
					(localctx as SubstrFunctionCallContext)._sourceString = this.stringLiteral();
					}
					break;
				case 2:
					{
					this.state = 5958;
					(localctx as SubstrFunctionCallContext)._sourceExpression = this.expression(0);
					}
					break;
				}
				this.state = 5961;
				this.match(SqlParser.FROM);
				this.state = 5964;
				this._errHandler.sync(this);
				switch ( this._interp.adaptivePredict(this._input, 879, this._ctx) ) {
				case 1:
					{
					this.state = 5962;
					(localctx as SubstrFunctionCallContext)._fromDecimal = this.decimalLiteral();
					}
					break;
				case 2:
					{
					this.state = 5963;
					(localctx as SubstrFunctionCallContext)._fromExpression = this.expression(0);
					}
					break;
				}
				this.state = 5971;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===58) {
					{
					this.state = 5966;
					this.match(SqlParser.FOR);
					this.state = 5969;
					this._errHandler.sync(this);
					switch ( this._interp.adaptivePredict(this._input, 880, this._ctx) ) {
					case 1:
						{
						this.state = 5967;
						(localctx as SubstrFunctionCallContext)._forDecimal = this.decimalLiteral();
						}
						break;
					case 2:
						{
						this.state = 5968;
						(localctx as SubstrFunctionCallContext)._forExpression = this.expression(0);
						}
						break;
					}
					}
				}

				this.state = 5973;
				this.match(SqlParser.RR_BRACKET);
				}
				break;
			case 11:
				localctx = new TrimFunctionCallContext(this, localctx);
				this.enterOuterAlt(localctx, 11);
				{
				this.state = 5975;
				this.match(SqlParser.TRIM);
				this.state = 5976;
				this.match(SqlParser.LR_BRACKET);
				this.state = 5977;
				(localctx as TrimFunctionCallContext)._positioinForm = this._input.LT(1);
				_la = this._input.LA(1);
				if(!(_la===15 || _la===85 || _la===158)) {
				    (localctx as TrimFunctionCallContext)._positioinForm = this._errHandler.recoverInline(this);
				}
				else {
					this._errHandler.reportMatch(this);
				    this.consume();
				}
				this.state = 5980;
				this._errHandler.sync(this);
				switch ( this._interp.adaptivePredict(this._input, 882, this._ctx) ) {
				case 1:
					{
					this.state = 5978;
					(localctx as TrimFunctionCallContext)._sourceString = this.stringLiteral();
					}
					break;
				case 2:
					{
					this.state = 5979;
					(localctx as TrimFunctionCallContext)._sourceExpression = this.expression(0);
					}
					break;
				}
				this.state = 5982;
				this.match(SqlParser.FROM);
				this.state = 5985;
				this._errHandler.sync(this);
				switch ( this._interp.adaptivePredict(this._input, 883, this._ctx) ) {
				case 1:
					{
					this.state = 5983;
					(localctx as TrimFunctionCallContext)._fromString = this.stringLiteral();
					}
					break;
				case 2:
					{
					this.state = 5984;
					(localctx as TrimFunctionCallContext)._fromExpression = this.expression(0);
					}
					break;
				}
				this.state = 5987;
				this.match(SqlParser.RR_BRACKET);
				}
				break;
			case 12:
				localctx = new TrimFunctionCallContext(this, localctx);
				this.enterOuterAlt(localctx, 12);
				{
				this.state = 5989;
				this.match(SqlParser.TRIM);
				this.state = 5990;
				this.match(SqlParser.LR_BRACKET);
				this.state = 5993;
				this._errHandler.sync(this);
				switch ( this._interp.adaptivePredict(this._input, 884, this._ctx) ) {
				case 1:
					{
					this.state = 5991;
					(localctx as TrimFunctionCallContext)._sourceString = this.stringLiteral();
					}
					break;
				case 2:
					{
					this.state = 5992;
					(localctx as TrimFunctionCallContext)._sourceExpression = this.expression(0);
					}
					break;
				}
				this.state = 5995;
				this.match(SqlParser.FROM);
				this.state = 5998;
				this._errHandler.sync(this);
				switch ( this._interp.adaptivePredict(this._input, 885, this._ctx) ) {
				case 1:
					{
					this.state = 5996;
					(localctx as TrimFunctionCallContext)._fromString = this.stringLiteral();
					}
					break;
				case 2:
					{
					this.state = 5997;
					(localctx as TrimFunctionCallContext)._fromExpression = this.expression(0);
					}
					break;
				}
				this.state = 6000;
				this.match(SqlParser.RR_BRACKET);
				}
				break;
			case 13:
				localctx = new WeightFunctionCallContext(this, localctx);
				this.enterOuterAlt(localctx, 13);
				{
				this.state = 6002;
				this.match(SqlParser.WEIGHT_STRING);
				this.state = 6003;
				this.match(SqlParser.LR_BRACKET);
				this.state = 6006;
				this._errHandler.sync(this);
				switch ( this._interp.adaptivePredict(this._input, 886, this._ctx) ) {
				case 1:
					{
					this.state = 6004;
					this.stringLiteral();
					}
					break;
				case 2:
					{
					this.state = 6005;
					this.expression(0);
					}
					break;
				}
				this.state = 6014;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===11) {
					{
					this.state = 6008;
					this.match(SqlParser.AS);
					this.state = 6009;
					(localctx as WeightFunctionCallContext)._stringFormat = this._input.LT(1);
					_la = this._input.LA(1);
					if(!(_la===204 || _la===208)) {
					    (localctx as WeightFunctionCallContext)._stringFormat = this._errHandler.recoverInline(this);
					}
					else {
						this._errHandler.reportMatch(this);
					    this.consume();
					}
					this.state = 6010;
					this.match(SqlParser.LR_BRACKET);
					this.state = 6011;
					this.decimalLiteral();
					this.state = 6012;
					this.match(SqlParser.RR_BRACKET);
					}
				}

				this.state = 6017;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===400) {
					{
					this.state = 6016;
					this.levelsInWeightString();
					}
				}

				this.state = 6019;
				this.match(SqlParser.RR_BRACKET);
				}
				break;
			case 14:
				localctx = new ExtractFunctionCallContext(this, localctx);
				this.enterOuterAlt(localctx, 14);
				{
				this.state = 6021;
				this.match(SqlParser.EXTRACT);
				this.state = 6022;
				this.match(SqlParser.LR_BRACKET);
				this.state = 6023;
				this.intervalType();
				this.state = 6024;
				this.match(SqlParser.FROM);
				this.state = 6027;
				this._errHandler.sync(this);
				switch ( this._interp.adaptivePredict(this._input, 889, this._ctx) ) {
				case 1:
					{
					this.state = 6025;
					(localctx as ExtractFunctionCallContext)._sourceString = this.stringLiteral();
					}
					break;
				case 2:
					{
					this.state = 6026;
					(localctx as ExtractFunctionCallContext)._sourceExpression = this.expression(0);
					}
					break;
				}
				this.state = 6029;
				this.match(SqlParser.RR_BRACKET);
				}
				break;
			case 15:
				localctx = new GetFormatFunctionCallContext(this, localctx);
				this.enterOuterAlt(localctx, 15);
				{
				this.state = 6031;
				this.match(SqlParser.GET_FORMAT);
				this.state = 6032;
				this.match(SqlParser.LR_BRACKET);
				this.state = 6033;
				(localctx as GetFormatFunctionCallContext)._datetimeFormat = this._input.LT(1);
				_la = this._input.LA(1);
				if(!(((((_la - 199)) & ~0x1F) === 0 && ((1 << (_la - 199)) & 11) !== 0))) {
				    (localctx as GetFormatFunctionCallContext)._datetimeFormat = this._errHandler.recoverInline(this);
				}
				else {
					this._errHandler.reportMatch(this);
				    this.consume();
				}
				this.state = 6034;
				this.match(SqlParser.COMMA);
				this.state = 6035;
				this.stringLiteral();
				this.state = 6036;
				this.match(SqlParser.RR_BRACKET);
				}
				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 caseFuncAlternative(): CaseFuncAlternativeContext {
		let localctx: CaseFuncAlternativeContext = new CaseFuncAlternativeContext(this, this._ctx, this.state);
		this.enterRule(localctx, 586, SqlParser.RULE_caseFuncAlternative);
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 6040;
			this.match(SqlParser.WHEN);
			this.state = 6041;
			localctx._condition = this.functionArg();
			this.state = 6042;
			this.match(SqlParser.THEN);
			this.state = 6043;
			localctx._consequent = this.functionArg();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public levelsInWeightString(): LevelsInWeightStringContext {
		let localctx: LevelsInWeightStringContext = new LevelsInWeightStringContext(this, this._ctx, this.state);
		this.enterRule(localctx, 588, SqlParser.RULE_levelsInWeightString);
		let _la: number;
		try {
			this.state = 6059;
			this._errHandler.sync(this);
			switch ( this._interp.adaptivePredict(this._input, 892, this._ctx) ) {
			case 1:
				localctx = new LevelWeightListContext(this, localctx);
				this.enterOuterAlt(localctx, 1);
				{
				this.state = 6045;
				this.match(SqlParser.LEVEL);
				this.state = 6046;
				this.levelInWeightListElement();
				this.state = 6051;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				while (_la===1022) {
					{
					{
					this.state = 6047;
					this.match(SqlParser.COMMA);
					this.state = 6048;
					this.levelInWeightListElement();
					}
					}
					this.state = 6053;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
				}
				}
				break;
			case 2:
				localctx = new LevelWeightRangeContext(this, localctx);
				this.enterOuterAlt(localctx, 2);
				{
				this.state = 6054;
				this.match(SqlParser.LEVEL);
				this.state = 6055;
				(localctx as LevelWeightRangeContext)._firstLevel = this.decimalLiteral();
				this.state = 6056;
				this.match(SqlParser.MINUS);
				this.state = 6057;
				(localctx as LevelWeightRangeContext)._lastLevel = this.decimalLiteral();
				}
				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 levelInWeightListElement(): LevelInWeightListElementContext {
		let localctx: LevelInWeightListElementContext = new LevelInWeightListElementContext(this, this._ctx, this.state);
		this.enterRule(localctx, 590, SqlParser.RULE_levelInWeightListElement);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 6061;
			this.decimalLiteral();
			this.state = 6063;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===12 || _la===41 || _la===882) {
				{
				this.state = 6062;
				localctx._orderType = this._input.LT(1);
				_la = this._input.LA(1);
				if(!(_la===12 || _la===41 || _la===882)) {
				    localctx._orderType = this._errHandler.recoverInline(this);
				}
				else {
					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 aggregateWindowedFunction(): AggregateWindowedFunctionContext {
		let localctx: AggregateWindowedFunctionContext = new AggregateWindowedFunctionContext(this, this._ctx, this.state);
		this.enterRule(localctx, 592, SqlParser.RULE_aggregateWindowedFunction);
		let _la: number;
		try {
			this.state = 6121;
			this._errHandler.sync(this);
			switch ( this._interp.adaptivePredict(this._input, 902, this._ctx) ) {
			case 1:
				this.enterOuterAlt(localctx, 1);
				{
				this.state = 6065;
				_la = this._input.LA(1);
				if(!(((((_la - 235)) & ~0x1F) === 0 && ((1 << (_la - 235)) & 4289) !== 0))) {
				this._errHandler.recoverInline(this);
				}
				else {
					this._errHandler.reportMatch(this);
				    this.consume();
				}
				this.state = 6066;
				this.match(SqlParser.LR_BRACKET);
				this.state = 6068;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===6 || _la===45) {
					{
					this.state = 6067;
					localctx._aggregator = this._input.LT(1);
					_la = this._input.LA(1);
					if(!(_la===6 || _la===45)) {
					    localctx._aggregator = this._errHandler.recoverInline(this);
					}
					else {
						this._errHandler.reportMatch(this);
					    this.consume();
					}
					}
				}

				this.state = 6070;
				this.functionArg();
				this.state = 6071;
				this.match(SqlParser.RR_BRACKET);
				}
				break;
			case 2:
				this.enterOuterAlt(localctx, 2);
				{
				this.state = 6073;
				this.match(SqlParser.COUNT);
				this.state = 6074;
				this.match(SqlParser.LR_BRACKET);
				this.state = 6080;
				this._errHandler.sync(this);
				switch (this._input.LA(1)) {
				case 1003:
					{
					this.state = 6075;
					localctx._starArg = this.match(SqlParser.STAR);
					}
					break;
				case 6:
				case 19:
				case 20:
				case 29:
				case 32:
				case 33:
				case 35:
				case 44:
				case 53:
				case 56:
				case 69:
				case 76:
				case 77:
				case 87:
				case 102:
				case 104:
				case 105:
				case 127:
				case 133:
				case 151:
				case 160:
				case 170:
				case 199:
				case 200:
				case 201:
				case 202:
				case 203:
				case 204:
				case 208:
				case 216:
				case 219:
				case 221:
				case 233:
				case 234:
				case 235:
				case 236:
				case 237:
				case 238:
				case 239:
				case 240:
				case 241:
				case 242:
				case 243:
				case 244:
				case 245:
				case 246:
				case 247:
				case 248:
				case 249:
				case 250:
				case 251:
				case 252:
				case 253:
				case 254:
				case 255:
				case 256:
				case 257:
				case 258:
				case 259:
				case 260:
				case 261:
				case 262:
				case 263:
				case 264:
				case 265:
				case 266:
				case 267:
				case 268:
				case 269:
				case 270:
				case 271:
				case 272:
				case 273:
				case 274:
				case 275:
				case 276:
				case 277:
				case 278:
				case 279:
				case 280:
				case 281:
				case 282:
				case 283:
				case 284:
				case 285:
				case 286:
				case 287:
				case 288:
				case 289:
				case 290:
				case 291:
				case 292:
				case 293:
				case 294:
				case 295:
				case 296:
				case 297:
				case 298:
				case 299:
				case 300:
				case 301:
				case 302:
				case 303:
				case 304:
				case 305:
				case 306:
				case 307:
				case 308:
				case 309:
				case 310:
				case 311:
				case 312:
				case 313:
				case 314:
				case 315:
				case 316:
				case 317:
				case 318:
				case 319:
				case 320:
				case 321:
				case 322:
				case 323:
				case 324:
				case 325:
				case 326:
				case 327:
				case 328:
				case 329:
				case 330:
				case 331:
				case 332:
				case 333:
				case 334:
				case 335:
				case 336:
				case 337:
				case 338:
				case 339:
				case 340:
				case 341:
				case 342:
				case 343:
				case 344:
				case 345:
				case 346:
				case 347:
				case 348:
				case 349:
				case 350:
				case 351:
				case 352:
				case 353:
				case 354:
				case 355:
				case 356:
				case 357:
				case 358:
				case 359:
				case 360:
				case 361:
				case 362:
				case 363:
				case 364:
				case 365:
				case 366:
				case 367:
				case 368:
				case 369:
				case 370:
				case 371:
				case 372:
				case 373:
				case 374:
				case 375:
				case 376:
				case 377:
				case 378:
				case 379:
				case 380:
				case 381:
				case 382:
				case 383:
				case 384:
				case 385:
				case 386:
				case 387:
				case 388:
				case 389:
				case 390:
				case 391:
				case 392:
				case 393:
				case 394:
				case 395:
				case 396:
				case 397:
				case 398:
				case 399:
				case 400:
				case 401:
				case 402:
				case 403:
				case 404:
				case 405:
				case 406:
				case 407:
				case 408:
				case 409:
				case 410:
				case 411:
				case 412:
				case 413:
				case 414:
				case 415:
				case 416:
				case 417:
				case 418:
				case 419:
				case 420:
				case 421:
				case 422:
				case 423:
				case 424:
				case 425:
				case 426:
				case 427:
				case 428:
				case 429:
				case 430:
				case 431:
				case 432:
				case 433:
				case 434:
				case 435:
				case 436:
				case 437:
				case 438:
				case 439:
				case 440:
				case 441:
				case 442:
				case 443:
				case 444:
				case 445:
				case 446:
				case 447:
				case 448:
				case 449:
				case 450:
				case 451:
				case 452:
				case 453:
				case 454:
				case 455:
				case 456:
				case 457:
				case 458:
				case 459:
				case 460:
				case 461:
				case 462:
				case 463:
				case 464:
				case 465:
				case 466:
				case 467:
				case 468:
				case 469:
				case 470:
				case 471:
				case 472:
				case 473:
				case 474:
				case 475:
				case 476:
				case 477:
				case 478:
				case 479:
				case 480:
				case 481:
				case 482:
				case 483:
				case 484:
				case 485:
				case 486:
				case 487:
				case 488:
				case 489:
				case 490:
				case 491:
				case 492:
				case 493:
				case 494:
				case 495:
				case 496:
				case 497:
				case 498:
				case 499:
				case 500:
				case 501:
				case 502:
				case 503:
				case 504:
				case 505:
				case 506:
				case 507:
				case 508:
				case 509:
				case 510:
				case 511:
				case 512:
				case 513:
				case 514:
				case 515:
				case 516:
				case 517:
				case 518:
				case 519:
				case 520:
				case 521:
				case 522:
				case 523:
				case 524:
				case 525:
				case 526:
				case 527:
				case 528:
				case 529:
				case 530:
				case 531:
				case 532:
				case 533:
				case 534:
				case 535:
				case 536:
				case 537:
				case 538:
				case 539:
				case 540:
				case 541:
				case 542:
				case 543:
				case 544:
				case 545:
				case 547:
				case 548:
				case 549:
				case 550:
				case 551:
				case 552:
				case 553:
				case 554:
				case 555:
				case 556:
				case 557:
				case 558:
				case 559:
				case 560:
				case 561:
				case 562:
				case 563:
				case 564:
				case 565:
				case 566:
				case 567:
				case 568:
				case 569:
				case 570:
				case 571:
				case 572:
				case 573:
				case 574:
				case 575:
				case 576:
				case 577:
				case 578:
				case 580:
				case 581:
				case 582:
				case 583:
				case 584:
				case 585:
				case 586:
				case 587:
				case 588:
				case 593:
				case 594:
				case 595:
				case 596:
				case 597:
				case 598:
				case 599:
				case 600:
				case 601:
				case 602:
				case 603:
				case 604:
				case 605:
				case 606:
				case 607:
				case 608:
				case 609:
				case 610:
				case 612:
				case 613:
				case 614:
				case 615:
				case 616:
				case 617:
				case 618:
				case 619:
				case 620:
				case 621:
				case 622:
				case 623:
				case 624:
				case 625:
				case 626:
				case 627:
				case 628:
				case 629:
				case 630:
				case 631:
				case 632:
				case 633:
				case 634:
				case 635:
				case 636:
				case 637:
				case 638:
				case 639:
				case 640:
				case 641:
				case 642:
				case 643:
				case 644:
				case 645:
				case 646:
				case 647:
				case 648:
				case 649:
				case 650:
				case 651:
				case 652:
				case 653:
				case 654:
				case 655:
				case 656:
				case 657:
				case 658:
				case 659:
				case 660:
				case 661:
				case 662:
				case 663:
				case 664:
				case 665:
				case 666:
				case 667:
				case 668:
				case 669:
				case 670:
				case 671:
				case 672:
				case 673:
				case 674:
				case 675:
				case 676:
				case 677:
				case 678:
				case 679:
				case 680:
				case 681:
				case 682:
				case 683:
				case 684:
				case 685:
				case 686:
				case 687:
				case 688:
				case 689:
				case 690:
				case 691:
				case 692:
				case 693:
				case 696:
				case 697:
				case 698:
				case 699:
				case 700:
				case 701:
				case 702:
				case 703:
				case 704:
				case 705:
				case 706:
				case 707:
				case 708:
				case 709:
				case 710:
				case 711:
				case 712:
				case 713:
				case 714:
				case 715:
				case 716:
				case 717:
				case 718:
				case 719:
				case 720:
				case 721:
				case 722:
				case 723:
				case 724:
				case 725:
				case 726:
				case 727:
				case 728:
				case 729:
				case 730:
				case 731:
				case 732:
				case 733:
				case 734:
				case 735:
				case 736:
				case 737:
				case 738:
				case 739:
				case 740:
				case 741:
				case 742:
				case 743:
				case 744:
				case 745:
				case 746:
				case 747:
				case 748:
				case 749:
				case 750:
				case 751:
				case 752:
				case 753:
				case 754:
				case 755:
				case 756:
				case 757:
				case 758:
				case 759:
				case 760:
				case 761:
				case 762:
				case 763:
				case 764:
				case 765:
				case 766:
				case 767:
				case 768:
				case 769:
				case 770:
				case 771:
				case 772:
				case 773:
				case 774:
				case 775:
				case 776:
				case 777:
				case 778:
				case 779:
				case 780:
				case 781:
				case 782:
				case 783:
				case 784:
				case 785:
				case 786:
				case 787:
				case 788:
				case 789:
				case 790:
				case 791:
				case 792:
				case 793:
				case 794:
				case 795:
				case 796:
				case 797:
				case 798:
				case 799:
				case 800:
				case 801:
				case 802:
				case 803:
				case 804:
				case 805:
				case 806:
				case 807:
				case 808:
				case 809:
				case 810:
				case 811:
				case 812:
				case 813:
				case 814:
				case 815:
				case 816:
				case 817:
				case 818:
				case 819:
				case 820:
				case 821:
				case 822:
				case 823:
				case 824:
				case 825:
				case 826:
				case 827:
				case 828:
				case 829:
				case 830:
				case 831:
				case 832:
				case 833:
				case 834:
				case 835:
				case 836:
				case 837:
				case 838:
				case 839:
				case 840:
				case 841:
				case 842:
				case 843:
				case 844:
				case 845:
				case 846:
				case 847:
				case 848:
				case 849:
				case 850:
				case 851:
				case 852:
				case 853:
				case 854:
				case 855:
				case 856:
				case 857:
				case 858:
				case 859:
				case 860:
				case 861:
				case 862:
				case 863:
				case 864:
				case 865:
				case 866:
				case 867:
				case 868:
				case 869:
				case 870:
				case 871:
				case 872:
				case 873:
				case 874:
				case 875:
				case 876:
				case 877:
				case 878:
				case 879:
				case 880:
				case 881:
				case 882:
				case 883:
				case 884:
				case 885:
				case 886:
				case 887:
				case 888:
				case 889:
				case 890:
				case 891:
				case 892:
				case 893:
				case 894:
				case 895:
				case 896:
				case 897:
				case 898:
				case 899:
				case 900:
				case 901:
				case 902:
				case 903:
				case 904:
				case 905:
				case 906:
				case 907:
				case 908:
				case 909:
				case 910:
				case 911:
				case 912:
				case 913:
				case 914:
				case 915:
				case 916:
				case 917:
				case 918:
				case 919:
				case 920:
				case 921:
				case 922:
				case 923:
				case 924:
				case 925:
				case 926:
				case 927:
				case 928:
				case 929:
				case 930:
				case 931:
				case 932:
				case 933:
				case 934:
				case 935:
				case 936:
				case 937:
				case 938:
				case 939:
				case 940:
				case 941:
				case 942:
				case 943:
				case 944:
				case 945:
				case 946:
				case 947:
				case 948:
				case 949:
				case 950:
				case 951:
				case 952:
				case 953:
				case 954:
				case 955:
				case 956:
				case 957:
				case 958:
				case 959:
				case 960:
				case 961:
				case 962:
				case 963:
				case 964:
				case 965:
				case 966:
				case 967:
				case 968:
				case 969:
				case 970:
				case 971:
				case 972:
				case 973:
				case 974:
				case 975:
				case 976:
				case 977:
				case 978:
				case 979:
				case 980:
				case 981:
				case 982:
				case 983:
				case 984:
				case 985:
				case 986:
				case 987:
				case 988:
				case 989:
				case 990:
				case 991:
				case 992:
				case 993:
				case 1006:
				case 1008:
				case 1014:
				case 1015:
				case 1020:
				case 1025:
				case 1026:
				case 1027:
				case 1032:
				case 1034:
				case 1035:
				case 1036:
				case 1037:
				case 1038:
				case 1039:
				case 1040:
				case 1041:
				case 1043:
				case 1044:
				case 1046:
				case 1047:
					{
					this.state = 6077;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
					if (_la===6) {
						{
						this.state = 6076;
						localctx._aggregator = this.match(SqlParser.ALL);
						}
					}

					this.state = 6079;
					this.functionArg();
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				this.state = 6082;
				this.match(SqlParser.RR_BRACKET);
				}
				break;
			case 3:
				this.enterOuterAlt(localctx, 3);
				{
				this.state = 6083;
				this.match(SqlParser.COUNT);
				this.state = 6084;
				this.match(SqlParser.LR_BRACKET);
				this.state = 6085;
				localctx._aggregator = this.match(SqlParser.DISTINCT);
				this.state = 6086;
				this.functionArgs();
				this.state = 6087;
				this.match(SqlParser.RR_BRACKET);
				}
				break;
			case 4:
				this.enterOuterAlt(localctx, 4);
				{
				this.state = 6089;
				_la = this._input.LA(1);
				if(!(((((_la - 236)) & ~0x1F) === 0 && ((1 << (_la - 236)) & 30599) !== 0))) {
				this._errHandler.recoverInline(this);
				}
				else {
					this._errHandler.reportMatch(this);
				    this.consume();
				}
				this.state = 6090;
				this.match(SqlParser.LR_BRACKET);
				this.state = 6092;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===6) {
					{
					this.state = 6091;
					localctx._aggregator = this.match(SqlParser.ALL);
					}
				}

				this.state = 6094;
				this.functionArg();
				this.state = 6095;
				this.match(SqlParser.RR_BRACKET);
				}
				break;
			case 5:
				this.enterOuterAlt(localctx, 5);
				{
				this.state = 6097;
				this.match(SqlParser.GROUP_CONCAT);
				this.state = 6098;
				this.match(SqlParser.LR_BRACKET);
				this.state = 6100;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===45) {
					{
					this.state = 6099;
					localctx._aggregator = this.match(SqlParser.DISTINCT);
					}
				}

				this.state = 6102;
				this.functionArgs();
				this.state = 6113;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===111) {
					{
					this.state = 6103;
					this.match(SqlParser.ORDER);
					this.state = 6104;
					this.match(SqlParser.BY);
					this.state = 6105;
					this.orderByExpression();
					this.state = 6110;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
					while (_la===1022) {
						{
						{
						this.state = 6106;
						this.match(SqlParser.COMMA);
						this.state = 6107;
						this.orderByExpression();
						}
						}
						this.state = 6112;
						this._errHandler.sync(this);
						_la = this._input.LA(1);
					}
					}
				}

				this.state = 6117;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===139) {
					{
					this.state = 6115;
					this.match(SqlParser.SEPARATOR);
					this.state = 6116;
					localctx._separator = this.match(SqlParser.STRING_LITERAL);
					}
				}

				this.state = 6119;
				this.match(SqlParser.RR_BRACKET);
				}
				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 scalarFunctionName(): ScalarFunctionNameContext {
		let localctx: ScalarFunctionNameContext = new ScalarFunctionNameContext(this, this._ctx, this.state);
		this.enterRule(localctx, 594, SqlParser.RULE_scalarFunctionName);
		try {
			this.state = 6146;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case 35:
			case 87:
			case 133:
			case 199:
			case 200:
			case 201:
			case 203:
			case 233:
			case 234:
			case 239:
			case 262:
			case 387:
			case 580:
			case 594:
			case 595:
			case 596:
			case 597:
			case 598:
			case 599:
			case 600:
			case 601:
			case 630:
			case 693:
			case 696:
			case 697:
			case 698:
			case 699:
			case 700:
			case 701:
			case 702:
			case 703:
			case 704:
			case 705:
			case 706:
			case 707:
			case 708:
			case 709:
			case 710:
			case 711:
			case 712:
			case 713:
			case 714:
			case 715:
			case 716:
			case 717:
			case 718:
			case 719:
			case 720:
			case 721:
			case 722:
			case 723:
			case 724:
			case 725:
			case 727:
			case 728:
			case 729:
			case 730:
			case 731:
			case 732:
			case 733:
			case 734:
			case 735:
			case 736:
			case 737:
			case 738:
			case 739:
			case 740:
			case 741:
			case 742:
			case 743:
			case 744:
			case 745:
			case 746:
			case 747:
			case 748:
			case 749:
			case 750:
			case 751:
			case 752:
			case 753:
			case 754:
			case 755:
			case 756:
			case 757:
			case 758:
			case 759:
			case 760:
			case 761:
			case 762:
			case 763:
			case 764:
			case 765:
			case 766:
			case 767:
			case 768:
			case 769:
			case 770:
			case 771:
			case 772:
			case 773:
			case 774:
			case 775:
			case 776:
			case 777:
			case 778:
			case 779:
			case 780:
			case 781:
			case 782:
			case 783:
			case 784:
			case 785:
			case 786:
			case 787:
			case 788:
			case 789:
			case 790:
			case 791:
			case 792:
			case 793:
			case 794:
			case 795:
			case 796:
			case 797:
			case 798:
			case 799:
			case 800:
			case 801:
			case 802:
			case 803:
			case 804:
			case 805:
			case 806:
			case 807:
			case 808:
			case 809:
			case 810:
			case 811:
			case 812:
			case 813:
			case 814:
			case 815:
			case 816:
			case 817:
			case 818:
			case 819:
			case 820:
			case 821:
			case 822:
			case 823:
			case 824:
			case 825:
			case 826:
			case 827:
			case 828:
			case 829:
			case 830:
			case 831:
			case 832:
			case 833:
			case 834:
			case 835:
			case 836:
			case 837:
			case 838:
			case 839:
			case 840:
			case 841:
			case 842:
			case 843:
			case 844:
			case 845:
			case 846:
			case 847:
			case 848:
			case 849:
			case 850:
			case 851:
			case 852:
			case 853:
			case 854:
			case 855:
			case 856:
			case 857:
			case 858:
			case 859:
			case 860:
			case 861:
			case 862:
			case 863:
			case 864:
			case 865:
			case 866:
			case 867:
			case 868:
			case 869:
			case 870:
			case 871:
			case 872:
			case 873:
			case 874:
			case 875:
			case 876:
			case 877:
			case 878:
			case 879:
			case 880:
			case 881:
			case 882:
			case 883:
			case 884:
			case 885:
			case 886:
			case 887:
			case 888:
			case 889:
			case 890:
			case 891:
			case 893:
			case 894:
			case 895:
			case 896:
			case 897:
			case 898:
			case 899:
			case 900:
			case 901:
			case 902:
			case 903:
			case 904:
			case 905:
			case 906:
			case 907:
			case 908:
			case 909:
			case 910:
			case 911:
			case 912:
			case 913:
			case 914:
			case 915:
			case 916:
			case 917:
			case 918:
			case 919:
			case 920:
			case 921:
			case 922:
			case 923:
			case 924:
			case 925:
			case 926:
			case 927:
			case 928:
			case 929:
			case 930:
			case 931:
			case 932:
			case 933:
			case 934:
			case 935:
			case 936:
			case 937:
			case 938:
			case 939:
			case 940:
			case 941:
			case 942:
			case 943:
			case 944:
			case 945:
			case 946:
			case 947:
			case 948:
			case 949:
			case 950:
			case 951:
			case 952:
			case 953:
			case 954:
			case 955:
			case 956:
			case 957:
			case 958:
			case 959:
			case 960:
			case 961:
			case 962:
			case 963:
			case 964:
			case 965:
			case 966:
			case 967:
			case 968:
			case 969:
			case 970:
			case 971:
			case 972:
			case 973:
			case 974:
			case 975:
			case 976:
			case 977:
			case 978:
			case 979:
			case 980:
			case 981:
			case 982:
			case 983:
			case 984:
			case 985:
			case 986:
			case 987:
			case 988:
			case 989:
			case 990:
			case 991:
			case 992:
			case 993:
				this.enterOuterAlt(localctx, 1);
				{
				this.state = 6123;
				this.functionNameBase();
				}
				break;
			case 638:
				this.enterOuterAlt(localctx, 2);
				{
				this.state = 6124;
				this.match(SqlParser.ASCII);
				}
				break;
			case 255:
				this.enterOuterAlt(localctx, 3);
				{
				this.state = 6125;
				this.match(SqlParser.CURDATE);
				}
				break;
			case 251:
				this.enterOuterAlt(localctx, 4);
				{
				this.state = 6126;
				this.match(SqlParser.CURRENT_DATE);
				}
				break;
			case 252:
				this.enterOuterAlt(localctx, 5);
				{
				this.state = 6127;
				this.match(SqlParser.CURRENT_TIME);
				}
				break;
			case 253:
				this.enterOuterAlt(localctx, 6);
				{
				this.state = 6128;
				this.match(SqlParser.CURRENT_TIMESTAMP);
				}
				break;
			case 256:
				this.enterOuterAlt(localctx, 7);
				{
				this.state = 6129;
				this.match(SqlParser.CURTIME);
				}
				break;
			case 257:
				this.enterOuterAlt(localctx, 8);
				{
				this.state = 6130;
				this.match(SqlParser.DATE_ADD);
				}
				break;
			case 258:
				this.enterOuterAlt(localctx, 9);
				{
				this.state = 6131;
				this.match(SqlParser.DATE_SUB);
				}
				break;
			case 69:
				this.enterOuterAlt(localctx, 10);
				{
				this.state = 6132;
				this.match(SqlParser.IF);
				}
				break;
			case 76:
				this.enterOuterAlt(localctx, 11);
				{
				this.state = 6133;
				this.match(SqlParser.INSERT);
				}
				break;
			case 254:
				this.enterOuterAlt(localctx, 12);
				{
				this.state = 6134;
				this.match(SqlParser.LOCALTIME);
				}
				break;
			case 260:
				this.enterOuterAlt(localctx, 13);
				{
				this.state = 6135;
				this.match(SqlParser.LOCALTIMESTAMP);
				}
				break;
			case 435:
				this.enterOuterAlt(localctx, 14);
				{
				this.state = 6136;
				this.match(SqlParser.MID);
				}
				break;
			case 261:
				this.enterOuterAlt(localctx, 15);
				{
				this.state = 6137;
				this.match(SqlParser.NOW);
				}
				break;
			case 127:
				this.enterOuterAlt(localctx, 16);
				{
				this.state = 6138;
				this.match(SqlParser.REPLACE);
				}
				break;
			case 263:
				this.enterOuterAlt(localctx, 17);
				{
				this.state = 6139;
				this.match(SqlParser.SUBSTR);
				}
				break;
			case 264:
				this.enterOuterAlt(localctx, 18);
				{
				this.state = 6140;
				this.match(SqlParser.SUBSTRING);
				}
				break;
			case 265:
				this.enterOuterAlt(localctx, 19);
				{
				this.state = 6141;
				this.match(SqlParser.SYSDATE);
				}
				break;
			case 266:
				this.enterOuterAlt(localctx, 20);
				{
				this.state = 6142;
				this.match(SqlParser.TRIM);
				}
				break;
			case 267:
				this.enterOuterAlt(localctx, 21);
				{
				this.state = 6143;
				this.match(SqlParser.UTC_DATE);
				}
				break;
			case 268:
				this.enterOuterAlt(localctx, 22);
				{
				this.state = 6144;
				this.match(SqlParser.UTC_TIME);
				}
				break;
			case 269:
				this.enterOuterAlt(localctx, 23);
				{
				this.state = 6145;
				this.match(SqlParser.UTC_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 passwordFunctionClause(): PasswordFunctionClauseContext {
		let localctx: PasswordFunctionClauseContext = new PasswordFunctionClauseContext(this, this._ctx, this.state);
		this.enterRule(localctx, 596, SqlParser.RULE_passwordFunctionClause);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 6148;
			localctx._functionName = this._input.LT(1);
			_la = this._input.LA(1);
			if(!(_la===454 || _la===468)) {
			    localctx._functionName = this._errHandler.recoverInline(this);
			}
			else {
				this._errHandler.reportMatch(this);
			    this.consume();
			}
			this.state = 6149;
			this.match(SqlParser.LR_BRACKET);
			this.state = 6150;
			this.functionArg();
			this.state = 6151;
			this.match(SqlParser.RR_BRACKET);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public functionArgs(): FunctionArgsContext {
		let localctx: FunctionArgsContext = new FunctionArgsContext(this, this._ctx, this.state);
		this.enterRule(localctx, 598, SqlParser.RULE_functionArgs);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 6157;
			this._errHandler.sync(this);
			switch ( this._interp.adaptivePredict(this._input, 904, this._ctx) ) {
			case 1:
				{
				this.state = 6153;
				this.constant();
				}
				break;
			case 2:
				{
				this.state = 6154;
				this.fullColumnName();
				}
				break;
			case 3:
				{
				this.state = 6155;
				this.functionCall();
				}
				break;
			case 4:
				{
				this.state = 6156;
				this.expression(0);
				}
				break;
			}
			this.state = 6168;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la===1022) {
				{
				{
				this.state = 6159;
				this.match(SqlParser.COMMA);
				this.state = 6164;
				this._errHandler.sync(this);
				switch ( this._interp.adaptivePredict(this._input, 905, this._ctx) ) {
				case 1:
					{
					this.state = 6160;
					this.constant();
					}
					break;
				case 2:
					{
					this.state = 6161;
					this.fullColumnName();
					}
					break;
				case 3:
					{
					this.state = 6162;
					this.functionCall();
					}
					break;
				case 4:
					{
					this.state = 6163;
					this.expression(0);
					}
					break;
				}
				}
				}
				this.state = 6170;
				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 functionArg(): FunctionArgContext {
		let localctx: FunctionArgContext = new FunctionArgContext(this, this._ctx, this.state);
		this.enterRule(localctx, 600, SqlParser.RULE_functionArg);
		try {
			this.state = 6175;
			this._errHandler.sync(this);
			switch ( this._interp.adaptivePredict(this._input, 907, this._ctx) ) {
			case 1:
				this.enterOuterAlt(localctx, 1);
				{
				this.state = 6171;
				this.constant();
				}
				break;
			case 2:
				this.enterOuterAlt(localctx, 2);
				{
				this.state = 6172;
				this.fullColumnName();
				}
				break;
			case 3:
				this.enterOuterAlt(localctx, 3);
				{
				this.state = 6173;
				this.functionCall();
				}
				break;
			case 4:
				this.enterOuterAlt(localctx, 4);
				{
				this.state = 6174;
				this.expression(0);
				}
				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;
	}

	public expression(): ExpressionContext;
	public expression(_p: number): ExpressionContext;
	// @RuleVersion(0)
	public expression(_p?: number): ExpressionContext {
		if (_p === undefined) {
			_p = 0;
		}

		let _parentctx: ParserRuleContext = this._ctx;
		let _parentState: number = this.state;
		let localctx: ExpressionContext = new ExpressionContext(this, this._ctx, _parentState);
		// @ts-ignore
		let _prevctx: ExpressionContext = localctx;
		let _startState: number = 602;
		this.enterRecursionRule(localctx, 602, SqlParser.RULE_expression, _p);
		let _la: number;
		try {
			let _alt: number;
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 6188;
			this._errHandler.sync(this);
			switch ( this._interp.adaptivePredict(this._input, 909, this._ctx) ) {
			case 1:
				{
				localctx = new NotExpressionContext(this, localctx);
				this._ctx = localctx;
				_prevctx = localctx;

				this.state = 6178;
				(localctx as NotExpressionContext)._notOperator = this._input.LT(1);
				_la = this._input.LA(1);
				if(!(_la===102 || _la===1014)) {
				    (localctx as NotExpressionContext)._notOperator = this._errHandler.recoverInline(this);
				}
				else {
					this._errHandler.reportMatch(this);
				    this.consume();
				}
				this.state = 6179;
				this.expression(4);
				}
				break;
			case 2:
				{
				localctx = new IsExpressionContext(this, localctx);
				this._ctx = localctx;
				_prevctx = localctx;
				this.state = 6180;
				this.predicate(0);
				this.state = 6181;
				this.match(SqlParser.IS);
				this.state = 6183;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===102) {
					{
					this.state = 6182;
					this.match(SqlParser.NOT);
					}
				}

				this.state = 6185;
				(localctx as IsExpressionContext)._testValue = this._input.LT(1);
				_la = this._input.LA(1);
				if(!(_la===56 || _la===160 || _la===569)) {
				    (localctx as IsExpressionContext)._testValue = this._errHandler.recoverInline(this);
				}
				else {
					this._errHandler.reportMatch(this);
				    this.consume();
				}
				}
				break;
			case 3:
				{
				localctx = new PredicateExpressionContext(this, localctx);
				this._ctx = localctx;
				_prevctx = localctx;
				this.state = 6187;
				this.predicate(0);
				}
				break;
			}
			this._ctx.stop = this._input.LT(-1);
			this.state = 6196;
			this._errHandler.sync(this);
			_alt = this._interp.adaptivePredict(this._input, 910, this._ctx);
			while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) {
				if (_alt === 1) {
					if (this._parseListeners != null) {
						this.triggerExitRuleEvent();
					}
					_prevctx = localctx;
					{
					{
					localctx = new LogicalExpressionContext(this, new ExpressionContext(this, _parentctx, _parentState));
					this.pushNewRecursionContext(localctx, _startState, SqlParser.RULE_expression);
					this.state = 6190;
					if (!(this.precpred(this._ctx, 3))) {
						throw this.createFailedPredicateException("this.precpred(this._ctx, 3)");
					}
					this.state = 6191;
					this.logicalOperator();
					this.state = 6192;
					this.expression(4);
					}
					}
				}
				this.state = 6198;
				this._errHandler.sync(this);
				_alt = this._interp.adaptivePredict(this._input, 910, 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.unrollRecursionContexts(_parentctx);
		}
		return localctx;
	}

	public predicate(): PredicateContext;
	public predicate(_p: number): PredicateContext;
	// @RuleVersion(0)
	public predicate(_p?: number): PredicateContext {
		if (_p === undefined) {
			_p = 0;
		}

		let _parentctx: ParserRuleContext = this._ctx;
		let _parentState: number = this.state;
		let localctx: PredicateContext = new PredicateContext(this, this._ctx, _parentState);
		let _prevctx: PredicateContext = localctx;
		let _startState: number = 604;
		this.enterRecursionRule(localctx, 604, SqlParser.RULE_predicate, _p);
		let _la: number;
		try {
			let _alt: number;
			this.enterOuterAlt(localctx, 1);
			{
			{
			localctx = new ExpressionAtomPredicateContext(this, localctx);
			this._ctx = localctx;
			_prevctx = localctx;

			this.state = 6202;
			this._errHandler.sync(this);
			switch ( this._interp.adaptivePredict(this._input, 911, this._ctx) ) {
			case 1:
				{
				this.state = 6200;
				this.match(SqlParser.LOCAL_ID);
				this.state = 6201;
				this.match(SqlParser.VAR_ASSIGN);
				}
				break;
			}
			this.state = 6204;
			this.expressionAtom(0);
			}
			this._ctx.stop = this._input.LT(-1);
			this.state = 6263;
			this._errHandler.sync(this);
			_alt = this._interp.adaptivePredict(this._input, 919, this._ctx);
			while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) {
				if (_alt === 1) {
					if (this._parseListeners != null) {
						this.triggerExitRuleEvent();
					}
					_prevctx = localctx;
					{
					this.state = 6261;
					this._errHandler.sync(this);
					switch ( this._interp.adaptivePredict(this._input, 918, this._ctx) ) {
					case 1:
						{
						localctx = new BinaryComparasionPredicateContext(this, new PredicateContext(this, _parentctx, _parentState));
						(localctx as BinaryComparasionPredicateContext)._left = _prevctx;
						this.pushNewRecursionContext(localctx, _startState, SqlParser.RULE_predicate);
						this.state = 6206;
						if (!(this.precpred(this._ctx, 7))) {
							throw this.createFailedPredicateException("this.precpred(this._ctx, 7)");
						}
						this.state = 6207;
						this.comparisonOperator();
						this.state = 6208;
						(localctx as BinaryComparasionPredicateContext)._right = this.predicate(8);
						}
						break;
					case 2:
						{
						localctx = new BetweenPredicateContext(this, new PredicateContext(this, _parentctx, _parentState));
						this.pushNewRecursionContext(localctx, _startState, SqlParser.RULE_predicate);
						this.state = 6210;
						if (!(this.precpred(this._ctx, 5))) {
							throw this.createFailedPredicateException("this.precpred(this._ctx, 5)");
						}
						this.state = 6212;
						this._errHandler.sync(this);
						_la = this._input.LA(1);
						if (_la===102) {
							{
							this.state = 6211;
							this.match(SqlParser.NOT);
							}
						}

						this.state = 6214;
						this.match(SqlParser.BETWEEN);
						this.state = 6215;
						this.predicate(0);
						this.state = 6216;
						this.match(SqlParser.AND);
						this.state = 6217;
						this.predicate(6);
						}
						break;
					case 3:
						{
						localctx = new SoundsLikePredicateContext(this, new PredicateContext(this, _parentctx, _parentState));
						this.pushNewRecursionContext(localctx, _startState, SqlParser.RULE_predicate);
						this.state = 6219;
						if (!(this.precpred(this._ctx, 4))) {
							throw this.createFailedPredicateException("this.precpred(this._ctx, 4)");
						}
						this.state = 6220;
						this.match(SqlParser.SOUNDS);
						this.state = 6221;
						this.match(SqlParser.LIKE);
						this.state = 6222;
						this.predicate(5);
						}
						break;
					case 4:
						{
						localctx = new RegexpPredicateContext(this, new PredicateContext(this, _parentctx, _parentState));
						this.pushNewRecursionContext(localctx, _startState, SqlParser.RULE_predicate);
						this.state = 6223;
						if (!(this.precpred(this._ctx, 2))) {
							throw this.createFailedPredicateException("this.precpred(this._ctx, 2)");
						}
						this.state = 6225;
						this._errHandler.sync(this);
						_la = this._input.LA(1);
						if (_la===102) {
							{
							this.state = 6224;
							this.match(SqlParser.NOT);
							}
						}

						this.state = 6227;
						(localctx as RegexpPredicateContext)._regex = this._input.LT(1);
						_la = this._input.LA(1);
						if(!(_la===123 || _la===134)) {
						    (localctx as RegexpPredicateContext)._regex = this._errHandler.recoverInline(this);
						}
						else {
							this._errHandler.reportMatch(this);
						    this.consume();
						}
						this.state = 6228;
						this.predicate(3);
						}
						break;
					case 5:
						{
						localctx = new InPredicateContext(this, new PredicateContext(this, _parentctx, _parentState));
						this.pushNewRecursionContext(localctx, _startState, SqlParser.RULE_predicate);
						this.state = 6229;
						if (!(this.precpred(this._ctx, 9))) {
							throw this.createFailedPredicateException("this.precpred(this._ctx, 9)");
						}
						this.state = 6231;
						this._errHandler.sync(this);
						_la = this._input.LA(1);
						if (_la===102) {
							{
							this.state = 6230;
							this.match(SqlParser.NOT);
							}
						}

						this.state = 6233;
						this.match(SqlParser.IN);
						this.state = 6234;
						this.match(SqlParser.LR_BRACKET);
						this.state = 6237;
						this._errHandler.sync(this);
						switch ( this._interp.adaptivePredict(this._input, 915, this._ctx) ) {
						case 1:
							{
							this.state = 6235;
							this.selectStatement();
							}
							break;
						case 2:
							{
							this.state = 6236;
							this.expressions();
							}
							break;
						}
						this.state = 6239;
						this.match(SqlParser.RR_BRACKET);
						}
						break;
					case 6:
						{
						localctx = new IsNullPredicateContext(this, new PredicateContext(this, _parentctx, _parentState));
						this.pushNewRecursionContext(localctx, _startState, SqlParser.RULE_predicate);
						this.state = 6241;
						if (!(this.precpred(this._ctx, 8))) {
							throw this.createFailedPredicateException("this.precpred(this._ctx, 8)");
						}
						this.state = 6242;
						this.match(SqlParser.IS);
						this.state = 6243;
						this.nullNotnull();
						}
						break;
					case 7:
						{
						localctx = new SubqueryComparasionPredicateContext(this, new PredicateContext(this, _parentctx, _parentState));
						this.pushNewRecursionContext(localctx, _startState, SqlParser.RULE_predicate);
						this.state = 6244;
						if (!(this.precpred(this._ctx, 6))) {
							throw this.createFailedPredicateException("this.precpred(this._ctx, 6)");
						}
						this.state = 6245;
						this.comparisonOperator();
						this.state = 6246;
						(localctx as SubqueryComparasionPredicateContext)._quantifier = this._input.LT(1);
						_la = this._input.LA(1);
						if(!(_la===6 || _la===275 || _la===527)) {
						    (localctx as SubqueryComparasionPredicateContext)._quantifier = this._errHandler.recoverInline(this);
						}
						else {
							this._errHandler.reportMatch(this);
						    this.consume();
						}
						this.state = 6247;
						this.match(SqlParser.LR_BRACKET);
						this.state = 6248;
						this.selectStatement();
						this.state = 6249;
						this.match(SqlParser.RR_BRACKET);
						}
						break;
					case 8:
						{
						localctx = new LikePredicateContext(this, new PredicateContext(this, _parentctx, _parentState));
						this.pushNewRecursionContext(localctx, _startState, SqlParser.RULE_predicate);
						this.state = 6251;
						if (!(this.precpred(this._ctx, 3))) {
							throw this.createFailedPredicateException("this.precpred(this._ctx, 3)");
						}
						this.state = 6253;
						this._errHandler.sync(this);
						_la = this._input.LA(1);
						if (_la===102) {
							{
							this.state = 6252;
							this.match(SqlParser.NOT);
							}
						}

						this.state = 6255;
						this.match(SqlParser.LIKE);
						this.state = 6256;
						this.predicate(0);
						this.state = 6259;
						this._errHandler.sync(this);
						switch ( this._interp.adaptivePredict(this._input, 917, this._ctx) ) {
						case 1:
							{
							this.state = 6257;
							this.match(SqlParser.ESCAPE);
							this.state = 6258;
							this.match(SqlParser.STRING_LITERAL);
							}
							break;
						}
						}
						break;
					}
					}
				}
				this.state = 6265;
				this._errHandler.sync(this);
				_alt = this._interp.adaptivePredict(this._input, 919, 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.unrollRecursionContexts(_parentctx);
		}
		return localctx;
	}

	public expressionAtom(): ExpressionAtomContext;
	public expressionAtom(_p: number): ExpressionAtomContext;
	// @RuleVersion(0)
	public expressionAtom(_p?: number): ExpressionAtomContext {
		if (_p === undefined) {
			_p = 0;
		}

		let _parentctx: ParserRuleContext = this._ctx;
		let _parentState: number = this.state;
		let localctx: ExpressionAtomContext = new ExpressionAtomContext(this, this._ctx, _parentState);
		let _prevctx: ExpressionAtomContext = localctx;
		let _startState: number = 606;
		this.enterRecursionRule(localctx, 606, SqlParser.RULE_expressionAtom, _p);
		let _la: number;
		try {
			let _alt: number;
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 6311;
			this._errHandler.sync(this);
			switch ( this._interp.adaptivePredict(this._input, 922, this._ctx) ) {
			case 1:
				{
				localctx = new ConstantExpressionAtomContext(this, localctx);
				this._ctx = localctx;
				_prevctx = localctx;

				this.state = 6267;
				this.constant();
				}
				break;
			case 2:
				{
				localctx = new FullColumnNameExpressionAtomContext(this, localctx);
				this._ctx = localctx;
				_prevctx = localctx;
				this.state = 6268;
				this.fullColumnName();
				}
				break;
			case 3:
				{
				localctx = new FunctionCallExpressionAtomContext(this, localctx);
				this._ctx = localctx;
				_prevctx = localctx;
				this.state = 6269;
				this.functionCall();
				}
				break;
			case 4:
				{
				localctx = new MysqlVariableExpressionAtomContext(this, localctx);
				this._ctx = localctx;
				_prevctx = localctx;
				this.state = 6270;
				this.mysqlVariable();
				}
				break;
			case 5:
				{
				localctx = new UnaryExpressionAtomContext(this, localctx);
				this._ctx = localctx;
				_prevctx = localctx;
				this.state = 6271;
				this.unaryOperator();
				this.state = 6272;
				this.expressionAtom(9);
				}
				break;
			case 6:
				{
				localctx = new BinaryExpressionAtomContext(this, localctx);
				this._ctx = localctx;
				_prevctx = localctx;
				this.state = 6274;
				this.match(SqlParser.BINARY);
				this.state = 6275;
				this.expressionAtom(8);
				}
				break;
			case 7:
				{
				localctx = new NestedExpressionAtomContext(this, localctx);
				this._ctx = localctx;
				_prevctx = localctx;
				this.state = 6276;
				this.match(SqlParser.LR_BRACKET);
				this.state = 6277;
				this.expression(0);
				this.state = 6282;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				while (_la===1022) {
					{
					{
					this.state = 6278;
					this.match(SqlParser.COMMA);
					this.state = 6279;
					this.expression(0);
					}
					}
					this.state = 6284;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
				}
				this.state = 6285;
				this.match(SqlParser.RR_BRACKET);
				}
				break;
			case 8:
				{
				localctx = new NestedRowExpressionAtomContext(this, localctx);
				this._ctx = localctx;
				_prevctx = localctx;
				this.state = 6287;
				this.match(SqlParser.ROW);
				this.state = 6288;
				this.match(SqlParser.LR_BRACKET);
				this.state = 6289;
				this.expression(0);
				this.state = 6292;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				do {
					{
					{
					this.state = 6290;
					this.match(SqlParser.COMMA);
					this.state = 6291;
					this.expression(0);
					}
					}
					this.state = 6294;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
				} while (_la===1022);
				this.state = 6296;
				this.match(SqlParser.RR_BRACKET);
				}
				break;
			case 9:
				{
				localctx = new ExistsExpessionAtomContext(this, localctx);
				this._ctx = localctx;
				_prevctx = localctx;
				this.state = 6298;
				this.match(SqlParser.EXISTS);
				this.state = 6299;
				this.match(SqlParser.LR_BRACKET);
				this.state = 6300;
				this.selectStatement();
				this.state = 6301;
				this.match(SqlParser.RR_BRACKET);
				}
				break;
			case 10:
				{
				localctx = new SubqueryExpessionAtomContext(this, localctx);
				this._ctx = localctx;
				_prevctx = localctx;
				this.state = 6303;
				this.match(SqlParser.LR_BRACKET);
				this.state = 6304;
				this.selectStatement();
				this.state = 6305;
				this.match(SqlParser.RR_BRACKET);
				}
				break;
			case 11:
				{
				localctx = new IntervalExpressionAtomContext(this, localctx);
				this._ctx = localctx;
				_prevctx = localctx;
				this.state = 6307;
				this.match(SqlParser.INTERVAL);
				this.state = 6308;
				this.expression(0);
				this.state = 6309;
				this.intervalType();
				}
				break;
			}
			this._ctx.stop = this._input.LT(-1);
			this.state = 6326;
			this._errHandler.sync(this);
			_alt = this._interp.adaptivePredict(this._input, 924, this._ctx);
			while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) {
				if (_alt === 1) {
					if (this._parseListeners != null) {
						this.triggerExitRuleEvent();
					}
					_prevctx = localctx;
					{
					this.state = 6324;
					this._errHandler.sync(this);
					switch ( this._interp.adaptivePredict(this._input, 923, this._ctx) ) {
					case 1:
						{
						localctx = new BitExpressionAtomContext(this, new ExpressionAtomContext(this, _parentctx, _parentState));
						(localctx as BitExpressionAtomContext)._left = _prevctx;
						this.pushNewRecursionContext(localctx, _startState, SqlParser.RULE_expressionAtom);
						this.state = 6313;
						if (!(this.precpred(this._ctx, 2))) {
							throw this.createFailedPredicateException("this.precpred(this._ctx, 2)");
						}
						this.state = 6314;
						this.bitOperator();
						this.state = 6315;
						(localctx as BitExpressionAtomContext)._right = this.expressionAtom(3);
						}
						break;
					case 2:
						{
						localctx = new MathExpressionAtomContext(this, new ExpressionAtomContext(this, _parentctx, _parentState));
						(localctx as MathExpressionAtomContext)._left = _prevctx;
						this.pushNewRecursionContext(localctx, _startState, SqlParser.RULE_expressionAtom);
						this.state = 6317;
						if (!(this.precpred(this._ctx, 1))) {
							throw this.createFailedPredicateException("this.precpred(this._ctx, 1)");
						}
						this.state = 6318;
						this.mathOperator();
						this.state = 6319;
						(localctx as MathExpressionAtomContext)._right = this.expressionAtom(2);
						}
						break;
					case 3:
						{
						localctx = new CollateExpressionAtomContext(this, new ExpressionAtomContext(this, _parentctx, _parentState));
						this.pushNewRecursionContext(localctx, _startState, SqlParser.RULE_expressionAtom);
						this.state = 6321;
						if (!(this.precpred(this._ctx, 11))) {
							throw this.createFailedPredicateException("this.precpred(this._ctx, 11)");
						}
						this.state = 6322;
						this.match(SqlParser.COLLATE);
						this.state = 6323;
						this.collationName();
						}
						break;
					}
					}
				}
				this.state = 6328;
				this._errHandler.sync(this);
				_alt = this._interp.adaptivePredict(this._input, 924, 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.unrollRecursionContexts(_parentctx);
		}
		return localctx;
	}
	// @RuleVersion(0)
	public unaryOperator(): UnaryOperatorContext {
		let localctx: UnaryOperatorContext = new UnaryOperatorContext(this, this._ctx, this.state);
		this.enterRule(localctx, 608, SqlParser.RULE_unaryOperator);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 6329;
			_la = this._input.LA(1);
			if(!(_la===102 || ((((_la - 1006)) & ~0x1F) === 0 && ((1 << (_la - 1006)) & 773) !== 0))) {
			this._errHandler.recoverInline(this);
			}
			else {
				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 comparisonOperator(): ComparisonOperatorContext {
		let localctx: ComparisonOperatorContext = new ComparisonOperatorContext(this, this._ctx, this.state);
		this.enterRule(localctx, 610, SqlParser.RULE_comparisonOperator);
		try {
			this.state = 6345;
			this._errHandler.sync(this);
			switch ( this._interp.adaptivePredict(this._input, 925, this._ctx) ) {
			case 1:
				this.enterOuterAlt(localctx, 1);
				{
				this.state = 6331;
				this.match(SqlParser.EQUAL_SYMBOL);
				}
				break;
			case 2:
				this.enterOuterAlt(localctx, 2);
				{
				this.state = 6332;
				this.match(SqlParser.GREATER_SYMBOL);
				}
				break;
			case 3:
				this.enterOuterAlt(localctx, 3);
				{
				this.state = 6333;
				this.match(SqlParser.LESS_SYMBOL);
				}
				break;
			case 4:
				this.enterOuterAlt(localctx, 4);
				{
				this.state = 6334;
				this.match(SqlParser.LESS_SYMBOL);
				this.state = 6335;
				this.match(SqlParser.EQUAL_SYMBOL);
				}
				break;
			case 5:
				this.enterOuterAlt(localctx, 5);
				{
				this.state = 6336;
				this.match(SqlParser.GREATER_SYMBOL);
				this.state = 6337;
				this.match(SqlParser.EQUAL_SYMBOL);
				}
				break;
			case 6:
				this.enterOuterAlt(localctx, 6);
				{
				this.state = 6338;
				this.match(SqlParser.LESS_SYMBOL);
				this.state = 6339;
				this.match(SqlParser.GREATER_SYMBOL);
				}
				break;
			case 7:
				this.enterOuterAlt(localctx, 7);
				{
				this.state = 6340;
				this.match(SqlParser.EXCLAMATION_SYMBOL);
				this.state = 6341;
				this.match(SqlParser.EQUAL_SYMBOL);
				}
				break;
			case 8:
				this.enterOuterAlt(localctx, 8);
				{
				this.state = 6342;
				this.match(SqlParser.LESS_SYMBOL);
				this.state = 6343;
				this.match(SqlParser.EQUAL_SYMBOL);
				this.state = 6344;
				this.match(SqlParser.GREATER_SYMBOL);
				}
				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 logicalOperator(): LogicalOperatorContext {
		let localctx: LogicalOperatorContext = new LogicalOperatorContext(this, this._ctx, this.state);
		this.enterRule(localctx, 612, SqlParser.RULE_logicalOperator);
		try {
			this.state = 6354;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case 10:
				this.enterOuterAlt(localctx, 1);
				{
				this.state = 6347;
				this.match(SqlParser.AND);
				}
				break;
			case 1017:
				this.enterOuterAlt(localctx, 2);
				{
				this.state = 6348;
				this.match(SqlParser.BIT_AND_OP);
				this.state = 6349;
				this.match(SqlParser.BIT_AND_OP);
				}
				break;
			case 176:
				this.enterOuterAlt(localctx, 3);
				{
				this.state = 6350;
				this.match(SqlParser.XOR);
				}
				break;
			case 110:
				this.enterOuterAlt(localctx, 4);
				{
				this.state = 6351;
				this.match(SqlParser.OR);
				}
				break;
			case 1016:
				this.enterOuterAlt(localctx, 5);
				{
				this.state = 6352;
				this.match(SqlParser.BIT_OR_OP);
				this.state = 6353;
				this.match(SqlParser.BIT_OR_OP);
				}
				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 bitOperator(): BitOperatorContext {
		let localctx: BitOperatorContext = new BitOperatorContext(this, this._ctx, this.state);
		this.enterRule(localctx, 614, SqlParser.RULE_bitOperator);
		try {
			this.state = 6363;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case 1013:
				this.enterOuterAlt(localctx, 1);
				{
				this.state = 6356;
				this.match(SqlParser.LESS_SYMBOL);
				this.state = 6357;
				this.match(SqlParser.LESS_SYMBOL);
				}
				break;
			case 1012:
				this.enterOuterAlt(localctx, 2);
				{
				this.state = 6358;
				this.match(SqlParser.GREATER_SYMBOL);
				this.state = 6359;
				this.match(SqlParser.GREATER_SYMBOL);
				}
				break;
			case 1017:
				this.enterOuterAlt(localctx, 3);
				{
				this.state = 6360;
				this.match(SqlParser.BIT_AND_OP);
				}
				break;
			case 1018:
				this.enterOuterAlt(localctx, 4);
				{
				this.state = 6361;
				this.match(SqlParser.BIT_XOR_OP);
				}
				break;
			case 1016:
				this.enterOuterAlt(localctx, 5);
				{
				this.state = 6362;
				this.match(SqlParser.BIT_OR_OP);
				}
				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 mathOperator(): MathOperatorContext {
		let localctx: MathOperatorContext = new MathOperatorContext(this, this._ctx, this.state);
		this.enterRule(localctx, 616, SqlParser.RULE_mathOperator);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 6365;
			_la = this._input.LA(1);
			if(!(((((_la - 1003)) & ~0x1F) === 0 && ((1 << (_la - 1003)) & 255) !== 0))) {
			this._errHandler.recoverInline(this);
			}
			else {
				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 charsetNameBase(): CharsetNameBaseContext {
		let localctx: CharsetNameBaseContext = new CharsetNameBaseContext(this, this._ctx, this.state);
		this.enterRule(localctx, 618, SqlParser.RULE_charsetNameBase);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 6367;
			_la = this._input.LA(1);
			if(!(((((_la - 637)) & ~0x1F) === 0 && ((1 << (_la - 637)) & 4294967295) !== 0) || ((((_la - 669)) & ~0x1F) === 0 && ((1 << (_la - 669)) & 255) !== 0))) {
			this._errHandler.recoverInline(this);
			}
			else {
				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 transactionLevelBase(): TransactionLevelBaseContext {
		let localctx: TransactionLevelBaseContext = new TransactionLevelBaseContext(this, this._ctx, this.state);
		this.enterRule(localctx, 620, SqlParser.RULE_transactionLevelBase);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 6369;
			_la = this._input.LA(1);
			if(!(((((_la - 689)) & ~0x1F) === 0 && ((1 << (_la - 689)) & 15) !== 0))) {
			this._errHandler.recoverInline(this);
			}
			else {
				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 privilegesBase(): PrivilegesBaseContext {
		let localctx: PrivilegesBaseContext = new PrivilegesBaseContext(this, this._ctx, this.state);
		this.enterRule(localctx, 622, SqlParser.RULE_privilegesBase);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 6371;
			_la = this._input.LA(1);
			if(!(((((_la - 602)) & ~0x1F) === 0 && ((1 << (_la - 602)) & 511) !== 0))) {
			this._errHandler.recoverInline(this);
			}
			else {
				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 intervalTypeBase(): IntervalTypeBaseContext {
		let localctx: IntervalTypeBaseContext = new IntervalTypeBaseContext(this, this._ctx, this.state);
		this.enterRule(localctx, 624, SqlParser.RULE_intervalTypeBase);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 6373;
			_la = this._input.LA(1);
			if(!(((((_la - 594)) & ~0x1F) === 0 && ((1 << (_la - 594)) & 255) !== 0))) {
			this._errHandler.recoverInline(this);
			}
			else {
				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 dataTypeBase(): DataTypeBaseContext {
		let localctx: DataTypeBaseContext = new DataTypeBaseContext(this, this._ctx, this.state);
		this.enterRule(localctx, 626, SqlParser.RULE_dataTypeBase);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 6375;
			_la = this._input.LA(1);
			if(!(((((_la - 199)) & ~0x1F) === 0 && ((1 << (_la - 199)) & 1179679) !== 0))) {
			this._errHandler.recoverInline(this);
			}
			else {
				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 keywordsCanBeId(): KeywordsCanBeIdContext {
		let localctx: KeywordsCanBeIdContext = new KeywordsCanBeIdContext(this, this._ctx, this.state);
		this.enterRule(localctx, 628, SqlParser.RULE_keywordsCanBeId);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 6377;
			_la = this._input.LA(1);
			if(!(_la===32 || _la===44 || _la===105 || _la===151 || _la===221 || ((((_la - 270)) & ~0x1F) === 0 && ((1 << (_la - 270)) & 4294967295) !== 0) || ((((_la - 302)) & ~0x1F) === 0 && ((1 << (_la - 302)) & 4294967295) !== 0) || ((((_la - 334)) & ~0x1F) === 0 && ((1 << (_la - 334)) & 4294967295) !== 0) || ((((_la - 366)) & ~0x1F) === 0 && ((1 << (_la - 366)) & 4292870143) !== 0) || ((((_la - 398)) & ~0x1F) === 0 && ((1 << (_la - 398)) & 4294967295) !== 0) || ((((_la - 430)) & ~0x1F) === 0 && ((1 << (_la - 430)) & 4294967295) !== 0) || ((((_la - 462)) & ~0x1F) === 0 && ((1 << (_la - 462)) & 4294967295) !== 0) || ((((_la - 494)) & ~0x1F) === 0 && ((1 << (_la - 494)) & 4294967295) !== 0) || ((((_la - 526)) & ~0x1F) === 0 && ((1 << (_la - 526)) & 4293918719) !== 0) || ((((_la - 558)) & ~0x1F) === 0 && ((1 << (_la - 558)) & 2141192191) !== 0) || ((((_la - 593)) & ~0x1F) === 0 && ((1 << (_la - 593)) & 4294443009) !== 0) || ((((_la - 625)) & ~0x1F) === 0 && ((1 << (_la - 625)) & 4095) !== 0) || _la===682 || _la===726 || _la===892)) {
			this._errHandler.recoverInline(this);
			}
			else {
				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 functionNameBase(): FunctionNameBaseContext {
		let localctx: FunctionNameBaseContext = new FunctionNameBaseContext(this, this._ctx, this.state);
		this.enterRule(localctx, 630, SqlParser.RULE_functionNameBase);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 6379;
			_la = this._input.LA(1);
			if(!(_la===35 || _la===87 || _la===133 || ((((_la - 199)) & ~0x1F) === 0 && ((1 << (_la - 199)) & 23) !== 0) || ((((_la - 233)) & ~0x1F) === 0 && ((1 << (_la - 233)) & 536870979) !== 0) || _la===387 || ((((_la - 580)) & ~0x1F) === 0 && ((1 << (_la - 580)) & 4177921) !== 0) || _la===630 || ((((_la - 693)) & ~0x1F) === 0 && ((1 << (_la - 693)) & 4294967289) !== 0) || ((((_la - 725)) & ~0x1F) === 0 && ((1 << (_la - 725)) & 4294967293) !== 0) || ((((_la - 757)) & ~0x1F) === 0 && ((1 << (_la - 757)) & 4294967295) !== 0) || ((((_la - 789)) & ~0x1F) === 0 && ((1 << (_la - 789)) & 4294967295) !== 0) || ((((_la - 821)) & ~0x1F) === 0 && ((1 << (_la - 821)) & 4294967295) !== 0) || ((((_la - 853)) & ~0x1F) === 0 && ((1 << (_la - 853)) & 4294967295) !== 0) || ((((_la - 885)) & ~0x1F) === 0 && ((1 << (_la - 885)) & 4294967167) !== 0) || ((((_la - 917)) & ~0x1F) === 0 && ((1 << (_la - 917)) & 4294967295) !== 0) || ((((_la - 949)) & ~0x1F) === 0 && ((1 << (_la - 949)) & 4294967295) !== 0) || ((((_la - 981)) & ~0x1F) === 0 && ((1 << (_la - 981)) & 8191) !== 0))) {
			this._errHandler.recoverInline(this);
			}
			else {
				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;
	}

	public sempred(localctx: RuleContext, ruleIndex: number, predIndex: number): boolean {
		switch (ruleIndex) {
		case 301:
			return this.expression_sempred(localctx as ExpressionContext, predIndex);
		case 302:
			return this.predicate_sempred(localctx as PredicateContext, predIndex);
		case 303:
			return this.expressionAtom_sempred(localctx as ExpressionAtomContext, predIndex);
		}
		return true;
	}
	private expression_sempred(localctx: ExpressionContext, predIndex: number): boolean {
		switch (predIndex) {
		case 0:
			return this.precpred(this._ctx, 3);
		}
		return true;
	}
	private predicate_sempred(localctx: PredicateContext, predIndex: number): boolean {
		switch (predIndex) {
		case 1:
			return this.precpred(this._ctx, 7);
		case 2:
			return this.precpred(this._ctx, 5);
		case 3:
			return this.precpred(this._ctx, 4);
		case 4:
			return this.precpred(this._ctx, 2);
		case 5:
			return this.precpred(this._ctx, 9);
		case 6:
			return this.precpred(this._ctx, 8);
		case 7:
			return this.precpred(this._ctx, 6);
		case 8:
			return this.precpred(this._ctx, 3);
		}
		return true;
	}
	private expressionAtom_sempred(localctx: ExpressionAtomContext, predIndex: number): boolean {
		switch (predIndex) {
		case 9:
			return this.precpred(this._ctx, 2);
		case 10:
			return this.precpred(this._ctx, 1);
		case 11:
			return this.precpred(this._ctx, 11);
		}
		return true;
	}

	public static readonly _serializedATN: number[] = [4,1,1048,6382,2,0,7,
	0,2,1,7,1,2,2,7,2,2,3,7,3,2,4,7,4,2,5,7,5,2,6,7,6,2,7,7,7,2,8,7,8,2,9,7,
	9,2,10,7,10,2,11,7,11,2,12,7,12,2,13,7,13,2,14,7,14,2,15,7,15,2,16,7,16,
	2,17,7,17,2,18,7,18,2,19,7,19,2,20,7,20,2,21,7,21,2,22,7,22,2,23,7,23,2,
	24,7,24,2,25,7,25,2,26,7,26,2,27,7,27,2,28,7,28,2,29,7,29,2,30,7,30,2,31,
	7,31,2,32,7,32,2,33,7,33,2,34,7,34,2,35,7,35,2,36,7,36,2,37,7,37,2,38,7,
	38,2,39,7,39,2,40,7,40,2,41,7,41,2,42,7,42,2,43,7,43,2,44,7,44,2,45,7,45,
	2,46,7,46,2,47,7,47,2,48,7,48,2,49,7,49,2,50,7,50,2,51,7,51,2,52,7,52,2,
	53,7,53,2,54,7,54,2,55,7,55,2,56,7,56,2,57,7,57,2,58,7,58,2,59,7,59,2,60,
	7,60,2,61,7,61,2,62,7,62,2,63,7,63,2,64,7,64,2,65,7,65,2,66,7,66,2,67,7,
	67,2,68,7,68,2,69,7,69,2,70,7,70,2,71,7,71,2,72,7,72,2,73,7,73,2,74,7,74,
	2,75,7,75,2,76,7,76,2,77,7,77,2,78,7,78,2,79,7,79,2,80,7,80,2,81,7,81,2,
	82,7,82,2,83,7,83,2,84,7,84,2,85,7,85,2,86,7,86,2,87,7,87,2,88,7,88,2,89,
	7,89,2,90,7,90,2,91,7,91,2,92,7,92,2,93,7,93,2,94,7,94,2,95,7,95,2,96,7,
	96,2,97,7,97,2,98,7,98,2,99,7,99,2,100,7,100,2,101,7,101,2,102,7,102,2,
	103,7,103,2,104,7,104,2,105,7,105,2,106,7,106,2,107,7,107,2,108,7,108,2,
	109,7,109,2,110,7,110,2,111,7,111,2,112,7,112,2,113,7,113,2,114,7,114,2,
	115,7,115,2,116,7,116,2,117,7,117,2,118,7,118,2,119,7,119,2,120,7,120,2,
	121,7,121,2,122,7,122,2,123,7,123,2,124,7,124,2,125,7,125,2,126,7,126,2,
	127,7,127,2,128,7,128,2,129,7,129,2,130,7,130,2,131,7,131,2,132,7,132,2,
	133,7,133,2,134,7,134,2,135,7,135,2,136,7,136,2,137,7,137,2,138,7,138,2,
	139,7,139,2,140,7,140,2,141,7,141,2,142,7,142,2,143,7,143,2,144,7,144,2,
	145,7,145,2,146,7,146,2,147,7,147,2,148,7,148,2,149,7,149,2,150,7,150,2,
	151,7,151,2,152,7,152,2,153,7,153,2,154,7,154,2,155,7,155,2,156,7,156,2,
	157,7,157,2,158,7,158,2,159,7,159,2,160,7,160,2,161,7,161,2,162,7,162,2,
	163,7,163,2,164,7,164,2,165,7,165,2,166,7,166,2,167,7,167,2,168,7,168,2,
	169,7,169,2,170,7,170,2,171,7,171,2,172,7,172,2,173,7,173,2,174,7,174,2,
	175,7,175,2,176,7,176,2,177,7,177,2,178,7,178,2,179,7,179,2,180,7,180,2,
	181,7,181,2,182,7,182,2,183,7,183,2,184,7,184,2,185,7,185,2,186,7,186,2,
	187,7,187,2,188,7,188,2,189,7,189,2,190,7,190,2,191,7,191,2,192,7,192,2,
	193,7,193,2,194,7,194,2,195,7,195,2,196,7,196,2,197,7,197,2,198,7,198,2,
	199,7,199,2,200,7,200,2,201,7,201,2,202,7,202,2,203,7,203,2,204,7,204,2,
	205,7,205,2,206,7,206,2,207,7,207,2,208,7,208,2,209,7,209,2,210,7,210,2,
	211,7,211,2,212,7,212,2,213,7,213,2,214,7,214,2,215,7,215,2,216,7,216,2,
	217,7,217,2,218,7,218,2,219,7,219,2,220,7,220,2,221,7,221,2,222,7,222,2,
	223,7,223,2,224,7,224,2,225,7,225,2,226,7,226,2,227,7,227,2,228,7,228,2,
	229,7,229,2,230,7,230,2,231,7,231,2,232,7,232,2,233,7,233,2,234,7,234,2,
	235,7,235,2,236,7,236,2,237,7,237,2,238,7,238,2,239,7,239,2,240,7,240,2,
	241,7,241,2,242,7,242,2,243,7,243,2,244,7,244,2,245,7,245,2,246,7,246,2,
	247,7,247,2,248,7,248,2,249,7,249,2,250,7,250,2,251,7,251,2,252,7,252,2,
	253,7,253,2,254,7,254,2,255,7,255,2,256,7,256,2,257,7,257,2,258,7,258,2,
	259,7,259,2,260,7,260,2,261,7,261,2,262,7,262,2,263,7,263,2,264,7,264,2,
	265,7,265,2,266,7,266,2,267,7,267,2,268,7,268,2,269,7,269,2,270,7,270,2,
	271,7,271,2,272,7,272,2,273,7,273,2,274,7,274,2,275,7,275,2,276,7,276,2,
	277,7,277,2,278,7,278,2,279,7,279,2,280,7,280,2,281,7,281,2,282,7,282,2,
	283,7,283,2,284,7,284,2,285,7,285,2,286,7,286,2,287,7,287,2,288,7,288,2,
	289,7,289,2,290,7,290,2,291,7,291,2,292,7,292,2,293,7,293,2,294,7,294,2,
	295,7,295,2,296,7,296,2,297,7,297,2,298,7,298,2,299,7,299,2,300,7,300,2,
	301,7,301,2,302,7,302,2,303,7,303,2,304,7,304,2,305,7,305,2,306,7,306,2,
	307,7,307,2,308,7,308,2,309,7,309,2,310,7,310,2,311,7,311,2,312,7,312,2,
	313,7,313,2,314,7,314,2,315,7,315,1,0,1,0,1,0,1,1,3,1,637,8,1,1,1,3,1,640,
	8,1,1,1,1,1,1,2,1,2,3,2,646,8,2,1,2,3,2,649,8,2,1,2,5,2,652,8,2,10,2,12,
	2,655,9,2,1,2,1,2,3,2,659,8,2,1,2,3,2,662,8,2,1,2,3,2,665,8,2,1,3,1,3,1,
	3,1,3,1,3,1,3,1,3,3,3,674,8,3,1,4,1,4,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,
	5,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,
	5,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5,3,5,713,8,5,1,6,1,6,1,6,1,6,1,6,1,6,1,
	6,1,6,1,6,1,6,3,6,725,8,6,1,7,1,7,1,7,1,7,1,7,1,7,1,7,1,7,1,7,3,7,736,8,
	7,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,3,8,753,8,
	8,1,9,1,9,1,9,3,9,758,8,9,1,10,1,10,1,10,1,10,1,10,1,10,1,10,1,10,1,10,
	1,10,3,10,770,8,10,1,11,1,11,1,11,1,11,1,11,1,11,1,11,1,11,1,11,1,11,1,
	11,1,11,1,11,1,11,1,11,1,11,1,11,1,11,1,11,1,11,1,11,1,11,1,11,1,11,1,11,
	3,11,797,8,11,1,12,1,12,1,12,1,12,1,12,1,12,1,12,3,12,806,8,12,1,13,1,13,
	1,13,3,13,811,8,13,1,13,1,13,5,13,815,8,13,10,13,12,13,818,9,13,1,14,1,
	14,3,14,822,8,14,1,14,1,14,3,14,826,8,14,1,14,1,14,1,14,1,14,1,14,1,14,
	1,14,3,14,835,8,14,1,14,3,14,838,8,14,1,14,3,14,841,8,14,1,14,1,14,3,14,
	845,8,14,1,14,1,14,1,14,1,15,1,15,3,15,852,8,15,1,15,3,15,855,8,15,1,15,
	1,15,1,15,3,15,860,8,15,1,15,1,15,1,15,1,15,5,15,866,8,15,10,15,12,15,869,
	9,15,1,15,1,15,3,15,873,8,15,1,15,1,15,1,15,3,15,878,8,15,1,15,5,15,881,
	8,15,10,15,12,15,884,9,15,1,16,1,16,1,16,1,16,1,16,1,16,1,16,1,16,1,16,
	3,16,895,8,16,1,16,3,16,898,8,16,1,16,1,16,3,16,902,8,16,1,16,3,16,905,
	8,16,1,16,1,16,3,16,909,8,16,1,16,3,16,912,8,16,1,16,1,16,3,16,916,8,16,
	1,16,3,16,919,8,16,1,16,3,16,922,8,16,1,16,1,16,3,16,926,8,16,1,16,3,16,
	929,8,16,1,16,1,16,3,16,933,8,16,1,16,1,16,1,17,1,17,3,17,939,8,17,1,17,
	1,17,1,17,1,17,3,17,945,8,17,1,17,1,17,5,17,949,8,17,10,17,12,17,952,9,
	17,1,17,1,17,5,17,956,8,17,10,17,12,17,959,9,17,1,17,1,17,1,18,1,18,3,18,
	965,8,18,1,18,1,18,1,18,1,18,3,18,971,8,18,1,18,1,18,5,18,975,8,18,10,18,
	12,18,978,9,18,1,18,1,18,1,18,1,18,5,18,984,8,18,10,18,12,18,987,9,18,1,
	18,1,18,3,18,991,8,18,1,19,1,19,1,19,1,19,1,19,1,19,1,19,1,19,1,19,1,19,
	1,19,1,19,5,19,1005,8,19,10,19,12,19,1008,9,19,1,19,1,19,1,20,1,20,3,20,
	1014,8,20,1,20,1,20,3,20,1018,8,20,1,20,1,20,1,20,1,20,1,20,1,20,1,20,1,
	20,3,20,1028,8,20,1,20,1,20,3,20,1032,8,20,1,20,1,20,3,20,1036,8,20,1,20,
	1,20,3,20,1040,8,20,1,20,1,20,3,20,1044,8,20,1,20,5,20,1047,8,20,10,20,
	12,20,1050,9,20,3,20,1052,8,20,1,20,3,20,1055,8,20,1,20,3,20,1058,8,20,
	1,20,3,20,1061,8,20,1,20,1,20,1,20,1,20,3,20,1067,8,20,1,20,1,20,3,20,1071,
	8,20,1,20,1,20,1,20,1,20,3,20,1077,8,20,1,20,5,20,1080,8,20,10,20,12,20,
	1083,9,20,3,20,1085,8,20,1,20,3,20,1088,8,20,3,20,1090,8,20,1,21,1,21,1,
	21,1,21,1,21,1,21,1,21,1,21,1,21,3,21,1101,8,21,1,21,1,21,3,21,1105,8,21,
	1,21,3,21,1108,8,21,1,22,1,22,1,22,1,22,1,22,1,22,1,22,1,22,1,22,1,22,1,
	22,1,22,3,22,1122,8,22,1,22,3,22,1125,8,22,1,22,1,22,3,22,1129,8,22,1,22,
	3,22,1132,8,22,1,22,1,22,3,22,1136,8,22,1,22,3,22,1139,8,22,1,22,1,22,3,
	22,1143,8,22,1,22,3,22,1146,8,22,1,22,1,22,3,22,1150,8,22,1,22,3,22,1153,
	8,22,1,22,3,22,1156,8,22,1,22,1,22,3,22,1160,8,22,1,22,3,22,1163,8,22,1,
	22,1,22,3,22,1167,8,22,1,22,1,22,1,23,1,23,3,23,1173,8,23,1,23,1,23,1,23,
	1,23,1,23,1,23,1,23,1,23,1,23,1,23,1,23,3,23,1186,8,23,1,23,1,23,1,24,1,
	24,1,24,3,24,1193,8,24,1,24,1,24,1,24,3,24,1198,8,24,1,24,3,24,1201,8,24,
	1,24,1,24,1,24,3,24,1206,8,24,1,24,1,24,1,24,1,24,1,24,1,24,3,24,1214,8,
	24,1,24,1,24,1,24,1,24,3,24,1220,8,24,1,24,1,24,3,24,1224,8,24,1,25,3,25,
	1227,8,25,1,25,1,25,1,25,3,25,1232,8,25,1,25,3,25,1235,8,25,1,25,1,25,3,
	25,1239,8,25,1,25,3,25,1242,8,25,1,25,1,25,3,25,1246,8,25,1,25,3,25,1249,
	8,25,1,26,1,26,1,26,1,26,1,26,1,26,3,26,1257,8,26,3,26,1259,8,26,1,27,1,
	27,1,27,5,27,1264,8,27,10,27,12,27,1267,9,27,1,27,1,27,1,27,3,27,1272,8,
	27,1,27,1,27,1,27,1,27,5,27,1278,8,27,10,27,12,27,1281,9,27,3,27,1283,8,
	27,1,27,1,27,1,27,5,27,1288,8,27,10,27,12,27,1291,9,27,3,27,1293,8,27,3,
	27,1295,8,27,1,28,1,28,1,28,1,28,3,28,1301,8,28,1,29,1,29,1,29,1,29,3,29,
	1307,8,29,1,29,1,29,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,
	30,1,30,1,30,3,30,1324,8,30,1,31,1,31,1,31,1,31,1,31,3,31,1331,8,31,1,32,
	1,32,1,32,1,33,1,33,3,33,1338,8,33,1,33,1,33,1,33,1,33,1,33,1,33,1,33,1,
	33,1,33,3,33,1349,8,33,1,34,3,34,1352,8,34,1,34,1,34,1,34,1,35,1,35,1,35,
	1,36,1,36,1,36,1,36,1,36,3,36,1365,8,36,1,36,1,36,1,36,1,36,1,36,1,36,1,
	36,1,36,1,36,1,36,1,36,3,36,1378,8,36,1,36,1,36,1,36,3,36,1383,8,36,1,37,
	1,37,1,37,1,37,1,37,1,37,1,37,1,37,1,37,1,37,1,37,1,37,1,37,1,37,3,37,1399,
	8,37,1,38,1,38,1,38,1,38,5,38,1405,8,38,10,38,12,38,1408,9,38,1,38,1,38,
	1,39,1,39,1,39,1,39,1,39,3,39,1417,8,39,1,40,1,40,5,40,1421,8,40,10,40,
	12,40,1424,9,40,1,41,1,41,1,41,1,41,1,41,1,41,1,41,3,41,1433,8,41,1,41,
	3,41,1436,8,41,1,41,1,41,1,41,3,41,1441,8,41,1,41,1,41,1,41,1,41,1,41,1,
	41,1,41,1,41,1,41,1,41,1,41,3,41,1454,8,41,1,41,1,41,1,41,1,41,1,41,3,41,
	1461,8,41,1,41,1,41,1,41,1,41,1,41,3,41,1468,8,41,3,41,1470,8,41,1,41,1,
	41,1,41,1,41,1,41,3,41,1477,8,41,1,42,1,42,3,42,1481,8,42,3,42,1483,8,42,
	1,42,1,42,1,42,3,42,1488,8,42,1,42,3,42,1491,8,42,1,42,1,42,5,42,1495,8,
	42,10,42,12,42,1498,9,42,1,42,1,42,3,42,1502,8,42,3,42,1504,8,42,1,42,1,
	42,3,42,1508,8,42,1,42,3,42,1511,8,42,1,42,3,42,1514,8,42,1,42,1,42,5,42,
	1518,8,42,10,42,12,42,1521,9,42,1,42,1,42,3,42,1525,8,42,3,42,1527,8,42,
	1,42,1,42,1,42,3,42,1532,8,42,1,42,1,42,1,42,1,42,1,42,3,42,1539,8,42,3,
	42,1541,8,42,1,42,1,42,1,42,1,42,1,42,3,42,1548,8,42,1,43,1,43,1,43,3,43,
	1553,8,43,1,43,1,43,3,43,1557,8,43,1,43,3,43,1560,8,43,1,44,1,44,1,44,1,
	44,1,44,1,44,3,44,1568,8,44,1,44,1,44,1,44,1,44,1,44,1,44,3,44,1576,8,44,
	3,44,1578,8,44,1,45,1,45,1,45,1,45,1,45,1,45,3,45,1586,8,45,1,46,1,46,3,
	46,1590,8,46,1,46,3,46,1593,8,46,1,46,1,46,5,46,1597,8,46,10,46,12,46,1600,
	9,46,1,46,1,46,3,46,1604,8,46,1,46,3,46,1607,8,46,1,46,1,46,5,46,1611,8,
	46,10,46,12,46,1614,9,46,3,46,1616,8,46,1,47,1,47,3,47,1620,8,47,1,47,1,
	47,1,47,3,47,1625,8,47,1,47,1,47,1,47,3,47,1630,8,47,1,47,1,47,3,47,1634,
	8,47,1,47,1,47,1,47,3,47,1639,8,47,1,47,3,47,1642,8,47,1,47,1,47,3,47,1646,
	8,47,1,47,1,47,3,47,1650,8,47,1,47,1,47,3,47,1654,8,47,1,47,1,47,3,47,1658,
	8,47,1,47,1,47,1,47,3,47,1663,8,47,1,47,1,47,1,47,3,47,1668,8,47,1,47,1,
	47,1,47,3,47,1673,8,47,1,47,1,47,1,47,1,47,3,47,1679,8,47,1,47,1,47,1,47,
	3,47,1684,8,47,1,47,1,47,1,47,3,47,1689,8,47,1,47,1,47,1,47,1,47,3,47,1695,
	8,47,1,47,1,47,1,47,3,47,1700,8,47,1,47,1,47,1,47,3,47,1705,8,47,1,47,1,
	47,1,47,3,47,1710,8,47,1,47,1,47,1,47,3,47,1715,8,47,1,47,1,47,1,47,3,47,
	1720,8,47,1,47,1,47,1,47,3,47,1725,8,47,1,47,1,47,1,47,3,47,1730,8,47,1,
	47,1,47,1,47,3,47,1735,8,47,1,47,1,47,1,47,3,47,1740,8,47,1,47,1,47,1,47,
	3,47,1745,8,47,1,47,1,47,1,47,1,47,3,47,1751,8,47,1,47,1,47,1,47,3,47,1756,
	8,47,1,47,1,47,1,47,1,47,3,47,1762,8,47,1,48,1,48,1,48,1,49,1,49,1,49,1,
	49,1,49,3,49,1772,8,49,1,49,1,49,1,49,1,49,1,49,3,49,1779,8,49,3,49,1781,
	8,49,1,49,1,49,1,49,1,49,5,49,1787,8,49,10,49,12,49,1790,9,49,1,49,1,49,
	3,49,1794,8,49,1,50,3,50,1797,8,50,1,50,1,50,1,50,1,50,1,50,1,50,3,50,1805,
	8,50,1,50,1,50,1,50,1,50,3,50,1811,8,50,1,50,1,50,1,50,1,50,1,50,1,50,1,
	50,1,50,1,50,1,50,1,50,1,50,1,50,1,50,3,50,1827,8,50,1,50,1,50,1,50,1,50,
	1,50,1,50,1,50,1,50,1,50,1,50,3,50,1839,8,50,3,50,1841,8,50,1,51,3,51,1844,
	8,51,1,51,1,51,1,51,1,51,1,51,1,51,3,51,1852,8,51,1,51,1,51,1,51,1,51,3,
	51,1858,8,51,1,51,1,51,1,51,1,51,3,51,1864,8,51,1,52,1,52,1,52,1,52,1,52,
	1,52,1,52,1,52,1,52,5,52,1875,8,52,10,52,12,52,1878,9,52,1,52,1,52,5,52,
	1882,8,52,10,52,12,52,1885,9,52,1,52,1,52,1,52,5,52,1890,8,52,10,52,12,
	52,1893,9,52,3,52,1895,8,52,1,52,1,52,1,52,1,52,1,52,1,52,1,52,5,52,1904,
	8,52,10,52,12,52,1907,9,52,1,52,1,52,1,52,5,52,1912,8,52,10,52,12,52,1915,
	9,52,3,52,1917,8,52,1,52,1,52,1,52,1,52,1,52,1,52,1,52,1,52,5,52,1927,8,
	52,10,52,12,52,1930,9,52,1,52,1,52,5,52,1934,8,52,10,52,12,52,1937,9,52,
	1,52,1,52,1,52,5,52,1942,8,52,10,52,12,52,1945,9,52,3,52,1947,8,52,1,52,
	1,52,1,52,1,52,1,52,1,52,1,52,1,52,5,52,1957,8,52,10,52,12,52,1960,9,52,
	1,52,1,52,5,52,1964,8,52,10,52,12,52,1967,9,52,1,52,1,52,1,52,5,52,1972,
	8,52,10,52,12,52,1975,9,52,3,52,1977,8,52,1,52,1,52,1,52,5,52,1982,8,52,
	10,52,12,52,1985,9,52,1,52,1,52,1,52,5,52,1990,8,52,10,52,12,52,1993,9,
	52,3,52,1995,8,52,3,52,1997,8,52,1,53,1,53,1,53,3,53,2002,8,53,1,54,1,54,
	1,54,1,54,4,54,2008,8,54,11,54,12,54,2009,1,54,1,54,1,55,1,55,1,55,5,55,
	2017,8,55,10,55,12,55,2020,9,55,1,56,3,56,2023,8,56,1,56,1,56,3,56,2027,
	8,56,1,56,1,56,1,56,3,56,2032,8,56,1,56,1,56,1,56,1,56,3,56,2038,8,56,1,
	56,1,56,1,56,1,56,3,56,2044,8,56,1,56,1,56,1,56,3,56,2049,8,56,1,56,1,56,
	1,56,3,56,2054,8,56,1,56,1,56,1,56,3,56,2059,8,56,1,56,1,56,1,56,3,56,2064,
	8,56,1,56,3,56,2067,8,56,1,57,1,57,1,57,3,57,2072,8,57,1,57,4,57,2075,8,
	57,11,57,12,57,2076,1,57,1,57,1,57,1,57,1,57,1,57,1,57,1,57,3,57,2087,8,
	57,1,58,1,58,3,58,2091,8,58,1,58,1,58,1,58,1,58,1,58,3,58,2098,8,58,1,58,
	1,58,1,58,3,58,2103,8,58,1,58,3,58,2106,8,58,1,58,1,58,1,58,3,58,2111,8,
	58,1,58,3,58,2114,8,58,1,58,1,58,3,58,2118,8,58,1,58,1,58,3,58,2122,8,58,
	1,59,1,59,1,59,1,59,5,59,2128,8,59,10,59,12,59,2131,9,59,1,60,1,60,1,60,
	1,60,1,60,1,60,1,60,1,61,1,61,1,61,1,61,1,61,1,61,1,61,1,61,1,61,3,61,2149,
	8,61,1,61,3,61,2152,8,61,1,61,3,61,2155,8,61,1,61,1,61,3,61,2159,8,61,1,
	61,1,61,1,62,1,62,1,62,1,62,5,62,2167,8,62,10,62,12,62,2170,9,62,1,63,1,
	63,1,63,1,63,1,63,1,63,1,63,1,63,5,63,2180,8,63,10,63,12,63,2183,9,63,1,
	63,1,63,1,64,1,64,3,64,2189,8,64,1,64,3,64,2192,8,64,1,64,1,64,1,64,1,64,
	1,64,5,64,2199,8,64,10,64,12,64,2202,9,64,3,64,2204,8,64,1,64,3,64,2207,
	8,64,1,65,1,65,1,65,1,65,1,65,1,65,1,65,1,65,1,65,3,65,2218,8,65,1,65,3,
	65,2221,8,65,1,65,1,65,3,65,2225,8,65,1,65,1,65,1,66,1,66,1,66,1,66,3,66,
	2233,8,66,1,66,3,66,2236,8,66,1,66,1,66,1,66,3,66,2241,8,66,1,66,1,66,1,
	66,1,66,1,66,1,66,3,66,2249,8,66,1,66,1,66,1,66,1,66,3,66,2255,8,66,1,66,
	1,66,3,66,2259,8,66,1,67,1,67,3,67,2263,8,67,1,67,5,67,2266,8,67,10,67,
	12,67,2269,9,67,1,67,1,67,3,67,2273,8,67,1,67,1,67,1,67,1,67,1,67,3,67,
	2280,8,67,1,67,1,67,3,67,2284,8,67,1,67,1,67,1,67,1,67,1,67,1,67,1,67,5,
	67,2293,8,67,10,67,12,67,2296,9,67,1,67,1,67,1,67,1,67,1,67,3,67,2303,8,
	67,1,67,3,67,2306,8,67,1,67,1,67,5,67,2310,8,67,10,67,12,67,2313,9,67,1,
	67,1,67,1,67,3,67,2318,8,67,3,67,2320,8,67,1,67,1,67,1,67,3,67,2325,8,67,
	1,67,3,67,2328,8,67,1,67,1,67,5,67,2332,8,67,10,67,12,67,2335,9,67,1,67,
	1,67,1,67,3,67,2340,8,67,3,67,2342,8,67,1,67,1,67,3,67,2346,8,67,1,67,3,
	67,2349,8,67,1,67,3,67,2352,8,67,1,67,1,67,5,67,2356,8,67,10,67,12,67,2359,
	9,67,1,67,1,67,1,67,3,67,2364,8,67,1,67,3,67,2367,8,67,1,67,1,67,5,67,2371,
	8,67,10,67,12,67,2374,9,67,1,67,1,67,1,67,3,67,2379,8,67,3,67,2381,8,67,
	1,67,1,67,1,67,3,67,2386,8,67,1,67,1,67,1,67,1,67,1,67,1,67,3,67,2394,8,
	67,3,67,2396,8,67,1,67,1,67,1,67,1,67,1,67,1,67,1,67,3,67,2405,8,67,1,67,
	1,67,1,67,3,67,2410,8,67,1,67,1,67,1,67,1,67,1,67,1,67,3,67,2418,8,67,1,
	67,1,67,3,67,2422,8,67,1,67,1,67,1,67,1,67,1,67,1,67,3,67,2430,8,67,1,67,
	1,67,1,67,1,67,1,67,1,67,1,67,1,67,3,67,2440,8,67,1,67,1,67,1,67,3,67,2445,
	8,67,1,67,1,67,1,67,1,67,1,67,3,67,2452,8,67,1,67,1,67,3,67,2456,8,67,1,
	67,1,67,3,67,2460,8,67,1,67,1,67,1,67,1,67,1,67,1,67,1,67,1,67,1,67,1,67,
	1,67,1,67,1,67,1,67,1,67,1,67,1,67,1,67,1,67,1,67,1,67,1,67,1,67,1,67,1,
	67,1,67,1,67,3,67,2489,8,67,1,67,1,67,3,67,2493,8,67,1,67,1,67,1,67,1,67,
	1,67,1,67,1,67,1,67,1,67,1,67,3,67,2505,8,67,1,67,3,67,2508,8,67,1,67,1,
	67,1,67,1,67,1,67,1,67,1,67,3,67,2517,8,67,1,67,1,67,1,67,1,67,1,67,1,67,
	1,67,1,67,1,67,1,67,1,67,1,67,1,67,5,67,2532,8,67,10,67,12,67,2535,9,67,
	1,67,1,67,1,67,1,67,1,67,1,67,1,67,1,67,1,67,3,67,2546,8,67,1,67,1,67,1,
	67,1,67,1,67,3,67,2553,8,67,1,67,1,67,1,67,1,67,1,67,3,67,2560,8,67,1,67,
	1,67,1,67,1,67,1,67,1,67,1,67,1,67,1,67,1,67,1,67,5,67,2573,8,67,10,67,
	12,67,2576,9,67,1,67,1,67,1,67,1,67,1,67,1,67,1,67,1,67,1,67,1,67,3,67,
	2588,8,67,1,67,1,67,1,67,1,67,3,67,2594,8,67,1,67,1,67,1,67,1,67,3,67,2600,
	8,67,1,67,1,67,1,67,1,67,3,67,2606,8,67,1,67,1,67,1,67,1,67,3,67,2612,8,
	67,1,67,1,67,1,67,1,67,3,67,2618,8,67,1,67,1,67,1,67,1,67,3,67,2624,8,67,
	1,68,1,68,1,68,3,68,2629,8,68,1,68,1,68,1,69,1,69,1,69,3,69,2636,8,69,1,
	69,1,69,1,70,1,70,1,70,3,70,2643,8,70,1,70,1,70,1,70,1,70,1,70,3,70,2650,
	8,70,1,70,1,70,1,70,3,70,2655,8,70,1,70,5,70,2658,8,70,10,70,12,70,2661,
	9,70,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,72,1,72,1,72,3,72,2674,8,
	72,1,72,1,72,1,73,1,73,1,73,3,73,2681,8,73,1,73,1,73,1,74,1,74,1,74,3,74,
	2688,8,74,1,74,1,74,1,75,1,75,3,75,2694,8,75,1,75,1,75,3,75,2698,8,75,1,
	75,1,75,3,75,2702,8,75,1,76,1,76,1,76,1,76,1,76,3,76,2709,8,76,1,76,3,76,
	2712,8,76,1,77,1,77,1,77,3,77,2717,8,77,1,77,1,77,1,78,1,78,1,78,3,78,2724,
	8,78,1,78,1,78,1,78,5,78,2729,8,78,10,78,12,78,2732,9,78,1,78,3,78,2735,
	8,78,1,79,1,79,1,79,1,79,1,79,5,79,2742,8,79,10,79,12,79,2745,9,79,1,80,
	1,80,1,80,1,80,1,81,1,81,3,81,2753,8,81,1,81,1,81,1,82,1,82,1,82,1,82,1,
	82,3,82,2762,8,82,1,82,3,82,2765,8,82,1,83,1,83,3,83,2769,8,83,1,84,1,84,
	1,84,1,85,1,85,1,85,1,85,3,85,2778,8,85,1,86,1,86,3,86,2782,8,86,1,86,3,
	86,2785,8,86,1,86,3,86,2788,8,86,1,86,1,86,1,86,1,86,3,86,2794,8,86,1,86,
	3,86,2797,8,86,1,86,1,86,1,86,1,86,3,86,2803,8,86,1,86,1,86,1,86,1,86,1,
	86,5,86,2810,8,86,10,86,12,86,2813,9,86,3,86,2815,8,86,1,86,1,86,1,86,1,
	86,1,86,1,86,1,86,5,86,2824,8,86,10,86,12,86,2827,9,86,3,86,2829,8,86,1,
	87,1,87,1,87,3,87,2834,8,87,1,87,3,87,2837,8,87,1,87,1,87,1,87,3,87,2842,
	8,87,1,87,1,87,1,87,1,87,1,87,1,87,1,87,1,87,3,87,2852,8,87,1,87,1,87,1,
	87,3,87,2857,8,87,1,87,1,87,4,87,2861,8,87,11,87,12,87,2862,3,87,2865,8,
	87,1,87,1,87,4,87,2869,8,87,11,87,12,87,2870,3,87,2873,8,87,1,87,1,87,1,
	87,1,87,3,87,2879,8,87,1,87,1,87,1,87,1,87,5,87,2885,8,87,10,87,12,87,2888,
	9,87,1,87,1,87,3,87,2892,8,87,1,87,1,87,1,87,1,87,5,87,2898,8,87,10,87,
	12,87,2901,9,87,3,87,2903,8,87,1,88,1,88,1,88,3,88,2908,8,88,1,88,3,88,
	2911,8,88,1,88,1,88,1,88,3,88,2916,8,88,1,88,1,88,1,88,1,88,1,88,1,88,3,
	88,2924,8,88,1,88,1,88,1,88,1,88,1,88,1,88,3,88,2932,8,88,1,88,1,88,1,88,
	1,88,3,88,2938,8,88,1,88,1,88,1,88,1,88,5,88,2944,8,88,10,88,12,88,2947,
	9,88,1,88,1,88,3,88,2951,8,88,1,88,1,88,1,88,1,88,5,88,2957,8,88,10,88,
	12,88,2960,9,88,3,88,2962,8,88,1,89,1,89,3,89,2966,8,89,1,89,3,89,2969,
	8,89,1,89,1,89,1,89,1,89,1,89,1,89,3,89,2977,8,89,1,89,1,89,1,89,1,89,3,
	89,2983,8,89,1,89,1,89,1,89,1,89,1,89,5,89,2990,8,89,10,89,12,89,2993,9,
	89,3,89,2995,8,89,1,90,1,90,3,90,2999,8,90,1,90,1,90,3,90,3003,8,90,1,90,
	1,90,4,90,3007,8,90,11,90,12,90,3008,1,90,1,90,3,90,3013,8,90,1,90,1,90,
	3,90,3017,8,90,3,90,3019,8,90,1,90,3,90,3022,8,90,1,90,3,90,3025,8,90,1,
	90,3,90,3028,8,90,1,90,1,90,4,90,3032,8,90,11,90,12,90,3033,1,90,1,90,3,
	90,3038,8,90,1,90,3,90,3041,8,90,1,90,3,90,3044,8,90,1,90,3,90,3047,8,90,
	1,90,3,90,3050,8,90,3,90,3052,8,90,1,91,1,91,3,91,3056,8,91,1,92,1,92,1,
	92,1,92,3,92,3062,8,92,1,92,1,92,1,92,1,92,3,92,3068,8,92,1,92,5,92,3071,
	8,92,10,92,12,92,3074,9,92,3,92,3076,8,92,1,93,1,93,1,93,1,93,3,93,3082,
	8,93,1,94,1,94,3,94,3086,8,94,1,95,1,95,1,95,1,95,1,95,1,95,3,95,3094,8,
	95,1,96,1,96,3,96,3098,8,96,1,96,3,96,3101,8,96,1,96,3,96,3104,8,96,1,96,
	1,96,1,96,1,96,1,96,1,96,1,96,3,96,3113,8,96,1,96,1,96,3,96,3117,8,96,1,
	96,3,96,3120,8,96,1,96,1,96,3,96,3124,8,96,1,97,1,97,3,97,3128,8,97,1,97,
	3,97,3131,8,97,1,97,3,97,3134,8,97,1,97,1,97,1,97,3,97,3139,8,97,1,97,1,
	97,1,97,1,97,3,97,3145,8,97,5,97,3147,8,97,10,97,12,97,3150,9,97,1,97,1,
	97,1,97,1,97,1,97,1,97,1,97,3,97,3159,8,97,1,97,1,97,1,97,1,97,3,97,3165,
	8,97,5,97,3167,8,97,10,97,12,97,3170,9,97,1,97,1,97,1,97,3,97,3175,8,97,
	1,97,1,97,3,97,3179,8,97,1,98,1,98,1,98,1,98,3,98,3185,8,98,1,98,3,98,3188,
	8,98,1,99,1,99,1,99,1,99,1,99,1,99,1,99,1,99,1,99,1,99,3,99,3200,8,99,1,
	99,1,99,3,99,3204,8,99,1,99,1,99,3,99,3208,8,99,1,100,1,100,1,100,1,100,
	1,100,1,100,3,100,3216,8,100,1,100,1,100,3,100,3220,8,100,1,101,1,101,1,
	101,1,101,1,102,1,102,3,102,3228,8,102,1,102,3,102,3231,8,102,1,102,1,102,
	3,102,3235,8,102,1,102,3,102,3238,8,102,1,102,1,102,1,102,1,102,5,102,3244,
	8,102,10,102,12,102,3247,9,102,1,102,1,102,3,102,3251,8,102,1,102,3,102,
	3254,8,102,1,102,3,102,3257,8,102,1,103,1,103,3,103,3261,8,103,1,103,3,
	103,3264,8,103,1,103,1,103,1,103,1,103,1,103,5,103,3271,8,103,10,103,12,
	103,3274,9,103,1,103,1,103,3,103,3278,8,103,1,104,1,104,1,104,1,104,1,104,
	5,104,3285,8,104,10,104,12,104,3288,9,104,1,105,1,105,3,105,3292,8,105,
	1,106,1,106,1,106,5,106,3297,8,106,10,106,12,106,3300,9,106,1,107,1,107,
	5,107,3304,8,107,10,107,12,107,3307,9,107,1,107,1,107,1,107,5,107,3312,
	8,107,10,107,12,107,3315,9,107,1,107,1,107,3,107,3319,8,107,1,108,1,108,
	1,108,1,108,1,108,1,108,3,108,3327,8,108,1,108,3,108,3330,8,108,1,108,3,
	108,3333,8,108,1,108,1,108,1,108,5,108,3338,8,108,10,108,12,108,3341,9,
	108,3,108,3343,8,108,1,108,1,108,1,108,1,108,1,108,3,108,3350,8,108,1,108,
	3,108,3353,8,108,1,108,1,108,1,108,1,108,1,108,1,108,3,108,3361,8,108,1,
	109,1,109,1,109,1,109,3,109,3367,8,109,1,109,1,109,1,109,1,109,1,110,1,
	110,1,110,1,110,1,110,3,110,3378,8,110,1,111,3,111,3381,8,111,1,111,1,111,
	1,111,1,111,1,111,1,111,1,111,1,111,1,111,3,111,3392,8,111,1,111,1,111,
	1,111,1,111,3,111,3398,8,111,1,111,1,111,3,111,3402,8,111,1,111,1,111,1,
	111,1,111,1,111,1,111,1,111,1,111,1,111,3,111,3413,8,111,1,111,1,111,1,
	111,3,111,3418,8,111,3,111,3420,8,111,1,111,1,111,3,111,3424,8,111,1,112,
	1,112,1,112,1,112,1,112,1,112,1,112,1,112,3,112,3434,8,112,1,113,1,113,
	1,113,1,113,1,113,1,113,1,113,1,113,3,113,3444,8,113,1,114,1,114,5,114,
	3448,8,114,10,114,12,114,3451,9,114,1,114,1,114,3,114,3455,8,114,1,114,
	3,114,3458,8,114,1,114,3,114,3461,8,114,1,114,3,114,3464,8,114,1,114,1,
	114,5,114,3468,8,114,10,114,12,114,3471,9,114,1,114,1,114,3,114,3475,8,
	114,1,114,3,114,3478,8,114,1,114,3,114,3481,8,114,1,114,3,114,3484,8,114,
	3,114,3486,8,114,1,115,1,115,5,115,3490,8,115,10,115,12,115,3493,9,115,
	1,115,1,115,3,115,3497,8,115,1,115,3,115,3500,8,115,1,115,3,115,3503,8,
	115,1,116,1,116,3,116,3507,8,116,1,116,1,116,1,117,1,117,3,117,3513,8,117,
	1,117,1,117,3,117,3517,8,117,1,118,1,118,1,118,1,118,1,118,1,118,1,118,
	1,118,3,118,3527,8,118,1,119,1,119,3,119,3531,8,119,1,119,1,119,5,119,3535,
	8,119,10,119,12,119,3538,9,119,1,120,1,120,1,120,1,120,1,120,1,120,3,120,
	3546,8,120,1,120,3,120,3549,8,120,1,120,1,120,3,120,3553,8,120,1,120,3,
	120,3556,8,120,1,120,1,120,3,120,3560,8,120,1,120,1,120,3,120,3564,8,120,
	1,120,3,120,3567,8,120,3,120,3569,8,120,1,121,1,121,1,121,1,121,5,121,3575,
	8,121,10,121,12,121,3578,9,121,1,121,1,121,1,121,1,121,1,121,1,121,1,121,
	1,121,1,121,3,121,3589,8,121,1,121,1,121,4,121,3593,8,121,11,121,12,121,
	3594,3,121,3597,8,121,1,121,1,121,4,121,3601,8,121,11,121,12,121,3602,3,
	121,3605,8,121,3,121,3607,8,121,1,122,1,122,1,122,1,122,3,122,3613,8,122,
	1,122,1,122,1,122,1,122,1,122,1,122,3,122,3621,8,122,1,123,1,123,1,123,
	1,123,1,123,1,123,3,123,3629,8,123,1,124,1,124,1,124,1,124,3,124,3635,8,
	124,1,124,1,124,1,124,1,124,1,124,5,124,3642,8,124,10,124,12,124,3645,9,
	124,1,124,1,124,3,124,3649,8,124,3,124,3651,8,124,1,124,1,124,3,124,3655,
	8,124,1,125,1,125,3,125,3659,8,125,1,126,1,126,1,126,1,126,3,126,3665,8,
	126,1,126,1,126,1,126,1,126,1,126,3,126,3672,8,126,1,127,1,127,3,127,3676,
	8,127,1,128,1,128,1,128,1,128,1,128,5,128,3683,8,128,10,128,12,128,3686,
	9,128,3,128,3688,8,128,1,129,1,129,3,129,3692,8,129,1,130,1,130,3,130,3696,
	8,130,1,130,1,130,3,130,3700,8,130,1,130,3,130,3703,8,130,1,130,3,130,3706,
	8,130,1,130,3,130,3709,8,130,1,131,1,131,3,131,3713,8,131,1,131,1,131,3,
	131,3717,8,131,1,131,3,131,3720,8,131,1,131,3,131,3723,8,131,1,131,3,131,
	3726,8,131,1,132,1,132,1,132,1,133,1,133,3,133,3733,8,133,1,133,1,133,3,
	133,3737,8,133,1,133,1,133,1,134,1,134,1,134,1,134,1,135,1,135,1,135,1,
	135,1,135,5,135,3750,8,135,10,135,12,135,3753,9,135,1,136,1,136,1,136,1,
	137,1,137,1,137,1,137,1,137,1,138,1,138,3,138,3765,8,138,1,138,1,138,1,
	138,1,138,5,138,3771,8,138,10,138,12,138,3774,9,138,1,139,1,139,1,139,1,
	139,1,139,1,139,1,139,3,139,3783,8,139,1,140,1,140,3,140,3787,8,140,1,140,
	3,140,3790,8,140,1,140,1,140,1,141,1,141,3,141,3796,8,141,1,141,3,141,3799,
	8,141,1,141,3,141,3802,8,141,1,142,1,142,1,142,1,142,1,142,1,142,1,142,
	3,142,3811,8,142,1,143,1,143,1,143,1,143,1,143,1,143,1,143,3,143,3820,8,
	143,1,144,1,144,1,144,1,144,1,144,1,144,5,144,3828,8,144,10,144,12,144,
	3831,9,144,1,144,3,144,3834,8,144,1,145,1,145,1,145,1,145,1,145,1,145,5,
	145,3842,8,145,10,145,12,145,3845,9,145,1,146,1,146,1,146,1,146,1,146,1,
	146,1,146,3,146,3854,8,146,1,147,1,147,1,147,1,148,1,148,1,148,3,148,3862,
	8,148,1,148,3,148,3865,8,148,1,149,1,149,1,149,1,149,1,149,5,149,3872,8,
	149,10,149,12,149,3875,9,149,3,149,3877,8,149,1,149,1,149,3,149,3881,8,
	149,1,149,5,149,3884,8,149,10,149,12,149,3887,9,149,1,149,3,149,3890,8,
	149,1,150,1,150,1,150,1,150,1,150,5,150,3897,8,150,10,150,12,150,3900,9,
	150,3,150,3902,8,150,1,151,1,151,1,151,1,152,1,152,1,152,1,153,1,153,1,
	153,1,153,1,153,1,153,1,153,1,153,1,153,1,153,1,153,1,153,1,153,1,153,1,
	153,1,153,1,153,1,153,1,153,1,153,1,153,5,153,3931,8,153,10,153,12,153,
	3934,9,153,3,153,3936,8,153,1,153,3,153,3939,8,153,1,154,1,154,1,155,1,
	155,1,156,1,156,1,157,1,157,1,157,1,157,1,158,1,158,1,158,1,158,1,158,1,
	158,1,158,1,158,1,158,1,158,1,158,1,158,1,158,1,158,1,158,1,158,1,158,1,
	158,1,158,1,158,1,158,1,158,1,158,1,158,1,158,1,158,1,158,1,158,1,158,1,
	158,1,158,1,158,1,158,1,158,1,158,1,158,1,158,1,158,1,158,1,158,1,158,1,
	158,5,158,3993,8,158,10,158,12,158,3996,9,158,1,158,1,158,3,158,4000,8,
	158,1,159,1,159,1,159,1,159,1,159,1,159,1,160,1,160,1,161,1,161,1,161,1,
	161,1,161,1,161,1,161,1,161,1,161,1,161,1,161,1,161,1,161,1,161,1,161,1,
	161,1,161,1,161,3,161,4028,8,161,1,162,1,162,1,162,1,162,1,162,1,162,1,
	162,1,162,1,162,1,162,1,162,1,162,3,162,4042,8,162,1,163,1,163,1,163,5,
	163,4047,8,163,10,163,12,163,4050,9,163,1,163,3,163,4053,8,163,1,164,1,
	164,1,164,1,164,3,164,4059,8,164,1,165,1,165,1,165,1,165,1,165,1,165,3,
	165,4067,8,165,3,165,4069,8,165,1,166,1,166,1,166,1,166,1,167,1,167,1,167,
	1,167,1,167,3,167,4080,8,167,1,168,1,168,1,168,1,168,1,169,1,169,1,169,
	1,169,3,169,4090,8,169,1,170,1,170,1,170,1,170,1,170,3,170,4097,8,170,1,
	171,1,171,1,171,1,171,3,171,4103,8,171,1,172,1,172,1,172,1,172,1,173,1,
	173,3,173,4111,8,173,1,174,1,174,1,174,3,174,4116,8,174,1,174,1,174,1,174,
	1,174,5,174,4122,8,174,10,174,12,174,4125,9,174,1,174,1,174,1,174,5,174,
	4130,8,174,10,174,12,174,4133,9,174,1,174,1,174,1,174,5,174,4138,8,174,
	10,174,12,174,4141,9,174,1,174,1,174,1,174,5,174,4146,8,174,10,174,12,174,
	4149,9,174,1,174,5,174,4152,8,174,10,174,12,174,4155,9,174,3,174,4157,8,
	174,1,174,1,174,3,174,4161,8,174,1,175,1,175,1,175,3,175,4166,8,175,1,175,
	4,175,4169,8,175,11,175,12,175,4170,1,175,1,175,4,175,4175,8,175,11,175,
	12,175,4176,3,175,4179,8,175,1,175,1,175,1,175,1,176,1,176,1,176,1,176,
	4,176,4188,8,176,11,176,12,176,4189,1,176,5,176,4193,8,176,10,176,12,176,
	4196,9,176,1,176,1,176,4,176,4200,8,176,11,176,12,176,4201,3,176,4204,8,
	176,1,176,1,176,1,176,1,177,1,177,1,177,1,178,1,178,1,178,1,179,1,179,1,
	179,3,179,4218,8,179,1,179,1,179,4,179,4222,8,179,11,179,12,179,4223,1,
	179,1,179,1,179,3,179,4229,8,179,1,180,1,180,1,180,3,180,4234,8,180,1,180,
	1,180,4,180,4238,8,180,11,180,12,180,4239,1,180,1,180,1,180,1,180,1,180,
	3,180,4247,8,180,1,181,1,181,1,181,1,182,1,182,1,182,3,182,4255,8,182,1,
	182,1,182,1,182,1,182,4,182,4261,8,182,11,182,12,182,4262,1,182,1,182,1,
	182,3,182,4268,8,182,1,183,1,183,1,183,1,183,3,183,4274,8,183,1,183,3,183,
	4277,8,183,1,183,1,183,1,183,1,183,1,183,1,183,3,183,4285,8,183,1,184,1,
	184,1,184,1,184,1,184,3,184,4292,8,184,1,185,1,185,1,185,1,185,1,185,1,
	185,1,185,3,185,4301,8,185,1,185,3,185,4304,8,185,1,186,1,186,1,186,1,186,
	1,186,1,186,1,187,1,187,1,187,1,187,1,187,1,187,1,187,5,187,4319,8,187,
	10,187,12,187,4322,9,187,1,187,1,187,1,188,1,188,1,188,3,188,4329,8,188,
	1,188,1,188,1,188,1,188,1,188,1,188,3,188,4337,8,188,1,189,1,189,3,189,
	4341,8,189,1,189,1,189,1,190,1,190,1,190,3,190,4348,8,190,1,190,1,190,4,
	190,4352,8,190,11,190,12,190,4353,1,191,1,191,1,191,1,191,4,191,4360,8,
	191,11,191,12,191,4361,1,192,1,192,1,192,1,192,1,192,5,192,4369,8,192,10,
	192,12,192,4372,9,192,1,192,1,192,1,192,3,192,4377,8,192,1,192,1,192,1,
	192,5,192,4382,8,192,10,192,12,192,4385,9,192,1,192,1,192,1,192,1,192,3,
	192,4391,8,192,1,192,5,192,4394,8,192,10,192,12,192,4397,9,192,3,192,4399,
	8,192,3,192,4401,8,192,1,192,1,192,4,192,4405,8,192,11,192,12,192,4406,
	3,192,4409,8,192,1,192,1,192,5,192,4413,8,192,10,192,12,192,4416,9,192,
	3,192,4418,8,192,1,193,1,193,1,193,1,193,1,193,5,193,4425,8,193,10,193,
	12,193,4428,9,193,1,193,1,193,1,193,3,193,4433,8,193,1,193,1,193,1,193,
	5,193,4438,8,193,10,193,12,193,4441,9,193,1,193,1,193,1,193,1,193,3,193,
	4447,8,193,1,193,5,193,4450,8,193,10,193,12,193,4453,9,193,3,193,4455,8,
	193,3,193,4457,8,193,1,193,1,193,4,193,4461,8,193,11,193,12,193,4462,3,
	193,4465,8,193,1,193,1,193,5,193,4469,8,193,10,193,12,193,4472,9,193,3,
	193,4474,8,193,1,194,1,194,1,194,3,194,4479,8,194,1,194,1,194,1,194,5,194,
	4484,8,194,10,194,12,194,4487,9,194,1,195,1,195,1,195,1,195,5,195,4493,
	8,195,10,195,12,195,4496,9,195,1,195,1,195,3,195,4500,8,195,1,195,1,195,
	1,195,1,195,1,195,5,195,4507,8,195,10,195,12,195,4510,9,195,1,195,1,195,
	1,195,1,195,3,195,4516,8,195,1,195,5,195,4519,8,195,10,195,12,195,4522,
	9,195,3,195,4524,8,195,3,195,4526,8,195,1,195,1,195,1,195,1,195,5,195,4532,
	8,195,10,195,12,195,4535,9,195,3,195,4537,8,195,1,196,1,196,1,196,1,196,
	1,196,1,196,1,196,1,196,5,196,4547,8,196,10,196,12,196,4550,9,196,1,196,
	1,196,1,196,3,196,4555,8,196,1,197,1,197,1,197,1,197,1,197,5,197,4562,8,
	197,10,197,12,197,4565,9,197,1,198,1,198,1,198,1,198,5,198,4571,8,198,10,
	198,12,198,4574,9,198,1,198,1,198,3,198,4578,8,198,1,198,1,198,1,198,1,
	198,1,198,5,198,4585,8,198,10,198,12,198,4588,9,198,1,198,1,198,1,198,3,
	198,4593,8,198,1,198,1,198,1,198,1,198,1,198,1,198,1,198,5,198,4602,8,198,
	10,198,12,198,4605,9,198,3,198,4607,8,198,1,199,1,199,1,199,1,199,1,199,
	1,199,1,199,1,199,5,199,4617,8,199,10,199,12,199,4620,9,199,1,200,1,200,
	1,200,1,200,3,200,4626,8,200,1,200,1,200,1,200,3,200,4631,8,200,1,201,1,
	201,1,201,1,202,1,202,1,202,1,202,1,202,1,202,1,202,1,202,1,202,1,202,3,
	202,4646,8,202,1,202,1,202,1,202,1,202,1,202,1,202,1,202,1,202,1,202,3,
	202,4657,8,202,1,202,3,202,4660,8,202,1,203,1,203,1,203,1,203,1,203,1,203,
	1,203,1,203,3,203,4670,8,203,1,204,1,204,1,204,1,204,1,204,1,204,1,204,
	1,204,3,204,4680,8,204,1,205,1,205,1,205,1,205,1,205,1,205,1,205,1,205,
	3,205,4690,8,205,1,206,1,206,1,206,1,207,1,207,1,207,1,207,1,207,3,207,
	4700,8,207,1,208,1,208,3,208,4704,8,208,1,208,1,208,3,208,4708,8,208,1,
	208,1,208,1,208,1,208,1,208,1,208,1,208,1,208,3,208,4718,8,208,1,208,1,
	208,1,208,3,208,4723,8,208,1,208,1,208,1,208,1,208,1,208,1,208,1,208,1,
	208,1,208,1,208,1,208,1,208,1,208,1,208,1,208,1,208,1,208,1,208,1,208,1,
	208,1,208,1,208,1,208,1,208,1,208,1,208,1,208,1,208,1,208,1,208,1,208,1,
	208,1,208,1,208,1,208,1,208,1,208,1,208,1,208,1,208,1,208,1,208,1,208,1,
	208,1,208,1,208,1,208,1,208,3,208,4773,8,208,1,209,1,209,1,209,1,209,1,
	209,1,209,1,209,1,209,1,209,1,209,1,209,1,209,1,209,1,209,1,209,1,209,3,
	209,4791,8,209,1,210,1,210,1,210,1,210,1,211,1,211,3,211,4799,8,211,1,211,
	1,211,1,211,1,212,1,212,1,212,1,212,5,212,4808,8,212,10,212,12,212,4811,
	9,212,1,213,1,213,1,213,1,213,3,213,4817,8,213,1,214,1,214,3,214,4821,8,
	214,1,214,1,214,1,214,1,215,1,215,3,215,4828,8,215,1,215,1,215,1,215,3,
	215,4833,8,215,1,215,3,215,4836,8,215,1,215,3,215,4839,8,215,1,216,1,216,
	1,216,1,216,1,216,1,216,1,216,3,216,4848,8,216,1,217,1,217,3,217,4852,8,
	217,1,217,1,217,1,217,1,217,1,217,1,217,1,217,1,218,1,218,1,218,1,218,1,
	218,1,218,1,219,1,219,1,219,1,219,1,220,1,220,1,220,1,220,1,220,1,220,1,
	220,1,220,1,220,5,220,4880,8,220,10,220,12,220,4883,9,220,1,220,1,220,1,
	220,1,220,3,220,4889,8,220,1,220,1,220,3,220,4893,8,220,1,220,1,220,1,220,
	1,220,1,220,3,220,4900,8,220,1,220,3,220,4903,8,220,1,220,1,220,1,220,1,
	220,1,220,1,220,1,220,1,220,1,220,1,220,1,220,1,220,5,220,4917,8,220,10,
	220,12,220,4920,9,220,3,220,4922,8,220,1,221,1,221,1,221,1,221,1,221,1,
	221,1,221,1,221,3,221,4932,8,221,1,221,1,221,3,221,4936,8,221,1,221,1,221,
	1,221,1,221,3,221,4942,8,221,1,221,3,221,4945,8,221,1,221,1,221,1,221,3,
	221,4950,8,221,1,221,1,221,3,221,4954,8,221,1,221,1,221,1,221,1,221,1,221,
	3,221,4961,8,221,1,221,3,221,4964,8,221,1,221,1,221,1,221,1,221,3,221,4970,
	8,221,1,221,1,221,1,221,1,221,1,221,1,221,1,221,1,221,1,221,1,221,1,221,
	1,221,1,221,1,221,1,221,1,221,1,221,1,221,1,221,1,221,1,221,1,221,3,221,
	4994,8,221,1,221,1,221,1,221,1,221,1,221,1,221,1,221,1,221,1,221,1,221,
	1,221,3,221,5007,8,221,1,221,3,221,5010,8,221,1,221,1,221,1,221,1,221,1,
	221,1,221,1,221,1,221,3,221,5020,8,221,1,221,1,221,1,221,1,221,1,221,1,
	221,3,221,5028,8,221,1,221,1,221,3,221,5032,8,221,1,221,1,221,1,221,1,221,
	1,221,3,221,5039,8,221,1,221,3,221,5042,8,221,1,221,1,221,1,221,1,221,1,
	221,5,221,5049,8,221,10,221,12,221,5052,9,221,1,221,1,221,1,221,3,221,5057,
	8,221,1,221,1,221,1,221,1,221,3,221,5063,8,221,1,221,1,221,1,221,1,221,
	1,221,1,221,1,221,1,221,3,221,5073,8,221,3,221,5075,8,221,1,222,1,222,1,
	222,1,222,3,222,5081,8,222,1,222,3,222,5084,8,222,1,222,3,222,5087,8,222,
	1,223,1,223,1,223,1,223,1,223,1,223,1,223,1,223,1,223,1,223,3,223,5099,
	8,223,1,223,3,223,5102,8,223,1,224,1,224,1,224,1,224,3,224,5108,8,224,1,
	225,3,225,5111,8,225,1,225,1,225,1,225,1,225,1,225,1,225,3,225,5119,8,225,
	1,225,1,225,1,225,1,225,1,225,1,225,3,225,5127,8,225,1,226,1,226,1,226,
	1,226,3,226,5133,8,226,1,226,1,226,3,226,5137,8,226,1,227,1,227,1,227,1,
	227,1,227,1,227,1,227,1,227,1,227,1,227,1,227,1,227,3,227,5151,8,227,1,
	228,1,228,1,228,1,229,1,229,1,229,1,229,1,229,5,229,5161,8,229,10,229,12,
	229,5164,9,229,1,229,1,229,1,229,1,229,3,229,5170,8,229,1,229,3,229,5173,
	8,229,1,229,1,229,1,229,1,230,1,230,3,230,5180,8,230,1,230,1,230,1,230,
	5,230,5185,8,230,10,230,12,230,5188,9,230,1,231,1,231,3,231,5192,8,231,
	1,231,4,231,5195,8,231,11,231,12,231,5196,1,232,1,232,1,232,1,232,1,232,
	1,232,1,232,5,232,5206,8,232,10,232,12,232,5209,9,232,1,233,1,233,1,233,
	1,233,1,234,1,234,1,235,1,235,3,235,5219,8,235,1,235,1,235,1,235,1,235,
	3,235,5225,8,235,1,236,1,236,1,236,3,236,5230,8,236,1,236,1,236,1,236,1,
	236,1,236,1,236,1,236,1,236,1,236,1,236,1,236,3,236,5243,8,236,3,236,5245,
	8,236,1,236,1,236,1,236,3,236,5250,8,236,1,236,1,236,1,236,3,236,5255,8,
	236,3,236,5257,8,236,1,237,1,237,1,237,1,237,1,237,3,237,5264,8,237,1,238,
	1,238,1,238,1,238,1,238,3,238,5271,8,238,1,238,3,238,5274,8,238,1,238,3,
	238,5277,8,238,1,238,1,238,1,238,1,238,3,238,5283,8,238,1,238,1,238,3,238,
	5287,8,238,1,239,1,239,1,239,1,239,3,239,5293,8,239,1,240,1,240,1,240,1,
	240,3,240,5299,8,240,1,240,1,240,1,241,1,241,1,241,1,242,1,242,1,242,1,
	243,1,243,1,243,3,243,5312,8,243,1,243,1,243,1,243,3,243,5317,8,243,1,243,
	1,243,1,243,1,243,5,243,5323,8,243,10,243,12,243,5326,9,243,3,243,5328,
	8,243,1,244,1,244,1,244,3,244,5333,8,244,1,244,1,244,1,244,3,244,5338,8,
	244,1,244,1,244,1,244,1,244,5,244,5344,8,244,10,244,12,244,5347,9,244,3,
	244,5349,8,244,1,245,1,245,1,245,1,245,3,245,5355,8,245,1,246,1,246,3,246,
	5359,8,246,1,246,1,246,1,246,1,246,1,246,1,246,1,246,1,246,1,246,5,246,
	5370,8,246,10,246,12,246,5373,9,246,1,246,1,246,1,246,3,246,5378,8,246,
	1,246,1,246,1,246,1,246,1,246,1,246,1,246,1,246,5,246,5388,8,246,10,246,
	12,246,5391,9,246,3,246,5393,8,246,1,247,1,247,1,248,1,248,1,248,1,248,
	1,248,3,248,5402,8,248,1,248,1,248,1,248,3,248,5407,8,248,1,249,1,249,1,
	249,1,249,3,249,5413,8,249,1,250,1,250,1,251,1,251,1,251,3,251,5420,8,251,
	3,251,5422,8,251,1,252,1,252,3,252,5426,8,252,1,252,1,252,1,252,1,252,3,
	252,5432,8,252,1,252,3,252,5435,8,252,1,253,1,253,1,254,1,254,1,255,1,255,
	1,255,1,255,3,255,5445,8,255,1,256,1,256,3,256,5449,8,256,1,257,1,257,1,
	258,1,258,1,258,1,258,1,258,1,258,1,258,1,258,1,258,1,258,1,258,1,258,1,
	258,1,258,4,258,5467,8,258,11,258,12,258,5468,1,259,1,259,1,259,1,259,1,
	259,3,259,5476,8,259,3,259,5478,8,259,1,260,1,260,1,260,4,260,5483,8,260,
	11,260,12,260,5484,3,260,5487,8,260,1,261,1,261,3,261,5491,8,261,1,262,
	1,262,1,262,3,262,5496,8,262,1,263,1,263,1,263,1,263,1,263,1,263,1,263,
	1,263,1,263,3,263,5507,8,263,1,264,1,264,1,264,3,264,5512,8,264,1,265,1,
	265,1,266,1,266,3,266,5518,8,266,1,267,3,267,5521,8,267,1,267,1,267,3,267,
	5525,8,267,1,267,4,267,5528,8,267,11,267,12,267,5529,1,267,3,267,5533,8,
	267,1,267,1,267,3,267,5537,8,267,1,267,1,267,3,267,5541,8,267,3,267,5543,
	8,267,1,268,1,268,1,269,3,269,5548,8,269,1,269,1,269,1,270,3,270,5553,8,
	270,1,270,1,270,1,271,1,271,1,271,1,271,1,271,1,271,1,271,1,271,1,271,3,
	271,5566,8,271,1,271,3,271,5569,8,271,1,272,1,272,3,272,5573,8,272,1,272,
	3,272,5576,8,272,1,272,1,272,1,272,3,272,5581,8,272,1,272,3,272,5584,8,
	272,1,272,1,272,3,272,5588,8,272,1,272,1,272,1,272,3,272,5593,8,272,1,272,
	3,272,5596,8,272,1,272,1,272,1,272,3,272,5601,8,272,1,272,3,272,5604,8,
	272,1,272,1,272,1,272,1,272,3,272,5610,8,272,1,272,3,272,5613,8,272,1,272,
	1,272,3,272,5617,8,272,1,272,3,272,5620,8,272,1,272,3,272,5623,8,272,1,
	272,1,272,3,272,5627,8,272,1,272,3,272,5630,8,272,1,272,3,272,5633,8,272,
	1,272,1,272,3,272,5637,8,272,1,272,3,272,5640,8,272,1,272,3,272,5643,8,
	272,1,272,3,272,5646,8,272,1,272,1,272,3,272,5650,8,272,1,272,3,272,5653,
	8,272,1,272,3,272,5656,8,272,1,272,1,272,1,272,3,272,5661,8,272,1,272,1,
	272,1,272,3,272,5666,8,272,1,272,1,272,1,272,3,272,5671,8,272,1,272,3,272,
	5674,8,272,1,272,1,272,1,272,3,272,5679,8,272,1,272,3,272,5682,8,272,1,
	272,1,272,1,272,3,272,5687,8,272,1,272,3,272,5690,8,272,1,272,1,272,3,272,
	5694,8,272,1,272,1,272,3,272,5698,8,272,1,273,1,273,1,273,1,273,5,273,5704,
	8,273,10,273,12,273,5707,9,273,1,273,1,273,1,274,1,274,3,274,5713,8,274,
	1,274,1,274,3,274,5717,8,274,1,274,1,274,1,274,3,274,5722,8,274,1,274,3,
	274,5725,8,274,1,274,1,274,1,274,3,274,5730,8,274,1,274,1,274,3,274,5734,
	8,274,3,274,5736,8,274,1,275,1,275,1,275,1,275,1,276,1,276,1,276,1,276,
	1,276,1,276,1,277,1,277,1,277,1,277,3,277,5752,8,277,1,277,1,277,1,278,
	1,278,1,278,5,278,5759,8,278,10,278,12,278,5762,9,278,1,279,1,279,1,279,
	5,279,5767,8,279,10,279,12,279,5770,9,279,1,280,1,280,1,280,1,280,5,280,
	5776,8,280,10,280,12,280,5779,9,280,1,280,1,280,1,281,1,281,1,281,5,281,
	5786,8,281,10,281,12,281,5789,9,281,1,282,1,282,1,282,5,282,5794,8,282,
	10,282,12,282,5797,9,282,1,283,1,283,1,283,5,283,5802,8,283,10,283,12,283,
	5805,9,283,1,284,1,284,1,284,5,284,5810,8,284,10,284,12,284,5813,9,284,
	1,285,1,285,1,285,5,285,5818,8,285,10,285,12,285,5821,9,285,1,286,1,286,
	3,286,5825,8,286,1,286,1,286,1,286,1,286,1,286,3,286,5832,8,286,3,286,5834,
	8,286,1,287,1,287,1,287,3,287,5839,8,287,1,287,3,287,5842,8,287,1,287,1,
	287,1,287,3,287,5847,8,287,1,287,3,287,5850,8,287,1,288,1,288,3,288,5854,
	8,288,1,289,1,289,1,289,1,290,1,290,1,290,1,290,1,291,1,291,1,291,1,291,
	1,291,3,291,5868,8,291,1,291,1,291,1,291,1,291,1,291,3,291,5875,8,291,1,
	291,1,291,1,291,3,291,5880,8,291,1,292,1,292,1,292,1,292,1,292,1,292,1,
	292,1,292,1,292,1,292,1,292,1,292,1,292,1,292,1,292,1,292,1,292,1,292,1,
	292,1,292,1,292,1,292,1,292,1,292,1,292,1,292,1,292,1,292,1,292,1,292,4,
	292,5912,8,292,11,292,12,292,5913,1,292,1,292,3,292,5918,8,292,1,292,1,
	292,1,292,1,292,4,292,5924,8,292,11,292,12,292,5925,1,292,1,292,3,292,5930,
	8,292,1,292,1,292,1,292,1,292,1,292,1,292,1,292,3,292,5939,8,292,1,292,
	1,292,1,292,1,292,1,292,1,292,3,292,5947,8,292,1,292,1,292,1,292,3,292,
	5952,8,292,1,292,1,292,1,292,1,292,1,292,1,292,3,292,5960,8,292,1,292,1,
	292,1,292,3,292,5965,8,292,1,292,1,292,1,292,3,292,5970,8,292,3,292,5972,
	8,292,1,292,1,292,1,292,1,292,1,292,1,292,1,292,3,292,5981,8,292,1,292,
	1,292,1,292,3,292,5986,8,292,1,292,1,292,1,292,1,292,1,292,1,292,3,292,
	5994,8,292,1,292,1,292,1,292,3,292,5999,8,292,1,292,1,292,1,292,1,292,1,
	292,1,292,3,292,6007,8,292,1,292,1,292,1,292,1,292,1,292,1,292,3,292,6015,
	8,292,1,292,3,292,6018,8,292,1,292,1,292,1,292,1,292,1,292,1,292,1,292,
	1,292,3,292,6028,8,292,1,292,1,292,1,292,1,292,1,292,1,292,1,292,1,292,
	1,292,3,292,6039,8,292,1,293,1,293,1,293,1,293,1,293,1,294,1,294,1,294,
	1,294,5,294,6050,8,294,10,294,12,294,6053,9,294,1,294,1,294,1,294,1,294,
	1,294,3,294,6060,8,294,1,295,1,295,3,295,6064,8,295,1,296,1,296,1,296,3,
	296,6069,8,296,1,296,1,296,1,296,1,296,1,296,1,296,1,296,3,296,6078,8,296,
	1,296,3,296,6081,8,296,1,296,1,296,1,296,1,296,1,296,1,296,1,296,1,296,
	1,296,1,296,3,296,6093,8,296,1,296,1,296,1,296,1,296,1,296,1,296,3,296,
	6101,8,296,1,296,1,296,1,296,1,296,1,296,1,296,5,296,6109,8,296,10,296,
	12,296,6112,9,296,3,296,6114,8,296,1,296,1,296,3,296,6118,8,296,1,296,1,
	296,3,296,6122,8,296,1,297,1,297,1,297,1,297,1,297,1,297,1,297,1,297,1,
	297,1,297,1,297,1,297,1,297,1,297,1,297,1,297,1,297,1,297,1,297,1,297,1,
	297,1,297,1,297,3,297,6147,8,297,1,298,1,298,1,298,1,298,1,298,1,299,1,
	299,1,299,1,299,3,299,6158,8,299,1,299,1,299,1,299,1,299,1,299,3,299,6165,
	8,299,5,299,6167,8,299,10,299,12,299,6170,9,299,1,300,1,300,1,300,1,300,
	3,300,6176,8,300,1,301,1,301,1,301,1,301,1,301,1,301,3,301,6184,8,301,1,
	301,1,301,1,301,3,301,6189,8,301,1,301,1,301,1,301,1,301,5,301,6195,8,301,
	10,301,12,301,6198,9,301,1,302,1,302,1,302,3,302,6203,8,302,1,302,1,302,
	1,302,1,302,1,302,1,302,1,302,1,302,3,302,6213,8,302,1,302,1,302,1,302,
	1,302,1,302,1,302,1,302,1,302,1,302,1,302,1,302,3,302,6226,8,302,1,302,
	1,302,1,302,1,302,3,302,6232,8,302,1,302,1,302,1,302,1,302,3,302,6238,8,
	302,1,302,1,302,1,302,1,302,1,302,1,302,1,302,1,302,1,302,1,302,1,302,1,
	302,1,302,1,302,3,302,6254,8,302,1,302,1,302,1,302,1,302,3,302,6260,8,302,
	5,302,6262,8,302,10,302,12,302,6265,9,302,1,303,1,303,1,303,1,303,1,303,
	1,303,1,303,1,303,1,303,1,303,1,303,1,303,1,303,1,303,5,303,6281,8,303,
	10,303,12,303,6284,9,303,1,303,1,303,1,303,1,303,1,303,1,303,1,303,4,303,
	6293,8,303,11,303,12,303,6294,1,303,1,303,1,303,1,303,1,303,1,303,1,303,
	1,303,1,303,1,303,1,303,1,303,1,303,1,303,1,303,3,303,6312,8,303,1,303,
	1,303,1,303,1,303,1,303,1,303,1,303,1,303,1,303,1,303,1,303,5,303,6325,
	8,303,10,303,12,303,6328,9,303,1,304,1,304,1,305,1,305,1,305,1,305,1,305,
	1,305,1,305,1,305,1,305,1,305,1,305,1,305,1,305,1,305,3,305,6346,8,305,
	1,306,1,306,1,306,1,306,1,306,1,306,1,306,3,306,6355,8,306,1,307,1,307,
	1,307,1,307,1,307,1,307,1,307,3,307,6364,8,307,1,308,1,308,1,309,1,309,
	1,310,1,310,1,311,1,311,1,312,1,312,1,313,1,313,1,314,1,314,1,315,1,315,
	1,315,0,3,602,604,606,316,0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,
	34,36,38,40,42,44,46,48,50,52,54,56,58,60,62,64,66,68,70,72,74,76,78,80,
	82,84,86,88,90,92,94,96,98,100,102,104,106,108,110,112,114,116,118,120,
	122,124,126,128,130,132,134,136,138,140,142,144,146,148,150,152,154,156,
	158,160,162,164,166,168,170,172,174,176,178,180,182,184,186,188,190,192,
	194,196,198,200,202,204,206,208,210,212,214,216,218,220,222,224,226,228,
	230,232,234,236,238,240,242,244,246,248,250,252,254,256,258,260,262,264,
	266,268,270,272,274,276,278,280,282,284,286,288,290,292,294,296,298,300,
	302,304,306,308,310,312,314,316,318,320,322,324,326,328,330,332,334,336,
	338,340,342,344,346,348,350,352,354,356,358,360,362,364,366,368,370,372,
	374,376,378,380,382,384,386,388,390,392,394,396,398,400,402,404,406,408,
	410,412,414,416,418,420,422,424,426,428,430,432,434,436,438,440,442,444,
	446,448,450,452,454,456,458,460,462,464,466,468,470,472,474,476,478,480,
	482,484,486,488,490,492,494,496,498,500,502,504,506,508,510,512,514,516,
	518,520,522,524,526,528,530,532,534,536,538,540,542,544,546,548,550,552,
	554,556,558,560,562,564,566,568,570,572,574,576,578,580,582,584,586,588,
	590,592,594,596,598,600,602,604,606,608,610,612,614,616,618,620,622,624,
	626,628,630,0,126,2,0,35,35,135,135,2,0,451,451,456,456,3,0,62,62,142,142,
	163,163,3,0,38,38,320,320,383,383,4,0,38,38,352,352,450,450,520,520,2,0,
	441,441,1035,1035,2,0,70,70,127,127,2,0,13,13,272,272,3,0,40,40,76,76,166,
	166,2,0,365,365,474,474,3,0,433,433,558,558,565,565,2,0,327,327,388,388,
	2,0,290,290,402,402,2,0,288,288,374,374,3,0,71,71,75,75,112,112,3,0,38,
	38,337,337,363,363,3,0,38,38,333,333,682,682,2,0,546,546,579,579,2,0,72,
	72,82,82,3,0,367,367,465,465,522,522,2,0,62,62,142,142,1,0,294,295,1,0,
	1025,1026,2,0,1035,1035,1043,1043,3,0,362,362,397,397,448,448,2,0,38,38,
	1025,1026,6,0,38,38,307,307,309,309,337,337,363,363,487,487,1,0,1026,1027,
	2,0,5,5,47,47,2,0,387,387,580,580,2,0,11,11,157,157,2,0,174,174,583,583,
	2,0,18,18,130,130,3,0,39,39,68,68,95,95,2,0,95,95,311,311,2,0,302,302,359,
	359,2,0,91,91,512,512,2,0,39,39,95,95,2,0,6,6,45,45,2,0,170,170,576,576,
	4,0,362,362,397,397,447,447,477,477,2,0,362,362,447,447,2,0,12,12,41,41,
	3,0,59,59,70,70,168,168,2,0,31,31,74,74,2,0,87,87,133,133,2,0,6,6,45,46,
	1,0,535,536,2,0,370,370,518,518,2,0,208,208,405,405,5,0,96,96,410,411,413,
	413,417,425,489,489,4,0,407,408,412,412,414,415,490,490,3,0,97,97,406,406,
	416,416,2,0,390,390,537,537,2,0,531,531,533,533,2,0,282,282,538,538,2,0,
	81,81,504,504,2,0,47,47,325,325,3,0,28,28,54,54,161,161,3,0,117,117,154,
	154,368,368,2,0,93,93,164,164,2,0,298,298,523,523,2,0,36,36,578,578,2,0,
	103,103,402,402,2,0,355,355,483,483,4,0,188,188,190,190,196,196,547,547,
	2,0,994,994,1011,1011,2,0,283,283,491,491,2,0,61,61,71,71,6,0,117,117,154,
	154,159,159,348,348,368,368,578,578,2,0,440,440,543,543,2,0,345,345,582,
	582,2,0,117,117,368,368,3,0,72,72,83,83,381,381,3,0,370,370,402,402,518,
	518,2,0,543,543,577,577,2,0,312,312,482,482,6,0,208,208,342,342,344,344,
	369,369,488,488,524,524,2,0,41,42,55,55,3,0,355,355,467,467,774,774,2,0,
	394,394,560,560,10,0,297,297,304,304,314,316,322,322,434,434,442,442,548,
	548,555,555,726,726,892,892,2,0,32,32,151,151,2,0,105,105,884,884,11,0,
	297,297,304,304,314,316,322,322,434,434,442,442,505,505,548,548,555,555,
	726,726,892,892,3,0,1035,1035,1043,1043,1045,1045,1,0,1046,1047,3,0,677,
	688,1035,1035,1043,1044,2,0,1025,1027,1036,1036,2,0,56,56,160,160,2,0,104,
	104,1039,1039,5,0,22,22,204,206,213,213,215,218,445,445,2,0,22,22,205,205,
	2,0,22,22,204,204,1,0,178,189,2,0,165,165,521,521,2,0,193,198,363,363,5,
	0,199,199,210,212,214,214,221,221,286,287,3,0,200,203,208,209,284,284,2,
	0,138,138,219,219,2,0,394,394,693,701,2,0,208,208,445,445,3,0,199,200,202,
	202,394,394,2,0,253,254,260,260,2,0,33,33,251,254,1,0,263,264,3,0,15,15,
	85,85,158,158,2,0,204,204,208,208,2,0,199,200,202,202,3,0,12,12,41,41,882,
	882,3,0,235,235,241,242,247,247,3,0,236,238,243,246,248,250,2,0,454,454,
	468,468,2,0,102,102,1014,1014,3,0,56,56,160,160,569,569,2,0,123,123,134,
	134,3,0,6,6,275,275,527,527,4,0,102,102,1006,1006,1008,1008,1014,1015,1,
	0,1003,1010,1,0,637,676,1,0,689,692,1,0,602,610,1,0,594,601,3,0,199,203,
	216,216,219,219,14,0,32,32,44,44,105,105,151,151,221,221,270,386,388,545,
	547,578,581,588,593,593,612,636,682,682,726,726,892,892,16,0,35,35,87,87,
	133,133,199,201,203,203,233,234,239,239,262,262,387,387,580,580,594,601,
	630,630,693,693,696,725,727,891,893,993,7503,0,632,1,0,0,0,2,636,1,0,0,
	0,4,653,1,0,0,0,6,673,1,0,0,0,8,675,1,0,0,0,10,712,1,0,0,0,12,724,1,0,0,
	0,14,735,1,0,0,0,16,752,1,0,0,0,18,757,1,0,0,0,20,769,1,0,0,0,22,796,1,
	0,0,0,24,805,1,0,0,0,26,807,1,0,0,0,28,819,1,0,0,0,30,849,1,0,0,0,32,885,
	1,0,0,0,34,936,1,0,0,0,36,962,1,0,0,0,38,992,1,0,0,0,40,1089,1,0,0,0,42,
	1091,1,0,0,0,44,1109,1,0,0,0,46,1170,1,0,0,0,48,1189,1,0,0,0,50,1248,1,
	0,0,0,52,1250,1,0,0,0,54,1294,1,0,0,0,56,1300,1,0,0,0,58,1302,1,0,0,0,60,
	1323,1,0,0,0,62,1330,1,0,0,0,64,1332,1,0,0,0,66,1348,1,0,0,0,68,1351,1,
	0,0,0,70,1356,1,0,0,0,72,1382,1,0,0,0,74,1398,1,0,0,0,76,1400,1,0,0,0,78,
	1416,1,0,0,0,80,1418,1,0,0,0,82,1476,1,0,0,0,84,1547,1,0,0,0,86,1549,1,
	0,0,0,88,1577,1,0,0,0,90,1585,1,0,0,0,92,1615,1,0,0,0,94,1761,1,0,0,0,96,
	1763,1,0,0,0,98,1766,1,0,0,0,100,1840,1,0,0,0,102,1863,1,0,0,0,104,1996,
	1,0,0,0,106,2001,1,0,0,0,108,2003,1,0,0,0,110,2013,1,0,0,0,112,2066,1,0,
	0,0,114,2086,1,0,0,0,116,2088,1,0,0,0,118,2123,1,0,0,0,120,2132,1,0,0,0,
	122,2139,1,0,0,0,124,2162,1,0,0,0,126,2171,1,0,0,0,128,2186,1,0,0,0,130,
	2208,1,0,0,0,132,2228,1,0,0,0,134,2623,1,0,0,0,136,2625,1,0,0,0,138,2632,
	1,0,0,0,140,2639,1,0,0,0,142,2662,1,0,0,0,144,2670,1,0,0,0,146,2677,1,0,
	0,0,148,2684,1,0,0,0,150,2691,1,0,0,0,152,2703,1,0,0,0,154,2713,1,0,0,0,
	156,2720,1,0,0,0,158,2736,1,0,0,0,160,2746,1,0,0,0,162,2750,1,0,0,0,164,
	2756,1,0,0,0,166,2768,1,0,0,0,168,2770,1,0,0,0,170,2777,1,0,0,0,172,2779,
	1,0,0,0,174,2830,1,0,0,0,176,2904,1,0,0,0,178,2963,1,0,0,0,180,3051,1,0,
	0,0,182,3055,1,0,0,0,184,3075,1,0,0,0,186,3077,1,0,0,0,188,3085,1,0,0,0,
	190,3093,1,0,0,0,192,3095,1,0,0,0,194,3125,1,0,0,0,196,3180,1,0,0,0,198,
	3189,1,0,0,0,200,3209,1,0,0,0,202,3221,1,0,0,0,204,3225,1,0,0,0,206,3258,
	1,0,0,0,208,3279,1,0,0,0,210,3289,1,0,0,0,212,3293,1,0,0,0,214,3318,1,0,
	0,0,216,3360,1,0,0,0,218,3362,1,0,0,0,220,3377,1,0,0,0,222,3423,1,0,0,0,
	224,3433,1,0,0,0,226,3443,1,0,0,0,228,3485,1,0,0,0,230,3487,1,0,0,0,232,
	3504,1,0,0,0,234,3510,1,0,0,0,236,3526,1,0,0,0,238,3530,1,0,0,0,240,3568,
	1,0,0,0,242,3606,1,0,0,0,244,3620,1,0,0,0,246,3628,1,0,0,0,248,3630,1,0,
	0,0,250,3656,1,0,0,0,252,3660,1,0,0,0,254,3675,1,0,0,0,256,3677,1,0,0,0,
	258,3689,1,0,0,0,260,3693,1,0,0,0,262,3710,1,0,0,0,264,3727,1,0,0,0,266,
	3730,1,0,0,0,268,3740,1,0,0,0,270,3744,1,0,0,0,272,3754,1,0,0,0,274,3757,
	1,0,0,0,276,3762,1,0,0,0,278,3782,1,0,0,0,280,3784,1,0,0,0,282,3801,1,0,
	0,0,284,3810,1,0,0,0,286,3819,1,0,0,0,288,3821,1,0,0,0,290,3835,1,0,0,0,
	292,3846,1,0,0,0,294,3855,1,0,0,0,296,3858,1,0,0,0,298,3866,1,0,0,0,300,
	3891,1,0,0,0,302,3903,1,0,0,0,304,3906,1,0,0,0,306,3938,1,0,0,0,308,3940,
	1,0,0,0,310,3942,1,0,0,0,312,3944,1,0,0,0,314,3946,1,0,0,0,316,3999,1,0,
	0,0,318,4001,1,0,0,0,320,4007,1,0,0,0,322,4027,1,0,0,0,324,4041,1,0,0,0,
	326,4052,1,0,0,0,328,4054,1,0,0,0,330,4060,1,0,0,0,332,4070,1,0,0,0,334,
	4074,1,0,0,0,336,4081,1,0,0,0,338,4085,1,0,0,0,340,4091,1,0,0,0,342,4098,
	1,0,0,0,344,4104,1,0,0,0,346,4110,1,0,0,0,348,4115,1,0,0,0,350,4162,1,0,
	0,0,352,4183,1,0,0,0,354,4208,1,0,0,0,356,4211,1,0,0,0,358,4217,1,0,0,0,
	360,4233,1,0,0,0,362,4248,1,0,0,0,364,4254,1,0,0,0,366,4284,1,0,0,0,368,
	4286,1,0,0,0,370,4293,1,0,0,0,372,4305,1,0,0,0,374,4311,1,0,0,0,376,4336,
	1,0,0,0,378,4340,1,0,0,0,380,4344,1,0,0,0,382,4355,1,0,0,0,384,4417,1,0,
	0,0,386,4473,1,0,0,0,388,4475,1,0,0,0,390,4488,1,0,0,0,392,4538,1,0,0,0,
	394,4556,1,0,0,0,396,4606,1,0,0,0,398,4608,1,0,0,0,400,4621,1,0,0,0,402,
	4632,1,0,0,0,404,4659,1,0,0,0,406,4669,1,0,0,0,408,4679,1,0,0,0,410,4681,
	1,0,0,0,412,4691,1,0,0,0,414,4694,1,0,0,0,416,4772,1,0,0,0,418,4790,1,0,
	0,0,420,4792,1,0,0,0,422,4796,1,0,0,0,424,4803,1,0,0,0,426,4812,1,0,0,0,
	428,4818,1,0,0,0,430,4825,1,0,0,0,432,4847,1,0,0,0,434,4849,1,0,0,0,436,
	4860,1,0,0,0,438,4866,1,0,0,0,440,4921,1,0,0,0,442,5074,1,0,0,0,444,5086,
	1,0,0,0,446,5101,1,0,0,0,448,5107,1,0,0,0,450,5126,1,0,0,0,452,5136,1,0,
	0,0,454,5150,1,0,0,0,456,5152,1,0,0,0,458,5155,1,0,0,0,460,5177,1,0,0,0,
	462,5189,1,0,0,0,464,5198,1,0,0,0,466,5210,1,0,0,0,468,5214,1,0,0,0,470,
	5216,1,0,0,0,472,5256,1,0,0,0,474,5263,1,0,0,0,476,5265,1,0,0,0,478,5288,
	1,0,0,0,480,5294,1,0,0,0,482,5302,1,0,0,0,484,5305,1,0,0,0,486,5308,1,0,
	0,0,488,5329,1,0,0,0,490,5350,1,0,0,0,492,5356,1,0,0,0,494,5394,1,0,0,0,
	496,5406,1,0,0,0,498,5408,1,0,0,0,500,5414,1,0,0,0,502,5416,1,0,0,0,504,
	5425,1,0,0,0,506,5436,1,0,0,0,508,5438,1,0,0,0,510,5444,1,0,0,0,512,5448,
	1,0,0,0,514,5450,1,0,0,0,516,5452,1,0,0,0,518,5470,1,0,0,0,520,5486,1,0,
	0,0,522,5490,1,0,0,0,524,5495,1,0,0,0,526,5506,1,0,0,0,528,5511,1,0,0,0,
	530,5513,1,0,0,0,532,5517,1,0,0,0,534,5542,1,0,0,0,536,5544,1,0,0,0,538,
	5547,1,0,0,0,540,5552,1,0,0,0,542,5568,1,0,0,0,544,5697,1,0,0,0,546,5699,
	1,0,0,0,548,5735,1,0,0,0,550,5737,1,0,0,0,552,5741,1,0,0,0,554,5747,1,0,
	0,0,556,5755,1,0,0,0,558,5763,1,0,0,0,560,5771,1,0,0,0,562,5782,1,0,0,0,
	564,5790,1,0,0,0,566,5798,1,0,0,0,568,5806,1,0,0,0,570,5814,1,0,0,0,572,
	5833,1,0,0,0,574,5849,1,0,0,0,576,5853,1,0,0,0,578,5855,1,0,0,0,580,5858,
	1,0,0,0,582,5879,1,0,0,0,584,6038,1,0,0,0,586,6040,1,0,0,0,588,6059,1,0,
	0,0,590,6061,1,0,0,0,592,6121,1,0,0,0,594,6146,1,0,0,0,596,6148,1,0,0,0,
	598,6157,1,0,0,0,600,6175,1,0,0,0,602,6188,1,0,0,0,604,6199,1,0,0,0,606,
	6311,1,0,0,0,608,6329,1,0,0,0,610,6345,1,0,0,0,612,6354,1,0,0,0,614,6363,
	1,0,0,0,616,6365,1,0,0,0,618,6367,1,0,0,0,620,6369,1,0,0,0,622,6371,1,0,
	0,0,624,6373,1,0,0,0,626,6375,1,0,0,0,628,6377,1,0,0,0,630,6379,1,0,0,0,
	632,633,3,2,1,0,633,634,5,0,0,1,634,1,1,0,0,0,635,637,3,4,2,0,636,635,1,
	0,0,0,636,637,1,0,0,0,637,639,1,0,0,0,638,640,5,1007,0,0,639,638,1,0,0,
	0,639,640,1,0,0,0,640,641,1,0,0,0,641,642,5,0,0,1,642,3,1,0,0,0,643,645,
	3,6,3,0,644,646,5,1007,0,0,645,644,1,0,0,0,645,646,1,0,0,0,646,648,1,0,
	0,0,647,649,5,1023,0,0,648,647,1,0,0,0,648,649,1,0,0,0,649,652,1,0,0,0,
	650,652,3,8,4,0,651,643,1,0,0,0,651,650,1,0,0,0,652,655,1,0,0,0,653,651,
	1,0,0,0,653,654,1,0,0,0,654,664,1,0,0,0,655,653,1,0,0,0,656,661,3,6,3,0,
	657,659,5,1007,0,0,658,657,1,0,0,0,658,659,1,0,0,0,659,660,1,0,0,0,660,
	662,5,1023,0,0,661,658,1,0,0,0,661,662,1,0,0,0,662,665,1,0,0,0,663,665,
	3,8,4,0,664,656,1,0,0,0,664,663,1,0,0,0,665,5,1,0,0,0,666,674,3,10,5,0,
	667,674,3,12,6,0,668,674,3,14,7,0,669,674,3,16,8,0,670,674,3,18,9,0,671,
	674,3,22,11,0,672,674,3,24,12,0,673,666,1,0,0,0,673,667,1,0,0,0,673,668,
	1,0,0,0,673,669,1,0,0,0,673,670,1,0,0,0,673,671,1,0,0,0,673,672,1,0,0,0,
	674,7,1,0,0,0,675,676,5,1023,0,0,676,9,1,0,0,0,677,713,3,26,13,0,678,713,
	3,28,14,0,679,713,3,30,15,0,680,713,3,32,16,0,681,713,3,34,17,0,682,713,
	3,36,18,0,683,713,3,38,19,0,684,713,3,40,20,0,685,713,3,42,21,0,686,713,
	3,44,22,0,687,713,3,46,23,0,688,713,3,48,24,0,689,713,3,114,57,0,690,713,
	3,116,58,0,691,713,3,118,59,0,692,713,3,120,60,0,693,713,3,122,61,0,694,
	713,3,124,62,0,695,713,3,126,63,0,696,713,3,128,64,0,697,713,3,130,65,0,
	698,713,3,132,66,0,699,713,3,136,68,0,700,713,3,138,69,0,701,713,3,140,
	70,0,702,713,3,142,71,0,703,713,3,144,72,0,704,713,3,146,73,0,705,713,3,
	148,74,0,706,713,3,150,75,0,707,713,3,152,76,0,708,713,3,154,77,0,709,713,
	3,156,78,0,710,713,3,158,79,0,711,713,3,162,81,0,712,677,1,0,0,0,712,678,
	1,0,0,0,712,679,1,0,0,0,712,680,1,0,0,0,712,681,1,0,0,0,712,682,1,0,0,0,
	712,683,1,0,0,0,712,684,1,0,0,0,712,685,1,0,0,0,712,686,1,0,0,0,712,687,
	1,0,0,0,712,688,1,0,0,0,712,689,1,0,0,0,712,690,1,0,0,0,712,691,1,0,0,0,
	712,692,1,0,0,0,712,693,1,0,0,0,712,694,1,0,0,0,712,695,1,0,0,0,712,696,
	1,0,0,0,712,697,1,0,0,0,712,698,1,0,0,0,712,699,1,0,0,0,712,700,1,0,0,0,
	712,701,1,0,0,0,712,702,1,0,0,0,712,703,1,0,0,0,712,704,1,0,0,0,712,705,
	1,0,0,0,712,706,1,0,0,0,712,707,1,0,0,0,712,708,1,0,0,0,712,709,1,0,0,0,
	712,710,1,0,0,0,712,711,1,0,0,0,713,11,1,0,0,0,714,725,3,180,90,0,715,725,
	3,172,86,0,716,725,3,182,91,0,717,725,3,166,83,0,718,725,3,178,89,0,719,
	725,3,164,82,0,720,725,3,174,87,0,721,725,3,176,88,0,722,725,3,168,84,0,
	723,725,3,170,85,0,724,714,1,0,0,0,724,715,1,0,0,0,724,716,1,0,0,0,724,
	717,1,0,0,0,724,718,1,0,0,0,724,719,1,0,0,0,724,720,1,0,0,0,724,721,1,0,
	0,0,724,722,1,0,0,0,724,723,1,0,0,0,725,13,1,0,0,0,726,736,3,256,128,0,
	727,736,3,258,129,0,728,736,3,260,130,0,729,736,3,262,131,0,730,736,3,264,
	132,0,731,736,3,266,133,0,732,736,3,268,134,0,733,736,3,270,135,0,734,736,
	3,272,136,0,735,726,1,0,0,0,735,727,1,0,0,0,735,728,1,0,0,0,735,729,1,0,
	0,0,735,730,1,0,0,0,735,731,1,0,0,0,735,732,1,0,0,0,735,733,1,0,0,0,735,
	734,1,0,0,0,736,15,1,0,0,0,737,753,3,288,144,0,738,753,3,290,145,0,739,
	753,3,292,146,0,740,753,3,294,147,0,741,753,3,296,148,0,742,753,3,298,149,
	0,743,753,3,300,150,0,744,753,3,302,151,0,745,753,3,304,152,0,746,753,3,
	328,164,0,747,753,3,330,165,0,748,753,3,332,166,0,749,753,3,334,167,0,750,
	753,3,336,168,0,751,753,3,338,169,0,752,737,1,0,0,0,752,738,1,0,0,0,752,
	739,1,0,0,0,752,740,1,0,0,0,752,741,1,0,0,0,752,742,1,0,0,0,752,743,1,0,
	0,0,752,744,1,0,0,0,752,745,1,0,0,0,752,746,1,0,0,0,752,747,1,0,0,0,752,
	748,1,0,0,0,752,749,1,0,0,0,752,750,1,0,0,0,752,751,1,0,0,0,753,17,1,0,
	0,0,754,758,3,340,170,0,755,758,3,342,171,0,756,758,3,344,172,0,757,754,
	1,0,0,0,757,755,1,0,0,0,757,756,1,0,0,0,758,19,1,0,0,0,759,770,3,348,174,
	0,760,770,3,350,175,0,761,770,3,352,176,0,762,770,3,356,178,0,763,770,3,
	358,179,0,764,770,3,360,180,0,765,770,3,364,182,0,766,770,3,354,177,0,767,
	770,3,362,181,0,768,770,3,366,183,0,769,759,1,0,0,0,769,760,1,0,0,0,769,
	761,1,0,0,0,769,762,1,0,0,0,769,763,1,0,0,0,769,764,1,0,0,0,769,765,1,0,
	0,0,769,766,1,0,0,0,769,767,1,0,0,0,769,768,1,0,0,0,770,21,1,0,0,0,771,
	797,3,384,192,0,772,797,3,386,193,0,773,797,3,388,194,0,774,797,3,390,195,
	0,775,797,3,392,196,0,776,797,3,394,197,0,777,797,3,396,198,0,778,797,3,
	398,199,0,779,797,3,422,211,0,780,797,3,424,212,0,781,797,3,426,213,0,782,
	797,3,428,214,0,783,797,3,430,215,0,784,797,3,434,217,0,785,797,3,436,218,
	0,786,797,3,438,219,0,787,797,3,440,220,0,788,797,3,442,221,0,789,797,3,
	456,228,0,790,797,3,458,229,0,791,797,3,460,230,0,792,797,3,462,231,0,793,
	797,3,464,232,0,794,797,3,466,233,0,795,797,3,468,234,0,796,771,1,0,0,0,
	796,772,1,0,0,0,796,773,1,0,0,0,796,774,1,0,0,0,796,775,1,0,0,0,796,776,
	1,0,0,0,796,777,1,0,0,0,796,778,1,0,0,0,796,779,1,0,0,0,796,780,1,0,0,0,
	796,781,1,0,0,0,796,782,1,0,0,0,796,783,1,0,0,0,796,784,1,0,0,0,796,785,
	1,0,0,0,796,786,1,0,0,0,796,787,1,0,0,0,796,788,1,0,0,0,796,789,1,0,0,0,
	796,790,1,0,0,0,796,791,1,0,0,0,796,792,1,0,0,0,796,793,1,0,0,0,796,794,
	1,0,0,0,796,795,1,0,0,0,797,23,1,0,0,0,798,806,3,478,239,0,799,806,3,480,
	240,0,800,806,3,482,241,0,801,806,3,484,242,0,802,806,3,486,243,0,803,806,
	3,488,244,0,804,806,3,492,246,0,805,798,1,0,0,0,805,799,1,0,0,0,805,800,
	1,0,0,0,805,801,1,0,0,0,805,802,1,0,0,0,805,803,1,0,0,0,805,804,1,0,0,0,
	806,25,1,0,0,0,807,808,5,30,0,0,808,810,7,0,0,0,809,811,3,580,290,0,810,
	809,1,0,0,0,810,811,1,0,0,0,811,812,1,0,0,0,812,816,3,524,262,0,813,815,
	3,50,25,0,814,813,1,0,0,0,815,818,1,0,0,0,816,814,1,0,0,0,816,817,1,0,0,
	0,817,27,1,0,0,0,818,816,1,0,0,0,819,821,5,30,0,0,820,822,3,52,26,0,821,
	820,1,0,0,0,821,822,1,0,0,0,822,823,1,0,0,0,823,825,5,348,0,0,824,826,3,
	580,290,0,825,824,1,0,0,0,825,826,1,0,0,0,826,827,1,0,0,0,827,828,3,498,
	249,0,828,829,5,106,0,0,829,830,5,515,0,0,830,837,3,54,27,0,831,832,5,106,
	0,0,832,834,5,308,0,0,833,835,5,102,0,0,834,833,1,0,0,0,834,835,1,0,0,0,
	835,836,1,0,0,0,836,838,5,476,0,0,837,831,1,0,0,0,837,838,1,0,0,0,838,840,
	1,0,0,0,839,841,3,62,31,0,840,839,1,0,0,0,840,841,1,0,0,0,841,844,1,0,0,
	0,842,843,5,305,0,0,843,845,5,1035,0,0,844,842,1,0,0,0,844,845,1,0,0,0,
	845,846,1,0,0,0,846,847,5,334,0,0,847,848,3,346,173,0,848,29,1,0,0,0,849,
	851,5,30,0,0,850,852,7,1,0,0,851,850,1,0,0,0,851,852,1,0,0,0,852,854,1,
	0,0,0,853,855,7,2,0,0,854,853,1,0,0,0,854,855,1,0,0,0,855,856,1,0,0,0,856,
	857,5,72,0,0,857,859,3,524,262,0,858,860,3,64,32,0,859,858,1,0,0,0,859,
	860,1,0,0,0,860,861,1,0,0,0,861,862,5,106,0,0,862,863,3,500,250,0,863,867,
	3,560,280,0,864,866,3,66,33,0,865,864,1,0,0,0,866,869,1,0,0,0,867,865,1,
	0,0,0,867,868,1,0,0,0,868,882,1,0,0,0,869,867,1,0,0,0,870,872,5,274,0,0,
	871,873,5,1011,0,0,872,871,1,0,0,0,872,873,1,0,0,0,873,874,1,0,0,0,874,
	881,7,3,0,0,875,877,5,93,0,0,876,878,5,1011,0,0,877,876,1,0,0,0,877,878,
	1,0,0,0,878,879,1,0,0,0,879,881,7,4,0,0,880,870,1,0,0,0,880,875,1,0,0,0,
	881,884,1,0,0,0,882,880,1,0,0,0,882,883,1,0,0,0,883,31,1,0,0,0,884,882,
	1,0,0,0,885,886,5,30,0,0,886,887,5,403,0,0,887,888,5,66,0,0,888,889,3,524,
	262,0,889,890,5,5,0,0,890,891,5,566,0,0,891,897,5,1035,0,0,892,894,5,382,
	0,0,893,895,5,1011,0,0,894,893,1,0,0,0,894,895,1,0,0,0,895,896,1,0,0,0,
	896,898,3,532,266,0,897,892,1,0,0,0,897,898,1,0,0,0,898,904,1,0,0,0,899,
	901,5,567,0,0,900,902,5,1011,0,0,901,900,1,0,0,0,901,902,1,0,0,0,902,903,
	1,0,0,0,903,905,3,532,266,0,904,899,1,0,0,0,904,905,1,0,0,0,905,911,1,0,
	0,0,906,908,5,486,0,0,907,909,5,1011,0,0,908,907,1,0,0,0,908,909,1,0,0,
	0,909,910,1,0,0,0,910,912,3,532,266,0,911,906,1,0,0,0,911,912,1,0,0,0,912,
	918,1,0,0,0,913,915,5,449,0,0,914,916,5,1011,0,0,915,914,1,0,0,0,915,916,
	1,0,0,0,916,917,1,0,0,0,917,919,3,524,262,0,918,913,1,0,0,0,918,919,1,0,
	0,0,919,921,1,0,0,0,920,922,5,581,0,0,921,920,1,0,0,0,921,922,1,0,0,0,922,
	928,1,0,0,0,923,925,5,305,0,0,924,926,5,1011,0,0,925,924,1,0,0,0,925,926,
	1,0,0,0,926,927,1,0,0,0,927,929,5,1035,0,0,928,923,1,0,0,0,928,929,1,0,
	0,0,929,930,1,0,0,0,930,932,5,342,0,0,931,933,5,1011,0,0,932,931,1,0,0,
	0,932,933,1,0,0,0,933,934,1,0,0,0,934,935,3,514,257,0,935,33,1,0,0,0,936,
	938,5,30,0,0,937,939,3,52,26,0,938,937,1,0,0,0,938,939,1,0,0,0,939,940,
	1,0,0,0,940,941,5,117,0,0,941,942,3,498,249,0,942,944,5,1020,0,0,943,945,
	3,68,34,0,944,943,1,0,0,0,944,945,1,0,0,0,945,950,1,0,0,0,946,947,5,1022,
	0,0,947,949,3,68,34,0,948,946,1,0,0,0,949,952,1,0,0,0,950,948,1,0,0,0,950,
	951,1,0,0,0,951,953,1,0,0,0,952,950,1,0,0,0,953,957,5,1021,0,0,954,956,
	3,72,36,0,955,954,1,0,0,0,956,959,1,0,0,0,957,955,1,0,0,0,957,958,1,0,0,
	0,958,960,1,0,0,0,959,957,1,0,0,0,960,961,3,346,173,0,961,35,1,0,0,0,962,
	964,5,30,0,0,963,965,3,52,26,0,964,963,1,0,0,0,964,965,1,0,0,0,965,966,
	1,0,0,0,966,967,5,368,0,0,967,968,3,498,249,0,968,970,5,1020,0,0,969,971,
	3,70,35,0,970,969,1,0,0,0,970,971,1,0,0,0,971,976,1,0,0,0,972,973,5,1022,
	0,0,973,975,3,70,35,0,974,972,1,0,0,0,975,978,1,0,0,0,976,974,1,0,0,0,976,
	977,1,0,0,0,977,979,1,0,0,0,978,976,1,0,0,0,979,980,5,1021,0,0,980,981,
	5,506,0,0,981,985,3,544,272,0,982,984,3,72,36,0,983,982,1,0,0,0,984,987,
	1,0,0,0,985,983,1,0,0,0,985,986,1,0,0,0,986,990,1,0,0,0,987,985,1,0,0,0,
	988,991,3,346,173,0,989,991,3,362,181,0,990,988,1,0,0,0,990,989,1,0,0,0,
	991,37,1,0,0,0,992,993,5,30,0,0,993,994,5,517,0,0,994,995,3,524,262,0,995,
	996,5,60,0,0,996,997,5,323,0,0,997,998,5,585,0,0,998,999,7,5,0,0,999,1000,
	5,460,0,0,1000,1001,5,1020,0,0,1001,1006,3,74,37,0,1002,1003,5,1022,0,0,
	1003,1005,3,74,37,0,1004,1002,1,0,0,0,1005,1008,1,0,0,0,1006,1004,1,0,0,
	0,1006,1007,1,0,0,0,1007,1009,1,0,0,0,1008,1006,1,0,0,0,1009,1010,5,1021,
	0,0,1010,39,1,0,0,0,1011,1013,5,30,0,0,1012,1014,5,557,0,0,1013,1012,1,
	0,0,0,1013,1014,1,0,0,0,1014,1015,1,0,0,0,1015,1017,5,154,0,0,1016,1018,
	3,580,290,0,1017,1016,1,0,0,0,1017,1018,1,0,0,0,1018,1019,1,0,0,0,1019,
	1027,3,500,250,0,1020,1021,5,88,0,0,1021,1028,3,500,250,0,1022,1023,5,1020,
	0,0,1023,1024,5,88,0,0,1024,1025,3,500,250,0,1025,1026,5,1021,0,0,1026,
	1028,1,0,0,0,1027,1020,1,0,0,0,1027,1022,1,0,0,0,1028,1090,1,0,0,0,1029,
	1031,5,30,0,0,1030,1032,5,557,0,0,1031,1030,1,0,0,0,1031,1032,1,0,0,0,1032,
	1033,1,0,0,0,1033,1035,5,154,0,0,1034,1036,3,580,290,0,1035,1034,1,0,0,
	0,1035,1036,1,0,0,0,1036,1037,1,0,0,0,1037,1039,3,500,250,0,1038,1040,3,
	76,38,0,1039,1038,1,0,0,0,1039,1040,1,0,0,0,1040,1051,1,0,0,0,1041,1048,
	3,94,47,0,1042,1044,5,1022,0,0,1043,1042,1,0,0,0,1043,1044,1,0,0,0,1044,
	1045,1,0,0,0,1045,1047,3,94,47,0,1046,1043,1,0,0,0,1047,1050,1,0,0,0,1048,
	1046,1,0,0,0,1048,1049,1,0,0,0,1049,1052,1,0,0,0,1050,1048,1,0,0,0,1051,
	1041,1,0,0,0,1051,1052,1,0,0,0,1052,1054,1,0,0,0,1053,1055,3,98,49,0,1054,
	1053,1,0,0,0,1054,1055,1,0,0,0,1055,1057,1,0,0,0,1056,1058,7,6,0,0,1057,
	1056,1,0,0,0,1057,1058,1,0,0,0,1058,1060,1,0,0,0,1059,1061,5,11,0,0,1060,
	1059,1,0,0,0,1060,1061,1,0,0,0,1061,1062,1,0,0,0,1062,1063,3,180,90,0,1063,
	1090,1,0,0,0,1064,1066,5,30,0,0,1065,1067,5,557,0,0,1066,1065,1,0,0,0,1066,
	1067,1,0,0,0,1067,1068,1,0,0,0,1068,1070,5,154,0,0,1069,1071,3,580,290,
	0,1070,1069,1,0,0,0,1070,1071,1,0,0,0,1071,1072,1,0,0,0,1072,1073,3,500,
	250,0,1073,1084,3,76,38,0,1074,1081,3,94,47,0,1075,1077,5,1022,0,0,1076,
	1075,1,0,0,0,1076,1077,1,0,0,0,1077,1078,1,0,0,0,1078,1080,3,94,47,0,1079,
	1076,1,0,0,0,1080,1083,1,0,0,0,1081,1079,1,0,0,0,1081,1082,1,0,0,0,1082,
	1085,1,0,0,0,1083,1081,1,0,0,0,1084,1074,1,0,0,0,1084,1085,1,0,0,0,1085,
	1087,1,0,0,0,1086,1088,3,98,49,0,1087,1086,1,0,0,0,1087,1088,1,0,0,0,1088,
	1090,1,0,0,0,1089,1011,1,0,0,0,1089,1029,1,0,0,0,1089,1064,1,0,0,0,1090,
	41,1,0,0,0,1091,1092,5,30,0,0,1092,1093,5,556,0,0,1093,1094,3,524,262,0,
	1094,1095,5,5,0,0,1095,1096,5,324,0,0,1096,1100,5,1035,0,0,1097,1098,5,
	360,0,0,1098,1099,5,1011,0,0,1099,1101,3,532,266,0,1100,1097,1,0,0,0,1100,
	1101,1,0,0,0,1101,1107,1,0,0,0,1102,1104,5,342,0,0,1103,1105,5,1011,0,0,
	1104,1103,1,0,0,0,1104,1105,1,0,0,0,1105,1106,1,0,0,0,1106,1108,3,514,257,
	0,1107,1102,1,0,0,0,1107,1108,1,0,0,0,1108,43,1,0,0,0,1109,1110,5,30,0,
	0,1110,1111,5,556,0,0,1111,1112,3,524,262,0,1112,1113,5,5,0,0,1113,1114,
	5,324,0,0,1114,1115,5,1035,0,0,1115,1116,5,168,0,0,1116,1117,5,403,0,0,
	1117,1118,5,66,0,0,1118,1124,3,524,262,0,1119,1121,5,356,0,0,1120,1122,
	5,1011,0,0,1121,1120,1,0,0,0,1121,1122,1,0,0,0,1122,1123,1,0,0,0,1123,1125,
	3,532,266,0,1124,1119,1,0,0,0,1124,1125,1,0,0,0,1125,1131,1,0,0,0,1126,
	1128,5,382,0,0,1127,1129,5,1011,0,0,1128,1127,1,0,0,0,1128,1129,1,0,0,0,
	1129,1130,1,0,0,0,1130,1132,3,532,266,0,1131,1126,1,0,0,0,1131,1132,1,0,
	0,0,1132,1138,1,0,0,0,1133,1135,5,279,0,0,1134,1136,5,1011,0,0,1135,1134,
	1,0,0,0,1135,1136,1,0,0,0,1136,1137,1,0,0,0,1137,1139,3,532,266,0,1138,
	1133,1,0,0,0,1138,1139,1,0,0,0,1139,1145,1,0,0,0,1140,1142,5,429,0,0,1141,
	1143,5,1011,0,0,1142,1141,1,0,0,0,1142,1143,1,0,0,0,1143,1144,1,0,0,0,1144,
	1146,3,532,266,0,1145,1140,1,0,0,0,1145,1146,1,0,0,0,1146,1152,1,0,0,0,
	1147,1149,5,449,0,0,1148,1150,5,1011,0,0,1149,1148,1,0,0,0,1149,1150,1,
	0,0,0,1150,1151,1,0,0,0,1151,1153,3,524,262,0,1152,1147,1,0,0,0,1152,1153,
	1,0,0,0,1153,1155,1,0,0,0,1154,1156,5,581,0,0,1155,1154,1,0,0,0,1155,1156,
	1,0,0,0,1156,1162,1,0,0,0,1157,1159,5,305,0,0,1158,1160,5,1011,0,0,1159,
	1158,1,0,0,0,1159,1160,1,0,0,0,1160,1161,1,0,0,0,1161,1163,5,1035,0,0,1162,
	1157,1,0,0,0,1162,1163,1,0,0,0,1163,1164,1,0,0,0,1164,1166,5,342,0,0,1165,
	1167,5,1011,0,0,1166,1165,1,0,0,0,1166,1167,1,0,0,0,1167,1168,1,0,0,0,1168,
	1169,3,514,257,0,1169,45,1,0,0,0,1170,1172,5,30,0,0,1171,1173,3,52,26,0,
	1172,1171,1,0,0,0,1172,1173,1,0,0,0,1173,1174,1,0,0,0,1174,1175,5,159,0,
	0,1175,1176,3,498,249,0,1176,1177,7,7,0,0,1177,1178,7,8,0,0,1178,1179,5,
	106,0,0,1179,1180,3,500,250,0,1180,1181,5,58,0,0,1181,1182,5,48,0,0,1182,
	1185,5,511,0,0,1183,1184,7,9,0,0,1184,1186,3,498,249,0,1185,1183,1,0,0,
	0,1185,1186,1,0,0,0,1186,1187,1,0,0,0,1187,1188,3,346,173,0,1188,47,1,0,
	0,0,1189,1192,5,30,0,0,1190,1191,5,110,0,0,1191,1193,5,127,0,0,1192,1190,
	1,0,0,0,1192,1193,1,0,0,0,1193,1197,1,0,0,0,1194,1195,5,274,0,0,1195,1196,
	5,1011,0,0,1196,1198,7,10,0,0,1197,1194,1,0,0,0,1197,1198,1,0,0,0,1198,
	1200,1,0,0,0,1199,1201,3,52,26,0,1200,1199,1,0,0,0,1200,1201,1,0,0,0,1201,
	1205,1,0,0,0,1202,1203,5,143,0,0,1203,1204,5,516,0,0,1204,1206,7,11,0,0,
	1205,1202,1,0,0,0,1205,1206,1,0,0,0,1206,1207,1,0,0,0,1207,1208,5,578,0,
	0,1208,1213,3,498,249,0,1209,1210,5,1020,0,0,1210,1211,3,556,278,0,1211,
	1212,5,1021,0,0,1212,1214,1,0,0,0,1213,1209,1,0,0,0,1213,1214,1,0,0,0,1214,
	1215,1,0,0,0,1215,1216,5,11,0,0,1216,1223,3,180,90,0,1217,1219,5,174,0,
	0,1218,1220,7,12,0,0,1219,1218,1,0,0,0,1219,1220,1,0,0,0,1220,1221,1,0,
	0,0,1221,1222,5,23,0,0,1222,1224,5,108,0,0,1223,1217,1,0,0,0,1223,1224,
	1,0,0,0,1224,49,1,0,0,0,1225,1227,5,38,0,0,1226,1225,1,0,0,0,1226,1227,
	1,0,0,0,1227,1231,1,0,0,0,1228,1229,5,22,0,0,1229,1232,5,138,0,0,1230,1232,
	5,731,0,0,1231,1228,1,0,0,0,1231,1230,1,0,0,0,1232,1234,1,0,0,0,1233,1235,
	5,1011,0,0,1234,1233,1,0,0,0,1234,1235,1,0,0,0,1235,1238,1,0,0,0,1236,1239,
	3,510,255,0,1237,1239,5,38,0,0,1238,1236,1,0,0,0,1238,1237,1,0,0,0,1239,
	1249,1,0,0,0,1240,1242,5,38,0,0,1241,1240,1,0,0,0,1241,1242,1,0,0,0,1242,
	1243,1,0,0,0,1243,1245,5,24,0,0,1244,1246,5,1011,0,0,1245,1244,1,0,0,0,
	1245,1246,1,0,0,0,1246,1247,1,0,0,0,1247,1249,3,512,256,0,1248,1226,1,0,
	0,0,1248,1241,1,0,0,0,1249,51,1,0,0,0,1250,1251,5,327,0,0,1251,1258,5,1011,
	0,0,1252,1259,3,506,253,0,1253,1256,5,33,0,0,1254,1255,5,1020,0,0,1255,
	1257,5,1021,0,0,1256,1254,1,0,0,0,1256,1257,1,0,0,0,1257,1259,1,0,0,0,1258,
	1252,1,0,0,0,1258,1253,1,0,0,0,1259,53,1,0,0,0,1260,1261,5,276,0,0,1261,
	1265,3,56,28,0,1262,1264,3,58,29,0,1263,1262,1,0,0,0,1264,1267,1,0,0,0,
	1265,1263,1,0,0,0,1265,1266,1,0,0,0,1266,1295,1,0,0,0,1267,1265,1,0,0,0,
	1268,1271,5,350,0,0,1269,1272,3,530,265,0,1270,1272,3,602,301,0,1271,1269,
	1,0,0,0,1271,1270,1,0,0,0,1272,1273,1,0,0,0,1273,1282,3,60,30,0,1274,1275,
	5,539,0,0,1275,1279,3,56,28,0,1276,1278,3,58,29,0,1277,1276,1,0,0,0,1278,
	1281,1,0,0,0,1279,1277,1,0,0,0,1279,1280,1,0,0,0,1280,1283,1,0,0,0,1281,
	1279,1,0,0,0,1282,1274,1,0,0,0,1282,1283,1,0,0,0,1283,1292,1,0,0,0,1284,
	1285,5,341,0,0,1285,1289,3,56,28,0,1286,1288,3,58,29,0,1287,1286,1,0,0,
	0,1288,1291,1,0,0,0,1289,1287,1,0,0,0,1289,1290,1,0,0,0,1290,1293,1,0,0,
	0,1291,1289,1,0,0,0,1292,1284,1,0,0,0,1292,1293,1,0,0,0,1293,1295,1,0,0,
	0,1294,1260,1,0,0,0,1294,1268,1,0,0,0,1295,55,1,0,0,0,1296,1301,5,253,0,
	0,1297,1301,3,534,267,0,1298,1301,3,530,265,0,1299,1301,3,602,301,0,1300,
	1296,1,0,0,0,1300,1297,1,0,0,0,1300,1298,1,0,0,0,1300,1299,1,0,0,0,1301,
	57,1,0,0,0,1302,1303,5,1006,0,0,1303,1306,5,77,0,0,1304,1307,3,530,265,
	0,1305,1307,3,602,301,0,1306,1304,1,0,0,0,1306,1305,1,0,0,0,1307,1308,1,
	0,0,0,1308,1309,3,60,30,0,1309,59,1,0,0,0,1310,1324,3,624,312,0,1311,1324,
	5,203,0,0,1312,1324,5,222,0,0,1313,1324,5,223,0,0,1314,1324,5,224,0,0,1315,
	1324,5,225,0,0,1316,1324,5,226,0,0,1317,1324,5,227,0,0,1318,1324,5,228,
	0,0,1319,1324,5,229,0,0,1320,1324,5,230,0,0,1321,1324,5,231,0,0,1322,1324,
	5,232,0,0,1323,1310,1,0,0,0,1323,1311,1,0,0,0,1323,1312,1,0,0,0,1323,1313,
	1,0,0,0,1323,1314,1,0,0,0,1323,1315,1,0,0,0,1323,1316,1,0,0,0,1323,1317,
	1,0,0,0,1323,1318,1,0,0,0,1323,1319,1,0,0,0,1323,1320,1,0,0,0,1323,1321,
	1,0,0,0,1323,1322,1,0,0,0,1324,61,1,0,0,0,1325,1331,5,338,0,0,1326,1331,
	5,331,0,0,1327,1328,5,331,0,0,1328,1329,5,106,0,0,1329,1331,5,523,0,0,1330,
	1325,1,0,0,0,1330,1326,1,0,0,0,1330,1327,1,0,0,0,1331,63,1,0,0,0,1332,1333,
	5,169,0,0,1333,1334,7,13,0,0,1334,65,1,0,0,0,1335,1337,5,395,0,0,1336,1338,
	5,1011,0,0,1337,1336,1,0,0,0,1337,1338,1,0,0,0,1338,1339,1,0,0,0,1339,1349,
	3,532,266,0,1340,1349,3,64,32,0,1341,1342,5,174,0,0,1342,1343,5,464,0,0,
	1343,1349,3,524,262,0,1344,1345,5,305,0,0,1345,1349,5,1035,0,0,1346,1349,
	5,387,0,0,1347,1349,5,580,0,0,1348,1335,1,0,0,0,1348,1340,1,0,0,0,1348,
	1341,1,0,0,0,1348,1344,1,0,0,0,1348,1346,1,0,0,0,1348,1347,1,0,0,0,1349,
	67,1,0,0,0,1350,1352,7,14,0,0,1351,1350,1,0,0,0,1351,1352,1,0,0,0,1352,
	1353,1,0,0,0,1353,1354,3,524,262,0,1354,1355,3,544,272,0,1355,69,1,0,0,
	0,1356,1357,3,524,262,0,1357,1358,3,544,272,0,1358,71,1,0,0,0,1359,1360,
	5,305,0,0,1360,1383,5,1035,0,0,1361,1362,5,396,0,0,1362,1383,5,143,0,0,
	1363,1365,5,102,0,0,1364,1363,1,0,0,0,1364,1365,1,0,0,0,1365,1366,1,0,0,
	0,1366,1383,5,43,0,0,1367,1368,5,317,0,0,1368,1378,5,143,0,0,1369,1370,
	5,448,0,0,1370,1378,5,143,0,0,1371,1372,5,121,0,0,1372,1373,5,143,0,0,1373,
	1378,5,323,0,0,1374,1375,5,100,0,0,1375,1376,5,143,0,0,1376,1378,5,323,
	0,0,1377,1367,1,0,0,0,1377,1369,1,0,0,0,1377,1371,1,0,0,0,1377,1374,1,0,
	0,0,1378,1383,1,0,0,0,1379,1380,5,143,0,0,1380,1381,5,516,0,0,1381,1383,
	7,11,0,0,1382,1359,1,0,0,0,1382,1361,1,0,0,0,1382,1364,1,0,0,0,1382,1377,
	1,0,0,0,1382,1379,1,0,0,0,1383,73,1,0,0,0,1384,1385,5,376,0,0,1385,1399,
	5,1035,0,0,1386,1387,5,35,0,0,1387,1399,5,1035,0,0,1388,1389,5,572,0,0,
	1389,1399,5,1035,0,0,1390,1391,5,468,0,0,1391,1399,5,1035,0,0,1392,1393,
	5,526,0,0,1393,1399,5,1035,0,0,1394,1395,5,461,0,0,1395,1399,5,1035,0,0,
	1396,1397,5,473,0,0,1397,1399,3,530,265,0,1398,1384,1,0,0,0,1398,1386,1,
	0,0,0,1398,1388,1,0,0,0,1398,1390,1,0,0,0,1398,1392,1,0,0,0,1398,1394,1,
	0,0,0,1398,1396,1,0,0,0,1399,75,1,0,0,0,1400,1401,5,1020,0,0,1401,1406,
	3,78,39,0,1402,1403,5,1022,0,0,1403,1405,3,78,39,0,1404,1402,1,0,0,0,1405,
	1408,1,0,0,0,1406,1404,1,0,0,0,1406,1407,1,0,0,0,1407,1409,1,0,0,0,1408,
	1406,1,0,0,0,1409,1410,5,1021,0,0,1410,77,1,0,0,0,1411,1412,3,524,262,0,
	1412,1413,3,80,40,0,1413,1417,1,0,0,0,1414,1417,3,84,42,0,1415,1417,3,92,
	46,0,1416,1411,1,0,0,0,1416,1414,1,0,0,0,1416,1415,1,0,0,0,1417,79,1,0,
	0,0,1418,1422,3,544,272,0,1419,1421,3,82,41,0,1420,1419,1,0,0,0,1421,1424,
	1,0,0,0,1422,1420,1,0,0,0,1422,1423,1,0,0,0,1423,81,1,0,0,0,1424,1422,1,
	0,0,0,1425,1477,3,540,270,0,1426,1427,5,38,0,0,1427,1477,3,572,286,0,1428,
	1433,5,280,0,0,1429,1430,5,106,0,0,1430,1431,5,166,0,0,1431,1433,3,574,
	287,0,1432,1428,1,0,0,0,1432,1429,1,0,0,0,1433,1477,1,0,0,0,1434,1436,5,
	116,0,0,1435,1434,1,0,0,0,1435,1436,1,0,0,0,1436,1437,1,0,0,0,1437,1477,
	5,82,0,0,1438,1440,5,163,0,0,1439,1441,5,82,0,0,1440,1439,1,0,0,0,1440,
	1441,1,0,0,0,1441,1477,1,0,0,0,1442,1443,5,305,0,0,1443,1477,5,1035,0,0,
	1444,1445,5,303,0,0,1445,1477,7,15,0,0,1446,1447,5,545,0,0,1447,1477,7,
	16,0,0,1448,1477,3,86,43,0,1449,1450,5,24,0,0,1450,1477,3,512,256,0,1451,
	1452,5,63,0,0,1452,1454,5,8,0,0,1453,1451,1,0,0,0,1453,1454,1,0,0,0,1454,
	1455,1,0,0,0,1455,1456,5,11,0,0,1456,1457,5,1020,0,0,1457,1458,3,602,301,
	0,1458,1460,5,1021,0,0,1459,1461,7,17,0,0,1460,1459,1,0,0,0,1460,1461,1,
	0,0,0,1461,1477,1,0,0,0,1462,1463,5,221,0,0,1463,1464,5,38,0,0,1464,1477,
	5,576,0,0,1465,1467,5,27,0,0,1466,1468,3,524,262,0,1467,1466,1,0,0,0,1467,
	1468,1,0,0,0,1468,1470,1,0,0,0,1469,1465,1,0,0,0,1469,1470,1,0,0,0,1470,
	1471,1,0,0,0,1471,1472,5,23,0,0,1472,1473,5,1020,0,0,1473,1474,3,602,301,
	0,1474,1475,5,1021,0,0,1475,1477,1,0,0,0,1476,1425,1,0,0,0,1476,1426,1,
	0,0,0,1476,1432,1,0,0,0,1476,1435,1,0,0,0,1476,1438,1,0,0,0,1476,1442,1,
	0,0,0,1476,1444,1,0,0,0,1476,1446,1,0,0,0,1476,1448,1,0,0,0,1476,1449,1,
	0,0,0,1476,1453,1,0,0,0,1476,1462,1,0,0,0,1476,1469,1,0,0,0,1477,83,1,0,
	0,0,1478,1480,5,27,0,0,1479,1481,3,524,262,0,1480,1479,1,0,0,0,1480,1481,
	1,0,0,0,1481,1483,1,0,0,0,1482,1478,1,0,0,0,1482,1483,1,0,0,0,1483,1484,
	1,0,0,0,1484,1485,5,116,0,0,1485,1487,5,82,0,0,1486,1488,3,524,262,0,1487,
	1486,1,0,0,0,1487,1488,1,0,0,0,1488,1490,1,0,0,0,1489,1491,3,64,32,0,1490,
	1489,1,0,0,0,1490,1491,1,0,0,0,1491,1492,1,0,0,0,1492,1496,3,560,280,0,
	1493,1495,3,66,33,0,1494,1493,1,0,0,0,1495,1498,1,0,0,0,1496,1494,1,0,0,
	0,1496,1497,1,0,0,0,1497,1548,1,0,0,0,1498,1496,1,0,0,0,1499,1501,5,27,
	0,0,1500,1502,3,524,262,0,1501,1500,1,0,0,0,1501,1502,1,0,0,0,1502,1504,
	1,0,0,0,1503,1499,1,0,0,0,1503,1504,1,0,0,0,1504,1505,1,0,0,0,1505,1507,
	5,163,0,0,1506,1508,7,18,0,0,1507,1506,1,0,0,0,1507,1508,1,0,0,0,1508,1510,
	1,0,0,0,1509,1511,3,524,262,0,1510,1509,1,0,0,0,1510,1511,1,0,0,0,1511,
	1513,1,0,0,0,1512,1514,3,64,32,0,1513,1512,1,0,0,0,1513,1514,1,0,0,0,1514,
	1515,1,0,0,0,1515,1519,3,560,280,0,1516,1518,3,66,33,0,1517,1516,1,0,0,
	0,1518,1521,1,0,0,0,1519,1517,1,0,0,0,1519,1520,1,0,0,0,1520,1548,1,0,0,
	0,1521,1519,1,0,0,0,1522,1524,5,27,0,0,1523,1525,3,524,262,0,1524,1523,
	1,0,0,0,1524,1525,1,0,0,0,1525,1527,1,0,0,0,1526,1522,1,0,0,0,1526,1527,
	1,0,0,0,1527,1528,1,0,0,0,1528,1529,5,60,0,0,1529,1531,5,82,0,0,1530,1532,
	3,524,262,0,1531,1530,1,0,0,0,1531,1532,1,0,0,0,1532,1533,1,0,0,0,1533,
	1534,3,560,280,0,1534,1535,3,86,43,0,1535,1548,1,0,0,0,1536,1538,5,27,0,
	0,1537,1539,3,524,262,0,1538,1537,1,0,0,0,1538,1539,1,0,0,0,1539,1541,1,
	0,0,0,1540,1536,1,0,0,0,1540,1541,1,0,0,0,1541,1542,1,0,0,0,1542,1543,5,
	23,0,0,1543,1544,5,1020,0,0,1544,1545,3,602,301,0,1545,1546,5,1021,0,0,
	1546,1548,1,0,0,0,1547,1482,1,0,0,0,1547,1503,1,0,0,0,1547,1526,1,0,0,0,
	1547,1540,1,0,0,0,1548,85,1,0,0,0,1549,1550,5,122,0,0,1550,1552,3,500,250,
	0,1551,1553,3,560,280,0,1552,1551,1,0,0,0,1552,1553,1,0,0,0,1553,1556,1,
	0,0,0,1554,1555,5,98,0,0,1555,1557,7,19,0,0,1556,1554,1,0,0,0,1556,1557,
	1,0,0,0,1557,1559,1,0,0,0,1558,1560,3,88,44,0,1559,1558,1,0,0,0,1559,1560,
	1,0,0,0,1560,87,1,0,0,0,1561,1562,5,106,0,0,1562,1563,5,40,0,0,1563,1567,
	3,90,45,0,1564,1565,5,106,0,0,1565,1566,5,166,0,0,1566,1568,3,90,45,0,1567,
	1564,1,0,0,0,1567,1568,1,0,0,0,1568,1578,1,0,0,0,1569,1570,5,106,0,0,1570,
	1571,5,166,0,0,1571,1575,3,90,45,0,1572,1573,5,106,0,0,1573,1574,5,40,0,
	0,1574,1576,3,90,45,0,1575,1572,1,0,0,0,1575,1576,1,0,0,0,1576,1578,1,0,
	0,0,1577,1561,1,0,0,0,1577,1569,1,0,0,0,1578,89,1,0,0,0,1579,1586,5,130,
	0,0,1580,1586,5,18,0,0,1581,1582,5,138,0,0,1582,1586,5,104,0,0,1583,1584,
	5,448,0,0,1584,1586,5,271,0,0,1585,1579,1,0,0,0,1585,1580,1,0,0,0,1585,
	1581,1,0,0,0,1585,1583,1,0,0,0,1586,91,1,0,0,0,1587,1589,7,18,0,0,1588,
	1590,3,524,262,0,1589,1588,1,0,0,0,1589,1590,1,0,0,0,1590,1592,1,0,0,0,
	1591,1593,3,64,32,0,1592,1591,1,0,0,0,1592,1593,1,0,0,0,1593,1594,1,0,0,
	0,1594,1598,3,560,280,0,1595,1597,3,66,33,0,1596,1595,1,0,0,0,1597,1600,
	1,0,0,0,1598,1596,1,0,0,0,1598,1599,1,0,0,0,1599,1616,1,0,0,0,1600,1598,
	1,0,0,0,1601,1603,7,20,0,0,1602,1604,7,18,0,0,1603,1602,1,0,0,0,1603,1604,
	1,0,0,0,1604,1606,1,0,0,0,1605,1607,3,524,262,0,1606,1605,1,0,0,0,1606,
	1607,1,0,0,0,1607,1608,1,0,0,0,1608,1612,3,560,280,0,1609,1611,3,66,33,
	0,1610,1609,1,0,0,0,1611,1614,1,0,0,0,1612,1610,1,0,0,0,1612,1613,1,0,0,
	0,1613,1616,1,0,0,0,1614,1612,1,0,0,0,1615,1587,1,0,0,0,1615,1601,1,0,0,
	0,1616,93,1,0,0,0,1617,1619,5,342,0,0,1618,1620,5,1011,0,0,1619,1618,1,
	0,0,0,1619,1620,1,0,0,0,1620,1621,1,0,0,0,1621,1762,3,514,257,0,1622,1624,
	5,280,0,0,1623,1625,5,1011,0,0,1624,1623,1,0,0,0,1624,1625,1,0,0,0,1625,
	1626,1,0,0,0,1626,1762,3,530,265,0,1627,1629,5,281,0,0,1628,1630,5,1011,
	0,0,1629,1628,1,0,0,0,1629,1630,1,0,0,0,1630,1631,1,0,0,0,1631,1762,3,530,
	265,0,1632,1634,5,38,0,0,1633,1632,1,0,0,0,1633,1634,1,0,0,0,1634,1638,
	1,0,0,0,1635,1636,5,22,0,0,1636,1639,5,138,0,0,1637,1639,5,731,0,0,1638,
	1635,1,0,0,0,1638,1637,1,0,0,0,1639,1641,1,0,0,0,1640,1642,5,1011,0,0,1641,
	1640,1,0,0,0,1641,1642,1,0,0,0,1642,1645,1,0,0,0,1643,1646,3,510,255,0,
	1644,1646,5,38,0,0,1645,1643,1,0,0,0,1645,1644,1,0,0,0,1646,1762,1,0,0,
	0,1647,1649,7,21,0,0,1648,1650,5,1011,0,0,1649,1648,1,0,0,0,1649,1650,1,
	0,0,0,1650,1651,1,0,0,0,1651,1762,7,22,0,0,1652,1654,5,38,0,0,1653,1652,
	1,0,0,0,1653,1654,1,0,0,0,1654,1655,1,0,0,0,1655,1657,5,24,0,0,1656,1658,
	5,1011,0,0,1657,1656,1,0,0,0,1657,1658,1,0,0,0,1658,1659,1,0,0,0,1659,1762,
	3,512,256,0,1660,1662,5,305,0,0,1661,1663,5,1011,0,0,1662,1661,1,0,0,0,
	1662,1663,1,0,0,0,1663,1664,1,0,0,0,1664,1762,5,1035,0,0,1665,1667,5,310,
	0,0,1666,1668,5,1011,0,0,1667,1666,1,0,0,0,1667,1668,1,0,0,0,1668,1669,
	1,0,0,0,1669,1762,7,23,0,0,1670,1672,5,312,0,0,1671,1673,5,1011,0,0,1672,
	1671,1,0,0,0,1672,1673,1,0,0,0,1673,1674,1,0,0,0,1674,1762,5,1035,0,0,1675,
	1676,5,323,0,0,1676,1678,5,330,0,0,1677,1679,5,1011,0,0,1678,1677,1,0,0,
	0,1678,1679,1,0,0,0,1679,1680,1,0,0,0,1680,1762,5,1035,0,0,1681,1683,5,
	328,0,0,1682,1684,5,1011,0,0,1683,1682,1,0,0,0,1683,1684,1,0,0,0,1684,1685,
	1,0,0,0,1685,1762,7,22,0,0,1686,1688,5,339,0,0,1687,1689,5,1011,0,0,1688,
	1687,1,0,0,0,1688,1689,1,0,0,0,1689,1690,1,0,0,0,1690,1762,5,1035,0,0,1691,
	1692,5,72,0,0,1692,1694,5,330,0,0,1693,1695,5,1011,0,0,1694,1693,1,0,0,
	0,1694,1695,1,0,0,0,1695,1696,1,0,0,0,1696,1762,5,1035,0,0,1697,1699,5,
	384,0,0,1698,1700,5,1011,0,0,1699,1698,1,0,0,0,1699,1700,1,0,0,0,1700,1701,
	1,0,0,0,1701,1762,7,24,0,0,1702,1704,5,395,0,0,1703,1705,5,1011,0,0,1704,
	1703,1,0,0,0,1704,1705,1,0,0,0,1705,1706,1,0,0,0,1706,1762,3,532,266,0,
	1707,1709,5,428,0,0,1708,1710,5,1011,0,0,1709,1708,1,0,0,0,1709,1710,1,
	0,0,0,1710,1711,1,0,0,0,1711,1762,3,530,265,0,1712,1714,5,437,0,0,1713,
	1715,5,1011,0,0,1714,1713,1,0,0,0,1714,1715,1,0,0,0,1715,1716,1,0,0,0,1716,
	1762,3,530,265,0,1717,1719,5,462,0,0,1718,1720,5,1011,0,0,1719,1718,1,0,
	0,0,1719,1720,1,0,0,0,1720,1721,1,0,0,0,1721,1762,7,25,0,0,1722,1724,5,
	468,0,0,1723,1725,5,1011,0,0,1724,1723,1,0,0,0,1724,1725,1,0,0,0,1725,1726,
	1,0,0,0,1726,1762,5,1035,0,0,1727,1729,5,513,0,0,1728,1730,5,1011,0,0,1729,
	1728,1,0,0,0,1729,1730,1,0,0,0,1730,1731,1,0,0,0,1731,1762,7,26,0,0,1732,
	1734,5,540,0,0,1733,1735,5,1011,0,0,1734,1733,1,0,0,0,1734,1735,1,0,0,0,
	1735,1736,1,0,0,0,1736,1762,7,25,0,0,1737,1739,5,541,0,0,1738,1740,5,1011,
	0,0,1739,1738,1,0,0,0,1739,1740,1,0,0,0,1740,1741,1,0,0,0,1741,1762,7,25,
	0,0,1742,1744,5,542,0,0,1743,1745,5,1011,0,0,1744,1743,1,0,0,0,1744,1745,
	1,0,0,0,1745,1746,1,0,0,0,1746,1762,3,530,265,0,1747,1748,5,556,0,0,1748,
	1750,3,524,262,0,1749,1751,3,96,48,0,1750,1749,1,0,0,0,1750,1751,1,0,0,
	0,1751,1762,1,0,0,0,1752,1762,3,96,48,0,1753,1755,5,162,0,0,1754,1756,5,
	1011,0,0,1755,1754,1,0,0,0,1755,1756,1,0,0,0,1756,1757,1,0,0,0,1757,1758,
	5,1020,0,0,1758,1759,3,558,279,0,1759,1760,5,1021,0,0,1760,1762,1,0,0,0,
	1761,1617,1,0,0,0,1761,1622,1,0,0,0,1761,1627,1,0,0,0,1761,1633,1,0,0,0,
	1761,1647,1,0,0,0,1761,1653,1,0,0,0,1761,1660,1,0,0,0,1761,1665,1,0,0,0,
	1761,1670,1,0,0,0,1761,1675,1,0,0,0,1761,1681,1,0,0,0,1761,1686,1,0,0,0,
	1761,1691,1,0,0,0,1761,1697,1,0,0,0,1761,1702,1,0,0,0,1761,1707,1,0,0,0,
	1761,1712,1,0,0,0,1761,1717,1,0,0,0,1761,1722,1,0,0,0,1761,1727,1,0,0,0,
	1761,1732,1,0,0,0,1761,1737,1,0,0,0,1761,1742,1,0,0,0,1761,1747,1,0,0,0,
	1761,1752,1,0,0,0,1761,1753,1,0,0,0,1762,95,1,0,0,0,1763,1764,5,545,0,0,
	1764,1765,7,16,0,0,1765,97,1,0,0,0,1766,1767,5,115,0,0,1767,1768,5,16,0,
	0,1768,1771,3,100,50,0,1769,1770,5,467,0,0,1770,1772,3,530,265,0,1771,1769,
	1,0,0,0,1771,1772,1,0,0,0,1772,1780,1,0,0,0,1773,1774,5,550,0,0,1774,1775,
	5,16,0,0,1775,1778,3,102,51,0,1776,1777,5,551,0,0,1777,1779,3,530,265,0,
	1778,1776,1,0,0,0,1778,1779,1,0,0,0,1779,1781,1,0,0,0,1780,1773,1,0,0,0,
	1780,1781,1,0,0,0,1781,1793,1,0,0,0,1782,1783,5,1020,0,0,1783,1788,3,104,
	52,0,1784,1785,5,1022,0,0,1785,1787,3,104,52,0,1786,1784,1,0,0,0,1787,1790,
	1,0,0,0,1788,1786,1,0,0,0,1788,1789,1,0,0,0,1789,1791,1,0,0,0,1790,1788,
	1,0,0,0,1791,1792,5,1021,0,0,1792,1794,1,0,0,0,1793,1782,1,0,0,0,1793,1794,
	1,0,0,0,1794,99,1,0,0,0,1795,1797,5,90,0,0,1796,1795,1,0,0,0,1796,1797,
	1,0,0,0,1797,1798,1,0,0,0,1798,1799,5,374,0,0,1799,1800,5,1020,0,0,1800,
	1801,3,602,301,0,1801,1802,5,1021,0,0,1802,1841,1,0,0,0,1803,1805,5,90,
	0,0,1804,1803,1,0,0,0,1804,1805,1,0,0,0,1805,1806,1,0,0,0,1806,1810,5,82,
	0,0,1807,1808,5,274,0,0,1808,1809,5,1011,0,0,1809,1811,7,27,0,0,1810,1807,
	1,0,0,0,1810,1811,1,0,0,0,1811,1812,1,0,0,0,1812,1813,5,1020,0,0,1813,1814,
	3,556,278,0,1814,1815,5,1021,0,0,1815,1841,1,0,0,0,1816,1826,5,119,0,0,
	1817,1818,5,1020,0,0,1818,1819,3,602,301,0,1819,1820,5,1021,0,0,1820,1827,
	1,0,0,0,1821,1822,5,302,0,0,1822,1823,5,1020,0,0,1823,1824,3,556,278,0,
	1824,1825,5,1021,0,0,1825,1827,1,0,0,0,1826,1817,1,0,0,0,1826,1821,1,0,
	0,0,1827,1841,1,0,0,0,1828,1838,5,401,0,0,1829,1830,5,1020,0,0,1830,1831,
	3,602,301,0,1831,1832,5,1021,0,0,1832,1839,1,0,0,0,1833,1834,5,302,0,0,
	1834,1835,5,1020,0,0,1835,1836,3,556,278,0,1836,1837,5,1021,0,0,1837,1839,
	1,0,0,0,1838,1829,1,0,0,0,1838,1833,1,0,0,0,1839,1841,1,0,0,0,1840,1796,
	1,0,0,0,1840,1804,1,0,0,0,1840,1816,1,0,0,0,1840,1828,1,0,0,0,1841,101,
	1,0,0,0,1842,1844,5,90,0,0,1843,1842,1,0,0,0,1843,1844,1,0,0,0,1844,1845,
	1,0,0,0,1845,1846,5,374,0,0,1846,1847,5,1020,0,0,1847,1848,3,602,301,0,
	1848,1849,5,1021,0,0,1849,1864,1,0,0,0,1850,1852,5,90,0,0,1851,1850,1,0,
	0,0,1851,1852,1,0,0,0,1852,1853,1,0,0,0,1853,1857,5,82,0,0,1854,1855,5,
	274,0,0,1855,1856,5,1011,0,0,1856,1858,7,27,0,0,1857,1854,1,0,0,0,1857,
	1858,1,0,0,0,1858,1859,1,0,0,0,1859,1860,5,1020,0,0,1860,1861,3,556,278,
	0,1861,1862,5,1021,0,0,1862,1864,1,0,0,0,1863,1843,1,0,0,0,1863,1851,1,
	0,0,0,1864,103,1,0,0,0,1865,1866,5,115,0,0,1866,1867,3,524,262,0,1867,1868,
	5,170,0,0,1868,1869,5,399,0,0,1869,1870,5,559,0,0,1870,1871,5,1020,0,0,
	1871,1876,3,106,53,0,1872,1873,5,1022,0,0,1873,1875,3,106,53,0,1874,1872,
	1,0,0,0,1875,1878,1,0,0,0,1876,1874,1,0,0,0,1876,1877,1,0,0,0,1877,1879,
	1,0,0,0,1878,1876,1,0,0,0,1879,1883,5,1021,0,0,1880,1882,3,112,56,0,1881,
	1880,1,0,0,0,1882,1885,1,0,0,0,1883,1881,1,0,0,0,1883,1884,1,0,0,0,1884,
	1894,1,0,0,0,1885,1883,1,0,0,0,1886,1891,3,110,55,0,1887,1888,5,1022,0,
	0,1888,1890,3,110,55,0,1889,1887,1,0,0,0,1890,1893,1,0,0,0,1891,1889,1,
	0,0,0,1891,1892,1,0,0,0,1892,1895,1,0,0,0,1893,1891,1,0,0,0,1894,1886,1,
	0,0,0,1894,1895,1,0,0,0,1895,1997,1,0,0,0,1896,1897,5,115,0,0,1897,1898,
	3,524,262,0,1898,1899,5,170,0,0,1899,1900,5,399,0,0,1900,1901,5,559,0,0,
	1901,1905,3,106,53,0,1902,1904,3,112,56,0,1903,1902,1,0,0,0,1904,1907,1,
	0,0,0,1905,1903,1,0,0,0,1905,1906,1,0,0,0,1906,1916,1,0,0,0,1907,1905,1,
	0,0,0,1908,1913,3,110,55,0,1909,1910,5,1022,0,0,1910,1912,3,110,55,0,1911,
	1909,1,0,0,0,1912,1915,1,0,0,0,1913,1911,1,0,0,0,1913,1914,1,0,0,0,1914,
	1917,1,0,0,0,1915,1913,1,0,0,0,1916,1908,1,0,0,0,1916,1917,1,0,0,0,1917,
	1997,1,0,0,0,1918,1919,5,115,0,0,1919,1920,3,524,262,0,1920,1921,5,170,
	0,0,1921,1922,5,71,0,0,1922,1923,5,1020,0,0,1923,1928,3,106,53,0,1924,1925,
	5,1022,0,0,1925,1927,3,106,53,0,1926,1924,1,0,0,0,1927,1930,1,0,0,0,1928,
	1926,1,0,0,0,1928,1929,1,0,0,0,1929,1931,1,0,0,0,1930,1928,1,0,0,0,1931,
	1935,5,1021,0,0,1932,1934,3,112,56,0,1933,1932,1,0,0,0,1934,1937,1,0,0,
	0,1935,1933,1,0,0,0,1935,1936,1,0,0,0,1936,1946,1,0,0,0,1937,1935,1,0,0,
	0,1938,1943,3,110,55,0,1939,1940,5,1022,0,0,1940,1942,3,110,55,0,1941,1939,
	1,0,0,0,1942,1945,1,0,0,0,1943,1941,1,0,0,0,1943,1944,1,0,0,0,1944,1947,
	1,0,0,0,1945,1943,1,0,0,0,1946,1938,1,0,0,0,1946,1947,1,0,0,0,1947,1997,
	1,0,0,0,1948,1949,5,115,0,0,1949,1950,3,524,262,0,1950,1951,5,170,0,0,1951,
	1952,5,71,0,0,1952,1953,5,1020,0,0,1953,1958,3,108,54,0,1954,1955,5,1022,
	0,0,1955,1957,3,108,54,0,1956,1954,1,0,0,0,1957,1960,1,0,0,0,1958,1956,
	1,0,0,0,1958,1959,1,0,0,0,1959,1961,1,0,0,0,1960,1958,1,0,0,0,1961,1965,
	5,1021,0,0,1962,1964,3,112,56,0,1963,1962,1,0,0,0,1964,1967,1,0,0,0,1965,
	1963,1,0,0,0,1965,1966,1,0,0,0,1966,1976,1,0,0,0,1967,1965,1,0,0,0,1968,
	1973,3,110,55,0,1969,1970,5,1022,0,0,1970,1972,3,110,55,0,1971,1969,1,0,
	0,0,1972,1975,1,0,0,0,1973,1971,1,0,0,0,1973,1974,1,0,0,0,1974,1977,1,0,
	0,0,1975,1973,1,0,0,0,1976,1968,1,0,0,0,1976,1977,1,0,0,0,1977,1997,1,0,
	0,0,1978,1979,5,115,0,0,1979,1983,3,524,262,0,1980,1982,3,112,56,0,1981,
	1980,1,0,0,0,1982,1985,1,0,0,0,1983,1981,1,0,0,0,1983,1984,1,0,0,0,1984,
	1994,1,0,0,0,1985,1983,1,0,0,0,1986,1991,3,110,55,0,1987,1988,5,1022,0,
	0,1988,1990,3,110,55,0,1989,1987,1,0,0,0,1990,1993,1,0,0,0,1991,1989,1,
	0,0,0,1991,1992,1,0,0,0,1992,1995,1,0,0,0,1993,1991,1,0,0,0,1994,1986,1,
	0,0,0,1994,1995,1,0,0,0,1995,1997,1,0,0,0,1996,1865,1,0,0,0,1996,1896,1,
	0,0,0,1996,1918,1,0,0,0,1996,1948,1,0,0,0,1996,1978,1,0,0,0,1997,105,1,
	0,0,0,1998,2002,3,542,271,0,1999,2002,3,602,301,0,2000,2002,5,99,0,0,2001,
	1998,1,0,0,0,2001,1999,1,0,0,0,2001,2000,1,0,0,0,2002,107,1,0,0,0,2003,
	2004,5,1020,0,0,2004,2007,3,106,53,0,2005,2006,5,1022,0,0,2006,2008,3,106,
	53,0,2007,2005,1,0,0,0,2008,2009,1,0,0,0,2009,2007,1,0,0,0,2009,2010,1,
	0,0,0,2010,2011,1,0,0,0,2011,2012,5,1021,0,0,2012,109,1,0,0,0,2013,2014,
	5,550,0,0,2014,2018,3,524,262,0,2015,2017,3,112,56,0,2016,2015,1,0,0,0,
	2017,2020,1,0,0,0,2018,2016,1,0,0,0,2018,2019,1,0,0,0,2019,111,1,0,0,0,
	2020,2018,1,0,0,0,2021,2023,5,545,0,0,2022,2021,1,0,0,0,2022,2023,1,0,0,
	0,2023,2024,1,0,0,0,2024,2026,5,342,0,0,2025,2027,5,1011,0,0,2026,2025,
	1,0,0,0,2026,2027,1,0,0,0,2027,2028,1,0,0,0,2028,2067,3,514,257,0,2029,
	2031,5,305,0,0,2030,2032,5,1011,0,0,2031,2030,1,0,0,0,2031,2032,1,0,0,0,
	2032,2033,1,0,0,0,2033,2067,5,1035,0,0,2034,2035,5,323,0,0,2035,2037,5,
	330,0,0,2036,2038,5,1011,0,0,2037,2036,1,0,0,0,2037,2038,1,0,0,0,2038,2039,
	1,0,0,0,2039,2067,5,1035,0,0,2040,2041,5,72,0,0,2041,2043,5,330,0,0,2042,
	2044,5,1011,0,0,2043,2042,1,0,0,0,2043,2044,1,0,0,0,2044,2045,1,0,0,0,2045,
	2067,5,1035,0,0,2046,2048,5,428,0,0,2047,2049,5,1011,0,0,2048,2047,1,0,
	0,0,2048,2049,1,0,0,0,2049,2050,1,0,0,0,2050,2067,3,530,265,0,2051,2053,
	5,437,0,0,2052,2054,5,1011,0,0,2053,2052,1,0,0,0,2053,2054,1,0,0,0,2054,
	2055,1,0,0,0,2055,2067,3,530,265,0,2056,2058,5,556,0,0,2057,2059,5,1011,
	0,0,2058,2057,1,0,0,0,2058,2059,1,0,0,0,2059,2060,1,0,0,0,2060,2067,3,524,
	262,0,2061,2063,5,449,0,0,2062,2064,5,1011,0,0,2063,2062,1,0,0,0,2063,2064,
	1,0,0,0,2064,2065,1,0,0,0,2065,2067,3,524,262,0,2066,2022,1,0,0,0,2066,
	2029,1,0,0,0,2066,2034,1,0,0,0,2066,2040,1,0,0,0,2066,2046,1,0,0,0,2066,
	2051,1,0,0,0,2066,2056,1,0,0,0,2066,2061,1,0,0,0,2067,113,1,0,0,0,2068,
	2069,5,7,0,0,2069,2071,7,0,0,0,2070,2072,3,524,262,0,2071,2070,1,0,0,0,
	2071,2072,1,0,0,0,2072,2074,1,0,0,0,2073,2075,3,50,25,0,2074,2073,1,0,0,
	0,2075,2076,1,0,0,0,2076,2074,1,0,0,0,2076,2077,1,0,0,0,2077,2087,1,0,0,
	0,2078,2079,5,7,0,0,2079,2080,7,0,0,0,2080,2081,3,524,262,0,2081,2082,5,
	571,0,0,2082,2083,5,323,0,0,2083,2084,5,330,0,0,2084,2085,5,443,0,0,2085,
	2087,1,0,0,0,2086,2068,1,0,0,0,2086,2078,1,0,0,0,2087,115,1,0,0,0,2088,
	2090,5,7,0,0,2089,2091,3,52,26,0,2090,2089,1,0,0,0,2090,2091,1,0,0,0,2091,
	2092,1,0,0,0,2092,2093,5,348,0,0,2093,2097,3,498,249,0,2094,2095,5,106,
	0,0,2095,2096,5,515,0,0,2096,2098,3,54,27,0,2097,2094,1,0,0,0,2097,2098,
	1,0,0,0,2098,2105,1,0,0,0,2099,2100,5,106,0,0,2100,2102,5,308,0,0,2101,
	2103,5,102,0,0,2102,2101,1,0,0,0,2102,2103,1,0,0,0,2103,2104,1,0,0,0,2104,
	2106,5,476,0,0,2105,2099,1,0,0,0,2105,2106,1,0,0,0,2106,2110,1,0,0,0,2107,
	2108,5,125,0,0,2108,2109,5,157,0,0,2109,2111,3,498,249,0,2110,2107,1,0,
	0,0,2110,2111,1,0,0,0,2111,2113,1,0,0,0,2112,2114,3,62,31,0,2113,2112,1,
	0,0,0,2113,2114,1,0,0,0,2114,2117,1,0,0,0,2115,2116,5,305,0,0,2116,2118,
	5,1035,0,0,2117,2115,1,0,0,0,2117,2118,1,0,0,0,2118,2121,1,0,0,0,2119,2120,
	5,334,0,0,2120,2122,3,346,173,0,2121,2119,1,0,0,0,2121,2122,1,0,0,0,2122,
	117,1,0,0,0,2123,2124,5,7,0,0,2124,2125,5,368,0,0,2125,2129,3,498,249,0,
	2126,2128,3,72,36,0,2127,2126,1,0,0,0,2128,2131,1,0,0,0,2129,2127,1,0,0,
	0,2129,2130,1,0,0,0,2130,119,1,0,0,0,2131,2129,1,0,0,0,2132,2133,5,7,0,
	0,2133,2134,5,386,0,0,2134,2135,5,510,0,0,2135,2136,5,681,0,0,2136,2137,
	5,405,0,0,2137,2138,5,82,0,0,2138,121,1,0,0,0,2139,2140,5,7,0,0,2140,2141,
	5,403,0,0,2141,2142,5,66,0,0,2142,2143,3,524,262,0,2143,2144,5,5,0,0,2144,
	2145,5,566,0,0,2145,2151,5,1035,0,0,2146,2148,5,382,0,0,2147,2149,5,1011,
	0,0,2148,2147,1,0,0,0,2148,2149,1,0,0,0,2149,2150,1,0,0,0,2150,2152,3,532,
	266,0,2151,2146,1,0,0,0,2151,2152,1,0,0,0,2152,2154,1,0,0,0,2153,2155,5,
	581,0,0,2154,2153,1,0,0,0,2154,2155,1,0,0,0,2155,2156,1,0,0,0,2156,2158,
	5,342,0,0,2157,2159,5,1011,0,0,2158,2157,1,0,0,0,2158,2159,1,0,0,0,2159,
	2160,1,0,0,0,2160,2161,3,514,257,0,2161,123,1,0,0,0,2162,2163,5,7,0,0,2163,
	2164,5,117,0,0,2164,2168,3,498,249,0,2165,2167,3,72,36,0,2166,2165,1,0,
	0,0,2167,2170,1,0,0,0,2168,2166,1,0,0,0,2168,2169,1,0,0,0,2169,125,1,0,
	0,0,2170,2168,1,0,0,0,2171,2172,5,7,0,0,2172,2173,5,517,0,0,2173,2174,3,
	524,262,0,2174,2175,5,460,0,0,2175,2176,5,1020,0,0,2176,2181,3,74,37,0,
	2177,2178,5,1022,0,0,2178,2180,3,74,37,0,2179,2177,1,0,0,0,2180,2183,1,
	0,0,0,2181,2179,1,0,0,0,2181,2182,1,0,0,0,2182,2184,1,0,0,0,2183,2181,1,
	0,0,0,2184,2185,5,1021,0,0,2185,127,1,0,0,0,2186,2188,5,7,0,0,2187,2189,
	7,1,0,0,2188,2187,1,0,0,0,2188,2189,1,0,0,0,2189,2191,1,0,0,0,2190,2192,
	5,70,0,0,2191,2190,1,0,0,0,2191,2192,1,0,0,0,2192,2193,1,0,0,0,2193,2194,
	5,154,0,0,2194,2203,3,500,250,0,2195,2200,3,134,67,0,2196,2197,5,1022,0,
	0,2197,2199,3,134,67,0,2198,2196,1,0,0,0,2199,2202,1,0,0,0,2200,2198,1,
	0,0,0,2200,2201,1,0,0,0,2201,2204,1,0,0,0,2202,2200,1,0,0,0,2203,2195,1,
	0,0,0,2203,2204,1,0,0,0,2204,2206,1,0,0,0,2205,2207,3,98,49,0,2206,2205,
	1,0,0,0,2206,2207,1,0,0,0,2207,129,1,0,0,0,2208,2209,5,7,0,0,2209,2210,
	5,556,0,0,2210,2211,3,524,262,0,2211,2212,7,28,0,0,2212,2213,5,324,0,0,
	2213,2217,5,1035,0,0,2214,2215,5,382,0,0,2215,2216,5,1011,0,0,2216,2218,
	3,532,266,0,2217,2214,1,0,0,0,2217,2218,1,0,0,0,2218,2220,1,0,0,0,2219,
	2221,5,581,0,0,2220,2219,1,0,0,0,2220,2221,1,0,0,0,2221,2222,1,0,0,0,2222,
	2224,5,342,0,0,2223,2225,5,1011,0,0,2224,2223,1,0,0,0,2224,2225,1,0,0,0,
	2225,2226,1,0,0,0,2226,2227,3,514,257,0,2227,131,1,0,0,0,2228,2232,5,7,
	0,0,2229,2230,5,274,0,0,2230,2231,5,1011,0,0,2231,2233,7,10,0,0,2232,2229,
	1,0,0,0,2232,2233,1,0,0,0,2233,2235,1,0,0,0,2234,2236,3,52,26,0,2235,2234,
	1,0,0,0,2235,2236,1,0,0,0,2236,2240,1,0,0,0,2237,2238,5,143,0,0,2238,2239,
	5,516,0,0,2239,2241,7,11,0,0,2240,2237,1,0,0,0,2240,2241,1,0,0,0,2241,2242,
	1,0,0,0,2242,2243,5,578,0,0,2243,2248,3,498,249,0,2244,2245,5,1020,0,0,
	2245,2246,3,556,278,0,2246,2247,5,1021,0,0,2247,2249,1,0,0,0,2248,2244,
	1,0,0,0,2248,2249,1,0,0,0,2249,2250,1,0,0,0,2250,2251,5,11,0,0,2251,2258,
	3,180,90,0,2252,2254,5,174,0,0,2253,2255,7,12,0,0,2254,2253,1,0,0,0,2254,
	2255,1,0,0,0,2255,2256,1,0,0,0,2256,2257,5,23,0,0,2257,2259,5,108,0,0,2258,
	2252,1,0,0,0,2258,2259,1,0,0,0,2259,133,1,0,0,0,2260,2267,3,94,47,0,2261,
	2263,5,1022,0,0,2262,2261,1,0,0,0,2262,2263,1,0,0,0,2263,2264,1,0,0,0,2264,
	2266,3,94,47,0,2265,2262,1,0,0,0,2266,2269,1,0,0,0,2267,2265,1,0,0,0,2267,
	2268,1,0,0,0,2268,2624,1,0,0,0,2269,2267,1,0,0,0,2270,2272,5,5,0,0,2271,
	2273,5,25,0,0,2272,2271,1,0,0,0,2272,2273,1,0,0,0,2273,2274,1,0,0,0,2274,
	2275,3,524,262,0,2275,2279,3,80,40,0,2276,2280,5,362,0,0,2277,2278,5,272,
	0,0,2278,2280,3,524,262,0,2279,2276,1,0,0,0,2279,2277,1,0,0,0,2279,2280,
	1,0,0,0,2280,2624,1,0,0,0,2281,2283,5,5,0,0,2282,2284,5,25,0,0,2283,2282,
	1,0,0,0,2283,2284,1,0,0,0,2284,2285,1,0,0,0,2285,2286,5,1020,0,0,2286,2287,
	3,524,262,0,2287,2294,3,80,40,0,2288,2289,5,1022,0,0,2289,2290,3,524,262,
	0,2290,2291,3,80,40,0,2291,2293,1,0,0,0,2292,2288,1,0,0,0,2293,2296,1,0,
	0,0,2294,2292,1,0,0,0,2294,2295,1,0,0,0,2295,2297,1,0,0,0,2296,2294,1,0,
	0,0,2297,2298,5,1021,0,0,2298,2624,1,0,0,0,2299,2300,5,5,0,0,2300,2302,
	7,18,0,0,2301,2303,3,524,262,0,2302,2301,1,0,0,0,2302,2303,1,0,0,0,2303,
	2305,1,0,0,0,2304,2306,3,64,32,0,2305,2304,1,0,0,0,2305,2306,1,0,0,0,2306,
	2307,1,0,0,0,2307,2311,3,560,280,0,2308,2310,3,66,33,0,2309,2308,1,0,0,
	0,2310,2313,1,0,0,0,2311,2309,1,0,0,0,2311,2312,1,0,0,0,2312,2624,1,0,0,
	0,2313,2311,1,0,0,0,2314,2319,5,5,0,0,2315,2317,5,27,0,0,2316,2318,3,524,
	262,0,2317,2316,1,0,0,0,2317,2318,1,0,0,0,2318,2320,1,0,0,0,2319,2315,1,
	0,0,0,2319,2320,1,0,0,0,2320,2321,1,0,0,0,2321,2322,5,116,0,0,2322,2324,
	5,82,0,0,2323,2325,3,524,262,0,2324,2323,1,0,0,0,2324,2325,1,0,0,0,2325,
	2327,1,0,0,0,2326,2328,3,64,32,0,2327,2326,1,0,0,0,2327,2328,1,0,0,0,2328,
	2329,1,0,0,0,2329,2333,3,560,280,0,2330,2332,3,66,33,0,2331,2330,1,0,0,
	0,2332,2335,1,0,0,0,2333,2331,1,0,0,0,2333,2334,1,0,0,0,2334,2624,1,0,0,
	0,2335,2333,1,0,0,0,2336,2341,5,5,0,0,2337,2339,5,27,0,0,2338,2340,3,524,
	262,0,2339,2338,1,0,0,0,2339,2340,1,0,0,0,2340,2342,1,0,0,0,2341,2337,1,
	0,0,0,2341,2342,1,0,0,0,2342,2343,1,0,0,0,2343,2345,5,163,0,0,2344,2346,
	7,18,0,0,2345,2344,1,0,0,0,2345,2346,1,0,0,0,2346,2348,1,0,0,0,2347,2349,
	3,524,262,0,2348,2347,1,0,0,0,2348,2349,1,0,0,0,2349,2351,1,0,0,0,2350,
	2352,3,64,32,0,2351,2350,1,0,0,0,2351,2352,1,0,0,0,2352,2353,1,0,0,0,2353,
	2357,3,560,280,0,2354,2356,3,66,33,0,2355,2354,1,0,0,0,2356,2359,1,0,0,
	0,2357,2355,1,0,0,0,2357,2358,1,0,0,0,2358,2624,1,0,0,0,2359,2357,1,0,0,
	0,2360,2361,5,5,0,0,2361,2363,7,20,0,0,2362,2364,7,18,0,0,2363,2362,1,0,
	0,0,2363,2364,1,0,0,0,2364,2366,1,0,0,0,2365,2367,3,524,262,0,2366,2365,
	1,0,0,0,2366,2367,1,0,0,0,2367,2368,1,0,0,0,2368,2372,3,560,280,0,2369,
	2371,3,66,33,0,2370,2369,1,0,0,0,2371,2374,1,0,0,0,2372,2370,1,0,0,0,2372,
	2373,1,0,0,0,2373,2624,1,0,0,0,2374,2372,1,0,0,0,2375,2380,5,5,0,0,2376,
	2378,5,27,0,0,2377,2379,3,524,262,0,2378,2377,1,0,0,0,2378,2379,1,0,0,0,
	2379,2381,1,0,0,0,2380,2376,1,0,0,0,2380,2381,1,0,0,0,2381,2382,1,0,0,0,
	2382,2383,5,60,0,0,2383,2385,5,82,0,0,2384,2386,3,524,262,0,2385,2384,1,
	0,0,0,2385,2386,1,0,0,0,2386,2387,1,0,0,0,2387,2388,3,560,280,0,2388,2389,
	3,86,43,0,2389,2624,1,0,0,0,2390,2395,5,5,0,0,2391,2393,5,27,0,0,2392,2394,
	3,524,262,0,2393,2392,1,0,0,0,2393,2394,1,0,0,0,2394,2396,1,0,0,0,2395,
	2391,1,0,0,0,2395,2396,1,0,0,0,2396,2397,1,0,0,0,2397,2398,5,23,0,0,2398,
	2399,5,1020,0,0,2399,2400,3,602,301,0,2400,2401,5,1021,0,0,2401,2624,1,
	0,0,0,2402,2404,5,274,0,0,2403,2405,5,1011,0,0,2404,2403,1,0,0,0,2404,2405,
	1,0,0,0,2405,2406,1,0,0,0,2406,2624,7,3,0,0,2407,2409,5,7,0,0,2408,2410,
	5,25,0,0,2409,2408,1,0,0,0,2409,2410,1,0,0,0,2410,2411,1,0,0,0,2411,2417,
	3,524,262,0,2412,2413,5,138,0,0,2413,2414,5,38,0,0,2414,2418,3,572,286,
	0,2415,2416,5,47,0,0,2416,2418,5,38,0,0,2417,2412,1,0,0,0,2417,2415,1,0,
	0,0,2418,2624,1,0,0,0,2419,2421,5,21,0,0,2420,2422,5,25,0,0,2421,2420,1,
	0,0,0,2421,2422,1,0,0,0,2422,2423,1,0,0,0,2423,2424,3,524,262,0,2424,2425,
	3,524,262,0,2425,2429,3,80,40,0,2426,2430,5,362,0,0,2427,2428,5,272,0,0,
	2428,2430,3,524,262,0,2429,2426,1,0,0,0,2429,2427,1,0,0,0,2429,2430,1,0,
	0,0,2430,2624,1,0,0,0,2431,2432,5,125,0,0,2432,2433,5,25,0,0,2433,2434,
	3,524,262,0,2434,2435,5,157,0,0,2435,2436,3,524,262,0,2436,2624,1,0,0,0,
	2437,2439,5,93,0,0,2438,2440,5,1011,0,0,2439,2438,1,0,0,0,2439,2440,1,0,
	0,0,2440,2441,1,0,0,0,2441,2624,7,4,0,0,2442,2444,5,439,0,0,2443,2445,5,
	25,0,0,2444,2443,1,0,0,0,2444,2445,1,0,0,0,2445,2446,1,0,0,0,2446,2447,
	3,524,262,0,2447,2451,3,80,40,0,2448,2452,5,362,0,0,2449,2450,5,272,0,0,
	2450,2452,3,524,262,0,2451,2448,1,0,0,0,2451,2449,1,0,0,0,2451,2452,1,0,
	0,0,2452,2624,1,0,0,0,2453,2455,5,47,0,0,2454,2456,5,25,0,0,2455,2454,1,
	0,0,0,2455,2456,1,0,0,0,2456,2457,1,0,0,0,2457,2459,3,524,262,0,2458,2460,
	5,130,0,0,2459,2458,1,0,0,0,2459,2460,1,0,0,0,2460,2624,1,0,0,0,2461,2462,
	5,47,0,0,2462,2463,5,116,0,0,2463,2624,5,82,0,0,2464,2465,5,125,0,0,2465,
	2466,7,18,0,0,2466,2467,3,524,262,0,2467,2468,5,157,0,0,2468,2469,3,524,
	262,0,2469,2624,1,0,0,0,2470,2471,5,7,0,0,2471,2472,5,72,0,0,2472,2473,
	3,524,262,0,2473,2474,7,29,0,0,2474,2624,1,0,0,0,2475,2476,5,47,0,0,2476,
	2477,7,18,0,0,2477,2624,3,524,262,0,2478,2479,5,47,0,0,2479,2480,5,60,0,
	0,2480,2481,5,82,0,0,2481,2624,3,524,262,0,2482,2483,5,331,0,0,2483,2624,
	5,83,0,0,2484,2485,5,338,0,0,2485,2624,5,83,0,0,2486,2488,5,125,0,0,2487,
	2489,7,30,0,0,2488,2487,1,0,0,0,2488,2489,1,0,0,0,2489,2492,1,0,0,0,2490,
	2493,3,524,262,0,2491,2493,3,498,249,0,2492,2490,1,0,0,0,2492,2491,1,0,
	0,0,2493,2624,1,0,0,0,2494,2495,5,111,0,0,2495,2496,5,16,0,0,2496,2624,
	3,556,278,0,2497,2498,5,29,0,0,2498,2499,5,157,0,0,2499,2500,5,22,0,0,2500,
	2501,5,138,0,0,2501,2504,3,510,255,0,2502,2503,5,24,0,0,2503,2505,3,512,
	256,0,2504,2502,1,0,0,0,2504,2505,1,0,0,0,2505,2624,1,0,0,0,2506,2508,5,
	38,0,0,2507,2506,1,0,0,0,2507,2508,1,0,0,0,2508,2509,1,0,0,0,2509,2510,
	5,22,0,0,2510,2511,5,138,0,0,2511,2512,5,1011,0,0,2512,2516,3,510,255,0,
	2513,2514,5,24,0,0,2514,2515,5,1011,0,0,2515,2517,3,512,256,0,2516,2513,
	1,0,0,0,2516,2517,1,0,0,0,2517,2624,1,0,0,0,2518,2519,5,332,0,0,2519,2624,
	5,556,0,0,2520,2521,5,380,0,0,2521,2624,5,556,0,0,2522,2624,5,59,0,0,2523,
	2524,7,31,0,0,2524,2624,5,575,0,0,2525,2526,5,5,0,0,2526,2527,5,115,0,0,
	2527,2528,5,1020,0,0,2528,2533,3,104,52,0,2529,2530,5,1022,0,0,2530,2532,
	3,104,52,0,2531,2529,1,0,0,0,2532,2535,1,0,0,0,2533,2531,1,0,0,0,2533,2534,
	1,0,0,0,2534,2536,1,0,0,0,2535,2533,1,0,0,0,2536,2537,5,1021,0,0,2537,2624,
	1,0,0,0,2538,2539,5,47,0,0,2539,2540,5,115,0,0,2540,2624,3,556,278,0,2541,
	2542,5,332,0,0,2542,2545,5,115,0,0,2543,2546,3,556,278,0,2544,2546,5,6,
	0,0,2545,2543,1,0,0,0,2545,2544,1,0,0,0,2546,2547,1,0,0,0,2547,2624,5,556,
	0,0,2548,2549,5,380,0,0,2549,2552,5,115,0,0,2550,2553,3,556,278,0,2551,
	2553,5,6,0,0,2552,2550,1,0,0,0,2552,2551,1,0,0,0,2553,2554,1,0,0,0,2554,
	2624,5,556,0,0,2555,2556,5,564,0,0,2556,2559,5,115,0,0,2557,2560,3,556,
	278,0,2558,2560,5,6,0,0,2559,2557,1,0,0,0,2559,2558,1,0,0,0,2560,2624,1,
	0,0,0,2561,2562,5,300,0,0,2562,2563,5,115,0,0,2563,2624,3,530,265,0,2564,
	2565,5,493,0,0,2565,2566,5,115,0,0,2566,2567,3,556,278,0,2567,2568,5,78,
	0,0,2568,2569,5,1020,0,0,2569,2574,3,104,52,0,2570,2571,5,1022,0,0,2571,
	2573,3,104,52,0,2572,2570,1,0,0,0,2573,2576,1,0,0,0,2574,2572,1,0,0,0,2574,
	2575,1,0,0,0,2575,2577,1,0,0,0,2576,2574,1,0,0,0,2577,2578,5,1021,0,0,2578,
	2624,1,0,0,0,2579,2580,5,351,0,0,2580,2581,5,115,0,0,2581,2582,3,524,262,
	0,2582,2583,5,174,0,0,2583,2584,5,154,0,0,2584,2587,3,500,250,0,2585,2586,
	7,31,0,0,2586,2588,5,575,0,0,2587,2585,1,0,0,0,2587,2588,1,0,0,0,2588,2624,
	1,0,0,0,2589,2590,5,9,0,0,2590,2593,5,115,0,0,2591,2594,3,556,278,0,2592,
	2594,5,6,0,0,2593,2591,1,0,0,0,2593,2592,1,0,0,0,2594,2624,1,0,0,0,2595,
	2596,5,23,0,0,2596,2599,5,115,0,0,2597,2600,3,556,278,0,2598,2600,5,6,0,
	0,2599,2597,1,0,0,0,2599,2598,1,0,0,0,2600,2624,1,0,0,0,2601,2602,5,107,
	0,0,2602,2605,5,115,0,0,2603,2606,3,556,278,0,2604,2606,5,6,0,0,2605,2603,
	1,0,0,0,2605,2604,1,0,0,0,2606,2624,1,0,0,0,2607,2608,5,484,0,0,2608,2611,
	5,115,0,0,2609,2612,3,556,278,0,2610,2612,5,6,0,0,2611,2609,1,0,0,0,2611,
	2610,1,0,0,0,2612,2624,1,0,0,0,2613,2614,5,494,0,0,2614,2617,5,115,0,0,
	2615,2618,3,556,278,0,2616,2618,5,6,0,0,2617,2615,1,0,0,0,2617,2616,1,0,
	0,0,2618,2624,1,0,0,0,2619,2620,5,492,0,0,2620,2624,5,466,0,0,2621,2622,
	5,571,0,0,2622,2624,5,466,0,0,2623,2260,1,0,0,0,2623,2270,1,0,0,0,2623,
	2281,1,0,0,0,2623,2299,1,0,0,0,2623,2314,1,0,0,0,2623,2336,1,0,0,0,2623,
	2360,1,0,0,0,2623,2375,1,0,0,0,2623,2390,1,0,0,0,2623,2402,1,0,0,0,2623,
	2407,1,0,0,0,2623,2419,1,0,0,0,2623,2431,1,0,0,0,2623,2437,1,0,0,0,2623,
	2442,1,0,0,0,2623,2453,1,0,0,0,2623,2461,1,0,0,0,2623,2464,1,0,0,0,2623,
	2470,1,0,0,0,2623,2475,1,0,0,0,2623,2478,1,0,0,0,2623,2482,1,0,0,0,2623,
	2484,1,0,0,0,2623,2486,1,0,0,0,2623,2494,1,0,0,0,2623,2497,1,0,0,0,2623,
	2507,1,0,0,0,2623,2518,1,0,0,0,2623,2520,1,0,0,0,2623,2522,1,0,0,0,2623,
	2523,1,0,0,0,2623,2525,1,0,0,0,2623,2538,1,0,0,0,2623,2541,1,0,0,0,2623,
	2548,1,0,0,0,2623,2555,1,0,0,0,2623,2561,1,0,0,0,2623,2564,1,0,0,0,2623,
	2579,1,0,0,0,2623,2589,1,0,0,0,2623,2595,1,0,0,0,2623,2601,1,0,0,0,2623,
	2607,1,0,0,0,2623,2613,1,0,0,0,2623,2619,1,0,0,0,2623,2621,1,0,0,0,2624,
	135,1,0,0,0,2625,2626,5,47,0,0,2626,2628,7,0,0,0,2627,2629,3,578,289,0,
	2628,2627,1,0,0,0,2628,2629,1,0,0,0,2629,2630,1,0,0,0,2630,2631,3,524,262,
	0,2631,137,1,0,0,0,2632,2633,5,47,0,0,2633,2635,5,348,0,0,2634,2636,3,578,
	289,0,2635,2634,1,0,0,0,2635,2636,1,0,0,0,2636,2637,1,0,0,0,2637,2638,3,
	498,249,0,2638,139,1,0,0,0,2639,2640,5,47,0,0,2640,2642,5,72,0,0,2641,2643,
	7,1,0,0,2642,2641,1,0,0,0,2642,2643,1,0,0,0,2643,2644,1,0,0,0,2644,2645,
	3,524,262,0,2645,2646,5,106,0,0,2646,2659,3,500,250,0,2647,2649,5,274,0,
	0,2648,2650,5,1011,0,0,2649,2648,1,0,0,0,2649,2650,1,0,0,0,2650,2651,1,
	0,0,0,2651,2658,7,3,0,0,2652,2654,5,93,0,0,2653,2655,5,1011,0,0,2654,2653,
	1,0,0,0,2654,2655,1,0,0,0,2655,2656,1,0,0,0,2656,2658,7,4,0,0,2657,2647,
	1,0,0,0,2657,2652,1,0,0,0,2658,2661,1,0,0,0,2659,2657,1,0,0,0,2659,2660,
	1,0,0,0,2660,141,1,0,0,0,2661,2659,1,0,0,0,2662,2663,5,47,0,0,2663,2664,
	5,403,0,0,2664,2665,5,66,0,0,2665,2666,3,524,262,0,2666,2667,5,342,0,0,
	2667,2668,5,1011,0,0,2668,2669,3,514,257,0,2669,143,1,0,0,0,2670,2671,5,
	47,0,0,2671,2673,5,117,0,0,2672,2674,3,578,289,0,2673,2672,1,0,0,0,2673,
	2674,1,0,0,0,2674,2675,1,0,0,0,2675,2676,3,498,249,0,2676,145,1,0,0,0,2677,
	2678,5,47,0,0,2678,2680,5,368,0,0,2679,2681,3,578,289,0,2680,2679,1,0,0,
	0,2680,2681,1,0,0,0,2681,2682,1,0,0,0,2682,2683,3,498,249,0,2683,147,1,
	0,0,0,2684,2685,5,47,0,0,2685,2687,5,517,0,0,2686,2688,3,578,289,0,2687,
	2686,1,0,0,0,2687,2688,1,0,0,0,2688,2689,1,0,0,0,2689,2690,3,524,262,0,
	2690,149,1,0,0,0,2691,2693,5,47,0,0,2692,2694,5,557,0,0,2693,2692,1,0,0,
	0,2693,2694,1,0,0,0,2694,2695,1,0,0,0,2695,2697,5,154,0,0,2696,2698,3,578,
	289,0,2697,2696,1,0,0,0,2697,2698,1,0,0,0,2698,2699,1,0,0,0,2699,2701,3,
	558,279,0,2700,2702,7,32,0,0,2701,2700,1,0,0,0,2701,2702,1,0,0,0,2702,151,
	1,0,0,0,2703,2704,5,47,0,0,2704,2705,5,556,0,0,2705,2711,3,524,262,0,2706,
	2708,5,342,0,0,2707,2709,5,1011,0,0,2708,2707,1,0,0,0,2708,2709,1,0,0,0,
	2709,2710,1,0,0,0,2710,2712,3,514,257,0,2711,2706,1,0,0,0,2711,2712,1,0,
	0,0,2712,153,1,0,0,0,2713,2714,5,47,0,0,2714,2716,5,159,0,0,2715,2717,3,
	578,289,0,2716,2715,1,0,0,0,2716,2717,1,0,0,0,2717,2718,1,0,0,0,2718,2719,
	3,498,249,0,2719,155,1,0,0,0,2720,2721,5,47,0,0,2721,2723,5,578,0,0,2722,
	2724,3,578,289,0,2723,2722,1,0,0,0,2723,2724,1,0,0,0,2724,2725,1,0,0,0,
	2725,2730,3,498,249,0,2726,2727,5,1022,0,0,2727,2729,3,498,249,0,2728,2726,
	1,0,0,0,2729,2732,1,0,0,0,2730,2728,1,0,0,0,2730,2731,1,0,0,0,2731,2734,
	1,0,0,0,2732,2730,1,0,0,0,2733,2735,7,32,0,0,2734,2733,1,0,0,0,2734,2735,
	1,0,0,0,2735,157,1,0,0,0,2736,2737,5,125,0,0,2737,2738,5,154,0,0,2738,2743,
	3,160,80,0,2739,2740,5,1022,0,0,2740,2742,3,160,80,0,2741,2739,1,0,0,0,
	2742,2745,1,0,0,0,2743,2741,1,0,0,0,2743,2744,1,0,0,0,2744,159,1,0,0,0,
	2745,2743,1,0,0,0,2746,2747,3,500,250,0,2747,2748,5,157,0,0,2748,2749,3,
	500,250,0,2749,161,1,0,0,0,2750,2752,5,564,0,0,2751,2753,5,154,0,0,2752,
	2751,1,0,0,0,2752,2753,1,0,0,0,2753,2754,1,0,0,0,2754,2755,3,500,250,0,
	2755,163,1,0,0,0,2756,2757,5,17,0,0,2757,2764,3,498,249,0,2758,2761,5,1020,
	0,0,2759,2762,3,566,283,0,2760,2762,3,562,281,0,2761,2759,1,0,0,0,2761,
	2760,1,0,0,0,2761,2762,1,0,0,0,2762,2763,1,0,0,0,2763,2765,5,1021,0,0,2764,
	2758,1,0,0,0,2764,2765,1,0,0,0,2765,165,1,0,0,0,2766,2769,3,192,96,0,2767,
	2769,3,194,97,0,2768,2766,1,0,0,0,2768,2767,1,0,0,0,2769,167,1,0,0,0,2770,
	2771,5,334,0,0,2771,2772,3,562,281,0,2772,169,1,0,0,0,2773,2778,3,196,98,
	0,2774,2778,3,198,99,0,2775,2778,3,200,100,0,2776,2778,3,202,101,0,2777,
	2773,1,0,0,0,2777,2774,1,0,0,0,2777,2775,1,0,0,0,2777,2776,1,0,0,0,2778,
	171,1,0,0,0,2779,2781,5,76,0,0,2780,2782,7,33,0,0,2781,2780,1,0,0,0,2781,
	2782,1,0,0,0,2782,2784,1,0,0,0,2783,2785,5,70,0,0,2784,2783,1,0,0,0,2784,
	2785,1,0,0,0,2785,2787,1,0,0,0,2786,2788,5,78,0,0,2787,2786,1,0,0,0,2787,
	2788,1,0,0,0,2788,2789,1,0,0,0,2789,2796,3,500,250,0,2790,2791,5,115,0,
	0,2791,2793,5,1020,0,0,2792,2794,3,556,278,0,2793,2792,1,0,0,0,2793,2794,
	1,0,0,0,2794,2795,1,0,0,0,2795,2797,5,1021,0,0,2796,2790,1,0,0,0,2796,2797,
	1,0,0,0,2797,2814,1,0,0,0,2798,2799,5,1020,0,0,2799,2800,3,556,278,0,2800,
	2801,5,1021,0,0,2801,2803,1,0,0,0,2802,2798,1,0,0,0,2802,2803,1,0,0,0,2803,
	2804,1,0,0,0,2804,2815,3,184,92,0,2805,2806,5,138,0,0,2806,2811,3,186,93,
	0,2807,2808,5,1022,0,0,2808,2810,3,186,93,0,2809,2807,1,0,0,0,2810,2813,
	1,0,0,0,2811,2809,1,0,0,0,2811,2812,1,0,0,0,2812,2815,1,0,0,0,2813,2811,
	1,0,0,0,2814,2802,1,0,0,0,2814,2805,1,0,0,0,2815,2828,1,0,0,0,2816,2817,
	5,106,0,0,2817,2818,5,336,0,0,2818,2819,5,82,0,0,2819,2820,5,166,0,0,2820,
	2825,3,186,93,0,2821,2822,5,1022,0,0,2822,2824,3,186,93,0,2823,2821,1,0,
	0,0,2824,2827,1,0,0,0,2825,2823,1,0,0,0,2825,2826,1,0,0,0,2826,2829,1,0,
	0,0,2827,2825,1,0,0,0,2828,2816,1,0,0,0,2828,2829,1,0,0,0,2829,173,1,0,
	0,0,2830,2831,5,92,0,0,2831,2833,5,323,0,0,2832,2834,7,34,0,0,2833,2832,
	1,0,0,0,2833,2834,1,0,0,0,2834,2836,1,0,0,0,2835,2837,5,402,0,0,2836,2835,
	1,0,0,0,2836,2837,1,0,0,0,2837,2838,1,0,0,0,2838,2839,5,73,0,0,2839,2841,
	5,1035,0,0,2840,2842,7,6,0,0,2841,2840,1,0,0,0,2841,2842,1,0,0,0,2842,2843,
	1,0,0,0,2843,2844,5,78,0,0,2844,2845,5,154,0,0,2845,2851,3,500,250,0,2846,
	2847,5,115,0,0,2847,2848,5,1020,0,0,2848,2849,3,556,278,0,2849,2850,5,1021,
	0,0,2850,2852,1,0,0,0,2851,2846,1,0,0,0,2851,2852,1,0,0,0,2852,2856,1,0,
	0,0,2853,2854,5,22,0,0,2854,2855,5,138,0,0,2855,2857,3,510,255,0,2856,2853,
	1,0,0,0,2856,2857,1,0,0,0,2857,2864,1,0,0,0,2858,2860,7,35,0,0,2859,2861,
	3,244,122,0,2860,2859,1,0,0,0,2861,2862,1,0,0,0,2862,2860,1,0,0,0,2862,
	2863,1,0,0,0,2863,2865,1,0,0,0,2864,2858,1,0,0,0,2864,2865,1,0,0,0,2865,
	2872,1,0,0,0,2866,2868,5,91,0,0,2867,2869,3,246,123,0,2868,2867,1,0,0,0,
	2869,2870,1,0,0,0,2870,2868,1,0,0,0,2870,2871,1,0,0,0,2871,2873,1,0,0,0,
	2872,2866,1,0,0,0,2872,2873,1,0,0,0,2873,2878,1,0,0,0,2874,2875,5,70,0,
	0,2875,2876,3,530,265,0,2876,2877,7,36,0,0,2877,2879,1,0,0,0,2878,2874,
	1,0,0,0,2878,2879,1,0,0,0,2879,2891,1,0,0,0,2880,2881,5,1020,0,0,2881,2886,
	3,188,94,0,2882,2883,5,1022,0,0,2883,2885,3,188,94,0,2884,2882,1,0,0,0,
	2885,2888,1,0,0,0,2886,2884,1,0,0,0,2886,2887,1,0,0,0,2887,2889,1,0,0,0,
	2888,2886,1,0,0,0,2889,2890,5,1021,0,0,2890,2892,1,0,0,0,2891,2880,1,0,
	0,0,2891,2892,1,0,0,0,2892,2902,1,0,0,0,2893,2894,5,138,0,0,2894,2899,3,
	186,93,0,2895,2896,5,1022,0,0,2896,2898,3,186,93,0,2897,2895,1,0,0,0,2898,
	2901,1,0,0,0,2899,2897,1,0,0,0,2899,2900,1,0,0,0,2900,2903,1,0,0,0,2901,
	2899,1,0,0,0,2902,2893,1,0,0,0,2902,2903,1,0,0,0,2903,175,1,0,0,0,2904,
	2905,5,92,0,0,2905,2907,5,588,0,0,2906,2908,7,34,0,0,2907,2906,1,0,0,0,
	2907,2908,1,0,0,0,2908,2910,1,0,0,0,2909,2911,5,402,0,0,2910,2909,1,0,0,
	0,2910,2911,1,0,0,0,2911,2912,1,0,0,0,2912,2913,5,73,0,0,2913,2915,5,1035,
	0,0,2914,2916,7,6,0,0,2915,2914,1,0,0,0,2915,2916,1,0,0,0,2916,2917,1,0,
	0,0,2917,2918,5,78,0,0,2918,2919,5,154,0,0,2919,2923,3,500,250,0,2920,2921,
	5,22,0,0,2921,2922,5,138,0,0,2922,2924,3,510,255,0,2923,2920,1,0,0,0,2923,
	2924,1,0,0,0,2924,2931,1,0,0,0,2925,2926,5,512,0,0,2926,2927,5,378,0,0,
	2927,2928,5,16,0,0,2928,2929,5,1013,0,0,2929,2930,5,1035,0,0,2930,2932,
	5,1012,0,0,2931,2925,1,0,0,0,2931,2932,1,0,0,0,2932,2937,1,0,0,0,2933,2934,
	5,70,0,0,2934,2935,3,530,265,0,2935,2936,7,36,0,0,2936,2938,1,0,0,0,2937,
	2933,1,0,0,0,2937,2938,1,0,0,0,2938,2950,1,0,0,0,2939,2940,5,1020,0,0,2940,
	2945,3,188,94,0,2941,2942,5,1022,0,0,2942,2944,3,188,94,0,2943,2941,1,0,
	0,0,2944,2947,1,0,0,0,2945,2943,1,0,0,0,2945,2946,1,0,0,0,2946,2948,1,0,
	0,0,2947,2945,1,0,0,0,2948,2949,5,1021,0,0,2949,2951,1,0,0,0,2950,2939,
	1,0,0,0,2950,2951,1,0,0,0,2951,2961,1,0,0,0,2952,2953,5,138,0,0,2953,2958,
	3,186,93,0,2954,2955,5,1022,0,0,2955,2957,3,186,93,0,2956,2954,1,0,0,0,
	2957,2960,1,0,0,0,2958,2956,1,0,0,0,2958,2959,1,0,0,0,2959,2962,1,0,0,0,
	2960,2958,1,0,0,0,2961,2952,1,0,0,0,2961,2962,1,0,0,0,2962,177,1,0,0,0,
	2963,2965,5,127,0,0,2964,2966,7,37,0,0,2965,2964,1,0,0,0,2965,2966,1,0,
	0,0,2966,2968,1,0,0,0,2967,2969,5,78,0,0,2968,2967,1,0,0,0,2968,2969,1,
	0,0,0,2969,2970,1,0,0,0,2970,2976,3,500,250,0,2971,2972,5,115,0,0,2972,
	2973,5,1020,0,0,2973,2974,3,556,278,0,2974,2975,5,1021,0,0,2975,2977,1,
	0,0,0,2976,2971,1,0,0,0,2976,2977,1,0,0,0,2977,2994,1,0,0,0,2978,2979,5,
	1020,0,0,2979,2980,3,556,278,0,2980,2981,5,1021,0,0,2981,2983,1,0,0,0,2982,
	2978,1,0,0,0,2982,2983,1,0,0,0,2983,2984,1,0,0,0,2984,2995,3,184,92,0,2985,
	2986,5,138,0,0,2986,2991,3,186,93,0,2987,2988,5,1022,0,0,2988,2990,3,186,
	93,0,2989,2987,1,0,0,0,2990,2993,1,0,0,0,2991,2989,1,0,0,0,2991,2992,1,
	0,0,0,2992,2995,1,0,0,0,2993,2991,1,0,0,0,2994,2982,1,0,0,0,2994,2985,1,
	0,0,0,2995,179,1,0,0,0,2996,2998,3,228,114,0,2997,2999,3,190,95,0,2998,
	2997,1,0,0,0,2998,2999,1,0,0,0,2999,3052,1,0,0,0,3000,3002,3,224,112,0,
	3001,3003,3,190,95,0,3002,3001,1,0,0,0,3002,3003,1,0,0,0,3003,3052,1,0,
	0,0,3004,3006,3,230,115,0,3005,3007,3,234,117,0,3006,3005,1,0,0,0,3007,
	3008,1,0,0,0,3008,3006,1,0,0,0,3008,3009,1,0,0,0,3009,3018,1,0,0,0,3010,
	3012,5,162,0,0,3011,3013,7,38,0,0,3012,3011,1,0,0,0,3012,3013,1,0,0,0,3013,
	3016,1,0,0,0,3014,3017,3,228,114,0,3015,3017,3,224,112,0,3016,3014,1,0,
	0,0,3016,3015,1,0,0,0,3017,3019,1,0,0,0,3018,3010,1,0,0,0,3018,3019,1,0,
	0,0,3019,3021,1,0,0,0,3020,3022,3,208,104,0,3021,3020,1,0,0,0,3021,3022,
	1,0,0,0,3022,3024,1,0,0,0,3023,3025,3,252,126,0,3024,3023,1,0,0,0,3024,
	3025,1,0,0,0,3025,3027,1,0,0,0,3026,3028,3,190,95,0,3027,3026,1,0,0,0,3027,
	3028,1,0,0,0,3028,3052,1,0,0,0,3029,3031,3,226,113,0,3030,3032,3,232,116,
	0,3031,3030,1,0,0,0,3032,3033,1,0,0,0,3033,3031,1,0,0,0,3033,3034,1,0,0,
	0,3034,3040,1,0,0,0,3035,3037,5,162,0,0,3036,3038,7,38,0,0,3037,3036,1,
	0,0,0,3037,3038,1,0,0,0,3038,3039,1,0,0,0,3039,3041,3,224,112,0,3040,3035,
	1,0,0,0,3040,3041,1,0,0,0,3041,3043,1,0,0,0,3042,3044,3,208,104,0,3043,
	3042,1,0,0,0,3043,3044,1,0,0,0,3044,3046,1,0,0,0,3045,3047,3,252,126,0,
	3046,3045,1,0,0,0,3046,3047,1,0,0,0,3047,3049,1,0,0,0,3048,3050,3,190,95,
	0,3049,3048,1,0,0,0,3049,3050,1,0,0,0,3050,3052,1,0,0,0,3051,2996,1,0,0,
	0,3051,3000,1,0,0,0,3051,3004,1,0,0,0,3051,3029,1,0,0,0,3052,181,1,0,0,
	0,3053,3056,3,204,102,0,3054,3056,3,206,103,0,3055,3053,1,0,0,0,3055,3054,
	1,0,0,0,3056,183,1,0,0,0,3057,3076,3,180,90,0,3058,3059,7,39,0,0,3059,3061,
	5,1020,0,0,3060,3062,3,564,282,0,3061,3060,1,0,0,0,3061,3062,1,0,0,0,3062,
	3063,1,0,0,0,3063,3072,5,1021,0,0,3064,3065,5,1022,0,0,3065,3067,5,1020,
	0,0,3066,3068,3,564,282,0,3067,3066,1,0,0,0,3067,3068,1,0,0,0,3068,3069,
	1,0,0,0,3069,3071,5,1021,0,0,3070,3064,1,0,0,0,3071,3074,1,0,0,0,3072,3070,
	1,0,0,0,3072,3073,1,0,0,0,3073,3076,1,0,0,0,3074,3072,1,0,0,0,3075,3057,
	1,0,0,0,3075,3058,1,0,0,0,3076,185,1,0,0,0,3077,3078,3,502,251,0,3078,3081,
	5,1011,0,0,3079,3082,3,602,301,0,3080,3082,5,38,0,0,3081,3079,1,0,0,0,3081,
	3080,1,0,0,0,3082,187,1,0,0,0,3083,3086,3,524,262,0,3084,3086,5,1046,0,
	0,3085,3083,1,0,0,0,3085,3084,1,0,0,0,3086,189,1,0,0,0,3087,3088,5,58,0,
	0,3088,3094,5,166,0,0,3089,3090,5,93,0,0,3090,3091,5,71,0,0,3091,3092,5,
	519,0,0,3092,3094,5,438,0,0,3093,3087,1,0,0,0,3093,3089,1,0,0,0,3094,191,
	1,0,0,0,3095,3097,5,40,0,0,3096,3098,5,95,0,0,3097,3096,1,0,0,0,3097,3098,
	1,0,0,0,3098,3100,1,0,0,0,3099,3101,5,483,0,0,3100,3099,1,0,0,0,3100,3101,
	1,0,0,0,3101,3103,1,0,0,0,3102,3104,5,70,0,0,3103,3102,1,0,0,0,3103,3104,
	1,0,0,0,3104,3105,1,0,0,0,3105,3106,5,61,0,0,3106,3112,3,500,250,0,3107,
	3108,5,115,0,0,3108,3109,5,1020,0,0,3109,3110,3,556,278,0,3110,3111,5,1021,
	0,0,3111,3113,1,0,0,0,3112,3107,1,0,0,0,3112,3113,1,0,0,0,3113,3116,1,0,
	0,0,3114,3115,5,172,0,0,3115,3117,3,602,301,0,3116,3114,1,0,0,0,3116,3117,
	1,0,0,0,3117,3119,1,0,0,0,3118,3120,3,208,104,0,3119,3118,1,0,0,0,3119,
	3120,1,0,0,0,3120,3123,1,0,0,0,3121,3122,5,89,0,0,3122,3124,3,254,127,0,
	3123,3121,1,0,0,0,3123,3124,1,0,0,0,3124,193,1,0,0,0,3125,3127,5,40,0,0,
	3126,3128,5,95,0,0,3127,3126,1,0,0,0,3127,3128,1,0,0,0,3128,3130,1,0,0,
	0,3129,3131,5,483,0,0,3130,3129,1,0,0,0,3130,3131,1,0,0,0,3131,3133,1,0,
	0,0,3132,3134,5,70,0,0,3133,3132,1,0,0,0,3133,3134,1,0,0,0,3134,3174,1,
	0,0,0,3135,3138,3,500,250,0,3136,3137,5,1019,0,0,3137,3139,5,1003,0,0,3138,
	3136,1,0,0,0,3138,3139,1,0,0,0,3139,3148,1,0,0,0,3140,3141,5,1022,0,0,3141,
	3144,3,500,250,0,3142,3143,5,1019,0,0,3143,3145,5,1003,0,0,3144,3142,1,
	0,0,0,3144,3145,1,0,0,0,3145,3147,1,0,0,0,3146,3140,1,0,0,0,3147,3150,1,
	0,0,0,3148,3146,1,0,0,0,3148,3149,1,0,0,0,3149,3151,1,0,0,0,3150,3148,1,
	0,0,0,3151,3152,5,61,0,0,3152,3153,3,212,106,0,3153,3175,1,0,0,0,3154,3155,
	5,61,0,0,3155,3158,3,500,250,0,3156,3157,5,1019,0,0,3157,3159,5,1003,0,
	0,3158,3156,1,0,0,0,3158,3159,1,0,0,0,3159,3168,1,0,0,0,3160,3161,5,1022,
	0,0,3161,3164,3,500,250,0,3162,3163,5,1019,0,0,3163,3165,5,1003,0,0,3164,
	3162,1,0,0,0,3164,3165,1,0,0,0,3165,3167,1,0,0,0,3166,3160,1,0,0,0,3167,
	3170,1,0,0,0,3168,3166,1,0,0,0,3168,3169,1,0,0,0,3169,3171,1,0,0,0,3170,
	3168,1,0,0,0,3171,3172,5,169,0,0,3172,3173,3,212,106,0,3173,3175,1,0,0,
	0,3174,3135,1,0,0,0,3174,3154,1,0,0,0,3175,3178,1,0,0,0,3176,3177,5,172,
	0,0,3177,3179,3,602,301,0,3178,3176,1,0,0,0,3178,3179,1,0,0,0,3179,195,
	1,0,0,0,3180,3181,5,373,0,0,3181,3182,3,500,250,0,3182,3187,5,458,0,0,3183,
	3185,5,11,0,0,3184,3183,1,0,0,0,3184,3185,1,0,0,0,3185,3186,1,0,0,0,3186,
	3188,3,524,262,0,3187,3184,1,0,0,0,3187,3188,1,0,0,0,3188,197,1,0,0,0,3189,
	3190,5,373,0,0,3190,3191,3,500,250,0,3191,3192,5,120,0,0,3192,3199,3,524,
	262,0,3193,3194,3,610,305,0,3194,3195,5,1020,0,0,3195,3196,3,566,283,0,
	3196,3197,5,1021,0,0,3197,3200,1,0,0,0,3198,3200,7,40,0,0,3199,3193,1,0,
	0,0,3199,3198,1,0,0,0,3200,3203,1,0,0,0,3201,3202,5,172,0,0,3202,3204,3,
	602,301,0,3203,3201,1,0,0,0,3203,3204,1,0,0,0,3204,3207,1,0,0,0,3205,3206,
	5,89,0,0,3206,3208,3,254,127,0,3207,3205,1,0,0,0,3207,3208,1,0,0,0,3208,
	199,1,0,0,0,3209,3210,5,373,0,0,3210,3211,3,500,250,0,3211,3212,5,120,0,
	0,3212,3215,7,41,0,0,3213,3214,5,172,0,0,3214,3216,3,602,301,0,3215,3213,
	1,0,0,0,3215,3216,1,0,0,0,3216,3219,1,0,0,0,3217,3218,5,89,0,0,3218,3220,
	3,254,127,0,3219,3217,1,0,0,0,3219,3220,1,0,0,0,3220,201,1,0,0,0,3221,3222,
	5,373,0,0,3222,3223,3,500,250,0,3223,3224,5,299,0,0,3224,203,1,0,0,0,3225,
	3227,5,166,0,0,3226,3228,5,95,0,0,3227,3226,1,0,0,0,3227,3228,1,0,0,0,3228,
	3230,1,0,0,0,3229,3231,5,70,0,0,3230,3229,1,0,0,0,3230,3231,1,0,0,0,3231,
	3232,1,0,0,0,3232,3237,3,500,250,0,3233,3235,5,11,0,0,3234,3233,1,0,0,0,
	3234,3235,1,0,0,0,3235,3236,1,0,0,0,3236,3238,3,524,262,0,3237,3234,1,0,
	0,0,3237,3238,1,0,0,0,3238,3239,1,0,0,0,3239,3240,5,138,0,0,3240,3245,3,
	186,93,0,3241,3242,5,1022,0,0,3242,3244,3,186,93,0,3243,3241,1,0,0,0,3244,
	3247,1,0,0,0,3245,3243,1,0,0,0,3245,3246,1,0,0,0,3246,3250,1,0,0,0,3247,
	3245,1,0,0,0,3248,3249,5,172,0,0,3249,3251,3,602,301,0,3250,3248,1,0,0,
	0,3250,3251,1,0,0,0,3251,3253,1,0,0,0,3252,3254,3,208,104,0,3253,3252,1,
	0,0,0,3253,3254,1,0,0,0,3254,3256,1,0,0,0,3255,3257,3,252,126,0,3256,3255,
	1,0,0,0,3256,3257,1,0,0,0,3257,205,1,0,0,0,3258,3260,5,166,0,0,3259,3261,
	5,95,0,0,3260,3259,1,0,0,0,3260,3261,1,0,0,0,3261,3263,1,0,0,0,3262,3264,
	5,70,0,0,3263,3262,1,0,0,0,3263,3264,1,0,0,0,3264,3265,1,0,0,0,3265,3266,
	3,212,106,0,3266,3267,5,138,0,0,3267,3272,3,186,93,0,3268,3269,5,1022,0,
	0,3269,3271,3,186,93,0,3270,3268,1,0,0,0,3271,3274,1,0,0,0,3272,3270,1,
	0,0,0,3272,3273,1,0,0,0,3273,3277,1,0,0,0,3274,3272,1,0,0,0,3275,3276,5,
	172,0,0,3276,3278,3,602,301,0,3277,3275,1,0,0,0,3277,3278,1,0,0,0,3278,
	207,1,0,0,0,3279,3280,5,111,0,0,3280,3281,5,16,0,0,3281,3286,3,210,105,
	0,3282,3283,5,1022,0,0,3283,3285,3,210,105,0,3284,3282,1,0,0,0,3285,3288,
	1,0,0,0,3286,3284,1,0,0,0,3286,3287,1,0,0,0,3287,209,1,0,0,0,3288,3286,
	1,0,0,0,3289,3291,3,602,301,0,3290,3292,7,42,0,0,3291,3290,1,0,0,0,3291,
	3292,1,0,0,0,3292,211,1,0,0,0,3293,3298,3,214,107,0,3294,3295,5,1022,0,
	0,3295,3297,3,214,107,0,3296,3294,1,0,0,0,3297,3300,1,0,0,0,3298,3296,1,
	0,0,0,3298,3299,1,0,0,0,3299,213,1,0,0,0,3300,3298,1,0,0,0,3301,3305,3,
	216,108,0,3302,3304,3,222,111,0,3303,3302,1,0,0,0,3304,3307,1,0,0,0,3305,
	3303,1,0,0,0,3305,3306,1,0,0,0,3306,3319,1,0,0,0,3307,3305,1,0,0,0,3308,
	3309,5,1020,0,0,3309,3313,3,216,108,0,3310,3312,3,222,111,0,3311,3310,1,
	0,0,0,3312,3315,1,0,0,0,3313,3311,1,0,0,0,3313,3314,1,0,0,0,3314,3316,1,
	0,0,0,3315,3313,1,0,0,0,3316,3317,5,1021,0,0,3317,3319,1,0,0,0,3318,3301,
	1,0,0,0,3318,3308,1,0,0,0,3319,215,1,0,0,0,3320,3326,3,500,250,0,3321,3322,
	5,115,0,0,3322,3323,5,1020,0,0,3323,3324,3,556,278,0,3324,3325,5,1021,0,
	0,3325,3327,1,0,0,0,3326,3321,1,0,0,0,3326,3327,1,0,0,0,3327,3332,1,0,0,
	0,3328,3330,5,11,0,0,3329,3328,1,0,0,0,3329,3330,1,0,0,0,3330,3331,1,0,
	0,0,3331,3333,3,524,262,0,3332,3329,1,0,0,0,3332,3333,1,0,0,0,3333,3342,
	1,0,0,0,3334,3339,3,218,109,0,3335,3336,5,1022,0,0,3336,3338,3,218,109,
	0,3337,3335,1,0,0,0,3338,3341,1,0,0,0,3339,3337,1,0,0,0,3339,3340,1,0,0,
	0,3340,3343,1,0,0,0,3341,3339,1,0,0,0,3342,3334,1,0,0,0,3342,3343,1,0,0,
	0,3343,3361,1,0,0,0,3344,3350,3,180,90,0,3345,3346,5,1020,0,0,3346,3347,
	3,180,90,0,3347,3348,5,1021,0,0,3348,3350,1,0,0,0,3349,3344,1,0,0,0,3349,
	3345,1,0,0,0,3350,3352,1,0,0,0,3351,3353,5,11,0,0,3352,3351,1,0,0,0,3352,
	3353,1,0,0,0,3353,3354,1,0,0,0,3354,3355,3,524,262,0,3355,3361,1,0,0,0,
	3356,3357,5,1020,0,0,3357,3358,3,212,106,0,3358,3359,5,1021,0,0,3359,3361,
	1,0,0,0,3360,3320,1,0,0,0,3360,3349,1,0,0,0,3360,3356,1,0,0,0,3361,217,
	1,0,0,0,3362,3363,7,43,0,0,3363,3366,7,18,0,0,3364,3365,5,58,0,0,3365,3367,
	3,220,110,0,3366,3364,1,0,0,0,3366,3367,1,0,0,0,3367,3368,1,0,0,0,3368,
	3369,5,1020,0,0,3369,3370,3,556,278,0,3370,3371,5,1021,0,0,3371,219,1,0,
	0,0,3372,3378,5,81,0,0,3373,3374,5,111,0,0,3374,3378,5,16,0,0,3375,3376,
	5,66,0,0,3376,3378,5,16,0,0,3377,3372,1,0,0,0,3377,3373,1,0,0,0,3377,3375,
	1,0,0,0,3378,221,1,0,0,0,3379,3381,7,44,0,0,3380,3379,1,0,0,0,3380,3381,
	1,0,0,0,3381,3382,1,0,0,0,3382,3383,5,81,0,0,3383,3391,3,216,108,0,3384,
	3385,5,106,0,0,3385,3392,3,602,301,0,3386,3387,5,169,0,0,3387,3388,5,1020,
	0,0,3388,3389,3,556,278,0,3389,3390,5,1021,0,0,3390,3392,1,0,0,0,3391,3384,
	1,0,0,0,3391,3386,1,0,0,0,3391,3392,1,0,0,0,3392,3424,1,0,0,0,3393,3394,
	5,153,0,0,3394,3397,3,216,108,0,3395,3396,5,106,0,0,3396,3398,3,602,301,
	0,3397,3395,1,0,0,0,3397,3398,1,0,0,0,3398,3424,1,0,0,0,3399,3401,7,45,
	0,0,3400,3402,5,113,0,0,3401,3400,1,0,0,0,3401,3402,1,0,0,0,3402,3403,1,
	0,0,0,3403,3404,5,81,0,0,3404,3412,3,216,108,0,3405,3406,5,106,0,0,3406,
	3413,3,602,301,0,3407,3408,5,169,0,0,3408,3409,5,1020,0,0,3409,3410,3,556,
	278,0,3410,3411,5,1021,0,0,3411,3413,1,0,0,0,3412,3405,1,0,0,0,3412,3407,
	1,0,0,0,3413,3424,1,0,0,0,3414,3419,5,101,0,0,3415,3417,7,45,0,0,3416,3418,
	5,113,0,0,3417,3416,1,0,0,0,3417,3418,1,0,0,0,3418,3420,1,0,0,0,3419,3415,
	1,0,0,0,3419,3420,1,0,0,0,3420,3421,1,0,0,0,3421,3422,5,81,0,0,3422,3424,
	3,216,108,0,3423,3380,1,0,0,0,3423,3393,1,0,0,0,3423,3399,1,0,0,0,3423,
	3414,1,0,0,0,3424,223,1,0,0,0,3425,3426,5,1020,0,0,3426,3427,3,228,114,
	0,3427,3428,5,1021,0,0,3428,3434,1,0,0,0,3429,3430,5,1020,0,0,3430,3431,
	3,224,112,0,3431,3432,5,1021,0,0,3432,3434,1,0,0,0,3433,3425,1,0,0,0,3433,
	3429,1,0,0,0,3434,225,1,0,0,0,3435,3436,5,1020,0,0,3436,3437,3,230,115,
	0,3437,3438,5,1021,0,0,3438,3444,1,0,0,0,3439,3440,5,1020,0,0,3440,3441,
	3,226,113,0,3441,3442,5,1021,0,0,3442,3444,1,0,0,0,3443,3435,1,0,0,0,3443,
	3439,1,0,0,0,3444,227,1,0,0,0,3445,3449,5,137,0,0,3446,3448,3,236,118,0,
	3447,3446,1,0,0,0,3448,3451,1,0,0,0,3449,3447,1,0,0,0,3449,3450,1,0,0,0,
	3450,3452,1,0,0,0,3451,3449,1,0,0,0,3452,3454,3,238,119,0,3453,3455,3,242,
	121,0,3454,3453,1,0,0,0,3454,3455,1,0,0,0,3455,3457,1,0,0,0,3456,3458,3,
	248,124,0,3457,3456,1,0,0,0,3457,3458,1,0,0,0,3458,3460,1,0,0,0,3459,3461,
	3,208,104,0,3460,3459,1,0,0,0,3460,3461,1,0,0,0,3461,3463,1,0,0,0,3462,
	3464,3,252,126,0,3463,3462,1,0,0,0,3463,3464,1,0,0,0,3464,3486,1,0,0,0,
	3465,3469,5,137,0,0,3466,3468,3,236,118,0,3467,3466,1,0,0,0,3468,3471,1,
	0,0,0,3469,3467,1,0,0,0,3469,3470,1,0,0,0,3470,3472,1,0,0,0,3471,3469,1,
	0,0,0,3472,3474,3,238,119,0,3473,3475,3,248,124,0,3474,3473,1,0,0,0,3474,
	3475,1,0,0,0,3475,3477,1,0,0,0,3476,3478,3,208,104,0,3477,3476,1,0,0,0,
	3477,3478,1,0,0,0,3478,3480,1,0,0,0,3479,3481,3,252,126,0,3480,3479,1,0,
	0,0,3480,3481,1,0,0,0,3481,3483,1,0,0,0,3482,3484,3,242,121,0,3483,3482,
	1,0,0,0,3483,3484,1,0,0,0,3484,3486,1,0,0,0,3485,3445,1,0,0,0,3485,3465,
	1,0,0,0,3486,229,1,0,0,0,3487,3491,5,137,0,0,3488,3490,3,236,118,0,3489,
	3488,1,0,0,0,3490,3493,1,0,0,0,3491,3489,1,0,0,0,3491,3492,1,0,0,0,3492,
	3494,1,0,0,0,3493,3491,1,0,0,0,3494,3496,3,238,119,0,3495,3497,3,248,124,
	0,3496,3495,1,0,0,0,3496,3497,1,0,0,0,3497,3499,1,0,0,0,3498,3500,3,208,
	104,0,3499,3498,1,0,0,0,3499,3500,1,0,0,0,3500,3502,1,0,0,0,3501,3503,3,
	252,126,0,3502,3501,1,0,0,0,3502,3503,1,0,0,0,3503,231,1,0,0,0,3504,3506,
	5,162,0,0,3505,3507,7,38,0,0,3506,3505,1,0,0,0,3506,3507,1,0,0,0,3507,3508,
	1,0,0,0,3508,3509,3,226,113,0,3509,233,1,0,0,0,3510,3512,5,162,0,0,3511,
	3513,7,38,0,0,3512,3511,1,0,0,0,3512,3513,1,0,0,0,3513,3516,1,0,0,0,3514,
	3517,3,230,115,0,3515,3517,3,226,113,0,3516,3514,1,0,0,0,3516,3515,1,0,
	0,0,3517,235,1,0,0,0,3518,3527,7,46,0,0,3519,3527,5,68,0,0,3520,3527,5,
	153,0,0,3521,3527,5,149,0,0,3522,3527,5,147,0,0,3523,3527,5,534,0,0,3524,
	3527,7,47,0,0,3525,3527,5,148,0,0,3526,3518,1,0,0,0,3526,3519,1,0,0,0,3526,
	3520,1,0,0,0,3526,3521,1,0,0,0,3526,3522,1,0,0,0,3526,3523,1,0,0,0,3526,
	3524,1,0,0,0,3526,3525,1,0,0,0,3527,237,1,0,0,0,3528,3531,5,1003,0,0,3529,
	3531,3,240,120,0,3530,3528,1,0,0,0,3530,3529,1,0,0,0,3531,3536,1,0,0,0,
	3532,3533,5,1022,0,0,3533,3535,3,240,120,0,3534,3532,1,0,0,0,3535,3538,
	1,0,0,0,3536,3534,1,0,0,0,3536,3537,1,0,0,0,3537,239,1,0,0,0,3538,3536,
	1,0,0,0,3539,3540,3,498,249,0,3540,3541,5,1019,0,0,3541,3542,5,1003,0,0,
	3542,3569,1,0,0,0,3543,3548,3,502,251,0,3544,3546,5,11,0,0,3545,3544,1,
	0,0,0,3545,3546,1,0,0,0,3546,3547,1,0,0,0,3547,3549,3,524,262,0,3548,3545,
	1,0,0,0,3548,3549,1,0,0,0,3549,3569,1,0,0,0,3550,3555,3,582,291,0,3551,
	3553,5,11,0,0,3552,3551,1,0,0,0,3552,3553,1,0,0,0,3553,3554,1,0,0,0,3554,
	3556,3,524,262,0,3555,3552,1,0,0,0,3555,3556,1,0,0,0,3556,3569,1,0,0,0,
	3557,3558,5,1046,0,0,3558,3560,5,994,0,0,3559,3557,1,0,0,0,3559,3560,1,
	0,0,0,3560,3561,1,0,0,0,3561,3566,3,602,301,0,3562,3564,5,11,0,0,3563,3562,
	1,0,0,0,3563,3564,1,0,0,0,3564,3565,1,0,0,0,3565,3567,3,524,262,0,3566,
	3563,1,0,0,0,3566,3567,1,0,0,0,3567,3569,1,0,0,0,3568,3539,1,0,0,0,3568,
	3543,1,0,0,0,3568,3550,1,0,0,0,3568,3559,1,0,0,0,3569,241,1,0,0,0,3570,
	3571,5,78,0,0,3571,3576,3,188,94,0,3572,3573,5,1022,0,0,3573,3575,3,188,
	94,0,3574,3572,1,0,0,0,3575,3578,1,0,0,0,3576,3574,1,0,0,0,3576,3577,1,
	0,0,0,3577,3607,1,0,0,0,3578,3576,1,0,0,0,3579,3580,5,78,0,0,3580,3581,
	5,335,0,0,3581,3607,5,1035,0,0,3582,3583,5,78,0,0,3583,3584,5,114,0,0,3584,
	3588,5,1035,0,0,3585,3586,5,22,0,0,3586,3587,5,138,0,0,3587,3589,3,510,
	255,0,3588,3585,1,0,0,0,3588,3589,1,0,0,0,3589,3596,1,0,0,0,3590,3592,7,
	35,0,0,3591,3593,3,244,122,0,3592,3591,1,0,0,0,3593,3594,1,0,0,0,3594,3592,
	1,0,0,0,3594,3595,1,0,0,0,3595,3597,1,0,0,0,3596,3590,1,0,0,0,3596,3597,
	1,0,0,0,3597,3604,1,0,0,0,3598,3600,5,91,0,0,3599,3601,3,246,123,0,3600,
	3599,1,0,0,0,3601,3602,1,0,0,0,3602,3600,1,0,0,0,3602,3603,1,0,0,0,3603,
	3605,1,0,0,0,3604,3598,1,0,0,0,3604,3605,1,0,0,0,3605,3607,1,0,0,0,3606,
	3570,1,0,0,0,3606,3579,1,0,0,0,3606,3582,1,0,0,0,3607,243,1,0,0,0,3608,
	3609,5,155,0,0,3609,3610,5,16,0,0,3610,3621,5,1035,0,0,3611,3613,5,109,
	0,0,3612,3611,1,0,0,0,3612,3613,1,0,0,0,3613,3614,1,0,0,0,3614,3615,5,51,
	0,0,3615,3616,5,16,0,0,3616,3621,5,1035,0,0,3617,3618,5,52,0,0,3618,3619,
	5,16,0,0,3619,3621,5,1035,0,0,3620,3608,1,0,0,0,3620,3612,1,0,0,0,3620,
	3617,1,0,0,0,3621,245,1,0,0,0,3622,3623,5,152,0,0,3623,3624,5,16,0,0,3624,
	3629,5,1035,0,0,3625,3626,5,155,0,0,3626,3627,5,16,0,0,3627,3629,5,1035,
	0,0,3628,3622,1,0,0,0,3628,3625,1,0,0,0,3629,247,1,0,0,0,3630,3631,5,61,
	0,0,3631,3634,3,212,106,0,3632,3633,5,172,0,0,3633,3635,3,602,301,0,3634,
	3632,1,0,0,0,3634,3635,1,0,0,0,3635,3650,1,0,0,0,3636,3637,5,66,0,0,3637,
	3638,5,16,0,0,3638,3643,3,250,125,0,3639,3640,5,1022,0,0,3640,3642,3,250,
	125,0,3641,3639,1,0,0,0,3642,3645,1,0,0,0,3643,3641,1,0,0,0,3643,3644,1,
	0,0,0,3644,3648,1,0,0,0,3645,3643,1,0,0,0,3646,3647,5,174,0,0,3647,3649,
	5,509,0,0,3648,3646,1,0,0,0,3648,3649,1,0,0,0,3649,3651,1,0,0,0,3650,3636,
	1,0,0,0,3650,3651,1,0,0,0,3651,3654,1,0,0,0,3652,3653,5,67,0,0,3653,3655,
	3,602,301,0,3654,3652,1,0,0,0,3654,3655,1,0,0,0,3655,249,1,0,0,0,3656,3658,
	3,602,301,0,3657,3659,7,42,0,0,3658,3657,1,0,0,0,3658,3659,1,0,0,0,3659,
	251,1,0,0,0,3660,3671,5,89,0,0,3661,3662,3,254,127,0,3662,3663,5,1022,0,
	0,3663,3665,1,0,0,0,3664,3661,1,0,0,0,3664,3665,1,0,0,0,3665,3666,1,0,0,
	0,3666,3672,3,254,127,0,3667,3668,3,254,127,0,3668,3669,5,452,0,0,3669,
	3670,3,254,127,0,3670,3672,1,0,0,0,3671,3664,1,0,0,0,3671,3667,1,0,0,0,
	3672,253,1,0,0,0,3673,3676,3,530,265,0,3674,3676,3,508,254,0,3675,3673,
	1,0,0,0,3675,3674,1,0,0,0,3676,255,1,0,0,0,3677,3678,5,538,0,0,3678,3687,
	5,561,0,0,3679,3684,3,278,139,0,3680,3681,5,1022,0,0,3681,3683,3,278,139,
	0,3682,3680,1,0,0,0,3683,3686,1,0,0,0,3684,3682,1,0,0,0,3684,3685,1,0,0,
	0,3685,3688,1,0,0,0,3686,3684,1,0,0,0,3687,3679,1,0,0,0,3687,3688,1,0,0,
	0,3688,257,1,0,0,0,3689,3691,5,282,0,0,3690,3692,5,584,0,0,3691,3690,1,
	0,0,0,3691,3692,1,0,0,0,3692,259,1,0,0,0,3693,3695,5,306,0,0,3694,3696,
	5,584,0,0,3695,3694,1,0,0,0,3695,3696,1,0,0,0,3696,3702,1,0,0,0,3697,3699,
	5,10,0,0,3698,3700,5,448,0,0,3699,3698,1,0,0,0,3699,3700,1,0,0,0,3700,3701,
	1,0,0,0,3701,3703,5,291,0,0,3702,3697,1,0,0,0,3702,3703,1,0,0,0,3703,3708,
	1,0,0,0,3704,3706,5,448,0,0,3705,3704,1,0,0,0,3705,3706,1,0,0,0,3706,3707,
	1,0,0,0,3707,3709,5,124,0,0,3708,3705,1,0,0,0,3708,3709,1,0,0,0,3709,261,
	1,0,0,0,3710,3712,5,508,0,0,3711,3713,5,584,0,0,3712,3711,1,0,0,0,3712,
	3713,1,0,0,0,3713,3719,1,0,0,0,3714,3716,5,10,0,0,3715,3717,5,448,0,0,3716,
	3715,1,0,0,0,3716,3717,1,0,0,0,3717,3718,1,0,0,0,3718,3720,5,291,0,0,3719,
	3714,1,0,0,0,3719,3720,1,0,0,0,3720,3725,1,0,0,0,3721,3723,5,448,0,0,3722,
	3721,1,0,0,0,3722,3723,1,0,0,0,3723,3724,1,0,0,0,3724,3726,5,124,0,0,3725,
	3722,1,0,0,0,3725,3726,1,0,0,0,3726,263,1,0,0,0,3727,3728,5,514,0,0,3728,
	3729,3,524,262,0,3729,265,1,0,0,0,3730,3732,5,508,0,0,3731,3733,5,584,0,
	0,3732,3731,1,0,0,0,3732,3733,1,0,0,0,3733,3734,1,0,0,0,3734,3736,5,157,
	0,0,3735,3737,5,514,0,0,3736,3735,1,0,0,0,3736,3737,1,0,0,0,3737,3738,1,
	0,0,0,3738,3739,3,524,262,0,3739,267,1,0,0,0,3740,3741,5,124,0,0,3741,3742,
	5,514,0,0,3742,3743,3,524,262,0,3743,269,1,0,0,0,3744,3745,5,93,0,0,3745,
	3746,5,602,0,0,3746,3751,3,280,140,0,3747,3748,5,1022,0,0,3748,3750,3,280,
	140,0,3749,3747,1,0,0,0,3750,3753,1,0,0,0,3751,3749,1,0,0,0,3751,3752,1,
	0,0,0,3752,271,1,0,0,0,3753,3751,1,0,0,0,3754,3755,5,164,0,0,3755,3756,
	5,602,0,0,3756,273,1,0,0,0,3757,3758,5,138,0,0,3758,3759,5,278,0,0,3759,
	3760,5,1011,0,0,3760,3761,7,22,0,0,3761,275,1,0,0,0,3762,3764,5,138,0,0,
	3763,3765,7,48,0,0,3764,3763,1,0,0,0,3764,3765,1,0,0,0,3765,3766,1,0,0,
	0,3766,3767,5,561,0,0,3767,3772,3,284,142,0,3768,3769,5,1022,0,0,3769,3771,
	3,284,142,0,3770,3768,1,0,0,0,3771,3774,1,0,0,0,3772,3770,1,0,0,0,3772,
	3773,1,0,0,0,3773,277,1,0,0,0,3774,3772,1,0,0,0,3775,3776,5,174,0,0,3776,
	3777,5,313,0,0,3777,3783,5,525,0,0,3778,3779,5,120,0,0,3779,3783,5,175,
	0,0,3780,3781,5,120,0,0,3781,3783,5,457,0,0,3782,3775,1,0,0,0,3782,3778,
	1,0,0,0,3782,3780,1,0,0,0,3783,279,1,0,0,0,3784,3789,3,500,250,0,3785,3787,
	5,11,0,0,3786,3785,1,0,0,0,3786,3787,1,0,0,0,3787,3788,1,0,0,0,3788,3790,
	3,524,262,0,3789,3786,1,0,0,0,3789,3790,1,0,0,0,3790,3791,1,0,0,0,3791,
	3792,3,282,141,0,3792,281,1,0,0,0,3793,3795,5,120,0,0,3794,3796,5,402,0,
	0,3795,3794,1,0,0,0,3795,3796,1,0,0,0,3796,3802,1,0,0,0,3797,3799,5,95,
	0,0,3798,3797,1,0,0,0,3798,3799,1,0,0,0,3799,3800,1,0,0,0,3800,3802,5,175,
	0,0,3801,3793,1,0,0,0,3801,3798,1,0,0,0,3802,283,1,0,0,0,3803,3804,5,392,
	0,0,3804,3805,5,400,0,0,3805,3811,3,286,143,0,3806,3807,5,120,0,0,3807,
	3811,5,175,0,0,3808,3809,5,120,0,0,3809,3811,5,457,0,0,3810,3803,1,0,0,
	0,3810,3806,1,0,0,0,3810,3808,1,0,0,0,3811,285,1,0,0,0,3812,3813,5,689,
	0,0,3813,3820,5,120,0,0,3814,3815,5,120,0,0,3815,3820,5,690,0,0,3816,3817,
	5,120,0,0,3817,3820,5,691,0,0,3818,3820,5,692,0,0,3819,3812,1,0,0,0,3819,
	3814,1,0,0,0,3819,3816,1,0,0,0,3819,3818,1,0,0,0,3820,287,1,0,0,0,3821,
	3822,5,21,0,0,3822,3823,5,405,0,0,3823,3824,5,157,0,0,3824,3829,3,306,153,
	0,3825,3826,5,1022,0,0,3826,3828,3,306,153,0,3827,3825,1,0,0,0,3828,3831,
	1,0,0,0,3829,3827,1,0,0,0,3829,3830,1,0,0,0,3830,3833,1,0,0,0,3831,3829,
	1,0,0,0,3832,3834,3,314,157,0,3833,3832,1,0,0,0,3833,3834,1,0,0,0,3834,
	289,1,0,0,0,3835,3836,5,21,0,0,3836,3837,5,502,0,0,3837,3838,5,361,0,0,
	3838,3843,3,316,158,0,3839,3840,5,1022,0,0,3840,3842,3,316,158,0,3841,3839,
	1,0,0,0,3842,3845,1,0,0,0,3843,3841,1,0,0,0,3843,3844,1,0,0,0,3844,291,
	1,0,0,0,3845,3843,1,0,0,0,3846,3847,5,118,0,0,3847,3848,7,49,0,0,3848,3853,
	5,404,0,0,3849,3850,5,157,0,0,3850,3854,5,1035,0,0,3851,3852,5,13,0,0,3852,
	3854,5,1035,0,0,3853,3849,1,0,0,0,3853,3851,1,0,0,0,3854,293,1,0,0,0,3855,
	3856,5,503,0,0,3856,3857,5,405,0,0,3857,295,1,0,0,0,3858,3859,5,503,0,0,
	3859,3861,5,523,0,0,3860,3862,5,6,0,0,3861,3860,1,0,0,0,3861,3862,1,0,0,
	0,3862,3864,1,0,0,0,3863,3865,3,314,157,0,3864,3863,1,0,0,0,3864,3865,1,
	0,0,0,3865,297,1,0,0,0,3866,3867,5,538,0,0,3867,3876,5,523,0,0,3868,3873,
	3,320,160,0,3869,3870,5,1022,0,0,3870,3872,3,320,160,0,3871,3869,1,0,0,
	0,3872,3875,1,0,0,0,3873,3871,1,0,0,0,3873,3874,1,0,0,0,3874,3877,1,0,0,
	0,3875,3873,1,0,0,0,3876,3868,1,0,0,0,3876,3877,1,0,0,0,3877,3880,1,0,0,
	0,3878,3879,5,570,0,0,3879,3881,3,322,161,0,3880,3878,1,0,0,0,3880,3881,
	1,0,0,0,3881,3885,1,0,0,0,3882,3884,3,324,162,0,3883,3882,1,0,0,0,3884,
	3887,1,0,0,0,3885,3883,1,0,0,0,3885,3886,1,0,0,0,3886,3889,1,0,0,0,3887,
	3885,1,0,0,0,3888,3890,3,314,157,0,3889,3888,1,0,0,0,3889,3890,1,0,0,0,
	3890,299,1,0,0,0,3891,3892,5,544,0,0,3892,3901,5,523,0,0,3893,3898,3,320,
	160,0,3894,3895,5,1022,0,0,3895,3897,3,320,160,0,3896,3894,1,0,0,0,3897,
	3900,1,0,0,0,3898,3896,1,0,0,0,3898,3899,1,0,0,0,3899,3902,1,0,0,0,3900,
	3898,1,0,0,0,3901,3893,1,0,0,0,3901,3902,1,0,0,0,3902,301,1,0,0,0,3903,
	3904,5,538,0,0,3904,3905,5,372,0,0,3905,303,1,0,0,0,3906,3907,5,544,0,0,
	3907,3908,5,372,0,0,3908,305,1,0,0,0,3909,3910,3,308,154,0,3910,3911,5,
	1011,0,0,3911,3912,5,1035,0,0,3912,3939,1,0,0,0,3913,3914,3,310,155,0,3914,
	3915,5,1011,0,0,3915,3916,3,530,265,0,3916,3939,1,0,0,0,3917,3918,3,312,
	156,0,3918,3919,5,1011,0,0,3919,3920,7,22,0,0,3920,3939,1,0,0,0,3921,3922,
	5,409,0,0,3922,3923,5,1011,0,0,3923,3939,5,1038,0,0,3924,3925,5,379,0,0,
	3925,3926,5,1011,0,0,3926,3935,5,1020,0,0,3927,3932,3,524,262,0,3928,3929,
	5,1022,0,0,3929,3931,3,524,262,0,3930,3928,1,0,0,0,3931,3934,1,0,0,0,3932,
	3930,1,0,0,0,3932,3933,1,0,0,0,3933,3936,1,0,0,0,3934,3932,1,0,0,0,3935,
	3927,1,0,0,0,3935,3936,1,0,0,0,3936,3937,1,0,0,0,3937,3939,5,1021,0,0,3938,
	3909,1,0,0,0,3938,3913,1,0,0,0,3938,3917,1,0,0,0,3938,3921,1,0,0,0,3938,
	3924,1,0,0,0,3939,307,1,0,0,0,3940,3941,7,50,0,0,3941,309,1,0,0,0,3942,
	3943,7,51,0,0,3943,311,1,0,0,0,3944,3945,7,52,0,0,3945,313,1,0,0,0,3946,
	3947,5,58,0,0,3947,3948,5,293,0,0,3948,3949,5,1035,0,0,3949,315,1,0,0,0,
	3950,3951,5,495,0,0,3951,3952,5,1011,0,0,3952,3953,5,1020,0,0,3953,3954,
	3,556,278,0,3954,3955,5,1021,0,0,3955,4000,1,0,0,0,3956,3957,5,497,0,0,
	3957,3958,5,1011,0,0,3958,3959,5,1020,0,0,3959,3960,3,556,278,0,3960,3961,
	5,1021,0,0,3961,4000,1,0,0,0,3962,3963,5,496,0,0,3963,3964,5,1011,0,0,3964,
	3965,5,1020,0,0,3965,3966,3,558,279,0,3966,3967,5,1021,0,0,3967,4000,1,
	0,0,0,3968,3969,5,498,0,0,3969,3970,5,1011,0,0,3970,3971,5,1020,0,0,3971,
	3972,3,558,279,0,3972,3973,5,1021,0,0,3973,4000,1,0,0,0,3974,3975,5,500,
	0,0,3975,3976,5,1011,0,0,3976,3977,5,1020,0,0,3977,3978,3,568,284,0,3978,
	3979,5,1021,0,0,3979,4000,1,0,0,0,3980,3981,5,501,0,0,3981,3982,5,1011,
	0,0,3982,3983,5,1020,0,0,3983,3984,3,568,284,0,3984,3985,5,1021,0,0,3985,
	4000,1,0,0,0,3986,3987,5,499,0,0,3987,3988,5,1011,0,0,3988,3989,5,1020,
	0,0,3989,3994,3,318,159,0,3990,3991,5,1022,0,0,3991,3993,3,318,159,0,3992,
	3990,1,0,0,0,3993,3996,1,0,0,0,3994,3992,1,0,0,0,3994,3995,1,0,0,0,3995,
	3997,1,0,0,0,3996,3994,1,0,0,0,3997,3998,5,1021,0,0,3998,4000,1,0,0,0,3999,
	3950,1,0,0,0,3999,3956,1,0,0,0,3999,3962,1,0,0,0,3999,3968,1,0,0,0,3999,
	3974,1,0,0,0,3999,3980,1,0,0,0,3999,3986,1,0,0,0,4000,317,1,0,0,0,4001,
	4002,5,1020,0,0,4002,4003,3,500,250,0,4003,4004,5,1022,0,0,4004,4005,3,
	500,250,0,4005,4006,5,1021,0,0,4006,319,1,0,0,0,4007,4008,7,53,0,0,4008,
	321,1,0,0,0,4009,4010,7,54,0,0,4010,4011,5,1011,0,0,4011,4028,3,326,163,
	0,4012,4013,5,411,0,0,4013,4014,5,1011,0,0,4014,4015,5,1035,0,0,4015,4016,
	5,1022,0,0,4016,4017,5,412,0,0,4017,4018,5,1011,0,0,4018,4028,3,530,265,
	0,4019,4020,5,489,0,0,4020,4021,5,1011,0,0,4021,4022,5,1035,0,0,4022,4023,
	5,1022,0,0,4023,4024,5,490,0,0,4024,4025,5,1011,0,0,4025,4028,3,530,265,
	0,4026,4028,5,532,0,0,4027,4009,1,0,0,0,4027,4012,1,0,0,0,4027,4019,1,0,
	0,0,4027,4026,1,0,0,0,4028,323,1,0,0,0,4029,4030,5,572,0,0,4030,4031,5,
	1011,0,0,4031,4042,5,1035,0,0,4032,4033,5,468,0,0,4033,4034,5,1011,0,0,
	4034,4042,5,1035,0,0,4035,4036,5,326,0,0,4036,4037,5,1011,0,0,4037,4042,
	5,1035,0,0,4038,4039,5,471,0,0,4039,4040,5,1011,0,0,4040,4042,5,1035,0,
	0,4041,4029,1,0,0,0,4041,4032,1,0,0,0,4041,4035,1,0,0,0,4041,4038,1,0,0,
	0,4042,325,1,0,0,0,4043,4048,3,516,258,0,4044,4045,5,1022,0,0,4045,4047,
	3,516,258,0,4046,4044,1,0,0,0,4047,4050,1,0,0,0,4048,4046,1,0,0,0,4048,
	4049,1,0,0,0,4049,4053,1,0,0,0,4050,4048,1,0,0,0,4051,4053,5,1035,0,0,4052,
	4043,1,0,0,0,4052,4051,1,0,0,0,4053,327,1,0,0,0,4054,4055,5,587,0,0,4055,
	4056,7,55,0,0,4056,4058,3,518,259,0,4057,4059,7,56,0,0,4058,4057,1,0,0,
	0,4058,4059,1,0,0,0,4059,329,1,0,0,0,4060,4061,5,587,0,0,4061,4062,5,340,
	0,0,4062,4068,3,518,259,0,4063,4066,5,552,0,0,4064,4065,5,58,0,0,4065,4067,
	5,436,0,0,4066,4064,1,0,0,0,4066,4067,1,0,0,0,4067,4069,1,0,0,0,4068,4063,
	1,0,0,0,4068,4069,1,0,0,0,4069,331,1,0,0,0,4070,4071,5,587,0,0,4071,4072,
	5,475,0,0,4072,4073,3,518,259,0,4073,333,1,0,0,0,4074,4075,5,587,0,0,4075,
	4076,5,306,0,0,4076,4079,3,518,259,0,4077,4078,5,455,0,0,4078,4080,5,469,
	0,0,4079,4077,1,0,0,0,4079,4080,1,0,0,0,4080,335,1,0,0,0,4081,4082,5,587,
	0,0,4082,4083,5,508,0,0,4083,4084,3,518,259,0,4084,337,1,0,0,0,4085,4086,
	5,587,0,0,4086,4089,5,485,0,0,4087,4088,5,29,0,0,4088,4090,3,518,259,0,
	4089,4087,1,0,0,0,4089,4090,1,0,0,0,4090,339,1,0,0,0,4091,4092,5,475,0,
	0,4092,4093,3,524,262,0,4093,4096,5,61,0,0,4094,4097,5,1035,0,0,4095,4097,
	5,1046,0,0,4096,4094,1,0,0,0,4096,4095,1,0,0,0,4097,341,1,0,0,0,4098,4099,
	5,604,0,0,4099,4102,3,524,262,0,4100,4101,5,169,0,0,4101,4103,3,570,285,
	0,4102,4100,1,0,0,0,4102,4103,1,0,0,0,4103,343,1,0,0,0,4104,4105,7,57,0,
	0,4105,4106,5,475,0,0,4106,4107,3,524,262,0,4107,345,1,0,0,0,4108,4111,
	3,348,174,0,4109,4111,3,6,3,0,4110,4108,1,0,0,0,4110,4109,1,0,0,0,4111,
	347,1,0,0,0,4112,4113,3,524,262,0,4113,4114,5,1031,0,0,4114,4116,1,0,0,
	0,4115,4112,1,0,0,0,4115,4116,1,0,0,0,4116,4117,1,0,0,0,4117,4156,5,282,
	0,0,4118,4119,3,368,184,0,4119,4120,5,1023,0,0,4120,4122,1,0,0,0,4121,4118,
	1,0,0,0,4122,4125,1,0,0,0,4123,4121,1,0,0,0,4123,4124,1,0,0,0,4124,4131,
	1,0,0,0,4125,4123,1,0,0,0,4126,4127,3,370,185,0,4127,4128,5,1023,0,0,4128,
	4130,1,0,0,0,4129,4126,1,0,0,0,4130,4133,1,0,0,0,4131,4129,1,0,0,0,4131,
	4132,1,0,0,0,4132,4139,1,0,0,0,4133,4131,1,0,0,0,4134,4135,3,372,186,0,
	4135,4136,5,1023,0,0,4136,4138,1,0,0,0,4137,4134,1,0,0,0,4138,4141,1,0,
	0,0,4139,4137,1,0,0,0,4139,4140,1,0,0,0,4140,4147,1,0,0,0,4141,4139,1,0,
	0,0,4142,4143,3,374,187,0,4143,4144,5,1023,0,0,4144,4146,1,0,0,0,4145,4142,
	1,0,0,0,4146,4149,1,0,0,0,4147,4145,1,0,0,0,4147,4148,1,0,0,0,4148,4153,
	1,0,0,0,4149,4147,1,0,0,0,4150,4152,3,378,189,0,4151,4150,1,0,0,0,4152,
	4155,1,0,0,0,4153,4151,1,0,0,0,4153,4154,1,0,0,0,4154,4157,1,0,0,0,4155,
	4153,1,0,0,0,4156,4123,1,0,0,0,4156,4157,1,0,0,0,4157,4158,1,0,0,0,4158,
	4160,5,340,0,0,4159,4161,3,524,262,0,4160,4159,1,0,0,0,4160,4161,1,0,0,
	0,4161,349,1,0,0,0,4162,4165,5,19,0,0,4163,4166,3,524,262,0,4164,4166,3,
	602,301,0,4165,4163,1,0,0,0,4165,4164,1,0,0,0,4165,4166,1,0,0,0,4166,4168,
	1,0,0,0,4167,4169,3,380,190,0,4168,4167,1,0,0,0,4169,4170,1,0,0,0,4170,
	4168,1,0,0,0,4170,4171,1,0,0,0,4171,4178,1,0,0,0,4172,4174,5,49,0,0,4173,
	4175,3,378,189,0,4174,4173,1,0,0,0,4175,4176,1,0,0,0,4176,4174,1,0,0,0,
	4176,4177,1,0,0,0,4177,4179,1,0,0,0,4178,4172,1,0,0,0,4178,4179,1,0,0,0,
	4179,4180,1,0,0,0,4180,4181,5,340,0,0,4181,4182,5,19,0,0,4182,351,1,0,0,
	0,4183,4184,5,69,0,0,4184,4185,3,602,301,0,4185,4187,5,156,0,0,4186,4188,
	3,378,189,0,4187,4186,1,0,0,0,4188,4189,1,0,0,0,4189,4187,1,0,0,0,4189,
	4190,1,0,0,0,4190,4194,1,0,0,0,4191,4193,3,382,191,0,4192,4191,1,0,0,0,
	4193,4196,1,0,0,0,4194,4192,1,0,0,0,4194,4195,1,0,0,0,4195,4203,1,0,0,0,
	4196,4194,1,0,0,0,4197,4199,5,49,0,0,4198,4200,3,378,189,0,4199,4198,1,
	0,0,0,4200,4201,1,0,0,0,4201,4199,1,0,0,0,4201,4202,1,0,0,0,4202,4204,1,
	0,0,0,4203,4197,1,0,0,0,4203,4204,1,0,0,0,4204,4205,1,0,0,0,4205,4206,5,
	340,0,0,4206,4207,5,69,0,0,4207,353,1,0,0,0,4208,4209,5,80,0,0,4209,4210,
	3,524,262,0,4210,355,1,0,0,0,4211,4212,5,86,0,0,4212,4213,3,524,262,0,4213,
	357,1,0,0,0,4214,4215,3,524,262,0,4215,4216,5,1031,0,0,4216,4218,1,0,0,
	0,4217,4214,1,0,0,0,4217,4218,1,0,0,0,4218,4219,1,0,0,0,4219,4221,5,94,
	0,0,4220,4222,3,378,189,0,4221,4220,1,0,0,0,4222,4223,1,0,0,0,4223,4221,
	1,0,0,0,4223,4224,1,0,0,0,4224,4225,1,0,0,0,4225,4226,5,340,0,0,4226,4228,
	5,94,0,0,4227,4229,3,524,262,0,4228,4227,1,0,0,0,4228,4229,1,0,0,0,4229,
	359,1,0,0,0,4230,4231,3,524,262,0,4231,4232,5,1031,0,0,4232,4234,1,0,0,
	0,4233,4230,1,0,0,0,4233,4234,1,0,0,0,4234,4235,1,0,0,0,4235,4237,5,126,
	0,0,4236,4238,3,378,189,0,4237,4236,1,0,0,0,4238,4239,1,0,0,0,4239,4237,
	1,0,0,0,4239,4240,1,0,0,0,4240,4241,1,0,0,0,4241,4242,5,570,0,0,4242,4243,
	3,602,301,0,4243,4244,5,340,0,0,4244,4246,5,126,0,0,4245,4247,3,524,262,
	0,4246,4245,1,0,0,0,4246,4247,1,0,0,0,4247,361,1,0,0,0,4248,4249,5,131,
	0,0,4249,4250,3,602,301,0,4250,363,1,0,0,0,4251,4252,3,524,262,0,4252,4253,
	5,1031,0,0,4253,4255,1,0,0,0,4254,4251,1,0,0,0,4254,4255,1,0,0,0,4255,4256,
	1,0,0,0,4256,4257,5,173,0,0,4257,4258,3,602,301,0,4258,4260,5,334,0,0,4259,
	4261,3,378,189,0,4260,4259,1,0,0,0,4261,4262,1,0,0,0,4262,4260,1,0,0,0,
	4262,4263,1,0,0,0,4263,4264,1,0,0,0,4264,4265,5,340,0,0,4265,4267,5,173,
	0,0,4266,4268,3,524,262,0,4267,4266,1,0,0,0,4267,4268,1,0,0,0,4268,365,
	1,0,0,0,4269,4270,5,299,0,0,4270,4285,3,524,262,0,4271,4276,5,57,0,0,4272,
	4274,5,447,0,0,4273,4272,1,0,0,0,4273,4274,1,0,0,0,4274,4275,1,0,0,0,4275,
	4277,5,61,0,0,4276,4273,1,0,0,0,4276,4277,1,0,0,0,4277,4278,1,0,0,0,4278,
	4279,3,524,262,0,4279,4280,5,78,0,0,4280,4281,3,556,278,0,4281,4285,1,0,
	0,0,4282,4283,5,458,0,0,4283,4285,3,524,262,0,4284,4269,1,0,0,0,4284,4271,
	1,0,0,0,4284,4282,1,0,0,0,4285,367,1,0,0,0,4286,4287,5,37,0,0,4287,4288,
	3,556,278,0,4288,4291,3,544,272,0,4289,4290,5,38,0,0,4290,4292,3,572,286,
	0,4291,4289,1,0,0,0,4291,4292,1,0,0,0,4292,369,1,0,0,0,4293,4294,5,37,0,
	0,4294,4295,3,524,262,0,4295,4296,5,26,0,0,4296,4303,5,58,0,0,4297,4304,
	3,530,265,0,4298,4300,5,145,0,0,4299,4301,5,576,0,0,4300,4299,1,0,0,0,4300,
	4301,1,0,0,0,4301,4302,1,0,0,0,4302,4304,5,1035,0,0,4303,4297,1,0,0,0,4303,
	4298,1,0,0,0,4304,371,1,0,0,0,4305,4306,5,37,0,0,4306,4307,3,524,262,0,
	4307,4308,5,34,0,0,4308,4309,5,58,0,0,4309,4310,3,180,90,0,4310,373,1,0,
	0,0,4311,4312,5,37,0,0,4312,4313,7,58,0,0,4313,4314,5,373,0,0,4314,4315,
	5,58,0,0,4315,4320,3,376,188,0,4316,4317,5,1022,0,0,4317,4319,3,376,188,
	0,4318,4316,1,0,0,0,4319,4322,1,0,0,0,4320,4318,1,0,0,0,4320,4321,1,0,0,
	0,4321,4323,1,0,0,0,4322,4320,1,0,0,0,4323,4324,3,346,173,0,4324,375,1,
	0,0,0,4325,4337,3,530,265,0,4326,4328,5,145,0,0,4327,4329,5,576,0,0,4328,
	4327,1,0,0,0,4328,4329,1,0,0,0,4329,4330,1,0,0,0,4330,4337,5,1035,0,0,4331,
	4337,3,524,262,0,4332,4337,5,146,0,0,4333,4334,5,102,0,0,4334,4337,5,366,
	0,0,4335,4337,5,144,0,0,4336,4325,1,0,0,0,4336,4326,1,0,0,0,4336,4331,1,
	0,0,0,4336,4332,1,0,0,0,4336,4333,1,0,0,0,4336,4335,1,0,0,0,4337,377,1,
	0,0,0,4338,4341,3,20,10,0,4339,4341,3,6,3,0,4340,4338,1,0,0,0,4340,4339,
	1,0,0,0,4341,4342,1,0,0,0,4342,4343,5,1023,0,0,4343,379,1,0,0,0,4344,4347,
	5,171,0,0,4345,4348,3,542,271,0,4346,4348,3,602,301,0,4347,4345,1,0,0,0,
	4347,4346,1,0,0,0,4348,4349,1,0,0,0,4349,4351,5,156,0,0,4350,4352,3,378,
	189,0,4351,4350,1,0,0,0,4352,4353,1,0,0,0,4353,4351,1,0,0,0,4353,4354,1,
	0,0,0,4354,381,1,0,0,0,4355,4356,5,50,0,0,4356,4357,3,602,301,0,4357,4359,
	5,156,0,0,4358,4360,3,378,189,0,4359,4358,1,0,0,0,4360,4361,1,0,0,0,4361,
	4359,1,0,0,0,4361,4362,1,0,0,0,4362,383,1,0,0,0,4363,4364,5,7,0,0,4364,
	4365,5,572,0,0,4365,4370,3,402,201,0,4366,4367,5,1022,0,0,4367,4369,3,402,
	201,0,4368,4366,1,0,0,0,4369,4372,1,0,0,0,4370,4368,1,0,0,0,4370,4371,1,
	0,0,0,4371,4418,1,0,0,0,4372,4370,1,0,0,0,4373,4374,5,7,0,0,4374,4376,5,
	572,0,0,4375,4377,3,578,289,0,4376,4375,1,0,0,0,4376,4377,1,0,0,0,4377,
	4378,1,0,0,0,4378,4383,3,404,202,0,4379,4380,5,1022,0,0,4380,4382,3,404,
	202,0,4381,4379,1,0,0,0,4382,4385,1,0,0,0,4383,4381,1,0,0,0,4383,4384,1,
	0,0,0,4384,4400,1,0,0,0,4385,4383,1,0,0,0,4386,4398,5,128,0,0,4387,4399,
	5,450,0,0,4388,4395,3,406,203,0,4389,4391,5,10,0,0,4390,4389,1,0,0,0,4390,
	4391,1,0,0,0,4391,4392,1,0,0,0,4392,4394,3,406,203,0,4393,4390,1,0,0,0,
	4394,4397,1,0,0,0,4395,4393,1,0,0,0,4395,4396,1,0,0,0,4396,4399,1,0,0,0,
	4397,4395,1,0,0,0,4398,4387,1,0,0,0,4398,4388,1,0,0,0,4399,4401,1,0,0,0,
	4400,4386,1,0,0,0,4400,4401,1,0,0,0,4401,4408,1,0,0,0,4402,4404,5,174,0,
	0,4403,4405,3,408,204,0,4404,4403,1,0,0,0,4405,4406,1,0,0,0,4406,4404,1,
	0,0,0,4406,4407,1,0,0,0,4407,4409,1,0,0,0,4408,4402,1,0,0,0,4408,4409,1,
	0,0,0,4409,4414,1,0,0,0,4410,4413,3,410,205,0,4411,4413,3,412,206,0,4412,
	4410,1,0,0,0,4412,4411,1,0,0,0,4413,4416,1,0,0,0,4414,4412,1,0,0,0,4414,
	4415,1,0,0,0,4415,4418,1,0,0,0,4416,4414,1,0,0,0,4417,4363,1,0,0,0,4417,
	4373,1,0,0,0,4418,385,1,0,0,0,4419,4420,5,30,0,0,4420,4421,5,572,0,0,4421,
	4426,3,404,202,0,4422,4423,5,1022,0,0,4423,4425,3,404,202,0,4424,4422,1,
	0,0,0,4425,4428,1,0,0,0,4426,4424,1,0,0,0,4426,4427,1,0,0,0,4427,4474,1,
	0,0,0,4428,4426,1,0,0,0,4429,4430,5,30,0,0,4430,4432,5,572,0,0,4431,4433,
	3,580,290,0,4432,4431,1,0,0,0,4432,4433,1,0,0,0,4433,4434,1,0,0,0,4434,
	4439,3,404,202,0,4435,4436,5,1022,0,0,4436,4438,3,404,202,0,4437,4435,1,
	0,0,0,4438,4441,1,0,0,0,4439,4437,1,0,0,0,4439,4440,1,0,0,0,4440,4456,1,
	0,0,0,4441,4439,1,0,0,0,4442,4454,5,128,0,0,4443,4455,5,450,0,0,4444,4451,
	3,406,203,0,4445,4447,5,10,0,0,4446,4445,1,0,0,0,4446,4447,1,0,0,0,4447,
	4448,1,0,0,0,4448,4450,3,406,203,0,4449,4446,1,0,0,0,4450,4453,1,0,0,0,
	4451,4449,1,0,0,0,4451,4452,1,0,0,0,4452,4455,1,0,0,0,4453,4451,1,0,0,0,
	4454,4443,1,0,0,0,4454,4444,1,0,0,0,4455,4457,1,0,0,0,4456,4442,1,0,0,0,
	4456,4457,1,0,0,0,4457,4464,1,0,0,0,4458,4460,5,174,0,0,4459,4461,3,408,
	204,0,4460,4459,1,0,0,0,4461,4462,1,0,0,0,4462,4460,1,0,0,0,4462,4463,1,
	0,0,0,4463,4465,1,0,0,0,4464,4458,1,0,0,0,4464,4465,1,0,0,0,4465,4470,1,
	0,0,0,4466,4469,3,410,205,0,4467,4469,3,412,206,0,4468,4466,1,0,0,0,4468,
	4467,1,0,0,0,4469,4472,1,0,0,0,4470,4468,1,0,0,0,4470,4471,1,0,0,0,4471,
	4474,1,0,0,0,4472,4470,1,0,0,0,4473,4419,1,0,0,0,4473,4429,1,0,0,0,4474,
	387,1,0,0,0,4475,4476,5,47,0,0,4476,4478,5,572,0,0,4477,4479,3,578,289,
	0,4478,4477,1,0,0,0,4478,4479,1,0,0,0,4479,4480,1,0,0,0,4480,4485,3,506,
	253,0,4481,4482,5,1022,0,0,4482,4484,3,506,253,0,4483,4481,1,0,0,0,4484,
	4487,1,0,0,0,4485,4483,1,0,0,0,4485,4486,1,0,0,0,4486,389,1,0,0,0,4487,
	4485,1,0,0,0,4488,4489,5,65,0,0,4489,4494,3,414,207,0,4490,4491,5,1022,
	0,0,4491,4493,3,414,207,0,4492,4490,1,0,0,0,4493,4496,1,0,0,0,4494,4492,
	1,0,0,0,4494,4495,1,0,0,0,4495,4497,1,0,0,0,4496,4494,1,0,0,0,4497,4499,
	5,106,0,0,4498,4500,7,59,0,0,4499,4498,1,0,0,0,4499,4500,1,0,0,0,4500,4501,
	1,0,0,0,4501,4502,3,418,209,0,4502,4503,5,157,0,0,4503,4508,3,404,202,0,
	4504,4505,5,1022,0,0,4505,4507,3,404,202,0,4506,4504,1,0,0,0,4507,4510,
	1,0,0,0,4508,4506,1,0,0,0,4508,4509,1,0,0,0,4509,4525,1,0,0,0,4510,4508,
	1,0,0,0,4511,4523,5,128,0,0,4512,4524,5,450,0,0,4513,4520,3,406,203,0,4514,
	4516,5,10,0,0,4515,4514,1,0,0,0,4515,4516,1,0,0,0,4516,4517,1,0,0,0,4517,
	4519,3,406,203,0,4518,4515,1,0,0,0,4519,4522,1,0,0,0,4520,4518,1,0,0,0,
	4520,4521,1,0,0,0,4521,4524,1,0,0,0,4522,4520,1,0,0,0,4523,4512,1,0,0,0,
	4523,4513,1,0,0,0,4524,4526,1,0,0,0,4525,4511,1,0,0,0,4525,4526,1,0,0,0,
	4526,4536,1,0,0,0,4527,4533,5,174,0,0,4528,4529,5,65,0,0,4529,4532,5,108,
	0,0,4530,4532,3,408,204,0,4531,4528,1,0,0,0,4531,4530,1,0,0,0,4532,4535,
	1,0,0,0,4533,4531,1,0,0,0,4533,4534,1,0,0,0,4534,4537,1,0,0,0,4535,4533,
	1,0,0,0,4536,4527,1,0,0,0,4536,4537,1,0,0,0,4537,391,1,0,0,0,4538,4539,
	5,65,0,0,4539,4540,5,481,0,0,4540,4541,5,106,0,0,4541,4542,3,506,253,0,
	4542,4543,5,157,0,0,4543,4548,3,506,253,0,4544,4545,5,1022,0,0,4545,4547,
	3,506,253,0,4546,4544,1,0,0,0,4547,4550,1,0,0,0,4548,4546,1,0,0,0,4548,
	4549,1,0,0,0,4549,4554,1,0,0,0,4550,4548,1,0,0,0,4551,4552,5,174,0,0,4552,
	4553,5,65,0,0,4553,4555,5,108,0,0,4554,4551,1,0,0,0,4554,4555,1,0,0,0,4555,
	393,1,0,0,0,4556,4557,5,125,0,0,4557,4558,5,572,0,0,4558,4563,3,420,210,
	0,4559,4560,5,1022,0,0,4560,4562,3,420,210,0,4561,4559,1,0,0,0,4562,4565,
	1,0,0,0,4563,4561,1,0,0,0,4563,4564,1,0,0,0,4564,395,1,0,0,0,4565,4563,
	1,0,0,0,4566,4567,5,132,0,0,4567,4572,3,414,207,0,4568,4569,5,1022,0,0,
	4569,4571,3,414,207,0,4570,4568,1,0,0,0,4571,4574,1,0,0,0,4572,4570,1,0,
	0,0,4572,4573,1,0,0,0,4573,4575,1,0,0,0,4574,4572,1,0,0,0,4575,4577,5,106,
	0,0,4576,4578,7,59,0,0,4577,4576,1,0,0,0,4577,4578,1,0,0,0,4578,4579,1,
	0,0,0,4579,4580,3,418,209,0,4580,4581,5,61,0,0,4581,4586,3,506,253,0,4582,
	4583,5,1022,0,0,4583,4585,3,506,253,0,4584,4582,1,0,0,0,4585,4588,1,0,0,
	0,4586,4584,1,0,0,0,4586,4587,1,0,0,0,4587,4607,1,0,0,0,4588,4586,1,0,0,
	0,4589,4590,5,132,0,0,4590,4592,5,6,0,0,4591,4593,5,610,0,0,4592,4591,1,
	0,0,0,4592,4593,1,0,0,0,4593,4594,1,0,0,0,4594,4595,5,1022,0,0,4595,4596,
	5,65,0,0,4596,4597,5,108,0,0,4597,4598,5,61,0,0,4598,4603,3,506,253,0,4599,
	4600,5,1022,0,0,4600,4602,3,506,253,0,4601,4599,1,0,0,0,4602,4605,1,0,0,
	0,4603,4601,1,0,0,0,4603,4604,1,0,0,0,4604,4607,1,0,0,0,4605,4603,1,0,0,
	0,4606,4566,1,0,0,0,4606,4589,1,0,0,0,4607,397,1,0,0,0,4608,4609,5,132,
	0,0,4609,4610,5,481,0,0,4610,4611,5,106,0,0,4611,4612,3,506,253,0,4612,
	4613,5,61,0,0,4613,4618,3,506,253,0,4614,4615,5,1022,0,0,4615,4617,3,506,
	253,0,4616,4614,1,0,0,0,4617,4620,1,0,0,0,4618,4616,1,0,0,0,4618,4619,1,
	0,0,0,4619,399,1,0,0,0,4620,4618,1,0,0,0,4621,4622,5,138,0,0,4622,4625,
	5,468,0,0,4623,4624,5,58,0,0,4624,4626,3,506,253,0,4625,4623,1,0,0,0,4625,
	4626,1,0,0,0,4626,4627,1,0,0,0,4627,4630,5,1011,0,0,4628,4631,3,596,298,
	0,4629,4631,5,1035,0,0,4630,4628,1,0,0,0,4630,4629,1,0,0,0,4631,401,1,0,
	0,0,4632,4633,3,506,253,0,4633,4634,3,410,205,0,4634,403,1,0,0,0,4635,4636,
	3,506,253,0,4636,4637,5,378,0,0,4637,4638,5,16,0,0,4638,4639,5,468,0,0,
	4639,4640,5,1035,0,0,4640,4660,1,0,0,0,4641,4642,3,506,253,0,4642,4645,
	5,378,0,0,4643,4644,5,174,0,0,4644,4646,3,522,261,0,4645,4643,1,0,0,0,4645,
	4646,1,0,0,0,4646,4647,1,0,0,0,4647,4648,5,16,0,0,4648,4649,5,1035,0,0,
	4649,4660,1,0,0,0,4650,4651,3,506,253,0,4651,4652,5,378,0,0,4652,4653,5,
	174,0,0,4653,4656,3,522,261,0,4654,4655,5,11,0,0,4655,4657,5,1035,0,0,4656,
	4654,1,0,0,0,4656,4657,1,0,0,0,4657,4660,1,0,0,0,4658,4660,3,506,253,0,
	4659,4635,1,0,0,0,4659,4641,1,0,0,0,4659,4650,1,0,0,0,4659,4658,1,0,0,0,
	4660,405,1,0,0,0,4661,4670,5,150,0,0,4662,4670,5,586,0,0,4663,4664,5,296,
	0,0,4664,4670,5,1035,0,0,4665,4666,5,393,0,0,4666,4670,5,1035,0,0,4667,
	4668,5,549,0,0,4668,4670,5,1035,0,0,4669,4661,1,0,0,0,4669,4662,1,0,0,0,
	4669,4663,1,0,0,0,4669,4665,1,0,0,0,4669,4667,1,0,0,0,4670,407,1,0,0,0,
	4671,4672,5,427,0,0,4672,4680,3,530,265,0,4673,4674,5,430,0,0,4674,4680,
	3,530,265,0,4675,4676,5,426,0,0,4676,4680,3,530,265,0,4677,4678,5,431,0,
	0,4678,4680,3,530,265,0,4679,4671,1,0,0,0,4679,4673,1,0,0,0,4679,4675,1,
	0,0,0,4679,4677,1,0,0,0,4680,409,1,0,0,0,4681,4682,5,468,0,0,4682,4689,
	5,353,0,0,4683,4690,5,38,0,0,4684,4690,5,446,0,0,4685,4686,5,77,0,0,4686,
	4687,3,530,265,0,4687,4688,5,596,0,0,4688,4690,1,0,0,0,4689,4683,1,0,0,
	0,4689,4684,1,0,0,0,4689,4685,1,0,0,0,4689,4690,1,0,0,0,4690,411,1,0,0,
	0,4691,4692,5,270,0,0,4692,4693,7,60,0,0,4693,413,1,0,0,0,4694,4699,3,416,
	208,0,4695,4696,5,1020,0,0,4696,4697,3,556,278,0,4697,4698,5,1021,0,0,4698,
	4700,1,0,0,0,4699,4695,1,0,0,0,4699,4700,1,0,0,0,4700,415,1,0,0,0,4701,
	4703,5,6,0,0,4702,4704,5,610,0,0,4703,4702,1,0,0,0,4703,4704,1,0,0,0,4704,
	4773,1,0,0,0,4705,4707,5,7,0,0,4706,4708,5,603,0,0,4707,4706,1,0,0,0,4707,
	4708,1,0,0,0,4708,4773,1,0,0,0,4709,4717,5,30,0,0,4710,4711,5,557,0,0,4711,
	4718,5,602,0,0,4712,4718,5,603,0,0,4713,4718,5,578,0,0,4714,4718,5,572,
	0,0,4715,4718,5,556,0,0,4716,4718,5,507,0,0,4717,4710,1,0,0,0,4717,4712,
	1,0,0,0,4717,4713,1,0,0,0,4717,4714,1,0,0,0,4717,4715,1,0,0,0,4717,4716,
	1,0,0,0,4717,4718,1,0,0,0,4718,4773,1,0,0,0,4719,4773,5,40,0,0,4720,4722,
	5,47,0,0,4721,4723,5,507,0,0,4722,4721,1,0,0,0,4722,4723,1,0,0,0,4723,4773,
	1,0,0,0,4724,4773,5,348,0,0,4725,4773,5,604,0,0,4726,4773,5,605,0,0,4727,
	4728,5,65,0,0,4728,4773,5,108,0,0,4729,4773,5,72,0,0,4730,4773,5,76,0,0,
	4731,4732,5,93,0,0,4732,4773,5,602,0,0,4733,4773,5,606,0,0,4734,4773,5,
	481,0,0,4735,4773,5,122,0,0,4736,4773,5,607,0,0,4737,4738,5,502,0,0,4738,
	4773,7,61,0,0,4739,4773,5,137,0,0,4740,4741,5,140,0,0,4741,4773,7,62,0,
	0,4742,4773,5,608,0,0,4743,4773,5,609,0,0,4744,4773,5,159,0,0,4745,4773,
	5,166,0,0,4746,4773,5,167,0,0,4747,4773,5,612,0,0,4748,4773,5,613,0,0,4749,
	4773,5,614,0,0,4750,4773,5,615,0,0,4751,4773,5,616,0,0,4752,4773,5,617,
	0,0,4753,4773,5,618,0,0,4754,4773,5,619,0,0,4755,4773,5,620,0,0,4756,4773,
	5,621,0,0,4757,4773,5,622,0,0,4758,4773,5,623,0,0,4759,4773,5,624,0,0,4760,
	4773,5,625,0,0,4761,4773,5,626,0,0,4762,4773,5,627,0,0,4763,4773,5,628,
	0,0,4764,4773,5,629,0,0,4765,4773,5,630,0,0,4766,4773,5,631,0,0,4767,4773,
	5,632,0,0,4768,4773,5,633,0,0,4769,4773,5,634,0,0,4770,4773,5,635,0,0,4771,
	4773,5,636,0,0,4772,4701,1,0,0,0,4772,4705,1,0,0,0,4772,4709,1,0,0,0,4772,
	4719,1,0,0,0,4772,4720,1,0,0,0,4772,4724,1,0,0,0,4772,4725,1,0,0,0,4772,
	4726,1,0,0,0,4772,4727,1,0,0,0,4772,4729,1,0,0,0,4772,4730,1,0,0,0,4772,
	4731,1,0,0,0,4772,4733,1,0,0,0,4772,4734,1,0,0,0,4772,4735,1,0,0,0,4772,
	4736,1,0,0,0,4772,4737,1,0,0,0,4772,4739,1,0,0,0,4772,4740,1,0,0,0,4772,
	4742,1,0,0,0,4772,4743,1,0,0,0,4772,4744,1,0,0,0,4772,4745,1,0,0,0,4772,
	4746,1,0,0,0,4772,4747,1,0,0,0,4772,4748,1,0,0,0,4772,4749,1,0,0,0,4772,
	4750,1,0,0,0,4772,4751,1,0,0,0,4772,4752,1,0,0,0,4772,4753,1,0,0,0,4772,
	4754,1,0,0,0,4772,4755,1,0,0,0,4772,4756,1,0,0,0,4772,4757,1,0,0,0,4772,
	4758,1,0,0,0,4772,4759,1,0,0,0,4772,4760,1,0,0,0,4772,4761,1,0,0,0,4772,
	4762,1,0,0,0,4772,4763,1,0,0,0,4772,4764,1,0,0,0,4772,4765,1,0,0,0,4772,
	4766,1,0,0,0,4772,4767,1,0,0,0,4772,4768,1,0,0,0,4772,4769,1,0,0,0,4772,
	4770,1,0,0,0,4772,4771,1,0,0,0,4773,417,1,0,0,0,4774,4791,5,1003,0,0,4775,
	4776,5,1003,0,0,4776,4777,5,1019,0,0,4777,4791,5,1003,0,0,4778,4779,3,524,
	262,0,4779,4780,5,1019,0,0,4780,4781,5,1003,0,0,4781,4791,1,0,0,0,4782,
	4783,3,524,262,0,4783,4784,5,1019,0,0,4784,4785,3,524,262,0,4785,4791,1,
	0,0,0,4786,4787,3,524,262,0,4787,4788,3,528,264,0,4788,4791,1,0,0,0,4789,
	4791,3,524,262,0,4790,4774,1,0,0,0,4790,4775,1,0,0,0,4790,4778,1,0,0,0,
	4790,4782,1,0,0,0,4790,4786,1,0,0,0,4790,4789,1,0,0,0,4791,419,1,0,0,0,
	4792,4793,3,506,253,0,4793,4794,5,157,0,0,4794,4795,3,506,253,0,4795,421,
	1,0,0,0,4796,4798,5,9,0,0,4797,4799,7,63,0,0,4798,4797,1,0,0,0,4798,4799,
	1,0,0,0,4799,4800,1,0,0,0,4800,4801,5,154,0,0,4801,4802,3,558,279,0,4802,
	423,1,0,0,0,4803,4804,5,23,0,0,4804,4805,5,154,0,0,4805,4809,3,558,279,
	0,4806,4808,3,432,216,0,4807,4806,1,0,0,0,4808,4811,1,0,0,0,4809,4807,1,
	0,0,0,4809,4810,1,0,0,0,4810,425,1,0,0,0,4811,4809,1,0,0,0,4812,4813,5,
	294,0,0,4813,4814,5,154,0,0,4814,4816,3,558,279,0,4815,4817,7,64,0,0,4816,
	4815,1,0,0,0,4816,4817,1,0,0,0,4817,427,1,0,0,0,4818,4820,5,107,0,0,4819,
	4821,7,63,0,0,4820,4819,1,0,0,0,4820,4821,1,0,0,0,4821,4822,1,0,0,0,4822,
	4823,5,154,0,0,4823,4824,3,558,279,0,4824,429,1,0,0,0,4825,4827,5,494,0,
	0,4826,4828,7,63,0,0,4827,4826,1,0,0,0,4827,4828,1,0,0,0,4828,4829,1,0,
	0,0,4829,4830,5,154,0,0,4830,4832,3,558,279,0,4831,4833,5,483,0,0,4832,
	4831,1,0,0,0,4832,4833,1,0,0,0,4833,4835,1,0,0,0,4834,4836,5,355,0,0,4835,
	4834,1,0,0,0,4835,4836,1,0,0,0,4836,4838,1,0,0,0,4837,4839,5,573,0,0,4838,
	4837,1,0,0,0,4838,4839,1,0,0,0,4839,431,1,0,0,0,4840,4841,5,58,0,0,4841,
	4848,5,571,0,0,4842,4848,5,483,0,0,4843,4848,5,357,0,0,4844,4848,5,432,
	0,0,4845,4848,5,355,0,0,4846,4848,5,292,0,0,4847,4840,1,0,0,0,4847,4842,
	1,0,0,0,4847,4843,1,0,0,0,4847,4844,1,0,0,0,4847,4845,1,0,0,0,4847,4846,
	1,0,0,0,4848,433,1,0,0,0,4849,4851,5,30,0,0,4850,4852,5,273,0,0,4851,4850,
	1,0,0,0,4851,4852,1,0,0,0,4852,4853,1,0,0,0,4853,4854,5,368,0,0,4854,4855,
	3,524,262,0,4855,4856,5,506,0,0,4856,4857,7,65,0,0,4857,4858,5,528,0,0,
	4858,4859,5,1035,0,0,4859,435,1,0,0,0,4860,4861,5,385,0,0,4861,4862,5,470,
	0,0,4862,4863,3,524,262,0,4863,4864,5,528,0,0,4864,4865,5,1035,0,0,4865,
	437,1,0,0,0,4866,4867,5,568,0,0,4867,4868,5,470,0,0,4868,4869,3,524,262,
	0,4869,439,1,0,0,0,4870,4871,5,138,0,0,4871,4872,3,444,222,0,4872,4873,
	7,66,0,0,4873,4881,3,602,301,0,4874,4875,5,1022,0,0,4875,4876,3,444,222,
	0,4876,4877,7,66,0,0,4877,4878,3,602,301,0,4878,4880,1,0,0,0,4879,4874,
	1,0,0,0,4880,4883,1,0,0,0,4881,4879,1,0,0,0,4881,4882,1,0,0,0,4882,4922,
	1,0,0,0,4883,4881,1,0,0,0,4884,4888,5,138,0,0,4885,4886,5,22,0,0,4886,4889,
	5,138,0,0,4887,4889,5,731,0,0,4888,4885,1,0,0,0,4888,4887,1,0,0,0,4889,
	4892,1,0,0,0,4890,4893,3,510,255,0,4891,4893,5,38,0,0,4892,4890,1,0,0,0,
	4892,4891,1,0,0,0,4893,4922,1,0,0,0,4894,4895,5,138,0,0,4895,4902,5,444,
	0,0,4896,4899,3,510,255,0,4897,4898,5,24,0,0,4898,4900,3,512,256,0,4899,
	4897,1,0,0,0,4899,4900,1,0,0,0,4900,4903,1,0,0,0,4901,4903,5,38,0,0,4902,
	4896,1,0,0,0,4902,4901,1,0,0,0,4903,4922,1,0,0,0,4904,4922,3,400,200,0,
	4905,4922,3,276,138,0,4906,4922,3,274,137,0,4907,4908,5,138,0,0,4908,4909,
	3,498,249,0,4909,4910,7,66,0,0,4910,4918,3,602,301,0,4911,4912,5,1022,0,
	0,4912,4913,3,498,249,0,4913,4914,7,66,0,0,4914,4915,3,602,301,0,4915,4917,
	1,0,0,0,4916,4911,1,0,0,0,4917,4920,1,0,0,0,4918,4916,1,0,0,0,4918,4919,
	1,0,0,0,4919,4922,1,0,0,0,4920,4918,1,0,0,0,4921,4870,1,0,0,0,4921,4884,
	1,0,0,0,4921,4894,1,0,0,0,4921,4904,1,0,0,0,4921,4905,1,0,0,0,4921,4906,
	1,0,0,0,4921,4907,1,0,0,0,4922,441,1,0,0,0,4923,4924,5,140,0,0,4924,4925,
	7,49,0,0,4925,5075,5,404,0,0,4926,4927,5,140,0,0,4927,4928,7,67,0,0,4928,
	4931,5,349,0,0,4929,4930,5,71,0,0,4930,4932,5,1035,0,0,4931,4929,1,0,0,
	0,4931,4932,1,0,0,0,4932,4935,1,0,0,0,4933,4934,5,61,0,0,4934,4936,3,530,
	265,0,4935,4933,1,0,0,0,4935,4936,1,0,0,0,4936,4944,1,0,0,0,4937,4941,5,
	89,0,0,4938,4939,3,530,265,0,4939,4940,5,1022,0,0,4940,4942,1,0,0,0,4941,
	4938,1,0,0,0,4941,4942,1,0,0,0,4942,4943,1,0,0,0,4943,4945,3,530,265,0,
	4944,4937,1,0,0,0,4944,4945,1,0,0,0,4945,5075,1,0,0,0,4946,4947,5,140,0,
	0,4947,4949,3,446,223,0,4948,4950,3,448,224,0,4949,4948,1,0,0,0,4949,4950,
	1,0,0,0,4950,5075,1,0,0,0,4951,4953,5,140,0,0,4952,4954,5,367,0,0,4953,
	4952,1,0,0,0,4953,4954,1,0,0,0,4954,4955,1,0,0,0,4955,4956,7,35,0,0,4956,
	4957,7,68,0,0,4957,4960,3,500,250,0,4958,4959,7,68,0,0,4959,4961,3,524,
	262,0,4960,4958,1,0,0,0,4960,4961,1,0,0,0,4961,4963,1,0,0,0,4962,4964,3,
	448,224,0,4963,4962,1,0,0,0,4963,4964,1,0,0,0,4964,5075,1,0,0,0,4965,4966,
	5,140,0,0,4966,4967,5,30,0,0,4967,4969,7,0,0,0,4968,4970,3,580,290,0,4969,
	4968,1,0,0,0,4969,4970,1,0,0,0,4970,4971,1,0,0,0,4971,5075,3,524,262,0,
	4972,4973,5,140,0,0,4973,4974,5,30,0,0,4974,4975,7,69,0,0,4975,5075,3,498,
	249,0,4976,4977,5,140,0,0,4977,4978,5,30,0,0,4978,4979,5,572,0,0,4979,5075,
	3,506,253,0,4980,4981,5,140,0,0,4981,4982,5,342,0,0,4982,4983,3,514,257,
	0,4983,4984,7,70,0,0,4984,5075,1,0,0,0,4985,4986,5,140,0,0,4986,5075,3,
	450,225,0,4987,4988,5,140,0,0,4988,4989,7,71,0,0,4989,4993,5,89,0,0,4990,
	4991,3,530,265,0,4991,4992,5,1022,0,0,4992,4994,1,0,0,0,4993,4990,1,0,0,
	0,4993,4994,1,0,0,0,4994,4995,1,0,0,0,4995,5075,3,530,265,0,4996,4997,5,
	140,0,0,4997,4998,5,239,0,0,4998,4999,5,1020,0,0,4999,5000,5,1003,0,0,5000,
	5001,5,1021,0,0,5001,5075,7,71,0,0,5002,5003,5,140,0,0,5003,5006,3,452,
	226,0,5004,5005,7,68,0,0,5005,5007,3,524,262,0,5006,5004,1,0,0,0,5006,5007,
	1,0,0,0,5007,5009,1,0,0,0,5008,5010,3,448,224,0,5009,5008,1,0,0,0,5009,
	5010,1,0,0,0,5010,5075,1,0,0,0,5011,5012,5,140,0,0,5012,5013,7,72,0,0,5013,
	5014,5,301,0,0,5014,5075,3,498,249,0,5015,5016,5,140,0,0,5016,5019,5,371,
	0,0,5017,5018,5,58,0,0,5018,5020,3,506,253,0,5019,5017,1,0,0,0,5019,5020,
	1,0,0,0,5020,5075,1,0,0,0,5021,5022,5,140,0,0,5022,5023,7,73,0,0,5023,5024,
	7,68,0,0,5024,5027,3,500,250,0,5025,5026,7,68,0,0,5026,5028,3,524,262,0,
	5027,5025,1,0,0,0,5027,5028,1,0,0,0,5028,5031,1,0,0,0,5029,5030,5,172,0,
	0,5030,5032,3,602,301,0,5031,5029,1,0,0,0,5031,5032,1,0,0,0,5032,5075,1,
	0,0,0,5033,5034,5,140,0,0,5034,5035,5,458,0,0,5035,5038,5,602,0,0,5036,
	5037,7,68,0,0,5037,5039,3,524,262,0,5038,5036,1,0,0,0,5038,5039,1,0,0,0,
	5039,5041,1,0,0,0,5040,5042,3,448,224,0,5041,5040,1,0,0,0,5041,5042,1,0,
	0,0,5042,5075,1,0,0,0,5043,5044,5,140,0,0,5044,5045,5,479,0,0,5045,5050,
	3,454,227,0,5046,5047,5,1022,0,0,5047,5049,3,454,227,0,5048,5046,1,0,0,
	0,5049,5052,1,0,0,0,5050,5048,1,0,0,0,5050,5051,1,0,0,0,5051,5056,1,0,0,
	0,5052,5050,1,0,0,0,5053,5054,5,58,0,0,5054,5055,5,482,0,0,5055,5057,3,
	530,265,0,5056,5053,1,0,0,0,5056,5057,1,0,0,0,5057,5058,1,0,0,0,5058,5062,
	5,89,0,0,5059,5060,3,530,265,0,5060,5061,5,1022,0,0,5061,5063,1,0,0,0,5062,
	5059,1,0,0,0,5062,5063,1,0,0,0,5063,5064,1,0,0,0,5064,5065,3,530,265,0,
	5065,5075,1,0,0,0,5066,5067,5,140,0,0,5067,5068,5,523,0,0,5068,5072,5,543,
	0,0,5069,5070,5,58,0,0,5070,5071,5,293,0,0,5071,5073,5,1035,0,0,5072,5069,
	1,0,0,0,5072,5073,1,0,0,0,5073,5075,1,0,0,0,5074,4923,1,0,0,0,5074,4926,
	1,0,0,0,5074,4946,1,0,0,0,5074,4951,1,0,0,0,5074,4965,1,0,0,0,5074,4972,
	1,0,0,0,5074,4976,1,0,0,0,5074,4980,1,0,0,0,5074,4985,1,0,0,0,5074,4987,
	1,0,0,0,5074,4996,1,0,0,0,5074,5002,1,0,0,0,5074,5011,1,0,0,0,5074,5015,
	1,0,0,0,5074,5021,1,0,0,0,5074,5033,1,0,0,0,5074,5043,1,0,0,0,5074,5066,
	1,0,0,0,5075,443,1,0,0,0,5076,5087,5,1046,0,0,5077,5087,5,1047,0,0,5078,
	5079,5,1024,0,0,5079,5081,5,1024,0,0,5080,5078,1,0,0,0,5080,5081,1,0,0,
	0,5081,5082,1,0,0,0,5082,5084,7,74,0,0,5083,5080,1,0,0,0,5083,5084,1,0,
	0,0,5084,5085,1,0,0,0,5085,5087,3,524,262,0,5086,5076,1,0,0,0,5086,5077,
	1,0,0,0,5086,5083,1,0,0,0,5087,445,1,0,0,0,5088,5089,5,22,0,0,5089,5102,
	5,138,0,0,5090,5102,5,734,0,0,5091,5102,5,36,0,0,5092,5102,5,136,0,0,5093,
	5094,5,368,0,0,5094,5102,5,543,0,0,5095,5096,5,117,0,0,5096,5102,5,543,
	0,0,5097,5099,7,48,0,0,5098,5097,1,0,0,0,5098,5099,1,0,0,0,5099,5100,1,
	0,0,0,5100,5102,7,75,0,0,5101,5088,1,0,0,0,5101,5090,1,0,0,0,5101,5091,
	1,0,0,0,5101,5092,1,0,0,0,5101,5093,1,0,0,0,5101,5095,1,0,0,0,5101,5098,
	1,0,0,0,5102,447,1,0,0,0,5103,5104,5,88,0,0,5104,5108,5,1035,0,0,5105,5106,
	5,172,0,0,5106,5108,3,602,301,0,5107,5103,1,0,0,0,5107,5105,1,0,0,0,5108,
	449,1,0,0,0,5109,5111,5,545,0,0,5110,5109,1,0,0,0,5110,5111,1,0,0,0,5111,
	5112,1,0,0,0,5112,5127,5,343,0,0,5113,5114,5,405,0,0,5114,5127,5,543,0,
	0,5115,5127,5,472,0,0,5116,5127,5,610,0,0,5117,5119,5,367,0,0,5118,5117,
	1,0,0,0,5118,5119,1,0,0,0,5119,5120,1,0,0,0,5120,5127,5,478,0,0,5121,5127,
	5,480,0,0,5122,5123,5,523,0,0,5123,5127,5,377,0,0,5124,5127,5,277,0,0,5125,
	5127,5,319,0,0,5126,5110,1,0,0,0,5126,5113,1,0,0,0,5126,5115,1,0,0,0,5126,
	5116,1,0,0,0,5126,5118,1,0,0,0,5126,5121,1,0,0,0,5126,5122,1,0,0,0,5126,
	5124,1,0,0,0,5126,5125,1,0,0,0,5127,451,1,0,0,0,5128,5137,5,349,0,0,5129,
	5130,5,154,0,0,5130,5137,5,543,0,0,5131,5133,5,367,0,0,5132,5131,1,0,0,
	0,5132,5133,1,0,0,0,5133,5134,1,0,0,0,5134,5137,5,602,0,0,5135,5137,5,563,
	0,0,5136,5128,1,0,0,0,5136,5129,1,0,0,0,5136,5132,1,0,0,0,5136,5135,1,0,
	0,0,5137,453,1,0,0,0,5138,5151,5,6,0,0,5139,5140,5,285,0,0,5140,5151,5,
	389,0,0,5141,5142,5,318,0,0,5142,5151,5,554,0,0,5143,5151,5,321,0,0,5144,
	5151,5,391,0,0,5145,5151,5,682,0,0,5146,5147,5,463,0,0,5147,5151,5,358,
	0,0,5148,5151,5,530,0,0,5149,5151,5,553,0,0,5150,5138,1,0,0,0,5150,5139,
	1,0,0,0,5150,5141,1,0,0,0,5150,5143,1,0,0,0,5150,5144,1,0,0,0,5150,5145,
	1,0,0,0,5150,5146,1,0,0,0,5150,5148,1,0,0,0,5150,5149,1,0,0,0,5151,455,
	1,0,0,0,5152,5153,5,283,0,0,5153,5154,5,1035,0,0,5154,457,1,0,0,0,5155,
	5156,5,289,0,0,5156,5157,5,72,0,0,5157,5162,3,470,235,0,5158,5159,5,1022,
	0,0,5159,5161,3,470,235,0,5160,5158,1,0,0,0,5161,5164,1,0,0,0,5162,5160,
	1,0,0,0,5162,5163,1,0,0,0,5163,5172,1,0,0,0,5164,5162,1,0,0,0,5165,5166,
	5,115,0,0,5166,5169,5,1020,0,0,5167,5170,3,556,278,0,5168,5170,5,6,0,0,
	5169,5167,1,0,0,0,5169,5168,1,0,0,0,5170,5171,1,0,0,0,5171,5173,5,1021,
	0,0,5172,5165,1,0,0,0,5172,5173,1,0,0,0,5173,5174,1,0,0,0,5174,5175,5,71,
	0,0,5175,5176,3,524,262,0,5176,459,1,0,0,0,5177,5179,5,364,0,0,5178,5180,
	7,63,0,0,5179,5178,1,0,0,0,5179,5180,1,0,0,0,5180,5181,1,0,0,0,5181,5186,
	3,472,236,0,5182,5183,5,1022,0,0,5183,5185,3,472,236,0,5184,5182,1,0,0,
	0,5185,5188,1,0,0,0,5186,5184,1,0,0,0,5186,5187,1,0,0,0,5187,461,1,0,0,
	0,5188,5186,1,0,0,0,5189,5191,5,84,0,0,5190,5192,7,76,0,0,5191,5190,1,0,
	0,0,5191,5192,1,0,0,0,5192,5194,1,0,0,0,5193,5195,3,530,265,0,5194,5193,
	1,0,0,0,5195,5196,1,0,0,0,5196,5194,1,0,0,0,5196,5197,1,0,0,0,5197,463,
	1,0,0,0,5198,5199,5,92,0,0,5199,5200,5,72,0,0,5200,5201,5,78,0,0,5201,5202,
	5,289,0,0,5202,5207,3,476,238,0,5203,5204,5,1022,0,0,5204,5206,3,476,238,
	0,5205,5203,1,0,0,0,5206,5209,1,0,0,0,5207,5205,1,0,0,0,5207,5208,1,0,0,
	0,5208,465,1,0,0,0,5209,5207,1,0,0,0,5210,5211,5,503,0,0,5211,5212,5,482,
	0,0,5212,5213,5,289,0,0,5213,467,1,0,0,0,5214,5215,5,608,0,0,5215,469,1,
	0,0,0,5216,5224,3,500,250,0,5217,5219,7,18,0,0,5218,5217,1,0,0,0,5218,5219,
	1,0,0,0,5219,5220,1,0,0,0,5220,5221,5,1020,0,0,5221,5222,3,556,278,0,5222,
	5223,5,1021,0,0,5223,5225,1,0,0,0,5224,5218,1,0,0,0,5224,5225,1,0,0,0,5225,
	471,1,0,0,0,5226,5245,5,329,0,0,5227,5245,5,377,0,0,5228,5230,7,77,0,0,
	5229,5228,1,0,0,0,5229,5230,1,0,0,0,5230,5231,1,0,0,0,5231,5245,5,404,0,
	0,5232,5245,5,459,0,0,5233,5245,5,610,0,0,5234,5235,5,482,0,0,5235,5245,
	5,289,0,0,5236,5245,5,543,0,0,5237,5245,5,574,0,0,5238,5242,5,602,0,0,5239,
	5240,5,174,0,0,5240,5241,5,120,0,0,5241,5243,5,93,0,0,5242,5239,1,0,0,0,
	5242,5243,1,0,0,0,5243,5245,1,0,0,0,5244,5226,1,0,0,0,5244,5227,1,0,0,0,
	5244,5229,1,0,0,0,5244,5232,1,0,0,0,5244,5233,1,0,0,0,5244,5234,1,0,0,0,
	5244,5236,1,0,0,0,5244,5237,1,0,0,0,5244,5238,1,0,0,0,5245,5257,1,0,0,0,
	5246,5247,5,488,0,0,5247,5249,5,404,0,0,5248,5250,3,314,157,0,5249,5248,
	1,0,0,0,5249,5250,1,0,0,0,5250,5257,1,0,0,0,5251,5252,5,602,0,0,5252,5254,
	3,558,279,0,5253,5255,3,474,237,0,5254,5253,1,0,0,0,5254,5255,1,0,0,0,5255,
	5257,1,0,0,0,5256,5244,1,0,0,0,5256,5246,1,0,0,0,5256,5251,1,0,0,0,5257,
	473,1,0,0,0,5258,5259,5,174,0,0,5259,5260,5,120,0,0,5260,5264,5,93,0,0,
	5261,5262,5,58,0,0,5262,5264,5,354,0,0,5263,5258,1,0,0,0,5263,5261,1,0,
	0,0,5264,475,1,0,0,0,5265,5273,3,500,250,0,5266,5267,5,115,0,0,5267,5270,
	5,1020,0,0,5268,5271,3,556,278,0,5269,5271,5,6,0,0,5270,5268,1,0,0,0,5270,
	5269,1,0,0,0,5271,5272,1,0,0,0,5272,5274,5,1021,0,0,5273,5266,1,0,0,0,5273,
	5274,1,0,0,0,5274,5282,1,0,0,0,5275,5277,7,18,0,0,5276,5275,1,0,0,0,5276,
	5277,1,0,0,0,5277,5278,1,0,0,0,5278,5279,5,1020,0,0,5279,5280,3,556,278,
	0,5280,5281,5,1021,0,0,5281,5283,1,0,0,0,5282,5276,1,0,0,0,5282,5283,1,
	0,0,0,5283,5286,1,0,0,0,5284,5285,5,70,0,0,5285,5287,5,398,0,0,5286,5284,
	1,0,0,0,5286,5287,1,0,0,0,5287,477,1,0,0,0,5288,5289,7,78,0,0,5289,5292,
	3,500,250,0,5290,5293,3,524,262,0,5291,5293,5,1035,0,0,5292,5290,1,0,0,
	0,5292,5291,1,0,0,0,5292,5293,1,0,0,0,5293,479,1,0,0,0,5294,5298,7,78,0,
	0,5295,5296,7,79,0,0,5296,5297,5,1011,0,0,5297,5299,7,80,0,0,5298,5295,
	1,0,0,0,5298,5299,1,0,0,0,5299,5300,1,0,0,0,5300,5301,3,496,248,0,5301,
	481,1,0,0,0,5302,5303,5,375,0,0,5303,5304,5,1035,0,0,5304,483,1,0,0,0,5305,
	5306,5,168,0,0,5306,5307,3,524,262,0,5307,485,1,0,0,0,5308,5316,5,141,0,
	0,5309,5311,5,145,0,0,5310,5312,5,576,0,0,5311,5310,1,0,0,0,5311,5312,1,
	0,0,0,5312,5313,1,0,0,0,5313,5317,3,534,267,0,5314,5317,5,1043,0,0,5315,
	5317,5,1044,0,0,5316,5309,1,0,0,0,5316,5314,1,0,0,0,5316,5315,1,0,0,0,5317,
	5327,1,0,0,0,5318,5319,5,138,0,0,5319,5324,3,490,245,0,5320,5321,5,1022,
	0,0,5321,5323,3,490,245,0,5322,5320,1,0,0,0,5323,5326,1,0,0,0,5324,5322,
	1,0,0,0,5324,5325,1,0,0,0,5325,5328,1,0,0,0,5326,5324,1,0,0,0,5327,5318,
	1,0,0,0,5327,5328,1,0,0,0,5328,487,1,0,0,0,5329,5337,5,129,0,0,5330,5332,
	5,145,0,0,5331,5333,5,576,0,0,5332,5331,1,0,0,0,5332,5333,1,0,0,0,5333,
	5334,1,0,0,0,5334,5338,3,534,267,0,5335,5338,5,1043,0,0,5336,5338,5,1044,
	0,0,5337,5330,1,0,0,0,5337,5335,1,0,0,0,5337,5336,1,0,0,0,5337,5338,1,0,
	0,0,5338,5348,1,0,0,0,5339,5340,5,138,0,0,5340,5345,3,490,245,0,5341,5342,
	5,1022,0,0,5342,5344,3,490,245,0,5343,5341,1,0,0,0,5344,5347,1,0,0,0,5345,
	5343,1,0,0,0,5345,5346,1,0,0,0,5346,5349,1,0,0,0,5347,5345,1,0,0,0,5348,
	5339,1,0,0,0,5348,5349,1,0,0,0,5349,489,1,0,0,0,5350,5351,7,81,0,0,5351,
	5354,5,1011,0,0,5352,5355,3,534,267,0,5353,5355,5,1036,0,0,5354,5352,1,
	0,0,0,5354,5353,1,0,0,0,5355,491,1,0,0,0,5356,5358,5,64,0,0,5357,5359,7,
	82,0,0,5358,5357,1,0,0,0,5358,5359,1,0,0,0,5359,5360,1,0,0,0,5360,5392,
	5,44,0,0,5361,5362,3,444,222,0,5362,5363,5,1011,0,0,5363,5371,7,83,0,0,
	5364,5365,5,1022,0,0,5365,5366,3,444,222,0,5366,5367,5,1011,0,0,5367,5368,
	7,83,0,0,5368,5370,1,0,0,0,5369,5364,1,0,0,0,5370,5373,1,0,0,0,5371,5369,
	1,0,0,0,5371,5372,1,0,0,0,5372,5393,1,0,0,0,5373,5371,1,0,0,0,5374,5377,
	5,26,0,0,5375,5378,3,530,265,0,5376,5378,3,444,222,0,5377,5375,1,0,0,0,
	5377,5376,1,0,0,0,5378,5379,1,0,0,0,5379,5380,3,444,222,0,5380,5381,5,1011,
	0,0,5381,5389,3,494,247,0,5382,5383,5,1022,0,0,5383,5384,3,444,222,0,5384,
	5385,5,1011,0,0,5385,5386,3,494,247,0,5386,5388,1,0,0,0,5387,5382,1,0,0,
	0,5388,5391,1,0,0,0,5389,5387,1,0,0,0,5389,5390,1,0,0,0,5390,5393,1,0,0,
	0,5391,5389,1,0,0,0,5392,5361,1,0,0,0,5392,5374,1,0,0,0,5393,493,1,0,0,
	0,5394,5395,7,84,0,0,5395,495,1,0,0,0,5396,5402,3,180,90,0,5397,5402,3,
	166,83,0,5398,5402,3,172,86,0,5399,5402,3,178,89,0,5400,5402,3,182,91,0,
	5401,5396,1,0,0,0,5401,5397,1,0,0,0,5401,5398,1,0,0,0,5401,5399,1,0,0,0,
	5401,5400,1,0,0,0,5402,5407,1,0,0,0,5403,5404,5,58,0,0,5404,5405,5,312,
	0,0,5405,5407,3,524,262,0,5406,5401,1,0,0,0,5406,5403,1,0,0,0,5407,497,
	1,0,0,0,5408,5412,3,524,262,0,5409,5413,5,1042,0,0,5410,5411,5,1019,0,0,
	5411,5413,3,524,262,0,5412,5409,1,0,0,0,5412,5410,1,0,0,0,5412,5413,1,0,
	0,0,5413,499,1,0,0,0,5414,5415,3,498,249,0,5415,501,1,0,0,0,5416,5421,3,
	524,262,0,5417,5419,3,528,264,0,5418,5420,3,528,264,0,5419,5418,1,0,0,0,
	5419,5420,1,0,0,0,5420,5422,1,0,0,0,5421,5417,1,0,0,0,5421,5422,1,0,0,0,
	5422,503,1,0,0,0,5423,5426,3,524,262,0,5424,5426,5,1035,0,0,5425,5423,1,
	0,0,0,5425,5424,1,0,0,0,5426,5431,1,0,0,0,5427,5428,5,1020,0,0,5428,5429,
	3,530,265,0,5429,5430,5,1021,0,0,5430,5432,1,0,0,0,5431,5427,1,0,0,0,5431,
	5432,1,0,0,0,5432,5434,1,0,0,0,5433,5435,7,42,0,0,5434,5433,1,0,0,0,5434,
	5435,1,0,0,0,5435,505,1,0,0,0,5436,5437,7,85,0,0,5437,507,1,0,0,0,5438,
	5439,7,86,0,0,5439,509,1,0,0,0,5440,5445,5,208,0,0,5441,5445,3,618,309,
	0,5442,5445,5,1035,0,0,5443,5445,5,1032,0,0,5444,5440,1,0,0,0,5444,5441,
	1,0,0,0,5444,5442,1,0,0,0,5444,5443,1,0,0,0,5445,511,1,0,0,0,5446,5449,
	3,524,262,0,5447,5449,5,1035,0,0,5448,5446,1,0,0,0,5448,5447,1,0,0,0,5449,
	513,1,0,0,0,5450,5451,7,87,0,0,5451,515,1,0,0,0,5452,5453,3,530,265,0,5453,
	5454,5,1008,0,0,5454,5455,3,530,265,0,5455,5456,5,1008,0,0,5456,5457,3,
	530,265,0,5457,5458,5,1008,0,0,5458,5459,3,530,265,0,5459,5460,5,1008,0,
	0,5460,5466,3,530,265,0,5461,5462,5,1031,0,0,5462,5463,3,530,265,0,5463,
	5464,5,1008,0,0,5464,5465,3,530,265,0,5465,5467,1,0,0,0,5466,5461,1,0,0,
	0,5467,5468,1,0,0,0,5468,5466,1,0,0,0,5468,5469,1,0,0,0,5469,517,1,0,0,
	0,5470,5477,3,520,260,0,5471,5472,5,1022,0,0,5472,5475,3,520,260,0,5473,
	5474,5,1022,0,0,5474,5476,3,530,265,0,5475,5473,1,0,0,0,5475,5476,1,0,0,
	0,5476,5478,1,0,0,0,5477,5471,1,0,0,0,5477,5478,1,0,0,0,5478,519,1,0,0,
	0,5479,5487,5,1035,0,0,5480,5487,5,1040,0,0,5481,5483,5,1037,0,0,5482,5481,
	1,0,0,0,5483,5484,1,0,0,0,5484,5482,1,0,0,0,5484,5485,1,0,0,0,5485,5487,
	1,0,0,0,5486,5479,1,0,0,0,5486,5480,1,0,0,0,5486,5482,1,0,0,0,5487,521,
	1,0,0,0,5488,5491,3,524,262,0,5489,5491,5,1035,0,0,5490,5488,1,0,0,0,5490,
	5489,1,0,0,0,5491,523,1,0,0,0,5492,5496,3,526,263,0,5493,5496,5,1044,0,
	0,5494,5496,5,1032,0,0,5495,5492,1,0,0,0,5495,5493,1,0,0,0,5495,5494,1,
	0,0,0,5496,525,1,0,0,0,5497,5507,5,1043,0,0,5498,5507,3,618,309,0,5499,
	5507,3,620,310,0,5500,5507,3,514,257,0,5501,5507,3,622,311,0,5502,5507,
	3,624,312,0,5503,5507,3,626,313,0,5504,5507,3,628,314,0,5505,5507,3,630,
	315,0,5506,5497,1,0,0,0,5506,5498,1,0,0,0,5506,5499,1,0,0,0,5506,5500,1,
	0,0,0,5506,5501,1,0,0,0,5506,5502,1,0,0,0,5506,5503,1,0,0,0,5506,5504,1,
	0,0,0,5506,5505,1,0,0,0,5507,527,1,0,0,0,5508,5512,5,1042,0,0,5509,5510,
	5,1019,0,0,5510,5512,3,524,262,0,5511,5508,1,0,0,0,5511,5509,1,0,0,0,5512,
	529,1,0,0,0,5513,5514,7,88,0,0,5514,531,1,0,0,0,5515,5518,5,1033,0,0,5516,
	5518,3,530,265,0,5517,5515,1,0,0,0,5517,5516,1,0,0,0,5518,533,1,0,0,0,5519,
	5521,5,1041,0,0,5520,5519,1,0,0,0,5520,5521,1,0,0,0,5521,5522,1,0,0,0,5522,
	5525,5,1035,0,0,5523,5525,5,1034,0,0,5524,5520,1,0,0,0,5524,5523,1,0,0,
	0,5525,5527,1,0,0,0,5526,5528,5,1035,0,0,5527,5526,1,0,0,0,5528,5529,1,
	0,0,0,5529,5527,1,0,0,0,5529,5530,1,0,0,0,5530,5543,1,0,0,0,5531,5533,5,
	1041,0,0,5532,5531,1,0,0,0,5532,5533,1,0,0,0,5533,5534,1,0,0,0,5534,5537,
	5,1035,0,0,5535,5537,5,1034,0,0,5536,5532,1,0,0,0,5536,5535,1,0,0,0,5537,
	5540,1,0,0,0,5538,5539,5,24,0,0,5539,5541,3,512,256,0,5540,5538,1,0,0,0,
	5540,5541,1,0,0,0,5541,5543,1,0,0,0,5542,5524,1,0,0,0,5542,5536,1,0,0,0,
	5543,535,1,0,0,0,5544,5545,7,89,0,0,5545,537,1,0,0,0,5546,5548,5,1041,0,
	0,5547,5546,1,0,0,0,5547,5548,1,0,0,0,5548,5549,1,0,0,0,5549,5550,5,1037,
	0,0,5550,539,1,0,0,0,5551,5553,5,102,0,0,5552,5551,1,0,0,0,5552,5553,1,
	0,0,0,5553,5554,1,0,0,0,5554,5555,7,90,0,0,5555,541,1,0,0,0,5556,5569,3,
	534,267,0,5557,5569,3,530,265,0,5558,5559,5,1008,0,0,5559,5569,3,530,265,
	0,5560,5569,3,538,269,0,5561,5569,3,536,268,0,5562,5569,5,1038,0,0,5563,
	5569,5,1040,0,0,5564,5566,5,102,0,0,5565,5564,1,0,0,0,5565,5566,1,0,0,0,
	5566,5567,1,0,0,0,5567,5569,7,90,0,0,5568,5556,1,0,0,0,5568,5557,1,0,0,
	0,5568,5558,1,0,0,0,5568,5560,1,0,0,0,5568,5561,1,0,0,0,5568,5562,1,0,0,
	0,5568,5563,1,0,0,0,5568,5565,1,0,0,0,5569,543,1,0,0,0,5570,5572,7,91,0,
	0,5571,5573,3,550,275,0,5572,5571,1,0,0,0,5572,5573,1,0,0,0,5573,5575,1,
	0,0,0,5574,5576,5,208,0,0,5575,5574,1,0,0,0,5575,5576,1,0,0,0,5576,5583,
	1,0,0,0,5577,5578,5,22,0,0,5578,5581,5,138,0,0,5579,5581,5,731,0,0,5580,
	5577,1,0,0,0,5580,5579,1,0,0,0,5581,5582,1,0,0,0,5582,5584,3,510,255,0,
	5583,5580,1,0,0,0,5583,5584,1,0,0,0,5584,5587,1,0,0,0,5585,5586,5,24,0,
	0,5586,5588,3,512,256,0,5587,5585,1,0,0,0,5587,5588,1,0,0,0,5588,5698,1,
	0,0,0,5589,5590,5,207,0,0,5590,5592,7,92,0,0,5591,5593,3,550,275,0,5592,
	5591,1,0,0,0,5592,5593,1,0,0,0,5593,5595,1,0,0,0,5594,5596,5,208,0,0,5595,
	5594,1,0,0,0,5595,5596,1,0,0,0,5596,5698,1,0,0,0,5597,5598,5,445,0,0,5598,
	5600,5,205,0,0,5599,5601,3,550,275,0,5600,5599,1,0,0,0,5600,5601,1,0,0,
	0,5601,5603,1,0,0,0,5602,5604,5,208,0,0,5603,5602,1,0,0,0,5603,5604,1,0,
	0,0,5604,5698,1,0,0,0,5605,5606,5,207,0,0,5606,5607,7,93,0,0,5607,5609,
	5,220,0,0,5608,5610,3,550,275,0,5609,5608,1,0,0,0,5609,5610,1,0,0,0,5610,
	5612,1,0,0,0,5611,5613,5,208,0,0,5612,5611,1,0,0,0,5612,5613,1,0,0,0,5613,
	5698,1,0,0,0,5614,5616,7,94,0,0,5615,5617,3,550,275,0,5616,5615,1,0,0,0,
	5616,5617,1,0,0,0,5617,5619,1,0,0,0,5618,5620,7,95,0,0,5619,5618,1,0,0,
	0,5619,5620,1,0,0,0,5620,5622,1,0,0,0,5621,5623,5,177,0,0,5622,5621,1,0,
	0,0,5622,5623,1,0,0,0,5623,5698,1,0,0,0,5624,5626,5,190,0,0,5625,5627,3,
	552,276,0,5626,5625,1,0,0,0,5626,5627,1,0,0,0,5627,5629,1,0,0,0,5628,5630,
	7,95,0,0,5629,5628,1,0,0,0,5629,5630,1,0,0,0,5630,5632,1,0,0,0,5631,5633,
	5,177,0,0,5632,5631,1,0,0,0,5632,5633,1,0,0,0,5633,5698,1,0,0,0,5634,5636,
	5,191,0,0,5635,5637,5,192,0,0,5636,5635,1,0,0,0,5636,5637,1,0,0,0,5637,
	5639,1,0,0,0,5638,5640,3,552,276,0,5639,5638,1,0,0,0,5639,5640,1,0,0,0,
	5640,5642,1,0,0,0,5641,5643,7,95,0,0,5642,5641,1,0,0,0,5642,5643,1,0,0,
	0,5643,5645,1,0,0,0,5644,5646,5,177,0,0,5645,5644,1,0,0,0,5645,5646,1,0,
	0,0,5646,5698,1,0,0,0,5647,5649,7,96,0,0,5648,5650,3,554,277,0,5649,5648,
	1,0,0,0,5649,5650,1,0,0,0,5650,5652,1,0,0,0,5651,5653,7,95,0,0,5652,5651,
	1,0,0,0,5652,5653,1,0,0,0,5653,5655,1,0,0,0,5654,5656,5,177,0,0,5655,5654,
	1,0,0,0,5655,5656,1,0,0,0,5656,5698,1,0,0,0,5657,5698,7,97,0,0,5658,5660,
	7,98,0,0,5659,5661,3,550,275,0,5660,5659,1,0,0,0,5660,5661,1,0,0,0,5661,
	5698,1,0,0,0,5662,5663,7,99,0,0,5663,5665,3,546,273,0,5664,5666,5,208,0,
	0,5665,5664,1,0,0,0,5665,5666,1,0,0,0,5666,5673,1,0,0,0,5667,5668,5,22,
	0,0,5668,5671,5,138,0,0,5669,5671,5,731,0,0,5670,5667,1,0,0,0,5670,5669,
	1,0,0,0,5671,5672,1,0,0,0,5672,5674,3,510,255,0,5673,5670,1,0,0,0,5673,
	5674,1,0,0,0,5674,5698,1,0,0,0,5675,5698,7,100,0,0,5676,5678,5,213,0,0,
	5677,5679,5,205,0,0,5678,5677,1,0,0,0,5678,5679,1,0,0,0,5679,5681,1,0,0,
	0,5680,5682,5,208,0,0,5681,5680,1,0,0,0,5681,5682,1,0,0,0,5682,5689,1,0,
	0,0,5683,5684,5,22,0,0,5684,5687,5,138,0,0,5685,5687,5,731,0,0,5686,5683,
	1,0,0,0,5686,5685,1,0,0,0,5687,5688,1,0,0,0,5688,5690,3,510,255,0,5689,
	5686,1,0,0,0,5689,5690,1,0,0,0,5690,5693,1,0,0,0,5691,5692,5,24,0,0,5692,
	5694,3,512,256,0,5693,5691,1,0,0,0,5693,5694,1,0,0,0,5694,5698,1,0,0,0,
	5695,5696,5,213,0,0,5696,5698,5,209,0,0,5697,5570,1,0,0,0,5697,5589,1,0,
	0,0,5697,5597,1,0,0,0,5697,5605,1,0,0,0,5697,5614,1,0,0,0,5697,5624,1,0,
	0,0,5697,5634,1,0,0,0,5697,5647,1,0,0,0,5697,5657,1,0,0,0,5697,5658,1,0,
	0,0,5697,5662,1,0,0,0,5697,5675,1,0,0,0,5697,5676,1,0,0,0,5697,5695,1,0,
	0,0,5698,545,1,0,0,0,5699,5700,5,1020,0,0,5700,5705,5,1035,0,0,5701,5702,
	5,1022,0,0,5702,5704,5,1035,0,0,5703,5701,1,0,0,0,5704,5707,1,0,0,0,5705,
	5703,1,0,0,0,5705,5706,1,0,0,0,5706,5708,1,0,0,0,5707,5705,1,0,0,0,5708,
	5709,5,1021,0,0,5709,547,1,0,0,0,5710,5712,7,101,0,0,5711,5713,3,550,275,
	0,5712,5711,1,0,0,0,5712,5713,1,0,0,0,5713,5736,1,0,0,0,5714,5716,5,204,
	0,0,5715,5717,3,550,275,0,5716,5715,1,0,0,0,5716,5717,1,0,0,0,5717,5724,
	1,0,0,0,5718,5719,5,22,0,0,5719,5722,5,138,0,0,5720,5722,5,731,0,0,5721,
	5718,1,0,0,0,5721,5720,1,0,0,0,5722,5723,1,0,0,0,5723,5725,3,510,255,0,
	5724,5721,1,0,0,0,5724,5725,1,0,0,0,5725,5736,1,0,0,0,5726,5736,7,102,0,
	0,5727,5729,5,196,0,0,5728,5730,3,552,276,0,5729,5728,1,0,0,0,5729,5730,
	1,0,0,0,5730,5736,1,0,0,0,5731,5733,7,95,0,0,5732,5734,5,188,0,0,5733,5732,
	1,0,0,0,5733,5734,1,0,0,0,5734,5736,1,0,0,0,5735,5710,1,0,0,0,5735,5714,
	1,0,0,0,5735,5726,1,0,0,0,5735,5727,1,0,0,0,5735,5731,1,0,0,0,5736,549,
	1,0,0,0,5737,5738,5,1020,0,0,5738,5739,3,530,265,0,5739,5740,5,1021,0,0,
	5740,551,1,0,0,0,5741,5742,5,1020,0,0,5742,5743,3,530,265,0,5743,5744,5,
	1022,0,0,5744,5745,3,530,265,0,5745,5746,5,1021,0,0,5746,553,1,0,0,0,5747,
	5748,5,1020,0,0,5748,5751,3,530,265,0,5749,5750,5,1022,0,0,5750,5752,3,
	530,265,0,5751,5749,1,0,0,0,5751,5752,1,0,0,0,5752,5753,1,0,0,0,5753,5754,
	5,1021,0,0,5754,555,1,0,0,0,5755,5760,3,524,262,0,5756,5757,5,1022,0,0,
	5757,5759,3,524,262,0,5758,5756,1,0,0,0,5759,5762,1,0,0,0,5760,5758,1,0,
	0,0,5760,5761,1,0,0,0,5761,557,1,0,0,0,5762,5760,1,0,0,0,5763,5768,3,500,
	250,0,5764,5765,5,1022,0,0,5765,5767,3,500,250,0,5766,5764,1,0,0,0,5767,
	5770,1,0,0,0,5768,5766,1,0,0,0,5768,5769,1,0,0,0,5769,559,1,0,0,0,5770,
	5768,1,0,0,0,5771,5772,5,1020,0,0,5772,5777,3,504,252,0,5773,5774,5,1022,
	0,0,5774,5776,3,504,252,0,5775,5773,1,0,0,0,5776,5779,1,0,0,0,5777,5775,
	1,0,0,0,5777,5778,1,0,0,0,5778,5780,1,0,0,0,5779,5777,1,0,0,0,5780,5781,
	5,1021,0,0,5781,561,1,0,0,0,5782,5787,3,602,301,0,5783,5784,5,1022,0,0,
	5784,5786,3,602,301,0,5785,5783,1,0,0,0,5786,5789,1,0,0,0,5787,5785,1,0,
	0,0,5787,5788,1,0,0,0,5788,563,1,0,0,0,5789,5787,1,0,0,0,5790,5795,3,576,
	288,0,5791,5792,5,1022,0,0,5792,5794,3,576,288,0,5793,5791,1,0,0,0,5794,
	5797,1,0,0,0,5795,5793,1,0,0,0,5795,5796,1,0,0,0,5796,565,1,0,0,0,5797,
	5795,1,0,0,0,5798,5803,3,542,271,0,5799,5800,5,1022,0,0,5800,5802,3,542,
	271,0,5801,5799,1,0,0,0,5802,5805,1,0,0,0,5803,5801,1,0,0,0,5803,5804,1,
	0,0,0,5804,567,1,0,0,0,5805,5803,1,0,0,0,5806,5811,5,1035,0,0,5807,5808,
	5,1022,0,0,5808,5810,5,1035,0,0,5809,5807,1,0,0,0,5810,5813,1,0,0,0,5811,
	5809,1,0,0,0,5811,5812,1,0,0,0,5812,569,1,0,0,0,5813,5811,1,0,0,0,5814,
	5819,5,1046,0,0,5815,5816,5,1022,0,0,5816,5818,5,1046,0,0,5817,5815,1,0,
	0,0,5818,5821,1,0,0,0,5819,5817,1,0,0,0,5819,5820,1,0,0,0,5820,571,1,0,
	0,0,5821,5819,1,0,0,0,5822,5834,5,104,0,0,5823,5825,3,608,304,0,5824,5823,
	1,0,0,0,5824,5825,1,0,0,0,5825,5826,1,0,0,0,5826,5834,3,542,271,0,5827,
	5831,3,574,287,0,5828,5829,5,106,0,0,5829,5830,5,166,0,0,5830,5832,3,574,
	287,0,5831,5828,1,0,0,0,5831,5832,1,0,0,0,5832,5834,1,0,0,0,5833,5822,1,
	0,0,0,5833,5824,1,0,0,0,5833,5827,1,0,0,0,5834,573,1,0,0,0,5835,5841,7,
	103,0,0,5836,5838,5,1020,0,0,5837,5839,3,530,265,0,5838,5837,1,0,0,0,5838,
	5839,1,0,0,0,5839,5840,1,0,0,0,5840,5842,5,1021,0,0,5841,5836,1,0,0,0,5841,
	5842,1,0,0,0,5842,5850,1,0,0,0,5843,5844,5,261,0,0,5844,5846,5,1020,0,0,
	5845,5847,3,530,265,0,5846,5845,1,0,0,0,5846,5847,1,0,0,0,5847,5848,1,0,
	0,0,5848,5850,5,1021,0,0,5849,5835,1,0,0,0,5849,5843,1,0,0,0,5850,575,1,
	0,0,0,5851,5854,3,602,301,0,5852,5854,5,38,0,0,5853,5851,1,0,0,0,5853,5852,
	1,0,0,0,5854,577,1,0,0,0,5855,5856,5,69,0,0,5856,5857,5,53,0,0,5857,579,
	1,0,0,0,5858,5859,5,69,0,0,5859,5860,5,102,0,0,5860,5861,5,53,0,0,5861,
	581,1,0,0,0,5862,5880,3,584,292,0,5863,5880,3,592,296,0,5864,5865,3,594,
	297,0,5865,5867,5,1020,0,0,5866,5868,3,598,299,0,5867,5866,1,0,0,0,5867,
	5868,1,0,0,0,5868,5869,1,0,0,0,5869,5870,5,1021,0,0,5870,5880,1,0,0,0,5871,
	5872,3,498,249,0,5872,5874,5,1020,0,0,5873,5875,3,598,299,0,5874,5873,1,
	0,0,0,5874,5875,1,0,0,0,5875,5876,1,0,0,0,5876,5877,5,1021,0,0,5877,5880,
	1,0,0,0,5878,5880,3,596,298,0,5879,5862,1,0,0,0,5879,5863,1,0,0,0,5879,
	5864,1,0,0,0,5879,5871,1,0,0,0,5879,5878,1,0,0,0,5880,583,1,0,0,0,5881,
	6039,7,104,0,0,5882,5883,5,29,0,0,5883,5884,5,1020,0,0,5884,5885,3,602,
	301,0,5885,5886,5,1022,0,0,5886,5887,3,548,274,0,5887,5888,5,1021,0,0,5888,
	6039,1,0,0,0,5889,5890,5,29,0,0,5890,5891,5,1020,0,0,5891,5892,3,602,301,
	0,5892,5893,5,169,0,0,5893,5894,3,510,255,0,5894,5895,5,1021,0,0,5895,6039,
	1,0,0,0,5896,5897,5,20,0,0,5897,5898,5,1020,0,0,5898,5899,3,602,301,0,5899,
	5900,5,11,0,0,5900,5901,3,548,274,0,5901,5902,5,1021,0,0,5902,6039,1,0,
	0,0,5903,5904,5,170,0,0,5904,5905,5,1020,0,0,5905,5906,3,502,251,0,5906,
	5907,5,1021,0,0,5907,6039,1,0,0,0,5908,5909,5,19,0,0,5909,5911,3,602,301,
	0,5910,5912,3,586,293,0,5911,5910,1,0,0,0,5912,5913,1,0,0,0,5913,5911,1,
	0,0,0,5913,5914,1,0,0,0,5914,5917,1,0,0,0,5915,5916,5,49,0,0,5916,5918,
	3,600,300,0,5917,5915,1,0,0,0,5917,5918,1,0,0,0,5918,5919,1,0,0,0,5919,
	5920,5,340,0,0,5920,6039,1,0,0,0,5921,5923,5,19,0,0,5922,5924,3,586,293,
	0,5923,5922,1,0,0,0,5924,5925,1,0,0,0,5925,5923,1,0,0,0,5925,5926,1,0,0,
	0,5926,5929,1,0,0,0,5927,5928,5,49,0,0,5928,5930,3,600,300,0,5929,5927,
	1,0,0,0,5929,5930,1,0,0,0,5930,5931,1,0,0,0,5931,5932,5,340,0,0,5932,6039,
	1,0,0,0,5933,5934,5,204,0,0,5934,5935,5,1020,0,0,5935,5938,3,598,299,0,
	5936,5937,5,169,0,0,5937,5939,3,510,255,0,5938,5936,1,0,0,0,5938,5939,1,
	0,0,0,5939,5940,1,0,0,0,5940,5941,5,1021,0,0,5941,6039,1,0,0,0,5942,5943,
	5,262,0,0,5943,5946,5,1020,0,0,5944,5947,3,534,267,0,5945,5947,3,602,301,
	0,5946,5944,1,0,0,0,5946,5945,1,0,0,0,5947,5948,1,0,0,0,5948,5951,5,71,
	0,0,5949,5952,3,534,267,0,5950,5952,3,602,301,0,5951,5949,1,0,0,0,5951,
	5950,1,0,0,0,5952,5953,1,0,0,0,5953,5954,5,1021,0,0,5954,6039,1,0,0,0,5955,
	5956,7,105,0,0,5956,5959,5,1020,0,0,5957,5960,3,534,267,0,5958,5960,3,602,
	301,0,5959,5957,1,0,0,0,5959,5958,1,0,0,0,5960,5961,1,0,0,0,5961,5964,5,
	61,0,0,5962,5965,3,530,265,0,5963,5965,3,602,301,0,5964,5962,1,0,0,0,5964,
	5963,1,0,0,0,5965,5971,1,0,0,0,5966,5969,5,58,0,0,5967,5970,3,530,265,0,
	5968,5970,3,602,301,0,5969,5967,1,0,0,0,5969,5968,1,0,0,0,5970,5972,1,0,
	0,0,5971,5966,1,0,0,0,5971,5972,1,0,0,0,5972,5973,1,0,0,0,5973,5974,5,1021,
	0,0,5974,6039,1,0,0,0,5975,5976,5,266,0,0,5976,5977,5,1020,0,0,5977,5980,
	7,106,0,0,5978,5981,3,534,267,0,5979,5981,3,602,301,0,5980,5978,1,0,0,0,
	5980,5979,1,0,0,0,5980,5981,1,0,0,0,5981,5982,1,0,0,0,5982,5985,5,61,0,
	0,5983,5986,3,534,267,0,5984,5986,3,602,301,0,5985,5983,1,0,0,0,5985,5984,
	1,0,0,0,5986,5987,1,0,0,0,5987,5988,5,1021,0,0,5988,6039,1,0,0,0,5989,5990,
	5,266,0,0,5990,5993,5,1020,0,0,5991,5994,3,534,267,0,5992,5994,3,602,301,
	0,5993,5991,1,0,0,0,5993,5992,1,0,0,0,5994,5995,1,0,0,0,5995,5998,5,61,
	0,0,5996,5999,3,534,267,0,5997,5999,3,602,301,0,5998,5996,1,0,0,0,5998,
	5997,1,0,0,0,5999,6000,1,0,0,0,6000,6001,5,1021,0,0,6001,6039,1,0,0,0,6002,
	6003,5,989,0,0,6003,6006,5,1020,0,0,6004,6007,3,534,267,0,6005,6007,3,602,
	301,0,6006,6004,1,0,0,0,6006,6005,1,0,0,0,6007,6014,1,0,0,0,6008,6009,5,
	11,0,0,6009,6010,7,107,0,0,6010,6011,5,1020,0,0,6011,6012,3,530,265,0,6012,
	6013,5,1021,0,0,6013,6015,1,0,0,0,6014,6008,1,0,0,0,6014,6015,1,0,0,0,6015,
	6017,1,0,0,0,6016,6018,3,588,294,0,6017,6016,1,0,0,0,6017,6018,1,0,0,0,
	6018,6019,1,0,0,0,6019,6020,5,1021,0,0,6020,6039,1,0,0,0,6021,6022,5,259,
	0,0,6022,6023,5,1020,0,0,6023,6024,3,60,30,0,6024,6027,5,61,0,0,6025,6028,
	3,534,267,0,6026,6028,3,602,301,0,6027,6025,1,0,0,0,6027,6026,1,0,0,0,6028,
	6029,1,0,0,0,6029,6030,5,1021,0,0,6030,6039,1,0,0,0,6031,6032,5,789,0,0,
	6032,6033,5,1020,0,0,6033,6034,7,108,0,0,6034,6035,5,1022,0,0,6035,6036,
	3,534,267,0,6036,6037,5,1021,0,0,6037,6039,1,0,0,0,6038,5881,1,0,0,0,6038,
	5882,1,0,0,0,6038,5889,1,0,0,0,6038,5896,1,0,0,0,6038,5903,1,0,0,0,6038,
	5908,1,0,0,0,6038,5921,1,0,0,0,6038,5933,1,0,0,0,6038,5942,1,0,0,0,6038,
	5955,1,0,0,0,6038,5975,1,0,0,0,6038,5989,1,0,0,0,6038,6002,1,0,0,0,6038,
	6021,1,0,0,0,6038,6031,1,0,0,0,6039,585,1,0,0,0,6040,6041,5,171,0,0,6041,
	6042,3,600,300,0,6042,6043,5,156,0,0,6043,6044,3,600,300,0,6044,587,1,0,
	0,0,6045,6046,5,400,0,0,6046,6051,3,590,295,0,6047,6048,5,1022,0,0,6048,
	6050,3,590,295,0,6049,6047,1,0,0,0,6050,6053,1,0,0,0,6051,6049,1,0,0,0,
	6051,6052,1,0,0,0,6052,6060,1,0,0,0,6053,6051,1,0,0,0,6054,6055,5,400,0,
	0,6055,6056,3,530,265,0,6056,6057,5,1008,0,0,6057,6058,3,530,265,0,6058,
	6060,1,0,0,0,6059,6045,1,0,0,0,6059,6054,1,0,0,0,6060,589,1,0,0,0,6061,
	6063,3,530,265,0,6062,6064,7,109,0,0,6063,6062,1,0,0,0,6063,6064,1,0,0,
	0,6064,591,1,0,0,0,6065,6066,7,110,0,0,6066,6068,5,1020,0,0,6067,6069,7,
	38,0,0,6068,6067,1,0,0,0,6068,6069,1,0,0,0,6069,6070,1,0,0,0,6070,6071,
	3,600,300,0,6071,6072,5,1021,0,0,6072,6122,1,0,0,0,6073,6074,5,239,0,0,
	6074,6080,5,1020,0,0,6075,6081,5,1003,0,0,6076,6078,5,6,0,0,6077,6076,1,
	0,0,0,6077,6078,1,0,0,0,6078,6079,1,0,0,0,6079,6081,3,600,300,0,6080,6075,
	1,0,0,0,6080,6077,1,0,0,0,6081,6082,1,0,0,0,6082,6122,5,1021,0,0,6083,6084,
	5,239,0,0,6084,6085,5,1020,0,0,6085,6086,5,45,0,0,6086,6087,3,598,299,0,
	6087,6088,5,1021,0,0,6088,6122,1,0,0,0,6089,6090,7,111,0,0,6090,6092,5,
	1020,0,0,6091,6093,5,6,0,0,6092,6091,1,0,0,0,6092,6093,1,0,0,0,6093,6094,
	1,0,0,0,6094,6095,3,600,300,0,6095,6096,5,1021,0,0,6096,6122,1,0,0,0,6097,
	6098,5,240,0,0,6098,6100,5,1020,0,0,6099,6101,5,45,0,0,6100,6099,1,0,0,
	0,6100,6101,1,0,0,0,6101,6102,1,0,0,0,6102,6113,3,598,299,0,6103,6104,5,
	111,0,0,6104,6105,5,16,0,0,6105,6110,3,210,105,0,6106,6107,5,1022,0,0,6107,
	6109,3,210,105,0,6108,6106,1,0,0,0,6109,6112,1,0,0,0,6110,6108,1,0,0,0,
	6110,6111,1,0,0,0,6111,6114,1,0,0,0,6112,6110,1,0,0,0,6113,6103,1,0,0,0,
	6113,6114,1,0,0,0,6114,6117,1,0,0,0,6115,6116,5,139,0,0,6116,6118,5,1035,
	0,0,6117,6115,1,0,0,0,6117,6118,1,0,0,0,6118,6119,1,0,0,0,6119,6120,5,1021,
	0,0,6120,6122,1,0,0,0,6121,6065,1,0,0,0,6121,6073,1,0,0,0,6121,6083,1,0,
	0,0,6121,6089,1,0,0,0,6121,6097,1,0,0,0,6122,593,1,0,0,0,6123,6147,3,630,
	315,0,6124,6147,5,638,0,0,6125,6147,5,255,0,0,6126,6147,5,251,0,0,6127,
	6147,5,252,0,0,6128,6147,5,253,0,0,6129,6147,5,256,0,0,6130,6147,5,257,
	0,0,6131,6147,5,258,0,0,6132,6147,5,69,0,0,6133,6147,5,76,0,0,6134,6147,
	5,254,0,0,6135,6147,5,260,0,0,6136,6147,5,435,0,0,6137,6147,5,261,0,0,6138,
	6147,5,127,0,0,6139,6147,5,263,0,0,6140,6147,5,264,0,0,6141,6147,5,265,
	0,0,6142,6147,5,266,0,0,6143,6147,5,267,0,0,6144,6147,5,268,0,0,6145,6147,
	5,269,0,0,6146,6123,1,0,0,0,6146,6124,1,0,0,0,6146,6125,1,0,0,0,6146,6126,
	1,0,0,0,6146,6127,1,0,0,0,6146,6128,1,0,0,0,6146,6129,1,0,0,0,6146,6130,
	1,0,0,0,6146,6131,1,0,0,0,6146,6132,1,0,0,0,6146,6133,1,0,0,0,6146,6134,
	1,0,0,0,6146,6135,1,0,0,0,6146,6136,1,0,0,0,6146,6137,1,0,0,0,6146,6138,
	1,0,0,0,6146,6139,1,0,0,0,6146,6140,1,0,0,0,6146,6141,1,0,0,0,6146,6142,
	1,0,0,0,6146,6143,1,0,0,0,6146,6144,1,0,0,0,6146,6145,1,0,0,0,6147,595,
	1,0,0,0,6148,6149,7,112,0,0,6149,6150,5,1020,0,0,6150,6151,3,600,300,0,
	6151,6152,5,1021,0,0,6152,597,1,0,0,0,6153,6158,3,542,271,0,6154,6158,3,
	502,251,0,6155,6158,3,582,291,0,6156,6158,3,602,301,0,6157,6153,1,0,0,0,
	6157,6154,1,0,0,0,6157,6155,1,0,0,0,6157,6156,1,0,0,0,6158,6168,1,0,0,0,
	6159,6164,5,1022,0,0,6160,6165,3,542,271,0,6161,6165,3,502,251,0,6162,6165,
	3,582,291,0,6163,6165,3,602,301,0,6164,6160,1,0,0,0,6164,6161,1,0,0,0,6164,
	6162,1,0,0,0,6164,6163,1,0,0,0,6165,6167,1,0,0,0,6166,6159,1,0,0,0,6167,
	6170,1,0,0,0,6168,6166,1,0,0,0,6168,6169,1,0,0,0,6169,599,1,0,0,0,6170,
	6168,1,0,0,0,6171,6176,3,542,271,0,6172,6176,3,502,251,0,6173,6176,3,582,
	291,0,6174,6176,3,602,301,0,6175,6171,1,0,0,0,6175,6172,1,0,0,0,6175,6173,
	1,0,0,0,6175,6174,1,0,0,0,6176,601,1,0,0,0,6177,6178,6,301,-1,0,6178,6179,
	7,113,0,0,6179,6189,3,602,301,4,6180,6181,3,604,302,0,6181,6183,5,79,0,
	0,6182,6184,5,102,0,0,6183,6182,1,0,0,0,6183,6184,1,0,0,0,6184,6185,1,0,
	0,0,6185,6186,7,114,0,0,6186,6189,1,0,0,0,6187,6189,3,604,302,0,6188,6177,
	1,0,0,0,6188,6180,1,0,0,0,6188,6187,1,0,0,0,6189,6196,1,0,0,0,6190,6191,
	10,3,0,0,6191,6192,3,612,306,0,6192,6193,3,602,301,4,6193,6195,1,0,0,0,
	6194,6190,1,0,0,0,6195,6198,1,0,0,0,6196,6194,1,0,0,0,6196,6197,1,0,0,0,
	6197,603,1,0,0,0,6198,6196,1,0,0,0,6199,6202,6,302,-1,0,6200,6201,5,1046,
	0,0,6201,6203,5,994,0,0,6202,6200,1,0,0,0,6202,6203,1,0,0,0,6203,6204,1,
	0,0,0,6204,6205,3,606,303,0,6205,6263,1,0,0,0,6206,6207,10,7,0,0,6207,6208,
	3,610,305,0,6208,6209,3,604,302,8,6209,6262,1,0,0,0,6210,6212,10,5,0,0,
	6211,6213,5,102,0,0,6212,6211,1,0,0,0,6212,6213,1,0,0,0,6213,6214,1,0,0,
	0,6214,6215,5,14,0,0,6215,6216,3,604,302,0,6216,6217,5,10,0,0,6217,6218,
	3,604,302,6,6218,6262,1,0,0,0,6219,6220,10,4,0,0,6220,6221,5,529,0,0,6221,
	6222,5,88,0,0,6222,6262,3,604,302,5,6223,6225,10,2,0,0,6224,6226,5,102,
	0,0,6225,6224,1,0,0,0,6225,6226,1,0,0,0,6226,6227,1,0,0,0,6227,6228,7,115,
	0,0,6228,6262,3,604,302,3,6229,6231,10,9,0,0,6230,6232,5,102,0,0,6231,6230,
	1,0,0,0,6231,6232,1,0,0,0,6232,6233,1,0,0,0,6233,6234,5,71,0,0,6234,6237,
	5,1020,0,0,6235,6238,3,180,90,0,6236,6238,3,562,281,0,6237,6235,1,0,0,0,
	6237,6236,1,0,0,0,6238,6239,1,0,0,0,6239,6240,5,1021,0,0,6240,6262,1,0,
	0,0,6241,6242,10,8,0,0,6242,6243,5,79,0,0,6243,6262,3,540,270,0,6244,6245,
	10,6,0,0,6245,6246,3,610,305,0,6246,6247,7,116,0,0,6247,6248,5,1020,0,0,
	6248,6249,3,180,90,0,6249,6250,5,1021,0,0,6250,6262,1,0,0,0,6251,6253,10,
	3,0,0,6252,6254,5,102,0,0,6253,6252,1,0,0,0,6253,6254,1,0,0,0,6254,6255,
	1,0,0,0,6255,6256,5,88,0,0,6256,6259,3,604,302,0,6257,6258,5,346,0,0,6258,
	6260,5,1035,0,0,6259,6257,1,0,0,0,6259,6260,1,0,0,0,6260,6262,1,0,0,0,6261,
	6206,1,0,0,0,6261,6210,1,0,0,0,6261,6219,1,0,0,0,6261,6223,1,0,0,0,6261,
	6229,1,0,0,0,6261,6241,1,0,0,0,6261,6244,1,0,0,0,6261,6251,1,0,0,0,6262,
	6265,1,0,0,0,6263,6261,1,0,0,0,6263,6264,1,0,0,0,6264,605,1,0,0,0,6265,
	6263,1,0,0,0,6266,6267,6,303,-1,0,6267,6312,3,542,271,0,6268,6312,3,502,
	251,0,6269,6312,3,582,291,0,6270,6312,3,508,254,0,6271,6272,3,608,304,0,
	6272,6273,3,606,303,9,6273,6312,1,0,0,0,6274,6275,5,208,0,0,6275,6312,3,
	606,303,8,6276,6277,5,1020,0,0,6277,6282,3,602,301,0,6278,6279,5,1022,0,
	0,6279,6281,3,602,301,0,6280,6278,1,0,0,0,6281,6284,1,0,0,0,6282,6280,1,
	0,0,0,6282,6283,1,0,0,0,6283,6285,1,0,0,0,6284,6282,1,0,0,0,6285,6286,5,
	1021,0,0,6286,6312,1,0,0,0,6287,6288,5,511,0,0,6288,6289,5,1020,0,0,6289,
	6292,3,602,301,0,6290,6291,5,1022,0,0,6291,6293,3,602,301,0,6292,6290,1,
	0,0,0,6293,6294,1,0,0,0,6294,6292,1,0,0,0,6294,6295,1,0,0,0,6295,6296,1,
	0,0,0,6296,6297,5,1021,0,0,6297,6312,1,0,0,0,6298,6299,5,53,0,0,6299,6300,
	5,1020,0,0,6300,6301,3,180,90,0,6301,6302,5,1021,0,0,6302,6312,1,0,0,0,
	6303,6304,5,1020,0,0,6304,6305,3,180,90,0,6305,6306,5,1021,0,0,6306,6312,
	1,0,0,0,6307,6308,5,77,0,0,6308,6309,3,602,301,0,6309,6310,3,60,30,0,6310,
	6312,1,0,0,0,6311,6266,1,0,0,0,6311,6268,1,0,0,0,6311,6269,1,0,0,0,6311,
	6270,1,0,0,0,6311,6271,1,0,0,0,6311,6274,1,0,0,0,6311,6276,1,0,0,0,6311,
	6287,1,0,0,0,6311,6298,1,0,0,0,6311,6303,1,0,0,0,6311,6307,1,0,0,0,6312,
	6326,1,0,0,0,6313,6314,10,2,0,0,6314,6315,3,614,307,0,6315,6316,3,606,303,
	3,6316,6325,1,0,0,0,6317,6318,10,1,0,0,6318,6319,3,616,308,0,6319,6320,
	3,606,303,2,6320,6325,1,0,0,0,6321,6322,10,11,0,0,6322,6323,5,24,0,0,6323,
	6325,3,512,256,0,6324,6313,1,0,0,0,6324,6317,1,0,0,0,6324,6321,1,0,0,0,
	6325,6328,1,0,0,0,6326,6324,1,0,0,0,6326,6327,1,0,0,0,6327,607,1,0,0,0,
	6328,6326,1,0,0,0,6329,6330,7,117,0,0,6330,609,1,0,0,0,6331,6346,5,1011,
	0,0,6332,6346,5,1012,0,0,6333,6346,5,1013,0,0,6334,6335,5,1013,0,0,6335,
	6346,5,1011,0,0,6336,6337,5,1012,0,0,6337,6346,5,1011,0,0,6338,6339,5,1013,
	0,0,6339,6346,5,1012,0,0,6340,6341,5,1014,0,0,6341,6346,5,1011,0,0,6342,
	6343,5,1013,0,0,6343,6344,5,1011,0,0,6344,6346,5,1012,0,0,6345,6331,1,0,
	0,0,6345,6332,1,0,0,0,6345,6333,1,0,0,0,6345,6334,1,0,0,0,6345,6336,1,0,
	0,0,6345,6338,1,0,0,0,6345,6340,1,0,0,0,6345,6342,1,0,0,0,6346,611,1,0,
	0,0,6347,6355,5,10,0,0,6348,6349,5,1017,0,0,6349,6355,5,1017,0,0,6350,6355,
	5,176,0,0,6351,6355,5,110,0,0,6352,6353,5,1016,0,0,6353,6355,5,1016,0,0,
	6354,6347,1,0,0,0,6354,6348,1,0,0,0,6354,6350,1,0,0,0,6354,6351,1,0,0,0,
	6354,6352,1,0,0,0,6355,613,1,0,0,0,6356,6357,5,1013,0,0,6357,6364,5,1013,
	0,0,6358,6359,5,1012,0,0,6359,6364,5,1012,0,0,6360,6364,5,1017,0,0,6361,
	6364,5,1018,0,0,6362,6364,5,1016,0,0,6363,6356,1,0,0,0,6363,6358,1,0,0,
	0,6363,6360,1,0,0,0,6363,6361,1,0,0,0,6363,6362,1,0,0,0,6364,615,1,0,0,
	0,6365,6366,7,118,0,0,6366,617,1,0,0,0,6367,6368,7,119,0,0,6368,619,1,0,
	0,0,6369,6370,7,120,0,0,6370,621,1,0,0,0,6371,6372,7,121,0,0,6372,623,1,
	0,0,0,6373,6374,7,122,0,0,6374,625,1,0,0,0,6375,6376,7,123,0,0,6376,627,
	1,0,0,0,6377,6378,7,124,0,0,6378,629,1,0,0,0,6379,6380,7,125,0,0,6380,631,
	1,0,0,0,928,636,639,645,648,651,653,658,661,664,673,712,724,735,752,757,
	769,796,805,810,816,821,825,834,837,840,844,851,854,859,867,872,877,880,
	882,894,897,901,904,908,911,915,918,921,925,928,932,938,944,950,957,964,
	970,976,985,990,1006,1013,1017,1027,1031,1035,1039,1043,1048,1051,1054,
	1057,1060,1066,1070,1076,1081,1084,1087,1089,1100,1104,1107,1121,1124,1128,
	1131,1135,1138,1142,1145,1149,1152,1155,1159,1162,1166,1172,1185,1192,1197,
	1200,1205,1213,1219,1223,1226,1231,1234,1238,1241,1245,1248,1256,1258,1265,
	1271,1279,1282,1289,1292,1294,1300,1306,1323,1330,1337,1348,1351,1364,1377,
	1382,1398,1406,1416,1422,1432,1435,1440,1453,1460,1467,1469,1476,1480,1482,
	1487,1490,1496,1501,1503,1507,1510,1513,1519,1524,1526,1531,1538,1540,1547,
	1552,1556,1559,1567,1575,1577,1585,1589,1592,1598,1603,1606,1612,1615,1619,
	1624,1629,1633,1638,1641,1645,1649,1653,1657,1662,1667,1672,1678,1683,1688,
	1694,1699,1704,1709,1714,1719,1724,1729,1734,1739,1744,1750,1755,1761,1771,
	1778,1780,1788,1793,1796,1804,1810,1826,1838,1840,1843,1851,1857,1863,1876,
	1883,1891,1894,1905,1913,1916,1928,1935,1943,1946,1958,1965,1973,1976,1983,
	1991,1994,1996,2001,2009,2018,2022,2026,2031,2037,2043,2048,2053,2058,2063,
	2066,2071,2076,2086,2090,2097,2102,2105,2110,2113,2117,2121,2129,2148,2151,
	2154,2158,2168,2181,2188,2191,2200,2203,2206,2217,2220,2224,2232,2235,2240,
	2248,2254,2258,2262,2267,2272,2279,2283,2294,2302,2305,2311,2317,2319,2324,
	2327,2333,2339,2341,2345,2348,2351,2357,2363,2366,2372,2378,2380,2385,2393,
	2395,2404,2409,2417,2421,2429,2439,2444,2451,2455,2459,2488,2492,2504,2507,
	2516,2533,2545,2552,2559,2574,2587,2593,2599,2605,2611,2617,2623,2628,2635,
	2642,2649,2654,2657,2659,2673,2680,2687,2693,2697,2701,2708,2711,2716,2723,
	2730,2734,2743,2752,2761,2764,2768,2777,2781,2784,2787,2793,2796,2802,2811,
	2814,2825,2828,2833,2836,2841,2851,2856,2862,2864,2870,2872,2878,2886,2891,
	2899,2902,2907,2910,2915,2923,2931,2937,2945,2950,2958,2961,2965,2968,2976,
	2982,2991,2994,2998,3002,3008,3012,3016,3018,3021,3024,3027,3033,3037,3040,
	3043,3046,3049,3051,3055,3061,3067,3072,3075,3081,3085,3093,3097,3100,3103,
	3112,3116,3119,3123,3127,3130,3133,3138,3144,3148,3158,3164,3168,3174,3178,
	3184,3187,3199,3203,3207,3215,3219,3227,3230,3234,3237,3245,3250,3253,3256,
	3260,3263,3272,3277,3286,3291,3298,3305,3313,3318,3326,3329,3332,3339,3342,
	3349,3352,3360,3366,3377,3380,3391,3397,3401,3412,3417,3419,3423,3433,3443,
	3449,3454,3457,3460,3463,3469,3474,3477,3480,3483,3485,3491,3496,3499,3502,
	3506,3512,3516,3526,3530,3536,3545,3548,3552,3555,3559,3563,3566,3568,3576,
	3588,3594,3596,3602,3604,3606,3612,3620,3628,3634,3643,3648,3650,3654,3658,
	3664,3671,3675,3684,3687,3691,3695,3699,3702,3705,3708,3712,3716,3719,3722,
	3725,3732,3736,3751,3764,3772,3782,3786,3789,3795,3798,3801,3810,3819,3829,
	3833,3843,3853,3861,3864,3873,3876,3880,3885,3889,3898,3901,3932,3935,3938,
	3994,3999,4027,4041,4048,4052,4058,4066,4068,4079,4089,4096,4102,4110,4115,
	4123,4131,4139,4147,4153,4156,4160,4165,4170,4176,4178,4189,4194,4201,4203,
	4217,4223,4228,4233,4239,4246,4254,4262,4267,4273,4276,4284,4291,4300,4303,
	4320,4328,4336,4340,4347,4353,4361,4370,4376,4383,4390,4395,4398,4400,4406,
	4408,4412,4414,4417,4426,4432,4439,4446,4451,4454,4456,4462,4464,4468,4470,
	4473,4478,4485,4494,4499,4508,4515,4520,4523,4525,4531,4533,4536,4548,4554,
	4563,4572,4577,4586,4592,4603,4606,4618,4625,4630,4645,4656,4659,4669,4679,
	4689,4699,4703,4707,4717,4722,4772,4790,4798,4809,4816,4820,4827,4832,4835,
	4838,4847,4851,4881,4888,4892,4899,4902,4918,4921,4931,4935,4941,4944,4949,
	4953,4960,4963,4969,4993,5006,5009,5019,5027,5031,5038,5041,5050,5056,5062,
	5072,5074,5080,5083,5086,5098,5101,5107,5110,5118,5126,5132,5136,5150,5162,
	5169,5172,5179,5186,5191,5196,5207,5218,5224,5229,5242,5244,5249,5254,5256,
	5263,5270,5273,5276,5282,5286,5292,5298,5311,5316,5324,5327,5332,5337,5345,
	5348,5354,5358,5371,5377,5389,5392,5401,5406,5412,5419,5421,5425,5431,5434,
	5444,5448,5468,5475,5477,5484,5486,5490,5495,5506,5511,5517,5520,5524,5529,
	5532,5536,5540,5542,5547,5552,5565,5568,5572,5575,5580,5583,5587,5592,5595,
	5600,5603,5609,5612,5616,5619,5622,5626,5629,5632,5636,5639,5642,5645,5649,
	5652,5655,5660,5665,5670,5673,5678,5681,5686,5689,5693,5697,5705,5712,5716,
	5721,5724,5729,5733,5735,5751,5760,5768,5777,5787,5795,5803,5811,5819,5824,
	5831,5833,5838,5841,5846,5849,5853,5867,5874,5879,5913,5917,5925,5929,5938,
	5946,5951,5959,5964,5969,5971,5980,5985,5993,5998,6006,6014,6017,6027,6038,
	6051,6059,6063,6068,6077,6080,6092,6100,6110,6113,6117,6121,6146,6157,6164,
	6168,6175,6183,6188,6196,6202,6212,6225,6231,6237,6253,6259,6261,6263,6282,
	6294,6311,6324,6326,6345,6354,6363];

	private static __ATN: ATN;
	public static get _ATN(): ATN {
		if (!SqlParser.__ATN) {
			SqlParser.__ATN = new ATNDeserializer().deserialize(SqlParser._serializedATN);
		}

		return SqlParser.__ATN;
	}


	static DecisionsToDFA = SqlParser._ATN.decisionToState.map( (ds: DecisionState, index: number) => new DFA(ds, index) );

}

export class ProgramContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public statement(): StatementContext {
		return this.getTypedRuleContext(StatementContext, 0) as StatementContext;
	}
	public EOF(): TerminalNode {
		return this.getToken(SqlParser.EOF, 0);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_program;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterProgram) {
	 		listener.enterProgram(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitProgram) {
	 		listener.exitProgram(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitProgram) {
			return visitor.visitProgram(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class StatementContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public EOF(): TerminalNode {
		return this.getToken(SqlParser.EOF, 0);
	}
	public sqlStatements(): SqlStatementsContext {
		return this.getTypedRuleContext(SqlStatementsContext, 0) as SqlStatementsContext;
	}
	public MINUSMINUS(): TerminalNode {
		return this.getToken(SqlParser.MINUSMINUS, 0);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_statement;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterStatement) {
	 		listener.enterStatement(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitStatement) {
	 		listener.exitStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitStatement) {
			return visitor.visitStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class SqlStatementsContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public sqlStatement_list(): SqlStatementContext[] {
		return this.getTypedRuleContexts(SqlStatementContext) as SqlStatementContext[];
	}
	public sqlStatement(i: number): SqlStatementContext {
		return this.getTypedRuleContext(SqlStatementContext, i) as SqlStatementContext;
	}
	public emptyStatement_list(): EmptyStatementContext[] {
		return this.getTypedRuleContexts(EmptyStatementContext) as EmptyStatementContext[];
	}
	public emptyStatement(i: number): EmptyStatementContext {
		return this.getTypedRuleContext(EmptyStatementContext, i) as EmptyStatementContext;
	}
	public SEMI_list(): TerminalNode[] {
	    	return this.getTokens(SqlParser.SEMI);
	}
	public SEMI(i: number): TerminalNode {
		return this.getToken(SqlParser.SEMI, i);
	}
	public MINUSMINUS_list(): TerminalNode[] {
	    	return this.getTokens(SqlParser.MINUSMINUS);
	}
	public MINUSMINUS(i: number): TerminalNode {
		return this.getToken(SqlParser.MINUSMINUS, i);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_sqlStatements;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterSqlStatements) {
	 		listener.enterSqlStatements(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitSqlStatements) {
	 		listener.exitSqlStatements(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitSqlStatements) {
			return visitor.visitSqlStatements(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class SqlStatementContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public ddlStatement(): DdlStatementContext {
		return this.getTypedRuleContext(DdlStatementContext, 0) as DdlStatementContext;
	}
	public dmlStatement(): DmlStatementContext {
		return this.getTypedRuleContext(DmlStatementContext, 0) as DmlStatementContext;
	}
	public transactionStatement(): TransactionStatementContext {
		return this.getTypedRuleContext(TransactionStatementContext, 0) as TransactionStatementContext;
	}
	public replicationStatement(): ReplicationStatementContext {
		return this.getTypedRuleContext(ReplicationStatementContext, 0) as ReplicationStatementContext;
	}
	public preparedStatement(): PreparedStatementContext {
		return this.getTypedRuleContext(PreparedStatementContext, 0) as PreparedStatementContext;
	}
	public administrationStatement(): AdministrationStatementContext {
		return this.getTypedRuleContext(AdministrationStatementContext, 0) as AdministrationStatementContext;
	}
	public utilityStatement(): UtilityStatementContext {
		return this.getTypedRuleContext(UtilityStatementContext, 0) as UtilityStatementContext;
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_sqlStatement;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterSqlStatement) {
	 		listener.enterSqlStatement(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitSqlStatement) {
	 		listener.exitSqlStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitSqlStatement) {
			return visitor.visitSqlStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class EmptyStatementContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public SEMI(): TerminalNode {
		return this.getToken(SqlParser.SEMI, 0);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_emptyStatement;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterEmptyStatement) {
	 		listener.enterEmptyStatement(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitEmptyStatement) {
	 		listener.exitEmptyStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitEmptyStatement) {
			return visitor.visitEmptyStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class DdlStatementContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public createDatabase(): CreateDatabaseContext {
		return this.getTypedRuleContext(CreateDatabaseContext, 0) as CreateDatabaseContext;
	}
	public createEvent(): CreateEventContext {
		return this.getTypedRuleContext(CreateEventContext, 0) as CreateEventContext;
	}
	public createIndex(): CreateIndexContext {
		return this.getTypedRuleContext(CreateIndexContext, 0) as CreateIndexContext;
	}
	public createLogfileGroup(): CreateLogfileGroupContext {
		return this.getTypedRuleContext(CreateLogfileGroupContext, 0) as CreateLogfileGroupContext;
	}
	public createProcedure(): CreateProcedureContext {
		return this.getTypedRuleContext(CreateProcedureContext, 0) as CreateProcedureContext;
	}
	public createFunction(): CreateFunctionContext {
		return this.getTypedRuleContext(CreateFunctionContext, 0) as CreateFunctionContext;
	}
	public createServer(): CreateServerContext {
		return this.getTypedRuleContext(CreateServerContext, 0) as CreateServerContext;
	}
	public createTable(): CreateTableContext {
		return this.getTypedRuleContext(CreateTableContext, 0) as CreateTableContext;
	}
	public createTablespaceInnodb(): CreateTablespaceInnodbContext {
		return this.getTypedRuleContext(CreateTablespaceInnodbContext, 0) as CreateTablespaceInnodbContext;
	}
	public createTablespaceNdb(): CreateTablespaceNdbContext {
		return this.getTypedRuleContext(CreateTablespaceNdbContext, 0) as CreateTablespaceNdbContext;
	}
	public createTrigger(): CreateTriggerContext {
		return this.getTypedRuleContext(CreateTriggerContext, 0) as CreateTriggerContext;
	}
	public createView(): CreateViewContext {
		return this.getTypedRuleContext(CreateViewContext, 0) as CreateViewContext;
	}
	public alterDatabase(): AlterDatabaseContext {
		return this.getTypedRuleContext(AlterDatabaseContext, 0) as AlterDatabaseContext;
	}
	public alterEvent(): AlterEventContext {
		return this.getTypedRuleContext(AlterEventContext, 0) as AlterEventContext;
	}
	public alterFunction(): AlterFunctionContext {
		return this.getTypedRuleContext(AlterFunctionContext, 0) as AlterFunctionContext;
	}
	public alterInstance(): AlterInstanceContext {
		return this.getTypedRuleContext(AlterInstanceContext, 0) as AlterInstanceContext;
	}
	public alterLogfileGroup(): AlterLogfileGroupContext {
		return this.getTypedRuleContext(AlterLogfileGroupContext, 0) as AlterLogfileGroupContext;
	}
	public alterProcedure(): AlterProcedureContext {
		return this.getTypedRuleContext(AlterProcedureContext, 0) as AlterProcedureContext;
	}
	public alterServer(): AlterServerContext {
		return this.getTypedRuleContext(AlterServerContext, 0) as AlterServerContext;
	}
	public alterTable(): AlterTableContext {
		return this.getTypedRuleContext(AlterTableContext, 0) as AlterTableContext;
	}
	public alterTablespace(): AlterTablespaceContext {
		return this.getTypedRuleContext(AlterTablespaceContext, 0) as AlterTablespaceContext;
	}
	public alterView(): AlterViewContext {
		return this.getTypedRuleContext(AlterViewContext, 0) as AlterViewContext;
	}
	public dropDatabase(): DropDatabaseContext {
		return this.getTypedRuleContext(DropDatabaseContext, 0) as DropDatabaseContext;
	}
	public dropEvent(): DropEventContext {
		return this.getTypedRuleContext(DropEventContext, 0) as DropEventContext;
	}
	public dropIndex(): DropIndexContext {
		return this.getTypedRuleContext(DropIndexContext, 0) as DropIndexContext;
	}
	public dropLogfileGroup(): DropLogfileGroupContext {
		return this.getTypedRuleContext(DropLogfileGroupContext, 0) as DropLogfileGroupContext;
	}
	public dropProcedure(): DropProcedureContext {
		return this.getTypedRuleContext(DropProcedureContext, 0) as DropProcedureContext;
	}
	public dropFunction(): DropFunctionContext {
		return this.getTypedRuleContext(DropFunctionContext, 0) as DropFunctionContext;
	}
	public dropServer(): DropServerContext {
		return this.getTypedRuleContext(DropServerContext, 0) as DropServerContext;
	}
	public dropTable(): DropTableContext {
		return this.getTypedRuleContext(DropTableContext, 0) as DropTableContext;
	}
	public dropTablespace(): DropTablespaceContext {
		return this.getTypedRuleContext(DropTablespaceContext, 0) as DropTablespaceContext;
	}
	public dropTrigger(): DropTriggerContext {
		return this.getTypedRuleContext(DropTriggerContext, 0) as DropTriggerContext;
	}
	public dropView(): DropViewContext {
		return this.getTypedRuleContext(DropViewContext, 0) as DropViewContext;
	}
	public renameTable(): RenameTableContext {
		return this.getTypedRuleContext(RenameTableContext, 0) as RenameTableContext;
	}
	public truncateTable(): TruncateTableContext {
		return this.getTypedRuleContext(TruncateTableContext, 0) as TruncateTableContext;
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_ddlStatement;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterDdlStatement) {
	 		listener.enterDdlStatement(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitDdlStatement) {
	 		listener.exitDdlStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitDdlStatement) {
			return visitor.visitDdlStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class DmlStatementContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public selectStatement(): SelectStatementContext {
		return this.getTypedRuleContext(SelectStatementContext, 0) as SelectStatementContext;
	}
	public insertStatement(): InsertStatementContext {
		return this.getTypedRuleContext(InsertStatementContext, 0) as InsertStatementContext;
	}
	public updateStatement(): UpdateStatementContext {
		return this.getTypedRuleContext(UpdateStatementContext, 0) as UpdateStatementContext;
	}
	public deleteStatement(): DeleteStatementContext {
		return this.getTypedRuleContext(DeleteStatementContext, 0) as DeleteStatementContext;
	}
	public replaceStatement(): ReplaceStatementContext {
		return this.getTypedRuleContext(ReplaceStatementContext, 0) as ReplaceStatementContext;
	}
	public callStatement(): CallStatementContext {
		return this.getTypedRuleContext(CallStatementContext, 0) as CallStatementContext;
	}
	public loadDataStatement(): LoadDataStatementContext {
		return this.getTypedRuleContext(LoadDataStatementContext, 0) as LoadDataStatementContext;
	}
	public loadXmlStatement(): LoadXmlStatementContext {
		return this.getTypedRuleContext(LoadXmlStatementContext, 0) as LoadXmlStatementContext;
	}
	public doStatement(): DoStatementContext {
		return this.getTypedRuleContext(DoStatementContext, 0) as DoStatementContext;
	}
	public handlerStatement(): HandlerStatementContext {
		return this.getTypedRuleContext(HandlerStatementContext, 0) as HandlerStatementContext;
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_dmlStatement;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterDmlStatement) {
	 		listener.enterDmlStatement(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitDmlStatement) {
	 		listener.exitDmlStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitDmlStatement) {
			return visitor.visitDmlStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class TransactionStatementContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public startTransaction(): StartTransactionContext {
		return this.getTypedRuleContext(StartTransactionContext, 0) as StartTransactionContext;
	}
	public beginWork(): BeginWorkContext {
		return this.getTypedRuleContext(BeginWorkContext, 0) as BeginWorkContext;
	}
	public commitWork(): CommitWorkContext {
		return this.getTypedRuleContext(CommitWorkContext, 0) as CommitWorkContext;
	}
	public rollbackWork(): RollbackWorkContext {
		return this.getTypedRuleContext(RollbackWorkContext, 0) as RollbackWorkContext;
	}
	public savepointStatement(): SavepointStatementContext {
		return this.getTypedRuleContext(SavepointStatementContext, 0) as SavepointStatementContext;
	}
	public rollbackStatement(): RollbackStatementContext {
		return this.getTypedRuleContext(RollbackStatementContext, 0) as RollbackStatementContext;
	}
	public releaseStatement(): ReleaseStatementContext {
		return this.getTypedRuleContext(ReleaseStatementContext, 0) as ReleaseStatementContext;
	}
	public lockTables(): LockTablesContext {
		return this.getTypedRuleContext(LockTablesContext, 0) as LockTablesContext;
	}
	public unlockTables(): UnlockTablesContext {
		return this.getTypedRuleContext(UnlockTablesContext, 0) as UnlockTablesContext;
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_transactionStatement;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterTransactionStatement) {
	 		listener.enterTransactionStatement(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitTransactionStatement) {
	 		listener.exitTransactionStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitTransactionStatement) {
			return visitor.visitTransactionStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ReplicationStatementContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public changeMaster(): ChangeMasterContext {
		return this.getTypedRuleContext(ChangeMasterContext, 0) as ChangeMasterContext;
	}
	public changeReplicationFilter(): ChangeReplicationFilterContext {
		return this.getTypedRuleContext(ChangeReplicationFilterContext, 0) as ChangeReplicationFilterContext;
	}
	public purgeBinaryLogs(): PurgeBinaryLogsContext {
		return this.getTypedRuleContext(PurgeBinaryLogsContext, 0) as PurgeBinaryLogsContext;
	}
	public resetMaster(): ResetMasterContext {
		return this.getTypedRuleContext(ResetMasterContext, 0) as ResetMasterContext;
	}
	public resetSlave(): ResetSlaveContext {
		return this.getTypedRuleContext(ResetSlaveContext, 0) as ResetSlaveContext;
	}
	public startSlave(): StartSlaveContext {
		return this.getTypedRuleContext(StartSlaveContext, 0) as StartSlaveContext;
	}
	public stopSlave(): StopSlaveContext {
		return this.getTypedRuleContext(StopSlaveContext, 0) as StopSlaveContext;
	}
	public startGroupReplication(): StartGroupReplicationContext {
		return this.getTypedRuleContext(StartGroupReplicationContext, 0) as StartGroupReplicationContext;
	}
	public stopGroupReplication(): StopGroupReplicationContext {
		return this.getTypedRuleContext(StopGroupReplicationContext, 0) as StopGroupReplicationContext;
	}
	public xaStartTransaction(): XaStartTransactionContext {
		return this.getTypedRuleContext(XaStartTransactionContext, 0) as XaStartTransactionContext;
	}
	public xaEndTransaction(): XaEndTransactionContext {
		return this.getTypedRuleContext(XaEndTransactionContext, 0) as XaEndTransactionContext;
	}
	public xaPrepareStatement(): XaPrepareStatementContext {
		return this.getTypedRuleContext(XaPrepareStatementContext, 0) as XaPrepareStatementContext;
	}
	public xaCommitWork(): XaCommitWorkContext {
		return this.getTypedRuleContext(XaCommitWorkContext, 0) as XaCommitWorkContext;
	}
	public xaRollbackWork(): XaRollbackWorkContext {
		return this.getTypedRuleContext(XaRollbackWorkContext, 0) as XaRollbackWorkContext;
	}
	public xaRecoverWork(): XaRecoverWorkContext {
		return this.getTypedRuleContext(XaRecoverWorkContext, 0) as XaRecoverWorkContext;
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_replicationStatement;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterReplicationStatement) {
	 		listener.enterReplicationStatement(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitReplicationStatement) {
	 		listener.exitReplicationStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitReplicationStatement) {
			return visitor.visitReplicationStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class PreparedStatementContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public prepareStatement(): PrepareStatementContext {
		return this.getTypedRuleContext(PrepareStatementContext, 0) as PrepareStatementContext;
	}
	public executeStatement(): ExecuteStatementContext {
		return this.getTypedRuleContext(ExecuteStatementContext, 0) as ExecuteStatementContext;
	}
	public deallocatePrepare(): DeallocatePrepareContext {
		return this.getTypedRuleContext(DeallocatePrepareContext, 0) as DeallocatePrepareContext;
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_preparedStatement;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterPreparedStatement) {
	 		listener.enterPreparedStatement(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitPreparedStatement) {
	 		listener.exitPreparedStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitPreparedStatement) {
			return visitor.visitPreparedStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class CompoundStatementContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public blockStatement(): BlockStatementContext {
		return this.getTypedRuleContext(BlockStatementContext, 0) as BlockStatementContext;
	}
	public caseStatement(): CaseStatementContext {
		return this.getTypedRuleContext(CaseStatementContext, 0) as CaseStatementContext;
	}
	public ifStatement(): IfStatementContext {
		return this.getTypedRuleContext(IfStatementContext, 0) as IfStatementContext;
	}
	public leaveStatement(): LeaveStatementContext {
		return this.getTypedRuleContext(LeaveStatementContext, 0) as LeaveStatementContext;
	}
	public loopStatement(): LoopStatementContext {
		return this.getTypedRuleContext(LoopStatementContext, 0) as LoopStatementContext;
	}
	public repeatStatement(): RepeatStatementContext {
		return this.getTypedRuleContext(RepeatStatementContext, 0) as RepeatStatementContext;
	}
	public whileStatement(): WhileStatementContext {
		return this.getTypedRuleContext(WhileStatementContext, 0) as WhileStatementContext;
	}
	public iterateStatement(): IterateStatementContext {
		return this.getTypedRuleContext(IterateStatementContext, 0) as IterateStatementContext;
	}
	public returnStatement(): ReturnStatementContext {
		return this.getTypedRuleContext(ReturnStatementContext, 0) as ReturnStatementContext;
	}
	public cursorStatement(): CursorStatementContext {
		return this.getTypedRuleContext(CursorStatementContext, 0) as CursorStatementContext;
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_compoundStatement;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterCompoundStatement) {
	 		listener.enterCompoundStatement(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitCompoundStatement) {
	 		listener.exitCompoundStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitCompoundStatement) {
			return visitor.visitCompoundStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class AdministrationStatementContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public alterUser(): AlterUserContext {
		return this.getTypedRuleContext(AlterUserContext, 0) as AlterUserContext;
	}
	public createUser(): CreateUserContext {
		return this.getTypedRuleContext(CreateUserContext, 0) as CreateUserContext;
	}
	public dropUser(): DropUserContext {
		return this.getTypedRuleContext(DropUserContext, 0) as DropUserContext;
	}
	public grantStatement(): GrantStatementContext {
		return this.getTypedRuleContext(GrantStatementContext, 0) as GrantStatementContext;
	}
	public grantProxy(): GrantProxyContext {
		return this.getTypedRuleContext(GrantProxyContext, 0) as GrantProxyContext;
	}
	public renameUser(): RenameUserContext {
		return this.getTypedRuleContext(RenameUserContext, 0) as RenameUserContext;
	}
	public revokeStatement(): RevokeStatementContext {
		return this.getTypedRuleContext(RevokeStatementContext, 0) as RevokeStatementContext;
	}
	public revokeProxy(): RevokeProxyContext {
		return this.getTypedRuleContext(RevokeProxyContext, 0) as RevokeProxyContext;
	}
	public analyzeTable(): AnalyzeTableContext {
		return this.getTypedRuleContext(AnalyzeTableContext, 0) as AnalyzeTableContext;
	}
	public checkTable(): CheckTableContext {
		return this.getTypedRuleContext(CheckTableContext, 0) as CheckTableContext;
	}
	public checksumTable(): ChecksumTableContext {
		return this.getTypedRuleContext(ChecksumTableContext, 0) as ChecksumTableContext;
	}
	public optimizeTable(): OptimizeTableContext {
		return this.getTypedRuleContext(OptimizeTableContext, 0) as OptimizeTableContext;
	}
	public repairTable(): RepairTableContext {
		return this.getTypedRuleContext(RepairTableContext, 0) as RepairTableContext;
	}
	public createUdfunction(): CreateUdfunctionContext {
		return this.getTypedRuleContext(CreateUdfunctionContext, 0) as CreateUdfunctionContext;
	}
	public installPlugin(): InstallPluginContext {
		return this.getTypedRuleContext(InstallPluginContext, 0) as InstallPluginContext;
	}
	public uninstallPlugin(): UninstallPluginContext {
		return this.getTypedRuleContext(UninstallPluginContext, 0) as UninstallPluginContext;
	}
	public setStatement(): SetStatementContext {
		return this.getTypedRuleContext(SetStatementContext, 0) as SetStatementContext;
	}
	public showStatement(): ShowStatementContext {
		return this.getTypedRuleContext(ShowStatementContext, 0) as ShowStatementContext;
	}
	public binlogStatement(): BinlogStatementContext {
		return this.getTypedRuleContext(BinlogStatementContext, 0) as BinlogStatementContext;
	}
	public cacheIndexStatement(): CacheIndexStatementContext {
		return this.getTypedRuleContext(CacheIndexStatementContext, 0) as CacheIndexStatementContext;
	}
	public flushStatement(): FlushStatementContext {
		return this.getTypedRuleContext(FlushStatementContext, 0) as FlushStatementContext;
	}
	public killStatement(): KillStatementContext {
		return this.getTypedRuleContext(KillStatementContext, 0) as KillStatementContext;
	}
	public loadIndexIntoCache(): LoadIndexIntoCacheContext {
		return this.getTypedRuleContext(LoadIndexIntoCacheContext, 0) as LoadIndexIntoCacheContext;
	}
	public resetStatement(): ResetStatementContext {
		return this.getTypedRuleContext(ResetStatementContext, 0) as ResetStatementContext;
	}
	public shutdownStatement(): ShutdownStatementContext {
		return this.getTypedRuleContext(ShutdownStatementContext, 0) as ShutdownStatementContext;
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_administrationStatement;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterAdministrationStatement) {
	 		listener.enterAdministrationStatement(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitAdministrationStatement) {
	 		listener.exitAdministrationStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitAdministrationStatement) {
			return visitor.visitAdministrationStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class UtilityStatementContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public simpleDescribeStatement(): SimpleDescribeStatementContext {
		return this.getTypedRuleContext(SimpleDescribeStatementContext, 0) as SimpleDescribeStatementContext;
	}
	public fullDescribeStatement(): FullDescribeStatementContext {
		return this.getTypedRuleContext(FullDescribeStatementContext, 0) as FullDescribeStatementContext;
	}
	public helpStatement(): HelpStatementContext {
		return this.getTypedRuleContext(HelpStatementContext, 0) as HelpStatementContext;
	}
	public useStatement(): UseStatementContext {
		return this.getTypedRuleContext(UseStatementContext, 0) as UseStatementContext;
	}
	public signalStatement(): SignalStatementContext {
		return this.getTypedRuleContext(SignalStatementContext, 0) as SignalStatementContext;
	}
	public resignalStatement(): ResignalStatementContext {
		return this.getTypedRuleContext(ResignalStatementContext, 0) as ResignalStatementContext;
	}
	public diagnosticsStatement(): DiagnosticsStatementContext {
		return this.getTypedRuleContext(DiagnosticsStatementContext, 0) as DiagnosticsStatementContext;
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_utilityStatement;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterUtilityStatement) {
	 		listener.enterUtilityStatement(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitUtilityStatement) {
	 		listener.exitUtilityStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitUtilityStatement) {
			return visitor.visitUtilityStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class CreateDatabaseContext extends ParserRuleContext {
	public _dbFormat!: Token;
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public CREATE(): TerminalNode {
		return this.getToken(SqlParser.CREATE, 0);
	}
	public uid(): UidContext {
		return this.getTypedRuleContext(UidContext, 0) as UidContext;
	}
	public DATABASE(): TerminalNode {
		return this.getToken(SqlParser.DATABASE, 0);
	}
	public SCHEMA(): TerminalNode {
		return this.getToken(SqlParser.SCHEMA, 0);
	}
	public ifNotExists(): IfNotExistsContext {
		return this.getTypedRuleContext(IfNotExistsContext, 0) as IfNotExistsContext;
	}
	public createDatabaseOption_list(): CreateDatabaseOptionContext[] {
		return this.getTypedRuleContexts(CreateDatabaseOptionContext) as CreateDatabaseOptionContext[];
	}
	public createDatabaseOption(i: number): CreateDatabaseOptionContext {
		return this.getTypedRuleContext(CreateDatabaseOptionContext, i) as CreateDatabaseOptionContext;
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_createDatabase;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterCreateDatabase) {
	 		listener.enterCreateDatabase(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitCreateDatabase) {
	 		listener.exitCreateDatabase(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitCreateDatabase) {
			return visitor.visitCreateDatabase(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class CreateEventContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public CREATE(): TerminalNode {
		return this.getToken(SqlParser.CREATE, 0);
	}
	public EVENT(): TerminalNode {
		return this.getToken(SqlParser.EVENT, 0);
	}
	public fullId(): FullIdContext {
		return this.getTypedRuleContext(FullIdContext, 0) as FullIdContext;
	}
	public ON_list(): TerminalNode[] {
	    	return this.getTokens(SqlParser.ON);
	}
	public ON(i: number): TerminalNode {
		return this.getToken(SqlParser.ON, i);
	}
	public SCHEDULE(): TerminalNode {
		return this.getToken(SqlParser.SCHEDULE, 0);
	}
	public scheduleExpression(): ScheduleExpressionContext {
		return this.getTypedRuleContext(ScheduleExpressionContext, 0) as ScheduleExpressionContext;
	}
	public DO(): TerminalNode {
		return this.getToken(SqlParser.DO, 0);
	}
	public routineBody(): RoutineBodyContext {
		return this.getTypedRuleContext(RoutineBodyContext, 0) as RoutineBodyContext;
	}
	public ownerStatement(): OwnerStatementContext {
		return this.getTypedRuleContext(OwnerStatementContext, 0) as OwnerStatementContext;
	}
	public ifNotExists(): IfNotExistsContext {
		return this.getTypedRuleContext(IfNotExistsContext, 0) as IfNotExistsContext;
	}
	public COMPLETION(): TerminalNode {
		return this.getToken(SqlParser.COMPLETION, 0);
	}
	public PRESERVE(): TerminalNode {
		return this.getToken(SqlParser.PRESERVE, 0);
	}
	public enableType(): EnableTypeContext {
		return this.getTypedRuleContext(EnableTypeContext, 0) as EnableTypeContext;
	}
	public COMMENT(): TerminalNode {
		return this.getToken(SqlParser.COMMENT, 0);
	}
	public STRING_LITERAL(): TerminalNode {
		return this.getToken(SqlParser.STRING_LITERAL, 0);
	}
	public NOT(): TerminalNode {
		return this.getToken(SqlParser.NOT, 0);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_createEvent;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterCreateEvent) {
	 		listener.enterCreateEvent(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitCreateEvent) {
	 		listener.exitCreateEvent(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitCreateEvent) {
			return visitor.visitCreateEvent(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class CreateIndexContext extends ParserRuleContext {
	public _intimeAction!: Token;
	public _indexCategory!: Token;
	public _algType!: Token;
	public _lockType!: Token;
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public CREATE(): TerminalNode {
		return this.getToken(SqlParser.CREATE, 0);
	}
	public INDEX(): TerminalNode {
		return this.getToken(SqlParser.INDEX, 0);
	}
	public uid(): UidContext {
		return this.getTypedRuleContext(UidContext, 0) as UidContext;
	}
	public ON(): TerminalNode {
		return this.getToken(SqlParser.ON, 0);
	}
	public tableName(): TableNameContext {
		return this.getTypedRuleContext(TableNameContext, 0) as TableNameContext;
	}
	public indexColumnNames(): IndexColumnNamesContext {
		return this.getTypedRuleContext(IndexColumnNamesContext, 0) as IndexColumnNamesContext;
	}
	public indexType(): IndexTypeContext {
		return this.getTypedRuleContext(IndexTypeContext, 0) as IndexTypeContext;
	}
	public indexOption_list(): IndexOptionContext[] {
		return this.getTypedRuleContexts(IndexOptionContext) as IndexOptionContext[];
	}
	public indexOption(i: number): IndexOptionContext {
		return this.getTypedRuleContext(IndexOptionContext, i) as IndexOptionContext;
	}
	public ALGORITHM_list(): TerminalNode[] {
	    	return this.getTokens(SqlParser.ALGORITHM);
	}
	public ALGORITHM(i: number): TerminalNode {
		return this.getToken(SqlParser.ALGORITHM, i);
	}
	public LOCK_list(): TerminalNode[] {
	    	return this.getTokens(SqlParser.LOCK);
	}
	public LOCK(i: number): TerminalNode {
		return this.getToken(SqlParser.LOCK, i);
	}
	public ONLINE(): TerminalNode {
		return this.getToken(SqlParser.ONLINE, 0);
	}
	public OFFLINE(): TerminalNode {
		return this.getToken(SqlParser.OFFLINE, 0);
	}
	public UNIQUE(): TerminalNode {
		return this.getToken(SqlParser.UNIQUE, 0);
	}
	public FULLTEXT(): TerminalNode {
		return this.getToken(SqlParser.FULLTEXT, 0);
	}
	public SPATIAL(): TerminalNode {
		return this.getToken(SqlParser.SPATIAL, 0);
	}
	public DEFAULT_list(): TerminalNode[] {
	    	return this.getTokens(SqlParser.DEFAULT);
	}
	public DEFAULT(i: number): TerminalNode {
		return this.getToken(SqlParser.DEFAULT, i);
	}
	public INPLACE_list(): TerminalNode[] {
	    	return this.getTokens(SqlParser.INPLACE);
	}
	public INPLACE(i: number): TerminalNode {
		return this.getToken(SqlParser.INPLACE, i);
	}
	public COPY_list(): TerminalNode[] {
	    	return this.getTokens(SqlParser.COPY);
	}
	public COPY(i: number): TerminalNode {
		return this.getToken(SqlParser.COPY, i);
	}
	public NONE_list(): TerminalNode[] {
	    	return this.getTokens(SqlParser.NONE);
	}
	public NONE(i: number): TerminalNode {
		return this.getToken(SqlParser.NONE, i);
	}
	public SHARED_list(): TerminalNode[] {
	    	return this.getTokens(SqlParser.SHARED);
	}
	public SHARED(i: number): TerminalNode {
		return this.getToken(SqlParser.SHARED, i);
	}
	public EXCLUSIVE_list(): TerminalNode[] {
	    	return this.getTokens(SqlParser.EXCLUSIVE);
	}
	public EXCLUSIVE(i: number): TerminalNode {
		return this.getToken(SqlParser.EXCLUSIVE, i);
	}
	public EQUAL_SYMBOL_list(): TerminalNode[] {
	    	return this.getTokens(SqlParser.EQUAL_SYMBOL);
	}
	public EQUAL_SYMBOL(i: number): TerminalNode {
		return this.getToken(SqlParser.EQUAL_SYMBOL, i);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_createIndex;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterCreateIndex) {
	 		listener.enterCreateIndex(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitCreateIndex) {
	 		listener.exitCreateIndex(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitCreateIndex) {
			return visitor.visitCreateIndex(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class CreateLogfileGroupContext extends ParserRuleContext {
	public _undoFile!: Token;
	public _initSize!: FileSizeLiteralContext;
	public _undoSize!: FileSizeLiteralContext;
	public _redoSize!: FileSizeLiteralContext;
	public _comment!: Token;
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public CREATE(): TerminalNode {
		return this.getToken(SqlParser.CREATE, 0);
	}
	public LOGFILE(): TerminalNode {
		return this.getToken(SqlParser.LOGFILE, 0);
	}
	public GROUP(): TerminalNode {
		return this.getToken(SqlParser.GROUP, 0);
	}
	public uid_list(): UidContext[] {
		return this.getTypedRuleContexts(UidContext) as UidContext[];
	}
	public uid(i: number): UidContext {
		return this.getTypedRuleContext(UidContext, i) as UidContext;
	}
	public ADD(): TerminalNode {
		return this.getToken(SqlParser.ADD, 0);
	}
	public UNDOFILE(): TerminalNode {
		return this.getToken(SqlParser.UNDOFILE, 0);
	}
	public ENGINE(): TerminalNode {
		return this.getToken(SqlParser.ENGINE, 0);
	}
	public engineName(): EngineNameContext {
		return this.getTypedRuleContext(EngineNameContext, 0) as EngineNameContext;
	}
	public STRING_LITERAL_list(): TerminalNode[] {
	    	return this.getTokens(SqlParser.STRING_LITERAL);
	}
	public STRING_LITERAL(i: number): TerminalNode {
		return this.getToken(SqlParser.STRING_LITERAL, i);
	}
	public INITIAL_SIZE(): TerminalNode {
		return this.getToken(SqlParser.INITIAL_SIZE, 0);
	}
	public UNDO_BUFFER_SIZE(): TerminalNode {
		return this.getToken(SqlParser.UNDO_BUFFER_SIZE, 0);
	}
	public REDO_BUFFER_SIZE(): TerminalNode {
		return this.getToken(SqlParser.REDO_BUFFER_SIZE, 0);
	}
	public NODEGROUP(): TerminalNode {
		return this.getToken(SqlParser.NODEGROUP, 0);
	}
	public WAIT(): TerminalNode {
		return this.getToken(SqlParser.WAIT, 0);
	}
	public COMMENT(): TerminalNode {
		return this.getToken(SqlParser.COMMENT, 0);
	}
	public EQUAL_SYMBOL_list(): TerminalNode[] {
	    	return this.getTokens(SqlParser.EQUAL_SYMBOL);
	}
	public EQUAL_SYMBOL(i: number): TerminalNode {
		return this.getToken(SqlParser.EQUAL_SYMBOL, i);
	}
	public fileSizeLiteral_list(): FileSizeLiteralContext[] {
		return this.getTypedRuleContexts(FileSizeLiteralContext) as FileSizeLiteralContext[];
	}
	public fileSizeLiteral(i: number): FileSizeLiteralContext {
		return this.getTypedRuleContext(FileSizeLiteralContext, i) as FileSizeLiteralContext;
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_createLogfileGroup;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterCreateLogfileGroup) {
	 		listener.enterCreateLogfileGroup(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitCreateLogfileGroup) {
	 		listener.exitCreateLogfileGroup(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitCreateLogfileGroup) {
			return visitor.visitCreateLogfileGroup(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class CreateProcedureContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public CREATE(): TerminalNode {
		return this.getToken(SqlParser.CREATE, 0);
	}
	public PROCEDURE(): TerminalNode {
		return this.getToken(SqlParser.PROCEDURE, 0);
	}
	public fullId(): FullIdContext {
		return this.getTypedRuleContext(FullIdContext, 0) as FullIdContext;
	}
	public LR_BRACKET(): TerminalNode {
		return this.getToken(SqlParser.LR_BRACKET, 0);
	}
	public RR_BRACKET(): TerminalNode {
		return this.getToken(SqlParser.RR_BRACKET, 0);
	}
	public routineBody(): RoutineBodyContext {
		return this.getTypedRuleContext(RoutineBodyContext, 0) as RoutineBodyContext;
	}
	public ownerStatement(): OwnerStatementContext {
		return this.getTypedRuleContext(OwnerStatementContext, 0) as OwnerStatementContext;
	}
	public procedureParameter_list(): ProcedureParameterContext[] {
		return this.getTypedRuleContexts(ProcedureParameterContext) as ProcedureParameterContext[];
	}
	public procedureParameter(i: number): ProcedureParameterContext {
		return this.getTypedRuleContext(ProcedureParameterContext, i) as ProcedureParameterContext;
	}
	public COMMA_list(): TerminalNode[] {
	    	return this.getTokens(SqlParser.COMMA);
	}
	public COMMA(i: number): TerminalNode {
		return this.getToken(SqlParser.COMMA, i);
	}
	public routineOption_list(): RoutineOptionContext[] {
		return this.getTypedRuleContexts(RoutineOptionContext) as RoutineOptionContext[];
	}
	public routineOption(i: number): RoutineOptionContext {
		return this.getTypedRuleContext(RoutineOptionContext, i) as RoutineOptionContext;
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_createProcedure;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterCreateProcedure) {
	 		listener.enterCreateProcedure(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitCreateProcedure) {
	 		listener.exitCreateProcedure(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitCreateProcedure) {
			return visitor.visitCreateProcedure(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class CreateFunctionContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public CREATE(): TerminalNode {
		return this.getToken(SqlParser.CREATE, 0);
	}
	public FUNCTION(): TerminalNode {
		return this.getToken(SqlParser.FUNCTION, 0);
	}
	public fullId(): FullIdContext {
		return this.getTypedRuleContext(FullIdContext, 0) as FullIdContext;
	}
	public LR_BRACKET(): TerminalNode {
		return this.getToken(SqlParser.LR_BRACKET, 0);
	}
	public RR_BRACKET(): TerminalNode {
		return this.getToken(SqlParser.RR_BRACKET, 0);
	}
	public RETURNS(): TerminalNode {
		return this.getToken(SqlParser.RETURNS, 0);
	}
	public dataType(): DataTypeContext {
		return this.getTypedRuleContext(DataTypeContext, 0) as DataTypeContext;
	}
	public routineBody(): RoutineBodyContext {
		return this.getTypedRuleContext(RoutineBodyContext, 0) as RoutineBodyContext;
	}
	public returnStatement(): ReturnStatementContext {
		return this.getTypedRuleContext(ReturnStatementContext, 0) as ReturnStatementContext;
	}
	public ownerStatement(): OwnerStatementContext {
		return this.getTypedRuleContext(OwnerStatementContext, 0) as OwnerStatementContext;
	}
	public functionParameter_list(): FunctionParameterContext[] {
		return this.getTypedRuleContexts(FunctionParameterContext) as FunctionParameterContext[];
	}
	public functionParameter(i: number): FunctionParameterContext {
		return this.getTypedRuleContext(FunctionParameterContext, i) as FunctionParameterContext;
	}
	public COMMA_list(): TerminalNode[] {
	    	return this.getTokens(SqlParser.COMMA);
	}
	public COMMA(i: number): TerminalNode {
		return this.getToken(SqlParser.COMMA, i);
	}
	public routineOption_list(): RoutineOptionContext[] {
		return this.getTypedRuleContexts(RoutineOptionContext) as RoutineOptionContext[];
	}
	public routineOption(i: number): RoutineOptionContext {
		return this.getTypedRuleContext(RoutineOptionContext, i) as RoutineOptionContext;
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_createFunction;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterCreateFunction) {
	 		listener.enterCreateFunction(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitCreateFunction) {
	 		listener.exitCreateFunction(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitCreateFunction) {
			return visitor.visitCreateFunction(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class CreateServerContext extends ParserRuleContext {
	public _wrapperName!: Token;
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public CREATE(): TerminalNode {
		return this.getToken(SqlParser.CREATE, 0);
	}
	public SERVER(): TerminalNode {
		return this.getToken(SqlParser.SERVER, 0);
	}
	public uid(): UidContext {
		return this.getTypedRuleContext(UidContext, 0) as UidContext;
	}
	public FOREIGN(): TerminalNode {
		return this.getToken(SqlParser.FOREIGN, 0);
	}
	public DATA(): TerminalNode {
		return this.getToken(SqlParser.DATA, 0);
	}
	public WRAPPER(): TerminalNode {
		return this.getToken(SqlParser.WRAPPER, 0);
	}
	public OPTIONS(): TerminalNode {
		return this.getToken(SqlParser.OPTIONS, 0);
	}
	public LR_BRACKET(): TerminalNode {
		return this.getToken(SqlParser.LR_BRACKET, 0);
	}
	public serverOption_list(): ServerOptionContext[] {
		return this.getTypedRuleContexts(ServerOptionContext) as ServerOptionContext[];
	}
	public serverOption(i: number): ServerOptionContext {
		return this.getTypedRuleContext(ServerOptionContext, i) as ServerOptionContext;
	}
	public RR_BRACKET(): TerminalNode {
		return this.getToken(SqlParser.RR_BRACKET, 0);
	}
	public MYSQL(): TerminalNode {
		return this.getToken(SqlParser.MYSQL, 0);
	}
	public STRING_LITERAL(): TerminalNode {
		return this.getToken(SqlParser.STRING_LITERAL, 0);
	}
	public COMMA_list(): TerminalNode[] {
	    	return this.getTokens(SqlParser.COMMA);
	}
	public COMMA(i: number): TerminalNode {
		return this.getToken(SqlParser.COMMA, i);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_createServer;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterCreateServer) {
	 		listener.enterCreateServer(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitCreateServer) {
	 		listener.exitCreateServer(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitCreateServer) {
			return visitor.visitCreateServer(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class CreateTableContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_createTable;
	}
	public copyFrom(ctx: CreateTableContext): void {
		super.copyFrom(ctx);
	}
}
export class CopyCreateTableContext extends CreateTableContext {
	public _parenthesisTable!: TableNameContext;
	constructor(parser: SqlParser, ctx: CreateTableContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public CREATE(): TerminalNode {
		return this.getToken(SqlParser.CREATE, 0);
	}
	public TABLE(): TerminalNode {
		return this.getToken(SqlParser.TABLE, 0);
	}
	public tableName_list(): TableNameContext[] {
		return this.getTypedRuleContexts(TableNameContext) as TableNameContext[];
	}
	public tableName(i: number): TableNameContext {
		return this.getTypedRuleContext(TableNameContext, i) as TableNameContext;
	}
	public LIKE(): TerminalNode {
		return this.getToken(SqlParser.LIKE, 0);
	}
	public LR_BRACKET(): TerminalNode {
		return this.getToken(SqlParser.LR_BRACKET, 0);
	}
	public RR_BRACKET(): TerminalNode {
		return this.getToken(SqlParser.RR_BRACKET, 0);
	}
	public TEMPORARY(): TerminalNode {
		return this.getToken(SqlParser.TEMPORARY, 0);
	}
	public ifNotExists(): IfNotExistsContext {
		return this.getTypedRuleContext(IfNotExistsContext, 0) as IfNotExistsContext;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterCopyCreateTable) {
	 		listener.enterCopyCreateTable(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitCopyCreateTable) {
	 		listener.exitCopyCreateTable(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitCopyCreateTable) {
			return visitor.visitCopyCreateTable(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class ColumnCreateTableContext extends CreateTableContext {
	constructor(parser: SqlParser, ctx: CreateTableContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public CREATE(): TerminalNode {
		return this.getToken(SqlParser.CREATE, 0);
	}
	public TABLE(): TerminalNode {
		return this.getToken(SqlParser.TABLE, 0);
	}
	public tableName(): TableNameContext {
		return this.getTypedRuleContext(TableNameContext, 0) as TableNameContext;
	}
	public createDefinitions(): CreateDefinitionsContext {
		return this.getTypedRuleContext(CreateDefinitionsContext, 0) as CreateDefinitionsContext;
	}
	public TEMPORARY(): TerminalNode {
		return this.getToken(SqlParser.TEMPORARY, 0);
	}
	public ifNotExists(): IfNotExistsContext {
		return this.getTypedRuleContext(IfNotExistsContext, 0) as IfNotExistsContext;
	}
	public tableOption_list(): TableOptionContext[] {
		return this.getTypedRuleContexts(TableOptionContext) as TableOptionContext[];
	}
	public tableOption(i: number): TableOptionContext {
		return this.getTypedRuleContext(TableOptionContext, i) as TableOptionContext;
	}
	public partitionDefinitions(): PartitionDefinitionsContext {
		return this.getTypedRuleContext(PartitionDefinitionsContext, 0) as PartitionDefinitionsContext;
	}
	public COMMA_list(): TerminalNode[] {
	    	return this.getTokens(SqlParser.COMMA);
	}
	public COMMA(i: number): TerminalNode {
		return this.getToken(SqlParser.COMMA, i);
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterColumnCreateTable) {
	 		listener.enterColumnCreateTable(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitColumnCreateTable) {
	 		listener.exitColumnCreateTable(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitColumnCreateTable) {
			return visitor.visitColumnCreateTable(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class QueryCreateTableContext extends CreateTableContext {
	public _keyViolate!: Token;
	constructor(parser: SqlParser, ctx: CreateTableContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public CREATE(): TerminalNode {
		return this.getToken(SqlParser.CREATE, 0);
	}
	public TABLE(): TerminalNode {
		return this.getToken(SqlParser.TABLE, 0);
	}
	public tableName(): TableNameContext {
		return this.getTypedRuleContext(TableNameContext, 0) as TableNameContext;
	}
	public selectStatement(): SelectStatementContext {
		return this.getTypedRuleContext(SelectStatementContext, 0) as SelectStatementContext;
	}
	public TEMPORARY(): TerminalNode {
		return this.getToken(SqlParser.TEMPORARY, 0);
	}
	public ifNotExists(): IfNotExistsContext {
		return this.getTypedRuleContext(IfNotExistsContext, 0) as IfNotExistsContext;
	}
	public createDefinitions(): CreateDefinitionsContext {
		return this.getTypedRuleContext(CreateDefinitionsContext, 0) as CreateDefinitionsContext;
	}
	public tableOption_list(): TableOptionContext[] {
		return this.getTypedRuleContexts(TableOptionContext) as TableOptionContext[];
	}
	public tableOption(i: number): TableOptionContext {
		return this.getTypedRuleContext(TableOptionContext, i) as TableOptionContext;
	}
	public partitionDefinitions(): PartitionDefinitionsContext {
		return this.getTypedRuleContext(PartitionDefinitionsContext, 0) as PartitionDefinitionsContext;
	}
	public AS(): TerminalNode {
		return this.getToken(SqlParser.AS, 0);
	}
	public IGNORE(): TerminalNode {
		return this.getToken(SqlParser.IGNORE, 0);
	}
	public REPLACE(): TerminalNode {
		return this.getToken(SqlParser.REPLACE, 0);
	}
	public COMMA_list(): TerminalNode[] {
	    	return this.getTokens(SqlParser.COMMA);
	}
	public COMMA(i: number): TerminalNode {
		return this.getToken(SqlParser.COMMA, i);
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterQueryCreateTable) {
	 		listener.enterQueryCreateTable(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitQueryCreateTable) {
	 		listener.exitQueryCreateTable(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitQueryCreateTable) {
			return visitor.visitQueryCreateTable(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class CreateTablespaceInnodbContext extends ParserRuleContext {
	public _datafile!: Token;
	public _fileBlockSize!: FileSizeLiteralContext;
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public CREATE(): TerminalNode {
		return this.getToken(SqlParser.CREATE, 0);
	}
	public TABLESPACE(): TerminalNode {
		return this.getToken(SqlParser.TABLESPACE, 0);
	}
	public uid(): UidContext {
		return this.getTypedRuleContext(UidContext, 0) as UidContext;
	}
	public ADD(): TerminalNode {
		return this.getToken(SqlParser.ADD, 0);
	}
	public DATAFILE(): TerminalNode {
		return this.getToken(SqlParser.DATAFILE, 0);
	}
	public STRING_LITERAL(): TerminalNode {
		return this.getToken(SqlParser.STRING_LITERAL, 0);
	}
	public FILE_BLOCK_SIZE(): TerminalNode {
		return this.getToken(SqlParser.FILE_BLOCK_SIZE, 0);
	}
	public EQUAL_SYMBOL_list(): TerminalNode[] {
	    	return this.getTokens(SqlParser.EQUAL_SYMBOL);
	}
	public EQUAL_SYMBOL(i: number): TerminalNode {
		return this.getToken(SqlParser.EQUAL_SYMBOL, i);
	}
	public ENGINE(): TerminalNode {
		return this.getToken(SqlParser.ENGINE, 0);
	}
	public engineName(): EngineNameContext {
		return this.getTypedRuleContext(EngineNameContext, 0) as EngineNameContext;
	}
	public fileSizeLiteral(): FileSizeLiteralContext {
		return this.getTypedRuleContext(FileSizeLiteralContext, 0) as FileSizeLiteralContext;
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_createTablespaceInnodb;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterCreateTablespaceInnodb) {
	 		listener.enterCreateTablespaceInnodb(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitCreateTablespaceInnodb) {
	 		listener.exitCreateTablespaceInnodb(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitCreateTablespaceInnodb) {
			return visitor.visitCreateTablespaceInnodb(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class CreateTablespaceNdbContext extends ParserRuleContext {
	public _datafile!: Token;
	public _extentSize!: FileSizeLiteralContext;
	public _initialSize!: FileSizeLiteralContext;
	public _autoextendSize!: FileSizeLiteralContext;
	public _maxSize!: FileSizeLiteralContext;
	public _comment!: Token;
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public CREATE(): TerminalNode {
		return this.getToken(SqlParser.CREATE, 0);
	}
	public TABLESPACE(): TerminalNode {
		return this.getToken(SqlParser.TABLESPACE, 0);
	}
	public uid_list(): UidContext[] {
		return this.getTypedRuleContexts(UidContext) as UidContext[];
	}
	public uid(i: number): UidContext {
		return this.getTypedRuleContext(UidContext, i) as UidContext;
	}
	public ADD(): TerminalNode {
		return this.getToken(SqlParser.ADD, 0);
	}
	public DATAFILE(): TerminalNode {
		return this.getToken(SqlParser.DATAFILE, 0);
	}
	public USE(): TerminalNode {
		return this.getToken(SqlParser.USE, 0);
	}
	public LOGFILE(): TerminalNode {
		return this.getToken(SqlParser.LOGFILE, 0);
	}
	public GROUP(): TerminalNode {
		return this.getToken(SqlParser.GROUP, 0);
	}
	public ENGINE(): TerminalNode {
		return this.getToken(SqlParser.ENGINE, 0);
	}
	public engineName(): EngineNameContext {
		return this.getTypedRuleContext(EngineNameContext, 0) as EngineNameContext;
	}
	public STRING_LITERAL_list(): TerminalNode[] {
	    	return this.getTokens(SqlParser.STRING_LITERAL);
	}
	public STRING_LITERAL(i: number): TerminalNode {
		return this.getToken(SqlParser.STRING_LITERAL, i);
	}
	public EXTENT_SIZE(): TerminalNode {
		return this.getToken(SqlParser.EXTENT_SIZE, 0);
	}
	public INITIAL_SIZE(): TerminalNode {
		return this.getToken(SqlParser.INITIAL_SIZE, 0);
	}
	public AUTOEXTEND_SIZE(): TerminalNode {
		return this.getToken(SqlParser.AUTOEXTEND_SIZE, 0);
	}
	public MAX_SIZE(): TerminalNode {
		return this.getToken(SqlParser.MAX_SIZE, 0);
	}
	public NODEGROUP(): TerminalNode {
		return this.getToken(SqlParser.NODEGROUP, 0);
	}
	public WAIT(): TerminalNode {
		return this.getToken(SqlParser.WAIT, 0);
	}
	public COMMENT(): TerminalNode {
		return this.getToken(SqlParser.COMMENT, 0);
	}
	public EQUAL_SYMBOL_list(): TerminalNode[] {
	    	return this.getTokens(SqlParser.EQUAL_SYMBOL);
	}
	public EQUAL_SYMBOL(i: number): TerminalNode {
		return this.getToken(SqlParser.EQUAL_SYMBOL, i);
	}
	public fileSizeLiteral_list(): FileSizeLiteralContext[] {
		return this.getTypedRuleContexts(FileSizeLiteralContext) as FileSizeLiteralContext[];
	}
	public fileSizeLiteral(i: number): FileSizeLiteralContext {
		return this.getTypedRuleContext(FileSizeLiteralContext, i) as FileSizeLiteralContext;
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_createTablespaceNdb;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterCreateTablespaceNdb) {
	 		listener.enterCreateTablespaceNdb(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitCreateTablespaceNdb) {
	 		listener.exitCreateTablespaceNdb(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitCreateTablespaceNdb) {
			return visitor.visitCreateTablespaceNdb(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class CreateTriggerContext extends ParserRuleContext {
	public _thisTrigger!: FullIdContext;
	public _triggerTime!: Token;
	public _triggerEvent!: Token;
	public _triggerPlace!: Token;
	public _otherTrigger!: FullIdContext;
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public CREATE(): TerminalNode {
		return this.getToken(SqlParser.CREATE, 0);
	}
	public TRIGGER(): TerminalNode {
		return this.getToken(SqlParser.TRIGGER, 0);
	}
	public ON(): TerminalNode {
		return this.getToken(SqlParser.ON, 0);
	}
	public tableName(): TableNameContext {
		return this.getTypedRuleContext(TableNameContext, 0) as TableNameContext;
	}
	public FOR(): TerminalNode {
		return this.getToken(SqlParser.FOR, 0);
	}
	public EACH(): TerminalNode {
		return this.getToken(SqlParser.EACH, 0);
	}
	public ROW(): TerminalNode {
		return this.getToken(SqlParser.ROW, 0);
	}
	public routineBody(): RoutineBodyContext {
		return this.getTypedRuleContext(RoutineBodyContext, 0) as RoutineBodyContext;
	}
	public fullId_list(): FullIdContext[] {
		return this.getTypedRuleContexts(FullIdContext) as FullIdContext[];
	}
	public fullId(i: number): FullIdContext {
		return this.getTypedRuleContext(FullIdContext, i) as FullIdContext;
	}
	public BEFORE(): TerminalNode {
		return this.getToken(SqlParser.BEFORE, 0);
	}
	public AFTER(): TerminalNode {
		return this.getToken(SqlParser.AFTER, 0);
	}
	public INSERT(): TerminalNode {
		return this.getToken(SqlParser.INSERT, 0);
	}
	public UPDATE(): TerminalNode {
		return this.getToken(SqlParser.UPDATE, 0);
	}
	public DELETE(): TerminalNode {
		return this.getToken(SqlParser.DELETE, 0);
	}
	public ownerStatement(): OwnerStatementContext {
		return this.getTypedRuleContext(OwnerStatementContext, 0) as OwnerStatementContext;
	}
	public FOLLOWS(): TerminalNode {
		return this.getToken(SqlParser.FOLLOWS, 0);
	}
	public PRECEDES(): TerminalNode {
		return this.getToken(SqlParser.PRECEDES, 0);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_createTrigger;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterCreateTrigger) {
	 		listener.enterCreateTrigger(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitCreateTrigger) {
	 		listener.exitCreateTrigger(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitCreateTrigger) {
			return visitor.visitCreateTrigger(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class CreateViewContext extends ParserRuleContext {
	public _algType!: Token;
	public _secContext!: Token;
	public _checkOption!: Token;
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public CREATE(): TerminalNode {
		return this.getToken(SqlParser.CREATE, 0);
	}
	public VIEW(): TerminalNode {
		return this.getToken(SqlParser.VIEW, 0);
	}
	public fullId(): FullIdContext {
		return this.getTypedRuleContext(FullIdContext, 0) as FullIdContext;
	}
	public AS(): TerminalNode {
		return this.getToken(SqlParser.AS, 0);
	}
	public selectStatement(): SelectStatementContext {
		return this.getTypedRuleContext(SelectStatementContext, 0) as SelectStatementContext;
	}
	public OR(): TerminalNode {
		return this.getToken(SqlParser.OR, 0);
	}
	public REPLACE(): TerminalNode {
		return this.getToken(SqlParser.REPLACE, 0);
	}
	public ALGORITHM(): TerminalNode {
		return this.getToken(SqlParser.ALGORITHM, 0);
	}
	public EQUAL_SYMBOL(): TerminalNode {
		return this.getToken(SqlParser.EQUAL_SYMBOL, 0);
	}
	public ownerStatement(): OwnerStatementContext {
		return this.getTypedRuleContext(OwnerStatementContext, 0) as OwnerStatementContext;
	}
	public SQL(): TerminalNode {
		return this.getToken(SqlParser.SQL, 0);
	}
	public SECURITY(): TerminalNode {
		return this.getToken(SqlParser.SECURITY, 0);
	}
	public LR_BRACKET(): TerminalNode {
		return this.getToken(SqlParser.LR_BRACKET, 0);
	}
	public uidList(): UidListContext {
		return this.getTypedRuleContext(UidListContext, 0) as UidListContext;
	}
	public RR_BRACKET(): TerminalNode {
		return this.getToken(SqlParser.RR_BRACKET, 0);
	}
	public WITH(): TerminalNode {
		return this.getToken(SqlParser.WITH, 0);
	}
	public CHECK(): TerminalNode {
		return this.getToken(SqlParser.CHECK, 0);
	}
	public OPTION(): TerminalNode {
		return this.getToken(SqlParser.OPTION, 0);
	}
	public UNDEFINED(): TerminalNode {
		return this.getToken(SqlParser.UNDEFINED, 0);
	}
	public MERGE(): TerminalNode {
		return this.getToken(SqlParser.MERGE, 0);
	}
	public TEMPTABLE(): TerminalNode {
		return this.getToken(SqlParser.TEMPTABLE, 0);
	}
	public DEFINER(): TerminalNode {
		return this.getToken(SqlParser.DEFINER, 0);
	}
	public INVOKER(): TerminalNode {
		return this.getToken(SqlParser.INVOKER, 0);
	}
	public CASCADED(): TerminalNode {
		return this.getToken(SqlParser.CASCADED, 0);
	}
	public LOCAL(): TerminalNode {
		return this.getToken(SqlParser.LOCAL, 0);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_createView;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterCreateView) {
	 		listener.enterCreateView(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitCreateView) {
	 		listener.exitCreateView(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitCreateView) {
			return visitor.visitCreateView(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class CreateDatabaseOptionContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public CHARACTER(): TerminalNode {
		return this.getToken(SqlParser.CHARACTER, 0);
	}
	public SET(): TerminalNode {
		return this.getToken(SqlParser.SET, 0);
	}
	public CHARSET(): TerminalNode {
		return this.getToken(SqlParser.CHARSET, 0);
	}
	public charsetName(): CharsetNameContext {
		return this.getTypedRuleContext(CharsetNameContext, 0) as CharsetNameContext;
	}
	public DEFAULT_list(): TerminalNode[] {
	    	return this.getTokens(SqlParser.DEFAULT);
	}
	public DEFAULT(i: number): TerminalNode {
		return this.getToken(SqlParser.DEFAULT, i);
	}
	public EQUAL_SYMBOL(): TerminalNode {
		return this.getToken(SqlParser.EQUAL_SYMBOL, 0);
	}
	public COLLATE(): TerminalNode {
		return this.getToken(SqlParser.COLLATE, 0);
	}
	public collationName(): CollationNameContext {
		return this.getTypedRuleContext(CollationNameContext, 0) as CollationNameContext;
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_createDatabaseOption;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterCreateDatabaseOption) {
	 		listener.enterCreateDatabaseOption(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitCreateDatabaseOption) {
	 		listener.exitCreateDatabaseOption(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitCreateDatabaseOption) {
			return visitor.visitCreateDatabaseOption(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class OwnerStatementContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public DEFINER(): TerminalNode {
		return this.getToken(SqlParser.DEFINER, 0);
	}
	public EQUAL_SYMBOL(): TerminalNode {
		return this.getToken(SqlParser.EQUAL_SYMBOL, 0);
	}
	public userName(): UserNameContext {
		return this.getTypedRuleContext(UserNameContext, 0) as UserNameContext;
	}
	public CURRENT_USER(): TerminalNode {
		return this.getToken(SqlParser.CURRENT_USER, 0);
	}
	public LR_BRACKET(): TerminalNode {
		return this.getToken(SqlParser.LR_BRACKET, 0);
	}
	public RR_BRACKET(): TerminalNode {
		return this.getToken(SqlParser.RR_BRACKET, 0);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_ownerStatement;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterOwnerStatement) {
	 		listener.enterOwnerStatement(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitOwnerStatement) {
	 		listener.exitOwnerStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitOwnerStatement) {
			return visitor.visitOwnerStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ScheduleExpressionContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_scheduleExpression;
	}
	public copyFrom(ctx: ScheduleExpressionContext): void {
		super.copyFrom(ctx);
	}
}
export class PreciseScheduleContext extends ScheduleExpressionContext {
	constructor(parser: SqlParser, ctx: ScheduleExpressionContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public AT(): TerminalNode {
		return this.getToken(SqlParser.AT, 0);
	}
	public timestampValue(): TimestampValueContext {
		return this.getTypedRuleContext(TimestampValueContext, 0) as TimestampValueContext;
	}
	public intervalExpr_list(): IntervalExprContext[] {
		return this.getTypedRuleContexts(IntervalExprContext) as IntervalExprContext[];
	}
	public intervalExpr(i: number): IntervalExprContext {
		return this.getTypedRuleContext(IntervalExprContext, i) as IntervalExprContext;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterPreciseSchedule) {
	 		listener.enterPreciseSchedule(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitPreciseSchedule) {
	 		listener.exitPreciseSchedule(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitPreciseSchedule) {
			return visitor.visitPreciseSchedule(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class IntervalScheduleContext extends ScheduleExpressionContext {
	public _startTimestamp!: TimestampValueContext;
	public _intervalExpr!: IntervalExprContext;
	public _startIntervals: IntervalExprContext[] = [];
	public _endTimestamp!: TimestampValueContext;
	public _endIntervals: IntervalExprContext[] = [];
	constructor(parser: SqlParser, ctx: ScheduleExpressionContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public EVERY(): TerminalNode {
		return this.getToken(SqlParser.EVERY, 0);
	}
	public intervalType(): IntervalTypeContext {
		return this.getTypedRuleContext(IntervalTypeContext, 0) as IntervalTypeContext;
	}
	public decimalLiteral(): DecimalLiteralContext {
		return this.getTypedRuleContext(DecimalLiteralContext, 0) as DecimalLiteralContext;
	}
	public expression(): ExpressionContext {
		return this.getTypedRuleContext(ExpressionContext, 0) as ExpressionContext;
	}
	public STARTS(): TerminalNode {
		return this.getToken(SqlParser.STARTS, 0);
	}
	public ENDS(): TerminalNode {
		return this.getToken(SqlParser.ENDS, 0);
	}
	public timestampValue_list(): TimestampValueContext[] {
		return this.getTypedRuleContexts(TimestampValueContext) as TimestampValueContext[];
	}
	public timestampValue(i: number): TimestampValueContext {
		return this.getTypedRuleContext(TimestampValueContext, i) as TimestampValueContext;
	}
	public intervalExpr_list(): IntervalExprContext[] {
		return this.getTypedRuleContexts(IntervalExprContext) as IntervalExprContext[];
	}
	public intervalExpr(i: number): IntervalExprContext {
		return this.getTypedRuleContext(IntervalExprContext, i) as IntervalExprContext;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterIntervalSchedule) {
	 		listener.enterIntervalSchedule(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitIntervalSchedule) {
	 		listener.exitIntervalSchedule(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitIntervalSchedule) {
			return visitor.visitIntervalSchedule(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class TimestampValueContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public CURRENT_TIMESTAMP(): TerminalNode {
		return this.getToken(SqlParser.CURRENT_TIMESTAMP, 0);
	}
	public stringLiteral(): StringLiteralContext {
		return this.getTypedRuleContext(StringLiteralContext, 0) as StringLiteralContext;
	}
	public decimalLiteral(): DecimalLiteralContext {
		return this.getTypedRuleContext(DecimalLiteralContext, 0) as DecimalLiteralContext;
	}
	public expression(): ExpressionContext {
		return this.getTypedRuleContext(ExpressionContext, 0) as ExpressionContext;
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_timestampValue;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterTimestampValue) {
	 		listener.enterTimestampValue(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitTimestampValue) {
	 		listener.exitTimestampValue(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitTimestampValue) {
			return visitor.visitTimestampValue(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class IntervalExprContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public PLUS(): TerminalNode {
		return this.getToken(SqlParser.PLUS, 0);
	}
	public INTERVAL(): TerminalNode {
		return this.getToken(SqlParser.INTERVAL, 0);
	}
	public intervalType(): IntervalTypeContext {
		return this.getTypedRuleContext(IntervalTypeContext, 0) as IntervalTypeContext;
	}
	public decimalLiteral(): DecimalLiteralContext {
		return this.getTypedRuleContext(DecimalLiteralContext, 0) as DecimalLiteralContext;
	}
	public expression(): ExpressionContext {
		return this.getTypedRuleContext(ExpressionContext, 0) as ExpressionContext;
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_intervalExpr;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterIntervalExpr) {
	 		listener.enterIntervalExpr(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitIntervalExpr) {
	 		listener.exitIntervalExpr(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitIntervalExpr) {
			return visitor.visitIntervalExpr(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class IntervalTypeContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public intervalTypeBase(): IntervalTypeBaseContext {
		return this.getTypedRuleContext(IntervalTypeBaseContext, 0) as IntervalTypeBaseContext;
	}
	public YEAR(): TerminalNode {
		return this.getToken(SqlParser.YEAR, 0);
	}
	public YEAR_MONTH(): TerminalNode {
		return this.getToken(SqlParser.YEAR_MONTH, 0);
	}
	public DAY_HOUR(): TerminalNode {
		return this.getToken(SqlParser.DAY_HOUR, 0);
	}
	public DAY_MINUTE(): TerminalNode {
		return this.getToken(SqlParser.DAY_MINUTE, 0);
	}
	public DAY_SECOND(): TerminalNode {
		return this.getToken(SqlParser.DAY_SECOND, 0);
	}
	public HOUR_MINUTE(): TerminalNode {
		return this.getToken(SqlParser.HOUR_MINUTE, 0);
	}
	public HOUR_SECOND(): TerminalNode {
		return this.getToken(SqlParser.HOUR_SECOND, 0);
	}
	public MINUTE_SECOND(): TerminalNode {
		return this.getToken(SqlParser.MINUTE_SECOND, 0);
	}
	public SECOND_MICROSECOND(): TerminalNode {
		return this.getToken(SqlParser.SECOND_MICROSECOND, 0);
	}
	public MINUTE_MICROSECOND(): TerminalNode {
		return this.getToken(SqlParser.MINUTE_MICROSECOND, 0);
	}
	public HOUR_MICROSECOND(): TerminalNode {
		return this.getToken(SqlParser.HOUR_MICROSECOND, 0);
	}
	public DAY_MICROSECOND(): TerminalNode {
		return this.getToken(SqlParser.DAY_MICROSECOND, 0);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_intervalType;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterIntervalType) {
	 		listener.enterIntervalType(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitIntervalType) {
	 		listener.exitIntervalType(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitIntervalType) {
			return visitor.visitIntervalType(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class EnableTypeContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public ENABLE(): TerminalNode {
		return this.getToken(SqlParser.ENABLE, 0);
	}
	public DISABLE(): TerminalNode {
		return this.getToken(SqlParser.DISABLE, 0);
	}
	public ON(): TerminalNode {
		return this.getToken(SqlParser.ON, 0);
	}
	public SLAVE(): TerminalNode {
		return this.getToken(SqlParser.SLAVE, 0);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_enableType;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterEnableType) {
	 		listener.enterEnableType(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitEnableType) {
	 		listener.exitEnableType(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitEnableType) {
			return visitor.visitEnableType(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class IndexTypeContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public USING(): TerminalNode {
		return this.getToken(SqlParser.USING, 0);
	}
	public BTREE(): TerminalNode {
		return this.getToken(SqlParser.BTREE, 0);
	}
	public HASH(): TerminalNode {
		return this.getToken(SqlParser.HASH, 0);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_indexType;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterIndexType) {
	 		listener.enterIndexType(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitIndexType) {
	 		listener.exitIndexType(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitIndexType) {
			return visitor.visitIndexType(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class IndexOptionContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public KEY_BLOCK_SIZE(): TerminalNode {
		return this.getToken(SqlParser.KEY_BLOCK_SIZE, 0);
	}
	public fileSizeLiteral(): FileSizeLiteralContext {
		return this.getTypedRuleContext(FileSizeLiteralContext, 0) as FileSizeLiteralContext;
	}
	public EQUAL_SYMBOL(): TerminalNode {
		return this.getToken(SqlParser.EQUAL_SYMBOL, 0);
	}
	public indexType(): IndexTypeContext {
		return this.getTypedRuleContext(IndexTypeContext, 0) as IndexTypeContext;
	}
	public WITH(): TerminalNode {
		return this.getToken(SqlParser.WITH, 0);
	}
	public PARSER(): TerminalNode {
		return this.getToken(SqlParser.PARSER, 0);
	}
	public uid(): UidContext {
		return this.getTypedRuleContext(UidContext, 0) as UidContext;
	}
	public COMMENT(): TerminalNode {
		return this.getToken(SqlParser.COMMENT, 0);
	}
	public STRING_LITERAL(): TerminalNode {
		return this.getToken(SqlParser.STRING_LITERAL, 0);
	}
	public INVISIBLE(): TerminalNode {
		return this.getToken(SqlParser.INVISIBLE, 0);
	}
	public VISIBLE(): TerminalNode {
		return this.getToken(SqlParser.VISIBLE, 0);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_indexOption;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterIndexOption) {
	 		listener.enterIndexOption(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitIndexOption) {
	 		listener.exitIndexOption(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitIndexOption) {
			return visitor.visitIndexOption(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ProcedureParameterContext extends ParserRuleContext {
	public _direction!: Token;
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public uid(): UidContext {
		return this.getTypedRuleContext(UidContext, 0) as UidContext;
	}
	public dataType(): DataTypeContext {
		return this.getTypedRuleContext(DataTypeContext, 0) as DataTypeContext;
	}
	public IN(): TerminalNode {
		return this.getToken(SqlParser.IN, 0);
	}
	public OUT(): TerminalNode {
		return this.getToken(SqlParser.OUT, 0);
	}
	public INOUT(): TerminalNode {
		return this.getToken(SqlParser.INOUT, 0);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_procedureParameter;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterProcedureParameter) {
	 		listener.enterProcedureParameter(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitProcedureParameter) {
	 		listener.exitProcedureParameter(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitProcedureParameter) {
			return visitor.visitProcedureParameter(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class FunctionParameterContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public uid(): UidContext {
		return this.getTypedRuleContext(UidContext, 0) as UidContext;
	}
	public dataType(): DataTypeContext {
		return this.getTypedRuleContext(DataTypeContext, 0) as DataTypeContext;
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_functionParameter;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterFunctionParameter) {
	 		listener.enterFunctionParameter(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitFunctionParameter) {
	 		listener.exitFunctionParameter(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitFunctionParameter) {
			return visitor.visitFunctionParameter(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class RoutineOptionContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_routineOption;
	}
	public copyFrom(ctx: RoutineOptionContext): void {
		super.copyFrom(ctx);
	}
}
export class RoutineBehaviorContext extends RoutineOptionContext {
	constructor(parser: SqlParser, ctx: RoutineOptionContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public DETERMINISTIC(): TerminalNode {
		return this.getToken(SqlParser.DETERMINISTIC, 0);
	}
	public NOT(): TerminalNode {
		return this.getToken(SqlParser.NOT, 0);
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterRoutineBehavior) {
	 		listener.enterRoutineBehavior(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitRoutineBehavior) {
	 		listener.exitRoutineBehavior(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitRoutineBehavior) {
			return visitor.visitRoutineBehavior(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class RoutineLanguageContext extends RoutineOptionContext {
	constructor(parser: SqlParser, ctx: RoutineOptionContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public LANGUAGE(): TerminalNode {
		return this.getToken(SqlParser.LANGUAGE, 0);
	}
	public SQL(): TerminalNode {
		return this.getToken(SqlParser.SQL, 0);
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterRoutineLanguage) {
	 		listener.enterRoutineLanguage(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitRoutineLanguage) {
	 		listener.exitRoutineLanguage(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitRoutineLanguage) {
			return visitor.visitRoutineLanguage(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class RoutineCommentContext extends RoutineOptionContext {
	constructor(parser: SqlParser, ctx: RoutineOptionContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public COMMENT(): TerminalNode {
		return this.getToken(SqlParser.COMMENT, 0);
	}
	public STRING_LITERAL(): TerminalNode {
		return this.getToken(SqlParser.STRING_LITERAL, 0);
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterRoutineComment) {
	 		listener.enterRoutineComment(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitRoutineComment) {
	 		listener.exitRoutineComment(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitRoutineComment) {
			return visitor.visitRoutineComment(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class RoutineSecurityContext extends RoutineOptionContext {
	public _context!: Token;
	constructor(parser: SqlParser, ctx: RoutineOptionContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public SQL(): TerminalNode {
		return this.getToken(SqlParser.SQL, 0);
	}
	public SECURITY(): TerminalNode {
		return this.getToken(SqlParser.SECURITY, 0);
	}
	public DEFINER(): TerminalNode {
		return this.getToken(SqlParser.DEFINER, 0);
	}
	public INVOKER(): TerminalNode {
		return this.getToken(SqlParser.INVOKER, 0);
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterRoutineSecurity) {
	 		listener.enterRoutineSecurity(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitRoutineSecurity) {
	 		listener.exitRoutineSecurity(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitRoutineSecurity) {
			return visitor.visitRoutineSecurity(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class RoutineDataContext extends RoutineOptionContext {
	constructor(parser: SqlParser, ctx: RoutineOptionContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public CONTAINS(): TerminalNode {
		return this.getToken(SqlParser.CONTAINS, 0);
	}
	public SQL(): TerminalNode {
		return this.getToken(SqlParser.SQL, 0);
	}
	public NO(): TerminalNode {
		return this.getToken(SqlParser.NO, 0);
	}
	public READS(): TerminalNode {
		return this.getToken(SqlParser.READS, 0);
	}
	public DATA(): TerminalNode {
		return this.getToken(SqlParser.DATA, 0);
	}
	public MODIFIES(): TerminalNode {
		return this.getToken(SqlParser.MODIFIES, 0);
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterRoutineData) {
	 		listener.enterRoutineData(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitRoutineData) {
	 		listener.exitRoutineData(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitRoutineData) {
			return visitor.visitRoutineData(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ServerOptionContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public HOST(): TerminalNode {
		return this.getToken(SqlParser.HOST, 0);
	}
	public STRING_LITERAL(): TerminalNode {
		return this.getToken(SqlParser.STRING_LITERAL, 0);
	}
	public DATABASE(): TerminalNode {
		return this.getToken(SqlParser.DATABASE, 0);
	}
	public USER(): TerminalNode {
		return this.getToken(SqlParser.USER, 0);
	}
	public PASSWORD(): TerminalNode {
		return this.getToken(SqlParser.PASSWORD, 0);
	}
	public SOCKET(): TerminalNode {
		return this.getToken(SqlParser.SOCKET, 0);
	}
	public OWNER(): TerminalNode {
		return this.getToken(SqlParser.OWNER, 0);
	}
	public PORT(): TerminalNode {
		return this.getToken(SqlParser.PORT, 0);
	}
	public decimalLiteral(): DecimalLiteralContext {
		return this.getTypedRuleContext(DecimalLiteralContext, 0) as DecimalLiteralContext;
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_serverOption;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterServerOption) {
	 		listener.enterServerOption(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitServerOption) {
	 		listener.exitServerOption(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitServerOption) {
			return visitor.visitServerOption(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class CreateDefinitionsContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public LR_BRACKET(): TerminalNode {
		return this.getToken(SqlParser.LR_BRACKET, 0);
	}
	public createDefinition_list(): CreateDefinitionContext[] {
		return this.getTypedRuleContexts(CreateDefinitionContext) as CreateDefinitionContext[];
	}
	public createDefinition(i: number): CreateDefinitionContext {
		return this.getTypedRuleContext(CreateDefinitionContext, i) as CreateDefinitionContext;
	}
	public RR_BRACKET(): TerminalNode {
		return this.getToken(SqlParser.RR_BRACKET, 0);
	}
	public COMMA_list(): TerminalNode[] {
	    	return this.getTokens(SqlParser.COMMA);
	}
	public COMMA(i: number): TerminalNode {
		return this.getToken(SqlParser.COMMA, i);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_createDefinitions;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterCreateDefinitions) {
	 		listener.enterCreateDefinitions(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitCreateDefinitions) {
	 		listener.exitCreateDefinitions(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitCreateDefinitions) {
			return visitor.visitCreateDefinitions(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class CreateDefinitionContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_createDefinition;
	}
	public copyFrom(ctx: CreateDefinitionContext): void {
		super.copyFrom(ctx);
	}
}
export class ColumnDeclarationContext extends CreateDefinitionContext {
	constructor(parser: SqlParser, ctx: CreateDefinitionContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public uid(): UidContext {
		return this.getTypedRuleContext(UidContext, 0) as UidContext;
	}
	public columnDefinition(): ColumnDefinitionContext {
		return this.getTypedRuleContext(ColumnDefinitionContext, 0) as ColumnDefinitionContext;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterColumnDeclaration) {
	 		listener.enterColumnDeclaration(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitColumnDeclaration) {
	 		listener.exitColumnDeclaration(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitColumnDeclaration) {
			return visitor.visitColumnDeclaration(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class ConstraintDeclarationContext extends CreateDefinitionContext {
	constructor(parser: SqlParser, ctx: CreateDefinitionContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public tableConstraint(): TableConstraintContext {
		return this.getTypedRuleContext(TableConstraintContext, 0) as TableConstraintContext;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterConstraintDeclaration) {
	 		listener.enterConstraintDeclaration(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitConstraintDeclaration) {
	 		listener.exitConstraintDeclaration(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitConstraintDeclaration) {
			return visitor.visitConstraintDeclaration(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class IndexDeclarationContext extends CreateDefinitionContext {
	constructor(parser: SqlParser, ctx: CreateDefinitionContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public indexColumnDefinition(): IndexColumnDefinitionContext {
		return this.getTypedRuleContext(IndexColumnDefinitionContext, 0) as IndexColumnDefinitionContext;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterIndexDeclaration) {
	 		listener.enterIndexDeclaration(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitIndexDeclaration) {
	 		listener.exitIndexDeclaration(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitIndexDeclaration) {
			return visitor.visitIndexDeclaration(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ColumnDefinitionContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public dataType(): DataTypeContext {
		return this.getTypedRuleContext(DataTypeContext, 0) as DataTypeContext;
	}
	public columnConstraint_list(): ColumnConstraintContext[] {
		return this.getTypedRuleContexts(ColumnConstraintContext) as ColumnConstraintContext[];
	}
	public columnConstraint(i: number): ColumnConstraintContext {
		return this.getTypedRuleContext(ColumnConstraintContext, i) as ColumnConstraintContext;
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_columnDefinition;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterColumnDefinition) {
	 		listener.enterColumnDefinition(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitColumnDefinition) {
	 		listener.exitColumnDefinition(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitColumnDefinition) {
			return visitor.visitColumnDefinition(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ColumnConstraintContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_columnConstraint;
	}
	public copyFrom(ctx: ColumnConstraintContext): void {
		super.copyFrom(ctx);
	}
}
export class StorageColumnConstraintContext extends ColumnConstraintContext {
	public _storageval!: Token;
	constructor(parser: SqlParser, ctx: ColumnConstraintContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public STORAGE(): TerminalNode {
		return this.getToken(SqlParser.STORAGE, 0);
	}
	public DISK(): TerminalNode {
		return this.getToken(SqlParser.DISK, 0);
	}
	public MEMORY(): TerminalNode {
		return this.getToken(SqlParser.MEMORY, 0);
	}
	public DEFAULT(): TerminalNode {
		return this.getToken(SqlParser.DEFAULT, 0);
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterStorageColumnConstraint) {
	 		listener.enterStorageColumnConstraint(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitStorageColumnConstraint) {
	 		listener.exitStorageColumnConstraint(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitStorageColumnConstraint) {
			return visitor.visitStorageColumnConstraint(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class AutoIncrementColumnConstraintContext extends ColumnConstraintContext {
	constructor(parser: SqlParser, ctx: ColumnConstraintContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public AUTO_INCREMENT(): TerminalNode {
		return this.getToken(SqlParser.AUTO_INCREMENT, 0);
	}
	public ON(): TerminalNode {
		return this.getToken(SqlParser.ON, 0);
	}
	public UPDATE(): TerminalNode {
		return this.getToken(SqlParser.UPDATE, 0);
	}
	public currentTimestamp(): CurrentTimestampContext {
		return this.getTypedRuleContext(CurrentTimestampContext, 0) as CurrentTimestampContext;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterAutoIncrementColumnConstraint) {
	 		listener.enterAutoIncrementColumnConstraint(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitAutoIncrementColumnConstraint) {
	 		listener.exitAutoIncrementColumnConstraint(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitAutoIncrementColumnConstraint) {
			return visitor.visitAutoIncrementColumnConstraint(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class CommentColumnConstraintContext extends ColumnConstraintContext {
	constructor(parser: SqlParser, ctx: ColumnConstraintContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public COMMENT(): TerminalNode {
		return this.getToken(SqlParser.COMMENT, 0);
	}
	public STRING_LITERAL(): TerminalNode {
		return this.getToken(SqlParser.STRING_LITERAL, 0);
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterCommentColumnConstraint) {
	 		listener.enterCommentColumnConstraint(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitCommentColumnConstraint) {
	 		listener.exitCommentColumnConstraint(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitCommentColumnConstraint) {
			return visitor.visitCommentColumnConstraint(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class UniqueKeyColumnConstraintContext extends ColumnConstraintContext {
	constructor(parser: SqlParser, ctx: ColumnConstraintContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public UNIQUE(): TerminalNode {
		return this.getToken(SqlParser.UNIQUE, 0);
	}
	public KEY(): TerminalNode {
		return this.getToken(SqlParser.KEY, 0);
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterUniqueKeyColumnConstraint) {
	 		listener.enterUniqueKeyColumnConstraint(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitUniqueKeyColumnConstraint) {
	 		listener.exitUniqueKeyColumnConstraint(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitUniqueKeyColumnConstraint) {
			return visitor.visitUniqueKeyColumnConstraint(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class SerialDefaultColumnConstraintContext extends ColumnConstraintContext {
	constructor(parser: SqlParser, ctx: ColumnConstraintContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public SERIAL(): TerminalNode {
		return this.getToken(SqlParser.SERIAL, 0);
	}
	public DEFAULT(): TerminalNode {
		return this.getToken(SqlParser.DEFAULT, 0);
	}
	public VALUE(): TerminalNode {
		return this.getToken(SqlParser.VALUE, 0);
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterSerialDefaultColumnConstraint) {
	 		listener.enterSerialDefaultColumnConstraint(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitSerialDefaultColumnConstraint) {
	 		listener.exitSerialDefaultColumnConstraint(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitSerialDefaultColumnConstraint) {
			return visitor.visitSerialDefaultColumnConstraint(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class GeneratedColumnConstraintContext extends ColumnConstraintContext {
	constructor(parser: SqlParser, ctx: ColumnConstraintContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public AS(): TerminalNode {
		return this.getToken(SqlParser.AS, 0);
	}
	public LR_BRACKET(): TerminalNode {
		return this.getToken(SqlParser.LR_BRACKET, 0);
	}
	public expression(): ExpressionContext {
		return this.getTypedRuleContext(ExpressionContext, 0) as ExpressionContext;
	}
	public RR_BRACKET(): TerminalNode {
		return this.getToken(SqlParser.RR_BRACKET, 0);
	}
	public GENERATED(): TerminalNode {
		return this.getToken(SqlParser.GENERATED, 0);
	}
	public ALWAYS(): TerminalNode {
		return this.getToken(SqlParser.ALWAYS, 0);
	}
	public VIRTUAL(): TerminalNode {
		return this.getToken(SqlParser.VIRTUAL, 0);
	}
	public STORED(): TerminalNode {
		return this.getToken(SqlParser.STORED, 0);
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterGeneratedColumnConstraint) {
	 		listener.enterGeneratedColumnConstraint(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitGeneratedColumnConstraint) {
	 		listener.exitGeneratedColumnConstraint(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitGeneratedColumnConstraint) {
			return visitor.visitGeneratedColumnConstraint(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class FormatColumnConstraintContext extends ColumnConstraintContext {
	public _colformat!: Token;
	constructor(parser: SqlParser, ctx: ColumnConstraintContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public COLUMN_FORMAT(): TerminalNode {
		return this.getToken(SqlParser.COLUMN_FORMAT, 0);
	}
	public FIXED(): TerminalNode {
		return this.getToken(SqlParser.FIXED, 0);
	}
	public DYNAMIC(): TerminalNode {
		return this.getToken(SqlParser.DYNAMIC, 0);
	}
	public DEFAULT(): TerminalNode {
		return this.getToken(SqlParser.DEFAULT, 0);
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterFormatColumnConstraint) {
	 		listener.enterFormatColumnConstraint(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitFormatColumnConstraint) {
	 		listener.exitFormatColumnConstraint(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitFormatColumnConstraint) {
			return visitor.visitFormatColumnConstraint(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class CollateColumnConstraintContext extends ColumnConstraintContext {
	constructor(parser: SqlParser, ctx: ColumnConstraintContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public COLLATE(): TerminalNode {
		return this.getToken(SqlParser.COLLATE, 0);
	}
	public collationName(): CollationNameContext {
		return this.getTypedRuleContext(CollationNameContext, 0) as CollationNameContext;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterCollateColumnConstraint) {
	 		listener.enterCollateColumnConstraint(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitCollateColumnConstraint) {
	 		listener.exitCollateColumnConstraint(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitCollateColumnConstraint) {
			return visitor.visitCollateColumnConstraint(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class PrimaryKeyColumnConstraintContext extends ColumnConstraintContext {
	constructor(parser: SqlParser, ctx: ColumnConstraintContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public KEY(): TerminalNode {
		return this.getToken(SqlParser.KEY, 0);
	}
	public PRIMARY(): TerminalNode {
		return this.getToken(SqlParser.PRIMARY, 0);
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterPrimaryKeyColumnConstraint) {
	 		listener.enterPrimaryKeyColumnConstraint(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitPrimaryKeyColumnConstraint) {
	 		listener.exitPrimaryKeyColumnConstraint(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitPrimaryKeyColumnConstraint) {
			return visitor.visitPrimaryKeyColumnConstraint(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class CheckColumnConstraintContext extends ColumnConstraintContext {
	public _name!: UidContext;
	constructor(parser: SqlParser, ctx: ColumnConstraintContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public CHECK(): TerminalNode {
		return this.getToken(SqlParser.CHECK, 0);
	}
	public LR_BRACKET(): TerminalNode {
		return this.getToken(SqlParser.LR_BRACKET, 0);
	}
	public expression(): ExpressionContext {
		return this.getTypedRuleContext(ExpressionContext, 0) as ExpressionContext;
	}
	public RR_BRACKET(): TerminalNode {
		return this.getToken(SqlParser.RR_BRACKET, 0);
	}
	public CONSTRAINT(): TerminalNode {
		return this.getToken(SqlParser.CONSTRAINT, 0);
	}
	public uid(): UidContext {
		return this.getTypedRuleContext(UidContext, 0) as UidContext;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterCheckColumnConstraint) {
	 		listener.enterCheckColumnConstraint(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitCheckColumnConstraint) {
	 		listener.exitCheckColumnConstraint(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitCheckColumnConstraint) {
			return visitor.visitCheckColumnConstraint(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class NullColumnConstraintContext extends ColumnConstraintContext {
	constructor(parser: SqlParser, ctx: ColumnConstraintContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public nullNotnull(): NullNotnullContext {
		return this.getTypedRuleContext(NullNotnullContext, 0) as NullNotnullContext;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterNullColumnConstraint) {
	 		listener.enterNullColumnConstraint(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitNullColumnConstraint) {
	 		listener.exitNullColumnConstraint(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitNullColumnConstraint) {
			return visitor.visitNullColumnConstraint(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class DefaultColumnConstraintContext extends ColumnConstraintContext {
	constructor(parser: SqlParser, ctx: ColumnConstraintContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public DEFAULT(): TerminalNode {
		return this.getToken(SqlParser.DEFAULT, 0);
	}
	public defaultValue(): DefaultValueContext {
		return this.getTypedRuleContext(DefaultValueContext, 0) as DefaultValueContext;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterDefaultColumnConstraint) {
	 		listener.enterDefaultColumnConstraint(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitDefaultColumnConstraint) {
	 		listener.exitDefaultColumnConstraint(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitDefaultColumnConstraint) {
			return visitor.visitDefaultColumnConstraint(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class ReferenceColumnConstraintContext extends ColumnConstraintContext {
	constructor(parser: SqlParser, ctx: ColumnConstraintContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public referenceDefinition(): ReferenceDefinitionContext {
		return this.getTypedRuleContext(ReferenceDefinitionContext, 0) as ReferenceDefinitionContext;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterReferenceColumnConstraint) {
	 		listener.enterReferenceColumnConstraint(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitReferenceColumnConstraint) {
	 		listener.exitReferenceColumnConstraint(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitReferenceColumnConstraint) {
			return visitor.visitReferenceColumnConstraint(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class TableConstraintContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_tableConstraint;
	}
	public copyFrom(ctx: TableConstraintContext): void {
		super.copyFrom(ctx);
	}
}
export class UniqueKeyTableConstraintContext extends TableConstraintContext {
	public _name!: UidContext;
	public _indexFormat!: Token;
	public _index!: UidContext;
	constructor(parser: SqlParser, ctx: TableConstraintContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public UNIQUE(): TerminalNode {
		return this.getToken(SqlParser.UNIQUE, 0);
	}
	public indexColumnNames(): IndexColumnNamesContext {
		return this.getTypedRuleContext(IndexColumnNamesContext, 0) as IndexColumnNamesContext;
	}
	public CONSTRAINT(): TerminalNode {
		return this.getToken(SqlParser.CONSTRAINT, 0);
	}
	public indexType(): IndexTypeContext {
		return this.getTypedRuleContext(IndexTypeContext, 0) as IndexTypeContext;
	}
	public indexOption_list(): IndexOptionContext[] {
		return this.getTypedRuleContexts(IndexOptionContext) as IndexOptionContext[];
	}
	public indexOption(i: number): IndexOptionContext {
		return this.getTypedRuleContext(IndexOptionContext, i) as IndexOptionContext;
	}
	public uid_list(): UidContext[] {
		return this.getTypedRuleContexts(UidContext) as UidContext[];
	}
	public uid(i: number): UidContext {
		return this.getTypedRuleContext(UidContext, i) as UidContext;
	}
	public INDEX(): TerminalNode {
		return this.getToken(SqlParser.INDEX, 0);
	}
	public KEY(): TerminalNode {
		return this.getToken(SqlParser.KEY, 0);
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterUniqueKeyTableConstraint) {
	 		listener.enterUniqueKeyTableConstraint(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitUniqueKeyTableConstraint) {
	 		listener.exitUniqueKeyTableConstraint(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitUniqueKeyTableConstraint) {
			return visitor.visitUniqueKeyTableConstraint(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class CheckTableConstraintContext extends TableConstraintContext {
	public _name!: UidContext;
	constructor(parser: SqlParser, ctx: TableConstraintContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public CHECK(): TerminalNode {
		return this.getToken(SqlParser.CHECK, 0);
	}
	public LR_BRACKET(): TerminalNode {
		return this.getToken(SqlParser.LR_BRACKET, 0);
	}
	public expression(): ExpressionContext {
		return this.getTypedRuleContext(ExpressionContext, 0) as ExpressionContext;
	}
	public RR_BRACKET(): TerminalNode {
		return this.getToken(SqlParser.RR_BRACKET, 0);
	}
	public CONSTRAINT(): TerminalNode {
		return this.getToken(SqlParser.CONSTRAINT, 0);
	}
	public uid(): UidContext {
		return this.getTypedRuleContext(UidContext, 0) as UidContext;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterCheckTableConstraint) {
	 		listener.enterCheckTableConstraint(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitCheckTableConstraint) {
	 		listener.exitCheckTableConstraint(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitCheckTableConstraint) {
			return visitor.visitCheckTableConstraint(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class PrimaryKeyTableConstraintContext extends TableConstraintContext {
	public _name!: UidContext;
	public _index!: UidContext;
	constructor(parser: SqlParser, ctx: TableConstraintContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public PRIMARY(): TerminalNode {
		return this.getToken(SqlParser.PRIMARY, 0);
	}
	public KEY(): TerminalNode {
		return this.getToken(SqlParser.KEY, 0);
	}
	public indexColumnNames(): IndexColumnNamesContext {
		return this.getTypedRuleContext(IndexColumnNamesContext, 0) as IndexColumnNamesContext;
	}
	public CONSTRAINT(): TerminalNode {
		return this.getToken(SqlParser.CONSTRAINT, 0);
	}
	public indexType(): IndexTypeContext {
		return this.getTypedRuleContext(IndexTypeContext, 0) as IndexTypeContext;
	}
	public indexOption_list(): IndexOptionContext[] {
		return this.getTypedRuleContexts(IndexOptionContext) as IndexOptionContext[];
	}
	public indexOption(i: number): IndexOptionContext {
		return this.getTypedRuleContext(IndexOptionContext, i) as IndexOptionContext;
	}
	public uid_list(): UidContext[] {
		return this.getTypedRuleContexts(UidContext) as UidContext[];
	}
	public uid(i: number): UidContext {
		return this.getTypedRuleContext(UidContext, i) as UidContext;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterPrimaryKeyTableConstraint) {
	 		listener.enterPrimaryKeyTableConstraint(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitPrimaryKeyTableConstraint) {
	 		listener.exitPrimaryKeyTableConstraint(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitPrimaryKeyTableConstraint) {
			return visitor.visitPrimaryKeyTableConstraint(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class ForeignKeyTableConstraintContext extends TableConstraintContext {
	public _name!: UidContext;
	public _index!: UidContext;
	constructor(parser: SqlParser, ctx: TableConstraintContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public FOREIGN(): TerminalNode {
		return this.getToken(SqlParser.FOREIGN, 0);
	}
	public KEY(): TerminalNode {
		return this.getToken(SqlParser.KEY, 0);
	}
	public indexColumnNames(): IndexColumnNamesContext {
		return this.getTypedRuleContext(IndexColumnNamesContext, 0) as IndexColumnNamesContext;
	}
	public referenceDefinition(): ReferenceDefinitionContext {
		return this.getTypedRuleContext(ReferenceDefinitionContext, 0) as ReferenceDefinitionContext;
	}
	public CONSTRAINT(): TerminalNode {
		return this.getToken(SqlParser.CONSTRAINT, 0);
	}
	public uid_list(): UidContext[] {
		return this.getTypedRuleContexts(UidContext) as UidContext[];
	}
	public uid(i: number): UidContext {
		return this.getTypedRuleContext(UidContext, i) as UidContext;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterForeignKeyTableConstraint) {
	 		listener.enterForeignKeyTableConstraint(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitForeignKeyTableConstraint) {
	 		listener.exitForeignKeyTableConstraint(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitForeignKeyTableConstraint) {
			return visitor.visitForeignKeyTableConstraint(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ReferenceDefinitionContext extends ParserRuleContext {
	public _matchType!: Token;
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public REFERENCES(): TerminalNode {
		return this.getToken(SqlParser.REFERENCES, 0);
	}
	public tableName(): TableNameContext {
		return this.getTypedRuleContext(TableNameContext, 0) as TableNameContext;
	}
	public indexColumnNames(): IndexColumnNamesContext {
		return this.getTypedRuleContext(IndexColumnNamesContext, 0) as IndexColumnNamesContext;
	}
	public MATCH(): TerminalNode {
		return this.getToken(SqlParser.MATCH, 0);
	}
	public referenceAction(): ReferenceActionContext {
		return this.getTypedRuleContext(ReferenceActionContext, 0) as ReferenceActionContext;
	}
	public FULL(): TerminalNode {
		return this.getToken(SqlParser.FULL, 0);
	}
	public PARTIAL(): TerminalNode {
		return this.getToken(SqlParser.PARTIAL, 0);
	}
	public SIMPLE(): TerminalNode {
		return this.getToken(SqlParser.SIMPLE, 0);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_referenceDefinition;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterReferenceDefinition) {
	 		listener.enterReferenceDefinition(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitReferenceDefinition) {
	 		listener.exitReferenceDefinition(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitReferenceDefinition) {
			return visitor.visitReferenceDefinition(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ReferenceActionContext extends ParserRuleContext {
	public _onDelete!: ReferenceControlTypeContext;
	public _onUpdate!: ReferenceControlTypeContext;
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public ON_list(): TerminalNode[] {
	    	return this.getTokens(SqlParser.ON);
	}
	public ON(i: number): TerminalNode {
		return this.getToken(SqlParser.ON, i);
	}
	public DELETE(): TerminalNode {
		return this.getToken(SqlParser.DELETE, 0);
	}
	public referenceControlType_list(): ReferenceControlTypeContext[] {
		return this.getTypedRuleContexts(ReferenceControlTypeContext) as ReferenceControlTypeContext[];
	}
	public referenceControlType(i: number): ReferenceControlTypeContext {
		return this.getTypedRuleContext(ReferenceControlTypeContext, i) as ReferenceControlTypeContext;
	}
	public UPDATE(): TerminalNode {
		return this.getToken(SqlParser.UPDATE, 0);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_referenceAction;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterReferenceAction) {
	 		listener.enterReferenceAction(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitReferenceAction) {
	 		listener.exitReferenceAction(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitReferenceAction) {
			return visitor.visitReferenceAction(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ReferenceControlTypeContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public RESTRICT(): TerminalNode {
		return this.getToken(SqlParser.RESTRICT, 0);
	}
	public CASCADE(): TerminalNode {
		return this.getToken(SqlParser.CASCADE, 0);
	}
	public SET(): TerminalNode {
		return this.getToken(SqlParser.SET, 0);
	}
	public NULL_LITERAL(): TerminalNode {
		return this.getToken(SqlParser.NULL_LITERAL, 0);
	}
	public NO(): TerminalNode {
		return this.getToken(SqlParser.NO, 0);
	}
	public ACTION(): TerminalNode {
		return this.getToken(SqlParser.ACTION, 0);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_referenceControlType;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterReferenceControlType) {
	 		listener.enterReferenceControlType(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitReferenceControlType) {
	 		listener.exitReferenceControlType(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitReferenceControlType) {
			return visitor.visitReferenceControlType(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class IndexColumnDefinitionContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_indexColumnDefinition;
	}
	public copyFrom(ctx: IndexColumnDefinitionContext): void {
		super.copyFrom(ctx);
	}
}
export class SpecialIndexDeclarationContext extends IndexColumnDefinitionContext {
	public _indexFormat!: Token;
	constructor(parser: SqlParser, ctx: IndexColumnDefinitionContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public indexColumnNames(): IndexColumnNamesContext {
		return this.getTypedRuleContext(IndexColumnNamesContext, 0) as IndexColumnNamesContext;
	}
	public FULLTEXT(): TerminalNode {
		return this.getToken(SqlParser.FULLTEXT, 0);
	}
	public SPATIAL(): TerminalNode {
		return this.getToken(SqlParser.SPATIAL, 0);
	}
	public uid(): UidContext {
		return this.getTypedRuleContext(UidContext, 0) as UidContext;
	}
	public indexOption_list(): IndexOptionContext[] {
		return this.getTypedRuleContexts(IndexOptionContext) as IndexOptionContext[];
	}
	public indexOption(i: number): IndexOptionContext {
		return this.getTypedRuleContext(IndexOptionContext, i) as IndexOptionContext;
	}
	public INDEX(): TerminalNode {
		return this.getToken(SqlParser.INDEX, 0);
	}
	public KEY(): TerminalNode {
		return this.getToken(SqlParser.KEY, 0);
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterSpecialIndexDeclaration) {
	 		listener.enterSpecialIndexDeclaration(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitSpecialIndexDeclaration) {
	 		listener.exitSpecialIndexDeclaration(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitSpecialIndexDeclaration) {
			return visitor.visitSpecialIndexDeclaration(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class SimpleIndexDeclarationContext extends IndexColumnDefinitionContext {
	public _indexFormat!: Token;
	constructor(parser: SqlParser, ctx: IndexColumnDefinitionContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public indexColumnNames(): IndexColumnNamesContext {
		return this.getTypedRuleContext(IndexColumnNamesContext, 0) as IndexColumnNamesContext;
	}
	public INDEX(): TerminalNode {
		return this.getToken(SqlParser.INDEX, 0);
	}
	public KEY(): TerminalNode {
		return this.getToken(SqlParser.KEY, 0);
	}
	public uid(): UidContext {
		return this.getTypedRuleContext(UidContext, 0) as UidContext;
	}
	public indexType(): IndexTypeContext {
		return this.getTypedRuleContext(IndexTypeContext, 0) as IndexTypeContext;
	}
	public indexOption_list(): IndexOptionContext[] {
		return this.getTypedRuleContexts(IndexOptionContext) as IndexOptionContext[];
	}
	public indexOption(i: number): IndexOptionContext {
		return this.getTypedRuleContext(IndexOptionContext, i) as IndexOptionContext;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterSimpleIndexDeclaration) {
	 		listener.enterSimpleIndexDeclaration(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitSimpleIndexDeclaration) {
	 		listener.exitSimpleIndexDeclaration(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitSimpleIndexDeclaration) {
			return visitor.visitSimpleIndexDeclaration(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class TableOptionContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_tableOption;
	}
	public copyFrom(ctx: TableOptionContext): void {
		super.copyFrom(ctx);
	}
}
export class TableOptionEngineContext extends TableOptionContext {
	constructor(parser: SqlParser, ctx: TableOptionContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public ENGINE(): TerminalNode {
		return this.getToken(SqlParser.ENGINE, 0);
	}
	public engineName(): EngineNameContext {
		return this.getTypedRuleContext(EngineNameContext, 0) as EngineNameContext;
	}
	public EQUAL_SYMBOL(): TerminalNode {
		return this.getToken(SqlParser.EQUAL_SYMBOL, 0);
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterTableOptionEngine) {
	 		listener.enterTableOptionEngine(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitTableOptionEngine) {
	 		listener.exitTableOptionEngine(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitTableOptionEngine) {
			return visitor.visitTableOptionEngine(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class TableOptionMaxRowsContext extends TableOptionContext {
	constructor(parser: SqlParser, ctx: TableOptionContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public MAX_ROWS(): TerminalNode {
		return this.getToken(SqlParser.MAX_ROWS, 0);
	}
	public decimalLiteral(): DecimalLiteralContext {
		return this.getTypedRuleContext(DecimalLiteralContext, 0) as DecimalLiteralContext;
	}
	public EQUAL_SYMBOL(): TerminalNode {
		return this.getToken(SqlParser.EQUAL_SYMBOL, 0);
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterTableOptionMaxRows) {
	 		listener.enterTableOptionMaxRows(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitTableOptionMaxRows) {
	 		listener.exitTableOptionMaxRows(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitTableOptionMaxRows) {
			return visitor.visitTableOptionMaxRows(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class TableOptionCollateContext extends TableOptionContext {
	constructor(parser: SqlParser, ctx: TableOptionContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public COLLATE(): TerminalNode {
		return this.getToken(SqlParser.COLLATE, 0);
	}
	public collationName(): CollationNameContext {
		return this.getTypedRuleContext(CollationNameContext, 0) as CollationNameContext;
	}
	public DEFAULT(): TerminalNode {
		return this.getToken(SqlParser.DEFAULT, 0);
	}
	public EQUAL_SYMBOL(): TerminalNode {
		return this.getToken(SqlParser.EQUAL_SYMBOL, 0);
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterTableOptionCollate) {
	 		listener.enterTableOptionCollate(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitTableOptionCollate) {
	 		listener.exitTableOptionCollate(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitTableOptionCollate) {
			return visitor.visitTableOptionCollate(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class TableOptionPersistentContext extends TableOptionContext {
	public _extBoolValue!: Token;
	constructor(parser: SqlParser, ctx: TableOptionContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public STATS_PERSISTENT(): TerminalNode {
		return this.getToken(SqlParser.STATS_PERSISTENT, 0);
	}
	public DEFAULT(): TerminalNode {
		return this.getToken(SqlParser.DEFAULT, 0);
	}
	public ZERO_DECIMAL(): TerminalNode {
		return this.getToken(SqlParser.ZERO_DECIMAL, 0);
	}
	public ONE_DECIMAL(): TerminalNode {
		return this.getToken(SqlParser.ONE_DECIMAL, 0);
	}
	public EQUAL_SYMBOL(): TerminalNode {
		return this.getToken(SqlParser.EQUAL_SYMBOL, 0);
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterTableOptionPersistent) {
	 		listener.enterTableOptionPersistent(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitTableOptionPersistent) {
	 		listener.exitTableOptionPersistent(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitTableOptionPersistent) {
			return visitor.visitTableOptionPersistent(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class TableOptionTablespaceContext extends TableOptionContext {
	constructor(parser: SqlParser, ctx: TableOptionContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public TABLESPACE(): TerminalNode {
		return this.getToken(SqlParser.TABLESPACE, 0);
	}
	public uid(): UidContext {
		return this.getTypedRuleContext(UidContext, 0) as UidContext;
	}
	public tablespaceStorage(): TablespaceStorageContext {
		return this.getTypedRuleContext(TablespaceStorageContext, 0) as TablespaceStorageContext;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterTableOptionTablespace) {
	 		listener.enterTableOptionTablespace(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitTableOptionTablespace) {
	 		listener.exitTableOptionTablespace(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitTableOptionTablespace) {
			return visitor.visitTableOptionTablespace(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class TableOptionPackKeysContext extends TableOptionContext {
	public _extBoolValue!: Token;
	constructor(parser: SqlParser, ctx: TableOptionContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public PACK_KEYS(): TerminalNode {
		return this.getToken(SqlParser.PACK_KEYS, 0);
	}
	public ZERO_DECIMAL(): TerminalNode {
		return this.getToken(SqlParser.ZERO_DECIMAL, 0);
	}
	public ONE_DECIMAL(): TerminalNode {
		return this.getToken(SqlParser.ONE_DECIMAL, 0);
	}
	public DEFAULT(): TerminalNode {
		return this.getToken(SqlParser.DEFAULT, 0);
	}
	public EQUAL_SYMBOL(): TerminalNode {
		return this.getToken(SqlParser.EQUAL_SYMBOL, 0);
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterTableOptionPackKeys) {
	 		listener.enterTableOptionPackKeys(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitTableOptionPackKeys) {
	 		listener.exitTableOptionPackKeys(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitTableOptionPackKeys) {
			return visitor.visitTableOptionPackKeys(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class TableOptionPasswordContext extends TableOptionContext {
	constructor(parser: SqlParser, ctx: TableOptionContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public PASSWORD(): TerminalNode {
		return this.getToken(SqlParser.PASSWORD, 0);
	}
	public STRING_LITERAL(): TerminalNode {
		return this.getToken(SqlParser.STRING_LITERAL, 0);
	}
	public EQUAL_SYMBOL(): TerminalNode {
		return this.getToken(SqlParser.EQUAL_SYMBOL, 0);
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterTableOptionPassword) {
	 		listener.enterTableOptionPassword(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitTableOptionPassword) {
	 		listener.exitTableOptionPassword(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitTableOptionPassword) {
			return visitor.visitTableOptionPassword(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class TableOptionUnionContext extends TableOptionContext {
	constructor(parser: SqlParser, ctx: TableOptionContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public UNION(): TerminalNode {
		return this.getToken(SqlParser.UNION, 0);
	}
	public LR_BRACKET(): TerminalNode {
		return this.getToken(SqlParser.LR_BRACKET, 0);
	}
	public tables(): TablesContext {
		return this.getTypedRuleContext(TablesContext, 0) as TablesContext;
	}
	public RR_BRACKET(): TerminalNode {
		return this.getToken(SqlParser.RR_BRACKET, 0);
	}
	public EQUAL_SYMBOL(): TerminalNode {
		return this.getToken(SqlParser.EQUAL_SYMBOL, 0);
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterTableOptionUnion) {
	 		listener.enterTableOptionUnion(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitTableOptionUnion) {
	 		listener.exitTableOptionUnion(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitTableOptionUnion) {
			return visitor.visitTableOptionUnion(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class TableOptionSamplePageContext extends TableOptionContext {
	constructor(parser: SqlParser, ctx: TableOptionContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public STATS_SAMPLE_PAGES(): TerminalNode {
		return this.getToken(SqlParser.STATS_SAMPLE_PAGES, 0);
	}
	public decimalLiteral(): DecimalLiteralContext {
		return this.getTypedRuleContext(DecimalLiteralContext, 0) as DecimalLiteralContext;
	}
	public EQUAL_SYMBOL(): TerminalNode {
		return this.getToken(SqlParser.EQUAL_SYMBOL, 0);
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterTableOptionSamplePage) {
	 		listener.enterTableOptionSamplePage(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitTableOptionSamplePage) {
	 		listener.exitTableOptionSamplePage(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitTableOptionSamplePage) {
			return visitor.visitTableOptionSamplePage(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class TableOptionCharsetContext extends TableOptionContext {
	constructor(parser: SqlParser, ctx: TableOptionContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public CHARACTER(): TerminalNode {
		return this.getToken(SqlParser.CHARACTER, 0);
	}
	public SET(): TerminalNode {
		return this.getToken(SqlParser.SET, 0);
	}
	public CHARSET(): TerminalNode {
		return this.getToken(SqlParser.CHARSET, 0);
	}
	public charsetName(): CharsetNameContext {
		return this.getTypedRuleContext(CharsetNameContext, 0) as CharsetNameContext;
	}
	public DEFAULT_list(): TerminalNode[] {
	    	return this.getTokens(SqlParser.DEFAULT);
	}
	public DEFAULT(i: number): TerminalNode {
		return this.getToken(SqlParser.DEFAULT, i);
	}
	public EQUAL_SYMBOL(): TerminalNode {
		return this.getToken(SqlParser.EQUAL_SYMBOL, 0);
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterTableOptionCharset) {
	 		listener.enterTableOptionCharset(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitTableOptionCharset) {
	 		listener.exitTableOptionCharset(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitTableOptionCharset) {
			return visitor.visitTableOptionCharset(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class TableOptionIndexDirectoryContext extends TableOptionContext {
	constructor(parser: SqlParser, ctx: TableOptionContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public INDEX(): TerminalNode {
		return this.getToken(SqlParser.INDEX, 0);
	}
	public DIRECTORY(): TerminalNode {
		return this.getToken(SqlParser.DIRECTORY, 0);
	}
	public STRING_LITERAL(): TerminalNode {
		return this.getToken(SqlParser.STRING_LITERAL, 0);
	}
	public EQUAL_SYMBOL(): TerminalNode {
		return this.getToken(SqlParser.EQUAL_SYMBOL, 0);
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterTableOptionIndexDirectory) {
	 		listener.enterTableOptionIndexDirectory(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitTableOptionIndexDirectory) {
	 		listener.exitTableOptionIndexDirectory(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitTableOptionIndexDirectory) {
			return visitor.visitTableOptionIndexDirectory(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class TableOptionKeyBlockSizeContext extends TableOptionContext {
	constructor(parser: SqlParser, ctx: TableOptionContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public KEY_BLOCK_SIZE(): TerminalNode {
		return this.getToken(SqlParser.KEY_BLOCK_SIZE, 0);
	}
	public fileSizeLiteral(): FileSizeLiteralContext {
		return this.getTypedRuleContext(FileSizeLiteralContext, 0) as FileSizeLiteralContext;
	}
	public EQUAL_SYMBOL(): TerminalNode {
		return this.getToken(SqlParser.EQUAL_SYMBOL, 0);
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterTableOptionKeyBlockSize) {
	 		listener.enterTableOptionKeyBlockSize(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitTableOptionKeyBlockSize) {
	 		listener.exitTableOptionKeyBlockSize(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitTableOptionKeyBlockSize) {
			return visitor.visitTableOptionKeyBlockSize(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class TableOptionEncryptionContext extends TableOptionContext {
	constructor(parser: SqlParser, ctx: TableOptionContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public ENCRYPTION(): TerminalNode {
		return this.getToken(SqlParser.ENCRYPTION, 0);
	}
	public STRING_LITERAL(): TerminalNode {
		return this.getToken(SqlParser.STRING_LITERAL, 0);
	}
	public EQUAL_SYMBOL(): TerminalNode {
		return this.getToken(SqlParser.EQUAL_SYMBOL, 0);
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterTableOptionEncryption) {
	 		listener.enterTableOptionEncryption(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitTableOptionEncryption) {
	 		listener.exitTableOptionEncryption(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitTableOptionEncryption) {
			return visitor.visitTableOptionEncryption(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class TableOptionDataDirectoryContext extends TableOptionContext {
	constructor(parser: SqlParser, ctx: TableOptionContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public DATA(): TerminalNode {
		return this.getToken(SqlParser.DATA, 0);
	}
	public DIRECTORY(): TerminalNode {
		return this.getToken(SqlParser.DIRECTORY, 0);
	}
	public STRING_LITERAL(): TerminalNode {
		return this.getToken(SqlParser.STRING_LITERAL, 0);
	}
	public EQUAL_SYMBOL(): TerminalNode {
		return this.getToken(SqlParser.EQUAL_SYMBOL, 0);
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterTableOptionDataDirectory) {
	 		listener.enterTableOptionDataDirectory(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitTableOptionDataDirectory) {
	 		listener.exitTableOptionDataDirectory(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitTableOptionDataDirectory) {
			return visitor.visitTableOptionDataDirectory(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class TableOptionRecalculationContext extends TableOptionContext {
	public _extBoolValue!: Token;
	constructor(parser: SqlParser, ctx: TableOptionContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public STATS_AUTO_RECALC(): TerminalNode {
		return this.getToken(SqlParser.STATS_AUTO_RECALC, 0);
	}
	public DEFAULT(): TerminalNode {
		return this.getToken(SqlParser.DEFAULT, 0);
	}
	public ZERO_DECIMAL(): TerminalNode {
		return this.getToken(SqlParser.ZERO_DECIMAL, 0);
	}
	public ONE_DECIMAL(): TerminalNode {
		return this.getToken(SqlParser.ONE_DECIMAL, 0);
	}
	public EQUAL_SYMBOL(): TerminalNode {
		return this.getToken(SqlParser.EQUAL_SYMBOL, 0);
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterTableOptionRecalculation) {
	 		listener.enterTableOptionRecalculation(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitTableOptionRecalculation) {
	 		listener.exitTableOptionRecalculation(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitTableOptionRecalculation) {
			return visitor.visitTableOptionRecalculation(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class TableOptionAutoIncrementContext extends TableOptionContext {
	constructor(parser: SqlParser, ctx: TableOptionContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public AUTO_INCREMENT(): TerminalNode {
		return this.getToken(SqlParser.AUTO_INCREMENT, 0);
	}
	public decimalLiteral(): DecimalLiteralContext {
		return this.getTypedRuleContext(DecimalLiteralContext, 0) as DecimalLiteralContext;
	}
	public EQUAL_SYMBOL(): TerminalNode {
		return this.getToken(SqlParser.EQUAL_SYMBOL, 0);
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterTableOptionAutoIncrement) {
	 		listener.enterTableOptionAutoIncrement(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitTableOptionAutoIncrement) {
	 		listener.exitTableOptionAutoIncrement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitTableOptionAutoIncrement) {
			return visitor.visitTableOptionAutoIncrement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class TableOptionChecksumContext extends TableOptionContext {
	public _boolValue!: Token;
	constructor(parser: SqlParser, ctx: TableOptionContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public CHECKSUM(): TerminalNode {
		return this.getToken(SqlParser.CHECKSUM, 0);
	}
	public PAGE_CHECKSUM(): TerminalNode {
		return this.getToken(SqlParser.PAGE_CHECKSUM, 0);
	}
	public ZERO_DECIMAL(): TerminalNode {
		return this.getToken(SqlParser.ZERO_DECIMAL, 0);
	}
	public ONE_DECIMAL(): TerminalNode {
		return this.getToken(SqlParser.ONE_DECIMAL, 0);
	}
	public EQUAL_SYMBOL(): TerminalNode {
		return this.getToken(SqlParser.EQUAL_SYMBOL, 0);
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterTableOptionChecksum) {
	 		listener.enterTableOptionChecksum(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitTableOptionChecksum) {
	 		listener.exitTableOptionChecksum(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitTableOptionChecksum) {
			return visitor.visitTableOptionChecksum(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class TableOptionDelayContext extends TableOptionContext {
	public _boolValue!: Token;
	constructor(parser: SqlParser, ctx: TableOptionContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public DELAY_KEY_WRITE(): TerminalNode {
		return this.getToken(SqlParser.DELAY_KEY_WRITE, 0);
	}
	public ZERO_DECIMAL(): TerminalNode {
		return this.getToken(SqlParser.ZERO_DECIMAL, 0);
	}
	public ONE_DECIMAL(): TerminalNode {
		return this.getToken(SqlParser.ONE_DECIMAL, 0);
	}
	public EQUAL_SYMBOL(): TerminalNode {
		return this.getToken(SqlParser.EQUAL_SYMBOL, 0);
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterTableOptionDelay) {
	 		listener.enterTableOptionDelay(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitTableOptionDelay) {
	 		listener.exitTableOptionDelay(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitTableOptionDelay) {
			return visitor.visitTableOptionDelay(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class TableOptionConnectionContext extends TableOptionContext {
	constructor(parser: SqlParser, ctx: TableOptionContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public CONNECTION(): TerminalNode {
		return this.getToken(SqlParser.CONNECTION, 0);
	}
	public STRING_LITERAL(): TerminalNode {
		return this.getToken(SqlParser.STRING_LITERAL, 0);
	}
	public EQUAL_SYMBOL(): TerminalNode {
		return this.getToken(SqlParser.EQUAL_SYMBOL, 0);
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterTableOptionConnection) {
	 		listener.enterTableOptionConnection(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitTableOptionConnection) {
	 		listener.exitTableOptionConnection(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitTableOptionConnection) {
			return visitor.visitTableOptionConnection(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class TableOptionCommentContext extends TableOptionContext {
	constructor(parser: SqlParser, ctx: TableOptionContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public COMMENT(): TerminalNode {
		return this.getToken(SqlParser.COMMENT, 0);
	}
	public STRING_LITERAL(): TerminalNode {
		return this.getToken(SqlParser.STRING_LITERAL, 0);
	}
	public EQUAL_SYMBOL(): TerminalNode {
		return this.getToken(SqlParser.EQUAL_SYMBOL, 0);
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterTableOptionComment) {
	 		listener.enterTableOptionComment(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitTableOptionComment) {
	 		listener.exitTableOptionComment(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitTableOptionComment) {
			return visitor.visitTableOptionComment(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class TableOptionAverageContext extends TableOptionContext {
	constructor(parser: SqlParser, ctx: TableOptionContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public AVG_ROW_LENGTH(): TerminalNode {
		return this.getToken(SqlParser.AVG_ROW_LENGTH, 0);
	}
	public decimalLiteral(): DecimalLiteralContext {
		return this.getTypedRuleContext(DecimalLiteralContext, 0) as DecimalLiteralContext;
	}
	public EQUAL_SYMBOL(): TerminalNode {
		return this.getToken(SqlParser.EQUAL_SYMBOL, 0);
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterTableOptionAverage) {
	 		listener.enterTableOptionAverage(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitTableOptionAverage) {
	 		listener.exitTableOptionAverage(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitTableOptionAverage) {
			return visitor.visitTableOptionAverage(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class TableOptionRowFormatContext extends TableOptionContext {
	public _rowFormat!: Token;
	constructor(parser: SqlParser, ctx: TableOptionContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public ROW_FORMAT(): TerminalNode {
		return this.getToken(SqlParser.ROW_FORMAT, 0);
	}
	public DEFAULT(): TerminalNode {
		return this.getToken(SqlParser.DEFAULT, 0);
	}
	public DYNAMIC(): TerminalNode {
		return this.getToken(SqlParser.DYNAMIC, 0);
	}
	public FIXED(): TerminalNode {
		return this.getToken(SqlParser.FIXED, 0);
	}
	public COMPRESSED(): TerminalNode {
		return this.getToken(SqlParser.COMPRESSED, 0);
	}
	public REDUNDANT(): TerminalNode {
		return this.getToken(SqlParser.REDUNDANT, 0);
	}
	public COMPACT(): TerminalNode {
		return this.getToken(SqlParser.COMPACT, 0);
	}
	public EQUAL_SYMBOL(): TerminalNode {
		return this.getToken(SqlParser.EQUAL_SYMBOL, 0);
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterTableOptionRowFormat) {
	 		listener.enterTableOptionRowFormat(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitTableOptionRowFormat) {
	 		listener.exitTableOptionRowFormat(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitTableOptionRowFormat) {
			return visitor.visitTableOptionRowFormat(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class TableOptionCompressionContext extends TableOptionContext {
	constructor(parser: SqlParser, ctx: TableOptionContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public COMPRESSION(): TerminalNode {
		return this.getToken(SqlParser.COMPRESSION, 0);
	}
	public STRING_LITERAL(): TerminalNode {
		return this.getToken(SqlParser.STRING_LITERAL, 0);
	}
	public ID(): TerminalNode {
		return this.getToken(SqlParser.ID, 0);
	}
	public EQUAL_SYMBOL(): TerminalNode {
		return this.getToken(SqlParser.EQUAL_SYMBOL, 0);
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterTableOptionCompression) {
	 		listener.enterTableOptionCompression(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitTableOptionCompression) {
	 		listener.exitTableOptionCompression(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitTableOptionCompression) {
			return visitor.visitTableOptionCompression(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class TableOptionInsertMethodContext extends TableOptionContext {
	public _insertMethod!: Token;
	constructor(parser: SqlParser, ctx: TableOptionContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public INSERT_METHOD(): TerminalNode {
		return this.getToken(SqlParser.INSERT_METHOD, 0);
	}
	public NO(): TerminalNode {
		return this.getToken(SqlParser.NO, 0);
	}
	public FIRST(): TerminalNode {
		return this.getToken(SqlParser.FIRST, 0);
	}
	public LAST(): TerminalNode {
		return this.getToken(SqlParser.LAST, 0);
	}
	public EQUAL_SYMBOL(): TerminalNode {
		return this.getToken(SqlParser.EQUAL_SYMBOL, 0);
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterTableOptionInsertMethod) {
	 		listener.enterTableOptionInsertMethod(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitTableOptionInsertMethod) {
	 		listener.exitTableOptionInsertMethod(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitTableOptionInsertMethod) {
			return visitor.visitTableOptionInsertMethod(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class TableOptionMinRowsContext extends TableOptionContext {
	constructor(parser: SqlParser, ctx: TableOptionContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public MIN_ROWS(): TerminalNode {
		return this.getToken(SqlParser.MIN_ROWS, 0);
	}
	public decimalLiteral(): DecimalLiteralContext {
		return this.getTypedRuleContext(DecimalLiteralContext, 0) as DecimalLiteralContext;
	}
	public EQUAL_SYMBOL(): TerminalNode {
		return this.getToken(SqlParser.EQUAL_SYMBOL, 0);
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterTableOptionMinRows) {
	 		listener.enterTableOptionMinRows(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitTableOptionMinRows) {
	 		listener.exitTableOptionMinRows(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitTableOptionMinRows) {
			return visitor.visitTableOptionMinRows(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class TablespaceStorageContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public STORAGE(): TerminalNode {
		return this.getToken(SqlParser.STORAGE, 0);
	}
	public DISK(): TerminalNode {
		return this.getToken(SqlParser.DISK, 0);
	}
	public MEMORY(): TerminalNode {
		return this.getToken(SqlParser.MEMORY, 0);
	}
	public DEFAULT(): TerminalNode {
		return this.getToken(SqlParser.DEFAULT, 0);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_tablespaceStorage;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterTablespaceStorage) {
	 		listener.enterTablespaceStorage(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitTablespaceStorage) {
	 		listener.exitTablespaceStorage(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitTablespaceStorage) {
			return visitor.visitTablespaceStorage(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class PartitionDefinitionsContext extends ParserRuleContext {
	public _count!: DecimalLiteralContext;
	public _subCount!: DecimalLiteralContext;
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public PARTITION(): TerminalNode {
		return this.getToken(SqlParser.PARTITION, 0);
	}
	public BY_list(): TerminalNode[] {
	    	return this.getTokens(SqlParser.BY);
	}
	public BY(i: number): TerminalNode {
		return this.getToken(SqlParser.BY, i);
	}
	public partitionFunctionDefinition(): PartitionFunctionDefinitionContext {
		return this.getTypedRuleContext(PartitionFunctionDefinitionContext, 0) as PartitionFunctionDefinitionContext;
	}
	public PARTITIONS(): TerminalNode {
		return this.getToken(SqlParser.PARTITIONS, 0);
	}
	public SUBPARTITION(): TerminalNode {
		return this.getToken(SqlParser.SUBPARTITION, 0);
	}
	public subpartitionFunctionDefinition(): SubpartitionFunctionDefinitionContext {
		return this.getTypedRuleContext(SubpartitionFunctionDefinitionContext, 0) as SubpartitionFunctionDefinitionContext;
	}
	public LR_BRACKET(): TerminalNode {
		return this.getToken(SqlParser.LR_BRACKET, 0);
	}
	public partitionDefinition_list(): PartitionDefinitionContext[] {
		return this.getTypedRuleContexts(PartitionDefinitionContext) as PartitionDefinitionContext[];
	}
	public partitionDefinition(i: number): PartitionDefinitionContext {
		return this.getTypedRuleContext(PartitionDefinitionContext, i) as PartitionDefinitionContext;
	}
	public RR_BRACKET(): TerminalNode {
		return this.getToken(SqlParser.RR_BRACKET, 0);
	}
	public decimalLiteral_list(): DecimalLiteralContext[] {
		return this.getTypedRuleContexts(DecimalLiteralContext) as DecimalLiteralContext[];
	}
	public decimalLiteral(i: number): DecimalLiteralContext {
		return this.getTypedRuleContext(DecimalLiteralContext, i) as DecimalLiteralContext;
	}
	public SUBPARTITIONS(): TerminalNode {
		return this.getToken(SqlParser.SUBPARTITIONS, 0);
	}
	public COMMA_list(): TerminalNode[] {
	    	return this.getTokens(SqlParser.COMMA);
	}
	public COMMA(i: number): TerminalNode {
		return this.getToken(SqlParser.COMMA, i);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_partitionDefinitions;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterPartitionDefinitions) {
	 		listener.enterPartitionDefinitions(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitPartitionDefinitions) {
	 		listener.exitPartitionDefinitions(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitPartitionDefinitions) {
			return visitor.visitPartitionDefinitions(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class PartitionFunctionDefinitionContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_partitionFunctionDefinition;
	}
	public copyFrom(ctx: PartitionFunctionDefinitionContext): void {
		super.copyFrom(ctx);
	}
}
export class PartitionFunctionKeyContext extends PartitionFunctionDefinitionContext {
	public _algType!: Token;
	constructor(parser: SqlParser, ctx: PartitionFunctionDefinitionContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public KEY(): TerminalNode {
		return this.getToken(SqlParser.KEY, 0);
	}
	public LR_BRACKET(): TerminalNode {
		return this.getToken(SqlParser.LR_BRACKET, 0);
	}
	public uidList(): UidListContext {
		return this.getTypedRuleContext(UidListContext, 0) as UidListContext;
	}
	public RR_BRACKET(): TerminalNode {
		return this.getToken(SqlParser.RR_BRACKET, 0);
	}
	public LINEAR(): TerminalNode {
		return this.getToken(SqlParser.LINEAR, 0);
	}
	public ALGORITHM(): TerminalNode {
		return this.getToken(SqlParser.ALGORITHM, 0);
	}
	public EQUAL_SYMBOL(): TerminalNode {
		return this.getToken(SqlParser.EQUAL_SYMBOL, 0);
	}
	public ONE_DECIMAL(): TerminalNode {
		return this.getToken(SqlParser.ONE_DECIMAL, 0);
	}
	public TWO_DECIMAL(): TerminalNode {
		return this.getToken(SqlParser.TWO_DECIMAL, 0);
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterPartitionFunctionKey) {
	 		listener.enterPartitionFunctionKey(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitPartitionFunctionKey) {
	 		listener.exitPartitionFunctionKey(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitPartitionFunctionKey) {
			return visitor.visitPartitionFunctionKey(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class PartitionFunctionHashContext extends PartitionFunctionDefinitionContext {
	constructor(parser: SqlParser, ctx: PartitionFunctionDefinitionContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public HASH(): TerminalNode {
		return this.getToken(SqlParser.HASH, 0);
	}
	public LR_BRACKET(): TerminalNode {
		return this.getToken(SqlParser.LR_BRACKET, 0);
	}
	public expression(): ExpressionContext {
		return this.getTypedRuleContext(ExpressionContext, 0) as ExpressionContext;
	}
	public RR_BRACKET(): TerminalNode {
		return this.getToken(SqlParser.RR_BRACKET, 0);
	}
	public LINEAR(): TerminalNode {
		return this.getToken(SqlParser.LINEAR, 0);
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterPartitionFunctionHash) {
	 		listener.enterPartitionFunctionHash(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitPartitionFunctionHash) {
	 		listener.exitPartitionFunctionHash(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitPartitionFunctionHash) {
			return visitor.visitPartitionFunctionHash(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class PartitionFunctionListContext extends PartitionFunctionDefinitionContext {
	constructor(parser: SqlParser, ctx: PartitionFunctionDefinitionContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public LIST(): TerminalNode {
		return this.getToken(SqlParser.LIST, 0);
	}
	public LR_BRACKET(): TerminalNode {
		return this.getToken(SqlParser.LR_BRACKET, 0);
	}
	public expression(): ExpressionContext {
		return this.getTypedRuleContext(ExpressionContext, 0) as ExpressionContext;
	}
	public RR_BRACKET(): TerminalNode {
		return this.getToken(SqlParser.RR_BRACKET, 0);
	}
	public COLUMNS(): TerminalNode {
		return this.getToken(SqlParser.COLUMNS, 0);
	}
	public uidList(): UidListContext {
		return this.getTypedRuleContext(UidListContext, 0) as UidListContext;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterPartitionFunctionList) {
	 		listener.enterPartitionFunctionList(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitPartitionFunctionList) {
	 		listener.exitPartitionFunctionList(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitPartitionFunctionList) {
			return visitor.visitPartitionFunctionList(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class PartitionFunctionRangeContext extends PartitionFunctionDefinitionContext {
	constructor(parser: SqlParser, ctx: PartitionFunctionDefinitionContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public RANGE(): TerminalNode {
		return this.getToken(SqlParser.RANGE, 0);
	}
	public LR_BRACKET(): TerminalNode {
		return this.getToken(SqlParser.LR_BRACKET, 0);
	}
	public expression(): ExpressionContext {
		return this.getTypedRuleContext(ExpressionContext, 0) as ExpressionContext;
	}
	public RR_BRACKET(): TerminalNode {
		return this.getToken(SqlParser.RR_BRACKET, 0);
	}
	public COLUMNS(): TerminalNode {
		return this.getToken(SqlParser.COLUMNS, 0);
	}
	public uidList(): UidListContext {
		return this.getTypedRuleContext(UidListContext, 0) as UidListContext;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterPartitionFunctionRange) {
	 		listener.enterPartitionFunctionRange(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitPartitionFunctionRange) {
	 		listener.exitPartitionFunctionRange(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitPartitionFunctionRange) {
			return visitor.visitPartitionFunctionRange(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class SubpartitionFunctionDefinitionContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_subpartitionFunctionDefinition;
	}
	public copyFrom(ctx: SubpartitionFunctionDefinitionContext): void {
		super.copyFrom(ctx);
	}
}
export class SubPartitionFunctionHashContext extends SubpartitionFunctionDefinitionContext {
	constructor(parser: SqlParser, ctx: SubpartitionFunctionDefinitionContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public HASH(): TerminalNode {
		return this.getToken(SqlParser.HASH, 0);
	}
	public LR_BRACKET(): TerminalNode {
		return this.getToken(SqlParser.LR_BRACKET, 0);
	}
	public expression(): ExpressionContext {
		return this.getTypedRuleContext(ExpressionContext, 0) as ExpressionContext;
	}
	public RR_BRACKET(): TerminalNode {
		return this.getToken(SqlParser.RR_BRACKET, 0);
	}
	public LINEAR(): TerminalNode {
		return this.getToken(SqlParser.LINEAR, 0);
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterSubPartitionFunctionHash) {
	 		listener.enterSubPartitionFunctionHash(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitSubPartitionFunctionHash) {
	 		listener.exitSubPartitionFunctionHash(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitSubPartitionFunctionHash) {
			return visitor.visitSubPartitionFunctionHash(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class SubPartitionFunctionKeyContext extends SubpartitionFunctionDefinitionContext {
	public _algType!: Token;
	constructor(parser: SqlParser, ctx: SubpartitionFunctionDefinitionContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public KEY(): TerminalNode {
		return this.getToken(SqlParser.KEY, 0);
	}
	public LR_BRACKET(): TerminalNode {
		return this.getToken(SqlParser.LR_BRACKET, 0);
	}
	public uidList(): UidListContext {
		return this.getTypedRuleContext(UidListContext, 0) as UidListContext;
	}
	public RR_BRACKET(): TerminalNode {
		return this.getToken(SqlParser.RR_BRACKET, 0);
	}
	public LINEAR(): TerminalNode {
		return this.getToken(SqlParser.LINEAR, 0);
	}
	public ALGORITHM(): TerminalNode {
		return this.getToken(SqlParser.ALGORITHM, 0);
	}
	public EQUAL_SYMBOL(): TerminalNode {
		return this.getToken(SqlParser.EQUAL_SYMBOL, 0);
	}
	public ONE_DECIMAL(): TerminalNode {
		return this.getToken(SqlParser.ONE_DECIMAL, 0);
	}
	public TWO_DECIMAL(): TerminalNode {
		return this.getToken(SqlParser.TWO_DECIMAL, 0);
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterSubPartitionFunctionKey) {
	 		listener.enterSubPartitionFunctionKey(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitSubPartitionFunctionKey) {
	 		listener.exitSubPartitionFunctionKey(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitSubPartitionFunctionKey) {
			return visitor.visitSubPartitionFunctionKey(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class PartitionDefinitionContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_partitionDefinition;
	}
	public copyFrom(ctx: PartitionDefinitionContext): void {
		super.copyFrom(ctx);
	}
}
export class PartitionComparisionContext extends PartitionDefinitionContext {
	constructor(parser: SqlParser, ctx: PartitionDefinitionContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public PARTITION(): TerminalNode {
		return this.getToken(SqlParser.PARTITION, 0);
	}
	public uid(): UidContext {
		return this.getTypedRuleContext(UidContext, 0) as UidContext;
	}
	public VALUES(): TerminalNode {
		return this.getToken(SqlParser.VALUES, 0);
	}
	public LESS(): TerminalNode {
		return this.getToken(SqlParser.LESS, 0);
	}
	public THAN(): TerminalNode {
		return this.getToken(SqlParser.THAN, 0);
	}
	public LR_BRACKET(): TerminalNode {
		return this.getToken(SqlParser.LR_BRACKET, 0);
	}
	public partitionDefinerAtom_list(): PartitionDefinerAtomContext[] {
		return this.getTypedRuleContexts(PartitionDefinerAtomContext) as PartitionDefinerAtomContext[];
	}
	public partitionDefinerAtom(i: number): PartitionDefinerAtomContext {
		return this.getTypedRuleContext(PartitionDefinerAtomContext, i) as PartitionDefinerAtomContext;
	}
	public RR_BRACKET(): TerminalNode {
		return this.getToken(SqlParser.RR_BRACKET, 0);
	}
	public COMMA_list(): TerminalNode[] {
	    	return this.getTokens(SqlParser.COMMA);
	}
	public COMMA(i: number): TerminalNode {
		return this.getToken(SqlParser.COMMA, i);
	}
	public partitionOption_list(): PartitionOptionContext[] {
		return this.getTypedRuleContexts(PartitionOptionContext) as PartitionOptionContext[];
	}
	public partitionOption(i: number): PartitionOptionContext {
		return this.getTypedRuleContext(PartitionOptionContext, i) as PartitionOptionContext;
	}
	public subpartitionDefinition_list(): SubpartitionDefinitionContext[] {
		return this.getTypedRuleContexts(SubpartitionDefinitionContext) as SubpartitionDefinitionContext[];
	}
	public subpartitionDefinition(i: number): SubpartitionDefinitionContext {
		return this.getTypedRuleContext(SubpartitionDefinitionContext, i) as SubpartitionDefinitionContext;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterPartitionComparision) {
	 		listener.enterPartitionComparision(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitPartitionComparision) {
	 		listener.exitPartitionComparision(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitPartitionComparision) {
			return visitor.visitPartitionComparision(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class PartitionListAtomContext extends PartitionDefinitionContext {
	constructor(parser: SqlParser, ctx: PartitionDefinitionContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public PARTITION(): TerminalNode {
		return this.getToken(SqlParser.PARTITION, 0);
	}
	public uid(): UidContext {
		return this.getTypedRuleContext(UidContext, 0) as UidContext;
	}
	public VALUES(): TerminalNode {
		return this.getToken(SqlParser.VALUES, 0);
	}
	public IN(): TerminalNode {
		return this.getToken(SqlParser.IN, 0);
	}
	public LR_BRACKET(): TerminalNode {
		return this.getToken(SqlParser.LR_BRACKET, 0);
	}
	public partitionDefinerAtom_list(): PartitionDefinerAtomContext[] {
		return this.getTypedRuleContexts(PartitionDefinerAtomContext) as PartitionDefinerAtomContext[];
	}
	public partitionDefinerAtom(i: number): PartitionDefinerAtomContext {
		return this.getTypedRuleContext(PartitionDefinerAtomContext, i) as PartitionDefinerAtomContext;
	}
	public RR_BRACKET(): TerminalNode {
		return this.getToken(SqlParser.RR_BRACKET, 0);
	}
	public COMMA_list(): TerminalNode[] {
	    	return this.getTokens(SqlParser.COMMA);
	}
	public COMMA(i: number): TerminalNode {
		return this.getToken(SqlParser.COMMA, i);
	}
	public partitionOption_list(): PartitionOptionContext[] {
		return this.getTypedRuleContexts(PartitionOptionContext) as PartitionOptionContext[];
	}
	public partitionOption(i: number): PartitionOptionContext {
		return this.getTypedRuleContext(PartitionOptionContext, i) as PartitionOptionContext;
	}
	public subpartitionDefinition_list(): SubpartitionDefinitionContext[] {
		return this.getTypedRuleContexts(SubpartitionDefinitionContext) as SubpartitionDefinitionContext[];
	}
	public subpartitionDefinition(i: number): SubpartitionDefinitionContext {
		return this.getTypedRuleContext(SubpartitionDefinitionContext, i) as SubpartitionDefinitionContext;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterPartitionListAtom) {
	 		listener.enterPartitionListAtom(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitPartitionListAtom) {
	 		listener.exitPartitionListAtom(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitPartitionListAtom) {
			return visitor.visitPartitionListAtom(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class PartitionListVectorContext extends PartitionDefinitionContext {
	constructor(parser: SqlParser, ctx: PartitionDefinitionContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public PARTITION(): TerminalNode {
		return this.getToken(SqlParser.PARTITION, 0);
	}
	public uid(): UidContext {
		return this.getTypedRuleContext(UidContext, 0) as UidContext;
	}
	public VALUES(): TerminalNode {
		return this.getToken(SqlParser.VALUES, 0);
	}
	public IN(): TerminalNode {
		return this.getToken(SqlParser.IN, 0);
	}
	public LR_BRACKET(): TerminalNode {
		return this.getToken(SqlParser.LR_BRACKET, 0);
	}
	public partitionDefinerVector_list(): PartitionDefinerVectorContext[] {
		return this.getTypedRuleContexts(PartitionDefinerVectorContext) as PartitionDefinerVectorContext[];
	}
	public partitionDefinerVector(i: number): PartitionDefinerVectorContext {
		return this.getTypedRuleContext(PartitionDefinerVectorContext, i) as PartitionDefinerVectorContext;
	}
	public RR_BRACKET(): TerminalNode {
		return this.getToken(SqlParser.RR_BRACKET, 0);
	}
	public COMMA_list(): TerminalNode[] {
	    	return this.getTokens(SqlParser.COMMA);
	}
	public COMMA(i: number): TerminalNode {
		return this.getToken(SqlParser.COMMA, i);
	}
	public partitionOption_list(): PartitionOptionContext[] {
		return this.getTypedRuleContexts(PartitionOptionContext) as PartitionOptionContext[];
	}
	public partitionOption(i: number): PartitionOptionContext {
		return this.getTypedRuleContext(PartitionOptionContext, i) as PartitionOptionContext;
	}
	public subpartitionDefinition_list(): SubpartitionDefinitionContext[] {
		return this.getTypedRuleContexts(SubpartitionDefinitionContext) as SubpartitionDefinitionContext[];
	}
	public subpartitionDefinition(i: number): SubpartitionDefinitionContext {
		return this.getTypedRuleContext(SubpartitionDefinitionContext, i) as SubpartitionDefinitionContext;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterPartitionListVector) {
	 		listener.enterPartitionListVector(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitPartitionListVector) {
	 		listener.exitPartitionListVector(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitPartitionListVector) {
			return visitor.visitPartitionListVector(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class PartitionSimpleContext extends PartitionDefinitionContext {
	constructor(parser: SqlParser, ctx: PartitionDefinitionContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public PARTITION(): TerminalNode {
		return this.getToken(SqlParser.PARTITION, 0);
	}
	public uid(): UidContext {
		return this.getTypedRuleContext(UidContext, 0) as UidContext;
	}
	public partitionOption_list(): PartitionOptionContext[] {
		return this.getTypedRuleContexts(PartitionOptionContext) as PartitionOptionContext[];
	}
	public partitionOption(i: number): PartitionOptionContext {
		return this.getTypedRuleContext(PartitionOptionContext, i) as PartitionOptionContext;
	}
	public subpartitionDefinition_list(): SubpartitionDefinitionContext[] {
		return this.getTypedRuleContexts(SubpartitionDefinitionContext) as SubpartitionDefinitionContext[];
	}
	public subpartitionDefinition(i: number): SubpartitionDefinitionContext {
		return this.getTypedRuleContext(SubpartitionDefinitionContext, i) as SubpartitionDefinitionContext;
	}
	public COMMA_list(): TerminalNode[] {
	    	return this.getTokens(SqlParser.COMMA);
	}
	public COMMA(i: number): TerminalNode {
		return this.getToken(SqlParser.COMMA, i);
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterPartitionSimple) {
	 		listener.enterPartitionSimple(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitPartitionSimple) {
	 		listener.exitPartitionSimple(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitPartitionSimple) {
			return visitor.visitPartitionSimple(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class PartitionDefinerAtomContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public constant(): ConstantContext {
		return this.getTypedRuleContext(ConstantContext, 0) as ConstantContext;
	}
	public expression(): ExpressionContext {
		return this.getTypedRuleContext(ExpressionContext, 0) as ExpressionContext;
	}
	public MAXVALUE(): TerminalNode {
		return this.getToken(SqlParser.MAXVALUE, 0);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_partitionDefinerAtom;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterPartitionDefinerAtom) {
	 		listener.enterPartitionDefinerAtom(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitPartitionDefinerAtom) {
	 		listener.exitPartitionDefinerAtom(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitPartitionDefinerAtom) {
			return visitor.visitPartitionDefinerAtom(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class PartitionDefinerVectorContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public LR_BRACKET(): TerminalNode {
		return this.getToken(SqlParser.LR_BRACKET, 0);
	}
	public partitionDefinerAtom_list(): PartitionDefinerAtomContext[] {
		return this.getTypedRuleContexts(PartitionDefinerAtomContext) as PartitionDefinerAtomContext[];
	}
	public partitionDefinerAtom(i: number): PartitionDefinerAtomContext {
		return this.getTypedRuleContext(PartitionDefinerAtomContext, i) as PartitionDefinerAtomContext;
	}
	public RR_BRACKET(): TerminalNode {
		return this.getToken(SqlParser.RR_BRACKET, 0);
	}
	public COMMA_list(): TerminalNode[] {
	    	return this.getTokens(SqlParser.COMMA);
	}
	public COMMA(i: number): TerminalNode {
		return this.getToken(SqlParser.COMMA, i);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_partitionDefinerVector;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterPartitionDefinerVector) {
	 		listener.enterPartitionDefinerVector(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitPartitionDefinerVector) {
	 		listener.exitPartitionDefinerVector(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitPartitionDefinerVector) {
			return visitor.visitPartitionDefinerVector(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class SubpartitionDefinitionContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public SUBPARTITION(): TerminalNode {
		return this.getToken(SqlParser.SUBPARTITION, 0);
	}
	public uid(): UidContext {
		return this.getTypedRuleContext(UidContext, 0) as UidContext;
	}
	public partitionOption_list(): PartitionOptionContext[] {
		return this.getTypedRuleContexts(PartitionOptionContext) as PartitionOptionContext[];
	}
	public partitionOption(i: number): PartitionOptionContext {
		return this.getTypedRuleContext(PartitionOptionContext, i) as PartitionOptionContext;
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_subpartitionDefinition;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterSubpartitionDefinition) {
	 		listener.enterSubpartitionDefinition(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitSubpartitionDefinition) {
	 		listener.exitSubpartitionDefinition(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitSubpartitionDefinition) {
			return visitor.visitSubpartitionDefinition(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class PartitionOptionContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_partitionOption;
	}
	public copyFrom(ctx: PartitionOptionContext): void {
		super.copyFrom(ctx);
	}
}
export class PartitionOptionCommentContext extends PartitionOptionContext {
	public _comment!: Token;
	constructor(parser: SqlParser, ctx: PartitionOptionContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public COMMENT(): TerminalNode {
		return this.getToken(SqlParser.COMMENT, 0);
	}
	public STRING_LITERAL(): TerminalNode {
		return this.getToken(SqlParser.STRING_LITERAL, 0);
	}
	public EQUAL_SYMBOL(): TerminalNode {
		return this.getToken(SqlParser.EQUAL_SYMBOL, 0);
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterPartitionOptionComment) {
	 		listener.enterPartitionOptionComment(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitPartitionOptionComment) {
	 		listener.exitPartitionOptionComment(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitPartitionOptionComment) {
			return visitor.visitPartitionOptionComment(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class PartitionOptionNodeGroupContext extends PartitionOptionContext {
	public _nodegroup!: UidContext;
	constructor(parser: SqlParser, ctx: PartitionOptionContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public NODEGROUP(): TerminalNode {
		return this.getToken(SqlParser.NODEGROUP, 0);
	}
	public uid(): UidContext {
		return this.getTypedRuleContext(UidContext, 0) as UidContext;
	}
	public EQUAL_SYMBOL(): TerminalNode {
		return this.getToken(SqlParser.EQUAL_SYMBOL, 0);
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterPartitionOptionNodeGroup) {
	 		listener.enterPartitionOptionNodeGroup(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitPartitionOptionNodeGroup) {
	 		listener.exitPartitionOptionNodeGroup(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitPartitionOptionNodeGroup) {
			return visitor.visitPartitionOptionNodeGroup(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class PartitionOptionIndexDirectoryContext extends PartitionOptionContext {
	public _indexDirectory!: Token;
	constructor(parser: SqlParser, ctx: PartitionOptionContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public INDEX(): TerminalNode {
		return this.getToken(SqlParser.INDEX, 0);
	}
	public DIRECTORY(): TerminalNode {
		return this.getToken(SqlParser.DIRECTORY, 0);
	}
	public STRING_LITERAL(): TerminalNode {
		return this.getToken(SqlParser.STRING_LITERAL, 0);
	}
	public EQUAL_SYMBOL(): TerminalNode {
		return this.getToken(SqlParser.EQUAL_SYMBOL, 0);
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterPartitionOptionIndexDirectory) {
	 		listener.enterPartitionOptionIndexDirectory(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitPartitionOptionIndexDirectory) {
	 		listener.exitPartitionOptionIndexDirectory(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitPartitionOptionIndexDirectory) {
			return visitor.visitPartitionOptionIndexDirectory(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class PartitionOptionMaxRowsContext extends PartitionOptionContext {
	public _maxRows!: DecimalLiteralContext;
	constructor(parser: SqlParser, ctx: PartitionOptionContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public MAX_ROWS(): TerminalNode {
		return this.getToken(SqlParser.MAX_ROWS, 0);
	}
	public decimalLiteral(): DecimalLiteralContext {
		return this.getTypedRuleContext(DecimalLiteralContext, 0) as DecimalLiteralContext;
	}
	public EQUAL_SYMBOL(): TerminalNode {
		return this.getToken(SqlParser.EQUAL_SYMBOL, 0);
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterPartitionOptionMaxRows) {
	 		listener.enterPartitionOptionMaxRows(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitPartitionOptionMaxRows) {
	 		listener.exitPartitionOptionMaxRows(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitPartitionOptionMaxRows) {
			return visitor.visitPartitionOptionMaxRows(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class PartitionOptionTablespaceContext extends PartitionOptionContext {
	public _tablespace!: UidContext;
	constructor(parser: SqlParser, ctx: PartitionOptionContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public TABLESPACE(): TerminalNode {
		return this.getToken(SqlParser.TABLESPACE, 0);
	}
	public uid(): UidContext {
		return this.getTypedRuleContext(UidContext, 0) as UidContext;
	}
	public EQUAL_SYMBOL(): TerminalNode {
		return this.getToken(SqlParser.EQUAL_SYMBOL, 0);
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterPartitionOptionTablespace) {
	 		listener.enterPartitionOptionTablespace(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitPartitionOptionTablespace) {
	 		listener.exitPartitionOptionTablespace(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitPartitionOptionTablespace) {
			return visitor.visitPartitionOptionTablespace(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class PartitionOptionEngineContext extends PartitionOptionContext {
	constructor(parser: SqlParser, ctx: PartitionOptionContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public ENGINE(): TerminalNode {
		return this.getToken(SqlParser.ENGINE, 0);
	}
	public engineName(): EngineNameContext {
		return this.getTypedRuleContext(EngineNameContext, 0) as EngineNameContext;
	}
	public STORAGE(): TerminalNode {
		return this.getToken(SqlParser.STORAGE, 0);
	}
	public EQUAL_SYMBOL(): TerminalNode {
		return this.getToken(SqlParser.EQUAL_SYMBOL, 0);
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterPartitionOptionEngine) {
	 		listener.enterPartitionOptionEngine(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitPartitionOptionEngine) {
	 		listener.exitPartitionOptionEngine(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitPartitionOptionEngine) {
			return visitor.visitPartitionOptionEngine(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class PartitionOptionMinRowsContext extends PartitionOptionContext {
	public _minRows!: DecimalLiteralContext;
	constructor(parser: SqlParser, ctx: PartitionOptionContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public MIN_ROWS(): TerminalNode {
		return this.getToken(SqlParser.MIN_ROWS, 0);
	}
	public decimalLiteral(): DecimalLiteralContext {
		return this.getTypedRuleContext(DecimalLiteralContext, 0) as DecimalLiteralContext;
	}
	public EQUAL_SYMBOL(): TerminalNode {
		return this.getToken(SqlParser.EQUAL_SYMBOL, 0);
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterPartitionOptionMinRows) {
	 		listener.enterPartitionOptionMinRows(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitPartitionOptionMinRows) {
	 		listener.exitPartitionOptionMinRows(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitPartitionOptionMinRows) {
			return visitor.visitPartitionOptionMinRows(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class PartitionOptionDataDirectoryContext extends PartitionOptionContext {
	public _dataDirectory!: Token;
	constructor(parser: SqlParser, ctx: PartitionOptionContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public DATA(): TerminalNode {
		return this.getToken(SqlParser.DATA, 0);
	}
	public DIRECTORY(): TerminalNode {
		return this.getToken(SqlParser.DIRECTORY, 0);
	}
	public STRING_LITERAL(): TerminalNode {
		return this.getToken(SqlParser.STRING_LITERAL, 0);
	}
	public EQUAL_SYMBOL(): TerminalNode {
		return this.getToken(SqlParser.EQUAL_SYMBOL, 0);
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterPartitionOptionDataDirectory) {
	 		listener.enterPartitionOptionDataDirectory(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitPartitionOptionDataDirectory) {
	 		listener.exitPartitionOptionDataDirectory(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitPartitionOptionDataDirectory) {
			return visitor.visitPartitionOptionDataDirectory(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class AlterDatabaseContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_alterDatabase;
	}
	public copyFrom(ctx: AlterDatabaseContext): void {
		super.copyFrom(ctx);
	}
}
export class AlterUpgradeNameContext extends AlterDatabaseContext {
	public _dbFormat!: Token;
	constructor(parser: SqlParser, ctx: AlterDatabaseContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public ALTER(): TerminalNode {
		return this.getToken(SqlParser.ALTER, 0);
	}
	public uid(): UidContext {
		return this.getTypedRuleContext(UidContext, 0) as UidContext;
	}
	public UPGRADE(): TerminalNode {
		return this.getToken(SqlParser.UPGRADE, 0);
	}
	public DATA(): TerminalNode {
		return this.getToken(SqlParser.DATA, 0);
	}
	public DIRECTORY(): TerminalNode {
		return this.getToken(SqlParser.DIRECTORY, 0);
	}
	public NAME(): TerminalNode {
		return this.getToken(SqlParser.NAME, 0);
	}
	public DATABASE(): TerminalNode {
		return this.getToken(SqlParser.DATABASE, 0);
	}
	public SCHEMA(): TerminalNode {
		return this.getToken(SqlParser.SCHEMA, 0);
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterAlterUpgradeName) {
	 		listener.enterAlterUpgradeName(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitAlterUpgradeName) {
	 		listener.exitAlterUpgradeName(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitAlterUpgradeName) {
			return visitor.visitAlterUpgradeName(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class AlterSimpleDatabaseContext extends AlterDatabaseContext {
	public _dbFormat!: Token;
	constructor(parser: SqlParser, ctx: AlterDatabaseContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public ALTER(): TerminalNode {
		return this.getToken(SqlParser.ALTER, 0);
	}
	public DATABASE(): TerminalNode {
		return this.getToken(SqlParser.DATABASE, 0);
	}
	public SCHEMA(): TerminalNode {
		return this.getToken(SqlParser.SCHEMA, 0);
	}
	public uid(): UidContext {
		return this.getTypedRuleContext(UidContext, 0) as UidContext;
	}
	public createDatabaseOption_list(): CreateDatabaseOptionContext[] {
		return this.getTypedRuleContexts(CreateDatabaseOptionContext) as CreateDatabaseOptionContext[];
	}
	public createDatabaseOption(i: number): CreateDatabaseOptionContext {
		return this.getTypedRuleContext(CreateDatabaseOptionContext, i) as CreateDatabaseOptionContext;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterAlterSimpleDatabase) {
	 		listener.enterAlterSimpleDatabase(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitAlterSimpleDatabase) {
	 		listener.exitAlterSimpleDatabase(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitAlterSimpleDatabase) {
			return visitor.visitAlterSimpleDatabase(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class AlterEventContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public ALTER(): TerminalNode {
		return this.getToken(SqlParser.ALTER, 0);
	}
	public EVENT(): TerminalNode {
		return this.getToken(SqlParser.EVENT, 0);
	}
	public fullId_list(): FullIdContext[] {
		return this.getTypedRuleContexts(FullIdContext) as FullIdContext[];
	}
	public fullId(i: number): FullIdContext {
		return this.getTypedRuleContext(FullIdContext, i) as FullIdContext;
	}
	public ownerStatement(): OwnerStatementContext {
		return this.getTypedRuleContext(OwnerStatementContext, 0) as OwnerStatementContext;
	}
	public ON_list(): TerminalNode[] {
	    	return this.getTokens(SqlParser.ON);
	}
	public ON(i: number): TerminalNode {
		return this.getToken(SqlParser.ON, i);
	}
	public SCHEDULE(): TerminalNode {
		return this.getToken(SqlParser.SCHEDULE, 0);
	}
	public scheduleExpression(): ScheduleExpressionContext {
		return this.getTypedRuleContext(ScheduleExpressionContext, 0) as ScheduleExpressionContext;
	}
	public COMPLETION(): TerminalNode {
		return this.getToken(SqlParser.COMPLETION, 0);
	}
	public PRESERVE(): TerminalNode {
		return this.getToken(SqlParser.PRESERVE, 0);
	}
	public RENAME(): TerminalNode {
		return this.getToken(SqlParser.RENAME, 0);
	}
	public TO(): TerminalNode {
		return this.getToken(SqlParser.TO, 0);
	}
	public enableType(): EnableTypeContext {
		return this.getTypedRuleContext(EnableTypeContext, 0) as EnableTypeContext;
	}
	public COMMENT(): TerminalNode {
		return this.getToken(SqlParser.COMMENT, 0);
	}
	public STRING_LITERAL(): TerminalNode {
		return this.getToken(SqlParser.STRING_LITERAL, 0);
	}
	public DO(): TerminalNode {
		return this.getToken(SqlParser.DO, 0);
	}
	public routineBody(): RoutineBodyContext {
		return this.getTypedRuleContext(RoutineBodyContext, 0) as RoutineBodyContext;
	}
	public NOT(): TerminalNode {
		return this.getToken(SqlParser.NOT, 0);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_alterEvent;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterAlterEvent) {
	 		listener.enterAlterEvent(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitAlterEvent) {
	 		listener.exitAlterEvent(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitAlterEvent) {
			return visitor.visitAlterEvent(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class AlterFunctionContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public ALTER(): TerminalNode {
		return this.getToken(SqlParser.ALTER, 0);
	}
	public FUNCTION(): TerminalNode {
		return this.getToken(SqlParser.FUNCTION, 0);
	}
	public fullId(): FullIdContext {
		return this.getTypedRuleContext(FullIdContext, 0) as FullIdContext;
	}
	public routineOption_list(): RoutineOptionContext[] {
		return this.getTypedRuleContexts(RoutineOptionContext) as RoutineOptionContext[];
	}
	public routineOption(i: number): RoutineOptionContext {
		return this.getTypedRuleContext(RoutineOptionContext, i) as RoutineOptionContext;
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_alterFunction;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterAlterFunction) {
	 		listener.enterAlterFunction(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitAlterFunction) {
	 		listener.exitAlterFunction(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitAlterFunction) {
			return visitor.visitAlterFunction(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class AlterInstanceContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public ALTER(): TerminalNode {
		return this.getToken(SqlParser.ALTER, 0);
	}
	public INSTANCE(): TerminalNode {
		return this.getToken(SqlParser.INSTANCE, 0);
	}
	public ROTATE(): TerminalNode {
		return this.getToken(SqlParser.ROTATE, 0);
	}
	public INNODB(): TerminalNode {
		return this.getToken(SqlParser.INNODB, 0);
	}
	public MASTER(): TerminalNode {
		return this.getToken(SqlParser.MASTER, 0);
	}
	public KEY(): TerminalNode {
		return this.getToken(SqlParser.KEY, 0);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_alterInstance;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterAlterInstance) {
	 		listener.enterAlterInstance(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitAlterInstance) {
	 		listener.exitAlterInstance(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitAlterInstance) {
			return visitor.visitAlterInstance(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class AlterLogfileGroupContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public ALTER(): TerminalNode {
		return this.getToken(SqlParser.ALTER, 0);
	}
	public LOGFILE(): TerminalNode {
		return this.getToken(SqlParser.LOGFILE, 0);
	}
	public GROUP(): TerminalNode {
		return this.getToken(SqlParser.GROUP, 0);
	}
	public uid(): UidContext {
		return this.getTypedRuleContext(UidContext, 0) as UidContext;
	}
	public ADD(): TerminalNode {
		return this.getToken(SqlParser.ADD, 0);
	}
	public UNDOFILE(): TerminalNode {
		return this.getToken(SqlParser.UNDOFILE, 0);
	}
	public STRING_LITERAL(): TerminalNode {
		return this.getToken(SqlParser.STRING_LITERAL, 0);
	}
	public ENGINE(): TerminalNode {
		return this.getToken(SqlParser.ENGINE, 0);
	}
	public engineName(): EngineNameContext {
		return this.getTypedRuleContext(EngineNameContext, 0) as EngineNameContext;
	}
	public INITIAL_SIZE(): TerminalNode {
		return this.getToken(SqlParser.INITIAL_SIZE, 0);
	}
	public fileSizeLiteral(): FileSizeLiteralContext {
		return this.getTypedRuleContext(FileSizeLiteralContext, 0) as FileSizeLiteralContext;
	}
	public WAIT(): TerminalNode {
		return this.getToken(SqlParser.WAIT, 0);
	}
	public EQUAL_SYMBOL_list(): TerminalNode[] {
	    	return this.getTokens(SqlParser.EQUAL_SYMBOL);
	}
	public EQUAL_SYMBOL(i: number): TerminalNode {
		return this.getToken(SqlParser.EQUAL_SYMBOL, i);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_alterLogfileGroup;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterAlterLogfileGroup) {
	 		listener.enterAlterLogfileGroup(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitAlterLogfileGroup) {
	 		listener.exitAlterLogfileGroup(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitAlterLogfileGroup) {
			return visitor.visitAlterLogfileGroup(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class AlterProcedureContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public ALTER(): TerminalNode {
		return this.getToken(SqlParser.ALTER, 0);
	}
	public PROCEDURE(): TerminalNode {
		return this.getToken(SqlParser.PROCEDURE, 0);
	}
	public fullId(): FullIdContext {
		return this.getTypedRuleContext(FullIdContext, 0) as FullIdContext;
	}
	public routineOption_list(): RoutineOptionContext[] {
		return this.getTypedRuleContexts(RoutineOptionContext) as RoutineOptionContext[];
	}
	public routineOption(i: number): RoutineOptionContext {
		return this.getTypedRuleContext(RoutineOptionContext, i) as RoutineOptionContext;
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_alterProcedure;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterAlterProcedure) {
	 		listener.enterAlterProcedure(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitAlterProcedure) {
	 		listener.exitAlterProcedure(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitAlterProcedure) {
			return visitor.visitAlterProcedure(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class AlterServerContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public ALTER(): TerminalNode {
		return this.getToken(SqlParser.ALTER, 0);
	}
	public SERVER(): TerminalNode {
		return this.getToken(SqlParser.SERVER, 0);
	}
	public uid(): UidContext {
		return this.getTypedRuleContext(UidContext, 0) as UidContext;
	}
	public OPTIONS(): TerminalNode {
		return this.getToken(SqlParser.OPTIONS, 0);
	}
	public LR_BRACKET(): TerminalNode {
		return this.getToken(SqlParser.LR_BRACKET, 0);
	}
	public serverOption_list(): ServerOptionContext[] {
		return this.getTypedRuleContexts(ServerOptionContext) as ServerOptionContext[];
	}
	public serverOption(i: number): ServerOptionContext {
		return this.getTypedRuleContext(ServerOptionContext, i) as ServerOptionContext;
	}
	public RR_BRACKET(): TerminalNode {
		return this.getToken(SqlParser.RR_BRACKET, 0);
	}
	public COMMA_list(): TerminalNode[] {
	    	return this.getTokens(SqlParser.COMMA);
	}
	public COMMA(i: number): TerminalNode {
		return this.getToken(SqlParser.COMMA, i);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_alterServer;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterAlterServer) {
	 		listener.enterAlterServer(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitAlterServer) {
	 		listener.exitAlterServer(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitAlterServer) {
			return visitor.visitAlterServer(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class AlterTableContext extends ParserRuleContext {
	public _intimeAction!: Token;
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public ALTER(): TerminalNode {
		return this.getToken(SqlParser.ALTER, 0);
	}
	public TABLE(): TerminalNode {
		return this.getToken(SqlParser.TABLE, 0);
	}
	public tableName(): TableNameContext {
		return this.getTypedRuleContext(TableNameContext, 0) as TableNameContext;
	}
	public IGNORE(): TerminalNode {
		return this.getToken(SqlParser.IGNORE, 0);
	}
	public alterSpecification_list(): AlterSpecificationContext[] {
		return this.getTypedRuleContexts(AlterSpecificationContext) as AlterSpecificationContext[];
	}
	public alterSpecification(i: number): AlterSpecificationContext {
		return this.getTypedRuleContext(AlterSpecificationContext, i) as AlterSpecificationContext;
	}
	public partitionDefinitions(): PartitionDefinitionsContext {
		return this.getTypedRuleContext(PartitionDefinitionsContext, 0) as PartitionDefinitionsContext;
	}
	public ONLINE(): TerminalNode {
		return this.getToken(SqlParser.ONLINE, 0);
	}
	public OFFLINE(): TerminalNode {
		return this.getToken(SqlParser.OFFLINE, 0);
	}
	public COMMA_list(): TerminalNode[] {
	    	return this.getTokens(SqlParser.COMMA);
	}
	public COMMA(i: number): TerminalNode {
		return this.getToken(SqlParser.COMMA, i);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_alterTable;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterAlterTable) {
	 		listener.enterAlterTable(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitAlterTable) {
	 		listener.exitAlterTable(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitAlterTable) {
			return visitor.visitAlterTable(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class AlterTablespaceContext extends ParserRuleContext {
	public _objectAction!: Token;
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public ALTER(): TerminalNode {
		return this.getToken(SqlParser.ALTER, 0);
	}
	public TABLESPACE(): TerminalNode {
		return this.getToken(SqlParser.TABLESPACE, 0);
	}
	public uid(): UidContext {
		return this.getTypedRuleContext(UidContext, 0) as UidContext;
	}
	public DATAFILE(): TerminalNode {
		return this.getToken(SqlParser.DATAFILE, 0);
	}
	public STRING_LITERAL(): TerminalNode {
		return this.getToken(SqlParser.STRING_LITERAL, 0);
	}
	public ENGINE(): TerminalNode {
		return this.getToken(SqlParser.ENGINE, 0);
	}
	public engineName(): EngineNameContext {
		return this.getTypedRuleContext(EngineNameContext, 0) as EngineNameContext;
	}
	public ADD(): TerminalNode {
		return this.getToken(SqlParser.ADD, 0);
	}
	public DROP(): TerminalNode {
		return this.getToken(SqlParser.DROP, 0);
	}
	public INITIAL_SIZE(): TerminalNode {
		return this.getToken(SqlParser.INITIAL_SIZE, 0);
	}
	public EQUAL_SYMBOL_list(): TerminalNode[] {
	    	return this.getTokens(SqlParser.EQUAL_SYMBOL);
	}
	public EQUAL_SYMBOL(i: number): TerminalNode {
		return this.getToken(SqlParser.EQUAL_SYMBOL, i);
	}
	public fileSizeLiteral(): FileSizeLiteralContext {
		return this.getTypedRuleContext(FileSizeLiteralContext, 0) as FileSizeLiteralContext;
	}
	public WAIT(): TerminalNode {
		return this.getToken(SqlParser.WAIT, 0);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_alterTablespace;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterAlterTablespace) {
	 		listener.enterAlterTablespace(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitAlterTablespace) {
	 		listener.exitAlterTablespace(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitAlterTablespace) {
			return visitor.visitAlterTablespace(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class AlterViewContext extends ParserRuleContext {
	public _algType!: Token;
	public _secContext!: Token;
	public _checkOpt!: Token;
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public ALTER(): TerminalNode {
		return this.getToken(SqlParser.ALTER, 0);
	}
	public VIEW(): TerminalNode {
		return this.getToken(SqlParser.VIEW, 0);
	}
	public fullId(): FullIdContext {
		return this.getTypedRuleContext(FullIdContext, 0) as FullIdContext;
	}
	public AS(): TerminalNode {
		return this.getToken(SqlParser.AS, 0);
	}
	public selectStatement(): SelectStatementContext {
		return this.getTypedRuleContext(SelectStatementContext, 0) as SelectStatementContext;
	}
	public ALGORITHM(): TerminalNode {
		return this.getToken(SqlParser.ALGORITHM, 0);
	}
	public EQUAL_SYMBOL(): TerminalNode {
		return this.getToken(SqlParser.EQUAL_SYMBOL, 0);
	}
	public ownerStatement(): OwnerStatementContext {
		return this.getTypedRuleContext(OwnerStatementContext, 0) as OwnerStatementContext;
	}
	public SQL(): TerminalNode {
		return this.getToken(SqlParser.SQL, 0);
	}
	public SECURITY(): TerminalNode {
		return this.getToken(SqlParser.SECURITY, 0);
	}
	public LR_BRACKET(): TerminalNode {
		return this.getToken(SqlParser.LR_BRACKET, 0);
	}
	public uidList(): UidListContext {
		return this.getTypedRuleContext(UidListContext, 0) as UidListContext;
	}
	public RR_BRACKET(): TerminalNode {
		return this.getToken(SqlParser.RR_BRACKET, 0);
	}
	public WITH(): TerminalNode {
		return this.getToken(SqlParser.WITH, 0);
	}
	public CHECK(): TerminalNode {
		return this.getToken(SqlParser.CHECK, 0);
	}
	public OPTION(): TerminalNode {
		return this.getToken(SqlParser.OPTION, 0);
	}
	public UNDEFINED(): TerminalNode {
		return this.getToken(SqlParser.UNDEFINED, 0);
	}
	public MERGE(): TerminalNode {
		return this.getToken(SqlParser.MERGE, 0);
	}
	public TEMPTABLE(): TerminalNode {
		return this.getToken(SqlParser.TEMPTABLE, 0);
	}
	public DEFINER(): TerminalNode {
		return this.getToken(SqlParser.DEFINER, 0);
	}
	public INVOKER(): TerminalNode {
		return this.getToken(SqlParser.INVOKER, 0);
	}
	public CASCADED(): TerminalNode {
		return this.getToken(SqlParser.CASCADED, 0);
	}
	public LOCAL(): TerminalNode {
		return this.getToken(SqlParser.LOCAL, 0);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_alterView;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterAlterView) {
	 		listener.enterAlterView(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitAlterView) {
	 		listener.exitAlterView(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitAlterView) {
			return visitor.visitAlterView(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class AlterSpecificationContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_alterSpecification;
	}
	public copyFrom(ctx: AlterSpecificationContext): void {
		super.copyFrom(ctx);
	}
}
export class AlterByDisableKeysContext extends AlterSpecificationContext {
	constructor(parser: SqlParser, ctx: AlterSpecificationContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public DISABLE(): TerminalNode {
		return this.getToken(SqlParser.DISABLE, 0);
	}
	public KEYS(): TerminalNode {
		return this.getToken(SqlParser.KEYS, 0);
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterAlterByDisableKeys) {
	 		listener.enterAlterByDisableKeys(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitAlterByDisableKeys) {
	 		listener.exitAlterByDisableKeys(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitAlterByDisableKeys) {
			return visitor.visitAlterByDisableKeys(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class AlterByDefaultCharsetContext extends AlterSpecificationContext {
	constructor(parser: SqlParser, ctx: AlterSpecificationContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public CHARACTER(): TerminalNode {
		return this.getToken(SqlParser.CHARACTER, 0);
	}
	public SET(): TerminalNode {
		return this.getToken(SqlParser.SET, 0);
	}
	public EQUAL_SYMBOL_list(): TerminalNode[] {
	    	return this.getTokens(SqlParser.EQUAL_SYMBOL);
	}
	public EQUAL_SYMBOL(i: number): TerminalNode {
		return this.getToken(SqlParser.EQUAL_SYMBOL, i);
	}
	public charsetName(): CharsetNameContext {
		return this.getTypedRuleContext(CharsetNameContext, 0) as CharsetNameContext;
	}
	public DEFAULT(): TerminalNode {
		return this.getToken(SqlParser.DEFAULT, 0);
	}
	public COLLATE(): TerminalNode {
		return this.getToken(SqlParser.COLLATE, 0);
	}
	public collationName(): CollationNameContext {
		return this.getTypedRuleContext(CollationNameContext, 0) as CollationNameContext;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterAlterByDefaultCharset) {
	 		listener.enterAlterByDefaultCharset(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitAlterByDefaultCharset) {
	 		listener.exitAlterByDefaultCharset(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitAlterByDefaultCharset) {
			return visitor.visitAlterByDefaultCharset(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class AlterByRenameColumnContext extends AlterSpecificationContext {
	public _oldColumn!: UidContext;
	public _newColumn!: UidContext;
	constructor(parser: SqlParser, ctx: AlterSpecificationContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public RENAME(): TerminalNode {
		return this.getToken(SqlParser.RENAME, 0);
	}
	public COLUMN(): TerminalNode {
		return this.getToken(SqlParser.COLUMN, 0);
	}
	public TO(): TerminalNode {
		return this.getToken(SqlParser.TO, 0);
	}
	public uid_list(): UidContext[] {
		return this.getTypedRuleContexts(UidContext) as UidContext[];
	}
	public uid(i: number): UidContext {
		return this.getTypedRuleContext(UidContext, i) as UidContext;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterAlterByRenameColumn) {
	 		listener.enterAlterByRenameColumn(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitAlterByRenameColumn) {
	 		listener.exitAlterByRenameColumn(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitAlterByRenameColumn) {
			return visitor.visitAlterByRenameColumn(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class AlterByConvertCharsetContext extends AlterSpecificationContext {
	constructor(parser: SqlParser, ctx: AlterSpecificationContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public CONVERT(): TerminalNode {
		return this.getToken(SqlParser.CONVERT, 0);
	}
	public TO(): TerminalNode {
		return this.getToken(SqlParser.TO, 0);
	}
	public CHARACTER(): TerminalNode {
		return this.getToken(SqlParser.CHARACTER, 0);
	}
	public SET(): TerminalNode {
		return this.getToken(SqlParser.SET, 0);
	}
	public charsetName(): CharsetNameContext {
		return this.getTypedRuleContext(CharsetNameContext, 0) as CharsetNameContext;
	}
	public COLLATE(): TerminalNode {
		return this.getToken(SqlParser.COLLATE, 0);
	}
	public collationName(): CollationNameContext {
		return this.getTypedRuleContext(CollationNameContext, 0) as CollationNameContext;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterAlterByConvertCharset) {
	 		listener.enterAlterByConvertCharset(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitAlterByConvertCharset) {
	 		listener.exitAlterByConvertCharset(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitAlterByConvertCharset) {
			return visitor.visitAlterByConvertCharset(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class AlterByAddPartitionContext extends AlterSpecificationContext {
	constructor(parser: SqlParser, ctx: AlterSpecificationContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public ADD(): TerminalNode {
		return this.getToken(SqlParser.ADD, 0);
	}
	public PARTITION(): TerminalNode {
		return this.getToken(SqlParser.PARTITION, 0);
	}
	public LR_BRACKET(): TerminalNode {
		return this.getToken(SqlParser.LR_BRACKET, 0);
	}
	public partitionDefinition_list(): PartitionDefinitionContext[] {
		return this.getTypedRuleContexts(PartitionDefinitionContext) as PartitionDefinitionContext[];
	}
	public partitionDefinition(i: number): PartitionDefinitionContext {
		return this.getTypedRuleContext(PartitionDefinitionContext, i) as PartitionDefinitionContext;
	}
	public RR_BRACKET(): TerminalNode {
		return this.getToken(SqlParser.RR_BRACKET, 0);
	}
	public COMMA_list(): TerminalNode[] {
	    	return this.getTokens(SqlParser.COMMA);
	}
	public COMMA(i: number): TerminalNode {
		return this.getToken(SqlParser.COMMA, i);
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterAlterByAddPartition) {
	 		listener.enterAlterByAddPartition(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitAlterByAddPartition) {
	 		listener.exitAlterByAddPartition(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitAlterByAddPartition) {
			return visitor.visitAlterByAddPartition(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class AlterByAddForeignKeyContext extends AlterSpecificationContext {
	public _name!: UidContext;
	public _indexName!: UidContext;
	constructor(parser: SqlParser, ctx: AlterSpecificationContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public ADD(): TerminalNode {
		return this.getToken(SqlParser.ADD, 0);
	}
	public FOREIGN(): TerminalNode {
		return this.getToken(SqlParser.FOREIGN, 0);
	}
	public KEY(): TerminalNode {
		return this.getToken(SqlParser.KEY, 0);
	}
	public indexColumnNames(): IndexColumnNamesContext {
		return this.getTypedRuleContext(IndexColumnNamesContext, 0) as IndexColumnNamesContext;
	}
	public referenceDefinition(): ReferenceDefinitionContext {
		return this.getTypedRuleContext(ReferenceDefinitionContext, 0) as ReferenceDefinitionContext;
	}
	public CONSTRAINT(): TerminalNode {
		return this.getToken(SqlParser.CONSTRAINT, 0);
	}
	public uid_list(): UidContext[] {
		return this.getTypedRuleContexts(UidContext) as UidContext[];
	}
	public uid(i: number): UidContext {
		return this.getTypedRuleContext(UidContext, i) as UidContext;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterAlterByAddForeignKey) {
	 		listener.enterAlterByAddForeignKey(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitAlterByAddForeignKey) {
	 		listener.exitAlterByAddForeignKey(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitAlterByAddForeignKey) {
			return visitor.visitAlterByAddForeignKey(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class AlterByRenameIndexContext extends AlterSpecificationContext {
	public _indexFormat!: Token;
	constructor(parser: SqlParser, ctx: AlterSpecificationContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public RENAME(): TerminalNode {
		return this.getToken(SqlParser.RENAME, 0);
	}
	public uid_list(): UidContext[] {
		return this.getTypedRuleContexts(UidContext) as UidContext[];
	}
	public uid(i: number): UidContext {
		return this.getTypedRuleContext(UidContext, i) as UidContext;
	}
	public TO(): TerminalNode {
		return this.getToken(SqlParser.TO, 0);
	}
	public INDEX(): TerminalNode {
		return this.getToken(SqlParser.INDEX, 0);
	}
	public KEY(): TerminalNode {
		return this.getToken(SqlParser.KEY, 0);
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterAlterByRenameIndex) {
	 		listener.enterAlterByRenameIndex(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitAlterByRenameIndex) {
	 		listener.exitAlterByRenameIndex(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitAlterByRenameIndex) {
			return visitor.visitAlterByRenameIndex(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class AlterByRemovePartitioningContext extends AlterSpecificationContext {
	constructor(parser: SqlParser, ctx: AlterSpecificationContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public REMOVE(): TerminalNode {
		return this.getToken(SqlParser.REMOVE, 0);
	}
	public PARTITIONING(): TerminalNode {
		return this.getToken(SqlParser.PARTITIONING, 0);
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterAlterByRemovePartitioning) {
	 		listener.enterAlterByRemovePartitioning(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitAlterByRemovePartitioning) {
	 		listener.exitAlterByRemovePartitioning(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitAlterByRemovePartitioning) {
			return visitor.visitAlterByRemovePartitioning(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class AlterByRenameContext extends AlterSpecificationContext {
	public _renameFormat!: Token;
	constructor(parser: SqlParser, ctx: AlterSpecificationContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public RENAME(): TerminalNode {
		return this.getToken(SqlParser.RENAME, 0);
	}
	public uid(): UidContext {
		return this.getTypedRuleContext(UidContext, 0) as UidContext;
	}
	public fullId(): FullIdContext {
		return this.getTypedRuleContext(FullIdContext, 0) as FullIdContext;
	}
	public TO(): TerminalNode {
		return this.getToken(SqlParser.TO, 0);
	}
	public AS(): TerminalNode {
		return this.getToken(SqlParser.AS, 0);
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterAlterByRename) {
	 		listener.enterAlterByRename(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitAlterByRename) {
	 		listener.exitAlterByRename(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitAlterByRename) {
			return visitor.visitAlterByRename(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class AlterByOptimizePartitionContext extends AlterSpecificationContext {
	constructor(parser: SqlParser, ctx: AlterSpecificationContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public OPTIMIZE(): TerminalNode {
		return this.getToken(SqlParser.OPTIMIZE, 0);
	}
	public PARTITION(): TerminalNode {
		return this.getToken(SqlParser.PARTITION, 0);
	}
	public uidList(): UidListContext {
		return this.getTypedRuleContext(UidListContext, 0) as UidListContext;
	}
	public ALL(): TerminalNode {
		return this.getToken(SqlParser.ALL, 0);
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterAlterByOptimizePartition) {
	 		listener.enterAlterByOptimizePartition(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitAlterByOptimizePartition) {
	 		listener.exitAlterByOptimizePartition(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitAlterByOptimizePartition) {
			return visitor.visitAlterByOptimizePartition(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class AlterByImportTablespaceContext extends AlterSpecificationContext {
	constructor(parser: SqlParser, ctx: AlterSpecificationContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public IMPORT(): TerminalNode {
		return this.getToken(SqlParser.IMPORT, 0);
	}
	public TABLESPACE(): TerminalNode {
		return this.getToken(SqlParser.TABLESPACE, 0);
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterAlterByImportTablespace) {
	 		listener.enterAlterByImportTablespace(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitAlterByImportTablespace) {
	 		listener.exitAlterByImportTablespace(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitAlterByImportTablespace) {
			return visitor.visitAlterByImportTablespace(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class AlterByCoalescePartitionContext extends AlterSpecificationContext {
	constructor(parser: SqlParser, ctx: AlterSpecificationContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public COALESCE(): TerminalNode {
		return this.getToken(SqlParser.COALESCE, 0);
	}
	public PARTITION(): TerminalNode {
		return this.getToken(SqlParser.PARTITION, 0);
	}
	public decimalLiteral(): DecimalLiteralContext {
		return this.getTypedRuleContext(DecimalLiteralContext, 0) as DecimalLiteralContext;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterAlterByCoalescePartition) {
	 		listener.enterAlterByCoalescePartition(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitAlterByCoalescePartition) {
	 		listener.exitAlterByCoalescePartition(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitAlterByCoalescePartition) {
			return visitor.visitAlterByCoalescePartition(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class AlterByAddColumnsContext extends AlterSpecificationContext {
	constructor(parser: SqlParser, ctx: AlterSpecificationContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public ADD(): TerminalNode {
		return this.getToken(SqlParser.ADD, 0);
	}
	public LR_BRACKET(): TerminalNode {
		return this.getToken(SqlParser.LR_BRACKET, 0);
	}
	public uid_list(): UidContext[] {
		return this.getTypedRuleContexts(UidContext) as UidContext[];
	}
	public uid(i: number): UidContext {
		return this.getTypedRuleContext(UidContext, i) as UidContext;
	}
	public columnDefinition_list(): ColumnDefinitionContext[] {
		return this.getTypedRuleContexts(ColumnDefinitionContext) as ColumnDefinitionContext[];
	}
	public columnDefinition(i: number): ColumnDefinitionContext {
		return this.getTypedRuleContext(ColumnDefinitionContext, i) as ColumnDefinitionContext;
	}
	public RR_BRACKET(): TerminalNode {
		return this.getToken(SqlParser.RR_BRACKET, 0);
	}
	public COLUMN(): TerminalNode {
		return this.getToken(SqlParser.COLUMN, 0);
	}
	public COMMA_list(): TerminalNode[] {
	    	return this.getTokens(SqlParser.COMMA);
	}
	public COMMA(i: number): TerminalNode {
		return this.getToken(SqlParser.COMMA, i);
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterAlterByAddColumns) {
	 		listener.enterAlterByAddColumns(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitAlterByAddColumns) {
	 		listener.exitAlterByAddColumns(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitAlterByAddColumns) {
			return visitor.visitAlterByAddColumns(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class AlterByAlterIndexVisibilityContext extends AlterSpecificationContext {
	constructor(parser: SqlParser, ctx: AlterSpecificationContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public ALTER(): TerminalNode {
		return this.getToken(SqlParser.ALTER, 0);
	}
	public INDEX(): TerminalNode {
		return this.getToken(SqlParser.INDEX, 0);
	}
	public uid(): UidContext {
		return this.getTypedRuleContext(UidContext, 0) as UidContext;
	}
	public VISIBLE(): TerminalNode {
		return this.getToken(SqlParser.VISIBLE, 0);
	}
	public INVISIBLE(): TerminalNode {
		return this.getToken(SqlParser.INVISIBLE, 0);
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterAlterByAlterIndexVisibility) {
	 		listener.enterAlterByAlterIndexVisibility(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitAlterByAlterIndexVisibility) {
	 		listener.exitAlterByAlterIndexVisibility(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitAlterByAlterIndexVisibility) {
			return visitor.visitAlterByAlterIndexVisibility(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class AlterByDropForeignKeyContext extends AlterSpecificationContext {
	constructor(parser: SqlParser, ctx: AlterSpecificationContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public DROP(): TerminalNode {
		return this.getToken(SqlParser.DROP, 0);
	}
	public FOREIGN(): TerminalNode {
		return this.getToken(SqlParser.FOREIGN, 0);
	}
	public KEY(): TerminalNode {
		return this.getToken(SqlParser.KEY, 0);
	}
	public uid(): UidContext {
		return this.getTypedRuleContext(UidContext, 0) as UidContext;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterAlterByDropForeignKey) {
	 		listener.enterAlterByDropForeignKey(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitAlterByDropForeignKey) {
	 		listener.exitAlterByDropForeignKey(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitAlterByDropForeignKey) {
			return visitor.visitAlterByDropForeignKey(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class AlterByAddCheckTableConstraintContext extends AlterSpecificationContext {
	public _name!: UidContext;
	constructor(parser: SqlParser, ctx: AlterSpecificationContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public ADD(): TerminalNode {
		return this.getToken(SqlParser.ADD, 0);
	}
	public CHECK(): TerminalNode {
		return this.getToken(SqlParser.CHECK, 0);
	}
	public LR_BRACKET(): TerminalNode {
		return this.getToken(SqlParser.LR_BRACKET, 0);
	}
	public expression(): ExpressionContext {
		return this.getTypedRuleContext(ExpressionContext, 0) as ExpressionContext;
	}
	public RR_BRACKET(): TerminalNode {
		return this.getToken(SqlParser.RR_BRACKET, 0);
	}
	public CONSTRAINT(): TerminalNode {
		return this.getToken(SqlParser.CONSTRAINT, 0);
	}
	public uid(): UidContext {
		return this.getTypedRuleContext(UidContext, 0) as UidContext;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterAlterByAddCheckTableConstraint) {
	 		listener.enterAlterByAddCheckTableConstraint(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitAlterByAddCheckTableConstraint) {
	 		listener.exitAlterByAddCheckTableConstraint(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitAlterByAddCheckTableConstraint) {
			return visitor.visitAlterByAddCheckTableConstraint(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class AlterByRebuildPartitionContext extends AlterSpecificationContext {
	constructor(parser: SqlParser, ctx: AlterSpecificationContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public REBUILD(): TerminalNode {
		return this.getToken(SqlParser.REBUILD, 0);
	}
	public PARTITION(): TerminalNode {
		return this.getToken(SqlParser.PARTITION, 0);
	}
	public uidList(): UidListContext {
		return this.getTypedRuleContext(UidListContext, 0) as UidListContext;
	}
	public ALL(): TerminalNode {
		return this.getToken(SqlParser.ALL, 0);
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterAlterByRebuildPartition) {
	 		listener.enterAlterByRebuildPartition(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitAlterByRebuildPartition) {
	 		listener.exitAlterByRebuildPartition(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitAlterByRebuildPartition) {
			return visitor.visitAlterByRebuildPartition(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class AlterByUpgradePartitioningContext extends AlterSpecificationContext {
	constructor(parser: SqlParser, ctx: AlterSpecificationContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public UPGRADE(): TerminalNode {
		return this.getToken(SqlParser.UPGRADE, 0);
	}
	public PARTITIONING(): TerminalNode {
		return this.getToken(SqlParser.PARTITIONING, 0);
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterAlterByUpgradePartitioning) {
	 		listener.enterAlterByUpgradePartitioning(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitAlterByUpgradePartitioning) {
	 		listener.exitAlterByUpgradePartitioning(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitAlterByUpgradePartitioning) {
			return visitor.visitAlterByUpgradePartitioning(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class AlterByRepairPartitionContext extends AlterSpecificationContext {
	constructor(parser: SqlParser, ctx: AlterSpecificationContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public REPAIR(): TerminalNode {
		return this.getToken(SqlParser.REPAIR, 0);
	}
	public PARTITION(): TerminalNode {
		return this.getToken(SqlParser.PARTITION, 0);
	}
	public uidList(): UidListContext {
		return this.getTypedRuleContext(UidListContext, 0) as UidListContext;
	}
	public ALL(): TerminalNode {
		return this.getToken(SqlParser.ALL, 0);
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterAlterByRepairPartition) {
	 		listener.enterAlterByRepairPartition(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitAlterByRepairPartition) {
	 		listener.exitAlterByRepairPartition(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitAlterByRepairPartition) {
			return visitor.visitAlterByRepairPartition(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class AlterByExchangePartitionContext extends AlterSpecificationContext {
	public _validationFormat!: Token;
	constructor(parser: SqlParser, ctx: AlterSpecificationContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public EXCHANGE(): TerminalNode {
		return this.getToken(SqlParser.EXCHANGE, 0);
	}
	public PARTITION(): TerminalNode {
		return this.getToken(SqlParser.PARTITION, 0);
	}
	public uid(): UidContext {
		return this.getTypedRuleContext(UidContext, 0) as UidContext;
	}
	public WITH_list(): TerminalNode[] {
	    	return this.getTokens(SqlParser.WITH);
	}
	public WITH(i: number): TerminalNode {
		return this.getToken(SqlParser.WITH, i);
	}
	public TABLE(): TerminalNode {
		return this.getToken(SqlParser.TABLE, 0);
	}
	public tableName(): TableNameContext {
		return this.getTypedRuleContext(TableNameContext, 0) as TableNameContext;
	}
	public VALIDATION(): TerminalNode {
		return this.getToken(SqlParser.VALIDATION, 0);
	}
	public WITHOUT(): TerminalNode {
		return this.getToken(SqlParser.WITHOUT, 0);
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterAlterByExchangePartition) {
	 		listener.enterAlterByExchangePartition(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitAlterByExchangePartition) {
	 		listener.exitAlterByExchangePartition(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitAlterByExchangePartition) {
			return visitor.visitAlterByExchangePartition(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class AlterByAddIndexContext extends AlterSpecificationContext {
	public _indexFormat!: Token;
	constructor(parser: SqlParser, ctx: AlterSpecificationContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public ADD(): TerminalNode {
		return this.getToken(SqlParser.ADD, 0);
	}
	public indexColumnNames(): IndexColumnNamesContext {
		return this.getTypedRuleContext(IndexColumnNamesContext, 0) as IndexColumnNamesContext;
	}
	public INDEX(): TerminalNode {
		return this.getToken(SqlParser.INDEX, 0);
	}
	public KEY(): TerminalNode {
		return this.getToken(SqlParser.KEY, 0);
	}
	public uid(): UidContext {
		return this.getTypedRuleContext(UidContext, 0) as UidContext;
	}
	public indexType(): IndexTypeContext {
		return this.getTypedRuleContext(IndexTypeContext, 0) as IndexTypeContext;
	}
	public indexOption_list(): IndexOptionContext[] {
		return this.getTypedRuleContexts(IndexOptionContext) as IndexOptionContext[];
	}
	public indexOption(i: number): IndexOptionContext {
		return this.getTypedRuleContext(IndexOptionContext, i) as IndexOptionContext;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterAlterByAddIndex) {
	 		listener.enterAlterByAddIndex(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitAlterByAddIndex) {
	 		listener.exitAlterByAddIndex(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitAlterByAddIndex) {
			return visitor.visitAlterByAddIndex(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class AlterByDropColumnContext extends AlterSpecificationContext {
	constructor(parser: SqlParser, ctx: AlterSpecificationContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public DROP(): TerminalNode {
		return this.getToken(SqlParser.DROP, 0);
	}
	public uid(): UidContext {
		return this.getTypedRuleContext(UidContext, 0) as UidContext;
	}
	public COLUMN(): TerminalNode {
		return this.getToken(SqlParser.COLUMN, 0);
	}
	public RESTRICT(): TerminalNode {
		return this.getToken(SqlParser.RESTRICT, 0);
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterAlterByDropColumn) {
	 		listener.enterAlterByDropColumn(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitAlterByDropColumn) {
	 		listener.exitAlterByDropColumn(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitAlterByDropColumn) {
			return visitor.visitAlterByDropColumn(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class AlterByImportPartitionContext extends AlterSpecificationContext {
	constructor(parser: SqlParser, ctx: AlterSpecificationContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public IMPORT(): TerminalNode {
		return this.getToken(SqlParser.IMPORT, 0);
	}
	public PARTITION(): TerminalNode {
		return this.getToken(SqlParser.PARTITION, 0);
	}
	public TABLESPACE(): TerminalNode {
		return this.getToken(SqlParser.TABLESPACE, 0);
	}
	public uidList(): UidListContext {
		return this.getTypedRuleContext(UidListContext, 0) as UidListContext;
	}
	public ALL(): TerminalNode {
		return this.getToken(SqlParser.ALL, 0);
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterAlterByImportPartition) {
	 		listener.enterAlterByImportPartition(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitAlterByImportPartition) {
	 		listener.exitAlterByImportPartition(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitAlterByImportPartition) {
			return visitor.visitAlterByImportPartition(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class AlterByChangeDefaultContext extends AlterSpecificationContext {
	constructor(parser: SqlParser, ctx: AlterSpecificationContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public ALTER(): TerminalNode {
		return this.getToken(SqlParser.ALTER, 0);
	}
	public uid(): UidContext {
		return this.getTypedRuleContext(UidContext, 0) as UidContext;
	}
	public SET(): TerminalNode {
		return this.getToken(SqlParser.SET, 0);
	}
	public DEFAULT(): TerminalNode {
		return this.getToken(SqlParser.DEFAULT, 0);
	}
	public defaultValue(): DefaultValueContext {
		return this.getTypedRuleContext(DefaultValueContext, 0) as DefaultValueContext;
	}
	public DROP(): TerminalNode {
		return this.getToken(SqlParser.DROP, 0);
	}
	public COLUMN(): TerminalNode {
		return this.getToken(SqlParser.COLUMN, 0);
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterAlterByChangeDefault) {
	 		listener.enterAlterByChangeDefault(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitAlterByChangeDefault) {
	 		listener.exitAlterByChangeDefault(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitAlterByChangeDefault) {
			return visitor.visitAlterByChangeDefault(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class AlterByForceContext extends AlterSpecificationContext {
	constructor(parser: SqlParser, ctx: AlterSpecificationContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public FORCE(): TerminalNode {
		return this.getToken(SqlParser.FORCE, 0);
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterAlterByForce) {
	 		listener.enterAlterByForce(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitAlterByForce) {
	 		listener.exitAlterByForce(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitAlterByForce) {
			return visitor.visitAlterByForce(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class AlterByDropPartitionContext extends AlterSpecificationContext {
	constructor(parser: SqlParser, ctx: AlterSpecificationContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public DROP(): TerminalNode {
		return this.getToken(SqlParser.DROP, 0);
	}
	public PARTITION(): TerminalNode {
		return this.getToken(SqlParser.PARTITION, 0);
	}
	public uidList(): UidListContext {
		return this.getTypedRuleContext(UidListContext, 0) as UidListContext;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterAlterByDropPartition) {
	 		listener.enterAlterByDropPartition(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitAlterByDropPartition) {
	 		listener.exitAlterByDropPartition(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitAlterByDropPartition) {
			return visitor.visitAlterByDropPartition(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class AlterByAddSpecialIndexContext extends AlterSpecificationContext {
	public _keyType!: Token;
	public _indexFormat!: Token;
	constructor(parser: SqlParser, ctx: AlterSpecificationContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public ADD(): TerminalNode {
		return this.getToken(SqlParser.ADD, 0);
	}
	public indexColumnNames(): IndexColumnNamesContext {
		return this.getTypedRuleContext(IndexColumnNamesContext, 0) as IndexColumnNamesContext;
	}
	public FULLTEXT(): TerminalNode {
		return this.getToken(SqlParser.FULLTEXT, 0);
	}
	public SPATIAL(): TerminalNode {
		return this.getToken(SqlParser.SPATIAL, 0);
	}
	public uid(): UidContext {
		return this.getTypedRuleContext(UidContext, 0) as UidContext;
	}
	public indexOption_list(): IndexOptionContext[] {
		return this.getTypedRuleContexts(IndexOptionContext) as IndexOptionContext[];
	}
	public indexOption(i: number): IndexOptionContext {
		return this.getTypedRuleContext(IndexOptionContext, i) as IndexOptionContext;
	}
	public INDEX(): TerminalNode {
		return this.getToken(SqlParser.INDEX, 0);
	}
	public KEY(): TerminalNode {
		return this.getToken(SqlParser.KEY, 0);
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterAlterByAddSpecialIndex) {
	 		listener.enterAlterByAddSpecialIndex(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitAlterByAddSpecialIndex) {
	 		listener.exitAlterByAddSpecialIndex(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitAlterByAddSpecialIndex) {
			return visitor.visitAlterByAddSpecialIndex(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class AlterByModifyColumnContext extends AlterSpecificationContext {
	constructor(parser: SqlParser, ctx: AlterSpecificationContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public MODIFY(): TerminalNode {
		return this.getToken(SqlParser.MODIFY, 0);
	}
	public uid_list(): UidContext[] {
		return this.getTypedRuleContexts(UidContext) as UidContext[];
	}
	public uid(i: number): UidContext {
		return this.getTypedRuleContext(UidContext, i) as UidContext;
	}
	public columnDefinition(): ColumnDefinitionContext {
		return this.getTypedRuleContext(ColumnDefinitionContext, 0) as ColumnDefinitionContext;
	}
	public COLUMN(): TerminalNode {
		return this.getToken(SqlParser.COLUMN, 0);
	}
	public FIRST(): TerminalNode {
		return this.getToken(SqlParser.FIRST, 0);
	}
	public AFTER(): TerminalNode {
		return this.getToken(SqlParser.AFTER, 0);
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterAlterByModifyColumn) {
	 		listener.enterAlterByModifyColumn(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitAlterByModifyColumn) {
	 		listener.exitAlterByModifyColumn(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitAlterByModifyColumn) {
			return visitor.visitAlterByModifyColumn(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class AlterByTableOptionContext extends AlterSpecificationContext {
	constructor(parser: SqlParser, ctx: AlterSpecificationContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public tableOption_list(): TableOptionContext[] {
		return this.getTypedRuleContexts(TableOptionContext) as TableOptionContext[];
	}
	public tableOption(i: number): TableOptionContext {
		return this.getTypedRuleContext(TableOptionContext, i) as TableOptionContext;
	}
	public COMMA_list(): TerminalNode[] {
	    	return this.getTokens(SqlParser.COMMA);
	}
	public COMMA(i: number): TerminalNode {
		return this.getToken(SqlParser.COMMA, i);
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterAlterByTableOption) {
	 		listener.enterAlterByTableOption(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitAlterByTableOption) {
	 		listener.exitAlterByTableOption(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitAlterByTableOption) {
			return visitor.visitAlterByTableOption(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class AlterByDropPrimaryKeyContext extends AlterSpecificationContext {
	constructor(parser: SqlParser, ctx: AlterSpecificationContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public DROP(): TerminalNode {
		return this.getToken(SqlParser.DROP, 0);
	}
	public PRIMARY(): TerminalNode {
		return this.getToken(SqlParser.PRIMARY, 0);
	}
	public KEY(): TerminalNode {
		return this.getToken(SqlParser.KEY, 0);
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterAlterByDropPrimaryKey) {
	 		listener.enterAlterByDropPrimaryKey(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitAlterByDropPrimaryKey) {
	 		listener.exitAlterByDropPrimaryKey(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitAlterByDropPrimaryKey) {
			return visitor.visitAlterByDropPrimaryKey(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class AlterByLockContext extends AlterSpecificationContext {
	public _lockType!: Token;
	constructor(parser: SqlParser, ctx: AlterSpecificationContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public LOCK(): TerminalNode {
		return this.getToken(SqlParser.LOCK, 0);
	}
	public DEFAULT(): TerminalNode {
		return this.getToken(SqlParser.DEFAULT, 0);
	}
	public NONE(): TerminalNode {
		return this.getToken(SqlParser.NONE, 0);
	}
	public SHARED(): TerminalNode {
		return this.getToken(SqlParser.SHARED, 0);
	}
	public EXCLUSIVE(): TerminalNode {
		return this.getToken(SqlParser.EXCLUSIVE, 0);
	}
	public EQUAL_SYMBOL(): TerminalNode {
		return this.getToken(SqlParser.EQUAL_SYMBOL, 0);
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterAlterByLock) {
	 		listener.enterAlterByLock(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitAlterByLock) {
	 		listener.exitAlterByLock(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitAlterByLock) {
			return visitor.visitAlterByLock(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class AlterByDiscardPartitionContext extends AlterSpecificationContext {
	constructor(parser: SqlParser, ctx: AlterSpecificationContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public DISCARD(): TerminalNode {
		return this.getToken(SqlParser.DISCARD, 0);
	}
	public PARTITION(): TerminalNode {
		return this.getToken(SqlParser.PARTITION, 0);
	}
	public TABLESPACE(): TerminalNode {
		return this.getToken(SqlParser.TABLESPACE, 0);
	}
	public uidList(): UidListContext {
		return this.getTypedRuleContext(UidListContext, 0) as UidListContext;
	}
	public ALL(): TerminalNode {
		return this.getToken(SqlParser.ALL, 0);
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterAlterByDiscardPartition) {
	 		listener.enterAlterByDiscardPartition(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitAlterByDiscardPartition) {
	 		listener.exitAlterByDiscardPartition(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitAlterByDiscardPartition) {
			return visitor.visitAlterByDiscardPartition(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class AlterByDiscardTablespaceContext extends AlterSpecificationContext {
	constructor(parser: SqlParser, ctx: AlterSpecificationContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public DISCARD(): TerminalNode {
		return this.getToken(SqlParser.DISCARD, 0);
	}
	public TABLESPACE(): TerminalNode {
		return this.getToken(SqlParser.TABLESPACE, 0);
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterAlterByDiscardTablespace) {
	 		listener.enterAlterByDiscardTablespace(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitAlterByDiscardTablespace) {
	 		listener.exitAlterByDiscardTablespace(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitAlterByDiscardTablespace) {
			return visitor.visitAlterByDiscardTablespace(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class AlterByValidateContext extends AlterSpecificationContext {
	public _validationFormat!: Token;
	constructor(parser: SqlParser, ctx: AlterSpecificationContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public VALIDATION(): TerminalNode {
		return this.getToken(SqlParser.VALIDATION, 0);
	}
	public WITHOUT(): TerminalNode {
		return this.getToken(SqlParser.WITHOUT, 0);
	}
	public WITH(): TerminalNode {
		return this.getToken(SqlParser.WITH, 0);
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterAlterByValidate) {
	 		listener.enterAlterByValidate(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitAlterByValidate) {
	 		listener.exitAlterByValidate(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitAlterByValidate) {
			return visitor.visitAlterByValidate(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class AlterByAddPrimaryKeyContext extends AlterSpecificationContext {
	public _name!: UidContext;
	public _index!: UidContext;
	constructor(parser: SqlParser, ctx: AlterSpecificationContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public ADD(): TerminalNode {
		return this.getToken(SqlParser.ADD, 0);
	}
	public PRIMARY(): TerminalNode {
		return this.getToken(SqlParser.PRIMARY, 0);
	}
	public KEY(): TerminalNode {
		return this.getToken(SqlParser.KEY, 0);
	}
	public indexColumnNames(): IndexColumnNamesContext {
		return this.getTypedRuleContext(IndexColumnNamesContext, 0) as IndexColumnNamesContext;
	}
	public CONSTRAINT(): TerminalNode {
		return this.getToken(SqlParser.CONSTRAINT, 0);
	}
	public indexType(): IndexTypeContext {
		return this.getTypedRuleContext(IndexTypeContext, 0) as IndexTypeContext;
	}
	public indexOption_list(): IndexOptionContext[] {
		return this.getTypedRuleContexts(IndexOptionContext) as IndexOptionContext[];
	}
	public indexOption(i: number): IndexOptionContext {
		return this.getTypedRuleContext(IndexOptionContext, i) as IndexOptionContext;
	}
	public uid_list(): UidContext[] {
		return this.getTypedRuleContexts(UidContext) as UidContext[];
	}
	public uid(i: number): UidContext {
		return this.getTypedRuleContext(UidContext, i) as UidContext;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterAlterByAddPrimaryKey) {
	 		listener.enterAlterByAddPrimaryKey(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitAlterByAddPrimaryKey) {
	 		listener.exitAlterByAddPrimaryKey(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitAlterByAddPrimaryKey) {
			return visitor.visitAlterByAddPrimaryKey(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class AlterByCheckPartitionContext extends AlterSpecificationContext {
	constructor(parser: SqlParser, ctx: AlterSpecificationContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public CHECK(): TerminalNode {
		return this.getToken(SqlParser.CHECK, 0);
	}
	public PARTITION(): TerminalNode {
		return this.getToken(SqlParser.PARTITION, 0);
	}
	public uidList(): UidListContext {
		return this.getTypedRuleContext(UidListContext, 0) as UidListContext;
	}
	public ALL(): TerminalNode {
		return this.getToken(SqlParser.ALL, 0);
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterAlterByCheckPartition) {
	 		listener.enterAlterByCheckPartition(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitAlterByCheckPartition) {
	 		listener.exitAlterByCheckPartition(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitAlterByCheckPartition) {
			return visitor.visitAlterByCheckPartition(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class AlterByEnableKeysContext extends AlterSpecificationContext {
	constructor(parser: SqlParser, ctx: AlterSpecificationContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public ENABLE(): TerminalNode {
		return this.getToken(SqlParser.ENABLE, 0);
	}
	public KEYS(): TerminalNode {
		return this.getToken(SqlParser.KEYS, 0);
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterAlterByEnableKeys) {
	 		listener.enterAlterByEnableKeys(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitAlterByEnableKeys) {
	 		listener.exitAlterByEnableKeys(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitAlterByEnableKeys) {
			return visitor.visitAlterByEnableKeys(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class AlterByReorganizePartitionContext extends AlterSpecificationContext {
	constructor(parser: SqlParser, ctx: AlterSpecificationContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public REORGANIZE(): TerminalNode {
		return this.getToken(SqlParser.REORGANIZE, 0);
	}
	public PARTITION(): TerminalNode {
		return this.getToken(SqlParser.PARTITION, 0);
	}
	public uidList(): UidListContext {
		return this.getTypedRuleContext(UidListContext, 0) as UidListContext;
	}
	public INTO(): TerminalNode {
		return this.getToken(SqlParser.INTO, 0);
	}
	public LR_BRACKET(): TerminalNode {
		return this.getToken(SqlParser.LR_BRACKET, 0);
	}
	public partitionDefinition_list(): PartitionDefinitionContext[] {
		return this.getTypedRuleContexts(PartitionDefinitionContext) as PartitionDefinitionContext[];
	}
	public partitionDefinition(i: number): PartitionDefinitionContext {
		return this.getTypedRuleContext(PartitionDefinitionContext, i) as PartitionDefinitionContext;
	}
	public RR_BRACKET(): TerminalNode {
		return this.getToken(SqlParser.RR_BRACKET, 0);
	}
	public COMMA_list(): TerminalNode[] {
	    	return this.getTokens(SqlParser.COMMA);
	}
	public COMMA(i: number): TerminalNode {
		return this.getToken(SqlParser.COMMA, i);
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterAlterByReorganizePartition) {
	 		listener.enterAlterByReorganizePartition(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitAlterByReorganizePartition) {
	 		listener.exitAlterByReorganizePartition(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitAlterByReorganizePartition) {
			return visitor.visitAlterByReorganizePartition(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class AlterBySetAlgorithmContext extends AlterSpecificationContext {
	public _algType!: Token;
	constructor(parser: SqlParser, ctx: AlterSpecificationContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public ALGORITHM(): TerminalNode {
		return this.getToken(SqlParser.ALGORITHM, 0);
	}
	public DEFAULT(): TerminalNode {
		return this.getToken(SqlParser.DEFAULT, 0);
	}
	public INPLACE(): TerminalNode {
		return this.getToken(SqlParser.INPLACE, 0);
	}
	public COPY(): TerminalNode {
		return this.getToken(SqlParser.COPY, 0);
	}
	public EQUAL_SYMBOL(): TerminalNode {
		return this.getToken(SqlParser.EQUAL_SYMBOL, 0);
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterAlterBySetAlgorithm) {
	 		listener.enterAlterBySetAlgorithm(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitAlterBySetAlgorithm) {
	 		listener.exitAlterBySetAlgorithm(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitAlterBySetAlgorithm) {
			return visitor.visitAlterBySetAlgorithm(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class AlterByAnalyzePartitionContext extends AlterSpecificationContext {
	constructor(parser: SqlParser, ctx: AlterSpecificationContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public ANALYZE(): TerminalNode {
		return this.getToken(SqlParser.ANALYZE, 0);
	}
	public PARTITION(): TerminalNode {
		return this.getToken(SqlParser.PARTITION, 0);
	}
	public uidList(): UidListContext {
		return this.getTypedRuleContext(UidListContext, 0) as UidListContext;
	}
	public ALL(): TerminalNode {
		return this.getToken(SqlParser.ALL, 0);
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterAlterByAnalyzePartition) {
	 		listener.enterAlterByAnalyzePartition(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitAlterByAnalyzePartition) {
	 		listener.exitAlterByAnalyzePartition(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitAlterByAnalyzePartition) {
			return visitor.visitAlterByAnalyzePartition(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class AlterByChangeColumnContext extends AlterSpecificationContext {
	public _oldColumn!: UidContext;
	public _newColumn!: UidContext;
	public _afterColumn!: UidContext;
	constructor(parser: SqlParser, ctx: AlterSpecificationContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public CHANGE(): TerminalNode {
		return this.getToken(SqlParser.CHANGE, 0);
	}
	public columnDefinition(): ColumnDefinitionContext {
		return this.getTypedRuleContext(ColumnDefinitionContext, 0) as ColumnDefinitionContext;
	}
	public uid_list(): UidContext[] {
		return this.getTypedRuleContexts(UidContext) as UidContext[];
	}
	public uid(i: number): UidContext {
		return this.getTypedRuleContext(UidContext, i) as UidContext;
	}
	public COLUMN(): TerminalNode {
		return this.getToken(SqlParser.COLUMN, 0);
	}
	public FIRST(): TerminalNode {
		return this.getToken(SqlParser.FIRST, 0);
	}
	public AFTER(): TerminalNode {
		return this.getToken(SqlParser.AFTER, 0);
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterAlterByChangeColumn) {
	 		listener.enterAlterByChangeColumn(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitAlterByChangeColumn) {
	 		listener.exitAlterByChangeColumn(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitAlterByChangeColumn) {
			return visitor.visitAlterByChangeColumn(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class AlterByAddUniqueKeyContext extends AlterSpecificationContext {
	public _name!: UidContext;
	public _indexFormat!: Token;
	public _indexName!: UidContext;
	constructor(parser: SqlParser, ctx: AlterSpecificationContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public ADD(): TerminalNode {
		return this.getToken(SqlParser.ADD, 0);
	}
	public UNIQUE(): TerminalNode {
		return this.getToken(SqlParser.UNIQUE, 0);
	}
	public indexColumnNames(): IndexColumnNamesContext {
		return this.getTypedRuleContext(IndexColumnNamesContext, 0) as IndexColumnNamesContext;
	}
	public CONSTRAINT(): TerminalNode {
		return this.getToken(SqlParser.CONSTRAINT, 0);
	}
	public indexType(): IndexTypeContext {
		return this.getTypedRuleContext(IndexTypeContext, 0) as IndexTypeContext;
	}
	public indexOption_list(): IndexOptionContext[] {
		return this.getTypedRuleContexts(IndexOptionContext) as IndexOptionContext[];
	}
	public indexOption(i: number): IndexOptionContext {
		return this.getTypedRuleContext(IndexOptionContext, i) as IndexOptionContext;
	}
	public uid_list(): UidContext[] {
		return this.getTypedRuleContexts(UidContext) as UidContext[];
	}
	public uid(i: number): UidContext {
		return this.getTypedRuleContext(UidContext, i) as UidContext;
	}
	public INDEX(): TerminalNode {
		return this.getToken(SqlParser.INDEX, 0);
	}
	public KEY(): TerminalNode {
		return this.getToken(SqlParser.KEY, 0);
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterAlterByAddUniqueKey) {
	 		listener.enterAlterByAddUniqueKey(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitAlterByAddUniqueKey) {
	 		listener.exitAlterByAddUniqueKey(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitAlterByAddUniqueKey) {
			return visitor.visitAlterByAddUniqueKey(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class AlterByTruncatePartitionContext extends AlterSpecificationContext {
	constructor(parser: SqlParser, ctx: AlterSpecificationContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public TRUNCATE(): TerminalNode {
		return this.getToken(SqlParser.TRUNCATE, 0);
	}
	public PARTITION(): TerminalNode {
		return this.getToken(SqlParser.PARTITION, 0);
	}
	public uidList(): UidListContext {
		return this.getTypedRuleContext(UidListContext, 0) as UidListContext;
	}
	public ALL(): TerminalNode {
		return this.getToken(SqlParser.ALL, 0);
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterAlterByTruncatePartition) {
	 		listener.enterAlterByTruncatePartition(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitAlterByTruncatePartition) {
	 		listener.exitAlterByTruncatePartition(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitAlterByTruncatePartition) {
			return visitor.visitAlterByTruncatePartition(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class AlterByDropIndexContext extends AlterSpecificationContext {
	public _indexFormat!: Token;
	constructor(parser: SqlParser, ctx: AlterSpecificationContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public DROP(): TerminalNode {
		return this.getToken(SqlParser.DROP, 0);
	}
	public uid(): UidContext {
		return this.getTypedRuleContext(UidContext, 0) as UidContext;
	}
	public INDEX(): TerminalNode {
		return this.getToken(SqlParser.INDEX, 0);
	}
	public KEY(): TerminalNode {
		return this.getToken(SqlParser.KEY, 0);
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterAlterByDropIndex) {
	 		listener.enterAlterByDropIndex(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitAlterByDropIndex) {
	 		listener.exitAlterByDropIndex(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitAlterByDropIndex) {
			return visitor.visitAlterByDropIndex(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class AlterByAddColumnContext extends AlterSpecificationContext {
	constructor(parser: SqlParser, ctx: AlterSpecificationContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public ADD(): TerminalNode {
		return this.getToken(SqlParser.ADD, 0);
	}
	public uid_list(): UidContext[] {
		return this.getTypedRuleContexts(UidContext) as UidContext[];
	}
	public uid(i: number): UidContext {
		return this.getTypedRuleContext(UidContext, i) as UidContext;
	}
	public columnDefinition(): ColumnDefinitionContext {
		return this.getTypedRuleContext(ColumnDefinitionContext, 0) as ColumnDefinitionContext;
	}
	public COLUMN(): TerminalNode {
		return this.getToken(SqlParser.COLUMN, 0);
	}
	public FIRST(): TerminalNode {
		return this.getToken(SqlParser.FIRST, 0);
	}
	public AFTER(): TerminalNode {
		return this.getToken(SqlParser.AFTER, 0);
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterAlterByAddColumn) {
	 		listener.enterAlterByAddColumn(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitAlterByAddColumn) {
	 		listener.exitAlterByAddColumn(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitAlterByAddColumn) {
			return visitor.visitAlterByAddColumn(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class AlterByOrderContext extends AlterSpecificationContext {
	constructor(parser: SqlParser, ctx: AlterSpecificationContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public ORDER(): TerminalNode {
		return this.getToken(SqlParser.ORDER, 0);
	}
	public BY(): TerminalNode {
		return this.getToken(SqlParser.BY, 0);
	}
	public uidList(): UidListContext {
		return this.getTypedRuleContext(UidListContext, 0) as UidListContext;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterAlterByOrder) {
	 		listener.enterAlterByOrder(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitAlterByOrder) {
	 		listener.exitAlterByOrder(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitAlterByOrder) {
			return visitor.visitAlterByOrder(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class DropDatabaseContext extends ParserRuleContext {
	public _dbFormat!: Token;
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public DROP(): TerminalNode {
		return this.getToken(SqlParser.DROP, 0);
	}
	public uid(): UidContext {
		return this.getTypedRuleContext(UidContext, 0) as UidContext;
	}
	public DATABASE(): TerminalNode {
		return this.getToken(SqlParser.DATABASE, 0);
	}
	public SCHEMA(): TerminalNode {
		return this.getToken(SqlParser.SCHEMA, 0);
	}
	public ifExists(): IfExistsContext {
		return this.getTypedRuleContext(IfExistsContext, 0) as IfExistsContext;
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_dropDatabase;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterDropDatabase) {
	 		listener.enterDropDatabase(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitDropDatabase) {
	 		listener.exitDropDatabase(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitDropDatabase) {
			return visitor.visitDropDatabase(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class DropEventContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public DROP(): TerminalNode {
		return this.getToken(SqlParser.DROP, 0);
	}
	public EVENT(): TerminalNode {
		return this.getToken(SqlParser.EVENT, 0);
	}
	public fullId(): FullIdContext {
		return this.getTypedRuleContext(FullIdContext, 0) as FullIdContext;
	}
	public ifExists(): IfExistsContext {
		return this.getTypedRuleContext(IfExistsContext, 0) as IfExistsContext;
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_dropEvent;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterDropEvent) {
	 		listener.enterDropEvent(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitDropEvent) {
	 		listener.exitDropEvent(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitDropEvent) {
			return visitor.visitDropEvent(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class DropIndexContext extends ParserRuleContext {
	public _intimeAction!: Token;
	public _algType!: Token;
	public _lockType!: Token;
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public DROP(): TerminalNode {
		return this.getToken(SqlParser.DROP, 0);
	}
	public INDEX(): TerminalNode {
		return this.getToken(SqlParser.INDEX, 0);
	}
	public uid(): UidContext {
		return this.getTypedRuleContext(UidContext, 0) as UidContext;
	}
	public ON(): TerminalNode {
		return this.getToken(SqlParser.ON, 0);
	}
	public tableName(): TableNameContext {
		return this.getTypedRuleContext(TableNameContext, 0) as TableNameContext;
	}
	public ALGORITHM_list(): TerminalNode[] {
	    	return this.getTokens(SqlParser.ALGORITHM);
	}
	public ALGORITHM(i: number): TerminalNode {
		return this.getToken(SqlParser.ALGORITHM, i);
	}
	public LOCK_list(): TerminalNode[] {
	    	return this.getTokens(SqlParser.LOCK);
	}
	public LOCK(i: number): TerminalNode {
		return this.getToken(SqlParser.LOCK, i);
	}
	public ONLINE(): TerminalNode {
		return this.getToken(SqlParser.ONLINE, 0);
	}
	public OFFLINE(): TerminalNode {
		return this.getToken(SqlParser.OFFLINE, 0);
	}
	public DEFAULT_list(): TerminalNode[] {
	    	return this.getTokens(SqlParser.DEFAULT);
	}
	public DEFAULT(i: number): TerminalNode {
		return this.getToken(SqlParser.DEFAULT, i);
	}
	public INPLACE_list(): TerminalNode[] {
	    	return this.getTokens(SqlParser.INPLACE);
	}
	public INPLACE(i: number): TerminalNode {
		return this.getToken(SqlParser.INPLACE, i);
	}
	public COPY_list(): TerminalNode[] {
	    	return this.getTokens(SqlParser.COPY);
	}
	public COPY(i: number): TerminalNode {
		return this.getToken(SqlParser.COPY, i);
	}
	public NONE_list(): TerminalNode[] {
	    	return this.getTokens(SqlParser.NONE);
	}
	public NONE(i: number): TerminalNode {
		return this.getToken(SqlParser.NONE, i);
	}
	public SHARED_list(): TerminalNode[] {
	    	return this.getTokens(SqlParser.SHARED);
	}
	public SHARED(i: number): TerminalNode {
		return this.getToken(SqlParser.SHARED, i);
	}
	public EXCLUSIVE_list(): TerminalNode[] {
	    	return this.getTokens(SqlParser.EXCLUSIVE);
	}
	public EXCLUSIVE(i: number): TerminalNode {
		return this.getToken(SqlParser.EXCLUSIVE, i);
	}
	public EQUAL_SYMBOL_list(): TerminalNode[] {
	    	return this.getTokens(SqlParser.EQUAL_SYMBOL);
	}
	public EQUAL_SYMBOL(i: number): TerminalNode {
		return this.getToken(SqlParser.EQUAL_SYMBOL, i);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_dropIndex;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterDropIndex) {
	 		listener.enterDropIndex(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitDropIndex) {
	 		listener.exitDropIndex(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitDropIndex) {
			return visitor.visitDropIndex(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class DropLogfileGroupContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public DROP(): TerminalNode {
		return this.getToken(SqlParser.DROP, 0);
	}
	public LOGFILE(): TerminalNode {
		return this.getToken(SqlParser.LOGFILE, 0);
	}
	public GROUP(): TerminalNode {
		return this.getToken(SqlParser.GROUP, 0);
	}
	public uid(): UidContext {
		return this.getTypedRuleContext(UidContext, 0) as UidContext;
	}
	public ENGINE(): TerminalNode {
		return this.getToken(SqlParser.ENGINE, 0);
	}
	public EQUAL_SYMBOL(): TerminalNode {
		return this.getToken(SqlParser.EQUAL_SYMBOL, 0);
	}
	public engineName(): EngineNameContext {
		return this.getTypedRuleContext(EngineNameContext, 0) as EngineNameContext;
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_dropLogfileGroup;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterDropLogfileGroup) {
	 		listener.enterDropLogfileGroup(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitDropLogfileGroup) {
	 		listener.exitDropLogfileGroup(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitDropLogfileGroup) {
			return visitor.visitDropLogfileGroup(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class DropProcedureContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public DROP(): TerminalNode {
		return this.getToken(SqlParser.DROP, 0);
	}
	public PROCEDURE(): TerminalNode {
		return this.getToken(SqlParser.PROCEDURE, 0);
	}
	public fullId(): FullIdContext {
		return this.getTypedRuleContext(FullIdContext, 0) as FullIdContext;
	}
	public ifExists(): IfExistsContext {
		return this.getTypedRuleContext(IfExistsContext, 0) as IfExistsContext;
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_dropProcedure;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterDropProcedure) {
	 		listener.enterDropProcedure(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitDropProcedure) {
	 		listener.exitDropProcedure(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitDropProcedure) {
			return visitor.visitDropProcedure(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class DropFunctionContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public DROP(): TerminalNode {
		return this.getToken(SqlParser.DROP, 0);
	}
	public FUNCTION(): TerminalNode {
		return this.getToken(SqlParser.FUNCTION, 0);
	}
	public fullId(): FullIdContext {
		return this.getTypedRuleContext(FullIdContext, 0) as FullIdContext;
	}
	public ifExists(): IfExistsContext {
		return this.getTypedRuleContext(IfExistsContext, 0) as IfExistsContext;
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_dropFunction;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterDropFunction) {
	 		listener.enterDropFunction(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitDropFunction) {
	 		listener.exitDropFunction(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitDropFunction) {
			return visitor.visitDropFunction(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class DropServerContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public DROP(): TerminalNode {
		return this.getToken(SqlParser.DROP, 0);
	}
	public SERVER(): TerminalNode {
		return this.getToken(SqlParser.SERVER, 0);
	}
	public uid(): UidContext {
		return this.getTypedRuleContext(UidContext, 0) as UidContext;
	}
	public ifExists(): IfExistsContext {
		return this.getTypedRuleContext(IfExistsContext, 0) as IfExistsContext;
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_dropServer;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterDropServer) {
	 		listener.enterDropServer(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitDropServer) {
	 		listener.exitDropServer(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitDropServer) {
			return visitor.visitDropServer(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class DropTableContext extends ParserRuleContext {
	public _dropType!: Token;
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public DROP(): TerminalNode {
		return this.getToken(SqlParser.DROP, 0);
	}
	public TABLE(): TerminalNode {
		return this.getToken(SqlParser.TABLE, 0);
	}
	public tables(): TablesContext {
		return this.getTypedRuleContext(TablesContext, 0) as TablesContext;
	}
	public TEMPORARY(): TerminalNode {
		return this.getToken(SqlParser.TEMPORARY, 0);
	}
	public ifExists(): IfExistsContext {
		return this.getTypedRuleContext(IfExistsContext, 0) as IfExistsContext;
	}
	public RESTRICT(): TerminalNode {
		return this.getToken(SqlParser.RESTRICT, 0);
	}
	public CASCADE(): TerminalNode {
		return this.getToken(SqlParser.CASCADE, 0);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_dropTable;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterDropTable) {
	 		listener.enterDropTable(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitDropTable) {
	 		listener.exitDropTable(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitDropTable) {
			return visitor.visitDropTable(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class DropTablespaceContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public DROP(): TerminalNode {
		return this.getToken(SqlParser.DROP, 0);
	}
	public TABLESPACE(): TerminalNode {
		return this.getToken(SqlParser.TABLESPACE, 0);
	}
	public uid(): UidContext {
		return this.getTypedRuleContext(UidContext, 0) as UidContext;
	}
	public ENGINE(): TerminalNode {
		return this.getToken(SqlParser.ENGINE, 0);
	}
	public engineName(): EngineNameContext {
		return this.getTypedRuleContext(EngineNameContext, 0) as EngineNameContext;
	}
	public EQUAL_SYMBOL(): TerminalNode {
		return this.getToken(SqlParser.EQUAL_SYMBOL, 0);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_dropTablespace;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterDropTablespace) {
	 		listener.enterDropTablespace(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitDropTablespace) {
	 		listener.exitDropTablespace(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitDropTablespace) {
			return visitor.visitDropTablespace(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class DropTriggerContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public DROP(): TerminalNode {
		return this.getToken(SqlParser.DROP, 0);
	}
	public TRIGGER(): TerminalNode {
		return this.getToken(SqlParser.TRIGGER, 0);
	}
	public fullId(): FullIdContext {
		return this.getTypedRuleContext(FullIdContext, 0) as FullIdContext;
	}
	public ifExists(): IfExistsContext {
		return this.getTypedRuleContext(IfExistsContext, 0) as IfExistsContext;
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_dropTrigger;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterDropTrigger) {
	 		listener.enterDropTrigger(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitDropTrigger) {
	 		listener.exitDropTrigger(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitDropTrigger) {
			return visitor.visitDropTrigger(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class DropViewContext extends ParserRuleContext {
	public _dropType!: Token;
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public DROP(): TerminalNode {
		return this.getToken(SqlParser.DROP, 0);
	}
	public VIEW(): TerminalNode {
		return this.getToken(SqlParser.VIEW, 0);
	}
	public fullId_list(): FullIdContext[] {
		return this.getTypedRuleContexts(FullIdContext) as FullIdContext[];
	}
	public fullId(i: number): FullIdContext {
		return this.getTypedRuleContext(FullIdContext, i) as FullIdContext;
	}
	public ifExists(): IfExistsContext {
		return this.getTypedRuleContext(IfExistsContext, 0) as IfExistsContext;
	}
	public COMMA_list(): TerminalNode[] {
	    	return this.getTokens(SqlParser.COMMA);
	}
	public COMMA(i: number): TerminalNode {
		return this.getToken(SqlParser.COMMA, i);
	}
	public RESTRICT(): TerminalNode {
		return this.getToken(SqlParser.RESTRICT, 0);
	}
	public CASCADE(): TerminalNode {
		return this.getToken(SqlParser.CASCADE, 0);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_dropView;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterDropView) {
	 		listener.enterDropView(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitDropView) {
	 		listener.exitDropView(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitDropView) {
			return visitor.visitDropView(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class RenameTableContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public RENAME(): TerminalNode {
		return this.getToken(SqlParser.RENAME, 0);
	}
	public TABLE(): TerminalNode {
		return this.getToken(SqlParser.TABLE, 0);
	}
	public renameTableClause_list(): RenameTableClauseContext[] {
		return this.getTypedRuleContexts(RenameTableClauseContext) as RenameTableClauseContext[];
	}
	public renameTableClause(i: number): RenameTableClauseContext {
		return this.getTypedRuleContext(RenameTableClauseContext, i) as RenameTableClauseContext;
	}
	public COMMA_list(): TerminalNode[] {
	    	return this.getTokens(SqlParser.COMMA);
	}
	public COMMA(i: number): TerminalNode {
		return this.getToken(SqlParser.COMMA, i);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_renameTable;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterRenameTable) {
	 		listener.enterRenameTable(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitRenameTable) {
	 		listener.exitRenameTable(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitRenameTable) {
			return visitor.visitRenameTable(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class RenameTableClauseContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public tableName_list(): TableNameContext[] {
		return this.getTypedRuleContexts(TableNameContext) as TableNameContext[];
	}
	public tableName(i: number): TableNameContext {
		return this.getTypedRuleContext(TableNameContext, i) as TableNameContext;
	}
	public TO(): TerminalNode {
		return this.getToken(SqlParser.TO, 0);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_renameTableClause;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterRenameTableClause) {
	 		listener.enterRenameTableClause(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitRenameTableClause) {
	 		listener.exitRenameTableClause(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitRenameTableClause) {
			return visitor.visitRenameTableClause(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class TruncateTableContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public TRUNCATE(): TerminalNode {
		return this.getToken(SqlParser.TRUNCATE, 0);
	}
	public tableName(): TableNameContext {
		return this.getTypedRuleContext(TableNameContext, 0) as TableNameContext;
	}
	public TABLE(): TerminalNode {
		return this.getToken(SqlParser.TABLE, 0);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_truncateTable;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterTruncateTable) {
	 		listener.enterTruncateTable(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitTruncateTable) {
	 		listener.exitTruncateTable(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitTruncateTable) {
			return visitor.visitTruncateTable(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class CallStatementContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public CALL(): TerminalNode {
		return this.getToken(SqlParser.CALL, 0);
	}
	public fullId(): FullIdContext {
		return this.getTypedRuleContext(FullIdContext, 0) as FullIdContext;
	}
	public LR_BRACKET(): TerminalNode {
		return this.getToken(SqlParser.LR_BRACKET, 0);
	}
	public RR_BRACKET(): TerminalNode {
		return this.getToken(SqlParser.RR_BRACKET, 0);
	}
	public constants(): ConstantsContext {
		return this.getTypedRuleContext(ConstantsContext, 0) as ConstantsContext;
	}
	public expressions(): ExpressionsContext {
		return this.getTypedRuleContext(ExpressionsContext, 0) as ExpressionsContext;
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_callStatement;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterCallStatement) {
	 		listener.enterCallStatement(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitCallStatement) {
	 		listener.exitCallStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitCallStatement) {
			return visitor.visitCallStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class DeleteStatementContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public singleDeleteStatement(): SingleDeleteStatementContext {
		return this.getTypedRuleContext(SingleDeleteStatementContext, 0) as SingleDeleteStatementContext;
	}
	public multipleDeleteStatement(): MultipleDeleteStatementContext {
		return this.getTypedRuleContext(MultipleDeleteStatementContext, 0) as MultipleDeleteStatementContext;
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_deleteStatement;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterDeleteStatement) {
	 		listener.enterDeleteStatement(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitDeleteStatement) {
	 		listener.exitDeleteStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitDeleteStatement) {
			return visitor.visitDeleteStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class DoStatementContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public DO(): TerminalNode {
		return this.getToken(SqlParser.DO, 0);
	}
	public expressions(): ExpressionsContext {
		return this.getTypedRuleContext(ExpressionsContext, 0) as ExpressionsContext;
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_doStatement;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterDoStatement) {
	 		listener.enterDoStatement(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitDoStatement) {
	 		listener.exitDoStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitDoStatement) {
			return visitor.visitDoStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class HandlerStatementContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public handlerOpenStatement(): HandlerOpenStatementContext {
		return this.getTypedRuleContext(HandlerOpenStatementContext, 0) as HandlerOpenStatementContext;
	}
	public handlerReadIndexStatement(): HandlerReadIndexStatementContext {
		return this.getTypedRuleContext(HandlerReadIndexStatementContext, 0) as HandlerReadIndexStatementContext;
	}
	public handlerReadStatement(): HandlerReadStatementContext {
		return this.getTypedRuleContext(HandlerReadStatementContext, 0) as HandlerReadStatementContext;
	}
	public handlerCloseStatement(): HandlerCloseStatementContext {
		return this.getTypedRuleContext(HandlerCloseStatementContext, 0) as HandlerCloseStatementContext;
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_handlerStatement;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterHandlerStatement) {
	 		listener.enterHandlerStatement(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitHandlerStatement) {
	 		listener.exitHandlerStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitHandlerStatement) {
			return visitor.visitHandlerStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class InsertStatementContext extends ParserRuleContext {
	public _priority!: Token;
	public _partitions!: UidListContext;
	public _columns!: UidListContext;
	public _setFirst!: UpdatedElementContext;
	public _updatedElement!: UpdatedElementContext;
	public _setElements: UpdatedElementContext[] = [];
	public _duplicatedFirst!: UpdatedElementContext;
	public _duplicatedElements: UpdatedElementContext[] = [];
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public INSERT(): TerminalNode {
		return this.getToken(SqlParser.INSERT, 0);
	}
	public tableName(): TableNameContext {
		return this.getTypedRuleContext(TableNameContext, 0) as TableNameContext;
	}
	public insertStatementValue(): InsertStatementValueContext {
		return this.getTypedRuleContext(InsertStatementValueContext, 0) as InsertStatementValueContext;
	}
	public SET(): TerminalNode {
		return this.getToken(SqlParser.SET, 0);
	}
	public IGNORE(): TerminalNode {
		return this.getToken(SqlParser.IGNORE, 0);
	}
	public INTO(): TerminalNode {
		return this.getToken(SqlParser.INTO, 0);
	}
	public PARTITION(): TerminalNode {
		return this.getToken(SqlParser.PARTITION, 0);
	}
	public LR_BRACKET_list(): TerminalNode[] {
	    	return this.getTokens(SqlParser.LR_BRACKET);
	}
	public LR_BRACKET(i: number): TerminalNode {
		return this.getToken(SqlParser.LR_BRACKET, i);
	}
	public RR_BRACKET_list(): TerminalNode[] {
	    	return this.getTokens(SqlParser.RR_BRACKET);
	}
	public RR_BRACKET(i: number): TerminalNode {
		return this.getToken(SqlParser.RR_BRACKET, i);
	}
	public updatedElement_list(): UpdatedElementContext[] {
		return this.getTypedRuleContexts(UpdatedElementContext) as UpdatedElementContext[];
	}
	public updatedElement(i: number): UpdatedElementContext {
		return this.getTypedRuleContext(UpdatedElementContext, i) as UpdatedElementContext;
	}
	public ON(): TerminalNode {
		return this.getToken(SqlParser.ON, 0);
	}
	public DUPLICATE(): TerminalNode {
		return this.getToken(SqlParser.DUPLICATE, 0);
	}
	public KEY(): TerminalNode {
		return this.getToken(SqlParser.KEY, 0);
	}
	public UPDATE(): TerminalNode {
		return this.getToken(SqlParser.UPDATE, 0);
	}
	public LOW_PRIORITY(): TerminalNode {
		return this.getToken(SqlParser.LOW_PRIORITY, 0);
	}
	public DELAYED(): TerminalNode {
		return this.getToken(SqlParser.DELAYED, 0);
	}
	public HIGH_PRIORITY(): TerminalNode {
		return this.getToken(SqlParser.HIGH_PRIORITY, 0);
	}
	public COMMA_list(): TerminalNode[] {
	    	return this.getTokens(SqlParser.COMMA);
	}
	public COMMA(i: number): TerminalNode {
		return this.getToken(SqlParser.COMMA, i);
	}
	public uidList_list(): UidListContext[] {
		return this.getTypedRuleContexts(UidListContext) as UidListContext[];
	}
	public uidList(i: number): UidListContext {
		return this.getTypedRuleContext(UidListContext, i) as UidListContext;
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_insertStatement;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterInsertStatement) {
	 		listener.enterInsertStatement(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitInsertStatement) {
	 		listener.exitInsertStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitInsertStatement) {
			return visitor.visitInsertStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class LoadDataStatementContext extends ParserRuleContext {
	public _priority!: Token;
	public _filename!: Token;
	public _violation!: Token;
	public _charset!: CharsetNameContext;
	public _fieldsFormat!: Token;
	public _linesFormat!: Token;
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public LOAD(): TerminalNode {
		return this.getToken(SqlParser.LOAD, 0);
	}
	public DATA(): TerminalNode {
		return this.getToken(SqlParser.DATA, 0);
	}
	public INFILE(): TerminalNode {
		return this.getToken(SqlParser.INFILE, 0);
	}
	public INTO(): TerminalNode {
		return this.getToken(SqlParser.INTO, 0);
	}
	public TABLE(): TerminalNode {
		return this.getToken(SqlParser.TABLE, 0);
	}
	public tableName(): TableNameContext {
		return this.getTypedRuleContext(TableNameContext, 0) as TableNameContext;
	}
	public STRING_LITERAL(): TerminalNode {
		return this.getToken(SqlParser.STRING_LITERAL, 0);
	}
	public LOCAL(): TerminalNode {
		return this.getToken(SqlParser.LOCAL, 0);
	}
	public PARTITION(): TerminalNode {
		return this.getToken(SqlParser.PARTITION, 0);
	}
	public LR_BRACKET_list(): TerminalNode[] {
	    	return this.getTokens(SqlParser.LR_BRACKET);
	}
	public LR_BRACKET(i: number): TerminalNode {
		return this.getToken(SqlParser.LR_BRACKET, i);
	}
	public uidList(): UidListContext {
		return this.getTypedRuleContext(UidListContext, 0) as UidListContext;
	}
	public RR_BRACKET_list(): TerminalNode[] {
	    	return this.getTokens(SqlParser.RR_BRACKET);
	}
	public RR_BRACKET(i: number): TerminalNode {
		return this.getToken(SqlParser.RR_BRACKET, i);
	}
	public CHARACTER(): TerminalNode {
		return this.getToken(SqlParser.CHARACTER, 0);
	}
	public SET_list(): TerminalNode[] {
	    	return this.getTokens(SqlParser.SET);
	}
	public SET(i: number): TerminalNode {
		return this.getToken(SqlParser.SET, i);
	}
	public LINES_list(): TerminalNode[] {
	    	return this.getTokens(SqlParser.LINES);
	}
	public LINES(i: number): TerminalNode {
		return this.getToken(SqlParser.LINES, i);
	}
	public IGNORE_list(): TerminalNode[] {
	    	return this.getTokens(SqlParser.IGNORE);
	}
	public IGNORE(i: number): TerminalNode {
		return this.getToken(SqlParser.IGNORE, i);
	}
	public decimalLiteral(): DecimalLiteralContext {
		return this.getTypedRuleContext(DecimalLiteralContext, 0) as DecimalLiteralContext;
	}
	public assignmentField_list(): AssignmentFieldContext[] {
		return this.getTypedRuleContexts(AssignmentFieldContext) as AssignmentFieldContext[];
	}
	public assignmentField(i: number): AssignmentFieldContext {
		return this.getTypedRuleContext(AssignmentFieldContext, i) as AssignmentFieldContext;
	}
	public updatedElement_list(): UpdatedElementContext[] {
		return this.getTypedRuleContexts(UpdatedElementContext) as UpdatedElementContext[];
	}
	public updatedElement(i: number): UpdatedElementContext {
		return this.getTypedRuleContext(UpdatedElementContext, i) as UpdatedElementContext;
	}
	public charsetName(): CharsetNameContext {
		return this.getTypedRuleContext(CharsetNameContext, 0) as CharsetNameContext;
	}
	public LOW_PRIORITY(): TerminalNode {
		return this.getToken(SqlParser.LOW_PRIORITY, 0);
	}
	public CONCURRENT(): TerminalNode {
		return this.getToken(SqlParser.CONCURRENT, 0);
	}
	public REPLACE(): TerminalNode {
		return this.getToken(SqlParser.REPLACE, 0);
	}
	public FIELDS(): TerminalNode {
		return this.getToken(SqlParser.FIELDS, 0);
	}
	public COLUMNS(): TerminalNode {
		return this.getToken(SqlParser.COLUMNS, 0);
	}
	public ROWS(): TerminalNode {
		return this.getToken(SqlParser.ROWS, 0);
	}
	public selectFieldsInto_list(): SelectFieldsIntoContext[] {
		return this.getTypedRuleContexts(SelectFieldsIntoContext) as SelectFieldsIntoContext[];
	}
	public selectFieldsInto(i: number): SelectFieldsIntoContext {
		return this.getTypedRuleContext(SelectFieldsIntoContext, i) as SelectFieldsIntoContext;
	}
	public selectLinesInto_list(): SelectLinesIntoContext[] {
		return this.getTypedRuleContexts(SelectLinesIntoContext) as SelectLinesIntoContext[];
	}
	public selectLinesInto(i: number): SelectLinesIntoContext {
		return this.getTypedRuleContext(SelectLinesIntoContext, i) as SelectLinesIntoContext;
	}
	public COMMA_list(): TerminalNode[] {
	    	return this.getTokens(SqlParser.COMMA);
	}
	public COMMA(i: number): TerminalNode {
		return this.getToken(SqlParser.COMMA, i);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_loadDataStatement;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterLoadDataStatement) {
	 		listener.enterLoadDataStatement(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitLoadDataStatement) {
	 		listener.exitLoadDataStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitLoadDataStatement) {
			return visitor.visitLoadDataStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class LoadXmlStatementContext extends ParserRuleContext {
	public _priority!: Token;
	public _filename!: Token;
	public _violation!: Token;
	public _charset!: CharsetNameContext;
	public _tag!: Token;
	public _linesFormat!: Token;
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public LOAD(): TerminalNode {
		return this.getToken(SqlParser.LOAD, 0);
	}
	public XML(): TerminalNode {
		return this.getToken(SqlParser.XML, 0);
	}
	public INFILE(): TerminalNode {
		return this.getToken(SqlParser.INFILE, 0);
	}
	public INTO(): TerminalNode {
		return this.getToken(SqlParser.INTO, 0);
	}
	public TABLE(): TerminalNode {
		return this.getToken(SqlParser.TABLE, 0);
	}
	public tableName(): TableNameContext {
		return this.getTypedRuleContext(TableNameContext, 0) as TableNameContext;
	}
	public STRING_LITERAL_list(): TerminalNode[] {
	    	return this.getTokens(SqlParser.STRING_LITERAL);
	}
	public STRING_LITERAL(i: number): TerminalNode {
		return this.getToken(SqlParser.STRING_LITERAL, i);
	}
	public LOCAL(): TerminalNode {
		return this.getToken(SqlParser.LOCAL, 0);
	}
	public CHARACTER(): TerminalNode {
		return this.getToken(SqlParser.CHARACTER, 0);
	}
	public SET_list(): TerminalNode[] {
	    	return this.getTokens(SqlParser.SET);
	}
	public SET(i: number): TerminalNode {
		return this.getToken(SqlParser.SET, i);
	}
	public ROWS_list(): TerminalNode[] {
	    	return this.getTokens(SqlParser.ROWS);
	}
	public ROWS(i: number): TerminalNode {
		return this.getToken(SqlParser.ROWS, i);
	}
	public IDENTIFIED(): TerminalNode {
		return this.getToken(SqlParser.IDENTIFIED, 0);
	}
	public BY(): TerminalNode {
		return this.getToken(SqlParser.BY, 0);
	}
	public LESS_SYMBOL(): TerminalNode {
		return this.getToken(SqlParser.LESS_SYMBOL, 0);
	}
	public GREATER_SYMBOL(): TerminalNode {
		return this.getToken(SqlParser.GREATER_SYMBOL, 0);
	}
	public IGNORE_list(): TerminalNode[] {
	    	return this.getTokens(SqlParser.IGNORE);
	}
	public IGNORE(i: number): TerminalNode {
		return this.getToken(SqlParser.IGNORE, i);
	}
	public decimalLiteral(): DecimalLiteralContext {
		return this.getTypedRuleContext(DecimalLiteralContext, 0) as DecimalLiteralContext;
	}
	public LR_BRACKET(): TerminalNode {
		return this.getToken(SqlParser.LR_BRACKET, 0);
	}
	public assignmentField_list(): AssignmentFieldContext[] {
		return this.getTypedRuleContexts(AssignmentFieldContext) as AssignmentFieldContext[];
	}
	public assignmentField(i: number): AssignmentFieldContext {
		return this.getTypedRuleContext(AssignmentFieldContext, i) as AssignmentFieldContext;
	}
	public RR_BRACKET(): TerminalNode {
		return this.getToken(SqlParser.RR_BRACKET, 0);
	}
	public updatedElement_list(): UpdatedElementContext[] {
		return this.getTypedRuleContexts(UpdatedElementContext) as UpdatedElementContext[];
	}
	public updatedElement(i: number): UpdatedElementContext {
		return this.getTypedRuleContext(UpdatedElementContext, i) as UpdatedElementContext;
	}
	public charsetName(): CharsetNameContext {
		return this.getTypedRuleContext(CharsetNameContext, 0) as CharsetNameContext;
	}
	public LOW_PRIORITY(): TerminalNode {
		return this.getToken(SqlParser.LOW_PRIORITY, 0);
	}
	public CONCURRENT(): TerminalNode {
		return this.getToken(SqlParser.CONCURRENT, 0);
	}
	public REPLACE(): TerminalNode {
		return this.getToken(SqlParser.REPLACE, 0);
	}
	public LINES(): TerminalNode {
		return this.getToken(SqlParser.LINES, 0);
	}
	public COMMA_list(): TerminalNode[] {
	    	return this.getTokens(SqlParser.COMMA);
	}
	public COMMA(i: number): TerminalNode {
		return this.getToken(SqlParser.COMMA, i);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_loadXmlStatement;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterLoadXmlStatement) {
	 		listener.enterLoadXmlStatement(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitLoadXmlStatement) {
	 		listener.exitLoadXmlStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitLoadXmlStatement) {
			return visitor.visitLoadXmlStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ReplaceStatementContext extends ParserRuleContext {
	public _priority!: Token;
	public _partitions!: UidListContext;
	public _columns!: UidListContext;
	public _setFirst!: UpdatedElementContext;
	public _updatedElement!: UpdatedElementContext;
	public _setElements: UpdatedElementContext[] = [];
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public REPLACE(): TerminalNode {
		return this.getToken(SqlParser.REPLACE, 0);
	}
	public tableName(): TableNameContext {
		return this.getTypedRuleContext(TableNameContext, 0) as TableNameContext;
	}
	public insertStatementValue(): InsertStatementValueContext {
		return this.getTypedRuleContext(InsertStatementValueContext, 0) as InsertStatementValueContext;
	}
	public SET(): TerminalNode {
		return this.getToken(SqlParser.SET, 0);
	}
	public INTO(): TerminalNode {
		return this.getToken(SqlParser.INTO, 0);
	}
	public PARTITION(): TerminalNode {
		return this.getToken(SqlParser.PARTITION, 0);
	}
	public LR_BRACKET_list(): TerminalNode[] {
	    	return this.getTokens(SqlParser.LR_BRACKET);
	}
	public LR_BRACKET(i: number): TerminalNode {
		return this.getToken(SqlParser.LR_BRACKET, i);
	}
	public RR_BRACKET_list(): TerminalNode[] {
	    	return this.getTokens(SqlParser.RR_BRACKET);
	}
	public RR_BRACKET(i: number): TerminalNode {
		return this.getToken(SqlParser.RR_BRACKET, i);
	}
	public updatedElement_list(): UpdatedElementContext[] {
		return this.getTypedRuleContexts(UpdatedElementContext) as UpdatedElementContext[];
	}
	public updatedElement(i: number): UpdatedElementContext {
		return this.getTypedRuleContext(UpdatedElementContext, i) as UpdatedElementContext;
	}
	public uidList_list(): UidListContext[] {
		return this.getTypedRuleContexts(UidListContext) as UidListContext[];
	}
	public uidList(i: number): UidListContext {
		return this.getTypedRuleContext(UidListContext, i) as UidListContext;
	}
	public LOW_PRIORITY(): TerminalNode {
		return this.getToken(SqlParser.LOW_PRIORITY, 0);
	}
	public DELAYED(): TerminalNode {
		return this.getToken(SqlParser.DELAYED, 0);
	}
	public COMMA_list(): TerminalNode[] {
	    	return this.getTokens(SqlParser.COMMA);
	}
	public COMMA(i: number): TerminalNode {
		return this.getToken(SqlParser.COMMA, i);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_replaceStatement;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterReplaceStatement) {
	 		listener.enterReplaceStatement(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitReplaceStatement) {
	 		listener.exitReplaceStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitReplaceStatement) {
			return visitor.visitReplaceStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class SelectStatementContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_selectStatement;
	}
	public copyFrom(ctx: SelectStatementContext): void {
		super.copyFrom(ctx);
	}
}
export class UnionSelectContext extends SelectStatementContext {
	public _unionType!: Token;
	constructor(parser: SqlParser, ctx: SelectStatementContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public querySpecificationNointo(): QuerySpecificationNointoContext {
		return this.getTypedRuleContext(QuerySpecificationNointoContext, 0) as QuerySpecificationNointoContext;
	}
	public unionStatement_list(): UnionStatementContext[] {
		return this.getTypedRuleContexts(UnionStatementContext) as UnionStatementContext[];
	}
	public unionStatement(i: number): UnionStatementContext {
		return this.getTypedRuleContext(UnionStatementContext, i) as UnionStatementContext;
	}
	public UNION(): TerminalNode {
		return this.getToken(SqlParser.UNION, 0);
	}
	public orderByClause(): OrderByClauseContext {
		return this.getTypedRuleContext(OrderByClauseContext, 0) as OrderByClauseContext;
	}
	public limitClause(): LimitClauseContext {
		return this.getTypedRuleContext(LimitClauseContext, 0) as LimitClauseContext;
	}
	public lockClause(): LockClauseContext {
		return this.getTypedRuleContext(LockClauseContext, 0) as LockClauseContext;
	}
	public querySpecification(): QuerySpecificationContext {
		return this.getTypedRuleContext(QuerySpecificationContext, 0) as QuerySpecificationContext;
	}
	public queryExpression(): QueryExpressionContext {
		return this.getTypedRuleContext(QueryExpressionContext, 0) as QueryExpressionContext;
	}
	public ALL(): TerminalNode {
		return this.getToken(SqlParser.ALL, 0);
	}
	public DISTINCT(): TerminalNode {
		return this.getToken(SqlParser.DISTINCT, 0);
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterUnionSelect) {
	 		listener.enterUnionSelect(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitUnionSelect) {
	 		listener.exitUnionSelect(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitUnionSelect) {
			return visitor.visitUnionSelect(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class UnionParenthesisSelectContext extends SelectStatementContext {
	public _unionType!: Token;
	constructor(parser: SqlParser, ctx: SelectStatementContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public queryExpressionNointo(): QueryExpressionNointoContext {
		return this.getTypedRuleContext(QueryExpressionNointoContext, 0) as QueryExpressionNointoContext;
	}
	public unionParenthesis_list(): UnionParenthesisContext[] {
		return this.getTypedRuleContexts(UnionParenthesisContext) as UnionParenthesisContext[];
	}
	public unionParenthesis(i: number): UnionParenthesisContext {
		return this.getTypedRuleContext(UnionParenthesisContext, i) as UnionParenthesisContext;
	}
	public UNION(): TerminalNode {
		return this.getToken(SqlParser.UNION, 0);
	}
	public queryExpression(): QueryExpressionContext {
		return this.getTypedRuleContext(QueryExpressionContext, 0) as QueryExpressionContext;
	}
	public orderByClause(): OrderByClauseContext {
		return this.getTypedRuleContext(OrderByClauseContext, 0) as OrderByClauseContext;
	}
	public limitClause(): LimitClauseContext {
		return this.getTypedRuleContext(LimitClauseContext, 0) as LimitClauseContext;
	}
	public lockClause(): LockClauseContext {
		return this.getTypedRuleContext(LockClauseContext, 0) as LockClauseContext;
	}
	public ALL(): TerminalNode {
		return this.getToken(SqlParser.ALL, 0);
	}
	public DISTINCT(): TerminalNode {
		return this.getToken(SqlParser.DISTINCT, 0);
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterUnionParenthesisSelect) {
	 		listener.enterUnionParenthesisSelect(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitUnionParenthesisSelect) {
	 		listener.exitUnionParenthesisSelect(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitUnionParenthesisSelect) {
			return visitor.visitUnionParenthesisSelect(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class SimpleSelectContext extends SelectStatementContext {
	constructor(parser: SqlParser, ctx: SelectStatementContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public querySpecification(): QuerySpecificationContext {
		return this.getTypedRuleContext(QuerySpecificationContext, 0) as QuerySpecificationContext;
	}
	public lockClause(): LockClauseContext {
		return this.getTypedRuleContext(LockClauseContext, 0) as LockClauseContext;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterSimpleSelect) {
	 		listener.enterSimpleSelect(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitSimpleSelect) {
	 		listener.exitSimpleSelect(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitSimpleSelect) {
			return visitor.visitSimpleSelect(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class ParenthesisSelectContext extends SelectStatementContext {
	constructor(parser: SqlParser, ctx: SelectStatementContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public queryExpression(): QueryExpressionContext {
		return this.getTypedRuleContext(QueryExpressionContext, 0) as QueryExpressionContext;
	}
	public lockClause(): LockClauseContext {
		return this.getTypedRuleContext(LockClauseContext, 0) as LockClauseContext;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterParenthesisSelect) {
	 		listener.enterParenthesisSelect(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitParenthesisSelect) {
	 		listener.exitParenthesisSelect(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitParenthesisSelect) {
			return visitor.visitParenthesisSelect(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class UpdateStatementContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public singleUpdateStatement(): SingleUpdateStatementContext {
		return this.getTypedRuleContext(SingleUpdateStatementContext, 0) as SingleUpdateStatementContext;
	}
	public multipleUpdateStatement(): MultipleUpdateStatementContext {
		return this.getTypedRuleContext(MultipleUpdateStatementContext, 0) as MultipleUpdateStatementContext;
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_updateStatement;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterUpdateStatement) {
	 		listener.enterUpdateStatement(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitUpdateStatement) {
	 		listener.exitUpdateStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitUpdateStatement) {
			return visitor.visitUpdateStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class InsertStatementValueContext extends ParserRuleContext {
	public _insertFormat!: Token;
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public selectStatement(): SelectStatementContext {
		return this.getTypedRuleContext(SelectStatementContext, 0) as SelectStatementContext;
	}
	public LR_BRACKET_list(): TerminalNode[] {
	    	return this.getTokens(SqlParser.LR_BRACKET);
	}
	public LR_BRACKET(i: number): TerminalNode {
		return this.getToken(SqlParser.LR_BRACKET, i);
	}
	public RR_BRACKET_list(): TerminalNode[] {
	    	return this.getTokens(SqlParser.RR_BRACKET);
	}
	public RR_BRACKET(i: number): TerminalNode {
		return this.getToken(SqlParser.RR_BRACKET, i);
	}
	public VALUES(): TerminalNode {
		return this.getToken(SqlParser.VALUES, 0);
	}
	public VALUE(): TerminalNode {
		return this.getToken(SqlParser.VALUE, 0);
	}
	public expressionsWithDefaults_list(): ExpressionsWithDefaultsContext[] {
		return this.getTypedRuleContexts(ExpressionsWithDefaultsContext) as ExpressionsWithDefaultsContext[];
	}
	public expressionsWithDefaults(i: number): ExpressionsWithDefaultsContext {
		return this.getTypedRuleContext(ExpressionsWithDefaultsContext, i) as ExpressionsWithDefaultsContext;
	}
	public COMMA_list(): TerminalNode[] {
	    	return this.getTokens(SqlParser.COMMA);
	}
	public COMMA(i: number): TerminalNode {
		return this.getToken(SqlParser.COMMA, i);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_insertStatementValue;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterInsertStatementValue) {
	 		listener.enterInsertStatementValue(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitInsertStatementValue) {
	 		listener.exitInsertStatementValue(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitInsertStatementValue) {
			return visitor.visitInsertStatementValue(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class UpdatedElementContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public fullColumnName(): FullColumnNameContext {
		return this.getTypedRuleContext(FullColumnNameContext, 0) as FullColumnNameContext;
	}
	public EQUAL_SYMBOL(): TerminalNode {
		return this.getToken(SqlParser.EQUAL_SYMBOL, 0);
	}
	public expression(): ExpressionContext {
		return this.getTypedRuleContext(ExpressionContext, 0) as ExpressionContext;
	}
	public DEFAULT(): TerminalNode {
		return this.getToken(SqlParser.DEFAULT, 0);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_updatedElement;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterUpdatedElement) {
	 		listener.enterUpdatedElement(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitUpdatedElement) {
	 		listener.exitUpdatedElement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitUpdatedElement) {
			return visitor.visitUpdatedElement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class AssignmentFieldContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public uid(): UidContext {
		return this.getTypedRuleContext(UidContext, 0) as UidContext;
	}
	public LOCAL_ID(): TerminalNode {
		return this.getToken(SqlParser.LOCAL_ID, 0);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_assignmentField;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterAssignmentField) {
	 		listener.enterAssignmentField(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitAssignmentField) {
	 		listener.exitAssignmentField(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitAssignmentField) {
			return visitor.visitAssignmentField(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class LockClauseContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public FOR(): TerminalNode {
		return this.getToken(SqlParser.FOR, 0);
	}
	public UPDATE(): TerminalNode {
		return this.getToken(SqlParser.UPDATE, 0);
	}
	public LOCK(): TerminalNode {
		return this.getToken(SqlParser.LOCK, 0);
	}
	public IN(): TerminalNode {
		return this.getToken(SqlParser.IN, 0);
	}
	public SHARE(): TerminalNode {
		return this.getToken(SqlParser.SHARE, 0);
	}
	public MODE(): TerminalNode {
		return this.getToken(SqlParser.MODE, 0);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_lockClause;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterLockClause) {
	 		listener.enterLockClause(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitLockClause) {
	 		listener.exitLockClause(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitLockClause) {
			return visitor.visitLockClause(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class SingleDeleteStatementContext extends ParserRuleContext {
	public _priority!: Token;
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public DELETE(): TerminalNode {
		return this.getToken(SqlParser.DELETE, 0);
	}
	public FROM(): TerminalNode {
		return this.getToken(SqlParser.FROM, 0);
	}
	public tableName(): TableNameContext {
		return this.getTypedRuleContext(TableNameContext, 0) as TableNameContext;
	}
	public QUICK(): TerminalNode {
		return this.getToken(SqlParser.QUICK, 0);
	}
	public IGNORE(): TerminalNode {
		return this.getToken(SqlParser.IGNORE, 0);
	}
	public PARTITION(): TerminalNode {
		return this.getToken(SqlParser.PARTITION, 0);
	}
	public LR_BRACKET(): TerminalNode {
		return this.getToken(SqlParser.LR_BRACKET, 0);
	}
	public uidList(): UidListContext {
		return this.getTypedRuleContext(UidListContext, 0) as UidListContext;
	}
	public RR_BRACKET(): TerminalNode {
		return this.getToken(SqlParser.RR_BRACKET, 0);
	}
	public WHERE(): TerminalNode {
		return this.getToken(SqlParser.WHERE, 0);
	}
	public expression(): ExpressionContext {
		return this.getTypedRuleContext(ExpressionContext, 0) as ExpressionContext;
	}
	public orderByClause(): OrderByClauseContext {
		return this.getTypedRuleContext(OrderByClauseContext, 0) as OrderByClauseContext;
	}
	public LIMIT(): TerminalNode {
		return this.getToken(SqlParser.LIMIT, 0);
	}
	public limitClauseAtom(): LimitClauseAtomContext {
		return this.getTypedRuleContext(LimitClauseAtomContext, 0) as LimitClauseAtomContext;
	}
	public LOW_PRIORITY(): TerminalNode {
		return this.getToken(SqlParser.LOW_PRIORITY, 0);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_singleDeleteStatement;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterSingleDeleteStatement) {
	 		listener.enterSingleDeleteStatement(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitSingleDeleteStatement) {
	 		listener.exitSingleDeleteStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitSingleDeleteStatement) {
			return visitor.visitSingleDeleteStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class MultipleDeleteStatementContext extends ParserRuleContext {
	public _priority!: Token;
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public DELETE(): TerminalNode {
		return this.getToken(SqlParser.DELETE, 0);
	}
	public tableName_list(): TableNameContext[] {
		return this.getTypedRuleContexts(TableNameContext) as TableNameContext[];
	}
	public tableName(i: number): TableNameContext {
		return this.getTypedRuleContext(TableNameContext, i) as TableNameContext;
	}
	public FROM(): TerminalNode {
		return this.getToken(SqlParser.FROM, 0);
	}
	public tableSources(): TableSourcesContext {
		return this.getTypedRuleContext(TableSourcesContext, 0) as TableSourcesContext;
	}
	public USING(): TerminalNode {
		return this.getToken(SqlParser.USING, 0);
	}
	public QUICK(): TerminalNode {
		return this.getToken(SqlParser.QUICK, 0);
	}
	public IGNORE(): TerminalNode {
		return this.getToken(SqlParser.IGNORE, 0);
	}
	public WHERE(): TerminalNode {
		return this.getToken(SqlParser.WHERE, 0);
	}
	public expression(): ExpressionContext {
		return this.getTypedRuleContext(ExpressionContext, 0) as ExpressionContext;
	}
	public LOW_PRIORITY(): TerminalNode {
		return this.getToken(SqlParser.LOW_PRIORITY, 0);
	}
	public DOT_list(): TerminalNode[] {
	    	return this.getTokens(SqlParser.DOT);
	}
	public DOT(i: number): TerminalNode {
		return this.getToken(SqlParser.DOT, i);
	}
	public STAR_list(): TerminalNode[] {
	    	return this.getTokens(SqlParser.STAR);
	}
	public STAR(i: number): TerminalNode {
		return this.getToken(SqlParser.STAR, i);
	}
	public COMMA_list(): TerminalNode[] {
	    	return this.getTokens(SqlParser.COMMA);
	}
	public COMMA(i: number): TerminalNode {
		return this.getToken(SqlParser.COMMA, i);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_multipleDeleteStatement;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterMultipleDeleteStatement) {
	 		listener.enterMultipleDeleteStatement(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitMultipleDeleteStatement) {
	 		listener.exitMultipleDeleteStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitMultipleDeleteStatement) {
			return visitor.visitMultipleDeleteStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class HandlerOpenStatementContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public HANDLER(): TerminalNode {
		return this.getToken(SqlParser.HANDLER, 0);
	}
	public tableName(): TableNameContext {
		return this.getTypedRuleContext(TableNameContext, 0) as TableNameContext;
	}
	public OPEN(): TerminalNode {
		return this.getToken(SqlParser.OPEN, 0);
	}
	public uid(): UidContext {
		return this.getTypedRuleContext(UidContext, 0) as UidContext;
	}
	public AS(): TerminalNode {
		return this.getToken(SqlParser.AS, 0);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_handlerOpenStatement;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterHandlerOpenStatement) {
	 		listener.enterHandlerOpenStatement(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitHandlerOpenStatement) {
	 		listener.exitHandlerOpenStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitHandlerOpenStatement) {
			return visitor.visitHandlerOpenStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class HandlerReadIndexStatementContext extends ParserRuleContext {
	public _index!: UidContext;
	public _moveOrder!: Token;
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public HANDLER(): TerminalNode {
		return this.getToken(SqlParser.HANDLER, 0);
	}
	public tableName(): TableNameContext {
		return this.getTypedRuleContext(TableNameContext, 0) as TableNameContext;
	}
	public READ(): TerminalNode {
		return this.getToken(SqlParser.READ, 0);
	}
	public uid(): UidContext {
		return this.getTypedRuleContext(UidContext, 0) as UidContext;
	}
	public comparisonOperator(): ComparisonOperatorContext {
		return this.getTypedRuleContext(ComparisonOperatorContext, 0) as ComparisonOperatorContext;
	}
	public LR_BRACKET(): TerminalNode {
		return this.getToken(SqlParser.LR_BRACKET, 0);
	}
	public constants(): ConstantsContext {
		return this.getTypedRuleContext(ConstantsContext, 0) as ConstantsContext;
	}
	public RR_BRACKET(): TerminalNode {
		return this.getToken(SqlParser.RR_BRACKET, 0);
	}
	public WHERE(): TerminalNode {
		return this.getToken(SqlParser.WHERE, 0);
	}
	public expression(): ExpressionContext {
		return this.getTypedRuleContext(ExpressionContext, 0) as ExpressionContext;
	}
	public LIMIT(): TerminalNode {
		return this.getToken(SqlParser.LIMIT, 0);
	}
	public limitClauseAtom(): LimitClauseAtomContext {
		return this.getTypedRuleContext(LimitClauseAtomContext, 0) as LimitClauseAtomContext;
	}
	public FIRST(): TerminalNode {
		return this.getToken(SqlParser.FIRST, 0);
	}
	public NEXT(): TerminalNode {
		return this.getToken(SqlParser.NEXT, 0);
	}
	public PREV(): TerminalNode {
		return this.getToken(SqlParser.PREV, 0);
	}
	public LAST(): TerminalNode {
		return this.getToken(SqlParser.LAST, 0);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_handlerReadIndexStatement;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterHandlerReadIndexStatement) {
	 		listener.enterHandlerReadIndexStatement(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitHandlerReadIndexStatement) {
	 		listener.exitHandlerReadIndexStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitHandlerReadIndexStatement) {
			return visitor.visitHandlerReadIndexStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class HandlerReadStatementContext extends ParserRuleContext {
	public _moveOrder!: Token;
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public HANDLER(): TerminalNode {
		return this.getToken(SqlParser.HANDLER, 0);
	}
	public tableName(): TableNameContext {
		return this.getTypedRuleContext(TableNameContext, 0) as TableNameContext;
	}
	public READ(): TerminalNode {
		return this.getToken(SqlParser.READ, 0);
	}
	public FIRST(): TerminalNode {
		return this.getToken(SqlParser.FIRST, 0);
	}
	public NEXT(): TerminalNode {
		return this.getToken(SqlParser.NEXT, 0);
	}
	public WHERE(): TerminalNode {
		return this.getToken(SqlParser.WHERE, 0);
	}
	public expression(): ExpressionContext {
		return this.getTypedRuleContext(ExpressionContext, 0) as ExpressionContext;
	}
	public LIMIT(): TerminalNode {
		return this.getToken(SqlParser.LIMIT, 0);
	}
	public limitClauseAtom(): LimitClauseAtomContext {
		return this.getTypedRuleContext(LimitClauseAtomContext, 0) as LimitClauseAtomContext;
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_handlerReadStatement;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterHandlerReadStatement) {
	 		listener.enterHandlerReadStatement(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitHandlerReadStatement) {
	 		listener.exitHandlerReadStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitHandlerReadStatement) {
			return visitor.visitHandlerReadStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class HandlerCloseStatementContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public HANDLER(): TerminalNode {
		return this.getToken(SqlParser.HANDLER, 0);
	}
	public tableName(): TableNameContext {
		return this.getTypedRuleContext(TableNameContext, 0) as TableNameContext;
	}
	public CLOSE(): TerminalNode {
		return this.getToken(SqlParser.CLOSE, 0);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_handlerCloseStatement;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterHandlerCloseStatement) {
	 		listener.enterHandlerCloseStatement(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitHandlerCloseStatement) {
	 		listener.exitHandlerCloseStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitHandlerCloseStatement) {
			return visitor.visitHandlerCloseStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class SingleUpdateStatementContext extends ParserRuleContext {
	public _priority!: Token;
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public UPDATE(): TerminalNode {
		return this.getToken(SqlParser.UPDATE, 0);
	}
	public tableName(): TableNameContext {
		return this.getTypedRuleContext(TableNameContext, 0) as TableNameContext;
	}
	public SET(): TerminalNode {
		return this.getToken(SqlParser.SET, 0);
	}
	public updatedElement_list(): UpdatedElementContext[] {
		return this.getTypedRuleContexts(UpdatedElementContext) as UpdatedElementContext[];
	}
	public updatedElement(i: number): UpdatedElementContext {
		return this.getTypedRuleContext(UpdatedElementContext, i) as UpdatedElementContext;
	}
	public IGNORE(): TerminalNode {
		return this.getToken(SqlParser.IGNORE, 0);
	}
	public uid(): UidContext {
		return this.getTypedRuleContext(UidContext, 0) as UidContext;
	}
	public COMMA_list(): TerminalNode[] {
	    	return this.getTokens(SqlParser.COMMA);
	}
	public COMMA(i: number): TerminalNode {
		return this.getToken(SqlParser.COMMA, i);
	}
	public WHERE(): TerminalNode {
		return this.getToken(SqlParser.WHERE, 0);
	}
	public expression(): ExpressionContext {
		return this.getTypedRuleContext(ExpressionContext, 0) as ExpressionContext;
	}
	public orderByClause(): OrderByClauseContext {
		return this.getTypedRuleContext(OrderByClauseContext, 0) as OrderByClauseContext;
	}
	public limitClause(): LimitClauseContext {
		return this.getTypedRuleContext(LimitClauseContext, 0) as LimitClauseContext;
	}
	public LOW_PRIORITY(): TerminalNode {
		return this.getToken(SqlParser.LOW_PRIORITY, 0);
	}
	public AS(): TerminalNode {
		return this.getToken(SqlParser.AS, 0);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_singleUpdateStatement;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterSingleUpdateStatement) {
	 		listener.enterSingleUpdateStatement(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitSingleUpdateStatement) {
	 		listener.exitSingleUpdateStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitSingleUpdateStatement) {
			return visitor.visitSingleUpdateStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class MultipleUpdateStatementContext extends ParserRuleContext {
	public _priority!: Token;
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public UPDATE(): TerminalNode {
		return this.getToken(SqlParser.UPDATE, 0);
	}
	public tableSources(): TableSourcesContext {
		return this.getTypedRuleContext(TableSourcesContext, 0) as TableSourcesContext;
	}
	public SET(): TerminalNode {
		return this.getToken(SqlParser.SET, 0);
	}
	public updatedElement_list(): UpdatedElementContext[] {
		return this.getTypedRuleContexts(UpdatedElementContext) as UpdatedElementContext[];
	}
	public updatedElement(i: number): UpdatedElementContext {
		return this.getTypedRuleContext(UpdatedElementContext, i) as UpdatedElementContext;
	}
	public IGNORE(): TerminalNode {
		return this.getToken(SqlParser.IGNORE, 0);
	}
	public COMMA_list(): TerminalNode[] {
	    	return this.getTokens(SqlParser.COMMA);
	}
	public COMMA(i: number): TerminalNode {
		return this.getToken(SqlParser.COMMA, i);
	}
	public WHERE(): TerminalNode {
		return this.getToken(SqlParser.WHERE, 0);
	}
	public expression(): ExpressionContext {
		return this.getTypedRuleContext(ExpressionContext, 0) as ExpressionContext;
	}
	public LOW_PRIORITY(): TerminalNode {
		return this.getToken(SqlParser.LOW_PRIORITY, 0);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_multipleUpdateStatement;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterMultipleUpdateStatement) {
	 		listener.enterMultipleUpdateStatement(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitMultipleUpdateStatement) {
	 		listener.exitMultipleUpdateStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitMultipleUpdateStatement) {
			return visitor.visitMultipleUpdateStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class OrderByClauseContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public ORDER(): TerminalNode {
		return this.getToken(SqlParser.ORDER, 0);
	}
	public BY(): TerminalNode {
		return this.getToken(SqlParser.BY, 0);
	}
	public orderByExpression_list(): OrderByExpressionContext[] {
		return this.getTypedRuleContexts(OrderByExpressionContext) as OrderByExpressionContext[];
	}
	public orderByExpression(i: number): OrderByExpressionContext {
		return this.getTypedRuleContext(OrderByExpressionContext, i) as OrderByExpressionContext;
	}
	public COMMA_list(): TerminalNode[] {
	    	return this.getTokens(SqlParser.COMMA);
	}
	public COMMA(i: number): TerminalNode {
		return this.getToken(SqlParser.COMMA, i);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_orderByClause;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterOrderByClause) {
	 		listener.enterOrderByClause(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitOrderByClause) {
	 		listener.exitOrderByClause(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitOrderByClause) {
			return visitor.visitOrderByClause(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class OrderByExpressionContext extends ParserRuleContext {
	public _order!: Token;
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public expression(): ExpressionContext {
		return this.getTypedRuleContext(ExpressionContext, 0) as ExpressionContext;
	}
	public ASC(): TerminalNode {
		return this.getToken(SqlParser.ASC, 0);
	}
	public DESC(): TerminalNode {
		return this.getToken(SqlParser.DESC, 0);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_orderByExpression;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterOrderByExpression) {
	 		listener.enterOrderByExpression(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitOrderByExpression) {
	 		listener.exitOrderByExpression(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitOrderByExpression) {
			return visitor.visitOrderByExpression(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class TableSourcesContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public tableSource_list(): TableSourceContext[] {
		return this.getTypedRuleContexts(TableSourceContext) as TableSourceContext[];
	}
	public tableSource(i: number): TableSourceContext {
		return this.getTypedRuleContext(TableSourceContext, i) as TableSourceContext;
	}
	public COMMA_list(): TerminalNode[] {
	    	return this.getTokens(SqlParser.COMMA);
	}
	public COMMA(i: number): TerminalNode {
		return this.getToken(SqlParser.COMMA, i);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_tableSources;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterTableSources) {
	 		listener.enterTableSources(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitTableSources) {
	 		listener.exitTableSources(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitTableSources) {
			return visitor.visitTableSources(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class TableSourceContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_tableSource;
	}
	public copyFrom(ctx: TableSourceContext): void {
		super.copyFrom(ctx);
	}
}
export class TableSourceNestedContext extends TableSourceContext {
	constructor(parser: SqlParser, ctx: TableSourceContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public LR_BRACKET(): TerminalNode {
		return this.getToken(SqlParser.LR_BRACKET, 0);
	}
	public tableSourceItem(): TableSourceItemContext {
		return this.getTypedRuleContext(TableSourceItemContext, 0) as TableSourceItemContext;
	}
	public RR_BRACKET(): TerminalNode {
		return this.getToken(SqlParser.RR_BRACKET, 0);
	}
	public joinPart_list(): JoinPartContext[] {
		return this.getTypedRuleContexts(JoinPartContext) as JoinPartContext[];
	}
	public joinPart(i: number): JoinPartContext {
		return this.getTypedRuleContext(JoinPartContext, i) as JoinPartContext;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterTableSourceNested) {
	 		listener.enterTableSourceNested(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitTableSourceNested) {
	 		listener.exitTableSourceNested(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitTableSourceNested) {
			return visitor.visitTableSourceNested(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class TableSourceBaseContext extends TableSourceContext {
	constructor(parser: SqlParser, ctx: TableSourceContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public tableSourceItem(): TableSourceItemContext {
		return this.getTypedRuleContext(TableSourceItemContext, 0) as TableSourceItemContext;
	}
	public joinPart_list(): JoinPartContext[] {
		return this.getTypedRuleContexts(JoinPartContext) as JoinPartContext[];
	}
	public joinPart(i: number): JoinPartContext {
		return this.getTypedRuleContext(JoinPartContext, i) as JoinPartContext;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterTableSourceBase) {
	 		listener.enterTableSourceBase(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitTableSourceBase) {
	 		listener.exitTableSourceBase(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitTableSourceBase) {
			return visitor.visitTableSourceBase(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class TableSourceItemContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_tableSourceItem;
	}
	public copyFrom(ctx: TableSourceItemContext): void {
		super.copyFrom(ctx);
	}
}
export class SubqueryTableItemContext extends TableSourceItemContext {
	public _parenthesisSubquery!: SelectStatementContext;
	public _alias!: UidContext;
	constructor(parser: SqlParser, ctx: TableSourceItemContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public uid(): UidContext {
		return this.getTypedRuleContext(UidContext, 0) as UidContext;
	}
	public selectStatement(): SelectStatementContext {
		return this.getTypedRuleContext(SelectStatementContext, 0) as SelectStatementContext;
	}
	public LR_BRACKET(): TerminalNode {
		return this.getToken(SqlParser.LR_BRACKET, 0);
	}
	public RR_BRACKET(): TerminalNode {
		return this.getToken(SqlParser.RR_BRACKET, 0);
	}
	public AS(): TerminalNode {
		return this.getToken(SqlParser.AS, 0);
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterSubqueryTableItem) {
	 		listener.enterSubqueryTableItem(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitSubqueryTableItem) {
	 		listener.exitSubqueryTableItem(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitSubqueryTableItem) {
			return visitor.visitSubqueryTableItem(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class AtomTableItemContext extends TableSourceItemContext {
	public _alias!: UidContext;
	constructor(parser: SqlParser, ctx: TableSourceItemContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public tableName(): TableNameContext {
		return this.getTypedRuleContext(TableNameContext, 0) as TableNameContext;
	}
	public PARTITION(): TerminalNode {
		return this.getToken(SqlParser.PARTITION, 0);
	}
	public LR_BRACKET(): TerminalNode {
		return this.getToken(SqlParser.LR_BRACKET, 0);
	}
	public uidList(): UidListContext {
		return this.getTypedRuleContext(UidListContext, 0) as UidListContext;
	}
	public RR_BRACKET(): TerminalNode {
		return this.getToken(SqlParser.RR_BRACKET, 0);
	}
	public indexHint_list(): IndexHintContext[] {
		return this.getTypedRuleContexts(IndexHintContext) as IndexHintContext[];
	}
	public indexHint(i: number): IndexHintContext {
		return this.getTypedRuleContext(IndexHintContext, i) as IndexHintContext;
	}
	public uid(): UidContext {
		return this.getTypedRuleContext(UidContext, 0) as UidContext;
	}
	public AS(): TerminalNode {
		return this.getToken(SqlParser.AS, 0);
	}
	public COMMA_list(): TerminalNode[] {
	    	return this.getTokens(SqlParser.COMMA);
	}
	public COMMA(i: number): TerminalNode {
		return this.getToken(SqlParser.COMMA, i);
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterAtomTableItem) {
	 		listener.enterAtomTableItem(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitAtomTableItem) {
	 		listener.exitAtomTableItem(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitAtomTableItem) {
			return visitor.visitAtomTableItem(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class TableSourcesItemContext extends TableSourceItemContext {
	constructor(parser: SqlParser, ctx: TableSourceItemContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public LR_BRACKET(): TerminalNode {
		return this.getToken(SqlParser.LR_BRACKET, 0);
	}
	public tableSources(): TableSourcesContext {
		return this.getTypedRuleContext(TableSourcesContext, 0) as TableSourcesContext;
	}
	public RR_BRACKET(): TerminalNode {
		return this.getToken(SqlParser.RR_BRACKET, 0);
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterTableSourcesItem) {
	 		listener.enterTableSourcesItem(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitTableSourcesItem) {
	 		listener.exitTableSourcesItem(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitTableSourcesItem) {
			return visitor.visitTableSourcesItem(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class IndexHintContext extends ParserRuleContext {
	public _indexHintAction!: Token;
	public _keyFormat!: Token;
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public LR_BRACKET(): TerminalNode {
		return this.getToken(SqlParser.LR_BRACKET, 0);
	}
	public uidList(): UidListContext {
		return this.getTypedRuleContext(UidListContext, 0) as UidListContext;
	}
	public RR_BRACKET(): TerminalNode {
		return this.getToken(SqlParser.RR_BRACKET, 0);
	}
	public USE(): TerminalNode {
		return this.getToken(SqlParser.USE, 0);
	}
	public IGNORE(): TerminalNode {
		return this.getToken(SqlParser.IGNORE, 0);
	}
	public FORCE(): TerminalNode {
		return this.getToken(SqlParser.FORCE, 0);
	}
	public INDEX(): TerminalNode {
		return this.getToken(SqlParser.INDEX, 0);
	}
	public KEY(): TerminalNode {
		return this.getToken(SqlParser.KEY, 0);
	}
	public FOR(): TerminalNode {
		return this.getToken(SqlParser.FOR, 0);
	}
	public indexHintType(): IndexHintTypeContext {
		return this.getTypedRuleContext(IndexHintTypeContext, 0) as IndexHintTypeContext;
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_indexHint;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterIndexHint) {
	 		listener.enterIndexHint(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitIndexHint) {
	 		listener.exitIndexHint(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitIndexHint) {
			return visitor.visitIndexHint(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class IndexHintTypeContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public JOIN(): TerminalNode {
		return this.getToken(SqlParser.JOIN, 0);
	}
	public ORDER(): TerminalNode {
		return this.getToken(SqlParser.ORDER, 0);
	}
	public BY(): TerminalNode {
		return this.getToken(SqlParser.BY, 0);
	}
	public GROUP(): TerminalNode {
		return this.getToken(SqlParser.GROUP, 0);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_indexHintType;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterIndexHintType) {
	 		listener.enterIndexHintType(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitIndexHintType) {
	 		listener.exitIndexHintType(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitIndexHintType) {
			return visitor.visitIndexHintType(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class JoinPartContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_joinPart;
	}
	public copyFrom(ctx: JoinPartContext): void {
		super.copyFrom(ctx);
	}
}
export class InnerJoinContext extends JoinPartContext {
	constructor(parser: SqlParser, ctx: JoinPartContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public JOIN(): TerminalNode {
		return this.getToken(SqlParser.JOIN, 0);
	}
	public tableSourceItem(): TableSourceItemContext {
		return this.getTypedRuleContext(TableSourceItemContext, 0) as TableSourceItemContext;
	}
	public ON(): TerminalNode {
		return this.getToken(SqlParser.ON, 0);
	}
	public expression(): ExpressionContext {
		return this.getTypedRuleContext(ExpressionContext, 0) as ExpressionContext;
	}
	public USING(): TerminalNode {
		return this.getToken(SqlParser.USING, 0);
	}
	public LR_BRACKET(): TerminalNode {
		return this.getToken(SqlParser.LR_BRACKET, 0);
	}
	public uidList(): UidListContext {
		return this.getTypedRuleContext(UidListContext, 0) as UidListContext;
	}
	public RR_BRACKET(): TerminalNode {
		return this.getToken(SqlParser.RR_BRACKET, 0);
	}
	public INNER(): TerminalNode {
		return this.getToken(SqlParser.INNER, 0);
	}
	public CROSS(): TerminalNode {
		return this.getToken(SqlParser.CROSS, 0);
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterInnerJoin) {
	 		listener.enterInnerJoin(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitInnerJoin) {
	 		listener.exitInnerJoin(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitInnerJoin) {
			return visitor.visitInnerJoin(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class NaturalJoinContext extends JoinPartContext {
	constructor(parser: SqlParser, ctx: JoinPartContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public NATURAL(): TerminalNode {
		return this.getToken(SqlParser.NATURAL, 0);
	}
	public JOIN(): TerminalNode {
		return this.getToken(SqlParser.JOIN, 0);
	}
	public tableSourceItem(): TableSourceItemContext {
		return this.getTypedRuleContext(TableSourceItemContext, 0) as TableSourceItemContext;
	}
	public LEFT(): TerminalNode {
		return this.getToken(SqlParser.LEFT, 0);
	}
	public RIGHT(): TerminalNode {
		return this.getToken(SqlParser.RIGHT, 0);
	}
	public OUTER(): TerminalNode {
		return this.getToken(SqlParser.OUTER, 0);
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterNaturalJoin) {
	 		listener.enterNaturalJoin(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitNaturalJoin) {
	 		listener.exitNaturalJoin(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitNaturalJoin) {
			return visitor.visitNaturalJoin(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class OuterJoinContext extends JoinPartContext {
	constructor(parser: SqlParser, ctx: JoinPartContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public JOIN(): TerminalNode {
		return this.getToken(SqlParser.JOIN, 0);
	}
	public tableSourceItem(): TableSourceItemContext {
		return this.getTypedRuleContext(TableSourceItemContext, 0) as TableSourceItemContext;
	}
	public LEFT(): TerminalNode {
		return this.getToken(SqlParser.LEFT, 0);
	}
	public RIGHT(): TerminalNode {
		return this.getToken(SqlParser.RIGHT, 0);
	}
	public ON(): TerminalNode {
		return this.getToken(SqlParser.ON, 0);
	}
	public expression(): ExpressionContext {
		return this.getTypedRuleContext(ExpressionContext, 0) as ExpressionContext;
	}
	public USING(): TerminalNode {
		return this.getToken(SqlParser.USING, 0);
	}
	public LR_BRACKET(): TerminalNode {
		return this.getToken(SqlParser.LR_BRACKET, 0);
	}
	public uidList(): UidListContext {
		return this.getTypedRuleContext(UidListContext, 0) as UidListContext;
	}
	public RR_BRACKET(): TerminalNode {
		return this.getToken(SqlParser.RR_BRACKET, 0);
	}
	public OUTER(): TerminalNode {
		return this.getToken(SqlParser.OUTER, 0);
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterOuterJoin) {
	 		listener.enterOuterJoin(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitOuterJoin) {
	 		listener.exitOuterJoin(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitOuterJoin) {
			return visitor.visitOuterJoin(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class StraightJoinContext extends JoinPartContext {
	constructor(parser: SqlParser, ctx: JoinPartContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public STRAIGHT_JOIN(): TerminalNode {
		return this.getToken(SqlParser.STRAIGHT_JOIN, 0);
	}
	public tableSourceItem(): TableSourceItemContext {
		return this.getTypedRuleContext(TableSourceItemContext, 0) as TableSourceItemContext;
	}
	public ON(): TerminalNode {
		return this.getToken(SqlParser.ON, 0);
	}
	public expression(): ExpressionContext {
		return this.getTypedRuleContext(ExpressionContext, 0) as ExpressionContext;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterStraightJoin) {
	 		listener.enterStraightJoin(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitStraightJoin) {
	 		listener.exitStraightJoin(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitStraightJoin) {
			return visitor.visitStraightJoin(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class QueryExpressionContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public LR_BRACKET(): TerminalNode {
		return this.getToken(SqlParser.LR_BRACKET, 0);
	}
	public querySpecification(): QuerySpecificationContext {
		return this.getTypedRuleContext(QuerySpecificationContext, 0) as QuerySpecificationContext;
	}
	public RR_BRACKET(): TerminalNode {
		return this.getToken(SqlParser.RR_BRACKET, 0);
	}
	public queryExpression(): QueryExpressionContext {
		return this.getTypedRuleContext(QueryExpressionContext, 0) as QueryExpressionContext;
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_queryExpression;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterQueryExpression) {
	 		listener.enterQueryExpression(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitQueryExpression) {
	 		listener.exitQueryExpression(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitQueryExpression) {
			return visitor.visitQueryExpression(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class QueryExpressionNointoContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public LR_BRACKET(): TerminalNode {
		return this.getToken(SqlParser.LR_BRACKET, 0);
	}
	public querySpecificationNointo(): QuerySpecificationNointoContext {
		return this.getTypedRuleContext(QuerySpecificationNointoContext, 0) as QuerySpecificationNointoContext;
	}
	public RR_BRACKET(): TerminalNode {
		return this.getToken(SqlParser.RR_BRACKET, 0);
	}
	public queryExpressionNointo(): QueryExpressionNointoContext {
		return this.getTypedRuleContext(QueryExpressionNointoContext, 0) as QueryExpressionNointoContext;
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_queryExpressionNointo;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterQueryExpressionNointo) {
	 		listener.enterQueryExpressionNointo(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitQueryExpressionNointo) {
	 		listener.exitQueryExpressionNointo(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitQueryExpressionNointo) {
			return visitor.visitQueryExpressionNointo(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class QuerySpecificationContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public SELECT(): TerminalNode {
		return this.getToken(SqlParser.SELECT, 0);
	}
	public selectElements(): SelectElementsContext {
		return this.getTypedRuleContext(SelectElementsContext, 0) as SelectElementsContext;
	}
	public selectSpec_list(): SelectSpecContext[] {
		return this.getTypedRuleContexts(SelectSpecContext) as SelectSpecContext[];
	}
	public selectSpec(i: number): SelectSpecContext {
		return this.getTypedRuleContext(SelectSpecContext, i) as SelectSpecContext;
	}
	public selectIntoExpression(): SelectIntoExpressionContext {
		return this.getTypedRuleContext(SelectIntoExpressionContext, 0) as SelectIntoExpressionContext;
	}
	public fromClause(): FromClauseContext {
		return this.getTypedRuleContext(FromClauseContext, 0) as FromClauseContext;
	}
	public orderByClause(): OrderByClauseContext {
		return this.getTypedRuleContext(OrderByClauseContext, 0) as OrderByClauseContext;
	}
	public limitClause(): LimitClauseContext {
		return this.getTypedRuleContext(LimitClauseContext, 0) as LimitClauseContext;
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_querySpecification;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterQuerySpecification) {
	 		listener.enterQuerySpecification(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitQuerySpecification) {
	 		listener.exitQuerySpecification(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitQuerySpecification) {
			return visitor.visitQuerySpecification(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class QuerySpecificationNointoContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public SELECT(): TerminalNode {
		return this.getToken(SqlParser.SELECT, 0);
	}
	public selectElements(): SelectElementsContext {
		return this.getTypedRuleContext(SelectElementsContext, 0) as SelectElementsContext;
	}
	public selectSpec_list(): SelectSpecContext[] {
		return this.getTypedRuleContexts(SelectSpecContext) as SelectSpecContext[];
	}
	public selectSpec(i: number): SelectSpecContext {
		return this.getTypedRuleContext(SelectSpecContext, i) as SelectSpecContext;
	}
	public fromClause(): FromClauseContext {
		return this.getTypedRuleContext(FromClauseContext, 0) as FromClauseContext;
	}
	public orderByClause(): OrderByClauseContext {
		return this.getTypedRuleContext(OrderByClauseContext, 0) as OrderByClauseContext;
	}
	public limitClause(): LimitClauseContext {
		return this.getTypedRuleContext(LimitClauseContext, 0) as LimitClauseContext;
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_querySpecificationNointo;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterQuerySpecificationNointo) {
	 		listener.enterQuerySpecificationNointo(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitQuerySpecificationNointo) {
	 		listener.exitQuerySpecificationNointo(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitQuerySpecificationNointo) {
			return visitor.visitQuerySpecificationNointo(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class UnionParenthesisContext extends ParserRuleContext {
	public _unionType!: Token;
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public UNION(): TerminalNode {
		return this.getToken(SqlParser.UNION, 0);
	}
	public queryExpressionNointo(): QueryExpressionNointoContext {
		return this.getTypedRuleContext(QueryExpressionNointoContext, 0) as QueryExpressionNointoContext;
	}
	public ALL(): TerminalNode {
		return this.getToken(SqlParser.ALL, 0);
	}
	public DISTINCT(): TerminalNode {
		return this.getToken(SqlParser.DISTINCT, 0);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_unionParenthesis;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterUnionParenthesis) {
	 		listener.enterUnionParenthesis(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitUnionParenthesis) {
	 		listener.exitUnionParenthesis(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitUnionParenthesis) {
			return visitor.visitUnionParenthesis(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class UnionStatementContext extends ParserRuleContext {
	public _unionType!: Token;
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public UNION(): TerminalNode {
		return this.getToken(SqlParser.UNION, 0);
	}
	public querySpecificationNointo(): QuerySpecificationNointoContext {
		return this.getTypedRuleContext(QuerySpecificationNointoContext, 0) as QuerySpecificationNointoContext;
	}
	public queryExpressionNointo(): QueryExpressionNointoContext {
		return this.getTypedRuleContext(QueryExpressionNointoContext, 0) as QueryExpressionNointoContext;
	}
	public ALL(): TerminalNode {
		return this.getToken(SqlParser.ALL, 0);
	}
	public DISTINCT(): TerminalNode {
		return this.getToken(SqlParser.DISTINCT, 0);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_unionStatement;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterUnionStatement) {
	 		listener.enterUnionStatement(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitUnionStatement) {
	 		listener.exitUnionStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitUnionStatement) {
			return visitor.visitUnionStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class SelectSpecContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public ALL(): TerminalNode {
		return this.getToken(SqlParser.ALL, 0);
	}
	public DISTINCT(): TerminalNode {
		return this.getToken(SqlParser.DISTINCT, 0);
	}
	public DISTINCTROW(): TerminalNode {
		return this.getToken(SqlParser.DISTINCTROW, 0);
	}
	public HIGH_PRIORITY(): TerminalNode {
		return this.getToken(SqlParser.HIGH_PRIORITY, 0);
	}
	public STRAIGHT_JOIN(): TerminalNode {
		return this.getToken(SqlParser.STRAIGHT_JOIN, 0);
	}
	public SQL_SMALL_RESULT(): TerminalNode {
		return this.getToken(SqlParser.SQL_SMALL_RESULT, 0);
	}
	public SQL_BIG_RESULT(): TerminalNode {
		return this.getToken(SqlParser.SQL_BIG_RESULT, 0);
	}
	public SQL_BUFFER_RESULT(): TerminalNode {
		return this.getToken(SqlParser.SQL_BUFFER_RESULT, 0);
	}
	public SQL_CACHE(): TerminalNode {
		return this.getToken(SqlParser.SQL_CACHE, 0);
	}
	public SQL_NO_CACHE(): TerminalNode {
		return this.getToken(SqlParser.SQL_NO_CACHE, 0);
	}
	public SQL_CALC_FOUND_ROWS(): TerminalNode {
		return this.getToken(SqlParser.SQL_CALC_FOUND_ROWS, 0);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_selectSpec;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterSelectSpec) {
	 		listener.enterSelectSpec(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitSelectSpec) {
	 		listener.exitSelectSpec(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitSelectSpec) {
			return visitor.visitSelectSpec(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class SelectElementsContext extends ParserRuleContext {
	public _star!: Token;
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public selectElement_list(): SelectElementContext[] {
		return this.getTypedRuleContexts(SelectElementContext) as SelectElementContext[];
	}
	public selectElement(i: number): SelectElementContext {
		return this.getTypedRuleContext(SelectElementContext, i) as SelectElementContext;
	}
	public STAR(): TerminalNode {
		return this.getToken(SqlParser.STAR, 0);
	}
	public COMMA_list(): TerminalNode[] {
	    	return this.getTokens(SqlParser.COMMA);
	}
	public COMMA(i: number): TerminalNode {
		return this.getToken(SqlParser.COMMA, i);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_selectElements;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterSelectElements) {
	 		listener.enterSelectElements(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitSelectElements) {
	 		listener.exitSelectElements(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitSelectElements) {
			return visitor.visitSelectElements(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class SelectElementContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_selectElement;
	}
	public copyFrom(ctx: SelectElementContext): void {
		super.copyFrom(ctx);
	}
}
export class SelectExpressionElementContext extends SelectElementContext {
	constructor(parser: SqlParser, ctx: SelectElementContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public expression(): ExpressionContext {
		return this.getTypedRuleContext(ExpressionContext, 0) as ExpressionContext;
	}
	public LOCAL_ID(): TerminalNode {
		return this.getToken(SqlParser.LOCAL_ID, 0);
	}
	public VAR_ASSIGN(): TerminalNode {
		return this.getToken(SqlParser.VAR_ASSIGN, 0);
	}
	public uid(): UidContext {
		return this.getTypedRuleContext(UidContext, 0) as UidContext;
	}
	public AS(): TerminalNode {
		return this.getToken(SqlParser.AS, 0);
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterSelectExpressionElement) {
	 		listener.enterSelectExpressionElement(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitSelectExpressionElement) {
	 		listener.exitSelectExpressionElement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitSelectExpressionElement) {
			return visitor.visitSelectExpressionElement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class SelectFunctionElementContext extends SelectElementContext {
	constructor(parser: SqlParser, ctx: SelectElementContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public functionCall(): FunctionCallContext {
		return this.getTypedRuleContext(FunctionCallContext, 0) as FunctionCallContext;
	}
	public uid(): UidContext {
		return this.getTypedRuleContext(UidContext, 0) as UidContext;
	}
	public AS(): TerminalNode {
		return this.getToken(SqlParser.AS, 0);
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterSelectFunctionElement) {
	 		listener.enterSelectFunctionElement(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitSelectFunctionElement) {
	 		listener.exitSelectFunctionElement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitSelectFunctionElement) {
			return visitor.visitSelectFunctionElement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class SelectStarElementContext extends SelectElementContext {
	constructor(parser: SqlParser, ctx: SelectElementContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public fullId(): FullIdContext {
		return this.getTypedRuleContext(FullIdContext, 0) as FullIdContext;
	}
	public DOT(): TerminalNode {
		return this.getToken(SqlParser.DOT, 0);
	}
	public STAR(): TerminalNode {
		return this.getToken(SqlParser.STAR, 0);
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterSelectStarElement) {
	 		listener.enterSelectStarElement(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitSelectStarElement) {
	 		listener.exitSelectStarElement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitSelectStarElement) {
			return visitor.visitSelectStarElement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class SelectColumnElementContext extends SelectElementContext {
	constructor(parser: SqlParser, ctx: SelectElementContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public fullColumnName(): FullColumnNameContext {
		return this.getTypedRuleContext(FullColumnNameContext, 0) as FullColumnNameContext;
	}
	public uid(): UidContext {
		return this.getTypedRuleContext(UidContext, 0) as UidContext;
	}
	public AS(): TerminalNode {
		return this.getToken(SqlParser.AS, 0);
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterSelectColumnElement) {
	 		listener.enterSelectColumnElement(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitSelectColumnElement) {
	 		listener.exitSelectColumnElement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitSelectColumnElement) {
			return visitor.visitSelectColumnElement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class SelectIntoExpressionContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_selectIntoExpression;
	}
	public copyFrom(ctx: SelectIntoExpressionContext): void {
		super.copyFrom(ctx);
	}
}
export class SelectIntoVariablesContext extends SelectIntoExpressionContext {
	constructor(parser: SqlParser, ctx: SelectIntoExpressionContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public INTO(): TerminalNode {
		return this.getToken(SqlParser.INTO, 0);
	}
	public assignmentField_list(): AssignmentFieldContext[] {
		return this.getTypedRuleContexts(AssignmentFieldContext) as AssignmentFieldContext[];
	}
	public assignmentField(i: number): AssignmentFieldContext {
		return this.getTypedRuleContext(AssignmentFieldContext, i) as AssignmentFieldContext;
	}
	public COMMA_list(): TerminalNode[] {
	    	return this.getTokens(SqlParser.COMMA);
	}
	public COMMA(i: number): TerminalNode {
		return this.getToken(SqlParser.COMMA, i);
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterSelectIntoVariables) {
	 		listener.enterSelectIntoVariables(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitSelectIntoVariables) {
	 		listener.exitSelectIntoVariables(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitSelectIntoVariables) {
			return visitor.visitSelectIntoVariables(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class SelectIntoTextFileContext extends SelectIntoExpressionContext {
	public _filename!: Token;
	public _charset!: CharsetNameContext;
	public _fieldsFormat!: Token;
	constructor(parser: SqlParser, ctx: SelectIntoExpressionContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public INTO(): TerminalNode {
		return this.getToken(SqlParser.INTO, 0);
	}
	public OUTFILE(): TerminalNode {
		return this.getToken(SqlParser.OUTFILE, 0);
	}
	public STRING_LITERAL(): TerminalNode {
		return this.getToken(SqlParser.STRING_LITERAL, 0);
	}
	public CHARACTER(): TerminalNode {
		return this.getToken(SqlParser.CHARACTER, 0);
	}
	public SET(): TerminalNode {
		return this.getToken(SqlParser.SET, 0);
	}
	public LINES(): TerminalNode {
		return this.getToken(SqlParser.LINES, 0);
	}
	public charsetName(): CharsetNameContext {
		return this.getTypedRuleContext(CharsetNameContext, 0) as CharsetNameContext;
	}
	public FIELDS(): TerminalNode {
		return this.getToken(SqlParser.FIELDS, 0);
	}
	public COLUMNS(): TerminalNode {
		return this.getToken(SqlParser.COLUMNS, 0);
	}
	public selectFieldsInto_list(): SelectFieldsIntoContext[] {
		return this.getTypedRuleContexts(SelectFieldsIntoContext) as SelectFieldsIntoContext[];
	}
	public selectFieldsInto(i: number): SelectFieldsIntoContext {
		return this.getTypedRuleContext(SelectFieldsIntoContext, i) as SelectFieldsIntoContext;
	}
	public selectLinesInto_list(): SelectLinesIntoContext[] {
		return this.getTypedRuleContexts(SelectLinesIntoContext) as SelectLinesIntoContext[];
	}
	public selectLinesInto(i: number): SelectLinesIntoContext {
		return this.getTypedRuleContext(SelectLinesIntoContext, i) as SelectLinesIntoContext;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterSelectIntoTextFile) {
	 		listener.enterSelectIntoTextFile(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitSelectIntoTextFile) {
	 		listener.exitSelectIntoTextFile(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitSelectIntoTextFile) {
			return visitor.visitSelectIntoTextFile(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class SelectIntoDumpFileContext extends SelectIntoExpressionContext {
	constructor(parser: SqlParser, ctx: SelectIntoExpressionContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public INTO(): TerminalNode {
		return this.getToken(SqlParser.INTO, 0);
	}
	public DUMPFILE(): TerminalNode {
		return this.getToken(SqlParser.DUMPFILE, 0);
	}
	public STRING_LITERAL(): TerminalNode {
		return this.getToken(SqlParser.STRING_LITERAL, 0);
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterSelectIntoDumpFile) {
	 		listener.enterSelectIntoDumpFile(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitSelectIntoDumpFile) {
	 		listener.exitSelectIntoDumpFile(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitSelectIntoDumpFile) {
			return visitor.visitSelectIntoDumpFile(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class SelectFieldsIntoContext extends ParserRuleContext {
	public _terminationField!: Token;
	public _enclosion!: Token;
	public _escaping!: Token;
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public TERMINATED(): TerminalNode {
		return this.getToken(SqlParser.TERMINATED, 0);
	}
	public BY(): TerminalNode {
		return this.getToken(SqlParser.BY, 0);
	}
	public STRING_LITERAL(): TerminalNode {
		return this.getToken(SqlParser.STRING_LITERAL, 0);
	}
	public ENCLOSED(): TerminalNode {
		return this.getToken(SqlParser.ENCLOSED, 0);
	}
	public OPTIONALLY(): TerminalNode {
		return this.getToken(SqlParser.OPTIONALLY, 0);
	}
	public ESCAPED(): TerminalNode {
		return this.getToken(SqlParser.ESCAPED, 0);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_selectFieldsInto;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterSelectFieldsInto) {
	 		listener.enterSelectFieldsInto(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitSelectFieldsInto) {
	 		listener.exitSelectFieldsInto(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitSelectFieldsInto) {
			return visitor.visitSelectFieldsInto(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class SelectLinesIntoContext extends ParserRuleContext {
	public _starting!: Token;
	public _terminationLine!: Token;
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public STARTING(): TerminalNode {
		return this.getToken(SqlParser.STARTING, 0);
	}
	public BY(): TerminalNode {
		return this.getToken(SqlParser.BY, 0);
	}
	public STRING_LITERAL(): TerminalNode {
		return this.getToken(SqlParser.STRING_LITERAL, 0);
	}
	public TERMINATED(): TerminalNode {
		return this.getToken(SqlParser.TERMINATED, 0);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_selectLinesInto;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterSelectLinesInto) {
	 		listener.enterSelectLinesInto(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitSelectLinesInto) {
	 		listener.exitSelectLinesInto(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitSelectLinesInto) {
			return visitor.visitSelectLinesInto(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class FromClauseContext extends ParserRuleContext {
	public _whereExpr!: ExpressionContext;
	public _havingExpr!: ExpressionContext;
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public FROM(): TerminalNode {
		return this.getToken(SqlParser.FROM, 0);
	}
	public tableSources(): TableSourcesContext {
		return this.getTypedRuleContext(TableSourcesContext, 0) as TableSourcesContext;
	}
	public WHERE(): TerminalNode {
		return this.getToken(SqlParser.WHERE, 0);
	}
	public GROUP(): TerminalNode {
		return this.getToken(SqlParser.GROUP, 0);
	}
	public BY(): TerminalNode {
		return this.getToken(SqlParser.BY, 0);
	}
	public groupByItem_list(): GroupByItemContext[] {
		return this.getTypedRuleContexts(GroupByItemContext) as GroupByItemContext[];
	}
	public groupByItem(i: number): GroupByItemContext {
		return this.getTypedRuleContext(GroupByItemContext, i) as GroupByItemContext;
	}
	public HAVING(): TerminalNode {
		return this.getToken(SqlParser.HAVING, 0);
	}
	public expression_list(): ExpressionContext[] {
		return this.getTypedRuleContexts(ExpressionContext) as ExpressionContext[];
	}
	public expression(i: number): ExpressionContext {
		return this.getTypedRuleContext(ExpressionContext, i) as ExpressionContext;
	}
	public COMMA_list(): TerminalNode[] {
	    	return this.getTokens(SqlParser.COMMA);
	}
	public COMMA(i: number): TerminalNode {
		return this.getToken(SqlParser.COMMA, i);
	}
	public WITH(): TerminalNode {
		return this.getToken(SqlParser.WITH, 0);
	}
	public ROLLUP(): TerminalNode {
		return this.getToken(SqlParser.ROLLUP, 0);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_fromClause;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterFromClause) {
	 		listener.enterFromClause(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitFromClause) {
	 		listener.exitFromClause(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitFromClause) {
			return visitor.visitFromClause(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class GroupByItemContext extends ParserRuleContext {
	public _order!: Token;
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public expression(): ExpressionContext {
		return this.getTypedRuleContext(ExpressionContext, 0) as ExpressionContext;
	}
	public ASC(): TerminalNode {
		return this.getToken(SqlParser.ASC, 0);
	}
	public DESC(): TerminalNode {
		return this.getToken(SqlParser.DESC, 0);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_groupByItem;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterGroupByItem) {
	 		listener.enterGroupByItem(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitGroupByItem) {
	 		listener.exitGroupByItem(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitGroupByItem) {
			return visitor.visitGroupByItem(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class LimitClauseContext extends ParserRuleContext {
	public _offset!: LimitClauseAtomContext;
	public _limit!: LimitClauseAtomContext;
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public LIMIT(): TerminalNode {
		return this.getToken(SqlParser.LIMIT, 0);
	}
	public OFFSET(): TerminalNode {
		return this.getToken(SqlParser.OFFSET, 0);
	}
	public limitClauseAtom_list(): LimitClauseAtomContext[] {
		return this.getTypedRuleContexts(LimitClauseAtomContext) as LimitClauseAtomContext[];
	}
	public limitClauseAtom(i: number): LimitClauseAtomContext {
		return this.getTypedRuleContext(LimitClauseAtomContext, i) as LimitClauseAtomContext;
	}
	public COMMA(): TerminalNode {
		return this.getToken(SqlParser.COMMA, 0);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_limitClause;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterLimitClause) {
	 		listener.enterLimitClause(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitLimitClause) {
	 		listener.exitLimitClause(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitLimitClause) {
			return visitor.visitLimitClause(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class LimitClauseAtomContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public decimalLiteral(): DecimalLiteralContext {
		return this.getTypedRuleContext(DecimalLiteralContext, 0) as DecimalLiteralContext;
	}
	public mysqlVariable(): MysqlVariableContext {
		return this.getTypedRuleContext(MysqlVariableContext, 0) as MysqlVariableContext;
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_limitClauseAtom;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterLimitClauseAtom) {
	 		listener.enterLimitClauseAtom(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitLimitClauseAtom) {
	 		listener.exitLimitClauseAtom(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitLimitClauseAtom) {
			return visitor.visitLimitClauseAtom(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class StartTransactionContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public START(): TerminalNode {
		return this.getToken(SqlParser.START, 0);
	}
	public TRANSACTION(): TerminalNode {
		return this.getToken(SqlParser.TRANSACTION, 0);
	}
	public transactionMode_list(): TransactionModeContext[] {
		return this.getTypedRuleContexts(TransactionModeContext) as TransactionModeContext[];
	}
	public transactionMode(i: number): TransactionModeContext {
		return this.getTypedRuleContext(TransactionModeContext, i) as TransactionModeContext;
	}
	public COMMA_list(): TerminalNode[] {
	    	return this.getTokens(SqlParser.COMMA);
	}
	public COMMA(i: number): TerminalNode {
		return this.getToken(SqlParser.COMMA, i);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_startTransaction;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterStartTransaction) {
	 		listener.enterStartTransaction(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitStartTransaction) {
	 		listener.exitStartTransaction(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitStartTransaction) {
			return visitor.visitStartTransaction(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class BeginWorkContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public BEGIN(): TerminalNode {
		return this.getToken(SqlParser.BEGIN, 0);
	}
	public WORK(): TerminalNode {
		return this.getToken(SqlParser.WORK, 0);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_beginWork;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterBeginWork) {
	 		listener.enterBeginWork(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitBeginWork) {
	 		listener.exitBeginWork(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitBeginWork) {
			return visitor.visitBeginWork(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class CommitWorkContext extends ParserRuleContext {
	public _nochain!: Token;
	public _norelease!: Token;
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public COMMIT(): TerminalNode {
		return this.getToken(SqlParser.COMMIT, 0);
	}
	public WORK(): TerminalNode {
		return this.getToken(SqlParser.WORK, 0);
	}
	public AND(): TerminalNode {
		return this.getToken(SqlParser.AND, 0);
	}
	public CHAIN(): TerminalNode {
		return this.getToken(SqlParser.CHAIN, 0);
	}
	public RELEASE(): TerminalNode {
		return this.getToken(SqlParser.RELEASE, 0);
	}
	public NO_list(): TerminalNode[] {
	    	return this.getTokens(SqlParser.NO);
	}
	public NO(i: number): TerminalNode {
		return this.getToken(SqlParser.NO, i);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_commitWork;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterCommitWork) {
	 		listener.enterCommitWork(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitCommitWork) {
	 		listener.exitCommitWork(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitCommitWork) {
			return visitor.visitCommitWork(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class RollbackWorkContext extends ParserRuleContext {
	public _nochain!: Token;
	public _norelease!: Token;
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public ROLLBACK(): TerminalNode {
		return this.getToken(SqlParser.ROLLBACK, 0);
	}
	public WORK(): TerminalNode {
		return this.getToken(SqlParser.WORK, 0);
	}
	public AND(): TerminalNode {
		return this.getToken(SqlParser.AND, 0);
	}
	public CHAIN(): TerminalNode {
		return this.getToken(SqlParser.CHAIN, 0);
	}
	public RELEASE(): TerminalNode {
		return this.getToken(SqlParser.RELEASE, 0);
	}
	public NO_list(): TerminalNode[] {
	    	return this.getTokens(SqlParser.NO);
	}
	public NO(i: number): TerminalNode {
		return this.getToken(SqlParser.NO, i);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_rollbackWork;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterRollbackWork) {
	 		listener.enterRollbackWork(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitRollbackWork) {
	 		listener.exitRollbackWork(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitRollbackWork) {
			return visitor.visitRollbackWork(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class SavepointStatementContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public SAVEPOINT(): TerminalNode {
		return this.getToken(SqlParser.SAVEPOINT, 0);
	}
	public uid(): UidContext {
		return this.getTypedRuleContext(UidContext, 0) as UidContext;
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_savepointStatement;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterSavepointStatement) {
	 		listener.enterSavepointStatement(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitSavepointStatement) {
	 		listener.exitSavepointStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitSavepointStatement) {
			return visitor.visitSavepointStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class RollbackStatementContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public ROLLBACK(): TerminalNode {
		return this.getToken(SqlParser.ROLLBACK, 0);
	}
	public TO(): TerminalNode {
		return this.getToken(SqlParser.TO, 0);
	}
	public uid(): UidContext {
		return this.getTypedRuleContext(UidContext, 0) as UidContext;
	}
	public WORK(): TerminalNode {
		return this.getToken(SqlParser.WORK, 0);
	}
	public SAVEPOINT(): TerminalNode {
		return this.getToken(SqlParser.SAVEPOINT, 0);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_rollbackStatement;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterRollbackStatement) {
	 		listener.enterRollbackStatement(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitRollbackStatement) {
	 		listener.exitRollbackStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitRollbackStatement) {
			return visitor.visitRollbackStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ReleaseStatementContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public RELEASE(): TerminalNode {
		return this.getToken(SqlParser.RELEASE, 0);
	}
	public SAVEPOINT(): TerminalNode {
		return this.getToken(SqlParser.SAVEPOINT, 0);
	}
	public uid(): UidContext {
		return this.getTypedRuleContext(UidContext, 0) as UidContext;
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_releaseStatement;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterReleaseStatement) {
	 		listener.enterReleaseStatement(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitReleaseStatement) {
	 		listener.exitReleaseStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitReleaseStatement) {
			return visitor.visitReleaseStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class LockTablesContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public LOCK(): TerminalNode {
		return this.getToken(SqlParser.LOCK, 0);
	}
	public TABLES(): TerminalNode {
		return this.getToken(SqlParser.TABLES, 0);
	}
	public lockTableElement_list(): LockTableElementContext[] {
		return this.getTypedRuleContexts(LockTableElementContext) as LockTableElementContext[];
	}
	public lockTableElement(i: number): LockTableElementContext {
		return this.getTypedRuleContext(LockTableElementContext, i) as LockTableElementContext;
	}
	public COMMA_list(): TerminalNode[] {
	    	return this.getTokens(SqlParser.COMMA);
	}
	public COMMA(i: number): TerminalNode {
		return this.getToken(SqlParser.COMMA, i);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_lockTables;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterLockTables) {
	 		listener.enterLockTables(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitLockTables) {
	 		listener.exitLockTables(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitLockTables) {
			return visitor.visitLockTables(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class UnlockTablesContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public UNLOCK(): TerminalNode {
		return this.getToken(SqlParser.UNLOCK, 0);
	}
	public TABLES(): TerminalNode {
		return this.getToken(SqlParser.TABLES, 0);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_unlockTables;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterUnlockTables) {
	 		listener.enterUnlockTables(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitUnlockTables) {
	 		listener.exitUnlockTables(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitUnlockTables) {
			return visitor.visitUnlockTables(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class SetAutocommitStatementContext extends ParserRuleContext {
	public _autocommitValue!: Token;
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public SET(): TerminalNode {
		return this.getToken(SqlParser.SET, 0);
	}
	public AUTOCOMMIT(): TerminalNode {
		return this.getToken(SqlParser.AUTOCOMMIT, 0);
	}
	public EQUAL_SYMBOL(): TerminalNode {
		return this.getToken(SqlParser.EQUAL_SYMBOL, 0);
	}
	public ZERO_DECIMAL(): TerminalNode {
		return this.getToken(SqlParser.ZERO_DECIMAL, 0);
	}
	public ONE_DECIMAL(): TerminalNode {
		return this.getToken(SqlParser.ONE_DECIMAL, 0);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_setAutocommitStatement;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterSetAutocommitStatement) {
	 		listener.enterSetAutocommitStatement(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitSetAutocommitStatement) {
	 		listener.exitSetAutocommitStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitSetAutocommitStatement) {
			return visitor.visitSetAutocommitStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class SetTransactionStatementContext extends ParserRuleContext {
	public _transactionContext!: Token;
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public SET(): TerminalNode {
		return this.getToken(SqlParser.SET, 0);
	}
	public TRANSACTION(): TerminalNode {
		return this.getToken(SqlParser.TRANSACTION, 0);
	}
	public transactionOption_list(): TransactionOptionContext[] {
		return this.getTypedRuleContexts(TransactionOptionContext) as TransactionOptionContext[];
	}
	public transactionOption(i: number): TransactionOptionContext {
		return this.getTypedRuleContext(TransactionOptionContext, i) as TransactionOptionContext;
	}
	public COMMA_list(): TerminalNode[] {
	    	return this.getTokens(SqlParser.COMMA);
	}
	public COMMA(i: number): TerminalNode {
		return this.getToken(SqlParser.COMMA, i);
	}
	public GLOBAL(): TerminalNode {
		return this.getToken(SqlParser.GLOBAL, 0);
	}
	public SESSION(): TerminalNode {
		return this.getToken(SqlParser.SESSION, 0);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_setTransactionStatement;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterSetTransactionStatement) {
	 		listener.enterSetTransactionStatement(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitSetTransactionStatement) {
	 		listener.exitSetTransactionStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitSetTransactionStatement) {
			return visitor.visitSetTransactionStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class TransactionModeContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public WITH(): TerminalNode {
		return this.getToken(SqlParser.WITH, 0);
	}
	public CONSISTENT(): TerminalNode {
		return this.getToken(SqlParser.CONSISTENT, 0);
	}
	public SNAPSHOT(): TerminalNode {
		return this.getToken(SqlParser.SNAPSHOT, 0);
	}
	public READ(): TerminalNode {
		return this.getToken(SqlParser.READ, 0);
	}
	public WRITE(): TerminalNode {
		return this.getToken(SqlParser.WRITE, 0);
	}
	public ONLY(): TerminalNode {
		return this.getToken(SqlParser.ONLY, 0);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_transactionMode;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterTransactionMode) {
	 		listener.enterTransactionMode(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitTransactionMode) {
	 		listener.exitTransactionMode(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitTransactionMode) {
			return visitor.visitTransactionMode(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class LockTableElementContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public tableName(): TableNameContext {
		return this.getTypedRuleContext(TableNameContext, 0) as TableNameContext;
	}
	public lockAction(): LockActionContext {
		return this.getTypedRuleContext(LockActionContext, 0) as LockActionContext;
	}
	public uid(): UidContext {
		return this.getTypedRuleContext(UidContext, 0) as UidContext;
	}
	public AS(): TerminalNode {
		return this.getToken(SqlParser.AS, 0);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_lockTableElement;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterLockTableElement) {
	 		listener.enterLockTableElement(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitLockTableElement) {
	 		listener.exitLockTableElement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitLockTableElement) {
			return visitor.visitLockTableElement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class LockActionContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public READ(): TerminalNode {
		return this.getToken(SqlParser.READ, 0);
	}
	public LOCAL(): TerminalNode {
		return this.getToken(SqlParser.LOCAL, 0);
	}
	public WRITE(): TerminalNode {
		return this.getToken(SqlParser.WRITE, 0);
	}
	public LOW_PRIORITY(): TerminalNode {
		return this.getToken(SqlParser.LOW_PRIORITY, 0);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_lockAction;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterLockAction) {
	 		listener.enterLockAction(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitLockAction) {
	 		listener.exitLockAction(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitLockAction) {
			return visitor.visitLockAction(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class TransactionOptionContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public ISOLATION(): TerminalNode {
		return this.getToken(SqlParser.ISOLATION, 0);
	}
	public LEVEL(): TerminalNode {
		return this.getToken(SqlParser.LEVEL, 0);
	}
	public transactionLevel(): TransactionLevelContext {
		return this.getTypedRuleContext(TransactionLevelContext, 0) as TransactionLevelContext;
	}
	public READ(): TerminalNode {
		return this.getToken(SqlParser.READ, 0);
	}
	public WRITE(): TerminalNode {
		return this.getToken(SqlParser.WRITE, 0);
	}
	public ONLY(): TerminalNode {
		return this.getToken(SqlParser.ONLY, 0);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_transactionOption;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterTransactionOption) {
	 		listener.enterTransactionOption(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitTransactionOption) {
	 		listener.exitTransactionOption(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitTransactionOption) {
			return visitor.visitTransactionOption(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class TransactionLevelContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public REPEATABLE(): TerminalNode {
		return this.getToken(SqlParser.REPEATABLE, 0);
	}
	public READ(): TerminalNode {
		return this.getToken(SqlParser.READ, 0);
	}
	public COMMITTED(): TerminalNode {
		return this.getToken(SqlParser.COMMITTED, 0);
	}
	public UNCOMMITTED(): TerminalNode {
		return this.getToken(SqlParser.UNCOMMITTED, 0);
	}
	public SERIALIZABLE(): TerminalNode {
		return this.getToken(SqlParser.SERIALIZABLE, 0);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_transactionLevel;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterTransactionLevel) {
	 		listener.enterTransactionLevel(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitTransactionLevel) {
	 		listener.exitTransactionLevel(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitTransactionLevel) {
			return visitor.visitTransactionLevel(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ChangeMasterContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public CHANGE(): TerminalNode {
		return this.getToken(SqlParser.CHANGE, 0);
	}
	public MASTER(): TerminalNode {
		return this.getToken(SqlParser.MASTER, 0);
	}
	public TO(): TerminalNode {
		return this.getToken(SqlParser.TO, 0);
	}
	public masterOption_list(): MasterOptionContext[] {
		return this.getTypedRuleContexts(MasterOptionContext) as MasterOptionContext[];
	}
	public masterOption(i: number): MasterOptionContext {
		return this.getTypedRuleContext(MasterOptionContext, i) as MasterOptionContext;
	}
	public COMMA_list(): TerminalNode[] {
	    	return this.getTokens(SqlParser.COMMA);
	}
	public COMMA(i: number): TerminalNode {
		return this.getToken(SqlParser.COMMA, i);
	}
	public channelOption(): ChannelOptionContext {
		return this.getTypedRuleContext(ChannelOptionContext, 0) as ChannelOptionContext;
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_changeMaster;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterChangeMaster) {
	 		listener.enterChangeMaster(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitChangeMaster) {
	 		listener.exitChangeMaster(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitChangeMaster) {
			return visitor.visitChangeMaster(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ChangeReplicationFilterContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public CHANGE(): TerminalNode {
		return this.getToken(SqlParser.CHANGE, 0);
	}
	public REPLICATION(): TerminalNode {
		return this.getToken(SqlParser.REPLICATION, 0);
	}
	public FILTER(): TerminalNode {
		return this.getToken(SqlParser.FILTER, 0);
	}
	public replicationFilter_list(): ReplicationFilterContext[] {
		return this.getTypedRuleContexts(ReplicationFilterContext) as ReplicationFilterContext[];
	}
	public replicationFilter(i: number): ReplicationFilterContext {
		return this.getTypedRuleContext(ReplicationFilterContext, i) as ReplicationFilterContext;
	}
	public COMMA_list(): TerminalNode[] {
	    	return this.getTokens(SqlParser.COMMA);
	}
	public COMMA(i: number): TerminalNode {
		return this.getToken(SqlParser.COMMA, i);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_changeReplicationFilter;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterChangeReplicationFilter) {
	 		listener.enterChangeReplicationFilter(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitChangeReplicationFilter) {
	 		listener.exitChangeReplicationFilter(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitChangeReplicationFilter) {
			return visitor.visitChangeReplicationFilter(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class PurgeBinaryLogsContext extends ParserRuleContext {
	public _purgeFormat!: Token;
	public _fileName!: Token;
	public _timeValue!: Token;
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public PURGE(): TerminalNode {
		return this.getToken(SqlParser.PURGE, 0);
	}
	public LOGS(): TerminalNode {
		return this.getToken(SqlParser.LOGS, 0);
	}
	public BINARY(): TerminalNode {
		return this.getToken(SqlParser.BINARY, 0);
	}
	public MASTER(): TerminalNode {
		return this.getToken(SqlParser.MASTER, 0);
	}
	public TO(): TerminalNode {
		return this.getToken(SqlParser.TO, 0);
	}
	public BEFORE(): TerminalNode {
		return this.getToken(SqlParser.BEFORE, 0);
	}
	public STRING_LITERAL(): TerminalNode {
		return this.getToken(SqlParser.STRING_LITERAL, 0);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_purgeBinaryLogs;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterPurgeBinaryLogs) {
	 		listener.enterPurgeBinaryLogs(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitPurgeBinaryLogs) {
	 		listener.exitPurgeBinaryLogs(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitPurgeBinaryLogs) {
			return visitor.visitPurgeBinaryLogs(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ResetMasterContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public RESET(): TerminalNode {
		return this.getToken(SqlParser.RESET, 0);
	}
	public MASTER(): TerminalNode {
		return this.getToken(SqlParser.MASTER, 0);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_resetMaster;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterResetMaster) {
	 		listener.enterResetMaster(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitResetMaster) {
	 		listener.exitResetMaster(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitResetMaster) {
			return visitor.visitResetMaster(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ResetSlaveContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public RESET(): TerminalNode {
		return this.getToken(SqlParser.RESET, 0);
	}
	public SLAVE(): TerminalNode {
		return this.getToken(SqlParser.SLAVE, 0);
	}
	public ALL(): TerminalNode {
		return this.getToken(SqlParser.ALL, 0);
	}
	public channelOption(): ChannelOptionContext {
		return this.getTypedRuleContext(ChannelOptionContext, 0) as ChannelOptionContext;
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_resetSlave;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterResetSlave) {
	 		listener.enterResetSlave(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitResetSlave) {
	 		listener.exitResetSlave(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitResetSlave) {
			return visitor.visitResetSlave(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class StartSlaveContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public START(): TerminalNode {
		return this.getToken(SqlParser.START, 0);
	}
	public SLAVE(): TerminalNode {
		return this.getToken(SqlParser.SLAVE, 0);
	}
	public threadType_list(): ThreadTypeContext[] {
		return this.getTypedRuleContexts(ThreadTypeContext) as ThreadTypeContext[];
	}
	public threadType(i: number): ThreadTypeContext {
		return this.getTypedRuleContext(ThreadTypeContext, i) as ThreadTypeContext;
	}
	public UNTIL(): TerminalNode {
		return this.getToken(SqlParser.UNTIL, 0);
	}
	public untilOption(): UntilOptionContext {
		return this.getTypedRuleContext(UntilOptionContext, 0) as UntilOptionContext;
	}
	public connectionOption_list(): ConnectionOptionContext[] {
		return this.getTypedRuleContexts(ConnectionOptionContext) as ConnectionOptionContext[];
	}
	public connectionOption(i: number): ConnectionOptionContext {
		return this.getTypedRuleContext(ConnectionOptionContext, i) as ConnectionOptionContext;
	}
	public channelOption(): ChannelOptionContext {
		return this.getTypedRuleContext(ChannelOptionContext, 0) as ChannelOptionContext;
	}
	public COMMA_list(): TerminalNode[] {
	    	return this.getTokens(SqlParser.COMMA);
	}
	public COMMA(i: number): TerminalNode {
		return this.getToken(SqlParser.COMMA, i);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_startSlave;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterStartSlave) {
	 		listener.enterStartSlave(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitStartSlave) {
	 		listener.exitStartSlave(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitStartSlave) {
			return visitor.visitStartSlave(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class StopSlaveContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public STOP(): TerminalNode {
		return this.getToken(SqlParser.STOP, 0);
	}
	public SLAVE(): TerminalNode {
		return this.getToken(SqlParser.SLAVE, 0);
	}
	public threadType_list(): ThreadTypeContext[] {
		return this.getTypedRuleContexts(ThreadTypeContext) as ThreadTypeContext[];
	}
	public threadType(i: number): ThreadTypeContext {
		return this.getTypedRuleContext(ThreadTypeContext, i) as ThreadTypeContext;
	}
	public COMMA_list(): TerminalNode[] {
	    	return this.getTokens(SqlParser.COMMA);
	}
	public COMMA(i: number): TerminalNode {
		return this.getToken(SqlParser.COMMA, i);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_stopSlave;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterStopSlave) {
	 		listener.enterStopSlave(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitStopSlave) {
	 		listener.exitStopSlave(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitStopSlave) {
			return visitor.visitStopSlave(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class StartGroupReplicationContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public START(): TerminalNode {
		return this.getToken(SqlParser.START, 0);
	}
	public GROUP_REPLICATION(): TerminalNode {
		return this.getToken(SqlParser.GROUP_REPLICATION, 0);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_startGroupReplication;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterStartGroupReplication) {
	 		listener.enterStartGroupReplication(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitStartGroupReplication) {
	 		listener.exitStartGroupReplication(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitStartGroupReplication) {
			return visitor.visitStartGroupReplication(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class StopGroupReplicationContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public STOP(): TerminalNode {
		return this.getToken(SqlParser.STOP, 0);
	}
	public GROUP_REPLICATION(): TerminalNode {
		return this.getToken(SqlParser.GROUP_REPLICATION, 0);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_stopGroupReplication;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterStopGroupReplication) {
	 		listener.enterStopGroupReplication(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitStopGroupReplication) {
	 		listener.exitStopGroupReplication(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitStopGroupReplication) {
			return visitor.visitStopGroupReplication(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class MasterOptionContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_masterOption;
	}
	public copyFrom(ctx: MasterOptionContext): void {
		super.copyFrom(ctx);
	}
}
export class MasterStringOptionContext extends MasterOptionContext {
	constructor(parser: SqlParser, ctx: MasterOptionContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public stringMasterOption(): StringMasterOptionContext {
		return this.getTypedRuleContext(StringMasterOptionContext, 0) as StringMasterOptionContext;
	}
	public EQUAL_SYMBOL(): TerminalNode {
		return this.getToken(SqlParser.EQUAL_SYMBOL, 0);
	}
	public STRING_LITERAL(): TerminalNode {
		return this.getToken(SqlParser.STRING_LITERAL, 0);
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterMasterStringOption) {
	 		listener.enterMasterStringOption(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitMasterStringOption) {
	 		listener.exitMasterStringOption(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitMasterStringOption) {
			return visitor.visitMasterStringOption(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class MasterRealOptionContext extends MasterOptionContext {
	constructor(parser: SqlParser, ctx: MasterOptionContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public MASTER_HEARTBEAT_PERIOD(): TerminalNode {
		return this.getToken(SqlParser.MASTER_HEARTBEAT_PERIOD, 0);
	}
	public EQUAL_SYMBOL(): TerminalNode {
		return this.getToken(SqlParser.EQUAL_SYMBOL, 0);
	}
	public REAL_LITERAL(): TerminalNode {
		return this.getToken(SqlParser.REAL_LITERAL, 0);
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterMasterRealOption) {
	 		listener.enterMasterRealOption(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitMasterRealOption) {
	 		listener.exitMasterRealOption(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitMasterRealOption) {
			return visitor.visitMasterRealOption(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class MasterBoolOptionContext extends MasterOptionContext {
	public _boolVal!: Token;
	constructor(parser: SqlParser, ctx: MasterOptionContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public boolMasterOption(): BoolMasterOptionContext {
		return this.getTypedRuleContext(BoolMasterOptionContext, 0) as BoolMasterOptionContext;
	}
	public EQUAL_SYMBOL(): TerminalNode {
		return this.getToken(SqlParser.EQUAL_SYMBOL, 0);
	}
	public ZERO_DECIMAL(): TerminalNode {
		return this.getToken(SqlParser.ZERO_DECIMAL, 0);
	}
	public ONE_DECIMAL(): TerminalNode {
		return this.getToken(SqlParser.ONE_DECIMAL, 0);
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterMasterBoolOption) {
	 		listener.enterMasterBoolOption(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitMasterBoolOption) {
	 		listener.exitMasterBoolOption(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitMasterBoolOption) {
			return visitor.visitMasterBoolOption(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class MasterUidListOptionContext extends MasterOptionContext {
	constructor(parser: SqlParser, ctx: MasterOptionContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public IGNORE_SERVER_IDS(): TerminalNode {
		return this.getToken(SqlParser.IGNORE_SERVER_IDS, 0);
	}
	public EQUAL_SYMBOL(): TerminalNode {
		return this.getToken(SqlParser.EQUAL_SYMBOL, 0);
	}
	public LR_BRACKET(): TerminalNode {
		return this.getToken(SqlParser.LR_BRACKET, 0);
	}
	public RR_BRACKET(): TerminalNode {
		return this.getToken(SqlParser.RR_BRACKET, 0);
	}
	public uid_list(): UidContext[] {
		return this.getTypedRuleContexts(UidContext) as UidContext[];
	}
	public uid(i: number): UidContext {
		return this.getTypedRuleContext(UidContext, i) as UidContext;
	}
	public COMMA_list(): TerminalNode[] {
	    	return this.getTokens(SqlParser.COMMA);
	}
	public COMMA(i: number): TerminalNode {
		return this.getToken(SqlParser.COMMA, i);
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterMasterUidListOption) {
	 		listener.enterMasterUidListOption(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitMasterUidListOption) {
	 		listener.exitMasterUidListOption(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitMasterUidListOption) {
			return visitor.visitMasterUidListOption(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class MasterDecimalOptionContext extends MasterOptionContext {
	constructor(parser: SqlParser, ctx: MasterOptionContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public decimalMasterOption(): DecimalMasterOptionContext {
		return this.getTypedRuleContext(DecimalMasterOptionContext, 0) as DecimalMasterOptionContext;
	}
	public EQUAL_SYMBOL(): TerminalNode {
		return this.getToken(SqlParser.EQUAL_SYMBOL, 0);
	}
	public decimalLiteral(): DecimalLiteralContext {
		return this.getTypedRuleContext(DecimalLiteralContext, 0) as DecimalLiteralContext;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterMasterDecimalOption) {
	 		listener.enterMasterDecimalOption(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitMasterDecimalOption) {
	 		listener.exitMasterDecimalOption(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitMasterDecimalOption) {
			return visitor.visitMasterDecimalOption(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class StringMasterOptionContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public MASTER_BIND(): TerminalNode {
		return this.getToken(SqlParser.MASTER_BIND, 0);
	}
	public MASTER_HOST(): TerminalNode {
		return this.getToken(SqlParser.MASTER_HOST, 0);
	}
	public MASTER_USER(): TerminalNode {
		return this.getToken(SqlParser.MASTER_USER, 0);
	}
	public MASTER_PASSWORD(): TerminalNode {
		return this.getToken(SqlParser.MASTER_PASSWORD, 0);
	}
	public MASTER_LOG_FILE(): TerminalNode {
		return this.getToken(SqlParser.MASTER_LOG_FILE, 0);
	}
	public RELAY_LOG_FILE(): TerminalNode {
		return this.getToken(SqlParser.RELAY_LOG_FILE, 0);
	}
	public MASTER_SSL_CA(): TerminalNode {
		return this.getToken(SqlParser.MASTER_SSL_CA, 0);
	}
	public MASTER_SSL_CAPATH(): TerminalNode {
		return this.getToken(SqlParser.MASTER_SSL_CAPATH, 0);
	}
	public MASTER_SSL_CERT(): TerminalNode {
		return this.getToken(SqlParser.MASTER_SSL_CERT, 0);
	}
	public MASTER_SSL_CRL(): TerminalNode {
		return this.getToken(SqlParser.MASTER_SSL_CRL, 0);
	}
	public MASTER_SSL_CRLPATH(): TerminalNode {
		return this.getToken(SqlParser.MASTER_SSL_CRLPATH, 0);
	}
	public MASTER_SSL_KEY(): TerminalNode {
		return this.getToken(SqlParser.MASTER_SSL_KEY, 0);
	}
	public MASTER_SSL_CIPHER(): TerminalNode {
		return this.getToken(SqlParser.MASTER_SSL_CIPHER, 0);
	}
	public MASTER_TLS_VERSION(): TerminalNode {
		return this.getToken(SqlParser.MASTER_TLS_VERSION, 0);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_stringMasterOption;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterStringMasterOption) {
	 		listener.enterStringMasterOption(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitStringMasterOption) {
	 		listener.exitStringMasterOption(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitStringMasterOption) {
			return visitor.visitStringMasterOption(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class DecimalMasterOptionContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public MASTER_PORT(): TerminalNode {
		return this.getToken(SqlParser.MASTER_PORT, 0);
	}
	public MASTER_CONNECT_RETRY(): TerminalNode {
		return this.getToken(SqlParser.MASTER_CONNECT_RETRY, 0);
	}
	public MASTER_RETRY_COUNT(): TerminalNode {
		return this.getToken(SqlParser.MASTER_RETRY_COUNT, 0);
	}
	public MASTER_DELAY(): TerminalNode {
		return this.getToken(SqlParser.MASTER_DELAY, 0);
	}
	public MASTER_LOG_POS(): TerminalNode {
		return this.getToken(SqlParser.MASTER_LOG_POS, 0);
	}
	public RELAY_LOG_POS(): TerminalNode {
		return this.getToken(SqlParser.RELAY_LOG_POS, 0);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_decimalMasterOption;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterDecimalMasterOption) {
	 		listener.enterDecimalMasterOption(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitDecimalMasterOption) {
	 		listener.exitDecimalMasterOption(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitDecimalMasterOption) {
			return visitor.visitDecimalMasterOption(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class BoolMasterOptionContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public MASTER_AUTO_POSITION(): TerminalNode {
		return this.getToken(SqlParser.MASTER_AUTO_POSITION, 0);
	}
	public MASTER_SSL(): TerminalNode {
		return this.getToken(SqlParser.MASTER_SSL, 0);
	}
	public MASTER_SSL_VERIFY_SERVER_CERT(): TerminalNode {
		return this.getToken(SqlParser.MASTER_SSL_VERIFY_SERVER_CERT, 0);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_boolMasterOption;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterBoolMasterOption) {
	 		listener.enterBoolMasterOption(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitBoolMasterOption) {
	 		listener.exitBoolMasterOption(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitBoolMasterOption) {
			return visitor.visitBoolMasterOption(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ChannelOptionContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public FOR(): TerminalNode {
		return this.getToken(SqlParser.FOR, 0);
	}
	public CHANNEL(): TerminalNode {
		return this.getToken(SqlParser.CHANNEL, 0);
	}
	public STRING_LITERAL(): TerminalNode {
		return this.getToken(SqlParser.STRING_LITERAL, 0);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_channelOption;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterChannelOption) {
	 		listener.enterChannelOption(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitChannelOption) {
	 		listener.exitChannelOption(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitChannelOption) {
			return visitor.visitChannelOption(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ReplicationFilterContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_replicationFilter;
	}
	public copyFrom(ctx: ReplicationFilterContext): void {
		super.copyFrom(ctx);
	}
}
export class WildIgnoreTableReplicationContext extends ReplicationFilterContext {
	constructor(parser: SqlParser, ctx: ReplicationFilterContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public REPLICATE_WILD_IGNORE_TABLE(): TerminalNode {
		return this.getToken(SqlParser.REPLICATE_WILD_IGNORE_TABLE, 0);
	}
	public EQUAL_SYMBOL(): TerminalNode {
		return this.getToken(SqlParser.EQUAL_SYMBOL, 0);
	}
	public LR_BRACKET(): TerminalNode {
		return this.getToken(SqlParser.LR_BRACKET, 0);
	}
	public simpleStrings(): SimpleStringsContext {
		return this.getTypedRuleContext(SimpleStringsContext, 0) as SimpleStringsContext;
	}
	public RR_BRACKET(): TerminalNode {
		return this.getToken(SqlParser.RR_BRACKET, 0);
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterWildIgnoreTableReplication) {
	 		listener.enterWildIgnoreTableReplication(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitWildIgnoreTableReplication) {
	 		listener.exitWildIgnoreTableReplication(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitWildIgnoreTableReplication) {
			return visitor.visitWildIgnoreTableReplication(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class DoTableReplicationContext extends ReplicationFilterContext {
	constructor(parser: SqlParser, ctx: ReplicationFilterContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public REPLICATE_DO_TABLE(): TerminalNode {
		return this.getToken(SqlParser.REPLICATE_DO_TABLE, 0);
	}
	public EQUAL_SYMBOL(): TerminalNode {
		return this.getToken(SqlParser.EQUAL_SYMBOL, 0);
	}
	public LR_BRACKET(): TerminalNode {
		return this.getToken(SqlParser.LR_BRACKET, 0);
	}
	public tables(): TablesContext {
		return this.getTypedRuleContext(TablesContext, 0) as TablesContext;
	}
	public RR_BRACKET(): TerminalNode {
		return this.getToken(SqlParser.RR_BRACKET, 0);
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterDoTableReplication) {
	 		listener.enterDoTableReplication(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitDoTableReplication) {
	 		listener.exitDoTableReplication(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitDoTableReplication) {
			return visitor.visitDoTableReplication(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class IgnoreTableReplicationContext extends ReplicationFilterContext {
	constructor(parser: SqlParser, ctx: ReplicationFilterContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public REPLICATE_IGNORE_TABLE(): TerminalNode {
		return this.getToken(SqlParser.REPLICATE_IGNORE_TABLE, 0);
	}
	public EQUAL_SYMBOL(): TerminalNode {
		return this.getToken(SqlParser.EQUAL_SYMBOL, 0);
	}
	public LR_BRACKET(): TerminalNode {
		return this.getToken(SqlParser.LR_BRACKET, 0);
	}
	public tables(): TablesContext {
		return this.getTypedRuleContext(TablesContext, 0) as TablesContext;
	}
	public RR_BRACKET(): TerminalNode {
		return this.getToken(SqlParser.RR_BRACKET, 0);
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterIgnoreTableReplication) {
	 		listener.enterIgnoreTableReplication(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitIgnoreTableReplication) {
	 		listener.exitIgnoreTableReplication(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitIgnoreTableReplication) {
			return visitor.visitIgnoreTableReplication(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class RewriteDbReplicationContext extends ReplicationFilterContext {
	constructor(parser: SqlParser, ctx: ReplicationFilterContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public REPLICATE_REWRITE_DB(): TerminalNode {
		return this.getToken(SqlParser.REPLICATE_REWRITE_DB, 0);
	}
	public EQUAL_SYMBOL(): TerminalNode {
		return this.getToken(SqlParser.EQUAL_SYMBOL, 0);
	}
	public LR_BRACKET(): TerminalNode {
		return this.getToken(SqlParser.LR_BRACKET, 0);
	}
	public tablePair_list(): TablePairContext[] {
		return this.getTypedRuleContexts(TablePairContext) as TablePairContext[];
	}
	public tablePair(i: number): TablePairContext {
		return this.getTypedRuleContext(TablePairContext, i) as TablePairContext;
	}
	public RR_BRACKET(): TerminalNode {
		return this.getToken(SqlParser.RR_BRACKET, 0);
	}
	public COMMA_list(): TerminalNode[] {
	    	return this.getTokens(SqlParser.COMMA);
	}
	public COMMA(i: number): TerminalNode {
		return this.getToken(SqlParser.COMMA, i);
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterRewriteDbReplication) {
	 		listener.enterRewriteDbReplication(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitRewriteDbReplication) {
	 		listener.exitRewriteDbReplication(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitRewriteDbReplication) {
			return visitor.visitRewriteDbReplication(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class DoDbReplicationContext extends ReplicationFilterContext {
	constructor(parser: SqlParser, ctx: ReplicationFilterContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public REPLICATE_DO_DB(): TerminalNode {
		return this.getToken(SqlParser.REPLICATE_DO_DB, 0);
	}
	public EQUAL_SYMBOL(): TerminalNode {
		return this.getToken(SqlParser.EQUAL_SYMBOL, 0);
	}
	public LR_BRACKET(): TerminalNode {
		return this.getToken(SqlParser.LR_BRACKET, 0);
	}
	public uidList(): UidListContext {
		return this.getTypedRuleContext(UidListContext, 0) as UidListContext;
	}
	public RR_BRACKET(): TerminalNode {
		return this.getToken(SqlParser.RR_BRACKET, 0);
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterDoDbReplication) {
	 		listener.enterDoDbReplication(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitDoDbReplication) {
	 		listener.exitDoDbReplication(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitDoDbReplication) {
			return visitor.visitDoDbReplication(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class IgnoreDbReplicationContext extends ReplicationFilterContext {
	constructor(parser: SqlParser, ctx: ReplicationFilterContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public REPLICATE_IGNORE_DB(): TerminalNode {
		return this.getToken(SqlParser.REPLICATE_IGNORE_DB, 0);
	}
	public EQUAL_SYMBOL(): TerminalNode {
		return this.getToken(SqlParser.EQUAL_SYMBOL, 0);
	}
	public LR_BRACKET(): TerminalNode {
		return this.getToken(SqlParser.LR_BRACKET, 0);
	}
	public uidList(): UidListContext {
		return this.getTypedRuleContext(UidListContext, 0) as UidListContext;
	}
	public RR_BRACKET(): TerminalNode {
		return this.getToken(SqlParser.RR_BRACKET, 0);
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterIgnoreDbReplication) {
	 		listener.enterIgnoreDbReplication(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitIgnoreDbReplication) {
	 		listener.exitIgnoreDbReplication(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitIgnoreDbReplication) {
			return visitor.visitIgnoreDbReplication(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class WildDoTableReplicationContext extends ReplicationFilterContext {
	constructor(parser: SqlParser, ctx: ReplicationFilterContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public REPLICATE_WILD_DO_TABLE(): TerminalNode {
		return this.getToken(SqlParser.REPLICATE_WILD_DO_TABLE, 0);
	}
	public EQUAL_SYMBOL(): TerminalNode {
		return this.getToken(SqlParser.EQUAL_SYMBOL, 0);
	}
	public LR_BRACKET(): TerminalNode {
		return this.getToken(SqlParser.LR_BRACKET, 0);
	}
	public simpleStrings(): SimpleStringsContext {
		return this.getTypedRuleContext(SimpleStringsContext, 0) as SimpleStringsContext;
	}
	public RR_BRACKET(): TerminalNode {
		return this.getToken(SqlParser.RR_BRACKET, 0);
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterWildDoTableReplication) {
	 		listener.enterWildDoTableReplication(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitWildDoTableReplication) {
	 		listener.exitWildDoTableReplication(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitWildDoTableReplication) {
			return visitor.visitWildDoTableReplication(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class TablePairContext extends ParserRuleContext {
	public _firstTable!: TableNameContext;
	public _secondTable!: TableNameContext;
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public LR_BRACKET(): TerminalNode {
		return this.getToken(SqlParser.LR_BRACKET, 0);
	}
	public COMMA(): TerminalNode {
		return this.getToken(SqlParser.COMMA, 0);
	}
	public RR_BRACKET(): TerminalNode {
		return this.getToken(SqlParser.RR_BRACKET, 0);
	}
	public tableName_list(): TableNameContext[] {
		return this.getTypedRuleContexts(TableNameContext) as TableNameContext[];
	}
	public tableName(i: number): TableNameContext {
		return this.getTypedRuleContext(TableNameContext, i) as TableNameContext;
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_tablePair;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterTablePair) {
	 		listener.enterTablePair(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitTablePair) {
	 		listener.exitTablePair(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitTablePair) {
			return visitor.visitTablePair(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ThreadTypeContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public IO_THREAD(): TerminalNode {
		return this.getToken(SqlParser.IO_THREAD, 0);
	}
	public SQL_THREAD(): TerminalNode {
		return this.getToken(SqlParser.SQL_THREAD, 0);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_threadType;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterThreadType) {
	 		listener.enterThreadType(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitThreadType) {
	 		listener.exitThreadType(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitThreadType) {
			return visitor.visitThreadType(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class UntilOptionContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_untilOption;
	}
	public copyFrom(ctx: UntilOptionContext): void {
		super.copyFrom(ctx);
	}
}
export class GtidsUntilOptionContext extends UntilOptionContext {
	public _gtids!: Token;
	constructor(parser: SqlParser, ctx: UntilOptionContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public EQUAL_SYMBOL(): TerminalNode {
		return this.getToken(SqlParser.EQUAL_SYMBOL, 0);
	}
	public gtuidSet(): GtuidSetContext {
		return this.getTypedRuleContext(GtuidSetContext, 0) as GtuidSetContext;
	}
	public SQL_BEFORE_GTIDS(): TerminalNode {
		return this.getToken(SqlParser.SQL_BEFORE_GTIDS, 0);
	}
	public SQL_AFTER_GTIDS(): TerminalNode {
		return this.getToken(SqlParser.SQL_AFTER_GTIDS, 0);
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterGtidsUntilOption) {
	 		listener.enterGtidsUntilOption(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitGtidsUntilOption) {
	 		listener.exitGtidsUntilOption(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitGtidsUntilOption) {
			return visitor.visitGtidsUntilOption(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class SqlGapsUntilOptionContext extends UntilOptionContext {
	constructor(parser: SqlParser, ctx: UntilOptionContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public SQL_AFTER_MTS_GAPS(): TerminalNode {
		return this.getToken(SqlParser.SQL_AFTER_MTS_GAPS, 0);
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterSqlGapsUntilOption) {
	 		listener.enterSqlGapsUntilOption(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitSqlGapsUntilOption) {
	 		listener.exitSqlGapsUntilOption(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitSqlGapsUntilOption) {
			return visitor.visitSqlGapsUntilOption(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class MasterLogUntilOptionContext extends UntilOptionContext {
	constructor(parser: SqlParser, ctx: UntilOptionContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public MASTER_LOG_FILE(): TerminalNode {
		return this.getToken(SqlParser.MASTER_LOG_FILE, 0);
	}
	public EQUAL_SYMBOL_list(): TerminalNode[] {
	    	return this.getTokens(SqlParser.EQUAL_SYMBOL);
	}
	public EQUAL_SYMBOL(i: number): TerminalNode {
		return this.getToken(SqlParser.EQUAL_SYMBOL, i);
	}
	public STRING_LITERAL(): TerminalNode {
		return this.getToken(SqlParser.STRING_LITERAL, 0);
	}
	public COMMA(): TerminalNode {
		return this.getToken(SqlParser.COMMA, 0);
	}
	public MASTER_LOG_POS(): TerminalNode {
		return this.getToken(SqlParser.MASTER_LOG_POS, 0);
	}
	public decimalLiteral(): DecimalLiteralContext {
		return this.getTypedRuleContext(DecimalLiteralContext, 0) as DecimalLiteralContext;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterMasterLogUntilOption) {
	 		listener.enterMasterLogUntilOption(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitMasterLogUntilOption) {
	 		listener.exitMasterLogUntilOption(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitMasterLogUntilOption) {
			return visitor.visitMasterLogUntilOption(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class RelayLogUntilOptionContext extends UntilOptionContext {
	constructor(parser: SqlParser, ctx: UntilOptionContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public RELAY_LOG_FILE(): TerminalNode {
		return this.getToken(SqlParser.RELAY_LOG_FILE, 0);
	}
	public EQUAL_SYMBOL_list(): TerminalNode[] {
	    	return this.getTokens(SqlParser.EQUAL_SYMBOL);
	}
	public EQUAL_SYMBOL(i: number): TerminalNode {
		return this.getToken(SqlParser.EQUAL_SYMBOL, i);
	}
	public STRING_LITERAL(): TerminalNode {
		return this.getToken(SqlParser.STRING_LITERAL, 0);
	}
	public COMMA(): TerminalNode {
		return this.getToken(SqlParser.COMMA, 0);
	}
	public RELAY_LOG_POS(): TerminalNode {
		return this.getToken(SqlParser.RELAY_LOG_POS, 0);
	}
	public decimalLiteral(): DecimalLiteralContext {
		return this.getTypedRuleContext(DecimalLiteralContext, 0) as DecimalLiteralContext;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterRelayLogUntilOption) {
	 		listener.enterRelayLogUntilOption(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitRelayLogUntilOption) {
	 		listener.exitRelayLogUntilOption(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitRelayLogUntilOption) {
			return visitor.visitRelayLogUntilOption(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ConnectionOptionContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_connectionOption;
	}
	public copyFrom(ctx: ConnectionOptionContext): void {
		super.copyFrom(ctx);
	}
}
export class PluginDirConnectionOptionContext extends ConnectionOptionContext {
	public _conOptPluginDir!: Token;
	constructor(parser: SqlParser, ctx: ConnectionOptionContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public PLUGIN_DIR(): TerminalNode {
		return this.getToken(SqlParser.PLUGIN_DIR, 0);
	}
	public EQUAL_SYMBOL(): TerminalNode {
		return this.getToken(SqlParser.EQUAL_SYMBOL, 0);
	}
	public STRING_LITERAL(): TerminalNode {
		return this.getToken(SqlParser.STRING_LITERAL, 0);
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterPluginDirConnectionOption) {
	 		listener.enterPluginDirConnectionOption(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitPluginDirConnectionOption) {
	 		listener.exitPluginDirConnectionOption(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitPluginDirConnectionOption) {
			return visitor.visitPluginDirConnectionOption(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class UserConnectionOptionContext extends ConnectionOptionContext {
	public _conOptUser!: Token;
	constructor(parser: SqlParser, ctx: ConnectionOptionContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public USER(): TerminalNode {
		return this.getToken(SqlParser.USER, 0);
	}
	public EQUAL_SYMBOL(): TerminalNode {
		return this.getToken(SqlParser.EQUAL_SYMBOL, 0);
	}
	public STRING_LITERAL(): TerminalNode {
		return this.getToken(SqlParser.STRING_LITERAL, 0);
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterUserConnectionOption) {
	 		listener.enterUserConnectionOption(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitUserConnectionOption) {
	 		listener.exitUserConnectionOption(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitUserConnectionOption) {
			return visitor.visitUserConnectionOption(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class DefaultAuthConnectionOptionContext extends ConnectionOptionContext {
	public _conOptDefAuth!: Token;
	constructor(parser: SqlParser, ctx: ConnectionOptionContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public DEFAULT_AUTH(): TerminalNode {
		return this.getToken(SqlParser.DEFAULT_AUTH, 0);
	}
	public EQUAL_SYMBOL(): TerminalNode {
		return this.getToken(SqlParser.EQUAL_SYMBOL, 0);
	}
	public STRING_LITERAL(): TerminalNode {
		return this.getToken(SqlParser.STRING_LITERAL, 0);
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterDefaultAuthConnectionOption) {
	 		listener.enterDefaultAuthConnectionOption(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitDefaultAuthConnectionOption) {
	 		listener.exitDefaultAuthConnectionOption(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitDefaultAuthConnectionOption) {
			return visitor.visitDefaultAuthConnectionOption(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class PasswordConnectionOptionContext extends ConnectionOptionContext {
	public _conOptPassword!: Token;
	constructor(parser: SqlParser, ctx: ConnectionOptionContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public PASSWORD(): TerminalNode {
		return this.getToken(SqlParser.PASSWORD, 0);
	}
	public EQUAL_SYMBOL(): TerminalNode {
		return this.getToken(SqlParser.EQUAL_SYMBOL, 0);
	}
	public STRING_LITERAL(): TerminalNode {
		return this.getToken(SqlParser.STRING_LITERAL, 0);
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterPasswordConnectionOption) {
	 		listener.enterPasswordConnectionOption(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitPasswordConnectionOption) {
	 		listener.exitPasswordConnectionOption(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitPasswordConnectionOption) {
			return visitor.visitPasswordConnectionOption(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class GtuidSetContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public uuidSet_list(): UuidSetContext[] {
		return this.getTypedRuleContexts(UuidSetContext) as UuidSetContext[];
	}
	public uuidSet(i: number): UuidSetContext {
		return this.getTypedRuleContext(UuidSetContext, i) as UuidSetContext;
	}
	public COMMA_list(): TerminalNode[] {
	    	return this.getTokens(SqlParser.COMMA);
	}
	public COMMA(i: number): TerminalNode {
		return this.getToken(SqlParser.COMMA, i);
	}
	public STRING_LITERAL(): TerminalNode {
		return this.getToken(SqlParser.STRING_LITERAL, 0);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_gtuidSet;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterGtuidSet) {
	 		listener.enterGtuidSet(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitGtuidSet) {
	 		listener.exitGtuidSet(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitGtuidSet) {
			return visitor.visitGtuidSet(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class XaStartTransactionContext extends ParserRuleContext {
	public _xaStart!: Token;
	public _xaAction!: Token;
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public XA(): TerminalNode {
		return this.getToken(SqlParser.XA, 0);
	}
	public xid(): XidContext {
		return this.getTypedRuleContext(XidContext, 0) as XidContext;
	}
	public START(): TerminalNode {
		return this.getToken(SqlParser.START, 0);
	}
	public BEGIN(): TerminalNode {
		return this.getToken(SqlParser.BEGIN, 0);
	}
	public JOIN(): TerminalNode {
		return this.getToken(SqlParser.JOIN, 0);
	}
	public RESUME(): TerminalNode {
		return this.getToken(SqlParser.RESUME, 0);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_xaStartTransaction;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterXaStartTransaction) {
	 		listener.enterXaStartTransaction(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitXaStartTransaction) {
	 		listener.exitXaStartTransaction(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitXaStartTransaction) {
			return visitor.visitXaStartTransaction(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class XaEndTransactionContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public XA(): TerminalNode {
		return this.getToken(SqlParser.XA, 0);
	}
	public END(): TerminalNode {
		return this.getToken(SqlParser.END, 0);
	}
	public xid(): XidContext {
		return this.getTypedRuleContext(XidContext, 0) as XidContext;
	}
	public SUSPEND(): TerminalNode {
		return this.getToken(SqlParser.SUSPEND, 0);
	}
	public FOR(): TerminalNode {
		return this.getToken(SqlParser.FOR, 0);
	}
	public MIGRATE(): TerminalNode {
		return this.getToken(SqlParser.MIGRATE, 0);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_xaEndTransaction;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterXaEndTransaction) {
	 		listener.enterXaEndTransaction(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitXaEndTransaction) {
	 		listener.exitXaEndTransaction(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitXaEndTransaction) {
			return visitor.visitXaEndTransaction(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class XaPrepareStatementContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public XA(): TerminalNode {
		return this.getToken(SqlParser.XA, 0);
	}
	public PREPARE(): TerminalNode {
		return this.getToken(SqlParser.PREPARE, 0);
	}
	public xid(): XidContext {
		return this.getTypedRuleContext(XidContext, 0) as XidContext;
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_xaPrepareStatement;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterXaPrepareStatement) {
	 		listener.enterXaPrepareStatement(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitXaPrepareStatement) {
	 		listener.exitXaPrepareStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitXaPrepareStatement) {
			return visitor.visitXaPrepareStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class XaCommitWorkContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public XA(): TerminalNode {
		return this.getToken(SqlParser.XA, 0);
	}
	public COMMIT(): TerminalNode {
		return this.getToken(SqlParser.COMMIT, 0);
	}
	public xid(): XidContext {
		return this.getTypedRuleContext(XidContext, 0) as XidContext;
	}
	public ONE(): TerminalNode {
		return this.getToken(SqlParser.ONE, 0);
	}
	public PHASE(): TerminalNode {
		return this.getToken(SqlParser.PHASE, 0);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_xaCommitWork;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterXaCommitWork) {
	 		listener.enterXaCommitWork(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitXaCommitWork) {
	 		listener.exitXaCommitWork(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitXaCommitWork) {
			return visitor.visitXaCommitWork(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class XaRollbackWorkContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public XA(): TerminalNode {
		return this.getToken(SqlParser.XA, 0);
	}
	public ROLLBACK(): TerminalNode {
		return this.getToken(SqlParser.ROLLBACK, 0);
	}
	public xid(): XidContext {
		return this.getTypedRuleContext(XidContext, 0) as XidContext;
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_xaRollbackWork;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterXaRollbackWork) {
	 		listener.enterXaRollbackWork(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitXaRollbackWork) {
	 		listener.exitXaRollbackWork(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitXaRollbackWork) {
			return visitor.visitXaRollbackWork(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class XaRecoverWorkContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public XA(): TerminalNode {
		return this.getToken(SqlParser.XA, 0);
	}
	public RECOVER(): TerminalNode {
		return this.getToken(SqlParser.RECOVER, 0);
	}
	public CONVERT(): TerminalNode {
		return this.getToken(SqlParser.CONVERT, 0);
	}
	public xid(): XidContext {
		return this.getTypedRuleContext(XidContext, 0) as XidContext;
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_xaRecoverWork;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterXaRecoverWork) {
	 		listener.enterXaRecoverWork(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitXaRecoverWork) {
	 		listener.exitXaRecoverWork(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitXaRecoverWork) {
			return visitor.visitXaRecoverWork(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class PrepareStatementContext extends ParserRuleContext {
	public _query!: Token;
	public _variable!: Token;
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public PREPARE(): TerminalNode {
		return this.getToken(SqlParser.PREPARE, 0);
	}
	public uid(): UidContext {
		return this.getTypedRuleContext(UidContext, 0) as UidContext;
	}
	public FROM(): TerminalNode {
		return this.getToken(SqlParser.FROM, 0);
	}
	public STRING_LITERAL(): TerminalNode {
		return this.getToken(SqlParser.STRING_LITERAL, 0);
	}
	public LOCAL_ID(): TerminalNode {
		return this.getToken(SqlParser.LOCAL_ID, 0);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_prepareStatement;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterPrepareStatement) {
	 		listener.enterPrepareStatement(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitPrepareStatement) {
	 		listener.exitPrepareStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitPrepareStatement) {
			return visitor.visitPrepareStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ExecuteStatementContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public EXECUTE(): TerminalNode {
		return this.getToken(SqlParser.EXECUTE, 0);
	}
	public uid(): UidContext {
		return this.getTypedRuleContext(UidContext, 0) as UidContext;
	}
	public USING(): TerminalNode {
		return this.getToken(SqlParser.USING, 0);
	}
	public userVariables(): UserVariablesContext {
		return this.getTypedRuleContext(UserVariablesContext, 0) as UserVariablesContext;
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_executeStatement;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterExecuteStatement) {
	 		listener.enterExecuteStatement(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitExecuteStatement) {
	 		listener.exitExecuteStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitExecuteStatement) {
			return visitor.visitExecuteStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class DeallocatePrepareContext extends ParserRuleContext {
	public _dropFormat!: Token;
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public PREPARE(): TerminalNode {
		return this.getToken(SqlParser.PREPARE, 0);
	}
	public uid(): UidContext {
		return this.getTypedRuleContext(UidContext, 0) as UidContext;
	}
	public DEALLOCATE(): TerminalNode {
		return this.getToken(SqlParser.DEALLOCATE, 0);
	}
	public DROP(): TerminalNode {
		return this.getToken(SqlParser.DROP, 0);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_deallocatePrepare;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterDeallocatePrepare) {
	 		listener.enterDeallocatePrepare(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitDeallocatePrepare) {
	 		listener.exitDeallocatePrepare(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitDeallocatePrepare) {
			return visitor.visitDeallocatePrepare(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class RoutineBodyContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public blockStatement(): BlockStatementContext {
		return this.getTypedRuleContext(BlockStatementContext, 0) as BlockStatementContext;
	}
	public sqlStatement(): SqlStatementContext {
		return this.getTypedRuleContext(SqlStatementContext, 0) as SqlStatementContext;
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_routineBody;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterRoutineBody) {
	 		listener.enterRoutineBody(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitRoutineBody) {
	 		listener.exitRoutineBody(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitRoutineBody) {
			return visitor.visitRoutineBody(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class BlockStatementContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public BEGIN(): TerminalNode {
		return this.getToken(SqlParser.BEGIN, 0);
	}
	public END(): TerminalNode {
		return this.getToken(SqlParser.END, 0);
	}
	public uid_list(): UidContext[] {
		return this.getTypedRuleContexts(UidContext) as UidContext[];
	}
	public uid(i: number): UidContext {
		return this.getTypedRuleContext(UidContext, i) as UidContext;
	}
	public COLON_SYMB(): TerminalNode {
		return this.getToken(SqlParser.COLON_SYMB, 0);
	}
	public declareVariable_list(): DeclareVariableContext[] {
		return this.getTypedRuleContexts(DeclareVariableContext) as DeclareVariableContext[];
	}
	public declareVariable(i: number): DeclareVariableContext {
		return this.getTypedRuleContext(DeclareVariableContext, i) as DeclareVariableContext;
	}
	public SEMI_list(): TerminalNode[] {
	    	return this.getTokens(SqlParser.SEMI);
	}
	public SEMI(i: number): TerminalNode {
		return this.getToken(SqlParser.SEMI, i);
	}
	public declareCondition_list(): DeclareConditionContext[] {
		return this.getTypedRuleContexts(DeclareConditionContext) as DeclareConditionContext[];
	}
	public declareCondition(i: number): DeclareConditionContext {
		return this.getTypedRuleContext(DeclareConditionContext, i) as DeclareConditionContext;
	}
	public declareCursor_list(): DeclareCursorContext[] {
		return this.getTypedRuleContexts(DeclareCursorContext) as DeclareCursorContext[];
	}
	public declareCursor(i: number): DeclareCursorContext {
		return this.getTypedRuleContext(DeclareCursorContext, i) as DeclareCursorContext;
	}
	public declareHandler_list(): DeclareHandlerContext[] {
		return this.getTypedRuleContexts(DeclareHandlerContext) as DeclareHandlerContext[];
	}
	public declareHandler(i: number): DeclareHandlerContext {
		return this.getTypedRuleContext(DeclareHandlerContext, i) as DeclareHandlerContext;
	}
	public procedureSqlStatement_list(): ProcedureSqlStatementContext[] {
		return this.getTypedRuleContexts(ProcedureSqlStatementContext) as ProcedureSqlStatementContext[];
	}
	public procedureSqlStatement(i: number): ProcedureSqlStatementContext {
		return this.getTypedRuleContext(ProcedureSqlStatementContext, i) as ProcedureSqlStatementContext;
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_blockStatement;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterBlockStatement) {
	 		listener.enterBlockStatement(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitBlockStatement) {
	 		listener.exitBlockStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitBlockStatement) {
			return visitor.visitBlockStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class CaseStatementContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public CASE_list(): TerminalNode[] {
	    	return this.getTokens(SqlParser.CASE);
	}
	public CASE(i: number): TerminalNode {
		return this.getToken(SqlParser.CASE, i);
	}
	public END(): TerminalNode {
		return this.getToken(SqlParser.END, 0);
	}
	public uid(): UidContext {
		return this.getTypedRuleContext(UidContext, 0) as UidContext;
	}
	public expression(): ExpressionContext {
		return this.getTypedRuleContext(ExpressionContext, 0) as ExpressionContext;
	}
	public caseAlternative_list(): CaseAlternativeContext[] {
		return this.getTypedRuleContexts(CaseAlternativeContext) as CaseAlternativeContext[];
	}
	public caseAlternative(i: number): CaseAlternativeContext {
		return this.getTypedRuleContext(CaseAlternativeContext, i) as CaseAlternativeContext;
	}
	public ELSE(): TerminalNode {
		return this.getToken(SqlParser.ELSE, 0);
	}
	public procedureSqlStatement_list(): ProcedureSqlStatementContext[] {
		return this.getTypedRuleContexts(ProcedureSqlStatementContext) as ProcedureSqlStatementContext[];
	}
	public procedureSqlStatement(i: number): ProcedureSqlStatementContext {
		return this.getTypedRuleContext(ProcedureSqlStatementContext, i) as ProcedureSqlStatementContext;
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_caseStatement;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterCaseStatement) {
	 		listener.enterCaseStatement(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitCaseStatement) {
	 		listener.exitCaseStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitCaseStatement) {
			return visitor.visitCaseStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class IfStatementContext extends ParserRuleContext {
	public _procedureSqlStatement!: ProcedureSqlStatementContext;
	public _thenStatements: ProcedureSqlStatementContext[] = [];
	public _elseStatements: ProcedureSqlStatementContext[] = [];
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public IF_list(): TerminalNode[] {
	    	return this.getTokens(SqlParser.IF);
	}
	public IF(i: number): TerminalNode {
		return this.getToken(SqlParser.IF, i);
	}
	public expression(): ExpressionContext {
		return this.getTypedRuleContext(ExpressionContext, 0) as ExpressionContext;
	}
	public THEN(): TerminalNode {
		return this.getToken(SqlParser.THEN, 0);
	}
	public END(): TerminalNode {
		return this.getToken(SqlParser.END, 0);
	}
	public elifAlternative_list(): ElifAlternativeContext[] {
		return this.getTypedRuleContexts(ElifAlternativeContext) as ElifAlternativeContext[];
	}
	public elifAlternative(i: number): ElifAlternativeContext {
		return this.getTypedRuleContext(ElifAlternativeContext, i) as ElifAlternativeContext;
	}
	public ELSE(): TerminalNode {
		return this.getToken(SqlParser.ELSE, 0);
	}
	public procedureSqlStatement_list(): ProcedureSqlStatementContext[] {
		return this.getTypedRuleContexts(ProcedureSqlStatementContext) as ProcedureSqlStatementContext[];
	}
	public procedureSqlStatement(i: number): ProcedureSqlStatementContext {
		return this.getTypedRuleContext(ProcedureSqlStatementContext, i) as ProcedureSqlStatementContext;
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_ifStatement;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterIfStatement) {
	 		listener.enterIfStatement(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitIfStatement) {
	 		listener.exitIfStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitIfStatement) {
			return visitor.visitIfStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class IterateStatementContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public ITERATE(): TerminalNode {
		return this.getToken(SqlParser.ITERATE, 0);
	}
	public uid(): UidContext {
		return this.getTypedRuleContext(UidContext, 0) as UidContext;
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_iterateStatement;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterIterateStatement) {
	 		listener.enterIterateStatement(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitIterateStatement) {
	 		listener.exitIterateStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitIterateStatement) {
			return visitor.visitIterateStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class LeaveStatementContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public LEAVE(): TerminalNode {
		return this.getToken(SqlParser.LEAVE, 0);
	}
	public uid(): UidContext {
		return this.getTypedRuleContext(UidContext, 0) as UidContext;
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_leaveStatement;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterLeaveStatement) {
	 		listener.enterLeaveStatement(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitLeaveStatement) {
	 		listener.exitLeaveStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitLeaveStatement) {
			return visitor.visitLeaveStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class LoopStatementContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public LOOP_list(): TerminalNode[] {
	    	return this.getTokens(SqlParser.LOOP);
	}
	public LOOP(i: number): TerminalNode {
		return this.getToken(SqlParser.LOOP, i);
	}
	public END(): TerminalNode {
		return this.getToken(SqlParser.END, 0);
	}
	public uid_list(): UidContext[] {
		return this.getTypedRuleContexts(UidContext) as UidContext[];
	}
	public uid(i: number): UidContext {
		return this.getTypedRuleContext(UidContext, i) as UidContext;
	}
	public COLON_SYMB(): TerminalNode {
		return this.getToken(SqlParser.COLON_SYMB, 0);
	}
	public procedureSqlStatement_list(): ProcedureSqlStatementContext[] {
		return this.getTypedRuleContexts(ProcedureSqlStatementContext) as ProcedureSqlStatementContext[];
	}
	public procedureSqlStatement(i: number): ProcedureSqlStatementContext {
		return this.getTypedRuleContext(ProcedureSqlStatementContext, i) as ProcedureSqlStatementContext;
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_loopStatement;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterLoopStatement) {
	 		listener.enterLoopStatement(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitLoopStatement) {
	 		listener.exitLoopStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitLoopStatement) {
			return visitor.visitLoopStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class RepeatStatementContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public REPEAT_list(): TerminalNode[] {
	    	return this.getTokens(SqlParser.REPEAT);
	}
	public REPEAT(i: number): TerminalNode {
		return this.getToken(SqlParser.REPEAT, i);
	}
	public UNTIL(): TerminalNode {
		return this.getToken(SqlParser.UNTIL, 0);
	}
	public expression(): ExpressionContext {
		return this.getTypedRuleContext(ExpressionContext, 0) as ExpressionContext;
	}
	public END(): TerminalNode {
		return this.getToken(SqlParser.END, 0);
	}
	public uid_list(): UidContext[] {
		return this.getTypedRuleContexts(UidContext) as UidContext[];
	}
	public uid(i: number): UidContext {
		return this.getTypedRuleContext(UidContext, i) as UidContext;
	}
	public COLON_SYMB(): TerminalNode {
		return this.getToken(SqlParser.COLON_SYMB, 0);
	}
	public procedureSqlStatement_list(): ProcedureSqlStatementContext[] {
		return this.getTypedRuleContexts(ProcedureSqlStatementContext) as ProcedureSqlStatementContext[];
	}
	public procedureSqlStatement(i: number): ProcedureSqlStatementContext {
		return this.getTypedRuleContext(ProcedureSqlStatementContext, i) as ProcedureSqlStatementContext;
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_repeatStatement;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterRepeatStatement) {
	 		listener.enterRepeatStatement(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitRepeatStatement) {
	 		listener.exitRepeatStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitRepeatStatement) {
			return visitor.visitRepeatStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ReturnStatementContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public RETURN(): TerminalNode {
		return this.getToken(SqlParser.RETURN, 0);
	}
	public expression(): ExpressionContext {
		return this.getTypedRuleContext(ExpressionContext, 0) as ExpressionContext;
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_returnStatement;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterReturnStatement) {
	 		listener.enterReturnStatement(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitReturnStatement) {
	 		listener.exitReturnStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitReturnStatement) {
			return visitor.visitReturnStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class WhileStatementContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public WHILE_list(): TerminalNode[] {
	    	return this.getTokens(SqlParser.WHILE);
	}
	public WHILE(i: number): TerminalNode {
		return this.getToken(SqlParser.WHILE, i);
	}
	public expression(): ExpressionContext {
		return this.getTypedRuleContext(ExpressionContext, 0) as ExpressionContext;
	}
	public DO(): TerminalNode {
		return this.getToken(SqlParser.DO, 0);
	}
	public END(): TerminalNode {
		return this.getToken(SqlParser.END, 0);
	}
	public uid_list(): UidContext[] {
		return this.getTypedRuleContexts(UidContext) as UidContext[];
	}
	public uid(i: number): UidContext {
		return this.getTypedRuleContext(UidContext, i) as UidContext;
	}
	public COLON_SYMB(): TerminalNode {
		return this.getToken(SqlParser.COLON_SYMB, 0);
	}
	public procedureSqlStatement_list(): ProcedureSqlStatementContext[] {
		return this.getTypedRuleContexts(ProcedureSqlStatementContext) as ProcedureSqlStatementContext[];
	}
	public procedureSqlStatement(i: number): ProcedureSqlStatementContext {
		return this.getTypedRuleContext(ProcedureSqlStatementContext, i) as ProcedureSqlStatementContext;
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_whileStatement;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterWhileStatement) {
	 		listener.enterWhileStatement(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitWhileStatement) {
	 		listener.exitWhileStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitWhileStatement) {
			return visitor.visitWhileStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class CursorStatementContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_cursorStatement;
	}
	public copyFrom(ctx: CursorStatementContext): void {
		super.copyFrom(ctx);
	}
}
export class CloseCursorContext extends CursorStatementContext {
	constructor(parser: SqlParser, ctx: CursorStatementContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public CLOSE(): TerminalNode {
		return this.getToken(SqlParser.CLOSE, 0);
	}
	public uid(): UidContext {
		return this.getTypedRuleContext(UidContext, 0) as UidContext;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterCloseCursor) {
	 		listener.enterCloseCursor(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitCloseCursor) {
	 		listener.exitCloseCursor(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitCloseCursor) {
			return visitor.visitCloseCursor(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class OpenCursorContext extends CursorStatementContext {
	constructor(parser: SqlParser, ctx: CursorStatementContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public OPEN(): TerminalNode {
		return this.getToken(SqlParser.OPEN, 0);
	}
	public uid(): UidContext {
		return this.getTypedRuleContext(UidContext, 0) as UidContext;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterOpenCursor) {
	 		listener.enterOpenCursor(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitOpenCursor) {
	 		listener.exitOpenCursor(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitOpenCursor) {
			return visitor.visitOpenCursor(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class FetchCursorContext extends CursorStatementContext {
	constructor(parser: SqlParser, ctx: CursorStatementContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public FETCH(): TerminalNode {
		return this.getToken(SqlParser.FETCH, 0);
	}
	public uid(): UidContext {
		return this.getTypedRuleContext(UidContext, 0) as UidContext;
	}
	public INTO(): TerminalNode {
		return this.getToken(SqlParser.INTO, 0);
	}
	public uidList(): UidListContext {
		return this.getTypedRuleContext(UidListContext, 0) as UidListContext;
	}
	public FROM(): TerminalNode {
		return this.getToken(SqlParser.FROM, 0);
	}
	public NEXT(): TerminalNode {
		return this.getToken(SqlParser.NEXT, 0);
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterFetchCursor) {
	 		listener.enterFetchCursor(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitFetchCursor) {
	 		listener.exitFetchCursor(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitFetchCursor) {
			return visitor.visitFetchCursor(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class DeclareVariableContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public DECLARE(): TerminalNode {
		return this.getToken(SqlParser.DECLARE, 0);
	}
	public uidList(): UidListContext {
		return this.getTypedRuleContext(UidListContext, 0) as UidListContext;
	}
	public dataType(): DataTypeContext {
		return this.getTypedRuleContext(DataTypeContext, 0) as DataTypeContext;
	}
	public DEFAULT(): TerminalNode {
		return this.getToken(SqlParser.DEFAULT, 0);
	}
	public defaultValue(): DefaultValueContext {
		return this.getTypedRuleContext(DefaultValueContext, 0) as DefaultValueContext;
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_declareVariable;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterDeclareVariable) {
	 		listener.enterDeclareVariable(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitDeclareVariable) {
	 		listener.exitDeclareVariable(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitDeclareVariable) {
			return visitor.visitDeclareVariable(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class DeclareConditionContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public DECLARE(): TerminalNode {
		return this.getToken(SqlParser.DECLARE, 0);
	}
	public uid(): UidContext {
		return this.getTypedRuleContext(UidContext, 0) as UidContext;
	}
	public CONDITION(): TerminalNode {
		return this.getToken(SqlParser.CONDITION, 0);
	}
	public FOR(): TerminalNode {
		return this.getToken(SqlParser.FOR, 0);
	}
	public decimalLiteral(): DecimalLiteralContext {
		return this.getTypedRuleContext(DecimalLiteralContext, 0) as DecimalLiteralContext;
	}
	public SQLSTATE(): TerminalNode {
		return this.getToken(SqlParser.SQLSTATE, 0);
	}
	public STRING_LITERAL(): TerminalNode {
		return this.getToken(SqlParser.STRING_LITERAL, 0);
	}
	public VALUE(): TerminalNode {
		return this.getToken(SqlParser.VALUE, 0);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_declareCondition;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterDeclareCondition) {
	 		listener.enterDeclareCondition(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitDeclareCondition) {
	 		listener.exitDeclareCondition(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitDeclareCondition) {
			return visitor.visitDeclareCondition(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class DeclareCursorContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public DECLARE(): TerminalNode {
		return this.getToken(SqlParser.DECLARE, 0);
	}
	public uid(): UidContext {
		return this.getTypedRuleContext(UidContext, 0) as UidContext;
	}
	public CURSOR(): TerminalNode {
		return this.getToken(SqlParser.CURSOR, 0);
	}
	public FOR(): TerminalNode {
		return this.getToken(SqlParser.FOR, 0);
	}
	public selectStatement(): SelectStatementContext {
		return this.getTypedRuleContext(SelectStatementContext, 0) as SelectStatementContext;
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_declareCursor;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterDeclareCursor) {
	 		listener.enterDeclareCursor(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitDeclareCursor) {
	 		listener.exitDeclareCursor(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitDeclareCursor) {
			return visitor.visitDeclareCursor(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class DeclareHandlerContext extends ParserRuleContext {
	public _handlerAction!: Token;
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public DECLARE(): TerminalNode {
		return this.getToken(SqlParser.DECLARE, 0);
	}
	public HANDLER(): TerminalNode {
		return this.getToken(SqlParser.HANDLER, 0);
	}
	public FOR(): TerminalNode {
		return this.getToken(SqlParser.FOR, 0);
	}
	public handlerConditionValue_list(): HandlerConditionValueContext[] {
		return this.getTypedRuleContexts(HandlerConditionValueContext) as HandlerConditionValueContext[];
	}
	public handlerConditionValue(i: number): HandlerConditionValueContext {
		return this.getTypedRuleContext(HandlerConditionValueContext, i) as HandlerConditionValueContext;
	}
	public routineBody(): RoutineBodyContext {
		return this.getTypedRuleContext(RoutineBodyContext, 0) as RoutineBodyContext;
	}
	public CONTINUE(): TerminalNode {
		return this.getToken(SqlParser.CONTINUE, 0);
	}
	public EXIT(): TerminalNode {
		return this.getToken(SqlParser.EXIT, 0);
	}
	public UNDO(): TerminalNode {
		return this.getToken(SqlParser.UNDO, 0);
	}
	public COMMA_list(): TerminalNode[] {
	    	return this.getTokens(SqlParser.COMMA);
	}
	public COMMA(i: number): TerminalNode {
		return this.getToken(SqlParser.COMMA, i);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_declareHandler;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterDeclareHandler) {
	 		listener.enterDeclareHandler(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitDeclareHandler) {
	 		listener.exitDeclareHandler(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitDeclareHandler) {
			return visitor.visitDeclareHandler(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class HandlerConditionValueContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_handlerConditionValue;
	}
	public copyFrom(ctx: HandlerConditionValueContext): void {
		super.copyFrom(ctx);
	}
}
export class HandlerConditionWarningContext extends HandlerConditionValueContext {
	constructor(parser: SqlParser, ctx: HandlerConditionValueContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public SQLWARNING(): TerminalNode {
		return this.getToken(SqlParser.SQLWARNING, 0);
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterHandlerConditionWarning) {
	 		listener.enterHandlerConditionWarning(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitHandlerConditionWarning) {
	 		listener.exitHandlerConditionWarning(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitHandlerConditionWarning) {
			return visitor.visitHandlerConditionWarning(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class HandlerConditionCodeContext extends HandlerConditionValueContext {
	constructor(parser: SqlParser, ctx: HandlerConditionValueContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public decimalLiteral(): DecimalLiteralContext {
		return this.getTypedRuleContext(DecimalLiteralContext, 0) as DecimalLiteralContext;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterHandlerConditionCode) {
	 		listener.enterHandlerConditionCode(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitHandlerConditionCode) {
	 		listener.exitHandlerConditionCode(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitHandlerConditionCode) {
			return visitor.visitHandlerConditionCode(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class HandlerConditionNotfoundContext extends HandlerConditionValueContext {
	constructor(parser: SqlParser, ctx: HandlerConditionValueContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public NOT(): TerminalNode {
		return this.getToken(SqlParser.NOT, 0);
	}
	public FOUND(): TerminalNode {
		return this.getToken(SqlParser.FOUND, 0);
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterHandlerConditionNotfound) {
	 		listener.enterHandlerConditionNotfound(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitHandlerConditionNotfound) {
	 		listener.exitHandlerConditionNotfound(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitHandlerConditionNotfound) {
			return visitor.visitHandlerConditionNotfound(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class HandlerConditionStateContext extends HandlerConditionValueContext {
	constructor(parser: SqlParser, ctx: HandlerConditionValueContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public SQLSTATE(): TerminalNode {
		return this.getToken(SqlParser.SQLSTATE, 0);
	}
	public STRING_LITERAL(): TerminalNode {
		return this.getToken(SqlParser.STRING_LITERAL, 0);
	}
	public VALUE(): TerminalNode {
		return this.getToken(SqlParser.VALUE, 0);
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterHandlerConditionState) {
	 		listener.enterHandlerConditionState(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitHandlerConditionState) {
	 		listener.exitHandlerConditionState(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitHandlerConditionState) {
			return visitor.visitHandlerConditionState(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class HandlerConditionExceptionContext extends HandlerConditionValueContext {
	constructor(parser: SqlParser, ctx: HandlerConditionValueContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public SQLEXCEPTION(): TerminalNode {
		return this.getToken(SqlParser.SQLEXCEPTION, 0);
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterHandlerConditionException) {
	 		listener.enterHandlerConditionException(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitHandlerConditionException) {
	 		listener.exitHandlerConditionException(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitHandlerConditionException) {
			return visitor.visitHandlerConditionException(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class HandlerConditionNameContext extends HandlerConditionValueContext {
	constructor(parser: SqlParser, ctx: HandlerConditionValueContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public uid(): UidContext {
		return this.getTypedRuleContext(UidContext, 0) as UidContext;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterHandlerConditionName) {
	 		listener.enterHandlerConditionName(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitHandlerConditionName) {
	 		listener.exitHandlerConditionName(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitHandlerConditionName) {
			return visitor.visitHandlerConditionName(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ProcedureSqlStatementContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public SEMI(): TerminalNode {
		return this.getToken(SqlParser.SEMI, 0);
	}
	public compoundStatement(): CompoundStatementContext {
		return this.getTypedRuleContext(CompoundStatementContext, 0) as CompoundStatementContext;
	}
	public sqlStatement(): SqlStatementContext {
		return this.getTypedRuleContext(SqlStatementContext, 0) as SqlStatementContext;
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_procedureSqlStatement;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterProcedureSqlStatement) {
	 		listener.enterProcedureSqlStatement(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitProcedureSqlStatement) {
	 		listener.exitProcedureSqlStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitProcedureSqlStatement) {
			return visitor.visitProcedureSqlStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class CaseAlternativeContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public WHEN(): TerminalNode {
		return this.getToken(SqlParser.WHEN, 0);
	}
	public THEN(): TerminalNode {
		return this.getToken(SqlParser.THEN, 0);
	}
	public constant(): ConstantContext {
		return this.getTypedRuleContext(ConstantContext, 0) as ConstantContext;
	}
	public expression(): ExpressionContext {
		return this.getTypedRuleContext(ExpressionContext, 0) as ExpressionContext;
	}
	public procedureSqlStatement_list(): ProcedureSqlStatementContext[] {
		return this.getTypedRuleContexts(ProcedureSqlStatementContext) as ProcedureSqlStatementContext[];
	}
	public procedureSqlStatement(i: number): ProcedureSqlStatementContext {
		return this.getTypedRuleContext(ProcedureSqlStatementContext, i) as ProcedureSqlStatementContext;
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_caseAlternative;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterCaseAlternative) {
	 		listener.enterCaseAlternative(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitCaseAlternative) {
	 		listener.exitCaseAlternative(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitCaseAlternative) {
			return visitor.visitCaseAlternative(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ElifAlternativeContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public ELSEIF(): TerminalNode {
		return this.getToken(SqlParser.ELSEIF, 0);
	}
	public expression(): ExpressionContext {
		return this.getTypedRuleContext(ExpressionContext, 0) as ExpressionContext;
	}
	public THEN(): TerminalNode {
		return this.getToken(SqlParser.THEN, 0);
	}
	public procedureSqlStatement_list(): ProcedureSqlStatementContext[] {
		return this.getTypedRuleContexts(ProcedureSqlStatementContext) as ProcedureSqlStatementContext[];
	}
	public procedureSqlStatement(i: number): ProcedureSqlStatementContext {
		return this.getTypedRuleContext(ProcedureSqlStatementContext, i) as ProcedureSqlStatementContext;
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_elifAlternative;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterElifAlternative) {
	 		listener.enterElifAlternative(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitElifAlternative) {
	 		listener.exitElifAlternative(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitElifAlternative) {
			return visitor.visitElifAlternative(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class AlterUserContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_alterUser;
	}
	public copyFrom(ctx: AlterUserContext): void {
		super.copyFrom(ctx);
	}
}
export class AlterUserMysqlV56Context extends AlterUserContext {
	constructor(parser: SqlParser, ctx: AlterUserContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public ALTER(): TerminalNode {
		return this.getToken(SqlParser.ALTER, 0);
	}
	public USER(): TerminalNode {
		return this.getToken(SqlParser.USER, 0);
	}
	public userSpecification_list(): UserSpecificationContext[] {
		return this.getTypedRuleContexts(UserSpecificationContext) as UserSpecificationContext[];
	}
	public userSpecification(i: number): UserSpecificationContext {
		return this.getTypedRuleContext(UserSpecificationContext, i) as UserSpecificationContext;
	}
	public COMMA_list(): TerminalNode[] {
	    	return this.getTokens(SqlParser.COMMA);
	}
	public COMMA(i: number): TerminalNode {
		return this.getToken(SqlParser.COMMA, i);
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterAlterUserMysqlV56) {
	 		listener.enterAlterUserMysqlV56(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitAlterUserMysqlV56) {
	 		listener.exitAlterUserMysqlV56(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitAlterUserMysqlV56) {
			return visitor.visitAlterUserMysqlV56(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class AlterUserMysqlV57Context extends AlterUserContext {
	public _tlsNone!: Token;
	constructor(parser: SqlParser, ctx: AlterUserContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public ALTER(): TerminalNode {
		return this.getToken(SqlParser.ALTER, 0);
	}
	public USER(): TerminalNode {
		return this.getToken(SqlParser.USER, 0);
	}
	public userAuthOption_list(): UserAuthOptionContext[] {
		return this.getTypedRuleContexts(UserAuthOptionContext) as UserAuthOptionContext[];
	}
	public userAuthOption(i: number): UserAuthOptionContext {
		return this.getTypedRuleContext(UserAuthOptionContext, i) as UserAuthOptionContext;
	}
	public ifExists(): IfExistsContext {
		return this.getTypedRuleContext(IfExistsContext, 0) as IfExistsContext;
	}
	public COMMA_list(): TerminalNode[] {
	    	return this.getTokens(SqlParser.COMMA);
	}
	public COMMA(i: number): TerminalNode {
		return this.getToken(SqlParser.COMMA, i);
	}
	public REQUIRE(): TerminalNode {
		return this.getToken(SqlParser.REQUIRE, 0);
	}
	public WITH(): TerminalNode {
		return this.getToken(SqlParser.WITH, 0);
	}
	public userPasswordOption_list(): UserPasswordOptionContext[] {
		return this.getTypedRuleContexts(UserPasswordOptionContext) as UserPasswordOptionContext[];
	}
	public userPasswordOption(i: number): UserPasswordOptionContext {
		return this.getTypedRuleContext(UserPasswordOptionContext, i) as UserPasswordOptionContext;
	}
	public userLockOption_list(): UserLockOptionContext[] {
		return this.getTypedRuleContexts(UserLockOptionContext) as UserLockOptionContext[];
	}
	public userLockOption(i: number): UserLockOptionContext {
		return this.getTypedRuleContext(UserLockOptionContext, i) as UserLockOptionContext;
	}
	public tlsOption_list(): TlsOptionContext[] {
		return this.getTypedRuleContexts(TlsOptionContext) as TlsOptionContext[];
	}
	public tlsOption(i: number): TlsOptionContext {
		return this.getTypedRuleContext(TlsOptionContext, i) as TlsOptionContext;
	}
	public NONE(): TerminalNode {
		return this.getToken(SqlParser.NONE, 0);
	}
	public userResourceOption_list(): UserResourceOptionContext[] {
		return this.getTypedRuleContexts(UserResourceOptionContext) as UserResourceOptionContext[];
	}
	public userResourceOption(i: number): UserResourceOptionContext {
		return this.getTypedRuleContext(UserResourceOptionContext, i) as UserResourceOptionContext;
	}
	public AND_list(): TerminalNode[] {
	    	return this.getTokens(SqlParser.AND);
	}
	public AND(i: number): TerminalNode {
		return this.getToken(SqlParser.AND, i);
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterAlterUserMysqlV57) {
	 		listener.enterAlterUserMysqlV57(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitAlterUserMysqlV57) {
	 		listener.exitAlterUserMysqlV57(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitAlterUserMysqlV57) {
			return visitor.visitAlterUserMysqlV57(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class CreateUserContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_createUser;
	}
	public copyFrom(ctx: CreateUserContext): void {
		super.copyFrom(ctx);
	}
}
export class CreateUserMysqlV57Context extends CreateUserContext {
	public _tlsNone!: Token;
	constructor(parser: SqlParser, ctx: CreateUserContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public CREATE(): TerminalNode {
		return this.getToken(SqlParser.CREATE, 0);
	}
	public USER(): TerminalNode {
		return this.getToken(SqlParser.USER, 0);
	}
	public userAuthOption_list(): UserAuthOptionContext[] {
		return this.getTypedRuleContexts(UserAuthOptionContext) as UserAuthOptionContext[];
	}
	public userAuthOption(i: number): UserAuthOptionContext {
		return this.getTypedRuleContext(UserAuthOptionContext, i) as UserAuthOptionContext;
	}
	public ifNotExists(): IfNotExistsContext {
		return this.getTypedRuleContext(IfNotExistsContext, 0) as IfNotExistsContext;
	}
	public COMMA_list(): TerminalNode[] {
	    	return this.getTokens(SqlParser.COMMA);
	}
	public COMMA(i: number): TerminalNode {
		return this.getToken(SqlParser.COMMA, i);
	}
	public REQUIRE(): TerminalNode {
		return this.getToken(SqlParser.REQUIRE, 0);
	}
	public WITH(): TerminalNode {
		return this.getToken(SqlParser.WITH, 0);
	}
	public userPasswordOption_list(): UserPasswordOptionContext[] {
		return this.getTypedRuleContexts(UserPasswordOptionContext) as UserPasswordOptionContext[];
	}
	public userPasswordOption(i: number): UserPasswordOptionContext {
		return this.getTypedRuleContext(UserPasswordOptionContext, i) as UserPasswordOptionContext;
	}
	public userLockOption_list(): UserLockOptionContext[] {
		return this.getTypedRuleContexts(UserLockOptionContext) as UserLockOptionContext[];
	}
	public userLockOption(i: number): UserLockOptionContext {
		return this.getTypedRuleContext(UserLockOptionContext, i) as UserLockOptionContext;
	}
	public tlsOption_list(): TlsOptionContext[] {
		return this.getTypedRuleContexts(TlsOptionContext) as TlsOptionContext[];
	}
	public tlsOption(i: number): TlsOptionContext {
		return this.getTypedRuleContext(TlsOptionContext, i) as TlsOptionContext;
	}
	public NONE(): TerminalNode {
		return this.getToken(SqlParser.NONE, 0);
	}
	public userResourceOption_list(): UserResourceOptionContext[] {
		return this.getTypedRuleContexts(UserResourceOptionContext) as UserResourceOptionContext[];
	}
	public userResourceOption(i: number): UserResourceOptionContext {
		return this.getTypedRuleContext(UserResourceOptionContext, i) as UserResourceOptionContext;
	}
	public AND_list(): TerminalNode[] {
	    	return this.getTokens(SqlParser.AND);
	}
	public AND(i: number): TerminalNode {
		return this.getToken(SqlParser.AND, i);
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterCreateUserMysqlV57) {
	 		listener.enterCreateUserMysqlV57(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitCreateUserMysqlV57) {
	 		listener.exitCreateUserMysqlV57(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitCreateUserMysqlV57) {
			return visitor.visitCreateUserMysqlV57(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class CreateUserMysqlV56Context extends CreateUserContext {
	constructor(parser: SqlParser, ctx: CreateUserContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public CREATE(): TerminalNode {
		return this.getToken(SqlParser.CREATE, 0);
	}
	public USER(): TerminalNode {
		return this.getToken(SqlParser.USER, 0);
	}
	public userAuthOption_list(): UserAuthOptionContext[] {
		return this.getTypedRuleContexts(UserAuthOptionContext) as UserAuthOptionContext[];
	}
	public userAuthOption(i: number): UserAuthOptionContext {
		return this.getTypedRuleContext(UserAuthOptionContext, i) as UserAuthOptionContext;
	}
	public COMMA_list(): TerminalNode[] {
	    	return this.getTokens(SqlParser.COMMA);
	}
	public COMMA(i: number): TerminalNode {
		return this.getToken(SqlParser.COMMA, i);
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterCreateUserMysqlV56) {
	 		listener.enterCreateUserMysqlV56(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitCreateUserMysqlV56) {
	 		listener.exitCreateUserMysqlV56(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitCreateUserMysqlV56) {
			return visitor.visitCreateUserMysqlV56(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class DropUserContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public DROP(): TerminalNode {
		return this.getToken(SqlParser.DROP, 0);
	}
	public USER(): TerminalNode {
		return this.getToken(SqlParser.USER, 0);
	}
	public userName_list(): UserNameContext[] {
		return this.getTypedRuleContexts(UserNameContext) as UserNameContext[];
	}
	public userName(i: number): UserNameContext {
		return this.getTypedRuleContext(UserNameContext, i) as UserNameContext;
	}
	public ifExists(): IfExistsContext {
		return this.getTypedRuleContext(IfExistsContext, 0) as IfExistsContext;
	}
	public COMMA_list(): TerminalNode[] {
	    	return this.getTokens(SqlParser.COMMA);
	}
	public COMMA(i: number): TerminalNode {
		return this.getToken(SqlParser.COMMA, i);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_dropUser;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterDropUser) {
	 		listener.enterDropUser(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitDropUser) {
	 		listener.exitDropUser(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitDropUser) {
			return visitor.visitDropUser(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class GrantStatementContext extends ParserRuleContext {
	public _privilegeObject!: Token;
	public _tlsNone!: Token;
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public GRANT_list(): TerminalNode[] {
	    	return this.getTokens(SqlParser.GRANT);
	}
	public GRANT(i: number): TerminalNode {
		return this.getToken(SqlParser.GRANT, i);
	}
	public privelegeClause_list(): PrivelegeClauseContext[] {
		return this.getTypedRuleContexts(PrivelegeClauseContext) as PrivelegeClauseContext[];
	}
	public privelegeClause(i: number): PrivelegeClauseContext {
		return this.getTypedRuleContext(PrivelegeClauseContext, i) as PrivelegeClauseContext;
	}
	public ON(): TerminalNode {
		return this.getToken(SqlParser.ON, 0);
	}
	public privilegeLevel(): PrivilegeLevelContext {
		return this.getTypedRuleContext(PrivilegeLevelContext, 0) as PrivilegeLevelContext;
	}
	public TO(): TerminalNode {
		return this.getToken(SqlParser.TO, 0);
	}
	public userAuthOption_list(): UserAuthOptionContext[] {
		return this.getTypedRuleContexts(UserAuthOptionContext) as UserAuthOptionContext[];
	}
	public userAuthOption(i: number): UserAuthOptionContext {
		return this.getTypedRuleContext(UserAuthOptionContext, i) as UserAuthOptionContext;
	}
	public COMMA_list(): TerminalNode[] {
	    	return this.getTokens(SqlParser.COMMA);
	}
	public COMMA(i: number): TerminalNode {
		return this.getToken(SqlParser.COMMA, i);
	}
	public REQUIRE(): TerminalNode {
		return this.getToken(SqlParser.REQUIRE, 0);
	}
	public WITH(): TerminalNode {
		return this.getToken(SqlParser.WITH, 0);
	}
	public TABLE(): TerminalNode {
		return this.getToken(SqlParser.TABLE, 0);
	}
	public FUNCTION(): TerminalNode {
		return this.getToken(SqlParser.FUNCTION, 0);
	}
	public PROCEDURE(): TerminalNode {
		return this.getToken(SqlParser.PROCEDURE, 0);
	}
	public tlsOption_list(): TlsOptionContext[] {
		return this.getTypedRuleContexts(TlsOptionContext) as TlsOptionContext[];
	}
	public tlsOption(i: number): TlsOptionContext {
		return this.getTypedRuleContext(TlsOptionContext, i) as TlsOptionContext;
	}
	public NONE(): TerminalNode {
		return this.getToken(SqlParser.NONE, 0);
	}
	public OPTION_list(): TerminalNode[] {
	    	return this.getTokens(SqlParser.OPTION);
	}
	public OPTION(i: number): TerminalNode {
		return this.getToken(SqlParser.OPTION, i);
	}
	public userResourceOption_list(): UserResourceOptionContext[] {
		return this.getTypedRuleContexts(UserResourceOptionContext) as UserResourceOptionContext[];
	}
	public userResourceOption(i: number): UserResourceOptionContext {
		return this.getTypedRuleContext(UserResourceOptionContext, i) as UserResourceOptionContext;
	}
	public AND_list(): TerminalNode[] {
	    	return this.getTokens(SqlParser.AND);
	}
	public AND(i: number): TerminalNode {
		return this.getToken(SqlParser.AND, i);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_grantStatement;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterGrantStatement) {
	 		listener.enterGrantStatement(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitGrantStatement) {
	 		listener.exitGrantStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitGrantStatement) {
			return visitor.visitGrantStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class GrantProxyContext extends ParserRuleContext {
	public _fromFirst!: UserNameContext;
	public _toFirst!: UserNameContext;
	public _userName!: UserNameContext;
	public _toOther: UserNameContext[] = [];
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public GRANT_list(): TerminalNode[] {
	    	return this.getTokens(SqlParser.GRANT);
	}
	public GRANT(i: number): TerminalNode {
		return this.getToken(SqlParser.GRANT, i);
	}
	public PROXY(): TerminalNode {
		return this.getToken(SqlParser.PROXY, 0);
	}
	public ON(): TerminalNode {
		return this.getToken(SqlParser.ON, 0);
	}
	public TO(): TerminalNode {
		return this.getToken(SqlParser.TO, 0);
	}
	public userName_list(): UserNameContext[] {
		return this.getTypedRuleContexts(UserNameContext) as UserNameContext[];
	}
	public userName(i: number): UserNameContext {
		return this.getTypedRuleContext(UserNameContext, i) as UserNameContext;
	}
	public COMMA_list(): TerminalNode[] {
	    	return this.getTokens(SqlParser.COMMA);
	}
	public COMMA(i: number): TerminalNode {
		return this.getToken(SqlParser.COMMA, i);
	}
	public WITH(): TerminalNode {
		return this.getToken(SqlParser.WITH, 0);
	}
	public OPTION(): TerminalNode {
		return this.getToken(SqlParser.OPTION, 0);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_grantProxy;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterGrantProxy) {
	 		listener.enterGrantProxy(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitGrantProxy) {
	 		listener.exitGrantProxy(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitGrantProxy) {
			return visitor.visitGrantProxy(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class RenameUserContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public RENAME(): TerminalNode {
		return this.getToken(SqlParser.RENAME, 0);
	}
	public USER(): TerminalNode {
		return this.getToken(SqlParser.USER, 0);
	}
	public renameUserClause_list(): RenameUserClauseContext[] {
		return this.getTypedRuleContexts(RenameUserClauseContext) as RenameUserClauseContext[];
	}
	public renameUserClause(i: number): RenameUserClauseContext {
		return this.getTypedRuleContext(RenameUserClauseContext, i) as RenameUserClauseContext;
	}
	public COMMA_list(): TerminalNode[] {
	    	return this.getTokens(SqlParser.COMMA);
	}
	public COMMA(i: number): TerminalNode {
		return this.getToken(SqlParser.COMMA, i);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_renameUser;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterRenameUser) {
	 		listener.enterRenameUser(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitRenameUser) {
	 		listener.exitRenameUser(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitRenameUser) {
			return visitor.visitRenameUser(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class RevokeStatementContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_revokeStatement;
	}
	public copyFrom(ctx: RevokeStatementContext): void {
		super.copyFrom(ctx);
	}
}
export class DetailRevokeContext extends RevokeStatementContext {
	public _privilegeObject!: Token;
	constructor(parser: SqlParser, ctx: RevokeStatementContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public REVOKE(): TerminalNode {
		return this.getToken(SqlParser.REVOKE, 0);
	}
	public privelegeClause_list(): PrivelegeClauseContext[] {
		return this.getTypedRuleContexts(PrivelegeClauseContext) as PrivelegeClauseContext[];
	}
	public privelegeClause(i: number): PrivelegeClauseContext {
		return this.getTypedRuleContext(PrivelegeClauseContext, i) as PrivelegeClauseContext;
	}
	public ON(): TerminalNode {
		return this.getToken(SqlParser.ON, 0);
	}
	public privilegeLevel(): PrivilegeLevelContext {
		return this.getTypedRuleContext(PrivilegeLevelContext, 0) as PrivilegeLevelContext;
	}
	public FROM(): TerminalNode {
		return this.getToken(SqlParser.FROM, 0);
	}
	public userName_list(): UserNameContext[] {
		return this.getTypedRuleContexts(UserNameContext) as UserNameContext[];
	}
	public userName(i: number): UserNameContext {
		return this.getTypedRuleContext(UserNameContext, i) as UserNameContext;
	}
	public COMMA_list(): TerminalNode[] {
	    	return this.getTokens(SqlParser.COMMA);
	}
	public COMMA(i: number): TerminalNode {
		return this.getToken(SqlParser.COMMA, i);
	}
	public TABLE(): TerminalNode {
		return this.getToken(SqlParser.TABLE, 0);
	}
	public FUNCTION(): TerminalNode {
		return this.getToken(SqlParser.FUNCTION, 0);
	}
	public PROCEDURE(): TerminalNode {
		return this.getToken(SqlParser.PROCEDURE, 0);
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterDetailRevoke) {
	 		listener.enterDetailRevoke(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitDetailRevoke) {
	 		listener.exitDetailRevoke(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitDetailRevoke) {
			return visitor.visitDetailRevoke(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class ShortRevokeContext extends RevokeStatementContext {
	constructor(parser: SqlParser, ctx: RevokeStatementContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public REVOKE(): TerminalNode {
		return this.getToken(SqlParser.REVOKE, 0);
	}
	public ALL(): TerminalNode {
		return this.getToken(SqlParser.ALL, 0);
	}
	public COMMA_list(): TerminalNode[] {
	    	return this.getTokens(SqlParser.COMMA);
	}
	public COMMA(i: number): TerminalNode {
		return this.getToken(SqlParser.COMMA, i);
	}
	public GRANT(): TerminalNode {
		return this.getToken(SqlParser.GRANT, 0);
	}
	public OPTION(): TerminalNode {
		return this.getToken(SqlParser.OPTION, 0);
	}
	public FROM(): TerminalNode {
		return this.getToken(SqlParser.FROM, 0);
	}
	public userName_list(): UserNameContext[] {
		return this.getTypedRuleContexts(UserNameContext) as UserNameContext[];
	}
	public userName(i: number): UserNameContext {
		return this.getTypedRuleContext(UserNameContext, i) as UserNameContext;
	}
	public PRIVILEGES(): TerminalNode {
		return this.getToken(SqlParser.PRIVILEGES, 0);
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterShortRevoke) {
	 		listener.enterShortRevoke(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitShortRevoke) {
	 		listener.exitShortRevoke(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitShortRevoke) {
			return visitor.visitShortRevoke(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class RevokeProxyContext extends ParserRuleContext {
	public _onUser!: UserNameContext;
	public _fromFirst!: UserNameContext;
	public _userName!: UserNameContext;
	public _fromOther: UserNameContext[] = [];
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public REVOKE(): TerminalNode {
		return this.getToken(SqlParser.REVOKE, 0);
	}
	public PROXY(): TerminalNode {
		return this.getToken(SqlParser.PROXY, 0);
	}
	public ON(): TerminalNode {
		return this.getToken(SqlParser.ON, 0);
	}
	public FROM(): TerminalNode {
		return this.getToken(SqlParser.FROM, 0);
	}
	public userName_list(): UserNameContext[] {
		return this.getTypedRuleContexts(UserNameContext) as UserNameContext[];
	}
	public userName(i: number): UserNameContext {
		return this.getTypedRuleContext(UserNameContext, i) as UserNameContext;
	}
	public COMMA_list(): TerminalNode[] {
	    	return this.getTokens(SqlParser.COMMA);
	}
	public COMMA(i: number): TerminalNode {
		return this.getToken(SqlParser.COMMA, i);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_revokeProxy;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterRevokeProxy) {
	 		listener.enterRevokeProxy(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitRevokeProxy) {
	 		listener.exitRevokeProxy(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitRevokeProxy) {
			return visitor.visitRevokeProxy(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class SetPasswordStatementContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public SET(): TerminalNode {
		return this.getToken(SqlParser.SET, 0);
	}
	public PASSWORD(): TerminalNode {
		return this.getToken(SqlParser.PASSWORD, 0);
	}
	public EQUAL_SYMBOL(): TerminalNode {
		return this.getToken(SqlParser.EQUAL_SYMBOL, 0);
	}
	public passwordFunctionClause(): PasswordFunctionClauseContext {
		return this.getTypedRuleContext(PasswordFunctionClauseContext, 0) as PasswordFunctionClauseContext;
	}
	public STRING_LITERAL(): TerminalNode {
		return this.getToken(SqlParser.STRING_LITERAL, 0);
	}
	public FOR(): TerminalNode {
		return this.getToken(SqlParser.FOR, 0);
	}
	public userName(): UserNameContext {
		return this.getTypedRuleContext(UserNameContext, 0) as UserNameContext;
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_setPasswordStatement;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterSetPasswordStatement) {
	 		listener.enterSetPasswordStatement(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitSetPasswordStatement) {
	 		listener.exitSetPasswordStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitSetPasswordStatement) {
			return visitor.visitSetPasswordStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class UserSpecificationContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public userName(): UserNameContext {
		return this.getTypedRuleContext(UserNameContext, 0) as UserNameContext;
	}
	public userPasswordOption(): UserPasswordOptionContext {
		return this.getTypedRuleContext(UserPasswordOptionContext, 0) as UserPasswordOptionContext;
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_userSpecification;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterUserSpecification) {
	 		listener.enterUserSpecification(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitUserSpecification) {
	 		listener.exitUserSpecification(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitUserSpecification) {
			return visitor.visitUserSpecification(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class UserAuthOptionContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_userAuthOption;
	}
	public copyFrom(ctx: UserAuthOptionContext): void {
		super.copyFrom(ctx);
	}
}
export class SimpleAuthOptionContext extends UserAuthOptionContext {
	constructor(parser: SqlParser, ctx: UserAuthOptionContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public userName(): UserNameContext {
		return this.getTypedRuleContext(UserNameContext, 0) as UserNameContext;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterSimpleAuthOption) {
	 		listener.enterSimpleAuthOption(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitSimpleAuthOption) {
	 		listener.exitSimpleAuthOption(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitSimpleAuthOption) {
			return visitor.visitSimpleAuthOption(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class PasswordAuthOptionContext extends UserAuthOptionContext {
	public _hashed!: Token;
	constructor(parser: SqlParser, ctx: UserAuthOptionContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public userName(): UserNameContext {
		return this.getTypedRuleContext(UserNameContext, 0) as UserNameContext;
	}
	public IDENTIFIED(): TerminalNode {
		return this.getToken(SqlParser.IDENTIFIED, 0);
	}
	public BY(): TerminalNode {
		return this.getToken(SqlParser.BY, 0);
	}
	public PASSWORD(): TerminalNode {
		return this.getToken(SqlParser.PASSWORD, 0);
	}
	public STRING_LITERAL(): TerminalNode {
		return this.getToken(SqlParser.STRING_LITERAL, 0);
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterPasswordAuthOption) {
	 		listener.enterPasswordAuthOption(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitPasswordAuthOption) {
	 		listener.exitPasswordAuthOption(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitPasswordAuthOption) {
			return visitor.visitPasswordAuthOption(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class StringAuthOptionContext extends UserAuthOptionContext {
	constructor(parser: SqlParser, ctx: UserAuthOptionContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public userName(): UserNameContext {
		return this.getTypedRuleContext(UserNameContext, 0) as UserNameContext;
	}
	public IDENTIFIED(): TerminalNode {
		return this.getToken(SqlParser.IDENTIFIED, 0);
	}
	public BY(): TerminalNode {
		return this.getToken(SqlParser.BY, 0);
	}
	public STRING_LITERAL(): TerminalNode {
		return this.getToken(SqlParser.STRING_LITERAL, 0);
	}
	public WITH(): TerminalNode {
		return this.getToken(SqlParser.WITH, 0);
	}
	public authPlugin(): AuthPluginContext {
		return this.getTypedRuleContext(AuthPluginContext, 0) as AuthPluginContext;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterStringAuthOption) {
	 		listener.enterStringAuthOption(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitStringAuthOption) {
	 		listener.exitStringAuthOption(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitStringAuthOption) {
			return visitor.visitStringAuthOption(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class HashAuthOptionContext extends UserAuthOptionContext {
	constructor(parser: SqlParser, ctx: UserAuthOptionContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public userName(): UserNameContext {
		return this.getTypedRuleContext(UserNameContext, 0) as UserNameContext;
	}
	public IDENTIFIED(): TerminalNode {
		return this.getToken(SqlParser.IDENTIFIED, 0);
	}
	public WITH(): TerminalNode {
		return this.getToken(SqlParser.WITH, 0);
	}
	public authPlugin(): AuthPluginContext {
		return this.getTypedRuleContext(AuthPluginContext, 0) as AuthPluginContext;
	}
	public AS(): TerminalNode {
		return this.getToken(SqlParser.AS, 0);
	}
	public STRING_LITERAL(): TerminalNode {
		return this.getToken(SqlParser.STRING_LITERAL, 0);
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterHashAuthOption) {
	 		listener.enterHashAuthOption(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitHashAuthOption) {
	 		listener.exitHashAuthOption(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitHashAuthOption) {
			return visitor.visitHashAuthOption(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class TlsOptionContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public SSL(): TerminalNode {
		return this.getToken(SqlParser.SSL, 0);
	}
	public X509(): TerminalNode {
		return this.getToken(SqlParser.X509, 0);
	}
	public CIPHER(): TerminalNode {
		return this.getToken(SqlParser.CIPHER, 0);
	}
	public STRING_LITERAL(): TerminalNode {
		return this.getToken(SqlParser.STRING_LITERAL, 0);
	}
	public ISSUER(): TerminalNode {
		return this.getToken(SqlParser.ISSUER, 0);
	}
	public SUBJECT(): TerminalNode {
		return this.getToken(SqlParser.SUBJECT, 0);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_tlsOption;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterTlsOption) {
	 		listener.enterTlsOption(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitTlsOption) {
	 		listener.exitTlsOption(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitTlsOption) {
			return visitor.visitTlsOption(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class UserResourceOptionContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public MAX_QUERIES_PER_HOUR(): TerminalNode {
		return this.getToken(SqlParser.MAX_QUERIES_PER_HOUR, 0);
	}
	public decimalLiteral(): DecimalLiteralContext {
		return this.getTypedRuleContext(DecimalLiteralContext, 0) as DecimalLiteralContext;
	}
	public MAX_UPDATES_PER_HOUR(): TerminalNode {
		return this.getToken(SqlParser.MAX_UPDATES_PER_HOUR, 0);
	}
	public MAX_CONNECTIONS_PER_HOUR(): TerminalNode {
		return this.getToken(SqlParser.MAX_CONNECTIONS_PER_HOUR, 0);
	}
	public MAX_USER_CONNECTIONS(): TerminalNode {
		return this.getToken(SqlParser.MAX_USER_CONNECTIONS, 0);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_userResourceOption;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterUserResourceOption) {
	 		listener.enterUserResourceOption(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitUserResourceOption) {
	 		listener.exitUserResourceOption(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitUserResourceOption) {
			return visitor.visitUserResourceOption(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class UserPasswordOptionContext extends ParserRuleContext {
	public _expireType!: Token;
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public PASSWORD(): TerminalNode {
		return this.getToken(SqlParser.PASSWORD, 0);
	}
	public EXPIRE(): TerminalNode {
		return this.getToken(SqlParser.EXPIRE, 0);
	}
	public decimalLiteral(): DecimalLiteralContext {
		return this.getTypedRuleContext(DecimalLiteralContext, 0) as DecimalLiteralContext;
	}
	public DAY(): TerminalNode {
		return this.getToken(SqlParser.DAY, 0);
	}
	public DEFAULT(): TerminalNode {
		return this.getToken(SqlParser.DEFAULT, 0);
	}
	public NEVER(): TerminalNode {
		return this.getToken(SqlParser.NEVER, 0);
	}
	public INTERVAL(): TerminalNode {
		return this.getToken(SqlParser.INTERVAL, 0);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_userPasswordOption;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterUserPasswordOption) {
	 		listener.enterUserPasswordOption(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitUserPasswordOption) {
	 		listener.exitUserPasswordOption(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitUserPasswordOption) {
			return visitor.visitUserPasswordOption(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class UserLockOptionContext extends ParserRuleContext {
	public _lockType!: Token;
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public ACCOUNT(): TerminalNode {
		return this.getToken(SqlParser.ACCOUNT, 0);
	}
	public LOCK(): TerminalNode {
		return this.getToken(SqlParser.LOCK, 0);
	}
	public UNLOCK(): TerminalNode {
		return this.getToken(SqlParser.UNLOCK, 0);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_userLockOption;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterUserLockOption) {
	 		listener.enterUserLockOption(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitUserLockOption) {
	 		listener.exitUserLockOption(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitUserLockOption) {
			return visitor.visitUserLockOption(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class PrivelegeClauseContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public privilege(): PrivilegeContext {
		return this.getTypedRuleContext(PrivilegeContext, 0) as PrivilegeContext;
	}
	public LR_BRACKET(): TerminalNode {
		return this.getToken(SqlParser.LR_BRACKET, 0);
	}
	public uidList(): UidListContext {
		return this.getTypedRuleContext(UidListContext, 0) as UidListContext;
	}
	public RR_BRACKET(): TerminalNode {
		return this.getToken(SqlParser.RR_BRACKET, 0);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_privelegeClause;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterPrivelegeClause) {
	 		listener.enterPrivelegeClause(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitPrivelegeClause) {
	 		listener.exitPrivelegeClause(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitPrivelegeClause) {
			return visitor.visitPrivelegeClause(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class PrivilegeContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public ALL(): TerminalNode {
		return this.getToken(SqlParser.ALL, 0);
	}
	public PRIVILEGES(): TerminalNode {
		return this.getToken(SqlParser.PRIVILEGES, 0);
	}
	public ALTER(): TerminalNode {
		return this.getToken(SqlParser.ALTER, 0);
	}
	public ROUTINE(): TerminalNode {
		return this.getToken(SqlParser.ROUTINE, 0);
	}
	public CREATE(): TerminalNode {
		return this.getToken(SqlParser.CREATE, 0);
	}
	public TEMPORARY(): TerminalNode {
		return this.getToken(SqlParser.TEMPORARY, 0);
	}
	public TABLES(): TerminalNode {
		return this.getToken(SqlParser.TABLES, 0);
	}
	public VIEW(): TerminalNode {
		return this.getToken(SqlParser.VIEW, 0);
	}
	public USER(): TerminalNode {
		return this.getToken(SqlParser.USER, 0);
	}
	public TABLESPACE(): TerminalNode {
		return this.getToken(SqlParser.TABLESPACE, 0);
	}
	public ROLE(): TerminalNode {
		return this.getToken(SqlParser.ROLE, 0);
	}
	public DELETE(): TerminalNode {
		return this.getToken(SqlParser.DELETE, 0);
	}
	public DROP(): TerminalNode {
		return this.getToken(SqlParser.DROP, 0);
	}
	public EVENT(): TerminalNode {
		return this.getToken(SqlParser.EVENT, 0);
	}
	public EXECUTE(): TerminalNode {
		return this.getToken(SqlParser.EXECUTE, 0);
	}
	public FILE(): TerminalNode {
		return this.getToken(SqlParser.FILE, 0);
	}
	public GRANT(): TerminalNode {
		return this.getToken(SqlParser.GRANT, 0);
	}
	public OPTION(): TerminalNode {
		return this.getToken(SqlParser.OPTION, 0);
	}
	public INDEX(): TerminalNode {
		return this.getToken(SqlParser.INDEX, 0);
	}
	public INSERT(): TerminalNode {
		return this.getToken(SqlParser.INSERT, 0);
	}
	public LOCK(): TerminalNode {
		return this.getToken(SqlParser.LOCK, 0);
	}
	public PROCESS(): TerminalNode {
		return this.getToken(SqlParser.PROCESS, 0);
	}
	public PROXY(): TerminalNode {
		return this.getToken(SqlParser.PROXY, 0);
	}
	public REFERENCES(): TerminalNode {
		return this.getToken(SqlParser.REFERENCES, 0);
	}
	public RELOAD(): TerminalNode {
		return this.getToken(SqlParser.RELOAD, 0);
	}
	public REPLICATION(): TerminalNode {
		return this.getToken(SqlParser.REPLICATION, 0);
	}
	public CLIENT(): TerminalNode {
		return this.getToken(SqlParser.CLIENT, 0);
	}
	public SLAVE(): TerminalNode {
		return this.getToken(SqlParser.SLAVE, 0);
	}
	public SELECT(): TerminalNode {
		return this.getToken(SqlParser.SELECT, 0);
	}
	public SHOW(): TerminalNode {
		return this.getToken(SqlParser.SHOW, 0);
	}
	public DATABASES(): TerminalNode {
		return this.getToken(SqlParser.DATABASES, 0);
	}
	public SHUTDOWN(): TerminalNode {
		return this.getToken(SqlParser.SHUTDOWN, 0);
	}
	public SUPER(): TerminalNode {
		return this.getToken(SqlParser.SUPER, 0);
	}
	public TRIGGER(): TerminalNode {
		return this.getToken(SqlParser.TRIGGER, 0);
	}
	public UPDATE(): TerminalNode {
		return this.getToken(SqlParser.UPDATE, 0);
	}
	public USAGE(): TerminalNode {
		return this.getToken(SqlParser.USAGE, 0);
	}
	public AUDIT_ADMIN(): TerminalNode {
		return this.getToken(SqlParser.AUDIT_ADMIN, 0);
	}
	public BACKUP_ADMIN(): TerminalNode {
		return this.getToken(SqlParser.BACKUP_ADMIN, 0);
	}
	public BINLOG_ADMIN(): TerminalNode {
		return this.getToken(SqlParser.BINLOG_ADMIN, 0);
	}
	public BINLOG_ENCRYPTION_ADMIN(): TerminalNode {
		return this.getToken(SqlParser.BINLOG_ENCRYPTION_ADMIN, 0);
	}
	public CLONE_ADMIN(): TerminalNode {
		return this.getToken(SqlParser.CLONE_ADMIN, 0);
	}
	public CONNECTION_ADMIN(): TerminalNode {
		return this.getToken(SqlParser.CONNECTION_ADMIN, 0);
	}
	public ENCRYPTION_KEY_ADMIN(): TerminalNode {
		return this.getToken(SqlParser.ENCRYPTION_KEY_ADMIN, 0);
	}
	public FIREWALL_ADMIN(): TerminalNode {
		return this.getToken(SqlParser.FIREWALL_ADMIN, 0);
	}
	public FIREWALL_USER(): TerminalNode {
		return this.getToken(SqlParser.FIREWALL_USER, 0);
	}
	public GROUP_REPLICATION_ADMIN(): TerminalNode {
		return this.getToken(SqlParser.GROUP_REPLICATION_ADMIN, 0);
	}
	public INNODB_REDO_LOG_ARCHIVE(): TerminalNode {
		return this.getToken(SqlParser.INNODB_REDO_LOG_ARCHIVE, 0);
	}
	public NDB_STORED_USER(): TerminalNode {
		return this.getToken(SqlParser.NDB_STORED_USER, 0);
	}
	public PERSIST_RO_VARIABLES_ADMIN(): TerminalNode {
		return this.getToken(SqlParser.PERSIST_RO_VARIABLES_ADMIN, 0);
	}
	public REPLICATION_APPLIER(): TerminalNode {
		return this.getToken(SqlParser.REPLICATION_APPLIER, 0);
	}
	public REPLICATION_SLAVE_ADMIN(): TerminalNode {
		return this.getToken(SqlParser.REPLICATION_SLAVE_ADMIN, 0);
	}
	public RESOURCE_GROUP_ADMIN(): TerminalNode {
		return this.getToken(SqlParser.RESOURCE_GROUP_ADMIN, 0);
	}
	public RESOURCE_GROUP_USER(): TerminalNode {
		return this.getToken(SqlParser.RESOURCE_GROUP_USER, 0);
	}
	public ROLE_ADMIN(): TerminalNode {
		return this.getToken(SqlParser.ROLE_ADMIN, 0);
	}
	public SESSION_VARIABLES_ADMIN(): TerminalNode {
		return this.getToken(SqlParser.SESSION_VARIABLES_ADMIN, 0);
	}
	public SET_USER_ID(): TerminalNode {
		return this.getToken(SqlParser.SET_USER_ID, 0);
	}
	public SHOW_ROUTINE(): TerminalNode {
		return this.getToken(SqlParser.SHOW_ROUTINE, 0);
	}
	public SYSTEM_VARIABLES_ADMIN(): TerminalNode {
		return this.getToken(SqlParser.SYSTEM_VARIABLES_ADMIN, 0);
	}
	public TABLE_ENCRYPTION_ADMIN(): TerminalNode {
		return this.getToken(SqlParser.TABLE_ENCRYPTION_ADMIN, 0);
	}
	public VERSION_TOKEN_ADMIN(): TerminalNode {
		return this.getToken(SqlParser.VERSION_TOKEN_ADMIN, 0);
	}
	public XA_RECOVER_ADMIN(): TerminalNode {
		return this.getToken(SqlParser.XA_RECOVER_ADMIN, 0);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_privilege;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterPrivilege) {
	 		listener.enterPrivilege(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitPrivilege) {
	 		listener.exitPrivilege(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitPrivilege) {
			return visitor.visitPrivilege(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class PrivilegeLevelContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_privilegeLevel;
	}
	public copyFrom(ctx: PrivilegeLevelContext): void {
		super.copyFrom(ctx);
	}
}
export class DefiniteSchemaPrivLevelContext extends PrivilegeLevelContext {
	constructor(parser: SqlParser, ctx: PrivilegeLevelContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public uid(): UidContext {
		return this.getTypedRuleContext(UidContext, 0) as UidContext;
	}
	public DOT(): TerminalNode {
		return this.getToken(SqlParser.DOT, 0);
	}
	public STAR(): TerminalNode {
		return this.getToken(SqlParser.STAR, 0);
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterDefiniteSchemaPrivLevel) {
	 		listener.enterDefiniteSchemaPrivLevel(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitDefiniteSchemaPrivLevel) {
	 		listener.exitDefiniteSchemaPrivLevel(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitDefiniteSchemaPrivLevel) {
			return visitor.visitDefiniteSchemaPrivLevel(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class DefiniteFullTablePrivLevel2Context extends PrivilegeLevelContext {
	constructor(parser: SqlParser, ctx: PrivilegeLevelContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public uid(): UidContext {
		return this.getTypedRuleContext(UidContext, 0) as UidContext;
	}
	public dottedId(): DottedIdContext {
		return this.getTypedRuleContext(DottedIdContext, 0) as DottedIdContext;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterDefiniteFullTablePrivLevel2) {
	 		listener.enterDefiniteFullTablePrivLevel2(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitDefiniteFullTablePrivLevel2) {
	 		listener.exitDefiniteFullTablePrivLevel2(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitDefiniteFullTablePrivLevel2) {
			return visitor.visitDefiniteFullTablePrivLevel2(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class DefiniteFullTablePrivLevelContext extends PrivilegeLevelContext {
	constructor(parser: SqlParser, ctx: PrivilegeLevelContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public uid_list(): UidContext[] {
		return this.getTypedRuleContexts(UidContext) as UidContext[];
	}
	public uid(i: number): UidContext {
		return this.getTypedRuleContext(UidContext, i) as UidContext;
	}
	public DOT(): TerminalNode {
		return this.getToken(SqlParser.DOT, 0);
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterDefiniteFullTablePrivLevel) {
	 		listener.enterDefiniteFullTablePrivLevel(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitDefiniteFullTablePrivLevel) {
	 		listener.exitDefiniteFullTablePrivLevel(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitDefiniteFullTablePrivLevel) {
			return visitor.visitDefiniteFullTablePrivLevel(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class GlobalPrivLevelContext extends PrivilegeLevelContext {
	constructor(parser: SqlParser, ctx: PrivilegeLevelContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public STAR_list(): TerminalNode[] {
	    	return this.getTokens(SqlParser.STAR);
	}
	public STAR(i: number): TerminalNode {
		return this.getToken(SqlParser.STAR, i);
	}
	public DOT(): TerminalNode {
		return this.getToken(SqlParser.DOT, 0);
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterGlobalPrivLevel) {
	 		listener.enterGlobalPrivLevel(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitGlobalPrivLevel) {
	 		listener.exitGlobalPrivLevel(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitGlobalPrivLevel) {
			return visitor.visitGlobalPrivLevel(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class DefiniteTablePrivLevelContext extends PrivilegeLevelContext {
	constructor(parser: SqlParser, ctx: PrivilegeLevelContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public uid(): UidContext {
		return this.getTypedRuleContext(UidContext, 0) as UidContext;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterDefiniteTablePrivLevel) {
	 		listener.enterDefiniteTablePrivLevel(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitDefiniteTablePrivLevel) {
	 		listener.exitDefiniteTablePrivLevel(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitDefiniteTablePrivLevel) {
			return visitor.visitDefiniteTablePrivLevel(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class CurrentSchemaPriviLevelContext extends PrivilegeLevelContext {
	constructor(parser: SqlParser, ctx: PrivilegeLevelContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public STAR(): TerminalNode {
		return this.getToken(SqlParser.STAR, 0);
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterCurrentSchemaPriviLevel) {
	 		listener.enterCurrentSchemaPriviLevel(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitCurrentSchemaPriviLevel) {
	 		listener.exitCurrentSchemaPriviLevel(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitCurrentSchemaPriviLevel) {
			return visitor.visitCurrentSchemaPriviLevel(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class RenameUserClauseContext extends ParserRuleContext {
	public _fromFirst!: UserNameContext;
	public _toFirst!: UserNameContext;
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public TO(): TerminalNode {
		return this.getToken(SqlParser.TO, 0);
	}
	public userName_list(): UserNameContext[] {
		return this.getTypedRuleContexts(UserNameContext) as UserNameContext[];
	}
	public userName(i: number): UserNameContext {
		return this.getTypedRuleContext(UserNameContext, i) as UserNameContext;
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_renameUserClause;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterRenameUserClause) {
	 		listener.enterRenameUserClause(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitRenameUserClause) {
	 		listener.exitRenameUserClause(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitRenameUserClause) {
			return visitor.visitRenameUserClause(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class AnalyzeTableContext extends ParserRuleContext {
	public _actionOption!: Token;
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public ANALYZE(): TerminalNode {
		return this.getToken(SqlParser.ANALYZE, 0);
	}
	public TABLE(): TerminalNode {
		return this.getToken(SqlParser.TABLE, 0);
	}
	public tables(): TablesContext {
		return this.getTypedRuleContext(TablesContext, 0) as TablesContext;
	}
	public NO_WRITE_TO_BINLOG(): TerminalNode {
		return this.getToken(SqlParser.NO_WRITE_TO_BINLOG, 0);
	}
	public LOCAL(): TerminalNode {
		return this.getToken(SqlParser.LOCAL, 0);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_analyzeTable;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterAnalyzeTable) {
	 		listener.enterAnalyzeTable(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitAnalyzeTable) {
	 		listener.exitAnalyzeTable(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitAnalyzeTable) {
			return visitor.visitAnalyzeTable(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class CheckTableContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public CHECK(): TerminalNode {
		return this.getToken(SqlParser.CHECK, 0);
	}
	public TABLE(): TerminalNode {
		return this.getToken(SqlParser.TABLE, 0);
	}
	public tables(): TablesContext {
		return this.getTypedRuleContext(TablesContext, 0) as TablesContext;
	}
	public checkTableOption_list(): CheckTableOptionContext[] {
		return this.getTypedRuleContexts(CheckTableOptionContext) as CheckTableOptionContext[];
	}
	public checkTableOption(i: number): CheckTableOptionContext {
		return this.getTypedRuleContext(CheckTableOptionContext, i) as CheckTableOptionContext;
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_checkTable;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterCheckTable) {
	 		listener.enterCheckTable(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitCheckTable) {
	 		listener.exitCheckTable(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitCheckTable) {
			return visitor.visitCheckTable(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ChecksumTableContext extends ParserRuleContext {
	public _actionOption!: Token;
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public CHECKSUM(): TerminalNode {
		return this.getToken(SqlParser.CHECKSUM, 0);
	}
	public TABLE(): TerminalNode {
		return this.getToken(SqlParser.TABLE, 0);
	}
	public tables(): TablesContext {
		return this.getTypedRuleContext(TablesContext, 0) as TablesContext;
	}
	public QUICK(): TerminalNode {
		return this.getToken(SqlParser.QUICK, 0);
	}
	public EXTENDED(): TerminalNode {
		return this.getToken(SqlParser.EXTENDED, 0);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_checksumTable;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterChecksumTable) {
	 		listener.enterChecksumTable(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitChecksumTable) {
	 		listener.exitChecksumTable(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitChecksumTable) {
			return visitor.visitChecksumTable(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class OptimizeTableContext extends ParserRuleContext {
	public _actionOption!: Token;
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public OPTIMIZE(): TerminalNode {
		return this.getToken(SqlParser.OPTIMIZE, 0);
	}
	public TABLE(): TerminalNode {
		return this.getToken(SqlParser.TABLE, 0);
	}
	public tables(): TablesContext {
		return this.getTypedRuleContext(TablesContext, 0) as TablesContext;
	}
	public NO_WRITE_TO_BINLOG(): TerminalNode {
		return this.getToken(SqlParser.NO_WRITE_TO_BINLOG, 0);
	}
	public LOCAL(): TerminalNode {
		return this.getToken(SqlParser.LOCAL, 0);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_optimizeTable;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterOptimizeTable) {
	 		listener.enterOptimizeTable(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitOptimizeTable) {
	 		listener.exitOptimizeTable(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitOptimizeTable) {
			return visitor.visitOptimizeTable(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class RepairTableContext extends ParserRuleContext {
	public _actionOption!: Token;
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public REPAIR(): TerminalNode {
		return this.getToken(SqlParser.REPAIR, 0);
	}
	public TABLE(): TerminalNode {
		return this.getToken(SqlParser.TABLE, 0);
	}
	public tables(): TablesContext {
		return this.getTypedRuleContext(TablesContext, 0) as TablesContext;
	}
	public QUICK(): TerminalNode {
		return this.getToken(SqlParser.QUICK, 0);
	}
	public EXTENDED(): TerminalNode {
		return this.getToken(SqlParser.EXTENDED, 0);
	}
	public USE_FRM(): TerminalNode {
		return this.getToken(SqlParser.USE_FRM, 0);
	}
	public NO_WRITE_TO_BINLOG(): TerminalNode {
		return this.getToken(SqlParser.NO_WRITE_TO_BINLOG, 0);
	}
	public LOCAL(): TerminalNode {
		return this.getToken(SqlParser.LOCAL, 0);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_repairTable;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterRepairTable) {
	 		listener.enterRepairTable(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitRepairTable) {
	 		listener.exitRepairTable(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitRepairTable) {
			return visitor.visitRepairTable(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class CheckTableOptionContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public FOR(): TerminalNode {
		return this.getToken(SqlParser.FOR, 0);
	}
	public UPGRADE(): TerminalNode {
		return this.getToken(SqlParser.UPGRADE, 0);
	}
	public QUICK(): TerminalNode {
		return this.getToken(SqlParser.QUICK, 0);
	}
	public FAST(): TerminalNode {
		return this.getToken(SqlParser.FAST, 0);
	}
	public MEDIUM(): TerminalNode {
		return this.getToken(SqlParser.MEDIUM, 0);
	}
	public EXTENDED(): TerminalNode {
		return this.getToken(SqlParser.EXTENDED, 0);
	}
	public CHANGED(): TerminalNode {
		return this.getToken(SqlParser.CHANGED, 0);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_checkTableOption;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterCheckTableOption) {
	 		listener.enterCheckTableOption(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitCheckTableOption) {
	 		listener.exitCheckTableOption(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitCheckTableOption) {
			return visitor.visitCheckTableOption(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class CreateUdfunctionContext extends ParserRuleContext {
	public _returnType!: Token;
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public CREATE(): TerminalNode {
		return this.getToken(SqlParser.CREATE, 0);
	}
	public FUNCTION(): TerminalNode {
		return this.getToken(SqlParser.FUNCTION, 0);
	}
	public uid(): UidContext {
		return this.getTypedRuleContext(UidContext, 0) as UidContext;
	}
	public RETURNS(): TerminalNode {
		return this.getToken(SqlParser.RETURNS, 0);
	}
	public SONAME(): TerminalNode {
		return this.getToken(SqlParser.SONAME, 0);
	}
	public STRING_LITERAL(): TerminalNode {
		return this.getToken(SqlParser.STRING_LITERAL, 0);
	}
	public STRING(): TerminalNode {
		return this.getToken(SqlParser.STRING, 0);
	}
	public INTEGER(): TerminalNode {
		return this.getToken(SqlParser.INTEGER, 0);
	}
	public REAL(): TerminalNode {
		return this.getToken(SqlParser.REAL, 0);
	}
	public DECIMAL(): TerminalNode {
		return this.getToken(SqlParser.DECIMAL, 0);
	}
	public AGGREGATE(): TerminalNode {
		return this.getToken(SqlParser.AGGREGATE, 0);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_createUdfunction;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterCreateUdfunction) {
	 		listener.enterCreateUdfunction(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitCreateUdfunction) {
	 		listener.exitCreateUdfunction(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitCreateUdfunction) {
			return visitor.visitCreateUdfunction(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class InstallPluginContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public INSTALL(): TerminalNode {
		return this.getToken(SqlParser.INSTALL, 0);
	}
	public PLUGIN(): TerminalNode {
		return this.getToken(SqlParser.PLUGIN, 0);
	}
	public uid(): UidContext {
		return this.getTypedRuleContext(UidContext, 0) as UidContext;
	}
	public SONAME(): TerminalNode {
		return this.getToken(SqlParser.SONAME, 0);
	}
	public STRING_LITERAL(): TerminalNode {
		return this.getToken(SqlParser.STRING_LITERAL, 0);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_installPlugin;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterInstallPlugin) {
	 		listener.enterInstallPlugin(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitInstallPlugin) {
	 		listener.exitInstallPlugin(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitInstallPlugin) {
			return visitor.visitInstallPlugin(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class UninstallPluginContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public UNINSTALL(): TerminalNode {
		return this.getToken(SqlParser.UNINSTALL, 0);
	}
	public PLUGIN(): TerminalNode {
		return this.getToken(SqlParser.PLUGIN, 0);
	}
	public uid(): UidContext {
		return this.getTypedRuleContext(UidContext, 0) as UidContext;
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_uninstallPlugin;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterUninstallPlugin) {
	 		listener.enterUninstallPlugin(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitUninstallPlugin) {
	 		listener.exitUninstallPlugin(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitUninstallPlugin) {
			return visitor.visitUninstallPlugin(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class SetStatementContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_setStatement;
	}
	public copyFrom(ctx: SetStatementContext): void {
		super.copyFrom(ctx);
	}
}
export class SetTransactionContext extends SetStatementContext {
	constructor(parser: SqlParser, ctx: SetStatementContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public setTransactionStatement(): SetTransactionStatementContext {
		return this.getTypedRuleContext(SetTransactionStatementContext, 0) as SetTransactionStatementContext;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterSetTransaction) {
	 		listener.enterSetTransaction(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitSetTransaction) {
	 		listener.exitSetTransaction(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitSetTransaction) {
			return visitor.visitSetTransaction(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class SetCharsetContext extends SetStatementContext {
	constructor(parser: SqlParser, ctx: SetStatementContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public SET_list(): TerminalNode[] {
	    	return this.getTokens(SqlParser.SET);
	}
	public SET(i: number): TerminalNode {
		return this.getToken(SqlParser.SET, i);
	}
	public CHARACTER(): TerminalNode {
		return this.getToken(SqlParser.CHARACTER, 0);
	}
	public CHARSET(): TerminalNode {
		return this.getToken(SqlParser.CHARSET, 0);
	}
	public charsetName(): CharsetNameContext {
		return this.getTypedRuleContext(CharsetNameContext, 0) as CharsetNameContext;
	}
	public DEFAULT(): TerminalNode {
		return this.getToken(SqlParser.DEFAULT, 0);
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterSetCharset) {
	 		listener.enterSetCharset(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitSetCharset) {
	 		listener.exitSetCharset(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitSetCharset) {
			return visitor.visitSetCharset(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class SetNamesContext extends SetStatementContext {
	constructor(parser: SqlParser, ctx: SetStatementContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public SET(): TerminalNode {
		return this.getToken(SqlParser.SET, 0);
	}
	public NAMES(): TerminalNode {
		return this.getToken(SqlParser.NAMES, 0);
	}
	public charsetName(): CharsetNameContext {
		return this.getTypedRuleContext(CharsetNameContext, 0) as CharsetNameContext;
	}
	public DEFAULT(): TerminalNode {
		return this.getToken(SqlParser.DEFAULT, 0);
	}
	public COLLATE(): TerminalNode {
		return this.getToken(SqlParser.COLLATE, 0);
	}
	public collationName(): CollationNameContext {
		return this.getTypedRuleContext(CollationNameContext, 0) as CollationNameContext;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterSetNames) {
	 		listener.enterSetNames(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitSetNames) {
	 		listener.exitSetNames(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitSetNames) {
			return visitor.visitSetNames(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class SetPasswordContext extends SetStatementContext {
	constructor(parser: SqlParser, ctx: SetStatementContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public setPasswordStatement(): SetPasswordStatementContext {
		return this.getTypedRuleContext(SetPasswordStatementContext, 0) as SetPasswordStatementContext;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterSetPassword) {
	 		listener.enterSetPassword(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitSetPassword) {
	 		listener.exitSetPassword(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitSetPassword) {
			return visitor.visitSetPassword(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class SetAutocommitContext extends SetStatementContext {
	constructor(parser: SqlParser, ctx: SetStatementContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public setAutocommitStatement(): SetAutocommitStatementContext {
		return this.getTypedRuleContext(SetAutocommitStatementContext, 0) as SetAutocommitStatementContext;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterSetAutocommit) {
	 		listener.enterSetAutocommit(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitSetAutocommit) {
	 		listener.exitSetAutocommit(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitSetAutocommit) {
			return visitor.visitSetAutocommit(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class SetNewValueInsideTriggerContext extends SetStatementContext {
	constructor(parser: SqlParser, ctx: SetStatementContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public SET(): TerminalNode {
		return this.getToken(SqlParser.SET, 0);
	}
	public fullId_list(): FullIdContext[] {
		return this.getTypedRuleContexts(FullIdContext) as FullIdContext[];
	}
	public fullId(i: number): FullIdContext {
		return this.getTypedRuleContext(FullIdContext, i) as FullIdContext;
	}
	public expression_list(): ExpressionContext[] {
		return this.getTypedRuleContexts(ExpressionContext) as ExpressionContext[];
	}
	public expression(i: number): ExpressionContext {
		return this.getTypedRuleContext(ExpressionContext, i) as ExpressionContext;
	}
	public EQUAL_SYMBOL_list(): TerminalNode[] {
	    	return this.getTokens(SqlParser.EQUAL_SYMBOL);
	}
	public EQUAL_SYMBOL(i: number): TerminalNode {
		return this.getToken(SqlParser.EQUAL_SYMBOL, i);
	}
	public VAR_ASSIGN_list(): TerminalNode[] {
	    	return this.getTokens(SqlParser.VAR_ASSIGN);
	}
	public VAR_ASSIGN(i: number): TerminalNode {
		return this.getToken(SqlParser.VAR_ASSIGN, i);
	}
	public COMMA_list(): TerminalNode[] {
	    	return this.getTokens(SqlParser.COMMA);
	}
	public COMMA(i: number): TerminalNode {
		return this.getToken(SqlParser.COMMA, i);
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterSetNewValueInsideTrigger) {
	 		listener.enterSetNewValueInsideTrigger(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitSetNewValueInsideTrigger) {
	 		listener.exitSetNewValueInsideTrigger(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitSetNewValueInsideTrigger) {
			return visitor.visitSetNewValueInsideTrigger(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class SetVariableContext extends SetStatementContext {
	constructor(parser: SqlParser, ctx: SetStatementContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public SET(): TerminalNode {
		return this.getToken(SqlParser.SET, 0);
	}
	public variableClause_list(): VariableClauseContext[] {
		return this.getTypedRuleContexts(VariableClauseContext) as VariableClauseContext[];
	}
	public variableClause(i: number): VariableClauseContext {
		return this.getTypedRuleContext(VariableClauseContext, i) as VariableClauseContext;
	}
	public expression_list(): ExpressionContext[] {
		return this.getTypedRuleContexts(ExpressionContext) as ExpressionContext[];
	}
	public expression(i: number): ExpressionContext {
		return this.getTypedRuleContext(ExpressionContext, i) as ExpressionContext;
	}
	public EQUAL_SYMBOL_list(): TerminalNode[] {
	    	return this.getTokens(SqlParser.EQUAL_SYMBOL);
	}
	public EQUAL_SYMBOL(i: number): TerminalNode {
		return this.getToken(SqlParser.EQUAL_SYMBOL, i);
	}
	public VAR_ASSIGN_list(): TerminalNode[] {
	    	return this.getTokens(SqlParser.VAR_ASSIGN);
	}
	public VAR_ASSIGN(i: number): TerminalNode {
		return this.getToken(SqlParser.VAR_ASSIGN, i);
	}
	public COMMA_list(): TerminalNode[] {
	    	return this.getTokens(SqlParser.COMMA);
	}
	public COMMA(i: number): TerminalNode {
		return this.getToken(SqlParser.COMMA, i);
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterSetVariable) {
	 		listener.enterSetVariable(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitSetVariable) {
	 		listener.exitSetVariable(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitSetVariable) {
			return visitor.visitSetVariable(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ShowStatementContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_showStatement;
	}
	public copyFrom(ctx: ShowStatementContext): void {
		super.copyFrom(ctx);
	}
}
export class ShowOpenTablesContext extends ShowStatementContext {
	public _schemaFormat!: Token;
	constructor(parser: SqlParser, ctx: ShowStatementContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public SHOW(): TerminalNode {
		return this.getToken(SqlParser.SHOW, 0);
	}
	public OPEN(): TerminalNode {
		return this.getToken(SqlParser.OPEN, 0);
	}
	public TABLES(): TerminalNode {
		return this.getToken(SqlParser.TABLES, 0);
	}
	public uid(): UidContext {
		return this.getTypedRuleContext(UidContext, 0) as UidContext;
	}
	public showFilter(): ShowFilterContext {
		return this.getTypedRuleContext(ShowFilterContext, 0) as ShowFilterContext;
	}
	public FROM(): TerminalNode {
		return this.getToken(SqlParser.FROM, 0);
	}
	public IN(): TerminalNode {
		return this.getToken(SqlParser.IN, 0);
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterShowOpenTables) {
	 		listener.enterShowOpenTables(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitShowOpenTables) {
	 		listener.exitShowOpenTables(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitShowOpenTables) {
			return visitor.visitShowOpenTables(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class ShowGlobalInfoContext extends ShowStatementContext {
	constructor(parser: SqlParser, ctx: ShowStatementContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public SHOW(): TerminalNode {
		return this.getToken(SqlParser.SHOW, 0);
	}
	public showGlobalInfoClause(): ShowGlobalInfoClauseContext {
		return this.getTypedRuleContext(ShowGlobalInfoClauseContext, 0) as ShowGlobalInfoClauseContext;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterShowGlobalInfo) {
	 		listener.enterShowGlobalInfo(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitShowGlobalInfo) {
	 		listener.exitShowGlobalInfo(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitShowGlobalInfo) {
			return visitor.visitShowGlobalInfo(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class ShowCreateFullIdObjectContext extends ShowStatementContext {
	public _namedEntity!: Token;
	constructor(parser: SqlParser, ctx: ShowStatementContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public SHOW(): TerminalNode {
		return this.getToken(SqlParser.SHOW, 0);
	}
	public CREATE(): TerminalNode {
		return this.getToken(SqlParser.CREATE, 0);
	}
	public fullId(): FullIdContext {
		return this.getTypedRuleContext(FullIdContext, 0) as FullIdContext;
	}
	public EVENT(): TerminalNode {
		return this.getToken(SqlParser.EVENT, 0);
	}
	public FUNCTION(): TerminalNode {
		return this.getToken(SqlParser.FUNCTION, 0);
	}
	public PROCEDURE(): TerminalNode {
		return this.getToken(SqlParser.PROCEDURE, 0);
	}
	public TABLE(): TerminalNode {
		return this.getToken(SqlParser.TABLE, 0);
	}
	public TRIGGER(): TerminalNode {
		return this.getToken(SqlParser.TRIGGER, 0);
	}
	public VIEW(): TerminalNode {
		return this.getToken(SqlParser.VIEW, 0);
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterShowCreateFullIdObject) {
	 		listener.enterShowCreateFullIdObject(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitShowCreateFullIdObject) {
	 		listener.exitShowCreateFullIdObject(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitShowCreateFullIdObject) {
			return visitor.visitShowCreateFullIdObject(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class ShowCreateUserContext extends ShowStatementContext {
	constructor(parser: SqlParser, ctx: ShowStatementContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public SHOW(): TerminalNode {
		return this.getToken(SqlParser.SHOW, 0);
	}
	public CREATE(): TerminalNode {
		return this.getToken(SqlParser.CREATE, 0);
	}
	public USER(): TerminalNode {
		return this.getToken(SqlParser.USER, 0);
	}
	public userName(): UserNameContext {
		return this.getTypedRuleContext(UserNameContext, 0) as UserNameContext;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterShowCreateUser) {
	 		listener.enterShowCreateUser(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitShowCreateUser) {
	 		listener.exitShowCreateUser(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitShowCreateUser) {
			return visitor.visitShowCreateUser(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class ShowErrorsContext extends ShowStatementContext {
	public _errorFormat!: Token;
	public _offset!: DecimalLiteralContext;
	public _rowCount!: DecimalLiteralContext;
	constructor(parser: SqlParser, ctx: ShowStatementContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public SHOW(): TerminalNode {
		return this.getToken(SqlParser.SHOW, 0);
	}
	public ERRORS(): TerminalNode {
		return this.getToken(SqlParser.ERRORS, 0);
	}
	public WARNINGS(): TerminalNode {
		return this.getToken(SqlParser.WARNINGS, 0);
	}
	public LIMIT(): TerminalNode {
		return this.getToken(SqlParser.LIMIT, 0);
	}
	public decimalLiteral_list(): DecimalLiteralContext[] {
		return this.getTypedRuleContexts(DecimalLiteralContext) as DecimalLiteralContext[];
	}
	public decimalLiteral(i: number): DecimalLiteralContext {
		return this.getTypedRuleContext(DecimalLiteralContext, i) as DecimalLiteralContext;
	}
	public COMMA(): TerminalNode {
		return this.getToken(SqlParser.COMMA, 0);
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterShowErrors) {
	 		listener.enterShowErrors(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitShowErrors) {
	 		listener.exitShowErrors(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitShowErrors) {
			return visitor.visitShowErrors(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class ShowCountErrorsContext extends ShowStatementContext {
	public _errorFormat!: Token;
	constructor(parser: SqlParser, ctx: ShowStatementContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public SHOW(): TerminalNode {
		return this.getToken(SqlParser.SHOW, 0);
	}
	public COUNT(): TerminalNode {
		return this.getToken(SqlParser.COUNT, 0);
	}
	public LR_BRACKET(): TerminalNode {
		return this.getToken(SqlParser.LR_BRACKET, 0);
	}
	public STAR(): TerminalNode {
		return this.getToken(SqlParser.STAR, 0);
	}
	public RR_BRACKET(): TerminalNode {
		return this.getToken(SqlParser.RR_BRACKET, 0);
	}
	public ERRORS(): TerminalNode {
		return this.getToken(SqlParser.ERRORS, 0);
	}
	public WARNINGS(): TerminalNode {
		return this.getToken(SqlParser.WARNINGS, 0);
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterShowCountErrors) {
	 		listener.enterShowCountErrors(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitShowCountErrors) {
	 		listener.exitShowCountErrors(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitShowCountErrors) {
			return visitor.visitShowCountErrors(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class ShowObjectFilterContext extends ShowStatementContext {
	constructor(parser: SqlParser, ctx: ShowStatementContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public SHOW(): TerminalNode {
		return this.getToken(SqlParser.SHOW, 0);
	}
	public showCommonEntity(): ShowCommonEntityContext {
		return this.getTypedRuleContext(ShowCommonEntityContext, 0) as ShowCommonEntityContext;
	}
	public showFilter(): ShowFilterContext {
		return this.getTypedRuleContext(ShowFilterContext, 0) as ShowFilterContext;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterShowObjectFilter) {
	 		listener.enterShowObjectFilter(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitShowObjectFilter) {
	 		listener.exitShowObjectFilter(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitShowObjectFilter) {
			return visitor.visitShowObjectFilter(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class ShowCreateDbContext extends ShowStatementContext {
	public _schemaFormat!: Token;
	constructor(parser: SqlParser, ctx: ShowStatementContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public SHOW(): TerminalNode {
		return this.getToken(SqlParser.SHOW, 0);
	}
	public CREATE(): TerminalNode {
		return this.getToken(SqlParser.CREATE, 0);
	}
	public uid(): UidContext {
		return this.getTypedRuleContext(UidContext, 0) as UidContext;
	}
	public DATABASE(): TerminalNode {
		return this.getToken(SqlParser.DATABASE, 0);
	}
	public SCHEMA(): TerminalNode {
		return this.getToken(SqlParser.SCHEMA, 0);
	}
	public ifNotExists(): IfNotExistsContext {
		return this.getTypedRuleContext(IfNotExistsContext, 0) as IfNotExistsContext;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterShowCreateDb) {
	 		listener.enterShowCreateDb(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitShowCreateDb) {
	 		listener.exitShowCreateDb(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitShowCreateDb) {
			return visitor.visitShowCreateDb(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class ShowEngineContext extends ShowStatementContext {
	public _engineOption!: Token;
	constructor(parser: SqlParser, ctx: ShowStatementContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public SHOW(): TerminalNode {
		return this.getToken(SqlParser.SHOW, 0);
	}
	public ENGINE(): TerminalNode {
		return this.getToken(SqlParser.ENGINE, 0);
	}
	public engineName(): EngineNameContext {
		return this.getTypedRuleContext(EngineNameContext, 0) as EngineNameContext;
	}
	public STATUS(): TerminalNode {
		return this.getToken(SqlParser.STATUS, 0);
	}
	public MUTEX(): TerminalNode {
		return this.getToken(SqlParser.MUTEX, 0);
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterShowEngine) {
	 		listener.enterShowEngine(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitShowEngine) {
	 		listener.exitShowEngine(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitShowEngine) {
			return visitor.visitShowEngine(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class ShowSchemaFilterContext extends ShowStatementContext {
	public _schemaFormat!: Token;
	constructor(parser: SqlParser, ctx: ShowStatementContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public SHOW(): TerminalNode {
		return this.getToken(SqlParser.SHOW, 0);
	}
	public showSchemaEntity(): ShowSchemaEntityContext {
		return this.getTypedRuleContext(ShowSchemaEntityContext, 0) as ShowSchemaEntityContext;
	}
	public uid(): UidContext {
		return this.getTypedRuleContext(UidContext, 0) as UidContext;
	}
	public showFilter(): ShowFilterContext {
		return this.getTypedRuleContext(ShowFilterContext, 0) as ShowFilterContext;
	}
	public FROM(): TerminalNode {
		return this.getToken(SqlParser.FROM, 0);
	}
	public IN(): TerminalNode {
		return this.getToken(SqlParser.IN, 0);
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterShowSchemaFilter) {
	 		listener.enterShowSchemaFilter(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitShowSchemaFilter) {
	 		listener.exitShowSchemaFilter(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitShowSchemaFilter) {
			return visitor.visitShowSchemaFilter(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class ShowIndexesContext extends ShowStatementContext {
	public _indexFormat!: Token;
	public _tableFormat!: Token;
	public _schemaFormat!: Token;
	constructor(parser: SqlParser, ctx: ShowStatementContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public SHOW(): TerminalNode {
		return this.getToken(SqlParser.SHOW, 0);
	}
	public tableName(): TableNameContext {
		return this.getTypedRuleContext(TableNameContext, 0) as TableNameContext;
	}
	public INDEX(): TerminalNode {
		return this.getToken(SqlParser.INDEX, 0);
	}
	public INDEXES(): TerminalNode {
		return this.getToken(SqlParser.INDEXES, 0);
	}
	public KEYS(): TerminalNode {
		return this.getToken(SqlParser.KEYS, 0);
	}
	public FROM_list(): TerminalNode[] {
	    	return this.getTokens(SqlParser.FROM);
	}
	public FROM(i: number): TerminalNode {
		return this.getToken(SqlParser.FROM, i);
	}
	public IN_list(): TerminalNode[] {
	    	return this.getTokens(SqlParser.IN);
	}
	public IN(i: number): TerminalNode {
		return this.getToken(SqlParser.IN, i);
	}
	public uid(): UidContext {
		return this.getTypedRuleContext(UidContext, 0) as UidContext;
	}
	public WHERE(): TerminalNode {
		return this.getToken(SqlParser.WHERE, 0);
	}
	public expression(): ExpressionContext {
		return this.getTypedRuleContext(ExpressionContext, 0) as ExpressionContext;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterShowIndexes) {
	 		listener.enterShowIndexes(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitShowIndexes) {
	 		listener.exitShowIndexes(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitShowIndexes) {
			return visitor.visitShowIndexes(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class ShowLogEventsContext extends ShowStatementContext {
	public _logFormat!: Token;
	public _filename!: Token;
	public _fromPosition!: DecimalLiteralContext;
	public _offset!: DecimalLiteralContext;
	public _rowCount!: DecimalLiteralContext;
	constructor(parser: SqlParser, ctx: ShowStatementContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public SHOW(): TerminalNode {
		return this.getToken(SqlParser.SHOW, 0);
	}
	public EVENTS(): TerminalNode {
		return this.getToken(SqlParser.EVENTS, 0);
	}
	public BINLOG(): TerminalNode {
		return this.getToken(SqlParser.BINLOG, 0);
	}
	public RELAYLOG(): TerminalNode {
		return this.getToken(SqlParser.RELAYLOG, 0);
	}
	public IN(): TerminalNode {
		return this.getToken(SqlParser.IN, 0);
	}
	public FROM(): TerminalNode {
		return this.getToken(SqlParser.FROM, 0);
	}
	public LIMIT(): TerminalNode {
		return this.getToken(SqlParser.LIMIT, 0);
	}
	public STRING_LITERAL(): TerminalNode {
		return this.getToken(SqlParser.STRING_LITERAL, 0);
	}
	public decimalLiteral_list(): DecimalLiteralContext[] {
		return this.getTypedRuleContexts(DecimalLiteralContext) as DecimalLiteralContext[];
	}
	public decimalLiteral(i: number): DecimalLiteralContext {
		return this.getTypedRuleContext(DecimalLiteralContext, i) as DecimalLiteralContext;
	}
	public COMMA(): TerminalNode {
		return this.getToken(SqlParser.COMMA, 0);
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterShowLogEvents) {
	 		listener.enterShowLogEvents(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitShowLogEvents) {
	 		listener.exitShowLogEvents(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitShowLogEvents) {
			return visitor.visitShowLogEvents(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class ShowMasterLogsContext extends ShowStatementContext {
	public _logFormat!: Token;
	constructor(parser: SqlParser, ctx: ShowStatementContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public SHOW(): TerminalNode {
		return this.getToken(SqlParser.SHOW, 0);
	}
	public LOGS(): TerminalNode {
		return this.getToken(SqlParser.LOGS, 0);
	}
	public BINARY(): TerminalNode {
		return this.getToken(SqlParser.BINARY, 0);
	}
	public MASTER(): TerminalNode {
		return this.getToken(SqlParser.MASTER, 0);
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterShowMasterLogs) {
	 		listener.enterShowMasterLogs(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitShowMasterLogs) {
	 		listener.exitShowMasterLogs(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitShowMasterLogs) {
			return visitor.visitShowMasterLogs(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class ShowGrantsContext extends ShowStatementContext {
	constructor(parser: SqlParser, ctx: ShowStatementContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public SHOW(): TerminalNode {
		return this.getToken(SqlParser.SHOW, 0);
	}
	public GRANTS(): TerminalNode {
		return this.getToken(SqlParser.GRANTS, 0);
	}
	public FOR(): TerminalNode {
		return this.getToken(SqlParser.FOR, 0);
	}
	public userName(): UserNameContext {
		return this.getTypedRuleContext(UserNameContext, 0) as UserNameContext;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterShowGrants) {
	 		listener.enterShowGrants(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitShowGrants) {
	 		listener.exitShowGrants(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitShowGrants) {
			return visitor.visitShowGrants(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class ShowSlaveStatusContext extends ShowStatementContext {
	constructor(parser: SqlParser, ctx: ShowStatementContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public SHOW(): TerminalNode {
		return this.getToken(SqlParser.SHOW, 0);
	}
	public SLAVE(): TerminalNode {
		return this.getToken(SqlParser.SLAVE, 0);
	}
	public STATUS(): TerminalNode {
		return this.getToken(SqlParser.STATUS, 0);
	}
	public FOR(): TerminalNode {
		return this.getToken(SqlParser.FOR, 0);
	}
	public CHANNEL(): TerminalNode {
		return this.getToken(SqlParser.CHANNEL, 0);
	}
	public STRING_LITERAL(): TerminalNode {
		return this.getToken(SqlParser.STRING_LITERAL, 0);
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterShowSlaveStatus) {
	 		listener.enterShowSlaveStatus(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitShowSlaveStatus) {
	 		listener.exitShowSlaveStatus(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitShowSlaveStatus) {
			return visitor.visitShowSlaveStatus(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class ShowRoutineContext extends ShowStatementContext {
	public _routine!: Token;
	constructor(parser: SqlParser, ctx: ShowStatementContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public SHOW(): TerminalNode {
		return this.getToken(SqlParser.SHOW, 0);
	}
	public CODE(): TerminalNode {
		return this.getToken(SqlParser.CODE, 0);
	}
	public fullId(): FullIdContext {
		return this.getTypedRuleContext(FullIdContext, 0) as FullIdContext;
	}
	public FUNCTION(): TerminalNode {
		return this.getToken(SqlParser.FUNCTION, 0);
	}
	public PROCEDURE(): TerminalNode {
		return this.getToken(SqlParser.PROCEDURE, 0);
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterShowRoutine) {
	 		listener.enterShowRoutine(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitShowRoutine) {
	 		listener.exitShowRoutine(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitShowRoutine) {
			return visitor.visitShowRoutine(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class ShowProfileContext extends ShowStatementContext {
	public _queryCount!: DecimalLiteralContext;
	public _offset!: DecimalLiteralContext;
	public _rowCount!: DecimalLiteralContext;
	constructor(parser: SqlParser, ctx: ShowStatementContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public SHOW(): TerminalNode {
		return this.getToken(SqlParser.SHOW, 0);
	}
	public PROFILE(): TerminalNode {
		return this.getToken(SqlParser.PROFILE, 0);
	}
	public showProfileType_list(): ShowProfileTypeContext[] {
		return this.getTypedRuleContexts(ShowProfileTypeContext) as ShowProfileTypeContext[];
	}
	public showProfileType(i: number): ShowProfileTypeContext {
		return this.getTypedRuleContext(ShowProfileTypeContext, i) as ShowProfileTypeContext;
	}
	public LIMIT(): TerminalNode {
		return this.getToken(SqlParser.LIMIT, 0);
	}
	public COMMA_list(): TerminalNode[] {
	    	return this.getTokens(SqlParser.COMMA);
	}
	public COMMA(i: number): TerminalNode {
		return this.getToken(SqlParser.COMMA, i);
	}
	public FOR(): TerminalNode {
		return this.getToken(SqlParser.FOR, 0);
	}
	public QUERY(): TerminalNode {
		return this.getToken(SqlParser.QUERY, 0);
	}
	public decimalLiteral_list(): DecimalLiteralContext[] {
		return this.getTypedRuleContexts(DecimalLiteralContext) as DecimalLiteralContext[];
	}
	public decimalLiteral(i: number): DecimalLiteralContext {
		return this.getTypedRuleContext(DecimalLiteralContext, i) as DecimalLiteralContext;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterShowProfile) {
	 		listener.enterShowProfile(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitShowProfile) {
	 		listener.exitShowProfile(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitShowProfile) {
			return visitor.visitShowProfile(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class ShowColumnsContext extends ShowStatementContext {
	public _columnsFormat!: Token;
	public _tableFormat!: Token;
	public _schemaFormat!: Token;
	constructor(parser: SqlParser, ctx: ShowStatementContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public SHOW(): TerminalNode {
		return this.getToken(SqlParser.SHOW, 0);
	}
	public tableName(): TableNameContext {
		return this.getTypedRuleContext(TableNameContext, 0) as TableNameContext;
	}
	public COLUMNS(): TerminalNode {
		return this.getToken(SqlParser.COLUMNS, 0);
	}
	public FIELDS(): TerminalNode {
		return this.getToken(SqlParser.FIELDS, 0);
	}
	public FROM_list(): TerminalNode[] {
	    	return this.getTokens(SqlParser.FROM);
	}
	public FROM(i: number): TerminalNode {
		return this.getToken(SqlParser.FROM, i);
	}
	public IN_list(): TerminalNode[] {
	    	return this.getTokens(SqlParser.IN);
	}
	public IN(i: number): TerminalNode {
		return this.getToken(SqlParser.IN, i);
	}
	public FULL(): TerminalNode {
		return this.getToken(SqlParser.FULL, 0);
	}
	public uid(): UidContext {
		return this.getTypedRuleContext(UidContext, 0) as UidContext;
	}
	public showFilter(): ShowFilterContext {
		return this.getTypedRuleContext(ShowFilterContext, 0) as ShowFilterContext;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterShowColumns) {
	 		listener.enterShowColumns(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitShowColumns) {
	 		listener.exitShowColumns(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitShowColumns) {
			return visitor.visitShowColumns(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class VariableClauseContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public LOCAL_ID(): TerminalNode {
		return this.getToken(SqlParser.LOCAL_ID, 0);
	}
	public GLOBAL_ID(): TerminalNode {
		return this.getToken(SqlParser.GLOBAL_ID, 0);
	}
	public uid(): UidContext {
		return this.getTypedRuleContext(UidContext, 0) as UidContext;
	}
	public GLOBAL(): TerminalNode {
		return this.getToken(SqlParser.GLOBAL, 0);
	}
	public SESSION(): TerminalNode {
		return this.getToken(SqlParser.SESSION, 0);
	}
	public LOCAL(): TerminalNode {
		return this.getToken(SqlParser.LOCAL, 0);
	}
	public AT_SIGN_list(): TerminalNode[] {
	    	return this.getTokens(SqlParser.AT_SIGN);
	}
	public AT_SIGN(i: number): TerminalNode {
		return this.getToken(SqlParser.AT_SIGN, i);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_variableClause;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterVariableClause) {
	 		listener.enterVariableClause(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitVariableClause) {
	 		listener.exitVariableClause(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitVariableClause) {
			return visitor.visitVariableClause(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ShowCommonEntityContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public CHARACTER(): TerminalNode {
		return this.getToken(SqlParser.CHARACTER, 0);
	}
	public SET(): TerminalNode {
		return this.getToken(SqlParser.SET, 0);
	}
	public COLLATION(): TerminalNode {
		return this.getToken(SqlParser.COLLATION, 0);
	}
	public DATABASES(): TerminalNode {
		return this.getToken(SqlParser.DATABASES, 0);
	}
	public SCHEMAS(): TerminalNode {
		return this.getToken(SqlParser.SCHEMAS, 0);
	}
	public FUNCTION(): TerminalNode {
		return this.getToken(SqlParser.FUNCTION, 0);
	}
	public STATUS(): TerminalNode {
		return this.getToken(SqlParser.STATUS, 0);
	}
	public PROCEDURE(): TerminalNode {
		return this.getToken(SqlParser.PROCEDURE, 0);
	}
	public VARIABLES(): TerminalNode {
		return this.getToken(SqlParser.VARIABLES, 0);
	}
	public GLOBAL(): TerminalNode {
		return this.getToken(SqlParser.GLOBAL, 0);
	}
	public SESSION(): TerminalNode {
		return this.getToken(SqlParser.SESSION, 0);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_showCommonEntity;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterShowCommonEntity) {
	 		listener.enterShowCommonEntity(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitShowCommonEntity) {
	 		listener.exitShowCommonEntity(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitShowCommonEntity) {
			return visitor.visitShowCommonEntity(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ShowFilterContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public LIKE(): TerminalNode {
		return this.getToken(SqlParser.LIKE, 0);
	}
	public STRING_LITERAL(): TerminalNode {
		return this.getToken(SqlParser.STRING_LITERAL, 0);
	}
	public WHERE(): TerminalNode {
		return this.getToken(SqlParser.WHERE, 0);
	}
	public expression(): ExpressionContext {
		return this.getTypedRuleContext(ExpressionContext, 0) as ExpressionContext;
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_showFilter;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterShowFilter) {
	 		listener.enterShowFilter(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitShowFilter) {
	 		listener.exitShowFilter(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitShowFilter) {
			return visitor.visitShowFilter(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ShowGlobalInfoClauseContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public ENGINES(): TerminalNode {
		return this.getToken(SqlParser.ENGINES, 0);
	}
	public STORAGE(): TerminalNode {
		return this.getToken(SqlParser.STORAGE, 0);
	}
	public MASTER(): TerminalNode {
		return this.getToken(SqlParser.MASTER, 0);
	}
	public STATUS(): TerminalNode {
		return this.getToken(SqlParser.STATUS, 0);
	}
	public PLUGINS(): TerminalNode {
		return this.getToken(SqlParser.PLUGINS, 0);
	}
	public PRIVILEGES(): TerminalNode {
		return this.getToken(SqlParser.PRIVILEGES, 0);
	}
	public PROCESSLIST(): TerminalNode {
		return this.getToken(SqlParser.PROCESSLIST, 0);
	}
	public FULL(): TerminalNode {
		return this.getToken(SqlParser.FULL, 0);
	}
	public PROFILES(): TerminalNode {
		return this.getToken(SqlParser.PROFILES, 0);
	}
	public SLAVE(): TerminalNode {
		return this.getToken(SqlParser.SLAVE, 0);
	}
	public HOSTS(): TerminalNode {
		return this.getToken(SqlParser.HOSTS, 0);
	}
	public AUTHORS(): TerminalNode {
		return this.getToken(SqlParser.AUTHORS, 0);
	}
	public CONTRIBUTORS(): TerminalNode {
		return this.getToken(SqlParser.CONTRIBUTORS, 0);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_showGlobalInfoClause;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterShowGlobalInfoClause) {
	 		listener.enterShowGlobalInfoClause(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitShowGlobalInfoClause) {
	 		listener.exitShowGlobalInfoClause(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitShowGlobalInfoClause) {
			return visitor.visitShowGlobalInfoClause(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ShowSchemaEntityContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public EVENTS(): TerminalNode {
		return this.getToken(SqlParser.EVENTS, 0);
	}
	public TABLE(): TerminalNode {
		return this.getToken(SqlParser.TABLE, 0);
	}
	public STATUS(): TerminalNode {
		return this.getToken(SqlParser.STATUS, 0);
	}
	public TABLES(): TerminalNode {
		return this.getToken(SqlParser.TABLES, 0);
	}
	public FULL(): TerminalNode {
		return this.getToken(SqlParser.FULL, 0);
	}
	public TRIGGERS(): TerminalNode {
		return this.getToken(SqlParser.TRIGGERS, 0);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_showSchemaEntity;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterShowSchemaEntity) {
	 		listener.enterShowSchemaEntity(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitShowSchemaEntity) {
	 		listener.exitShowSchemaEntity(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitShowSchemaEntity) {
			return visitor.visitShowSchemaEntity(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ShowProfileTypeContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public ALL(): TerminalNode {
		return this.getToken(SqlParser.ALL, 0);
	}
	public BLOCK(): TerminalNode {
		return this.getToken(SqlParser.BLOCK, 0);
	}
	public IO(): TerminalNode {
		return this.getToken(SqlParser.IO, 0);
	}
	public CONTEXT(): TerminalNode {
		return this.getToken(SqlParser.CONTEXT, 0);
	}
	public SWITCHES(): TerminalNode {
		return this.getToken(SqlParser.SWITCHES, 0);
	}
	public CPU(): TerminalNode {
		return this.getToken(SqlParser.CPU, 0);
	}
	public IPC(): TerminalNode {
		return this.getToken(SqlParser.IPC, 0);
	}
	public MEMORY(): TerminalNode {
		return this.getToken(SqlParser.MEMORY, 0);
	}
	public PAGE(): TerminalNode {
		return this.getToken(SqlParser.PAGE, 0);
	}
	public FAULTS(): TerminalNode {
		return this.getToken(SqlParser.FAULTS, 0);
	}
	public SOURCE(): TerminalNode {
		return this.getToken(SqlParser.SOURCE, 0);
	}
	public SWAPS(): TerminalNode {
		return this.getToken(SqlParser.SWAPS, 0);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_showProfileType;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterShowProfileType) {
	 		listener.enterShowProfileType(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitShowProfileType) {
	 		listener.exitShowProfileType(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitShowProfileType) {
			return visitor.visitShowProfileType(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class BinlogStatementContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public BINLOG(): TerminalNode {
		return this.getToken(SqlParser.BINLOG, 0);
	}
	public STRING_LITERAL(): TerminalNode {
		return this.getToken(SqlParser.STRING_LITERAL, 0);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_binlogStatement;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterBinlogStatement) {
	 		listener.enterBinlogStatement(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitBinlogStatement) {
	 		listener.exitBinlogStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitBinlogStatement) {
			return visitor.visitBinlogStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class CacheIndexStatementContext extends ParserRuleContext {
	public _schema!: UidContext;
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public CACHE(): TerminalNode {
		return this.getToken(SqlParser.CACHE, 0);
	}
	public INDEX(): TerminalNode {
		return this.getToken(SqlParser.INDEX, 0);
	}
	public tableIndexes_list(): TableIndexesContext[] {
		return this.getTypedRuleContexts(TableIndexesContext) as TableIndexesContext[];
	}
	public tableIndexes(i: number): TableIndexesContext {
		return this.getTypedRuleContext(TableIndexesContext, i) as TableIndexesContext;
	}
	public IN(): TerminalNode {
		return this.getToken(SqlParser.IN, 0);
	}
	public uid(): UidContext {
		return this.getTypedRuleContext(UidContext, 0) as UidContext;
	}
	public COMMA_list(): TerminalNode[] {
	    	return this.getTokens(SqlParser.COMMA);
	}
	public COMMA(i: number): TerminalNode {
		return this.getToken(SqlParser.COMMA, i);
	}
	public PARTITION(): TerminalNode {
		return this.getToken(SqlParser.PARTITION, 0);
	}
	public LR_BRACKET(): TerminalNode {
		return this.getToken(SqlParser.LR_BRACKET, 0);
	}
	public RR_BRACKET(): TerminalNode {
		return this.getToken(SqlParser.RR_BRACKET, 0);
	}
	public uidList(): UidListContext {
		return this.getTypedRuleContext(UidListContext, 0) as UidListContext;
	}
	public ALL(): TerminalNode {
		return this.getToken(SqlParser.ALL, 0);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_cacheIndexStatement;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterCacheIndexStatement) {
	 		listener.enterCacheIndexStatement(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitCacheIndexStatement) {
	 		listener.exitCacheIndexStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitCacheIndexStatement) {
			return visitor.visitCacheIndexStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class FlushStatementContext extends ParserRuleContext {
	public _flushFormat!: Token;
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public FLUSH(): TerminalNode {
		return this.getToken(SqlParser.FLUSH, 0);
	}
	public flushOption_list(): FlushOptionContext[] {
		return this.getTypedRuleContexts(FlushOptionContext) as FlushOptionContext[];
	}
	public flushOption(i: number): FlushOptionContext {
		return this.getTypedRuleContext(FlushOptionContext, i) as FlushOptionContext;
	}
	public COMMA_list(): TerminalNode[] {
	    	return this.getTokens(SqlParser.COMMA);
	}
	public COMMA(i: number): TerminalNode {
		return this.getToken(SqlParser.COMMA, i);
	}
	public NO_WRITE_TO_BINLOG(): TerminalNode {
		return this.getToken(SqlParser.NO_WRITE_TO_BINLOG, 0);
	}
	public LOCAL(): TerminalNode {
		return this.getToken(SqlParser.LOCAL, 0);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_flushStatement;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterFlushStatement) {
	 		listener.enterFlushStatement(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitFlushStatement) {
	 		listener.exitFlushStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitFlushStatement) {
			return visitor.visitFlushStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class KillStatementContext extends ParserRuleContext {
	public _connectionFormat!: Token;
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public KILL(): TerminalNode {
		return this.getToken(SqlParser.KILL, 0);
	}
	public decimalLiteral_list(): DecimalLiteralContext[] {
		return this.getTypedRuleContexts(DecimalLiteralContext) as DecimalLiteralContext[];
	}
	public decimalLiteral(i: number): DecimalLiteralContext {
		return this.getTypedRuleContext(DecimalLiteralContext, i) as DecimalLiteralContext;
	}
	public CONNECTION(): TerminalNode {
		return this.getToken(SqlParser.CONNECTION, 0);
	}
	public QUERY(): TerminalNode {
		return this.getToken(SqlParser.QUERY, 0);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_killStatement;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterKillStatement) {
	 		listener.enterKillStatement(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitKillStatement) {
	 		listener.exitKillStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitKillStatement) {
			return visitor.visitKillStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class LoadIndexIntoCacheContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public LOAD(): TerminalNode {
		return this.getToken(SqlParser.LOAD, 0);
	}
	public INDEX(): TerminalNode {
		return this.getToken(SqlParser.INDEX, 0);
	}
	public INTO(): TerminalNode {
		return this.getToken(SqlParser.INTO, 0);
	}
	public CACHE(): TerminalNode {
		return this.getToken(SqlParser.CACHE, 0);
	}
	public loadedTableIndexes_list(): LoadedTableIndexesContext[] {
		return this.getTypedRuleContexts(LoadedTableIndexesContext) as LoadedTableIndexesContext[];
	}
	public loadedTableIndexes(i: number): LoadedTableIndexesContext {
		return this.getTypedRuleContext(LoadedTableIndexesContext, i) as LoadedTableIndexesContext;
	}
	public COMMA_list(): TerminalNode[] {
	    	return this.getTokens(SqlParser.COMMA);
	}
	public COMMA(i: number): TerminalNode {
		return this.getToken(SqlParser.COMMA, i);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_loadIndexIntoCache;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterLoadIndexIntoCache) {
	 		listener.enterLoadIndexIntoCache(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitLoadIndexIntoCache) {
	 		listener.exitLoadIndexIntoCache(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitLoadIndexIntoCache) {
			return visitor.visitLoadIndexIntoCache(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ResetStatementContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public RESET(): TerminalNode {
		return this.getToken(SqlParser.RESET, 0);
	}
	public QUERY(): TerminalNode {
		return this.getToken(SqlParser.QUERY, 0);
	}
	public CACHE(): TerminalNode {
		return this.getToken(SqlParser.CACHE, 0);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_resetStatement;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterResetStatement) {
	 		listener.enterResetStatement(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitResetStatement) {
	 		listener.exitResetStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitResetStatement) {
			return visitor.visitResetStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ShutdownStatementContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public SHUTDOWN(): TerminalNode {
		return this.getToken(SqlParser.SHUTDOWN, 0);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_shutdownStatement;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterShutdownStatement) {
	 		listener.enterShutdownStatement(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitShutdownStatement) {
	 		listener.exitShutdownStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitShutdownStatement) {
			return visitor.visitShutdownStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class TableIndexesContext extends ParserRuleContext {
	public _indexFormat!: Token;
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public tableName(): TableNameContext {
		return this.getTypedRuleContext(TableNameContext, 0) as TableNameContext;
	}
	public LR_BRACKET(): TerminalNode {
		return this.getToken(SqlParser.LR_BRACKET, 0);
	}
	public uidList(): UidListContext {
		return this.getTypedRuleContext(UidListContext, 0) as UidListContext;
	}
	public RR_BRACKET(): TerminalNode {
		return this.getToken(SqlParser.RR_BRACKET, 0);
	}
	public INDEX(): TerminalNode {
		return this.getToken(SqlParser.INDEX, 0);
	}
	public KEY(): TerminalNode {
		return this.getToken(SqlParser.KEY, 0);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_tableIndexes;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterTableIndexes) {
	 		listener.enterTableIndexes(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitTableIndexes) {
	 		listener.exitTableIndexes(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitTableIndexes) {
			return visitor.visitTableIndexes(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class FlushOptionContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_flushOption;
	}
	public copyFrom(ctx: FlushOptionContext): void {
		super.copyFrom(ctx);
	}
}
export class TableFlushOptionContext extends FlushOptionContext {
	constructor(parser: SqlParser, ctx: FlushOptionContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public TABLES(): TerminalNode {
		return this.getToken(SqlParser.TABLES, 0);
	}
	public tables(): TablesContext {
		return this.getTypedRuleContext(TablesContext, 0) as TablesContext;
	}
	public flushTableOption(): FlushTableOptionContext {
		return this.getTypedRuleContext(FlushTableOptionContext, 0) as FlushTableOptionContext;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterTableFlushOption) {
	 		listener.enterTableFlushOption(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitTableFlushOption) {
	 		listener.exitTableFlushOption(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitTableFlushOption) {
			return visitor.visitTableFlushOption(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class ChannelFlushOptionContext extends FlushOptionContext {
	constructor(parser: SqlParser, ctx: FlushOptionContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public RELAY(): TerminalNode {
		return this.getToken(SqlParser.RELAY, 0);
	}
	public LOGS(): TerminalNode {
		return this.getToken(SqlParser.LOGS, 0);
	}
	public channelOption(): ChannelOptionContext {
		return this.getTypedRuleContext(ChannelOptionContext, 0) as ChannelOptionContext;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterChannelFlushOption) {
	 		listener.enterChannelFlushOption(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitChannelFlushOption) {
	 		listener.exitChannelFlushOption(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitChannelFlushOption) {
			return visitor.visitChannelFlushOption(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class SimpleFlushOptionContext extends FlushOptionContext {
	constructor(parser: SqlParser, ctx: FlushOptionContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public DES_KEY_FILE(): TerminalNode {
		return this.getToken(SqlParser.DES_KEY_FILE, 0);
	}
	public HOSTS(): TerminalNode {
		return this.getToken(SqlParser.HOSTS, 0);
	}
	public LOGS(): TerminalNode {
		return this.getToken(SqlParser.LOGS, 0);
	}
	public OPTIMIZER_COSTS(): TerminalNode {
		return this.getToken(SqlParser.OPTIMIZER_COSTS, 0);
	}
	public PRIVILEGES(): TerminalNode {
		return this.getToken(SqlParser.PRIVILEGES, 0);
	}
	public QUERY(): TerminalNode {
		return this.getToken(SqlParser.QUERY, 0);
	}
	public CACHE(): TerminalNode {
		return this.getToken(SqlParser.CACHE, 0);
	}
	public STATUS(): TerminalNode {
		return this.getToken(SqlParser.STATUS, 0);
	}
	public USER_RESOURCES(): TerminalNode {
		return this.getToken(SqlParser.USER_RESOURCES, 0);
	}
	public TABLES(): TerminalNode {
		return this.getToken(SqlParser.TABLES, 0);
	}
	public WITH(): TerminalNode {
		return this.getToken(SqlParser.WITH, 0);
	}
	public READ(): TerminalNode {
		return this.getToken(SqlParser.READ, 0);
	}
	public LOCK(): TerminalNode {
		return this.getToken(SqlParser.LOCK, 0);
	}
	public BINARY(): TerminalNode {
		return this.getToken(SqlParser.BINARY, 0);
	}
	public ENGINE(): TerminalNode {
		return this.getToken(SqlParser.ENGINE, 0);
	}
	public ERROR(): TerminalNode {
		return this.getToken(SqlParser.ERROR, 0);
	}
	public GENERAL(): TerminalNode {
		return this.getToken(SqlParser.GENERAL, 0);
	}
	public RELAY(): TerminalNode {
		return this.getToken(SqlParser.RELAY, 0);
	}
	public SLOW(): TerminalNode {
		return this.getToken(SqlParser.SLOW, 0);
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterSimpleFlushOption) {
	 		listener.enterSimpleFlushOption(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitSimpleFlushOption) {
	 		listener.exitSimpleFlushOption(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitSimpleFlushOption) {
			return visitor.visitSimpleFlushOption(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class FlushTableOptionContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public WITH(): TerminalNode {
		return this.getToken(SqlParser.WITH, 0);
	}
	public READ(): TerminalNode {
		return this.getToken(SqlParser.READ, 0);
	}
	public LOCK(): TerminalNode {
		return this.getToken(SqlParser.LOCK, 0);
	}
	public FOR(): TerminalNode {
		return this.getToken(SqlParser.FOR, 0);
	}
	public EXPORT(): TerminalNode {
		return this.getToken(SqlParser.EXPORT, 0);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_flushTableOption;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterFlushTableOption) {
	 		listener.enterFlushTableOption(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitFlushTableOption) {
	 		listener.exitFlushTableOption(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitFlushTableOption) {
			return visitor.visitFlushTableOption(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class LoadedTableIndexesContext extends ParserRuleContext {
	public _partitionList!: UidListContext;
	public _indexFormat!: Token;
	public _indexList!: UidListContext;
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public tableName(): TableNameContext {
		return this.getTypedRuleContext(TableNameContext, 0) as TableNameContext;
	}
	public PARTITION(): TerminalNode {
		return this.getToken(SqlParser.PARTITION, 0);
	}
	public LR_BRACKET_list(): TerminalNode[] {
	    	return this.getTokens(SqlParser.LR_BRACKET);
	}
	public LR_BRACKET(i: number): TerminalNode {
		return this.getToken(SqlParser.LR_BRACKET, i);
	}
	public RR_BRACKET_list(): TerminalNode[] {
	    	return this.getTokens(SqlParser.RR_BRACKET);
	}
	public RR_BRACKET(i: number): TerminalNode {
		return this.getToken(SqlParser.RR_BRACKET, i);
	}
	public IGNORE(): TerminalNode {
		return this.getToken(SqlParser.IGNORE, 0);
	}
	public LEAVES(): TerminalNode {
		return this.getToken(SqlParser.LEAVES, 0);
	}
	public uidList_list(): UidListContext[] {
		return this.getTypedRuleContexts(UidListContext) as UidListContext[];
	}
	public uidList(i: number): UidListContext {
		return this.getTypedRuleContext(UidListContext, i) as UidListContext;
	}
	public ALL(): TerminalNode {
		return this.getToken(SqlParser.ALL, 0);
	}
	public INDEX(): TerminalNode {
		return this.getToken(SqlParser.INDEX, 0);
	}
	public KEY(): TerminalNode {
		return this.getToken(SqlParser.KEY, 0);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_loadedTableIndexes;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterLoadedTableIndexes) {
	 		listener.enterLoadedTableIndexes(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitLoadedTableIndexes) {
	 		listener.exitLoadedTableIndexes(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitLoadedTableIndexes) {
			return visitor.visitLoadedTableIndexes(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class SimpleDescribeStatementContext extends ParserRuleContext {
	public _command!: Token;
	public _column!: UidContext;
	public _pattern!: Token;
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public tableName(): TableNameContext {
		return this.getTypedRuleContext(TableNameContext, 0) as TableNameContext;
	}
	public EXPLAIN(): TerminalNode {
		return this.getToken(SqlParser.EXPLAIN, 0);
	}
	public DESCRIBE(): TerminalNode {
		return this.getToken(SqlParser.DESCRIBE, 0);
	}
	public DESC(): TerminalNode {
		return this.getToken(SqlParser.DESC, 0);
	}
	public uid(): UidContext {
		return this.getTypedRuleContext(UidContext, 0) as UidContext;
	}
	public STRING_LITERAL(): TerminalNode {
		return this.getToken(SqlParser.STRING_LITERAL, 0);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_simpleDescribeStatement;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterSimpleDescribeStatement) {
	 		listener.enterSimpleDescribeStatement(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitSimpleDescribeStatement) {
	 		listener.exitSimpleDescribeStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitSimpleDescribeStatement) {
			return visitor.visitSimpleDescribeStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class FullDescribeStatementContext extends ParserRuleContext {
	public _command!: Token;
	public _formatType!: Token;
	public _formatValue!: Token;
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public describeObjectClause(): DescribeObjectClauseContext {
		return this.getTypedRuleContext(DescribeObjectClauseContext, 0) as DescribeObjectClauseContext;
	}
	public EXPLAIN(): TerminalNode {
		return this.getToken(SqlParser.EXPLAIN, 0);
	}
	public DESCRIBE(): TerminalNode {
		return this.getToken(SqlParser.DESCRIBE, 0);
	}
	public DESC(): TerminalNode {
		return this.getToken(SqlParser.DESC, 0);
	}
	public EQUAL_SYMBOL(): TerminalNode {
		return this.getToken(SqlParser.EQUAL_SYMBOL, 0);
	}
	public EXTENDED(): TerminalNode {
		return this.getToken(SqlParser.EXTENDED, 0);
	}
	public PARTITIONS(): TerminalNode {
		return this.getToken(SqlParser.PARTITIONS, 0);
	}
	public FORMAT(): TerminalNode {
		return this.getToken(SqlParser.FORMAT, 0);
	}
	public TRADITIONAL(): TerminalNode {
		return this.getToken(SqlParser.TRADITIONAL, 0);
	}
	public JSON(): TerminalNode {
		return this.getToken(SqlParser.JSON, 0);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_fullDescribeStatement;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterFullDescribeStatement) {
	 		listener.enterFullDescribeStatement(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitFullDescribeStatement) {
	 		listener.exitFullDescribeStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitFullDescribeStatement) {
			return visitor.visitFullDescribeStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class HelpStatementContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public HELP(): TerminalNode {
		return this.getToken(SqlParser.HELP, 0);
	}
	public STRING_LITERAL(): TerminalNode {
		return this.getToken(SqlParser.STRING_LITERAL, 0);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_helpStatement;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterHelpStatement) {
	 		listener.enterHelpStatement(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitHelpStatement) {
	 		listener.exitHelpStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitHelpStatement) {
			return visitor.visitHelpStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class UseStatementContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public USE(): TerminalNode {
		return this.getToken(SqlParser.USE, 0);
	}
	public uid(): UidContext {
		return this.getTypedRuleContext(UidContext, 0) as UidContext;
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_useStatement;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterUseStatement) {
	 		listener.enterUseStatement(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitUseStatement) {
	 		listener.exitUseStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitUseStatement) {
			return visitor.visitUseStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class SignalStatementContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public SIGNAL(): TerminalNode {
		return this.getToken(SqlParser.SIGNAL, 0);
	}
	public ID(): TerminalNode {
		return this.getToken(SqlParser.ID, 0);
	}
	public REVERSE_QUOTE_ID(): TerminalNode {
		return this.getToken(SqlParser.REVERSE_QUOTE_ID, 0);
	}
	public SET(): TerminalNode {
		return this.getToken(SqlParser.SET, 0);
	}
	public signalConditionInformation_list(): SignalConditionInformationContext[] {
		return this.getTypedRuleContexts(SignalConditionInformationContext) as SignalConditionInformationContext[];
	}
	public signalConditionInformation(i: number): SignalConditionInformationContext {
		return this.getTypedRuleContext(SignalConditionInformationContext, i) as SignalConditionInformationContext;
	}
	public SQLSTATE(): TerminalNode {
		return this.getToken(SqlParser.SQLSTATE, 0);
	}
	public stringLiteral(): StringLiteralContext {
		return this.getTypedRuleContext(StringLiteralContext, 0) as StringLiteralContext;
	}
	public COMMA_list(): TerminalNode[] {
	    	return this.getTokens(SqlParser.COMMA);
	}
	public COMMA(i: number): TerminalNode {
		return this.getToken(SqlParser.COMMA, i);
	}
	public VALUE(): TerminalNode {
		return this.getToken(SqlParser.VALUE, 0);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_signalStatement;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterSignalStatement) {
	 		listener.enterSignalStatement(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitSignalStatement) {
	 		listener.exitSignalStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitSignalStatement) {
			return visitor.visitSignalStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ResignalStatementContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public RESIGNAL(): TerminalNode {
		return this.getToken(SqlParser.RESIGNAL, 0);
	}
	public ID(): TerminalNode {
		return this.getToken(SqlParser.ID, 0);
	}
	public REVERSE_QUOTE_ID(): TerminalNode {
		return this.getToken(SqlParser.REVERSE_QUOTE_ID, 0);
	}
	public SET(): TerminalNode {
		return this.getToken(SqlParser.SET, 0);
	}
	public signalConditionInformation_list(): SignalConditionInformationContext[] {
		return this.getTypedRuleContexts(SignalConditionInformationContext) as SignalConditionInformationContext[];
	}
	public signalConditionInformation(i: number): SignalConditionInformationContext {
		return this.getTypedRuleContext(SignalConditionInformationContext, i) as SignalConditionInformationContext;
	}
	public SQLSTATE(): TerminalNode {
		return this.getToken(SqlParser.SQLSTATE, 0);
	}
	public stringLiteral(): StringLiteralContext {
		return this.getTypedRuleContext(StringLiteralContext, 0) as StringLiteralContext;
	}
	public COMMA_list(): TerminalNode[] {
	    	return this.getTokens(SqlParser.COMMA);
	}
	public COMMA(i: number): TerminalNode {
		return this.getToken(SqlParser.COMMA, i);
	}
	public VALUE(): TerminalNode {
		return this.getToken(SqlParser.VALUE, 0);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_resignalStatement;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterResignalStatement) {
	 		listener.enterResignalStatement(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitResignalStatement) {
	 		listener.exitResignalStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitResignalStatement) {
			return visitor.visitResignalStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class SignalConditionInformationContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public EQUAL_SYMBOL(): TerminalNode {
		return this.getToken(SqlParser.EQUAL_SYMBOL, 0);
	}
	public CLASS_ORIGIN(): TerminalNode {
		return this.getToken(SqlParser.CLASS_ORIGIN, 0);
	}
	public SUBCLASS_ORIGIN(): TerminalNode {
		return this.getToken(SqlParser.SUBCLASS_ORIGIN, 0);
	}
	public MESSAGE_TEXT(): TerminalNode {
		return this.getToken(SqlParser.MESSAGE_TEXT, 0);
	}
	public MYSQL_ERRNO(): TerminalNode {
		return this.getToken(SqlParser.MYSQL_ERRNO, 0);
	}
	public CONSTRAINT_CATALOG(): TerminalNode {
		return this.getToken(SqlParser.CONSTRAINT_CATALOG, 0);
	}
	public CONSTRAINT_SCHEMA(): TerminalNode {
		return this.getToken(SqlParser.CONSTRAINT_SCHEMA, 0);
	}
	public CONSTRAINT_NAME(): TerminalNode {
		return this.getToken(SqlParser.CONSTRAINT_NAME, 0);
	}
	public CATALOG_NAME(): TerminalNode {
		return this.getToken(SqlParser.CATALOG_NAME, 0);
	}
	public SCHEMA_NAME(): TerminalNode {
		return this.getToken(SqlParser.SCHEMA_NAME, 0);
	}
	public TABLE_NAME(): TerminalNode {
		return this.getToken(SqlParser.TABLE_NAME, 0);
	}
	public COLUMN_NAME(): TerminalNode {
		return this.getToken(SqlParser.COLUMN_NAME, 0);
	}
	public CURSOR_NAME(): TerminalNode {
		return this.getToken(SqlParser.CURSOR_NAME, 0);
	}
	public stringLiteral(): StringLiteralContext {
		return this.getTypedRuleContext(StringLiteralContext, 0) as StringLiteralContext;
	}
	public DECIMAL_LITERAL(): TerminalNode {
		return this.getToken(SqlParser.DECIMAL_LITERAL, 0);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_signalConditionInformation;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterSignalConditionInformation) {
	 		listener.enterSignalConditionInformation(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitSignalConditionInformation) {
	 		listener.exitSignalConditionInformation(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitSignalConditionInformation) {
			return visitor.visitSignalConditionInformation(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class DiagnosticsStatementContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public GET(): TerminalNode {
		return this.getToken(SqlParser.GET, 0);
	}
	public DIAGNOSTICS(): TerminalNode {
		return this.getToken(SqlParser.DIAGNOSTICS, 0);
	}
	public CURRENT(): TerminalNode {
		return this.getToken(SqlParser.CURRENT, 0);
	}
	public STACKED(): TerminalNode {
		return this.getToken(SqlParser.STACKED, 0);
	}
	public variableClause_list(): VariableClauseContext[] {
		return this.getTypedRuleContexts(VariableClauseContext) as VariableClauseContext[];
	}
	public variableClause(i: number): VariableClauseContext {
		return this.getTypedRuleContext(VariableClauseContext, i) as VariableClauseContext;
	}
	public EQUAL_SYMBOL_list(): TerminalNode[] {
	    	return this.getTokens(SqlParser.EQUAL_SYMBOL);
	}
	public EQUAL_SYMBOL(i: number): TerminalNode {
		return this.getToken(SqlParser.EQUAL_SYMBOL, i);
	}
	public CONDITION(): TerminalNode {
		return this.getToken(SqlParser.CONDITION, 0);
	}
	public diagnosticsConditionInformationName_list(): DiagnosticsConditionInformationNameContext[] {
		return this.getTypedRuleContexts(DiagnosticsConditionInformationNameContext) as DiagnosticsConditionInformationNameContext[];
	}
	public diagnosticsConditionInformationName(i: number): DiagnosticsConditionInformationNameContext {
		return this.getTypedRuleContext(DiagnosticsConditionInformationNameContext, i) as DiagnosticsConditionInformationNameContext;
	}
	public NUMBER_list(): TerminalNode[] {
	    	return this.getTokens(SqlParser.NUMBER);
	}
	public NUMBER(i: number): TerminalNode {
		return this.getToken(SqlParser.NUMBER, i);
	}
	public ROW_COUNT_list(): TerminalNode[] {
	    	return this.getTokens(SqlParser.ROW_COUNT);
	}
	public ROW_COUNT(i: number): TerminalNode {
		return this.getToken(SqlParser.ROW_COUNT, i);
	}
	public decimalLiteral(): DecimalLiteralContext {
		return this.getTypedRuleContext(DecimalLiteralContext, 0) as DecimalLiteralContext;
	}
	public COMMA_list(): TerminalNode[] {
	    	return this.getTokens(SqlParser.COMMA);
	}
	public COMMA(i: number): TerminalNode {
		return this.getToken(SqlParser.COMMA, i);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_diagnosticsStatement;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterDiagnosticsStatement) {
	 		listener.enterDiagnosticsStatement(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitDiagnosticsStatement) {
	 		listener.exitDiagnosticsStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitDiagnosticsStatement) {
			return visitor.visitDiagnosticsStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class DiagnosticsConditionInformationNameContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public CLASS_ORIGIN(): TerminalNode {
		return this.getToken(SqlParser.CLASS_ORIGIN, 0);
	}
	public SUBCLASS_ORIGIN(): TerminalNode {
		return this.getToken(SqlParser.SUBCLASS_ORIGIN, 0);
	}
	public RETURNED_SQLSTATE(): TerminalNode {
		return this.getToken(SqlParser.RETURNED_SQLSTATE, 0);
	}
	public MESSAGE_TEXT(): TerminalNode {
		return this.getToken(SqlParser.MESSAGE_TEXT, 0);
	}
	public MYSQL_ERRNO(): TerminalNode {
		return this.getToken(SqlParser.MYSQL_ERRNO, 0);
	}
	public CONSTRAINT_CATALOG(): TerminalNode {
		return this.getToken(SqlParser.CONSTRAINT_CATALOG, 0);
	}
	public CONSTRAINT_SCHEMA(): TerminalNode {
		return this.getToken(SqlParser.CONSTRAINT_SCHEMA, 0);
	}
	public CONSTRAINT_NAME(): TerminalNode {
		return this.getToken(SqlParser.CONSTRAINT_NAME, 0);
	}
	public CATALOG_NAME(): TerminalNode {
		return this.getToken(SqlParser.CATALOG_NAME, 0);
	}
	public SCHEMA_NAME(): TerminalNode {
		return this.getToken(SqlParser.SCHEMA_NAME, 0);
	}
	public TABLE_NAME(): TerminalNode {
		return this.getToken(SqlParser.TABLE_NAME, 0);
	}
	public COLUMN_NAME(): TerminalNode {
		return this.getToken(SqlParser.COLUMN_NAME, 0);
	}
	public CURSOR_NAME(): TerminalNode {
		return this.getToken(SqlParser.CURSOR_NAME, 0);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_diagnosticsConditionInformationName;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterDiagnosticsConditionInformationName) {
	 		listener.enterDiagnosticsConditionInformationName(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitDiagnosticsConditionInformationName) {
	 		listener.exitDiagnosticsConditionInformationName(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitDiagnosticsConditionInformationName) {
			return visitor.visitDiagnosticsConditionInformationName(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class DescribeObjectClauseContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_describeObjectClause;
	}
	public copyFrom(ctx: DescribeObjectClauseContext): void {
		super.copyFrom(ctx);
	}
}
export class DescribeStatementsContext extends DescribeObjectClauseContext {
	constructor(parser: SqlParser, ctx: DescribeObjectClauseContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public selectStatement(): SelectStatementContext {
		return this.getTypedRuleContext(SelectStatementContext, 0) as SelectStatementContext;
	}
	public deleteStatement(): DeleteStatementContext {
		return this.getTypedRuleContext(DeleteStatementContext, 0) as DeleteStatementContext;
	}
	public insertStatement(): InsertStatementContext {
		return this.getTypedRuleContext(InsertStatementContext, 0) as InsertStatementContext;
	}
	public replaceStatement(): ReplaceStatementContext {
		return this.getTypedRuleContext(ReplaceStatementContext, 0) as ReplaceStatementContext;
	}
	public updateStatement(): UpdateStatementContext {
		return this.getTypedRuleContext(UpdateStatementContext, 0) as UpdateStatementContext;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterDescribeStatements) {
	 		listener.enterDescribeStatements(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitDescribeStatements) {
	 		listener.exitDescribeStatements(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitDescribeStatements) {
			return visitor.visitDescribeStatements(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class DescribeConnectionContext extends DescribeObjectClauseContext {
	constructor(parser: SqlParser, ctx: DescribeObjectClauseContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public FOR(): TerminalNode {
		return this.getToken(SqlParser.FOR, 0);
	}
	public CONNECTION(): TerminalNode {
		return this.getToken(SqlParser.CONNECTION, 0);
	}
	public uid(): UidContext {
		return this.getTypedRuleContext(UidContext, 0) as UidContext;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterDescribeConnection) {
	 		listener.enterDescribeConnection(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitDescribeConnection) {
	 		listener.exitDescribeConnection(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitDescribeConnection) {
			return visitor.visitDescribeConnection(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class FullIdContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public uid_list(): UidContext[] {
		return this.getTypedRuleContexts(UidContext) as UidContext[];
	}
	public uid(i: number): UidContext {
		return this.getTypedRuleContext(UidContext, i) as UidContext;
	}
	public DOT_ID(): TerminalNode {
		return this.getToken(SqlParser.DOT_ID, 0);
	}
	public DOT(): TerminalNode {
		return this.getToken(SqlParser.DOT, 0);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_fullId;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterFullId) {
	 		listener.enterFullId(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitFullId) {
	 		listener.exitFullId(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitFullId) {
			return visitor.visitFullId(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class TableNameContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public fullId(): FullIdContext {
		return this.getTypedRuleContext(FullIdContext, 0) as FullIdContext;
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_tableName;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterTableName) {
	 		listener.enterTableName(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitTableName) {
	 		listener.exitTableName(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitTableName) {
			return visitor.visitTableName(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class FullColumnNameContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public uid(): UidContext {
		return this.getTypedRuleContext(UidContext, 0) as UidContext;
	}
	public dottedId_list(): DottedIdContext[] {
		return this.getTypedRuleContexts(DottedIdContext) as DottedIdContext[];
	}
	public dottedId(i: number): DottedIdContext {
		return this.getTypedRuleContext(DottedIdContext, i) as DottedIdContext;
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_fullColumnName;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterFullColumnName) {
	 		listener.enterFullColumnName(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitFullColumnName) {
	 		listener.exitFullColumnName(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitFullColumnName) {
			return visitor.visitFullColumnName(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class IndexColumnNameContext extends ParserRuleContext {
	public _sortType!: Token;
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public uid(): UidContext {
		return this.getTypedRuleContext(UidContext, 0) as UidContext;
	}
	public STRING_LITERAL(): TerminalNode {
		return this.getToken(SqlParser.STRING_LITERAL, 0);
	}
	public LR_BRACKET(): TerminalNode {
		return this.getToken(SqlParser.LR_BRACKET, 0);
	}
	public decimalLiteral(): DecimalLiteralContext {
		return this.getTypedRuleContext(DecimalLiteralContext, 0) as DecimalLiteralContext;
	}
	public RR_BRACKET(): TerminalNode {
		return this.getToken(SqlParser.RR_BRACKET, 0);
	}
	public ASC(): TerminalNode {
		return this.getToken(SqlParser.ASC, 0);
	}
	public DESC(): TerminalNode {
		return this.getToken(SqlParser.DESC, 0);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_indexColumnName;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterIndexColumnName) {
	 		listener.enterIndexColumnName(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitIndexColumnName) {
	 		listener.exitIndexColumnName(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitIndexColumnName) {
			return visitor.visitIndexColumnName(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class UserNameContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public STRING_USER_NAME(): TerminalNode {
		return this.getToken(SqlParser.STRING_USER_NAME, 0);
	}
	public ID(): TerminalNode {
		return this.getToken(SqlParser.ID, 0);
	}
	public STRING_LITERAL(): TerminalNode {
		return this.getToken(SqlParser.STRING_LITERAL, 0);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_userName;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterUserName) {
	 		listener.enterUserName(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitUserName) {
	 		listener.exitUserName(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitUserName) {
			return visitor.visitUserName(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class MysqlVariableContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public LOCAL_ID(): TerminalNode {
		return this.getToken(SqlParser.LOCAL_ID, 0);
	}
	public GLOBAL_ID(): TerminalNode {
		return this.getToken(SqlParser.GLOBAL_ID, 0);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_mysqlVariable;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterMysqlVariable) {
	 		listener.enterMysqlVariable(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitMysqlVariable) {
	 		listener.exitMysqlVariable(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitMysqlVariable) {
			return visitor.visitMysqlVariable(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class CharsetNameContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public BINARY(): TerminalNode {
		return this.getToken(SqlParser.BINARY, 0);
	}
	public charsetNameBase(): CharsetNameBaseContext {
		return this.getTypedRuleContext(CharsetNameBaseContext, 0) as CharsetNameBaseContext;
	}
	public STRING_LITERAL(): TerminalNode {
		return this.getToken(SqlParser.STRING_LITERAL, 0);
	}
	public CHARSET_REVERSE_QOUTE_STRING(): TerminalNode {
		return this.getToken(SqlParser.CHARSET_REVERSE_QOUTE_STRING, 0);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_charsetName;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterCharsetName) {
	 		listener.enterCharsetName(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitCharsetName) {
	 		listener.exitCharsetName(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitCharsetName) {
			return visitor.visitCharsetName(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class CollationNameContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public uid(): UidContext {
		return this.getTypedRuleContext(UidContext, 0) as UidContext;
	}
	public STRING_LITERAL(): TerminalNode {
		return this.getToken(SqlParser.STRING_LITERAL, 0);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_collationName;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterCollationName) {
	 		listener.enterCollationName(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitCollationName) {
	 		listener.exitCollationName(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitCollationName) {
			return visitor.visitCollationName(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class EngineNameContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public ARCHIVE(): TerminalNode {
		return this.getToken(SqlParser.ARCHIVE, 0);
	}
	public BLACKHOLE(): TerminalNode {
		return this.getToken(SqlParser.BLACKHOLE, 0);
	}
	public CSV(): TerminalNode {
		return this.getToken(SqlParser.CSV, 0);
	}
	public FEDERATED(): TerminalNode {
		return this.getToken(SqlParser.FEDERATED, 0);
	}
	public INNODB(): TerminalNode {
		return this.getToken(SqlParser.INNODB, 0);
	}
	public MEMORY(): TerminalNode {
		return this.getToken(SqlParser.MEMORY, 0);
	}
	public MRG_MYISAM(): TerminalNode {
		return this.getToken(SqlParser.MRG_MYISAM, 0);
	}
	public MYISAM(): TerminalNode {
		return this.getToken(SqlParser.MYISAM, 0);
	}
	public NDB(): TerminalNode {
		return this.getToken(SqlParser.NDB, 0);
	}
	public NDBCLUSTER(): TerminalNode {
		return this.getToken(SqlParser.NDBCLUSTER, 0);
	}
	public PERFORMANCE_SCHEMA(): TerminalNode {
		return this.getToken(SqlParser.PERFORMANCE_SCHEMA, 0);
	}
	public TOKUDB(): TerminalNode {
		return this.getToken(SqlParser.TOKUDB, 0);
	}
	public ID(): TerminalNode {
		return this.getToken(SqlParser.ID, 0);
	}
	public STRING_LITERAL(): TerminalNode {
		return this.getToken(SqlParser.STRING_LITERAL, 0);
	}
	public REVERSE_QUOTE_ID(): TerminalNode {
		return this.getToken(SqlParser.REVERSE_QUOTE_ID, 0);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_engineName;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterEngineName) {
	 		listener.enterEngineName(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitEngineName) {
	 		listener.exitEngineName(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitEngineName) {
			return visitor.visitEngineName(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class UuidSetContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public decimalLiteral_list(): DecimalLiteralContext[] {
		return this.getTypedRuleContexts(DecimalLiteralContext) as DecimalLiteralContext[];
	}
	public decimalLiteral(i: number): DecimalLiteralContext {
		return this.getTypedRuleContext(DecimalLiteralContext, i) as DecimalLiteralContext;
	}
	public MINUS_list(): TerminalNode[] {
	    	return this.getTokens(SqlParser.MINUS);
	}
	public MINUS(i: number): TerminalNode {
		return this.getToken(SqlParser.MINUS, i);
	}
	public COLON_SYMB_list(): TerminalNode[] {
	    	return this.getTokens(SqlParser.COLON_SYMB);
	}
	public COLON_SYMB(i: number): TerminalNode {
		return this.getToken(SqlParser.COLON_SYMB, i);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_uuidSet;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterUuidSet) {
	 		listener.enterUuidSet(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitUuidSet) {
	 		listener.exitUuidSet(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitUuidSet) {
			return visitor.visitUuidSet(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class XidContext extends ParserRuleContext {
	public _globalTableUid!: XuidStringIdContext;
	public _qualifier!: XuidStringIdContext;
	public _idFormat!: DecimalLiteralContext;
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public xuidStringId_list(): XuidStringIdContext[] {
		return this.getTypedRuleContexts(XuidStringIdContext) as XuidStringIdContext[];
	}
	public xuidStringId(i: number): XuidStringIdContext {
		return this.getTypedRuleContext(XuidStringIdContext, i) as XuidStringIdContext;
	}
	public COMMA_list(): TerminalNode[] {
	    	return this.getTokens(SqlParser.COMMA);
	}
	public COMMA(i: number): TerminalNode {
		return this.getToken(SqlParser.COMMA, i);
	}
	public decimalLiteral(): DecimalLiteralContext {
		return this.getTypedRuleContext(DecimalLiteralContext, 0) as DecimalLiteralContext;
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_xid;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterXid) {
	 		listener.enterXid(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitXid) {
	 		listener.exitXid(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitXid) {
			return visitor.visitXid(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class XuidStringIdContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public STRING_LITERAL(): TerminalNode {
		return this.getToken(SqlParser.STRING_LITERAL, 0);
	}
	public BIT_STRING(): TerminalNode {
		return this.getToken(SqlParser.BIT_STRING, 0);
	}
	public HEXADECIMAL_LITERAL_list(): TerminalNode[] {
	    	return this.getTokens(SqlParser.HEXADECIMAL_LITERAL);
	}
	public HEXADECIMAL_LITERAL(i: number): TerminalNode {
		return this.getToken(SqlParser.HEXADECIMAL_LITERAL, i);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_xuidStringId;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterXuidStringId) {
	 		listener.enterXuidStringId(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitXuidStringId) {
	 		listener.exitXuidStringId(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitXuidStringId) {
			return visitor.visitXuidStringId(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class AuthPluginContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public uid(): UidContext {
		return this.getTypedRuleContext(UidContext, 0) as UidContext;
	}
	public STRING_LITERAL(): TerminalNode {
		return this.getToken(SqlParser.STRING_LITERAL, 0);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_authPlugin;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterAuthPlugin) {
	 		listener.enterAuthPlugin(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitAuthPlugin) {
	 		listener.exitAuthPlugin(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitAuthPlugin) {
			return visitor.visitAuthPlugin(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class UidContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public simpleId(): SimpleIdContext {
		return this.getTypedRuleContext(SimpleIdContext, 0) as SimpleIdContext;
	}
	public REVERSE_QUOTE_ID(): TerminalNode {
		return this.getToken(SqlParser.REVERSE_QUOTE_ID, 0);
	}
	public CHARSET_REVERSE_QOUTE_STRING(): TerminalNode {
		return this.getToken(SqlParser.CHARSET_REVERSE_QOUTE_STRING, 0);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_uid;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterUid) {
	 		listener.enterUid(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitUid) {
	 		listener.exitUid(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitUid) {
			return visitor.visitUid(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class SimpleIdContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public ID(): TerminalNode {
		return this.getToken(SqlParser.ID, 0);
	}
	public charsetNameBase(): CharsetNameBaseContext {
		return this.getTypedRuleContext(CharsetNameBaseContext, 0) as CharsetNameBaseContext;
	}
	public transactionLevelBase(): TransactionLevelBaseContext {
		return this.getTypedRuleContext(TransactionLevelBaseContext, 0) as TransactionLevelBaseContext;
	}
	public engineName(): EngineNameContext {
		return this.getTypedRuleContext(EngineNameContext, 0) as EngineNameContext;
	}
	public privilegesBase(): PrivilegesBaseContext {
		return this.getTypedRuleContext(PrivilegesBaseContext, 0) as PrivilegesBaseContext;
	}
	public intervalTypeBase(): IntervalTypeBaseContext {
		return this.getTypedRuleContext(IntervalTypeBaseContext, 0) as IntervalTypeBaseContext;
	}
	public dataTypeBase(): DataTypeBaseContext {
		return this.getTypedRuleContext(DataTypeBaseContext, 0) as DataTypeBaseContext;
	}
	public keywordsCanBeId(): KeywordsCanBeIdContext {
		return this.getTypedRuleContext(KeywordsCanBeIdContext, 0) as KeywordsCanBeIdContext;
	}
	public functionNameBase(): FunctionNameBaseContext {
		return this.getTypedRuleContext(FunctionNameBaseContext, 0) as FunctionNameBaseContext;
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_simpleId;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterSimpleId) {
	 		listener.enterSimpleId(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitSimpleId) {
	 		listener.exitSimpleId(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitSimpleId) {
			return visitor.visitSimpleId(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class DottedIdContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public DOT_ID(): TerminalNode {
		return this.getToken(SqlParser.DOT_ID, 0);
	}
	public DOT(): TerminalNode {
		return this.getToken(SqlParser.DOT, 0);
	}
	public uid(): UidContext {
		return this.getTypedRuleContext(UidContext, 0) as UidContext;
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_dottedId;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterDottedId) {
	 		listener.enterDottedId(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitDottedId) {
	 		listener.exitDottedId(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitDottedId) {
			return visitor.visitDottedId(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class DecimalLiteralContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public DECIMAL_LITERAL(): TerminalNode {
		return this.getToken(SqlParser.DECIMAL_LITERAL, 0);
	}
	public ZERO_DECIMAL(): TerminalNode {
		return this.getToken(SqlParser.ZERO_DECIMAL, 0);
	}
	public ONE_DECIMAL(): TerminalNode {
		return this.getToken(SqlParser.ONE_DECIMAL, 0);
	}
	public TWO_DECIMAL(): TerminalNode {
		return this.getToken(SqlParser.TWO_DECIMAL, 0);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_decimalLiteral;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterDecimalLiteral) {
	 		listener.enterDecimalLiteral(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitDecimalLiteral) {
	 		listener.exitDecimalLiteral(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitDecimalLiteral) {
			return visitor.visitDecimalLiteral(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class FileSizeLiteralContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public FILESIZE_LITERAL(): TerminalNode {
		return this.getToken(SqlParser.FILESIZE_LITERAL, 0);
	}
	public decimalLiteral(): DecimalLiteralContext {
		return this.getTypedRuleContext(DecimalLiteralContext, 0) as DecimalLiteralContext;
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_fileSizeLiteral;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterFileSizeLiteral) {
	 		listener.enterFileSizeLiteral(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitFileSizeLiteral) {
	 		listener.exitFileSizeLiteral(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitFileSizeLiteral) {
			return visitor.visitFileSizeLiteral(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class StringLiteralContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public STRING_LITERAL_list(): TerminalNode[] {
	    	return this.getTokens(SqlParser.STRING_LITERAL);
	}
	public STRING_LITERAL(i: number): TerminalNode {
		return this.getToken(SqlParser.STRING_LITERAL, i);
	}
	public START_NATIONAL_STRING_LITERAL(): TerminalNode {
		return this.getToken(SqlParser.START_NATIONAL_STRING_LITERAL, 0);
	}
	public STRING_CHARSET_NAME(): TerminalNode {
		return this.getToken(SqlParser.STRING_CHARSET_NAME, 0);
	}
	public COLLATE(): TerminalNode {
		return this.getToken(SqlParser.COLLATE, 0);
	}
	public collationName(): CollationNameContext {
		return this.getTypedRuleContext(CollationNameContext, 0) as CollationNameContext;
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_stringLiteral;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterStringLiteral) {
	 		listener.enterStringLiteral(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitStringLiteral) {
	 		listener.exitStringLiteral(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitStringLiteral) {
			return visitor.visitStringLiteral(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class BooleanLiteralContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public TRUE(): TerminalNode {
		return this.getToken(SqlParser.TRUE, 0);
	}
	public FALSE(): TerminalNode {
		return this.getToken(SqlParser.FALSE, 0);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_booleanLiteral;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterBooleanLiteral) {
	 		listener.enterBooleanLiteral(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitBooleanLiteral) {
	 		listener.exitBooleanLiteral(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitBooleanLiteral) {
			return visitor.visitBooleanLiteral(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class HexadecimalLiteralContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public HEXADECIMAL_LITERAL(): TerminalNode {
		return this.getToken(SqlParser.HEXADECIMAL_LITERAL, 0);
	}
	public STRING_CHARSET_NAME(): TerminalNode {
		return this.getToken(SqlParser.STRING_CHARSET_NAME, 0);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_hexadecimalLiteral;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterHexadecimalLiteral) {
	 		listener.enterHexadecimalLiteral(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitHexadecimalLiteral) {
	 		listener.exitHexadecimalLiteral(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitHexadecimalLiteral) {
			return visitor.visitHexadecimalLiteral(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class NullNotnullContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public NULL_LITERAL(): TerminalNode {
		return this.getToken(SqlParser.NULL_LITERAL, 0);
	}
	public NULL_SPEC_LITERAL(): TerminalNode {
		return this.getToken(SqlParser.NULL_SPEC_LITERAL, 0);
	}
	public NOT(): TerminalNode {
		return this.getToken(SqlParser.NOT, 0);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_nullNotnull;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterNullNotnull) {
	 		listener.enterNullNotnull(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitNullNotnull) {
	 		listener.exitNullNotnull(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitNullNotnull) {
			return visitor.visitNullNotnull(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ConstantContext extends ParserRuleContext {
	public _nullLiteral!: Token;
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public stringLiteral(): StringLiteralContext {
		return this.getTypedRuleContext(StringLiteralContext, 0) as StringLiteralContext;
	}
	public decimalLiteral(): DecimalLiteralContext {
		return this.getTypedRuleContext(DecimalLiteralContext, 0) as DecimalLiteralContext;
	}
	public MINUS(): TerminalNode {
		return this.getToken(SqlParser.MINUS, 0);
	}
	public hexadecimalLiteral(): HexadecimalLiteralContext {
		return this.getTypedRuleContext(HexadecimalLiteralContext, 0) as HexadecimalLiteralContext;
	}
	public booleanLiteral(): BooleanLiteralContext {
		return this.getTypedRuleContext(BooleanLiteralContext, 0) as BooleanLiteralContext;
	}
	public REAL_LITERAL(): TerminalNode {
		return this.getToken(SqlParser.REAL_LITERAL, 0);
	}
	public BIT_STRING(): TerminalNode {
		return this.getToken(SqlParser.BIT_STRING, 0);
	}
	public NULL_LITERAL(): TerminalNode {
		return this.getToken(SqlParser.NULL_LITERAL, 0);
	}
	public NULL_SPEC_LITERAL(): TerminalNode {
		return this.getToken(SqlParser.NULL_SPEC_LITERAL, 0);
	}
	public NOT(): TerminalNode {
		return this.getToken(SqlParser.NOT, 0);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_constant;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterConstant) {
	 		listener.enterConstant(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitConstant) {
	 		listener.exitConstant(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitConstant) {
			return visitor.visitConstant(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class DataTypeContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_dataType;
	}
	public copyFrom(ctx: DataTypeContext): void {
		super.copyFrom(ctx);
	}
}
export class SpatialDataTypeContext extends DataTypeContext {
	public _typeName!: Token;
	constructor(parser: SqlParser, ctx: DataTypeContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public GEOMETRYCOLLECTION(): TerminalNode {
		return this.getToken(SqlParser.GEOMETRYCOLLECTION, 0);
	}
	public GEOMCOLLECTION(): TerminalNode {
		return this.getToken(SqlParser.GEOMCOLLECTION, 0);
	}
	public LINESTRING(): TerminalNode {
		return this.getToken(SqlParser.LINESTRING, 0);
	}
	public MULTILINESTRING(): TerminalNode {
		return this.getToken(SqlParser.MULTILINESTRING, 0);
	}
	public MULTIPOINT(): TerminalNode {
		return this.getToken(SqlParser.MULTIPOINT, 0);
	}
	public MULTIPOLYGON(): TerminalNode {
		return this.getToken(SqlParser.MULTIPOLYGON, 0);
	}
	public POINT(): TerminalNode {
		return this.getToken(SqlParser.POINT, 0);
	}
	public POLYGON(): TerminalNode {
		return this.getToken(SqlParser.POLYGON, 0);
	}
	public JSON(): TerminalNode {
		return this.getToken(SqlParser.JSON, 0);
	}
	public GEOMETRY(): TerminalNode {
		return this.getToken(SqlParser.GEOMETRY, 0);
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterSpatialDataType) {
	 		listener.enterSpatialDataType(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitSpatialDataType) {
	 		listener.exitSpatialDataType(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitSpatialDataType) {
			return visitor.visitSpatialDataType(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class LongVarbinaryDataTypeContext extends DataTypeContext {
	constructor(parser: SqlParser, ctx: DataTypeContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public LONG(): TerminalNode {
		return this.getToken(SqlParser.LONG, 0);
	}
	public VARBINARY(): TerminalNode {
		return this.getToken(SqlParser.VARBINARY, 0);
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterLongVarbinaryDataType) {
	 		listener.enterLongVarbinaryDataType(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitLongVarbinaryDataType) {
	 		listener.exitLongVarbinaryDataType(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitLongVarbinaryDataType) {
			return visitor.visitLongVarbinaryDataType(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class CollectionDataTypeContext extends DataTypeContext {
	public _typeName!: Token;
	constructor(parser: SqlParser, ctx: DataTypeContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public collectionOptions(): CollectionOptionsContext {
		return this.getTypedRuleContext(CollectionOptionsContext, 0) as CollectionOptionsContext;
	}
	public ENUM(): TerminalNode {
		return this.getToken(SqlParser.ENUM, 0);
	}
	public SET_list(): TerminalNode[] {
	    	return this.getTokens(SqlParser.SET);
	}
	public SET(i: number): TerminalNode {
		return this.getToken(SqlParser.SET, i);
	}
	public BINARY(): TerminalNode {
		return this.getToken(SqlParser.BINARY, 0);
	}
	public charsetName(): CharsetNameContext {
		return this.getTypedRuleContext(CharsetNameContext, 0) as CharsetNameContext;
	}
	public CHARACTER(): TerminalNode {
		return this.getToken(SqlParser.CHARACTER, 0);
	}
	public CHARSET(): TerminalNode {
		return this.getToken(SqlParser.CHARSET, 0);
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterCollectionDataType) {
	 		listener.enterCollectionDataType(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitCollectionDataType) {
	 		listener.exitCollectionDataType(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitCollectionDataType) {
			return visitor.visitCollectionDataType(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class NationalVaryingStringDataTypeContext extends DataTypeContext {
	public _typeName!: Token;
	constructor(parser: SqlParser, ctx: DataTypeContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public NATIONAL(): TerminalNode {
		return this.getToken(SqlParser.NATIONAL, 0);
	}
	public VARYING(): TerminalNode {
		return this.getToken(SqlParser.VARYING, 0);
	}
	public CHAR(): TerminalNode {
		return this.getToken(SqlParser.CHAR, 0);
	}
	public CHARACTER(): TerminalNode {
		return this.getToken(SqlParser.CHARACTER, 0);
	}
	public lengthOneDimension(): LengthOneDimensionContext {
		return this.getTypedRuleContext(LengthOneDimensionContext, 0) as LengthOneDimensionContext;
	}
	public BINARY(): TerminalNode {
		return this.getToken(SqlParser.BINARY, 0);
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterNationalVaryingStringDataType) {
	 		listener.enterNationalVaryingStringDataType(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitNationalVaryingStringDataType) {
	 		listener.exitNationalVaryingStringDataType(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitNationalVaryingStringDataType) {
			return visitor.visitNationalVaryingStringDataType(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class DimensionDataTypeContext extends DataTypeContext {
	public _typeName!: Token;
	constructor(parser: SqlParser, ctx: DataTypeContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public TINYINT(): TerminalNode {
		return this.getToken(SqlParser.TINYINT, 0);
	}
	public SMALLINT(): TerminalNode {
		return this.getToken(SqlParser.SMALLINT, 0);
	}
	public MEDIUMINT(): TerminalNode {
		return this.getToken(SqlParser.MEDIUMINT, 0);
	}
	public INT(): TerminalNode {
		return this.getToken(SqlParser.INT, 0);
	}
	public INTEGER(): TerminalNode {
		return this.getToken(SqlParser.INTEGER, 0);
	}
	public BIGINT(): TerminalNode {
		return this.getToken(SqlParser.BIGINT, 0);
	}
	public MIDDLEINT(): TerminalNode {
		return this.getToken(SqlParser.MIDDLEINT, 0);
	}
	public INT1(): TerminalNode {
		return this.getToken(SqlParser.INT1, 0);
	}
	public INT2(): TerminalNode {
		return this.getToken(SqlParser.INT2, 0);
	}
	public INT3(): TerminalNode {
		return this.getToken(SqlParser.INT3, 0);
	}
	public INT4(): TerminalNode {
		return this.getToken(SqlParser.INT4, 0);
	}
	public INT8(): TerminalNode {
		return this.getToken(SqlParser.INT8, 0);
	}
	public lengthOneDimension(): LengthOneDimensionContext {
		return this.getTypedRuleContext(LengthOneDimensionContext, 0) as LengthOneDimensionContext;
	}
	public ZEROFILL(): TerminalNode {
		return this.getToken(SqlParser.ZEROFILL, 0);
	}
	public SIGNED(): TerminalNode {
		return this.getToken(SqlParser.SIGNED, 0);
	}
	public UNSIGNED(): TerminalNode {
		return this.getToken(SqlParser.UNSIGNED, 0);
	}
	public REAL(): TerminalNode {
		return this.getToken(SqlParser.REAL, 0);
	}
	public lengthTwoDimension(): LengthTwoDimensionContext {
		return this.getTypedRuleContext(LengthTwoDimensionContext, 0) as LengthTwoDimensionContext;
	}
	public DOUBLE(): TerminalNode {
		return this.getToken(SqlParser.DOUBLE, 0);
	}
	public PRECISION(): TerminalNode {
		return this.getToken(SqlParser.PRECISION, 0);
	}
	public DECIMAL(): TerminalNode {
		return this.getToken(SqlParser.DECIMAL, 0);
	}
	public DEC(): TerminalNode {
		return this.getToken(SqlParser.DEC, 0);
	}
	public FIXED(): TerminalNode {
		return this.getToken(SqlParser.FIXED, 0);
	}
	public NUMERIC(): TerminalNode {
		return this.getToken(SqlParser.NUMERIC, 0);
	}
	public FLOAT(): TerminalNode {
		return this.getToken(SqlParser.FLOAT, 0);
	}
	public FLOAT4(): TerminalNode {
		return this.getToken(SqlParser.FLOAT4, 0);
	}
	public FLOAT8(): TerminalNode {
		return this.getToken(SqlParser.FLOAT8, 0);
	}
	public lengthTwoOptionalDimension(): LengthTwoOptionalDimensionContext {
		return this.getTypedRuleContext(LengthTwoOptionalDimensionContext, 0) as LengthTwoOptionalDimensionContext;
	}
	public BIT(): TerminalNode {
		return this.getToken(SqlParser.BIT, 0);
	}
	public TIME(): TerminalNode {
		return this.getToken(SqlParser.TIME, 0);
	}
	public TIMESTAMP(): TerminalNode {
		return this.getToken(SqlParser.TIMESTAMP, 0);
	}
	public DATETIME(): TerminalNode {
		return this.getToken(SqlParser.DATETIME, 0);
	}
	public BINARY(): TerminalNode {
		return this.getToken(SqlParser.BINARY, 0);
	}
	public VARBINARY(): TerminalNode {
		return this.getToken(SqlParser.VARBINARY, 0);
	}
	public YEAR(): TerminalNode {
		return this.getToken(SqlParser.YEAR, 0);
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterDimensionDataType) {
	 		listener.enterDimensionDataType(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitDimensionDataType) {
	 		listener.exitDimensionDataType(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitDimensionDataType) {
			return visitor.visitDimensionDataType(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class StringDataTypeContext extends DataTypeContext {
	public _typeName!: Token;
	constructor(parser: SqlParser, ctx: DataTypeContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public CHAR(): TerminalNode {
		return this.getToken(SqlParser.CHAR, 0);
	}
	public CHARACTER_list(): TerminalNode[] {
	    	return this.getTokens(SqlParser.CHARACTER);
	}
	public CHARACTER(i: number): TerminalNode {
		return this.getToken(SqlParser.CHARACTER, i);
	}
	public VARCHAR(): TerminalNode {
		return this.getToken(SqlParser.VARCHAR, 0);
	}
	public TINYTEXT(): TerminalNode {
		return this.getToken(SqlParser.TINYTEXT, 0);
	}
	public TEXT(): TerminalNode {
		return this.getToken(SqlParser.TEXT, 0);
	}
	public MEDIUMTEXT(): TerminalNode {
		return this.getToken(SqlParser.MEDIUMTEXT, 0);
	}
	public LONGTEXT(): TerminalNode {
		return this.getToken(SqlParser.LONGTEXT, 0);
	}
	public NCHAR(): TerminalNode {
		return this.getToken(SqlParser.NCHAR, 0);
	}
	public NVARCHAR(): TerminalNode {
		return this.getToken(SqlParser.NVARCHAR, 0);
	}
	public LONG(): TerminalNode {
		return this.getToken(SqlParser.LONG, 0);
	}
	public lengthOneDimension(): LengthOneDimensionContext {
		return this.getTypedRuleContext(LengthOneDimensionContext, 0) as LengthOneDimensionContext;
	}
	public BINARY(): TerminalNode {
		return this.getToken(SqlParser.BINARY, 0);
	}
	public charsetName(): CharsetNameContext {
		return this.getTypedRuleContext(CharsetNameContext, 0) as CharsetNameContext;
	}
	public COLLATE(): TerminalNode {
		return this.getToken(SqlParser.COLLATE, 0);
	}
	public collationName(): CollationNameContext {
		return this.getTypedRuleContext(CollationNameContext, 0) as CollationNameContext;
	}
	public SET(): TerminalNode {
		return this.getToken(SqlParser.SET, 0);
	}
	public CHARSET(): TerminalNode {
		return this.getToken(SqlParser.CHARSET, 0);
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterStringDataType) {
	 		listener.enterStringDataType(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitStringDataType) {
	 		listener.exitStringDataType(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitStringDataType) {
			return visitor.visitStringDataType(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class LongVarcharDataTypeContext extends DataTypeContext {
	public _typeName!: Token;
	constructor(parser: SqlParser, ctx: DataTypeContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public LONG(): TerminalNode {
		return this.getToken(SqlParser.LONG, 0);
	}
	public VARCHAR(): TerminalNode {
		return this.getToken(SqlParser.VARCHAR, 0);
	}
	public BINARY(): TerminalNode {
		return this.getToken(SqlParser.BINARY, 0);
	}
	public charsetName(): CharsetNameContext {
		return this.getTypedRuleContext(CharsetNameContext, 0) as CharsetNameContext;
	}
	public COLLATE(): TerminalNode {
		return this.getToken(SqlParser.COLLATE, 0);
	}
	public collationName(): CollationNameContext {
		return this.getTypedRuleContext(CollationNameContext, 0) as CollationNameContext;
	}
	public CHARACTER(): TerminalNode {
		return this.getToken(SqlParser.CHARACTER, 0);
	}
	public SET(): TerminalNode {
		return this.getToken(SqlParser.SET, 0);
	}
	public CHARSET(): TerminalNode {
		return this.getToken(SqlParser.CHARSET, 0);
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterLongVarcharDataType) {
	 		listener.enterLongVarcharDataType(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitLongVarcharDataType) {
	 		listener.exitLongVarcharDataType(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitLongVarcharDataType) {
			return visitor.visitLongVarcharDataType(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class NationalStringDataTypeContext extends DataTypeContext {
	public _typeName!: Token;
	constructor(parser: SqlParser, ctx: DataTypeContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public NATIONAL(): TerminalNode {
		return this.getToken(SqlParser.NATIONAL, 0);
	}
	public VARCHAR(): TerminalNode {
		return this.getToken(SqlParser.VARCHAR, 0);
	}
	public CHARACTER(): TerminalNode {
		return this.getToken(SqlParser.CHARACTER, 0);
	}
	public lengthOneDimension(): LengthOneDimensionContext {
		return this.getTypedRuleContext(LengthOneDimensionContext, 0) as LengthOneDimensionContext;
	}
	public BINARY(): TerminalNode {
		return this.getToken(SqlParser.BINARY, 0);
	}
	public NCHAR(): TerminalNode {
		return this.getToken(SqlParser.NCHAR, 0);
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterNationalStringDataType) {
	 		listener.enterNationalStringDataType(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitNationalStringDataType) {
	 		listener.exitNationalStringDataType(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitNationalStringDataType) {
			return visitor.visitNationalStringDataType(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class SimpleDataTypeContext extends DataTypeContext {
	public _typeName!: Token;
	constructor(parser: SqlParser, ctx: DataTypeContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public DATE(): TerminalNode {
		return this.getToken(SqlParser.DATE, 0);
	}
	public TINYBLOB(): TerminalNode {
		return this.getToken(SqlParser.TINYBLOB, 0);
	}
	public BLOB(): TerminalNode {
		return this.getToken(SqlParser.BLOB, 0);
	}
	public MEDIUMBLOB(): TerminalNode {
		return this.getToken(SqlParser.MEDIUMBLOB, 0);
	}
	public LONGBLOB(): TerminalNode {
		return this.getToken(SqlParser.LONGBLOB, 0);
	}
	public BOOL(): TerminalNode {
		return this.getToken(SqlParser.BOOL, 0);
	}
	public BOOLEAN(): TerminalNode {
		return this.getToken(SqlParser.BOOLEAN, 0);
	}
	public SERIAL(): TerminalNode {
		return this.getToken(SqlParser.SERIAL, 0);
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterSimpleDataType) {
	 		listener.enterSimpleDataType(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitSimpleDataType) {
	 		listener.exitSimpleDataType(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitSimpleDataType) {
			return visitor.visitSimpleDataType(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class CollectionOptionsContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public LR_BRACKET(): TerminalNode {
		return this.getToken(SqlParser.LR_BRACKET, 0);
	}
	public STRING_LITERAL_list(): TerminalNode[] {
	    	return this.getTokens(SqlParser.STRING_LITERAL);
	}
	public STRING_LITERAL(i: number): TerminalNode {
		return this.getToken(SqlParser.STRING_LITERAL, i);
	}
	public RR_BRACKET(): TerminalNode {
		return this.getToken(SqlParser.RR_BRACKET, 0);
	}
	public COMMA_list(): TerminalNode[] {
	    	return this.getTokens(SqlParser.COMMA);
	}
	public COMMA(i: number): TerminalNode {
		return this.getToken(SqlParser.COMMA, i);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_collectionOptions;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterCollectionOptions) {
	 		listener.enterCollectionOptions(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitCollectionOptions) {
	 		listener.exitCollectionOptions(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitCollectionOptions) {
			return visitor.visitCollectionOptions(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ConvertedDataTypeContext extends ParserRuleContext {
	public _typeName!: Token;
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public BINARY(): TerminalNode {
		return this.getToken(SqlParser.BINARY, 0);
	}
	public NCHAR(): TerminalNode {
		return this.getToken(SqlParser.NCHAR, 0);
	}
	public lengthOneDimension(): LengthOneDimensionContext {
		return this.getTypedRuleContext(LengthOneDimensionContext, 0) as LengthOneDimensionContext;
	}
	public CHAR(): TerminalNode {
		return this.getToken(SqlParser.CHAR, 0);
	}
	public charsetName(): CharsetNameContext {
		return this.getTypedRuleContext(CharsetNameContext, 0) as CharsetNameContext;
	}
	public CHARACTER(): TerminalNode {
		return this.getToken(SqlParser.CHARACTER, 0);
	}
	public SET(): TerminalNode {
		return this.getToken(SqlParser.SET, 0);
	}
	public CHARSET(): TerminalNode {
		return this.getToken(SqlParser.CHARSET, 0);
	}
	public DATE(): TerminalNode {
		return this.getToken(SqlParser.DATE, 0);
	}
	public DATETIME(): TerminalNode {
		return this.getToken(SqlParser.DATETIME, 0);
	}
	public TIME(): TerminalNode {
		return this.getToken(SqlParser.TIME, 0);
	}
	public JSON(): TerminalNode {
		return this.getToken(SqlParser.JSON, 0);
	}
	public DECIMAL(): TerminalNode {
		return this.getToken(SqlParser.DECIMAL, 0);
	}
	public lengthTwoDimension(): LengthTwoDimensionContext {
		return this.getTypedRuleContext(LengthTwoDimensionContext, 0) as LengthTwoDimensionContext;
	}
	public SIGNED(): TerminalNode {
		return this.getToken(SqlParser.SIGNED, 0);
	}
	public UNSIGNED(): TerminalNode {
		return this.getToken(SqlParser.UNSIGNED, 0);
	}
	public INTEGER(): TerminalNode {
		return this.getToken(SqlParser.INTEGER, 0);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_convertedDataType;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterConvertedDataType) {
	 		listener.enterConvertedDataType(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitConvertedDataType) {
	 		listener.exitConvertedDataType(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitConvertedDataType) {
			return visitor.visitConvertedDataType(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class LengthOneDimensionContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public LR_BRACKET(): TerminalNode {
		return this.getToken(SqlParser.LR_BRACKET, 0);
	}
	public decimalLiteral(): DecimalLiteralContext {
		return this.getTypedRuleContext(DecimalLiteralContext, 0) as DecimalLiteralContext;
	}
	public RR_BRACKET(): TerminalNode {
		return this.getToken(SqlParser.RR_BRACKET, 0);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_lengthOneDimension;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterLengthOneDimension) {
	 		listener.enterLengthOneDimension(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitLengthOneDimension) {
	 		listener.exitLengthOneDimension(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitLengthOneDimension) {
			return visitor.visitLengthOneDimension(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class LengthTwoDimensionContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public LR_BRACKET(): TerminalNode {
		return this.getToken(SqlParser.LR_BRACKET, 0);
	}
	public decimalLiteral_list(): DecimalLiteralContext[] {
		return this.getTypedRuleContexts(DecimalLiteralContext) as DecimalLiteralContext[];
	}
	public decimalLiteral(i: number): DecimalLiteralContext {
		return this.getTypedRuleContext(DecimalLiteralContext, i) as DecimalLiteralContext;
	}
	public COMMA(): TerminalNode {
		return this.getToken(SqlParser.COMMA, 0);
	}
	public RR_BRACKET(): TerminalNode {
		return this.getToken(SqlParser.RR_BRACKET, 0);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_lengthTwoDimension;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterLengthTwoDimension) {
	 		listener.enterLengthTwoDimension(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitLengthTwoDimension) {
	 		listener.exitLengthTwoDimension(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitLengthTwoDimension) {
			return visitor.visitLengthTwoDimension(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class LengthTwoOptionalDimensionContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public LR_BRACKET(): TerminalNode {
		return this.getToken(SqlParser.LR_BRACKET, 0);
	}
	public decimalLiteral_list(): DecimalLiteralContext[] {
		return this.getTypedRuleContexts(DecimalLiteralContext) as DecimalLiteralContext[];
	}
	public decimalLiteral(i: number): DecimalLiteralContext {
		return this.getTypedRuleContext(DecimalLiteralContext, i) as DecimalLiteralContext;
	}
	public RR_BRACKET(): TerminalNode {
		return this.getToken(SqlParser.RR_BRACKET, 0);
	}
	public COMMA(): TerminalNode {
		return this.getToken(SqlParser.COMMA, 0);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_lengthTwoOptionalDimension;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterLengthTwoOptionalDimension) {
	 		listener.enterLengthTwoOptionalDimension(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitLengthTwoOptionalDimension) {
	 		listener.exitLengthTwoOptionalDimension(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitLengthTwoOptionalDimension) {
			return visitor.visitLengthTwoOptionalDimension(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class UidListContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public uid_list(): UidContext[] {
		return this.getTypedRuleContexts(UidContext) as UidContext[];
	}
	public uid(i: number): UidContext {
		return this.getTypedRuleContext(UidContext, i) as UidContext;
	}
	public COMMA_list(): TerminalNode[] {
	    	return this.getTokens(SqlParser.COMMA);
	}
	public COMMA(i: number): TerminalNode {
		return this.getToken(SqlParser.COMMA, i);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_uidList;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterUidList) {
	 		listener.enterUidList(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitUidList) {
	 		listener.exitUidList(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitUidList) {
			return visitor.visitUidList(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class TablesContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public tableName_list(): TableNameContext[] {
		return this.getTypedRuleContexts(TableNameContext) as TableNameContext[];
	}
	public tableName(i: number): TableNameContext {
		return this.getTypedRuleContext(TableNameContext, i) as TableNameContext;
	}
	public COMMA_list(): TerminalNode[] {
	    	return this.getTokens(SqlParser.COMMA);
	}
	public COMMA(i: number): TerminalNode {
		return this.getToken(SqlParser.COMMA, i);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_tables;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterTables) {
	 		listener.enterTables(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitTables) {
	 		listener.exitTables(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitTables) {
			return visitor.visitTables(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class IndexColumnNamesContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public LR_BRACKET(): TerminalNode {
		return this.getToken(SqlParser.LR_BRACKET, 0);
	}
	public indexColumnName_list(): IndexColumnNameContext[] {
		return this.getTypedRuleContexts(IndexColumnNameContext) as IndexColumnNameContext[];
	}
	public indexColumnName(i: number): IndexColumnNameContext {
		return this.getTypedRuleContext(IndexColumnNameContext, i) as IndexColumnNameContext;
	}
	public RR_BRACKET(): TerminalNode {
		return this.getToken(SqlParser.RR_BRACKET, 0);
	}
	public COMMA_list(): TerminalNode[] {
	    	return this.getTokens(SqlParser.COMMA);
	}
	public COMMA(i: number): TerminalNode {
		return this.getToken(SqlParser.COMMA, i);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_indexColumnNames;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterIndexColumnNames) {
	 		listener.enterIndexColumnNames(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitIndexColumnNames) {
	 		listener.exitIndexColumnNames(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitIndexColumnNames) {
			return visitor.visitIndexColumnNames(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ExpressionsContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public expression_list(): ExpressionContext[] {
		return this.getTypedRuleContexts(ExpressionContext) as ExpressionContext[];
	}
	public expression(i: number): ExpressionContext {
		return this.getTypedRuleContext(ExpressionContext, i) as ExpressionContext;
	}
	public COMMA_list(): TerminalNode[] {
	    	return this.getTokens(SqlParser.COMMA);
	}
	public COMMA(i: number): TerminalNode {
		return this.getToken(SqlParser.COMMA, i);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_expressions;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterExpressions) {
	 		listener.enterExpressions(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitExpressions) {
	 		listener.exitExpressions(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitExpressions) {
			return visitor.visitExpressions(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ExpressionsWithDefaultsContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public expressionOrDefault_list(): ExpressionOrDefaultContext[] {
		return this.getTypedRuleContexts(ExpressionOrDefaultContext) as ExpressionOrDefaultContext[];
	}
	public expressionOrDefault(i: number): ExpressionOrDefaultContext {
		return this.getTypedRuleContext(ExpressionOrDefaultContext, i) as ExpressionOrDefaultContext;
	}
	public COMMA_list(): TerminalNode[] {
	    	return this.getTokens(SqlParser.COMMA);
	}
	public COMMA(i: number): TerminalNode {
		return this.getToken(SqlParser.COMMA, i);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_expressionsWithDefaults;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterExpressionsWithDefaults) {
	 		listener.enterExpressionsWithDefaults(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitExpressionsWithDefaults) {
	 		listener.exitExpressionsWithDefaults(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitExpressionsWithDefaults) {
			return visitor.visitExpressionsWithDefaults(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ConstantsContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public constant_list(): ConstantContext[] {
		return this.getTypedRuleContexts(ConstantContext) as ConstantContext[];
	}
	public constant(i: number): ConstantContext {
		return this.getTypedRuleContext(ConstantContext, i) as ConstantContext;
	}
	public COMMA_list(): TerminalNode[] {
	    	return this.getTokens(SqlParser.COMMA);
	}
	public COMMA(i: number): TerminalNode {
		return this.getToken(SqlParser.COMMA, i);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_constants;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterConstants) {
	 		listener.enterConstants(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitConstants) {
	 		listener.exitConstants(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitConstants) {
			return visitor.visitConstants(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class SimpleStringsContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public STRING_LITERAL_list(): TerminalNode[] {
	    	return this.getTokens(SqlParser.STRING_LITERAL);
	}
	public STRING_LITERAL(i: number): TerminalNode {
		return this.getToken(SqlParser.STRING_LITERAL, i);
	}
	public COMMA_list(): TerminalNode[] {
	    	return this.getTokens(SqlParser.COMMA);
	}
	public COMMA(i: number): TerminalNode {
		return this.getToken(SqlParser.COMMA, i);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_simpleStrings;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterSimpleStrings) {
	 		listener.enterSimpleStrings(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitSimpleStrings) {
	 		listener.exitSimpleStrings(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitSimpleStrings) {
			return visitor.visitSimpleStrings(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class UserVariablesContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public LOCAL_ID_list(): TerminalNode[] {
	    	return this.getTokens(SqlParser.LOCAL_ID);
	}
	public LOCAL_ID(i: number): TerminalNode {
		return this.getToken(SqlParser.LOCAL_ID, i);
	}
	public COMMA_list(): TerminalNode[] {
	    	return this.getTokens(SqlParser.COMMA);
	}
	public COMMA(i: number): TerminalNode {
		return this.getToken(SqlParser.COMMA, i);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_userVariables;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterUserVariables) {
	 		listener.enterUserVariables(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitUserVariables) {
	 		listener.exitUserVariables(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitUserVariables) {
			return visitor.visitUserVariables(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class DefaultValueContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public NULL_LITERAL(): TerminalNode {
		return this.getToken(SqlParser.NULL_LITERAL, 0);
	}
	public constant(): ConstantContext {
		return this.getTypedRuleContext(ConstantContext, 0) as ConstantContext;
	}
	public unaryOperator(): UnaryOperatorContext {
		return this.getTypedRuleContext(UnaryOperatorContext, 0) as UnaryOperatorContext;
	}
	public currentTimestamp_list(): CurrentTimestampContext[] {
		return this.getTypedRuleContexts(CurrentTimestampContext) as CurrentTimestampContext[];
	}
	public currentTimestamp(i: number): CurrentTimestampContext {
		return this.getTypedRuleContext(CurrentTimestampContext, i) as CurrentTimestampContext;
	}
	public ON(): TerminalNode {
		return this.getToken(SqlParser.ON, 0);
	}
	public UPDATE(): TerminalNode {
		return this.getToken(SqlParser.UPDATE, 0);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_defaultValue;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterDefaultValue) {
	 		listener.enterDefaultValue(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitDefaultValue) {
	 		listener.exitDefaultValue(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitDefaultValue) {
			return visitor.visitDefaultValue(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class CurrentTimestampContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public NOW(): TerminalNode {
		return this.getToken(SqlParser.NOW, 0);
	}
	public LR_BRACKET(): TerminalNode {
		return this.getToken(SqlParser.LR_BRACKET, 0);
	}
	public RR_BRACKET(): TerminalNode {
		return this.getToken(SqlParser.RR_BRACKET, 0);
	}
	public CURRENT_TIMESTAMP(): TerminalNode {
		return this.getToken(SqlParser.CURRENT_TIMESTAMP, 0);
	}
	public LOCALTIME(): TerminalNode {
		return this.getToken(SqlParser.LOCALTIME, 0);
	}
	public LOCALTIMESTAMP(): TerminalNode {
		return this.getToken(SqlParser.LOCALTIMESTAMP, 0);
	}
	public decimalLiteral(): DecimalLiteralContext {
		return this.getTypedRuleContext(DecimalLiteralContext, 0) as DecimalLiteralContext;
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_currentTimestamp;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterCurrentTimestamp) {
	 		listener.enterCurrentTimestamp(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitCurrentTimestamp) {
	 		listener.exitCurrentTimestamp(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitCurrentTimestamp) {
			return visitor.visitCurrentTimestamp(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ExpressionOrDefaultContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public expression(): ExpressionContext {
		return this.getTypedRuleContext(ExpressionContext, 0) as ExpressionContext;
	}
	public DEFAULT(): TerminalNode {
		return this.getToken(SqlParser.DEFAULT, 0);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_expressionOrDefault;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterExpressionOrDefault) {
	 		listener.enterExpressionOrDefault(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitExpressionOrDefault) {
	 		listener.exitExpressionOrDefault(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitExpressionOrDefault) {
			return visitor.visitExpressionOrDefault(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class IfExistsContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public IF(): TerminalNode {
		return this.getToken(SqlParser.IF, 0);
	}
	public EXISTS(): TerminalNode {
		return this.getToken(SqlParser.EXISTS, 0);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_ifExists;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterIfExists) {
	 		listener.enterIfExists(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitIfExists) {
	 		listener.exitIfExists(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitIfExists) {
			return visitor.visitIfExists(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class IfNotExistsContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public IF(): TerminalNode {
		return this.getToken(SqlParser.IF, 0);
	}
	public NOT(): TerminalNode {
		return this.getToken(SqlParser.NOT, 0);
	}
	public EXISTS(): TerminalNode {
		return this.getToken(SqlParser.EXISTS, 0);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_ifNotExists;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterIfNotExists) {
	 		listener.enterIfNotExists(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitIfNotExists) {
	 		listener.exitIfNotExists(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitIfNotExists) {
			return visitor.visitIfNotExists(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class FunctionCallContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_functionCall;
	}
	public copyFrom(ctx: FunctionCallContext): void {
		super.copyFrom(ctx);
	}
}
export class SpecificFunctionCallContext extends FunctionCallContext {
	constructor(parser: SqlParser, ctx: FunctionCallContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public specificFunction(): SpecificFunctionContext {
		return this.getTypedRuleContext(SpecificFunctionContext, 0) as SpecificFunctionContext;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterSpecificFunctionCall) {
	 		listener.enterSpecificFunctionCall(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitSpecificFunctionCall) {
	 		listener.exitSpecificFunctionCall(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitSpecificFunctionCall) {
			return visitor.visitSpecificFunctionCall(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class PasswordFunctionCallContext extends FunctionCallContext {
	constructor(parser: SqlParser, ctx: FunctionCallContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public passwordFunctionClause(): PasswordFunctionClauseContext {
		return this.getTypedRuleContext(PasswordFunctionClauseContext, 0) as PasswordFunctionClauseContext;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterPasswordFunctionCall) {
	 		listener.enterPasswordFunctionCall(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitPasswordFunctionCall) {
	 		listener.exitPasswordFunctionCall(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitPasswordFunctionCall) {
			return visitor.visitPasswordFunctionCall(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class UdfFunctionCallContext extends FunctionCallContext {
	constructor(parser: SqlParser, ctx: FunctionCallContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public fullId(): FullIdContext {
		return this.getTypedRuleContext(FullIdContext, 0) as FullIdContext;
	}
	public LR_BRACKET(): TerminalNode {
		return this.getToken(SqlParser.LR_BRACKET, 0);
	}
	public RR_BRACKET(): TerminalNode {
		return this.getToken(SqlParser.RR_BRACKET, 0);
	}
	public functionArgs(): FunctionArgsContext {
		return this.getTypedRuleContext(FunctionArgsContext, 0) as FunctionArgsContext;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterUdfFunctionCall) {
	 		listener.enterUdfFunctionCall(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitUdfFunctionCall) {
	 		listener.exitUdfFunctionCall(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitUdfFunctionCall) {
			return visitor.visitUdfFunctionCall(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class AggregateFunctionCallContext extends FunctionCallContext {
	constructor(parser: SqlParser, ctx: FunctionCallContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public aggregateWindowedFunction(): AggregateWindowedFunctionContext {
		return this.getTypedRuleContext(AggregateWindowedFunctionContext, 0) as AggregateWindowedFunctionContext;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterAggregateFunctionCall) {
	 		listener.enterAggregateFunctionCall(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitAggregateFunctionCall) {
	 		listener.exitAggregateFunctionCall(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitAggregateFunctionCall) {
			return visitor.visitAggregateFunctionCall(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class ScalarFunctionCallContext extends FunctionCallContext {
	constructor(parser: SqlParser, ctx: FunctionCallContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public scalarFunctionName(): ScalarFunctionNameContext {
		return this.getTypedRuleContext(ScalarFunctionNameContext, 0) as ScalarFunctionNameContext;
	}
	public LR_BRACKET(): TerminalNode {
		return this.getToken(SqlParser.LR_BRACKET, 0);
	}
	public RR_BRACKET(): TerminalNode {
		return this.getToken(SqlParser.RR_BRACKET, 0);
	}
	public functionArgs(): FunctionArgsContext {
		return this.getTypedRuleContext(FunctionArgsContext, 0) as FunctionArgsContext;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterScalarFunctionCall) {
	 		listener.enterScalarFunctionCall(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitScalarFunctionCall) {
	 		listener.exitScalarFunctionCall(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitScalarFunctionCall) {
			return visitor.visitScalarFunctionCall(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class SpecificFunctionContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_specificFunction;
	}
	public copyFrom(ctx: SpecificFunctionContext): void {
		super.copyFrom(ctx);
	}
}
export class PositionFunctionCallContext extends SpecificFunctionContext {
	public _positionString!: StringLiteralContext;
	public _positionExpression!: ExpressionContext;
	public _inString!: StringLiteralContext;
	public _inExpression!: ExpressionContext;
	constructor(parser: SqlParser, ctx: SpecificFunctionContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public POSITION(): TerminalNode {
		return this.getToken(SqlParser.POSITION, 0);
	}
	public LR_BRACKET(): TerminalNode {
		return this.getToken(SqlParser.LR_BRACKET, 0);
	}
	public IN(): TerminalNode {
		return this.getToken(SqlParser.IN, 0);
	}
	public RR_BRACKET(): TerminalNode {
		return this.getToken(SqlParser.RR_BRACKET, 0);
	}
	public stringLiteral_list(): StringLiteralContext[] {
		return this.getTypedRuleContexts(StringLiteralContext) as StringLiteralContext[];
	}
	public stringLiteral(i: number): StringLiteralContext {
		return this.getTypedRuleContext(StringLiteralContext, i) as StringLiteralContext;
	}
	public expression_list(): ExpressionContext[] {
		return this.getTypedRuleContexts(ExpressionContext) as ExpressionContext[];
	}
	public expression(i: number): ExpressionContext {
		return this.getTypedRuleContext(ExpressionContext, i) as ExpressionContext;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterPositionFunctionCall) {
	 		listener.enterPositionFunctionCall(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitPositionFunctionCall) {
	 		listener.exitPositionFunctionCall(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitPositionFunctionCall) {
			return visitor.visitPositionFunctionCall(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class TrimFunctionCallContext extends SpecificFunctionContext {
	public _positioinForm!: Token;
	public _sourceString!: StringLiteralContext;
	public _sourceExpression!: ExpressionContext;
	public _fromString!: StringLiteralContext;
	public _fromExpression!: ExpressionContext;
	constructor(parser: SqlParser, ctx: SpecificFunctionContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public TRIM(): TerminalNode {
		return this.getToken(SqlParser.TRIM, 0);
	}
	public LR_BRACKET(): TerminalNode {
		return this.getToken(SqlParser.LR_BRACKET, 0);
	}
	public FROM(): TerminalNode {
		return this.getToken(SqlParser.FROM, 0);
	}
	public RR_BRACKET(): TerminalNode {
		return this.getToken(SqlParser.RR_BRACKET, 0);
	}
	public BOTH(): TerminalNode {
		return this.getToken(SqlParser.BOTH, 0);
	}
	public LEADING(): TerminalNode {
		return this.getToken(SqlParser.LEADING, 0);
	}
	public TRAILING(): TerminalNode {
		return this.getToken(SqlParser.TRAILING, 0);
	}
	public stringLiteral_list(): StringLiteralContext[] {
		return this.getTypedRuleContexts(StringLiteralContext) as StringLiteralContext[];
	}
	public stringLiteral(i: number): StringLiteralContext {
		return this.getTypedRuleContext(StringLiteralContext, i) as StringLiteralContext;
	}
	public expression_list(): ExpressionContext[] {
		return this.getTypedRuleContexts(ExpressionContext) as ExpressionContext[];
	}
	public expression(i: number): ExpressionContext {
		return this.getTypedRuleContext(ExpressionContext, i) as ExpressionContext;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterTrimFunctionCall) {
	 		listener.enterTrimFunctionCall(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitTrimFunctionCall) {
	 		listener.exitTrimFunctionCall(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitTrimFunctionCall) {
			return visitor.visitTrimFunctionCall(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class SimpleFunctionCallContext extends SpecificFunctionContext {
	constructor(parser: SqlParser, ctx: SpecificFunctionContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public CURRENT_DATE(): TerminalNode {
		return this.getToken(SqlParser.CURRENT_DATE, 0);
	}
	public CURRENT_TIME(): TerminalNode {
		return this.getToken(SqlParser.CURRENT_TIME, 0);
	}
	public CURRENT_TIMESTAMP(): TerminalNode {
		return this.getToken(SqlParser.CURRENT_TIMESTAMP, 0);
	}
	public CURRENT_USER(): TerminalNode {
		return this.getToken(SqlParser.CURRENT_USER, 0);
	}
	public LOCALTIME(): TerminalNode {
		return this.getToken(SqlParser.LOCALTIME, 0);
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterSimpleFunctionCall) {
	 		listener.enterSimpleFunctionCall(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitSimpleFunctionCall) {
	 		listener.exitSimpleFunctionCall(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitSimpleFunctionCall) {
			return visitor.visitSimpleFunctionCall(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class CharFunctionCallContext extends SpecificFunctionContext {
	constructor(parser: SqlParser, ctx: SpecificFunctionContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public CHAR(): TerminalNode {
		return this.getToken(SqlParser.CHAR, 0);
	}
	public LR_BRACKET(): TerminalNode {
		return this.getToken(SqlParser.LR_BRACKET, 0);
	}
	public functionArgs(): FunctionArgsContext {
		return this.getTypedRuleContext(FunctionArgsContext, 0) as FunctionArgsContext;
	}
	public RR_BRACKET(): TerminalNode {
		return this.getToken(SqlParser.RR_BRACKET, 0);
	}
	public USING(): TerminalNode {
		return this.getToken(SqlParser.USING, 0);
	}
	public charsetName(): CharsetNameContext {
		return this.getTypedRuleContext(CharsetNameContext, 0) as CharsetNameContext;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterCharFunctionCall) {
	 		listener.enterCharFunctionCall(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitCharFunctionCall) {
	 		listener.exitCharFunctionCall(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitCharFunctionCall) {
			return visitor.visitCharFunctionCall(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class WeightFunctionCallContext extends SpecificFunctionContext {
	public _stringFormat!: Token;
	constructor(parser: SqlParser, ctx: SpecificFunctionContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public WEIGHT_STRING(): TerminalNode {
		return this.getToken(SqlParser.WEIGHT_STRING, 0);
	}
	public LR_BRACKET_list(): TerminalNode[] {
	    	return this.getTokens(SqlParser.LR_BRACKET);
	}
	public LR_BRACKET(i: number): TerminalNode {
		return this.getToken(SqlParser.LR_BRACKET, i);
	}
	public RR_BRACKET_list(): TerminalNode[] {
	    	return this.getTokens(SqlParser.RR_BRACKET);
	}
	public RR_BRACKET(i: number): TerminalNode {
		return this.getToken(SqlParser.RR_BRACKET, i);
	}
	public stringLiteral(): StringLiteralContext {
		return this.getTypedRuleContext(StringLiteralContext, 0) as StringLiteralContext;
	}
	public expression(): ExpressionContext {
		return this.getTypedRuleContext(ExpressionContext, 0) as ExpressionContext;
	}
	public AS(): TerminalNode {
		return this.getToken(SqlParser.AS, 0);
	}
	public decimalLiteral(): DecimalLiteralContext {
		return this.getTypedRuleContext(DecimalLiteralContext, 0) as DecimalLiteralContext;
	}
	public levelsInWeightString(): LevelsInWeightStringContext {
		return this.getTypedRuleContext(LevelsInWeightStringContext, 0) as LevelsInWeightStringContext;
	}
	public CHAR(): TerminalNode {
		return this.getToken(SqlParser.CHAR, 0);
	}
	public BINARY(): TerminalNode {
		return this.getToken(SqlParser.BINARY, 0);
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterWeightFunctionCall) {
	 		listener.enterWeightFunctionCall(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitWeightFunctionCall) {
	 		listener.exitWeightFunctionCall(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitWeightFunctionCall) {
			return visitor.visitWeightFunctionCall(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class GetFormatFunctionCallContext extends SpecificFunctionContext {
	public _datetimeFormat!: Token;
	constructor(parser: SqlParser, ctx: SpecificFunctionContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public GET_FORMAT(): TerminalNode {
		return this.getToken(SqlParser.GET_FORMAT, 0);
	}
	public LR_BRACKET(): TerminalNode {
		return this.getToken(SqlParser.LR_BRACKET, 0);
	}
	public COMMA(): TerminalNode {
		return this.getToken(SqlParser.COMMA, 0);
	}
	public stringLiteral(): StringLiteralContext {
		return this.getTypedRuleContext(StringLiteralContext, 0) as StringLiteralContext;
	}
	public RR_BRACKET(): TerminalNode {
		return this.getToken(SqlParser.RR_BRACKET, 0);
	}
	public DATE(): TerminalNode {
		return this.getToken(SqlParser.DATE, 0);
	}
	public TIME(): TerminalNode {
		return this.getToken(SqlParser.TIME, 0);
	}
	public DATETIME(): TerminalNode {
		return this.getToken(SqlParser.DATETIME, 0);
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterGetFormatFunctionCall) {
	 		listener.enterGetFormatFunctionCall(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitGetFormatFunctionCall) {
	 		listener.exitGetFormatFunctionCall(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitGetFormatFunctionCall) {
			return visitor.visitGetFormatFunctionCall(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class CaseFunctionCallContext extends SpecificFunctionContext {
	public _elseArg!: FunctionArgContext;
	constructor(parser: SqlParser, ctx: SpecificFunctionContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public CASE(): TerminalNode {
		return this.getToken(SqlParser.CASE, 0);
	}
	public expression(): ExpressionContext {
		return this.getTypedRuleContext(ExpressionContext, 0) as ExpressionContext;
	}
	public END(): TerminalNode {
		return this.getToken(SqlParser.END, 0);
	}
	public caseFuncAlternative_list(): CaseFuncAlternativeContext[] {
		return this.getTypedRuleContexts(CaseFuncAlternativeContext) as CaseFuncAlternativeContext[];
	}
	public caseFuncAlternative(i: number): CaseFuncAlternativeContext {
		return this.getTypedRuleContext(CaseFuncAlternativeContext, i) as CaseFuncAlternativeContext;
	}
	public ELSE(): TerminalNode {
		return this.getToken(SqlParser.ELSE, 0);
	}
	public functionArg(): FunctionArgContext {
		return this.getTypedRuleContext(FunctionArgContext, 0) as FunctionArgContext;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterCaseFunctionCall) {
	 		listener.enterCaseFunctionCall(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitCaseFunctionCall) {
	 		listener.exitCaseFunctionCall(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitCaseFunctionCall) {
			return visitor.visitCaseFunctionCall(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class ExtractFunctionCallContext extends SpecificFunctionContext {
	public _sourceString!: StringLiteralContext;
	public _sourceExpression!: ExpressionContext;
	constructor(parser: SqlParser, ctx: SpecificFunctionContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public EXTRACT(): TerminalNode {
		return this.getToken(SqlParser.EXTRACT, 0);
	}
	public LR_BRACKET(): TerminalNode {
		return this.getToken(SqlParser.LR_BRACKET, 0);
	}
	public intervalType(): IntervalTypeContext {
		return this.getTypedRuleContext(IntervalTypeContext, 0) as IntervalTypeContext;
	}
	public FROM(): TerminalNode {
		return this.getToken(SqlParser.FROM, 0);
	}
	public RR_BRACKET(): TerminalNode {
		return this.getToken(SqlParser.RR_BRACKET, 0);
	}
	public stringLiteral(): StringLiteralContext {
		return this.getTypedRuleContext(StringLiteralContext, 0) as StringLiteralContext;
	}
	public expression(): ExpressionContext {
		return this.getTypedRuleContext(ExpressionContext, 0) as ExpressionContext;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterExtractFunctionCall) {
	 		listener.enterExtractFunctionCall(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitExtractFunctionCall) {
	 		listener.exitExtractFunctionCall(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitExtractFunctionCall) {
			return visitor.visitExtractFunctionCall(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class DataTypeFunctionCallContext extends SpecificFunctionContext {
	public _separator!: Token;
	constructor(parser: SqlParser, ctx: SpecificFunctionContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public CONVERT(): TerminalNode {
		return this.getToken(SqlParser.CONVERT, 0);
	}
	public LR_BRACKET(): TerminalNode {
		return this.getToken(SqlParser.LR_BRACKET, 0);
	}
	public expression(): ExpressionContext {
		return this.getTypedRuleContext(ExpressionContext, 0) as ExpressionContext;
	}
	public convertedDataType(): ConvertedDataTypeContext {
		return this.getTypedRuleContext(ConvertedDataTypeContext, 0) as ConvertedDataTypeContext;
	}
	public RR_BRACKET(): TerminalNode {
		return this.getToken(SqlParser.RR_BRACKET, 0);
	}
	public COMMA(): TerminalNode {
		return this.getToken(SqlParser.COMMA, 0);
	}
	public USING(): TerminalNode {
		return this.getToken(SqlParser.USING, 0);
	}
	public charsetName(): CharsetNameContext {
		return this.getTypedRuleContext(CharsetNameContext, 0) as CharsetNameContext;
	}
	public CAST(): TerminalNode {
		return this.getToken(SqlParser.CAST, 0);
	}
	public AS(): TerminalNode {
		return this.getToken(SqlParser.AS, 0);
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterDataTypeFunctionCall) {
	 		listener.enterDataTypeFunctionCall(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitDataTypeFunctionCall) {
	 		listener.exitDataTypeFunctionCall(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitDataTypeFunctionCall) {
			return visitor.visitDataTypeFunctionCall(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class ValuesFunctionCallContext extends SpecificFunctionContext {
	constructor(parser: SqlParser, ctx: SpecificFunctionContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public VALUES(): TerminalNode {
		return this.getToken(SqlParser.VALUES, 0);
	}
	public LR_BRACKET(): TerminalNode {
		return this.getToken(SqlParser.LR_BRACKET, 0);
	}
	public fullColumnName(): FullColumnNameContext {
		return this.getTypedRuleContext(FullColumnNameContext, 0) as FullColumnNameContext;
	}
	public RR_BRACKET(): TerminalNode {
		return this.getToken(SqlParser.RR_BRACKET, 0);
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterValuesFunctionCall) {
	 		listener.enterValuesFunctionCall(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitValuesFunctionCall) {
	 		listener.exitValuesFunctionCall(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitValuesFunctionCall) {
			return visitor.visitValuesFunctionCall(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class SubstrFunctionCallContext extends SpecificFunctionContext {
	public _sourceString!: StringLiteralContext;
	public _sourceExpression!: ExpressionContext;
	public _fromDecimal!: DecimalLiteralContext;
	public _fromExpression!: ExpressionContext;
	public _forDecimal!: DecimalLiteralContext;
	public _forExpression!: ExpressionContext;
	constructor(parser: SqlParser, ctx: SpecificFunctionContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public LR_BRACKET(): TerminalNode {
		return this.getToken(SqlParser.LR_BRACKET, 0);
	}
	public FROM(): TerminalNode {
		return this.getToken(SqlParser.FROM, 0);
	}
	public RR_BRACKET(): TerminalNode {
		return this.getToken(SqlParser.RR_BRACKET, 0);
	}
	public SUBSTR(): TerminalNode {
		return this.getToken(SqlParser.SUBSTR, 0);
	}
	public SUBSTRING(): TerminalNode {
		return this.getToken(SqlParser.SUBSTRING, 0);
	}
	public stringLiteral(): StringLiteralContext {
		return this.getTypedRuleContext(StringLiteralContext, 0) as StringLiteralContext;
	}
	public expression_list(): ExpressionContext[] {
		return this.getTypedRuleContexts(ExpressionContext) as ExpressionContext[];
	}
	public expression(i: number): ExpressionContext {
		return this.getTypedRuleContext(ExpressionContext, i) as ExpressionContext;
	}
	public decimalLiteral_list(): DecimalLiteralContext[] {
		return this.getTypedRuleContexts(DecimalLiteralContext) as DecimalLiteralContext[];
	}
	public decimalLiteral(i: number): DecimalLiteralContext {
		return this.getTypedRuleContext(DecimalLiteralContext, i) as DecimalLiteralContext;
	}
	public FOR(): TerminalNode {
		return this.getToken(SqlParser.FOR, 0);
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterSubstrFunctionCall) {
	 		listener.enterSubstrFunctionCall(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitSubstrFunctionCall) {
	 		listener.exitSubstrFunctionCall(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitSubstrFunctionCall) {
			return visitor.visitSubstrFunctionCall(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class CaseFuncAlternativeContext extends ParserRuleContext {
	public _condition!: FunctionArgContext;
	public _consequent!: FunctionArgContext;
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public WHEN(): TerminalNode {
		return this.getToken(SqlParser.WHEN, 0);
	}
	public THEN(): TerminalNode {
		return this.getToken(SqlParser.THEN, 0);
	}
	public functionArg_list(): FunctionArgContext[] {
		return this.getTypedRuleContexts(FunctionArgContext) as FunctionArgContext[];
	}
	public functionArg(i: number): FunctionArgContext {
		return this.getTypedRuleContext(FunctionArgContext, i) as FunctionArgContext;
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_caseFuncAlternative;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterCaseFuncAlternative) {
	 		listener.enterCaseFuncAlternative(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitCaseFuncAlternative) {
	 		listener.exitCaseFuncAlternative(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitCaseFuncAlternative) {
			return visitor.visitCaseFuncAlternative(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class LevelsInWeightStringContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_levelsInWeightString;
	}
	public copyFrom(ctx: LevelsInWeightStringContext): void {
		super.copyFrom(ctx);
	}
}
export class LevelWeightRangeContext extends LevelsInWeightStringContext {
	public _firstLevel!: DecimalLiteralContext;
	public _lastLevel!: DecimalLiteralContext;
	constructor(parser: SqlParser, ctx: LevelsInWeightStringContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public LEVEL(): TerminalNode {
		return this.getToken(SqlParser.LEVEL, 0);
	}
	public MINUS(): TerminalNode {
		return this.getToken(SqlParser.MINUS, 0);
	}
	public decimalLiteral_list(): DecimalLiteralContext[] {
		return this.getTypedRuleContexts(DecimalLiteralContext) as DecimalLiteralContext[];
	}
	public decimalLiteral(i: number): DecimalLiteralContext {
		return this.getTypedRuleContext(DecimalLiteralContext, i) as DecimalLiteralContext;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterLevelWeightRange) {
	 		listener.enterLevelWeightRange(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitLevelWeightRange) {
	 		listener.exitLevelWeightRange(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitLevelWeightRange) {
			return visitor.visitLevelWeightRange(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class LevelWeightListContext extends LevelsInWeightStringContext {
	constructor(parser: SqlParser, ctx: LevelsInWeightStringContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public LEVEL(): TerminalNode {
		return this.getToken(SqlParser.LEVEL, 0);
	}
	public levelInWeightListElement_list(): LevelInWeightListElementContext[] {
		return this.getTypedRuleContexts(LevelInWeightListElementContext) as LevelInWeightListElementContext[];
	}
	public levelInWeightListElement(i: number): LevelInWeightListElementContext {
		return this.getTypedRuleContext(LevelInWeightListElementContext, i) as LevelInWeightListElementContext;
	}
	public COMMA_list(): TerminalNode[] {
	    	return this.getTokens(SqlParser.COMMA);
	}
	public COMMA(i: number): TerminalNode {
		return this.getToken(SqlParser.COMMA, i);
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterLevelWeightList) {
	 		listener.enterLevelWeightList(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitLevelWeightList) {
	 		listener.exitLevelWeightList(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitLevelWeightList) {
			return visitor.visitLevelWeightList(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class LevelInWeightListElementContext extends ParserRuleContext {
	public _orderType!: Token;
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public decimalLiteral(): DecimalLiteralContext {
		return this.getTypedRuleContext(DecimalLiteralContext, 0) as DecimalLiteralContext;
	}
	public ASC(): TerminalNode {
		return this.getToken(SqlParser.ASC, 0);
	}
	public DESC(): TerminalNode {
		return this.getToken(SqlParser.DESC, 0);
	}
	public REVERSE(): TerminalNode {
		return this.getToken(SqlParser.REVERSE, 0);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_levelInWeightListElement;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterLevelInWeightListElement) {
	 		listener.enterLevelInWeightListElement(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitLevelInWeightListElement) {
	 		listener.exitLevelInWeightListElement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitLevelInWeightListElement) {
			return visitor.visitLevelInWeightListElement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class AggregateWindowedFunctionContext extends ParserRuleContext {
	public _aggregator!: Token;
	public _starArg!: Token;
	public _separator!: Token;
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public LR_BRACKET(): TerminalNode {
		return this.getToken(SqlParser.LR_BRACKET, 0);
	}
	public functionArg(): FunctionArgContext {
		return this.getTypedRuleContext(FunctionArgContext, 0) as FunctionArgContext;
	}
	public RR_BRACKET(): TerminalNode {
		return this.getToken(SqlParser.RR_BRACKET, 0);
	}
	public AVG(): TerminalNode {
		return this.getToken(SqlParser.AVG, 0);
	}
	public MAX(): TerminalNode {
		return this.getToken(SqlParser.MAX, 0);
	}
	public MIN(): TerminalNode {
		return this.getToken(SqlParser.MIN, 0);
	}
	public SUM(): TerminalNode {
		return this.getToken(SqlParser.SUM, 0);
	}
	public ALL(): TerminalNode {
		return this.getToken(SqlParser.ALL, 0);
	}
	public DISTINCT(): TerminalNode {
		return this.getToken(SqlParser.DISTINCT, 0);
	}
	public COUNT(): TerminalNode {
		return this.getToken(SqlParser.COUNT, 0);
	}
	public STAR(): TerminalNode {
		return this.getToken(SqlParser.STAR, 0);
	}
	public functionArgs(): FunctionArgsContext {
		return this.getTypedRuleContext(FunctionArgsContext, 0) as FunctionArgsContext;
	}
	public BIT_AND(): TerminalNode {
		return this.getToken(SqlParser.BIT_AND, 0);
	}
	public BIT_OR(): TerminalNode {
		return this.getToken(SqlParser.BIT_OR, 0);
	}
	public BIT_XOR(): TerminalNode {
		return this.getToken(SqlParser.BIT_XOR, 0);
	}
	public STD(): TerminalNode {
		return this.getToken(SqlParser.STD, 0);
	}
	public STDDEV(): TerminalNode {
		return this.getToken(SqlParser.STDDEV, 0);
	}
	public STDDEV_POP(): TerminalNode {
		return this.getToken(SqlParser.STDDEV_POP, 0);
	}
	public STDDEV_SAMP(): TerminalNode {
		return this.getToken(SqlParser.STDDEV_SAMP, 0);
	}
	public VAR_POP(): TerminalNode {
		return this.getToken(SqlParser.VAR_POP, 0);
	}
	public VAR_SAMP(): TerminalNode {
		return this.getToken(SqlParser.VAR_SAMP, 0);
	}
	public VARIANCE(): TerminalNode {
		return this.getToken(SqlParser.VARIANCE, 0);
	}
	public GROUP_CONCAT(): TerminalNode {
		return this.getToken(SqlParser.GROUP_CONCAT, 0);
	}
	public ORDER(): TerminalNode {
		return this.getToken(SqlParser.ORDER, 0);
	}
	public BY(): TerminalNode {
		return this.getToken(SqlParser.BY, 0);
	}
	public orderByExpression_list(): OrderByExpressionContext[] {
		return this.getTypedRuleContexts(OrderByExpressionContext) as OrderByExpressionContext[];
	}
	public orderByExpression(i: number): OrderByExpressionContext {
		return this.getTypedRuleContext(OrderByExpressionContext, i) as OrderByExpressionContext;
	}
	public SEPARATOR(): TerminalNode {
		return this.getToken(SqlParser.SEPARATOR, 0);
	}
	public STRING_LITERAL(): TerminalNode {
		return this.getToken(SqlParser.STRING_LITERAL, 0);
	}
	public COMMA_list(): TerminalNode[] {
	    	return this.getTokens(SqlParser.COMMA);
	}
	public COMMA(i: number): TerminalNode {
		return this.getToken(SqlParser.COMMA, i);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_aggregateWindowedFunction;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterAggregateWindowedFunction) {
	 		listener.enterAggregateWindowedFunction(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitAggregateWindowedFunction) {
	 		listener.exitAggregateWindowedFunction(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitAggregateWindowedFunction) {
			return visitor.visitAggregateWindowedFunction(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ScalarFunctionNameContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public functionNameBase(): FunctionNameBaseContext {
		return this.getTypedRuleContext(FunctionNameBaseContext, 0) as FunctionNameBaseContext;
	}
	public ASCII(): TerminalNode {
		return this.getToken(SqlParser.ASCII, 0);
	}
	public CURDATE(): TerminalNode {
		return this.getToken(SqlParser.CURDATE, 0);
	}
	public CURRENT_DATE(): TerminalNode {
		return this.getToken(SqlParser.CURRENT_DATE, 0);
	}
	public CURRENT_TIME(): TerminalNode {
		return this.getToken(SqlParser.CURRENT_TIME, 0);
	}
	public CURRENT_TIMESTAMP(): TerminalNode {
		return this.getToken(SqlParser.CURRENT_TIMESTAMP, 0);
	}
	public CURTIME(): TerminalNode {
		return this.getToken(SqlParser.CURTIME, 0);
	}
	public DATE_ADD(): TerminalNode {
		return this.getToken(SqlParser.DATE_ADD, 0);
	}
	public DATE_SUB(): TerminalNode {
		return this.getToken(SqlParser.DATE_SUB, 0);
	}
	public IF(): TerminalNode {
		return this.getToken(SqlParser.IF, 0);
	}
	public INSERT(): TerminalNode {
		return this.getToken(SqlParser.INSERT, 0);
	}
	public LOCALTIME(): TerminalNode {
		return this.getToken(SqlParser.LOCALTIME, 0);
	}
	public LOCALTIMESTAMP(): TerminalNode {
		return this.getToken(SqlParser.LOCALTIMESTAMP, 0);
	}
	public MID(): TerminalNode {
		return this.getToken(SqlParser.MID, 0);
	}
	public NOW(): TerminalNode {
		return this.getToken(SqlParser.NOW, 0);
	}
	public REPLACE(): TerminalNode {
		return this.getToken(SqlParser.REPLACE, 0);
	}
	public SUBSTR(): TerminalNode {
		return this.getToken(SqlParser.SUBSTR, 0);
	}
	public SUBSTRING(): TerminalNode {
		return this.getToken(SqlParser.SUBSTRING, 0);
	}
	public SYSDATE(): TerminalNode {
		return this.getToken(SqlParser.SYSDATE, 0);
	}
	public TRIM(): TerminalNode {
		return this.getToken(SqlParser.TRIM, 0);
	}
	public UTC_DATE(): TerminalNode {
		return this.getToken(SqlParser.UTC_DATE, 0);
	}
	public UTC_TIME(): TerminalNode {
		return this.getToken(SqlParser.UTC_TIME, 0);
	}
	public UTC_TIMESTAMP(): TerminalNode {
		return this.getToken(SqlParser.UTC_TIMESTAMP, 0);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_scalarFunctionName;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterScalarFunctionName) {
	 		listener.enterScalarFunctionName(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitScalarFunctionName) {
	 		listener.exitScalarFunctionName(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitScalarFunctionName) {
			return visitor.visitScalarFunctionName(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class PasswordFunctionClauseContext extends ParserRuleContext {
	public _functionName!: Token;
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public LR_BRACKET(): TerminalNode {
		return this.getToken(SqlParser.LR_BRACKET, 0);
	}
	public functionArg(): FunctionArgContext {
		return this.getTypedRuleContext(FunctionArgContext, 0) as FunctionArgContext;
	}
	public RR_BRACKET(): TerminalNode {
		return this.getToken(SqlParser.RR_BRACKET, 0);
	}
	public PASSWORD(): TerminalNode {
		return this.getToken(SqlParser.PASSWORD, 0);
	}
	public OLD_PASSWORD(): TerminalNode {
		return this.getToken(SqlParser.OLD_PASSWORD, 0);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_passwordFunctionClause;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterPasswordFunctionClause) {
	 		listener.enterPasswordFunctionClause(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitPasswordFunctionClause) {
	 		listener.exitPasswordFunctionClause(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitPasswordFunctionClause) {
			return visitor.visitPasswordFunctionClause(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class FunctionArgsContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public constant_list(): ConstantContext[] {
		return this.getTypedRuleContexts(ConstantContext) as ConstantContext[];
	}
	public constant(i: number): ConstantContext {
		return this.getTypedRuleContext(ConstantContext, i) as ConstantContext;
	}
	public fullColumnName_list(): FullColumnNameContext[] {
		return this.getTypedRuleContexts(FullColumnNameContext) as FullColumnNameContext[];
	}
	public fullColumnName(i: number): FullColumnNameContext {
		return this.getTypedRuleContext(FullColumnNameContext, i) as FullColumnNameContext;
	}
	public functionCall_list(): FunctionCallContext[] {
		return this.getTypedRuleContexts(FunctionCallContext) as FunctionCallContext[];
	}
	public functionCall(i: number): FunctionCallContext {
		return this.getTypedRuleContext(FunctionCallContext, i) as FunctionCallContext;
	}
	public expression_list(): ExpressionContext[] {
		return this.getTypedRuleContexts(ExpressionContext) as ExpressionContext[];
	}
	public expression(i: number): ExpressionContext {
		return this.getTypedRuleContext(ExpressionContext, i) as ExpressionContext;
	}
	public COMMA_list(): TerminalNode[] {
	    	return this.getTokens(SqlParser.COMMA);
	}
	public COMMA(i: number): TerminalNode {
		return this.getToken(SqlParser.COMMA, i);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_functionArgs;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterFunctionArgs) {
	 		listener.enterFunctionArgs(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitFunctionArgs) {
	 		listener.exitFunctionArgs(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitFunctionArgs) {
			return visitor.visitFunctionArgs(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class FunctionArgContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public constant(): ConstantContext {
		return this.getTypedRuleContext(ConstantContext, 0) as ConstantContext;
	}
	public fullColumnName(): FullColumnNameContext {
		return this.getTypedRuleContext(FullColumnNameContext, 0) as FullColumnNameContext;
	}
	public functionCall(): FunctionCallContext {
		return this.getTypedRuleContext(FunctionCallContext, 0) as FunctionCallContext;
	}
	public expression(): ExpressionContext {
		return this.getTypedRuleContext(ExpressionContext, 0) as ExpressionContext;
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_functionArg;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterFunctionArg) {
	 		listener.enterFunctionArg(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitFunctionArg) {
	 		listener.exitFunctionArg(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitFunctionArg) {
			return visitor.visitFunctionArg(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ExpressionContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_expression;
	}
	public copyFrom(ctx: ExpressionContext): void {
		super.copyFrom(ctx);
	}
}
export class IsExpressionContext extends ExpressionContext {
	public _testValue!: Token;
	constructor(parser: SqlParser, ctx: ExpressionContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public predicate(): PredicateContext {
		return this.getTypedRuleContext(PredicateContext, 0) as PredicateContext;
	}
	public IS(): TerminalNode {
		return this.getToken(SqlParser.IS, 0);
	}
	public TRUE(): TerminalNode {
		return this.getToken(SqlParser.TRUE, 0);
	}
	public FALSE(): TerminalNode {
		return this.getToken(SqlParser.FALSE, 0);
	}
	public UNKNOWN(): TerminalNode {
		return this.getToken(SqlParser.UNKNOWN, 0);
	}
	public NOT(): TerminalNode {
		return this.getToken(SqlParser.NOT, 0);
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterIsExpression) {
	 		listener.enterIsExpression(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitIsExpression) {
	 		listener.exitIsExpression(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitIsExpression) {
			return visitor.visitIsExpression(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class NotExpressionContext extends ExpressionContext {
	public _notOperator!: Token;
	constructor(parser: SqlParser, ctx: ExpressionContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public expression(): ExpressionContext {
		return this.getTypedRuleContext(ExpressionContext, 0) as ExpressionContext;
	}
	public NOT(): TerminalNode {
		return this.getToken(SqlParser.NOT, 0);
	}
	public EXCLAMATION_SYMBOL(): TerminalNode {
		return this.getToken(SqlParser.EXCLAMATION_SYMBOL, 0);
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterNotExpression) {
	 		listener.enterNotExpression(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitNotExpression) {
	 		listener.exitNotExpression(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitNotExpression) {
			return visitor.visitNotExpression(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class LogicalExpressionContext extends ExpressionContext {
	constructor(parser: SqlParser, ctx: ExpressionContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public expression_list(): ExpressionContext[] {
		return this.getTypedRuleContexts(ExpressionContext) as ExpressionContext[];
	}
	public expression(i: number): ExpressionContext {
		return this.getTypedRuleContext(ExpressionContext, i) as ExpressionContext;
	}
	public logicalOperator(): LogicalOperatorContext {
		return this.getTypedRuleContext(LogicalOperatorContext, 0) as LogicalOperatorContext;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterLogicalExpression) {
	 		listener.enterLogicalExpression(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitLogicalExpression) {
	 		listener.exitLogicalExpression(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitLogicalExpression) {
			return visitor.visitLogicalExpression(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class PredicateExpressionContext extends ExpressionContext {
	constructor(parser: SqlParser, ctx: ExpressionContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public predicate(): PredicateContext {
		return this.getTypedRuleContext(PredicateContext, 0) as PredicateContext;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterPredicateExpression) {
	 		listener.enterPredicateExpression(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitPredicateExpression) {
	 		listener.exitPredicateExpression(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitPredicateExpression) {
			return visitor.visitPredicateExpression(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class PredicateContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_predicate;
	}
	public copyFrom(ctx: PredicateContext): void {
		super.copyFrom(ctx);
	}
}
export class SoundsLikePredicateContext extends PredicateContext {
	constructor(parser: SqlParser, ctx: PredicateContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public predicate_list(): PredicateContext[] {
		return this.getTypedRuleContexts(PredicateContext) as PredicateContext[];
	}
	public predicate(i: number): PredicateContext {
		return this.getTypedRuleContext(PredicateContext, i) as PredicateContext;
	}
	public SOUNDS(): TerminalNode {
		return this.getToken(SqlParser.SOUNDS, 0);
	}
	public LIKE(): TerminalNode {
		return this.getToken(SqlParser.LIKE, 0);
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterSoundsLikePredicate) {
	 		listener.enterSoundsLikePredicate(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitSoundsLikePredicate) {
	 		listener.exitSoundsLikePredicate(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitSoundsLikePredicate) {
			return visitor.visitSoundsLikePredicate(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class ExpressionAtomPredicateContext extends PredicateContext {
	constructor(parser: SqlParser, ctx: PredicateContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public expressionAtom(): ExpressionAtomContext {
		return this.getTypedRuleContext(ExpressionAtomContext, 0) as ExpressionAtomContext;
	}
	public LOCAL_ID(): TerminalNode {
		return this.getToken(SqlParser.LOCAL_ID, 0);
	}
	public VAR_ASSIGN(): TerminalNode {
		return this.getToken(SqlParser.VAR_ASSIGN, 0);
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterExpressionAtomPredicate) {
	 		listener.enterExpressionAtomPredicate(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitExpressionAtomPredicate) {
	 		listener.exitExpressionAtomPredicate(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitExpressionAtomPredicate) {
			return visitor.visitExpressionAtomPredicate(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class InPredicateContext extends PredicateContext {
	constructor(parser: SqlParser, ctx: PredicateContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public predicate(): PredicateContext {
		return this.getTypedRuleContext(PredicateContext, 0) as PredicateContext;
	}
	public IN(): TerminalNode {
		return this.getToken(SqlParser.IN, 0);
	}
	public LR_BRACKET(): TerminalNode {
		return this.getToken(SqlParser.LR_BRACKET, 0);
	}
	public RR_BRACKET(): TerminalNode {
		return this.getToken(SqlParser.RR_BRACKET, 0);
	}
	public selectStatement(): SelectStatementContext {
		return this.getTypedRuleContext(SelectStatementContext, 0) as SelectStatementContext;
	}
	public expressions(): ExpressionsContext {
		return this.getTypedRuleContext(ExpressionsContext, 0) as ExpressionsContext;
	}
	public NOT(): TerminalNode {
		return this.getToken(SqlParser.NOT, 0);
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterInPredicate) {
	 		listener.enterInPredicate(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitInPredicate) {
	 		listener.exitInPredicate(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitInPredicate) {
			return visitor.visitInPredicate(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class SubqueryComparasionPredicateContext extends PredicateContext {
	public _quantifier!: Token;
	constructor(parser: SqlParser, ctx: PredicateContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public predicate(): PredicateContext {
		return this.getTypedRuleContext(PredicateContext, 0) as PredicateContext;
	}
	public comparisonOperator(): ComparisonOperatorContext {
		return this.getTypedRuleContext(ComparisonOperatorContext, 0) as ComparisonOperatorContext;
	}
	public LR_BRACKET(): TerminalNode {
		return this.getToken(SqlParser.LR_BRACKET, 0);
	}
	public selectStatement(): SelectStatementContext {
		return this.getTypedRuleContext(SelectStatementContext, 0) as SelectStatementContext;
	}
	public RR_BRACKET(): TerminalNode {
		return this.getToken(SqlParser.RR_BRACKET, 0);
	}
	public ALL(): TerminalNode {
		return this.getToken(SqlParser.ALL, 0);
	}
	public ANY(): TerminalNode {
		return this.getToken(SqlParser.ANY, 0);
	}
	public SOME(): TerminalNode {
		return this.getToken(SqlParser.SOME, 0);
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterSubqueryComparasionPredicate) {
	 		listener.enterSubqueryComparasionPredicate(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitSubqueryComparasionPredicate) {
	 		listener.exitSubqueryComparasionPredicate(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitSubqueryComparasionPredicate) {
			return visitor.visitSubqueryComparasionPredicate(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class BetweenPredicateContext extends PredicateContext {
	constructor(parser: SqlParser, ctx: PredicateContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public predicate_list(): PredicateContext[] {
		return this.getTypedRuleContexts(PredicateContext) as PredicateContext[];
	}
	public predicate(i: number): PredicateContext {
		return this.getTypedRuleContext(PredicateContext, i) as PredicateContext;
	}
	public BETWEEN(): TerminalNode {
		return this.getToken(SqlParser.BETWEEN, 0);
	}
	public AND(): TerminalNode {
		return this.getToken(SqlParser.AND, 0);
	}
	public NOT(): TerminalNode {
		return this.getToken(SqlParser.NOT, 0);
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterBetweenPredicate) {
	 		listener.enterBetweenPredicate(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitBetweenPredicate) {
	 		listener.exitBetweenPredicate(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitBetweenPredicate) {
			return visitor.visitBetweenPredicate(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class BinaryComparasionPredicateContext extends PredicateContext {
	public _left!: PredicateContext;
	public _right!: PredicateContext;
	constructor(parser: SqlParser, ctx: PredicateContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public comparisonOperator(): ComparisonOperatorContext {
		return this.getTypedRuleContext(ComparisonOperatorContext, 0) as ComparisonOperatorContext;
	}
	public predicate_list(): PredicateContext[] {
		return this.getTypedRuleContexts(PredicateContext) as PredicateContext[];
	}
	public predicate(i: number): PredicateContext {
		return this.getTypedRuleContext(PredicateContext, i) as PredicateContext;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterBinaryComparasionPredicate) {
	 		listener.enterBinaryComparasionPredicate(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitBinaryComparasionPredicate) {
	 		listener.exitBinaryComparasionPredicate(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitBinaryComparasionPredicate) {
			return visitor.visitBinaryComparasionPredicate(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class IsNullPredicateContext extends PredicateContext {
	constructor(parser: SqlParser, ctx: PredicateContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public predicate(): PredicateContext {
		return this.getTypedRuleContext(PredicateContext, 0) as PredicateContext;
	}
	public IS(): TerminalNode {
		return this.getToken(SqlParser.IS, 0);
	}
	public nullNotnull(): NullNotnullContext {
		return this.getTypedRuleContext(NullNotnullContext, 0) as NullNotnullContext;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterIsNullPredicate) {
	 		listener.enterIsNullPredicate(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitIsNullPredicate) {
	 		listener.exitIsNullPredicate(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitIsNullPredicate) {
			return visitor.visitIsNullPredicate(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class LikePredicateContext extends PredicateContext {
	constructor(parser: SqlParser, ctx: PredicateContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public predicate_list(): PredicateContext[] {
		return this.getTypedRuleContexts(PredicateContext) as PredicateContext[];
	}
	public predicate(i: number): PredicateContext {
		return this.getTypedRuleContext(PredicateContext, i) as PredicateContext;
	}
	public LIKE(): TerminalNode {
		return this.getToken(SqlParser.LIKE, 0);
	}
	public NOT(): TerminalNode {
		return this.getToken(SqlParser.NOT, 0);
	}
	public ESCAPE(): TerminalNode {
		return this.getToken(SqlParser.ESCAPE, 0);
	}
	public STRING_LITERAL(): TerminalNode {
		return this.getToken(SqlParser.STRING_LITERAL, 0);
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterLikePredicate) {
	 		listener.enterLikePredicate(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitLikePredicate) {
	 		listener.exitLikePredicate(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitLikePredicate) {
			return visitor.visitLikePredicate(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class RegexpPredicateContext extends PredicateContext {
	public _regex!: Token;
	constructor(parser: SqlParser, ctx: PredicateContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public predicate_list(): PredicateContext[] {
		return this.getTypedRuleContexts(PredicateContext) as PredicateContext[];
	}
	public predicate(i: number): PredicateContext {
		return this.getTypedRuleContext(PredicateContext, i) as PredicateContext;
	}
	public REGEXP(): TerminalNode {
		return this.getToken(SqlParser.REGEXP, 0);
	}
	public RLIKE(): TerminalNode {
		return this.getToken(SqlParser.RLIKE, 0);
	}
	public NOT(): TerminalNode {
		return this.getToken(SqlParser.NOT, 0);
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterRegexpPredicate) {
	 		listener.enterRegexpPredicate(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitRegexpPredicate) {
	 		listener.exitRegexpPredicate(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitRegexpPredicate) {
			return visitor.visitRegexpPredicate(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ExpressionAtomContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_expressionAtom;
	}
	public copyFrom(ctx: ExpressionAtomContext): void {
		super.copyFrom(ctx);
	}
}
export class UnaryExpressionAtomContext extends ExpressionAtomContext {
	constructor(parser: SqlParser, ctx: ExpressionAtomContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public unaryOperator(): UnaryOperatorContext {
		return this.getTypedRuleContext(UnaryOperatorContext, 0) as UnaryOperatorContext;
	}
	public expressionAtom(): ExpressionAtomContext {
		return this.getTypedRuleContext(ExpressionAtomContext, 0) as ExpressionAtomContext;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterUnaryExpressionAtom) {
	 		listener.enterUnaryExpressionAtom(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitUnaryExpressionAtom) {
	 		listener.exitUnaryExpressionAtom(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitUnaryExpressionAtom) {
			return visitor.visitUnaryExpressionAtom(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class CollateExpressionAtomContext extends ExpressionAtomContext {
	constructor(parser: SqlParser, ctx: ExpressionAtomContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public expressionAtom(): ExpressionAtomContext {
		return this.getTypedRuleContext(ExpressionAtomContext, 0) as ExpressionAtomContext;
	}
	public COLLATE(): TerminalNode {
		return this.getToken(SqlParser.COLLATE, 0);
	}
	public collationName(): CollationNameContext {
		return this.getTypedRuleContext(CollationNameContext, 0) as CollationNameContext;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterCollateExpressionAtom) {
	 		listener.enterCollateExpressionAtom(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitCollateExpressionAtom) {
	 		listener.exitCollateExpressionAtom(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitCollateExpressionAtom) {
			return visitor.visitCollateExpressionAtom(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class SubqueryExpessionAtomContext extends ExpressionAtomContext {
	constructor(parser: SqlParser, ctx: ExpressionAtomContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public LR_BRACKET(): TerminalNode {
		return this.getToken(SqlParser.LR_BRACKET, 0);
	}
	public selectStatement(): SelectStatementContext {
		return this.getTypedRuleContext(SelectStatementContext, 0) as SelectStatementContext;
	}
	public RR_BRACKET(): TerminalNode {
		return this.getToken(SqlParser.RR_BRACKET, 0);
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterSubqueryExpessionAtom) {
	 		listener.enterSubqueryExpessionAtom(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitSubqueryExpessionAtom) {
	 		listener.exitSubqueryExpessionAtom(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitSubqueryExpessionAtom) {
			return visitor.visitSubqueryExpessionAtom(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class MysqlVariableExpressionAtomContext extends ExpressionAtomContext {
	constructor(parser: SqlParser, ctx: ExpressionAtomContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public mysqlVariable(): MysqlVariableContext {
		return this.getTypedRuleContext(MysqlVariableContext, 0) as MysqlVariableContext;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterMysqlVariableExpressionAtom) {
	 		listener.enterMysqlVariableExpressionAtom(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitMysqlVariableExpressionAtom) {
	 		listener.exitMysqlVariableExpressionAtom(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitMysqlVariableExpressionAtom) {
			return visitor.visitMysqlVariableExpressionAtom(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class NestedExpressionAtomContext extends ExpressionAtomContext {
	constructor(parser: SqlParser, ctx: ExpressionAtomContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public LR_BRACKET(): TerminalNode {
		return this.getToken(SqlParser.LR_BRACKET, 0);
	}
	public expression_list(): ExpressionContext[] {
		return this.getTypedRuleContexts(ExpressionContext) as ExpressionContext[];
	}
	public expression(i: number): ExpressionContext {
		return this.getTypedRuleContext(ExpressionContext, i) as ExpressionContext;
	}
	public RR_BRACKET(): TerminalNode {
		return this.getToken(SqlParser.RR_BRACKET, 0);
	}
	public COMMA_list(): TerminalNode[] {
	    	return this.getTokens(SqlParser.COMMA);
	}
	public COMMA(i: number): TerminalNode {
		return this.getToken(SqlParser.COMMA, i);
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterNestedExpressionAtom) {
	 		listener.enterNestedExpressionAtom(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitNestedExpressionAtom) {
	 		listener.exitNestedExpressionAtom(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitNestedExpressionAtom) {
			return visitor.visitNestedExpressionAtom(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class NestedRowExpressionAtomContext extends ExpressionAtomContext {
	constructor(parser: SqlParser, ctx: ExpressionAtomContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public ROW(): TerminalNode {
		return this.getToken(SqlParser.ROW, 0);
	}
	public LR_BRACKET(): TerminalNode {
		return this.getToken(SqlParser.LR_BRACKET, 0);
	}
	public expression_list(): ExpressionContext[] {
		return this.getTypedRuleContexts(ExpressionContext) as ExpressionContext[];
	}
	public expression(i: number): ExpressionContext {
		return this.getTypedRuleContext(ExpressionContext, i) as ExpressionContext;
	}
	public RR_BRACKET(): TerminalNode {
		return this.getToken(SqlParser.RR_BRACKET, 0);
	}
	public COMMA_list(): TerminalNode[] {
	    	return this.getTokens(SqlParser.COMMA);
	}
	public COMMA(i: number): TerminalNode {
		return this.getToken(SqlParser.COMMA, i);
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterNestedRowExpressionAtom) {
	 		listener.enterNestedRowExpressionAtom(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitNestedRowExpressionAtom) {
	 		listener.exitNestedRowExpressionAtom(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitNestedRowExpressionAtom) {
			return visitor.visitNestedRowExpressionAtom(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class MathExpressionAtomContext extends ExpressionAtomContext {
	public _left!: ExpressionAtomContext;
	public _right!: ExpressionAtomContext;
	constructor(parser: SqlParser, ctx: ExpressionAtomContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public mathOperator(): MathOperatorContext {
		return this.getTypedRuleContext(MathOperatorContext, 0) as MathOperatorContext;
	}
	public expressionAtom_list(): ExpressionAtomContext[] {
		return this.getTypedRuleContexts(ExpressionAtomContext) as ExpressionAtomContext[];
	}
	public expressionAtom(i: number): ExpressionAtomContext {
		return this.getTypedRuleContext(ExpressionAtomContext, i) as ExpressionAtomContext;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterMathExpressionAtom) {
	 		listener.enterMathExpressionAtom(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitMathExpressionAtom) {
	 		listener.exitMathExpressionAtom(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitMathExpressionAtom) {
			return visitor.visitMathExpressionAtom(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class IntervalExpressionAtomContext extends ExpressionAtomContext {
	constructor(parser: SqlParser, ctx: ExpressionAtomContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public INTERVAL(): TerminalNode {
		return this.getToken(SqlParser.INTERVAL, 0);
	}
	public expression(): ExpressionContext {
		return this.getTypedRuleContext(ExpressionContext, 0) as ExpressionContext;
	}
	public intervalType(): IntervalTypeContext {
		return this.getTypedRuleContext(IntervalTypeContext, 0) as IntervalTypeContext;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterIntervalExpressionAtom) {
	 		listener.enterIntervalExpressionAtom(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitIntervalExpressionAtom) {
	 		listener.exitIntervalExpressionAtom(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitIntervalExpressionAtom) {
			return visitor.visitIntervalExpressionAtom(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class ExistsExpessionAtomContext extends ExpressionAtomContext {
	constructor(parser: SqlParser, ctx: ExpressionAtomContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public EXISTS(): TerminalNode {
		return this.getToken(SqlParser.EXISTS, 0);
	}
	public LR_BRACKET(): TerminalNode {
		return this.getToken(SqlParser.LR_BRACKET, 0);
	}
	public selectStatement(): SelectStatementContext {
		return this.getTypedRuleContext(SelectStatementContext, 0) as SelectStatementContext;
	}
	public RR_BRACKET(): TerminalNode {
		return this.getToken(SqlParser.RR_BRACKET, 0);
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterExistsExpessionAtom) {
	 		listener.enterExistsExpessionAtom(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitExistsExpessionAtom) {
	 		listener.exitExistsExpessionAtom(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitExistsExpessionAtom) {
			return visitor.visitExistsExpessionAtom(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class ConstantExpressionAtomContext extends ExpressionAtomContext {
	constructor(parser: SqlParser, ctx: ExpressionAtomContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public constant(): ConstantContext {
		return this.getTypedRuleContext(ConstantContext, 0) as ConstantContext;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterConstantExpressionAtom) {
	 		listener.enterConstantExpressionAtom(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitConstantExpressionAtom) {
	 		listener.exitConstantExpressionAtom(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitConstantExpressionAtom) {
			return visitor.visitConstantExpressionAtom(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class FunctionCallExpressionAtomContext extends ExpressionAtomContext {
	constructor(parser: SqlParser, ctx: ExpressionAtomContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public functionCall(): FunctionCallContext {
		return this.getTypedRuleContext(FunctionCallContext, 0) as FunctionCallContext;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterFunctionCallExpressionAtom) {
	 		listener.enterFunctionCallExpressionAtom(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitFunctionCallExpressionAtom) {
	 		listener.exitFunctionCallExpressionAtom(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitFunctionCallExpressionAtom) {
			return visitor.visitFunctionCallExpressionAtom(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class BinaryExpressionAtomContext extends ExpressionAtomContext {
	constructor(parser: SqlParser, ctx: ExpressionAtomContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public BINARY(): TerminalNode {
		return this.getToken(SqlParser.BINARY, 0);
	}
	public expressionAtom(): ExpressionAtomContext {
		return this.getTypedRuleContext(ExpressionAtomContext, 0) as ExpressionAtomContext;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterBinaryExpressionAtom) {
	 		listener.enterBinaryExpressionAtom(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitBinaryExpressionAtom) {
	 		listener.exitBinaryExpressionAtom(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitBinaryExpressionAtom) {
			return visitor.visitBinaryExpressionAtom(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class FullColumnNameExpressionAtomContext extends ExpressionAtomContext {
	constructor(parser: SqlParser, ctx: ExpressionAtomContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public fullColumnName(): FullColumnNameContext {
		return this.getTypedRuleContext(FullColumnNameContext, 0) as FullColumnNameContext;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterFullColumnNameExpressionAtom) {
	 		listener.enterFullColumnNameExpressionAtom(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitFullColumnNameExpressionAtom) {
	 		listener.exitFullColumnNameExpressionAtom(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitFullColumnNameExpressionAtom) {
			return visitor.visitFullColumnNameExpressionAtom(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class BitExpressionAtomContext extends ExpressionAtomContext {
	public _left!: ExpressionAtomContext;
	public _right!: ExpressionAtomContext;
	constructor(parser: SqlParser, ctx: ExpressionAtomContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public bitOperator(): BitOperatorContext {
		return this.getTypedRuleContext(BitOperatorContext, 0) as BitOperatorContext;
	}
	public expressionAtom_list(): ExpressionAtomContext[] {
		return this.getTypedRuleContexts(ExpressionAtomContext) as ExpressionAtomContext[];
	}
	public expressionAtom(i: number): ExpressionAtomContext {
		return this.getTypedRuleContext(ExpressionAtomContext, i) as ExpressionAtomContext;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterBitExpressionAtom) {
	 		listener.enterBitExpressionAtom(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitBitExpressionAtom) {
	 		listener.exitBitExpressionAtom(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitBitExpressionAtom) {
			return visitor.visitBitExpressionAtom(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class UnaryOperatorContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public EXCLAMATION_SYMBOL(): TerminalNode {
		return this.getToken(SqlParser.EXCLAMATION_SYMBOL, 0);
	}
	public BIT_NOT_OP(): TerminalNode {
		return this.getToken(SqlParser.BIT_NOT_OP, 0);
	}
	public PLUS(): TerminalNode {
		return this.getToken(SqlParser.PLUS, 0);
	}
	public MINUS(): TerminalNode {
		return this.getToken(SqlParser.MINUS, 0);
	}
	public NOT(): TerminalNode {
		return this.getToken(SqlParser.NOT, 0);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_unaryOperator;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterUnaryOperator) {
	 		listener.enterUnaryOperator(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitUnaryOperator) {
	 		listener.exitUnaryOperator(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitUnaryOperator) {
			return visitor.visitUnaryOperator(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ComparisonOperatorContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public EQUAL_SYMBOL(): TerminalNode {
		return this.getToken(SqlParser.EQUAL_SYMBOL, 0);
	}
	public GREATER_SYMBOL(): TerminalNode {
		return this.getToken(SqlParser.GREATER_SYMBOL, 0);
	}
	public LESS_SYMBOL(): TerminalNode {
		return this.getToken(SqlParser.LESS_SYMBOL, 0);
	}
	public EXCLAMATION_SYMBOL(): TerminalNode {
		return this.getToken(SqlParser.EXCLAMATION_SYMBOL, 0);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_comparisonOperator;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterComparisonOperator) {
	 		listener.enterComparisonOperator(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitComparisonOperator) {
	 		listener.exitComparisonOperator(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitComparisonOperator) {
			return visitor.visitComparisonOperator(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class LogicalOperatorContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public AND(): TerminalNode {
		return this.getToken(SqlParser.AND, 0);
	}
	public BIT_AND_OP_list(): TerminalNode[] {
	    	return this.getTokens(SqlParser.BIT_AND_OP);
	}
	public BIT_AND_OP(i: number): TerminalNode {
		return this.getToken(SqlParser.BIT_AND_OP, i);
	}
	public XOR(): TerminalNode {
		return this.getToken(SqlParser.XOR, 0);
	}
	public OR(): TerminalNode {
		return this.getToken(SqlParser.OR, 0);
	}
	public BIT_OR_OP_list(): TerminalNode[] {
	    	return this.getTokens(SqlParser.BIT_OR_OP);
	}
	public BIT_OR_OP(i: number): TerminalNode {
		return this.getToken(SqlParser.BIT_OR_OP, i);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_logicalOperator;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterLogicalOperator) {
	 		listener.enterLogicalOperator(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitLogicalOperator) {
	 		listener.exitLogicalOperator(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitLogicalOperator) {
			return visitor.visitLogicalOperator(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class BitOperatorContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public LESS_SYMBOL_list(): TerminalNode[] {
	    	return this.getTokens(SqlParser.LESS_SYMBOL);
	}
	public LESS_SYMBOL(i: number): TerminalNode {
		return this.getToken(SqlParser.LESS_SYMBOL, i);
	}
	public GREATER_SYMBOL_list(): TerminalNode[] {
	    	return this.getTokens(SqlParser.GREATER_SYMBOL);
	}
	public GREATER_SYMBOL(i: number): TerminalNode {
		return this.getToken(SqlParser.GREATER_SYMBOL, i);
	}
	public BIT_AND_OP(): TerminalNode {
		return this.getToken(SqlParser.BIT_AND_OP, 0);
	}
	public BIT_XOR_OP(): TerminalNode {
		return this.getToken(SqlParser.BIT_XOR_OP, 0);
	}
	public BIT_OR_OP(): TerminalNode {
		return this.getToken(SqlParser.BIT_OR_OP, 0);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_bitOperator;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterBitOperator) {
	 		listener.enterBitOperator(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitBitOperator) {
	 		listener.exitBitOperator(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitBitOperator) {
			return visitor.visitBitOperator(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class MathOperatorContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public STAR(): TerminalNode {
		return this.getToken(SqlParser.STAR, 0);
	}
	public DIVIDE(): TerminalNode {
		return this.getToken(SqlParser.DIVIDE, 0);
	}
	public MODULE(): TerminalNode {
		return this.getToken(SqlParser.MODULE, 0);
	}
	public DIV(): TerminalNode {
		return this.getToken(SqlParser.DIV, 0);
	}
	public MOD(): TerminalNode {
		return this.getToken(SqlParser.MOD, 0);
	}
	public PLUS(): TerminalNode {
		return this.getToken(SqlParser.PLUS, 0);
	}
	public MINUS(): TerminalNode {
		return this.getToken(SqlParser.MINUS, 0);
	}
	public MINUSMINUS(): TerminalNode {
		return this.getToken(SqlParser.MINUSMINUS, 0);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_mathOperator;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterMathOperator) {
	 		listener.enterMathOperator(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitMathOperator) {
	 		listener.exitMathOperator(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitMathOperator) {
			return visitor.visitMathOperator(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class CharsetNameBaseContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public ARMSCII8(): TerminalNode {
		return this.getToken(SqlParser.ARMSCII8, 0);
	}
	public ASCII(): TerminalNode {
		return this.getToken(SqlParser.ASCII, 0);
	}
	public BIG5(): TerminalNode {
		return this.getToken(SqlParser.BIG5, 0);
	}
	public CP1250(): TerminalNode {
		return this.getToken(SqlParser.CP1250, 0);
	}
	public CP1251(): TerminalNode {
		return this.getToken(SqlParser.CP1251, 0);
	}
	public CP1256(): TerminalNode {
		return this.getToken(SqlParser.CP1256, 0);
	}
	public CP1257(): TerminalNode {
		return this.getToken(SqlParser.CP1257, 0);
	}
	public CP850(): TerminalNode {
		return this.getToken(SqlParser.CP850, 0);
	}
	public CP852(): TerminalNode {
		return this.getToken(SqlParser.CP852, 0);
	}
	public CP866(): TerminalNode {
		return this.getToken(SqlParser.CP866, 0);
	}
	public CP932(): TerminalNode {
		return this.getToken(SqlParser.CP932, 0);
	}
	public DEC8(): TerminalNode {
		return this.getToken(SqlParser.DEC8, 0);
	}
	public EUCJPMS(): TerminalNode {
		return this.getToken(SqlParser.EUCJPMS, 0);
	}
	public EUCKR(): TerminalNode {
		return this.getToken(SqlParser.EUCKR, 0);
	}
	public GB2312(): TerminalNode {
		return this.getToken(SqlParser.GB2312, 0);
	}
	public GBK(): TerminalNode {
		return this.getToken(SqlParser.GBK, 0);
	}
	public GEOSTD8(): TerminalNode {
		return this.getToken(SqlParser.GEOSTD8, 0);
	}
	public GREEK(): TerminalNode {
		return this.getToken(SqlParser.GREEK, 0);
	}
	public HEBREW(): TerminalNode {
		return this.getToken(SqlParser.HEBREW, 0);
	}
	public HP8(): TerminalNode {
		return this.getToken(SqlParser.HP8, 0);
	}
	public KEYBCS2(): TerminalNode {
		return this.getToken(SqlParser.KEYBCS2, 0);
	}
	public KOI8R(): TerminalNode {
		return this.getToken(SqlParser.KOI8R, 0);
	}
	public KOI8U(): TerminalNode {
		return this.getToken(SqlParser.KOI8U, 0);
	}
	public LATIN1(): TerminalNode {
		return this.getToken(SqlParser.LATIN1, 0);
	}
	public LATIN2(): TerminalNode {
		return this.getToken(SqlParser.LATIN2, 0);
	}
	public LATIN5(): TerminalNode {
		return this.getToken(SqlParser.LATIN5, 0);
	}
	public LATIN7(): TerminalNode {
		return this.getToken(SqlParser.LATIN7, 0);
	}
	public MACCE(): TerminalNode {
		return this.getToken(SqlParser.MACCE, 0);
	}
	public MACROMAN(): TerminalNode {
		return this.getToken(SqlParser.MACROMAN, 0);
	}
	public SJIS(): TerminalNode {
		return this.getToken(SqlParser.SJIS, 0);
	}
	public SWE7(): TerminalNode {
		return this.getToken(SqlParser.SWE7, 0);
	}
	public TIS620(): TerminalNode {
		return this.getToken(SqlParser.TIS620, 0);
	}
	public UCS2(): TerminalNode {
		return this.getToken(SqlParser.UCS2, 0);
	}
	public UJIS(): TerminalNode {
		return this.getToken(SqlParser.UJIS, 0);
	}
	public UTF16(): TerminalNode {
		return this.getToken(SqlParser.UTF16, 0);
	}
	public UTF16LE(): TerminalNode {
		return this.getToken(SqlParser.UTF16LE, 0);
	}
	public UTF32(): TerminalNode {
		return this.getToken(SqlParser.UTF32, 0);
	}
	public UTF8(): TerminalNode {
		return this.getToken(SqlParser.UTF8, 0);
	}
	public UTF8MB3(): TerminalNode {
		return this.getToken(SqlParser.UTF8MB3, 0);
	}
	public UTF8MB4(): TerminalNode {
		return this.getToken(SqlParser.UTF8MB4, 0);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_charsetNameBase;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterCharsetNameBase) {
	 		listener.enterCharsetNameBase(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitCharsetNameBase) {
	 		listener.exitCharsetNameBase(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitCharsetNameBase) {
			return visitor.visitCharsetNameBase(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class TransactionLevelBaseContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public REPEATABLE(): TerminalNode {
		return this.getToken(SqlParser.REPEATABLE, 0);
	}
	public COMMITTED(): TerminalNode {
		return this.getToken(SqlParser.COMMITTED, 0);
	}
	public UNCOMMITTED(): TerminalNode {
		return this.getToken(SqlParser.UNCOMMITTED, 0);
	}
	public SERIALIZABLE(): TerminalNode {
		return this.getToken(SqlParser.SERIALIZABLE, 0);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_transactionLevelBase;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterTransactionLevelBase) {
	 		listener.enterTransactionLevelBase(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitTransactionLevelBase) {
	 		listener.exitTransactionLevelBase(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitTransactionLevelBase) {
			return visitor.visitTransactionLevelBase(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class PrivilegesBaseContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public TABLES(): TerminalNode {
		return this.getToken(SqlParser.TABLES, 0);
	}
	public ROUTINE(): TerminalNode {
		return this.getToken(SqlParser.ROUTINE, 0);
	}
	public EXECUTE(): TerminalNode {
		return this.getToken(SqlParser.EXECUTE, 0);
	}
	public FILE(): TerminalNode {
		return this.getToken(SqlParser.FILE, 0);
	}
	public PROCESS(): TerminalNode {
		return this.getToken(SqlParser.PROCESS, 0);
	}
	public RELOAD(): TerminalNode {
		return this.getToken(SqlParser.RELOAD, 0);
	}
	public SHUTDOWN(): TerminalNode {
		return this.getToken(SqlParser.SHUTDOWN, 0);
	}
	public SUPER(): TerminalNode {
		return this.getToken(SqlParser.SUPER, 0);
	}
	public PRIVILEGES(): TerminalNode {
		return this.getToken(SqlParser.PRIVILEGES, 0);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_privilegesBase;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterPrivilegesBase) {
	 		listener.enterPrivilegesBase(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitPrivilegesBase) {
	 		listener.exitPrivilegesBase(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitPrivilegesBase) {
			return visitor.visitPrivilegesBase(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class IntervalTypeBaseContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public QUARTER(): TerminalNode {
		return this.getToken(SqlParser.QUARTER, 0);
	}
	public MONTH(): TerminalNode {
		return this.getToken(SqlParser.MONTH, 0);
	}
	public DAY(): TerminalNode {
		return this.getToken(SqlParser.DAY, 0);
	}
	public HOUR(): TerminalNode {
		return this.getToken(SqlParser.HOUR, 0);
	}
	public MINUTE(): TerminalNode {
		return this.getToken(SqlParser.MINUTE, 0);
	}
	public WEEK(): TerminalNode {
		return this.getToken(SqlParser.WEEK, 0);
	}
	public SECOND(): TerminalNode {
		return this.getToken(SqlParser.SECOND, 0);
	}
	public MICROSECOND(): TerminalNode {
		return this.getToken(SqlParser.MICROSECOND, 0);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_intervalTypeBase;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterIntervalTypeBase) {
	 		listener.enterIntervalTypeBase(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitIntervalTypeBase) {
	 		listener.exitIntervalTypeBase(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitIntervalTypeBase) {
			return visitor.visitIntervalTypeBase(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class DataTypeBaseContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public DATE(): TerminalNode {
		return this.getToken(SqlParser.DATE, 0);
	}
	public TIME(): TerminalNode {
		return this.getToken(SqlParser.TIME, 0);
	}
	public TIMESTAMP(): TerminalNode {
		return this.getToken(SqlParser.TIMESTAMP, 0);
	}
	public DATETIME(): TerminalNode {
		return this.getToken(SqlParser.DATETIME, 0);
	}
	public YEAR(): TerminalNode {
		return this.getToken(SqlParser.YEAR, 0);
	}
	public ENUM(): TerminalNode {
		return this.getToken(SqlParser.ENUM, 0);
	}
	public TEXT(): TerminalNode {
		return this.getToken(SqlParser.TEXT, 0);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_dataTypeBase;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterDataTypeBase) {
	 		listener.enterDataTypeBase(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitDataTypeBase) {
	 		listener.exitDataTypeBase(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitDataTypeBase) {
			return visitor.visitDataTypeBase(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class KeywordsCanBeIdContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public ACCOUNT(): TerminalNode {
		return this.getToken(SqlParser.ACCOUNT, 0);
	}
	public ACTION(): TerminalNode {
		return this.getToken(SqlParser.ACTION, 0);
	}
	public AFTER(): TerminalNode {
		return this.getToken(SqlParser.AFTER, 0);
	}
	public AGGREGATE(): TerminalNode {
		return this.getToken(SqlParser.AGGREGATE, 0);
	}
	public ALGORITHM(): TerminalNode {
		return this.getToken(SqlParser.ALGORITHM, 0);
	}
	public ANY(): TerminalNode {
		return this.getToken(SqlParser.ANY, 0);
	}
	public AT(): TerminalNode {
		return this.getToken(SqlParser.AT, 0);
	}
	public AUDIT_ADMIN(): TerminalNode {
		return this.getToken(SqlParser.AUDIT_ADMIN, 0);
	}
	public AUTHORS(): TerminalNode {
		return this.getToken(SqlParser.AUTHORS, 0);
	}
	public AUTOCOMMIT(): TerminalNode {
		return this.getToken(SqlParser.AUTOCOMMIT, 0);
	}
	public AUTOEXTEND_SIZE(): TerminalNode {
		return this.getToken(SqlParser.AUTOEXTEND_SIZE, 0);
	}
	public AUTO_INCREMENT(): TerminalNode {
		return this.getToken(SqlParser.AUTO_INCREMENT, 0);
	}
	public AVG_ROW_LENGTH(): TerminalNode {
		return this.getToken(SqlParser.AVG_ROW_LENGTH, 0);
	}
	public BACKUP_ADMIN(): TerminalNode {
		return this.getToken(SqlParser.BACKUP_ADMIN, 0);
	}
	public BEGIN(): TerminalNode {
		return this.getToken(SqlParser.BEGIN, 0);
	}
	public BINLOG(): TerminalNode {
		return this.getToken(SqlParser.BINLOG, 0);
	}
	public BINLOG_ADMIN(): TerminalNode {
		return this.getToken(SqlParser.BINLOG_ADMIN, 0);
	}
	public BINLOG_ENCRYPTION_ADMIN(): TerminalNode {
		return this.getToken(SqlParser.BINLOG_ENCRYPTION_ADMIN, 0);
	}
	public BIT(): TerminalNode {
		return this.getToken(SqlParser.BIT, 0);
	}
	public BLOCK(): TerminalNode {
		return this.getToken(SqlParser.BLOCK, 0);
	}
	public BOOL(): TerminalNode {
		return this.getToken(SqlParser.BOOL, 0);
	}
	public BOOLEAN(): TerminalNode {
		return this.getToken(SqlParser.BOOLEAN, 0);
	}
	public BTREE(): TerminalNode {
		return this.getToken(SqlParser.BTREE, 0);
	}
	public CACHE(): TerminalNode {
		return this.getToken(SqlParser.CACHE, 0);
	}
	public CASCADED(): TerminalNode {
		return this.getToken(SqlParser.CASCADED, 0);
	}
	public CHAIN(): TerminalNode {
		return this.getToken(SqlParser.CHAIN, 0);
	}
	public CHANGED(): TerminalNode {
		return this.getToken(SqlParser.CHANGED, 0);
	}
	public CHANNEL(): TerminalNode {
		return this.getToken(SqlParser.CHANNEL, 0);
	}
	public CHECKSUM(): TerminalNode {
		return this.getToken(SqlParser.CHECKSUM, 0);
	}
	public PAGE_CHECKSUM(): TerminalNode {
		return this.getToken(SqlParser.PAGE_CHECKSUM, 0);
	}
	public CATALOG_NAME(): TerminalNode {
		return this.getToken(SqlParser.CATALOG_NAME, 0);
	}
	public CIPHER(): TerminalNode {
		return this.getToken(SqlParser.CIPHER, 0);
	}
	public CLASS_ORIGIN(): TerminalNode {
		return this.getToken(SqlParser.CLASS_ORIGIN, 0);
	}
	public CLIENT(): TerminalNode {
		return this.getToken(SqlParser.CLIENT, 0);
	}
	public CLONE_ADMIN(): TerminalNode {
		return this.getToken(SqlParser.CLONE_ADMIN, 0);
	}
	public CLOSE(): TerminalNode {
		return this.getToken(SqlParser.CLOSE, 0);
	}
	public COALESCE(): TerminalNode {
		return this.getToken(SqlParser.COALESCE, 0);
	}
	public CODE(): TerminalNode {
		return this.getToken(SqlParser.CODE, 0);
	}
	public COLUMNS(): TerminalNode {
		return this.getToken(SqlParser.COLUMNS, 0);
	}
	public COLUMN_FORMAT(): TerminalNode {
		return this.getToken(SqlParser.COLUMN_FORMAT, 0);
	}
	public COLUMN_NAME(): TerminalNode {
		return this.getToken(SqlParser.COLUMN_NAME, 0);
	}
	public COMMENT(): TerminalNode {
		return this.getToken(SqlParser.COMMENT, 0);
	}
	public COMMIT(): TerminalNode {
		return this.getToken(SqlParser.COMMIT, 0);
	}
	public COMPACT(): TerminalNode {
		return this.getToken(SqlParser.COMPACT, 0);
	}
	public COMPLETION(): TerminalNode {
		return this.getToken(SqlParser.COMPLETION, 0);
	}
	public COMPRESSED(): TerminalNode {
		return this.getToken(SqlParser.COMPRESSED, 0);
	}
	public COMPRESSION(): TerminalNode {
		return this.getToken(SqlParser.COMPRESSION, 0);
	}
	public CONCURRENT(): TerminalNode {
		return this.getToken(SqlParser.CONCURRENT, 0);
	}
	public CONNECTION(): TerminalNode {
		return this.getToken(SqlParser.CONNECTION, 0);
	}
	public CONNECTION_ADMIN(): TerminalNode {
		return this.getToken(SqlParser.CONNECTION_ADMIN, 0);
	}
	public CONSISTENT(): TerminalNode {
		return this.getToken(SqlParser.CONSISTENT, 0);
	}
	public CONSTRAINT_CATALOG(): TerminalNode {
		return this.getToken(SqlParser.CONSTRAINT_CATALOG, 0);
	}
	public CONSTRAINT_NAME(): TerminalNode {
		return this.getToken(SqlParser.CONSTRAINT_NAME, 0);
	}
	public CONSTRAINT_SCHEMA(): TerminalNode {
		return this.getToken(SqlParser.CONSTRAINT_SCHEMA, 0);
	}
	public CONTAINS(): TerminalNode {
		return this.getToken(SqlParser.CONTAINS, 0);
	}
	public CONTEXT(): TerminalNode {
		return this.getToken(SqlParser.CONTEXT, 0);
	}
	public CONTRIBUTORS(): TerminalNode {
		return this.getToken(SqlParser.CONTRIBUTORS, 0);
	}
	public COPY(): TerminalNode {
		return this.getToken(SqlParser.COPY, 0);
	}
	public CPU(): TerminalNode {
		return this.getToken(SqlParser.CPU, 0);
	}
	public CURRENT(): TerminalNode {
		return this.getToken(SqlParser.CURRENT, 0);
	}
	public CURSOR_NAME(): TerminalNode {
		return this.getToken(SqlParser.CURSOR_NAME, 0);
	}
	public DATA(): TerminalNode {
		return this.getToken(SqlParser.DATA, 0);
	}
	public DATAFILE(): TerminalNode {
		return this.getToken(SqlParser.DATAFILE, 0);
	}
	public DEALLOCATE(): TerminalNode {
		return this.getToken(SqlParser.DEALLOCATE, 0);
	}
	public DEFAULT_AUTH(): TerminalNode {
		return this.getToken(SqlParser.DEFAULT_AUTH, 0);
	}
	public DEFINER(): TerminalNode {
		return this.getToken(SqlParser.DEFINER, 0);
	}
	public DELAY_KEY_WRITE(): TerminalNode {
		return this.getToken(SqlParser.DELAY_KEY_WRITE, 0);
	}
	public DES_KEY_FILE(): TerminalNode {
		return this.getToken(SqlParser.DES_KEY_FILE, 0);
	}
	public DIAGNOSTICS(): TerminalNode {
		return this.getToken(SqlParser.DIAGNOSTICS, 0);
	}
	public DIRECTORY(): TerminalNode {
		return this.getToken(SqlParser.DIRECTORY, 0);
	}
	public DISABLE(): TerminalNode {
		return this.getToken(SqlParser.DISABLE, 0);
	}
	public DISCARD(): TerminalNode {
		return this.getToken(SqlParser.DISCARD, 0);
	}
	public DISK(): TerminalNode {
		return this.getToken(SqlParser.DISK, 0);
	}
	public DO(): TerminalNode {
		return this.getToken(SqlParser.DO, 0);
	}
	public DUMPFILE(): TerminalNode {
		return this.getToken(SqlParser.DUMPFILE, 0);
	}
	public DUPLICATE(): TerminalNode {
		return this.getToken(SqlParser.DUPLICATE, 0);
	}
	public DYNAMIC(): TerminalNode {
		return this.getToken(SqlParser.DYNAMIC, 0);
	}
	public ENABLE(): TerminalNode {
		return this.getToken(SqlParser.ENABLE, 0);
	}
	public ENCRYPTION(): TerminalNode {
		return this.getToken(SqlParser.ENCRYPTION, 0);
	}
	public ENCRYPTION_KEY_ADMIN(): TerminalNode {
		return this.getToken(SqlParser.ENCRYPTION_KEY_ADMIN, 0);
	}
	public END(): TerminalNode {
		return this.getToken(SqlParser.END, 0);
	}
	public ENDS(): TerminalNode {
		return this.getToken(SqlParser.ENDS, 0);
	}
	public ENGINE(): TerminalNode {
		return this.getToken(SqlParser.ENGINE, 0);
	}
	public ENGINES(): TerminalNode {
		return this.getToken(SqlParser.ENGINES, 0);
	}
	public ERROR(): TerminalNode {
		return this.getToken(SqlParser.ERROR, 0);
	}
	public ERRORS(): TerminalNode {
		return this.getToken(SqlParser.ERRORS, 0);
	}
	public ESCAPE(): TerminalNode {
		return this.getToken(SqlParser.ESCAPE, 0);
	}
	public EVEN(): TerminalNode {
		return this.getToken(SqlParser.EVEN, 0);
	}
	public EVENT(): TerminalNode {
		return this.getToken(SqlParser.EVENT, 0);
	}
	public EVENTS(): TerminalNode {
		return this.getToken(SqlParser.EVENTS, 0);
	}
	public EVERY(): TerminalNode {
		return this.getToken(SqlParser.EVERY, 0);
	}
	public EXCHANGE(): TerminalNode {
		return this.getToken(SqlParser.EXCHANGE, 0);
	}
	public EXCLUSIVE(): TerminalNode {
		return this.getToken(SqlParser.EXCLUSIVE, 0);
	}
	public EXPIRE(): TerminalNode {
		return this.getToken(SqlParser.EXPIRE, 0);
	}
	public EXPORT(): TerminalNode {
		return this.getToken(SqlParser.EXPORT, 0);
	}
	public EXTENDED(): TerminalNode {
		return this.getToken(SqlParser.EXTENDED, 0);
	}
	public EXTENT_SIZE(): TerminalNode {
		return this.getToken(SqlParser.EXTENT_SIZE, 0);
	}
	public FAST(): TerminalNode {
		return this.getToken(SqlParser.FAST, 0);
	}
	public FAULTS(): TerminalNode {
		return this.getToken(SqlParser.FAULTS, 0);
	}
	public FIELDS(): TerminalNode {
		return this.getToken(SqlParser.FIELDS, 0);
	}
	public FILE_BLOCK_SIZE(): TerminalNode {
		return this.getToken(SqlParser.FILE_BLOCK_SIZE, 0);
	}
	public FILTER(): TerminalNode {
		return this.getToken(SqlParser.FILTER, 0);
	}
	public FIREWALL_ADMIN(): TerminalNode {
		return this.getToken(SqlParser.FIREWALL_ADMIN, 0);
	}
	public FIREWALL_USER(): TerminalNode {
		return this.getToken(SqlParser.FIREWALL_USER, 0);
	}
	public FIRST(): TerminalNode {
		return this.getToken(SqlParser.FIRST, 0);
	}
	public FIXED(): TerminalNode {
		return this.getToken(SqlParser.FIXED, 0);
	}
	public FLUSH(): TerminalNode {
		return this.getToken(SqlParser.FLUSH, 0);
	}
	public FOLLOWS(): TerminalNode {
		return this.getToken(SqlParser.FOLLOWS, 0);
	}
	public FOUND(): TerminalNode {
		return this.getToken(SqlParser.FOUND, 0);
	}
	public FULL(): TerminalNode {
		return this.getToken(SqlParser.FULL, 0);
	}
	public FUNCTION(): TerminalNode {
		return this.getToken(SqlParser.FUNCTION, 0);
	}
	public GENERAL(): TerminalNode {
		return this.getToken(SqlParser.GENERAL, 0);
	}
	public GLOBAL(): TerminalNode {
		return this.getToken(SqlParser.GLOBAL, 0);
	}
	public GRANTS(): TerminalNode {
		return this.getToken(SqlParser.GRANTS, 0);
	}
	public GROUP_REPLICATION(): TerminalNode {
		return this.getToken(SqlParser.GROUP_REPLICATION, 0);
	}
	public GROUP_REPLICATION_ADMIN(): TerminalNode {
		return this.getToken(SqlParser.GROUP_REPLICATION_ADMIN, 0);
	}
	public HANDLER(): TerminalNode {
		return this.getToken(SqlParser.HANDLER, 0);
	}
	public HASH(): TerminalNode {
		return this.getToken(SqlParser.HASH, 0);
	}
	public HELP(): TerminalNode {
		return this.getToken(SqlParser.HELP, 0);
	}
	public HOST(): TerminalNode {
		return this.getToken(SqlParser.HOST, 0);
	}
	public HOSTS(): TerminalNode {
		return this.getToken(SqlParser.HOSTS, 0);
	}
	public IDENTIFIED(): TerminalNode {
		return this.getToken(SqlParser.IDENTIFIED, 0);
	}
	public IGNORE_SERVER_IDS(): TerminalNode {
		return this.getToken(SqlParser.IGNORE_SERVER_IDS, 0);
	}
	public IMPORT(): TerminalNode {
		return this.getToken(SqlParser.IMPORT, 0);
	}
	public INDEXES(): TerminalNode {
		return this.getToken(SqlParser.INDEXES, 0);
	}
	public INITIAL_SIZE(): TerminalNode {
		return this.getToken(SqlParser.INITIAL_SIZE, 0);
	}
	public INNODB_REDO_LOG_ARCHIVE(): TerminalNode {
		return this.getToken(SqlParser.INNODB_REDO_LOG_ARCHIVE, 0);
	}
	public INPLACE(): TerminalNode {
		return this.getToken(SqlParser.INPLACE, 0);
	}
	public INSERT_METHOD(): TerminalNode {
		return this.getToken(SqlParser.INSERT_METHOD, 0);
	}
	public INSTALL(): TerminalNode {
		return this.getToken(SqlParser.INSTALL, 0);
	}
	public INSTANCE(): TerminalNode {
		return this.getToken(SqlParser.INSTANCE, 0);
	}
	public INTERNAL(): TerminalNode {
		return this.getToken(SqlParser.INTERNAL, 0);
	}
	public INVOKER(): TerminalNode {
		return this.getToken(SqlParser.INVOKER, 0);
	}
	public IO(): TerminalNode {
		return this.getToken(SqlParser.IO, 0);
	}
	public IO_THREAD(): TerminalNode {
		return this.getToken(SqlParser.IO_THREAD, 0);
	}
	public IPC(): TerminalNode {
		return this.getToken(SqlParser.IPC, 0);
	}
	public ISOLATION(): TerminalNode {
		return this.getToken(SqlParser.ISOLATION, 0);
	}
	public ISSUER(): TerminalNode {
		return this.getToken(SqlParser.ISSUER, 0);
	}
	public JSON(): TerminalNode {
		return this.getToken(SqlParser.JSON, 0);
	}
	public KEY_BLOCK_SIZE(): TerminalNode {
		return this.getToken(SqlParser.KEY_BLOCK_SIZE, 0);
	}
	public LANGUAGE(): TerminalNode {
		return this.getToken(SqlParser.LANGUAGE, 0);
	}
	public LAST(): TerminalNode {
		return this.getToken(SqlParser.LAST, 0);
	}
	public LEAVES(): TerminalNode {
		return this.getToken(SqlParser.LEAVES, 0);
	}
	public LESS(): TerminalNode {
		return this.getToken(SqlParser.LESS, 0);
	}
	public LEVEL(): TerminalNode {
		return this.getToken(SqlParser.LEVEL, 0);
	}
	public LIST(): TerminalNode {
		return this.getToken(SqlParser.LIST, 0);
	}
	public LOCAL(): TerminalNode {
		return this.getToken(SqlParser.LOCAL, 0);
	}
	public LOGFILE(): TerminalNode {
		return this.getToken(SqlParser.LOGFILE, 0);
	}
	public LOGS(): TerminalNode {
		return this.getToken(SqlParser.LOGS, 0);
	}
	public MASTER(): TerminalNode {
		return this.getToken(SqlParser.MASTER, 0);
	}
	public MASTER_AUTO_POSITION(): TerminalNode {
		return this.getToken(SqlParser.MASTER_AUTO_POSITION, 0);
	}
	public MASTER_CONNECT_RETRY(): TerminalNode {
		return this.getToken(SqlParser.MASTER_CONNECT_RETRY, 0);
	}
	public MASTER_DELAY(): TerminalNode {
		return this.getToken(SqlParser.MASTER_DELAY, 0);
	}
	public MASTER_HEARTBEAT_PERIOD(): TerminalNode {
		return this.getToken(SqlParser.MASTER_HEARTBEAT_PERIOD, 0);
	}
	public MASTER_HOST(): TerminalNode {
		return this.getToken(SqlParser.MASTER_HOST, 0);
	}
	public MASTER_LOG_FILE(): TerminalNode {
		return this.getToken(SqlParser.MASTER_LOG_FILE, 0);
	}
	public MASTER_LOG_POS(): TerminalNode {
		return this.getToken(SqlParser.MASTER_LOG_POS, 0);
	}
	public MASTER_PASSWORD(): TerminalNode {
		return this.getToken(SqlParser.MASTER_PASSWORD, 0);
	}
	public MASTER_PORT(): TerminalNode {
		return this.getToken(SqlParser.MASTER_PORT, 0);
	}
	public MASTER_RETRY_COUNT(): TerminalNode {
		return this.getToken(SqlParser.MASTER_RETRY_COUNT, 0);
	}
	public MASTER_SSL(): TerminalNode {
		return this.getToken(SqlParser.MASTER_SSL, 0);
	}
	public MASTER_SSL_CA(): TerminalNode {
		return this.getToken(SqlParser.MASTER_SSL_CA, 0);
	}
	public MASTER_SSL_CAPATH(): TerminalNode {
		return this.getToken(SqlParser.MASTER_SSL_CAPATH, 0);
	}
	public MASTER_SSL_CERT(): TerminalNode {
		return this.getToken(SqlParser.MASTER_SSL_CERT, 0);
	}
	public MASTER_SSL_CIPHER(): TerminalNode {
		return this.getToken(SqlParser.MASTER_SSL_CIPHER, 0);
	}
	public MASTER_SSL_CRL(): TerminalNode {
		return this.getToken(SqlParser.MASTER_SSL_CRL, 0);
	}
	public MASTER_SSL_CRLPATH(): TerminalNode {
		return this.getToken(SqlParser.MASTER_SSL_CRLPATH, 0);
	}
	public MASTER_SSL_KEY(): TerminalNode {
		return this.getToken(SqlParser.MASTER_SSL_KEY, 0);
	}
	public MASTER_TLS_VERSION(): TerminalNode {
		return this.getToken(SqlParser.MASTER_TLS_VERSION, 0);
	}
	public MASTER_USER(): TerminalNode {
		return this.getToken(SqlParser.MASTER_USER, 0);
	}
	public MAX_CONNECTIONS_PER_HOUR(): TerminalNode {
		return this.getToken(SqlParser.MAX_CONNECTIONS_PER_HOUR, 0);
	}
	public MAX_QUERIES_PER_HOUR(): TerminalNode {
		return this.getToken(SqlParser.MAX_QUERIES_PER_HOUR, 0);
	}
	public MAX_ROWS(): TerminalNode {
		return this.getToken(SqlParser.MAX_ROWS, 0);
	}
	public MAX_SIZE(): TerminalNode {
		return this.getToken(SqlParser.MAX_SIZE, 0);
	}
	public MAX_UPDATES_PER_HOUR(): TerminalNode {
		return this.getToken(SqlParser.MAX_UPDATES_PER_HOUR, 0);
	}
	public MAX_USER_CONNECTIONS(): TerminalNode {
		return this.getToken(SqlParser.MAX_USER_CONNECTIONS, 0);
	}
	public MEDIUM(): TerminalNode {
		return this.getToken(SqlParser.MEDIUM, 0);
	}
	public MEMORY(): TerminalNode {
		return this.getToken(SqlParser.MEMORY, 0);
	}
	public MERGE(): TerminalNode {
		return this.getToken(SqlParser.MERGE, 0);
	}
	public MESSAGE_TEXT(): TerminalNode {
		return this.getToken(SqlParser.MESSAGE_TEXT, 0);
	}
	public MID(): TerminalNode {
		return this.getToken(SqlParser.MID, 0);
	}
	public MIGRATE(): TerminalNode {
		return this.getToken(SqlParser.MIGRATE, 0);
	}
	public MIN_ROWS(): TerminalNode {
		return this.getToken(SqlParser.MIN_ROWS, 0);
	}
	public MODE(): TerminalNode {
		return this.getToken(SqlParser.MODE, 0);
	}
	public MODIFY(): TerminalNode {
		return this.getToken(SqlParser.MODIFY, 0);
	}
	public MUTEX(): TerminalNode {
		return this.getToken(SqlParser.MUTEX, 0);
	}
	public MYSQL(): TerminalNode {
		return this.getToken(SqlParser.MYSQL, 0);
	}
	public MYSQL_ERRNO(): TerminalNode {
		return this.getToken(SqlParser.MYSQL_ERRNO, 0);
	}
	public NAME(): TerminalNode {
		return this.getToken(SqlParser.NAME, 0);
	}
	public NAMES(): TerminalNode {
		return this.getToken(SqlParser.NAMES, 0);
	}
	public NCHAR(): TerminalNode {
		return this.getToken(SqlParser.NCHAR, 0);
	}
	public NDB_STORED_USER(): TerminalNode {
		return this.getToken(SqlParser.NDB_STORED_USER, 0);
	}
	public NEVER(): TerminalNode {
		return this.getToken(SqlParser.NEVER, 0);
	}
	public NEXT(): TerminalNode {
		return this.getToken(SqlParser.NEXT, 0);
	}
	public NO(): TerminalNode {
		return this.getToken(SqlParser.NO, 0);
	}
	public NODEGROUP(): TerminalNode {
		return this.getToken(SqlParser.NODEGROUP, 0);
	}
	public NONE(): TerminalNode {
		return this.getToken(SqlParser.NONE, 0);
	}
	public NUMBER(): TerminalNode {
		return this.getToken(SqlParser.NUMBER, 0);
	}
	public OFFLINE(): TerminalNode {
		return this.getToken(SqlParser.OFFLINE, 0);
	}
	public OFFSET(): TerminalNode {
		return this.getToken(SqlParser.OFFSET, 0);
	}
	public OJ(): TerminalNode {
		return this.getToken(SqlParser.OJ, 0);
	}
	public OLD_PASSWORD(): TerminalNode {
		return this.getToken(SqlParser.OLD_PASSWORD, 0);
	}
	public ONE(): TerminalNode {
		return this.getToken(SqlParser.ONE, 0);
	}
	public ONLINE(): TerminalNode {
		return this.getToken(SqlParser.ONLINE, 0);
	}
	public ONLY(): TerminalNode {
		return this.getToken(SqlParser.ONLY, 0);
	}
	public OPEN(): TerminalNode {
		return this.getToken(SqlParser.OPEN, 0);
	}
	public OPTIMIZER_COSTS(): TerminalNode {
		return this.getToken(SqlParser.OPTIMIZER_COSTS, 0);
	}
	public OPTIONS(): TerminalNode {
		return this.getToken(SqlParser.OPTIONS, 0);
	}
	public OWNER(): TerminalNode {
		return this.getToken(SqlParser.OWNER, 0);
	}
	public PACK_KEYS(): TerminalNode {
		return this.getToken(SqlParser.PACK_KEYS, 0);
	}
	public PAGE(): TerminalNode {
		return this.getToken(SqlParser.PAGE, 0);
	}
	public PARSER(): TerminalNode {
		return this.getToken(SqlParser.PARSER, 0);
	}
	public PARTIAL(): TerminalNode {
		return this.getToken(SqlParser.PARTIAL, 0);
	}
	public PARTITIONING(): TerminalNode {
		return this.getToken(SqlParser.PARTITIONING, 0);
	}
	public PARTITIONS(): TerminalNode {
		return this.getToken(SqlParser.PARTITIONS, 0);
	}
	public PASSWORD(): TerminalNode {
		return this.getToken(SqlParser.PASSWORD, 0);
	}
	public PERSIST_RO_VARIABLES_ADMIN(): TerminalNode {
		return this.getToken(SqlParser.PERSIST_RO_VARIABLES_ADMIN, 0);
	}
	public PHASE(): TerminalNode {
		return this.getToken(SqlParser.PHASE, 0);
	}
	public PLUGINS(): TerminalNode {
		return this.getToken(SqlParser.PLUGINS, 0);
	}
	public PLUGIN_DIR(): TerminalNode {
		return this.getToken(SqlParser.PLUGIN_DIR, 0);
	}
	public PLUGIN(): TerminalNode {
		return this.getToken(SqlParser.PLUGIN, 0);
	}
	public PORT(): TerminalNode {
		return this.getToken(SqlParser.PORT, 0);
	}
	public PRECEDES(): TerminalNode {
		return this.getToken(SqlParser.PRECEDES, 0);
	}
	public PREPARE(): TerminalNode {
		return this.getToken(SqlParser.PREPARE, 0);
	}
	public PRESERVE(): TerminalNode {
		return this.getToken(SqlParser.PRESERVE, 0);
	}
	public PREV(): TerminalNode {
		return this.getToken(SqlParser.PREV, 0);
	}
	public PROCESSLIST(): TerminalNode {
		return this.getToken(SqlParser.PROCESSLIST, 0);
	}
	public PROFILE(): TerminalNode {
		return this.getToken(SqlParser.PROFILE, 0);
	}
	public PROFILES(): TerminalNode {
		return this.getToken(SqlParser.PROFILES, 0);
	}
	public PROXY(): TerminalNode {
		return this.getToken(SqlParser.PROXY, 0);
	}
	public QUERY(): TerminalNode {
		return this.getToken(SqlParser.QUERY, 0);
	}
	public QUICK(): TerminalNode {
		return this.getToken(SqlParser.QUICK, 0);
	}
	public REBUILD(): TerminalNode {
		return this.getToken(SqlParser.REBUILD, 0);
	}
	public RECOVER(): TerminalNode {
		return this.getToken(SqlParser.RECOVER, 0);
	}
	public REDO_BUFFER_SIZE(): TerminalNode {
		return this.getToken(SqlParser.REDO_BUFFER_SIZE, 0);
	}
	public REDUNDANT(): TerminalNode {
		return this.getToken(SqlParser.REDUNDANT, 0);
	}
	public RELAY(): TerminalNode {
		return this.getToken(SqlParser.RELAY, 0);
	}
	public RELAYLOG(): TerminalNode {
		return this.getToken(SqlParser.RELAYLOG, 0);
	}
	public RELAY_LOG_FILE(): TerminalNode {
		return this.getToken(SqlParser.RELAY_LOG_FILE, 0);
	}
	public RELAY_LOG_POS(): TerminalNode {
		return this.getToken(SqlParser.RELAY_LOG_POS, 0);
	}
	public REMOVE(): TerminalNode {
		return this.getToken(SqlParser.REMOVE, 0);
	}
	public REORGANIZE(): TerminalNode {
		return this.getToken(SqlParser.REORGANIZE, 0);
	}
	public REPAIR(): TerminalNode {
		return this.getToken(SqlParser.REPAIR, 0);
	}
	public REPLICATE_DO_DB(): TerminalNode {
		return this.getToken(SqlParser.REPLICATE_DO_DB, 0);
	}
	public REPLICATE_DO_TABLE(): TerminalNode {
		return this.getToken(SqlParser.REPLICATE_DO_TABLE, 0);
	}
	public REPLICATE_IGNORE_DB(): TerminalNode {
		return this.getToken(SqlParser.REPLICATE_IGNORE_DB, 0);
	}
	public REPLICATE_IGNORE_TABLE(): TerminalNode {
		return this.getToken(SqlParser.REPLICATE_IGNORE_TABLE, 0);
	}
	public REPLICATE_REWRITE_DB(): TerminalNode {
		return this.getToken(SqlParser.REPLICATE_REWRITE_DB, 0);
	}
	public REPLICATE_WILD_DO_TABLE(): TerminalNode {
		return this.getToken(SqlParser.REPLICATE_WILD_DO_TABLE, 0);
	}
	public REPLICATE_WILD_IGNORE_TABLE(): TerminalNode {
		return this.getToken(SqlParser.REPLICATE_WILD_IGNORE_TABLE, 0);
	}
	public REPLICATION(): TerminalNode {
		return this.getToken(SqlParser.REPLICATION, 0);
	}
	public REPLICATION_APPLIER(): TerminalNode {
		return this.getToken(SqlParser.REPLICATION_APPLIER, 0);
	}
	public REPLICATION_SLAVE_ADMIN(): TerminalNode {
		return this.getToken(SqlParser.REPLICATION_SLAVE_ADMIN, 0);
	}
	public RESET(): TerminalNode {
		return this.getToken(SqlParser.RESET, 0);
	}
	public RESOURCE_GROUP_ADMIN(): TerminalNode {
		return this.getToken(SqlParser.RESOURCE_GROUP_ADMIN, 0);
	}
	public RESOURCE_GROUP_USER(): TerminalNode {
		return this.getToken(SqlParser.RESOURCE_GROUP_USER, 0);
	}
	public RESUME(): TerminalNode {
		return this.getToken(SqlParser.RESUME, 0);
	}
	public RETURNED_SQLSTATE(): TerminalNode {
		return this.getToken(SqlParser.RETURNED_SQLSTATE, 0);
	}
	public RETURNS(): TerminalNode {
		return this.getToken(SqlParser.RETURNS, 0);
	}
	public ROLE(): TerminalNode {
		return this.getToken(SqlParser.ROLE, 0);
	}
	public ROLE_ADMIN(): TerminalNode {
		return this.getToken(SqlParser.ROLE_ADMIN, 0);
	}
	public ROLLBACK(): TerminalNode {
		return this.getToken(SqlParser.ROLLBACK, 0);
	}
	public ROLLUP(): TerminalNode {
		return this.getToken(SqlParser.ROLLUP, 0);
	}
	public ROTATE(): TerminalNode {
		return this.getToken(SqlParser.ROTATE, 0);
	}
	public ROW(): TerminalNode {
		return this.getToken(SqlParser.ROW, 0);
	}
	public ROWS(): TerminalNode {
		return this.getToken(SqlParser.ROWS, 0);
	}
	public ROW_FORMAT(): TerminalNode {
		return this.getToken(SqlParser.ROW_FORMAT, 0);
	}
	public SAVEPOINT(): TerminalNode {
		return this.getToken(SqlParser.SAVEPOINT, 0);
	}
	public SCHEDULE(): TerminalNode {
		return this.getToken(SqlParser.SCHEDULE, 0);
	}
	public SCHEMA_NAME(): TerminalNode {
		return this.getToken(SqlParser.SCHEMA_NAME, 0);
	}
	public SECURITY(): TerminalNode {
		return this.getToken(SqlParser.SECURITY, 0);
	}
	public SERIAL(): TerminalNode {
		return this.getToken(SqlParser.SERIAL, 0);
	}
	public SERVER(): TerminalNode {
		return this.getToken(SqlParser.SERVER, 0);
	}
	public SESSION(): TerminalNode {
		return this.getToken(SqlParser.SESSION, 0);
	}
	public SESSION_VARIABLES_ADMIN(): TerminalNode {
		return this.getToken(SqlParser.SESSION_VARIABLES_ADMIN, 0);
	}
	public SET_USER_ID(): TerminalNode {
		return this.getToken(SqlParser.SET_USER_ID, 0);
	}
	public SHARE(): TerminalNode {
		return this.getToken(SqlParser.SHARE, 0);
	}
	public SHARED(): TerminalNode {
		return this.getToken(SqlParser.SHARED, 0);
	}
	public SHOW_ROUTINE(): TerminalNode {
		return this.getToken(SqlParser.SHOW_ROUTINE, 0);
	}
	public SIGNED(): TerminalNode {
		return this.getToken(SqlParser.SIGNED, 0);
	}
	public SIMPLE(): TerminalNode {
		return this.getToken(SqlParser.SIMPLE, 0);
	}
	public SLAVE(): TerminalNode {
		return this.getToken(SqlParser.SLAVE, 0);
	}
	public SLOW(): TerminalNode {
		return this.getToken(SqlParser.SLOW, 0);
	}
	public SNAPSHOT(): TerminalNode {
		return this.getToken(SqlParser.SNAPSHOT, 0);
	}
	public SOCKET(): TerminalNode {
		return this.getToken(SqlParser.SOCKET, 0);
	}
	public SOME(): TerminalNode {
		return this.getToken(SqlParser.SOME, 0);
	}
	public SONAME(): TerminalNode {
		return this.getToken(SqlParser.SONAME, 0);
	}
	public SOUNDS(): TerminalNode {
		return this.getToken(SqlParser.SOUNDS, 0);
	}
	public SOURCE(): TerminalNode {
		return this.getToken(SqlParser.SOURCE, 0);
	}
	public SQL_AFTER_GTIDS(): TerminalNode {
		return this.getToken(SqlParser.SQL_AFTER_GTIDS, 0);
	}
	public SQL_AFTER_MTS_GAPS(): TerminalNode {
		return this.getToken(SqlParser.SQL_AFTER_MTS_GAPS, 0);
	}
	public SQL_BEFORE_GTIDS(): TerminalNode {
		return this.getToken(SqlParser.SQL_BEFORE_GTIDS, 0);
	}
	public SQL_BUFFER_RESULT(): TerminalNode {
		return this.getToken(SqlParser.SQL_BUFFER_RESULT, 0);
	}
	public SQL_CACHE(): TerminalNode {
		return this.getToken(SqlParser.SQL_CACHE, 0);
	}
	public SQL_NO_CACHE(): TerminalNode {
		return this.getToken(SqlParser.SQL_NO_CACHE, 0);
	}
	public SQL_THREAD(): TerminalNode {
		return this.getToken(SqlParser.SQL_THREAD, 0);
	}
	public STACKED(): TerminalNode {
		return this.getToken(SqlParser.STACKED, 0);
	}
	public START(): TerminalNode {
		return this.getToken(SqlParser.START, 0);
	}
	public STARTS(): TerminalNode {
		return this.getToken(SqlParser.STARTS, 0);
	}
	public STATS_AUTO_RECALC(): TerminalNode {
		return this.getToken(SqlParser.STATS_AUTO_RECALC, 0);
	}
	public STATS_PERSISTENT(): TerminalNode {
		return this.getToken(SqlParser.STATS_PERSISTENT, 0);
	}
	public STATS_SAMPLE_PAGES(): TerminalNode {
		return this.getToken(SqlParser.STATS_SAMPLE_PAGES, 0);
	}
	public STATUS(): TerminalNode {
		return this.getToken(SqlParser.STATUS, 0);
	}
	public STOP(): TerminalNode {
		return this.getToken(SqlParser.STOP, 0);
	}
	public STORAGE(): TerminalNode {
		return this.getToken(SqlParser.STORAGE, 0);
	}
	public STRING(): TerminalNode {
		return this.getToken(SqlParser.STRING, 0);
	}
	public SUBCLASS_ORIGIN(): TerminalNode {
		return this.getToken(SqlParser.SUBCLASS_ORIGIN, 0);
	}
	public SUBJECT(): TerminalNode {
		return this.getToken(SqlParser.SUBJECT, 0);
	}
	public SUBPARTITION(): TerminalNode {
		return this.getToken(SqlParser.SUBPARTITION, 0);
	}
	public SUBPARTITIONS(): TerminalNode {
		return this.getToken(SqlParser.SUBPARTITIONS, 0);
	}
	public SUSPEND(): TerminalNode {
		return this.getToken(SqlParser.SUSPEND, 0);
	}
	public SWAPS(): TerminalNode {
		return this.getToken(SqlParser.SWAPS, 0);
	}
	public SWITCHES(): TerminalNode {
		return this.getToken(SqlParser.SWITCHES, 0);
	}
	public SYSTEM_VARIABLES_ADMIN(): TerminalNode {
		return this.getToken(SqlParser.SYSTEM_VARIABLES_ADMIN, 0);
	}
	public TABLE_NAME(): TerminalNode {
		return this.getToken(SqlParser.TABLE_NAME, 0);
	}
	public TABLESPACE(): TerminalNode {
		return this.getToken(SqlParser.TABLESPACE, 0);
	}
	public TABLE_ENCRYPTION_ADMIN(): TerminalNode {
		return this.getToken(SqlParser.TABLE_ENCRYPTION_ADMIN, 0);
	}
	public TEMPORARY(): TerminalNode {
		return this.getToken(SqlParser.TEMPORARY, 0);
	}
	public TEMPTABLE(): TerminalNode {
		return this.getToken(SqlParser.TEMPTABLE, 0);
	}
	public THAN(): TerminalNode {
		return this.getToken(SqlParser.THAN, 0);
	}
	public TRADITIONAL(): TerminalNode {
		return this.getToken(SqlParser.TRADITIONAL, 0);
	}
	public TRANSACTION(): TerminalNode {
		return this.getToken(SqlParser.TRANSACTION, 0);
	}
	public TRANSACTIONAL(): TerminalNode {
		return this.getToken(SqlParser.TRANSACTIONAL, 0);
	}
	public TRIGGERS(): TerminalNode {
		return this.getToken(SqlParser.TRIGGERS, 0);
	}
	public TRUNCATE(): TerminalNode {
		return this.getToken(SqlParser.TRUNCATE, 0);
	}
	public UNDEFINED(): TerminalNode {
		return this.getToken(SqlParser.UNDEFINED, 0);
	}
	public UNDOFILE(): TerminalNode {
		return this.getToken(SqlParser.UNDOFILE, 0);
	}
	public UNDO_BUFFER_SIZE(): TerminalNode {
		return this.getToken(SqlParser.UNDO_BUFFER_SIZE, 0);
	}
	public UNINSTALL(): TerminalNode {
		return this.getToken(SqlParser.UNINSTALL, 0);
	}
	public UNKNOWN(): TerminalNode {
		return this.getToken(SqlParser.UNKNOWN, 0);
	}
	public UNTIL(): TerminalNode {
		return this.getToken(SqlParser.UNTIL, 0);
	}
	public UPGRADE(): TerminalNode {
		return this.getToken(SqlParser.UPGRADE, 0);
	}
	public USER(): TerminalNode {
		return this.getToken(SqlParser.USER, 0);
	}
	public USE_FRM(): TerminalNode {
		return this.getToken(SqlParser.USE_FRM, 0);
	}
	public USER_RESOURCES(): TerminalNode {
		return this.getToken(SqlParser.USER_RESOURCES, 0);
	}
	public VALIDATION(): TerminalNode {
		return this.getToken(SqlParser.VALIDATION, 0);
	}
	public VALUE(): TerminalNode {
		return this.getToken(SqlParser.VALUE, 0);
	}
	public VARIABLES(): TerminalNode {
		return this.getToken(SqlParser.VARIABLES, 0);
	}
	public VERSION_TOKEN_ADMIN(): TerminalNode {
		return this.getToken(SqlParser.VERSION_TOKEN_ADMIN, 0);
	}
	public VIEW(): TerminalNode {
		return this.getToken(SqlParser.VIEW, 0);
	}
	public WAIT(): TerminalNode {
		return this.getToken(SqlParser.WAIT, 0);
	}
	public WARNINGS(): TerminalNode {
		return this.getToken(SqlParser.WARNINGS, 0);
	}
	public WITHOUT(): TerminalNode {
		return this.getToken(SqlParser.WITHOUT, 0);
	}
	public WORK(): TerminalNode {
		return this.getToken(SqlParser.WORK, 0);
	}
	public WRAPPER(): TerminalNode {
		return this.getToken(SqlParser.WRAPPER, 0);
	}
	public X509(): TerminalNode {
		return this.getToken(SqlParser.X509, 0);
	}
	public XA(): TerminalNode {
		return this.getToken(SqlParser.XA, 0);
	}
	public XA_RECOVER_ADMIN(): TerminalNode {
		return this.getToken(SqlParser.XA_RECOVER_ADMIN, 0);
	}
	public XML(): TerminalNode {
		return this.getToken(SqlParser.XML, 0);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_keywordsCanBeId;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterKeywordsCanBeId) {
	 		listener.enterKeywordsCanBeId(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitKeywordsCanBeId) {
	 		listener.exitKeywordsCanBeId(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitKeywordsCanBeId) {
			return visitor.visitKeywordsCanBeId(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class FunctionNameBaseContext extends ParserRuleContext {
	constructor(parser?: SqlParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public ABS(): TerminalNode {
		return this.getToken(SqlParser.ABS, 0);
	}
	public ACOS(): TerminalNode {
		return this.getToken(SqlParser.ACOS, 0);
	}
	public ADDDATE(): TerminalNode {
		return this.getToken(SqlParser.ADDDATE, 0);
	}
	public ADDTIME(): TerminalNode {
		return this.getToken(SqlParser.ADDTIME, 0);
	}
	public AES_DECRYPT(): TerminalNode {
		return this.getToken(SqlParser.AES_DECRYPT, 0);
	}
	public AES_ENCRYPT(): TerminalNode {
		return this.getToken(SqlParser.AES_ENCRYPT, 0);
	}
	public AREA(): TerminalNode {
		return this.getToken(SqlParser.AREA, 0);
	}
	public ASBINARY(): TerminalNode {
		return this.getToken(SqlParser.ASBINARY, 0);
	}
	public ASIN(): TerminalNode {
		return this.getToken(SqlParser.ASIN, 0);
	}
	public ASTEXT(): TerminalNode {
		return this.getToken(SqlParser.ASTEXT, 0);
	}
	public ASWKB(): TerminalNode {
		return this.getToken(SqlParser.ASWKB, 0);
	}
	public ASWKT(): TerminalNode {
		return this.getToken(SqlParser.ASWKT, 0);
	}
	public ASYMMETRIC_DECRYPT(): TerminalNode {
		return this.getToken(SqlParser.ASYMMETRIC_DECRYPT, 0);
	}
	public ASYMMETRIC_DERIVE(): TerminalNode {
		return this.getToken(SqlParser.ASYMMETRIC_DERIVE, 0);
	}
	public ASYMMETRIC_ENCRYPT(): TerminalNode {
		return this.getToken(SqlParser.ASYMMETRIC_ENCRYPT, 0);
	}
	public ASYMMETRIC_SIGN(): TerminalNode {
		return this.getToken(SqlParser.ASYMMETRIC_SIGN, 0);
	}
	public ASYMMETRIC_VERIFY(): TerminalNode {
		return this.getToken(SqlParser.ASYMMETRIC_VERIFY, 0);
	}
	public ATAN(): TerminalNode {
		return this.getToken(SqlParser.ATAN, 0);
	}
	public ATAN2(): TerminalNode {
		return this.getToken(SqlParser.ATAN2, 0);
	}
	public BENCHMARK(): TerminalNode {
		return this.getToken(SqlParser.BENCHMARK, 0);
	}
	public BIN(): TerminalNode {
		return this.getToken(SqlParser.BIN, 0);
	}
	public BIT_COUNT(): TerminalNode {
		return this.getToken(SqlParser.BIT_COUNT, 0);
	}
	public BIT_LENGTH(): TerminalNode {
		return this.getToken(SqlParser.BIT_LENGTH, 0);
	}
	public BUFFER(): TerminalNode {
		return this.getToken(SqlParser.BUFFER, 0);
	}
	public CEIL(): TerminalNode {
		return this.getToken(SqlParser.CEIL, 0);
	}
	public CEILING(): TerminalNode {
		return this.getToken(SqlParser.CEILING, 0);
	}
	public CENTROID(): TerminalNode {
		return this.getToken(SqlParser.CENTROID, 0);
	}
	public CHARACTER_LENGTH(): TerminalNode {
		return this.getToken(SqlParser.CHARACTER_LENGTH, 0);
	}
	public CHARSET(): TerminalNode {
		return this.getToken(SqlParser.CHARSET, 0);
	}
	public CHAR_LENGTH(): TerminalNode {
		return this.getToken(SqlParser.CHAR_LENGTH, 0);
	}
	public COERCIBILITY(): TerminalNode {
		return this.getToken(SqlParser.COERCIBILITY, 0);
	}
	public COLLATION(): TerminalNode {
		return this.getToken(SqlParser.COLLATION, 0);
	}
	public COMPRESS(): TerminalNode {
		return this.getToken(SqlParser.COMPRESS, 0);
	}
	public CONCAT(): TerminalNode {
		return this.getToken(SqlParser.CONCAT, 0);
	}
	public CONCAT_WS(): TerminalNode {
		return this.getToken(SqlParser.CONCAT_WS, 0);
	}
	public CONNECTION_ID(): TerminalNode {
		return this.getToken(SqlParser.CONNECTION_ID, 0);
	}
	public CONV(): TerminalNode {
		return this.getToken(SqlParser.CONV, 0);
	}
	public CONVERT_TZ(): TerminalNode {
		return this.getToken(SqlParser.CONVERT_TZ, 0);
	}
	public COS(): TerminalNode {
		return this.getToken(SqlParser.COS, 0);
	}
	public COT(): TerminalNode {
		return this.getToken(SqlParser.COT, 0);
	}
	public COUNT(): TerminalNode {
		return this.getToken(SqlParser.COUNT, 0);
	}
	public CRC32(): TerminalNode {
		return this.getToken(SqlParser.CRC32, 0);
	}
	public CREATE_ASYMMETRIC_PRIV_KEY(): TerminalNode {
		return this.getToken(SqlParser.CREATE_ASYMMETRIC_PRIV_KEY, 0);
	}
	public CREATE_ASYMMETRIC_PUB_KEY(): TerminalNode {
		return this.getToken(SqlParser.CREATE_ASYMMETRIC_PUB_KEY, 0);
	}
	public CREATE_DH_PARAMETERS(): TerminalNode {
		return this.getToken(SqlParser.CREATE_DH_PARAMETERS, 0);
	}
	public CREATE_DIGEST(): TerminalNode {
		return this.getToken(SqlParser.CREATE_DIGEST, 0);
	}
	public CROSSES(): TerminalNode {
		return this.getToken(SqlParser.CROSSES, 0);
	}
	public DATABASE(): TerminalNode {
		return this.getToken(SqlParser.DATABASE, 0);
	}
	public DATE(): TerminalNode {
		return this.getToken(SqlParser.DATE, 0);
	}
	public DATEDIFF(): TerminalNode {
		return this.getToken(SqlParser.DATEDIFF, 0);
	}
	public DATE_FORMAT(): TerminalNode {
		return this.getToken(SqlParser.DATE_FORMAT, 0);
	}
	public DAY(): TerminalNode {
		return this.getToken(SqlParser.DAY, 0);
	}
	public DAYNAME(): TerminalNode {
		return this.getToken(SqlParser.DAYNAME, 0);
	}
	public DAYOFMONTH(): TerminalNode {
		return this.getToken(SqlParser.DAYOFMONTH, 0);
	}
	public DAYOFWEEK(): TerminalNode {
		return this.getToken(SqlParser.DAYOFWEEK, 0);
	}
	public DAYOFYEAR(): TerminalNode {
		return this.getToken(SqlParser.DAYOFYEAR, 0);
	}
	public DECODE(): TerminalNode {
		return this.getToken(SqlParser.DECODE, 0);
	}
	public DEGREES(): TerminalNode {
		return this.getToken(SqlParser.DEGREES, 0);
	}
	public DES_DECRYPT(): TerminalNode {
		return this.getToken(SqlParser.DES_DECRYPT, 0);
	}
	public DES_ENCRYPT(): TerminalNode {
		return this.getToken(SqlParser.DES_ENCRYPT, 0);
	}
	public DIMENSION(): TerminalNode {
		return this.getToken(SqlParser.DIMENSION, 0);
	}
	public DISJOINT(): TerminalNode {
		return this.getToken(SqlParser.DISJOINT, 0);
	}
	public ELT(): TerminalNode {
		return this.getToken(SqlParser.ELT, 0);
	}
	public ENCODE(): TerminalNode {
		return this.getToken(SqlParser.ENCODE, 0);
	}
	public ENCRYPT(): TerminalNode {
		return this.getToken(SqlParser.ENCRYPT, 0);
	}
	public ENDPOINT(): TerminalNode {
		return this.getToken(SqlParser.ENDPOINT, 0);
	}
	public ENVELOPE(): TerminalNode {
		return this.getToken(SqlParser.ENVELOPE, 0);
	}
	public EQUALS(): TerminalNode {
		return this.getToken(SqlParser.EQUALS, 0);
	}
	public EXP(): TerminalNode {
		return this.getToken(SqlParser.EXP, 0);
	}
	public EXPORT_SET(): TerminalNode {
		return this.getToken(SqlParser.EXPORT_SET, 0);
	}
	public EXTERIORRING(): TerminalNode {
		return this.getToken(SqlParser.EXTERIORRING, 0);
	}
	public EXTRACTVALUE(): TerminalNode {
		return this.getToken(SqlParser.EXTRACTVALUE, 0);
	}
	public FIELD(): TerminalNode {
		return this.getToken(SqlParser.FIELD, 0);
	}
	public FIND_IN_SET(): TerminalNode {
		return this.getToken(SqlParser.FIND_IN_SET, 0);
	}
	public FLOOR(): TerminalNode {
		return this.getToken(SqlParser.FLOOR, 0);
	}
	public FORMAT(): TerminalNode {
		return this.getToken(SqlParser.FORMAT, 0);
	}
	public FOUND_ROWS(): TerminalNode {
		return this.getToken(SqlParser.FOUND_ROWS, 0);
	}
	public FROM_BASE64(): TerminalNode {
		return this.getToken(SqlParser.FROM_BASE64, 0);
	}
	public FROM_DAYS(): TerminalNode {
		return this.getToken(SqlParser.FROM_DAYS, 0);
	}
	public FROM_UNIXTIME(): TerminalNode {
		return this.getToken(SqlParser.FROM_UNIXTIME, 0);
	}
	public GEOMCOLLFROMTEXT(): TerminalNode {
		return this.getToken(SqlParser.GEOMCOLLFROMTEXT, 0);
	}
	public GEOMCOLLFROMWKB(): TerminalNode {
		return this.getToken(SqlParser.GEOMCOLLFROMWKB, 0);
	}
	public GEOMETRYCOLLECTION(): TerminalNode {
		return this.getToken(SqlParser.GEOMETRYCOLLECTION, 0);
	}
	public GEOMETRYCOLLECTIONFROMTEXT(): TerminalNode {
		return this.getToken(SqlParser.GEOMETRYCOLLECTIONFROMTEXT, 0);
	}
	public GEOMETRYCOLLECTIONFROMWKB(): TerminalNode {
		return this.getToken(SqlParser.GEOMETRYCOLLECTIONFROMWKB, 0);
	}
	public GEOMETRYFROMTEXT(): TerminalNode {
		return this.getToken(SqlParser.GEOMETRYFROMTEXT, 0);
	}
	public GEOMETRYFROMWKB(): TerminalNode {
		return this.getToken(SqlParser.GEOMETRYFROMWKB, 0);
	}
	public GEOMETRYN(): TerminalNode {
		return this.getToken(SqlParser.GEOMETRYN, 0);
	}
	public GEOMETRYTYPE(): TerminalNode {
		return this.getToken(SqlParser.GEOMETRYTYPE, 0);
	}
	public GEOMFROMTEXT(): TerminalNode {
		return this.getToken(SqlParser.GEOMFROMTEXT, 0);
	}
	public GEOMFROMWKB(): TerminalNode {
		return this.getToken(SqlParser.GEOMFROMWKB, 0);
	}
	public GET_FORMAT(): TerminalNode {
		return this.getToken(SqlParser.GET_FORMAT, 0);
	}
	public GET_LOCK(): TerminalNode {
		return this.getToken(SqlParser.GET_LOCK, 0);
	}
	public GLENGTH(): TerminalNode {
		return this.getToken(SqlParser.GLENGTH, 0);
	}
	public GREATEST(): TerminalNode {
		return this.getToken(SqlParser.GREATEST, 0);
	}
	public GTID_SUBSET(): TerminalNode {
		return this.getToken(SqlParser.GTID_SUBSET, 0);
	}
	public GTID_SUBTRACT(): TerminalNode {
		return this.getToken(SqlParser.GTID_SUBTRACT, 0);
	}
	public HEX(): TerminalNode {
		return this.getToken(SqlParser.HEX, 0);
	}
	public HOUR(): TerminalNode {
		return this.getToken(SqlParser.HOUR, 0);
	}
	public IFNULL(): TerminalNode {
		return this.getToken(SqlParser.IFNULL, 0);
	}
	public INET6_ATON(): TerminalNode {
		return this.getToken(SqlParser.INET6_ATON, 0);
	}
	public INET6_NTOA(): TerminalNode {
		return this.getToken(SqlParser.INET6_NTOA, 0);
	}
	public INET_ATON(): TerminalNode {
		return this.getToken(SqlParser.INET_ATON, 0);
	}
	public INET_NTOA(): TerminalNode {
		return this.getToken(SqlParser.INET_NTOA, 0);
	}
	public INSTR(): TerminalNode {
		return this.getToken(SqlParser.INSTR, 0);
	}
	public INTERIORRINGN(): TerminalNode {
		return this.getToken(SqlParser.INTERIORRINGN, 0);
	}
	public INTERSECTS(): TerminalNode {
		return this.getToken(SqlParser.INTERSECTS, 0);
	}
	public INVISIBLE(): TerminalNode {
		return this.getToken(SqlParser.INVISIBLE, 0);
	}
	public ISCLOSED(): TerminalNode {
		return this.getToken(SqlParser.ISCLOSED, 0);
	}
	public ISEMPTY(): TerminalNode {
		return this.getToken(SqlParser.ISEMPTY, 0);
	}
	public ISNULL(): TerminalNode {
		return this.getToken(SqlParser.ISNULL, 0);
	}
	public ISSIMPLE(): TerminalNode {
		return this.getToken(SqlParser.ISSIMPLE, 0);
	}
	public IS_FREE_LOCK(): TerminalNode {
		return this.getToken(SqlParser.IS_FREE_LOCK, 0);
	}
	public IS_IPV4(): TerminalNode {
		return this.getToken(SqlParser.IS_IPV4, 0);
	}
	public IS_IPV4_COMPAT(): TerminalNode {
		return this.getToken(SqlParser.IS_IPV4_COMPAT, 0);
	}
	public IS_IPV4_MAPPED(): TerminalNode {
		return this.getToken(SqlParser.IS_IPV4_MAPPED, 0);
	}
	public IS_IPV6(): TerminalNode {
		return this.getToken(SqlParser.IS_IPV6, 0);
	}
	public IS_USED_LOCK(): TerminalNode {
		return this.getToken(SqlParser.IS_USED_LOCK, 0);
	}
	public LAST_INSERT_ID(): TerminalNode {
		return this.getToken(SqlParser.LAST_INSERT_ID, 0);
	}
	public LCASE(): TerminalNode {
		return this.getToken(SqlParser.LCASE, 0);
	}
	public LEAST(): TerminalNode {
		return this.getToken(SqlParser.LEAST, 0);
	}
	public LEFT(): TerminalNode {
		return this.getToken(SqlParser.LEFT, 0);
	}
	public LENGTH(): TerminalNode {
		return this.getToken(SqlParser.LENGTH, 0);
	}
	public LINEFROMTEXT(): TerminalNode {
		return this.getToken(SqlParser.LINEFROMTEXT, 0);
	}
	public LINEFROMWKB(): TerminalNode {
		return this.getToken(SqlParser.LINEFROMWKB, 0);
	}
	public LINESTRING(): TerminalNode {
		return this.getToken(SqlParser.LINESTRING, 0);
	}
	public LINESTRINGFROMTEXT(): TerminalNode {
		return this.getToken(SqlParser.LINESTRINGFROMTEXT, 0);
	}
	public LINESTRINGFROMWKB(): TerminalNode {
		return this.getToken(SqlParser.LINESTRINGFROMWKB, 0);
	}
	public LN(): TerminalNode {
		return this.getToken(SqlParser.LN, 0);
	}
	public LOAD_FILE(): TerminalNode {
		return this.getToken(SqlParser.LOAD_FILE, 0);
	}
	public LOCATE(): TerminalNode {
		return this.getToken(SqlParser.LOCATE, 0);
	}
	public LOG(): TerminalNode {
		return this.getToken(SqlParser.LOG, 0);
	}
	public LOG10(): TerminalNode {
		return this.getToken(SqlParser.LOG10, 0);
	}
	public LOG2(): TerminalNode {
		return this.getToken(SqlParser.LOG2, 0);
	}
	public LOWER(): TerminalNode {
		return this.getToken(SqlParser.LOWER, 0);
	}
	public LPAD(): TerminalNode {
		return this.getToken(SqlParser.LPAD, 0);
	}
	public LTRIM(): TerminalNode {
		return this.getToken(SqlParser.LTRIM, 0);
	}
	public MAKEDATE(): TerminalNode {
		return this.getToken(SqlParser.MAKEDATE, 0);
	}
	public MAKETIME(): TerminalNode {
		return this.getToken(SqlParser.MAKETIME, 0);
	}
	public MAKE_SET(): TerminalNode {
		return this.getToken(SqlParser.MAKE_SET, 0);
	}
	public MASTER_POS_WAIT(): TerminalNode {
		return this.getToken(SqlParser.MASTER_POS_WAIT, 0);
	}
	public MBRCONTAINS(): TerminalNode {
		return this.getToken(SqlParser.MBRCONTAINS, 0);
	}
	public MBRDISJOINT(): TerminalNode {
		return this.getToken(SqlParser.MBRDISJOINT, 0);
	}
	public MBREQUAL(): TerminalNode {
		return this.getToken(SqlParser.MBREQUAL, 0);
	}
	public MBRINTERSECTS(): TerminalNode {
		return this.getToken(SqlParser.MBRINTERSECTS, 0);
	}
	public MBROVERLAPS(): TerminalNode {
		return this.getToken(SqlParser.MBROVERLAPS, 0);
	}
	public MBRTOUCHES(): TerminalNode {
		return this.getToken(SqlParser.MBRTOUCHES, 0);
	}
	public MBRWITHIN(): TerminalNode {
		return this.getToken(SqlParser.MBRWITHIN, 0);
	}
	public MD5(): TerminalNode {
		return this.getToken(SqlParser.MD5, 0);
	}
	public MICROSECOND(): TerminalNode {
		return this.getToken(SqlParser.MICROSECOND, 0);
	}
	public MINUTE(): TerminalNode {
		return this.getToken(SqlParser.MINUTE, 0);
	}
	public MLINEFROMTEXT(): TerminalNode {
		return this.getToken(SqlParser.MLINEFROMTEXT, 0);
	}
	public MLINEFROMWKB(): TerminalNode {
		return this.getToken(SqlParser.MLINEFROMWKB, 0);
	}
	public MONTH(): TerminalNode {
		return this.getToken(SqlParser.MONTH, 0);
	}
	public MONTHNAME(): TerminalNode {
		return this.getToken(SqlParser.MONTHNAME, 0);
	}
	public MPOINTFROMTEXT(): TerminalNode {
		return this.getToken(SqlParser.MPOINTFROMTEXT, 0);
	}
	public MPOINTFROMWKB(): TerminalNode {
		return this.getToken(SqlParser.MPOINTFROMWKB, 0);
	}
	public MPOLYFROMTEXT(): TerminalNode {
		return this.getToken(SqlParser.MPOLYFROMTEXT, 0);
	}
	public MPOLYFROMWKB(): TerminalNode {
		return this.getToken(SqlParser.MPOLYFROMWKB, 0);
	}
	public MULTILINESTRING(): TerminalNode {
		return this.getToken(SqlParser.MULTILINESTRING, 0);
	}
	public MULTILINESTRINGFROMTEXT(): TerminalNode {
		return this.getToken(SqlParser.MULTILINESTRINGFROMTEXT, 0);
	}
	public MULTILINESTRINGFROMWKB(): TerminalNode {
		return this.getToken(SqlParser.MULTILINESTRINGFROMWKB, 0);
	}
	public MULTIPOINT(): TerminalNode {
		return this.getToken(SqlParser.MULTIPOINT, 0);
	}
	public MULTIPOINTFROMTEXT(): TerminalNode {
		return this.getToken(SqlParser.MULTIPOINTFROMTEXT, 0);
	}
	public MULTIPOINTFROMWKB(): TerminalNode {
		return this.getToken(SqlParser.MULTIPOINTFROMWKB, 0);
	}
	public MULTIPOLYGON(): TerminalNode {
		return this.getToken(SqlParser.MULTIPOLYGON, 0);
	}
	public MULTIPOLYGONFROMTEXT(): TerminalNode {
		return this.getToken(SqlParser.MULTIPOLYGONFROMTEXT, 0);
	}
	public MULTIPOLYGONFROMWKB(): TerminalNode {
		return this.getToken(SqlParser.MULTIPOLYGONFROMWKB, 0);
	}
	public NAME_CONST(): TerminalNode {
		return this.getToken(SqlParser.NAME_CONST, 0);
	}
	public NULLIF(): TerminalNode {
		return this.getToken(SqlParser.NULLIF, 0);
	}
	public NUMGEOMETRIES(): TerminalNode {
		return this.getToken(SqlParser.NUMGEOMETRIES, 0);
	}
	public NUMINTERIORRINGS(): TerminalNode {
		return this.getToken(SqlParser.NUMINTERIORRINGS, 0);
	}
	public NUMPOINTS(): TerminalNode {
		return this.getToken(SqlParser.NUMPOINTS, 0);
	}
	public OCT(): TerminalNode {
		return this.getToken(SqlParser.OCT, 0);
	}
	public OCTET_LENGTH(): TerminalNode {
		return this.getToken(SqlParser.OCTET_LENGTH, 0);
	}
	public ORD(): TerminalNode {
		return this.getToken(SqlParser.ORD, 0);
	}
	public OVERLAPS(): TerminalNode {
		return this.getToken(SqlParser.OVERLAPS, 0);
	}
	public PERIOD_ADD(): TerminalNode {
		return this.getToken(SqlParser.PERIOD_ADD, 0);
	}
	public PERIOD_DIFF(): TerminalNode {
		return this.getToken(SqlParser.PERIOD_DIFF, 0);
	}
	public PI(): TerminalNode {
		return this.getToken(SqlParser.PI, 0);
	}
	public POINT(): TerminalNode {
		return this.getToken(SqlParser.POINT, 0);
	}
	public POINTFROMTEXT(): TerminalNode {
		return this.getToken(SqlParser.POINTFROMTEXT, 0);
	}
	public POINTFROMWKB(): TerminalNode {
		return this.getToken(SqlParser.POINTFROMWKB, 0);
	}
	public POINTN(): TerminalNode {
		return this.getToken(SqlParser.POINTN, 0);
	}
	public POLYFROMTEXT(): TerminalNode {
		return this.getToken(SqlParser.POLYFROMTEXT, 0);
	}
	public POLYFROMWKB(): TerminalNode {
		return this.getToken(SqlParser.POLYFROMWKB, 0);
	}
	public POLYGON(): TerminalNode {
		return this.getToken(SqlParser.POLYGON, 0);
	}
	public POLYGONFROMTEXT(): TerminalNode {
		return this.getToken(SqlParser.POLYGONFROMTEXT, 0);
	}
	public POLYGONFROMWKB(): TerminalNode {
		return this.getToken(SqlParser.POLYGONFROMWKB, 0);
	}
	public POSITION(): TerminalNode {
		return this.getToken(SqlParser.POSITION, 0);
	}
	public POW(): TerminalNode {
		return this.getToken(SqlParser.POW, 0);
	}
	public POWER(): TerminalNode {
		return this.getToken(SqlParser.POWER, 0);
	}
	public QUARTER(): TerminalNode {
		return this.getToken(SqlParser.QUARTER, 0);
	}
	public QUOTE(): TerminalNode {
		return this.getToken(SqlParser.QUOTE, 0);
	}
	public RADIANS(): TerminalNode {
		return this.getToken(SqlParser.RADIANS, 0);
	}
	public RAND(): TerminalNode {
		return this.getToken(SqlParser.RAND, 0);
	}
	public RANDOM_BYTES(): TerminalNode {
		return this.getToken(SqlParser.RANDOM_BYTES, 0);
	}
	public RELEASE_LOCK(): TerminalNode {
		return this.getToken(SqlParser.RELEASE_LOCK, 0);
	}
	public REVERSE(): TerminalNode {
		return this.getToken(SqlParser.REVERSE, 0);
	}
	public RIGHT(): TerminalNode {
		return this.getToken(SqlParser.RIGHT, 0);
	}
	public ROUND(): TerminalNode {
		return this.getToken(SqlParser.ROUND, 0);
	}
	public ROW_COUNT(): TerminalNode {
		return this.getToken(SqlParser.ROW_COUNT, 0);
	}
	public RPAD(): TerminalNode {
		return this.getToken(SqlParser.RPAD, 0);
	}
	public RTRIM(): TerminalNode {
		return this.getToken(SqlParser.RTRIM, 0);
	}
	public SECOND(): TerminalNode {
		return this.getToken(SqlParser.SECOND, 0);
	}
	public SEC_TO_TIME(): TerminalNode {
		return this.getToken(SqlParser.SEC_TO_TIME, 0);
	}
	public SESSION_USER(): TerminalNode {
		return this.getToken(SqlParser.SESSION_USER, 0);
	}
	public SESSION_VARIABLES_ADMIN(): TerminalNode {
		return this.getToken(SqlParser.SESSION_VARIABLES_ADMIN, 0);
	}
	public SHA(): TerminalNode {
		return this.getToken(SqlParser.SHA, 0);
	}
	public SHA1(): TerminalNode {
		return this.getToken(SqlParser.SHA1, 0);
	}
	public SHA2(): TerminalNode {
		return this.getToken(SqlParser.SHA2, 0);
	}
	public SIGN(): TerminalNode {
		return this.getToken(SqlParser.SIGN, 0);
	}
	public SIN(): TerminalNode {
		return this.getToken(SqlParser.SIN, 0);
	}
	public SLEEP(): TerminalNode {
		return this.getToken(SqlParser.SLEEP, 0);
	}
	public SOUNDEX(): TerminalNode {
		return this.getToken(SqlParser.SOUNDEX, 0);
	}
	public SQL_THREAD_WAIT_AFTER_GTIDS(): TerminalNode {
		return this.getToken(SqlParser.SQL_THREAD_WAIT_AFTER_GTIDS, 0);
	}
	public SQRT(): TerminalNode {
		return this.getToken(SqlParser.SQRT, 0);
	}
	public SRID(): TerminalNode {
		return this.getToken(SqlParser.SRID, 0);
	}
	public STARTPOINT(): TerminalNode {
		return this.getToken(SqlParser.STARTPOINT, 0);
	}
	public STRCMP(): TerminalNode {
		return this.getToken(SqlParser.STRCMP, 0);
	}
	public STR_TO_DATE(): TerminalNode {
		return this.getToken(SqlParser.STR_TO_DATE, 0);
	}
	public ST_AREA(): TerminalNode {
		return this.getToken(SqlParser.ST_AREA, 0);
	}
	public ST_ASBINARY(): TerminalNode {
		return this.getToken(SqlParser.ST_ASBINARY, 0);
	}
	public ST_ASTEXT(): TerminalNode {
		return this.getToken(SqlParser.ST_ASTEXT, 0);
	}
	public ST_ASWKB(): TerminalNode {
		return this.getToken(SqlParser.ST_ASWKB, 0);
	}
	public ST_ASWKT(): TerminalNode {
		return this.getToken(SqlParser.ST_ASWKT, 0);
	}
	public ST_BUFFER(): TerminalNode {
		return this.getToken(SqlParser.ST_BUFFER, 0);
	}
	public ST_CENTROID(): TerminalNode {
		return this.getToken(SqlParser.ST_CENTROID, 0);
	}
	public ST_CONTAINS(): TerminalNode {
		return this.getToken(SqlParser.ST_CONTAINS, 0);
	}
	public ST_CROSSES(): TerminalNode {
		return this.getToken(SqlParser.ST_CROSSES, 0);
	}
	public ST_DIFFERENCE(): TerminalNode {
		return this.getToken(SqlParser.ST_DIFFERENCE, 0);
	}
	public ST_DIMENSION(): TerminalNode {
		return this.getToken(SqlParser.ST_DIMENSION, 0);
	}
	public ST_DISJOINT(): TerminalNode {
		return this.getToken(SqlParser.ST_DISJOINT, 0);
	}
	public ST_DISTANCE(): TerminalNode {
		return this.getToken(SqlParser.ST_DISTANCE, 0);
	}
	public ST_ENDPOINT(): TerminalNode {
		return this.getToken(SqlParser.ST_ENDPOINT, 0);
	}
	public ST_ENVELOPE(): TerminalNode {
		return this.getToken(SqlParser.ST_ENVELOPE, 0);
	}
	public ST_EQUALS(): TerminalNode {
		return this.getToken(SqlParser.ST_EQUALS, 0);
	}
	public ST_EXTERIORRING(): TerminalNode {
		return this.getToken(SqlParser.ST_EXTERIORRING, 0);
	}
	public ST_GEOMCOLLFROMTEXT(): TerminalNode {
		return this.getToken(SqlParser.ST_GEOMCOLLFROMTEXT, 0);
	}
	public ST_GEOMCOLLFROMTXT(): TerminalNode {
		return this.getToken(SqlParser.ST_GEOMCOLLFROMTXT, 0);
	}
	public ST_GEOMCOLLFROMWKB(): TerminalNode {
		return this.getToken(SqlParser.ST_GEOMCOLLFROMWKB, 0);
	}
	public ST_GEOMETRYCOLLECTIONFROMTEXT(): TerminalNode {
		return this.getToken(SqlParser.ST_GEOMETRYCOLLECTIONFROMTEXT, 0);
	}
	public ST_GEOMETRYCOLLECTIONFROMWKB(): TerminalNode {
		return this.getToken(SqlParser.ST_GEOMETRYCOLLECTIONFROMWKB, 0);
	}
	public ST_GEOMETRYFROMTEXT(): TerminalNode {
		return this.getToken(SqlParser.ST_GEOMETRYFROMTEXT, 0);
	}
	public ST_GEOMETRYFROMWKB(): TerminalNode {
		return this.getToken(SqlParser.ST_GEOMETRYFROMWKB, 0);
	}
	public ST_GEOMETRYN(): TerminalNode {
		return this.getToken(SqlParser.ST_GEOMETRYN, 0);
	}
	public ST_GEOMETRYTYPE(): TerminalNode {
		return this.getToken(SqlParser.ST_GEOMETRYTYPE, 0);
	}
	public ST_GEOMFROMTEXT(): TerminalNode {
		return this.getToken(SqlParser.ST_GEOMFROMTEXT, 0);
	}
	public ST_GEOMFROMWKB(): TerminalNode {
		return this.getToken(SqlParser.ST_GEOMFROMWKB, 0);
	}
	public ST_INTERIORRINGN(): TerminalNode {
		return this.getToken(SqlParser.ST_INTERIORRINGN, 0);
	}
	public ST_INTERSECTION(): TerminalNode {
		return this.getToken(SqlParser.ST_INTERSECTION, 0);
	}
	public ST_INTERSECTS(): TerminalNode {
		return this.getToken(SqlParser.ST_INTERSECTS, 0);
	}
	public ST_ISCLOSED(): TerminalNode {
		return this.getToken(SqlParser.ST_ISCLOSED, 0);
	}
	public ST_ISEMPTY(): TerminalNode {
		return this.getToken(SqlParser.ST_ISEMPTY, 0);
	}
	public ST_ISSIMPLE(): TerminalNode {
		return this.getToken(SqlParser.ST_ISSIMPLE, 0);
	}
	public ST_LINEFROMTEXT(): TerminalNode {
		return this.getToken(SqlParser.ST_LINEFROMTEXT, 0);
	}
	public ST_LINEFROMWKB(): TerminalNode {
		return this.getToken(SqlParser.ST_LINEFROMWKB, 0);
	}
	public ST_LINESTRINGFROMTEXT(): TerminalNode {
		return this.getToken(SqlParser.ST_LINESTRINGFROMTEXT, 0);
	}
	public ST_LINESTRINGFROMWKB(): TerminalNode {
		return this.getToken(SqlParser.ST_LINESTRINGFROMWKB, 0);
	}
	public ST_NUMGEOMETRIES(): TerminalNode {
		return this.getToken(SqlParser.ST_NUMGEOMETRIES, 0);
	}
	public ST_NUMINTERIORRING(): TerminalNode {
		return this.getToken(SqlParser.ST_NUMINTERIORRING, 0);
	}
	public ST_NUMINTERIORRINGS(): TerminalNode {
		return this.getToken(SqlParser.ST_NUMINTERIORRINGS, 0);
	}
	public ST_NUMPOINTS(): TerminalNode {
		return this.getToken(SqlParser.ST_NUMPOINTS, 0);
	}
	public ST_OVERLAPS(): TerminalNode {
		return this.getToken(SqlParser.ST_OVERLAPS, 0);
	}
	public ST_POINTFROMTEXT(): TerminalNode {
		return this.getToken(SqlParser.ST_POINTFROMTEXT, 0);
	}
	public ST_POINTFROMWKB(): TerminalNode {
		return this.getToken(SqlParser.ST_POINTFROMWKB, 0);
	}
	public ST_POINTN(): TerminalNode {
		return this.getToken(SqlParser.ST_POINTN, 0);
	}
	public ST_POLYFROMTEXT(): TerminalNode {
		return this.getToken(SqlParser.ST_POLYFROMTEXT, 0);
	}
	public ST_POLYFROMWKB(): TerminalNode {
		return this.getToken(SqlParser.ST_POLYFROMWKB, 0);
	}
	public ST_POLYGONFROMTEXT(): TerminalNode {
		return this.getToken(SqlParser.ST_POLYGONFROMTEXT, 0);
	}
	public ST_POLYGONFROMWKB(): TerminalNode {
		return this.getToken(SqlParser.ST_POLYGONFROMWKB, 0);
	}
	public ST_SRID(): TerminalNode {
		return this.getToken(SqlParser.ST_SRID, 0);
	}
	public ST_STARTPOINT(): TerminalNode {
		return this.getToken(SqlParser.ST_STARTPOINT, 0);
	}
	public ST_SYMDIFFERENCE(): TerminalNode {
		return this.getToken(SqlParser.ST_SYMDIFFERENCE, 0);
	}
	public ST_TOUCHES(): TerminalNode {
		return this.getToken(SqlParser.ST_TOUCHES, 0);
	}
	public ST_UNION(): TerminalNode {
		return this.getToken(SqlParser.ST_UNION, 0);
	}
	public ST_WITHIN(): TerminalNode {
		return this.getToken(SqlParser.ST_WITHIN, 0);
	}
	public ST_X(): TerminalNode {
		return this.getToken(SqlParser.ST_X, 0);
	}
	public ST_Y(): TerminalNode {
		return this.getToken(SqlParser.ST_Y, 0);
	}
	public SUBDATE(): TerminalNode {
		return this.getToken(SqlParser.SUBDATE, 0);
	}
	public SUBSTRING_INDEX(): TerminalNode {
		return this.getToken(SqlParser.SUBSTRING_INDEX, 0);
	}
	public SUBTIME(): TerminalNode {
		return this.getToken(SqlParser.SUBTIME, 0);
	}
	public SYSTEM_USER(): TerminalNode {
		return this.getToken(SqlParser.SYSTEM_USER, 0);
	}
	public TAN(): TerminalNode {
		return this.getToken(SqlParser.TAN, 0);
	}
	public TIME(): TerminalNode {
		return this.getToken(SqlParser.TIME, 0);
	}
	public TIMEDIFF(): TerminalNode {
		return this.getToken(SqlParser.TIMEDIFF, 0);
	}
	public TIMESTAMP(): TerminalNode {
		return this.getToken(SqlParser.TIMESTAMP, 0);
	}
	public TIMESTAMPADD(): TerminalNode {
		return this.getToken(SqlParser.TIMESTAMPADD, 0);
	}
	public TIMESTAMPDIFF(): TerminalNode {
		return this.getToken(SqlParser.TIMESTAMPDIFF, 0);
	}
	public TIME_FORMAT(): TerminalNode {
		return this.getToken(SqlParser.TIME_FORMAT, 0);
	}
	public TIME_TO_SEC(): TerminalNode {
		return this.getToken(SqlParser.TIME_TO_SEC, 0);
	}
	public TOUCHES(): TerminalNode {
		return this.getToken(SqlParser.TOUCHES, 0);
	}
	public TO_BASE64(): TerminalNode {
		return this.getToken(SqlParser.TO_BASE64, 0);
	}
	public TO_DAYS(): TerminalNode {
		return this.getToken(SqlParser.TO_DAYS, 0);
	}
	public TO_SECONDS(): TerminalNode {
		return this.getToken(SqlParser.TO_SECONDS, 0);
	}
	public UCASE(): TerminalNode {
		return this.getToken(SqlParser.UCASE, 0);
	}
	public UNCOMPRESS(): TerminalNode {
		return this.getToken(SqlParser.UNCOMPRESS, 0);
	}
	public UNCOMPRESSED_LENGTH(): TerminalNode {
		return this.getToken(SqlParser.UNCOMPRESSED_LENGTH, 0);
	}
	public UNHEX(): TerminalNode {
		return this.getToken(SqlParser.UNHEX, 0);
	}
	public UNIX_TIMESTAMP(): TerminalNode {
		return this.getToken(SqlParser.UNIX_TIMESTAMP, 0);
	}
	public UPDATEXML(): TerminalNode {
		return this.getToken(SqlParser.UPDATEXML, 0);
	}
	public UPPER(): TerminalNode {
		return this.getToken(SqlParser.UPPER, 0);
	}
	public UUID(): TerminalNode {
		return this.getToken(SqlParser.UUID, 0);
	}
	public UUID_SHORT(): TerminalNode {
		return this.getToken(SqlParser.UUID_SHORT, 0);
	}
	public VALIDATE_PASSWORD_STRENGTH(): TerminalNode {
		return this.getToken(SqlParser.VALIDATE_PASSWORD_STRENGTH, 0);
	}
	public VERSION(): TerminalNode {
		return this.getToken(SqlParser.VERSION, 0);
	}
	public VISIBLE(): TerminalNode {
		return this.getToken(SqlParser.VISIBLE, 0);
	}
	public WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS(): TerminalNode {
		return this.getToken(SqlParser.WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS, 0);
	}
	public WEEK(): TerminalNode {
		return this.getToken(SqlParser.WEEK, 0);
	}
	public WEEKDAY(): TerminalNode {
		return this.getToken(SqlParser.WEEKDAY, 0);
	}
	public WEEKOFYEAR(): TerminalNode {
		return this.getToken(SqlParser.WEEKOFYEAR, 0);
	}
	public WEIGHT_STRING(): TerminalNode {
		return this.getToken(SqlParser.WEIGHT_STRING, 0);
	}
	public WITHIN(): TerminalNode {
		return this.getToken(SqlParser.WITHIN, 0);
	}
	public YEAR(): TerminalNode {
		return this.getToken(SqlParser.YEAR, 0);
	}
	public YEARWEEK(): TerminalNode {
		return this.getToken(SqlParser.YEARWEEK, 0);
	}
	public Y_FUNCTION(): TerminalNode {
		return this.getToken(SqlParser.Y_FUNCTION, 0);
	}
	public X_FUNCTION(): TerminalNode {
		return this.getToken(SqlParser.X_FUNCTION, 0);
	}
	public JSON_VALID(): TerminalNode {
		return this.getToken(SqlParser.JSON_VALID, 0);
	}
	public JSON_SCHEMA_VALID(): TerminalNode {
		return this.getToken(SqlParser.JSON_SCHEMA_VALID, 0);
	}
    public get ruleIndex(): number {
    	return SqlParser.RULE_functionNameBase;
	}
	public enterRule(listener: SqlParserListener): void {
	    if(listener.enterFunctionNameBase) {
	 		listener.enterFunctionNameBase(this);
		}
	}
	public exitRule(listener: SqlParserListener): void {
	    if(listener.exitFunctionNameBase) {
	 		listener.exitFunctionNameBase(this);
		}
	}
	// @Override
	public accept<Result>(visitor: SqlParserVisitor<Result>): Result {
		if (visitor.visitFunctionNameBase) {
			return visitor.visitFunctionNameBase(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
