septima-lang 0.0.11 → 0.0.12
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/src/ast-node.d.ts +18 -0
- package/dist/src/ast-node.js +4 -2
- package/dist/src/parser.d.ts +1 -0
- package/dist/src/parser.js +57 -51
- package/dist/src/result.d.ts +4 -11
- package/dist/src/result.js +49 -22
- package/dist/src/runtime.d.ts +1 -2
- package/dist/src/runtime.js +36 -25
- package/dist/src/septima.d.ts +29 -12
- package/dist/src/septima.js +138 -52
- package/dist/src/source-code.d.ts +7 -6
- package/dist/src/source-code.js +8 -7
- package/dist/src/symbol-table.d.ts +1 -0
- package/dist/src/value.d.ts +8 -4
- package/dist/src/value.js +10 -6
- package/package.json +1 -1
package/dist/src/ast-node.d.ts
CHANGED
|
@@ -4,16 +4,20 @@ export declare type Let = {
|
|
|
4
4
|
start: Token;
|
|
5
5
|
ident: Ident;
|
|
6
6
|
value: AstNode;
|
|
7
|
+
isExported: boolean;
|
|
7
8
|
};
|
|
9
|
+
export declare type UnitId = string;
|
|
8
10
|
export declare type Import = {
|
|
9
11
|
start: Token;
|
|
10
12
|
ident: Ident;
|
|
11
13
|
pathToImportFrom: Token;
|
|
14
|
+
unitId: UnitId;
|
|
12
15
|
};
|
|
13
16
|
export declare type Literal = {
|
|
14
17
|
tag: 'literal';
|
|
15
18
|
type: 'str' | 'bool' | 'num' | 'sink' | 'sink!' | 'sink!!';
|
|
16
19
|
t: Token;
|
|
20
|
+
unitId: UnitId;
|
|
17
21
|
};
|
|
18
22
|
export declare type ObjectLiteralPart = {
|
|
19
23
|
tag: 'hardName';
|
|
@@ -37,67 +41,81 @@ export declare type ArrayLiteralPart = {
|
|
|
37
41
|
export declare type Ident = {
|
|
38
42
|
tag: 'ident';
|
|
39
43
|
t: Token;
|
|
44
|
+
unitId: UnitId;
|
|
40
45
|
};
|
|
41
46
|
export declare type Lambda = {
|
|
42
47
|
tag: 'lambda';
|
|
43
48
|
start: Token;
|
|
44
49
|
formalArgs: Ident[];
|
|
45
50
|
body: AstNode;
|
|
51
|
+
unitId: UnitId;
|
|
46
52
|
};
|
|
47
53
|
export declare type Unit = {
|
|
48
54
|
tag: 'unit';
|
|
49
55
|
imports: Import[];
|
|
50
56
|
expression: AstNode;
|
|
57
|
+
unitId: UnitId;
|
|
51
58
|
};
|
|
52
59
|
export declare type AstNode = Ident | Literal | Unit | {
|
|
53
60
|
start: Token;
|
|
54
61
|
tag: 'arrayLiteral';
|
|
55
62
|
parts: ArrayLiteralPart[];
|
|
56
63
|
end: Token;
|
|
64
|
+
unitId: UnitId;
|
|
57
65
|
} | {
|
|
58
66
|
start: Token;
|
|
59
67
|
tag: 'objectLiteral';
|
|
60
68
|
parts: ObjectLiteralPart[];
|
|
61
69
|
end: Token;
|
|
70
|
+
unitId: UnitId;
|
|
62
71
|
} | {
|
|
63
72
|
tag: 'binaryOperator';
|
|
64
73
|
operator: '+' | '-' | '*' | '/' | '**' | '%' | '&&' | '||' | '>' | '<' | '>=' | '<=' | '==' | '!=' | '??';
|
|
65
74
|
lhs: AstNode;
|
|
66
75
|
rhs: AstNode;
|
|
76
|
+
unitId: UnitId;
|
|
67
77
|
} | {
|
|
68
78
|
tag: 'unaryOperator';
|
|
69
79
|
operatorToken: Token;
|
|
70
80
|
operator: '+' | '-' | '!';
|
|
71
81
|
operand: AstNode;
|
|
82
|
+
unitId: UnitId;
|
|
72
83
|
} | {
|
|
73
84
|
tag: 'topLevelExpression';
|
|
74
85
|
definitions: Let[];
|
|
75
86
|
computation?: AstNode;
|
|
87
|
+
unitId: UnitId;
|
|
76
88
|
} | Lambda | {
|
|
77
89
|
tag: 'ternary';
|
|
78
90
|
condition: AstNode;
|
|
79
91
|
positive: AstNode;
|
|
80
92
|
negative: AstNode;
|
|
93
|
+
unitId: UnitId;
|
|
81
94
|
} | {
|
|
82
95
|
tag: 'functionCall';
|
|
83
96
|
actualArgs: AstNode[];
|
|
84
97
|
callee: AstNode;
|
|
85
98
|
end: Token;
|
|
99
|
+
unitId: UnitId;
|
|
86
100
|
} | {
|
|
87
101
|
tag: 'if';
|
|
88
102
|
condition: AstNode;
|
|
89
103
|
positive: AstNode;
|
|
90
104
|
negative: AstNode;
|
|
105
|
+
unitId: UnitId;
|
|
91
106
|
} | {
|
|
92
107
|
tag: 'dot';
|
|
93
108
|
receiver: AstNode;
|
|
94
109
|
ident: Ident;
|
|
110
|
+
unitId: UnitId;
|
|
95
111
|
} | {
|
|
96
112
|
tag: 'indexAccess';
|
|
97
113
|
receiver: AstNode;
|
|
98
114
|
index: AstNode;
|
|
115
|
+
unitId: UnitId;
|
|
99
116
|
} | {
|
|
100
117
|
tag: 'export*';
|
|
118
|
+
unitId: UnitId;
|
|
101
119
|
};
|
|
102
120
|
export declare function show(ast: AstNode | AstNode[]): string;
|
|
103
121
|
export declare function span(ast: AstNode): Span;
|
package/dist/src/ast-node.js
CHANGED
|
@@ -72,7 +72,9 @@ function show(ast) {
|
|
|
72
72
|
return `{${pairs.join(', ')}}`;
|
|
73
73
|
}
|
|
74
74
|
if (ast.tag === 'topLevelExpression') {
|
|
75
|
-
const defs = ast.definitions
|
|
75
|
+
const defs = ast.definitions
|
|
76
|
+
.map(d => `${d.isExported ? 'export ' : ''}let ${show(d.ident)} = ${show(d.value)}`)
|
|
77
|
+
.join('; ');
|
|
76
78
|
const sep = defs && ast.computation ? ' ' : '';
|
|
77
79
|
return `${defs ? defs + ';' : ''}${sep}${ast.computation ? show(ast.computation) : ''}`;
|
|
78
80
|
}
|
|
@@ -153,4 +155,4 @@ function span(ast) {
|
|
|
153
155
|
(0, should_never_happen_1.shouldNeverHappen)(ast);
|
|
154
156
|
}
|
|
155
157
|
exports.span = span;
|
|
156
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
158
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXN0LW5vZGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXN0LW5vZGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBRUEsK0RBQXlEO0FBQ3pELDJDQUFzQztBQWdJdEMsU0FBZ0IsSUFBSSxDQUFDLEdBQXdCO0lBQzNDLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRTtRQUN0QixPQUFPLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUE7S0FDOUM7SUFFRCxJQUFJLEdBQUcsQ0FBQyxHQUFHLEtBQUssY0FBYyxFQUFFO1FBQzlCLE1BQU0sS0FBSyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQzlCLElBQUksQ0FBQyxDQUFDLEdBQUcsS0FBSyxTQUFTLEVBQUU7Z0JBQ3ZCLE9BQU8sSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTthQUNqQjtZQUVELElBQUksQ0FBQyxDQUFDLEdBQUcsS0FBSyxRQUFRLEVBQUU7Z0JBQ3RCLE9BQU8sTUFBTSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUE7YUFDekI7WUFFRCxJQUFBLHVDQUFpQixFQUFDLENBQUMsQ0FBQyxDQUFBO1FBQ3RCLENBQUMsQ0FBQyxDQUFBO1FBQ0YsT0FBTyxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQTtLQUMvQjtJQUVELElBQUksR0FBRyxDQUFDLEdBQUcsS0FBSyxnQkFBZ0IsRUFBRTtRQUNoQyxPQUFPLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxHQUFHLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQTtLQUM3RDtJQUNELElBQUksR0FBRyxDQUFDLEdBQUcsS0FBSyxLQUFLLEVBQUU7UUFDckIsT0FBTyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFBO0tBQ2xEO0lBQ0QsSUFBSSxHQUFHLENBQUMsR0FBRyxLQUFLLFNBQVMsRUFBRTtRQUN6QixPQUFPLFdBQVcsQ0FBQTtLQUNuQjtJQUNELElBQUksR0FBRyxDQUFDLEdBQUcsS0FBSyxTQUFTLEVBQUU7UUFDekIsT0FBTyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLE1BQU0sSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsTUFBTSxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUE7S0FDaEY7SUFDRCxJQUFJLEdBQUcsQ0FBQyxHQUFHLEtBQUssY0FBYyxFQUFFO1FBQzlCLE9BQU8sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQTtLQUN0RDtJQUNELElBQUksR0FBRyxDQUFDLEdBQUcsS0FBSyxPQUFPLEVBQUU7UUFDdkIsT0FBTyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQTtLQUNsQjtJQUNELElBQUksR0FBRyxDQUFDLEdBQUcsS0FBSyxJQUFJLEVBQUU7UUFDcEIsT0FBTyxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsU0FBUyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUE7S0FDdEY7SUFDRCxJQUFJLEdBQUcsQ0FBQyxHQUFHLEtBQUssYUFBYSxFQUFFO1FBQzdCLE9BQU8sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQTtLQUNuRDtJQUNELElBQUksR0FBRyxDQUFDLEdBQUcsS0FBSyxRQUFRLEVBQUU7UUFDeEIsT0FBTyxRQUFRLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFBO0tBQ3pEO0lBQ0QsSUFBSSxHQUFHLENBQUMsR0FBRyxLQUFLLFNBQVMsRUFBRTtRQUN6QixPQUFPLElBQUEsb0JBQVEsRUFBQyxHQUFHLENBQUMsSUFBSSxFQUFFO1lBQ3hCLElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUk7WUFDdEIsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSTtZQUNyQixJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUMsTUFBTTtZQUNsQixPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsT0FBTztZQUN0QixRQUFRLEVBQUUsR0FBRyxFQUFFLENBQUMsUUFBUTtZQUN4QixHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRztTQUM3QixDQUFDLENBQUE7S0FDSDtJQUNELElBQUksR0FBRyxDQUFDLEdBQUcsS0FBSyxlQUFlLEVBQUU7UUFDL0IsTUFBTSxLQUFLLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDOUIsSUFBSSxDQUFDLENBQUMsR0FBRyxLQUFLLGNBQWMsRUFBRTtnQkFDNUIsT0FBTyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFBO2FBQ3RDO1lBRUQsSUFBSSxDQUFDLENBQUMsR0FBRyxLQUFLLFVBQVUsRUFBRTtnQkFDeEIsT0FBTyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFBO2FBQ3BDO1lBRUQsSUFBSSxDQUFDLENBQUMsR0FBRyxLQUFLLFFBQVEsRUFBRTtnQkFDdEIsT0FBTyxNQUFNLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQTthQUN6QjtZQUVELElBQUEsdUNBQWlCLEVBQUMsQ0FBQyxDQUFDLENBQUE7UUFDdEIsQ0FBQyxDQUFDLENBQUE7UUFDRixPQUFPLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFBO0tBQy9CO0lBQ0QsSUFBSSxHQUFHLENBQUMsR0FBRyxLQUFLLG9CQUFvQixFQUFFO1FBQ3BDLE1BQU0sSUFBSSxHQUFHLEdBQUcsQ0FBQyxXQUFXO2FBQ3pCLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLE9BQU8sSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7YUFDbkYsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFBO1FBQ2IsTUFBTSxHQUFHLEdBQUcsSUFBSSxJQUFJLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFBO1FBQzlDLE9BQU8sR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxHQUFHLEdBQUcsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUE7S0FDeEY7SUFDRCxJQUFJLEdBQUcsQ0FBQyxHQUFHLEtBQUssZUFBZSxFQUFFO1FBQy9CLE9BQU8sR0FBRyxHQUFHLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQTtLQUM3QztJQUNELElBQUksR0FBRyxDQUFDLEdBQUcsS0FBSyxNQUFNLEVBQUU7UUFDdEIsTUFBTSxPQUFPLEdBQUcsR0FBRyxDQUFDLE9BQU87YUFDeEIsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsZUFBZSxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxVQUFVLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLElBQUksQ0FBQzthQUNqRixJQUFJLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDYixPQUFPLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFBO0tBQ2pFO0lBRUQsSUFBQSx1Q0FBaUIsRUFBQyxHQUFHLENBQUMsQ0FBQTtBQUN4QixDQUFDO0FBN0ZELG9CQTZGQztBQUVELFNBQWdCLElBQUksQ0FBQyxHQUFZO0lBQy9CLE1BQU0sT0FBTyxHQUFHLENBQUMsQ0FBTyxFQUFFLENBQU8sRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQTtJQUNsRSxNQUFNLE9BQU8sR0FBRyxDQUFDLENBQVEsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUE7SUFFM0csSUFBSSxHQUFHLENBQUMsR0FBRyxLQUFLLGNBQWMsRUFBRTtRQUM5QixPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQTtLQUNyRDtJQUNELElBQUksR0FBRyxDQUFDLEdBQUcsS0FBSyxnQkFBZ0IsRUFBRTtRQUNoQyxPQUFPLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQTtLQUM3QztJQUNELElBQUksR0FBRyxDQUFDLEdBQUcsS0FBSyxLQUFLLEVBQUU7UUFDckIsT0FBTyxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUE7S0FDcEQ7SUFDRCxJQUFJLEdBQUcsQ0FBQyxHQUFHLEtBQUssY0FBYyxFQUFFO1FBQzlCLE9BQU8sT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFBO0tBQ25EO0lBQ0QsSUFBSSxHQUFHLENBQUMsR0FBRyxLQUFLLE9BQU8sRUFBRTtRQUN2QixPQUFPLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUE7S0FDdEI7SUFDRCxJQUFJLEdBQUcsQ0FBQyxHQUFHLEtBQUssU0FBUyxFQUFFO1FBQ3pCLE9BQU8sRUFBRSxJQUFJLEVBQUUsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUE7S0FDbEQ7SUFDRCxJQUFJLEdBQUcsQ0FBQyxHQUFHLEtBQUssSUFBSSxFQUFFO1FBQ3BCLE9BQU8sT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFBO0tBQ3hEO0lBQ0QsSUFBSSxHQUFHLENBQUMsR0FBRyxLQUFLLGFBQWEsRUFBRTtRQUM3QixPQUFPLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQTtLQUNwRDtJQUNELElBQUksR0FBRyxDQUFDLEdBQUcsS0FBSyxRQUFRLEVBQUU7UUFDeEIsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUE7S0FDbkQ7SUFDRCxJQUFJLEdBQUcsQ0FBQyxHQUFHLEtBQUssU0FBUyxFQUFFO1FBQ3pCLE9BQU8sT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFBO0tBQ3hEO0lBQ0QsSUFBSSxHQUFHLENBQUMsR0FBRyxLQUFLLFNBQVMsRUFBRTtRQUN6QixPQUFPLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUE7S0FDdEI7SUFDRCxJQUFJLEdBQUcsQ0FBQyxHQUFHLEtBQUssZUFBZSxFQUFFO1FBQy9CLE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFBO0tBQ3JEO0lBQ0QsSUFBSSxHQUFHLENBQUMsR0FBRyxLQUFLLG9CQUFvQixFQUFFO1FBQ3BDLElBQUksR0FBRyxDQUFDLFdBQVcsRUFBRTtZQUNuQixNQUFNLEVBQUUsR0FBRyxHQUFHLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQTtZQUN4QyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFBO1lBQ2xDLE9BQU8sT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFBO1NBQ3BEO2FBQU0sSUFBSSxHQUFHLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRTtZQUNqQyxNQUFNLEtBQUssR0FBRyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFBO1lBQ2hDLE1BQU0sSUFBSSxHQUFHLEdBQUcsQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUE7WUFDeEQsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUE7U0FDdkQ7YUFBTTtZQUNMLE9BQU8sRUFBRSxJQUFJLEVBQUUsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUE7U0FDbEQ7S0FDRjtJQUNELElBQUksR0FBRyxDQUFDLEdBQUcsS0FBSyxlQUFlLEVBQUU7UUFDL0IsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUE7S0FDOUQ7SUFDRCxJQUFJLEdBQUcsQ0FBQyxHQUFHLEtBQUssTUFBTSxFQUFFO1FBQ3RCLE1BQU0sRUFBRSxHQUFHLEdBQUcsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFBO1FBQ3BDLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUE7UUFDaEMsT0FBTyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUE7S0FDbEQ7SUFFRCxJQUFBLHVDQUFpQixFQUFDLEdBQUcsQ0FBQyxDQUFBO0FBQ3hCLENBQUM7QUEvREQsb0JBK0RDIn0=
|