@auscope/angular2parse 18.0.1 → 19.0.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/fesm2022/auscope-angular2parse.mjs +8 -8
- package/fesm2022/auscope-angular2parse.mjs.map +1 -1
- package/package.json +4 -6
- package/esm2022/auscope-angular2parse.mjs +0 -5
- package/esm2022/lib/angular/compiler/assertions.mjs +0 -45
- package/esm2022/lib/angular/compiler/ast.mjs +0 -393
- package/esm2022/lib/angular/compiler/chars.mjs +0 -78
- package/esm2022/lib/angular/compiler/interpolation-config.mjs +0 -24
- package/esm2022/lib/angular/compiler/lexer.mjs +0 -344
- package/esm2022/lib/angular/compiler/parser.mjs +0 -721
- package/esm2022/lib/angular/compiler.mjs +0 -7
- package/esm2022/lib/angular/facade/lang.mjs +0 -85
- package/esm2022/lib/angular/facade.mjs +0 -2
- package/esm2022/lib/angular.mjs +0 -3
- package/esm2022/lib/module.mjs +0 -18
- package/esm2022/lib/parse.mjs +0 -66
- package/esm2022/lib/util/binary-operations.mjs +0 -18
- package/esm2022/lib/util/lang.mjs +0 -13
- package/esm2022/lib/util.mjs +0 -3
- package/esm2022/lib/visitors/parse-visitor-compiler.mjs +0 -96
- package/esm2022/lib/visitors/parse-visitor-resolver.mjs +0 -141
- package/esm2022/lib/visitors.mjs +0 -3
- package/esm2022/public-api.mjs +0 -6
package/package.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@auscope/angular2parse",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "19.0.0",
|
|
4
4
|
"license": "MIT",
|
|
5
|
-
"description": "Fork of articode repo for Angular
|
|
5
|
+
"description": "Fork of articode repo for Angular v19",
|
|
6
6
|
"bugs": {
|
|
7
7
|
"url": "https://github.com/AuScope/angular2parse/issues"
|
|
8
8
|
},
|
|
@@ -13,8 +13,8 @@
|
|
|
13
13
|
},
|
|
14
14
|
"homepage": "https://github.com/AuScope/angular2parse#readme",
|
|
15
15
|
"peerDependencies": {
|
|
16
|
-
"@angular/common": "^
|
|
17
|
-
"@angular/core": "^
|
|
16
|
+
"@angular/common": "^19.2.11",
|
|
17
|
+
"@angular/core": "^19.2.11"
|
|
18
18
|
},
|
|
19
19
|
"module": "fesm2022/auscope-angular2parse.mjs",
|
|
20
20
|
"typings": "index.d.ts",
|
|
@@ -24,8 +24,6 @@
|
|
|
24
24
|
},
|
|
25
25
|
".": {
|
|
26
26
|
"types": "./index.d.ts",
|
|
27
|
-
"esm2022": "./esm2022/auscope-angular2parse.mjs",
|
|
28
|
-
"esm": "./esm2022/auscope-angular2parse.mjs",
|
|
29
27
|
"default": "./fesm2022/auscope-angular2parse.mjs"
|
|
30
28
|
}
|
|
31
29
|
},
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Generated bundle index. Do not edit.
|
|
3
|
-
*/
|
|
4
|
-
export * from './public-api';
|
|
5
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXVzY29wZS1hbmd1bGFyMnBhcnNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhcjJwYXJzZS9zcmMvYXVzY29wZS1hbmd1bGFyMnBhcnNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljLWFwaSc7XG4iXX0=
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @license
|
|
3
|
-
* Copyright Google Inc. All Rights Reserved.
|
|
4
|
-
*
|
|
5
|
-
* Use of this source code is governed by an MIT-style license that can be
|
|
6
|
-
* found in the LICENSE file at https://angular.io/license
|
|
7
|
-
*/
|
|
8
|
-
import { isBlank, isPresent } from '../facade/lang';
|
|
9
|
-
const isDevMode = () => false;
|
|
10
|
-
export function assertArrayOfStrings(identifier, value) {
|
|
11
|
-
if (!isDevMode() || isBlank(value)) {
|
|
12
|
-
return;
|
|
13
|
-
}
|
|
14
|
-
if (!Array.isArray(value)) {
|
|
15
|
-
throw new Error(`Expected '${identifier}' to be an array of strings.`);
|
|
16
|
-
}
|
|
17
|
-
for (let i = 0; i < value.length; i += 1) {
|
|
18
|
-
if (typeof value[i] !== 'string') {
|
|
19
|
-
throw new Error(`Expected '${identifier}' to be an array of strings.`);
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
const INTERPOLATION_BLACKLIST_REGEXPS = [
|
|
24
|
-
/^\s*$/, // empty
|
|
25
|
-
/[<>]/, // html tag
|
|
26
|
-
/^[{}]$/, // i18n expansion
|
|
27
|
-
/&(#|[a-z])/i, // character reference,
|
|
28
|
-
/^\/\//, // comment
|
|
29
|
-
];
|
|
30
|
-
export function assertInterpolationSymbols(identifier, value) {
|
|
31
|
-
if (isPresent(value) && !(Array.isArray(value) && value.length == 2)) {
|
|
32
|
-
throw new Error(`Expected '${identifier}' to be an array, [start, end].`);
|
|
33
|
-
}
|
|
34
|
-
else if (isDevMode() && !isBlank(value)) {
|
|
35
|
-
const start = value[0];
|
|
36
|
-
const end = value[1];
|
|
37
|
-
// black list checking
|
|
38
|
-
INTERPOLATION_BLACKLIST_REGEXPS.forEach(regexp => {
|
|
39
|
-
if (regexp.test(start) || regexp.test(end)) {
|
|
40
|
-
throw new Error(`['${start}', '${end}'] contains unusable interpolation symbol.`);
|
|
41
|
-
}
|
|
42
|
-
});
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXJ0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXIycGFyc2Uvc3JjL2xpYi9hbmd1bGFyL2NvbXBpbGVyL2Fzc2VydGlvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBR0gsT0FBTyxFQUFDLE9BQU8sRUFBRSxTQUFTLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUVsRCxNQUFNLFNBQVMsR0FBRyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUM7QUFFOUIsTUFBTSxVQUFVLG9CQUFvQixDQUFDLFVBQWtCLEVBQUUsS0FBVTtJQUMvRCxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDakMsT0FBTztJQUNYLENBQUM7SUFDRCxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ3hCLE1BQU0sSUFBSSxLQUFLLENBQUMsYUFBYSxVQUFVLDhCQUE4QixDQUFDLENBQUM7SUFDM0UsQ0FBQztJQUNELEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUN2QyxJQUFJLE9BQU8sS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQy9CLE1BQU0sSUFBSSxLQUFLLENBQUMsYUFBYSxVQUFVLDhCQUE4QixDQUFDLENBQUM7UUFDM0UsQ0FBQztJQUNMLENBQUM7QUFDTCxDQUFDO0FBRUQsTUFBTSwrQkFBK0IsR0FBRztJQUNwQyxPQUFPLEVBQVMsUUFBUTtJQUN4QixNQUFNLEVBQVUsV0FBVztJQUMzQixRQUFRLEVBQVEsaUJBQWlCO0lBQ2pDLGFBQWEsRUFBRyx1QkFBdUI7SUFDdkMsT0FBTyxFQUFTLFVBQVU7Q0FDN0IsQ0FBQztBQUVGLE1BQU0sVUFBVSwwQkFBMEIsQ0FBQyxVQUFrQixFQUFFLEtBQVU7SUFDckUsSUFBSSxTQUFTLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ25FLE1BQU0sSUFBSSxLQUFLLENBQUMsYUFBYSxVQUFVLGlDQUFpQyxDQUFDLENBQUM7SUFDOUUsQ0FBQztTQUFNLElBQUksU0FBUyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUN4QyxNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFXLENBQUM7UUFDakMsTUFBTSxHQUFHLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBVyxDQUFDO1FBQy9CLHNCQUFzQjtRQUN0QiwrQkFBK0IsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDN0MsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDekMsTUFBTSxJQUFJLEtBQUssQ0FBQyxLQUFLLEtBQUssT0FBTyxHQUFHLDRDQUE0QyxDQUFDLENBQUM7WUFDdEYsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcclxuICogQGxpY2Vuc2VcclxuICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXHJcbiAqXHJcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXHJcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcclxuICovXHJcblxyXG5cclxuaW1wb3J0IHtpc0JsYW5rLCBpc1ByZXNlbnR9IGZyb20gJy4uL2ZhY2FkZS9sYW5nJztcclxuXHJcbmNvbnN0IGlzRGV2TW9kZSA9ICgpID0+IGZhbHNlO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGFzc2VydEFycmF5T2ZTdHJpbmdzKGlkZW50aWZpZXI6IHN0cmluZywgdmFsdWU6IGFueSkge1xyXG4gICAgaWYgKCFpc0Rldk1vZGUoKSB8fCBpc0JsYW5rKHZhbHVlKSkge1xyXG4gICAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGlmICghQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcclxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGVkICcke2lkZW50aWZpZXJ9JyB0byBiZSBhbiBhcnJheSBvZiBzdHJpbmdzLmApO1xyXG4gICAgfVxyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB2YWx1ZS5sZW5ndGg7IGkgKz0gMSkge1xyXG4gICAgICAgIGlmICh0eXBlb2YgdmFsdWVbaV0gIT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgJyR7aWRlbnRpZmllcn0nIHRvIGJlIGFuIGFycmF5IG9mIHN0cmluZ3MuYCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG5jb25zdCBJTlRFUlBPTEFUSU9OX0JMQUNLTElTVF9SRUdFWFBTID0gW1xyXG4gICAgL15cXHMqJC8sICAgICAgICAvLyBlbXB0eVxyXG4gICAgL1s8Pl0vLCAgICAgICAgIC8vIGh0bWwgdGFnXHJcbiAgICAvXlt7fV0kLywgICAgICAgLy8gaTE4biBleHBhbnNpb25cclxuICAgIC8mKCN8W2Etel0pL2ksICAvLyBjaGFyYWN0ZXIgcmVmZXJlbmNlLFxyXG4gICAgL15cXC9cXC8vLCAgICAgICAgLy8gY29tbWVudFxyXG5dO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGFzc2VydEludGVycG9sYXRpb25TeW1ib2xzKGlkZW50aWZpZXI6IHN0cmluZywgdmFsdWU6IGFueSk6IHZvaWQge1xyXG4gICAgaWYgKGlzUHJlc2VudCh2YWx1ZSkgJiYgIShBcnJheS5pc0FycmF5KHZhbHVlKSAmJiB2YWx1ZS5sZW5ndGggPT0gMikpIHtcclxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGVkICcke2lkZW50aWZpZXJ9JyB0byBiZSBhbiBhcnJheSwgW3N0YXJ0LCBlbmRdLmApO1xyXG4gICAgfSBlbHNlIGlmIChpc0Rldk1vZGUoKSAmJiAhaXNCbGFuayh2YWx1ZSkpIHtcclxuICAgICAgICBjb25zdCBzdGFydCA9IHZhbHVlWzBdIGFzIHN0cmluZztcclxuICAgICAgICBjb25zdCBlbmQgPSB2YWx1ZVsxXSBhcyBzdHJpbmc7XHJcbiAgICAgICAgLy8gYmxhY2sgbGlzdCBjaGVja2luZ1xyXG4gICAgICAgIElOVEVSUE9MQVRJT05fQkxBQ0tMSVNUX1JFR0VYUFMuZm9yRWFjaChyZWdleHAgPT4ge1xyXG4gICAgICAgICAgICBpZiAocmVnZXhwLnRlc3Qoc3RhcnQpIHx8IHJlZ2V4cC50ZXN0KGVuZCkpIHtcclxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgWycke3N0YXJ0fScsICcke2VuZH0nXSBjb250YWlucyB1bnVzYWJsZSBpbnRlcnBvbGF0aW9uIHN5bWJvbC5gKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG59Il19
|
|
@@ -1,393 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @license
|
|
3
|
-
* Copyright Google Inc. All Rights Reserved.
|
|
4
|
-
*
|
|
5
|
-
* Use of this source code is governed by an MIT-style license that can be
|
|
6
|
-
* found in the LICENSE file at https://angular.io/license
|
|
7
|
-
*/
|
|
8
|
-
import { isBlank } from '../facade/lang';
|
|
9
|
-
export class ParserError {
|
|
10
|
-
constructor(message, input, errLocation, ctxLocation) {
|
|
11
|
-
this.input = input;
|
|
12
|
-
this.errLocation = errLocation;
|
|
13
|
-
this.ctxLocation = ctxLocation;
|
|
14
|
-
this.message = `Parser Error: ${message} ${errLocation} [${input}] in ${ctxLocation}`;
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
export class ParseSpan {
|
|
18
|
-
constructor(start, end) {
|
|
19
|
-
this.start = start;
|
|
20
|
-
this.end = end;
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
export class AST {
|
|
24
|
-
constructor(span) {
|
|
25
|
-
this.span = span;
|
|
26
|
-
}
|
|
27
|
-
visit(visitor, context = null) { return null; }
|
|
28
|
-
toString() { return 'AST'; }
|
|
29
|
-
}
|
|
30
|
-
/**
|
|
31
|
-
* Represents a quoted expression of the form:
|
|
32
|
-
*
|
|
33
|
-
* quote = prefix `:` uninterpretedExpression
|
|
34
|
-
* prefix = identifier
|
|
35
|
-
* uninterpretedExpression = arbitrary string
|
|
36
|
-
*
|
|
37
|
-
* A quoted expression is meant to be pre-processed by an AST transformer that
|
|
38
|
-
* converts it into another AST that no longer contains quoted expressions.
|
|
39
|
-
* It is meant to allow third-party developers to extend Angular template
|
|
40
|
-
* expression language. The `uninterpretedExpression` part of the quote is
|
|
41
|
-
* therefore not interpreted by the Angular's own expression parser.
|
|
42
|
-
*/
|
|
43
|
-
export class Quote extends AST {
|
|
44
|
-
constructor(span, prefix, uninterpretedExpression, location) {
|
|
45
|
-
super(span);
|
|
46
|
-
this.prefix = prefix;
|
|
47
|
-
this.uninterpretedExpression = uninterpretedExpression;
|
|
48
|
-
this.location = location;
|
|
49
|
-
}
|
|
50
|
-
visit(visitor, context = null) { return visitor.visitQuote(this, context); }
|
|
51
|
-
toString() { return 'Quote'; }
|
|
52
|
-
}
|
|
53
|
-
export class EmptyExpr extends AST {
|
|
54
|
-
visit(visitor, context = null) {
|
|
55
|
-
// do nothing
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
export class ImplicitReceiver extends AST {
|
|
59
|
-
visit(visitor, context = null) {
|
|
60
|
-
return visitor.visitImplicitReceiver(this, context);
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
/**
|
|
64
|
-
* Multiple expressions separated by a semicolon.
|
|
65
|
-
*/
|
|
66
|
-
export class Chain extends AST {
|
|
67
|
-
constructor(span, expressions) {
|
|
68
|
-
super(span);
|
|
69
|
-
this.expressions = expressions;
|
|
70
|
-
}
|
|
71
|
-
visit(visitor, context = null) { return visitor.visitChain(this, context); }
|
|
72
|
-
}
|
|
73
|
-
export class Conditional extends AST {
|
|
74
|
-
constructor(span, condition, trueExp, falseExp) {
|
|
75
|
-
super(span);
|
|
76
|
-
this.condition = condition;
|
|
77
|
-
this.trueExp = trueExp;
|
|
78
|
-
this.falseExp = falseExp;
|
|
79
|
-
}
|
|
80
|
-
visit(visitor, context = null) {
|
|
81
|
-
return visitor.visitConditional(this, context);
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
export class PropertyRead extends AST {
|
|
85
|
-
constructor(span, receiver, name) {
|
|
86
|
-
super(span);
|
|
87
|
-
this.receiver = receiver;
|
|
88
|
-
this.name = name;
|
|
89
|
-
}
|
|
90
|
-
visit(visitor, context = null) {
|
|
91
|
-
return visitor.visitPropertyRead(this, context);
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
export class PropertyWrite extends AST {
|
|
95
|
-
constructor(span, receiver, name, value) {
|
|
96
|
-
super(span);
|
|
97
|
-
this.receiver = receiver;
|
|
98
|
-
this.name = name;
|
|
99
|
-
this.value = value;
|
|
100
|
-
}
|
|
101
|
-
visit(visitor, context = null) {
|
|
102
|
-
return visitor.visitPropertyWrite(this, context);
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
export class SafePropertyRead extends AST {
|
|
106
|
-
constructor(span, receiver, name) {
|
|
107
|
-
super(span);
|
|
108
|
-
this.receiver = receiver;
|
|
109
|
-
this.name = name;
|
|
110
|
-
}
|
|
111
|
-
visit(visitor, context = null) {
|
|
112
|
-
return visitor.visitSafePropertyRead(this, context);
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
export class KeyedRead extends AST {
|
|
116
|
-
constructor(span, obj, key) {
|
|
117
|
-
super(span);
|
|
118
|
-
this.obj = obj;
|
|
119
|
-
this.key = key;
|
|
120
|
-
}
|
|
121
|
-
visit(visitor, context = null) {
|
|
122
|
-
return visitor.visitKeyedRead(this, context);
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
export class KeyedWrite extends AST {
|
|
126
|
-
constructor(span, obj, key, value) {
|
|
127
|
-
super(span);
|
|
128
|
-
this.obj = obj;
|
|
129
|
-
this.key = key;
|
|
130
|
-
this.value = value;
|
|
131
|
-
}
|
|
132
|
-
visit(visitor, context = null) {
|
|
133
|
-
return visitor.visitKeyedWrite(this, context);
|
|
134
|
-
}
|
|
135
|
-
}
|
|
136
|
-
export class BindingPipe extends AST {
|
|
137
|
-
constructor(span, exp, name, args) {
|
|
138
|
-
super(span);
|
|
139
|
-
this.exp = exp;
|
|
140
|
-
this.name = name;
|
|
141
|
-
this.args = args;
|
|
142
|
-
}
|
|
143
|
-
visit(visitor, context = null) { return visitor.visitPipe(this, context); }
|
|
144
|
-
}
|
|
145
|
-
export class LiteralPrimitive extends AST {
|
|
146
|
-
constructor(span, value) {
|
|
147
|
-
super(span);
|
|
148
|
-
this.value = value;
|
|
149
|
-
}
|
|
150
|
-
visit(visitor, context = null) {
|
|
151
|
-
return visitor.visitLiteralPrimitive(this, context);
|
|
152
|
-
}
|
|
153
|
-
}
|
|
154
|
-
export class LiteralArray extends AST {
|
|
155
|
-
constructor(span, expressions) {
|
|
156
|
-
super(span);
|
|
157
|
-
this.expressions = expressions;
|
|
158
|
-
}
|
|
159
|
-
visit(visitor, context = null) {
|
|
160
|
-
return visitor.visitLiteralArray(this, context);
|
|
161
|
-
}
|
|
162
|
-
}
|
|
163
|
-
export class LiteralMap extends AST {
|
|
164
|
-
constructor(span, keys, values) {
|
|
165
|
-
super(span);
|
|
166
|
-
this.keys = keys;
|
|
167
|
-
this.values = values;
|
|
168
|
-
}
|
|
169
|
-
visit(visitor, context = null) {
|
|
170
|
-
return visitor.visitLiteralMap(this, context);
|
|
171
|
-
}
|
|
172
|
-
}
|
|
173
|
-
export class Interpolation extends AST {
|
|
174
|
-
constructor(span, strings, expressions) {
|
|
175
|
-
super(span);
|
|
176
|
-
this.strings = strings;
|
|
177
|
-
this.expressions = expressions;
|
|
178
|
-
}
|
|
179
|
-
visit(visitor, context = null) {
|
|
180
|
-
return visitor.visitInterpolation(this, context);
|
|
181
|
-
}
|
|
182
|
-
}
|
|
183
|
-
export class Binary extends AST {
|
|
184
|
-
constructor(span, operation, left, right) {
|
|
185
|
-
super(span);
|
|
186
|
-
this.operation = operation;
|
|
187
|
-
this.left = left;
|
|
188
|
-
this.right = right;
|
|
189
|
-
}
|
|
190
|
-
visit(visitor, context = null) {
|
|
191
|
-
return visitor.visitBinary(this, context);
|
|
192
|
-
}
|
|
193
|
-
}
|
|
194
|
-
export class PrefixNot extends AST {
|
|
195
|
-
constructor(span, expression) {
|
|
196
|
-
super(span);
|
|
197
|
-
this.expression = expression;
|
|
198
|
-
}
|
|
199
|
-
visit(visitor, context = null) {
|
|
200
|
-
return visitor.visitPrefixNot(this, context);
|
|
201
|
-
}
|
|
202
|
-
}
|
|
203
|
-
export class MethodCall extends AST {
|
|
204
|
-
constructor(span, receiver, name, args) {
|
|
205
|
-
super(span);
|
|
206
|
-
this.receiver = receiver;
|
|
207
|
-
this.name = name;
|
|
208
|
-
this.args = args;
|
|
209
|
-
}
|
|
210
|
-
visit(visitor, context = null) {
|
|
211
|
-
return visitor.visitMethodCall(this, context);
|
|
212
|
-
}
|
|
213
|
-
}
|
|
214
|
-
export class SafeMethodCall extends AST {
|
|
215
|
-
constructor(span, receiver, name, args) {
|
|
216
|
-
super(span);
|
|
217
|
-
this.receiver = receiver;
|
|
218
|
-
this.name = name;
|
|
219
|
-
this.args = args;
|
|
220
|
-
}
|
|
221
|
-
visit(visitor, context = null) {
|
|
222
|
-
return visitor.visitSafeMethodCall(this, context);
|
|
223
|
-
}
|
|
224
|
-
}
|
|
225
|
-
export class FunctionCall extends AST {
|
|
226
|
-
constructor(span, target, args) {
|
|
227
|
-
super(span);
|
|
228
|
-
this.target = target;
|
|
229
|
-
this.args = args;
|
|
230
|
-
}
|
|
231
|
-
visit(visitor, context = null) {
|
|
232
|
-
return visitor.visitFunctionCall(this, context);
|
|
233
|
-
}
|
|
234
|
-
}
|
|
235
|
-
export class ASTWithSource extends AST {
|
|
236
|
-
constructor(ast, source, location, errors) {
|
|
237
|
-
super(new ParseSpan(0, isBlank(source) ? 0 : source.length));
|
|
238
|
-
this.ast = ast;
|
|
239
|
-
this.source = source;
|
|
240
|
-
this.location = location;
|
|
241
|
-
this.errors = errors;
|
|
242
|
-
}
|
|
243
|
-
visit(visitor, context = null) { return this.ast.visit(visitor, context); }
|
|
244
|
-
toString() { return `${this.source} in ${this.location}`; }
|
|
245
|
-
}
|
|
246
|
-
export class TemplateBinding {
|
|
247
|
-
constructor(span, key, keyIsVar, name, expression) {
|
|
248
|
-
this.span = span;
|
|
249
|
-
this.key = key;
|
|
250
|
-
this.keyIsVar = keyIsVar;
|
|
251
|
-
this.name = name;
|
|
252
|
-
this.expression = expression;
|
|
253
|
-
}
|
|
254
|
-
}
|
|
255
|
-
export class RecursiveAstVisitor {
|
|
256
|
-
visitBinary(ast, context) {
|
|
257
|
-
ast.left.visit(this);
|
|
258
|
-
ast.right.visit(this);
|
|
259
|
-
return null;
|
|
260
|
-
}
|
|
261
|
-
visitChain(ast, context) { return this.visitAll(ast.expressions, context); }
|
|
262
|
-
visitConditional(ast, context) {
|
|
263
|
-
ast.condition.visit(this);
|
|
264
|
-
ast.trueExp.visit(this);
|
|
265
|
-
ast.falseExp.visit(this);
|
|
266
|
-
return null;
|
|
267
|
-
}
|
|
268
|
-
visitPipe(ast, context) {
|
|
269
|
-
ast.exp.visit(this);
|
|
270
|
-
this.visitAll(ast.args, context);
|
|
271
|
-
return null;
|
|
272
|
-
}
|
|
273
|
-
visitFunctionCall(ast, context) {
|
|
274
|
-
ast.target.visit(this);
|
|
275
|
-
this.visitAll(ast.args, context);
|
|
276
|
-
return null;
|
|
277
|
-
}
|
|
278
|
-
visitImplicitReceiver(ast, context) { return null; }
|
|
279
|
-
visitInterpolation(ast, context) {
|
|
280
|
-
return this.visitAll(ast.expressions, context);
|
|
281
|
-
}
|
|
282
|
-
visitKeyedRead(ast, context) {
|
|
283
|
-
ast.obj.visit(this);
|
|
284
|
-
ast.key.visit(this);
|
|
285
|
-
return null;
|
|
286
|
-
}
|
|
287
|
-
visitKeyedWrite(ast, context) {
|
|
288
|
-
ast.obj.visit(this);
|
|
289
|
-
ast.key.visit(this);
|
|
290
|
-
ast.value.visit(this);
|
|
291
|
-
return null;
|
|
292
|
-
}
|
|
293
|
-
visitLiteralArray(ast, context) {
|
|
294
|
-
return this.visitAll(ast.expressions, context);
|
|
295
|
-
}
|
|
296
|
-
visitLiteralMap(ast, context) { return this.visitAll(ast.values, context); }
|
|
297
|
-
visitLiteralPrimitive(ast, context) { return null; }
|
|
298
|
-
visitMethodCall(ast, context) {
|
|
299
|
-
ast.receiver.visit(this);
|
|
300
|
-
return this.visitAll(ast.args, context);
|
|
301
|
-
}
|
|
302
|
-
visitPrefixNot(ast, context) {
|
|
303
|
-
ast.expression.visit(this);
|
|
304
|
-
return null;
|
|
305
|
-
}
|
|
306
|
-
visitPropertyRead(ast, context) {
|
|
307
|
-
ast.receiver.visit(this);
|
|
308
|
-
return null;
|
|
309
|
-
}
|
|
310
|
-
visitPropertyWrite(ast, context) {
|
|
311
|
-
ast.receiver.visit(this);
|
|
312
|
-
ast.value.visit(this);
|
|
313
|
-
return null;
|
|
314
|
-
}
|
|
315
|
-
visitSafePropertyRead(ast, context) {
|
|
316
|
-
ast.receiver.visit(this);
|
|
317
|
-
return null;
|
|
318
|
-
}
|
|
319
|
-
visitSafeMethodCall(ast, context) {
|
|
320
|
-
ast.receiver.visit(this);
|
|
321
|
-
return this.visitAll(ast.args, context);
|
|
322
|
-
}
|
|
323
|
-
visitAll(asts, context) {
|
|
324
|
-
asts.forEach(ast => ast.visit(this, context));
|
|
325
|
-
return null;
|
|
326
|
-
}
|
|
327
|
-
visitQuote(ast, context) { return null; }
|
|
328
|
-
}
|
|
329
|
-
export class AstTransformer {
|
|
330
|
-
visitImplicitReceiver(ast, context) { return ast; }
|
|
331
|
-
visitInterpolation(ast, context) {
|
|
332
|
-
return new Interpolation(ast.span, ast.strings, this.visitAll(ast.expressions));
|
|
333
|
-
}
|
|
334
|
-
visitLiteralPrimitive(ast, context) {
|
|
335
|
-
return new LiteralPrimitive(ast.span, ast.value);
|
|
336
|
-
}
|
|
337
|
-
visitPropertyRead(ast, context) {
|
|
338
|
-
return new PropertyRead(ast.span, ast.receiver.visit(this), ast.name);
|
|
339
|
-
}
|
|
340
|
-
visitPropertyWrite(ast, context) {
|
|
341
|
-
return new PropertyWrite(ast.span, ast.receiver.visit(this), ast.name, ast.value);
|
|
342
|
-
}
|
|
343
|
-
visitSafePropertyRead(ast, context) {
|
|
344
|
-
return new SafePropertyRead(ast.span, ast.receiver.visit(this), ast.name);
|
|
345
|
-
}
|
|
346
|
-
visitMethodCall(ast, context) {
|
|
347
|
-
return new MethodCall(ast.span, ast.receiver.visit(this), ast.name, this.visitAll(ast.args));
|
|
348
|
-
}
|
|
349
|
-
visitSafeMethodCall(ast, context) {
|
|
350
|
-
return new SafeMethodCall(ast.span, ast.receiver.visit(this), ast.name, this.visitAll(ast.args));
|
|
351
|
-
}
|
|
352
|
-
visitFunctionCall(ast, context) {
|
|
353
|
-
return new FunctionCall(ast.span, ast.target.visit(this), this.visitAll(ast.args));
|
|
354
|
-
}
|
|
355
|
-
visitLiteralArray(ast, context) {
|
|
356
|
-
return new LiteralArray(ast.span, this.visitAll(ast.expressions));
|
|
357
|
-
}
|
|
358
|
-
visitLiteralMap(ast, context) {
|
|
359
|
-
return new LiteralMap(ast.span, ast.keys, this.visitAll(ast.values));
|
|
360
|
-
}
|
|
361
|
-
visitBinary(ast, context) {
|
|
362
|
-
return new Binary(ast.span, ast.operation, ast.left.visit(this), ast.right.visit(this));
|
|
363
|
-
}
|
|
364
|
-
visitPrefixNot(ast, context) {
|
|
365
|
-
return new PrefixNot(ast.span, ast.expression.visit(this));
|
|
366
|
-
}
|
|
367
|
-
visitConditional(ast, context) {
|
|
368
|
-
return new Conditional(ast.span, ast.condition.visit(this), ast.trueExp.visit(this), ast.falseExp.visit(this));
|
|
369
|
-
}
|
|
370
|
-
visitPipe(ast, context) {
|
|
371
|
-
return new BindingPipe(ast.span, ast.exp.visit(this), ast.name, this.visitAll(ast.args));
|
|
372
|
-
}
|
|
373
|
-
visitKeyedRead(ast, context) {
|
|
374
|
-
return new KeyedRead(ast.span, ast.obj.visit(this), ast.key.visit(this));
|
|
375
|
-
}
|
|
376
|
-
visitKeyedWrite(ast, context) {
|
|
377
|
-
return new KeyedWrite(ast.span, ast.obj.visit(this), ast.key.visit(this), ast.value.visit(this));
|
|
378
|
-
}
|
|
379
|
-
visitAll(asts) {
|
|
380
|
-
const res = new Array(asts.length);
|
|
381
|
-
for (let i = 0; i < asts.length; ++i) {
|
|
382
|
-
res[i] = asts[i].visit(this);
|
|
383
|
-
}
|
|
384
|
-
return res;
|
|
385
|
-
}
|
|
386
|
-
visitChain(ast, context) {
|
|
387
|
-
return new Chain(ast.span, this.visitAll(ast.expressions));
|
|
388
|
-
}
|
|
389
|
-
visitQuote(ast, context) {
|
|
390
|
-
return new Quote(ast.span, ast.prefix, ast.uninterpretedExpression, ast.location);
|
|
391
|
-
}
|
|
392
|
-
}
|
|
393
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhcjJwYXJzZS9zcmMvbGliL2FuZ3VsYXIvY29tcGlsZXIvYXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUdILE9BQU8sRUFBQyxPQUFPLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUV2QyxNQUFNLE9BQU8sV0FBVztJQUVwQixZQUNJLE9BQWUsRUFBUyxLQUFhLEVBQVMsV0FBbUIsRUFBUyxXQUFpQjtRQUFuRSxVQUFLLEdBQUwsS0FBSyxDQUFRO1FBQVMsZ0JBQVcsR0FBWCxXQUFXLENBQVE7UUFBUyxnQkFBVyxHQUFYLFdBQVcsQ0FBTTtRQUMzRixJQUFJLENBQUMsT0FBTyxHQUFHLGlCQUFpQixPQUFPLElBQUksV0FBVyxLQUFLLEtBQUssUUFBUSxXQUFXLEVBQUUsQ0FBQztJQUMxRixDQUFDO0NBQ0o7QUFFRCxNQUFNLE9BQU8sU0FBUztJQUNsQixZQUFtQixLQUFhLEVBQVMsR0FBVztRQUFqQyxVQUFLLEdBQUwsS0FBSyxDQUFRO1FBQVMsUUFBRyxHQUFILEdBQUcsQ0FBUTtJQUFHLENBQUM7Q0FDM0Q7QUFFRCxNQUFNLE9BQU8sR0FBRztJQUNaLFlBQW1CLElBQWU7UUFBZixTQUFJLEdBQUosSUFBSSxDQUFXO0lBQUcsQ0FBQztJQUN0QyxLQUFLLENBQUMsT0FBbUIsRUFBRSxVQUFlLElBQUksSUFBUyxPQUFPLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDckUsUUFBUSxLQUFhLE9BQU8sS0FBSyxDQUFDLENBQUMsQ0FBQztDQUN2QztBQUVEOzs7Ozs7Ozs7Ozs7R0FZRztBQUNILE1BQU0sT0FBTyxLQUFNLFNBQVEsR0FBRztJQUMxQixZQUNJLElBQWUsRUFBUyxNQUFjLEVBQVMsdUJBQStCLEVBQ3ZFLFFBQWE7UUFDcEIsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRlksV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUFTLDRCQUF1QixHQUF2Qix1QkFBdUIsQ0FBUTtRQUN2RSxhQUFRLEdBQVIsUUFBUSxDQUFLO0lBRXhCLENBQUM7SUFDRCxLQUFLLENBQUMsT0FBbUIsRUFBRSxVQUFlLElBQUksSUFBUyxPQUFPLE9BQU8sQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNsRyxRQUFRLEtBQWEsT0FBTyxPQUFPLENBQUMsQ0FBQyxDQUFDO0NBQ3pDO0FBRUQsTUFBTSxPQUFPLFNBQVUsU0FBUSxHQUFHO0lBQzlCLEtBQUssQ0FBQyxPQUFtQixFQUFFLFVBQWUsSUFBSTtRQUMxQyxhQUFhO0lBQ2pCLENBQUM7Q0FDSjtBQUVELE1BQU0sT0FBTyxnQkFBaUIsU0FBUSxHQUFHO0lBQ3JDLEtBQUssQ0FBQyxPQUFtQixFQUFFLFVBQWUsSUFBSTtRQUMxQyxPQUFPLE9BQU8sQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDeEQsQ0FBQztDQUNKO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLE9BQU8sS0FBTSxTQUFRLEdBQUc7SUFDMUIsWUFBWSxJQUFlLEVBQVMsV0FBa0I7UUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7UUFBbEMsZ0JBQVcsR0FBWCxXQUFXLENBQU87SUFBaUIsQ0FBQztJQUN4RSxLQUFLLENBQUMsT0FBbUIsRUFBRSxVQUFlLElBQUksSUFBUyxPQUFPLE9BQU8sQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztDQUNyRztBQUVELE1BQU0sT0FBTyxXQUFZLFNBQVEsR0FBRztJQUNoQyxZQUFZLElBQWUsRUFBUyxTQUFjLEVBQVMsT0FBWSxFQUFTLFFBQWE7UUFDekYsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRG9CLGNBQVMsR0FBVCxTQUFTLENBQUs7UUFBUyxZQUFPLEdBQVAsT0FBTyxDQUFLO1FBQVMsYUFBUSxHQUFSLFFBQVEsQ0FBSztJQUU3RixDQUFDO0lBQ0QsS0FBSyxDQUFDLE9BQW1CLEVBQUUsVUFBZSxJQUFJO1FBQzFDLE9BQU8sT0FBTyxDQUFDLGdCQUFnQixDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztJQUNuRCxDQUFDO0NBQ0o7QUFFRCxNQUFNLE9BQU8sWUFBYSxTQUFRLEdBQUc7SUFDakMsWUFBWSxJQUFlLEVBQVMsUUFBYSxFQUFTLElBQVk7UUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7UUFBbEQsYUFBUSxHQUFSLFFBQVEsQ0FBSztRQUFTLFNBQUksR0FBSixJQUFJLENBQVE7SUFBaUIsQ0FBQztJQUN4RixLQUFLLENBQUMsT0FBbUIsRUFBRSxVQUFlLElBQUk7UUFDMUMsT0FBTyxPQUFPLENBQUMsaUJBQWlCLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3BELENBQUM7Q0FDSjtBQUVELE1BQU0sT0FBTyxhQUFjLFNBQVEsR0FBRztJQUNsQyxZQUFZLElBQWUsRUFBUyxRQUFhLEVBQVMsSUFBWSxFQUFTLEtBQVU7UUFDckYsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRG9CLGFBQVEsR0FBUixRQUFRLENBQUs7UUFBUyxTQUFJLEdBQUosSUFBSSxDQUFRO1FBQVMsVUFBSyxHQUFMLEtBQUssQ0FBSztJQUV6RixDQUFDO0lBQ0QsS0FBSyxDQUFDLE9BQW1CLEVBQUUsVUFBZSxJQUFJO1FBQzFDLE9BQU8sT0FBTyxDQUFDLGtCQUFrQixDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztJQUNyRCxDQUFDO0NBQ0o7QUFFRCxNQUFNLE9BQU8sZ0JBQWlCLFNBQVEsR0FBRztJQUNyQyxZQUFZLElBQWUsRUFBUyxRQUFhLEVBQVMsSUFBWTtRQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUFsRCxhQUFRLEdBQVIsUUFBUSxDQUFLO1FBQVMsU0FBSSxHQUFKLElBQUksQ0FBUTtJQUFpQixDQUFDO0lBQ3hGLEtBQUssQ0FBQyxPQUFtQixFQUFFLFVBQWUsSUFBSTtRQUMxQyxPQUFPLE9BQU8sQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDeEQsQ0FBQztDQUNKO0FBRUQsTUFBTSxPQUFPLFNBQVUsU0FBUSxHQUFHO0lBQzlCLFlBQVksSUFBZSxFQUFTLEdBQVEsRUFBUyxHQUFRO1FBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQXpDLFFBQUcsR0FBSCxHQUFHLENBQUs7UUFBUyxRQUFHLEdBQUgsR0FBRyxDQUFLO0lBQWlCLENBQUM7SUFDL0UsS0FBSyxDQUFDLE9BQW1CLEVBQUUsVUFBZSxJQUFJO1FBQzFDLE9BQU8sT0FBTyxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDakQsQ0FBQztDQUNKO0FBRUQsTUFBTSxPQUFPLFVBQVcsU0FBUSxHQUFHO0lBQy9CLFlBQVksSUFBZSxFQUFTLEdBQVEsRUFBUyxHQUFRLEVBQVMsS0FBVTtRQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUE1RCxRQUFHLEdBQUgsR0FBRyxDQUFLO1FBQVMsUUFBRyxHQUFILEdBQUcsQ0FBSztRQUFTLFVBQUssR0FBTCxLQUFLLENBQUs7SUFBaUIsQ0FBQztJQUNsRyxLQUFLLENBQUMsT0FBbUIsRUFBRSxVQUFlLElBQUk7UUFDMUMsT0FBTyxPQUFPLENBQUMsZUFBZSxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztJQUNsRCxDQUFDO0NBQ0o7QUFFRCxNQUFNLE9BQU8sV0FBWSxTQUFRLEdBQUc7SUFDaEMsWUFBWSxJQUFlLEVBQVMsR0FBUSxFQUFTLElBQVksRUFBUyxJQUFXO1FBQ2pGLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztRQURvQixRQUFHLEdBQUgsR0FBRyxDQUFLO1FBQVMsU0FBSSxHQUFKLElBQUksQ0FBUTtRQUFTLFNBQUksR0FBSixJQUFJLENBQU87SUFFckYsQ0FBQztJQUNELEtBQUssQ0FBQyxPQUFtQixFQUFFLFVBQWUsSUFBSSxJQUFTLE9BQU8sT0FBTyxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO0NBQ3BHO0FBRUQsTUFBTSxPQUFPLGdCQUFpQixTQUFRLEdBQUc7SUFDckMsWUFBWSxJQUFlLEVBQVMsS0FBVTtRQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUExQixVQUFLLEdBQUwsS0FBSyxDQUFLO0lBQWlCLENBQUM7SUFDaEUsS0FBSyxDQUFDLE9BQW1CLEVBQUUsVUFBZSxJQUFJO1FBQzFDLE9BQU8sT0FBTyxDQUFDLHFCQUFxQixDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztJQUN4RCxDQUFDO0NBQ0o7QUFFRCxNQUFNLE9BQU8sWUFBYSxTQUFRLEdBQUc7SUFDakMsWUFBWSxJQUFlLEVBQVMsV0FBa0I7UUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7UUFBbEMsZ0JBQVcsR0FBWCxXQUFXLENBQU87SUFBaUIsQ0FBQztJQUN4RSxLQUFLLENBQUMsT0FBbUIsRUFBRSxVQUFlLElBQUk7UUFDMUMsT0FBTyxPQUFPLENBQUMsaUJBQWlCLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3BELENBQUM7Q0FDSjtBQUVELE1BQU0sT0FBTyxVQUFXLFNBQVEsR0FBRztJQUMvQixZQUFZLElBQWUsRUFBUyxJQUFXLEVBQVMsTUFBYTtRQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUFqRCxTQUFJLEdBQUosSUFBSSxDQUFPO1FBQVMsV0FBTSxHQUFOLE1BQU0sQ0FBTztJQUFpQixDQUFDO0lBQ3ZGLEtBQUssQ0FBQyxPQUFtQixFQUFFLFVBQWUsSUFBSTtRQUMxQyxPQUFPLE9BQU8sQ0FBQyxlQUFlLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ2xELENBQUM7Q0FDSjtBQUVELE1BQU0sT0FBTyxhQUFjLFNBQVEsR0FBRztJQUNsQyxZQUFZLElBQWUsRUFBUyxPQUFjLEVBQVMsV0FBa0I7UUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7UUFBekQsWUFBTyxHQUFQLE9BQU8sQ0FBTztRQUFTLGdCQUFXLEdBQVgsV0FBVyxDQUFPO0lBQWlCLENBQUM7SUFDL0YsS0FBSyxDQUFDLE9BQW1CLEVBQUUsVUFBZSxJQUFJO1FBQzFDLE9BQU8sT0FBTyxDQUFDLGtCQUFrQixDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztJQUNyRCxDQUFDO0NBQ0o7QUFFRCxNQUFNLE9BQU8sTUFBTyxTQUFRLEdBQUc7SUFDM0IsWUFBWSxJQUFlLEVBQVMsU0FBaUIsRUFBUyxJQUFTLEVBQVMsS0FBVTtRQUN0RixLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7UUFEb0IsY0FBUyxHQUFULFNBQVMsQ0FBUTtRQUFTLFNBQUksR0FBSixJQUFJLENBQUs7UUFBUyxVQUFLLEdBQUwsS0FBSyxDQUFLO0lBRTFGLENBQUM7SUFDRCxLQUFLLENBQUMsT0FBbUIsRUFBRSxVQUFlLElBQUk7UUFDMUMsT0FBTyxPQUFPLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztJQUM5QyxDQUFDO0NBQ0o7QUFFRCxNQUFNLE9BQU8sU0FBVSxTQUFRLEdBQUc7SUFDOUIsWUFBWSxJQUFlLEVBQVMsVUFBZTtRQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUEvQixlQUFVLEdBQVYsVUFBVSxDQUFLO0lBQWlCLENBQUM7SUFDckUsS0FBSyxDQUFDLE9BQW1CLEVBQUUsVUFBZSxJQUFJO1FBQzFDLE9BQU8sT0FBTyxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDakQsQ0FBQztDQUNKO0FBRUQsTUFBTSxPQUFPLFVBQVcsU0FBUSxHQUFHO0lBQy9CLFlBQVksSUFBZSxFQUFTLFFBQWEsRUFBUyxJQUFZLEVBQVMsSUFBVztRQUN0RixLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7UUFEb0IsYUFBUSxHQUFSLFFBQVEsQ0FBSztRQUFTLFNBQUksR0FBSixJQUFJLENBQVE7UUFBUyxTQUFJLEdBQUosSUFBSSxDQUFPO0lBRTFGLENBQUM7SUFDRCxLQUFLLENBQUMsT0FBbUIsRUFBRSxVQUFlLElBQUk7UUFDMUMsT0FBTyxPQUFPLENBQUMsZUFBZSxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztJQUNsRCxDQUFDO0NBQ0o7QUFFRCxNQUFNLE9BQU8sY0FBZSxTQUFRLEdBQUc7SUFDbkMsWUFBWSxJQUFlLEVBQVMsUUFBYSxFQUFTLElBQVksRUFBUyxJQUFXO1FBQ3RGLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztRQURvQixhQUFRLEdBQVIsUUFBUSxDQUFLO1FBQVMsU0FBSSxHQUFKLElBQUksQ0FBUTtRQUFTLFNBQUksR0FBSixJQUFJLENBQU87SUFFMUYsQ0FBQztJQUNELEtBQUssQ0FBQyxPQUFtQixFQUFFLFVBQWUsSUFBSTtRQUMxQyxPQUFPLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDdEQsQ0FBQztDQUNKO0FBRUQsTUFBTSxPQUFPLFlBQWEsU0FBUSxHQUFHO0lBQ2pDLFlBQVksSUFBZSxFQUFTLE1BQVcsRUFBUyxJQUFXO1FBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQS9DLFdBQU0sR0FBTixNQUFNLENBQUs7UUFBUyxTQUFJLEdBQUosSUFBSSxDQUFPO0lBQWlCLENBQUM7SUFDckYsS0FBSyxDQUFDLE9BQW1CLEVBQUUsVUFBZSxJQUFJO1FBQzFDLE9BQU8sT0FBTyxDQUFDLGlCQUFpQixDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztJQUNwRCxDQUFDO0NBQ0o7QUFFRCxNQUFNLE9BQU8sYUFBYyxTQUFRLEdBQUc7SUFDbEMsWUFDVyxHQUFRLEVBQVMsTUFBYyxFQUFTLFFBQWdCLEVBQ3hELE1BQXFCO1FBQzVCLEtBQUssQ0FBQyxJQUFJLFNBQVMsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1FBRnRELFFBQUcsR0FBSCxHQUFHLENBQUs7UUFBUyxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQVMsYUFBUSxHQUFSLFFBQVEsQ0FBUTtRQUN4RCxXQUFNLEdBQU4sTUFBTSxDQUFlO0lBRWhDLENBQUM7SUFDRCxLQUFLLENBQUMsT0FBbUIsRUFBRSxVQUFlLElBQUksSUFBUyxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDakcsUUFBUSxLQUFhLE9BQU8sR0FBRyxJQUFJLENBQUMsTUFBTSxPQUFPLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUM7Q0FDdEU7QUFFRCxNQUFNLE9BQU8sZUFBZTtJQUN4QixZQUNXLElBQWUsRUFBUyxHQUFXLEVBQVMsUUFBaUIsRUFBUyxJQUFZLEVBQ2xGLFVBQXlCO1FBRHpCLFNBQUksR0FBSixJQUFJLENBQVc7UUFBUyxRQUFHLEdBQUgsR0FBRyxDQUFRO1FBQVMsYUFBUSxHQUFSLFFBQVEsQ0FBUztRQUFTLFNBQUksR0FBSixJQUFJLENBQVE7UUFDbEYsZUFBVSxHQUFWLFVBQVUsQ0FBZTtJQUFHLENBQUM7Q0FDM0M7QUF3QkQsTUFBTSxPQUFPLG1CQUFtQjtJQUM1QixXQUFXLENBQUMsR0FBVyxFQUFFLE9BQVk7UUFDakMsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDckIsR0FBRyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdEIsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUNELFVBQVUsQ0FBQyxHQUFVLEVBQUUsT0FBWSxJQUFTLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM3RixnQkFBZ0IsQ0FBQyxHQUFnQixFQUFFLE9BQVk7UUFDM0MsR0FBRyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDMUIsR0FBRyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDeEIsR0FBRyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDekIsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUNELFNBQVMsQ0FBQyxHQUFnQixFQUFFLE9BQVk7UUFDcEMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDcEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ2pDLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFDRCxpQkFBaUIsQ0FBQyxHQUFpQixFQUFFLE9BQVk7UUFDN0MsR0FBRyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdkIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ2pDLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFDRCxxQkFBcUIsQ0FBQyxHQUFxQixFQUFFLE9BQVksSUFBUyxPQUFPLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDaEYsa0JBQWtCLENBQUMsR0FBa0IsRUFBRSxPQUFZO1FBQy9DLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFDRCxjQUFjLENBQUMsR0FBYyxFQUFFLE9BQVk7UUFDdkMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDcEIsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDcEIsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUNELGVBQWUsQ0FBQyxHQUFlLEVBQUUsT0FBWTtRQUN6QyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNwQixHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNwQixHQUFHLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN0QixPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBQ0QsaUJBQWlCLENBQUMsR0FBaUIsRUFBRSxPQUFZO1FBQzdDLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFDRCxlQUFlLENBQUMsR0FBZSxFQUFFLE9BQVksSUFBUyxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbEcscUJBQXFCLENBQUMsR0FBcUIsRUFBRSxPQUFZLElBQVMsT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ2hGLGVBQWUsQ0FBQyxHQUFlLEVBQUUsT0FBWTtRQUN6QyxHQUFHLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN6QixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBQ0QsY0FBYyxDQUFDLEdBQWMsRUFBRSxPQUFZO1FBQ3ZDLEdBQUcsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzNCLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFDRCxpQkFBaUIsQ0FBQyxHQUFpQixFQUFFLE9BQVk7UUFDN0MsR0FBRyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDekIsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUNELGtCQUFrQixDQUFDLEdBQWtCLEVBQUUsT0FBWTtRQUMvQyxHQUFHLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN6QixHQUFHLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN0QixPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBQ0QscUJBQXFCLENBQUMsR0FBcUIsRUFBRSxPQUFZO1FBQ3JELEdBQUcsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3pCLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFDRCxtQkFBbUIsQ0FBQyxHQUFtQixFQUFFLE9BQVk7UUFDakQsR0FBRyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDekIsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUNELFFBQVEsQ0FBQyxJQUFXLEVBQUUsT0FBWTtRQUM5QixJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQztRQUM5QyxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBQ0QsVUFBVSxDQUFDLEdBQVUsRUFBRSxPQUFZLElBQVMsT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUFDO0NBQzdEO0FBRUQsTUFBTSxPQUFPLGNBQWM7SUFDdkIscUJBQXFCLENBQUMsR0FBcUIsRUFBRSxPQUFZLElBQVMsT0FBTyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBRS9FLGtCQUFrQixDQUFDLEdBQWtCLEVBQUUsT0FBWTtRQUMvQyxPQUFPLElBQUksYUFBYSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO0lBQ3BGLENBQUM7SUFFRCxxQkFBcUIsQ0FBQyxHQUFxQixFQUFFLE9BQVk7UUFDckQsT0FBTyxJQUFJLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3JELENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxHQUFpQixFQUFFLE9BQVk7UUFDN0MsT0FBTyxJQUFJLFlBQVksQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMxRSxDQUFDO0lBRUQsa0JBQWtCLENBQUMsR0FBa0IsRUFBRSxPQUFZO1FBQy9DLE9BQU8sSUFBSSxhQUFhLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxHQUFHLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN0RixDQUFDO0lBRUQscUJBQXFCLENBQUMsR0FBcUIsRUFBRSxPQUFZO1FBQ3JELE9BQU8sSUFBSSxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM5RSxDQUFDO0lBRUQsZUFBZSxDQUFDLEdBQWUsRUFBRSxPQUFZO1FBQ3pDLE9BQU8sSUFBSSxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxHQUFHLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDakcsQ0FBQztJQUVELG1CQUFtQixDQUFDLEdBQW1CLEVBQUUsT0FBWTtRQUNqRCxPQUFPLElBQUksY0FBYyxDQUNyQixHQUFHLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLEdBQUcsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUMvRSxDQUFDO0lBRUQsaUJBQWlCLENBQUMsR0FBaUIsRUFBRSxPQUFZO1FBQzdDLE9BQU8sSUFBSSxZQUFZLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3ZGLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxHQUFpQixFQUFFLE9BQVk7UUFDN0MsT0FBTyxJQUFJLFlBQVksQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7SUFDdEUsQ0FBQztJQUVELGVBQWUsQ0FBQyxHQUFlLEVBQUUsT0FBWTtRQUN6QyxPQUFPLElBQUksVUFBVSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3pFLENBQUM7SUFFRCxXQUFXLENBQUMsR0FBVyxFQUFFLE9BQVk7UUFDakMsT0FBTyxJQUFJLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxTQUFTLEVBQUUsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUM1RixDQUFDO0lBRUQsY0FBYyxDQUFDLEdBQWMsRUFBRSxPQUFZO1FBQ3ZDLE9BQU8sSUFBSSxTQUFTLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQy9ELENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxHQUFnQixFQUFFLE9BQVk7UUFDM0MsT0FBTyxJQUFJLFdBQVcsQ0FDbEIsR0FBRyxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxHQUFHLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxHQUFHLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ2hHLENBQUM7SUFFRCxTQUFTLENBQUMsR0FBZ0IsRUFBRSxPQUFZO1FBQ3BDLE9BQU8sSUFBSSxXQUFXLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxHQUFHLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDN0YsQ0FBQztJQUVELGNBQWMsQ0FBQyxHQUFjLEVBQUUsT0FBWTtRQUN2QyxPQUFPLElBQUksU0FBUyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUM3RSxDQUFDO0lBRUQsZUFBZSxDQUFDLEdBQWUsRUFBRSxPQUFZO1FBQ3pDLE9BQU8sSUFBSSxVQUFVLENBQ2pCLEdBQUcsQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNuRixDQUFDO0lBRUQsUUFBUSxDQUFDLElBQVc7UUFDaEIsTUFBTSxHQUFHLEdBQUcsSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ25DLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUM7WUFDbkMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDakMsQ0FBQztRQUNELE9BQU8sR0FBRyxDQUFDO0lBQ2YsQ0FBQztJQUVELFVBQVUsQ0FBQyxHQUFVLEVBQUUsT0FBWTtRQUMvQixPQUFPLElBQUksS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztJQUMvRCxDQUFDO0lBRUQsVUFBVSxDQUFDLEdBQVUsRUFBRSxPQUFZO1FBQy9CLE9BQU8sSUFBSSxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyx1QkFBdUIsRUFBRSxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDdEYsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXHJcbiAqIEBsaWNlbnNlXHJcbiAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxyXG4gKlxyXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxyXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXHJcbiAqL1xyXG5cclxuXHJcbmltcG9ydCB7aXNCbGFua30gZnJvbSAnLi4vZmFjYWRlL2xhbmcnO1xyXG5cclxuZXhwb3J0IGNsYXNzIFBhcnNlckVycm9yIHtcclxuICAgIHB1YmxpYyBtZXNzYWdlOiBzdHJpbmc7XHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBtZXNzYWdlOiBzdHJpbmcsIHB1YmxpYyBpbnB1dDogc3RyaW5nLCBwdWJsaWMgZXJyTG9jYXRpb246IHN0cmluZywgcHVibGljIGN0eExvY2F0aW9uPzogYW55KSB7XHJcbiAgICAgICAgdGhpcy5tZXNzYWdlID0gYFBhcnNlciBFcnJvcjogJHttZXNzYWdlfSAke2VyckxvY2F0aW9ufSBbJHtpbnB1dH1dIGluICR7Y3R4TG9jYXRpb259YDtcclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIFBhcnNlU3BhbiB7XHJcbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgc3RhcnQ6IG51bWJlciwgcHVibGljIGVuZDogbnVtYmVyKSB7fVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgQVNUIHtcclxuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyBzcGFuOiBQYXJzZVNwYW4pIHt9XHJcbiAgICB2aXNpdCh2aXNpdG9yOiBBc3RWaXNpdG9yLCBjb250ZXh0OiBhbnkgPSBudWxsKTogYW55IHsgcmV0dXJuIG51bGw7IH1cclxuICAgIHRvU3RyaW5nKCk6IHN0cmluZyB7IHJldHVybiAnQVNUJzsgfVxyXG59XHJcblxyXG4vKipcclxuICogUmVwcmVzZW50cyBhIHF1b3RlZCBleHByZXNzaW9uIG9mIHRoZSBmb3JtOlxyXG4gKlxyXG4gKiBxdW90ZSA9IHByZWZpeCBgOmAgdW5pbnRlcnByZXRlZEV4cHJlc3Npb25cclxuICogcHJlZml4ID0gaWRlbnRpZmllclxyXG4gKiB1bmludGVycHJldGVkRXhwcmVzc2lvbiA9IGFyYml0cmFyeSBzdHJpbmdcclxuICpcclxuICogQSBxdW90ZWQgZXhwcmVzc2lvbiBpcyBtZWFudCB0byBiZSBwcmUtcHJvY2Vzc2VkIGJ5IGFuIEFTVCB0cmFuc2Zvcm1lciB0aGF0XHJcbiAqIGNvbnZlcnRzIGl0IGludG8gYW5vdGhlciBBU1QgdGhhdCBubyBsb25nZXIgY29udGFpbnMgcXVvdGVkIGV4cHJlc3Npb25zLlxyXG4gKiBJdCBpcyBtZWFudCB0byBhbGxvdyB0aGlyZC1wYXJ0eSBkZXZlbG9wZXJzIHRvIGV4dGVuZCBBbmd1bGFyIHRlbXBsYXRlXHJcbiAqIGV4cHJlc3Npb24gbGFuZ3VhZ2UuIFRoZSBgdW5pbnRlcnByZXRlZEV4cHJlc3Npb25gIHBhcnQgb2YgdGhlIHF1b3RlIGlzXHJcbiAqIHRoZXJlZm9yZSBub3QgaW50ZXJwcmV0ZWQgYnkgdGhlIEFuZ3VsYXIncyBvd24gZXhwcmVzc2lvbiBwYXJzZXIuXHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgUXVvdGUgZXh0ZW5kcyBBU1Qge1xyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgc3BhbjogUGFyc2VTcGFuLCBwdWJsaWMgcHJlZml4OiBzdHJpbmcsIHB1YmxpYyB1bmludGVycHJldGVkRXhwcmVzc2lvbjogc3RyaW5nLFxyXG4gICAgICAgIHB1YmxpYyBsb2NhdGlvbjogYW55KSB7XHJcbiAgICAgICAgc3VwZXIoc3Bhbik7XHJcbiAgICB9XHJcbiAgICB2aXNpdCh2aXNpdG9yOiBBc3RWaXNpdG9yLCBjb250ZXh0OiBhbnkgPSBudWxsKTogYW55IHsgcmV0dXJuIHZpc2l0b3IudmlzaXRRdW90ZSh0aGlzLCBjb250ZXh0KTsgfVxyXG4gICAgdG9TdHJpbmcoKTogc3RyaW5nIHsgcmV0dXJuICdRdW90ZSc7IH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIEVtcHR5RXhwciBleHRlbmRzIEFTVCB7XHJcbiAgICB2aXNpdCh2aXNpdG9yOiBBc3RWaXNpdG9yLCBjb250ZXh0OiBhbnkgPSBudWxsKSB7XHJcbiAgICAgICAgLy8gZG8gbm90aGluZ1xyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgSW1wbGljaXRSZWNlaXZlciBleHRlbmRzIEFTVCB7XHJcbiAgICB2aXNpdCh2aXNpdG9yOiBBc3RWaXNpdG9yLCBjb250ZXh0OiBhbnkgPSBudWxsKTogYW55IHtcclxuICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdEltcGxpY2l0UmVjZWl2ZXIodGhpcywgY29udGV4dCk7XHJcbiAgICB9XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBNdWx0aXBsZSBleHByZXNzaW9ucyBzZXBhcmF0ZWQgYnkgYSBzZW1pY29sb24uXHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgQ2hhaW4gZXh0ZW5kcyBBU1Qge1xyXG4gICAgY29uc3RydWN0b3Ioc3BhbjogUGFyc2VTcGFuLCBwdWJsaWMgZXhwcmVzc2lvbnM6IGFueVtdKSB7IHN1cGVyKHNwYW4pOyB9XHJcbiAgICB2aXNpdCh2aXNpdG9yOiBBc3RWaXNpdG9yLCBjb250ZXh0OiBhbnkgPSBudWxsKTogYW55IHsgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGFpbih0aGlzLCBjb250ZXh0KTsgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgQ29uZGl0aW9uYWwgZXh0ZW5kcyBBU1Qge1xyXG4gICAgY29uc3RydWN0b3Ioc3BhbjogUGFyc2VTcGFuLCBwdWJsaWMgY29uZGl0aW9uOiBBU1QsIHB1YmxpYyB0cnVlRXhwOiBBU1QsIHB1YmxpYyBmYWxzZUV4cDogQVNUKSB7XHJcbiAgICAgICAgc3VwZXIoc3Bhbik7XHJcbiAgICB9XHJcbiAgICB2aXNpdCh2aXNpdG9yOiBBc3RWaXNpdG9yLCBjb250ZXh0OiBhbnkgPSBudWxsKTogYW55IHtcclxuICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENvbmRpdGlvbmFsKHRoaXMsIGNvbnRleHQpO1xyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgUHJvcGVydHlSZWFkIGV4dGVuZHMgQVNUIHtcclxuICAgIGNvbnN0cnVjdG9yKHNwYW46IFBhcnNlU3BhbiwgcHVibGljIHJlY2VpdmVyOiBBU1QsIHB1YmxpYyBuYW1lOiBzdHJpbmcpIHsgc3VwZXIoc3Bhbik7IH1cclxuICAgIHZpc2l0KHZpc2l0b3I6IEFzdFZpc2l0b3IsIGNvbnRleHQ6IGFueSA9IG51bGwpOiBhbnkge1xyXG4gICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0UHJvcGVydHlSZWFkKHRoaXMsIGNvbnRleHQpO1xyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgUHJvcGVydHlXcml0ZSBleHRlbmRzIEFTVCB7XHJcbiAgICBjb25zdHJ1Y3RvcihzcGFuOiBQYXJzZVNwYW4sIHB1YmxpYyByZWNlaXZlcjogQVNULCBwdWJsaWMgbmFtZTogc3RyaW5nLCBwdWJsaWMgdmFsdWU6IEFTVCkge1xyXG4gICAgICAgIHN1cGVyKHNwYW4pO1xyXG4gICAgfVxyXG4gICAgdmlzaXQodmlzaXRvcjogQXN0VmlzaXRvciwgY29udGV4dDogYW55ID0gbnVsbCk6IGFueSB7XHJcbiAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRQcm9wZXJ0eVdyaXRlKHRoaXMsIGNvbnRleHQpO1xyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgU2FmZVByb3BlcnR5UmVhZCBleHRlbmRzIEFTVCB7XHJcbiAgICBjb25zdHJ1Y3RvcihzcGFuOiBQYXJzZVNwYW4sIHB1YmxpYyByZWNlaXZlcjogQVNULCBwdWJsaWMgbmFtZTogc3RyaW5nKSB7IHN1cGVyKHNwYW4pOyB9XHJcbiAgICB2aXNpdCh2aXNpdG9yOiBBc3RWaXNpdG9yLCBjb250ZXh0OiBhbnkgPSBudWxsKTogYW55IHtcclxuICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdFNhZmVQcm9wZXJ0eVJlYWQodGhpcywgY29udGV4dCk7XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBLZXllZFJlYWQgZXh0ZW5kcyBBU1Qge1xyXG4gICAgY29uc3RydWN0b3Ioc3BhbjogUGFyc2VTcGFuLCBwdWJsaWMgb2JqOiBBU1QsIHB1YmxpYyBrZXk6IEFTVCkgeyBzdXBlcihzcGFuKTsgfVxyXG4gICAgdmlzaXQodmlzaXRvcjogQXN0VmlzaXRvciwgY29udGV4dDogYW55ID0gbnVsbCk6IGFueSB7XHJcbiAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRLZXllZFJlYWQodGhpcywgY29udGV4dCk7XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBLZXllZFdyaXRlIGV4dGVuZHMgQVNUIHtcclxuICAgIGNvbnN0cnVjdG9yKHNwYW46IFBhcnNlU3BhbiwgcHVibGljIG9iajogQVNULCBwdWJsaWMga2V5OiBBU1QsIHB1YmxpYyB2YWx1ZTogQVNUKSB7IHN1cGVyKHNwYW4pOyB9XHJcbiAgICB2aXNpdCh2aXNpdG9yOiBBc3RWaXNpdG9yLCBjb250ZXh0OiBhbnkgPSBudWxsKTogYW55IHtcclxuICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdEtleWVkV3JpdGUodGhpcywgY29udGV4dCk7XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBCaW5kaW5nUGlwZSBleHRlbmRzIEFTVCB7XHJcbiAgICBjb25zdHJ1Y3RvcihzcGFuOiBQYXJzZVNwYW4sIHB1YmxpYyBleHA6IEFTVCwgcHVibGljIG5hbWU6IHN0cmluZywgcHVibGljIGFyZ3M6IGFueVtdKSB7XHJcbiAgICAgICAgc3VwZXIoc3Bhbik7XHJcbiAgICB9XHJcbiAgICB2aXNpdCh2aXNpdG9yOiBBc3RWaXNpdG9yLCBjb250ZXh0OiBhbnkgPSBudWxsKTogYW55IHsgcmV0dXJuIHZpc2l0b3IudmlzaXRQaXBlKHRoaXMsIGNvbnRleHQpOyB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBMaXRlcmFsUHJpbWl0aXZlIGV4dGVuZHMgQVNUIHtcclxuICAgIGNvbnN0cnVjdG9yKHNwYW46IFBhcnNlU3BhbiwgcHVibGljIHZhbHVlOiBhbnkpIHsgc3VwZXIoc3Bhbik7IH1cclxuICAgIHZpc2l0KHZpc2l0b3I6IEFzdFZpc2l0b3IsIGNvbnRleHQ6IGFueSA9IG51bGwpOiBhbnkge1xyXG4gICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0TGl0ZXJhbFByaW1pdGl2ZSh0aGlzLCBjb250ZXh0KTtcclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIExpdGVyYWxBcnJheSBleHRlbmRzIEFTVCB7XHJcbiAgICBjb25zdHJ1Y3RvcihzcGFuOiBQYXJzZVNwYW4sIHB1YmxpYyBleHByZXNzaW9uczogYW55W10pIHsgc3VwZXIoc3Bhbik7IH1cclxuICAgIHZpc2l0KHZpc2l0b3I6IEFzdFZpc2l0b3IsIGNvbnRleHQ6IGFueSA9IG51bGwpOiBhbnkge1xyXG4gICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0TGl0ZXJhbEFycmF5KHRoaXMsIGNvbnRleHQpO1xyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgTGl0ZXJhbE1hcCBleHRlbmRzIEFTVCB7XHJcbiAgICBjb25zdHJ1Y3RvcihzcGFuOiBQYXJzZVNwYW4sIHB1YmxpYyBrZXlzOiBhbnlbXSwgcHVibGljIHZhbHVlczogYW55W10pIHsgc3VwZXIoc3Bhbik7IH1cclxuICAgIHZpc2l0KHZpc2l0b3I6IEFzdFZpc2l0b3IsIGNvbnRleHQ6IGFueSA9IG51bGwpOiBhbnkge1xyXG4gICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0TGl0ZXJhbE1hcCh0aGlzLCBjb250ZXh0KTtcclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIEludGVycG9sYXRpb24gZXh0ZW5kcyBBU1Qge1xyXG4gICAgY29uc3RydWN0b3Ioc3BhbjogUGFyc2VTcGFuLCBwdWJsaWMgc3RyaW5nczogYW55W10sIHB1YmxpYyBleHByZXNzaW9uczogYW55W10pIHsgc3VwZXIoc3Bhbik7IH1cclxuICAgIHZpc2l0KHZpc2l0b3I6IEFzdFZpc2l0b3IsIGNvbnRleHQ6IGFueSA9IG51bGwpOiBhbnkge1xyXG4gICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0SW50ZXJwb2xhdGlvbih0aGlzLCBjb250ZXh0KTtcclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIEJpbmFyeSBleHRlbmRzIEFTVCB7XHJcbiAgICBjb25zdHJ1Y3RvcihzcGFuOiBQYXJzZVNwYW4sIHB1YmxpYyBvcGVyYXRpb246IHN0cmluZywgcHVibGljIGxlZnQ6IEFTVCwgcHVibGljIHJpZ2h0OiBBU1QpIHtcclxuICAgICAgICBzdXBlcihzcGFuKTtcclxuICAgIH1cclxuICAgIHZpc2l0KHZpc2l0b3I6IEFzdFZpc2l0b3IsIGNvbnRleHQ6IGFueSA9IG51bGwpOiBhbnkge1xyXG4gICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0QmluYXJ5KHRoaXMsIGNvbnRleHQpO1xyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgUHJlZml4Tm90IGV4dGVuZHMgQVNUIHtcclxuICAgIGNvbnN0cnVjdG9yKHNwYW46IFBhcnNlU3BhbiwgcHVibGljIGV4cHJlc3Npb246IEFTVCkgeyBzdXBlcihzcGFuKTsgfVxyXG4gICAgdmlzaXQodmlzaXRvcjogQXN0VmlzaXRvciwgY29udGV4dDogYW55ID0gbnVsbCk6IGFueSB7XHJcbiAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRQcmVmaXhOb3QodGhpcywgY29udGV4dCk7XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBNZXRob2RDYWxsIGV4dGVuZHMgQVNUIHtcclxuICAgIGNvbnN0cnVjdG9yKHNwYW46IFBhcnNlU3BhbiwgcHVibGljIHJlY2VpdmVyOiBBU1QsIHB1YmxpYyBuYW1lOiBzdHJpbmcsIHB1YmxpYyBhcmdzOiBhbnlbXSkge1xyXG4gICAgICAgIHN1cGVyKHNwYW4pO1xyXG4gICAgfVxyXG4gICAgdmlzaXQodmlzaXRvcjogQXN0VmlzaXRvciwgY29udGV4dDogYW55ID0gbnVsbCk6IGFueSB7XHJcbiAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRNZXRob2RDYWxsKHRoaXMsIGNvbnRleHQpO1xyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgU2FmZU1ldGhvZENhbGwgZXh0ZW5kcyBBU1Qge1xyXG4gICAgY29uc3RydWN0b3Ioc3BhbjogUGFyc2VTcGFuLCBwdWJsaWMgcmVjZWl2ZXI6IEFTVCwgcHVibGljIG5hbWU6IHN0cmluZywgcHVibGljIGFyZ3M6IGFueVtdKSB7XHJcbiAgICAgICAgc3VwZXIoc3Bhbik7XHJcbiAgICB9XHJcbiAgICB2aXNpdCh2aXNpdG9yOiBBc3RWaXNpdG9yLCBjb250ZXh0OiBhbnkgPSBudWxsKTogYW55IHtcclxuICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdFNhZmVNZXRob2RDYWxsKHRoaXMsIGNvbnRleHQpO1xyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgRnVuY3Rpb25DYWxsIGV4dGVuZHMgQVNUIHtcclxuICAgIGNvbnN0cnVjdG9yKHNwYW46IFBhcnNlU3BhbiwgcHVibGljIHRhcmdldDogQVNULCBwdWJsaWMgYXJnczogYW55W10pIHsgc3VwZXIoc3Bhbik7IH1cclxuICAgIHZpc2l0KHZpc2l0b3I6IEFzdFZpc2l0b3IsIGNvbnRleHQ6IGFueSA9IG51bGwpOiBhbnkge1xyXG4gICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0RnVuY3Rpb25DYWxsKHRoaXMsIGNvbnRleHQpO1xyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgQVNUV2l0aFNvdXJjZSBleHRlbmRzIEFTVCB7XHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBwdWJsaWMgYXN0OiBBU1QsIHB1YmxpYyBzb3VyY2U6IHN0cmluZywgcHVibGljIGxvY2F0aW9uOiBzdHJpbmcsXHJcbiAgICAgICAgcHVibGljIGVycm9yczogUGFyc2VyRXJyb3JbXSkge1xyXG4gICAgICAgIHN1cGVyKG5ldyBQYXJzZVNwYW4oMCwgaXNCbGFuayhzb3VyY2UpID8gMCA6IHNvdXJjZS5sZW5ndGgpKTtcclxuICAgIH1cclxuICAgIHZpc2l0KHZpc2l0b3I6IEFzdFZpc2l0b3IsIGNvbnRleHQ6IGFueSA9IG51bGwpOiBhbnkgeyByZXR1cm4gdGhpcy5hc3QudmlzaXQodmlzaXRvciwgY29udGV4dCk7IH1cclxuICAgIHRvU3RyaW5nKCk6IHN0cmluZyB7IHJldHVybiBgJHt0aGlzLnNvdXJjZX0gaW4gJHt0aGlzLmxvY2F0aW9ufWA7IH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIFRlbXBsYXRlQmluZGluZyB7XHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBwdWJsaWMgc3BhbjogUGFyc2VTcGFuLCBwdWJsaWMga2V5OiBzdHJpbmcsIHB1YmxpYyBrZXlJc1ZhcjogYm9vbGVhbiwgcHVibGljIG5hbWU6IHN0cmluZyxcclxuICAgICAgICBwdWJsaWMgZXhwcmVzc2lvbjogQVNUV2l0aFNvdXJjZSkge31cclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBBc3RWaXNpdG9yIHtcclxuICAgIHZpc2l0QmluYXJ5KGFzdDogQmluYXJ5LCBjb250ZXh0OiBhbnkpOiBhbnk7XHJcbiAgICB2aXNpdENoYWluKGFzdDogQ2hhaW4sIGNvbnRleHQ6IGFueSk6IGFueTtcclxuICAgIHZpc2l0Q29uZGl0aW9uYWwoYXN0OiBDb25kaXRpb25hbCwgY29udGV4dDogYW55KTogYW55O1xyXG4gICAgdmlzaXRGdW5jdGlvbkNhbGwoYXN0OiBGdW5jdGlvbkNhbGwsIGNvbnRleHQ6IGFueSk6IGFueTtcclxuICAgIHZpc2l0SW1wbGljaXRSZWNlaXZlcihhc3Q6IEltcGxpY2l0UmVjZWl2ZXIsIGNvbnRleHQ6IGFueSk6IGFueTtcclxuICAgIHZpc2l0SW50ZXJwb2xhdGlvbihhc3Q6IEludGVycG9sYXRpb24sIGNvbnRleHQ6IGFueSk6IGFueTtcclxuICAgIHZpc2l0S2V5ZWRSZWFkKGFzdDogS2V5ZWRSZWFkLCBjb250ZXh0OiBhbnkpOiBhbnk7XHJcbiAgICB2aXNpdEtleWVkV3JpdGUoYXN0OiBLZXllZFdyaXRlLCBjb250ZXh0OiBhbnkpOiBhbnk7XHJcbiAgICB2aXNpdExpdGVyYWxBcnJheShhc3Q6IExpdGVyYWxBcnJheSwgY29udGV4dDogYW55KTogYW55O1xyXG4gICAgdmlzaXRMaXRlcmFsTWFwKGFzdDogTGl0ZXJhbE1hcCwgY29udGV4dDogYW55KTogYW55O1xyXG4gICAgdmlzaXRMaXRlcmFsUHJpbWl0aXZlKGFzdDogTGl0ZXJhbFByaW1pdGl2ZSwgY29udGV4dDogYW55KTogYW55O1xyXG4gICAgdmlzaXRNZXRob2RDYWxsKGFzdDogTWV0aG9kQ2FsbCwgY29udGV4dDogYW55KTogYW55O1xyXG4gICAgdmlzaXRQaXBlKGFzdDogQmluZGluZ1BpcGUsIGNvbnRleHQ6IGFueSk6IGFueTtcclxuICAgIHZpc2l0UHJlZml4Tm90KGFzdDogUHJlZml4Tm90LCBjb250ZXh0OiBhbnkpOiBhbnk7XHJcbiAgICB2aXNpdFByb3BlcnR5UmVhZChhc3Q6IFByb3BlcnR5UmVhZCwgY29udGV4dDogYW55KTogYW55O1xyXG4gICAgdmlzaXRQcm9wZXJ0eVdyaXRlKGFzdDogUHJvcGVydHlXcml0ZSwgY29udGV4dDogYW55KTogYW55O1xyXG4gICAgdmlzaXRRdW90ZShhc3Q6IFF1b3RlLCBjb250ZXh0OiBhbnkpOiBhbnk7XHJcbiAgICB2aXNpdFNhZmVNZXRob2RDYWxsKGFzdDogU2FmZU1ldGhvZENhbGwsIGNvbnRleHQ6IGFueSk6IGFueTtcclxuICAgIHZpc2l0U2FmZVByb3BlcnR5UmVhZChhc3Q6IFNhZmVQcm9wZXJ0eVJlYWQsIGNvbnRleHQ6IGFueSk6IGFueTtcclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIFJlY3Vyc2l2ZUFzdFZpc2l0b3IgaW1wbGVtZW50cyBBc3RWaXNpdG9yIHtcclxuICAgIHZpc2l0QmluYXJ5KGFzdDogQmluYXJ5LCBjb250ZXh0OiBhbnkpOiBhbnkge1xyXG4gICAgICAgIGFzdC5sZWZ0LnZpc2l0KHRoaXMpO1xyXG4gICAgICAgIGFzdC5yaWdodC52aXNpdCh0aGlzKTtcclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuICAgIHZpc2l0Q2hhaW4oYXN0OiBDaGFpbiwgY29udGV4dDogYW55KTogYW55IHsgcmV0dXJuIHRoaXMudmlzaXRBbGwoYXN0LmV4cHJlc3Npb25zLCBjb250ZXh0KTsgfVxyXG4gICAgdmlzaXRDb25kaXRpb25hbChhc3Q6IENvbmRpdGlvbmFsLCBjb250ZXh0OiBhbnkpOiBhbnkge1xyXG4gICAgICAgIGFzdC5jb25kaXRpb24udmlzaXQodGhpcyk7XHJcbiAgICAgICAgYXN0LnRydWVFeHAudmlzaXQodGhpcyk7XHJcbiAgICAgICAgYXN0LmZhbHNlRXhwLnZpc2l0KHRoaXMpO1xyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gICAgdmlzaXRQaXBlKGFzdDogQmluZGluZ1BpcGUsIGNvbnRleHQ6IGFueSk6IGFueSB7XHJcbiAgICAgICAgYXN0LmV4cC52aXNpdCh0aGlzKTtcclxuICAgICAgICB0aGlzLnZpc2l0QWxsKGFzdC5hcmdzLCBjb250ZXh0KTtcclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuICAgIHZpc2l0RnVuY3Rpb25DYWxsKGFzdDogRnVuY3Rpb25DYWxsLCBjb250ZXh0OiBhbnkpOiBhbnkge1xyXG4gICAgICAgIGFzdC50YXJnZXQudmlzaXQodGhpcyk7XHJcbiAgICAgICAgdGhpcy52aXNpdEFsbChhc3QuYXJncywgY29udGV4dCk7XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgICB2aXNpdEltcGxpY2l0UmVjZWl2ZXIoYXN0OiBJbXBsaWNpdFJlY2VpdmVyLCBjb250ZXh0OiBhbnkpOiBhbnkgeyByZXR1cm4gbnVsbDsgfVxyXG4gICAgdmlzaXRJbnRlcnBvbGF0aW9uKGFzdDogSW50ZXJwb2xhdGlvbiwgY29udGV4dDogYW55KTogYW55IHtcclxuICAgICAgICByZXR1cm4gdGhpcy52aXNpdEFsbChhc3QuZXhwcmVzc2lvbnMsIGNvbnRleHQpO1xyXG4gICAgfVxyXG4gICAgdmlzaXRLZXllZFJlYWQoYXN0OiBLZXllZFJlYWQsIGNvbnRleHQ6IGFueSk6IGFueSB7XHJcbiAgICAgICAgYXN0Lm9iai52aXNpdCh0aGlzKTtcclxuICAgICAgICBhc3Qua2V5LnZpc2l0KHRoaXMpO1xyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gICAgdmlzaXRLZXllZFdyaXRlKGFzdDogS2V5ZWRXcml0ZSwgY29udGV4dDogYW55KTogYW55IHtcclxuICAgICAgICBhc3Qub2JqLnZpc2l0KHRoaXMpO1xyXG4gICAgICAgIGFzdC5rZXkudmlzaXQodGhpcyk7XHJcbiAgICAgICAgYXN0LnZhbHVlLnZpc2l0KHRoaXMpO1xyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gICAgdmlzaXRMaXRlcmFsQXJyYXkoYXN0OiBMaXRlcmFsQXJyYXksIGNvbnRleHQ6IGFueSk6IGFueSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMudmlzaXRBbGwoYXN0LmV4cHJlc3Npb25zLCBjb250ZXh0KTtcclxuICAgIH1cclxuICAgIHZpc2l0TGl0ZXJhbE1hcChhc3Q6IExpdGVyYWxNYXAsIGNvbnRleHQ6IGFueSk6IGFueSB7IHJldHVybiB0aGlzLnZpc2l0QWxsKGFzdC52YWx1ZXMsIGNvbnRleHQpOyB9XHJcbiAgICB2aXNpdExpdGVyYWxQcmltaXRpdmUoYXN0OiBMaXRlcmFsUHJpbWl0aXZlLCBjb250ZXh0OiBhbnkpOiBhbnkgeyByZXR1cm4gbnVsbDsgfVxyXG4gICAgdmlzaXRNZXRob2RDYWxsKGFzdDogTWV0aG9kQ2FsbCwgY29udGV4dDogYW55KTogYW55IHtcclxuICAgICAgICBhc3QucmVjZWl2ZXIudmlzaXQodGhpcyk7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMudmlzaXRBbGwoYXN0LmFyZ3MsIGNvbnRleHQpO1xyXG4gICAgfVxyXG4gICAgdmlzaXRQcmVmaXhOb3QoYXN0OiBQcmVmaXhOb3QsIGNvbnRleHQ6IGFueSk6IGFueSB7XHJcbiAgICAgICAgYXN0LmV4cHJlc3Npb24udmlzaXQodGhpcyk7XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgICB2aXNpdFByb3BlcnR5UmVhZChhc3Q6IFByb3BlcnR5UmVhZCwgY29udGV4dDogYW55KTogYW55IHtcclxuICAgICAgICBhc3QucmVjZWl2ZXIudmlzaXQodGhpcyk7XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgICB2aXNpdFByb3BlcnR5V3JpdGUoYXN0OiBQcm9wZXJ0eVdyaXRlLCBjb250ZXh0OiBhbnkpOiBhbnkge1xyXG4gICAgICAgIGFzdC5yZWNlaXZlci52aXNpdCh0aGlzKTtcclxuICAgICAgICBhc3QudmFsdWUudmlzaXQodGhpcyk7XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgICB2aXNpdFNhZmVQcm9wZXJ0eVJlYWQoYXN0OiBTYWZlUHJvcGVydHlSZWFkLCBjb250ZXh0OiBhbnkpOiBhbnkge1xyXG4gICAgICAgIGFzdC5yZWNlaXZlci52aXNpdCh0aGlzKTtcclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuICAgIHZpc2l0U2FmZU1ldGhvZENhbGwoYXN0OiBTYWZlTWV0aG9kQ2FsbCwgY29udGV4dDogYW55KTogYW55IHtcclxuICAgICAgICBhc3QucmVjZWl2ZXIudmlzaXQodGhpcyk7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMudmlzaXRBbGwoYXN0LmFyZ3MsIGNvbnRleHQpO1xyXG4gICAgfVxyXG4gICAgdmlzaXRBbGwoYXN0czogQVNUW10sIGNvbnRleHQ6IGFueSk6IGFueSB7XHJcbiAgICAgICAgYXN0cy5mb3JFYWNoKGFzdCA9PiBhc3QudmlzaXQodGhpcywgY29udGV4dCkpO1xyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gICAgdmlzaXRRdW90ZShhc3Q6IFF1b3RlLCBjb250ZXh0OiBhbnkpOiBhbnkgeyByZXR1cm4gbnVsbDsgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgQXN0VHJhbnNmb3JtZXIgaW1wbGVtZW50cyBBc3RWaXNpdG9yIHtcclxuICAgIHZpc2l0SW1wbGljaXRSZWNlaXZlcihhc3Q6IEltcGxpY2l0UmVjZWl2ZXIsIGNvbnRleHQ6IGFueSk6IEFTVCB7IHJldHVybiBhc3Q7IH1cclxuXHJcbiAgICB2aXNpdEludGVycG9sYXRpb24oYXN0OiBJbnRlcnBvbGF0aW9uLCBjb250ZXh0OiBhbnkpOiBBU1Qge1xyXG4gICAgICAgIHJldHVybiBuZXcgSW50ZXJwb2xhdGlvbihhc3Quc3BhbiwgYXN0LnN0cmluZ3MsIHRoaXMudmlzaXRBbGwoYXN0LmV4cHJlc3Npb25zKSk7XHJcbiAgICB9XHJcblxyXG4gICAgdmlzaXRMaXRlcmFsUHJpbWl0aXZlKGFzdDogTGl0ZXJhbFByaW1pdGl2ZSwgY29udGV4dDogYW55KTogQVNUIHtcclxuICAgICAgICByZXR1cm4gbmV3IExpdGVyYWxQcmltaXRpdmUoYXN0LnNwYW4sIGFzdC52YWx1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgdmlzaXRQcm9wZXJ0eVJlYWQoYXN0OiBQcm9wZXJ0eVJlYWQsIGNvbnRleHQ6IGFueSk6IEFTVCB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9wZXJ0eVJlYWQoYXN0LnNwYW4sIGFzdC5yZWNlaXZlci52aXNpdCh0aGlzKSwgYXN0Lm5hbWUpO1xyXG4gICAgfVxyXG5cclxuICAgIHZpc2l0UHJvcGVydHlXcml0ZShhc3Q6IFByb3BlcnR5V3JpdGUsIGNvbnRleHQ6IGFueSk6IEFTVCB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9wZXJ0eVdyaXRlKGFzdC5zcGFuLCBhc3QucmVjZWl2ZXIudmlzaXQodGhpcyksIGFzdC5uYW1lLCBhc3QudmFsdWUpO1xyXG4gICAgfVxyXG5cclxuICAgIHZpc2l0U2FmZVByb3BlcnR5UmVhZChhc3Q6IFNhZmVQcm9wZXJ0eVJlYWQsIGNvbnRleHQ6IGFueSk6IEFTVCB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBTYWZlUHJvcGVydHlSZWFkKGFzdC5zcGFuLCBhc3QucmVjZWl2ZXIudmlzaXQodGhpcyksIGFzdC5uYW1lKTtcclxuICAgIH1cclxuXHJcbiAgICB2aXNpdE1ldGhvZENhbGwoYXN0OiBNZXRob2RDYWxsLCBjb250ZXh0OiBhbnkpOiBBU1Qge1xyXG4gICAgICAgIHJldHVybiBuZXcgTWV0aG9kQ2FsbChhc3Quc3BhbiwgYXN0LnJlY2VpdmVyLnZpc2l0KHRoaXMpLCBhc3QubmFtZSwgdGhpcy52aXNpdEFsbChhc3QuYXJncykpO1xyXG4gICAgfVxyXG5cclxuICAgIHZpc2l0U2FmZU1ldGhvZENhbGwoYXN0OiBTYWZlTWV0aG9kQ2FsbCwgY29udGV4dDogYW55KTogQVNUIHtcclxuICAgICAgICByZXR1cm4gbmV3IFNhZmVNZXRob2RDYWxsKFxyXG4gICAgICAgICAgICBhc3Quc3BhbiwgYXN0LnJlY2VpdmVyLnZpc2l0KHRoaXMpLCBhc3QubmFtZSwgdGhpcy52aXNpdEFsbChhc3QuYXJncykpO1xyXG4gICAgfVxyXG5cclxuICAgIHZpc2l0RnVuY3Rpb25DYWxsKGFzdDogRnVuY3Rpb25DYWxsLCBjb250ZXh0OiBhbnkpOiBBU1Qge1xyXG4gICAgICAgIHJldHVybiBuZXcgRnVuY3Rpb25DYWxsKGFzdC5zcGFuLCBhc3QudGFyZ2V0LnZpc2l0KHRoaXMpLCB0aGlzLnZpc2l0QWxsKGFzdC5hcmdzKSk7XHJcbiAgICB9XHJcblxyXG4gICAgdmlzaXRMaXRlcmFsQXJyYXkoYXN0OiBMaXRlcmFsQXJyYXksIGNvbnRleHQ6IGFueSk6IEFTVCB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBMaXRlcmFsQXJyYXkoYXN0LnNwYW4sIHRoaXMudmlzaXRBbGwoYXN0LmV4cHJlc3Npb25zKSk7XHJcbiAgICB9XHJcblxyXG4gICAgdmlzaXRMaXRlcmFsTWFwKGFzdDogTGl0ZXJhbE1hcCwgY29udGV4dDogYW55KTogQVNUIHtcclxuICAgICAgICByZXR1cm4gbmV3IExpdGVyYWxNYXAoYXN0LnNwYW4sIGFzdC5rZXlzLCB0aGlzLnZpc2l0QWxsKGFzdC52YWx1ZXMpKTtcclxuICAgIH1cclxuXHJcbiAgICB2aXNpdEJpbmFyeShhc3Q6IEJpbmFyeSwgY29udGV4dDogYW55KTogQVNUIHtcclxuICAgICAgICByZXR1cm4gbmV3IEJpbmFyeShhc3Quc3BhbiwgYXN0Lm9wZXJhdGlvbiwgYXN0LmxlZnQudmlzaXQodGhpcyksIGFzdC5yaWdodC52aXNpdCh0aGlzKSk7XHJcbiAgICB9XHJcblxyXG4gICAgdmlzaXRQcmVmaXhOb3QoYXN0OiBQcmVmaXhOb3QsIGNvbnRleHQ6IGFueSk6IEFTVCB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBQcmVmaXhOb3QoYXN0LnNwYW4sIGFzdC5leHByZXNzaW9uLnZpc2l0KHRoaXMpKTtcclxuICAgIH1cclxuXHJcbiAgICB2aXNpdENvbmRpdGlvbmFsKGFzdDogQ29uZGl0aW9uYWwsIGNvbnRleHQ6IGFueSk6IEFTVCB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBDb25kaXRpb25hbChcclxuICAgICAgICAgICAgYXN0LnNwYW4sIGFzdC5jb25kaXRpb24udmlzaXQodGhpcyksIGFzdC50cnVlRXhwLnZpc2l0KHRoaXMpLCBhc3QuZmFsc2VFeHAudmlzaXQodGhpcykpO1xyXG4gICAgfVxyXG5cclxuICAgIHZpc2l0UGlwZShhc3Q6IEJpbmRpbmdQaXBlLCBjb250ZXh0OiBhbnkpOiBBU1Qge1xyXG4gICAgICAgIHJldHVybiBuZXcgQmluZGluZ1BpcGUoYXN0LnNwYW4sIGFzdC5leHAudmlzaXQodGhpcyksIGFzdC5uYW1lLCB0aGlzLnZpc2l0QWxsKGFzdC5hcmdzKSk7XHJcbiAgICB9XHJcblxyXG4gICAgdmlzaXRLZXllZFJlYWQoYXN0OiBLZXllZFJlYWQsIGNvbnRleHQ6IGFueSk6IEFTVCB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBLZXllZFJlYWQoYXN0LnNwYW4sIGFzdC5vYmoudmlzaXQodGhpcyksIGFzdC5rZXkudmlzaXQodGhpcykpO1xyXG4gICAgfVxyXG5cclxuICAgIHZpc2l0S2V5ZWRXcml0ZShhc3Q6IEtleWVkV3JpdGUsIGNvbnRleHQ6IGFueSk6IEFTVCB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBLZXllZFdyaXRlKFxyXG4gICAgICAgICAgICBhc3Quc3BhbiwgYXN0Lm9iai52aXNpdCh0aGlzKSwgYXN0LmtleS52aXNpdCh0aGlzKSwgYXN0LnZhbHVlLnZpc2l0KHRoaXMpKTtcclxuICAgIH1cclxuXHJcbiAgICB2aXNpdEFsbChhc3RzOiBhbnlbXSk6IGFueVtdIHtcclxuICAgICAgICBjb25zdCByZXMgPSBuZXcgQXJyYXkoYXN0cy5sZW5ndGgpO1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYXN0cy5sZW5ndGg7ICsraSkge1xyXG4gICAgICAgICAgICByZXNbaV0gPSBhc3RzW2ldLnZpc2l0KHRoaXMpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gcmVzO1xyXG4gICAgfVxyXG5cclxuICAgIHZpc2l0Q2hhaW4oYXN0OiBDaGFpbiwgY29udGV4dDogYW55KTogQVNUIHtcclxuICAgICAgICByZXR1cm4gbmV3IENoYWluKGFzdC5zcGFuLCB0aGlzLnZpc2l0QWxsKGFzdC5leHByZXNzaW9ucykpO1xyXG4gICAgfVxyXG5cclxuICAgIHZpc2l0UXVvdGUoYXN0OiBRdW90ZSwgY29udGV4dDogYW55KTogQVNUIHtcclxuICAgICAgICByZXR1cm4gbmV3IFF1b3RlKGFzdC5zcGFuLCBhc3QucHJlZml4LCBhc3QudW5pbnRlcnByZXRlZEV4cHJlc3Npb24sIGFzdC5sb2NhdGlvbik7XHJcbiAgICB9XHJcbn0iXX0=
|
|
@@ -1,78 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @license
|
|
3
|
-
* Copyright Google Inc. All Rights Reserved.
|
|
4
|
-
*
|
|
5
|
-
* Use of this source code is governed by an MIT-style license that can be
|
|
6
|
-
* found in the LICENSE file at https://angular.io/license
|
|
7
|
-
*/
|
|
8
|
-
export const $EOF = 0;
|
|
9
|
-
export const $TAB = 9;
|
|
10
|
-
export const $LF = 10;
|
|
11
|
-
export const $VTAB = 11;
|
|
12
|
-
export const $FF = 12;
|
|
13
|
-
export const $CR = 13;
|
|
14
|
-
export const $SPACE = 32;
|
|
15
|
-
export const $BANG = 33;
|
|
16
|
-
export const $DQ = 34;
|
|
17
|
-
export const $HASH = 35;
|
|
18
|
-
export const $$ = 36;
|
|
19
|
-
export const $PERCENT = 37;
|
|
20
|
-
export const $AMPERSAND = 38;
|
|
21
|
-
export const $SQ = 39;
|
|
22
|
-
export const $LPAREN = 40;
|
|
23
|
-
export const $RPAREN = 41;
|
|
24
|
-
export const $STAR = 42;
|
|
25
|
-
export const $PLUS = 43;
|
|
26
|
-
export const $COMMA = 44;
|
|
27
|
-
export const $MINUS = 45;
|
|
28
|
-
export const $PERIOD = 46;
|
|
29
|
-
export const $SLASH = 47;
|
|
30
|
-
export const $COLON = 58;
|
|
31
|
-
export const $SEMICOLON = 59;
|
|
32
|
-
export const $LT = 60;
|
|
33
|
-
export const $EQ = 61;
|
|
34
|
-
export const $GT = 62;
|
|
35
|
-
export const $QUESTION = 63;
|
|
36
|
-
export const $0 = 48;
|
|
37
|
-
export const $9 = 57;
|
|
38
|
-
export const $A = 65;
|
|
39
|
-
export const $E = 69;
|
|
40
|
-
export const $F = 70;
|
|
41
|
-
export const $X = 88;
|
|
42
|
-
export const $Z = 90;
|
|
43
|
-
export const $LBRACKET = 91;
|
|
44
|
-
export const $BACKSLASH = 92;
|
|
45
|
-
export const $RBRACKET = 93;
|
|
46
|
-
export const $CARET = 94;
|
|
47
|
-
export const $_ = 95;
|
|
48
|
-
export const $a = 97;
|
|
49
|
-
export const $e = 101;
|
|
50
|
-
export const $f = 102;
|
|
51
|
-
export const $n = 110;
|
|
52
|
-
export const $r = 114;
|
|
53
|
-
export const $t = 116;
|
|
54
|
-
export const $u = 117;
|
|
55
|
-
export const $v = 118;
|
|
56
|
-
export const $x = 120;
|
|
57
|
-
export const $z = 122;
|
|
58
|
-
export const $LBRACE = 123;
|
|
59
|
-
export const $BAR = 124;
|
|
60
|
-
export const $RBRACE = 125;
|
|
61
|
-
export const $NBSP = 160;
|
|
62
|
-
export const $PIPE = 124;
|
|
63
|
-
export const $TILDA = 126;
|
|
64
|
-
export const $AT = 64;
|
|
65
|
-
export const $BT = 96;
|
|
66
|
-
export function isWhitespace(code) {
|
|
67
|
-
return (code >= $TAB && code <= $SPACE) || (code == $NBSP);
|
|
68
|
-
}
|
|
69
|
-
export function isDigit(code) {
|
|
70
|
-
return $0 <= code && code <= $9;
|
|
71
|
-
}
|
|
72
|
-
export function isAsciiLetter(code) {
|
|
73
|
-
return code >= $a && code <= $z || code >= $A && code <= $Z;
|
|
74
|
-
}
|
|
75
|
-
export function isAsciiHexDigit(code) {
|
|
76
|
-
return code >= $a && code <= $f || code >= $A && code <= $F || isDigit(code);
|
|
77
|
-
}
|
|
78
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyMnBhcnNlL3NyYy9saWIvYW5ndWxhci9jb21waWxlci9jaGFycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFFSCxNQUFNLENBQUMsTUFBTSxJQUFJLEdBQUcsQ0FBQyxDQUFDO0FBQ3RCLE1BQU0sQ0FBQyxNQUFNLElBQUksR0FBRyxDQUFDLENBQUM7QUFDdEIsTUFBTSxDQUFDLE1BQU0sR0FBRyxHQUFHLEVBQUUsQ0FBQztBQUN0QixNQUFNLENBQUMsTUFBTSxLQUFLLEdBQUcsRUFBRSxDQUFDO0FBQ3hCLE1BQU0sQ0FBQyxNQUFNLEdBQUcsR0FBRyxFQUFFLENBQUM7QUFDdEIsTUFBTSxDQUFDLE1BQU0sR0FBRyxHQUFHLEVBQUUsQ0FBQztBQUN0QixNQUFNLENBQUMsTUFBTSxNQUFNLEdBQUcsRUFBRSxDQUFDO0FBQ3pCLE1BQU0sQ0FBQyxNQUFNLEtBQUssR0FBRyxFQUFFLENBQUM7QUFDeEIsTUFBTSxDQUFDLE1BQU0sR0FBRyxHQUFHLEVBQUUsQ0FBQztBQUN0QixNQUFNLENBQUMsTUFBTSxLQUFLLEdBQUcsRUFBRSxDQUFDO0FBQ3hCLE1BQU0sQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUM7QUFDckIsTUFBTSxDQUFDLE1BQU0sUUFBUSxHQUFHLEVBQUUsQ0FBQztBQUMzQixNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUcsRUFBRSxDQUFDO0FBQzdCLE1BQU0sQ0FBQyxNQUFNLEdBQUcsR0FBRyxFQUFFLENBQUM7QUFDdEIsTUFBTSxDQUFDLE1BQU0sT0FBTyxHQUFHLEVBQUUsQ0FBQztBQUMxQixNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUcsRUFBRSxDQUFDO0FBQzFCLE1BQU0sQ0FBQyxNQUFNLEtBQUssR0FBRyxFQUFFLENBQUM7QUFDeEIsTUFBTSxDQUFDLE1BQU0sS0FBSyxHQUFHLEVBQUUsQ0FBQztBQUN4QixNQUFNLENBQUMsTUFBTSxNQUFNLEdBQUcsRUFBRSxDQUFDO0FBQ3pCLE1BQU0sQ0FBQyxNQUFNLE1BQU0sR0FBRyxFQUFFLENBQUM7QUFDekIsTUFBTSxDQUFDLE1BQU0sT0FBTyxHQUFHLEVBQUUsQ0FBQztBQUMxQixNQUFNLENBQUMsTUFBTSxNQUFNLEdBQUcsRUFBRSxDQUFDO0FBQ3pCLE1BQU0sQ0FBQyxNQUFNLE1BQU0sR0FBRyxFQUFFLENBQUM7QUFDekIsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHLEVBQUUsQ0FBQztBQUM3QixNQUFNLENBQUMsTUFBTSxHQUFHLEdBQUcsRUFBRSxDQUFDO0FBQ3RCLE1BQU0sQ0FBQyxNQUFNLEdBQUcsR0FBRyxFQUFFLENBQUM7QUFDdEIsTUFBTSxDQUFDLE1BQU0sR0FBRyxHQUFHLEVBQUUsQ0FBQztBQUN0QixNQUFNLENBQUMsTUFBTSxTQUFTLEdBQUcsRUFBRSxDQUFDO0FBRTVCLE1BQU0sQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUM7QUFDckIsTUFBTSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQztBQUVyQixNQUFNLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDO0FBQ3JCLE1BQU0sQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUM7QUFDckIsTUFBTSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQztBQUNyQixNQUFNLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDO0FBQ3JCLE1BQU0sQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUM7QUFFckIsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFHLEVBQUUsQ0FBQztBQUM1QixNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUcsRUFBRSxDQUFDO0FBQzdCLE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FBRyxFQUFFLENBQUM7QUFDNUIsTUFBTSxDQUFDLE1BQU0sTUFBTSxHQUFHLEVBQUUsQ0FBQztBQUN6QixNQUFNLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDO0FBRXJCLE1BQU0sQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUM7QUFDckIsTUFBTSxDQUFDLE1BQU0sRUFBRSxHQUFHLEdBQUcsQ0FBQztBQUN0QixNQUFNLENBQUMsTUFBTSxFQUFFLEdBQUcsR0FBRyxDQUFDO0FBQ3RCLE1BQU0sQ0FBQyxNQUFNLEVBQUUsR0FBRyxHQUFHLENBQUM7QUFDdEIsTUFBTSxDQUFDLE1BQU0sRUFBRSxHQUFHLEdBQUcsQ0FBQztBQUN0QixNQUFNLENBQUMsTUFBTSxFQUFFLEdBQUcsR0FBRyxDQUFDO0FBQ3RCLE1BQU0sQ0FBQyxNQUFNLEVBQUUsR0FBRyxHQUFHLENBQUM7QUFDdEIsTUFBTSxDQUFDLE1BQU0sRUFBRSxHQUFHLEdBQUcsQ0FBQztBQUN0QixNQUFNLENBQUMsTUFBTSxFQUFFLEdBQUcsR0FBRyxDQUFDO0FBQ3RCLE1BQU0sQ0FBQyxNQUFNLEVBQUUsR0FBRyxHQUFHLENBQUM7QUFFdEIsTUFBTSxDQUFDLE1BQU0sT0FBTyxHQUFHLEdBQUcsQ0FBQztBQUMzQixNQUFNLENBQUMsTUFBTSxJQUFJLEdBQUcsR0FBRyxDQUFDO0FBQ3hCLE1BQU0sQ0FBQyxNQUFNLE9BQU8sR0FBRyxHQUFHLENBQUM7QUFDM0IsTUFBTSxDQUFDLE1BQU0sS0FBSyxHQUFHLEdBQUcsQ0FBQztBQUV6QixNQUFNLENBQUMsTUFBTSxLQUFLLEdBQUcsR0FBRyxDQUFDO0FBQ3pCLE1BQU0sQ0FBQyxNQUFNLE1BQU0sR0FBRyxHQUFHLENBQUM7QUFDMUIsTUFBTSxDQUFDLE1BQU0sR0FBRyxHQUFHLEVBQUUsQ0FBQztBQUV0QixNQUFNLENBQUMsTUFBTSxHQUFHLEdBQUcsRUFBRSxDQUFDO0FBRXRCLE1BQU0sVUFBVSxZQUFZLENBQUMsSUFBWTtJQUNyQyxPQUFPLENBQUMsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksS0FBSyxDQUFDLENBQUM7QUFDL0QsQ0FBQztBQUVELE1BQU0sVUFBVSxPQUFPLENBQUMsSUFBWTtJQUNoQyxPQUFPLEVBQUUsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEVBQUUsQ0FBQztBQUNwQyxDQUFDO0FBRUQsTUFBTSxVQUFVLGFBQWEsQ0FBQyxJQUFZO0lBQ3RDLE9BQU8sSUFBSSxJQUFJLEVBQUUsSUFBSSxJQUFJLElBQUksRUFBRSxJQUFJLElBQUksSUFBSSxFQUFFLElBQUksSUFBSSxJQUFJLEVBQUUsQ0FBQztBQUNoRSxDQUFDO0FBRUQsTUFBTSxVQUFVLGVBQWUsQ0FBQyxJQUFZO0lBQ3hDLE9BQU8sSUFBSSxJQUFJLEVBQUUsSUFBSSxJQUFJLElBQUksRUFBRSxJQUFJLElBQUksSUFBSSxFQUFFLElBQUksSUFBSSxJQUFJLEVBQUUsSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDakYsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxyXG4gKiBAbGljZW5zZVxyXG4gKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cclxuICpcclxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcclxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxyXG4gKi9cclxuXHJcbmV4cG9ydCBjb25zdCAkRU9GID0gMDtcclxuZXhwb3J0IGNvbnN0ICRUQUIgPSA5O1xyXG5leHBvcnQgY29uc3QgJExGID0gMTA7XHJcbmV4cG9ydCBjb25zdCAkVlRBQiA9IDExO1xyXG5leHBvcnQgY29uc3QgJEZGID0gMTI7XHJcbmV4cG9ydCBjb25zdCAkQ1IgPSAxMztcclxuZXhwb3J0IGNvbnN0ICRTUEFDRSA9IDMyO1xyXG5leHBvcnQgY29uc3QgJEJBTkcgPSAzMztcclxuZXhwb3J0IGNvbnN0ICREUSA9IDM0O1xyXG5leHBvcnQgY29uc3QgJEhBU0ggPSAzNTtcclxuZXhwb3J0IGNvbnN0ICQkID0gMzY7XHJcbmV4cG9ydCBjb25zdCAkUEVSQ0VOVCA9IDM3O1xyXG5leHBvcnQgY29uc3QgJEFNUEVSU0FORCA9IDM4O1xyXG5leHBvcnQgY29uc3QgJFNRID0gMzk7XHJcbmV4cG9ydCBjb25zdCAkTFBBUkVOID0gNDA7XHJcbmV4cG9ydCBjb25zdCAkUlBBUkVOID0gNDE7XHJcbmV4cG9ydCBjb25zdCAkU1RBUiA9IDQyO1xyXG5leHBvcnQgY29uc3QgJFBMVVMgPSA0MztcclxuZXhwb3J0IGNvbnN0ICRDT01NQSA9IDQ0O1xyXG5leHBvcnQgY29uc3QgJE1JTlVTID0gNDU7XHJcbmV4cG9ydCBjb25zdCAkUEVSSU9EID0gNDY7XHJcbmV4cG9ydCBjb25zdCAkU0xBU0ggPSA0NztcclxuZXhwb3J0IGNvbnN0ICRDT0xPTiA9IDU4O1xyXG5leHBvcnQgY29uc3QgJFNFTUlDT0xPTiA9IDU5O1xyXG5leHBvcnQgY29uc3QgJExUID0gNjA7XHJcbmV4cG9ydCBjb25zdCAkRVEgPSA2MTtcclxuZXhwb3J0IGNvbnN0ICRHVCA9IDYyO1xyXG5leHBvcnQgY29uc3QgJFFVRVNUSU9OID0gNjM7XHJcblxyXG5leHBvcnQgY29uc3QgJDAgPSA0ODtcclxuZXhwb3J0IGNvbnN0ICQ5ID0gNTc7XHJcblxyXG5leHBvcnQgY29uc3QgJEEgPSA2NTtcclxuZXhwb3J0IGNvbnN0ICRFID0gNjk7XHJcbmV4cG9ydCBjb25zdCAkRiA9IDcwO1xyXG5leHBvcnQgY29uc3QgJFggPSA4ODtcclxuZXhwb3J0IGNvbnN0ICRaID0gOTA7XHJcblxyXG5leHBvcnQgY29uc3QgJExCUkFDS0VUID0gOTE7XHJcbmV4cG9ydCBjb25zdCAkQkFDS1NMQVNIID0gOTI7XHJcbmV4cG9ydCBjb25zdCAkUkJSQUNLRVQgPSA5MztcclxuZXhwb3J0IGNvbnN0ICRDQVJFVCA9IDk0O1xyXG5leHBvcnQgY29uc3QgJF8gPSA5NTtcclxuXHJcbmV4cG9ydCBjb25zdCAkYSA9IDk3O1xyXG5leHBvcnQgY29uc3QgJGUgPSAxMDE7XHJcbmV4cG9ydCBjb25zdCAkZiA9IDEwMjtcclxuZXhwb3J0IGNvbnN0ICRuID0gMTEwO1xyXG5leHBvcnQgY29uc3QgJHIgPSAxMTQ7XHJcbmV4cG9ydCBjb25zdCAkdCA9IDExNjtcclxuZXhwb3J0IGNvbnN0ICR1ID0gMTE3O1xyXG5leHBvcnQgY29uc3QgJHYgPSAxMTg7XHJcbmV4cG9ydCBjb25zdCAkeCA9IDEyMDtcclxuZXhwb3J0IGNvbnN0ICR6ID0gMTIyO1xyXG5cclxuZXhwb3J0IGNvbnN0ICRMQlJBQ0UgPSAxMjM7XHJcbmV4cG9ydCBjb25zdCAkQkFSID0gMTI0O1xyXG5leHBvcnQgY29uc3QgJFJCUkFDRSA9IDEyNTtcclxuZXhwb3J0IGNvbnN0ICROQlNQID0gMTYwO1xyXG5cclxuZXhwb3J0IGNvbnN0ICRQSVBFID0gMTI0O1xyXG5leHBvcnQgY29uc3QgJFRJTERBID0gMTI2O1xyXG5leHBvcnQgY29uc3QgJEFUID0gNjQ7XHJcblxyXG5leHBvcnQgY29uc3QgJEJUID0gOTY7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gaXNXaGl0ZXNwYWNlKGNvZGU6IG51bWJlcik6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIChjb2RlID49ICRUQUIgJiYgY29kZSA8PSAkU1BBQ0UpIHx8IChjb2RlID09ICROQlNQKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGlzRGlnaXQoY29kZTogbnVtYmVyKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gJDAgPD0gY29kZSAmJiBjb2RlIDw9ICQ5O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gaXNBc2NpaUxldHRlcihjb2RlOiBudW1iZXIpOiBib29sZWFuIHtcclxuICAgIHJldHVybiBjb2RlID49ICRhICYmIGNvZGUgPD0gJHogfHwgY29kZSA+PSAkQSAmJiBjb2RlIDw9ICRaO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gaXNBc2NpaUhleERpZ2l0KGNvZGU6IG51bWJlcik6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIGNvZGUgPj0gJGEgJiYgY29kZSA8PSAkZiB8fCBjb2RlID49ICRBICYmIGNvZGUgPD0gJEYgfHwgaXNEaWdpdChjb2RlKTtcclxufSJdfQ==
|