occam-nominal 1.0.305 → 1.0.306
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/lib/element/deduction.js +75 -64
- package/lib/element/frame.js +86 -70
- package/lib/element/goal.js +73 -58
- package/lib/element/judgement.js +2 -2
- package/lib/utilities/string.js +2 -2
- package/package.json +3 -3
- package/src/element/deduction.js +84 -73
- package/src/element/frame.js +107 -80
- package/src/element/goal.js +85 -63
- package/src/element/judgement.js +1 -1
- package/src/utilities/string.js +2 -1
package/lib/element/deduction.js
CHANGED
|
@@ -12,7 +12,7 @@ const _occamlanguages = require("occam-languages");
|
|
|
12
12
|
const _elements = require("../elements");
|
|
13
13
|
const _instantiate = require("../process/instantiate");
|
|
14
14
|
const _context = require("../utilities/context");
|
|
15
|
-
const { breakPointFromJSON, breakPointToBreakPointJSON } = _occamlanguages.breakPointUtilities;
|
|
15
|
+
const { breakable, breakPointFromJSON, breakPointToBreakPointJSON } = _occamlanguages.breakPointUtilities;
|
|
16
16
|
const _default = (0, _elements.define)(class Deduction extends _occamlanguages.Element {
|
|
17
17
|
constructor(context, string, node, breakPoint, statement){
|
|
18
18
|
super(context, string, node, breakPoint);
|
|
@@ -25,85 +25,96 @@ const _default = (0, _elements.define)(class Deduction extends _occamlanguages.E
|
|
|
25
25
|
const node = this.getNode(), deductionNode = node; ///
|
|
26
26
|
return deductionNode;
|
|
27
27
|
}
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
28
|
+
isNonBreakable() {
|
|
29
|
+
const nonsensical = this.statement === null;
|
|
30
|
+
return nonsensical;
|
|
31
|
+
}
|
|
32
|
+
verify = breakable(function(context, continuation) {
|
|
31
33
|
const deductionString = this.getString(); ///
|
|
32
34
|
context.trace(`Verifying the '${deductionString}' deduction...`);
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
35
|
+
const nonsensical = this.isNonBreakable();
|
|
36
|
+
if (nonsensical) {
|
|
37
|
+
const verifies = false;
|
|
38
|
+
context.debug(`Unable to verify the '${deductionString}' deduction because it is nonsense.`);
|
|
39
|
+
continuation(verifies);
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
(0, _context.declare)((context)=>{
|
|
43
|
+
(0, _context.elide)((context)=>{
|
|
44
|
+
this.validate(context, (validates)=>{
|
|
45
|
+
let verifies = false;
|
|
37
46
|
if (validates) {
|
|
38
47
|
verifies = true;
|
|
39
48
|
}
|
|
40
|
-
|
|
49
|
+
if (verifies) {
|
|
50
|
+
context.debug(`...verified the '${deductionString}' deduction.`);
|
|
51
|
+
}
|
|
52
|
+
continuation(verifies);
|
|
53
|
+
});
|
|
41
54
|
}, context);
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
if (verifies) {
|
|
46
|
-
context.debug(`...verified the '${deductionString}' deduction.`);
|
|
47
|
-
}
|
|
48
|
-
return verifies;
|
|
49
|
-
}
|
|
50
|
-
async validate(context) {
|
|
51
|
-
let validates = false;
|
|
55
|
+
}, context);
|
|
56
|
+
});
|
|
57
|
+
validate(context, continuation) {
|
|
52
58
|
const deductionString = this.getString(); ///
|
|
53
59
|
context.trace(`Validating the '${deductionString}' deduction...`);
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
60
|
+
(0, _context.attempt)((context)=>{
|
|
61
|
+
this.validateStatement(context, (statementValidates)=>{
|
|
62
|
+
let validates = false;
|
|
63
|
+
if (statementValidates) {
|
|
64
|
+
validates = true;
|
|
65
|
+
}
|
|
66
|
+
if (validates) {
|
|
67
|
+
this.commit(context);
|
|
68
|
+
}
|
|
69
|
+
if (validates) {
|
|
70
|
+
context.debug(`...validated the '${deductionString}' deduction.`);
|
|
71
|
+
}
|
|
72
|
+
continuation(validates);
|
|
73
|
+
});
|
|
62
74
|
}, context);
|
|
63
|
-
if (validates) {
|
|
64
|
-
context.debug(`...validated the '${deductionString}' deduction.`);
|
|
65
|
-
}
|
|
66
|
-
return validates;
|
|
67
75
|
}
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
76
|
+
validateStatement(context, continuation) {
|
|
77
|
+
const deductionString = this.getString(); ///
|
|
78
|
+
context.trace(`Validating the '${deductionString}' deduction's statement...`);
|
|
79
|
+
this.statement.validate(context, (statement)=>{
|
|
80
|
+
let statementValidates = false;
|
|
81
|
+
if (statement !== null) {
|
|
82
|
+
statementValidates = true;
|
|
83
|
+
}
|
|
84
|
+
if (statementValidates) {
|
|
85
|
+
context.trace(`...validated the '${deductionString}' deduction's statement.`);
|
|
86
|
+
}
|
|
87
|
+
continuation(statementValidates);
|
|
88
|
+
});
|
|
80
89
|
}
|
|
81
|
-
|
|
82
|
-
let stepUnifies = false;
|
|
90
|
+
unifyStep(step, context, continuation) {
|
|
83
91
|
const stepString = step.getString(), deductionString = this.getString(); ///
|
|
84
92
|
context.trace(`Unifying the '${stepString}' step with the '${deductionString}' deduction...`);
|
|
85
|
-
const stepContext = step.getContext(),
|
|
86
|
-
|
|
87
|
-
const statement = step.getStatement()
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
93
|
+
const stepContext = step.getContext(), deductionContext = this.getContext(), generalContext = deductionContext, specificContext = stepContext; ///
|
|
94
|
+
(0, _context.reconcile)((specificContext)=>{
|
|
95
|
+
const statement = step.getStatement();
|
|
96
|
+
this.statement.unifyStatement(statement, generalContext, specificContext, (statementUnifies)=>{
|
|
97
|
+
let stepUnifies = false;
|
|
98
|
+
if (statementUnifies) {
|
|
99
|
+
specificContext.commit(context);
|
|
100
|
+
stepUnifies = true;
|
|
101
|
+
}
|
|
102
|
+
if (stepUnifies) {
|
|
103
|
+
context.debug(`...unified the '${stepString}' step with the '${deductionString}' deduction.`);
|
|
104
|
+
}
|
|
105
|
+
continuation(stepUnifies);
|
|
106
|
+
});
|
|
92
107
|
}, specificContext);
|
|
93
|
-
if (stepUnifies) {
|
|
94
|
-
context.debug(`...unified the '${stepString}' step with the '${deductionString}' deduction.`);
|
|
95
|
-
}
|
|
96
|
-
return stepUnifies;
|
|
97
108
|
}
|
|
98
|
-
|
|
99
|
-
let statementUnifies;
|
|
109
|
+
unifyStatement(statement, generalContext, specificContext, continuation) {
|
|
100
110
|
const context = specificContext, deductionString = this.getString(), statementString = statement.getString();
|
|
101
111
|
context.trace(`Unifying the '${statementString}' statement with the '${deductionString}' deduction's statement...`);
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
112
|
+
this.statement.unifyStatement(statement, generalContext, specificContext, (statementUnifies)=>{
|
|
113
|
+
if (statementUnifies) {
|
|
114
|
+
context.debug(`...unified the '${statementString}' statement with the '${deductionString}' deduction's statement.`);
|
|
115
|
+
}
|
|
116
|
+
continuation(statementUnifies);
|
|
117
|
+
});
|
|
107
118
|
}
|
|
108
119
|
toJSON() {
|
|
109
120
|
const context = this.getContext();
|
|
@@ -138,4 +149,4 @@ function statementFromDeductionNode(deductionNode, context) {
|
|
|
138
149
|
return statement;
|
|
139
150
|
}
|
|
140
151
|
|
|
141
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbGVtZW50L2RlZHVjdGlvbi5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgRWxlbWVudCwgYnJlYWtQb2ludFV0aWxpdGllcyB9IGZyb20gXCJvY2NhbS1sYW5ndWFnZXNcIjtcblxuaW1wb3J0IHsgZGVmaW5lIH0gZnJvbSBcIi4uL2VsZW1lbnRzXCI7XG5pbXBvcnQgeyBpbnN0YW50aWF0ZURlZHVjdGlvbiB9IGZyb20gXCIuLi9wcm9jZXNzL2luc3RhbnRpYXRlXCI7XG5pbXBvcnQgeyBlbGlkZSwgZGVjbGFyZSwgYXR0ZW1wdCwgc2VyaWFsaXNlLCB1bnNlcmlhbGlzZSwgaW5zdGFudGlhdGUsIHJlY29uY2lsZSB9IGZyb20gXCIuLi91dGlsaXRpZXMvY29udGV4dFwiO1xuXG5jb25zdCB7IGJyZWFrUG9pbnRGcm9tSlNPTiwgYnJlYWtQb2ludFRvQnJlYWtQb2ludEpTT04gfSA9IGJyZWFrUG9pbnRVdGlsaXRpZXM7XG5cbmV4cG9ydCBkZWZhdWx0IGRlZmluZShjbGFzcyBEZWR1Y3Rpb24gZXh0ZW5kcyBFbGVtZW50IHtcbiAgY29uc3RydWN0b3IoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCBzdGF0ZW1lbnQpIHtcbiAgICBzdXBlcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQpO1xuXG4gICAgdGhpcy5zdGF0ZW1lbnQgPSBzdGF0ZW1lbnQ7XG4gIH1cblxuICBnZXRTdGF0ZW1lbnQoKSB7XG4gICAgcmV0dXJuIHRoaXMuc3RhdGVtZW50O1xuICB9XG5cbiAgZ2V0RGVkdWN0aW9uTm9kZSgpIHtcbiAgICBjb25zdCBub2RlID0gdGhpcy5nZXROb2RlKCksXG4gICAgICAgICAgZGVkdWN0aW9uTm9kZSA9IG5vZGU7IC8vL1xuXG4gICAgcmV0dXJuIGRlZHVjdGlvbk5vZGU7XG4gIH1cblxuICBhc3luYyB2ZXJpZnkoY29udGV4dCkge1xuICAgIGxldCB2ZXJpZmllcyA9IGZhbHNlO1xuXG4gICAgYXdhaXQgdGhpcy5icmVhayhjb250ZXh0KTtcblxuICAgIGNvbnN0IGRlZHVjdGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7ZGVkdWN0aW9uU3RyaW5nfScgZGVkdWN0aW9uLi4uYCk7XG5cbiAgICBpZiAodGhpcy5zdGF0ZW1lbnQgIT09IG51bGwpIHtcbiAgICAgIGRlY2xhcmUoKGNvbnRleHQpID0+IHtcbiAgICAgICAgZWxpZGUoKGNvbnRleHQpID0+IHtcbiAgICAgICAgICBjb25zdCB2YWxpZGF0ZXMgPSB0aGlzLnZhbGlkYXRlKGNvbnRleHQpO1xuXG4gICAgICAgICAgaWYgKHZhbGlkYXRlcykge1xuICAgICAgICAgICAgdmVyaWZpZXMgPSB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSwgY29udGV4dCk7XG4gICAgICB9LCBjb250ZXh0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgVW5hYmxlIHRvIHZlcmlmeSB0aGUgJyR7ZGVkdWN0aW9uU3RyaW5nfScgZGVkdWN0aW9uIGJlY2F1c2UgaXQgaXMgbm9uc2Vuc2UuYCk7XG4gICAgfVxuXG4gICAgaWYgKHZlcmlmaWVzKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7ZGVkdWN0aW9uU3RyaW5nfScgZGVkdWN0aW9uLmApO1xuICAgIH1cblxuICAgIHJldHVybiB2ZXJpZmllcztcbiAgfVxuXG4gIGFzeW5jIHZhbGlkYXRlKGNvbnRleHQpIHtcbiAgICBsZXQgdmFsaWRhdGVzID0gZmFsc2U7XG5cbiAgICBjb25zdCBkZWR1Y3Rpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtkZWR1Y3Rpb25TdHJpbmd9JyBkZWR1Y3Rpb24uLi5gKTtcblxuICAgIGF3YWl0IGF0dGVtcHQoYXN5bmMgKGNvbnRleHQpID0+IHtcbiAgICAgIGNvbnN0IHN0YXRlbWVudFZhbGlkYXRlcyA9IGF3YWl0IHRoaXMudmFsaWRhdGVTdGF0ZW1lbnQoY29udGV4dCk7XG5cbiAgICAgIGlmIChzdGF0ZW1lbnRWYWxpZGF0ZXMpIHtcbiAgICAgICAgdmFsaWRhdGVzID0gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKHZhbGlkYXRlcykge1xuICAgICAgICB0aGlzLmNvbW1pdChjb250ZXh0KTtcbiAgICAgIH1cbiAgICB9LCBjb250ZXh0KTtcblxuICAgIGlmICh2YWxpZGF0ZXMpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7ZGVkdWN0aW9uU3RyaW5nfScgZGVkdWN0aW9uLmApO1xuICAgIH1cblxuICAgIHJldHVybiB2YWxpZGF0ZXM7XG4gIH1cblxuICBhc3luYyB2YWxpZGF0ZVN0YXRlbWVudChjb250ZXh0KSB7XG4gICAgbGV0IHN0YXRlbWVudFZhbGlkYXRlcyA9IGZhbHNlO1xuXG4gICAgY29uc3QgZGVkdWN0aW9ublN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke2RlZHVjdGlvbm5TdHJpbmd9JyBkZWR1Y3Rpb25uJ3Mgc3RhdGVtZW50Li4uYCk7XG5cbiAgICBjb25zdCBzdGF0ZW1lbnQgPSBhd2FpdCB0aGlzLnN0YXRlbWVudC52YWxpZGF0ZShjb250ZXh0KTtcblxuICAgIGlmIChzdGF0ZW1lbnQgIT09IG51bGwpIHtcbiAgICAgIHN0YXRlbWVudFZhbGlkYXRlcyA9IHRydWU7XG4gICAgfVxuXG4gICAgaWYgKHN0YXRlbWVudFZhbGlkYXRlcykge1xuICAgICAgY29udGV4dC50cmFjZShgLi4udmFsaWRhdGVkIHRoZSAnJHtkZWR1Y3Rpb25uU3RyaW5nfScgZGVkdWN0aW9ubidzIHN0YXRlbWVudC5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gc3RhdGVtZW50VmFsaWRhdGVzO1xuICB9XG5cbiAgYXN5bmMgdW5pZnlTdGVwKHN0ZXAsIGNvbnRleHQpIHtcbiAgICBsZXQgc3RlcFVuaWZpZXMgPSBmYWxzZTtcblxuICAgIGNvbnN0IHN0ZXBTdHJpbmcgPSBzdGVwLmdldFN0cmluZygpLFxuICAgICAgICAgIGRlZHVjdGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHtzdGVwU3RyaW5nfScgc3RlcCB3aXRoIHRoZSAnJHtkZWR1Y3Rpb25TdHJpbmd9JyBkZWR1Y3Rpb24uLi5gKTtcblxuICAgIGNvbnN0IHN0ZXBDb250ZXh0ID0gc3RlcC5nZXRDb250ZXh0KCksXG4gICAgICAgICAgZGVkdWN0aW9ubkNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSwgLy8vXG4gICAgICAgICAgZ2VuZXJhbENvbnRleHQgPSBkZWR1Y3Rpb25uQ29udGV4dCwgLy8vXG4gICAgICAgICAgc3BlY2lmaWNDb250ZXh0ID0gc3RlcENvbnRleHQ7ICAvLy9cblxuICAgIGF3YWl0IHJlY29uY2lsZShhc3luYyAoc3BlY2lmaWNDb250ZXh0KSA9PiB7XG4gICAgICBjb25zdCBzdGF0ZW1lbnQgPSBzdGVwLmdldFN0YXRlbWVudCgpLFxuICAgICAgICAgICAgc3RhdGVtZW50VW5pZmllcyA9IGF3YWl0IHRoaXMudW5pZnlTdGF0ZW1lbnQoc3RhdGVtZW50LCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0KTtcblxuICAgICAgaWYgKHN0YXRlbWVudFVuaWZpZXMpIHtcbiAgICAgICAgc3BlY2lmaWNDb250ZXh0LmNvbW1pdChjb250ZXh0KTtcblxuICAgICAgICBzdGVwVW5pZmllcyA9IHRydWU7XG4gICAgICB9XG4gICAgfSwgc3BlY2lmaWNDb250ZXh0KTtcblxuICAgIGlmIChzdGVwVW5pZmllcykge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udW5pZmllZCB0aGUgJyR7c3RlcFN0cmluZ30nIHN0ZXAgd2l0aCB0aGUgJyR7ZGVkdWN0aW9uU3RyaW5nfScgZGVkdWN0aW9uLmApO1xuICAgIH1cblxuICAgIHJldHVybiBzdGVwVW5pZmllcztcbiAgfVxuXG4gIGFzeW5jIHVuaWZ5U3RhdGVtZW50KHN0YXRlbWVudCwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCkge1xuICAgIGxldCBzdGF0ZW1lbnRVbmlmaWVzO1xuXG4gICAgY29uc3QgY29udGV4dCA9IHNwZWNpZmljQ29udGV4dCwgIC8vL1xuICAgICAgICAgIGRlZHVjdGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCksIC8vL1xuICAgICAgICAgIHN0YXRlbWVudFN0cmluZyA9IHN0YXRlbWVudC5nZXRTdHJpbmcoKTtcblxuICAgIGNvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHtzdGF0ZW1lbnRTdHJpbmd9JyBzdGF0ZW1lbnQgd2l0aCB0aGUgJyR7ZGVkdWN0aW9uU3RyaW5nfScgZGVkdWN0aW9uJ3Mgc3RhdGVtZW50Li4uYCk7XG5cbiAgICBzdGF0ZW1lbnRVbmlmaWVzID0gYXdhaXQgdGhpcy5zdGF0ZW1lbnQudW5pZnlTdGF0ZW1lbnQoc3RhdGVtZW50LCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0KTtcblxuICAgIGlmIChzdGF0ZW1lbnRVbmlmaWVzKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi51bmlmaWVkIHRoZSAnJHtzdGF0ZW1lbnRTdHJpbmd9JyBzdGF0ZW1lbnQgd2l0aCB0aGUgJyR7ZGVkdWN0aW9uU3RyaW5nfScgZGVkdWN0aW9uJ3Mgc3RhdGVtZW50LmApO1xuICAgIH1cblxuICAgIHJldHVybiBzdGF0ZW1lbnRVbmlmaWVzO1xuICB9XG5cbiAgdG9KU09OKCkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKTtcblxuICAgIHJldHVybiBzZXJpYWxpc2UoKGNvbnRleHQpID0+IHtcbiAgICAgIGNvbnN0IHN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7XG5cbiAgICAgIGxldCBicmVha1BvaW50O1xuXG4gICAgICBicmVha1BvaW50ID0gdGhpcy5nZXRCcmVha1BvaW50KCk7XG5cbiAgICAgIGNvbnN0IGJyZWFrUG9pbnRKU09OID0gYnJlYWtQb2ludFRvQnJlYWtQb2ludEpTT04oYnJlYWtQb2ludCk7XG5cbiAgICAgIGJyZWFrUG9pbnQgPSBicmVha1BvaW50SlNPTjsgIC8vL1xuXG4gICAgICBjb25zdCBqc29uID0ge1xuICAgICAgICBjb250ZXh0LFxuICAgICAgICBzdHJpbmcsXG4gICAgICAgIGJyZWFrUG9pbnRcbiAgICAgIH07XG5cbiAgICAgIHJldHVybiBqc29uO1xuICAgIH0sIGNvbnRleHQpO1xuICB9XG5cbiAgc3RhdGljIG5hbWUgPSBcIkRlZHVjdGlvblwiO1xuXG4gIHN0YXRpYyBmcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gICAgbGV0IGRlZHVjdGlvbjtcblxuICAgIGluc3RhbnRpYXRlKChjb250ZXh0KSA9PiB7XG4gICAgICB1bnNlcmlhbGlzZSgoanNvbiwgY29udGV4dCkgPT4ge1xuICAgICAgICBjb25zdCB7IHN0cmluZyB9ID0ganNvbixcbiAgICAgICAgICAgICAgZGVkdWN0aW9uTm9kZSA9IGluc3RhbnRpYXRlRGVkdWN0aW9uKHN0cmluZywgY29udGV4dCksXG4gICAgICAgICAgICAgIG5vZGUgPSBkZWR1Y3Rpb25Ob2RlLCAgLy8vXG4gICAgICAgICAgICAgIGJyZWFrUG9pbnQgPSBicmVha1BvaW50RnJvbUpTT04oanNvbiksXG4gICAgICAgICAgICAgIHN0YXRlbWVudCA9IHN0YXRlbWVudEZyb21EZWR1Y3Rpb25Ob2RlKGRlZHVjdGlvbk5vZGUsIGNvbnRleHQpO1xuXG4gICAgICAgIGRlZHVjdGlvbiA9IG5ldyBEZWR1Y3Rpb24oY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCBzdGF0ZW1lbnQpO1xuICAgICAgfSwganNvbiwgY29udGV4dCk7XG4gICAgfSwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gZGVkdWN0aW9uO1xuICB9XG59KTtcblxuZnVuY3Rpb24gc3RhdGVtZW50RnJvbURlZHVjdGlvbk5vZGUoZGVkdWN0aW9uTm9kZSwgY29udGV4dCkge1xuICBjb25zdCBzdGF0ZW1lbnROb2RlID0gZGVkdWN0aW9uTm9kZS5nZXRTdGF0ZW1lbnROb2RlKCksXG4gICAgICAgIHN0YXRlbWVudCA9IGNvbnRleHQuZmluZFN0YXRlbWVudEJ5U3RhdGVtZW50Tm9kZShzdGF0ZW1lbnROb2RlKTtcblxuICByZXR1cm4gc3RhdGVtZW50O1xufVxuIl0sIm5hbWVzIjpbImJyZWFrUG9pbnRGcm9tSlNPTiIsImJyZWFrUG9pbnRUb0JyZWFrUG9pbnRKU09OIiwiYnJlYWtQb2ludFV0aWxpdGllcyIsImRlZmluZSIsIkRlZHVjdGlvbiIsIkVsZW1lbnQiLCJjb250ZXh0Iiwic3RyaW5nIiwibm9kZSIsImJyZWFrUG9pbnQiLCJzdGF0ZW1lbnQiLCJnZXRTdGF0ZW1lbnQiLCJnZXREZWR1Y3Rpb25Ob2RlIiwiZ2V0Tm9kZSIsImRlZHVjdGlvbk5vZGUiLCJ2ZXJpZnkiLCJ2ZXJpZmllcyIsImJyZWFrIiwiZGVkdWN0aW9uU3RyaW5nIiwiZ2V0U3RyaW5nIiwidHJhY2UiLCJkZWNsYXJlIiwiZWxpZGUiLCJ2YWxpZGF0ZXMiLCJ2YWxpZGF0ZSIsImRlYnVnIiwiYXR0ZW1wdCIsInN0YXRlbWVudFZhbGlkYXRlcyIsInZhbGlkYXRlU3RhdGVtZW50IiwiY29tbWl0IiwiZGVkdWN0aW9ublN0cmluZyIsInVuaWZ5U3RlcCIsInN0ZXAiLCJzdGVwVW5pZmllcyIsInN0ZXBTdHJpbmciLCJzdGVwQ29udGV4dCIsImdldENvbnRleHQiLCJkZWR1Y3Rpb25uQ29udGV4dCIsImdlbmVyYWxDb250ZXh0Iiwic3BlY2lmaWNDb250ZXh0IiwicmVjb25jaWxlIiwic3RhdGVtZW50VW5pZmllcyIsInVuaWZ5U3RhdGVtZW50Iiwic3RhdGVtZW50U3RyaW5nIiwidG9KU09OIiwic2VyaWFsaXNlIiwiZ2V0QnJlYWtQb2ludCIsImJyZWFrUG9pbnRKU09OIiwianNvbiIsIm5hbWUiLCJmcm9tSlNPTiIsImRlZHVjdGlvbiIsImluc3RhbnRpYXRlIiwidW5zZXJpYWxpc2UiLCJpbnN0YW50aWF0ZURlZHVjdGlvbiIsInN0YXRlbWVudEZyb21EZWR1Y3Rpb25Ob2RlIiwic3RhdGVtZW50Tm9kZSIsImdldFN0YXRlbWVudE5vZGUiLCJmaW5kU3RhdGVtZW50QnlTdGF0ZW1lbnROb2RlIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFVQTs7O2VBQUE7OztnQ0FSNkM7MEJBRXRCOzZCQUNjO3lCQUNtRDtBQUV4RixNQUFNLEVBQUVBLGtCQUFrQixFQUFFQywwQkFBMEIsRUFBRSxHQUFHQyxtQ0FBbUI7TUFFOUUsV0FBZUMsSUFBQUEsZ0JBQU0sRUFBQyxNQUFNQyxrQkFBa0JDLHVCQUFPO0lBQ25ELFlBQVlDLE9BQU8sRUFBRUMsTUFBTSxFQUFFQyxJQUFJLEVBQUVDLFVBQVUsRUFBRUMsU0FBUyxDQUFFO1FBQ3hELEtBQUssQ0FBQ0osU0FBU0MsUUFBUUMsTUFBTUM7UUFFN0IsSUFBSSxDQUFDQyxTQUFTLEdBQUdBO0lBQ25CO0lBRUFDLGVBQWU7UUFDYixPQUFPLElBQUksQ0FBQ0QsU0FBUztJQUN2QjtJQUVBRSxtQkFBbUI7UUFDakIsTUFBTUosT0FBTyxJQUFJLENBQUNLLE9BQU8sSUFDbkJDLGdCQUFnQk4sTUFBTSxHQUFHO1FBRS9CLE9BQU9NO0lBQ1Q7SUFFQSxNQUFNQyxPQUFPVCxPQUFPLEVBQUU7UUFDcEIsSUFBSVUsV0FBVztRQUVmLE1BQU0sSUFBSSxDQUFDQyxLQUFLLENBQUNYO1FBRWpCLE1BQU1ZLGtCQUFrQixJQUFJLENBQUNDLFNBQVMsSUFBSyxHQUFHO1FBRTlDYixRQUFRYyxLQUFLLENBQUMsQ0FBQyxlQUFlLEVBQUVGLGdCQUFnQixjQUFjLENBQUM7UUFFL0QsSUFBSSxJQUFJLENBQUNSLFNBQVMsS0FBSyxNQUFNO1lBQzNCVyxJQUFBQSxnQkFBTyxFQUFDLENBQUNmO2dCQUNQZ0IsSUFBQUEsY0FB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
|
|
152
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbGVtZW50L2RlZHVjdGlvbi5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgRWxlbWVudCwgYnJlYWtQb2ludFV0aWxpdGllcyB9IGZyb20gXCJvY2NhbS1sYW5ndWFnZXNcIjtcblxuaW1wb3J0IHsgZGVmaW5lIH0gZnJvbSBcIi4uL2VsZW1lbnRzXCI7XG5pbXBvcnQgeyBpbnN0YW50aWF0ZURlZHVjdGlvbiB9IGZyb20gXCIuLi9wcm9jZXNzL2luc3RhbnRpYXRlXCI7XG5pbXBvcnQgeyBlbGlkZSwgZGVjbGFyZSwgYXR0ZW1wdCwgc2VyaWFsaXNlLCB1bnNlcmlhbGlzZSwgaW5zdGFudGlhdGUsIHJlY29uY2lsZSB9IGZyb20gXCIuLi91dGlsaXRpZXMvY29udGV4dFwiO1xuXG5jb25zdCB7IGJyZWFrYWJsZSwgYnJlYWtQb2ludEZyb21KU09OLCBicmVha1BvaW50VG9CcmVha1BvaW50SlNPTiB9ID0gYnJlYWtQb2ludFV0aWxpdGllcztcblxuZXhwb3J0IGRlZmF1bHQgZGVmaW5lKGNsYXNzIERlZHVjdGlvbiBleHRlbmRzIEVsZW1lbnQge1xuICBjb25zdHJ1Y3Rvcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIHN0YXRlbWVudCkge1xuICAgIHN1cGVyKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCk7XG5cbiAgICB0aGlzLnN0YXRlbWVudCA9IHN0YXRlbWVudDtcbiAgfVxuXG4gIGdldFN0YXRlbWVudCgpIHtcbiAgICByZXR1cm4gdGhpcy5zdGF0ZW1lbnQ7XG4gIH1cblxuICBnZXREZWR1Y3Rpb25Ob2RlKCkge1xuICAgIGNvbnN0IG5vZGUgPSB0aGlzLmdldE5vZGUoKSxcbiAgICAgICAgICBkZWR1Y3Rpb25Ob2RlID0gbm9kZTsgLy8vXG5cbiAgICByZXR1cm4gZGVkdWN0aW9uTm9kZTtcbiAgfVxuXG4gIGlzTm9uQnJlYWthYmxlKCkge1xuICAgIGNvbnN0IG5vbnNlbnNpY2FsID0gKHRoaXMuc3RhdGVtZW50ID09PSBudWxsKTtcblxuICAgIHJldHVybiBub25zZW5zaWNhbDtcbiAgfVxuXG4gIHZlcmlmeSA9IGJyZWFrYWJsZShmdW5jdGlvbiAoY29udGV4dCwgY29udGludWF0aW9uKSB7XG4gICAgY29uc3QgZGVkdWN0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHtkZWR1Y3Rpb25TdHJpbmd9JyBkZWR1Y3Rpb24uLi5gKTtcblxuICAgIGNvbnN0IG5vbnNlbnNpY2FsID0gdGhpcy5pc05vbkJyZWFrYWJsZSgpO1xuXG4gICAgaWYgKG5vbnNlbnNpY2FsKSB7XG4gICAgICBjb25zdCB2ZXJpZmllcyA9IGZhbHNlO1xuXG4gICAgICBjb250ZXh0LmRlYnVnKGBVbmFibGUgdG8gdmVyaWZ5IHRoZSAnJHtkZWR1Y3Rpb25TdHJpbmd9JyBkZWR1Y3Rpb24gYmVjYXVzZSBpdCBpcyBub25zZW5zZS5gKTtcblxuICAgICAgY29udGludWF0aW9uKHZlcmlmaWVzKTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGRlY2xhcmUoKGNvbnRleHQpID0+IHtcbiAgICAgIGVsaWRlKChjb250ZXh0KSA9PiB7XG4gICAgICAgIHRoaXMudmFsaWRhdGUoY29udGV4dCwgKHZhbGlkYXRlcykgPT4ge1xuICAgICAgICAgIGxldCB2ZXJpZmllcyA9IGZhbHNlO1xuXG4gICAgICAgICAgaWYgKHZhbGlkYXRlcykge1xuICAgICAgICAgICAgdmVyaWZpZXMgPSB0cnVlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmICh2ZXJpZmllcykge1xuICAgICAgICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke2RlZHVjdGlvblN0cmluZ30nIGRlZHVjdGlvbi5gKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb250aW51YXRpb24odmVyaWZpZXMpO1xuICAgICAgICB9KTtcbiAgICAgIH0sIGNvbnRleHQpO1xuICAgIH0sIGNvbnRleHQpO1xuICB9KTtcblxuICB2YWxpZGF0ZShjb250ZXh0LCBjb250aW51YXRpb24pIHtcbiAgICBjb25zdCBkZWR1Y3Rpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtkZWR1Y3Rpb25TdHJpbmd9JyBkZWR1Y3Rpb24uLi5gKTtcblxuICAgIGF0dGVtcHQoKGNvbnRleHQpID0+IHtcbiAgICAgIHRoaXMudmFsaWRhdGVTdGF0ZW1lbnQoY29udGV4dCwgKHN0YXRlbWVudFZhbGlkYXRlcykgPT4ge1xuICAgICAgICBsZXQgdmFsaWRhdGVzID0gZmFsc2U7XG5cbiAgICAgICAgaWYgKHN0YXRlbWVudFZhbGlkYXRlcykge1xuICAgICAgICAgIHZhbGlkYXRlcyA9IHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodmFsaWRhdGVzKSB7XG4gICAgICAgICAgdGhpcy5jb21taXQoY29udGV4dCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodmFsaWRhdGVzKSB7XG4gICAgICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHtkZWR1Y3Rpb25TdHJpbmd9JyBkZWR1Y3Rpb24uYCk7XG4gICAgICAgIH1cblxuICAgICAgICBjb250aW51YXRpb24odmFsaWRhdGVzKTtcbiAgICAgIH0pO1xuICAgIH0sIGNvbnRleHQpO1xuICB9XG5cbiAgdmFsaWRhdGVTdGF0ZW1lbnQoY29udGV4dCwgY29udGludWF0aW9uKSB7XG4gICAgY29uc3QgZGVkdWN0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7ZGVkdWN0aW9uU3RyaW5nfScgZGVkdWN0aW9uJ3Mgc3RhdGVtZW50Li4uYCk7XG5cbiAgICB0aGlzLnN0YXRlbWVudC52YWxpZGF0ZShjb250ZXh0LCAoc3RhdGVtZW50KSA9PiB7XG4gICAgICBsZXQgc3RhdGVtZW50VmFsaWRhdGVzID0gZmFsc2U7XG5cbiAgICAgIGlmIChzdGF0ZW1lbnQgIT09IG51bGwpIHtcbiAgICAgICAgc3RhdGVtZW50VmFsaWRhdGVzID0gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKHN0YXRlbWVudFZhbGlkYXRlcykge1xuICAgICAgICBjb250ZXh0LnRyYWNlKGAuLi52YWxpZGF0ZWQgdGhlICcke2RlZHVjdGlvblN0cmluZ30nIGRlZHVjdGlvbidzIHN0YXRlbWVudC5gKTtcbiAgICAgIH1cblxuICAgICAgY29udGludWF0aW9uKHN0YXRlbWVudFZhbGlkYXRlcyk7XG4gICAgfSk7XG4gIH1cblxuICB1bmlmeVN0ZXAoc3RlcCwgY29udGV4dCwgY29udGludWF0aW9uKSB7XG4gICAgY29uc3Qgc3RlcFN0cmluZyA9IHN0ZXAuZ2V0U3RyaW5nKCksXG4gICAgICAgICAgZGVkdWN0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVW5pZnlpbmcgdGhlICcke3N0ZXBTdHJpbmd9JyBzdGVwIHdpdGggdGhlICcke2RlZHVjdGlvblN0cmluZ30nIGRlZHVjdGlvbi4uLmApO1xuXG4gICAgY29uc3Qgc3RlcENvbnRleHQgPSBzdGVwLmdldENvbnRleHQoKSxcbiAgICAgICAgICBkZWR1Y3Rpb25Db250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksICAvLy9cbiAgICAgICAgICBnZW5lcmFsQ29udGV4dCA9IGRlZHVjdGlvbkNvbnRleHQsIC8vL1xuICAgICAgICAgIHNwZWNpZmljQ29udGV4dCA9IHN0ZXBDb250ZXh0OyAgLy8vXG5cbiAgICByZWNvbmNpbGUoKHNwZWNpZmljQ29udGV4dCkgPT4ge1xuICAgICAgY29uc3Qgc3RhdGVtZW50ID0gc3RlcC5nZXRTdGF0ZW1lbnQoKTtcblxuICAgICAgdGhpcy5zdGF0ZW1lbnQudW5pZnlTdGF0ZW1lbnQoc3RhdGVtZW50LCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCAoc3RhdGVtZW50VW5pZmllcykgPT4ge1xuICAgICAgICBsZXQgc3RlcFVuaWZpZXMgPSBmYWxzZTtcblxuICAgICAgICBpZiAoc3RhdGVtZW50VW5pZmllcykge1xuICAgICAgICAgIHNwZWNpZmljQ29udGV4dC5jb21taXQoY29udGV4dCk7XG5cbiAgICAgICAgICBzdGVwVW5pZmllcyA9IHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoc3RlcFVuaWZpZXMpIHtcbiAgICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi51bmlmaWVkIHRoZSAnJHtzdGVwU3RyaW5nfScgc3RlcCB3aXRoIHRoZSAnJHtkZWR1Y3Rpb25TdHJpbmd9JyBkZWR1Y3Rpb24uYCk7XG4gICAgICAgIH1cblxuICAgICAgICBjb250aW51YXRpb24oc3RlcFVuaWZpZXMpO1xuICAgICAgfSk7XG4gICAgfSwgc3BlY2lmaWNDb250ZXh0KTtcbiAgfVxuXG4gIHVuaWZ5U3RhdGVtZW50KHN0YXRlbWVudCwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgY29udGludWF0aW9uKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHNwZWNpZmljQ29udGV4dCwgIC8vL1xuICAgICAgICAgIGRlZHVjdGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCksIC8vL1xuICAgICAgICAgIHN0YXRlbWVudFN0cmluZyA9IHN0YXRlbWVudC5nZXRTdHJpbmcoKTtcblxuICAgIGNvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHtzdGF0ZW1lbnRTdHJpbmd9JyBzdGF0ZW1lbnQgd2l0aCB0aGUgJyR7ZGVkdWN0aW9uU3RyaW5nfScgZGVkdWN0aW9uJ3Mgc3RhdGVtZW50Li4uYCk7XG5cbiAgICB0aGlzLnN0YXRlbWVudC51bmlmeVN0YXRlbWVudChzdGF0ZW1lbnQsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIChzdGF0ZW1lbnRVbmlmaWVzKSA9PiB7XG4gICAgICBpZiAoc3RhdGVtZW50VW5pZmllcykge1xuICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi51bmlmaWVkIHRoZSAnJHtzdGF0ZW1lbnRTdHJpbmd9JyBzdGF0ZW1lbnQgd2l0aCB0aGUgJyR7ZGVkdWN0aW9uU3RyaW5nfScgZGVkdWN0aW9uJ3Mgc3RhdGVtZW50LmApO1xuICAgICAgfVxuXG4gICAgICBjb250aW51YXRpb24oc3RhdGVtZW50VW5pZmllcyk7XG4gICAgfSk7XG4gIH1cblxuICB0b0pTT04oKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpO1xuXG4gICAgcmV0dXJuIHNlcmlhbGlzZSgoY29udGV4dCkgPT4ge1xuICAgICAgY29uc3Qgc3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTtcblxuICAgICAgbGV0IGJyZWFrUG9pbnQ7XG5cbiAgICAgIGJyZWFrUG9pbnQgPSB0aGlzLmdldEJyZWFrUG9pbnQoKTtcblxuICAgICAgY29uc3QgYnJlYWtQb2ludEpTT04gPSBicmVha1BvaW50VG9CcmVha1BvaW50SlNPTihicmVha1BvaW50KTtcblxuICAgICAgYnJlYWtQb2ludCA9IGJyZWFrUG9pbnRKU09OOyAgLy8vXG5cbiAgICAgIGNvbnN0IGpzb24gPSB7XG4gICAgICAgIGNvbnRleHQsXG4gICAgICAgIHN0cmluZyxcbiAgICAgICAgYnJlYWtQb2ludFxuICAgICAgfTtcblxuICAgICAgcmV0dXJuIGpzb247XG4gICAgfSwgY29udGV4dCk7XG4gIH1cblxuICBzdGF0aWMgbmFtZSA9IFwiRGVkdWN0aW9uXCI7XG5cbiAgc3RhdGljIGZyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgICBsZXQgZGVkdWN0aW9uO1xuXG4gICAgaW5zdGFudGlhdGUoKGNvbnRleHQpID0+IHtcbiAgICAgIHVuc2VyaWFsaXNlKChqc29uLCBjb250ZXh0KSA9PiB7XG4gICAgICAgIGNvbnN0IHsgc3RyaW5nIH0gPSBqc29uLFxuICAgICAgICAgICAgICBkZWR1Y3Rpb25Ob2RlID0gaW5zdGFudGlhdGVEZWR1Y3Rpb24oc3RyaW5nLCBjb250ZXh0KSxcbiAgICAgICAgICAgICAgbm9kZSA9IGRlZHVjdGlvbk5vZGUsICAvLy9cbiAgICAgICAgICAgICAgYnJlYWtQb2ludCA9IGJyZWFrUG9pbnRGcm9tSlNPTihqc29uKSxcbiAgICAgICAgICAgICAgc3RhdGVtZW50ID0gc3RhdGVtZW50RnJvbURlZHVjdGlvbk5vZGUoZGVkdWN0aW9uTm9kZSwgY29udGV4dCk7XG5cbiAgICAgICAgZGVkdWN0aW9uID0gbmV3IERlZHVjdGlvbihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIHN0YXRlbWVudCk7XG4gICAgICB9LCBqc29uLCBjb250ZXh0KTtcbiAgICB9LCBjb250ZXh0KTtcblxuICAgIHJldHVybiBkZWR1Y3Rpb247XG4gIH1cbn0pO1xuXG5mdW5jdGlvbiBzdGF0ZW1lbnRGcm9tRGVkdWN0aW9uTm9kZShkZWR1Y3Rpb25Ob2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IHN0YXRlbWVudE5vZGUgPSBkZWR1Y3Rpb25Ob2RlLmdldFN0YXRlbWVudE5vZGUoKSxcbiAgICAgICAgc3RhdGVtZW50ID0gY29udGV4dC5maW5kU3RhdGVtZW50QnlTdGF0ZW1lbnROb2RlKHN0YXRlbWVudE5vZGUpO1xuXG4gIHJldHVybiBzdGF0ZW1lbnQ7XG59XG4iXSwibmFtZXMiOlsiYnJlYWthYmxlIiwiYnJlYWtQb2ludEZyb21KU09OIiwiYnJlYWtQb2ludFRvQnJlYWtQb2ludEpTT04iLCJicmVha1BvaW50VXRpbGl0aWVzIiwiZGVmaW5lIiwiRGVkdWN0aW9uIiwiRWxlbWVudCIsImNvbnRleHQiLCJzdHJpbmciLCJub2RlIiwiYnJlYWtQb2ludCIsInN0YXRlbWVudCIsImdldFN0YXRlbWVudCIsImdldERlZHVjdGlvbk5vZGUiLCJnZXROb2RlIiwiZGVkdWN0aW9uTm9kZSIsImlzTm9uQnJlYWthYmxlIiwibm9uc2Vuc2ljYWwiLCJ2ZXJpZnkiLCJjb250aW51YXRpb24iLCJkZWR1Y3Rpb25TdHJpbmciLCJnZXRTdHJpbmciLCJ0cmFjZSIsInZlcmlmaWVzIiwiZGVidWciLCJkZWNsYXJlIiwiZWxpZGUiLCJ2YWxpZGF0ZSIsInZhbGlkYXRlcyIsImF0dGVtcHQiLCJ2YWxpZGF0ZVN0YXRlbWVudCIsInN0YXRlbWVudFZhbGlkYXRlcyIsImNvbW1pdCIsInVuaWZ5U3RlcCIsInN0ZXAiLCJzdGVwU3RyaW5nIiwic3RlcENvbnRleHQiLCJnZXRDb250ZXh0IiwiZGVkdWN0aW9uQ29udGV4dCIsImdlbmVyYWxDb250ZXh0Iiwic3BlY2lmaWNDb250ZXh0IiwicmVjb25jaWxlIiwidW5pZnlTdGF0ZW1lbnQiLCJzdGF0ZW1lbnRVbmlmaWVzIiwic3RlcFVuaWZpZXMiLCJzdGF0ZW1lbnRTdHJpbmciLCJ0b0pTT04iLCJzZXJpYWxpc2UiLCJnZXRCcmVha1BvaW50IiwiYnJlYWtQb2ludEpTT04iLCJqc29uIiwibmFtZSIsImZyb21KU09OIiwiZGVkdWN0aW9uIiwiaW5zdGFudGlhdGUiLCJ1bnNlcmlhbGlzZSIsImluc3RhbnRpYXRlRGVkdWN0aW9uIiwic3RhdGVtZW50RnJvbURlZHVjdGlvbk5vZGUiLCJzdGF0ZW1lbnROb2RlIiwiZ2V0U3RhdGVtZW50Tm9kZSIsImZpbmRTdGF0ZW1lbnRCeVN0YXRlbWVudE5vZGUiXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQVVBOzs7ZUFBQTs7O2dDQVI2QzswQkFFdEI7NkJBQ2M7eUJBQ21EO0FBRXhGLE1BQU0sRUFBRUEsU0FBUyxFQUFFQyxrQkFBa0IsRUFBRUMsMEJBQTBCLEVBQUUsR0FBR0MsbUNBQW1CO01BRXpGLFdBQWVDLElBQUFBLGdCQUFNLEVBQUMsTUFBTUMsa0JBQWtCQyx1QkFBTztJQUNuRCxZQUFZQyxPQUFPLEVBQUVDLE1BQU0sRUFBRUMsSUFBSSxFQUFFQyxVQUFVLEVBQUVDLFNBQVMsQ0FBRTtRQUN4RCxLQUFLLENBQUNKLFNBQVNDLFFBQVFDLE1BQU1DO1FBRTdCLElBQUksQ0FBQ0MsU0FB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
|
package/lib/element/frame.js
CHANGED
|
@@ -11,10 +11,11 @@ Object.defineProperty(exports, "default", {
|
|
|
11
11
|
const _occamlanguages = require("occam-languages");
|
|
12
12
|
const _elements = require("../elements");
|
|
13
13
|
const _context = require("../utilities/context");
|
|
14
|
+
const _continuation = require("../utilities/continuation");
|
|
14
15
|
const _instantiate = require("../process/instantiate");
|
|
15
16
|
const _metaTypeNames = require("../metaTypeNames");
|
|
16
17
|
const _element = require("../utilities/element");
|
|
17
|
-
const { breakPointFromJSON, breakPointToBreakPointJSON } = _occamlanguages.breakPointUtilities;
|
|
18
|
+
const { every } = _occamlanguages.continuationUtilities, { breakPointFromJSON, breakPointToBreakPointJSON } = _occamlanguages.breakPointUtilities;
|
|
18
19
|
const _default = (0, _elements.define)(class Frame extends _occamlanguages.Element {
|
|
19
20
|
constructor(context, string, node, breakPoint, assumptions, metavariable){
|
|
20
21
|
super(context, string, node, breakPoint);
|
|
@@ -95,81 +96,82 @@ const _default = (0, _elements.define)(class Frame extends _occamlanguages.Eleme
|
|
|
95
96
|
const frameNode = this.getFrameNode(), frame = context.findFrameByFrameNode(frameNode), validFrame = frame; ///
|
|
96
97
|
return validFrame;
|
|
97
98
|
}
|
|
98
|
-
|
|
99
|
-
let frame = null;
|
|
99
|
+
validate(context, continuation) {
|
|
100
100
|
const frameString = this.getString(); ///
|
|
101
101
|
context.trace(`Validating the '${frameString}' frame...`);
|
|
102
|
-
let validates = false;
|
|
103
102
|
const validFrame = this.findValidFrame(context);
|
|
104
103
|
if (validFrame !== null) {
|
|
105
|
-
|
|
106
|
-
frame = validFrame; ///
|
|
104
|
+
const frame = validFrame; ///
|
|
107
105
|
context.debug(`...the '${frameString}' frame is already valid.`);
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
if (metavariableValidates) {
|
|
111
|
-
const assumptionsValidate = this.validateAssumptions(context);
|
|
112
|
-
if (assumptionsValidate) {
|
|
113
|
-
const stated = context.isStated();
|
|
114
|
-
let validatesWhenStated = false, validatesWhenDerived = false;
|
|
115
|
-
if (stated) {
|
|
116
|
-
validatesWhenStated = this.validateWhenStated(context);
|
|
117
|
-
} else {
|
|
118
|
-
validatesWhenDerived = this.validateWhenDerived(context);
|
|
119
|
-
}
|
|
120
|
-
if (validatesWhenStated || validatesWhenDerived) {
|
|
121
|
-
validates = true;
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
if (validates) {
|
|
126
|
-
frame = this; ///
|
|
127
|
-
context.addFrame(frame);
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
|
-
if (validates) {
|
|
131
|
-
context.debug(`...validated the '${frameString}' frame.`);
|
|
106
|
+
continuation(frame);
|
|
107
|
+
return;
|
|
132
108
|
}
|
|
133
|
-
|
|
109
|
+
const validatMetavariable = this.validatMetavariable.bind(this), validateAssumptions = this.validateAssumptions.bind(this);
|
|
110
|
+
(0, _continuation.all)([
|
|
111
|
+
validatMetavariable,
|
|
112
|
+
validateAssumptions
|
|
113
|
+
], context, (validates)=>{
|
|
114
|
+
if (!validates) {
|
|
115
|
+
const frame = null;
|
|
116
|
+
continuation(frame);
|
|
117
|
+
return;
|
|
118
|
+
}
|
|
119
|
+
const validatesWhenStated = this.validateWhenStated.bind(this), validatesWhenDerived = this.validateWhenDerived.bind(this);
|
|
120
|
+
(0, _continuation.exists)([
|
|
121
|
+
validatesWhenStated,
|
|
122
|
+
validatesWhenDerived
|
|
123
|
+
], context, (validates)=>{
|
|
124
|
+
let frame = null;
|
|
125
|
+
if (validates) {
|
|
126
|
+
frame = this; ///
|
|
127
|
+
context.addFrame(frame);
|
|
128
|
+
}
|
|
129
|
+
if (validates) {
|
|
130
|
+
context.debug(`...validated the '${frameString}' frame.`);
|
|
131
|
+
}
|
|
132
|
+
continuation(frame);
|
|
133
|
+
});
|
|
134
|
+
});
|
|
134
135
|
}
|
|
135
|
-
validateAssumption(assumption, assumptions, context) {
|
|
136
|
-
let assumptionValidates = false;
|
|
136
|
+
validateAssumption(assumption, assumptions, context, continuation) {
|
|
137
137
|
const frameString = this.getString(), assumptionString = assumption.getString();
|
|
138
138
|
context.trace(`Validating the '${frameString}' frame's '${assumptionString}' assumption.`);
|
|
139
|
-
assumption
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
139
|
+
assumption.validate(context, (assumption)=>{
|
|
140
|
+
let assumptionValidates = false;
|
|
141
|
+
if (assumption !== null) {
|
|
142
|
+
assumptions.push(assumption);
|
|
143
|
+
assumptionValidates = true;
|
|
144
|
+
}
|
|
145
|
+
if (assumptionValidates) {
|
|
146
|
+
context.debug(`...validated the '${frameString}' frame's '${assumptionString}' assumption.`);
|
|
147
|
+
}
|
|
148
|
+
continuation(assumptionValidates);
|
|
149
|
+
});
|
|
148
150
|
}
|
|
149
|
-
validateAssumptions(context) {
|
|
150
|
-
let assumptionsValidate;
|
|
151
|
+
validateAssumptions(context, continuation) {
|
|
151
152
|
const frameString = this.getString();
|
|
152
153
|
context.trace(`Validating the '${frameString}' frame's assumptions...`);
|
|
153
154
|
const assumptions = [];
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
155
|
+
every(this.assumptions, (assumption)=>{
|
|
156
|
+
this.validateAssumption(assumption, assumptions, context, continuation);
|
|
157
|
+
}, (assumptionsValidate)=>{
|
|
158
|
+
if (assumptionsValidate) {
|
|
159
|
+
this.assumptions = assumptions;
|
|
160
|
+
context.debug(`...validated the '${frameString}' frame's assumptions.`);
|
|
158
161
|
}
|
|
162
|
+
continuation(assumptionsValidate);
|
|
159
163
|
});
|
|
160
|
-
if (assumptionsValidate) {
|
|
161
|
-
this.assumptions = assumptions;
|
|
162
|
-
context.debug(`...validated the '${frameString}' frame's assumptions.`);
|
|
163
|
-
}
|
|
164
|
-
return assumptionsValidate;
|
|
165
164
|
}
|
|
166
|
-
validatMetavariable(context) {
|
|
167
|
-
let metavariableValidates = true; ///
|
|
165
|
+
validatMetavariable(context, continuation) {
|
|
168
166
|
if (this.metavariable !== null) {
|
|
169
|
-
metavariableValidates =
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
167
|
+
const metavariableValidates = true;
|
|
168
|
+
continuation(metavariableValidates);
|
|
169
|
+
return;
|
|
170
|
+
}
|
|
171
|
+
const frameString = this.getString(); ///
|
|
172
|
+
context.trace(`Validating the '${frameString}' frame's metavariable...`);
|
|
173
|
+
this.metavariable.validate(context, (metavariable)=>{
|
|
174
|
+
let metavariableValidates = false;
|
|
173
175
|
if (metavariable !== null) {
|
|
174
176
|
const metaTypeName = _metaTypeNames.FRAME_META_TYPE_NAME, frameMetaType = context.findMetaTypeByMetaTypeName(metaTypeName), metavariableMetaTypeEqualToFrameMetaType = metavariable.isMetaTypeEqualTo(frameMetaType);
|
|
175
177
|
if (metavariableMetaTypeEqualToFrameMetaType) {
|
|
@@ -180,25 +182,39 @@ const _default = (0, _elements.define)(class Frame extends _occamlanguages.Eleme
|
|
|
180
182
|
if (metavariableValidates) {
|
|
181
183
|
context.debug(`...validated the '${frameString}' frame's metavariable.`);
|
|
182
184
|
}
|
|
183
|
-
|
|
184
|
-
|
|
185
|
+
continuation(metavariableValidates);
|
|
186
|
+
});
|
|
185
187
|
}
|
|
186
|
-
validateWhenStated(context) {
|
|
187
|
-
|
|
188
|
+
validateWhenStated(context, continuation) {
|
|
189
|
+
const stated = context.isStated();
|
|
190
|
+
if (!stated) {
|
|
191
|
+
const validatesWhenStated = false;
|
|
192
|
+
continuation(validatesWhenStated);
|
|
193
|
+
return;
|
|
194
|
+
}
|
|
195
|
+
let validatesWhenStated;
|
|
188
196
|
const frameString = this.getString(); ///
|
|
189
197
|
context.trace(`Validating the '${frameString}' stated frame...`);
|
|
190
198
|
const singular = this.isSingular();
|
|
191
|
-
if (singular) {
|
|
192
|
-
validatesWhenStated =
|
|
193
|
-
} else {
|
|
199
|
+
if (!singular) {
|
|
200
|
+
const validatesWhenStated = false;
|
|
194
201
|
context.debug(`The '${frameString}' stated frame must be singular.`);
|
|
202
|
+
continuation(validatesWhenStated);
|
|
203
|
+
return;
|
|
195
204
|
}
|
|
205
|
+
validatesWhenStated = true;
|
|
196
206
|
if (validatesWhenStated) {
|
|
197
207
|
context.debug(`...validated the '${frameString}' stated frame.`);
|
|
198
208
|
}
|
|
199
|
-
|
|
209
|
+
continuation(validatesWhenStated);
|
|
200
210
|
}
|
|
201
|
-
validateWhenDerived(context) {
|
|
211
|
+
validateWhenDerived(context, continuation) {
|
|
212
|
+
const stated = context.isStated();
|
|
213
|
+
if (stated) {
|
|
214
|
+
const validatesWhenDerived = false;
|
|
215
|
+
continuation(validatesWhenDerived);
|
|
216
|
+
return;
|
|
217
|
+
}
|
|
202
218
|
let validatesWhenDerived;
|
|
203
219
|
const frameString = this.getString(); ///
|
|
204
220
|
context.trace(`Verifying the '${frameString}' derived frame...`);
|
|
@@ -206,7 +222,7 @@ const _default = (0, _elements.define)(class Frame extends _occamlanguages.Eleme
|
|
|
206
222
|
if (validatesWhenDerived) {
|
|
207
223
|
context.debug(`...verified the '${frameString}' derived frame.`);
|
|
208
224
|
}
|
|
209
|
-
|
|
225
|
+
continuation(validatesWhenDerived);
|
|
210
226
|
}
|
|
211
227
|
toJSON() {
|
|
212
228
|
const string = this.getString();
|
|
@@ -238,4 +254,4 @@ function assumptionsFromFrameNode(frameNode, context) {
|
|
|
238
254
|
return assumptions;
|
|
239
255
|
}
|
|
240
256
|
|
|
241
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbGVtZW50L2ZyYW1lLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBFbGVtZW50LCBicmVha1BvaW50VXRpbGl0aWVzIH0gZnJvbSBcIm9jY2FtLWxhbmd1YWdlc1wiO1xuXG5pbXBvcnQgeyBkZWZpbmUgfSBmcm9tIFwiLi4vZWxlbWVudHNcIjtcbmltcG9ydCB7IGluc3RhbnRpYXRlIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9jb250ZXh0XCI7XG5pbXBvcnQgeyBpbnN0YW50aWF0ZUZyYW1lIH0gZnJvbSBcIi4uL3Byb2Nlc3MvaW5zdGFudGlhdGVcIjtcbmltcG9ydCB7IEZSQU1FX01FVEFfVFlQRV9OQU1FIH0gZnJvbSBcIi4uL21ldGFUeXBlTmFtZXNcIjtcbmltcG9ydCB7IG1ldGF2YXJpYWJsZUZyb21GcmFtZU5vZGUgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2VsZW1lbnRcIjtcblxuY29uc3QgeyBicmVha1BvaW50RnJvbUpTT04sIGJyZWFrUG9pbnRUb0JyZWFrUG9pbnRKU09OIH0gPSBicmVha1BvaW50VXRpbGl0aWVzO1xuXG5leHBvcnQgZGVmYXVsdCBkZWZpbmUoY2xhc3MgRnJhbWUgZXh0ZW5kcyBFbGVtZW50IHtcbiAgY29uc3RydWN0b3IoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCBhc3N1bXB0aW9ucywgbWV0YXZhcmlhYmxlKSB7XG4gICAgc3VwZXIoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50KTtcblxuICAgIHRoaXMuYXNzdW1wdGlvbnMgPSBhc3N1bXB0aW9ucztcbiAgICB0aGlzLm1ldGF2YXJpYWJsZSA9IG1ldGF2YXJpYWJsZTtcbiAgfVxuXG4gIGdldEFzc3VtcHRpb25zKCkge1xuICAgIHJldHVybiB0aGlzLmFzc3VtcHRpb25zO1xuICB9XG5cbiAgZ2V0TWV0YXZhcmlhYmxlKCkge1xuICAgIHJldHVybiB0aGlzLm1ldGF2YXJpYWJsZTtcbiAgfVxuXG4gIGdldEZyYW1lTm9kZSgpIHtcbiAgICBjb25zdCBub2RlID0gdGhpcy5nZXROb2RlKCksXG4gICAgICAgICAgZnJhbWVOb2RlID0gbm9kZTsgLy8vXG5cbiAgICByZXR1cm4gZnJhbWVOb2RlO1xuICB9XG5cbiAgZ2V0TWV0YXZhcmlhYmxlTm9kZSgpIHtcbiAgICBjb25zdCBmcmFtZU5vZGUgPSB0aGlzLmdldEZyYW1lTm9kZSgpLFxuICAgICAgICAgIG1ldGF2YXJpYWJsZU5vZGUgPSBmcmFtZU5vZGUuZ2V0TWV0YXZhcmlhYmxlTm9kZSgpO1xuXG4gICAgcmV0dXJuIG1ldGF2YXJpYWJsZU5vZGU7XG4gIH1cblxuICBnZXRNZXRhdmFyaWFibGVOYW1lKCkge1xuICAgIGxldCBtZXRhdmFyaWFibGVOYW1lID0gbnVsbDtcblxuICAgIGNvbnN0IHNpbmd1bGFyID0gdGhpcy5pc1Npbmd1bGFyKCk7XG5cbiAgICBpZiAoc2luZ3VsYXIpIHtcbiAgICAgIG1ldGF2YXJpYWJsZU5hbWUgPSB0aGlzLm1ldGF2YXJpYWJsZS5nZXROYW1lKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG1ldGF2YXJpYWJsZU5hbWU7XG4gIH1cblxuICBpc0VxdWFsVG8oZnJhbWUpIHtcbiAgICBjb25zdCBmcmFtZU5vZGUgPSBmcmFtZS5nZXROb2RlKCksXG4gICAgICAgICAgZnJhbWVOb2RlTWF0Y2hlcyA9IHRoaXMubWF0Y2hGcmFtZU5vZGUoZnJhbWVOb2RlKSxcbiAgICAgICAgICBlcXVhbFRvID0gZnJhbWVOb2RlTWF0Y2hlczsgIC8vL1xuXG4gICAgcmV0dXJuIGVxdWFsVG87XG4gIH1cblxuICBpc0ltcGxpY2l0KCkge1xuICAgIGNvbnN0IGltcGxpY2l0ID0gKHRoaXMubWV0YXZhcmlhYmxlICE9PSBudWxsKTtcblxuICAgIHJldHVybiBpbXBsaWNpdDtcbiAgfVxuXG4gIGlzU2luZ3VsYXIoKSB7XG4gICAgY29uc3QgZnJhbWVOb2RlID0gdGhpcy5nZXRGcmFtZU5vZGUoKSxcbiAgICAgICAgICBzaW5ndWxhciA9IGZyYW1lTm9kZS5pc1Npbmd1bGFyKCk7XG5cbiAgICByZXR1cm4gc2luZ3VsYXI7XG4gIH1cblxuICBpc01ldGF2YXJpYWJsZURlZmluZWQobWV0YXZhcmlhYmxlKSB7XG4gICAgbGV0IG1ldGF2YXJpYWJsZURlZmluZWQgPSBmYWxzZTtcblxuICAgIGlmICh0aGlzLm1ldGF2YXJpYWJsZSAhPT0gbnVsbCkge1xuICAgICAgY29uc3QgbWV0YXZhcmlhYmxlQSA9IG1ldGF2YXJpYWJsZSwgIC8vL1xuICAgICAgICAgICAgbWV0YXZhcmlhYmxlQiA9IHRoaXMubWV0YXZhcmlhYmxlLFxuICAgICAgICAgICAgbWV0YXZhcmlhYmxlQUVxdWFsVG9NZXRhdmFyaWFibGVCID0gbWV0YXZhcmlhYmxlQS5pc0VxdWFsVG8obWV0YXZhcmlhYmxlQik7XG5cbiAgICAgIGlmIChtZXRhdmFyaWFibGVBRXF1YWxUb01ldGF2YXJpYWJsZUIpIHtcbiAgICAgICAgbWV0YXZhcmlhYmxlRGVmaW5lZCA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG1ldGF2YXJpYWJsZURlZmluZWQ7XG4gIH1cblxuICBtYXRjaEZyYW1lTm9kZShmcmFtZU5vZGUpIHtcbiAgICBjb25zdCBub2RlID0gZnJhbWVOb2RlLCAvLy9cbiAgICAgICAgICBub2RlTWF0Y2hlcyA9IHRoaXMubWF0Y2hOb2RlKG5vZGUpLFxuICAgICAgICAgIGZyYW1lTm9kZU1hdGNoZXMgPSBub2RlTWF0Y2hlczsgLy8vXG5cbiAgICByZXR1cm4gZnJhbWVOb2RlTWF0Y2hlcztcbiAgfVxuXG4gIG1hdGNoTWV0YXZhcmlhYmxlTm9kZShtZXRhdmFyaWFibGVOb2RlKSB7XG4gICAgbGV0IG1ldGF2YXJpYWJsZU5vZGVNYXRjaGVzID0gZmFsc2U7XG5cbiAgICBjb25zdCBzaW5ndWxhciA9IHRoaXMuaXNTaW5ndWxhcigpO1xuXG4gICAgaWYgKHNpbmd1bGFyKSB7XG4gICAgICBtZXRhdmFyaWFibGVOb2RlTWF0Y2hlcyA9IHRoaXMubWV0YXZhcmlhYmxlLm1hdGNoTWV0YXZhcmlhYmxlTm9kZShtZXRhdmFyaWFibGVOb2RlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbWV0YXZhcmlhYmxlTm9kZU1hdGNoZXM7XG4gIH1cblxuICBjb21wYXJlUGFyYW1ldGVyKHBhcmFtZXRlcikge1xuICAgIGxldCBjb21wYXJlc1RvUGFyYW10ZXIgPSBmYWxzZTtcblxuICAgIGNvbnN0IHNpbmd1bGFyID0gdGhpcy5pc1Npbmd1bGFyKCk7XG5cbiAgICBpZiAoc2luZ3VsYXIpIHtcbiAgICAgIGNvbnN0IHBhcmFtZXRlck5hbWUgPSBwYXJhbWV0ZXIuZ2V0TmFtZSgpO1xuXG4gICAgICBpZiAocGFyYW1ldGVyTmFtZSAhPT0gbnVsbCkge1xuICAgICAgICBjb25zdCBtZXRhdmFyaWFibGVOYW1lID0gdGhpcy5nZXRNZXRhdmFyaWFibGVOYW1lKCk7XG5cbiAgICAgICAgaWYgKHBhcmFtZXRlck5hbWUgPT09IG1ldGF2YXJpYWJsZU5hbWUpIHtcbiAgICAgICAgICBjb21wYXJlc1RvUGFyYW10ZXIgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGNvbXBhcmVzVG9QYXJhbXRlcjtcbiAgfVxuXG4gIGZpbmRWYWxpZEZyYW1lKGNvbnRleHQpIHtcbiAgICBjb25zdCBmcmFtZU5vZGUgPSB0aGlzLmdldEZyYW1lTm9kZSgpLFxuICAgICAgICAgIGZyYW1lID0gY29udGV4dC5maW5kRnJhbWVCeUZyYW1lTm9kZShmcmFtZU5vZGUpLFxuICAgICAgICAgIHZhbGlkRnJhbWUgPSBmcmFtZTsgLy8vXG5cbiAgICByZXR1cm4gdmFsaWRGcmFtZTtcbiAgfVxuXG4gIGFzeW5jIHZhbGlkYXRlKGNvbnRleHQpIHtcbiAgICBsZXQgZnJhbWUgPSBudWxsO1xuXG4gICAgY29uc3QgZnJhbWVTdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtmcmFtZVN0cmluZ30nIGZyYW1lLi4uYCk7XG5cbiAgICBsZXQgdmFsaWRhdGVzID0gZmFsc2U7XG5cbiAgICBjb25zdCB2YWxpZEZyYW1lID0gdGhpcy5maW5kVmFsaWRGcmFtZShjb250ZXh0KTtcblxuICAgIGlmICh2YWxpZEZyYW1lICE9PSBudWxsKSB7XG4gICAgICB2YWxpZGF0ZXMgPSB0cnVlO1xuXG4gICAgICBmcmFtZSA9IHZhbGlkRnJhbWU7IC8vL1xuXG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi50aGUgJyR7ZnJhbWVTdHJpbmd9JyBmcmFtZSBpcyBhbHJlYWR5IHZhbGlkLmApO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBtZXRhdmFyaWFibGVWYWxpZGF0ZXMgPSB0aGlzLnZhbGlkYXRNZXRhdmFyaWFibGUoY29udGV4dCk7XG5cbiAgICAgIGlmIChtZXRhdmFyaWFibGVWYWxpZGF0ZXMpIHtcbiAgICAgICAgY29uc3QgYXNzdW1wdGlvbnNWYWxpZGF0ZSA9IHRoaXMudmFsaWRhdGVBc3N1bXB0aW9ucyhjb250ZXh0KTtcblxuICAgICAgICBpZiAoYXNzdW1wdGlvbnNWYWxpZGF0ZSkge1xuICAgICAgICAgIGNvbnN0IHN0YXRlZCA9IGNvbnRleHQuaXNTdGF0ZWQoKTtcblxuICAgICAgICAgIGxldCB2YWxpZGF0ZXNXaGVuU3RhdGVkID0gZmFsc2UsXG4gICAgICAgICAgICAgIHZhbGlkYXRlc1doZW5EZXJpdmVkID0gZmFsc2U7XG5cbiAgICAgICAgICBpZiAoc3RhdGVkKSB7XG4gICAgICAgICAgICB2YWxpZGF0ZXNXaGVuU3RhdGVkID0gdGhpcy52YWxpZGF0ZVdoZW5TdGF0ZWQoY29udGV4dCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHZhbGlkYXRlc1doZW5EZXJpdmVkID0gdGhpcy52YWxpZGF0ZVdoZW5EZXJpdmVkKGNvbnRleHQpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmICh2YWxpZGF0ZXNXaGVuU3RhdGVkIHx8IHZhbGlkYXRlc1doZW5EZXJpdmVkKSB7XG4gICAgICAgICAgICB2YWxpZGF0ZXMgPSB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAodmFsaWRhdGVzKSB7XG4gICAgICAgIGZyYW1lID0gdGhpczsgLy8vXG5cbiAgICAgICAgY29udGV4dC5hZGRGcmFtZShmcmFtZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHZhbGlkYXRlcykge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHtmcmFtZVN0cmluZ30nIGZyYW1lLmApO1xuICAgIH1cblxuICAgIHJldHVybiBmcmFtZTtcbiAgfVxuXG4gIHZhbGlkYXRlQXNzdW1wdGlvbihhc3N1bXB0aW9uLCBhc3N1bXB0aW9ucywgY29udGV4dCkge1xuICAgIGxldCBhc3N1bXB0aW9uVmFsaWRhdGVzID0gZmFsc2U7XG5cbiAgICBjb25zdCBmcmFtZVN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCksIC8vL1xuICAgICAgICAgIGFzc3VtcHRpb25TdHJpbmcgPSBhc3N1bXB0aW9uLmdldFN0cmluZygpO1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7ZnJhbWVTdHJpbmd9JyBmcmFtZSdzICcke2Fzc3VtcHRpb25TdHJpbmd9JyBhc3N1bXB0aW9uLmApO1xuXG4gICAgYXNzdW1wdGlvbiA9IGFzc3VtcHRpb24udmFsaWRhdGUoY29udGV4dCk7ICAvLy9cblxuICAgIGlmIChhc3N1bXB0aW9uICE9PSBudWxsKSB7XG4gICAgICBhc3N1bXB0aW9ucy5wdXNoKGFzc3VtcHRpb24pO1xuXG4gICAgICBhc3N1bXB0aW9uVmFsaWRhdGVzID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAoYXNzdW1wdGlvblZhbGlkYXRlcykge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHtmcmFtZVN0cmluZ30nIGZyYW1lJ3MgJyR7YXNzdW1wdGlvblN0cmluZ30nIGFzc3VtcHRpb24uYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGFzc3VtcHRpb25WYWxpZGF0ZXM7XG4gIH1cblxuICB2YWxpZGF0ZUFzc3VtcHRpb25zKGNvbnRleHQpIHtcbiAgICBsZXQgYXNzdW1wdGlvbnNWYWxpZGF0ZTtcblxuICAgIGNvbnN0IGZyYW1lU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTtcblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke2ZyYW1lU3RyaW5nfScgZnJhbWUncyBhc3N1bXB0aW9ucy4uLmApO1xuXG4gICAgY29uc3QgYXNzdW1wdGlvbnMgPSBbXTtcblxuICAgIGFzc3VtcHRpb25zVmFsaWRhdGUgPSB0aGlzLmFzc3VtcHRpb25zLmV2ZXJ5KChhc3N1bXB0aW9uKSA9PiB7XG4gICAgICBjb25zdCBhc3N1bXB0aW9uVmFsaWRhdGVzID0gdGhpcy52YWxpZGF0ZUFzc3VtcHRpb24oYXNzdW1wdGlvbiwgYXNzdW1wdGlvbnMsIGNvbnRleHQpO1xuXG4gICAgICBpZiAoYXNzdW1wdGlvblZhbGlkYXRlcykge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGlmIChhc3N1bXB0aW9uc1ZhbGlkYXRlKSB7XG4gICAgICB0aGlzLmFzc3VtcHRpb25zID0gYXNzdW1wdGlvbnM7XG5cbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7ZnJhbWVTdHJpbmd9JyBmcmFtZSdzIGFzc3VtcHRpb25zLmApO1xuICAgIH1cblxuICAgIHJldHVybiBhc3N1bXB0aW9uc1ZhbGlkYXRlO1xuICB9XG5cbiAgdmFsaWRhdE1ldGF2YXJpYWJsZShjb250ZXh0KSB7XG4gICAgbGV0IG1ldGF2YXJpYWJsZVZhbGlkYXRlcyA9IHRydWU7IC8vL1xuXG4gICAgaWYgKHRoaXMubWV0YXZhcmlhYmxlICE9PSBudWxsKSB7XG4gICAgICBtZXRhdmFyaWFibGVWYWxpZGF0ZXMgPSBmYWxzZTtcblxuICAgICAgY29uc3QgZnJhbWVTdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy9cblxuICAgICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7ZnJhbWVTdHJpbmd9JyBmcmFtZSdzIG1ldGF2YXJpYWJsZS4uLmApO1xuXG4gICAgICBjb25zdCBtZXRhdmFyaWFibGUgPSB0aGlzLm1ldGF2YXJpYWJsZS52YWxpZGF0ZShjb250ZXh0KTtcblxuICAgICAgaWYgKG1ldGF2YXJpYWJsZSAhPT0gbnVsbCkge1xuICAgICAgICBjb25zdCBtZXRhVHlwZU5hbWUgPSBGUkFNRV9NRVRBX1RZUEVfTkFNRSxcbiAgICAgICAgICAgICAgZnJhbWVNZXRhVHlwZSA9IGNvbnRleHQuZmluZE1ldGFUeXBlQnlNZXRhVHlwZU5hbWUobWV0YVR5cGVOYW1lKSxcbiAgICAgICAgICAgICAgbWV0YXZhcmlhYmxlTWV0YVR5cGVFcXVhbFRvRnJhbWVNZXRhVHlwZSA9IG1ldGF2YXJpYWJsZS5pc01ldGFUeXBlRXF1YWxUbyhmcmFtZU1ldGFUeXBlKTtcblxuICAgICAgICBpZiAobWV0YXZhcmlhYmxlTWV0YVR5cGVFcXVhbFRvRnJhbWVNZXRhVHlwZSkge1xuICAgICAgICAgIHRoaXMubWV0YXZhcmlhYmxlID0gbWV0YXZhcmlhYmxlOyAvLy9cblxuICAgICAgICAgIG1ldGF2YXJpYWJsZVZhbGlkYXRlcyA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKG1ldGF2YXJpYWJsZVZhbGlkYXRlcykge1xuICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke2ZyYW1lU3RyaW5nfScgZnJhbWUncyBtZXRhdmFyaWFibGUuYCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG1ldGF2YXJpYWJsZVZhbGlkYXRlcztcbiAgfVxuXG4gIHZhbGlkYXRlV2hlblN0YXRlZChjb250ZXh0KSB7XG4gICAgbGV0IHZhbGlkYXRlc1doZW5TdGF0ZWQgPSBmYWxzZTtcblxuICAgIGNvbnN0IGZyYW1lU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7ZnJhbWVTdHJpbmd9JyBzdGF0ZWQgZnJhbWUuLi5gKTtcblxuICAgIGNvbnN0IHNpbmd1bGFyID0gdGhpcy5pc1Npbmd1bGFyKCk7XG5cbiAgICBpZiAoc2luZ3VsYXIpIHtcbiAgICAgIHZhbGlkYXRlc1doZW5TdGF0ZWQgPSB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGBUaGUgJyR7ZnJhbWVTdHJpbmd9JyBzdGF0ZWQgZnJhbWUgbXVzdCBiZSBzaW5ndWxhci5gKTtcbiAgICB9XG5cbiAgICBpZiAodmFsaWRhdGVzV2hlblN0YXRlZCkge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHtmcmFtZVN0cmluZ30nIHN0YXRlZCBmcmFtZS5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmFsaWRhdGVzV2hlblN0YXRlZDtcbiAgfVxuXG4gIHZhbGlkYXRlV2hlbkRlcml2ZWQoY29udGV4dCkge1xuICAgIGxldCB2YWxpZGF0ZXNXaGVuRGVyaXZlZDtcblxuICAgIGNvbnN0IGZyYW1lU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHtmcmFtZVN0cmluZ30nIGRlcml2ZWQgZnJhbWUuLi5gKTtcblxuICAgIHZhbGlkYXRlc1doZW5EZXJpdmVkID0gdHJ1ZTtcblxuICAgIGlmICh2YWxpZGF0ZXNXaGVuRGVyaXZlZCkge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke2ZyYW1lU3RyaW5nfScgZGVyaXZlZCBmcmFtZS5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmFsaWRhdGVzV2hlbkRlcml2ZWQ7XG4gIH1cblxuICB0b0pTT04oKSB7XG4gICAgY29uc3Qgc3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTtcblxuICAgIGxldCBicmVha1BvaW50O1xuXG4gICAgYnJlYWtQb2ludCA9IHRoaXMuZ2V0QnJlYWtQb2ludCgpO1xuXG4gICAgY29uc3QgYnJlYWtQb2ludEpTT04gPSBicmVha1BvaW50VG9CcmVha1BvaW50SlNPTihicmVha1BvaW50KTtcblxuICAgIGJyZWFrUG9pbnQgPSBicmVha1BvaW50SlNPTjsgIC8vL1xuXG4gICAgY29uc3QganNvbiA9IHtcbiAgICAgIHN0cmluZyxcbiAgICAgIGJyZWFrUG9pbnRcbiAgICB9O1xuXG4gICAgcmV0dXJuIGpzb247XG4gIH1cblxuICBzdGF0aWMgbmFtZSA9IFwiRnJhbWVcIjtcblxuICBzdGF0aWMgZnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICAgIHJldHVybiBpbnN0YW50aWF0ZSgoY29udGV4dCkgPT4ge1xuICAgICAgY29uc3QgeyBzdHJpbmcgfSA9IGpzb24sXG4gICAgICAgICAgICBmcmFtZU5vZGUgPSBpbnN0YW50aWF0ZUZyYW1lKHN0cmluZywgY29udGV4dCksXG4gICAgICAgICAgICBub2RlID0gZnJhbWVOb2RlLCAvLy9cbiAgICAgICAgICAgIGJyZWFrUG9pbnQgPSBicmVha1BvaW50RnJvbUpTT04oanNvbiksXG4gICAgICAgICAgICBhc3N1bXB0aW9ucyA9IGFzc3VtcHRpb25zRnJvbUZyYW1lTm9kZShmcmFtZU5vZGUsIGNvbnRleHQpLFxuICAgICAgICAgICAgbWV0YXZhcmlhYmxlID0gbWV0YXZhcmlhYmxlRnJvbUZyYW1lTm9kZShmcmFtZU5vZGUsIGNvbnRleHQpO1xuXG4gICAgICBjb250ZXh0ID0gbnVsbDtcblxuICAgICAgY29uc3QgZnJhbWUgPSBuZXcgRnJhbWUoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCBhc3N1bXB0aW9ucywgbWV0YXZhcmlhYmxlKTtcblxuICAgICAgcmV0dXJuIGZyYW1lO1xuICAgIH0sIGNvbnRleHQpO1xuICB9XG59KTtcblxuZnVuY3Rpb24gYXNzdW1wdGlvbnNGcm9tRnJhbWVOb2RlKGZyYW1lTm9kZSwgY29udGV4dCkge1xuICBjb25zdCBhc3N1bXB0aW9uTm9kZXMgPSBmcmFtZU5vZGUuZ2V0QXNzdW1wdGlvbk5vZGVzKCksXG4gICAgICAgIGFzc3VtcHRpb25zID0gYXNzdW1wdGlvbk5vZGVzLm1hcCgoYXNzdW1wdGlvbk5vZGUpID0+IHtcbiAgICAgICAgICBjb25zdCBhc3N1bXB0aW9uID0gY29udGV4dC5maW5kQXNzdW1wdGlvbkJ5QXNzdW1wdGlvbk5vZGUoYXNzdW1wdGlvbk5vZGUpO1xuXG4gICAgICAgICAgcmV0dXJuIGFzc3VtcHRpb247XG4gICAgICAgIH0pO1xuXG4gIHJldHVybiBhc3N1bXB0aW9ucztcbn1cbiJdLCJuYW1lcyI6WyJicmVha1BvaW50RnJvbUpTT04iLCJicmVha1BvaW50VG9CcmVha1BvaW50SlNPTiIsImJyZWFrUG9pbnRVdGlsaXRpZXMiLCJkZWZpbmUiLCJGcmFtZSIsIkVsZW1lbnQiLCJjb250ZXh0Iiwic3RyaW5nIiwibm9kZSIsImJyZWFrUG9pbnQiLCJhc3N1bXB0aW9ucyIsIm1ldGF2YXJpYWJsZSIsImdldEFzc3VtcHRpb25zIiwiZ2V0TWV0YXZhcmlhYmxlIiwiZ2V0RnJhbWVOb2RlIiwiZ2V0Tm9kZSIsImZyYW1lTm9kZSIsImdldE1ldGF2YXJpYWJsZU5vZGUiLCJtZXRhdmFyaWFibGVOb2RlIiwiZ2V0TWV0YXZhcmlhYmxlTmFtZSIsIm1ldGF2YXJpYWJsZU5hbWUiLCJzaW5ndWxhciIsImlzU2luZ3VsYXIiLCJnZXROYW1lIiwiaXNFcXVhbFRvIiwiZnJhbWUiLCJmcmFtZU5vZGVNYXRjaGVzIiwibWF0Y2hGcmFtZU5vZGUiLCJlcXVhbFRvIiwiaXNJbXBsaWNpdCIsImltcGxpY2l0IiwiaXNNZXRhdmFyaWFibGVEZWZpbmVkIiwibWV0YXZhcmlhYmxlRGVmaW5lZCIsIm1ldGF2YXJpYWJsZUEiLCJtZXRhdmFyaWFibGVCIiwibWV0YXZhcmlhYmxlQUVxdWFsVG9NZXRhdmFyaWFibGVCIiwibm9kZU1hdGNoZXMiLCJtYXRjaE5vZGUiLCJtYXRjaE1ldGF2YXJpYWJsZU5vZGUiLCJtZXRhdmFyaWFibGVOb2RlTWF0Y2hlcyIsImNvbXBhcmVQYXJhbWV0ZXIiLCJwYXJhbWV0ZXIiLCJjb21wYXJlc1RvUGFyYW10ZXIiLCJwYXJhbWV0ZXJOYW1lIiwiZmluZFZhbGlkRnJhbWUiLCJmaW5kRnJhbWVCeUZyYW1lTm9kZSIsInZhbGlkRnJhbWUiLCJ2YWxpZGF0ZSIsImZyYW1lU3RyaW5nIiwiZ2V0U3RyaW5nIiwidHJhY2UiLCJ2YWxpZGF0ZXMiLCJkZWJ1ZyIsIm1ldGF2YXJpYWJsZVZhbGlkYXRlcyIsInZhbGlkYXRNZXRhdmFyaWFibGUiLCJhc3N1bXB0aW9uc1ZhbGlkYXRlIiwidmFsaWRhdGVBc3N1bXB0aW9ucyIsInN0YXRlZCIsImlzU3RhdGVkIiwidmFsaWRhdGVzV2hlblN0YXRlZCIsInZhbGlkYXRlc1doZW5EZXJpdmVkIiwidmFsaWRhdGVXaGVuU3RhdGVkIiwidmFsaWRhdGVXaGVuRGVyaXZlZCIsImFkZEZyYW1lIiwidmFsaWRhdGVBc3N1bXB0aW9uIiwiYXNzdW1wdGlvbiIsImFzc3VtcHRpb25WYWxpZGF0ZXMiLCJhc3N1bXB0aW9uU3RyaW5nIiwicHVzaCIsImV2ZXJ5IiwibWV0YVR5cGVOYW1lIiwiRlJBTUVfTUVUQV9UWVBFX05BTUUiLCJmcmFtZU1ldGFUeXBlIiwiZmluZE1ldGFUeXBlQnlNZXRhVHlwZU5hbWUiLCJtZXRhdmFyaWFibGVNZXRhVHlwZUVxdWFsVG9GcmFtZU1ldGFUeXBlIiwiaXNNZXRhVHlwZUVxdWFsVG8iLCJ0b0pTT04iLCJnZXRCcmVha1BvaW50IiwiYnJlYWtQb2ludEpTT04iLCJqc29uIiwibmFtZSIsImZyb21KU09OIiwiaW5zdGFudGlhdGUiLCJpbnN0YW50aWF0ZUZyYW1lIiwiYXNzdW1wdGlvbnNGcm9tRnJhbWVOb2RlIiwibWV0YXZhcmlhYmxlRnJvbUZyYW1lTm9kZSIsImFzc3VtcHRpb25Ob2RlcyIsImdldEFzc3VtcHRpb25Ob2RlcyIsIm1hcCIsImFzc3VtcHRp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
|
|
257
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbGVtZW50L2ZyYW1lLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBFbGVtZW50LCBicmVha1BvaW50VXRpbGl0aWVzLCBjb250aW51YXRpb25VdGlsaXRpZXMgfSBmcm9tIFwib2NjYW0tbGFuZ3VhZ2VzXCI7XG5cbmltcG9ydCB7IGRlZmluZSB9IGZyb20gXCIuLi9lbGVtZW50c1wiO1xuaW1wb3J0IHsgaW5zdGFudGlhdGUgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2NvbnRleHRcIjtcbmltcG9ydCB7IGFsbCwgZXhpc3RzIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9jb250aW51YXRpb25cIjtcbmltcG9ydCB7IGluc3RhbnRpYXRlRnJhbWUgfSBmcm9tIFwiLi4vcHJvY2Vzcy9pbnN0YW50aWF0ZVwiO1xuaW1wb3J0IHsgRlJBTUVfTUVUQV9UWVBFX05BTUUgfSBmcm9tIFwiLi4vbWV0YVR5cGVOYW1lc1wiO1xuaW1wb3J0IHsgbWV0YXZhcmlhYmxlRnJvbUZyYW1lTm9kZSB9IGZyb20gXCIuLi91dGlsaXRpZXMvZWxlbWVudFwiO1xuXG5jb25zdCB7IGV2ZXJ5IH0gPSBjb250aW51YXRpb25VdGlsaXRpZXMsXG4gICAgICB7IGJyZWFrUG9pbnRGcm9tSlNPTiwgYnJlYWtQb2ludFRvQnJlYWtQb2ludEpTT04gfSA9IGJyZWFrUG9pbnRVdGlsaXRpZXM7XG5cbmV4cG9ydCBkZWZhdWx0IGRlZmluZShjbGFzcyBGcmFtZSBleHRlbmRzIEVsZW1lbnQge1xuICBjb25zdHJ1Y3Rvcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIGFzc3VtcHRpb25zLCBtZXRhdmFyaWFibGUpIHtcbiAgICBzdXBlcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQpO1xuXG4gICAgdGhpcy5hc3N1bXB0aW9ucyA9IGFzc3VtcHRpb25zO1xuICAgIHRoaXMubWV0YXZhcmlhYmxlID0gbWV0YXZhcmlhYmxlO1xuICB9XG5cbiAgZ2V0QXNzdW1wdGlvbnMoKSB7XG4gICAgcmV0dXJuIHRoaXMuYXNzdW1wdGlvbnM7XG4gIH1cblxuICBnZXRNZXRhdmFyaWFibGUoKSB7XG4gICAgcmV0dXJuIHRoaXMubWV0YXZhcmlhYmxlO1xuICB9XG5cbiAgZ2V0RnJhbWVOb2RlKCkge1xuICAgIGNvbnN0IG5vZGUgPSB0aGlzLmdldE5vZGUoKSxcbiAgICAgICAgICBmcmFtZU5vZGUgPSBub2RlOyAvLy9cblxuICAgIHJldHVybiBmcmFtZU5vZGU7XG4gIH1cblxuICBnZXRNZXRhdmFyaWFibGVOb2RlKCkge1xuICAgIGNvbnN0IGZyYW1lTm9kZSA9IHRoaXMuZ2V0RnJhbWVOb2RlKCksXG4gICAgICAgICAgbWV0YXZhcmlhYmxlTm9kZSA9IGZyYW1lTm9kZS5nZXRNZXRhdmFyaWFibGVOb2RlKCk7XG5cbiAgICByZXR1cm4gbWV0YXZhcmlhYmxlTm9kZTtcbiAgfVxuXG4gIGdldE1ldGF2YXJpYWJsZU5hbWUoKSB7XG4gICAgbGV0IG1ldGF2YXJpYWJsZU5hbWUgPSBudWxsO1xuXG4gICAgY29uc3Qgc2luZ3VsYXIgPSB0aGlzLmlzU2luZ3VsYXIoKTtcblxuICAgIGlmIChzaW5ndWxhcikge1xuICAgICAgbWV0YXZhcmlhYmxlTmFtZSA9IHRoaXMubWV0YXZhcmlhYmxlLmdldE5hbWUoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbWV0YXZhcmlhYmxlTmFtZTtcbiAgfVxuXG4gIGlzRXF1YWxUbyhmcmFtZSkge1xuICAgIGNvbnN0IGZyYW1lTm9kZSA9IGZyYW1lLmdldE5vZGUoKSxcbiAgICAgICAgICBmcmFtZU5vZGVNYXRjaGVzID0gdGhpcy5tYXRjaEZyYW1lTm9kZShmcmFtZU5vZGUpLFxuICAgICAgICAgIGVxdWFsVG8gPSBmcmFtZU5vZGVNYXRjaGVzOyAgLy8vXG5cbiAgICByZXR1cm4gZXF1YWxUbztcbiAgfVxuXG4gIGlzSW1wbGljaXQoKSB7XG4gICAgY29uc3QgaW1wbGljaXQgPSAodGhpcy5tZXRhdmFyaWFibGUgIT09IG51bGwpO1xuXG4gICAgcmV0dXJuIGltcGxpY2l0O1xuICB9XG5cbiAgaXNTaW5ndWxhcigpIHtcbiAgICBjb25zdCBmcmFtZU5vZGUgPSB0aGlzLmdldEZyYW1lTm9kZSgpLFxuICAgICAgICAgIHNpbmd1bGFyID0gZnJhbWVOb2RlLmlzU2luZ3VsYXIoKTtcblxuICAgIHJldHVybiBzaW5ndWxhcjtcbiAgfVxuXG4gIGlzTWV0YXZhcmlhYmxlRGVmaW5lZChtZXRhdmFyaWFibGUpIHtcbiAgICBsZXQgbWV0YXZhcmlhYmxlRGVmaW5lZCA9IGZhbHNlO1xuXG4gICAgaWYgKHRoaXMubWV0YXZhcmlhYmxlICE9PSBudWxsKSB7XG4gICAgICBjb25zdCBtZXRhdmFyaWFibGVBID0gbWV0YXZhcmlhYmxlLCAgLy8vXG4gICAgICAgICAgICBtZXRhdmFyaWFibGVCID0gdGhpcy5tZXRhdmFyaWFibGUsXG4gICAgICAgICAgICBtZXRhdmFyaWFibGVBRXF1YWxUb01ldGF2YXJpYWJsZUIgPSBtZXRhdmFyaWFibGVBLmlzRXF1YWxUbyhtZXRhdmFyaWFibGVCKTtcblxuICAgICAgaWYgKG1ldGF2YXJpYWJsZUFFcXVhbFRvTWV0YXZhcmlhYmxlQikge1xuICAgICAgICBtZXRhdmFyaWFibGVEZWZpbmVkID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbWV0YXZhcmlhYmxlRGVmaW5lZDtcbiAgfVxuXG4gIG1hdGNoRnJhbWVOb2RlKGZyYW1lTm9kZSkge1xuICAgIGNvbnN0IG5vZGUgPSBmcmFtZU5vZGUsIC8vL1xuICAgICAgICAgIG5vZGVNYXRjaGVzID0gdGhpcy5tYXRjaE5vZGUobm9kZSksXG4gICAgICAgICAgZnJhbWVOb2RlTWF0Y2hlcyA9IG5vZGVNYXRjaGVzOyAvLy9cblxuICAgIHJldHVybiBmcmFtZU5vZGVNYXRjaGVzO1xuICB9XG5cbiAgbWF0Y2hNZXRhdmFyaWFibGVOb2RlKG1ldGF2YXJpYWJsZU5vZGUpIHtcbiAgICBsZXQgbWV0YXZhcmlhYmxlTm9kZU1hdGNoZXMgPSBmYWxzZTtcblxuICAgIGNvbnN0IHNpbmd1bGFyID0gdGhpcy5pc1Npbmd1bGFyKCk7XG5cbiAgICBpZiAoc2luZ3VsYXIpIHtcbiAgICAgIG1ldGF2YXJpYWJsZU5vZGVNYXRjaGVzID0gdGhpcy5tZXRhdmFyaWFibGUubWF0Y2hNZXRhdmFyaWFibGVOb2RlKG1ldGF2YXJpYWJsZU5vZGUpO1xuICAgIH1cblxuICAgIHJldHVybiBtZXRhdmFyaWFibGVOb2RlTWF0Y2hlcztcbiAgfVxuXG4gIGNvbXBhcmVQYXJhbWV0ZXIocGFyYW1ldGVyKSB7XG4gICAgbGV0IGNvbXBhcmVzVG9QYXJhbXRlciA9IGZhbHNlO1xuXG4gICAgY29uc3Qgc2luZ3VsYXIgPSB0aGlzLmlzU2luZ3VsYXIoKTtcblxuICAgIGlmIChzaW5ndWxhcikge1xuICAgICAgY29uc3QgcGFyYW1ldGVyTmFtZSA9IHBhcmFtZXRlci5nZXROYW1lKCk7XG5cbiAgICAgIGlmIChwYXJhbWV0ZXJOYW1lICE9PSBudWxsKSB7XG4gICAgICAgIGNvbnN0IG1ldGF2YXJpYWJsZU5hbWUgPSB0aGlzLmdldE1ldGF2YXJpYWJsZU5hbWUoKTtcblxuICAgICAgICBpZiAocGFyYW1ldGVyTmFtZSA9PT0gbWV0YXZhcmlhYmxlTmFtZSkge1xuICAgICAgICAgIGNvbXBhcmVzVG9QYXJhbXRlciA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gY29tcGFyZXNUb1BhcmFtdGVyO1xuICB9XG5cbiAgZmluZFZhbGlkRnJhbWUoY29udGV4dCkge1xuICAgIGNvbnN0IGZyYW1lTm9kZSA9IHRoaXMuZ2V0RnJhbWVOb2RlKCksXG4gICAgICAgICAgZnJhbWUgPSBjb250ZXh0LmZpbmRGcmFtZUJ5RnJhbWVOb2RlKGZyYW1lTm9kZSksXG4gICAgICAgICAgdmFsaWRGcmFtZSA9IGZyYW1lOyAvLy9cblxuICAgIHJldHVybiB2YWxpZEZyYW1lO1xuICB9XG5cbiAgdmFsaWRhdGUoY29udGV4dCwgY29udGludWF0aW9uKSB7XG4gICAgY29uc3QgZnJhbWVTdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtmcmFtZVN0cmluZ30nIGZyYW1lLi4uYCk7XG5cbiAgICBjb25zdCB2YWxpZEZyYW1lID0gdGhpcy5maW5kVmFsaWRGcmFtZShjb250ZXh0KTtcblxuICAgIGlmICh2YWxpZEZyYW1lICE9PSBudWxsKSB7XG4gICAgICBjb25zdCBmcmFtZSA9IHZhbGlkRnJhbWU7IC8vL1xuXG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi50aGUgJyR7ZnJhbWVTdHJpbmd9JyBmcmFtZSBpcyBhbHJlYWR5IHZhbGlkLmApO1xuXG4gICAgICBjb250aW51YXRpb24oZnJhbWUpO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgdmFsaWRhdE1ldGF2YXJpYWJsZSA9IHRoaXMudmFsaWRhdE1ldGF2YXJpYWJsZS5iaW5kKHRoaXMpLFxuICAgICAgICAgIHZhbGlkYXRlQXNzdW1wdGlvbnMgPSB0aGlzLnZhbGlkYXRlQXNzdW1wdGlvbnMuYmluZCh0aGlzKTtcblxuICAgIGFsbChbXG4gICAgICB2YWxpZGF0TWV0YXZhcmlhYmxlLFxuICAgICAgdmFsaWRhdGVBc3N1bXB0aW9uc1xuICAgIF0sIGNvbnRleHQsICh2YWxpZGF0ZXMpID0+IHtcbiAgICAgIGlmICghdmFsaWRhdGVzKSB7XG4gICAgICAgIGNvbnN0IGZyYW1lID0gbnVsbDtcblxuICAgICAgICBjb250aW51YXRpb24oZnJhbWUpO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgY29uc3QgdmFsaWRhdGVzV2hlblN0YXRlZCA9IHRoaXMudmFsaWRhdGVXaGVuU3RhdGVkLmJpbmQodGhpcyksXG4gICAgICAgICAgICB2YWxpZGF0ZXNXaGVuRGVyaXZlZCA9IHRoaXMudmFsaWRhdGVXaGVuRGVyaXZlZC5iaW5kKHRoaXMpO1xuXG4gICAgICBleGlzdHMoW1xuICAgICAgICB2YWxpZGF0ZXNXaGVuU3RhdGVkLFxuICAgICAgICB2YWxpZGF0ZXNXaGVuRGVyaXZlZFxuICAgICAgXSwgY29udGV4dCwgKHZhbGlkYXRlcykgPT4ge1xuICAgICAgICBsZXQgZnJhbWUgPSBudWxsO1xuXG4gICAgICAgIGlmICh2YWxpZGF0ZXMpIHtcbiAgICAgICAgICBmcmFtZSA9IHRoaXM7IC8vL1xuXG4gICAgICAgICAgY29udGV4dC5hZGRGcmFtZShmcmFtZSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodmFsaWRhdGVzKSB7XG4gICAgICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHtmcmFtZVN0cmluZ30nIGZyYW1lLmApO1xuICAgICAgICB9XG5cbiAgICAgICAgY29udGludWF0aW9uKGZyYW1lKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgdmFsaWRhdGVBc3N1bXB0aW9uKGFzc3VtcHRpb24sIGFzc3VtcHRpb25zLCBjb250ZXh0LCBjb250aW51YXRpb24pIHtcbiAgICBjb25zdCBmcmFtZVN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCksIC8vL1xuICAgICAgICAgIGFzc3VtcHRpb25TdHJpbmcgPSBhc3N1bXB0aW9uLmdldFN0cmluZygpO1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7ZnJhbWVTdHJpbmd9JyBmcmFtZSdzICcke2Fzc3VtcHRpb25TdHJpbmd9JyBhc3N1bXB0aW9uLmApO1xuXG4gICAgYXNzdW1wdGlvbi52YWxpZGF0ZShjb250ZXh0LCAoYXNzdW1wdGlvbikgPT4ge1xuICAgICAgbGV0IGFzc3VtcHRpb25WYWxpZGF0ZXMgPSBmYWxzZTtcblxuICAgICAgaWYgKGFzc3VtcHRpb24gIT09IG51bGwpIHtcbiAgICAgICAgYXNzdW1wdGlvbnMucHVzaChhc3N1bXB0aW9uKTtcblxuICAgICAgICBhc3N1bXB0aW9uVmFsaWRhdGVzID0gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKGFzc3VtcHRpb25WYWxpZGF0ZXMpIHtcbiAgICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHtmcmFtZVN0cmluZ30nIGZyYW1lJ3MgJyR7YXNzdW1wdGlvblN0cmluZ30nIGFzc3VtcHRpb24uYCk7XG4gICAgICB9XG5cbiAgICAgIGNvbnRpbnVhdGlvbihhc3N1bXB0aW9uVmFsaWRhdGVzKTtcbiAgICB9KTtcbiAgfVxuXG4gIHZhbGlkYXRlQXNzdW1wdGlvbnMoY29udGV4dCwgY29udGludWF0aW9uKSB7XG4gICAgY29uc3QgZnJhbWVTdHJpbmcgPSB0aGlzLmdldFN0cmluZygpO1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7ZnJhbWVTdHJpbmd9JyBmcmFtZSdzIGFzc3VtcHRpb25zLi4uYCk7XG5cbiAgICBjb25zdCBhc3N1bXB0aW9ucyA9IFtdO1xuXG4gICAgZXZlcnkodGhpcy5hc3N1bXB0aW9ucywgKGFzc3VtcHRpb24pID0+IHtcbiAgICAgIHRoaXMudmFsaWRhdGVBc3N1bXB0aW9uKGFzc3VtcHRpb24sIGFzc3VtcHRpb25zLCBjb250ZXh0LCBjb250aW51YXRpb24pO1xuICAgIH0sIChhc3N1bXB0aW9uc1ZhbGlkYXRlKSA9PiB7XG4gICAgICBpZiAoYXNzdW1wdGlvbnNWYWxpZGF0ZSkge1xuICAgICAgICB0aGlzLmFzc3VtcHRpb25zID0gYXNzdW1wdGlvbnM7XG5cbiAgICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHtmcmFtZVN0cmluZ30nIGZyYW1lJ3MgYXNzdW1wdGlvbnMuYCk7XG4gICAgICB9XG5cbiAgICAgIGNvbnRpbnVhdGlvbihhc3N1bXB0aW9uc1ZhbGlkYXRlKTtcbiAgICB9KTtcbiAgfVxuXG4gIHZhbGlkYXRNZXRhdmFyaWFibGUoY29udGV4dCwgY29udGludWF0aW9uKSB7XG4gICAgaWYgKHRoaXMubWV0YXZhcmlhYmxlICE9PSBudWxsKSB7XG4gICAgICBjb25zdCBtZXRhdmFyaWFibGVWYWxpZGF0ZXMgPSB0cnVlO1xuXG4gICAgICBjb250aW51YXRpb24obWV0YXZhcmlhYmxlVmFsaWRhdGVzKTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGZyYW1lU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtmcmFtZVN0cmluZ30nIGZyYW1lJ3MgbWV0YXZhcmlhYmxlLi4uYCk7XG5cbiAgICB0aGlzLm1ldGF2YXJpYWJsZS52YWxpZGF0ZShjb250ZXh0LCAobWV0YXZhcmlhYmxlKSA9PiB7XG4gICAgICBsZXQgbWV0YXZhcmlhYmxlVmFsaWRhdGVzID0gZmFsc2U7XG5cbiAgICAgIGlmIChtZXRhdmFyaWFibGUgIT09IG51bGwpIHtcbiAgICAgICAgY29uc3QgbWV0YVR5cGVOYW1lID0gRlJBTUVfTUVUQV9UWVBFX05BTUUsXG4gICAgICAgICAgICAgIGZyYW1lTWV0YVR5cGUgPSBjb250ZXh0LmZpbmRNZXRhVHlwZUJ5TWV0YVR5cGVOYW1lKG1ldGFUeXBlTmFtZSksXG4gICAgICAgICAgICAgIG1ldGF2YXJpYWJsZU1ldGFUeXBlRXF1YWxUb0ZyYW1lTWV0YVR5cGUgPSBtZXRhdmFyaWFibGUuaXNNZXRhVHlwZUVxdWFsVG8oZnJhbWVNZXRhVHlwZSk7XG5cbiAgICAgICAgaWYgKG1ldGF2YXJpYWJsZU1ldGFUeXBlRXF1YWxUb0ZyYW1lTWV0YVR5cGUpIHtcbiAgICAgICAgICB0aGlzLm1ldGF2YXJpYWJsZSA9IG1ldGF2YXJpYWJsZTsgLy8vXG5cbiAgICAgICAgICBtZXRhdmFyaWFibGVWYWxpZGF0ZXMgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChtZXRhdmFyaWFibGVWYWxpZGF0ZXMpIHtcbiAgICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHtmcmFtZVN0cmluZ30nIGZyYW1lJ3MgbWV0YXZhcmlhYmxlLmApO1xuICAgICAgfVxuXG4gICAgICBjb250aW51YXRpb24obWV0YXZhcmlhYmxlVmFsaWRhdGVzKTtcbiAgICB9KTtcbiAgfVxuXG4gIHZhbGlkYXRlV2hlblN0YXRlZChjb250ZXh0LCBjb250aW51YXRpb24pIHtcbiAgICBjb25zdCBzdGF0ZWQgPSBjb250ZXh0LmlzU3RhdGVkKCk7XG5cbiAgICBpZiAoIXN0YXRlZCkge1xuICAgICAgY29uc3QgdmFsaWRhdGVzV2hlblN0YXRlZCA9IGZhbHNlO1xuXG4gICAgICBjb250aW51YXRpb24odmFsaWRhdGVzV2hlblN0YXRlZCk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBsZXQgdmFsaWRhdGVzV2hlblN0YXRlZDtcblxuICAgIGNvbnN0IGZyYW1lU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7ZnJhbWVTdHJpbmd9JyBzdGF0ZWQgZnJhbWUuLi5gKTtcblxuICAgIGNvbnN0IHNpbmd1bGFyID0gdGhpcy5pc1Npbmd1bGFyKCk7XG5cbiAgICBpZiAoIXNpbmd1bGFyKSB7XG4gICAgICBjb25zdCB2YWxpZGF0ZXNXaGVuU3RhdGVkID0gZmFsc2U7XG5cbiAgICAgIGNvbnRleHQuZGVidWcoYFRoZSAnJHtmcmFtZVN0cmluZ30nIHN0YXRlZCBmcmFtZSBtdXN0IGJlIHNpbmd1bGFyLmApO1xuXG4gICAgICBjb250aW51YXRpb24odmFsaWRhdGVzV2hlblN0YXRlZCk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB2YWxpZGF0ZXNXaGVuU3RhdGVkID0gdHJ1ZTtcblxuICAgIGlmICh2YWxpZGF0ZXNXaGVuU3RhdGVkKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke2ZyYW1lU3RyaW5nfScgc3RhdGVkIGZyYW1lLmApO1xuICAgIH1cblxuICAgIGNvbnRpbnVhdGlvbih2YWxpZGF0ZXNXaGVuU3RhdGVkKTtcbiAgfVxuXG4gIHZhbGlkYXRlV2hlbkRlcml2ZWQoY29udGV4dCwgY29udGludWF0aW9uKSB7XG4gICAgY29uc3Qgc3RhdGVkID0gY29udGV4dC5pc1N0YXRlZCgpO1xuXG4gICAgaWYgKHN0YXRlZCkge1xuICAgICAgY29uc3QgdmFsaWRhdGVzV2hlbkRlcml2ZWQgPSBmYWxzZTtcblxuICAgICAgY29udGludWF0aW9uKHZhbGlkYXRlc1doZW5EZXJpdmVkKTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGxldCB2YWxpZGF0ZXNXaGVuRGVyaXZlZDtcblxuICAgIGNvbnN0IGZyYW1lU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHtmcmFtZVN0cmluZ30nIGRlcml2ZWQgZnJhbWUuLi5gKTtcblxuICAgIHZhbGlkYXRlc1doZW5EZXJpdmVkID0gdHJ1ZTtcblxuICAgIGlmICh2YWxpZGF0ZXNXaGVuRGVyaXZlZCkge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke2ZyYW1lU3RyaW5nfScgZGVyaXZlZCBmcmFtZS5gKTtcbiAgICB9XG5cbiAgICBjb250aW51YXRpb24odmFsaWRhdGVzV2hlbkRlcml2ZWQpO1xuICB9XG5cbiAgdG9KU09OKCkge1xuICAgIGNvbnN0IHN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7XG5cbiAgICBsZXQgYnJlYWtQb2ludDtcblxuICAgIGJyZWFrUG9pbnQgPSB0aGlzLmdldEJyZWFrUG9pbnQoKTtcblxuICAgIGNvbnN0IGJyZWFrUG9pbnRKU09OID0gYnJlYWtQb2ludFRvQnJlYWtQb2ludEpTT04oYnJlYWtQb2ludCk7XG5cbiAgICBicmVha1BvaW50ID0gYnJlYWtQb2ludEpTT047ICAvLy9cblxuICAgIGNvbnN0IGpzb24gPSB7XG4gICAgICBzdHJpbmcsXG4gICAgICBicmVha1BvaW50XG4gICAgfTtcblxuICAgIHJldHVybiBqc29uO1xuICB9XG5cbiAgc3RhdGljIG5hbWUgPSBcIkZyYW1lXCI7XG5cbiAgc3RhdGljIGZyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgICByZXR1cm4gaW5zdGFudGlhdGUoKGNvbnRleHQpID0+IHtcbiAgICAgIGNvbnN0IHsgc3RyaW5nIH0gPSBqc29uLFxuICAgICAgICAgICAgZnJhbWVOb2RlID0gaW5zdGFudGlhdGVGcmFtZShzdHJpbmcsIGNvbnRleHQpLFxuICAgICAgICAgICAgbm9kZSA9IGZyYW1lTm9kZSwgLy8vXG4gICAgICAgICAgICBicmVha1BvaW50ID0gYnJlYWtQb2ludEZyb21KU09OKGpzb24pLFxuICAgICAgICAgICAgYXNzdW1wdGlvbnMgPSBhc3N1bXB0aW9uc0Zyb21GcmFtZU5vZGUoZnJhbWVOb2RlLCBjb250ZXh0KSxcbiAgICAgICAgICAgIG1ldGF2YXJpYWJsZSA9IG1ldGF2YXJpYWJsZUZyb21GcmFtZU5vZGUoZnJhbWVOb2RlLCBjb250ZXh0KTtcblxuICAgICAgY29udGV4dCA9IG51bGw7XG5cbiAgICAgIGNvbnN0IGZyYW1lID0gbmV3IEZyYW1lKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgYXNzdW1wdGlvbnMsIG1ldGF2YXJpYWJsZSk7XG5cbiAgICAgIHJldHVybiBmcmFtZTtcbiAgICB9LCBjb250ZXh0KTtcbiAgfVxufSk7XG5cbmZ1bmN0aW9uIGFzc3VtcHRpb25zRnJvbUZyYW1lTm9kZShmcmFtZU5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgYXNzdW1wdGlvbk5vZGVzID0gZnJhbWVOb2RlLmdldEFzc3VtcHRpb25Ob2RlcygpLFxuICAgICAgICBhc3N1bXB0aW9ucyA9IGFzc3VtcHRpb25Ob2Rlcy5tYXAoKGFzc3VtcHRpb25Ob2RlKSA9PiB7XG4gICAgICAgICAgY29uc3QgYXNzdW1wdGlvbiA9IGNvbnRleHQuZmluZEFzc3VtcHRpb25CeUFzc3VtcHRpb25Ob2RlKGFzc3VtcHRpb25Ob2RlKTtcblxuICAgICAgICAgIHJldHVybiBhc3N1bXB0aW9uO1xuICAgICAgICB9KTtcblxuICByZXR1cm4gYXNzdW1wdGlvbnM7XG59XG4iXSwibmFtZXMiOlsiZXZlcnkiLCJjb250aW51YXRpb25VdGlsaXRpZXMiLCJicmVha1BvaW50RnJvbUpTT04iLCJicmVha1BvaW50VG9CcmVha1BvaW50SlNPTiIsImJyZWFrUG9pbnRVdGlsaXRpZXMiLCJkZWZpbmUiLCJGcmFtZSIsIkVsZW1lbnQiLCJjb250ZXh0Iiwic3RyaW5nIiwibm9kZSIsImJyZWFrUG9pbnQiLCJhc3N1bXB0aW9ucyIsIm1ldGF2YXJpYWJsZSIsImdldEFzc3VtcHRpb25zIiwiZ2V0TWV0YXZhcmlhYmxlIiwiZ2V0RnJhbWVOb2RlIiwiZ2V0Tm9kZSIsImZyYW1lTm9kZSIsImdldE1ldGF2YXJpYWJsZU5vZGUiLCJtZXRhdmFyaWFibGVOb2RlIiwiZ2V0TWV0YXZhcmlhYmxlTmFtZSIsIm1ldGF2YXJpYWJsZU5hbWUiLCJzaW5ndWxhciIsImlzU2luZ3VsYXIiLCJnZXROYW1lIiwiaXNFcXVhbFRvIiwiZnJhbWUiLCJmcmFtZU5vZGVNYXRjaGVzIiwibWF0Y2hGcmFtZU5vZGUiLCJlcXVhbFRvIiwiaXNJbXBsaWNpdCIsImltcGxpY2l0IiwiaXNNZXRhdmFyaWFibGVEZWZpbmVkIiwibWV0YXZhcmlhYmxlRGVmaW5lZCIsIm1ldGF2YXJpYWJsZUEiLCJtZXRhdmFyaWFibGVCIiwibWV0YXZhcmlhYmxlQUVxdWFsVG9NZXRhdmFyaWFibGVCIiwibm9kZU1hdGNoZXMiLCJtYXRjaE5vZGUiLCJtYXRjaE1ldGF2YXJpYWJsZU5vZGUiLCJtZXRhdmFyaWFibGVOb2RlTWF0Y2hlcyIsImNvbXBhcmVQYXJhbWV0ZXIiLCJwYXJhbWV0ZXIiLCJjb21wYXJlc1RvUGFyYW10ZXIiLCJwYXJhbWV0ZXJOYW1lIiwiZmluZFZhbGlkRnJhbWUiLCJmaW5kRnJhbWVCeUZyYW1lTm9kZSIsInZhbGlkRnJhbWUiLCJ2YWxpZGF0ZSIsImNvbnRpbnVhdGlvbiIsImZyYW1lU3RyaW5nIiwiZ2V0U3RyaW5nIiwidHJhY2UiLCJkZWJ1ZyIsInZhbGlkYXRNZXRhdmFyaWFibGUiLCJiaW5kIiwidmFsaWRhdGVBc3N1bXB0aW9ucyIsImFsbCIsInZhbGlkYXRlcyIsInZhbGlkYXRlc1doZW5TdGF0ZWQiLCJ2YWxpZGF0ZVdoZW5TdGF0ZWQiLCJ2YWxpZGF0ZXNXaGVuRGVyaXZlZCIsInZhbGlkYXRlV2hlbkRlcml2ZWQiLCJleGlzdHMiLCJhZGRGcmFtZSIsInZhbGlkYXRlQXNzdW1wdGlvbiIsImFzc3VtcHRpb24iLCJhc3N1bXB0aW9uU3RyaW5nIiwiYXNzdW1wdGlvblZhbGlkYXRlcyIsInB1c2giLCJhc3N1bXB0aW9uc1ZhbGlkYXRlIiwibWV0YXZhcmlhYmxlVmFsaWRhdGVzIiwibWV0YVR5cGVOYW1lIiwiRlJBTUVfTUVUQV9UWVBFX05BTUUiLCJmcmFtZU1ldGFUeXBlIiwiZmluZE1ldGFUeXBlQnlNZXRhVHlwZU5hbWUiLCJtZXRhdmFyaWFibGVNZXRhVHlwZUVxdWFsVG9GcmFtZU1ldGFUeXBlIiwiaXNNZXRhVHlwZUVxdWFsVG8iLCJzdGF0ZWQiLCJpc1N0YXRlZCIsInRvSlNPTiIsImdldEJyZWFrUG9pbnQiLCJicmVha1BvaW50SlNPTiIsImpzb24iLCJuYW1lIiwiZnJvbUpTT04iLCJpbnN0YW50aWF0ZSIsImluc3RhbnRpYXRlRnJhbWUiLCJhc3N1bXB0aW9uc0Zyb21GcmFtZU5vZGUiLCJtZXRhdmFyaWFibGVGcm9tRnJhbWVOb2RlIiwiYXNzdW1wdGlvbk5vZGVzIiwiZ2V0QXNzdW1wdGlvbk5vZGVzIiwibWFwIiwiYXNzdW1wdGlvbk5vZGUiLCJmaW5kQXNzdW1wdGlvbkJ5QXNzdW1wdGlvbk5vZGUiXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQWNBOzs7ZUFBQTs7O2dDQVpvRTswQkFFN0M7eUJBQ0s7OEJBQ0E7NkJBQ0s7K0JBQ0k7eUJBQ0s7QUFFMUMsTUFBTSxFQUFFQSxLQUFLLEVBQUUsR0FBR0MscUNBQXFCLEVBQ2pDLEVBQUVDLGtCQUFrQixFQUFFQywwQkFBMEIsRUFBRSxH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
|