occam-nominal 1.0.507 → 1.0.508
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/assertion/schema.js +13 -3
- package/lib/element/assertion/signature.js +20 -11
- package/lib/element/claim.js +2 -2
- package/lib/element/constraint.js +14 -3
- package/lib/element/fact/step.js +77 -70
- package/lib/element/fact.js +1 -13
- package/lib/element/label.js +7 -24
- package/lib/element/reference.js +15 -20
- package/lib/element/rule.js +2 -2
- package/lib/element/schema.js +2 -2
- package/package.json +3 -3
- package/src/element/assertion/schema.js +18 -3
- package/src/element/assertion/signature.js +29 -16
- package/src/element/claim.js +1 -1
- package/src/element/constraint.js +18 -3
- package/src/element/fact/step.js +89 -81
- package/src/element/fact.js +0 -18
- package/src/element/label.js +8 -34
- package/src/element/reference.js +20 -29
- package/src/element/rule.js +1 -1
- package/src/element/schema.js +1 -1
|
@@ -58,7 +58,7 @@ function _interop_require_wildcard(obj, nodeInterop) {
|
|
|
58
58
|
}
|
|
59
59
|
return newObj;
|
|
60
60
|
}
|
|
61
|
-
const { cut, some } = _occamlanguages.continuationUtilities;
|
|
61
|
+
const { cut, some } = _occamlanguages.continuationUtilities, { unbreakable } = _occamlanguages.breakPointUtilities;
|
|
62
62
|
const _default = (0, _elements.define)(class SchemaAssertion extends _assertion.default {
|
|
63
63
|
constructor(context, string, node, breakPoint, link, frame){
|
|
64
64
|
super(context, string, node, breakPoint);
|
|
@@ -95,8 +95,18 @@ const _default = (0, _elements.define)(class SchemaAssertion extends _assertion.
|
|
|
95
95
|
}
|
|
96
96
|
return implicitAssumptions;
|
|
97
97
|
}
|
|
98
|
-
|
|
98
|
+
verify = unbreakable(function(context, forward, back) {
|
|
99
99
|
forward = cut(forward, back); ///
|
|
100
|
+
const schemaAssertionString = this.getString(); ///
|
|
101
|
+
context.trace(`Verifying the '${schemaAssertionString}' schema assertion...`);
|
|
102
|
+
return (0, _state.declare)((state)=>{
|
|
103
|
+
return this.validate(state, context, (schemaAssertion, context, back)=>{
|
|
104
|
+
context.debug(`...verified the '${schemaAssertionString}' schema assertion.`);
|
|
105
|
+
return forward(context, back);
|
|
106
|
+
}, back);
|
|
107
|
+
});
|
|
108
|
+
});
|
|
109
|
+
validate(state, context, forward, back) {
|
|
100
110
|
let validates;
|
|
101
111
|
const schameAssertionString = this.getString(); ///
|
|
102
112
|
context.trace(`Validating the '${schameAssertionString}' schame assertion...`);
|
|
@@ -163,4 +173,4 @@ const _default = (0, _elements.define)(class SchemaAssertion extends _assertion.
|
|
|
163
173
|
static name = "SchemaAssertion";
|
|
164
174
|
});
|
|
165
175
|
|
|
166
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L2Fzc2VydGlvbi9zY2hlbWEuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IGNvbnRpbnVhdGlvblV0aWxpdGllcyB9IGZyb20gXCJvY2NhbS1sYW5ndWFnZXNcIjtcblxuaW1wb3J0IEFzc2VydGlvbiBmcm9tIFwiLi4vYXNzZXJ0aW9uXCI7XG5cbmltcG9ydCBlbGVtZW50cyBmcm9tIFwiLi4vLi4vZWxlbWVudHNcIjtcblxuaW1wb3J0IHsgZGVmaW5lIH0gZnJvbSBcIi4uLy4uL2VsZW1lbnRzXCI7XG5pbXBvcnQgeyBkZWNsYXJlIH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9zdGF0ZVwiO1xuXG5jb25zdCB7IGN1dCwgc29tZSB9ID0gY29udGludWF0aW9uVXRpbGl0aWVzO1xuXG5leHBvcnQgZGVmYXVsdCBkZWZpbmUoY2xhc3MgU2NoZW1hQXNzZXJ0aW9uIGV4dGVuZHMgQXNzZXJ0aW9uIHtcbiAgY29uc3RydWN0b3IoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCBsaW5rLCBmcmFtZSkge1xuICAgIHN1cGVyKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCk7XG5cbiAgICB0aGlzLmxpbmsgPSBsaW5rO1xuICAgIHRoaXMuZnJhbWUgPSBmcmFtZTtcbiAgfVxuXG4gIGdldExpbmsoKSB7XG4gICAgcmV0dXJuIHRoaXMubGluaztcbiAgfVxuXG4gIGdldEZyYW1lKCkge1xuICAgIHJldHVybiB0aGlzLmZyYW1lO1xuICB9XG5cbiAgZ2V0U2NoZW1hQXNzZXJ0aW9uTm9kZSgpIHtcbiAgICBjb25zdCBub2RlID0gdGhpcy5nZXROb2RlKCksXG4gICAgICAgICAgc2NoZW1hQXNzZXJ0aW9uTm9kZSA9IG5vZGU7ICAvLy9cblxuICAgIHJldHVybiBzY2hlbWFBc3NlcnRpb25Ob2RlO1xuICB9XG5cbiAgZ2V0QXNzdW1wdGlvbnMoKSB7IHJldHVybiB0aGlzLmZyYW1lLmdldEFzc3VtcHRpb25zKCk7IH1cblxuICBnZXRNZXRhdmFyaWFibGUoKSB7IHJldHVybiB0aGlzLmZyYW1lLmdldE1ldGF2YXJpYWJsZSgpOyB9XG5cbiAgZ2V0SW1wbGljaXRBc3N1bXB0aW9ucyhjb250ZXh0KSB7XG4gICAgY29uc3QgaW1wbGljaXRBc3N1bXB0aW9ucyA9IFtdLFxuICAgICAgICAgIG1ldGF2YXJpYWJsZSA9IHRoaXMuZ2V0TWV0YXZhcmlhYmxlKCk7XG5cbiAgICBpZiAobWV0YXZhcmlhYmxlICE9PSBudWxsKSB7XG4gICAgICBjb25zdCB7IEltcGxpY2l0QXNzdW1wdGlvbiB9ID0gZWxlbWVudHMsXG4gICAgICAgICAgICBmYWN0cyA9IGNvbnRleHQuZ2V0RmFjdHMoKTtcblxuICAgICAgZmFjdHMuZm9yRWFjaCgoZmFjdCkgPT4ge1xuICAgICAgICBjb25zdCBzdGF0ZW1lbnQgPSBmYWN0LmdldFN0YXRlbWVudCgpLFxuICAgICAgICAgICAgICBpbXBsaWNpdEFzc3VtcHRpb24gPSBJbXBsaWNpdEFzc3VtcHRpb24uZnJvbVN0YXRlbWVudChzdGF0ZW1lbnQsIGNvbnRleHQpO1xuXG4gICAgICAgIGRlY2xhcmUoKHN0YXRlKSA9PiB7XG4gICAgICAgICAgaW1wbGljaXRBc3N1bXB0aW9uLnZhbGlkYXRlKHN0YXRlLCBjb250ZXh0LCAoaW1wbGljaXRBc3N1bXB0aW9uLCBjb250ZXh0KSA9PiB0cnVlKSAgLy8vXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGltcGxpY2l0QXNzdW1wdGlvbnMucHVzaChpbXBsaWNpdEFzc3VtcHRpb24pO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGltcGxpY2l0QXNzdW1wdGlvbnM7XG4gIH1cblxuICB2YWxpZGF0ZShzdGF0ZSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGZvcndhcmQgPSBjdXQoZm9yd2FyZCwgYmFjayk7IC8vL1xuXG4gICAgbGV0IHZhbGlkYXRlcztcblxuICAgIGNvbnN0IHNjaGFtZUFzc2VydGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke3NjaGFtZUFzc2VydGlvblN0cmluZ30nIHNjaGFtZSBhc3NlcnRpb24uLi5gKTtcblxuICAgIGxldCBhc3NlcnRpb247XG5cbiAgICBhc3NlcnRpb24gPSB0aGlzLmZpbmRBc3NlcnRpb24oY29udGV4dCk7XG5cbiAgICBpZiAoYXNzZXJ0aW9uICE9PSBudWxsKSB7XG4gICAgICBjb25zdCBzY2hhbWVBc3NlcnRpb24gPSBhc3NlcnRpb247ICAvLy9cblxuICAgICAgY29udGV4dC5kZWJ1ZyhgVGhlICcke3NjaGFtZUFzc2VydGlvblN0cmluZ30nIHNjaGFtZSBhc3NlcnRpb24gaXMgYWxyZWFkeSBwcmVzZW50LmApO1xuXG4gICAgICB2YWxpZGF0ZXMgPSBjb250aW51YXRpb24oc2NoYW1lQXNzZXJ0aW9uLCBjb250ZXh0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgYXNzZXJ0aW9uID0gdGhpczsgIC8vL1xuXG4gICAgICBjb25zdCB2YWxpZGF0ZUZyYW1lID0gdGhpcy52YWxpZGF0ZUZyYW1lLmJpbmQodGhpcyksXG4gICAgICAgICAgICB2YWxpZGF0ZUxpbmsgPSB0aGlzLnZhbGlkYXRlTGluay5iaW5kKHRoaXMpO1xuXG4gICAgICB2YWxpZGF0ZXMgPSBhbGwoW1xuICAgICAgICB2YWxpZGF0ZUZyYW1lLFxuICAgICAgICB2YWxpZGF0ZUxpbmtcbiAgICAgIF0sIHN0YXRlLCBjb250ZXh0LCAoc3RhdGUsIF8gKSA9PiB7XG4gICAgICAgIGxldCB2YWxpZGF0ZXM7XG5cbiAgICAgICAgY29uc3Qgc2NoYW1lQXNzZXJ0aW9uID0gYXNzZXJ0aW9uOyAgLy8vXG5cbiAgICAgICAgdmFsaWRhdGVzID0gY29udGludWF0aW9uKHNjaGFtZUFzc2VydGlvbiwgY29udGV4dCk7XG5cbiAgICAgICAgcmV0dXJuIHZhbGlkYXRlcztcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmICh2YWxpZGF0ZXMpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7c2NoYW1lQXNzZXJ0aW9uU3RyaW5nfScgc2NoYW1lIGFzc2VydGlvbi5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmFsaWRhdGVzO1xuICB9XG5cbiAgdmFsaWRhdGVGcmFtZShzdGF0ZSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGxldCBmcmFtZVZhbGlkYXRlcztcblxuICAgIGNvbnN0IHNjaGFtZUFzc2VydGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke3NjaGFtZUFzc2VydGlvblN0cmluZ30nIHNjaGFtZSBhc3NlcnRpb24ncyBmcmFtZS4uLmApO1xuXG4gICAgZnJhbWVWYWxpZGF0ZXMgPSB0aGlzLmZyYW1lLnZhbGlkYXRlKHN0YXRlLCBjb250ZXh0LCAoZnJhbWUsIGNvbnRleHQpID0+IHtcbiAgICAgIGxldCB2YWxpZGF0ZXM7XG5cbiAgICAgIHRoaXMuZnJhbWUgPSBmcmFtZTtcblxuICAgICAgdmFsaWRhdGVzID0gY29udGludWF0aW9uKHN0YXRlLCBjb250ZXh0KTtcblxuICAgICAgcmV0dXJuIHZhbGlkYXRlcztcbiAgICB9KTtcblxuICAgIGlmIChmcmFtZVZhbGlkYXRlcykge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHtzY2hhbWVBc3NlcnRpb25TdHJpbmd9JyBzY2hhbWUgYXNzZXJ0aW9uJ3MgZnJhbWUuYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZyYW1lVmFsaWRhdGVzO1xuICB9XG5cbiAgdmFsaWRhdGVMaW5rKHN0YXRlLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgbGV0IGxpbmtWYWxpZGF0ZXM7XG5cbiAgICBjb25zdCBzY2hhbWVBc3NlcnRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtzY2hhbWVBc3NlcnRpb25TdHJpbmd9JyBzY2hhbWUgYXNzZXJ0aW9uJ3MgbGluay4uLmApO1xuXG4gICAgbGlua1ZhbGlkYXRlcyA9IHRoaXMubGluay52YWxpZGF0ZShzdGF0ZSwgY29udGV4dCwgKGxpbmssIGNvbnRleHQpID0+IHtcbiAgICAgIGxldCB2YWxpZGF0ZXM7XG5cbiAgICAgIHRoaXMubGluayA9IGxpbms7XG5cbiAgICAgIHZhbGlkYXRlcyA9IGNvbnRpbnVhdGlvbihzdGF0ZSwgY29udGV4dCk7XG5cbiAgICAgIHJldHVybiB2YWxpZGF0ZXM7XG4gICAgfSk7XG5cbiAgICBpZiAobGlua1ZhbGlkYXRlcykge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHtzY2hhbWVBc3NlcnRpb25TdHJpbmd9JyBzY2hhbWUgYXNzZXJ0aW9uJ3MgbGluay5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbGlua1ZhbGlkYXRlcztcbiAgfVxuXG4gIHVuaWZ5U3RlcChzdGVwLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3Qgc2NoZW1hcyA9IGNvbnRleHQuZ2V0U2NoZW1hcygpLFxuICAgICAgICAgIHN0YXRlbWVudCA9IHN0ZXAuZ2V0U3RhdGVtZW50KCksXG4gICAgICAgICAgc2NoZW1hQXNzZXJ0aW9uID0gdGhpczsgLy8vXG5cbiAgICByZXR1cm4gc29tZShzY2hlbWFzLCAoc2NoZW1hLCBmb3J3YXJkLCBiYWNrKSA9PiB7XG4gICAgICByZXR1cm4gc2NoZW1hLnVuaWZ5U3RhdGVtZW50QW5kU2NoZW1hQXNzZXJ0aW9uKHN0YXRlbWVudCwgc2NoZW1hQXNzZXJ0aW9uLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKTtcbiAgICB9LCBmb3J3YXJkLCBiYWNrKTtcbiAgfVxuXG4gIHN0YXRpYyBuYW1lID0gXCJTY2hlbWFBc3NlcnRpb25cIjtcbn0pO1xuIl0sIm5hbWVzIjpbImN1dCIsInNvbWUiLCJjb250aW51YXRpb25VdGlsaXRpZXMiLCJkZWZpbmUiLCJTY2hlbWFBc3NlcnRpb24iLCJBc3NlcnRpb24iLCJjb250ZXh0Iiwic3RyaW5nIiwibm9kZSIsImJyZWFrUG9pbnQiLCJsaW5rIiwiZnJhbWUiLCJnZXRMaW5rIiwiZ2V0RnJhbWUiLCJnZXRTY2hlbWFBc3NlcnRpb25Ob2RlIiwiZ2V0Tm9kZSIsInNjaGVtYUFzc2VydGlvbk5vZGUiLCJnZXRBc3N1bXB0aW9ucyIsImdldE1ldGF2YXJpYWJsZSIsImdldEltcGxpY2l0QXNzdW1wdGlvbnMiLCJpbXBsaWNpdEFzc3VtcHRpb25zIiwibWV0YXZhcmlhYmxlIiwiSW1wbGljaXRBc3N1bXB0aW9uIiwiZWxlbWVudHMiLCJmYWN0cyIsImdldEZhY3RzIiwiZm9yRWFjaCIsImZhY3QiLCJzdGF0ZW1lbnQiLCJnZXRTdGF0ZW1lbnQiLCJpbXBsaWNpdEFzc3VtcHRpb24iLCJmcm9tU3RhdGVtZW50IiwiZGVjbGFyZSIsInN0YXRlIiwidmFsaWRhdGUiLCJwdXNoIiwiZm9yd2FyZCIsImJhY2siLCJ2YWxpZGF0ZXMiLCJzY2hhbWVBc3NlcnRpb25TdHJpbmciLCJnZXRTdHJpbmciLCJ0cmFjZSIsImFzc2VydGlvbiIsImZpbmRBc3NlcnRpb24iLCJzY2hhbWVBc3NlcnRpb24iLCJkZWJ1ZyIsImNvbnRpbnVhdGlvbiIsInZhbGlkYXRlRnJhbWUiLCJiaW5kIiwidmFsaWRhdGVMaW5rIiwiYWxsIiwiXyIsImZyYW1lVmFsaWRhdGVzIiwibGlua1ZhbGlkYXRlcyIsInVuaWZ5U3RlcCIsInN0ZXAiLCJzY2hlbWFzIiwiZ2V0U2NoZW1hcyIsInNjaGVtYUFzc2VydGlvbiIsInNjaGVtYSIsInVuaWZ5U3RhdGVtZW50QW5kU2NoZW1hQXNzZXJ0aW9uIiwibmFtZSJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBYUE7OztlQUFBOzs7Z0NBWHNDO2tFQUVoQjtrRUFFRDt1QkFHRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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
|
|
176
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L2Fzc2VydGlvbi9zY2hlbWEuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IGJyZWFrUG9pbnRVdGlsaXRpZXMsIGNvbnRpbnVhdGlvblV0aWxpdGllcyB9IGZyb20gXCJvY2NhbS1sYW5ndWFnZXNcIjtcblxuaW1wb3J0IEFzc2VydGlvbiBmcm9tIFwiLi4vYXNzZXJ0aW9uXCI7XG5cbmltcG9ydCBlbGVtZW50cyBmcm9tIFwiLi4vLi4vZWxlbWVudHNcIjtcblxuaW1wb3J0IHsgZGVmaW5lIH0gZnJvbSBcIi4uLy4uL2VsZW1lbnRzXCI7XG5pbXBvcnQgeyBkZWNsYXJlIH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9zdGF0ZVwiO1xuXG5jb25zdCB7IGN1dCwgc29tZSB9ID0gY29udGludWF0aW9uVXRpbGl0aWVzLFxuICAgICAgeyB1bmJyZWFrYWJsZSB9ID0gYnJlYWtQb2ludFV0aWxpdGllcztcblxuZXhwb3J0IGRlZmF1bHQgZGVmaW5lKGNsYXNzIFNjaGVtYUFzc2VydGlvbiBleHRlbmRzIEFzc2VydGlvbiB7XG4gIGNvbnN0cnVjdG9yKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgbGluaywgZnJhbWUpIHtcbiAgICBzdXBlcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQpO1xuXG4gICAgdGhpcy5saW5rID0gbGluaztcbiAgICB0aGlzLmZyYW1lID0gZnJhbWU7XG4gIH1cblxuICBnZXRMaW5rKCkge1xuICAgIHJldHVybiB0aGlzLmxpbms7XG4gIH1cblxuICBnZXRGcmFtZSgpIHtcbiAgICByZXR1cm4gdGhpcy5mcmFtZTtcbiAgfVxuXG4gIGdldFNjaGVtYUFzc2VydGlvbk5vZGUoKSB7XG4gICAgY29uc3Qgbm9kZSA9IHRoaXMuZ2V0Tm9kZSgpLFxuICAgICAgICAgIHNjaGVtYUFzc2VydGlvbk5vZGUgPSBub2RlOyAgLy8vXG5cbiAgICByZXR1cm4gc2NoZW1hQXNzZXJ0aW9uTm9kZTtcbiAgfVxuXG4gIGdldEFzc3VtcHRpb25zKCkgeyByZXR1cm4gdGhpcy5mcmFtZS5nZXRBc3N1bXB0aW9ucygpOyB9XG5cbiAgZ2V0TWV0YXZhcmlhYmxlKCkgeyByZXR1cm4gdGhpcy5mcmFtZS5nZXRNZXRhdmFyaWFibGUoKTsgfVxuXG4gIGdldEltcGxpY2l0QXNzdW1wdGlvbnMoY29udGV4dCkge1xuICAgIGNvbnN0IGltcGxpY2l0QXNzdW1wdGlvbnMgPSBbXSxcbiAgICAgICAgICBtZXRhdmFyaWFibGUgPSB0aGlzLmdldE1ldGF2YXJpYWJsZSgpO1xuXG4gICAgaWYgKG1ldGF2YXJpYWJsZSAhPT0gbnVsbCkge1xuICAgICAgY29uc3QgeyBJbXBsaWNpdEFzc3VtcHRpb24gfSA9IGVsZW1lbnRzLFxuICAgICAgICAgICAgZmFjdHMgPSBjb250ZXh0LmdldEZhY3RzKCk7XG5cbiAgICAgIGZhY3RzLmZvckVhY2goKGZhY3QpID0+IHtcbiAgICAgICAgY29uc3Qgc3RhdGVtZW50ID0gZmFjdC5nZXRTdGF0ZW1lbnQoKSxcbiAgICAgICAgICAgICAgaW1wbGljaXRBc3N1bXB0aW9uID0gSW1wbGljaXRBc3N1bXB0aW9uLmZyb21TdGF0ZW1lbnQoc3RhdGVtZW50LCBjb250ZXh0KTtcblxuICAgICAgICBkZWNsYXJlKChzdGF0ZSkgPT4ge1xuICAgICAgICAgIGltcGxpY2l0QXNzdW1wdGlvbi52YWxpZGF0ZShzdGF0ZSwgY29udGV4dCwgKGltcGxpY2l0QXNzdW1wdGlvbiwgY29udGV4dCkgPT4gdHJ1ZSkgIC8vL1xuICAgICAgICB9KTtcblxuICAgICAgICBpbXBsaWNpdEFzc3VtcHRpb25zLnB1c2goaW1wbGljaXRBc3N1bXB0aW9uKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiBpbXBsaWNpdEFzc3VtcHRpb25zO1xuICB9XG5cbiAgdmVyaWZ5ID0gdW5icmVha2FibGUoZnVuY3Rpb24gKGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBmb3J3YXJkID0gY3V0KGZvcndhcmQsIGJhY2spOyAvLy9cblxuICAgIGNvbnN0IHNjaGVtYUFzc2VydGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7IC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHtzY2hlbWFBc3NlcnRpb25TdHJpbmd9JyBzY2hlbWEgYXNzZXJ0aW9uLi4uYCk7XG5cbiAgICByZXR1cm4gZGVjbGFyZSgoc3RhdGUpID0+IHtcbiAgICAgIHJldHVybiB0aGlzLnZhbGlkYXRlKHN0YXRlLCBjb250ZXh0LCAoc2NoZW1hQXNzZXJ0aW9uLCBjb250ZXh0ICwgYmFjaykgPT4ge1xuICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7c2NoZW1hQXNzZXJ0aW9uU3RyaW5nfScgc2NoZW1hIGFzc2VydGlvbi5gKTtcblxuICAgICAgICByZXR1cm4gZm9yd2FyZChjb250ZXh0LCBiYWNrKTtcbiAgICAgIH0sIGJhY2spO1xuICAgIH0pO1xuICB9KTtcblxuICB2YWxpZGF0ZShzdGF0ZSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGxldCB2YWxpZGF0ZXM7XG5cbiAgICBjb25zdCBzY2hhbWVBc3NlcnRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtzY2hhbWVBc3NlcnRpb25TdHJpbmd9JyBzY2hhbWUgYXNzZXJ0aW9uLi4uYCk7XG5cbiAgICBsZXQgYXNzZXJ0aW9uO1xuXG4gICAgYXNzZXJ0aW9uID0gdGhpcy5maW5kQXNzZXJ0aW9uKGNvbnRleHQpO1xuXG4gICAgaWYgKGFzc2VydGlvbiAhPT0gbnVsbCkge1xuICAgICAgY29uc3Qgc2NoYW1lQXNzZXJ0aW9uID0gYXNzZXJ0aW9uOyAgLy8vXG5cbiAgICAgIGNvbnRleHQuZGVidWcoYFRoZSAnJHtzY2hhbWVBc3NlcnRpb25TdHJpbmd9JyBzY2hhbWUgYXNzZXJ0aW9uIGlzIGFscmVhZHkgcHJlc2VudC5gKTtcblxuICAgICAgdmFsaWRhdGVzID0gY29udGludWF0aW9uKHNjaGFtZUFzc2VydGlvbiwgY29udGV4dCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGFzc2VydGlvbiA9IHRoaXM7ICAvLy9cblxuICAgICAgY29uc3QgdmFsaWRhdGVGcmFtZSA9IHRoaXMudmFsaWRhdGVGcmFtZS5iaW5kKHRoaXMpLFxuICAgICAgICAgICAgdmFsaWRhdGVMaW5rID0gdGhpcy52YWxpZGF0ZUxpbmsuYmluZCh0aGlzKTtcblxuICAgICAgdmFsaWRhdGVzID0gYWxsKFtcbiAgICAgICAgdmFsaWRhdGVGcmFtZSxcbiAgICAgICAgdmFsaWRhdGVMaW5rXG4gICAgICBdLCBzdGF0ZSwgY29udGV4dCwgKHN0YXRlLCBfICkgPT4ge1xuICAgICAgICBsZXQgdmFsaWRhdGVzO1xuXG4gICAgICAgIGNvbnN0IHNjaGFtZUFzc2VydGlvbiA9IGFzc2VydGlvbjsgIC8vL1xuXG4gICAgICAgIHZhbGlkYXRlcyA9IGNvbnRpbnVhdGlvbihzY2hhbWVBc3NlcnRpb24sIGNvbnRleHQpO1xuXG4gICAgICAgIHJldHVybiB2YWxpZGF0ZXM7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAodmFsaWRhdGVzKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke3NjaGFtZUFzc2VydGlvblN0cmluZ30nIHNjaGFtZSBhc3NlcnRpb24uYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbGlkYXRlcztcbiAgfVxuXG4gIHZhbGlkYXRlRnJhbWUoc3RhdGUsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBsZXQgZnJhbWVWYWxpZGF0ZXM7XG5cbiAgICBjb25zdCBzY2hhbWVBc3NlcnRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtzY2hhbWVBc3NlcnRpb25TdHJpbmd9JyBzY2hhbWUgYXNzZXJ0aW9uJ3MgZnJhbWUuLi5gKTtcblxuICAgIGZyYW1lVmFsaWRhdGVzID0gdGhpcy5mcmFtZS52YWxpZGF0ZShzdGF0ZSwgY29udGV4dCwgKGZyYW1lLCBjb250ZXh0KSA9PiB7XG4gICAgICBsZXQgdmFsaWRhdGVzO1xuXG4gICAgICB0aGlzLmZyYW1lID0gZnJhbWU7XG5cbiAgICAgIHZhbGlkYXRlcyA9IGNvbnRpbnVhdGlvbihzdGF0ZSwgY29udGV4dCk7XG5cbiAgICAgIHJldHVybiB2YWxpZGF0ZXM7XG4gICAgfSk7XG5cbiAgICBpZiAoZnJhbWVWYWxpZGF0ZXMpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7c2NoYW1lQXNzZXJ0aW9uU3RyaW5nfScgc2NoYW1lIGFzc2VydGlvbidzIGZyYW1lLmApO1xuICAgIH1cblxuICAgIHJldHVybiBmcmFtZVZhbGlkYXRlcztcbiAgfVxuXG4gIHZhbGlkYXRlTGluayhzdGF0ZSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGxldCBsaW5rVmFsaWRhdGVzO1xuXG4gICAgY29uc3Qgc2NoYW1lQXNzZXJ0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7c2NoYW1lQXNzZXJ0aW9uU3RyaW5nfScgc2NoYW1lIGFzc2VydGlvbidzIGxpbmsuLi5gKTtcblxuICAgIGxpbmtWYWxpZGF0ZXMgPSB0aGlzLmxpbmsudmFsaWRhdGUoc3RhdGUsIGNvbnRleHQsIChsaW5rLCBjb250ZXh0KSA9PiB7XG4gICAgICBsZXQgdmFsaWRhdGVzO1xuXG4gICAgICB0aGlzLmxpbmsgPSBsaW5rO1xuXG4gICAgICB2YWxpZGF0ZXMgPSBjb250aW51YXRpb24oc3RhdGUsIGNvbnRleHQpO1xuXG4gICAgICByZXR1cm4gdmFsaWRhdGVzO1xuICAgIH0pO1xuXG4gICAgaWYgKGxpbmtWYWxpZGF0ZXMpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7c2NoYW1lQXNzZXJ0aW9uU3RyaW5nfScgc2NoYW1lIGFzc2VydGlvbidzIGxpbmsuYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGxpbmtWYWxpZGF0ZXM7XG4gIH1cblxuICB1bmlmeVN0ZXAoc3RlcCwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IHNjaGVtYXMgPSBjb250ZXh0LmdldFNjaGVtYXMoKSxcbiAgICAgICAgICBzdGF0ZW1lbnQgPSBzdGVwLmdldFN0YXRlbWVudCgpLFxuICAgICAgICAgIHNjaGVtYUFzc2VydGlvbiA9IHRoaXM7IC8vL1xuXG4gICAgcmV0dXJuIHNvbWUoc2NoZW1hcywgKHNjaGVtYSwgZm9yd2FyZCwgYmFjaykgPT4ge1xuICAgICAgcmV0dXJuIHNjaGVtYS51bmlmeVN0YXRlbWVudEFuZFNjaGVtYUFzc2VydGlvbihzdGF0ZW1lbnQsIHNjaGVtYUFzc2VydGlvbiwgY29udGV4dCwgZm9yd2FyZCwgYmFjayk7XG4gICAgfSwgZm9yd2FyZCwgYmFjayk7XG4gIH1cblxuICBzdGF0aWMgbmFtZSA9IFwiU2NoZW1hQXNzZXJ0aW9uXCI7XG59KTtcbiJdLCJuYW1lcyI6WyJjdXQiLCJzb21lIiwiY29udGludWF0aW9uVXRpbGl0aWVzIiwidW5icmVha2FibGUiLCJicmVha1BvaW50VXRpbGl0aWVzIiwiZGVmaW5lIiwiU2NoZW1hQXNzZXJ0aW9uIiwiQXNzZXJ0aW9uIiwiY29udGV4dCIsInN0cmluZyIsIm5vZGUiLCJicmVha1BvaW50IiwibGluayIsImZyYW1lIiwiZ2V0TGluayIsImdldEZyYW1lIiwiZ2V0U2NoZW1hQXNzZXJ0aW9uTm9kZSIsImdldE5vZGUiLCJzY2hlbWFBc3NlcnRpb25Ob2RlIiwiZ2V0QXNzdW1wdGlvbnMiLCJnZXRNZXRhdmFyaWFibGUiLCJnZXRJbXBsaWNpdEFzc3VtcHRpb25zIiwiaW1wbGljaXRBc3N1bXB0aW9ucyIsIm1ldGF2YXJpYWJsZSIsIkltcGxpY2l0QXNzdW1wdGlvbiIsImVsZW1lbnRzIiwiZmFjdHMiLCJnZXRGYWN0cyIsImZvckVhY2giLCJmYWN0Iiwic3RhdGVtZW50IiwiZ2V0U3RhdGVtZW50IiwiaW1wbGljaXRBc3N1bXB0aW9uIiwiZnJvbVN0YXRlbWVudCIsImRlY2xhcmUiLCJzdGF0ZSIsInZhbGlkYXRlIiwicHVzaCIsInZlcmlmeSIsImZvcndhcmQiLCJiYWNrIiwic2NoZW1hQXNzZXJ0aW9uU3RyaW5nIiwiZ2V0U3RyaW5nIiwidHJhY2UiLCJzY2hlbWFBc3NlcnRpb24iLCJkZWJ1ZyIsInZhbGlkYXRlcyIsInNjaGFtZUFzc2VydGlvblN0cmluZyIsImFzc2VydGlvbiIsImZpbmRBc3NlcnRpb24iLCJzY2hhbWVBc3NlcnRpb24iLCJjb250aW51YXRpb24iLCJ2YWxpZGF0ZUZyYW1lIiwiYmluZCIsInZhbGlkYXRlTGluayIsImFsbCIsIl8iLCJmcmFtZVZhbGlkYXRlcyIsImxpbmtWYWxpZGF0ZXMiLCJ1bmlmeVN0ZXAiLCJzdGVwIiwic2NoZW1hcyIsImdldFNjaGVtYXMiLCJzY2hlbWEiLCJ1bmlmeVN0YXRlbWVudEFuZFNjaGVtYUFzc2VydGlvbiIsIm5hbWUiXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQWNBOzs7ZUFBQTs7O2dDQVoyRDtrRUFFckM7a0VBRUQ7dUJBR0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRXhCLE1BQU0sRUFBRUEsR0FBRyxFQUFFQyxJQUFJLEVBQUUsR0FBR0MscUNBQXFCLEVBQ3JDLEVBQUVDLFdBQVcsRUFBRSxHQUFHQyxtQ0FBbUI7TUFFM0MsV0FBZUMsSUFBQUEsZ0JBQU0sRUFBQyxNQUFNQyx3QkFBd0JDLGtCQUFTO0lBQzNELFlBQVlDLE9BQU8sRUFBRUMsTUFBTSxFQUFFQyxJQUFJLEVBQUVDLFVBQVUsRUFBRUMsSUFBSSxFQUFFQyxLQUFLLENBQUU7UUFDMUQsS0FBSyxDQUFDTCxTQUFTQyxRQUFRQyxNQUFNQztRQUU3QixJQUFJ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
|
|
@@ -14,12 +14,13 @@ const _elements = require("../../elements");
|
|
|
14
14
|
const _context = require("../../utilities/context");
|
|
15
15
|
const _instantiate = require("../../process/instantiate");
|
|
16
16
|
const _element = require("../../utilities/element");
|
|
17
|
+
const _state = require("../../utilities/state");
|
|
17
18
|
function _interop_require_default(obj) {
|
|
18
19
|
return obj && obj.__esModule ? obj : {
|
|
19
20
|
default: obj
|
|
20
21
|
};
|
|
21
22
|
}
|
|
22
|
-
const { cut } = _occamlanguages.continuationUtilities, {
|
|
23
|
+
const { cut } = _occamlanguages.continuationUtilities, { unbreakable } = _occamlanguages.breakPointUtilities;
|
|
23
24
|
const _default = (0, _elements.define)(class SignatureAssertion extends _assertion.default {
|
|
24
25
|
constructor(context, string, node, breakPoint, link, terms){
|
|
25
26
|
super(context, string, node, breakPoint);
|
|
@@ -36,6 +37,17 @@ const _default = (0, _elements.define)(class SignatureAssertion extends _asserti
|
|
|
36
37
|
const node = this.getNode(), signatureAssertionNode = node; ///
|
|
37
38
|
return signatureAssertionNode;
|
|
38
39
|
}
|
|
40
|
+
verify = unbreakable(function(context, forward, back) {
|
|
41
|
+
forward = cut(forward, back); ///
|
|
42
|
+
const signatureAssertionString = this.getString(); ///
|
|
43
|
+
context.trace(`Verifying the '${signatureAssertionString}' signature assertion...`);
|
|
44
|
+
return (0, _state.declare)((state)=>{
|
|
45
|
+
return this.validate(state, context, (signatureAssertion, context, back)=>{
|
|
46
|
+
context.debug(`...verified the '${signatureAssertionString}' signature assertion.`);
|
|
47
|
+
return forward(context, back);
|
|
48
|
+
}, back);
|
|
49
|
+
});
|
|
50
|
+
});
|
|
39
51
|
validate(state, context, forward, back) {
|
|
40
52
|
forward = cut(forward, back); ///
|
|
41
53
|
const signatureAssertionString = this.getString(); ///
|
|
@@ -150,15 +162,12 @@ const _default = (0, _elements.define)(class SignatureAssertion extends _asserti
|
|
|
150
162
|
}
|
|
151
163
|
static name = "SignatureAssertion";
|
|
152
164
|
static fromJSON(json, context) {
|
|
153
|
-
let signatureAssertion
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
signatureAssertion = new SignatureAssertion(context, string, node, breakPoint, terms, link);
|
|
160
|
-
}, context);
|
|
161
|
-
}
|
|
165
|
+
let signatureAssertion;
|
|
166
|
+
(0, _context.instantiate)((context)=>{
|
|
167
|
+
const { string } = json, definedAssertionNode = (0, _instantiate.instantiateSignatureAssertion)(string, context), node = definedAssertionNode, breakPoint = null, terms = (0, _element.termsFromSignatureAssertionNode)(definedAssertionNode, context), link = (0, _element.linkFromSignatureAssertionNode)(definedAssertionNode, context);
|
|
168
|
+
context = null;
|
|
169
|
+
signatureAssertion = new SignatureAssertion(context, string, node, breakPoint, terms, link);
|
|
170
|
+
});
|
|
162
171
|
return signatureAssertion;
|
|
163
172
|
}
|
|
164
173
|
static fromStep(step, context) {
|
|
@@ -171,4 +180,4 @@ const _default = (0, _elements.define)(class SignatureAssertion extends _asserti
|
|
|
171
180
|
}
|
|
172
181
|
});
|
|
173
182
|
|
|
174
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L2Fzc2VydGlvbi9zaWduYXR1cmUuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IGJyZWFrUG9pbnRVdGlsaXRpZXMsIGNvbnRpbnVhdGlvblV0aWxpdGllcyB9IGZyb20gXCJvY2NhbS1sYW5ndWFnZXNcIjtcblxuaW1wb3J0IEFzc2VydGlvbiBmcm9tIFwiLi4vYXNzZXJ0aW9uXCI7XG5cbmltcG9ydCB7IGRlZmluZSB9IGZyb20gXCIuLi8uLi9lbGVtZW50c1wiO1xuaW1wb3J0IHsgcmVjb25jaWxlLCBpbnN0YW50aWF0ZSB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvY29udGV4dFwiO1xuaW1wb3J0IHsgaW5zdGFudGlhdGVTaWduYXR1cmVBc3NlcnRpb24gfSBmcm9tIFwiLi4vLi4vcHJvY2Vzcy9pbnN0YW50aWF0ZVwiO1xuaW1wb3J0IHsgdGVybXNGcm9tU2lnbmF0dXJlQXNzZXJ0aW9uTm9kZSwgbGlua0Zyb21TaWduYXR1cmVBc3NlcnRpb25Ob2RlLCBzaWduYXR1cmVBc3NlcnRpb25Gcm9tU3RhdGVtZW50Tm9kZSB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvZWxlbWVudFwiO1xuXG5jb25zdCB7IGN1dCB9ID0gY29udGludWF0aW9uVXRpbGl0aWVzLFxuICAgICAgeyBicmVha1BvaW50RnJvbUpTT04gfSA9IGJyZWFrUG9pbnRVdGlsaXRpZXM7XG5cbmV4cG9ydCBkZWZhdWx0IGRlZmluZShjbGFzcyBTaWduYXR1cmVBc3NlcnRpb24gZXh0ZW5kcyBBc3NlcnRpb24ge1xuICBjb25zdHJ1Y3Rvcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIGxpbmssIHRlcm1zKSB7XG4gICAgc3VwZXIoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50KTtcblxuICAgIHRoaXMubGluayA9IGxpbms7XG4gICAgdGhpcy50ZXJtcyA9IHRlcm1zO1xuICB9XG5cbiAgZ2V0VGVybXMoKSB7XG4gICAgcmV0dXJuIHRoaXMudGVybXM7XG4gIH1cblxuICBnZXRMaW5rKCkge1xuICAgIHJldHVybiB0aGlzLmxpbms7XG4gIH1cblxuICBnZXRTaWduYXR1cmVBc3NlcnRpb25Ob2RlKCkge1xuICAgIGNvbnN0IG5vZGUgPSB0aGlzLmdldE5vZGUoKSxcbiAgICAgICAgICBzaWduYXR1cmVBc3NlcnRpb25Ob2RlID0gbm9kZTsgIC8vL1xuXG4gICAgcmV0dXJuIHNpZ25hdHVyZUFzc2VydGlvbk5vZGU7XG4gIH1cblxuICB2YWxpZGF0ZShzdGF0ZSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGZvcndhcmQgPSBjdXQoZm9yd2FyZCwgYmFjayk7IC8vL1xuXG4gICAgY29uc3Qgc2lnbmF0dXJlQXNzZXJ0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7c2lnbmF0dXJlQXNzZXJ0aW9uU3RyaW5nfScgc2lnbmF0dXJlIGFzc2VydGlvbi4uLmApO1xuXG4gICAgYXNzZXJ0aW9uID0gdGhpczsgLy8vXG5cbiAgICBjb25zdCB2YWxpZGF0ZVRlcm1zID0gdGhpcy52YWxpZGF0ZVRlcm1zLmJpbmQodGhpcyksXG4gICAgICAgICAgdmFsaWRhdGVMaW5rID0gdGhpcy52YWxpZGF0ZUxpbmsuYmluZCh0aGlzKTtcblxuICAgIHZhbGlkYXRlcyA9IGFsbChbXG4gICAgICB2YWxpZGF0ZVRlcm1zLFxuICAgICAgdmFsaWRhdGVMaW5rXG4gICAgXSwgc3RhdGUsIGNvbnRleHQsIChzdGF0ZSwgY29udGV4dCkgPT4ge1xuICAgICAgbGV0IHZhbGlkYXRlcztcblxuICAgICAgY29udGV4dC5hZGRBc3NlcnRpb24oYXNzZXJ0aW9uKTtcblxuICAgICAgY29uc3Qgc2lnbmF0dXJlQXNzZXJ0aW9uID0gYXNzZXJ0aW9uOyAvLy9cblxuICAgICAgdmFsaWRhdGVzID0gY29udGludWF0aW9uKHNpZ25hdHVyZUFzc2VydGlvbiwgY29udGV4dCk7XG5cbiAgICAgIHJldHVybiB2YWxpZGF0ZXM7XG4gICAgfSk7XG5cbiAgICBpZiAodmFsaWRhdGVzKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke3NpZ25hdHVyZUFzc2VydGlvblN0cmluZ30nIHNpZ25hdHVyZSBhc3NlcnRpb24uYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbGlkYXRlcztcbiAgfVxuXG4gIHZhbGlkYXRlVGVybSh0ZXJtLCB0ZXJtcywgc3RhdGUsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBsZXQgdGVybVZhbGlkYXRlcztcblxuICAgIGNvbnN0IHRlcm1TdHJpbmcgPSB0ZXJtLmdldFN0cmluZygpLFxuICAgICAgICAgIHNpZ25hdHVyZUFzc2VydGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke3NpZ25hdHVyZUFzc2VydGlvblN0cmluZ30nIHNpZ25hdHVyZSBhc3NlcnRpb24ncyAnJHt0ZXJtU3RyaW5nfScgdGVybS4uLmApO1xuXG4gICAgdGVybVZhbGlkYXRlcyA9IHRlcm0udmFsaWRhdGUoc3RhdGUsIGNvbnRleHQsICh0ZXJtLCBjb250ZXh0KSA9PiB7XG4gICAgICBsZXQgdmFsaWRhdGVzO1xuXG4gICAgICB0ZXJtcy5wdXNoKHRlcm0pO1xuXG4gICAgICB2YWxpZGF0ZXMgPSBjb250aW51YXRpb24odGVybXMsIHN0YXRlLCBjb250ZXh0KTtcblxuICAgICAgcmV0dXJuIHZhbGlkYXRlcztcbiAgICB9KTtcblxuICAgIGlmICh0ZXJtVmFsaWRhdGVzKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke3NpZ25hdHVyZUFzc2VydGlvblN0cmluZ30nIHNpZ25hdHVyZSBhc3NlcnRpb24ncyAnJHt0ZXJtU3RyaW5nfScgdGVybS5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGVybVZhbGlkYXRlcztcbiAgfVxuXG4gIHZhbGlkYXRlVGVybXMoc3RhdGUsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBsZXQgdGVybXNWYWxpZGF0ZTtcblxuICAgIGNvbnN0IHNpZ25hdHVyZUFzc2VydGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke3NpZ25hdHVyZUFzc2VydGlvblN0cmluZ30nIHNpZ25hdHVyZSBhc3NlcnRpb24ncyB0ZXJtcy4uLmApO1xuXG4gICAgY29uc3QgdGVybXMgPSBbXSxcbiAgICAgICAgICB2YWxpZGF0ZVRlcm0gPSB0aGlzLnZhbGlkYXRlVGVybS5iaW5kKHRoaXMpO1xuXG4gICAgdGVybXNWYWxpZGF0ZSA9IGV2ZXJ5KHRoaXMudGVybXMsIHZhbGlkYXRlVGVybSwgdGVybXMsIHN0YXRlLCBjb250ZXh0LCAodGVybXMsIHN0YXRlLCBjb250ZXh0KSA9PiB7XG4gICAgICBsZXQgdGVybXNWYWxpZGF0ZTtcblxuICAgICAgdGVybXNWYWxpZGF0ZSA9IGNvbnRpbnVhdGlvbihzdGF0ZSwgY29udGV4dCk7XG5cbiAgICAgIGlmICh0ZXJtc1ZhbGlkYXRlKSB7XG4gICAgICAgIHRoaXMudGVybXMgPSB0ZXJtcztcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRlcm1zVmFsaWRhdGU7XG4gICAgfSk7XG5cbiAgICBpZiAodGVybXNWYWxpZGF0ZSl7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke3NpZ25hdHVyZUFzc2VydGlvblN0cmluZ30nIHNpZ25hdHVyZSBhc3NlcnRpb24ncyB0ZXJtcy5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGVybXNWYWxpZGF0ZVxuICB9XG5cbiAgdmFsaWRhdGVMaW5rKHN0YXRlLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgbGV0IGxpbmtWYWxpZGF0ZXM7XG5cbiAgICBjb25zdCBzaWduYXR1cmVBc3NlcnRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtzaWduYXR1cmVBc3NlcnRpb25TdHJpbmd9JyBzaWduYXR1cmUgYXNzZXJ0aW9uJ3MgbGluay4uLmApO1xuXG4gICAgbGlua1ZhbGlkYXRlcyA9IHRoaXMubGluay52YWxpZGF0ZShzdGF0ZSwgY29udGV4dCwgKGxpbmssIGNvbnRleHQpID0+IHtcbiAgICAgIGxldCB2YWxpZGF0ZXMgPSBmYWxzZTtcblxuICAgICAgY29uc3QgYXhpb20gPSBjb250ZXh0LmZpbmRBeGlvbUJ5TGluayhsaW5rKTtcblxuICAgICAgaWYgKGF4aW9tICE9PSBudWxsKSB7XG4gICAgICAgIGNvbnN0IGF4aW9tU2F0aXNmaWFibGUgPSBheGlvbS5pc1NhdGlzZmlhYmxlKCk7XG5cbiAgICAgICAgaWYgKGF4aW9tU2F0aXNmaWFibGUpIHtcbiAgICAgICAgICB2YWxpZGF0ZXMgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmICh2YWxpZGF0ZXMpIHtcbiAgICAgICAgdGhpcy5saW5rID0gbGluaztcblxuICAgICAgICB2YWxpZGF0ZXMgPSBjb250aW51YXRpb24oc3RhdGUsIGNvbnRleHQpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdmFsaWRhdGVzO1xuICAgIH0pO1xuXG4gICAgaWYgKGxpbmtWYWxpZGF0ZXMpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7c2lnbmF0dXJlQXNzZXJ0aW9uU3RyaW5nfScgc2lnbmF0dXJlIGFzc2VydGlvbidzIGxpbmsuYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGxpbmtWYWxpZGF0ZXM7XG4gIH1cblxuICB1bmlmeUNsYWltKGNsYWltLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3QgY2xhaW1TdHJpbmcgPSBjbGFpbS5nZXRTdHJpbmcoKSxcbiAgICAgICAgICBzaWduYXR1cmVBc3NlcnRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpO1xuXG4gICAgY29udGV4dC50cmFjZShgVW5pZnlpbmcgdGhlICcke2NsYWltU3RyaW5nfScgY2xhaW0gd2l0aCB0aGUgJyR7c2lnbmF0dXJlQXNzZXJ0aW9uU3RyaW5nfScgc2lnbmF0dXJlIGFzc2VydGlvbi4uLmApO1xuXG4gICAgcmV0dXJuIHJlY29uY2lsZSgoY29udGV4dCkgPT4ge1xuICAgICAgY29uc3QgYXhpb20gPSBjb250ZXh0LmZpbmRBeGlvbUJ5TGluayh0aGlzLmxpbmspO1xuXG4gICAgICByZXR1cm4gYXhpb20udW5pZnlUZXJtcyh0aGlzLnRlcm1zLCBjb250ZXh0LCAodGVybXNVbmlmeSkgPT4ge1xuICAgICAgICBpZiAoIXRlcm1zVW5pZnkpIHtcbiAgICAgICAgICBjb25zdCBjbGFpbVVuaWZpZXMgPSBmYWxzZTtcblxuICAgICAgICAgIHJldHVybiBjb250aW51YXRpb24oY2xhaW1VbmlmaWVzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBheGlvbS51bmlmeUNsYWltKGNsYWltLCBjb250ZXh0LCAoY2xhaW1VbmlmaWVzKSA9PiB7XG4gICAgICAgICAgaWYgKGNsYWltVW5pZmllcykge1xuICAgICAgICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udW5pZmllZCB0aGUgJyR7Y2xhaW1TdHJpbmd9JyBjbGFpbSB3aXRoIHRoZSAnJHtzaWduYXR1cmVBc3NlcnRpb25TdHJpbmd9JyBzaWduYXR1cmUgYXNzZXJ0aW9uLmApO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChjbGFpbVVuaWZpZXMpIHtcbiAgICAgICAgICAgIGNvbnRleHQuY29tbWl0KCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbihjbGFpbVVuaWZpZXMpO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0sIGNvbnRleHQpO1xuICB9XG5cbiAgdW5pZnlTdGVwQW5kRmFjdE9yU3VicHJvb2ZzKHN0ZXAsIGZhY3RPclN1YnByb29mcywgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGxldCBzdGVwQW5kRmFjdE9yU3VicHJvb2ZzVW5pZnkgPSBmYWxzZTtcblxuICAgIHJldHVybiByZWNvbmNpbGUoKGNvbnRleHQpID0+IHtcbiAgICAgIGNvbnN0IGF4aW9tID0gY29udGV4dC5maW5kQXhpb21CeUxpbmsodGhpcy5saW5rKSxcbiAgICAgICAgICAgIHNpZ25hdHVyZUFzc2VydGlvbiA9IHRoaXM7ICAvLy9cblxuICAgICAgcmV0dXJuIGF4aW9tLnVuaWZ5U2lnbmF0dXJlQXNzZXJ0aW9uKHNpZ25hdHVyZUFzc2VydGlvbiwgY29udGV4dCwgKHNpZ25hdHVyZUFzc2VydGlvblVuaWZpZXMpID0+IHtcbiAgICAgICAgaWYgKCFzaWduYXR1cmVBc3NlcnRpb25VbmlmaWVzKSB7XG4gICAgICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbihzdGVwQW5kRmFjdE9yU3VicHJvb2ZzVW5pZnkpO1xuICAgICAgICB9XG5cbiAgICAgICAgYXhpb20udW5pZnlTdGVwQW5kRmFjdE9yU3VicHJvb2ZzKHN0ZXAsIGZhY3RPclN1YnByb29mcywgY29udGV4dCwgZm9yd2FyZCwgYmFjayk7XG4gICAgICB9KTtcbiAgICB9LCBjb250ZXh0KTtcbiAgfVxuXG4gIHN0YXRpYyBuYW1lID0gXCJTaWduYXR1cmVBc3NlcnRpb25cIjtcblxuICBzdGF0aWMgZnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICAgIGxldCBzaWduYXR1cmVBc3NlcnRpb24gPSBudWxsO1xuXG4gICAgY29uc3QgeyBuYW1lIH0gPSBqc29uO1xuXG4gICAgaWYgKHRoaXMubmFtZSA9PT0gbmFtZSkge1xuICAgICAgaW5zdGFudGlhdGUoKGNvbnRleHQpID0+IHtcbiAgICAgICAgY29uc3QgeyBzdHJpbmcgfSA9IGpzb24sXG4gICAgICAgICAgICAgIGRlZmluZWRBc3NlcnRpb25Ob2RlID0gaW5zdGFudGlhdGVTaWduYXR1cmVBc3NlcnRpb24oc3RyaW5nLCBjb250ZXh0KSxcbiAgICAgICAgICAgICAgbm9kZSA9IGRlZmluZWRBc3NlcnRpb25Ob2RlLCAgLy8vXG4gICAgICAgICAgICAgIGJyZWFrUG9pbnQgPSBicmVha1BvaW50RnJvbUpTT04oanNvbiksXG4gICAgICAgICAgICAgIHRlcm1zID0gdGVybXNGcm9tU2lnbmF0dXJlQXNzZXJ0aW9uTm9kZShkZWZpbmVkQXNzZXJ0aW9uTm9kZSwgY29udGV4dCksXG4gICAgICAgICAgICAgIGxpbmsgPSBsaW5rRnJvbVNpZ25hdHVyZUFzc2VydGlvbk5vZGUoZGVmaW5lZEFzc2VydGlvbk5vZGUsIGNvbnRleHQpO1xuXG4gICAgICAgIGNvbnRleHQgPSBudWxsO1xuXG4gICAgICAgIHNpZ25hdHVyZUFzc2VydGlvbiA9IG5ldyBTaWduYXR1cmVBc3NlcnRpb24oY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCB0ZXJtcywgbGluayk7XG4gICAgICB9LCBjb250ZXh0KTtcbiAgICB9XG5cbiAgICByZXR1cm4gc2lnbmF0dXJlQXNzZXJ0aW9uO1xuICB9XG5cbiAgc3RhdGljIGZyb21TdGVwKHN0ZXAsIGNvbnRleHQpIHtcbiAgICBjb25zdCBzdGF0ZW1lbnROb2RlID0gc3RlcC5nZXRTdGF0ZW1lbnROb2RlKCksXG4gICAgICAgICAgc2lnbmF0dXJlQXNzZXJ0aW9uID0gc2lnbmF0dXJlQXNzZXJ0aW9uRnJvbVN0YXRlbWVudE5vZGUoc3RhdGVtZW50Tm9kZSwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gc2lnbmF0dXJlQXNzZXJ0aW9uO1xuICB9XG5cbiAgc3RhdGljIGZyb21TdGF0ZW1lbnQoc3RhdGVtZW50LCBjb250ZXh0KSB7XG4gICAgY29uc3Qgc3RhdGVtZW50Tm9kZSA9IHN0YXRlbWVudC5nZXROb2RlKCksXG4gICAgICAgICAgc2lnbmF0dXJlQXNzZXJ0aW9uID0gc2lnbmF0dXJlQXNzZXJ0aW9uRnJvbVN0YXRlbWVudE5vZGUoc3RhdGVtZW50Tm9kZSwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gc2lnbmF0dXJlQXNzZXJ0aW9uO1xuICB9XG59KTtcbiJdLCJuYW1lcyI6WyJjdXQiLCJjb250aW51YXRpb25VdGlsaXRpZXMiLCJicmVha1BvaW50RnJvbUpTT04iLCJicmVha1BvaW50VXRpbGl0aWVzIiwiZGVmaW5lIiwiU2lnbmF0dXJlQXNzZXJ0aW9uIiwiQXNzZXJ0aW9uIiwiY29udGV4dCIsInN0cmluZyIsIm5vZGUiLCJicmVha1BvaW50IiwibGluayIsInRlcm1zIiwiZ2V0VGVybXMiLCJnZXRMaW5rIiwiZ2V0U2lnbmF0dXJlQXNzZXJ0aW9uTm9kZSIsImdldE5vZGUiLCJzaWduYXR1cmVBc3NlcnRpb25Ob2RlIiwidmFsaWRhdGUiLCJzdGF0ZSIsImZvcndhcmQiLCJiYWNrIiwic2lnbmF0dXJlQXNzZXJ0aW9uU3RyaW5nIiwiZ2V0U3RyaW5nIiwidHJhY2UiLCJhc3NlcnRpb24iLCJ2YWxpZGF0ZVRlcm1zIiwiYmluZCIsInZhbGlkYXRlTGluayIsInZhbGlkYXRlcyIsImFsbCIsImFkZEFzc2VydGlvbiIsInNpZ25hdHVyZUFzc2VydGlvbiIsImNvbnRpbnVhdGlvbiIsImRlYnVnIiwidmFsaWRhdGVUZXJtIiwidGVybSIsInRlcm1WYWxpZGF0ZXMiLCJ0ZXJtU3RyaW5nIiwicHVzaCIsInRlcm1zVmFsaWRhdGUiLCJldmVyeSIsImxpbmtWYWxpZGF0ZXMiLCJheGlvbSIsImZpbmRBeGlvbUJ5TGluayIsImF4aW9tU2F0aXNmaWFibGUiLCJpc1NhdGlzZmlhYmxlIiwidW5pZnlDbGFpbSIsImNsYWltIiwiY2xhaW1TdHJpbmciLCJyZWNvbmNpbGUiLCJ1bmlmeVRlcm1zIiwidGVybXNVbmlmeSIsImNsYWltVW5pZmllcyIsImNvbW1pdCIsInVuaWZ5U3RlcEFuZEZhY3RPclN1YnByb29mcyIsInN0ZXAiLCJmYWN0T3JTdWJwcm9vZnMiLCJzdGVwQW5kRmFjdE9yU3VicHJvb2ZzVW5pZnkiLCJ1bmlmeVNpZ25hdHVyZUFzc2VydGlvbiIsInNpZ25hdHVyZUFzc2VydGlvblVuaWZpZXMiLCJuYW1lIiwiZnJvbUpTT04iLCJqc29uIiwiaW5zdGFudGlhdGUiLCJkZWZpbmVkQXNzZXJ0aW9uTm9kZSIsImluc3RhbnRpYXRlU2lnbmF0dXJlQXNzZXJ0aW9uIiwidGVybXNGcm9tU2lnbmF0dXJlQXNzZXJ0aW9uTm9kZSIsImxpbmtGcm9tU2lnbmF0dXJlQXNzZXJ0aW9uTm9kZSIsImZyb21TdGVwIiwic3RhdGVtZW50Tm9kZSIsImdldFN0YXRlbWVudE5vZGUiLCJzaWduYXR1cmVBc3NlcnRpb25Gcm9tU3RhdGVtZW50Tm9kZSIsImZyb21TdGF0ZW1lbnQiLCJzdGF0ZW1lbnQiXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQWNBOzs7ZUFBQTs7O2dDQVoyRDtrRUFFckM7MEJBRUM7eUJBQ2dCOzZCQUNPO3lCQUN1RTs7Ozs7O0FBRXJILE1BQU0sRUFBRUEsR0FBRyxFQUFFLEdBQUdDLHFDQUFxQixFQUMvQixFQUFFQyxrQkFBa0IsRUFBRSxHQUFHQyxtQ0FBbUI7TUFFbEQsV0FBZUMsSUFBQUEsZ0JBQU0sRUFBQyxNQUFNQywyQkFBMkJDLGtCQUFTO0lBQzlELFlBQVlDLE9BQU8sRUFBRUMsTUFBTSxFQUFFQyxJQUFJLEVBQUVDLFVBQVUsRUFBRUMsSUFBSSxFQUFFQyxLQUFLLENBQUU7UUFDMUQsS0FBSyxDQUFDTCxTQUFTQyxRQUFRQyxNQUFNQztRQUU3QixJQUFJLENBQUNDLElBQUksR0FBR0E7UUFDWixJQUFJLENBQUNDLEtBQUssR0FBR0E7SUFDZjtJQUVBQyxXQUFXO1FBQ1QsT0FBTyxJQUFJLENBQUNELEtBQUs7SUFDbkI7SUFFQUUsVUFBVTtRQUNSLE9BQU8sSUFBSSxDQUFDSCxJQUFJO0lBQ2xCO0lBRUFJLDRCQUE0QjtRQUMxQixNQUFNTixPQUFPLElBQUksQ0FBQ08sT0FBTyxJQUNuQkMseUJBQXlCUixNQUFPLEdBQUc7UUFFekMsT0FBT1E7SUFDVDtJQUVBQyxTQUFTQyxLQUFLLEVBQUVaLE9BQU8sRUFBRWEsT0FBTyxFQUFFQyxJQUFJLEVBQUU7UUFDdENELFVBQVVwQixJQUFJb0IsU0FBU0MsT0FBTyxHQUFHO1FBRWpDLE1BQU1DLDJCQUEyQixJQUFJLENBQUNDLFNBQVMsSUFBSyxHQUFHO1FBRXZEaEIsUUFBUWlCLEtBQUssQ0FBQyxDQUFDLGdCQUFnQixFQUFFRix5QkFBeUIsd0JBQXdCLENBQUM7UUFFbkZHLFlBQVksSUFBSSxFQUFFLEdBQUc7UUFFckIsTUFBTUMsZ0JBQWdCLElBQUksQ0FBQ0EsYUFBYSxDQUFDQyxJQUFJLENBQUMsSUFBSSxHQUM1Q0MsZUFBZSxJQUFJLENBQUNBLFlBQVksQ0FBQ0QsSUFBSSxDQUFDLElBQUk7UUFFaERFLFlBQVlDLElBQUk7WUFDZEo7WUFDQUU7U0FDRCxFQUFFVCxPQUFPWixTQUFTLENBQUNZLE9BQU9aO1lBQ3pCLElBQUlzQjtZQUVKdEIsUUFBUXdCLFlBQVksQ0FBQ047WUFFckIsTUFBTU8scUJBQXFCUCxXQUFXLEdBQUc7WUFFekNJLGFBQVlJLGFBQWFELG9CQUFvQnpCO1lBRTdDLE9BQU9zQjtRQUNUO1FBRUEsSUFBSUEsV0FBVztZQUNidEIsUUFBUTJCLEtBQUssQ0FBQyxDQUFDLGtCQUFrQixFQUFFWix5QkFBeUIsc0JBQXNCLENBQUM7UUFDckY7UUFFQSxPQUFPTztJQUNUO0lBRUFNLGFBQWFDLElBQUksRUFBRXhCLEtBQUssRUFBRU8sS0FBSyxFQUFFWixPQUFPLEVBQUVhLE9BQU8sRUFBRUMsSUFBSSxFQUFFO1FBQ3ZELElBQUlnQjtRQUVKLE1BQU1DLGFBQWFGLEtBQUtiLFNBQVMsSUFDM0JELDJCQUEyQixJQUFJLENBQUNDLFNBQVMsSUFBSyxHQUFHO1FBRXZEaEIsUUFBUWlCLEtBQUssQ0FBQyxDQUFDLGdCQUFnQixFQUFFRix5QkFBeUIseUJBQXlCLEVBQUVnQixXQUFXLFNBQVMsQ0FBQztRQUUxR0QsZ0JBQWdCRCxLQUFLbEIsUUFBUSxDQUFDQyxPQUFPWixTQUFTLENBQUM2QixNQUFNN0I7WUFDbkQsSUFBSXNCO1lBRUpqQixNQUFNMkIsSUFBSSxDQUFDSDtZQUVYUCxhQUFZSSxhQUFhckIsT0FBT08sT0FBT1o7WUFFdkMsT0FBT3NCO1FBQ1Q7UUFFQSxJQUFJUSxlQUFlO1lBQ2pCOUIsUUFBUTJCLEtBQUssQ0FBQyxDQUFDLGtCQUFrQixFQUFFWix5QkFBeUIseUJBQXlCLEVBQUVnQixXQUFXLE9BQU8sQ0FBQztRQUM1RztRQUVBLE9BQU9EO0lBQ1Q7SUFFQVgsY0FBY1AsS0FBSyxFQUFFWixPQUFPLEVBQUVhLE9BQU8sRUFBRUMsSUFBSSxFQUFFO1FBQzNDLElBQUltQjtRQUVKLE1BQU1sQiwyQkFBMkIsSUFBSSxDQUFDQyxTQUFTLElBQUssR0FBRztRQUV2RGhCLFFBQVFpQixLQUFLLENBQUMsQ0FBQyxnQkFBZ0IsRUFBRUYseUJBQXlCLGdDQUFnQyxDQUFDO1FBRTNGLE1BQU1WLFFBQVEsRUFBRSxFQUNWdUIsZUFBZSxJQUFJLENBQUNBLFlBQVksQ0FBQ1IsSUFBSSxDQUFDLElBQUk7UUFFaERhLGdCQUFnQkMsTUFBTSxJQUFJLENBQUM3QixLQUFLLEVBQUV1QixjQUFjdkIsT0FBT08sT0FBT1osU0FBUyxDQUFDSyxPQUFPTyxPQUFPWjtZQUNwRixJQUFJaUM7WUFFSkEsZ0JBQWdCUCxhQUFhZCxPQUFPWjtZQUVwQyxJQUFJaUMsZUFBZTtnQkFDakIsSUFBSSxDQUFDNUIsS0FBSyxHQUFHQTtZQUNmO1lBRUEsT0FBTzRCO1FBQ1Q7UUFFQSxJQUFJQSxlQUFjO1lBQ2hCakMsUUFBUTJCLEtBQUssQ0FBQyxDQUFDLGtCQUFrQixFQUFFWix5QkFBeUIsOEJBQThCLENBQUM7UUFDN0Y7UUFFQSxPQUFPa0I7SUFDVDtJQUVBWixhQUFhVCxLQUFLLEVBQUVaLE9BQU8sRUFBRWEsT0FBTyxFQUFFQyxJQUFJLEVBQUU7UUFDMUMsSUFBSXFCO1FBRUosTUFBTXBCLDJCQUEyQixJQUFJLENBQUNDLFNBQVMsSUFBSyxHQUFHO1FBRXZEaEIsUUFBUWlCLEtBQUssQ0FBQyxDQUFDLGdCQUFnQixFQUFFRix5QkFBeUIsK0JBQStCLENBQUM7UUFFMUZvQixnQkFBZ0IsSUFBSSxDQUFDL0IsSUFBSSxDQUFDTyxRQUFRLENBQUNDLE9BQU9aLFNBQVMsQ0FBQ0ksTUFBTUo7WUFDeEQsSUFBSXNCLGFBQVk7WUFFaEIsTUFBTWMsUUFBUXBDLFFBQVFxQyxlQUFlLENBQUNqQztZQUV0QyxJQUFJZ0MsVUFBVSxNQUFNO2dCQUNsQixNQUFNRSxtQkFBbUJGLE1BQU1HLGFBQWE7Z0JBRTVDLElBQUlELGtCQUFrQjtvQkFDcEJoQixhQUFZO2dCQUNkO1lBQ0Y7WUFFQSxJQUFJQSxZQUFXO2dCQUNiLElBQUksQ0FBQ2xCLElBQUksR0FBR0E7Z0JBRVprQixhQUFZSSxhQUFhZCxPQUFPWjtZQUNsQztZQUVBLE9BQU9zQjtRQUNUO1FBRUEsSUFBSWEsZUFBZTtZQUNqQm5DLFFBQVEyQixLQUFLLENBQUMsQ0FBQyxrQkFBa0IsRUFBRVoseUJBQXlCLDZCQUE2QixDQUFDO1FBQzVGO1FBRUEsT0FBT29CO0lBQ1Q7SUFFQUssV0FBV0MsS0FBSyxFQUFFekMsT0FBTyxFQUFFYSxPQUFPLEVBQUVDLElBQUksRUFBRTtRQUN4QyxNQUFNNEIsY0FBY0QsTUFBTXpCLFNBQVMsSUFDN0JELDJCQUEyQixJQUFJLENBQUNDLFNBQVM7UUFFL0NoQixRQUFRaUIsS0FBSyxDQUFDLENBQUMsY0FBYyxFQUFFeUIsWUFBWSxrQkFBa0IsRUFBRTNCLHlCQUF5Qix3QkFBd0IsQ0FBQztRQUVqSCxPQUFPNEIsSUFBQUEsa0JBQVMsRUFBQyxDQUFDM0M7WUFDaEIsTUFBTW9DLFFBQVFwQyxRQUFRcUMsZUFBZSxDQUFDLElBQUksQ0FBQ2pDLElBQUk7WUFFL0MsT0FBT2dDLE1BQU1RLFVBQVUsQ0FBQyxJQUFJLENBQUN2QyxLQUFLLEVBQUVMLFNBQVMsQ0FBQzZDO2dCQUM1QyxJQUFJLENBQUNBLFlBQVk7b0JBQ2YsTUFBTUMsZUFBZTtvQkFFckIsT0FBT3BCLGFBQWFvQjtnQkFDdEI7Z0JBRUEsT0FBT1YsTUFBTUksVUFBVSxDQUFDQyxPQUFPekMsU0FBUyxDQUFDOEM7b0JBQ3ZDLElBQUlBLGNBQWM7d0JBQ2hCOUMsUUFBUTJCLEtBQUssQ0FBQyxDQUFDLGdCQUFnQixFQUFFZSxZQUFZLGtCQUFrQixFQUFFM0IseUJBQXlCLHNCQUFzQixDQUFDO29CQUNuSDtvQkFFQSxJQUFJK0IsY0FBYzt3QkFDaEI5QyxRQUFRK0MsTUFBTTtvQkFDaEI7b0JBRUEsT0FBT3JCLGFBQWFvQjtnQkFDdEI7WUFDRjtRQUNGLEdBQUc5QztJQUNMO0lBRUFnRCw0QkFBNEJDLElBQUksRUFBRUMsZUFBZSxFQUFFbEQsT0FBTyxFQUFFYSxPQUFPLEVBQUVDLElBQUksRUFBRTtRQUN6RSxJQUFJcUMsOEJBQThCO1FBRWxDLE9BQU9SLElBQUFBLGtCQUFTLEVBQUMsQ0FBQzNDO1lBQ2hCLE1BQU1vQyxRQUFRcEMsUUFBUXFDLGVBQWUsQ0FBQyxJQUFJLENBQUNqQyxJQUFJLEdBQ3pDcUIscUJBQXFCLElBQUksRUFBRyxHQUFHO1lBRXJDLE9BQU9XLE1BQU1nQix1QkFBdUIsQ0FBQzNCLG9CQUFvQnpCLFNBQVMsQ0FBQ3FEO2dCQUNqRSxJQUFJLENBQUNBLDJCQUEyQjtvQkFDOUIsT0FBTzNCLGFBQWF5QjtnQkFDdEI7Z0JBRUFmLE1BQU1ZLDJCQUEyQixDQUFDQyxNQUFNQyxpQkFBaUJsRCxTQUFTYSxTQUFTQztZQUM3RTtRQUNGLEdBQUdkO0lBQ0w7SUFFQSxPQUFPc0QsT0FBTyxxQkFBcUI7SUFFbkMsT0FBT0MsU0FBU0MsSUFBSSxFQUFFeEQsT0FBTyxFQUFFO1FBQzdCLElBQUl5QixxQkFBcUI7UUFFekIsTUFBTSxFQUFFNkIsSUFBSSxFQUFFLEdBQUdFO1FBRWpCLElBQUksSUFBSSxDQUFDRixJQUFJLEtBQUtBLE1BQU07WUFDdEJHLElBQUFBLG9CQUFXLEVBQUMsQ0FBQ3pEO2dCQUNYLE1BQU0sRUFBRUMsTUFBTSxFQUFFLEdBQUd1RCxNQUNiRSx1QkFBdUJDLElBQUFBLDBDQUE2QixFQUFDMUQsUUFBUUQsVUFDN0RFLE9BQU93RCxzQkFDUHZELGFBQWFSLG1CQUFtQjZELE9BQ2hDbkQsUUFBUXVELElBQUFBLHdDQUErQixFQUFDRixzQkFBc0IxRCxVQUM5REksT0FBT3lELElBQUFBLHVDQUE4QixFQUFDSCxzQkFBc0IxRDtnQkFFbEVBLFVBQVU7Z0JBRVZ5QixxQkFBcUIsSUFBSTNCLG1CQUFtQkUsU0FBU0MsUUFBUUMsTUFBTUMsWUFBWUUsT0FBT0Q7WUFDeEYsR0FBR0o7UUFDTDtRQUVBLE9BQU95QjtJQUNUO0lBRUEsT0FBT3FDLFNBQVNiLElBQUksRUFBRWpELE9BQU8sRUFBRTtRQUM3QixNQUFNK0QsZ0JBQWdCZCxLQUFLZSxnQkFBZ0IsSUFDckN2QyxxQkFBcUJ3QyxJQUFBQSw0Q0FBbUMsRUFBQ0YsZUFBZS9EO1FBRTlFLE9BQU95QjtJQUNUO0lBRUEsT0FBT3lDLGNBQWNDLFNBQVMsRUFBRW5FLE9BQU8sRUFBRTtRQUN2QyxNQUFNK0QsZ0JBQWdCSSxVQUFVMUQsT0FBTyxJQUNqQ2dCLHFCQUFxQndDLElBQUFBLDRDQUFtQyxFQUFDRixlQUFlL0Q7UUFFOUUsT0FBT3lCO0lBQ1Q7QUFDRiJ9
|
|
183
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L2Fzc2VydGlvbi9zaWduYXR1cmUuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IGJyZWFrUG9pbnRVdGlsaXRpZXMsIGNvbnRpbnVhdGlvblV0aWxpdGllcyB9IGZyb20gXCJvY2NhbS1sYW5ndWFnZXNcIjtcblxuaW1wb3J0IEFzc2VydGlvbiBmcm9tIFwiLi4vYXNzZXJ0aW9uXCI7XG5cbmltcG9ydCB7IGRlZmluZSB9IGZyb20gXCIuLi8uLi9lbGVtZW50c1wiO1xuaW1wb3J0IHsgcmVjb25jaWxlLCBpbnN0YW50aWF0ZSB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvY29udGV4dFwiO1xuaW1wb3J0IHsgaW5zdGFudGlhdGVTaWduYXR1cmVBc3NlcnRpb24gfSBmcm9tIFwiLi4vLi4vcHJvY2Vzcy9pbnN0YW50aWF0ZVwiO1xuaW1wb3J0IHsgdGVybXNGcm9tU2lnbmF0dXJlQXNzZXJ0aW9uTm9kZSwgbGlua0Zyb21TaWduYXR1cmVBc3NlcnRpb25Ob2RlLCBzaWduYXR1cmVBc3NlcnRpb25Gcm9tU3RhdGVtZW50Tm9kZSB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvZWxlbWVudFwiO1xuaW1wb3J0IHtkZWNsYXJlfSBmcm9tIFwiLi4vLi4vdXRpbGl0aWVzL3N0YXRlXCI7XG5cbmNvbnN0IHsgY3V0IH0gPSBjb250aW51YXRpb25VdGlsaXRpZXMsXG4gICAgICB7IHVuYnJlYWthYmxlIH0gPSBicmVha1BvaW50VXRpbGl0aWVzO1xuXG5leHBvcnQgZGVmYXVsdCBkZWZpbmUoY2xhc3MgU2lnbmF0dXJlQXNzZXJ0aW9uIGV4dGVuZHMgQXNzZXJ0aW9uIHtcbiAgY29uc3RydWN0b3IoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCBsaW5rLCB0ZXJtcykge1xuICAgIHN1cGVyKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCk7XG5cbiAgICB0aGlzLmxpbmsgPSBsaW5rO1xuICAgIHRoaXMudGVybXMgPSB0ZXJtcztcbiAgfVxuXG4gIGdldFRlcm1zKCkge1xuICAgIHJldHVybiB0aGlzLnRlcm1zO1xuICB9XG5cbiAgZ2V0TGluaygpIHtcbiAgICByZXR1cm4gdGhpcy5saW5rO1xuICB9XG5cbiAgZ2V0U2lnbmF0dXJlQXNzZXJ0aW9uTm9kZSgpIHtcbiAgICBjb25zdCBub2RlID0gdGhpcy5nZXROb2RlKCksXG4gICAgICAgICAgc2lnbmF0dXJlQXNzZXJ0aW9uTm9kZSA9IG5vZGU7ICAvLy9cblxuICAgIHJldHVybiBzaWduYXR1cmVBc3NlcnRpb25Ob2RlO1xuICB9XG5cbiAgdmVyaWZ5ID0gdW5icmVha2FibGUoZnVuY3Rpb24gKGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBmb3J3YXJkID0gY3V0KGZvcndhcmQsIGJhY2spOyAvLy9cblxuICAgIGNvbnN0IHNpZ25hdHVyZUFzc2VydGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7IC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHtzaWduYXR1cmVBc3NlcnRpb25TdHJpbmd9JyBzaWduYXR1cmUgYXNzZXJ0aW9uLi4uYCk7XG5cbiAgICByZXR1cm4gZGVjbGFyZSgoc3RhdGUpID0+IHtcbiAgICAgIHJldHVybiB0aGlzLnZhbGlkYXRlKHN0YXRlLCBjb250ZXh0LCAoc2lnbmF0dXJlQXNzZXJ0aW9uLCBjb250ZXh0ICwgYmFjaykgPT4ge1xuICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7c2lnbmF0dXJlQXNzZXJ0aW9uU3RyaW5nfScgc2lnbmF0dXJlIGFzc2VydGlvbi5gKTtcblxuICAgICAgICByZXR1cm4gZm9yd2FyZChjb250ZXh0LCBiYWNrKTtcbiAgICAgIH0sIGJhY2spO1xuICAgIH0pO1xuICB9KTtcblxuICB2YWxpZGF0ZShzdGF0ZSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGZvcndhcmQgPSBjdXQoZm9yd2FyZCwgYmFjayk7IC8vL1xuXG4gICAgY29uc3Qgc2lnbmF0dXJlQXNzZXJ0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7c2lnbmF0dXJlQXNzZXJ0aW9uU3RyaW5nfScgc2lnbmF0dXJlIGFzc2VydGlvbi4uLmApO1xuXG4gICAgYXNzZXJ0aW9uID0gdGhpczsgLy8vXG5cbiAgICBjb25zdCB2YWxpZGF0ZVRlcm1zID0gdGhpcy52YWxpZGF0ZVRlcm1zLmJpbmQodGhpcyksXG4gICAgICAgICAgdmFsaWRhdGVMaW5rID0gdGhpcy52YWxpZGF0ZUxpbmsuYmluZCh0aGlzKTtcblxuICAgIHZhbGlkYXRlcyA9IGFsbChbXG4gICAgICB2YWxpZGF0ZVRlcm1zLFxuICAgICAgdmFsaWRhdGVMaW5rXG4gICAgXSwgc3RhdGUsIGNvbnRleHQsIChzdGF0ZSwgY29udGV4dCkgPT4ge1xuICAgICAgbGV0IHZhbGlkYXRlcztcblxuICAgICAgY29udGV4dC5hZGRBc3NlcnRpb24oYXNzZXJ0aW9uKTtcblxuICAgICAgY29uc3Qgc2lnbmF0dXJlQXNzZXJ0aW9uID0gYXNzZXJ0aW9uOyAvLy9cblxuICAgICAgdmFsaWRhdGVzID0gY29udGludWF0aW9uKHNpZ25hdHVyZUFzc2VydGlvbiwgY29udGV4dCk7XG5cbiAgICAgIHJldHVybiB2YWxpZGF0ZXM7XG4gICAgfSk7XG5cbiAgICBpZiAodmFsaWRhdGVzKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke3NpZ25hdHVyZUFzc2VydGlvblN0cmluZ30nIHNpZ25hdHVyZSBhc3NlcnRpb24uYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbGlkYXRlcztcbiAgfVxuXG4gIHZhbGlkYXRlVGVybSh0ZXJtLCB0ZXJtcywgc3RhdGUsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBsZXQgdGVybVZhbGlkYXRlcztcblxuICAgIGNvbnN0IHRlcm1TdHJpbmcgPSB0ZXJtLmdldFN0cmluZygpLFxuICAgICAgICAgIHNpZ25hdHVyZUFzc2VydGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke3NpZ25hdHVyZUFzc2VydGlvblN0cmluZ30nIHNpZ25hdHVyZSBhc3NlcnRpb24ncyAnJHt0ZXJtU3RyaW5nfScgdGVybS4uLmApO1xuXG4gICAgdGVybVZhbGlkYXRlcyA9IHRlcm0udmFsaWRhdGUoc3RhdGUsIGNvbnRleHQsICh0ZXJtLCBjb250ZXh0KSA9PiB7XG4gICAgICBsZXQgdmFsaWRhdGVzO1xuXG4gICAgICB0ZXJtcy5wdXNoKHRlcm0pO1xuXG4gICAgICB2YWxpZGF0ZXMgPSBjb250aW51YXRpb24odGVybXMsIHN0YXRlLCBjb250ZXh0KTtcblxuICAgICAgcmV0dXJuIHZhbGlkYXRlcztcbiAgICB9KTtcblxuICAgIGlmICh0ZXJtVmFsaWRhdGVzKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke3NpZ25hdHVyZUFzc2VydGlvblN0cmluZ30nIHNpZ25hdHVyZSBhc3NlcnRpb24ncyAnJHt0ZXJtU3RyaW5nfScgdGVybS5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGVybVZhbGlkYXRlcztcbiAgfVxuXG4gIHZhbGlkYXRlVGVybXMoc3RhdGUsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBsZXQgdGVybXNWYWxpZGF0ZTtcblxuICAgIGNvbnN0IHNpZ25hdHVyZUFzc2VydGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke3NpZ25hdHVyZUFzc2VydGlvblN0cmluZ30nIHNpZ25hdHVyZSBhc3NlcnRpb24ncyB0ZXJtcy4uLmApO1xuXG4gICAgY29uc3QgdGVybXMgPSBbXSxcbiAgICAgICAgICB2YWxpZGF0ZVRlcm0gPSB0aGlzLnZhbGlkYXRlVGVybS5iaW5kKHRoaXMpO1xuXG4gICAgdGVybXNWYWxpZGF0ZSA9IGV2ZXJ5KHRoaXMudGVybXMsIHZhbGlkYXRlVGVybSwgdGVybXMsIHN0YXRlLCBjb250ZXh0LCAodGVybXMsIHN0YXRlLCBjb250ZXh0KSA9PiB7XG4gICAgICBsZXQgdGVybXNWYWxpZGF0ZTtcblxuICAgICAgdGVybXNWYWxpZGF0ZSA9IGNvbnRpbnVhdGlvbihzdGF0ZSwgY29udGV4dCk7XG5cbiAgICAgIGlmICh0ZXJtc1ZhbGlkYXRlKSB7XG4gICAgICAgIHRoaXMudGVybXMgPSB0ZXJtcztcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRlcm1zVmFsaWRhdGU7XG4gICAgfSk7XG5cbiAgICBpZiAodGVybXNWYWxpZGF0ZSl7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke3NpZ25hdHVyZUFzc2VydGlvblN0cmluZ30nIHNpZ25hdHVyZSBhc3NlcnRpb24ncyB0ZXJtcy5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGVybXNWYWxpZGF0ZVxuICB9XG5cbiAgdmFsaWRhdGVMaW5rKHN0YXRlLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgbGV0IGxpbmtWYWxpZGF0ZXM7XG5cbiAgICBjb25zdCBzaWduYXR1cmVBc3NlcnRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtzaWduYXR1cmVBc3NlcnRpb25TdHJpbmd9JyBzaWduYXR1cmUgYXNzZXJ0aW9uJ3MgbGluay4uLmApO1xuXG4gICAgbGlua1ZhbGlkYXRlcyA9IHRoaXMubGluay52YWxpZGF0ZShzdGF0ZSwgY29udGV4dCwgKGxpbmssIGNvbnRleHQpID0+IHtcbiAgICAgIGxldCB2YWxpZGF0ZXMgPSBmYWxzZTtcblxuICAgICAgY29uc3QgYXhpb20gPSBjb250ZXh0LmZpbmRBeGlvbUJ5TGluayhsaW5rKTtcblxuICAgICAgaWYgKGF4aW9tICE9PSBudWxsKSB7XG4gICAgICAgIGNvbnN0IGF4aW9tU2F0aXNmaWFibGUgPSBheGlvbS5pc1NhdGlzZmlhYmxlKCk7XG5cbiAgICAgICAgaWYgKGF4aW9tU2F0aXNmaWFibGUpIHtcbiAgICAgICAgICB2YWxpZGF0ZXMgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmICh2YWxpZGF0ZXMpIHtcbiAgICAgICAgdGhpcy5saW5rID0gbGluaztcblxuICAgICAgICB2YWxpZGF0ZXMgPSBjb250aW51YXRpb24oc3RhdGUsIGNvbnRleHQpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdmFsaWRhdGVzO1xuICAgIH0pO1xuXG4gICAgaWYgKGxpbmtWYWxpZGF0ZXMpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7c2lnbmF0dXJlQXNzZXJ0aW9uU3RyaW5nfScgc2lnbmF0dXJlIGFzc2VydGlvbidzIGxpbmsuYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGxpbmtWYWxpZGF0ZXM7XG4gIH1cblxuICB1bmlmeUNsYWltKGNsYWltLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3QgY2xhaW1TdHJpbmcgPSBjbGFpbS5nZXRTdHJpbmcoKSxcbiAgICAgICAgICBzaWduYXR1cmVBc3NlcnRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpO1xuXG4gICAgY29udGV4dC50cmFjZShgVW5pZnlpbmcgdGhlICcke2NsYWltU3RyaW5nfScgY2xhaW0gd2l0aCB0aGUgJyR7c2lnbmF0dXJlQXNzZXJ0aW9uU3RyaW5nfScgc2lnbmF0dXJlIGFzc2VydGlvbi4uLmApO1xuXG4gICAgcmV0dXJuIHJlY29uY2lsZSgoY29udGV4dCkgPT4ge1xuICAgICAgY29uc3QgYXhpb20gPSBjb250ZXh0LmZpbmRBeGlvbUJ5TGluayh0aGlzLmxpbmspO1xuXG4gICAgICByZXR1cm4gYXhpb20udW5pZnlUZXJtcyh0aGlzLnRlcm1zLCBjb250ZXh0LCAodGVybXNVbmlmeSkgPT4ge1xuICAgICAgICBpZiAoIXRlcm1zVW5pZnkpIHtcbiAgICAgICAgICBjb25zdCBjbGFpbVVuaWZpZXMgPSBmYWxzZTtcblxuICAgICAgICAgIHJldHVybiBjb250aW51YXRpb24oY2xhaW1VbmlmaWVzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBheGlvbS51bmlmeUNsYWltKGNsYWltLCBjb250ZXh0LCAoY2xhaW1VbmlmaWVzKSA9PiB7XG4gICAgICAgICAgaWYgKGNsYWltVW5pZmllcykge1xuICAgICAgICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udW5pZmllZCB0aGUgJyR7Y2xhaW1TdHJpbmd9JyBjbGFpbSB3aXRoIHRoZSAnJHtzaWduYXR1cmVBc3NlcnRpb25TdHJpbmd9JyBzaWduYXR1cmUgYXNzZXJ0aW9uLmApO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChjbGFpbVVuaWZpZXMpIHtcbiAgICAgICAgICAgIGNvbnRleHQuY29tbWl0KCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbihjbGFpbVVuaWZpZXMpO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0sIGNvbnRleHQpO1xuICB9XG5cbiAgdW5pZnlTdGVwQW5kRmFjdE9yU3VicHJvb2ZzKHN0ZXAsIGZhY3RPclN1YnByb29mcywgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGxldCBzdGVwQW5kRmFjdE9yU3VicHJvb2ZzVW5pZnkgPSBmYWxzZTtcblxuICAgIHJldHVybiByZWNvbmNpbGUoKGNvbnRleHQpID0+IHtcbiAgICAgIGNvbnN0IGF4aW9tID0gY29udGV4dC5maW5kQXhpb21CeUxpbmsodGhpcy5saW5rKSxcbiAgICAgICAgICAgIHNpZ25hdHVyZUFzc2VydGlvbiA9IHRoaXM7ICAvLy9cblxuICAgICAgcmV0dXJuIGF4aW9tLnVuaWZ5U2lnbmF0dXJlQXNzZXJ0aW9uKHNpZ25hdHVyZUFzc2VydGlvbiwgY29udGV4dCwgKHNpZ25hdHVyZUFzc2VydGlvblVuaWZpZXMpID0+IHtcbiAgICAgICAgaWYgKCFzaWduYXR1cmVBc3NlcnRpb25VbmlmaWVzKSB7XG4gICAgICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbihzdGVwQW5kRmFjdE9yU3VicHJvb2ZzVW5pZnkpO1xuICAgICAgICB9XG5cbiAgICAgICAgYXhpb20udW5pZnlTdGVwQW5kRmFjdE9yU3VicHJvb2ZzKHN0ZXAsIGZhY3RPclN1YnByb29mcywgY29udGV4dCwgZm9yd2FyZCwgYmFjayk7XG4gICAgICB9KTtcbiAgICB9LCBjb250ZXh0KTtcbiAgfVxuXG4gIHN0YXRpYyBuYW1lID0gXCJTaWduYXR1cmVBc3NlcnRpb25cIjtcblxuICBzdGF0aWMgZnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICAgIGxldCBzaWduYXR1cmVBc3NlcnRpb247XG5cbiAgICBpbnN0YW50aWF0ZSgoY29udGV4dCkgPT4ge1xuICAgICAgY29uc3QgeyBzdHJpbmcgfSA9IGpzb24sXG4gICAgICAgICAgICBkZWZpbmVkQXNzZXJ0aW9uTm9kZSA9IGluc3RhbnRpYXRlU2lnbmF0dXJlQXNzZXJ0aW9uKHN0cmluZywgY29udGV4dCksXG4gICAgICAgICAgICBub2RlID0gZGVmaW5lZEFzc2VydGlvbk5vZGUsICAvLy9cbiAgICAgICAgICAgIGJyZWFrUG9pbnQgPSBudWxsLFxuICAgICAgICAgICAgdGVybXMgPSB0ZXJtc0Zyb21TaWduYXR1cmVBc3NlcnRpb25Ob2RlKGRlZmluZWRBc3NlcnRpb25Ob2RlLCBjb250ZXh0KSxcbiAgICAgICAgICAgIGxpbmsgPSBsaW5rRnJvbVNpZ25hdHVyZUFzc2VydGlvbk5vZGUoZGVmaW5lZEFzc2VydGlvbk5vZGUsIGNvbnRleHQpO1xuXG4gICAgICBjb250ZXh0ID0gbnVsbDtcblxuICAgICAgc2lnbmF0dXJlQXNzZXJ0aW9uID0gbmV3IFNpZ25hdHVyZUFzc2VydGlvbihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIHRlcm1zLCBsaW5rKTtcbiAgICB9KTtcblxuICAgIHJldHVybiBzaWduYXR1cmVBc3NlcnRpb247XG4gIH1cblxuICBzdGF0aWMgZnJvbVN0ZXAoc3RlcCwgY29udGV4dCkge1xuICAgIGNvbnN0IHN0YXRlbWVudE5vZGUgPSBzdGVwLmdldFN0YXRlbWVudE5vZGUoKSxcbiAgICAgICAgICBzaWduYXR1cmVBc3NlcnRpb24gPSBzaWduYXR1cmVBc3NlcnRpb25Gcm9tU3RhdGVtZW50Tm9kZShzdGF0ZW1lbnROb2RlLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBzaWduYXR1cmVBc3NlcnRpb247XG4gIH1cblxuICBzdGF0aWMgZnJvbVN0YXRlbWVudChzdGF0ZW1lbnQsIGNvbnRleHQpIHtcbiAgICBjb25zdCBzdGF0ZW1lbnROb2RlID0gc3RhdGVtZW50LmdldE5vZGUoKSxcbiAgICAgICAgICBzaWduYXR1cmVBc3NlcnRpb24gPSBzaWduYXR1cmVBc3NlcnRpb25Gcm9tU3RhdGVtZW50Tm9kZShzdGF0ZW1lbnROb2RlLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBzaWduYXR1cmVBc3NlcnRpb247XG4gIH1cbn0pO1xuIl0sIm5hbWVzIjpbImN1dCIsImNvbnRpbnVhdGlvblV0aWxpdGllcyIsInVuYnJlYWthYmxlIiwiYnJlYWtQb2ludFV0aWxpdGllcyIsImRlZmluZSIsIlNpZ25hdHVyZUFzc2VydGlvbiIsIkFzc2VydGlvbiIsImNvbnRleHQiLCJzdHJpbmciLCJub2RlIiwiYnJlYWtQb2ludCIsImxpbmsiLCJ0ZXJtcyIsImdldFRlcm1zIiwiZ2V0TGluayIsImdldFNpZ25hdHVyZUFzc2VydGlvbk5vZGUiLCJnZXROb2RlIiwic2lnbmF0dXJlQXNzZXJ0aW9uTm9kZSIsInZlcmlmeSIsImZvcndhcmQiLCJiYWNrIiwic2lnbmF0dXJlQXNzZXJ0aW9uU3RyaW5nIiwiZ2V0U3RyaW5nIiwidHJhY2UiLCJkZWNsYXJlIiwic3RhdGUiLCJ2YWxpZGF0ZSIsInNpZ25hdHVyZUFzc2VydGlvbiIsImRlYnVnIiwiYXNzZXJ0aW9uIiwidmFsaWRhdGVUZXJtcyIsImJpbmQiLCJ2YWxpZGF0ZUxpbmsiLCJ2YWxpZGF0ZXMiLCJhbGwiLCJhZGRBc3NlcnRpb24iLCJjb250aW51YXRpb24iLCJ2YWxpZGF0ZVRlcm0iLCJ0ZXJtIiwidGVybVZhbGlkYXRlcyIsInRlcm1TdHJpbmciLCJwdXNoIiwidGVybXNWYWxpZGF0ZSIsImV2ZXJ5IiwibGlua1ZhbGlkYXRlcyIsImF4aW9tIiwiZmluZEF4aW9tQnlMaW5rIiwiYXhpb21TYXRpc2ZpYWJsZSIsImlzU2F0aXNmaWFibGUiLCJ1bmlmeUNsYWltIiwiY2xhaW0iLCJjbGFpbVN0cmluZyIsInJlY29uY2lsZSIsInVuaWZ5VGVybXMiLCJ0ZXJtc1VuaWZ5IiwiY2xhaW1VbmlmaWVzIiwiY29tbWl0IiwidW5pZnlTdGVwQW5kRmFjdE9yU3VicHJvb2ZzIiwic3RlcCIsImZhY3RPclN1YnByb29mcyIsInN0ZXBBbmRGYWN0T3JTdWJwcm9vZnNVbmlmeSIsInVuaWZ5U2lnbmF0dXJlQXNzZXJ0aW9uIiwic2lnbmF0dXJlQXNzZXJ0aW9uVW5pZmllcyIsIm5hbWUiLCJmcm9tSlNPTiIsImpzb24iLCJpbnN0YW50aWF0ZSIsImRlZmluZWRBc3NlcnRpb25Ob2RlIiwiaW5zdGFudGlhdGVTaWduYXR1cmVBc3NlcnRpb24iLCJ0ZXJtc0Zyb21TaWduYXR1cmVBc3NlcnRpb25Ob2RlIiwibGlua0Zyb21TaWduYXR1cmVBc3NlcnRpb25Ob2RlIiwiZnJvbVN0ZXAiLCJzdGF0ZW1lbnROb2RlIiwiZ2V0U3RhdGVtZW50Tm9kZSIsInNpZ25hdHVyZUFzc2VydGlvbkZyb21TdGF0ZW1lbnROb2RlIiwiZnJvbVN0YXRlbWVudCIsInN0YXRlbWVudCJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBZUE7OztlQUFBOzs7Z0NBYjJEO2tFQUVyQzswQkFFQzt5QkFDZ0I7NkJBQ087eUJBQ3VFO3VCQUMvRjs7Ozs7O0FBRXRCLE1BQU0sRUFBRUEs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
|
package/lib/element/claim.js
CHANGED
|
@@ -94,7 +94,7 @@ class Claim extends _occamlanguages.Element {
|
|
|
94
94
|
verifyLabel(label, context, forward, back) {
|
|
95
95
|
const labelString = label.getString(), claimString = this.getString(); ///
|
|
96
96
|
context.trace(`Verifying the '${claimString}' claim's '${labelString}' label...`);
|
|
97
|
-
return label.verify((back)=>{
|
|
97
|
+
return label.verify((context, back)=>{
|
|
98
98
|
context.debug(`...verified the '${claimString}' claim's '${labelString}' label.`);
|
|
99
99
|
return forward(context, back);
|
|
100
100
|
}, back);
|
|
@@ -229,4 +229,4 @@ class Claim extends _occamlanguages.Element {
|
|
|
229
229
|
}
|
|
230
230
|
}
|
|
231
231
|
|
|
232
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbGVtZW50L2NsYWltLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBhcnJheVV0aWxpdGllcyB9IGZyb20gXCJuZWNlc3NhcnlcIjtcbmltcG9ydCB7IEVsZW1lbnQsIGJyZWFrUG9pbnRVdGlsaXRpZXMsIGNvbnRpbnVhdGlvblV0aWxpdGllcyB9IGZyb20gXCJvY2NhbS1sYW5ndWFnZXNcIjtcblxuaW1wb3J0IHsgcmVjb25jaWxlIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9jb250ZXh0XCI7XG5pbXBvcnQgeyBjbGFpbVN0cmluZ0Zyb21MYWJlbHNTaWduYXR1cmVTdXBwb3NpdGlvbnNBbmREZWR1Y3Rpb24gfSBmcm9tIFwiLi4vdXRpbGl0aWVzL3N0cmluZ1wiO1xuaW1wb3J0IHsgbGFiZWxzRnJvbUpTT04sXG4gICAgICAgICBkZWR1Y3Rpb25Gcm9tSlNPTixcbiAgICAgICAgIHNpZ25hdHVyZUZyb21KU09OLFxuICAgICAgICAgbGFiZWxzVG9MYWJlbHNKU09OLFxuICAgICAgICAgaHlwb3RoZXNlc0Zyb21KU09OLFxuICAgICAgICAgc3VwcG9zaXRpb25zRnJvbUpTT04sXG4gICAgICAgICBkZWR1Y3Rpb25Ub0RlZHVjdGlvbkpTT04sXG4gICAgICAgICBzaWduYXR1cmVUb1NpZ25hdHVyZUpTT04sXG4gICAgICAgICBoeXBvdGhlc2VzVG9IeXBvdGhlc2VzSlNPTixcbiAgICAgICAgIHN1cHBvc2l0aW9uc1RvU3VwcG9zaXRpb25zSlNPTiB9IGZyb20gXCIuLi91dGlsaXRpZXMvanNvblwiO1xuXG5jb25zdCB7IHJldmVyc2UgfSA9IGFycmF5VXRpbGl0aWVzLFxuICAgICAgeyBldmVyeSwgZXh0cmFjdCwgZm9yd2FyZHNFdmVyeSwgYmFja3dhcmRzRXZlcnkgfSA9IGNvbnRpbnVhdGlvblV0aWxpdGllcyxcbiAgICAgIHsgYnJlYWthYmxlLCBicmVha1BvaW50RnJvbUpTT04sIGJyZWFrUG9pbnRUb0JyZWFrUG9pbnRKU09OIH0gPSBicmVha1BvaW50VXRpbGl0aWVzO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBDbGFpbSBleHRlbmRzIEVsZW1lbnQge1xuICBjb25zdHJ1Y3Rvcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIGxhYmVscywgc3VwcG9zaXRpb25zLCBkZWR1Y3Rpb24sIHByb29mLCBzaWduYXR1cmUsIGh5cG90aGVzZXMpIHtcbiAgICBzdXBlcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQpO1xuXG4gICAgdGhpcy5sYWJlbHMgPSBsYWJlbHM7XG4gICAgdGhpcy5zdXBwb3NpdGlvbnMgPSBzdXBwb3NpdGlvbnM7XG4gICAgdGhpcy5kZWR1Y3Rpb24gPSBkZWR1Y3Rpb247XG4gICAgdGhpcy5wcm9vZiA9IHByb29mO1xuICAgIHRoaXMuc2lnbmF0dXJlID0gc2lnbmF0dXJlO1xuICAgIHRoaXMuaHlwb3RoZXNlcyA9IGh5cG90aGVzZXM7XG4gIH1cblxuICBnZXRMYWJlbHMoKSB7XG4gICAgcmV0dXJuIHRoaXMubGFiZWxzO1xuICB9XG5cbiAgZ2V0U3VwcG9zaXRpb25zKCkge1xuICAgIHJldHVybiB0aGlzLnN1cHBvc2l0aW9ucztcbiAgfVxuXG4gIGdldERlZHVjdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5kZWR1Y3Rpb247XG4gIH1cblxuICBnZXRQcm9vZigpIHtcbiAgICByZXR1cm4gdGhpcy5wcm9vZjtcbiAgfVxuXG4gIGdldFNpZ25hdHVyZSgpIHtcbiAgICByZXR1cm4gdGhpcy5zaWduYXR1cmU7XG4gIH1cblxuICBnZXRIeXBvdGhlc2VzKCkge1xuICAgIHJldHVybiB0aGlzLmh5cG90aGVzZXM7XG4gIH1cblxuICBzZXRIeXBvdGhlc2VzKGh5cG90aGVzZXMpIHtcbiAgICB0aGlzLmh5cG90aGVzZXMgPSBoeXBvdGhlc2VzO1xuICB9XG5cbiAgZ2V0U3VwcG9zaXRpb24oaW5kZXgpIHtcbiAgICBjb25zdCBzdXBwb3NpdGlvbiA9IHRoaXMuc3VwcG9zaXRpb25zW2luZGV4XSB8fCBudWxsO1xuXG4gICAgcmV0dXJuIHN1cHBvc2l0aW9uO1xuICB9XG5cbiAgaXNTYXRpc2ZpYWJsZSgpIHtcbiAgICBjb25zdCBzYXRpc2ZpYWJsZSA9IGZhbHNlO1xuXG4gICAgcmV0dXJuIHNhdGlzZmlhYmxlO1xuICB9XG5cbiAgaXNIeXBvdGhldGljYWwoKSB7XG4gICAgY29uc3QgaHlwb3RoZXNlc0xlbmd0aCA9IHRoaXMuaHlwb3RoZXNlcy5sZW5ndGgsXG4gICAgICAgICAgaHlwb3RoZXRpY2FsID0gKGh5cG90aGVzZXNMZW5ndGggPiAwKTtcblxuICAgIHJldHVybiBoeXBvdGhldGljYWw7XG4gIH1cblxuICBtYXRjaE1ldGF2YXJpYWJsZU5vZGUobWV0YXZhcmlhYmxlTm9kZSkge1xuICAgIGNvbnN0IG1ldGF2YXJpYWJsZU5vZGVNYXRjaGVzID0gdGhpcy5sYWJlbHMuc29tZSgobGFiZWwpID0+IHtcbiAgICAgIGNvbnN0IG1ldGF2YXJpYWJsZU5vZGVNYXRjaGVzID0gbGFiZWwubWF0Y2hNZXRhdmFyaWFibGVOb2RlKG1ldGF2YXJpYWJsZU5vZGUpO1xuXG4gICAgICBpZiAobWV0YXZhcmlhYmxlTm9kZU1hdGNoZXMpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gbWV0YXZhcmlhYmxlTm9kZU1hdGNoZXM7XG4gIH1cblxuICB1bmlmeVN0ZXBBbmRGYWN0T3JTdWJwcm9vZnMgPSBicmVha2FibGUoZnVuY3Rpb24gKHN0ZXAsIGZhY3RPclN1YnByb29mcywgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IHNwZWNpZmljQ29udGV4dCA9IGNvbnRleHQ7ICAvLy9cblxuICAgIHJldHVybiByZWNvbmNpbGUoKGNvbnRleHQpID0+IHtcbiAgICAgIHJldHVybiB0aGlzLnVuaWZ5U3RlcFdpdGhEZWR1Y3Rpb24oc3RlcCwgY29udGV4dCwgKGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMudW5pZnlGYWN0T3JTdWJwcm9vZnNXaXRoU3VwcG9zaXRpb25zKGZhY3RPclN1YnByb29mcywgY29udGV4dCwgKGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgICAgICBjb25zdCBjb21wbGV4U3Vic3RpdHV0aW9uc1Vuc29sdmVkID0gY29udGV4dC5hcmVDb21wbGV4U3Vic3RpdHV0aW9uc1Vuc29sdmVkKCk7XG5cbiAgICAgICAgICBpZiAoY29tcGxleFN1YnN0aXR1dGlvbnNVbnNvbHZlZCkge1xuICAgICAgICAgICAgY29udGV4dC5kZWJ1ZyhgVW5hYmxlIHRvIHVuaWZ5IHRoZSBzdGVwIGFuZCBmYWN0IG9yIHN1YnByb29mcyBiZWNhdXNlIHRocmUgYXJlIHVuc29sdmVkIGNvbXBsZXggc3Vic3RpdHV0aW9ucy5gKTtcblxuICAgICAgICAgICAgcmV0dXJuIGJhY2soKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb250ZXh0ID0gc3BlY2lmaWNDb250ZXh0OyAgLy8vXG5cbiAgICAgICAgICByZXR1cm4gZm9yd2FyZChjb250ZXh0LCBiYWNrKTtcbiAgICAgICAgfSwgYmFjayk7XG4gICAgICB9LCBiYWNrKTtcbiAgICB9LCBjb250ZXh0KTtcbiAgfSk7XG5cbiAgdmVyaWZ5TGFiZWxzKGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBjbGFpbVN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7Y2xhaW1TdHJpbmd9JyBjbGFpbSdzIGxhYmVscy4uLmApO1xuXG4gICAgY29uc3QgdmVyaWZ5TGFiZWwgPSB0aGlzLnZlcmlmeUxhYmVsLmJpbmQodGhpcyk7XG5cbiAgICByZXR1cm4gZXZlcnkodGhpcy5sYWJlbHMsIHZlcmlmeUxhYmVsLCBjb250ZXh0LCAoY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke2NsYWltU3RyaW5nfScgY2xhaW0ncyBsYWJlbHMuYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKGNvbnRleHQsIGJhY2spO1xuICAgIH0sIGJhY2spO1xuICB9XG5cbiAgdmVyaWZ5TGFiZWwobGFiZWwsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBsYWJlbFN0cmluZyA9IGxhYmVsLmdldFN0cmluZygpLFxuICAgICAgICAgIGNsYWltU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke2NsYWltU3RyaW5nfScgY2xhaW0ncyAnJHtsYWJlbFN0cmluZ30nIGxhYmVsLi4uYCk7XG5cbiAgICByZXR1cm4gbGFiZWwudmVyaWZ5KChiYWNrKSA9PiB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7Y2xhaW1TdHJpbmd9JyBjbGFpbSdzICcke2xhYmVsU3RyaW5nfScgbGFiZWwuYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKGNvbnRleHQsIGJhY2spO1xuICAgIH0sIGJhY2spO1xuICB9XG5cbiAgdmVyaWZ5UHJvb2YoY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGlmICh0aGlzLnByb29mID09PSBudWxsKSB7XG4gICAgICByZXR1cm4gZm9yd2FyZChjb250ZXh0LCBiYWNrKTtcbiAgICB9XG5cbiAgICBjb25zdCBjbGFpbVN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7Y2xhaW1TdHJpbmd9JyBjbGFpbSdzIHByb29mLi4uYCk7XG5cbiAgICBjb25zdCBzdGF0ZW1lbnQgPSB0aGlzLmRlZHVjdGlvbi5nZXRTdGF0ZW1lbnQoKTtcblxuICAgIHJldHVybiB0aGlzLnByb29mLnZlcmlmeShzdGF0ZW1lbnQsIGNvbnRleHQsIChjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7Y2xhaW1TdHJpbmd9JyBjbGFpbSdzIHByb29mLmApO1xuXG4gICAgICByZXR1cm4gZm9yd2FyZChjb250ZXh0LCBiYWNrKTtcbiAgICB9LCBiYWNrKTtcbiAgfVxuXG4gIHZlcmlmeURlZHVjdGlvbihjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3QgY2xhaW1TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpLCAvLy9cbiAgICAgICAgICBkZWR1Y3Rpb25TdHJpbmcgPSB0aGlzLmRlZHVjdGlvbi5nZXRTdHJpbmcoKTtcblxuICAgIGNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7Y2xhaW1TdHJpbmd9JyBjbGFpbSdzICcke2RlZHVjdGlvblN0cmluZ30nIGRlZHVjdGlvbi4uLmApO1xuXG4gICAgcmV0dXJuIHRoaXMuZGVkdWN0aW9uLnZlcmlmeShjb250ZXh0LCAoY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke2NsYWltU3RyaW5nfScgY2xhaW0ncyAnJHtkZWR1Y3Rpb25TdHJpbmd9JyBkZWR1Y3Rpb24uYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKGNvbnRleHQsIGJhY2spO1xuICAgIH0sIGJhY2spO1xuICB9XG5cbiAgdmVyaWZ5U3VwcG9zaXRpb24oc3VwcG9zaXRpb24sIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBjbGFpbVN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCksIC8vL1xuICAgICAgICAgIHN1cHBvc2l0aW9uU3RyaW5nID0gc3VwcG9zaXRpb24uZ2V0U3RyaW5nKCk7XG5cbiAgICBjb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke2NsYWltU3RyaW5nfScgY2xhaW0ncyAnJHtzdXBwb3NpdGlvblN0cmluZ30nIHN1cHBvc2l0aW9uLi4uYCk7XG5cbiAgICByZXR1cm4gc3VwcG9zaXRpb24udmVyaWZ5KGNvbnRleHQsIChjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7Y2xhaW1TdHJpbmd9JyBjbGFpbSdzICcke3N1cHBvc2l0aW9uU3RyaW5nfScgc3VwcG9zaXRpb24uYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKGNvbnRleHQsIGJhY2spO1xuICAgIH0sIGJhY2spO1xuICB9XG5cbiAgdmVyaWZ5U3VwcG9zaXRpb25zKGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBzdXBwb3NpdGlvbnNMZW5ndGggPSB0aGlzLnN1cHBvc2l0aW9ucy5sZW5ndGg7XG5cbiAgICBpZiAoc3VwcG9zaXRpb25zTGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gZm9yd2FyZChjb250ZXh0LCBiYWNrKTtcbiAgICB9XG5cbiAgICBjb25zdCBjbGFpbVN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7Y2xhaW1TdHJpbmd9JyBjbGFpbSdzIHN1cHBvc2l0aW9ucy4uLmApO1xuXG4gICAgcmV0dXJuIGZvcndhcmRzRXZlcnkodGhpcy5zdXBwb3NpdGlvbnMsIChzdXBwb3NpdGlvbiwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMudmVyaWZ5U3VwcG9zaXRpb24oc3VwcG9zaXRpb24sIGNvbnRleHQsICggXyAsIGJhY2spID0+IHtcbiAgICAgICAgY29uc3QgZmFjdE9yU3VicHJvb2YgPSBzdXBwb3NpdGlvbjsgLy8vXG5cbiAgICAgICAgY29udGV4dC5hZGRGYWN0T3JTdWJwcm9vZihmYWN0T3JTdWJwcm9vZik7XG5cbiAgICAgICAgY29udGV4dC5hc3NpZ25Bc3NpZ25tZW50cygpO1xuXG4gICAgICAgIHJldHVybiBmb3J3YXJkKGNvbnRleHQsIGJhY2spO1xuICAgICAgfSwgYmFjayk7XG4gICAgfSwgY29udGV4dCwgKGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHtjbGFpbVN0cmluZ30nIGNsYWltJ3Mgc3VwcG9zaXRpb25zLmApO1xuXG4gICAgICByZXR1cm4gZm9yd2FyZChjb250ZXh0LCBiYWNrKTtcbiAgICB9LCBiYWNrKTtcbiAgfVxuXG4gIGRpc2NoYXJnZUh5cG90aGVzaXMoaHlwb3RoZXNpcywgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGRlYnVnZ2VyXG5cbiAgICBjb25zdCBjbGFpbVN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCksIC8vL1xuICAgICAgICAgIGh5cG90aGVzaXNTdHJpbmcgPSBoeXBvdGhlc2lzLmdldFN0cmluZygpO1xuXG4gICAgY29udGV4dC50cmFjZShgRGlzY2hhcmdpbmcgdGhlICcke2NsYWltU3RyaW5nfScgY2xhaW0ncyAnJHtoeXBvdGhlc2lzU3RyaW5nfScgaHlwb3RoZXNpcy4uLmApO1xuXG4gICAgcmV0dXJuIGh5cG90aGVzaXMuZGlzY2hhcmdlKGNvbnRleHQsIChoeXBvdGhlc2lzRGlzY2hhcmdlcywgY29udGV4dCkgPT4ge1xuICAgICAgaWYgKGh5cG90aGVzaXNEaXNjaGFyZ2VzKSB7XG4gICAgICAgIGNvbnRleHQudHJhY2UoYC4uLmRpc2NoYXJnZXMgdGhlICcke2NsYWltU3RyaW5nfScgY2xhaW0ncyAnJHtoeXBvdGhlc2lzU3RyaW5nfScgaHlwb3RoZXNpcy5gKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbihoeXBvdGhlc2lzRGlzY2hhcmdlcywgY29udGV4dCk7XG4gICAgfSk7XG4gIH1cblxuICBkaXNjaGFyZ2VIeXBvdGhlc2VzKGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBkZWJ1Z2dlclxuXG4gICAgY29uc3QgaHlwb3RoZXNlcyA9IHRoaXMuZ2V0SHlwb3RoZXNlcygpLFxuICAgICAgICAgaHlwb3RoZXNlc0xlbmd0aCA9IGh5cG90aGVzZXMubGVuZ3RoO1xuXG4gICAgaWYgKGh5cG90aGVzZXNMZW5ndGggPT09IDApIHtcbiAgICAgIGNvbnN0IGh5cG90aGVzZXNEaXNjaGFyZ2VkID0gdHJ1ZTtcblxuICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbihoeXBvdGhlc2VzRGlzY2hhcmdlZCwgY29udGV4dCk7XG4gICAgfVxuXG4gICAgY29uc3QgY2xhaW1TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYERpc2NoYXJnaW5nIHRoZSAnJHtjbGFpbVN0cmluZ30nIGNsYWltJ3MgaHlwb3RoZXNlcy4uLmApO1xuXG4gICAgY29uc3QgZGlzY2hhcmdlSHlwb3RoZXNpcyA9IHRoaXMuZGlzY2hhcmdlSHlwb3RoZXNpcy5iaW5kKHRoaXMpO1xuXG4gICAgcmV0dXJuIGV2ZXJ5KGh5cG90aGVzZXMsIGRpc2NoYXJnZUh5cG90aGVzaXMsIGNvbnRleHQsIChoeXBvdGhlc2VzRGlzY2hhcmdlZCkgPT4ge1xuICAgICAgaWYgKGh5cG90aGVzZXNEaXNjaGFyZ2VkKSB7XG4gICAgICAgIGNvbnRleHQudHJhY2UoYC4uLmRpc2NoYXJnZWQgdGhlICcke2NsYWltU3RyaW5nfScgY2xhaW0ncyBoeXBvdGhlc2VzLmApO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gY29udGludWF0aW9uKGh5cG90aGVzZXNEaXNjaGFyZ2VkLCBjb250ZXh0KTtcbiAgICB9KTtcbiAgfVxuXG4gIHVuaWZ5U3RlcFdpdGhEZWR1Y3Rpb24oc3RlcCwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IHN0ZXBTdHJpbmcgPSBzdGVwLmdldFN0cmluZygpLFxuICAgICAgICAgIGNsYWltU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKSxcbiAgICAgICAgICBkZWR1Y3Rpb25TdHJpbmcgPSB0aGlzLmRlZHVjdGlvbi5nZXRTdHJpbmcoKTtcblxuICAgIGNvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHtzdGVwU3RyaW5nfScgc3RlcCB3aXRoIHRoZSAnJHtjbGFpbVN0cmluZ30nIGNsYWltJ3MgJyR7ZGVkdWN0aW9uU3RyaW5nfScgZGVkdWN0aW9uLi4uYCk7XG5cbiAgICByZXR1cm4gdGhpcy5kZWR1Y3Rpb24udW5pZnlTdGVwKHN0ZXAsIGNvbnRleHQsIChjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi51bmlmaWVkIHRoZSAnJHtzdGVwU3RyaW5nfScgc3RlcCB3aXRoIHRoZSAnJHtjbGFpbVN0cmluZ30nIGNsYWltJ3MgJyR7ZGVkdWN0aW9uU3RyaW5nfScgZGVkdWN0aW9uLmApO1xuXG4gICAgICByZXR1cm4gZm9yd2FyZChjb250ZXh0LCBiYWNrKTtcbiAgICB9LCBiYWNrKTtcbiAgfVxuXG4gIHVuaWZ5RmFjdE9yU3VicHJvb2ZzV2l0aFN1cHBvc2l0aW9uKGZhY3RPclN1YnByb29mcywgc3VwcG9zaXRpb24sIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICByZXR1cm4gZXh0cmFjdChmYWN0T3JTdWJwcm9vZnMsXG4gICAgICAoZmFjdE9yU3VicHJvb2YsIGZvcndhcmQsIGJhY2spID0+IHtcbiAgICAgICAgcmV0dXJuIHN1cHBvc2l0aW9uLnVuaWZ5RmFjdE9yU3VicHJvb2YoZmFjdE9yU3VicHJvb2YsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spO1xuICAgICAgfSwgKGZhY3RPclN1YnByb29mcywgZmFjdE9yU3VicHJvb2YsIGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgICAgcmV0dXJuIGNvbnRleHQuc29sdmVJbmZlcnJlZFN1YnN0aXR1dGlvbnMoKGJhY2spID0+IHtcbiAgICAgICAgICByZXR1cm4gZm9yd2FyZChmYWN0T3JTdWJwcm9vZnMsIGNvbnRleHQsIGJhY2spO1xuICAgICAgICB9LCBiYWNrKTtcbiAgICAgIH0sIChleGNlcHRpb24pID0+IHtcbiAgICAgICAgaWYoZXhjZXB0aW9uKSB7XG4gICAgICAgICAgcmV0dXJuIGJhY2soZXhjZXB0aW9uKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBzdXBwb3NpdGlvbi51bmlmeUluZGVwZW5kZW50bHkoY29udGV4dCwgKGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgICAgICByZXR1cm4gZm9yd2FyZChmYWN0T3JTdWJwcm9vZnMsIGNvbnRleHQsIGJhY2spO1xuICAgICAgICB9LCBiYWNrKTtcbiAgICAgIH1cbiAgICApO1xuICB9XG5cbiAgdW5pZnlGYWN0T3JTdWJwcm9vZnNXaXRoU3VwcG9zaXRpb25zKGZhY3RPclN1YnByb29mcywgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGZhY3RPclN1YnByb29mcyA9IHJldmVyc2UoZmFjdE9yU3VicHJvb2ZzKTsgLy8vXG5cbiAgICByZXR1cm4gYmFja3dhcmRzRXZlcnkodGhpcy5zdXBwb3NpdGlvbnMsIChzdXBwb3NpdGlvbiwgZmFjdE9yU3VicHJvb2ZzLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy51bmlmeUZhY3RPclN1YnByb29mc1dpdGhTdXBwb3NpdGlvbihmYWN0T3JTdWJwcm9vZnMsIHN1cHBvc2l0aW9uLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKTtcbiAgICB9LCBmYWN0T3JTdWJwcm9vZnMsIGNvbnRleHQsIChmYWN0T3JTdWJwcm9vZnMsIGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIHJldHVybiBmb3J3YXJkKGNvbnRleHQsIGJhY2spO1xuICAgIH0sIGJhY2spO1xuICB9XG5cbiAgdG9KU09OKCkge1xuICAgIGNvbnN0IGxhYmVsc0pTT04gPSBsYWJlbHNUb0xhYmVsc0pTT04odGhpcy5sYWJlbHMpLFxuICAgICAgICAgIGRlZHVjdGlvbkpTT04gPSBkZWR1Y3Rpb25Ub0RlZHVjdGlvbkpTT04odGhpcy5kZWR1Y3Rpb24pLFxuICAgICAgICAgIHN1cHBvc2l0aW9uc0pTT04gPSBzdXBwb3NpdGlvbnNUb1N1cHBvc2l0aW9uc0pTT04odGhpcy5zdXBwb3NpdGlvbnMpLFxuICAgICAgICAgIHNpZ25hdHVyZUpTT04gPSBzaWduYXR1cmVUb1NpZ25hdHVyZUpTT04odGhpcy5zaWduYXR1cmUpLFxuICAgICAgICAgIGh5cG90aGVzZXNKU09OID0gaHlwb3RoZXNlc1RvSHlwb3RoZXNlc0pTT04odGhpcy5oeXBvdGhlc2VzKSxcbiAgICAgICAgICBzdHJpbmcgPSB0aGlzLmdldFN0cmluZygpO1xuXG4gICAgbGV0IGJyZWFrUG9pbnQ7XG5cbiAgICBicmVha1BvaW50ID0gdGhpcy5nZXRCcmVha1BvaW50KCk7XG5cbiAgICBjb25zdCBicmVha1BvaW50SlNPTiA9IGJyZWFrUG9pbnRUb0JyZWFrUG9pbnRKU09OKGJyZWFrUG9pbnQpO1xuXG4gICAgYnJlYWtQb2ludCA9IGJyZWFrUG9pbnRKU09OOyAgLy8vXG5cbiAgICBjb25zdCBsYWJlbHMgPSBsYWJlbHNKU09OLCAgLy8vXG4gICAgICAgICAgZGVkdWN0aW9uID0gZGVkdWN0aW9uSlNPTiwgIC8vL1xuICAgICAgICAgIHN1cHBvc2l0aW9ucyA9IHN1cHBvc2l0aW9uc0pTT04sICAvLy9cbiAgICAgICAgICBzaWduYXR1cmUgPSBzaWduYXR1cmVKU09OLCAgLy8vXG4gICAgICAgICAgaHlwb3RoZXNlcyA9IGh5cG90aGVzZXNKU09OLCAgLy8vXG4gICAgICAgICAganNvbiA9IHtcbiAgICAgICAgICAgIHN0cmluZyxcbiAgICAgICAgICAgIGJyZWFrUG9pbnQsXG4gICAgICAgICAgICBsYWJlbHMsXG4gICAgICAgICAgICBkZWR1Y3Rpb24sXG4gICAgICAgICAgICBzdXBwb3NpdGlvbnMsXG4gICAgICAgICAgICBzaWduYXR1cmUsXG4gICAgICAgICAgICBoeXBvdGhlc2VzXG4gICAgICAgICAgfTtcblxuICAgIHJldHVybiBqc29uO1xuICB9XG5cbiAgc3RhdGljIGZyb21KU09OKENsYXNzLCBqc29uLCBjb250ZXh0KSB7XG4gICAgY29uc3QgbGFiZWxzID0gbGFiZWxzRnJvbUpTT04oanNvbiwgY29udGV4dCksXG4gICAgICAgICAgZGVkdWN0aW9uID0gZGVkdWN0aW9uRnJvbUpTT04oanNvbiwgY29udGV4dCksXG4gICAgICAgICAgc3VwcG9zaXRpb25zID0gc3VwcG9zaXRpb25zRnJvbUpTT04oanNvbiwgY29udGV4dCksXG4gICAgICAgICAgc2lnbmF0dXJlID0gc2lnbmF0dXJlRnJvbUpTT04oanNvbiwgY29udGV4dCksXG4gICAgICAgICAgaHlwb3RoZXNlcyA9IGh5cG90aGVzZXNGcm9tSlNPTihqc29uLCBjb250ZXh0KSxcbiAgICAgICAgICBjbGFpbVN0cmluZyA9IGNsYWltU3RyaW5nRnJvbUxhYmVsc1NpZ25hdHVyZVN1cHBvc2l0aW9uc0FuZERlZHVjdGlvbihsYWJlbHMsIHNpZ25hdHVyZSwgc3VwcG9zaXRpb25zLCBkZWR1Y3Rpb24pLFxuICAgICAgICAgIHN0cmluZyA9IGNsYWltU3RyaW5nLCAvLy9cbiAgICAgICAgICBub2RlID0gbnVsbCxcbiAgICAgICAgICBicmVha1BvaW50ID0gYnJlYWtQb2ludEZyb21KU09OKGpzb24pLFxuICAgICAgICAgIHByb29mID0gbnVsbCxcbiAgICAgICAgICBjbGFpbSA9IG5ldyBDbGFzcyhjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIGxhYmVscywgc3VwcG9zaXRpb25zLCBkZWR1Y3Rpb24sIHByb29mLCBzaWduYXR1cmUsIGh5cG90aGVzZXMpO1xuXG4gICAgcmV0dXJuIGNsYWltO1xuICB9XG59XG4iXSwibmFtZXMiOlsiQ2xhaW0iLCJyZXZlcnNlIiwiYXJyYXlVdGlsaXRpZXMiLCJldmVyeSIsImV4dHJhY3QiLCJmb3J3YXJkc0V2ZXJ5IiwiYmFja3dhcmRzRXZlcnkiLCJjb250aW51YXRpb25VdGlsaXRpZXMiLCJicmVha2FibGUiLCJicmVha1BvaW50RnJvbUpTT04iLCJicmVha1BvaW50VG9CcmVha1BvaW50SlNPTiIsImJyZWFrUG9pbnRVdGlsaXRpZXMiLCJFbGVtZW50IiwiY29udGV4dCIsInN0cmluZyIsIm5vZGUiLCJicmVha1BvaW50IiwibGFiZWxzIiwic3VwcG9zaXRpb25zIiwiZGVkdWN0aW9uIiwicHJvb2YiLCJzaWduYXR1cmUiLCJoeXBvdGhlc2VzIiwiZ2V0TGFiZWxzIiwiZ2V0U3VwcG9zaXRpb25zIiwiZ2V0RGVkdWN0aW9uIiwiZ2V0UHJvb2YiLCJnZXRTaWduYXR1cmUiLCJnZXRIeXBvdGhlc2VzIiwic2V0SHlwb3RoZXNlcyIsImdldFN1cHBvc2l0aW9uIiwiaW5kZXgiLCJzdXBwb3NpdGlvbiIsImlzU2F0aXNmaWFibGUiLCJzYXRpc2ZpYWJsZSIsImlzSHlwb3RoZXRpY2FsIiwiaHlwb3RoZXNlc0xlbmd0aCIsImxlbmd0aCIsImh5cG90aGV0aWNhbCIsIm1hdGNoTWV0YXZhcmlhYmxlTm9kZSIsIm1ldGF2YXJpYWJsZU5vZGUiLCJtZXRhdmFyaWFibGVOb2RlTWF0Y2hlcyIsInNvbWUiLCJsYWJlbCIsInVuaWZ5U3RlcEFuZEZhY3RPclN1YnByb29mcyIsInN0ZXAiLCJmYWN0T3JTdWJwcm9vZnMiLCJmb3J3YXJkIiwiYmFjayIsInNwZWNpZmljQ29udGV4dCIsInJlY29uY2lsZSIsInVuaWZ5U3RlcFdpdGhEZWR1Y3Rpb24iLCJ1bmlmeUZhY3RPclN1YnByb29mc1dpdGhTdXBwb3NpdGlvbnMiLCJjb21wbGV4U3Vic3RpdHV0aW9uc1Vuc29sdmVkIiwiYXJlQ29tcGxleFN1YnN0aXR1dGlvbnNVbnNvbHZlZCIsImRlYnVnIiwidmVyaWZ5TGFiZWxzIiwiY2xhaW1TdHJpbmciLCJnZXRTdHJpbmciLCJ0cmFjZSIsInZlcmlmeUxhYmVsIiwiYmluZCIsImxhYmVsU3RyaW5nIiwidmVyaWZ5IiwidmVyaWZ5UHJvb2YiLCJzdGF0ZW1lbnQiLCJnZXRTdGF0ZW1lbnQiLCJ2ZXJpZnlEZWR1Y3Rpb24iLCJkZWR1Y3Rpb25TdHJpbmciLCJ2ZXJpZnlTdXBwb3NpdGlvbiIsInN1cHBvc2l0aW9uU3RyaW5nIiwidmVyaWZ5U3VwcG9zaXRpb25zIiwic3VwcG9zaXRpb25zTGVuZ3RoIiwiXyIsImZhY3RPclN1YnByb29mIiwiYWRkRmFjdE9yU3VicHJvb2YiLCJhc3NpZ25Bc3NpZ25tZW50cyIsImRpc2NoYXJnZUh5cG90aGVzaXMiLCJoeXBvdGhlc2lzIiwiaHlwb3RoZXNpc1N0cmluZyIsImRpc2NoYXJnZSIsImh5cG90aGVzaXNEaXNjaGFyZ2VzIiwiY29udGludWF0aW9uIiwiZGlzY2hhcmdlSHlwb3RoZXNlcyIsImh5cG90aGVzZXNEaXNjaGFyZ2VkIiwic3RlcFN0cmluZyIsInVuaWZ5U3RlcCIsInVuaWZ5RmFjdE9yU3VicHJvb2ZzV2l0aFN1cHBvc2l0aW9uIiwidW5pZnlGYWN0T3JTdWJwcm9vZiIsInNvbHZlSW5mZXJyZWRTdWJzdGl0dXRpb25zIiwiZXhjZXB0aW9uIiwidW5pZnlJbmRlcGVuZGVudGx5IiwidG9KU09OIiwibGFiZWxzSlNPTiIsImxhYmVsc1RvTGFiZWxzSlNPTiIsImRlZHVjdGlvbkpTT04iLCJkZWR1Y3Rpb25Ub0RlZHVjdGlvbkpTT04iLCJzdXBwb3NpdGlvbnNKU09OIiwic3VwcG9zaXRpb25zVG9TdXBwb3NpdGlvbnNKU09OIiwic2lnbmF0dXJlSlNPTiIsInNpZ25hdHVyZVRvU2lnbmF0dXJlSlNPTiIsImh5cG90aGVzZXNKU09OIiwiaHlwb3RoZXNlc1RvSHlwb3RoZXNlc0pTT04iLCJnZXRCcmVha1BvaW50IiwiYnJlYWtQb2ludEpTT04iLCJqc29uIiwiZnJvbUpTT04iLCJDbGFzcyIsImxhYmVsc0Zyb21KU09OIiwiZGVkdWN0aW9uRnJvbUpTT04iLCJzdXBwb3NpdGlvbnNGcm9tSlNPTiIsInNpZ25hdHVyZUZyb21KU09OIiwiaHlwb3RoZXNlc0Zyb21KU09OIiwiY2xhaW1TdHJpbmdGcm9tTGFiZWxzU2lnbmF0dXJlU3VwcG9zaXRpb25zQW5kRGVkdWN0aW9uIiwiY2xhaW0iXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQXNCQTs7O2VBQXFCQTs7OzJCQXBCVTtnQ0FDcUM7eUJBRTFDO3dCQUM2QztzQkFVeEI7QUFFL0MsTUFBTSxFQUFFQyxPQUFPLEVBQUUsR0FBR0Ms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
|
|
232
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbGVtZW50L2NsYWltLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBhcnJheVV0aWxpdGllcyB9IGZyb20gXCJuZWNlc3NhcnlcIjtcbmltcG9ydCB7IEVsZW1lbnQsIGJyZWFrUG9pbnRVdGlsaXRpZXMsIGNvbnRpbnVhdGlvblV0aWxpdGllcyB9IGZyb20gXCJvY2NhbS1sYW5ndWFnZXNcIjtcblxuaW1wb3J0IHsgcmVjb25jaWxlIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9jb250ZXh0XCI7XG5pbXBvcnQgeyBjbGFpbVN0cmluZ0Zyb21MYWJlbHNTaWduYXR1cmVTdXBwb3NpdGlvbnNBbmREZWR1Y3Rpb24gfSBmcm9tIFwiLi4vdXRpbGl0aWVzL3N0cmluZ1wiO1xuaW1wb3J0IHsgbGFiZWxzRnJvbUpTT04sXG4gICAgICAgICBkZWR1Y3Rpb25Gcm9tSlNPTixcbiAgICAgICAgIHNpZ25hdHVyZUZyb21KU09OLFxuICAgICAgICAgbGFiZWxzVG9MYWJlbHNKU09OLFxuICAgICAgICAgaHlwb3RoZXNlc0Zyb21KU09OLFxuICAgICAgICAgc3VwcG9zaXRpb25zRnJvbUpTT04sXG4gICAgICAgICBkZWR1Y3Rpb25Ub0RlZHVjdGlvbkpTT04sXG4gICAgICAgICBzaWduYXR1cmVUb1NpZ25hdHVyZUpTT04sXG4gICAgICAgICBoeXBvdGhlc2VzVG9IeXBvdGhlc2VzSlNPTixcbiAgICAgICAgIHN1cHBvc2l0aW9uc1RvU3VwcG9zaXRpb25zSlNPTiB9IGZyb20gXCIuLi91dGlsaXRpZXMvanNvblwiO1xuXG5jb25zdCB7IHJldmVyc2UgfSA9IGFycmF5VXRpbGl0aWVzLFxuICAgICAgeyBldmVyeSwgZXh0cmFjdCwgZm9yd2FyZHNFdmVyeSwgYmFja3dhcmRzRXZlcnkgfSA9IGNvbnRpbnVhdGlvblV0aWxpdGllcyxcbiAgICAgIHsgYnJlYWthYmxlLCBicmVha1BvaW50RnJvbUpTT04sIGJyZWFrUG9pbnRUb0JyZWFrUG9pbnRKU09OIH0gPSBicmVha1BvaW50VXRpbGl0aWVzO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBDbGFpbSBleHRlbmRzIEVsZW1lbnQge1xuICBjb25zdHJ1Y3Rvcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIGxhYmVscywgc3VwcG9zaXRpb25zLCBkZWR1Y3Rpb24sIHByb29mLCBzaWduYXR1cmUsIGh5cG90aGVzZXMpIHtcbiAgICBzdXBlcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQpO1xuXG4gICAgdGhpcy5sYWJlbHMgPSBsYWJlbHM7XG4gICAgdGhpcy5zdXBwb3NpdGlvbnMgPSBzdXBwb3NpdGlvbnM7XG4gICAgdGhpcy5kZWR1Y3Rpb24gPSBkZWR1Y3Rpb247XG4gICAgdGhpcy5wcm9vZiA9IHByb29mO1xuICAgIHRoaXMuc2lnbmF0dXJlID0gc2lnbmF0dXJlO1xuICAgIHRoaXMuaHlwb3RoZXNlcyA9IGh5cG90aGVzZXM7XG4gIH1cblxuICBnZXRMYWJlbHMoKSB7XG4gICAgcmV0dXJuIHRoaXMubGFiZWxzO1xuICB9XG5cbiAgZ2V0U3VwcG9zaXRpb25zKCkge1xuICAgIHJldHVybiB0aGlzLnN1cHBvc2l0aW9ucztcbiAgfVxuXG4gIGdldERlZHVjdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5kZWR1Y3Rpb247XG4gIH1cblxuICBnZXRQcm9vZigpIHtcbiAgICByZXR1cm4gdGhpcy5wcm9vZjtcbiAgfVxuXG4gIGdldFNpZ25hdHVyZSgpIHtcbiAgICByZXR1cm4gdGhpcy5zaWduYXR1cmU7XG4gIH1cblxuICBnZXRIeXBvdGhlc2VzKCkge1xuICAgIHJldHVybiB0aGlzLmh5cG90aGVzZXM7XG4gIH1cblxuICBzZXRIeXBvdGhlc2VzKGh5cG90aGVzZXMpIHtcbiAgICB0aGlzLmh5cG90aGVzZXMgPSBoeXBvdGhlc2VzO1xuICB9XG5cbiAgZ2V0U3VwcG9zaXRpb24oaW5kZXgpIHtcbiAgICBjb25zdCBzdXBwb3NpdGlvbiA9IHRoaXMuc3VwcG9zaXRpb25zW2luZGV4XSB8fCBudWxsO1xuXG4gICAgcmV0dXJuIHN1cHBvc2l0aW9uO1xuICB9XG5cbiAgaXNTYXRpc2ZpYWJsZSgpIHtcbiAgICBjb25zdCBzYXRpc2ZpYWJsZSA9IGZhbHNlO1xuXG4gICAgcmV0dXJuIHNhdGlzZmlhYmxlO1xuICB9XG5cbiAgaXNIeXBvdGhldGljYWwoKSB7XG4gICAgY29uc3QgaHlwb3RoZXNlc0xlbmd0aCA9IHRoaXMuaHlwb3RoZXNlcy5sZW5ndGgsXG4gICAgICAgICAgaHlwb3RoZXRpY2FsID0gKGh5cG90aGVzZXNMZW5ndGggPiAwKTtcblxuICAgIHJldHVybiBoeXBvdGhldGljYWw7XG4gIH1cblxuICBtYXRjaE1ldGF2YXJpYWJsZU5vZGUobWV0YXZhcmlhYmxlTm9kZSkge1xuICAgIGNvbnN0IG1ldGF2YXJpYWJsZU5vZGVNYXRjaGVzID0gdGhpcy5sYWJlbHMuc29tZSgobGFiZWwpID0+IHtcbiAgICAgIGNvbnN0IG1ldGF2YXJpYWJsZU5vZGVNYXRjaGVzID0gbGFiZWwubWF0Y2hNZXRhdmFyaWFibGVOb2RlKG1ldGF2YXJpYWJsZU5vZGUpO1xuXG4gICAgICBpZiAobWV0YXZhcmlhYmxlTm9kZU1hdGNoZXMpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gbWV0YXZhcmlhYmxlTm9kZU1hdGNoZXM7XG4gIH1cblxuICB1bmlmeVN0ZXBBbmRGYWN0T3JTdWJwcm9vZnMgPSBicmVha2FibGUoZnVuY3Rpb24gKHN0ZXAsIGZhY3RPclN1YnByb29mcywgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IHNwZWNpZmljQ29udGV4dCA9IGNvbnRleHQ7ICAvLy9cblxuICAgIHJldHVybiByZWNvbmNpbGUoKGNvbnRleHQpID0+IHtcbiAgICAgIHJldHVybiB0aGlzLnVuaWZ5U3RlcFdpdGhEZWR1Y3Rpb24oc3RlcCwgY29udGV4dCwgKGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMudW5pZnlGYWN0T3JTdWJwcm9vZnNXaXRoU3VwcG9zaXRpb25zKGZhY3RPclN1YnByb29mcywgY29udGV4dCwgKGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgICAgICBjb25zdCBjb21wbGV4U3Vic3RpdHV0aW9uc1Vuc29sdmVkID0gY29udGV4dC5hcmVDb21wbGV4U3Vic3RpdHV0aW9uc1Vuc29sdmVkKCk7XG5cbiAgICAgICAgICBpZiAoY29tcGxleFN1YnN0aXR1dGlvbnNVbnNvbHZlZCkge1xuICAgICAgICAgICAgY29udGV4dC5kZWJ1ZyhgVW5hYmxlIHRvIHVuaWZ5IHRoZSBzdGVwIGFuZCBmYWN0IG9yIHN1YnByb29mcyBiZWNhdXNlIHRocmUgYXJlIHVuc29sdmVkIGNvbXBsZXggc3Vic3RpdHV0aW9ucy5gKTtcblxuICAgICAgICAgICAgcmV0dXJuIGJhY2soKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb250ZXh0ID0gc3BlY2lmaWNDb250ZXh0OyAgLy8vXG5cbiAgICAgICAgICByZXR1cm4gZm9yd2FyZChjb250ZXh0LCBiYWNrKTtcbiAgICAgICAgfSwgYmFjayk7XG4gICAgICB9LCBiYWNrKTtcbiAgICB9LCBjb250ZXh0KTtcbiAgfSk7XG5cbiAgdmVyaWZ5TGFiZWxzKGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBjbGFpbVN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7Y2xhaW1TdHJpbmd9JyBjbGFpbSdzIGxhYmVscy4uLmApO1xuXG4gICAgY29uc3QgdmVyaWZ5TGFiZWwgPSB0aGlzLnZlcmlmeUxhYmVsLmJpbmQodGhpcyk7XG5cbiAgICByZXR1cm4gZXZlcnkodGhpcy5sYWJlbHMsIHZlcmlmeUxhYmVsLCBjb250ZXh0LCAoY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke2NsYWltU3RyaW5nfScgY2xhaW0ncyBsYWJlbHMuYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKGNvbnRleHQsIGJhY2spO1xuICAgIH0sIGJhY2spO1xuICB9XG5cbiAgdmVyaWZ5TGFiZWwobGFiZWwsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBsYWJlbFN0cmluZyA9IGxhYmVsLmdldFN0cmluZygpLFxuICAgICAgICAgIGNsYWltU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke2NsYWltU3RyaW5nfScgY2xhaW0ncyAnJHtsYWJlbFN0cmluZ30nIGxhYmVsLi4uYCk7XG5cbiAgICByZXR1cm4gbGFiZWwudmVyaWZ5KChjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7Y2xhaW1TdHJpbmd9JyBjbGFpbSdzICcke2xhYmVsU3RyaW5nfScgbGFiZWwuYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKGNvbnRleHQsIGJhY2spO1xuICAgIH0sIGJhY2spO1xuICB9XG5cbiAgdmVyaWZ5UHJvb2YoY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGlmICh0aGlzLnByb29mID09PSBudWxsKSB7XG4gICAgICByZXR1cm4gZm9yd2FyZChjb250ZXh0LCBiYWNrKTtcbiAgICB9XG5cbiAgICBjb25zdCBjbGFpbVN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7Y2xhaW1TdHJpbmd9JyBjbGFpbSdzIHByb29mLi4uYCk7XG5cbiAgICBjb25zdCBzdGF0ZW1lbnQgPSB0aGlzLmRlZHVjdGlvbi5nZXRTdGF0ZW1lbnQoKTtcblxuICAgIHJldHVybiB0aGlzLnByb29mLnZlcmlmeShzdGF0ZW1lbnQsIGNvbnRleHQsIChjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7Y2xhaW1TdHJpbmd9JyBjbGFpbSdzIHByb29mLmApO1xuXG4gICAgICByZXR1cm4gZm9yd2FyZChjb250ZXh0LCBiYWNrKTtcbiAgICB9LCBiYWNrKTtcbiAgfVxuXG4gIHZlcmlmeURlZHVjdGlvbihjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3QgY2xhaW1TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpLCAvLy9cbiAgICAgICAgICBkZWR1Y3Rpb25TdHJpbmcgPSB0aGlzLmRlZHVjdGlvbi5nZXRTdHJpbmcoKTtcblxuICAgIGNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7Y2xhaW1TdHJpbmd9JyBjbGFpbSdzICcke2RlZHVjdGlvblN0cmluZ30nIGRlZHVjdGlvbi4uLmApO1xuXG4gICAgcmV0dXJuIHRoaXMuZGVkdWN0aW9uLnZlcmlmeShjb250ZXh0LCAoY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke2NsYWltU3RyaW5nfScgY2xhaW0ncyAnJHtkZWR1Y3Rpb25TdHJpbmd9JyBkZWR1Y3Rpb24uYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKGNvbnRleHQsIGJhY2spO1xuICAgIH0sIGJhY2spO1xuICB9XG5cbiAgdmVyaWZ5U3VwcG9zaXRpb24oc3VwcG9zaXRpb24sIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBjbGFpbVN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCksIC8vL1xuICAgICAgICAgIHN1cHBvc2l0aW9uU3RyaW5nID0gc3VwcG9zaXRpb24uZ2V0U3RyaW5nKCk7XG5cbiAgICBjb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke2NsYWltU3RyaW5nfScgY2xhaW0ncyAnJHtzdXBwb3NpdGlvblN0cmluZ30nIHN1cHBvc2l0aW9uLi4uYCk7XG5cbiAgICByZXR1cm4gc3VwcG9zaXRpb24udmVyaWZ5KGNvbnRleHQsIChjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7Y2xhaW1TdHJpbmd9JyBjbGFpbSdzICcke3N1cHBvc2l0aW9uU3RyaW5nfScgc3VwcG9zaXRpb24uYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKGNvbnRleHQsIGJhY2spO1xuICAgIH0sIGJhY2spO1xuICB9XG5cbiAgdmVyaWZ5U3VwcG9zaXRpb25zKGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBzdXBwb3NpdGlvbnNMZW5ndGggPSB0aGlzLnN1cHBvc2l0aW9ucy5sZW5ndGg7XG5cbiAgICBpZiAoc3VwcG9zaXRpb25zTGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gZm9yd2FyZChjb250ZXh0LCBiYWNrKTtcbiAgICB9XG5cbiAgICBjb25zdCBjbGFpbVN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7Y2xhaW1TdHJpbmd9JyBjbGFpbSdzIHN1cHBvc2l0aW9ucy4uLmApO1xuXG4gICAgcmV0dXJuIGZvcndhcmRzRXZlcnkodGhpcy5zdXBwb3NpdGlvbnMsIChzdXBwb3NpdGlvbiwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMudmVyaWZ5U3VwcG9zaXRpb24oc3VwcG9zaXRpb24sIGNvbnRleHQsICggXyAsIGJhY2spID0+IHtcbiAgICAgICAgY29uc3QgZmFjdE9yU3VicHJvb2YgPSBzdXBwb3NpdGlvbjsgLy8vXG5cbiAgICAgICAgY29udGV4dC5hZGRGYWN0T3JTdWJwcm9vZihmYWN0T3JTdWJwcm9vZik7XG5cbiAgICAgICAgY29udGV4dC5hc3NpZ25Bc3NpZ25tZW50cygpO1xuXG4gICAgICAgIHJldHVybiBmb3J3YXJkKGNvbnRleHQsIGJhY2spO1xuICAgICAgfSwgYmFjayk7XG4gICAgfSwgY29udGV4dCwgKGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHtjbGFpbVN0cmluZ30nIGNsYWltJ3Mgc3VwcG9zaXRpb25zLmApO1xuXG4gICAgICByZXR1cm4gZm9yd2FyZChjb250ZXh0LCBiYWNrKTtcbiAgICB9LCBiYWNrKTtcbiAgfVxuXG4gIGRpc2NoYXJnZUh5cG90aGVzaXMoaHlwb3RoZXNpcywgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGRlYnVnZ2VyXG5cbiAgICBjb25zdCBjbGFpbVN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCksIC8vL1xuICAgICAgICAgIGh5cG90aGVzaXNTdHJpbmcgPSBoeXBvdGhlc2lzLmdldFN0cmluZygpO1xuXG4gICAgY29udGV4dC50cmFjZShgRGlzY2hhcmdpbmcgdGhlICcke2NsYWltU3RyaW5nfScgY2xhaW0ncyAnJHtoeXBvdGhlc2lzU3RyaW5nfScgaHlwb3RoZXNpcy4uLmApO1xuXG4gICAgcmV0dXJuIGh5cG90aGVzaXMuZGlzY2hhcmdlKGNvbnRleHQsIChoeXBvdGhlc2lzRGlzY2hhcmdlcywgY29udGV4dCkgPT4ge1xuICAgICAgaWYgKGh5cG90aGVzaXNEaXNjaGFyZ2VzKSB7XG4gICAgICAgIGNvbnRleHQudHJhY2UoYC4uLmRpc2NoYXJnZXMgdGhlICcke2NsYWltU3RyaW5nfScgY2xhaW0ncyAnJHtoeXBvdGhlc2lzU3RyaW5nfScgaHlwb3RoZXNpcy5gKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbihoeXBvdGhlc2lzRGlzY2hhcmdlcywgY29udGV4dCk7XG4gICAgfSk7XG4gIH1cblxuICBkaXNjaGFyZ2VIeXBvdGhlc2VzKGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBkZWJ1Z2dlclxuXG4gICAgY29uc3QgaHlwb3RoZXNlcyA9IHRoaXMuZ2V0SHlwb3RoZXNlcygpLFxuICAgICAgICAgaHlwb3RoZXNlc0xlbmd0aCA9IGh5cG90aGVzZXMubGVuZ3RoO1xuXG4gICAgaWYgKGh5cG90aGVzZXNMZW5ndGggPT09IDApIHtcbiAgICAgIGNvbnN0IGh5cG90aGVzZXNEaXNjaGFyZ2VkID0gdHJ1ZTtcblxuICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbihoeXBvdGhlc2VzRGlzY2hhcmdlZCwgY29udGV4dCk7XG4gICAgfVxuXG4gICAgY29uc3QgY2xhaW1TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYERpc2NoYXJnaW5nIHRoZSAnJHtjbGFpbVN0cmluZ30nIGNsYWltJ3MgaHlwb3RoZXNlcy4uLmApO1xuXG4gICAgY29uc3QgZGlzY2hhcmdlSHlwb3RoZXNpcyA9IHRoaXMuZGlzY2hhcmdlSHlwb3RoZXNpcy5iaW5kKHRoaXMpO1xuXG4gICAgcmV0dXJuIGV2ZXJ5KGh5cG90aGVzZXMsIGRpc2NoYXJnZUh5cG90aGVzaXMsIGNvbnRleHQsIChoeXBvdGhlc2VzRGlzY2hhcmdlZCkgPT4ge1xuICAgICAgaWYgKGh5cG90aGVzZXNEaXNjaGFyZ2VkKSB7XG4gICAgICAgIGNvbnRleHQudHJhY2UoYC4uLmRpc2NoYXJnZWQgdGhlICcke2NsYWltU3RyaW5nfScgY2xhaW0ncyBoeXBvdGhlc2VzLmApO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gY29udGludWF0aW9uKGh5cG90aGVzZXNEaXNjaGFyZ2VkLCBjb250ZXh0KTtcbiAgICB9KTtcbiAgfVxuXG4gIHVuaWZ5U3RlcFdpdGhEZWR1Y3Rpb24oc3RlcCwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IHN0ZXBTdHJpbmcgPSBzdGVwLmdldFN0cmluZygpLFxuICAgICAgICAgIGNsYWltU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKSxcbiAgICAgICAgICBkZWR1Y3Rpb25TdHJpbmcgPSB0aGlzLmRlZHVjdGlvbi5nZXRTdHJpbmcoKTtcblxuICAgIGNvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHtzdGVwU3RyaW5nfScgc3RlcCB3aXRoIHRoZSAnJHtjbGFpbVN0cmluZ30nIGNsYWltJ3MgJyR7ZGVkdWN0aW9uU3RyaW5nfScgZGVkdWN0aW9uLi4uYCk7XG5cbiAgICByZXR1cm4gdGhpcy5kZWR1Y3Rpb24udW5pZnlTdGVwKHN0ZXAsIGNvbnRleHQsIChjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi51bmlmaWVkIHRoZSAnJHtzdGVwU3RyaW5nfScgc3RlcCB3aXRoIHRoZSAnJHtjbGFpbVN0cmluZ30nIGNsYWltJ3MgJyR7ZGVkdWN0aW9uU3RyaW5nfScgZGVkdWN0aW9uLmApO1xuXG4gICAgICByZXR1cm4gZm9yd2FyZChjb250ZXh0LCBiYWNrKTtcbiAgICB9LCBiYWNrKTtcbiAgfVxuXG4gIHVuaWZ5RmFjdE9yU3VicHJvb2ZzV2l0aFN1cHBvc2l0aW9uKGZhY3RPclN1YnByb29mcywgc3VwcG9zaXRpb24sIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICByZXR1cm4gZXh0cmFjdChmYWN0T3JTdWJwcm9vZnMsXG4gICAgICAoZmFjdE9yU3VicHJvb2YsIGZvcndhcmQsIGJhY2spID0+IHtcbiAgICAgICAgcmV0dXJuIHN1cHBvc2l0aW9uLnVuaWZ5RmFjdE9yU3VicHJvb2YoZmFjdE9yU3VicHJvb2YsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spO1xuICAgICAgfSwgKGZhY3RPclN1YnByb29mcywgZmFjdE9yU3VicHJvb2YsIGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgICAgcmV0dXJuIGNvbnRleHQuc29sdmVJbmZlcnJlZFN1YnN0aXR1dGlvbnMoKGJhY2spID0+IHtcbiAgICAgICAgICByZXR1cm4gZm9yd2FyZChmYWN0T3JTdWJwcm9vZnMsIGNvbnRleHQsIGJhY2spO1xuICAgICAgICB9LCBiYWNrKTtcbiAgICAgIH0sIChleGNlcHRpb24pID0+IHtcbiAgICAgICAgaWYoZXhjZXB0aW9uKSB7XG4gICAgICAgICAgcmV0dXJuIGJhY2soZXhjZXB0aW9uKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBzdXBwb3NpdGlvbi51bmlmeUluZGVwZW5kZW50bHkoY29udGV4dCwgKGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgICAgICByZXR1cm4gZm9yd2FyZChmYWN0T3JTdWJwcm9vZnMsIGNvbnRleHQsIGJhY2spO1xuICAgICAgICB9LCBiYWNrKTtcbiAgICAgIH1cbiAgICApO1xuICB9XG5cbiAgdW5pZnlGYWN0T3JTdWJwcm9vZnNXaXRoU3VwcG9zaXRpb25zKGZhY3RPclN1YnByb29mcywgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGZhY3RPclN1YnByb29mcyA9IHJldmVyc2UoZmFjdE9yU3VicHJvb2ZzKTsgLy8vXG5cbiAgICByZXR1cm4gYmFja3dhcmRzRXZlcnkodGhpcy5zdXBwb3NpdGlvbnMsIChzdXBwb3NpdGlvbiwgZmFjdE9yU3VicHJvb2ZzLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy51bmlmeUZhY3RPclN1YnByb29mc1dpdGhTdXBwb3NpdGlvbihmYWN0T3JTdWJwcm9vZnMsIHN1cHBvc2l0aW9uLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKTtcbiAgICB9LCBmYWN0T3JTdWJwcm9vZnMsIGNvbnRleHQsIChmYWN0T3JTdWJwcm9vZnMsIGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIHJldHVybiBmb3J3YXJkKGNvbnRleHQsIGJhY2spO1xuICAgIH0sIGJhY2spO1xuICB9XG5cbiAgdG9KU09OKCkge1xuICAgIGNvbnN0IGxhYmVsc0pTT04gPSBsYWJlbHNUb0xhYmVsc0pTT04odGhpcy5sYWJlbHMpLFxuICAgICAgICAgIGRlZHVjdGlvbkpTT04gPSBkZWR1Y3Rpb25Ub0RlZHVjdGlvbkpTT04odGhpcy5kZWR1Y3Rpb24pLFxuICAgICAgICAgIHN1cHBvc2l0aW9uc0pTT04gPSBzdXBwb3NpdGlvbnNUb1N1cHBvc2l0aW9uc0pTT04odGhpcy5zdXBwb3NpdGlvbnMpLFxuICAgICAgICAgIHNpZ25hdHVyZUpTT04gPSBzaWduYXR1cmVUb1NpZ25hdHVyZUpTT04odGhpcy5zaWduYXR1cmUpLFxuICAgICAgICAgIGh5cG90aGVzZXNKU09OID0gaHlwb3RoZXNlc1RvSHlwb3RoZXNlc0pTT04odGhpcy5oeXBvdGhlc2VzKSxcbiAgICAgICAgICBzdHJpbmcgPSB0aGlzLmdldFN0cmluZygpO1xuXG4gICAgbGV0IGJyZWFrUG9pbnQ7XG5cbiAgICBicmVha1BvaW50ID0gdGhpcy5nZXRCcmVha1BvaW50KCk7XG5cbiAgICBjb25zdCBicmVha1BvaW50SlNPTiA9IGJyZWFrUG9pbnRUb0JyZWFrUG9pbnRKU09OKGJyZWFrUG9pbnQpO1xuXG4gICAgYnJlYWtQb2ludCA9IGJyZWFrUG9pbnRKU09OOyAgLy8vXG5cbiAgICBjb25zdCBsYWJlbHMgPSBsYWJlbHNKU09OLCAgLy8vXG4gICAgICAgICAgZGVkdWN0aW9uID0gZGVkdWN0aW9uSlNPTiwgIC8vL1xuICAgICAgICAgIHN1cHBvc2l0aW9ucyA9IHN1cHBvc2l0aW9uc0pTT04sICAvLy9cbiAgICAgICAgICBzaWduYXR1cmUgPSBzaWduYXR1cmVKU09OLCAgLy8vXG4gICAgICAgICAgaHlwb3RoZXNlcyA9IGh5cG90aGVzZXNKU09OLCAgLy8vXG4gICAgICAgICAganNvbiA9IHtcbiAgICAgICAgICAgIHN0cmluZyxcbiAgICAgICAgICAgIGJyZWFrUG9pbnQsXG4gICAgICAgICAgICBsYWJlbHMsXG4gICAgICAgICAgICBkZWR1Y3Rpb24sXG4gICAgICAgICAgICBzdXBwb3NpdGlvbnMsXG4gICAgICAgICAgICBzaWduYXR1cmUsXG4gICAgICAgICAgICBoeXBvdGhlc2VzXG4gICAgICAgICAgfTtcblxuICAgIHJldHVybiBqc29uO1xuICB9XG5cbiAgc3RhdGljIGZyb21KU09OKENsYXNzLCBqc29uLCBjb250ZXh0KSB7XG4gICAgY29uc3QgbGFiZWxzID0gbGFiZWxzRnJvbUpTT04oanNvbiwgY29udGV4dCksXG4gICAgICAgICAgZGVkdWN0aW9uID0gZGVkdWN0aW9uRnJvbUpTT04oanNvbiwgY29udGV4dCksXG4gICAgICAgICAgc3VwcG9zaXRpb25zID0gc3VwcG9zaXRpb25zRnJvbUpTT04oanNvbiwgY29udGV4dCksXG4gICAgICAgICAgc2lnbmF0dXJlID0gc2lnbmF0dXJlRnJvbUpTT04oanNvbiwgY29udGV4dCksXG4gICAgICAgICAgaHlwb3RoZXNlcyA9IGh5cG90aGVzZXNGcm9tSlNPTihqc29uLCBjb250ZXh0KSxcbiAgICAgICAgICBjbGFpbVN0cmluZyA9IGNsYWltU3RyaW5nRnJvbUxhYmVsc1NpZ25hdHVyZVN1cHBvc2l0aW9uc0FuZERlZHVjdGlvbihsYWJlbHMsIHNpZ25hdHVyZSwgc3VwcG9zaXRpb25zLCBkZWR1Y3Rpb24pLFxuICAgICAgICAgIHN0cmluZyA9IGNsYWltU3RyaW5nLCAvLy9cbiAgICAgICAgICBub2RlID0gbnVsbCxcbiAgICAgICAgICBicmVha1BvaW50ID0gYnJlYWtQb2ludEZyb21KU09OKGpzb24pLFxuICAgICAgICAgIHByb29mID0gbnVsbCxcbiAgICAgICAgICBjbGFpbSA9IG5ldyBDbGFzcyhjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIGxhYmVscywgc3VwcG9zaXRpb25zLCBkZWR1Y3Rpb24sIHByb29mLCBzaWduYXR1cmUsIGh5cG90aGVzZXMpO1xuXG4gICAgcmV0dXJuIGNsYWltO1xuICB9XG59XG4iXSwibmFtZXMiOlsiQ2xhaW0iLCJyZXZlcnNlIiwiYXJyYXlVdGlsaXRpZXMiLCJldmVyeSIsImV4dHJhY3QiLCJmb3J3YXJkc0V2ZXJ5IiwiYmFja3dhcmRzRXZlcnkiLCJjb250aW51YXRpb25VdGlsaXRpZXMiLCJicmVha2FibGUiLCJicmVha1BvaW50RnJvbUpTT04iLCJicmVha1BvaW50VG9CcmVha1BvaW50SlNPTiIsImJyZWFrUG9pbnRVdGlsaXRpZXMiLCJFbGVtZW50IiwiY29udGV4dCIsInN0cmluZyIsIm5vZGUiLCJicmVha1BvaW50IiwibGFiZWxzIiwic3VwcG9zaXRpb25zIiwiZGVkdWN0aW9uIiwicHJvb2YiLCJzaWduYXR1cmUiLCJoeXBvdGhlc2VzIiwiZ2V0TGFiZWxzIiwiZ2V0U3VwcG9zaXRpb25zIiwiZ2V0RGVkdWN0aW9uIiwiZ2V0UHJvb2YiLCJnZXRTaWduYXR1cmUiLCJnZXRIeXBvdGhlc2VzIiwic2V0SHlwb3RoZXNlcyIsImdldFN1cHBvc2l0aW9uIiwiaW5kZXgiLCJzdXBwb3NpdGlvbiIsImlzU2F0aXNmaWFibGUiLCJzYXRpc2ZpYWJsZSIsImlzSHlwb3RoZXRpY2FsIiwiaHlwb3RoZXNlc0xlbmd0aCIsImxlbmd0aCIsImh5cG90aGV0aWNhbCIsIm1hdGNoTWV0YXZhcmlhYmxlTm9kZSIsIm1ldGF2YXJpYWJsZU5vZGUiLCJtZXRhdmFyaWFibGVOb2RlTWF0Y2hlcyIsInNvbWUiLCJsYWJlbCIsInVuaWZ5U3RlcEFuZEZhY3RPclN1YnByb29mcyIsInN0ZXAiLCJmYWN0T3JTdWJwcm9vZnMiLCJmb3J3YXJkIiwiYmFjayIsInNwZWNpZmljQ29udGV4dCIsInJlY29uY2lsZSIsInVuaWZ5U3RlcFdpdGhEZWR1Y3Rpb24iLCJ1bmlmeUZhY3RPclN1YnByb29mc1dpdGhTdXBwb3NpdGlvbnMiLCJjb21wbGV4U3Vic3RpdHV0aW9uc1Vuc29sdmVkIiwiYXJlQ29tcGxleFN1YnN0aXR1dGlvbnNVbnNvbHZlZCIsImRlYnVnIiwidmVyaWZ5TGFiZWxzIiwiY2xhaW1TdHJpbmciLCJnZXRTdHJpbmciLCJ0cmFjZSIsInZlcmlmeUxhYmVsIiwiYmluZCIsImxhYmVsU3RyaW5nIiwidmVyaWZ5IiwidmVyaWZ5UHJvb2YiLCJzdGF0ZW1lbnQiLCJnZXRTdGF0ZW1lbnQiLCJ2ZXJpZnlEZWR1Y3Rpb24iLCJkZWR1Y3Rpb25TdHJpbmciLCJ2ZXJpZnlTdXBwb3NpdGlvbiIsInN1cHBvc2l0aW9uU3RyaW5nIiwidmVyaWZ5U3VwcG9zaXRpb25zIiwic3VwcG9zaXRpb25zTGVuZ3RoIiwiXyIsImZhY3RPclN1YnByb29mIiwiYWRkRmFjdE9yU3VicHJvb2YiLCJhc3NpZ25Bc3NpZ25tZW50cyIsImRpc2NoYXJnZUh5cG90aGVzaXMiLCJoeXBvdGhlc2lzIiwiaHlwb3RoZXNpc1N0cmluZyIsImRpc2NoYXJnZSIsImh5cG90aGVzaXNEaXNjaGFyZ2VzIiwiY29udGludWF0aW9uIiwiZGlzY2hhcmdlSHlwb3RoZXNlcyIsImh5cG90aGVzZXNEaXNjaGFyZ2VkIiwic3RlcFN0cmluZyIsInVuaWZ5U3RlcCIsInVuaWZ5RmFjdE9yU3VicHJvb2ZzV2l0aFN1cHBvc2l0aW9uIiwidW5pZnlGYWN0T3JTdWJwcm9vZiIsInNvbHZlSW5mZXJyZWRTdWJzdGl0dXRpb25zIiwiZXhjZXB0aW9uIiwidW5pZnlJbmRlcGVuZGVudGx5IiwidG9KU09OIiwibGFiZWxzSlNPTiIsImxhYmVsc1RvTGFiZWxzSlNPTiIsImRlZHVjdGlvbkpTT04iLCJkZWR1Y3Rpb25Ub0RlZHVjdGlvbkpTT04iLCJzdXBwb3NpdGlvbnNKU09OIiwic3VwcG9zaXRpb25zVG9TdXBwb3NpdGlvbnNKU09OIiwic2lnbmF0dXJlSlNPTiIsInNpZ25hdHVyZVRvU2lnbmF0dXJlSlNPTiIsImh5cG90aGVzZXNKU09OIiwiaHlwb3RoZXNlc1RvSHlwb3RoZXNlc0pTT04iLCJnZXRCcmVha1BvaW50IiwiYnJlYWtQb2ludEpTT04iLCJqc29uIiwiZnJvbUpTT04iLCJDbGFzcyIsImxhYmVsc0Zyb21KU09OIiwiZGVkdWN0aW9uRnJvbUpTT04iLCJzdXBwb3NpdGlvbnNGcm9tSlNPTiIsInNpZ25hdHVyZUZyb21KU09OIiwiaHlwb3RoZXNlc0Zyb21KU09OIiwiY2xhaW1TdHJpbmdGcm9tTGFiZWxzU2lnbmF0dXJlU3VwcG9zaXRpb25zQW5kRGVkdWN0aW9uIiwiY2xhaW0iXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQXNCQTs7O2VBQXFCQTs7OzJCQXBCVTtnQ0FDcUM7eUJBRTFDO3dCQUM2QztzQkFVeEI7QUFFL0MsTUFBTSxFQUFFQyxPQUFPLEVB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
|
|
@@ -16,7 +16,8 @@ const _brackets = require("../utilities/brackets");
|
|
|
16
16
|
const _element = require("../utilities/element");
|
|
17
17
|
const _string = require("../utilities/string");
|
|
18
18
|
const _context = require("../utilities/context");
|
|
19
|
-
const
|
|
19
|
+
const _state = require("../utilities/state");
|
|
20
|
+
const { unbreakable } = _occamlanguages.breakPointUtilities, { cut, all, some, isolate } = _occamlanguages.continuationUtilities;
|
|
20
21
|
const _default = (0, _elements.define)(class Constraint extends _occamlanguages.Element {
|
|
21
22
|
constructor(context, string, node, breakPoint, reference, statement){
|
|
22
23
|
super(context, string, node, breakPoint);
|
|
@@ -48,8 +49,18 @@ const _default = (0, _elements.define)(class Constraint extends _occamlanguages.
|
|
|
48
49
|
const constraintNode = this.getConstraintNode(), constraint = context.findConstraintByConstraintNode(constraintNode);
|
|
49
50
|
return constraint;
|
|
50
51
|
}
|
|
51
|
-
|
|
52
|
+
verify = unbreakable(function(context, forward, back) {
|
|
52
53
|
forward = cut(forward, back); ///
|
|
54
|
+
const referenceString = this.getString(); ///
|
|
55
|
+
context.trace(`Verifying the '${referenceString}' reference...`);
|
|
56
|
+
return (0, _state.declare)((state)=>{
|
|
57
|
+
return this.validate(state, context, (reference, context, back)=>{
|
|
58
|
+
context.debug(`...verified the '${referenceString}' reference.`);
|
|
59
|
+
return forward(context, back);
|
|
60
|
+
}, back);
|
|
61
|
+
});
|
|
62
|
+
});
|
|
63
|
+
validate(state, context, forward, back) {
|
|
53
64
|
let constraint;
|
|
54
65
|
const constraintString = this.getString(); ///
|
|
55
66
|
context.trace(`Validating the '${constraintString}' constraint...`);
|
|
@@ -255,4 +266,4 @@ function statementFromConstraintNode(constraintNode, context) {
|
|
|
255
266
|
return statement;
|
|
256
267
|
}
|
|
257
268
|
|
|
258
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbGVtZW50L2NvbnN0cmFpbnQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IEVsZW1lbnQsIGJyZWFrUG9pbnRVdGlsaXRpZXMsIGNvbnRpbnVhdGlvblV0aWxpdGllcyB9IGZyb20gXCJvY2NhbS1sYW5ndWFnZXNcIjtcblxuaW1wb3J0IHsgZGVmaW5lIH0gZnJvbSBcIi4uL2VsZW1lbnRzXCI7XG5pbXBvcnQgeyB1bmlmeVN0YXRlbWVudCB9IGZyb20gXCIuLi9wcm9jZXNzL3VuaWZ5XCI7XG5pbXBvcnQgeyBpbnN0YW50aWF0ZUNvbnN0cmFpbnQgfSBmcm9tIFwiLi4vcHJvY2Vzcy9pbnN0YW50aWF0ZVwiO1xuaW1wb3J0IHsgc3RyaXBCcmFja2V0c0Zyb21TdGF0ZW1lbnQgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2JyYWNrZXRzXCI7XG5pbXBvcnQgeyBjb25zdHJhaW50RnJvbUNvbnN0cmFpbnROb2RlIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9lbGVtZW50XCI7XG5pbXBvcnQgeyBjb25zdHJhaW50U3RyaW5nRnJvbVJlZmVyZW5jZUFuZFN0YXRlbWVudCB9IGZyb20gXCIuLi91dGlsaXRpZXMvc3RyaW5nXCI7XG5pbXBvcnQgeyBqb2luLCBhYmxhdGUsIGF0dGVtcHQsIHJlY29uY2lsZSwgc2VyaWFsaXNlLCB1bnNlcmlhbGlzZSwgaW5zdGFudGlhdGUgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2NvbnRleHRcIjtcblxuY29uc3QgeyBjdXQsIGFsbCwgc29tZSwgaXNvbGF0ZSB9ID0gY29udGludWF0aW9uVXRpbGl0aWVzLFxuICAgICAgeyBicmVha1BvaW50RnJvbUpTT04sIGJyZWFrUG9pbnRUb0JyZWFrUG9pbnRKU09OIH0gPSBicmVha1BvaW50VXRpbGl0aWVzO1xuXG5leHBvcnQgZGVmYXVsdCBkZWZpbmUoY2xhc3MgQ29uc3RyYWludCBleHRlbmRzIEVsZW1lbnQge1xuICBjb25zdHJ1Y3Rvcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIHJlZmVyZW5jZSwgc3RhdGVtZW50KSB7XG4gICAgc3VwZXIoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50KTtcblxuICAgIHRoaXMucmVmZXJlbmNlID0gcmVmZXJlbmNlO1xuICAgIHRoaXMuc3RhdGVtZW50ID0gc3RhdGVtZW50O1xuICB9XG5cbiAgZ2V0UmVmZXJlbmNlKCkge1xuICAgIHJldHVybiB0aGlzLnJlZmVyZW5jZTtcbiAgfVxuXG4gIGdldFN0YXRlbWVudCgpIHtcbiAgICByZXR1cm4gdGhpcy5zdGF0ZW1lbnQ7XG4gIH1cblxuICBnZXRDb25zdHJhaW50Tm9kZSgpIHtcbiAgICBjb25zdCBub2RlID0gdGhpcy5nZXROb2RlKCksXG4gICAgICAgICAgY29uc3RyYWludE5vZGUgPSBub2RlOyAgLy8vXG5cbiAgICByZXR1cm4gY29uc3RyYWludE5vZGU7XG4gIH1cblxuICBnZXRNZXRhdmFyaWFibGUoKSB7IHJldHVybiB0aGlzLnJlZmVyZW5jZS5nZXRNZXRhdmFyaWFibGUoKTsgfVxuXG4gIGlzRXF1YWxUbyhjb25zdHJhaW50KSB7XG4gICAgY29uc3QgY29uc3RyYWludE5vZGUgPSBjb25zdHJhaW50LmdldE5vZGUoKSxcbiAgICAgICAgICBjb25zdHJhaW50Tm9kZU1hdGNoZXMgPSB0aGlzLm1hdGNoQ29uc3RyYWludE5vZGUoY29uc3RyYWludE5vZGUpLFxuICAgICAgICAgIGVxdWFsVG8gPSBjb25zdHJhaW50Tm9kZU1hdGNoZXM7ICAvLy9cblxuICAgIHJldHVybiBlcXVhbFRvO1xuICB9XG5cbiAgbWF0Y2hDb25zdHJhaW50Tm9kZShjb25zdHJhaW50Tm9kZSkge1xuICAgIGNvbnN0IG5vZGUgPSBjb25zdHJhaW50Tm9kZSwgLy8vXG4gICAgICAgICAgbm9kZU1hdGNoZXMgPSB0aGlzLm1hdGNoTm9kZShub2RlKSxcbiAgICAgICAgICBjb25zdHJhaW50Tm9kZU1hdGNoZXMgPSBub2RlTWF0Y2hlczsgLy8vXG5cbiAgICByZXR1cm4gY29uc3RyYWludE5vZGVNYXRjaGVzO1xuICB9XG5cbiAgZmluZENvbnN0cmFpbnQoY29udGV4dCkge1xuICAgIGNvbnN0IGNvbnN0cmFpbnROb2RlID0gdGhpcy5nZXRDb25zdHJhaW50Tm9kZSgpLFxuICAgICAgICAgIGNvbnN0cmFpbnQgPSBjb250ZXh0LmZpbmRDb25zdHJhaW50QnlDb25zdHJhaW50Tm9kZShjb25zdHJhaW50Tm9kZSk7XG5cbiAgICByZXR1cm4gY29uc3RyYWludDtcbiAgfVxuXG4gIHZhbGlkYXRlKHN0YXRlLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgZm9yd2FyZCA9IGN1dChmb3J3YXJkLCBiYWNrKTsgLy8vXG5cbiAgICBsZXQgY29uc3RyYWludDtcblxuICAgIGNvbnN0IGNvbnN0cmFpbnRTdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtjb25zdHJhaW50U3RyaW5nfScgY29uc3RyYWludC4uLmApO1xuXG4gICAgY29uc3RyYWludCA9IHRoaXMuZmluZENvbnN0cmFpbnQoY29udGV4dCk7XG5cbiAgICBpZiAoY29uc3RyYWludCAhPT0gbnVsbCkge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgVGhlICcke2NvbnN0cmFpbnRTdHJpbmd9JyBjb25zdHJhaW50IGlzIGFscmVhZHkgcHJlc2VudC5gKTtcblxuICAgICAgcmV0dXJuIGZvcndhcmQoY29uc3RyYWludCwgY29udGV4dCwgYmFjayk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGlzb2xhdGUoKHN0YXRlLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSA9PiB7XG4gICAgICBjb25zdHJhaW50ID0gdGhpczsgIC8vL1xuXG4gICAgICBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCk7XG5cbiAgICAgIHJldHVybiBhdHRlbXB0KChjb250ZXh0KSA9PiB7XG4gICAgICAgIGNvbnN0IHZhbGlkYXRlU3RhdGVtZW50ID0gdGhpcy52YWxpZGF0ZVN0YXRlbWVudC5iaW5kKHRoaXMpLFxuICAgICAgICAgICAgICB2YWxpZGF0ZVJlZmVyZW5jZSA9IHRoaXMudmFsaWRhdGVSZWZlcmVuY2UuYmluZCh0aGlzKTtcblxuICAgICAgICByZXR1cm4gYWxsKFtcbiAgICAgICAgICB2YWxpZGF0ZVN0YXRlbWVudCxcbiAgICAgICAgICB2YWxpZGF0ZVJlZmVyZW5jZVxuICAgICAgICBdLCBzdGF0ZSwgY29udGV4dCwgKHN0YXRlLCBjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICAgICAgdGhpcy5jb21taXQoY29udGV4dCk7XG5cbiAgICAgICAgICByZXR1cm4gZm9yd2FyZChiYWNrKTtcbiAgICAgICAgfSwgYmFjayk7XG4gICAgICB9LCBjb250ZXh0KTtcbiAgICB9LCBzdGF0ZSwgY29udGV4dCwgKHN0YXRlLCBjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICBjb250ZXh0LmFkZENvbnN0cmFpbnQoY29uc3RyYWludCk7XG5cbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7Y29uc3RyYWludFN0cmluZ30nIGNvbnN0cmFpbnQuYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKGNvbnN0cmFpbnQsIGNvbnRleHQsIGJhY2spO1xuICAgIH0sIGJhY2spO1xuICB9XG5cbiAgdmFsaWRhdGVSZWZlcmVuY2Uoc3RhdGUsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBsZXQgcmVmZXJlbmNlVmFsaWRhdGVzO1xuXG4gICAgY29uc3QgY29uc3RyYWludFN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke2NvbnN0cmFpbnRTdHJpbmd9JyBjb25zdHJhaW50J3MgcmVmZXJlbmNlLi4uYCk7XG5cbiAgICByZWZlcmVuY2VWYWxpZGF0ZXMgPSB0aGlzLnJlZmVyZW5jZS52YWxpZGF0ZShzdGF0ZSwgY29udGV4dCwgKHJlZmVyZW5jZSwgY29udGV4dCkgPT4ge1xuICAgICAgbGV0IHZhbGlkYXRlcztcblxuICAgICAgdGhpcy5yZWZlcmVuY2UgPSByZWZlcmVuY2U7XG5cbiAgICAgIHZhbGlkYXRlcyA9IGNvbnRpbnVhdGlvbihzdGF0ZSwgY29udGV4dCk7XG5cbiAgICAgIHJldHVybiB2YWxpZGF0ZXM7XG4gICAgfSk7XG5cbiAgICBpZiAocmVmZXJlbmNlVmFsaWRhdGVzKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke2NvbnN0cmFpbnRTdHJpbmd9JyBjb25zdHJhaW50J3MgcmVmZXJlbmNlLmApO1xuICAgIH1cblxuICAgIHJldHVybiByZWZlcmVuY2VWYWxpZGF0ZXM7XG4gIH1cblxuICB2YWxpZGF0ZVN0YXRlbWVudChzdGF0ZSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGxldCBzdGF0ZW1lbnRWYWxpZGF0ZXM7XG5cbiAgICBjb25zdCBjb25zdHJhaW50U3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7Y29uc3RyYWludFN0cmluZ30nIGNvbnN0cmFpbnQncyBzdGF0ZW1lbnQuLi5gKTtcblxuICAgIHN0YXRlbWVudFZhbGlkYXRlcyA9IHRoaXMuc3RhdGVtZW50LnZhbGlkYXRlKHN0YXRlLCBjb250ZXh0LCAoc3RhdGVtZW50LCBjb250ZXh0KSA9PiB7XG4gICAgICBsZXQgdmFsaWRhdGVzO1xuXG4gICAgICB0aGlzLnN0YXRlbWVudCA9IHN0YXRlbWVudDtcblxuICAgICAgdmFsaWRhdGVzID0gY29udGludWF0aW9uKHN0YXRlLCBjb250ZXh0KTtcblxuICAgICAgcmV0dXJuIHZhbGlkYXRlcztcbiAgICB9KTtcblxuICAgIGlmIChzdGF0ZW1lbnRWYWxpZGF0ZXMpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7Y29uc3RyYWludFN0cmluZ30nIGNvbnN0cmFpbnQncyBzdGF0ZW1lbnQuYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHN0YXRlbWVudFZhbGlkYXRlcztcbiAgfVxuXG4gIHVuaWZ5UmVmZXJlbmNlKHJlZmVyZW5jZSwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IGNvbnRleHQgPSBzcGVjaWZpY0NvbnRleHQsICAvLy9cbiAgICAgICAgICByZWZlcmVuY2VTdHJpbmcgPSByZWZlcmVuY2UuZ2V0U3RyaW5nKCksXG4gICAgICAgICAgY29uc3RyYWludFN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7IC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVW5pZnlpbmcgdGhlICcke3JlZmVyZW5jZVN0cmluZ30nIHJlZmVyZW5jZSB3aXRoIHRoZSAnJHtjb25zdHJhaW50U3RyaW5nfScgY29uc3RyYWludCdzIG1ldGF2YXJhaWFibGUuLi5gKTtcblxuICAgIGNvbnN0IG1ldGF2YXJpYWJsZSA9IHRoaXMuZ2V0TWV0YXZhcmlhYmxlKCk7XG5cbiAgICByZXR1cm4gbWV0YXZhcmlhYmxlLnVuaWZ5UmVmZXJlbmNlKHJlZmVyZW5jZSwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgKHJlZmVyZW5jZVVuaWZpZXMpID0+IHtcbiAgICAgIGlmIChyZWZlcmVuY2VVbmlmaWVzKSB7XG4gICAgICAgIGNvbnRleHQuZGVidWcoYC4udW5pZmllZCB0aGUgJyR7cmVmZXJlbmNlU3RyaW5nfScgd2l0aCB0aGUgJyR7Y29uc3RyYWludFN0cmluZ30nIGNvbnN0cmFpbnQncyBtZXRhdmFyaWFibGUuYCk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBjb250aW51YXRpb24ocmVmZXJlbmNlVW5pZmllcyk7XG4gICAgfSk7XG4gIH1cblxuICB1bmlmeVN0YXRlbWVudChzdGF0ZW1lbnQsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBjb250ZXh0ID0gc3BlY2lmaWNDb250ZXh0LCAgLy8vXG4gICAgICAgICAgc3RhdGVtZW50U3RyaW5nID0gc3RhdGVtZW50LmdldFN0cmluZygpLFxuICAgICAgICAgIGNvbnN0cmFpbnRTdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHtzdGF0ZW1lbnRTdHJpbmd9JyBzdGF0ZW1lbnQgd2l0aCB0aGUgJyR7Y29uc3RyYWludFN0cmluZ30nIGNvbnN0cmFpbnQncyBzdGF0ZW1lbnQuLi5gKTtcblxuICAgIGxldCBzcGVjaWZpY1N0YXRlbWVudDtcblxuICAgIHNwZWNpZmljU3RhdGVtZW50ID0gc3RhdGVtZW50OyAgLy8vXG5cbiAgICBzcGVjaWZpY1N0YXRlbWVudCA9IHN0cmlwQnJhY2tldHNGcm9tU3RhdGVtZW50KHNwZWNpZmljU3RhdGVtZW50LCBjb250ZXh0KTsgIC8vL1xuXG4gICAgY29uc3QgZ2VuZXJhbFN0YXRlbWVudCA9IHRoaXMuc3RhdGVtZW50OyAgLy8vXG5cbiAgICByZXR1cm4gdW5pZnlTdGF0ZW1lbnQoZ2VuZXJhbFN0YXRlbWVudCwgc3BlY2lmaWNTdGF0ZW1lbnQsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIChzdGF0ZW1lbnRVbmlmaWVzKSA9PiB7XG4gICAgICBpZiAoc3RhdGVtZW50VW5pZmllcykge1xuICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi51bmlmaWVkIHRoZSAnJHtzdGF0ZW1lbnRTdHJpbmd9JyBzdGF0ZW1lbnQgd2l0aCB0aGUgJyR7Y29uc3RyYWludFN0cmluZ30nIGNvbnN0cmFpbnQncyBzdGF0ZW1lbnQuYCk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBjb250aW51YXRpb24oc3RhdGVtZW50VW5pZmllcyk7XG4gICAgfSk7XG4gIH1cblxuICB1bmlmeUFzc3VtcHRpb24oYXNzdW1wdGlvbiwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IGNvbnN0cmFpbnRTdHJpbmcgPSB0aGlzLmdldFN0cmluZygpLCAgLy8vXG4gICAgICAgICAgYXNzdW1wdGlvblN0cmluZyA9IGFzc3VtcHRpb24uZ2V0U3RyaW5nKCkgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVW5pZnlpbmcgdGhlICcke2Fzc3VtcHRpb25TdHJpbmd9JyBhc3N1bXB0aW9uIHdpdGggdGhlICcke2NvbnN0cmFpbnRTdHJpbmd9JyBjb25zdHJhaW50Li4uYCk7XG5cbiAgICBjb25zdCBjb25zdHJhaW50Q29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpLCAvLy9cbiAgICAgICAgICBnZW5lcmFsQ29udGV4dCA9IGNvbnN0cmFpbnRDb250ZXh0OyAvLy9cblxuICAgIHJldHVybiByZWNvbmNpbGUoKGNvbnRleHQpID0+IHtcbiAgICAgIGNvbnN0IHJlZmVyZW5jZSA9IGFzc3VtcHRpb24uZ2V0UmVmZXJlbmNlKCksXG4gICAgICAgICAgICBzcGVjaWZpY0NvbnRleHQgPSBjb250ZXh0OyAgLy8vXG5cbiAgICAgIHJldHVybiB0aGlzLnVuaWZ5UmVmZXJlbmNlKHJlZmVyZW5jZSwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgKHJlZmVyZW5jZVVuaWZpZXMpID0+IHtcbiAgICAgICAgaWYgKCFyZWZlcmVuY2VVbmlmaWVzKSB7XG4gICAgICAgICAgY29uc3QgYXNzdW1wdGlvblVuaWZpZXMgPSBmYWxzZTtcblxuICAgICAgICAgIHJldHVybiBjb250aW51YXRpb24oYXNzdW1wdGlvblVuaWZpZXMpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgc3RhdGVtZW50ID0gYXNzdW1wdGlvbi5nZXRTdGF0ZW1lbnQoKTtcblxuICAgICAgICByZXR1cm4gdGhpcy51bmlmeVN0YXRlbWVudChzdGF0ZW1lbnQsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIChzdGF0ZW1lbnRVbmlmaWVzKSA9PiB7XG4gICAgICAgICAgbGV0IGFzc3VtcHRpb25VbmlmaWVzID0gZmFsc2U7XG5cbiAgICAgICAgICBpZiAoc3RhdGVtZW50VW5pZmllcykge1xuICAgICAgICAgICAgY29udGV4dC5jb21taXQoKTtcblxuICAgICAgICAgICAgYXNzdW1wdGlvblVuaWZpZXMgPSB0cnVlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChhc3N1bXB0aW9uVW5pZmllcykge1xuICAgICAgICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udW5pZmllZCB0aGUgJyR7YXNzdW1wdGlvblN0cmluZ30nIGFzc3VtcHRpb24gd2l0aCB0aGUgJyR7Y29uc3RyYWludFN0cmluZ30nIGNvbnN0cmFpbnQuLi5gKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gY29udGludWF0aW9uKGFzc3VtcHRpb25VbmlmaWVzKTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9LCBjb250ZXh0KTtcbiAgfVxuXG4gIHVuaWZ5QXNzdW1wdGlvbnMoYXNzdW1wdGlvbnMsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBjb25zdHJhaW50U3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTtcblxuICAgIGNvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSBhc3N1bXB0aW9ucyB3aXRoIHRoZSAnJHtjb25zdHJhaW50U3RyaW5nfScgY29uc3RyYWludC4uLmApO1xuXG4gICAgc29tZShhc3N1bXB0aW9ucywgKGFzc3VtcHRpb24sIGZvcndhcmQsIGJhY2spID0+IHtcbiAgICAgIHRoaXMudW5pZnlBc3N1bXB0aW9uKGFzc3VtcHRpb24sIGNvbnRleHQsIGZvcndhcmQsIGJhY2spO1xuICAgIH0sIChhc3N1bXB0aW9uc1VuaWZ5KSA9PiB7XG4gICAgICBpZiAoYXNzdW1wdGlvbnNVbmlmeSkge1xuICAgICAgICBjb250ZXh0LnRyYWNlKGAuLi51bmlmaWVkIHRoZSBhc3N1bXB0aW9ucyB3aXRoIHRoZSAnJHtjb25zdHJhaW50U3RyaW5nfScgY29uc3RyYWludC5gKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbihhc3N1bXB0aW9uc1VuaWZ5KTtcbiAgICB9KTtcbiAgfVxuXG4gIHVuaWZ5SW1wbGljaXRBc3N1bXB0aW9uKGltcGxpY2l0QXNzdW1wdGlvbiwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IGNvbnN0cmFpbnRTdHJpbmcgPSB0aGlzLmdldFN0cmluZygpLCAgLy8vXG4gICAgICAgICAgaW1wbGljaXRBc3N1bXB0aW9uU3RyaW5nID0gaW1wbGljaXRBc3N1bXB0aW9uLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBVbmlmeWluZyB0aGUgJyR7aW1wbGljaXRBc3N1bXB0aW9uU3RyaW5nfScgaW1wbGljaXQgYXNzdW1wdGlvbiB3aXRoIHRoZSAnJHtjb25zdHJhaW50U3RyaW5nfScgY29uc3RyYWludC4uLmApO1xuXG4gICAgY29uc3QgY29uc3RyYWludENvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSwgLy8vXG4gICAgICAgICAgaW1wbGljaXRBc3N1bXB0aW9uQ29udGV4dCA9IGltcGxpY2l0QXNzdW1wdGlvbi5nZXRDb250ZXh0KCksXG4gICAgICAgICAgZ2VuZXJhbENvbnRleHQgPSBjb25zdHJhaW50Q29udGV4dCwgLy8vXG4gICAgICAgICAgc3BlY2lmaWNDb250ZXh0ID0gaW1wbGljaXRBc3N1bXB0aW9uQ29udGV4dDsgIC8vL1xuXG4gICAgcmV0dXJuIGpvaW4oKHNwZWNpZmljQ29udGV4dCkgPT4ge1xuICAgICAgcmV0dXJuIHJlY29uY2lsZSgoc3BlY2lmaWNDb250ZXh0KSA9PiB7XG4gICAgICAgIGNvbnN0IHN0YXRlbWVudCA9IGltcGxpY2l0QXNzdW1wdGlvbi5nZXRTdGF0ZW1lbnQoKTtcblxuICAgICAgICByZXR1cm4gdGhpcy51bmlmeVN0YXRlbWVudChzdGF0ZW1lbnQsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIChzdGF0ZW1lbnRVbmlmaWVzKSA9PiB7XG4gICAgICAgICAgbGV0IGltcGxpY2l0QXNzdW1wdGlvblVuaWZpZXMgPSBmYWxzZTtcblxuICAgICAgICAgIGlmIChzdGF0ZW1lbnRVbmlmaWVzKSB7XG4gICAgICAgICAgICBzcGVjaWZpY0NvbnRleHQuY29tbWl0KGNvbnRleHQpO1xuXG4gICAgICAgICAgICBpbXBsaWNpdEFzc3VtcHRpb25VbmlmaWVzID0gdHJ1ZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoaW1wbGljaXRBc3N1bXB0aW9uVW5pZmllcykge1xuICAgICAgICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udW5pZmllZCB0aGUgJyR7aW1wbGljaXRBc3N1bXB0aW9uU3RyaW5nfScgaW1wbGxpY2l0IGFzc3VtcHRpb24gd2l0aCB0aGUgJyR7Y29uc3RyYWludFN0cmluZ30nIGNvbnN0cmFpbnQuLi5gKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gY29udGludWF0aW9uKGltcGxpY2l0QXNzdW1wdGlvblVuaWZpZXMpO1xuICAgICAgICB9KTtcbiAgICAgIH0sIHNwZWNpZmljQ29udGV4dCk7XG4gICAgfSwgc3BlY2lmaWNDb250ZXh0LCBjb250ZXh0KTtcbiAgfVxuXG4gIHVuaWZ5SW1wbGljaXRBc3N1bXB0aW9ucyhpbXBsaWNpdEFzc3VtcHRpb25zLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3QgY29uc3RyYWludFN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7XG5cbiAgICBjb250ZXh0LnRyYWNlKGBVbmlmeWluZyB0aGUgaW1wbGljaXQgYXNzdW1wdGlvbnMgd2l0aCB0aGUgJyR7Y29uc3RyYWludFN0cmluZ30nIGNvbnN0cmFpbnQuLi5gKTtcblxuICAgIHNvbWUoaW1wbGljaXRBc3N1bXB0aW9ucywgKGltcGxpY2l0QXNzdW1wdGlvbiwgZm9yd2FyZCwgYmFjaykgPT4ge1xuICAgICAgdGhpcy51bmlmeUltcGxpY2l0QXNzdW1wdGlvbihpbXBsaWNpdEFzc3VtcHRpb24sIGNvbnRleHQsIGZvcndhcmQsIGJhY2spO1xuICAgIH0sIChpbXBsaWNpdEFzc3VtcHRpb25zVW5pZnkpID0+IHtcbiAgICAgIGlmIChpbXBsaWNpdEFzc3VtcHRpb25zVW5pZnkpIHtcbiAgICAgICAgY29udGV4dC50cmFjZShgLi4udW5pZmllZCB0aGUgaW1wbGljaXQgYXNzdW1wdGlvbnMgd2l0aCB0aGUgJyR7Y29uc3RyYWludFN0cmluZ30nIGNvbnN0cmFpbnQuYCk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBjb250aW51YXRpb24oaW1wbGljaXRBc3N1bXB0aW9uc1VuaWZ5KTtcbiAgICB9KTtcbiAgfVxuXG4gIHRvSlNPTigpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCk7XG5cbiAgICByZXR1cm4gc2VyaWFsaXNlKChjb250ZXh0KSA9PiB7XG4gICAgICBjb25zdCBzdHJpbmcgPSB0aGlzLmdldFN0cmluZygpO1xuXG4gICAgICBsZXQgYnJlYWtQb2ludDtcblxuICAgICAgYnJlYWtQb2ludCA9IHRoaXMuZ2V0QnJlYWtQb2ludCgpO1xuXG4gICAgICBjb25zdCBicmVha1BvaW50SlNPTiA9IGJyZWFrUG9pbnRUb0JyZWFrUG9pbnRKU09OKGJyZWFrUG9pbnQpO1xuXG4gICAgICBicmVha1BvaW50ID0gYnJlYWtQb2ludEpTT047ICAvLy9cblxuICAgICAgY29uc3QganNvbiA9IHtcbiAgICAgICAgY29udGV4dCxcbiAgICAgICAgc3RyaW5nLFxuICAgICAgICBicmVha1BvaW50XG4gICAgICB9O1xuXG4gICAgICByZXR1cm4ganNvbjtcbiAgICB9LCBjb250ZXh0KTtcbiAgfVxuXG4gIHN0YXRpYyBuYW1lID0gXCJDb25zdHJhaW50XCI7XG5cbiAgc3RhdGljIGZyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgICBsZXQgY29uc3RyYWludDtcblxuICAgIGluc3RhbnRpYXRlKChjb250ZXh0KSA9PiB7XG4gICAgICB1bnNlcmlhbGlzZSgoanNvbiwgY29udGV4dCkgPT4ge1xuICAgICAgICBjb25zdCB7IHN0cmluZyB9ID0ganNvbixcbiAgICAgICAgICAgICAgY29uc3RyYWludE5vZGUgPSBpbnN0YW50aWF0ZUNvbnN0cmFpbnQoc3RyaW5nLCBjb250ZXh0KSxcbiAgICAgICAgICAgICAgbm9kZSA9IGNvbnN0cmFpbnROb2RlLCAgLy8vXG4gICAgICAgICAgICAgIGJyZWFrUG9pbnQgPSBicmVha1BvaW50RnJvbUpTT04oanNvbiksXG4gICAgICAgICAgICAgIHJlZmVyZW5jZSA9IHJlZmVyZW5jZUZyb21Db25zdHJhaW50Tm9kZShjb25zdHJhaW50Tm9kZSwgY29udGV4dCksXG4gICAgICAgICAgICAgIHN0YXRlbWVudCA9IHN0YXRlbWVudEZyb21Db25zdHJhaW50Tm9kZShjb25zdHJhaW50Tm9kZSwgY29udGV4dCk7XG5cbiAgICAgICAgY29uc3RyYWludCA9IG5ldyBDb25zdHJhaW50KGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgcmVmZXJlbmNlLCBzdGF0ZW1lbnQpO1xuICAgICAgfSwganNvbiwgY29udGV4dCk7XG4gICAgfSwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gY29uc3RyYWludDtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tU3RlcChzdGVwLCBjb250ZXh0KSB7XG4gICAgbGV0IGNvbnN0cmFpbnQ7XG5cbiAgICBsZXQgc3RhdGVtZW50O1xuXG4gICAgc3RhdGVtZW50ID0gc3RlcC5nZXRTdGF0ZW1lbnQoKTtcblxuICAgIHN0YXRlbWVudCA9IHN0cmlwQnJhY2tldHNGcm9tU3RhdGVtZW50KHN0YXRlbWVudCwgY29udGV4dCk7IC8vL1xuXG4gICAgY29uc3QgcmVmZXJlbmNlID0gc3RlcC5nZXRSZWZlcmVuY2UoKTtcblxuICAgIGFibGF0ZSgoY29udGV4dCkgPT4ge1xuICAgICAgaW5zdGFudGlhdGUoKGNvbnRleHQpID0+IHtcbiAgICAgICAgY29uc3QgY29uc3RyYWludFN0cmluZyA9IGNvbnN0cmFpbnRTdHJpbmdGcm9tUmVmZXJlbmNlQW5kU3RhdGVtZW50KHJlZmVyZW5jZSwgc3RhdGVtZW50KSxcbiAgICAgICAgICAgICAgc3RyaW5nID0gY29uc3RyYWludFN0cmluZywgIC8vL1xuICAgICAgICAgICAgICBjb25zdHJhaW50Tm9kZSA9IGluc3RhbnRpYXRlQ29uc3RyYWludChzdHJpbmcsIGNvbnRleHQpO1xuXG4gICAgICAgIGNvbnN0cmFpbnQgPSBjb25zdHJhaW50RnJvbUNvbnN0cmFpbnROb2RlKGNvbnN0cmFpbnROb2RlLCBjb250ZXh0KTtcbiAgICAgIH0sIGNvbnRleHQpO1xuICAgIH0sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIGNvbnN0cmFpbnQ7XG4gIH1cbn0pO1xuXG5mdW5jdGlvbiByZWZlcmVuY2VGcm9tQ29uc3RyYWludE5vZGUoY29uc3RyYWludE5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgcmVmZXJlbmNlTm9kZSA9IGNvbnN0cmFpbnROb2RlLmdldFJlZmVyZW5jZU5vZGUoKSxcbiAgICAgICAgcmVmZXJuZWNlID0gY29udGV4dC5maW5kUmVmZXJlbmNlQnlSZWZlcmVuY2VOb2RlKHJlZmVyZW5jZU5vZGUpO1xuXG4gIHJldHVybiByZWZlcm5lY2U7XG59XG5cbmZ1bmN0aW9uIHN0YXRlbWVudEZyb21Db25zdHJhaW50Tm9kZShjb25zdHJhaW50Tm9kZSwgY29udGV4dCkge1xuICBjb25zdCBzdGF0ZW1lbnROb2RlID0gY29uc3RyYWludE5vZGUuZ2V0U3RhdGVtZW50Tm9kZSgpLFxuICAgICAgICBzdGF0ZW1lbnQgPSBjb250ZXh0LmZpbmRTdGF0ZW1lbnRCeVN0YXRlbWVudE5vZGUoc3RhdGVtZW50Tm9kZSk7XG5cbiAgcmV0dXJuIHN0YXRlbWVudDtcbn1cbiJdLCJuYW1lcyI6WyJjdXQiLCJhbGwiLCJzb21lIiwiaXNvbGF0ZSIsImNvbnRpbnVhdGlvblV0aWxpdGllcyIsImJyZWFrUG9pbnRGcm9tSlNPTiIsImJyZWFrUG9pbnRUb0JyZWFrUG9pbnRKU09OIiwiYnJlYWtQb2ludFV0aWxpdGllcyIsImRlZmluZSIsIkNvbnN0cmFpbnQiLCJFbGVtZW50IiwiY29udGV4dCIsInN0cmluZyIsIm5vZGUiLCJicmVha1BvaW50IiwicmVmZXJlbmNlIiwic3RhdGVtZW50IiwiZ2V0UmVmZXJlbmNlIiwiZ2V0U3RhdGVtZW50IiwiZ2V0Q29uc3RyYWludE5vZGUiLCJnZXROb2RlIiwiY29uc3RyYWludE5vZGUiLCJnZXRNZXRhdmFyaWFibGUiLCJpc0VxdWFsVG8iLCJjb25zdHJhaW50IiwiY29uc3RyYWludE5vZGVNYXRjaGVzIiwibWF0Y2hDb25zdHJhaW50Tm9kZSIsImVxdWFsVG8iLCJub2RlTWF0Y2hlcyIsIm1hdGNoTm9kZSIsImZpbmRDb25zdHJhaW50IiwiZmluZENvbnN0cmFpbnRCeUNvbnN0cmFpbnROb2RlIiwidmFsaWRhdGUiLCJzdGF0ZSIsImZvcndhcmQiLCJiYWNrIiwiY29uc3RyYWludFN0cmluZyIsImdldFN0cmluZyIsInRyYWNlIiwiZGVidWciLCJnZXRDb250ZXh0IiwiYXR0ZW1wdCIsInZhbGlkYXRlU3RhdGVtZW50IiwiYmluZCIsInZhbGlkYXRlUmVmZXJlbmNlIiwiY29tbWl0IiwiYWRkQ29uc3RyYWludCIsInJlZmVyZW5jZVZhbGlkYXRlcyIsInZhbGlkYXRlcyIsImNvbnRpbnVhdGlvbiIsInN0YXRlbWVudFZhbGlkYXRlcyIsInVuaWZ5UmVmZXJlbmNlIiwiZ2VuZXJhbENvbnRleHQiLCJzcGVjaWZpY0NvbnRleHQiLCJyZWZlcmVuY2VTdHJpbmciLCJtZXRhdmFyaWFibGUiLCJyZWZlcmVuY2VVbmlmaWVzIiwidW5pZnlTdGF0ZW1lbnQiLCJzdGF0ZW1lbnRTdHJpbmciLCJzcGVjaWZpY1N0YXRlbWVudCIsInN0cmlwQnJhY2tldHNGcm9tU3RhdGVtZW50IiwiZ2VuZXJhbFN0YXRlbWVudCIsInN0YXRlbWVudFVuaWZpZXMiLCJ1bmlmeUFzc3VtcHRpb24iLCJhc3N1bXB0aW9uIiwiYXNzdW1wdGlvblN0cmluZyIsImNvbnN0cmFpbnRDb250ZXh0IiwicmVjb25jaWxlIiwiYXNzdW1wdGlvblVuaWZpZXMiLCJ1bmlmeUFzc3VtcHRpb25zIiwiYXNzdW1wdGlvbnMiLCJhc3N1bXB0aW9uc1VuaWZ5IiwidW5pZnlJbXBsaWNpdEFzc3VtcHRpb24iLCJpbXBsaWNpdEFzc3VtcHRpb24iLCJpbXBsaWNpdEFzc3VtcHRpb25TdHJpbmciLCJpbXBsaWNpdEFzc3VtcHRpb25Db250ZXh0Iiwiam9pbiIsImltcGxpY2l0QXNzdW1wdGlvblVuaWZpZXMiLCJ1bmlmeUltcGxpY2l0QXNzdW1wdGlvbnMiLCJpbXBsaWNpdEFzc3VtcHRpb25zIiwiaW1wbGljaXRBc3N1bXB0aW9uc1VuaWZ5IiwidG9KU09OIiwic2VyaWFsaXNlIiwiZ2V0QnJlYWtQb2ludCIsImJyZWFrUG9pbnRKU09OIiwianNvbiIsIm5hbWUiLCJmcm9tSlNPTiIsImluc3RhbnRpYXRlIiwidW5zZXJpYWxpc2UiLCJpbnN0YW50aWF0ZUNvbnN0cmFpbnQiLCJyZWZlcmVuY2VGcm9tQ29uc3RyYWludE5vZGUiLCJzdGF0ZW1lbnRGcm9tQ29uc3RyYWludE5vZGUiLCJmcm9tU3RlcCIsInN0ZXAiLCJhYmxhdGUiLCJjb25zdHJhaW50U3RyaW5nRnJvbVJlZmVyZW5jZUFuZFN0YXRlbWVudCIsImNvbnN0cmFpbnRGcm9tQ29uc3RyYWludE5vZGUiLCJyZWZlcmVuY2VOb2RlIiwiZ2V0UmVmZXJlbmNlTm9kZSIsInJlZmVybmVjZSIsImZpbmRSZWZlcmVuY2VCeVJlZmVyZW5jZU5vZGUiLCJzdGF0ZW1lbnROb2RlIiwiZ2V0U3RhdGVtZW50Tm9kZSIsImZpbmRTdGF0ZW1lbnRCeVN0YXRlbWVudE5vZGUiXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQWVBOzs7ZUFBQTs7O2dDQWJvRTswQkFFN0M7dUJBQ1E7NkJBQ087MEJBQ0s7eUJBQ0U7d0JBQ2E7eUJBQzRCO0FBRXRGLE1BQU0sRUFBRUEsR0FBRyxFQUFFQyxHQUFHLEVBQUVDLElBQUksRUFBRUMsT0FBTyxFQUFFLEdBQUdDLHFD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
|
|
269
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbGVtZW50L2NvbnN0cmFpbnQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IEVsZW1lbnQsIGJyZWFrUG9pbnRVdGlsaXRpZXMsIGNvbnRpbnVhdGlvblV0aWxpdGllcyB9IGZyb20gXCJvY2NhbS1sYW5ndWFnZXNcIjtcblxuaW1wb3J0IHsgZGVmaW5lIH0gZnJvbSBcIi4uL2VsZW1lbnRzXCI7XG5pbXBvcnQgeyB1bmlmeVN0YXRlbWVudCB9IGZyb20gXCIuLi9wcm9jZXNzL3VuaWZ5XCI7XG5pbXBvcnQgeyBpbnN0YW50aWF0ZUNvbnN0cmFpbnQgfSBmcm9tIFwiLi4vcHJvY2Vzcy9pbnN0YW50aWF0ZVwiO1xuaW1wb3J0IHsgc3RyaXBCcmFja2V0c0Zyb21TdGF0ZW1lbnQgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2JyYWNrZXRzXCI7XG5pbXBvcnQgeyBjb25zdHJhaW50RnJvbUNvbnN0cmFpbnROb2RlIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9lbGVtZW50XCI7XG5pbXBvcnQgeyBjb25zdHJhaW50U3RyaW5nRnJvbVJlZmVyZW5jZUFuZFN0YXRlbWVudCB9IGZyb20gXCIuLi91dGlsaXRpZXMvc3RyaW5nXCI7XG5pbXBvcnQgeyBqb2luLCBhYmxhdGUsIGF0dGVtcHQsIHJlY29uY2lsZSwgc2VyaWFsaXNlLCB1bnNlcmlhbGlzZSwgaW5zdGFudGlhdGUgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2NvbnRleHRcIjtcbmltcG9ydCB7ZGVjbGFyZX0gZnJvbSBcIi4uL3V0aWxpdGllcy9zdGF0ZVwiO1xuXG5jb25zdCB7IHVuYnJlYWthYmxlIH0gPSBicmVha1BvaW50VXRpbGl0aWVzLFxuICAgICAgeyBjdXQsIGFsbCwgc29tZSwgaXNvbGF0ZSB9ID0gY29udGludWF0aW9uVXRpbGl0aWVzO1xuXG5leHBvcnQgZGVmYXVsdCBkZWZpbmUoY2xhc3MgQ29uc3RyYWludCBleHRlbmRzIEVsZW1lbnQge1xuICBjb25zdHJ1Y3Rvcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIHJlZmVyZW5jZSwgc3RhdGVtZW50KSB7XG4gICAgc3VwZXIoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50KTtcblxuICAgIHRoaXMucmVmZXJlbmNlID0gcmVmZXJlbmNlO1xuICAgIHRoaXMuc3RhdGVtZW50ID0gc3RhdGVtZW50O1xuICB9XG5cbiAgZ2V0UmVmZXJlbmNlKCkge1xuICAgIHJldHVybiB0aGlzLnJlZmVyZW5jZTtcbiAgfVxuXG4gIGdldFN0YXRlbWVudCgpIHtcbiAgICByZXR1cm4gdGhpcy5zdGF0ZW1lbnQ7XG4gIH1cblxuICBnZXRDb25zdHJhaW50Tm9kZSgpIHtcbiAgICBjb25zdCBub2RlID0gdGhpcy5nZXROb2RlKCksXG4gICAgICAgICAgY29uc3RyYWludE5vZGUgPSBub2RlOyAgLy8vXG5cbiAgICByZXR1cm4gY29uc3RyYWludE5vZGU7XG4gIH1cblxuICBnZXRNZXRhdmFyaWFibGUoKSB7IHJldHVybiB0aGlzLnJlZmVyZW5jZS5nZXRNZXRhdmFyaWFibGUoKTsgfVxuXG4gIGlzRXF1YWxUbyhjb25zdHJhaW50KSB7XG4gICAgY29uc3QgY29uc3RyYWludE5vZGUgPSBjb25zdHJhaW50LmdldE5vZGUoKSxcbiAgICAgICAgICBjb25zdHJhaW50Tm9kZU1hdGNoZXMgPSB0aGlzLm1hdGNoQ29uc3RyYWludE5vZGUoY29uc3RyYWludE5vZGUpLFxuICAgICAgICAgIGVxdWFsVG8gPSBjb25zdHJhaW50Tm9kZU1hdGNoZXM7ICAvLy9cblxuICAgIHJldHVybiBlcXVhbFRvO1xuICB9XG5cbiAgbWF0Y2hDb25zdHJhaW50Tm9kZShjb25zdHJhaW50Tm9kZSkge1xuICAgIGNvbnN0IG5vZGUgPSBjb25zdHJhaW50Tm9kZSwgLy8vXG4gICAgICAgICAgbm9kZU1hdGNoZXMgPSB0aGlzLm1hdGNoTm9kZShub2RlKSxcbiAgICAgICAgICBjb25zdHJhaW50Tm9kZU1hdGNoZXMgPSBub2RlTWF0Y2hlczsgLy8vXG5cbiAgICByZXR1cm4gY29uc3RyYWludE5vZGVNYXRjaGVzO1xuICB9XG5cbiAgZmluZENvbnN0cmFpbnQoY29udGV4dCkge1xuICAgIGNvbnN0IGNvbnN0cmFpbnROb2RlID0gdGhpcy5nZXRDb25zdHJhaW50Tm9kZSgpLFxuICAgICAgICAgIGNvbnN0cmFpbnQgPSBjb250ZXh0LmZpbmRDb25zdHJhaW50QnlDb25zdHJhaW50Tm9kZShjb25zdHJhaW50Tm9kZSk7XG5cbiAgICByZXR1cm4gY29uc3RyYWludDtcbiAgfVxuXG4gIHZlcmlmeSA9IHVuYnJlYWthYmxlKGZ1bmN0aW9uIChjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgZm9yd2FyZCA9IGN1dChmb3J3YXJkLCBiYWNrKTsgLy8vXG5cbiAgICBjb25zdCByZWZlcmVuY2VTdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7cmVmZXJlbmNlU3RyaW5nfScgcmVmZXJlbmNlLi4uYCk7XG5cbiAgICByZXR1cm4gZGVjbGFyZSgoc3RhdGUpID0+IHtcbiAgICAgIHJldHVybiB0aGlzLnZhbGlkYXRlKHN0YXRlLCBjb250ZXh0LCAocmVmZXJlbmNlLCBjb250ZXh0ICwgYmFjaykgPT4ge1xuICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7cmVmZXJlbmNlU3RyaW5nfScgcmVmZXJlbmNlLmApO1xuXG4gICAgICAgIHJldHVybiBmb3J3YXJkKGNvbnRleHQsIGJhY2spO1xuICAgICAgfSwgYmFjayk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIHZhbGlkYXRlKHN0YXRlLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgbGV0IGNvbnN0cmFpbnQ7XG5cbiAgICBjb25zdCBjb25zdHJhaW50U3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7Y29uc3RyYWludFN0cmluZ30nIGNvbnN0cmFpbnQuLi5gKTtcblxuICAgIGNvbnN0cmFpbnQgPSB0aGlzLmZpbmRDb25zdHJhaW50KGNvbnRleHQpO1xuXG4gICAgaWYgKGNvbnN0cmFpbnQgIT09IG51bGwpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYFRoZSAnJHtjb25zdHJhaW50U3RyaW5nfScgY29uc3RyYWludCBpcyBhbHJlYWR5IHByZXNlbnQuYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKGNvbnN0cmFpbnQsIGNvbnRleHQsIGJhY2spO1xuICAgIH1cblxuICAgIHJldHVybiBpc29sYXRlKChzdGF0ZSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykgPT4ge1xuICAgICAgY29uc3RyYWludCA9IHRoaXM7ICAvLy9cblxuICAgICAgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpO1xuXG4gICAgICByZXR1cm4gYXR0ZW1wdCgoY29udGV4dCkgPT4ge1xuICAgICAgICBjb25zdCB2YWxpZGF0ZVN0YXRlbWVudCA9IHRoaXMudmFsaWRhdGVTdGF0ZW1lbnQuYmluZCh0aGlzKSxcbiAgICAgICAgICAgICAgdmFsaWRhdGVSZWZlcmVuY2UgPSB0aGlzLnZhbGlkYXRlUmVmZXJlbmNlLmJpbmQodGhpcyk7XG5cbiAgICAgICAgcmV0dXJuIGFsbChbXG4gICAgICAgICAgdmFsaWRhdGVTdGF0ZW1lbnQsXG4gICAgICAgICAgdmFsaWRhdGVSZWZlcmVuY2VcbiAgICAgICAgXSwgc3RhdGUsIGNvbnRleHQsIChzdGF0ZSwgY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgICAgIHRoaXMuY29tbWl0KGNvbnRleHQpO1xuXG4gICAgICAgICAgcmV0dXJuIGZvcndhcmQoYmFjayk7XG4gICAgICAgIH0sIGJhY2spO1xuICAgICAgfSwgY29udGV4dCk7XG4gICAgfSwgc3RhdGUsIGNvbnRleHQsIChzdGF0ZSwgY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgY29udGV4dC5hZGRDb25zdHJhaW50KGNvbnN0cmFpbnQpO1xuXG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke2NvbnN0cmFpbnRTdHJpbmd9JyBjb25zdHJhaW50LmApO1xuXG4gICAgICByZXR1cm4gZm9yd2FyZChjb25zdHJhaW50LCBjb250ZXh0LCBiYWNrKTtcbiAgICB9LCBiYWNrKTtcbiAgfVxuXG4gIHZhbGlkYXRlUmVmZXJlbmNlKHN0YXRlLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgbGV0IHJlZmVyZW5jZVZhbGlkYXRlcztcblxuICAgIGNvbnN0IGNvbnN0cmFpbnRTdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtjb25zdHJhaW50U3RyaW5nfScgY29uc3RyYWludCdzIHJlZmVyZW5jZS4uLmApO1xuXG4gICAgcmVmZXJlbmNlVmFsaWRhdGVzID0gdGhpcy5yZWZlcmVuY2UudmFsaWRhdGUoc3RhdGUsIGNvbnRleHQsIChyZWZlcmVuY2UsIGNvbnRleHQpID0+IHtcbiAgICAgIGxldCB2YWxpZGF0ZXM7XG5cbiAgICAgIHRoaXMucmVmZXJlbmNlID0gcmVmZXJlbmNlO1xuXG4gICAgICB2YWxpZGF0ZXMgPSBjb250aW51YXRpb24oc3RhdGUsIGNvbnRleHQpO1xuXG4gICAgICByZXR1cm4gdmFsaWRhdGVzO1xuICAgIH0pO1xuXG4gICAgaWYgKHJlZmVyZW5jZVZhbGlkYXRlcykge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHtjb25zdHJhaW50U3RyaW5nfScgY29uc3RyYWludCdzIHJlZmVyZW5jZS5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVmZXJlbmNlVmFsaWRhdGVzO1xuICB9XG5cbiAgdmFsaWRhdGVTdGF0ZW1lbnQoc3RhdGUsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBsZXQgc3RhdGVtZW50VmFsaWRhdGVzO1xuXG4gICAgY29uc3QgY29uc3RyYWludFN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke2NvbnN0cmFpbnRTdHJpbmd9JyBjb25zdHJhaW50J3Mgc3RhdGVtZW50Li4uYCk7XG5cbiAgICBzdGF0ZW1lbnRWYWxpZGF0ZXMgPSB0aGlzLnN0YXRlbWVudC52YWxpZGF0ZShzdGF0ZSwgY29udGV4dCwgKHN0YXRlbWVudCwgY29udGV4dCkgPT4ge1xuICAgICAgbGV0IHZhbGlkYXRlcztcblxuICAgICAgdGhpcy5zdGF0ZW1lbnQgPSBzdGF0ZW1lbnQ7XG5cbiAgICAgIHZhbGlkYXRlcyA9IGNvbnRpbnVhdGlvbihzdGF0ZSwgY29udGV4dCk7XG5cbiAgICAgIHJldHVybiB2YWxpZGF0ZXM7XG4gICAgfSk7XG5cbiAgICBpZiAoc3RhdGVtZW50VmFsaWRhdGVzKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke2NvbnN0cmFpbnRTdHJpbmd9JyBjb25zdHJhaW50J3Mgc3RhdGVtZW50LmApO1xuICAgIH1cblxuICAgIHJldHVybiBzdGF0ZW1lbnRWYWxpZGF0ZXM7XG4gIH1cblxuICB1bmlmeVJlZmVyZW5jZShyZWZlcmVuY2UsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBjb250ZXh0ID0gc3BlY2lmaWNDb250ZXh0LCAgLy8vXG4gICAgICAgICAgcmVmZXJlbmNlU3RyaW5nID0gcmVmZXJlbmNlLmdldFN0cmluZygpLFxuICAgICAgICAgIGNvbnN0cmFpbnRTdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHtyZWZlcmVuY2VTdHJpbmd9JyByZWZlcmVuY2Ugd2l0aCB0aGUgJyR7Y29uc3RyYWludFN0cmluZ30nIGNvbnN0cmFpbnQncyBtZXRhdmFyYWlhYmxlLi4uYCk7XG5cbiAgICBjb25zdCBtZXRhdmFyaWFibGUgPSB0aGlzLmdldE1ldGF2YXJpYWJsZSgpO1xuXG4gICAgcmV0dXJuIG1ldGF2YXJpYWJsZS51bmlmeVJlZmVyZW5jZShyZWZlcmVuY2UsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIChyZWZlcmVuY2VVbmlmaWVzKSA9PiB7XG4gICAgICBpZiAocmVmZXJlbmNlVW5pZmllcykge1xuICAgICAgICBjb250ZXh0LmRlYnVnKGAuLnVuaWZpZWQgdGhlICcke3JlZmVyZW5jZVN0cmluZ30nIHdpdGggdGhlICcke2NvbnN0cmFpbnRTdHJpbmd9JyBjb25zdHJhaW50J3MgbWV0YXZhcmlhYmxlLmApO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gY29udGludWF0aW9uKHJlZmVyZW5jZVVuaWZpZXMpO1xuICAgIH0pO1xuICB9XG5cbiAgdW5pZnlTdGF0ZW1lbnQoc3RhdGVtZW50LCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHNwZWNpZmljQ29udGV4dCwgIC8vL1xuICAgICAgICAgIHN0YXRlbWVudFN0cmluZyA9IHN0YXRlbWVudC5nZXRTdHJpbmcoKSxcbiAgICAgICAgICBjb25zdHJhaW50U3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBVbmlmeWluZyB0aGUgJyR7c3RhdGVtZW50U3RyaW5nfScgc3RhdGVtZW50IHdpdGggdGhlICcke2NvbnN0cmFpbnRTdHJpbmd9JyBjb25zdHJhaW50J3Mgc3RhdGVtZW50Li4uYCk7XG5cbiAgICBsZXQgc3BlY2lmaWNTdGF0ZW1lbnQ7XG5cbiAgICBzcGVjaWZpY1N0YXRlbWVudCA9IHN0YXRlbWVudDsgIC8vL1xuXG4gICAgc3BlY2lmaWNTdGF0ZW1lbnQgPSBzdHJpcEJyYWNrZXRzRnJvbVN0YXRlbWVudChzcGVjaWZpY1N0YXRlbWVudCwgY29udGV4dCk7ICAvLy9cblxuICAgIGNvbnN0IGdlbmVyYWxTdGF0ZW1lbnQgPSB0aGlzLnN0YXRlbWVudDsgIC8vL1xuXG4gICAgcmV0dXJuIHVuaWZ5U3RhdGVtZW50KGdlbmVyYWxTdGF0ZW1lbnQsIHNwZWNpZmljU3RhdGVtZW50LCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCAoc3RhdGVtZW50VW5pZmllcykgPT4ge1xuICAgICAgaWYgKHN0YXRlbWVudFVuaWZpZXMpIHtcbiAgICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udW5pZmllZCB0aGUgJyR7c3RhdGVtZW50U3RyaW5nfScgc3RhdGVtZW50IHdpdGggdGhlICcke2NvbnN0cmFpbnRTdHJpbmd9JyBjb25zdHJhaW50J3Mgc3RhdGVtZW50LmApO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gY29udGludWF0aW9uKHN0YXRlbWVudFVuaWZpZXMpO1xuICAgIH0pO1xuICB9XG5cbiAgdW5pZnlBc3N1bXB0aW9uKGFzc3VtcHRpb24sIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBjb25zdHJhaW50U3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKSwgIC8vL1xuICAgICAgICAgIGFzc3VtcHRpb25TdHJpbmcgPSBhc3N1bXB0aW9uLmdldFN0cmluZygpICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHthc3N1bXB0aW9uU3RyaW5nfScgYXNzdW1wdGlvbiB3aXRoIHRoZSAnJHtjb25zdHJhaW50U3RyaW5nfScgY29uc3RyYWludC4uLmApO1xuXG4gICAgY29uc3QgY29uc3RyYWludENvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSwgLy8vXG4gICAgICAgICAgZ2VuZXJhbENvbnRleHQgPSBjb25zdHJhaW50Q29udGV4dDsgLy8vXG5cbiAgICByZXR1cm4gcmVjb25jaWxlKChjb250ZXh0KSA9PiB7XG4gICAgICBjb25zdCByZWZlcmVuY2UgPSBhc3N1bXB0aW9uLmdldFJlZmVyZW5jZSgpLFxuICAgICAgICAgICAgc3BlY2lmaWNDb250ZXh0ID0gY29udGV4dDsgIC8vL1xuXG4gICAgICByZXR1cm4gdGhpcy51bmlmeVJlZmVyZW5jZShyZWZlcmVuY2UsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIChyZWZlcmVuY2VVbmlmaWVzKSA9PiB7XG4gICAgICAgIGlmICghcmVmZXJlbmNlVW5pZmllcykge1xuICAgICAgICAgIGNvbnN0IGFzc3VtcHRpb25VbmlmaWVzID0gZmFsc2U7XG5cbiAgICAgICAgICByZXR1cm4gY29udGludWF0aW9uKGFzc3VtcHRpb25VbmlmaWVzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHN0YXRlbWVudCA9IGFzc3VtcHRpb24uZ2V0U3RhdGVtZW50KCk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMudW5pZnlTdGF0ZW1lbnQoc3RhdGVtZW50LCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCAoc3RhdGVtZW50VW5pZmllcykgPT4ge1xuICAgICAgICAgIGxldCBhc3N1bXB0aW9uVW5pZmllcyA9IGZhbHNlO1xuXG4gICAgICAgICAgaWYgKHN0YXRlbWVudFVuaWZpZXMpIHtcbiAgICAgICAgICAgIGNvbnRleHQuY29tbWl0KCk7XG5cbiAgICAgICAgICAgIGFzc3VtcHRpb25VbmlmaWVzID0gdHJ1ZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoYXNzdW1wdGlvblVuaWZpZXMpIHtcbiAgICAgICAgICAgIGNvbnRleHQuZGVidWcoYC4uLnVuaWZpZWQgdGhlICcke2Fzc3VtcHRpb25TdHJpbmd9JyBhc3N1bXB0aW9uIHdpdGggdGhlICcke2NvbnN0cmFpbnRTdHJpbmd9JyBjb25zdHJhaW50Li4uYCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbihhc3N1bXB0aW9uVW5pZmllcyk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSwgY29udGV4dCk7XG4gIH1cblxuICB1bmlmeUFzc3VtcHRpb25zKGFzc3VtcHRpb25zLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3QgY29uc3RyYWludFN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7XG5cbiAgICBjb250ZXh0LnRyYWNlKGBVbmlmeWluZyB0aGUgYXNzdW1wdGlvbnMgd2l0aCB0aGUgJyR7Y29uc3RyYWludFN0cmluZ30nIGNvbnN0cmFpbnQuLi5gKTtcblxuICAgIHNvbWUoYXNzdW1wdGlvbnMsIChhc3N1bXB0aW9uLCBmb3J3YXJkLCBiYWNrKSA9PiB7XG4gICAgICB0aGlzLnVuaWZ5QXNzdW1wdGlvbihhc3N1bXB0aW9uLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKTtcbiAgICB9LCAoYXNzdW1wdGlvbnNVbmlmeSkgPT4ge1xuICAgICAgaWYgKGFzc3VtcHRpb25zVW5pZnkpIHtcbiAgICAgICAgY29udGV4dC50cmFjZShgLi4udW5pZmllZCB0aGUgYXNzdW1wdGlvbnMgd2l0aCB0aGUgJyR7Y29uc3RyYWludFN0cmluZ30nIGNvbnN0cmFpbnQuYCk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBjb250aW51YXRpb24oYXNzdW1wdGlvbnNVbmlmeSk7XG4gICAgfSk7XG4gIH1cblxuICB1bmlmeUltcGxpY2l0QXNzdW1wdGlvbihpbXBsaWNpdEFzc3VtcHRpb24sIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBjb25zdHJhaW50U3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKSwgIC8vL1xuICAgICAgICAgIGltcGxpY2l0QXNzdW1wdGlvblN0cmluZyA9IGltcGxpY2l0QXNzdW1wdGlvbi5nZXRTdHJpbmcoKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVW5pZnlpbmcgdGhlICcke2ltcGxpY2l0QXNzdW1wdGlvblN0cmluZ30nIGltcGxpY2l0IGFzc3VtcHRpb24gd2l0aCB0aGUgJyR7Y29uc3RyYWludFN0cmluZ30nIGNvbnN0cmFpbnQuLi5gKTtcblxuICAgIGNvbnN0IGNvbnN0cmFpbnRDb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksIC8vL1xuICAgICAgICAgIGltcGxpY2l0QXNzdW1wdGlvbkNvbnRleHQgPSBpbXBsaWNpdEFzc3VtcHRpb24uZ2V0Q29udGV4dCgpLFxuICAgICAgICAgIGdlbmVyYWxDb250ZXh0ID0gY29uc3RyYWludENvbnRleHQsIC8vL1xuICAgICAgICAgIHNwZWNpZmljQ29udGV4dCA9IGltcGxpY2l0QXNzdW1wdGlvbkNvbnRleHQ7ICAvLy9cblxuICAgIHJldHVybiBqb2luKChzcGVjaWZpY0NvbnRleHQpID0+IHtcbiAgICAgIHJldHVybiByZWNvbmNpbGUoKHNwZWNpZmljQ29udGV4dCkgPT4ge1xuICAgICAgICBjb25zdCBzdGF0ZW1lbnQgPSBpbXBsaWNpdEFzc3VtcHRpb24uZ2V0U3RhdGVtZW50KCk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMudW5pZnlTdGF0ZW1lbnQoc3RhdGVtZW50LCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCAoc3RhdGVtZW50VW5pZmllcykgPT4ge1xuICAgICAgICAgIGxldCBpbXBsaWNpdEFzc3VtcHRpb25VbmlmaWVzID0gZmFsc2U7XG5cbiAgICAgICAgICBpZiAoc3RhdGVtZW50VW5pZmllcykge1xuICAgICAgICAgICAgc3BlY2lmaWNDb250ZXh0LmNvbW1pdChjb250ZXh0KTtcblxuICAgICAgICAgICAgaW1wbGljaXRBc3N1bXB0aW9uVW5pZmllcyA9IHRydWU7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKGltcGxpY2l0QXNzdW1wdGlvblVuaWZpZXMpIHtcbiAgICAgICAgICAgIGNvbnRleHQuZGVidWcoYC4uLnVuaWZpZWQgdGhlICcke2ltcGxpY2l0QXNzdW1wdGlvblN0cmluZ30nIGltcGxsaWNpdCBhc3N1bXB0aW9uIHdpdGggdGhlICcke2NvbnN0cmFpbnRTdHJpbmd9JyBjb25zdHJhaW50Li4uYCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbihpbXBsaWNpdEFzc3VtcHRpb25VbmlmaWVzKTtcbiAgICAgICAgfSk7XG4gICAgICB9LCBzcGVjaWZpY0NvbnRleHQpO1xuICAgIH0sIHNwZWNpZmljQ29udGV4dCwgY29udGV4dCk7XG4gIH1cblxuICB1bmlmeUltcGxpY2l0QXNzdW1wdGlvbnMoaW1wbGljaXRBc3N1bXB0aW9ucywgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IGNvbnN0cmFpbnRTdHJpbmcgPSB0aGlzLmdldFN0cmluZygpO1xuXG4gICAgY29udGV4dC50cmFjZShgVW5pZnlpbmcgdGhlIGltcGxpY2l0IGFzc3VtcHRpb25zIHdpdGggdGhlICcke2NvbnN0cmFpbnRTdHJpbmd9JyBjb25zdHJhaW50Li4uYCk7XG5cbiAgICBzb21lKGltcGxpY2l0QXNzdW1wdGlvbnMsIChpbXBsaWNpdEFzc3VtcHRpb24sIGZvcndhcmQsIGJhY2spID0+IHtcbiAgICAgIHRoaXMudW5pZnlJbXBsaWNpdEFzc3VtcHRpb24oaW1wbGljaXRBc3N1bXB0aW9uLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKTtcbiAgICB9LCAoaW1wbGljaXRBc3N1bXB0aW9uc1VuaWZ5KSA9PiB7XG4gICAgICBpZiAoaW1wbGljaXRBc3N1bXB0aW9uc1VuaWZ5KSB7XG4gICAgICAgIGNvbnRleHQudHJhY2UoYC4uLnVuaWZpZWQgdGhlIGltcGxpY2l0IGFzc3VtcHRpb25zIHdpdGggdGhlICcke2NvbnN0cmFpbnRTdHJpbmd9JyBjb25zdHJhaW50LmApO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gY29udGludWF0aW9uKGltcGxpY2l0QXNzdW1wdGlvbnNVbmlmeSk7XG4gICAgfSk7XG4gIH1cblxuICB0b0pTT04oKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpO1xuXG4gICAgcmV0dXJuIHNlcmlhbGlzZSgoY29udGV4dCkgPT4ge1xuICAgICAgY29uc3Qgc3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTtcblxuICAgICAgbGV0IGJyZWFrUG9pbnQ7XG5cbiAgICAgIGJyZWFrUG9pbnQgPSB0aGlzLmdldEJyZWFrUG9pbnQoKTtcblxuICAgICAgY29uc3QgYnJlYWtQb2ludEpTT04gPSBicmVha1BvaW50VG9CcmVha1BvaW50SlNPTihicmVha1BvaW50KTtcblxuICAgICAgYnJlYWtQb2ludCA9IGJyZWFrUG9pbnRKU09OOyAgLy8vXG5cbiAgICAgIGNvbnN0IGpzb24gPSB7XG4gICAgICAgIGNvbnRleHQsXG4gICAgICAgIHN0cmluZyxcbiAgICAgICAgYnJlYWtQb2ludFxuICAgICAgfTtcblxuICAgICAgcmV0dXJuIGpzb247XG4gICAgfSwgY29udGV4dCk7XG4gIH1cblxuICBzdGF0aWMgbmFtZSA9IFwiQ29uc3RyYWludFwiO1xuXG4gIHN0YXRpYyBmcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gICAgbGV0IGNvbnN0cmFpbnQ7XG5cbiAgICBpbnN0YW50aWF0ZSgoY29udGV4dCkgPT4ge1xuICAgICAgdW5zZXJpYWxpc2UoKGpzb24sIGNvbnRleHQpID0+IHtcbiAgICAgICAgY29uc3QgeyBzdHJpbmcgfSA9IGpzb24sXG4gICAgICAgICAgICAgIGNvbnN0cmFpbnROb2RlID0gaW5zdGFudGlhdGVDb25zdHJhaW50KHN0cmluZywgY29udGV4dCksXG4gICAgICAgICAgICAgIG5vZGUgPSBjb25zdHJhaW50Tm9kZSwgIC8vL1xuICAgICAgICAgICAgICBicmVha1BvaW50ID0gYnJlYWtQb2ludEZyb21KU09OKGpzb24pLFxuICAgICAgICAgICAgICByZWZlcmVuY2UgPSByZWZlcmVuY2VGcm9tQ29uc3RyYWludE5vZGUoY29uc3RyYWludE5vZGUsIGNvbnRleHQpLFxuICAgICAgICAgICAgICBzdGF0ZW1lbnQgPSBzdGF0ZW1lbnRGcm9tQ29uc3RyYWludE5vZGUoY29uc3RyYWludE5vZGUsIGNvbnRleHQpO1xuXG4gICAgICAgIGNvbnN0cmFpbnQgPSBuZXcgQ29uc3RyYWludChjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIHJlZmVyZW5jZSwgc3RhdGVtZW50KTtcbiAgICAgIH0sIGpzb24sIGNvbnRleHQpO1xuICAgIH0sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIGNvbnN0cmFpbnQ7XG4gIH1cblxuICBzdGF0aWMgZnJvbVN0ZXAoc3RlcCwgY29udGV4dCkge1xuICAgIGxldCBjb25zdHJhaW50O1xuXG4gICAgbGV0IHN0YXRlbWVudDtcblxuICAgIHN0YXRlbWVudCA9IHN0ZXAuZ2V0U3RhdGVtZW50KCk7XG5cbiAgICBzdGF0ZW1lbnQgPSBzdHJpcEJyYWNrZXRzRnJvbVN0YXRlbWVudChzdGF0ZW1lbnQsIGNvbnRleHQpOyAvLy9cblxuICAgIGNvbnN0IHJlZmVyZW5jZSA9IHN0ZXAuZ2V0UmVmZXJlbmNlKCk7XG5cbiAgICBhYmxhdGUoKGNvbnRleHQpID0+IHtcbiAgICAgIGluc3RhbnRpYXRlKChjb250ZXh0KSA9PiB7XG4gICAgICAgIGNvbnN0IGNvbnN0cmFpbnRTdHJpbmcgPSBjb25zdHJhaW50U3RyaW5nRnJvbVJlZmVyZW5jZUFuZFN0YXRlbWVudChyZWZlcmVuY2UsIHN0YXRlbWVudCksXG4gICAgICAgICAgICAgIHN0cmluZyA9IGNvbnN0cmFpbnRTdHJpbmcsICAvLy9cbiAgICAgICAgICAgICAgY29uc3RyYWludE5vZGUgPSBpbnN0YW50aWF0ZUNvbnN0cmFpbnQoc3RyaW5nLCBjb250ZXh0KTtcblxuICAgICAgICBjb25zdHJhaW50ID0gY29uc3RyYWludEZyb21Db25zdHJhaW50Tm9kZShjb25zdHJhaW50Tm9kZSwgY29udGV4dCk7XG4gICAgICB9LCBjb250ZXh0KTtcbiAgICB9LCBjb250ZXh0KTtcblxuICAgIHJldHVybiBjb25zdHJhaW50O1xuICB9XG59KTtcblxuZnVuY3Rpb24gcmVmZXJlbmNlRnJvbUNvbnN0cmFpbnROb2RlKGNvbnN0cmFpbnROb2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IHJlZmVyZW5jZU5vZGUgPSBjb25zdHJhaW50Tm9kZS5nZXRSZWZlcmVuY2VOb2RlKCksXG4gICAgICAgIHJlZmVybmVjZSA9IGNvbnRleHQuZmluZFJlZmVyZW5jZUJ5UmVmZXJlbmNlTm9kZShyZWZlcmVuY2VOb2RlKTtcblxuICByZXR1cm4gcmVmZXJuZWNlO1xufVxuXG5mdW5jdGlvbiBzdGF0ZW1lbnRGcm9tQ29uc3RyYWludE5vZGUoY29uc3RyYWludE5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3Qgc3RhdGVtZW50Tm9kZSA9IGNvbnN0cmFpbnROb2RlLmdldFN0YXRlbWVudE5vZGUoKSxcbiAgICAgICAgc3RhdGVtZW50ID0gY29udGV4dC5maW5kU3RhdGVtZW50QnlTdGF0ZW1lbnROb2RlKHN0YXRlbWVudE5vZGUpO1xuXG4gIHJldHVybiBzdGF0ZW1lbnQ7XG59XG4iXSwibmFtZXMiOlsidW5icmVha2FibGUiLCJicmVha1BvaW50VXRpbGl0aWVzIiwiY3V0IiwiYWxsIiwic29tZSIsImlzb2xhdGUiLCJjb250aW51YXRpb25VdGlsaXRpZXMiLCJkZWZpbmUiLCJDb25zdHJhaW50IiwiRWxlbWVudCIsImNvbnRleHQiLCJzdHJpbmciLCJub2RlIiwiYnJlYWtQb2ludCIsInJlZmVyZW5jZSIsInN0YXRlbWVudCIsImdldFJlZmVyZW5jZSIsImdldFN0YXRlbWVudCIsImdldENvbnN0cmFpbnROb2RlIiwiZ2V0Tm9kZSIsImNvbnN0cmFpbnROb2RlIiwiZ2V0TWV0YXZhcmlhYmxlIiwiaXNFcXVhbFRvIiwiY29uc3RyYWludCIsImNvbnN0cmFpbnROb2RlTWF0Y2hlcyIsIm1hdGNoQ29uc3RyYWludE5vZGUiLCJlcXVhbFRvIiwibm9kZU1hdGNoZXMiLCJtYXRjaE5vZGUiLCJmaW5kQ29uc3RyYWludCIsImZpbmRDb25zdHJhaW50QnlDb25zdHJhaW50Tm9kZSIsInZlcmlmeSIsImZvcndhcmQiLCJiYWNrIiwicmVmZXJlbmNlU3RyaW5nIiwiZ2V0U3RyaW5nIiwidHJhY2UiLCJkZWNsYXJlIiwic3RhdGUiLCJ2YWxpZGF0ZSIsImRlYnVnIiwiY29uc3RyYWludFN0cmluZyIsImdldENvbnRleHQiLCJhdHRlbXB0IiwidmFsaWRhdGVTdGF0ZW1lbnQiLCJiaW5kIiwidmFsaWRhdGVSZWZlcmVuY2UiLCJjb21taXQiLCJhZGRDb25zdHJhaW50IiwicmVmZXJlbmNlVmFsaWRhdGVzIiwidmFsaWRhdGVzIiwiY29udGludWF0aW9uIiwic3RhdGVtZW50VmFsaWRhdGVzIiwidW5pZnlSZWZlcmVuY2UiLCJnZW5lcmFsQ29udGV4dCIsInNwZWNpZmljQ29udGV4dCIsIm1ldGF2YXJpYWJsZSIsInJlZmVyZW5jZVVuaWZpZXMiLCJ1bmlmeVN0YXRlbWVudCIsInN0YXRlbWVudFN0cmluZyIsInNwZWNpZmljU3RhdGVtZW50Iiwic3RyaXBCcmFja2V0c0Zyb21TdGF0ZW1lbnQiLCJnZW5lcmFsU3RhdGVtZW50Iiwic3RhdGVtZW50VW5pZmllcyIsInVuaWZ5QXNzdW1wdGlvbiIsImFzc3VtcHRpb24iLCJhc3N1bXB0aW9uU3RyaW5nIiwiY29uc3RyYWludENvbnRleHQiLCJyZWNvbmNpbGUiLCJhc3N1bXB0aW9uVW5pZmllcyIsInVuaWZ5QXNzdW1wdGlvbnMiLCJhc3N1bXB0aW9ucyIsImFzc3VtcHRpb25zVW5pZnkiLCJ1bmlmeUltcGxpY2l0QXNzdW1wdGlvbiIsImltcGxpY2l0QXNzdW1wdGlvbiIsImltcGxpY2l0QXNzdW1wdGlvblN0cmluZyIsImltcGxpY2l0QXNzdW1wdGlvbkNvbnRleHQiLCJqb2luIiwiaW1wbGljaXRBc3N1bXB0aW9uVW5pZmllcyIsInVuaWZ5SW1wbGljaXRBc3N1bXB0aW9ucyIsImltcGxpY2l0QXNzdW1wdGlvbnMiLCJpbXBsaWNpdEFzc3VtcHRpb25zVW5pZnkiLCJ0b0pTT04iLCJzZXJpYWxpc2UiLCJnZXRCcmVha1BvaW50IiwiYnJlYWtQb2ludEpTT04iLCJicmVha1BvaW50VG9CcmVha1BvaW50SlNPTiIsImpzb24iLCJuYW1lIiwiZnJvbUpTT04iLCJpbnN0YW50aWF0ZSIsInVuc2VyaWFsaXNlIiwiaW5zdGFudGlhdGVDb25zdHJhaW50IiwiYnJlYWtQb2ludEZyb21KU09OIiwicmVmZXJlbmNlRnJvbUNvbnN0cmFpbnROb2RlIiwic3RhdGVtZW50RnJvbUNvbnN0cmFpbnROb2RlIiwiZnJvbVN0ZXAiLCJzdGVwIiwiYWJsYXRlIiwiY29uc3RyYWludFN0cmluZ0Zyb21SZWZlcmVuY2VBbmRTdGF0ZW1lbnQiLCJjb25zdHJhaW50RnJvbUNvbnN0cmFpbnROb2RlIiwicmVmZXJlbmNlTm9kZSIsImdldFJlZmVyZW5jZU5vZGUiLCJyZWZlcm5lY2UiLCJmaW5kUmVmZXJlbmNlQnlSZWZlcmVuY2VOb2RlIiwic3RhdGVtZW50Tm9kZSIsImdldFN0YXRlbWVudE5vZGUiLCJmaW5kU3RhdGVtZW50QnlTdGF0ZW1lbnROb2RlIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFnQkE7OztlQUFBOzs7Z0NBZG9FOzBCQUU3Qzt1QkFDUTs2QkFDTzswQkFDSzt5QkFDRTt3QkFDYTt5QkFDNEI7dUJBQ2hFO0FBRXRCLE1BQU0sRUFBRUEsV0FBVyxFQUFFLEdBQUdDLG1DQUFtQixFQUNyQyxFQUFFQyxHQUFHLEVBQUVDLEdBQUcsRUFBRUMsSUFBSSxFQUFFQyxPQUFPLEVBQUUsR0FBR0MscUNBQXFCO01BRXpELFdBQWVDLElBQUFBLGdCQUFNLEVBQUMsTUFBTUMsbUJBQW1CQyx1QkFBTztJQUNwRCxZQUFZQyxPQUFPLEVBQUVDLE1BQU0sRUFBRUMsSUFBSSxFQUFFQyxVQUFVLEVBQUVDLFNBQVMsRUFBRUMsU0FBUyxDQUFFO1FBQ25FLEtBQUssQ0FBQ0wsU0FBU0MsUUFBUUMsTUFBTUM7UUFFN0IsSUFBSSxDQUFDQyxTQUFTLEdBQUdBO1FBQ2pCLElBQUksQ0FBQ0MsU0FBUyxHQUFHQTtJQUNuQjtJQUVBQyxlQUFlO1FBQ2IsT0FBTyxJQUFJLENBQUNGLFNBQVM7SUFDdkI7SUFFQUcsZUFBZTtRQUNiLE9BQU8sSUFBSSxDQUFDRixTQUFTO0lBQ3ZCO0lBRUFHLG9CQUFvQjtRQUNsQixNQUFNTixPQUFPLElBQUksQ0FBQ08sT0FBTyxJQUNu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
|