occam-nominal 1.0.486 → 1.0.489
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/context/liminal.js +3 -2
- package/lib/context.js +5 -1
- package/lib/element/claim.js +17 -11
- package/lib/element/combinator.js +4 -3
- package/lib/element/constructor.js +4 -3
- package/lib/element/fact/premise.js +6 -6
- package/lib/element/fact/step.js +4 -3
- package/lib/element/fact/supposition.js +8 -5
- package/lib/element/generator.js +12 -11
- package/lib/element/hypothesis.js +4 -3
- package/lib/element/label.js +4 -3
- package/lib/element/procedureCall.js +4 -4
- package/lib/element/resolution/conclusion.js +4 -3
- package/lib/element/resolution/deduction.js +4 -3
- package/lib/element/resolution.js +3 -2
- package/lib/element/rule.js +13 -7
- package/package.json +3 -3
- package/src/context/liminal.js +3 -1
- package/src/context.js +7 -0
- package/src/element/claim.js +17 -11
- package/src/element/combinator.js +4 -2
- package/src/element/constructor.js +4 -2
- package/src/element/fact/premise.js +7 -5
- package/src/element/fact/step.js +4 -2
- package/src/element/fact/supposition.js +10 -4
- package/src/element/generator.js +12 -10
- package/src/element/hypothesis.js +4 -2
- package/src/element/label.js +4 -2
- package/src/element/procedureCall.js +4 -5
- package/src/element/resolution/conclusion.js +4 -2
- package/src/element/resolution/deduction.js +4 -2
- package/src/element/resolution.js +4 -1
- package/src/element/rule.js +12 -6
package/lib/context/liminal.js
CHANGED
|
@@ -18,7 +18,7 @@ function _interop_require_default(obj) {
|
|
|
18
18
|
default: obj
|
|
19
19
|
};
|
|
20
20
|
}
|
|
21
|
-
const { forEach } = _occamlanguages.continuationUtilities, { push, find, first } = _necessary.arrayUtilities;
|
|
21
|
+
const { cut, forEach } = _occamlanguages.continuationUtilities, { push, find, first } = _necessary.arrayUtilities;
|
|
22
22
|
class LiminalContext extends _context.default {
|
|
23
23
|
constructor(context, inferredSubstitutions){
|
|
24
24
|
super(context);
|
|
@@ -75,6 +75,7 @@ class LiminalContext extends _context.default {
|
|
|
75
75
|
});
|
|
76
76
|
}
|
|
77
77
|
solveInferredSubstitutions(forward, back) {
|
|
78
|
+
forward = cut(forward, back); ///
|
|
78
79
|
const context = this, inferredSubstitutions = this.getInferredSubstitutions(), metavariableNodes = (0, _substitutions.metavariableNodesFromInferredSubstitutions)(inferredSubstitutions);
|
|
79
80
|
return forEach(metavariableNodes, (metavariableNode, forward, back)=>{
|
|
80
81
|
const complexInferredSubstitutions = this.findComplexInferredSubstitutionsByMetavariableNode(metavariableNode);
|
|
@@ -198,4 +199,4 @@ class LiminalContext extends _context.default {
|
|
|
198
199
|
}
|
|
199
200
|
}
|
|
200
201
|
|
|
201
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb250ZXh0L2xpbWluYWwuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IGFycmF5VXRpbGl0aWVzIH0gZnJvbSBcIm5lY2Vzc2FyeVwiO1xuaW1wb3J0IHsgY29udGludWF0aW9uVXRpbGl0aWVzIH0gZnJvbSBcIm9jY2FtLWxhbmd1YWdlc1wiO1xuXG5pbXBvcnQgQ29udGV4dCBmcm9tIFwiLi4vY29udGV4dFwiO1xuaW1wb3J0IGVsZW1lbnRzIGZyb20gXCIuLi9lbGVtZW50c1wiO1xuXG5pbXBvcnQgeyBtZXRhdmFyaWFibGVOb2Rlc0Zyb21JbmZlcnJlZFN1YnN0aXR1dGlvbnMgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL3N1YnN0aXR1dGlvbnNcIjtcblxuY29uc3QgeyBmb3JFYWNoIH0gPSBjb250aW51YXRpb25VdGlsaXRpZXMsXG4gICAgICB7IHB1c2gsIGZpbmQsIGZpcnN0IH0gPSBhcnJheVV0aWxpdGllcztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTGltaW5hbENvbnRleHQgZXh0ZW5kcyBDb250ZXh0IHtcbiAgY29uc3RydWN0b3IoY29udGV4dCwgaW5mZXJyZWRTdWJzdGl0dXRpb25zKSB7XG4gICAgc3VwZXIoY29udGV4dCk7XG5cbiAgICB0aGlzLmluZmVycmVkU3Vic3RpdHV0aW9ucyA9IGluZmVycmVkU3Vic3RpdHV0aW9ucztcbiAgfVxuXG4gIGdldEluZmVycmVkU3Vic3RpdHV0aW9ucyhpbmZlcnJlZFN1YnN0aXR1dGlvbnMgPSBbXSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKTtcblxuICAgIHB1c2goaW5mZXJyZWRTdWJzdGl0dXRpb25zLCB0aGlzLmluZmVycmVkU3Vic3RpdHV0aW9ucyk7XG5cbiAgICBjb250ZXh0LmdldEluZmVycmVkU3Vic3RpdHV0aW9ucyhpbmZlcnJlZFN1YnN0aXR1dGlvbnMpO1xuXG4gICAgcmV0dXJuIGluZmVycmVkU3Vic3RpdHV0aW9ucztcbiAgfVxuXG4gIGdldFNvbGVJbmZlcnJlZFN1YnN0aXR1dGlvbigpIHtcbiAgICBsZXQgc29sZUluZmVycmVkU3Vic3RpdHV0aW9uID0gbnVsbDtcblxuICAgIGNvbnN0IGluZmVycmVkU3Vic3RpdHV0aW9uc0xlbmd0aCA9IHRoaXMuaW5mZXJyZWRTdWJzdGl0dXRpb25zLmxlbmd0aDtcblxuICAgIGlmIChpbmZlcnJlZFN1YnN0aXR1dGlvbnNMZW5ndGggPT09IDEpIHtcbiAgICAgIGNvbnN0IGZpcnN0SW5mZXJyZWRTdWJzdGl0dXRpb24gPSBmaXJzdCh0aGlzLmluZmVycmVkU3Vic3RpdHV0aW9ucyk7XG5cbiAgICAgIHNvbGVJbmZlcnJlZFN1YnN0aXR1dGlvbiA9IGZpcnN0SW5mZXJyZWRTdWJzdGl0dXRpb247IC8vL1xuICAgIH1cblxuICAgIHJldHVybiBzb2xlSW5mZXJyZWRTdWJzdGl0dXRpb247XG4gIH1cblxuICBnZXRTaW5ndWxhck5vblRyaXZpYWxJbmZlcnJlZFN1YnN0aXR1dGlvbigpIHtcbiAgICBsZXQgc2luZ3VsYXJOb25Ucml2aWFsSW5mZXJyZWRTdWJzdGl0dXRpb24gPSBudWxsO1xuXG4gICAgY29uc3Qgc29sZUluZmVycmVkU3Vic3RpdHV0aW9uID0gdGhpcy5nZXRTb2xlSW5mZXJyZWRTdWJzdGl0dXRpb24oKTtcblxuICAgIGlmIChzb2xlSW5mZXJyZWRTdWJzdGl0dXRpb24gIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IHNvbGVJbmZlcnJlZFN1YnN0aXR1dGlvbk5vblRyaXZpYWwgPSBzb2xlSW5mZXJyZWRTdWJzdGl0dXRpb24uaXNOb25Ucml2aWFsKCk7XG5cbiAgICAgIGlmIChzb2xlSW5mZXJyZWRTdWJzdGl0dXRpb25Ob25Ucml2aWFsKSB7XG4gICAgICAgIHNpbmd1bGFyTm9uVHJpdmlhbEluZmVycmVkU3Vic3RpdHV0aW9uID0gc29sZUluZmVycmVkU3Vic3RpdHV0aW9uOyAgLy8vXG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHNpbmd1bGFyTm9uVHJpdmlhbEluZmVycmVkU3Vic3RpdHV0aW9uO1xuICB9XG5cbiAgYWRkU3Vic3RpdHV0aW9uKHN1YnN0aXR1dGlvbikge1xuICAgIC8vL1xuICB9XG5cbiAgYWRkSW5mZXJyZWRTdWJzdGl0dXRpb24oaW5mZXJyZWRTdWJzdGl0dXRpb24pIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcywgLy8vXG4gICAgICAgICAgaW5mZXJyZWRTdWJzdGl0dXRpb25BID0gaW5mZXJyZWRTdWJzdGl0dXRpb24sIC8vL1xuICAgICAgICAgIGluZmVycmVkU3Vic3RpdHV0aW9uU3RyaW5nID0gaW5mZXJyZWRTdWJzdGl0dXRpb24uZ2V0U3RyaW5nKCk7XG5cbiAgICBjb250ZXh0LnRyYWNlKGBBZGRpbmcgdGhlICcke2luZmVycmVkU3Vic3RpdHV0aW9uU3RyaW5nfScgaW5mZXJyZWQgc3Vic3RpdHV0aW9uIHRvIHRoZSBsaW1pbmFsIGNvbnRleHQuLi5gKTtcblxuICAgIGNvbnN0IGluZmVycmVkU3Vic3RpdHV0aW9uQiA9IHRoaXMuaW5mZXJyZWRTdWJzdGl0dXRpb25zLmZpbmQoKGluZmVycmVkU3Vic3RpdHV0aW9uKSA9PiB7XG4gICAgICBjb25zdCBpbmZlcnJlZFN1YnN0aXR1dGlvbkIgPSBpbmZlcnJlZFN1YnN0aXR1dGlvbiwgLy8vXG4gICAgICAgICAgICBpbmZlcnJlZFN1YnN0aXR1dGlvbkFFcXVhbFRvSW5mZXJyZWRTdWJzdGl0dXRpb25CID0gaW5mZXJyZWRTdWJzdGl0dXRpb25BLmlzRXF1YWxUbyhpbmZlcnJlZFN1YnN0aXR1dGlvbkIpO1xuXG4gICAgICBpZiAoaW5mZXJyZWRTdWJzdGl0dXRpb25BRXF1YWxUb0luZmVycmVkU3Vic3RpdHV0aW9uQikge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9KSB8fCBudWxsO1xuXG4gICAgaWYgKGluZmVycmVkU3Vic3RpdHV0aW9uQiAhPT0gbnVsbCkge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgVGhlICcke2luZmVycmVkU3Vic3RpdHV0aW9uU3RyaW5nfScgaW5mZXJyZWQgc3Vic3RpdHV0aW9uIGhhcyBhbHJlYWR5IGJlZW4gYWRkZWQgdG8gdGhlIGxpbWluYWwgY29udGV4dC5gKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5pbmZlcnJlZFN1YnN0aXR1dGlvbnMucHVzaChpbmZlcnJlZFN1YnN0aXR1dGlvbik7XG4gICAgfVxuXG4gICAgY29udGV4dC5kZWJ1ZyhgLi4uYWRkZWQgdGhlICcke2luZmVycmVkU3Vic3RpdHV0aW9uU3RyaW5nfScgaW5mZXJyZWQgc3Vic3RpdHV0aW9uIHRvIHRoZSBsaW1pbmFsIGNvbnRleHQuYCk7XG4gIH1cblxuICBhZGRJbmZlcnJlZFN1YnN0aXR1dGlvbnMoaW5mZXJyZWRTdWJzdGl0dXRpb25zKSB7XG4gICAgaW5mZXJyZWRTdWJzdGl0dXRpb25zLmZvckVhY2goKGluZmVycmVkU3Vic3RpdHV0aW9uKSA9PiB7XG4gICAgICB0aGlzLmFkZEluZmVycmVkU3Vic3RpdHV0aW9uKGluZmVycmVkU3Vic3RpdHV0aW9uKTtcbiAgICB9KTtcbiAgfVxuXG4gIHNvbHZlSW5mZXJyZWRTdWJzdGl0dXRpb25zKGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcywgLy8vXG4gICAgICAgICAgaW5mZXJyZWRTdWJzdGl0dXRpb25zID0gdGhpcy5nZXRJbmZlcnJlZFN1YnN0aXR1dGlvbnMoKSxcbiAgICAgICAgICBtZXRhdmFyaWFibGVOb2RlcyA9IG1ldGF2YXJpYWJsZU5vZGVzRnJvbUluZmVycmVkU3Vic3RpdHV0aW9ucyhpbmZlcnJlZFN1YnN0aXR1dGlvbnMpO1xuXG4gICAgcmV0dXJuIGZvckVhY2gobWV0YXZhcmlhYmxlTm9kZXMsIChtZXRhdmFyaWFibGVOb2RlLCBmb3J3YXJkLCBiYWNrKSA9PiB7XG4gICAgICBjb25zdCBjb21wbGV4SW5mZXJyZWRTdWJzdGl0dXRpb25zID0gdGhpcy5maW5kQ29tcGxleEluZmVycmVkU3Vic3RpdHV0aW9uc0J5TWV0YXZhcmlhYmxlTm9kZShtZXRhdmFyaWFibGVOb2RlKTtcblxuICAgICAgcmV0dXJuIGZvckVhY2goY29tcGxleEluZmVycmVkU3Vic3RpdHV0aW9ucywgKGNvbXBsZXhJbmZlcnJlZFN1YnN0aXR1dGlvbiwgZm9yd2FyZCwgYmFjaykgPT4ge1xuICAgICAgICBjb25zdCBpbmZlcnJlZFN1YnN0aXR1dGlvbiA9IGNvbXBsZXhJbmZlcnJlZFN1YnN0aXR1dGlvbiwgLy8vXG4gICAgICAgICAgICAgIHNvbHZlZCA9IGluZmVycmVkU3Vic3RpdHV0aW9uLmlzU29sdmVkKCk7XG5cbiAgICAgICAgaWYgKHNvbHZlZCkge1xuICAgICAgICAgIHJldHVybiBmb3J3YXJkKGNvbnRleHQsIGJhY2spO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGluZmVycmVkU3Vic3RpdHV0aW9uLnNvbHZlKGNvbnRleHQsIGZvcndhcmQsIGJhY2spO1xuICAgICAgfSwgZm9yd2FyZCwgYmFjayk7XG4gICAgfSwgZm9yd2FyZCwgYmFjayk7XG4gIH1cblxuICBhcmVJbmZlcnJlZFN1YnN0aXR1dGlvbnNTb2x2ZWQoKSB7XG4gICAgY29uc3QgaW5mZXJyZWRTdWJzdGl0dXRpb25zID0gdGhpcy5nZXRJbmZlcnJlZFN1YnN0aXR1dGlvbnMoKSxcbiAgICAgICAgICBtZXRhdmFyaWFibGVOb2RlcyA9IG1ldGF2YXJpYWJsZU5vZGVzRnJvbUluZmVycmVkU3Vic3RpdHV0aW9ucyhpbmZlcnJlZFN1YnN0aXR1dGlvbnMpLFxuICAgICAgICAgIHNvbHZlZCA9IG1ldGF2YXJpYWJsZU5vZGVzLmV2ZXJ5KChtZXRhdmFyaWFibGVOb2RlKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBjb21wbGV4SW5mZXJyZWRTdWJzdGl0dXRpb25zID0gdGhpcy5maW5kQ29tcGxleEluZmVycmVkU3Vic3RpdHV0aW9uc0J5TWV0YXZhcmlhYmxlTm9kZShtZXRhdmFyaWFibGVOb2RlKSxcbiAgICAgICAgICAgICAgICAgIGNvbXBsZXhJbmZlcnJlZFN1YnN0aXR1dGlvbnNTb2x2ZWQgPSBjb21wbGV4SW5mZXJyZWRTdWJzdGl0dXRpb25zLmV2ZXJ5KChjb21wbGV4SW5mZXJyZWRTdWJzdGl0dXRpb24pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY29tcGxleEluZmVycmVkU3Vic3RpdHV0aW9uU29sdmVkID0gY29tcGxleEluZmVycmVkU3Vic3RpdHV0aW9uLmlzU29sdmVkKCk7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGNvbXBsZXhJbmZlcnJlZFN1YnN0aXR1dGlvblNvbHZlZCkge1xuICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgaWYgKGNvbXBsZXhJbmZlcnJlZFN1YnN0aXR1dGlvbnNTb2x2ZWQpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG5cbiAgICByZXR1cm4gc29sdmVkO1xuICB9XG5cbiAgaXNFbXB0eSgpIHtcbiAgICBjb25zdCBpbmZlcnJlZFN1YnN0aXR1dGlvbnNMZW5ndGggPSB0aGlzLmluZmVycmVkU3Vic3RpdHV0aW9ucy5sZW5ndGgsXG4gICAgICAgICAgZW1wdHkgPSAoaW5mZXJyZWRTdWJzdGl0dXRpb25zTGVuZ3RoID09PSAwKTtcblxuICAgIHJldHVybiBlbXB0eTtcbiAgfVxuXG4gIHF1YWxpZnkoYXNzdW1wdGlvbiwgY29uc3RyYWludCkge1xuICAgIGxldCBxdWFsaWZpZXMgPSBmYWxzZTtcblxuICAgIGNvbnN0IGVtcHR5ID0gdGhpcy5pc0VtcHR5KCk7XG5cbiAgICBpZiAoZW1wdHkpIHtcbiAgICAgIHF1YWxpZmllcyA9IHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHNvbGVJbmZlcnJlZFN1YnN0aXR1dGlvbiA9IHRoaXMuZ2V0U29sZUluZmVycmVkU3Vic3RpdHV0aW9uKCk7XG5cbiAgICAgIGlmIChzb2xlSW5mZXJyZWRTdWJzdGl0dXRpb24gIT09IG51bGwpIHtcbiAgICAgICAgY29uc3QgeyBSZWZlcmVuY2VJbmZlcnJlZFN1YnN0aXR1dGlvbiB9ID0gZWxlbWVudHMsXG4gICAgICAgICAgICAgIGNvbnRleHQgPSB0aGlzLCAvLy9cbiAgICAgICAgICAgICAgcmVmZXJlbmNlSW5mZXJyZWRTdWJzdGl0dXRpb24gPSBSZWZlcmVuY2VJbmZlcnJlZFN1YnN0aXR1dGlvbi5mcm9tQXNzdW1wdGlvbkFuZENvbnN0cmFpbnQoYXNzdW1wdGlvbiwgY29uc3RyYWludCwgY29udGV4dCksXG4gICAgICAgICAgICAgIHJlZmVyZW5jZUluZmVycmVkU3Vic3RpdHV0aW9uQ29tcGFyZXNUb1Nzb2xlSW5mZXJyZWRTdWJzdGl0dXRpb24gPSByZWZlcmVuY2VJbmZlcnJlZFN1YnN0aXR1dGlvbi5jb21wYXJlU3Vic3RpdHV0aW9uKHNvbGVJbmZlcnJlZFN1YnN0aXR1dGlvbik7XG5cbiAgICAgICAgaWYgKHJlZmVyZW5jZUluZmVycmVkU3Vic3RpdHV0aW9uQ29tcGFyZXNUb1Nzb2xlSW5mZXJyZWRTdWJzdGl0dXRpb24pIHtcbiAgICAgICAgICBxdWFsaWZpZXMgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHF1YWxpZmllcztcbiAgfVxuXG4gIG1lcmdlKGNvbnRleHQpIHtcbiAgICBjb250ZXh0LmRlYnVnKGBNZXJnaW5nIHRoZSBsaW1pbmFsIGNvbnRleHRgKTtcblxuICAgIGNvbnRleHQuYWRkSW5mZXJyZWRTdWJzdGl0dXRpb25zKHRoaXMuaW5mZXJyZWRTdWJzdGl0dXRpb25zKTtcbiAgfVxuXG4gIGZpbmRJbmZlcnJlZFN1YnN0aXR1dGlvbihjYWxsYmFjaykge1xuICAgIGNvbnN0IGluZmVycmVkU3Vic3RpdHV0aW9ucyA9IHRoaXMuZ2V0SW5mZXJyZWRTdWJzdGl0dXRpb25zKCksXG4gICAgICAgICAgaW5mZXJyZWRTdWJzdGl0dXRpb24gPSBpbmZlcnJlZFN1YnN0aXR1dGlvbnMuZmluZChjYWxsYmFjayk7XG5cbiAgICByZXR1cm4gaW5mZXJyZWRTdWJzdGl0dXRpb247XG4gIH1cblxuICBmaW5kSW5mZXJyZWRTdWJzdGl0dXRpb25zKGNhbGxiYWNrKSB7XG4gICAgbGV0IGluZmVycmVkU3Vic3RpdHV0aW9ucztcblxuICAgIGluZmVycmVkU3Vic3RpdHV0aW9ucyA9IHRoaXMuZ2V0SW5mZXJyZWRTdWJzdGl0dXRpb25zKCk7XG5cbiAgICBpbmZlcnJlZFN1YnN0aXR1dGlvbnMgPSBmaW5kKGluZmVycmVkU3Vic3RpdHV0aW9ucywgY2FsbGJhY2spOyAgLy8vXG5cbiAgICByZXR1cm4gaW5mZXJyZWRTdWJzdGl0dXRpb25zO1xuICB9XG5cbiAgZmluZEluZmVycmVkU3Vic3RpdHV0aW9uQnlWYXJpYWJsZU5vZGUodmFyaWFibGVOb2RlKSB7XG4gICAgY29uc3QgaW5mZXJyZWRTdWJzdGl0dXRpb24gPSB0aGlzLmZpbmRJbmZlcnJlZFN1YnN0aXR1dGlvbigoaW5mZXJyZWRTdWJzdGl0dXRpb24pID0+IHtcbiAgICAgIGNvbnN0IHZhcmlhYmxlTm9kZU1hdGNoZXMgPSBpbmZlcnJlZFN1YnN0aXR1dGlvbi5tYXRjaFZhcmlhYmxlTm9kZSh2YXJpYWJsZU5vZGUpO1xuXG4gICAgICBpZiAodmFyaWFibGVOb2RlTWF0Y2hlcykge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9KSB8fCBudWxsO1xuXG4gICAgcmV0dXJuIGluZmVycmVkU3Vic3RpdHV0aW9uO1xuICB9XG5cbiAgZmluZEluZmVycmVkU3Vic3RpdHV0aW9uQnlNZXRhdmFyaWFibGVOb2RlKG1ldGF2YXJpYWJsZU5vZGUpIHtcbiAgICBjb25zdCBzaW1wbGVJbmZlcnJlZFN1YnN0aXR1dGlvbiA9IHRoaXMuZmluZFNpbXBsZUluZmVycmVkU3Vic3RpdHV0aW9uQnlNZXRhdmFyaWFibGVOb2RlKG1ldGF2YXJpYWJsZU5vZGUpLFxuICAgICAgICAgIGluZmVycmVkU3Vic3RpdHV0aW9uID0gc2ltcGxlSW5mZXJyZWRTdWJzdGl0dXRpb247ICAvLy9cblxuICAgIHJldHVybiBpbmZlcnJlZFN1YnN0aXR1dGlvbjtcbiAgfVxuXG4gIGZpbmRTaW1wbGVJbmZlcnJlZFN1YnN0aXR1dGlvbkJ5TWV0YXZhcmlhYmxlTm9kZShtZXRhdmFyaWFibGVOb2RlKSB7XG4gICAgY29uc3Qgc2ltcGxlSW5mZXJyZWRTdWJzdGl0dXRpb24gPSB0aGlzLmZpbmRJbmZlcnJlZFN1YnN0aXR1dGlvbigoaW5mZXJyZWRTdWJzdGl0dXRpb24pID0+IHtcbiAgICAgIGNvbnN0IGluZmVycmVkU3Vic3RpdHV0aW9uU2ltcGxlID0gaW5mZXJyZWRTdWJzdGl0dXRpb24uaXNTaW1wbGUoKTtcblxuICAgICAgaWYgKGluZmVycmVkU3Vic3RpdHV0aW9uU2ltcGxlKSB7XG4gICAgICAgIGNvbnN0IHNpbXBsZUluZmVycmVkU3Vic3RpdHV0aW9uID0gaW5mZXJyZWRTdWJzdGl0dXRpb24sICAvLy9cbiAgICAgICAgICAgICAgbWV0YXZhcmlhYmxlTm9kZU1hdGNoZXMgPSBzaW1wbGVJbmZlcnJlZFN1YnN0aXR1dGlvbi5tYXRjaE1ldGF2YXJpYWJsZU5vZGUobWV0YXZhcmlhYmxlTm9kZSk7XG5cbiAgICAgICAgaWYgKG1ldGF2YXJpYWJsZU5vZGVNYXRjaGVzKSB7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KSB8fCBudWxsO1xuXG4gICAgcmV0dXJuIHNpbXBsZUluZmVycmVkU3Vic3RpdHV0aW9uO1xuICB9XG5cbiAgZmluZENvbXBsZXhJbmZlcnJlZFN1YnN0aXR1dGlvbnNCeU1ldGF2YXJpYWJsZU5vZGUobWV0YXZhcmlhYmxlTm9kZSkge1xuICAgIGNvbnN0IGNvbXBsZXhJbmZlcnJlZFN1YnN0aXR1dGlvbiA9IHRoaXMuZmluZEluZmVycmVkU3Vic3RpdHV0aW9ucygoaW5mZXJyZWRTdWJzdGl0dXRpb24pID0+IHtcbiAgICAgIGNvbnN0IGluZmVycmVkU3Vic3RpdHV0aW9uQ29tcGxleCA9IGluZmVycmVkU3Vic3RpdHV0aW9uLmlzQ29tcGxleCgpO1xuXG4gICAgICBpZiAoaW5mZXJyZWRTdWJzdGl0dXRpb25Db21wbGV4KSB7XG4gICAgICAgIGNvbnN0IGNvbXBsZXhJbmZlcnJlZFN1YnN0aXR1dGlvbiA9IGluZmVycmVkU3Vic3RpdHV0aW9uLCAgLy8vXG4gICAgICAgICAgICAgIG1ldGF2YXJpYWJsZU5vZGVNYXRjaGVzID0gY29tcGxleEluZmVycmVkU3Vic3RpdHV0aW9uLm1hdGNoTWV0YXZhcmlhYmxlTm9kZShtZXRhdmFyaWFibGVOb2RlKTtcblxuICAgICAgICBpZiAobWV0YXZhcmlhYmxlTm9kZU1hdGNoZXMpIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pIHx8IG51bGw7XG5cbiAgICByZXR1cm4gY29tcGxleEluZmVycmVkU3Vic3RpdHV0aW9uO1xuICB9XG5cbiAgZmluZEluZmVycmVkU3Vic3RpdHV0aW9uQnlNZXRhdmFyaWFibGVOb2RlQW5kU3Vic3RpdHV0aW9uTm9kZShtZXRhdmFyaWFibGVOb2RlLCBzdWJzdGl0dXRpb25Ob2RlKSB7XG4gICAgY29uc3QgaW5mZXJyZWRTdWJzdGl0dXRpb24gPSB0aGlzLmZpbmRJbmZlcnJlZFN1YnN0aXR1dGlvbigoaW5mZXJyZWRTdWJzdGl0dXRpb24pID0+IHsgIC8vL1xuICAgICAgICAgICAgY29uc3QgbWV0YXZhcmlhYmxlTm9kZU1hdGNoZXMgPSBpbmZlcnJlZFN1YnN0aXR1dGlvbi5tYXRjaE1ldGF2YXJpYWJsZU5vZGUobWV0YXZhcmlhYmxlTm9kZSk7XG5cbiAgICAgICAgICAgIGlmIChtZXRhdmFyaWFibGVOb2RlTWF0Y2hlcykge1xuICAgICAgICAgICAgICBjb25zdCBzdWJzdGl0dXRpb25Ob2RlTWF0Y2hlcyA9IGluZmVycmVkU3Vic3RpdHV0aW9uLm1hdGNoU3Vic3RpdHV0aW9uTm9kZShzdWJzdGl0dXRpb25Ob2RlKTtcblxuICAgICAgICAgICAgICBpZiAoc3Vic3RpdHV0aW9uTm9kZU1hdGNoZXMpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pIHx8IG51bGw7XG5cbiAgICByZXR1cm4gaW5mZXJyZWRTdWJzdGl0dXRpb247XG4gIH1cblxuICBpc0luZmVycmVkU3Vic3RpdHV0aW9uUHJlc2VudEJ5TWV0YXZhcmlhYmxlTm9kZShtZXRhdmFyaWFibGVOb2RlKSB7XG4gICAgY29uc3QgaW5mZXJyZWRTdWJzdGl0dXRpb24gPSB0aGlzLmZpbmRJbmZlcnJlZFN1YnN0aXR1dGlvbkJ5TWV0YXZhcmlhYmxlTm9kZShtZXRhdmFyaWFibGVOb2RlKSxcbiAgICAgICAgICBpbmZlcnJlZFN1YnN0aXR1dGlvblByZXNlbnQgPSAoaW5mZXJyZWRTdWJzdGl0dXRpb24gIT09IG51bGwpO1xuXG4gICAgcmV0dXJuIGluZmVycmVkU3Vic3RpdHV0aW9uUHJlc2VudDtcbiAgfVxuXG4gIGlzSW5mZXJyZWRTdWJzdGl0dXRpb25QcmVzZW50QnlNZXRhdmFyaWFibGVOb2RlQW5kU3Vic3RpdHV0aW9uTm9kZShtZXRhdmFyaWFibGVOb2RlLCBzdWJzdGl0dXRpb25Ob2RlKSB7XG4gICAgY29uc3QgaW5mZXJyZWRTdWJzdGl0dXRpb24gPSB0aGlzLmZpbmRJbmZlcnJlZFN1YnN0aXR1dGlvbkJ5TWV0YXZhcmlhYmxlTm9kZUFuZFN1YnN0aXR1dGlvbk5vZGUobWV0YXZhcmlhYmxlTm9kZSwgc3Vic3RpdHV0aW9uTm9kZSksXG4gICAgICAgICAgaW5mZXJyZWRTdWJzdGl0dXRpb25QcmVzZW50ID0gKGluZmVycmVkU3Vic3RpdHV0aW9uICE9PSBudWxsKTtcblxuICAgIHJldHVybiBpbmZlcnJlZFN1YnN0aXR1dGlvblByZXNlbnQ7XG4gIH1cblxuICBzdGF0aWMgZnJvbU5vdGhpbmcoY29udGV4dCkge1xuICAgIGNvbnN0IGluZmVycmVkU3Vic3RpdHV0aW9ucyA9IFtdLFxuICAgICAgICAgIGxpbWluYWxDb250ZXh0ID0gbmV3IExpbWluYWxDb250ZXh0KGNvbnRleHQsIGluZmVycmVkU3Vic3RpdHV0aW9ucyk7XG5cbiAgICByZXR1cm4gbGltaW5hbENvbnRleHQ7XG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJMaW1pbmFsQ29udGV4dCIsImZvckVhY2giLCJjb250aW51YXRpb25VdGlsaXRpZXMiLCJwdXNoIiwiZmluZCIsImZpcnN0IiwiYXJyYXlVdGlsaXRpZXMiLCJDb250ZXh0IiwiY29udGV4dCIsImluZmVycmVkU3Vic3RpdHV0aW9ucyIsImdldEluZmVycmVkU3Vic3RpdHV0aW9ucyIsImdldENvbnRleHQiLCJnZXRTb2xlSW5mZXJyZWRTdWJzdGl0dXRpb24iLCJzb2xlSW5mZXJyZWRTdWJzdGl0dXRpb24iLCJpbmZlcnJlZFN1YnN0aXR1dGlvbnNMZW5ndGgiLCJsZW5ndGgiLCJmaXJzdEluZmVycmVkU3Vic3RpdHV0aW9uIiwiZ2V0U2luZ3VsYXJOb25Ucml2aWFsSW5mZXJyZWRTdWJzdGl0dXRpb24iLCJzaW5ndWxhck5vblRyaXZpYWxJbmZlcnJlZFN1YnN0aXR1dGlvbiIsInNvbGVJbmZlcnJlZFN1YnN0aXR1dGlvbk5vblRyaXZpYWwiLCJpc05vblRyaXZpYWwiLCJhZGRTdWJzdGl0dXRpb24iLCJzdWJzdGl0dXRpb24iLCJhZGRJbmZlcnJlZFN1YnN0aXR1dGlvbiIsImluZmVycmVkU3Vic3RpdHV0aW9uIiwiaW5mZXJyZWRTdWJzdGl0dXRpb25BIiwiaW5mZXJyZWRTdWJzdGl0dXRpb25TdHJpbmciLCJnZXRTdHJpbmciLCJ0cmFjZSIsImluZmVycmVkU3Vic3RpdHV0aW9uQiIsImluZmVycmVkU3Vic3RpdHV0aW9uQUVxdWFsVG9JbmZlcnJlZFN1YnN0aXR1dGlvbkIiLCJpc0VxdWFsVG8iLCJkZWJ1ZyIsImFkZEluZmVycmVkU3Vic3RpdHV0aW9ucyIsInNvbHZlSW5mZXJyZWRTdWJzdGl0dXRpb25zIiwiZm9yd2FyZCIsImJhY2siLCJtZXRhdmFyaWFibGVOb2RlcyIsIm1ldGF2YXJpYWJsZU5vZGVzRnJvbUluZmVycmVkU3Vic3RpdHV0aW9ucyIsIm1ldGF2YXJpYWJsZU5vZGUiLCJjb21wbGV4SW5mZXJyZWRTdWJzdGl0dXRpb25zIiwiZmluZENvbXBsZXhJbmZlcnJlZFN1YnN0aXR1dGlvbnNCeU1ldGF2YXJpYWJsZU5vZGUiLCJjb21wbGV4SW5mZXJyZWRTdWJzdGl0dXRpb24iLCJzb2x2ZWQiLCJpc1NvbHZlZCIsInNvbHZlIiwiYXJlSW5mZXJyZWRTdWJzdGl0dXRpb25zU29sdmVkIiwiZXZlcnkiLCJjb21wbGV4SW5mZXJyZWRTdWJzdGl0dXRpb25zU29sdmVkIiwiY29tcGxleEluZmVycmVkU3Vic3RpdHV0aW9uU29sdmVkIiwiaXNFbXB0eSIsImVtcHR5IiwicXVhbGlmeSIsImFzc3VtcHRpb24iLCJjb25zdHJhaW50IiwicXVhbGlmaWVzIiwiUmVmZXJlbmNlSW5mZXJyZWRTdWJzdGl0dXRpb24iLCJlbGVtZW50cyIsInJlZmVyZW5jZUluZmVycmVkU3Vic3RpdHV0aW9uIiwiZnJvbUFzc3VtcHRpb25BbmRDb25zdHJhaW50IiwicmVmZXJlbmNlSW5mZXJyZWRTdWJzdGl0dXRpb25Db21wYXJlc1RvU3NvbGVJbmZlcnJlZFN1YnN0aXR1dGlvbiIsImNvbXBhcmVTdWJzdGl0dXRpb24iLCJtZXJnZSIsImZpbmRJbmZlcnJlZFN1YnN0aXR1dGlvbiIsImNhbGxiYWNrIiwiZmluZEluZmVycmVkU3Vic3RpdHV0aW9ucyIsImZpbmRJbmZlcnJlZFN1YnN0aXR1dGlvbkJ5VmFyaWFibGVOb2RlIiwidmFyaWFibGVOb2RlIiwidmFyaWFibGVOb2RlTWF0Y2hlcyIsIm1hdGNoVmFyaWFibGVOb2RlIiwiZmluZEluZmVycmVkU3Vic3RpdHV0aW9uQnlNZXRhdmFyaWFibGVOb2RlIiwic2ltcGxlSW5mZXJyZWRTdWJzdGl0dXRpb24iLCJmaW5kU2ltcGxlSW5mZXJyZWRTdWJzdGl0dXRpb25CeU1ldGF2YXJpYWJsZU5vZGUiLCJpbmZlcnJlZFN1YnN0aXR1dGlvblNpbXBsZSIsImlzU2ltcGxlIiwibWV0YXZhcmlhYmxlTm9kZU1hdGNoZXMiLCJtYXRjaE1ldGF2YXJpYWJsZU5vZGUiLCJpbmZlcnJlZFN1YnN0aXR1dGlvbkNvbXBsZXgiLCJpc0NvbXBsZXgiLCJmaW5kSW5mZXJyZWRTdWJzdGl0dXRpb25CeU1ldGF2YXJpYWJsZU5vZGVBbmRTdWJzdGl0dXRpb25Ob2RlIiwic3Vic3RpdHV0aW9uTm9kZSIsInN1YnN0aXR1dGlvbk5vZGVNYXRjaGVzIiwibWF0Y2hTdWJzdGl0dXRpb25Ob2RlIiwiaXNJbmZlcnJlZFN1YnN0aXR1dGlvblByZXNlbnRCeU1ldGF2YXJpYWJsZU5vZGUiLCJpbmZlcnJlZFN1YnN0aXR1dGlvblByZXNlbnQiLCJpc0luZmVycmVkU3Vic3RpdHV0aW9uUHJlc2VudEJ5TWV0YXZhcmlhYmxlTm9kZUFuZFN1YnN0aXR1dGlvbk5vZGUiLCJmcm9tTm90aGluZyIsImxpbWluYWxDb250ZXh0Il0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFhQTs7O2VBQXFCQTs7OzJCQVhVO2dDQUNPO2dFQUVsQjtpRUFDQzsrQkFFc0M7Ozs7OztBQUUzRCxNQUFNLEVBQUVDLE9BQU8sRUFBRSxHQUFHQyxxQ0FBcUIsRUFDbkMsRUFBRUMsSUFBSSxFQUFFQyxJQUFJLEVBQUVDLEtBQUssRUFBRSxHQUFHQyx5QkFBYztBQUU3QixNQUFNTix1QkFBdUJPLGdCQUFPO0lBQ2pELFlBQVlDLE9BQU8sRUFBRUMscUJBQXFCLENBQUU7UUFDMUMsS0FBSyxDQUFDRDtRQUVOLElBQUksQ0FBQ0MscUJBQXFCLEdBQUdBO0lBQy9CO0lBRUFDLHlCQUF5QkQsd0JBQXdCLEVBQUUsRUFBRTtRQUNuRCxNQUFNRCxVQUFVLElBQUksQ0FBQ0csVUFBVTtRQUUvQlIsS0FBS00sdUJBQXVCLElBQUksQ0FBQ0EscUJBQXFCO1FBRXRERCxRQUFRRSx3QkFBd0IsQ0FBQ0Q7UUFFakMsT0FBT0E7SUFDVDtJ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
|
|
202
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb250ZXh0L2xpbWluYWwuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IGFycmF5VXRpbGl0aWVzIH0gZnJvbSBcIm5lY2Vzc2FyeVwiO1xuaW1wb3J0IHsgY29udGludWF0aW9uVXRpbGl0aWVzIH0gZnJvbSBcIm9jY2FtLWxhbmd1YWdlc1wiO1xuXG5pbXBvcnQgQ29udGV4dCBmcm9tIFwiLi4vY29udGV4dFwiO1xuaW1wb3J0IGVsZW1lbnRzIGZyb20gXCIuLi9lbGVtZW50c1wiO1xuXG5pbXBvcnQgeyBtZXRhdmFyaWFibGVOb2Rlc0Zyb21JbmZlcnJlZFN1YnN0aXR1dGlvbnMgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL3N1YnN0aXR1dGlvbnNcIjtcblxuY29uc3QgeyBjdXQsIGZvckVhY2ggfSA9IGNvbnRpbnVhdGlvblV0aWxpdGllcyxcbiAgICAgIHsgcHVzaCwgZmluZCwgZmlyc3QgfSA9IGFycmF5VXRpbGl0aWVzO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBMaW1pbmFsQ29udGV4dCBleHRlbmRzIENvbnRleHQge1xuICBjb25zdHJ1Y3Rvcihjb250ZXh0LCBpbmZlcnJlZFN1YnN0aXR1dGlvbnMpIHtcbiAgICBzdXBlcihjb250ZXh0KTtcblxuICAgIHRoaXMuaW5mZXJyZWRTdWJzdGl0dXRpb25zID0gaW5mZXJyZWRTdWJzdGl0dXRpb25zO1xuICB9XG5cbiAgZ2V0SW5mZXJyZWRTdWJzdGl0dXRpb25zKGluZmVycmVkU3Vic3RpdHV0aW9ucyA9IFtdKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpO1xuXG4gICAgcHVzaChpbmZlcnJlZFN1YnN0aXR1dGlvbnMsIHRoaXMuaW5mZXJyZWRTdWJzdGl0dXRpb25zKTtcblxuICAgIGNvbnRleHQuZ2V0SW5mZXJyZWRTdWJzdGl0dXRpb25zKGluZmVycmVkU3Vic3RpdHV0aW9ucyk7XG5cbiAgICByZXR1cm4gaW5mZXJyZWRTdWJzdGl0dXRpb25zO1xuICB9XG5cbiAgZ2V0U29sZUluZmVycmVkU3Vic3RpdHV0aW9uKCkge1xuICAgIGxldCBzb2xlSW5mZXJyZWRTdWJzdGl0dXRpb24gPSBudWxsO1xuXG4gICAgY29uc3QgaW5mZXJyZWRTdWJzdGl0dXRpb25zTGVuZ3RoID0gdGhpcy5pbmZlcnJlZFN1YnN0aXR1dGlvbnMubGVuZ3RoO1xuXG4gICAgaWYgKGluZmVycmVkU3Vic3RpdHV0aW9uc0xlbmd0aCA9PT0gMSkge1xuICAgICAgY29uc3QgZmlyc3RJbmZlcnJlZFN1YnN0aXR1dGlvbiA9IGZpcnN0KHRoaXMuaW5mZXJyZWRTdWJzdGl0dXRpb25zKTtcblxuICAgICAgc29sZUluZmVycmVkU3Vic3RpdHV0aW9uID0gZmlyc3RJbmZlcnJlZFN1YnN0aXR1dGlvbjsgLy8vXG4gICAgfVxuXG4gICAgcmV0dXJuIHNvbGVJbmZlcnJlZFN1YnN0aXR1dGlvbjtcbiAgfVxuXG4gIGdldFNpbmd1bGFyTm9uVHJpdmlhbEluZmVycmVkU3Vic3RpdHV0aW9uKCkge1xuICAgIGxldCBzaW5ndWxhck5vblRyaXZpYWxJbmZlcnJlZFN1YnN0aXR1dGlvbiA9IG51bGw7XG5cbiAgICBjb25zdCBzb2xlSW5mZXJyZWRTdWJzdGl0dXRpb24gPSB0aGlzLmdldFNvbGVJbmZlcnJlZFN1YnN0aXR1dGlvbigpO1xuXG4gICAgaWYgKHNvbGVJbmZlcnJlZFN1YnN0aXR1dGlvbiAhPT0gbnVsbCkge1xuICAgICAgY29uc3Qgc29sZUluZmVycmVkU3Vic3RpdHV0aW9uTm9uVHJpdmlhbCA9IHNvbGVJbmZlcnJlZFN1YnN0aXR1dGlvbi5pc05vblRyaXZpYWwoKTtcblxuICAgICAgaWYgKHNvbGVJbmZlcnJlZFN1YnN0aXR1dGlvbk5vblRyaXZpYWwpIHtcbiAgICAgICAgc2luZ3VsYXJOb25Ucml2aWFsSW5mZXJyZWRTdWJzdGl0dXRpb24gPSBzb2xlSW5mZXJyZWRTdWJzdGl0dXRpb247ICAvLy9cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gc2luZ3VsYXJOb25Ucml2aWFsSW5mZXJyZWRTdWJzdGl0dXRpb247XG4gIH1cblxuICBhZGRTdWJzdGl0dXRpb24oc3Vic3RpdHV0aW9uKSB7XG4gICAgLy8vXG4gIH1cblxuICBhZGRJbmZlcnJlZFN1YnN0aXR1dGlvbihpbmZlcnJlZFN1YnN0aXR1dGlvbikge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLCAvLy9cbiAgICAgICAgICBpbmZlcnJlZFN1YnN0aXR1dGlvbkEgPSBpbmZlcnJlZFN1YnN0aXR1dGlvbiwgLy8vXG4gICAgICAgICAgaW5mZXJyZWRTdWJzdGl0dXRpb25TdHJpbmcgPSBpbmZlcnJlZFN1YnN0aXR1dGlvbi5nZXRTdHJpbmcoKTtcblxuICAgIGNvbnRleHQudHJhY2UoYEFkZGluZyB0aGUgJyR7aW5mZXJyZWRTdWJzdGl0dXRpb25TdHJpbmd9JyBpbmZlcnJlZCBzdWJzdGl0dXRpb24gdG8gdGhlIGxpbWluYWwgY29udGV4dC4uLmApO1xuXG4gICAgY29uc3QgaW5mZXJyZWRTdWJzdGl0dXRpb25CID0gdGhpcy5pbmZlcnJlZFN1YnN0aXR1dGlvbnMuZmluZCgoaW5mZXJyZWRTdWJzdGl0dXRpb24pID0+IHtcbiAgICAgIGNvbnN0IGluZmVycmVkU3Vic3RpdHV0aW9uQiA9IGluZmVycmVkU3Vic3RpdHV0aW9uLCAvLy9cbiAgICAgICAgICAgIGluZmVycmVkU3Vic3RpdHV0aW9uQUVxdWFsVG9JbmZlcnJlZFN1YnN0aXR1dGlvbkIgPSBpbmZlcnJlZFN1YnN0aXR1dGlvbkEuaXNFcXVhbFRvKGluZmVycmVkU3Vic3RpdHV0aW9uQik7XG5cbiAgICAgIGlmIChpbmZlcnJlZFN1YnN0aXR1dGlvbkFFcXVhbFRvSW5mZXJyZWRTdWJzdGl0dXRpb25CKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH0pIHx8IG51bGw7XG5cbiAgICBpZiAoaW5mZXJyZWRTdWJzdGl0dXRpb25CICE9PSBudWxsKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGBUaGUgJyR7aW5mZXJyZWRTdWJzdGl0dXRpb25TdHJpbmd9JyBpbmZlcnJlZCBzdWJzdGl0dXRpb24gaGFzIGFscmVhZHkgYmVlbiBhZGRlZCB0byB0aGUgbGltaW5hbCBjb250ZXh0LmApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmluZmVycmVkU3Vic3RpdHV0aW9ucy5wdXNoKGluZmVycmVkU3Vic3RpdHV0aW9uKTtcbiAgICB9XG5cbiAgICBjb250ZXh0LmRlYnVnKGAuLi5hZGRlZCB0aGUgJyR7aW5mZXJyZWRTdWJzdGl0dXRpb25TdHJpbmd9JyBpbmZlcnJlZCBzdWJzdGl0dXRpb24gdG8gdGhlIGxpbWluYWwgY29udGV4dC5gKTtcbiAgfVxuXG4gIGFkZEluZmVycmVkU3Vic3RpdHV0aW9ucyhpbmZlcnJlZFN1YnN0aXR1dGlvbnMpIHtcbiAgICBpbmZlcnJlZFN1YnN0aXR1dGlvbnMuZm9yRWFjaCgoaW5mZXJyZWRTdWJzdGl0dXRpb24pID0+IHtcbiAgICAgIHRoaXMuYWRkSW5mZXJyZWRTdWJzdGl0dXRpb24oaW5mZXJyZWRTdWJzdGl0dXRpb24pO1xuICAgIH0pO1xuICB9XG5cbiAgc29sdmVJbmZlcnJlZFN1YnN0aXR1dGlvbnMoZm9yd2FyZCwgYmFjaykge1xuICAgIGZvcndhcmQgPSBjdXQoZm9yd2FyZCwgYmFjayk7IC8vL1xuXG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMsIC8vL1xuICAgICAgICAgIGluZmVycmVkU3Vic3RpdHV0aW9ucyA9IHRoaXMuZ2V0SW5mZXJyZWRTdWJzdGl0dXRpb25zKCksXG4gICAgICAgICAgbWV0YXZhcmlhYmxlTm9kZXMgPSBtZXRhdmFyaWFibGVOb2Rlc0Zyb21JbmZlcnJlZFN1YnN0aXR1dGlvbnMoaW5mZXJyZWRTdWJzdGl0dXRpb25zKTtcblxuICAgIHJldHVybiBmb3JFYWNoKG1ldGF2YXJpYWJsZU5vZGVzLCAobWV0YXZhcmlhYmxlTm9kZSwgZm9yd2FyZCwgYmFjaykgPT4ge1xuICAgICAgY29uc3QgY29tcGxleEluZmVycmVkU3Vic3RpdHV0aW9ucyA9IHRoaXMuZmluZENvbXBsZXhJbmZlcnJlZFN1YnN0aXR1dGlvbnNCeU1ldGF2YXJpYWJsZU5vZGUobWV0YXZhcmlhYmxlTm9kZSk7XG5cbiAgICAgIHJldHVybiBmb3JFYWNoKGNvbXBsZXhJbmZlcnJlZFN1YnN0aXR1dGlvbnMsIChjb21wbGV4SW5mZXJyZWRTdWJzdGl0dXRpb24sIGZvcndhcmQsIGJhY2spID0+IHtcbiAgICAgICAgY29uc3QgaW5mZXJyZWRTdWJzdGl0dXRpb24gPSBjb21wbGV4SW5mZXJyZWRTdWJzdGl0dXRpb24sIC8vL1xuICAgICAgICAgICAgICBzb2x2ZWQgPSBpbmZlcnJlZFN1YnN0aXR1dGlvbi5pc1NvbHZlZCgpO1xuXG4gICAgICAgIGlmIChzb2x2ZWQpIHtcbiAgICAgICAgICByZXR1cm4gZm9yd2FyZChjb250ZXh0LCBiYWNrKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBpbmZlcnJlZFN1YnN0aXR1dGlvbi5zb2x2ZShjb250ZXh0LCBmb3J3YXJkLCBiYWNrKTtcbiAgICAgIH0sIGZvcndhcmQsIGJhY2spO1xuICAgIH0sIGZvcndhcmQsIGJhY2spO1xuICB9XG5cbiAgYXJlSW5mZXJyZWRTdWJzdGl0dXRpb25zU29sdmVkKCkge1xuICAgIGNvbnN0IGluZmVycmVkU3Vic3RpdHV0aW9ucyA9IHRoaXMuZ2V0SW5mZXJyZWRTdWJzdGl0dXRpb25zKCksXG4gICAgICAgICAgbWV0YXZhcmlhYmxlTm9kZXMgPSBtZXRhdmFyaWFibGVOb2Rlc0Zyb21JbmZlcnJlZFN1YnN0aXR1dGlvbnMoaW5mZXJyZWRTdWJzdGl0dXRpb25zKSxcbiAgICAgICAgICBzb2x2ZWQgPSBtZXRhdmFyaWFibGVOb2Rlcy5ldmVyeSgobWV0YXZhcmlhYmxlTm9kZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgY29tcGxleEluZmVycmVkU3Vic3RpdHV0aW9ucyA9IHRoaXMuZmluZENvbXBsZXhJbmZlcnJlZFN1YnN0aXR1dGlvbnNCeU1ldGF2YXJpYWJsZU5vZGUobWV0YXZhcmlhYmxlTm9kZSksXG4gICAgICAgICAgICAgICAgICBjb21wbGV4SW5mZXJyZWRTdWJzdGl0dXRpb25zU29sdmVkID0gY29tcGxleEluZmVycmVkU3Vic3RpdHV0aW9ucy5ldmVyeSgoY29tcGxleEluZmVycmVkU3Vic3RpdHV0aW9uKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNvbXBsZXhJbmZlcnJlZFN1YnN0aXR1dGlvblNvbHZlZCA9IGNvbXBsZXhJbmZlcnJlZFN1YnN0aXR1dGlvbi5pc1NvbHZlZCgpO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChjb21wbGV4SW5mZXJyZWRTdWJzdGl0dXRpb25Tb2x2ZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGlmIChjb21wbGV4SW5mZXJyZWRTdWJzdGl0dXRpb25zU29sdmVkKSB7XG4gICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuXG4gICAgcmV0dXJuIHNvbHZlZDtcbiAgfVxuXG4gIGlzRW1wdHkoKSB7XG4gICAgY29uc3QgaW5mZXJyZWRTdWJzdGl0dXRpb25zTGVuZ3RoID0gdGhpcy5pbmZlcnJlZFN1YnN0aXR1dGlvbnMubGVuZ3RoLFxuICAgICAgICAgIGVtcHR5ID0gKGluZmVycmVkU3Vic3RpdHV0aW9uc0xlbmd0aCA9PT0gMCk7XG5cbiAgICByZXR1cm4gZW1wdHk7XG4gIH1cblxuICBxdWFsaWZ5KGFzc3VtcHRpb24sIGNvbnN0cmFpbnQpIHtcbiAgICBsZXQgcXVhbGlmaWVzID0gZmFsc2U7XG5cbiAgICBjb25zdCBlbXB0eSA9IHRoaXMuaXNFbXB0eSgpO1xuXG4gICAgaWYgKGVtcHR5KSB7XG4gICAgICBxdWFsaWZpZXMgPSB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBzb2xlSW5mZXJyZWRTdWJzdGl0dXRpb24gPSB0aGlzLmdldFNvbGVJbmZlcnJlZFN1YnN0aXR1dGlvbigpO1xuXG4gICAgICBpZiAoc29sZUluZmVycmVkU3Vic3RpdHV0aW9uICE9PSBudWxsKSB7XG4gICAgICAgIGNvbnN0IHsgUmVmZXJlbmNlSW5mZXJyZWRTdWJzdGl0dXRpb24gfSA9IGVsZW1lbnRzLFxuICAgICAgICAgICAgICBjb250ZXh0ID0gdGhpcywgLy8vXG4gICAgICAgICAgICAgIHJlZmVyZW5jZUluZmVycmVkU3Vic3RpdHV0aW9uID0gUmVmZXJlbmNlSW5mZXJyZWRTdWJzdGl0dXRpb24uZnJvbUFzc3VtcHRpb25BbmRDb25zdHJhaW50KGFzc3VtcHRpb24sIGNvbnN0cmFpbnQsIGNvbnRleHQpLFxuICAgICAgICAgICAgICByZWZlcmVuY2VJbmZlcnJlZFN1YnN0aXR1dGlvbkNvbXBhcmVzVG9Tc29sZUluZmVycmVkU3Vic3RpdHV0aW9uID0gcmVmZXJlbmNlSW5mZXJyZWRTdWJzdGl0dXRpb24uY29tcGFyZVN1YnN0aXR1dGlvbihzb2xlSW5mZXJyZWRTdWJzdGl0dXRpb24pO1xuXG4gICAgICAgIGlmIChyZWZlcmVuY2VJbmZlcnJlZFN1YnN0aXR1dGlvbkNvbXBhcmVzVG9Tc29sZUluZmVycmVkU3Vic3RpdHV0aW9uKSB7XG4gICAgICAgICAgcXVhbGlmaWVzID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBxdWFsaWZpZXM7XG4gIH1cblxuICBtZXJnZShjb250ZXh0KSB7XG4gICAgY29udGV4dC5kZWJ1ZyhgTWVyZ2luZyB0aGUgbGltaW5hbCBjb250ZXh0YCk7XG5cbiAgICBjb250ZXh0LmFkZEluZmVycmVkU3Vic3RpdHV0aW9ucyh0aGlzLmluZmVycmVkU3Vic3RpdHV0aW9ucyk7XG4gIH1cblxuICBmaW5kSW5mZXJyZWRTdWJzdGl0dXRpb24oY2FsbGJhY2spIHtcbiAgICBjb25zdCBpbmZlcnJlZFN1YnN0aXR1dGlvbnMgPSB0aGlzLmdldEluZmVycmVkU3Vic3RpdHV0aW9ucygpLFxuICAgICAgICAgIGluZmVycmVkU3Vic3RpdHV0aW9uID0gaW5mZXJyZWRTdWJzdGl0dXRpb25zLmZpbmQoY2FsbGJhY2spO1xuXG4gICAgcmV0dXJuIGluZmVycmVkU3Vic3RpdHV0aW9uO1xuICB9XG5cbiAgZmluZEluZmVycmVkU3Vic3RpdHV0aW9ucyhjYWxsYmFjaykge1xuICAgIGxldCBpbmZlcnJlZFN1YnN0aXR1dGlvbnM7XG5cbiAgICBpbmZlcnJlZFN1YnN0aXR1dGlvbnMgPSB0aGlzLmdldEluZmVycmVkU3Vic3RpdHV0aW9ucygpO1xuXG4gICAgaW5mZXJyZWRTdWJzdGl0dXRpb25zID0gZmluZChpbmZlcnJlZFN1YnN0aXR1dGlvbnMsIGNhbGxiYWNrKTsgIC8vL1xuXG4gICAgcmV0dXJuIGluZmVycmVkU3Vic3RpdHV0aW9ucztcbiAgfVxuXG4gIGZpbmRJbmZlcnJlZFN1YnN0aXR1dGlvbkJ5VmFyaWFibGVOb2RlKHZhcmlhYmxlTm9kZSkge1xuICAgIGNvbnN0IGluZmVycmVkU3Vic3RpdHV0aW9uID0gdGhpcy5maW5kSW5mZXJyZWRTdWJzdGl0dXRpb24oKGluZmVycmVkU3Vic3RpdHV0aW9uKSA9PiB7XG4gICAgICBjb25zdCB2YXJpYWJsZU5vZGVNYXRjaGVzID0gaW5mZXJyZWRTdWJzdGl0dXRpb24ubWF0Y2hWYXJpYWJsZU5vZGUodmFyaWFibGVOb2RlKTtcblxuICAgICAgaWYgKHZhcmlhYmxlTm9kZU1hdGNoZXMpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfSkgfHwgbnVsbDtcblxuICAgIHJldHVybiBpbmZlcnJlZFN1YnN0aXR1dGlvbjtcbiAgfVxuXG4gIGZpbmRJbmZlcnJlZFN1YnN0aXR1dGlvbkJ5TWV0YXZhcmlhYmxlTm9kZShtZXRhdmFyaWFibGVOb2RlKSB7XG4gICAgY29uc3Qgc2ltcGxlSW5mZXJyZWRTdWJzdGl0dXRpb24gPSB0aGlzLmZpbmRTaW1wbGVJbmZlcnJlZFN1YnN0aXR1dGlvbkJ5TWV0YXZhcmlhYmxlTm9kZShtZXRhdmFyaWFibGVOb2RlKSxcbiAgICAgICAgICBpbmZlcnJlZFN1YnN0aXR1dGlvbiA9IHNpbXBsZUluZmVycmVkU3Vic3RpdHV0aW9uOyAgLy8vXG5cbiAgICByZXR1cm4gaW5mZXJyZWRTdWJzdGl0dXRpb247XG4gIH1cblxuICBmaW5kU2ltcGxlSW5mZXJyZWRTdWJzdGl0dXRpb25CeU1ldGF2YXJpYWJsZU5vZGUobWV0YXZhcmlhYmxlTm9kZSkge1xuICAgIGNvbnN0IHNpbXBsZUluZmVycmVkU3Vic3RpdHV0aW9uID0gdGhpcy5maW5kSW5mZXJyZWRTdWJzdGl0dXRpb24oKGluZmVycmVkU3Vic3RpdHV0aW9uKSA9PiB7XG4gICAgICBjb25zdCBpbmZlcnJlZFN1YnN0aXR1dGlvblNpbXBsZSA9IGluZmVycmVkU3Vic3RpdHV0aW9uLmlzU2ltcGxlKCk7XG5cbiAgICAgIGlmIChpbmZlcnJlZFN1YnN0aXR1dGlvblNpbXBsZSkge1xuICAgICAgICBjb25zdCBzaW1wbGVJbmZlcnJlZFN1YnN0aXR1dGlvbiA9IGluZmVycmVkU3Vic3RpdHV0aW9uLCAgLy8vXG4gICAgICAgICAgICAgIG1ldGF2YXJpYWJsZU5vZGVNYXRjaGVzID0gc2ltcGxlSW5mZXJyZWRTdWJzdGl0dXRpb24ubWF0Y2hNZXRhdmFyaWFibGVOb2RlKG1ldGF2YXJpYWJsZU5vZGUpO1xuXG4gICAgICAgIGlmIChtZXRhdmFyaWFibGVOb2RlTWF0Y2hlcykge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSkgfHwgbnVsbDtcblxuICAgIHJldHVybiBzaW1wbGVJbmZlcnJlZFN1YnN0aXR1dGlvbjtcbiAgfVxuXG4gIGZpbmRDb21wbGV4SW5mZXJyZWRTdWJzdGl0dXRpb25zQnlNZXRhdmFyaWFibGVOb2RlKG1ldGF2YXJpYWJsZU5vZGUpIHtcbiAgICBjb25zdCBjb21wbGV4SW5mZXJyZWRTdWJzdGl0dXRpb24gPSB0aGlzLmZpbmRJbmZlcnJlZFN1YnN0aXR1dGlvbnMoKGluZmVycmVkU3Vic3RpdHV0aW9uKSA9PiB7XG4gICAgICBjb25zdCBpbmZlcnJlZFN1YnN0aXR1dGlvbkNvbXBsZXggPSBpbmZlcnJlZFN1YnN0aXR1dGlvbi5pc0NvbXBsZXgoKTtcblxuICAgICAgaWYgKGluZmVycmVkU3Vic3RpdHV0aW9uQ29tcGxleCkge1xuICAgICAgICBjb25zdCBjb21wbGV4SW5mZXJyZWRTdWJzdGl0dXRpb24gPSBpbmZlcnJlZFN1YnN0aXR1dGlvbiwgIC8vL1xuICAgICAgICAgICAgICBtZXRhdmFyaWFibGVOb2RlTWF0Y2hlcyA9IGNvbXBsZXhJbmZlcnJlZFN1YnN0aXR1dGlvbi5tYXRjaE1ldGF2YXJpYWJsZU5vZGUobWV0YXZhcmlhYmxlTm9kZSk7XG5cbiAgICAgICAgaWYgKG1ldGF2YXJpYWJsZU5vZGVNYXRjaGVzKSB7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KSB8fCBudWxsO1xuXG4gICAgcmV0dXJuIGNvbXBsZXhJbmZlcnJlZFN1YnN0aXR1dGlvbjtcbiAgfVxuXG4gIGZpbmRJbmZlcnJlZFN1YnN0aXR1dGlvbkJ5TWV0YXZhcmlhYmxlTm9kZUFuZFN1YnN0aXR1dGlvbk5vZGUobWV0YXZhcmlhYmxlTm9kZSwgc3Vic3RpdHV0aW9uTm9kZSkge1xuICAgIGNvbnN0IGluZmVycmVkU3Vic3RpdHV0aW9uID0gdGhpcy5maW5kSW5mZXJyZWRTdWJzdGl0dXRpb24oKGluZmVycmVkU3Vic3RpdHV0aW9uKSA9PiB7ICAvLy9cbiAgICAgICAgICAgIGNvbnN0IG1ldGF2YXJpYWJsZU5vZGVNYXRjaGVzID0gaW5mZXJyZWRTdWJzdGl0dXRpb24ubWF0Y2hNZXRhdmFyaWFibGVOb2RlKG1ldGF2YXJpYWJsZU5vZGUpO1xuXG4gICAgICAgICAgICBpZiAobWV0YXZhcmlhYmxlTm9kZU1hdGNoZXMpIHtcbiAgICAgICAgICAgICAgY29uc3Qgc3Vic3RpdHV0aW9uTm9kZU1hdGNoZXMgPSBpbmZlcnJlZFN1YnN0aXR1dGlvbi5tYXRjaFN1YnN0aXR1dGlvbk5vZGUoc3Vic3RpdHV0aW9uTm9kZSk7XG5cbiAgICAgICAgICAgICAgaWYgKHN1YnN0aXR1dGlvbk5vZGVNYXRjaGVzKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KSB8fCBudWxsO1xuXG4gICAgcmV0dXJuIGluZmVycmVkU3Vic3RpdHV0aW9uO1xuICB9XG5cbiAgaXNJbmZlcnJlZFN1YnN0aXR1dGlvblByZXNlbnRCeU1ldGF2YXJpYWJsZU5vZGUobWV0YXZhcmlhYmxlTm9kZSkge1xuICAgIGNvbnN0IGluZmVycmVkU3Vic3RpdHV0aW9uID0gdGhpcy5maW5kSW5mZXJyZWRTdWJzdGl0dXRpb25CeU1ldGF2YXJpYWJsZU5vZGUobWV0YXZhcmlhYmxlTm9kZSksXG4gICAgICAgICAgaW5mZXJyZWRTdWJzdGl0dXRpb25QcmVzZW50ID0gKGluZmVycmVkU3Vic3RpdHV0aW9uICE9PSBudWxsKTtcblxuICAgIHJldHVybiBpbmZlcnJlZFN1YnN0aXR1dGlvblByZXNlbnQ7XG4gIH1cblxuICBpc0luZmVycmVkU3Vic3RpdHV0aW9uUHJlc2VudEJ5TWV0YXZhcmlhYmxlTm9kZUFuZFN1YnN0aXR1dGlvbk5vZGUobWV0YXZhcmlhYmxlTm9kZSwgc3Vic3RpdHV0aW9uTm9kZSkge1xuICAgIGNvbnN0IGluZmVycmVkU3Vic3RpdHV0aW9uID0gdGhpcy5maW5kSW5mZXJyZWRTdWJzdGl0dXRpb25CeU1ldGF2YXJpYWJsZU5vZGVBbmRTdWJzdGl0dXRpb25Ob2RlKG1ldGF2YXJpYWJsZU5vZGUsIHN1YnN0aXR1dGlvbk5vZGUpLFxuICAgICAgICAgIGluZmVycmVkU3Vic3RpdHV0aW9uUHJlc2VudCA9IChpbmZlcnJlZFN1YnN0aXR1dGlvbiAhPT0gbnVsbCk7XG5cbiAgICByZXR1cm4gaW5mZXJyZWRTdWJzdGl0dXRpb25QcmVzZW50O1xuICB9XG5cbiAgc3RhdGljIGZyb21Ob3RoaW5nKGNvbnRleHQpIHtcbiAgICBjb25zdCBpbmZlcnJlZFN1YnN0aXR1dGlvbnMgPSBbXSxcbiAgICAgICAgICBsaW1pbmFsQ29udGV4dCA9IG5ldyBMaW1pbmFsQ29udGV4dChjb250ZXh0LCBpbmZlcnJlZFN1YnN0aXR1dGlvbnMpO1xuXG4gICAgcmV0dXJuIGxpbWluYWxDb250ZXh0O1xuICB9XG59XG4iXSwibmFtZXMiOlsiTGltaW5hbENvbnRleHQiLCJjdXQiLCJmb3JFYWNoIiwiY29udGludWF0aW9uVXRpbGl0aWVzIiwicHVzaCIsImZpbmQiLCJmaXJzdCIsImFycmF5VXRpbGl0aWVzIiwiQ29udGV4dCIsImNvbnRleHQiLCJpbmZlcnJlZFN1YnN0aXR1dGlvbnMiLCJnZXRJbmZlcnJlZFN1YnN0aXR1dGlvbnMiLCJnZXRDb250ZXh0IiwiZ2V0U29sZUluZmVycmVkU3Vic3RpdHV0aW9uIiwic29sZUluZmVycmVkU3Vic3RpdHV0aW9uIiwiaW5mZXJyZWRTdWJzdGl0dXRpb25zTGVuZ3RoIiwibGVuZ3RoIiwiZmlyc3RJbmZlcnJlZFN1YnN0aXR1dGlvbiIsImdldFNpbmd1bGFyTm9uVHJpdmlhbEluZmVycmVkU3Vic3RpdHV0aW9uIiwic2luZ3VsYXJOb25Ucml2aWFsSW5mZXJyZWRTdWJzdGl0dXRpb24iLCJzb2xlSW5mZXJyZWRTdWJzdGl0dXRpb25Ob25Ucml2aWFsIiwiaXNOb25Ucml2aWFsIiwiYWRkU3Vic3RpdHV0aW9uIiwic3Vic3RpdHV0aW9uIiwiYWRkSW5mZXJyZWRTdWJzdGl0dXRpb24iLCJpbmZlcnJlZFN1YnN0aXR1dGlvbiIsImluZmVycmVkU3Vic3RpdHV0aW9uQSIsImluZmVycmVkU3Vic3RpdHV0aW9uU3RyaW5nIiwiZ2V0U3RyaW5nIiwidHJhY2UiLCJpbmZlcnJlZFN1YnN0aXR1dGlvbkIiLCJpbmZlcnJlZFN1YnN0aXR1dGlvbkFFcXVhbFRvSW5mZXJyZWRTdWJzdGl0dXRpb25CIiwiaXNFcXVhbFRvIiwiZGVidWciLCJhZGRJbmZlcnJlZFN1YnN0aXR1dGlvbnMiLCJzb2x2ZUluZmVycmVkU3Vic3RpdHV0aW9ucyIsImZvcndhcmQiLCJiYWNrIiwibWV0YXZhcmlhYmxlTm9kZXMiLCJtZXRhdmFyaWFibGVOb2Rlc0Zyb21JbmZlcnJlZFN1YnN0aXR1dGlvbnMiLCJtZXRhdmFyaWFibGVOb2RlIiwiY29tcGxleEluZmVycmVkU3Vic3RpdHV0aW9ucyIsImZpbmRDb21wbGV4SW5mZXJyZWRTdWJzdGl0dXRpb25zQnlNZXRhdmFyaWFibGVOb2RlIiwiY29tcGxleEluZmVycmVkU3Vic3RpdHV0aW9uIiwic29sdmVkIiwiaXNTb2x2ZWQiLCJzb2x2ZSIsImFyZUluZmVycmVkU3Vic3RpdHV0aW9uc1NvbHZlZCIsImV2ZXJ5IiwiY29tcGxleEluZmVycmVkU3Vic3RpdHV0aW9uc1NvbHZlZCIsImNvbXBsZXhJbmZlcnJlZFN1YnN0aXR1dGlvblNvbHZlZCIsImlzRW1wdHkiLCJlbXB0eSIsInF1YWxpZnkiLCJhc3N1bXB0aW9uIiwiY29uc3RyYWludCIsInF1YWxpZmllcyIsIlJlZmVyZW5jZUluZmVycmVkU3Vic3RpdHV0aW9uIiwiZWxlbWVudHMiLCJyZWZlcmVuY2VJbmZlcnJlZFN1YnN0aXR1dGlvbiIsImZyb21Bc3N1bXB0aW9uQW5kQ29uc3RyYWludCIsInJlZmVyZW5jZUluZmVycmVkU3Vic3RpdHV0aW9uQ29tcGFyZXNUb1Nzb2xlSW5mZXJyZWRTdWJzdGl0dXRpb24iLCJjb21wYXJlU3Vic3RpdHV0aW9uIiwibWVyZ2UiLCJmaW5kSW5mZXJyZWRTdWJzdGl0dXRpb24iLCJjYWxsYmFjayIsImZpbmRJbmZlcnJlZFN1YnN0aXR1dGlvbnMiLCJmaW5kSW5mZXJyZWRTdWJzdGl0dXRpb25CeVZhcmlhYmxlTm9kZSIsInZhcmlhYmxlTm9kZSIsInZhcmlhYmxlTm9kZU1hdGNoZXMiLCJtYXRjaFZhcmlhYmxlTm9kZSIsImZpbmRJbmZlcnJlZFN1YnN0aXR1dGlvbkJ5TWV0YXZhcmlhYmxlTm9kZSIsInNpbXBsZUluZmVycmVkU3Vic3RpdHV0aW9uIiwiZmluZFNpbXBsZUluZmVycmVkU3Vic3RpdHV0aW9uQnlNZXRhdmFyaWFibGVOb2RlIiwiaW5mZXJyZWRTdWJzdGl0dXRpb25TaW1wbGUiLCJpc1NpbXBsZSIsIm1ldGF2YXJpYWJsZU5vZGVNYXRjaGVzIiwibWF0Y2hNZXRhdmFyaWFibGVOb2RlIiwiaW5mZXJyZWRTdWJzdGl0dXRpb25Db21wbGV4IiwiaXNDb21wbGV4IiwiZmluZEluZmVycmVkU3Vic3RpdHV0aW9uQnlNZXRhdmFyaWFibGVOb2RlQW5kU3Vic3RpdHV0aW9uTm9kZSIsInN1YnN0aXR1dGlvbk5vZGUiLCJzdWJzdGl0dXRpb25Ob2RlTWF0Y2hlcyIsIm1hdGNoU3Vic3RpdHV0aW9uTm9kZSIsImlzSW5mZXJyZWRTdWJzdGl0dXRpb25QcmVzZW50QnlNZXRhdmFyaWFibGVOb2RlIiwiaW5mZXJyZWRTdWJzdGl0dXRpb25QcmVzZW50IiwiaXNJbmZlcnJlZFN1YnN0aXR1dGlvblByZXNlbnRCeU1ldGF2YXJpYWJsZU5vZGVBbmRTdWJzdGl0dXRpb25Ob2RlIiwiZnJvbU5vdGhpbmciLCJsaW1pbmFsQ29udGV4dCJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBYUE7OztlQUFxQkE7OzsyQkFYVTtnQ0FDTztnRUFFbEI7aUVBQ0M7K0JBRXNDOzs7Ozs7QUFFM0QsTUFBTSxFQUFFQyxHQUFHLEVBQUVDLE9BQU8sRUFBRSxHQUFHQyxxQ0FBcUIsRUFDeEMsRUFBRUMsSUFBSSxFQUFFQyxJQUFJLEVBQUVDLEtBQUssRUFBRSxHQUFHQyx5QkFBYztBQUU3QixNQUFNUCx1QkFBdUJRLGdCQUFPO0lBQ2pELFlBQVlDLE9BQU8sRUFBRUMscUJBQXFCLENBQUU7UUFDMUMsS0FBSyxDQUFDRDtRQUVOLElBQUksQ0FBQ0MscUJBQXFCLEdBQUdBO0lBQy9CO0lBRUFDLHlCQUF5QkQsd0JBQXdCLEVBQUUsRUFBRTtRQUNuRCxNQUFNRCxVQUFVLElBQUksQ0FBQ0csVUFBVTtRQUUvQlIsS0FBS00sdUJBQXVCLElBQUksQ0FBQ0EscUJBQXFCO1FBRXRERCxRQUFRRSx3QkFBd0IsQ0FBQ0Q7UUFFakMsT0FBT0E7SUFDVDtJQUVBRyw4QkFBOEI7UUFDNUIsSUFBSUMsMkJBQTJCO1FBRS9CLE1BQU1DLDhCQUE4QixJQUFJLENBQUNMLHFCQUFxQixDQUFDTSxNQUFNO1FBRXJFLElBQUlELGdDQUFnQyxHQUFHO1lBQ3JDLE1BQU1FLDRCQUE0QlgsTUFBTSxJQUFJLENBQUNJLHFCQUFxQjtZQUVsRUksMkJBQTJCRywyQkFBMkIsR0FBRztRQUMzRDtRQUVBLE9BQU9IO0lBQ1Q7SUFFQUksNENBQTRDO1FBQzFDLElBQUlDLHlDQUF5QztRQUU3QyxNQUFNTCwyQkFBMkIsSUFBSSxDQUFDRCwyQkFBMkI7UUFFakUsSUFBSUMsNkJBQTZCLE1BQU07WUFDckMsTUFBTU0scUNBQXFDTix5QkFBeUJPLFlBQVk7WUFFaEYsSUFBSUQsb0NBQW9DO2dCQUN0Q0QseUNBQXlDTCwwQkFBMkIsR0FBRztZQUN6RTtRQUNGO1FBRUEsT0FBT0s7SUFDVDtJQUVBRyxnQkFBZ0JDLFlBQVksRUFBRTtJQUM1QixHQUFHO0lBQ0w7SUFFQUMsd0JBQXdCQyxvQkFBb0IsRUFBRTtRQUM1QyxNQUFNaEIsVUFBVSxJQUFJLEVBQ2RpQix3QkFBd0JELHNCQUN4QkUsNkJBQTZCRixxQkFBcUJHLFNBQVM7UUFFakVuQixRQUFRb0IsS0FBSyxDQUFDLENBQUMsWUFBWSxFQUFFRiwyQkFBMkIsaURBQWlELENBQUM7UUFFMUcsTUFBTUcsd0JBQXdCLElBQUksQ0FBQ3BCLHFCQUFxQixDQUFDTCxJQUFJLENBQUMsQ0FBQ29CO1lBQzdELE1BQU1LLHdCQUF3Qkwsc0JBQ3hCTSxvREFBb0RMLHNCQUFzQk0sU0FBUyxDQUFDRjtZQUUxRixJQUFJQyxtREFBbUQ7Z0JBQ3JELE9BQU87WUFDVDtRQUNGLE1BQU07UUFFTixJQUFJRCwwQkFBMEIsTUFBTTtZQUNsQ3JCLFFBQVF3QixLQUFLLENBQUMsQ0FBQyxLQUFLLEVBQUVOLDJCQUEyQixzRUFBc0UsQ0FBQztRQUMxSCxPQUFPO1lBQ0wsSUFBSSxDQUFDakIscUJBQXFCLENBQUNOLElBQUksQ0FBQ3FCO1FBQ2xDO1FBRUFoQixRQUFRd0IsS0FBSyxDQUFDLENBQUMsY0FBYyxFQUFFTiwyQkFBMkIsK0NBQStDLENBQUM7SUFDNUc7SUFFQU8seUJBQXlCeEIscUJBQXFCLEVBQUU7UUFDOUNBLHNCQUFzQlIsT0FBTyxDQUFDLENBQUN1QjtZQUM3QixJQUFJLENBQUNELHVCQUF1QixDQUFDQztRQUMvQjtJQUNGO0lBRUFVLDJCQUEyQkMsT0FBTyxFQUFFQyxJQUFJLEVBQUU7UUFDeENELFVBQVVuQyxJQUFJbUMsU0FBU0MsT0FBTyxHQUFHO1FBRWpDLE1BQU01QixVQUFVLElBQUksRUFDZEMsd0JBQXdCLElBQUksQ0FBQ0Msd0JBQXdCLElBQ3JEMkIsb0JBQW9CQyxJQUFBQSx5REFBMEMsRUFBQzdCO1FBRXJFLE9BQU9SLFFBQVFvQyxtQkFBbUIsQ0FBQ0Usa0JBQWtCSixTQUFTQztZQUM1RCxNQUFNSSwrQkFBK0IsSUFBSSxDQUFDQyxrREFBa0QsQ0FBQ0Y7WUFFN0YsT0FBT3RDLFFBQVF1Qyw4QkFBOEIsQ0FBQ0UsNkJBQTZCUCxTQUFTQztnQkFDbEYsTUFBTVosdUJBQXVCa0IsNkJBQ3ZCQyxTQUFTbkIscUJBQXFCb0IsUUFBUTtnQkFFNUMsSUFBSUQsUUFBUTtvQkFDVixPQUFPUixRQUFRM0IsU0FBUzRCO2dCQUMxQjtnQkFFQSxPQUFPWixxQkFBcUJxQixLQUFLLENBQUNyQyxTQUFTMkIsU0FBU0M7WUFDdEQsR0FBR0QsU0FBU0M7UUFDZCxHQUFHRCxTQUFTQztJQUNkO0lBRUFVLGlDQUFpQztRQUMvQixNQUFNckMsd0JBQXdCLElBQUksQ0FBQ0Msd0JBQXdCLElBQ3JEMkIsb0JBQW9CQyxJQUFBQSx5REFBMEMsRUFBQzdCLHdCQUMvRGtDLFNBQVNOLGtCQUFrQlUsS0FBSyxDQUFDLENBQUNSO1lBQ2hDLE1BQU1DLCtCQUErQixJQUFJLENBQUNDLGtEQUFrRCxDQUFDRixtQkFDdkZTLHFDQUFxQ1IsNkJBQTZCTyxLQUFLLENBQUMsQ0FBQ0w7Z0JBQ3ZFLE1BQU1PLG9DQUFvQ1AsNEJBQTRCRSxRQUFRO2dCQUU5RSxJQUFJSyxtQ0FBbUM7b0JBQ3JDLE9BQU87Z0JBQ1Q7WUFDRjtZQUVOLElBQUlELG9DQUFvQztnQkFDdEMsT0FBTztZQUNUO1FBQ0Y7UUFFTixPQUFPTDtJQUNUO0lBRUFPLFVBQVU7UUFDUixNQUFNcEMsOEJBQThCLElBQUksQ0FBQ0wscUJBQXFCLENBQUNNLE1BQU0sRUFDL0RvQyxRQUFTckMsZ0NBQWdDO1FBRS9DLE9BQU9xQztJQUNUO0lBRUFDLFFBQVFDLFVBQVUsRUFBRUMsVUFBVSxFQUFFO1FBQzlCLElBQUlDLFlBQVk7UUFFaEIsTUFBTUosUUFBUSxJQUFJLENBQUNELE9BQU87UUFFMUIsSUFBSUMsT0FBTztZQUNUSSxZQUFZO1FBQ2QsT0FBTztZQUNMLE1BQU0xQywyQkFBMkIsSUFBSSxDQUFDRCwyQkFBMkI7WUFFakUsSUFBSUMsNkJBQTZCLE1BQU07Z0JBQ3JDLE1BQU0sRUFBRTJDLDZCQUE2QixFQUFFLEdBQUdDLGlCQUFRLEVBQzVDakQsVUFBVSxJQUFJLEVBQ2RrRCxnQ0FBZ0NGLDhCQUE4QkcsMkJBQTJCLENBQUNOLFlBQVlDLFlBQVk5QyxVQUNsSG9ELG1FQUFtRUYsOEJBQThCRyxtQkFBbUIsQ0FBQ2hEO2dCQUUzSCxJQUFJK0Msa0VBQWtFO29CQUNwRUwsWUFBWTtnQkFDZDtZQUNGO1FBQ0Y7UUFFQSxPQUFPQTtJQUNUO0lBRUFPLE1BQU10RCxPQUFPLEVBQUU7UUFDYkEsUUFBUXdCLEtBQUssQ0FBQyxDQUFDLDJCQUEyQixDQUFDO1FBRTNDeEIsUUFBUXlCLHdCQUF3QixDQUFDLElBQUksQ0FBQ3hCLHFCQUFxQjtJQUM3RDtJQUVBc0QseUJBQXlCQyxRQUFRLEVBQUU7UUFDakMsTUFBTXZELHdCQUF3QixJQUFJLENBQUNDLHdCQUF3QixJQUNyRGMsdUJBQXVCZixzQkFBc0JMLElBQUksQ0FBQzREO1FBRXhELE9BQU94QztJQUNUO0lBRUF5QywwQkFBMEJELFFBQVEsRUFBRTtRQUNsQyxJQUFJdkQ7UUFFSkEsd0JBQXdCLElBQUksQ0FBQ0Msd0JBQXdCO1FBRXJERCx3QkFBd0JMLEtBQUtLLHVCQUF1QnVELFdBQVksR0FBRztRQUVuRSxPQUFPdkQ7SUFDVDtJQUVBeUQsdUNBQXVDQyxZQUFZLEVBQUU7UUFDbkQsTUFBTTNDLHVCQUF1QixJQUFJLENBQUN1Qyx3QkFBd0IsQ0FBQyxDQUFDdkM7WUFDMUQsTUFBTTRDLHNCQUFzQjVDLHFCQUFxQjZDLGlCQUFpQixDQUFDRjtZQUVuRSxJQUFJQyxxQkFBcUI7Z0JBQ3ZCLE9BQU87WUFDVDtRQUNGLE1BQU07UUFFTixPQUFPNUM7SUFDVDtJQUVBOEMsMkNBQTJDL0IsZ0JBQWdCLEVBQUU7UUFDM0QsTUFBTWdDLDZCQUE2QixJQUFJLENBQUNDLGdEQUFnRCxDQUFDakMsbUJBQ25GZix1QkFBdUIrQyw0QkFBNkIsR0FBRztRQUU3RCxPQUFPL0M7SUFDVDtJQUVBZ0QsaURBQWlEakMsZ0JBQWdCLEVBQUU7UUFDakUsTUFBTWdDLDZCQUE2QixJQUFJLENBQUNSLHdCQUF3QixDQUFDLENBQUN2QztZQUNoRSxNQUFNaUQsNkJBQTZCakQscUJBQXFCa0QsUUFBUTtZQUVoRSxJQUFJRCw0QkFBNEI7Z0JBQzlCLE1BQU1GLDZCQUE2Qi9DLHNCQUM3Qm1ELDBCQUEwQkosMkJBQTJCSyxxQkFBcUIsQ0FBQ3JDO2dCQUVqRixJQUFJb0MseUJBQXlCO29CQUMzQixPQUFPO2dCQUNUO1lBQ0Y7UUFDRixNQUFNO1FBRU4sT0FBT0o7SUFDVDtJQUVBOUIsbURBQW1ERixnQkFBZ0IsRUFBRTtRQUNuRSxNQUFNRyw4QkFBOEIsSUFBSSxDQUFDdUIseUJBQXlCLENBQUMsQ0FBQ3pDO1lBQ2xFLE1BQU1xRCw4QkFBOEJyRCxxQkFBcUJzRCxTQUFTO1lBRWxFLElBQUlELDZCQUE2QjtnQkFDL0IsTUFBTW5DLDhCQUE4QmxCLHNCQUM5Qm1ELDBCQUEwQmpDLDRCQUE0QmtDLHFCQUFxQixDQUFDckM7Z0JBRWxGLElBQUlvQyx5QkFBeUI7b0JBQzNCLE9BQU87Z0JBQ1Q7WUFDRjtRQUNGLE1BQU07UUFFTixPQUFPakM7SUFDVDtJQUVBcUMsOERBQThEeEMsZ0JBQWdCLEVBQUV5QyxnQkFBZ0IsRUFBRTtRQUNoRyxNQUFNeEQsdUJBQXVCLElBQUksQ0FBQ3VDLHdCQUF3QixDQUFDLENBQUN2QztZQUNwRCxNQUFNbUQsMEJBQTBCbkQscUJBQXFCb0QscUJBQXFCLENBQUNyQztZQUUzRSxJQUFJb0MseUJBQXlCO2dCQUMzQixNQUFNTSwwQkFBMEJ6RCxxQkFBcUIwRCxxQkFBcUIsQ0FBQ0Y7Z0JBRTNFLElBQUlDLHlCQUF5QjtvQkFDM0IsT0FBTztnQkFDVDtZQUNGO1FBQ0YsTUFBTTtRQUVaLE9BQU96RDtJQUNUO0lBRUEyRCxnREFBZ0Q1QyxnQkFBZ0IsRUFBRTtRQUNoRSxNQUFNZix1QkFBdUIsSUFBSSxDQUFDOEMsMENBQTBDLENBQUMvQixtQkFDdkU2Qyw4QkFBK0I1RCx5QkFBeUI7UUFFOUQsT0FBTzREO0lBQ1Q7SUFFQUMsbUVBQW1FOUMsZ0JBQWdCLEVBQUV5QyxnQkFBZ0IsRUFBRTtRQUNyRyxNQUFNeEQsdUJBQXVCLElBQUksQ0FBQ3VELDZEQUE2RCxDQUFDeEMsa0JBQWtCeUMsbUJBQzVHSSw4QkFBK0I1RCx5QkFBeUI7UUFFOUQsT0FBTzREO0lBQ1Q7SUFFQSxPQUFPRSxZQUFZOUUsT0FBTyxFQUFFO1FBQzFCLE1BQU1DLHdCQUF3QixFQUFFLEVBQzFCOEUsaUJBQWlCLElBQUl4RixlQUFlUyxTQUFTQztRQUVuRCxPQUFPOEU7SUFDVDtBQUNGIn0=
|
package/lib/context.js
CHANGED
|
@@ -409,6 +409,10 @@ class Context extends _occamlanguages.Context {
|
|
|
409
409
|
const context = this.getContext();
|
|
410
410
|
context.addFactOrSubproof(factOrSubproof);
|
|
411
411
|
}
|
|
412
|
+
getRules() {
|
|
413
|
+
const context = this.getContext(), rules = context.getRules();
|
|
414
|
+
return rules;
|
|
415
|
+
}
|
|
412
416
|
}
|
|
413
417
|
|
|
414
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9jb250ZXh0LmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBDb250ZXh0IGFzIENvbnRleHRCYXNlIH0gZnJvbSBcIm9jY2FtLWxhbmd1YWdlc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBDb250ZXh0IGV4dGVuZHMgQ29udGV4dEJhc2Uge1xuICBnZXRMZXhlcigpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksXG4gICAgICAgICAgbGV4ZXIgPSBjb250ZXh0LmdldExleGVyKCk7XG5cbiAgICByZXR1cm4gbGV4ZXI7XG4gIH1cblxuICBnZXRQYXJzZXIoKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpLFxuICAgICAgICAgIHBhcnNlciA9IGNvbnRleHQuZ2V0UGFyc2VyKCk7XG5cbiAgICByZXR1cm4gcGFyc2VyO1xuICB9XG5cbiAgZ2V0RmlsZVBhdGgoKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpLFxuICAgICAgICAgIGZpbGVQYXRoID0gY29udGV4dC5nZXRGaWxlUGF0aCgpO1xuXG4gICAgcmV0dXJuIGZpbGVQYXRoO1xuICB9XG5cbiAgZ2V0VG9rZW5zKCkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSxcbiAgICAgICAgICB0b2tlbnMgPSBjb250ZXh0LmdldFRva2VucygpO1xuXG4gICAgcmV0dXJuIHRva2VucztcbiAgfVxuXG4gIHNldFRva2Vucyh0b2tlbnMpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCk7XG5cbiAgICBjb250ZXh0LnNldFRva2Vucyh0b2tlbnMpO1xuICB9XG5cbiAgZ2V0VGVybXModGVybXMgPSBbXSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKTtcblxuICAgIGNvbnRleHQuZ2V0VGVybXModGVybXMpO1xuXG4gICAgcmV0dXJuIHRlcm1zO1xuICB9XG5cbiAgZ2V0RnJhbWVzKGZyYW1lcyA9IFtdKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpO1xuXG4gICAgY29udGV4dC5nZXRGcmFtZXMoZnJhbWVzKTtcblxuICAgIHJldHVybiBmcmFtZXM7XG4gIH1cblxuICBnZXRFcXVhbGl0aWVzKGVxdWFsaXRpZXMgPSBbXSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKTtcblxuICAgIGNvbnRleHQuZ2V0RXF1YWxpdGllcyhlcXVhbGl0aWVzKTtcblxuICAgIHJldHVybiBlcXVhbGl0aWVzO1xuICB9XG5cbiAgZ2V0QXNzZXJ0aW9ucyhhc3NlcnRpb25zID0gW10pIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCk7XG5cbiAgICBjb250ZXh0LmdldEFzc2VydGlvbnMoYXNzZXJ0aW9ucyk7XG5cbiAgICByZXR1cm4gYXNzZXJ0aW9ucztcbiAgfVxuXG4gIGdldFN0YXRlbWVudHMoc3RhdGVtZW50cyA9IFtdKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpO1xuXG4gICAgY29udGV4dC5nZXRTdGF0ZW1lbnRzKHN0YXRlbWVudHMpO1xuXG4gICAgcmV0dXJuIHN0YXRlbWVudHM7XG4gIH1cblxuICBnZXRTaWduYXR1cmVzKHNpZ25hdHVyZXMgPSBbXSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKTtcblxuICAgIGNvbnRleHQuZ2V0U2lnbmF0dXJlcyhzaWduYXR1cmVzKTtcblxuICAgIHJldHVybiBzaWduYXR1cmVzO1xuICB9XG5cbiAgZ2V0UmVmZXJlbmNlcyhyZWZlcmVuY2VzID0gW10pIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCk7XG5cbiAgICBjb250ZXh0LmdldFJlZmVyZW5jZXMocmVmZXJlbmNlcyk7XG5cbiAgICByZXR1cm4gcmVmZXJlbmNlcztcbiAgfVxuXG4gIGdldEFzc3VtcHRpb25zKGFzc3VtcHRpb25zID0gW10pIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCk7XG5cbiAgICBjb250ZXh0LmdldEFzc3VtcHRpb25zKGFzc3VtcHRpb25zKTtcblxuICAgIHJldHVybiBhc3N1bXB0aW9ucztcbiAgfVxuXG4gIGdldE1ldGF2YXJpYWJsZXMobWV0YXZhcmlhYmxlcyA9IFtdKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpO1xuXG4gICAgY29udGV4dC5nZXRNZXRhdmFyaWFibGVzKG1ldGF2YXJpYWJsZXMpO1xuXG4gICAgcmV0dXJuIG1ldGF2YXJpYWJsZXM7XG4gIH1cblxuICBnZXRTdWJzdGl0dXRpb25zKHN1YnN0aXR1dGlvbnMgPSBbXSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKTtcblxuICAgIGNvbnRleHQuZ2V0U3Vic3RpdHV0aW9ucyhzdWJzdGl0dXRpb25zKTtcblxuICAgIHJldHVybiBzdWJzdGl0dXRpb25zO1xuICB9XG5cbiAgZ2V0SW5mZXJyZWRTdWJzdGl0dXRpb25zKGluZmVycmVkU3Vic3RpdHV0aW9ucyA9IFtdKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpO1xuXG4gICAgY29udGV4dC5nZXRJbmZlcnJlZFN1YnN0aXR1dGlvbnMoaW5mZXJyZWRTdWJzdGl0dXRpb25zKTtcblxuICAgIHJldHVybiBpbmZlcnJlZFN1YnN0aXR1dGlvbnM7XG4gIH1cblxuICBnZXRHZW5lcmF0b3JzKGluY2x1ZGVSZWxlYXNlID0gdHJ1ZSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSxcbiAgICAgICAgICBnZW5lcmF0b3JzID0gY29udGV4dC5nZXRHZW5lcmF0b3JzKGluY2x1ZGVSZWxlYXNlKTtcblxuICAgIHJldHVybiBnZW5lcmF0b3JzO1xuICB9XG5cbiAgZ2V0UHJvY2VkdXJlcyhpbmNsdWRlUmVsZWFzZSA9IHRydWUpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksXG4gICAgICAgICAgcHJvY2VkdXJlcyA9IGNvbnRleHQuZ2V0UHJvY2VkdXJlcyhpbmNsdWRlUmVsZWFzZSk7XG5cbiAgICByZXR1cm4gcHJvY2VkdXJlcztcbiAgfVxuXG4gIGdldENvbWJpbmF0b3JzKGluY2x1ZGVSZWxlYXNlID0gdHJ1ZSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSxcbiAgICAgICAgICBjb21iaW5hdG9ycyA9IGNvbnRleHQuZ2V0Q29tYmluYXRvcnMoaW5jbHVkZVJlbGVhc2UpO1xuXG4gICAgcmV0dXJuIGNvbWJpbmF0b3JzO1xuICB9XG5cbiAgZ2V0Q29uc3RydWN0b3JzKGluY2x1ZGVSZWxlYXNlID0gdHJ1ZSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSxcbiAgICAgICAgICBjb25zdHJ1Y3RvcnMgPSBjb250ZXh0LmdldENvbnN0cnVjdG9ycyhpbmNsdWRlUmVsZWFzZSk7XG5cbiAgICByZXR1cm4gY29uc3RydWN0b3JzO1xuICB9XG5cbiAgZ2V0Q2xhaW0oaW5jbHVkZVJlbGVhc2UgPSB0cnVlKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpLFxuICAgICAgICAgIGNsYWltID0gY29udGV4dC5nZXRDbGFpbShpbmNsdWRlUmVsZWFzZSk7XG5cbiAgICByZXR1cm4gY2xhaW07XG4gIH1cblxuICBnZXRTY2hlbWFzKGluY2x1ZGVSZWxlYXNlID0gdHJ1ZSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSxcbiAgICAgICAgICBzY2hlbWFzID0gY29udGV4dC5nZXRTY2hlbWFzKGluY2x1ZGVSZWxlYXNlKTtcblxuICAgIHJldHVybiBzY2hlbWFzO1xuICB9XG5cbiAgZ2V0VmFyaWFibGVzKG5lc3RlZCkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSxcbiAgICAgICAgICB2YXJpYWJsZXMgPSBjb250ZXh0LmdldFZhcmlhYmxlcyhuZXN0ZWQpO1xuXG4gICAgcmV0dXJuIHZhcmlhYmxlcztcbiAgfVxuXG4gIGdldFN0ZXBzKCkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSxcbiAgICAgICAgICBzdGVwcyA9IGNvbnRleHQuZ2V0U3RlcHMoKTtcblxuICAgIHJldHVybiBzdGVwcztcbiAgfVxuXG4gIGdldEZhY3RzKCkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSxcbiAgICAgICAgICBmYWN0cyA9IGNvbnRleHQuZ2V0RmFjdHMoKTtcblxuICAgIHJldHVybiBmYWN0cztcbiAgfVxuXG4gIGdldEVxdWl2YWxlbmNlcygpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksXG4gICAgICAgICAgZXF1aXZhbGVuY2VzID0gY29udGV4dC5nZXRFcXVpdmFsZW5jZXMoKTtcblxuICAgIHJldHVybiBlcXVpdmFsZW5jZXM7XG4gIH1cblxuICBnZXREZWNsYXJlZFZhcmlhYmxlcyhkZWNsYXJlZFZhcmlhYmxlcyA9IFtdKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpO1xuXG4gICAgY29udGV4dC5nZXREZWNsYXJlZFZhcmlhYmxlcyhkZWNsYXJlZFZhcmlhYmxlcyk7XG5cbiAgICByZXR1cm4gZGVjbGFyZWRWYXJpYWJsZXM7XG4gIH1cblxuICBnZXREZWNsYXJlZE1ldGF2YXJpYWJsZXMoKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpLFxuICAgICAgICAgIGRlY2xhcmVkTWV0YXZhcmlhYmxlcyA9IGNvbnRleHQuZ2V0RGVjbGFyZWRNZXRhdmFyaWFibGVzKCk7XG5cbiAgICByZXR1cm4gZGVjbGFyZWRNZXRhdmFyaWFibGVzO1xuICB9XG5cbiAgZ2V0RmFjdE9yU3VicHJvb2ZzKCkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSxcbiAgICAgICAgICBmYWN0T3JTdWJwcm9vZnMgPSBjb250ZXh0LmdldEZhY3RPclN1YnByb29mcygpO1xuXG4gICAgcmV0dXJuIGZhY3RPclN1YnByb29mcztcbiAgfVxuXG4gIGdldFByb3BlcnRpZXMoKSB7XG4gICAgY29uc3QgcHJvcGVydGllcyA9IFtdLFxuICAgICAgICAgIHR5cGVzID0gdGhpcy5nZXRUeXBlcygpO1xuXG4gICAgdHlwZXMuZm9yRWFjaCgodHlwZSkgPT4ge1xuICAgICAgdHlwZS5nZXRQcm9wZXJ0aWVzKHByb3BlcnRpZXMpO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHByb3BlcnRpZXM7XG4gIH1cblxuICBnZXRUeXBlcygpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksXG4gICAgICAgICAgdHlwZXMgPSBjb250ZXh0LmdldFR5cGVzKCk7XG5cbiAgICByZXR1cm4gdHlwZXM7XG4gIH1cblxuICBmaW5kTWV0YXZhcmlhYmxlKG1ldGF2YXJpYWJsZSwgY29udGV4dCkge1xuICAgIGNvbnN0IGNoaWxkQ29udGV4dCA9IGNvbnRleHQ7IC8vL1xuXG4gICAgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpO1xuXG4gICAgY29uc3QgcGFyZW50Q29udGV4dCA9IGNvbnRleHQ7IC8vL1xuXG4gICAgY29udGV4dCA9IGNoaWxkQ29udGV4dDsgLy8vXG5cbiAgICBtZXRhdmFyaWFibGUgPSBwYXJlbnRDb250ZXh0LmZpbmRNZXRhdmFyaWFibGUobWV0YXZhcmlhYmxlLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBtZXRhdmFyaWFibGU7XG4gIH1cblxuICBmaW5kUnVsZUJ5UmVmZXJlbmNlKHJlZmVyZW5jZSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSxcbiAgICAgICAgICBydWxlID0gY29udGV4dC5maW5kUnVsZUJ5UmVmZXJlbmNlKHJlZmVyZW5jZSk7XG5cbiAgICByZXR1cm4gcnVsZTtcbiAgfVxuXG4gIGZpbmRBeGlvbUJ5UmVmZXJlbmNlKHJlZmVyZW5jZSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSxcbiAgICAgICAgICBheGlvbSA9IGNvbnRleHQuZmluZEF4aW9tQnlSZWZlcmVuY2UocmVmZXJlbmNlKTtcblxuICAgIHJldHVybiBheGlvbTtcbiAgfVxuXG4gIGZpbmRDbGFpbUJ5UmVmZXJlbmNlKHJlZmVyZW5jZSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSxcbiAgICAgICAgICBjbGFpbSA9IGNvbnRleHQuZmluZENsYWltQnlSZWZlcmVuY2UocmVmZXJlbmNlKTtcblxuICAgIHJldHVybiBjbGFpbTtcbiAgfVxuXG4gIGZpbmRUZXJtQnlUZXJtTm9kZSh0ZXJtTm9kZSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSxcbiAgICAgICAgICB0ZXJtID0gY29udGV4dC5maW5kVGVybUJ5VGVybU5vZGUodGVybU5vZGUpO1xuXG4gICAgcmV0dXJuIHRlcm07XG4gIH1cblxuICBmaW5kRnJhbWVCeUZyYW1lTm9kZShmcmFtZU5vZGUpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksXG4gICAgICAgICAgZnJhbWUgPSBjb250ZXh0LmZpbmRGcmFtZUJ5RnJhbWVOb2RlKGZyYW1lTm9kZSk7XG5cbiAgICByZXR1cm4gZnJhbWU7XG4gIH1cblxuICBmaW5kRXF1YWxpdHlCeUVxdWFsaXR5Tm9kZShlcXVhbGl0eU5vZGUpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksXG4gICAgICAgICAgZXF1YWxpdHkgPSBjb250ZXh0LmZpbmRFcXVhbGl0eUJ5RXF1YWxpdHlOb2RlKGVxdWFsaXR5Tm9kZSk7XG5cbiAgICByZXR1cm4gZXF1YWxpdHk7XG4gIH1cblxuICBmaW5kQXNzZXJ0aW9uQnlBc3NlcnRpb25Ob2RlKGFzc2VydGlvbk5vZGUpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksXG4gICAgICAgICAgYXNzZXJ0aW9uID0gY29udGV4dC5maW5kQXNzZXJ0aW9uQnlBc3NlcnRpb25Ob2RlKGFzc2VydGlvbk5vZGUpO1xuXG4gICAgcmV0dXJuIGFzc2VydGlvbjtcbiAgfVxuXG4gIGZpbmRTdGF0ZW1lbnRCeVN0YXRlbWVudE5vZGUoc3RhdGVtZW50Tm9kZSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSxcbiAgICAgICAgICBzdGF0ZW1lbnQgPSBjb250ZXh0LmZpbmRTdGF0ZW1lbnRCeVN0YXRlbWVudE5vZGUoc3RhdGVtZW50Tm9kZSk7XG5cbiAgICByZXR1cm4gc3RhdGVtZW50O1xuICB9XG5cbiAgZmluZFJlZmVyZW5jZUJ5UmVmZXJlbmNlTm9kZShyZWZlcmVuY2VOb2RlKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpLFxuICAgICAgICAgIHJlZmVyZW5jZSA9IGNvbnRleHQuZmluZFJlZmVyZW5jZUJ5UmVmZXJlbmNlTm9kZShyZWZlcmVuY2VOb2RlKTtcblxuICAgIHJldHVybiByZWZlcmVuY2U7XG4gIH1cblxuICBmaW5kQXNzdW1wdGlvbkJ5QXNzdW1wdGlvbk5vZGUoYXNzdW1wdGlvbk5vZGUpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksXG4gICAgICAgICAgYXNzdW1wdGlvbiA9IGNvbnRleHQuZmluZEFzc3VtcHRpb25CeUFzc3VtcHRpb25Ob2RlKGFzc3VtcHRpb25Ob2RlKTtcblxuICAgIHJldHVybiBhc3N1bXB0aW9uO1xuICB9XG5cbiAgZmluZFJlZmVyZW5jZUJ5TWV0YXZhcmlhYmxlTm9kZShtZXRhdmFyaWFibGVOb2RlKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpLFxuICAgICAgICAgIHJlZmVyZW5jZSA9IGNvbnRleHQuZmluZFJlZmVyZW5jZUJ5TWV0YXZhcmlhYmxlTm9kZShtZXRhdmFyaWFibGVOb2RlKTtcblxuICAgIHJldHVybiByZWZlcmVuY2U7XG4gIH1cblxuICBmaW5kTWV0YXZhcmlhYmxlQnlNZXRhdmFyaWFibGVOb2RlKG1ldGF2YXJpYWJsZU5vZGUpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksXG4gICAgICAgICAgbWV0YXZhcmlhYmxlID0gY29udGV4dC5maW5kTWV0YXZhcmlhYmxlQnlNZXRhdmFyaWFibGVOb2RlKG1ldGF2YXJpYWJsZU5vZGUpO1xuXG4gICAgcmV0dXJuIG1ldGF2YXJpYWJsZTtcbiAgfVxuXG4gIGZpbmRTdWJzdGl0dXRpb25CeVN1YnN0aXR1dGlvbk5vZGUoc3Vic3RpdHV0aW9uTm9kZSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSxcbiAgICAgICAgICBzdWJzdGl0dXRpb24gPSBjb250ZXh0LmZpbmRTdWJzdGl0dXRpb25CeVN1YnN0aXR1dGlvbk5vZGUoc3Vic3RpdHV0aW9uTm9kZSk7XG5cbiAgICByZXR1cm4gc3Vic3RpdHV0aW9uO1xuICB9XG5cbiAgZmluZEluZmVycmVkU3Vic3RpdHV0aW9uQnlWYXJpYWJsZU5vZGUodmFyaWFibGVOb2RlKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpLFxuICAgICAgICAgIGluZmVycmVkU3Vic3RpdHV0aW9uID0gY29udGV4dC5maW5kSW5mZXJyZWRTdWJzdGl0dXRpb25CeVZhcmlhYmxlTm9kZSh2YXJpYWJsZU5vZGUpO1xuXG4gICAgcmV0dXJuIGluZmVycmVkU3Vic3RpdHV0aW9uO1xuICB9XG5cbiAgZmluZEluZmVycmVkU3Vic3RpdHV0aW9uQnlNZXRhdmFyaWFibGVOb2RlKG1ldGF2YXJpYWJsZU5vZGUpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksXG4gICAgICAgICAgaW5mZXJyZWRTdWJzdGl0dXRpb24gPSBjb250ZXh0LmZpbmRJbmZlcnJlZFN1YnN0aXR1dGlvbkJ5TWV0YXZhcmlhYmxlTm9kZShtZXRhdmFyaWFibGVOb2RlKTtcblxuICAgIHJldHVybiBpbmZlcnJlZFN1YnN0aXR1dGlvbjtcbiAgfVxuXG4gIGZpbmRDb25zdHJhaW50QnlDb25zdHJhaW50Tm9kZShjb25zdHJhaW50Tm9kZSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSxcbiAgICAgICAgICBjb25zdHJhaW50ID0gY29udGV4dC5maW5kQ29uc3RyYWludEJ5Q29uc3RyYWludE5vZGUoY29uc3RyYWludE5vZGUpO1xuXG4gICAgcmV0dXJuIGNvbnN0cmFpbnQ7XG4gIH1cblxuICBmaW5kVHlwZUJ5VHlwZU5hbWUodHlwZU5hbWUpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksXG4gICAgICAgICAgdHlwZSA9IGNvbnRleHQuZmluZFR5cGVCeVR5cGVOYW1lKHR5cGVOYW1lKTtcblxuICAgIHJldHVybiB0eXBlO1xuICB9XG5cbiAgZmluZFR5cGVCeU5vbWluYWxUeXBlTmFtZShub21pbmFsVHlwZU5hbWUpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksXG4gICAgICAgICAgdHlwZSA9IGNvbnRleHQuZmluZFR5cGVCeU5vbWluYWxUeXBlTmFtZShub21pbmFsVHlwZU5hbWUpO1xuXG4gICAgcmV0dXJuIHR5cGU7XG4gIH1cblxuICBmaW5kTWV0YVR5cGVCeU1ldGFUeXBlTmFtZShtZXRhVHlwZU5hbWUpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksXG4gICAgICAgICAgbWV0YVR5cGUgPSBjb250ZXh0LmZpbmRNZXRhVHlwZUJ5TWV0YVR5cGVOYW1lKG1ldGFUeXBlTmFtZSk7XG5cbiAgICByZXR1cm4gbWV0YVR5cGU7XG4gIH1cblxuICBmaW5kUHJvY2VkdXJlQnlQcm9jZWR1cmVOYW1lKHByb2NlZHVyZU5hbWUpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksXG4gICAgICAgICAgcHJvY2VkdXJlID0gY29udGV4dC5maW5kUHJvY2VkdXJlQnlQcm9jZWR1cmVOYW1lKHByb2NlZHVyZU5hbWUpO1xuXG4gICAgcmV0dXJuIHByb2NlZHVyZTtcbiAgfVxuXG4gIGZpbmREZWNsYXJlZFZhcmlhYmxlQnlWYXJpYWJsZUlkZW50aWZpZXIodmFyaWFibGVJZGVudGlmaWVyKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpLFxuICAgICAgICAgIGRlY2xhcmVkVmFyaWFibGUgPSBjb250ZXh0LmZpbmREZWNsYXJlZFZhcmlhYmxlQnlWYXJpYWJsZUlkZW50aWZpZXIodmFyaWFibGVJZGVudGlmaWVyKTtcblxuICAgIHJldHVybiBkZWNsYXJlZFZhcmlhYmxlO1xuICB9XG5cbiAgZmluZERlY2xhcmVkVmFyaWFibGVzQnlWYXJpYWJsZUlkZW50aWZpZXIodmFyaWFibGVJZGVudGlmaWVyKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpLFxuICAgICAgICAgIGRlY2xhcmVkVmFyaWFibGVzID0gY29udGV4dC5maW5kRGVjbGFyZWRWYXJpYWJsZXNCeVZhcmlhYmxlSWRlbnRpZmllcih2YXJpYWJsZUlkZW50aWZpZXIpO1xuXG4gICAgcmV0dXJuIGRlY2xhcmVkVmFyaWFibGVzO1xuICB9XG5cbiAgZmluZERlY2xhcmVkTWV0YXZhcmlhYmxlQnlNZXRhdmFyaWFibGVOYW1lKG1ldGF2YXJpYWJsZU5hbWUpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksXG4gICAgICAgICAgZGVjbGFyZWRNZXRhdmFyaWFibGUgPSBjb250ZXh0LmZpbmREZWNsYXJlZE1ldGF2YXJpYWJsZUJ5TWV0YXZhcmlhYmxlTmFtZShtZXRhdmFyaWFibGVOYW1lKTtcblxuICAgIHJldHVybiBkZWNsYXJlZE1ldGF2YXJpYWJsZTtcbiAgfVxuXG4gIGlzVGVybVByZXNlbnRCeVRlcm1Ob2RlKHRlcm1Ob2RlKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpLFxuICAgICAgdGVybVByZXNlbnQgPSBjb250ZXh0LmlzVGVybVByZXNlbnRCeVRlcm1Ob2RlKHRlcm1Ob2RlKTtcblxuICAgIHJldHVybiB0ZXJtUHJlc2VudDtcbiAgfVxuXG4gIGlzTGFiZWxQcmVzZW50QnlMYWJlbE5vZGUobGFiZWxOb2RlKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpLFxuICAgICAgICAgIGxhYmVsUHJlc2VudCA9IGNvbnRleHQuaXNMYWJlbFByZXNlbnRCeUxhYmVsTm9kZShsYWJlbE5vZGUpO1xuXG4gICAgcmV0dXJuIGxhYmVsUHJlc2VudDtcbiAgfVxuXG4gIGlzRnJhbWVQcmVzZW50QnlGcmFtZU5vZGUoZnJhbWVOb2RlKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpLFxuICAgICAgICAgIGZyYW1lUHJlc2VudCA9IGNvbnRleHQuaXNGcmFtZVByZXNlbnRCeUZyYW1lTm9kZShmcmFtZU5vZGUpO1xuXG4gICAgcmV0dXJuIGZyYW1lUHJlc2VudDtcbiAgfVxuXG4gIGlzRXF1YWxpdHlQcmVzZW50QnlFcXVhbGl0eU5vZGUoZXF1YWxpdHlOb2RlKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpLFxuICAgICAgICAgIGVxdWFsaXR5UHJlc2VudCA9IGNvbnRleHQuaXNFcXVhbGl0eVByZXNlbnRCeUVxdWFsaXR5Tm9kZShlcXVhbGl0eU5vZGUpO1xuXG4gICAgcmV0dXJuIGVxdWFsaXR5UHJlc2VudDtcbiAgfVxuXG4gIGlzQXNzZXJ0aW9uUHJlc2VudEJ5QXNzZXJ0aW9uTm9kZShhc3NlcnRpb25Ob2RlKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpLFxuICAgICAgICAgIGFzc2VydGlvblByZXNlbnQgPSBjb250ZXh0LmlzQXNzZXJ0aW9uUHJlc2VudEJ5QXNzZXJ0aW9uTm9kZShhc3NlcnRpb25Ob2RlKTtcblxuICAgIHJldHVybiBhc3NlcnRpb25QcmVzZW50O1xuICB9XG5cbiAgaXNTdGF0ZW1lbnRQcmVzZW50QnlTdGF0ZW1lbnROb2RlKHN0YXRlbWVudE5vZGUpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksXG4gICAgICAgICAgc3RhdGVtZW50UHJlc2VudCA9IGNvbnRleHQuaXNTdGF0ZW1lbnRQcmVzZW50QnlTdGF0ZW1lbnROb2RlKHN0YXRlbWVudE5vZGUpO1xuXG4gICAgcmV0dXJuIHN0YXRlbWVudFByZXNlbnQ7XG4gIH1cblxuICBpc01ldGF2YXJpYWJsZVByZXNlbnRCeU1ldGF2YXJpYWJsZU5vZGUobWV0YXZhcmlhYmxlTm9kZSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSxcbiAgICAgICAgICBtZXRhdmFyaWFibGVQcmVzZW50ID0gY29udGV4dC5pc01ldGF2YXJpYWJsZVByZXNlbnRCeU1ldGF2YXJpYWJsZU5vZGUobWV0YXZhcmlhYmxlTm9kZSk7XG5cbiAgICByZXR1cm4gbWV0YXZhcmlhYmxlUHJlc2VudDtcbiAgfVxuXG4gIGlzVHlwZVByZXNlbnRCeU5vbWluYWxUeXBlTmFtZShub21pbmFsVHlwZU5hbWUpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksXG4gICAgICAgICAgdHlwZVByZXNlbnQgPSBjb250ZXh0LmlzVHlwZVByZXNlbnRCeU5vbWluYWxUeXBlTmFtZShub21pbmFsVHlwZU5hbWUpO1xuXG4gICAgcmV0dXJuIHR5cGVQcmVzZW50O1xuICB9XG5cbiAgaXNQcm9jZWR1cmVQcmVzZW50QnlQcm9jZWR1cmVOYW1lKHByb2NlZHVyZU5hbWUpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksXG4gICAgICAgICAgcHJvY2VkdXJlUHJlc2VudCA9IGNvbnRleHQuaXNQcm9jZWR1cmVQcmVzZW50QnlQcm9jZWR1cmVOYW1lKHByb2NlZHVyZU5hbWUpO1xuXG4gICAgcmV0dXJuIHByb2NlZHVyZVByZXNlbnQ7XG4gIH1cblxuICBpc0RlY2xhcmVkTWV0YXZhcmlhYmxlUHJlc2VudEJ5TWV0YXZhcmlhYmxlTmFtZShtZXRhdmFyaWFibGVOYW1lKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpLFxuICAgICAgICAgIG1ldGF2YXJpYWJsZVByZXNlbnQgPSBjb250ZXh0LmlzRGVjbGFyZWRNZXRhdmFyaWFibGVQcmVzZW50QnlNZXRhdmFyaWFibGVOYW1lKG1ldGF2YXJpYWJsZU5hbWUpO1xuXG4gICAgcmV0dXJuIG1ldGF2YXJpYWJsZVByZXNlbnQ7XG4gIH1cblxuICBpc1JlZmVyZW5jZVByZXNlbnRCeU1ldGF2YXJpYWJsZU5vZGUobWV0dnZhcmlhYmxlTm9kZSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSxcbiAgICAgICAgICByZWZlcmVuY2VQcmVzZW50ID0gY29udGV4dC5pc1JlZmVyZW5jZVByZXNlbnRCeU1ldGF2YXJpYWJsZU5vZGUobWV0dnZhcmlhYmxlTm9kZSk7XG5cbiAgICByZXR1cm4gcmVmZXJlbmNlUHJlc2VudDtcbiAgfVxuXG4gIGlzSW5mZXJyZWRTdWJzdGl0dXRpb25QcmVzZW50QnlNZXRhdmFyaWFibGVOb2RlKG1ldGF2YXJpYWJsZU5vZGUpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksXG4gICAgICAgICAgaW5mZXJyZWRTdWJzdGl0dXRpb25QcmVzZW50ID0gY29udGV4dC5pc0luZmVycmVkU3Vic3RpdHV0aW9uUHJlc2VudEJ5TWV0YXZhcmlhYmxlTm9kZShtZXRhdmFyaWFibGVOb2RlKTtcblxuICAgIHJldHVybiBpbmZlcnJlZFN1YnN0aXR1dGlvblByZXNlbnQ7XG4gIH1cblxuICBpc0luZmVycmVkU3Vic3RpdHV0aW9uUHJlc2VudEJ5TWV0YXZhcmlhYmxlTm9kZUFuZFN1YnN0aXR1dGlvbk5vZGUobWV0YXZhcmlhYmxlTm9kZSwgc3Vic3RpdHV0aW9uTm9kZSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSxcbiAgICAgICAgICBpbmZlcnJlZFN1YnN0aXR1dGlvblByZXNlbnQgPSBjb250ZXh0LmlzSW5mZXJyZWRTdWJzdGl0dXRpb25QcmVzZW50QnlNZXRhdmFyaWFibGVOb2RlQW5kU3Vic3RpdHV0aW9uTm9kZShtZXRhdmFyaWFibGVOb2RlLCBzdWJzdGl0dXRpb25Ob2RlKTtcblxuICAgIHJldHVybiBpbmZlcnJlZFN1YnN0aXR1dGlvblByZXNlbnQ7XG4gIH1cblxuICBpc01ldGFMZXZlbCgpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksXG4gICAgICAgICAgbWV0YUxldmVsID0gY29udGV4dC5pc01ldGFMZXZlbCgpO1xuXG4gICAgcmV0dXJuIG1ldGFMZXZlbDtcbiAgfVxuXG4gIGFkZFRlcm1zKHRlcm1zKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpO1xuXG4gICAgY29udGV4dC5hZGRUZXJtcyh0ZXJtcyk7XG4gIH1cblxuICBhZGRBc3NlcnRpb25zKGFzc2VydGlvbnMpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCk7XG5cbiAgICBjb250ZXh0LmFkZEFzc2VydGlvbnMoYXNzZXJ0aW9ucyk7XG4gIH1cblxuICBhZGRNZXRhdmFyaWFibGVzKG1ldGF2YXJpYWJsZXMpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCk7XG5cbiAgICBjb250ZXh0LmFkZE1ldGF2YXJpYWJsZXMobWV0YXZhcmlhYmxlcyk7XG4gIH1cblxuICBhZGRJbmZlcnJlZFN1YnN0aXR1dGlvbnMoaW5mZXJyZWRTdWJzdGl0dXRpb25zKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpO1xuXG4gICAgY29udGV4dC5hZGRJbmZlcnJlZFN1YnN0aXR1dGlvbnMoaW5mZXJyZWRTdWJzdGl0dXRpb25zKTtcbiAgfVxuXG4gIGFkZEF4aW9tKGF4aW9tKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpO1xuXG4gICAgY29udGV4dC5hZGRBeGlvbShheGlvbSk7XG4gIH1cblxuICBhZGRMZW1tYShsZW1tYSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKTtcblxuICAgIGNvbnRleHQuYWRkTGVtbWEobGVtbWEpO1xuICB9XG5cbiAgYWRkU2NoZW1hKHNjaGVtYSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKTtcblxuICAgIGNvbnRleHQuYWRkU2NoZW1hKHNjaGVtYSk7XG4gIH1cblxuICBhZGRUaGVvcmVtKHRoZW9yZW0pIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCk7XG5cbiAgICBjb250ZXh0LmFkZFRoZW9yZW0odGhlb3JlbSk7XG4gIH1cblxuICBhZGRDb25qZWN0dXJlKGNvbmplY3R1cmUpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCk7XG5cbiAgICBjb250ZXh0LmFkZENvbmplY3R1cmUoY29uamVjdHVyZSk7XG4gIH1cblxuICBhZGRSdWxlKHJ1bGUpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCk7XG5cbiAgICBjb250ZXh0LmFkZFJ1bGUocnVsZSk7XG4gIH1cblxuICBhZGRUZXJtKHRlcm0pIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCk7XG5cbiAgICBjb250ZXh0LmFkZFRlcm0odGVybSk7XG4gIH1cblxuICBhZGRGcmFtZShmcmFtZSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKTtcblxuICAgIGNvbnRleHQuYWRkRnJhbWUoZnJhbWUpO1xuICB9XG5cbiAgYWRkRXF1YWxpdHkoZXF1YWxpdHkpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCk7XG5cbiAgICBjb250ZXh0LmFkZEVxdWFsaXR5KGVxdWFsaXR5KTtcbiAgfVxuXG4gIGFkZEFzc2VydGlvbihhc3NlcnRpb24pIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCk7XG5cbiAgICBjb250ZXh0LmFkZEFzc2VydGlvbihhc3NlcnRpb24pO1xuICB9XG5cbiAgYWRkU3RhdGVtZW50KHN0YXRlbWVudCkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKTtcblxuICAgIGNvbnRleHQuYWRkU3RhdGVtZW50KHN0YXRlbWVudCk7XG4gIH1cblxuICBhZGRTaWduYXR1cmUoc2lnbmF0dXJlKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpO1xuXG4gICAgY29udGV4dC5hZGRTaWduYXR1cmUoc2lnbmF0dXJlKTtcbiAgfVxuXG4gIGFkZFJlZmVyZW5jZShyZWZlcmVuY2UpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCk7XG5cbiAgICBjb250ZXh0LmFkZFJlZmVyZW5jZShyZWZlcmVuY2UpO1xuICB9XG5cbiAgYWRkQXNzdW1wdGlvbihhc3N1bXB0aW9uKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpO1xuXG4gICAgY29udGV4dC5hZGRBc3N1bXB0aW9uKGFzc3VtcHRpb24pO1xuICB9XG5cbiAgYWRkQXNzaWdubWVudChhc3NpZ25tZW50KSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpO1xuXG4gICAgY29udGV4dC5hZGRBc3NpZ25tZW50KGFzc2lnbm1lbnQpO1xuICB9XG5cbiAgYWRkTWV0YXZhcmlhYmxlKG1ldGF2YXJpYWJsZSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKTtcblxuICAgIGNvbnRleHQuYWRkTWV0YXZhcmlhYmxlKG1ldGF2YXJpYWJsZSk7XG4gIH1cblxuICBhZGRTdWJzdGl0dXRpb24oc3Vic3RpdHV0aW9uKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpO1xuXG4gICAgY29udGV4dC5hZGRTdWJzdGl0dXRpb24oc3Vic3RpdHV0aW9uKTtcbiAgfVxuXG4gIGFkZERlY2xhcmVkVmFyaWFibGUoZGVjbGFyZWRWYXJpYWJsZSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKTtcblxuICAgIGNvbnRleHQuYWRkRGVjbGFyZWRWYXJpYWJsZShkZWNsYXJlZFZhcmlhYmxlKTtcbiAgfVxuXG4gIGFkZEluZmVycmVkU3Vic3RpdHV0aW9uKGluZmVycmVkU3Vic3RpdHV0aW9uKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpO1xuXG4gICAgY29udGV4dC5hZGRJbmZlcnJlZFN1YnN0aXR1dGlvbihpbmZlcnJlZFN1YnN0aXR1dGlvbik7XG4gIH1cblxuICBhZGRDb25zdHJhaW50KGNvbnN0cmFpbnQpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCk7XG5cbiAgICBjb250ZXh0LmFkZENvbnN0cmFpbnQoY29uc3RyYWludCk7XG4gIH1cblxuICBhZGREZWNsYXJlZE1ldGF2YXJpYWJsZShkZWNsYXJlZE1ldGF2YXJpYWJsZSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKTtcblxuICAgIGNvbnRleHQuYWRkRGVjbGFyZWRNZXRhdmFyaWFibGUoZGVjbGFyZWRNZXRhdmFyaWFibGUpO1xuICB9XG5cbiAgYWRkRmFjdE9yU3VicHJvb2YoZmFjdE9yU3VicHJvb2YpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCk7XG5cbiAgICBjb250ZXh0LmFkZEZhY3RPclN1YnByb29mKGZhY3RPclN1YnByb29mKTtcbiAgfVxufVxuIl0sIm5hbWVzIjpbIkNvbnRleHQiLCJDb250ZXh0QmFzZSIsImdldExleGVyIiwiY29udGV4dCIsImdldENvbnRleHQiLCJsZXhlciIsImdldFBhcnNlciIsInBhcnNlciIsImdldEZpbGVQYXRoIiwiZmlsZVBhdGgiLCJnZXRUb2tlbnMiLCJ0b2tlbnMiLCJzZXRUb2tlbnMiLCJnZXRUZXJtcyIsInRlcm1zIiwiZ2V0RnJhbWVzIiwiZnJhbWVzIiwiZ2V0RXF1YWxpdGllcyIsImVxdWFsaXRpZXMiLCJnZXRBc3NlcnRpb25zIiwiYXNzZXJ0aW9ucyIsImdldFN0YXRlbWVudHMiLCJzdGF0ZW1lbnRzIiwiZ2V0U2lnbmF0dXJlcyIsInNpZ25hdHVyZXMiLCJnZXRSZWZlcmVuY2VzIiwicmVmZXJlbmNlcyIsImdldEFzc3VtcHRpb25zIiwiYXNzdW1wdGlvbnMiLCJnZXRNZXRhdmFyaWFibGVzIiwibWV0YXZhcmlhYmxlcyIsImdldFN1YnN0aXR1dGlvbnMiLCJzdWJzdGl0dXRpb25zIiwiZ2V0SW5mZXJyZWRTdWJzdGl0dXRpb25zIiwiaW5mZXJyZWRTdWJzdGl0dXRpb25zIiwiZ2V0R2VuZXJhdG9ycyIsImluY2x1ZGVSZWxlYXNlIiwiZ2VuZXJhdG9ycyIsImdldFByb2NlZHVyZXMiLCJwcm9jZWR1cmVzIiwiZ2V0Q29tYmluYXRvcnMiLCJjb21iaW5hdG9ycyIsImdldENvbnN0cnVjdG9ycyIsImNvbnN0cnVjdG9ycyIsImdldENsYWltIiwiY2xhaW0iLCJnZXRTY2hlbWFzIiwic2NoZW1hcyIsImdldFZhcmlhYmxlcyIsIm5lc3RlZCIsInZhcmlhYmxlcyIsImdldFN0ZXBzIiwic3RlcHMiLCJnZXRGYWN0cyIsImZhY3RzIiwiZ2V0RXF1aXZhbGVuY2VzIiwiZXF1aXZhbGVuY2VzIiwiZ2V0RGVjbGFyZWRWYXJpYWJsZXMiLCJkZWNsYXJlZFZhcmlhYmxlcyIsImdldERlY2xhcmVkTWV0YXZhcmlhYmxlcyIsImRlY2xhcmVkTWV0YXZhcmlhYmxlcyIsImdldEZhY3RPclN1YnByb29mcyIsImZhY3RPclN1YnByb29mcyIsImdldFByb3BlcnRpZXMiLCJwcm9wZXJ0aWVzIiwidHlwZXMiLCJnZXRUeXBlcyIsImZvckVhY2giLCJ0eXBlIiwiZmluZE1ldGF2YXJpYWJsZSIsIm1ldGF2YXJpYWJsZSIsImNoaWxkQ29udGV4dCIsInBhcmVudENvbnRleHQiLCJmaW5kUnVsZUJ5UmVmZXJlbmNlIiwicmVmZXJlbmNlIiwicnVsZSIsImZpbmRBeGlvbUJ5UmVmZXJlbmNlIiwiYXhpb20iLCJmaW5kQ2xhaW1CeVJlZmVyZW5jZSIsImZpbmRUZXJtQnlUZXJtTm9kZSIsInRlcm1Ob2RlIiwidGVybSIsImZpbmRGcmFtZUJ5RnJhbWVOb2RlIiwiZnJhbWVOb2RlIiwiZnJhbWUiLCJmaW5kRXF1YWxpdHlCeUVxdWFsaXR5Tm9kZSIsImVxdWFsaXR5Tm9kZSIsImVxdWFsaXR5IiwiZmluZEFzc2VydGlvbkJ5QXNzZXJ0aW9uTm9kZSIsImFzc2VydGlvbk5vZGUiLCJhc3NlcnRpb24iLCJmaW5kU3RhdGVtZW50QnlTdGF0ZW1lbnROb2RlIiwic3RhdGVtZW50Tm9kZSIsInN0YXRlbWVudCIsImZpbmRSZWZlcmVuY2VCeVJlZmVyZW5jZU5vZGUiLCJyZWZlcmVuY2VOb2RlIiwiZmluZEFzc3VtcHRpb25CeUFzc3VtcHRpb25Ob2RlIiwiYXNzdW1wdGlvbk5vZGUiLCJhc3N1bXB0aW9uIiwiZmluZFJlZmVyZW5jZUJ5TWV0YXZhcmlhYmxlTm9kZSIsIm1ldGF2YXJpYWJsZU5vZGUiLCJmaW5kTWV0YXZhcmlhYmxlQnlNZXRhdmFyaWFibGVOb2RlIiwiZmluZFN1YnN0aXR1dGlvbkJ5U3Vic3RpdHV0aW9uTm9kZSIsInN1YnN0aXR1dGlvbk5vZGUiLCJzdWJzdGl0dXRpb24iLCJmaW5kSW5mZXJyZWRTdWJzdGl0dXRpb25CeVZhcmlhYmxlTm9kZSIsInZhcmlhYmxlTm9kZSIsImluZmVycmVkU3Vic3RpdHV0aW9uIiwiZmluZEluZmVycmVkU3Vic3RpdHV0aW9uQnlNZXRhdmFyaWFibGVOb2RlIiwiZmluZENvbnN0cmFpbnRCeUNvbnN0cmFpbnROb2RlIiwiY29uc3RyYWludE5vZGUiLCJjb25zdHJhaW50IiwiZmluZFR5cGVCeVR5cGVOYW1lIiwidHlwZU5hbWUiLCJmaW5kVHlwZUJ5Tm9taW5hbFR5cGVOYW1lIiwibm9taW5hbFR5cGVOYW1lIiwiZmluZE1ldGFUeXBlQnlNZXRhVHlwZU5hbWUiLCJtZXRhVHlwZU5hbWUiLCJtZXRhVHlwZSIsImZpbmRQcm9jZWR1cmVCeVByb2NlZHVyZU5hbWUiLCJwcm9jZWR1cmVOYW1lIiwicHJvY2VkdXJlIiwiZmluZERlY2xhcmVkVmFyaWFibGVCeVZhcmlhYmxlSWRlbnRpZmllciIsInZhcmlhYmxlSWRlbnRpZmllciIsImRlY2xhcmVkVmFyaWFibGUiLCJmaW5kRGVjbGFyZWRWYXJpYWJsZXNCeVZhcmlhYmxlSWRlbnRpZmllciIsImZpbmREZWNsYXJlZE1ldGF2YXJpYWJsZUJ5TWV0YXZhcmlhYmxlTmFtZSIsIm1ldGF2YXJpYWJsZU5hbWUiLCJkZWNsYXJlZE1ldGF2YXJpYWJsZSIsImlzVGVybVByZXNlbnRCeVRlcm1Ob2RlIiwidGVybVByZXNlbnQiLCJpc0xhYmVsUHJlc2VudEJ5TGFiZWxOb2RlIiwibGFiZWxOb2RlIiwibGFiZWxQcmVzZW50IiwiaXNGcmFtZVByZXNlbnRCeUZyYW1lTm9kZSIsImZyYW1lUHJlc2VudCIsImlzRXF1YWxpdHlQcmVzZW50QnlFcXVhbGl0eU5vZGUiLCJlcXVhbGl0eVByZXNlbnQiLCJpc0Fzc2VydGlvblByZXNlbnRCeUFzc2VydGlvbk5vZGUiLCJhc3NlcnRpb25QcmVzZW50IiwiaXNTdGF0ZW1lbnRQcmVzZW50QnlTdGF0ZW1lbnROb2RlIiwic3RhdGVtZW50UHJlc2VudCIsImlzTWV0YXZhcmlhYmxlUHJlc2VudEJ5TWV0YXZhcmlhYmxlTm9kZSIsIm1ldGF2YXJpYWJsZVByZXNlbnQiLCJpc1R5cGVQcmVzZW50QnlOb21pbmFsVHlwZU5hbWUiLCJ0eXBlUHJlc2VudCIsImlzUHJvY2VkdXJlUHJlc2VudEJ5UHJvY2VkdXJlTmFtZSIsInByb2NlZHVyZVByZXNlbnQiLCJpc0RlY2xhcmVkTWV0YXZhcmlhYmxlUHJlc2VudEJ5TWV0YXZhcmlhYmxlTmFtZSIsImlzUmVmZXJlbmNlUHJlc2VudEJ5TWV0YXZhcmlhYmxlTm9kZSIsIm1ldHZ2YXJpYWJsZU5vZGUiLCJyZWZlcmVuY2VQcmVzZW50IiwiaXNJbmZlcnJlZFN1YnN0aXR1dGlvblByZXNlbnRCeU1ldGF2YXJpYWJsZU5vZGUiLCJpbmZlcnJlZFN1YnN0aXR1dGlvblByZXNlbnQiLCJpc0luZmVycmVkU3Vic3RpdHV0aW9uUHJlc2VudEJ5TWV0YXZhcmlhYmxlTm9kZUFuZFN1YnN0aXR1dGlvbk5vZGUiLCJpc01ldGFMZXZlbCIsIm1ldGFMZXZlbCIsImFkZFRlcm1zIiwiYWRkQXNzZXJ0aW9ucyIsImFkZE1ldGF2YXJpYWJsZXMiLCJhZGRJbmZlcnJlZFN1YnN0aXR1dGlvbnMiLCJhZGRBeGlvbSIsImFkZExlbW1hIiwibGVtbWEiLCJhZGRTY2hlbWEiLCJzY2hlbWEiLCJhZGRUaGVvcmVtIiwidGhlb3JlbSIsImFkZENvbmplY3R1cmUiLCJjb25qZWN0dXJlIiwiYWRkUnVsZSIsImFkZFRlcm0iLCJhZGRGcmFtZSIsImFkZEVxdWFsaXR5IiwiYWRkQXNzZXJ0aW9uIiwiYWRkU3RhdGVtZW50IiwiYWRkU2lnbmF0dXJlIiwic2lnbmF0dXJlIiwiYWRkUmVmZXJlbmNlIiwiYWRkQXNzdW1wdGlvbiIsImFkZEFzc2lnbm1lbnQiLCJhc3NpZ25tZW50IiwiYWRkTWV0YXZhcmlhYmxlIiwiYWRkU3Vic3RpdHV0aW9uIiwiYWRkRGVjbGFyZWRWYXJpYWJsZSIsImFkZEluZmVycmVkU3Vic3RpdHV0aW9uIiwiYWRkQ29uc3RyYWludCIsImFkZERlY2xhcmVkTWV0YXZhcmlhYmxlIiwiYWRkRmFjdE9yU3VicHJvb2YiLCJmYWN0T3JTdWJwcm9vZiJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBSUE7OztlQUFxQkE7OztnQ0FGa0I7QUFFeEIsTUFBTUEsZ0JBQWdCQyx1QkFBVztJQUM5Q0MsV0FBVztRQUNULE1BQU1D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
|
|
418
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9jb250ZXh0LmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBDb250ZXh0IGFzIENvbnRleHRCYXNlIH0gZnJvbSBcIm9jY2FtLWxhbmd1YWdlc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBDb250ZXh0IGV4dGVuZHMgQ29udGV4dEJhc2Uge1xuICBnZXRMZXhlcigpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksXG4gICAgICAgICAgbGV4ZXIgPSBjb250ZXh0LmdldExleGVyKCk7XG5cbiAgICByZXR1cm4gbGV4ZXI7XG4gIH1cblxuICBnZXRQYXJzZXIoKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpLFxuICAgICAgICAgIHBhcnNlciA9IGNvbnRleHQuZ2V0UGFyc2VyKCk7XG5cbiAgICByZXR1cm4gcGFyc2VyO1xuICB9XG5cbiAgZ2V0RmlsZVBhdGgoKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpLFxuICAgICAgICAgIGZpbGVQYXRoID0gY29udGV4dC5nZXRGaWxlUGF0aCgpO1xuXG4gICAgcmV0dXJuIGZpbGVQYXRoO1xuICB9XG5cbiAgZ2V0VG9rZW5zKCkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSxcbiAgICAgICAgICB0b2tlbnMgPSBjb250ZXh0LmdldFRva2VucygpO1xuXG4gICAgcmV0dXJuIHRva2VucztcbiAgfVxuXG4gIHNldFRva2Vucyh0b2tlbnMpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCk7XG5cbiAgICBjb250ZXh0LnNldFRva2Vucyh0b2tlbnMpO1xuICB9XG5cbiAgZ2V0VGVybXModGVybXMgPSBbXSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKTtcblxuICAgIGNvbnRleHQuZ2V0VGVybXModGVybXMpO1xuXG4gICAgcmV0dXJuIHRlcm1zO1xuICB9XG5cbiAgZ2V0RnJhbWVzKGZyYW1lcyA9IFtdKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpO1xuXG4gICAgY29udGV4dC5nZXRGcmFtZXMoZnJhbWVzKTtcblxuICAgIHJldHVybiBmcmFtZXM7XG4gIH1cblxuICBnZXRFcXVhbGl0aWVzKGVxdWFsaXRpZXMgPSBbXSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKTtcblxuICAgIGNvbnRleHQuZ2V0RXF1YWxpdGllcyhlcXVhbGl0aWVzKTtcblxuICAgIHJldHVybiBlcXVhbGl0aWVzO1xuICB9XG5cbiAgZ2V0QXNzZXJ0aW9ucyhhc3NlcnRpb25zID0gW10pIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCk7XG5cbiAgICBjb250ZXh0LmdldEFzc2VydGlvbnMoYXNzZXJ0aW9ucyk7XG5cbiAgICByZXR1cm4gYXNzZXJ0aW9ucztcbiAgfVxuXG4gIGdldFN0YXRlbWVudHMoc3RhdGVtZW50cyA9IFtdKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpO1xuXG4gICAgY29udGV4dC5nZXRTdGF0ZW1lbnRzKHN0YXRlbWVudHMpO1xuXG4gICAgcmV0dXJuIHN0YXRlbWVudHM7XG4gIH1cblxuICBnZXRTaWduYXR1cmVzKHNpZ25hdHVyZXMgPSBbXSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKTtcblxuICAgIGNvbnRleHQuZ2V0U2lnbmF0dXJlcyhzaWduYXR1cmVzKTtcblxuICAgIHJldHVybiBzaWduYXR1cmVzO1xuICB9XG5cbiAgZ2V0UmVmZXJlbmNlcyhyZWZlcmVuY2VzID0gW10pIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCk7XG5cbiAgICBjb250ZXh0LmdldFJlZmVyZW5jZXMocmVmZXJlbmNlcyk7XG5cbiAgICByZXR1cm4gcmVmZXJlbmNlcztcbiAgfVxuXG4gIGdldEFzc3VtcHRpb25zKGFzc3VtcHRpb25zID0gW10pIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCk7XG5cbiAgICBjb250ZXh0LmdldEFzc3VtcHRpb25zKGFzc3VtcHRpb25zKTtcblxuICAgIHJldHVybiBhc3N1bXB0aW9ucztcbiAgfVxuXG4gIGdldE1ldGF2YXJpYWJsZXMobWV0YXZhcmlhYmxlcyA9IFtdKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpO1xuXG4gICAgY29udGV4dC5nZXRNZXRhdmFyaWFibGVzKG1ldGF2YXJpYWJsZXMpO1xuXG4gICAgcmV0dXJuIG1ldGF2YXJpYWJsZXM7XG4gIH1cblxuICBnZXRTdWJzdGl0dXRpb25zKHN1YnN0aXR1dGlvbnMgPSBbXSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKTtcblxuICAgIGNvbnRleHQuZ2V0U3Vic3RpdHV0aW9ucyhzdWJzdGl0dXRpb25zKTtcblxuICAgIHJldHVybiBzdWJzdGl0dXRpb25zO1xuICB9XG5cbiAgZ2V0SW5mZXJyZWRTdWJzdGl0dXRpb25zKGluZmVycmVkU3Vic3RpdHV0aW9ucyA9IFtdKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpO1xuXG4gICAgY29udGV4dC5nZXRJbmZlcnJlZFN1YnN0aXR1dGlvbnMoaW5mZXJyZWRTdWJzdGl0dXRpb25zKTtcblxuICAgIHJldHVybiBpbmZlcnJlZFN1YnN0aXR1dGlvbnM7XG4gIH1cblxuICBnZXRHZW5lcmF0b3JzKGluY2x1ZGVSZWxlYXNlID0gdHJ1ZSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSxcbiAgICAgICAgICBnZW5lcmF0b3JzID0gY29udGV4dC5nZXRHZW5lcmF0b3JzKGluY2x1ZGVSZWxlYXNlKTtcblxuICAgIHJldHVybiBnZW5lcmF0b3JzO1xuICB9XG5cbiAgZ2V0UHJvY2VkdXJlcyhpbmNsdWRlUmVsZWFzZSA9IHRydWUpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksXG4gICAgICAgICAgcHJvY2VkdXJlcyA9IGNvbnRleHQuZ2V0UHJvY2VkdXJlcyhpbmNsdWRlUmVsZWFzZSk7XG5cbiAgICByZXR1cm4gcHJvY2VkdXJlcztcbiAgfVxuXG4gIGdldENvbWJpbmF0b3JzKGluY2x1ZGVSZWxlYXNlID0gdHJ1ZSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSxcbiAgICAgICAgICBjb21iaW5hdG9ycyA9IGNvbnRleHQuZ2V0Q29tYmluYXRvcnMoaW5jbHVkZVJlbGVhc2UpO1xuXG4gICAgcmV0dXJuIGNvbWJpbmF0b3JzO1xuICB9XG5cbiAgZ2V0Q29uc3RydWN0b3JzKGluY2x1ZGVSZWxlYXNlID0gdHJ1ZSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSxcbiAgICAgICAgICBjb25zdHJ1Y3RvcnMgPSBjb250ZXh0LmdldENvbnN0cnVjdG9ycyhpbmNsdWRlUmVsZWFzZSk7XG5cbiAgICByZXR1cm4gY29uc3RydWN0b3JzO1xuICB9XG5cbiAgZ2V0Q2xhaW0oaW5jbHVkZVJlbGVhc2UgPSB0cnVlKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpLFxuICAgICAgICAgIGNsYWltID0gY29udGV4dC5nZXRDbGFpbShpbmNsdWRlUmVsZWFzZSk7XG5cbiAgICByZXR1cm4gY2xhaW07XG4gIH1cblxuICBnZXRTY2hlbWFzKGluY2x1ZGVSZWxlYXNlID0gdHJ1ZSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSxcbiAgICAgICAgICBzY2hlbWFzID0gY29udGV4dC5nZXRTY2hlbWFzKGluY2x1ZGVSZWxlYXNlKTtcblxuICAgIHJldHVybiBzY2hlbWFzO1xuICB9XG5cbiAgZ2V0VmFyaWFibGVzKG5lc3RlZCkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSxcbiAgICAgICAgICB2YXJpYWJsZXMgPSBjb250ZXh0LmdldFZhcmlhYmxlcyhuZXN0ZWQpO1xuXG4gICAgcmV0dXJuIHZhcmlhYmxlcztcbiAgfVxuXG4gIGdldFN0ZXBzKCkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSxcbiAgICAgICAgICBzdGVwcyA9IGNvbnRleHQuZ2V0U3RlcHMoKTtcblxuICAgIHJldHVybiBzdGVwcztcbiAgfVxuXG4gIGdldEZhY3RzKCkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSxcbiAgICAgICAgICBmYWN0cyA9IGNvbnRleHQuZ2V0RmFjdHMoKTtcblxuICAgIHJldHVybiBmYWN0cztcbiAgfVxuXG4gIGdldEVxdWl2YWxlbmNlcygpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksXG4gICAgICAgICAgZXF1aXZhbGVuY2VzID0gY29udGV4dC5nZXRFcXVpdmFsZW5jZXMoKTtcblxuICAgIHJldHVybiBlcXVpdmFsZW5jZXM7XG4gIH1cblxuICBnZXREZWNsYXJlZFZhcmlhYmxlcyhkZWNsYXJlZFZhcmlhYmxlcyA9IFtdKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpO1xuXG4gICAgY29udGV4dC5nZXREZWNsYXJlZFZhcmlhYmxlcyhkZWNsYXJlZFZhcmlhYmxlcyk7XG5cbiAgICByZXR1cm4gZGVjbGFyZWRWYXJpYWJsZXM7XG4gIH1cblxuICBnZXREZWNsYXJlZE1ldGF2YXJpYWJsZXMoKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpLFxuICAgICAgICAgIGRlY2xhcmVkTWV0YXZhcmlhYmxlcyA9IGNvbnRleHQuZ2V0RGVjbGFyZWRNZXRhdmFyaWFibGVzKCk7XG5cbiAgICByZXR1cm4gZGVjbGFyZWRNZXRhdmFyaWFibGVzO1xuICB9XG5cbiAgZ2V0RmFjdE9yU3VicHJvb2ZzKCkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSxcbiAgICAgICAgICBmYWN0T3JTdWJwcm9vZnMgPSBjb250ZXh0LmdldEZhY3RPclN1YnByb29mcygpO1xuXG4gICAgcmV0dXJuIGZhY3RPclN1YnByb29mcztcbiAgfVxuXG4gIGdldFByb3BlcnRpZXMoKSB7XG4gICAgY29uc3QgcHJvcGVydGllcyA9IFtdLFxuICAgICAgICAgIHR5cGVzID0gdGhpcy5nZXRUeXBlcygpO1xuXG4gICAgdHlwZXMuZm9yRWFjaCgodHlwZSkgPT4ge1xuICAgICAgdHlwZS5nZXRQcm9wZXJ0aWVzKHByb3BlcnRpZXMpO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHByb3BlcnRpZXM7XG4gIH1cblxuICBnZXRUeXBlcygpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksXG4gICAgICAgICAgdHlwZXMgPSBjb250ZXh0LmdldFR5cGVzKCk7XG5cbiAgICByZXR1cm4gdHlwZXM7XG4gIH1cblxuICBmaW5kTWV0YXZhcmlhYmxlKG1ldGF2YXJpYWJsZSwgY29udGV4dCkge1xuICAgIGNvbnN0IGNoaWxkQ29udGV4dCA9IGNvbnRleHQ7IC8vL1xuXG4gICAgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpO1xuXG4gICAgY29uc3QgcGFyZW50Q29udGV4dCA9IGNvbnRleHQ7IC8vL1xuXG4gICAgY29udGV4dCA9IGNoaWxkQ29udGV4dDsgLy8vXG5cbiAgICBtZXRhdmFyaWFibGUgPSBwYXJlbnRDb250ZXh0LmZpbmRNZXRhdmFyaWFibGUobWV0YXZhcmlhYmxlLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBtZXRhdmFyaWFibGU7XG4gIH1cblxuICBmaW5kUnVsZUJ5UmVmZXJlbmNlKHJlZmVyZW5jZSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSxcbiAgICAgICAgICBydWxlID0gY29udGV4dC5maW5kUnVsZUJ5UmVmZXJlbmNlKHJlZmVyZW5jZSk7XG5cbiAgICByZXR1cm4gcnVsZTtcbiAgfVxuXG4gIGZpbmRBeGlvbUJ5UmVmZXJlbmNlKHJlZmVyZW5jZSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSxcbiAgICAgICAgICBheGlvbSA9IGNvbnRleHQuZmluZEF4aW9tQnlSZWZlcmVuY2UocmVmZXJlbmNlKTtcblxuICAgIHJldHVybiBheGlvbTtcbiAgfVxuXG4gIGZpbmRDbGFpbUJ5UmVmZXJlbmNlKHJlZmVyZW5jZSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSxcbiAgICAgICAgICBjbGFpbSA9IGNvbnRleHQuZmluZENsYWltQnlSZWZlcmVuY2UocmVmZXJlbmNlKTtcblxuICAgIHJldHVybiBjbGFpbTtcbiAgfVxuXG4gIGZpbmRUZXJtQnlUZXJtTm9kZSh0ZXJtTm9kZSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSxcbiAgICAgICAgICB0ZXJtID0gY29udGV4dC5maW5kVGVybUJ5VGVybU5vZGUodGVybU5vZGUpO1xuXG4gICAgcmV0dXJuIHRlcm07XG4gIH1cblxuICBmaW5kRnJhbWVCeUZyYW1lTm9kZShmcmFtZU5vZGUpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksXG4gICAgICAgICAgZnJhbWUgPSBjb250ZXh0LmZpbmRGcmFtZUJ5RnJhbWVOb2RlKGZyYW1lTm9kZSk7XG5cbiAgICByZXR1cm4gZnJhbWU7XG4gIH1cblxuICBmaW5kRXF1YWxpdHlCeUVxdWFsaXR5Tm9kZShlcXVhbGl0eU5vZGUpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksXG4gICAgICAgICAgZXF1YWxpdHkgPSBjb250ZXh0LmZpbmRFcXVhbGl0eUJ5RXF1YWxpdHlOb2RlKGVxdWFsaXR5Tm9kZSk7XG5cbiAgICByZXR1cm4gZXF1YWxpdHk7XG4gIH1cblxuICBmaW5kQXNzZXJ0aW9uQnlBc3NlcnRpb25Ob2RlKGFzc2VydGlvbk5vZGUpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksXG4gICAgICAgICAgYXNzZXJ0aW9uID0gY29udGV4dC5maW5kQXNzZXJ0aW9uQnlBc3NlcnRpb25Ob2RlKGFzc2VydGlvbk5vZGUpO1xuXG4gICAgcmV0dXJuIGFzc2VydGlvbjtcbiAgfVxuXG4gIGZpbmRTdGF0ZW1lbnRCeVN0YXRlbWVudE5vZGUoc3RhdGVtZW50Tm9kZSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSxcbiAgICAgICAgICBzdGF0ZW1lbnQgPSBjb250ZXh0LmZpbmRTdGF0ZW1lbnRCeVN0YXRlbWVudE5vZGUoc3RhdGVtZW50Tm9kZSk7XG5cbiAgICByZXR1cm4gc3RhdGVtZW50O1xuICB9XG5cbiAgZmluZFJlZmVyZW5jZUJ5UmVmZXJlbmNlTm9kZShyZWZlcmVuY2VOb2RlKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpLFxuICAgICAgICAgIHJlZmVyZW5jZSA9IGNvbnRleHQuZmluZFJlZmVyZW5jZUJ5UmVmZXJlbmNlTm9kZShyZWZlcmVuY2VOb2RlKTtcblxuICAgIHJldHVybiByZWZlcmVuY2U7XG4gIH1cblxuICBmaW5kQXNzdW1wdGlvbkJ5QXNzdW1wdGlvbk5vZGUoYXNzdW1wdGlvbk5vZGUpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksXG4gICAgICAgICAgYXNzdW1wdGlvbiA9IGNvbnRleHQuZmluZEFzc3VtcHRpb25CeUFzc3VtcHRpb25Ob2RlKGFzc3VtcHRpb25Ob2RlKTtcblxuICAgIHJldHVybiBhc3N1bXB0aW9uO1xuICB9XG5cbiAgZmluZFJlZmVyZW5jZUJ5TWV0YXZhcmlhYmxlTm9kZShtZXRhdmFyaWFibGVOb2RlKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpLFxuICAgICAgICAgIHJlZmVyZW5jZSA9IGNvbnRleHQuZmluZFJlZmVyZW5jZUJ5TWV0YXZhcmlhYmxlTm9kZShtZXRhdmFyaWFibGVOb2RlKTtcblxuICAgIHJldHVybiByZWZlcmVuY2U7XG4gIH1cblxuICBmaW5kTWV0YXZhcmlhYmxlQnlNZXRhdmFyaWFibGVOb2RlKG1ldGF2YXJpYWJsZU5vZGUpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksXG4gICAgICAgICAgbWV0YXZhcmlhYmxlID0gY29udGV4dC5maW5kTWV0YXZhcmlhYmxlQnlNZXRhdmFyaWFibGVOb2RlKG1ldGF2YXJpYWJsZU5vZGUpO1xuXG4gICAgcmV0dXJuIG1ldGF2YXJpYWJsZTtcbiAgfVxuXG4gIGZpbmRTdWJzdGl0dXRpb25CeVN1YnN0aXR1dGlvbk5vZGUoc3Vic3RpdHV0aW9uTm9kZSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSxcbiAgICAgICAgICBzdWJzdGl0dXRpb24gPSBjb250ZXh0LmZpbmRTdWJzdGl0dXRpb25CeVN1YnN0aXR1dGlvbk5vZGUoc3Vic3RpdHV0aW9uTm9kZSk7XG5cbiAgICByZXR1cm4gc3Vic3RpdHV0aW9uO1xuICB9XG5cbiAgZmluZEluZmVycmVkU3Vic3RpdHV0aW9uQnlWYXJpYWJsZU5vZGUodmFyaWFibGVOb2RlKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpLFxuICAgICAgICAgIGluZmVycmVkU3Vic3RpdHV0aW9uID0gY29udGV4dC5maW5kSW5mZXJyZWRTdWJzdGl0dXRpb25CeVZhcmlhYmxlTm9kZSh2YXJpYWJsZU5vZGUpO1xuXG4gICAgcmV0dXJuIGluZmVycmVkU3Vic3RpdHV0aW9uO1xuICB9XG5cbiAgZmluZEluZmVycmVkU3Vic3RpdHV0aW9uQnlNZXRhdmFyaWFibGVOb2RlKG1ldGF2YXJpYWJsZU5vZGUpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksXG4gICAgICAgICAgaW5mZXJyZWRTdWJzdGl0dXRpb24gPSBjb250ZXh0LmZpbmRJbmZlcnJlZFN1YnN0aXR1dGlvbkJ5TWV0YXZhcmlhYmxlTm9kZShtZXRhdmFyaWFibGVOb2RlKTtcblxuICAgIHJldHVybiBpbmZlcnJlZFN1YnN0aXR1dGlvbjtcbiAgfVxuXG4gIGZpbmRDb25zdHJhaW50QnlDb25zdHJhaW50Tm9kZShjb25zdHJhaW50Tm9kZSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSxcbiAgICAgICAgICBjb25zdHJhaW50ID0gY29udGV4dC5maW5kQ29uc3RyYWludEJ5Q29uc3RyYWludE5vZGUoY29uc3RyYWludE5vZGUpO1xuXG4gICAgcmV0dXJuIGNvbnN0cmFpbnQ7XG4gIH1cblxuICBmaW5kVHlwZUJ5VHlwZU5hbWUodHlwZU5hbWUpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksXG4gICAgICAgICAgdHlwZSA9IGNvbnRleHQuZmluZFR5cGVCeVR5cGVOYW1lKHR5cGVOYW1lKTtcblxuICAgIHJldHVybiB0eXBlO1xuICB9XG5cbiAgZmluZFR5cGVCeU5vbWluYWxUeXBlTmFtZShub21pbmFsVHlwZU5hbWUpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksXG4gICAgICAgICAgdHlwZSA9IGNvbnRleHQuZmluZFR5cGVCeU5vbWluYWxUeXBlTmFtZShub21pbmFsVHlwZU5hbWUpO1xuXG4gICAgcmV0dXJuIHR5cGU7XG4gIH1cblxuICBmaW5kTWV0YVR5cGVCeU1ldGFUeXBlTmFtZShtZXRhVHlwZU5hbWUpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksXG4gICAgICAgICAgbWV0YVR5cGUgPSBjb250ZXh0LmZpbmRNZXRhVHlwZUJ5TWV0YVR5cGVOYW1lKG1ldGFUeXBlTmFtZSk7XG5cbiAgICByZXR1cm4gbWV0YVR5cGU7XG4gIH1cblxuICBmaW5kUHJvY2VkdXJlQnlQcm9jZWR1cmVOYW1lKHByb2NlZHVyZU5hbWUpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksXG4gICAgICAgICAgcHJvY2VkdXJlID0gY29udGV4dC5maW5kUHJvY2VkdXJlQnlQcm9jZWR1cmVOYW1lKHByb2NlZHVyZU5hbWUpO1xuXG4gICAgcmV0dXJuIHByb2NlZHVyZTtcbiAgfVxuXG4gIGZpbmREZWNsYXJlZFZhcmlhYmxlQnlWYXJpYWJsZUlkZW50aWZpZXIodmFyaWFibGVJZGVudGlmaWVyKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpLFxuICAgICAgICAgIGRlY2xhcmVkVmFyaWFibGUgPSBjb250ZXh0LmZpbmREZWNsYXJlZFZhcmlhYmxlQnlWYXJpYWJsZUlkZW50aWZpZXIodmFyaWFibGVJZGVudGlmaWVyKTtcblxuICAgIHJldHVybiBkZWNsYXJlZFZhcmlhYmxlO1xuICB9XG5cbiAgZmluZERlY2xhcmVkVmFyaWFibGVzQnlWYXJpYWJsZUlkZW50aWZpZXIodmFyaWFibGVJZGVudGlmaWVyKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpLFxuICAgICAgICAgIGRlY2xhcmVkVmFyaWFibGVzID0gY29udGV4dC5maW5kRGVjbGFyZWRWYXJpYWJsZXNCeVZhcmlhYmxlSWRlbnRpZmllcih2YXJpYWJsZUlkZW50aWZpZXIpO1xuXG4gICAgcmV0dXJuIGRlY2xhcmVkVmFyaWFibGVzO1xuICB9XG5cbiAgZmluZERlY2xhcmVkTWV0YXZhcmlhYmxlQnlNZXRhdmFyaWFibGVOYW1lKG1ldGF2YXJpYWJsZU5hbWUpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksXG4gICAgICAgICAgZGVjbGFyZWRNZXRhdmFyaWFibGUgPSBjb250ZXh0LmZpbmREZWNsYXJlZE1ldGF2YXJpYWJsZUJ5TWV0YXZhcmlhYmxlTmFtZShtZXRhdmFyaWFibGVOYW1lKTtcblxuICAgIHJldHVybiBkZWNsYXJlZE1ldGF2YXJpYWJsZTtcbiAgfVxuXG4gIGlzVGVybVByZXNlbnRCeVRlcm1Ob2RlKHRlcm1Ob2RlKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpLFxuICAgICAgdGVybVByZXNlbnQgPSBjb250ZXh0LmlzVGVybVByZXNlbnRCeVRlcm1Ob2RlKHRlcm1Ob2RlKTtcblxuICAgIHJldHVybiB0ZXJtUHJlc2VudDtcbiAgfVxuXG4gIGlzTGFiZWxQcmVzZW50QnlMYWJlbE5vZGUobGFiZWxOb2RlKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpLFxuICAgICAgICAgIGxhYmVsUHJlc2VudCA9IGNvbnRleHQuaXNMYWJlbFByZXNlbnRCeUxhYmVsTm9kZShsYWJlbE5vZGUpO1xuXG4gICAgcmV0dXJuIGxhYmVsUHJlc2VudDtcbiAgfVxuXG4gIGlzRnJhbWVQcmVzZW50QnlGcmFtZU5vZGUoZnJhbWVOb2RlKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpLFxuICAgICAgICAgIGZyYW1lUHJlc2VudCA9IGNvbnRleHQuaXNGcmFtZVByZXNlbnRCeUZyYW1lTm9kZShmcmFtZU5vZGUpO1xuXG4gICAgcmV0dXJuIGZyYW1lUHJlc2VudDtcbiAgfVxuXG4gIGlzRXF1YWxpdHlQcmVzZW50QnlFcXVhbGl0eU5vZGUoZXF1YWxpdHlOb2RlKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpLFxuICAgICAgICAgIGVxdWFsaXR5UHJlc2VudCA9IGNvbnRleHQuaXNFcXVhbGl0eVByZXNlbnRCeUVxdWFsaXR5Tm9kZShlcXVhbGl0eU5vZGUpO1xuXG4gICAgcmV0dXJuIGVxdWFsaXR5UHJlc2VudDtcbiAgfVxuXG4gIGlzQXNzZXJ0aW9uUHJlc2VudEJ5QXNzZXJ0aW9uTm9kZShhc3NlcnRpb25Ob2RlKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpLFxuICAgICAgICAgIGFzc2VydGlvblByZXNlbnQgPSBjb250ZXh0LmlzQXNzZXJ0aW9uUHJlc2VudEJ5QXNzZXJ0aW9uTm9kZShhc3NlcnRpb25Ob2RlKTtcblxuICAgIHJldHVybiBhc3NlcnRpb25QcmVzZW50O1xuICB9XG5cbiAgaXNTdGF0ZW1lbnRQcmVzZW50QnlTdGF0ZW1lbnROb2RlKHN0YXRlbWVudE5vZGUpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksXG4gICAgICAgICAgc3RhdGVtZW50UHJlc2VudCA9IGNvbnRleHQuaXNTdGF0ZW1lbnRQcmVzZW50QnlTdGF0ZW1lbnROb2RlKHN0YXRlbWVudE5vZGUpO1xuXG4gICAgcmV0dXJuIHN0YXRlbWVudFByZXNlbnQ7XG4gIH1cblxuICBpc01ldGF2YXJpYWJsZVByZXNlbnRCeU1ldGF2YXJpYWJsZU5vZGUobWV0YXZhcmlhYmxlTm9kZSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSxcbiAgICAgICAgICBtZXRhdmFyaWFibGVQcmVzZW50ID0gY29udGV4dC5pc01ldGF2YXJpYWJsZVByZXNlbnRCeU1ldGF2YXJpYWJsZU5vZGUobWV0YXZhcmlhYmxlTm9kZSk7XG5cbiAgICByZXR1cm4gbWV0YXZhcmlhYmxlUHJlc2VudDtcbiAgfVxuXG4gIGlzVHlwZVByZXNlbnRCeU5vbWluYWxUeXBlTmFtZShub21pbmFsVHlwZU5hbWUpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksXG4gICAgICAgICAgdHlwZVByZXNlbnQgPSBjb250ZXh0LmlzVHlwZVByZXNlbnRCeU5vbWluYWxUeXBlTmFtZShub21pbmFsVHlwZU5hbWUpO1xuXG4gICAgcmV0dXJuIHR5cGVQcmVzZW50O1xuICB9XG5cbiAgaXNQcm9jZWR1cmVQcmVzZW50QnlQcm9jZWR1cmVOYW1lKHByb2NlZHVyZU5hbWUpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksXG4gICAgICAgICAgcHJvY2VkdXJlUHJlc2VudCA9IGNvbnRleHQuaXNQcm9jZWR1cmVQcmVzZW50QnlQcm9jZWR1cmVOYW1lKHByb2NlZHVyZU5hbWUpO1xuXG4gICAgcmV0dXJuIHByb2NlZHVyZVByZXNlbnQ7XG4gIH1cblxuICBpc0RlY2xhcmVkTWV0YXZhcmlhYmxlUHJlc2VudEJ5TWV0YXZhcmlhYmxlTmFtZShtZXRhdmFyaWFibGVOYW1lKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpLFxuICAgICAgICAgIG1ldGF2YXJpYWJsZVByZXNlbnQgPSBjb250ZXh0LmlzRGVjbGFyZWRNZXRhdmFyaWFibGVQcmVzZW50QnlNZXRhdmFyaWFibGVOYW1lKG1ldGF2YXJpYWJsZU5hbWUpO1xuXG4gICAgcmV0dXJuIG1ldGF2YXJpYWJsZVByZXNlbnQ7XG4gIH1cblxuICBpc1JlZmVyZW5jZVByZXNlbnRCeU1ldGF2YXJpYWJsZU5vZGUobWV0dnZhcmlhYmxlTm9kZSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSxcbiAgICAgICAgICByZWZlcmVuY2VQcmVzZW50ID0gY29udGV4dC5pc1JlZmVyZW5jZVByZXNlbnRCeU1ldGF2YXJpYWJsZU5vZGUobWV0dnZhcmlhYmxlTm9kZSk7XG5cbiAgICByZXR1cm4gcmVmZXJlbmNlUHJlc2VudDtcbiAgfVxuXG4gIGlzSW5mZXJyZWRTdWJzdGl0dXRpb25QcmVzZW50QnlNZXRhdmFyaWFibGVOb2RlKG1ldGF2YXJpYWJsZU5vZGUpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksXG4gICAgICAgICAgaW5mZXJyZWRTdWJzdGl0dXRpb25QcmVzZW50ID0gY29udGV4dC5pc0luZmVycmVkU3Vic3RpdHV0aW9uUHJlc2VudEJ5TWV0YXZhcmlhYmxlTm9kZShtZXRhdmFyaWFibGVOb2RlKTtcblxuICAgIHJldHVybiBpbmZlcnJlZFN1YnN0aXR1dGlvblByZXNlbnQ7XG4gIH1cblxuICBpc0luZmVycmVkU3Vic3RpdHV0aW9uUHJlc2VudEJ5TWV0YXZhcmlhYmxlTm9kZUFuZFN1YnN0aXR1dGlvbk5vZGUobWV0YXZhcmlhYmxlTm9kZSwgc3Vic3RpdHV0aW9uTm9kZSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSxcbiAgICAgICAgICBpbmZlcnJlZFN1YnN0aXR1dGlvblByZXNlbnQgPSBjb250ZXh0LmlzSW5mZXJyZWRTdWJzdGl0dXRpb25QcmVzZW50QnlNZXRhdmFyaWFibGVOb2RlQW5kU3Vic3RpdHV0aW9uTm9kZShtZXRhdmFyaWFibGVOb2RlLCBzdWJzdGl0dXRpb25Ob2RlKTtcblxuICAgIHJldHVybiBpbmZlcnJlZFN1YnN0aXR1dGlvblByZXNlbnQ7XG4gIH1cblxuICBpc01ldGFMZXZlbCgpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksXG4gICAgICAgICAgbWV0YUxldmVsID0gY29udGV4dC5pc01ldGFMZXZlbCgpO1xuXG4gICAgcmV0dXJuIG1ldGFMZXZlbDtcbiAgfVxuXG4gIGFkZFRlcm1zKHRlcm1zKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpO1xuXG4gICAgY29udGV4dC5hZGRUZXJtcyh0ZXJtcyk7XG4gIH1cblxuICBhZGRBc3NlcnRpb25zKGFzc2VydGlvbnMpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCk7XG5cbiAgICBjb250ZXh0LmFkZEFzc2VydGlvbnMoYXNzZXJ0aW9ucyk7XG4gIH1cblxuICBhZGRNZXRhdmFyaWFibGVzKG1ldGF2YXJpYWJsZXMpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCk7XG5cbiAgICBjb250ZXh0LmFkZE1ldGF2YXJpYWJsZXMobWV0YXZhcmlhYmxlcyk7XG4gIH1cblxuICBhZGRJbmZlcnJlZFN1YnN0aXR1dGlvbnMoaW5mZXJyZWRTdWJzdGl0dXRpb25zKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpO1xuXG4gICAgY29udGV4dC5hZGRJbmZlcnJlZFN1YnN0aXR1dGlvbnMoaW5mZXJyZWRTdWJzdGl0dXRpb25zKTtcbiAgfVxuXG4gIGFkZEF4aW9tKGF4aW9tKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpO1xuXG4gICAgY29udGV4dC5hZGRBeGlvbShheGlvbSk7XG4gIH1cblxuICBhZGRMZW1tYShsZW1tYSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKTtcblxuICAgIGNvbnRleHQuYWRkTGVtbWEobGVtbWEpO1xuICB9XG5cbiAgYWRkU2NoZW1hKHNjaGVtYSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKTtcblxuICAgIGNvbnRleHQuYWRkU2NoZW1hKHNjaGVtYSk7XG4gIH1cblxuICBhZGRUaGVvcmVtKHRoZW9yZW0pIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCk7XG5cbiAgICBjb250ZXh0LmFkZFRoZW9yZW0odGhlb3JlbSk7XG4gIH1cblxuICBhZGRDb25qZWN0dXJlKGNvbmplY3R1cmUpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCk7XG5cbiAgICBjb250ZXh0LmFkZENvbmplY3R1cmUoY29uamVjdHVyZSk7XG4gIH1cblxuICBhZGRSdWxlKHJ1bGUpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCk7XG5cbiAgICBjb250ZXh0LmFkZFJ1bGUocnVsZSk7XG4gIH1cblxuICBhZGRUZXJtKHRlcm0pIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCk7XG5cbiAgICBjb250ZXh0LmFkZFRlcm0odGVybSk7XG4gIH1cblxuICBhZGRGcmFtZShmcmFtZSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKTtcblxuICAgIGNvbnRleHQuYWRkRnJhbWUoZnJhbWUpO1xuICB9XG5cbiAgYWRkRXF1YWxpdHkoZXF1YWxpdHkpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCk7XG5cbiAgICBjb250ZXh0LmFkZEVxdWFsaXR5KGVxdWFsaXR5KTtcbiAgfVxuXG4gIGFkZEFzc2VydGlvbihhc3NlcnRpb24pIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCk7XG5cbiAgICBjb250ZXh0LmFkZEFzc2VydGlvbihhc3NlcnRpb24pO1xuICB9XG5cbiAgYWRkU3RhdGVtZW50KHN0YXRlbWVudCkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKTtcblxuICAgIGNvbnRleHQuYWRkU3RhdGVtZW50KHN0YXRlbWVudCk7XG4gIH1cblxuICBhZGRTaWduYXR1cmUoc2lnbmF0dXJlKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpO1xuXG4gICAgY29udGV4dC5hZGRTaWduYXR1cmUoc2lnbmF0dXJlKTtcbiAgfVxuXG4gIGFkZFJlZmVyZW5jZShyZWZlcmVuY2UpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCk7XG5cbiAgICBjb250ZXh0LmFkZFJlZmVyZW5jZShyZWZlcmVuY2UpO1xuICB9XG5cbiAgYWRkQXNzdW1wdGlvbihhc3N1bXB0aW9uKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpO1xuXG4gICAgY29udGV4dC5hZGRBc3N1bXB0aW9uKGFzc3VtcHRpb24pO1xuICB9XG5cbiAgYWRkQXNzaWdubWVudChhc3NpZ25tZW50KSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpO1xuXG4gICAgY29udGV4dC5hZGRBc3NpZ25tZW50KGFzc2lnbm1lbnQpO1xuICB9XG5cbiAgYWRkTWV0YXZhcmlhYmxlKG1ldGF2YXJpYWJsZSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKTtcblxuICAgIGNvbnRleHQuYWRkTWV0YXZhcmlhYmxlKG1ldGF2YXJpYWJsZSk7XG4gIH1cblxuICBhZGRTdWJzdGl0dXRpb24oc3Vic3RpdHV0aW9uKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpO1xuXG4gICAgY29udGV4dC5hZGRTdWJzdGl0dXRpb24oc3Vic3RpdHV0aW9uKTtcbiAgfVxuXG4gIGFkZERlY2xhcmVkVmFyaWFibGUoZGVjbGFyZWRWYXJpYWJsZSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKTtcblxuICAgIGNvbnRleHQuYWRkRGVjbGFyZWRWYXJpYWJsZShkZWNsYXJlZFZhcmlhYmxlKTtcbiAgfVxuXG4gIGFkZEluZmVycmVkU3Vic3RpdHV0aW9uKGluZmVycmVkU3Vic3RpdHV0aW9uKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpO1xuXG4gICAgY29udGV4dC5hZGRJbmZlcnJlZFN1YnN0aXR1dGlvbihpbmZlcnJlZFN1YnN0aXR1dGlvbik7XG4gIH1cblxuICBhZGRDb25zdHJhaW50KGNvbnN0cmFpbnQpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCk7XG5cbiAgICBjb250ZXh0LmFkZENvbnN0cmFpbnQoY29uc3RyYWludCk7XG4gIH1cblxuICBhZGREZWNsYXJlZE1ldGF2YXJpYWJsZShkZWNsYXJlZE1ldGF2YXJpYWJsZSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKTtcblxuICAgIGNvbnRleHQuYWRkRGVjbGFyZWRNZXRhdmFyaWFibGUoZGVjbGFyZWRNZXRhdmFyaWFibGUpO1xuICB9XG5cbiAgYWRkRmFjdE9yU3VicHJvb2YoZmFjdE9yU3VicHJvb2YpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCk7XG5cbiAgICBjb250ZXh0LmFkZEZhY3RPclN1YnByb29mKGZhY3RPclN1YnByb29mKTtcbiAgfVxuXG4gIGdldFJ1bGVzKCkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSxcbiAgICAgICAgICBydWxlcyA9IGNvbnRleHQuZ2V0UnVsZXMoKTtcblxuICAgIHJldHVybiBydWxlcztcbiAgfVxufVxuIl0sIm5hbWVzIjpbIkNvbnRleHQiLCJDb250ZXh0QmFzZSIsImdldExleGVyIiwiY29udGV4dCIsImdldENvbnRleHQiLCJsZXhlciIsImdldFBhcnNlciIsInBhcnNlciIsImdldEZpbGVQYXRoIiwiZmlsZVBhdGgiLCJnZXRUb2tlbnMiLCJ0b2tlbnMiLCJzZXRUb2tlbnMiLCJnZXRUZXJtcyIsInRlcm1zIiwiZ2V0RnJhbWVzIiwiZnJhbWVzIiwiZ2V0RXF1YWxpdGllcyIsImVxdWFsaXRpZXMiLCJnZXRBc3NlcnRpb25zIiwiYXNzZXJ0aW9ucyIsImdldFN0YXRlbWVudHMiLCJzdGF0ZW1lbnRzIiwiZ2V0U2lnbmF0dXJlcyIsInNpZ25hdHVyZXMiLCJnZXRSZWZlcmVuY2VzIiwicmVmZXJlbmNlcyIsImdldEFzc3VtcHRpb25zIiwiYXNzdW1wdGlvbnMiLCJnZXRNZXRhdmFyaWFibGVzIiwibWV0YXZhcmlhYmxlcyIsImdldFN1YnN0aXR1dGlvbnMiLCJzdWJzdGl0dXRpb25zIiwiZ2V0SW5mZXJyZWRTdWJzdGl0dXRpb25zIiwiaW5mZXJyZWRTdWJzdGl0dXRpb25zIiwiZ2V0R2VuZXJhdG9ycyIsImluY2x1ZGVSZWxlYXNlIiwiZ2VuZXJhdG9ycyIsImdldFByb2NlZHVyZXMiLCJwcm9jZWR1cmVzIiwiZ2V0Q29tYmluYXRvcnMiLCJjb21iaW5hdG9ycyIsImdldENvbnN0cnVjdG9ycyIsImNvbnN0cnVjdG9ycyIsImdldENsYWltIiwiY2xhaW0iLCJnZXRTY2hlbWFzIiwic2NoZW1hcyIsImdldFZhcmlhYmxlcyIsIm5lc3RlZCIsInZhcmlhYmxlcyIsImdldFN0ZXBzIiwic3RlcHMiLCJnZXRGYWN0cyIsImZhY3RzIiwiZ2V0RXF1aXZhbGVuY2VzIiwiZXF1aXZhbGVuY2VzIiwiZ2V0RGVjbGFyZWRWYXJpYWJsZXMiLCJkZWNsYXJlZFZhcmlhYmxlcyIsImdldERlY2xhcmVkTWV0YXZhcmlhYmxlcyIsImRlY2xhcmVkTWV0YXZhcmlhYmxlcyIsImdldEZhY3RPclN1YnByb29mcyIsImZhY3RPclN1YnByb29mcyIsImdldFByb3BlcnRpZXMiLCJwcm9wZXJ0aWVzIiwidHlwZXMiLCJnZXRUeXBlcyIsImZvckVhY2giLCJ0eXBlIiwiZmluZE1ldGF2YXJpYWJsZSIsIm1ldGF2YXJpYWJsZSIsImNoaWxkQ29udGV4dCIsInBhcmVudENvbnRleHQiLCJmaW5kUnVsZUJ5UmVmZXJlbmNlIiwicmVmZXJlbmNlIiwicnVsZSIsImZpbmRBeGlvbUJ5UmVmZXJlbmNlIiwiYXhpb20iLCJmaW5kQ2xhaW1CeVJlZmVyZW5jZSIsImZpbmRUZXJtQnlUZXJtTm9kZSIsInRlcm1Ob2RlIiwidGVybSIsImZpbmRGcmFtZUJ5RnJhbWVOb2RlIiwiZnJhbWVOb2RlIiwiZnJhbWUiLCJmaW5kRXF1YWxpdHlCeUVxdWFsaXR5Tm9kZSIsImVxdWFsaXR5Tm9kZSIsImVxdWFsaXR5IiwiZmluZEFzc2VydGlvbkJ5QXNzZXJ0aW9uTm9kZSIsImFzc2VydGlvbk5vZGUiLCJhc3NlcnRpb24iLCJmaW5kU3RhdGVtZW50QnlTdGF0ZW1lbnROb2RlIiwic3RhdGVtZW50Tm9kZSIsInN0YXRlbWVudCIsImZpbmRSZWZlcmVuY2VCeVJlZmVyZW5jZU5vZGUiLCJyZWZlcmVuY2VOb2RlIiwiZmluZEFzc3VtcHRpb25CeUFzc3VtcHRpb25Ob2RlIiwiYXNzdW1wdGlvbk5vZGUiLCJhc3N1bXB0aW9uIiwiZmluZFJlZmVyZW5jZUJ5TWV0YXZhcmlhYmxlTm9kZSIsIm1ldGF2YXJpYWJsZU5vZGUiLCJmaW5kTWV0YXZhcmlhYmxlQnlNZXRhdmFyaWFibGVOb2RlIiwiZmluZFN1YnN0aXR1dGlvbkJ5U3Vic3RpdHV0aW9uTm9kZSIsInN1YnN0aXR1dGlvbk5vZGUiLCJzdWJzdGl0dXRpb24iLCJmaW5kSW5mZXJyZWRTdWJzdGl0dXRpb25CeVZhcmlhYmxlTm9kZSIsInZhcmlhYmxlTm9kZSIsImluZmVycmVkU3Vic3RpdHV0aW9uIiwiZmluZEluZmVycmVkU3Vic3RpdHV0aW9uQnlNZXRhdmFyaWFibGVOb2RlIiwiZmluZENvbnN0cmFpbnRCeUNvbnN0cmFpbnROb2RlIiwiY29uc3RyYWludE5vZGUiLCJjb25zdHJhaW50IiwiZmluZFR5cGVCeVR5cGVOYW1lIiwidHlwZU5hbWUiLCJmaW5kVHlwZUJ5Tm9taW5hbFR5cGVOYW1lIiwibm9taW5hbFR5cGVOYW1lIiwiZmluZE1ldGFUeXBlQnlNZXRhVHlwZU5hbWUiLCJtZXRhVHlwZU5hbWUiLCJtZXRhVHlwZSIsImZpbmRQcm9jZWR1cmVCeVByb2NlZHVyZU5hbWUiLCJwcm9jZWR1cmVOYW1lIiwicHJvY2VkdXJlIiwiZmluZERlY2xhcmVkVmFyaWFibGVCeVZhcmlhYmxlSWRlbnRpZmllciIsInZhcmlhYmxlSWRlbnRpZmllciIsImRlY2xhcmVkVmFyaWFibGUiLCJmaW5kRGVjbGFyZWRWYXJpYWJsZXNCeVZhcmlhYmxlSWRlbnRpZmllciIsImZpbmREZWNsYXJlZE1ldGF2YXJpYWJsZUJ5TWV0YXZhcmlhYmxlTmFtZSIsIm1ldGF2YXJpYWJsZU5hbWUiLCJkZWNsYXJlZE1ldGF2YXJpYWJsZSIsImlzVGVybVByZXNlbnRCeVRlcm1Ob2RlIiwidGVybVByZXNlbnQiLCJpc0xhYmVsUHJlc2VudEJ5TGFiZWxOb2RlIiwibGFiZWxOb2RlIiwibGFiZWxQcmVzZW50IiwiaXNGcmFtZVByZXNlbnRCeUZyYW1lTm9kZSIsImZyYW1lUHJlc2VudCIsImlzRXF1YWxpdHlQcmVzZW50QnlFcXVhbGl0eU5vZGUiLCJlcXVhbGl0eVByZXNlbnQiLCJpc0Fzc2VydGlvblByZXNlbnRCeUFzc2VydGlvbk5vZGUiLCJhc3NlcnRpb25QcmVzZW50IiwiaXNTdGF0ZW1lbnRQcmVzZW50QnlTdGF0ZW1lbnROb2RlIiwic3RhdGVtZW50UHJlc2VudCIsImlzTWV0YXZhcmlhYmxlUHJlc2VudEJ5TWV0YXZhcmlhYmxlTm9kZSIsIm1ldGF2YXJpYWJsZVByZXNlbnQiLCJpc1R5cGVQcmVzZW50QnlOb21pbmFsVHlwZU5hbWUiLCJ0eXBlUHJlc2VudCIsImlzUHJvY2VkdXJlUHJlc2VudEJ5UHJvY2VkdXJlTmFtZSIsInByb2NlZHVyZVByZXNlbnQiLCJpc0RlY2xhcmVkTWV0YXZhcmlhYmxlUHJlc2VudEJ5TWV0YXZhcmlhYmxlTmFtZSIsImlzUmVmZXJlbmNlUHJlc2VudEJ5TWV0YXZhcmlhYmxlTm9kZSIsIm1ldHZ2YXJpYWJsZU5vZGUiLCJyZWZlcmVuY2VQcmVzZW50IiwiaXNJbmZlcnJlZFN1YnN0aXR1dGlvblByZXNlbnRCeU1ldGF2YXJpYWJsZU5vZGUiLCJpbmZlcnJlZFN1YnN0aXR1dGlvblByZXNlbnQiLCJpc0luZmVycmVkU3Vic3RpdHV0aW9uUHJlc2VudEJ5TWV0YXZhcmlhYmxlTm9kZUFuZFN1YnN0aXR1dGlvbk5vZGUiLCJpc01ldGFMZXZlbCIsIm1ldGFMZXZlbCIsImFkZFRlcm1zIiwiYWRkQXNzZXJ0aW9ucyIsImFkZE1ldGF2YXJpYWJsZXMiLCJhZGRJbmZlcnJlZFN1YnN0aXR1dGlvbnMiLCJhZGRBeGlvbSIsImFkZExlbW1hIiwibGVtbWEiLCJhZGRTY2hlbWEiLCJzY2hlbWEiLCJhZGRUaGVvcmVtIiwidGhlb3JlbSIsImFkZENvbmplY3R1cmUiLCJjb25qZWN0dXJlIiwiYWRkUnVsZSIsImFkZFRlcm0iLCJhZGRGcmFtZSIsImFkZEVxdWFsaXR5IiwiYWRkQXNzZXJ0aW9uIiwiYWRkU3RhdGVtZW50IiwiYWRkU2lnbmF0dXJlIiwic2lnbmF0dXJlIiwiYWRkUmVmZXJlbmNlIiwiYWRkQXNzdW1wdGlvbiIsImFkZEFzc2lnbm1lbnQiLCJhc3NpZ25tZW50IiwiYWRkTWV0YXZhcmlhYmxlIiwiYWRkU3Vic3RpdHV0aW9uIiwiYWRkRGVjbGFyZWRWYXJpYWJsZSIsImFkZEluZmVycmVkU3Vic3RpdHV0aW9uIiwiYWRkQ29uc3RyYWludCIsImFkZERlY2xhcmVkTWV0YXZhcmlhYmxlIiwiYWRkRmFj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
|
package/lib/element/claim.js
CHANGED
|
@@ -207,23 +207,29 @@ class Claim extends _occamlanguages.Element {
|
|
|
207
207
|
});
|
|
208
208
|
}, context);
|
|
209
209
|
}
|
|
210
|
-
unifyFactOrSubproofsWithSupposition(
|
|
211
|
-
return extract(
|
|
210
|
+
unifyFactOrSubproofsWithSupposition(factOrSubproofs, supposition, context, forward, back) {
|
|
211
|
+
return extract(factOrSubproofs, (factOrSubproof, forward, back)=>{
|
|
212
212
|
return supposition.unifyFactOrSubproof(factOrSubproof, context, forward, back);
|
|
213
|
-
}, (factOrSubproof, back)=>{
|
|
214
|
-
return context.solveInferredSubstitutions(
|
|
213
|
+
}, (factOrSubproofs, factOrSubproof, context, back)=>{
|
|
214
|
+
return context.solveInferredSubstitutions((back)=>{
|
|
215
|
+
return forward(factOrSubproofs, context, back);
|
|
216
|
+
}, back);
|
|
215
217
|
}, (exception)=>{
|
|
216
218
|
if (exception) {
|
|
217
219
|
return back(exception);
|
|
218
220
|
}
|
|
219
|
-
return supposition.unifyIndependently(context,
|
|
221
|
+
return supposition.unifyIndependently(context, (context, back)=>{
|
|
222
|
+
return forward(factOrSubproofs, context, back);
|
|
223
|
+
}, back);
|
|
220
224
|
});
|
|
221
225
|
}
|
|
222
|
-
unifyFactOrSubproofsWithSuppositions(
|
|
223
|
-
|
|
224
|
-
return backwardsEvery(this.suppositions, (supposition,
|
|
225
|
-
return this.unifyFactOrSubproofsWithSupposition(
|
|
226
|
-
},
|
|
226
|
+
unifyFactOrSubproofsWithSuppositions(factOrSubproofs, context, forward, back) {
|
|
227
|
+
factOrSubproofs = reverse(factOrSubproofs); ///
|
|
228
|
+
return backwardsEvery(this.suppositions, (supposition, factOrSubproofs, context, forward, back)=>{
|
|
229
|
+
return this.unifyFactOrSubproofsWithSupposition(factOrSubproofs, supposition, context, forward, back);
|
|
230
|
+
}, factOrSubproofs, context, (factOrSubproofs, context, back)=>{
|
|
231
|
+
return forward(context, back);
|
|
232
|
+
}, back);
|
|
227
233
|
}
|
|
228
234
|
toJSON() {
|
|
229
235
|
const labelsJSON = (0, _json.labelsToLabelsJSON)(this.labels), deductionJSON = (0, _json.deductionToDeductionJSON)(this.deduction), suppositionsJSON = (0, _json.suppositionsToSuppositionsJSON)(this.suppositions), signatureJSON = (0, _json.signatureToSignatureJSON)(this.signature), hypothesesJSON = (0, _json.hypothesesToHypothesesJSON)(this.hypotheses), string = this.getString();
|
|
@@ -248,4 +254,4 @@ class Claim extends _occamlanguages.Element {
|
|
|
248
254
|
}
|
|
249
255
|
}
|
|
250
256
|
|
|
251
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbGVtZW50L2NsYWltLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBhcnJheVV0aWxpdGllcyB9IGZyb20gXCJuZWNlc3NhcnlcIjtcbmltcG9ydCB7IEVsZW1lbnQsIGJyZWFrUG9pbnRVdGlsaXRpZXMsIGNvbnRpbnVhdGlvblV0aWxpdGllcyB9IGZyb20gXCJvY2NhbS1sYW5ndWFnZXNcIjtcblxuaW1wb3J0IHsgZW5jbG9zZSwgcmVjb25jaWxlIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9jb250ZXh0XCI7XG5pbXBvcnQgeyBjbGFpbVN0cmluZ0Zyb21MYWJlbHNTaWduYXR1cmVTdXBwb3NpdGlvbnNBbmREZWR1Y3Rpb24gfSBmcm9tIFwiLi4vdXRpbGl0aWVzL3N0cmluZ1wiO1xuaW1wb3J0IHsgbGFiZWxzRnJvbUpTT04sXG4gICAgICAgICBkZWR1Y3Rpb25Gcm9tSlNPTixcbiAgICAgICAgIHNpZ25hdHVyZUZyb21KU09OLFxuICAgICAgICAgbGFiZWxzVG9MYWJlbHNKU09OLFxuICAgICAgICAgaHlwb3RoZXNlc0Zyb21KU09OLFxuICAgICAgICAgc3VwcG9zaXRpb25zRnJvbUpTT04sXG4gICAgICAgICBkZWR1Y3Rpb25Ub0RlZHVjdGlvbkpTT04sXG4gICAgICAgICBzaWduYXR1cmVUb1NpZ25hdHVyZUpTT04sXG4gICAgICAgICBoeXBvdGhlc2VzVG9IeXBvdGhlc2VzSlNPTixcbiAgICAgICAgIHN1cHBvc2l0aW9uc1RvU3VwcG9zaXRpb25zSlNPTiB9IGZyb20gXCIuLi91dGlsaXRpZXMvanNvblwiO1xuXG5jb25zdCB7IHJldmVyc2UgfSA9IGFycmF5VXRpbGl0aWVzLFxuICAgICAgeyBicmVha1BvaW50RnJvbUpTT04sIGJyZWFrUG9pbnRUb0JyZWFrUG9pbnRKU09OIH0gPSBicmVha1BvaW50VXRpbGl0aWVzLFxuICAgICAgeyBhbGwsIGV2ZXJ5LCBleHRyYWN0LCBmb3J3YXJkc0V2ZXJ5LCBiYWNrd2FyZHNFdmVyeSB9ID0gY29udGludWF0aW9uVXRpbGl0aWVzO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBDbGFpbSBleHRlbmRzIEVsZW1lbnQge1xuICBjb25zdHJ1Y3Rvcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIGxhYmVscywgc3VwcG9zaXRpb25zLCBkZWR1Y3Rpb24sIHByb29mLCBzaWduYXR1cmUsIGh5cG90aGVzZXMpIHtcbiAgICBzdXBlcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQpO1xuXG4gICAgdGhpcy5sYWJlbHMgPSBsYWJlbHM7XG4gICAgdGhpcy5zdXBwb3NpdGlvbnMgPSBzdXBwb3NpdGlvbnM7XG4gICAgdGhpcy5kZWR1Y3Rpb24gPSBkZWR1Y3Rpb247XG4gICAgdGhpcy5wcm9vZiA9IHByb29mO1xuICAgIHRoaXMuc2lnbmF0dXJlID0gc2lnbmF0dXJlO1xuICAgIHRoaXMuaHlwb3RoZXNlcyA9IGh5cG90aGVzZXM7XG4gIH1cblxuICBnZXRMYWJlbHMoKSB7XG4gICAgcmV0dXJuIHRoaXMubGFiZWxzO1xuICB9XG5cbiAgZ2V0U3VwcG9zaXRpb25zKCkge1xuICAgIHJldHVybiB0aGlzLnN1cHBvc2l0aW9ucztcbiAgfVxuXG4gIGdldERlZHVjdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5kZWR1Y3Rpb247XG4gIH1cblxuICBnZXRQcm9vZigpIHtcbiAgICByZXR1cm4gdGhpcy5wcm9vZjtcbiAgfVxuXG4gIGdldFNpZ25hdHVyZSgpIHtcbiAgICByZXR1cm4gdGhpcy5zaWduYXR1cmU7XG4gIH1cblxuICBnZXRIeXBvdGhlc2VzKCkge1xuICAgIHJldHVybiB0aGlzLmh5cG90aGVzZXM7XG4gIH1cblxuICBzZXRIeXBvdGhlc2VzKGh5cG90aGVzZXMpIHtcbiAgICB0aGlzLmh5cG90aGVzZXMgPSBoeXBvdGhlc2VzO1xuICB9XG5cbiAgZ2V0U3VwcG9zaXRpb24oaW5kZXgpIHtcbiAgICBjb25zdCBzdXBwb3NpdGlvbiA9IHRoaXMuc3VwcG9zaXRpb25zW2luZGV4XSB8fCBudWxsO1xuXG4gICAgcmV0dXJuIHN1cHBvc2l0aW9uO1xuICB9XG5cbiAgaXNTYXRpc2ZpYWJsZSgpIHtcbiAgICBjb25zdCBzYXRpc2ZpYWJsZSA9IGZhbHNlO1xuXG4gICAgcmV0dXJuIHNhdGlzZmlhYmxlO1xuICB9XG5cbiAgaXNIeXBvdGhldGljYWwoKSB7XG4gICAgY29uc3QgaHlwb3RoZXNlc0xlbmd0aCA9IHRoaXMuaHlwb3RoZXNlcy5sZW5ndGgsXG4gICAgICAgICAgaHlwb3RoZXRpY2FsID0gKGh5cG90aGVzZXNMZW5ndGggPiAwKTtcblxuICAgIHJldHVybiBoeXBvdGhldGljYWw7XG4gIH1cblxuICBtYXRjaE1ldGF2YXJpYWJsZU5vZGUobWV0YXZhcmlhYmxlTm9kZSkge1xuICAgIGNvbnN0IG1ldGF2YXJpYWJsZU5vZGVNYXRjaGVzID0gdGhpcy5sYWJlbHMuc29tZSgobGFiZWwpID0+IHtcbiAgICAgIGNvbnN0IG1ldGF2YXJpYWJsZU5vZGVNYXRjaGVzID0gbGFiZWwubWF0Y2hNZXRhdmFyaWFibGVOb2RlKG1ldGF2YXJpYWJsZU5vZGUpO1xuXG4gICAgICBpZiAobWV0YXZhcmlhYmxlTm9kZU1hdGNoZXMpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gbWV0YXZhcmlhYmxlTm9kZU1hdGNoZXM7XG4gIH1cblxuICB2ZXJpZnlFeChjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgcmV0dXJuIGVuY2xvc2UoKGNvbnRleHQpID0+IHtcbiAgICAgIGNvbnN0IHZlcmlmeVByb29mID0gdGhpcy52ZXJpZnlQcm9vZi5iaW5kKHRoaXMpLFxuICAgICAgICAgICAgdmVyaWZ5TGFiZWxzID0gdGhpcy52ZXJpZnlMYWJlbHMuYmluZCh0aGlzKSxcbiAgICAgICAgICAgIHZlcmlmeURlZHVjdGlvbiA9IHRoaXMudmVyaWZ5RGVkdWN0aW9uLmJpbmQodGhpcyksXG4gICAgICAgICAgICB2ZXJpZnlTdXBwb3NpdGlvbnMgPSB0aGlzLnZlcmlmeVN1cHBvc2l0aW9ucy5iaW5kKHRoaXMpO1xuXG4gICAgICByZXR1cm4gYWxsKFtcbiAgICAgICAgdmVyaWZ5TGFiZWxzLFxuICAgICAgICB2ZXJpZnlTdXBwb3NpdGlvbnMsXG4gICAgICAgIHZlcmlmeURlZHVjdGlvbixcbiAgICAgICAgdmVyaWZ5UHJvb2ZcbiAgICAgIF0sIGNvbnRleHQsIGZvcndhcmQsIGJhY2spO1xuICAgIH0sIGNvbnRleHQpO1xuICB9XG5cbiAgdmVyaWZ5TGFiZWxzKGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBjbGFpbVN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7Y2xhaW1TdHJpbmd9JyBjbGFpbSdzIGxhYmVscy4uLmApO1xuXG4gICAgY29uc3QgdmVyaWZ5TGFiZWwgPSB0aGlzLnZlcmlmeUxhYmVsLmJpbmQodGhpcyk7XG5cbiAgICByZXR1cm4gZXZlcnkodGhpcy5sYWJlbHMsIHZlcmlmeUxhYmVsLCBjb250ZXh0LCAoY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke2NsYWltU3RyaW5nfScgY2xhaW0ncyBsYWJlbHMuYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKGNvbnRleHQsIGJhY2spO1xuICAgIH0sIGJhY2spO1xuICB9XG5cbiAgdmVyaWZ5TGFiZWwobGFiZWwsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBsYWJlbFN0cmluZyA9IGxhYmVsLmdldFN0cmluZygpLFxuICAgICAgICAgIGNsYWltU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke2NsYWltU3RyaW5nfScgY2xhaW0ncyAnJHtsYWJlbFN0cmluZ30nIGxhYmVsLi4uYCk7XG5cbiAgICByZXR1cm4gbGFiZWwudmVyaWZ5KChiYWNrKSA9PiB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7Y2xhaW1TdHJpbmd9JyBjbGFpbSdzICcke2xhYmVsU3RyaW5nfScgbGFiZWwuYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKGNvbnRleHQsIGJhY2spO1xuICAgIH0sIGJhY2spO1xuICB9XG5cbiAgdmVyaWZ5UHJvb2YoY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGlmICh0aGlzLnByb29mID09PSBudWxsKSB7XG4gICAgICByZXR1cm4gZm9yd2FyZChjb250ZXh0LCBiYWNrKTtcbiAgICB9XG5cbiAgICBjb25zdCBjbGFpbVN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7Y2xhaW1TdHJpbmd9JyBjbGFpbSdzIHByb29mLi4uYCk7XG5cbiAgICBjb25zdCBzdGF0ZW1lbnQgPSB0aGlzLmRlZHVjdGlvbi5nZXRTdGF0ZW1lbnQoKTtcblxuICAgIHJldHVybiB0aGlzLnByb29mLnZlcmlmeShzdGF0ZW1lbnQsIGNvbnRleHQsIChwcm9vZlZlcmlmaWVzKSA9PiB7XG4gICAgICBpZiAocHJvb2ZWZXJpZmllcykge1xuICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7Y2xhaW1TdHJpbmd9JyBjbGFpbSdzIHByb29mLmApO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gY29udGludWF0aW9uKHByb29mVmVyaWZpZXMsIGNvbnRleHQpO1xuICAgIH0pO1xuICB9XG5cbiAgdmVyaWZ5RGVkdWN0aW9uKGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBjbGFpbVN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCksIC8vL1xuICAgICAgICAgIGRlZHVjdGlvblN0cmluZyA9IHRoaXMuZGVkdWN0aW9uLmdldFN0cmluZygpO1xuXG4gICAgY29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHtjbGFpbVN0cmluZ30nIGNsYWltJ3MgJyR7ZGVkdWN0aW9uU3RyaW5nfScgZGVkdWN0aW9uLi4uYCk7XG5cbiAgICByZXR1cm4gdGhpcy5kZWR1Y3Rpb24udmVyaWZ5KGNvbnRleHQsIChjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7Y2xhaW1TdHJpbmd9JyBjbGFpbSdzICcke2RlZHVjdGlvblN0cmluZ30nIGRlZHVjdGlvbi5gKTtcblxuICAgICAgcmV0dXJuIGZvcndhcmQoY29udGV4dCwgYmFjayk7XG4gICAgfSwgYmFjayk7XG4gIH1cblxuICB2ZXJpZnlTdXBwb3NpdGlvbihzdXBwb3NpdGlvbiwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IGNsYWltU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKSwgLy8vXG4gICAgICAgICAgc3VwcG9zaXRpb25TdHJpbmcgPSBzdXBwb3NpdGlvbi5nZXRTdHJpbmcoKTtcblxuICAgIGNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7Y2xhaW1TdHJpbmd9JyBjbGFpbSdzICcke3N1cHBvc2l0aW9uU3RyaW5nfScgc3VwcG9zaXRpb24uLi5gKTtcblxuICAgIHJldHVybiBzdXBwb3NpdGlvbi52ZXJpZnkoY29udGV4dCwgKGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIGNvbnN0IGZhY3RPclN1YnByb29mID0gc3VwcG9zaXRpb247ICAvLy8vXG5cbiAgICAgIGNvbnRleHQuYXNzaWduQXNzaWdubWVudHMoKTtcblxuICAgICAgY29udGV4dC5hZGRGYWN0T3JTdWJwcm9vZihmYWN0T3JTdWJwcm9vZik7XG5cbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHtjbGFpbVN0cmluZ30nIGNsYWltJ3MgJyR7c3VwcG9zaXRpb25TdHJpbmd9JyBzdXBwb3NpdGlvbi5gKTtcblxuICAgICAgcmV0dXJuIGZvcndhcmQoY29udGV4dCwgYmFjayk7XG4gICAgfSwgYmFjayk7XG4gIH1cblxuICB2ZXJpZnlTdXBwb3NpdGlvbnMoY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IHN1cHBvc2l0aW9uc0xlbmd0aCA9IHRoaXMuc3VwcG9zaXRpb25zLmxlbmd0aDtcblxuICAgIGlmIChzdXBwb3NpdGlvbnNMZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiBmb3J3YXJkKGNvbnRleHQsIGJhY2spO1xuICAgIH1cblxuICAgIGNvbnN0IGNsYWltU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHtjbGFpbVN0cmluZ30nIGNsYWltJ3Mgc3VwcG9zaXRpb25zLi4uYCk7XG5cbiAgICByZXR1cm4gZm9yd2FyZHNFdmVyeSh0aGlzLnN1cHBvc2l0aW9ucywgKHN1cHBvc2l0aW9uLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy52ZXJpZnlTdXBwb3NpdGlvbihzdXBwb3NpdGlvbiwgY29udGV4dCwgZm9yd2FyZCwgYmFjayk7XG4gICAgfSwgY29udGV4dCwgKGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHtjbGFpbVN0cmluZ30nIGNsYWltJ3Mgc3VwcG9zaXRpb25zLmApO1xuXG4gICAgICByZXR1cm4gZm9yd2FyZChjb250ZXh0LCBiYWNrKTtcbiAgICB9LCBiYWNrKTtcbiAgfVxuXG4gIGRpc2NoYXJnZUh5cG90aGVzaXMoaHlwb3RoZXNpcywgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IGNsYWltU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKSwgLy8vXG4gICAgICAgICAgaHlwb3RoZXNpc1N0cmluZyA9IGh5cG90aGVzaXMuZ2V0U3RyaW5nKCk7XG5cbiAgICBjb250ZXh0LnRyYWNlKGBEaXNjaGFyZ2luZyB0aGUgJyR7Y2xhaW1TdHJpbmd9JyBjbGFpbSdzICcke2h5cG90aGVzaXNTdHJpbmd9JyBoeXBvdGhlc2lzLi4uYCk7XG5cbiAgICByZXR1cm4gaHlwb3RoZXNpcy5kaXNjaGFyZ2UoY29udGV4dCwgKGh5cG90aGVzaXNEaXNjaGFyZ2VzLCBjb250ZXh0KSA9PiB7XG4gICAgICBpZiAoaHlwb3RoZXNpc0Rpc2NoYXJnZXMpIHtcbiAgICAgICAgY29udGV4dC50cmFjZShgLi4uZGlzY2hhcmdlcyB0aGUgJyR7Y2xhaW1TdHJpbmd9JyBjbGFpbSdzICcke2h5cG90aGVzaXNTdHJpbmd9JyBoeXBvdGhlc2lzLmApO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gY29udGludWF0aW9uKGh5cG90aGVzaXNEaXNjaGFyZ2VzLCBjb250ZXh0KTtcbiAgICB9KTtcbiAgfVxuXG4gIGRpc2NoYXJnZUh5cG90aGVzZXMoY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IGh5cG90aGVzZXMgPSB0aGlzLmdldEh5cG90aGVzZXMoKSxcbiAgICAgICAgIGh5cG90aGVzZXNMZW5ndGggPSBoeXBvdGhlc2VzLmxlbmd0aDtcblxuICAgIGlmIChoeXBvdGhlc2VzTGVuZ3RoID09PSAwKSB7XG4gICAgICBjb25zdCBoeXBvdGhlc2VzRGlzY2hhcmdlZCA9IHRydWU7XG5cbiAgICAgIHJldHVybiBjb250aW51YXRpb24oaHlwb3RoZXNlc0Rpc2NoYXJnZWQsIGNvbnRleHQpO1xuICAgIH1cblxuICAgIGNvbnN0IGNsYWltU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBEaXNjaGFyZ2luZyB0aGUgJyR7Y2xhaW1TdHJpbmd9JyBjbGFpbSdzIGh5cG90aGVzZXMuLi5gKTtcblxuICAgIGNvbnN0IGRpc2NoYXJnZUh5cG90aGVzaXMgPSB0aGlzLmRpc2NoYXJnZUh5cG90aGVzaXMuYmluZCh0aGlzKTtcblxuICAgIHJldHVybiBldmVyeShoeXBvdGhlc2VzLCBkaXNjaGFyZ2VIeXBvdGhlc2lzLCBjb250ZXh0LCAoaHlwb3RoZXNlc0Rpc2NoYXJnZWQpID0+IHtcbiAgICAgIGlmIChoeXBvdGhlc2VzRGlzY2hhcmdlZCkge1xuICAgICAgICBjb250ZXh0LnRyYWNlKGAuLi5kaXNjaGFyZ2VkIHRoZSAnJHtjbGFpbVN0cmluZ30nIGNsYWltJ3MgaHlwb3RoZXNlcy5gKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbihoeXBvdGhlc2VzRGlzY2hhcmdlZCwgY29udGV4dCk7XG4gICAgfSk7XG4gIH1cblxuICB1bmlmeVN0ZXBXaXRoRGVkdWN0aW9uKHN0ZXAsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBydWxlU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKSxcbiAgICAgICAgICBzdGVwU3RyaW5nID0gc3RlcC5nZXRTdHJpbmcoKSxcbiAgICAgICAgICBkZWR1Y3Rpb25TdHJpbmcgPSB0aGlzLmRlZHVjdGlvbi5nZXRTdHJpbmcoKTtcblxuICAgIGNvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHtzdGVwU3RyaW5nfScgc3RlcCB3aXRoIHRoZSAnJHtydWxlU3RyaW5nfScgcnVsZSdzICcke2RlZHVjdGlvblN0cmluZ30nIGRlZHVjdGlvbi4uLmApO1xuXG4gICAgcmV0dXJuIHRoaXMuZGVkdWN0aW9uLnVuaWZ5U3RlcChzdGVwLCBjb250ZXh0LCAoc3RlcFVuaWZpZXMpID0+IHtcbiAgICAgIGxldCBzdGVwVW5pZmllc1dpdGhEZWR1Y3Rpb24gPSBmYWxzZTtcblxuICAgICAgaWYgKHN0ZXBVbmlmaWVzKSB7XG4gICAgICAgIHN0ZXBVbmlmaWVzV2l0aERlZHVjdGlvbiA9IHRydWU7XG4gICAgICB9XG5cbiAgICAgIGlmIChzdGVwVW5pZmllc1dpdGhEZWR1Y3Rpb24pIHtcbiAgICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udW5pZmllZCB0aGUgJyR7c3RlcFN0cmluZ30nIHN0ZXAgd2l0aCB0aGUgJyR7cnVsZVN0cmluZ30nIHJ1bGUncyAnJHtkZWR1Y3Rpb25TdHJpbmd9JyBkZWR1Y3Rpb24uYCk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBjb250aW51YXRpb24oc3RlcFVuaWZpZXNXaXRoRGVkdWN0aW9uLCBjb250ZXh0KTtcbiAgICB9KTtcbiAgfVxuXG4gIHVuaWZ5U3RlcEFuZEZhY3RPclN1YnByb29mcyhzdGVwLCBmYWN0b3JTdWJwcm9vZnMsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICByZXR1cm4gcmVjb25jaWxlKChjb250ZXh0KSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy51bmlmeVN0ZXBXaXRoRGVkdWN0aW9uKHN0ZXAsIGNvbnRleHQsIChzdGF0ZW1lbnRVbmlmaWVzV2l0aERlZHVjdGlvbikgPT4ge1xuICAgICAgICBpZiAoIXN0YXRlbWVudFVuaWZpZXNXaXRoRGVkdWN0aW9uKSB7XG4gICAgICAgICAgY29uc3Qgc3RlcEFuZEZhY3RPclN1YnByb29mc1VuaWZ5ID0gZmFsc2U7XG5cbiAgICAgICAgICByZXR1cm4gY29udGludWF0aW9uKHN0ZXBBbmRGYWN0T3JTdWJwcm9vZnNVbmlmeSwgY29udGV4dCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5kaXNjaGFyZ2VIeXBvdGhlc2VzKGNvbnRleHQsIChoeXBvdGhlc2VzRGlzY2hhcmdlKSA9PiB7XG4gICAgICAgICAgaWYgKCFoeXBvdGhlc2VzRGlzY2hhcmdlKSB7XG4gICAgICAgICAgICBjb25zdCBzdGVwQW5kRmFjdE9yU3VicHJvb2ZzVW5pZnkgPSBmYWxzZTtcblxuICAgICAgICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbihzdGVwQW5kRmFjdE9yU3VicHJvb2ZzVW5pZnkpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiB0aGlzLnVuaWZ5RmFjdE9yU3VicHJvb2ZzV2l0aFN1cHBvc2l0aW9ucyhmYWN0b3JTdWJwcm9vZnMsIGNvbnRleHQsIChmYWN0b3JTdWJwcm9vZnNVbmlmaWVzV2l0aFN1cHBvc2l0aW9ucykgPT4ge1xuICAgICAgICAgICAgbGV0IHN0ZXBBbmRGYWN0T3JTdWJwcm9vZnNVbmlmeSA9IGZhbHNlO1xuXG4gICAgICAgICAgICBpZiAoZmFjdG9yU3VicHJvb2ZzVW5pZmllc1dpdGhTdXBwb3NpdGlvbnMpIHtcbiAgICAgICAgICAgICAgY29uc3QgaW5mZXJyZWRTdWJzdGl0dXRpb25zU29sdmVkID0gY29udGV4dC5hcmVJbmZlcnJlZFN1YnN0aXR1dGlvbnNTb2x2ZWQoKTtcblxuICAgICAgICAgICAgICBpZiAoaW5mZXJyZWRTdWJzdGl0dXRpb25zU29sdmVkKSB7XG4gICAgICAgICAgICAgICAgc3RlcEFuZEZhY3RPclN1YnByb29mc1VuaWZ5ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gY29udGludWF0aW9uKHN0ZXBBbmRGYWN0T3JTdWJwcm9vZnNVbmlmeSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSwgY29udGV4dCk7XG4gIH1cblxuICB1bmlmeUZhY3RPclN1YnByb29mc1dpdGhTdXBwb3NpdGlvbihmYWN0b3JTdWJwcm9vZnMsIHN1cHBvc2l0aW9uLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgcmV0dXJuIGV4dHJhY3QoZmFjdG9yU3VicHJvb2ZzLFxuICAgICAgKGZhY3RPclN1YnByb29mLCBmb3J3YXJkLCBiYWNrKSA9PiB7XG4gICAgICAgIHJldHVybiBzdXBwb3NpdGlvbi51bmlmeUZhY3RPclN1YnByb29mKGZhY3RPclN1YnByb29mLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKTtcbiAgICAgIH0sIChmYWN0T3JTdWJwcm9vZiwgYmFjaykgPT4ge1xuICAgICAgICByZXR1cm4gY29udGV4dC5zb2x2ZUluZmVycmVkU3Vic3RpdHV0aW9ucyhmb3J3YXJkLCBiYWNrKTtcbiAgICAgIH0sIChleGNlcHRpb24pID0+IHtcbiAgICAgICAgaWYgKGV4Y2VwdGlvbikge1xuICAgICAgICAgIHJldHVybiBiYWNrKGV4Y2VwdGlvbik7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gc3VwcG9zaXRpb24udW5pZnlJbmRlcGVuZGVudGx5KGNvbnRleHQsIGZvcndhcmQsIGJhY2spO1xuICAgICAgfVxuICAgICk7XG4gIH1cblxuICB1bmlmeUZhY3RPclN1YnByb29mc1dpdGhTdXBwb3NpdGlvbnMoZmFjdG9yU3VicHJvb2ZzLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgZmFjdG9yU3VicHJvb2ZzID0gcmV2ZXJzZShmYWN0b3JTdWJwcm9vZnMpOyAvLy9cblxuICAgIHJldHVybiBiYWNrd2FyZHNFdmVyeSh0aGlzLnN1cHBvc2l0aW9ucywgKHN1cHBvc2l0aW9uLCBjb250aW51YXRpb24pID0+IHtcbiAgICAgIHJldHVybiB0aGlzLnVuaWZ5RmFjdE9yU3VicHJvb2ZzV2l0aFN1cHBvc2l0aW9uKGZhY3RvclN1YnByb29mcywgc3VwcG9zaXRpb24sIGNvbnRleHQsIGNvbnRpbnVhdGlvbik7XG4gICAgfSwgY29udGludWF0aW9uKTtcbiAgfVxuXG4gIHRvSlNPTigpIHtcbiAgICBjb25zdCBsYWJlbHNKU09OID0gbGFiZWxzVG9MYWJlbHNKU09OKHRoaXMubGFiZWxzKSxcbiAgICAgICAgICBkZWR1Y3Rpb25KU09OID0gZGVkdWN0aW9uVG9EZWR1Y3Rpb25KU09OKHRoaXMuZGVkdWN0aW9uKSxcbiAgICAgICAgICBzdXBwb3NpdGlvbnNKU09OID0gc3VwcG9zaXRpb25zVG9TdXBwb3NpdGlvbnNKU09OKHRoaXMuc3VwcG9zaXRpb25zKSxcbiAgICAgICAgICBzaWduYXR1cmVKU09OID0gc2lnbmF0dXJlVG9TaWduYXR1cmVKU09OKHRoaXMuc2lnbmF0dXJlKSxcbiAgICAgICAgICBoeXBvdGhlc2VzSlNPTiA9IGh5cG90aGVzZXNUb0h5cG90aGVzZXNKU09OKHRoaXMuaHlwb3RoZXNlcyksXG4gICAgICAgICAgc3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTtcblxuICAgIGxldCBicmVha1BvaW50O1xuXG4gICAgYnJlYWtQb2ludCA9IHRoaXMuZ2V0QnJlYWtQb2ludCgpO1xuXG4gICAgY29uc3QgYnJlYWtQb2ludEpTT04gPSBicmVha1BvaW50VG9CcmVha1BvaW50SlNPTihicmVha1BvaW50KTtcblxuICAgIGJyZWFrUG9pbnQgPSBicmVha1BvaW50SlNPTjsgIC8vL1xuXG4gICAgY29uc3QgbGFiZWxzID0gbGFiZWxzSlNPTiwgIC8vL1xuICAgICAgICAgIGRlZHVjdGlvbiA9IGRlZHVjdGlvbkpTT04sICAvLy9cbiAgICAgICAgICBzdXBwb3NpdGlvbnMgPSBzdXBwb3NpdGlvbnNKU09OLCAgLy8vXG4gICAgICAgICAgc2lnbmF0dXJlID0gc2lnbmF0dXJlSlNPTiwgIC8vL1xuICAgICAgICAgIGh5cG90aGVzZXMgPSBoeXBvdGhlc2VzSlNPTiwgIC8vL1xuICAgICAgICAgIGpzb24gPSB7XG4gICAgICAgICAgICBzdHJpbmcsXG4gICAgICAgICAgICBicmVha1BvaW50LFxuICAgICAgICAgICAgbGFiZWxzLFxuICAgICAgICAgICAgZGVkdWN0aW9uLFxuICAgICAgICAgICAgc3VwcG9zaXRpb25zLFxuICAgICAgICAgICAgc2lnbmF0dXJlLFxuICAgICAgICAgICAgaHlwb3RoZXNlc1xuICAgICAgICAgIH07XG5cbiAgICByZXR1cm4ganNvbjtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tSlNPTihDbGFzcywganNvbiwgY29udGV4dCkge1xuICAgIGNvbnN0IGxhYmVscyA9IGxhYmVsc0Zyb21KU09OKGpzb24sIGNvbnRleHQpLFxuICAgICAgICAgIGRlZHVjdGlvbiA9IGRlZHVjdGlvbkZyb21KU09OKGpzb24sIGNvbnRleHQpLFxuICAgICAgICAgIHN1cHBvc2l0aW9ucyA9IHN1cHBvc2l0aW9uc0Zyb21KU09OKGpzb24sIGNvbnRleHQpLFxuICAgICAgICAgIHNpZ25hdHVyZSA9IHNpZ25hdHVyZUZyb21KU09OKGpzb24sIGNvbnRleHQpLFxuICAgICAgICAgIGh5cG90aGVzZXMgPSBoeXBvdGhlc2VzRnJvbUpTT04oanNvbiwgY29udGV4dCksXG4gICAgICAgICAgY2xhaW1TdHJpbmcgPSBjbGFpbVN0cmluZ0Zyb21MYWJlbHNTaWduYXR1cmVTdXBwb3NpdGlvbnNBbmREZWR1Y3Rpb24obGFiZWxzLCBzaWduYXR1cmUsIHN1cHBvc2l0aW9ucywgZGVkdWN0aW9uKSxcbiAgICAgICAgICBzdHJpbmcgPSBjbGFpbVN0cmluZywgLy8vXG4gICAgICAgICAgbm9kZSA9IG51bGwsXG4gICAgICAgICAgYnJlYWtQb2ludCA9IGJyZWFrUG9pbnRGcm9tSlNPTihqc29uKSxcbiAgICAgICAgICBwcm9vZiA9IG51bGwsXG4gICAgICAgICAgY2xhaW0gPSBuZXcgQ2xhc3MoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCBsYWJlbHMsIHN1cHBvc2l0aW9ucywgZGVkdWN0aW9uLCBwcm9vZiwgc2lnbmF0dXJlLCBoeXBvdGhlc2VzKTtcblxuICAgIHJldHVybiBjbGFpbTtcbiAgfVxufVxuIl0sIm5hbWVzIjpbIkNsYWltIiwicmV2ZXJzZSIsImFycmF5VXRpbGl0aWVzIiwiYnJlYWtQb2ludEZyb21KU09OIiwiYnJlYWtQb2ludFRvQnJlYWtQb2ludEpTT04iLCJicmVha1BvaW50VXRpbGl0aWVzIiwiYWxsIiwiZXZlcnkiLCJleHRyYWN0IiwiZm9yd2FyZHNFdmVyeSIsImJhY2t3YXJkc0V2ZXJ5IiwiY29udGludWF0aW9uVXRpbGl0aWVzIiwiRWxlbWVudCIsImNvbnRleHQiLCJzdHJpbmciLCJub2RlIiwiYnJlYWtQb2ludCIsImxhYmVscyIsInN1cHBvc2l0aW9ucyIsImRlZHVjdGlvbiIsInByb29mIiwic2lnbmF0dXJlIiwiaHlwb3RoZXNlcyIsImdldExhYmVscyIsImdldFN1cHBvc2l0aW9ucyIsImdldERlZHVjdGlvbiIsImdldFByb29mIiwiZ2V0U2lnbmF0dXJlIiwiZ2V0SHlwb3RoZXNlcyIsInNldEh5cG90aGVzZXMiLCJnZXRTdXBwb3NpdGlvbiIsImluZGV4Iiwic3VwcG9zaXRpb24iLCJpc1NhdGlzZmlhYmxlIiwic2F0aXNmaWFibGUiLCJpc0h5cG90aGV0aWNhbCIsImh5cG90aGVzZXNMZW5ndGgiLCJsZW5ndGgiLCJoeXBvdGhldGljYWwiLCJtYXRjaE1ldGF2YXJpYWJsZU5vZGUiLCJtZXRhdmFyaWFibGVOb2RlIiwibWV0YXZhcmlhYmxlTm9kZU1hdGNoZXMiLCJzb21lIiwibGFiZWwiLCJ2ZXJpZnlFeCIsImZvcndhcmQiLCJiYWNrIiwiZW5jbG9zZSIsInZlcmlmeVByb29mIiwiYmluZCIsInZlcmlmeUxhYmVscyIsInZlcmlmeURlZHVjdGlvbiIsInZlcmlmeVN1cHBvc2l0aW9ucyIsImNsYWltU3RyaW5nIiwiZ2V0U3RyaW5nIiwidHJhY2UiLCJ2ZXJpZnlMYWJlbCIsImRlYnVnIiwibGFiZWxTdHJpbmciLCJ2ZXJpZnkiLCJzdGF0ZW1lbnQiLCJnZXRTdGF0ZW1lbnQiLCJwcm9vZlZlcmlmaWVzIiwiY29udGludWF0aW9uIiwiZGVkdWN0aW9uU3RyaW5nIiwidmVyaWZ5U3VwcG9zaXRpb24iLCJzdXBwb3NpdGlvblN0cmluZyIsImZhY3RPclN1YnByb29mIiwiYXNzaWduQXNzaWdubWVudHMiLCJhZGRGYWN0T3JTdWJwcm9vZiIsInN1cHBvc2l0aW9uc0xlbmd0aCIsImRpc2NoYXJnZUh5cG90aGVzaXMiLCJoeXBvdGhlc2lzIiwiaHlwb3RoZXNpc1N0cmluZyIsImRpc2NoYXJnZSIsImh5cG90aGVzaXNEaXNjaGFyZ2VzIiwiZGlzY2hhcmdlSHlwb3RoZXNlcyIsImh5cG90aGVzZXNEaXNjaGFyZ2VkIiwidW5pZnlTdGVwV2l0aERlZHVjdGlvbiIsInN0ZXAiLCJydWxlU3RyaW5nIiwic3RlcFN0cmluZyIsInVuaWZ5U3RlcCIsInN0ZXBVbmlmaWVzIiwic3RlcFVuaWZpZXNXaXRoRGVkdWN0aW9uIiwidW5pZnlTdGVwQW5kRmFjdE9yU3VicHJvb2ZzIiwiZmFjdG9yU3VicHJvb2ZzIiwicmVjb25jaWxlIiwic3RhdGVtZW50VW5pZmllc1dpdGhEZWR1Y3Rpb24iLCJzdGVwQW5kRmFjdE9yU3VicHJvb2ZzVW5pZnkiLCJoeXBvdGhlc2VzRGlzY2hhcmdlIiwidW5pZnlGYWN0T3JTdWJwcm9vZnNXaXRoU3VwcG9zaXRpb25zIiwiZmFjdG9yU3VicHJvb2ZzVW5pZmllc1dpdGhTdXBwb3NpdGlvbnMiLCJpbmZlcnJlZFN1YnN0aXR1dGlvbnNTb2x2ZWQiLCJhcmVJbmZlcnJlZFN1YnN0aXR1dGlvbnNTb2x2ZWQiLCJ1bmlmeUZhY3RPclN1YnByb29mc1dpdGhTdXBwb3NpdGlvbiIsInVuaWZ5RmFjdE9yU3VicHJvb2YiLCJzb2x2ZUluZmVycmVkU3Vic3RpdHV0aW9ucyIsImV4Y2VwdGlvbiIsInVuaWZ5SW5kZXBlbmRlbnRseSIsInRvSlNPTiIsImxhYmVsc0pTT04iLCJsYWJlbHNUb0xhYmVsc0pTT04iLCJkZWR1Y3Rpb25KU09OIiwiZGVkdWN0aW9uVG9EZWR1Y3Rpb25KU09OIiwic3VwcG9zaXRpb25zSlNPTiIsInN1cHBvc2l0aW9uc1RvU3VwcG9zaXRpb25zSlNPTiIsInNpZ25hdHVyZUpTT04iLCJzaWduYXR1cmVUb1NpZ25hdHVyZUpTT04iLCJoeXBvdGhlc2VzSlNPTiIsImh5cG90aGVzZXNUb0h5cG90aGVzZXNKU09OIiwiZ2V0QnJlYWtQb2ludCIsImJyZWFrUG9pbnRKU09OIiwianNvbiIsImZyb21KU09OIiwiQ2xhc3MiLCJsYWJlbHNGcm9tSlNPTiIsImRlZHVjdGlvbkZyb21KU09OIiwic3VwcG9zaXRpb25zRnJvbUpTT04iLCJzaWduYXR1cmVGcm9tSlNPTiIsImh5cG90aGVzZXNGcm9tSlNPTiIsImNsYWltU3RyaW5nRnJvbUxhYmVsc1NpZ25hdHVyZVN1cHBvc2l0aW9uc0FuZERlZHVjdGlvbiIsImNsYWltIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFzQkE7OztlQUFxQkE7OzsyQkFwQlU7Z0NBQ3FDO3lCQUVqQzt3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
|
|
257
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbGVtZW50L2NsYWltLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBhcnJheVV0aWxpdGllcyB9IGZyb20gXCJuZWNlc3NhcnlcIjtcbmltcG9ydCB7IEVsZW1lbnQsIGJyZWFrUG9pbnRVdGlsaXRpZXMsIGNvbnRpbnVhdGlvblV0aWxpdGllcyB9IGZyb20gXCJvY2NhbS1sYW5ndWFnZXNcIjtcblxuaW1wb3J0IHsgZW5jbG9zZSwgcmVjb25jaWxlIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9jb250ZXh0XCI7XG5pbXBvcnQgeyBjbGFpbVN0cmluZ0Zyb21MYWJlbHNTaWduYXR1cmVTdXBwb3NpdGlvbnNBbmREZWR1Y3Rpb24gfSBmcm9tIFwiLi4vdXRpbGl0aWVzL3N0cmluZ1wiO1xuaW1wb3J0IHsgbGFiZWxzRnJvbUpTT04sXG4gICAgICAgICBkZWR1Y3Rpb25Gcm9tSlNPTixcbiAgICAgICAgIHNpZ25hdHVyZUZyb21KU09OLFxuICAgICAgICAgbGFiZWxzVG9MYWJlbHNKU09OLFxuICAgICAgICAgaHlwb3RoZXNlc0Zyb21KU09OLFxuICAgICAgICAgc3VwcG9zaXRpb25zRnJvbUpTT04sXG4gICAgICAgICBkZWR1Y3Rpb25Ub0RlZHVjdGlvbkpTT04sXG4gICAgICAgICBzaWduYXR1cmVUb1NpZ25hdHVyZUpTT04sXG4gICAgICAgICBoeXBvdGhlc2VzVG9IeXBvdGhlc2VzSlNPTixcbiAgICAgICAgIHN1cHBvc2l0aW9uc1RvU3VwcG9zaXRpb25zSlNPTiB9IGZyb20gXCIuLi91dGlsaXRpZXMvanNvblwiO1xuXG5jb25zdCB7IHJldmVyc2UgfSA9IGFycmF5VXRpbGl0aWVzLFxuICAgICAgeyBicmVha1BvaW50RnJvbUpTT04sIGJyZWFrUG9pbnRUb0JyZWFrUG9pbnRKU09OIH0gPSBicmVha1BvaW50VXRpbGl0aWVzLFxuICAgICAgeyBhbGwsIGV2ZXJ5LCBleHRyYWN0LCBmb3J3YXJkc0V2ZXJ5LCBiYWNrd2FyZHNFdmVyeSB9ID0gY29udGludWF0aW9uVXRpbGl0aWVzO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBDbGFpbSBleHRlbmRzIEVsZW1lbnQge1xuICBjb25zdHJ1Y3Rvcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIGxhYmVscywgc3VwcG9zaXRpb25zLCBkZWR1Y3Rpb24sIHByb29mLCBzaWduYXR1cmUsIGh5cG90aGVzZXMpIHtcbiAgICBzdXBlcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQpO1xuXG4gICAgdGhpcy5sYWJlbHMgPSBsYWJlbHM7XG4gICAgdGhpcy5zdXBwb3NpdGlvbnMgPSBzdXBwb3NpdGlvbnM7XG4gICAgdGhpcy5kZWR1Y3Rpb24gPSBkZWR1Y3Rpb247XG4gICAgdGhpcy5wcm9vZiA9IHByb29mO1xuICAgIHRoaXMuc2lnbmF0dXJlID0gc2lnbmF0dXJlO1xuICAgIHRoaXMuaHlwb3RoZXNlcyA9IGh5cG90aGVzZXM7XG4gIH1cblxuICBnZXRMYWJlbHMoKSB7XG4gICAgcmV0dXJuIHRoaXMubGFiZWxzO1xuICB9XG5cbiAgZ2V0U3VwcG9zaXRpb25zKCkge1xuICAgIHJldHVybiB0aGlzLnN1cHBvc2l0aW9ucztcbiAgfVxuXG4gIGdldERlZHVjdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5kZWR1Y3Rpb247XG4gIH1cblxuICBnZXRQcm9vZigpIHtcbiAgICByZXR1cm4gdGhpcy5wcm9vZjtcbiAgfVxuXG4gIGdldFNpZ25hdHVyZSgpIHtcbiAgICByZXR1cm4gdGhpcy5zaWduYXR1cmU7XG4gIH1cblxuICBnZXRIeXBvdGhlc2VzKCkge1xuICAgIHJldHVybiB0aGlzLmh5cG90aGVzZXM7XG4gIH1cblxuICBzZXRIeXBvdGhlc2VzKGh5cG90aGVzZXMpIHtcbiAgICB0aGlzLmh5cG90aGVzZXMgPSBoeXBvdGhlc2VzO1xuICB9XG5cbiAgZ2V0U3VwcG9zaXRpb24oaW5kZXgpIHtcbiAgICBjb25zdCBzdXBwb3NpdGlvbiA9IHRoaXMuc3VwcG9zaXRpb25zW2luZGV4XSB8fCBudWxsO1xuXG4gICAgcmV0dXJuIHN1cHBvc2l0aW9uO1xuICB9XG5cbiAgaXNTYXRpc2ZpYWJsZSgpIHtcbiAgICBjb25zdCBzYXRpc2ZpYWJsZSA9IGZhbHNlO1xuXG4gICAgcmV0dXJuIHNhdGlzZmlhYmxlO1xuICB9XG5cbiAgaXNIeXBvdGhldGljYWwoKSB7XG4gICAgY29uc3QgaHlwb3RoZXNlc0xlbmd0aCA9IHRoaXMuaHlwb3RoZXNlcy5sZW5ndGgsXG4gICAgICAgICAgaHlwb3RoZXRpY2FsID0gKGh5cG90aGVzZXNMZW5ndGggPiAwKTtcblxuICAgIHJldHVybiBoeXBvdGhldGljYWw7XG4gIH1cblxuICBtYXRjaE1ldGF2YXJpYWJsZU5vZGUobWV0YXZhcmlhYmxlTm9kZSkge1xuICAgIGNvbnN0IG1ldGF2YXJpYWJsZU5vZGVNYXRjaGVzID0gdGhpcy5sYWJlbHMuc29tZSgobGFiZWwpID0+IHtcbiAgICAgIGNvbnN0IG1ldGF2YXJpYWJsZU5vZGVNYXRjaGVzID0gbGFiZWwubWF0Y2hNZXRhdmFyaWFibGVOb2RlKG1ldGF2YXJpYWJsZU5vZGUpO1xuXG4gICAgICBpZiAobWV0YXZhcmlhYmxlTm9kZU1hdGNoZXMpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gbWV0YXZhcmlhYmxlTm9kZU1hdGNoZXM7XG4gIH1cblxuICB2ZXJpZnlFeChjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgcmV0dXJuIGVuY2xvc2UoKGNvbnRleHQpID0+IHtcbiAgICAgIGNvbnN0IHZlcmlmeVByb29mID0gdGhpcy52ZXJpZnlQcm9vZi5iaW5kKHRoaXMpLFxuICAgICAgICAgICAgdmVyaWZ5TGFiZWxzID0gdGhpcy52ZXJpZnlMYWJlbHMuYmluZCh0aGlzKSxcbiAgICAgICAgICAgIHZlcmlmeURlZHVjdGlvbiA9IHRoaXMudmVyaWZ5RGVkdWN0aW9uLmJpbmQodGhpcyksXG4gICAgICAgICAgICB2ZXJpZnlTdXBwb3NpdGlvbnMgPSB0aGlzLnZlcmlmeVN1cHBvc2l0aW9ucy5iaW5kKHRoaXMpO1xuXG4gICAgICByZXR1cm4gYWxsKFtcbiAgICAgICAgdmVyaWZ5TGFiZWxzLFxuICAgICAgICB2ZXJpZnlTdXBwb3NpdGlvbnMsXG4gICAgICAgIHZlcmlmeURlZHVjdGlvbixcbiAgICAgICAgdmVyaWZ5UHJvb2ZcbiAgICAgIF0sIGNvbnRleHQsIGZvcndhcmQsIGJhY2spO1xuICAgIH0sIGNvbnRleHQpO1xuICB9XG5cbiAgdmVyaWZ5TGFiZWxzKGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBjbGFpbVN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7Y2xhaW1TdHJpbmd9JyBjbGFpbSdzIGxhYmVscy4uLmApO1xuXG4gICAgY29uc3QgdmVyaWZ5TGFiZWwgPSB0aGlzLnZlcmlmeUxhYmVsLmJpbmQodGhpcyk7XG5cbiAgICByZXR1cm4gZXZlcnkodGhpcy5sYWJlbHMsIHZlcmlmeUxhYmVsLCBjb250ZXh0LCAoY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke2NsYWltU3RyaW5nfScgY2xhaW0ncyBsYWJlbHMuYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKGNvbnRleHQsIGJhY2spO1xuICAgIH0sIGJhY2spO1xuICB9XG5cbiAgdmVyaWZ5TGFiZWwobGFiZWwsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBsYWJlbFN0cmluZyA9IGxhYmVsLmdldFN0cmluZygpLFxuICAgICAgICAgIGNsYWltU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke2NsYWltU3RyaW5nfScgY2xhaW0ncyAnJHtsYWJlbFN0cmluZ30nIGxhYmVsLi4uYCk7XG5cbiAgICByZXR1cm4gbGFiZWwudmVyaWZ5KChiYWNrKSA9PiB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7Y2xhaW1TdHJpbmd9JyBjbGFpbSdzICcke2xhYmVsU3RyaW5nfScgbGFiZWwuYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKGNvbnRleHQsIGJhY2spO1xuICAgIH0sIGJhY2spO1xuICB9XG5cbiAgdmVyaWZ5UHJvb2YoY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGlmICh0aGlzLnByb29mID09PSBudWxsKSB7XG4gICAgICByZXR1cm4gZm9yd2FyZChjb250ZXh0LCBiYWNrKTtcbiAgICB9XG5cbiAgICBjb25zdCBjbGFpbVN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7Y2xhaW1TdHJpbmd9JyBjbGFpbSdzIHByb29mLi4uYCk7XG5cbiAgICBjb25zdCBzdGF0ZW1lbnQgPSB0aGlzLmRlZHVjdGlvbi5nZXRTdGF0ZW1lbnQoKTtcblxuICAgIHJldHVybiB0aGlzLnByb29mLnZlcmlmeShzdGF0ZW1lbnQsIGNvbnRleHQsIChwcm9vZlZlcmlmaWVzKSA9PiB7XG4gICAgICBpZiAocHJvb2ZWZXJpZmllcykge1xuICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7Y2xhaW1TdHJpbmd9JyBjbGFpbSdzIHByb29mLmApO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gY29udGludWF0aW9uKHByb29mVmVyaWZpZXMsIGNvbnRleHQpO1xuICAgIH0pO1xuICB9XG5cbiAgdmVyaWZ5RGVkdWN0aW9uKGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBjbGFpbVN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCksIC8vL1xuICAgICAgICAgIGRlZHVjdGlvblN0cmluZyA9IHRoaXMuZGVkdWN0aW9uLmdldFN0cmluZygpO1xuXG4gICAgY29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHtjbGFpbVN0cmluZ30nIGNsYWltJ3MgJyR7ZGVkdWN0aW9uU3RyaW5nfScgZGVkdWN0aW9uLi4uYCk7XG5cbiAgICByZXR1cm4gdGhpcy5kZWR1Y3Rpb24udmVyaWZ5KGNvbnRleHQsIChjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7Y2xhaW1TdHJpbmd9JyBjbGFpbSdzICcke2RlZHVjdGlvblN0cmluZ30nIGRlZHVjdGlvbi5gKTtcblxuICAgICAgcmV0dXJuIGZvcndhcmQoY29udGV4dCwgYmFjayk7XG4gICAgfSwgYmFjayk7XG4gIH1cblxuICB2ZXJpZnlTdXBwb3NpdGlvbihzdXBwb3NpdGlvbiwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IGNsYWltU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKSwgLy8vXG4gICAgICAgICAgc3VwcG9zaXRpb25TdHJpbmcgPSBzdXBwb3NpdGlvbi5nZXRTdHJpbmcoKTtcblxuICAgIGNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7Y2xhaW1TdHJpbmd9JyBjbGFpbSdzICcke3N1cHBvc2l0aW9uU3RyaW5nfScgc3VwcG9zaXRpb24uLi5gKTtcblxuICAgIHJldHVybiBzdXBwb3NpdGlvbi52ZXJpZnkoY29udGV4dCwgKGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIGNvbnN0IGZhY3RPclN1YnByb29mID0gc3VwcG9zaXRpb247ICAvLy8vXG5cbiAgICAgIGNvbnRleHQuYXNzaWduQXNzaWdubWVudHMoKTtcblxuICAgICAgY29udGV4dC5hZGRGYWN0T3JTdWJwcm9vZihmYWN0T3JTdWJwcm9vZik7XG5cbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHtjbGFpbVN0cmluZ30nIGNsYWltJ3MgJyR7c3VwcG9zaXRpb25TdHJpbmd9JyBzdXBwb3NpdGlvbi5gKTtcblxuICAgICAgcmV0dXJuIGZvcndhcmQoY29udGV4dCwgYmFjayk7XG4gICAgfSwgYmFjayk7XG4gIH1cblxuICB2ZXJpZnlTdXBwb3NpdGlvbnMoY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IHN1cHBvc2l0aW9uc0xlbmd0aCA9IHRoaXMuc3VwcG9zaXRpb25zLmxlbmd0aDtcblxuICAgIGlmIChzdXBwb3NpdGlvbnNMZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiBmb3J3YXJkKGNvbnRleHQsIGJhY2spO1xuICAgIH1cblxuICAgIGNvbnN0IGNsYWltU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHtjbGFpbVN0cmluZ30nIGNsYWltJ3Mgc3VwcG9zaXRpb25zLi4uYCk7XG5cbiAgICByZXR1cm4gZm9yd2FyZHNFdmVyeSh0aGlzLnN1cHBvc2l0aW9ucywgKHN1cHBvc2l0aW9uLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy52ZXJpZnlTdXBwb3NpdGlvbihzdXBwb3NpdGlvbiwgY29udGV4dCwgZm9yd2FyZCwgYmFjayk7XG4gICAgfSwgY29udGV4dCwgKGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHtjbGFpbVN0cmluZ30nIGNsYWltJ3Mgc3VwcG9zaXRpb25zLmApO1xuXG4gICAgICByZXR1cm4gZm9yd2FyZChjb250ZXh0LCBiYWNrKTtcbiAgICB9LCBiYWNrKTtcbiAgfVxuXG4gIGRpc2NoYXJnZUh5cG90aGVzaXMoaHlwb3RoZXNpcywgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IGNsYWltU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKSwgLy8vXG4gICAgICAgICAgaHlwb3RoZXNpc1N0cmluZyA9IGh5cG90aGVzaXMuZ2V0U3RyaW5nKCk7XG5cbiAgICBjb250ZXh0LnRyYWNlKGBEaXNjaGFyZ2luZyB0aGUgJyR7Y2xhaW1TdHJpbmd9JyBjbGFpbSdzICcke2h5cG90aGVzaXNTdHJpbmd9JyBoeXBvdGhlc2lzLi4uYCk7XG5cbiAgICByZXR1cm4gaHlwb3RoZXNpcy5kaXNjaGFyZ2UoY29udGV4dCwgKGh5cG90aGVzaXNEaXNjaGFyZ2VzLCBjb250ZXh0KSA9PiB7XG4gICAgICBpZiAoaHlwb3RoZXNpc0Rpc2NoYXJnZXMpIHtcbiAgICAgICAgY29udGV4dC50cmFjZShgLi4uZGlzY2hhcmdlcyB0aGUgJyR7Y2xhaW1TdHJpbmd9JyBjbGFpbSdzICcke2h5cG90aGVzaXNTdHJpbmd9JyBoeXBvdGhlc2lzLmApO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gY29udGludWF0aW9uKGh5cG90aGVzaXNEaXNjaGFyZ2VzLCBjb250ZXh0KTtcbiAgICB9KTtcbiAgfVxuXG4gIGRpc2NoYXJnZUh5cG90aGVzZXMoY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IGh5cG90aGVzZXMgPSB0aGlzLmdldEh5cG90aGVzZXMoKSxcbiAgICAgICAgIGh5cG90aGVzZXNMZW5ndGggPSBoeXBvdGhlc2VzLmxlbmd0aDtcblxuICAgIGlmIChoeXBvdGhlc2VzTGVuZ3RoID09PSAwKSB7XG4gICAgICBjb25zdCBoeXBvdGhlc2VzRGlzY2hhcmdlZCA9IHRydWU7XG5cbiAgICAgIHJldHVybiBjb250aW51YXRpb24oaHlwb3RoZXNlc0Rpc2NoYXJnZWQsIGNvbnRleHQpO1xuICAgIH1cblxuICAgIGNvbnN0IGNsYWltU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBEaXNjaGFyZ2luZyB0aGUgJyR7Y2xhaW1TdHJpbmd9JyBjbGFpbSdzIGh5cG90aGVzZXMuLi5gKTtcblxuICAgIGNvbnN0IGRpc2NoYXJnZUh5cG90aGVzaXMgPSB0aGlzLmRpc2NoYXJnZUh5cG90aGVzaXMuYmluZCh0aGlzKTtcblxuICAgIHJldHVybiBldmVyeShoeXBvdGhlc2VzLCBkaXNjaGFyZ2VIeXBvdGhlc2lzLCBjb250ZXh0LCAoaHlwb3RoZXNlc0Rpc2NoYXJnZWQpID0+IHtcbiAgICAgIGlmIChoeXBvdGhlc2VzRGlzY2hhcmdlZCkge1xuICAgICAgICBjb250ZXh0LnRyYWNlKGAuLi5kaXNjaGFyZ2VkIHRoZSAnJHtjbGFpbVN0cmluZ30nIGNsYWltJ3MgaHlwb3RoZXNlcy5gKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbihoeXBvdGhlc2VzRGlzY2hhcmdlZCwgY29udGV4dCk7XG4gICAgfSk7XG4gIH1cblxuICB1bmlmeVN0ZXBXaXRoRGVkdWN0aW9uKHN0ZXAsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBydWxlU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKSxcbiAgICAgICAgICBzdGVwU3RyaW5nID0gc3RlcC5nZXRTdHJpbmcoKSxcbiAgICAgICAgICBkZWR1Y3Rpb25TdHJpbmcgPSB0aGlzLmRlZHVjdGlvbi5nZXRTdHJpbmcoKTtcblxuICAgIGNvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHtzdGVwU3RyaW5nfScgc3RlcCB3aXRoIHRoZSAnJHtydWxlU3RyaW5nfScgcnVsZSdzICcke2RlZHVjdGlvblN0cmluZ30nIGRlZHVjdGlvbi4uLmApO1xuXG4gICAgcmV0dXJuIHRoaXMuZGVkdWN0aW9uLnVuaWZ5U3RlcChzdGVwLCBjb250ZXh0LCAoc3RlcFVuaWZpZXMpID0+IHtcbiAgICAgIGxldCBzdGVwVW5pZmllc1dpdGhEZWR1Y3Rpb24gPSBmYWxzZTtcblxuICAgICAgaWYgKHN0ZXBVbmlmaWVzKSB7XG4gICAgICAgIHN0ZXBVbmlmaWVzV2l0aERlZHVjdGlvbiA9IHRydWU7XG4gICAgICB9XG5cbiAgICAgIGlmIChzdGVwVW5pZmllc1dpdGhEZWR1Y3Rpb24pIHtcbiAgICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udW5pZmllZCB0aGUgJyR7c3RlcFN0cmluZ30nIHN0ZXAgd2l0aCB0aGUgJyR7cnVsZVN0cmluZ30nIHJ1bGUncyAnJHtkZWR1Y3Rpb25TdHJpbmd9JyBkZWR1Y3Rpb24uYCk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBjb250aW51YXRpb24oc3RlcFVuaWZpZXNXaXRoRGVkdWN0aW9uLCBjb250ZXh0KTtcbiAgICB9KTtcbiAgfVxuXG4gIHVuaWZ5U3RlcEFuZEZhY3RPclN1YnByb29mcyhzdGVwLCBmYWN0b3JTdWJwcm9vZnMsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICByZXR1cm4gcmVjb25jaWxlKChjb250ZXh0KSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy51bmlmeVN0ZXBXaXRoRGVkdWN0aW9uKHN0ZXAsIGNvbnRleHQsIChzdGF0ZW1lbnRVbmlmaWVzV2l0aERlZHVjdGlvbikgPT4ge1xuICAgICAgICBpZiAoIXN0YXRlbWVudFVuaWZpZXNXaXRoRGVkdWN0aW9uKSB7XG4gICAgICAgICAgY29uc3Qgc3RlcEFuZEZhY3RPclN1YnByb29mc1VuaWZ5ID0gZmFsc2U7XG5cbiAgICAgICAgICByZXR1cm4gY29udGludWF0aW9uKHN0ZXBBbmRGYWN0T3JTdWJwcm9vZnNVbmlmeSwgY29udGV4dCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5kaXNjaGFyZ2VIeXBvdGhlc2VzKGNvbnRleHQsIChoeXBvdGhlc2VzRGlzY2hhcmdlKSA9PiB7XG4gICAgICAgICAgaWYgKCFoeXBvdGhlc2VzRGlzY2hhcmdlKSB7XG4gICAgICAgICAgICBjb25zdCBzdGVwQW5kRmFjdE9yU3VicHJvb2ZzVW5pZnkgPSBmYWxzZTtcblxuICAgICAgICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbihzdGVwQW5kRmFjdE9yU3VicHJvb2ZzVW5pZnkpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiB0aGlzLnVuaWZ5RmFjdE9yU3VicHJvb2ZzV2l0aFN1cHBvc2l0aW9ucyhmYWN0b3JTdWJwcm9vZnMsIGNvbnRleHQsIChmYWN0b3JTdWJwcm9vZnNVbmlmaWVzV2l0aFN1cHBvc2l0aW9ucykgPT4ge1xuICAgICAgICAgICAgbGV0IHN0ZXBBbmRGYWN0T3JTdWJwcm9vZnNVbmlmeSA9IGZhbHNlO1xuXG4gICAgICAgICAgICBpZiAoZmFjdG9yU3VicHJvb2ZzVW5pZmllc1dpdGhTdXBwb3NpdGlvbnMpIHtcbiAgICAgICAgICAgICAgY29uc3QgaW5mZXJyZWRTdWJzdGl0dXRpb25zU29sdmVkID0gY29udGV4dC5hcmVJbmZlcnJlZFN1YnN0aXR1dGlvbnNTb2x2ZWQoKTtcblxuICAgICAgICAgICAgICBpZiAoaW5mZXJyZWRTdWJzdGl0dXRpb25zU29sdmVkKSB7XG4gICAgICAgICAgICAgICAgc3RlcEFuZEZhY3RPclN1YnByb29mc1VuaWZ5ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gY29udGludWF0aW9uKHN0ZXBBbmRGYWN0T3JTdWJwcm9vZnNVbmlmeSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSwgY29udGV4dCk7XG4gIH1cblxuICB1bmlmeUZhY3RPclN1YnByb29mc1dpdGhTdXBwb3NpdGlvbihmYWN0T3JTdWJwcm9vZnMsIHN1cHBvc2l0aW9uLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgcmV0dXJuIGV4dHJhY3QoZmFjdE9yU3VicHJvb2ZzLFxuICAgICAgKGZhY3RPclN1YnByb29mLCBmb3J3YXJkLCBiYWNrKSA9PiB7XG4gICAgICAgIHJldHVybiBzdXBwb3NpdGlvbi51bmlmeUZhY3RPclN1YnByb29mKGZhY3RPclN1YnByb29mLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKTtcbiAgICAgIH0sIChmYWN0T3JTdWJwcm9vZnMsIGZhY3RPclN1YnByb29mLCBjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICAgIHJldHVybiBjb250ZXh0LnNvbHZlSW5mZXJyZWRTdWJzdGl0dXRpb25zKChiYWNrKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGZvcndhcmQoZmFjdE9yU3VicHJvb2ZzLCBjb250ZXh0LCBiYWNrKTtcbiAgICAgICAgfSwgYmFjayk7XG4gICAgICB9LCAoZXhjZXB0aW9uKSA9PiB7XG4gICAgICAgIGlmKGV4Y2VwdGlvbikge1xuICAgICAgICAgIHJldHVybiBiYWNrKGV4Y2VwdGlvbik7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gc3VwcG9zaXRpb24udW5pZnlJbmRlcGVuZGVudGx5KGNvbnRleHQsIChjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGZvcndhcmQoZmFjdE9yU3VicHJvb2ZzLCBjb250ZXh0LCBiYWNrKTtcbiAgICAgICAgfSwgYmFjayk7XG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIHVuaWZ5RmFjdE9yU3VicHJvb2ZzV2l0aFN1cHBvc2l0aW9ucyhmYWN0T3JTdWJwcm9vZnMsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBmYWN0T3JTdWJwcm9vZnMgPSByZXZlcnNlKGZhY3RPclN1YnByb29mcyk7IC8vL1xuXG4gICAgcmV0dXJuIGJhY2t3YXJkc0V2ZXJ5KHRoaXMuc3VwcG9zaXRpb25zLCAoc3VwcG9zaXRpb24sIGZhY3RPclN1YnByb29mcywgY29udGV4dCwgZm9yd2FyZCwgYmFjaykgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMudW5pZnlGYWN0T3JTdWJwcm9vZnNXaXRoU3VwcG9zaXRpb24oZmFjdE9yU3VicHJvb2ZzLCBzdXBwb3NpdGlvbiwgY29udGV4dCwgZm9yd2FyZCwgYmFjayk7XG4gICAgfSwgZmFjdE9yU3VicHJvb2ZzLCBjb250ZXh0LCAoZmFjdE9yU3VicHJvb2ZzLCBjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICByZXR1cm4gZm9yd2FyZChjb250ZXh0LCBiYWNrKTtcbiAgICB9LCBiYWNrKTtcbiAgfVxuXG4gIHRvSlNPTigpIHtcbiAgICBjb25zdCBsYWJlbHNKU09OID0gbGFiZWxzVG9MYWJlbHNKU09OKHRoaXMubGFiZWxzKSxcbiAgICAgICAgICBkZWR1Y3Rpb25KU09OID0gZGVkdWN0aW9uVG9EZWR1Y3Rpb25KU09OKHRoaXMuZGVkdWN0aW9uKSxcbiAgICAgICAgICBzdXBwb3NpdGlvbnNKU09OID0gc3VwcG9zaXRpb25zVG9TdXBwb3NpdGlvbnNKU09OKHRoaXMuc3VwcG9zaXRpb25zKSxcbiAgICAgICAgICBzaWduYXR1cmVKU09OID0gc2lnbmF0dXJlVG9TaWduYXR1cmVKU09OKHRoaXMuc2lnbmF0dXJlKSxcbiAgICAgICAgICBoeXBvdGhlc2VzSlNPTiA9IGh5cG90aGVzZXNUb0h5cG90aGVzZXNKU09OKHRoaXMuaHlwb3RoZXNlcyksXG4gICAgICAgICAgc3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTtcblxuICAgIGxldCBicmVha1BvaW50O1xuXG4gICAgYnJlYWtQb2ludCA9IHRoaXMuZ2V0QnJlYWtQb2ludCgpO1xuXG4gICAgY29uc3QgYnJlYWtQb2ludEpTT04gPSBicmVha1BvaW50VG9CcmVha1BvaW50SlNPTihicmVha1BvaW50KTtcblxuICAgIGJyZWFrUG9pbnQgPSBicmVha1BvaW50SlNPTjsgIC8vL1xuXG4gICAgY29uc3QgbGFiZWxzID0gbGFiZWxzSlNPTiwgIC8vL1xuICAgICAgICAgIGRlZHVjdGlvbiA9IGRlZHVjdGlvbkpTT04sICAvLy9cbiAgICAgICAgICBzdXBwb3NpdGlvbnMgPSBzdXBwb3NpdGlvbnNKU09OLCAgLy8vXG4gICAgICAgICAgc2lnbmF0dXJlID0gc2lnbmF0dXJlSlNPTiwgIC8vL1xuICAgICAgICAgIGh5cG90aGVzZXMgPSBoeXBvdGhlc2VzSlNPTiwgIC8vL1xuICAgICAgICAgIGpzb24gPSB7XG4gICAgICAgICAgICBzdHJpbmcsXG4gICAgICAgICAgICBicmVha1BvaW50LFxuICAgICAgICAgICAgbGFiZWxzLFxuICAgICAgICAgICAgZGVkdWN0aW9uLFxuICAgICAgICAgICAgc3VwcG9zaXRpb25zLFxuICAgICAgICAgICAgc2lnbmF0dXJlLFxuICAgICAgICAgICAgaHlwb3RoZXNlc1xuICAgICAgICAgIH07XG5cbiAgICByZXR1cm4ganNvbjtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tSlNPTihDbGFzcywganNvbiwgY29udGV4dCkge1xuICAgIGNvbnN0IGxhYmVscyA9IGxhYmVsc0Zyb21KU09OKGpzb24sIGNvbnRleHQpLFxuICAgICAgICAgIGRlZHVjdGlvbiA9IGRlZHVjdGlvbkZyb21KU09OKGpzb24sIGNvbnRleHQpLFxuICAgICAgICAgIHN1cHBvc2l0aW9ucyA9IHN1cHBvc2l0aW9uc0Zyb21KU09OKGpzb24sIGNvbnRleHQpLFxuICAgICAgICAgIHNpZ25hdHVyZSA9IHNpZ25hdHVyZUZyb21KU09OKGpzb24sIGNvbnRleHQpLFxuICAgICAgICAgIGh5cG90aGVzZXMgPSBoeXBvdGhlc2VzRnJvbUpTT04oanNvbiwgY29udGV4dCksXG4gICAgICAgICAgY2xhaW1TdHJpbmcgPSBjbGFpbVN0cmluZ0Zyb21MYWJlbHNTaWduYXR1cmVTdXBwb3NpdGlvbnNBbmREZWR1Y3Rpb24obGFiZWxzLCBzaWduYXR1cmUsIHN1cHBvc2l0aW9ucywgZGVkdWN0aW9uKSxcbiAgICAgICAgICBzdHJpbmcgPSBjbGFpbVN0cmluZywgLy8vXG4gICAgICAgICAgbm9kZSA9IG51bGwsXG4gICAgICAgICAgYnJlYWtQb2ludCA9IGJyZWFrUG9pbnRGcm9tSlNPTihqc29uKSxcbiAgICAgICAgICBwcm9vZiA9IG51bGwsXG4gICAgICAgICAgY2xhaW0gPSBuZXcgQ2xhc3MoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCBsYWJlbHMsIHN1cHBvc2l0aW9ucywgZGVkdWN0aW9uLCBwcm9vZiwgc2lnbmF0dXJlLCBoeXBvdGhlc2VzKTtcblxuICAgIHJldHVybiBjbGFpbTtcbiAgfVxufVxuIl0sIm5hbWVzIjpbIkNsYWltIiwicmV2ZXJzZSIsImFycmF5VXRpbGl0aWVzIiwiYnJlYWtQb2ludEZyb21KU09OIiwiYnJlYWtQb2ludFRvQnJlYWtQb2ludEpTT04iLCJicmVha1BvaW50VXRpbGl0aWVzIiwiYWxsIiwiZXZlcnkiLCJleHRyYWN0IiwiZm9yd2FyZHNFdmVyeSIsImJhY2t3YXJkc0V2ZXJ5IiwiY29udGludWF0aW9uVXRpbGl0aWVzIiwiRWxlbWVudCIsImNvbnRleHQiLCJzdHJpbmciLCJub2RlIiwiYnJlYWtQb2ludCIsImxhYmVscyIsInN1cHBvc2l0aW9ucyIsImRlZHVjdGlvbiIsInByb29mIiwic2lnbmF0dXJlIiwiaHlwb3RoZXNlcyIsImdldExhYmVscyIsImdldFN1cHBvc2l0aW9ucyIsImdldERlZHVjdGlvbiIsImdldFByb29mIiwiZ2V0U2lnbmF0dXJlIiwiZ2V0SHlwb3RoZXNlcyIsInNldEh5cG90aGVzZXMiLCJnZXRTdXBwb3NpdGlvbiIsImluZGV4Iiwic3VwcG9zaXRpb24iLCJpc1NhdGlzZmlhYmxlIiwic2F0aXNmaWFibGUiLCJpc0h5cG90aGV0aWNhbCIsImh5cG90aGVzZXNMZW5ndGgiLCJsZW5ndGgiLCJoeXBvdGhldGljYWwiLCJtYXRjaE1ldGF2YXJpYWJsZU5vZGUiLCJtZXRhdmFyaWFibGVOb2RlIiwibWV0YXZhcmlhYmxlTm9kZU1hdGNoZXMiLCJzb21lIiwibGFiZWwiLCJ2ZXJpZnlFeCIsImZvcndhcmQiLCJiYWNrIiwiZW5jbG9zZSIsInZlcmlmeVByb29mIiwiYmluZCIsInZlcmlmeUxhYmVscyIsInZlcmlmeURlZHVjdGlvbiIsInZlcmlmeVN1cHBvc2l0aW9ucyIsImNsYWltU3RyaW5nIiwiZ2V0U3RyaW5nIiwidHJhY2UiLCJ2ZXJpZnlMYWJlbCIsImRlYnVnIiwibGFiZWxTdHJpbmciLCJ2ZXJpZnkiLCJzdGF0ZW1lbnQiLCJnZXRTdGF0ZW1lbnQiLCJwcm9vZlZlcmlmaWVzIiwiY29udGludWF0aW9uIiwiZGVkdWN0aW9uU3RyaW5nIiwidmVyaWZ5U3VwcG9zaXRpb24iLCJzdXBwb3NpdGlvblN0cmluZyIsImZhY3RPclN1YnByb29mIiwiYXNzaWduQXNzaWdubWVudHMiLCJhZGRGYWN0T3JTdWJwcm9vZiIsInN1cHBvc2l0aW9uc0xlbmd0aCIsImRpc2NoYXJnZUh5cG90aGVzaXMiLCJoeXBvdGhlc2lzIiwiaHlwb3RoZXNpc1N0cmluZyIsImRpc2NoYXJnZSIsImh5cG90aGVzaXNEaXNjaGFyZ2VzIiwiZGlzY2hhcmdlSHlwb3RoZXNlcyIsImh5cG90aGVzZXNEaXNjaGFyZ2VkIiwidW5pZnlTdGVwV2l0aERlZHVjdGlvbiIsInN0ZXAiLCJydWxlU3RyaW5nIiwic3RlcFN0cmluZyIsInVuaWZ5U3RlcCIsInN0ZXBVbmlmaWVzIiwic3RlcFVuaWZpZXNXaXRoRGVkdWN0aW9uIiwidW5pZnlTdGVwQW5kRmFjdE9yU3VicHJvb2ZzIiwiZmFjdG9yU3VicHJvb2ZzIiwicmVjb25jaWxlIiwic3RhdGVtZW50VW5pZmllc1dpdGhEZWR1Y3Rpb24iLCJzdGVwQW5kRmFjdE9yU3VicHJvb2ZzVW5pZnkiLCJoeXBvdGhlc2VzRGlzY2hhcmdlIiwidW5pZnlGYWN0T3JTdWJwcm9vZnNXaXRoU3VwcG9zaXRpb25zIiwiZmFjdG9yU3VicHJvb2ZzVW5pZmllc1dpdGhTdXBwb3NpdGlvbnMiLCJpbmZlcnJlZFN1YnN0aXR1dGlvbnNTb2x2ZWQiLCJhcmVJbmZlcnJlZFN1YnN0aXR1dGlvbnNTb2x2ZWQiLCJ1bmlmeUZhY3RPclN1YnByb29mc1dpdGhTdXBwb3NpdGlvbiIsImZhY3RPclN1YnByb29mcyIsInVuaWZ5RmFjdE9yU3VicHJvb2YiLCJzb2x2ZUluZmVycmVkU3Vic3RpdHV0aW9ucyIsImV4Y2VwdGlvbiIsInVuaWZ5SW5kZXBlbmRlbnRseSIsInRvSlNPTiIsImxhYmVsc0pTT04iLCJsYWJlbHNUb0xhYmVsc0pTT04iLCJkZWR1Y3Rpb25KU09OIiwiZGVkdWN0aW9uVG9EZWR1Y3Rpb25KU09OIiwic3VwcG9zaXRpb25zSlNPTiIsInN1cHBvc2l0aW9uc1RvU3VwcG9zaXRpb25zSlNPTiIsInNpZ25hdHVyZUpTT04iLCJzaWduYXR1cmVUb1NpZ25hdHVyZUpTT04iLCJoeXBvdGhlc2VzSlNPTiIsImh5cG90aGVzZXNUb0h5cG90aGVzZXNKU09OIiwiZ2V0QnJlYWtQb2ludCIsImJyZWFrUG9pbnRKU09OIiwianNvbiIsImZyb21KU09OIiwiQ2xhc3MiLCJsYWJlbHNGcm9tSlNPTiIsImRlZHVjdGlvbkZyb21KU09OIiwic3VwcG9zaXRpb25zRnJvbUpTT04iLCJzaWduYXR1cmVGcm9tSlNPTiIsImh5cG90aGVzZXNGcm9tSlNPTiIsImNsYWltU3RyaW5nRnJvbUxhYmVsc1NpZ25hdHVyZVN1cHBvc2l0aW9uc0FuZERlZHVjdGlvbiIsImNsYWltIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFzQkE7OztlQUFxQkE7OzsyQkFwQlU7Z0NBQ3FDO3lCQUVqQzt3QkFDb0M7c0JBVXhCO0FBRS9DLE1BQU0sRUFBRUMsT0FBTyxFQUFFLEdBQUdDLHlCQUFjLEVBQzVCLEVBQUVDLGtCQUFrQixFQUFFQywwQkFBMEIsRUFBRSxHQUFHQyxtQ0FBbUIsRUFDeEUsRUFBRUMsR0FBRyxFQUFFQyxLQUFLLEVBQUVDLE9BQU8sRUFBRUMsYUFBYSxFQUFFQyxjQUFjLEVBQUUsR0FBR0MscUNBQXFCO0FBRXJFLE1BQU1YLGNBQWNZLHVCQUFPO0lBQ3hDLFlBQVlDLE9BQU8sRUFBRUMsTUFBTSxFQUFFQyxJQUFJLEVBQUVDLFVBQVUsRUFBRUMsTUFBTSxFQUFFQyxZQUFZLEVBQUVDLFNBQVMsRUFBRUMsS0FBSyxFQUFFQyxTQUFTLEVBQUVDLFVBQVUsQ0FBRTtRQUM1RyxLQUFLLENBQUNULFNBQVNDLFFBQVFDLE1BQU1DO1FBRTdCLElBQUksQ0FBQ0MsTUFBTSxHQUFHQTtRQUNkLElBQUksQ0FBQ0MsWUFBWSxHQUFHQTtRQUNwQixJQUFJLENBQUNDLFNBQVMsR0FBR0E7UUFDakIsSUFBSSxDQUFDQyxLQUFLLEdBQUdBO1FBQ2IsSUFBSSxDQUFDQyxTQUFTLEdBQUdBO1FBQ2pCLElBQUksQ0FBQ0MsVUFBVSxHQUFHQTtJQUNwQjtJQUVBQyxZQUFZO1FBQ1YsT0FBTyxJQUFJLENBQUNOLE1BQU07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
|
|
@@ -34,6 +34,7 @@ const _default = (0, _elements.define)(class Combinator extends _occamlanguages.
|
|
|
34
34
|
return malformed;
|
|
35
35
|
}
|
|
36
36
|
verify(context, forward, back) {
|
|
37
|
+
forward = cut(forward, back); ///
|
|
37
38
|
const includeType = false, cbmbinatorString = this.getString(includeType); ///
|
|
38
39
|
context.trace(`Verifying the '${cbmbinatorString}' cbmbinator...`);
|
|
39
40
|
const malformed = this.isMalformed();
|
|
@@ -43,10 +44,10 @@ const _default = (0, _elements.define)(class Combinator extends _occamlanguages.
|
|
|
43
44
|
}
|
|
44
45
|
return (0, _state.declare)((state)=>{
|
|
45
46
|
return (0, _state.desist)((state)=>{
|
|
46
|
-
return this.validate(state, context,
|
|
47
|
+
return this.validate(state, context, (cbmbinator, _, back)=>{
|
|
47
48
|
context.debug(`...verified the '${cbmbinatorString}' cbmbinator.`);
|
|
48
49
|
return forward(context, back);
|
|
49
|
-
}, back)
|
|
50
|
+
}, back);
|
|
50
51
|
}, state);
|
|
51
52
|
});
|
|
52
53
|
}
|
|
@@ -114,4 +115,4 @@ const _default = (0, _elements.define)(class Combinator extends _occamlanguages.
|
|
|
114
115
|
}
|
|
115
116
|
});
|
|
116
117
|
|
|
117
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbGVtZW50L2NvbWJpbmF0b3IuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IEVsZW1lbnQsIGJyZWFrUG9pbnRVdGlsaXRpZXMsIGNvbnRpbnVhdGlvblV0aWxpdGllcyB9IGZyb20gXCJvY2NhbS1sYW5ndWFnZXNcIjtcblxuaW1wb3J0IHsgZGVmaW5lIH0gZnJvbSBcIi4uL2VsZW1lbnRzXCI7XG5pbXBvcnQgeyBkZXNpc3QsIGRlY2xhcmUgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL3N0YXRlXCI7XG5pbXBvcnQgeyBpbnN0YW50aWF0ZUNvbWJpbmF0b3IgfSBmcm9tIFwiLi4vcHJvY2Vzcy9pbnN0YW50aWF0ZVwiO1xuaW1wb3J0IHsgc3RhdGVtZW50RnJvbUNvbWJpbmF0b3JOb2RlIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9lbGVtZW50XCI7XG5pbXBvcnQgeyB1bmlmeVN0YXRlbWVudFdpdGhDb21iaW5hdG9yIH0gZnJvbSBcIi4uL3Byb2Nlc3MvdW5pZnlcIjtcbmltcG9ydCB7IHZhbGlkYXRlU3RhdGVtZW50QXNDb21iaW5hdG9yIH0gZnJvbSBcIi4uL3Byb2Nlc3MvdmFsaWRhdGVcIjtcbmltcG9ydCB7IGF0dGVtcHQsIHNlcmlhbGlzZSwgdW5zZXJpYWxpc2UsIGluc3RhbnRpYXRlIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9jb250ZXh0XCI7XG5cbmNvbnN0IHsgY3V0LCBleGlzdHMgfSA9IGNvbnRpbnVhdGlvblV0aWxpdGllcyxcbiAgICAgIHsgYnJlYWtQb2ludEZyb21KU09OLCBicmVha1BvaW50VG9CcmVha1BvaW50SlNPTiB9ID0gYnJlYWtQb2ludFV0aWxpdGllcztcblxuZXhwb3J0IGRlZmF1bHQgZGVmaW5lKGNsYXNzIENvbWJpbmF0b3IgZXh0ZW5kcyBFbGVtZW50IHtcbiAgY29uc3RydWN0b3IoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCBzdGF0ZW1lbnQpIHtcbiAgICBzdXBlcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQpO1xuXG4gICAgdGhpcy5zdGF0ZW1lbnQgPSBzdGF0ZW1lbnQ7XG4gIH1cblxuICBnZXRTdGF0ZW1lbnQoKSB7XG4gICAgcmV0dXJuIHRoaXMuc3RhdGVtZW50O1xuICB9XG5cbiAgZ2V0Q29tYmluYXRvcnlOb2RlKCkge1xuICAgIGNvbnN0IG5vZGUgPSB0aGlzLmdldE5vZGUoKSxcbiAgICAgICAgICBjb21iaW5hdG9yTm9kZSA9IG5vZGU7ICAvLy9cblxuICAgIHJldHVybiBjb21iaW5hdG9yTm9kZTtcbiAgfVxuXG4gIGlzTWFsZm9ybWVkKCkge1xuICAgIGNvbnN0IGNvbWJpbmF0b3J5Tm9kZSA9IHRoaXMuZ2V0Q29tYmluYXRvcnlOb2RlKCksXG4gICAgICAgICAgbWFsZm9ybWVkID0gY29tYmluYXRvcnlOb2RlLmlzTWFsZm9ybWVkKCk7XG5cbiAgICByZXR1cm4gbWFsZm9ybWVkO1xuICB9XG5cbiAgdmVyaWZ5KGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBpbmNsdWRlVHlwZSA9IGZhbHNlLFxuICAgICAgICAgIGNibWJpbmF0b3JTdHJpbmcgPSB0aGlzLmdldFN0cmluZyhpbmNsdWRlVHlwZSk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7Y2JtYmluYXRvclN0cmluZ30nIGNibWJpbmF0b3IuLi5gKTtcblxuICAgIGNvbnN0IG1hbGZvcm1lZCA9IHRoaXMuaXNNYWxmb3JtZWQoKTtcblxuICAgIGlmIChtYWxmb3JtZWQpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYFVuYWJsZSB0byB2ZXJpZnkgdGhlICcke2NibWJpbmF0b3JTdHJpbmd9JyBjYm1iaW5hdG9yIGJlY2F1c2UgaXQgaXMgbWFsZm9ybWVkLmApO1xuXG4gICAgICByZXR1cm4gYmFjaygpO1xuICAgIH1cblxuICAgIHJldHVybiBkZWNsYXJlKChzdGF0ZSkgPT4ge1xuICAgICAgcmV0dXJuIGRlc2lzdCgoc3RhdGUpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmFsaWRhdGUoc3RhdGUsIGNvbnRleHQsIGN1dCgoY2JtYmluYXRvciwgXyAsIGJhY2spID0+IHtcbiAgICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7Y2JtYmluYXRvclN0cmluZ30nIGNibWJpbmF0b3IuYCk7XG5cbiAgICAgICAgICByZXR1cm4gZm9yd2FyZChjb250ZXh0LCBiYWNrKTtcbiAgICAgICAgfSwgYmFjayksIGJhY2spO1xuICAgICAgfSwgc3RhdGUpO1xuICAgIH0pO1xuICB9XG5cbiAgdmFsaWRhdGUoc3RhdGUsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBsZXQgY29tYmluYXRvcjtcblxuICAgIGNvbnN0IGluY2x1ZGVUeXBlID0gZmFsc2UsXG4gICAgICAgICAgc3BlY2lmaWNDb250ZXh0ID0gY29udGV4dCwgIC8vL1xuICAgICAgICAgIGNvbWJpbmF0b3JTdHJpbmcgPSB0aGlzLmdldFN0cmluZyhpbmNsdWRlVHlwZSk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke2NvbWJpbmF0b3JTdHJpbmd9JyBjb21iaW5hdG9yLi4uYCk7XG5cbiAgICBjb21iaW5hdG9yID0gdGhpcztcblxuICAgIHJldHVybiBhdHRlbXB0KChjb250ZXh0KSA9PiB7XG4gICAgICBjb25zdCB2YWxpZGF0ZVN0YXRlbWVudEFzQ29tYmluYXRvciA9IHRoaXMudmFsaWRhdGVTdGF0ZW1lbnRBc0NvbWJpbmF0b3IuYmluZCh0aGlzKTtcblxuICAgICAgcmV0dXJuIGV4aXN0cyhbXG4gICAgICAgIHZhbGlkYXRlU3RhdGVtZW50QXNDb21iaW5hdG9yXG4gICAgICBdLCBzdGF0ZSwgY29udGV4dCwgKHN0YXRlLCBjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICAgIHRoaXMuY29tbWl0KGNvbnRleHQpO1xuXG4gICAgICAgIGNvbnRleHQgPSBzcGVjaWZpY0NvbnRleHQ7ICAvLy9cblxuICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke2NvbWJpbmF0b3JTdHJpbmd9JyBjb21iaW5hdG9yLmApO1xuXG4gICAgICAgIHJldHVybiBmb3J3YXJkKGNvbWJpbmF0b3IsIGNvbnRleHQsIGJhY2spO1xuICAgICAgfSwgYmFjayk7XG4gICAgfSwgY29udGV4dCk7XG4gIH1cblxuICB2YWxpZGF0ZVN0YXRlbWVudEFzQ29tYmluYXRvcihzdGF0ZSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IGluY2x1ZGVUeXBlID0gZmFsc2UsXG4gICAgICAgICAgY29tYmluYXRvclN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKGluY2x1ZGVUeXBlKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7Y29tYmluYXRvclN0cmluZ30nIGNvbWJpbmF0b3IncyBzdGF0ZW1lbnQuLi5gKTtcblxuICAgIHJldHVybiB2YWxpZGF0ZVN0YXRlbWVudEFzQ29tYmluYXRvcih0aGlzLnN0YXRlbWVudCwgY29udGV4dCwgKGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7Y29tYmluYXRvclN0cmluZ30nIGNvbWJpbmF0b3IncyBzdGF0ZW1lbnQuYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKHN0YXRlLCBjb250ZXh0LCBiYWNrKTtcbiAgICB9LCBiYWNrKTtcbiAgfVxuXG4gIHVuaWZ5U3RhdGVtZW50KHN0YXRlbWVudCwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IHN0YXRlbWVudFN0cmluZyA9IHN0YXRlbWVudC5nZXRTdHJpbmcoKSxcbiAgICAgICAgICBjb21iaW5hdG9yU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVW5pZnlpbmcgdGhlICcke3N0YXRlbWVudFN0cmluZ30nIHN0YXRlbWVudCB3aXRoIHRoZSAnJHtjb21iaW5hdG9yU3RyaW5nfScgY29tYmluYXRvci4uLmApO1xuXG4gICAgY29uc3QgY29tYmluYXRvciA9IHRoaXMsIC8vL1xuICAgICAgICAgIGdlbmVyYWxDb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksIC8vL1xuICAgICAgICAgIHNwZWNpZmljQ29udGV4dCA9IGNvbnRleHQ7IC8vL1xuXG4gICAgcmV0dXJuIHVuaWZ5U3RhdGVtZW50V2l0aENvbWJpbmF0b3Ioc3RhdGVtZW50LCBjb21iaW5hdG9yLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCAoIF8gLCBzcGVjaWZpY0NvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIGNvbnN0IGNvbnRleHQgPSBzcGVjaWZpY0NvbnRleHQ7IC8vL1xuXG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi51bmlmaWVkIHRoZSAnJHtzdGF0ZW1lbnRTdHJpbmd9JyBzdGF0ZW1lbnQgd2l0aCB0aGUgJyR7Y29tYmluYXRvclN0cmluZ30nIGNvbWJpbmF0b3IuYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKHN0YXRlbWVudCwgY29udGV4dCwgYmFjayk7XG4gICAgfSwgYmFjayk7XG4gIH1cblxuICB0b0pTT04oKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpO1xuXG4gICAgcmV0dXJuIHNlcmlhbGlzZSgoY29udGV4dCkgPT4ge1xuICAgICAgY29uc3Qgc3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTtcblxuICAgICAgbGV0IGJyZWFrUG9pbnQ7XG5cbiAgICAgIGJyZWFrUG9pbnQgPSB0aGlzLmdldEJyZWFrUG9pbnQoKTtcblxuICAgICAgY29uc3QgYnJlYWtQb2ludEpTT04gPSBicmVha1BvaW50VG9CcmVha1BvaW50SlNPTihicmVha1BvaW50KTtcblxuICAgICAgYnJlYWtQb2ludCA9IGJyZWFrUG9pbnRKU09OOyAgLy8vXG5cbiAgICAgIGNvbnN0IGpzb24gPSB7XG4gICAgICAgIGNvbnRleHQsXG4gICAgICAgIHN0cmluZyxcbiAgICAgICAgYnJlYWtQb2ludFxuICAgICAgfTtcblxuICAgICAgcmV0dXJuIGpzb247XG4gICAgfSwgY29udGV4dCk7XG4gIH1cblxuICBzdGF0aWMgbmFtZSA9IFwiQ29tYmluYXRvclwiO1xuXG4gIHN0YXRpYyBmcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gICAgbGV0IGNvbWJpbmF0b3I7XG5cbiAgICBpbnN0YW50aWF0ZSgoY29udGV4dCkgPT4ge1xuICAgICAgdW5zZXJpYWxpc2UoKGpzb24sIGNvbnRleHQpID0+IHtcbiAgICAgICAgY29uc3QgeyBzdHJpbmcgfSA9IGpzb24sXG4gICAgICAgICAgICAgIGNvbWJpbmF0b3JOb2RlID0gaW5zdGFudGlhdGVDb21iaW5hdG9yKHN0cmluZywgY29udGV4dCksXG4gICAgICAgICAgICAgIG5vZGUgPSBjb21iaW5hdG9yTm9kZSwgIC8vL1xuICAgICAgICAgICAgICBicmVha1BvaW50ID0gYnJlYWtQb2ludEZyb21KU09OKGpzb24pLFxuICAgICAgICAgICAgICBzdGF0ZW1lbnQgPSBzdGF0ZW1lbnRGcm9tQ29tYmluYXRvck5vZGUoY29tYmluYXRvck5vZGUsIGNvbnRleHQpO1xuXG4gICAgICAgIGNvbWJpbmF0b3IgPSBuZXcgQ29tYmluYXRvcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIHN0YXRlbWVudCk7XG4gICAgICB9LCBqc29uLCBjb250ZXh0KTtcbiAgICB9LCBjb250ZXh0KTtcblxuICAgIHJldHVybiBjb21iaW5hdG9yO1xuICB9XG59KTtcbiJdLCJuYW1lcyI6WyJjdXQiLCJleGlzdHMiLCJjb250aW51YXRpb25VdGlsaXRpZXMiLCJicmVha1BvaW50RnJvbUpTT04iLCJicmVha1BvaW50VG9CcmVha1BvaW50SlNPTiIsImJyZWFrUG9pbnRVdGlsaXRpZXMiLCJkZWZpbmUiLCJDb21iaW5hdG9yIiwiRWxlbWVudCIsImNvbnRleHQiLCJzdHJpbmciLCJub2RlIiwiYnJlYWtQb2ludCIsInN0YXRlbWVudCIsImdldFN0YXRlbWVudCIsImdldENvbWJpbmF0b3J5Tm9kZSIsImdldE5vZGUiLCJjb21iaW5hdG9yTm9kZSIsImlzTWFsZm9ybWVkIiwiY29tYmluYXRvcnlOb2RlIiwibWFsZm9ybWVkIiwidmVyaWZ5IiwiZm9yd2FyZCIsImJhY2siLCJpbmNsdWRlVHlwZSIsImNibWJpbmF0b3JTdHJpbmciLCJnZXRTdHJpbmciLCJ0cmFjZSIsImRlYnVnIiwiZGVjbGFyZSIsInN0YXRlIiwiZGVzaXN0IiwidmFsaWRhdGUiLCJjYm1iaW5hdG9yIiwiXyIsImNvbWJpbmF0b3IiLCJzcGVjaWZpY0NvbnRleHQiLCJjb21iaW5hdG9yU3RyaW5nIiwiYXR0ZW1wdCIsInZhbGlkYXRlU3RhdGVtZW50QXNDb21iaW5hdG9yIiwiYmluZCIsImNvbW1pdCIsInVuaWZ5U3RhdGVtZW50Iiwic3RhdGVtZW50U3RyaW5nIiwiZ2VuZXJhbENvbnRleHQiLCJnZXRDb250ZXh0IiwidW5pZnlTdGF0ZW1lbnRXaXRoQ29tYmluYXRvciIsInRvSlNPTiIsInNlcmlhbGlzZSIsImdldEJyZWFrUG9pbnQiLCJicmVha1BvaW50SlNPTiIsImpzb24iLCJuYW1lIiwiZnJvbUpTT04iLCJpbnN0YW50aWF0ZSIsInVuc2VyaWFsaXNlIiwiaW5zdGFudGlhdGVDb21iaW5hdG9yIiwic3RhdGVtZW50RnJvbUNvbWJpbmF0b3JOb2RlIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFlQTs7O2VBQUE7OztnQ0Fib0U7MEJBRTdDO3VCQUNTOzZCQUNNO3lCQUNNO3VCQUNDOzBCQUNDO3lCQUNlO0FBRTdELE1BQU0sRUFBRUEsR0FBRyxFQUFFQyxNQUFNLEVBQUUsR0FBR0MscUNBQXFCLEVBQ3ZDLEVBQUVDLGtCQUFrQixFQUFFQywwQkFBMEIsRUFBRSxHQUFHQyxtQ0FBbUI7TUFFOUUsV0FBZUMsSUFBQUEsZ0JBQU0sRUFBQyxNQUFNQyxtQkFBbUJDLHVCQUFPO0lBQ3BELFlBQVlDLE9B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
|
|
118
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbGVtZW50L2NvbWJpbmF0b3IuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IEVsZW1lbnQsIGJyZWFrUG9pbnRVdGlsaXRpZXMsIGNvbnRpbnVhdGlvblV0aWxpdGllcyB9IGZyb20gXCJvY2NhbS1sYW5ndWFnZXNcIjtcblxuaW1wb3J0IHsgZGVmaW5lIH0gZnJvbSBcIi4uL2VsZW1lbnRzXCI7XG5pbXBvcnQgeyBkZXNpc3QsIGRlY2xhcmUgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL3N0YXRlXCI7XG5pbXBvcnQgeyBpbnN0YW50aWF0ZUNvbWJpbmF0b3IgfSBmcm9tIFwiLi4vcHJvY2Vzcy9pbnN0YW50aWF0ZVwiO1xuaW1wb3J0IHsgc3RhdGVtZW50RnJvbUNvbWJpbmF0b3JOb2RlIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9lbGVtZW50XCI7XG5pbXBvcnQgeyB1bmlmeVN0YXRlbWVudFdpdGhDb21iaW5hdG9yIH0gZnJvbSBcIi4uL3Byb2Nlc3MvdW5pZnlcIjtcbmltcG9ydCB7IHZhbGlkYXRlU3RhdGVtZW50QXNDb21iaW5hdG9yIH0gZnJvbSBcIi4uL3Byb2Nlc3MvdmFsaWRhdGVcIjtcbmltcG9ydCB7IGF0dGVtcHQsIHNlcmlhbGlzZSwgdW5zZXJpYWxpc2UsIGluc3RhbnRpYXRlIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9jb250ZXh0XCI7XG5cbmNvbnN0IHsgY3V0LCBleGlzdHMgfSA9IGNvbnRpbnVhdGlvblV0aWxpdGllcyxcbiAgICAgIHsgYnJlYWtQb2ludEZyb21KU09OLCBicmVha1BvaW50VG9CcmVha1BvaW50SlNPTiB9ID0gYnJlYWtQb2ludFV0aWxpdGllcztcblxuZXhwb3J0IGRlZmF1bHQgZGVmaW5lKGNsYXNzIENvbWJpbmF0b3IgZXh0ZW5kcyBFbGVtZW50IHtcbiAgY29uc3RydWN0b3IoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCBzdGF0ZW1lbnQpIHtcbiAgICBzdXBlcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQpO1xuXG4gICAgdGhpcy5zdGF0ZW1lbnQgPSBzdGF0ZW1lbnQ7XG4gIH1cblxuICBnZXRTdGF0ZW1lbnQoKSB7XG4gICAgcmV0dXJuIHRoaXMuc3RhdGVtZW50O1xuICB9XG5cbiAgZ2V0Q29tYmluYXRvcnlOb2RlKCkge1xuICAgIGNvbnN0IG5vZGUgPSB0aGlzLmdldE5vZGUoKSxcbiAgICAgICAgICBjb21iaW5hdG9yTm9kZSA9IG5vZGU7ICAvLy9cblxuICAgIHJldHVybiBjb21iaW5hdG9yTm9kZTtcbiAgfVxuXG4gIGlzTWFsZm9ybWVkKCkge1xuICAgIGNvbnN0IGNvbWJpbmF0b3J5Tm9kZSA9IHRoaXMuZ2V0Q29tYmluYXRvcnlOb2RlKCksXG4gICAgICAgICAgbWFsZm9ybWVkID0gY29tYmluYXRvcnlOb2RlLmlzTWFsZm9ybWVkKCk7XG5cbiAgICByZXR1cm4gbWFsZm9ybWVkO1xuICB9XG5cbiAgdmVyaWZ5KGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBmb3J3YXJkID0gY3V0KGZvcndhcmQsIGJhY2spOyAvLy9cblxuICAgIGNvbnN0IGluY2x1ZGVUeXBlID0gZmFsc2UsXG4gICAgICAgICAgY2JtYmluYXRvclN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKGluY2x1ZGVUeXBlKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHtjYm1iaW5hdG9yU3RyaW5nfScgY2JtYmluYXRvci4uLmApO1xuXG4gICAgY29uc3QgbWFsZm9ybWVkID0gdGhpcy5pc01hbGZvcm1lZCgpO1xuXG4gICAgaWYgKG1hbGZvcm1lZCkge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgVW5hYmxlIHRvIHZlcmlmeSB0aGUgJyR7Y2JtYmluYXRvclN0cmluZ30nIGNibWJpbmF0b3IgYmVjYXVzZSBpdCBpcyBtYWxmb3JtZWQuYCk7XG5cbiAgICAgIHJldHVybiBiYWNrKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGRlY2xhcmUoKHN0YXRlKSA9PiB7XG4gICAgICByZXR1cm4gZGVzaXN0KChzdGF0ZSkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy52YWxpZGF0ZShzdGF0ZSwgY29udGV4dCwgKGNibWJpbmF0b3IsIF8gLCBiYWNrKSA9PiB7XG4gICAgICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke2NibWJpbmF0b3JTdHJpbmd9JyBjYm1iaW5hdG9yLmApO1xuXG4gICAgICAgICAgcmV0dXJuIGZvcndhcmQoY29udGV4dCwgYmFjayk7XG4gICAgICAgIH0sIGJhY2spO1xuICAgICAgfSwgc3RhdGUpO1xuICAgIH0pO1xuICB9XG5cbiAgdmFsaWRhdGUoc3RhdGUsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBsZXQgY29tYmluYXRvcjtcblxuICAgIGNvbnN0IGluY2x1ZGVUeXBlID0gZmFsc2UsXG4gICAgICAgICAgc3BlY2lmaWNDb250ZXh0ID0gY29udGV4dCwgIC8vL1xuICAgICAgICAgIGNvbWJpbmF0b3JTdHJpbmcgPSB0aGlzLmdldFN0cmluZyhpbmNsdWRlVHlwZSk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke2NvbWJpbmF0b3JTdHJpbmd9JyBjb21iaW5hdG9yLi4uYCk7XG5cbiAgICBjb21iaW5hdG9yID0gdGhpcztcblxuICAgIHJldHVybiBhdHRlbXB0KChjb250ZXh0KSA9PiB7XG4gICAgICBjb25zdCB2YWxpZGF0ZVN0YXRlbWVudEFzQ29tYmluYXRvciA9IHRoaXMudmFsaWRhdGVTdGF0ZW1lbnRBc0NvbWJpbmF0b3IuYmluZCh0aGlzKTtcblxuICAgICAgcmV0dXJuIGV4aXN0cyhbXG4gICAgICAgIHZhbGlkYXRlU3RhdGVtZW50QXNDb21iaW5hdG9yXG4gICAgICBdLCBzdGF0ZSwgY29udGV4dCwgKHN0YXRlLCBjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICAgIHRoaXMuY29tbWl0KGNvbnRleHQpO1xuXG4gICAgICAgIGNvbnRleHQgPSBzcGVjaWZpY0NvbnRleHQ7ICAvLy9cblxuICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke2NvbWJpbmF0b3JTdHJpbmd9JyBjb21iaW5hdG9yLmApO1xuXG4gICAgICAgIHJldHVybiBmb3J3YXJkKGNvbWJpbmF0b3IsIGNvbnRleHQsIGJhY2spO1xuICAgICAgfSwgYmFjayk7XG4gICAgfSwgY29udGV4dCk7XG4gIH1cblxuICB2YWxpZGF0ZVN0YXRlbWVudEFzQ29tYmluYXRvcihzdGF0ZSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IGluY2x1ZGVUeXBlID0gZmFsc2UsXG4gICAgICAgICAgY29tYmluYXRvclN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKGluY2x1ZGVUeXBlKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7Y29tYmluYXRvclN0cmluZ30nIGNvbWJpbmF0b3IncyBzdGF0ZW1lbnQuLi5gKTtcblxuICAgIHJldHVybiB2YWxpZGF0ZVN0YXRlbWVudEFzQ29tYmluYXRvcih0aGlzLnN0YXRlbWVudCwgY29udGV4dCwgKGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7Y29tYmluYXRvclN0cmluZ30nIGNvbWJpbmF0b3IncyBzdGF0ZW1lbnQuYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKHN0YXRlLCBjb250ZXh0LCBiYWNrKTtcbiAgICB9LCBiYWNrKTtcbiAgfVxuXG4gIHVuaWZ5U3RhdGVtZW50KHN0YXRlbWVudCwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IHN0YXRlbWVudFN0cmluZyA9IHN0YXRlbWVudC5nZXRTdHJpbmcoKSxcbiAgICAgICAgICBjb21iaW5hdG9yU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVW5pZnlpbmcgdGhlICcke3N0YXRlbWVudFN0cmluZ30nIHN0YXRlbWVudCB3aXRoIHRoZSAnJHtjb21iaW5hdG9yU3RyaW5nfScgY29tYmluYXRvci4uLmApO1xuXG4gICAgY29uc3QgY29tYmluYXRvciA9IHRoaXMsIC8vL1xuICAgICAgICAgIGdlbmVyYWxDb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksIC8vL1xuICAgICAgICAgIHNwZWNpZmljQ29udGV4dCA9IGNvbnRleHQ7IC8vL1xuXG4gICAgcmV0dXJuIHVuaWZ5U3RhdGVtZW50V2l0aENvbWJpbmF0b3Ioc3RhdGVtZW50LCBjb21iaW5hdG9yLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCAoIF8gLCBzcGVjaWZpY0NvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIGNvbnN0IGNvbnRleHQgPSBzcGVjaWZpY0NvbnRleHQ7IC8vL1xuXG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi51bmlmaWVkIHRoZSAnJHtzdGF0ZW1lbnRTdHJpbmd9JyBzdGF0ZW1lbnQgd2l0aCB0aGUgJyR7Y29tYmluYXRvclN0cmluZ30nIGNvbWJpbmF0b3IuYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKHN0YXRlbWVudCwgY29udGV4dCwgYmFjayk7XG4gICAgfSwgYmFjayk7XG4gIH1cblxuICB0b0pTT04oKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpO1xuXG4gICAgcmV0dXJuIHNlcmlhbGlzZSgoY29udGV4dCkgPT4ge1xuICAgICAgY29uc3Qgc3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTtcblxuICAgICAgbGV0IGJyZWFrUG9pbnQ7XG5cbiAgICAgIGJyZWFrUG9pbnQgPSB0aGlzLmdldEJyZWFrUG9pbnQoKTtcblxuICAgICAgY29uc3QgYnJlYWtQb2ludEpTT04gPSBicmVha1BvaW50VG9CcmVha1BvaW50SlNPTihicmVha1BvaW50KTtcblxuICAgICAgYnJlYWtQb2ludCA9IGJyZWFrUG9pbnRKU09OOyAgLy8vXG5cbiAgICAgIGNvbnN0IGpzb24gPSB7XG4gICAgICAgIGNvbnRleHQsXG4gICAgICAgIHN0cmluZyxcbiAgICAgICAgYnJlYWtQb2ludFxuICAgICAgfTtcblxuICAgICAgcmV0dXJuIGpzb247XG4gICAgfSwgY29udGV4dCk7XG4gIH1cblxuICBzdGF0aWMgbmFtZSA9IFwiQ29tYmluYXRvclwiO1xuXG4gIHN0YXRpYyBmcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gICAgbGV0IGNvbWJpbmF0b3I7XG5cbiAgICBpbnN0YW50aWF0ZSgoY29udGV4dCkgPT4ge1xuICAgICAgdW5zZXJpYWxpc2UoKGpzb24sIGNvbnRleHQpID0+IHtcbiAgICAgICAgY29uc3QgeyBzdHJpbmcgfSA9IGpzb24sXG4gICAgICAgICAgICAgIGNvbWJpbmF0b3JOb2RlID0gaW5zdGFudGlhdGVDb21iaW5hdG9yKHN0cmluZywgY29udGV4dCksXG4gICAgICAgICAgICAgIG5vZGUgPSBjb21iaW5hdG9yTm9kZSwgIC8vL1xuICAgICAgICAgICAgICBicmVha1BvaW50ID0gYnJlYWtQb2ludEZyb21KU09OKGpzb24pLFxuICAgICAgICAgICAgICBzdGF0ZW1lbnQgPSBzdGF0ZW1lbnRGcm9tQ29tYmluYXRvck5vZGUoY29tYmluYXRvck5vZGUsIGNvbnRleHQpO1xuXG4gICAgICAgIGNvbWJpbmF0b3IgPSBuZXcgQ29tYmluYXRvcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIHN0YXRlbWVudCk7XG4gICAgICB9LCBqc29uLCBjb250ZXh0KTtcbiAgICB9LCBjb250ZXh0KTtcblxuICAgIHJldHVybiBjb21iaW5hdG9yO1xuICB9XG59KTtcbiJdLCJuYW1lcyI6WyJjdXQiLCJleGlzdHMiLCJjb250aW51YXRpb25VdGlsaXRpZXMiLCJicmVha1BvaW50RnJvbUpTT04iLCJicmVha1BvaW50VG9CcmVha1BvaW50SlNPTiIsImJyZWFrUG9pbnRVdGlsaXRpZXMiLCJkZWZpbmUiLCJDb21iaW5hdG9yIiwiRWxlbWVudCIsImNvbnRleHQiLCJzdHJpbmciLCJub2RlIiwiYnJlYWtQb2ludCIsInN0YXRlbWVudCIsImdldFN0YXRlbWVudCIsImdldENvbWJpbmF0b3J5Tm9kZSIsImdldE5vZGUiLCJjb21iaW5hdG9yTm9kZSIsImlzTWFsZm9ybWVkIiwiY29tYmluYXRvcnlOb2RlIiwibWFsZm9ybWVkIiwidmVyaWZ5IiwiZm9yd2FyZCIsImJhY2siLCJpbmNsdWRlVHlwZSIsImNibWJpbmF0b3JTdHJpbmciLCJnZXRTdHJpbmciLCJ0cmFjZSIsImRlYnVnIiwiZGVjbGFyZSIsInN0YXRlIiwiZGVzaXN0IiwidmFsaWRhdGUiLCJjYm1iaW5hdG9yIiwiXyIsImNvbWJpbmF0b3IiLCJzcGVjaWZpY0NvbnRleHQiLCJjb21iaW5hdG9yU3RyaW5nIiwiYXR0ZW1wdCIsInZhbGlkYXRlU3RhdGVtZW50QXNDb21iaW5hdG9yIiwiYmluZCIsImNvbW1pdCIsInVuaWZ5U3RhdGVtZW50Iiwic3RhdGVtZW50U3RyaW5nIiwiZ2VuZXJhbENvbnRleHQiLCJnZXRDb250ZXh0IiwidW5pZnlTdGF0ZW1lbnRXaXRoQ29tYmluYXRvciIsInRvSlNPTiIsInNlcmlhbGlzZSIsImdldEJyZWFrUG9pbnQiLCJicmVha1BvaW50SlNPTiIsImpzb24iLCJuYW1lIiwiZnJvbUpTT04iLCJpbnN0YW50aWF0ZSIsInVuc2VyaWFsaXNlIiwiaW5zdGFudGlhdGVDb21iaW5hdG9yIiwic3RhdGVtZW50RnJvbUNvbWJpbmF0b3JOb2RlIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFlQTs7O2VBQUE7OztnQ0Fib0U7MEJBRTdDO3VCQUNTOzZCQUNNO3lCQUNNO3VCQUNDOzBCQUNDO3lCQUNlO0FBRTdELE1BQU0sRUFBRUEsR0FBRyxFQUFFQyxNQUFNLEVBQUUsR0FBR0MscUNBQXFCLEVBQ3ZDLEVBQUVDLGtCQUFrQixFQUFFQywwQkFBMEIsRUFBRSxHQUFHQyxtQ0FBbUI7TUFFOUUsV0FBZUMsSUFBQUEsZ0JBQU0sRUFBQyxNQUFN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
|