simple-graph-query 2.5.2 → 2.7.0
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.
- package/dist/ForgeExprEvaluator.d.ts +1 -0
- package/dist/ForgeExprStaticAnalyzer.d.ts +71 -0
- package/dist/forge-antlr/ForgeLexer.d.ts +7 -6
- package/dist/forge-antlr/ForgeParser.d.ts +9 -7
- package/dist/forge-antlr/utils.d.ts +28 -0
- package/dist/index.d.ts +61 -1
- package/dist/simple-graph-query.bundle.js +2003 -797
- package/dist/types.d.ts +4 -0
- package/package.json +1 -1
|
@@ -48439,6 +48439,7 @@ Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
|
48439
48439
|
exports.NameNotFoundError = exports.ForgeExprEvaluator = exports.SUPPORTED_BUILTINS = void 0;
|
|
48440
48440
|
exports.areTupleArraysEqual = areTupleArraysEqual;
|
|
48441
48441
|
const AbstractParseTreeVisitor_1 = __webpack_require__(/*! antlr4ts/tree/AbstractParseTreeVisitor */ "./node_modules/antlr4ts/tree/AbstractParseTreeVisitor.js");
|
|
48442
|
+
const utils_1 = __webpack_require__(/*! ./forge-antlr/utils */ "./src/forge-antlr/utils.ts");
|
|
48442
48443
|
const lodash_1 = __webpack_require__(/*! lodash */ "./node_modules/lodash/lodash.js");
|
|
48443
48444
|
const ForgeExprFreeVariableFinder_1 = __webpack_require__(/*! ./ForgeExprFreeVariableFinder */ "./src/ForgeExprFreeVariableFinder.ts");
|
|
48444
48445
|
const NumericConstraintOptimizer_1 = __webpack_require__(/*! ./NumericConstraintOptimizer */ "./src/NumericConstraintOptimizer.ts");
|
|
@@ -48590,7 +48591,8 @@ function bitwidthWraparound(value, bitwidth) {
|
|
|
48590
48591
|
// list as we support more
|
|
48591
48592
|
const SUPPORTED_BINARY_BUILTINS = ["add", "subtract", "multiply", "divide", "remainder"];
|
|
48592
48593
|
const SUPPORTED_UNARY_BUILTINS = ["abs", "sign"];
|
|
48593
|
-
|
|
48594
|
+
const SUPPORTED_SET_BUILTINS = ["min", "max"];
|
|
48595
|
+
exports.SUPPORTED_BUILTINS = SUPPORTED_BINARY_BUILTINS.concat(SUPPORTED_UNARY_BUILTINS, SUPPORTED_SET_BUILTINS);
|
|
48594
48596
|
/**
|
|
48595
48597
|
* A recursive evaluator for Forge expressions.
|
|
48596
48598
|
* This visitor walks the parse tree and prints the type of operation encountered.
|
|
@@ -49748,6 +49750,9 @@ class ForgeExprEvaluator extends AbstractParseTreeVisitor_1.AbstractParseTreeVis
|
|
|
49748
49750
|
else if (SUPPORTED_UNARY_BUILTINS.includes(beforeBracesExpr)) {
|
|
49749
49751
|
return this.evaluateUnaryOperation(beforeBracesExpr, insideBracesExprs);
|
|
49750
49752
|
}
|
|
49753
|
+
else if (SUPPORTED_SET_BUILTINS.includes(beforeBracesExpr)) {
|
|
49754
|
+
return this.evaluateSetOperation(beforeBracesExpr, insideBracesExprs);
|
|
49755
|
+
}
|
|
49751
49756
|
}
|
|
49752
49757
|
// Box join: <expr-a>[<expr-b>] == <expr-b> . <expr-a>
|
|
49753
49758
|
return this.dotJoin(insideBracesExprs, beforeBracesExpr);
|
|
@@ -49922,13 +49927,13 @@ class ForgeExprEvaluator extends AbstractParseTreeVisitor_1.AbstractParseTreeVis
|
|
|
49922
49927
|
if (ctx.COMMA_TOK()) {
|
|
49923
49928
|
// there is a comma, so we need to get the value from the head of the list
|
|
49924
49929
|
// and then move onto the tail after that
|
|
49925
|
-
const headValue = ctx.name()
|
|
49930
|
+
const headValue = (0, utils_1.getIdentifierName)(ctx.name());
|
|
49926
49931
|
const tailValues = this.getNameListValues(ctx.nameList());
|
|
49927
49932
|
return [headValue, ...tailValues];
|
|
49928
49933
|
}
|
|
49929
49934
|
else {
|
|
49930
49935
|
// there is no comma so there is just a single name that we need to deal with here
|
|
49931
|
-
return [ctx.name()
|
|
49936
|
+
return [(0, utils_1.getIdentifierName)(ctx.name())];
|
|
49932
49937
|
}
|
|
49933
49938
|
}
|
|
49934
49939
|
// helper function to get the values each var is bound to in a single quantDecl
|
|
@@ -50177,7 +50182,7 @@ class ForgeExprEvaluator extends AbstractParseTreeVisitor_1.AbstractParseTreeVis
|
|
|
50177
50182
|
visitName(ctx) {
|
|
50178
50183
|
// console.log('visiting name:', ctx.text);
|
|
50179
50184
|
// if `true` or `false`, return the corresponding value
|
|
50180
|
-
const identifier =
|
|
50185
|
+
const identifier = (0, utils_1.getIdentifierName)(ctx);
|
|
50181
50186
|
if (identifier === "true") {
|
|
50182
50187
|
return true;
|
|
50183
50188
|
}
|
|
@@ -50391,6 +50396,47 @@ class ForgeExprEvaluator extends AbstractParseTreeVisitor_1.AbstractParseTreeVis
|
|
|
50391
50396
|
throw new Error(`Unsupported operation: ${operation}`);
|
|
50392
50397
|
}
|
|
50393
50398
|
}
|
|
50399
|
+
evaluateSetOperation(operation, args) {
|
|
50400
|
+
// min and max operate on a set of integers and return the min/max value
|
|
50401
|
+
// The argument should be a set (tuple array of arity 1) of numbers
|
|
50402
|
+
let numbers = [];
|
|
50403
|
+
if (isSingleValue(args)) {
|
|
50404
|
+
if (isNumber(args)) {
|
|
50405
|
+
numbers = [args];
|
|
50406
|
+
}
|
|
50407
|
+
else {
|
|
50408
|
+
throw new Error(`Expected a set of numbers for ${operation}`);
|
|
50409
|
+
}
|
|
50410
|
+
}
|
|
50411
|
+
else if (isTupleArray(args)) {
|
|
50412
|
+
// Extract numbers from the tuple array
|
|
50413
|
+
for (const tuple of args) {
|
|
50414
|
+
if (tuple.length !== 1) {
|
|
50415
|
+
throw new Error(`${operation} expects a set of arity 1 (single column)`);
|
|
50416
|
+
}
|
|
50417
|
+
const value = tuple[0];
|
|
50418
|
+
if (!isNumber(value)) {
|
|
50419
|
+
throw new Error(`${operation} expects all elements to be numbers, got: ${typeof value}`);
|
|
50420
|
+
}
|
|
50421
|
+
numbers.push(value);
|
|
50422
|
+
}
|
|
50423
|
+
}
|
|
50424
|
+
else {
|
|
50425
|
+
throw new Error(`Expected a set of numbers for ${operation}`);
|
|
50426
|
+
}
|
|
50427
|
+
if (numbers.length === 0) {
|
|
50428
|
+
throw new Error(`${operation} requires a non-empty set`);
|
|
50429
|
+
}
|
|
50430
|
+
if (operation === "min") {
|
|
50431
|
+
return Math.min(...numbers);
|
|
50432
|
+
}
|
|
50433
|
+
else if (operation === "max") {
|
|
50434
|
+
return Math.max(...numbers);
|
|
50435
|
+
}
|
|
50436
|
+
else {
|
|
50437
|
+
throw new Error(`Unsupported set operation: ${operation}`);
|
|
50438
|
+
}
|
|
50439
|
+
}
|
|
50394
50440
|
}
|
|
50395
50441
|
exports.ForgeExprEvaluator = ForgeExprEvaluator;
|
|
50396
50442
|
// Custom error for undefined names
|
|
@@ -50416,6 +50462,7 @@ exports.NameNotFoundError = NameNotFoundError;
|
|
|
50416
50462
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
50417
50463
|
exports.ForgeExprFreeVariableFinder = void 0;
|
|
50418
50464
|
const AbstractParseTreeVisitor_1 = __webpack_require__(/*! antlr4ts/tree/AbstractParseTreeVisitor */ "./node_modules/antlr4ts/tree/AbstractParseTreeVisitor.js");
|
|
50465
|
+
const utils_1 = __webpack_require__(/*! ./forge-antlr/utils */ "./src/forge-antlr/utils.ts");
|
|
50419
50466
|
const ForgeExprEvaluator_1 = __webpack_require__(/*! ./ForgeExprEvaluator */ "./src/ForgeExprEvaluator.ts");
|
|
50420
50467
|
// define helper function on the FreeVariables type
|
|
50421
50468
|
function getAllFreeVariables(freeVariables) {
|
|
@@ -50487,14 +50534,14 @@ class ForgeExprFreeVariableFinder extends AbstractParseTreeVisitor_1.AbstractPar
|
|
|
50487
50534
|
if (ctx.COMMA_TOK()) {
|
|
50488
50535
|
// there is a comma, so we need to get the value from the head of the list
|
|
50489
50536
|
// and then move onto the tail after that
|
|
50490
|
-
const headValue = ctx.name()
|
|
50537
|
+
const headValue = (0, utils_1.getIdentifierName)(ctx.name());
|
|
50491
50538
|
const tailValues = this.getNameListValues(ctx.nameList());
|
|
50492
50539
|
tailValues.add(headValue);
|
|
50493
50540
|
return tailValues;
|
|
50494
50541
|
}
|
|
50495
50542
|
else {
|
|
50496
50543
|
// there is no comma so there is just a single name that we need to deal with here
|
|
50497
|
-
return new Set([ctx.name()
|
|
50544
|
+
return new Set([(0, utils_1.getIdentifierName)(ctx.name())]);
|
|
50498
50545
|
}
|
|
50499
50546
|
}
|
|
50500
50547
|
// helper function to get the names of each var in a quantDecl
|
|
@@ -50717,7 +50764,7 @@ class ForgeExprFreeVariableFinder extends AbstractParseTreeVisitor_1.AbstractPar
|
|
|
50717
50764
|
return this.addCtxToFreeVariableMap(ctx, result);
|
|
50718
50765
|
}
|
|
50719
50766
|
visitName(ctx) {
|
|
50720
|
-
const identifier =
|
|
50767
|
+
const identifier = (0, utils_1.getIdentifierName)(ctx);
|
|
50721
50768
|
if (identifier === "true" || identifier === "false") {
|
|
50722
50769
|
// these aren't free variables
|
|
50723
50770
|
return this.defaultResult();
|
|
@@ -50754,6 +50801,963 @@ class ForgeExprFreeVariableFinder extends AbstractParseTreeVisitor_1.AbstractPar
|
|
|
50754
50801
|
exports.ForgeExprFreeVariableFinder = ForgeExprFreeVariableFinder;
|
|
50755
50802
|
|
|
50756
50803
|
|
|
50804
|
+
/***/ }),
|
|
50805
|
+
|
|
50806
|
+
/***/ "./src/ForgeExprStaticAnalyzer.ts":
|
|
50807
|
+
/*!****************************************!*\
|
|
50808
|
+
!*** ./src/ForgeExprStaticAnalyzer.ts ***!
|
|
50809
|
+
\****************************************/
|
|
50810
|
+
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
|
50811
|
+
|
|
50812
|
+
"use strict";
|
|
50813
|
+
|
|
50814
|
+
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
50815
|
+
exports.ForgeExprStaticAnalyzer = void 0;
|
|
50816
|
+
const AbstractParseTreeVisitor_1 = __webpack_require__(/*! antlr4ts/tree/AbstractParseTreeVisitor */ "./node_modules/antlr4ts/tree/AbstractParseTreeVisitor.js");
|
|
50817
|
+
const ForgeParser_1 = __webpack_require__(/*! ./forge-antlr/ForgeParser */ "./src/forge-antlr/ForgeParser.ts");
|
|
50818
|
+
const utils_1 = __webpack_require__(/*! ./forge-antlr/utils */ "./src/forge-antlr/utils.ts");
|
|
50819
|
+
const UNKNOWN = { kind: "unknown" };
|
|
50820
|
+
// Helper that wraps the schema with O(1) lookups and lattice queries.
|
|
50821
|
+
class SchemaInfo {
|
|
50822
|
+
constructor(schema) {
|
|
50823
|
+
this.typesById = new Map(schema.getTypes().map((t) => [t.id, t]));
|
|
50824
|
+
this.relationsByName = new Map(schema.getRelations().map((r) => [r.name, r]));
|
|
50825
|
+
}
|
|
50826
|
+
getType(id) { return this.typesById.get(id); }
|
|
50827
|
+
getRelation(name) { return this.relationsByName.get(name); }
|
|
50828
|
+
// A ⊆ B when B is in A's lineage. `IType.types` is the lineage in ascending
|
|
50829
|
+
// order, conventionally starting with the type itself.
|
|
50830
|
+
isSubtypeOf(a, b) {
|
|
50831
|
+
if (a === b)
|
|
50832
|
+
return true;
|
|
50833
|
+
const t = this.typesById.get(a);
|
|
50834
|
+
if (!t)
|
|
50835
|
+
return false;
|
|
50836
|
+
return t.types.includes(b);
|
|
50837
|
+
}
|
|
50838
|
+
// Closed-world disjointness: A and B are disjoint iff no type in the
|
|
50839
|
+
// schema has both A and B in its lineage (i.e., no common subtype exists).
|
|
50840
|
+
// Sound only when the caller treats the supplied schema as complete.
|
|
50841
|
+
areDisjoint(a, b) {
|
|
50842
|
+
if (a === b)
|
|
50843
|
+
return false;
|
|
50844
|
+
for (const t of this.typesById.values()) {
|
|
50845
|
+
if (t.types.includes(a) && t.types.includes(b))
|
|
50846
|
+
return false;
|
|
50847
|
+
}
|
|
50848
|
+
return true;
|
|
50849
|
+
}
|
|
50850
|
+
}
|
|
50851
|
+
// ANTLR's .text concatenates child tokens without whitespace, which gives us
|
|
50852
|
+
// a usable canonical form for "syntactically the same subexpression".
|
|
50853
|
+
function sameSubtree(a, b) {
|
|
50854
|
+
if (!a || !b)
|
|
50855
|
+
return false;
|
|
50856
|
+
return a.text === b.text;
|
|
50857
|
+
}
|
|
50858
|
+
// True iff `ctx` is structurally a difference whose subtrahend (anywhere in a
|
|
50859
|
+
// left-associated minus chain) matches `targetText`. Strips parens and
|
|
50860
|
+
// pass-through wrappers. Examples that match for target="X":
|
|
50861
|
+
// X - X (Y - X) (Y - Z - X) ((Y - X) - Z)
|
|
50862
|
+
function subtractsTarget(ctx, targetText) {
|
|
50863
|
+
if (!ctx)
|
|
50864
|
+
return false;
|
|
50865
|
+
let cur = ctx;
|
|
50866
|
+
while (cur.childCount === 1)
|
|
50867
|
+
cur = cur.getChild(0);
|
|
50868
|
+
if (cur instanceof ForgeParser_1.Expr18Context && cur.LEFT_PAREN_TOK()) {
|
|
50869
|
+
return subtractsTarget(cur.expr(), targetText);
|
|
50870
|
+
}
|
|
50871
|
+
if (cur instanceof ForgeParser_1.Expr8Context && cur.MINUS_TOK()) {
|
|
50872
|
+
if (cur.expr10().text === targetText)
|
|
50873
|
+
return true;
|
|
50874
|
+
// Chain: `A - B - target` parses left-assoc as `((A - B) - target)`;
|
|
50875
|
+
// recurse on the left to catch deeper occurrences.
|
|
50876
|
+
return subtractsTarget(cur.expr8(), targetText);
|
|
50877
|
+
}
|
|
50878
|
+
return false;
|
|
50879
|
+
}
|
|
50880
|
+
// True iff `ctx` is structurally an intersection involving `targetText`
|
|
50881
|
+
// (so `ctx ⊆ target`). Walks through parens, pass-throughs, and chains of `&`.
|
|
50882
|
+
function intersectionInvolves(ctx, targetText) {
|
|
50883
|
+
if (!ctx)
|
|
50884
|
+
return false;
|
|
50885
|
+
let cur = ctx;
|
|
50886
|
+
while (cur.childCount === 1)
|
|
50887
|
+
cur = cur.getChild(0);
|
|
50888
|
+
if (cur instanceof ForgeParser_1.Expr18Context && cur.LEFT_PAREN_TOK()) {
|
|
50889
|
+
return intersectionInvolves(cur.expr(), targetText);
|
|
50890
|
+
}
|
|
50891
|
+
if (cur instanceof ForgeParser_1.Expr11Context && cur.AMP_TOK()) {
|
|
50892
|
+
if (cur.expr11().text === targetText)
|
|
50893
|
+
return true;
|
|
50894
|
+
if (cur.expr12().text === targetText)
|
|
50895
|
+
return true;
|
|
50896
|
+
return (intersectionInvolves(cur.expr11(), targetText) ||
|
|
50897
|
+
intersectionInvolves(cur.expr12(), targetText));
|
|
50898
|
+
}
|
|
50899
|
+
return false;
|
|
50900
|
+
}
|
|
50901
|
+
// True iff `ctx` is structurally a union containing `targetText`
|
|
50902
|
+
// (so `target ⊆ ctx`). Walks through parens, pass-throughs, and chains of `+`.
|
|
50903
|
+
function unionContains(ctx, targetText) {
|
|
50904
|
+
if (!ctx)
|
|
50905
|
+
return false;
|
|
50906
|
+
let cur = ctx;
|
|
50907
|
+
while (cur.childCount === 1)
|
|
50908
|
+
cur = cur.getChild(0);
|
|
50909
|
+
if (cur instanceof ForgeParser_1.Expr18Context && cur.LEFT_PAREN_TOK()) {
|
|
50910
|
+
return unionContains(cur.expr(), targetText);
|
|
50911
|
+
}
|
|
50912
|
+
if (cur instanceof ForgeParser_1.Expr8Context && cur.PLUS_TOK()) {
|
|
50913
|
+
if (cur.expr8().text === targetText)
|
|
50914
|
+
return true;
|
|
50915
|
+
if (cur.expr10().text === targetText)
|
|
50916
|
+
return true;
|
|
50917
|
+
return (unionContains(cur.expr8(), targetText) ||
|
|
50918
|
+
unionContains(cur.expr10(), targetText));
|
|
50919
|
+
}
|
|
50920
|
+
return false;
|
|
50921
|
+
}
|
|
50922
|
+
// Strip wrapping parens / pass-through expr layers to reveal an inner NEG_TOK
|
|
50923
|
+
// at the expr5 level. Returns the operand-text if `ctx` is structurally `not E`,
|
|
50924
|
+
// else undefined.
|
|
50925
|
+
function negationOperandText(ctx) {
|
|
50926
|
+
if (!ctx)
|
|
50927
|
+
return undefined;
|
|
50928
|
+
let cur = ctx;
|
|
50929
|
+
while (cur.childCount === 1) {
|
|
50930
|
+
cur = cur.getChild(0);
|
|
50931
|
+
}
|
|
50932
|
+
if (cur instanceof ForgeParser_1.Expr5Context && cur.NEG_TOK()) {
|
|
50933
|
+
const inner = cur.expr5();
|
|
50934
|
+
return inner ? inner.text : undefined;
|
|
50935
|
+
}
|
|
50936
|
+
if (cur instanceof ForgeParser_1.Expr18Context && cur.LEFT_PAREN_TOK()) {
|
|
50937
|
+
return negationOperandText(cur.expr());
|
|
50938
|
+
}
|
|
50939
|
+
return undefined;
|
|
50940
|
+
}
|
|
50941
|
+
class ForgeExprStaticAnalyzer extends AbstractParseTreeVisitor_1.AbstractParseTreeVisitor {
|
|
50942
|
+
constructor(schema) {
|
|
50943
|
+
super();
|
|
50944
|
+
if (schema)
|
|
50945
|
+
this.schema = new SchemaInfo(schema);
|
|
50946
|
+
}
|
|
50947
|
+
// Walk a nameList (`a, b, c`) and accumulate identifiers into `out`.
|
|
50948
|
+
collectNamesFromList(ctx, out) {
|
|
50949
|
+
out.add((0, utils_1.getIdentifierName)(ctx.name()));
|
|
50950
|
+
const tail = ctx.nameList();
|
|
50951
|
+
if (tail)
|
|
50952
|
+
this.collectNamesFromList(tail, out);
|
|
50953
|
+
}
|
|
50954
|
+
// Walk a quantDeclList (`a : S, b : T`) and accumulate all bound identifiers.
|
|
50955
|
+
collectBoundNames(ctx, out) {
|
|
50956
|
+
this.collectNamesFromList(ctx.quantDecl().nameList(), out);
|
|
50957
|
+
const tail = ctx.quantDeclList();
|
|
50958
|
+
if (tail)
|
|
50959
|
+
this.collectBoundNames(tail, out);
|
|
50960
|
+
}
|
|
50961
|
+
// Policy: when a schema is provided, type and relation names are reserved —
|
|
50962
|
+
// they may only refer to the schema entity. Returns an ill-typed Abstract if
|
|
50963
|
+
// any candidate name collides; undefined otherwise.
|
|
50964
|
+
illTypedIfBindsReservedName(names) {
|
|
50965
|
+
if (!this.schema)
|
|
50966
|
+
return undefined;
|
|
50967
|
+
for (const name of names) {
|
|
50968
|
+
if (this.schema.getType(name) || this.schema.getRelation(name)) {
|
|
50969
|
+
return {
|
|
50970
|
+
kind: "ill-typed",
|
|
50971
|
+
reason: `cannot bind variable named '${name}': it is a reserved schema ` +
|
|
50972
|
+
`${this.schema.getType(name) ? "type" : "relation"} name`,
|
|
50973
|
+
};
|
|
50974
|
+
}
|
|
50975
|
+
}
|
|
50976
|
+
return undefined;
|
|
50977
|
+
}
|
|
50978
|
+
// Public entry: convert internal lattice value to a verdict + reason.
|
|
50979
|
+
analyze(ctx) {
|
|
50980
|
+
const v = this.visit(ctx);
|
|
50981
|
+
if (v.kind === "bool") {
|
|
50982
|
+
return v.value
|
|
50983
|
+
? { status: "tautology", reason: "expression folds to literal true" }
|
|
50984
|
+
: { status: "unsat", reason: "expression folds to literal false" };
|
|
50985
|
+
}
|
|
50986
|
+
if (v.kind === "empty") {
|
|
50987
|
+
return { status: "empty", reason: "expression is provably the empty set" };
|
|
50988
|
+
}
|
|
50989
|
+
if (v.kind === "ill-typed") {
|
|
50990
|
+
return { status: "ill-typed", reason: v.reason };
|
|
50991
|
+
}
|
|
50992
|
+
return { status: "unknown" };
|
|
50993
|
+
}
|
|
50994
|
+
// Arity of an Abstract when known; -1 means "not determinable".
|
|
50995
|
+
static arityOf(v) {
|
|
50996
|
+
if (v.kind === "typed")
|
|
50997
|
+
return v.arity;
|
|
50998
|
+
if (v.kind === "bool" || v.kind === "num")
|
|
50999
|
+
return 1; // singleton sets
|
|
51000
|
+
if (v.kind === "empty")
|
|
51001
|
+
return -1; // empty has no committed arity
|
|
51002
|
+
return -1;
|
|
51003
|
+
}
|
|
51004
|
+
defaultResult() {
|
|
51005
|
+
return UNKNOWN;
|
|
51006
|
+
}
|
|
51007
|
+
// Return the first ill-typed value among the args, or undefined. Used by
|
|
51008
|
+
// every operator handler to surface a statically malformed sub-expression
|
|
51009
|
+
// before any fold (including short-circuits like `false AND ?` and `true OR
|
|
51010
|
+
// ?`) could mask it.
|
|
51011
|
+
static bailIfIllTyped(...vals) {
|
|
51012
|
+
for (const v of vals) {
|
|
51013
|
+
if (v.kind === "ill-typed")
|
|
51014
|
+
return v;
|
|
51015
|
+
}
|
|
51016
|
+
return undefined;
|
|
51017
|
+
}
|
|
51018
|
+
// Prefer the more specific child result when aggregating across siblings.
|
|
51019
|
+
// For pass-through expr layers there's exactly one meaningful child; for
|
|
51020
|
+
// wrapper nodes like `( expr )` the terminals contribute UNKNOWN and the
|
|
51021
|
+
// real value comes from the single non-terminal child. Ill-typed always
|
|
51022
|
+
// wins — if any subtree is statically malformed, the parent is too.
|
|
51023
|
+
aggregateResult(aggregate, nextResult) {
|
|
51024
|
+
if (aggregate.kind === "ill-typed")
|
|
51025
|
+
return aggregate;
|
|
51026
|
+
if (nextResult.kind === "ill-typed")
|
|
51027
|
+
return nextResult;
|
|
51028
|
+
if (aggregate.kind === "unknown")
|
|
51029
|
+
return nextResult;
|
|
51030
|
+
return aggregate;
|
|
51031
|
+
}
|
|
51032
|
+
// Let/bind introduce data-dependent bindings; we don't fold through them.
|
|
51033
|
+
// Quantifiers we *do* fold in the cases where the verdict is independent of
|
|
51034
|
+
// the binding: an empty quantified domain, or a body that's a literal.
|
|
51035
|
+
visitExpr(ctx) {
|
|
51036
|
+
if (ctx.LET_TOK() || ctx.BIND_TOK())
|
|
51037
|
+
return UNKNOWN;
|
|
51038
|
+
const quant = ctx.quant();
|
|
51039
|
+
if (quant)
|
|
51040
|
+
return this.foldQuantifier(ctx, quant);
|
|
51041
|
+
return this.visitChildren(ctx);
|
|
51042
|
+
}
|
|
51043
|
+
foldQuantifier(ctx, quant) {
|
|
51044
|
+
const blockOrBar = ctx.blockOrBar();
|
|
51045
|
+
if (!blockOrBar)
|
|
51046
|
+
return UNKNOWN;
|
|
51047
|
+
// Reserved-name check at the binder: under a schema, type/relation names
|
|
51048
|
+
// cannot be reused as quantified variables.
|
|
51049
|
+
const declListTop = ctx.quantDeclList();
|
|
51050
|
+
if (declListTop) {
|
|
51051
|
+
const boundHere = new Set();
|
|
51052
|
+
this.collectBoundNames(declListTop, boundHere);
|
|
51053
|
+
const reservedError = this.illTypedIfBindsReservedName(boundHere);
|
|
51054
|
+
if (reservedError)
|
|
51055
|
+
return reservedError;
|
|
51056
|
+
}
|
|
51057
|
+
// Determine if any quantified domain is statically empty.
|
|
51058
|
+
let domainEmpty = false;
|
|
51059
|
+
let declList = ctx.quantDeclList();
|
|
51060
|
+
while (declList) {
|
|
51061
|
+
const setExpr = declList.quantDecl().expr();
|
|
51062
|
+
const v = this.visit(setExpr);
|
|
51063
|
+
if (v.kind === "ill-typed")
|
|
51064
|
+
return v;
|
|
51065
|
+
if (v.kind === "empty") {
|
|
51066
|
+
domainEmpty = true;
|
|
51067
|
+
break;
|
|
51068
|
+
}
|
|
51069
|
+
const next = declList.quantDeclList();
|
|
51070
|
+
if (!next)
|
|
51071
|
+
break;
|
|
51072
|
+
declList = next;
|
|
51073
|
+
}
|
|
51074
|
+
// Body analysis (only attempt the `| expr` form; blocks are conjunctions
|
|
51075
|
+
// and would need the binding to be meaningful).
|
|
51076
|
+
let body = UNKNOWN;
|
|
51077
|
+
if (blockOrBar.BAR_TOK() && blockOrBar.expr()) {
|
|
51078
|
+
body = this.visit(blockOrBar.expr());
|
|
51079
|
+
}
|
|
51080
|
+
const mult = quant.mult();
|
|
51081
|
+
const isAll = quant.ALL_TOK() !== undefined;
|
|
51082
|
+
const isNo = quant.NO_TOK() !== undefined;
|
|
51083
|
+
const isSome = mult?.SOME_TOK() !== undefined;
|
|
51084
|
+
const isOne = mult?.ONE_TOK() !== undefined;
|
|
51085
|
+
const isTwo = mult?.TWO_TOK() !== undefined;
|
|
51086
|
+
const isLone = mult?.LONE_TOK() !== undefined;
|
|
51087
|
+
if (domainEmpty) {
|
|
51088
|
+
// ∀ over empty is vacuously true; ∃ over empty is false.
|
|
51089
|
+
if (isAll || isNo || isLone)
|
|
51090
|
+
return { kind: "bool", value: true };
|
|
51091
|
+
if (isSome || isOne || isTwo)
|
|
51092
|
+
return { kind: "bool", value: false };
|
|
51093
|
+
}
|
|
51094
|
+
if (body.kind === "bool") {
|
|
51095
|
+
if (!body.value) {
|
|
51096
|
+
// body always false: no x satisfies, regardless of domain
|
|
51097
|
+
if (isNo || isLone)
|
|
51098
|
+
return { kind: "bool", value: true };
|
|
51099
|
+
if (isSome || isOne || isTwo)
|
|
51100
|
+
return { kind: "bool", value: false };
|
|
51101
|
+
// all x | false → data-dependent (vacuous if domain empty, else false)
|
|
51102
|
+
}
|
|
51103
|
+
else {
|
|
51104
|
+
// body always true: every x satisfies
|
|
51105
|
+
if (isAll)
|
|
51106
|
+
return { kind: "bool", value: true };
|
|
51107
|
+
// some/one/no etc. depend on domain size — data-dependent
|
|
51108
|
+
}
|
|
51109
|
+
}
|
|
51110
|
+
return UNKNOWN;
|
|
51111
|
+
}
|
|
51112
|
+
// A block { e1; e2; ...; en } is a conjunction of its expressions.
|
|
51113
|
+
visitBlock(ctx) {
|
|
51114
|
+
let result = { kind: "bool", value: true };
|
|
51115
|
+
for (const e of ctx.expr()) {
|
|
51116
|
+
const v = this.visit(e);
|
|
51117
|
+
if (v.kind === "ill-typed")
|
|
51118
|
+
return v; // ill-typed wins
|
|
51119
|
+
if (v.kind === "bool" && !v.value)
|
|
51120
|
+
return v; // any false → false
|
|
51121
|
+
if (v.kind !== "bool")
|
|
51122
|
+
result = UNKNOWN; // forget the running true
|
|
51123
|
+
}
|
|
51124
|
+
return result;
|
|
51125
|
+
}
|
|
51126
|
+
visitExpr1(ctx) {
|
|
51127
|
+
if (ctx.OR_TOK()) {
|
|
51128
|
+
const leftCtx = ctx.expr1();
|
|
51129
|
+
const rightCtx = ctx.expr1_5();
|
|
51130
|
+
const l = this.visit(leftCtx);
|
|
51131
|
+
const r = this.visit(rightCtx);
|
|
51132
|
+
const bail = ForgeExprStaticAnalyzer.bailIfIllTyped(l, r);
|
|
51133
|
+
if (bail)
|
|
51134
|
+
return bail;
|
|
51135
|
+
// X or X → X
|
|
51136
|
+
if (sameSubtree(leftCtx, rightCtx))
|
|
51137
|
+
return l;
|
|
51138
|
+
if (l.kind === "bool" && l.value)
|
|
51139
|
+
return l;
|
|
51140
|
+
if (r.kind === "bool" && r.value)
|
|
51141
|
+
return r;
|
|
51142
|
+
if (l.kind === "bool" && r.kind === "bool") {
|
|
51143
|
+
return { kind: "bool", value: l.value || r.value };
|
|
51144
|
+
}
|
|
51145
|
+
// X or not X / not X or X → true (classical tautology)
|
|
51146
|
+
const lNeg = negationOperandText(leftCtx);
|
|
51147
|
+
const rNeg = negationOperandText(rightCtx);
|
|
51148
|
+
if (lNeg !== undefined && lNeg === rightCtx.text)
|
|
51149
|
+
return { kind: "bool", value: true };
|
|
51150
|
+
if (rNeg !== undefined && rNeg === leftCtx.text)
|
|
51151
|
+
return { kind: "bool", value: true };
|
|
51152
|
+
return UNKNOWN;
|
|
51153
|
+
}
|
|
51154
|
+
return this.visitChildren(ctx);
|
|
51155
|
+
}
|
|
51156
|
+
visitExpr1_5(ctx) {
|
|
51157
|
+
if (ctx.XOR_TOK()) {
|
|
51158
|
+
const leftCtx = ctx.expr1_5();
|
|
51159
|
+
const rightCtx = ctx.expr2();
|
|
51160
|
+
const l = this.visit(leftCtx);
|
|
51161
|
+
const r = this.visit(rightCtx);
|
|
51162
|
+
const bail = ForgeExprStaticAnalyzer.bailIfIllTyped(l, r);
|
|
51163
|
+
if (bail)
|
|
51164
|
+
return bail;
|
|
51165
|
+
// X xor X → false
|
|
51166
|
+
if (sameSubtree(leftCtx, rightCtx))
|
|
51167
|
+
return { kind: "bool", value: false };
|
|
51168
|
+
if (l.kind === "bool" && r.kind === "bool") {
|
|
51169
|
+
return { kind: "bool", value: l.value !== r.value };
|
|
51170
|
+
}
|
|
51171
|
+
return UNKNOWN;
|
|
51172
|
+
}
|
|
51173
|
+
return this.visitChildren(ctx);
|
|
51174
|
+
}
|
|
51175
|
+
visitExpr2(ctx) {
|
|
51176
|
+
if (ctx.IFF_TOK()) {
|
|
51177
|
+
const leftCtx = ctx.expr2();
|
|
51178
|
+
const rightCtx = ctx.expr3();
|
|
51179
|
+
const l = this.visit(leftCtx);
|
|
51180
|
+
const r = this.visit(rightCtx);
|
|
51181
|
+
const bail = ForgeExprStaticAnalyzer.bailIfIllTyped(l, r);
|
|
51182
|
+
if (bail)
|
|
51183
|
+
return bail;
|
|
51184
|
+
// X iff X → true
|
|
51185
|
+
if (sameSubtree(leftCtx, rightCtx))
|
|
51186
|
+
return { kind: "bool", value: true };
|
|
51187
|
+
// X iff not X / not X iff X → false
|
|
51188
|
+
const lNeg = negationOperandText(leftCtx);
|
|
51189
|
+
const rNeg = negationOperandText(rightCtx);
|
|
51190
|
+
if (lNeg !== undefined && lNeg === rightCtx.text)
|
|
51191
|
+
return { kind: "bool", value: false };
|
|
51192
|
+
if (rNeg !== undefined && rNeg === leftCtx.text)
|
|
51193
|
+
return { kind: "bool", value: false };
|
|
51194
|
+
if (l.kind === "bool" && r.kind === "bool") {
|
|
51195
|
+
return { kind: "bool", value: l.value === r.value };
|
|
51196
|
+
}
|
|
51197
|
+
return UNKNOWN;
|
|
51198
|
+
}
|
|
51199
|
+
return this.visitChildren(ctx);
|
|
51200
|
+
}
|
|
51201
|
+
visitExpr3(ctx) {
|
|
51202
|
+
if (ctx.IMP_TOK()) {
|
|
51203
|
+
const ant = this.visit(ctx.expr4());
|
|
51204
|
+
const exprs3 = ctx.expr3();
|
|
51205
|
+
// Implication or implication-with-else. Visit all branches up front so
|
|
51206
|
+
// an ill-typed sub-expression is reported even when a short-circuit
|
|
51207
|
+
// (false antecedent, etc.) would otherwise fold the verdict.
|
|
51208
|
+
if (ctx.ELSE_TOK()) {
|
|
51209
|
+
const thenBranch = this.visit(exprs3[0]);
|
|
51210
|
+
const elseBranch = this.visit(exprs3[1]);
|
|
51211
|
+
const bail = ForgeExprStaticAnalyzer.bailIfIllTyped(ant, thenBranch, elseBranch);
|
|
51212
|
+
if (bail)
|
|
51213
|
+
return bail;
|
|
51214
|
+
if (ant.kind === "bool")
|
|
51215
|
+
return ant.value ? thenBranch : elseBranch;
|
|
51216
|
+
return UNKNOWN;
|
|
51217
|
+
}
|
|
51218
|
+
const conseqCtx = exprs3[0];
|
|
51219
|
+
const con = this.visit(conseqCtx);
|
|
51220
|
+
const bail = ForgeExprStaticAnalyzer.bailIfIllTyped(ant, con);
|
|
51221
|
+
if (bail)
|
|
51222
|
+
return bail;
|
|
51223
|
+
// antecedent false → vacuously true
|
|
51224
|
+
if (ant.kind === "bool" && !ant.value)
|
|
51225
|
+
return { kind: "bool", value: true };
|
|
51226
|
+
// true => X ≡ X
|
|
51227
|
+
if (ant.kind === "bool" && ant.value)
|
|
51228
|
+
return con;
|
|
51229
|
+
// _ => true ≡ true
|
|
51230
|
+
if (con.kind === "bool" && con.value)
|
|
51231
|
+
return con;
|
|
51232
|
+
return UNKNOWN;
|
|
51233
|
+
}
|
|
51234
|
+
return this.visitChildren(ctx);
|
|
51235
|
+
}
|
|
51236
|
+
visitExpr4(ctx) {
|
|
51237
|
+
if (ctx.AND_TOK()) {
|
|
51238
|
+
const leftCtx = ctx.expr4();
|
|
51239
|
+
const rightCtx = ctx.expr4_5();
|
|
51240
|
+
const l = this.visit(leftCtx);
|
|
51241
|
+
const r = this.visit(rightCtx);
|
|
51242
|
+
const bail = ForgeExprStaticAnalyzer.bailIfIllTyped(l, r);
|
|
51243
|
+
if (bail)
|
|
51244
|
+
return bail;
|
|
51245
|
+
// X and X → X
|
|
51246
|
+
if (sameSubtree(leftCtx, rightCtx))
|
|
51247
|
+
return l;
|
|
51248
|
+
if (l.kind === "bool" && !l.value)
|
|
51249
|
+
return l;
|
|
51250
|
+
if (r.kind === "bool" && !r.value)
|
|
51251
|
+
return r;
|
|
51252
|
+
if (l.kind === "bool" && r.kind === "bool") {
|
|
51253
|
+
return { kind: "bool", value: l.value && r.value };
|
|
51254
|
+
}
|
|
51255
|
+
// X and not X / not X and X → false
|
|
51256
|
+
const lNeg = negationOperandText(leftCtx);
|
|
51257
|
+
const rNeg = negationOperandText(rightCtx);
|
|
51258
|
+
if (lNeg !== undefined && lNeg === rightCtx.text)
|
|
51259
|
+
return { kind: "bool", value: false };
|
|
51260
|
+
if (rNeg !== undefined && rNeg === leftCtx.text)
|
|
51261
|
+
return { kind: "bool", value: false };
|
|
51262
|
+
return UNKNOWN;
|
|
51263
|
+
}
|
|
51264
|
+
return this.visitChildren(ctx);
|
|
51265
|
+
}
|
|
51266
|
+
visitExpr5(ctx) {
|
|
51267
|
+
if (ctx.NEG_TOK()) {
|
|
51268
|
+
const inner = this.visit(ctx.expr5());
|
|
51269
|
+
if (inner.kind === "ill-typed")
|
|
51270
|
+
return inner;
|
|
51271
|
+
if (inner.kind === "bool")
|
|
51272
|
+
return { kind: "bool", value: !inner.value };
|
|
51273
|
+
return UNKNOWN;
|
|
51274
|
+
}
|
|
51275
|
+
// Temporal operators are not implemented; bail out conservatively.
|
|
51276
|
+
if (ctx.ALWAYS_TOK() ||
|
|
51277
|
+
ctx.EVENTUALLY_TOK() ||
|
|
51278
|
+
ctx.AFTER_TOK() ||
|
|
51279
|
+
ctx.BEFORE_TOK() ||
|
|
51280
|
+
ctx.ONCE_TOK() ||
|
|
51281
|
+
ctx.HISTORICALLY_TOK()) {
|
|
51282
|
+
return UNKNOWN;
|
|
51283
|
+
}
|
|
51284
|
+
return this.visitChildren(ctx);
|
|
51285
|
+
}
|
|
51286
|
+
visitExpr6(ctx) {
|
|
51287
|
+
const op = ctx.compareOp();
|
|
51288
|
+
if (!op)
|
|
51289
|
+
return this.visitChildren(ctx);
|
|
51290
|
+
const leftCtx = ctx.expr6();
|
|
51291
|
+
const rightCtx = ctx.expr7();
|
|
51292
|
+
const l = this.visit(leftCtx);
|
|
51293
|
+
const r = this.visit(rightCtx);
|
|
51294
|
+
const bail = ForgeExprStaticAnalyzer.bailIfIllTyped(l, r);
|
|
51295
|
+
if (bail)
|
|
51296
|
+
return bail;
|
|
51297
|
+
const negate = ctx.NEG_TOK() !== undefined;
|
|
51298
|
+
const opText = op.text;
|
|
51299
|
+
// `ni` is non-membership (the codebase's evaluator implements it as
|
|
51300
|
+
// !(in)). We fold it by computing the corresponding `in` verdict and
|
|
51301
|
+
// letting `finalize` invert. This keeps the static verdict in agreement
|
|
51302
|
+
// with runtime semantics for expressions like `X ni X` (false) and
|
|
51303
|
+
// `none ni 1` (true).
|
|
51304
|
+
const isNi = opText === "ni";
|
|
51305
|
+
const opForLogic = isNi ? "in" : opText;
|
|
51306
|
+
const finalize = (value) => {
|
|
51307
|
+
let v = value;
|
|
51308
|
+
if (isNi)
|
|
51309
|
+
v = !v;
|
|
51310
|
+
if (negate)
|
|
51311
|
+
v = !v;
|
|
51312
|
+
return { kind: "bool", value: v };
|
|
51313
|
+
};
|
|
51314
|
+
// Same-subtree shortcuts hold regardless of unknown values.
|
|
51315
|
+
if (sameSubtree(leftCtx, rightCtx)) {
|
|
51316
|
+
switch (opForLogic) {
|
|
51317
|
+
case "=":
|
|
51318
|
+
case "<=":
|
|
51319
|
+
case ">=":
|
|
51320
|
+
case "in":
|
|
51321
|
+
return finalize(true);
|
|
51322
|
+
case "<":
|
|
51323
|
+
case ">":
|
|
51324
|
+
return finalize(false);
|
|
51325
|
+
}
|
|
51326
|
+
}
|
|
51327
|
+
// Numeric literal folding.
|
|
51328
|
+
if (l.kind === "num" && r.kind === "num") {
|
|
51329
|
+
switch (opForLogic) {
|
|
51330
|
+
case "=":
|
|
51331
|
+
return finalize(l.value === r.value);
|
|
51332
|
+
case "<":
|
|
51333
|
+
return finalize(l.value < r.value);
|
|
51334
|
+
case ">":
|
|
51335
|
+
return finalize(l.value > r.value);
|
|
51336
|
+
case "<=":
|
|
51337
|
+
return finalize(l.value <= r.value);
|
|
51338
|
+
case ">=":
|
|
51339
|
+
return finalize(l.value >= r.value);
|
|
51340
|
+
}
|
|
51341
|
+
}
|
|
51342
|
+
// Boolean literal equality.
|
|
51343
|
+
if (l.kind === "bool" && r.kind === "bool" && opForLogic === "=") {
|
|
51344
|
+
return finalize(l.value === r.value);
|
|
51345
|
+
}
|
|
51346
|
+
// Empty / singleton comparisons.
|
|
51347
|
+
const lIsKnownSingleton = l.kind === "num" || l.kind === "bool";
|
|
51348
|
+
const rIsKnownSingleton = r.kind === "num" || r.kind === "bool";
|
|
51349
|
+
if (opForLogic === "=") {
|
|
51350
|
+
if (l.kind === "empty" && r.kind === "empty")
|
|
51351
|
+
return finalize(true);
|
|
51352
|
+
if (l.kind === "empty" && rIsKnownSingleton)
|
|
51353
|
+
return finalize(false);
|
|
51354
|
+
if (lIsKnownSingleton && r.kind === "empty")
|
|
51355
|
+
return finalize(false);
|
|
51356
|
+
}
|
|
51357
|
+
if (opForLogic === "in") {
|
|
51358
|
+
// empty set is a subset of every set
|
|
51359
|
+
if (l.kind === "empty")
|
|
51360
|
+
return finalize(true);
|
|
51361
|
+
// a non-empty singleton cannot be contained in the empty set
|
|
51362
|
+
if (lIsKnownSingleton && r.kind === "empty")
|
|
51363
|
+
return finalize(false);
|
|
51364
|
+
}
|
|
51365
|
+
// Arity mismatch on arity-sensitive comparisons → ill-typed.
|
|
51366
|
+
if (opText === "=" || opText === "in" || opText === "ni") {
|
|
51367
|
+
const la = ForgeExprStaticAnalyzer.arityOf(l);
|
|
51368
|
+
const ra = ForgeExprStaticAnalyzer.arityOf(r);
|
|
51369
|
+
if (la > 0 && ra > 0 && la !== ra) {
|
|
51370
|
+
return {
|
|
51371
|
+
kind: "ill-typed",
|
|
51372
|
+
reason: `arity mismatch in '${opText}': left has arity ${la}, right has arity ${ra}`,
|
|
51373
|
+
};
|
|
51374
|
+
}
|
|
51375
|
+
}
|
|
51376
|
+
// Schema-driven: subtype tautologies for `in` (and `ni` via finalize
|
|
51377
|
+
// inversion when A ⊆ B → A in B is true → A ni B is false). We
|
|
51378
|
+
// deliberately do NOT positively fold `ni` from the lattice — concluding
|
|
51379
|
+
// "not (A ⊆ B)" requires disjointness reasoning we don't perform here.
|
|
51380
|
+
if (this.schema && l.kind === "typed" && r.kind === "typed") {
|
|
51381
|
+
const lCols = l.columnTypes;
|
|
51382
|
+
const rCols = r.columnTypes;
|
|
51383
|
+
if (lCols && rCols && lCols.length === rCols.length) {
|
|
51384
|
+
const colWiseSubtype = lCols.every((lc, i) => this.schema.isSubtypeOf(lc, rCols[i]));
|
|
51385
|
+
if (opForLogic === "in" && colWiseSubtype)
|
|
51386
|
+
return finalize(true);
|
|
51387
|
+
}
|
|
51388
|
+
}
|
|
51389
|
+
return UNKNOWN;
|
|
51390
|
+
}
|
|
51391
|
+
visitExpr7(ctx) {
|
|
51392
|
+
const inner = this.visit(ctx.expr8());
|
|
51393
|
+
if (inner.kind === "ill-typed")
|
|
51394
|
+
return inner;
|
|
51395
|
+
if (ctx.SET_TOK())
|
|
51396
|
+
return inner;
|
|
51397
|
+
if (inner.kind === "empty") {
|
|
51398
|
+
if (ctx.NO_TOK())
|
|
51399
|
+
return { kind: "bool", value: true };
|
|
51400
|
+
if (ctx.LONE_TOK())
|
|
51401
|
+
return { kind: "bool", value: true };
|
|
51402
|
+
if (ctx.SOME_TOK())
|
|
51403
|
+
return { kind: "bool", value: false };
|
|
51404
|
+
if (ctx.ONE_TOK())
|
|
51405
|
+
return { kind: "bool", value: false };
|
|
51406
|
+
if (ctx.TWO_TOK())
|
|
51407
|
+
return { kind: "bool", value: false };
|
|
51408
|
+
}
|
|
51409
|
+
// If we can't say anything specific about the multiplicity, the whole
|
|
51410
|
+
// expression is still a boolean — but its value is unknown.
|
|
51411
|
+
if (ctx.NO_TOK() ||
|
|
51412
|
+
ctx.LONE_TOK() ||
|
|
51413
|
+
ctx.SOME_TOK() ||
|
|
51414
|
+
ctx.ONE_TOK() ||
|
|
51415
|
+
ctx.TWO_TOK()) {
|
|
51416
|
+
return UNKNOWN;
|
|
51417
|
+
}
|
|
51418
|
+
return inner;
|
|
51419
|
+
}
|
|
51420
|
+
visitExpr8(ctx) {
|
|
51421
|
+
if (ctx.MINUS_TOK()) {
|
|
51422
|
+
const leftCtx = ctx.expr8();
|
|
51423
|
+
const rightCtx = ctx.expr10();
|
|
51424
|
+
const l = this.visit(leftCtx);
|
|
51425
|
+
const r = this.visit(rightCtx);
|
|
51426
|
+
const bail = ForgeExprStaticAnalyzer.bailIfIllTyped(l, r);
|
|
51427
|
+
if (bail)
|
|
51428
|
+
return bail;
|
|
51429
|
+
// X - X → empty (set difference) or 0 (numeric)
|
|
51430
|
+
if (sameSubtree(leftCtx, rightCtx)) {
|
|
51431
|
+
if (l.kind === "num")
|
|
51432
|
+
return { kind: "num", value: 0 };
|
|
51433
|
+
return { kind: "empty" };
|
|
51434
|
+
}
|
|
51435
|
+
// Numeric folding for literal subtraction.
|
|
51436
|
+
if (l.kind === "num" && r.kind === "num") {
|
|
51437
|
+
return { kind: "num", value: l.value - r.value };
|
|
51438
|
+
}
|
|
51439
|
+
// empty - X → empty; X - empty → X
|
|
51440
|
+
if (l.kind === "empty")
|
|
51441
|
+
return { kind: "empty" };
|
|
51442
|
+
if (r.kind === "empty")
|
|
51443
|
+
return l;
|
|
51444
|
+
// Subset patterns: L ⊆ R ⇒ L - R = empty.
|
|
51445
|
+
// (R & ?) - R or (? & R) - R (intersection is a subset)
|
|
51446
|
+
if (intersectionInvolves(leftCtx, rightCtx.text))
|
|
51447
|
+
return { kind: "empty" };
|
|
51448
|
+
// L - (L + ?) or L - (? + L) (L is a subset of the union)
|
|
51449
|
+
if (unionContains(rightCtx, leftCtx.text))
|
|
51450
|
+
return { kind: "empty" };
|
|
51451
|
+
// Arity mismatch is a static type error.
|
|
51452
|
+
const lArity = ForgeExprStaticAnalyzer.arityOf(l);
|
|
51453
|
+
const rArity = ForgeExprStaticAnalyzer.arityOf(r);
|
|
51454
|
+
if (lArity > 0 && rArity > 0 && lArity !== rArity) {
|
|
51455
|
+
return {
|
|
51456
|
+
kind: "ill-typed",
|
|
51457
|
+
reason: `arity mismatch in '-': left has arity ${lArity}, right has arity ${rArity}`,
|
|
51458
|
+
};
|
|
51459
|
+
}
|
|
51460
|
+
return UNKNOWN;
|
|
51461
|
+
}
|
|
51462
|
+
if (ctx.PLUS_TOK()) {
|
|
51463
|
+
const l = this.visit(ctx.expr8());
|
|
51464
|
+
const r = this.visit(ctx.expr10());
|
|
51465
|
+
const bail = ForgeExprStaticAnalyzer.bailIfIllTyped(l, r);
|
|
51466
|
+
if (bail)
|
|
51467
|
+
return bail;
|
|
51468
|
+
// Numeric literal addition.
|
|
51469
|
+
if (l.kind === "num" && r.kind === "num") {
|
|
51470
|
+
return { kind: "num", value: l.value + r.value };
|
|
51471
|
+
}
|
|
51472
|
+
// Empty is the identity of set union: X + none ≡ X, none + X ≡ X.
|
|
51473
|
+
if (l.kind === "empty" && r.kind === "empty")
|
|
51474
|
+
return { kind: "empty" };
|
|
51475
|
+
if (l.kind === "empty")
|
|
51476
|
+
return r;
|
|
51477
|
+
if (r.kind === "empty")
|
|
51478
|
+
return l;
|
|
51479
|
+
// Arity mismatch is a static type error.
|
|
51480
|
+
const lArity = ForgeExprStaticAnalyzer.arityOf(l);
|
|
51481
|
+
const rArity = ForgeExprStaticAnalyzer.arityOf(r);
|
|
51482
|
+
if (lArity > 0 && rArity > 0 && lArity !== rArity) {
|
|
51483
|
+
return {
|
|
51484
|
+
kind: "ill-typed",
|
|
51485
|
+
reason: `arity mismatch in '+': left has arity ${lArity}, right has arity ${rArity}`,
|
|
51486
|
+
};
|
|
51487
|
+
}
|
|
51488
|
+
if (lArity > 0 && rArity > 0) {
|
|
51489
|
+
return { kind: "typed", arity: lArity };
|
|
51490
|
+
}
|
|
51491
|
+
return UNKNOWN;
|
|
51492
|
+
}
|
|
51493
|
+
return this.visitChildren(ctx);
|
|
51494
|
+
}
|
|
51495
|
+
visitExpr9(ctx) {
|
|
51496
|
+
if (ctx.CARD_TOK()) {
|
|
51497
|
+
const inner = this.visit(ctx.expr9());
|
|
51498
|
+
if (inner.kind === "ill-typed")
|
|
51499
|
+
return inner;
|
|
51500
|
+
if (inner.kind === "empty")
|
|
51501
|
+
return { kind: "num", value: 0 };
|
|
51502
|
+
return UNKNOWN;
|
|
51503
|
+
}
|
|
51504
|
+
return this.visitChildren(ctx);
|
|
51505
|
+
}
|
|
51506
|
+
visitExpr12(ctx) {
|
|
51507
|
+
if (ctx.arrowOp()) {
|
|
51508
|
+
// Cartesian product: if either side is empty, the product is empty.
|
|
51509
|
+
const l = this.visit(ctx.expr12());
|
|
51510
|
+
const r = this.visit(ctx.expr13());
|
|
51511
|
+
const bail = ForgeExprStaticAnalyzer.bailIfIllTyped(l, r);
|
|
51512
|
+
if (bail)
|
|
51513
|
+
return bail;
|
|
51514
|
+
if (l.kind === "empty" || r.kind === "empty")
|
|
51515
|
+
return { kind: "empty" };
|
|
51516
|
+
// Propagate combined arity / column types.
|
|
51517
|
+
if (l.kind === "typed" && r.kind === "typed") {
|
|
51518
|
+
const cols = l.columnTypes && r.columnTypes
|
|
51519
|
+
? [...l.columnTypes, ...r.columnTypes]
|
|
51520
|
+
: undefined;
|
|
51521
|
+
return { kind: "typed", arity: l.arity + r.arity, columnTypes: cols };
|
|
51522
|
+
}
|
|
51523
|
+
const la = ForgeExprStaticAnalyzer.arityOf(l);
|
|
51524
|
+
const ra = ForgeExprStaticAnalyzer.arityOf(r);
|
|
51525
|
+
if (la > 0 && ra > 0)
|
|
51526
|
+
return { kind: "typed", arity: la + ra };
|
|
51527
|
+
return UNKNOWN;
|
|
51528
|
+
}
|
|
51529
|
+
return this.visitChildren(ctx);
|
|
51530
|
+
}
|
|
51531
|
+
visitExpr11(ctx) {
|
|
51532
|
+
if (ctx.AMP_TOK()) {
|
|
51533
|
+
const leftCtx = ctx.expr11();
|
|
51534
|
+
const rightCtx = ctx.expr12();
|
|
51535
|
+
const l = this.visit(leftCtx);
|
|
51536
|
+
const r = this.visit(rightCtx);
|
|
51537
|
+
const bail = ForgeExprStaticAnalyzer.bailIfIllTyped(l, r);
|
|
51538
|
+
if (bail)
|
|
51539
|
+
return bail;
|
|
51540
|
+
// X & X → X (preserve "empty" if we know it; otherwise unknown).
|
|
51541
|
+
if (sameSubtree(leftCtx, rightCtx))
|
|
51542
|
+
return l;
|
|
51543
|
+
// empty & anything → empty
|
|
51544
|
+
if (l.kind === "empty" || r.kind === "empty")
|
|
51545
|
+
return { kind: "empty" };
|
|
51546
|
+
// Distinct numeric singletons are disjoint sets.
|
|
51547
|
+
if (l.kind === "num" && r.kind === "num" && l.value !== r.value) {
|
|
51548
|
+
return { kind: "empty" };
|
|
51549
|
+
}
|
|
51550
|
+
// X & (... - X) → empty (subtrahend strips X out).
|
|
51551
|
+
if (subtractsTarget(rightCtx, leftCtx.text))
|
|
51552
|
+
return { kind: "empty" };
|
|
51553
|
+
if (subtractsTarget(leftCtx, rightCtx.text))
|
|
51554
|
+
return { kind: "empty" };
|
|
51555
|
+
// Arity mismatch → ill-typed.
|
|
51556
|
+
const la = ForgeExprStaticAnalyzer.arityOf(l);
|
|
51557
|
+
const ra = ForgeExprStaticAnalyzer.arityOf(r);
|
|
51558
|
+
if (la > 0 && ra > 0 && la !== ra) {
|
|
51559
|
+
return {
|
|
51560
|
+
kind: "ill-typed",
|
|
51561
|
+
reason: `arity mismatch in '&': left has arity ${la}, right has arity ${ra}`,
|
|
51562
|
+
};
|
|
51563
|
+
}
|
|
51564
|
+
// Schema-driven column-wise disjointness.
|
|
51565
|
+
if (this.schema && l.kind === "typed" && r.kind === "typed" && l.columnTypes && r.columnTypes) {
|
|
51566
|
+
if (l.columnTypes.length === r.columnTypes.length) {
|
|
51567
|
+
const anyDisjoint = l.columnTypes.some((lc, i) => this.schema.areDisjoint(lc, r.columnTypes[i]));
|
|
51568
|
+
if (anyDisjoint)
|
|
51569
|
+
return { kind: "empty" };
|
|
51570
|
+
}
|
|
51571
|
+
}
|
|
51572
|
+
return UNKNOWN;
|
|
51573
|
+
}
|
|
51574
|
+
return this.visitChildren(ctx);
|
|
51575
|
+
}
|
|
51576
|
+
visitExpr14(ctx) {
|
|
51577
|
+
if (ctx.LEFT_SQUARE_TOK()) {
|
|
51578
|
+
// Box join f[a, b, ...] ≡ ...b.a.f
|
|
51579
|
+
const fn = this.visit(ctx.expr14());
|
|
51580
|
+
if (fn.kind === "ill-typed")
|
|
51581
|
+
return fn;
|
|
51582
|
+
if (fn.kind === "empty")
|
|
51583
|
+
return { kind: "empty" };
|
|
51584
|
+
// walk the comma-separated argument list
|
|
51585
|
+
let list = ctx.exprList();
|
|
51586
|
+
while (list) {
|
|
51587
|
+
const arg = this.visit(list.expr());
|
|
51588
|
+
if (arg.kind === "ill-typed")
|
|
51589
|
+
return arg;
|
|
51590
|
+
if (arg.kind === "empty")
|
|
51591
|
+
return { kind: "empty" };
|
|
51592
|
+
list = list.exprList();
|
|
51593
|
+
}
|
|
51594
|
+
return UNKNOWN;
|
|
51595
|
+
}
|
|
51596
|
+
return this.visitChildren(ctx);
|
|
51597
|
+
}
|
|
51598
|
+
visitExpr15(ctx) {
|
|
51599
|
+
if (ctx.DOT_TOK()) {
|
|
51600
|
+
const l = this.visit(ctx.expr15());
|
|
51601
|
+
const r = this.visit(ctx.expr16());
|
|
51602
|
+
const bail = ForgeExprStaticAnalyzer.bailIfIllTyped(l, r);
|
|
51603
|
+
if (bail)
|
|
51604
|
+
return bail;
|
|
51605
|
+
if (l.kind === "empty" || r.kind === "empty")
|
|
51606
|
+
return { kind: "empty" };
|
|
51607
|
+
// Joining two singletons / unary expressions yields arity 0 — ill-typed.
|
|
51608
|
+
const la = ForgeExprStaticAnalyzer.arityOf(l);
|
|
51609
|
+
const ra = ForgeExprStaticAnalyzer.arityOf(r);
|
|
51610
|
+
if (la === 1 && ra === 1) {
|
|
51611
|
+
return {
|
|
51612
|
+
kind: "ill-typed",
|
|
51613
|
+
reason: "dot join of two unary expressions produces arity 0",
|
|
51614
|
+
};
|
|
51615
|
+
}
|
|
51616
|
+
// Schema-aware column-type check on the join boundary.
|
|
51617
|
+
if (this.schema &&
|
|
51618
|
+
l.kind === "typed" && r.kind === "typed" &&
|
|
51619
|
+
l.columnTypes && r.columnTypes &&
|
|
51620
|
+
l.columnTypes.length > 0 && r.columnTypes.length > 0) {
|
|
51621
|
+
const leftLast = l.columnTypes[l.columnTypes.length - 1];
|
|
51622
|
+
const rightFirst = r.columnTypes[0];
|
|
51623
|
+
if (this.schema.areDisjoint(leftLast, rightFirst)) {
|
|
51624
|
+
return { kind: "empty" };
|
|
51625
|
+
}
|
|
51626
|
+
// Propagate typed-ness through the join when possible.
|
|
51627
|
+
const newCols = [
|
|
51628
|
+
...l.columnTypes.slice(0, -1),
|
|
51629
|
+
...r.columnTypes.slice(1),
|
|
51630
|
+
];
|
|
51631
|
+
if (newCols.length > 0) {
|
|
51632
|
+
return { kind: "typed", arity: newCols.length, columnTypes: newCols };
|
|
51633
|
+
}
|
|
51634
|
+
}
|
|
51635
|
+
// Otherwise propagate arity if we have it on both sides.
|
|
51636
|
+
if (la > 0 && ra > 0) {
|
|
51637
|
+
return { kind: "typed", arity: la + ra - 2 };
|
|
51638
|
+
}
|
|
51639
|
+
return UNKNOWN;
|
|
51640
|
+
}
|
|
51641
|
+
// name LEFT_SQUARE_TOK exprList RIGHT_SQUARE_TOK is a named pred call —
|
|
51642
|
+
// body unknown, so we can't fold even if args are empty.
|
|
51643
|
+
if (ctx.LEFT_SQUARE_TOK())
|
|
51644
|
+
return UNKNOWN;
|
|
51645
|
+
return this.visitChildren(ctx);
|
|
51646
|
+
}
|
|
51647
|
+
visitExpr17(ctx) {
|
|
51648
|
+
if (ctx.TILDE_TOK() || ctx.EXP_TOK()) {
|
|
51649
|
+
// transpose ~X and transitive closure ^X both preserve emptiness
|
|
51650
|
+
const inner = this.visit(ctx.expr17());
|
|
51651
|
+
if (inner.kind === "ill-typed")
|
|
51652
|
+
return inner;
|
|
51653
|
+
if (inner.kind === "empty")
|
|
51654
|
+
return { kind: "empty" };
|
|
51655
|
+
return UNKNOWN;
|
|
51656
|
+
}
|
|
51657
|
+
if (ctx.STAR_TOK()) {
|
|
51658
|
+
// reflexive transitive closure *X = iden ∪ ^X — *none = iden, which is
|
|
51659
|
+
// generally non-empty, so we cannot conclude empty here.
|
|
51660
|
+
return UNKNOWN;
|
|
51661
|
+
}
|
|
51662
|
+
if (ctx.GET_LABEL_TOK() ||
|
|
51663
|
+
ctx.GET_LABEL_STR_TOK() ||
|
|
51664
|
+
ctx.GET_LABEL_BOOL_TOK() ||
|
|
51665
|
+
ctx.GET_LABEL_NUM_TOK()) {
|
|
51666
|
+
// Label lookups depend on per-atom labels in the data instance.
|
|
51667
|
+
return UNKNOWN;
|
|
51668
|
+
}
|
|
51669
|
+
return this.visitChildren(ctx);
|
|
51670
|
+
}
|
|
51671
|
+
visitExpr18(ctx) {
|
|
51672
|
+
if (ctx.LEFT_PAREN_TOK()) {
|
|
51673
|
+
return this.visit(ctx.expr());
|
|
51674
|
+
}
|
|
51675
|
+
if (ctx.const()) {
|
|
51676
|
+
const c = ctx.const();
|
|
51677
|
+
if (c.NONE_TOK())
|
|
51678
|
+
return { kind: "empty" };
|
|
51679
|
+
if (c.number()) {
|
|
51680
|
+
const n = Number(c.number().text);
|
|
51681
|
+
const value = c.MINUS_TOK() ? -n : n;
|
|
51682
|
+
return { kind: "num", value };
|
|
51683
|
+
}
|
|
51684
|
+
// iden, univ are data-dependent
|
|
51685
|
+
return UNKNOWN;
|
|
51686
|
+
}
|
|
51687
|
+
if (ctx.qualName()) {
|
|
51688
|
+
// qualName resolves to either INT_TOK / SUM_TOK (data-dependent) or a
|
|
51689
|
+
// plain name — descend so visitName can fold `true` / `false`.
|
|
51690
|
+
return this.visit(ctx.qualName());
|
|
51691
|
+
}
|
|
51692
|
+
if (ctx.LEFT_CURLY_TOK()) {
|
|
51693
|
+
// Set comprehension `{x : S | body}` is empty if any quantified set is
|
|
51694
|
+
// empty, or if the body is statically false. We also enforce the
|
|
51695
|
+
// reserved-name policy here: under a schema, type/relation names cannot
|
|
51696
|
+
// be reused as binder variables.
|
|
51697
|
+
const declList = ctx.quantDeclList();
|
|
51698
|
+
const boundHere = new Set();
|
|
51699
|
+
if (declList) {
|
|
51700
|
+
let cur = declList;
|
|
51701
|
+
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
|
51702
|
+
while (cur) {
|
|
51703
|
+
const setExpr = cur.quantDecl().expr();
|
|
51704
|
+
const v = this.visit(setExpr);
|
|
51705
|
+
if (v.kind === "empty")
|
|
51706
|
+
return { kind: "empty" };
|
|
51707
|
+
if (v.kind === "ill-typed")
|
|
51708
|
+
return v;
|
|
51709
|
+
this.collectNamesFromList(cur.quantDecl().nameList(), boundHere);
|
|
51710
|
+
const next = cur.quantDeclList();
|
|
51711
|
+
if (!next)
|
|
51712
|
+
break;
|
|
51713
|
+
cur = next;
|
|
51714
|
+
}
|
|
51715
|
+
}
|
|
51716
|
+
const reservedError = this.illTypedIfBindsReservedName(boundHere);
|
|
51717
|
+
if (reservedError)
|
|
51718
|
+
return reservedError;
|
|
51719
|
+
const blockOrBar = ctx.blockOrBar();
|
|
51720
|
+
if (blockOrBar && blockOrBar.BAR_TOK() && blockOrBar.expr()) {
|
|
51721
|
+
const body = this.visit(blockOrBar.expr());
|
|
51722
|
+
if (body.kind === "ill-typed")
|
|
51723
|
+
return body;
|
|
51724
|
+
if (body.kind === "bool" && !body.value)
|
|
51725
|
+
return { kind: "empty" };
|
|
51726
|
+
}
|
|
51727
|
+
return UNKNOWN;
|
|
51728
|
+
}
|
|
51729
|
+
if (ctx.block()) {
|
|
51730
|
+
return this.visit(ctx.block());
|
|
51731
|
+
}
|
|
51732
|
+
// sexpr, AT_TOK, BACKQUOTE_TOK, THIS_TOK — unsupported.
|
|
51733
|
+
return UNKNOWN;
|
|
51734
|
+
}
|
|
51735
|
+
// `true` / `false` are parsed as names rather than `const` literals — the
|
|
51736
|
+
// evaluator handles them in visitName, so we do the same. When a schema is
|
|
51737
|
+
// available, type and relation names resolve to `typed` with arity and
|
|
51738
|
+
// column types from the schema.
|
|
51739
|
+
visitName(ctx) {
|
|
51740
|
+
const id = (0, utils_1.getIdentifierName)(ctx);
|
|
51741
|
+
if (id === "true")
|
|
51742
|
+
return { kind: "bool", value: true };
|
|
51743
|
+
if (id === "false")
|
|
51744
|
+
return { kind: "bool", value: false };
|
|
51745
|
+
if (this.schema) {
|
|
51746
|
+
const t = this.schema.getType(id);
|
|
51747
|
+
if (t)
|
|
51748
|
+
return { kind: "typed", arity: 1, columnTypes: [t.id] };
|
|
51749
|
+
const r = this.schema.getRelation(id);
|
|
51750
|
+
if (r) {
|
|
51751
|
+
const cols = r.types;
|
|
51752
|
+
return { kind: "typed", arity: cols.length, columnTypes: cols };
|
|
51753
|
+
}
|
|
51754
|
+
}
|
|
51755
|
+
return UNKNOWN;
|
|
51756
|
+
}
|
|
51757
|
+
}
|
|
51758
|
+
exports.ForgeExprStaticAnalyzer = ForgeExprStaticAnalyzer;
|
|
51759
|
+
|
|
51760
|
+
|
|
50757
51761
|
/***/ }),
|
|
50758
51762
|
|
|
50759
51763
|
/***/ "./src/NumericConstraintOptimizer.ts":
|
|
@@ -51743,12 +52747,13 @@ ForgeLexer.OPTION_TOK = 104;
|
|
|
51743
52747
|
ForgeLexer.COMMA_TOK = 105;
|
|
51744
52748
|
ForgeLexer.SLASH_TOK = 106;
|
|
51745
52749
|
ForgeLexer.NUM_CONST_TOK = 107;
|
|
51746
|
-
ForgeLexer.
|
|
51747
|
-
ForgeLexer.
|
|
51748
|
-
ForgeLexer.
|
|
51749
|
-
ForgeLexer.
|
|
51750
|
-
ForgeLexer.
|
|
51751
|
-
ForgeLexer.
|
|
52750
|
+
ForgeLexer.QUOTED_IDENTIFIER_TOK = 108;
|
|
52751
|
+
ForgeLexer.IDENTIFIER_TOK = 109;
|
|
52752
|
+
ForgeLexer.WS = 110;
|
|
52753
|
+
ForgeLexer.CCOMMENT = 111;
|
|
52754
|
+
ForgeLexer.COMMENT = 112;
|
|
52755
|
+
ForgeLexer.MULTCOMMENT = 113;
|
|
52756
|
+
ForgeLexer.LANG_DECL = 114;
|
|
51752
52757
|
// tslint:disable:no-trailing-whitespace
|
|
51753
52758
|
ForgeLexer.channelNames = [
|
|
51754
52759
|
"DEFAULT_TOKEN_CHANNEL", "HIDDEN",
|
|
@@ -51776,8 +52781,8 @@ ForgeLexer.ruleNames = [
|
|
|
51776
52781
|
"SEXPR_TOK", "INST_TOK", "EVAL_TOK", "EXAMPLE_TOK", "ARROW_TOK", "GET_LABEL_TOK",
|
|
51777
52782
|
"GET_LABEL_STR_TOK", "GET_LABEL_BOOL_TOK", "GET_LABEL_NUM_TOK", "EQ_TOK",
|
|
51778
52783
|
"LT_TOK", "GT_TOK", "LEQ_TOK", "GEQ_TOK", "NI_TOK", "NO_TOK", "SUM_TOK",
|
|
51779
|
-
"INT_TOK", "OPTION_TOK", "COMMA_TOK", "SLASH_TOK", "NUM_CONST_TOK", "
|
|
51780
|
-
"WS", "CCOMMENT", "COMMENT", "MULTCOMMENT", "LANG_DECL",
|
|
52784
|
+
"INT_TOK", "OPTION_TOK", "COMMA_TOK", "SLASH_TOK", "NUM_CONST_TOK", "QUOTED_IDENTIFIER_TOK",
|
|
52785
|
+
"IDENTIFIER_TOK", "WS", "CCOMMENT", "COMMENT", "MULTCOMMENT", "LANG_DECL",
|
|
51781
52786
|
];
|
|
51782
52787
|
ForgeLexer._LITERAL_NAMES = [
|
|
51783
52788
|
undefined, "'open'", "'['", "']'", "'as'", undefined, "'var'", "'abstract'",
|
|
@@ -51815,12 +52820,12 @@ ForgeLexer._SYMBOLIC_NAMES = [
|
|
|
51815
52820
|
"SEXPR_TOK", "INST_TOK", "EVAL_TOK", "EXAMPLE_TOK", "ARROW_TOK", "GET_LABEL_TOK",
|
|
51816
52821
|
"GET_LABEL_STR_TOK", "GET_LABEL_BOOL_TOK", "GET_LABEL_NUM_TOK", "EQ_TOK",
|
|
51817
52822
|
"LT_TOK", "GT_TOK", "LEQ_TOK", "GEQ_TOK", "NI_TOK", "NO_TOK", "SUM_TOK",
|
|
51818
|
-
"INT_TOK", "OPTION_TOK", "COMMA_TOK", "SLASH_TOK", "NUM_CONST_TOK", "
|
|
51819
|
-
"WS", "CCOMMENT", "COMMENT", "MULTCOMMENT", "LANG_DECL",
|
|
52823
|
+
"INT_TOK", "OPTION_TOK", "COMMA_TOK", "SLASH_TOK", "NUM_CONST_TOK", "QUOTED_IDENTIFIER_TOK",
|
|
52824
|
+
"IDENTIFIER_TOK", "WS", "CCOMMENT", "COMMENT", "MULTCOMMENT", "LANG_DECL",
|
|
51820
52825
|
];
|
|
51821
52826
|
ForgeLexer.VOCABULARY = new VocabularyImpl_1.VocabularyImpl(ForgeLexer._LITERAL_NAMES, ForgeLexer._SYMBOLIC_NAMES, []);
|
|
51822
52827
|
ForgeLexer._serializedATNSegments = 2;
|
|
51823
|
-
ForgeLexer._serializedATNSegment0 = "\x03\uC91D\uCABA\u058D\uAFBA\u4F53\u0607\uEA8B\uC241\
|
|
52828
|
+
ForgeLexer._serializedATNSegment0 = "\x03\uC91D\uCABA\u058D\uAFBA\u4F53\u0607\uEA8B\uC241\x02t\u0357\b\x01" +
|
|
51824
52829
|
"\x04\x02\t\x02\x04\x03\t\x03\x04\x04\t\x04\x04\x05\t\x05\x04\x06\t\x06" +
|
|
51825
52830
|
"\x04\x07\t\x07\x04\b\t\b\x04\t\t\t\x04\n\t\n\x04\v\t\v\x04\f\t\f\x04\r" +
|
|
51826
52831
|
"\t\r\x04\x0E\t\x0E\x04\x0F\t\x0F\x04\x10\t\x10\x04\x11\t\x11\x04\x12\t" +
|
|
@@ -51836,56 +52841,57 @@ ForgeLexer._serializedATNSegment0 = "\x03\uC91D\uCABA\u058D\uAFBA\u4F53\u0607\uE
|
|
|
51836
52841
|
"X\tX\x04Y\tY\x04Z\tZ\x04[\t[\x04\\\t\\\x04]\t]\x04^\t^\x04_\t_\x04`\t" +
|
|
51837
52842
|
"`\x04a\ta\x04b\tb\x04c\tc\x04d\td\x04e\te\x04f\tf\x04g\tg\x04h\th\x04" +
|
|
51838
52843
|
"i\ti\x04j\tj\x04k\tk\x04l\tl\x04m\tm\x04n\tn\x04o\to\x04p\tp\x04q\tq\x04" +
|
|
51839
|
-
"r\tr\x03\x02\x03\x02\x03\x02\x03\x02\x03\x02\x03\x03\x03\x03\x03
|
|
51840
|
-
"\x04\x03\x05\x03\x05\x03\x05\x03\x06\x03\x06\x03\x06\x03\x06\x07
|
|
51841
|
-
"\n\x06\f\x06\x0E\x06\
|
|
51842
|
-
"\x03\x07\x03\
|
|
51843
|
-
"\t\x03\t\x03\t\x03\
|
|
51844
|
-
"\f\x03\f\x03\f\x03\
|
|
51845
|
-
"\x03\x0F\x03\x0F\x03\
|
|
51846
|
-
"\x03\x11\x03\x11\x03\
|
|
51847
|
-
"\x03\x13\x03\
|
|
51848
|
-
"\x03\x15\x03\x15\x03\x15\x03\
|
|
51849
|
-
"\x03\x17\x03\
|
|
51850
|
-
"\x03\x19\x03\x19\x03\x19\x03\
|
|
51851
|
-
"\x03\
|
|
51852
|
-
"\x03\x1E\x03\x1E\x03\
|
|
51853
|
-
" \x03 \x03!\x03!\x03!\x03!\x03\"\x03\"\x03\"\x03\"\x03
|
|
51854
|
-
"#\x03#\x03#\x03#\x03#\x03$\x03$\x03$\x03$\x03$\x03%\x03
|
|
51855
|
-
"%\x03&\x03&\x03&\x03&\x03&\x03\'\x03\'\x03(\x03(\x03(\x03
|
|
51856
|
-
")\x03*\x03*\x03*\x03*\x03*\x03*\x03+\x03+\x03+\x03+\x03
|
|
51857
|
-
"+\x03
|
|
51858
|
-
"-\x03-\x03-\x03-\x03-\x03-\x03-\x03
|
|
51859
|
-
"/\x03/\x03/\x03/\x03/\x030\x030\x030\x030\x030\x030\
|
|
51860
|
-
"
|
|
51861
|
-
"
|
|
51862
|
-
"5\x035\x035\x035\x035\x035\x035\
|
|
51863
|
-
"6\x036\x036\x036\x036\x036\x037\x037\x037\x037\x037\
|
|
51864
|
-
"8\x039\x039\x039\x039\x039\x03:\x03:\x03:\x03:\x05:\
|
|
51865
|
-
";\x03;\x03;\x03<\x03<\x03<\x03<\x03<\x03<\x05<\
|
|
51866
|
-
"=\x03=\x03=\x03=\x03=\x03=\x03=\x05=\
|
|
51867
|
-
">\x03?\x03?\x03?\x03?\x03?\x05?\
|
|
51868
|
-
"@\x03A\x03A\x03A\x03A\x03A\x03A\x03A\x03A\x03B\x03B\x03B\
|
|
51869
|
-
"B\x03C\x03C\x03C\x03C\x03C\x03C\x03C\x03C\x03C\x03C\x03D\
|
|
51870
|
-
"D\x05D\
|
|
51871
|
-
"F\x03F\x03F\x03F\x03F\x03F\x03F\x03F\
|
|
51872
|
-
"
|
|
51873
|
-
"J\x03J\x03J\x03J\x03J\x03J\x03J\x03J\x03J\x03J\x03J\
|
|
51874
|
-
"
|
|
51875
|
-
"
|
|
51876
|
-
"
|
|
51877
|
-
"Y\x03Z\x03Z\x03Z\x03Z\x03Z\x03Z\x03Z\x03Z\x03[\x03[\x03[\x03
|
|
51878
|
-
"\\\x03]\x03]\x03]\x03]\x03]\x03]\x03^\x03^\x03^\x03^\x03
|
|
51879
|
-
"
|
|
51880
|
-
"
|
|
51881
|
-
"
|
|
51882
|
-
"i\x03j\x03j\x03k\x03k\x03l\x06l\
|
|
51883
|
-
"\
|
|
51884
|
-
"\
|
|
51885
|
-
"
|
|
51886
|
-
"\np\fp\x0Ep\
|
|
51887
|
-
"
|
|
51888
|
-
"r\
|
|
52844
|
+
"r\tr\x04s\ts\x03\x02\x03\x02\x03\x02\x03\x02\x03\x02\x03\x03\x03\x03\x03" +
|
|
52845
|
+
"\x04\x03\x04\x03\x05\x03\x05\x03\x05\x03\x06\x03\x06\x03\x06\x03\x06\x07" +
|
|
52846
|
+
"\x06\xF8\n\x06\f\x06\x0E\x06\xFB\v\x06\x03\x06\x03\x06\x03\x07\x03\x07" +
|
|
52847
|
+
"\x03\x07\x03\x07\x03\b\x03\b\x03\b\x03\b\x03\b\x03\b\x03\b\x03\b\x03\b" +
|
|
52848
|
+
"\x03\t\x03\t\x03\t\x03\t\x03\n\x03\n\x03\v\x03\v\x03\f\x03\f\x03\f\x03" +
|
|
52849
|
+
"\f\x03\f\x03\f\x03\f\x03\f\x03\r\x03\r\x03\r\x03\x0E\x03\x0E\x03\x0F\x03" +
|
|
52850
|
+
"\x0F\x03\x0F\x03\x0F\x03\x0F\x03\x10\x03\x10\x03\x10\x03\x10\x03\x10\x03" +
|
|
52851
|
+
"\x11\x03\x11\x03\x11\x03\x11\x03\x12\x03\x12\x03\x12\x03\x12\x03\x13\x03" +
|
|
52852
|
+
"\x13\x03\x13\x03\x13\x03\x14\x03\x14\x03\x14\x03\x14\x03\x14\x03\x15\x03" +
|
|
52853
|
+
"\x15\x03\x15\x03\x15\x03\x15\x03\x15\x03\x16\x03\x16\x03\x16\x03\x16\x03" +
|
|
52854
|
+
"\x16\x03\x17\x03\x17\x03\x18\x03\x18\x03\x18\x03\x18\x03\x18\x03\x18\x03" +
|
|
52855
|
+
"\x19\x03\x19\x03\x19\x03\x19\x03\x19\x03\x1A\x03\x1A\x03\x1B\x03\x1B\x03" +
|
|
52856
|
+
"\x1B\x03\x1B\x03\x1C\x03\x1C\x03\x1D\x03\x1D\x03\x1E\x03\x1E\x03\x1E\x03" +
|
|
52857
|
+
"\x1E\x03\x1E\x03\x1E\x03\x1E\x03\x1F\x03\x1F\x03\x1F\x03\x1F\x03 \x03" +
|
|
52858
|
+
" \x03 \x03 \x03 \x03 \x03!\x03!\x03!\x03!\x03\"\x03\"\x03\"\x03\"\x03" +
|
|
52859
|
+
"#\x03#\x03#\x03#\x03#\x03#\x03#\x03#\x03$\x03$\x03$\x03$\x03$\x03%\x03" +
|
|
52860
|
+
"%\x03%\x03%\x03%\x03&\x03&\x03&\x03&\x03&\x03\'\x03\'\x03(\x03(\x03(\x03" +
|
|
52861
|
+
")\x03)\x03)\x03)\x03*\x03*\x03*\x03*\x03*\x03*\x03+\x03+\x03+\x03+\x03" +
|
|
52862
|
+
"+\x03+\x03+\x03+\x03,\x03,\x03,\x03,\x03,\x03,\x03,\x03,\x03,\x03,\x03" +
|
|
52863
|
+
",\x03,\x03-\x03-\x03-\x03-\x03-\x03-\x03-\x03-\x03.\x03.\x03.\x03.\x03" +
|
|
52864
|
+
".\x03/\x03/\x03/\x03/\x03/\x03/\x03/\x030\x030\x030\x030\x030\x030\x03" +
|
|
52865
|
+
"1\x031\x032\x032\x032\x032\x033\x033\x033\x033\x033\x033\x033\x033\x03" +
|
|
52866
|
+
"3\x033\x033\x034\x034\x034\x034\x034\x034\x034\x034\x034\x034\x035\x03" +
|
|
52867
|
+
"5\x035\x035\x035\x035\x035\x035\x035\x035\x035\x036\x036\x036\x036\x03" +
|
|
52868
|
+
"6\x036\x036\x036\x036\x036\x036\x036\x036\x037\x037\x037\x037\x037\x03" +
|
|
52869
|
+
"8\x038\x038\x038\x039\x039\x039\x039\x039\x03:\x03:\x03:\x03:\x05:\u0210" +
|
|
52870
|
+
"\n:\x03;\x03;\x03;\x03;\x03<\x03<\x03<\x03<\x03<\x03<\x05<\u021C\n<\x03" +
|
|
52871
|
+
"=\x03=\x03=\x03=\x03=\x03=\x03=\x03=\x03=\x05=\u0227\n=\x03>\x03>\x03" +
|
|
52872
|
+
">\x03>\x03>\x03?\x03?\x03?\x03?\x03?\x05?\u0233\n?\x03@\x03@\x03@\x03" +
|
|
52873
|
+
"@\x03@\x03@\x03A\x03A\x03A\x03A\x03A\x03A\x03A\x03A\x03B\x03B\x03B\x03" +
|
|
52874
|
+
"B\x03B\x03B\x03C\x03C\x03C\x03C\x03C\x03C\x03C\x03C\x03C\x03C\x03D\x03" +
|
|
52875
|
+
"D\x03D\x03D\x05D\u0257\nD\x03E\x03E\x03E\x03E\x03E\x03E\x03E\x03F\x03" +
|
|
52876
|
+
"F\x03F\x03F\x03F\x03F\x03F\x03F\x03F\x03F\x03F\x03G\x03G\x03G\x03G\x03" +
|
|
52877
|
+
"G\x03G\x03H\x03H\x03H\x03H\x03H\x03H\x03H\x03I\x03I\x03I\x03I\x03I\x03" +
|
|
52878
|
+
"J\x03J\x03J\x03J\x03J\x03J\x03J\x03J\x03J\x03J\x03J\x03J\x03J\x03K\x03" +
|
|
52879
|
+
"K\x03L\x03L\x03L\x03M\x03M\x03N\x03N\x03N\x03O\x03O\x03O\x03P\x03P\x03" +
|
|
52880
|
+
"Q\x03Q\x03R\x03R\x03S\x03S\x03T\x03T\x03U\x03U\x03V\x03V\x03V\x03V\x03" +
|
|
52881
|
+
"V\x03W\x03W\x03W\x03W\x03W\x03W\x03X\x03X\x03X\x03X\x03X\x03Y\x03Y\x03" +
|
|
52882
|
+
"Y\x03Y\x03Y\x03Z\x03Z\x03Z\x03Z\x03Z\x03Z\x03Z\x03Z\x03[\x03[\x03[\x03" +
|
|
52883
|
+
"\\\x03\\\x03\\\x03]\x03]\x03]\x03]\x03]\x03]\x03^\x03^\x03^\x03^\x03^" +
|
|
52884
|
+
"\x03^\x03^\x03_\x03_\x03_\x03_\x03_\x03_\x03`\x03`\x03a\x03a\x03b\x03" +
|
|
52885
|
+
"b\x03c\x03c\x03c\x03c\x05c\u02E3\nc\x03d\x03d\x03d\x03e\x03e\x03e\x03" +
|
|
52886
|
+
"f\x03f\x03f\x03g\x03g\x03g\x03g\x03h\x03h\x03h\x03h\x03i\x03i\x03i\x03" +
|
|
52887
|
+
"i\x03i\x03i\x03i\x03j\x03j\x03k\x03k\x03l\x06l\u0302\nl\rl\x0El\u0303" +
|
|
52888
|
+
"\x03l\x03l\x06l\u0308\nl\rl\x0El\u0309\x05l\u030C\nl\x03m\x03m\x03m\x03" +
|
|
52889
|
+
"m\x06m\u0312\nm\rm\x0Em\u0313\x03m\x03m\x03n\x03n\x07n\u031A\nn\fn\x0E" +
|
|
52890
|
+
"n\u031D\vn\x03o\x06o\u0320\no\ro\x0Eo\u0321\x03o\x03o\x03p\x03p\x03p\x03" +
|
|
52891
|
+
"p\x07p\u032A\np\fp\x0Ep\u032D\vp\x03p\x03p\x03q\x03q\x03q\x03q\x07q\u0335" +
|
|
52892
|
+
"\nq\fq\x0Eq\u0338\vq\x03q\x03q\x03r\x03r\x03r\x03r\x07r\u0340\nr\fr\x0E" +
|
|
52893
|
+
"r\u0343\vr\x03r\x03r\x03r\x03r\x03r\x03s\x03s\x03s\x03s\x03s\x03s\x03" +
|
|
52894
|
+
"s\x07s\u0351\ns\fs\x0Es\u0354\vs\x03s\x03s\x03\u0341\x02\x02t\x03\x02" +
|
|
51889
52895
|
"\x03\x05\x02\x04\x07\x02\x05\t\x02\x06\v\x02\x07\r\x02\b\x0F\x02\t\x11" +
|
|
51890
52896
|
"\x02\n\x13\x02\v\x15\x02\f\x17\x02\r\x19\x02\x0E\x1B\x02\x0F\x1D\x02\x10" +
|
|
51891
52897
|
"\x1F\x02\x11!\x02\x12#\x02\x13%\x02\x14\'\x02\x15)\x02\x16+\x02\x17-\x02" +
|
|
@@ -51899,311 +52905,316 @@ ForgeLexer._serializedATNSegment0 = "\x03\uC91D\uCABA\u058D\uAFBA\u4F53\u0607\uE
|
|
|
51899
52905
|
"Z\xB3\x02[\xB5\x02\\\xB7\x02]\xB9\x02^\xBB\x02_\xBD\x02`\xBF\x02a\xC1" +
|
|
51900
52906
|
"\x02b\xC3\x02c\xC5\x02d\xC7\x02e\xC9\x02f\xCB\x02g\xCD\x02h\xCF\x02i\xD1" +
|
|
51901
52907
|
"\x02j\xD3\x02k\xD5\x02l\xD7\x02m\xD9\x02n\xDB\x02o\xDD\x02p\xDF\x02q\xE1" +
|
|
51902
|
-
"\x02r\xE3\x02s\x03\x02\
|
|
51903
|
-
"\x02&&1;C\\aac|\x05\x02\v\f\x0F\x0F\"\"\x04\x02\f\f
|
|
51904
|
-
"\
|
|
51905
|
-
"\
|
|
51906
|
-
"\
|
|
51907
|
-
"\
|
|
51908
|
-
"\
|
|
51909
|
-
"
|
|
51910
|
-
"\x02\x02\x02\
|
|
51911
|
-
"\x02\x02
|
|
51912
|
-
"
|
|
51913
|
-
"\x02\x02
|
|
51914
|
-
"\
|
|
51915
|
-
"\x02\x02\
|
|
51916
|
-
"\
|
|
51917
|
-
"
|
|
51918
|
-
"\x02\x02\
|
|
51919
|
-
"\
|
|
51920
|
-
"\x02\x02\
|
|
51921
|
-
"\
|
|
51922
|
-
"
|
|
51923
|
-
"\x02\x02\
|
|
51924
|
-
"\x02\x02\
|
|
51925
|
-
"\x02\x02\
|
|
51926
|
-
"\x02\x02\
|
|
51927
|
-
"\x02\x02\
|
|
51928
|
-
"\x02\x02\
|
|
51929
|
-
"\x02\x02\
|
|
51930
|
-
"\x02\x02\
|
|
51931
|
-
"\x02\x02\
|
|
51932
|
-
"\x02\x02\
|
|
51933
|
-
"\x02\x02\
|
|
51934
|
-
"\x02\x02\
|
|
51935
|
-
"\x02\x02\
|
|
51936
|
-
"\x02\x02\
|
|
51937
|
-
"\x02\x02\
|
|
51938
|
-
"\x02\x02\
|
|
51939
|
-
"\x02\x02\x02\x02\xE1\x03\x02\x02\x02\x02\xE3\x03\x02\x02
|
|
51940
|
-
"\x02\x02\
|
|
51941
|
-
"\x02\x02\x02\
|
|
51942
|
-
"\x02\x02\x02\
|
|
51943
|
-
"\x03\x02\x02\x02\
|
|
51944
|
-
"\
|
|
51945
|
-
"\
|
|
51946
|
-
"\x02\
|
|
51947
|
-
"\
|
|
51948
|
-
"\
|
|
51949
|
-
"\
|
|
51950
|
-
"\
|
|
51951
|
-
"\
|
|
51952
|
-
"\
|
|
51953
|
-
"\
|
|
51954
|
-
"\
|
|
51955
|
-
"\
|
|
51956
|
-
"\
|
|
51957
|
-
"\
|
|
51958
|
-
"\
|
|
51959
|
-
"\
|
|
51960
|
-
"\x02
|
|
51961
|
-
"\x02\
|
|
51962
|
-
"\x02\x02\x02\
|
|
51963
|
-
"\
|
|
51964
|
-
"\
|
|
51965
|
-
"\x02\
|
|
51966
|
-
"\x02\x02\x02\
|
|
51967
|
-
"\x03\x02\x02\x02\
|
|
51968
|
-
"\u029C\x03\x02\x02\x02\
|
|
51969
|
-
"\x02\
|
|
51970
|
-
"\x02\x02\x02\
|
|
51971
|
-
"\
|
|
51972
|
-
"\
|
|
51973
|
-
"\x02\
|
|
51974
|
-
"\x02\x02\x02\
|
|
51975
|
-
"\
|
|
51976
|
-
"\
|
|
51977
|
-
"\x02\
|
|
51978
|
-
"\x02\x02\x02\
|
|
51979
|
-
"\x03\x02\x02\x02\
|
|
51980
|
-
"
|
|
51981
|
-
"\x02\xEB\
|
|
51982
|
-
"\
|
|
51983
|
-
"\
|
|
51984
|
-
"
|
|
51985
|
-
"\x02\
|
|
51986
|
-
"\x02\
|
|
51987
|
-
"\x02\
|
|
51988
|
-
"\
|
|
51989
|
-
"\
|
|
51990
|
-
"\x02\u0105\
|
|
51991
|
-
"
|
|
51992
|
-
"\
|
|
51993
|
-
"\
|
|
51994
|
-
"\
|
|
51995
|
-
"
|
|
51996
|
-
"\
|
|
51997
|
-
"\
|
|
51998
|
-
"\
|
|
51999
|
-
"\x02\
|
|
52000
|
-
"\
|
|
52001
|
-
"\
|
|
52002
|
-
"\u0126\
|
|
52003
|
-
"\
|
|
52004
|
-
"\x02\
|
|
52005
|
-
"\
|
|
52006
|
-
"\
|
|
52007
|
-
"\
|
|
52008
|
-
"\
|
|
52009
|
-
"\
|
|
52010
|
-
"\u013D\
|
|
52011
|
-
"\
|
|
52012
|
-
"
|
|
52013
|
-
"\x02\x02\
|
|
52014
|
-
"\
|
|
52015
|
-
"
|
|
52016
|
-
"\
|
|
52017
|
-
"\
|
|
52018
|
-
"\
|
|
52019
|
-
"\
|
|
52020
|
-
"
|
|
52021
|
-
"\
|
|
52022
|
-
"\u0160\
|
|
52023
|
-
"\
|
|
52024
|
-
"\x02\
|
|
52025
|
-
"\
|
|
52026
|
-
"
|
|
52027
|
-
"\
|
|
52028
|
-
"\
|
|
52029
|
-
"\
|
|
52030
|
-
"\u0177\
|
|
52031
|
-
"\
|
|
52032
|
-
"\x02\
|
|
52033
|
-
"\
|
|
52034
|
-
"\
|
|
52035
|
-
"
|
|
52036
|
-
"\
|
|
52037
|
-
"\
|
|
52038
|
-
"\
|
|
52039
|
-
"\
|
|
52040
|
-
"\
|
|
52041
|
-
"\u0197\
|
|
52042
|
-
"\x02\u019A\u019B\x07v\x02\x02\
|
|
52043
|
-
"
|
|
52044
|
-
"\
|
|
52045
|
-
"\
|
|
52046
|
-
"\
|
|
52047
|
-
"\u01A8\
|
|
52048
|
-
"\
|
|
52049
|
-
"\x02\
|
|
52050
|
-
"\
|
|
52051
|
-
"\
|
|
52052
|
-
"\
|
|
52053
|
-
"\u01B9\
|
|
52054
|
-
"\
|
|
52055
|
-
"
|
|
52056
|
-
"\x02\x02\
|
|
52057
|
-
"\
|
|
52058
|
-
"
|
|
52059
|
-
"\
|
|
52060
|
-
"\
|
|
52061
|
-
"\x02\u01D0\u01D1\
|
|
52062
|
-
"
|
|
52063
|
-
"\
|
|
52064
|
-
"
|
|
52065
|
-
"\
|
|
52066
|
-
|
|
52067
|
-
"\x02\u01E1\u01E2
|
|
52068
|
-
|
|
52069
|
-
"
|
|
52070
|
-
"\
|
|
52071
|
-
"\u01EB\
|
|
52072
|
-
"\
|
|
52073
|
-
"\x02\u01F0\u01F1\
|
|
52074
|
-
"
|
|
52075
|
-
"\x07u\x02\x02\u01F6\u01F7\
|
|
52076
|
-
"\u01F9\
|
|
52077
|
-
"\u01FC\
|
|
52078
|
-
"\u01FE\u01FF\
|
|
52079
|
-
"\x02\
|
|
52080
|
-
"\x02\x02\u0204\u0205\
|
|
52081
|
-
"\
|
|
52082
|
-
"\
|
|
52083
|
-
"\
|
|
52084
|
-
"\
|
|
52085
|
-
"\x02\x02\u0211\u0212\
|
|
52086
|
-
"
|
|
52087
|
-
"\
|
|
52088
|
-
"\
|
|
52089
|
-
"\
|
|
52090
|
-
"
|
|
52091
|
-
"\
|
|
52092
|
-
"\
|
|
52093
|
-
"\
|
|
52094
|
-
"\x02\
|
|
52095
|
-
"\x02\x02\
|
|
52096
|
-
"\
|
|
52097
|
-
"\
|
|
52098
|
-
"\
|
|
52099
|
-
"
|
|
52100
|
-
"\
|
|
52101
|
-
"\
|
|
52102
|
-
"\
|
|
52103
|
-
"\
|
|
52104
|
-
"
|
|
52105
|
-
"\
|
|
52106
|
-
"\
|
|
52107
|
-
"\
|
|
52108
|
-
"\
|
|
52109
|
-
"
|
|
52110
|
-
"\
|
|
52111
|
-
"\
|
|
52112
|
-
"\
|
|
52113
|
-
"
|
|
52114
|
-
"\
|
|
52115
|
-
"\
|
|
52116
|
-
"\
|
|
52117
|
-
"\
|
|
52118
|
-
"
|
|
52119
|
-
"\
|
|
52120
|
-
"\
|
|
52121
|
-
"\
|
|
52122
|
-
"\
|
|
52123
|
-
"
|
|
52124
|
-
"\
|
|
52125
|
-
"\
|
|
52126
|
-
"\
|
|
52127
|
-
"\
|
|
52128
|
-
"
|
|
52129
|
-
"\
|
|
52130
|
-
"\
|
|
52131
|
-
"\
|
|
52132
|
-
"\
|
|
52133
|
-
"
|
|
52134
|
-
"\
|
|
52135
|
-
"\
|
|
52136
|
-
"\
|
|
52137
|
-
"\
|
|
52138
|
-
"\u02A1\
|
|
52139
|
-
"\
|
|
52140
|
-
"\x02\
|
|
52141
|
-
"
|
|
52142
|
-
"\
|
|
52143
|
-
"\u02AF\
|
|
52144
|
-
"\
|
|
52145
|
-
"\x02\
|
|
52146
|
-
"
|
|
52147
|
-
"\
|
|
52148
|
-
"\
|
|
52149
|
-
"\
|
|
52150
|
-
"\x02\
|
|
52151
|
-
"
|
|
52152
|
-
"\
|
|
52153
|
-
"\
|
|
52154
|
-
"\
|
|
52155
|
-
"\x02\
|
|
52156
|
-
"
|
|
52157
|
-
"\
|
|
52158
|
-
"\
|
|
52159
|
-
"\
|
|
52160
|
-
"\x02\
|
|
52161
|
-
"\
|
|
52162
|
-
"\
|
|
52163
|
-
"\
|
|
52164
|
-
"\
|
|
52165
|
-
"\x02\
|
|
52166
|
-
"\
|
|
52167
|
-
"\
|
|
52168
|
-
"\
|
|
52169
|
-
"\
|
|
52170
|
-
"
|
|
52171
|
-
"\
|
|
52172
|
-
"\
|
|
52173
|
-
"\
|
|
52174
|
-
"\
|
|
52175
|
-
"\
|
|
52176
|
-
"\x02\
|
|
52177
|
-
"\
|
|
52178
|
-
"\
|
|
52179
|
-
"\x02\x02\
|
|
52180
|
-
"\
|
|
52181
|
-
"\
|
|
52182
|
-
"\
|
|
52183
|
-
"\
|
|
52184
|
-
"\
|
|
52185
|
-
"\
|
|
52186
|
-
"\
|
|
52187
|
-
"\x02\
|
|
52188
|
-
"\
|
|
52189
|
-
"\
|
|
52190
|
-
"\
|
|
52191
|
-
"\
|
|
52192
|
-
"\u032C\
|
|
52193
|
-
"\x02\x02\u032F\
|
|
52194
|
-
"\
|
|
52195
|
-
"\
|
|
52196
|
-
"\x02\
|
|
52197
|
-
"\
|
|
52198
|
-
"\
|
|
52199
|
-
"\
|
|
52200
|
-
"
|
|
52201
|
-
"\
|
|
52202
|
-
"\
|
|
52203
|
-
"\x02\x02\x02\u0348\
|
|
52204
|
-
"\
|
|
52205
|
-
"\
|
|
52206
|
-
"\x03\x02"
|
|
52908
|
+
"\x02r\xE3\x02s\xE5\x02t\x03\x02\t\x04\x02$$^^\x03\x022;\x04\x02^^bb\x07" +
|
|
52909
|
+
"\x02&&11C\\aac|\x07\x02&&1;C\\aac|\x05\x02\v\f\x0F\x0F\"\"\x04\x02\f\f" +
|
|
52910
|
+
"\x0F\x0F\x02\u0369\x02\x03\x03\x02\x02\x02\x02\x05\x03\x02\x02\x02\x02" +
|
|
52911
|
+
"\x07\x03\x02\x02\x02\x02\t\x03\x02\x02\x02\x02\v\x03\x02\x02\x02\x02\r" +
|
|
52912
|
+
"\x03\x02\x02\x02\x02\x0F\x03\x02\x02\x02\x02\x11\x03\x02\x02\x02\x02\x13" +
|
|
52913
|
+
"\x03\x02\x02\x02\x02\x15\x03\x02\x02\x02\x02\x17\x03\x02\x02\x02\x02\x19" +
|
|
52914
|
+
"\x03\x02\x02\x02\x02\x1B\x03\x02\x02\x02\x02\x1D\x03\x02\x02\x02\x02\x1F" +
|
|
52915
|
+
"\x03\x02\x02\x02\x02!\x03\x02\x02\x02\x02#\x03\x02\x02\x02\x02%\x03\x02" +
|
|
52916
|
+
"\x02\x02\x02\'\x03\x02\x02\x02\x02)\x03\x02\x02\x02\x02+\x03\x02\x02\x02" +
|
|
52917
|
+
"\x02-\x03\x02\x02\x02\x02/\x03\x02\x02\x02\x021\x03\x02\x02\x02\x023\x03" +
|
|
52918
|
+
"\x02\x02\x02\x025\x03\x02\x02\x02\x027\x03\x02\x02\x02\x029\x03\x02\x02" +
|
|
52919
|
+
"\x02\x02;\x03\x02\x02\x02\x02=\x03\x02\x02\x02\x02?\x03\x02\x02\x02\x02" +
|
|
52920
|
+
"A\x03\x02\x02\x02\x02C\x03\x02\x02\x02\x02E\x03\x02\x02\x02\x02G\x03\x02" +
|
|
52921
|
+
"\x02\x02\x02I\x03\x02\x02\x02\x02K\x03\x02\x02\x02\x02M\x03\x02\x02\x02" +
|
|
52922
|
+
"\x02O\x03\x02\x02\x02\x02Q\x03\x02\x02\x02\x02S\x03\x02\x02\x02\x02U\x03" +
|
|
52923
|
+
"\x02\x02\x02\x02W\x03\x02\x02\x02\x02Y\x03\x02\x02\x02\x02[\x03\x02\x02" +
|
|
52924
|
+
"\x02\x02]\x03\x02\x02\x02\x02_\x03\x02\x02\x02\x02a\x03\x02\x02\x02\x02" +
|
|
52925
|
+
"c\x03\x02\x02\x02\x02e\x03\x02\x02\x02\x02g\x03\x02\x02\x02\x02i\x03\x02" +
|
|
52926
|
+
"\x02\x02\x02k\x03\x02\x02\x02\x02m\x03\x02\x02\x02\x02o\x03\x02\x02\x02" +
|
|
52927
|
+
"\x02q\x03\x02\x02\x02\x02s\x03\x02\x02\x02\x02u\x03\x02\x02\x02\x02w\x03" +
|
|
52928
|
+
"\x02\x02\x02\x02y\x03\x02\x02\x02\x02{\x03\x02\x02\x02\x02}\x03\x02\x02" +
|
|
52929
|
+
"\x02\x02\x7F\x03\x02\x02\x02\x02\x81\x03\x02\x02\x02\x02\x83\x03\x02\x02" +
|
|
52930
|
+
"\x02\x02\x85\x03\x02\x02\x02\x02\x87\x03\x02\x02\x02\x02\x89\x03\x02\x02" +
|
|
52931
|
+
"\x02\x02\x8B\x03\x02\x02\x02\x02\x8D\x03\x02\x02\x02\x02\x8F\x03\x02\x02" +
|
|
52932
|
+
"\x02\x02\x91\x03\x02\x02\x02\x02\x93\x03\x02\x02\x02\x02\x95\x03\x02\x02" +
|
|
52933
|
+
"\x02\x02\x97\x03\x02\x02\x02\x02\x99\x03\x02\x02\x02\x02\x9B\x03\x02\x02" +
|
|
52934
|
+
"\x02\x02\x9D\x03\x02\x02\x02\x02\x9F\x03\x02\x02\x02\x02\xA1\x03\x02\x02" +
|
|
52935
|
+
"\x02\x02\xA3\x03\x02\x02\x02\x02\xA5\x03\x02\x02\x02\x02\xA7\x03\x02\x02" +
|
|
52936
|
+
"\x02\x02\xA9\x03\x02\x02\x02\x02\xAB\x03\x02\x02\x02\x02\xAD\x03\x02\x02" +
|
|
52937
|
+
"\x02\x02\xAF\x03\x02\x02\x02\x02\xB1\x03\x02\x02\x02\x02\xB3\x03\x02\x02" +
|
|
52938
|
+
"\x02\x02\xB5\x03\x02\x02\x02\x02\xB7\x03\x02\x02\x02\x02\xB9\x03\x02\x02" +
|
|
52939
|
+
"\x02\x02\xBB\x03\x02\x02\x02\x02\xBD\x03\x02\x02\x02\x02\xBF\x03\x02\x02" +
|
|
52940
|
+
"\x02\x02\xC1\x03\x02\x02\x02\x02\xC3\x03\x02\x02\x02\x02\xC5\x03\x02\x02" +
|
|
52941
|
+
"\x02\x02\xC7\x03\x02\x02\x02\x02\xC9\x03\x02\x02\x02\x02\xCB\x03\x02\x02" +
|
|
52942
|
+
"\x02\x02\xCD\x03\x02\x02\x02\x02\xCF\x03\x02\x02\x02\x02\xD1\x03\x02\x02" +
|
|
52943
|
+
"\x02\x02\xD3\x03\x02\x02\x02\x02\xD5\x03\x02\x02\x02\x02\xD7\x03\x02\x02" +
|
|
52944
|
+
"\x02\x02\xD9\x03\x02\x02\x02\x02\xDB\x03\x02\x02\x02\x02\xDD\x03\x02\x02" +
|
|
52945
|
+
"\x02\x02\xDF\x03\x02\x02\x02\x02\xE1\x03\x02\x02\x02\x02\xE3\x03\x02\x02" +
|
|
52946
|
+
"\x02\x02\xE5\x03\x02\x02\x02\x03\xE7\x03\x02\x02\x02\x05\xEC\x03\x02\x02" +
|
|
52947
|
+
"\x02\x07\xEE\x03\x02\x02\x02\t\xF0\x03\x02\x02\x02\v\xF3\x03\x02\x02\x02" +
|
|
52948
|
+
"\r\xFE\x03\x02\x02\x02\x0F\u0102\x03\x02\x02\x02\x11\u010B\x03\x02\x02" +
|
|
52949
|
+
"\x02\x13\u010F\x03\x02\x02\x02\x15\u0111\x03\x02\x02\x02\x17\u0113\x03" +
|
|
52950
|
+
"\x02\x02\x02\x19\u011B\x03\x02\x02\x02\x1B\u011E\x03\x02\x02\x02\x1D\u0120" +
|
|
52951
|
+
"\x03\x02\x02\x02\x1F\u0125\x03\x02\x02\x02!\u012A\x03\x02\x02\x02#\u012E" +
|
|
52952
|
+
"\x03\x02\x02\x02%\u0132\x03\x02\x02\x02\'\u0136\x03\x02\x02\x02)\u013B" +
|
|
52953
|
+
"\x03\x02\x02\x02+\u0141\x03\x02\x02\x02-\u0146\x03\x02\x02\x02/\u0148" +
|
|
52954
|
+
"\x03\x02\x02\x021\u014E\x03\x02\x02\x023\u0153\x03\x02\x02\x025\u0155" +
|
|
52955
|
+
"\x03\x02\x02\x027\u0159\x03\x02\x02\x029\u015B\x03\x02\x02\x02;\u015D" +
|
|
52956
|
+
"\x03\x02\x02\x02=\u0164\x03\x02\x02\x02?\u0168\x03\x02\x02\x02A\u016E" +
|
|
52957
|
+
"\x03\x02\x02\x02C\u0172\x03\x02\x02\x02E\u0176\x03\x02\x02\x02G\u017E" +
|
|
52958
|
+
"\x03\x02\x02\x02I\u0183\x03\x02\x02\x02K\u0188\x03\x02\x02\x02M\u018D" +
|
|
52959
|
+
"\x03\x02\x02\x02O\u018F\x03\x02\x02\x02Q\u0192\x03\x02\x02\x02S\u0196" +
|
|
52960
|
+
"\x03\x02\x02\x02U\u019C\x03\x02\x02\x02W\u01A4\x03\x02\x02\x02Y\u01B0" +
|
|
52961
|
+
"\x03\x02\x02\x02[\u01B8\x03\x02\x02\x02]\u01BD\x03\x02\x02\x02_\u01C4" +
|
|
52962
|
+
"\x03\x02\x02\x02a\u01CA\x03\x02\x02\x02c\u01CC\x03\x02\x02\x02e\u01D0" +
|
|
52963
|
+
"\x03\x02\x02\x02g\u01DB\x03\x02\x02\x02i\u01E5\x03\x02\x02\x02k\u01F0" +
|
|
52964
|
+
"\x03\x02\x02\x02m\u01FD\x03\x02\x02\x02o\u0202\x03\x02\x02\x02q\u0206" +
|
|
52965
|
+
"\x03\x02\x02\x02s\u020F\x03\x02\x02\x02u\u0211\x03\x02\x02\x02w\u021B" +
|
|
52966
|
+
"\x03\x02\x02\x02y\u0226\x03\x02\x02\x02{\u0228\x03\x02\x02\x02}\u0232" +
|
|
52967
|
+
"\x03\x02\x02\x02\x7F\u0234\x03\x02\x02\x02\x81\u023A\x03\x02\x02\x02\x83" +
|
|
52968
|
+
"\u0242\x03\x02\x02\x02\x85\u0248\x03\x02\x02\x02\x87\u0256\x03\x02\x02" +
|
|
52969
|
+
"\x02\x89\u0258\x03\x02\x02\x02\x8B\u025F\x03\x02\x02\x02\x8D\u026A\x03" +
|
|
52970
|
+
"\x02\x02\x02\x8F\u0270\x03\x02\x02\x02\x91\u0277\x03\x02\x02\x02\x93\u027C" +
|
|
52971
|
+
"\x03\x02\x02\x02\x95\u0289\x03\x02\x02\x02\x97\u028B\x03\x02\x02\x02\x99" +
|
|
52972
|
+
"\u028E\x03\x02\x02\x02\x9B\u0290\x03\x02\x02\x02\x9D\u0293\x03\x02\x02" +
|
|
52973
|
+
"\x02\x9F\u0296\x03\x02\x02\x02\xA1\u0298\x03\x02\x02\x02\xA3\u029A\x03" +
|
|
52974
|
+
"\x02\x02\x02\xA5\u029C\x03\x02\x02\x02\xA7\u029E\x03\x02\x02\x02\xA9\u02A0" +
|
|
52975
|
+
"\x03\x02\x02\x02\xAB\u02A2\x03\x02\x02\x02\xAD\u02A7\x03\x02\x02\x02\xAF" +
|
|
52976
|
+
"\u02AD\x03\x02\x02\x02\xB1\u02B2\x03\x02\x02\x02\xB3\u02B7\x03\x02\x02" +
|
|
52977
|
+
"\x02\xB5\u02BF\x03\x02\x02\x02\xB7\u02C2\x03\x02\x02\x02\xB9\u02C5\x03" +
|
|
52978
|
+
"\x02\x02\x02\xBB\u02CB\x03\x02\x02\x02\xBD\u02D2\x03\x02\x02\x02\xBF\u02D8" +
|
|
52979
|
+
"\x03\x02\x02\x02\xC1\u02DA\x03\x02\x02\x02\xC3\u02DC\x03\x02\x02\x02\xC5" +
|
|
52980
|
+
"\u02E2\x03\x02\x02\x02\xC7\u02E4\x03\x02\x02\x02\xC9\u02E7\x03\x02\x02" +
|
|
52981
|
+
"\x02\xCB\u02EA\x03\x02\x02\x02\xCD\u02ED\x03\x02\x02\x02\xCF\u02F1\x03" +
|
|
52982
|
+
"\x02\x02\x02\xD1\u02F5\x03\x02\x02\x02\xD3\u02FC\x03\x02\x02\x02\xD5\u02FE" +
|
|
52983
|
+
"\x03\x02\x02\x02\xD7\u0301\x03\x02\x02\x02\xD9\u030D\x03\x02\x02\x02\xDB" +
|
|
52984
|
+
"\u0317\x03\x02\x02\x02\xDD\u031F\x03\x02\x02\x02\xDF\u0325\x03\x02\x02" +
|
|
52985
|
+
"\x02\xE1\u0330\x03\x02\x02\x02\xE3\u033B\x03\x02\x02\x02\xE5\u0349\x03" +
|
|
52986
|
+
"\x02\x02\x02\xE7\xE8\x07q\x02\x02\xE8\xE9\x07r\x02\x02\xE9\xEA\x07g\x02" +
|
|
52987
|
+
"\x02\xEA\xEB\x07p\x02\x02\xEB\x04\x03\x02\x02\x02\xEC\xED\x07]\x02\x02" +
|
|
52988
|
+
"\xED\x06\x03\x02\x02\x02\xEE\xEF\x07_\x02\x02\xEF\b\x03\x02\x02\x02\xF0" +
|
|
52989
|
+
"\xF1\x07c\x02\x02\xF1\xF2\x07u\x02\x02\xF2\n\x03\x02\x02\x02\xF3\xF9\x07" +
|
|
52990
|
+
"$\x02\x02\xF4\xF8\n\x02\x02\x02\xF5\xF6\x07^\x02\x02\xF6\xF8\v\x02\x02" +
|
|
52991
|
+
"\x02\xF7\xF4\x03\x02\x02\x02\xF7\xF5\x03\x02\x02\x02\xF8\xFB\x03\x02\x02" +
|
|
52992
|
+
"\x02\xF9\xF7\x03\x02\x02\x02\xF9\xFA\x03\x02\x02\x02\xFA\xFC\x03\x02\x02" +
|
|
52993
|
+
"\x02\xFB\xF9\x03\x02\x02\x02\xFC\xFD\x07$\x02\x02\xFD\f\x03\x02\x02\x02" +
|
|
52994
|
+
"\xFE\xFF\x07x\x02\x02\xFF\u0100\x07c\x02\x02\u0100\u0101\x07t\x02\x02" +
|
|
52995
|
+
"\u0101\x0E\x03\x02\x02\x02\u0102\u0103\x07c\x02\x02\u0103\u0104\x07d\x02" +
|
|
52996
|
+
"\x02\u0104\u0105\x07u\x02\x02\u0105\u0106\x07v\x02\x02\u0106\u0107\x07" +
|
|
52997
|
+
"t\x02\x02\u0107\u0108\x07c\x02\x02\u0108\u0109\x07e\x02\x02\u0109\u010A" +
|
|
52998
|
+
"\x07v\x02\x02\u010A\x10\x03\x02\x02\x02\u010B\u010C\x07u\x02\x02\u010C" +
|
|
52999
|
+
"\u010D\x07k\x02\x02\u010D\u010E\x07i\x02\x02\u010E\x12\x03\x02\x02\x02" +
|
|
53000
|
+
"\u010F\u0110\x07}\x02\x02\u0110\x14\x03\x02\x02\x02\u0111\u0112\x07\x7F" +
|
|
53001
|
+
"\x02\x02\u0112\x16\x03\x02\x02\x02\u0113\u0114\x07g\x02\x02\u0114\u0115" +
|
|
53002
|
+
"\x07z\x02\x02\u0115\u0116\x07v\x02\x02\u0116\u0117\x07g\x02\x02\u0117" +
|
|
53003
|
+
"\u0118\x07p\x02\x02\u0118\u0119\x07f\x02\x02\u0119\u011A\x07u\x02\x02" +
|
|
53004
|
+
"\u011A\x18\x03\x02\x02\x02\u011B\u011C\x07k\x02\x02\u011C\u011D\x07p\x02" +
|
|
53005
|
+
"\x02\u011D\x1A\x03\x02\x02\x02\u011E\u011F\x07-\x02\x02\u011F\x1C\x03" +
|
|
53006
|
+
"\x02\x02\x02\u0120\u0121\x07n\x02\x02\u0121\u0122\x07q\x02\x02\u0122\u0123" +
|
|
53007
|
+
"\x07p\x02\x02\u0123\u0124\x07g\x02\x02\u0124\x1E\x03\x02\x02\x02\u0125" +
|
|
53008
|
+
"\u0126\x07u\x02\x02\u0126\u0127\x07q\x02\x02\u0127\u0128\x07o\x02\x02" +
|
|
53009
|
+
"\u0128\u0129\x07g\x02\x02\u0129 \x03\x02\x02\x02\u012A\u012B\x07q\x02" +
|
|
53010
|
+
"\x02\u012B\u012C\x07p\x02\x02\u012C\u012D\x07g\x02\x02\u012D\"\x03\x02" +
|
|
53011
|
+
"\x02\x02\u012E\u012F\x07v\x02\x02\u012F\u0130\x07y\x02\x02\u0130\u0131" +
|
|
53012
|
+
"\x07q\x02\x02\u0131$\x03\x02\x02\x02\u0132\u0133\x07u\x02\x02\u0133\u0134" +
|
|
53013
|
+
"\x07g\x02\x02\u0134\u0135\x07v\x02\x02\u0135&\x03\x02\x02\x02\u0136\u0137" +
|
|
53014
|
+
"\x07h\x02\x02\u0137\u0138\x07w\x02\x02\u0138\u0139\x07p\x02\x02\u0139" +
|
|
53015
|
+
"\u013A\x07e\x02\x02\u013A(\x03\x02\x02\x02\u013B\u013C\x07r\x02\x02\u013C" +
|
|
53016
|
+
"\u013D\x07h\x02\x02\u013D\u013E\x07w\x02\x02\u013E\u013F\x07p\x02\x02" +
|
|
53017
|
+
"\u013F\u0140\x07e\x02\x02\u0140*\x03\x02\x02\x02\u0141\u0142\x07f\x02" +
|
|
53018
|
+
"\x02\u0142\u0143\x07k\x02\x02\u0143\u0144\x07u\x02\x02\u0144\u0145\x07" +
|
|
53019
|
+
"l\x02\x02\u0145,\x03\x02\x02\x02\u0146\u0147\x07<\x02\x02\u0147.\x03\x02" +
|
|
53020
|
+
"\x02\x02\u0148\u0149\x07y\x02\x02\u0149\u014A\x07j\x02\x02\u014A\u014B" +
|
|
53021
|
+
"\x07g\x02\x02\u014B\u014C\x07c\x02\x02\u014C\u014D\x07v\x02\x02\u014D" +
|
|
53022
|
+
"0\x03\x02\x02\x02\u014E\u014F\x07r\x02\x02\u014F\u0150\x07t\x02\x02\u0150" +
|
|
53023
|
+
"\u0151\x07g\x02\x02\u0151\u0152\x07f\x02\x02\u01522\x03\x02\x02\x02\u0153" +
|
|
53024
|
+
"\u0154\x070\x02\x02\u01544\x03\x02\x02\x02\u0155\u0156\x07h\x02\x02\u0156" +
|
|
53025
|
+
"\u0157\x07w\x02\x02\u0157\u0158\x07p\x02\x02\u01586\x03\x02\x02\x02\u0159" +
|
|
53026
|
+
"\u015A\x07*\x02\x02\u015A8\x03\x02\x02\x02\u015B\u015C\x07+\x02\x02\u015C" +
|
|
53027
|
+
":\x03\x02\x02\x02\u015D\u015E\x07c\x02\x02\u015E\u015F\x07u\x02\x02\u015F" +
|
|
53028
|
+
"\u0160\x07u\x02\x02\u0160\u0161\x07g\x02\x02\u0161\u0162\x07t\x02\x02" +
|
|
53029
|
+
"\u0162\u0163\x07v\x02\x02\u0163<\x03\x02\x02\x02\u0164\u0165\x07t\x02" +
|
|
53030
|
+
"\x02\u0165\u0166\x07w\x02\x02\u0166\u0167\x07p\x02\x02\u0167>\x03\x02" +
|
|
53031
|
+
"\x02\x02\u0168\u0169\x07e\x02\x02\u0169\u016A\x07j\x02\x02\u016A\u016B" +
|
|
53032
|
+
"\x07g\x02\x02\u016B\u016C\x07e\x02\x02\u016C\u016D\x07m\x02\x02\u016D" +
|
|
53033
|
+
"@\x03\x02\x02\x02\u016E\u016F\x07h\x02\x02\u016F\u0170\x07q\x02\x02\u0170" +
|
|
53034
|
+
"\u0171\x07t\x02\x02\u0171B\x03\x02\x02\x02\u0172\u0173\x07d\x02\x02\u0173" +
|
|
53035
|
+
"\u0174\x07w\x02\x02\u0174\u0175\x07v\x02\x02\u0175D\x03\x02\x02\x02\u0176" +
|
|
53036
|
+
"\u0177\x07g\x02\x02\u0177\u0178\x07z\x02\x02\u0178\u0179\x07c\x02\x02" +
|
|
53037
|
+
"\u0179\u017A\x07e\x02\x02\u017A\u017B\x07v\x02\x02\u017B\u017C\x07n\x02" +
|
|
53038
|
+
"\x02\u017C\u017D\x07{\x02\x02\u017DF\x03\x02\x02\x02\u017E\u017F\x07p" +
|
|
53039
|
+
"\x02\x02\u017F\u0180\x07q\x02\x02\u0180\u0181\x07p\x02\x02\u0181\u0182" +
|
|
53040
|
+
"\x07g\x02\x02\u0182H\x03\x02\x02\x02\u0183\u0184\x07w\x02\x02\u0184\u0185" +
|
|
53041
|
+
"\x07p\x02\x02\u0185\u0186\x07k\x02\x02\u0186\u0187\x07x\x02\x02\u0187" +
|
|
53042
|
+
"J\x03\x02\x02\x02\u0188\u0189\x07k\x02\x02\u0189\u018A\x07f\x02\x02\u018A" +
|
|
53043
|
+
"\u018B\x07g\x02\x02\u018B\u018C\x07p\x02\x02\u018CL\x03\x02\x02\x02\u018D" +
|
|
53044
|
+
"\u018E\x07/\x02\x02\u018EN\x03\x02\x02\x02\u018F\u0190\x07k\x02\x02\u0190" +
|
|
53045
|
+
"\u0191\x07u\x02\x02\u0191P\x03\x02\x02\x02\u0192\u0193\x07u\x02\x02\u0193" +
|
|
53046
|
+
"\u0194\x07c\x02\x02\u0194\u0195\x07v\x02\x02\u0195R\x03\x02\x02\x02\u0196" +
|
|
53047
|
+
"\u0197\x07w\x02\x02\u0197\u0198\x07p\x02\x02\u0198\u0199\x07u\x02\x02" +
|
|
53048
|
+
"\u0199\u019A\x07c\x02\x02\u019A\u019B\x07v\x02\x02\u019BT\x03\x02\x02" +
|
|
53049
|
+
"\x02\u019C\u019D\x07v\x02\x02\u019D\u019E\x07j\x02\x02\u019E\u019F\x07" +
|
|
53050
|
+
"g\x02\x02\u019F\u01A0\x07q\x02\x02\u01A0\u01A1\x07t\x02\x02\u01A1\u01A2" +
|
|
53051
|
+
"\x07g\x02\x02\u01A2\u01A3\x07o\x02\x02\u01A3V\x03\x02\x02\x02\u01A4\u01A5" +
|
|
53052
|
+
"\x07h\x02\x02\u01A5\u01A6\x07q\x02\x02\u01A6\u01A7\x07t\x02\x02\u01A7" +
|
|
53053
|
+
"\u01A8\x07i\x02\x02\u01A8\u01A9\x07g\x02\x02\u01A9\u01AA\x07a\x02\x02" +
|
|
53054
|
+
"\u01AA\u01AB\x07g\x02\x02\u01AB\u01AC\x07t\x02\x02\u01AC\u01AD\x07t\x02" +
|
|
53055
|
+
"\x02\u01AD\u01AE\x07q\x02\x02\u01AE\u01AF\x07t\x02\x02\u01AFX\x03\x02" +
|
|
53056
|
+
"\x02\x02\u01B0\u01B1\x07e\x02\x02\u01B1\u01B2\x07j\x02\x02\u01B2\u01B3" +
|
|
53057
|
+
"\x07g\x02\x02\u01B3\u01B4\x07e\x02\x02\u01B4\u01B5\x07m\x02\x02\u01B5" +
|
|
53058
|
+
"\u01B6\x07g\x02\x02\u01B6\u01B7\x07f\x02\x02\u01B7Z\x03\x02\x02\x02\u01B8" +
|
|
53059
|
+
"\u01B9\x07v\x02\x02\u01B9\u01BA\x07g\x02\x02\u01BA\u01BB\x07u\x02\x02" +
|
|
53060
|
+
"\u01BB\u01BC\x07v\x02\x02\u01BC\\\x03\x02\x02\x02\u01BD\u01BE\x07g\x02" +
|
|
53061
|
+
"\x02\u01BE\u01BF\x07z\x02\x02\u01BF\u01C0\x07r\x02\x02\u01C0\u01C1\x07" +
|
|
53062
|
+
"g\x02\x02\u01C1\u01C2\x07e\x02\x02\u01C2\u01C3\x07v\x02\x02\u01C3^\x03" +
|
|
53063
|
+
"\x02\x02\x02\u01C4\u01C5\x07u\x02\x02\u01C5\u01C6\x07w\x02\x02\u01C6\u01C7" +
|
|
53064
|
+
"\x07k\x02\x02\u01C7\u01C8\x07v\x02\x02\u01C8\u01C9\x07g\x02\x02\u01C9" +
|
|
53065
|
+
"`\x03\x02\x02\x02\u01CA\u01CB\x07~\x02\x02\u01CBb\x03\x02\x02\x02\u01CC" +
|
|
53066
|
+
"\u01CD\x07c\x02\x02\u01CD\u01CE\x07n\x02\x02\u01CE\u01CF\x07n\x02\x02" +
|
|
53067
|
+
"\u01CFd\x03\x02\x02\x02\u01D0\u01D1\x07u\x02\x02\u01D1\u01D2\x07w\x02" +
|
|
53068
|
+
"\x02\u01D2\u01D3\x07h\x02\x02\u01D3\u01D4\x07h\x02\x02\u01D4\u01D5\x07" +
|
|
53069
|
+
"k\x02\x02\u01D5\u01D6\x07e\x02\x02\u01D6\u01D7\x07k\x02\x02\u01D7\u01D8" +
|
|
53070
|
+
"\x07g\x02\x02\u01D8\u01D9\x07p\x02\x02\u01D9\u01DA\x07v\x02\x02\u01DA" +
|
|
53071
|
+
"f\x03\x02\x02\x02\u01DB\u01DC\x07p\x02";
|
|
53072
|
+
ForgeLexer._serializedATNSegment1 = "\x02\u01DC\u01DD\x07g\x02\x02\u01DD\u01DE\x07e\x02\x02\u01DE\u01DF\x07" +
|
|
53073
|
+
"g\x02\x02\u01DF\u01E0\x07u\x02\x02\u01E0\u01E1\x07u\x02\x02\u01E1\u01E2" +
|
|
53074
|
+
"\x07c\x02\x02\u01E2\u01E3\x07t\x02\x02\u01E3\u01E4\x07{\x02\x02\u01E4" +
|
|
53075
|
+
"h\x03\x02\x02\x02\u01E5\u01E6\x07e\x02\x02\u01E6\u01E7\x07q\x02\x02\u01E7" +
|
|
53076
|
+
"\u01E8\x07p\x02\x02\u01E8\u01E9\x07u\x02\x02\u01E9\u01EA\x07k\x02\x02" +
|
|
53077
|
+
"\u01EA\u01EB\x07u\x02\x02\u01EB\u01EC\x07v\x02\x02\u01EC\u01ED\x07g\x02" +
|
|
53078
|
+
"\x02\u01ED\u01EE\x07p\x02\x02\u01EE\u01EF\x07v\x02\x02\u01EFj\x03\x02" +
|
|
53079
|
+
"\x02\x02\u01F0\u01F1\x07k\x02\x02\u01F1\u01F2\x07p\x02\x02\u01F2\u01F3" +
|
|
53080
|
+
"\x07e\x02\x02\u01F3\u01F4\x07q\x02\x02\u01F4\u01F5\x07p\x02\x02\u01F5" +
|
|
53081
|
+
"\u01F6\x07u\x02\x02\u01F6\u01F7\x07k\x02\x02\u01F7\u01F8\x07u\x02\x02" +
|
|
53082
|
+
"\u01F8\u01F9\x07v\x02\x02\u01F9\u01FA\x07g\x02\x02\u01FA\u01FB\x07p\x02" +
|
|
53083
|
+
"\x02\u01FB\u01FC\x07v\x02\x02\u01FCl\x03\x02\x02\x02\u01FD\u01FE\x07y" +
|
|
53084
|
+
"\x02\x02\u01FE\u01FF\x07k\x02\x02\u01FF\u0200\x07v\x02\x02\u0200\u0201" +
|
|
53085
|
+
"\x07j\x02\x02\u0201n\x03\x02\x02\x02\u0202\u0203\x07n\x02\x02\u0203\u0204" +
|
|
53086
|
+
"\x07g\x02\x02\u0204\u0205\x07v\x02\x02\u0205p\x03\x02\x02\x02\u0206\u0207" +
|
|
53087
|
+
"\x07d\x02\x02\u0207\u0208\x07k\x02\x02\u0208\u0209\x07p\x02\x02\u0209" +
|
|
53088
|
+
"\u020A\x07f\x02\x02\u020Ar\x03\x02\x02\x02\u020B\u020C\x07~\x02\x02\u020C" +
|
|
53089
|
+
"\u0210\x07~\x02\x02\u020D\u020E\x07q\x02\x02\u020E\u0210\x07t\x02\x02" +
|
|
53090
|
+
"\u020F\u020B\x03\x02\x02\x02\u020F\u020D\x03\x02\x02\x02\u0210t\x03\x02" +
|
|
53091
|
+
"\x02\x02\u0211\u0212\x07z\x02\x02\u0212\u0213\x07q\x02\x02\u0213\u0214" +
|
|
53092
|
+
"\x07t\x02\x02\u0214v\x03\x02\x02\x02\u0215\u0216\x07>\x02\x02\u0216\u0217" +
|
|
53093
|
+
"\x07?\x02\x02\u0217\u021C\x07@\x02\x02\u0218\u0219\x07k\x02\x02\u0219" +
|
|
53094
|
+
"\u021A\x07h\x02\x02\u021A\u021C\x07h\x02\x02\u021B\u0215\x03\x02\x02\x02" +
|
|
53095
|
+
"\u021B\u0218\x03\x02\x02\x02\u021Cx\x03\x02\x02\x02\u021D\u021E\x07k\x02" +
|
|
53096
|
+
"\x02\u021E\u021F\x07o\x02\x02\u021F\u0220\x07r\x02\x02\u0220\u0221\x07" +
|
|
53097
|
+
"n\x02\x02\u0221\u0222\x07k\x02\x02\u0222\u0223\x07g\x02\x02\u0223\u0227" +
|
|
53098
|
+
"\x07u\x02\x02\u0224\u0225\x07?\x02\x02\u0225\u0227\x07@\x02\x02\u0226" +
|
|
53099
|
+
"\u021D\x03\x02\x02\x02\u0226\u0224\x03\x02\x02\x02\u0227z\x03\x02\x02" +
|
|
53100
|
+
"\x02\u0228\u0229\x07g\x02\x02\u0229\u022A\x07n\x02\x02\u022A\u022B\x07" +
|
|
53101
|
+
"u\x02\x02\u022B\u022C\x07g\x02\x02\u022C|\x03\x02\x02\x02\u022D\u022E" +
|
|
53102
|
+
"\x07(\x02\x02\u022E\u0233\x07(\x02\x02\u022F\u0230\x07c\x02\x02\u0230" +
|
|
53103
|
+
"\u0231\x07p\x02\x02\u0231\u0233\x07f\x02\x02\u0232\u022D\x03\x02\x02\x02" +
|
|
53104
|
+
"\u0232\u022F\x03\x02\x02\x02\u0233~\x03\x02\x02\x02\u0234\u0235\x07w\x02" +
|
|
53105
|
+
"\x02\u0235\u0236\x07p\x02\x02\u0236\u0237\x07v\x02\x02\u0237\u0238\x07" +
|
|
53106
|
+
"k\x02\x02\u0238\u0239\x07n\x02\x02\u0239\x80\x03\x02\x02\x02\u023A\u023B" +
|
|
53107
|
+
"\x07t\x02\x02\u023B\u023C\x07g\x02\x02\u023C\u023D\x07n\x02\x02\u023D" +
|
|
53108
|
+
"\u023E\x07g\x02\x02\u023E\u023F\x07c\x02\x02\u023F\u0240\x07u\x02\x02" +
|
|
53109
|
+
"\u0240\u0241\x07g\x02\x02\u0241\x82\x03\x02\x02\x02\u0242\u0243\x07u\x02" +
|
|
53110
|
+
"\x02\u0243\u0244\x07k\x02\x02\u0244\u0245\x07p\x02\x02\u0245\u0246\x07" +
|
|
53111
|
+
"e\x02\x02\u0246\u0247\x07g\x02\x02\u0247\x84\x03\x02\x02\x02\u0248\u0249" +
|
|
53112
|
+
"\x07v\x02\x02\u0249\u024A\x07t\x02\x02\u024A\u024B\x07k\x02\x02\u024B" +
|
|
53113
|
+
"\u024C\x07i\x02\x02\u024C\u024D\x07i\x02\x02\u024D\u024E\x07g\x02\x02" +
|
|
53114
|
+
"\u024E\u024F\x07t\x02\x02\u024F\u0250\x07g\x02\x02\u0250\u0251\x07f\x02" +
|
|
53115
|
+
"\x02\u0251\x86\x03\x02\x02\x02\u0252\u0257\x07#\x02\x02\u0253\u0254\x07" +
|
|
53116
|
+
"p\x02\x02\u0254\u0255\x07q\x02\x02\u0255\u0257\x07v\x02\x02\u0256\u0252" +
|
|
53117
|
+
"\x03\x02\x02\x02\u0256\u0253\x03\x02\x02\x02\u0257\x88\x03\x02\x02\x02" +
|
|
53118
|
+
"\u0258\u0259\x07c\x02\x02\u0259\u025A\x07n\x02\x02\u025A\u025B\x07y\x02" +
|
|
53119
|
+
"\x02\u025B\u025C\x07c\x02\x02\u025C\u025D\x07{\x02\x02\u025D\u025E\x07" +
|
|
53120
|
+
"u\x02\x02\u025E\x8A\x03\x02\x02\x02\u025F\u0260\x07g\x02\x02\u0260\u0261" +
|
|
53121
|
+
"\x07x\x02\x02\u0261\u0262\x07g\x02\x02\u0262\u0263\x07p\x02\x02\u0263" +
|
|
53122
|
+
"\u0264\x07v\x02\x02\u0264\u0265\x07w\x02\x02\u0265\u0266\x07c\x02\x02" +
|
|
53123
|
+
"\u0266\u0267\x07n\x02\x02\u0267\u0268\x07n\x02\x02\u0268\u0269\x07{\x02" +
|
|
53124
|
+
"\x02\u0269\x8C\x03\x02\x02\x02\u026A\u026B\x07c\x02\x02\u026B\u026C\x07" +
|
|
53125
|
+
"h\x02\x02\u026C\u026D\x07v\x02\x02\u026D\u026E\x07g\x02\x02\u026E\u026F" +
|
|
53126
|
+
"\x07t\x02\x02\u026F\x8E\x03\x02\x02\x02\u0270\u0271\x07d\x02\x02\u0271" +
|
|
53127
|
+
"\u0272\x07g\x02\x02\u0272\u0273\x07h\x02\x02\u0273\u0274\x07q\x02\x02" +
|
|
53128
|
+
"\u0274\u0275\x07t\x02\x02\u0275\u0276\x07g\x02\x02\u0276\x90\x03\x02\x02" +
|
|
53129
|
+
"\x02\u0277\u0278\x07q\x02\x02\u0278\u0279\x07p\x02\x02\u0279\u027A\x07" +
|
|
53130
|
+
"e\x02\x02\u027A\u027B\x07g\x02\x02\u027B\x92\x03\x02\x02\x02\u027C\u027D" +
|
|
53131
|
+
"\x07j\x02\x02\u027D\u027E\x07k\x02\x02\u027E\u027F\x07u\x02\x02\u027F" +
|
|
53132
|
+
"\u0280\x07v\x02\x02\u0280\u0281\x07q\x02\x02\u0281\u0282\x07t\x02\x02" +
|
|
53133
|
+
"\u0282\u0283\x07k\x02\x02\u0283\u0284\x07e\x02\x02\u0284\u0285\x07c\x02" +
|
|
53134
|
+
"\x02\u0285\u0286\x07n\x02\x02\u0286\u0287\x07n\x02\x02\u0287\u0288\x07" +
|
|
53135
|
+
"{\x02\x02\u0288\x94\x03\x02\x02\x02\u0289\u028A\x07%\x02\x02\u028A\x96" +
|
|
53136
|
+
"\x03\x02\x02\x02\u028B\u028C\x07-\x02\x02\u028C\u028D\x07-\x02\x02\u028D" +
|
|
53137
|
+
"\x98\x03\x02\x02\x02\u028E\u028F\x07(\x02\x02\u028F\x9A\x03\x02\x02\x02" +
|
|
53138
|
+
"\u0290\u0291\x07>\x02\x02\u0291\u0292\x07<\x02\x02\u0292\x9C\x03\x02\x02" +
|
|
53139
|
+
"\x02\u0293\u0294\x07<\x02\x02\u0294\u0295\x07@\x02\x02\u0295\x9E\x03\x02" +
|
|
53140
|
+
"\x02\x02\u0296\u0297\x07)\x02\x02\u0297\xA0\x03\x02\x02\x02\u0298\u0299" +
|
|
53141
|
+
"\x07\x80\x02\x02\u0299\xA2\x03\x02\x02\x02\u029A\u029B\x07`\x02\x02\u029B" +
|
|
53142
|
+
"\xA4\x03\x02\x02\x02\u029C\u029D\x07,\x02\x02\u029D\xA6\x03\x02\x02\x02" +
|
|
53143
|
+
"\u029E\u029F\x07B\x02\x02\u029F\xA8\x03\x02\x02\x02\u02A0\u02A1\x07b\x02" +
|
|
53144
|
+
"\x02\u02A1\xAA\x03\x02\x02\x02\u02A2\u02A3\x07v\x02\x02\u02A3\u02A4\x07" +
|
|
53145
|
+
"j\x02\x02\u02A4\u02A5\x07k\x02\x02\u02A5\u02A6\x07u\x02\x02\u02A6\xAC" +
|
|
53146
|
+
"\x03\x02\x02\x02\u02A7\u02A8\x07u\x02\x02\u02A8\u02A9\x07g\x02\x02\u02A9" +
|
|
53147
|
+
"\u02AA\x07z\x02\x02\u02AA\u02AB\x07r\x02\x02\u02AB\u02AC\x07t\x02\x02" +
|
|
53148
|
+
"\u02AC\xAE\x03\x02\x02\x02\u02AD\u02AE\x07k\x02\x02\u02AE\u02AF\x07p\x02" +
|
|
53149
|
+
"\x02\u02AF\u02B0\x07u\x02\x02\u02B0\u02B1\x07v\x02\x02\u02B1\xB0\x03\x02" +
|
|
53150
|
+
"\x02\x02\u02B2\u02B3\x07g\x02\x02\u02B3\u02B4\x07x\x02\x02\u02B4\u02B5" +
|
|
53151
|
+
"\x07c\x02\x02\u02B5\u02B6\x07n\x02\x02\u02B6\xB2\x03\x02\x02\x02\u02B7" +
|
|
53152
|
+
"\u02B8\x07g\x02\x02\u02B8\u02B9\x07z\x02\x02\u02B9\u02BA\x07c\x02\x02" +
|
|
53153
|
+
"\u02BA\u02BB\x07o\x02\x02\u02BB\u02BC\x07r\x02\x02\u02BC\u02BD\x07n\x02" +
|
|
53154
|
+
"\x02\u02BD\u02BE\x07g\x02\x02\u02BE\xB4\x03\x02\x02\x02\u02BF\u02C0\x07" +
|
|
53155
|
+
"/\x02\x02\u02C0\u02C1\x07@\x02\x02\u02C1\xB6\x03\x02\x02\x02\u02C2\u02C3" +
|
|
53156
|
+
"\x07B\x02\x02\u02C3\u02C4\x07<\x02\x02\u02C4\xB8\x03\x02\x02\x02\u02C5" +
|
|
53157
|
+
"\u02C6\x07B\x02\x02\u02C6\u02C7\x07u\x02\x02\u02C7\u02C8\x07v\x02\x02" +
|
|
53158
|
+
"\u02C8\u02C9\x07t\x02\x02\u02C9\u02CA\x07<\x02\x02\u02CA\xBA\x03\x02\x02" +
|
|
53159
|
+
"\x02\u02CB\u02CC\x07B\x02\x02\u02CC\u02CD\x07d\x02\x02\u02CD\u02CE\x07" +
|
|
53160
|
+
"q\x02\x02\u02CE\u02CF\x07q\x02\x02\u02CF\u02D0\x07n\x02\x02\u02D0\u02D1" +
|
|
53161
|
+
"\x07<\x02\x02\u02D1\xBC\x03\x02\x02\x02\u02D2\u02D3\x07B\x02\x02\u02D3" +
|
|
53162
|
+
"\u02D4\x07p\x02\x02\u02D4\u02D5\x07w\x02\x02\u02D5\u02D6\x07o\x02\x02" +
|
|
53163
|
+
"\u02D6\u02D7\x07<\x02\x02\u02D7\xBE\x03\x02\x02\x02\u02D8\u02D9\x07?\x02" +
|
|
53164
|
+
"\x02\u02D9\xC0\x03\x02\x02\x02\u02DA\u02DB\x07>\x02\x02\u02DB\xC2\x03" +
|
|
53165
|
+
"\x02\x02\x02\u02DC\u02DD\x07@\x02\x02\u02DD\xC4\x03\x02\x02\x02\u02DE" +
|
|
53166
|
+
"\u02DF\x07>\x02\x02\u02DF\u02E3\x07?\x02\x02\u02E0\u02E1\x07?\x02\x02" +
|
|
53167
|
+
"\u02E1\u02E3\x07>\x02\x02\u02E2\u02DE\x03\x02\x02\x02\u02E2\u02E0\x03" +
|
|
53168
|
+
"\x02\x02\x02\u02E3\xC6\x03\x02\x02\x02\u02E4\u02E5\x07@\x02\x02\u02E5" +
|
|
53169
|
+
"\u02E6\x07?\x02\x02\u02E6\xC8\x03\x02\x02\x02\u02E7\u02E8\x07p\x02\x02" +
|
|
53170
|
+
"\u02E8\u02E9\x07k\x02\x02\u02E9\xCA\x03\x02\x02\x02\u02EA\u02EB\x07p\x02" +
|
|
53171
|
+
"\x02\u02EB\u02EC\x07q\x02\x02\u02EC\xCC\x03\x02\x02\x02\u02ED\u02EE\x07" +
|
|
53172
|
+
"u\x02\x02\u02EE\u02EF\x07w\x02\x02\u02EF\u02F0\x07o\x02\x02\u02F0\xCE" +
|
|
53173
|
+
"\x03\x02\x02\x02\u02F1\u02F2\x07K\x02\x02\u02F2\u02F3\x07p\x02\x02\u02F3" +
|
|
53174
|
+
"\u02F4\x07v\x02\x02\u02F4\xD0\x03\x02\x02\x02\u02F5\u02F6\x07q\x02\x02" +
|
|
53175
|
+
"\u02F6\u02F7\x07r\x02\x02\u02F7\u02F8\x07v\x02\x02\u02F8\u02F9\x07k\x02" +
|
|
53176
|
+
"\x02\u02F9\u02FA\x07q\x02\x02\u02FA\u02FB\x07p\x02\x02\u02FB\xD2\x03\x02" +
|
|
53177
|
+
"\x02\x02\u02FC\u02FD\x07.\x02\x02\u02FD\xD4\x03\x02\x02\x02\u02FE\u02FF" +
|
|
53178
|
+
"\x071\x02\x02\u02FF\xD6\x03\x02\x02\x02\u0300\u0302\t\x03\x02\x02\u0301" +
|
|
53179
|
+
"\u0300\x03\x02\x02\x02\u0302\u0303\x03\x02\x02\x02\u0303\u0301\x03\x02" +
|
|
53180
|
+
"\x02\x02\u0303\u0304\x03\x02\x02\x02\u0304\u030B\x03\x02\x02\x02\u0305" +
|
|
53181
|
+
"\u0307\x070\x02\x02\u0306\u0308\t\x03\x02\x02\u0307\u0306\x03\x02\x02" +
|
|
53182
|
+
"\x02\u0308\u0309\x03\x02\x02\x02\u0309\u0307\x03\x02\x02\x02\u0309\u030A" +
|
|
53183
|
+
"\x03\x02\x02\x02\u030A\u030C\x03\x02\x02\x02\u030B\u0305\x03\x02\x02\x02" +
|
|
53184
|
+
"\u030B\u030C\x03\x02\x02\x02\u030C\xD8\x03\x02\x02\x02\u030D\u0311\x07" +
|
|
53185
|
+
"b\x02\x02\u030E\u0312\n\x04\x02\x02\u030F\u0310\x07^\x02\x02\u0310\u0312" +
|
|
53186
|
+
"\v\x02\x02\x02\u0311\u030E\x03\x02\x02\x02\u0311\u030F\x03\x02\x02\x02" +
|
|
53187
|
+
"\u0312\u0313\x03\x02\x02\x02\u0313\u0311\x03\x02\x02\x02\u0313\u0314\x03" +
|
|
53188
|
+
"\x02\x02\x02\u0314\u0315\x03\x02\x02\x02\u0315\u0316\x07b\x02\x02\u0316" +
|
|
53189
|
+
"\xDA\x03\x02\x02\x02\u0317\u031B\t\x05\x02\x02\u0318\u031A\t\x06\x02\x02" +
|
|
53190
|
+
"\u0319\u0318\x03\x02\x02\x02\u031A\u031D\x03\x02\x02\x02\u031B\u0319\x03" +
|
|
53191
|
+
"\x02\x02\x02\u031B\u031C\x03\x02\x02\x02\u031C\xDC\x03\x02\x02\x02\u031D" +
|
|
53192
|
+
"\u031B\x03\x02\x02\x02\u031E\u0320\t\x07\x02\x02\u031F\u031E\x03\x02\x02" +
|
|
53193
|
+
"\x02\u0320\u0321\x03\x02\x02\x02\u0321\u031F\x03\x02\x02\x02\u0321\u0322" +
|
|
53194
|
+
"\x03\x02\x02\x02\u0322\u0323\x03\x02\x02\x02\u0323\u0324\bo\x02\x02\u0324" +
|
|
53195
|
+
"\xDE\x03\x02\x02\x02\u0325\u0326\x071\x02\x02\u0326\u0327\x071\x02\x02" +
|
|
53196
|
+
"\u0327\u032B\x03\x02\x02\x02\u0328\u032A\n\b\x02\x02\u0329\u0328\x03\x02" +
|
|
53197
|
+
"\x02\x02\u032A\u032D\x03\x02\x02\x02\u032B\u0329\x03\x02\x02\x02\u032B" +
|
|
53198
|
+
"\u032C\x03\x02\x02\x02\u032C\u032E\x03\x02\x02\x02\u032D\u032B\x03\x02" +
|
|
53199
|
+
"\x02\x02\u032E\u032F\bp\x03\x02\u032F\xE0\x03\x02\x02\x02\u0330\u0331" +
|
|
53200
|
+
"\x07/\x02\x02\u0331\u0332\x07/\x02\x02\u0332\u0336\x03\x02\x02\x02\u0333" +
|
|
53201
|
+
"\u0335\n\b\x02\x02\u0334\u0333\x03\x02\x02\x02\u0335\u0338\x03\x02\x02" +
|
|
53202
|
+
"\x02\u0336\u0334\x03\x02\x02\x02\u0336\u0337\x03\x02\x02\x02\u0337\u0339" +
|
|
53203
|
+
"\x03\x02\x02\x02\u0338\u0336\x03\x02\x02\x02\u0339\u033A\bq\x03\x02\u033A" +
|
|
53204
|
+
"\xE2\x03\x02\x02\x02\u033B\u033C\x071\x02\x02\u033C\u033D\x07,\x02\x02" +
|
|
53205
|
+
"\u033D\u0341\x03\x02\x02\x02\u033E\u0340\v\x02\x02\x02\u033F\u033E\x03" +
|
|
53206
|
+
"\x02\x02\x02\u0340\u0343\x03\x02\x02\x02\u0341\u0342\x03\x02\x02\x02\u0341" +
|
|
53207
|
+
"\u033F\x03\x02\x02\x02\u0342\u0344\x03\x02\x02\x02\u0343\u0341\x03\x02" +
|
|
53208
|
+
"\x02\x02\u0344\u0345\x07,\x02\x02\u0345\u0346\x071\x02\x02\u0346\u0347" +
|
|
53209
|
+
"\x03\x02\x02\x02\u0347\u0348\br\x03\x02\u0348\xE4\x03\x02\x02\x02\u0349" +
|
|
53210
|
+
"\u034A\x07%\x02\x02\u034A\u034B\x07n\x02\x02\u034B\u034C\x07c\x02\x02" +
|
|
53211
|
+
"\u034C\u034D\x07p\x02\x02\u034D\u034E\x07i\x02\x02\u034E\u0352\x03\x02" +
|
|
53212
|
+
"\x02\x02\u034F\u0351\n\b\x02\x02\u0350\u034F\x03\x02\x02\x02\u0351\u0354" +
|
|
53213
|
+
"\x03\x02\x02\x02\u0352\u0350\x03\x02\x02\x02\u0352\u0353\x03\x02\x02\x02" +
|
|
53214
|
+
"\u0353\u0355\x03\x02\x02\x02\u0354\u0352\x03\x02\x02\x02\u0355\u0356\b" +
|
|
53215
|
+
"s\x03\x02\u0356\xE6\x03\x02\x02\x02\x16\x02\xF7\xF9\u020F\u021B\u0226" +
|
|
53216
|
+
"\u0232\u0256\u02E2\u0303\u0309\u030B\u0311\u0313\u031B\u0321\u032B\u0336" +
|
|
53217
|
+
"\u0341\u0352\x04\b\x02\x02\x02\x03\x02";
|
|
52207
53218
|
ForgeLexer._serializedATN = Utils.join([
|
|
52208
53219
|
ForgeLexer._serializedATNSegment0,
|
|
52209
53220
|
ForgeLexer._serializedATNSegment1,
|
|
@@ -52222,6 +53233,7 @@ ForgeLexer._serializedATN = Utils.join([
|
|
|
52222
53233
|
|
|
52223
53234
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
52224
53235
|
exports.ForgeListenerImpl = void 0;
|
|
53236
|
+
const utils_1 = __webpack_require__(/*! ./utils */ "./src/forge-antlr/utils.ts");
|
|
52225
53237
|
const ForgeSyntaxConstructs_1 = __webpack_require__(/*! ./ForgeSyntaxConstructs */ "./src/forge-antlr/ForgeSyntaxConstructs.ts");
|
|
52226
53238
|
/*
|
|
52227
53239
|
We don't really need a whole AST right now right?
|
|
@@ -52330,7 +53342,7 @@ class ForgeListenerImpl {
|
|
|
52330
53342
|
*/
|
|
52331
53343
|
exitPredDecl(ctx) {
|
|
52332
53344
|
const { startLine, startColumn, endLine, endColumn } = getLocations(ctx);
|
|
52333
|
-
const predName = ctx.name()
|
|
53345
|
+
const predName = (0, utils_1.getIdentifierName)(ctx.name());
|
|
52334
53346
|
// We don't care about the pred type for now (wheat or not.) In fact, this should maybe be removed from FORGE.
|
|
52335
53347
|
// There is also the PRED qualName that I don't know what to do with here.
|
|
52336
53348
|
// Ideally, predArgs should look something like this.
|
|
@@ -52351,7 +53363,7 @@ class ForgeListenerImpl {
|
|
|
52351
53363
|
*/
|
|
52352
53364
|
exitFunDecl(ctx) {
|
|
52353
53365
|
const { startLine, startColumn, endLine, endColumn } = getLocations(ctx);
|
|
52354
|
-
const funName = ctx.name()
|
|
53366
|
+
const funName = (0, utils_1.getIdentifierName)(ctx.name());
|
|
52355
53367
|
let f = new Function(startLine, startColumn, endLine, endColumn, funName);
|
|
52356
53368
|
this._functions.push(f);
|
|
52357
53369
|
}
|
|
@@ -52361,7 +53373,8 @@ class ForgeListenerImpl {
|
|
|
52361
53373
|
*/
|
|
52362
53374
|
exitTestDecl(ctx) {
|
|
52363
53375
|
const { startLine, startColumn, endLine, endColumn } = getLocations(ctx);
|
|
52364
|
-
const
|
|
53376
|
+
const nameCtx = ctx.name();
|
|
53377
|
+
const testName = nameCtx ? (0, utils_1.getIdentifierName)(nameCtx) : getRandomName();
|
|
52365
53378
|
// IGNORE qualName (the alternative to block) for now, unsure what it is. TODO!!
|
|
52366
53379
|
const testBlock = ctx.block();
|
|
52367
53380
|
const testBody = testBlock ? getLocationOnlyBlock(testBlock) : undefined;
|
|
@@ -52407,7 +53420,7 @@ class ForgeListenerImpl {
|
|
|
52407
53420
|
throw new Error("Property relation must be either necessary or sufficient.");
|
|
52408
53421
|
}
|
|
52409
53422
|
const expr = getLocationOnlyExpr(ctx.expr());
|
|
52410
|
-
const predName = ctx.name()
|
|
53423
|
+
const predName = (0, utils_1.getIdentifierName)(ctx.name());
|
|
52411
53424
|
const testScope = ctx.scope()?.toStringTree(); // This is not ideal, but will do for now.
|
|
52412
53425
|
const testBounds = ctx.bounds()?.toStringTree(); // This is not ideal, but will do for now.
|
|
52413
53426
|
const at = new ForgeSyntaxConstructs_1.AssertionTest(startLine, startColumn, endLine, endColumn, predName, expr, rel, testBounds, testScope);
|
|
@@ -52432,7 +53445,7 @@ class ForgeListenerImpl {
|
|
|
52432
53445
|
}
|
|
52433
53446
|
let predIndex = (rel === "sufficient") ? 0 : 1;
|
|
52434
53447
|
let propIndex = (rel === "sufficient") ? 1 : 0;
|
|
52435
|
-
const predName = ctx.name()
|
|
53448
|
+
const predName = (0, utils_1.getIdentifierName)(ctx.name());
|
|
52436
53449
|
const expr = getLocationOnlyExpr(ctx.expr());
|
|
52437
53450
|
let argsT = ctx.exprList();
|
|
52438
53451
|
let predArgsBlock = (argsT) ? getLocationOnlyBlock(argsT) : undefined;
|
|
@@ -52459,7 +53472,7 @@ class ForgeListenerImpl {
|
|
|
52459
53472
|
throw new Error("Consistency assertion relation must be either consistent or inconsistent.");
|
|
52460
53473
|
}
|
|
52461
53474
|
let consistent = (consistencyType === "consistent") ? true : false;
|
|
52462
|
-
const predName = ctx.name()
|
|
53475
|
+
const predName = (0, utils_1.getIdentifierName)(ctx.name());
|
|
52463
53476
|
const expr = getLocationOnlyExpr(ctx.expr());
|
|
52464
53477
|
const testScope = ctx.scope()?.toStringTree(); // This is not ideal, but will do for now.
|
|
52465
53478
|
const testBounds = ctx.bounds()?.toStringTree(); // This is not ideal, but will do for now.
|
|
@@ -52476,7 +53489,7 @@ class ForgeListenerImpl {
|
|
|
52476
53489
|
*/
|
|
52477
53490
|
exitExampleDecl(ctx) {
|
|
52478
53491
|
const { startLine, startColumn, endLine, endColumn } = getLocations(ctx);
|
|
52479
|
-
const exampleName = ctx.name()
|
|
53492
|
+
const exampleName = (0, utils_1.getIdentifierName)(ctx.name());
|
|
52480
53493
|
const testExpr = ctx.expr();
|
|
52481
53494
|
const testExprBlock = getLocationOnlyBlock(testExpr);
|
|
52482
53495
|
const bounds = ctx.bounds();
|
|
@@ -52504,7 +53517,7 @@ class ForgeListenerImpl {
|
|
|
52504
53517
|
}
|
|
52505
53518
|
// Start the collection from the given context
|
|
52506
53519
|
collectNames(ctx);
|
|
52507
|
-
return names.map(nameCtx =>
|
|
53520
|
+
return names.map(nameCtx => (0, utils_1.getIdentifierName)(nameCtx));
|
|
52508
53521
|
}
|
|
52509
53522
|
}
|
|
52510
53523
|
exports.ForgeListenerImpl = ForgeListenerImpl;
|
|
@@ -52706,7 +53719,7 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
52706
53719
|
this.state = 197;
|
|
52707
53720
|
this._errHandler.sync(this);
|
|
52708
53721
|
_la = this._input.LA(1);
|
|
52709
|
-
while ((((_la) & ~0x1F) === 0 && ((1 << _la) & ((1 << ForgeParser.VAR_TOK) | (1 << ForgeParser.ABSTRACT_TOK) | (1 << ForgeParser.SIG_TOK) | (1 << ForgeParser.LONE_TOK) | (1 << ForgeParser.SOME_TOK) | (1 << ForgeParser.ONE_TOK) | (1 << ForgeParser.TWO_TOK) | (1 << ForgeParser.PRED_TOK) | (1 << ForgeParser.FUN_TOK) | (1 << ForgeParser.ASSERT_TOK) | (1 << ForgeParser.RUN_TOK) | (1 << ForgeParser.CHECK_TOK))) !== 0) || _la === ForgeParser.TEST_TOK || _la === ForgeParser.EXPECT_TOK || ((((_la - 86)) & ~0x1F) === 0 && ((1 << (_la - 86)) & ((1 << (ForgeParser.SEXPR_TOK - 86)) | (1 << (ForgeParser.INST_TOK - 86)) | (1 << (ForgeParser.EXAMPLE_TOK - 86)) | (1 << (ForgeParser.OPTION_TOK - 86)) | (1 << (ForgeParser.IDENTIFIER_TOK - 86)))) !== 0)) {
|
|
53722
|
+
while ((((_la) & ~0x1F) === 0 && ((1 << _la) & ((1 << ForgeParser.VAR_TOK) | (1 << ForgeParser.ABSTRACT_TOK) | (1 << ForgeParser.SIG_TOK) | (1 << ForgeParser.LONE_TOK) | (1 << ForgeParser.SOME_TOK) | (1 << ForgeParser.ONE_TOK) | (1 << ForgeParser.TWO_TOK) | (1 << ForgeParser.PRED_TOK) | (1 << ForgeParser.FUN_TOK) | (1 << ForgeParser.ASSERT_TOK) | (1 << ForgeParser.RUN_TOK) | (1 << ForgeParser.CHECK_TOK))) !== 0) || _la === ForgeParser.TEST_TOK || _la === ForgeParser.EXPECT_TOK || ((((_la - 86)) & ~0x1F) === 0 && ((1 << (_la - 86)) & ((1 << (ForgeParser.SEXPR_TOK - 86)) | (1 << (ForgeParser.INST_TOK - 86)) | (1 << (ForgeParser.EXAMPLE_TOK - 86)) | (1 << (ForgeParser.OPTION_TOK - 86)) | (1 << (ForgeParser.QUOTED_IDENTIFIER_TOK - 86)) | (1 << (ForgeParser.IDENTIFIER_TOK - 86)))) !== 0)) {
|
|
52710
53723
|
{
|
|
52711
53724
|
{
|
|
52712
53725
|
this.state = 194;
|
|
@@ -53031,7 +54044,7 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
53031
54044
|
this.state = 263;
|
|
53032
54045
|
this._errHandler.sync(this);
|
|
53033
54046
|
_la = this._input.LA(1);
|
|
53034
|
-
if (_la === ForgeParser.VAR_TOK || _la === ForgeParser.IDENTIFIER_TOK) {
|
|
54047
|
+
if (_la === ForgeParser.VAR_TOK || _la === ForgeParser.QUOTED_IDENTIFIER_TOK || _la === ForgeParser.IDENTIFIER_TOK) {
|
|
53035
54048
|
{
|
|
53036
54049
|
this.state = 262;
|
|
53037
54050
|
this.arrowDeclList();
|
|
@@ -53493,7 +54506,7 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
53493
54506
|
this.state = 339;
|
|
53494
54507
|
this._errHandler.sync(this);
|
|
53495
54508
|
_la = this._input.LA(1);
|
|
53496
|
-
if (_la === ForgeParser.DISJ_TOK || _la === ForgeParser.IDENTIFIER_TOK) {
|
|
54509
|
+
if (_la === ForgeParser.DISJ_TOK || _la === ForgeParser.QUOTED_IDENTIFIER_TOK || _la === ForgeParser.IDENTIFIER_TOK) {
|
|
53497
54510
|
{
|
|
53498
54511
|
this.state = 338;
|
|
53499
54512
|
this.paraDeclList();
|
|
@@ -53511,7 +54524,7 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
53511
54524
|
this.state = 344;
|
|
53512
54525
|
this._errHandler.sync(this);
|
|
53513
54526
|
_la = this._input.LA(1);
|
|
53514
|
-
if (_la === ForgeParser.DISJ_TOK || _la === ForgeParser.IDENTIFIER_TOK) {
|
|
54527
|
+
if (_la === ForgeParser.DISJ_TOK || _la === ForgeParser.QUOTED_IDENTIFIER_TOK || _la === ForgeParser.IDENTIFIER_TOK) {
|
|
53515
54528
|
{
|
|
53516
54529
|
this.state = 343;
|
|
53517
54530
|
this.paraDeclList();
|
|
@@ -53553,7 +54566,7 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
53553
54566
|
this.state = 351;
|
|
53554
54567
|
this._errHandler.sync(this);
|
|
53555
54568
|
_la = this._input.LA(1);
|
|
53556
|
-
if (_la === ForgeParser.IDENTIFIER_TOK) {
|
|
54569
|
+
if (_la === ForgeParser.QUOTED_IDENTIFIER_TOK || _la === ForgeParser.IDENTIFIER_TOK) {
|
|
53557
54570
|
{
|
|
53558
54571
|
this.state = 350;
|
|
53559
54572
|
this.name();
|
|
@@ -53589,7 +54602,7 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
53589
54602
|
this.state = 358;
|
|
53590
54603
|
this._errHandler.sync(this);
|
|
53591
54604
|
_la = this._input.LA(1);
|
|
53592
|
-
if (_la === ForgeParser.IDENTIFIER_TOK) {
|
|
54605
|
+
if (_la === ForgeParser.QUOTED_IDENTIFIER_TOK || _la === ForgeParser.IDENTIFIER_TOK) {
|
|
53593
54606
|
{
|
|
53594
54607
|
this.state = 355;
|
|
53595
54608
|
this.name();
|
|
@@ -53689,6 +54702,7 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
53689
54702
|
case ForgeParser.THIS_TOK:
|
|
53690
54703
|
case ForgeParser.SUM_TOK:
|
|
53691
54704
|
case ForgeParser.INT_TOK:
|
|
54705
|
+
case ForgeParser.QUOTED_IDENTIFIER_TOK:
|
|
53692
54706
|
case ForgeParser.IDENTIFIER_TOK:
|
|
53693
54707
|
{
|
|
53694
54708
|
this.state = 377;
|
|
@@ -53778,7 +54792,7 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
53778
54792
|
this.state = 396;
|
|
53779
54793
|
this._errHandler.sync(this);
|
|
53780
54794
|
_la = this._input.LA(1);
|
|
53781
|
-
if (_la === ForgeParser.IDENTIFIER_TOK) {
|
|
54795
|
+
if (_la === ForgeParser.QUOTED_IDENTIFIER_TOK || _la === ForgeParser.IDENTIFIER_TOK) {
|
|
53782
54796
|
{
|
|
53783
54797
|
this.state = 395;
|
|
53784
54798
|
this.name();
|
|
@@ -53816,7 +54830,7 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
53816
54830
|
this.state = 404;
|
|
53817
54831
|
this._errHandler.sync(this);
|
|
53818
54832
|
_la = this._input.LA(1);
|
|
53819
|
-
while (_la === ForgeParser.LEFT_CURLY_TOK || ((((_la - 85)) & ~0x1F) === 0 && ((1 << (_la - 85)) & ((1 << (ForgeParser.THIS_TOK - 85)) | (1 << (ForgeParser.SUM_TOK - 85)) | (1 << (ForgeParser.INT_TOK - 85)) | (1 << (ForgeParser.IDENTIFIER_TOK - 85)))) !== 0)) {
|
|
54833
|
+
while (_la === ForgeParser.LEFT_CURLY_TOK || ((((_la - 85)) & ~0x1F) === 0 && ((1 << (_la - 85)) & ((1 << (ForgeParser.THIS_TOK - 85)) | (1 << (ForgeParser.SUM_TOK - 85)) | (1 << (ForgeParser.INT_TOK - 85)) | (1 << (ForgeParser.QUOTED_IDENTIFIER_TOK - 85)) | (1 << (ForgeParser.IDENTIFIER_TOK - 85)))) !== 0)) {
|
|
53820
54834
|
{
|
|
53821
54835
|
{
|
|
53822
54836
|
this.state = 401;
|
|
@@ -54490,6 +55504,7 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
54490
55504
|
case ForgeParser.SUM_TOK:
|
|
54491
55505
|
case ForgeParser.INT_TOK:
|
|
54492
55506
|
case ForgeParser.NUM_CONST_TOK:
|
|
55507
|
+
case ForgeParser.QUOTED_IDENTIFIER_TOK:
|
|
54493
55508
|
case ForgeParser.IDENTIFIER_TOK:
|
|
54494
55509
|
break;
|
|
54495
55510
|
default:
|
|
@@ -54592,7 +55607,7 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
54592
55607
|
this.state = 536;
|
|
54593
55608
|
this._errHandler.sync(this);
|
|
54594
55609
|
_la = this._input.LA(1);
|
|
54595
|
-
while (((((_la - 9)) & ~0x1F) === 0 && ((1 << (_la - 9)) & ((1 << (ForgeParser.LEFT_CURLY_TOK - 9)) | (1 << (ForgeParser.LONE_TOK - 9)) | (1 << (ForgeParser.SOME_TOK - 9)) | (1 << (ForgeParser.ONE_TOK - 9)) | (1 << (ForgeParser.TWO_TOK - 9)) | (1 << (ForgeParser.SET_TOK - 9)) | (1 << (ForgeParser.LEFT_PAREN_TOK - 9)) | (1 << (ForgeParser.NONE_TOK - 9)) | (1 << (ForgeParser.UNIV_TOK - 9)) | (1 << (ForgeParser.IDEN_TOK - 9)) | (1 << (ForgeParser.MINUS_TOK - 9)))) !== 0) || ((((_la - 49)) & ~0x1F) === 0 && ((1 << (_la - 49)) & ((1 << (ForgeParser.ALL_TOK - 49)) | (1 << (ForgeParser.LET_TOK - 49)) | (1 << (ForgeParser.BIND_TOK - 49)) | (1 << (ForgeParser.NEG_TOK - 49)) | (1 << (ForgeParser.ALWAYS_TOK - 49)) | (1 << (ForgeParser.EVENTUALLY_TOK - 49)) | (1 << (ForgeParser.AFTER_TOK - 49)) | (1 << (ForgeParser.BEFORE_TOK - 49)) | (1 << (ForgeParser.ONCE_TOK - 49)) | (1 << (ForgeParser.HISTORICALLY_TOK - 49)) | (1 << (ForgeParser.CARD_TOK - 49)) | (1 << (ForgeParser.TILDE_TOK - 49)))) !== 0) || ((((_la - 81)) & ~0x1F) === 0 && ((1 << (_la - 81)) & ((1 << (ForgeParser.EXP_TOK - 81)) | (1 << (ForgeParser.STAR_TOK - 81)) | (1 << (ForgeParser.AT_TOK - 81)) | (1 << (ForgeParser.BACKQUOTE_TOK - 81)) | (1 << (ForgeParser.THIS_TOK - 81)) | (1 << (ForgeParser.SEXPR_TOK - 81)) | (1 << (ForgeParser.GET_LABEL_TOK - 81)) | (1 << (ForgeParser.GET_LABEL_STR_TOK - 81)) | (1 << (ForgeParser.GET_LABEL_BOOL_TOK - 81)) | (1 << (ForgeParser.GET_LABEL_NUM_TOK - 81)) | (1 << (ForgeParser.NO_TOK - 81)) | (1 << (ForgeParser.SUM_TOK - 81)) | (1 << (ForgeParser.INT_TOK - 81)) | (1 << (ForgeParser.NUM_CONST_TOK - 81)) | (1 << (ForgeParser.IDENTIFIER_TOK - 81)))) !== 0)) {
|
|
55610
|
+
while (((((_la - 9)) & ~0x1F) === 0 && ((1 << (_la - 9)) & ((1 << (ForgeParser.LEFT_CURLY_TOK - 9)) | (1 << (ForgeParser.LONE_TOK - 9)) | (1 << (ForgeParser.SOME_TOK - 9)) | (1 << (ForgeParser.ONE_TOK - 9)) | (1 << (ForgeParser.TWO_TOK - 9)) | (1 << (ForgeParser.SET_TOK - 9)) | (1 << (ForgeParser.LEFT_PAREN_TOK - 9)) | (1 << (ForgeParser.NONE_TOK - 9)) | (1 << (ForgeParser.UNIV_TOK - 9)) | (1 << (ForgeParser.IDEN_TOK - 9)) | (1 << (ForgeParser.MINUS_TOK - 9)))) !== 0) || ((((_la - 49)) & ~0x1F) === 0 && ((1 << (_la - 49)) & ((1 << (ForgeParser.ALL_TOK - 49)) | (1 << (ForgeParser.LET_TOK - 49)) | (1 << (ForgeParser.BIND_TOK - 49)) | (1 << (ForgeParser.NEG_TOK - 49)) | (1 << (ForgeParser.ALWAYS_TOK - 49)) | (1 << (ForgeParser.EVENTUALLY_TOK - 49)) | (1 << (ForgeParser.AFTER_TOK - 49)) | (1 << (ForgeParser.BEFORE_TOK - 49)) | (1 << (ForgeParser.ONCE_TOK - 49)) | (1 << (ForgeParser.HISTORICALLY_TOK - 49)) | (1 << (ForgeParser.CARD_TOK - 49)) | (1 << (ForgeParser.TILDE_TOK - 49)))) !== 0) || ((((_la - 81)) & ~0x1F) === 0 && ((1 << (_la - 81)) & ((1 << (ForgeParser.EXP_TOK - 81)) | (1 << (ForgeParser.STAR_TOK - 81)) | (1 << (ForgeParser.AT_TOK - 81)) | (1 << (ForgeParser.BACKQUOTE_TOK - 81)) | (1 << (ForgeParser.THIS_TOK - 81)) | (1 << (ForgeParser.SEXPR_TOK - 81)) | (1 << (ForgeParser.GET_LABEL_TOK - 81)) | (1 << (ForgeParser.GET_LABEL_STR_TOK - 81)) | (1 << (ForgeParser.GET_LABEL_BOOL_TOK - 81)) | (1 << (ForgeParser.GET_LABEL_NUM_TOK - 81)) | (1 << (ForgeParser.NO_TOK - 81)) | (1 << (ForgeParser.SUM_TOK - 81)) | (1 << (ForgeParser.INT_TOK - 81)) | (1 << (ForgeParser.NUM_CONST_TOK - 81)) | (1 << (ForgeParser.QUOTED_IDENTIFIER_TOK - 81)) | (1 << (ForgeParser.IDENTIFIER_TOK - 81)))) !== 0)) {
|
|
54596
55611
|
{
|
|
54597
55612
|
{
|
|
54598
55613
|
this.state = 533;
|
|
@@ -54734,6 +55749,7 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
54734
55749
|
this._errHandler.sync(this);
|
|
54735
55750
|
switch (this._input.LA(1)) {
|
|
54736
55751
|
case ForgeParser.THIS_TOK:
|
|
55752
|
+
case ForgeParser.QUOTED_IDENTIFIER_TOK:
|
|
54737
55753
|
case ForgeParser.IDENTIFIER_TOK:
|
|
54738
55754
|
this.enterOuterAlt(_localctx, 1);
|
|
54739
55755
|
{
|
|
@@ -54821,6 +55837,7 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
54821
55837
|
case ForgeParser.THIS_TOK:
|
|
54822
55838
|
case ForgeParser.SUM_TOK:
|
|
54823
55839
|
case ForgeParser.INT_TOK:
|
|
55840
|
+
case ForgeParser.QUOTED_IDENTIFIER_TOK:
|
|
54824
55841
|
case ForgeParser.IDENTIFIER_TOK:
|
|
54825
55842
|
{
|
|
54826
55843
|
this.state = 571;
|
|
@@ -54873,11 +55890,22 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
54873
55890
|
name() {
|
|
54874
55891
|
let _localctx = new NameContext(this._ctx, this.state);
|
|
54875
55892
|
this.enterRule(_localctx, 76, ForgeParser.RULE_name);
|
|
55893
|
+
let _la;
|
|
54876
55894
|
try {
|
|
54877
55895
|
this.enterOuterAlt(_localctx, 1);
|
|
54878
55896
|
{
|
|
54879
55897
|
this.state = 579;
|
|
54880
|
-
this.
|
|
55898
|
+
_la = this._input.LA(1);
|
|
55899
|
+
if (!(_la === ForgeParser.QUOTED_IDENTIFIER_TOK || _la === ForgeParser.IDENTIFIER_TOK)) {
|
|
55900
|
+
this._errHandler.recoverInline(this);
|
|
55901
|
+
}
|
|
55902
|
+
else {
|
|
55903
|
+
if (this._input.LA(1) === Token_1.Token.EOF) {
|
|
55904
|
+
this.matchedEOF = true;
|
|
55905
|
+
}
|
|
55906
|
+
this._errHandler.reportMatch(this);
|
|
55907
|
+
this.consume();
|
|
55908
|
+
}
|
|
54881
55909
|
}
|
|
54882
55910
|
}
|
|
54883
55911
|
catch (re) {
|
|
@@ -55740,6 +56768,7 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
55740
56768
|
case ForgeParser.SUM_TOK:
|
|
55741
56769
|
case ForgeParser.INT_TOK:
|
|
55742
56770
|
case ForgeParser.NUM_CONST_TOK:
|
|
56771
|
+
case ForgeParser.QUOTED_IDENTIFIER_TOK:
|
|
55743
56772
|
case ForgeParser.IDENTIFIER_TOK:
|
|
55744
56773
|
this.enterOuterAlt(_localctx, 1);
|
|
55745
56774
|
{
|
|
@@ -55934,6 +56963,7 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
55934
56963
|
case ForgeParser.SUM_TOK:
|
|
55935
56964
|
case ForgeParser.INT_TOK:
|
|
55936
56965
|
case ForgeParser.NUM_CONST_TOK:
|
|
56966
|
+
case ForgeParser.QUOTED_IDENTIFIER_TOK:
|
|
55937
56967
|
case ForgeParser.IDENTIFIER_TOK:
|
|
55938
56968
|
this.enterOuterAlt(_localctx, 1);
|
|
55939
56969
|
{
|
|
@@ -56088,6 +57118,7 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
56088
57118
|
case ForgeParser.SUM_TOK:
|
|
56089
57119
|
case ForgeParser.INT_TOK:
|
|
56090
57120
|
case ForgeParser.NUM_CONST_TOK:
|
|
57121
|
+
case ForgeParser.QUOTED_IDENTIFIER_TOK:
|
|
56091
57122
|
case ForgeParser.IDENTIFIER_TOK:
|
|
56092
57123
|
this.enterOuterAlt(_localctx, 1);
|
|
56093
57124
|
{
|
|
@@ -56629,6 +57660,7 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
56629
57660
|
case ForgeParser.SUM_TOK:
|
|
56630
57661
|
case ForgeParser.INT_TOK:
|
|
56631
57662
|
case ForgeParser.NUM_CONST_TOK:
|
|
57663
|
+
case ForgeParser.QUOTED_IDENTIFIER_TOK:
|
|
56632
57664
|
case ForgeParser.IDENTIFIER_TOK:
|
|
56633
57665
|
this.enterOuterAlt(_localctx, 1);
|
|
56634
57666
|
{
|
|
@@ -57127,7 +58159,7 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
57127
58159
|
this.state = 939;
|
|
57128
58160
|
this._errHandler.sync(this);
|
|
57129
58161
|
_la = this._input.LA(1);
|
|
57130
|
-
while (_la === ForgeParser.MINUS_TOK || ((((_la - 74)) & ~0x1F) === 0 && ((1 << (_la - 74)) & ((1 << (ForgeParser.CARD_TOK - 74)) | (1 << (ForgeParser.BACKQUOTE_TOK - 74)) | (1 << (ForgeParser.THIS_TOK - 74)) | (1 << (ForgeParser.NO_TOK - 74)) | (1 << (ForgeParser.SUM_TOK - 74)) | (1 << (ForgeParser.INT_TOK - 74)))) !== 0) || _la === ForgeParser.NUM_CONST_TOK
|
|
58162
|
+
while (_la === ForgeParser.MINUS_TOK || ((((_la - 74)) & ~0x1F) === 0 && ((1 << (_la - 74)) & ((1 << (ForgeParser.CARD_TOK - 74)) | (1 << (ForgeParser.BACKQUOTE_TOK - 74)) | (1 << (ForgeParser.THIS_TOK - 74)) | (1 << (ForgeParser.NO_TOK - 74)) | (1 << (ForgeParser.SUM_TOK - 74)) | (1 << (ForgeParser.INT_TOK - 74)))) !== 0) || ((((_la - 107)) & ~0x1F) === 0 && ((1 << (_la - 107)) & ((1 << (ForgeParser.NUM_CONST_TOK - 107)) | (1 << (ForgeParser.QUOTED_IDENTIFIER_TOK - 107)) | (1 << (ForgeParser.IDENTIFIER_TOK - 107)))) !== 0)) {
|
|
57131
58163
|
{
|
|
57132
58164
|
{
|
|
57133
58165
|
this.state = 936;
|
|
@@ -57146,6 +58178,7 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
57146
58178
|
case ForgeParser.THIS_TOK:
|
|
57147
58179
|
case ForgeParser.SUM_TOK:
|
|
57148
58180
|
case ForgeParser.INT_TOK:
|
|
58181
|
+
case ForgeParser.QUOTED_IDENTIFIER_TOK:
|
|
57149
58182
|
case ForgeParser.IDENTIFIER_TOK:
|
|
57150
58183
|
this.enterOuterAlt(_localctx, 2);
|
|
57151
58184
|
{
|
|
@@ -57306,6 +58339,7 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
57306
58339
|
case ForgeParser.THIS_TOK:
|
|
57307
58340
|
case ForgeParser.SUM_TOK:
|
|
57308
58341
|
case ForgeParser.INT_TOK:
|
|
58342
|
+
case ForgeParser.QUOTED_IDENTIFIER_TOK:
|
|
57309
58343
|
case ForgeParser.IDENTIFIER_TOK:
|
|
57310
58344
|
this.enterOuterAlt(_localctx, 2);
|
|
57311
58345
|
{
|
|
@@ -57550,6 +58584,7 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
57550
58584
|
case ForgeParser.THIS_TOK:
|
|
57551
58585
|
case ForgeParser.SUM_TOK:
|
|
57552
58586
|
case ForgeParser.INT_TOK:
|
|
58587
|
+
case ForgeParser.QUOTED_IDENTIFIER_TOK:
|
|
57553
58588
|
case ForgeParser.IDENTIFIER_TOK:
|
|
57554
58589
|
this.enterOuterAlt(_localctx, 2);
|
|
57555
58590
|
{
|
|
@@ -57842,12 +58877,13 @@ ForgeParser.OPTION_TOK = 104;
|
|
|
57842
58877
|
ForgeParser.COMMA_TOK = 105;
|
|
57843
58878
|
ForgeParser.SLASH_TOK = 106;
|
|
57844
58879
|
ForgeParser.NUM_CONST_TOK = 107;
|
|
57845
|
-
ForgeParser.
|
|
57846
|
-
ForgeParser.
|
|
57847
|
-
ForgeParser.
|
|
57848
|
-
ForgeParser.
|
|
57849
|
-
ForgeParser.
|
|
57850
|
-
ForgeParser.
|
|
58880
|
+
ForgeParser.QUOTED_IDENTIFIER_TOK = 108;
|
|
58881
|
+
ForgeParser.IDENTIFIER_TOK = 109;
|
|
58882
|
+
ForgeParser.WS = 110;
|
|
58883
|
+
ForgeParser.CCOMMENT = 111;
|
|
58884
|
+
ForgeParser.COMMENT = 112;
|
|
58885
|
+
ForgeParser.MULTCOMMENT = 113;
|
|
58886
|
+
ForgeParser.LANG_DECL = 114;
|
|
57851
58887
|
ForgeParser.RULE_predDecl = 0;
|
|
57852
58888
|
ForgeParser.RULE_parseExpr = 1;
|
|
57853
58889
|
ForgeParser.RULE_alloyModule = 2;
|
|
@@ -57986,12 +59022,12 @@ ForgeParser._SYMBOLIC_NAMES = [
|
|
|
57986
59022
|
"SEXPR_TOK", "INST_TOK", "EVAL_TOK", "EXAMPLE_TOK", "ARROW_TOK", "GET_LABEL_TOK",
|
|
57987
59023
|
"GET_LABEL_STR_TOK", "GET_LABEL_BOOL_TOK", "GET_LABEL_NUM_TOK", "EQ_TOK",
|
|
57988
59024
|
"LT_TOK", "GT_TOK", "LEQ_TOK", "GEQ_TOK", "NI_TOK", "NO_TOK", "SUM_TOK",
|
|
57989
|
-
"INT_TOK", "OPTION_TOK", "COMMA_TOK", "SLASH_TOK", "NUM_CONST_TOK", "
|
|
57990
|
-
"WS", "CCOMMENT", "COMMENT", "MULTCOMMENT", "LANG_DECL",
|
|
59025
|
+
"INT_TOK", "OPTION_TOK", "COMMA_TOK", "SLASH_TOK", "NUM_CONST_TOK", "QUOTED_IDENTIFIER_TOK",
|
|
59026
|
+
"IDENTIFIER_TOK", "WS", "CCOMMENT", "COMMENT", "MULTCOMMENT", "LANG_DECL",
|
|
57991
59027
|
];
|
|
57992
59028
|
ForgeParser.VOCABULARY = new VocabularyImpl_1.VocabularyImpl(ForgeParser._LITERAL_NAMES, ForgeParser._SYMBOLIC_NAMES, []);
|
|
57993
59029
|
ForgeParser._serializedATNSegments = 2;
|
|
57994
|
-
ForgeParser._serializedATNSegment0 = "\x03\uC91D\uCABA\u058D\uAFBA\u4F53\u0607\uEA8B\uC241\
|
|
59030
|
+
ForgeParser._serializedATNSegment0 = "\x03\uC91D\uCABA\u058D\uAFBA\u4F53\u0607\uEA8B\uC241\x03t\u03FC\x04\x02" +
|
|
57995
59031
|
"\t\x02\x04\x03\t\x03\x04\x04\t\x04\x04\x05\t\x05\x04\x06\t\x06\x04\x07" +
|
|
57996
59032
|
"\t\x07\x04\b\t\b\x04\t\t\t\x04\n\t\n\x04\v\t\v\x04\f\t\f\x04\r\t\r\x04" +
|
|
57997
59033
|
"\x0E\t\x0E\x04\x0F\t\x0F\x04\x10\t\x10\x04\x11\t\x11\x04\x12\t\x12\x04" +
|
|
@@ -58092,143 +59128,143 @@ ForgeParser._serializedATNSegment0 = "\x03\uC91D\uCABA\u058D\uAFBA\u4F53\u0607\u
|
|
|
58092
59128
|
"^\x02`\x02b\x02d\x02f\x02h\x02j\x02l\x02n\x02p\x02r\x02t\x02v\x02x\x02" +
|
|
58093
59129
|
"z\x02|\x02~\x02\x80\x02\x82\x02\x84\x02\x86\x02\x88\x02\x8A\x02\x8C\x02" +
|
|
58094
59130
|
"\x8E\x02\x90\x02\x92\x02\x94\x02\x96\x02\x98\x02\x9A\x02\x9C\x02\x9E\x02" +
|
|
58095
|
-
"\xA0\x02\xA2\x02\xA4\x02\xA6\x02\xA8\x02\xAA\x02\x02\
|
|
59131
|
+
"\xA0\x02\xA2\x02\xA4\x02\xA6\x02\xA8\x02\xAA\x02\x02\x11\x03\x02\x10\x13" +
|
|
58096
59132
|
"\x04\x02\x10\x10\x12\x16\x05\x02\x10\x10\x12\x12\x14\x16\x03\x02 !\x03" +
|
|
58097
|
-
"\x02*.\x04\x02*+--\x03\x0245\x03\x0267\x05\x02\x0E\x0E))af\
|
|
58098
|
-
"\x14gg\x04\x02\x0F\x0F((\x03\x02OP\x04\x02RT]`\x04\x02\\\\kk\x02
|
|
58099
|
-
"\x02\xAC\x03\x02\x02\x02\x04\xBB\x03\x02\x02\x02\x06\xD0\x03\x02
|
|
58100
|
-
"\b\xE4\x03\x02\x02\x02\n\xF7\x03\x02\x02\x02\f\xFA\x03\x02\x02
|
|
58101
|
-
"\u011A\x03\x02\x02\x02\x10\u011C\x03\x02\x02\x02\x12\u011E\x03
|
|
58102
|
-
"\x02\x14\u0120\x03\x02\x02\x02\x16\u0123\x03\x02\x02\x02\x18\u012D
|
|
58103
|
-
"\x02\x02\x02\x1A\u0137\x03\x02\x02\x02\x1C\u013E\x03\x02\x02\x02\x1E
|
|
58104
|
-
"\x03\x02\x02\x02 \u015D\x03\x02\x02\x02\"\u015F\x03\x02\x02\x02
|
|
58105
|
-
"\x03\x02\x02\x02&\u0179\x03\x02\x02\x02(\u018A\x03\x02\x02\x02
|
|
58106
|
-
"\x03\x02\x02\x02,\u01A3\x03\x02\x02\x02.\u01A6\x03\x02\x02\
|
|
58107
|
-
"\x03\x02\x02\x022\u01B4\x03\x02\x02\x024\u01BF\x03\x02\x02\
|
|
58108
|
-
"\x03\x02\x02\x028\u01E5\x03\x02\x02\x02:\u01F2\x03\x02\x02\x02
|
|
58109
|
-
"\x03\x02\x02\x02>\u0209\x03\x02\x02\x02@\u0210\x03\x02\x02\
|
|
58110
|
-
"\x03\x02\x02\x02D\u0216\x03\x02\x02\x02F\u0222\x03\x02\x02\
|
|
58111
|
-
"\x03\x02\x02\x02J\u0239\x03\x02\x02\x02L\u023B\x03\x02\x02\
|
|
58112
|
-
"\x03\x02\x02\x02P\u024C\x03\x02\x02\x02R\u0253\x03\x02\x02\
|
|
58113
|
-
"\x03\x02\x02\x02V\u0261\x03\x02\x02\x02X\u0268\x03\x02\x02\
|
|
58114
|
-
"\x03\x02\x02\x02\\\u0276\x03\x02\x02\x02^\u027D\x03\x02\x02\x02
|
|
58115
|
-
"\x03\x02\x02\x02b\u0291\x03\x02\x02\x02d\u029C\x03\x02\x02\
|
|
58116
|
-
"\x03\x02\x02\x02h\u02BA\x03\x02\x02\x02j\u02BC\x03\x02\x02\
|
|
58117
|
-
"\x03\x02\x02\x02n\u02E9\x03\x02\x02\x02p\u02EB\x03\x02\x02\
|
|
58118
|
-
"\x03\x02\x02\x02t\u02FF\x03\x02\x02\x02v\u030D\x03\x02\x02\
|
|
58119
|
-
"\x03\x02\x02\x02z\u031A\x03\x02\x02\x02|\u0325\x03\x02\x02\x02
|
|
58120
|
-
"\x03\x02\x02\x02\x80\u033C\x03\x02\x02\x02\x82\u0350\x03\x02\x02
|
|
58121
|
-
"\u035A\x03\x02\x02\x02\x86\u0367\x03\x02\x02\x02\x88\u037B\x03
|
|
58122
|
-
"\x02\x8A\u0382\x03\x02\x02\x02\x8C\u0384\x03\x02\x02\x02\x8E\u0386
|
|
58123
|
-
"\x02\x02\x02\x90\u0388\x03\x02\x02\x02\x92\u038E\x03\x02\x02\x02\x94
|
|
58124
|
-
"\x03\x02\x02\x02\x96\u0393\x03\x02\x02\x02\x98\u039A\x03\x02\x02
|
|
58125
|
-
"\u03A5\x03\x02\x02\x02\x9C\u03A7\x03\x02\x02\x02\x9E\u03B5\x03
|
|
58126
|
-
"\x02\xA0\u03BC\x03\x02\x02\x02\xA2\u03C5\x03\x02\x02\x02\xA4\u03D1
|
|
58127
|
-
"\x02\x02\x02\xA6\u03D9\x03\x02\x02\x02\xA8\u03E9\x03\x02\x02\x02\xAA
|
|
58128
|
-
"\x03\x02\x02\x02\xAC\xAE\x07\x1A\x02\x02\xAD\xAF\x05\x1C\x0F\x02
|
|
58129
|
-
"\x03\x02\x02\x02\xAE\xAF\x03\x02\x02\x02\xAF\xB3\x03\x02\x02\x02
|
|
58130
|
-
"\x05J&\x02\xB1\xB2\x07\x1B\x02\x02\xB2\xB4\x03\x02\x02\x02\xB3
|
|
58131
|
-
"\x02\x02\x02\xB3\xB4\x03\x02\x02\x02\xB4\xB5\x03\x02\x02\x02\xB5
|
|
58132
|
-
"
|
|
58133
|
-
"\x02\xB8\xB9\x03\x02\x02\x02\xB9\xBA\x05D#\x02\xBA\x03\x03\x02
|
|
58134
|
-
"\xBB\xBC\x05`1\x02\xBC\xBD\x07\x02\x02\x03\xBD\x05\x03\x02\x02
|
|
58135
|
-
"\xC0\x05\b\x05\x02\xBF\xBE\x03\x02\x02\x02\xC0\xC3\x03\x02\x02
|
|
58136
|
-
"\xBF\x03\x02\x02\x02\xC1\xC2\x03\x02\x02\x02\xC2\xC7\x03\x02\x02
|
|
58137
|
-
"\xC1\x03\x02\x02\x02\xC4\xC6\x05\n\x06\x02\xC5\xC4\x03\x02\x02
|
|
58138
|
-
"\xC9\x03\x02\x02\x02\xC7\xC5\x03\x02\x02\x02\xC7\xC8\x03\x02\x02
|
|
58139
|
-
"\xD1\x03\x02\x02\x02\xC9\xC7\x03\x02\x02\x02\xCA\xCC\x05\x94K
|
|
58140
|
-
"\xCA\x03\x02\x02\x02\xCC\xCF\x03\x02\x02\x02\xCD\xCB\x03\x02\x02
|
|
58141
|
-
"\xCE\x03\x02\x02\x02\xCE\xD1\x03\x02\x02\x02\xCF\xCD\x03\x02\x02
|
|
58142
|
-
"\xC1\x03\x02\x02\x02\xD0\xCD\x03\x02\x02\x02\xD1\x07\x03\x02\x02
|
|
58143
|
-
"\xD3\x07\x03\x02\x02\xD3\xD8\x05J&\x02\xD4\xD5\x07\x04\x02\x02
|
|
58144
|
-
"\x05R*\x02\xD6\xD7\x07\x05\x02\x02\xD7\xD9\x03\x02\x02\x02\xD8
|
|
58145
|
-
"\x02\x02\x02\xD8\xD9\x03\x02\x02\x02\xD9\xDC\x03\x02\x02\x02\xDA
|
|
58146
|
-
"\x06\x02\x02\xDB\xDD\x05N(\x02\xDC\xDA\x03\x02\x02\x02\xDC\xDD
|
|
58147
|
-
"\x02\x02\xDD\xE5\x03\x02\x02\x02\xDE\xDF\x07\x03\x02\x02\xDF\xE2
|
|
58148
|
-
"\x02\x02\xE0\xE1\x07\x06\x02\x02\xE1\xE3\x05N(\x02\xE2\xE0\x03
|
|
58149
|
-
"\x02\xE2\xE3\x03\x02\x02\x02\xE3\xE5\x03\x02\x02\x02\xE4\xD2\x03
|
|
58150
|
-
"\x02\xE4\xDE\x03\x02\x02\x02\xE5\t\x03\x02\x02\x02\xE6\xF8\x05
|
|
58151
|
-
"\xE7\xF8\x05\x02\x02\x02\xE8\xF8\x05\x1E\x10\x02\xE9\xF8\x05
|
|
58152
|
-
"\xEA\xF8\x05$\x13\x02\xEB\xF8\x05(\x15\x02\xEC\xF8\x05\x8CG
|
|
58153
|
-
"\x05\x98M\x02\xEE\xF8\x05\x92J\x02\xEF\xF8\x05L\'\x02\xF0
|
|
58154
|
-
"
|
|
58155
|
-
"\xF8\x052\x1A\x02\xF5\xF8\x058\x1D\x02\xF6\xF8\x05:\x1E\x02
|
|
58156
|
-
"\x02\x02\x02\xF7\xE7\x03\x02\x02\x02\xF7\xE8\x03\x02\x02\x02
|
|
58157
|
-
"\x02\x02\x02\xF7\xEA\x03\x02\x02\x02\xF7\xEB\x03\x02\x02\x02
|
|
58158
|
-
"\x02\x02\x02\xF7\xED\x03\x02\x02\x02\xF7\xEE\x03\x02\x02\x02
|
|
58159
|
-
"\x02\x02\x02\xF7\xF0\x03\x02\x02\x02\xF7\xF1\x03\x02\x02\x02
|
|
58160
|
-
"\x02\x02\x02\xF7\xF3\x03\x02\x02\x02\xF7\xF4\x03\x02\x02\x02
|
|
58161
|
-
"\x02\x02\x02\xF7\xF6\x03\x02\x02\x02\xF8\v\x03\x02\x02\x02
|
|
58162
|
-
"\b\x02\x02\xFA\xF9\x03\x02\x02\x02\xFA\xFB\x03\x02\x02\x02
|
|
58163
|
-
"\x02\x02\x02\xFC\xFE\x07\t\x02\x02\xFD\xFC\x03\x02\x02\x02
|
|
58164
|
-
"\x02\x02\x02\xFE\u0100\x03\x02\x02\x02\xFF\u0101\x05\x10\t
|
|
58165
|
-
"\x03\x02\x02\x02\u0100\u0101\x03\x02\x02\x02\u0101\u0102
|
|
58166
|
-
"\u0102\u0103\x07\n\x02\x02\u0103\u0105\x05P)\x02\u0104
|
|
58167
|
-
"\x02\u0105\u0104\x03\x02\x02\x02\u0105\u0106\x03\x02\x02
|
|
58168
|
-
"\x03\x02\x02\x02\u0107\u0109\x07\v\x02\x02\u0108\u010A
|
|
58169
|
-
"\u0108\x03\x02\x02\x02\u0109\u010A\x03\x02\x02\x02\u010A
|
|
58170
|
-
"\x02\x02\u010B\u010D\x07\f\x02\x02\u010C\u010E\x05D#\x02
|
|
58171
|
-
"\x02\x02\x02\u010D\u010E\x03\x02\x02\x02\u010E\r\x03\x02
|
|
58172
|
-
"\u0110\x07\r\x02\x02\u0110\u011B\x05J&\x02\u0111\u0112\x07
|
|
58173
|
-
"\u0112\u0117\x05J&\x02\u0113\u0114\x07\x0F\x02\x02\u0114\u0116
|
|
58174
|
-
"\u0115\u0113\x03\x02\x02\x02\u0116\u0119\x03\x02\x02\x02\u0117
|
|
58175
|
-
"\x02\x02\x02\u0117\u0118\x03\x02\x02\x02\u0118\u011B\x03\x02
|
|
58176
|
-
"\u0117\x03\x02\x02\x02\u011A\u010F\x03\x02\x02\x02\u011A
|
|
58177
|
-
"\x02\x02\u011B\x0F\x03\x02\x02\x02\u011C\u011D\t\x02\x02
|
|
58178
|
-
"\x03\x02\x02\x02\u011E\u011F\t\x03\x02\x02\u011F\x13\x03
|
|
58179
|
-
"\u0121\t\x04\x02\x02\u0121\x15\x03\x02\x02\x02\u0122
|
|
58180
|
-
"\x02\u0123\u0122\x03\x02\x02\x02\u0123\u0124\x03\x02
|
|
58181
|
-
"\x03\x02\x02\x02\u0125\u0126\x05P)\x02\u0126\u0128
|
|
58182
|
-
"\u0129\x05\x14\v\x02\u0128\u0127\x03\x02\x02\x02
|
|
58183
|
-
"\
|
|
58184
|
-
"\x02\x02\u012C\u012E\x07\x17\x02\x02\u012D\u012C
|
|
58185
|
-
"\
|
|
58186
|
-
"\u0130\u0132\x07\x18\x02\x02\u0131\u0133\x07\x14
|
|
58187
|
-
"\x02\x02\
|
|
58188
|
-
"\u0135\x05`1\x02\u0135\x19\x03\x02\x02\x02
|
|
58189
|
-
"\u0136\
|
|
58190
|
-
"\x02\x02\u0139\
|
|
58191
|
-
"\x05\x12\n\x02\u013C\u013D\x05\x8AF\x02\u013D
|
|
58192
|
-
"\
|
|
58193
|
-
"\x02\u0141\u0142\x05J&\x02\u0142\u0143\x07
|
|
58194
|
-
"\
|
|
58195
|
-
"\
|
|
58196
|
-
"\
|
|
58197
|
-
"\x02\x02\x02\u014A\
|
|
58198
|
-
"\
|
|
58199
|
-
"\x02\x02\u014E\u014F\x05`1\x02\u014F\u0150\x07
|
|
58200
|
-
"`1\x02\u0151\u0152\x07\f\x02\x02\u0152\x1F\x03
|
|
58201
|
-
"\x07\x1D\x02\x02\u0154\u0156\x05T+\x02\u0155\u0154
|
|
58202
|
-
"\
|
|
58203
|
-
"\x02\x02\u0158\u015A\x07\x04\x02\x02\u0159\u015B\
|
|
58204
|
-
"\x03\x02\x02\x02\u015A\u015B\x03\x02\x02\x02\u015B\u015C
|
|
58205
|
-
"\u015C\u015E\x07\x05\x02\x02\u015D\u0153\x03\x02\x02\x02
|
|
58206
|
-
"\x02\x02\x02\u015E!\x03\x02\x02\x02\u015F\u0161\x07\x1F
|
|
58207
|
-
"\u0162\x05N(\x02\u0161\u0160\x03\x02\x02\x02\u0161\u0162
|
|
58208
|
-
"\u0162\u0163\x03\x02\x02\x02\u0163\u0164\x05D#\x02\u0164
|
|
58209
|
-
"\x02\u0165\u0166\x05N(\x02\u0166\u0167\x07\x18\x02\x02\u0167
|
|
58210
|
-
"\x02\x02\x02\u0168\u0165\x03\x02\x02\x02\u0168\u0169\x03\x02
|
|
58211
|
-
"\u016A\x03\x02\x02\x02\u016A\u016D\t\x05\x02\x02\u016B\u016E
|
|
58212
|
-
"\u016C\u016E\x05D#\x02\u016D\u016B\x03\x02\x02\x02\u016D\u016C
|
|
58213
|
-
"\x02\x02\u016D\u016E\x03\x02\x02\x02\u016E\u0170\x03\x02\x02\x02
|
|
58214
|
-
"\u0171\x05,\x17\x02\u0170\u016F\x03\x02\x02\x02\u0170\u0171\x03
|
|
58215
|
-
"\x02\u0171\u0174\x03\x02\x02\x02\u0172\u0173\x07\"\x02\x02\u0173
|
|
58216
|
-
"\x05\x9EP\x02\u0174\u0172\x03\x02\x02\x02\u0174\u0175\x03\x02\x02
|
|
58217
|
-
"\u0175%\x03\x02\x02\x02\u0176\u0177\x05N(\x02\u0177\u0178\x07\x18
|
|
58218
|
-
"\x02\u0178\u017A\x03\x02\x02\x02\u0179\u0176\x03\x02\x02\x02\u0179
|
|
58219
|
-
"\x03\x02\x02\x02\u017A\u017D\x03\x02\x02\x02\u017B\u017E\x05J&\x02
|
|
58220
|
-
"\u017E\x05D#\x02\u017D\u017B\x03\x02\x02\x02\u017D\u017C\x03\x02
|
|
58221
|
-
"\u017E\u0180\x03\x02\x02\x02\u017F\u0181\x05,\x17\x02\u0180\u017F
|
|
58222
|
-
"\x02\x02\x02\u0180\u0181\x03\x02\x02\x02\u0181\u0184\x03\x02\x02\x02
|
|
58223
|
-
"\u0183\x07\"\x02\x02\u0183\u0185\x05\x9EP\x02\u0184\u0182\x03\x02
|
|
58224
|
-
"\x02\u0184\u0185\x03\x02\x02\x02\u0185\u0186\x03\x02\x02\x02\u0186
|
|
58225
|
-
"\x07)\x02\x02\u0187\u0188\t\x06\x02\x02\u0188\'\x03\x02\x02\x02
|
|
58226
|
-
"\u018B\x07/\x02\x02\u018A\u0189\x03\x02\x02\x02\u018A\u018B\x03
|
|
58227
|
-
"\x02\u018B\u018C\x03\x02\x02\x02\u018C\u018E\x070\x02\x02\u018D
|
|
58228
|
-
"\x05N(\x02\u018E\u018D\x03\x02\x02\x02\u018E\u018F\x03\x02\x02\x02
|
|
58229
|
-
"\u0190\x03\x02\x02\x02\u0190\u0191\x05*\x16\x02\u0191)\x03\x02\x02
|
|
58230
|
-
"\u0192\u0196\x07\v\x02\x02\u0193\u0195\x05&\x14\x02\u0194\u0193\x03
|
|
58231
|
-
"\x02\x02\u0195\u0198\x03\x02\x02\x02\u0196\u0194\x03\x02\x02\x02\u0196" +
|
|
59133
|
+
"\x02*.\x04\x02*+--\x03\x0245\x03\x0267\x05\x02\x0E\x0E))af\x03\x02no\x04" +
|
|
59134
|
+
"\x02\x10\x14gg\x04\x02\x0F\x0F((\x03\x02OP\x04\x02RT]`\x04\x02\\\\kk\x02" +
|
|
59135
|
+
"\u044E\x02\xAC\x03\x02\x02\x02\x04\xBB\x03\x02\x02\x02\x06\xD0\x03\x02" +
|
|
59136
|
+
"\x02\x02\b\xE4\x03\x02\x02\x02\n\xF7\x03\x02\x02\x02\f\xFA\x03\x02\x02" +
|
|
59137
|
+
"\x02\x0E\u011A\x03\x02\x02\x02\x10\u011C\x03\x02\x02\x02\x12\u011E\x03" +
|
|
59138
|
+
"\x02\x02\x02\x14\u0120\x03\x02\x02\x02\x16\u0123\x03\x02\x02\x02\x18\u012D" +
|
|
59139
|
+
"\x03\x02\x02\x02\x1A\u0137\x03\x02\x02\x02\x1C\u013E\x03\x02\x02\x02\x1E" +
|
|
59140
|
+
"\u0140\x03\x02\x02\x02 \u015D\x03\x02\x02\x02\"\u015F\x03\x02\x02\x02" +
|
|
59141
|
+
"$\u0168\x03\x02\x02\x02&\u0179\x03\x02\x02\x02(\u018A\x03\x02\x02\x02" +
|
|
59142
|
+
"*\u0192\x03\x02\x02\x02,\u01A3\x03\x02\x02\x02.\u01A6\x03\x02\x02\x02" +
|
|
59143
|
+
"0\u01B2\x03\x02\x02\x022\u01B4\x03\x02\x02\x024\u01BF\x03\x02\x02\x02" +
|
|
59144
|
+
"6\u01D8\x03\x02\x02\x028\u01E5\x03\x02\x02\x02:\u01F2\x03\x02\x02\x02" +
|
|
59145
|
+
"<\u0205\x03\x02\x02\x02>\u0209\x03\x02\x02\x02@\u0210\x03\x02\x02\x02" +
|
|
59146
|
+
"B\u0212\x03\x02\x02\x02D\u0216\x03\x02\x02\x02F\u0222\x03\x02\x02\x02" +
|
|
59147
|
+
"H\u0228\x03\x02\x02\x02J\u0239\x03\x02\x02\x02L\u023B\x03\x02\x02\x02" +
|
|
59148
|
+
"N\u0245\x03\x02\x02\x02P\u024C\x03\x02\x02\x02R\u0253\x03\x02\x02\x02" +
|
|
59149
|
+
"T\u025A\x03\x02\x02\x02V\u0261\x03\x02\x02\x02X\u0268\x03\x02\x02\x02" +
|
|
59150
|
+
"Z\u026F\x03\x02\x02\x02\\\u0276\x03\x02\x02\x02^\u027D\x03\x02\x02\x02" +
|
|
59151
|
+
"`\u028F\x03\x02\x02\x02b\u0291\x03\x02\x02\x02d\u029C\x03\x02\x02\x02" +
|
|
59152
|
+
"f\u02A7\x03\x02\x02\x02h\u02BA\x03\x02\x02\x02j\u02BC\x03\x02\x02\x02" +
|
|
59153
|
+
"l\u02D8\x03\x02\x02\x02n\u02E9\x03\x02\x02\x02p\u02EB\x03\x02\x02\x02" +
|
|
59154
|
+
"r\u02FD\x03\x02\x02\x02t\u02FF\x03\x02\x02\x02v\u030D\x03\x02\x02\x02" +
|
|
59155
|
+
"x\u030F\x03\x02\x02\x02z\u031A\x03\x02\x02\x02|\u0325\x03\x02\x02\x02" +
|
|
59156
|
+
"~\u0331\x03\x02\x02\x02\x80\u033C\x03\x02\x02\x02\x82\u0350\x03\x02\x02" +
|
|
59157
|
+
"\x02\x84\u035A\x03\x02\x02\x02\x86\u0367\x03\x02\x02\x02\x88\u037B\x03" +
|
|
59158
|
+
"\x02\x02\x02\x8A\u0382\x03\x02\x02\x02\x8C\u0384\x03\x02\x02\x02\x8E\u0386" +
|
|
59159
|
+
"\x03\x02\x02\x02\x90\u0388\x03\x02\x02\x02\x92\u038E\x03\x02\x02\x02\x94" +
|
|
59160
|
+
"\u0390\x03\x02\x02\x02\x96\u0393\x03\x02\x02\x02\x98\u039A\x03\x02\x02" +
|
|
59161
|
+
"\x02\x9A\u03A5\x03\x02\x02\x02\x9C\u03A7\x03\x02\x02\x02\x9E\u03B5\x03" +
|
|
59162
|
+
"\x02\x02\x02\xA0\u03BC\x03\x02\x02\x02\xA2\u03C5\x03\x02\x02\x02\xA4\u03D1" +
|
|
59163
|
+
"\x03\x02\x02\x02\xA6\u03D9\x03\x02\x02\x02\xA8\u03E9\x03\x02\x02\x02\xAA" +
|
|
59164
|
+
"\u03F9\x03\x02\x02\x02\xAC\xAE\x07\x1A\x02\x02\xAD\xAF\x05\x1C\x0F\x02" +
|
|
59165
|
+
"\xAE\xAD\x03\x02\x02\x02\xAE\xAF\x03\x02\x02\x02\xAF\xB3\x03\x02\x02\x02" +
|
|
59166
|
+
"\xB0\xB1\x05J&\x02\xB1\xB2\x07\x1B\x02\x02\xB2\xB4\x03\x02\x02\x02\xB3" +
|
|
59167
|
+
"\xB0\x03\x02\x02\x02\xB3\xB4\x03\x02\x02\x02\xB4\xB5\x03\x02\x02\x02\xB5" +
|
|
59168
|
+
"\xB7\x05N(\x02\xB6\xB8\x05 \x11\x02\xB7\xB6\x03\x02\x02\x02\xB7\xB8\x03" +
|
|
59169
|
+
"\x02\x02\x02\xB8\xB9\x03\x02\x02\x02\xB9\xBA\x05D#\x02\xBA\x03\x03\x02" +
|
|
59170
|
+
"\x02\x02\xBB\xBC\x05`1\x02\xBC\xBD\x07\x02\x02\x03\xBD\x05\x03\x02\x02" +
|
|
59171
|
+
"\x02\xBE\xC0\x05\b\x05\x02\xBF\xBE\x03\x02\x02\x02\xC0\xC3\x03\x02\x02" +
|
|
59172
|
+
"\x02\xC1\xBF\x03\x02\x02\x02\xC1\xC2\x03\x02\x02\x02\xC2\xC7\x03\x02\x02" +
|
|
59173
|
+
"\x02\xC3\xC1\x03\x02\x02\x02\xC4\xC6\x05\n\x06\x02\xC5\xC4\x03\x02\x02" +
|
|
59174
|
+
"\x02\xC6\xC9\x03\x02\x02\x02\xC7\xC5\x03\x02\x02\x02\xC7\xC8\x03\x02\x02" +
|
|
59175
|
+
"\x02\xC8\xD1\x03\x02\x02\x02\xC9\xC7\x03\x02\x02\x02\xCA\xCC\x05\x94K" +
|
|
59176
|
+
"\x02\xCB\xCA\x03\x02\x02\x02\xCC\xCF\x03\x02\x02\x02\xCD\xCB\x03\x02\x02" +
|
|
59177
|
+
"\x02\xCD\xCE\x03\x02\x02\x02\xCE\xD1\x03\x02\x02\x02\xCF\xCD\x03\x02\x02" +
|
|
59178
|
+
"\x02\xD0\xC1\x03\x02\x02\x02\xD0\xCD\x03\x02\x02\x02\xD1\x07\x03\x02\x02" +
|
|
59179
|
+
"\x02\xD2\xD3\x07\x03\x02\x02\xD3\xD8\x05J&\x02\xD4\xD5\x07\x04\x02\x02" +
|
|
59180
|
+
"\xD5\xD6\x05R*\x02\xD6\xD7\x07\x05\x02\x02\xD7\xD9\x03\x02\x02\x02\xD8" +
|
|
59181
|
+
"\xD4\x03\x02\x02\x02\xD8\xD9\x03\x02\x02\x02\xD9\xDC\x03\x02\x02\x02\xDA" +
|
|
59182
|
+
"\xDB\x07\x06\x02\x02\xDB\xDD\x05N(\x02\xDC\xDA\x03\x02\x02\x02\xDC\xDD" +
|
|
59183
|
+
"\x03\x02\x02\x02\xDD\xE5\x03\x02\x02\x02\xDE\xDF\x07\x03\x02\x02\xDF\xE2" +
|
|
59184
|
+
"\x07\x07\x02\x02\xE0\xE1\x07\x06\x02\x02\xE1\xE3\x05N(\x02\xE2\xE0\x03" +
|
|
59185
|
+
"\x02\x02\x02\xE2\xE3\x03\x02\x02\x02\xE3\xE5\x03\x02\x02\x02\xE4\xD2\x03" +
|
|
59186
|
+
"\x02\x02\x02\xE4\xDE\x03\x02\x02\x02\xE5\t\x03\x02\x02\x02\xE6\xF8\x05" +
|
|
59187
|
+
"\f\x07\x02\xE7\xF8\x05\x02\x02\x02\xE8\xF8\x05\x1E\x10\x02\xE9\xF8\x05" +
|
|
59188
|
+
"\"\x12\x02\xEA\xF8\x05$\x13\x02\xEB\xF8\x05(\x15\x02\xEC\xF8\x05\x8CG" +
|
|
59189
|
+
"\x02\xED\xF8\x05\x98M\x02\xEE\xF8\x05\x92J\x02\xEF\xF8\x05L\'\x02\xF0" +
|
|
59190
|
+
"\xF8\x05\x90I\x02\xF1\xF8\x05\x96L\x02\xF2\xF8\x056\x1C\x02\xF3\xF8\x05" +
|
|
59191
|
+
"4\x1B\x02\xF4\xF8\x052\x1A\x02\xF5\xF8\x058\x1D\x02\xF6\xF8\x05:\x1E\x02" +
|
|
59192
|
+
"\xF7\xE6\x03\x02\x02\x02\xF7\xE7\x03\x02\x02\x02\xF7\xE8\x03\x02\x02\x02" +
|
|
59193
|
+
"\xF7\xE9\x03\x02\x02\x02\xF7\xEA\x03\x02\x02\x02\xF7\xEB\x03\x02\x02\x02" +
|
|
59194
|
+
"\xF7\xEC\x03\x02\x02\x02\xF7\xED\x03\x02\x02\x02\xF7\xEE\x03\x02\x02\x02" +
|
|
59195
|
+
"\xF7\xEF\x03\x02\x02\x02\xF7\xF0\x03\x02\x02\x02\xF7\xF1\x03\x02\x02\x02" +
|
|
59196
|
+
"\xF7\xF2\x03\x02\x02\x02\xF7\xF3\x03\x02\x02\x02\xF7\xF4\x03\x02\x02\x02" +
|
|
59197
|
+
"\xF7\xF5\x03\x02\x02\x02\xF7\xF6\x03\x02\x02\x02\xF8\v\x03\x02\x02\x02" +
|
|
59198
|
+
"\xF9\xFB\x07\b\x02\x02\xFA\xF9\x03\x02\x02\x02\xFA\xFB\x03\x02\x02\x02" +
|
|
59199
|
+
"\xFB\xFD\x03\x02\x02\x02\xFC\xFE\x07\t\x02\x02\xFD\xFC\x03\x02\x02\x02" +
|
|
59200
|
+
"\xFD\xFE\x03\x02\x02\x02\xFE\u0100\x03\x02\x02\x02\xFF\u0101\x05\x10\t" +
|
|
59201
|
+
"\x02\u0100\xFF\x03\x02\x02\x02\u0100\u0101\x03\x02\x02\x02\u0101\u0102" +
|
|
59202
|
+
"\x03\x02\x02\x02\u0102\u0103\x07\n\x02\x02\u0103\u0105\x05P)\x02\u0104" +
|
|
59203
|
+
"\u0106\x05\x0E\b\x02\u0105\u0104\x03\x02\x02\x02\u0105\u0106\x03\x02\x02" +
|
|
59204
|
+
"\x02\u0106\u0107\x03\x02\x02\x02\u0107\u0109\x07\v\x02\x02\u0108\u010A" +
|
|
59205
|
+
"\x05X-\x02\u0109\u0108\x03\x02\x02\x02\u0109\u010A\x03\x02\x02\x02\u010A" +
|
|
59206
|
+
"\u010B\x03\x02\x02\x02\u010B\u010D\x07\f\x02\x02\u010C\u010E\x05D#\x02" +
|
|
59207
|
+
"\u010D\u010C\x03\x02\x02\x02\u010D\u010E\x03\x02\x02\x02\u010E\r\x03\x02" +
|
|
59208
|
+
"\x02\x02\u010F\u0110\x07\r\x02\x02\u0110\u011B\x05J&\x02\u0111\u0112\x07" +
|
|
59209
|
+
"\x0E\x02\x02\u0112\u0117\x05J&\x02\u0113\u0114\x07\x0F\x02\x02\u0114\u0116" +
|
|
59210
|
+
"\x05J&\x02\u0115\u0113\x03\x02\x02\x02\u0116\u0119\x03\x02\x02\x02\u0117" +
|
|
59211
|
+
"\u0115\x03\x02\x02\x02\u0117\u0118\x03\x02\x02\x02\u0118\u011B\x03\x02" +
|
|
59212
|
+
"\x02\x02\u0119\u0117\x03\x02\x02\x02\u011A\u010F\x03\x02\x02\x02\u011A" +
|
|
59213
|
+
"\u0111\x03\x02\x02\x02\u011B\x0F\x03\x02\x02\x02\u011C\u011D\t\x02\x02" +
|
|
59214
|
+
"\x02\u011D\x11\x03\x02\x02\x02\u011E\u011F\t\x03\x02\x02\u011F\x13\x03" +
|
|
59215
|
+
"\x02\x02\x02\u0120\u0121\t\x04\x02\x02\u0121\x15\x03\x02\x02\x02\u0122" +
|
|
59216
|
+
"\u0124\x07\x17\x02\x02\u0123\u0122\x03\x02\x02\x02\u0123\u0124\x03\x02" +
|
|
59217
|
+
"\x02\x02\u0124\u0125\x03\x02\x02\x02\u0125\u0126\x05P)\x02\u0126\u0128" +
|
|
59218
|
+
"\x07\x18\x02\x02\u0127\u0129\x05\x14\v\x02\u0128\u0127\x03\x02\x02\x02" +
|
|
59219
|
+
"\u0128\u0129\x03\x02\x02\x02\u0129\u012A\x03\x02\x02\x02\u012A\u012B\x05" +
|
|
59220
|
+
"`1\x02\u012B\x17\x03\x02\x02\x02\u012C\u012E\x07\x17\x02\x02\u012D\u012C" +
|
|
59221
|
+
"\x03\x02\x02\x02\u012D\u012E\x03\x02\x02\x02\u012E\u012F\x03\x02\x02\x02" +
|
|
59222
|
+
"\u012F\u0130\x05P)\x02\u0130\u0132\x07\x18\x02\x02\u0131\u0133\x07\x14" +
|
|
59223
|
+
"\x02\x02\u0132\u0131\x03\x02\x02\x02\u0132\u0133\x03\x02\x02\x02\u0133" +
|
|
59224
|
+
"\u0134\x03\x02\x02\x02\u0134\u0135\x05`1\x02\u0135\x19\x03\x02\x02\x02" +
|
|
59225
|
+
"\u0136\u0138\x07\b\x02\x02\u0137\u0136\x03\x02\x02\x02\u0137\u0138\x03" +
|
|
59226
|
+
"\x02\x02\x02\u0138\u0139\x03\x02\x02\x02\u0139\u013A\x05P)\x02\u013A\u013B" +
|
|
59227
|
+
"\x07\x18\x02\x02\u013B\u013C\x05\x12\n\x02\u013C\u013D\x05\x8AF\x02\u013D" +
|
|
59228
|
+
"\x1B\x03\x02\x02\x02\u013E\u013F\x07\x19\x02\x02\u013F\x1D\x03\x02\x02" +
|
|
59229
|
+
"\x02\u0140\u0144\x07\x1C\x02\x02\u0141\u0142\x05J&\x02\u0142\u0143\x07" +
|
|
59230
|
+
"\x1B\x02\x02\u0143\u0145\x03\x02\x02\x02\u0144\u0141\x03\x02\x02\x02\u0144" +
|
|
59231
|
+
"\u0145\x03\x02\x02\x02\u0145\u0146\x03\x02\x02\x02\u0146\u0148\x05N(\x02" +
|
|
59232
|
+
"\u0147\u0149\x05 \x11\x02\u0148\u0147\x03\x02\x02\x02\u0148\u0149\x03" +
|
|
59233
|
+
"\x02\x02\x02\u0149\u014A\x03\x02\x02\x02\u014A\u014C\x07\x18\x02\x02\u014B" +
|
|
59234
|
+
"\u014D\x05\x14\v\x02\u014C\u014B\x03\x02\x02\x02\u014C\u014D\x03\x02\x02" +
|
|
59235
|
+
"\x02\u014D\u014E\x03\x02\x02\x02\u014E\u014F\x05`1\x02\u014F\u0150\x07" +
|
|
59236
|
+
"\v\x02\x02\u0150\u0151\x05`1\x02\u0151\u0152\x07\f\x02\x02\u0152\x1F\x03" +
|
|
59237
|
+
"\x02\x02\x02\u0153\u0155\x07\x1D\x02\x02\u0154\u0156\x05T+\x02\u0155\u0154" +
|
|
59238
|
+
"\x03\x02\x02\x02\u0155\u0156\x03\x02\x02\x02\u0156\u0157\x03\x02\x02\x02" +
|
|
59239
|
+
"\u0157\u015E\x07\x1E\x02\x02\u0158\u015A\x07\x04\x02\x02\u0159\u015B\x05" +
|
|
59240
|
+
"T+\x02\u015A\u0159\x03\x02\x02\x02\u015A\u015B\x03\x02\x02\x02\u015B\u015C" +
|
|
59241
|
+
"\x03\x02\x02\x02\u015C\u015E\x07\x05\x02\x02\u015D\u0153\x03\x02\x02\x02" +
|
|
59242
|
+
"\u015D\u0158\x03\x02\x02\x02\u015E!\x03\x02\x02\x02\u015F\u0161\x07\x1F" +
|
|
59243
|
+
"\x02\x02\u0160\u0162\x05N(\x02\u0161\u0160\x03\x02\x02\x02\u0161\u0162" +
|
|
59244
|
+
"\x03\x02\x02\x02\u0162\u0163\x03\x02\x02\x02\u0163\u0164\x05D#\x02\u0164" +
|
|
59245
|
+
"#\x03\x02\x02\x02\u0165\u0166\x05N(\x02\u0166\u0167\x07\x18\x02\x02\u0167" +
|
|
59246
|
+
"\u0169\x03\x02\x02\x02\u0168\u0165\x03\x02\x02\x02\u0168\u0169\x03\x02" +
|
|
59247
|
+
"\x02\x02\u0169\u016A\x03\x02\x02\x02\u016A\u016D\t\x05\x02\x02\u016B\u016E" +
|
|
59248
|
+
"\x05J&\x02\u016C\u016E\x05D#\x02\u016D\u016B\x03\x02\x02\x02\u016D\u016C" +
|
|
59249
|
+
"\x03\x02\x02\x02\u016D\u016E\x03\x02\x02\x02\u016E\u0170\x03\x02\x02\x02" +
|
|
59250
|
+
"\u016F\u0171\x05,\x17\x02\u0170\u016F\x03\x02\x02\x02\u0170\u0171\x03" +
|
|
59251
|
+
"\x02\x02\x02\u0171\u0174\x03\x02\x02\x02\u0172\u0173\x07\"\x02\x02\u0173" +
|
|
59252
|
+
"\u0175\x05\x9EP\x02\u0174\u0172\x03\x02\x02\x02\u0174\u0175\x03\x02\x02" +
|
|
59253
|
+
"\x02\u0175%\x03\x02\x02\x02\u0176\u0177\x05N(\x02\u0177\u0178\x07\x18" +
|
|
59254
|
+
"\x02\x02\u0178\u017A\x03\x02\x02\x02\u0179\u0176\x03\x02\x02\x02\u0179" +
|
|
59255
|
+
"\u017A\x03\x02\x02\x02\u017A\u017D\x03\x02\x02\x02\u017B\u017E\x05J&\x02" +
|
|
59256
|
+
"\u017C\u017E\x05D#\x02\u017D\u017B\x03\x02\x02\x02\u017D\u017C\x03\x02" +
|
|
59257
|
+
"\x02\x02\u017E\u0180\x03\x02\x02\x02\u017F\u0181\x05,\x17\x02\u0180\u017F" +
|
|
59258
|
+
"\x03\x02\x02\x02\u0180\u0181\x03\x02\x02\x02\u0181\u0184\x03\x02\x02\x02" +
|
|
59259
|
+
"\u0182\u0183\x07\"\x02\x02\u0183\u0185\x05\x9EP\x02\u0184\u0182\x03\x02" +
|
|
59260
|
+
"\x02\x02\u0184\u0185\x03\x02\x02\x02\u0185\u0186\x03\x02\x02\x02\u0186" +
|
|
59261
|
+
"\u0187\x07)\x02\x02\u0187\u0188\t\x06\x02\x02\u0188\'\x03\x02\x02\x02" +
|
|
59262
|
+
"\u0189\u018B\x07/\x02\x02\u018A\u0189\x03\x02\x02\x02\u018A\u018B\x03" +
|
|
59263
|
+
"\x02\x02\x02\u018B\u018C\x03\x02\x02\x02\u018C\u018E\x070\x02\x02\u018D" +
|
|
59264
|
+
"\u018F\x05N(\x02\u018E\u018D\x03\x02\x02\x02\u018E\u018F\x03\x02\x02\x02" +
|
|
59265
|
+
"\u018F\u0190\x03\x02\x02\x02\u0190\u0191\x05*\x16\x02\u0191)\x03\x02\x02" +
|
|
59266
|
+
"\x02\u0192\u0196\x07\v\x02\x02\u0193\u0195\x05&\x14\x02\u0194\u0193\x03" +
|
|
59267
|
+
"\x02\x02\x02\u0195\u0198\x03\x02\x02\x02\u0196\u0194\x03\x02\x02\x02\u0196" +
|
|
58232
59268
|
"\u0197\x03\x02\x02\x02\u0197\u0199\x03\x02\x02\x02\u0198\u0196\x03\x02" +
|
|
58233
59269
|
"\x02\x02\u0199\u019A\x07\f\x02\x02\u019A+\x03\x02\x02\x02\u019B\u019C" +
|
|
58234
59270
|
"\x07\"\x02\x02\u019C\u019F\x05\x9CO\x02\u019D\u019E\x07#\x02\x02\u019E" +
|
|
@@ -58245,263 +59281,264 @@ ForgeParser._serializedATNSegment0 = "\x03\uC91D\uCABA\u058D\uAFBA\u4F53\u0607\u
|
|
|
58245
59281
|
"\u01AF\x03\x02\x02\x02\u01B31\x03\x02\x02\x02\u01B4\u01B5\x07\x1F\x02" +
|
|
58246
59282
|
"\x02\u01B5\u01B6\x05`1\x02\u01B6\u01B7\x07)\x02\x02\u01B7\u01B9\t\x07" +
|
|
58247
59283
|
"\x02\x02\u01B8\u01BA\x05,\x17\x02\u01B9\u01B8\x03\x02\x02\x02\u01B9\u01BA" +
|
|
58248
|
-
"\x03\x02\x02\x02\u01BA\u01BD\x03\x02
|
|
58249
|
-
ForgeParser._serializedATNSegment1 = "\x07\"\x02\x02\u01BC\u01BE\x05\x9EP\x02\u01BD\u01BB
|
|
58250
|
-
"\
|
|
58251
|
-
"\x02\u01C0\u01C2\x073\x02\x02\u01C1\u01C3\x07\x17\x02
|
|
58252
|
-
"\x03\x02\x02\x02\u01C2\u01C3\x03\x02\x02\x02\u01C3\u01C4
|
|
58253
|
-
"\u01C4\u01C5\x05V,\x02\u01C5\u01C6\x072\x02\x02\u01C6
|
|
58254
|
-
"\u01C7\u01C8\x07)\x02\x02\u01C8\u01C9\t\b\x02\x02\u01C9
|
|
58255
|
-
"\x02\u01CA\u01CF\x05N(\x02\u01CB\u01CC\x07\x04\x02\x02
|
|
58256
|
-
"^0\x02\u01CD\u01CE\x07\x05\x02\x02\u01CE\u01D0\x03\x02
|
|
58257
|
-
"\
|
|
58258
|
-
"\u01D1\u01D3\x05,\x17\x02\u01D2\u01D1\x03\x02\x02
|
|
58259
|
-
"\x02\
|
|
58260
|
-
"\u01D7\x05\x9EP\x02\u01D6\u01D4\x03\x02\x02\x02\u01D6
|
|
58261
|
-
"\x02\u01D75\x03\x02\x02\x02\u01D8\u01D9\x07\x1F\x02
|
|
58262
|
-
"`1\x02\u01DA\u01DB\x07)\x02\x02\u01DB\u01DC\t\b\x02
|
|
58263
|
-
"\"\x02\x02\u01DD\u01DF\x05N(\x02\u01DE\u01E0\x05
|
|
58264
|
-
"\
|
|
58265
|
-
"\u01E1\u01E2\x07\"\x02\x02\u01E2\u01E4\x05\x9EP
|
|
58266
|
-
"\x02\
|
|
58267
|
-
"\x07\x1F\x02\x02\u01E6\u01E7\x05`1\x02\u01E7\u01E8
|
|
58268
|
-
"\u01E9\t\t\x02\x02\u01E9\u01EA\x078\x02\x02\u01EA\u01EC
|
|
58269
|
-
"\u01ED\x05,\x17\x02\u01EC\u01EB\x03\x02\x02\x02\u01EC
|
|
58270
|
-
"\x02\u01ED\u01F0\x03\x02\x02\x02\u01EE\u01EF\x07\"\x02
|
|
58271
|
-
"\x05\x9EP\x02\u01F0\u01EE\x03\x02\x02\x02\u01F0\u01F1
|
|
58272
|
-
"\u01F19\x03\x02\x02\x02\u01F2\u01F3\x07/\x02\x02\u01F3
|
|
58273
|
-
"\x02\u01F4\u01F5\x07\"\x02\x02\u01F5\u01F6\x05N(\x02\u01F6
|
|
58274
|
-
"\x02\x02\u01F7\u01F9\x05<\x1F\x02\u01F8\u01F7\x03\x02\x02
|
|
58275
|
-
"\x03\x02\x02\x02\u01FA\u01F8\x03\x02\x02\x02\u01FA\u01FB
|
|
58276
|
-
"\u01FB\u01FD\x03\x02\x02\x02\u01FC\u01FA\x03\x02\x02\x02
|
|
58277
|
-
"\f\x02\x02\u01FE;\x03\x02\x02\x02\u01FF\u0206\x05\
|
|
58278
|
-
"\x05(\x15\x02\u0201\u0206\x054\x1B\x02\u0202\u0206\
|
|
58279
|
-
"\u0206\x052\x1A\x02\u0204\u0206\x058\x1D\x02\u0205\u01FF
|
|
58280
|
-
"\u0205\u0200\x03\x02\x02\x02\u0205\u0201\x03\x02\x02\x02
|
|
58281
|
-
"\x02\x02\x02\u0205\u0203\x03\x02\x02\x02\u0205\u0204\x03
|
|
58282
|
-
"=\x03\x02\x02\x02\u0207\u020A\x05\x10\t\x02\u0208\u020A
|
|
58283
|
-
"\u0209\u0207\x03\x02\x02\x02\u0209\u0208\x03\x02\x02\x02
|
|
58284
|
-
"\x02\x02\x02\u020A\u020B\x03\x02\x02\x02\u020B\u020E\x07
|
|
58285
|
-
"\u020F\x05\x10\t\x02\u020D\u020F\x07\x14\x02\x02\u020E
|
|
58286
|
-
"\
|
|
58287
|
-
"\x02\x02\x02\u0210\u0211\t\n\x02\x02\u0211A\x03\x02
|
|
58288
|
-
"\x05N(\x02\u0213\u0214\x07a\x02\x02\u0214\u0215\x05
|
|
58289
|
-
"\x02\x02\u0216\u021A\x07\v\x02\x02\u0217\u0219\x05
|
|
58290
|
-
"\x02\
|
|
58291
|
-
"\
|
|
58292
|
-
"\x02\x02\u021D\u021E\x07\f\x02\x02\u021EE\x03\x02
|
|
58293
|
-
"\x05D#\x02\u0220\u0221\x072\x02\x02\u0221\u0223\x05
|
|
58294
|
-
"\
|
|
58295
|
-
"\
|
|
58296
|
-
"\u0227\u0229\x05\x10\t\x02\u0228\u0224\x03\x02\x02
|
|
58297
|
-
"\x02\
|
|
58298
|
-
"
|
|
58299
|
-
"\
|
|
58300
|
-
"\x02\x02\u022E\u022F\x05N(\x02\u022F\u0230\
|
|
58301
|
-
"\x02\x02\
|
|
58302
|
-
"\
|
|
58303
|
-
"\x02\x02\
|
|
58304
|
-
"\
|
|
58305
|
-
"\
|
|
58306
|
-
"\x02\u023B\u023C\x07j\x02\x02\u023C\u0243\
|
|
58307
|
-
"\x02\u023E\u0244\x07\x07\x02\x02\u023F\u0241\x07
|
|
58308
|
-
"\
|
|
58309
|
-
"\u0242\u0244\x05\x9CO\x02\u0243\u023D\x03\x02\x02
|
|
58310
|
-
"\x02\
|
|
58311
|
-
"\u0246\
|
|
58312
|
-
"\u0249\x05N(\x02\u0249\u024A\x07k\x02\x02\u024A\u024B
|
|
58313
|
-
"\u024D\x03\x02\x02\x02\u024C\u0247\x03\x02\x02\x02\u024C
|
|
58314
|
-
"\x02\x02\u024DQ\x03\x02\x02\x02\u024E\u0254\x05J&\x02\u024F
|
|
58315
|
-
"
|
|
58316
|
-
"\x02\x02\x02\u0253\u024E\x03\x02\x02\x02\u0253\u024F\x03\x02
|
|
58317
|
-
"
|
|
58318
|
-
"\u0257\u0258\x07k\x02\x02\u0258\u0259\x05T+\x02\u0259\u025B
|
|
58319
|
-
"\x02\u025A\u0255\x03\x02\x02\x02\u025A\u0256\x03\x02\x02\x02
|
|
58320
|
-
"\x02\x02\x02\u025C\u0262\x05\x18\r\x02\u025D\u025E\x05\x18
|
|
58321
|
-
"\u025F\x07k\x02\x02\u025F\u0260\x05V,\x02\u0260\u0262\x03
|
|
58322
|
-
"\u0261\u025C\x03\x02\x02\x02\u0261\u025D\x03\x02\x02\x02\
|
|
58323
|
-
"\x02\x02\u0263\u0269\x05\x1A\x0E\x02\u0264\u0265\x05\x1A\x0E
|
|
58324
|
-
"\u0266\x07k\x02\x02\u0266\u0267\x05X-\x02\u0267\u0269\x03\x02
|
|
58325
|
-
"\u0268\u0263\x03\x02\x02\x02\u0268\u0264\x03\x02\x02\x02\
|
|
58326
|
-
"\x02\x02\u026A\u0270\x05B\"\x02\u026B\u026C\x05B\"\x02\u026C
|
|
58327
|
-
"
|
|
58328
|
-
"\x03\x02\x02\x02\u026F\u026B\x03\x02\x02\x02\u0270[\x03\x02
|
|
58329
|
-
"\u0277\x05.\x18\x02\u0272\u0273\x05.\x18\x02\u0273\u0274
|
|
58330
|
-
"\u0274\u0275\x05\\/\x02\u0275\u0277\x03\x02\x02\x02\u0276
|
|
58331
|
-
"\x02\x02\u0276\u0272\x03\x02\x02\x02\u0277]\x03\x02\x02
|
|
58332
|
-
"\x05`1\x02\u0279\u027A\x05`1\x02\u027A\u027B\x07k\x02
|
|
58333
|
-
"\x05^0\x02\u027C\u027E\x03\x02\x02\x02\u027D\u0278\x03
|
|
58334
|
-
"\u0279\x03\x02\x02\x02\u027E_\x03\x02\x02\x02\u027F
|
|
58335
|
-
"\u0281\x079\x02\x02\u0281\u0282\x05Z.\x02\u0282
|
|
58336
|
-
"\u0290\x03\x02\x02\x02\u0284\u0285\x07:\x02\x02
|
|
58337
|
-
"\u0286\u0287\x05F$\x02\u0287\u0290\x03\x02\x02\x02
|
|
58338
|
-
"\u0289\u028B\x07\x17\x02\x02\u028A\u0289\x03\x02
|
|
58339
|
-
"\x02\x02\
|
|
58340
|
-
"\x05F$\x02\u028E\u0290\x03\x02\x02\x02\u028F
|
|
58341
|
-
"\
|
|
58342
|
-
"\x02\x02\
|
|
58343
|
-
"
|
|
58344
|
-
"\x07;\x02\x02\u0296\u0298\x05d3\x02\u0297\u0294
|
|
58345
|
-
"\
|
|
58346
|
-
"\x02\x02\u029Ac\x03\x02\x02\x02\u029B\u0299\x03\x02
|
|
58347
|
-
"\b3\x01\x02\u029D\u029E\x05f4\x02\u029E\u02A4\x03
|
|
58348
|
-
"\f\x03\x02\x02\u02A0\u02A1\x07<\x02\x02\u02A1
|
|
58349
|
-
"\
|
|
58350
|
-
"\u02A4\
|
|
58351
|
-
"\x02\x02\u02A7\u02A8\b4\x01\x02\u02A8\u02A9
|
|
58352
|
-
"\x02\x02\x02\u02AA\u02AB\f\x03\x02\x02\u02AB
|
|
58353
|
-
"\
|
|
58354
|
-
"\
|
|
58355
|
-
"\x02\x02\
|
|
58356
|
-
"\x05j6\x02\u02B4\u02B5\x07>\x02\x02\u02B5
|
|
58357
|
-
"\x07?\x02\x02\u02B7\u02B9\x05h5\x02\u02B8
|
|
58358
|
-
"\
|
|
58359
|
-
"\x02\x02\u02BA\
|
|
58360
|
-
"\b6\x01\x02\u02BD\u02BE\x05l7\x02\u02BE\u02C4
|
|
58361
|
-
"\f\x03\x02\x02\u02C0\u02C1\x07@\x02\x02\u02C1
|
|
58362
|
-
"\
|
|
58363
|
-
"\u02C4\
|
|
58364
|
-
"\x02\x02\
|
|
58365
|
-
"\x02\x02\u02CA\u02CB\x05n8\x02\u02CB\u02D9
|
|
58366
|
-
"\x05n8\x02\u02CD\u02CE\x07B\x02\x02\u02CE
|
|
58367
|
-
"\x03\x02\x02\x02\u02D0\u02D1\x05n8\x02\u02D1
|
|
58368
|
-
"\u02D3\x05n8\x02\u02D3\u02D9\x03\x02\x02\x02
|
|
58369
|
-
"\u02D6\x07D\x02\x02\u02D6\u02D7\x05n8\x02
|
|
58370
|
-
"\
|
|
58371
|
-
"\x02\x02\x02\u02D8\
|
|
58372
|
-
"
|
|
58373
|
-
"\u02EA\x05n8\x02\u02DD\u02DE\x07F\x02\x02\u02DE
|
|
58374
|
-
"\u02E0\x07G\x02\x02\u02E0\u02EA\x05n8\x02\u02E1
|
|
58375
|
-
"\u02EA\x05n8\x02\u02E3\u02E4\x07I\x02\x02\u02E4
|
|
58376
|
-
"\u02E6\x07J\x02\x02\u02E6\u02EA\x05n8\x02\u02E7
|
|
58377
|
-
"\
|
|
58378
|
-
"\u02E9\
|
|
58379
|
-
"\x02\x02\x02\u02E9\
|
|
58380
|
-
"\
|
|
58381
|
-
"\
|
|
58382
|
-
"\
|
|
58383
|
-
"\x02\x02\x02\u02F1\
|
|
58384
|
-
"\
|
|
58385
|
-
"\
|
|
58386
|
-
"\x02\x02\
|
|
58387
|
-
"\x05t;\x02\u02FB\u02FC\t\
|
|
58388
|
-
"\
|
|
58389
|
-
"\u0300\b;\x01\x02\u0300\u0301\x05v<\x02\u0301
|
|
58390
|
-
"\
|
|
58391
|
-
"\
|
|
58392
|
-
"\x02\x02\u0307\
|
|
58393
|
-
"\x03\x02\x02\x02\
|
|
58394
|
-
"\
|
|
58395
|
-
"\u030Ew\x03\x02\x02\x02\u030F\u0310\b=\x01
|
|
58396
|
-
"\u0317\x03\x02\x02\x02\u0312\u0313\f\x03
|
|
58397
|
-
"\x02\
|
|
58398
|
-
"\x02\x02\x02\
|
|
58399
|
-
"
|
|
58400
|
-
"\
|
|
58401
|
-
"\u031E\
|
|
58402
|
-
"\x02\
|
|
58403
|
-
"\x03\x02\x02\x02\u0323
|
|
58404
|
-
"\
|
|
58405
|
-
"\
|
|
58406
|
-
"\
|
|
58407
|
-
"\x02\x02\
|
|
58408
|
-
"
|
|
58409
|
-
"\
|
|
58410
|
-
"\x02\u0335\
|
|
58411
|
-
"\
|
|
58412
|
-
"\
|
|
58413
|
-
"\x02\
|
|
58414
|
-
"\
|
|
58415
|
-
"\
|
|
58416
|
-
"\
|
|
58417
|
-
"\x02\x02\u0346\
|
|
58418
|
-
"\
|
|
58419
|
-
"\
|
|
58420
|
-
"\
|
|
58421
|
-
"\x02\x02\u0350\
|
|
58422
|
-
"\
|
|
58423
|
-
"\x02\
|
|
58424
|
-
"\x03\x02\x02\x02\u0357\
|
|
58425
|
-
"\
|
|
58426
|
-
"
|
|
58427
|
-
"\
|
|
58428
|
-
"\
|
|
58429
|
-
"\x02\x02\x02\
|
|
58430
|
-
"\
|
|
58431
|
-
"\x02\u0367\
|
|
58432
|
-
"\x050\x19\x02\u036A\u037C\x05J&\x02\u036B
|
|
58433
|
-
"\x05N(\x02\u036D\u036E\x07V\x02\x02\u036E
|
|
58434
|
-
"\x07W\x02\x02\u0370\u0371\x07\v\x02\x02\u0371
|
|
58435
|
-
"\x05F$\x02\u0373\u0374\x07\f\x02\x02\u0374
|
|
58436
|
-
"\u0376\x07\x1D\x02\x02\u0376\u0377\x05`1\x02
|
|
58437
|
-
"\u0378\u037C\x03\x02\x02\x02\u0379\u037C\
|
|
58438
|
-
"
|
|
58439
|
-
"\x03\x02\x02\x02\u037B\
|
|
58440
|
-
"\u037B\
|
|
58441
|
-
"\x02\x02\x02\u037B\
|
|
58442
|
-
"\u0383\x05J&\x02\u037E\u037F\x05J&\x02\u037F
|
|
58443
|
-
"\u0381\x05\x8AF\x02\u0381\u0383\x03\x02\x02
|
|
58444
|
-
"\x02\u0382\
|
|
58445
|
-
"\x05\x8EH\x02\u0385\x8D\x03\x02\x02\x02\u0386
|
|
58446
|
-
"\x8F\x03\x02\x02\x02\u0388\u0389\x07Y\x02\x02
|
|
58447
|
-
"\u038C\x05\x9EP\x02\u038B\u038D\x05,\x17\x02
|
|
58448
|
-
"\u038C\
|
|
58449
|
-
"\x1A\x0E\x02\u038F\x93\x03\x02\x02\x02\u0390
|
|
58450
|
-
"\u0392\x05`1\x02\u0392\x95\x03\x02\x02\x02\u0393
|
|
58451
|
-
"\u0395\x05N(\x02\u0395\u0396\x07)\x02\x02\u0396
|
|
58452
|
-
"\u0398\x07\"\x02\x02\u0398\u0399\x05\x9EP\x02\u0399
|
|
58453
|
-
"\u039A\u039B\x05N(\x02\u039B\u039C\x07\x18\x02\x02
|
|
58454
|
-
"
|
|
58455
|
-
"\x02\x02\u03A0\u03A6\x05\x9CO\x02\u03A1\u03A2\x05\
|
|
58456
|
-
"\x07k\x02\x02\u03A3\u03A4\x05\x9AN\x02\u03A4\u03A6\x03
|
|
58457
|
-
"\
|
|
58458
|
-
"\x02\u03A7\u03A8\x07m\x02\x02\u03A8\x9D\x03\x02\x02\x02
|
|
58459
|
-
"\v\x02\x02\u03AA\u03AC\x05\xA2R\x02\u03AB\u03AA\x03\x02
|
|
58460
|
-
"\u03AF\x03\x02\x02\x02\u03AD\u03AB\x03\x02\x02\x02\u03AD
|
|
58461
|
-
"\x02\x02\u03AE\u03B0\x03\x02\x02\x02\u03AF\u03AD\x03\x02
|
|
58462
|
-
"\u03B6\x07\f\x02\x02\u03B1\u03B3\x07$\x02\x02\u03B2\u03B1
|
|
58463
|
-
"\x02\u03B2\u03B3\x03\x02\x02\x02\u03B3\u03B4\x03\x02\x02\x02
|
|
58464
|
-
"\x05J&\x02\u03B5\u03A9\x03\x02\x02\x02\u03B5\u03B2\x03\x02
|
|
58465
|
-
"\x9F\x03\x02\x02\x02\u03B7\u03B8\x07V\x02\x02\u03B8\u03BD
|
|
58466
|
-
"\u03BD\x05\x9CO\x02\u03BA\u03BB\x07(\x02\x02\u03BB\u03BD
|
|
58467
|
-
"\u03BC\u03B7\x03\x02\x02\x02\u03BC\u03B9\x03\x02\x02\x02
|
|
58468
|
-
"\x02\x02\x02\u03BD\xA1\x03\x02\x02\x02\u03BE\u03BF\x05
|
|
58469
|
-
"\u03C0\x05@!\x02\u03C0\u03C1\x05\xA6T\x02\u03C1\u03C6\x03
|
|
58470
|
-
"\u03C2\u03C3\x07g\x02\x02\u03C3\u03C6\x05\xA4S\x02\u03C4\u03C6
|
|
58471
|
-
"\u03C5\u03BE\x03\x02\x02\x02\u03C5\u03C2\x03\x02\x02\x02\u03C5
|
|
58472
|
-
"\x02\x02\x02\u03C6\xA3\x03\x02\x02\x02\u03C7\u03C8\x07L\x02
|
|
58473
|
-
"\u03D2\x05J&\x02\u03C9\u03D2\x05J&\x02\u03CA\u03CD\x05\xA0Q
|
|
58474
|
-
"\u03CC\x07\x1B\x02\x02\u03CC\u03CE\x05J&\x02\u03CD\u03CB\x03
|
|
58475
|
-
"\u03CE\u03CF\x03\x02\x02\x02\u03CF\u03CD\x03\x02\x02\x02\u03CF
|
|
58476
|
-
"\x02\x02\x02\u03D0\u03D2\x03\x02\x02\x02\u03D1\u03C7\x03\x02
|
|
58477
|
-
"\u03C9\x03\x02\x02\x02\u03D1\u03CA\x03\x02\x02\x02\u03D2
|
|
58478
|
-
"\x02\u03D3\u03D4\bT\x01\x02\u03D4\u03DA\x05\xA8U\x02\u03D5
|
|
58479
|
-
"\x02\x02\u03D6\u03D7\x05\xA6T\x02\u03D7\u03D8\x07\x1E\x02
|
|
58480
|
-
"\x03\x02\x02\x02\u03D9\u03D3\x03\x02\x02\x02\u03D9\u03D5
|
|
58481
|
-
"\u03DA\u03E0\x03\x02\x02\x02\u03DB\u03DC\f\x04\x02\x02
|
|
58482
|
-
"\x0F\x02\x02\u03DD\u03DF\x05\xA8U\x02\u03DE\u03DB\x03
|
|
58483
|
-
"\u03E2\x03\x02\x02\x02\u03E0\u03DE\x03\x02\x02\x02\u03E0
|
|
58484
|
-
"\x02\x02\u03E1\xA7\x03\x02\x02\x02\u03E2\u03E0\x03\x02\x02
|
|
58485
|
-
"\bU\x01\x02\u03E4\u03E5\x07\x1D\x02\x02\u03E5\u03E6\x05
|
|
58486
|
-
"\u03E7\x07\x1E\x02\x02\u03E7\u03EA\x03\x02\x02\x02\u03E8
|
|
58487
|
-
"
|
|
58488
|
-
"\x03\x02\x02\x02\u03EB\u03EC\f\x04\x02\x02\u03EC\u03ED
|
|
58489
|
-
"\u03EF\x05\xAAV\x02\u03EE\u03EB\x03\x02\x02\x02\u03EF
|
|
58490
|
-
"\
|
|
58491
|
-
"\x03\x02\x02\x02\u03F2\u03F0\x03\x02\x02\x02\u03F3\u03FA
|
|
58492
|
-
"\u03F4\u03FA\x05J&\x02\u03F5\u03F6\x07\x1D\x02\x02\u03F6
|
|
58493
|
-
"
|
|
58494
|
-
"\x03\x02\x02\x02\u03F9\u03F4\x03\x02\x02\x02\u03F9\u03F5
|
|
58495
|
-
"\u03FA\xAB\x03\x02\x02\x02x\xAE\xB3\xB7\xC1\xC7\xCD\xD0
|
|
58496
|
-
"\xF7\xFA\xFD\u0100\u0105\u0109\u010D\u0117\u011A\u0123
|
|
58497
|
-
"\u0137\u0144\u0148\u014C\u0155\u015A\u015D\u0161\u0168
|
|
58498
|
-
"\u0179\u017D\u0180\u0184\u018A\u018E\u0196\u019F\u01A3
|
|
58499
|
-
"\u01B9\u01BD\u01C2\u01CF\u01D2\u01D6\u01DF\u01E3\u01EC
|
|
58500
|
-
"\u0209\u020E\u021A\u0222\u0228\u022C\u0233\u0239\u0240
|
|
58501
|
-
"\u025A\u0261\u0268\u026F\u0276\u027D\u028A\u028F\u0299
|
|
58502
|
-
"\u02BA\u02C4\u02D8\u02E9\u02F0\u02F7\u02FD\u0307\u030D
|
|
58503
|
-
"\u0339\u0346\u0350\u0357\u0361\u0367\u037B\u0382\u038C
|
|
58504
|
-
"\u03B5\u03BC\u03C5\u03CF\u03D1\u03D9\u03E0\u03E9\u03F0
|
|
59284
|
+
"\x03\x02\x02\x02\u01BA\u01BD\x03\x02";
|
|
59285
|
+
ForgeParser._serializedATNSegment1 = "\x02\x02\u01BB\u01BC\x07\"\x02\x02\u01BC\u01BE\x05\x9EP\x02\u01BD\u01BB" +
|
|
59286
|
+
"\x03\x02\x02\x02\u01BD\u01BE\x03\x02\x02\x02\u01BE3\x03\x02\x02\x02\u01BF" +
|
|
59287
|
+
"\u01C0\x07\x1F\x02\x02\u01C0\u01C2\x073\x02\x02\u01C1\u01C3\x07\x17\x02" +
|
|
59288
|
+
"\x02\u01C2\u01C1\x03\x02\x02\x02\u01C2\u01C3\x03\x02\x02\x02\u01C3\u01C4" +
|
|
59289
|
+
"\x03\x02\x02\x02\u01C4\u01C5\x05V,\x02\u01C5\u01C6\x072\x02\x02\u01C6" +
|
|
59290
|
+
"\u01C7\x05`1\x02\u01C7\u01C8\x07)\x02\x02\u01C8\u01C9\t\b\x02\x02\u01C9" +
|
|
59291
|
+
"\u01CA\x07\"\x02\x02\u01CA\u01CF\x05N(\x02\u01CB\u01CC\x07\x04\x02\x02" +
|
|
59292
|
+
"\u01CC\u01CD\x05^0\x02\u01CD\u01CE\x07\x05\x02\x02\u01CE\u01D0\x03\x02" +
|
|
59293
|
+
"\x02\x02\u01CF\u01CB\x03\x02\x02\x02\u01CF\u01D0\x03\x02\x02\x02\u01D0" +
|
|
59294
|
+
"\u01D2\x03\x02\x02\x02\u01D1\u01D3\x05,\x17\x02\u01D2\u01D1\x03\x02\x02" +
|
|
59295
|
+
"\x02\u01D2\u01D3\x03\x02\x02\x02\u01D3\u01D6\x03\x02\x02\x02\u01D4\u01D5" +
|
|
59296
|
+
"\x07\"\x02\x02\u01D5\u01D7\x05\x9EP\x02\u01D6\u01D4\x03\x02\x02\x02\u01D6" +
|
|
59297
|
+
"\u01D7\x03\x02\x02\x02\u01D75\x03\x02\x02\x02\u01D8\u01D9\x07\x1F\x02" +
|
|
59298
|
+
"\x02\u01D9\u01DA\x05`1\x02\u01DA\u01DB\x07)\x02\x02\u01DB\u01DC\t\b\x02" +
|
|
59299
|
+
"\x02\u01DC\u01DD\x07\"\x02\x02\u01DD\u01DF\x05N(\x02\u01DE\u01E0\x05," +
|
|
59300
|
+
"\x17\x02\u01DF\u01DE\x03\x02\x02\x02\u01DF\u01E0\x03\x02\x02\x02\u01E0" +
|
|
59301
|
+
"\u01E3\x03\x02\x02\x02\u01E1\u01E2\x07\"\x02\x02\u01E2\u01E4\x05\x9EP" +
|
|
59302
|
+
"\x02\u01E3\u01E1\x03\x02\x02\x02\u01E3\u01E4\x03\x02\x02\x02\u01E47\x03" +
|
|
59303
|
+
"\x02\x02\x02\u01E5\u01E6\x07\x1F\x02\x02\u01E6\u01E7\x05`1\x02\u01E7\u01E8" +
|
|
59304
|
+
"\x07)\x02\x02\u01E8\u01E9\t\t\x02\x02\u01E9\u01EA\x078\x02\x02\u01EA\u01EC" +
|
|
59305
|
+
"\x05N(\x02\u01EB\u01ED\x05,\x17\x02\u01EC\u01EB\x03\x02\x02\x02\u01EC" +
|
|
59306
|
+
"\u01ED\x03\x02\x02\x02\u01ED\u01F0\x03\x02\x02\x02\u01EE\u01EF\x07\"\x02" +
|
|
59307
|
+
"\x02\u01EF\u01F1\x05\x9EP\x02\u01F0\u01EE\x03\x02\x02\x02\u01F0\u01F1" +
|
|
59308
|
+
"\x03\x02\x02\x02\u01F19\x03\x02\x02\x02\u01F2\u01F3\x07/\x02\x02\u01F3" +
|
|
59309
|
+
"\u01F4\x071\x02\x02\u01F4\u01F5\x07\"\x02\x02\u01F5\u01F6\x05N(\x02\u01F6" +
|
|
59310
|
+
"\u01FA\x07\v\x02\x02\u01F7\u01F9\x05<\x1F\x02\u01F8\u01F7\x03\x02\x02" +
|
|
59311
|
+
"\x02\u01F9\u01FC\x03\x02\x02\x02\u01FA\u01F8\x03\x02\x02\x02\u01FA\u01FB" +
|
|
59312
|
+
"\x03\x02\x02\x02\u01FB\u01FD\x03\x02\x02\x02\u01FC\u01FA\x03\x02\x02\x02" +
|
|
59313
|
+
"\u01FD\u01FE\x07\f\x02\x02\u01FE;\x03\x02\x02\x02\u01FF\u0206\x05\x96" +
|
|
59314
|
+
"L\x02\u0200\u0206\x05(\x15\x02\u0201\u0206\x054\x1B\x02\u0202\u0206\x05" +
|
|
59315
|
+
"6\x1C\x02\u0203\u0206\x052\x1A\x02\u0204\u0206\x058\x1D\x02\u0205\u01FF" +
|
|
59316
|
+
"\x03\x02\x02\x02\u0205\u0200\x03\x02\x02\x02\u0205\u0201\x03\x02\x02\x02" +
|
|
59317
|
+
"\u0205\u0202\x03\x02\x02\x02\u0205\u0203\x03\x02\x02\x02\u0205\u0204\x03" +
|
|
59318
|
+
"\x02\x02\x02\u0206=\x03\x02\x02\x02\u0207\u020A\x05\x10\t\x02\u0208\u020A" +
|
|
59319
|
+
"\x07\x14\x02\x02\u0209\u0207\x03\x02\x02\x02\u0209\u0208\x03\x02\x02\x02" +
|
|
59320
|
+
"\u0209\u020A\x03\x02\x02\x02\u020A\u020B\x03\x02\x02\x02\u020B\u020E\x07" +
|
|
59321
|
+
"\\\x02\x02\u020C\u020F\x05\x10\t\x02\u020D\u020F\x07\x14\x02\x02\u020E" +
|
|
59322
|
+
"\u020C\x03\x02\x02\x02\u020E\u020D\x03\x02\x02\x02\u020E\u020F\x03\x02" +
|
|
59323
|
+
"\x02\x02\u020F?\x03\x02\x02\x02\u0210\u0211\t\n\x02\x02\u0211A\x03\x02" +
|
|
59324
|
+
"\x02\x02\u0212\u0213\x05N(\x02\u0213\u0214\x07a\x02\x02\u0214\u0215\x05" +
|
|
59325
|
+
"`1\x02\u0215C\x03\x02\x02\x02\u0216\u021A\x07\v\x02\x02\u0217\u0219\x05" +
|
|
59326
|
+
"`1\x02\u0218\u0217\x03\x02\x02\x02\u0219\u021C\x03\x02\x02\x02\u021A\u0218" +
|
|
59327
|
+
"\x03\x02\x02\x02\u021A\u021B\x03\x02\x02\x02\u021B\u021D\x03\x02\x02\x02" +
|
|
59328
|
+
"\u021C\u021A\x03\x02\x02\x02\u021D\u021E\x07\f\x02\x02\u021EE\x03\x02" +
|
|
59329
|
+
"\x02\x02\u021F\u0223\x05D#\x02\u0220\u0221\x072\x02\x02\u0221\u0223\x05" +
|
|
59330
|
+
"`1\x02\u0222\u021F\x03\x02\x02\x02\u0222\u0220\x03\x02\x02\x02\u0223G" +
|
|
59331
|
+
"\x03\x02\x02\x02\u0224\u0229\x073\x02\x02\u0225\u0229\x07g\x02\x02\u0226" +
|
|
59332
|
+
"\u0229\x07h\x02\x02\u0227\u0229\x05\x10\t\x02\u0228\u0224\x03\x02\x02" +
|
|
59333
|
+
"\x02\u0228\u0225\x03\x02\x02\x02\u0228\u0226\x03\x02\x02\x02\u0228\u0227" +
|
|
59334
|
+
"\x03\x02\x02\x02\u0229I\x03\x02\x02\x02\u022A\u022B\x07W\x02\x02\u022B" +
|
|
59335
|
+
"\u022D\x07l\x02\x02\u022C\u022A\x03\x02\x02\x02\u022C\u022D\x03\x02\x02" +
|
|
59336
|
+
"\x02\u022D\u0233\x03\x02\x02\x02\u022E\u022F\x05N(\x02\u022F\u0230\x07" +
|
|
59337
|
+
"l\x02\x02\u0230\u0232\x03\x02\x02\x02\u0231\u022E\x03\x02\x02\x02\u0232" +
|
|
59338
|
+
"\u0235\x03\x02\x02\x02\u0233\u0231\x03\x02\x02\x02\u0233\u0234\x03\x02" +
|
|
59339
|
+
"\x02\x02\u0234\u0236\x03\x02\x02\x02\u0235\u0233\x03\x02\x02\x02\u0236" +
|
|
59340
|
+
"\u023A\x05N(\x02\u0237\u023A\x07i\x02\x02\u0238\u023A\x07h\x02\x02\u0239" +
|
|
59341
|
+
"\u022C\x03\x02\x02\x02\u0239\u0237\x03\x02\x02\x02\u0239\u0238\x03\x02" +
|
|
59342
|
+
"\x02\x02\u023AK\x03\x02\x02\x02\u023B\u023C\x07j\x02\x02\u023C\u0243\x05" +
|
|
59343
|
+
"J&\x02\u023D\u0244\x05J&\x02\u023E\u0244\x07\x07\x02\x02\u023F\u0241\x07" +
|
|
59344
|
+
"(\x02\x02\u0240\u023F\x03\x02\x02\x02\u0240\u0241\x03\x02\x02\x02\u0241" +
|
|
59345
|
+
"\u0242\x03\x02\x02\x02\u0242\u0244\x05\x9CO\x02\u0243\u023D\x03\x02\x02" +
|
|
59346
|
+
"\x02\u0243\u023E\x03\x02\x02\x02\u0243\u0240\x03\x02\x02\x02\u0244M\x03" +
|
|
59347
|
+
"\x02\x02\x02\u0245\u0246\t\v\x02\x02\u0246O\x03\x02\x02\x02\u0247\u024D" +
|
|
59348
|
+
"\x05N(\x02\u0248\u0249\x05N(\x02\u0249\u024A\x07k\x02\x02\u024A\u024B" +
|
|
59349
|
+
"\x05P)\x02\u024B\u024D\x03\x02\x02\x02\u024C\u0247\x03\x02\x02\x02\u024C" +
|
|
59350
|
+
"\u0248\x03\x02\x02\x02\u024DQ\x03\x02\x02\x02\u024E\u0254\x05J&\x02\u024F" +
|
|
59351
|
+
"\u0250\x05J&\x02\u0250\u0251\x07k\x02\x02\u0251\u0252\x05R*\x02\u0252" +
|
|
59352
|
+
"\u0254\x03\x02\x02\x02\u0253\u024E\x03\x02\x02\x02\u0253\u024F\x03\x02" +
|
|
59353
|
+
"\x02\x02\u0254S\x03\x02\x02\x02\u0255\u025B\x05\x16\f\x02\u0256\u0257" +
|
|
59354
|
+
"\x05\x16\f\x02\u0257\u0258\x07k\x02\x02\u0258\u0259\x05T+\x02\u0259\u025B" +
|
|
59355
|
+
"\x03\x02\x02\x02\u025A\u0255\x03\x02\x02\x02\u025A\u0256\x03\x02\x02\x02" +
|
|
59356
|
+
"\u025BU\x03\x02\x02\x02\u025C\u0262\x05\x18\r\x02\u025D\u025E\x05\x18" +
|
|
59357
|
+
"\r\x02\u025E\u025F\x07k\x02\x02\u025F\u0260\x05V,\x02\u0260\u0262\x03" +
|
|
59358
|
+
"\x02\x02\x02\u0261\u025C\x03\x02\x02\x02\u0261\u025D\x03\x02\x02\x02\u0262" +
|
|
59359
|
+
"W\x03\x02\x02\x02\u0263\u0269\x05\x1A\x0E\x02\u0264\u0265\x05\x1A\x0E" +
|
|
59360
|
+
"\x02\u0265\u0266\x07k\x02\x02\u0266\u0267\x05X-\x02\u0267\u0269\x03\x02" +
|
|
59361
|
+
"\x02\x02\u0268\u0263\x03\x02\x02\x02\u0268\u0264\x03\x02\x02\x02\u0269" +
|
|
59362
|
+
"Y\x03\x02\x02\x02\u026A\u0270\x05B\"\x02\u026B\u026C\x05B\"\x02\u026C" +
|
|
59363
|
+
"\u026D\x07k\x02\x02\u026D\u026E\x05Z.\x02\u026E\u0270\x03\x02\x02\x02" +
|
|
59364
|
+
"\u026F\u026A\x03\x02\x02\x02\u026F\u026B\x03\x02\x02\x02\u0270[\x03\x02" +
|
|
59365
|
+
"\x02\x02\u0271\u0277\x05.\x18\x02\u0272\u0273\x05.\x18\x02\u0273\u0274" +
|
|
59366
|
+
"\x07k\x02\x02\u0274\u0275\x05\\/\x02\u0275\u0277\x03\x02\x02\x02\u0276" +
|
|
59367
|
+
"\u0271\x03\x02\x02\x02\u0276\u0272\x03\x02\x02\x02\u0277]\x03\x02\x02" +
|
|
59368
|
+
"\x02\u0278\u027E\x05`1\x02\u0279\u027A\x05`1\x02\u027A\u027B\x07k\x02" +
|
|
59369
|
+
"\x02\u027B\u027C\x05^0\x02\u027C\u027E\x03\x02\x02\x02\u027D\u0278\x03" +
|
|
59370
|
+
"\x02\x02\x02\u027D\u0279\x03\x02\x02\x02\u027E_\x03\x02\x02\x02\u027F" +
|
|
59371
|
+
"\u0290\x05b2\x02\u0280\u0281\x079\x02\x02\u0281\u0282\x05Z.\x02\u0282" +
|
|
59372
|
+
"\u0283\x05F$\x02\u0283\u0290\x03\x02\x02\x02\u0284\u0285\x07:\x02\x02" +
|
|
59373
|
+
"\u0285\u0286\x05Z.\x02\u0286\u0287\x05F$\x02\u0287\u0290\x03\x02\x02\x02" +
|
|
59374
|
+
"\u0288\u028A\x05H%\x02\u0289\u028B\x07\x17\x02\x02\u028A\u0289\x03\x02" +
|
|
59375
|
+
"\x02\x02\u028A\u028B\x03\x02\x02\x02\u028B\u028C\x03\x02\x02\x02\u028C" +
|
|
59376
|
+
"\u028D\x05V,\x02\u028D\u028E\x05F$\x02\u028E\u0290\x03\x02\x02\x02\u028F" +
|
|
59377
|
+
"\u027F\x03\x02\x02\x02\u028F\u0280\x03\x02\x02\x02\u028F\u0284\x03\x02" +
|
|
59378
|
+
"\x02\x02\u028F\u0288\x03\x02\x02\x02\u0290a\x03\x02\x02\x02\u0291\u0292" +
|
|
59379
|
+
"\b2\x01\x02\u0292\u0293\x05d3\x02\u0293\u0299\x03\x02\x02\x02\u0294\u0295" +
|
|
59380
|
+
"\f\x03\x02\x02\u0295\u0296\x07;\x02\x02\u0296\u0298\x05d3\x02\u0297\u0294" +
|
|
59381
|
+
"\x03\x02\x02\x02\u0298\u029B\x03\x02\x02\x02\u0299\u0297\x03\x02\x02\x02" +
|
|
59382
|
+
"\u0299\u029A\x03\x02\x02\x02\u029Ac\x03\x02\x02\x02\u029B\u0299\x03\x02" +
|
|
59383
|
+
"\x02\x02\u029C\u029D\b3\x01\x02\u029D\u029E\x05f4\x02\u029E\u02A4\x03" +
|
|
59384
|
+
"\x02\x02\x02\u029F\u02A0\f\x03\x02\x02\u02A0\u02A1\x07<\x02\x02\u02A1" +
|
|
59385
|
+
"\u02A3\x05f4\x02\u02A2\u029F\x03\x02\x02\x02\u02A3\u02A6\x03\x02\x02\x02" +
|
|
59386
|
+
"\u02A4\u02A2\x03\x02\x02\x02\u02A4\u02A5\x03\x02\x02\x02\u02A5e\x03\x02" +
|
|
59387
|
+
"\x02\x02\u02A6\u02A4\x03\x02\x02\x02\u02A7\u02A8\b4\x01\x02\u02A8\u02A9" +
|
|
59388
|
+
"\x05h5\x02\u02A9\u02AF\x03\x02\x02\x02\u02AA\u02AB\f\x03\x02\x02\u02AB" +
|
|
59389
|
+
"\u02AC\x07=\x02\x02\u02AC\u02AE\x05h5\x02\u02AD\u02AA\x03\x02\x02\x02" +
|
|
59390
|
+
"\u02AE\u02B1\x03\x02\x02\x02\u02AF\u02AD\x03\x02\x02\x02\u02AF\u02B0\x03" +
|
|
59391
|
+
"\x02\x02\x02\u02B0g\x03\x02\x02\x02\u02B1\u02AF\x03\x02\x02\x02\u02B2" +
|
|
59392
|
+
"\u02BB\x05j6\x02\u02B3\u02B4\x05j6\x02\u02B4\u02B5\x07>\x02\x02\u02B5" +
|
|
59393
|
+
"\u02B8\x05h5\x02\u02B6\u02B7\x07?\x02\x02\u02B7\u02B9\x05h5\x02\u02B8" +
|
|
59394
|
+
"\u02B6\x03\x02\x02\x02\u02B8\u02B9\x03\x02\x02\x02\u02B9\u02BB\x03\x02" +
|
|
59395
|
+
"\x02\x02\u02BA\u02B2\x03\x02\x02\x02\u02BA\u02B3\x03\x02\x02\x02\u02BB" +
|
|
59396
|
+
"i\x03\x02\x02\x02\u02BC\u02BD\b6\x01\x02\u02BD\u02BE\x05l7\x02\u02BE\u02C4" +
|
|
59397
|
+
"\x03\x02\x02\x02\u02BF\u02C0\f\x03\x02\x02\u02C0\u02C1\x07@\x02\x02\u02C1" +
|
|
59398
|
+
"\u02C3\x05l7\x02\u02C2\u02BF\x03\x02\x02\x02\u02C3\u02C6\x03\x02\x02\x02" +
|
|
59399
|
+
"\u02C4\u02C2\x03\x02\x02\x02\u02C4\u02C5\x03\x02\x02\x02\u02C5k\x03\x02" +
|
|
59400
|
+
"\x02\x02\u02C6\u02C4\x03\x02\x02\x02\u02C7\u02D9\x05n8\x02\u02C8\u02C9" +
|
|
59401
|
+
"\x05n8\x02\u02C9\u02CA\x07A\x02\x02\u02CA\u02CB\x05n8\x02\u02CB\u02D9" +
|
|
59402
|
+
"\x03\x02\x02\x02\u02CC\u02CD\x05n8\x02\u02CD\u02CE\x07B\x02\x02\u02CE" +
|
|
59403
|
+
"\u02CF\x05n8\x02\u02CF\u02D9\x03\x02\x02\x02\u02D0\u02D1\x05n8\x02\u02D1" +
|
|
59404
|
+
"\u02D2\x07C\x02\x02\u02D2\u02D3\x05n8\x02\u02D3\u02D9\x03\x02\x02\x02" +
|
|
59405
|
+
"\u02D4\u02D5\x05n8\x02\u02D5\u02D6\x07D\x02\x02\u02D6\u02D7\x05n8\x02" +
|
|
59406
|
+
"\u02D7\u02D9\x03\x02\x02\x02\u02D8\u02C7\x03\x02\x02\x02\u02D8\u02C8\x03" +
|
|
59407
|
+
"\x02\x02\x02\u02D8\u02CC\x03\x02\x02\x02\u02D8\u02D0\x03\x02\x02\x02\u02D8" +
|
|
59408
|
+
"\u02D4\x03\x02\x02\x02\u02D9m\x03\x02\x02\x02\u02DA\u02EA\x05p9\x02\u02DB" +
|
|
59409
|
+
"\u02DC\x07E\x02\x02\u02DC\u02EA\x05n8\x02\u02DD\u02DE\x07F\x02\x02\u02DE" +
|
|
59410
|
+
"\u02EA\x05n8\x02\u02DF\u02E0\x07G\x02\x02\u02E0\u02EA\x05n8\x02\u02E1" +
|
|
59411
|
+
"\u02E2\x07H\x02\x02\u02E2\u02EA\x05n8\x02\u02E3\u02E4\x07I\x02\x02\u02E4" +
|
|
59412
|
+
"\u02EA\x05n8\x02\u02E5\u02E6\x07J\x02\x02\u02E6\u02EA\x05n8\x02\u02E7" +
|
|
59413
|
+
"\u02E8\x07K\x02\x02\u02E8\u02EA\x05n8\x02\u02E9\u02DA\x03\x02\x02\x02" +
|
|
59414
|
+
"\u02E9\u02DB\x03\x02\x02\x02\u02E9\u02DD\x03\x02\x02\x02\u02E9\u02DF\x03" +
|
|
59415
|
+
"\x02\x02\x02\u02E9\u02E1\x03\x02\x02\x02\u02E9\u02E3\x03\x02\x02\x02\u02E9" +
|
|
59416
|
+
"\u02E5\x03\x02\x02\x02\u02E9\u02E7\x03\x02\x02\x02\u02EAo\x03\x02\x02" +
|
|
59417
|
+
"\x02\u02EB\u02EC\b9\x01\x02\u02EC\u02ED\x05r:\x02\u02ED\u02F7\x03\x02" +
|
|
59418
|
+
"\x02\x02\u02EE\u02F0\f\x03\x02\x02\u02EF\u02F1\x07E\x02\x02\u02F0\u02EF" +
|
|
59419
|
+
"\x03\x02\x02\x02\u02F0\u02F1\x03\x02\x02\x02\u02F1\u02F2\x03\x02\x02\x02" +
|
|
59420
|
+
"\u02F2\u02F3\x05@!\x02\u02F3\u02F4\x05r:\x02\u02F4\u02F6\x03\x02\x02\x02" +
|
|
59421
|
+
"\u02F5\u02EE\x03\x02\x02\x02\u02F6\u02F9\x03\x02\x02\x02\u02F7\u02F5\x03" +
|
|
59422
|
+
"\x02\x02\x02\u02F7\u02F8\x03\x02\x02\x02\u02F8q\x03\x02\x02\x02\u02F9" +
|
|
59423
|
+
"\u02F7\x03\x02\x02\x02\u02FA\u02FE\x05t;\x02\u02FB\u02FC\t\f\x02\x02\u02FC" +
|
|
59424
|
+
"\u02FE\x05t;\x02\u02FD\u02FA\x03\x02\x02\x02\u02FD\u02FB\x03\x02\x02\x02" +
|
|
59425
|
+
"\u02FEs\x03\x02\x02\x02\u02FF\u0300\b;\x01\x02\u0300\u0301\x05v<\x02\u0301" +
|
|
59426
|
+
"\u0307\x03\x02\x02\x02\u0302\u0303\f\x03\x02\x02\u0303\u0304\t\r\x02\x02" +
|
|
59427
|
+
"\u0304\u0306\x05x=\x02\u0305\u0302\x03\x02\x02\x02\u0306\u0309\x03\x02" +
|
|
59428
|
+
"\x02\x02\u0307\u0305\x03\x02\x02\x02\u0307\u0308\x03\x02\x02\x02\u0308" +
|
|
59429
|
+
"u\x03\x02\x02\x02\u0309\u0307\x03\x02\x02\x02\u030A\u030E\x05x=\x02\u030B" +
|
|
59430
|
+
"\u030C\x07L\x02\x02\u030C\u030E\x05v<\x02\u030D\u030A\x03\x02\x02\x02" +
|
|
59431
|
+
"\u030D\u030B\x03\x02\x02\x02\u030Ew\x03\x02\x02\x02\u030F\u0310\b=\x01" +
|
|
59432
|
+
"\x02\u0310\u0311\x05z>\x02\u0311\u0317\x03\x02\x02\x02\u0312\u0313\f\x03" +
|
|
59433
|
+
"\x02\x02\u0313\u0314\x07M\x02\x02\u0314\u0316\x05z>\x02\u0315\u0312\x03" +
|
|
59434
|
+
"\x02\x02\x02\u0316\u0319\x03\x02\x02\x02\u0317\u0315\x03\x02\x02\x02\u0317" +
|
|
59435
|
+
"\u0318\x03\x02\x02\x02\u0318y\x03\x02\x02\x02\u0319\u0317\x03\x02\x02" +
|
|
59436
|
+
"\x02\u031A\u031B\b>\x01\x02\u031B\u031C\x05|?\x02\u031C\u0322\x03\x02" +
|
|
59437
|
+
"\x02\x02\u031D\u031E\f\x03\x02\x02\u031E\u031F\x07N\x02\x02\u031F\u0321" +
|
|
59438
|
+
"\x05|?\x02\u0320\u031D\x03\x02\x02\x02\u0321\u0324\x03\x02\x02\x02\u0322" +
|
|
59439
|
+
"\u0320\x03\x02\x02\x02\u0322\u0323\x03\x02\x02\x02\u0323{\x03\x02\x02" +
|
|
59440
|
+
"\x02\u0324\u0322\x03\x02\x02\x02\u0325\u0326\b?\x01\x02\u0326\u0327\x05" +
|
|
59441
|
+
"~@\x02\u0327\u032E\x03\x02\x02\x02\u0328\u0329\f\x03\x02\x02\u0329\u032A" +
|
|
59442
|
+
"\x05> \x02\u032A\u032B\x05~@\x02\u032B\u032D\x03\x02\x02\x02\u032C\u0328" +
|
|
59443
|
+
"\x03\x02\x02\x02\u032D\u0330\x03\x02\x02\x02\u032E\u032C\x03\x02\x02\x02" +
|
|
59444
|
+
"\u032E\u032F\x03\x02\x02\x02\u032F}\x03\x02\x02\x02\u0330\u032E\x03\x02" +
|
|
59445
|
+
"\x02\x02\u0331\u0332\b@\x01\x02\u0332\u0333\x05\x80A\x02\u0333\u0339\x03" +
|
|
59446
|
+
"\x02\x02\x02\u0334\u0335\f\x03\x02\x02\u0335\u0336\t\x0E\x02\x02\u0336" +
|
|
59447
|
+
"\u0338\x05\x80A\x02\u0337\u0334\x03\x02\x02\x02\u0338\u033B\x03\x02\x02" +
|
|
59448
|
+
"\x02\u0339\u0337\x03\x02\x02\x02\u0339\u033A\x03\x02\x02\x02\u033A\x7F" +
|
|
59449
|
+
"\x03\x02\x02\x02\u033B\u0339\x03\x02\x02\x02\u033C\u033D\bA\x01\x02\u033D" +
|
|
59450
|
+
"\u033E\x05\x82B\x02\u033E\u0346\x03\x02\x02\x02\u033F\u0340\f\x03\x02" +
|
|
59451
|
+
"\x02\u0340\u0341\x07\x04\x02\x02\u0341\u0342\x05^0\x02\u0342\u0343\x07" +
|
|
59452
|
+
"\x05\x02\x02\u0343\u0345\x03\x02\x02\x02\u0344\u033F\x03\x02\x02\x02\u0345" +
|
|
59453
|
+
"\u0348\x03\x02\x02\x02\u0346\u0344\x03\x02\x02\x02\u0346\u0347\x03\x02" +
|
|
59454
|
+
"\x02\x02\u0347\x81\x03\x02\x02\x02\u0348\u0346\x03\x02\x02\x02\u0349\u034A" +
|
|
59455
|
+
"\bB\x01\x02\u034A\u0351\x05\x84C\x02\u034B\u034C\x05N(\x02\u034C\u034D" +
|
|
59456
|
+
"\x07\x04\x02\x02\u034D\u034E\x05^0\x02\u034E\u034F\x07\x05\x02\x02\u034F" +
|
|
59457
|
+
"\u0351\x03\x02\x02\x02\u0350\u0349\x03\x02\x02\x02\u0350\u034B\x03\x02" +
|
|
59458
|
+
"\x02\x02\u0351\u0357\x03\x02\x02\x02\u0352\u0353\f\x04\x02\x02\u0353\u0354" +
|
|
59459
|
+
"\x07\x1B\x02\x02\u0354\u0356\x05\x84C\x02\u0355\u0352\x03\x02\x02\x02" +
|
|
59460
|
+
"\u0356\u0359\x03\x02\x02\x02\u0357\u0355\x03\x02\x02\x02\u0357\u0358\x03" +
|
|
59461
|
+
"\x02\x02\x02\u0358\x83\x03\x02\x02\x02\u0359\u0357\x03\x02\x02\x02\u035A" +
|
|
59462
|
+
"\u035B\bC\x01\x02\u035B\u035C\x05\x86D\x02\u035C\u0361\x03\x02\x02\x02" +
|
|
59463
|
+
"\u035D\u035E\f\x03\x02\x02\u035E\u0360\x07Q\x02\x02\u035F\u035D\x03\x02" +
|
|
59464
|
+
"\x02\x02\u0360\u0363\x03\x02\x02\x02\u0361\u035F\x03\x02\x02\x02\u0361" +
|
|
59465
|
+
"\u0362\x03\x02\x02\x02\u0362\x85\x03\x02\x02\x02\u0363\u0361\x03\x02\x02" +
|
|
59466
|
+
"\x02\u0364\u0368\x05\x88E\x02\u0365\u0366\t\x0F\x02\x02\u0366\u0368\x05" +
|
|
59467
|
+
"\x86D\x02\u0367\u0364\x03\x02\x02\x02\u0367\u0365\x03\x02\x02\x02\u0368" +
|
|
59468
|
+
"\x87\x03\x02\x02\x02\u0369\u037C\x050\x19\x02\u036A\u037C\x05J&\x02\u036B" +
|
|
59469
|
+
"\u036C\x07U\x02\x02\u036C\u037C\x05N(\x02\u036D\u036E\x07V\x02\x02\u036E" +
|
|
59470
|
+
"\u037C\x05N(\x02\u036F\u037C\x07W\x02\x02\u0370\u0371\x07\v\x02\x02\u0371" +
|
|
59471
|
+
"\u0372\x05V,\x02\u0372\u0373\x05F$\x02\u0373\u0374\x07\f\x02\x02\u0374" +
|
|
59472
|
+
"\u037C\x03\x02\x02\x02\u0375\u0376\x07\x1D\x02\x02\u0376\u0377\x05`1\x02" +
|
|
59473
|
+
"\u0377\u0378\x07\x1E\x02\x02\u0378\u037C\x03\x02\x02\x02\u0379\u037C\x05" +
|
|
59474
|
+
"D#\x02\u037A\u037C\x05\x8EH\x02\u037B\u0369\x03\x02\x02\x02\u037B\u036A" +
|
|
59475
|
+
"\x03\x02\x02\x02\u037B\u036B\x03\x02\x02\x02\u037B\u036D\x03\x02\x02\x02" +
|
|
59476
|
+
"\u037B\u036F\x03\x02\x02\x02\u037B\u0370\x03\x02\x02\x02\u037B\u0375\x03" +
|
|
59477
|
+
"\x02\x02\x02\u037B\u0379\x03\x02\x02\x02\u037B\u037A\x03\x02\x02\x02\u037C" +
|
|
59478
|
+
"\x89\x03\x02\x02\x02\u037D\u0383\x05J&\x02\u037E\u037F\x05J&\x02\u037F" +
|
|
59479
|
+
"\u0380\x07\\\x02\x02\u0380\u0381\x05\x8AF\x02\u0381\u0383\x03\x02\x02" +
|
|
59480
|
+
"\x02\u0382\u037D\x03\x02\x02\x02\u0382\u037E\x03\x02\x02\x02\u0383\x8B" +
|
|
59481
|
+
"\x03\x02\x02\x02\u0384\u0385\x05\x8EH\x02\u0385\x8D\x03\x02\x02\x02\u0386" +
|
|
59482
|
+
"\u0387\x07X\x02\x02\u0387\x8F\x03\x02\x02\x02\u0388\u0389\x07Y\x02\x02" +
|
|
59483
|
+
"\u0389\u038A\x05N(\x02\u038A\u038C\x05\x9EP\x02\u038B\u038D\x05,\x17\x02" +
|
|
59484
|
+
"\u038C\u038B\x03\x02\x02\x02\u038C\u038D\x03\x02\x02\x02\u038D\x91\x03" +
|
|
59485
|
+
"\x02\x02\x02\u038E\u038F\x05\x1A\x0E\x02\u038F\x93\x03\x02\x02\x02\u0390" +
|
|
59486
|
+
"\u0391\x07Z\x02\x02\u0391\u0392\x05`1\x02\u0392\x95\x03\x02\x02\x02\u0393" +
|
|
59487
|
+
"\u0394\x07[\x02\x02\u0394\u0395\x05N(\x02\u0395\u0396\x07)\x02\x02\u0396" +
|
|
59488
|
+
"\u0397\x05`1\x02\u0397\u0398\x07\"\x02\x02\u0398\u0399\x05\x9EP\x02\u0399" +
|
|
59489
|
+
"\x97\x03\x02\x02\x02\u039A\u039B\x05N(\x02\u039B\u039C\x07\x18\x02\x02" +
|
|
59490
|
+
"\u039C\u039D\x05\x8AF\x02\u039D\u039E\x07a\x02\x02\u039E\u039F\x05`1\x02" +
|
|
59491
|
+
"\u039F\x99\x03\x02\x02\x02\u03A0\u03A6\x05\x9CO\x02\u03A1\u03A2\x05\x9C" +
|
|
59492
|
+
"O\x02\u03A2\u03A3\x07k\x02\x02\u03A3\u03A4\x05\x9AN\x02\u03A4\u03A6\x03" +
|
|
59493
|
+
"\x02\x02\x02\u03A5\u03A0\x03\x02\x02\x02\u03A5\u03A1\x03\x02\x02\x02\u03A6" +
|
|
59494
|
+
"\x9B\x03\x02\x02\x02\u03A7\u03A8\x07m\x02\x02\u03A8\x9D\x03\x02\x02\x02" +
|
|
59495
|
+
"\u03A9\u03AD\x07\v\x02\x02\u03AA\u03AC\x05\xA2R\x02\u03AB\u03AA\x03\x02" +
|
|
59496
|
+
"\x02\x02\u03AC\u03AF\x03\x02\x02\x02\u03AD\u03AB\x03\x02\x02\x02\u03AD" +
|
|
59497
|
+
"\u03AE\x03\x02\x02\x02\u03AE\u03B0\x03\x02\x02\x02\u03AF\u03AD\x03\x02" +
|
|
59498
|
+
"\x02\x02\u03B0\u03B6\x07\f\x02\x02\u03B1\u03B3\x07$\x02\x02\u03B2\u03B1" +
|
|
59499
|
+
"\x03\x02\x02\x02\u03B2\u03B3\x03\x02\x02\x02\u03B3\u03B4\x03\x02\x02\x02" +
|
|
59500
|
+
"\u03B4\u03B6\x05J&\x02\u03B5\u03A9\x03\x02\x02\x02\u03B5\u03B2\x03\x02" +
|
|
59501
|
+
"\x02\x02\u03B6\x9F\x03\x02\x02\x02\u03B7\u03B8\x07V\x02\x02\u03B8\u03BD" +
|
|
59502
|
+
"\x05N(\x02\u03B9\u03BD\x05\x9CO\x02\u03BA\u03BB\x07(\x02\x02\u03BB\u03BD" +
|
|
59503
|
+
"\x05\x9CO\x02\u03BC\u03B7\x03\x02\x02\x02\u03BC\u03B9\x03\x02\x02\x02" +
|
|
59504
|
+
"\u03BC\u03BA\x03\x02\x02\x02\u03BD\xA1\x03\x02\x02\x02\u03BE\u03BF\x05" +
|
|
59505
|
+
"\xA4S\x02\u03BF\u03C0\x05@!\x02\u03C0\u03C1\x05\xA6T\x02\u03C1\u03C6\x03" +
|
|
59506
|
+
"\x02\x02\x02\u03C2\u03C3\x07g\x02\x02\u03C3\u03C6\x05\xA4S\x02\u03C4\u03C6" +
|
|
59507
|
+
"\x05J&\x02\u03C5\u03BE\x03\x02\x02\x02\u03C5\u03C2\x03\x02\x02\x02\u03C5" +
|
|
59508
|
+
"\u03C4\x03\x02\x02\x02\u03C6\xA3\x03\x02\x02\x02\u03C7\u03C8\x07L\x02" +
|
|
59509
|
+
"\x02\u03C8\u03D2\x05J&\x02\u03C9\u03D2\x05J&\x02\u03CA\u03CD\x05\xA0Q" +
|
|
59510
|
+
"\x02\u03CB\u03CC\x07\x1B\x02\x02\u03CC\u03CE\x05J&\x02\u03CD\u03CB\x03" +
|
|
59511
|
+
"\x02\x02\x02\u03CE\u03CF\x03\x02\x02\x02\u03CF\u03CD\x03\x02\x02\x02\u03CF" +
|
|
59512
|
+
"\u03D0\x03\x02\x02\x02\u03D0\u03D2\x03\x02\x02\x02\u03D1\u03C7\x03\x02" +
|
|
59513
|
+
"\x02\x02\u03D1\u03C9\x03\x02\x02\x02\u03D1\u03CA\x03\x02\x02\x02\u03D2" +
|
|
59514
|
+
"\xA5\x03\x02\x02\x02\u03D3\u03D4\bT\x01\x02\u03D4\u03DA\x05\xA8U\x02\u03D5" +
|
|
59515
|
+
"\u03D6\x07\x1D\x02\x02\u03D6\u03D7\x05\xA6T\x02\u03D7\u03D8\x07\x1E\x02" +
|
|
59516
|
+
"\x02\u03D8\u03DA\x03\x02\x02\x02\u03D9\u03D3\x03\x02\x02\x02\u03D9\u03D5" +
|
|
59517
|
+
"\x03\x02\x02\x02\u03DA\u03E0\x03\x02\x02\x02\u03DB\u03DC\f\x04\x02\x02" +
|
|
59518
|
+
"\u03DC\u03DD\x07\x0F\x02\x02\u03DD\u03DF\x05\xA8U\x02\u03DE\u03DB\x03" +
|
|
59519
|
+
"\x02\x02\x02\u03DF\u03E2\x03\x02\x02\x02\u03E0\u03DE\x03\x02\x02\x02\u03E0" +
|
|
59520
|
+
"\u03E1\x03\x02\x02\x02\u03E1\xA7\x03\x02\x02\x02\u03E2\u03E0\x03\x02\x02" +
|
|
59521
|
+
"\x02\u03E3\u03E4\bU\x01\x02\u03E4\u03E5\x07\x1D\x02\x02\u03E5\u03E6\x05" +
|
|
59522
|
+
"\xA8U\x02\u03E6\u03E7\x07\x1E\x02\x02\u03E7\u03EA\x03\x02\x02\x02\u03E8" +
|
|
59523
|
+
"\u03EA\x05\xAAV\x02\u03E9\u03E3\x03\x02\x02\x02\u03E9\u03E8\x03\x02\x02" +
|
|
59524
|
+
"\x02\u03EA\u03F0\x03\x02\x02\x02\u03EB\u03EC\f\x04\x02\x02\u03EC\u03ED" +
|
|
59525
|
+
"\t\x10\x02\x02\u03ED\u03EF\x05\xAAV\x02\u03EE\u03EB\x03\x02\x02\x02\u03EF" +
|
|
59526
|
+
"\u03F2\x03\x02\x02\x02\u03F0\u03EE\x03\x02\x02\x02\u03F0\u03F1\x03\x02" +
|
|
59527
|
+
"\x02\x02\u03F1\xA9\x03\x02\x02\x02\u03F2\u03F0\x03\x02\x02\x02\u03F3\u03FA" +
|
|
59528
|
+
"\x05\xA0Q\x02\u03F4\u03FA\x05J&\x02\u03F5\u03F6\x07\x1D\x02\x02\u03F6" +
|
|
59529
|
+
"\u03F7\x05\xA6T\x02\u03F7\u03F8\x07\x1E\x02\x02\u03F8\u03FA\x03\x02\x02" +
|
|
59530
|
+
"\x02\u03F9\u03F3\x03\x02\x02\x02\u03F9\u03F4\x03\x02\x02\x02\u03F9\u03F5" +
|
|
59531
|
+
"\x03\x02\x02\x02\u03FA\xAB\x03\x02\x02\x02x\xAE\xB3\xB7\xC1\xC7\xCD\xD0" +
|
|
59532
|
+
"\xD8\xDC\xE2\xE4\xF7\xFA\xFD\u0100\u0105\u0109\u010D\u0117\u011A\u0123" +
|
|
59533
|
+
"\u0128\u012D\u0132\u0137\u0144\u0148\u014C\u0155\u015A\u015D\u0161\u0168" +
|
|
59534
|
+
"\u016D\u0170\u0174\u0179\u017D\u0180\u0184\u018A\u018E\u0196\u019F\u01A3" +
|
|
59535
|
+
"\u01A6\u01AF\u01B2\u01B9\u01BD\u01C2\u01CF\u01D2\u01D6\u01DF\u01E3\u01EC" +
|
|
59536
|
+
"\u01F0\u01FA\u0205\u0209\u020E\u021A\u0222\u0228\u022C\u0233\u0239\u0240" +
|
|
59537
|
+
"\u0243\u024C\u0253\u025A\u0261\u0268\u026F\u0276\u027D\u028A\u028F\u0299" +
|
|
59538
|
+
"\u02A4\u02AF\u02B8\u02BA\u02C4\u02D8\u02E9\u02F0\u02F7\u02FD\u0307\u030D" +
|
|
59539
|
+
"\u0317\u0322\u032E\u0339\u0346\u0350\u0357\u0361\u0367\u037B\u0382\u038C" +
|
|
59540
|
+
"\u03A5\u03AD\u03B2\u03B5\u03BC\u03C5\u03CF\u03D1\u03D9\u03E0\u03E9\u03F0" +
|
|
59541
|
+
"\u03F9";
|
|
58505
59542
|
ForgeParser._serializedATN = Utils.join([
|
|
58506
59543
|
ForgeParser._serializedATNSegment0,
|
|
58507
59544
|
ForgeParser._serializedATNSegment1,
|
|
@@ -60139,7 +61176,8 @@ class OptionDeclContext extends ParserRuleContext_1.ParserRuleContext {
|
|
|
60139
61176
|
}
|
|
60140
61177
|
exports.OptionDeclContext = OptionDeclContext;
|
|
60141
61178
|
class NameContext extends ParserRuleContext_1.ParserRuleContext {
|
|
60142
|
-
IDENTIFIER_TOK() { return this.
|
|
61179
|
+
IDENTIFIER_TOK() { return this.tryGetToken(ForgeParser.IDENTIFIER_TOK, 0); }
|
|
61180
|
+
QUOTED_IDENTIFIER_TOK() { return this.tryGetToken(ForgeParser.QUOTED_IDENTIFIER_TOK, 0); }
|
|
60143
61181
|
constructor(parent, invokingState) {
|
|
60144
61182
|
super(parent, invokingState);
|
|
60145
61183
|
}
|
|
@@ -62077,6 +63115,83 @@ class ConsistencyAssertionTest extends SyntaxNode {
|
|
|
62077
63115
|
exports.ConsistencyAssertionTest = ConsistencyAssertionTest;
|
|
62078
63116
|
|
|
62079
63117
|
|
|
63118
|
+
/***/ }),
|
|
63119
|
+
|
|
63120
|
+
/***/ "./src/forge-antlr/utils.ts":
|
|
63121
|
+
/*!**********************************!*\
|
|
63122
|
+
!*** ./src/forge-antlr/utils.ts ***!
|
|
63123
|
+
\**********************************/
|
|
63124
|
+
/***/ ((__unused_webpack_module, exports) => {
|
|
63125
|
+
|
|
63126
|
+
"use strict";
|
|
63127
|
+
|
|
63128
|
+
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
63129
|
+
exports.FORGE_RESERVED_KEYWORDS = void 0;
|
|
63130
|
+
exports.getIdentifierName = getIdentifierName;
|
|
63131
|
+
exports.quoteIfReserved = quoteIfReserved;
|
|
63132
|
+
/**
|
|
63133
|
+
* Extracts the identifier string from a NameContext.
|
|
63134
|
+
* Handles both regular identifiers and backtick-quoted identifiers (for reserved keywords).
|
|
63135
|
+
*
|
|
63136
|
+
* Examples:
|
|
63137
|
+
* - Regular: `myVar` -> "myVar"
|
|
63138
|
+
* - Quoted: `` `set` `` -> "set"
|
|
63139
|
+
* - Quoted with escape: `` `my\`name` `` -> "my`name"
|
|
63140
|
+
*
|
|
63141
|
+
* @param ctx The NameContext to extract the identifier from
|
|
63142
|
+
* @returns The identifier string with backticks and escapes processed
|
|
63143
|
+
*/
|
|
63144
|
+
function getIdentifierName(ctx) {
|
|
63145
|
+
// Try regular identifier first
|
|
63146
|
+
const identifierToken = ctx.IDENTIFIER_TOK();
|
|
63147
|
+
if (identifierToken) {
|
|
63148
|
+
return identifierToken.text;
|
|
63149
|
+
}
|
|
63150
|
+
// Try quoted identifier
|
|
63151
|
+
const quotedToken = ctx.QUOTED_IDENTIFIER_TOK();
|
|
63152
|
+
if (quotedToken) {
|
|
63153
|
+
const text = quotedToken.text;
|
|
63154
|
+
// Strip surrounding backticks and unescape internal backslash sequences
|
|
63155
|
+
return text
|
|
63156
|
+
.slice(1, -1) // Remove surrounding backticks
|
|
63157
|
+
.replace(/\\(.)/g, '$1'); // Unescape: \` -> `, \\ -> \, etc.
|
|
63158
|
+
}
|
|
63159
|
+
// Fallback to text (shouldn't happen with valid grammar)
|
|
63160
|
+
return ctx.text;
|
|
63161
|
+
}
|
|
63162
|
+
/**
|
|
63163
|
+
* Quotes an identifier if it conflicts with a reserved keyword.
|
|
63164
|
+
* Use this when generating Forge expressions that might contain reserved words.
|
|
63165
|
+
*
|
|
63166
|
+
* @param identifier The identifier to potentially quote
|
|
63167
|
+
* @param reservedKeywords Set of reserved keywords to check against
|
|
63168
|
+
* @returns The identifier, quoted with backticks if necessary
|
|
63169
|
+
*/
|
|
63170
|
+
function quoteIfReserved(identifier, reservedKeywords) {
|
|
63171
|
+
if (reservedKeywords.has(identifier)) {
|
|
63172
|
+
// Escape any backticks in the identifier and wrap in backticks
|
|
63173
|
+
return '`' + identifier.replace(/([`\\])/g, '\\$1') + '`';
|
|
63174
|
+
}
|
|
63175
|
+
return identifier;
|
|
63176
|
+
}
|
|
63177
|
+
/**
|
|
63178
|
+
* Set of all reserved keywords in Forge.
|
|
63179
|
+
* Use with quoteIfReserved() when generating Forge expressions.
|
|
63180
|
+
*/
|
|
63181
|
+
exports.FORGE_RESERVED_KEYWORDS = new Set([
|
|
63182
|
+
'open', 'as', 'var', 'abstract', 'sig', 'extends', 'in',
|
|
63183
|
+
'lone', 'some', 'one', 'two', 'set', 'func', 'pfunc', 'disj',
|
|
63184
|
+
'wheat', 'pred', 'fun', 'assert', 'run', 'check', 'for', 'but',
|
|
63185
|
+
'exactly', 'none', 'univ', 'iden', 'is', 'sat', 'unsat', 'theorem',
|
|
63186
|
+
'forge_error', 'checked', 'test', 'expect', 'suite', 'all',
|
|
63187
|
+
'sufficient', 'necessary', 'consistent', 'inconsistent', 'with',
|
|
63188
|
+
'let', 'bind', 'or', 'xor', 'iff', 'implies', 'else', 'and',
|
|
63189
|
+
'until', 'release', 'since', 'triggered', 'not', 'always',
|
|
63190
|
+
'eventually', 'after', 'before', 'once', 'historically', 'this',
|
|
63191
|
+
'sexpr', 'inst', 'eval', 'example', 'ni', 'no', 'sum', 'Int', 'option'
|
|
63192
|
+
]);
|
|
63193
|
+
|
|
63194
|
+
|
|
62080
63195
|
/***/ }),
|
|
62081
63196
|
|
|
62082
63197
|
/***/ "./src/index.ts":
|
|
@@ -62088,13 +63203,16 @@ exports.ConsistencyAssertionTest = ConsistencyAssertionTest;
|
|
|
62088
63203
|
"use strict";
|
|
62089
63204
|
|
|
62090
63205
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
62091
|
-
exports.SelectorSynthesisError = exports.synthesizeSelectorWithWhy = exports.synthesizeBinaryRelationWithWhy = exports.synthesizeBinaryRelation = exports.synthesizeSelector = exports.SimpleGraphQueryEvaluator = void 0;
|
|
63206
|
+
exports.FORGE_RESERVED_KEYWORDS = exports.quoteIfReserved = exports.getIdentifierName = exports.SelectorSynthesisError = exports.synthesizeSelectorWithWhy = exports.synthesizeBinaryRelationWithWhy = exports.synthesizeBinaryRelation = exports.synthesizeSelector = exports.ForgeExprStaticAnalyzer = exports.SimpleGraphQueryEvaluator = void 0;
|
|
63207
|
+
exports.analyzeForgeExpression = analyzeForgeExpression;
|
|
62092
63208
|
const antlr4ts_1 = __webpack_require__(/*! antlr4ts */ "./node_modules/antlr4ts/index.js");
|
|
62093
63209
|
const ForgeParser_1 = __webpack_require__(/*! ./forge-antlr/ForgeParser */ "./src/forge-antlr/ForgeParser.ts");
|
|
62094
63210
|
const ForgeLexer_1 = __webpack_require__(/*! ./forge-antlr/ForgeLexer */ "./src/forge-antlr/ForgeLexer.ts");
|
|
62095
63211
|
const ForgeListenerImpl_1 = __webpack_require__(/*! ./forge-antlr/ForgeListenerImpl */ "./src/forge-antlr/ForgeListenerImpl.ts");
|
|
62096
63212
|
const ParseTreeWalker_1 = __webpack_require__(/*! antlr4ts/tree/ParseTreeWalker */ "./node_modules/antlr4ts/tree/ParseTreeWalker.js");
|
|
62097
63213
|
const ForgeExprEvaluator_1 = __webpack_require__(/*! ./ForgeExprEvaluator */ "./src/ForgeExprEvaluator.ts");
|
|
63214
|
+
const ForgeExprStaticAnalyzer_1 = __webpack_require__(/*! ./ForgeExprStaticAnalyzer */ "./src/ForgeExprStaticAnalyzer.ts");
|
|
63215
|
+
Object.defineProperty(exports, "ForgeExprStaticAnalyzer", ({ enumerable: true, get: function () { return ForgeExprStaticAnalyzer_1.ForgeExprStaticAnalyzer; } }));
|
|
62098
63216
|
const errorListener_1 = __webpack_require__(/*! ./errorListener */ "./src/errorListener.ts");
|
|
62099
63217
|
function createForgeParser(input) {
|
|
62100
63218
|
const inputStream = antlr4ts_1.CharStreams.fromString(input);
|
|
@@ -62106,14 +63224,56 @@ function createForgeParser(input) {
|
|
|
62106
63224
|
parser.addErrorListener(new errorListener_1.ParseErrorListener());
|
|
62107
63225
|
return parser;
|
|
62108
63226
|
}
|
|
63227
|
+
/**
|
|
63228
|
+
* Evaluates Forge expressions against an `IDataInstance`.
|
|
63229
|
+
*
|
|
63230
|
+
* ## Caching contract (important for correctness)
|
|
63231
|
+
*
|
|
63232
|
+
* For performance, this class caches an inner evaluator (with its relation
|
|
63233
|
+
* index and subexpression cache) across `evaluateExpression` calls. The
|
|
63234
|
+
* cache is invalidated when the `datum` field is reassigned to a different
|
|
63235
|
+
* reference, but **not** when the underlying `IDataInstance` is mutated in
|
|
63236
|
+
* place (e.g. adding/removing atoms or tuples on the same object).
|
|
63237
|
+
*
|
|
63238
|
+
* If you mutate the underlying data in place, you **must** call
|
|
63239
|
+
* {@link invalidate} (or reassign `datum` to a new object) before the next
|
|
63240
|
+
* `evaluateExpression` call. Otherwise queries may return stale results.
|
|
63241
|
+
*
|
|
63242
|
+
* Recommended patterns:
|
|
63243
|
+
* - Treat `IDataInstance` as immutable; create a new instance on data
|
|
63244
|
+
* changes and construct a new `SimpleGraphQueryEvaluator` (or assign to
|
|
63245
|
+
* `.datum`).
|
|
63246
|
+
* - Or, if you mutate in place, call `invalidate()` after each mutation
|
|
63247
|
+
* batch.
|
|
63248
|
+
*/
|
|
62109
63249
|
class SimpleGraphQueryEvaluator {
|
|
62110
63250
|
constructor(datum) {
|
|
62111
63251
|
this.forgeListener = new ForgeListenerImpl_1.ForgeListenerImpl();
|
|
62112
63252
|
this.walker = new ParseTreeWalker_1.ParseTreeWalker();
|
|
62113
63253
|
// Cache for parsed expressions to avoid re-parsing the same expression
|
|
62114
63254
|
this.parseTreeCache = new Map();
|
|
63255
|
+
// Cached inner evaluator. Reused across evaluateExpression calls so its
|
|
63256
|
+
// relation cache / relation index / subexpression cache survive between
|
|
63257
|
+
// calls. Invalidated when the `datum` reference changes, or explicitly
|
|
63258
|
+
// via `invalidate()`. NOT invalidated by in-place mutation of the
|
|
63259
|
+
// underlying IDataInstance -- callers must signal that themselves.
|
|
63260
|
+
this.cachedEvaluator = null;
|
|
63261
|
+
this.cachedEvaluatorDatum = null;
|
|
62115
63262
|
this.datum = datum;
|
|
62116
63263
|
}
|
|
63264
|
+
/**
|
|
63265
|
+
* Discard the cached inner evaluator (and its relation index /
|
|
63266
|
+
* subexpression cache). Call this after mutating the underlying
|
|
63267
|
+
* `IDataInstance` in place, so the next `evaluateExpression` sees the
|
|
63268
|
+
* updated data.
|
|
63269
|
+
*
|
|
63270
|
+
* Cheap: just nulls a couple of references. The caches rebuild lazily
|
|
63271
|
+
* on the next query.
|
|
63272
|
+
*/
|
|
63273
|
+
invalidate() {
|
|
63274
|
+
this.cachedEvaluator = null;
|
|
63275
|
+
this.cachedEvaluatorDatum = null;
|
|
63276
|
+
}
|
|
62117
63277
|
getExpressionParseTree(forgeExpr) {
|
|
62118
63278
|
const parser = createForgeParser(forgeExpr);
|
|
62119
63279
|
const tree = parser.parseExpr();
|
|
@@ -62144,13 +63304,27 @@ class SimpleGraphQueryEvaluator {
|
|
|
62144
63304
|
};
|
|
62145
63305
|
}
|
|
62146
63306
|
}
|
|
62147
|
-
|
|
63307
|
+
// Reuse the inner evaluator across calls. Rebuild only when the datum
|
|
63308
|
+
// reference has changed (the contract: callers signal "data changed"
|
|
63309
|
+
// by swapping the datum reference, not by mutating it in place).
|
|
63310
|
+
if (this.cachedEvaluator === null || this.cachedEvaluatorDatum !== this.datum) {
|
|
63311
|
+
this.cachedEvaluator = new ForgeExprEvaluator_1.ForgeExprEvaluator(this.datum);
|
|
63312
|
+
this.cachedEvaluatorDatum = this.datum;
|
|
63313
|
+
}
|
|
63314
|
+
const evaluator = this.cachedEvaluator;
|
|
62148
63315
|
try {
|
|
62149
63316
|
let result = evaluator.visit(tree);
|
|
62150
63317
|
// ensure we're visiting an ExprContext
|
|
62151
63318
|
return result;
|
|
62152
63319
|
}
|
|
62153
63320
|
catch (error) {
|
|
63321
|
+
// The visit threw mid-traversal, so the evaluator's transient state
|
|
63322
|
+
// (environment stack) may be inconsistent. Discard the cached
|
|
63323
|
+
// evaluator so the next call rebuilds from a clean slate. The
|
|
63324
|
+
// relation cache will be rebuilt lazily on first use, which is the
|
|
63325
|
+
// same as the pre-change behavior.
|
|
63326
|
+
this.cachedEvaluator = null;
|
|
63327
|
+
this.cachedEvaluatorDatum = null;
|
|
62154
63328
|
if (error instanceof ForgeExprEvaluator_1.NameNotFoundError) {
|
|
62155
63329
|
// Return an empty EvalResult for undefined names
|
|
62156
63330
|
let emptyResult = [];
|
|
@@ -62171,12 +63345,44 @@ class SimpleGraphQueryEvaluator {
|
|
|
62171
63345
|
}
|
|
62172
63346
|
}
|
|
62173
63347
|
exports.SimpleGraphQueryEvaluator = SimpleGraphQueryEvaluator;
|
|
63348
|
+
/**
|
|
63349
|
+
* Run a static analysis on a Forge expression.
|
|
63350
|
+
*
|
|
63351
|
+
* Returns `unsat` when the expression provably reduces to `false`, `empty`
|
|
63352
|
+
* when it provably reduces to the empty set, `tautology` when it provably
|
|
63353
|
+
* reduces to `true`, `ill-typed` for static type errors (e.g. arity
|
|
63354
|
+
* mismatch), and `unknown` otherwise (including parse errors).
|
|
63355
|
+
*
|
|
63356
|
+
* When `schema` is provided, the analyzer also uses the type lattice and
|
|
63357
|
+
* relation declarations to detect type-disjoint intersections, subtype
|
|
63358
|
+
* tautologies in `in`, join column-type mismatches, and arity errors.
|
|
63359
|
+
* Disjointness uses a closed-world rule (A ∩ B = ∅ iff no type in the
|
|
63360
|
+
* lattice has both A and B in its lineage).
|
|
63361
|
+
*/
|
|
63362
|
+
function analyzeForgeExpression(forgeExpr, schema) {
|
|
63363
|
+
try {
|
|
63364
|
+
const parser = createForgeParser(forgeExpr);
|
|
63365
|
+
const tree = parser.parseExpr();
|
|
63366
|
+
if (!tree || tree.childCount === 0) {
|
|
63367
|
+
return { status: "unknown" };
|
|
63368
|
+
}
|
|
63369
|
+
return new ForgeExprStaticAnalyzer_1.ForgeExprStaticAnalyzer(schema).analyze(tree);
|
|
63370
|
+
}
|
|
63371
|
+
catch {
|
|
63372
|
+
return { status: "unknown" };
|
|
63373
|
+
}
|
|
63374
|
+
}
|
|
62174
63375
|
var SelectorSynthesizer_1 = __webpack_require__(/*! ./SelectorSynthesizer */ "./src/SelectorSynthesizer.ts");
|
|
62175
63376
|
Object.defineProperty(exports, "synthesizeSelector", ({ enumerable: true, get: function () { return SelectorSynthesizer_1.synthesizeSelector; } }));
|
|
62176
63377
|
Object.defineProperty(exports, "synthesizeBinaryRelation", ({ enumerable: true, get: function () { return SelectorSynthesizer_1.synthesizeBinaryRelation; } }));
|
|
62177
63378
|
Object.defineProperty(exports, "synthesizeBinaryRelationWithWhy", ({ enumerable: true, get: function () { return SelectorSynthesizer_1.synthesizeBinaryRelationWithWhy; } }));
|
|
62178
63379
|
Object.defineProperty(exports, "synthesizeSelectorWithWhy", ({ enumerable: true, get: function () { return SelectorSynthesizer_1.synthesizeSelectorWithWhy; } }));
|
|
62179
63380
|
Object.defineProperty(exports, "SelectorSynthesisError", ({ enumerable: true, get: function () { return SelectorSynthesizer_1.SelectorSynthesisError; } }));
|
|
63381
|
+
// Utilities for handling reserved keyword identifiers
|
|
63382
|
+
var utils_1 = __webpack_require__(/*! ./forge-antlr/utils */ "./src/forge-antlr/utils.ts");
|
|
63383
|
+
Object.defineProperty(exports, "getIdentifierName", ({ enumerable: true, get: function () { return utils_1.getIdentifierName; } }));
|
|
63384
|
+
Object.defineProperty(exports, "quoteIfReserved", ({ enumerable: true, get: function () { return utils_1.quoteIfReserved; } }));
|
|
63385
|
+
Object.defineProperty(exports, "FORGE_RESERVED_KEYWORDS", ({ enumerable: true, get: function () { return utils_1.FORGE_RESERVED_KEYWORDS; } }));
|
|
62180
63386
|
|
|
62181
63387
|
|
|
62182
63388
|
/***/ })
|