@malloydata/malloy 0.0.51-dev230629171920 → 0.0.51-dev230705184641

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (36) hide show
  1. package/dist/index.d.ts +1 -1
  2. package/dist/lang/ast/elements/define-query.d.ts +3 -5
  3. package/dist/lang/ast/elements/define-query.js +1 -4
  4. package/dist/lang/ast/elements/define-source.d.ts +3 -5
  5. package/dist/lang/ast/elements/define-source.js +1 -4
  6. package/dist/lang/ast/elements/import-statement.d.ts +2 -1
  7. package/dist/lang/ast/elements/import-statement.js +12 -5
  8. package/dist/lang/ast/index.d.ts +1 -0
  9. package/dist/lang/ast/index.js +1 -0
  10. package/dist/lang/ast/query-elements/anonymous-query.d.ts +1 -2
  11. package/dist/lang/ast/query-elements/anonymous-query.js +0 -1
  12. package/dist/lang/ast/query-elements/run-query.d.ts +3 -4
  13. package/dist/lang/ast/sources/from-sql-source.d.ts +7 -0
  14. package/dist/lang/ast/sources/from-sql-source.js +68 -0
  15. package/dist/lang/ast/sources/sql-source.d.ts +15 -4
  16. package/dist/lang/ast/sources/sql-source.js +79 -27
  17. package/dist/lang/ast/sql-elements/sql-statement.d.ts +3 -1
  18. package/dist/lang/ast/sql-elements/sql-statement.js +21 -10
  19. package/dist/lang/ast/sql-elements/sql-string.d.ts +1 -0
  20. package/dist/lang/ast/sql-elements/sql-string.js +8 -0
  21. package/dist/lang/ast/types/malloy-element.d.ts +9 -6
  22. package/dist/lang/ast/types/malloy-element.js +42 -14
  23. package/dist/lang/lib/Malloy/MalloyLexer.d.ts +73 -72
  24. package/dist/lang/lib/Malloy/MalloyLexer.js +1078 -1072
  25. package/dist/lang/lib/Malloy/MalloyParser.d.ts +86 -73
  26. package/dist/lang/lib/Malloy/MalloyParser.js +1198 -1135
  27. package/dist/lang/lib/Malloy/MalloyParserListener.d.ts +13 -0
  28. package/dist/lang/lib/Malloy/MalloyParserVisitor.d.ts +8 -0
  29. package/dist/lang/malloy-to-ast.d.ts +3 -2
  30. package/dist/lang/malloy-to-ast.js +17 -3
  31. package/dist/lang/parse-malloy.js +3 -3
  32. package/dist/lang/test/parse.spec.js +88 -1
  33. package/dist/lang/zone.d.ts +1 -1
  34. package/dist/malloy.js +1 -1
  35. package/dist/tags.d.ts +1 -1
  36. package/package.json +1 -1
@@ -24,10 +24,10 @@ var __importStar = (this && this.__importStar) || function (mod) {
24
24
  return result;
25
25
  };
26
26
  Object.defineProperty(exports, "__esModule", { value: true });
27
- exports.SourceIDContext = exports.SourceNameDefContext = exports.SQLSourceNameContext = exports.QuerySourceContext = exports.TableSourceContext = exports.NamedSourceContext = exports.ExploreSourceContext = exports.ExploreContext = exports.SourceDefinitionContext = exports.SourcePropertyListContext = exports.QueryNameContext = exports.ExploreQueryNameContext = exports.FilterShortcutContext = exports.QueryPropertiesContext = exports.ConnectionIdContext = exports.TableMethodContext = exports.TableFunctionContext = exports.ExploreTableContext = exports.PipeElementContext = exports.FirstSegmentContext = exports.PipelineFromNameContext = exports.ArrowQueryContext = exports.ExploreArrowQueryContext = exports.QueryContext = exports.RefineOperatorContext = exports.TopLevelQueryDefContext = exports.TopLevelQueryDefsContext = exports.IgnoredModelAnnotationsContext = exports.IgnoredObjectAnnotationsContext = exports.DocAnnotationsContext = exports.ImportURLContext = exports.ImportStatementContext = exports.SqlInterpolationContext = exports.SqlStringContext = exports.BlockSQLDefContext = exports.SqlBlockContext = exports.DefineSQLStatementContext = exports.RunStatementRefContext = exports.RunStatementDefContext = exports.RunStatementContext = exports.IsDefineContext = exports.TagsContext = exports.TopLevelAnonQueryDefContext = exports.AnonymousQueryContext = exports.Use_top_level_query_defsContext = exports.DefineQueryContext = exports.DefineSourceStatementContext = exports.MalloyStatementContext = exports.MalloyDocumentContext = exports.MalloyParser = void 0;
28
- exports.QueryFieldListContext = exports.GroupByStatementContext = exports.QueryJoinStatementContext = exports.QueryStatementContext = exports.ExploreQueryDefContext = exports.ExploreQueryNameDefContext = exports.SubQueryDefListContext = exports.HavingStatementContext = exports.WhereStatementContext = exports.FilterClauseListContext = exports.FilterByWhereContext = exports.FilterByShortcutContext = exports.FilteredByContext = exports.FilterStatementContext = exports.JoinExpressionContext = exports.JoinOnContext = exports.JoinWithContext = exports.JoinDefContext = exports.IsExploreContext = exports.JoinListContext = exports.QueryExtendStatementListContext = exports.QueryExtendStatementContext = exports.QueryExtendContext = exports.DefJoinCrossContext = exports.DefJoinManyContext = exports.DefJoinOneContext = exports.JoinStatementContext = exports.DeclareStatementContext = exports.JoinNameDefContext = exports.FieldNameDefContext = exports.FieldDefContext = exports.DefListContext = exports.ExploreRenameDefContext = exports.RenameListContext = exports.DefDimensionsContext = exports.DefMeasuresContext = exports.DefIgnoreModel_stubContext = exports.DefExploreAnnotationContext = exports.DefExploreTimezoneContext = exports.DefExploreQueryContext = exports.DefExploreEditFieldContext = exports.DefExploreRenameContext = exports.DefExplorePrimaryKeyContext = exports.DefExploreWhere_stubContext = exports.DefJoin_stubContext = exports.DefDeclare_stubContext = exports.DefExploreMeasure_stubContext = exports.DefExploreDimension_stubContext = exports.ExploreStatementContext = exports.ExplorePropertiesContext = void 0;
29
- exports.ExprFilterContext = exports.ExprFieldPathContext = exports.FieldExprContext = exports.UngroupContext = exports.TimeframeContext = exports.IdContext = exports.TableURIContext = exports.TablePathContext = exports.LiteralYearContext = exports.LiteralQuarterContext = exports.LiteralMonthContext = exports.LiteralWeekContext = exports.LiteralDayContext = exports.LiteralHourContext = exports.LiteralTimestampContext = exports.DateLiteralContext = exports.ExprNowContext = exports.ExprRegexContext = exports.ExprBoolContext = exports.ExprNULLContext = exports.ExprTimeContext = exports.ExprNumberContext = exports.ExprStringContext = exports.LiteralContext = exports.CompareOpContext = exports.MalloyTypeContext = exports.AggregateContext = exports.SampleSpecContext = exports.QueryAnnotationContext = exports.TimezoneNameContext = exports.TimezoneStatementContext = exports.SampleStatementContext = exports.IndexStatementContext = exports.IndexFieldsContext = exports.IndexElementContext = exports.TopStatementContext = exports.BySpecContext = exports.LimitStatementContext = exports.OrderBySpecContext = exports.OrderingContext = exports.OrderByStatementContext = exports.ProjectStatementContext = exports.CalculateStatementContext = exports.AggregateStatementContext = exports.NestDefContext = exports.NestExistingContext = exports.NestEntryContext = exports.NestedQueryListContext = exports.NestStatementContext = exports.QueryFieldEntryContext = void 0;
30
- exports.ConnectionNameContext = exports.NameSQLBlockContext = exports.SqlExploreNameRefContext = exports.JsonArrayContext = exports.JsonPropertyContext = exports.JsonObjectContext = exports.JsonValueContext = exports.JsonContext = exports.JustExprContext = exports.FieldNameContext = exports.JoinNameContext = exports.FieldPathContext = exports.CollectionMemberContext = exports.TaggedRefContext = exports.CollectionWildCardContext = exports.FieldCollectionContext = exports.FieldNameListContext = exports.ArgumentListContext = exports.PickContext = exports.PickStatementContext = exports.PartialAllowedFieldExprContext = exports.ExprUngroupContext = exports.ExprPickContext = exports.ExprFuncContext = exports.ExprAggFuncContext = exports.ExprExprContext = exports.ExprAggregateContext = exports.ExprCountDisinctContext = exports.ExprCoalesceContext = exports.ExprLogicalOrContext = exports.ExprLogicalAndContext = exports.ExprNotContext = exports.ExprApplyContext = exports.ExprCompareContext = exports.ExprOrTreeContext = exports.ExprAndTreeContext = exports.ExprForRangeContext = exports.ExprRangeContext = exports.ExprAddSubContext = exports.ExprMulDivContext = exports.ExprMinusContext = exports.ExprSafeCastContext = exports.ExprCastContext = exports.ExprTimeTruncContext = exports.ExprDurationContext = exports.ExprLiteralContext = void 0;
27
+ exports.SourceNameDefContext = exports.SQLSourceContext = exports.SQLSourceNameContext = exports.QuerySourceContext = exports.TableSourceContext = exports.NamedSourceContext = exports.ExploreSourceContext = exports.ExploreContext = exports.SourceDefinitionContext = exports.SourcePropertyListContext = exports.QueryNameContext = exports.ExploreQueryNameContext = exports.FilterShortcutContext = exports.QueryPropertiesContext = exports.ConnectionIdContext = exports.TableMethodContext = exports.TableFunctionContext = exports.ExploreTableContext = exports.PipeElementContext = exports.FirstSegmentContext = exports.PipelineFromNameContext = exports.ArrowQueryContext = exports.ExploreArrowQueryContext = exports.QueryContext = exports.RefineOperatorContext = exports.TopLevelQueryDefContext = exports.TopLevelQueryDefsContext = exports.IgnoredModelAnnotationsContext = exports.IgnoredObjectAnnotationsContext = exports.DocAnnotationsContext = exports.ImportURLContext = exports.ImportStatementContext = exports.SqlInterpolationContext = exports.SqlStringContext = exports.BlockSQLDefContext = exports.SqlBlockContext = exports.DefineSQLStatementContext = exports.RunStatementRefContext = exports.RunStatementDefContext = exports.RunStatementContext = exports.IsDefineContext = exports.TagsContext = exports.TopLevelAnonQueryDefContext = exports.AnonymousQueryContext = exports.Use_top_level_query_defsContext = exports.DefineQueryContext = exports.DefineSourceStatementContext = exports.MalloyStatementContext = exports.MalloyDocumentContext = exports.MalloyParser = void 0;
28
+ exports.GroupByStatementContext = exports.QueryJoinStatementContext = exports.QueryStatementContext = exports.ExploreQueryDefContext = exports.ExploreQueryNameDefContext = exports.SubQueryDefListContext = exports.HavingStatementContext = exports.WhereStatementContext = exports.FilterClauseListContext = exports.FilterByWhereContext = exports.FilterByShortcutContext = exports.FilteredByContext = exports.FilterStatementContext = exports.JoinExpressionContext = exports.JoinOnContext = exports.JoinWithContext = exports.JoinDefContext = exports.IsExploreContext = exports.JoinListContext = exports.QueryExtendStatementListContext = exports.QueryExtendStatementContext = exports.QueryExtendContext = exports.DefJoinCrossContext = exports.DefJoinManyContext = exports.DefJoinOneContext = exports.JoinStatementContext = exports.DeclareStatementContext = exports.JoinNameDefContext = exports.FieldNameDefContext = exports.FieldDefContext = exports.DefListContext = exports.ExploreRenameDefContext = exports.RenameListContext = exports.DefDimensionsContext = exports.DefMeasuresContext = exports.DefIgnoreModel_stubContext = exports.DefExploreAnnotationContext = exports.DefExploreTimezoneContext = exports.DefExploreQueryContext = exports.DefExploreEditFieldContext = exports.DefExploreRenameContext = exports.DefExplorePrimaryKeyContext = exports.DefExploreWhere_stubContext = exports.DefJoin_stubContext = exports.DefDeclare_stubContext = exports.DefExploreMeasure_stubContext = exports.DefExploreDimension_stubContext = exports.ExploreStatementContext = exports.ExplorePropertiesContext = exports.SourceIDContext = void 0;
29
+ exports.ExprFieldPathContext = exports.FieldExprContext = exports.UngroupContext = exports.TimeframeContext = exports.IdContext = exports.TableURIContext = exports.TablePathContext = exports.LiteralYearContext = exports.LiteralQuarterContext = exports.LiteralMonthContext = exports.LiteralWeekContext = exports.LiteralDayContext = exports.LiteralHourContext = exports.LiteralTimestampContext = exports.DateLiteralContext = exports.ExprNowContext = exports.ExprRegexContext = exports.ExprBoolContext = exports.ExprNULLContext = exports.ExprTimeContext = exports.ExprNumberContext = exports.ExprStringContext = exports.LiteralContext = exports.CompareOpContext = exports.MalloyTypeContext = exports.AggregateContext = exports.SampleSpecContext = exports.QueryAnnotationContext = exports.TimezoneNameContext = exports.TimezoneStatementContext = exports.SampleStatementContext = exports.IndexStatementContext = exports.IndexFieldsContext = exports.IndexElementContext = exports.TopStatementContext = exports.BySpecContext = exports.LimitStatementContext = exports.OrderBySpecContext = exports.OrderingContext = exports.OrderByStatementContext = exports.ProjectStatementContext = exports.CalculateStatementContext = exports.AggregateStatementContext = exports.NestDefContext = exports.NestExistingContext = exports.NestEntryContext = exports.NestedQueryListContext = exports.NestStatementContext = exports.QueryFieldEntryContext = exports.QueryFieldListContext = void 0;
30
+ exports.ConnectionNameContext = exports.NameSQLBlockContext = exports.SqlExploreNameRefContext = exports.JsonArrayContext = exports.JsonPropertyContext = exports.JsonObjectContext = exports.JsonValueContext = exports.JsonContext = exports.JustExprContext = exports.FieldNameContext = exports.JoinNameContext = exports.FieldPathContext = exports.CollectionMemberContext = exports.TaggedRefContext = exports.CollectionWildCardContext = exports.FieldCollectionContext = exports.FieldNameListContext = exports.ArgumentListContext = exports.PickContext = exports.PickStatementContext = exports.PartialAllowedFieldExprContext = exports.ExprUngroupContext = exports.ExprPickContext = exports.ExprFuncContext = exports.ExprAggFuncContext = exports.ExprExprContext = exports.ExprAggregateContext = exports.ExprCountDisinctContext = exports.ExprCoalesceContext = exports.ExprLogicalOrContext = exports.ExprLogicalAndContext = exports.ExprNotContext = exports.ExprApplyContext = exports.ExprCompareContext = exports.ExprOrTreeContext = exports.ExprAndTreeContext = exports.ExprForRangeContext = exports.ExprRangeContext = exports.ExprAddSubContext = exports.ExprMulDivContext = exports.ExprMinusContext = exports.ExprSafeCastContext = exports.ExprCastContext = exports.ExprTimeTruncContext = exports.ExprDurationContext = exports.ExprLiteralContext = exports.ExprFilterContext = void 0;
31
31
  const ATN_1 = require("antlr4ts/atn/ATN");
32
32
  const ATNDeserializer_1 = require("antlr4ts/atn/ATNDeserializer");
33
33
  const FailedPredicateException_1 = require("antlr4ts/FailedPredicateException");
@@ -70,7 +70,7 @@ class MalloyParser extends Parser_1.Parser {
70
70
  this.state = 246;
71
71
  this._errHandler.sync(this);
72
72
  _la = this._input.LA(1);
73
- while (((((_la - 3)) & ~0x1F) === 0 && ((1 << (_la - 3)) & ((1 << (MalloyParser.AGGREGATE - 3)) | (1 << (MalloyParser.CALCULATE - 3)) | (1 << (MalloyParser.DIMENSION - 3)) | (1 << (MalloyParser.GROUP_BY - 3)) | (1 << (MalloyParser.JOIN_CROSS - 3)) | (1 << (MalloyParser.JOIN_ONE - 3)) | (1 << (MalloyParser.JOIN_MANY - 3)) | (1 << (MalloyParser.MEASURE - 3)) | (1 << (MalloyParser.NEST - 3)) | (1 << (MalloyParser.PROJECT - 3)) | (1 << (MalloyParser.QUERY - 3)) | (1 << (MalloyParser.RUN - 3)) | (1 << (MalloyParser.SOURCE - 3)) | (1 << (MalloyParser.SQL - 3)) | (1 << (MalloyParser.ALL - 3)))) !== 0) || ((((_la - 37)) & ~0x1F) === 0 && ((1 << (_la - 37)) & ((1 << (MalloyParser.AVG - 37)) | (1 << (MalloyParser.CAST - 37)) | (1 << (MalloyParser.COUNT - 37)) | (1 << (MalloyParser.DAY - 37)) | (1 << (MalloyParser.EXCLUDE - 37)) | (1 << (MalloyParser.FALSE - 37)) | (1 << (MalloyParser.FROM - 37)) | (1 << (MalloyParser.FROM_SQL - 37)) | (1 << (MalloyParser.HOUR - 37)) | (1 << (MalloyParser.IMPORT - 37)) | (1 << (MalloyParser.IS - 37)) | (1 << (MalloyParser.MAX - 37)) | (1 << (MalloyParser.MIN - 37)) | (1 << (MalloyParser.MINUTE - 37)) | (1 << (MalloyParser.MONTH - 37)) | (1 << (MalloyParser.NOT - 37)) | (1 << (MalloyParser.NOW - 37)) | (1 << (MalloyParser.NULL - 37)))) !== 0) || ((((_la - 71)) & ~0x1F) === 0 && ((1 << (_la - 71)) & ((1 << (MalloyParser.PICK - 71)) | (1 << (MalloyParser.QUARTER - 71)) | (1 << (MalloyParser.SECOND - 71)) | (1 << (MalloyParser.SUM - 71)) | (1 << (MalloyParser.TABLE - 71)) | (1 << (MalloyParser.TRUE - 71)) | (1 << (MalloyParser.WEEK - 71)) | (1 << (MalloyParser.YEAR - 71)) | (1 << (MalloyParser.HACKY_REGEX - 71)) | (1 << (MalloyParser.STRING_LITERAL - 71)) | (1 << (MalloyParser.DOC_ANNOTATION - 71)) | (1 << (MalloyParser.ANNOTATION - 71)) | (1 << (MalloyParser.ARROW - 71)) | (1 << (MalloyParser.OPAREN - 71)) | (1 << (MalloyParser.OCURLY - 71)))) !== 0) || ((((_la - 115)) & ~0x1F) === 0 && ((1 << (_la - 115)) & ((1 << (MalloyParser.MINUS - 115)) | (1 << (MalloyParser.SEMI - 115)) | (1 << (MalloyParser.LITERAL_TIMESTAMP - 115)) | (1 << (MalloyParser.LITERAL_HOUR - 115)) | (1 << (MalloyParser.LITERAL_DAY - 115)) | (1 << (MalloyParser.LITERAL_QUARTER - 115)) | (1 << (MalloyParser.LITERAL_MONTH - 115)) | (1 << (MalloyParser.LITERAL_WEEK - 115)) | (1 << (MalloyParser.LITERAL_YEAR - 115)) | (1 << (MalloyParser.IDENTIFIER - 115)) | (1 << (MalloyParser.INTEGER_LITERAL - 115)) | (1 << (MalloyParser.NUMERIC_LITERAL - 115)) | (1 << (MalloyParser.OBJECT_NAME_LITERAL - 115)))) !== 0)) {
73
+ while (((((_la - 3)) & ~0x1F) === 0 && ((1 << (_la - 3)) & ((1 << (MalloyParser.AGGREGATE - 3)) | (1 << (MalloyParser.CALCULATE - 3)) | (1 << (MalloyParser.DIMENSION - 3)) | (1 << (MalloyParser.GROUP_BY - 3)) | (1 << (MalloyParser.JOIN_CROSS - 3)) | (1 << (MalloyParser.JOIN_ONE - 3)) | (1 << (MalloyParser.JOIN_MANY - 3)) | (1 << (MalloyParser.MEASURE - 3)) | (1 << (MalloyParser.NEST - 3)) | (1 << (MalloyParser.PROJECT - 3)) | (1 << (MalloyParser.QUERY - 3)) | (1 << (MalloyParser.RUN - 3)) | (1 << (MalloyParser.SOURCE - 3)) | (1 << (MalloyParser.SQLC - 3)) | (1 << (MalloyParser.ALL - 3)))) !== 0) || ((((_la - 37)) & ~0x1F) === 0 && ((1 << (_la - 37)) & ((1 << (MalloyParser.AVG - 37)) | (1 << (MalloyParser.CAST - 37)) | (1 << (MalloyParser.COUNT - 37)) | (1 << (MalloyParser.DAY - 37)) | (1 << (MalloyParser.EXCLUDE - 37)) | (1 << (MalloyParser.FALSE - 37)) | (1 << (MalloyParser.FROM - 37)) | (1 << (MalloyParser.FROM_SQL - 37)) | (1 << (MalloyParser.HOUR - 37)) | (1 << (MalloyParser.IMPORT - 37)) | (1 << (MalloyParser.IS - 37)) | (1 << (MalloyParser.MAX - 37)) | (1 << (MalloyParser.MIN - 37)) | (1 << (MalloyParser.MINUTE - 37)) | (1 << (MalloyParser.MONTH - 37)) | (1 << (MalloyParser.NOT - 37)) | (1 << (MalloyParser.NOW - 37)) | (1 << (MalloyParser.NULL - 37)))) !== 0) || ((((_la - 71)) & ~0x1F) === 0 && ((1 << (_la - 71)) & ((1 << (MalloyParser.PICK - 71)) | (1 << (MalloyParser.QUARTER - 71)) | (1 << (MalloyParser.SECOND - 71)) | (1 << (MalloyParser.SUM - 71)) | (1 << (MalloyParser.TABLE - 71)) | (1 << (MalloyParser.TRUE - 71)) | (1 << (MalloyParser.WEEK - 71)) | (1 << (MalloyParser.YEAR - 71)) | (1 << (MalloyParser.HACKY_REGEX - 71)) | (1 << (MalloyParser.STRING_LITERAL - 71)) | (1 << (MalloyParser.DOC_ANNOTATION - 71)) | (1 << (MalloyParser.ANNOTATION - 71)) | (1 << (MalloyParser.ARROW - 71)) | (1 << (MalloyParser.OPAREN - 71)) | (1 << (MalloyParser.OCURLY - 71)))) !== 0) || ((((_la - 116)) & ~0x1F) === 0 && ((1 << (_la - 116)) & ((1 << (MalloyParser.MINUS - 116)) | (1 << (MalloyParser.SEMI - 116)) | (1 << (MalloyParser.LITERAL_TIMESTAMP - 116)) | (1 << (MalloyParser.LITERAL_HOUR - 116)) | (1 << (MalloyParser.LITERAL_DAY - 116)) | (1 << (MalloyParser.LITERAL_QUARTER - 116)) | (1 << (MalloyParser.LITERAL_MONTH - 116)) | (1 << (MalloyParser.LITERAL_WEEK - 116)) | (1 << (MalloyParser.LITERAL_YEAR - 116)) | (1 << (MalloyParser.IDENTIFIER - 116)) | (1 << (MalloyParser.INTEGER_LITERAL - 116)) | (1 << (MalloyParser.NUMERIC_LITERAL - 116)) | (1 << (MalloyParser.OBJECT_NAME_LITERAL - 116)))) !== 0)) {
74
74
  {
75
75
  this.state = 244;
76
76
  this._errHandler.sync(this);
@@ -88,7 +88,7 @@ class MalloyParser extends Parser_1.Parser {
88
88
  case MalloyParser.QUERY:
89
89
  case MalloyParser.RUN:
90
90
  case MalloyParser.SOURCE:
91
- case MalloyParser.SQL:
91
+ case MalloyParser.SQLC:
92
92
  case MalloyParser.ALL:
93
93
  case MalloyParser.AVG:
94
94
  case MalloyParser.CAST:
@@ -478,7 +478,7 @@ class MalloyParser extends Parser_1.Parser {
478
478
  this.enterOuterAlt(_localctx, 1);
479
479
  {
480
480
  this.state = 293;
481
- this.match(MalloyParser.SQL);
481
+ this.match(MalloyParser.SQLC);
482
482
  this.state = 294;
483
483
  this.nameSQLBlock();
484
484
  this.state = 295;
@@ -1309,7 +1309,7 @@ class MalloyParser extends Parser_1.Parser {
1309
1309
  this.state = 429;
1310
1310
  this._errHandler.sync(this);
1311
1311
  _la = this._input.LA(1);
1312
- while (((((_la - 3)) & ~0x1F) === 0 && ((1 << (_la - 3)) & ((1 << (MalloyParser.AGGREGATE - 3)) | (1 << (MalloyParser.CALCULATE - 3)) | (1 << (MalloyParser.DECLARE - 3)) | (1 << (MalloyParser.DIMENSION - 3)) | (1 << (MalloyParser.EXTENDQ - 3)) | (1 << (MalloyParser.GROUP_BY - 3)) | (1 << (MalloyParser.HAVING - 3)) | (1 << (MalloyParser.INDEX - 3)) | (1 << (MalloyParser.JOIN_CROSS - 3)) | (1 << (MalloyParser.JOIN_ONE - 3)) | (1 << (MalloyParser.JOIN_MANY - 3)) | (1 << (MalloyParser.LIMIT - 3)) | (1 << (MalloyParser.MEASURE - 3)) | (1 << (MalloyParser.NEST - 3)) | (1 << (MalloyParser.ORDER_BY - 3)) | (1 << (MalloyParser.PROJECT - 3)) | (1 << (MalloyParser.QUERY - 3)) | (1 << (MalloyParser.RUN - 3)) | (1 << (MalloyParser.SAMPLE - 3)) | (1 << (MalloyParser.SOURCE - 3)) | (1 << (MalloyParser.TOP - 3)) | (1 << (MalloyParser.WHERE - 3)) | (1 << (MalloyParser.TIMEZONE - 3)) | (1 << (MalloyParser.ALL - 3)))) !== 0) || ((((_la - 37)) & ~0x1F) === 0 && ((1 << (_la - 37)) & ((1 << (MalloyParser.AVG - 37)) | (1 << (MalloyParser.CAST - 37)) | (1 << (MalloyParser.COUNT - 37)) | (1 << (MalloyParser.DAY - 37)) | (1 << (MalloyParser.EXCLUDE - 37)) | (1 << (MalloyParser.FALSE - 37)) | (1 << (MalloyParser.FROM - 37)) | (1 << (MalloyParser.FROM_SQL - 37)) | (1 << (MalloyParser.HOUR - 37)) | (1 << (MalloyParser.IS - 37)) | (1 << (MalloyParser.MAX - 37)) | (1 << (MalloyParser.MIN - 37)) | (1 << (MalloyParser.MINUTE - 37)) | (1 << (MalloyParser.MONTH - 37)) | (1 << (MalloyParser.NOT - 37)) | (1 << (MalloyParser.NOW - 37)) | (1 << (MalloyParser.NULL - 37)))) !== 0) || ((((_la - 71)) & ~0x1F) === 0 && ((1 << (_la - 71)) & ((1 << (MalloyParser.PICK - 71)) | (1 << (MalloyParser.QUARTER - 71)) | (1 << (MalloyParser.SECOND - 71)) | (1 << (MalloyParser.SUM - 71)) | (1 << (MalloyParser.TABLE - 71)) | (1 << (MalloyParser.TRUE - 71)) | (1 << (MalloyParser.WEEK - 71)) | (1 << (MalloyParser.YEAR - 71)) | (1 << (MalloyParser.HACKY_REGEX - 71)) | (1 << (MalloyParser.STRING_LITERAL - 71)) | (1 << (MalloyParser.DOC_ANNOTATION - 71)) | (1 << (MalloyParser.ANNOTATION - 71)) | (1 << (MalloyParser.ARROW - 71)) | (1 << (MalloyParser.OPAREN - 71)) | (1 << (MalloyParser.OCURLY - 71)))) !== 0) || ((((_la - 115)) & ~0x1F) === 0 && ((1 << (_la - 115)) & ((1 << (MalloyParser.MINUS - 115)) | (1 << (MalloyParser.SEMI - 115)) | (1 << (MalloyParser.LITERAL_TIMESTAMP - 115)) | (1 << (MalloyParser.LITERAL_HOUR - 115)) | (1 << (MalloyParser.LITERAL_DAY - 115)) | (1 << (MalloyParser.LITERAL_QUARTER - 115)) | (1 << (MalloyParser.LITERAL_MONTH - 115)) | (1 << (MalloyParser.LITERAL_WEEK - 115)) | (1 << (MalloyParser.LITERAL_YEAR - 115)) | (1 << (MalloyParser.IDENTIFIER - 115)) | (1 << (MalloyParser.INTEGER_LITERAL - 115)) | (1 << (MalloyParser.NUMERIC_LITERAL - 115)) | (1 << (MalloyParser.OBJECT_NAME_LITERAL - 115)))) !== 0)) {
1312
+ while (((((_la - 3)) & ~0x1F) === 0 && ((1 << (_la - 3)) & ((1 << (MalloyParser.AGGREGATE - 3)) | (1 << (MalloyParser.CALCULATE - 3)) | (1 << (MalloyParser.DECLARE - 3)) | (1 << (MalloyParser.DIMENSION - 3)) | (1 << (MalloyParser.EXTENDQ - 3)) | (1 << (MalloyParser.GROUP_BY - 3)) | (1 << (MalloyParser.HAVING - 3)) | (1 << (MalloyParser.INDEX - 3)) | (1 << (MalloyParser.JOIN_CROSS - 3)) | (1 << (MalloyParser.JOIN_ONE - 3)) | (1 << (MalloyParser.JOIN_MANY - 3)) | (1 << (MalloyParser.LIMIT - 3)) | (1 << (MalloyParser.MEASURE - 3)) | (1 << (MalloyParser.NEST - 3)) | (1 << (MalloyParser.ORDER_BY - 3)) | (1 << (MalloyParser.PROJECT - 3)) | (1 << (MalloyParser.QUERY - 3)) | (1 << (MalloyParser.RUN - 3)) | (1 << (MalloyParser.SAMPLE - 3)) | (1 << (MalloyParser.SOURCE - 3)) | (1 << (MalloyParser.TOP - 3)) | (1 << (MalloyParser.WHERE - 3)) | (1 << (MalloyParser.TIMEZONE - 3)) | (1 << (MalloyParser.ALL - 3)))) !== 0) || ((((_la - 37)) & ~0x1F) === 0 && ((1 << (_la - 37)) & ((1 << (MalloyParser.AVG - 37)) | (1 << (MalloyParser.CAST - 37)) | (1 << (MalloyParser.COUNT - 37)) | (1 << (MalloyParser.DAY - 37)) | (1 << (MalloyParser.EXCLUDE - 37)) | (1 << (MalloyParser.FALSE - 37)) | (1 << (MalloyParser.FROM - 37)) | (1 << (MalloyParser.FROM_SQL - 37)) | (1 << (MalloyParser.HOUR - 37)) | (1 << (MalloyParser.IS - 37)) | (1 << (MalloyParser.MAX - 37)) | (1 << (MalloyParser.MIN - 37)) | (1 << (MalloyParser.MINUTE - 37)) | (1 << (MalloyParser.MONTH - 37)) | (1 << (MalloyParser.NOT - 37)) | (1 << (MalloyParser.NOW - 37)) | (1 << (MalloyParser.NULL - 37)))) !== 0) || ((((_la - 71)) & ~0x1F) === 0 && ((1 << (_la - 71)) & ((1 << (MalloyParser.PICK - 71)) | (1 << (MalloyParser.QUARTER - 71)) | (1 << (MalloyParser.SECOND - 71)) | (1 << (MalloyParser.SUM - 71)) | (1 << (MalloyParser.TABLE - 71)) | (1 << (MalloyParser.TRUE - 71)) | (1 << (MalloyParser.WEEK - 71)) | (1 << (MalloyParser.YEAR - 71)) | (1 << (MalloyParser.HACKY_REGEX - 71)) | (1 << (MalloyParser.STRING_LITERAL - 71)) | (1 << (MalloyParser.DOC_ANNOTATION - 71)) | (1 << (MalloyParser.ANNOTATION - 71)) | (1 << (MalloyParser.ARROW - 71)) | (1 << (MalloyParser.OPAREN - 71)) | (1 << (MalloyParser.OCURLY - 71)))) !== 0) || ((((_la - 116)) & ~0x1F) === 0 && ((1 << (_la - 116)) & ((1 << (MalloyParser.MINUS - 116)) | (1 << (MalloyParser.SEMI - 116)) | (1 << (MalloyParser.LITERAL_TIMESTAMP - 116)) | (1 << (MalloyParser.LITERAL_HOUR - 116)) | (1 << (MalloyParser.LITERAL_DAY - 116)) | (1 << (MalloyParser.LITERAL_QUARTER - 116)) | (1 << (MalloyParser.LITERAL_MONTH - 116)) | (1 << (MalloyParser.LITERAL_WEEK - 116)) | (1 << (MalloyParser.LITERAL_YEAR - 116)) | (1 << (MalloyParser.IDENTIFIER - 116)) | (1 << (MalloyParser.INTEGER_LITERAL - 116)) | (1 << (MalloyParser.NUMERIC_LITERAL - 116)) | (1 << (MalloyParser.OBJECT_NAME_LITERAL - 116)))) !== 0)) {
1313
1313
  {
1314
1314
  this.state = 427;
1315
1315
  this._errHandler.sync(this);
@@ -1651,7 +1651,7 @@ class MalloyParser extends Parser_1.Parser {
1651
1651
  let _localctx = new ExploreSourceContext(this._ctx, this.state);
1652
1652
  this.enterRule(_localctx, 68, MalloyParser.RULE_exploreSource);
1653
1653
  try {
1654
- this.state = 481;
1654
+ this.state = 488;
1655
1655
  this._errHandler.sync(this);
1656
1656
  switch (this.interpreter.adaptivePredict(this._input, 32, this._ctx)) {
1657
1657
  case 1:
@@ -1698,6 +1698,24 @@ class MalloyParser extends Parser_1.Parser {
1698
1698
  this.match(MalloyParser.CPAREN);
1699
1699
  }
1700
1700
  break;
1701
+ case 5:
1702
+ _localctx = new SQLSourceContext(_localctx);
1703
+ this.enterOuterAlt(_localctx, 5);
1704
+ {
1705
+ this.state = 481;
1706
+ this.connectionId();
1707
+ this.state = 482;
1708
+ this.match(MalloyParser.DOT);
1709
+ this.state = 483;
1710
+ this.match(MalloyParser.SQL);
1711
+ this.state = 484;
1712
+ this.match(MalloyParser.OPAREN);
1713
+ this.state = 485;
1714
+ this.sqlString();
1715
+ this.state = 486;
1716
+ this.match(MalloyParser.CPAREN);
1717
+ }
1718
+ break;
1701
1719
  }
1702
1720
  }
1703
1721
  catch (re) {
@@ -1722,7 +1740,7 @@ class MalloyParser extends Parser_1.Parser {
1722
1740
  try {
1723
1741
  this.enterOuterAlt(_localctx, 1);
1724
1742
  {
1725
- this.state = 483;
1743
+ this.state = 490;
1726
1744
  this.id();
1727
1745
  }
1728
1746
  }
@@ -1748,7 +1766,7 @@ class MalloyParser extends Parser_1.Parser {
1748
1766
  try {
1749
1767
  this.enterOuterAlt(_localctx, 1);
1750
1768
  {
1751
- this.state = 485;
1769
+ this.state = 492;
1752
1770
  this.id();
1753
1771
  }
1754
1772
  }
@@ -1773,20 +1791,20 @@ class MalloyParser extends Parser_1.Parser {
1773
1791
  this.enterRule(_localctx, 74, MalloyParser.RULE_exploreProperties);
1774
1792
  let _la;
1775
1793
  try {
1776
- this.state = 497;
1794
+ this.state = 504;
1777
1795
  this._errHandler.sync(this);
1778
1796
  switch (this.interpreter.adaptivePredict(this._input, 35, this._ctx)) {
1779
1797
  case 1:
1780
1798
  this.enterOuterAlt(_localctx, 1);
1781
1799
  {
1782
- this.state = 487;
1800
+ this.state = 494;
1783
1801
  this.match(MalloyParser.OCURLY);
1784
- this.state = 492;
1802
+ this.state = 499;
1785
1803
  this._errHandler.sync(this);
1786
1804
  _la = this._input.LA(1);
1787
- while (((((_la - 2)) & ~0x1F) === 0 && ((1 << (_la - 2)) & ((1 << (MalloyParser.ACCEPT - 2)) | (1 << (MalloyParser.AGGREGATE - 2)) | (1 << (MalloyParser.CALCULATE - 2)) | (1 << (MalloyParser.DECLARE - 2)) | (1 << (MalloyParser.DIMENSION - 2)) | (1 << (MalloyParser.EXCEPT - 2)) | (1 << (MalloyParser.GROUP_BY - 2)) | (1 << (MalloyParser.JOIN_CROSS - 2)) | (1 << (MalloyParser.JOIN_ONE - 2)) | (1 << (MalloyParser.JOIN_MANY - 2)) | (1 << (MalloyParser.MEASURE - 2)) | (1 << (MalloyParser.NEST - 2)) | (1 << (MalloyParser.PRIMARY_KEY - 2)) | (1 << (MalloyParser.PROJECT - 2)) | (1 << (MalloyParser.QUERY - 2)) | (1 << (MalloyParser.RENAME - 2)) | (1 << (MalloyParser.RUN - 2)) | (1 << (MalloyParser.SOURCE - 2)) | (1 << (MalloyParser.WHERE - 2)) | (1 << (MalloyParser.TIMEZONE - 2)) | (1 << (MalloyParser.ALL - 2)))) !== 0) || ((((_la - 37)) & ~0x1F) === 0 && ((1 << (_la - 37)) & ((1 << (MalloyParser.AVG - 37)) | (1 << (MalloyParser.CAST - 37)) | (1 << (MalloyParser.COUNT - 37)) | (1 << (MalloyParser.DAY - 37)) | (1 << (MalloyParser.EXCLUDE - 37)) | (1 << (MalloyParser.FALSE - 37)) | (1 << (MalloyParser.FROM - 37)) | (1 << (MalloyParser.FROM_SQL - 37)) | (1 << (MalloyParser.HOUR - 37)) | (1 << (MalloyParser.IS - 37)) | (1 << (MalloyParser.MAX - 37)) | (1 << (MalloyParser.MIN - 37)) | (1 << (MalloyParser.MINUTE - 37)) | (1 << (MalloyParser.MONTH - 37)) | (1 << (MalloyParser.NOT - 37)) | (1 << (MalloyParser.NOW - 37)) | (1 << (MalloyParser.NULL - 37)))) !== 0) || ((((_la - 71)) & ~0x1F) === 0 && ((1 << (_la - 71)) & ((1 << (MalloyParser.PICK - 71)) | (1 << (MalloyParser.QUARTER - 71)) | (1 << (MalloyParser.SECOND - 71)) | (1 << (MalloyParser.SUM - 71)) | (1 << (MalloyParser.TABLE - 71)) | (1 << (MalloyParser.TRUE - 71)) | (1 << (MalloyParser.WEEK - 71)) | (1 << (MalloyParser.YEAR - 71)) | (1 << (MalloyParser.HACKY_REGEX - 71)) | (1 << (MalloyParser.STRING_LITERAL - 71)) | (1 << (MalloyParser.DOC_ANNOTATION - 71)) | (1 << (MalloyParser.ANNOTATION - 71)) | (1 << (MalloyParser.ARROW - 71)) | (1 << (MalloyParser.OPAREN - 71)) | (1 << (MalloyParser.OCURLY - 71)))) !== 0) || ((((_la - 115)) & ~0x1F) === 0 && ((1 << (_la - 115)) & ((1 << (MalloyParser.MINUS - 115)) | (1 << (MalloyParser.SEMI - 115)) | (1 << (MalloyParser.LITERAL_TIMESTAMP - 115)) | (1 << (MalloyParser.LITERAL_HOUR - 115)) | (1 << (MalloyParser.LITERAL_DAY - 115)) | (1 << (MalloyParser.LITERAL_QUARTER - 115)) | (1 << (MalloyParser.LITERAL_MONTH - 115)) | (1 << (MalloyParser.LITERAL_WEEK - 115)) | (1 << (MalloyParser.LITERAL_YEAR - 115)) | (1 << (MalloyParser.IDENTIFIER - 115)) | (1 << (MalloyParser.INTEGER_LITERAL - 115)) | (1 << (MalloyParser.NUMERIC_LITERAL - 115)) | (1 << (MalloyParser.OBJECT_NAME_LITERAL - 115)))) !== 0)) {
1805
+ while (((((_la - 2)) & ~0x1F) === 0 && ((1 << (_la - 2)) & ((1 << (MalloyParser.ACCEPT - 2)) | (1 << (MalloyParser.AGGREGATE - 2)) | (1 << (MalloyParser.CALCULATE - 2)) | (1 << (MalloyParser.DECLARE - 2)) | (1 << (MalloyParser.DIMENSION - 2)) | (1 << (MalloyParser.EXCEPT - 2)) | (1 << (MalloyParser.GROUP_BY - 2)) | (1 << (MalloyParser.JOIN_CROSS - 2)) | (1 << (MalloyParser.JOIN_ONE - 2)) | (1 << (MalloyParser.JOIN_MANY - 2)) | (1 << (MalloyParser.MEASURE - 2)) | (1 << (MalloyParser.NEST - 2)) | (1 << (MalloyParser.PRIMARY_KEY - 2)) | (1 << (MalloyParser.PROJECT - 2)) | (1 << (MalloyParser.QUERY - 2)) | (1 << (MalloyParser.RENAME - 2)) | (1 << (MalloyParser.RUN - 2)) | (1 << (MalloyParser.SOURCE - 2)) | (1 << (MalloyParser.WHERE - 2)) | (1 << (MalloyParser.TIMEZONE - 2)) | (1 << (MalloyParser.ALL - 2)))) !== 0) || ((((_la - 37)) & ~0x1F) === 0 && ((1 << (_la - 37)) & ((1 << (MalloyParser.AVG - 37)) | (1 << (MalloyParser.CAST - 37)) | (1 << (MalloyParser.COUNT - 37)) | (1 << (MalloyParser.DAY - 37)) | (1 << (MalloyParser.EXCLUDE - 37)) | (1 << (MalloyParser.FALSE - 37)) | (1 << (MalloyParser.FROM - 37)) | (1 << (MalloyParser.FROM_SQL - 37)) | (1 << (MalloyParser.HOUR - 37)) | (1 << (MalloyParser.IS - 37)) | (1 << (MalloyParser.MAX - 37)) | (1 << (MalloyParser.MIN - 37)) | (1 << (MalloyParser.MINUTE - 37)) | (1 << (MalloyParser.MONTH - 37)) | (1 << (MalloyParser.NOT - 37)) | (1 << (MalloyParser.NOW - 37)) | (1 << (MalloyParser.NULL - 37)))) !== 0) || ((((_la - 71)) & ~0x1F) === 0 && ((1 << (_la - 71)) & ((1 << (MalloyParser.PICK - 71)) | (1 << (MalloyParser.QUARTER - 71)) | (1 << (MalloyParser.SECOND - 71)) | (1 << (MalloyParser.SUM - 71)) | (1 << (MalloyParser.TABLE - 71)) | (1 << (MalloyParser.TRUE - 71)) | (1 << (MalloyParser.WEEK - 71)) | (1 << (MalloyParser.YEAR - 71)) | (1 << (MalloyParser.HACKY_REGEX - 71)) | (1 << (MalloyParser.STRING_LITERAL - 71)) | (1 << (MalloyParser.DOC_ANNOTATION - 71)) | (1 << (MalloyParser.ANNOTATION - 71)) | (1 << (MalloyParser.ARROW - 71)) | (1 << (MalloyParser.OPAREN - 71)) | (1 << (MalloyParser.OCURLY - 71)))) !== 0) || ((((_la - 116)) & ~0x1F) === 0 && ((1 << (_la - 116)) & ((1 << (MalloyParser.MINUS - 116)) | (1 << (MalloyParser.SEMI - 116)) | (1 << (MalloyParser.LITERAL_TIMESTAMP - 116)) | (1 << (MalloyParser.LITERAL_HOUR - 116)) | (1 << (MalloyParser.LITERAL_DAY - 116)) | (1 << (MalloyParser.LITERAL_QUARTER - 116)) | (1 << (MalloyParser.LITERAL_MONTH - 116)) | (1 << (MalloyParser.LITERAL_WEEK - 116)) | (1 << (MalloyParser.LITERAL_YEAR - 116)) | (1 << (MalloyParser.IDENTIFIER - 116)) | (1 << (MalloyParser.INTEGER_LITERAL - 116)) | (1 << (MalloyParser.NUMERIC_LITERAL - 116)) | (1 << (MalloyParser.OBJECT_NAME_LITERAL - 116)))) !== 0)) {
1788
1806
  {
1789
- this.state = 490;
1807
+ this.state = 497;
1790
1808
  this._errHandler.sync(this);
1791
1809
  switch (this._input.LA(1)) {
1792
1810
  case MalloyParser.ACCEPT:
@@ -1855,13 +1873,13 @@ class MalloyParser extends Parser_1.Parser {
1855
1873
  case MalloyParser.NUMERIC_LITERAL:
1856
1874
  case MalloyParser.OBJECT_NAME_LITERAL:
1857
1875
  {
1858
- this.state = 488;
1876
+ this.state = 495;
1859
1877
  this.exploreStatement();
1860
1878
  }
1861
1879
  break;
1862
1880
  case MalloyParser.SEMI:
1863
1881
  {
1864
- this.state = 489;
1882
+ this.state = 496;
1865
1883
  this.match(MalloyParser.SEMI);
1866
1884
  }
1867
1885
  break;
@@ -1869,18 +1887,18 @@ class MalloyParser extends Parser_1.Parser {
1869
1887
  throw new NoViableAltException_1.NoViableAltException(this);
1870
1888
  }
1871
1889
  }
1872
- this.state = 494;
1890
+ this.state = 501;
1873
1891
  this._errHandler.sync(this);
1874
1892
  _la = this._input.LA(1);
1875
1893
  }
1876
- this.state = 495;
1894
+ this.state = 502;
1877
1895
  this.match(MalloyParser.CCURLY);
1878
1896
  }
1879
1897
  break;
1880
1898
  case 2:
1881
1899
  this.enterOuterAlt(_localctx, 2);
1882
1900
  {
1883
- this.state = 496;
1901
+ this.state = 503;
1884
1902
  this.filterShortcut();
1885
1903
  }
1886
1904
  break;
@@ -1908,14 +1926,14 @@ class MalloyParser extends Parser_1.Parser {
1908
1926
  let _la;
1909
1927
  try {
1910
1928
  let _alt;
1911
- this.state = 521;
1929
+ this.state = 528;
1912
1930
  this._errHandler.sync(this);
1913
1931
  switch (this.interpreter.adaptivePredict(this._input, 37, this._ctx)) {
1914
1932
  case 1:
1915
1933
  _localctx = new DefExploreDimension_stubContext(_localctx);
1916
1934
  this.enterOuterAlt(_localctx, 1);
1917
1935
  {
1918
- this.state = 499;
1936
+ this.state = 506;
1919
1937
  this.defDimensions();
1920
1938
  }
1921
1939
  break;
@@ -1923,7 +1941,7 @@ class MalloyParser extends Parser_1.Parser {
1923
1941
  _localctx = new DefExploreMeasure_stubContext(_localctx);
1924
1942
  this.enterOuterAlt(_localctx, 2);
1925
1943
  {
1926
- this.state = 500;
1944
+ this.state = 507;
1927
1945
  this.defMeasures();
1928
1946
  }
1929
1947
  break;
@@ -1931,7 +1949,7 @@ class MalloyParser extends Parser_1.Parser {
1931
1949
  _localctx = new DefDeclare_stubContext(_localctx);
1932
1950
  this.enterOuterAlt(_localctx, 3);
1933
1951
  {
1934
- this.state = 501;
1952
+ this.state = 508;
1935
1953
  this.declareStatement();
1936
1954
  }
1937
1955
  break;
@@ -1939,7 +1957,7 @@ class MalloyParser extends Parser_1.Parser {
1939
1957
  _localctx = new DefJoin_stubContext(_localctx);
1940
1958
  this.enterOuterAlt(_localctx, 4);
1941
1959
  {
1942
- this.state = 502;
1960
+ this.state = 509;
1943
1961
  this.joinStatement();
1944
1962
  }
1945
1963
  break;
@@ -1947,7 +1965,7 @@ class MalloyParser extends Parser_1.Parser {
1947
1965
  _localctx = new DefExploreWhere_stubContext(_localctx);
1948
1966
  this.enterOuterAlt(_localctx, 5);
1949
1967
  {
1950
- this.state = 503;
1968
+ this.state = 510;
1951
1969
  this.whereStatement();
1952
1970
  }
1953
1971
  break;
@@ -1955,9 +1973,9 @@ class MalloyParser extends Parser_1.Parser {
1955
1973
  _localctx = new DefExplorePrimaryKeyContext(_localctx);
1956
1974
  this.enterOuterAlt(_localctx, 6);
1957
1975
  {
1958
- this.state = 504;
1976
+ this.state = 511;
1959
1977
  this.match(MalloyParser.PRIMARY_KEY);
1960
- this.state = 505;
1978
+ this.state = 512;
1961
1979
  this.fieldName();
1962
1980
  }
1963
1981
  break;
@@ -1965,9 +1983,9 @@ class MalloyParser extends Parser_1.Parser {
1965
1983
  _localctx = new DefExploreRenameContext(_localctx);
1966
1984
  this.enterOuterAlt(_localctx, 7);
1967
1985
  {
1968
- this.state = 506;
1986
+ this.state = 513;
1969
1987
  this.match(MalloyParser.RENAME);
1970
- this.state = 507;
1988
+ this.state = 514;
1971
1989
  this.renameList();
1972
1990
  }
1973
1991
  break;
@@ -1975,7 +1993,7 @@ class MalloyParser extends Parser_1.Parser {
1975
1993
  _localctx = new DefExploreEditFieldContext(_localctx);
1976
1994
  this.enterOuterAlt(_localctx, 8);
1977
1995
  {
1978
- this.state = 508;
1996
+ this.state = 515;
1979
1997
  _la = this._input.LA(1);
1980
1998
  if (!(_la === MalloyParser.ACCEPT || _la === MalloyParser.EXCEPT)) {
1981
1999
  this._errHandler.recoverInline(this);
@@ -1987,7 +2005,7 @@ class MalloyParser extends Parser_1.Parser {
1987
2005
  this._errHandler.reportMatch(this);
1988
2006
  this.consume();
1989
2007
  }
1990
- this.state = 509;
2008
+ this.state = 516;
1991
2009
  this.fieldNameList();
1992
2010
  }
1993
2011
  break;
@@ -1995,11 +2013,11 @@ class MalloyParser extends Parser_1.Parser {
1995
2013
  _localctx = new DefExploreQueryContext(_localctx);
1996
2014
  this.enterOuterAlt(_localctx, 9);
1997
2015
  {
1998
- this.state = 510;
2016
+ this.state = 517;
1999
2017
  this.tags();
2000
- this.state = 511;
2018
+ this.state = 518;
2001
2019
  this.match(MalloyParser.QUERY);
2002
- this.state = 512;
2020
+ this.state = 519;
2003
2021
  this.subQueryDefList();
2004
2022
  }
2005
2023
  break;
@@ -2007,7 +2025,7 @@ class MalloyParser extends Parser_1.Parser {
2007
2025
  _localctx = new DefExploreTimezoneContext(_localctx);
2008
2026
  this.enterOuterAlt(_localctx, 10);
2009
2027
  {
2010
- this.state = 514;
2028
+ this.state = 521;
2011
2029
  this.timezoneStatement();
2012
2030
  }
2013
2031
  break;
@@ -2015,7 +2033,7 @@ class MalloyParser extends Parser_1.Parser {
2015
2033
  _localctx = new DefExploreAnnotationContext(_localctx);
2016
2034
  this.enterOuterAlt(_localctx, 11);
2017
2035
  {
2018
- this.state = 516;
2036
+ this.state = 523;
2019
2037
  this._errHandler.sync(this);
2020
2038
  _alt = 1;
2021
2039
  do {
@@ -2023,7 +2041,7 @@ class MalloyParser extends Parser_1.Parser {
2023
2041
  case 1:
2024
2042
  {
2025
2043
  {
2026
- this.state = 515;
2044
+ this.state = 522;
2027
2045
  this.match(MalloyParser.ANNOTATION);
2028
2046
  }
2029
2047
  }
@@ -2031,7 +2049,7 @@ class MalloyParser extends Parser_1.Parser {
2031
2049
  default:
2032
2050
  throw new NoViableAltException_1.NoViableAltException(this);
2033
2051
  }
2034
- this.state = 518;
2052
+ this.state = 525;
2035
2053
  this._errHandler.sync(this);
2036
2054
  _alt = this.interpreter.adaptivePredict(this._input, 36, this._ctx);
2037
2055
  } while (_alt !== 2 && _alt !== ATN_1.ATN.INVALID_ALT_NUMBER);
@@ -2041,7 +2059,7 @@ class MalloyParser extends Parser_1.Parser {
2041
2059
  _localctx = new DefIgnoreModel_stubContext(_localctx);
2042
2060
  this.enterOuterAlt(_localctx, 12);
2043
2061
  {
2044
- this.state = 520;
2062
+ this.state = 527;
2045
2063
  this.ignoredModelAnnotations();
2046
2064
  }
2047
2065
  break;
@@ -2069,11 +2087,11 @@ class MalloyParser extends Parser_1.Parser {
2069
2087
  try {
2070
2088
  this.enterOuterAlt(_localctx, 1);
2071
2089
  {
2072
- this.state = 523;
2090
+ this.state = 530;
2073
2091
  this.tags();
2074
- this.state = 524;
2092
+ this.state = 531;
2075
2093
  this.match(MalloyParser.MEASURE);
2076
- this.state = 525;
2094
+ this.state = 532;
2077
2095
  this.defList();
2078
2096
  }
2079
2097
  }
@@ -2099,11 +2117,11 @@ class MalloyParser extends Parser_1.Parser {
2099
2117
  try {
2100
2118
  this.enterOuterAlt(_localctx, 1);
2101
2119
  {
2102
- this.state = 527;
2120
+ this.state = 534;
2103
2121
  this.tags();
2104
- this.state = 528;
2122
+ this.state = 535;
2105
2123
  this.match(MalloyParser.DIMENSION);
2106
- this.state = 529;
2124
+ this.state = 536;
2107
2125
  this.defList();
2108
2126
  }
2109
2127
  }
@@ -2131,39 +2149,39 @@ class MalloyParser extends Parser_1.Parser {
2131
2149
  let _alt;
2132
2150
  this.enterOuterAlt(_localctx, 1);
2133
2151
  {
2134
- this.state = 531;
2135
- this.exploreRenameDef();
2136
2152
  this.state = 538;
2153
+ this.exploreRenameDef();
2154
+ this.state = 545;
2137
2155
  this._errHandler.sync(this);
2138
2156
  _alt = this.interpreter.adaptivePredict(this._input, 39, this._ctx);
2139
2157
  while (_alt !== 2 && _alt !== ATN_1.ATN.INVALID_ALT_NUMBER) {
2140
2158
  if (_alt === 1) {
2141
2159
  {
2142
2160
  {
2143
- this.state = 533;
2161
+ this.state = 540;
2144
2162
  this._errHandler.sync(this);
2145
2163
  _la = this._input.LA(1);
2146
2164
  if (_la === MalloyParser.COMMA) {
2147
2165
  {
2148
- this.state = 532;
2166
+ this.state = 539;
2149
2167
  this.match(MalloyParser.COMMA);
2150
2168
  }
2151
2169
  }
2152
- this.state = 535;
2170
+ this.state = 542;
2153
2171
  this.exploreRenameDef();
2154
2172
  }
2155
2173
  }
2156
2174
  }
2157
- this.state = 540;
2175
+ this.state = 547;
2158
2176
  this._errHandler.sync(this);
2159
2177
  _alt = this.interpreter.adaptivePredict(this._input, 39, this._ctx);
2160
2178
  }
2161
- this.state = 542;
2179
+ this.state = 549;
2162
2180
  this._errHandler.sync(this);
2163
2181
  _la = this._input.LA(1);
2164
2182
  if (_la === MalloyParser.COMMA) {
2165
2183
  {
2166
- this.state = 541;
2184
+ this.state = 548;
2167
2185
  this.match(MalloyParser.COMMA);
2168
2186
  }
2169
2187
  }
@@ -2191,11 +2209,11 @@ class MalloyParser extends Parser_1.Parser {
2191
2209
  try {
2192
2210
  this.enterOuterAlt(_localctx, 1);
2193
2211
  {
2194
- this.state = 544;
2212
+ this.state = 551;
2195
2213
  this.fieldName();
2196
- this.state = 545;
2214
+ this.state = 552;
2197
2215
  this.isDefine();
2198
- this.state = 546;
2216
+ this.state = 553;
2199
2217
  this.fieldName();
2200
2218
  }
2201
2219
  }
@@ -2223,39 +2241,39 @@ class MalloyParser extends Parser_1.Parser {
2223
2241
  let _alt;
2224
2242
  this.enterOuterAlt(_localctx, 1);
2225
2243
  {
2226
- this.state = 548;
2227
- this.fieldDef();
2228
2244
  this.state = 555;
2245
+ this.fieldDef();
2246
+ this.state = 562;
2229
2247
  this._errHandler.sync(this);
2230
2248
  _alt = this.interpreter.adaptivePredict(this._input, 42, this._ctx);
2231
2249
  while (_alt !== 2 && _alt !== ATN_1.ATN.INVALID_ALT_NUMBER) {
2232
2250
  if (_alt === 1) {
2233
2251
  {
2234
2252
  {
2235
- this.state = 550;
2253
+ this.state = 557;
2236
2254
  this._errHandler.sync(this);
2237
2255
  _la = this._input.LA(1);
2238
2256
  if (_la === MalloyParser.COMMA) {
2239
2257
  {
2240
- this.state = 549;
2258
+ this.state = 556;
2241
2259
  this.match(MalloyParser.COMMA);
2242
2260
  }
2243
2261
  }
2244
- this.state = 552;
2262
+ this.state = 559;
2245
2263
  this.fieldDef();
2246
2264
  }
2247
2265
  }
2248
2266
  }
2249
- this.state = 557;
2267
+ this.state = 564;
2250
2268
  this._errHandler.sync(this);
2251
2269
  _alt = this.interpreter.adaptivePredict(this._input, 42, this._ctx);
2252
2270
  }
2253
- this.state = 559;
2271
+ this.state = 566;
2254
2272
  this._errHandler.sync(this);
2255
2273
  _la = this._input.LA(1);
2256
2274
  if (_la === MalloyParser.COMMA) {
2257
2275
  {
2258
- this.state = 558;
2276
+ this.state = 565;
2259
2277
  this.match(MalloyParser.COMMA);
2260
2278
  }
2261
2279
  }
@@ -2283,13 +2301,13 @@ class MalloyParser extends Parser_1.Parser {
2283
2301
  try {
2284
2302
  this.enterOuterAlt(_localctx, 1);
2285
2303
  {
2286
- this.state = 561;
2304
+ this.state = 568;
2287
2305
  this.tags();
2288
- this.state = 562;
2306
+ this.state = 569;
2289
2307
  this.fieldNameDef();
2290
- this.state = 563;
2308
+ this.state = 570;
2291
2309
  this.isDefine();
2292
- this.state = 564;
2310
+ this.state = 571;
2293
2311
  this.fieldExpr(0);
2294
2312
  }
2295
2313
  }
@@ -2315,7 +2333,7 @@ class MalloyParser extends Parser_1.Parser {
2315
2333
  try {
2316
2334
  this.enterOuterAlt(_localctx, 1);
2317
2335
  {
2318
- this.state = 566;
2336
+ this.state = 573;
2319
2337
  this.id();
2320
2338
  }
2321
2339
  }
@@ -2341,7 +2359,7 @@ class MalloyParser extends Parser_1.Parser {
2341
2359
  try {
2342
2360
  this.enterOuterAlt(_localctx, 1);
2343
2361
  {
2344
- this.state = 568;
2362
+ this.state = 575;
2345
2363
  this.id();
2346
2364
  }
2347
2365
  }
@@ -2367,9 +2385,9 @@ class MalloyParser extends Parser_1.Parser {
2367
2385
  try {
2368
2386
  this.enterOuterAlt(_localctx, 1);
2369
2387
  {
2370
- this.state = 570;
2388
+ this.state = 577;
2371
2389
  this.match(MalloyParser.DECLARE);
2372
- this.state = 571;
2390
+ this.state = 578;
2373
2391
  this.defList();
2374
2392
  }
2375
2393
  }
@@ -2393,18 +2411,18 @@ class MalloyParser extends Parser_1.Parser {
2393
2411
  let _localctx = new JoinStatementContext(this._ctx, this.state);
2394
2412
  this.enterRule(_localctx, 96, MalloyParser.RULE_joinStatement);
2395
2413
  try {
2396
- this.state = 585;
2414
+ this.state = 592;
2397
2415
  this._errHandler.sync(this);
2398
2416
  switch (this.interpreter.adaptivePredict(this._input, 44, this._ctx)) {
2399
2417
  case 1:
2400
2418
  _localctx = new DefJoinOneContext(_localctx);
2401
2419
  this.enterOuterAlt(_localctx, 1);
2402
2420
  {
2403
- this.state = 573;
2421
+ this.state = 580;
2404
2422
  this.tags();
2405
- this.state = 574;
2423
+ this.state = 581;
2406
2424
  this.match(MalloyParser.JOIN_ONE);
2407
- this.state = 575;
2425
+ this.state = 582;
2408
2426
  this.joinList();
2409
2427
  }
2410
2428
  break;
@@ -2412,11 +2430,11 @@ class MalloyParser extends Parser_1.Parser {
2412
2430
  _localctx = new DefJoinManyContext(_localctx);
2413
2431
  this.enterOuterAlt(_localctx, 2);
2414
2432
  {
2415
- this.state = 577;
2433
+ this.state = 584;
2416
2434
  this.tags();
2417
- this.state = 578;
2435
+ this.state = 585;
2418
2436
  this.match(MalloyParser.JOIN_MANY);
2419
- this.state = 579;
2437
+ this.state = 586;
2420
2438
  this.joinList();
2421
2439
  }
2422
2440
  break;
@@ -2424,11 +2442,11 @@ class MalloyParser extends Parser_1.Parser {
2424
2442
  _localctx = new DefJoinCrossContext(_localctx);
2425
2443
  this.enterOuterAlt(_localctx, 3);
2426
2444
  {
2427
- this.state = 581;
2445
+ this.state = 588;
2428
2446
  this.tags();
2429
- this.state = 582;
2447
+ this.state = 589;
2430
2448
  this.match(MalloyParser.JOIN_CROSS);
2431
- this.state = 583;
2449
+ this.state = 590;
2432
2450
  this.joinList();
2433
2451
  }
2434
2452
  break;
@@ -2456,9 +2474,9 @@ class MalloyParser extends Parser_1.Parser {
2456
2474
  try {
2457
2475
  this.enterOuterAlt(_localctx, 1);
2458
2476
  {
2459
- this.state = 587;
2477
+ this.state = 594;
2460
2478
  this.match(MalloyParser.EXTENDQ);
2461
- this.state = 588;
2479
+ this.state = 595;
2462
2480
  this.queryExtendStatementList();
2463
2481
  }
2464
2482
  }
@@ -2482,27 +2500,27 @@ class MalloyParser extends Parser_1.Parser {
2482
2500
  let _localctx = new QueryExtendStatementContext(this._ctx, this.state);
2483
2501
  this.enterRule(_localctx, 100, MalloyParser.RULE_queryExtendStatement);
2484
2502
  try {
2485
- this.state = 593;
2503
+ this.state = 600;
2486
2504
  this._errHandler.sync(this);
2487
2505
  switch (this.interpreter.adaptivePredict(this._input, 45, this._ctx)) {
2488
2506
  case 1:
2489
2507
  this.enterOuterAlt(_localctx, 1);
2490
2508
  {
2491
- this.state = 590;
2509
+ this.state = 597;
2492
2510
  this.defDimensions();
2493
2511
  }
2494
2512
  break;
2495
2513
  case 2:
2496
2514
  this.enterOuterAlt(_localctx, 2);
2497
2515
  {
2498
- this.state = 591;
2516
+ this.state = 598;
2499
2517
  this.defMeasures();
2500
2518
  }
2501
2519
  break;
2502
2520
  case 3:
2503
2521
  this.enterOuterAlt(_localctx, 3);
2504
2522
  {
2505
- this.state = 592;
2523
+ this.state = 599;
2506
2524
  this.joinStatement();
2507
2525
  }
2508
2526
  break;
@@ -2531,14 +2549,14 @@ class MalloyParser extends Parser_1.Parser {
2531
2549
  try {
2532
2550
  this.enterOuterAlt(_localctx, 1);
2533
2551
  {
2534
- this.state = 595;
2552
+ this.state = 602;
2535
2553
  this.match(MalloyParser.OCURLY);
2536
- this.state = 600;
2554
+ this.state = 607;
2537
2555
  this._errHandler.sync(this);
2538
2556
  _la = this._input.LA(1);
2539
- while (((((_la - 3)) & ~0x1F) === 0 && ((1 << (_la - 3)) & ((1 << (MalloyParser.AGGREGATE - 3)) | (1 << (MalloyParser.CALCULATE - 3)) | (1 << (MalloyParser.DIMENSION - 3)) | (1 << (MalloyParser.GROUP_BY - 3)) | (1 << (MalloyParser.JOIN_CROSS - 3)) | (1 << (MalloyParser.JOIN_ONE - 3)) | (1 << (MalloyParser.JOIN_MANY - 3)) | (1 << (MalloyParser.MEASURE - 3)) | (1 << (MalloyParser.NEST - 3)) | (1 << (MalloyParser.PROJECT - 3)) | (1 << (MalloyParser.QUERY - 3)) | (1 << (MalloyParser.RUN - 3)) | (1 << (MalloyParser.SOURCE - 3)) | (1 << (MalloyParser.ALL - 3)))) !== 0) || ((((_la - 37)) & ~0x1F) === 0 && ((1 << (_la - 37)) & ((1 << (MalloyParser.AVG - 37)) | (1 << (MalloyParser.CAST - 37)) | (1 << (MalloyParser.COUNT - 37)) | (1 << (MalloyParser.DAY - 37)) | (1 << (MalloyParser.EXCLUDE - 37)) | (1 << (MalloyParser.FALSE - 37)) | (1 << (MalloyParser.FROM - 37)) | (1 << (MalloyParser.FROM_SQL - 37)) | (1 << (MalloyParser.HOUR - 37)) | (1 << (MalloyParser.IS - 37)) | (1 << (MalloyParser.MAX - 37)) | (1 << (MalloyParser.MIN - 37)) | (1 << (MalloyParser.MINUTE - 37)) | (1 << (MalloyParser.MONTH - 37)) | (1 << (MalloyParser.NOT - 37)) | (1 << (MalloyParser.NOW - 37)) | (1 << (MalloyParser.NULL - 37)))) !== 0) || ((((_la - 71)) & ~0x1F) === 0 && ((1 << (_la - 71)) & ((1 << (MalloyParser.PICK - 71)) | (1 << (MalloyParser.QUARTER - 71)) | (1 << (MalloyParser.SECOND - 71)) | (1 << (MalloyParser.SUM - 71)) | (1 << (MalloyParser.TABLE - 71)) | (1 << (MalloyParser.TRUE - 71)) | (1 << (MalloyParser.WEEK - 71)) | (1 << (MalloyParser.YEAR - 71)) | (1 << (MalloyParser.HACKY_REGEX - 71)) | (1 << (MalloyParser.STRING_LITERAL - 71)) | (1 << (MalloyParser.ANNOTATION - 71)) | (1 << (MalloyParser.ARROW - 71)) | (1 << (MalloyParser.OPAREN - 71)) | (1 << (MalloyParser.OCURLY - 71)))) !== 0) || ((((_la - 115)) & ~0x1F) === 0 && ((1 << (_la - 115)) & ((1 << (MalloyParser.MINUS - 115)) | (1 << (MalloyParser.SEMI - 115)) | (1 << (MalloyParser.LITERAL_TIMESTAMP - 115)) | (1 << (MalloyParser.LITERAL_HOUR - 115)) | (1 << (MalloyParser.LITERAL_DAY - 115)) | (1 << (MalloyParser.LITERAL_QUARTER - 115)) | (1 << (MalloyParser.LITERAL_MONTH - 115)) | (1 << (MalloyParser.LITERAL_WEEK - 115)) | (1 << (MalloyParser.LITERAL_YEAR - 115)) | (1 << (MalloyParser.IDENTIFIER - 115)) | (1 << (MalloyParser.INTEGER_LITERAL - 115)) | (1 << (MalloyParser.NUMERIC_LITERAL - 115)) | (1 << (MalloyParser.OBJECT_NAME_LITERAL - 115)))) !== 0)) {
2557
+ while (((((_la - 3)) & ~0x1F) === 0 && ((1 << (_la - 3)) & ((1 << (MalloyParser.AGGREGATE - 3)) | (1 << (MalloyParser.CALCULATE - 3)) | (1 << (MalloyParser.DIMENSION - 3)) | (1 << (MalloyParser.GROUP_BY - 3)) | (1 << (MalloyParser.JOIN_CROSS - 3)) | (1 << (MalloyParser.JOIN_ONE - 3)) | (1 << (MalloyParser.JOIN_MANY - 3)) | (1 << (MalloyParser.MEASURE - 3)) | (1 << (MalloyParser.NEST - 3)) | (1 << (MalloyParser.PROJECT - 3)) | (1 << (MalloyParser.QUERY - 3)) | (1 << (MalloyParser.RUN - 3)) | (1 << (MalloyParser.SOURCE - 3)) | (1 << (MalloyParser.ALL - 3)))) !== 0) || ((((_la - 37)) & ~0x1F) === 0 && ((1 << (_la - 37)) & ((1 << (MalloyParser.AVG - 37)) | (1 << (MalloyParser.CAST - 37)) | (1 << (MalloyParser.COUNT - 37)) | (1 << (MalloyParser.DAY - 37)) | (1 << (MalloyParser.EXCLUDE - 37)) | (1 << (MalloyParser.FALSE - 37)) | (1 << (MalloyParser.FROM - 37)) | (1 << (MalloyParser.FROM_SQL - 37)) | (1 << (MalloyParser.HOUR - 37)) | (1 << (MalloyParser.IS - 37)) | (1 << (MalloyParser.MAX - 37)) | (1 << (MalloyParser.MIN - 37)) | (1 << (MalloyParser.MINUTE - 37)) | (1 << (MalloyParser.MONTH - 37)) | (1 << (MalloyParser.NOT - 37)) | (1 << (MalloyParser.NOW - 37)) | (1 << (MalloyParser.NULL - 37)))) !== 0) || ((((_la - 71)) & ~0x1F) === 0 && ((1 << (_la - 71)) & ((1 << (MalloyParser.PICK - 71)) | (1 << (MalloyParser.QUARTER - 71)) | (1 << (MalloyParser.SECOND - 71)) | (1 << (MalloyParser.SUM - 71)) | (1 << (MalloyParser.TABLE - 71)) | (1 << (MalloyParser.TRUE - 71)) | (1 << (MalloyParser.WEEK - 71)) | (1 << (MalloyParser.YEAR - 71)) | (1 << (MalloyParser.HACKY_REGEX - 71)) | (1 << (MalloyParser.STRING_LITERAL - 71)) | (1 << (MalloyParser.ANNOTATION - 71)) | (1 << (MalloyParser.ARROW - 71)) | (1 << (MalloyParser.OPAREN - 71)) | (1 << (MalloyParser.OCURLY - 71)))) !== 0) || ((((_la - 116)) & ~0x1F) === 0 && ((1 << (_la - 116)) & ((1 << (MalloyParser.MINUS - 116)) | (1 << (MalloyParser.SEMI - 116)) | (1 << (MalloyParser.LITERAL_TIMESTAMP - 116)) | (1 << (MalloyParser.LITERAL_HOUR - 116)) | (1 << (MalloyParser.LITERAL_DAY - 116)) | (1 << (MalloyParser.LITERAL_QUARTER - 116)) | (1 << (MalloyParser.LITERAL_MONTH - 116)) | (1 << (MalloyParser.LITERAL_WEEK - 116)) | (1 << (MalloyParser.LITERAL_YEAR - 116)) | (1 << (MalloyParser.IDENTIFIER - 116)) | (1 << (MalloyParser.INTEGER_LITERAL - 116)) | (1 << (MalloyParser.NUMERIC_LITERAL - 116)) | (1 << (MalloyParser.OBJECT_NAME_LITERAL - 116)))) !== 0)) {
2540
2558
  {
2541
- this.state = 598;
2559
+ this.state = 605;
2542
2560
  this._errHandler.sync(this);
2543
2561
  switch (this._input.LA(1)) {
2544
2562
  case MalloyParser.AGGREGATE:
@@ -2599,13 +2617,13 @@ class MalloyParser extends Parser_1.Parser {
2599
2617
  case MalloyParser.NUMERIC_LITERAL:
2600
2618
  case MalloyParser.OBJECT_NAME_LITERAL:
2601
2619
  {
2602
- this.state = 596;
2620
+ this.state = 603;
2603
2621
  this.queryExtendStatement();
2604
2622
  }
2605
2623
  break;
2606
2624
  case MalloyParser.SEMI:
2607
2625
  {
2608
- this.state = 597;
2626
+ this.state = 604;
2609
2627
  this.match(MalloyParser.SEMI);
2610
2628
  }
2611
2629
  break;
@@ -2613,11 +2631,11 @@ class MalloyParser extends Parser_1.Parser {
2613
2631
  throw new NoViableAltException_1.NoViableAltException(this);
2614
2632
  }
2615
2633
  }
2616
- this.state = 602;
2634
+ this.state = 609;
2617
2635
  this._errHandler.sync(this);
2618
2636
  _la = this._input.LA(1);
2619
2637
  }
2620
- this.state = 603;
2638
+ this.state = 610;
2621
2639
  this.match(MalloyParser.CCURLY);
2622
2640
  }
2623
2641
  }
@@ -2645,39 +2663,39 @@ class MalloyParser extends Parser_1.Parser {
2645
2663
  let _alt;
2646
2664
  this.enterOuterAlt(_localctx, 1);
2647
2665
  {
2648
- this.state = 605;
2649
- this.joinDef();
2650
2666
  this.state = 612;
2667
+ this.joinDef();
2668
+ this.state = 619;
2651
2669
  this._errHandler.sync(this);
2652
2670
  _alt = this.interpreter.adaptivePredict(this._input, 49, this._ctx);
2653
2671
  while (_alt !== 2 && _alt !== ATN_1.ATN.INVALID_ALT_NUMBER) {
2654
2672
  if (_alt === 1) {
2655
2673
  {
2656
2674
  {
2657
- this.state = 607;
2675
+ this.state = 614;
2658
2676
  this._errHandler.sync(this);
2659
2677
  _la = this._input.LA(1);
2660
2678
  if (_la === MalloyParser.COMMA) {
2661
2679
  {
2662
- this.state = 606;
2680
+ this.state = 613;
2663
2681
  this.match(MalloyParser.COMMA);
2664
2682
  }
2665
2683
  }
2666
- this.state = 609;
2684
+ this.state = 616;
2667
2685
  this.joinDef();
2668
2686
  }
2669
2687
  }
2670
2688
  }
2671
- this.state = 614;
2689
+ this.state = 621;
2672
2690
  this._errHandler.sync(this);
2673
2691
  _alt = this.interpreter.adaptivePredict(this._input, 49, this._ctx);
2674
2692
  }
2675
- this.state = 616;
2693
+ this.state = 623;
2676
2694
  this._errHandler.sync(this);
2677
2695
  _la = this._input.LA(1);
2678
2696
  if (_la === MalloyParser.COMMA) {
2679
2697
  {
2680
- this.state = 615;
2698
+ this.state = 622;
2681
2699
  this.match(MalloyParser.COMMA);
2682
2700
  }
2683
2701
  }
@@ -2705,13 +2723,13 @@ class MalloyParser extends Parser_1.Parser {
2705
2723
  try {
2706
2724
  this.enterOuterAlt(_localctx, 1);
2707
2725
  {
2708
- this.state = 618;
2726
+ this.state = 625;
2709
2727
  _localctx._before_is = this.tags();
2710
- this.state = 619;
2728
+ this.state = 626;
2711
2729
  this.match(MalloyParser.IS);
2712
- this.state = 620;
2730
+ this.state = 627;
2713
2731
  _localctx._after_is = this.tags();
2714
- this.state = 621;
2732
+ this.state = 628;
2715
2733
  this.explore();
2716
2734
  }
2717
2735
  }
@@ -2736,41 +2754,41 @@ class MalloyParser extends Parser_1.Parser {
2736
2754
  this.enterRule(_localctx, 108, MalloyParser.RULE_joinDef);
2737
2755
  let _la;
2738
2756
  try {
2739
- this.state = 650;
2757
+ this.state = 657;
2740
2758
  this._errHandler.sync(this);
2741
2759
  switch (this.interpreter.adaptivePredict(this._input, 56, this._ctx)) {
2742
2760
  case 1:
2743
2761
  _localctx = new JoinWithContext(_localctx);
2744
2762
  this.enterOuterAlt(_localctx, 1);
2745
2763
  {
2746
- this.state = 626;
2764
+ this.state = 633;
2747
2765
  this._errHandler.sync(this);
2748
2766
  _la = this._input.LA(1);
2749
2767
  while (_la === MalloyParser.ANNOTATION) {
2750
2768
  {
2751
2769
  {
2752
- this.state = 623;
2770
+ this.state = 630;
2753
2771
  this.match(MalloyParser.ANNOTATION);
2754
2772
  }
2755
2773
  }
2756
- this.state = 628;
2774
+ this.state = 635;
2757
2775
  this._errHandler.sync(this);
2758
2776
  _la = this._input.LA(1);
2759
2777
  }
2760
- this.state = 629;
2778
+ this.state = 636;
2761
2779
  this.joinNameDef();
2762
- this.state = 631;
2780
+ this.state = 638;
2763
2781
  this._errHandler.sync(this);
2764
2782
  _la = this._input.LA(1);
2765
- if (((((_la - 3)) & ~0x1F) === 0 && ((1 << (_la - 3)) & ((1 << (MalloyParser.AGGREGATE - 3)) | (1 << (MalloyParser.CALCULATE - 3)) | (1 << (MalloyParser.DIMENSION - 3)) | (1 << (MalloyParser.GROUP_BY - 3)) | (1 << (MalloyParser.JOIN_CROSS - 3)) | (1 << (MalloyParser.JOIN_ONE - 3)) | (1 << (MalloyParser.JOIN_MANY - 3)) | (1 << (MalloyParser.MEASURE - 3)) | (1 << (MalloyParser.NEST - 3)) | (1 << (MalloyParser.PROJECT - 3)) | (1 << (MalloyParser.QUERY - 3)) | (1 << (MalloyParser.RUN - 3)) | (1 << (MalloyParser.SOURCE - 3)) | (1 << (MalloyParser.ALL - 3)))) !== 0) || ((((_la - 37)) & ~0x1F) === 0 && ((1 << (_la - 37)) & ((1 << (MalloyParser.AVG - 37)) | (1 << (MalloyParser.CAST - 37)) | (1 << (MalloyParser.COUNT - 37)) | (1 << (MalloyParser.DAY - 37)) | (1 << (MalloyParser.EXCLUDE - 37)) | (1 << (MalloyParser.FALSE - 37)) | (1 << (MalloyParser.FROM - 37)) | (1 << (MalloyParser.FROM_SQL - 37)) | (1 << (MalloyParser.HOUR - 37)) | (1 << (MalloyParser.IS - 37)) | (1 << (MalloyParser.MAX - 37)) | (1 << (MalloyParser.MIN - 37)) | (1 << (MalloyParser.MINUTE - 37)) | (1 << (MalloyParser.MONTH - 37)) | (1 << (MalloyParser.NOT - 37)) | (1 << (MalloyParser.NOW - 37)) | (1 << (MalloyParser.NULL - 37)))) !== 0) || ((((_la - 71)) & ~0x1F) === 0 && ((1 << (_la - 71)) & ((1 << (MalloyParser.PICK - 71)) | (1 << (MalloyParser.QUARTER - 71)) | (1 << (MalloyParser.SECOND - 71)) | (1 << (MalloyParser.SUM - 71)) | (1 << (MalloyParser.TABLE - 71)) | (1 << (MalloyParser.TRUE - 71)) | (1 << (MalloyParser.WEEK - 71)) | (1 << (MalloyParser.YEAR - 71)) | (1 << (MalloyParser.HACKY_REGEX - 71)) | (1 << (MalloyParser.STRING_LITERAL - 71)) | (1 << (MalloyParser.ANNOTATION - 71)) | (1 << (MalloyParser.ARROW - 71)) | (1 << (MalloyParser.OPAREN - 71)) | (1 << (MalloyParser.OCURLY - 71)))) !== 0) || ((((_la - 115)) & ~0x1F) === 0 && ((1 << (_la - 115)) & ((1 << (MalloyParser.MINUS - 115)) | (1 << (MalloyParser.LITERAL_TIMESTAMP - 115)) | (1 << (MalloyParser.LITERAL_HOUR - 115)) | (1 << (MalloyParser.LITERAL_DAY - 115)) | (1 << (MalloyParser.LITERAL_QUARTER - 115)) | (1 << (MalloyParser.LITERAL_MONTH - 115)) | (1 << (MalloyParser.LITERAL_WEEK - 115)) | (1 << (MalloyParser.LITERAL_YEAR - 115)) | (1 << (MalloyParser.IDENTIFIER - 115)) | (1 << (MalloyParser.INTEGER_LITERAL - 115)) | (1 << (MalloyParser.NUMERIC_LITERAL - 115)) | (1 << (MalloyParser.OBJECT_NAME_LITERAL - 115)))) !== 0)) {
2783
+ if (((((_la - 3)) & ~0x1F) === 0 && ((1 << (_la - 3)) & ((1 << (MalloyParser.AGGREGATE - 3)) | (1 << (MalloyParser.CALCULATE - 3)) | (1 << (MalloyParser.DIMENSION - 3)) | (1 << (MalloyParser.GROUP_BY - 3)) | (1 << (MalloyParser.JOIN_CROSS - 3)) | (1 << (MalloyParser.JOIN_ONE - 3)) | (1 << (MalloyParser.JOIN_MANY - 3)) | (1 << (MalloyParser.MEASURE - 3)) | (1 << (MalloyParser.NEST - 3)) | (1 << (MalloyParser.PROJECT - 3)) | (1 << (MalloyParser.QUERY - 3)) | (1 << (MalloyParser.RUN - 3)) | (1 << (MalloyParser.SOURCE - 3)) | (1 << (MalloyParser.ALL - 3)))) !== 0) || ((((_la - 37)) & ~0x1F) === 0 && ((1 << (_la - 37)) & ((1 << (MalloyParser.AVG - 37)) | (1 << (MalloyParser.CAST - 37)) | (1 << (MalloyParser.COUNT - 37)) | (1 << (MalloyParser.DAY - 37)) | (1 << (MalloyParser.EXCLUDE - 37)) | (1 << (MalloyParser.FALSE - 37)) | (1 << (MalloyParser.FROM - 37)) | (1 << (MalloyParser.FROM_SQL - 37)) | (1 << (MalloyParser.HOUR - 37)) | (1 << (MalloyParser.IS - 37)) | (1 << (MalloyParser.MAX - 37)) | (1 << (MalloyParser.MIN - 37)) | (1 << (MalloyParser.MINUTE - 37)) | (1 << (MalloyParser.MONTH - 37)) | (1 << (MalloyParser.NOT - 37)) | (1 << (MalloyParser.NOW - 37)) | (1 << (MalloyParser.NULL - 37)))) !== 0) || ((((_la - 71)) & ~0x1F) === 0 && ((1 << (_la - 71)) & ((1 << (MalloyParser.PICK - 71)) | (1 << (MalloyParser.QUARTER - 71)) | (1 << (MalloyParser.SECOND - 71)) | (1 << (MalloyParser.SUM - 71)) | (1 << (MalloyParser.TABLE - 71)) | (1 << (MalloyParser.TRUE - 71)) | (1 << (MalloyParser.WEEK - 71)) | (1 << (MalloyParser.YEAR - 71)) | (1 << (MalloyParser.HACKY_REGEX - 71)) | (1 << (MalloyParser.STRING_LITERAL - 71)) | (1 << (MalloyParser.ANNOTATION - 71)) | (1 << (MalloyParser.ARROW - 71)) | (1 << (MalloyParser.OPAREN - 71)) | (1 << (MalloyParser.OCURLY - 71)))) !== 0) || ((((_la - 116)) & ~0x1F) === 0 && ((1 << (_la - 116)) & ((1 << (MalloyParser.MINUS - 116)) | (1 << (MalloyParser.LITERAL_TIMESTAMP - 116)) | (1 << (MalloyParser.LITERAL_HOUR - 116)) | (1 << (MalloyParser.LITERAL_DAY - 116)) | (1 << (MalloyParser.LITERAL_QUARTER - 116)) | (1 << (MalloyParser.LITERAL_MONTH - 116)) | (1 << (MalloyParser.LITERAL_WEEK - 116)) | (1 << (MalloyParser.LITERAL_YEAR - 116)) | (1 << (MalloyParser.IDENTIFIER - 116)) | (1 << (MalloyParser.INTEGER_LITERAL - 116)) | (1 << (MalloyParser.NUMERIC_LITERAL - 116)) | (1 << (MalloyParser.OBJECT_NAME_LITERAL - 116)))) !== 0)) {
2766
2784
  {
2767
- this.state = 630;
2785
+ this.state = 637;
2768
2786
  this.isExplore();
2769
2787
  }
2770
2788
  }
2771
- this.state = 633;
2789
+ this.state = 640;
2772
2790
  this.match(MalloyParser.WITH);
2773
- this.state = 634;
2791
+ this.state = 641;
2774
2792
  this.fieldExpr(0);
2775
2793
  }
2776
2794
  break;
@@ -2778,40 +2796,40 @@ class MalloyParser extends Parser_1.Parser {
2778
2796
  _localctx = new JoinOnContext(_localctx);
2779
2797
  this.enterOuterAlt(_localctx, 2);
2780
2798
  {
2781
- this.state = 639;
2799
+ this.state = 646;
2782
2800
  this._errHandler.sync(this);
2783
2801
  _la = this._input.LA(1);
2784
2802
  while (_la === MalloyParser.ANNOTATION) {
2785
2803
  {
2786
2804
  {
2787
- this.state = 636;
2805
+ this.state = 643;
2788
2806
  this.match(MalloyParser.ANNOTATION);
2789
2807
  }
2790
2808
  }
2791
- this.state = 641;
2809
+ this.state = 648;
2792
2810
  this._errHandler.sync(this);
2793
2811
  _la = this._input.LA(1);
2794
2812
  }
2795
- this.state = 642;
2813
+ this.state = 649;
2796
2814
  this.joinNameDef();
2797
- this.state = 644;
2815
+ this.state = 651;
2798
2816
  this._errHandler.sync(this);
2799
2817
  switch (this.interpreter.adaptivePredict(this._input, 54, this._ctx)) {
2800
2818
  case 1:
2801
2819
  {
2802
- this.state = 643;
2820
+ this.state = 650;
2803
2821
  this.isExplore();
2804
2822
  }
2805
2823
  break;
2806
2824
  }
2807
- this.state = 648;
2825
+ this.state = 655;
2808
2826
  this._errHandler.sync(this);
2809
2827
  _la = this._input.LA(1);
2810
2828
  if (_la === MalloyParser.ON) {
2811
2829
  {
2812
- this.state = 646;
2830
+ this.state = 653;
2813
2831
  this.match(MalloyParser.ON);
2814
- this.state = 647;
2832
+ this.state = 654;
2815
2833
  this.joinExpression();
2816
2834
  }
2817
2835
  }
@@ -2841,7 +2859,7 @@ class MalloyParser extends Parser_1.Parser {
2841
2859
  try {
2842
2860
  this.enterOuterAlt(_localctx, 1);
2843
2861
  {
2844
- this.state = 652;
2862
+ this.state = 659;
2845
2863
  this.fieldExpr(0);
2846
2864
  }
2847
2865
  }
@@ -2865,20 +2883,20 @@ class MalloyParser extends Parser_1.Parser {
2865
2883
  let _localctx = new FilterStatementContext(this._ctx, this.state);
2866
2884
  this.enterRule(_localctx, 112, MalloyParser.RULE_filterStatement);
2867
2885
  try {
2868
- this.state = 656;
2886
+ this.state = 663;
2869
2887
  this._errHandler.sync(this);
2870
2888
  switch (this._input.LA(1)) {
2871
2889
  case MalloyParser.WHERE:
2872
2890
  this.enterOuterAlt(_localctx, 1);
2873
2891
  {
2874
- this.state = 654;
2892
+ this.state = 661;
2875
2893
  this.whereStatement();
2876
2894
  }
2877
2895
  break;
2878
2896
  case MalloyParser.HAVING:
2879
2897
  this.enterOuterAlt(_localctx, 2);
2880
2898
  {
2881
- this.state = 655;
2899
+ this.state = 662;
2882
2900
  this.havingStatement();
2883
2901
  }
2884
2902
  break;
@@ -2906,16 +2924,16 @@ class MalloyParser extends Parser_1.Parser {
2906
2924
  let _localctx = new FilteredByContext(this._ctx, this.state);
2907
2925
  this.enterRule(_localctx, 114, MalloyParser.RULE_filteredBy);
2908
2926
  try {
2909
- this.state = 661;
2927
+ this.state = 668;
2910
2928
  this._errHandler.sync(this);
2911
2929
  switch (this._input.LA(1)) {
2912
2930
  case MalloyParser.QMARK:
2913
2931
  _localctx = new FilterByShortcutContext(_localctx);
2914
2932
  this.enterOuterAlt(_localctx, 1);
2915
2933
  {
2916
- this.state = 658;
2934
+ this.state = 665;
2917
2935
  this.match(MalloyParser.QMARK);
2918
- this.state = 659;
2936
+ this.state = 666;
2919
2937
  this.fieldExpr(0);
2920
2938
  }
2921
2939
  break;
@@ -2923,7 +2941,7 @@ class MalloyParser extends Parser_1.Parser {
2923
2941
  _localctx = new FilterByWhereContext(_localctx);
2924
2942
  this.enterOuterAlt(_localctx, 2);
2925
2943
  {
2926
- this.state = 660;
2944
+ this.state = 667;
2927
2945
  this.whereStatement();
2928
2946
  }
2929
2947
  break;
@@ -2955,32 +2973,32 @@ class MalloyParser extends Parser_1.Parser {
2955
2973
  let _alt;
2956
2974
  this.enterOuterAlt(_localctx, 1);
2957
2975
  {
2958
- this.state = 663;
2976
+ this.state = 670;
2959
2977
  this.fieldExpr(0);
2960
- this.state = 668;
2978
+ this.state = 675;
2961
2979
  this._errHandler.sync(this);
2962
2980
  _alt = this.interpreter.adaptivePredict(this._input, 59, this._ctx);
2963
2981
  while (_alt !== 2 && _alt !== ATN_1.ATN.INVALID_ALT_NUMBER) {
2964
2982
  if (_alt === 1) {
2965
2983
  {
2966
2984
  {
2967
- this.state = 664;
2985
+ this.state = 671;
2968
2986
  this.match(MalloyParser.COMMA);
2969
- this.state = 665;
2987
+ this.state = 672;
2970
2988
  this.fieldExpr(0);
2971
2989
  }
2972
2990
  }
2973
2991
  }
2974
- this.state = 670;
2992
+ this.state = 677;
2975
2993
  this._errHandler.sync(this);
2976
2994
  _alt = this.interpreter.adaptivePredict(this._input, 59, this._ctx);
2977
2995
  }
2978
- this.state = 672;
2996
+ this.state = 679;
2979
2997
  this._errHandler.sync(this);
2980
2998
  _la = this._input.LA(1);
2981
2999
  if (_la === MalloyParser.COMMA) {
2982
3000
  {
2983
- this.state = 671;
3001
+ this.state = 678;
2984
3002
  this.match(MalloyParser.COMMA);
2985
3003
  }
2986
3004
  }
@@ -3008,9 +3026,9 @@ class MalloyParser extends Parser_1.Parser {
3008
3026
  try {
3009
3027
  this.enterOuterAlt(_localctx, 1);
3010
3028
  {
3011
- this.state = 674;
3029
+ this.state = 681;
3012
3030
  this.match(MalloyParser.WHERE);
3013
- this.state = 675;
3031
+ this.state = 682;
3014
3032
  this.filterClauseList();
3015
3033
  }
3016
3034
  }
@@ -3036,9 +3054,9 @@ class MalloyParser extends Parser_1.Parser {
3036
3054
  try {
3037
3055
  this.enterOuterAlt(_localctx, 1);
3038
3056
  {
3039
- this.state = 677;
3057
+ this.state = 684;
3040
3058
  this.match(MalloyParser.HAVING);
3041
- this.state = 678;
3059
+ this.state = 685;
3042
3060
  this.filterClauseList();
3043
3061
  }
3044
3062
  }
@@ -3066,39 +3084,39 @@ class MalloyParser extends Parser_1.Parser {
3066
3084
  let _alt;
3067
3085
  this.enterOuterAlt(_localctx, 1);
3068
3086
  {
3069
- this.state = 680;
3070
- this.exploreQueryDef();
3071
3087
  this.state = 687;
3088
+ this.exploreQueryDef();
3089
+ this.state = 694;
3072
3090
  this._errHandler.sync(this);
3073
3091
  _alt = this.interpreter.adaptivePredict(this._input, 62, this._ctx);
3074
3092
  while (_alt !== 2 && _alt !== ATN_1.ATN.INVALID_ALT_NUMBER) {
3075
3093
  if (_alt === 1) {
3076
3094
  {
3077
3095
  {
3078
- this.state = 682;
3096
+ this.state = 689;
3079
3097
  this._errHandler.sync(this);
3080
3098
  _la = this._input.LA(1);
3081
3099
  if (_la === MalloyParser.COMMA) {
3082
3100
  {
3083
- this.state = 681;
3101
+ this.state = 688;
3084
3102
  this.match(MalloyParser.COMMA);
3085
3103
  }
3086
3104
  }
3087
- this.state = 684;
3105
+ this.state = 691;
3088
3106
  this.exploreQueryDef();
3089
3107
  }
3090
3108
  }
3091
3109
  }
3092
- this.state = 689;
3110
+ this.state = 696;
3093
3111
  this._errHandler.sync(this);
3094
3112
  _alt = this.interpreter.adaptivePredict(this._input, 62, this._ctx);
3095
3113
  }
3096
- this.state = 691;
3114
+ this.state = 698;
3097
3115
  this._errHandler.sync(this);
3098
3116
  _la = this._input.LA(1);
3099
3117
  if (_la === MalloyParser.COMMA) {
3100
3118
  {
3101
- this.state = 690;
3119
+ this.state = 697;
3102
3120
  this.match(MalloyParser.COMMA);
3103
3121
  }
3104
3122
  }
@@ -3126,7 +3144,7 @@ class MalloyParser extends Parser_1.Parser {
3126
3144
  try {
3127
3145
  this.enterOuterAlt(_localctx, 1);
3128
3146
  {
3129
- this.state = 693;
3147
+ this.state = 700;
3130
3148
  this.id();
3131
3149
  }
3132
3150
  }
@@ -3153,25 +3171,25 @@ class MalloyParser extends Parser_1.Parser {
3153
3171
  try {
3154
3172
  this.enterOuterAlt(_localctx, 1);
3155
3173
  {
3156
- this.state = 698;
3174
+ this.state = 705;
3157
3175
  this._errHandler.sync(this);
3158
3176
  _la = this._input.LA(1);
3159
3177
  while (_la === MalloyParser.ANNOTATION) {
3160
3178
  {
3161
3179
  {
3162
- this.state = 695;
3180
+ this.state = 702;
3163
3181
  this.match(MalloyParser.ANNOTATION);
3164
3182
  }
3165
3183
  }
3166
- this.state = 700;
3184
+ this.state = 707;
3167
3185
  this._errHandler.sync(this);
3168
3186
  _la = this._input.LA(1);
3169
3187
  }
3170
- this.state = 701;
3188
+ this.state = 708;
3171
3189
  this.exploreQueryNameDef();
3172
- this.state = 702;
3190
+ this.state = 709;
3173
3191
  this.isDefine();
3174
- this.state = 703;
3192
+ this.state = 710;
3175
3193
  this.pipelineFromName();
3176
3194
  }
3177
3195
  }
@@ -3195,132 +3213,132 @@ class MalloyParser extends Parser_1.Parser {
3195
3213
  let _localctx = new QueryStatementContext(this._ctx, this.state);
3196
3214
  this.enterRule(_localctx, 128, MalloyParser.RULE_queryStatement);
3197
3215
  try {
3198
- this.state = 723;
3216
+ this.state = 730;
3199
3217
  this._errHandler.sync(this);
3200
3218
  switch (this.interpreter.adaptivePredict(this._input, 65, this._ctx)) {
3201
3219
  case 1:
3202
3220
  this.enterOuterAlt(_localctx, 1);
3203
3221
  {
3204
- this.state = 705;
3222
+ this.state = 712;
3205
3223
  this.groupByStatement();
3206
3224
  }
3207
3225
  break;
3208
3226
  case 2:
3209
3227
  this.enterOuterAlt(_localctx, 2);
3210
3228
  {
3211
- this.state = 706;
3229
+ this.state = 713;
3212
3230
  this.declareStatement();
3213
3231
  }
3214
3232
  break;
3215
3233
  case 3:
3216
3234
  this.enterOuterAlt(_localctx, 3);
3217
3235
  {
3218
- this.state = 707;
3236
+ this.state = 714;
3219
3237
  this.queryJoinStatement();
3220
3238
  }
3221
3239
  break;
3222
3240
  case 4:
3223
3241
  this.enterOuterAlt(_localctx, 4);
3224
3242
  {
3225
- this.state = 708;
3243
+ this.state = 715;
3226
3244
  this.queryExtend();
3227
3245
  }
3228
3246
  break;
3229
3247
  case 5:
3230
3248
  this.enterOuterAlt(_localctx, 5);
3231
3249
  {
3232
- this.state = 709;
3250
+ this.state = 716;
3233
3251
  this.projectStatement();
3234
3252
  }
3235
3253
  break;
3236
3254
  case 6:
3237
3255
  this.enterOuterAlt(_localctx, 6);
3238
3256
  {
3239
- this.state = 710;
3257
+ this.state = 717;
3240
3258
  this.indexStatement();
3241
3259
  }
3242
3260
  break;
3243
3261
  case 7:
3244
3262
  this.enterOuterAlt(_localctx, 7);
3245
3263
  {
3246
- this.state = 711;
3264
+ this.state = 718;
3247
3265
  this.aggregateStatement();
3248
3266
  }
3249
3267
  break;
3250
3268
  case 8:
3251
3269
  this.enterOuterAlt(_localctx, 8);
3252
3270
  {
3253
- this.state = 712;
3271
+ this.state = 719;
3254
3272
  this.calculateStatement();
3255
3273
  }
3256
3274
  break;
3257
3275
  case 9:
3258
3276
  this.enterOuterAlt(_localctx, 9);
3259
3277
  {
3260
- this.state = 713;
3278
+ this.state = 720;
3261
3279
  this.topStatement();
3262
3280
  }
3263
3281
  break;
3264
3282
  case 10:
3265
3283
  this.enterOuterAlt(_localctx, 10);
3266
3284
  {
3267
- this.state = 714;
3285
+ this.state = 721;
3268
3286
  this.limitStatement();
3269
3287
  }
3270
3288
  break;
3271
3289
  case 11:
3272
3290
  this.enterOuterAlt(_localctx, 11);
3273
3291
  {
3274
- this.state = 715;
3292
+ this.state = 722;
3275
3293
  this.orderByStatement();
3276
3294
  }
3277
3295
  break;
3278
3296
  case 12:
3279
3297
  this.enterOuterAlt(_localctx, 12);
3280
3298
  {
3281
- this.state = 716;
3299
+ this.state = 723;
3282
3300
  this.whereStatement();
3283
3301
  }
3284
3302
  break;
3285
3303
  case 13:
3286
3304
  this.enterOuterAlt(_localctx, 13);
3287
3305
  {
3288
- this.state = 717;
3306
+ this.state = 724;
3289
3307
  this.havingStatement();
3290
3308
  }
3291
3309
  break;
3292
3310
  case 14:
3293
3311
  this.enterOuterAlt(_localctx, 14);
3294
3312
  {
3295
- this.state = 718;
3313
+ this.state = 725;
3296
3314
  this.nestStatement();
3297
3315
  }
3298
3316
  break;
3299
3317
  case 15:
3300
3318
  this.enterOuterAlt(_localctx, 15);
3301
3319
  {
3302
- this.state = 719;
3320
+ this.state = 726;
3303
3321
  this.sampleStatement();
3304
3322
  }
3305
3323
  break;
3306
3324
  case 16:
3307
3325
  this.enterOuterAlt(_localctx, 16);
3308
3326
  {
3309
- this.state = 720;
3327
+ this.state = 727;
3310
3328
  this.timezoneStatement();
3311
3329
  }
3312
3330
  break;
3313
3331
  case 17:
3314
3332
  this.enterOuterAlt(_localctx, 17);
3315
3333
  {
3316
- this.state = 721;
3334
+ this.state = 728;
3317
3335
  this.queryAnnotation();
3318
3336
  }
3319
3337
  break;
3320
3338
  case 18:
3321
3339
  this.enterOuterAlt(_localctx, 18);
3322
3340
  {
3323
- this.state = 722;
3341
+ this.state = 729;
3324
3342
  this.ignoredModelAnnotations();
3325
3343
  }
3326
3344
  break;
@@ -3348,7 +3366,7 @@ class MalloyParser extends Parser_1.Parser {
3348
3366
  try {
3349
3367
  this.enterOuterAlt(_localctx, 1);
3350
3368
  {
3351
- this.state = 725;
3369
+ this.state = 732;
3352
3370
  this.joinStatement();
3353
3371
  }
3354
3372
  }
@@ -3374,11 +3392,11 @@ class MalloyParser extends Parser_1.Parser {
3374
3392
  try {
3375
3393
  this.enterOuterAlt(_localctx, 1);
3376
3394
  {
3377
- this.state = 727;
3395
+ this.state = 734;
3378
3396
  this.tags();
3379
- this.state = 728;
3397
+ this.state = 735;
3380
3398
  this.match(MalloyParser.GROUP_BY);
3381
- this.state = 729;
3399
+ this.state = 736;
3382
3400
  this.queryFieldList();
3383
3401
  }
3384
3402
  }
@@ -3406,39 +3424,39 @@ class MalloyParser extends Parser_1.Parser {
3406
3424
  let _alt;
3407
3425
  this.enterOuterAlt(_localctx, 1);
3408
3426
  {
3409
- this.state = 731;
3410
- this.queryFieldEntry();
3411
3427
  this.state = 738;
3428
+ this.queryFieldEntry();
3429
+ this.state = 745;
3412
3430
  this._errHandler.sync(this);
3413
3431
  _alt = this.interpreter.adaptivePredict(this._input, 67, this._ctx);
3414
3432
  while (_alt !== 2 && _alt !== ATN_1.ATN.INVALID_ALT_NUMBER) {
3415
3433
  if (_alt === 1) {
3416
3434
  {
3417
3435
  {
3418
- this.state = 733;
3436
+ this.state = 740;
3419
3437
  this._errHandler.sync(this);
3420
3438
  _la = this._input.LA(1);
3421
3439
  if (_la === MalloyParser.COMMA) {
3422
3440
  {
3423
- this.state = 732;
3441
+ this.state = 739;
3424
3442
  this.match(MalloyParser.COMMA);
3425
3443
  }
3426
3444
  }
3427
- this.state = 735;
3445
+ this.state = 742;
3428
3446
  this.queryFieldEntry();
3429
3447
  }
3430
3448
  }
3431
3449
  }
3432
- this.state = 740;
3450
+ this.state = 747;
3433
3451
  this._errHandler.sync(this);
3434
3452
  _alt = this.interpreter.adaptivePredict(this._input, 67, this._ctx);
3435
3453
  }
3436
- this.state = 742;
3454
+ this.state = 749;
3437
3455
  this._errHandler.sync(this);
3438
3456
  _la = this._input.LA(1);
3439
3457
  if (_la === MalloyParser.COMMA) {
3440
3458
  {
3441
- this.state = 741;
3459
+ this.state = 748;
3442
3460
  this.match(MalloyParser.COMMA);
3443
3461
  }
3444
3462
  }
@@ -3464,20 +3482,20 @@ class MalloyParser extends Parser_1.Parser {
3464
3482
  let _localctx = new QueryFieldEntryContext(this._ctx, this.state);
3465
3483
  this.enterRule(_localctx, 136, MalloyParser.RULE_queryFieldEntry);
3466
3484
  try {
3467
- this.state = 746;
3485
+ this.state = 753;
3468
3486
  this._errHandler.sync(this);
3469
3487
  switch (this.interpreter.adaptivePredict(this._input, 69, this._ctx)) {
3470
3488
  case 1:
3471
3489
  this.enterOuterAlt(_localctx, 1);
3472
3490
  {
3473
- this.state = 744;
3491
+ this.state = 751;
3474
3492
  this.taggedRef();
3475
3493
  }
3476
3494
  break;
3477
3495
  case 2:
3478
3496
  this.enterOuterAlt(_localctx, 2);
3479
3497
  {
3480
- this.state = 745;
3498
+ this.state = 752;
3481
3499
  this.fieldDef();
3482
3500
  }
3483
3501
  break;
@@ -3505,11 +3523,11 @@ class MalloyParser extends Parser_1.Parser {
3505
3523
  try {
3506
3524
  this.enterOuterAlt(_localctx, 1);
3507
3525
  {
3508
- this.state = 748;
3526
+ this.state = 755;
3509
3527
  this.tags();
3510
- this.state = 749;
3528
+ this.state = 756;
3511
3529
  this.match(MalloyParser.NEST);
3512
- this.state = 750;
3530
+ this.state = 757;
3513
3531
  this.nestedQueryList();
3514
3532
  }
3515
3533
  }
@@ -3537,39 +3555,39 @@ class MalloyParser extends Parser_1.Parser {
3537
3555
  let _alt;
3538
3556
  this.enterOuterAlt(_localctx, 1);
3539
3557
  {
3540
- this.state = 752;
3541
- this.nestEntry();
3542
3558
  this.state = 759;
3559
+ this.nestEntry();
3560
+ this.state = 766;
3543
3561
  this._errHandler.sync(this);
3544
3562
  _alt = this.interpreter.adaptivePredict(this._input, 71, this._ctx);
3545
3563
  while (_alt !== 2 && _alt !== ATN_1.ATN.INVALID_ALT_NUMBER) {
3546
3564
  if (_alt === 1) {
3547
3565
  {
3548
3566
  {
3549
- this.state = 754;
3567
+ this.state = 761;
3550
3568
  this._errHandler.sync(this);
3551
3569
  _la = this._input.LA(1);
3552
3570
  if (_la === MalloyParser.COMMA) {
3553
3571
  {
3554
- this.state = 753;
3572
+ this.state = 760;
3555
3573
  this.match(MalloyParser.COMMA);
3556
3574
  }
3557
3575
  }
3558
- this.state = 756;
3576
+ this.state = 763;
3559
3577
  this.nestEntry();
3560
3578
  }
3561
3579
  }
3562
3580
  }
3563
- this.state = 761;
3581
+ this.state = 768;
3564
3582
  this._errHandler.sync(this);
3565
3583
  _alt = this.interpreter.adaptivePredict(this._input, 71, this._ctx);
3566
3584
  }
3567
- this.state = 763;
3585
+ this.state = 770;
3568
3586
  this._errHandler.sync(this);
3569
3587
  _la = this._input.LA(1);
3570
3588
  if (_la === MalloyParser.COMMA) {
3571
3589
  {
3572
- this.state = 762;
3590
+ this.state = 769;
3573
3591
  this.match(MalloyParser.COMMA);
3574
3592
  }
3575
3593
  }
@@ -3596,32 +3614,32 @@ class MalloyParser extends Parser_1.Parser {
3596
3614
  this.enterRule(_localctx, 142, MalloyParser.RULE_nestEntry);
3597
3615
  let _la;
3598
3616
  try {
3599
- this.state = 778;
3617
+ this.state = 785;
3600
3618
  this._errHandler.sync(this);
3601
3619
  switch (this.interpreter.adaptivePredict(this._input, 75, this._ctx)) {
3602
3620
  case 1:
3603
3621
  _localctx = new NestExistingContext(_localctx);
3604
3622
  this.enterOuterAlt(_localctx, 1);
3605
3623
  {
3606
- this.state = 765;
3624
+ this.state = 772;
3607
3625
  this.tags();
3608
- this.state = 766;
3626
+ this.state = 773;
3609
3627
  this.queryName();
3610
- this.state = 771;
3628
+ this.state = 778;
3611
3629
  this._errHandler.sync(this);
3612
3630
  switch (this.interpreter.adaptivePredict(this._input, 74, this._ctx)) {
3613
3631
  case 1:
3614
3632
  {
3615
- this.state = 768;
3633
+ this.state = 775;
3616
3634
  this._errHandler.sync(this);
3617
3635
  _la = this._input.LA(1);
3618
3636
  if (_la === MalloyParser.PLUS) {
3619
3637
  {
3620
- this.state = 767;
3638
+ this.state = 774;
3621
3639
  this.refineOperator();
3622
3640
  }
3623
3641
  }
3624
- this.state = 770;
3642
+ this.state = 777;
3625
3643
  this.queryProperties();
3626
3644
  }
3627
3645
  break;
@@ -3632,13 +3650,13 @@ class MalloyParser extends Parser_1.Parser {
3632
3650
  _localctx = new NestDefContext(_localctx);
3633
3651
  this.enterOuterAlt(_localctx, 2);
3634
3652
  {
3635
- this.state = 773;
3653
+ this.state = 780;
3636
3654
  this.tags();
3637
- this.state = 774;
3655
+ this.state = 781;
3638
3656
  this.queryName();
3639
- this.state = 775;
3657
+ this.state = 782;
3640
3658
  this.isDefine();
3641
- this.state = 776;
3659
+ this.state = 783;
3642
3660
  this.pipelineFromName();
3643
3661
  }
3644
3662
  break;
@@ -3666,11 +3684,11 @@ class MalloyParser extends Parser_1.Parser {
3666
3684
  try {
3667
3685
  this.enterOuterAlt(_localctx, 1);
3668
3686
  {
3669
- this.state = 780;
3687
+ this.state = 787;
3670
3688
  this.tags();
3671
- this.state = 781;
3689
+ this.state = 788;
3672
3690
  this.match(MalloyParser.AGGREGATE);
3673
- this.state = 782;
3691
+ this.state = 789;
3674
3692
  this.queryFieldList();
3675
3693
  }
3676
3694
  }
@@ -3696,11 +3714,11 @@ class MalloyParser extends Parser_1.Parser {
3696
3714
  try {
3697
3715
  this.enterOuterAlt(_localctx, 1);
3698
3716
  {
3699
- this.state = 784;
3717
+ this.state = 791;
3700
3718
  this.tags();
3701
- this.state = 785;
3719
+ this.state = 792;
3702
3720
  this.match(MalloyParser.CALCULATE);
3703
- this.state = 786;
3721
+ this.state = 793;
3704
3722
  this.queryFieldList();
3705
3723
  }
3706
3724
  }
@@ -3726,11 +3744,11 @@ class MalloyParser extends Parser_1.Parser {
3726
3744
  try {
3727
3745
  this.enterOuterAlt(_localctx, 1);
3728
3746
  {
3729
- this.state = 788;
3747
+ this.state = 795;
3730
3748
  this.tags();
3731
- this.state = 789;
3749
+ this.state = 796;
3732
3750
  this.match(MalloyParser.PROJECT);
3733
- this.state = 790;
3751
+ this.state = 797;
3734
3752
  this.fieldCollection();
3735
3753
  }
3736
3754
  }
@@ -3756,9 +3774,9 @@ class MalloyParser extends Parser_1.Parser {
3756
3774
  try {
3757
3775
  this.enterOuterAlt(_localctx, 1);
3758
3776
  {
3759
- this.state = 792;
3777
+ this.state = 799;
3760
3778
  this.match(MalloyParser.ORDER_BY);
3761
- this.state = 793;
3779
+ this.state = 800;
3762
3780
  this.ordering();
3763
3781
  }
3764
3782
  }
@@ -3786,39 +3804,39 @@ class MalloyParser extends Parser_1.Parser {
3786
3804
  let _alt;
3787
3805
  this.enterOuterAlt(_localctx, 1);
3788
3806
  {
3789
- this.state = 795;
3790
- this.orderBySpec();
3791
3807
  this.state = 802;
3808
+ this.orderBySpec();
3809
+ this.state = 809;
3792
3810
  this._errHandler.sync(this);
3793
3811
  _alt = this.interpreter.adaptivePredict(this._input, 77, this._ctx);
3794
3812
  while (_alt !== 2 && _alt !== ATN_1.ATN.INVALID_ALT_NUMBER) {
3795
3813
  if (_alt === 1) {
3796
3814
  {
3797
3815
  {
3798
- this.state = 797;
3816
+ this.state = 804;
3799
3817
  this._errHandler.sync(this);
3800
3818
  _la = this._input.LA(1);
3801
3819
  if (_la === MalloyParser.COMMA) {
3802
3820
  {
3803
- this.state = 796;
3821
+ this.state = 803;
3804
3822
  this.match(MalloyParser.COMMA);
3805
3823
  }
3806
3824
  }
3807
- this.state = 799;
3825
+ this.state = 806;
3808
3826
  this.orderBySpec();
3809
3827
  }
3810
3828
  }
3811
3829
  }
3812
- this.state = 804;
3830
+ this.state = 811;
3813
3831
  this._errHandler.sync(this);
3814
3832
  _alt = this.interpreter.adaptivePredict(this._input, 77, this._ctx);
3815
3833
  }
3816
- this.state = 806;
3834
+ this.state = 813;
3817
3835
  this._errHandler.sync(this);
3818
3836
  _la = this._input.LA(1);
3819
3837
  if (_la === MalloyParser.COMMA) {
3820
3838
  {
3821
- this.state = 805;
3839
+ this.state = 812;
3822
3840
  this.match(MalloyParser.COMMA);
3823
3841
  }
3824
3842
  }
@@ -3847,31 +3865,31 @@ class MalloyParser extends Parser_1.Parser {
3847
3865
  try {
3848
3866
  this.enterOuterAlt(_localctx, 1);
3849
3867
  {
3850
- this.state = 810;
3868
+ this.state = 817;
3851
3869
  this._errHandler.sync(this);
3852
3870
  switch (this._input.LA(1)) {
3853
3871
  case MalloyParser.INTEGER_LITERAL:
3854
3872
  {
3855
- this.state = 808;
3873
+ this.state = 815;
3856
3874
  this.match(MalloyParser.INTEGER_LITERAL);
3857
3875
  }
3858
3876
  break;
3859
3877
  case MalloyParser.IDENTIFIER:
3860
3878
  case MalloyParser.OBJECT_NAME_LITERAL:
3861
3879
  {
3862
- this.state = 809;
3880
+ this.state = 816;
3863
3881
  this.fieldName();
3864
3882
  }
3865
3883
  break;
3866
3884
  default:
3867
3885
  throw new NoViableAltException_1.NoViableAltException(this);
3868
3886
  }
3869
- this.state = 813;
3887
+ this.state = 820;
3870
3888
  this._errHandler.sync(this);
3871
3889
  _la = this._input.LA(1);
3872
3890
  if (_la === MalloyParser.ASC || _la === MalloyParser.DESC) {
3873
3891
  {
3874
- this.state = 812;
3892
+ this.state = 819;
3875
3893
  _la = this._input.LA(1);
3876
3894
  if (!(_la === MalloyParser.ASC || _la === MalloyParser.DESC)) {
3877
3895
  this._errHandler.recoverInline(this);
@@ -3909,9 +3927,9 @@ class MalloyParser extends Parser_1.Parser {
3909
3927
  try {
3910
3928
  this.enterOuterAlt(_localctx, 1);
3911
3929
  {
3912
- this.state = 815;
3930
+ this.state = 822;
3913
3931
  this.match(MalloyParser.LIMIT);
3914
- this.state = 816;
3932
+ this.state = 823;
3915
3933
  this.match(MalloyParser.INTEGER_LITERAL);
3916
3934
  }
3917
3935
  }
@@ -3935,24 +3953,24 @@ class MalloyParser extends Parser_1.Parser {
3935
3953
  let _localctx = new BySpecContext(this._ctx, this.state);
3936
3954
  this.enterRule(_localctx, 158, MalloyParser.RULE_bySpec);
3937
3955
  try {
3938
- this.state = 822;
3956
+ this.state = 829;
3939
3957
  this._errHandler.sync(this);
3940
3958
  switch (this.interpreter.adaptivePredict(this._input, 81, this._ctx)) {
3941
3959
  case 1:
3942
3960
  this.enterOuterAlt(_localctx, 1);
3943
3961
  {
3944
- this.state = 818;
3962
+ this.state = 825;
3945
3963
  this.match(MalloyParser.BY);
3946
- this.state = 819;
3964
+ this.state = 826;
3947
3965
  this.fieldName();
3948
3966
  }
3949
3967
  break;
3950
3968
  case 2:
3951
3969
  this.enterOuterAlt(_localctx, 2);
3952
3970
  {
3953
- this.state = 820;
3971
+ this.state = 827;
3954
3972
  this.match(MalloyParser.BY);
3955
- this.state = 821;
3973
+ this.state = 828;
3956
3974
  this.fieldExpr(0);
3957
3975
  }
3958
3976
  break;
@@ -3981,16 +3999,16 @@ class MalloyParser extends Parser_1.Parser {
3981
3999
  try {
3982
4000
  this.enterOuterAlt(_localctx, 1);
3983
4001
  {
3984
- this.state = 824;
4002
+ this.state = 831;
3985
4003
  this.match(MalloyParser.TOP);
3986
- this.state = 825;
4004
+ this.state = 832;
3987
4005
  this.match(MalloyParser.INTEGER_LITERAL);
3988
- this.state = 827;
4006
+ this.state = 834;
3989
4007
  this._errHandler.sync(this);
3990
4008
  _la = this._input.LA(1);
3991
4009
  if (_la === MalloyParser.BY) {
3992
4010
  {
3993
- this.state = 826;
4011
+ this.state = 833;
3994
4012
  this.bySpec();
3995
4013
  }
3996
4014
  }
@@ -4017,23 +4035,23 @@ class MalloyParser extends Parser_1.Parser {
4017
4035
  this.enterRule(_localctx, 162, MalloyParser.RULE_indexElement);
4018
4036
  let _la;
4019
4037
  try {
4020
- this.state = 836;
4038
+ this.state = 843;
4021
4039
  this._errHandler.sync(this);
4022
4040
  switch (this._input.LA(1)) {
4023
4041
  case MalloyParser.IDENTIFIER:
4024
4042
  case MalloyParser.OBJECT_NAME_LITERAL:
4025
4043
  this.enterOuterAlt(_localctx, 1);
4026
4044
  {
4027
- this.state = 829;
4045
+ this.state = 836;
4028
4046
  this.fieldPath();
4029
- this.state = 832;
4047
+ this.state = 839;
4030
4048
  this._errHandler.sync(this);
4031
4049
  _la = this._input.LA(1);
4032
4050
  if (_la === MalloyParser.DOT) {
4033
4051
  {
4034
- this.state = 830;
4052
+ this.state = 837;
4035
4053
  this.match(MalloyParser.DOT);
4036
- this.state = 831;
4054
+ this.state = 838;
4037
4055
  this.match(MalloyParser.STAR);
4038
4056
  }
4039
4057
  }
@@ -4042,14 +4060,14 @@ class MalloyParser extends Parser_1.Parser {
4042
4060
  case MalloyParser.STAR:
4043
4061
  this.enterOuterAlt(_localctx, 2);
4044
4062
  {
4045
- this.state = 834;
4063
+ this.state = 841;
4046
4064
  this.match(MalloyParser.STAR);
4047
4065
  }
4048
4066
  break;
4049
4067
  case MalloyParser.STARSTAR:
4050
4068
  this.enterOuterAlt(_localctx, 3);
4051
4069
  {
4052
- this.state = 835;
4070
+ this.state = 842;
4053
4071
  this.match(MalloyParser.STARSTAR);
4054
4072
  }
4055
4073
  break;
@@ -4081,30 +4099,30 @@ class MalloyParser extends Parser_1.Parser {
4081
4099
  let _alt;
4082
4100
  this.enterOuterAlt(_localctx, 1);
4083
4101
  {
4084
- this.state = 838;
4085
- this.indexElement();
4086
4102
  this.state = 845;
4103
+ this.indexElement();
4104
+ this.state = 852;
4087
4105
  this._errHandler.sync(this);
4088
4106
  _alt = this.interpreter.adaptivePredict(this._input, 86, this._ctx);
4089
4107
  while (_alt !== 2 && _alt !== ATN_1.ATN.INVALID_ALT_NUMBER) {
4090
4108
  if (_alt === 1) {
4091
4109
  {
4092
4110
  {
4093
- this.state = 840;
4111
+ this.state = 847;
4094
4112
  this._errHandler.sync(this);
4095
4113
  _la = this._input.LA(1);
4096
4114
  if (_la === MalloyParser.COMMA) {
4097
4115
  {
4098
- this.state = 839;
4116
+ this.state = 846;
4099
4117
  this.match(MalloyParser.COMMA);
4100
4118
  }
4101
4119
  }
4102
- this.state = 842;
4120
+ this.state = 849;
4103
4121
  this.indexElement();
4104
4122
  }
4105
4123
  }
4106
4124
  }
4107
- this.state = 847;
4125
+ this.state = 854;
4108
4126
  this._errHandler.sync(this);
4109
4127
  _alt = this.interpreter.adaptivePredict(this._input, 86, this._ctx);
4110
4128
  }
@@ -4133,18 +4151,18 @@ class MalloyParser extends Parser_1.Parser {
4133
4151
  try {
4134
4152
  this.enterOuterAlt(_localctx, 1);
4135
4153
  {
4136
- this.state = 848;
4154
+ this.state = 855;
4137
4155
  this.match(MalloyParser.INDEX);
4138
- this.state = 849;
4156
+ this.state = 856;
4139
4157
  this.indexFields();
4140
- this.state = 852;
4158
+ this.state = 859;
4141
4159
  this._errHandler.sync(this);
4142
4160
  _la = this._input.LA(1);
4143
4161
  if (_la === MalloyParser.BY) {
4144
4162
  {
4145
- this.state = 850;
4163
+ this.state = 857;
4146
4164
  this.match(MalloyParser.BY);
4147
- this.state = 851;
4165
+ this.state = 858;
4148
4166
  this.fieldName();
4149
4167
  }
4150
4168
  }
@@ -4172,9 +4190,9 @@ class MalloyParser extends Parser_1.Parser {
4172
4190
  try {
4173
4191
  this.enterOuterAlt(_localctx, 1);
4174
4192
  {
4175
- this.state = 854;
4193
+ this.state = 861;
4176
4194
  this.match(MalloyParser.SAMPLE);
4177
- this.state = 855;
4195
+ this.state = 862;
4178
4196
  this.sampleSpec();
4179
4197
  }
4180
4198
  }
@@ -4200,9 +4218,9 @@ class MalloyParser extends Parser_1.Parser {
4200
4218
  try {
4201
4219
  this.enterOuterAlt(_localctx, 1);
4202
4220
  {
4203
- this.state = 857;
4221
+ this.state = 864;
4204
4222
  this.match(MalloyParser.TIMEZONE);
4205
- this.state = 858;
4223
+ this.state = 865;
4206
4224
  this.timezoneName();
4207
4225
  }
4208
4226
  }
@@ -4228,7 +4246,7 @@ class MalloyParser extends Parser_1.Parser {
4228
4246
  try {
4229
4247
  this.enterOuterAlt(_localctx, 1);
4230
4248
  {
4231
- this.state = 860;
4249
+ this.state = 867;
4232
4250
  this.match(MalloyParser.STRING_LITERAL);
4233
4251
  }
4234
4252
  }
@@ -4254,7 +4272,7 @@ class MalloyParser extends Parser_1.Parser {
4254
4272
  try {
4255
4273
  this.enterOuterAlt(_localctx, 1);
4256
4274
  {
4257
- this.state = 862;
4275
+ this.state = 869;
4258
4276
  this.match(MalloyParser.ANNOTATION);
4259
4277
  }
4260
4278
  }
@@ -4281,7 +4299,7 @@ class MalloyParser extends Parser_1.Parser {
4281
4299
  try {
4282
4300
  this.enterOuterAlt(_localctx, 1);
4283
4301
  {
4284
- this.state = 864;
4302
+ this.state = 871;
4285
4303
  _la = this._input.LA(1);
4286
4304
  if (!(_la === MalloyParser.FALSE || _la === MalloyParser.TRUE || _la === MalloyParser.PERCENT_LITERAL || _la === MalloyParser.INTEGER_LITERAL)) {
4287
4305
  this._errHandler.recoverInline(this);
@@ -4318,7 +4336,7 @@ class MalloyParser extends Parser_1.Parser {
4318
4336
  try {
4319
4337
  this.enterOuterAlt(_localctx, 1);
4320
4338
  {
4321
- this.state = 866;
4339
+ this.state = 873;
4322
4340
  _la = this._input.LA(1);
4323
4341
  if (!(((((_la - 37)) & ~0x1F) === 0 && ((1 << (_la - 37)) & ((1 << (MalloyParser.AVG - 37)) | (1 << (MalloyParser.COUNT - 37)) | (1 << (MalloyParser.MAX - 37)) | (1 << (MalloyParser.MIN - 37)))) !== 0) || _la === MalloyParser.SUM)) {
4324
4342
  this._errHandler.recoverInline(this);
@@ -4355,7 +4373,7 @@ class MalloyParser extends Parser_1.Parser {
4355
4373
  try {
4356
4374
  this.enterOuterAlt(_localctx, 1);
4357
4375
  {
4358
- this.state = 868;
4376
+ this.state = 875;
4359
4377
  _la = this._input.LA(1);
4360
4378
  if (!(((((_la - 38)) & ~0x1F) === 0 && ((1 << (_la - 38)) & ((1 << (MalloyParser.BOOLEAN - 38)) | (1 << (MalloyParser.DATE - 38)) | (1 << (MalloyParser.NUMBER - 38)))) !== 0) || _la === MalloyParser.STRING || _la === MalloyParser.TIMESTAMP)) {
4361
4379
  this._errHandler.recoverInline(this);
@@ -4392,9 +4410,9 @@ class MalloyParser extends Parser_1.Parser {
4392
4410
  try {
4393
4411
  this.enterOuterAlt(_localctx, 1);
4394
4412
  {
4395
- this.state = 870;
4413
+ this.state = 877;
4396
4414
  _la = this._input.LA(1);
4397
- if (!(((((_la - 108)) & ~0x1F) === 0 && ((1 << (_la - 108)) & ((1 << (MalloyParser.LT - 108)) | (1 << (MalloyParser.GT - 108)) | (1 << (MalloyParser.EQ - 108)) | (1 << (MalloyParser.NE - 108)) | (1 << (MalloyParser.LTE - 108)) | (1 << (MalloyParser.GTE - 108)) | (1 << (MalloyParser.NOT_MATCH - 108)) | (1 << (MalloyParser.MATCH - 108)))) !== 0))) {
4415
+ if (!(((((_la - 109)) & ~0x1F) === 0 && ((1 << (_la - 109)) & ((1 << (MalloyParser.LT - 109)) | (1 << (MalloyParser.GT - 109)) | (1 << (MalloyParser.EQ - 109)) | (1 << (MalloyParser.NE - 109)) | (1 << (MalloyParser.LTE - 109)) | (1 << (MalloyParser.GTE - 109)) | (1 << (MalloyParser.NOT_MATCH - 109)) | (1 << (MalloyParser.MATCH - 109)))) !== 0))) {
4398
4416
  this._errHandler.recoverInline(this);
4399
4417
  }
4400
4418
  else {
@@ -4427,14 +4445,14 @@ class MalloyParser extends Parser_1.Parser {
4427
4445
  this.enterRule(_localctx, 184, MalloyParser.RULE_literal);
4428
4446
  let _la;
4429
4447
  try {
4430
- this.state = 879;
4448
+ this.state = 886;
4431
4449
  this._errHandler.sync(this);
4432
4450
  switch (this._input.LA(1)) {
4433
4451
  case MalloyParser.STRING_LITERAL:
4434
4452
  _localctx = new ExprStringContext(_localctx);
4435
4453
  this.enterOuterAlt(_localctx, 1);
4436
4454
  {
4437
- this.state = 872;
4455
+ this.state = 879;
4438
4456
  this.match(MalloyParser.STRING_LITERAL);
4439
4457
  }
4440
4458
  break;
@@ -4443,7 +4461,7 @@ class MalloyParser extends Parser_1.Parser {
4443
4461
  _localctx = new ExprNumberContext(_localctx);
4444
4462
  this.enterOuterAlt(_localctx, 2);
4445
4463
  {
4446
- this.state = 873;
4464
+ this.state = 880;
4447
4465
  _la = this._input.LA(1);
4448
4466
  if (!(_la === MalloyParser.INTEGER_LITERAL || _la === MalloyParser.NUMERIC_LITERAL)) {
4449
4467
  this._errHandler.recoverInline(this);
@@ -4467,7 +4485,7 @@ class MalloyParser extends Parser_1.Parser {
4467
4485
  _localctx = new ExprTimeContext(_localctx);
4468
4486
  this.enterOuterAlt(_localctx, 3);
4469
4487
  {
4470
- this.state = 874;
4488
+ this.state = 881;
4471
4489
  this.dateLiteral();
4472
4490
  }
4473
4491
  break;
@@ -4475,7 +4493,7 @@ class MalloyParser extends Parser_1.Parser {
4475
4493
  _localctx = new ExprNULLContext(_localctx);
4476
4494
  this.enterOuterAlt(_localctx, 4);
4477
4495
  {
4478
- this.state = 875;
4496
+ this.state = 882;
4479
4497
  this.match(MalloyParser.NULL);
4480
4498
  }
4481
4499
  break;
@@ -4484,7 +4502,7 @@ class MalloyParser extends Parser_1.Parser {
4484
4502
  _localctx = new ExprBoolContext(_localctx);
4485
4503
  this.enterOuterAlt(_localctx, 5);
4486
4504
  {
4487
- this.state = 876;
4505
+ this.state = 883;
4488
4506
  _la = this._input.LA(1);
4489
4507
  if (!(_la === MalloyParser.FALSE || _la === MalloyParser.TRUE)) {
4490
4508
  this._errHandler.recoverInline(this);
@@ -4502,7 +4520,7 @@ class MalloyParser extends Parser_1.Parser {
4502
4520
  _localctx = new ExprRegexContext(_localctx);
4503
4521
  this.enterOuterAlt(_localctx, 6);
4504
4522
  {
4505
- this.state = 877;
4523
+ this.state = 884;
4506
4524
  this.match(MalloyParser.HACKY_REGEX);
4507
4525
  }
4508
4526
  break;
@@ -4510,7 +4528,7 @@ class MalloyParser extends Parser_1.Parser {
4510
4528
  _localctx = new ExprNowContext(_localctx);
4511
4529
  this.enterOuterAlt(_localctx, 7);
4512
4530
  {
4513
- this.state = 878;
4531
+ this.state = 885;
4514
4532
  this.match(MalloyParser.NOW);
4515
4533
  }
4516
4534
  break;
@@ -4538,14 +4556,14 @@ class MalloyParser extends Parser_1.Parser {
4538
4556
  let _localctx = new DateLiteralContext(this._ctx, this.state);
4539
4557
  this.enterRule(_localctx, 186, MalloyParser.RULE_dateLiteral);
4540
4558
  try {
4541
- this.state = 888;
4559
+ this.state = 895;
4542
4560
  this._errHandler.sync(this);
4543
4561
  switch (this._input.LA(1)) {
4544
4562
  case MalloyParser.LITERAL_TIMESTAMP:
4545
4563
  _localctx = new LiteralTimestampContext(_localctx);
4546
4564
  this.enterOuterAlt(_localctx, 1);
4547
4565
  {
4548
- this.state = 881;
4566
+ this.state = 888;
4549
4567
  this.match(MalloyParser.LITERAL_TIMESTAMP);
4550
4568
  }
4551
4569
  break;
@@ -4553,7 +4571,7 @@ class MalloyParser extends Parser_1.Parser {
4553
4571
  _localctx = new LiteralHourContext(_localctx);
4554
4572
  this.enterOuterAlt(_localctx, 2);
4555
4573
  {
4556
- this.state = 882;
4574
+ this.state = 889;
4557
4575
  this.match(MalloyParser.LITERAL_HOUR);
4558
4576
  }
4559
4577
  break;
@@ -4561,7 +4579,7 @@ class MalloyParser extends Parser_1.Parser {
4561
4579
  _localctx = new LiteralDayContext(_localctx);
4562
4580
  this.enterOuterAlt(_localctx, 3);
4563
4581
  {
4564
- this.state = 883;
4582
+ this.state = 890;
4565
4583
  this.match(MalloyParser.LITERAL_DAY);
4566
4584
  }
4567
4585
  break;
@@ -4569,7 +4587,7 @@ class MalloyParser extends Parser_1.Parser {
4569
4587
  _localctx = new LiteralWeekContext(_localctx);
4570
4588
  this.enterOuterAlt(_localctx, 4);
4571
4589
  {
4572
- this.state = 884;
4590
+ this.state = 891;
4573
4591
  this.match(MalloyParser.LITERAL_WEEK);
4574
4592
  }
4575
4593
  break;
@@ -4577,7 +4595,7 @@ class MalloyParser extends Parser_1.Parser {
4577
4595
  _localctx = new LiteralMonthContext(_localctx);
4578
4596
  this.enterOuterAlt(_localctx, 5);
4579
4597
  {
4580
- this.state = 885;
4598
+ this.state = 892;
4581
4599
  this.match(MalloyParser.LITERAL_MONTH);
4582
4600
  }
4583
4601
  break;
@@ -4585,7 +4603,7 @@ class MalloyParser extends Parser_1.Parser {
4585
4603
  _localctx = new LiteralQuarterContext(_localctx);
4586
4604
  this.enterOuterAlt(_localctx, 6);
4587
4605
  {
4588
- this.state = 886;
4606
+ this.state = 893;
4589
4607
  this.match(MalloyParser.LITERAL_QUARTER);
4590
4608
  }
4591
4609
  break;
@@ -4593,7 +4611,7 @@ class MalloyParser extends Parser_1.Parser {
4593
4611
  _localctx = new LiteralYearContext(_localctx);
4594
4612
  this.enterOuterAlt(_localctx, 7);
4595
4613
  {
4596
- this.state = 887;
4614
+ this.state = 894;
4597
4615
  this.match(MalloyParser.LITERAL_YEAR);
4598
4616
  }
4599
4617
  break;
@@ -4623,7 +4641,7 @@ class MalloyParser extends Parser_1.Parser {
4623
4641
  try {
4624
4642
  this.enterOuterAlt(_localctx, 1);
4625
4643
  {
4626
- this.state = 890;
4644
+ this.state = 897;
4627
4645
  this.match(MalloyParser.STRING_LITERAL);
4628
4646
  }
4629
4647
  }
@@ -4649,7 +4667,7 @@ class MalloyParser extends Parser_1.Parser {
4649
4667
  try {
4650
4668
  this.enterOuterAlt(_localctx, 1);
4651
4669
  {
4652
- this.state = 892;
4670
+ this.state = 899;
4653
4671
  this.match(MalloyParser.STRING_LITERAL);
4654
4672
  }
4655
4673
  }
@@ -4676,7 +4694,7 @@ class MalloyParser extends Parser_1.Parser {
4676
4694
  try {
4677
4695
  this.enterOuterAlt(_localctx, 1);
4678
4696
  {
4679
- this.state = 894;
4697
+ this.state = 901;
4680
4698
  _la = this._input.LA(1);
4681
4699
  if (!(_la === MalloyParser.IDENTIFIER || _la === MalloyParser.OBJECT_NAME_LITERAL)) {
4682
4700
  this._errHandler.recoverInline(this);
@@ -4713,7 +4731,7 @@ class MalloyParser extends Parser_1.Parser {
4713
4731
  try {
4714
4732
  this.enterOuterAlt(_localctx, 1);
4715
4733
  {
4716
- this.state = 896;
4734
+ this.state = 903;
4717
4735
  _la = this._input.LA(1);
4718
4736
  if (!(((((_la - 45)) & ~0x1F) === 0 && ((1 << (_la - 45)) & ((1 << (MalloyParser.DAY - 45)) | (1 << (MalloyParser.HOUR - 45)) | (1 << (MalloyParser.MINUTE - 45)) | (1 << (MalloyParser.MONTH - 45)) | (1 << (MalloyParser.QUARTER - 45)) | (1 << (MalloyParser.SECOND - 45)))) !== 0) || _la === MalloyParser.WEEK || _la === MalloyParser.YEAR)) {
4719
4737
  this._errHandler.recoverInline(this);
@@ -4750,7 +4768,7 @@ class MalloyParser extends Parser_1.Parser {
4750
4768
  try {
4751
4769
  this.enterOuterAlt(_localctx, 1);
4752
4770
  {
4753
- this.state = 898;
4771
+ this.state = 905;
4754
4772
  _la = this._input.LA(1);
4755
4773
  if (!(_la === MalloyParser.ALL || _la === MalloyParser.EXCLUDE)) {
4756
4774
  this._errHandler.recoverInline(this);
@@ -4795,7 +4813,7 @@ class MalloyParser extends Parser_1.Parser {
4795
4813
  let _alt;
4796
4814
  this.enterOuterAlt(_localctx, 1);
4797
4815
  {
4798
- this.state = 978;
4816
+ this.state = 985;
4799
4817
  this._errHandler.sync(this);
4800
4818
  switch (this.interpreter.adaptivePredict(this._input, 99, this._ctx)) {
4801
4819
  case 1:
@@ -4803,7 +4821,7 @@ class MalloyParser extends Parser_1.Parser {
4803
4821
  _localctx = new ExprFieldPathContext(_localctx);
4804
4822
  this._ctx = _localctx;
4805
4823
  _prevctx = _localctx;
4806
- this.state = 901;
4824
+ this.state = 908;
4807
4825
  this.fieldPath();
4808
4826
  }
4809
4827
  break;
@@ -4812,7 +4830,7 @@ class MalloyParser extends Parser_1.Parser {
4812
4830
  _localctx = new ExprLiteralContext(_localctx);
4813
4831
  this._ctx = _localctx;
4814
4832
  _prevctx = _localctx;
4815
- this.state = 902;
4833
+ this.state = 909;
4816
4834
  this.literal();
4817
4835
  }
4818
4836
  break;
@@ -4821,9 +4839,9 @@ class MalloyParser extends Parser_1.Parser {
4821
4839
  _localctx = new ExprMinusContext(_localctx);
4822
4840
  this._ctx = _localctx;
4823
4841
  _prevctx = _localctx;
4824
- this.state = 903;
4842
+ this.state = 910;
4825
4843
  this.match(MalloyParser.MINUS);
4826
- this.state = 904;
4844
+ this.state = 911;
4827
4845
  this.fieldExpr(21);
4828
4846
  }
4829
4847
  break;
@@ -4832,9 +4850,9 @@ class MalloyParser extends Parser_1.Parser {
4832
4850
  _localctx = new ExprNotContext(_localctx);
4833
4851
  this._ctx = _localctx;
4834
4852
  _prevctx = _localctx;
4835
- this.state = 905;
4853
+ this.state = 912;
4836
4854
  this.match(MalloyParser.NOT);
4837
- this.state = 906;
4855
+ this.state = 913;
4838
4856
  this.fieldExpr(12);
4839
4857
  }
4840
4858
  break;
@@ -4843,17 +4861,17 @@ class MalloyParser extends Parser_1.Parser {
4843
4861
  _localctx = new ExprCastContext(_localctx);
4844
4862
  this._ctx = _localctx;
4845
4863
  _prevctx = _localctx;
4846
- this.state = 907;
4864
+ this.state = 914;
4847
4865
  this.match(MalloyParser.CAST);
4848
- this.state = 908;
4866
+ this.state = 915;
4849
4867
  this.match(MalloyParser.OPAREN);
4850
- this.state = 909;
4868
+ this.state = 916;
4851
4869
  this.fieldExpr(0);
4852
- this.state = 910;
4870
+ this.state = 917;
4853
4871
  this.match(MalloyParser.AS);
4854
- this.state = 911;
4872
+ this.state = 918;
4855
4873
  this.malloyType();
4856
- this.state = 912;
4874
+ this.state = 919;
4857
4875
  this.match(MalloyParser.CPAREN);
4858
4876
  }
4859
4877
  break;
@@ -4862,15 +4880,15 @@ class MalloyParser extends Parser_1.Parser {
4862
4880
  _localctx = new ExprCountDisinctContext(_localctx);
4863
4881
  this._ctx = _localctx;
4864
4882
  _prevctx = _localctx;
4865
- this.state = 914;
4883
+ this.state = 921;
4866
4884
  this.match(MalloyParser.COUNT);
4867
- this.state = 915;
4885
+ this.state = 922;
4868
4886
  this.match(MalloyParser.OPAREN);
4869
- this.state = 916;
4887
+ this.state = 923;
4870
4888
  this.match(MalloyParser.DISTINCT);
4871
- this.state = 917;
4889
+ this.state = 924;
4872
4890
  this.fieldExpr(0);
4873
- this.state = 918;
4891
+ this.state = 925;
4874
4892
  this.match(MalloyParser.CPAREN);
4875
4893
  }
4876
4894
  break;
@@ -4879,22 +4897,22 @@ class MalloyParser extends Parser_1.Parser {
4879
4897
  _localctx = new ExprAggregateContext(_localctx);
4880
4898
  this._ctx = _localctx;
4881
4899
  _prevctx = _localctx;
4882
- this.state = 923;
4900
+ this.state = 930;
4883
4901
  this._errHandler.sync(this);
4884
4902
  _la = this._input.LA(1);
4885
4903
  if (_la === MalloyParser.IDENTIFIER || _la === MalloyParser.OBJECT_NAME_LITERAL) {
4886
4904
  {
4887
- this.state = 920;
4905
+ this.state = 927;
4888
4906
  this.fieldPath();
4889
- this.state = 921;
4907
+ this.state = 928;
4890
4908
  this.match(MalloyParser.DOT);
4891
4909
  }
4892
4910
  }
4893
- this.state = 925;
4911
+ this.state = 932;
4894
4912
  this.aggregate();
4895
- this.state = 926;
4913
+ this.state = 933;
4896
4914
  this.match(MalloyParser.OPAREN);
4897
- this.state = 929;
4915
+ this.state = 936;
4898
4916
  this._errHandler.sync(this);
4899
4917
  switch (this._input.LA(1)) {
4900
4918
  case MalloyParser.ALL:
@@ -4935,13 +4953,13 @@ class MalloyParser extends Parser_1.Parser {
4935
4953
  case MalloyParser.NUMERIC_LITERAL:
4936
4954
  case MalloyParser.OBJECT_NAME_LITERAL:
4937
4955
  {
4938
- this.state = 927;
4956
+ this.state = 934;
4939
4957
  this.fieldExpr(0);
4940
4958
  }
4941
4959
  break;
4942
4960
  case MalloyParser.STAR:
4943
4961
  {
4944
- this.state = 928;
4962
+ this.state = 935;
4945
4963
  this.match(MalloyParser.STAR);
4946
4964
  }
4947
4965
  break;
@@ -4950,7 +4968,7 @@ class MalloyParser extends Parser_1.Parser {
4950
4968
  default:
4951
4969
  break;
4952
4970
  }
4953
- this.state = 931;
4971
+ this.state = 938;
4954
4972
  this.match(MalloyParser.CPAREN);
4955
4973
  }
4956
4974
  break;
@@ -4959,11 +4977,11 @@ class MalloyParser extends Parser_1.Parser {
4959
4977
  _localctx = new ExprExprContext(_localctx);
4960
4978
  this._ctx = _localctx;
4961
4979
  _prevctx = _localctx;
4962
- this.state = 933;
4980
+ this.state = 940;
4963
4981
  this.match(MalloyParser.OPAREN);
4964
- this.state = 934;
4982
+ this.state = 941;
4965
4983
  this.partialAllowedFieldExpr();
4966
- this.state = 935;
4984
+ this.state = 942;
4967
4985
  this.match(MalloyParser.CPAREN);
4968
4986
  }
4969
4987
  break;
@@ -4972,34 +4990,34 @@ class MalloyParser extends Parser_1.Parser {
4972
4990
  _localctx = new ExprAggFuncContext(_localctx);
4973
4991
  this._ctx = _localctx;
4974
4992
  _prevctx = _localctx;
4975
- this.state = 940;
4993
+ this.state = 947;
4976
4994
  this._errHandler.sync(this);
4977
4995
  switch (this.interpreter.adaptivePredict(this._input, 92, this._ctx)) {
4978
4996
  case 1:
4979
4997
  {
4980
- this.state = 937;
4998
+ this.state = 944;
4981
4999
  this.fieldPath();
4982
- this.state = 938;
5000
+ this.state = 945;
4983
5001
  this.match(MalloyParser.DOT);
4984
5002
  }
4985
5003
  break;
4986
5004
  }
4987
- this.state = 942;
5005
+ this.state = 949;
4988
5006
  this.id();
4989
- this.state = 943;
5007
+ this.state = 950;
4990
5008
  this.match(MalloyParser.OPAREN);
4991
5009
  {
4992
- this.state = 945;
5010
+ this.state = 952;
4993
5011
  this._errHandler.sync(this);
4994
5012
  _la = this._input.LA(1);
4995
- if (((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & ((1 << (MalloyParser.ALL - 33)) | (1 << (MalloyParser.AVG - 33)) | (1 << (MalloyParser.CAST - 33)) | (1 << (MalloyParser.COUNT - 33)) | (1 << (MalloyParser.DAY - 33)) | (1 << (MalloyParser.EXCLUDE - 33)) | (1 << (MalloyParser.FALSE - 33)) | (1 << (MalloyParser.HOUR - 33)) | (1 << (MalloyParser.MAX - 33)) | (1 << (MalloyParser.MIN - 33)) | (1 << (MalloyParser.MINUTE - 33)) | (1 << (MalloyParser.MONTH - 33)))) !== 0) || ((((_la - 65)) & ~0x1F) === 0 && ((1 << (_la - 65)) & ((1 << (MalloyParser.NOT - 65)) | (1 << (MalloyParser.NOW - 65)) | (1 << (MalloyParser.NULL - 65)) | (1 << (MalloyParser.PICK - 65)) | (1 << (MalloyParser.QUARTER - 65)) | (1 << (MalloyParser.SECOND - 65)) | (1 << (MalloyParser.SUM - 65)) | (1 << (MalloyParser.TRUE - 65)) | (1 << (MalloyParser.WEEK - 65)) | (1 << (MalloyParser.YEAR - 65)) | (1 << (MalloyParser.HACKY_REGEX - 65)) | (1 << (MalloyParser.STRING_LITERAL - 65)) | (1 << (MalloyParser.OPAREN - 65)))) !== 0) || ((((_la - 115)) & ~0x1F) === 0 && ((1 << (_la - 115)) & ((1 << (MalloyParser.MINUS - 115)) | (1 << (MalloyParser.LITERAL_TIMESTAMP - 115)) | (1 << (MalloyParser.LITERAL_HOUR - 115)) | (1 << (MalloyParser.LITERAL_DAY - 115)) | (1 << (MalloyParser.LITERAL_QUARTER - 115)) | (1 << (MalloyParser.LITERAL_MONTH - 115)) | (1 << (MalloyParser.LITERAL_WEEK - 115)) | (1 << (MalloyParser.LITERAL_YEAR - 115)) | (1 << (MalloyParser.IDENTIFIER - 115)) | (1 << (MalloyParser.INTEGER_LITERAL - 115)) | (1 << (MalloyParser.NUMERIC_LITERAL - 115)) | (1 << (MalloyParser.OBJECT_NAME_LITERAL - 115)))) !== 0)) {
5013
+ if (((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & ((1 << (MalloyParser.ALL - 33)) | (1 << (MalloyParser.AVG - 33)) | (1 << (MalloyParser.CAST - 33)) | (1 << (MalloyParser.COUNT - 33)) | (1 << (MalloyParser.DAY - 33)) | (1 << (MalloyParser.EXCLUDE - 33)) | (1 << (MalloyParser.FALSE - 33)) | (1 << (MalloyParser.HOUR - 33)) | (1 << (MalloyParser.MAX - 33)) | (1 << (MalloyParser.MIN - 33)) | (1 << (MalloyParser.MINUTE - 33)) | (1 << (MalloyParser.MONTH - 33)))) !== 0) || ((((_la - 65)) & ~0x1F) === 0 && ((1 << (_la - 65)) & ((1 << (MalloyParser.NOT - 65)) | (1 << (MalloyParser.NOW - 65)) | (1 << (MalloyParser.NULL - 65)) | (1 << (MalloyParser.PICK - 65)) | (1 << (MalloyParser.QUARTER - 65)) | (1 << (MalloyParser.SECOND - 65)) | (1 << (MalloyParser.SUM - 65)) | (1 << (MalloyParser.TRUE - 65)) | (1 << (MalloyParser.WEEK - 65)) | (1 << (MalloyParser.YEAR - 65)) | (1 << (MalloyParser.HACKY_REGEX - 65)) | (1 << (MalloyParser.STRING_LITERAL - 65)))) !== 0) || ((((_la - 97)) & ~0x1F) === 0 && ((1 << (_la - 97)) & ((1 << (MalloyParser.OPAREN - 97)) | (1 << (MalloyParser.MINUS - 97)) | (1 << (MalloyParser.LITERAL_TIMESTAMP - 97)) | (1 << (MalloyParser.LITERAL_HOUR - 97)))) !== 0) || ((((_la - 129)) & ~0x1F) === 0 && ((1 << (_la - 129)) & ((1 << (MalloyParser.LITERAL_DAY - 129)) | (1 << (MalloyParser.LITERAL_QUARTER - 129)) | (1 << (MalloyParser.LITERAL_MONTH - 129)) | (1 << (MalloyParser.LITERAL_WEEK - 129)) | (1 << (MalloyParser.LITERAL_YEAR - 129)) | (1 << (MalloyParser.IDENTIFIER - 129)) | (1 << (MalloyParser.INTEGER_LITERAL - 129)) | (1 << (MalloyParser.NUMERIC_LITERAL - 129)) | (1 << (MalloyParser.OBJECT_NAME_LITERAL - 129)))) !== 0)) {
4996
5014
  {
4997
- this.state = 944;
5015
+ this.state = 951;
4998
5016
  this.argumentList();
4999
5017
  }
5000
5018
  }
5001
5019
  }
5002
- this.state = 947;
5020
+ this.state = 954;
5003
5021
  this.match(MalloyParser.CPAREN);
5004
5022
  }
5005
5023
  break;
@@ -5008,28 +5026,28 @@ class MalloyParser extends Parser_1.Parser {
5008
5026
  _localctx = new ExprFuncContext(_localctx);
5009
5027
  this._ctx = _localctx;
5010
5028
  _prevctx = _localctx;
5011
- this.state = 957;
5029
+ this.state = 964;
5012
5030
  this._errHandler.sync(this);
5013
5031
  switch (this._input.LA(1)) {
5014
5032
  case MalloyParser.IDENTIFIER:
5015
5033
  case MalloyParser.OBJECT_NAME_LITERAL:
5016
5034
  {
5017
5035
  {
5018
- this.state = 949;
5036
+ this.state = 956;
5019
5037
  this.id();
5020
- this.state = 954;
5038
+ this.state = 961;
5021
5039
  this._errHandler.sync(this);
5022
5040
  _la = this._input.LA(1);
5023
5041
  if (_la === MalloyParser.EXCLAM) {
5024
5042
  {
5025
- this.state = 950;
5043
+ this.state = 957;
5026
5044
  this.match(MalloyParser.EXCLAM);
5027
- this.state = 952;
5045
+ this.state = 959;
5028
5046
  this._errHandler.sync(this);
5029
5047
  _la = this._input.LA(1);
5030
5048
  if (((((_la - 38)) & ~0x1F) === 0 && ((1 << (_la - 38)) & ((1 << (MalloyParser.BOOLEAN - 38)) | (1 << (MalloyParser.DATE - 38)) | (1 << (MalloyParser.NUMBER - 38)))) !== 0) || _la === MalloyParser.STRING || _la === MalloyParser.TIMESTAMP) {
5031
5049
  {
5032
- this.state = 951;
5050
+ this.state = 958;
5033
5051
  this.malloyType();
5034
5052
  }
5035
5053
  }
@@ -5047,27 +5065,27 @@ class MalloyParser extends Parser_1.Parser {
5047
5065
  case MalloyParser.WEEK:
5048
5066
  case MalloyParser.YEAR:
5049
5067
  {
5050
- this.state = 956;
5068
+ this.state = 963;
5051
5069
  this.timeframe();
5052
5070
  }
5053
5071
  break;
5054
5072
  default:
5055
5073
  throw new NoViableAltException_1.NoViableAltException(this);
5056
5074
  }
5057
- this.state = 959;
5075
+ this.state = 966;
5058
5076
  this.match(MalloyParser.OPAREN);
5059
5077
  {
5060
- this.state = 961;
5078
+ this.state = 968;
5061
5079
  this._errHandler.sync(this);
5062
5080
  _la = this._input.LA(1);
5063
- if (((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & ((1 << (MalloyParser.ALL - 33)) | (1 << (MalloyParser.AVG - 33)) | (1 << (MalloyParser.CAST - 33)) | (1 << (MalloyParser.COUNT - 33)) | (1 << (MalloyParser.DAY - 33)) | (1 << (MalloyParser.EXCLUDE - 33)) | (1 << (MalloyParser.FALSE - 33)) | (1 << (MalloyParser.HOUR - 33)) | (1 << (MalloyParser.MAX - 33)) | (1 << (MalloyParser.MIN - 33)) | (1 << (MalloyParser.MINUTE - 33)) | (1 << (MalloyParser.MONTH - 33)))) !== 0) || ((((_la - 65)) & ~0x1F) === 0 && ((1 << (_la - 65)) & ((1 << (MalloyParser.NOT - 65)) | (1 << (MalloyParser.NOW - 65)) | (1 << (MalloyParser.NULL - 65)) | (1 << (MalloyParser.PICK - 65)) | (1 << (MalloyParser.QUARTER - 65)) | (1 << (MalloyParser.SECOND - 65)) | (1 << (MalloyParser.SUM - 65)) | (1 << (MalloyParser.TRUE - 65)) | (1 << (MalloyParser.WEEK - 65)) | (1 << (MalloyParser.YEAR - 65)) | (1 << (MalloyParser.HACKY_REGEX - 65)) | (1 << (MalloyParser.STRING_LITERAL - 65)) | (1 << (MalloyParser.OPAREN - 65)))) !== 0) || ((((_la - 115)) & ~0x1F) === 0 && ((1 << (_la - 115)) & ((1 << (MalloyParser.MINUS - 115)) | (1 << (MalloyParser.LITERAL_TIMESTAMP - 115)) | (1 << (MalloyParser.LITERAL_HOUR - 115)) | (1 << (MalloyParser.LITERAL_DAY - 115)) | (1 << (MalloyParser.LITERAL_QUARTER - 115)) | (1 << (MalloyParser.LITERAL_MONTH - 115)) | (1 << (MalloyParser.LITERAL_WEEK - 115)) | (1 << (MalloyParser.LITERAL_YEAR - 115)) | (1 << (MalloyParser.IDENTIFIER - 115)) | (1 << (MalloyParser.INTEGER_LITERAL - 115)) | (1 << (MalloyParser.NUMERIC_LITERAL - 115)) | (1 << (MalloyParser.OBJECT_NAME_LITERAL - 115)))) !== 0)) {
5081
+ if (((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & ((1 << (MalloyParser.ALL - 33)) | (1 << (MalloyParser.AVG - 33)) | (1 << (MalloyParser.CAST - 33)) | (1 << (MalloyParser.COUNT - 33)) | (1 << (MalloyParser.DAY - 33)) | (1 << (MalloyParser.EXCLUDE - 33)) | (1 << (MalloyParser.FALSE - 33)) | (1 << (MalloyParser.HOUR - 33)) | (1 << (MalloyParser.MAX - 33)) | (1 << (MalloyParser.MIN - 33)) | (1 << (MalloyParser.MINUTE - 33)) | (1 << (MalloyParser.MONTH - 33)))) !== 0) || ((((_la - 65)) & ~0x1F) === 0 && ((1 << (_la - 65)) & ((1 << (MalloyParser.NOT - 65)) | (1 << (MalloyParser.NOW - 65)) | (1 << (MalloyParser.NULL - 65)) | (1 << (MalloyParser.PICK - 65)) | (1 << (MalloyParser.QUARTER - 65)) | (1 << (MalloyParser.SECOND - 65)) | (1 << (MalloyParser.SUM - 65)) | (1 << (MalloyParser.TRUE - 65)) | (1 << (MalloyParser.WEEK - 65)) | (1 << (MalloyParser.YEAR - 65)) | (1 << (MalloyParser.HACKY_REGEX - 65)) | (1 << (MalloyParser.STRING_LITERAL - 65)))) !== 0) || ((((_la - 97)) & ~0x1F) === 0 && ((1 << (_la - 97)) & ((1 << (MalloyParser.OPAREN - 97)) | (1 << (MalloyParser.MINUS - 97)) | (1 << (MalloyParser.LITERAL_TIMESTAMP - 97)) | (1 << (MalloyParser.LITERAL_HOUR - 97)))) !== 0) || ((((_la - 129)) & ~0x1F) === 0 && ((1 << (_la - 129)) & ((1 << (MalloyParser.LITERAL_DAY - 129)) | (1 << (MalloyParser.LITERAL_QUARTER - 129)) | (1 << (MalloyParser.LITERAL_MONTH - 129)) | (1 << (MalloyParser.LITERAL_WEEK - 129)) | (1 << (MalloyParser.LITERAL_YEAR - 129)) | (1 << (MalloyParser.IDENTIFIER - 129)) | (1 << (MalloyParser.INTEGER_LITERAL - 129)) | (1 << (MalloyParser.NUMERIC_LITERAL - 129)) | (1 << (MalloyParser.OBJECT_NAME_LITERAL - 129)))) !== 0)) {
5064
5082
  {
5065
- this.state = 960;
5083
+ this.state = 967;
5066
5084
  this.argumentList();
5067
5085
  }
5068
5086
  }
5069
5087
  }
5070
- this.state = 963;
5088
+ this.state = 970;
5071
5089
  this.match(MalloyParser.CPAREN);
5072
5090
  }
5073
5091
  break;
@@ -5076,7 +5094,7 @@ class MalloyParser extends Parser_1.Parser {
5076
5094
  _localctx = new ExprPickContext(_localctx);
5077
5095
  this._ctx = _localctx;
5078
5096
  _prevctx = _localctx;
5079
- this.state = 965;
5097
+ this.state = 972;
5080
5098
  this.pickStatement();
5081
5099
  }
5082
5100
  break;
@@ -5085,35 +5103,35 @@ class MalloyParser extends Parser_1.Parser {
5085
5103
  _localctx = new ExprUngroupContext(_localctx);
5086
5104
  this._ctx = _localctx;
5087
5105
  _prevctx = _localctx;
5088
- this.state = 966;
5106
+ this.state = 973;
5089
5107
  this.ungroup();
5090
- this.state = 967;
5108
+ this.state = 974;
5091
5109
  this.match(MalloyParser.OPAREN);
5092
- this.state = 968;
5110
+ this.state = 975;
5093
5111
  this.fieldExpr(0);
5094
- this.state = 973;
5112
+ this.state = 980;
5095
5113
  this._errHandler.sync(this);
5096
5114
  _la = this._input.LA(1);
5097
5115
  while (_la === MalloyParser.COMMA) {
5098
5116
  {
5099
5117
  {
5100
- this.state = 969;
5118
+ this.state = 976;
5101
5119
  this.match(MalloyParser.COMMA);
5102
- this.state = 970;
5120
+ this.state = 977;
5103
5121
  this.fieldName();
5104
5122
  }
5105
5123
  }
5106
- this.state = 975;
5124
+ this.state = 982;
5107
5125
  this._errHandler.sync(this);
5108
5126
  _la = this._input.LA(1);
5109
5127
  }
5110
- this.state = 976;
5128
+ this.state = 983;
5111
5129
  this.match(MalloyParser.CPAREN);
5112
5130
  }
5113
5131
  break;
5114
5132
  }
5115
5133
  this._ctx._stop = this._input.tryLT(-1);
5116
- this.state = 1034;
5134
+ this.state = 1041;
5117
5135
  this._errHandler.sync(this);
5118
5136
  _alt = this.interpreter.adaptivePredict(this._input, 101, this._ctx);
5119
5137
  while (_alt !== 2 && _alt !== ATN_1.ATN.INVALID_ALT_NUMBER) {
@@ -5123,20 +5141,20 @@ class MalloyParser extends Parser_1.Parser {
5123
5141
  }
5124
5142
  _prevctx = _localctx;
5125
5143
  {
5126
- this.state = 1032;
5144
+ this.state = 1039;
5127
5145
  this._errHandler.sync(this);
5128
5146
  switch (this.interpreter.adaptivePredict(this._input, 100, this._ctx)) {
5129
5147
  case 1:
5130
5148
  {
5131
5149
  _localctx = new ExprMulDivContext(new FieldExprContext(_parentctx, _parentState));
5132
5150
  this.pushNewRecursionContext(_localctx, _startState, MalloyParser.RULE_fieldExpr);
5133
- this.state = 980;
5151
+ this.state = 987;
5134
5152
  if (!(this.precpred(this._ctx, 20))) {
5135
5153
  throw this.createFailedPredicateException("this.precpred(this._ctx, 20)");
5136
5154
  }
5137
- this.state = 981;
5155
+ this.state = 988;
5138
5156
  _la = this._input.LA(1);
5139
- if (!(((((_la - 116)) & ~0x1F) === 0 && ((1 << (_la - 116)) & ((1 << (MalloyParser.STAR - 116)) | (1 << (MalloyParser.SLASH - 116)) | (1 << (MalloyParser.PERCENT - 116)))) !== 0))) {
5157
+ if (!(((((_la - 117)) & ~0x1F) === 0 && ((1 << (_la - 117)) & ((1 << (MalloyParser.STAR - 117)) | (1 << (MalloyParser.SLASH - 117)) | (1 << (MalloyParser.PERCENT - 117)))) !== 0))) {
5140
5158
  this._errHandler.recoverInline(this);
5141
5159
  }
5142
5160
  else {
@@ -5146,7 +5164,7 @@ class MalloyParser extends Parser_1.Parser {
5146
5164
  this._errHandler.reportMatch(this);
5147
5165
  this.consume();
5148
5166
  }
5149
- this.state = 982;
5167
+ this.state = 989;
5150
5168
  this.fieldExpr(21);
5151
5169
  }
5152
5170
  break;
@@ -5154,11 +5172,11 @@ class MalloyParser extends Parser_1.Parser {
5154
5172
  {
5155
5173
  _localctx = new ExprAddSubContext(new FieldExprContext(_parentctx, _parentState));
5156
5174
  this.pushNewRecursionContext(_localctx, _startState, MalloyParser.RULE_fieldExpr);
5157
- this.state = 983;
5175
+ this.state = 990;
5158
5176
  if (!(this.precpred(this._ctx, 19))) {
5159
5177
  throw this.createFailedPredicateException("this.precpred(this._ctx, 19)");
5160
5178
  }
5161
- this.state = 984;
5179
+ this.state = 991;
5162
5180
  _la = this._input.LA(1);
5163
5181
  if (!(_la === MalloyParser.PLUS || _la === MalloyParser.MINUS)) {
5164
5182
  this._errHandler.recoverInline(this);
@@ -5170,7 +5188,7 @@ class MalloyParser extends Parser_1.Parser {
5170
5188
  this._errHandler.reportMatch(this);
5171
5189
  this.consume();
5172
5190
  }
5173
- this.state = 985;
5191
+ this.state = 992;
5174
5192
  this.fieldExpr(20);
5175
5193
  }
5176
5194
  break;
@@ -5178,13 +5196,13 @@ class MalloyParser extends Parser_1.Parser {
5178
5196
  {
5179
5197
  _localctx = new ExprRangeContext(new FieldExprContext(_parentctx, _parentState));
5180
5198
  this.pushNewRecursionContext(_localctx, _startState, MalloyParser.RULE_fieldExpr);
5181
- this.state = 986;
5199
+ this.state = 993;
5182
5200
  if (!(this.precpred(this._ctx, 18))) {
5183
5201
  throw this.createFailedPredicateException("this.precpred(this._ctx, 18)");
5184
5202
  }
5185
- this.state = 987;
5203
+ this.state = 994;
5186
5204
  this.match(MalloyParser.TO);
5187
- this.state = 988;
5205
+ this.state = 995;
5188
5206
  this.fieldExpr(19);
5189
5207
  }
5190
5208
  break;
@@ -5192,13 +5210,13 @@ class MalloyParser extends Parser_1.Parser {
5192
5210
  {
5193
5211
  _localctx = new ExprCompareContext(new FieldExprContext(_parentctx, _parentState));
5194
5212
  this.pushNewRecursionContext(_localctx, _startState, MalloyParser.RULE_fieldExpr);
5195
- this.state = 989;
5213
+ this.state = 996;
5196
5214
  if (!(this.precpred(this._ctx, 14))) {
5197
5215
  throw this.createFailedPredicateException("this.precpred(this._ctx, 14)");
5198
5216
  }
5199
- this.state = 990;
5217
+ this.state = 997;
5200
5218
  this.compareOp();
5201
- this.state = 991;
5219
+ this.state = 998;
5202
5220
  this.fieldExpr(15);
5203
5221
  }
5204
5222
  break;
@@ -5206,13 +5224,13 @@ class MalloyParser extends Parser_1.Parser {
5206
5224
  {
5207
5225
  _localctx = new ExprLogicalAndContext(new FieldExprContext(_parentctx, _parentState));
5208
5226
  this.pushNewRecursionContext(_localctx, _startState, MalloyParser.RULE_fieldExpr);
5209
- this.state = 993;
5227
+ this.state = 1000;
5210
5228
  if (!(this.precpred(this._ctx, 11))) {
5211
5229
  throw this.createFailedPredicateException("this.precpred(this._ctx, 11)");
5212
5230
  }
5213
- this.state = 994;
5231
+ this.state = 1001;
5214
5232
  this.match(MalloyParser.AND);
5215
- this.state = 995;
5233
+ this.state = 1002;
5216
5234
  this.fieldExpr(12);
5217
5235
  }
5218
5236
  break;
@@ -5220,13 +5238,13 @@ class MalloyParser extends Parser_1.Parser {
5220
5238
  {
5221
5239
  _localctx = new ExprLogicalOrContext(new FieldExprContext(_parentctx, _parentState));
5222
5240
  this.pushNewRecursionContext(_localctx, _startState, MalloyParser.RULE_fieldExpr);
5223
- this.state = 996;
5241
+ this.state = 1003;
5224
5242
  if (!(this.precpred(this._ctx, 10))) {
5225
5243
  throw this.createFailedPredicateException("this.precpred(this._ctx, 10)");
5226
5244
  }
5227
- this.state = 997;
5245
+ this.state = 1004;
5228
5246
  this.match(MalloyParser.OR);
5229
- this.state = 998;
5247
+ this.state = 1005;
5230
5248
  this.fieldExpr(11);
5231
5249
  }
5232
5250
  break;
@@ -5234,13 +5252,13 @@ class MalloyParser extends Parser_1.Parser {
5234
5252
  {
5235
5253
  _localctx = new ExprCoalesceContext(new FieldExprContext(_parentctx, _parentState));
5236
5254
  this.pushNewRecursionContext(_localctx, _startState, MalloyParser.RULE_fieldExpr);
5237
- this.state = 999;
5255
+ this.state = 1006;
5238
5256
  if (!(this.precpred(this._ctx, 9))) {
5239
5257
  throw this.createFailedPredicateException("this.precpred(this._ctx, 9)");
5240
5258
  }
5241
- this.state = 1000;
5259
+ this.state = 1007;
5242
5260
  this.match(MalloyParser.DOUBLE_QMARK);
5243
- this.state = 1001;
5261
+ this.state = 1008;
5244
5262
  this.fieldExpr(10);
5245
5263
  }
5246
5264
  break;
@@ -5248,15 +5266,15 @@ class MalloyParser extends Parser_1.Parser {
5248
5266
  {
5249
5267
  _localctx = new ExprFilterContext(new FieldExprContext(_parentctx, _parentState));
5250
5268
  this.pushNewRecursionContext(_localctx, _startState, MalloyParser.RULE_fieldExpr);
5251
- this.state = 1002;
5269
+ this.state = 1009;
5252
5270
  if (!(this.precpred(this._ctx, 27))) {
5253
5271
  throw this.createFailedPredicateException("this.precpred(this._ctx, 27)");
5254
5272
  }
5255
- this.state = 1003;
5273
+ this.state = 1010;
5256
5274
  this.match(MalloyParser.OCURLY);
5257
- this.state = 1004;
5275
+ this.state = 1011;
5258
5276
  this.filteredBy();
5259
- this.state = 1005;
5277
+ this.state = 1012;
5260
5278
  this.match(MalloyParser.CCURLY);
5261
5279
  }
5262
5280
  break;
@@ -5264,11 +5282,11 @@ class MalloyParser extends Parser_1.Parser {
5264
5282
  {
5265
5283
  _localctx = new ExprDurationContext(new FieldExprContext(_parentctx, _parentState));
5266
5284
  this.pushNewRecursionContext(_localctx, _startState, MalloyParser.RULE_fieldExpr);
5267
- this.state = 1007;
5285
+ this.state = 1014;
5268
5286
  if (!(this.precpred(this._ctx, 25))) {
5269
5287
  throw this.createFailedPredicateException("this.precpred(this._ctx, 25)");
5270
5288
  }
5271
- this.state = 1008;
5289
+ this.state = 1015;
5272
5290
  this.timeframe();
5273
5291
  }
5274
5292
  break;
@@ -5276,13 +5294,13 @@ class MalloyParser extends Parser_1.Parser {
5276
5294
  {
5277
5295
  _localctx = new ExprTimeTruncContext(new FieldExprContext(_parentctx, _parentState));
5278
5296
  this.pushNewRecursionContext(_localctx, _startState, MalloyParser.RULE_fieldExpr);
5279
- this.state = 1009;
5297
+ this.state = 1016;
5280
5298
  if (!(this.precpred(this._ctx, 24))) {
5281
5299
  throw this.createFailedPredicateException("this.precpred(this._ctx, 24)");
5282
5300
  }
5283
- this.state = 1010;
5301
+ this.state = 1017;
5284
5302
  this.match(MalloyParser.DOT);
5285
- this.state = 1011;
5303
+ this.state = 1018;
5286
5304
  this.timeframe();
5287
5305
  }
5288
5306
  break;
@@ -5290,13 +5308,13 @@ class MalloyParser extends Parser_1.Parser {
5290
5308
  {
5291
5309
  _localctx = new ExprCastContext(new FieldExprContext(_parentctx, _parentState));
5292
5310
  this.pushNewRecursionContext(_localctx, _startState, MalloyParser.RULE_fieldExpr);
5293
- this.state = 1012;
5311
+ this.state = 1019;
5294
5312
  if (!(this.precpred(this._ctx, 23))) {
5295
5313
  throw this.createFailedPredicateException("this.precpred(this._ctx, 23)");
5296
5314
  }
5297
- this.state = 1013;
5315
+ this.state = 1020;
5298
5316
  this.match(MalloyParser.DOUBLECOLON);
5299
- this.state = 1014;
5317
+ this.state = 1021;
5300
5318
  this.malloyType();
5301
5319
  }
5302
5320
  break;
@@ -5304,13 +5322,13 @@ class MalloyParser extends Parser_1.Parser {
5304
5322
  {
5305
5323
  _localctx = new ExprSafeCastContext(new FieldExprContext(_parentctx, _parentState));
5306
5324
  this.pushNewRecursionContext(_localctx, _startState, MalloyParser.RULE_fieldExpr);
5307
- this.state = 1015;
5325
+ this.state = 1022;
5308
5326
  if (!(this.precpred(this._ctx, 22))) {
5309
5327
  throw this.createFailedPredicateException("this.precpred(this._ctx, 22)");
5310
5328
  }
5311
- this.state = 1016;
5329
+ this.state = 1023;
5312
5330
  this.match(MalloyParser.TRIPLECOLON);
5313
- this.state = 1017;
5331
+ this.state = 1024;
5314
5332
  this.malloyType();
5315
5333
  }
5316
5334
  break;
@@ -5319,15 +5337,15 @@ class MalloyParser extends Parser_1.Parser {
5319
5337
  _localctx = new ExprForRangeContext(new FieldExprContext(_parentctx, _parentState));
5320
5338
  _localctx._startAt = _prevctx;
5321
5339
  this.pushNewRecursionContext(_localctx, _startState, MalloyParser.RULE_fieldExpr);
5322
- this.state = 1018;
5340
+ this.state = 1025;
5323
5341
  if (!(this.precpred(this._ctx, 17))) {
5324
5342
  throw this.createFailedPredicateException("this.precpred(this._ctx, 17)");
5325
5343
  }
5326
- this.state = 1019;
5344
+ this.state = 1026;
5327
5345
  this.match(MalloyParser.FOR);
5328
- this.state = 1020;
5346
+ this.state = 1027;
5329
5347
  _localctx._duration = this.fieldExpr(0);
5330
- this.state = 1021;
5348
+ this.state = 1028;
5331
5349
  this.timeframe();
5332
5350
  }
5333
5351
  break;
@@ -5335,13 +5353,13 @@ class MalloyParser extends Parser_1.Parser {
5335
5353
  {
5336
5354
  _localctx = new ExprAndTreeContext(new FieldExprContext(_parentctx, _parentState));
5337
5355
  this.pushNewRecursionContext(_localctx, _startState, MalloyParser.RULE_fieldExpr);
5338
- this.state = 1023;
5356
+ this.state = 1030;
5339
5357
  if (!(this.precpred(this._ctx, 16))) {
5340
5358
  throw this.createFailedPredicateException("this.precpred(this._ctx, 16)");
5341
5359
  }
5342
- this.state = 1024;
5360
+ this.state = 1031;
5343
5361
  this.match(MalloyParser.AMPER);
5344
- this.state = 1025;
5362
+ this.state = 1032;
5345
5363
  this.partialAllowedFieldExpr();
5346
5364
  }
5347
5365
  break;
@@ -5349,13 +5367,13 @@ class MalloyParser extends Parser_1.Parser {
5349
5367
  {
5350
5368
  _localctx = new ExprOrTreeContext(new FieldExprContext(_parentctx, _parentState));
5351
5369
  this.pushNewRecursionContext(_localctx, _startState, MalloyParser.RULE_fieldExpr);
5352
- this.state = 1026;
5370
+ this.state = 1033;
5353
5371
  if (!(this.precpred(this._ctx, 15))) {
5354
5372
  throw this.createFailedPredicateException("this.precpred(this._ctx, 15)");
5355
5373
  }
5356
- this.state = 1027;
5374
+ this.state = 1034;
5357
5375
  this.match(MalloyParser.BAR);
5358
- this.state = 1028;
5376
+ this.state = 1035;
5359
5377
  this.partialAllowedFieldExpr();
5360
5378
  }
5361
5379
  break;
@@ -5363,20 +5381,20 @@ class MalloyParser extends Parser_1.Parser {
5363
5381
  {
5364
5382
  _localctx = new ExprApplyContext(new FieldExprContext(_parentctx, _parentState));
5365
5383
  this.pushNewRecursionContext(_localctx, _startState, MalloyParser.RULE_fieldExpr);
5366
- this.state = 1029;
5384
+ this.state = 1036;
5367
5385
  if (!(this.precpred(this._ctx, 13))) {
5368
5386
  throw this.createFailedPredicateException("this.precpred(this._ctx, 13)");
5369
5387
  }
5370
- this.state = 1030;
5388
+ this.state = 1037;
5371
5389
  this.match(MalloyParser.QMARK);
5372
- this.state = 1031;
5390
+ this.state = 1038;
5373
5391
  this.partialAllowedFieldExpr();
5374
5392
  }
5375
5393
  break;
5376
5394
  }
5377
5395
  }
5378
5396
  }
5379
- this.state = 1036;
5397
+ this.state = 1043;
5380
5398
  this._errHandler.sync(this);
5381
5399
  _alt = this.interpreter.adaptivePredict(this._input, 101, this._ctx);
5382
5400
  }
@@ -5405,16 +5423,16 @@ class MalloyParser extends Parser_1.Parser {
5405
5423
  try {
5406
5424
  this.enterOuterAlt(_localctx, 1);
5407
5425
  {
5408
- this.state = 1038;
5426
+ this.state = 1045;
5409
5427
  this._errHandler.sync(this);
5410
5428
  _la = this._input.LA(1);
5411
- if (((((_la - 108)) & ~0x1F) === 0 && ((1 << (_la - 108)) & ((1 << (MalloyParser.LT - 108)) | (1 << (MalloyParser.GT - 108)) | (1 << (MalloyParser.EQ - 108)) | (1 << (MalloyParser.NE - 108)) | (1 << (MalloyParser.LTE - 108)) | (1 << (MalloyParser.GTE - 108)) | (1 << (MalloyParser.NOT_MATCH - 108)) | (1 << (MalloyParser.MATCH - 108)))) !== 0)) {
5429
+ if (((((_la - 109)) & ~0x1F) === 0 && ((1 << (_la - 109)) & ((1 << (MalloyParser.LT - 109)) | (1 << (MalloyParser.GT - 109)) | (1 << (MalloyParser.EQ - 109)) | (1 << (MalloyParser.NE - 109)) | (1 << (MalloyParser.LTE - 109)) | (1 << (MalloyParser.GTE - 109)) | (1 << (MalloyParser.NOT_MATCH - 109)) | (1 << (MalloyParser.MATCH - 109)))) !== 0)) {
5412
5430
  {
5413
- this.state = 1037;
5431
+ this.state = 1044;
5414
5432
  this.compareOp();
5415
5433
  }
5416
5434
  }
5417
- this.state = 1040;
5435
+ this.state = 1047;
5418
5436
  this.fieldExpr(0);
5419
5437
  }
5420
5438
  }
@@ -5441,7 +5459,7 @@ class MalloyParser extends Parser_1.Parser {
5441
5459
  let _alt;
5442
5460
  this.enterOuterAlt(_localctx, 1);
5443
5461
  {
5444
- this.state = 1043;
5462
+ this.state = 1050;
5445
5463
  this._errHandler.sync(this);
5446
5464
  _alt = 1;
5447
5465
  do {
@@ -5449,7 +5467,7 @@ class MalloyParser extends Parser_1.Parser {
5449
5467
  case 1:
5450
5468
  {
5451
5469
  {
5452
- this.state = 1042;
5470
+ this.state = 1049;
5453
5471
  this.pick();
5454
5472
  }
5455
5473
  }
@@ -5457,18 +5475,18 @@ class MalloyParser extends Parser_1.Parser {
5457
5475
  default:
5458
5476
  throw new NoViableAltException_1.NoViableAltException(this);
5459
5477
  }
5460
- this.state = 1045;
5478
+ this.state = 1052;
5461
5479
  this._errHandler.sync(this);
5462
5480
  _alt = this.interpreter.adaptivePredict(this._input, 103, this._ctx);
5463
5481
  } while (_alt !== 2 && _alt !== ATN_1.ATN.INVALID_ALT_NUMBER);
5464
- this.state = 1049;
5482
+ this.state = 1056;
5465
5483
  this._errHandler.sync(this);
5466
5484
  switch (this.interpreter.adaptivePredict(this._input, 104, this._ctx)) {
5467
5485
  case 1:
5468
5486
  {
5469
- this.state = 1047;
5487
+ this.state = 1054;
5470
5488
  this.match(MalloyParser.ELSE);
5471
- this.state = 1048;
5489
+ this.state = 1055;
5472
5490
  _localctx._pickElse = this.fieldExpr(0);
5473
5491
  }
5474
5492
  break;
@@ -5498,20 +5516,20 @@ class MalloyParser extends Parser_1.Parser {
5498
5516
  try {
5499
5517
  this.enterOuterAlt(_localctx, 1);
5500
5518
  {
5501
- this.state = 1051;
5519
+ this.state = 1058;
5502
5520
  this.match(MalloyParser.PICK);
5503
- this.state = 1053;
5521
+ this.state = 1060;
5504
5522
  this._errHandler.sync(this);
5505
5523
  _la = this._input.LA(1);
5506
- if (((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & ((1 << (MalloyParser.ALL - 33)) | (1 << (MalloyParser.AVG - 33)) | (1 << (MalloyParser.CAST - 33)) | (1 << (MalloyParser.COUNT - 33)) | (1 << (MalloyParser.DAY - 33)) | (1 << (MalloyParser.EXCLUDE - 33)) | (1 << (MalloyParser.FALSE - 33)) | (1 << (MalloyParser.HOUR - 33)) | (1 << (MalloyParser.MAX - 33)) | (1 << (MalloyParser.MIN - 33)) | (1 << (MalloyParser.MINUTE - 33)) | (1 << (MalloyParser.MONTH - 33)))) !== 0) || ((((_la - 65)) & ~0x1F) === 0 && ((1 << (_la - 65)) & ((1 << (MalloyParser.NOT - 65)) | (1 << (MalloyParser.NOW - 65)) | (1 << (MalloyParser.NULL - 65)) | (1 << (MalloyParser.PICK - 65)) | (1 << (MalloyParser.QUARTER - 65)) | (1 << (MalloyParser.SECOND - 65)) | (1 << (MalloyParser.SUM - 65)) | (1 << (MalloyParser.TRUE - 65)) | (1 << (MalloyParser.WEEK - 65)) | (1 << (MalloyParser.YEAR - 65)) | (1 << (MalloyParser.HACKY_REGEX - 65)) | (1 << (MalloyParser.STRING_LITERAL - 65)) | (1 << (MalloyParser.OPAREN - 65)))) !== 0) || ((((_la - 115)) & ~0x1F) === 0 && ((1 << (_la - 115)) & ((1 << (MalloyParser.MINUS - 115)) | (1 << (MalloyParser.LITERAL_TIMESTAMP - 115)) | (1 << (MalloyParser.LITERAL_HOUR - 115)) | (1 << (MalloyParser.LITERAL_DAY - 115)) | (1 << (MalloyParser.LITERAL_QUARTER - 115)) | (1 << (MalloyParser.LITERAL_MONTH - 115)) | (1 << (MalloyParser.LITERAL_WEEK - 115)) | (1 << (MalloyParser.LITERAL_YEAR - 115)) | (1 << (MalloyParser.IDENTIFIER - 115)) | (1 << (MalloyParser.INTEGER_LITERAL - 115)) | (1 << (MalloyParser.NUMERIC_LITERAL - 115)) | (1 << (MalloyParser.OBJECT_NAME_LITERAL - 115)))) !== 0)) {
5524
+ if (((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & ((1 << (MalloyParser.ALL - 33)) | (1 << (MalloyParser.AVG - 33)) | (1 << (MalloyParser.CAST - 33)) | (1 << (MalloyParser.COUNT - 33)) | (1 << (MalloyParser.DAY - 33)) | (1 << (MalloyParser.EXCLUDE - 33)) | (1 << (MalloyParser.FALSE - 33)) | (1 << (MalloyParser.HOUR - 33)) | (1 << (MalloyParser.MAX - 33)) | (1 << (MalloyParser.MIN - 33)) | (1 << (MalloyParser.MINUTE - 33)) | (1 << (MalloyParser.MONTH - 33)))) !== 0) || ((((_la - 65)) & ~0x1F) === 0 && ((1 << (_la - 65)) & ((1 << (MalloyParser.NOT - 65)) | (1 << (MalloyParser.NOW - 65)) | (1 << (MalloyParser.NULL - 65)) | (1 << (MalloyParser.PICK - 65)) | (1 << (MalloyParser.QUARTER - 65)) | (1 << (MalloyParser.SECOND - 65)) | (1 << (MalloyParser.SUM - 65)) | (1 << (MalloyParser.TRUE - 65)) | (1 << (MalloyParser.WEEK - 65)) | (1 << (MalloyParser.YEAR - 65)) | (1 << (MalloyParser.HACKY_REGEX - 65)) | (1 << (MalloyParser.STRING_LITERAL - 65)))) !== 0) || ((((_la - 97)) & ~0x1F) === 0 && ((1 << (_la - 97)) & ((1 << (MalloyParser.OPAREN - 97)) | (1 << (MalloyParser.MINUS - 97)) | (1 << (MalloyParser.LITERAL_TIMESTAMP - 97)) | (1 << (MalloyParser.LITERAL_HOUR - 97)))) !== 0) || ((((_la - 129)) & ~0x1F) === 0 && ((1 << (_la - 129)) & ((1 << (MalloyParser.LITERAL_DAY - 129)) | (1 << (MalloyParser.LITERAL_QUARTER - 129)) | (1 << (MalloyParser.LITERAL_MONTH - 129)) | (1 << (MalloyParser.LITERAL_WEEK - 129)) | (1 << (MalloyParser.LITERAL_YEAR - 129)) | (1 << (MalloyParser.IDENTIFIER - 129)) | (1 << (MalloyParser.INTEGER_LITERAL - 129)) | (1 << (MalloyParser.NUMERIC_LITERAL - 129)) | (1 << (MalloyParser.OBJECT_NAME_LITERAL - 129)))) !== 0)) {
5507
5525
  {
5508
- this.state = 1052;
5526
+ this.state = 1059;
5509
5527
  _localctx._pickValue = this.fieldExpr(0);
5510
5528
  }
5511
5529
  }
5512
- this.state = 1055;
5530
+ this.state = 1062;
5513
5531
  this.match(MalloyParser.WHEN);
5514
- this.state = 1056;
5532
+ this.state = 1063;
5515
5533
  _localctx._pickWhen = this.partialAllowedFieldExpr();
5516
5534
  }
5517
5535
  }
@@ -5539,32 +5557,32 @@ class MalloyParser extends Parser_1.Parser {
5539
5557
  let _alt;
5540
5558
  this.enterOuterAlt(_localctx, 1);
5541
5559
  {
5542
- this.state = 1058;
5560
+ this.state = 1065;
5543
5561
  this.fieldExpr(0);
5544
- this.state = 1063;
5562
+ this.state = 1070;
5545
5563
  this._errHandler.sync(this);
5546
5564
  _alt = this.interpreter.adaptivePredict(this._input, 106, this._ctx);
5547
5565
  while (_alt !== 2 && _alt !== ATN_1.ATN.INVALID_ALT_NUMBER) {
5548
5566
  if (_alt === 1) {
5549
5567
  {
5550
5568
  {
5551
- this.state = 1059;
5569
+ this.state = 1066;
5552
5570
  this.match(MalloyParser.COMMA);
5553
- this.state = 1060;
5571
+ this.state = 1067;
5554
5572
  this.fieldExpr(0);
5555
5573
  }
5556
5574
  }
5557
5575
  }
5558
- this.state = 1065;
5576
+ this.state = 1072;
5559
5577
  this._errHandler.sync(this);
5560
5578
  _alt = this.interpreter.adaptivePredict(this._input, 106, this._ctx);
5561
5579
  }
5562
- this.state = 1067;
5580
+ this.state = 1074;
5563
5581
  this._errHandler.sync(this);
5564
5582
  _la = this._input.LA(1);
5565
5583
  if (_la === MalloyParser.COMMA) {
5566
5584
  {
5567
- this.state = 1066;
5585
+ this.state = 1073;
5568
5586
  this.match(MalloyParser.COMMA);
5569
5587
  }
5570
5588
  }
@@ -5594,30 +5612,30 @@ class MalloyParser extends Parser_1.Parser {
5594
5612
  let _alt;
5595
5613
  this.enterOuterAlt(_localctx, 1);
5596
5614
  {
5597
- this.state = 1069;
5598
- this.fieldName();
5599
5615
  this.state = 1076;
5616
+ this.fieldName();
5617
+ this.state = 1083;
5600
5618
  this._errHandler.sync(this);
5601
5619
  _alt = this.interpreter.adaptivePredict(this._input, 109, this._ctx);
5602
5620
  while (_alt !== 2 && _alt !== ATN_1.ATN.INVALID_ALT_NUMBER) {
5603
5621
  if (_alt === 1) {
5604
5622
  {
5605
5623
  {
5606
- this.state = 1071;
5624
+ this.state = 1078;
5607
5625
  this._errHandler.sync(this);
5608
5626
  _la = this._input.LA(1);
5609
5627
  if (_la === MalloyParser.COMMA) {
5610
5628
  {
5611
- this.state = 1070;
5629
+ this.state = 1077;
5612
5630
  this.match(MalloyParser.COMMA);
5613
5631
  }
5614
5632
  }
5615
- this.state = 1073;
5633
+ this.state = 1080;
5616
5634
  this.fieldName();
5617
5635
  }
5618
5636
  }
5619
5637
  }
5620
- this.state = 1078;
5638
+ this.state = 1085;
5621
5639
  this._errHandler.sync(this);
5622
5640
  _alt = this.interpreter.adaptivePredict(this._input, 109, this._ctx);
5623
5641
  }
@@ -5647,39 +5665,39 @@ class MalloyParser extends Parser_1.Parser {
5647
5665
  let _alt;
5648
5666
  this.enterOuterAlt(_localctx, 1);
5649
5667
  {
5650
- this.state = 1079;
5651
- this.collectionMember();
5652
5668
  this.state = 1086;
5669
+ this.collectionMember();
5670
+ this.state = 1093;
5653
5671
  this._errHandler.sync(this);
5654
5672
  _alt = this.interpreter.adaptivePredict(this._input, 111, this._ctx);
5655
5673
  while (_alt !== 2 && _alt !== ATN_1.ATN.INVALID_ALT_NUMBER) {
5656
5674
  if (_alt === 1) {
5657
5675
  {
5658
5676
  {
5659
- this.state = 1081;
5677
+ this.state = 1088;
5660
5678
  this._errHandler.sync(this);
5661
5679
  _la = this._input.LA(1);
5662
5680
  if (_la === MalloyParser.COMMA) {
5663
5681
  {
5664
- this.state = 1080;
5682
+ this.state = 1087;
5665
5683
  this.match(MalloyParser.COMMA);
5666
5684
  }
5667
5685
  }
5668
- this.state = 1083;
5686
+ this.state = 1090;
5669
5687
  this.collectionMember();
5670
5688
  }
5671
5689
  }
5672
5690
  }
5673
- this.state = 1088;
5691
+ this.state = 1095;
5674
5692
  this._errHandler.sync(this);
5675
5693
  _alt = this.interpreter.adaptivePredict(this._input, 111, this._ctx);
5676
5694
  }
5677
- this.state = 1090;
5695
+ this.state = 1097;
5678
5696
  this._errHandler.sync(this);
5679
5697
  _la = this._input.LA(1);
5680
5698
  if (_la === MalloyParser.COMMA) {
5681
5699
  {
5682
- this.state = 1089;
5700
+ this.state = 1096;
5683
5701
  this.match(MalloyParser.COMMA);
5684
5702
  }
5685
5703
  }
@@ -5708,18 +5726,18 @@ class MalloyParser extends Parser_1.Parser {
5708
5726
  try {
5709
5727
  this.enterOuterAlt(_localctx, 1);
5710
5728
  {
5711
- this.state = 1095;
5729
+ this.state = 1102;
5712
5730
  this._errHandler.sync(this);
5713
5731
  _la = this._input.LA(1);
5714
5732
  if (_la === MalloyParser.IDENTIFIER || _la === MalloyParser.OBJECT_NAME_LITERAL) {
5715
5733
  {
5716
- this.state = 1092;
5734
+ this.state = 1099;
5717
5735
  this.fieldPath();
5718
- this.state = 1093;
5736
+ this.state = 1100;
5719
5737
  this.match(MalloyParser.DOT);
5720
5738
  }
5721
5739
  }
5722
- this.state = 1097;
5740
+ this.state = 1104;
5723
5741
  _la = this._input.LA(1);
5724
5742
  if (!(_la === MalloyParser.STAR || _la === MalloyParser.STARSTAR)) {
5725
5743
  this._errHandler.recoverInline(this);
@@ -5755,9 +5773,9 @@ class MalloyParser extends Parser_1.Parser {
5755
5773
  try {
5756
5774
  this.enterOuterAlt(_localctx, 1);
5757
5775
  {
5758
- this.state = 1099;
5776
+ this.state = 1106;
5759
5777
  this.tags();
5760
- this.state = 1100;
5778
+ this.state = 1107;
5761
5779
  this.fieldPath();
5762
5780
  }
5763
5781
  }
@@ -5781,27 +5799,27 @@ class MalloyParser extends Parser_1.Parser {
5781
5799
  let _localctx = new CollectionMemberContext(this._ctx, this.state);
5782
5800
  this.enterRule(_localctx, 216, MalloyParser.RULE_collectionMember);
5783
5801
  try {
5784
- this.state = 1105;
5802
+ this.state = 1112;
5785
5803
  this._errHandler.sync(this);
5786
5804
  switch (this.interpreter.adaptivePredict(this._input, 114, this._ctx)) {
5787
5805
  case 1:
5788
5806
  this.enterOuterAlt(_localctx, 1);
5789
5807
  {
5790
- this.state = 1102;
5808
+ this.state = 1109;
5791
5809
  this.taggedRef();
5792
5810
  }
5793
5811
  break;
5794
5812
  case 2:
5795
5813
  this.enterOuterAlt(_localctx, 2);
5796
5814
  {
5797
- this.state = 1103;
5815
+ this.state = 1110;
5798
5816
  this.collectionWildCard();
5799
5817
  }
5800
5818
  break;
5801
5819
  case 3:
5802
5820
  this.enterOuterAlt(_localctx, 3);
5803
5821
  {
5804
- this.state = 1104;
5822
+ this.state = 1111;
5805
5823
  this.fieldDef();
5806
5824
  }
5807
5825
  break;
@@ -5830,23 +5848,23 @@ class MalloyParser extends Parser_1.Parser {
5830
5848
  let _alt;
5831
5849
  this.enterOuterAlt(_localctx, 1);
5832
5850
  {
5833
- this.state = 1107;
5851
+ this.state = 1114;
5834
5852
  this.fieldName();
5835
- this.state = 1112;
5853
+ this.state = 1119;
5836
5854
  this._errHandler.sync(this);
5837
5855
  _alt = this.interpreter.adaptivePredict(this._input, 115, this._ctx);
5838
5856
  while (_alt !== 2 && _alt !== ATN_1.ATN.INVALID_ALT_NUMBER) {
5839
5857
  if (_alt === 1) {
5840
5858
  {
5841
5859
  {
5842
- this.state = 1108;
5860
+ this.state = 1115;
5843
5861
  this.match(MalloyParser.DOT);
5844
- this.state = 1109;
5862
+ this.state = 1116;
5845
5863
  this.fieldName();
5846
5864
  }
5847
5865
  }
5848
5866
  }
5849
- this.state = 1114;
5867
+ this.state = 1121;
5850
5868
  this._errHandler.sync(this);
5851
5869
  _alt = this.interpreter.adaptivePredict(this._input, 115, this._ctx);
5852
5870
  }
@@ -5874,7 +5892,7 @@ class MalloyParser extends Parser_1.Parser {
5874
5892
  try {
5875
5893
  this.enterOuterAlt(_localctx, 1);
5876
5894
  {
5877
- this.state = 1115;
5895
+ this.state = 1122;
5878
5896
  this.id();
5879
5897
  }
5880
5898
  }
@@ -5900,7 +5918,7 @@ class MalloyParser extends Parser_1.Parser {
5900
5918
  try {
5901
5919
  this.enterOuterAlt(_localctx, 1);
5902
5920
  {
5903
- this.state = 1117;
5921
+ this.state = 1124;
5904
5922
  this.id();
5905
5923
  }
5906
5924
  }
@@ -5926,9 +5944,9 @@ class MalloyParser extends Parser_1.Parser {
5926
5944
  try {
5927
5945
  this.enterOuterAlt(_localctx, 1);
5928
5946
  {
5929
- this.state = 1119;
5947
+ this.state = 1126;
5930
5948
  this.fieldExpr(0);
5931
- this.state = 1120;
5949
+ this.state = 1127;
5932
5950
  this.match(MalloyParser.EOF);
5933
5951
  }
5934
5952
  }
@@ -5954,7 +5972,7 @@ class MalloyParser extends Parser_1.Parser {
5954
5972
  try {
5955
5973
  this.enterOuterAlt(_localctx, 1);
5956
5974
  {
5957
- this.state = 1122;
5975
+ this.state = 1129;
5958
5976
  this.jsonValue();
5959
5977
  }
5960
5978
  }
@@ -5978,62 +5996,62 @@ class MalloyParser extends Parser_1.Parser {
5978
5996
  let _localctx = new JsonValueContext(this._ctx, this.state);
5979
5997
  this.enterRule(_localctx, 228, MalloyParser.RULE_jsonValue);
5980
5998
  try {
5981
- this.state = 1132;
5999
+ this.state = 1139;
5982
6000
  this._errHandler.sync(this);
5983
6001
  switch (this._input.LA(1)) {
5984
6002
  case MalloyParser.JSON_STRING:
5985
6003
  this.enterOuterAlt(_localctx, 1);
5986
6004
  {
5987
- this.state = 1124;
6005
+ this.state = 1131;
5988
6006
  this.match(MalloyParser.JSON_STRING);
5989
6007
  }
5990
6008
  break;
5991
6009
  case MalloyParser.INTEGER_LITERAL:
5992
6010
  this.enterOuterAlt(_localctx, 2);
5993
6011
  {
5994
- this.state = 1125;
6012
+ this.state = 1132;
5995
6013
  this.match(MalloyParser.INTEGER_LITERAL);
5996
6014
  }
5997
6015
  break;
5998
6016
  case MalloyParser.NUMERIC_LITERAL:
5999
6017
  this.enterOuterAlt(_localctx, 3);
6000
6018
  {
6001
- this.state = 1126;
6019
+ this.state = 1133;
6002
6020
  this.match(MalloyParser.NUMERIC_LITERAL);
6003
6021
  }
6004
6022
  break;
6005
6023
  case MalloyParser.OCURLY:
6006
6024
  this.enterOuterAlt(_localctx, 4);
6007
6025
  {
6008
- this.state = 1127;
6026
+ this.state = 1134;
6009
6027
  this.jsonObject();
6010
6028
  }
6011
6029
  break;
6012
6030
  case MalloyParser.OBRACK:
6013
6031
  this.enterOuterAlt(_localctx, 5);
6014
6032
  {
6015
- this.state = 1128;
6033
+ this.state = 1135;
6016
6034
  this.jsonArray();
6017
6035
  }
6018
6036
  break;
6019
6037
  case MalloyParser.TRUE:
6020
6038
  this.enterOuterAlt(_localctx, 6);
6021
6039
  {
6022
- this.state = 1129;
6040
+ this.state = 1136;
6023
6041
  this.match(MalloyParser.TRUE);
6024
6042
  }
6025
6043
  break;
6026
6044
  case MalloyParser.FALSE:
6027
6045
  this.enterOuterAlt(_localctx, 7);
6028
6046
  {
6029
- this.state = 1130;
6047
+ this.state = 1137;
6030
6048
  this.match(MalloyParser.FALSE);
6031
6049
  }
6032
6050
  break;
6033
6051
  case MalloyParser.NULL:
6034
6052
  this.enterOuterAlt(_localctx, 8);
6035
6053
  {
6036
- this.state = 1131;
6054
+ this.state = 1138;
6037
6055
  this.match(MalloyParser.NULL);
6038
6056
  }
6039
6057
  break;
@@ -6062,42 +6080,42 @@ class MalloyParser extends Parser_1.Parser {
6062
6080
  this.enterRule(_localctx, 230, MalloyParser.RULE_jsonObject);
6063
6081
  let _la;
6064
6082
  try {
6065
- this.state = 1147;
6083
+ this.state = 1154;
6066
6084
  this._errHandler.sync(this);
6067
6085
  switch (this.interpreter.adaptivePredict(this._input, 118, this._ctx)) {
6068
6086
  case 1:
6069
6087
  this.enterOuterAlt(_localctx, 1);
6070
6088
  {
6071
- this.state = 1134;
6089
+ this.state = 1141;
6072
6090
  this.match(MalloyParser.OCURLY);
6073
- this.state = 1135;
6091
+ this.state = 1142;
6074
6092
  this.jsonProperty();
6075
- this.state = 1140;
6093
+ this.state = 1147;
6076
6094
  this._errHandler.sync(this);
6077
6095
  _la = this._input.LA(1);
6078
6096
  while (_la === MalloyParser.COMMA) {
6079
6097
  {
6080
6098
  {
6081
- this.state = 1136;
6099
+ this.state = 1143;
6082
6100
  this.match(MalloyParser.COMMA);
6083
- this.state = 1137;
6101
+ this.state = 1144;
6084
6102
  this.jsonProperty();
6085
6103
  }
6086
6104
  }
6087
- this.state = 1142;
6105
+ this.state = 1149;
6088
6106
  this._errHandler.sync(this);
6089
6107
  _la = this._input.LA(1);
6090
6108
  }
6091
- this.state = 1143;
6109
+ this.state = 1150;
6092
6110
  this.match(MalloyParser.CCURLY);
6093
6111
  }
6094
6112
  break;
6095
6113
  case 2:
6096
6114
  this.enterOuterAlt(_localctx, 2);
6097
6115
  {
6098
- this.state = 1145;
6116
+ this.state = 1152;
6099
6117
  this.match(MalloyParser.OCURLY);
6100
- this.state = 1146;
6118
+ this.state = 1153;
6101
6119
  this.match(MalloyParser.CCURLY);
6102
6120
  }
6103
6121
  break;
@@ -6125,11 +6143,11 @@ class MalloyParser extends Parser_1.Parser {
6125
6143
  try {
6126
6144
  this.enterOuterAlt(_localctx, 1);
6127
6145
  {
6128
- this.state = 1149;
6146
+ this.state = 1156;
6129
6147
  this.match(MalloyParser.JSON_STRING);
6130
- this.state = 1150;
6148
+ this.state = 1157;
6131
6149
  this.match(MalloyParser.COLON);
6132
- this.state = 1151;
6150
+ this.state = 1158;
6133
6151
  this.jsonValue();
6134
6152
  }
6135
6153
  }
@@ -6154,42 +6172,42 @@ class MalloyParser extends Parser_1.Parser {
6154
6172
  this.enterRule(_localctx, 234, MalloyParser.RULE_jsonArray);
6155
6173
  let _la;
6156
6174
  try {
6157
- this.state = 1166;
6175
+ this.state = 1173;
6158
6176
  this._errHandler.sync(this);
6159
6177
  switch (this.interpreter.adaptivePredict(this._input, 120, this._ctx)) {
6160
6178
  case 1:
6161
6179
  this.enterOuterAlt(_localctx, 1);
6162
6180
  {
6163
- this.state = 1153;
6181
+ this.state = 1160;
6164
6182
  this.match(MalloyParser.OBRACK);
6165
- this.state = 1154;
6183
+ this.state = 1161;
6166
6184
  this.jsonValue();
6167
- this.state = 1159;
6185
+ this.state = 1166;
6168
6186
  this._errHandler.sync(this);
6169
6187
  _la = this._input.LA(1);
6170
6188
  while (_la === MalloyParser.COMMA) {
6171
6189
  {
6172
6190
  {
6173
- this.state = 1155;
6191
+ this.state = 1162;
6174
6192
  this.match(MalloyParser.COMMA);
6175
- this.state = 1156;
6193
+ this.state = 1163;
6176
6194
  this.jsonValue();
6177
6195
  }
6178
6196
  }
6179
- this.state = 1161;
6197
+ this.state = 1168;
6180
6198
  this._errHandler.sync(this);
6181
6199
  _la = this._input.LA(1);
6182
6200
  }
6183
- this.state = 1162;
6201
+ this.state = 1169;
6184
6202
  this.match(MalloyParser.CBRACK);
6185
6203
  }
6186
6204
  break;
6187
6205
  case 2:
6188
6206
  this.enterOuterAlt(_localctx, 2);
6189
6207
  {
6190
- this.state = 1164;
6208
+ this.state = 1171;
6191
6209
  this.match(MalloyParser.OBRACK);
6192
- this.state = 1165;
6210
+ this.state = 1172;
6193
6211
  this.match(MalloyParser.CBRACK);
6194
6212
  }
6195
6213
  break;
@@ -6217,7 +6235,7 @@ class MalloyParser extends Parser_1.Parser {
6217
6235
  try {
6218
6236
  this.enterOuterAlt(_localctx, 1);
6219
6237
  {
6220
- this.state = 1168;
6238
+ this.state = 1175;
6221
6239
  this.id();
6222
6240
  }
6223
6241
  }
@@ -6243,7 +6261,7 @@ class MalloyParser extends Parser_1.Parser {
6243
6261
  try {
6244
6262
  this.enterOuterAlt(_localctx, 1);
6245
6263
  {
6246
- this.state = 1170;
6264
+ this.state = 1177;
6247
6265
  this.id();
6248
6266
  }
6249
6267
  }
@@ -6269,7 +6287,7 @@ class MalloyParser extends Parser_1.Parser {
6269
6287
  try {
6270
6288
  this.enterOuterAlt(_localctx, 1);
6271
6289
  {
6272
- this.state = 1172;
6290
+ this.state = 1179;
6273
6291
  this.match(MalloyParser.JSON_STRING);
6274
6292
  }
6275
6293
  }
@@ -6368,7 +6386,7 @@ MalloyParser.RUN = 25;
6368
6386
  MalloyParser.SAMPLE = 26;
6369
6387
  MalloyParser.SELECT = 27;
6370
6388
  MalloyParser.SOURCE = 28;
6371
- MalloyParser.SQL = 29;
6389
+ MalloyParser.SQLC = 29;
6372
6390
  MalloyParser.TOP = 30;
6373
6391
  MalloyParser.WHERE = 31;
6374
6392
  MalloyParser.TIMEZONE = 32;
@@ -6415,77 +6433,78 @@ MalloyParser.QUARTER = 72;
6415
6433
  MalloyParser.SECOND = 73;
6416
6434
  MalloyParser.STRING = 74;
6417
6435
  MalloyParser.SUM = 75;
6418
- MalloyParser.TABLE = 76;
6419
- MalloyParser.THEN = 77;
6420
- MalloyParser.THIS = 78;
6421
- MalloyParser.TIMESTAMP = 79;
6422
- MalloyParser.TO = 80;
6423
- MalloyParser.TRUE = 81;
6424
- MalloyParser.TURTLE = 82;
6425
- MalloyParser.WEEK = 83;
6426
- MalloyParser.WHEN = 84;
6427
- MalloyParser.WITH = 85;
6428
- MalloyParser.YEAR = 86;
6429
- MalloyParser.UNGROUPED = 87;
6430
- MalloyParser.STRING_ESCAPE = 88;
6431
- MalloyParser.HACKY_REGEX = 89;
6432
- MalloyParser.STRING_LITERAL = 90;
6433
- MalloyParser.DOC_ANNOTATION = 91;
6434
- MalloyParser.ANNOTATION = 92;
6435
- MalloyParser.AMPER = 93;
6436
- MalloyParser.ARROW = 94;
6437
- MalloyParser.FAT_ARROW = 95;
6438
- MalloyParser.OPAREN = 96;
6439
- MalloyParser.CPAREN = 97;
6440
- MalloyParser.OBRACK = 98;
6441
- MalloyParser.CBRACK = 99;
6442
- MalloyParser.OCURLY = 100;
6443
- MalloyParser.CCURLY = 101;
6444
- MalloyParser.DOUBLECOLON = 102;
6445
- MalloyParser.TRIPLECOLON = 103;
6446
- MalloyParser.EXCLAM = 104;
6447
- MalloyParser.COLON = 105;
6448
- MalloyParser.COMMA = 106;
6449
- MalloyParser.DOT = 107;
6450
- MalloyParser.LT = 108;
6451
- MalloyParser.GT = 109;
6452
- MalloyParser.EQ = 110;
6453
- MalloyParser.NE = 111;
6454
- MalloyParser.LTE = 112;
6455
- MalloyParser.GTE = 113;
6456
- MalloyParser.PLUS = 114;
6457
- MalloyParser.MINUS = 115;
6458
- MalloyParser.STAR = 116;
6459
- MalloyParser.STARSTAR = 117;
6460
- MalloyParser.SLASH = 118;
6461
- MalloyParser.BAR = 119;
6462
- MalloyParser.SEMI = 120;
6463
- MalloyParser.NOT_MATCH = 121;
6464
- MalloyParser.MATCH = 122;
6465
- MalloyParser.PERCENT = 123;
6466
- MalloyParser.DOUBLE_QMARK = 124;
6467
- MalloyParser.QMARK = 125;
6468
- MalloyParser.LITERAL_TIMESTAMP = 126;
6469
- MalloyParser.LITERAL_HOUR = 127;
6470
- MalloyParser.LITERAL_DAY = 128;
6471
- MalloyParser.LITERAL_QUARTER = 129;
6472
- MalloyParser.LITERAL_MONTH = 130;
6473
- MalloyParser.LITERAL_WEEK = 131;
6474
- MalloyParser.LITERAL_YEAR = 132;
6475
- MalloyParser.IDENTIFIER = 133;
6476
- MalloyParser.PERCENT_LITERAL = 134;
6477
- MalloyParser.INTEGER_LITERAL = 135;
6478
- MalloyParser.NUMERIC_LITERAL = 136;
6479
- MalloyParser.OBJECT_NAME_LITERAL = 137;
6480
- MalloyParser.BLOCK_COMMENT = 138;
6481
- MalloyParser.COMMENT_TO_EOL = 139;
6482
- MalloyParser.WHITE_SPACE = 140;
6483
- MalloyParser.SQL_BEGIN = 141;
6484
- MalloyParser.CLOSE_CODE = 142;
6485
- MalloyParser.UNWATED_CHARS_TRAILING_NUMBERS = 143;
6486
- MalloyParser.UNEXPECTED_CHAR = 144;
6487
- MalloyParser.OPEN_CODE = 145;
6488
- MalloyParser.SQL_END = 146;
6436
+ MalloyParser.SQL = 76;
6437
+ MalloyParser.TABLE = 77;
6438
+ MalloyParser.THEN = 78;
6439
+ MalloyParser.THIS = 79;
6440
+ MalloyParser.TIMESTAMP = 80;
6441
+ MalloyParser.TO = 81;
6442
+ MalloyParser.TRUE = 82;
6443
+ MalloyParser.TURTLE = 83;
6444
+ MalloyParser.WEEK = 84;
6445
+ MalloyParser.WHEN = 85;
6446
+ MalloyParser.WITH = 86;
6447
+ MalloyParser.YEAR = 87;
6448
+ MalloyParser.UNGROUPED = 88;
6449
+ MalloyParser.STRING_ESCAPE = 89;
6450
+ MalloyParser.HACKY_REGEX = 90;
6451
+ MalloyParser.STRING_LITERAL = 91;
6452
+ MalloyParser.DOC_ANNOTATION = 92;
6453
+ MalloyParser.ANNOTATION = 93;
6454
+ MalloyParser.AMPER = 94;
6455
+ MalloyParser.ARROW = 95;
6456
+ MalloyParser.FAT_ARROW = 96;
6457
+ MalloyParser.OPAREN = 97;
6458
+ MalloyParser.CPAREN = 98;
6459
+ MalloyParser.OBRACK = 99;
6460
+ MalloyParser.CBRACK = 100;
6461
+ MalloyParser.OCURLY = 101;
6462
+ MalloyParser.CCURLY = 102;
6463
+ MalloyParser.DOUBLECOLON = 103;
6464
+ MalloyParser.TRIPLECOLON = 104;
6465
+ MalloyParser.EXCLAM = 105;
6466
+ MalloyParser.COLON = 106;
6467
+ MalloyParser.COMMA = 107;
6468
+ MalloyParser.DOT = 108;
6469
+ MalloyParser.LT = 109;
6470
+ MalloyParser.GT = 110;
6471
+ MalloyParser.EQ = 111;
6472
+ MalloyParser.NE = 112;
6473
+ MalloyParser.LTE = 113;
6474
+ MalloyParser.GTE = 114;
6475
+ MalloyParser.PLUS = 115;
6476
+ MalloyParser.MINUS = 116;
6477
+ MalloyParser.STAR = 117;
6478
+ MalloyParser.STARSTAR = 118;
6479
+ MalloyParser.SLASH = 119;
6480
+ MalloyParser.BAR = 120;
6481
+ MalloyParser.SEMI = 121;
6482
+ MalloyParser.NOT_MATCH = 122;
6483
+ MalloyParser.MATCH = 123;
6484
+ MalloyParser.PERCENT = 124;
6485
+ MalloyParser.DOUBLE_QMARK = 125;
6486
+ MalloyParser.QMARK = 126;
6487
+ MalloyParser.LITERAL_TIMESTAMP = 127;
6488
+ MalloyParser.LITERAL_HOUR = 128;
6489
+ MalloyParser.LITERAL_DAY = 129;
6490
+ MalloyParser.LITERAL_QUARTER = 130;
6491
+ MalloyParser.LITERAL_MONTH = 131;
6492
+ MalloyParser.LITERAL_WEEK = 132;
6493
+ MalloyParser.LITERAL_YEAR = 133;
6494
+ MalloyParser.IDENTIFIER = 134;
6495
+ MalloyParser.PERCENT_LITERAL = 135;
6496
+ MalloyParser.INTEGER_LITERAL = 136;
6497
+ MalloyParser.NUMERIC_LITERAL = 137;
6498
+ MalloyParser.OBJECT_NAME_LITERAL = 138;
6499
+ MalloyParser.BLOCK_COMMENT = 139;
6500
+ MalloyParser.COMMENT_TO_EOL = 140;
6501
+ MalloyParser.WHITE_SPACE = 141;
6502
+ MalloyParser.SQL_BEGIN = 142;
6503
+ MalloyParser.CLOSE_CODE = 143;
6504
+ MalloyParser.UNWATED_CHARS_TRAILING_NUMBERS = 144;
6505
+ MalloyParser.UNEXPECTED_CHAR = 145;
6506
+ MalloyParser.OPEN_CODE = 146;
6507
+ MalloyParser.SQL_END = 147;
6489
6508
  MalloyParser.RULE_malloyDocument = 0;
6490
6509
  MalloyParser.RULE_malloyStatement = 1;
6491
6510
  MalloyParser.RULE_defineSourceStatement = 2;
@@ -6650,31 +6669,32 @@ MalloyParser._LITERAL_NAMES = [
6650
6669
  undefined, undefined, undefined, undefined, undefined, undefined, undefined,
6651
6670
  undefined, undefined, undefined, undefined, undefined, undefined, undefined,
6652
6671
  undefined, undefined, undefined, undefined, undefined, undefined, undefined,
6653
- undefined, undefined, "'&'", "'->'", "'=>'", "'('", "')'", "'['", "']'",
6654
- "'{'", "'}'", "'::'", "':::'", "'!'", "':'", "','", "'.'", "'<'", "'>'",
6655
- "'='", "'!='", "'<='", "'>='", "'+'", "'-'", "'*'", "'**'", "'/'", "'|'",
6656
- "';'", "'!~'", "'~'", "'%'", "'??'", "'?'", undefined, undefined, undefined,
6672
+ undefined, undefined, undefined, "'&'", "'->'", "'=>'", "'('", "')'",
6673
+ "'['", "']'", "'{'", "'}'", "'::'", "':::'", "'!'", "':'", "','", "'.'",
6674
+ "'<'", "'>'", "'='", "'!='", "'<='", "'>='", "'+'", "'-'", "'*'", "'**'",
6675
+ "'/'", "'|'", "';'", "'!~'", "'~'", "'%'", "'??'", "'?'", undefined, undefined,
6657
6676
  undefined, undefined, undefined, undefined, undefined, undefined, undefined,
6658
- undefined, undefined, undefined, undefined, undefined, "'\"\"\"'", "'}%'",
6677
+ undefined, undefined, undefined, undefined, undefined, undefined, "'\"\"\"'",
6678
+ "'}%'",
6659
6679
  ];
6660
6680
  MalloyParser._SYMBOLIC_NAMES = [
6661
6681
  undefined, "JSON_STRING", "ACCEPT", "AGGREGATE", "CALCULATE", "CALCULATION",
6662
6682
  "CONNECTION", "DECLARE", "DIMENSION", "EXCEPT", "EXTENDQ", "GROUP_BY",
6663
6683
  "HAVING", "INDEX", "JOIN_CROSS", "JOIN_ONE", "JOIN_MANY", "LIMIT", "MEASURE",
6664
6684
  "NEST", "ORDER_BY", "PRIMARY_KEY", "PROJECT", "QUERY", "RENAME", "RUN",
6665
- "SAMPLE", "SELECT", "SOURCE", "SQL", "TOP", "WHERE", "TIMEZONE", "ALL",
6685
+ "SAMPLE", "SELECT", "SOURCE", "SQLC", "TOP", "WHERE", "TIMEZONE", "ALL",
6666
6686
  "AND", "AS", "ASC", "AVG", "BOOLEAN", "BY", "CASE", "CAST", "CONDITION",
6667
6687
  "COUNT", "DATE", "DAY", "DESC", "DISTINCT", "ELSE", "END", "EXCLUDE",
6668
6688
  "FALSE", "FOR", "FROM", "FROM_SQL", "HAS", "HOUR", "IMPORT", "IS", "JSON",
6669
6689
  "LAST", "MAX", "MIN", "MINUTE", "MONTH", "NOT", "NOW", "NULL", "NUMBER",
6670
- "ON", "OR", "PICK", "QUARTER", "SECOND", "STRING", "SUM", "TABLE", "THEN",
6671
- "THIS", "TIMESTAMP", "TO", "TRUE", "TURTLE", "WEEK", "WHEN", "WITH", "YEAR",
6672
- "UNGROUPED", "STRING_ESCAPE", "HACKY_REGEX", "STRING_LITERAL", "DOC_ANNOTATION",
6673
- "ANNOTATION", "AMPER", "ARROW", "FAT_ARROW", "OPAREN", "CPAREN", "OBRACK",
6674
- "CBRACK", "OCURLY", "CCURLY", "DOUBLECOLON", "TRIPLECOLON", "EXCLAM",
6675
- "COLON", "COMMA", "DOT", "LT", "GT", "EQ", "NE", "LTE", "GTE", "PLUS",
6676
- "MINUS", "STAR", "STARSTAR", "SLASH", "BAR", "SEMI", "NOT_MATCH", "MATCH",
6677
- "PERCENT", "DOUBLE_QMARK", "QMARK", "LITERAL_TIMESTAMP", "LITERAL_HOUR",
6690
+ "ON", "OR", "PICK", "QUARTER", "SECOND", "STRING", "SUM", "SQL", "TABLE",
6691
+ "THEN", "THIS", "TIMESTAMP", "TO", "TRUE", "TURTLE", "WEEK", "WHEN", "WITH",
6692
+ "YEAR", "UNGROUPED", "STRING_ESCAPE", "HACKY_REGEX", "STRING_LITERAL",
6693
+ "DOC_ANNOTATION", "ANNOTATION", "AMPER", "ARROW", "FAT_ARROW", "OPAREN",
6694
+ "CPAREN", "OBRACK", "CBRACK", "OCURLY", "CCURLY", "DOUBLECOLON", "TRIPLECOLON",
6695
+ "EXCLAM", "COLON", "COMMA", "DOT", "LT", "GT", "EQ", "NE", "LTE", "GTE",
6696
+ "PLUS", "MINUS", "STAR", "STARSTAR", "SLASH", "BAR", "SEMI", "NOT_MATCH",
6697
+ "MATCH", "PERCENT", "DOUBLE_QMARK", "QMARK", "LITERAL_TIMESTAMP", "LITERAL_HOUR",
6678
6698
  "LITERAL_DAY", "LITERAL_QUARTER", "LITERAL_MONTH", "LITERAL_WEEK", "LITERAL_YEAR",
6679
6699
  "IDENTIFIER", "PERCENT_LITERAL", "INTEGER_LITERAL", "NUMERIC_LITERAL",
6680
6700
  "OBJECT_NAME_LITERAL", "BLOCK_COMMENT", "COMMENT_TO_EOL", "WHITE_SPACE",
@@ -6683,7 +6703,7 @@ MalloyParser._SYMBOLIC_NAMES = [
6683
6703
  ];
6684
6704
  MalloyParser.VOCABULARY = new VocabularyImpl_1.VocabularyImpl(MalloyParser._LITERAL_NAMES, MalloyParser._SYMBOLIC_NAMES, []);
6685
6705
  MalloyParser._serializedATNSegments = 3;
6686
- MalloyParser._serializedATNSegment0 = "\x03\uC91D\uCABA\u058D\uAFBA\u4F53\u0607\uEA8B\uC241\x03\x94\u0499\x04" +
6706
+ MalloyParser._serializedATNSegment0 = "\x03\uC91D\uCABA\u058D\uAFBA\u4F53\u0607\uEA8B\uC241\x03\x95\u04A0\x04" +
6687
6707
  "\x02\t\x02\x04\x03\t\x03\x04\x04\t\x04\x04\x05\t\x05\x04\x06\t\x06\x04" +
6688
6708
  "\x07\t\x07\x04\b\t\b\x04\t\t\t\x04\n\t\n\x04\v\t\v\x04\f\t\f\x04\r\t\r" +
6689
6709
  "\x04\x0E\t\x0E\x04\x0F\t\x0F\x04\x10\t\x10\x04\x11\t\x11\x04\x12\t\x12" +
@@ -6726,549 +6746,554 @@ MalloyParser._serializedATNSegment0 = "\x03\uC91D\uCABA\u058D\uAFBA\u4F53\u0607\
6726
6746
  "\x1F\x03 \x03 \x03!\x03!\x05!\u01C1\n!\x03!\x07!\u01C4\n!\f!\x0E!\u01C7" +
6727
6747
  "\v!\x03!\x05!\u01CA\n!\x03\"\x03\"\x03\"\x03\"\x03\"\x03#\x03#\x05#\u01D3" +
6728
6748
  "\n#\x03#\x05#\u01D6\n#\x03$\x03$\x03$\x03$\x03$\x03$\x03$\x03$\x03$\x03" +
6729
- "$\x03$\x03$\x05$\u01E4\n$\x03%\x03%\x03&\x03&\x03\'\x03\'\x03\'\x07\'" +
6730
- "\u01ED\n\'\f\'\x0E\'\u01F0\v\'\x03\'\x03\'\x05\'\u01F4\n\'\x03(\x03(\x03" +
6731
- "(\x03(\x03(\x03(\x03(\x03(\x03(\x03(\x03(\x03(\x03(\x03(\x03(\x03(\x03" +
6732
- "(\x06(\u0207\n(\r(\x0E(\u0208\x03(\x05(\u020C\n(\x03)\x03)\x03)\x03)\x03" +
6733
- "*\x03*\x03*\x03*\x03+\x03+\x05+\u0218\n+\x03+\x07+\u021B\n+\f+\x0E+\u021E" +
6734
- "\v+\x03+\x05+\u0221\n+\x03,\x03,\x03,\x03,\x03-\x03-\x05-\u0229\n-\x03" +
6735
- "-\x07-\u022C\n-\f-\x0E-\u022F\v-\x03-\x05-\u0232\n-\x03.\x03.\x03.\x03" +
6736
- ".\x03.\x03/\x03/\x030\x030\x031\x031\x031\x032\x032\x032\x032\x032\x03" +
6737
- "2\x032\x032\x032\x032\x032\x032\x052\u024C\n2\x033\x033\x033\x034\x03" +
6738
- "4\x034\x054\u0254\n4\x035\x035\x035\x075\u0259\n5\f5\x0E5\u025C\v5\x03" +
6739
- "5\x035\x036\x036\x056\u0262\n6\x036\x076\u0265\n6\f6\x0E6\u0268\v6\x03" +
6740
- "6\x056\u026B\n6\x037\x037\x037\x037\x037\x038\x078\u0273\n8\f8\x0E8\u0276" +
6741
- "\v8\x038\x038\x058\u027A\n8\x038\x038\x038\x038\x078\u0280\n8\f8\x0E8" +
6742
- "\u0283\v8\x038\x038\x058\u0287\n8\x038\x038\x058\u028B\n8\x058\u028D\n" +
6743
- "8\x039\x039\x03:\x03:\x05:\u0293\n:\x03;\x03;\x03;\x05;\u0298\n;\x03<" +
6744
- "\x03<\x03<\x07<\u029D\n<\f<\x0E<\u02A0\v<\x03<\x05<\u02A3\n<\x03=\x03" +
6745
- "=\x03=\x03>\x03>\x03>\x03?\x03?\x05?\u02AD\n?\x03?\x07?\u02B0\n?\f?\x0E" +
6746
- "?\u02B3\v?\x03?\x05?\u02B6\n?\x03@\x03@\x03A\x07A\u02BB\nA\fA\x0EA\u02BE" +
6747
- "\vA\x03A\x03A\x03A\x03A\x03B\x03B\x03B\x03B\x03B\x03B\x03B\x03B\x03B\x03" +
6748
- "B\x03B\x03B\x03B\x03B\x03B\x03B\x03B\x03B\x05B\u02D6\nB\x03C\x03C\x03" +
6749
- "D\x03D\x03D\x03D\x03E\x03E\x05E\u02E0\nE\x03E\x07E\u02E3\nE\fE\x0EE\u02E6" +
6750
- "\vE\x03E\x05E\u02E9\nE\x03F\x03F\x05F\u02ED\nF\x03G\x03G\x03G\x03G\x03" +
6751
- "H\x03H\x05H\u02F5\nH\x03H\x07H\u02F8\nH\fH\x0EH\u02FB\vH\x03H\x05H\u02FE" +
6752
- "\nH\x03I\x03I\x03I\x05I\u0303\nI\x03I\x05I\u0306\nI\x03I\x03I\x03I\x03" +
6753
- "I\x03I\x05I\u030D\nI\x03J\x03J\x03J\x03J\x03K\x03K\x03K\x03K\x03L\x03" +
6754
- "L\x03L\x03L\x03M\x03M\x03M\x03N\x03N\x05N\u0320\nN\x03N\x07N\u0323\nN" +
6755
- "\fN\x0EN\u0326\vN\x03N\x05N\u0329\nN\x03O\x03O\x05O\u032D\nO\x03O\x05" +
6756
- "O\u0330\nO\x03P\x03P\x03P\x03Q\x03Q\x03Q\x03Q\x05Q\u0339\nQ\x03R\x03R" +
6757
- "\x03R\x05R\u033E\nR\x03S\x03S\x03S\x05S\u0343\nS\x03S\x03S\x05S\u0347" +
6758
- "\nS\x03T\x03T\x05T\u034B\nT\x03T\x07T\u034E\nT\fT\x0ET\u0351\vT\x03U\x03" +
6759
- "U\x03U\x03U\x05U\u0357\nU\x03V\x03V\x03V\x03W\x03W\x03W\x03X\x03X\x03" +
6760
- "Y\x03Y\x03Z\x03Z\x03[\x03[\x03\\\x03\\\x03]\x03]\x03^\x03^\x03^\x03^\x03" +
6761
- "^\x03^\x03^\x05^\u0372\n^\x03_\x03_\x03_\x03_\x03_\x03_\x03_\x05_\u037B" +
6762
- "\n_\x03`\x03`\x03a\x03a\x03b\x03b\x03c\x03c\x03d\x03d\x03e\x03e\x03e\x03" +
6763
- "e\x03e\x03e\x03e\x03e\x03e\x03e\x03e\x03e\x03e\x03e\x03e\x03e\x03e\x03" +
6764
- "e\x03e\x03e\x03e\x03e\x03e\x05e\u039E\ne\x03e\x03e\x03e\x03e\x05e\u03A4" +
6765
- "\ne\x03e\x03e\x03e\x03e\x03e\x03e\x03e\x03e\x03e\x05e\u03AF\ne\x03e\x03" +
6766
- "e\x03e\x05e\u03B4\ne\x03e\x03e\x03e\x03e\x03e\x05e\u03BB\ne\x05e\u03BD" +
6767
- "\ne\x03e\x05e\u03C0\ne\x03e\x03e\x05e\u03C4\ne\x03e\x03e\x03e\x03e\x03" +
6768
- "e\x03e\x03e\x03e\x07e\u03CE\ne\fe\x0Ee\u03D1\ve\x03e\x03e\x05e\u03D5\n" +
6749
+ "$\x03$\x03$\x03$\x03$\x03$\x03$\x03$\x03$\x03$\x05$\u01EB\n$\x03%\x03" +
6750
+ "%\x03&\x03&\x03\'\x03\'\x03\'\x07\'\u01F4\n\'\f\'\x0E\'\u01F7\v\'\x03" +
6751
+ "\'\x03\'\x05\'\u01FB\n\'\x03(\x03(\x03(\x03(\x03(\x03(\x03(\x03(\x03(" +
6752
+ "\x03(\x03(\x03(\x03(\x03(\x03(\x03(\x03(\x06(\u020E\n(\r(\x0E(\u020F\x03" +
6753
+ "(\x05(\u0213\n(\x03)\x03)\x03)\x03)\x03*\x03*\x03*\x03*\x03+\x03+\x05" +
6754
+ "+\u021F\n+\x03+\x07+\u0222\n+\f+\x0E+\u0225\v+\x03+\x05+\u0228\n+\x03" +
6755
+ ",\x03,\x03,\x03,\x03-\x03-\x05-\u0230\n-\x03-\x07-\u0233\n-\f-\x0E-\u0236" +
6756
+ "\v-\x03-\x05-\u0239\n-\x03.\x03.\x03.\x03.\x03.\x03/\x03/\x030\x030\x03" +
6757
+ "1\x031\x031\x032\x032\x032\x032\x032\x032\x032\x032\x032\x032\x032\x03" +
6758
+ "2\x052\u0253\n2\x033\x033\x033\x034\x034\x034\x054\u025B\n4\x035\x035" +
6759
+ "\x035\x075\u0260\n5\f5\x0E5\u0263\v5\x035\x035\x036\x036\x056\u0269\n" +
6760
+ "6\x036\x076\u026C\n6\f6\x0E6\u026F\v6\x036\x056\u0272\n6\x037\x037\x03" +
6761
+ "7\x037\x037\x038\x078\u027A\n8\f8\x0E8\u027D\v8\x038\x038\x058\u0281\n" +
6762
+ "8\x038\x038\x038\x038\x078\u0287\n8\f8\x0E8\u028A\v8\x038\x038\x058\u028E" +
6763
+ "\n8\x038\x038\x058\u0292\n8\x058\u0294\n8\x039\x039\x03:\x03:\x05:\u029A" +
6764
+ "\n:\x03;\x03;\x03;\x05;\u029F\n;\x03<\x03<\x03<\x07<\u02A4\n<\f<\x0E<" +
6765
+ "\u02A7\v<\x03<\x05<\u02AA\n<\x03=\x03=\x03=\x03>\x03>\x03>\x03?\x03?\x05" +
6766
+ "?\u02B4\n?\x03?\x07?\u02B7\n?\f?\x0E?\u02BA\v?\x03?\x05?\u02BD\n?\x03" +
6767
+ "@\x03@\x03A\x07A\u02C2\nA\fA\x0EA\u02C5\vA\x03A\x03A\x03A\x03A\x03B\x03" +
6768
+ "B\x03B\x03B\x03B\x03B\x03B\x03B\x03B\x03B\x03B\x03B\x03B\x03B\x03B\x03" +
6769
+ "B\x03B\x03B\x05B\u02DD\nB\x03C\x03C\x03D\x03D\x03D\x03D\x03E\x03E\x05" +
6770
+ "E\u02E7\nE\x03E\x07E\u02EA\nE\fE\x0EE\u02ED\vE\x03E\x05E\u02F0\nE\x03" +
6771
+ "F\x03F\x05F\u02F4\nF\x03G\x03G\x03G\x03G\x03H\x03H\x05H\u02FC\nH\x03H" +
6772
+ "\x07H\u02FF\nH\fH\x0EH\u0302\vH\x03H\x05H\u0305\nH\x03I\x03I\x03I\x05" +
6773
+ "I\u030A\nI\x03I\x05I\u030D\nI\x03I\x03I\x03I\x03I\x03I\x05I\u0314\nI\x03" +
6774
+ "J\x03J\x03J\x03J\x03K\x03K\x03K\x03K\x03L\x03L\x03L\x03L\x03M\x03M\x03" +
6775
+ "M\x03N\x03N\x05N\u0327\nN\x03N\x07N\u032A\nN\fN\x0EN\u032D\vN\x03N\x05" +
6776
+ "N\u0330\nN\x03O\x03O\x05O\u0334\nO\x03O\x05O\u0337\nO\x03P\x03P\x03P\x03" +
6777
+ "Q\x03Q\x03Q\x03Q\x05Q\u0340\nQ\x03R\x03R\x03R\x05R\u0345\nR\x03S\x03S" +
6778
+ "\x03S\x05S\u034A\nS\x03S\x03S\x05S\u034E\nS\x03T\x03T\x05T\u0352\nT\x03" +
6779
+ "T\x07T\u0355\nT\fT\x0ET\u0358\vT\x03U\x03U\x03U\x03U\x05U\u035E\nU\x03" +
6780
+ "V\x03V\x03V\x03W\x03W\x03W\x03X\x03X\x03Y\x03Y\x03Z\x03Z\x03[\x03[\x03" +
6781
+ "\\\x03\\\x03]\x03]\x03^\x03^\x03^\x03^\x03^\x03^\x03^\x05^\u0379\n^\x03" +
6782
+ "_\x03_\x03_\x03_\x03_\x03_\x03_\x05_\u0382\n_\x03`\x03`\x03a\x03a\x03" +
6783
+ "b\x03b\x03c\x03c\x03d\x03d\x03e\x03e\x03e\x03e\x03e\x03e\x03e\x03e\x03" +
6769
6784
  "e\x03e\x03e\x03e\x03e\x03e\x03e\x03e\x03e\x03e\x03e\x03e\x03e\x03e\x03" +
6785
+ "e\x05e\u03A5\ne\x03e\x03e\x03e\x03e\x05e\u03AB\ne\x03e\x03e\x03e\x03e" +
6786
+ "\x03e\x03e\x03e\x03e\x03e\x05e\u03B6\ne\x03e\x03e\x03e\x05e\u03BB\ne\x03" +
6787
+ "e\x03e\x03e\x03e\x03e\x05e\u03C2\ne\x05e\u03C4\ne\x03e\x05e\u03C7\ne\x03" +
6788
+ "e\x03e\x05e\u03CB\ne\x03e\x03e\x03e\x03e\x03e\x03e\x03e\x03e\x07e\u03D5" +
6789
+ "\ne\fe\x0Ee\u03D8\ve\x03e\x03e\x05e\u03DC\ne\x03e\x03e\x03e\x03e\x03e" +
6790
+ "\x03e\x03e\x03e\x03e\x03e\x03e\x03e\x03e\x03e\x03e\x03e\x03e\x03e\x03" +
6770
6791
  "e\x03e\x03e\x03e\x03e\x03e\x03e\x03e\x03e\x03e\x03e\x03e\x03e\x03e\x03" +
6771
6792
  "e\x03e\x03e\x03e\x03e\x03e\x03e\x03e\x03e\x03e\x03e\x03e\x03e\x03e\x03" +
6772
- "e\x03e\x03e\x03e\x03e\x03e\x03e\x03e\x03e\x03e\x03e\x07e\u040B\ne\fe\x0E" +
6773
- "e\u040E\ve\x03f\x05f\u0411\nf\x03f\x03f\x03g\x06g\u0416\ng\rg\x0Eg\u0417" +
6774
- "\x03g\x03g\x05g\u041C\ng\x03h\x03h\x05h\u0420\nh\x03h\x03h\x03h\x03i\x03" +
6775
- "i\x03i\x07i\u0428\ni\fi\x0Ei\u042B\vi\x03i\x05i\u042E\ni\x03j\x03j\x05" +
6776
- "j\u0432\nj\x03j\x07j\u0435\nj\fj\x0Ej\u0438\vj\x03k\x03k\x05k\u043C\n" +
6777
- "k\x03k\x07k\u043F\nk\fk\x0Ek\u0442\vk\x03k\x05k\u0445\nk\x03l\x03l\x03" +
6778
- "l\x05l\u044A\nl\x03l\x03l\x03m\x03m\x03m\x03n\x03n\x03n\x05n\u0454\nn" +
6779
- "\x03o\x03o\x03o\x07o\u0459\no\fo\x0Eo\u045C\vo\x03p\x03p\x03q\x03q\x03" +
6780
- "r\x03r\x03r\x03s\x03s\x03t\x03t\x03t\x03t\x03t\x03t\x03t\x03t\x05t\u046F" +
6781
- "\nt\x03u\x03u\x03u\x03u\x07u\u0475\nu\fu\x0Eu\u0478\vu\x03u\x03u\x03u" +
6782
- "\x03u\x05u\u047E\nu\x03v\x03v\x03v\x03v\x03w\x03w\x03w\x03w\x07w\u0488" +
6783
- "\nw\fw\x0Ew\u048B\vw\x03w\x03w\x03w\x03w\x05w\u0491\nw\x03x\x03x\x03y" +
6784
- "\x03y\x03z\x03z\x03z\x02\x02\x03\xC8{\x02\x02\x04\x02\x06\x02\b\x02\n" +
6785
- "\x02\f\x02\x0E\x02\x10\x02\x12\x02\x14\x02\x16\x02\x18\x02\x1A\x02\x1C" +
6786
- "\x02\x1E\x02 \x02\"\x02$\x02&\x02(\x02*\x02,\x02.\x020\x022\x024\x026" +
6787
- "\x028\x02:\x02<\x02>\x02@\x02B\x02D\x02F\x02H\x02J\x02L\x02N\x02P\x02" +
6788
- "R\x02T\x02V\x02X\x02Z\x02\\\x02^\x02`\x02b\x02d\x02f\x02h\x02j\x02l\x02" +
6789
- "n\x02p\x02r\x02t\x02v\x02x\x02z\x02|\x02~\x02\x80\x02\x82\x02\x84\x02" +
6790
- "\x86\x02\x88\x02\x8A\x02\x8C\x02\x8E\x02\x90\x02\x92\x02\x94\x02\x96\x02" +
6791
- "\x98\x02\x9A\x02\x9C\x02\x9E\x02\xA0\x02\xA2\x02\xA4\x02\xA6\x02\xA8\x02" +
6792
- "\xAA\x02\xAC\x02\xAE\x02\xB0\x02\xB2\x02\xB4\x02\xB6\x02\xB8\x02\xBA\x02" +
6793
- "\xBC\x02\xBE\x02\xC0\x02\xC2\x02\xC4\x02\xC6\x02\xC8\x02\xCA\x02\xCC\x02" +
6794
- "\xCE\x02\xD0\x02\xD2\x02\xD4\x02\xD6\x02\xD8\x02\xDA\x02\xDC\x02\xDE\x02" +
6795
- "\xE0\x02\xE2\x02\xE4\x02\xE6\x02\xE8\x02\xEA\x02\xEC\x02\xEE\x02\xF0\x02" +
6796
- "\xF2\x02\x02\x10\x04\x02\x04\x04\v\v\x04\x02&&00\x05\x0255SS\x88\x89\x06" +
6797
- "\x02\'\'--?@MM\x07\x02((..FFLLQQ\x04\x02ns{|\x03\x02\x89\x8A\x04\x025" +
6798
- "5SS\x04\x02\x87\x87\x8B\x8B\b\x02//::ABJKUUXX\x04\x02##44\x05\x02vvxx" +
6799
- "}}\x03\x02tu\x03\x02vw\x02\u04E6\x02\xF8\x03\x02\x02\x02\x04\u0104\x03" +
6800
- "\x02\x02\x02\x06\u0106\x03\x02\x02\x02\b\u010F\x03\x02\x02\x02\n\u0111" +
6801
- "\x03\x02\x02\x02\f\u0117\x03\x02\x02\x02\x0E\u011A\x03\x02\x02\x02\x10" +
6802
- "\u0125\x03\x02\x02\x02\x12\u0127\x03\x02\x02\x02\x14\u012C\x03\x02\x02" +
6803
- "\x02\x16\u0138\x03\x02\x02\x02\x18\u013A\x03\x02\x02\x02\x1A\u0143\x03" +
6804
- "\x02\x02\x02\x1C\u0147\x03\x02\x02\x02\x1E\u014A\x03\x02\x02\x02 \u014D" +
6805
- "\x03\x02\x02\x02\"\u0152\x03\x02\x02\x02$\u0157\x03\x02\x02\x02&\u015B" +
6806
- "\x03\x02\x02\x02(\u016A\x03\x02\x02\x02*\u016F\x03\x02\x02\x02,\u0183" +
6807
- "\x03\x02\x02\x02.\u0185\x03\x02\x02\x020\u0194\x03\x02\x02\x022\u0196" +
6808
- "\x03\x02\x02\x024\u01A5\x03\x02\x02\x026\u01A7\x03\x02\x02\x028\u01B3" +
6809
- "\x03\x02\x02\x02:\u01B5\x03\x02\x02\x02<\u01BA\x03\x02\x02\x02>\u01BC" +
6810
- "\x03\x02\x02\x02@\u01BE\x03\x02\x02\x02B\u01CB\x03\x02\x02\x02D\u01D0" +
6811
- "\x03\x02\x02\x02F\u01E3\x03\x02\x02\x02H\u01E5\x03\x02\x02\x02J\u01E7" +
6812
- "\x03\x02\x02\x02L\u01F3\x03\x02\x02\x02N\u020B\x03\x02\x02\x02P\u020D" +
6813
- "\x03\x02\x02\x02R\u0211\x03\x02\x02\x02T\u0215\x03\x02\x02\x02V\u0222" +
6814
- "\x03\x02\x02\x02X\u0226\x03\x02\x02\x02Z\u0233\x03\x02\x02\x02\\\u0238" +
6815
- "\x03\x02\x02\x02^\u023A\x03\x02\x02\x02`\u023C\x03\x02\x02\x02b\u024B" +
6816
- "\x03\x02\x02\x02d\u024D\x03\x02\x02\x02f\u0253\x03\x02\x02\x02h\u0255" +
6817
- "\x03\x02\x02\x02j\u025F\x03\x02\x02\x02l\u026C\x03\x02\x02\x02n\u028C" +
6818
- "\x03\x02\x02\x02p\u028E\x03\x02\x02\x02r\u0292\x03\x02\x02\x02t\u0297" +
6819
- "\x03\x02\x02\x02v\u0299\x03\x02\x02\x02x\u02A4\x03\x02\x02\x02z\u02A7" +
6820
- "\x03\x02\x02\x02|\u02AA\x03\x02\x02\x02~\u02B7\x03\x02\x02\x02\x80\u02BC" +
6821
- "\x03\x02\x02\x02\x82\u02D5\x03\x02\x02\x02\x84\u02D7\x03\x02\x02\x02\x86" +
6822
- "\u02D9\x03\x02\x02\x02\x88\u02DD\x03\x02\x02\x02\x8A\u02EC\x03\x02\x02" +
6823
- "\x02\x8C\u02EE\x03\x02\x02\x02\x8E\u02F2\x03\x02\x02\x02\x90\u030C\x03" +
6824
- "\x02\x02\x02\x92\u030E\x03\x02\x02\x02\x94\u0312\x03\x02\x02\x02\x96\u0316" +
6825
- "\x03\x02\x02\x02\x98\u031A\x03\x02\x02\x02\x9A\u031D\x03\x02\x02\x02\x9C" +
6826
- "\u032C\x03\x02\x02\x02\x9E\u0331\x03\x02\x02\x02\xA0\u0338\x03\x02\x02" +
6827
- "\x02\xA2\u033A\x03\x02\x02\x02\xA4\u0346\x03\x02\x02\x02\xA6\u0348\x03" +
6828
- "\x02\x02\x02\xA8\u0352\x03\x02\x02\x02\xAA\u0358\x03\x02\x02\x02\xAC\u035B" +
6829
- "\x03\x02\x02\x02\xAE\u035E\x03\x02\x02\x02\xB0\u0360\x03\x02\x02\x02\xB2" +
6830
- "\u0362\x03\x02\x02\x02\xB4\u0364\x03\x02\x02\x02\xB6\u0366\x03\x02\x02" +
6831
- "\x02\xB8\u0368\x03\x02\x02\x02\xBA\u0371\x03\x02\x02\x02\xBC\u037A\x03" +
6832
- "\x02\x02\x02\xBE\u037C\x03\x02\x02\x02\xC0\u037E\x03\x02\x02\x02\xC2\u0380" +
6833
- "\x03\x02\x02\x02\xC4\u0382\x03\x02\x02\x02\xC6\u0384\x03\x02\x02\x02\xC8" +
6834
- "\u03D4\x03\x02\x02\x02\xCA\u0410\x03\x02\x02\x02\xCC\u0415\x03\x02\x02" +
6835
- "\x02\xCE\u041D\x03\x02\x02\x02\xD0\u0424\x03\x02\x02\x02\xD2\u042F\x03" +
6836
- "\x02\x02\x02\xD4\u0439\x03\x02\x02\x02\xD6\u0449\x03\x02\x02\x02\xD8\u044D" +
6837
- "\x03\x02\x02\x02\xDA\u0453\x03\x02\x02\x02\xDC\u0455\x03\x02\x02\x02\xDE" +
6838
- "\u045D\x03\x02\x02\x02\xE0\u045F\x03\x02\x02\x02\xE2\u0461\x03\x02\x02" +
6839
- "\x02\xE4\u0464\x03\x02\x02\x02\xE6\u046E\x03\x02\x02\x02\xE8\u047D\x03" +
6840
- "\x02\x02\x02\xEA\u047F\x03\x02\x02\x02\xEC\u0490\x03\x02\x02\x02\xEE\u0492" +
6841
- "\x03\x02\x02\x02\xF0\u0494\x03\x02\x02\x02\xF2\u0496\x03\x02\x02\x02\xF4" +
6842
- "\xF7\x05\x04\x03\x02\xF5\xF7\x07z\x02\x02\xF6\xF4\x03\x02\x02\x02\xF6" +
6843
- "\xF5\x03\x02\x02\x02\xF7\xFA\x03\x02\x02\x02\xF8\xF6\x03\x02\x02\x02\xF8" +
6844
- "\xF9\x03\x02\x02\x02\xF9\xFB\x03\x02\x02\x02\xFA\xF8\x03\x02\x02\x02\xFB" +
6845
- "\xFC\x07\x02\x02\x03\xFC\x03\x03\x02\x02\x02\xFD\u0105\x05\x06\x04\x02" +
6846
- "\xFE\u0105\x05\x12\n\x02\xFF\u0105\x05\b\x05\x02\u0100\u0105\x05\x1C\x0F" +
6847
- "\x02\u0101\u0105\x05\x10\t\x02\u0102\u0105\x05 \x11\x02\u0103\u0105\x05" +
6848
- "\"\x12\x02\u0104\xFD\x03\x02\x02\x02\u0104\xFE\x03\x02\x02\x02\u0104\xFF" +
6849
- "\x03\x02\x02\x02\u0104\u0100\x03\x02\x02\x02\u0104\u0101\x03\x02\x02\x02" +
6850
- "\u0104\u0102\x03\x02\x02\x02\u0104\u0103\x03\x02\x02\x02\u0105\x05\x03" +
6851
- "\x02\x02\x02\u0106\u0107\x05\f\x07\x02\u0107\u0108\x07\x1E\x02\x02\u0108" +
6852
- "\u0109\x05@!\x02\u0109\x07\x03\x02\x02\x02\u010A\u0110\x05&\x14\x02\u010B" +
6853
- "\u010C\x05\f\x07\x02\u010C\u010D\x07\x19\x02\x02\u010D\u010E\x05\n\x06" +
6854
- "\x02\u010E\u0110\x03\x02\x02\x02\u010F\u010A\x03\x02\x02\x02\u010F\u010B" +
6855
- "\x03\x02\x02\x02\u0110\t\x03\x02\x02\x02\u0111\u0112\x05\f\x07\x02\u0112" +
6856
- "\u0113\x05,\x17\x02\u0113\v\x03\x02\x02\x02\u0114\u0116\x07^\x02\x02\u0115" +
6857
- "\u0114\x03\x02\x02\x02\u0116\u0119\x03\x02\x02\x02\u0117\u0115\x03\x02" +
6858
- "\x02\x02\u0117\u0118\x03\x02\x02\x02\u0118\r\x03\x02\x02\x02\u0119\u0117" +
6859
- "\x03\x02\x02\x02\u011A\u011B\x05\f\x07\x02\u011B\u011C\x07<\x02\x02\u011C" +
6860
- "\u011D\x05\f\x07\x02\u011D\x0F\x03\x02\x02\x02\u011E\u011F\x05\f\x07\x02" +
6861
- "\u011F\u0120\x07\x1B\x02\x02\u0120\u0121\x05\f\x07\x02\u0121\u0122\x05" +
6862
- "\n\x06\x02\u0122\u0126\x03\x02\x02\x02\u0123\u0124\x07\x1B\x02\x02\u0124" +
6863
- "\u0126\x05> \x02\u0125\u011E\x03\x02\x02\x02\u0125\u0123\x03\x02\x02\x02" +
6864
- "\u0126\x11\x03\x02\x02\x02\u0127\u0128\x07\x1F\x02\x02\u0128\u0129\x05" +
6865
- "\xF0y\x02\u0129\u012A\x05\x0E\b\x02\u012A\u012B\x05\x14\v\x02\u012B\x13" +
6866
- "\x03\x02\x02\x02\u012C\u012E\x07f\x02\x02\u012D\u012F\x05\x16\f\x02\u012E" +
6867
- "\u012D\x03\x02\x02\x02\u012F\u0130\x03\x02\x02\x02\u0130\u012E\x03\x02" +
6868
- "\x02\x02\u0130\u0131\x03\x02\x02\x02\u0131\u0132\x03\x02\x02\x02\u0132" +
6869
- "\u0133\x07g\x02\x02\u0133\x15\x03\x02\x02\x02\u0134\u0135\x07\b\x02\x02" +
6870
- "\u0135\u0139\x05\xF2z\x02\u0136\u0137\x07\x1D\x02\x02\u0137\u0139\x05" +
6871
- "\x18\r\x02\u0138\u0134\x03\x02\x02\x02\u0138\u0136\x03\x02\x02\x02\u0139" +
6872
- "\x17\x03\x02\x02\x02\u013A\u013E\x07\x8F\x02\x02\u013B\u013D\x05\x1A\x0E" +
6873
- "\x02\u013C\u013B\x03\x02\x02\x02\u013D\u0140\x03\x02\x02\x02\u013E\u013C" +
6874
- "\x03\x02\x02\x02\u013E\u013F\x03\x02\x02\x02\u013F\u0141\x03\x02\x02\x02" +
6875
- "\u0140\u013E\x03\x02\x02\x02\u0141\u0142\x07\x94\x02\x02\u0142\x19\x03" +
6876
- "\x02\x02\x02\u0143\u0144\x07\x93\x02\x02\u0144\u0145\x05,\x17\x02\u0145" +
6877
- "\u0146\x07\x90\x02\x02\u0146\x1B\x03\x02\x02\x02\u0147\u0148\x07;\x02" +
6878
- "\x02\u0148\u0149\x05\x1E\x10\x02\u0149\x1D\x03\x02\x02\x02\u014A\u014B" +
6879
- "\x07\x03\x02\x02\u014B\x1F\x03\x02\x02\x02\u014C\u014E\x07]\x02\x02\u014D" +
6880
- "\u014C\x03\x02\x02\x02\u014E\u014F\x03\x02\x02\x02\u014F\u014D\x03\x02" +
6881
- "\x02\x02\u014F\u0150\x03\x02\x02\x02\u0150!\x03\x02\x02\x02\u0151\u0153" +
6882
- "\x07^\x02\x02\u0152\u0151\x03\x02\x02\x02\u0153\u0154\x03\x02\x02\x02" +
6883
- "\u0154\u0152\x03\x02\x02\x02\u0154\u0155\x03\x02\x02\x02\u0155#\x03\x02" +
6884
- "\x02\x02\u0156\u0158\x07]\x02\x02\u0157\u0156\x03\x02\x02\x02\u0158\u0159" +
6885
- "\x03\x02\x02\x02\u0159\u0157\x03\x02\x02\x02\u0159\u015A\x03\x02\x02\x02" +
6886
- "\u015A%\x03\x02\x02\x02\u015B\u015C\x05\f\x07\x02\u015C\u015D\x07\x19" +
6887
- "\x02\x02\u015D\u0164\x05(\x15\x02\u015E\u0160\x07l\x02\x02\u015F\u015E" +
6888
- "\x03\x02\x02\x02\u015F\u0160\x03\x02\x02\x02\u0160\u0161\x03\x02\x02\x02" +
6889
- "\u0161\u0163\x05(\x15\x02\u0162\u015F\x03\x02\x02\x02\u0163\u0166\x03" +
6890
- "\x02\x02\x02\u0164\u0162\x03\x02\x02\x02\u0164\u0165\x03\x02\x02\x02\u0165" +
6891
- "\u0168\x03\x02\x02\x02\u0166\u0164\x03\x02\x02\x02\u0167\u0169\x07l\x02" +
6892
- "\x02\u0168\u0167\x03\x02\x02\x02\u0168\u0169\x03\x02\x02\x02\u0169\'\x03" +
6893
- "\x02\x02\x02\u016A\u016B\x05\f\x07\x02\u016B\u016C\x05> \x02\u016C\u016D" +
6894
- "\x05\x0E\b\x02\u016D\u016E\x05,\x17\x02\u016E)\x03\x02\x02\x02\u016F\u0170" +
6895
- "\x07t\x02\x02\u0170+\x03\x02\x02\x02\u0171\u0172\x05D#\x02\u0172\u0173" +
6896
- "\x07`\x02\x02\u0173\u0174\x05.\x18\x02\u0174\u0184\x03\x02\x02\x02\u0175" +
6897
- "\u0176\x07`\x02\x02\u0176\u017B\x05> \x02\u0177\u0179\x05*\x16\x02\u0178" +
6898
- "\u0177\x03\x02\x02\x02\u0178\u0179\x03\x02\x02\x02\u0179\u017A\x03\x02" +
6899
- "\x02\x02\u017A\u017C\x058\x1D\x02\u017B\u0178\x03\x02\x02\x02\u017B\u017C" +
6900
- "\x03\x02\x02\x02\u017C\u0180\x03\x02\x02\x02\u017D\u017F\x052\x1A\x02" +
6901
- "\u017E\u017D\x03\x02\x02\x02\u017F\u0182\x03\x02\x02\x02\u0180\u017E\x03" +
6902
- "\x02\x02\x02\u0180\u0181\x03\x02\x02\x02\u0181\u0184\x03\x02\x02\x02\u0182" +
6903
- "\u0180\x03\x02\x02\x02\u0183\u0171\x03\x02\x02\x02\u0183\u0175\x03\x02" +
6904
- "\x02\x02\u0184-\x03\x02\x02\x02\u0185\u0189\x050\x19\x02\u0186\u0188\x05" +
6905
- "2\x1A\x02\u0187\u0186\x03\x02\x02\x02\u0188\u018B\x03\x02\x02\x02\u0189" +
6906
- "\u0187\x03\x02\x02\x02\u0189\u018A\x03\x02\x02\x02\u018A/\x03\x02\x02" +
6907
- "\x02\u018B\u0189\x03\x02\x02\x02\u018C\u0195\x058\x1D\x02\u018D\u0192" +
6908
- "\x05<\x1F\x02\u018E\u0190\x05*\x16\x02\u018F\u018E\x03\x02\x02\x02\u018F" +
6909
- "\u0190\x03\x02\x02\x02\u0190\u0191\x03\x02\x02\x02\u0191\u0193\x058\x1D" +
6910
- "\x02\u0192\u018F\x03\x02\x02\x02\u0192\u0193\x03\x02\x02\x02\u0193\u0195" +
6911
- "\x03\x02\x02\x02\u0194\u018C\x03\x02\x02\x02\u0194\u018D\x03\x02\x02\x02" +
6912
- "\u01951\x03\x02\x02\x02\u0196\u0197\x07`\x02\x02\u0197\u0198\x058\x1D" +
6913
- "\x02\u01983\x03\x02\x02\x02\u0199\u019A\x07N\x02\x02\u019A\u019B\x07b" +
6914
- "\x02\x02\u019B\u019C\x05\xC0a\x02\u019C\u019D\x07c\x02\x02\u019D\u01A6" +
6915
- "\x03\x02\x02\x02\u019E\u019F\x056\x1C\x02\u019F\u01A0\x07m\x02\x02\u01A0" +
6916
- "\u01A1\x07N\x02\x02\u01A1\u01A2\x07b\x02\x02\u01A2\u01A3\x05\xBE`\x02" +
6917
- "\u01A3\u01A4\x07c\x02\x02\u01A4\u01A6\x03\x02\x02\x02\u01A5\u0199\x03" +
6918
- "\x02\x02\x02\u01A5\u019E\x03\x02\x02\x02\u01A65\x03\x02\x02\x02\u01A7" +
6919
- "\u01A8\x05\xC2b\x02\u01A87\x03\x02\x02\x02\u01A9\u01B4\x05:\x1E\x02\u01AA" +
6920
- "\u01AF\x07f\x02\x02\u01AB\u01AE\x05\x82B\x02\u01AC\u01AE\x07z\x02\x02" +
6921
- "\u01AD\u01AB\x03\x02\x02\x02\u01AD\u01AC\x03\x02\x02\x02\u01AE\u01B1\x03" +
6922
- "\x02\x02\x02\u01AF\u01AD\x03\x02\x02\x02\u01AF\u01B0\x03\x02\x02\x02\u01B0" +
6923
- "\u01B2\x03\x02\x02\x02\u01B1\u01AF\x03\x02\x02\x02\u01B2\u01B4\x07g\x02" +
6924
- "\x02\u01B3\u01A9\x03\x02\x02\x02\u01B3\u01AA\x03\x02\x02\x02\u01B49\x03" +
6925
- "\x02\x02\x02\u01B5\u01B6\x07f\x02\x02\u01B6\u01B7\x07\x7F\x02\x02\u01B7" +
6926
- "\u01B8\x05\xC8e\x02\u01B8\u01B9\x07g\x02\x02\u01B9;\x03\x02\x02\x02\u01BA" +
6927
- "\u01BB\x05\xC2b\x02\u01BB=\x03\x02\x02\x02\u01BC\u01BD\x05\xC2b\x02\u01BD" +
6928
- "?\x03\x02\x02\x02\u01BE\u01C5\x05B\"";
6929
- MalloyParser._serializedATNSegment1 = "\x02\u01BF\u01C1\x07l\x02\x02\u01C0\u01BF\x03\x02\x02\x02\u01C0\u01C1" +
6930
- "\x03\x02\x02\x02\u01C1\u01C2\x03\x02\x02\x02\u01C2\u01C4\x05B\"\x02\u01C3" +
6931
- "\u01C0\x03\x02\x02\x02\u01C4\u01C7\x03\x02\x02\x02\u01C5\u01C3\x03\x02" +
6932
- "\x02\x02\u01C5\u01C6\x03\x02\x02\x02\u01C6\u01C9\x03\x02\x02\x02\u01C7" +
6933
- "\u01C5\x03\x02\x02\x02\u01C8\u01CA\x07l\x02\x02\u01C9\u01C8\x03\x02\x02" +
6934
- "\x02\u01C9\u01CA\x03\x02\x02\x02\u01CAA\x03\x02\x02\x02\u01CB\u01CC\x05" +
6935
- "\f\x07\x02\u01CC\u01CD\x05H%\x02\u01CD\u01CE\x05\x0E\b\x02\u01CE\u01CF" +
6936
- "\x05D#\x02\u01CFC\x03\x02\x02\x02\u01D0\u01D5\x05F$\x02\u01D1\u01D3\x05" +
6937
- "*\x16\x02\u01D2\u01D1\x03\x02\x02\x02\u01D2\u01D3\x03\x02\x02\x02\u01D3" +
6938
- "\u01D4\x03\x02\x02\x02\u01D4\u01D6\x05L\'\x02\u01D5\u01D2\x03\x02\x02" +
6939
- "\x02\u01D5\u01D6\x03\x02\x02\x02\u01D6E\x03\x02\x02\x02\u01D7\u01E4\x05" +
6940
- "J&\x02\u01D8\u01E4\x054\x1B\x02\u01D9\u01DA\x077\x02\x02\u01DA\u01DB\x07" +
6941
- "b\x02\x02\u01DB\u01DC\x05,\x17\x02\u01DC\u01DD\x07c\x02\x02\u01DD\u01E4" +
6942
- "\x03\x02\x02\x02\u01DE\u01DF\x078\x02\x02\u01DF\u01E0\x07b\x02\x02\u01E0" +
6943
- "\u01E1\x05\xEEx\x02\u01E1\u01E2\x07c\x02\x02\u01E2\u01E4\x03\x02\x02\x02" +
6944
- "\u01E3\u01D7\x03\x02\x02\x02\u01E3\u01D8\x03\x02\x02\x02\u01E3\u01D9\x03" +
6945
- "\x02\x02\x02\u01E3\u01DE\x03\x02\x02\x02\u01E4G\x03\x02\x02\x02\u01E5" +
6946
- "\u01E6\x05\xC2b\x02\u01E6I\x03\x02\x02\x02\u01E7\u01E8\x05\xC2b\x02\u01E8" +
6947
- "K\x03\x02\x02\x02\u01E9\u01EE\x07f\x02\x02\u01EA\u01ED\x05N(\x02\u01EB" +
6948
- "\u01ED\x07z\x02\x02\u01EC\u01EA\x03\x02\x02\x02\u01EC\u01EB\x03\x02\x02" +
6949
- "\x02\u01ED\u01F0\x03\x02\x02\x02\u01EE\u01EC\x03\x02\x02\x02\u01EE\u01EF" +
6950
- "\x03\x02\x02\x02\u01EF\u01F1\x03\x02\x02\x02\u01F0\u01EE\x03\x02\x02\x02" +
6951
- "\u01F1\u01F4\x07g\x02\x02\u01F2\u01F4\x05:\x1E\x02\u01F3\u01E9\x03\x02" +
6952
- "\x02\x02\u01F3\u01F2\x03\x02\x02\x02\u01F4M\x03\x02\x02\x02\u01F5\u020C" +
6953
- "\x05R*\x02\u01F6\u020C\x05P)\x02\u01F7\u020C\x05`1\x02\u01F8\u020C\x05" +
6954
- "b2\x02\u01F9\u020C\x05x=\x02\u01FA\u01FB\x07\x17\x02\x02\u01FB\u020C\x05" +
6955
- "\xE0q\x02\u01FC\u01FD\x07\x1A\x02\x02\u01FD\u020C\x05T+\x02\u01FE\u01FF" +
6956
- "\t\x02\x02\x02\u01FF\u020C\x05\xD2j\x02\u0200\u0201\x05\f\x07\x02\u0201" +
6957
- "\u0202\x07\x19\x02\x02\u0202\u0203\x05|?\x02\u0203\u020C\x03\x02\x02\x02" +
6958
- "\u0204\u020C\x05\xACW\x02\u0205\u0207\x07^\x02\x02\u0206\u0205\x03\x02" +
6959
- "\x02\x02\u0207\u0208\x03\x02\x02\x02\u0208\u0206\x03\x02\x02\x02\u0208" +
6960
- "\u0209\x03\x02\x02\x02\u0209\u020C\x03\x02\x02\x02\u020A\u020C\x05$\x13" +
6961
- "\x02\u020B\u01F5\x03\x02\x02\x02\u020B\u01F6\x03\x02\x02\x02\u020B\u01F7" +
6962
- "\x03\x02\x02\x02\u020B\u01F8\x03\x02\x02\x02\u020B\u01F9\x03\x02\x02\x02" +
6963
- "\u020B\u01FA\x03\x02\x02\x02\u020B\u01FC\x03\x02\x02\x02\u020B\u01FE\x03" +
6964
- "\x02\x02\x02\u020B\u0200\x03\x02\x02\x02\u020B\u0204\x03\x02\x02\x02\u020B" +
6965
- "\u0206\x03\x02\x02\x02\u020B\u020A\x03\x02\x02\x02\u020CO\x03\x02\x02" +
6966
- "\x02\u020D\u020E\x05\f\x07\x02\u020E\u020F\x07\x14\x02\x02\u020F\u0210" +
6967
- "\x05X-\x02\u0210Q\x03\x02\x02\x02\u0211\u0212\x05\f\x07\x02\u0212\u0213" +
6968
- "\x07\n\x02\x02\u0213\u0214\x05X-\x02\u0214S\x03\x02\x02\x02\u0215\u021C" +
6969
- "\x05V,\x02\u0216\u0218\x07l\x02\x02\u0217\u0216\x03\x02\x02\x02\u0217" +
6970
- "\u0218\x03\x02\x02\x02\u0218\u0219\x03\x02\x02\x02\u0219\u021B\x05V,\x02" +
6971
- "\u021A\u0217\x03\x02\x02\x02\u021B\u021E\x03\x02\x02\x02\u021C\u021A\x03" +
6972
- "\x02\x02\x02\u021C\u021D\x03\x02\x02\x02\u021D\u0220\x03\x02\x02\x02\u021E" +
6973
- "\u021C\x03\x02\x02\x02\u021F\u0221\x07l\x02\x02\u0220\u021F\x03\x02\x02" +
6974
- "\x02\u0220\u0221\x03\x02\x02\x02\u0221U\x03\x02\x02\x02\u0222\u0223\x05" +
6975
- "\xE0q\x02\u0223\u0224\x05\x0E\b\x02\u0224\u0225\x05\xE0q\x02\u0225W\x03" +
6976
- "\x02\x02\x02\u0226\u022D\x05Z.\x02\u0227\u0229\x07l\x02\x02\u0228\u0227" +
6977
- "\x03\x02\x02\x02\u0228\u0229\x03\x02\x02\x02\u0229\u022A\x03\x02\x02\x02" +
6978
- "\u022A\u022C\x05Z.\x02\u022B\u0228\x03\x02\x02\x02\u022C\u022F\x03\x02" +
6979
- "\x02\x02\u022D\u022B\x03\x02\x02\x02\u022D\u022E\x03\x02\x02\x02\u022E" +
6980
- "\u0231\x03\x02\x02\x02\u022F\u022D\x03\x02\x02\x02\u0230\u0232\x07l\x02" +
6981
- "\x02\u0231\u0230\x03\x02\x02\x02\u0231\u0232\x03\x02\x02\x02\u0232Y\x03" +
6982
- "\x02\x02\x02\u0233\u0234\x05\f\x07\x02\u0234\u0235\x05\\/\x02\u0235\u0236" +
6983
- "\x05\x0E\b\x02\u0236\u0237\x05\xC8e\x02\u0237[\x03\x02\x02\x02\u0238\u0239" +
6984
- "\x05\xC2b\x02\u0239]\x03\x02\x02\x02\u023A\u023B\x05\xC2b\x02\u023B_\x03" +
6985
- "\x02\x02\x02\u023C\u023D\x07\t\x02\x02\u023D\u023E\x05X-\x02\u023Ea\x03" +
6986
- "\x02\x02\x02\u023F\u0240\x05\f\x07\x02\u0240\u0241\x07\x11\x02\x02\u0241" +
6987
- "\u0242\x05j6\x02\u0242\u024C\x03\x02\x02\x02\u0243\u0244\x05\f\x07\x02" +
6988
- "\u0244\u0245\x07\x12\x02\x02\u0245\u0246\x05j6\x02\u0246\u024C\x03\x02" +
6989
- "\x02\x02\u0247\u0248\x05\f\x07\x02\u0248\u0249\x07\x10\x02\x02\u0249\u024A" +
6990
- "\x05j6\x02\u024A\u024C\x03\x02\x02\x02\u024B\u023F\x03\x02\x02\x02\u024B" +
6991
- "\u0243\x03\x02\x02\x02\u024B\u0247\x03\x02\x02\x02\u024Cc\x03\x02\x02" +
6992
- "\x02\u024D\u024E\x07\f\x02\x02\u024E\u024F\x05h5\x02\u024Fe\x03\x02\x02" +
6993
- "\x02\u0250\u0254\x05R*\x02\u0251\u0254\x05P)\x02\u0252\u0254\x05b2\x02" +
6994
- "\u0253\u0250\x03\x02\x02\x02\u0253\u0251\x03\x02\x02\x02\u0253\u0252\x03" +
6995
- "\x02\x02\x02\u0254g\x03\x02\x02\x02\u0255\u025A\x07f\x02\x02\u0256\u0259" +
6996
- "\x05f4\x02\u0257\u0259\x07z\x02\x02\u0258\u0256\x03\x02\x02\x02\u0258" +
6997
- "\u0257\x03\x02\x02\x02\u0259\u025C\x03\x02\x02\x02\u025A\u0258\x03\x02" +
6998
- "\x02\x02\u025A\u025B\x03\x02\x02\x02\u025B\u025D\x03\x02\x02\x02\u025C" +
6999
- "\u025A\x03\x02\x02\x02\u025D\u025E\x07g\x02\x02\u025Ei\x03\x02\x02\x02" +
7000
- "\u025F\u0266\x05n8\x02\u0260\u0262\x07l\x02\x02\u0261\u0260\x03\x02\x02" +
7001
- "\x02\u0261\u0262\x03\x02\x02\x02\u0262\u0263\x03\x02\x02\x02\u0263\u0265" +
7002
- "\x05n8\x02\u0264\u0261\x03\x02\x02\x02\u0265\u0268\x03\x02\x02\x02\u0266" +
7003
- "\u0264\x03\x02\x02\x02\u0266\u0267\x03\x02\x02\x02\u0267\u026A\x03\x02" +
7004
- "\x02\x02\u0268\u0266\x03\x02\x02\x02\u0269\u026B\x07l\x02\x02\u026A\u0269" +
7005
- "\x03\x02\x02\x02\u026A\u026B\x03\x02\x02\x02\u026Bk\x03\x02\x02\x02\u026C" +
7006
- "\u026D\x05\f\x07\x02\u026D\u026E\x07<\x02\x02\u026E\u026F\x05\f\x07\x02" +
7007
- "\u026F\u0270\x05D#\x02\u0270m\x03\x02\x02\x02\u0271\u0273\x07^\x02\x02" +
7008
- "\u0272\u0271\x03\x02\x02\x02\u0273\u0276\x03\x02\x02\x02\u0274\u0272\x03" +
7009
- "\x02\x02\x02\u0274\u0275\x03\x02\x02\x02\u0275\u0277\x03\x02\x02\x02\u0276" +
7010
- "\u0274\x03\x02\x02\x02\u0277\u0279\x05^0\x02\u0278\u027A\x05l7\x02\u0279" +
7011
- "\u0278\x03\x02\x02\x02\u0279\u027A\x03\x02\x02\x02\u027A\u027B\x03\x02" +
7012
- "\x02\x02\u027B\u027C\x07W\x02\x02\u027C\u027D\x05\xC8e\x02\u027D\u028D" +
7013
- "\x03\x02\x02\x02\u027E\u0280\x07^\x02\x02\u027F\u027E\x03\x02\x02\x02" +
7014
- "\u0280\u0283\x03\x02\x02\x02\u0281\u027F\x03\x02\x02\x02\u0281\u0282\x03" +
7015
- "\x02\x02\x02\u0282\u0284\x03\x02\x02\x02\u0283\u0281\x03\x02\x02\x02\u0284" +
7016
- "\u0286\x05^0\x02\u0285\u0287\x05l7\x02\u0286\u0285\x03\x02\x02\x02\u0286" +
7017
- "\u0287\x03\x02\x02\x02\u0287\u028A\x03\x02\x02\x02\u0288\u0289\x07G\x02" +
7018
- "\x02\u0289\u028B\x05p9\x02\u028A\u0288\x03\x02\x02\x02\u028A\u028B\x03" +
7019
- "\x02\x02\x02\u028B\u028D\x03\x02\x02\x02\u028C\u0274\x03\x02\x02\x02\u028C" +
7020
- "\u0281\x03\x02\x02\x02\u028Do\x03\x02\x02\x02\u028E\u028F\x05\xC8e\x02" +
7021
- "\u028Fq\x03\x02\x02\x02\u0290\u0293\x05x=\x02\u0291\u0293\x05z>\x02\u0292" +
7022
- "\u0290\x03\x02\x02\x02\u0292\u0291\x03\x02\x02\x02\u0293s\x03\x02\x02" +
7023
- "\x02\u0294\u0295\x07\x7F\x02\x02\u0295\u0298\x05\xC8e\x02\u0296\u0298" +
7024
- "\x05x=\x02\u0297\u0294\x03\x02\x02\x02\u0297\u0296\x03\x02\x02\x02\u0298" +
7025
- "u\x03\x02\x02\x02\u0299\u029E\x05\xC8e\x02\u029A\u029B\x07l\x02\x02\u029B" +
7026
- "\u029D\x05\xC8e\x02\u029C\u029A\x03\x02\x02\x02\u029D\u02A0\x03\x02\x02" +
7027
- "\x02\u029E\u029C\x03\x02\x02\x02\u029E\u029F\x03\x02\x02\x02\u029F\u02A2" +
7028
- "\x03\x02\x02\x02\u02A0\u029E\x03\x02\x02\x02\u02A1\u02A3\x07l\x02\x02" +
7029
- "\u02A2\u02A1\x03\x02\x02\x02\u02A2\u02A3\x03\x02\x02\x02\u02A3w\x03\x02" +
7030
- "\x02\x02\u02A4\u02A5\x07!\x02\x02\u02A5\u02A6\x05v<\x02\u02A6y\x03\x02" +
7031
- "\x02\x02\u02A7\u02A8\x07\x0E\x02\x02\u02A8\u02A9\x05v<\x02\u02A9{\x03" +
7032
- "\x02\x02\x02\u02AA\u02B1\x05\x80A\x02\u02AB\u02AD\x07l\x02\x02\u02AC\u02AB" +
7033
- "\x03\x02\x02\x02\u02AC\u02AD\x03\x02\x02\x02\u02AD\u02AE\x03\x02\x02\x02" +
7034
- "\u02AE\u02B0\x05\x80A\x02\u02AF\u02AC\x03\x02\x02\x02\u02B0\u02B3\x03" +
7035
- "\x02\x02\x02\u02B1\u02AF\x03\x02\x02\x02\u02B1\u02B2\x03\x02\x02\x02\u02B2" +
7036
- "\u02B5\x03\x02\x02\x02\u02B3\u02B1\x03\x02\x02\x02\u02B4\u02B6\x07l\x02" +
7037
- "\x02\u02B5\u02B4\x03\x02\x02\x02\u02B5\u02B6\x03\x02\x02\x02\u02B6}\x03" +
7038
- "\x02\x02\x02\u02B7\u02B8\x05\xC2b\x02\u02B8\x7F\x03\x02\x02\x02\u02B9" +
7039
- "\u02BB\x07^\x02\x02\u02BA\u02B9\x03\x02\x02\x02\u02BB\u02BE\x03\x02\x02" +
7040
- "\x02\u02BC\u02BA\x03\x02\x02\x02\u02BC\u02BD\x03\x02\x02\x02\u02BD\u02BF" +
7041
- "\x03\x02\x02\x02\u02BE\u02BC\x03\x02\x02\x02\u02BF\u02C0\x05~@\x02\u02C0" +
7042
- "\u02C1\x05\x0E\b\x02\u02C1\u02C2\x05.\x18\x02\u02C2\x81\x03\x02\x02\x02" +
7043
- "\u02C3\u02D6\x05\x86D\x02\u02C4\u02D6\x05`1\x02\u02C5\u02D6\x05\x84C\x02" +
7044
- "\u02C6\u02D6\x05d3\x02\u02C7\u02D6\x05\x96L\x02\u02C8\u02D6\x05\xA8U\x02" +
7045
- "\u02C9\u02D6\x05\x92J\x02\u02CA\u02D6\x05\x94K\x02\u02CB\u02D6\x05\xA2" +
7046
- "R\x02\u02CC\u02D6\x05\x9EP\x02\u02CD\u02D6\x05\x98M\x02\u02CE\u02D6\x05" +
7047
- "x=\x02\u02CF\u02D6\x05z>\x02\u02D0\u02D6\x05\x8CG\x02\u02D1\u02D6\x05" +
7048
- "\xAAV\x02\u02D2\u02D6\x05\xACW\x02\u02D3\u02D6\x05\xB0Y\x02\u02D4\u02D6" +
7049
- "\x05$\x13\x02\u02D5\u02C3\x03\x02\x02\x02\u02D5\u02C4\x03\x02\x02\x02" +
7050
- "\u02D5\u02C5\x03\x02\x02\x02\u02D5\u02C6\x03\x02\x02\x02\u02D5\u02C7\x03" +
7051
- "\x02\x02\x02\u02D5\u02C8\x03\x02\x02\x02\u02D5\u02C9\x03\x02\x02\x02\u02D5" +
7052
- "\u02CA\x03\x02\x02\x02\u02D5\u02CB\x03\x02\x02\x02\u02D5\u02CC\x03\x02" +
7053
- "\x02\x02\u02D5\u02CD\x03\x02\x02\x02\u02D5\u02CE\x03\x02\x02\x02\u02D5" +
7054
- "\u02CF\x03\x02\x02\x02\u02D5\u02D0\x03\x02\x02\x02\u02D5\u02D1\x03\x02" +
7055
- "\x02\x02\u02D5\u02D2\x03\x02\x02\x02\u02D5\u02D3\x03\x02\x02\x02\u02D5" +
7056
- "\u02D4\x03\x02\x02\x02\u02D6\x83\x03\x02\x02\x02\u02D7\u02D8\x05b2\x02" +
7057
- "\u02D8\x85\x03\x02\x02\x02\u02D9\u02DA\x05\f\x07\x02\u02DA\u02DB\x07\r" +
7058
- "\x02\x02\u02DB\u02DC\x05\x88E\x02\u02DC\x87\x03\x02\x02\x02\u02DD\u02E4" +
7059
- "\x05\x8AF\x02\u02DE\u02E0\x07l\x02\x02\u02DF\u02DE\x03\x02\x02\x02\u02DF" +
7060
- "\u02E0\x03\x02\x02\x02\u02E0\u02E1\x03\x02\x02\x02\u02E1\u02E3\x05\x8A" +
7061
- "F\x02\u02E2\u02DF\x03\x02\x02\x02\u02E3\u02E6\x03\x02\x02\x02\u02E4\u02E2" +
7062
- "\x03\x02\x02\x02\u02E4\u02E5\x03\x02\x02\x02\u02E5\u02E8\x03\x02\x02\x02" +
7063
- "\u02E6\u02E4\x03\x02\x02\x02\u02E7\u02E9\x07l\x02\x02\u02E8\u02E7\x03" +
7064
- "\x02\x02\x02\u02E8\u02E9\x03\x02\x02\x02\u02E9\x89\x03\x02\x02\x02\u02EA" +
7065
- "\u02ED\x05\xD8m\x02\u02EB\u02ED\x05Z.\x02\u02EC\u02EA\x03\x02\x02\x02" +
7066
- "\u02EC\u02EB\x03\x02\x02\x02\u02ED\x8B\x03\x02\x02\x02\u02EE\u02EF\x05" +
7067
- "\f\x07\x02\u02EF\u02F0\x07\x15\x02\x02\u02F0\u02F1\x05\x8EH\x02\u02F1" +
7068
- "\x8D\x03\x02\x02\x02\u02F2\u02F9\x05\x90I\x02\u02F3\u02F5\x07l\x02\x02" +
7069
- "\u02F4\u02F3\x03\x02\x02\x02\u02F4\u02F5\x03\x02\x02\x02\u02F5\u02F6\x03" +
7070
- "\x02\x02\x02\u02F6\u02F8\x05\x90I\x02\u02F7\u02F4\x03\x02\x02\x02\u02F8" +
7071
- "\u02FB\x03\x02\x02\x02\u02F9\u02F7\x03\x02\x02\x02\u02F9\u02FA\x03\x02" +
7072
- "\x02\x02\u02FA\u02FD\x03\x02\x02\x02\u02FB\u02F9\x03\x02\x02\x02\u02FC" +
7073
- "\u02FE\x07l\x02\x02\u02FD\u02FC\x03\x02\x02\x02\u02FD\u02FE\x03\x02\x02" +
7074
- "\x02\u02FE\x8F\x03\x02\x02\x02\u02FF\u0300\x05\f\x07\x02\u0300\u0305\x05" +
7075
- "> \x02\u0301\u0303\x05*\x16\x02\u0302\u0301\x03\x02\x02\x02\u0302\u0303" +
7076
- "\x03\x02\x02\x02\u0303\u0304\x03\x02\x02\x02\u0304\u0306\x058\x1D\x02" +
7077
- "\u0305\u0302\x03\x02\x02\x02\u0305\u0306\x03\x02\x02\x02\u0306\u030D\x03" +
7078
- "\x02\x02\x02\u0307\u0308\x05\f\x07\x02\u0308\u0309\x05> \x02\u0309\u030A" +
7079
- "\x05\x0E\b\x02\u030A\u030B\x05.\x18\x02\u030B\u030D\x03\x02\x02\x02\u030C" +
7080
- "\u02FF\x03\x02\x02\x02\u030C\u0307\x03\x02\x02\x02\u030D\x91\x03\x02\x02" +
7081
- "\x02\u030E\u030F\x05\f\x07\x02\u030F\u0310\x07\x05\x02\x02\u0310\u0311" +
7082
- "\x05\x88E\x02\u0311\x93\x03\x02\x02\x02\u0312\u0313\x05\f\x07\x02\u0313" +
7083
- "\u0314\x07\x06\x02\x02\u0314\u0315\x05\x88E\x02\u0315\x95\x03\x02\x02" +
7084
- "\x02\u0316\u0317\x05\f\x07\x02\u0317\u0318\x07\x18\x02\x02\u0318\u0319" +
7085
- "\x05\xD4k\x02\u0319\x97\x03\x02\x02\x02\u031A\u031B\x07\x16\x02\x02\u031B" +
7086
- "\u031C\x05\x9AN\x02\u031C\x99\x03\x02\x02\x02\u031D\u0324\x05\x9CO\x02" +
7087
- "\u031E\u0320\x07l\x02\x02\u031F\u031E\x03\x02\x02\x02\u031F\u0320\x03" +
7088
- "\x02\x02\x02\u0320\u0321\x03\x02\x02\x02\u0321\u0323\x05\x9CO\x02\u0322" +
7089
- "\u031F\x03\x02\x02\x02\u0323\u0326\x03\x02\x02\x02\u0324\u0322\x03\x02" +
7090
- "\x02\x02\u0324\u0325\x03\x02\x02\x02\u0325\u0328\x03\x02\x02\x02\u0326" +
7091
- "\u0324\x03\x02\x02\x02\u0327\u0329\x07l\x02\x02\u0328\u0327\x03\x02\x02" +
7092
- "\x02\u0328\u0329\x03\x02\x02\x02\u0329\x9B\x03\x02\x02\x02\u032A\u032D" +
7093
- "\x07\x89\x02\x02\u032B\u032D\x05\xE0q\x02\u032C\u032A\x03\x02\x02\x02" +
7094
- "\u032C\u032B\x03\x02\x02\x02\u032D\u032F\x03\x02\x02\x02\u032E\u0330\t" +
7095
- "\x03\x02\x02\u032F\u032E\x03\x02\x02\x02\u032F\u0330\x03\x02\x02\x02\u0330" +
7096
- "\x9D\x03\x02\x02\x02\u0331\u0332\x07\x13\x02\x02\u0332\u0333\x07\x89\x02" +
7097
- "\x02\u0333\x9F\x03\x02\x02\x02\u0334\u0335\x07)\x02\x02\u0335\u0339\x05" +
7098
- "\xE0q\x02\u0336\u0337\x07)\x02\x02\u0337\u0339\x05\xC8e\x02\u0338\u0334" +
7099
- "\x03\x02\x02\x02\u0338\u0336\x03\x02\x02\x02\u0339\xA1\x03\x02\x02\x02" +
7100
- "\u033A\u033B\x07 \x02\x02\u033B\u033D\x07\x89\x02\x02\u033C\u033E\x05" +
7101
- "\xA0Q\x02\u033D\u033C\x03\x02\x02\x02\u033D\u033E\x03\x02\x02\x02\u033E" +
7102
- "\xA3\x03\x02\x02\x02\u033F\u0342\x05\xDCo\x02\u0340\u0341\x07m\x02\x02" +
7103
- "\u0341\u0343\x07v\x02\x02\u0342\u0340\x03\x02\x02\x02\u0342\u0343\x03" +
7104
- "\x02\x02\x02\u0343\u0347\x03\x02\x02\x02\u0344\u0347\x07v\x02\x02\u0345" +
7105
- "\u0347\x07w\x02\x02\u0346\u033F\x03\x02\x02\x02\u0346\u0344\x03\x02\x02" +
7106
- "\x02\u0346\u0345\x03\x02\x02\x02\u0347\xA5\x03\x02\x02\x02\u0348\u034F" +
7107
- "\x05\xA4S\x02\u0349\u034B\x07l\x02\x02\u034A\u0349\x03\x02\x02\x02\u034A" +
7108
- "\u034B\x03\x02\x02\x02\u034B\u034C\x03\x02\x02\x02\u034C\u034E\x05\xA4" +
7109
- "S\x02\u034D\u034A\x03\x02\x02\x02\u034E\u0351\x03\x02\x02\x02\u034F\u034D" +
7110
- "\x03\x02\x02\x02\u034F\u0350\x03\x02\x02\x02\u0350\xA7\x03\x02\x02\x02" +
7111
- "\u0351\u034F\x03\x02\x02\x02\u0352\u0353\x07\x0F\x02\x02\u0353\u0356\x05" +
7112
- "\xA6T\x02\u0354\u0355\x07)\x02\x02\u0355\u0357\x05\xE0q\x02\u0356\u0354" +
7113
- "\x03\x02\x02\x02\u0356\u0357\x03\x02\x02\x02\u0357\xA9\x03\x02\x02\x02" +
7114
- "\u0358\u0359\x07\x1C\x02\x02\u0359\u035A\x05\xB2Z\x02\u035A\xAB\x03\x02" +
7115
- "\x02\x02\u035B\u035C\x07\"\x02\x02\u035C\u035D\x05\xAEX\x02\u035D\xAD" +
7116
- "\x03\x02\x02\x02\u035E\u035F\x07\\\x02\x02\u035F\xAF\x03\x02\x02\x02\u0360" +
7117
- "\u0361\x07^\x02\x02\u0361\xB1\x03\x02\x02\x02\u0362\u0363\t\x04\x02\x02" +
7118
- "\u0363\xB3\x03\x02\x02\x02\u0364\u0365\t\x05\x02\x02\u0365\xB5\x03\x02" +
7119
- "\x02\x02\u0366\u0367\t\x06\x02\x02\u0367\xB7\x03\x02\x02\x02\u0368\u0369" +
7120
- "\t\x07\x02\x02\u0369\xB9\x03\x02\x02\x02\u036A\u0372\x07\\\x02\x02\u036B" +
7121
- "\u0372\t\b\x02\x02\u036C\u0372\x05\xBC_\x02\u036D\u0372\x07E\x02\x02\u036E" +
7122
- "\u0372\t\t\x02\x02\u036F\u0372\x07[\x02\x02\u0370\u0372\x07D\x02\x02\u0371" +
7123
- "\u036A\x03\x02\x02\x02\u0371\u036B\x03\x02\x02\x02\u0371\u036C\x03\x02" +
7124
- "\x02\x02\u0371\u036D\x03\x02\x02\x02\u0371\u036E\x03\x02\x02\x02\u0371" +
7125
- "\u036F\x03\x02\x02\x02\u0371\u0370\x03\x02\x02\x02\u0372\xBB\x03\x02\x02" +
7126
- "\x02\u0373\u037B\x07\x80\x02\x02\u0374\u037B\x07\x81\x02\x02\u0375\u037B" +
7127
- "\x07\x82\x02\x02\u0376\u037B\x07\x85\x02\x02\u0377\u037B\x07\x84\x02\x02" +
7128
- "\u0378\u037B\x07\x83\x02\x02\u0379\u037B\x07\x86\x02\x02\u037A\u0373\x03" +
7129
- "\x02\x02\x02\u037A\u0374\x03\x02\x02\x02\u037A\u0375\x03\x02\x02\x02\u037A" +
7130
- "\u0376\x03\x02\x02\x02\u037A\u0377\x03\x02\x02\x02\u037A\u0378\x03\x02" +
7131
- "\x02\x02\u037A\u0379\x03\x02\x02\x02\u037B\xBD\x03\x02\x02\x02\u037C\u037D" +
7132
- "\x07\\\x02\x02\u037D\xBF\x03\x02\x02\x02\u037E\u037F\x07\\\x02\x02\u037F" +
7133
- "\xC1\x03\x02\x02\x02\u0380\u0381\t\n\x02\x02\u0381\xC3\x03\x02\x02\x02" +
7134
- "\u0382\u0383\t\v\x02\x02\u0383\xC5\x03\x02\x02\x02\u0384\u0385\t\f\x02" +
7135
- "\x02\u0385\xC7\x03\x02\x02\x02\u0386\u0387\be\x01\x02\u0387\u03D5\x05" +
7136
- "\xDCo\x02\u0388\u03D5\x05\xBA^\x02\u0389\u038A\x07u\x02\x02\u038A\u03D5" +
7137
- "\x05\xC8e\x17\u038B\u038C\x07C\x02\x02\u038C\u03D5\x05\xC8e\x0E\u038D" +
7138
- "\u038E\x07+\x02\x02\u038E\u038F\x07b\x02\x02\u038F\u0390\x05\xC8e\x02" +
7139
- "\u0390\u0391\x07%\x02\x02\u0391\u0392\x05\xB6\\\x02\u0392\u0393\x07c\x02" +
7140
- "\x02\u0393\u03D5\x03\x02\x02\x02\u0394\u0395\x07-\x02\x02\u0395\u0396" +
7141
- "\x07b\x02\x02\u0396\u0397\x071\x02\x02\u0397\u0398\x05\xC8e\x02\u0398" +
7142
- "\u0399\x07c\x02\x02\u0399\u03D5\x03\x02\x02\x02\u039A\u039B\x05\xDCo\x02" +
7143
- "\u039B\u039C\x07m\x02\x02\u039C\u039E\x03\x02\x02\x02\u039D\u039A\x03" +
7144
- "\x02\x02\x02\u039D\u039E\x03\x02\x02\x02\u039E\u039F\x03\x02\x02\x02\u039F" +
7145
- "\u03A0\x05\xB4[\x02\u03A0\u03A3\x07b\x02\x02\u03A1\u03A4\x05\xC8e\x02" +
7146
- "\u03A2\u03A4\x07v\x02\x02\u03A3\u03A1\x03\x02\x02\x02\u03A3\u03A2\x03" +
7147
- "\x02\x02\x02\u03A3\u03A4\x03\x02\x02\x02\u03A4\u03A5\x03\x02\x02\x02\u03A5" +
7148
- "\u03A6\x07c\x02\x02\u03A6\u03D5\x03\x02\x02\x02\u03A7\u03A8\x07b\x02\x02" +
7149
- "\u03A8\u03A9\x05\xCAf\x02\u03A9\u03AA\x07c\x02\x02\u03AA\u03D5\x03\x02" +
7150
- "\x02\x02\u03AB\u03AC\x05\xDCo\x02\u03AC\u03AD\x07m\x02\x02\u03AD\u03AF" +
7151
- "\x03\x02\x02\x02\u03AE\u03AB\x03\x02\x02\x02\u03AE\u03AF\x03\x02\x02\x02" +
7152
- "\u03AF\u03B0\x03\x02\x02\x02\u03B0\u03B1\x05\xC2b\x02\u03B1\u03B3\x07" +
7153
- "b\x02\x02\u03B2\u03B4\x05\xD0i\x02\u03B3\u03B2\x03\x02\x02\x02\u03B3\u03B4" +
7154
- "\x03\x02\x02\x02\u03B4\u03B5\x03\x02\x02\x02\u03B5\u03B6\x07c\x02\x02" +
7155
- "\u03B6\u03D5\x03\x02\x02\x02\u03B7\u03BC\x05\xC2b\x02\u03B8\u03BA\x07" +
7156
- "j\x02\x02\u03B9\u03BB\x05\xB6\\\x02\u03BA\u03B9\x03\x02\x02\x02\u03BA" +
7157
- "\u03BB\x03\x02\x02\x02\u03BB\u03BD\x03\x02\x02\x02\u03BC\u03B8\x03\x02" +
7158
- "\x02\x02\u03BC\u03BD\x03\x02\x02\x02\u03BD\u03C0\x03\x02\x02\x02\u03BE" +
7159
- "\u03C0\x05\xC4c\x02\u03BF\u03B7\x03\x02\x02\x02\u03BF\u03BE\x03\x02\x02" +
7160
- "\x02\u03C0\u03C1\x03\x02\x02\x02\u03C1\u03C3\x07b\x02\x02\u03C2\u03C4" +
7161
- "\x05\xD0i\x02\u03C3\u03C2\x03\x02\x02\x02\u03C3\u03C4\x03\x02\x02\x02" +
7162
- "\u03C4\u03C5\x03\x02\x02\x02\u03C5\u03C6\x07c\x02\x02\u03C6\u03D5\x03" +
7163
- "\x02\x02\x02\u03C7\u03D5\x05\xCCg\x02\u03C8\u03C9\x05\xC6d\x02\u03C9\u03CA" +
7164
- "\x07b\x02\x02\u03CA\u03CF\x05\xC8e\x02\u03CB\u03CC\x07l\x02\x02\u03CC" +
7165
- "\u03CE\x05\xE0q\x02\u03CD\u03CB\x03\x02\x02\x02\u03CE\u03D1\x03\x02\x02" +
7166
- "\x02\u03CF\u03CD\x03\x02\x02\x02\u03CF\u03D0\x03\x02\x02\x02\u03D0\u03D2" +
7167
- "\x03\x02\x02\x02\u03D1\u03CF\x03\x02\x02\x02\u03D2\u03D3\x07c\x02\x02" +
7168
- "\u03D3\u03D5\x03\x02\x02\x02\u03D4\u0386\x03\x02\x02\x02\u03D4\u0388\x03" +
7169
- "\x02\x02\x02\u03D4\u0389\x03\x02\x02\x02\u03D4\u038B\x03\x02\x02\x02\u03D4" +
7170
- "\u038D\x03\x02\x02\x02\u03D4\u0394\x03\x02\x02\x02\u03D4\u039D\x03\x02" +
7171
- "\x02\x02\u03D4\u03A7\x03\x02\x02\x02\u03D4\u03AE\x03\x02\x02\x02\u03D4" +
7172
- "\u03BF\x03\x02\x02\x02\u03D4\u03C7\x03\x02\x02\x02\u03D4\u03C8\x03\x02" +
7173
- "\x02\x02\u03D5\u040C\x03\x02\x02\x02\u03D6\u03D7\f\x16\x02\x02\u03D7\u03D8" +
7174
- "\t\r\x02\x02\u03D8\u040B\x05\xC8e\x17\u03D9\u03DA\f\x15\x02\x02\u03DA" +
7175
- "\u03DB\t\x0E\x02\x02\u03DB\u040B\x05\xC8e\x16\u03DC\u03DD\f\x14\x02\x02" +
7176
- "\u03DD\u03DE\x07R\x02\x02\u03DE\u040B\x05\xC8e\x15\u03DF\u03E0\f\x10\x02" +
7177
- "\x02\u03E0\u03E1\x05\xB8]\x02\u03E1\u03E2\x05\xC8e\x11\u03E2\u040B\x03" +
7178
- "\x02\x02\x02\u03E3\u03E4\f\r\x02\x02\u03E4\u03E5\x07$\x02\x02\u03E5\u040B" +
7179
- "\x05\xC8e\x0E\u03E6\u03E7\f\f\x02\x02\u03E7\u03E8\x07H\x02\x02\u03E8\u040B" +
7180
- "\x05\xC8e\r\u03E9\u03EA\f\v\x02\x02\u03EA\u03EB\x07~\x02\x02\u03EB\u040B" +
7181
- "\x05\xC8e\f\u03EC\u03ED\f\x1D\x02\x02\u03ED\u03EE\x07f\x02\x02\u03EE\u03EF" +
7182
- "\x05t;\x02\u03EF\u03F0\x07g\x02\x02\u03F0\u040B\x03\x02\x02\x02\u03F1" +
7183
- "\u03F2\f\x1B\x02\x02\u03F2\u040B\x05\xC4c\x02\u03F3\u03F4\f\x1A\x02\x02" +
7184
- "\u03F4\u03F5\x07m\x02\x02\u03F5\u040B\x05\xC4c\x02\u03F6\u03F7\f\x19\x02" +
7185
- "\x02\u03F7\u03F8\x07h\x02\x02\u03F8\u040B\x05\xB6\\\x02\u03F9\u03FA\f" +
7186
- "\x18\x02\x02\u03FA\u03FB\x07i\x02\x02\u03FB\u040B\x05\xB6\\\x02\u03FC" +
7187
- "\u03FD\f\x13\x02\x02\u03FD\u03FE\x076\x02\x02\u03FE\u03FF\x05\xC8e\x02" +
7188
- "\u03FF\u0400\x05\xC4c\x02\u0400\u040B\x03\x02\x02\x02\u0401\u0402\f\x12" +
7189
- "\x02\x02\u0402\u0403\x07_\x02\x02\u0403\u040B\x05\xCAf\x02\u0404\u0405" +
7190
- "\f\x11\x02\x02\u0405\u0406\x07y\x02\x02\u0406\u040B\x05\xCAf\x02\u0407" +
7191
- "\u0408\f\x0F\x02\x02\u0408\u0409\x07\x7F\x02\x02\u0409\u040B\x05\xCAf" +
7192
- "\x02\u040A\u03D6\x03\x02\x02\x02\u040A\u03D9\x03\x02\x02\x02\u040A\u03DC" +
7193
- "\x03\x02\x02\x02\u040A\u03DF\x03\x02\x02\x02\u040A\u03E3\x03\x02\x02\x02" +
7194
- "\u040A\u03E6\x03\x02\x02\x02\u040A\u03E9\x03\x02\x02\x02\u040A\u03EC\x03" +
7195
- "\x02\x02\x02\u040A\u03F1\x03\x02\x02\x02\u040A\u03F3\x03\x02\x02\x02\u040A" +
7196
- "\u03F6\x03\x02\x02\x02\u040A\u03F9\x03\x02\x02\x02\u040A\u03FC\x03\x02" +
7197
- "\x02\x02\u040A\u0401\x03\x02\x02\x02\u040A\u0404\x03\x02\x02\x02\u040A" +
7198
- "\u0407\x03\x02\x02\x02\u040B\u040E\x03\x02\x02\x02\u040C\u040A\x03\x02" +
7199
- "\x02\x02\u040C\u040D\x03\x02\x02\x02\u040D\xC9\x03\x02\x02\x02\u040E\u040C" +
7200
- "\x03\x02\x02\x02\u040F\u0411\x05\xB8]\x02\u0410\u040F\x03\x02\x02\x02" +
7201
- "\u0410\u0411\x03\x02\x02\x02\u0411\u0412\x03\x02\x02\x02\u0412\u0413\x05" +
7202
- "\xC8e\x02\u0413\xCB\x03\x02\x02\x02\u0414\u0416\x05\xCEh\x02\u0415\u0414" +
7203
- "\x03\x02\x02\x02\u0416\u0417\x03\x02\x02\x02\u0417\u0415\x03\x02\x02\x02" +
7204
- "\u0417\u0418\x03\x02\x02\x02\u0418\u041B\x03\x02\x02\x02\u0419\u041A\x07" +
7205
- "2\x02\x02\u041A\u041C\x05\xC8e\x02\u041B\u0419\x03\x02\x02\x02\u041B\u041C" +
7206
- "\x03\x02\x02\x02\u041C\xCD\x03\x02\x02\x02\u041D\u041F\x07I\x02\x02\u041E" +
7207
- "\u0420\x05\xC8e\x02\u041F\u041E\x03\x02\x02\x02\u041F\u0420\x03\x02\x02" +
7208
- "\x02\u0420\u0421\x03\x02\x02\x02\u0421\u0422\x07V\x02\x02\u0422\u0423" +
7209
- "\x05\xCAf\x02\u0423\xCF\x03\x02\x02\x02\u0424\u0429\x05\xC8e\x02\u0425" +
7210
- "\u0426\x07l\x02\x02\u0426\u0428\x05\xC8e\x02\u0427\u0425\x03\x02\x02\x02" +
7211
- "\u0428\u042B\x03\x02\x02\x02\u0429\u0427\x03\x02\x02\x02\u0429\u042A\x03" +
7212
- "\x02\x02\x02\u042A\u042D\x03\x02\x02\x02\u042B\u0429\x03\x02\x02\x02\u042C" +
7213
- "\u042E\x07l\x02\x02\u042D\u042C\x03\x02\x02\x02\u042D\u042E\x03\x02\x02" +
7214
- "\x02\u042E\xD1\x03\x02\x02\x02\u042F\u0436\x05\xE0q\x02\u0430\u0432\x07" +
7215
- "l\x02\x02\u0431\u0430\x03\x02\x02\x02\u0431\u0432\x03\x02\x02\x02\u0432" +
7216
- "\u0433\x03\x02\x02\x02\u0433\u0435\x05\xE0q\x02\u0434\u0431\x03\x02\x02" +
7217
- "\x02\u0435\u0438\x03\x02\x02\x02\u0436\u0434\x03\x02\x02\x02\u0436\u0437" +
7218
- "\x03\x02\x02\x02\u0437\xD3\x03\x02\x02\x02\u0438\u0436\x03\x02\x02\x02" +
7219
- "\u0439\u0440\x05\xDAn\x02\u043A\u043C\x07l\x02\x02\u043B\u043A\x03\x02" +
7220
- "\x02\x02\u043B\u043C\x03\x02\x02\x02\u043C\u043D\x03\x02\x02\x02\u043D" +
7221
- "\u043F\x05\xDAn\x02\u043E\u043B\x03\x02\x02\x02\u043F\u0442\x03\x02\x02" +
7222
- "\x02\u0440\u043E\x03\x02\x02\x02\u0440\u0441\x03\x02\x02\x02\u0441\u0444" +
7223
- "\x03\x02\x02\x02\u0442\u0440\x03\x02\x02\x02\u0443\u0445\x07l\x02\x02" +
7224
- "\u0444\u0443\x03\x02\x02\x02\u0444\u0445\x03\x02\x02\x02\u0445\xD5\x03" +
7225
- "\x02\x02\x02\u0446\u0447\x05\xDCo\x02\u0447\u0448\x07m\x02\x02\u0448\u044A" +
7226
- "\x03\x02\x02\x02\u0449\u0446\x03\x02\x02\x02\u0449\u044A\x03\x02\x02\x02" +
7227
- "\u044A\u044B\x03\x02\x02\x02\u044B\u044C\t\x0F\x02\x02\u044C\xD7\x03\x02" +
7228
- "\x02\x02\u044D\u044E\x05\f\x07\x02\u044E\u044F\x05\xDCo\x02\u044F\xD9" +
7229
- "\x03\x02\x02\x02\u0450\u0454\x05\xD8m\x02\u0451\u0454\x05\xD6l\x02\u0452" +
7230
- "\u0454\x05Z.\x02\u0453\u0450\x03\x02\x02\x02\u0453\u0451\x03\x02\x02\x02" +
7231
- "\u0453\u0452\x03\x02\x02\x02\u0454\xDB\x03\x02\x02\x02\u0455\u045A\x05" +
7232
- "\xE0q\x02\u0456\u0457\x07m\x02\x02\u0457\u0459\x05\xE0q\x02\u0458\u0456" +
7233
- "\x03\x02\x02\x02\u0459\u045C\x03\x02\x02\x02\u045A\u0458\x03\x02\x02\x02" +
7234
- "\u045A\u045B\x03\x02\x02\x02\u045B\xDD\x03\x02\x02\x02\u045C\u045A\x03" +
7235
- "\x02\x02\x02\u045D\u045E\x05\xC2b\x02\u045E\xDF\x03\x02\x02\x02\u045F" +
7236
- "\u0460\x05\xC2b\x02\u0460\xE1\x03\x02\x02\x02\u0461\u0462\x05\xC8e\x02" +
7237
- "\u0462\u0463\x07\x02\x02\x03\u0463\xE3\x03\x02\x02\x02\u0464";
7238
- MalloyParser._serializedATNSegment2 = "\u0465\x05\xE6t\x02\u0465\xE5\x03\x02\x02\x02\u0466\u046F\x07\x03\x02" +
7239
- "\x02\u0467\u046F\x07\x89\x02\x02\u0468\u046F\x07\x8A\x02\x02\u0469\u046F" +
7240
- "\x05\xE8u\x02\u046A\u046F\x05\xECw\x02\u046B\u046F\x07S\x02\x02\u046C" +
7241
- "\u046F\x075\x02\x02\u046D\u046F\x07E\x02\x02\u046E\u0466\x03\x02\x02\x02" +
7242
- "\u046E\u0467\x03\x02\x02\x02\u046E\u0468\x03\x02\x02\x02\u046E\u0469\x03" +
7243
- "\x02\x02\x02\u046E\u046A\x03\x02\x02\x02\u046E\u046B\x03\x02\x02\x02\u046E" +
7244
- "\u046C\x03\x02\x02\x02\u046E\u046D\x03\x02\x02\x02\u046F\xE7\x03\x02\x02" +
7245
- "\x02\u0470\u0471\x07f\x02\x02\u0471\u0476\x05\xEAv\x02\u0472\u0473\x07" +
7246
- "l\x02\x02\u0473\u0475\x05\xEAv\x02\u0474\u0472\x03\x02\x02\x02\u0475\u0478" +
7247
- "\x03\x02\x02\x02\u0476\u0474\x03\x02\x02\x02\u0476\u0477\x03\x02\x02\x02" +
7248
- "\u0477\u0479\x03\x02\x02\x02\u0478\u0476\x03\x02\x02\x02\u0479\u047A\x07" +
7249
- "g\x02\x02\u047A\u047E\x03\x02\x02\x02\u047B\u047C\x07f\x02\x02\u047C\u047E" +
7250
- "\x07g\x02\x02\u047D\u0470\x03\x02\x02\x02\u047D\u047B\x03\x02\x02\x02" +
7251
- "\u047E\xE9\x03\x02\x02\x02\u047F\u0480\x07\x03\x02\x02\u0480\u0481\x07" +
7252
- "k\x02\x02\u0481\u0482\x05\xE6t\x02\u0482\xEB\x03\x02\x02\x02\u0483\u0484" +
7253
- "\x07d\x02\x02\u0484\u0489\x05\xE6t\x02\u0485\u0486\x07l\x02\x02\u0486" +
7254
- "\u0488\x05\xE6t\x02\u0487\u0485\x03\x02\x02\x02\u0488\u048B\x03\x02\x02" +
7255
- "\x02\u0489\u0487\x03\x02\x02\x02\u0489\u048A\x03\x02\x02\x02\u048A\u048C" +
7256
- "\x03\x02\x02\x02\u048B\u0489\x03\x02\x02\x02\u048C\u048D\x07e\x02\x02" +
7257
- "\u048D\u0491\x03\x02\x02\x02\u048E\u048F\x07d\x02\x02\u048F\u0491\x07" +
7258
- "e\x02\x02\u0490\u0483\x03\x02\x02\x02\u0490\u048E\x03\x02\x02\x02\u0491" +
7259
- "\xED\x03\x02\x02\x02\u0492\u0493\x05\xC2b\x02\u0493\xEF\x03\x02\x02\x02" +
7260
- "\u0494\u0495\x05\xC2b\x02\u0495\xF1\x03\x02\x02\x02\u0496\u0497\x07\x03" +
7261
- "\x02\x02\u0497\xF3\x03\x02\x02\x02{\xF6\xF8\u0104\u010F\u0117\u0125\u0130" +
6793
+ "e\x03e\x03e\x03e\x03e\x03e\x07e\u0412\ne\fe\x0Ee\u0415\ve\x03f\x05f\u0418" +
6794
+ "\nf\x03f\x03f\x03g\x06g\u041D\ng\rg\x0Eg\u041E\x03g\x03g\x05g\u0423\n" +
6795
+ "g\x03h\x03h\x05h\u0427\nh\x03h\x03h\x03h\x03i\x03i\x03i\x07i\u042F\ni" +
6796
+ "\fi\x0Ei\u0432\vi\x03i\x05i\u0435\ni\x03j\x03j\x05j\u0439\nj\x03j\x07" +
6797
+ "j\u043C\nj\fj\x0Ej\u043F\vj\x03k\x03k\x05k\u0443\nk\x03k\x07k\u0446\n" +
6798
+ "k\fk\x0Ek\u0449\vk\x03k\x05k\u044C\nk\x03l\x03l\x03l\x05l\u0451\nl\x03" +
6799
+ "l\x03l\x03m\x03m\x03m\x03n\x03n\x03n\x05n\u045B\nn\x03o\x03o\x03o\x07" +
6800
+ "o\u0460\no\fo\x0Eo\u0463\vo\x03p\x03p\x03q\x03q\x03r\x03r\x03r\x03s\x03" +
6801
+ "s\x03t\x03t\x03t\x03t\x03t\x03t\x03t\x03t\x05t\u0476\nt\x03u\x03u\x03" +
6802
+ "u\x03u\x07u\u047C\nu\fu\x0Eu\u047F\vu\x03u\x03u\x03u\x03u\x05u\u0485\n" +
6803
+ "u\x03v\x03v\x03v\x03v\x03w\x03w\x03w\x03w\x07w\u048F\nw\fw\x0Ew\u0492" +
6804
+ "\vw\x03w\x03w\x03w\x03w\x05w\u0498\nw\x03x\x03x\x03y\x03y\x03z\x03z\x03" +
6805
+ "z\x02\x02\x03\xC8{\x02\x02\x04\x02\x06\x02\b\x02\n\x02\f\x02\x0E\x02\x10" +
6806
+ "\x02\x12\x02\x14\x02\x16\x02\x18\x02\x1A\x02\x1C\x02\x1E\x02 \x02\"\x02" +
6807
+ "$\x02&\x02(\x02*\x02,\x02.\x020\x022\x024\x026\x028\x02:\x02<\x02>\x02" +
6808
+ "@\x02B\x02D\x02F\x02H\x02J\x02L\x02N\x02P\x02R\x02T\x02V\x02X\x02Z\x02" +
6809
+ "\\\x02^\x02`\x02b\x02d\x02f\x02h\x02j\x02l\x02n\x02p\x02r\x02t\x02v\x02" +
6810
+ "x\x02z\x02|\x02~\x02\x80\x02\x82\x02\x84\x02\x86\x02\x88\x02\x8A\x02\x8C" +
6811
+ "\x02\x8E\x02\x90\x02\x92\x02\x94\x02\x96\x02\x98\x02\x9A\x02\x9C\x02\x9E" +
6812
+ "\x02\xA0\x02\xA2\x02\xA4\x02\xA6\x02\xA8\x02\xAA\x02\xAC\x02\xAE\x02\xB0" +
6813
+ "\x02\xB2\x02\xB4\x02\xB6\x02\xB8\x02\xBA\x02\xBC\x02\xBE\x02\xC0\x02\xC2" +
6814
+ "\x02\xC4\x02\xC6\x02\xC8\x02\xCA\x02\xCC\x02\xCE\x02\xD0\x02\xD2\x02\xD4" +
6815
+ "\x02\xD6\x02\xD8\x02\xDA\x02\xDC\x02\xDE\x02\xE0\x02\xE2\x02\xE4\x02\xE6" +
6816
+ "\x02\xE8\x02\xEA\x02\xEC\x02\xEE\x02\xF0\x02\xF2\x02\x02\x10\x04\x02\x04" +
6817
+ "\x04\v\v\x04\x02&&00\x05\x0255TT\x89\x8A\x06\x02\'\'--?@MM\x07\x02((." +
6818
+ ".FFLLRR\x04\x02ot|}\x03\x02\x8A\x8B\x04\x0255TT\x04\x02\x88\x88\x8C\x8C" +
6819
+ "\b\x02//::ABJKVVYY\x04\x02##44\x05\x02wwyy~~\x03\x02uv\x03\x02wx\x02\u04EE" +
6820
+ "\x02\xF8\x03\x02\x02\x02\x04\u0104\x03\x02\x02\x02\x06\u0106\x03\x02\x02" +
6821
+ "\x02\b\u010F\x03\x02\x02\x02\n\u0111\x03\x02\x02\x02\f\u0117\x03\x02\x02" +
6822
+ "\x02\x0E\u011A\x03\x02\x02\x02\x10\u0125\x03\x02\x02\x02\x12\u0127\x03" +
6823
+ "\x02\x02\x02\x14\u012C\x03\x02\x02\x02\x16\u0138\x03\x02\x02\x02\x18\u013A" +
6824
+ "\x03\x02\x02\x02\x1A\u0143\x03\x02\x02\x02\x1C\u0147\x03\x02\x02\x02\x1E" +
6825
+ "\u014A\x03\x02\x02\x02 \u014D\x03\x02\x02\x02\"\u0152\x03\x02\x02\x02" +
6826
+ "$\u0157\x03\x02\x02\x02&\u015B\x03\x02\x02\x02(\u016A\x03\x02\x02\x02" +
6827
+ "*\u016F\x03\x02\x02\x02,\u0183\x03\x02\x02\x02.\u0185\x03\x02\x02\x02" +
6828
+ "0\u0194\x03\x02\x02\x022\u0196\x03\x02\x02\x024\u01A5\x03\x02\x02\x02" +
6829
+ "6\u01A7\x03\x02\x02\x028\u01B3\x03\x02\x02\x02:\u01B5\x03\x02\x02\x02" +
6830
+ "<\u01BA\x03\x02\x02\x02>\u01BC\x03\x02\x02\x02@\u01BE\x03\x02\x02\x02" +
6831
+ "B\u01CB\x03\x02\x02\x02D\u01D0\x03\x02\x02\x02F\u01EA\x03\x02\x02\x02" +
6832
+ "H\u01EC\x03\x02\x02\x02J\u01EE\x03\x02\x02\x02L\u01FA\x03\x02\x02\x02" +
6833
+ "N\u0212\x03\x02\x02\x02P\u0214\x03\x02\x02\x02R\u0218\x03\x02\x02\x02" +
6834
+ "T\u021C\x03\x02\x02\x02V\u0229\x03\x02\x02\x02X\u022D\x03\x02\x02\x02" +
6835
+ "Z\u023A\x03\x02\x02\x02\\\u023F\x03\x02\x02\x02^\u0241\x03\x02\x02\x02" +
6836
+ "`\u0243\x03\x02\x02\x02b\u0252\x03\x02\x02\x02d\u0254\x03\x02\x02\x02" +
6837
+ "f\u025A\x03\x02\x02\x02h\u025C\x03\x02\x02\x02j\u0266\x03\x02\x02\x02" +
6838
+ "l\u0273\x03\x02\x02\x02n\u0293\x03\x02\x02\x02p\u0295\x03\x02\x02\x02" +
6839
+ "r\u0299\x03\x02\x02\x02t\u029E\x03\x02\x02\x02v\u02A0\x03\x02\x02\x02" +
6840
+ "x\u02AB\x03\x02\x02\x02z\u02AE\x03\x02\x02\x02|\u02B1\x03\x02\x02\x02" +
6841
+ "~\u02BE\x03\x02\x02\x02\x80\u02C3\x03\x02\x02\x02\x82\u02DC\x03\x02\x02" +
6842
+ "\x02\x84\u02DE\x03\x02\x02\x02\x86\u02E0\x03\x02\x02\x02\x88\u02E4\x03" +
6843
+ "\x02\x02\x02\x8A\u02F3\x03\x02\x02\x02\x8C\u02F5\x03\x02\x02\x02\x8E\u02F9" +
6844
+ "\x03\x02\x02\x02\x90\u0313\x03\x02\x02\x02\x92\u0315\x03\x02\x02\x02\x94" +
6845
+ "\u0319\x03\x02\x02\x02\x96\u031D\x03\x02\x02\x02\x98\u0321\x03\x02\x02" +
6846
+ "\x02\x9A\u0324\x03\x02\x02\x02\x9C\u0333\x03\x02\x02\x02\x9E\u0338\x03" +
6847
+ "\x02\x02\x02\xA0\u033F\x03\x02\x02\x02\xA2\u0341\x03\x02\x02\x02\xA4\u034D" +
6848
+ "\x03\x02\x02\x02\xA6\u034F\x03\x02\x02\x02\xA8\u0359\x03\x02\x02\x02\xAA" +
6849
+ "\u035F\x03\x02\x02\x02\xAC\u0362\x03\x02\x02\x02\xAE\u0365\x03\x02\x02" +
6850
+ "\x02\xB0\u0367\x03\x02\x02\x02\xB2\u0369\x03\x02\x02\x02\xB4\u036B\x03" +
6851
+ "\x02\x02\x02\xB6\u036D\x03\x02\x02\x02\xB8\u036F\x03\x02\x02\x02\xBA\u0378" +
6852
+ "\x03\x02\x02\x02\xBC\u0381\x03\x02\x02\x02\xBE\u0383\x03\x02\x02\x02\xC0" +
6853
+ "\u0385\x03\x02\x02\x02\xC2\u0387\x03\x02\x02\x02\xC4\u0389\x03\x02\x02" +
6854
+ "\x02\xC6\u038B\x03\x02\x02\x02\xC8\u03DB\x03\x02\x02\x02\xCA\u0417\x03" +
6855
+ "\x02\x02\x02\xCC\u041C\x03\x02\x02\x02\xCE\u0424\x03\x02\x02\x02\xD0\u042B" +
6856
+ "\x03\x02\x02\x02\xD2\u0436\x03\x02\x02\x02\xD4\u0440\x03\x02\x02\x02\xD6" +
6857
+ "\u0450\x03\x02\x02\x02\xD8\u0454\x03\x02\x02\x02\xDA\u045A\x03\x02\x02" +
6858
+ "\x02\xDC\u045C\x03\x02\x02\x02\xDE\u0464\x03\x02\x02\x02\xE0\u0466\x03" +
6859
+ "\x02\x02\x02\xE2\u0468\x03\x02\x02\x02\xE4\u046B\x03\x02\x02\x02\xE6\u0475" +
6860
+ "\x03\x02\x02\x02\xE8\u0484\x03\x02\x02\x02\xEA\u0486\x03\x02\x02\x02\xEC" +
6861
+ "\u0497\x03\x02\x02\x02\xEE\u0499\x03\x02\x02\x02\xF0\u049B\x03\x02\x02" +
6862
+ "\x02\xF2\u049D\x03\x02\x02\x02\xF4\xF7\x05\x04\x03\x02\xF5\xF7\x07{\x02" +
6863
+ "\x02\xF6\xF4\x03\x02\x02\x02\xF6\xF5\x03\x02\x02\x02\xF7\xFA\x03\x02\x02" +
6864
+ "\x02\xF8\xF6\x03\x02\x02\x02\xF8\xF9\x03\x02\x02\x02\xF9\xFB\x03\x02\x02" +
6865
+ "\x02\xFA\xF8\x03\x02\x02\x02\xFB\xFC\x07\x02\x02\x03\xFC\x03\x03\x02\x02" +
6866
+ "\x02\xFD\u0105\x05\x06\x04\x02\xFE\u0105\x05\x12\n\x02\xFF\u0105\x05\b" +
6867
+ "\x05\x02\u0100\u0105\x05\x1C\x0F\x02\u0101\u0105\x05\x10\t\x02\u0102\u0105" +
6868
+ "\x05 \x11\x02\u0103\u0105\x05\"\x12\x02\u0104\xFD\x03\x02\x02\x02\u0104" +
6869
+ "\xFE\x03\x02\x02\x02\u0104\xFF\x03\x02\x02\x02\u0104\u0100\x03\x02\x02" +
6870
+ "\x02\u0104\u0101\x03\x02\x02\x02\u0104\u0102\x03\x02\x02\x02\u0104\u0103" +
6871
+ "\x03\x02\x02\x02\u0105\x05\x03\x02\x02\x02\u0106\u0107\x05\f\x07\x02\u0107" +
6872
+ "\u0108\x07\x1E\x02\x02\u0108\u0109\x05@!\x02\u0109\x07\x03\x02\x02\x02" +
6873
+ "\u010A\u0110\x05&\x14\x02\u010B\u010C\x05\f\x07\x02\u010C\u010D\x07\x19" +
6874
+ "\x02\x02\u010D\u010E\x05\n\x06\x02\u010E\u0110\x03\x02\x02\x02\u010F\u010A" +
6875
+ "\x03\x02\x02\x02\u010F\u010B\x03\x02\x02\x02\u0110\t\x03\x02\x02\x02\u0111" +
6876
+ "\u0112\x05\f\x07\x02\u0112\u0113\x05,\x17\x02\u0113\v\x03\x02\x02\x02" +
6877
+ "\u0114\u0116\x07_\x02\x02\u0115\u0114\x03\x02\x02\x02\u0116\u0119\x03" +
6878
+ "\x02\x02\x02\u0117\u0115\x03\x02\x02\x02\u0117\u0118\x03\x02\x02\x02\u0118" +
6879
+ "\r\x03\x02\x02\x02\u0119\u0117\x03\x02\x02\x02\u011A\u011B\x05\f\x07\x02" +
6880
+ "\u011B\u011C\x07<\x02\x02\u011C\u011D\x05\f\x07\x02\u011D\x0F\x03\x02" +
6881
+ "\x02\x02\u011E\u011F\x05\f\x07\x02\u011F\u0120\x07\x1B\x02\x02\u0120\u0121" +
6882
+ "\x05\f\x07\x02\u0121\u0122\x05\n\x06\x02\u0122\u0126\x03\x02\x02\x02\u0123" +
6883
+ "\u0124\x07\x1B\x02\x02\u0124\u0126\x05> \x02\u0125\u011E\x03\x02\x02\x02" +
6884
+ "\u0125\u0123\x03\x02\x02\x02\u0126\x11\x03\x02\x02\x02\u0127\u0128\x07" +
6885
+ "\x1F\x02\x02\u0128\u0129\x05\xF0y\x02\u0129\u012A\x05\x0E\b\x02\u012A" +
6886
+ "\u012B\x05\x14\v\x02\u012B\x13\x03\x02\x02\x02\u012C\u012E\x07g\x02\x02" +
6887
+ "\u012D\u012F\x05\x16\f\x02\u012E\u012D\x03\x02\x02\x02\u012F\u0130\x03" +
6888
+ "\x02\x02\x02\u0130\u012E\x03\x02\x02\x02\u0130\u0131\x03\x02\x02\x02\u0131" +
6889
+ "\u0132\x03\x02\x02\x02\u0132\u0133\x07h\x02\x02\u0133\x15\x03\x02\x02" +
6890
+ "\x02\u0134\u0135\x07\b\x02\x02\u0135\u0139\x05\xF2z\x02\u0136\u0137\x07" +
6891
+ "\x1D\x02\x02\u0137\u0139\x05\x18\r\x02\u0138\u0134\x03\x02\x02\x02\u0138" +
6892
+ "\u0136\x03\x02\x02\x02\u0139\x17\x03\x02\x02\x02\u013A\u013E\x07\x90\x02" +
6893
+ "\x02\u013B\u013D\x05\x1A\x0E\x02\u013C\u013B\x03\x02\x02\x02\u013D\u0140" +
6894
+ "\x03\x02\x02\x02\u013E\u013C\x03\x02\x02\x02\u013E\u013F\x03\x02\x02\x02" +
6895
+ "\u013F\u0141\x03\x02\x02\x02\u0140\u013E\x03\x02\x02\x02\u0141\u0142\x07" +
6896
+ "\x95\x02\x02\u0142\x19\x03\x02\x02\x02\u0143\u0144\x07\x94\x02\x02\u0144" +
6897
+ "\u0145\x05,\x17\x02\u0145\u0146\x07\x91\x02\x02\u0146\x1B\x03\x02\x02" +
6898
+ "\x02\u0147\u0148\x07;\x02\x02\u0148\u0149\x05\x1E\x10\x02\u0149\x1D\x03" +
6899
+ "\x02\x02\x02\u014A\u014B\x07\x03\x02\x02\u014B\x1F\x03\x02\x02\x02\u014C" +
6900
+ "\u014E\x07^\x02\x02\u014D\u014C\x03\x02\x02\x02\u014E\u014F\x03\x02\x02" +
6901
+ "\x02\u014F\u014D\x03\x02\x02\x02\u014F\u0150\x03\x02\x02\x02\u0150!\x03" +
6902
+ "\x02\x02\x02\u0151\u0153\x07_\x02\x02\u0152\u0151\x03\x02\x02\x02\u0153" +
6903
+ "\u0154\x03\x02\x02\x02\u0154\u0152\x03\x02\x02\x02\u0154\u0155\x03\x02" +
6904
+ "\x02\x02\u0155#\x03\x02\x02\x02\u0156\u0158\x07^\x02\x02\u0157\u0156\x03" +
6905
+ "\x02\x02\x02\u0158\u0159\x03\x02\x02\x02\u0159\u0157\x03\x02\x02\x02\u0159" +
6906
+ "\u015A\x03\x02\x02\x02\u015A%\x03\x02\x02\x02\u015B\u015C\x05\f\x07\x02" +
6907
+ "\u015C\u015D\x07\x19\x02\x02\u015D\u0164\x05(\x15\x02\u015E\u0160\x07" +
6908
+ "m\x02\x02\u015F\u015E\x03\x02\x02\x02\u015F\u0160\x03\x02\x02\x02\u0160" +
6909
+ "\u0161\x03\x02\x02\x02\u0161\u0163\x05(\x15\x02\u0162\u015F\x03\x02\x02" +
6910
+ "\x02\u0163\u0166\x03\x02\x02\x02\u0164\u0162\x03\x02\x02\x02\u0164\u0165" +
6911
+ "\x03\x02\x02\x02\u0165\u0168\x03\x02\x02\x02\u0166\u0164\x03\x02\x02\x02" +
6912
+ "\u0167\u0169\x07m\x02\x02\u0168\u0167\x03\x02\x02\x02\u0168\u0169\x03" +
6913
+ "\x02\x02\x02\u0169\'\x03\x02\x02\x02\u016A\u016B\x05\f\x07\x02\u016B\u016C" +
6914
+ "\x05> \x02\u016C\u016D\x05\x0E\b\x02\u016D\u016E\x05,\x17\x02\u016E)\x03" +
6915
+ "\x02\x02\x02\u016F\u0170\x07u\x02\x02\u0170+\x03\x02\x02\x02\u0171\u0172" +
6916
+ "\x05D#\x02\u0172\u0173\x07a\x02\x02\u0173\u0174\x05.\x18\x02\u0174\u0184" +
6917
+ "\x03\x02\x02\x02\u0175\u0176\x07a\x02\x02\u0176\u017B\x05> \x02\u0177" +
6918
+ "\u0179\x05*\x16\x02\u0178\u0177\x03\x02\x02\x02\u0178\u0179\x03\x02\x02" +
6919
+ "\x02\u0179\u017A\x03\x02\x02\x02\u017A\u017C\x058\x1D\x02\u017B\u0178" +
6920
+ "\x03\x02\x02\x02\u017B\u017C\x03\x02\x02\x02\u017C\u0180\x03\x02\x02\x02" +
6921
+ "\u017D\u017F\x052\x1A\x02\u017E\u017D\x03\x02\x02\x02\u017F\u0182\x03" +
6922
+ "\x02\x02\x02\u0180\u017E\x03\x02\x02\x02\u0180\u0181\x03\x02\x02\x02\u0181" +
6923
+ "\u0184\x03\x02\x02\x02\u0182\u0180\x03\x02\x02\x02\u0183\u0171\x03\x02" +
6924
+ "\x02\x02\u0183\u0175\x03\x02\x02\x02\u0184-\x03\x02\x02\x02\u0185\u0189" +
6925
+ "\x050\x19\x02\u0186\u0188\x052\x1A\x02\u0187\u0186\x03\x02\x02\x02\u0188" +
6926
+ "\u018B\x03\x02\x02\x02\u0189\u0187\x03\x02\x02\x02\u0189\u018A\x03\x02" +
6927
+ "\x02\x02\u018A/\x03\x02\x02\x02\u018B\u0189\x03\x02\x02\x02\u018C\u0195" +
6928
+ "\x058\x1D\x02\u018D\u0192\x05<\x1F\x02\u018E\u0190\x05*\x16\x02\u018F" +
6929
+ "\u018E\x03\x02\x02\x02\u018F\u0190\x03\x02\x02\x02\u0190\u0191\x03\x02" +
6930
+ "\x02\x02\u0191\u0193\x058\x1D\x02\u0192\u018F\x03\x02\x02\x02\u0192\u0193" +
6931
+ "\x03\x02\x02\x02\u0193\u0195\x03\x02\x02\x02\u0194\u018C\x03\x02\x02\x02" +
6932
+ "\u0194\u018D\x03\x02\x02\x02\u01951\x03\x02\x02\x02\u0196\u0197\x07a\x02" +
6933
+ "\x02\u0197\u0198\x058\x1D\x02\u01983\x03\x02\x02\x02\u0199\u019A\x07O" +
6934
+ "\x02\x02\u019A\u019B\x07c\x02\x02\u019B\u019C\x05\xC0a\x02\u019C\u019D" +
6935
+ "\x07d\x02\x02\u019D\u01A6\x03\x02\x02\x02\u019E\u019F\x056\x1C\x02\u019F" +
6936
+ "\u01A0\x07n\x02\x02\u01A0\u01A1\x07O\x02\x02\u01A1\u01A2\x07c\x02\x02" +
6937
+ "\u01A2\u01A3\x05\xBE`\x02\u01A3\u01A4\x07d\x02\x02\u01A4\u01A6\x03\x02" +
6938
+ "\x02\x02\u01A5\u0199\x03\x02\x02\x02\u01A5\u019E\x03\x02\x02\x02\u01A6" +
6939
+ "5\x03\x02\x02\x02\u01A7\u01A8\x05\xC2b\x02\u01A87\x03\x02\x02\x02\u01A9" +
6940
+ "\u01B4\x05:\x1E\x02\u01AA\u01AF\x07g\x02\x02\u01AB\u01AE\x05\x82B\x02" +
6941
+ "\u01AC\u01AE\x07{\x02\x02\u01AD\u01AB\x03\x02\x02\x02\u01AD\u01AC\x03" +
6942
+ "\x02\x02\x02\u01AE\u01B1\x03\x02\x02\x02\u01AF\u01AD\x03\x02\x02\x02\u01AF" +
6943
+ "\u01B0\x03\x02\x02\x02\u01B0\u01B2\x03\x02\x02\x02\u01B1\u01AF\x03\x02" +
6944
+ "\x02\x02\u01B2\u01B4\x07h\x02\x02\u01B3\u01A9\x03\x02\x02\x02\u01B3\u01AA" +
6945
+ "\x03\x02\x02\x02\u01B49\x03\x02\x02\x02\u01B5\u01B6\x07g\x02\x02\u01B6" +
6946
+ "\u01B7\x07\x80\x02\x02\u01B7\u01B8\x05\xC8e\x02\u01B8\u01B9\x07h\x02\x02" +
6947
+ "\u01B9;\x03\x02\x02\x02\u01BA\u01BB\x05\xC2b\x02\u01BB=\x03\x02\x02\x02" +
6948
+ "\u01BC\u01BD\x05";
6949
+ MalloyParser._serializedATNSegment1 = "\xC2b\x02\u01BD?\x03\x02\x02\x02\u01BE\u01C5\x05B\"\x02\u01BF\u01C1\x07" +
6950
+ "m\x02\x02\u01C0\u01BF\x03\x02\x02\x02\u01C0\u01C1\x03\x02\x02\x02\u01C1" +
6951
+ "\u01C2\x03\x02\x02\x02\u01C2\u01C4\x05B\"\x02\u01C3\u01C0\x03\x02\x02" +
6952
+ "\x02\u01C4\u01C7\x03\x02\x02\x02\u01C5\u01C3\x03\x02\x02\x02\u01C5\u01C6" +
6953
+ "\x03\x02\x02\x02\u01C6\u01C9\x03\x02\x02\x02\u01C7\u01C5\x03\x02\x02\x02" +
6954
+ "\u01C8\u01CA\x07m\x02\x02\u01C9\u01C8\x03\x02\x02\x02\u01C9\u01CA\x03" +
6955
+ "\x02\x02\x02\u01CAA\x03\x02\x02\x02\u01CB\u01CC\x05\f\x07\x02\u01CC\u01CD" +
6956
+ "\x05H%\x02\u01CD\u01CE\x05\x0E\b\x02\u01CE\u01CF\x05D#\x02\u01CFC\x03" +
6957
+ "\x02\x02\x02\u01D0\u01D5\x05F$\x02\u01D1\u01D3\x05*\x16\x02\u01D2\u01D1" +
6958
+ "\x03\x02\x02\x02\u01D2\u01D3\x03\x02\x02\x02\u01D3\u01D4\x03\x02\x02\x02" +
6959
+ "\u01D4\u01D6\x05L\'\x02\u01D5\u01D2\x03\x02\x02\x02\u01D5\u01D6\x03\x02" +
6960
+ "\x02\x02\u01D6E\x03\x02\x02\x02\u01D7\u01EB\x05J&\x02\u01D8\u01EB\x05" +
6961
+ "4\x1B\x02\u01D9\u01DA\x077\x02\x02\u01DA\u01DB\x07c\x02\x02\u01DB\u01DC" +
6962
+ "\x05,\x17\x02\u01DC\u01DD\x07d\x02\x02\u01DD\u01EB\x03\x02\x02\x02\u01DE" +
6963
+ "\u01DF\x078\x02\x02\u01DF\u01E0\x07c\x02\x02\u01E0\u01E1\x05\xEEx\x02" +
6964
+ "\u01E1\u01E2\x07d\x02\x02\u01E2\u01EB\x03\x02\x02\x02\u01E3\u01E4\x05" +
6965
+ "6\x1C\x02\u01E4\u01E5\x07n\x02\x02\u01E5\u01E6\x07N\x02\x02\u01E6\u01E7" +
6966
+ "\x07c\x02\x02\u01E7\u01E8\x05\x18\r\x02\u01E8\u01E9\x07d\x02\x02\u01E9" +
6967
+ "\u01EB\x03\x02\x02\x02\u01EA\u01D7\x03\x02\x02\x02\u01EA\u01D8\x03\x02" +
6968
+ "\x02\x02\u01EA\u01D9\x03\x02\x02\x02\u01EA\u01DE\x03\x02\x02\x02\u01EA" +
6969
+ "\u01E3\x03\x02\x02\x02\u01EBG\x03\x02\x02\x02\u01EC\u01ED\x05\xC2b\x02" +
6970
+ "\u01EDI\x03\x02\x02\x02\u01EE\u01EF\x05\xC2b\x02\u01EFK\x03\x02\x02\x02" +
6971
+ "\u01F0\u01F5\x07g\x02\x02\u01F1\u01F4\x05N(\x02\u01F2\u01F4\x07{\x02\x02" +
6972
+ "\u01F3\u01F1\x03\x02\x02\x02\u01F3\u01F2\x03\x02\x02\x02\u01F4\u01F7\x03" +
6973
+ "\x02\x02\x02\u01F5\u01F3\x03\x02\x02\x02\u01F5\u01F6\x03\x02\x02\x02\u01F6" +
6974
+ "\u01F8\x03\x02\x02\x02\u01F7\u01F5\x03\x02\x02\x02\u01F8\u01FB\x07h\x02" +
6975
+ "\x02\u01F9\u01FB\x05:\x1E\x02\u01FA\u01F0\x03\x02\x02\x02\u01FA\u01F9" +
6976
+ "\x03\x02\x02\x02\u01FBM\x03\x02\x02\x02\u01FC\u0213\x05R*\x02\u01FD\u0213" +
6977
+ "\x05P)\x02\u01FE\u0213\x05`1\x02\u01FF\u0213\x05b2\x02\u0200\u0213\x05" +
6978
+ "x=\x02\u0201\u0202\x07\x17\x02\x02\u0202\u0213\x05\xE0q\x02\u0203\u0204" +
6979
+ "\x07\x1A\x02\x02\u0204\u0213\x05T+\x02\u0205\u0206\t\x02\x02\x02\u0206" +
6980
+ "\u0213\x05\xD2j\x02\u0207\u0208\x05\f\x07\x02\u0208\u0209\x07\x19\x02" +
6981
+ "\x02\u0209\u020A\x05|?\x02\u020A\u0213\x03\x02\x02\x02\u020B\u0213\x05" +
6982
+ "\xACW\x02\u020C\u020E\x07_\x02\x02\u020D\u020C\x03\x02\x02\x02\u020E\u020F" +
6983
+ "\x03\x02\x02\x02\u020F\u020D\x03\x02\x02\x02\u020F\u0210\x03\x02\x02\x02" +
6984
+ "\u0210\u0213\x03\x02\x02\x02\u0211\u0213\x05$\x13\x02\u0212\u01FC\x03" +
6985
+ "\x02\x02\x02\u0212\u01FD\x03\x02\x02\x02\u0212\u01FE\x03\x02\x02\x02\u0212" +
6986
+ "\u01FF\x03\x02\x02\x02\u0212\u0200\x03\x02\x02\x02\u0212\u0201\x03\x02" +
6987
+ "\x02\x02\u0212\u0203\x03\x02\x02\x02\u0212\u0205\x03\x02\x02\x02\u0212" +
6988
+ "\u0207\x03\x02\x02\x02\u0212\u020B\x03\x02\x02\x02\u0212\u020D\x03\x02" +
6989
+ "\x02\x02\u0212\u0211\x03\x02\x02\x02\u0213O\x03\x02\x02\x02\u0214\u0215" +
6990
+ "\x05\f\x07\x02\u0215\u0216\x07\x14\x02\x02\u0216\u0217\x05X-\x02\u0217" +
6991
+ "Q\x03\x02\x02\x02\u0218\u0219\x05\f\x07\x02\u0219\u021A\x07\n\x02\x02" +
6992
+ "\u021A\u021B\x05X-\x02\u021BS\x03\x02\x02\x02\u021C\u0223\x05V,\x02\u021D" +
6993
+ "\u021F\x07m\x02\x02\u021E\u021D\x03\x02\x02\x02\u021E\u021F\x03\x02\x02" +
6994
+ "\x02\u021F\u0220\x03\x02\x02\x02\u0220\u0222\x05V,\x02\u0221\u021E\x03" +
6995
+ "\x02\x02\x02\u0222\u0225\x03\x02\x02\x02\u0223\u0221\x03\x02\x02\x02\u0223" +
6996
+ "\u0224\x03\x02\x02\x02\u0224\u0227\x03\x02\x02\x02\u0225\u0223\x03\x02" +
6997
+ "\x02\x02\u0226\u0228\x07m\x02\x02\u0227\u0226\x03\x02\x02\x02\u0227\u0228" +
6998
+ "\x03\x02\x02\x02\u0228U\x03\x02\x02\x02\u0229\u022A\x05\xE0q\x02\u022A" +
6999
+ "\u022B\x05\x0E\b\x02\u022B\u022C\x05\xE0q\x02\u022CW\x03\x02\x02\x02\u022D" +
7000
+ "\u0234\x05Z.\x02\u022E\u0230\x07m\x02\x02\u022F\u022E\x03\x02\x02\x02" +
7001
+ "\u022F\u0230\x03\x02\x02\x02\u0230\u0231\x03\x02\x02\x02\u0231\u0233\x05" +
7002
+ "Z.\x02\u0232\u022F\x03\x02\x02\x02\u0233\u0236\x03\x02\x02\x02\u0234\u0232" +
7003
+ "\x03\x02\x02\x02\u0234\u0235\x03\x02\x02\x02\u0235\u0238\x03\x02\x02\x02" +
7004
+ "\u0236\u0234\x03\x02\x02\x02\u0237\u0239\x07m\x02\x02\u0238\u0237\x03" +
7005
+ "\x02\x02\x02\u0238\u0239\x03\x02\x02\x02\u0239Y\x03\x02\x02\x02\u023A" +
7006
+ "\u023B\x05\f\x07\x02\u023B\u023C\x05\\/\x02\u023C\u023D\x05\x0E\b\x02" +
7007
+ "\u023D\u023E\x05\xC8e\x02\u023E[\x03\x02\x02\x02\u023F\u0240\x05\xC2b" +
7008
+ "\x02\u0240]\x03\x02\x02\x02\u0241\u0242\x05\xC2b\x02\u0242_\x03\x02\x02" +
7009
+ "\x02\u0243\u0244\x07\t\x02\x02\u0244\u0245\x05X-\x02\u0245a\x03\x02\x02" +
7010
+ "\x02\u0246\u0247\x05\f\x07\x02\u0247\u0248\x07\x11\x02\x02\u0248\u0249" +
7011
+ "\x05j6\x02\u0249\u0253\x03\x02\x02\x02\u024A\u024B\x05\f\x07\x02\u024B" +
7012
+ "\u024C\x07\x12\x02\x02\u024C\u024D\x05j6\x02\u024D\u0253\x03\x02\x02\x02" +
7013
+ "\u024E\u024F\x05\f\x07\x02\u024F\u0250\x07\x10\x02\x02\u0250\u0251\x05" +
7014
+ "j6\x02\u0251\u0253\x03\x02\x02\x02\u0252\u0246\x03\x02\x02\x02\u0252\u024A" +
7015
+ "\x03\x02\x02\x02\u0252\u024E\x03\x02\x02\x02\u0253c\x03\x02\x02\x02\u0254" +
7016
+ "\u0255\x07\f\x02\x02\u0255\u0256\x05h5\x02\u0256e\x03\x02\x02\x02\u0257" +
7017
+ "\u025B\x05R*\x02\u0258\u025B\x05P)\x02\u0259\u025B\x05b2\x02\u025A\u0257" +
7018
+ "\x03\x02\x02\x02\u025A\u0258\x03\x02\x02\x02\u025A\u0259\x03\x02\x02\x02" +
7019
+ "\u025Bg\x03\x02\x02\x02\u025C\u0261\x07g\x02\x02\u025D\u0260\x05f4\x02" +
7020
+ "\u025E\u0260\x07{\x02\x02\u025F\u025D\x03\x02\x02\x02\u025F\u025E\x03" +
7021
+ "\x02\x02\x02\u0260\u0263\x03\x02\x02\x02\u0261\u025F\x03\x02\x02\x02\u0261" +
7022
+ "\u0262\x03\x02\x02\x02\u0262\u0264\x03\x02\x02\x02\u0263\u0261\x03\x02" +
7023
+ "\x02\x02\u0264\u0265\x07h\x02\x02\u0265i\x03\x02\x02\x02\u0266\u026D\x05" +
7024
+ "n8\x02\u0267\u0269\x07m\x02\x02\u0268\u0267\x03\x02\x02\x02\u0268\u0269" +
7025
+ "\x03\x02\x02\x02\u0269\u026A\x03\x02\x02\x02\u026A\u026C\x05n8\x02\u026B" +
7026
+ "\u0268\x03\x02\x02\x02\u026C\u026F\x03\x02\x02\x02\u026D\u026B\x03\x02" +
7027
+ "\x02\x02\u026D\u026E\x03\x02\x02\x02\u026E\u0271\x03\x02\x02\x02\u026F" +
7028
+ "\u026D\x03\x02\x02\x02\u0270\u0272\x07m\x02\x02\u0271\u0270\x03\x02\x02" +
7029
+ "\x02\u0271\u0272\x03\x02\x02\x02\u0272k\x03\x02\x02\x02\u0273\u0274\x05" +
7030
+ "\f\x07\x02\u0274\u0275\x07<\x02\x02\u0275\u0276\x05\f\x07\x02\u0276\u0277" +
7031
+ "\x05D#\x02\u0277m\x03\x02\x02\x02\u0278\u027A\x07_\x02\x02\u0279\u0278" +
7032
+ "\x03\x02\x02\x02\u027A\u027D\x03\x02\x02\x02\u027B\u0279\x03\x02\x02\x02" +
7033
+ "\u027B\u027C\x03\x02\x02\x02\u027C\u027E\x03\x02\x02\x02\u027D\u027B\x03" +
7034
+ "\x02\x02\x02\u027E\u0280\x05^0\x02\u027F\u0281\x05l7\x02\u0280\u027F\x03" +
7035
+ "\x02\x02\x02\u0280\u0281\x03\x02\x02\x02\u0281\u0282\x03\x02\x02\x02\u0282" +
7036
+ "\u0283\x07X\x02\x02\u0283\u0284\x05\xC8e\x02\u0284\u0294\x03\x02\x02\x02" +
7037
+ "\u0285\u0287\x07_\x02\x02\u0286\u0285\x03\x02\x02\x02\u0287\u028A\x03" +
7038
+ "\x02\x02\x02\u0288\u0286\x03\x02\x02\x02\u0288\u0289\x03\x02\x02\x02\u0289" +
7039
+ "\u028B\x03\x02\x02\x02\u028A\u0288\x03\x02\x02\x02\u028B\u028D\x05^0\x02" +
7040
+ "\u028C\u028E\x05l7\x02\u028D\u028C\x03\x02\x02\x02\u028D\u028E\x03\x02" +
7041
+ "\x02\x02\u028E\u0291\x03\x02\x02\x02\u028F\u0290\x07G\x02\x02\u0290\u0292" +
7042
+ "\x05p9\x02\u0291\u028F\x03\x02\x02\x02\u0291\u0292\x03\x02\x02\x02\u0292" +
7043
+ "\u0294\x03\x02\x02\x02\u0293\u027B\x03\x02\x02\x02\u0293\u0288\x03\x02" +
7044
+ "\x02\x02\u0294o\x03\x02\x02\x02\u0295\u0296\x05\xC8e\x02\u0296q\x03\x02" +
7045
+ "\x02\x02\u0297\u029A\x05x=\x02\u0298\u029A\x05z>\x02\u0299\u0297\x03\x02" +
7046
+ "\x02\x02\u0299\u0298\x03\x02\x02\x02\u029As\x03\x02\x02\x02\u029B\u029C" +
7047
+ "\x07\x80\x02\x02\u029C\u029F\x05\xC8e\x02\u029D\u029F\x05x=\x02\u029E" +
7048
+ "\u029B\x03\x02\x02\x02\u029E\u029D\x03\x02\x02\x02\u029Fu\x03\x02\x02" +
7049
+ "\x02\u02A0\u02A5\x05\xC8e\x02\u02A1\u02A2\x07m\x02\x02\u02A2\u02A4\x05" +
7050
+ "\xC8e\x02\u02A3\u02A1\x03\x02\x02\x02\u02A4\u02A7\x03\x02\x02\x02\u02A5" +
7051
+ "\u02A3\x03\x02\x02\x02\u02A5\u02A6\x03\x02\x02\x02\u02A6\u02A9\x03\x02" +
7052
+ "\x02\x02\u02A7\u02A5\x03\x02\x02\x02\u02A8\u02AA\x07m\x02\x02\u02A9\u02A8" +
7053
+ "\x03\x02\x02\x02\u02A9\u02AA\x03\x02\x02\x02\u02AAw\x03\x02\x02\x02\u02AB" +
7054
+ "\u02AC\x07!\x02\x02\u02AC\u02AD\x05v<\x02\u02ADy\x03\x02\x02\x02\u02AE" +
7055
+ "\u02AF\x07\x0E\x02\x02\u02AF\u02B0\x05v<\x02\u02B0{\x03\x02\x02\x02\u02B1" +
7056
+ "\u02B8\x05\x80A\x02\u02B2\u02B4\x07m\x02\x02\u02B3\u02B2\x03\x02\x02\x02" +
7057
+ "\u02B3\u02B4\x03\x02\x02\x02\u02B4\u02B5\x03\x02\x02\x02\u02B5\u02B7\x05" +
7058
+ "\x80A\x02\u02B6\u02B3\x03\x02\x02\x02\u02B7\u02BA\x03\x02\x02\x02\u02B8" +
7059
+ "\u02B6\x03\x02\x02\x02\u02B8\u02B9\x03\x02\x02\x02\u02B9\u02BC\x03\x02" +
7060
+ "\x02\x02\u02BA\u02B8\x03\x02\x02\x02\u02BB\u02BD\x07m\x02\x02\u02BC\u02BB" +
7061
+ "\x03\x02\x02\x02\u02BC\u02BD\x03\x02\x02\x02\u02BD}\x03\x02\x02\x02\u02BE" +
7062
+ "\u02BF\x05\xC2b\x02\u02BF\x7F\x03\x02\x02\x02\u02C0\u02C2\x07_\x02\x02" +
7063
+ "\u02C1\u02C0\x03\x02\x02\x02\u02C2\u02C5\x03\x02\x02\x02\u02C3\u02C1\x03" +
7064
+ "\x02\x02\x02\u02C3\u02C4\x03\x02\x02\x02\u02C4\u02C6\x03\x02\x02\x02\u02C5" +
7065
+ "\u02C3\x03\x02\x02\x02\u02C6\u02C7\x05~@\x02\u02C7\u02C8\x05\x0E\b\x02" +
7066
+ "\u02C8\u02C9\x05.\x18\x02\u02C9\x81\x03\x02\x02\x02\u02CA\u02DD\x05\x86" +
7067
+ "D\x02\u02CB\u02DD\x05`1\x02\u02CC\u02DD\x05\x84C\x02\u02CD\u02DD\x05d" +
7068
+ "3\x02\u02CE\u02DD\x05\x96L\x02\u02CF\u02DD\x05\xA8U\x02\u02D0\u02DD\x05" +
7069
+ "\x92J\x02\u02D1\u02DD\x05\x94K\x02\u02D2\u02DD\x05\xA2R\x02\u02D3\u02DD" +
7070
+ "\x05\x9EP\x02\u02D4\u02DD\x05\x98M\x02\u02D5\u02DD\x05x=\x02\u02D6\u02DD" +
7071
+ "\x05z>\x02\u02D7\u02DD\x05\x8CG\x02\u02D8\u02DD\x05\xAAV\x02\u02D9\u02DD" +
7072
+ "\x05\xACW\x02\u02DA\u02DD\x05\xB0Y\x02\u02DB\u02DD\x05$\x13\x02\u02DC" +
7073
+ "\u02CA\x03\x02\x02\x02\u02DC\u02CB\x03\x02\x02\x02\u02DC\u02CC\x03\x02" +
7074
+ "\x02\x02\u02DC\u02CD\x03\x02\x02\x02\u02DC\u02CE\x03\x02\x02\x02\u02DC" +
7075
+ "\u02CF\x03\x02\x02\x02\u02DC\u02D0\x03\x02\x02\x02\u02DC\u02D1\x03\x02" +
7076
+ "\x02\x02\u02DC\u02D2\x03\x02\x02\x02\u02DC\u02D3\x03\x02\x02\x02\u02DC" +
7077
+ "\u02D4\x03\x02\x02\x02\u02DC\u02D5\x03\x02\x02\x02\u02DC\u02D6\x03\x02" +
7078
+ "\x02\x02\u02DC\u02D7\x03\x02\x02\x02\u02DC\u02D8\x03\x02\x02\x02\u02DC" +
7079
+ "\u02D9\x03\x02\x02\x02\u02DC\u02DA\x03\x02\x02\x02\u02DC\u02DB\x03\x02" +
7080
+ "\x02\x02\u02DD\x83\x03\x02\x02\x02\u02DE\u02DF\x05b2\x02\u02DF\x85\x03" +
7081
+ "\x02\x02\x02\u02E0\u02E1\x05\f\x07\x02\u02E1\u02E2\x07\r\x02\x02\u02E2" +
7082
+ "\u02E3\x05\x88E\x02\u02E3\x87\x03\x02\x02\x02\u02E4\u02EB\x05\x8AF\x02" +
7083
+ "\u02E5\u02E7\x07m\x02\x02\u02E6\u02E5\x03\x02\x02\x02\u02E6\u02E7\x03" +
7084
+ "\x02\x02\x02\u02E7\u02E8\x03\x02\x02\x02\u02E8\u02EA\x05\x8AF\x02\u02E9" +
7085
+ "\u02E6\x03\x02\x02\x02\u02EA\u02ED\x03\x02\x02\x02\u02EB\u02E9\x03\x02" +
7086
+ "\x02\x02\u02EB\u02EC\x03\x02\x02\x02\u02EC\u02EF\x03\x02\x02\x02\u02ED" +
7087
+ "\u02EB\x03\x02\x02\x02\u02EE\u02F0\x07m\x02\x02\u02EF\u02EE\x03\x02\x02" +
7088
+ "\x02\u02EF\u02F0\x03\x02\x02\x02\u02F0\x89\x03\x02\x02\x02\u02F1\u02F4" +
7089
+ "\x05\xD8m\x02\u02F2\u02F4\x05Z.\x02\u02F3\u02F1\x03\x02\x02\x02\u02F3" +
7090
+ "\u02F2\x03\x02\x02\x02\u02F4\x8B\x03\x02\x02\x02\u02F5\u02F6\x05\f\x07" +
7091
+ "\x02\u02F6\u02F7\x07\x15\x02\x02\u02F7\u02F8\x05\x8EH\x02\u02F8\x8D\x03" +
7092
+ "\x02\x02\x02\u02F9\u0300\x05\x90I\x02\u02FA\u02FC\x07m\x02\x02\u02FB\u02FA" +
7093
+ "\x03\x02\x02\x02\u02FB\u02FC\x03\x02\x02\x02\u02FC\u02FD\x03\x02\x02\x02" +
7094
+ "\u02FD\u02FF\x05\x90I\x02\u02FE\u02FB\x03\x02\x02\x02\u02FF\u0302\x03" +
7095
+ "\x02\x02\x02\u0300\u02FE\x03\x02\x02\x02\u0300\u0301\x03\x02\x02\x02\u0301" +
7096
+ "\u0304\x03\x02\x02\x02\u0302\u0300\x03\x02\x02\x02\u0303\u0305\x07m\x02" +
7097
+ "\x02\u0304\u0303\x03\x02\x02\x02\u0304\u0305\x03\x02\x02\x02\u0305\x8F" +
7098
+ "\x03\x02\x02\x02\u0306\u0307\x05\f\x07\x02\u0307\u030C\x05> \x02\u0308" +
7099
+ "\u030A\x05*\x16\x02\u0309\u0308\x03\x02\x02\x02\u0309\u030A\x03\x02\x02" +
7100
+ "\x02\u030A\u030B\x03\x02\x02\x02\u030B\u030D\x058\x1D\x02\u030C\u0309" +
7101
+ "\x03\x02\x02\x02\u030C\u030D\x03\x02\x02\x02\u030D\u0314\x03\x02\x02\x02" +
7102
+ "\u030E\u030F\x05\f\x07\x02\u030F\u0310\x05> \x02\u0310\u0311\x05\x0E\b" +
7103
+ "\x02\u0311\u0312\x05.\x18\x02\u0312\u0314\x03\x02\x02\x02\u0313\u0306" +
7104
+ "\x03\x02\x02\x02\u0313\u030E\x03\x02\x02\x02\u0314\x91\x03\x02\x02\x02" +
7105
+ "\u0315\u0316\x05\f\x07\x02\u0316\u0317\x07\x05\x02\x02\u0317\u0318\x05" +
7106
+ "\x88E\x02\u0318\x93\x03\x02\x02\x02\u0319\u031A\x05\f\x07\x02\u031A\u031B" +
7107
+ "\x07\x06\x02\x02\u031B\u031C\x05\x88E\x02\u031C\x95\x03\x02\x02\x02\u031D" +
7108
+ "\u031E\x05\f\x07\x02\u031E\u031F\x07\x18\x02\x02\u031F\u0320\x05\xD4k" +
7109
+ "\x02\u0320\x97\x03\x02\x02\x02\u0321\u0322\x07\x16\x02\x02\u0322\u0323" +
7110
+ "\x05\x9AN\x02\u0323\x99\x03\x02\x02\x02\u0324\u032B\x05\x9CO\x02\u0325" +
7111
+ "\u0327\x07m\x02\x02\u0326\u0325\x03\x02\x02\x02\u0326\u0327\x03\x02\x02" +
7112
+ "\x02\u0327\u0328\x03\x02\x02\x02\u0328\u032A\x05\x9CO\x02\u0329\u0326" +
7113
+ "\x03\x02\x02\x02\u032A\u032D\x03\x02\x02\x02\u032B\u0329\x03\x02\x02\x02" +
7114
+ "\u032B\u032C\x03\x02\x02\x02\u032C\u032F\x03\x02\x02\x02\u032D\u032B\x03" +
7115
+ "\x02\x02\x02\u032E\u0330\x07m\x02\x02\u032F\u032E\x03\x02\x02\x02\u032F" +
7116
+ "\u0330\x03\x02\x02\x02\u0330\x9B\x03\x02\x02\x02\u0331\u0334\x07\x8A\x02" +
7117
+ "\x02\u0332\u0334\x05\xE0q\x02\u0333\u0331\x03\x02\x02\x02\u0333\u0332" +
7118
+ "\x03\x02\x02\x02\u0334\u0336\x03\x02\x02\x02\u0335\u0337\t\x03\x02\x02" +
7119
+ "\u0336\u0335\x03\x02\x02\x02\u0336\u0337\x03\x02\x02\x02\u0337\x9D\x03" +
7120
+ "\x02\x02\x02\u0338\u0339\x07\x13\x02\x02\u0339\u033A\x07\x8A\x02\x02\u033A" +
7121
+ "\x9F\x03\x02\x02\x02\u033B\u033C\x07)\x02\x02\u033C\u0340\x05\xE0q\x02" +
7122
+ "\u033D\u033E\x07)\x02\x02\u033E\u0340\x05\xC8e\x02\u033F\u033B\x03\x02" +
7123
+ "\x02\x02\u033F\u033D\x03\x02\x02\x02\u0340\xA1\x03\x02\x02\x02\u0341\u0342" +
7124
+ "\x07 \x02\x02\u0342\u0344\x07\x8A\x02\x02\u0343\u0345\x05\xA0Q\x02\u0344" +
7125
+ "\u0343\x03\x02\x02\x02\u0344\u0345\x03\x02\x02\x02\u0345\xA3\x03\x02\x02" +
7126
+ "\x02\u0346\u0349\x05\xDCo\x02\u0347\u0348\x07n\x02\x02\u0348\u034A\x07" +
7127
+ "w\x02\x02\u0349\u0347\x03\x02\x02\x02\u0349\u034A\x03\x02\x02\x02\u034A" +
7128
+ "\u034E\x03\x02\x02\x02\u034B\u034E\x07w\x02\x02\u034C\u034E\x07x\x02\x02" +
7129
+ "\u034D\u0346\x03\x02\x02\x02\u034D\u034B\x03\x02\x02\x02\u034D\u034C\x03" +
7130
+ "\x02\x02\x02\u034E\xA5\x03\x02\x02\x02\u034F\u0356\x05\xA4S\x02\u0350" +
7131
+ "\u0352\x07m\x02\x02\u0351\u0350\x03\x02\x02\x02\u0351\u0352\x03\x02\x02" +
7132
+ "\x02\u0352\u0353\x03\x02\x02\x02\u0353\u0355\x05\xA4S\x02\u0354\u0351" +
7133
+ "\x03\x02\x02\x02\u0355\u0358\x03\x02\x02\x02\u0356\u0354\x03\x02\x02\x02" +
7134
+ "\u0356\u0357\x03\x02\x02\x02\u0357\xA7\x03\x02\x02\x02\u0358\u0356\x03" +
7135
+ "\x02\x02\x02\u0359\u035A\x07\x0F\x02\x02\u035A\u035D\x05\xA6T\x02\u035B" +
7136
+ "\u035C\x07)\x02\x02\u035C\u035E\x05\xE0q\x02\u035D\u035B\x03\x02\x02\x02" +
7137
+ "\u035D\u035E\x03\x02\x02\x02\u035E\xA9\x03\x02\x02\x02\u035F\u0360\x07" +
7138
+ "\x1C\x02\x02\u0360\u0361\x05\xB2Z\x02\u0361\xAB\x03\x02\x02\x02\u0362" +
7139
+ "\u0363\x07\"\x02\x02\u0363\u0364\x05\xAEX\x02\u0364\xAD\x03\x02\x02\x02" +
7140
+ "\u0365\u0366\x07]\x02\x02\u0366\xAF\x03\x02\x02\x02\u0367\u0368\x07_\x02" +
7141
+ "\x02\u0368\xB1\x03\x02\x02\x02\u0369\u036A\t\x04\x02\x02\u036A\xB3\x03" +
7142
+ "\x02\x02\x02\u036B\u036C\t\x05\x02\x02\u036C\xB5\x03\x02\x02\x02\u036D" +
7143
+ "\u036E\t\x06\x02\x02\u036E\xB7\x03\x02\x02\x02\u036F\u0370\t\x07\x02\x02" +
7144
+ "\u0370\xB9\x03\x02\x02\x02\u0371\u0379\x07]\x02\x02\u0372\u0379\t\b\x02" +
7145
+ "\x02\u0373\u0379\x05\xBC_\x02\u0374\u0379\x07E\x02\x02\u0375\u0379\t\t" +
7146
+ "\x02\x02\u0376\u0379\x07\\\x02\x02\u0377\u0379\x07D\x02\x02\u0378\u0371" +
7147
+ "\x03\x02\x02\x02\u0378\u0372\x03\x02\x02\x02\u0378\u0373\x03\x02\x02\x02" +
7148
+ "\u0378\u0374\x03\x02\x02\x02\u0378\u0375\x03\x02\x02\x02\u0378\u0376\x03" +
7149
+ "\x02\x02\x02\u0378\u0377\x03\x02\x02\x02\u0379\xBB\x03\x02\x02\x02\u037A" +
7150
+ "\u0382\x07\x81\x02\x02\u037B\u0382\x07\x82\x02\x02\u037C\u0382\x07\x83" +
7151
+ "\x02\x02\u037D\u0382\x07\x86\x02\x02\u037E\u0382\x07\x85\x02\x02\u037F" +
7152
+ "\u0382\x07\x84\x02\x02\u0380\u0382\x07\x87\x02\x02\u0381\u037A\x03\x02" +
7153
+ "\x02\x02\u0381\u037B\x03\x02\x02\x02\u0381\u037C\x03\x02\x02\x02\u0381" +
7154
+ "\u037D\x03\x02\x02\x02\u0381\u037E\x03\x02\x02\x02\u0381\u037F\x03\x02" +
7155
+ "\x02\x02\u0381\u0380\x03\x02\x02\x02\u0382\xBD\x03\x02\x02\x02\u0383\u0384" +
7156
+ "\x07]\x02\x02\u0384\xBF\x03\x02\x02\x02\u0385\u0386\x07]\x02\x02\u0386" +
7157
+ "\xC1\x03\x02\x02\x02\u0387\u0388\t\n\x02\x02\u0388\xC3\x03\x02\x02\x02" +
7158
+ "\u0389\u038A\t\v\x02\x02\u038A\xC5\x03\x02\x02\x02\u038B\u038C\t\f\x02" +
7159
+ "\x02\u038C\xC7\x03\x02\x02\x02\u038D\u038E\be\x01\x02\u038E\u03DC\x05" +
7160
+ "\xDCo\x02\u038F\u03DC\x05\xBA^\x02\u0390\u0391\x07v\x02\x02\u0391\u03DC" +
7161
+ "\x05\xC8e\x17\u0392\u0393\x07C\x02\x02\u0393\u03DC\x05\xC8e\x0E\u0394" +
7162
+ "\u0395\x07+\x02\x02\u0395\u0396\x07c\x02\x02\u0396\u0397\x05\xC8e\x02" +
7163
+ "\u0397\u0398\x07%\x02\x02\u0398\u0399\x05\xB6\\\x02\u0399\u039A\x07d\x02" +
7164
+ "\x02\u039A\u03DC\x03\x02\x02\x02\u039B\u039C\x07-\x02\x02\u039C\u039D" +
7165
+ "\x07c\x02\x02\u039D\u039E\x071\x02\x02\u039E\u039F\x05\xC8e\x02\u039F" +
7166
+ "\u03A0\x07d\x02\x02\u03A0\u03DC\x03\x02\x02\x02\u03A1\u03A2\x05\xDCo\x02" +
7167
+ "\u03A2\u03A3\x07n\x02\x02\u03A3\u03A5\x03\x02\x02\x02\u03A4\u03A1\x03" +
7168
+ "\x02\x02\x02\u03A4\u03A5\x03\x02\x02\x02\u03A5\u03A6\x03\x02\x02\x02\u03A6" +
7169
+ "\u03A7\x05\xB4[\x02\u03A7\u03AA\x07c\x02\x02\u03A8\u03AB\x05\xC8e\x02" +
7170
+ "\u03A9\u03AB\x07w\x02\x02\u03AA\u03A8\x03\x02\x02\x02\u03AA\u03A9\x03" +
7171
+ "\x02\x02\x02\u03AA\u03AB\x03\x02\x02\x02\u03AB\u03AC\x03\x02\x02\x02\u03AC" +
7172
+ "\u03AD\x07d\x02\x02\u03AD\u03DC\x03\x02\x02\x02\u03AE\u03AF\x07c\x02\x02" +
7173
+ "\u03AF\u03B0\x05\xCAf\x02\u03B0\u03B1\x07d\x02\x02\u03B1\u03DC\x03\x02" +
7174
+ "\x02\x02\u03B2\u03B3\x05\xDCo\x02\u03B3\u03B4\x07n\x02\x02\u03B4\u03B6" +
7175
+ "\x03\x02\x02\x02\u03B5\u03B2\x03\x02\x02\x02\u03B5\u03B6\x03\x02\x02\x02" +
7176
+ "\u03B6\u03B7\x03\x02\x02\x02\u03B7\u03B8\x05\xC2b\x02\u03B8\u03BA\x07" +
7177
+ "c\x02\x02\u03B9\u03BB\x05\xD0i\x02\u03BA\u03B9\x03\x02\x02\x02\u03BA\u03BB" +
7178
+ "\x03\x02\x02\x02\u03BB\u03BC\x03\x02\x02\x02\u03BC\u03BD\x07d\x02\x02" +
7179
+ "\u03BD\u03DC\x03\x02\x02\x02\u03BE\u03C3\x05\xC2b\x02\u03BF\u03C1\x07" +
7180
+ "k\x02\x02\u03C0\u03C2\x05\xB6\\\x02\u03C1\u03C0\x03\x02\x02\x02\u03C1" +
7181
+ "\u03C2\x03\x02\x02\x02\u03C2\u03C4\x03\x02\x02\x02\u03C3\u03BF\x03\x02" +
7182
+ "\x02\x02\u03C3\u03C4\x03\x02\x02\x02\u03C4\u03C7\x03\x02\x02\x02\u03C5" +
7183
+ "\u03C7\x05\xC4c\x02\u03C6\u03BE\x03\x02\x02\x02\u03C6\u03C5\x03\x02\x02" +
7184
+ "\x02\u03C7\u03C8\x03\x02\x02\x02\u03C8\u03CA\x07c\x02\x02\u03C9\u03CB" +
7185
+ "\x05\xD0i\x02\u03CA\u03C9\x03\x02\x02\x02\u03CA\u03CB\x03\x02\x02\x02" +
7186
+ "\u03CB\u03CC\x03\x02\x02\x02\u03CC\u03CD\x07d\x02\x02\u03CD\u03DC\x03" +
7187
+ "\x02\x02\x02\u03CE\u03DC\x05\xCCg\x02\u03CF\u03D0\x05\xC6d\x02\u03D0\u03D1" +
7188
+ "\x07c\x02\x02\u03D1\u03D6\x05\xC8e\x02\u03D2\u03D3\x07m\x02\x02\u03D3" +
7189
+ "\u03D5\x05\xE0q\x02\u03D4\u03D2\x03\x02\x02\x02\u03D5\u03D8\x03\x02\x02" +
7190
+ "\x02\u03D6\u03D4\x03\x02\x02\x02\u03D6\u03D7\x03\x02\x02\x02\u03D7\u03D9" +
7191
+ "\x03\x02\x02\x02\u03D8\u03D6\x03\x02\x02\x02\u03D9\u03DA\x07d\x02\x02" +
7192
+ "\u03DA\u03DC\x03\x02\x02\x02\u03DB\u038D\x03\x02\x02\x02\u03DB\u038F\x03" +
7193
+ "\x02\x02\x02\u03DB\u0390\x03\x02\x02\x02\u03DB\u0392\x03\x02\x02\x02\u03DB" +
7194
+ "\u0394\x03\x02\x02\x02\u03DB\u039B\x03\x02\x02\x02\u03DB\u03A4\x03\x02" +
7195
+ "\x02\x02\u03DB\u03AE\x03\x02\x02\x02\u03DB\u03B5\x03\x02\x02\x02\u03DB" +
7196
+ "\u03C6\x03\x02\x02\x02\u03DB\u03CE\x03\x02\x02\x02\u03DB\u03CF\x03\x02" +
7197
+ "\x02\x02\u03DC\u0413\x03\x02\x02\x02\u03DD\u03DE\f\x16\x02\x02\u03DE\u03DF" +
7198
+ "\t\r\x02\x02\u03DF\u0412\x05\xC8e\x17\u03E0\u03E1\f\x15\x02\x02\u03E1" +
7199
+ "\u03E2\t\x0E\x02\x02\u03E2\u0412\x05\xC8e\x16\u03E3\u03E4\f\x14\x02\x02" +
7200
+ "\u03E4\u03E5\x07S\x02\x02\u03E5\u0412\x05\xC8e\x15\u03E6\u03E7\f\x10\x02" +
7201
+ "\x02\u03E7\u03E8\x05\xB8]\x02\u03E8\u03E9\x05\xC8e\x11\u03E9\u0412\x03" +
7202
+ "\x02\x02\x02\u03EA\u03EB\f\r\x02\x02\u03EB\u03EC\x07$\x02\x02\u03EC\u0412" +
7203
+ "\x05\xC8e\x0E\u03ED\u03EE\f\f\x02\x02\u03EE\u03EF\x07H\x02\x02\u03EF\u0412" +
7204
+ "\x05\xC8e\r\u03F0\u03F1\f\v\x02\x02\u03F1\u03F2\x07\x7F\x02\x02\u03F2" +
7205
+ "\u0412\x05\xC8e\f\u03F3\u03F4\f\x1D\x02\x02\u03F4\u03F5\x07g\x02\x02\u03F5" +
7206
+ "\u03F6\x05t;\x02\u03F6\u03F7\x07h\x02\x02\u03F7\u0412\x03\x02\x02\x02" +
7207
+ "\u03F8\u03F9\f\x1B\x02\x02\u03F9\u0412\x05\xC4c\x02\u03FA\u03FB\f\x1A" +
7208
+ "\x02\x02\u03FB\u03FC\x07n\x02\x02\u03FC\u0412\x05\xC4c\x02\u03FD\u03FE" +
7209
+ "\f\x19\x02\x02\u03FE\u03FF\x07i\x02\x02\u03FF\u0412\x05\xB6\\\x02\u0400" +
7210
+ "\u0401\f\x18\x02\x02\u0401\u0402\x07j\x02\x02\u0402\u0412\x05\xB6\\\x02" +
7211
+ "\u0403\u0404\f\x13\x02\x02\u0404\u0405\x076\x02\x02\u0405\u0406\x05\xC8" +
7212
+ "e\x02\u0406\u0407\x05\xC4c\x02\u0407\u0412\x03\x02\x02\x02\u0408\u0409" +
7213
+ "\f\x12\x02\x02\u0409\u040A\x07`\x02\x02\u040A\u0412\x05\xCAf\x02\u040B" +
7214
+ "\u040C\f\x11\x02\x02\u040C\u040D\x07z\x02\x02\u040D\u0412\x05\xCAf\x02" +
7215
+ "\u040E\u040F\f\x0F\x02\x02\u040F\u0410\x07\x80\x02\x02\u0410\u0412\x05" +
7216
+ "\xCAf\x02\u0411\u03DD\x03\x02\x02\x02\u0411\u03E0\x03\x02\x02\x02\u0411" +
7217
+ "\u03E3\x03\x02\x02\x02\u0411\u03E6\x03\x02\x02\x02\u0411\u03EA\x03\x02" +
7218
+ "\x02\x02\u0411\u03ED\x03\x02\x02\x02\u0411\u03F0\x03\x02\x02\x02\u0411" +
7219
+ "\u03F3\x03\x02\x02\x02\u0411\u03F8\x03\x02\x02\x02\u0411\u03FA\x03\x02" +
7220
+ "\x02\x02\u0411\u03FD\x03\x02\x02\x02\u0411\u0400\x03\x02\x02\x02\u0411" +
7221
+ "\u0403\x03\x02\x02\x02\u0411\u0408\x03\x02\x02\x02\u0411\u040B\x03\x02" +
7222
+ "\x02\x02\u0411\u040E\x03\x02\x02\x02\u0412\u0415\x03\x02\x02\x02\u0413" +
7223
+ "\u0411\x03\x02\x02\x02\u0413\u0414\x03\x02\x02\x02\u0414\xC9\x03\x02\x02" +
7224
+ "\x02\u0415\u0413\x03\x02\x02\x02\u0416\u0418\x05\xB8]\x02\u0417\u0416" +
7225
+ "\x03\x02\x02\x02\u0417\u0418\x03\x02\x02\x02\u0418\u0419\x03\x02\x02\x02" +
7226
+ "\u0419\u041A\x05\xC8e\x02\u041A\xCB\x03\x02\x02\x02\u041B\u041D\x05\xCE" +
7227
+ "h\x02\u041C\u041B\x03\x02\x02\x02\u041D\u041E\x03\x02\x02\x02\u041E\u041C" +
7228
+ "\x03\x02\x02\x02\u041E\u041F\x03\x02\x02\x02\u041F\u0422\x03\x02\x02\x02" +
7229
+ "\u0420\u0421\x072\x02\x02\u0421\u0423\x05\xC8e\x02\u0422\u0420\x03\x02" +
7230
+ "\x02\x02\u0422\u0423\x03\x02\x02\x02\u0423\xCD\x03\x02\x02\x02\u0424\u0426" +
7231
+ "\x07I\x02\x02\u0425\u0427\x05\xC8e\x02\u0426\u0425\x03\x02\x02\x02\u0426" +
7232
+ "\u0427\x03\x02\x02\x02\u0427\u0428\x03\x02\x02\x02\u0428\u0429\x07W\x02" +
7233
+ "\x02\u0429\u042A\x05\xCAf\x02\u042A\xCF\x03\x02\x02\x02\u042B\u0430\x05" +
7234
+ "\xC8e\x02\u042C\u042D\x07m\x02\x02\u042D\u042F\x05\xC8e\x02\u042E\u042C" +
7235
+ "\x03\x02\x02\x02\u042F\u0432\x03\x02\x02\x02\u0430\u042E\x03\x02\x02\x02" +
7236
+ "\u0430\u0431\x03\x02\x02\x02\u0431\u0434\x03\x02\x02\x02\u0432\u0430\x03" +
7237
+ "\x02\x02\x02\u0433\u0435\x07m\x02\x02\u0434\u0433\x03\x02\x02\x02\u0434" +
7238
+ "\u0435\x03\x02\x02\x02\u0435\xD1\x03\x02\x02\x02\u0436\u043D\x05\xE0q" +
7239
+ "\x02\u0437\u0439\x07m\x02\x02\u0438\u0437\x03\x02\x02\x02\u0438\u0439" +
7240
+ "\x03\x02\x02\x02\u0439\u043A\x03\x02\x02\x02\u043A\u043C\x05\xE0q\x02" +
7241
+ "\u043B\u0438\x03\x02\x02\x02\u043C\u043F\x03\x02\x02\x02\u043D\u043B\x03" +
7242
+ "\x02\x02\x02\u043D\u043E\x03\x02\x02\x02\u043E\xD3\x03\x02\x02\x02\u043F" +
7243
+ "\u043D\x03\x02\x02\x02\u0440\u0447\x05\xDAn\x02\u0441\u0443\x07m\x02\x02" +
7244
+ "\u0442\u0441\x03\x02\x02\x02\u0442\u0443\x03\x02\x02\x02\u0443\u0444\x03" +
7245
+ "\x02\x02\x02\u0444\u0446\x05\xDAn\x02\u0445\u0442\x03\x02\x02\x02\u0446" +
7246
+ "\u0449\x03\x02\x02\x02\u0447\u0445\x03\x02\x02\x02\u0447\u0448\x03\x02" +
7247
+ "\x02\x02\u0448\u044B\x03\x02\x02\x02\u0449\u0447\x03\x02\x02\x02\u044A" +
7248
+ "\u044C\x07m\x02\x02\u044B\u044A\x03\x02\x02\x02\u044B\u044C\x03\x02\x02" +
7249
+ "\x02\u044C\xD5\x03\x02\x02\x02\u044D\u044E\x05\xDCo\x02\u044E\u044F\x07" +
7250
+ "n\x02\x02\u044F\u0451\x03\x02\x02\x02\u0450\u044D\x03\x02\x02\x02\u0450" +
7251
+ "\u0451\x03\x02\x02\x02\u0451\u0452\x03\x02\x02\x02\u0452\u0453\t\x0F\x02" +
7252
+ "\x02\u0453\xD7\x03\x02\x02\x02\u0454\u0455\x05\f\x07\x02\u0455\u0456\x05" +
7253
+ "\xDCo\x02\u0456\xD9\x03\x02\x02\x02\u0457\u045B\x05\xD8m\x02\u0458\u045B" +
7254
+ "\x05\xD6l\x02\u0459\u045B\x05Z.\x02\u045A\u0457\x03\x02\x02\x02\u045A" +
7255
+ "\u0458\x03\x02\x02\x02\u045A\u0459\x03\x02\x02\x02\u045B\xDB\x03\x02\x02" +
7256
+ "\x02\u045C\u0461\x05\xE0q\x02\u045D\u045E\x07n\x02\x02\u045E\u0460\x05" +
7257
+ "\xE0q\x02\u045F\u045D\x03\x02\x02\x02\u0460\u0463\x03\x02\x02\x02\u0461" +
7258
+ "\u045F\x03\x02\x02";
7259
+ MalloyParser._serializedATNSegment2 = "\x02\u0461\u0462\x03\x02\x02\x02\u0462\xDD\x03\x02\x02\x02\u0463\u0461" +
7260
+ "\x03\x02\x02\x02\u0464\u0465\x05\xC2b\x02\u0465\xDF\x03\x02\x02\x02\u0466" +
7261
+ "\u0467\x05\xC2b\x02\u0467\xE1\x03\x02\x02\x02\u0468\u0469\x05\xC8e\x02" +
7262
+ "\u0469\u046A\x07\x02\x02\x03\u046A\xE3\x03\x02\x02\x02\u046B\u046C\x05" +
7263
+ "\xE6t\x02\u046C\xE5\x03\x02\x02\x02\u046D\u0476\x07\x03\x02\x02\u046E" +
7264
+ "\u0476\x07\x8A\x02\x02\u046F\u0476\x07\x8B\x02\x02\u0470\u0476\x05\xE8" +
7265
+ "u\x02\u0471\u0476\x05\xECw\x02\u0472\u0476\x07T\x02\x02\u0473\u0476\x07" +
7266
+ "5\x02\x02\u0474\u0476\x07E\x02\x02\u0475\u046D\x03\x02\x02\x02\u0475\u046E" +
7267
+ "\x03\x02\x02\x02\u0475\u046F\x03\x02\x02\x02\u0475\u0470\x03\x02\x02\x02" +
7268
+ "\u0475\u0471\x03\x02\x02\x02\u0475\u0472\x03\x02\x02\x02\u0475\u0473\x03" +
7269
+ "\x02\x02\x02\u0475\u0474\x03\x02\x02\x02\u0476\xE7\x03\x02\x02\x02\u0477" +
7270
+ "\u0478\x07g\x02\x02\u0478\u047D\x05\xEAv\x02\u0479\u047A\x07m\x02\x02" +
7271
+ "\u047A\u047C\x05\xEAv\x02\u047B\u0479\x03\x02\x02\x02\u047C\u047F\x03" +
7272
+ "\x02\x02\x02\u047D\u047B\x03\x02\x02\x02\u047D\u047E\x03\x02\x02\x02\u047E" +
7273
+ "\u0480\x03\x02\x02\x02\u047F\u047D\x03\x02\x02\x02\u0480\u0481\x07h\x02" +
7274
+ "\x02\u0481\u0485\x03\x02\x02\x02\u0482\u0483\x07g\x02\x02\u0483\u0485" +
7275
+ "\x07h\x02\x02\u0484\u0477\x03\x02\x02\x02\u0484\u0482\x03\x02\x02\x02" +
7276
+ "\u0485\xE9\x03\x02\x02\x02\u0486\u0487\x07\x03\x02\x02\u0487\u0488\x07" +
7277
+ "l\x02\x02\u0488\u0489\x05\xE6t\x02\u0489\xEB\x03\x02\x02\x02\u048A\u048B" +
7278
+ "\x07e\x02\x02\u048B\u0490\x05\xE6t\x02\u048C\u048D\x07m\x02\x02\u048D" +
7279
+ "\u048F\x05\xE6t\x02\u048E\u048C\x03\x02\x02\x02\u048F\u0492\x03\x02\x02" +
7280
+ "\x02\u0490\u048E\x03\x02\x02\x02\u0490\u0491\x03\x02\x02\x02\u0491\u0493" +
7281
+ "\x03\x02\x02\x02\u0492\u0490\x03\x02\x02\x02\u0493\u0494\x07f\x02\x02" +
7282
+ "\u0494\u0498\x03\x02\x02\x02\u0495\u0496\x07e\x02\x02\u0496\u0498\x07" +
7283
+ "f\x02\x02\u0497\u048A\x03\x02\x02\x02\u0497\u0495\x03\x02\x02\x02\u0498" +
7284
+ "\xED\x03\x02\x02\x02\u0499\u049A\x05\xC2b\x02\u049A\xEF\x03\x02\x02\x02" +
7285
+ "\u049B\u049C\x05\xC2b\x02\u049C\xF1\x03\x02\x02\x02\u049D\u049E\x07\x03" +
7286
+ "\x02\x02\u049E\xF3\x03\x02\x02\x02{\xF6\xF8\u0104\u010F\u0117\u0125\u0130" +
7262
7287
  "\u0138\u013E\u014F\u0154\u0159\u015F\u0164\u0168\u0178\u017B\u0180\u0183" +
7263
7288
  "\u0189\u018F\u0192\u0194\u01A5\u01AD\u01AF\u01B3\u01C0\u01C5\u01C9\u01D2" +
7264
- "\u01D5\u01E3\u01EC\u01EE\u01F3\u0208\u020B\u0217\u021C\u0220\u0228\u022D" +
7265
- "\u0231\u024B\u0253\u0258\u025A\u0261\u0266\u026A\u0274\u0279\u0281\u0286" +
7266
- "\u028A\u028C\u0292\u0297\u029E\u02A2\u02AC\u02B1\u02B5\u02BC\u02D5\u02DF" +
7267
- "\u02E4\u02E8\u02EC\u02F4\u02F9\u02FD\u0302\u0305\u030C\u031F\u0324\u0328" +
7268
- "\u032C\u032F\u0338\u033D\u0342\u0346\u034A\u034F\u0356\u0371\u037A\u039D" +
7269
- "\u03A3\u03AE\u03B3\u03BA\u03BC\u03BF\u03C3\u03CF\u03D4\u040A\u040C\u0410" +
7270
- "\u0417\u041B\u041F\u0429\u042D\u0431\u0436\u043B\u0440\u0444\u0449\u0453" +
7271
- "\u045A\u046E\u0476\u047D\u0489\u0490";
7289
+ "\u01D5\u01EA\u01F3\u01F5\u01FA\u020F\u0212\u021E\u0223\u0227\u022F\u0234" +
7290
+ "\u0238\u0252\u025A\u025F\u0261\u0268\u026D\u0271\u027B\u0280\u0288\u028D" +
7291
+ "\u0291\u0293\u0299\u029E\u02A5\u02A9\u02B3\u02B8\u02BC\u02C3\u02DC\u02E6" +
7292
+ "\u02EB\u02EF\u02F3\u02FB\u0300\u0304\u0309\u030C\u0313\u0326\u032B\u032F" +
7293
+ "\u0333\u0336\u033F\u0344\u0349\u034D\u0351\u0356\u035D\u0378\u0381\u03A4" +
7294
+ "\u03AA\u03B5\u03BA\u03C1\u03C3\u03C6\u03CA\u03D6\u03DB\u0411\u0413\u0417" +
7295
+ "\u041E\u0422\u0426\u0430\u0434\u0438\u043D\u0442\u0447\u044B\u0450\u045A" +
7296
+ "\u0461\u0475\u047D\u0484\u0490\u0497";
7272
7297
  MalloyParser._serializedATN = Utils.join([
7273
7298
  MalloyParser._serializedATNSegment0,
7274
7299
  MalloyParser._serializedATNSegment1,
@@ -7677,7 +7702,7 @@ class RunStatementRefContext extends RunStatementContext {
7677
7702
  }
7678
7703
  exports.RunStatementRefContext = RunStatementRefContext;
7679
7704
  class DefineSQLStatementContext extends ParserRuleContext_1.ParserRuleContext {
7680
- SQL() { return this.getToken(MalloyParser.SQL, 0); }
7705
+ SQLC() { return this.getToken(MalloyParser.SQLC, 0); }
7681
7706
  nameSQLBlock() {
7682
7707
  return this.getRuleContext(0, NameSQLBlockContext);
7683
7708
  }
@@ -8890,6 +8915,44 @@ class SQLSourceNameContext extends ExploreSourceContext {
8890
8915
  }
8891
8916
  }
8892
8917
  exports.SQLSourceNameContext = SQLSourceNameContext;
8918
+ class SQLSourceContext extends ExploreSourceContext {
8919
+ connectionId() {
8920
+ return this.getRuleContext(0, ConnectionIdContext);
8921
+ }
8922
+ DOT() { return this.getToken(MalloyParser.DOT, 0); }
8923
+ SQL() { return this.getToken(MalloyParser.SQL, 0); }
8924
+ OPAREN() { return this.getToken(MalloyParser.OPAREN, 0); }
8925
+ sqlString() {
8926
+ return this.getRuleContext(0, SqlStringContext);
8927
+ }
8928
+ CPAREN() { return this.getToken(MalloyParser.CPAREN, 0); }
8929
+ constructor(ctx) {
8930
+ super(ctx.parent, ctx.invokingState);
8931
+ this.copyFrom(ctx);
8932
+ }
8933
+ // @Override
8934
+ enterRule(listener) {
8935
+ if (listener.enterSQLSource) {
8936
+ listener.enterSQLSource(this);
8937
+ }
8938
+ }
8939
+ // @Override
8940
+ exitRule(listener) {
8941
+ if (listener.exitSQLSource) {
8942
+ listener.exitSQLSource(this);
8943
+ }
8944
+ }
8945
+ // @Override
8946
+ accept(visitor) {
8947
+ if (visitor.visitSQLSource) {
8948
+ return visitor.visitSQLSource(this);
8949
+ }
8950
+ else {
8951
+ return visitor.visitChildren(this);
8952
+ }
8953
+ }
8954
+ }
8955
+ exports.SQLSourceContext = SQLSourceContext;
8893
8956
  class SourceNameDefContext extends ParserRuleContext_1.ParserRuleContext {
8894
8957
  id() {
8895
8958
  return this.getRuleContext(0, IdContext);