@wemake4u/form-player-se 1.0.37 → 1.0.38
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/LICENSE +21 -0
- package/esm2022/lib/dynamic-fields/dynamic-fields.component.mjs +3 -3
- package/esm2022/lib/dynamic-form/dynamic-form.component.mjs +31 -7
- package/esm2022/lib/dynamic-host/dynamic-host.component.mjs +2 -1
- package/esm2022/lib/services/compute.service.mjs +6 -2
- package/esm2022/lib/services/disable.service.mjs +7 -5
- package/esm2022/lib/services/feel.service.mjs +24 -1
- package/esm2022/lib/services/programmability.service.mjs +8 -1
- package/esm2022/lib/services/sanitize.service.mjs +2 -2
- package/esm2022/lib/services/validation.service.mjs +9 -2
- package/esm2022/lib/utils/string.mjs +6 -0
- package/fesm2022/wemake4u-form-player-se.mjs +88 -15
- package/fesm2022/wemake4u-form-player-se.mjs.map +1 -1
- package/lib/dynamic-form/dynamic-form.component.d.ts +4 -0
- package/lib/services/compute.service.d.ts +1 -0
- package/lib/services/disable.service.d.ts +1 -1
- package/lib/services/feel.service.d.ts +2 -0
- package/lib/services/programmability.service.d.ts +1 -0
- package/lib/services/validation.service.d.ts +1 -0
- package/lib/utils/string.d.ts +1 -0
- package/package.json +1 -1
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { Injectable } from '@angular/core';
|
|
2
2
|
import { buildSimpleTree, parser, evaluate as evaluateTemplate } from 'feelers';
|
|
3
3
|
import { unaryTest, evaluate, parseExpression } from 'feelin';
|
|
4
|
+
import { isNullOrEmpty } from '../utils/string';
|
|
4
5
|
import * as i0 from "@angular/core";
|
|
5
6
|
const PathExpression = "PathExpression";
|
|
6
7
|
const VariableName = "VariableName";
|
|
@@ -32,6 +33,28 @@ export class FeelService {
|
|
|
32
33
|
}
|
|
33
34
|
}
|
|
34
35
|
;
|
|
36
|
+
isValidExpression(expression) {
|
|
37
|
+
if (isNullOrEmpty(expression))
|
|
38
|
+
return true;
|
|
39
|
+
try {
|
|
40
|
+
evaluate(expression);
|
|
41
|
+
return true;
|
|
42
|
+
}
|
|
43
|
+
catch {
|
|
44
|
+
return false;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
isValidUnaryTest(expression) {
|
|
48
|
+
if (isNullOrEmpty(expression))
|
|
49
|
+
return true;
|
|
50
|
+
try {
|
|
51
|
+
unaryTest(expression);
|
|
52
|
+
return true;
|
|
53
|
+
}
|
|
54
|
+
catch {
|
|
55
|
+
return false;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
35
58
|
getDependencies(expression, context = {}) {
|
|
36
59
|
const dependencies = [];
|
|
37
60
|
const uniqueSet = new Set();
|
|
@@ -237,4 +260,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
237
260
|
providedIn: 'root'
|
|
238
261
|
}]
|
|
239
262
|
}], ctorParameters: () => [] });
|
|
240
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVlbC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNpcmlvL3NyYy9saWIvc2VydmljZXMvZmVlbC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLEVBQUUsUUFBUSxJQUFJLGdCQUFnQixFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLGVBQWUsRUFBRSxNQUFNLFFBQVEsQ0FBQzs7QUFFOUQsTUFBTSxjQUFjLEdBQUcsZ0JBQWdCLENBQUM7QUFDeEMsTUFBTSxZQUFZLEdBQUcsY0FBYyxDQUFDO0FBQ3BDLE1BQU0sa0JBQWtCLEdBQUcsb0JBQW9CLENBQUM7QUFDaEQsTUFBTSxvQkFBb0IsR0FBRyxzQkFBc0IsQ0FBQztBQUNwRCxNQUFNLGVBQWUsR0FBRyxpQkFBaUIsQ0FBQztBQUMxQyxNQUFNLGFBQWEsR0FBRyxlQUFlLENBQUM7QUFDdEMsTUFBTSxhQUFhLEdBQUcsZUFBZSxDQUFDO0FBQ3RDLE1BQU0sY0FBYyxHQUFHLGdCQUFnQixDQUFDO0FBQ3hDLE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQztBQUNwQixNQUFNLGdCQUFnQixHQUFHLFNBQVMsQ0FBQztBQUtuQyxNQUFNLE9BQU8sV0FBVztJQUV0QixnQkFBZ0IsQ0FBQztJQUVqQixZQUFZLENBQUMsUUFBZ0IsRUFBRSxVQUFlLEVBQUU7UUFDOUMsT0FBTyxnQkFBZ0IsQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUFBLENBQUM7SUFFRixjQUFjLENBQUMsVUFBa0IsRUFBRSxVQUErQixFQUFFO1FBQ2xFLE9BQU8sUUFBUSxDQUFDLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBQUEsQ0FBQztJQUVGLGFBQWEsQ0FBQyxVQUFrQixFQUFFLFVBQStCLEVBQUUsRUFBRSxRQUFhLElBQUk7UUFDcEYsSUFBSSxDQUFDO1lBQ0gsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQztZQUNyQixPQUFPLFNBQVMsQ0FBQyxVQUFVLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDeEMsQ0FBQztnQkFDTyxDQUFDO1lBQ1AsT0FBTyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDdEIsQ0FBQztJQUNILENBQUM7SUFBQSxDQUFDO0lBRUYsZUFBZSxDQUFDLFVBQWtCLEVBQUUsVUFBK0IsRUFBRTtRQUNuRSxNQUFNLFlBQVksR0FBMEIsRUFBRSxDQUFDO1FBQy9DLE1BQU0sU0FBUyxHQUFHLElBQUksR0FBRyxFQUFVLENBQUM7UUFDcEMsTUFBTSxNQUFNLEdBQUcsQ0FBQyxJQUFZLEVBQUUsRUFBRTtZQUM5QixJQUFJLFNBQVMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztnQkFDeEIsT0FBTyxLQUFLLENBQUM7WUFDZixDQUFDO2lCQUNJLENBQUM7Z0JBQ0osU0FBUyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDcEIsT0FBTyxJQUFJLENBQUM7WUFDZCxDQUFDO1FBQ0gsQ0FBQyxDQUFDO1FBRUYsTUFBTSxLQUFLLEdBQWUsQ0FBQyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBRTNGLE1BQU0sSUFBSSxHQUFHLEdBQUcsRUFBRTtZQUNoQixPQUFPLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQzNELENBQUMsQ0FBQztRQUVGLE1BQU0sdUJBQXVCLEdBQUcsQ0FBQyxJQUFjLEVBQVcsRUFBRTtZQUMxRCxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssWUFBWSxFQUFFLENBQUM7Z0JBQy9CLE9BQU8sSUFBSSxDQUFDO1lBQ2QsQ0FBQztZQUNELElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxjQUFjLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO2dCQUNsRSxPQUFPLEtBQUssQ0FBQztZQUNmLENBQUM7WUFDRCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLHVCQUF1QixDQUFDLENBQUM7UUFDdEQsQ0FBQyxDQUFDO1FBRUYsTUFBTSxpQkFBaUIsR0FBRyxDQUFDLElBQWMsRUFBWSxFQUFFO1lBQ3JELElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxZQUFZLEVBQUUsQ0FBQztnQkFDL0IsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNyQixDQUFDO1lBQ0QsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLGNBQWMsRUFBRSxDQUFDO2dCQUNqQyxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLGlCQUFpQixDQUFDLENBQUM7WUFDbEQsQ0FBQztZQUNELE9BQU8sRUFBRSxDQUFDO1FBQ1osQ0FBQyxDQUFDO1FBRUYsZUFBZSxDQUFDLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUM7WUFDM0MsS0FBSyxFQUFFLENBQUMsSUFBUyxFQUFFLEVBQUU7Z0JBQ25CLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7Z0JBQ3ZCLE1BQU0sSUFBSSxHQUFHLFVBQVUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQ3RELE1BQU0sTUFBTSxHQUFHLElBQUksRUFBRSxDQUFDO2dCQUN0QixNQUFNLElBQUksR0FBYSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLENBQUM7Z0JBQ3BFLElBQUksTUFBTSxFQUFFLENBQUM7b0JBQ1gsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQzdCLENBQUM7Z0JBQ0QsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNuQixDQUFDO1lBQ0QsS0FBSyxFQUFFLENBQUMsSUFBUyxFQUFFLEVBQUU7Z0JBQ25CLElBQUksS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztvQkFDckIsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDO29CQUN6QixJQUFJLENBQUMsSUFBSTt3QkFBRSxPQUFPO29CQUNsQixNQUFNLE1BQU0sR0FBRyxJQUFJLEVBQUUsQ0FBQztvQkFFdEIsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLGNBQWMsRUFBRSxDQUFDO3dCQUNqQyxNQUFNLE1BQU0sR0FBRyxDQUFDLE1BQU0sRUFBRSxJQUFJLEtBQUssa0JBQWtCOytCQUM5QyxNQUFNLEVBQUUsSUFBSSxLQUFLLGNBQWM7K0JBQy9CLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxJQUFJLENBQUM7K0JBQ3pCLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQzt3QkFDckMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDOzRCQUNaLE1BQU0sY0FBYyxHQUFHLGlCQUFpQixDQUFDLElBQUksQ0FBQyxDQUFDOzRCQUMvQyxJQUFJLE1BQU0sQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQztnQ0FDckMsWUFBWSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQzs0QkFDcEMsQ0FBQzt3QkFDSCxDQUFDO29CQUNILENBQUM7eUJBQ0ksSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLFlBQVksRUFBRSxDQUFDO3dCQUNwQyxNQUFNLE1BQU0sR0FBRyxDQUFDLE1BQU0sRUFBRSxJQUFJLEtBQUssa0JBQWtCOytCQUM5QyxNQUFNLEVBQUUsSUFBSSxLQUFLLGNBQWMsQ0FBQyxDQUFDO3dCQUN0QyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7NEJBQ1osTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQzs0QkFDakMsSUFBSSxNQUFNLENBQUMsY0FBYyxDQUFDLEVBQUUsQ0FBQztnQ0FDM0IsWUFBWSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQzs0QkFDcEMsQ0FBQzt3QkFDSCxDQUFDO29CQUNILENBQUM7eUJBQ0ksSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLGtCQUFrQixFQUFFLENBQUM7d0JBQzFDLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxFQUFFLGlCQUFpQixDQUFDLENBQUM7d0JBQ25FLElBQUksWUFBWSxJQUFJLFdBQVcsRUFBRSxDQUFDOzRCQUNoQyxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLENBQUM7NEJBQ3BELElBQUksVUFBVSxJQUFJLE1BQU0sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQztnQ0FDL0MsWUFBWSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQzs0QkFDaEMsQ0FBQzt3QkFDSCxDQUFDO29CQUNILENBQUM7Z0JBQ0gsQ0FBQztZQUNILENBQUM7U0FDRixDQUFDLENBQUM7UUFFSCxPQUFPLFlBQVksQ0FBQztJQUN0QixDQUFDO0lBRUQsdUJBQXVCLENBQUMsVUFBa0IsRUFBRSxVQUErQixFQUFFO1FBQzNFLElBQUksQ0FBQyxVQUFVO1lBQUUsT0FBTyxFQUFFLENBQUM7UUFFM0IsTUFBTSxVQUFVLEdBQUcsZUFBZSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFFekUsTUFBTSxNQUFNLEdBQWEsRUFBRSxDQUFDO1FBRTVCLFNBQVMsUUFBUSxDQUFDLFNBQWdCO1lBQ2hDLEtBQUssTUFBTSxJQUFJLElBQUksU0FBUyxFQUFFLENBQUM7Z0JBQzdCLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxXQUFXLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO29CQUM5QyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDNUIsQ0FBQztnQkFDRCxJQUFJLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7b0JBQzlDLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQzFCLENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQztRQUVELFFBQVEsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7UUFFdkIsTUFBTSxlQUFlLEdBQUcsS0FBSyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7UUFFbkQsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLGVBQWUsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBRUQseUJBQXlCO0lBRWpCLFlBQVksQ0FBQyxJQUFjLEVBQUUsU0FBdUM7UUFDMUUsSUFBSSxPQUFPLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUMxQixPQUFPLE9BQU8sS0FBSyxJQUFJLEVBQUUsQ0FBQztZQUN4QixJQUFJLFNBQVMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO2dCQUN2QixPQUFPLE9BQU8sQ0FBQztZQUNqQixDQUFDO1lBQ0QsT0FBTyxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUM7UUFDM0IsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVPLGNBQWMsQ0FBQyxJQUFjLEVBQUUsU0FBdUM7UUFDNUUsS0FBSyxNQUFNLEtBQUssSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDbEMsSUFBSSxTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztnQkFDckIsT0FBTyxLQUFLLENBQUM7WUFDZixDQUFDO1lBQ0QsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsU0FBUyxDQUFDLENBQUM7WUFDcEQsSUFBSSxLQUFLLEtBQUssSUFBSSxFQUFFLENBQUM7Z0JBQ25CLE9BQU8sS0FBSyxDQUFDO1lBQ2YsQ0FBQztRQUNILENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFTyxTQUFTLENBQUMsSUFBYyxFQUFFLFNBQXVDO1FBQ3ZFLEtBQUssTUFBTSxLQUFLLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2xDLElBQUksU0FBUyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQ3JCLE9BQU8sS0FBSyxDQUFDO1lBQ2YsQ0FBQztRQUNILENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFTyxZQUFZLENBQUMsSUFBYyxFQUFFLFNBQXVDO1FBQzFFLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDekMsQ0FBQztJQUVPLGVBQWUsQ0FBQyxJQUFjLEVBQUUsWUFBMEM7UUFFaEYsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssY0FBYyxDQUFDLENBQUM7UUFDOUUsSUFBSSxjQUFjLEVBQUUsQ0FBQztZQUNuQixPQUFPLFlBQVksQ0FBQyxjQUFjLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDaEQsQ0FBQztRQUVELE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLFlBQVksQ0FBQyxDQUFDO1FBQzFFLElBQUksWUFBWSxFQUFFLENBQUM7WUFDakIsT0FBTyxZQUFZLENBQUMsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzlDLENBQUM7UUFFRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFTyxxQkFBcUIsQ0FBQyxJQUFjO1FBQzFDLElBQUksSUFBSSxDQUFDLElBQUksSUFBSSxrQkFBa0I7WUFBRSxPQUFPLEVBQUUsQ0FBQztRQUUvQyxJQUFJLGFBQWEsR0FBb0IsSUFBSSxDQUFDO1FBRTFDLE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLGVBQWUsQ0FBQyxDQUFDO1FBRWhGLElBQUksZUFBZSxFQUFFLENBQUM7WUFDcEIsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxlQUFlLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksYUFBYSxJQUFJLENBQUMsQ0FBQyxJQUFJLEtBQUssTUFBTSxDQUFDLENBQUM7WUFDM0csTUFBTSxjQUFjLEdBQUcsUUFBUSxFQUFFLE1BQU0sQ0FBQztZQUN4QyxJQUFJLGNBQWMsSUFBSSxjQUFjLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDekQsYUFBYSxHQUFHLGNBQWMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDN0MsQ0FBQztRQUNILENBQUM7UUFFRCxNQUFNLG9CQUFvQixHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLG9CQUFvQixDQUFDLENBQUM7UUFFMUYsSUFBSSxvQkFBb0IsRUFBRSxDQUFDO1lBQ3pCLGFBQWEsR0FBRyxvQkFBb0IsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbkQsQ0FBQztRQUVELElBQUksYUFBYSxFQUFFLENBQUM7WUFFbEIsTUFBTSxpQkFBaUIsR0FBRyxDQUFDLElBQWMsRUFBWSxFQUFFO2dCQUNyRCxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssYUFBYSxFQUFFLENBQUM7b0JBQ2hDLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ3JDLENBQUM7cUJBQ0ksSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLGNBQWMsRUFBRSxDQUFDO29CQUN0QyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUNyQixDQUFDO3FCQUNJLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxJQUFJLEVBQUUsQ0FBQztvQkFDNUIsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsQ0FBQyxJQUFJLEtBQUssR0FBRyxDQUFDLENBQUM7b0JBQy9FLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssYUFBYSxJQUFJLENBQUMsQ0FBQyxJQUFJLEtBQUssY0FBYyxDQUFDLEVBQUUsQ0FBQzt3QkFDNUUsT0FBTyxLQUFLLENBQUMsT0FBTyxDQUFDLGlCQUFpQixDQUFDLENBQUM7b0JBQzFDLENBQUM7Z0JBQ0gsQ0FBQztnQkFDRCxPQUFPLEVBQUUsQ0FBQztZQUNaLENBQUMsQ0FBQztZQUVGLE1BQU0sSUFBSSxHQUFHLGlCQUFpQixDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBQzlDLElBQUksSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDO2dCQUNqQixPQUFPLENBQUMsZ0JBQWdCLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQztRQUN2QyxDQUFDO1FBRUQsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRU8sV0FBVyxDQUFDLEtBQWEsRUFBRSxZQUFvQixHQUFHO1FBQ3hELEtBQUssR0FBRyxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFDbEMsT0FBTyxLQUFLO2FBQ1QsS0FBSyxDQUFDLFNBQVMsQ0FBQzthQUNoQixHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7YUFDeEIsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztJQUNyQyxDQUFDO3dHQXhQVSxXQUFXOzRHQUFYLFdBQVcsY0FGVixNQUFNOzs0RkFFUCxXQUFXO2tCQUh2QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgYnVpbGRTaW1wbGVUcmVlLCBwYXJzZXIsIGV2YWx1YXRlIGFzIGV2YWx1YXRlVGVtcGxhdGUgfSBmcm9tICdmZWVsZXJzJztcclxuaW1wb3J0IHsgdW5hcnlUZXN0LCBldmFsdWF0ZSwgcGFyc2VFeHByZXNzaW9uIH0gZnJvbSAnZmVlbGluJztcclxuXHJcbmNvbnN0IFBhdGhFeHByZXNzaW9uID0gXCJQYXRoRXhwcmVzc2lvblwiO1xyXG5jb25zdCBWYXJpYWJsZU5hbWUgPSBcIlZhcmlhYmxlTmFtZVwiO1xyXG5jb25zdCBGdW5jdGlvbkludm9jYXRpb24gPSBcIkZ1bmN0aW9uSW52b2NhdGlvblwiO1xyXG5jb25zdCBQb3NpdGlvbmFsUGFyYW1ldGVycyA9IFwiUG9zaXRpb25hbFBhcmFtZXRlcnNcIjtcclxuY29uc3QgTmFtZWRQYXJhbWV0ZXJzID0gXCJOYW1lZFBhcmFtZXRlcnNcIjtcclxuY29uc3QgUGFyYW1ldGVyTmFtZSA9IFwiUGFyYW1ldGVyTmFtZVwiO1xyXG5jb25zdCBTdHJpbmdMaXRlcmFsID0gXCJTdHJpbmdMaXRlcmFsXCI7XHJcbmNvbnN0IE51bWVyaWNMaXRlcmFsID0gXCJOdW1lcmljTGl0ZXJhbFwiO1xyXG5jb25zdCBMaXN0ID0gXCJMaXN0XCI7XHJcbmNvbnN0IFN0YXR1c0RlcGVuZGVuY3kgPSBcIiRzdGF0dXNcIjtcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIEZlZWxTZXJ2aWNlIHtcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7IH1cclxuXHJcbiAgZXZhbFRlbXBsYXRlKHRlbXBsYXRlOiBzdHJpbmcsIGNvbnRleHQ6IGFueSA9IHt9KTogc3RyaW5nIHtcclxuICAgIHJldHVybiBldmFsdWF0ZVRlbXBsYXRlKHRlbXBsYXRlLCBjb250ZXh0KTtcclxuICB9O1xyXG5cclxuICBldmFsRXhwcmVzc2lvbihleHByZXNzaW9uOiBzdHJpbmcsIGNvbnRleHQ6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7fSk6IGFueSB7XHJcbiAgICByZXR1cm4gZXZhbHVhdGUoZXhwcmVzc2lvbiwgY29udGV4dCk7XHJcbiAgfTtcclxuXHJcbiAgZXZhbFVuYXJ5VGVzdChleHByZXNzaW9uOiBzdHJpbmcsIGNvbnRleHQ6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7fSwgaW5wdXQ6IGFueSA9IG51bGwpOiBib29sZWFuIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGNvbnRleHRbJz8nXSA9IGlucHV0O1xyXG4gICAgICByZXR1cm4gdW5hcnlUZXN0KGV4cHJlc3Npb24sIGNvbnRleHQpO1xyXG4gICAgfVxyXG4gICAgZmluYWxseSB7XHJcbiAgICAgIGRlbGV0ZSBjb250ZXh0Wyc/J107XHJcbiAgICB9XHJcbiAgfTtcclxuXHJcbiAgZ2V0RGVwZW5kZW5jaWVzKGV4cHJlc3Npb246IHN0cmluZywgY29udGV4dDogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9KTogKHN0cmluZyB8IHN0cmluZ1tdKVtdIHtcclxuICAgIGNvbnN0IGRlcGVuZGVuY2llczogKHN0cmluZyB8IHN0cmluZ1tdKVtdID0gW107XHJcbiAgICBjb25zdCB1bmlxdWVTZXQgPSBuZXcgU2V0PHN0cmluZz4oKTtcclxuICAgIGNvbnN0IGFkZFNldCA9ICh0ZXh0OiBzdHJpbmcpID0+IHtcclxuICAgICAgaWYgKHVuaXF1ZVNldC5oYXModGV4dCkpIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgdW5pcXVlU2V0LmFkZCh0ZXh0KTtcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdCBub2RlczogTm9kZUl0ZW1bXSA9IFt7IHR5cGU6IFwicm9vdFwiLCB0ZXh0OiBleHByZXNzaW9uLCBjaGlsZHJlbjogW10sIHBhcmVudDogbnVsbCB9XTtcclxuXHJcbiAgICBjb25zdCBwZWVrID0gKCkgPT4ge1xyXG4gICAgICByZXR1cm4gbm9kZXMubGVuZ3RoID4gMCA/IG5vZGVzW25vZGVzLmxlbmd0aCAtIDFdIDogbnVsbDtcclxuICAgIH07XHJcblxyXG4gICAgY29uc3QgaXNBbGxvd2VkUGF0aEV4cHJlc3Npb24gPSAobm9kZTogTm9kZUl0ZW0pOiBib29sZWFuID0+IHtcclxuICAgICAgaWYgKG5vZGUudHlwZSA9PT0gVmFyaWFibGVOYW1lKSB7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKG5vZGUudHlwZSAhPT0gUGF0aEV4cHJlc3Npb24gfHwgIUFycmF5LmlzQXJyYXkobm9kZS5jaGlsZHJlbikpIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIG5vZGUuY2hpbGRyZW4uZXZlcnkoaXNBbGxvd2VkUGF0aEV4cHJlc3Npb24pO1xyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdCBnZXRQYXRoRXhwcmVzc2lvbiA9IChpdGVtOiBOb2RlSXRlbSk6IHN0cmluZ1tdID0+IHtcclxuICAgICAgaWYgKGl0ZW0udHlwZSA9PT0gVmFyaWFibGVOYW1lKSB7XHJcbiAgICAgICAgcmV0dXJuIFtpdGVtLnRleHRdO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChpdGVtLnR5cGUgPT09IFBhdGhFeHByZXNzaW9uKSB7XHJcbiAgICAgICAgcmV0dXJuIGl0ZW0uY2hpbGRyZW4uZmxhdE1hcChnZXRQYXRoRXhwcmVzc2lvbik7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIFtdO1xyXG4gICAgfTtcclxuXHJcbiAgICBwYXJzZUV4cHJlc3Npb24oZXhwcmVzc2lvbiwgY29udGV4dCkuaXRlcmF0ZSh7XHJcbiAgICAgIGVudGVyOiAobm9kZTogYW55KSA9PiB7XHJcbiAgICAgICAgY29uc3QgdHlwZSA9IG5vZGUubmFtZTtcclxuICAgICAgICBjb25zdCB0ZXh0ID0gZXhwcmVzc2lvbi5zdWJzdHJpbmcobm9kZS5mcm9tLCBub2RlLnRvKTtcclxuICAgICAgICBjb25zdCBwYXJlbnQgPSBwZWVrKCk7XHJcbiAgICAgICAgY29uc3QgaXRlbTogTm9kZUl0ZW0gPSB7IHR5cGUsIHRleHQsIGNoaWxkcmVuOiBbXSwgcGFyZW50OiBwYXJlbnQgfTtcclxuICAgICAgICBpZiAocGFyZW50KSB7XHJcbiAgICAgICAgICBwYXJlbnQuY2hpbGRyZW4ucHVzaChpdGVtKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgbm9kZXMucHVzaChpdGVtKTtcclxuICAgICAgfSxcclxuICAgICAgbGVhdmU6IChub2RlOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAobm9kZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgY29uc3QgaXRlbSA9IG5vZGVzLnBvcCgpO1xyXG4gICAgICAgICAgaWYgKCFpdGVtKSByZXR1cm47XHJcbiAgICAgICAgICBjb25zdCBwYXJlbnQgPSBwZWVrKCk7XHJcblxyXG4gICAgICAgICAgaWYgKGl0ZW0udHlwZSA9PT0gUGF0aEV4cHJlc3Npb24pIHtcclxuICAgICAgICAgICAgY29uc3QgaWdub3JlID0gKHBhcmVudD8udHlwZSA9PT0gRnVuY3Rpb25JbnZvY2F0aW9uXHJcbiAgICAgICAgICAgICAgfHwgcGFyZW50Py50eXBlID09PSBQYXRoRXhwcmVzc2lvblxyXG4gICAgICAgICAgICAgIHx8IGl0ZW0uY2hpbGRyZW4ubGVuZ3RoID09IDBcclxuICAgICAgICAgICAgICB8fCAhaXNBbGxvd2VkUGF0aEV4cHJlc3Npb24oaXRlbSkpO1xyXG4gICAgICAgICAgICBpZiAoIWlnbm9yZSkge1xyXG4gICAgICAgICAgICAgIGNvbnN0IHBhdGhFeHByZXNzaW9uID0gZ2V0UGF0aEV4cHJlc3Npb24oaXRlbSk7XHJcbiAgICAgICAgICAgICAgaWYgKGFkZFNldChwYXRoRXhwcmVzc2lvbi5qb2luKCcuJykpKSB7XHJcbiAgICAgICAgICAgICAgICBkZXBlbmRlbmNpZXMucHVzaChwYXRoRXhwcmVzc2lvbik7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIGlmIChpdGVtLnR5cGUgPT09IFZhcmlhYmxlTmFtZSkge1xyXG4gICAgICAgICAgICBjb25zdCBpZ25vcmUgPSAocGFyZW50Py50eXBlID09PSBGdW5jdGlvbkludm9jYXRpb25cclxuICAgICAgICAgICAgICB8fCBwYXJlbnQ/LnR5cGUgPT09IFBhdGhFeHByZXNzaW9uKTtcclxuICAgICAgICAgICAgaWYgKCFpZ25vcmUpIHtcclxuICAgICAgICAgICAgICBjb25zdCBwYXRoRXhwcmVzc2lvbiA9IGl0ZW0udGV4dDtcclxuICAgICAgICAgICAgICBpZiAoYWRkU2V0KHBhdGhFeHByZXNzaW9uKSkge1xyXG4gICAgICAgICAgICAgICAgZGVwZW5kZW5jaWVzLnB1c2gocGF0aEV4cHJlc3Npb24pO1xyXG4gICAgICAgICAgICAgIH0gICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIGlmIChpdGVtLnR5cGUgPT09IEZ1bmN0aW9uSW52b2NhdGlvbikge1xyXG4gICAgICAgICAgICBjb25zdCBmdW5jdGlvbk5hbWUgPSB0aGlzLmdldEZ1bmN0aW9uTmFtZShpdGVtLCBnZXRQYXRoRXhwcmVzc2lvbik7XHJcbiAgICAgICAgICAgIGlmIChmdW5jdGlvbk5hbWUgPT0gXCJmbi5zdGF0dXNcIikge1xyXG4gICAgICAgICAgICAgIGNvbnN0IHN0YXR1c0RlcHMgPSB0aGlzLmdldFN0YXR1c0RlcGVuZGVuY2llcyhpdGVtKTtcclxuICAgICAgICAgICAgICBpZiAoc3RhdHVzRGVwcyAmJiBhZGRTZXQoc3RhdHVzRGVwcy5qb2luKCcuJykpKSB7XHJcbiAgICAgICAgICAgICAgICBkZXBlbmRlbmNpZXMucHVzaChzdGF0dXNEZXBzKTtcclxuICAgICAgICAgICAgICB9IFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICByZXR1cm4gZGVwZW5kZW5jaWVzO1xyXG4gIH1cclxuXHJcbiAgZ2V0VGVtcGxhdGVEZXBlbmRlbmNpZXMoZXhwcmVzc2lvbjogc3RyaW5nLCBjb250ZXh0OiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge30pOiAoc3RyaW5nIHwgc3RyaW5nW10pW10ge1xyXG4gICAgaWYgKCFleHByZXNzaW9uKSByZXR1cm4gW107XHJcblxyXG4gICAgY29uc3Qgc2ltcGxlVHJlZSA9IGJ1aWxkU2ltcGxlVHJlZShwYXJzZXIucGFyc2UoZXhwcmVzc2lvbiksIGV4cHJlc3Npb24pO1xyXG5cclxuICAgIGNvbnN0IHJlc3VsdDogc3RyaW5nW10gPSBbXTtcclxuXHJcbiAgICBmdW5jdGlvbiB0cmF2ZXJzZShub2RlQXJyYXk6IGFueVtdKSB7XHJcbiAgICAgIGZvciAoY29uc3Qgbm9kZSBvZiBub2RlQXJyYXkpIHtcclxuICAgICAgICBpZiAobm9kZS5uYW1lID09PSAnRmVlbEJsb2NrJyAmJiBub2RlLmNvbnRlbnQpIHtcclxuICAgICAgICAgIHJlc3VsdC5wdXNoKG5vZGUuY29udGVudCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChub2RlLmNoaWxkcmVuICYmIG5vZGUuY2hpbGRyZW4ubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgdHJhdmVyc2Uobm9kZS5jaGlsZHJlbik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdHJhdmVyc2UoW3NpbXBsZVRyZWVdKTtcclxuXHJcbiAgICBjb25zdCBhcnJheUV4cHJlc3Npb24gPSBgWyAke3Jlc3VsdC5qb2luKCcsICcpfSBdYDtcclxuXHJcbiAgICByZXR1cm4gdGhpcy5nZXREZXBlbmRlbmNpZXMoYXJyYXlFeHByZXNzaW9uLCBjb250ZXh0KTtcclxuICB9XHJcblxyXG4gIC8vI3JlZ2lvbiBQcml2YXRlIE1lbWJlcnNcclxuXHJcbiAgcHJpdmF0ZSBmaW5kQW5jZXN0b3Iobm9kZTogTm9kZUl0ZW0sIHByZWRpY2F0ZTogKGNoaWxkOiBOb2RlSXRlbSkgPT4gYm9vbGVhbik6IE5vZGVJdGVtIHwgbnVsbCB7XHJcbiAgICBsZXQgY3VycmVudCA9IG5vZGUucGFyZW50O1xyXG4gICAgd2hpbGUgKGN1cnJlbnQgIT09IG51bGwpIHtcclxuICAgICAgaWYgKHByZWRpY2F0ZShjdXJyZW50KSkge1xyXG4gICAgICAgIHJldHVybiBjdXJyZW50O1xyXG4gICAgICB9XHJcbiAgICAgIGN1cnJlbnQgPSBjdXJyZW50LnBhcmVudDtcclxuICAgIH1cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBmaW5kRGVzY2VuZGFudChub2RlOiBOb2RlSXRlbSwgcHJlZGljYXRlOiAoY2hpbGQ6IE5vZGVJdGVtKSA9PiBib29sZWFuKTogTm9kZUl0ZW0gfCBudWxsIHtcclxuICAgIGZvciAoY29uc3QgY2hpbGQgb2Ygbm9kZS5jaGlsZHJlbikge1xyXG4gICAgICBpZiAocHJlZGljYXRlKGNoaWxkKSkge1xyXG4gICAgICAgIHJldHVybiBjaGlsZDtcclxuICAgICAgfVxyXG4gICAgICBjb25zdCBmb3VuZCA9IHRoaXMuZmluZERlc2NlbmRhbnQoY2hpbGQsIHByZWRpY2F0ZSk7XHJcbiAgICAgIGlmIChmb3VuZCAhPT0gbnVsbCkge1xyXG4gICAgICAgIHJldHVybiBmb3VuZDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGZpbmRDaGlsZChub2RlOiBOb2RlSXRlbSwgcHJlZGljYXRlOiAoY2hpbGQ6IE5vZGVJdGVtKSA9PiBib29sZWFuKTogTm9kZUl0ZW0gfCBudWxsIHtcclxuICAgIGZvciAoY29uc3QgY2hpbGQgb2Ygbm9kZS5jaGlsZHJlbikge1xyXG4gICAgICBpZiAocHJlZGljYXRlKGNoaWxkKSkge1xyXG4gICAgICAgIHJldHVybiBjaGlsZDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGZpbmRDaGlsZHJlbihub2RlOiBOb2RlSXRlbSwgcHJlZGljYXRlOiAoY2hpbGQ6IE5vZGVJdGVtKSA9PiBib29sZWFuKTogTm9kZUl0ZW1bXSB7XHJcbiAgICByZXR1cm4gbm9kZS5jaGlsZHJlbi5maWx0ZXIocHJlZGljYXRlKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0RnVuY3Rpb25OYW1lKG5vZGU6IE5vZGVJdGVtLCBwYXRoUmVzb2x2ZXI6IChpdGVtOiBOb2RlSXRlbSkgPT4gc3RyaW5nW10pOiBzdHJpbmcgfCBudWxsIHtcclxuXHJcbiAgICBjb25zdCBwYXRoRXhwcmVzc2lvbiA9IHRoaXMuZmluZENoaWxkKG5vZGUsIChuKSA9PiBuLnR5cGUgPT09IFBhdGhFeHByZXNzaW9uKTtcclxuICAgIGlmIChwYXRoRXhwcmVzc2lvbikge1xyXG4gICAgICByZXR1cm4gcGF0aFJlc29sdmVyKHBhdGhFeHByZXNzaW9uKS5qb2luKCcuJyk7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgdmFyaWFibGVOYW1lID0gdGhpcy5maW5kQ2hpbGQobm9kZSwgKG4pID0+IG4udHlwZSA9PT0gVmFyaWFibGVOYW1lKTtcclxuICAgIGlmICh2YXJpYWJsZU5hbWUpIHtcclxuICAgICAgcmV0dXJuIHBhdGhSZXNvbHZlcih2YXJpYWJsZU5hbWUpLmpvaW4oJy4nKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0U3RhdHVzRGVwZW5kZW5jaWVzKG5vZGU6IE5vZGVJdGVtKTogc3RyaW5nW10gfCBudWxsIHtcclxuICAgIGlmIChub2RlLnR5cGUgIT0gRnVuY3Rpb25JbnZvY2F0aW9uKSByZXR1cm4gW107XHJcblxyXG4gICAgbGV0IHBhdGhQYXJhbWV0ZXI6IE5vZGVJdGVtIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gICAgY29uc3QgbmFtZWRQYXJhbWV0ZXJzID0gdGhpcy5maW5kQ2hpbGQobm9kZSwgKG4pID0+IG4udHlwZSA9PT0gTmFtZWRQYXJhbWV0ZXJzKTtcclxuXHJcbiAgICBpZiAobmFtZWRQYXJhbWV0ZXJzKSB7XHJcbiAgICAgIGNvbnN0IHBhdGhOYW1lID0gdGhpcy5maW5kRGVzY2VuZGFudChuYW1lZFBhcmFtZXRlcnMsIChuKSA9PiBuLnR5cGUgPT0gUGFyYW1ldGVyTmFtZSAmJiBuLnRleHQgPT09IFwicGF0aFwiKTtcclxuICAgICAgY29uc3QgbmFtZWRQYXJhbWV0ZXIgPSBwYXRoTmFtZT8ucGFyZW50O1xyXG4gICAgICBpZiAobmFtZWRQYXJhbWV0ZXIgJiYgbmFtZWRQYXJhbWV0ZXIuY2hpbGRyZW4ubGVuZ3RoID4gMSkge1xyXG4gICAgICAgIHBhdGhQYXJhbWV0ZXIgPSBuYW1lZFBhcmFtZXRlci5jaGlsZHJlblsxXTtcclxuICAgICAgfSAgICAgIFxyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHBvc2l0aW9uYWxQYXJhbWV0ZXJzID0gdGhpcy5maW5kQ2hpbGQobm9kZSwgKG4pID0+IG4udHlwZSA9PT0gUG9zaXRpb25hbFBhcmFtZXRlcnMpO1xyXG5cclxuICAgIGlmIChwb3NpdGlvbmFsUGFyYW1ldGVycykge1xyXG4gICAgICBwYXRoUGFyYW1ldGVyID0gcG9zaXRpb25hbFBhcmFtZXRlcnMuY2hpbGRyZW5bMF07XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHBhdGhQYXJhbWV0ZXIpIHtcclxuXHJcbiAgICAgIGNvbnN0IGdldFBhdGhFeHByZXNzaW9uID0gKGl0ZW06IE5vZGVJdGVtKTogc3RyaW5nW10gPT4ge1xyXG4gICAgICAgIGlmIChpdGVtLnR5cGUgPT09IFN0cmluZ0xpdGVyYWwpIHtcclxuICAgICAgICAgIHJldHVybiB0aGlzLnNwbGl0UXVvdGVkKGl0ZW0udGV4dCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKGl0ZW0udHlwZSA9PT0gTnVtZXJpY0xpdGVyYWwpIHtcclxuICAgICAgICAgIHJldHVybiBbaXRlbS50ZXh0XTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoaXRlbS50eXBlID09PSBMaXN0KSB7XHJcbiAgICAgICAgICBjb25zdCBpdGVtcyA9IHRoaXMuZmluZENoaWxkcmVuKGl0ZW0sIChuKSA9PiBuLnR5cGUgIT09IFwiW1wiICYmIG4udHlwZSAhPT0gXCJdXCIpO1xyXG4gICAgICAgICAgaWYgKGl0ZW1zLmV2ZXJ5KG4gPT4gbi50eXBlID09PSBTdHJpbmdMaXRlcmFsIHx8IG4udHlwZSA9PT0gTnVtZXJpY0xpdGVyYWwpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBpdGVtcy5mbGF0TWFwKGdldFBhdGhFeHByZXNzaW9uKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIFtdO1xyXG4gICAgICB9O1xyXG5cclxuICAgICAgY29uc3QgcGF0aCA9IGdldFBhdGhFeHByZXNzaW9uKHBhdGhQYXJhbWV0ZXIpO1xyXG4gICAgICBpZiAocGF0aC5sZW5ndGggPiAwKSAgICAgIFxyXG4gICAgICAgIHJldHVybiBbU3RhdHVzRGVwZW5kZW5jeSwgLi4ucGF0aF07XHJcbiAgICB9XHJcbiAgICBcclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzcGxpdFF1b3RlZChpbnB1dDogc3RyaW5nLCBzZXBhcmF0b3I6IHN0cmluZyA9ICcuJyk6IHN0cmluZ1tdIHtcclxuICAgIGlucHV0ID0gKGlucHV0ID8/IFwiXCIpLnNsaWNlKDEsIC0xKVxyXG4gICAgcmV0dXJuIGlucHV0XHJcbiAgICAgIC5zcGxpdChzZXBhcmF0b3IpXHJcbiAgICAgIC5tYXAocGFydCA9PiBwYXJ0LnRyaW0oKSlcclxuICAgICAgLmZpbHRlcihwYXJ0ID0+IHBhcnQubGVuZ3RoID4gMCk7XHJcbiAgfVxyXG5cclxuICAvLyNlbmRyZWdpb25cclxufVxyXG5cclxuaW50ZXJmYWNlIE5vZGVJdGVtIHtcclxuICB0eXBlOiBzdHJpbmc7XHJcbiAgdGV4dDogc3RyaW5nO1xyXG4gIGNoaWxkcmVuOiBOb2RlSXRlbVtdO1xyXG4gIHBhcmVudDogTm9kZUl0ZW0gfCBudWxsO1xyXG59XHJcbiJdfQ==
|
|
263
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVlbC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNpcmlvL3NyYy9saWIvc2VydmljZXMvZmVlbC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLEVBQUUsUUFBUSxJQUFJLGdCQUFnQixFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLGVBQWUsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUM5RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUM7O0FBRWhELE1BQU0sY0FBYyxHQUFHLGdCQUFnQixDQUFDO0FBQ3hDLE1BQU0sWUFBWSxHQUFHLGNBQWMsQ0FBQztBQUNwQyxNQUFNLGtCQUFrQixHQUFHLG9CQUFvQixDQUFDO0FBQ2hELE1BQU0sb0JBQW9CLEdBQUcsc0JBQXNCLENBQUM7QUFDcEQsTUFBTSxlQUFlLEdBQUcsaUJBQWlCLENBQUM7QUFDMUMsTUFBTSxhQUFhLEdBQUcsZUFBZSxDQUFDO0FBQ3RDLE1BQU0sYUFBYSxHQUFHLGVBQWUsQ0FBQztBQUN0QyxNQUFNLGNBQWMsR0FBRyxnQkFBZ0IsQ0FBQztBQUN4QyxNQUFNLElBQUksR0FBRyxNQUFNLENBQUM7QUFDcEIsTUFBTSxnQkFBZ0IsR0FBRyxTQUFTLENBQUM7QUFLbkMsTUFBTSxPQUFPLFdBQVc7SUFFdEIsZ0JBQWdCLENBQUM7SUFFakIsWUFBWSxDQUFDLFFBQWdCLEVBQUUsVUFBZSxFQUFFO1FBQzlDLE9BQU8sZ0JBQWdCLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFBQSxDQUFDO0lBRUYsY0FBYyxDQUFDLFVBQWtCLEVBQUUsVUFBK0IsRUFBRTtRQUNsRSxPQUFPLFFBQVEsQ0FBQyxVQUFVLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUFBLENBQUM7SUFFRixhQUFhLENBQUMsVUFBa0IsRUFBRSxVQUErQixFQUFFLEVBQUUsUUFBYSxJQUFJO1FBQ3BGLElBQUksQ0FBQztZQUNILE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUM7WUFDckIsT0FBTyxTQUFTLENBQUMsVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ3hDLENBQUM7Z0JBQ08sQ0FBQztZQUNQLE9BQU8sT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3RCLENBQUM7SUFDSCxDQUFDO0lBQUEsQ0FBQztJQUVGLGlCQUFpQixDQUFDLFVBQWtCO1FBQ2xDLElBQUksYUFBYSxDQUFDLFVBQVUsQ0FBQztZQUFFLE9BQU8sSUFBSSxDQUFDO1FBQzNDLElBQUksQ0FBQztZQUNILFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUNyQixPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFBQyxNQUFNLENBQUM7WUFDUCxPQUFPLEtBQUssQ0FBQztRQUNmLENBQUM7SUFDSCxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsVUFBa0I7UUFDakMsSUFBSSxhQUFhLENBQUMsVUFBVSxDQUFDO1lBQUUsT0FBTyxJQUFJLENBQUM7UUFDM0MsSUFBSSxDQUFDO1lBQ0gsU0FBUyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ3RCLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztRQUFDLE1BQU0sQ0FBQztZQUNQLE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQztJQUNILENBQUM7SUFFRCxlQUFlLENBQUMsVUFBa0IsRUFBRSxVQUErQixFQUFFO1FBQ25FLE1BQU0sWUFBWSxHQUEwQixFQUFFLENBQUM7UUFDL0MsTUFBTSxTQUFTLEdBQUcsSUFBSSxHQUFHLEVBQVUsQ0FBQztRQUNwQyxNQUFNLE1BQU0sR0FBRyxDQUFDLElBQVksRUFBRSxFQUFFO1lBQzlCLElBQUksU0FBUyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO2dCQUN4QixPQUFPLEtBQUssQ0FBQztZQUNmLENBQUM7aUJBQ0ksQ0FBQztnQkFDSixTQUFTLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUNwQixPQUFPLElBQUksQ0FBQztZQUNkLENBQUM7UUFDSCxDQUFDLENBQUM7UUFFRixNQUFNLEtBQUssR0FBZSxDQUFDLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFFM0YsTUFBTSxJQUFJLEdBQUcsR0FBRyxFQUFFO1lBQ2hCLE9BQU8sS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDM0QsQ0FBQyxDQUFDO1FBRUYsTUFBTSx1QkFBdUIsR0FBRyxDQUFDLElBQWMsRUFBVyxFQUFFO1lBQzFELElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxZQUFZLEVBQUUsQ0FBQztnQkFDL0IsT0FBTyxJQUFJLENBQUM7WUFDZCxDQUFDO1lBQ0QsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLGNBQWMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7Z0JBQ2xFLE9BQU8sS0FBSyxDQUFDO1lBQ2YsQ0FBQztZQUNELE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsdUJBQXVCLENBQUMsQ0FBQztRQUN0RCxDQUFDLENBQUM7UUFFRixNQUFNLGlCQUFpQixHQUFHLENBQUMsSUFBYyxFQUFZLEVBQUU7WUFDckQsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLFlBQVksRUFBRSxDQUFDO2dCQUMvQixPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3JCLENBQUM7WUFDRCxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssY0FBYyxFQUFFLENBQUM7Z0JBQ2pDLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsaUJBQWlCLENBQUMsQ0FBQztZQUNsRCxDQUFDO1lBQ0QsT0FBTyxFQUFFLENBQUM7UUFDWixDQUFDLENBQUM7UUFFRixlQUFlLENBQUMsVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQztZQUMzQyxLQUFLLEVBQUUsQ0FBQyxJQUFTLEVBQUUsRUFBRTtnQkFDbkIsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztnQkFDdkIsTUFBTSxJQUFJLEdBQUcsVUFBVSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDdEQsTUFBTSxNQUFNLEdBQUcsSUFBSSxFQUFFLENBQUM7Z0JBQ3RCLE1BQU0sSUFBSSxHQUFhLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsQ0FBQztnQkFDcEUsSUFBSSxNQUFNLEVBQUUsQ0FBQztvQkFDWCxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDN0IsQ0FBQztnQkFDRCxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ25CLENBQUM7WUFDRCxLQUFLLEVBQUUsQ0FBQyxJQUFTLEVBQUUsRUFBRTtnQkFDbkIsSUFBSSxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO29CQUNyQixNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUM7b0JBQ3pCLElBQUksQ0FBQyxJQUFJO3dCQUFFLE9BQU87b0JBQ2xCLE1BQU0sTUFBTSxHQUFHLElBQUksRUFBRSxDQUFDO29CQUV0QixJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssY0FBYyxFQUFFLENBQUM7d0JBQ2pDLE1BQU0sTUFBTSxHQUFHLENBQUMsTUFBTSxFQUFFLElBQUksS0FBSyxrQkFBa0I7K0JBQzlDLE1BQU0sRUFBRSxJQUFJLEtBQUssY0FBYzsrQkFDL0IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLElBQUksQ0FBQzsrQkFDekIsQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO3dCQUNyQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7NEJBQ1osTUFBTSxjQUFjLEdBQUcsaUJBQWlCLENBQUMsSUFBSSxDQUFDLENBQUM7NEJBQy9DLElBQUksTUFBTSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDO2dDQUNyQyxZQUFZLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDOzRCQUNwQyxDQUFDO3dCQUNILENBQUM7b0JBQ0gsQ0FBQzt5QkFDSSxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssWUFBWSxFQUFFLENBQUM7d0JBQ3BDLE1BQU0sTUFBTSxHQUFHLENBQUMsTUFBTSxFQUFFLElBQUksS0FBSyxrQkFBa0I7K0JBQzlDLE1BQU0sRUFBRSxJQUFJLEtBQUssY0FBYyxDQUFDLENBQUM7d0JBQ3RDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQzs0QkFDWixNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDOzRCQUNqQyxJQUFJLE1BQU0sQ0FBQyxjQUFjLENBQUMsRUFBRSxDQUFDO2dDQUMzQixZQUFZLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDOzRCQUNwQyxDQUFDO3dCQUNILENBQUM7b0JBQ0gsQ0FBQzt5QkFDSSxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssa0JBQWtCLEVBQUUsQ0FBQzt3QkFDMUMsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLEVBQUUsaUJBQWlCLENBQUMsQ0FBQzt3QkFDbkUsSUFBSSxZQUFZLElBQUksV0FBVyxFQUFFLENBQUM7NEJBQ2hDLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsQ0FBQzs0QkFDcEQsSUFBSSxVQUFVLElBQUksTUFBTSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDO2dDQUMvQyxZQUFZLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDOzRCQUNoQyxDQUFDO3dCQUNILENBQUM7b0JBQ0gsQ0FBQztnQkFDSCxDQUFDO1lBQ0gsQ0FBQztTQUNGLENBQUMsQ0FBQztRQUVILE9BQU8sWUFBWSxDQUFDO0lBQ3RCLENBQUM7SUFFRCx1QkFBdUIsQ0FBQyxVQUFrQixFQUFFLFVBQStCLEVBQUU7UUFDM0UsSUFBSSxDQUFDLFVBQVU7WUFBRSxPQUFPLEVBQUUsQ0FBQztRQUUzQixNQUFNLFVBQVUsR0FBRyxlQUFlLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsRUFBRSxVQUFVLENBQUMsQ0FBQztRQUV6RSxNQUFNLE1BQU0sR0FBYSxFQUFFLENBQUM7UUFFNUIsU0FBUyxRQUFRLENBQUMsU0FBZ0I7WUFDaEMsS0FBSyxNQUFNLElBQUksSUFBSSxTQUFTLEVBQUUsQ0FBQztnQkFDN0IsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLFdBQVcsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7b0JBQzlDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2dCQUM1QixDQUFDO2dCQUNELElBQUksSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztvQkFDOUMsUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDMUIsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDO1FBRUQsUUFBUSxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztRQUV2QixNQUFNLGVBQWUsR0FBRyxLQUFLLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztRQUVuRCxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsZUFBZSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFFRCx5QkFBeUI7SUFFakIsWUFBWSxDQUFDLElBQWMsRUFBRSxTQUF1QztRQUMxRSxJQUFJLE9BQU8sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO1FBQzFCLE9BQU8sT0FBTyxLQUFLLElBQUksRUFBRSxDQUFDO1lBQ3hCLElBQUksU0FBUyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7Z0JBQ3ZCLE9BQU8sT0FBTyxDQUFDO1lBQ2pCLENBQUM7WUFDRCxPQUFPLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQztRQUMzQixDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRU8sY0FBYyxDQUFDLElBQWMsRUFBRSxTQUF1QztRQUM1RSxLQUFLLE1BQU0sS0FBSyxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNsQyxJQUFJLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO2dCQUNyQixPQUFPLEtBQUssQ0FBQztZQUNmLENBQUM7WUFDRCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssRUFBRSxTQUFTLENBQUMsQ0FBQztZQUNwRCxJQUFJLEtBQUssS0FBSyxJQUFJLEVBQUUsQ0FBQztnQkFDbkIsT0FBTyxLQUFLLENBQUM7WUFDZixDQUFDO1FBQ0gsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVPLFNBQVMsQ0FBQyxJQUFjLEVBQUUsU0FBdUM7UUFDdkUsS0FBSyxNQUFNLEtBQUssSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDbEMsSUFBSSxTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztnQkFDckIsT0FBTyxLQUFLLENBQUM7WUFDZixDQUFDO1FBQ0gsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVPLFlBQVksQ0FBQyxJQUFjLEVBQUUsU0FBdUM7UUFDMUUsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRU8sZUFBZSxDQUFDLElBQWMsRUFBRSxZQUEwQztRQUVoRixNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxjQUFjLENBQUMsQ0FBQztRQUM5RSxJQUFJLGNBQWMsRUFBRSxDQUFDO1lBQ25CLE9BQU8sWUFBWSxDQUFDLGNBQWMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNoRCxDQUFDO1FBRUQsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssWUFBWSxDQUFDLENBQUM7UUFDMUUsSUFBSSxZQUFZLEVBQUUsQ0FBQztZQUNqQixPQUFPLFlBQVksQ0FBQyxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDOUMsQ0FBQztRQUVELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVPLHFCQUFxQixDQUFDLElBQWM7UUFDMUMsSUFBSSxJQUFJLENBQUMsSUFBSSxJQUFJLGtCQUFrQjtZQUFFLE9BQU8sRUFBRSxDQUFDO1FBRS9DLElBQUksYUFBYSxHQUFvQixJQUFJLENBQUM7UUFFMUMsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssZUFBZSxDQUFDLENBQUM7UUFFaEYsSUFBSSxlQUFlLEVBQUUsQ0FBQztZQUNwQixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLGVBQWUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxhQUFhLElBQUksQ0FBQyxDQUFDLElBQUksS0FBSyxNQUFNLENBQUMsQ0FBQztZQUMzRyxNQUFNLGNBQWMsR0FBRyxRQUFRLEVBQUUsTUFBTSxDQUFDO1lBQ3hDLElBQUksY0FBYyxJQUFJLGNBQWMsQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUN6RCxhQUFhLEdBQUcsY0FBYyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUM3QyxDQUFDO1FBQ0gsQ0FBQztRQUVELE1BQU0sb0JBQW9CLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssb0JBQW9CLENBQUMsQ0FBQztRQUUxRixJQUFJLG9CQUFvQixFQUFFLENBQUM7WUFDekIsYUFBYSxHQUFHLG9CQUFvQixDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNuRCxDQUFDO1FBRUQsSUFBSSxhQUFhLEVBQUUsQ0FBQztZQUVsQixNQUFNLGlCQUFpQixHQUFHLENBQUMsSUFBYyxFQUFZLEVBQUU7Z0JBQ3JELElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxhQUFhLEVBQUUsQ0FBQztvQkFDaEMsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDckMsQ0FBQztxQkFDSSxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssY0FBYyxFQUFFLENBQUM7b0JBQ3RDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ3JCLENBQUM7cUJBQ0ksSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLElBQUksRUFBRSxDQUFDO29CQUM1QixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxDQUFDLElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQztvQkFDL0UsSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxhQUFhLElBQUksQ0FBQyxDQUFDLElBQUksS0FBSyxjQUFjLENBQUMsRUFBRSxDQUFDO3dCQUM1RSxPQUFPLEtBQUssQ0FBQyxPQUFPLENBQUMsaUJBQWlCLENBQUMsQ0FBQztvQkFDMUMsQ0FBQztnQkFDSCxDQUFDO2dCQUNELE9BQU8sRUFBRSxDQUFDO1lBQ1osQ0FBQyxDQUFDO1lBRUYsTUFBTSxJQUFJLEdBQUcsaUJBQWlCLENBQUMsYUFBYSxDQUFDLENBQUM7WUFDOUMsSUFBSSxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUM7Z0JBQ2pCLE9BQU8sQ0FBQyxnQkFBZ0IsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDO1FBQ3ZDLENBQUM7UUFFRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFTyxXQUFXLENBQUMsS0FBYSxFQUFFLFlBQW9CLEdBQUc7UUFDeEQsS0FBSyxHQUFHLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUNsQyxPQUFPLEtBQUs7YUFDVCxLQUFLLENBQUMsU0FBUyxDQUFDO2FBQ2hCLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQzthQUN4QixNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ3JDLENBQUM7d0dBNVFVLFdBQVc7NEdBQVgsV0FBVyxjQUZWLE1BQU07OzRGQUVQLFdBQVc7a0JBSHZCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBidWlsZFNpbXBsZVRyZWUsIHBhcnNlciwgZXZhbHVhdGUgYXMgZXZhbHVhdGVUZW1wbGF0ZSB9IGZyb20gJ2ZlZWxlcnMnO1xyXG5pbXBvcnQgeyB1bmFyeVRlc3QsIGV2YWx1YXRlLCBwYXJzZUV4cHJlc3Npb24gfSBmcm9tICdmZWVsaW4nO1xyXG5pbXBvcnQgeyBpc051bGxPckVtcHR5IH0gZnJvbSAnLi4vdXRpbHMvc3RyaW5nJztcclxuXHJcbmNvbnN0IFBhdGhFeHByZXNzaW9uID0gXCJQYXRoRXhwcmVzc2lvblwiO1xyXG5jb25zdCBWYXJpYWJsZU5hbWUgPSBcIlZhcmlhYmxlTmFtZVwiO1xyXG5jb25zdCBGdW5jdGlvbkludm9jYXRpb24gPSBcIkZ1bmN0aW9uSW52b2NhdGlvblwiO1xyXG5jb25zdCBQb3NpdGlvbmFsUGFyYW1ldGVycyA9IFwiUG9zaXRpb25hbFBhcmFtZXRlcnNcIjtcclxuY29uc3QgTmFtZWRQYXJhbWV0ZXJzID0gXCJOYW1lZFBhcmFtZXRlcnNcIjtcclxuY29uc3QgUGFyYW1ldGVyTmFtZSA9IFwiUGFyYW1ldGVyTmFtZVwiO1xyXG5jb25zdCBTdHJpbmdMaXRlcmFsID0gXCJTdHJpbmdMaXRlcmFsXCI7XHJcbmNvbnN0IE51bWVyaWNMaXRlcmFsID0gXCJOdW1lcmljTGl0ZXJhbFwiO1xyXG5jb25zdCBMaXN0ID0gXCJMaXN0XCI7XHJcbmNvbnN0IFN0YXR1c0RlcGVuZGVuY3kgPSBcIiRzdGF0dXNcIjtcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIEZlZWxTZXJ2aWNlIHtcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7IH1cclxuXHJcbiAgZXZhbFRlbXBsYXRlKHRlbXBsYXRlOiBzdHJpbmcsIGNvbnRleHQ6IGFueSA9IHt9KTogc3RyaW5nIHtcclxuICAgIHJldHVybiBldmFsdWF0ZVRlbXBsYXRlKHRlbXBsYXRlLCBjb250ZXh0KTtcclxuICB9O1xyXG5cclxuICBldmFsRXhwcmVzc2lvbihleHByZXNzaW9uOiBzdHJpbmcsIGNvbnRleHQ6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7fSk6IGFueSB7XHJcbiAgICByZXR1cm4gZXZhbHVhdGUoZXhwcmVzc2lvbiwgY29udGV4dCk7XHJcbiAgfTtcclxuXHJcbiAgZXZhbFVuYXJ5VGVzdChleHByZXNzaW9uOiBzdHJpbmcsIGNvbnRleHQ6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7fSwgaW5wdXQ6IGFueSA9IG51bGwpOiBib29sZWFuIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGNvbnRleHRbJz8nXSA9IGlucHV0O1xyXG4gICAgICByZXR1cm4gdW5hcnlUZXN0KGV4cHJlc3Npb24sIGNvbnRleHQpO1xyXG4gICAgfVxyXG4gICAgZmluYWxseSB7XHJcbiAgICAgIGRlbGV0ZSBjb250ZXh0Wyc/J107XHJcbiAgICB9XHJcbiAgfTtcclxuXHJcbiAgaXNWYWxpZEV4cHJlc3Npb24oZXhwcmVzc2lvbjogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICBpZiAoaXNOdWxsT3JFbXB0eShleHByZXNzaW9uKSkgcmV0dXJuIHRydWU7XHJcbiAgICB0cnkge1xyXG4gICAgICBldmFsdWF0ZShleHByZXNzaW9uKTtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9IGNhdGNoIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaXNWYWxpZFVuYXJ5VGVzdChleHByZXNzaW9uOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgIGlmIChpc051bGxPckVtcHR5KGV4cHJlc3Npb24pKSByZXR1cm4gdHJ1ZTtcclxuICAgIHRyeSB7XHJcbiAgICAgIHVuYXJ5VGVzdChleHByZXNzaW9uKTtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9IGNhdGNoIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0RGVwZW5kZW5jaWVzKGV4cHJlc3Npb246IHN0cmluZywgY29udGV4dDogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9KTogKHN0cmluZyB8IHN0cmluZ1tdKVtdIHtcclxuICAgIGNvbnN0IGRlcGVuZGVuY2llczogKHN0cmluZyB8IHN0cmluZ1tdKVtdID0gW107XHJcbiAgICBjb25zdCB1bmlxdWVTZXQgPSBuZXcgU2V0PHN0cmluZz4oKTtcclxuICAgIGNvbnN0IGFkZFNldCA9ICh0ZXh0OiBzdHJpbmcpID0+IHtcclxuICAgICAgaWYgKHVuaXF1ZVNldC5oYXModGV4dCkpIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgdW5pcXVlU2V0LmFkZCh0ZXh0KTtcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdCBub2RlczogTm9kZUl0ZW1bXSA9IFt7IHR5cGU6IFwicm9vdFwiLCB0ZXh0OiBleHByZXNzaW9uLCBjaGlsZHJlbjogW10sIHBhcmVudDogbnVsbCB9XTtcclxuXHJcbiAgICBjb25zdCBwZWVrID0gKCkgPT4ge1xyXG4gICAgICByZXR1cm4gbm9kZXMubGVuZ3RoID4gMCA/IG5vZGVzW25vZGVzLmxlbmd0aCAtIDFdIDogbnVsbDtcclxuICAgIH07XHJcblxyXG4gICAgY29uc3QgaXNBbGxvd2VkUGF0aEV4cHJlc3Npb24gPSAobm9kZTogTm9kZUl0ZW0pOiBib29sZWFuID0+IHtcclxuICAgICAgaWYgKG5vZGUudHlwZSA9PT0gVmFyaWFibGVOYW1lKSB7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKG5vZGUudHlwZSAhPT0gUGF0aEV4cHJlc3Npb24gfHwgIUFycmF5LmlzQXJyYXkobm9kZS5jaGlsZHJlbikpIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIG5vZGUuY2hpbGRyZW4uZXZlcnkoaXNBbGxvd2VkUGF0aEV4cHJlc3Npb24pO1xyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdCBnZXRQYXRoRXhwcmVzc2lvbiA9IChpdGVtOiBOb2RlSXRlbSk6IHN0cmluZ1tdID0+IHtcclxuICAgICAgaWYgKGl0ZW0udHlwZSA9PT0gVmFyaWFibGVOYW1lKSB7XHJcbiAgICAgICAgcmV0dXJuIFtpdGVtLnRleHRdO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChpdGVtLnR5cGUgPT09IFBhdGhFeHByZXNzaW9uKSB7XHJcbiAgICAgICAgcmV0dXJuIGl0ZW0uY2hpbGRyZW4uZmxhdE1hcChnZXRQYXRoRXhwcmVzc2lvbik7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIFtdO1xyXG4gICAgfTtcclxuXHJcbiAgICBwYXJzZUV4cHJlc3Npb24oZXhwcmVzc2lvbiwgY29udGV4dCkuaXRlcmF0ZSh7XHJcbiAgICAgIGVudGVyOiAobm9kZTogYW55KSA9PiB7XHJcbiAgICAgICAgY29uc3QgdHlwZSA9IG5vZGUubmFtZTtcclxuICAgICAgICBjb25zdCB0ZXh0ID0gZXhwcmVzc2lvbi5zdWJzdHJpbmcobm9kZS5mcm9tLCBub2RlLnRvKTtcclxuICAgICAgICBjb25zdCBwYXJlbnQgPSBwZWVrKCk7XHJcbiAgICAgICAgY29uc3QgaXRlbTogTm9kZUl0ZW0gPSB7IHR5cGUsIHRleHQsIGNoaWxkcmVuOiBbXSwgcGFyZW50OiBwYXJlbnQgfTtcclxuICAgICAgICBpZiAocGFyZW50KSB7XHJcbiAgICAgICAgICBwYXJlbnQuY2hpbGRyZW4ucHVzaChpdGVtKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgbm9kZXMucHVzaChpdGVtKTtcclxuICAgICAgfSxcclxuICAgICAgbGVhdmU6IChub2RlOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAobm9kZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgY29uc3QgaXRlbSA9IG5vZGVzLnBvcCgpO1xyXG4gICAgICAgICAgaWYgKCFpdGVtKSByZXR1cm47XHJcbiAgICAgICAgICBjb25zdCBwYXJlbnQgPSBwZWVrKCk7XHJcblxyXG4gICAgICAgICAgaWYgKGl0ZW0udHlwZSA9PT0gUGF0aEV4cHJlc3Npb24pIHtcclxuICAgICAgICAgICAgY29uc3QgaWdub3JlID0gKHBhcmVudD8udHlwZSA9PT0gRnVuY3Rpb25JbnZvY2F0aW9uXHJcbiAgICAgICAgICAgICAgfHwgcGFyZW50Py50eXBlID09PSBQYXRoRXhwcmVzc2lvblxyXG4gICAgICAgICAgICAgIHx8IGl0ZW0uY2hpbGRyZW4ubGVuZ3RoID09IDBcclxuICAgICAgICAgICAgICB8fCAhaXNBbGxvd2VkUGF0aEV4cHJlc3Npb24oaXRlbSkpO1xyXG4gICAgICAgICAgICBpZiAoIWlnbm9yZSkge1xyXG4gICAgICAgICAgICAgIGNvbnN0IHBhdGhFeHByZXNzaW9uID0gZ2V0UGF0aEV4cHJlc3Npb24oaXRlbSk7XHJcbiAgICAgICAgICAgICAgaWYgKGFkZFNldChwYXRoRXhwcmVzc2lvbi5qb2luKCcuJykpKSB7XHJcbiAgICAgICAgICAgICAgICBkZXBlbmRlbmNpZXMucHVzaChwYXRoRXhwcmVzc2lvbik7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIGlmIChpdGVtLnR5cGUgPT09IFZhcmlhYmxlTmFtZSkge1xyXG4gICAgICAgICAgICBjb25zdCBpZ25vcmUgPSAocGFyZW50Py50eXBlID09PSBGdW5jdGlvbkludm9jYXRpb25cclxuICAgICAgICAgICAgICB8fCBwYXJlbnQ/LnR5cGUgPT09IFBhdGhFeHByZXNzaW9uKTtcclxuICAgICAgICAgICAgaWYgKCFpZ25vcmUpIHtcclxuICAgICAgICAgICAgICBjb25zdCBwYXRoRXhwcmVzc2lvbiA9IGl0ZW0udGV4dDtcclxuICAgICAgICAgICAgICBpZiAoYWRkU2V0KHBhdGhFeHByZXNzaW9uKSkge1xyXG4gICAgICAgICAgICAgICAgZGVwZW5kZW5jaWVzLnB1c2gocGF0aEV4cHJlc3Npb24pO1xyXG4gICAgICAgICAgICAgIH0gICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIGlmIChpdGVtLnR5cGUgPT09IEZ1bmN0aW9uSW52b2NhdGlvbikge1xyXG4gICAgICAgICAgICBjb25zdCBmdW5jdGlvbk5hbWUgPSB0aGlzLmdldEZ1bmN0aW9uTmFtZShpdGVtLCBnZXRQYXRoRXhwcmVzc2lvbik7XHJcbiAgICAgICAgICAgIGlmIChmdW5jdGlvbk5hbWUgPT0gXCJmbi5zdGF0dXNcIikge1xyXG4gICAgICAgICAgICAgIGNvbnN0IHN0YXR1c0RlcHMgPSB0aGlzLmdldFN0YXR1c0RlcGVuZGVuY2llcyhpdGVtKTtcclxuICAgICAgICAgICAgICBpZiAoc3RhdHVzRGVwcyAmJiBhZGRTZXQoc3RhdHVzRGVwcy5qb2luKCcuJykpKSB7XHJcbiAgICAgICAgICAgICAgICBkZXBlbmRlbmNpZXMucHVzaChzdGF0dXNEZXBzKTtcclxuICAgICAgICAgICAgICB9IFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICByZXR1cm4gZGVwZW5kZW5jaWVzO1xyXG4gIH1cclxuXHJcbiAgZ2V0VGVtcGxhdGVEZXBlbmRlbmNpZXMoZXhwcmVzc2lvbjogc3RyaW5nLCBjb250ZXh0OiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge30pOiAoc3RyaW5nIHwgc3RyaW5nW10pW10ge1xyXG4gICAgaWYgKCFleHByZXNzaW9uKSByZXR1cm4gW107XHJcblxyXG4gICAgY29uc3Qgc2ltcGxlVHJlZSA9IGJ1aWxkU2ltcGxlVHJlZShwYXJzZXIucGFyc2UoZXhwcmVzc2lvbiksIGV4cHJlc3Npb24pO1xyXG5cclxuICAgIGNvbnN0IHJlc3VsdDogc3RyaW5nW10gPSBbXTtcclxuXHJcbiAgICBmdW5jdGlvbiB0cmF2ZXJzZShub2RlQXJyYXk6IGFueVtdKSB7XHJcbiAgICAgIGZvciAoY29uc3Qgbm9kZSBvZiBub2RlQXJyYXkpIHtcclxuICAgICAgICBpZiAobm9kZS5uYW1lID09PSAnRmVlbEJsb2NrJyAmJiBub2RlLmNvbnRlbnQpIHtcclxuICAgICAgICAgIHJlc3VsdC5wdXNoKG5vZGUuY29udGVudCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChub2RlLmNoaWxkcmVuICYmIG5vZGUuY2hpbGRyZW4ubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgdHJhdmVyc2Uobm9kZS5jaGlsZHJlbik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdHJhdmVyc2UoW3NpbXBsZVRyZWVdKTtcclxuXHJcbiAgICBjb25zdCBhcnJheUV4cHJlc3Npb24gPSBgWyAke3Jlc3VsdC5qb2luKCcsICcpfSBdYDtcclxuXHJcbiAgICByZXR1cm4gdGhpcy5nZXREZXBlbmRlbmNpZXMoYXJyYXlFeHByZXNzaW9uLCBjb250ZXh0KTtcclxuICB9XHJcblxyXG4gIC8vI3JlZ2lvbiBQcml2YXRlIE1lbWJlcnNcclxuXHJcbiAgcHJpdmF0ZSBmaW5kQW5jZXN0b3Iobm9kZTogTm9kZUl0ZW0sIHByZWRpY2F0ZTogKGNoaWxkOiBOb2RlSXRlbSkgPT4gYm9vbGVhbik6IE5vZGVJdGVtIHwgbnVsbCB7XHJcbiAgICBsZXQgY3VycmVudCA9IG5vZGUucGFyZW50O1xyXG4gICAgd2hpbGUgKGN1cnJlbnQgIT09IG51bGwpIHtcclxuICAgICAgaWYgKHByZWRpY2F0ZShjdXJyZW50KSkge1xyXG4gICAgICAgIHJldHVybiBjdXJyZW50O1xyXG4gICAgICB9XHJcbiAgICAgIGN1cnJlbnQgPSBjdXJyZW50LnBhcmVudDtcclxuICAgIH1cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBmaW5kRGVzY2VuZGFudChub2RlOiBOb2RlSXRlbSwgcHJlZGljYXRlOiAoY2hpbGQ6IE5vZGVJdGVtKSA9PiBib29sZWFuKTogTm9kZUl0ZW0gfCBudWxsIHtcclxuICAgIGZvciAoY29uc3QgY2hpbGQgb2Ygbm9kZS5jaGlsZHJlbikge1xyXG4gICAgICBpZiAocHJlZGljYXRlKGNoaWxkKSkge1xyXG4gICAgICAgIHJldHVybiBjaGlsZDtcclxuICAgICAgfVxyXG4gICAgICBjb25zdCBmb3VuZCA9IHRoaXMuZmluZERlc2NlbmRhbnQoY2hpbGQsIHByZWRpY2F0ZSk7XHJcbiAgICAgIGlmIChmb3VuZCAhPT0gbnVsbCkge1xyXG4gICAgICAgIHJldHVybiBmb3VuZDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGZpbmRDaGlsZChub2RlOiBOb2RlSXRlbSwgcHJlZGljYXRlOiAoY2hpbGQ6IE5vZGVJdGVtKSA9PiBib29sZWFuKTogTm9kZUl0ZW0gfCBudWxsIHtcclxuICAgIGZvciAoY29uc3QgY2hpbGQgb2Ygbm9kZS5jaGlsZHJlbikge1xyXG4gICAgICBpZiAocHJlZGljYXRlKGNoaWxkKSkge1xyXG4gICAgICAgIHJldHVybiBjaGlsZDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGZpbmRDaGlsZHJlbihub2RlOiBOb2RlSXRlbSwgcHJlZGljYXRlOiAoY2hpbGQ6IE5vZGVJdGVtKSA9PiBib29sZWFuKTogTm9kZUl0ZW1bXSB7XHJcbiAgICByZXR1cm4gbm9kZS5jaGlsZHJlbi5maWx0ZXIocHJlZGljYXRlKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0RnVuY3Rpb25OYW1lKG5vZGU6IE5vZGVJdGVtLCBwYXRoUmVzb2x2ZXI6IChpdGVtOiBOb2RlSXRlbSkgPT4gc3RyaW5nW10pOiBzdHJpbmcgfCBudWxsIHtcclxuXHJcbiAgICBjb25zdCBwYXRoRXhwcmVzc2lvbiA9IHRoaXMuZmluZENoaWxkKG5vZGUsIChuKSA9PiBuLnR5cGUgPT09IFBhdGhFeHByZXNzaW9uKTtcclxuICAgIGlmIChwYXRoRXhwcmVzc2lvbikge1xyXG4gICAgICByZXR1cm4gcGF0aFJlc29sdmVyKHBhdGhFeHByZXNzaW9uKS5qb2luKCcuJyk7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgdmFyaWFibGVOYW1lID0gdGhpcy5maW5kQ2hpbGQobm9kZSwgKG4pID0+IG4udHlwZSA9PT0gVmFyaWFibGVOYW1lKTtcclxuICAgIGlmICh2YXJpYWJsZU5hbWUpIHtcclxuICAgICAgcmV0dXJuIHBhdGhSZXNvbHZlcih2YXJpYWJsZU5hbWUpLmpvaW4oJy4nKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0U3RhdHVzRGVwZW5kZW5jaWVzKG5vZGU6IE5vZGVJdGVtKTogc3RyaW5nW10gfCBudWxsIHtcclxuICAgIGlmIChub2RlLnR5cGUgIT0gRnVuY3Rpb25JbnZvY2F0aW9uKSByZXR1cm4gW107XHJcblxyXG4gICAgbGV0IHBhdGhQYXJhbWV0ZXI6IE5vZGVJdGVtIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gICAgY29uc3QgbmFtZWRQYXJhbWV0ZXJzID0gdGhpcy5maW5kQ2hpbGQobm9kZSwgKG4pID0+IG4udHlwZSA9PT0gTmFtZWRQYXJhbWV0ZXJzKTtcclxuXHJcbiAgICBpZiAobmFtZWRQYXJhbWV0ZXJzKSB7XHJcbiAgICAgIGNvbnN0IHBhdGhOYW1lID0gdGhpcy5maW5kRGVzY2VuZGFudChuYW1lZFBhcmFtZXRlcnMsIChuKSA9PiBuLnR5cGUgPT0gUGFyYW1ldGVyTmFtZSAmJiBuLnRleHQgPT09IFwicGF0aFwiKTtcclxuICAgICAgY29uc3QgbmFtZWRQYXJhbWV0ZXIgPSBwYXRoTmFtZT8ucGFyZW50O1xyXG4gICAgICBpZiAobmFtZWRQYXJhbWV0ZXIgJiYgbmFtZWRQYXJhbWV0ZXIuY2hpbGRyZW4ubGVuZ3RoID4gMSkge1xyXG4gICAgICAgIHBhdGhQYXJhbWV0ZXIgPSBuYW1lZFBhcmFtZXRlci5jaGlsZHJlblsxXTtcclxuICAgICAgfSAgICAgIFxyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHBvc2l0aW9uYWxQYXJhbWV0ZXJzID0gdGhpcy5maW5kQ2hpbGQobm9kZSwgKG4pID0+IG4udHlwZSA9PT0gUG9zaXRpb25hbFBhcmFtZXRlcnMpO1xyXG5cclxuICAgIGlmIChwb3NpdGlvbmFsUGFyYW1ldGVycykge1xyXG4gICAgICBwYXRoUGFyYW1ldGVyID0gcG9zaXRpb25hbFBhcmFtZXRlcnMuY2hpbGRyZW5bMF07XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHBhdGhQYXJhbWV0ZXIpIHtcclxuXHJcbiAgICAgIGNvbnN0IGdldFBhdGhFeHByZXNzaW9uID0gKGl0ZW06IE5vZGVJdGVtKTogc3RyaW5nW10gPT4ge1xyXG4gICAgICAgIGlmIChpdGVtLnR5cGUgPT09IFN0cmluZ0xpdGVyYWwpIHtcclxuICAgICAgICAgIHJldHVybiB0aGlzLnNwbGl0UXVvdGVkKGl0ZW0udGV4dCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKGl0ZW0udHlwZSA9PT0gTnVtZXJpY0xpdGVyYWwpIHtcclxuICAgICAgICAgIHJldHVybiBbaXRlbS50ZXh0XTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoaXRlbS50eXBlID09PSBMaXN0KSB7XHJcbiAgICAgICAgICBjb25zdCBpdGVtcyA9IHRoaXMuZmluZENoaWxkcmVuKGl0ZW0sIChuKSA9PiBuLnR5cGUgIT09IFwiW1wiICYmIG4udHlwZSAhPT0gXCJdXCIpO1xyXG4gICAgICAgICAgaWYgKGl0ZW1zLmV2ZXJ5KG4gPT4gbi50eXBlID09PSBTdHJpbmdMaXRlcmFsIHx8IG4udHlwZSA9PT0gTnVtZXJpY0xpdGVyYWwpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBpdGVtcy5mbGF0TWFwKGdldFBhdGhFeHByZXNzaW9uKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIFtdO1xyXG4gICAgICB9O1xyXG5cclxuICAgICAgY29uc3QgcGF0aCA9IGdldFBhdGhFeHByZXNzaW9uKHBhdGhQYXJhbWV0ZXIpO1xyXG4gICAgICBpZiAocGF0aC5sZW5ndGggPiAwKSAgICAgIFxyXG4gICAgICAgIHJldHVybiBbU3RhdHVzRGVwZW5kZW5jeSwgLi4ucGF0aF07XHJcbiAgICB9XHJcbiAgICBcclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzcGxpdFF1b3RlZChpbnB1dDogc3RyaW5nLCBzZXBhcmF0b3I6IHN0cmluZyA9ICcuJyk6IHN0cmluZ1tdIHtcclxuICAgIGlucHV0ID0gKGlucHV0ID8/IFwiXCIpLnNsaWNlKDEsIC0xKVxyXG4gICAgcmV0dXJuIGlucHV0XHJcbiAgICAgIC5zcGxpdChzZXBhcmF0b3IpXHJcbiAgICAgIC5tYXAocGFydCA9PiBwYXJ0LnRyaW0oKSlcclxuICAgICAgLmZpbHRlcihwYXJ0ID0+IHBhcnQubGVuZ3RoID4gMCk7XHJcbiAgfVxyXG5cclxuICAvLyNlbmRyZWdpb25cclxufVxyXG5cclxuaW50ZXJmYWNlIE5vZGVJdGVtIHtcclxuICB0eXBlOiBzdHJpbmc7XHJcbiAgdGV4dDogc3RyaW5nO1xyXG4gIGNoaWxkcmVuOiBOb2RlSXRlbVtdO1xyXG4gIHBhcmVudDogTm9kZUl0ZW0gfCBudWxsO1xyXG59XHJcbiJdfQ==
|
|
@@ -293,6 +293,12 @@ export class ProgrammabilityService {
|
|
|
293
293
|
};
|
|
294
294
|
}, {});
|
|
295
295
|
}
|
|
296
|
+
getFeelFunctions() {
|
|
297
|
+
return {
|
|
298
|
+
isValidExpression: this.feelService.isValidExpression,
|
|
299
|
+
isValidUnaryTest: this.feelService.isValidUnaryTest
|
|
300
|
+
};
|
|
301
|
+
}
|
|
296
302
|
getFormFunctions(formGroup) {
|
|
297
303
|
return this.formService.getContext(formGroup);
|
|
298
304
|
}
|
|
@@ -342,6 +348,7 @@ export class ProgrammabilityService {
|
|
|
342
348
|
fn: {
|
|
343
349
|
...this.predefinedFunctions,
|
|
344
350
|
...this.getFormFunctions(formGroup),
|
|
351
|
+
...this.getFeelFunctions()
|
|
345
352
|
}
|
|
346
353
|
};
|
|
347
354
|
if (options.extendContext) {
|
|
@@ -476,4 +483,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
476
483
|
}] }, { type: i10.ScopeService, decorators: [{
|
|
477
484
|
type: Optional
|
|
478
485
|
}] }] });
|
|
479
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZ3JhbW1hYmlsaXR5LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc2lyaW8vc3JjL2xpYi9zZXJ2aWNlcy9wcm9ncmFtbWFiaWxpdHkuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFhLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNoRSxPQUFPLEVBQW1CLFNBQVMsRUFBcUIsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFXMUYsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3pDLE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBYyxNQUFNLE1BQU0sQ0FBQztBQUNwRSxPQUFPLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEUsT0FBTyxFQUFRLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7Ozs7Ozs7QUFFakQsTUFBTSxnQkFBZ0IsR0FBRyxTQUFTLENBQUM7QUFHbkMsTUFBTSxPQUFPLHNCQUFzQjtJQUViO0lBQ1I7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDWTtJQUNBO0lBVHhCLFlBQW9CLFdBQXdCLEVBQ2hDLFdBQXdCLEVBQ3hCLFlBQTBCLEVBQzFCLGFBQTRCLEVBQzVCLGdCQUFrQyxFQUNsQyxlQUFnQyxFQUNoQyxXQUF3QixFQUN4QixhQUE0QixFQUNoQixRQUF5QixFQUN6QixLQUFtQjtRQVR2QixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUNoQyxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUMxQixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUM1QixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLG9CQUFl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QUFFLEtBQUssQ0FBQyxDQUFDO0lBQzFCLENBQUM7SUFFTyxPQUFPLENBQUMsT0FBd0I7UUFDdEMsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDckQsQ0FBQzt3R0F4aEJVLHNCQUFzQjs0R0FBdEIsc0JBQXNCOzs0RkFBdEIsc0JBQXNCO2tCQURsQyxVQUFVOzswQkFXSixRQUFROzswQkFDUixRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgT25EZXN0cm95LCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIEZvcm1BcnJheSwgRm9ybUNvbnRyb2xTdGF0dXMsIEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgRmVlbFNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9mZWVsLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTY29wZVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9zY29wZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUmVnaXN0ZXJTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvcmVnaXN0ZXIuc2VydmljZSc7XHJcbmltcG9ydCB7IFRvYXN0U2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3RvYXN0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBGdW5jdGlvblNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9mdW5jdGlvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgR2xvYmFsU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2dsb2JhbC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRm9ybVNlcnZpY2UgfSBmcm9tICcuL2Zvcm0uc2VydmljZSc7XHJcbmltcG9ydCB7IERpYWxvZ1NlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9kaWFsb2cuc2VydmljZSc7XHJcbmltcG9ydCB7IEZvcm1hdHRlclNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9mb3JtYXR0ZXIuc2VydmljZSc7XHJcbmltcG9ydCB7IFdlYWtTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvd2Vhay5zZXJ2aWNlJztcclxuaW1wb3J0IHsgdG9Qcm94eSB9IGZyb20gJy4uL3V0aWxzL3Byb3h5JztcclxuaW1wb3J0IHsgU3ViamVjdCwgdGFrZVVudGlsLCBpc09ic2VydmFibGUsIE9ic2VydmFibGUgfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQgeyBmaWx0ZXIsIHBhaXJ3aXNlLCBzdGFydFdpdGgsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgUGF0aCwgbWF0Y2hQYXRoIH0gZnJvbSAnLi4vY29tbW9uL3BhdGgnO1xyXG5cclxuY29uc3QgU3RhdHVzRGVwZW5kZW5jeSA9IFwiJHN0YXR1c1wiO1xyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgUHJvZ3JhbW1hYmlsaXR5U2VydmljZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZmVlbFNlcnZpY2U6IEZlZWxTZXJ2aWNlXHJcbiAgICAsIHByaXZhdGUgd2Vha1NlcnZpY2U6IFdlYWtTZXJ2aWNlXHJcbiAgICAsIHByaXZhdGUgdG9hc3RTZXJ2aWNlOiBUb2FzdFNlcnZpY2VcclxuICAgICwgcHJpdmF0ZSBkaWFsb2dTZXJ2aWNlOiBEaWFsb2dTZXJ2aWNlXHJcbiAgICAsIHByaXZhdGUgZm9ybWF0dGVyU2VydmljZTogRm9ybWF0dGVyU2VydmljZVxyXG4gICAgLCBwcml2YXRlIGZ1bmN0aW9uU2VydmljZTogRnVuY3Rpb25TZXJ2aWNlXHJcbiAgICAsIHByaXZhdGUgZm9ybVNlcnZpY2U6IEZvcm1TZXJ2aWNlXHJcbiAgICAsIHByaXZhdGUgZ2xvYmFsU2VydmljZTogR2xvYmFsU2VydmljZVxyXG4gICAgLCBAT3B0aW9uYWwoKSBwcml2YXRlIHJlZ2lzdGVyOiBSZWdpc3RlclNlcnZpY2VcclxuICAgICwgQE9wdGlvbmFsKCkgcHJpdmF0ZSBzY29wZTogU2NvcGVTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgICB0aGlzLkluaXQoKTtcclxuXHJcbiAgICB0aGlzLmV2YWx1YXRvclByb3ZpZGVycyA9IFtcclxuICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLFxyXG4gICAgICB0aGlzLnRvYXN0U2VydmljZSxcclxuICAgICAgdGhpcy5mdW5jdGlvblNlcnZpY2UsXHJcbiAgICAgIHRoaXMuZm9ybWF0dGVyU2VydmljZSxcclxuICAgICAgdGhpcy5yZWdpc3RlciAgIFxyXG4gICAgXTtcclxuXHJcbiAgICB0aGlzLnByZWRlZmluZWRGdW5jdGlvbnMgPSB0aGlzLmdldFByZWRlZmluZWRGdW5jdGlvbnMoKTtcclxuICB9XHJcblxyXG4gIC8qXHJcbiAgICBHbG9iYWwgUHJvcGVydGllczpcclxuICAgIC0gZmVlbC1kaWFnbm9zdGljczogXCJvblwiLCBcIm9mZlwiXHJcbiAgICAtIGZlZWwtY2FjaGVhYmxlOiBcIm9uXCIsIFwib2ZmXCJcclxuICAqL1xyXG5cclxuICBwcml2YXRlIHByZWRlZmluZWRGdW5jdGlvbnMhOiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xyXG5cclxuICBwcml2YXRlIGRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuXHJcbiAgcHJpdmF0ZSBldmFsdWF0b3JQcm92aWRlcnM6IElFdmFsdWF0b3JQcm92aWRlcltdID0gW107XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KCk7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XHJcbiAgfVxyXG5cclxuICBhZGRFdmFsdWF0b3JQcm92aWRlcnMoZXZhbHVhdG9yUHJvdmlkZXI6IElFdmFsdWF0b3JQcm92aWRlcik6IHZvaWQge1xyXG4gICAgaWYgKGV2YWx1YXRvclByb3ZpZGVyKSB7XHJcbiAgICAgIHRoaXMuZXZhbHVhdG9yUHJvdmlkZXJzLnB1c2goZXZhbHVhdG9yUHJvdmlkZXIpO1xyXG4gICAgICB0aGlzLnByZWRlZmluZWRGdW5jdGlvbnMgPSB0aGlzLmdldFByZWRlZmluZWRGdW5jdGlvbnMoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGlzRXhwcmVzc2lvbih0ZXh0OiBzdHJpbmcgfCBudWxsKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdHlwZW9mIHRleHQgPT09ICdzdHJpbmcnICYmIHRleHQuc3RhcnRzV2l0aChcIj1cIik7XHJcbiAgfTtcclxuXHJcbiAgZ2V0RXhwcmVzc2lvbih0ZXh0OiBzdHJpbmcgfCBudWxsKTogc3RyaW5nIHtcclxuICAgIGlmICh0aGlzLmlzRXhwcmVzc2lvbih0ZXh0KSlcclxuICAgICAgcmV0dXJuIHRleHQhLnN1YnN0cmluZygxKTtcclxuICAgIHJldHVybiBcIlwiO1xyXG4gIH07XHJcblxyXG4gIGV2YWx1YXRlU3RyaW5nKGZvcm1Hcm91cDogRm9ybUdyb3VwLCB2YWx1ZTogc3RyaW5nIHwgbnVsbCwgb3B0aW9uczogRXZhbHVhdGVPcHRpb25zID0ge30pOiBzdHJpbmcge1xyXG4gICAgaWYgKHRoaXMuaXNFeHByZXNzaW9uKHZhbHVlKSkge1xyXG4gICAgICByZXR1cm4gdGhpcy5ldmFsRXhwcmVzc2lvbihmb3JtR3JvdXAsIHRoaXMuZ2V0RXhwcmVzc2lvbih2YWx1ZSksIG9wdGlvbnMpIGFzIHN0cmluZztcclxuICAgIH1cclxuICAgIHJldHVybiB2YWx1ZSA/PyBcIlwiO1xyXG4gIH1cclxuXHJcbiAgZXZhbHVhdGVCb29sZWFuKGZvcm1Hcm91cDogRm9ybUdyb3VwLCB2YWx1ZTogYm9vbGVhbiB8IHN0cmluZyB8IG51bGwsIG9wdGlvbnM6IEV2YWx1YXRlT3B0aW9ucyA9IHt9KTogYm9vbGVhbiB8IG51bGwge1xyXG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ2Jvb2xlYW4nKSB7XHJcbiAgICAgIHJldHVybiB2YWx1ZTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKHRoaXMuaXNFeHByZXNzaW9uKHZhbHVlKSkge1xyXG4gICAgICByZXR1cm4gdGhpcy5ldmFsRXhwcmVzc2lvbihmb3JtR3JvdXAsIHRoaXMuZ2V0RXhwcmVzc2lvbih2YWx1ZSksIG9wdGlvbnMpIGFzIGJvb2xlYW47XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIGV2YWx1YXRlTnVtYmVyKGZvcm1Hcm91cDogRm9ybUdyb3VwLCB2YWx1ZTogbnVtYmVyIHwgc3RyaW5nIHwgbnVsbCwgb3B0aW9uczogRXZhbHVhdGVPcHRpb25zID0ge30pOiBudW1iZXIgfCBudWxsIHtcclxuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInKSB7XHJcbiAgICAgIHJldHVybiB2YWx1ZTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKHRoaXMuaXNFeHByZXNzaW9uKHZhbHVlKSkge1xyXG4gICAgICByZXR1cm4gdGhpcy5ldmFsRXhwcmVzc2lvbihmb3JtR3JvdXAsIHRoaXMuZ2V0RXhwcmVzc2lvbih2YWx1ZSksIG9wdGlvbnMpIGFzIG51bWJlcjtcclxuICAgIH1cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgZXZhbHVhdGUoZm9ybUdyb3VwOiBGb3JtR3JvdXAsIHZhbHVlOiBzdHJpbmcgfCBudWxsLCBvcHRpb25zOiBFdmFsdWF0ZU9wdGlvbnMgPSB7IH0pOiBhbnkge1xyXG4gICAgaWYgKHRoaXMuaXNFeHByZXNzaW9uKHZhbHVlKSkge1xyXG4gICAgICByZXR1cm4gdGhpcy5ldmFsRXhwcmVzc2lvbihmb3JtR3JvdXAsIHRoaXMuZ2V0RXhwcmVzc2lvbih2YWx1ZSksIG9wdGlvbnMpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHZhbHVlO1xyXG4gIH1cclxuXHJcbiAgZXZhbHVhdGVUZW1wbGF0ZShmb3JtR3JvdXA6IEZvcm1Hcm91cCwgdmFsdWU6IHN0cmluZyB8IG51bGwsIG9wdGlvbnM6IEV2YWx1YXRlT3B0aW9ucyA9IHt9KTogYW55IHtcclxuXHJcbiAgICBsZXQgdGVtcGxhdGU6IHN0cmluZyB8IG51bGwgPSBudWxsO1xyXG5cclxuICAgIGlmICh0aGlzLmlzRXhwcmVzc2lvbih2YWx1ZSkpIHtcclxuICAgICAgdGVtcGxhdGUgPSB0aGlzLmV2YWxFeHByZXNzaW9uKGZvcm1Hcm91cCwgdGhpcy5nZXRFeHByZXNzaW9uKHZhbHVlKSwgb3B0aW9ucykgYXMgc3RyaW5nO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHRlbXBsYXRlID0gdmFsdWU7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCF0ZW1wbGF0ZSlcclxuICAgICAgcmV0dXJuIFwiXCI7XHJcblxyXG4gICAgcmV0dXJuIHRoaXMuZXZhbFRlbXBsYXRlKGZvcm1Hcm91cCwgdGVtcGxhdGUsIG9wdGlvbnMpO1xyXG4gIH1cclxuXHJcbiAgZXZhbHVhdGVVbmFyeShmb3JtR3JvdXA6IEZvcm1Hcm91cCwgdmFsdWU6IHN0cmluZyB8IG51bGwsIGlucHV0OiBhbnksIG9wdGlvbnM6IEV2YWx1YXRlT3B0aW9ucyA9IHt9KTogYW55IHtcclxuICAgIGlmICh0aGlzLmlzRXhwcmVzc2lvbih2YWx1ZSkpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuZXZhbFVuYXJ5VGVzdChmb3JtR3JvdXAsIHRoaXMuZ2V0RXhwcmVzc2lvbih2YWx1ZSksIGlucHV0LCBvcHRpb25zKTtcclxuICAgIH1cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgaW52YWxpZGF0ZSh2YWx1ZTogc3RyaW5nIHwgbnVsbCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuaXNFeHByZXNzaW9uKHZhbHVlKSkge1xyXG4gICAgICB0aGlzLmludmFsaWRhdGVFeHByZXNzaW9uKHRoaXMuZ2V0RXhwcmVzc2lvbih2YWx1ZSkpOyAgICAgIFxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgd2F0Y2goZm9ybUdyb3VwOiBGb3JtR3JvdXAsIGRlcGVuZGVuY2llczogKHN0cmluZyB8IHN0cmluZ1tdKVtdLCBjYWxsYmFjazogKCkgPT4gdm9pZCkge1xyXG4gICAgdGhpcy53YXRjaGluZ0RlcGVuZGVuY2llcyhmb3JtR3JvdXAsIGRlcGVuZGVuY2llcywgY2FsbGJhY2spO1xyXG4gIH1cclxuXHJcbiAgZ2V0RGVwZW5kZW5jaWVzKGV4cHJlc3Npb246IHN0cmluZyk6IChzdHJpbmcgfCBzdHJpbmdbXSlbXSB7XHJcbiAgICByZXR1cm4gdGhpcy5mZWVsU2VydmljZS5nZXREZXBlbmRlbmNpZXMoZXhwcmVzc2lvbik7XHJcbiAgfVxyXG5cclxuICBzdWJzY3JpYmVDaGFuZ2VzPFQ+KFxyXG4gICAgb2JzZXJ2YWJsZSQ6IE9ic2VydmFibGU8VD4sXHJcbiAgICBjb250cm9sOiBBYnN0cmFjdENvbnRyb2wsXHJcbiAgICBpbml0aWFsOiBULFxyXG4gICAgY2FsbGJhY2s6ICgoKSA9PiB2b2lkKSB8ICgob2xkVmFsdWU6IFQsIG5ld1ZhbHVlOiBUKSA9PiB2b2lkKSxcclxuICAgIGxvZ0ZuPzogKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCkgPT4gdm9pZCAgICBcclxuICApIHtcclxuICAgIG9ic2VydmFibGUkXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIHN0YXJ0V2l0aChpbml0aWFsKSxcclxuICAgICAgICBwYWlyd2lzZSgpLFxyXG4gICAgICAgIGZpbHRlcigoW29sZFZhbHVlLCBuZXdWYWx1ZV0pID0+IHtcclxuICAgICAgICAgIHJldHVybiBjb250cm9sIGluc3RhbmNlb2YgRm9ybUFycmF5XHJcbiAgICAgICAgICAgIHx8IGNvbnRyb2wgaW5zdGFuY2VvZiBGb3JtR3JvdXBcclxuICAgICAgICAgICAgfHwgb2xkVmFsdWUgIT09IG5ld1ZhbHVlXHJcbiAgICAgICAgfSksXHJcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpXHJcbiAgICAgIClcclxuICAgICAgLnN1YnNjcmliZSgoW29sZFZhbHVlLCBuZXdWYWx1ZV0pID0+IHtcclxuICAgICAgICBxdWV1ZU1pY3JvdGFzaygoKSA9PiB7XHJcbiAgICAgICAgICBpZiAoY2FsbGJhY2subGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgICAgIChjYWxsYmFjayBhcyAoKSA9PiB2b2lkKSgpO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgKGNhbGxiYWNrIGFzIChvbGRWYWx1ZTogVCwgbmV3VmFsdWU6IFQpID0+IHZvaWQpKG9sZFZhbHVlLCBuZXdWYWx1ZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBsb2dGbj8uKGNvbnRyb2wpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIGdldCB2ZXJib3NlKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX3ZlcmJvc2U7XHJcbiAgfVxyXG5cclxuICBnZXQgY2FjaGVhYmxlKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2NhY2hlYWJsZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3ZlcmJvc2UgPSBmYWxzZTtcclxuXHJcbiAgcHJpdmF0ZSBfY2FjaGVhYmxlID0gdHJ1ZTtcclxuXHJcbiAgcHJpdmF0ZSBvbkVycm9ySGFuZGxlcjogYW55ID0gdGhpcy5vbkVycm9yLmJpbmQodGhpcyk7XHJcblxyXG4gIHByaXZhdGUgSW5pdCgpIHtcclxuICAgIHRoaXMuX2NhY2hlYWJsZSA9IHRoaXMuZ2xvYmFsU2VydmljZS5nZXRQcm9wZXJ0eShcImZlZWwtY2FjaGVhYmxlXCIsIFwib25cIikgPT09IFwib25cIjtcclxuICAgIHRoaXMuX3ZlcmJvc2UgPSB0aGlzLmdsb2JhbFNlcnZpY2UuZ2V0UHJvcGVydHkoXCJmZWVsLWRpYWdub3N0aWNzXCIsIFwib2ZmXCIpID09PSBcIm9uXCI7XHJcbiAgICBpZiAodGhpcy52ZXJib3NlKVxyXG4gICAgICBjb25zb2xlLmxvZyhcIlByb2dyYW1tYWJpbGl0eSBTZXJ2aWNlIEluaXRpYWxpemVkXCIsIHsgY2FjaGVhYmxlOiB0aGlzLmNhY2hlYWJsZSwgdmVyYm9zZTogdGhpcy52ZXJib3NlIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBldmFsVW5hcnlUZXN0KGZvcm1Hcm91cDogRm9ybUdyb3VwLCBleHByZXNzaW9uOiBzdHJpbmcsIGlucHV0OiBhbnksIG9wdGlvbnM6IEV2YWx1YXRlT3B0aW9ucyA9IHt9KSB7XHJcbiAgICBjb25zdCBsb2dFcnJvciA9IChleHByZXNzaW9uOiBzdHJpbmcsIGVycm9yOiBhbnkpID0+IHtcclxuICAgICAgY29uc29sZS53YXJuKGV4cHJlc3Npb24sIHsgZm9ybUdyb3VwLCBlcnJvciB9KTtcclxuICAgIH07XHJcblxyXG4gICAgY29uc3QgbG9nRXZhbHVhdGlvbiA9IChleHByZXNzaW9uOiBzdHJpbmcsIHJlc3VsdDogYW55KSA9PiB7XHJcbiAgICAgIGlmICghdGhpcy52ZXJib3NlKSByZXR1cm47XHJcbiAgICAgIGNvbnNvbGUubG9nKFwiRXZhbHVhdGUgVW5hcnlUZXN0OlwiLCBleHByZXNzaW9uLCByZXN1bHQsIHsgZm9ybUdyb3VwIH0pO1xyXG4gICAgfTtcclxuXHJcbiAgICB0cnkge1xyXG4gICAgICBjb25zdCByZXN1bHQgPSB0aGlzLmZlZWxTZXJ2aWNlLmV2YWxVbmFyeVRlc3QoZXhwcmVzc2lvblxyXG4gICAgICAgICwgdGhpcy5nZXRDb250ZXh0KGZvcm1Hcm91cCwgb3B0aW9ucylcclxuICAgICAgICAsIGlucHV0KTtcclxuICAgICAgbG9nRXZhbHVhdGlvbihleHByZXNzaW9uLCByZXN1bHQpO1xyXG4gICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICBsb2dFcnJvcihleHByZXNzaW9uLCBlKTtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGV2YWxFeHByZXNzaW9uKGZvcm1Hcm91cDogRm9ybUdyb3VwLCBleHByZXNzaW9uOiBzdHJpbmcsIG9wdGlvbnM6IEV2YWx1YXRlT3B0aW9ucyA9IHt9KTogYW55IHtcclxuXHJcbiAgICBjb25zdCBsb2dFcnJvciA9IChleHByZXNzaW9uOiBzdHJpbmcsIGVycm9yOiBhbnkpID0+IHtcclxuICAgICAgY29uc29sZS53YXJuKGV4cHJlc3Npb24sIHsgZm9ybUdyb3VwLCBvcHRpb25zLCBlcnJvciB9KTtcclxuICAgIH07XHJcblxyXG4gICAgY29uc3QgbG9nSW52YWxpZGF0ZSA9IChleHByZXNzaW9uOiBzdHJpbmcpID0+IHtcclxuICAgICAgaWYgKCF0aGlzLnZlcmJvc2UpIHJldHVybjtcclxuICAgICAgY29uc29sZS5sb2coXCJJbnZhbGlkYXRlIEV4cHJlc3Npb246XCIsIGV4cHJlc3Npb24sIHsgZm9ybUdyb3VwLCBvcHRpb25zIH0pO1xyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdCBsb2dFdmFsdWF0aW9uID0gKGV4cHJlc3Npb246IHN0cmluZywgcmVzdWx0OiBhbnkpID0+IHtcclxuICAgICAgaWYgKCF0aGlzLnZlcmJvc2UpIHJldHVybjtcclxuICAgICAgY29uc29sZS5sb2coXCJFdmFsdWF0ZSBFeHByZXNzaW9uOlwiLCBleHByZXNzaW9uLCByZXN1bHQsIHsgZm9ybUdyb3VwLCBvcHRpb25zIH0pO1xyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdCBldmFsdWF0ZSA9ICgpID0+IHtcclxuICAgICAgdHJ5IHtcclxuICAgICAgICBjb25zdCByZXN1bHQgPSB0aGlzLmZlZWxTZXJ2aWNlLmV2YWxFeHByZXNzaW9uKGV4cHJlc3Npb25cclxuICAgICAgICAgICwgdGhpcy5nZXRDb250ZXh0KGZvcm1Hcm91cCwgb3B0aW9ucykpO1xyXG4gICAgICAgIGxvZ0V2YWx1YXRpb24oZXhwcmVzc2lvbiwgcmVzdWx0KTtcclxuICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgICB9XHJcbiAgICAgIGNhdGNoIChlKSB7XHJcbiAgICAgICAgbG9nRXJyb3IoZXhwcmVzc2lvbiwgZSk7XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgIH1cclxuICAgIH07XHJcblxyXG4gICAgY29uc3QgY2FjaGVhYmxlID0gb3B0aW9ucy5jYWNoZWFibGUgPz8gdGhpcy5jYWNoZWFibGU7XHJcblxyXG4gICAgaWYgKGNhY2hlYWJsZSkge1xyXG5cclxuICAgICAgY29uc3QgaWdub3JlRGVwcyA9IG9wdGlvbnMuaWdub3JlRGVwcyA/PyBmYWxzZTtcclxuXHJcbiAgICAgIGlmICghaWdub3JlRGVwcykge1xyXG4gICAgICAgIGNvbnN0IHdhdGNoS2V5ID0gYDp3YXRjaCgke2V4cHJlc3Npb259KWA7XHJcblxyXG4gICAgICAgIHRoaXMud2Vha1NlcnZpY2UuY2FsbCh0aGlzLCB3YXRjaEtleSwgKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy53YXRjaGluZ0V4cHJlc3Npb24oZm9ybUdyb3VwLCBleHByZXNzaW9uXHJcbiAgICAgICAgICAgICwgKCkgPT4ge1xyXG4gICAgICAgICAgICAgIHRoaXMuaW52YWxpZGF0ZUV4cHJlc3Npb24oZXhwcmVzc2lvbik7XHJcbiAgICAgICAgICAgICAgbG9nSW52YWxpZGF0ZShleHByZXNzaW9uKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgICBcclxuICAgICAgcmV0dXJuIHRoaXMud2Vha1NlcnZpY2UuY2FsbCh0aGlzLCBleHByZXNzaW9uLCBldmFsdWF0ZSwgbnVsbCwgdGhpcy5vbkVycm9ySGFuZGxlcik7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgcmV0dXJuIGV2YWx1YXRlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGV2YWxUZW1wbGF0ZShmb3JtR3JvdXA6IEZvcm1Hcm91cCwgZXhwcmVzc2lvbjogc3RyaW5nLCBvcHRpb25zOiBFdmFsdWF0ZU9wdGlvbnMgPSB7fSk6IGFueSB7XHJcblxyXG4gICAgY29uc3QgbG9nRXJyb3IgPSAoZXhwcmVzc2lvbjogc3RyaW5nLCBlcnJvcjogYW55KSA9PiB7XHJcbiAgICAgIGNvbnNvbGUud2FybihleHByZXNzaW9uLCB7IGZvcm1Hcm91cCwgb3B0aW9ucywgZXJyb3IgfSk7XHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnN0IGxvZ0ludmFsaWRhdGUgPSAoZXhwcmVzc2lvbjogc3RyaW5nKSA9PiB7XHJcbiAgICAgIGlmICghdGhpcy52ZXJib3NlKSByZXR1cm47XHJcbiAgICAgIGNvbnNvbGUubG9nKFwiSW52YWxpZGF0ZSBUZW1wbGF0ZTpcIiwgZXhwcmVzc2lvbiwgeyBmb3JtR3JvdXAsIG9wdGlvbnMgfSk7XHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnN0IGxvZ0V2YWx1YXRpb24gPSAoZXhwcmVzc2lvbjogc3RyaW5nLCByZXN1bHQ6IGFueSkgPT4ge1xyXG4gICAgICBpZiAoIXRoaXMudmVyYm9zZSkgcmV0dXJuO1xyXG4gICAgICBjb25zb2xlLmxvZyhcIkV2YWx1YXRlIFRlbXBsYXRlOlwiLCBleHByZXNzaW9uLCByZXN1bHQsIHsgZm9ybUdyb3VwLCBvcHRpb25zIH0pO1xyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdCBldmFsdWF0ZSA9ICgpID0+IHtcclxuICAgICAgdHJ5IHtcclxuICAgICAgICBjb25zdCByZXN1bHQgPSB0aGlzLmZlZWxTZXJ2aWNlLmV2YWxUZW1wbGF0ZShleHByZXNzaW9uXHJcbiAgICAgICAgICAsIHRoaXMuZ2V0Q29udGV4dChmb3JtR3JvdXApKTtcclxuICAgICAgICBsb2dFdmFsdWF0aW9uKGV4cHJlc3Npb24sIHJlc3VsdCk7XHJcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgICAgfVxyXG4gICAgICBjYXRjaCAoZSkge1xyXG4gICAgICAgIGxvZ0Vycm9yKGV4cHJlc3Npb24sIGUpO1xyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICB9XHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnN0IGNhY2hlYWJsZSA9IG9wdGlvbnMuY2FjaGVhYmxlID8/IHRoaXMuY2FjaGVhYmxlO1xyXG4gICAgXHJcbiAgICBpZiAoY2FjaGVhYmxlKSB7XHJcbiAgICAgIGNvbnN0IHdhdGNoS2V5ID0gYDp3YXRjaFRlbXBsYXRlKCR7ZXhwcmVzc2lvbn0pYDtcclxuXHJcbiAgICAgIHRoaXMud2Vha1NlcnZpY2UuY2FsbCh0aGlzLCB3YXRjaEtleSwgKCkgPT4ge1xyXG4gICAgICAgIHRoaXMud2F0Y2hpbmdUZW1wbGF0ZUV4cHJlc3Npb24oZm9ybUdyb3VwLCBleHByZXNzaW9uXHJcbiAgICAgICAgICAsICgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5pbnZhbGlkYXRlRXhwcmVzc2lvbihleHByZXNzaW9uKTtcclxuICAgICAgICAgICAgbG9nSW52YWxpZGF0ZShleHByZXNzaW9uKTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIHJldHVybiB0aGlzLndlYWtTZXJ2aWNlLmNhbGwodGhpcywgZXhwcmVzc2lvbiwgZXZhbHVhdGUpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHJldHVybiBldmFsdWF0ZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBvbkVycm9yKHJlc3VsdDogYW55KTogYW55IHtcclxuICAgIGlmIChpc09ic2VydmFibGUocmVzdWx0KSkge1xyXG4gICAgICByZXR1cm4gcmVzdWx0LnBpcGUoXHJcbiAgICAgICAgdGFwKHtcclxuICAgICAgICAgIGVycm9yOiBlcnIgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnRvYXN0U2VydmljZS5ub3RpZnlFcnJvcihlcnIubWVzc2FnZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICAgKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRQcmVkZWZpbmVkRnVuY3Rpb25zKCk6IFJlY29yZDxzdHJpbmcsIGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuZXZhbHVhdG9yUHJvdmlkZXJzLnJlZHVjZSgoYWNjLCBwcm92aWRlcikgPT4ge1xyXG4gICAgICByZXR1cm4ge1xyXG4gICAgICAgIC4uLmFjYyxcclxuICAgICAgICAuLi5wcm92aWRlci5nZXRDb250ZXh0KClcclxuICAgICAgfTtcclxuICAgIH0sIHt9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0Rm9ybUZ1bmN0aW9ucyhmb3JtR3JvdXA6IEZvcm1Hcm91cCB8IG51bGwpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLmZvcm1TZXJ2aWNlLmdldENvbnRleHQoZm9ybUdyb3VwKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0UGFyZW50Q29udGV4dChmb3JtR3JvdXA6IEZvcm1Hcm91cCB8IG51bGwpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgbnVsbCB7XHJcbiAgICBpZiAoZm9ybUdyb3VwID09PSBudWxsKSB7IFxyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBwYXJlbnQgPSB0aGlzLmdldFBhcmVudChmb3JtR3JvdXApO1xyXG5cclxuICAgIGlmICghcGFyZW50KSB7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xyXG5cclxuICAgIHJldHVybiB7XHJcbiAgICAgIC4uLnBhcmVudC52YWx1ZSxcclxuICAgICAgZm9ybUdyb3VwOiAoKSA9PiB0b1Byb3h5KHBhcmVudCksICAgICAgXHJcbiAgICAgIGdldCBwYXJlbnQoKSB7IHJldHVybiBzZWxmLmdldFBhcmVudENvbnRleHQocGFyZW50KTsgfSxcclxuICAgIH07ICAgIFxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRSb290Q29udGV4dChmb3JtR3JvdXA6IEZvcm1Hcm91cCB8IG51bGwpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgbnVsbCB7XHJcbiAgICBpZiAoZm9ybUdyb3VwID09PSBudWxsKSB7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICBjb25zdCByb290ID0gZm9ybUdyb3VwPy5yb290O1xyXG5cclxuICAgIGlmICghcm9vdCkge1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gcm9vdC52YWx1ZTsgICAgXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldFBhcmVudChmb3JtR3JvdXA6IEZvcm1Hcm91cCkgOiBGb3JtR3JvdXAgfCBudWxsIHtcclxuICAgIGxldCBwYXJlbnQgPSBmb3JtR3JvdXAucGFyZW50O1xyXG5cclxuICAgIHdoaWxlIChwYXJlbnQgaW5zdGFuY2VvZiBGb3JtQXJyYXkpIHtcclxuICAgICAgcGFyZW50ID0gcGFyZW50Py5wYXJlbnQ7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHBhcmVudCBhcyBGb3JtR3JvdXAgfCBudWxsO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRDb250ZXh0KGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCwgb3B0aW9uczogRXZhbHVhdGVPcHRpb25zID0ge30pOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHtcclxuXHJcbiAgICBjb25zdCBmb3JtR3JvdXAgPSBjb250cm9sIGFzIEZvcm1Hcm91cCB8IG51bGw7XHJcblxyXG4gICAgY29uc3QgYmFzZUNvbnRleHQgPSBmb3JtR3JvdXA/LnZhbHVlID8/IHsgfTtcclxuXHJcbiAgICBjb25zdCBzZWxmID0gdGhpcztcclxuXHJcbiAgICBsZXQgY29udGV4dCA9IHtcclxuICAgICAgZ2V0IGNvbnNvbGUoKSB7IHJldHVybiB0b1Byb3h5KGNvbnNvbGUpOyB9LFxyXG4gICAgICBnZXQgcGFyZW50KCkgeyByZXR1cm4gc2VsZi5nZXRQYXJlbnRDb250ZXh0KGZvcm1Hcm91cCk7IH0sXHJcbiAgICAgIGdldCByb290KCkgeyByZXR1cm4gc2VsZi5nZXRSb290Q29udGV4dChmb3JtR3JvdXApOyB9LFxyXG4gICAgICBmb3JtR3JvdXA6ICgpID0+IHRvUHJveHkoZm9ybUdyb3VwKSxcclxuICAgICAgXzogdGhpcy5zY29wZT8uZ2V0Q29udGV4dCgpLFxyXG4gICAgICAuLi5iYXNlQ29udGV4dCxcclxuICAgICAgZm46IHtcclxuICAgICAgICAuLi50aGlzLnByZWRlZmluZWRGdW5jdGlvbnMsXHJcbiAgICAgICAgLi4udGhpcy5nZXRGb3JtRnVuY3Rpb25zKGZvcm1Hcm91cCksXHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpZiAob3B0aW9ucy5leHRlbmRDb250ZXh0KSB7XHJcbiAgICAgIGNvbnN0IGV4dGVuZGVkID0gb3B0aW9ucy5leHRlbmRDb250ZXh0KCk7XHJcbiAgICAgIGlmIChleHRlbmRlZCkge1xyXG4gICAgICAgIGNvbnRleHQgPSB7XHJcbiAgICAgICAgICAuLi5jb250ZXh0LFxyXG4gICAgICAgICAgLi4uZXh0ZW5kZWRcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gY29udGV4dDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgd2F0Y2hpbmdFeHByZXNzaW9uKGZvcm1Hcm91cDogRm9ybUdyb3VwLCBleHByZXNzaW9uOiBzdHJpbmcsIGNhbGxiYWNrOiAoKSA9PiB2b2lkKTogdm9pZCB7XHJcbiAgICBjb25zdCBsb2dEZXBlbmRlbmNpZXMgPSAoZGVwZW5kZW5jaWVzOiBhbnkpID0+IHtcclxuICAgICAgaWYgKCF0aGlzLnZlcmJvc2UpIHJldHVybjtcclxuICAgICAgY29uc29sZS5sb2coXCJHZXQgRGVwZW5kZW5jaWVzOlwiLCBleHByZXNzaW9uLCBkZXBlbmRlbmNpZXMsIHsgZm9ybUdyb3VwIH0pO1xyXG4gICAgfTtcclxuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoZm9ybUdyb3VwKTtcclxuICAgIGNvbnN0IGRlcGVuZGVuY2llcyA9IHRoaXMuZmVlbFNlcnZpY2UuZ2V0RGVwZW5kZW5jaWVzKGV4cHJlc3Npb24sIGNvbnRleHQpO1xyXG4gICAgbG9nRGVwZW5kZW5jaWVzKGRlcGVuZGVuY2llcyk7XHJcbiAgICB0aGlzLndhdGNoaW5nRGVwZW5kZW5jaWVzKGZvcm1Hcm91cCwgZGVwZW5kZW5jaWVzLCBjYWxsYmFjayk7XHJcbiAgfTtcclxuXHJcbiAgcHJpdmF0ZSB3YXRjaGluZ1RlbXBsYXRlRXhwcmVzc2lvbihmb3JtR3JvdXA6IEZvcm1Hcm91cCwgZXhwcmVzc2lvbjogc3RyaW5nLCBjYWxsYmFjazogKCkgPT4gdm9pZCk6IHZvaWQge1xyXG4gICAgY29uc3QgbG9nRGVwZW5kZW5jaWVzID0gKGRlcGVuZGVuY2llczogYW55KSA9PiB7XHJcbiAgICAgIGlmICghdGhpcy52ZXJib3NlKSByZXR1cm47XHJcbiAgICAgIGNvbnNvbGUubG9nKFwiR2V0IFRlbXBsYXRlIERlcGVuZGVuY2llczpcIiwgZXhwcmVzc2lvbiwgZGVwZW5kZW5jaWVzLCB7IGZvcm1Hcm91cCB9KTtcclxuICAgIH07XHJcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KGZvcm1Hcm91cCk7XHJcbiAgICBjb25zdCBkZXBlbmRlbmNpZXMgPSB0aGlzLmZlZWxTZXJ2aWNlLmdldFRlbXBsYXRlRGVwZW5kZW5jaWVzKGV4cHJlc3Npb24sIGNvbnRleHQpO1xyXG4gICAgbG9nRGVwZW5kZW5jaWVzKGRlcGVuZGVuY2llcyk7XHJcbiAgICB0aGlzLndhdGNoaW5nRGVwZW5kZW5jaWVzKGZvcm1Hcm91cCwgZGVwZW5kZW5jaWVzLCBjYWxsYmFjayk7XHJcbiAgfTtcclxuXHJcbiAgcHJpdmF0ZSB3YXRjaGluZ0RlcGVuZGVuY2llcyhmb3JtR3JvdXA6IEZvcm1Hcm91cCwgZGVwZW5kZW5jaWVzOiAoc3RyaW5nIHwgc3RyaW5nW10pW10sIGNhbGxiYWNrOiAoKSA9PiB2b2lkKTogdm9pZCB7XHJcbiAgICBjb25zdCBsb2dXYXRjaGluZyA9IChkZXBlbmRlbmNlOiBhbnkpID0+IHtcclxuICAgICAgaWYgKCF0aGlzLnZlcmJvc2UpIHJldHVybjtcclxuICAgICAgY29uc3QgdGV4dCA9IEFycmF5LmlzQXJyYXkoZGVwZW5kZW5jZSkgPyBkZXBlbmRlbmNlLmpvaW4oXCIuXCIpIDogZGVwZW5kZW5jZTtcclxuICAgICAgY29uc29sZS5sb2coXCJXYXRjaGluZyBkZXBlbmRlbmNlOlwiLCB0ZXh0LCB7IGZvcm1Hcm91cCB9KTtcclxuICAgIH07XHJcblxyXG4gICAgY29uc3QgbG9nVmFsdWVDaGFuZ2VkID0gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCkgPT4ge1xyXG4gICAgICBpZiAoIXRoaXMudmVyYm9zZSkgcmV0dXJuO1xyXG4gICAgICBjb25zb2xlLmxvZyhcIlZhbHVlIENoYW5nZWQ6XCIsIGNvbnRyb2wudmFsdWUsIHsgcGF0aDogdGhpcy5nZXRQYXRoKGNvbnRyb2wpLCBjb250cm9sIH0pO1xyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdCBsb2dTdGF0dXNDaGFuZ2VkID0gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCkgPT4ge1xyXG4gICAgICBpZiAoIXRoaXMudmVyYm9zZSkgcmV0dXJuO1xyXG4gICAgICBjb25zb2xlLmxvZyhcIlN0YXR1cyBDaGFuZ2VkOlwiLCBjb250cm9sLnN0YXR1cywgeyBwYXRoOiB0aGlzLmdldFBhdGgoY29udHJvbCksIGNvbnRyb2wgfSk7XHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnN0IGxvZ1Njb3BlUmVmcmVzaGVkID0gKHBhdGg6IFBhdGgpID0+IHtcclxuICAgICAgaWYgKCF0aGlzLnZlcmJvc2UpIHJldHVybjtcclxuICAgICAgY29uc29sZS5sb2coXCJTY29wZSBSZWZyZXNoZWQ6IFwiLCBwYXRoKTtcclxuICAgIH07XHJcblxyXG4gICAgY29uc3QgdmFsdWVTdWJzY3JpYmUgPSAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKSA9PiB7XHJcbiAgICAgIHRoaXMuc3Vic2NyaWJlQ2hhbmdlcyhjb250cm9sLnZhbHVlQ2hhbmdlcywgY29udHJvbCwgY29udHJvbC52YWx1ZSwgY2FsbGJhY2ssIGxvZ1ZhbHVlQ2hhbmdlZCk7XHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnN0IHN0YXR1c1N1YnNjcmliZSA9IChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpID0+IHtcclxuICAgICAgdGhpcy5zdWJzY3JpYmVDaGFuZ2VzPEZvcm1Db250cm9sU3RhdHVzPih0aGlzLmZvcm1TZXJ2aWNlLnN0YXR1c0NoYW5nZXMoY29udHJvbCwgY2FsbGJhY2spLCBjb250cm9sLCBjb250cm9sLnN0YXR1cywgY2FsbGJhY2ssIGxvZ1N0YXR1c0NoYW5nZWQpO1xyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdCBzdWJzY3JpYmVTY29wZSA9IChkZXBlbmRlbmNlOiBQYXRoKSA9PiB7XHJcbiAgICAgIHRoaXMuc2NvcGUub25SZWZyZXNoXHJcbiAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAgIC5zdWJzY3JpYmUoKHBhdGgpID0+IHtcclxuICAgICAgICAgIGlmIChtYXRjaFBhdGgocGF0aCwgZGVwZW5kZW5jZSkpe1xyXG4gICAgICAgICAgICBjYWxsYmFjaygpO1xyXG4gICAgICAgICAgICBsb2dTY29wZVJlZnJlc2hlZChkZXBlbmRlbmNlKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgbG9nV2F0Y2hpbmcoZGVwZW5kZW5jZSk7XHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnN0IHN1YnNjcmliZUNvbnRyb2wgPSAoY29udHJvbDogQWJzdHJhY3RDb250cm9sXHJcbiAgICAgICwgc3RhdHVzOiBib29sZWFuXHJcbiAgICAgICwgZGVwZW5kZW5jZTogc3RyaW5nIHwgc3RyaW5nW11cclxuICAgICkgPT4ge1xyXG4gICAgICBpZiAoIXN0YXR1cykge1xyXG4gICAgICAgIHZhbHVlU3Vic2NyaWJlKGNvbnRyb2wpO1xyXG4gICAgICAgIGxvZ1dhdGNoaW5nKGRlcGVuZGVuY2UpO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIHN0YXR1c1N1YnNjcmliZShjb250cm9sKTtcclxuICAgICAgICBsb2dXYXRjaGluZyhkZXBlbmRlbmNlKTtcclxuICAgICAgfVxyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdCBpc1Njb3BlID0gKHBhdGg6IHN0cmluZyB8IHN0cmluZ1tdKTogcGF0aCBpcyBzdHJpbmdbXSA9PiB7XHJcbiAgICAgIHJldHVybiBBcnJheS5pc0FycmF5KHBhdGgpICYmIHBhdGgubGVuZ3RoID4gMCAmJiBwYXRoWzBdID09PSBcIl9cIjtcclxuICAgIH07XHJcblxyXG4gICAgZm9yIChjb25zdCBkZXBlbmRlbmNlIG9mIGRlcGVuZGVuY2llcykge1xyXG4gICAgICBjb25zdCBbcGF0aCwgc3RhdHVzXSA9IHRoaXMucHJvY2Vzc0RlcGVuZGVuY2llcyhkZXBlbmRlbmNlKTtcclxuICAgICAgaWYgKGlzU2NvcGUocGF0aCkpIHtcclxuICAgICAgICBzdWJzY3JpYmVTY29wZShwYXRoLnNwbGljZSgxKSk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgY29uc3QgY29udHJvbCA9IHRoaXMuZm9ybVNlcnZpY2UuZ2V0Q29udHJvbChmb3JtR3JvdXAsIHBhdGgsIHsgYnJlYWtPbkFycmF5OiB0cnVlIH0pO1xyXG4gICAgICAgIGlmIChjb250cm9sKSB7XHJcbiAgICAgICAgICBzdWJzY3JpYmVDb250cm9sKGNvbnRyb2wsIHN0YXR1cywgZGVwZW5kZW5jZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5mb3JtU2VydmljZS53YWl0Rm9yQ29udHJvbChmb3JtR3JvdXAsIHBhdGgsIHsgYnJlYWtPbkFycmF5OiB0cnVlIH0pXHJcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgICAgICAgLnN1YnNjcmliZShjb250cm9sID0+IHtcclxuICAgICAgICAgICAgICBzdWJzY3JpYmVDb250cm9sKGNvbnRyb2wsIHN0YXR1cywgZGVwZW5kZW5jZSk7XHJcbiAgICAgICAgICAgICAgY2FsbGJhY2soKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9ICAgIFxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpbnZhbGlkYXRlRXhwcmVzc2lvbihleHByZXNzaW9uOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMud2Vha1NlcnZpY2UuaW52YWxpZGF0ZSh0aGlzLCBleHByZXNzaW9uKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcHJvY2Vzc0RlcGVuZGVuY2llcyhkZXBlbmRlbmN5OiBzdHJpbmcgfCBzdHJpbmdbXSk6IFtzdHJpbmcgfCBzdHJpbmdbXSwgYm9vbGVhbl0ge1xyXG4gICAgY29uc3Qgc3RhdHVzRGVwZW5kZW5jeSA9IEFycmF5LmlzQXJyYXkoZGVwZW5kZW5jeSlcclxuICAgICAgJiYgZGVwZW5kZW5jeS5sZW5ndGggPiAxXHJcbiAgICAgICYmIGRlcGVuZGVuY3lbMF0gPT09IFN0YXR1c0RlcGVuZGVuY3k7XHJcblxyXG4gICAgcmV0dXJuIHN0YXR1c0RlcGVuZGVuY3lcclxuICAgICAgPyBbZGVwZW5kZW5jeS5zbGljZSgxKSwgdHJ1ZV1cclxuICAgICAgOiBbZGVwZW5kZW5jeSwgZmFsc2VdO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRQYXRoKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5mb3JtU2VydmljZS5nZXRQYXRoKGNvbnRyb2wpLmpvaW4oXCIuXCIpO1xyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJRXZhbHVhdG9yUHJvdmlkZXIge1xyXG4gIGdldENvbnRleHQoc2NvcGU/OiBhbnkpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEV2YWx1YXRlT3B0aW9ucyB7XHJcbiAgY2FjaGVhYmxlPzogYm9vbGVhbjtcclxuICBpZ25vcmVEZXBzPzogYm9vbGVhbjtcclxuICBleHRlbmRDb250ZXh0PzogRXh0ZW5kQ29udGV4dEZuO1xyXG59XHJcblxyXG5leHBvcnQgdHlwZSBFeHRlbmRDb250ZXh0Rm4gPSAoKSA9PiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xyXG4iXX0=
|
|
486
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZ3JhbW1hYmlsaXR5LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc2lyaW8vc3JjL2xpYi9zZXJ2aWNlcy9wcm9ncmFtbWFiaWxpdHkuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFhLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNoRSxPQUFPLEVBQW1CLFNBQVMsRUFBcUIsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFXMUYsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3pDLE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBYyxNQUFNLE1BQU0sQ0FBQztBQUNwRSxPQUFPLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEUsT0FBTyxFQUFRLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7Ozs7Ozs7QUFFakQsTUFBTSxnQkFBZ0IsR0FBRyxTQUFTLENBQUM7QUFHbkMsTUFBTSxPQUFPLHNCQUFzQjtJQUViO0lBQ1I7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDWTtJQUNBO0lBVHhCLFlBQW9CLFdBQXdCLEVBQ2hDLFdBQXdCLEVBQ3hCLFlBQTBCLEVBQzFCLGFBQTRCLEVBQzVCLGdCQUFrQyxFQUNsQyxlQUFnQyxFQUNoQyxXQUF3QixFQUN4QixhQUE0QixFQUNoQixRQUF5QixFQUN6QixLQUFtQjtRQVR2QixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUNoQyxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUMxQixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUM1QixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLG9CQUFl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QU0sR0FBRyxDQUFDO2VBQ3JCLFVBQVUsQ0FBQyxDQUFDLENBQUMsS0FBSyxnQkFBZ0IsQ0FBQztRQUV4QyxPQUFPLGdCQUFnQjtZQUNyQixDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQztZQUM3QixDQUFDLENBQUMsQ0FBQyxVQUFVLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDMUIsQ0FBQztJQUVPLE9BQU8sQ0FBQyxPQUF3QjtRQUN0QyxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNyRCxDQUFDO3dHQWppQlUsc0JBQXNCOzRHQUF0QixzQkFBc0I7OzRGQUF0QixzQkFBc0I7a0JBRGxDLFVBQVU7OzBCQVdKLFFBQVE7OzBCQUNSLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBPbkRlc3Ryb3ksIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgRm9ybUFycmF5LCBGb3JtQ29udHJvbFN0YXR1cywgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBGZWVsU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2ZlZWwuc2VydmljZSc7XHJcbmltcG9ydCB7IFNjb3BlU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3Njb3BlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBSZWdpc3RlclNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9yZWdpc3Rlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVG9hc3RTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvdG9hc3Quc2VydmljZSc7XHJcbmltcG9ydCB7IEZ1bmN0aW9uU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2Z1bmN0aW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBHbG9iYWxTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvZ2xvYmFsLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBGb3JtU2VydmljZSB9IGZyb20gJy4vZm9ybS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRGlhbG9nU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2RpYWxvZy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRm9ybWF0dGVyU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2Zvcm1hdHRlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgV2Vha1NlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy93ZWFrLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyB0b1Byb3h5IH0gZnJvbSAnLi4vdXRpbHMvcHJveHknO1xyXG5pbXBvcnQgeyBTdWJqZWN0LCB0YWtlVW50aWwsIGlzT2JzZXJ2YWJsZSwgT2JzZXJ2YWJsZSB9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7IGZpbHRlciwgcGFpcndpc2UsIHN0YXJ0V2l0aCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBQYXRoLCBtYXRjaFBhdGggfSBmcm9tICcuLi9jb21tb24vcGF0aCc7XHJcblxyXG5jb25zdCBTdGF0dXNEZXBlbmRlbmN5ID0gXCIkc3RhdHVzXCI7XHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBQcm9ncmFtbWFiaWxpdHlTZXJ2aWNlIGltcGxlbWVudHMgT25EZXN0cm95IHtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBmZWVsU2VydmljZTogRmVlbFNlcnZpY2VcclxuICAgICwgcHJpdmF0ZSB3ZWFrU2VydmljZTogV2Vha1NlcnZpY2VcclxuICAgICwgcHJpdmF0ZSB0b2FzdFNlcnZpY2U6IFRvYXN0U2VydmljZVxyXG4gICAgLCBwcml2YXRlIGRpYWxvZ1NlcnZpY2U6IERpYWxvZ1NlcnZpY2VcclxuICAgICwgcHJpdmF0ZSBmb3JtYXR0ZXJTZXJ2aWNlOiBGb3JtYXR0ZXJTZXJ2aWNlXHJcbiAgICAsIHByaXZhdGUgZnVuY3Rpb25TZXJ2aWNlOiBGdW5jdGlvblNlcnZpY2VcclxuICAgICwgcHJpdmF0ZSBmb3JtU2VydmljZTogRm9ybVNlcnZpY2VcclxuICAgICwgcHJpdmF0ZSBnbG9iYWxTZXJ2aWNlOiBHbG9iYWxTZXJ2aWNlXHJcbiAgICAsIEBPcHRpb25hbCgpIHByaXZhdGUgcmVnaXN0ZXI6IFJlZ2lzdGVyU2VydmljZVxyXG4gICAgLCBAT3B0aW9uYWwoKSBwcml2YXRlIHNjb3BlOiBTY29wZVNlcnZpY2VcclxuICApIHtcclxuICAgIHRoaXMuSW5pdCgpO1xyXG5cclxuICAgIHRoaXMuZXZhbHVhdG9yUHJvdmlkZXJzID0gW1xyXG4gICAgICB0aGlzLmRpYWxvZ1NlcnZpY2UsXHJcbiAgICAgIHRoaXMudG9hc3RTZXJ2aWNlLFxyXG4gICAgICB0aGlzLmZ1bmN0aW9uU2VydmljZSxcclxuICAgICAgdGhpcy5mb3JtYXR0ZXJTZXJ2aWNlLFxyXG4gICAgICB0aGlzLnJlZ2lzdGVyICAgXHJcbiAgICBdO1xyXG5cclxuICAgIHRoaXMucHJlZGVmaW5lZEZ1bmN0aW9ucyA9IHRoaXMuZ2V0UHJlZGVmaW5lZEZ1bmN0aW9ucygpO1xyXG4gIH1cclxuXHJcbiAgLypcclxuICAgIEdsb2JhbCBQcm9wZXJ0aWVzOlxyXG4gICAgLSBmZWVsLWRpYWdub3N0aWNzOiBcIm9uXCIsIFwib2ZmXCJcclxuICAgIC0gZmVlbC1jYWNoZWFibGU6IFwib25cIiwgXCJvZmZcIlxyXG4gICovXHJcblxyXG4gIHByaXZhdGUgcHJlZGVmaW5lZEZ1bmN0aW9ucyE6IFJlY29yZDxzdHJpbmcsIGFueT47XHJcblxyXG4gIHByaXZhdGUgZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG5cclxuICBwcml2YXRlIGV2YWx1YXRvclByb3ZpZGVyczogSUV2YWx1YXRvclByb3ZpZGVyW10gPSBbXTtcclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQoKTtcclxuICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcclxuICB9XHJcblxyXG4gIGFkZEV2YWx1YXRvclByb3ZpZGVycyhldmFsdWF0b3JQcm92aWRlcjogSUV2YWx1YXRvclByb3ZpZGVyKTogdm9pZCB7XHJcbiAgICBpZiAoZXZhbHVhdG9yUHJvdmlkZXIpIHtcclxuICAgICAgdGhpcy5ldmFsdWF0b3JQcm92aWRlcnMucHVzaChldmFsdWF0b3JQcm92aWRlcik7XHJcbiAgICAgIHRoaXMucHJlZGVmaW5lZEZ1bmN0aW9ucyA9IHRoaXMuZ2V0UHJlZGVmaW5lZEZ1bmN0aW9ucygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaXNFeHByZXNzaW9uKHRleHQ6IHN0cmluZyB8IG51bGwpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0eXBlb2YgdGV4dCA9PT0gJ3N0cmluZycgJiYgdGV4dC5zdGFydHNXaXRoKFwiPVwiKTtcclxuICB9O1xyXG5cclxuICBnZXRFeHByZXNzaW9uKHRleHQ6IHN0cmluZyB8IG51bGwpOiBzdHJpbmcge1xyXG4gICAgaWYgKHRoaXMuaXNFeHByZXNzaW9uKHRleHQpKVxyXG4gICAgICByZXR1cm4gdGV4dCEuc3Vic3RyaW5nKDEpO1xyXG4gICAgcmV0dXJuIFwiXCI7XHJcbiAgfTtcclxuXHJcbiAgZXZhbHVhdGVTdHJpbmcoZm9ybUdyb3VwOiBGb3JtR3JvdXAsIHZhbHVlOiBzdHJpbmcgfCBudWxsLCBvcHRpb25zOiBFdmFsdWF0ZU9wdGlvbnMgPSB7fSk6IHN0cmluZyB7XHJcbiAgICBpZiAodGhpcy5pc0V4cHJlc3Npb24odmFsdWUpKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmV2YWxFeHByZXNzaW9uKGZvcm1Hcm91cCwgdGhpcy5nZXRFeHByZXNzaW9uKHZhbHVlKSwgb3B0aW9ucykgYXMgc3RyaW5nO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHZhbHVlID8/IFwiXCI7XHJcbiAgfVxyXG5cclxuICBldmFsdWF0ZUJvb2xlYW4oZm9ybUdyb3VwOiBGb3JtR3JvdXAsIHZhbHVlOiBib29sZWFuIHwgc3RyaW5nIHwgbnVsbCwgb3B0aW9uczogRXZhbHVhdGVPcHRpb25zID0ge30pOiBib29sZWFuIHwgbnVsbCB7XHJcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnYm9vbGVhbicpIHtcclxuICAgICAgcmV0dXJuIHZhbHVlO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAodGhpcy5pc0V4cHJlc3Npb24odmFsdWUpKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmV2YWxFeHByZXNzaW9uKGZvcm1Hcm91cCwgdGhpcy5nZXRFeHByZXNzaW9uKHZhbHVlKSwgb3B0aW9ucykgYXMgYm9vbGVhbjtcclxuICAgIH1cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgZXZhbHVhdGVOdW1iZXIoZm9ybUdyb3VwOiBGb3JtR3JvdXAsIHZhbHVlOiBudW1iZXIgfCBzdHJpbmcgfCBudWxsLCBvcHRpb25zOiBFdmFsdWF0ZU9wdGlvbnMgPSB7fSk6IG51bWJlciB8IG51bGwge1xyXG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicpIHtcclxuICAgICAgcmV0dXJuIHZhbHVlO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAodGhpcy5pc0V4cHJlc3Npb24odmFsdWUpKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmV2YWxFeHByZXNzaW9uKGZvcm1Hcm91cCwgdGhpcy5nZXRFeHByZXNzaW9uKHZhbHVlKSwgb3B0aW9ucykgYXMgbnVtYmVyO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG5cclxuICBldmFsdWF0ZShmb3JtR3JvdXA6IEZvcm1Hcm91cCwgdmFsdWU6IHN0cmluZyB8IG51bGwsIG9wdGlvbnM6IEV2YWx1YXRlT3B0aW9ucyA9IHsgfSk6IGFueSB7XHJcbiAgICBpZiAodGhpcy5pc0V4cHJlc3Npb24odmFsdWUpKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmV2YWxFeHByZXNzaW9uKGZvcm1Hcm91cCwgdGhpcy5nZXRFeHByZXNzaW9uKHZhbHVlKSwgb3B0aW9ucyk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdmFsdWU7XHJcbiAgfVxyXG5cclxuICBldmFsdWF0ZVRlbXBsYXRlKGZvcm1Hcm91cDogRm9ybUdyb3VwLCB2YWx1ZTogc3RyaW5nIHwgbnVsbCwgb3B0aW9uczogRXZhbHVhdGVPcHRpb25zID0ge30pOiBhbnkge1xyXG5cclxuICAgIGxldCB0ZW1wbGF0ZTogc3RyaW5nIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gICAgaWYgKHRoaXMuaXNFeHByZXNzaW9uKHZhbHVlKSkge1xyXG4gICAgICB0ZW1wbGF0ZSA9IHRoaXMuZXZhbEV4cHJlc3Npb24oZm9ybUdyb3VwLCB0aGlzLmdldEV4cHJlc3Npb24odmFsdWUpLCBvcHRpb25zKSBhcyBzdHJpbmc7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgdGVtcGxhdGUgPSB2YWx1ZTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoIXRlbXBsYXRlKVxyXG4gICAgICByZXR1cm4gXCJcIjtcclxuXHJcbiAgICByZXR1cm4gdGhpcy5ldmFsVGVtcGxhdGUoZm9ybUdyb3VwLCB0ZW1wbGF0ZSwgb3B0aW9ucyk7XHJcbiAgfVxyXG5cclxuICBldmFsdWF0ZVVuYXJ5KGZvcm1Hcm91cDogRm9ybUdyb3VwLCB2YWx1ZTogc3RyaW5nIHwgbnVsbCwgaW5wdXQ6IGFueSwgb3B0aW9uczogRXZhbHVhdGVPcHRpb25zID0ge30pOiBhbnkge1xyXG4gICAgaWYgKHRoaXMuaXNFeHByZXNzaW9uKHZhbHVlKSkge1xyXG4gICAgICByZXR1cm4gdGhpcy5ldmFsVW5hcnlUZXN0KGZvcm1Hcm91cCwgdGhpcy5nZXRFeHByZXNzaW9uKHZhbHVlKSwgaW5wdXQsIG9wdGlvbnMpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG5cclxuICBpbnZhbGlkYXRlKHZhbHVlOiBzdHJpbmcgfCBudWxsKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5pc0V4cHJlc3Npb24odmFsdWUpKSB7XHJcbiAgICAgIHRoaXMuaW52YWxpZGF0ZUV4cHJlc3Npb24odGhpcy5nZXRFeHByZXNzaW9uKHZhbHVlKSk7ICAgICAgXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB3YXRjaChmb3JtR3JvdXA6IEZvcm1Hcm91cCwgZGVwZW5kZW5jaWVzOiAoc3RyaW5nIHwgc3RyaW5nW10pW10sIGNhbGxiYWNrOiAoKSA9PiB2b2lkKSB7XHJcbiAgICB0aGlzLndhdGNoaW5nRGVwZW5kZW5jaWVzKGZvcm1Hcm91cCwgZGVwZW5kZW5jaWVzLCBjYWxsYmFjayk7XHJcbiAgfVxyXG5cclxuICBnZXREZXBlbmRlbmNpZXMoZXhwcmVzc2lvbjogc3RyaW5nKTogKHN0cmluZyB8IHN0cmluZ1tdKVtdIHtcclxuICAgIHJldHVybiB0aGlzLmZlZWxTZXJ2aWNlLmdldERlcGVuZGVuY2llcyhleHByZXNzaW9uKTtcclxuICB9XHJcblxyXG4gIHN1YnNjcmliZUNoYW5nZXM8VD4oXHJcbiAgICBvYnNlcnZhYmxlJDogT2JzZXJ2YWJsZTxUPixcclxuICAgIGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCxcclxuICAgIGluaXRpYWw6IFQsXHJcbiAgICBjYWxsYmFjazogKCgpID0+IHZvaWQpIHwgKChvbGRWYWx1ZTogVCwgbmV3VmFsdWU6IFQpID0+IHZvaWQpLFxyXG4gICAgbG9nRm4/OiAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKSA9PiB2b2lkICAgIFxyXG4gICkge1xyXG4gICAgb2JzZXJ2YWJsZSRcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgc3RhcnRXaXRoKGluaXRpYWwpLFxyXG4gICAgICAgIHBhaXJ3aXNlKCksXHJcbiAgICAgICAgZmlsdGVyKChbb2xkVmFsdWUsIG5ld1ZhbHVlXSkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIGNvbnRyb2wgaW5zdGFuY2VvZiBGb3JtQXJyYXlcclxuICAgICAgICAgICAgfHwgY29udHJvbCBpbnN0YW5jZW9mIEZvcm1Hcm91cFxyXG4gICAgICAgICAgICB8fCBvbGRWYWx1ZSAhPT0gbmV3VmFsdWVcclxuICAgICAgICB9KSxcclxuICAgICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95JClcclxuICAgICAgKVxyXG4gICAgICAuc3Vic2NyaWJlKChbb2xkVmFsdWUsIG5ld1ZhbHVlXSkgPT4ge1xyXG4gICAgICAgIHF1ZXVlTWljcm90YXNrKCgpID0+IHtcclxuICAgICAgICAgIGlmIChjYWxsYmFjay5sZW5ndGggPT09IDApIHtcclxuICAgICAgICAgICAgKGNhbGxiYWNrIGFzICgpID0+IHZvaWQpKCk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAoY2FsbGJhY2sgYXMgKG9sZFZhbHVlOiBULCBuZXdWYWx1ZTogVCkgPT4gdm9pZCkob2xkVmFsdWUsIG5ld1ZhbHVlKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGxvZ0ZuPy4oY29udHJvbCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHZlcmJvc2UoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5fdmVyYm9zZTtcclxuICB9XHJcblxyXG4gIGdldCBjYWNoZWFibGUoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5fY2FjaGVhYmxlO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfdmVyYm9zZSA9IGZhbHNlO1xyXG5cclxuICBwcml2YXRlIF9jYWNoZWFibGUgPSB0cnVlO1xyXG5cclxuICBwcml2YXRlIG9uRXJyb3JIYW5kbGVyOiBhbnkgPSB0aGlzLm9uRXJyb3IuYmluZCh0aGlzKTtcclxuXHJcbiAgcHJpdmF0ZSBJbml0KCkge1xyXG4gICAgdGhpcy5fY2FjaGVhYmxlID0gdGhpcy5nbG9iYWxTZXJ2aWNlLmdldFByb3BlcnR5KFwiZmVlbC1jYWNoZWFibGVcIiwgXCJvblwiKSA9PT0gXCJvblwiO1xyXG4gICAgdGhpcy5fdmVyYm9zZSA9IHRoaXMuZ2xvYmFsU2VydmljZS5nZXRQcm9wZXJ0eShcImZlZWwtZGlhZ25vc3RpY3NcIiwgXCJvZmZcIikgPT09IFwib25cIjtcclxuICAgIGlmICh0aGlzLnZlcmJvc2UpXHJcbiAgICAgIGNvbnNvbGUubG9nKFwiUHJvZ3JhbW1hYmlsaXR5IFNlcnZpY2UgSW5pdGlhbGl6ZWRcIiwgeyBjYWNoZWFibGU6IHRoaXMuY2FjaGVhYmxlLCB2ZXJib3NlOiB0aGlzLnZlcmJvc2UgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGV2YWxVbmFyeVRlc3QoZm9ybUdyb3VwOiBGb3JtR3JvdXAsIGV4cHJlc3Npb246IHN0cmluZywgaW5wdXQ6IGFueSwgb3B0aW9uczogRXZhbHVhdGVPcHRpb25zID0ge30pIHtcclxuICAgIGNvbnN0IGxvZ0Vycm9yID0gKGV4cHJlc3Npb246IHN0cmluZywgZXJyb3I6IGFueSkgPT4ge1xyXG4gICAgICBjb25zb2xlLndhcm4oZXhwcmVzc2lvbiwgeyBmb3JtR3JvdXAsIGVycm9yIH0pO1xyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdCBsb2dFdmFsdWF0aW9uID0gKGV4cHJlc3Npb246IHN0cmluZywgcmVzdWx0OiBhbnkpID0+IHtcclxuICAgICAgaWYgKCF0aGlzLnZlcmJvc2UpIHJldHVybjtcclxuICAgICAgY29uc29sZS5sb2coXCJFdmFsdWF0ZSBVbmFyeVRlc3Q6XCIsIGV4cHJlc3Npb24sIHJlc3VsdCwgeyBmb3JtR3JvdXAgfSk7XHJcbiAgICB9O1xyXG5cclxuICAgIHRyeSB7XHJcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMuZmVlbFNlcnZpY2UuZXZhbFVuYXJ5VGVzdChleHByZXNzaW9uXHJcbiAgICAgICAgLCB0aGlzLmdldENvbnRleHQoZm9ybUdyb3VwLCBvcHRpb25zKVxyXG4gICAgICAgICwgaW5wdXQpO1xyXG4gICAgICBsb2dFdmFsdWF0aW9uKGV4cHJlc3Npb24sIHJlc3VsdCk7XHJcbiAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgIGxvZ0Vycm9yKGV4cHJlc3Npb24sIGUpO1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgZXZhbEV4cHJlc3Npb24oZm9ybUdyb3VwOiBGb3JtR3JvdXAsIGV4cHJlc3Npb246IHN0cmluZywgb3B0aW9uczogRXZhbHVhdGVPcHRpb25zID0ge30pOiBhbnkge1xyXG5cclxuICAgIGNvbnN0IGxvZ0Vycm9yID0gKGV4cHJlc3Npb246IHN0cmluZywgZXJyb3I6IGFueSkgPT4ge1xyXG4gICAgICBjb25zb2xlLndhcm4oZXhwcmVzc2lvbiwgeyBmb3JtR3JvdXAsIG9wdGlvbnMsIGVycm9yIH0pO1xyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdCBsb2dJbnZhbGlkYXRlID0gKGV4cHJlc3Npb246IHN0cmluZykgPT4ge1xyXG4gICAgICBpZiAoIXRoaXMudmVyYm9zZSkgcmV0dXJuO1xyXG4gICAgICBjb25zb2xlLmxvZyhcIkludmFsaWRhdGUgRXhwcmVzc2lvbjpcIiwgZXhwcmVzc2lvbiwgeyBmb3JtR3JvdXAsIG9wdGlvbnMgfSk7XHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnN0IGxvZ0V2YWx1YXRpb24gPSAoZXhwcmVzc2lvbjogc3RyaW5nLCByZXN1bHQ6IGFueSkgPT4ge1xyXG4gICAgICBpZiAoIXRoaXMudmVyYm9zZSkgcmV0dXJuO1xyXG4gICAgICBjb25zb2xlLmxvZyhcIkV2YWx1YXRlIEV4cHJlc3Npb246XCIsIGV4cHJlc3Npb24sIHJlc3VsdCwgeyBmb3JtR3JvdXAsIG9wdGlvbnMgfSk7XHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnN0IGV2YWx1YXRlID0gKCkgPT4ge1xyXG4gICAgICB0cnkge1xyXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMuZmVlbFNlcnZpY2UuZXZhbEV4cHJlc3Npb24oZXhwcmVzc2lvblxyXG4gICAgICAgICAgLCB0aGlzLmdldENvbnRleHQoZm9ybUdyb3VwLCBvcHRpb25zKSk7XHJcbiAgICAgICAgbG9nRXZhbHVhdGlvbihleHByZXNzaW9uLCByZXN1bHQpO1xyXG4gICAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICAgIH1cclxuICAgICAgY2F0Y2ggKGUpIHtcclxuICAgICAgICBsb2dFcnJvcihleHByZXNzaW9uLCBlKTtcclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgfVxyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdCBjYWNoZWFibGUgPSBvcHRpb25zLmNhY2hlYWJsZSA/PyB0aGlzLmNhY2hlYWJsZTtcclxuXHJcbiAgICBpZiAoY2FjaGVhYmxlKSB7XHJcblxyXG4gICAgICBjb25zdCBpZ25vcmVEZXBzID0gb3B0aW9ucy5pZ25vcmVEZXBzID8/IGZhbHNlO1xyXG5cclxuICAgICAgaWYgKCFpZ25vcmVEZXBzKSB7XHJcbiAgICAgICAgY29uc3Qgd2F0Y2hLZXkgPSBgOndhdGNoKCR7ZXhwcmVzc2lvbn0pYDtcclxuXHJcbiAgICAgICAgdGhpcy53ZWFrU2VydmljZS5jYWxsKHRoaXMsIHdhdGNoS2V5LCAoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLndhdGNoaW5nRXhwcmVzc2lvbihmb3JtR3JvdXAsIGV4cHJlc3Npb25cclxuICAgICAgICAgICAgLCAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgdGhpcy5pbnZhbGlkYXRlRXhwcmVzc2lvbihleHByZXNzaW9uKTtcclxuICAgICAgICAgICAgICBsb2dJbnZhbGlkYXRlKGV4cHJlc3Npb24pO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICAgIFxyXG4gICAgICByZXR1cm4gdGhpcy53ZWFrU2VydmljZS5jYWxsKHRoaXMsIGV4cHJlc3Npb24sIGV2YWx1YXRlLCBudWxsLCB0aGlzLm9uRXJyb3JIYW5kbGVyKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICByZXR1cm4gZXZhbHVhdGUoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgZXZhbFRlbXBsYXRlKGZvcm1Hcm91cDogRm9ybUdyb3VwLCBleHByZXNzaW9uOiBzdHJpbmcsIG9wdGlvbnM6IEV2YWx1YXRlT3B0aW9ucyA9IHt9KTogYW55IHtcclxuXHJcbiAgICBjb25zdCBsb2dFcnJvciA9IChleHByZXNzaW9uOiBzdHJpbmcsIGVycm9yOiBhbnkpID0+IHtcclxuICAgICAgY29uc29sZS53YXJuKGV4cHJlc3Npb24sIHsgZm9ybUdyb3VwLCBvcHRpb25zLCBlcnJvciB9KTtcclxuICAgIH07XHJcblxyXG4gICAgY29uc3QgbG9nSW52YWxpZGF0ZSA9IChleHByZXNzaW9uOiBzdHJpbmcpID0+IHtcclxuICAgICAgaWYgKCF0aGlzLnZlcmJvc2UpIHJldHVybjtcclxuICAgICAgY29uc29sZS5sb2coXCJJbnZhbGlkYXRlIFRlbXBsYXRlOlwiLCBleHByZXNzaW9uLCB7IGZvcm1Hcm91cCwgb3B0aW9ucyB9KTtcclxuICAgIH07XHJcblxyXG4gICAgY29uc3QgbG9nRXZhbHVhdGlvbiA9IChleHByZXNzaW9uOiBzdHJpbmcsIHJlc3VsdDogYW55KSA9PiB7XHJcbiAgICAgIGlmICghdGhpcy52ZXJib3NlKSByZXR1cm47XHJcbiAgICAgIGNvbnNvbGUubG9nKFwiRXZhbHVhdGUgVGVtcGxhdGU6XCIsIGV4cHJlc3Npb24sIHJlc3VsdCwgeyBmb3JtR3JvdXAsIG9wdGlvbnMgfSk7XHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnN0IGV2YWx1YXRlID0gKCkgPT4ge1xyXG4gICAgICB0cnkge1xyXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMuZmVlbFNlcnZpY2UuZXZhbFRlbXBsYXRlKGV4cHJlc3Npb25cclxuICAgICAgICAgICwgdGhpcy5nZXRDb250ZXh0KGZvcm1Hcm91cCkpO1xyXG4gICAgICAgIGxvZ0V2YWx1YXRpb24oZXhwcmVzc2lvbiwgcmVzdWx0KTtcclxuICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgICB9XHJcbiAgICAgIGNhdGNoIChlKSB7XHJcbiAgICAgICAgbG9nRXJyb3IoZXhwcmVzc2lvbiwgZSk7XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgIH1cclxuICAgIH07XHJcblxyXG4gICAgY29uc3QgY2FjaGVhYmxlID0gb3B0aW9ucy5jYWNoZWFibGUgPz8gdGhpcy5jYWNoZWFibGU7XHJcbiAgICBcclxuICAgIGlmIChjYWNoZWFibGUpIHtcclxuICAgICAgY29uc3Qgd2F0Y2hLZXkgPSBgOndhdGNoVGVtcGxhdGUoJHtleHByZXNzaW9ufSlgO1xyXG5cclxuICAgICAgdGhpcy53ZWFrU2VydmljZS5jYWxsKHRoaXMsIHdhdGNoS2V5LCAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy53YXRjaGluZ1RlbXBsYXRlRXhwcmVzc2lvbihmb3JtR3JvdXAsIGV4cHJlc3Npb25cclxuICAgICAgICAgICwgKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmludmFsaWRhdGVFeHByZXNzaW9uKGV4cHJlc3Npb24pO1xyXG4gICAgICAgICAgICBsb2dJbnZhbGlkYXRlKGV4cHJlc3Npb24pO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgcmV0dXJuIHRoaXMud2Vha1NlcnZpY2UuY2FsbCh0aGlzLCBleHByZXNzaW9uLCBldmFsdWF0ZSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgcmV0dXJuIGV2YWx1YXRlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIG9uRXJyb3IocmVzdWx0OiBhbnkpOiBhbnkge1xyXG4gICAgaWYgKGlzT2JzZXJ2YWJsZShyZXN1bHQpKSB7XHJcbiAgICAgIHJldHVybiByZXN1bHQucGlwZShcclxuICAgICAgICB0YXAoe1xyXG4gICAgICAgICAgZXJyb3I6IGVyciA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMudG9hc3RTZXJ2aWNlLm5vdGlmeUVycm9yKGVyci5tZXNzYWdlKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldFByZWRlZmluZWRGdW5jdGlvbnMoKTogUmVjb3JkPHN0cmluZywgYW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5ldmFsdWF0b3JQcm92aWRlcnMucmVkdWNlKChhY2MsIHByb3ZpZGVyKSA9PiB7XHJcbiAgICAgIHJldHVybiB7XHJcbiAgICAgICAgLi4uYWNjLFxyXG4gICAgICAgIC4uLnByb3ZpZGVyLmdldENvbnRleHQoKVxyXG4gICAgICB9O1xyXG4gICAgfSwge30pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRGZWVsRnVuY3Rpb25zKClcclxuICB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBpc1ZhbGlkRXhwcmVzc2lvbjogdGhpcy5mZWVsU2VydmljZS5pc1ZhbGlkRXhwcmVzc2lvbixcclxuICAgICAgaXNWYWxpZFVuYXJ5VGVzdDogdGhpcy5mZWVsU2VydmljZS5pc1ZhbGlkVW5hcnlUZXN0XHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRGb3JtRnVuY3Rpb25zKGZvcm1Hcm91cDogRm9ybUdyb3VwIHwgbnVsbCk6IFJlY29yZDxzdHJpbmcsIGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuZm9ybVNlcnZpY2UuZ2V0Q29udGV4dChmb3JtR3JvdXApO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRQYXJlbnRDb250ZXh0KGZvcm1Hcm91cDogRm9ybUdyb3VwIHwgbnVsbCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCBudWxsIHtcclxuICAgIGlmIChmb3JtR3JvdXAgPT09IG51bGwpIHsgXHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHBhcmVudCA9IHRoaXMuZ2V0UGFyZW50KGZvcm1Hcm91cCk7XHJcblxyXG4gICAgaWYgKCFwYXJlbnQpIHtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3Qgc2VsZiA9IHRoaXM7XHJcblxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgLi4ucGFyZW50LnZhbHVlLFxyXG4gICAgICBmb3JtR3JvdXA6ICgpID0+IHRvUHJveHkocGFyZW50KSwgICAgICBcclxuICAgICAgZ2V0IHBhcmVudCgpIHsgcmV0dXJuIHNlbGYuZ2V0UGFyZW50Q29udGV4dChwYXJlbnQpOyB9LFxyXG4gICAgfTsgICAgXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldFJvb3RDb250ZXh0KGZvcm1Hcm91cDogRm9ybUdyb3VwIHwgbnVsbCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCBudWxsIHtcclxuICAgIGlmIChmb3JtR3JvdXAgPT09IG51bGwpIHtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIGNvbnN0IHJvb3QgPSBmb3JtR3JvdXA/LnJvb3Q7XHJcblxyXG4gICAgaWYgKCFyb290KSB7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiByb290LnZhbHVlOyAgICBcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0UGFyZW50KGZvcm1Hcm91cDogRm9ybUdyb3VwKSA6IEZvcm1Hcm91cCB8IG51bGwge1xyXG4gICAgbGV0IHBhcmVudCA9IGZvcm1Hcm91cC5wYXJlbnQ7XHJcblxyXG4gICAgd2hpbGUgKHBhcmVudCBpbnN0YW5jZW9mIEZvcm1BcnJheSkge1xyXG4gICAgICBwYXJlbnQgPSBwYXJlbnQ/LnBhcmVudDtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gcGFyZW50IGFzIEZvcm1Hcm91cCB8IG51bGw7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldENvbnRleHQoY29udHJvbDogQWJzdHJhY3RDb250cm9sLCBvcHRpb25zOiBFdmFsdWF0ZU9wdGlvbnMgPSB7fSk6IFJlY29yZDxzdHJpbmcsIGFueT4ge1xyXG5cclxuICAgIGNvbnN0IGZvcm1Hcm91cCA9IGNvbnRyb2wgYXMgRm9ybUdyb3VwIHwgbnVsbDtcclxuXHJcbiAgICBjb25zdCBiYXNlQ29udGV4dCA9IGZvcm1Hcm91cD8udmFsdWUgPz8geyB9O1xyXG5cclxuICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xyXG5cclxuICAgIGxldCBjb250ZXh0ID0ge1xyXG4gICAgICBnZXQgY29uc29sZSgpIHsgcmV0dXJuIHRvUHJveHkoY29uc29sZSk7IH0sXHJcbiAgICAgIGdldCBwYXJlbnQoKSB7IHJldHVybiBzZWxmLmdldFBhcmVudENvbnRleHQoZm9ybUdyb3VwKTsgfSxcclxuICAgICAgZ2V0IHJvb3QoKSB7IHJldHVybiBzZWxmLmdldFJvb3RDb250ZXh0KGZvcm1Hcm91cCk7IH0sXHJcbiAgICAgIGZvcm1Hcm91cDogKCkgPT4gdG9Qcm94eShmb3JtR3JvdXApLFxyXG4gICAgICBfOiB0aGlzLnNjb3BlPy5nZXRDb250ZXh0KCksXHJcbiAgICAgIC4uLmJhc2VDb250ZXh0LFxyXG4gICAgICBmbjoge1xyXG4gICAgICAgIC4uLnRoaXMucHJlZGVmaW5lZEZ1bmN0aW9ucyxcclxuICAgICAgICAuLi50aGlzLmdldEZvcm1GdW5jdGlvbnMoZm9ybUdyb3VwKSxcclxuICAgICAgICAuLi50aGlzLmdldEZlZWxGdW5jdGlvbnMoKVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKG9wdGlvbnMuZXh0ZW5kQ29udGV4dCkge1xyXG4gICAgICBjb25zdCBleHRlbmRlZCA9IG9wdGlvbnMuZXh0ZW5kQ29udGV4dCgpO1xyXG4gICAgICBpZiAoZXh0ZW5kZWQpIHtcclxuICAgICAgICBjb250ZXh0ID0ge1xyXG4gICAgICAgICAgLi4uY29udGV4dCxcclxuICAgICAgICAgIC4uLmV4dGVuZGVkXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGNvbnRleHQ7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHdhdGNoaW5nRXhwcmVzc2lvbihmb3JtR3JvdXA6IEZvcm1Hcm91cCwgZXhwcmVzc2lvbjogc3RyaW5nLCBjYWxsYmFjazogKCkgPT4gdm9pZCk6IHZvaWQge1xyXG4gICAgY29uc3QgbG9nRGVwZW5kZW5jaWVzID0gKGRlcGVuZGVuY2llczogYW55KSA9PiB7XHJcbiAgICAgIGlmICghdGhpcy52ZXJib3NlKSByZXR1cm47XHJcbiAgICAgIGNvbnNvbGUubG9nKFwiR2V0IERlcGVuZGVuY2llczpcIiwgZXhwcmVzc2lvbiwgZGVwZW5kZW5jaWVzLCB7IGZvcm1Hcm91cCB9KTtcclxuICAgIH07XHJcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KGZvcm1Hcm91cCk7XHJcbiAgICBjb25zdCBkZXBlbmRlbmNpZXMgPSB0aGlzLmZlZWxTZXJ2aWNlLmdldERlcGVuZGVuY2llcyhleHByZXNzaW9uLCBjb250ZXh0KTtcclxuICAgIGxvZ0RlcGVuZGVuY2llcyhkZXBlbmRlbmNpZXMpO1xyXG4gICAgdGhpcy53YXRjaGluZ0RlcGVuZGVuY2llcyhmb3JtR3JvdXAsIGRlcGVuZGVuY2llcywgY2FsbGJhY2spO1xyXG4gIH07XHJcblxyXG4gIHByaXZhdGUgd2F0Y2hpbmdUZW1wbGF0ZUV4cHJlc3Npb24oZm9ybUdyb3VwOiBGb3JtR3JvdXAsIGV4cHJlc3Npb246IHN0cmluZywgY2FsbGJhY2s6ICgpID0+IHZvaWQpOiB2b2lkIHtcclxuICAgIGNvbnN0IGxvZ0RlcGVuZGVuY2llcyA9IChkZXBlbmRlbmNpZXM6IGFueSkgPT4ge1xyXG4gICAgICBpZiAoIXRoaXMudmVyYm9zZSkgcmV0dXJuO1xyXG4gICAgICBjb25zb2xlLmxvZyhcIkdldCBUZW1wbGF0ZSBEZXBlbmRlbmNpZXM6XCIsIGV4cHJlc3Npb24sIGRlcGVuZGVuY2llcywgeyBmb3JtR3JvdXAgfSk7XHJcbiAgICB9O1xyXG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dChmb3JtR3JvdXApO1xyXG4gICAgY29uc3QgZGVwZW5kZW5jaWVzID0gdGhpcy5mZWVsU2VydmljZS5nZXRUZW1wbGF0ZURlcGVuZGVuY2llcyhleHByZXNzaW9uLCBjb250ZXh0KTtcclxuICAgIGxvZ0RlcGVuZGVuY2llcyhkZXBlbmRlbmNpZXMpO1xyXG4gICAgdGhpcy53YXRjaGluZ0RlcGVuZGVuY2llcyhmb3JtR3JvdXAsIGRlcGVuZGVuY2llcywgY2FsbGJhY2spO1xyXG4gIH07XHJcblxyXG4gIHByaXZhdGUgd2F0Y2hpbmdEZXBlbmRlbmNpZXMoZm9ybUdyb3VwOiBGb3JtR3JvdXAsIGRlcGVuZGVuY2llczogKHN0cmluZyB8IHN0cmluZ1tdKVtdLCBjYWxsYmFjazogKCkgPT4gdm9pZCk6IHZvaWQge1xyXG4gICAgY29uc3QgbG9nV2F0Y2hpbmcgPSAoZGVwZW5kZW5jZTogYW55KSA9PiB7XHJcbiAgICAgIGlmICghdGhpcy52ZXJib3NlKSByZXR1cm47XHJcbiAgICAgIGNvbnN0IHRleHQgPSBBcnJheS5pc0FycmF5KGRlcGVuZGVuY2UpID8gZGVwZW5kZW5jZS5qb2luKFwiLlwiKSA6IGRlcGVuZGVuY2U7XHJcbiAgICAgIGNvbnNvbGUubG9nKFwiV2F0Y2hpbmcgZGVwZW5kZW5jZTpcIiwgdGV4dCwgeyBmb3JtR3JvdXAgfSk7XHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnN0IGxvZ1ZhbHVlQ2hhbmdlZCA9IChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpID0+IHtcclxuICAgICAgaWYgKCF0aGlzLnZlcmJvc2UpIHJldHVybjtcclxuICAgICAgY29uc29sZS5sb2coXCJWYWx1ZSBDaGFuZ2VkOlwiLCBjb250cm9sLnZhbHVlLCB7IHBhdGg6IHRoaXMuZ2V0UGF0aChjb250cm9sKSwgY29udHJvbCB9KTtcclxuICAgIH07XHJcblxyXG4gICAgY29uc3QgbG9nU3RhdHVzQ2hhbmdlZCA9IChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpID0+IHtcclxuICAgICAgaWYgKCF0aGlzLnZlcmJvc2UpIHJldHVybjtcclxuICAgICAgY29uc29sZS5sb2coXCJTdGF0dXMgQ2hhbmdlZDpcIiwgY29udHJvbC5zdGF0dXMsIHsgcGF0aDogdGhpcy5nZXRQYXRoKGNvbnRyb2wpLCBjb250cm9sIH0pO1xyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdCBsb2dTY29wZVJlZnJlc2hlZCA9IChwYXRoOiBQYXRoKSA9PiB7XHJcbiAgICAgIGlmICghdGhpcy52ZXJib3NlKSByZXR1cm47XHJcbiAgICAgIGNvbnNvbGUubG9nKFwiU2NvcGUgUmVmcmVzaGVkOiBcIiwgcGF0aCk7XHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnN0IHZhbHVlU3Vic2NyaWJlID0gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCkgPT4ge1xyXG4gICAgICB0aGlzLnN1YnNjcmliZUNoYW5nZXMoY29udHJvbC52YWx1ZUNoYW5nZXMsIGNvbnRyb2wsIGNvbnRyb2wudmFsdWUsIGNhbGxiYWNrLCBsb2dWYWx1ZUNoYW5nZWQpO1xyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdCBzdGF0dXNTdWJzY3JpYmUgPSAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKSA9PiB7XHJcbiAgICAgIHRoaXMuc3Vic2NyaWJlQ2hhbmdlczxGb3JtQ29udHJvbFN0YXR1cz4odGhpcy5mb3JtU2VydmljZS5zdGF0dXNDaGFuZ2VzKGNvbnRyb2wsIGNhbGxiYWNrKSwgY29udHJvbCwgY29udHJvbC5zdGF0dXMsIGNhbGxiYWNrLCBsb2dTdGF0dXNDaGFuZ2VkKTtcclxuICAgIH07XHJcblxyXG4gICAgY29uc3Qgc3Vic2NyaWJlU2NvcGUgPSAoZGVwZW5kZW5jZTogUGF0aCkgPT4ge1xyXG4gICAgICB0aGlzLnNjb3BlLm9uUmVmcmVzaFxyXG4gICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgICAuc3Vic2NyaWJlKChwYXRoKSA9PiB7XHJcbiAgICAgICAgICBpZiAobWF0Y2hQYXRoKHBhdGgsIGRlcGVuZGVuY2UpKXtcclxuICAgICAgICAgICAgY2FsbGJhY2soKTtcclxuICAgICAgICAgICAgbG9nU2NvcGVSZWZyZXNoZWQoZGVwZW5kZW5jZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIGxvZ1dhdGNoaW5nKGRlcGVuZGVuY2UpO1xyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdCBzdWJzY3JpYmVDb250cm9sID0gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbFxyXG4gICAgICAsIHN0YXR1czogYm9vbGVhblxyXG4gICAgICAsIGRlcGVuZGVuY2U6IHN0cmluZyB8IHN0cmluZ1tdXHJcbiAgICApID0+IHtcclxuICAgICAgaWYgKCFzdGF0dXMpIHtcclxuICAgICAgICB2YWx1ZVN1YnNjcmliZShjb250cm9sKTtcclxuICAgICAgICBsb2dXYXRjaGluZyhkZXBlbmRlbmNlKTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICBzdGF0dXNTdWJzY3JpYmUoY29udHJvbCk7XHJcbiAgICAgICAgbG9nV2F0Y2hpbmcoZGVwZW5kZW5jZSk7XHJcbiAgICAgIH1cclxuICAgIH07XHJcblxyXG4gICAgY29uc3QgaXNTY29wZSA9IChwYXRoOiBzdHJpbmcgfCBzdHJpbmdbXSk6IHBhdGggaXMgc3RyaW5nW10gPT4ge1xyXG4gICAgICByZXR1cm4gQXJyYXkuaXNBcnJheShwYXRoKSAmJiBwYXRoLmxlbmd0aCA+IDAgJiYgcGF0aFswXSA9PT0gXCJfXCI7XHJcbiAgICB9O1xyXG5cclxuICAgIGZvciAoY29uc3QgZGVwZW5kZW5jZSBvZiBkZXBlbmRlbmNpZXMpIHtcclxuICAgICAgY29uc3QgW3BhdGgsIHN0YXR1c10gPSB0aGlzLnByb2Nlc3NEZXBlbmRlbmNpZXMoZGVwZW5kZW5jZSk7XHJcbiAgICAgIGlmIChpc1Njb3BlKHBhdGgpKSB7XHJcbiAgICAgICAgc3Vic2NyaWJlU2NvcGUocGF0aC5zcGxpY2UoMSkpO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGNvbnN0IGNvbnRyb2wgPSB0aGlzLmZvcm1TZXJ2aWNlLmdldENvbnRyb2woZm9ybUdyb3VwLCBwYXRoLCB7IGJyZWFrT25BcnJheTogdHJ1ZSB9KTtcclxuICAgICAgICBpZiAoY29udHJvbCkge1xyXG4gICAgICAgICAgc3Vic2NyaWJlQ29udHJvbChjb250cm9sLCBzdGF0dXMsIGRlcGVuZGVuY2UpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuZm9ybVNlcnZpY2Uud2FpdEZvckNvbnRyb2woZm9ybUdyb3VwLCBwYXRoLCB7IGJyZWFrT25BcnJheTogdHJ1ZSB9KVxyXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoY29udHJvbCA9PiB7XHJcbiAgICAgICAgICAgICAgc3Vic2NyaWJlQ29udHJvbChjb250cm9sLCBzdGF0dXMsIGRlcGVuZGVuY2UpO1xyXG4gICAgICAgICAgICAgIGNhbGxiYWNrKCk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSAgICBcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaW52YWxpZGF0ZUV4cHJlc3Npb24oZXhwcmVzc2lvbjogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLndlYWtTZXJ2aWNlLmludmFsaWRhdGUodGhpcywgZXhwcmVzc2lvbik7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHByb2Nlc3NEZXBlbmRlbmNpZXMoZGVwZW5kZW5jeTogc3RyaW5nIHwgc3RyaW5nW10pOiBbc3RyaW5nIHwgc3RyaW5nW10sIGJvb2xlYW5dIHtcclxuICAgIGNvbnN0IHN0YXR1c0RlcGVuZGVuY3kgPSBBcnJheS5pc0FycmF5KGRlcGVuZGVuY3kpXHJcbiAgICAgICYmIGRlcGVuZGVuY3kubGVuZ3RoID4gMVxyXG4gICAgICAmJiBkZXBlbmRlbmN5WzBdID09PSBTdGF0dXNEZXBlbmRlbmN5O1xyXG5cclxuICAgIHJldHVybiBzdGF0dXNEZXBlbmRlbmN5XHJcbiAgICAgID8gW2RlcGVuZGVuY3kuc2xpY2UoMSksIHRydWVdXHJcbiAgICAgIDogW2RlcGVuZGVuY3ksIGZhbHNlXTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0UGF0aChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuZm9ybVNlcnZpY2UuZ2V0UGF0aChjb250cm9sKS5qb2luKFwiLlwiKTtcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUV2YWx1YXRvclByb3ZpZGVyIHtcclxuICBnZXRDb250ZXh0KHNjb3BlPzogYW55KTogUmVjb3JkPHN0cmluZywgYW55PjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBFdmFsdWF0ZU9wdGlvbnMge1xyXG4gIGNhY2hlYWJsZT86IGJvb2xlYW47XHJcbiAgaWdub3JlRGVwcz86IGJvb2xlYW47XHJcbiAgZXh0ZW5kQ29udGV4dD86IEV4dGVuZENvbnRleHRGbjtcclxufVxyXG5cclxuZXhwb3J0IHR5cGUgRXh0ZW5kQ29udGV4dEZuID0gKCkgPT4gUmVjb3JkPHN0cmluZywgYW55PjtcclxuIl19
|
|
@@ -10,7 +10,7 @@ export class SanitizeService {
|
|
|
10
10
|
allowedTags: sanitizeHtml.defaults.allowedTags.concat(['img']),
|
|
11
11
|
allowedAttributes: {
|
|
12
12
|
...sanitizeHtml.defaults.allowedAttributes,
|
|
13
|
-
'*': ['style']
|
|
13
|
+
'*': ['style', 'align', 'class', 'id']
|
|
14
14
|
}
|
|
15
15
|
};
|
|
16
16
|
}
|
|
@@ -38,4 +38,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
38
38
|
providedIn: 'root'
|
|
39
39
|
}]
|
|
40
40
|
}], ctorParameters: () => [{ type: i1.DomSanitizer }] });
|
|
41
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
41
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2FuaXRpemUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zaXJpby9zcmMvbGliL3NlcnZpY2VzL3Nhbml0aXplLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLFlBQVksTUFBTSxlQUFlLENBQUM7OztBQUt6QyxNQUFNLE9BQU8sZUFBZTtJQUVOO0lBQXBCLFlBQW9CLFNBQXVCO1FBQXZCLGNBQVMsR0FBVCxTQUFTLENBQWM7UUFFekMsSUFBSSxDQUFDLGNBQWMsR0FBRztZQUNwQixXQUFXLEVBQUUsWUFBWSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDOUQsaUJBQWlCLEVBQUU7Z0JBQ2pCLEdBQUcsWUFBWSxDQUFDLFFBQVEsQ0FBQyxpQkFBaUI7Z0JBQzFDLEdBQUcsRUFBRSxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQzthQUN2QztTQUNGLENBQUM7SUFDSixDQUFDO0lBRUQsWUFBWSxDQUFDLElBQVk7UUFDdkIsT0FBTyxZQUFZLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBQUEsQ0FBQztJQUVGLGdCQUFnQixDQUFDLElBQVk7UUFDM0IsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLHVCQUF1QixDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUN6RSxDQUFDO0lBQUEsQ0FBQztJQUVGLGVBQWUsQ0FBQyxHQUFXO1FBQ3pCLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyw4QkFBOEIsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUM1RCxDQUFDO0lBRUQsUUFBUSxDQUFDLFFBQWtCO1FBQ3pCLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNwRCxDQUFDO0lBRU8sY0FBYyxDQUF5Qjt3R0E3QnBDLGVBQWU7NEdBQWYsZUFBZSxjQUZkLE1BQU07OzRGQUVQLGVBQWU7a0JBSDNCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIsIFNhZmVIdG1sLCBTYWZlUmVzb3VyY2VVcmwgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcclxuaW1wb3J0IHNhbml0aXplSHRtbCBmcm9tICdzYW5pdGl6ZS1odG1sJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIFNhbml0aXplU2VydmljZSB7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgc2FuaXRpemVyOiBEb21TYW5pdGl6ZXIpXHJcbiAge1xyXG4gICAgdGhpcy5zYW5pdGl6ZU9wdGlvbiA9IHtcclxuICAgICAgYWxsb3dlZFRhZ3M6IHNhbml0aXplSHRtbC5kZWZhdWx0cy5hbGxvd2VkVGFncy5jb25jYXQoWydpbWcnXSksXHJcbiAgICAgIGFsbG93ZWRBdHRyaWJ1dGVzOiB7XHJcbiAgICAgICAgLi4uc2FuaXRpemVIdG1sLmRlZmF1bHRzLmFsbG93ZWRBdHRyaWJ1dGVzLFxyXG4gICAgICAgICcqJzogWydzdHlsZScsICdhbGlnbicsICdjbGFzcycsICdpZCddXHJcbiAgICAgIH1cclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBzYW5pdGl6ZUh0bWwoaHRtbDogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBzYW5pdGl6ZUh0bWwoaHRtbCwgdGhpcy5zYW5pdGl6ZU9wdGlvbik7XHJcbiAgfTtcclxuXHJcbiAgc2FuaXRpemVTYWZlSHRtbChodG1sOiBzdHJpbmcpOiBTYWZlSHRtbCB7XHJcbiAgICByZXR1cm4gdGhpcy5zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdEh0bWwodGhpcy5zYW5pdGl6ZUh0bWwoaHRtbCkpO1xyXG4gIH07XHJcblxyXG4gIHNhbml0aXplU2FmZVVybCh1cmw6IHN0cmluZyk6IFNhZmVSZXNvdXJjZVVybCB7XHJcbiAgICByZXR1cm4gdGhpcy5zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdFJlc291cmNlVXJsKHVybCk7XHJcbiAgfVxyXG5cclxuICB0b1N0cmluZyhzYWZlSHRtbDogU2FmZUh0bWwpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuc2FuaXRpemVyLnNhbml0aXplKDEsIHNhZmVIdG1sKSB8fCAnJztcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2FuaXRpemVPcHRpb24hOiBzYW5pdGl6ZUh0bWwuSU9wdGlvbnM7XHJcbn1cclxuIl19
|
|
@@ -20,7 +20,9 @@ export class ValidationService {
|
|
|
20
20
|
return new Map();
|
|
21
21
|
}
|
|
22
22
|
addToCollection(collection, control, formGroup, component) {
|
|
23
|
-
collection.
|
|
23
|
+
if (!collection.has(control) && this.canAddToCollection(component)) {
|
|
24
|
+
collection.set(control, { component, formGroup });
|
|
25
|
+
}
|
|
24
26
|
}
|
|
25
27
|
setupCollection(collection) {
|
|
26
28
|
collection.forEach((componentValidation, control) => {
|
|
@@ -34,6 +36,11 @@ export class ValidationService {
|
|
|
34
36
|
watching(control);
|
|
35
37
|
});
|
|
36
38
|
}
|
|
39
|
+
canAddToCollection(component) {
|
|
40
|
+
const required = component?.validate?.required;
|
|
41
|
+
const hasRules = Array.isArray(component?.validations) && component.validations.length > 0;
|
|
42
|
+
return required === true || hasRules;
|
|
43
|
+
}
|
|
37
44
|
getRules(component) {
|
|
38
45
|
if (!Array.isArray(component.validations))
|
|
39
46
|
return [];
|
|
@@ -203,4 +210,4 @@ export class ValidationService {
|
|
|
203
210
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ValidationService, decorators: [{
|
|
204
211
|
type: Injectable
|
|
205
212
|
}], ctorParameters: () => [{ type: i1.LanguageService }, { type: i2.ProgrammabilityService }] });
|
|
206
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGlvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNpcmlvL3NyYy9saWIvc2VydmljZXMvdmFsaWRhdGlvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUErRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6SCxPQUFPLEVBQUUsWUFBWSxFQUFFLEdBQUcsRUFBYyxFQUFFLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMzRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDL0MsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFHN0QsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3pDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQzs7OztBQUc5QyxNQUFNLE9BQU8saUJBQWlCO0lBR2xCO0lBQ0E7SUFGVixZQUNVLGVBQWdDLEVBQ2hDLGVBQXVDO1FBRHZDLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUNoQyxvQkFBZSxHQUFmLGVBQWUsQ0FBd0I7SUFDakQsQ0FBQztJQUVELFFBQVEsR0FBWSxLQUFLLENBQUM7SUFFMUIsZ0JBQWdCO1FBQ2QsT0FBTyxJQUFJLEdBQUcsRUFBcUMsQ0FBQztJQUN0RCxDQUFDO0lBRUQsZUFBZSxDQUFDLFVBQWdDLEVBQUUsT0FBd0IsRUFBRSxTQUFvQixFQUFFLFNBQWM7UUFDOUcsVUFBVSxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQztJQUNwRCxDQUFDO0lBRUQsZUFBZSxDQUFDLFVBQWdDO1FBQzlDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxtQkFBbUIsRUFBRSxPQUFPLEVBQUUsRUFBRTtZQUNsRCxNQUFNLFNBQVMsR0FBRyxtQkFBbUIsQ0FBQyxTQUFTLENBQUM7WUFDaEQsTUFBTSxZQUFZLEdBQUcsbUJBQW1CLENBQUMsU0FBUyxDQUFDO1lBQ25ELE1BQU0sUUFBUSxHQUFHLFNBQVMsRUFBRSxRQUFRLEVBQUUsUUFBUSxDQUFDO1lBQy9DLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDdkMsTUFBTSxDQUFDLFVBQVUsRUFBRSxlQUFlLEVBQUUsUUFBUSxDQUFDLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxZQUFZLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUM3RyxPQUFPLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ2xDLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxlQUFlLENBQUMsQ0FBQztZQUM1QyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDcEIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU8sUUFBUSxDQUFDLFNBQWM7UUFDN0IsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQztZQUFFLE9BQU8sRUFBRSxDQUFDO1FBQ3JELE9BQU8sU0FBUyxDQUFDLFdBQVcsRUFBRSxHQUFHLENBQUMsQ0FBQyxJQUFTLEVBQUUsRUFBRTtZQUM5QyxPQUFPO2dCQUNMLFVBQVUsRUFBRSxJQUFJLENBQUMsVUFBVTtnQkFDM0IsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO2dCQUNmLE9BQU8sRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxTQUFTLENBQUM7Z0JBQ3JDLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxLQUFLLElBQUk7YUFDVCxDQUFDO1FBQ3RCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVPLGFBQWEsQ0FBQyxTQUFvQixFQUN0QyxTQUFjLEVBQ2QsUUFBa0IsRUFDbEIsV0FBOEI7UUFDaEMsTUFBTSxVQUFVLEdBQWtCLEVBQUUsQ0FBQztRQUVyQyxNQUFNLGVBQWUsR0FBdUIsRUFBRSxDQUFDO1FBRS9DLE1BQU0sVUFBVSxHQUFHLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUU3QixJQUFJLFFBQVEsS0FBSyxJQUFJLEVBQUUsQ0FBQztZQUN0QixVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO1FBQ3hELENBQUM7UUFFRCxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDO1lBQ2hDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsZUFBZSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQ25ELENBQUM7UUFFRCxNQUFNLFNBQVMsR0FBRyxJQUFJLGdCQUFnQixFQUFFLENBQUM7UUFFekMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQW9CLEVBQUUsRUFBRTtZQUMzQyxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQztnQkFDckQsT0FBTztZQUVULE1BQU0sTUFBTSxHQUF1QixDQUFDLE9BQXdCLEVBQUUsTUFBK0IsRUFBRSxFQUFFLENBQy9GLElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUM7WUFFdkQsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLFVBQVUsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLFlBQVksRUFBRSxDQUFDO2dCQUMzRCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsSUFBSSxLQUFLLFVBQVU7b0JBQ3hDLENBQUMsQ0FBQyxDQUFDLE1BQVcsRUFBRSxFQUFFLENBQUMsTUFBTTtvQkFDekIsQ0FBQyxDQUFDLENBQUMsTUFBVyxFQUFFLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQztnQkFFN0IsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7b0JBQ2YsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsU0FBUyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUM7Z0JBQ2pHLENBQUM7cUJBQ0ksQ0FBQztvQkFDSixVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsU0FBUyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQztnQkFDNUUsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUVILE1BQU0sUUFBUSxHQUFHLENBQUMsT0FBd0IsRUFBUSxFQUFFO1lBQ2xELElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxTQUFTLEVBQUUsT0FBTyxFQUFFLFNBQVMsQ0FBQyxHQUFHLEVBQUUsV0FBVyxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQ3JGLENBQUMsQ0FBQztRQUVGLE9BQU8sQ0FBQyxVQUFVLEVBQUUsZUFBZSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQ2pELENBQUM7SUFFTyxlQUFlLENBQUMsU0FBb0IsRUFDeEMsSUFBb0IsRUFDcEIsU0FBbUMsRUFDbkMsUUFBNEI7UUFDOUIsT0FBTyxDQUFDLE9BQXdCLEVBQTJCLEVBQUU7WUFDM0QsSUFBSSxJQUFJLENBQUMsUUFBUTtnQkFBRSxPQUFPLElBQUksQ0FBQztZQUMvQixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLGFBQWEsQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUE7WUFDNUYsSUFBSSxZQUFZLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztnQkFDekIsT0FBTyxDQUFDLElBQUksQ0FDViw2REFBNkQsRUFDN0QsRUFBRSxVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxLQUFLLEVBQUUsT0FBTyxDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQ2xFLENBQUM7Z0JBQ0YsT0FBTyxJQUFJLENBQUM7WUFDZCxDQUFDO1lBQ0QsTUFBTSxRQUFRLEdBQUcsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDbkYsUUFBUSxDQUFDLE9BQU8sRUFBRSxRQUFRLENBQUMsQ0FBQztZQUM1QixPQUFPLFFBQVEsQ0FBQztRQUNsQixDQUFDLENBQUM7SUFDSixDQUFDO0lBRU8sb0JBQW9CLENBQUMsU0FBb0IsRUFDN0MsSUFBb0IsRUFDcEIsU0FBMkIsRUFDM0IsU0FBbUMsRUFDbkMsUUFBNEI7UUFFOUIsTUFBTSxVQUFVLEdBQUcsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxNQUFNLENBQUMsT0FBTyxDQUFDLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFFcEUsSUFBSSxLQUFLLEdBQUcsVUFBVSxFQUFFLENBQUM7UUFFekIsU0FBUyxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxLQUFLLEdBQUcsVUFBVSxFQUFFLENBQUMsQ0FBQztRQUUvQyxNQUFNLFNBQVMsR0FBRyxDQUFDLE9BQXdCLEVBQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQzdHLFNBQVMsRUFBRSxLQUFLO1lBQ2hCLGFBQWEsRUFBRSxHQUFHLEVBQUUsR0FBRyxPQUFPLEVBQUUsR0FBRyxFQUFFLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQSxDQUFDLENBQUM7U0FDdkQsQ0FBQyxDQUFDO1FBRUgsTUFBTSxXQUFXLEdBQUcsQ0FBQyxPQUF3QixFQUFPLEVBQUU7WUFDcEQsTUFBTSxDQUFDLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQztZQUN4QixJQUFJLEtBQUssQ0FBQyxLQUFLLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQ3RCLElBQUksTUFBTSxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDaEMsSUFBSSxZQUFZLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztvQkFDekIsTUFBTSxHQUFJLE1BQTBCLENBQUMsSUFBSSxDQUN2QyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQ1AsR0FBRyxDQUFDLENBQUMsS0FBVSxFQUFFLEVBQUU7d0JBQ2pCLE1BQU0sUUFBUSxHQUFHLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDO3dCQUNsRixRQUFRLENBQUMsT0FBTyxFQUFFLFFBQVEsQ0FBQyxDQUFDO3dCQUM1QixPQUFPLFFBQVEsQ0FBQztvQkFDbEIsQ0FBQyxDQUFDLEVBQ0YsVUFBVSxDQUFDLEdBQUcsQ0FBQyxFQUFFO3dCQUNmLE9BQU8sQ0FBQyxLQUFLLENBQUMsbUNBQW1DLEVBQUUsRUFBRSxVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO3dCQUN6RixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUM7b0JBQzNCLENBQUMsQ0FBQyxDQUNILENBQUM7Z0JBQ0osQ0FBQztnQkFDRCxLQUFLLEdBQUcsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsQ0FBQztZQUN2QyxDQUFDO1lBQ0QsT0FBTyxLQUFLLENBQUMsTUFBTSxDQUFDO1FBQ3RCLENBQUMsQ0FBQztRQUVGLE9BQU8sQ0FBQyxPQUF3QixFQUFFLEVBQUU7WUFDbEMsSUFBSSxJQUFJLENBQUMsUUFBUTtnQkFBRSxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUM7WUFDNUMsTUFBTSxNQUFNLEdBQUcsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ3BDLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztnQkFDMUIsT0FBTyxDQUFDLElBQUksQ0FDVixvRUFBb0UsRUFDcEUsRUFBRSxVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxLQUFLLEVBQUUsT0FBTyxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxDQUMxRSxDQUFDO2dCQUNGLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztZQUMzQixDQUFDO1lBQ0QsT0FBTyxNQUF5QixDQUFDO1FBQ25DLENBQUMsQ0FBQztJQUNKLENBQUM7SUFFTyxnQkFBZ0IsQ0FBQyxTQUFvQixFQUFFLElBQW9CO1FBQ2pFLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsY0FBYyxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDN0UsTUFBTSxlQUFlLEdBQUcsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxDQUFDO1FBQ2pELE9BQU8sZUFBZSxDQUFDO0lBQ3pCLENBQUM7SUFFTyxrQkFBa0IsQ0FBQyxTQUFvQixFQUMzQyxPQUF3QixFQUN4QixHQUFXLEVBQ1gsV0FBNkIsRUFDN0IsU0FBMkI7UUFFN0IsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUM7WUFDL0IsTUFBTSxXQUFXLEdBQUcsV0FBVztpQkFDNUIsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO2lCQUNsRSxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7WUFFMUUsSUFBSSxXQUFXLENBQUMsTUFBTSxLQUFLLENBQUM7Z0JBQUUsT0FBTztZQUVyQyxNQUFNLFFBQVEsR0FBRyxVQUFVLENBQUMsV0FBVyxDQUFDLENBQUM7WUFFekMsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDO2lCQUNoRSxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEtBQUssR0FBRyxDQUFDLENBQUM7WUFFOUIsSUFBSSxZQUFZLENBQUMsTUFBTSxLQUFLLENBQUM7Z0JBQUUsT0FBTztZQUV0QyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxTQUFTLEVBQUUsWUFBWSxFQUFFLEdBQUcsRUFBRTtnQkFDdkQsVUFBVSxDQUFDLEdBQUcsRUFBRTtvQkFDZCxTQUFTLENBQUMsTUFBTSxFQUFFLENBQUM7b0JBQ25CLE9BQU8sQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO2dCQUNuQyxDQUFDLENBQUMsQ0FBQztZQUVMLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztJQUNILENBQUM7SUFFTyxhQUFhLEdBQUcsQ0FBQyxTQUFjLEVBQUUsSUFBb0IsRUFBRSxPQUF3QixFQUFFLE1BQStCLEVBQUUsRUFBRTtRQUMxSCxJQUFJLElBQUksQ0FBQyxlQUFlLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDakMsSUFBSSxNQUFNLElBQUksSUFBSSxFQUFFLENBQUM7Z0JBQ25CLE9BQU8sQ0FBQyxJQUFJLENBQUMscUJBQXFCLEVBQUUsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO1lBQzVFLENBQUM7aUJBQ0ksQ0FBQztnQkFDSixPQUFPLENBQUMsR0FBRyxDQUFDLHNCQUFzQixFQUFFLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztZQUM1RSxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUMsQ0FBQTtJQUVnQixZQUFZLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBRXpDLElBQVksUUFBUTtRQUNsQixPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDNUMsQ0FBQztJQUVPLE1BQU0sQ0FBQyxTQUFjLEVBQUUsR0FBVztRQUN4QyxPQUFPLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLFNBQVMsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBRU8sb0JBQW9CLENBQUMsU0FBYztRQUN6QyxJQUFJLElBQUksQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztZQUNwQyxPQUFPLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDL0MsQ0FBQzthQUNJLENBQUM7WUFDSixPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDM0MsQ0FBQztJQUNILENBQUM7SUFFTyxpQkFBaUIsQ0FBQyxPQUF3QjtRQUNoRCxJQUFJLFVBQVUsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksSUFBSSxFQUFFLENBQUM7WUFDekMsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBQ0QsT0FBTyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxFQUFFLENBQUE7SUFDNUQsQ0FBQztJQUVPLHFCQUFxQixDQUFDLE9BQXdCO1FBQ3BELElBQUksVUFBVSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUM3QyxPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFDRCxPQUFPLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixFQUFFLEVBQUUsQ0FBQTtJQUM1RCxDQUFDO0lBRU8sZUFBZSxDQUFDLFNBQWM7UUFDcEMsT0FBTyxTQUFTLEVBQUUsSUFBSSxLQUFLLFVBQVUsQ0FBQztJQUN4QyxDQUFDO0lBRU8sa0JBQWtCO1FBQ3hCLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsZUFBZSxDQUFDLENBQUM7SUFDN0MsQ0FBQzt3R0ExUFUsaUJBQWlCOzRHQUFqQixpQkFBaUI7OzRGQUFqQixpQkFBaUI7a0JBRDdCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFByb2dyYW1tYWJpbGl0eVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9wcm9ncmFtbWFiaWxpdHkuc2VydmljZSc7XHJcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgQXN5bmNWYWxpZGF0b3JGbiwgRm9ybUdyb3VwLCBWYWxpZGF0aW9uRXJyb3JzLCBWYWxpZGF0b3JGbiwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgaXNPYnNlcnZhYmxlLCBtYXAsIE9ic2VydmFibGUsIG9mLCBjYXRjaEVycm9yLCB0YWtlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IHRvRmVlbGFibGUgfSBmcm9tICcuLi91dGlscy9mZWVsYWJsZSc7XHJcbmltcG9ydCB7IENhbGxiYWNrUmVnaXN0cnkgfSBmcm9tICcuLi91dGlscy9DYWxsYmFja1JlZ2lzdHJ5JztcclxuXHJcbmltcG9ydCB7IExhbmd1YWdlU2VydmljZSB9IGZyb20gJ0B3ZW1ha2U0dS9pbnRlcmFjdCc7XHJcbmltcG9ydCB7IFRleHRzIH0gZnJvbSAnLi4vbG9jYWxlL2xvY2FsZSc7XHJcbmltcG9ydCB7IGxvY2FsaXplIH0gZnJvbSAnLi4vbG9jYWxlL2xvY2FsaXplJztcclxuXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIFZhbGlkYXRpb25TZXJ2aWNlICB7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBsYW5ndWFnZVNlcnZpY2U6IExhbmd1YWdlU2VydmljZSxcclxuICAgIHByaXZhdGUgcHJvZ3JhbW1hYmlsaXR5OiBQcm9ncmFtbWFiaWxpdHlTZXJ2aWNlKSB7XHJcbiAgfVxyXG5cclxuICBzdXBwcmVzczogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBjcmVhdGVDb2xsZWN0aW9uKCk6IFZhbGlkYXRpb25Db2xsZWN0aW9uIHtcclxuICAgIHJldHVybiBuZXcgTWFwPEFic3RyYWN0Q29udHJvbCwgQ29tcG9uZW50Q29udGV4dD4oKTtcclxuICB9XHJcblxyXG4gIGFkZFRvQ29sbGVjdGlvbihjb2xsZWN0aW9uOiBWYWxpZGF0aW9uQ29sbGVjdGlvbiwgY29udHJvbDogQWJzdHJhY3RDb250cm9sLCBmb3JtR3JvdXA6IEZvcm1Hcm91cCwgY29tcG9uZW50OiBhbnkpIHtcclxuICAgIGNvbGxlY3Rpb24uc2V0KGNvbnRyb2wsIHsgY29tcG9uZW50LCBmb3JtR3JvdXAgfSk7XHJcbiAgfVxyXG5cclxuICBzZXR1cENvbGxlY3Rpb24oY29sbGVjdGlvbjogVmFsaWRhdGlvbkNvbGxlY3Rpb24pIHtcclxuICAgIGNvbGxlY3Rpb24uZm9yRWFjaCgoY29tcG9uZW50VmFsaWRhdGlvbiwgY29udHJvbCkgPT4ge1xyXG4gICAgICBjb25zdCBjb21wb25lbnQgPSBjb21wb25lbnRWYWxpZGF0aW9uLmNvbXBvbmVudDtcclxuICAgICAgY29uc3QgY3VycmVudEdyb3VwID0gY29tcG9uZW50VmFsaWRhdGlvbi5mb3JtR3JvdXA7XHJcbiAgICAgIGNvbnN0IHJlcXVpcmVkID0gY29tcG9uZW50Py52YWxpZGF0ZT8ucmVxdWlyZWQ7XHJcbiAgICAgIGNvbnN0IHJ1bGVzID0gdGhpcy5nZXRSdWxlcyhjb21wb25lbnQpO1xyXG4gICAgICBjb25zdCBbdmFsaWRhdG9ycywgYXN5bmNWYWxpZGF0b3JzLCB3YXRjaGluZ10gPSB0aGlzLnZhbGlkYXRlUnVsZXMoY3VycmVudEdyb3VwLCBjb21wb25lbnQsIHJlcXVpcmVkLCBydWxlcyk7XHJcbiAgICAgIGNvbnRyb2wuc2V0VmFsaWRhdG9ycyh2YWxpZGF0b3JzKTtcclxuICAgICAgY29udHJvbC5zZXRBc3luY1ZhbGlkYXRvcnMoYXN5bmNWYWxpZGF0b3JzKTtcclxuICAgICAgd2F0Y2hpbmcoY29udHJvbCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0UnVsZXMoY29tcG9uZW50OiBhbnkpOiBWYWxpZGF0aW9uUnVsZVtdIHtcclxuICAgIGlmICghQXJyYXkuaXNBcnJheShjb21wb25lbnQudmFsaWRhdGlvbnMpKSByZXR1cm4gW107XHJcbiAgICByZXR1cm4gY29tcG9uZW50LnZhbGlkYXRpb25zPy5tYXAoKHJ1bGU6IGFueSkgPT4ge1xyXG4gICAgICByZXR1cm4ge1xyXG4gICAgICAgIGV4cHJlc3Npb246IHJ1bGUuZXhwcmVzc2lvbixcclxuICAgICAgICB0eXBlOiBydWxlLnR5cGUsXHJcbiAgICAgICAgbWVzc2FnZTogdGhpcy5sb2NhbGUocnVsZSwgJ21lc3NhZ2UnKSxcclxuICAgICAgICBhc3luYzogcnVsZS5hc3luYyA9PT0gdHJ1ZVxyXG4gICAgICB9IGFzIFZhbGlkYXRpb25SdWxlO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHZhbGlkYXRlUnVsZXMoZm9ybUdyb3VwOiBGb3JtR3JvdXBcclxuICAgICwgY29tcG9uZW50OiBhbnlcclxuICAgICwgcmVxdWlyZWQ/OiBib29sZWFuXHJcbiAgICAsIHZhbGlkYXRpb25zPzogVmFsaWRhdGlvblJ1bGVbXSk6IFtWYWxpZGF0b3JGbltdLCBBc3luY1ZhbGlkYXRvckZuW10sIChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpID0+IHZvaWRdIHtcclxuICAgIGNvbnN0IHZhbGlkYXRvcnM6IFZhbGlkYXRvckZuW10gPSBbXTtcclxuXHJcbiAgICBjb25zdCBhc3luY1ZhbGlkYXRvcnM6IEFzeW5jVmFsaWRhdG9yRm5bXSA9IFtdO1xyXG5cclxuICAgIGNvbnN0IG5vV2F0Y2hpbmcgPSAoKSA9PiB7IH07XHJcblxyXG4gICAgaWYgKHJlcXVpcmVkID09PSB0cnVlKSB7XHJcbiAgICAgIHZhbGlkYXRvcnMucHVzaCh0aGlzLmdldFJlcXVpcmVkVmFsaWRhdG9yKGNvbXBvbmVudCkpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICghQXJyYXkuaXNBcnJheSh2YWxpZGF0aW9ucykpIHtcclxuICAgICAgcmV0dXJuIFt2YWxpZGF0b3JzLCBhc3luY1ZhbGlkYXRvcnMsIG5vV2F0Y2hpbmddO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGNhbGxiYWNrcyA9IG5ldyBDYWxsYmFja1JlZ2lzdHJ5KCk7XHJcblxyXG4gICAgdmFsaWRhdGlvbnMuZm9yRWFjaCgoaXRlbTogVmFsaWRhdGlvblJ1bGUpID0+IHtcclxuICAgICAgaWYgKCF0aGlzLnByb2dyYW1tYWJpbGl0eS5pc0V4cHJlc3Npb24oaXRlbS5leHByZXNzaW9uKSlcclxuICAgICAgICByZXR1cm47XHJcblxyXG4gICAgICBjb25zdCBsb2dnZXI6IFZhbGlkYXRpb25DYWxsYmFjayA9IChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wsIHJlc3VsdDogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwpID0+XHJcbiAgICAgICAgdGhpcy5sb2dWYWxpZGF0aW9uKGNvbXBvbmVudCwgaXRlbSwgY29udHJvbCwgcmVzdWx0KTtcclxuICAgICAgXHJcbiAgICAgIGlmIChpdGVtLnR5cGUgPT09IFwidmFsaWRhdGVcIiB8fCBpdGVtLnR5cGUgPT09IFwiaW52YWxpZGF0ZVwiKSB7XHJcbiAgICAgICAgY29uc3QgcHJlZGljYXRlID0gaXRlbS50eXBlID09PSBcInZhbGlkYXRlXCJcclxuICAgICAgICAgID8gKHJlc3VsdDogYW55KSA9PiByZXN1bHRcclxuICAgICAgICAgIDogKHJlc3VsdDogYW55KSA9PiAhcmVzdWx0O1xyXG5cclxuICAgICAgICBpZiAoaXRlbS5hc3luYykge1xyXG4gICAgICAgICAgYXN5bmNWYWxpZGF0b3JzLnB1c2godGhpcy5jcmVhdGVBc3luY1ZhbGlkYXRvcihmb3JtR3JvdXAsIGl0ZW0sIGNhbGxiYWNrcywgcHJlZGljYXRlLCBsb2dnZXIpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICB2YWxpZGF0b3JzLnB1c2godGhpcy5jcmVhdGVWYWxpZGF0b3IoZm9ybUdyb3VwLCBpdGVtLCBwcmVkaWNhdGUsIGxvZ2dlcikpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgY29uc3Qgd2F0Y2hpbmcgPSAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogdm9pZCA9PiB7XHJcbiAgICAgIHRoaXMud2F0Y2hGb3JWYWxpZGF0aW9uKGZvcm1Hcm91cCwgY29udHJvbCwgY29tcG9uZW50LmtleSwgdmFsaWRhdGlvbnMsIGNhbGxiYWNrcyk7XHJcbiAgICB9O1xyXG5cclxuICAgIHJldHVybiBbdmFsaWRhdG9ycywgYXN5bmNWYWxpZGF0b3JzLCB3YXRjaGluZ107XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNyZWF0ZVZhbGlkYXRvcihmb3JtR3JvdXA6IEZvcm1Hcm91cFxyXG4gICAgLCBpdGVtOiBWYWxpZGF0aW9uUnVsZVxyXG4gICAgLCBwcmVkaWNhdGU6IChyZXN1bHQ6IGFueSkgPT4gYm9vbGVhblxyXG4gICAgLCBjYWxsYmFjazogVmFsaWRhdGlvbkNhbGxiYWNrKTogVmFsaWRhdG9yRm4ge1xyXG4gICAgcmV0dXJuIChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCA9PiB7XHJcbiAgICAgIGlmICh0aGlzLnN1cHByZXNzKSByZXR1cm4gbnVsbDtcclxuICAgICAgY29uc3QgcmVzdWx0ID0gdGhpcy5wcm9ncmFtbWFiaWxpdHkuZXZhbHVhdGVVbmFyeShmb3JtR3JvdXAsIGl0ZW0uZXhwcmVzc2lvbiwgY29udHJvbC52YWx1ZSlcclxuICAgICAgaWYgKGlzT2JzZXJ2YWJsZShyZXN1bHQpKSB7XHJcbiAgICAgICAgY29uc29sZS53YXJuKFxyXG4gICAgICAgICAgXCJbVmFsaWRhdG9yXSBVbmV4cGVjdGVkIG9ic2VydmFibGUgcmVzdWx0IGluIGNyZWF0ZVZhbGlkYXRvclwiLFxyXG4gICAgICAgICAgeyBleHByZXNzaW9uOiBpdGVtLmV4cHJlc3Npb24sIHZhbHVlOiBjb250cm9sLnZhbHVlLCBydWxlOiBpdGVtIH1cclxuICAgICAgICApO1xyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IHZhbGlkYXRlID0gcHJlZGljYXRlKHJlc3VsdCkgPyBudWxsIDogdGhpcy52YWxpZGF0aW9uRXJyb3JzKGZvcm1Hcm91cCwgaXRlbSk7XHJcbiAgICAgIGNhbGxiYWNrKGNvbnRyb2wsIHZhbGlkYXRlKTtcclxuICAgICAgcmV0dXJuIHZhbGlkYXRlO1xyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY3JlYXRlQXN5bmNWYWxpZGF0b3IoZm9ybUdyb3VwOiBGb3JtR3JvdXBcclxuICAgICwgaXRlbTogVmFsaWRhdGlvblJ1bGVcclxuICAgICwgY2FsbGJhY2tzOiBDYWxsYmFja1JlZ2lzdHJ5XHJcbiAgICAsIHByZWRpY2F0ZTogKHJlc3VsdDogYW55KSA9PiBib29sZWFuXHJcbiAgICAsIGNhbGxiYWNrOiBWYWxpZGF0aW9uQ2FsbGJhY2spOiBBc3luY1ZhbGlkYXRvckZuIHtcclxuXHJcbiAgICBjb25zdCB1bnNldFN0YXRlID0gKCkgPT4gKHsgdmFsdWU6IFN5bWJvbCgndW5zZXQnKSwgcmVzdWx0OiBudWxsIH0pO1xyXG5cclxuICAgIGxldCBzdGF0ZSA9IHVuc2V0U3RhdGUoKTtcclxuXHJcbiAgICBjYWxsYmFja3MucmVnaXN0ZXIoKCkgPT4gc3RhdGUgPSB1bnNldFN0YXRlKCkpO1xyXG5cclxuICAgIGNvbnN0IGdldFJlc3VsdCA9IChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBhbnkgPT4gdGhpcy5wcm9ncmFtbWFiaWxpdHkuZXZhbHVhdGUoZm9ybUdyb3VwLCBpdGVtLmV4cHJlc3Npb24sIHtcclxuICAgICAgY2FjaGVhYmxlOiBmYWxzZSxcclxuICAgICAgZXh0ZW5kQ29udGV4dDogKCkgPT4geyByZXR1cm4geyBcIj9cIjogY29udHJvbC52YWx1ZSB9IH1cclxuICAgIH0pO1xyXG5cclxuICAgIGNvbnN0IGNvbXB1dGVPbmNlID0gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IGFueSA9PiB7XHJcbiAgICAgIGNvbnN0IHYgPSBjb250cm9sLnZhbHVlO1xyXG4gICAgICBpZiAoc3RhdGUudmFsdWUgIT09IHYpIHtcclxuICAgICAgICBsZXQgcmVzdWx0ID0gZ2V0UmVzdWx0KGNvbnRyb2wpO1xyXG4gICAgICAgIGlmIChpc09ic2VydmFibGUocmVzdWx0KSkge1xyXG4gICAgICAgICAgcmVzdWx0ID0gKHJlc3VsdCBhcyBPYnNlcnZhYmxlPGFueT4pLnBpcGUoXHJcbiAgICAgICAgICAgIHRha2UoMSksXHJcbiAgICAgICAgICAgIG1hcCgodmFsdWU6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgIGNvbnN0IHZhbGlkYXRlID0gcHJlZGljYXRlKHZhbHVlKSA/IG51bGwgOiB0aGlzLnZhbGlkYXRpb25FcnJvcnMoZm9ybUdyb3VwLCBpdGVtKTtcclxuICAgICAgICAgICAgICBjYWxsYmFjayhjb250cm9sLCB2YWxpZGF0ZSk7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIHZhbGlkYXRlO1xyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgY2F0Y2hFcnJvcihlcnIgPT4ge1xyXG4gICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXCJbQXN5bmNWYWxpZGF0b3JdIEV2YWx1YXRpb24gZXJyb3JcIiwgeyBleHByZXNzaW9uOiBpdGVtLmV4cHJlc3Npb24sIGVyciB9KTtcclxuICAgICAgICAgICAgICByZXR1cm4gdGhpcy5udWxsT2JzZXJ2ZXI7XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuICAgICAgICBzdGF0ZSA9IHsgdmFsdWU6IHYsIHJlc3VsdDogcmVzdWx0IH07XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIHN0YXRlLnJlc3VsdDtcclxuICAgIH07XHJcblxyXG4gICAgcmV0dXJuIChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpID0+IHtcclxuICAgICAgaWYgKHRoaXMuc3VwcHJlc3MpIHJldHVybiB0aGlzLm51bGxPYnNlcnZlcjtcclxuICAgICAgY29uc3QgcmVzdWx0ID0gY29tcHV0ZU9uY2UoY29udHJvbCk7ICAgICAgXHJcbiAgICAgIGlmICghaXNPYnNlcnZhYmxlKHJlc3VsdCkpIHtcclxuICAgICAgICBjb25zb2xlLndhcm4oXHJcbiAgICAgICAgICBcIltBc3luY1ZhbGlkYXRvcl0gRXhwZWN0ZWQgb2JzZXJ2YWJsZSBidXQgZ290IG5vbi1vYnNlcnZhYmxlIHJlc3VsdFwiLFxyXG4gICAgICAgICAgeyBleHByZXNzaW9uOiBpdGVtLmV4cHJlc3Npb24sIHZhbHVlOiBjb250cm9sLnZhbHVlLCByZXN1bHQsIHJ1bGU6IGl0ZW0gfVxyXG4gICAgICAgICk7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMubnVsbE9ic2VydmVyO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiByZXN1bHQgYXMgT2JzZXJ2YWJsZTxhbnk+O1xyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgdmFsaWRhdGlvbkVycm9ycyhmb3JtR3JvdXA6IEZvcm1Hcm91cCwgaXRlbTogVmFsaWRhdGlvblJ1bGUpIHtcclxuICAgIGNvbnN0IG1lc3NhZ2UgPSB0aGlzLnByb2dyYW1tYWJpbGl0eS5ldmFsdWF0ZVN0cmluZyhmb3JtR3JvdXAsIGl0ZW0ubWVzc2FnZSk7XHJcbiAgICBjb25zdCB2YWxpZGF0aW9uRXJyb3IgPSB7IGVycm9yOiB0cnVlLCBtZXNzYWdlIH07XHJcbiAgICByZXR1cm4gdmFsaWRhdGlvbkVycm9yO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB3YXRjaEZvclZhbGlkYXRpb24oZm9ybUdyb3VwOiBGb3JtR3JvdXBcclxuICAgICwgY29udHJvbDogQWJzdHJhY3RDb250cm9sXHJcbiAgICAsIGtleTogc3RyaW5nXHJcbiAgICAsIHZhbGlkYXRpb25zOiBWYWxpZGF0aW9uUnVsZVtdXHJcbiAgICAsIGNhbGxiYWNrczogQ2FsbGJhY2tSZWdpc3RyeSk6IHZvaWQge1xyXG5cclxuICAgIGlmIChBcnJheS5pc0FycmF5KHZhbGlkYXRpb25zKSkge1xyXG4gICAgICBjb25zdCBleHByZXNzaW9ucyA9IHZhbGlkYXRpb25zXHJcbiAgICAgICAgLmZpbHRlcihpdGVtID0+IHRoaXMucHJvZ3JhbW1hYmlsaXR5LmlzRXhwcmVzc2lvbihpdGVtLmV4cHJlc3Npb24pKVxyXG4gICAgICAgIC5tYXAoaXRlbSA9PiBcIj1cIiArIHRoaXMucHJvZ3JhbW1hYmlsaXR5LmdldEV4cHJlc3Npb24oaXRlbS5leHByZXNzaW9uKSk7XHJcblxyXG4gICAgICBpZiAoZXhwcmVzc2lvbnMubGVuZ3RoID09PSAwKSByZXR1cm47XHJcblxyXG4gICAgICBjb25zdCBmZWVsYWJsZSA9IHRvRmVlbGFibGUoZXhwcmVzc2lvbnMpO1xyXG5cclxuICAgICAgY29uc3QgZGVwZW5kZW5jaWVzID0gdGhpcy5wcm9ncmFtbWFiaWxpdHkuZ2V0RGVwZW5kZW5jaWVzKGZlZWxhYmxlKVxyXG4gICAgICAgIC5maWx0ZXIoZGVwID0+IGRlcCAhPT0ga2V5KTtcclxuXHJcbiAgICAgIGlmIChkZXBlbmRlbmNpZXMubGVuZ3RoID09PSAwKSByZXR1cm47XHJcblxyXG4gICAgICB0aGlzLnByb2dyYW1tYWJpbGl0eS53YXRjaChmb3JtR3JvdXAsIGRlcGVuZGVuY2llcywgKCkgPT4ge1xyXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgY2FsbGJhY2tzLmludm9rZSgpO1xyXG4gICAgICAgICAgY29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgbG9nVmFsaWRhdGlvbiA9IChjb21wb25lbnQ6IGFueSwgcnVsZTogVmFsaWRhdGlvblJ1bGUsIGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCwgcmVzdWx0OiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCkgPT4ge1xyXG4gICAgaWYgKHRoaXMucHJvZ3JhbW1hYmlsaXR5LnZlcmJvc2UpIHtcclxuICAgICAgaWYgKHJlc3VsdCAhPSBudWxsKSB7XHJcbiAgICAgICAgY29uc29sZS53YXJuKFwiW1ZhbGlkYXRpb25dIEZhaWxlZFwiLCB7IGNvbnRyb2wsIGNvbXBvbmVudCwgcnVsZSwgcmVzdWx0IH0pO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKFwiW1ZhbGlkYXRpb25dIFN1Y2Nlc3NcIiwgeyBjb250cm9sLCBjb21wb25lbnQsIHJ1bGUsIHJlc3VsdCB9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSByZWFkb25seSBudWxsT2JzZXJ2ZXIgPSBvZihudWxsKTtcclxuXHJcbiAgcHJpdmF0ZSBnZXQgbGFuZ3VhZ2UoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLmxhbmd1YWdlU2VydmljZS5nZXRMYW5ndWFnZSgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBsb2NhbGUoY29tcG9uZW50OiBhbnksIGtleTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBsb2NhbGl6ZSh0aGlzLmxhbmd1YWdlLCBjb21wb25lbnQsIGtleSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldFJlcXVpcmVkVmFsaWRhdG9yKGNvbXBvbmVudDogYW55KTogVmFsaWRhdG9yRm4ge1xyXG4gICAgaWYgKHRoaXMuaXNUcnVlVmFsaWRhdG9yKGNvbXBvbmVudCkpIHtcclxuICAgICAgcmV0dXJuIHRoaXMucmVxdWlyZWRUcnVlVmFsaWRhdG9yLmJpbmQodGhpcyk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgcmV0dXJuIHRoaXMucmVxdWlyZWRWYWxpZGF0b3IuYmluZCh0aGlzKTtcclxuICAgIH0gIFxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSByZXF1aXJlZFZhbGlkYXRvcihjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XHJcbiAgICBpZiAoVmFsaWRhdG9ycy5yZXF1aXJlZChjb250cm9sKSA9PSBudWxsKSB7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHsgZXJyb3I6IHRydWUsIG1lc3NhZ2U6IHRoaXMuZ2V0UmVxdWlyZWRNZXNzYWdlKCkgfSAgICBcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcmVxdWlyZWRUcnVlVmFsaWRhdG9yKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcclxuICAgIGlmIChWYWxpZGF0b3JzLnJlcXVpcmVkVHJ1ZShjb250cm9sKSA9PSBudWxsKSB7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHsgZXJyb3I6IHRydWUsIG1lc3NhZ2U6IHRoaXMuZ2V0UmVxdWlyZWRNZXNzYWdlKCkgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpc1RydWVWYWxpZGF0b3IoY29tcG9uZW50OiBhbnkpOiBib29sZWFuIHtcclxuICAgIHJldHVybiBjb21wb25lbnQ/LnR5cGUgPT09ICdjaGVja2JveCc7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldFJlcXVpcmVkTWVzc2FnZSgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMubG9jYWxlKFRleHRzLCAnUmVxdWlyZWRGaWVsZCcpO1xyXG4gIH1cclxufVxyXG5cclxudHlwZSBWYWxpZGF0aW9uQ2FsbGJhY2sgPSAoY29udHJvbDogQWJzdHJhY3RDb250cm9sLCByZXN1bHQ6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsKSA9PiB2b2lkO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBDb21wb25lbnRDb250ZXh0IHtcclxuICBjb21wb25lbnQ6IGFueTtcclxuICBmb3JtR3JvdXA6IEZvcm1Hcm91cDtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBWYWxpZGF0aW9uUnVsZSB7XHJcbiAgZXhwcmVzc2lvbjogc3RyaW5nO1xyXG4gIHR5cGU6IFwidmFsaWRhdGVcIiB8IFwiaW52YWxpZGF0ZVwiO1xyXG4gIG1lc3NhZ2U6IHN0cmluZyxcclxuICBhc3luYzogYm9vbGVhblxyXG59XHJcblxyXG5leHBvcnQgdHlwZSBWYWxpZGF0aW9uQ29sbGVjdGlvbiA9IE1hcDxBYnN0cmFjdENvbnRyb2wsIENvbXBvbmVudENvbnRleHQ+O1xyXG4iXX0=
|
|
213
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGlvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNpcmlvL3NyYy9saWIvc2VydmljZXMvdmFsaWRhdGlvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUErRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6SCxPQUFPLEVBQUUsWUFBWSxFQUFFLEdBQUcsRUFBYyxFQUFFLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMzRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDL0MsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFHN0QsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3pDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQzs7OztBQUc5QyxNQUFNLE9BQU8saUJBQWlCO0lBR2xCO0lBQ0E7SUFGVixZQUNVLGVBQWdDLEVBQ2hDLGVBQXVDO1FBRHZDLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUNoQyxvQkFBZSxHQUFmLGVBQWUsQ0FBd0I7SUFDakQsQ0FBQztJQUVELFFBQVEsR0FBWSxLQUFLLENBQUM7SUFFMUIsZ0JBQWdCO1FBQ2QsT0FBTyxJQUFJLEdBQUcsRUFBcUMsQ0FBQztJQUN0RCxDQUFDO0lBRUQsZUFBZSxDQUFDLFVBQWdDLEVBQUUsT0FBd0IsRUFBRSxTQUFvQixFQUFFLFNBQWM7UUFDOUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLElBQUksSUFBSSxDQUFDLGtCQUFrQixDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUM7WUFDbkUsVUFBVSxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVB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TyxDQUFDLElBQUksSUFBSSxFQUFFLENBQUM7WUFDN0MsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBQ0QsT0FBTyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxFQUFFLENBQUE7SUFDNUQsQ0FBQztJQUVPLGVBQWUsQ0FBQyxTQUFjO1FBQ3BDLE9BQU8sU0FBUyxFQUFFLElBQUksS0FBSyxVQUFVLENBQUM7SUFDeEMsQ0FBQztJQUVPLGtCQUFrQjtRQUN4QixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLGVBQWUsQ0FBQyxDQUFDO0lBQzdDLENBQUM7d0dBbFFVLGlCQUFpQjs0R0FBakIsaUJBQWlCOzs0RkFBakIsaUJBQWlCO2tCQUQ3QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBQcm9ncmFtbWFiaWxpdHlTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvcHJvZ3JhbW1hYmlsaXR5LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIEFzeW5jVmFsaWRhdG9yRm4sIEZvcm1Hcm91cCwgVmFsaWRhdGlvbkVycm9ycywgVmFsaWRhdG9yRm4sIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IGlzT2JzZXJ2YWJsZSwgbWFwLCBPYnNlcnZhYmxlLCBvZiwgY2F0Y2hFcnJvciwgdGFrZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyB0b0ZlZWxhYmxlIH0gZnJvbSAnLi4vdXRpbHMvZmVlbGFibGUnO1xyXG5pbXBvcnQgeyBDYWxsYmFja1JlZ2lzdHJ5IH0gZnJvbSAnLi4vdXRpbHMvQ2FsbGJhY2tSZWdpc3RyeSc7XHJcblxyXG5pbXBvcnQgeyBMYW5ndWFnZVNlcnZpY2UgfSBmcm9tICdAd2VtYWtlNHUvaW50ZXJhY3QnO1xyXG5pbXBvcnQgeyBUZXh0cyB9IGZyb20gJy4uL2xvY2FsZS9sb2NhbGUnO1xyXG5pbXBvcnQgeyBsb2NhbGl6ZSB9IGZyb20gJy4uL2xvY2FsZS9sb2NhbGl6ZSc7XHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBWYWxpZGF0aW9uU2VydmljZSAge1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgbGFuZ3VhZ2VTZXJ2aWNlOiBMYW5ndWFnZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHByb2dyYW1tYWJpbGl0eTogUHJvZ3JhbW1hYmlsaXR5U2VydmljZSkge1xyXG4gIH1cclxuXHJcbiAgc3VwcHJlc3M6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgY3JlYXRlQ29sbGVjdGlvbigpOiBWYWxpZGF0aW9uQ29sbGVjdGlvbiB7XHJcbiAgICByZXR1cm4gbmV3IE1hcDxBYnN0cmFjdENvbnRyb2wsIENvbXBvbmVudENvbnRleHQ+KCk7XHJcbiAgfVxyXG5cclxuICBhZGRUb0NvbGxlY3Rpb24oY29sbGVjdGlvbjogVmFsaWRhdGlvbkNvbGxlY3Rpb24sIGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCwgZm9ybUdyb3VwOiBGb3JtR3JvdXAsIGNvbXBvbmVudDogYW55KSB7XHJcbiAgICBpZiAoIWNvbGxlY3Rpb24uaGFzKGNvbnRyb2wpICYmIHRoaXMuY2FuQWRkVG9Db2xsZWN0aW9uKGNvbXBvbmVudCkpIHsgXHJcbiAgICAgIGNvbGxlY3Rpb24uc2V0KGNvbnRyb2wsIHsgY29tcG9uZW50LCBmb3JtR3JvdXAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZXR1cENvbGxlY3Rpb24oY29sbGVjdGlvbjogVmFsaWRhdGlvbkNvbGxlY3Rpb24pIHtcclxuICAgIGNvbGxlY3Rpb24uZm9yRWFjaCgoY29tcG9uZW50VmFsaWRhdGlvbiwgY29udHJvbCkgPT4ge1xyXG4gICAgICBjb25zdCBjb21wb25lbnQgPSBjb21wb25lbnRWYWxpZGF0aW9uLmNvbXBvbmVudDtcclxuICAgICAgY29uc3QgY3VycmVudEdyb3VwID0gY29tcG9uZW50VmFsaWRhdGlvbi5mb3JtR3JvdXA7XHJcbiAgICAgIGNvbnN0IHJlcXVpcmVkID0gY29tcG9uZW50Py52YWxpZGF0ZT8ucmVxdWlyZWQ7XHJcbiAgICAgIGNvbnN0IHJ1bGVzID0gdGhpcy5nZXRSdWxlcyhjb21wb25lbnQpO1xyXG4gICAgICBjb25zdCBbdmFsaWRhdG9ycywgYXN5bmNWYWxpZGF0b3JzLCB3YXRjaGluZ10gPSB0aGlzLnZhbGlkYXRlUnVsZXMoY3VycmVudEdyb3VwLCBjb21wb25lbnQsIHJlcXVpcmVkLCBydWxlcyk7XHJcbiAgICAgIGNvbnRyb2wuc2V0VmFsaWRhdG9ycyh2YWxpZGF0b3JzKTtcclxuICAgICAgY29udHJvbC5zZXRBc3luY1ZhbGlkYXRvcnMoYXN5bmNWYWxpZGF0b3JzKTtcclxuICAgICAgd2F0Y2hpbmcoY29udHJvbCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY2FuQWRkVG9Db2xsZWN0aW9uKGNvbXBvbmVudDogYW55KTogYm9vbGVhbiB7XHJcbiAgICBjb25zdCByZXF1aXJlZCA9IGNvbXBvbmVudD8udmFsaWRhdGU/LnJlcXVpcmVkO1xyXG4gICAgY29uc3QgaGFzUnVsZXMgPSBBcnJheS5pc0FycmF5KGNvbXBvbmVudD8udmFsaWRhdGlvbnMpICYmIGNvbXBvbmVudC52YWxpZGF0aW9ucy5sZW5ndGggPiAwO1xyXG4gICAgcmV0dXJuIHJlcXVpcmVkID09PSB0cnVlIHx8IGhhc1J1bGVzO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRSdWxlcyhjb21wb25lbnQ6IGFueSk6IFZhbGlkYXRpb25SdWxlW10ge1xyXG4gICAgaWYgKCFBcnJheS5pc0FycmF5KGNvbXBvbmVudC52YWxpZGF0aW9ucykpIHJldHVybiBbXTtcclxuICAgIHJldHVybiBjb21wb25lbnQudmFsaWRhdGlvbnM/Lm1hcCgocnVsZTogYW55KSA9PiB7XHJcbiAgICAgIHJldHVybiB7XHJcbiAgICAgICAgZXhwcmVzc2lvbjogcnVsZS5leHByZXNzaW9uLFxyXG4gICAgICAgIHR5cGU6IHJ1bGUudHlwZSxcclxuICAgICAgICBtZXNzYWdlOiB0aGlzLmxvY2FsZShydWxlLCAnbWVzc2FnZScpLFxyXG4gICAgICAgIGFzeW5jOiBydWxlLmFzeW5jID09PSB0cnVlXHJcbiAgICAgIH0gYXMgVmFsaWRhdGlvblJ1bGU7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgdmFsaWRhdGVSdWxlcyhmb3JtR3JvdXA6IEZvcm1Hcm91cFxyXG4gICAgLCBjb21wb25lbnQ6IGFueVxyXG4gICAgLCByZXF1aXJlZD86IGJvb2xlYW5cclxuICAgICwgdmFsaWRhdGlvbnM/OiBWYWxpZGF0aW9uUnVsZVtdKTogW1ZhbGlkYXRvckZuW10sIEFzeW5jVmFsaWRhdG9yRm5bXSwgKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCkgPT4gdm9pZF0ge1xyXG4gICAgY29uc3QgdmFsaWRhdG9yczogVmFsaWRhdG9yRm5bXSA9IFtdO1xyXG5cclxuICAgIGNvbnN0IGFzeW5jVmFsaWRhdG9yczogQXN5bmNWYWxpZGF0b3JGbltdID0gW107XHJcblxyXG4gICAgY29uc3Qgbm9XYXRjaGluZyA9ICgpID0+IHsgfTtcclxuXHJcbiAgICBpZiAocmVxdWlyZWQgPT09IHRydWUpIHtcclxuICAgICAgdmFsaWRhdG9ycy5wdXNoKHRoaXMuZ2V0UmVxdWlyZWRWYWxpZGF0b3IoY29tcG9uZW50KSk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCFBcnJheS5pc0FycmF5KHZhbGlkYXRpb25zKSkge1xyXG4gICAgICByZXR1cm4gW3ZhbGlkYXRvcnMsIGFzeW5jVmFsaWRhdG9ycywgbm9XYXRjaGluZ107XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgY2FsbGJhY2tzID0gbmV3IENhbGxiYWNrUmVnaXN0cnkoKTtcclxuXHJcbiAgICB2YWxpZGF0aW9ucy5mb3JFYWNoKChpdGVtOiBWYWxpZGF0aW9uUnVsZSkgPT4ge1xyXG4gICAgICBpZiAoIXRoaXMucHJvZ3JhbW1hYmlsaXR5LmlzRXhwcmVzc2lvbihpdGVtLmV4cHJlc3Npb24pKVxyXG4gICAgICAgIHJldHVybjtcclxuXHJcbiAgICAgIGNvbnN0IGxvZ2dlcjogVmFsaWRhdGlvbkNhbGxiYWNrID0gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCwgcmVzdWx0OiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCkgPT5cclxuICAgICAgICB0aGlzLmxvZ1ZhbGlkYXRpb24oY29tcG9uZW50LCBpdGVtLCBjb250cm9sLCByZXN1bHQpO1xyXG4gICAgICBcclxuICAgICAgaWYgKGl0ZW0udHlwZSA9PT0gXCJ2YWxpZGF0ZVwiIHx8IGl0ZW0udHlwZSA9PT0gXCJpbnZhbGlkYXRlXCIpIHtcclxuICAgICAgICBjb25zdCBwcmVkaWNhdGUgPSBpdGVtLnR5cGUgPT09IFwidmFsaWRhdGVcIlxyXG4gICAgICAgICAgPyAocmVzdWx0OiBhbnkpID0+IHJlc3VsdFxyXG4gICAgICAgICAgOiAocmVzdWx0OiBhbnkpID0+ICFyZXN1bHQ7XHJcblxyXG4gICAgICAgIGlmIChpdGVtLmFzeW5jKSB7XHJcbiAgICAgICAgICBhc3luY1ZhbGlkYXRvcnMucHVzaCh0aGlzLmNyZWF0ZUFzeW5jVmFsaWRhdG9yKGZvcm1Hcm91cCwgaXRlbSwgY2FsbGJhY2tzLCBwcmVkaWNhdGUsIGxvZ2dlcikpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIHZhbGlkYXRvcnMucHVzaCh0aGlzLmNyZWF0ZVZhbGlkYXRvcihmb3JtR3JvdXAsIGl0ZW0sIHByZWRpY2F0ZSwgbG9nZ2VyKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICBjb25zdCB3YXRjaGluZyA9IChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiB2b2lkID0+IHtcclxuICAgICAgdGhpcy53YXRjaEZvclZhbGlkYXRpb24oZm9ybUdyb3VwLCBjb250cm9sLCBjb21wb25lbnQua2V5LCB2YWxpZGF0aW9ucywgY2FsbGJhY2tzKTtcclxuICAgIH07XHJcblxyXG4gICAgcmV0dXJuIFt2YWxpZGF0b3JzLCBhc3luY1ZhbGlkYXRvcnMsIHdhdGNoaW5nXTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY3JlYXRlVmFsaWRhdG9yKGZvcm1Hcm91cDogRm9ybUdyb3VwXHJcbiAgICAsIGl0ZW06IFZhbGlkYXRpb25SdWxlXHJcbiAgICAsIHByZWRpY2F0ZTogKHJlc3VsdDogYW55KSA9PiBib29sZWFuXHJcbiAgICAsIGNhbGxiYWNrOiBWYWxpZGF0aW9uQ2FsbGJhY2spOiBWYWxpZGF0b3JGbiB7XHJcbiAgICByZXR1cm4gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsID0+IHtcclxuICAgICAgaWYgKHRoaXMuc3VwcHJlc3MpIHJldHVybiBudWxsO1xyXG4gICAgICBjb25zdCByZXN1bHQgPSB0aGlzLnByb2dyYW1tYWJpbGl0eS5ldmFsdWF0ZVVuYXJ5KGZvcm1Hcm91cCwgaXRlbS5leHByZXNzaW9uLCBjb250cm9sLnZhbHVlKVxyXG4gICAgICBpZiAoaXNPYnNlcnZhYmxlKHJlc3VsdCkpIHtcclxuICAgICAgICBjb25zb2xlLndhcm4oXHJcbiAgICAgICAgICBcIltWYWxpZGF0b3JdIFVuZXhwZWN0ZWQgb2JzZXJ2YWJsZSByZXN1bHQgaW4gY3JlYXRlVmFsaWRhdG9yXCIsXHJcbiAgICAgICAgICB7IGV4cHJlc3Npb246IGl0ZW0uZXhwcmVzc2lvbiwgdmFsdWU6IGNvbnRyb2wudmFsdWUsIHJ1bGU6IGl0ZW0gfVxyXG4gICAgICAgICk7XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgIH1cclxuICAgICAgY29uc3QgdmFsaWRhdGUgPSBwcmVkaWNhdGUocmVzdWx0KSA/IG51bGwgOiB0aGlzLnZhbGlkYXRpb25FcnJvcnMoZm9ybUdyb3VwLCBpdGVtKTtcclxuICAgICAgY2FsbGJhY2soY29udHJvbCwgdmFsaWRhdGUpO1xyXG4gICAgICByZXR1cm4gdmFsaWRhdGU7XHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjcmVhdGVBc3luY1ZhbGlkYXRvcihmb3JtR3JvdXA6IEZvcm1Hcm91cFxyXG4gICAgLCBpdGVtOiBWYWxpZGF0aW9uUnVsZVxyXG4gICAgLCBjYWxsYmFja3M6IENhbGxiYWNrUmVnaXN0cnlcclxuICAgICwgcHJlZGljYXRlOiAocmVzdWx0OiBhbnkpID0+IGJvb2xlYW5cclxuICAgICwgY2FsbGJhY2s6IFZhbGlkYXRpb25DYWxsYmFjayk6IEFzeW5jVmFsaWRhdG9yRm4ge1xyXG5cclxuICAgIGNvbnN0IHVuc2V0U3RhdGUgPSAoKSA9PiAoeyB2YWx1ZTogU3ltYm9sKCd1bnNldCcpLCByZXN1bHQ6IG51bGwgfSk7XHJcblxyXG4gICAgbGV0IHN0YXRlID0gdW5zZXRTdGF0ZSgpO1xyXG5cclxuICAgIGNhbGxiYWNrcy5yZWdpc3RlcigoKSA9PiBzdGF0ZSA9IHVuc2V0U3RhdGUoKSk7XHJcblxyXG4gICAgY29uc3QgZ2V0UmVzdWx0ID0gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IGFueSA9PiB0aGlzLnByb2dyYW1tYWJpbGl0eS5ldmFsdWF0ZShmb3JtR3JvdXAsIGl0ZW0uZXhwcmVzc2lvbiwge1xyXG4gICAgICBjYWNoZWFibGU6IGZhbHNlLFxyXG4gICAgICBleHRlbmRDb250ZXh0OiAoKSA9PiB7IHJldHVybiB7IFwiP1wiOiBjb250cm9sLnZhbHVlIH0gfVxyXG4gICAgfSk7XHJcblxyXG4gICAgY29uc3QgY29tcHV0ZU9uY2UgPSAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogYW55ID0+IHtcclxuICAgICAgY29uc3QgdiA9IGNvbnRyb2wudmFsdWU7XHJcbiAgICAgIGlmIChzdGF0ZS52YWx1ZSAhPT0gdikge1xyXG4gICAgICAgIGxldCByZXN1bHQgPSBnZXRSZXN1bHQoY29udHJvbCk7XHJcbiAgICAgICAgaWYgKGlzT2JzZXJ2YWJsZShyZXN1bHQpKSB7XHJcbiAgICAgICAgICByZXN1bHQgPSAocmVzdWx0IGFzIE9ic2VydmFibGU8YW55PikucGlwZShcclxuICAgICAgICAgICAgdGFrZSgxKSxcclxuICAgICAgICAgICAgbWFwKCh2YWx1ZTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgY29uc3QgdmFsaWRhdGUgPSBwcmVkaWNhdGUodmFsdWUpID8gbnVsbCA6IHRoaXMudmFsaWRhdGlvbkVycm9ycyhmb3JtR3JvdXAsIGl0ZW0pO1xyXG4gICAgICAgICAgICAgIGNhbGxiYWNrKGNvbnRyb2wsIHZhbGlkYXRlKTtcclxuICAgICAgICAgICAgICByZXR1cm4gdmFsaWRhdGU7XHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICBjYXRjaEVycm9yKGVyciA9PiB7XHJcbiAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihcIltBc3luY1ZhbGlkYXRvcl0gRXZhbHVhdGlvbiBlcnJvclwiLCB7IGV4cHJlc3Npb246IGl0ZW0uZXhwcmVzc2lvbiwgZXJyIH0pO1xyXG4gICAgICAgICAgICAgIHJldHVybiB0aGlzLm51bGxPYnNlcnZlcjtcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHN0YXRlID0geyB2YWx1ZTogdiwgcmVzdWx0OiByZXN1bHQgfTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gc3RhdGUucmVzdWx0O1xyXG4gICAgfTtcclxuXHJcbiAgICByZXR1cm4gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCkgPT4ge1xyXG4gICAgICBpZiAodGhpcy5zdXBwcmVzcykgcmV0dXJuIHRoaXMubnVsbE9ic2VydmVyO1xyXG4gICAgICBjb25zdCByZXN1bHQgPSBjb21wdXRlT25jZShjb250cm9sKTsgICAgICBcclxuICAgICAgaWYgKCFpc09ic2VydmFibGUocmVzdWx0KSkge1xyXG4gICAgICAgIGNvbnNvbGUud2FybihcclxuICAgICAgICAgIFwiW0FzeW5jVmFsaWRhdG9yXSBFeHBlY3RlZCBvYnNlcnZhYmxlIGJ1dCBnb3Qgbm9uLW9ic2VydmFibGUgcmVzdWx0XCIsXHJcbiAgICAgICAgICB7IGV4cHJlc3Npb246IGl0ZW0uZXhwcmVzc2lvbiwgdmFsdWU6IGNvbnRyb2wudmFsdWUsIHJlc3VsdCwgcnVsZTogaXRlbSB9XHJcbiAgICAgICAgKTtcclxuICAgICAgICByZXR1cm4gdGhpcy5udWxsT2JzZXJ2ZXI7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIHJlc3VsdCBhcyBPYnNlcnZhYmxlPGFueT47XHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB2YWxpZGF0aW9uRXJyb3JzKGZvcm1Hcm91cDogRm9ybUdyb3VwLCBpdGVtOiBWYWxpZGF0aW9uUnVsZSkge1xyXG4gICAgY29uc3QgbWVzc2FnZSA9IHRoaXMucHJvZ3JhbW1hYmlsaXR5LmV2YWx1YXRlU3RyaW5nKGZvcm1Hcm91cCwgaXRlbS5tZXNzYWdlKTtcclxuICAgIGNvbnN0IHZhbGlkYXRpb25FcnJvciA9IHsgZXJyb3I6IHRydWUsIG1lc3NhZ2UgfTtcclxuICAgIHJldHVybiB2YWxpZGF0aW9uRXJyb3I7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHdhdGNoRm9yVmFsaWRhdGlvbihmb3JtR3JvdXA6IEZvcm1Hcm91cFxyXG4gICAgLCBjb250cm9sOiBBYnN0cmFjdENvbnRyb2xcclxuICAgICwga2V5OiBzdHJpbmdcclxuICAgICwgdmFsaWRhdGlvbnM6IFZhbGlkYXRpb25SdWxlW11cclxuICAgICwgY2FsbGJhY2tzOiBDYWxsYmFja1JlZ2lzdHJ5KTogdm9pZCB7XHJcblxyXG4gICAgaWYgKEFycmF5LmlzQXJyYXkodmFsaWRhdGlvbnMpKSB7XHJcbiAgICAgIGNvbnN0IGV4cHJlc3Npb25zID0gdmFsaWRhdGlvbnNcclxuICAgICAgICAuZmlsdGVyKGl0ZW0gPT4gdGhpcy5wcm9ncmFtbWFiaWxpdHkuaXNFeHByZXNzaW9uKGl0ZW0uZXhwcmVzc2lvbikpXHJcbiAgICAgICAgLm1hcChpdGVtID0+IFwiPVwiICsgdGhpcy5wcm9ncmFtbWFiaWxpdHkuZ2V0RXhwcmVzc2lvbihpdGVtLmV4cHJlc3Npb24pKTtcclxuXHJcbiAgICAgIGlmIChleHByZXNzaW9ucy5sZW5ndGggPT09IDApIHJldHVybjtcclxuXHJcbiAgICAgIGNvbnN0IGZlZWxhYmxlID0gdG9GZWVsYWJsZShleHByZXNzaW9ucyk7XHJcblxyXG4gICAgICBjb25zdCBkZXBlbmRlbmNpZXMgPSB0aGlzLnByb2dyYW1tYWJpbGl0eS5nZXREZXBlbmRlbmNpZXMoZmVlbGFibGUpXHJcbiAgICAgICAgLmZpbHRlcihkZXAgPT4gZGVwICE9PSBrZXkpO1xyXG5cclxuICAgICAgaWYgKGRlcGVuZGVuY2llcy5sZW5ndGggPT09IDApIHJldHVybjtcclxuXHJcbiAgICAgIHRoaXMucHJvZ3JhbW1hYmlsaXR5LndhdGNoKGZvcm1Hcm91cCwgZGVwZW5kZW5jaWVzLCAoKSA9PiB7XHJcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICBjYWxsYmFja3MuaW52b2tlKCk7XHJcbiAgICAgICAgICBjb250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBsb2dWYWxpZGF0aW9uID0gKGNvbXBvbmVudDogYW55LCBydWxlOiBWYWxpZGF0aW9uUnVsZSwgY29udHJvbDogQWJzdHJhY3RDb250cm9sLCByZXN1bHQ6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsKSA9PiB7XHJcbiAgICBpZiAodGhpcy5wcm9ncmFtbWFiaWxpdHkudmVyYm9zZSkge1xyXG4gICAgICBpZiAocmVzdWx0ICE9IG51bGwpIHtcclxuICAgICAgICBjb25zb2xlLndhcm4oXCJbVmFsaWRhdGlvbl0gRmFpbGVkXCIsIHsgY29udHJvbCwgY29tcG9uZW50LCBydWxlLCByZXN1bHQgfSk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgY29uc29sZS5sb2coXCJbVmFsaWRhdGlvbl0gU3VjY2Vzc1wiLCB7IGNvbnRyb2wsIGNvbXBvbmVudCwgcnVsZSwgcmVzdWx0IH0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHJlYWRvbmx5IG51bGxPYnNlcnZlciA9IG9mKG51bGwpO1xyXG5cclxuICBwcml2YXRlIGdldCBsYW5ndWFnZSgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMubGFuZ3VhZ2VTZXJ2aWNlLmdldExhbmd1YWdlKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGxvY2FsZShjb21wb25lbnQ6IGFueSwga2V5OiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIGxvY2FsaXplKHRoaXMubGFuZ3VhZ2UsIGNvbXBvbmVudCwga2V5KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0UmVxdWlyZWRWYWxpZGF0b3IoY29tcG9uZW50OiBhbnkpOiBWYWxpZGF0b3JGbiB7XHJcbiAgICBpZiAodGhpcy5pc1RydWVWYWxpZGF0b3IoY29tcG9uZW50KSkge1xyXG4gICAgICByZXR1cm4gdGhpcy5yZXF1aXJlZFRydWVWYWxpZGF0b3IuYmluZCh0aGlzKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICByZXR1cm4gdGhpcy5yZXF1aXJlZFZhbGlkYXRvci5iaW5kKHRoaXMpO1xyXG4gICAgfSAgXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHJlcXVpcmVkVmFsaWRhdG9yKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcclxuICAgIGlmIChWYWxpZGF0b3JzLnJlcXVpcmVkKGNvbnRyb2wpID09IG51bGwpIHtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgICByZXR1cm4geyBlcnJvcjogdHJ1ZSwgbWVzc2FnZTogdGhpcy5nZXRSZXF1aXJlZE1lc3NhZ2UoKSB9ICAgIFxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSByZXF1aXJlZFRydWVWYWxpZGF0b3IoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xyXG4gICAgaWYgKFZhbGlkYXRvcnMucmVxdWlyZWRUcnVlKGNvbnRyb2wpID09IG51bGwpIHtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgICByZXR1cm4geyBlcnJvcjogdHJ1ZSwgbWVzc2FnZTogdGhpcy5nZXRSZXF1aXJlZE1lc3NhZ2UoKSB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGlzVHJ1ZVZhbGlkYXRvcihjb21wb25lbnQ6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIGNvbXBvbmVudD8udHlwZSA9PT0gJ2NoZWNrYm94JztcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0UmVxdWlyZWRNZXNzYWdlKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5sb2NhbGUoVGV4dHMsICdSZXF1aXJlZEZpZWxkJyk7XHJcbiAgfVxyXG59XHJcblxyXG50eXBlIFZhbGlkYXRpb25DYWxsYmFjayA9IChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wsIHJlc3VsdDogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwpID0+IHZvaWQ7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIENvbXBvbmVudENvbnRleHQge1xyXG4gIGNvbXBvbmVudDogYW55O1xyXG4gIGZvcm1Hcm91cDogRm9ybUdyb3VwO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFZhbGlkYXRpb25SdWxlIHtcclxuICBleHByZXNzaW9uOiBzdHJpbmc7XHJcbiAgdHlwZTogXCJ2YWxpZGF0ZVwiIHwgXCJpbnZhbGlkYXRlXCI7XHJcbiAgbWVzc2FnZTogc3RyaW5nLFxyXG4gIGFzeW5jOiBib29sZWFuXHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIFZhbGlkYXRpb25Db2xsZWN0aW9uID0gTWFwPEFic3RyYWN0Q29udHJvbCwgQ29tcG9uZW50Q29udGV4dD47XHJcbiJdfQ==
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export function isNullOrEmpty(value) {
|
|
2
|
+
return value === null
|
|
3
|
+
|| value === undefined
|
|
4
|
+
|| (typeof value === 'string' && value.trim() === '');
|
|
5
|
+
}
|
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RyaW5nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNpcmlvL3NyYy9saWIvdXRpbHMvc3RyaW5nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sVUFBVSxhQUFhLENBQUMsS0FBYTtJQUN6QyxPQUFPLEtBQUssS0FBSyxJQUFJO1dBQ2hCLEtBQUssS0FBSyxTQUFTO1dBQ25CLENBQUMsT0FBTyxLQUFLLEtBQUssUUFBUSxJQUFJLEtBQUssQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztBQUMxRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGZ1bmN0aW9uIGlzTnVsbE9yRW1wdHkodmFsdWU6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gIHJldHVybiB2YWx1ZSA9PT0gbnVsbFxyXG4gICAgfHwgdmFsdWUgPT09IHVuZGVmaW5lZFxyXG4gICAgfHwgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgJiYgdmFsdWUudHJpbSgpID09PSAnJyk7XHJcbn1cclxuIl19
|