occam-nominal 1.0.489 → 1.0.490
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.js +3 -11
- package/lib/element/claim.js +7 -5
- package/lib/element/derivation.js +3 -3
- package/lib/element/fact/premise.js +1 -1
- package/lib/element/fact/step.js +1 -1
- package/lib/element/fact/supposition.js +1 -1
- package/lib/element/resolution.js +4 -4
- package/lib/element/rule.js +15 -13
- package/lib/element/schema.js +1 -6
- package/lib/element/section.js +1 -2
- package/lib/element/subDerivation.js +2 -2
- package/lib/element/subproof.js +8 -6
- package/package.json +1 -1
- package/src/context.js +2 -15
- package/src/element/claim.js +9 -7
- package/src/element/derivation.js +3 -3
- package/src/element/fact/premise.js +1 -1
- package/src/element/fact/step.js +1 -1
- package/src/element/fact/supposition.js +1 -1
- package/src/element/resolution.js +3 -3
- package/src/element/rule.js +22 -20
- package/src/element/schema.js +0 -8
- package/src/element/section.js +0 -2
- package/src/element/subDerivation.js +2 -2
- package/src/element/subproof.js +10 -8
package/lib/context.js
CHANGED
|
@@ -397,22 +397,14 @@ class Context extends _occamlanguages.Context {
|
|
|
397
397
|
const context = this.getContext();
|
|
398
398
|
context.addInferredSubstitution(inferredSubstitution);
|
|
399
399
|
}
|
|
400
|
-
addConstraint(constraint) {
|
|
401
|
-
const context = this.getContext();
|
|
402
|
-
context.addConstraint(constraint);
|
|
403
|
-
}
|
|
404
400
|
addDeclaredMetavariable(declaredMetavariable) {
|
|
405
401
|
const context = this.getContext();
|
|
406
402
|
context.addDeclaredMetavariable(declaredMetavariable);
|
|
407
403
|
}
|
|
408
|
-
|
|
404
|
+
addConstraint(constraint) {
|
|
409
405
|
const context = this.getContext();
|
|
410
|
-
context.
|
|
411
|
-
}
|
|
412
|
-
getRules() {
|
|
413
|
-
const context = this.getContext(), rules = context.getRules();
|
|
414
|
-
return rules;
|
|
406
|
+
context.addConstraint(constraint);
|
|
415
407
|
}
|
|
416
408
|
}
|
|
417
409
|
|
|
418
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9jb250ZXh0LmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBDb250ZXh0IGFzIENvbnRleHRCYXNlIH0gZnJvbSBcIm9jY2FtLWxhbmd1YWdlc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBDb250ZXh0IGV4dGVuZHMgQ29udGV4dEJhc2Uge1xuICBnZXRMZXhlcigpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksXG4gICAgICAgICAgbGV4ZXIgPSBjb250ZXh0LmdldExleGVyKCk7XG5cbiAgICByZXR1cm4gbGV4ZXI7XG4gIH1cblxuICBnZXRQYXJzZXIoKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpLFxuICAgICAgICAgIHBhcnNlciA9IGNvbnRleHQuZ2V0UGFyc2VyKCk7XG5cbiAgICByZXR1cm4gcGFyc2VyO1xuICB9XG5cbiAgZ2V0RmlsZVBhdGgoKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpLFxuICAgICAgICAgIGZpbGVQYXRoID0gY29udGV4dC5nZXRGaWxlUGF0aCgpO1xuXG4gICAgcmV0dXJuIGZpbGVQYXRoO1xuICB9XG5cbiAgZ2V0VG9rZW5zKCkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSxcbiAgICAgICAgICB0b2tlbnMgPSBjb250ZXh0LmdldFRva2VucygpO1xuXG4gICAgcmV0dXJuIHRva2VucztcbiAgfVxuXG4gIHNldFRva2Vucyh0b2tlbnMpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCk7XG5cbiAgICBjb250ZXh0LnNldFRva2Vucyh0b2tlbnMpO1xuICB9XG5cbiAgZ2V0VGVybXModGVybXMgPSBbXSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKTtcblxuICAgIGNvbnRleHQuZ2V0VGVybXModGVybXMpO1xuXG4gICAgcmV0dXJuIHRlcm1zO1xuICB9XG5cbiAgZ2V0RnJhbWVzKGZyYW1lcyA9IFtdKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpO1xuXG4gICAgY29udGV4dC5nZXRGcmFtZXMoZnJhbWVzKTtcblxuICAgIHJldHVybiBmcmFtZXM7XG4gIH1cblxuICBnZXRFcXVhbGl0aWVzKGVxdWFsaXRpZXMgPSBbXSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKTtcblxuICAgIGNvbnRleHQuZ2V0RXF1YWxpdGllcyhlcXVhbGl0aWVzKTtcblxuICAgIHJldHVybiBlcXVhbGl0aWVzO1xuICB9XG5cbiAgZ2V0QXNzZXJ0aW9ucyhhc3NlcnRpb25zID0gW10pIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCk7XG5cbiAgICBjb250ZXh0LmdldEFzc2VydGlvbnMoYXNzZXJ0aW9ucyk7XG5cbiAgICByZXR1cm4gYXNzZXJ0aW9ucztcbiAgfVxuXG4gIGdldFN0YXRlbWVudHMoc3RhdGVtZW50cyA9IFtdKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpO1xuXG4gICAgY29udGV4dC5nZXRTdGF0ZW1lbnRzKHN0YXRlbWVudHMpO1xuXG4gICAgcmV0dXJuIHN0YXRlbWVudHM7XG4gIH1cblxuICBnZXRTaWduYXR1cmVzKHNpZ25hdHVyZXMgPSBbXSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKTtcblxuICAgIGNvbnRleHQuZ2V0U2lnbmF0dXJlcyhzaWduYXR1cmVzKTtcblxuICAgIHJldHVybiBzaWduYXR1cmVzO1xuICB9XG5cbiAgZ2V0UmVmZXJlbmNlcyhyZWZlcmVuY2VzID0gW10pIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCk7XG5cbiAgICBjb250ZXh0LmdldFJlZmVyZW5jZXMocmVmZXJlbmNlcyk7XG5cbiAgICByZXR1cm4gcmVmZXJlbmNlcztcbiAgfVxuXG4gIGdldEFzc3VtcHRpb25zKGFzc3VtcHRpb25zID0gW10pIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCk7XG5cbiAgICBjb250ZXh0LmdldEFzc3VtcHRpb25zKGFzc3VtcHRpb25zKTtcblxuICAgIHJldHVybiBhc3N1bXB0aW9ucztcbiAgfVxuXG4gIGdldE1ldGF2YXJpYWJsZXMobWV0YXZhcmlhYmxlcyA9IFtdKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpO1xuXG4gICAgY29udGV4dC5nZXRNZXRhdmFyaWFibGVzKG1ldGF2YXJpYWJsZXMpO1xuXG4gICAgcmV0dXJuIG1ldGF2YXJpYWJsZXM7XG4gIH1cblxuICBnZXRTdWJzdGl0dXRpb25zKHN1YnN0aXR1dGlvbnMgPSBbXSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKTtcblxuICAgIGNvbnRleHQuZ2V0U3Vic3RpdHV0aW9ucyhzdWJzdGl0dXRpb25zKTtcblxuICAgIHJldHVybiBzdWJzdGl0dXRpb25zO1xuICB9XG5cbiAgZ2V0SW5mZXJyZWRTdWJzdGl0dXRpb25zKGluZmVycmVkU3Vic3RpdHV0aW9ucyA9IFtdKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpO1xuXG4gICAgY29udGV4dC5nZXRJbmZlcnJlZFN1YnN0aXR1dGlvbnMoaW5mZXJyZWRTdWJzdGl0dXRpb25zKTtcblxuICAgIHJldHVybiBpbmZlcnJlZFN1YnN0aXR1dGlvbnM7XG4gIH1cblxuICBnZXRHZW5lcmF0b3JzKGluY2x1ZGVSZWxlYXNlID0gdHJ1ZSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSxcbiAgICAgICAgICBnZW5lcmF0b3JzID0gY29udGV4dC5nZXRHZW5lcmF0b3JzKGluY2x1ZGVSZWxlYXNlKTtcblxuICAgIHJldHVybiBnZW5lcmF0b3JzO1xuICB9XG5cbiAgZ2V0UHJvY2VkdXJlcyhpbmNsdWRlUmVsZWFzZSA9IHRydWUpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksXG4gICAgICAgICAgcHJvY2VkdXJlcyA9IGNvbnRleHQuZ2V0UHJvY2VkdXJlcyhpbmNsdWRlUmVsZWFzZSk7XG5cbiAgICByZXR1cm4gcHJvY2VkdXJlcztcbiAgfVxuXG4gIGdldENvbWJpbmF0b3JzKGluY2x1ZGVSZWxlYXNlID0gdHJ1ZSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSxcbiAgICAgICAgICBjb21iaW5hdG9ycyA9IGNvbnRleHQuZ2V0Q29tYmluYXRvcnMoaW5jbHVkZVJlbGVhc2UpO1xuXG4gICAgcmV0dXJuIGNvbWJpbmF0b3JzO1xuICB9XG5cbiAgZ2V0Q29uc3RydWN0b3JzKGluY2x1ZGVSZWxlYXNlID0gdHJ1ZSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSxcbiAgICAgICAgICBjb25zdHJ1Y3RvcnMgPSBjb250ZXh0LmdldENvbnN0cnVjdG9ycyhpbmNsdWRlUmVsZWFzZSk7XG5cbiAgICByZXR1cm4gY29uc3RydWN0b3JzO1xuICB9XG5cbiAgZ2V0Q2xhaW0oaW5jbHVkZVJlbGVhc2UgPSB0cnVlKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpLFxuICAgICAgICAgIGNsYWltID0gY29udGV4dC5nZXRDbGFpbShpbmNsdWRlUmVsZWFzZSk7XG5cbiAgICByZXR1cm4gY2xhaW07XG4gIH1cblxuICBnZXRTY2hlbWFzKGluY2x1ZGVSZWxlYXNlID0gdHJ1ZSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSxcbiAgICAgICAgICBzY2hlbWFzID0gY29udGV4dC5nZXRTY2hlbWFzKGluY2x1ZGVSZWxlYXNlKTtcblxuICAgIHJldHVybiBzY2hlbWFzO1xuICB9XG5cbiAgZ2V0VmFyaWFibGVzKG5lc3RlZCkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSxcbiAgICAgICAgICB2YXJpYWJsZXMgPSBjb250ZXh0LmdldFZhcmlhYmxlcyhuZXN0ZWQpO1xuXG4gICAgcmV0dXJuIHZhcmlhYmxlcztcbiAgfVxuXG4gIGdldFN0ZXBzKCkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSxcbiAgICAgICAgICBzdGVwcyA9IGNvbnRleHQuZ2V0U3RlcHMoKTtcblxuICAgIHJldHVybiBzdGVwcztcbiAgfVxuXG4gIGdldEZhY3RzKCkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSxcbiAgICAgICAgICBmYWN0cyA9IGNvbnRleHQuZ2V0RmFjdHMoKTtcblxuICAgIHJldHVybiBmYWN0cztcbiAgfVxuXG4gIGdldEVxdWl2YWxlbmNlcygpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksXG4gICAgICAgICAgZXF1aXZhbGVuY2VzID0gY29udGV4dC5nZXRFcXVpdmFsZW5jZXMoKTtcblxuICAgIHJldHVybiBlcXVpdmFsZW5jZXM7XG4gIH1cblxuICBnZXREZWNsYXJlZFZhcmlhYmxlcyhkZWNsYXJlZFZhcmlhYmxlcyA9IFtdKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpO1xuXG4gICAgY29udGV4dC5nZXREZWNsYXJlZFZhcmlhYmxlcyhkZWNsYXJlZFZhcmlhYmxlcyk7XG5cbiAgICByZXR1cm4gZGVjbGFyZWRWYXJpYWJsZXM7XG4gIH1cblxuICBnZXREZWNsYXJlZE1ldGF2YXJpYWJsZXMoKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpLFxuICAgICAgICAgIGRlY2xhcmVkTWV0YXZhcmlhYmxlcyA9IGNvbnRleHQuZ2V0RGVjbGFyZWRNZXRhdmFyaWFibGVzKCk7XG5cbiAgICByZXR1cm4gZGVjbGFyZWRNZXRhdmFyaWFibGVzO1xuICB9XG5cbiAgZ2V0RmFjdE9yU3VicHJvb2ZzKCkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSxcbiAgICAgICAgICBmYWN0T3JTdWJwcm9vZnMgPSBjb250ZXh0LmdldEZhY3RPclN1YnByb29mcygpO1xuXG4gICAgcmV0dXJuIGZhY3RPclN1YnByb29mcztcbiAgfVxuXG4gIGdldFByb3BlcnRpZXMoKSB7XG4gICAgY29uc3QgcHJvcGVydGllcyA9IFtdLFxuICAgICAgICAgIHR5cGVzID0gdGhpcy5nZXRUeXBlcygpO1xuXG4gICAgdHlwZXMuZm9yRWFjaCgodHlwZSkgPT4ge1xuICAgICAgdHlwZS5nZXRQcm9wZXJ0aWVzKHByb3BlcnRpZXMpO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHByb3BlcnRpZXM7XG4gIH1cblxuICBnZXRUeXBlcygpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksXG4gICAgICAgICAgdHlwZXMgPSBjb250ZXh0LmdldFR5cGVzKCk7XG5cbiAgICByZXR1cm4gdHlwZXM7XG4gIH1cblxuICBmaW5kTWV0YXZhcmlhYmxlKG1ldGF2YXJpYWJsZSwgY29udGV4dCkge1xuICAgIGNvbnN0IGNoaWxkQ29udGV4dCA9IGNvbnRleHQ7IC8vL1xuXG4gICAgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpO1xuXG4gICAgY29uc3QgcGFyZW50Q29udGV4dCA9IGNvbnRleHQ7IC8vL1xuXG4gICAgY29udGV4dCA9IGNoaWxkQ29udGV4dDsgLy8vXG5cbiAgICBtZXRhdmFyaWFibGUgPSBwYXJlbnRDb250ZXh0LmZpbmRNZXRhdmFyaWFibGUobWV0YXZhcmlhYmxlLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBtZXRhdmFyaWFibGU7XG4gIH1cblxuICBmaW5kUnVsZUJ5UmVmZXJlbmNlKHJlZmVyZW5jZSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSxcbiAgICAgICAgICBydWxlID0gY29udGV4dC5maW5kUnVsZUJ5UmVmZXJlbmNlKHJlZmVyZW5jZSk7XG5cbiAgICByZXR1cm4gcnVsZTtcbiAgfVxuXG4gIGZpbmRBeGlvbUJ5UmVmZXJlbmNlKHJlZmVyZW5jZSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSxcbiAgICAgICAgICBheGlvbSA9IGNvbnRleHQuZmluZEF4aW9tQnlSZWZlcmVuY2UocmVmZXJlbmNlKTtcblxuICAgIHJldHVybiBheGlvbTtcbiAgfVxuXG4gIGZpbmRDbGFpbUJ5UmVmZXJlbmNlKHJlZmVyZW5jZSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSxcbiAgICAgICAgICBjbGFpbSA9IGNvbnRleHQuZmluZENsYWltQnlSZWZlcmVuY2UocmVmZXJlbmNlKTtcblxuICAgIHJldHVybiBjbGFpbTtcbiAgfVxuXG4gIGZpbmRUZXJtQnlUZXJtTm9kZSh0ZXJtTm9kZSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSxcbiAgICAgICAgICB0ZXJtID0gY29udGV4dC5maW5kVGVybUJ5VGVybU5vZGUodGVybU5vZGUpO1xuXG4gICAgcmV0dXJuIHRlcm07XG4gIH1cblxuICBmaW5kRnJhbWVCeUZyYW1lTm9kZShmcmFtZU5vZGUpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksXG4gICAgICAgICAgZnJhbWUgPSBjb250ZXh0LmZpbmRGcmFtZUJ5RnJhbWVOb2RlKGZyYW1lTm9kZSk7XG5cbiAgICByZXR1cm4gZnJhbWU7XG4gIH1cblxuICBmaW5kRXF1YWxpdHlCeUVxdWFsaXR5Tm9kZShlcXVhbGl0eU5vZGUpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksXG4gICAgICAgICAgZXF1YWxpdHkgPSBjb250ZXh0LmZpbmRFcXVhbGl0eUJ5RXF1YWxpdHlOb2RlKGVxdWFsaXR5Tm9kZSk7XG5cbiAgICByZXR1cm4gZXF1YWxpdHk7XG4gIH1cblxuICBmaW5kQXNzZXJ0aW9uQnlBc3NlcnRpb25Ob2RlKGFzc2VydGlvbk5vZGUpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksXG4gICAgICAgICAgYXNzZXJ0aW9uID0gY29udGV4dC5maW5kQXNzZXJ0aW9uQnlBc3NlcnRpb25Ob2RlKGFzc2VydGlvbk5vZGUpO1xuXG4gICAgcmV0dXJuIGFzc2VydGlvbjtcbiAgfVxuXG4gIGZpbmRTdGF0ZW1lbnRCeVN0YXRlbWVudE5vZGUoc3RhdGVtZW50Tm9kZSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSxcbiAgICAgICAgICBzdGF0ZW1lbnQgPSBjb250ZXh0LmZpbmRTdGF0ZW1lbnRCeVN0YXRlbWVudE5vZGUoc3RhdGVtZW50Tm9kZSk7XG5cbiAgICByZXR1cm4gc3RhdGVtZW50O1xuICB9XG5cbiAgZmluZFJlZmVyZW5jZUJ5UmVmZXJlbmNlTm9kZShyZWZlcmVuY2VOb2RlKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpLFxuICAgICAgICAgIHJlZmVyZW5jZSA9IGNvbnRleHQuZmluZFJlZmVyZW5jZUJ5UmVmZXJlbmNlTm9kZShyZWZlcmVuY2VOb2RlKTtcblxuICAgIHJldHVybiByZWZlcmVuY2U7XG4gIH1cblxuICBmaW5kQXNzdW1wdGlvbkJ5QXNzdW1wdGlvbk5vZGUoYXNzdW1wdGlvbk5vZGUpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksXG4gICAgICAgICAgYXNzdW1wdGlvbiA9IGNvbnRleHQuZmluZEFzc3VtcHRpb25CeUFzc3VtcHRpb25Ob2RlKGFzc3VtcHRpb25Ob2RlKTtcblxuICAgIHJldHVybiBhc3N1bXB0aW9uO1xuICB9XG5cbiAgZmluZFJlZmVyZW5jZUJ5TWV0YXZhcmlhYmxlTm9kZShtZXRhdmFyaWFibGVOb2RlKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpLFxuICAgICAgICAgIHJlZmVyZW5jZSA9IGNvbnRleHQuZmluZFJlZmVyZW5jZUJ5TWV0YXZhcmlhYmxlTm9kZShtZXRhdmFyaWFibGVOb2RlKTtcblxuICAgIHJldHVybiByZWZlcmVuY2U7XG4gIH1cblxuICBmaW5kTWV0YXZhcmlhYmxlQnlNZXRhdmFyaWFibGVOb2RlKG1ldGF2YXJpYWJsZU5vZGUpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksXG4gICAgICAgICAgbWV0YXZhcmlhYmxlID0gY29udGV4dC5maW5kTWV0YXZhcmlhYmxlQnlNZXRhdmFyaWFibGVOb2RlKG1ldGF2YXJpYWJsZU5vZGUpO1xuXG4gICAgcmV0dXJuIG1ldGF2YXJpYWJsZTtcbiAgfVxuXG4gIGZpbmRTdWJzdGl0dXRpb25CeVN1YnN0aXR1dGlvbk5vZGUoc3Vic3RpdHV0aW9uTm9kZSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSxcbiAgICAgICAgICBzdWJzdGl0dXRpb24gPSBjb250ZXh0LmZpbmRTdWJzdGl0dXRpb25CeVN1YnN0aXR1dGlvbk5vZGUoc3Vic3RpdHV0aW9uTm9kZSk7XG5cbiAgICByZXR1cm4gc3Vic3RpdHV0aW9uO1xuICB9XG5cbiAgZmluZEluZmVycmVkU3Vic3RpdHV0aW9uQnlWYXJpYWJsZU5vZGUodmFyaWFibGVOb2RlKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpLFxuICAgICAgICAgIGluZmVycmVkU3Vic3RpdHV0aW9uID0gY29udGV4dC5maW5kSW5mZXJyZWRTdWJzdGl0dXRpb25CeVZhcmlhYmxlTm9kZSh2YXJpYWJsZU5vZGUpO1xuXG4gICAgcmV0dXJuIGluZmVycmVkU3Vic3RpdHV0aW9uO1xuICB9XG5cbiAgZmluZEluZmVycmVkU3Vic3RpdHV0aW9uQnlNZXRhdmFyaWFibGVOb2RlKG1ldGF2YXJpYWJsZU5vZGUpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksXG4gICAgICAgICAgaW5mZXJyZWRTdWJzdGl0dXRpb24gPSBjb250ZXh0LmZpbmRJbmZlcnJlZFN1YnN0aXR1dGlvbkJ5TWV0YXZhcmlhYmxlTm9kZShtZXRhdmFyaWFibGVOb2RlKTtcblxuICAgIHJldHVybiBpbmZlcnJlZFN1YnN0aXR1dGlvbjtcbiAgfVxuXG4gIGZpbmRDb25zdHJhaW50QnlDb25zdHJhaW50Tm9kZShjb25zdHJhaW50Tm9kZSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSxcbiAgICAgICAgICBjb25zdHJhaW50ID0gY29udGV4dC5maW5kQ29uc3RyYWludEJ5Q29uc3RyYWludE5vZGUoY29uc3RyYWludE5vZGUpO1xuXG4gICAgcmV0dXJuIGNvbnN0cmFpbnQ7XG4gIH1cblxuICBmaW5kVHlwZUJ5VHlwZU5hbWUodHlwZU5hbWUpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksXG4gICAgICAgICAgdHlwZSA9IGNvbnRleHQuZmluZFR5cGVCeVR5cGVOYW1lKHR5cGVOYW1lKTtcblxuICAgIHJldHVybiB0eXBlO1xuICB9XG5cbiAgZmluZFR5cGVCeU5vbWluYWxUeXBlTmFtZShub21pbmFsVHlwZU5hbWUpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksXG4gICAgICAgICAgdHlwZSA9IGNvbnRleHQuZmluZFR5cGVCeU5vbWluYWxUeXBlTmFtZShub21pbmFsVHlwZU5hbWUpO1xuXG4gICAgcmV0dXJuIHR5cGU7XG4gIH1cblxuICBmaW5kTWV0YVR5cGVCeU1ldGFUeXBlTmFtZShtZXRhVHlwZU5hbWUpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksXG4gICAgICAgICAgbWV0YVR5cGUgPSBjb250ZXh0LmZpbmRNZXRhVHlwZUJ5TWV0YVR5cGVOYW1lKG1ldGFUeXBlTmFtZSk7XG5cbiAgICByZXR1cm4gbWV0YVR5cGU7XG4gIH1cblxuICBmaW5kUHJvY2VkdXJlQnlQcm9jZWR1cmVOYW1lKHByb2NlZHVyZU5hbWUpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksXG4gICAgICAgICAgcHJvY2VkdXJlID0gY29udGV4dC5maW5kUHJvY2VkdXJlQnlQcm9jZWR1cmVOYW1lKHByb2NlZHVyZU5hbWUpO1xuXG4gICAgcmV0dXJuIHByb2NlZHVyZTtcbiAgfVxuXG4gIGZpbmREZWNsYXJlZFZhcmlhYmxlQnlWYXJpYWJsZUlkZW50aWZpZXIodmFyaWFibGVJZGVudGlmaWVyKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpLFxuICAgICAgICAgIGRlY2xhcmVkVmFyaWFibGUgPSBjb250ZXh0LmZpbmREZWNsYXJlZFZhcmlhYmxlQnlWYXJpYWJsZUlkZW50aWZpZXIodmFyaWFibGVJZGVudGlmaWVyKTtcblxuICAgIHJldHVybiBkZWNsYXJlZFZhcmlhYmxlO1xuICB9XG5cbiAgZmluZERlY2xhcmVkVmFyaWFibGVzQnlWYXJpYWJsZUlkZW50aWZpZXIodmFyaWFibGVJZGVudGlmaWVyKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpLFxuICAgICAgICAgIGRlY2xhcmVkVmFyaWFibGVzID0gY29udGV4dC5maW5kRGVjbGFyZWRWYXJpYWJsZXNCeVZhcmlhYmxlSWRlbnRpZmllcih2YXJpYWJsZUlkZW50aWZpZXIpO1xuXG4gICAgcmV0dXJuIGRlY2xhcmVkVmFyaWFibGVzO1xuICB9XG5cbiAgZmluZERlY2xhcmVkTWV0YXZhcmlhYmxlQnlNZXRhdmFyaWFibGVOYW1lKG1ldGF2YXJpYWJsZU5hbWUpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksXG4gICAgICAgICAgZGVjbGFyZWRNZXRhdmFyaWFibGUgPSBjb250ZXh0LmZpbmREZWNsYXJlZE1ldGF2YXJpYWJsZUJ5TWV0YXZhcmlhYmxlTmFtZShtZXRhdmFyaWFibGVOYW1lKTtcblxuICAgIHJldHVybiBkZWNsYXJlZE1ldGF2YXJpYWJsZTtcbiAgfVxuXG4gIGlzVGVybVByZXNlbnRCeVRlcm1Ob2RlKHRlcm1Ob2RlKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpLFxuICAgICAgdGVybVByZXNlbnQgPSBjb250ZXh0LmlzVGVybVByZXNlbnRCeVRlcm1Ob2RlKHRlcm1Ob2RlKTtcblxuICAgIHJldHVybiB0ZXJtUHJlc2VudDtcbiAgfVxuXG4gIGlzTGFiZWxQcmVzZW50QnlMYWJlbE5vZGUobGFiZWxOb2RlKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpLFxuICAgICAgICAgIGxhYmVsUHJlc2VudCA9IGNvbnRleHQuaXNMYWJlbFByZXNlbnRCeUxhYmVsTm9kZShsYWJlbE5vZGUpO1xuXG4gICAgcmV0dXJuIGxhYmVsUHJlc2VudDtcbiAgfVxuXG4gIGlzRnJhbWVQcmVzZW50QnlGcmFtZU5vZGUoZnJhbWVOb2RlKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpLFxuICAgICAgICAgIGZyYW1lUHJlc2VudCA9IGNvbnRleHQuaXNGcmFtZVByZXNlbnRCeUZyYW1lTm9kZShmcmFtZU5vZGUpO1xuXG4gICAgcmV0dXJuIGZyYW1lUHJlc2VudDtcbiAgfVxuXG4gIGlzRXF1YWxpdHlQcmVzZW50QnlFcXVhbGl0eU5vZGUoZXF1YWxpdHlOb2RlKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpLFxuICAgICAgICAgIGVxdWFsaXR5UHJlc2VudCA9IGNvbnRleHQuaXNFcXVhbGl0eVByZXNlbnRCeUVxdWFsaXR5Tm9kZShlcXVhbGl0eU5vZGUpO1xuXG4gICAgcmV0dXJuIGVxdWFsaXR5UHJlc2VudDtcbiAgfVxuXG4gIGlzQXNzZXJ0aW9uUHJlc2VudEJ5QXNzZXJ0aW9uTm9kZShhc3NlcnRpb25Ob2RlKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpLFxuICAgICAgICAgIGFzc2VydGlvblByZXNlbnQgPSBjb250ZXh0LmlzQXNzZXJ0aW9uUHJlc2VudEJ5QXNzZXJ0aW9uTm9kZShhc3NlcnRpb25Ob2RlKTtcblxuICAgIHJldHVybiBhc3NlcnRpb25QcmVzZW50O1xuICB9XG5cbiAgaXNTdGF0ZW1lbnRQcmVzZW50QnlTdGF0ZW1lbnROb2RlKHN0YXRlbWVudE5vZGUpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksXG4gICAgICAgICAgc3RhdGVtZW50UHJlc2VudCA9IGNvbnRleHQuaXNTdGF0ZW1lbnRQcmVzZW50QnlTdGF0ZW1lbnROb2RlKHN0YXRlbWVudE5vZGUpO1xuXG4gICAgcmV0dXJuIHN0YXRlbWVudFByZXNlbnQ7XG4gIH1cblxuICBpc01ldGF2YXJpYWJsZVByZXNlbnRCeU1ldGF2YXJpYWJsZU5vZGUobWV0YXZhcmlhYmxlTm9kZSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSxcbiAgICAgICAgICBtZXRhdmFyaWFibGVQcmVzZW50ID0gY29udGV4dC5pc01ldGF2YXJpYWJsZVByZXNlbnRCeU1ldGF2YXJpYWJsZU5vZGUobWV0YXZhcmlhYmxlTm9kZSk7XG5cbiAgICByZXR1cm4gbWV0YXZhcmlhYmxlUHJlc2VudDtcbiAgfVxuXG4gIGlzVHlwZVByZXNlbnRCeU5vbWluYWxUeXBlTmFtZShub21pbmFsVHlwZU5hbWUpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksXG4gICAgICAgICAgdHlwZVByZXNlbnQgPSBjb250ZXh0LmlzVHlwZVByZXNlbnRCeU5vbWluYWxUeXBlTmFtZShub21pbmFsVHlwZU5hbWUpO1xuXG4gICAgcmV0dXJuIHR5cGVQcmVzZW50O1xuICB9XG5cbiAgaXNQcm9jZWR1cmVQcmVzZW50QnlQcm9jZWR1cmVOYW1lKHByb2NlZHVyZU5hbWUpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksXG4gICAgICAgICAgcHJvY2VkdXJlUHJlc2VudCA9IGNvbnRleHQuaXNQcm9jZWR1cmVQcmVzZW50QnlQcm9jZWR1cmVOYW1lKHByb2NlZHVyZU5hbWUpO1xuXG4gICAgcmV0dXJuIHByb2NlZHVyZVByZXNlbnQ7XG4gIH1cblxuICBpc0RlY2xhcmVkTWV0YXZhcmlhYmxlUHJlc2VudEJ5TWV0YXZhcmlhYmxlTmFtZShtZXRhdmFyaWFibGVOYW1lKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpLFxuICAgICAgICAgIG1ldGF2YXJpYWJsZVByZXNlbnQgPSBjb250ZXh0LmlzRGVjbGFyZWRNZXRhdmFyaWFibGVQcmVzZW50QnlNZXRhdmFyaWFibGVOYW1lKG1ldGF2YXJpYWJsZU5hbWUpO1xuXG4gICAgcmV0dXJuIG1ldGF2YXJpYWJsZVByZXNlbnQ7XG4gIH1cblxuICBpc1JlZmVyZW5jZVByZXNlbnRCeU1ldGF2YXJpYWJsZU5vZGUobWV0dnZhcmlhYmxlTm9kZSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSxcbiAgICAgICAgICByZWZlcmVuY2VQcmVzZW50ID0gY29udGV4dC5pc1JlZmVyZW5jZVByZXNlbnRCeU1ldGF2YXJpYWJsZU5vZGUobWV0dnZhcmlhYmxlTm9kZSk7XG5cbiAgICByZXR1cm4gcmVmZXJlbmNlUHJlc2VudDtcbiAgfVxuXG4gIGlzSW5mZXJyZWRTdWJzdGl0dXRpb25QcmVzZW50QnlNZXRhdmFyaWFibGVOb2RlKG1ldGF2YXJpYWJsZU5vZGUpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksXG4gICAgICAgICAgaW5mZXJyZWRTdWJzdGl0dXRpb25QcmVzZW50ID0gY29udGV4dC5pc0luZmVycmVkU3Vic3RpdHV0aW9uUHJlc2VudEJ5TWV0YXZhcmlhYmxlTm9kZShtZXRhdmFyaWFibGVOb2RlKTtcblxuICAgIHJldHVybiBpbmZlcnJlZFN1YnN0aXR1dGlvblByZXNlbnQ7XG4gIH1cblxuICBpc0luZmVycmVkU3Vic3RpdHV0aW9uUHJlc2VudEJ5TWV0YXZhcmlhYmxlTm9kZUFuZFN1YnN0aXR1dGlvbk5vZGUobWV0YXZhcmlhYmxlTm9kZSwgc3Vic3RpdHV0aW9uTm9kZSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSxcbiAgICAgICAgICBpbmZlcnJlZFN1YnN0aXR1dGlvblByZXNlbnQgPSBjb250ZXh0LmlzSW5mZXJyZWRTdWJzdGl0dXRpb25QcmVzZW50QnlNZXRhdmFyaWFibGVOb2RlQW5kU3Vic3RpdHV0aW9uTm9kZShtZXRhdmFyaWFibGVOb2RlLCBzdWJzdGl0dXRpb25Ob2RlKTtcblxuICAgIHJldHVybiBpbmZlcnJlZFN1YnN0aXR1dGlvblByZXNlbnQ7XG4gIH1cblxuICBpc01ldGFMZXZlbCgpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksXG4gICAgICAgICAgbWV0YUxldmVsID0gY29udGV4dC5pc01ldGFMZXZlbCgpO1xuXG4gICAgcmV0dXJuIG1ldGFMZXZlbDtcbiAgfVxuXG4gIGFkZFRlcm1zKHRlcm1zKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpO1xuXG4gICAgY29udGV4dC5hZGRUZXJtcyh0ZXJtcyk7XG4gIH1cblxuICBhZGRBc3NlcnRpb25zKGFzc2VydGlvbnMpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCk7XG5cbiAgICBjb250ZXh0LmFkZEFzc2VydGlvbnMoYXNzZXJ0aW9ucyk7XG4gIH1cblxuICBhZGRNZXRhdmFyaWFibGVzKG1ldGF2YXJpYWJsZXMpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCk7XG5cbiAgICBjb250ZXh0LmFkZE1ldGF2YXJpYWJsZXMobWV0YXZhcmlhYmxlcyk7XG4gIH1cblxuICBhZGRJbmZlcnJlZFN1YnN0aXR1dGlvbnMoaW5mZXJyZWRTdWJzdGl0dXRpb25zKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpO1xuXG4gICAgY29udGV4dC5hZGRJbmZlcnJlZFN1YnN0aXR1dGlvbnMoaW5mZXJyZWRTdWJzdGl0dXRpb25zKTtcbiAgfVxuXG4gIGFkZEF4aW9tKGF4aW9tKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpO1xuXG4gICAgY29udGV4dC5hZGRBeGlvbShheGlvbSk7XG4gIH1cblxuICBhZGRMZW1tYShsZW1tYSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKTtcblxuICAgIGNvbnRleHQuYWRkTGVtbWEobGVtbWEpO1xuICB9XG5cbiAgYWRkU2NoZW1hKHNjaGVtYSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKTtcblxuICAgIGNvbnRleHQuYWRkU2NoZW1hKHNjaGVtYSk7XG4gIH1cblxuICBhZGRUaGVvcmVtKHRoZW9yZW0pIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCk7XG5cbiAgICBjb250ZXh0LmFkZFRoZW9yZW0odGhlb3JlbSk7XG4gIH1cblxuICBhZGRDb25qZWN0dXJlKGNvbmplY3R1cmUpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCk7XG5cbiAgICBjb250ZXh0LmFkZENvbmplY3R1cmUoY29uamVjdHVyZSk7XG4gIH1cblxuICBhZGRSdWxlKHJ1bGUpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCk7XG5cbiAgICBjb250ZXh0LmFkZFJ1bGUocnVsZSk7XG4gIH1cblxuICBhZGRUZXJtKHRlcm0pIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCk7XG5cbiAgICBjb250ZXh0LmFkZFRlcm0odGVybSk7XG4gIH1cblxuICBhZGRGcmFtZShmcmFtZSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKTtcblxuICAgIGNvbnRleHQuYWRkRnJhbWUoZnJhbWUpO1xuICB9XG5cbiAgYWRkRXF1YWxpdHkoZXF1YWxpdHkpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCk7XG5cbiAgICBjb250ZXh0LmFkZEVxdWFsaXR5KGVxdWFsaXR5KTtcbiAgfVxuXG4gIGFkZEFzc2VydGlvbihhc3NlcnRpb24pIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCk7XG5cbiAgICBjb250ZXh0LmFkZEFzc2VydGlvbihhc3NlcnRpb24pO1xuICB9XG5cbiAgYWRkU3RhdGVtZW50KHN0YXRlbWVudCkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKTtcblxuICAgIGNvbnRleHQuYWRkU3RhdGVtZW50KHN0YXRlbWVudCk7XG4gIH1cblxuICBhZGRTaWduYXR1cmUoc2lnbmF0dXJlKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpO1xuXG4gICAgY29udGV4dC5hZGRTaWduYXR1cmUoc2lnbmF0dXJlKTtcbiAgfVxuXG4gIGFkZFJlZmVyZW5jZShyZWZlcmVuY2UpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCk7XG5cbiAgICBjb250ZXh0LmFkZFJlZmVyZW5jZShyZWZlcmVuY2UpO1xuICB9XG5cbiAgYWRkQXNzdW1wdGlvbihhc3N1bXB0aW9uKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpO1xuXG4gICAgY29udGV4dC5hZGRBc3N1bXB0aW9uKGFzc3VtcHRpb24pO1xuICB9XG5cbiAgYWRkQXNzaWdubWVudChhc3NpZ25tZW50KSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpO1xuXG4gICAgY29udGV4dC5hZGRBc3NpZ25tZW50KGFzc2lnbm1lbnQpO1xuICB9XG5cbiAgYWRkTWV0YXZhcmlhYmxlKG1ldGF2YXJpYWJsZSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKTtcblxuICAgIGNvbnRleHQuYWRkTWV0YXZhcmlhYmxlKG1ldGF2YXJpYWJsZSk7XG4gIH1cblxuICBhZGRTdWJzdGl0dXRpb24oc3Vic3RpdHV0aW9uKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpO1xuXG4gICAgY29udGV4dC5hZGRTdWJzdGl0dXRpb24oc3Vic3RpdHV0aW9uKTtcbiAgfVxuXG4gIGFkZERlY2xhcmVkVmFyaWFibGUoZGVjbGFyZWRWYXJpYWJsZSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKTtcblxuICAgIGNvbnRleHQuYWRkRGVjbGFyZWRWYXJpYWJsZShkZWNsYXJlZFZhcmlhYmxlKTtcbiAgfVxuXG4gIGFkZEluZmVycmVkU3Vic3RpdHV0aW9uKGluZmVycmVkU3Vic3RpdHV0aW9uKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpO1xuXG4gICAgY29udGV4dC5hZGRJbmZlcnJlZFN1YnN0aXR1dGlvbihpbmZlcnJlZFN1YnN0aXR1dGlvbik7XG4gIH1cblxuICBhZGRDb25zdHJhaW50KGNvbnN0cmFpbnQpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCk7XG5cbiAgICBjb250ZXh0LmFkZENvbnN0cmFpbnQoY29uc3RyYWludCk7XG4gIH1cblxuICBhZGREZWNsYXJlZE1ldGF2YXJpYWJsZShkZWNsYXJlZE1ldGF2YXJpYWJsZSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKTtcblxuICAgIGNvbnRleHQuYWRkRGVjbGFyZWRNZXRhdmFyaWFibGUoZGVjbGFyZWRNZXRhdmFyaWFibGUpO1xuICB9XG5cbiAgYWRkRmFjdE9yU3VicHJvb2YoZmFjdE9yU3VicHJvb2YpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCk7XG5cbiAgICBjb250ZXh0LmFkZEZhY3RPclN1YnByb29mKGZhY3RPclN1YnByb29mKTtcbiAgfVxuXG4gIGdldFJ1bGVzKCkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSxcbiAgICAgICAgICBydWxlcyA9IGNvbnRleHQuZ2V0UnVsZXMoKTtcblxuICAgIHJldHVybiBydWxlcztcbiAgfVxufVxuIl0sIm5hbWVzIjpbIkNvbnRleHQiLCJDb250ZXh0QmFzZSIsImdldExleGVyIiwiY29udGV4dCIsImdldENvbnRleHQiLCJsZXhlciIsImdldFBhcnNlciIsInBhcnNlciIsImdldEZpbGVQYXRoIiwiZmlsZVBhdGgiLCJnZXRUb2tlbnMiLCJ0b2tlbnMiLCJzZXRUb2tlbnMiLCJnZXRUZXJtcyIsInRlcm1zIiwiZ2V0RnJhbWVzIiwiZnJhbWVzIiwiZ2V0RXF1YWxpdGllcyIsImVxdWFsaXRpZXMiLCJnZXRBc3NlcnRpb25zIiwiYXNzZXJ0aW9ucyIsImdldFN0YXRlbWVudHMiLCJzdGF0ZW1lbnRzIiwiZ2V0U2lnbmF0dXJlcyIsInNpZ25hdHVyZXMiLCJnZXRSZWZlcmVuY2VzIiwicmVmZXJlbmNlcyIsImdldEFzc3VtcHRpb25zIiwiYXNzdW1wdGlvbnMiLCJnZXRNZXRhdmFyaWFibGVzIiwibWV0YXZhcmlhYmxlcyIsImdldFN1YnN0aXR1dGlvbnMiLCJzdWJzdGl0dXRpb25zIiwiZ2V0SW5mZXJyZWRTdWJzdGl0dXRpb25zIiwiaW5mZXJyZWRTdWJzdGl0dXRpb25zIiwiZ2V0R2VuZXJhdG9ycyIsImluY2x1ZGVSZWxlYXNlIiwiZ2VuZXJhdG9ycyIsImdldFByb2NlZHVyZXMiLCJwcm9jZWR1cmVzIiwiZ2V0Q29tYmluYXRvcnMiLCJjb21iaW5hdG9ycyIsImdldENvbnN0cnVjdG9ycyIsImNvbnN0cnVjdG9ycyIsImdldENsYWltIiwiY2xhaW0iLCJnZXRTY2hlbWFzIiwic2NoZW1hcyIsImdldFZhcmlhYmxlcyIsIm5lc3RlZCIsInZhcmlhYmxlcyIsImdldFN0ZXBzIiwic3RlcHMiLCJnZXRGYWN0cyIsImZhY3RzIiwiZ2V0RXF1aXZhbGVuY2VzIiwiZXF1aXZhbGVuY2VzIiwiZ2V0RGVjbGFyZWRWYXJpYWJsZXMiLCJkZWNsYXJlZFZhcmlhYmxlcyIsImdldERlY2xhcmVkTWV0YXZhcmlhYmxlcyIsImRlY2xhcmVkTWV0YXZhcmlhYmxlcyIsImdldEZhY3RPclN1YnByb29mcyIsImZhY3RPclN1YnByb29mcyIsImdldFByb3BlcnRpZXMiLCJwcm9wZXJ0aWVzIiwidHlwZXMiLCJnZXRUeXBlcyIsImZvckVhY2giLCJ0eXBlIiwiZmluZE1ldGF2YXJpYWJsZSIsIm1ldGF2YXJpYWJsZSIsImNoaWxkQ29udGV4dCIsInBhcmVudENvbnRleHQiLCJmaW5kUnVsZUJ5UmVmZXJlbmNlIiwicmVmZXJlbmNlIiwicnVsZSIsImZpbmRBeGlvbUJ5UmVmZXJlbmNlIiwiYXhpb20iLCJmaW5kQ2xhaW1CeVJlZmVyZW5jZSIsImZpbmRUZXJtQnlUZXJtTm9kZSIsInRlcm1Ob2RlIiwidGVybSIsImZpbmRGcmFtZUJ5RnJhbWVOb2RlIiwiZnJhbWVOb2RlIiwiZnJhbWUiLCJmaW5kRXF1YWxpdHlCeUVxdWFsaXR5Tm9kZSIsImVxdWFsaXR5Tm9kZSIsImVxdWFsaXR5IiwiZmluZEFzc2VydGlvbkJ5QXNzZXJ0aW9uTm9kZSIsImFzc2VydGlvbk5vZGUiLCJhc3NlcnRpb24iLCJmaW5kU3RhdGVtZW50QnlTdGF0ZW1lbnROb2RlIiwic3RhdGVtZW50Tm9kZSIsInN0YXRlbWVudCIsImZpbmRSZWZlcmVuY2VCeVJlZmVyZW5jZU5vZGUiLCJyZWZlcmVuY2VOb2RlIiwiZmluZEFzc3VtcHRpb25CeUFzc3VtcHRpb25Ob2RlIiwiYXNzdW1wdGlvbk5vZGUiLCJhc3N1bXB0aW9uIiwiZmluZFJlZmVyZW5jZUJ5TWV0YXZhcmlhYmxlTm9kZSIsIm1ldGF2YXJpYWJsZU5vZGUiLCJmaW5kTWV0YXZhcmlhYmxlQnlNZXRhdmFyaWFibGVOb2RlIiwiZmluZFN1YnN0aXR1dGlvbkJ5U3Vic3RpdHV0aW9uTm9kZSIsInN1YnN0aXR1dGlvbk5vZGUiLCJzdWJzdGl0dXRpb24iLCJmaW5kSW5mZXJyZWRTdWJzdGl0dXRpb25CeVZhcmlhYmxlTm9kZSIsInZhcmlhYmxlTm9kZSIsImluZmVycmVkU3Vic3RpdHV0aW9uIiwiZmluZEluZmVycmVkU3Vic3RpdHV0aW9uQnlNZXRhdmFyaWFibGVOb2RlIiwiZmluZENvbnN0cmFpbnRCeUNvbnN0cmFpbnROb2RlIiwiY29uc3RyYWludE5vZGUiLCJjb25zdHJhaW50IiwiZmluZFR5cGVCeVR5cGVOYW1lIiwidHlwZU5hbWUiLCJmaW5kVHlwZUJ5Tm9taW5hbFR5cGVOYW1lIiwibm9taW5hbFR5cGVOYW1lIiwiZmluZE1ldGFUeXBlQnlNZXRhVHlwZU5hbWUiLCJtZXRhVHlwZU5hbWUiLCJtZXRhVHlwZSIsImZpbmRQcm9jZWR1cmVCeVByb2NlZHVyZU5hbWUiLCJwcm9jZWR1cmVOYW1lIiwicHJvY2VkdXJlIiwiZmluZERlY2xhcmVkVmFyaWFibGVCeVZhcmlhYmxlSWRlbnRpZmllciIsInZhcmlhYmxlSWRlbnRpZmllciIsImRlY2xhcmVkVmFyaWFibGUiLCJmaW5kRGVjbGFyZWRWYXJpYWJsZXNCeVZhcmlhYmxlSWRlbnRpZmllciIsImZpbmREZWNsYXJlZE1ldGF2YXJpYWJsZUJ5TWV0YXZhcmlhYmxlTmFtZSIsIm1ldGF2YXJpYWJsZU5hbWUiLCJkZWNsYXJlZE1ldGF2YXJpYWJsZSIsImlzVGVybVByZXNlbnRCeVRlcm1Ob2RlIiwidGVybVByZXNlbnQiLCJpc0xhYmVsUHJlc2VudEJ5TGFiZWxOb2RlIiwibGFiZWxOb2RlIiwibGFiZWxQcmVzZW50IiwiaXNGcmFtZVByZXNlbnRCeUZyYW1lTm9kZSIsImZyYW1lUHJlc2VudCIsImlzRXF1YWxpdHlQcmVzZW50QnlFcXVhbGl0eU5vZGUiLCJlcXVhbGl0eVByZXNlbnQiLCJpc0Fzc2VydGlvblByZXNlbnRCeUFzc2VydGlvbk5vZGUiLCJhc3NlcnRpb25QcmVzZW50IiwiaXNTdGF0ZW1lbnRQcmVzZW50QnlTdGF0ZW1lbnROb2RlIiwic3RhdGVtZW50UHJlc2VudCIsImlzTWV0YXZhcmlhYmxlUHJlc2VudEJ5TWV0YXZhcmlhYmxlTm9kZSIsIm1ldGF2YXJpYWJsZVByZXNlbnQiLCJpc1R5cGVQcmVzZW50QnlOb21pbmFsVHlwZU5hbWUiLCJ0eXBlUHJlc2VudCIsImlzUHJvY2VkdXJlUHJlc2VudEJ5UHJvY2VkdXJlTmFtZSIsInByb2NlZHVyZVByZXNlbnQiLCJpc0RlY2xhcmVkTWV0YXZhcmlhYmxlUHJlc2VudEJ5TWV0YXZhcmlhYmxlTmFtZSIsImlzUmVmZXJlbmNlUHJlc2VudEJ5TWV0YXZhcmlhYmxlTm9kZSIsIm1ldHZ2YXJpYWJsZU5vZGUiLCJyZWZlcmVuY2VQcmVzZW50IiwiaXNJbmZlcnJlZFN1YnN0aXR1dGlvblByZXNlbnRCeU1ldGF2YXJpYWJsZU5vZGUiLCJpbmZlcnJlZFN1YnN0aXR1dGlvblByZXNlbnQiLCJpc0luZmVycmVkU3Vic3RpdHV0aW9uUHJlc2VudEJ5TWV0YXZhcmlhYmxlTm9kZUFuZFN1YnN0aXR1dGlvbk5vZGUiLCJpc01ldGFMZXZlbCIsIm1ldGFMZXZlbCIsImFkZFRlcm1zIiwiYWRkQXNzZXJ0aW9ucyIsImFkZE1ldGF2YXJpYWJsZXMiLCJhZGRJbmZlcnJlZFN1YnN0aXR1dGlvbnMiLCJhZGRBeGlvbSIsImFkZExlbW1hIiwibGVtbWEiLCJhZGRTY2hlbWEiLCJzY2hlbWEiLCJhZGRUaGVvcmVtIiwidGhlb3JlbSIsImFkZENvbmplY3R1cmUiLCJjb25qZWN0dXJlIiwiYWRkUnVsZSIsImFkZFRlcm0iLCJhZGRGcmFtZSIsImFkZEVxdWFsaXR5IiwiYWRkQXNzZXJ0aW9uIiwiYWRkU3RhdGVtZW50IiwiYWRkU2lnbmF0dXJlIiwic2lnbmF0dXJlIiwiYWRkUmVmZXJlbmNlIiwiYWRkQXNzdW1wdGlvbiIsImFkZEFzc2lnbm1lbnQiLCJhc3NpZ25tZW50IiwiYWRkTWV0YXZhcmlhYmxlIiwiYWRkU3Vic3RpdHV0aW9uIiwiYWRkRGVjbGFyZWRWYXJpYWJsZSIsImFkZEluZmVycmVkU3Vic3RpdHV0aW9uIiwiYWRkQ29uc3RyYWludCIsImFkZERlY2xhcmVkTWV0YXZhcmlhYmxlIiwiYWRkRmFj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
|
|
410
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9jb250ZXh0LmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBDb250ZXh0IGFzIENvbnRleHRCYXNlIH0gZnJvbSBcIm9jY2FtLWxhbmd1YWdlc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBDb250ZXh0IGV4dGVuZHMgQ29udGV4dEJhc2Uge1xuICBnZXRMZXhlcigpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksXG4gICAgICAgICAgbGV4ZXIgPSBjb250ZXh0LmdldExleGVyKCk7XG5cbiAgICByZXR1cm4gbGV4ZXI7XG4gIH1cblxuICBnZXRQYXJzZXIoKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpLFxuICAgICAgICAgIHBhcnNlciA9IGNvbnRleHQuZ2V0UGFyc2VyKCk7XG5cbiAgICByZXR1cm4gcGFyc2VyO1xuICB9XG5cbiAgZ2V0RmlsZVBhdGgoKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpLFxuICAgICAgICAgIGZpbGVQYXRoID0gY29udGV4dC5nZXRGaWxlUGF0aCgpO1xuXG4gICAgcmV0dXJuIGZpbGVQYXRoO1xuICB9XG5cbiAgZ2V0VG9rZW5zKCkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSxcbiAgICAgICAgICB0b2tlbnMgPSBjb250ZXh0LmdldFRva2VucygpO1xuXG4gICAgcmV0dXJuIHRva2VucztcbiAgfVxuXG4gIHNldFRva2Vucyh0b2tlbnMpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCk7XG5cbiAgICBjb250ZXh0LnNldFRva2Vucyh0b2tlbnMpO1xuICB9XG5cbiAgZ2V0VGVybXModGVybXMgPSBbXSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKTtcblxuICAgIGNvbnRleHQuZ2V0VGVybXModGVybXMpO1xuXG4gICAgcmV0dXJuIHRlcm1zO1xuICB9XG5cbiAgZ2V0RnJhbWVzKGZyYW1lcyA9IFtdKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpO1xuXG4gICAgY29udGV4dC5nZXRGcmFtZXMoZnJhbWVzKTtcblxuICAgIHJldHVybiBmcmFtZXM7XG4gIH1cblxuICBnZXRFcXVhbGl0aWVzKGVxdWFsaXRpZXMgPSBbXSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKTtcblxuICAgIGNvbnRleHQuZ2V0RXF1YWxpdGllcyhlcXVhbGl0aWVzKTtcblxuICAgIHJldHVybiBlcXVhbGl0aWVzO1xuICB9XG5cbiAgZ2V0QXNzZXJ0aW9ucyhhc3NlcnRpb25zID0gW10pIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCk7XG5cbiAgICBjb250ZXh0LmdldEFzc2VydGlvbnMoYXNzZXJ0aW9ucyk7XG5cbiAgICByZXR1cm4gYXNzZXJ0aW9ucztcbiAgfVxuXG4gIGdldFN0YXRlbWVudHMoc3RhdGVtZW50cyA9IFtdKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpO1xuXG4gICAgY29udGV4dC5nZXRTdGF0ZW1lbnRzKHN0YXRlbWVudHMpO1xuXG4gICAgcmV0dXJuIHN0YXRlbWVudHM7XG4gIH1cblxuICBnZXRTaWduYXR1cmVzKHNpZ25hdHVyZXMgPSBbXSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKTtcblxuICAgIGNvbnRleHQuZ2V0U2lnbmF0dXJlcyhzaWduYXR1cmVzKTtcblxuICAgIHJldHVybiBzaWduYXR1cmVzO1xuICB9XG5cbiAgZ2V0UmVmZXJlbmNlcyhyZWZlcmVuY2VzID0gW10pIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCk7XG5cbiAgICBjb250ZXh0LmdldFJlZmVyZW5jZXMocmVmZXJlbmNlcyk7XG5cbiAgICByZXR1cm4gcmVmZXJlbmNlcztcbiAgfVxuXG4gIGdldEFzc3VtcHRpb25zKGFzc3VtcHRpb25zID0gW10pIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCk7XG5cbiAgICBjb250ZXh0LmdldEFzc3VtcHRpb25zKGFzc3VtcHRpb25zKTtcblxuICAgIHJldHVybiBhc3N1bXB0aW9ucztcbiAgfVxuXG4gIGdldE1ldGF2YXJpYWJsZXMobWV0YXZhcmlhYmxlcyA9IFtdKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpO1xuXG4gICAgY29udGV4dC5nZXRNZXRhdmFyaWFibGVzKG1ldGF2YXJpYWJsZXMpO1xuXG4gICAgcmV0dXJuIG1ldGF2YXJpYWJsZXM7XG4gIH1cblxuICBnZXRTdWJzdGl0dXRpb25zKHN1YnN0aXR1dGlvbnMgPSBbXSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKTtcblxuICAgIGNvbnRleHQuZ2V0U3Vic3RpdHV0aW9ucyhzdWJzdGl0dXRpb25zKTtcblxuICAgIHJldHVybiBzdWJzdGl0dXRpb25zO1xuICB9XG5cbiAgZ2V0SW5mZXJyZWRTdWJzdGl0dXRpb25zKGluZmVycmVkU3Vic3RpdHV0aW9ucyA9IFtdKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpO1xuXG4gICAgY29udGV4dC5nZXRJbmZlcnJlZFN1YnN0aXR1dGlvbnMoaW5mZXJyZWRTdWJzdGl0dXRpb25zKTtcblxuICAgIHJldHVybiBpbmZlcnJlZFN1YnN0aXR1dGlvbnM7XG4gIH1cblxuICBnZXRHZW5lcmF0b3JzKGluY2x1ZGVSZWxlYXNlID0gdHJ1ZSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSxcbiAgICAgICAgICBnZW5lcmF0b3JzID0gY29udGV4dC5nZXRHZW5lcmF0b3JzKGluY2x1ZGVSZWxlYXNlKTtcblxuICAgIHJldHVybiBnZW5lcmF0b3JzO1xuICB9XG5cbiAgZ2V0UHJvY2VkdXJlcyhpbmNsdWRlUmVsZWFzZSA9IHRydWUpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksXG4gICAgICAgICAgcHJvY2VkdXJlcyA9IGNvbnRleHQuZ2V0UHJvY2VkdXJlcyhpbmNsdWRlUmVsZWFzZSk7XG5cbiAgICByZXR1cm4gcHJvY2VkdXJlcztcbiAgfVxuXG4gIGdldENvbWJpbmF0b3JzKGluY2x1ZGVSZWxlYXNlID0gdHJ1ZSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSxcbiAgICAgICAgICBjb21iaW5hdG9ycyA9IGNvbnRleHQuZ2V0Q29tYmluYXRvcnMoaW5jbHVkZVJlbGVhc2UpO1xuXG4gICAgcmV0dXJuIGNvbWJpbmF0b3JzO1xuICB9XG5cbiAgZ2V0Q29uc3RydWN0b3JzKGluY2x1ZGVSZWxlYXNlID0gdHJ1ZSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSxcbiAgICAgICAgICBjb25zdHJ1Y3RvcnMgPSBjb250ZXh0LmdldENvbnN0cnVjdG9ycyhpbmNsdWRlUmVsZWFzZSk7XG5cbiAgICByZXR1cm4gY29uc3RydWN0b3JzO1xuICB9XG5cbiAgZ2V0Q2xhaW0oaW5jbHVkZVJlbGVhc2UgPSB0cnVlKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpLFxuICAgICAgICAgIGNsYWltID0gY29udGV4dC5nZXRDbGFpbShpbmNsdWRlUmVsZWFzZSk7XG5cbiAgICByZXR1cm4gY2xhaW07XG4gIH1cblxuICBnZXRTY2hlbWFzKGluY2x1ZGVSZWxlYXNlID0gdHJ1ZSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSxcbiAgICAgICAgICBzY2hlbWFzID0gY29udGV4dC5nZXRTY2hlbWFzKGluY2x1ZGVSZWxlYXNlKTtcblxuICAgIHJldHVybiBzY2hlbWFzO1xuICB9XG5cbiAgZ2V0VmFyaWFibGVzKG5lc3RlZCkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSxcbiAgICAgICAgICB2YXJpYWJsZXMgPSBjb250ZXh0LmdldFZhcmlhYmxlcyhuZXN0ZWQpO1xuXG4gICAgcmV0dXJuIHZhcmlhYmxlcztcbiAgfVxuXG4gIGdldFN0ZXBzKCkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSxcbiAgICAgICAgICBzdGVwcyA9IGNvbnRleHQuZ2V0U3RlcHMoKTtcblxuICAgIHJldHVybiBzdGVwcztcbiAgfVxuXG4gIGdldEZhY3RzKCkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSxcbiAgICAgICAgICBmYWN0cyA9IGNvbnRleHQuZ2V0RmFjdHMoKTtcblxuICAgIHJldHVybiBmYWN0cztcbiAgfVxuXG4gIGdldEVxdWl2YWxlbmNlcygpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksXG4gICAgICAgICAgZXF1aXZhbGVuY2VzID0gY29udGV4dC5nZXRFcXVpdmFsZW5jZXMoKTtcblxuICAgIHJldHVybiBlcXVpdmFsZW5jZXM7XG4gIH1cblxuICBnZXREZWNsYXJlZFZhcmlhYmxlcyhkZWNsYXJlZFZhcmlhYmxlcyA9IFtdKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpO1xuXG4gICAgY29udGV4dC5nZXREZWNsYXJlZFZhcmlhYmxlcyhkZWNsYXJlZFZhcmlhYmxlcyk7XG5cbiAgICByZXR1cm4gZGVjbGFyZWRWYXJpYWJsZXM7XG4gIH1cblxuICBnZXREZWNsYXJlZE1ldGF2YXJpYWJsZXMoKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpLFxuICAgICAgICAgIGRlY2xhcmVkTWV0YXZhcmlhYmxlcyA9IGNvbnRleHQuZ2V0RGVjbGFyZWRNZXRhdmFyaWFibGVzKCk7XG5cbiAgICByZXR1cm4gZGVjbGFyZWRNZXRhdmFyaWFibGVzO1xuICB9XG5cbiAgZ2V0RmFjdE9yU3VicHJvb2ZzKCkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSxcbiAgICAgICAgICBmYWN0T3JTdWJwcm9vZnMgPSBjb250ZXh0LmdldEZhY3RPclN1YnByb29mcygpO1xuXG4gICAgcmV0dXJuIGZhY3RPclN1YnByb29mcztcbiAgfVxuXG4gIGdldFByb3BlcnRpZXMoKSB7XG4gICAgY29uc3QgcHJvcGVydGllcyA9IFtdLFxuICAgICAgICAgIHR5cGVzID0gdGhpcy5nZXRUeXBlcygpO1xuXG4gICAgdHlwZXMuZm9yRWFjaCgodHlwZSkgPT4ge1xuICAgICAgdHlwZS5nZXRQcm9wZXJ0aWVzKHByb3BlcnRpZXMpO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHByb3BlcnRpZXM7XG4gIH1cblxuICBnZXRUeXBlcygpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksXG4gICAgICAgICAgdHlwZXMgPSBjb250ZXh0LmdldFR5cGVzKCk7XG5cbiAgICByZXR1cm4gdHlwZXM7XG4gIH1cblxuICBmaW5kTWV0YXZhcmlhYmxlKG1ldGF2YXJpYWJsZSwgY29udGV4dCkge1xuICAgIGNvbnN0IGNoaWxkQ29udGV4dCA9IGNvbnRleHQ7IC8vL1xuXG4gICAgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpO1xuXG4gICAgY29uc3QgcGFyZW50Q29udGV4dCA9IGNvbnRleHQ7IC8vL1xuXG4gICAgY29udGV4dCA9IGNoaWxkQ29udGV4dDsgLy8vXG5cbiAgICBtZXRhdmFyaWFibGUgPSBwYXJlbnRDb250ZXh0LmZpbmRNZXRhdmFyaWFibGUobWV0YXZhcmlhYmxlLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBtZXRhdmFyaWFibGU7XG4gIH1cblxuICBmaW5kUnVsZUJ5UmVmZXJlbmNlKHJlZmVyZW5jZSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSxcbiAgICAgICAgICBydWxlID0gY29udGV4dC5maW5kUnVsZUJ5UmVmZXJlbmNlKHJlZmVyZW5jZSk7XG5cbiAgICByZXR1cm4gcnVsZTtcbiAgfVxuXG4gIGZpbmRBeGlvbUJ5UmVmZXJlbmNlKHJlZmVyZW5jZSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSxcbiAgICAgICAgICBheGlvbSA9IGNvbnRleHQuZmluZEF4aW9tQnlSZWZlcmVuY2UocmVmZXJlbmNlKTtcblxuICAgIHJldHVybiBheGlvbTtcbiAgfVxuXG4gIGZpbmRDbGFpbUJ5UmVmZXJlbmNlKHJlZmVyZW5jZSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSxcbiAgICAgICAgICBjbGFpbSA9IGNvbnRleHQuZmluZENsYWltQnlSZWZlcmVuY2UocmVmZXJlbmNlKTtcblxuICAgIHJldHVybiBjbGFpbTtcbiAgfVxuXG4gIGZpbmRUZXJtQnlUZXJtTm9kZSh0ZXJtTm9kZSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSxcbiAgICAgICAgICB0ZXJtID0gY29udGV4dC5maW5kVGVybUJ5VGVybU5vZGUodGVybU5vZGUpO1xuXG4gICAgcmV0dXJuIHRlcm07XG4gIH1cblxuICBmaW5kRnJhbWVCeUZyYW1lTm9kZShmcmFtZU5vZGUpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksXG4gICAgICAgICAgZnJhbWUgPSBjb250ZXh0LmZpbmRGcmFtZUJ5RnJhbWVOb2RlKGZyYW1lTm9kZSk7XG5cbiAgICByZXR1cm4gZnJhbWU7XG4gIH1cblxuICBmaW5kRXF1YWxpdHlCeUVxdWFsaXR5Tm9kZShlcXVhbGl0eU5vZGUpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksXG4gICAgICAgICAgZXF1YWxpdHkgPSBjb250ZXh0LmZpbmRFcXVhbGl0eUJ5RXF1YWxpdHlOb2RlKGVxdWFsaXR5Tm9kZSk7XG5cbiAgICByZXR1cm4gZXF1YWxpdHk7XG4gIH1cblxuICBmaW5kQXNzZXJ0aW9uQnlBc3NlcnRpb25Ob2RlKGFzc2VydGlvbk5vZGUpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksXG4gICAgICAgICAgYXNzZXJ0aW9uID0gY29udGV4dC5maW5kQXNzZXJ0aW9uQnlBc3NlcnRpb25Ob2RlKGFzc2VydGlvbk5vZGUpO1xuXG4gICAgcmV0dXJuIGFzc2VydGlvbjtcbiAgfVxuXG4gIGZpbmRTdGF0ZW1lbnRCeVN0YXRlbWVudE5vZGUoc3RhdGVtZW50Tm9kZSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSxcbiAgICAgICAgICBzdGF0ZW1lbnQgPSBjb250ZXh0LmZpbmRTdGF0ZW1lbnRCeVN0YXRlbWVudE5vZGUoc3RhdGVtZW50Tm9kZSk7XG5cbiAgICByZXR1cm4gc3RhdGVtZW50O1xuICB9XG5cbiAgZmluZFJlZmVyZW5jZUJ5UmVmZXJlbmNlTm9kZShyZWZlcmVuY2VOb2RlKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpLFxuICAgICAgICAgIHJlZmVyZW5jZSA9IGNvbnRleHQuZmluZFJlZmVyZW5jZUJ5UmVmZXJlbmNlTm9kZShyZWZlcmVuY2VOb2RlKTtcblxuICAgIHJldHVybiByZWZlcmVuY2U7XG4gIH1cblxuICBmaW5kQXNzdW1wdGlvbkJ5QXNzdW1wdGlvbk5vZGUoYXNzdW1wdGlvbk5vZGUpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksXG4gICAgICAgICAgYXNzdW1wdGlvbiA9IGNvbnRleHQuZmluZEFzc3VtcHRpb25CeUFzc3VtcHRpb25Ob2RlKGFzc3VtcHRpb25Ob2RlKTtcblxuICAgIHJldHVybiBhc3N1bXB0aW9uO1xuICB9XG5cbiAgZmluZFJlZmVyZW5jZUJ5TWV0YXZhcmlhYmxlTm9kZShtZXRhdmFyaWFibGVOb2RlKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpLFxuICAgICAgICAgIHJlZmVyZW5jZSA9IGNvbnRleHQuZmluZFJlZmVyZW5jZUJ5TWV0YXZhcmlhYmxlTm9kZShtZXRhdmFyaWFibGVOb2RlKTtcblxuICAgIHJldHVybiByZWZlcmVuY2U7XG4gIH1cblxuICBmaW5kTWV0YXZhcmlhYmxlQnlNZXRhdmFyaWFibGVOb2RlKG1ldGF2YXJpYWJsZU5vZGUpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksXG4gICAgICAgICAgbWV0YXZhcmlhYmxlID0gY29udGV4dC5maW5kTWV0YXZhcmlhYmxlQnlNZXRhdmFyaWFibGVOb2RlKG1ldGF2YXJpYWJsZU5vZGUpO1xuXG4gICAgcmV0dXJuIG1ldGF2YXJpYWJsZTtcbiAgfVxuXG4gIGZpbmRTdWJzdGl0dXRpb25CeVN1YnN0aXR1dGlvbk5vZGUoc3Vic3RpdHV0aW9uTm9kZSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSxcbiAgICAgICAgICBzdWJzdGl0dXRpb24gPSBjb250ZXh0LmZpbmRTdWJzdGl0dXRpb25CeVN1YnN0aXR1dGlvbk5vZGUoc3Vic3RpdHV0aW9uTm9kZSk7XG5cbiAgICByZXR1cm4gc3Vic3RpdHV0aW9uO1xuICB9XG5cbiAgZmluZEluZmVycmVkU3Vic3RpdHV0aW9uQnlWYXJpYWJsZU5vZGUodmFyaWFibGVOb2RlKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpLFxuICAgICAgICAgIGluZmVycmVkU3Vic3RpdHV0aW9uID0gY29udGV4dC5maW5kSW5mZXJyZWRTdWJzdGl0dXRpb25CeVZhcmlhYmxlTm9kZSh2YXJpYWJsZU5vZGUpO1xuXG4gICAgcmV0dXJuIGluZmVycmVkU3Vic3RpdHV0aW9uO1xuICB9XG5cbiAgZmluZEluZmVycmVkU3Vic3RpdHV0aW9uQnlNZXRhdmFyaWFibGVOb2RlKG1ldGF2YXJpYWJsZU5vZGUpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksXG4gICAgICAgICAgaW5mZXJyZWRTdWJzdGl0dXRpb24gPSBjb250ZXh0LmZpbmRJbmZlcnJlZFN1YnN0aXR1dGlvbkJ5TWV0YXZhcmlhYmxlTm9kZShtZXRhdmFyaWFibGVOb2RlKTtcblxuICAgIHJldHVybiBpbmZlcnJlZFN1YnN0aXR1dGlvbjtcbiAgfVxuXG4gIGZpbmRDb25zdHJhaW50QnlDb25zdHJhaW50Tm9kZShjb25zdHJhaW50Tm9kZSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSxcbiAgICAgICAgICBjb25zdHJhaW50ID0gY29udGV4dC5maW5kQ29uc3RyYWludEJ5Q29uc3RyYWludE5vZGUoY29uc3RyYWludE5vZGUpO1xuXG4gICAgcmV0dXJuIGNvbnN0cmFpbnQ7XG4gIH1cblxuICBmaW5kVHlwZUJ5VHlwZU5hbWUodHlwZU5hbWUpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksXG4gICAgICAgICAgdHlwZSA9IGNvbnRleHQuZmluZFR5cGVCeVR5cGVOYW1lKHR5cGVOYW1lKTtcblxuICAgIHJldHVybiB0eXBlO1xuICB9XG5cbiAgZmluZFR5cGVCeU5vbWluYWxUeXBlTmFtZShub21pbmFsVHlwZU5hbWUpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksXG4gICAgICAgICAgdHlwZSA9IGNvbnRleHQuZmluZFR5cGVCeU5vbWluYWxUeXBlTmFtZShub21pbmFsVHlwZU5hbWUpO1xuXG4gICAgcmV0dXJuIHR5cGU7XG4gIH1cblxuICBmaW5kTWV0YVR5cGVCeU1ldGFUeXBlTmFtZShtZXRhVHlwZU5hbWUpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksXG4gICAgICAgICAgbWV0YVR5cGUgPSBjb250ZXh0LmZpbmRNZXRhVHlwZUJ5TWV0YVR5cGVOYW1lKG1ldGFUeXBlTmFtZSk7XG5cbiAgICByZXR1cm4gbWV0YVR5cGU7XG4gIH1cblxuICBmaW5kUHJvY2VkdXJlQnlQcm9jZWR1cmVOYW1lKHByb2NlZHVyZU5hbWUpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksXG4gICAgICAgICAgcHJvY2VkdXJlID0gY29udGV4dC5maW5kUHJvY2VkdXJlQnlQcm9jZWR1cmVOYW1lKHByb2NlZHVyZU5hbWUpO1xuXG4gICAgcmV0dXJuIHByb2NlZHVyZTtcbiAgfVxuXG4gIGZpbmREZWNsYXJlZFZhcmlhYmxlQnlWYXJpYWJsZUlkZW50aWZpZXIodmFyaWFibGVJZGVudGlmaWVyKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpLFxuICAgICAgICAgIGRlY2xhcmVkVmFyaWFibGUgPSBjb250ZXh0LmZpbmREZWNsYXJlZFZhcmlhYmxlQnlWYXJpYWJsZUlkZW50aWZpZXIodmFyaWFibGVJZGVudGlmaWVyKTtcblxuICAgIHJldHVybiBkZWNsYXJlZFZhcmlhYmxlO1xuICB9XG5cbiAgZmluZERlY2xhcmVkVmFyaWFibGVzQnlWYXJpYWJsZUlkZW50aWZpZXIodmFyaWFibGVJZGVudGlmaWVyKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpLFxuICAgICAgICAgIGRlY2xhcmVkVmFyaWFibGVzID0gY29udGV4dC5maW5kRGVjbGFyZWRWYXJpYWJsZXNCeVZhcmlhYmxlSWRlbnRpZmllcih2YXJpYWJsZUlkZW50aWZpZXIpO1xuXG4gICAgcmV0dXJuIGRlY2xhcmVkVmFyaWFibGVzO1xuICB9XG5cbiAgZmluZERlY2xhcmVkTWV0YXZhcmlhYmxlQnlNZXRhdmFyaWFibGVOYW1lKG1ldGF2YXJpYWJsZU5hbWUpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksXG4gICAgICAgICAgZGVjbGFyZWRNZXRhdmFyaWFibGUgPSBjb250ZXh0LmZpbmREZWNsYXJlZE1ldGF2YXJpYWJsZUJ5TWV0YXZhcmlhYmxlTmFtZShtZXRhdmFyaWFibGVOYW1lKTtcblxuICAgIHJldHVybiBkZWNsYXJlZE1ldGF2YXJpYWJsZTtcbiAgfVxuXG4gIGlzVGVybVByZXNlbnRCeVRlcm1Ob2RlKHRlcm1Ob2RlKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpLFxuICAgICAgdGVybVByZXNlbnQgPSBjb250ZXh0LmlzVGVybVByZXNlbnRCeVRlcm1Ob2RlKHRlcm1Ob2RlKTtcblxuICAgIHJldHVybiB0ZXJtUHJlc2VudDtcbiAgfVxuXG4gIGlzTGFiZWxQcmVzZW50QnlMYWJlbE5vZGUobGFiZWxOb2RlKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpLFxuICAgICAgICAgIGxhYmVsUHJlc2VudCA9IGNvbnRleHQuaXNMYWJlbFByZXNlbnRCeUxhYmVsTm9kZShsYWJlbE5vZGUpO1xuXG4gICAgcmV0dXJuIGxhYmVsUHJlc2VudDtcbiAgfVxuXG4gIGlzRnJhbWVQcmVzZW50QnlGcmFtZU5vZGUoZnJhbWVOb2RlKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpLFxuICAgICAgICAgIGZyYW1lUHJlc2VudCA9IGNvbnRleHQuaXNGcmFtZVByZXNlbnRCeUZyYW1lTm9kZShmcmFtZU5vZGUpO1xuXG4gICAgcmV0dXJuIGZyYW1lUHJlc2VudDtcbiAgfVxuXG4gIGlzRXF1YWxpdHlQcmVzZW50QnlFcXVhbGl0eU5vZGUoZXF1YWxpdHlOb2RlKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpLFxuICAgICAgICAgIGVxdWFsaXR5UHJlc2VudCA9IGNvbnRleHQuaXNFcXVhbGl0eVByZXNlbnRCeUVxdWFsaXR5Tm9kZShlcXVhbGl0eU5vZGUpO1xuXG4gICAgcmV0dXJuIGVxdWFsaXR5UHJlc2VudDtcbiAgfVxuXG4gIGlzQXNzZXJ0aW9uUHJlc2VudEJ5QXNzZXJ0aW9uTm9kZShhc3NlcnRpb25Ob2RlKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpLFxuICAgICAgICAgIGFzc2VydGlvblByZXNlbnQgPSBjb250ZXh0LmlzQXNzZXJ0aW9uUHJlc2VudEJ5QXNzZXJ0aW9uTm9kZShhc3NlcnRpb25Ob2RlKTtcblxuICAgIHJldHVybiBhc3NlcnRpb25QcmVzZW50O1xuICB9XG5cbiAgaXNTdGF0ZW1lbnRQcmVzZW50QnlTdGF0ZW1lbnROb2RlKHN0YXRlbWVudE5vZGUpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksXG4gICAgICAgICAgc3RhdGVtZW50UHJlc2VudCA9IGNvbnRleHQuaXNTdGF0ZW1lbnRQcmVzZW50QnlTdGF0ZW1lbnROb2RlKHN0YXRlbWVudE5vZGUpO1xuXG4gICAgcmV0dXJuIHN0YXRlbWVudFByZXNlbnQ7XG4gIH1cblxuICBpc01ldGF2YXJpYWJsZVByZXNlbnRCeU1ldGF2YXJpYWJsZU5vZGUobWV0YXZhcmlhYmxlTm9kZSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSxcbiAgICAgICAgICBtZXRhdmFyaWFibGVQcmVzZW50ID0gY29udGV4dC5pc01ldGF2YXJpYWJsZVByZXNlbnRCeU1ldGF2YXJpYWJsZU5vZGUobWV0YXZhcmlhYmxlTm9kZSk7XG5cbiAgICByZXR1cm4gbWV0YXZhcmlhYmxlUHJlc2VudDtcbiAgfVxuXG4gIGlzVHlwZVByZXNlbnRCeU5vbWluYWxUeXBlTmFtZShub21pbmFsVHlwZU5hbWUpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksXG4gICAgICAgICAgdHlwZVByZXNlbnQgPSBjb250ZXh0LmlzVHlwZVByZXNlbnRCeU5vbWluYWxUeXBlTmFtZShub21pbmFsVHlwZU5hbWUpO1xuXG4gICAgcmV0dXJuIHR5cGVQcmVzZW50O1xuICB9XG5cbiAgaXNQcm9jZWR1cmVQcmVzZW50QnlQcm9jZWR1cmVOYW1lKHByb2NlZHVyZU5hbWUpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksXG4gICAgICAgICAgcHJvY2VkdXJlUHJlc2VudCA9IGNvbnRleHQuaXNQcm9jZWR1cmVQcmVzZW50QnlQcm9jZWR1cmVOYW1lKHByb2NlZHVyZU5hbWUpO1xuXG4gICAgcmV0dXJuIHByb2NlZHVyZVByZXNlbnQ7XG4gIH1cblxuICBpc0RlY2xhcmVkTWV0YXZhcmlhYmxlUHJlc2VudEJ5TWV0YXZhcmlhYmxlTmFtZShtZXRhdmFyaWFibGVOYW1lKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpLFxuICAgICAgICAgIG1ldGF2YXJpYWJsZVByZXNlbnQgPSBjb250ZXh0LmlzRGVjbGFyZWRNZXRhdmFyaWFibGVQcmVzZW50QnlNZXRhdmFyaWFibGVOYW1lKG1ldGF2YXJpYWJsZU5hbWUpO1xuXG4gICAgcmV0dXJuIG1ldGF2YXJpYWJsZVByZXNlbnQ7XG4gIH1cblxuICBpc1JlZmVyZW5jZVByZXNlbnRCeU1ldGF2YXJpYWJsZU5vZGUobWV0dnZhcmlhYmxlTm9kZSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSxcbiAgICAgICAgICByZWZlcmVuY2VQcmVzZW50ID0gY29udGV4dC5pc1JlZmVyZW5jZVByZXNlbnRCeU1ldGF2YXJpYWJsZU5vZGUobWV0dnZhcmlhYmxlTm9kZSk7XG5cbiAgICByZXR1cm4gcmVmZXJlbmNlUHJlc2VudDtcbiAgfVxuXG4gIGlzSW5mZXJyZWRTdWJzdGl0dXRpb25QcmVzZW50QnlNZXRhdmFyaWFibGVOb2RlKG1ldGF2YXJpYWJsZU5vZGUpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksXG4gICAgICAgICAgaW5mZXJyZWRTdWJzdGl0dXRpb25QcmVzZW50ID0gY29udGV4dC5pc0luZmVycmVkU3Vic3RpdHV0aW9uUHJlc2VudEJ5TWV0YXZhcmlhYmxlTm9kZShtZXRhdmFyaWFibGVOb2RlKTtcblxuICAgIHJldHVybiBpbmZlcnJlZFN1YnN0aXR1dGlvblByZXNlbnQ7XG4gIH1cblxuICBpc0luZmVycmVkU3Vic3RpdHV0aW9uUHJlc2VudEJ5TWV0YXZhcmlhYmxlTm9kZUFuZFN1YnN0aXR1dGlvbk5vZGUobWV0YXZhcmlhYmxlTm9kZSwgc3Vic3RpdHV0aW9uTm9kZSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSxcbiAgICAgICAgICBpbmZlcnJlZFN1YnN0aXR1dGlvblByZXNlbnQgPSBjb250ZXh0LmlzSW5mZXJyZWRTdWJzdGl0dXRpb25QcmVzZW50QnlNZXRhdmFyaWFibGVOb2RlQW5kU3Vic3RpdHV0aW9uTm9kZShtZXRhdmFyaWFibGVOb2RlLCBzdWJzdGl0dXRpb25Ob2RlKTtcblxuICAgIHJldHVybiBpbmZlcnJlZFN1YnN0aXR1dGlvblByZXNlbnQ7XG4gIH1cblxuICBpc01ldGFMZXZlbCgpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksXG4gICAgICAgICAgbWV0YUxldmVsID0gY29udGV4dC5pc01ldGFMZXZlbCgpO1xuXG4gICAgcmV0dXJuIG1ldGFMZXZlbDtcbiAgfVxuXG4gIGFkZFRlcm1zKHRlcm1zKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpO1xuXG4gICAgY29udGV4dC5hZGRUZXJtcyh0ZXJtcyk7XG4gIH1cblxuICBhZGRBc3NlcnRpb25zKGFzc2VydGlvbnMpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCk7XG5cbiAgICBjb250ZXh0LmFkZEFzc2VydGlvbnMoYXNzZXJ0aW9ucyk7XG4gIH1cblxuICBhZGRNZXRhdmFyaWFibGVzKG1ldGF2YXJpYWJsZXMpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCk7XG5cbiAgICBjb250ZXh0LmFkZE1ldGF2YXJpYWJsZXMobWV0YXZhcmlhYmxlcyk7XG4gIH1cblxuICBhZGRJbmZlcnJlZFN1YnN0aXR1dGlvbnMoaW5mZXJyZWRTdWJzdGl0dXRpb25zKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpO1xuXG4gICAgY29udGV4dC5hZGRJbmZlcnJlZFN1YnN0aXR1dGlvbnMoaW5mZXJyZWRTdWJzdGl0dXRpb25zKTtcbiAgfVxuXG4gIGFkZEF4aW9tKGF4aW9tKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpO1xuXG4gICAgY29udGV4dC5hZGRBeGlvbShheGlvbSk7XG4gIH1cblxuICBhZGRMZW1tYShsZW1tYSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKTtcblxuICAgIGNvbnRleHQuYWRkTGVtbWEobGVtbWEpO1xuICB9XG5cbiAgYWRkU2NoZW1hKHNjaGVtYSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKTtcblxuICAgIGNvbnRleHQuYWRkU2NoZW1hKHNjaGVtYSk7XG4gIH1cblxuICBhZGRUaGVvcmVtKHRoZW9yZW0pIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCk7XG5cbiAgICBjb250ZXh0LmFkZFRoZW9yZW0odGhlb3JlbSk7XG4gIH1cblxuICBhZGRDb25qZWN0dXJlKGNvbmplY3R1cmUpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCk7XG5cbiAgICBjb250ZXh0LmFkZENvbmplY3R1cmUoY29uamVjdHVyZSk7XG4gIH1cblxuICBhZGRSdWxlKHJ1bGUpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCk7XG5cbiAgICBjb250ZXh0LmFkZFJ1bGUocnVsZSk7XG4gIH1cblxuICBhZGRUZXJtKHRlcm0pIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCk7XG5cbiAgICBjb250ZXh0LmFkZFRlcm0odGVybSk7XG4gIH1cblxuICBhZGRGcmFtZShmcmFtZSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKTtcblxuICAgIGNvbnRleHQuYWRkRnJhbWUoZnJhbWUpO1xuICB9XG5cbiAgYWRkRXF1YWxpdHkoZXF1YWxpdHkpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCk7XG5cbiAgICBjb250ZXh0LmFkZEVxdWFsaXR5KGVxdWFsaXR5KTtcbiAgfVxuXG4gIGFkZEFzc2VydGlvbihhc3NlcnRpb24pIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCk7XG5cbiAgICBjb250ZXh0LmFkZEFzc2VydGlvbihhc3NlcnRpb24pO1xuICB9XG5cbiAgYWRkU3RhdGVtZW50KHN0YXRlbWVudCkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKTtcblxuICAgIGNvbnRleHQuYWRkU3RhdGVtZW50KHN0YXRlbWVudCk7XG4gIH1cblxuICBhZGRTaWduYXR1cmUoc2lnbmF0dXJlKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpO1xuXG4gICAgY29udGV4dC5hZGRTaWduYXR1cmUoc2lnbmF0dXJlKTtcbiAgfVxuXG4gIGFkZFJlZmVyZW5jZShyZWZlcmVuY2UpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCk7XG5cbiAgICBjb250ZXh0LmFkZFJlZmVyZW5jZShyZWZlcmVuY2UpO1xuICB9XG5cbiAgYWRkQXNzdW1wdGlvbihhc3N1bXB0aW9uKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpO1xuXG4gICAgY29udGV4dC5hZGRBc3N1bXB0aW9uKGFzc3VtcHRpb24pO1xuICB9XG5cbiAgYWRkQXNzaWdubWVudChhc3NpZ25tZW50KSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpO1xuXG4gICAgY29udGV4dC5hZGRBc3NpZ25tZW50KGFzc2lnbm1lbnQpO1xuICB9XG5cbiAgYWRkTWV0YXZhcmlhYmxlKG1ldGF2YXJpYWJsZSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKTtcblxuICAgIGNvbnRleHQuYWRkTWV0YXZhcmlhYmxlKG1ldGF2YXJpYWJsZSk7XG4gIH1cblxuICBhZGRTdWJzdGl0dXRpb24oc3Vic3RpdHV0aW9uKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpO1xuXG4gICAgY29udGV4dC5hZGRTdWJzdGl0dXRpb24oc3Vic3RpdHV0aW9uKTtcbiAgfVxuXG4gIGFkZERlY2xhcmVkVmFyaWFibGUoZGVjbGFyZWRWYXJpYWJsZSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKTtcblxuICAgIGNvbnRleHQuYWRkRGVjbGFyZWRWYXJpYWJsZShkZWNsYXJlZFZhcmlhYmxlKTtcbiAgfVxuXG4gIGFkZEluZmVycmVkU3Vic3RpdHV0aW9uKGluZmVycmVkU3Vic3RpdHV0aW9uKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpO1xuXG4gICAgY29udGV4dC5hZGRJbmZlcnJlZFN1YnN0aXR1dGlvbihpbmZlcnJlZFN1YnN0aXR1dGlvbik7XG4gIH1cblxuICBhZGREZWNsYXJlZE1ldGF2YXJpYWJsZShkZWNsYXJlZE1ldGF2YXJpYWJsZSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKTtcblxuICAgIGNvbnRleHQuYWRkRGVjbGFyZWRNZXRhdmFyaWFibGUoZGVjbGFyZWRNZXRhdmFyaWFibGUpO1xuICB9XG5cbiAgYWRkQ29uc3RyYWludChjb25zdHJhaW50KSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpO1xuXG4gICAgY29udGV4dC5hZGRDb25zdHJhaW50KGNvbnN0cmFpbnQpO1xuICB9XG59XG4iXSwibmFtZXMiOlsiQ29udGV4dCIsIkNvbnRleHRCYXNlIiwiZ2V0TGV4ZXIiLCJjb250ZXh0IiwiZ2V0Q29udGV4dCIsImxleGVyIiwiZ2V0UGFyc2VyIiwicGFyc2VyIiwiZ2V0RmlsZVBhdGgiLCJmaWxlUGF0aCIsImdldFRva2VucyIsInRva2VucyIsInNldFRva2VucyIsImdldFRlcm1zIiwidGVybXMiLCJnZXRGcmFtZXMiLCJmcmFtZXMiLCJnZXRFcXVhbGl0aWVzIiwiZXF1YWxpdGllcyIsImdldEFzc2VydGlvbnMiLCJhc3NlcnRpb25zIiwiZ2V0U3RhdGVtZW50cyIsInN0YXRlbWVudHMiLCJnZXRTaWduYXR1cmVzIiwic2lnbmF0dXJlcyIsImdldFJlZmVyZW5jZXMiLCJyZWZlcmVuY2VzIiwiZ2V0QXNzdW1wdGlvbnMiLCJhc3N1bXB0aW9ucyIsImdldE1ldGF2YXJpYWJsZXMiLCJtZXRhdmFyaWFibGVzIiwiZ2V0U3Vic3RpdHV0aW9ucyIsInN1YnN0aXR1dGlvbnMiLCJnZXRJbmZlcnJlZFN1YnN0aXR1dGlvbnMiLCJpbmZlcnJlZFN1YnN0aXR1dGlvbnMiLCJnZXRHZW5lcmF0b3JzIiwiaW5jbHVkZVJlbGVhc2UiLCJnZW5lcmF0b3JzIiwiZ2V0UHJvY2VkdXJlcyIsInByb2NlZHVyZXMiLCJnZXRDb21iaW5hdG9ycyIsImNvbWJpbmF0b3JzIiwiZ2V0Q29uc3RydWN0b3JzIiwiY29uc3RydWN0b3JzIiwiZ2V0Q2xhaW0iLCJjbGFpbSIsImdldFNjaGVtYXMiLCJzY2hlbWFzIiwiZ2V0VmFyaWFibGVzIiwibmVzdGVkIiwidmFyaWFibGVzIiwiZ2V0U3RlcHMiLCJzdGVwcyIsImdldEZhY3RzIiwiZmFjdHMiLCJnZXRFcXVpdmFsZW5jZXMiLCJlcXVpdmFsZW5jZXMiLCJnZXREZWNsYXJlZFZhcmlhYmxlcyIsImRlY2xhcmVkVmFyaWFibGVzIiwiZ2V0RGVjbGFyZWRNZXRhdmFyaWFibGVzIiwiZGVjbGFyZWRNZXRhdmFyaWFibGVzIiwiZ2V0RmFjdE9yU3VicHJvb2ZzIiwiZmFjdE9yU3VicHJvb2ZzIiwiZ2V0UHJvcGVydGllcyIsInByb3BlcnRpZXMiLCJ0eXBlcyIsImdldFR5cGVzIiwiZm9yRWFjaCIsInR5cGUiLCJmaW5kTWV0YXZhcmlhYmxlIiwibWV0YXZhcmlhYmxlIiwiY2hpbGRDb250ZXh0IiwicGFyZW50Q29udGV4dCIsImZpbmRSdWxlQnlSZWZlcmVuY2UiLCJyZWZlcmVuY2UiLCJydWxlIiwiZmluZEF4aW9tQnlSZWZlcmVuY2UiLCJheGlvbSIsImZpbmRDbGFpbUJ5UmVmZXJlbmNlIiwiZmluZFRlcm1CeVRlcm1Ob2RlIiwidGVybU5vZGUiLCJ0ZXJtIiwiZmluZEZyYW1lQnlGcmFtZU5vZGUiLCJmcmFtZU5vZGUiLCJmcmFtZSIsImZpbmRFcXVhbGl0eUJ5RXF1YWxpdHlOb2RlIiwiZXF1YWxpdHlOb2RlIiwiZXF1YWxpdHkiLCJmaW5kQXNzZXJ0aW9uQnlBc3NlcnRpb25Ob2RlIiwiYXNzZXJ0aW9uTm9kZSIsImFzc2VydGlvbiIsImZpbmRTdGF0ZW1lbnRCeVN0YXRlbWVudE5vZGUiLCJzdGF0ZW1lbnROb2RlIiwic3RhdGVtZW50IiwiZmluZFJlZmVyZW5jZUJ5UmVmZXJlbmNlTm9kZSIsInJlZmVyZW5jZU5vZGUiLCJmaW5kQXNzdW1wdGlvbkJ5QXNzdW1wdGlvbk5vZGUiLCJhc3N1bXB0aW9uTm9kZSIsImFzc3VtcHRpb24iLCJmaW5kUmVmZXJlbmNlQnlNZXRhdmFyaWFibGVOb2RlIiwibWV0YXZhcmlhYmxlTm9kZSIsImZpbmRNZXRhdmFyaWFibGVCeU1ldGF2YXJpYWJsZU5vZGUiLCJmaW5kU3Vic3RpdHV0aW9uQnlTdWJzdGl0dXRpb25Ob2RlIiwic3Vic3RpdHV0aW9uTm9kZSIsInN1YnN0aXR1dGlvbiIsImZpbmRJbmZlcnJlZFN1YnN0aXR1dGlvbkJ5VmFyaWFibGVOb2RlIiwidmFyaWFibGVOb2RlIiwiaW5mZXJyZWRTdWJzdGl0dXRpb24iLCJmaW5kSW5mZXJyZWRTdWJzdGl0dXRpb25CeU1ldGF2YXJpYWJsZU5vZGUiLCJmaW5kQ29uc3RyYWludEJ5Q29uc3RyYWludE5vZGUiLCJjb25zdHJhaW50Tm9kZSIsImNvbnN0cmFpbnQiLCJmaW5kVHlwZUJ5VHlwZU5hbWUiLCJ0eXBlTmFtZSIsImZpbmRUeXBlQnlOb21pbmFsVHlwZU5hbWUiLCJub21pbmFsVHlwZU5hbWUiLCJmaW5kTWV0YVR5cGVCeU1ldGFUeXBlTmFtZSIsIm1ldGFUeXBlTmFtZSIsIm1ldGFUeXBlIiwiZmluZFByb2NlZHVyZUJ5UHJvY2VkdXJlTmFtZSIsInByb2NlZHVyZU5hbWUiLCJwcm9jZWR1cmUiLCJmaW5kRGVjbGFyZWRWYXJpYWJsZUJ5VmFyaWFibGVJZGVudGlmaWVyIiwidmFyaWFibGVJZGVudGlmaWVyIiwiZGVjbGFyZWRWYXJpYWJsZSIsImZpbmREZWNsYXJlZFZhcmlhYmxlc0J5VmFyaWFibGVJZGVudGlmaWVyIiwiZmluZERlY2xhcmVkTWV0YXZhcmlhYmxlQnlNZXRhdmFyaWFibGVOYW1lIiwibWV0YXZhcmlhYmxlTmFtZSIsImRlY2xhcmVkTWV0YXZhcmlhYmxlIiwiaXNUZXJtUHJlc2VudEJ5VGVybU5vZGUiLCJ0ZXJtUHJlc2VudCIsImlzTGFiZWxQcmVzZW50QnlMYWJlbE5vZGUiLCJsYWJlbE5vZGUiLCJsYWJlbFByZXNlbnQiLCJpc0ZyYW1lUHJlc2VudEJ5RnJhbWVOb2RlIiwiZnJhbWVQcmVzZW50IiwiaXNFcXVhbGl0eVByZXNlbnRCeUVxdWFsaXR5Tm9kZSIsImVxdWFsaXR5UHJlc2VudCIsImlzQXNzZXJ0aW9uUHJlc2VudEJ5QXNzZXJ0aW9uTm9kZSIsImFzc2VydGlvblByZXNlbnQiLCJpc1N0YXRlbWVudFByZXNlbnRCeVN0YXRlbWVudE5vZGUiLCJzdGF0ZW1lbnRQcmVzZW50IiwiaXNNZXRhdmFyaWFibGVQcmVzZW50QnlNZXRhdmFyaWFibGVOb2RlIiwibWV0YXZhcmlhYmxlUHJlc2VudCIsImlzVHlwZVByZXNlbnRCeU5vbWluYWxUeXBlTmFtZSIsInR5cGVQcmVzZW50IiwiaXNQcm9jZWR1cmVQcmVzZW50QnlQcm9jZWR1cmVOYW1lIiwicHJvY2VkdXJlUHJlc2VudCIsImlzRGVjbGFyZWRNZXRhdmFyaWFibGVQcmVzZW50QnlNZXRhdmFyaWFibGVOYW1lIiwiaXNSZWZlcmVuY2VQcmVzZW50QnlNZXRhdmFyaWFibGVOb2RlIiwibWV0dnZhcmlhYmxlTm9kZSIsInJlZmVyZW5jZVByZXNlbnQiLCJpc0luZmVycmVkU3Vic3RpdHV0aW9uUHJlc2VudEJ5TWV0YXZhcmlhYmxlTm9kZSIsImluZmVycmVkU3Vic3RpdHV0aW9uUHJlc2VudCIsImlzSW5mZXJyZWRTdWJzdGl0dXRpb25QcmVzZW50QnlNZXRhdmFyaWFibGVOb2RlQW5kU3Vic3RpdHV0aW9uTm9kZSIsImlzTWV0YUxldmVsIiwibWV0YUxldmVsIiwiYWRkVGVybXMiLCJhZGRBc3NlcnRpb25zIiwiYWRkTWV0YXZhcmlhYmxlcyIsImFkZEluZmVycmVkU3Vic3RpdHV0aW9ucyIsImFkZEF4aW9tIiwiYWRkTGVtbWEiLCJsZW1tYSIsImFkZFNjaGVtYSIsInNjaGVtYSIsImFkZFRoZW9yZW0iLCJ0aGVvcmVtIiwiYWRkQ29uamVjdHVyZSIsImNvbmplY3R1cmUiLCJhZGRSdWxlIiwiYWRkVGVybSIsImFkZEZyYW1lIiwiYWRkRXF1YWxpdHkiLCJhZGRBc3NlcnRpb24iLCJhZGRTdGF0ZW1lbnQiLCJhZGRTaWduYXR1cmUiLCJzaWduYXR1cmUiLCJhZGRSZWZlcmVuY2UiLCJhZGRBc3N1bXB0aW9uIiwiYWRkQXNzaWdubWVudCIsImFzc2lnbm1lbnQiLCJhZGRNZXRhdmFyaWFibGUiLCJhZGRTdWJzdGl0dXRpb24iLCJhZGREZWNsYXJlZFZhcmlhYmxlIiwiYWRkSW5mZXJyZWRTdWJzdGl0dXRpb24iLCJhZGREZWNsYXJlZE1ldGF2YXJpYWJsZSIsImFkZENvbnN0cmFpbnQiXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQUlBOzs7ZUFBcUJBOzs7Z0NBRmtCO0FBRXhCLE1BQU1BLGdCQUFnQkMsdUJBQVc7SUFDOUNDLFdBQVc7UUFDVCxNQUFNQyxVQUFVLElBQUksQ0FBQ0MsVUFBVSxJQUN6QkMsUUFBUUYsUUFBUUQsUUFBUTtRQUU5QixPQUFPRztJQUNUO0lBRUFDLFlBQVk7UUFDVixNQUFNSCxVQUFVLElBQUksQ0FBQ0MsVUFBVSxJQUN6QkcsU0FBU0osUUFBUUcsU0FBUztRQUVoQyxPQUFPQztJQUNUO0lBRUFDLGNBQWM7UUFDWixNQUFNTCxVQUFV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
|
package/lib/element/claim.js
CHANGED
|
@@ -120,9 +120,6 @@ class Claim extends _occamlanguages.Element {
|
|
|
120
120
|
const claimString = this.getString(), suppositionString = supposition.getString();
|
|
121
121
|
context.trace(`Verifying the '${claimString}' claim's '${suppositionString}' supposition...`);
|
|
122
122
|
return supposition.verify(context, (context, back)=>{
|
|
123
|
-
const factOrSubproof = supposition; ////
|
|
124
|
-
context.assignAssignments();
|
|
125
|
-
context.addFactOrSubproof(factOrSubproof);
|
|
126
123
|
context.debug(`...verified the '${claimString}' claim's '${suppositionString}' supposition.`);
|
|
127
124
|
return forward(context, back);
|
|
128
125
|
}, back);
|
|
@@ -135,7 +132,12 @@ class Claim extends _occamlanguages.Element {
|
|
|
135
132
|
const claimString = this.getString(); ///
|
|
136
133
|
context.trace(`Verifying the '${claimString}' claim's suppositions...`);
|
|
137
134
|
return forwardsEvery(this.suppositions, (supposition, context, forward, back)=>{
|
|
138
|
-
return this.verifySupposition(supposition, context,
|
|
135
|
+
return this.verifySupposition(supposition, context, (_, back)=>{
|
|
136
|
+
const factOrSubproof = supposition; ///
|
|
137
|
+
context.addFactOrSubproof(factOrSubproof);
|
|
138
|
+
context.assignAssignments();
|
|
139
|
+
return forward(context, back);
|
|
140
|
+
}, back);
|
|
139
141
|
}, context, (context, back)=>{
|
|
140
142
|
context.debug(`...verified the '${claimString}' claim's suppositions.`);
|
|
141
143
|
return forward(context, back);
|
|
@@ -254,4 +256,4 @@ class Claim extends _occamlanguages.Element {
|
|
|
254
256
|
}
|
|
255
257
|
}
|
|
256
258
|
|
|
257
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbGVtZW50L2NsYWltLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBhcnJheVV0aWxpdGllcyB9IGZyb20gXCJuZWNlc3NhcnlcIjtcbmltcG9ydCB7IEVsZW1lbnQsIGJyZWFrUG9pbnRVdGlsaXRpZXMsIGNvbnRpbnVhdGlvblV0aWxpdGllcyB9IGZyb20gXCJvY2NhbS1sYW5ndWFnZXNcIjtcblxuaW1wb3J0IHsgZW5jbG9zZSwgcmVjb25jaWxlIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9jb250ZXh0XCI7XG5pbXBvcnQgeyBjbGFpbVN0cmluZ0Zyb21MYWJlbHNTaWduYXR1cmVTdXBwb3NpdGlvbnNBbmREZWR1Y3Rpb24gfSBmcm9tIFwiLi4vdXRpbGl0aWVzL3N0cmluZ1wiO1xuaW1wb3J0IHsgbGFiZWxzRnJvbUpTT04sXG4gICAgICAgICBkZWR1Y3Rpb25Gcm9tSlNPTixcbiAgICAgICAgIHNpZ25hdHVyZUZyb21KU09OLFxuICAgICAgICAgbGFiZWxzVG9MYWJlbHNKU09OLFxuICAgICAgICAgaHlwb3RoZXNlc0Zyb21KU09OLFxuICAgICAgICAgc3VwcG9zaXRpb25zRnJvbUpTT04sXG4gICAgICAgICBkZWR1Y3Rpb25Ub0RlZHVjdGlvbkpTT04sXG4gICAgICAgICBzaWduYXR1cmVUb1NpZ25hdHVyZUpTT04sXG4gICAgICAgICBoeXBvdGhlc2VzVG9IeXBvdGhlc2VzSlNPTixcbiAgICAgICAgIHN1cHBvc2l0aW9uc1RvU3VwcG9zaXRpb25zSlNPTiB9IGZyb20gXCIuLi91dGlsaXRpZXMvanNvblwiO1xuXG5jb25zdCB7IHJldmVyc2UgfSA9IGFycmF5VXRpbGl0aWVzLFxuICAgICAgeyBicmVha1BvaW50RnJvbUpTT04sIGJyZWFrUG9pbnRUb0JyZWFrUG9pbnRKU09OIH0gPSBicmVha1BvaW50VXRpbGl0aWVzLFxuICAgICAgeyBhbGwsIGV2ZXJ5LCBleHRyYWN0LCBmb3J3YXJkc0V2ZXJ5LCBiYWNrd2FyZHNFdmVyeSB9ID0gY29udGludWF0aW9uVXRpbGl0aWVzO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBDbGFpbSBleHRlbmRzIEVsZW1lbnQge1xuICBjb25zdHJ1Y3Rvcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIGxhYmVscywgc3VwcG9zaXRpb25zLCBkZWR1Y3Rpb24sIHByb29mLCBzaWduYXR1cmUsIGh5cG90aGVzZXMpIHtcbiAgICBzdXBlcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQpO1xuXG4gICAgdGhpcy5sYWJlbHMgPSBsYWJlbHM7XG4gICAgdGhpcy5zdXBwb3NpdGlvbnMgPSBzdXBwb3NpdGlvbnM7XG4gICAgdGhpcy5kZWR1Y3Rpb24gPSBkZWR1Y3Rpb247XG4gICAgdGhpcy5wcm9vZiA9IHByb29mO1xuICAgIHRoaXMuc2lnbmF0dXJlID0gc2lnbmF0dXJlO1xuICAgIHRoaXMuaHlwb3RoZXNlcyA9IGh5cG90aGVzZXM7XG4gIH1cblxuICBnZXRMYWJlbHMoKSB7XG4gICAgcmV0dXJuIHRoaXMubGFiZWxzO1xuICB9XG5cbiAgZ2V0U3VwcG9zaXRpb25zKCkge1xuICAgIHJldHVybiB0aGlzLnN1cHBvc2l0aW9ucztcbiAgfVxuXG4gIGdldERlZHVjdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5kZWR1Y3Rpb247XG4gIH1cblxuICBnZXRQcm9vZigpIHtcbiAgICByZXR1cm4gdGhpcy5wcm9vZjtcbiAgfVxuXG4gIGdldFNpZ25hdHVyZSgpIHtcbiAgICByZXR1cm4gdGhpcy5zaWduYXR1cmU7XG4gIH1cblxuICBnZXRIeXBvdGhlc2VzKCkge1xuICAgIHJldHVybiB0aGlzLmh5cG90aGVzZXM7XG4gIH1cblxuICBzZXRIeXBvdGhlc2VzKGh5cG90aGVzZXMpIHtcbiAgICB0aGlzLmh5cG90aGVzZXMgPSBoeXBvdGhlc2VzO1xuICB9XG5cbiAgZ2V0U3VwcG9zaXRpb24oaW5kZXgpIHtcbiAgICBjb25zdCBzdXBwb3NpdGlvbiA9IHRoaXMuc3VwcG9zaXRpb25zW2luZGV4XSB8fCBudWxsO1xuXG4gICAgcmV0dXJuIHN1cHBvc2l0aW9uO1xuICB9XG5cbiAgaXNTYXRpc2ZpYWJsZSgpIHtcbiAgICBjb25zdCBzYXRpc2ZpYWJsZSA9IGZhbHNlO1xuXG4gICAgcmV0dXJuIHNhdGlzZmlhYmxlO1xuICB9XG5cbiAgaXNIeXBvdGhldGljYWwoKSB7XG4gICAgY29uc3QgaHlwb3RoZXNlc0xlbmd0aCA9IHRoaXMuaHlwb3RoZXNlcy5sZW5ndGgsXG4gICAgICAgICAgaHlwb3RoZXRpY2FsID0gKGh5cG90aGVzZXNMZW5ndGggPiAwKTtcblxuICAgIHJldHVybiBoeXBvdGhldGljYWw7XG4gIH1cblxuICBtYXRjaE1ldGF2YXJpYWJsZU5vZGUobWV0YXZhcmlhYmxlTm9kZSkge1xuICAgIGNvbnN0IG1ldGF2YXJpYWJsZU5vZGVNYXRjaGVzID0gdGhpcy5sYWJlbHMuc29tZSgobGFiZWwpID0+IHtcbiAgICAgIGNvbnN0IG1ldGF2YXJpYWJsZU5vZGVNYXRjaGVzID0gbGFiZWwubWF0Y2hNZXRhdmFyaWFibGVOb2RlKG1ldGF2YXJpYWJsZU5vZGUpO1xuXG4gICAgICBpZiAobWV0YXZhcmlhYmxlTm9kZU1hdGNoZXMpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gbWV0YXZhcmlhYmxlTm9kZU1hdGNoZXM7XG4gIH1cblxuICB2ZXJpZnlFeChjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgcmV0dXJuIGVuY2xvc2UoKGNvbnRleHQpID0+IHtcbiAgICAgIGNvbnN0IHZlcmlmeVByb29mID0gdGhpcy52ZXJpZnlQcm9vZi5iaW5kKHRoaXMpLFxuICAgICAgICAgICAgdmVyaWZ5TGFiZWxzID0gdGhpcy52ZXJpZnlMYWJlbHMuYmluZCh0aGlzKSxcbiAgICAgICAgICAgIHZlcmlmeURlZHVjdGlvbiA9IHRoaXMudmVyaWZ5RGVkdWN0aW9uLmJpbmQodGhpcyksXG4gICAgICAgICAgICB2ZXJpZnlTdXBwb3NpdGlvbnMgPSB0aGlzLnZlcmlmeVN1cHBvc2l0aW9ucy5iaW5kKHRoaXMpO1xuXG4gICAgICByZXR1cm4gYWxsKFtcbiAgICAgICAgdmVyaWZ5TGFiZWxzLFxuICAgICAgICB2ZXJpZnlTdXBwb3NpdGlvbnMsXG4gICAgICAgIHZlcmlmeURlZHVjdGlvbixcbiAgICAgICAgdmVyaWZ5UHJvb2ZcbiAgICAgIF0sIGNvbnRleHQsIGZvcndhcmQsIGJhY2spO1xuICAgIH0sIGNvbnRleHQpO1xuICB9XG5cbiAgdmVyaWZ5TGFiZWxzKGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBjbGFpbVN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7Y2xhaW1TdHJpbmd9JyBjbGFpbSdzIGxhYmVscy4uLmApO1xuXG4gICAgY29uc3QgdmVyaWZ5TGFiZWwgPSB0aGlzLnZlcmlmeUxhYmVsLmJpbmQodGhpcyk7XG5cbiAgICByZXR1cm4gZXZlcnkodGhpcy5sYWJlbHMsIHZlcmlmeUxhYmVsLCBjb250ZXh0LCAoY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke2NsYWltU3RyaW5nfScgY2xhaW0ncyBsYWJlbHMuYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKGNvbnRleHQsIGJhY2spO1xuICAgIH0sIGJhY2spO1xuICB9XG5cbiAgdmVyaWZ5TGFiZWwobGFiZWwsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBsYWJlbFN0cmluZyA9IGxhYmVsLmdldFN0cmluZygpLFxuICAgICAgICAgIGNsYWltU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke2NsYWltU3RyaW5nfScgY2xhaW0ncyAnJHtsYWJlbFN0cmluZ30nIGxhYmVsLi4uYCk7XG5cbiAgICByZXR1cm4gbGFiZWwudmVyaWZ5KChiYWNrKSA9PiB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7Y2xhaW1TdHJpbmd9JyBjbGFpbSdzICcke2xhYmVsU3RyaW5nfScgbGFiZWwuYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKGNvbnRleHQsIGJhY2spO1xuICAgIH0sIGJhY2spO1xuICB9XG5cbiAgdmVyaWZ5UHJvb2YoY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGlmICh0aGlzLnByb29mID09PSBudWxsKSB7XG4gICAgICByZXR1cm4gZm9yd2FyZChjb250ZXh0LCBiYWNrKTtcbiAgICB9XG5cbiAgICBjb25zdCBjbGFpbVN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7Y2xhaW1TdHJpbmd9JyBjbGFpbSdzIHByb29mLi4uYCk7XG5cbiAgICBjb25zdCBzdGF0ZW1lbnQgPSB0aGlzLmRlZHVjdGlvbi5nZXRTdGF0ZW1lbnQoKTtcblxuICAgIHJldHVybiB0aGlzLnByb29mLnZlcmlmeShzdGF0ZW1lbnQsIGNvbnRleHQsIChwcm9vZlZlcmlmaWVzKSA9PiB7XG4gICAgICBpZiAocHJvb2ZWZXJpZmllcykge1xuICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7Y2xhaW1TdHJpbmd9JyBjbGFpbSdzIHByb29mLmApO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gY29udGludWF0aW9uKHByb29mVmVyaWZpZXMsIGNvbnRleHQpO1xuICAgIH0pO1xuICB9XG5cbiAgdmVyaWZ5RGVkdWN0aW9uKGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBjbGFpbVN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCksIC8vL1xuICAgICAgICAgIGRlZHVjdGlvblN0cmluZyA9IHRoaXMuZGVkdWN0aW9uLmdldFN0cmluZygpO1xuXG4gICAgY29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHtjbGFpbVN0cmluZ30nIGNsYWltJ3MgJyR7ZGVkdWN0aW9uU3RyaW5nfScgZGVkdWN0aW9uLi4uYCk7XG5cbiAgICByZXR1cm4gdGhpcy5kZWR1Y3Rpb24udmVyaWZ5KGNvbnRleHQsIChjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7Y2xhaW1TdHJpbmd9JyBjbGFpbSdzICcke2RlZHVjdGlvblN0cmluZ30nIGRlZHVjdGlvbi5gKTtcblxuICAgICAgcmV0dXJuIGZvcndhcmQoY29udGV4dCwgYmFjayk7XG4gICAgfSwgYmFjayk7XG4gIH1cblxuICB2ZXJpZnlTdXBwb3NpdGlvbihzdXBwb3NpdGlvbiwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IGNsYWltU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKSwgLy8vXG4gICAgICAgICAgc3VwcG9zaXRpb25TdHJpbmcgPSBzdXBwb3NpdGlvbi5nZXRTdHJpbmcoKTtcblxuICAgIGNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7Y2xhaW1TdHJpbmd9JyBjbGFpbSdzICcke3N1cHBvc2l0aW9uU3RyaW5nfScgc3VwcG9zaXRpb24uLi5gKTtcblxuICAgIHJldHVybiBzdXBwb3NpdGlvbi52ZXJpZnkoY29udGV4dCwgKGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIGNvbnN0IGZhY3RPclN1YnByb29mID0gc3VwcG9zaXRpb247ICAvLy8vXG5cbiAgICAgIGNvbnRleHQuYXNzaWduQXNzaWdubWVudHMoKTtcblxuICAgICAgY29udGV4dC5hZGRGYWN0T3JTdWJwcm9vZihmYWN0T3JTdWJwcm9vZik7XG5cbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHtjbGFpbVN0cmluZ30nIGNsYWltJ3MgJyR7c3VwcG9zaXRpb25TdHJpbmd9JyBzdXBwb3NpdGlvbi5gKTtcblxuICAgICAgcmV0dXJuIGZvcndhcmQoY29udGV4dCwgYmFjayk7XG4gICAgfSwgYmFjayk7XG4gIH1cblxuICB2ZXJpZnlTdXBwb3NpdGlvbnMoY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IHN1cHBvc2l0aW9uc0xlbmd0aCA9IHRoaXMuc3VwcG9zaXRpb25zLmxlbmd0aDtcblxuICAgIGlmIChzdXBwb3NpdGlvbnNMZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiBmb3J3YXJkKGNvbnRleHQsIGJhY2spO1xuICAgIH1cblxuICAgIGNvbnN0IGNsYWltU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHtjbGFpbVN0cmluZ30nIGNsYWltJ3Mgc3VwcG9zaXRpb25zLi4uYCk7XG5cbiAgICByZXR1cm4gZm9yd2FyZHNFdmVyeSh0aGlzLnN1cHBvc2l0aW9ucywgKHN1cHBvc2l0aW9uLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy52ZXJpZnlTdXBwb3NpdGlvbihzdXBwb3NpdGlvbiwgY29udGV4dCwgZm9yd2FyZCwgYmFjayk7XG4gICAgfSwgY29udGV4dCwgKGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHtjbGFpbVN0cmluZ30nIGNsYWltJ3Mgc3VwcG9zaXRpb25zLmApO1xuXG4gICAgICByZXR1cm4gZm9yd2FyZChjb250ZXh0LCBiYWNrKTtcbiAgICB9LCBiYWNrKTtcbiAgfVxuXG4gIGRpc2NoYXJnZUh5cG90aGVzaXMoaHlwb3RoZXNpcywgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IGNsYWltU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKSwgLy8vXG4gICAgICAgICAgaHlwb3RoZXNpc1N0cmluZyA9IGh5cG90aGVzaXMuZ2V0U3RyaW5nKCk7XG5cbiAgICBjb250ZXh0LnRyYWNlKGBEaXNjaGFyZ2luZyB0aGUgJyR7Y2xhaW1TdHJpbmd9JyBjbGFpbSdzICcke2h5cG90aGVzaXNTdHJpbmd9JyBoeXBvdGhlc2lzLi4uYCk7XG5cbiAgICByZXR1cm4gaHlwb3RoZXNpcy5kaXNjaGFyZ2UoY29udGV4dCwgKGh5cG90aGVzaXNEaXNjaGFyZ2VzLCBjb250ZXh0KSA9PiB7XG4gICAgICBpZiAoaHlwb3RoZXNpc0Rpc2NoYXJnZXMpIHtcbiAgICAgICAgY29udGV4dC50cmFjZShgLi4uZGlzY2hhcmdlcyB0aGUgJyR7Y2xhaW1TdHJpbmd9JyBjbGFpbSdzICcke2h5cG90aGVzaXNTdHJpbmd9JyBoeXBvdGhlc2lzLmApO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gY29udGludWF0aW9uKGh5cG90aGVzaXNEaXNjaGFyZ2VzLCBjb250ZXh0KTtcbiAgICB9KTtcbiAgfVxuXG4gIGRpc2NoYXJnZUh5cG90aGVzZXMoY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IGh5cG90aGVzZXMgPSB0aGlzLmdldEh5cG90aGVzZXMoKSxcbiAgICAgICAgIGh5cG90aGVzZXNMZW5ndGggPSBoeXBvdGhlc2VzLmxlbmd0aDtcblxuICAgIGlmIChoeXBvdGhlc2VzTGVuZ3RoID09PSAwKSB7XG4gICAgICBjb25zdCBoeXBvdGhlc2VzRGlzY2hhcmdlZCA9IHRydWU7XG5cbiAgICAgIHJldHVybiBjb250aW51YXRpb24oaHlwb3RoZXNlc0Rpc2NoYXJnZWQsIGNvbnRleHQpO1xuICAgIH1cblxuICAgIGNvbnN0IGNsYWltU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBEaXNjaGFyZ2luZyB0aGUgJyR7Y2xhaW1TdHJpbmd9JyBjbGFpbSdzIGh5cG90aGVzZXMuLi5gKTtcblxuICAgIGNvbnN0IGRpc2NoYXJnZUh5cG90aGVzaXMgPSB0aGlzLmRpc2NoYXJnZUh5cG90aGVzaXMuYmluZCh0aGlzKTtcblxuICAgIHJldHVybiBldmVyeShoeXBvdGhlc2VzLCBkaXNjaGFyZ2VIeXBvdGhlc2lzLCBjb250ZXh0LCAoaHlwb3RoZXNlc0Rpc2NoYXJnZWQpID0+IHtcbiAgICAgIGlmIChoeXBvdGhlc2VzRGlzY2hhcmdlZCkge1xuICAgICAgICBjb250ZXh0LnRyYWNlKGAuLi5kaXNjaGFyZ2VkIHRoZSAnJHtjbGFpbVN0cmluZ30nIGNsYWltJ3MgaHlwb3RoZXNlcy5gKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbihoeXBvdGhlc2VzRGlzY2hhcmdlZCwgY29udGV4dCk7XG4gICAgfSk7XG4gIH1cblxuICB1bmlmeVN0ZXBXaXRoRGVkdWN0aW9uKHN0ZXAsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBydWxlU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKSxcbiAgICAgICAgICBzdGVwU3RyaW5nID0gc3RlcC5nZXRTdHJpbmcoKSxcbiAgICAgICAgICBkZWR1Y3Rpb25TdHJpbmcgPSB0aGlzLmRlZHVjdGlvbi5nZXRTdHJpbmcoKTtcblxuICAgIGNvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHtzdGVwU3RyaW5nfScgc3RlcCB3aXRoIHRoZSAnJHtydWxlU3RyaW5nfScgcnVsZSdzICcke2RlZHVjdGlvblN0cmluZ30nIGRlZHVjdGlvbi4uLmApO1xuXG4gICAgcmV0dXJuIHRoaXMuZGVkdWN0aW9uLnVuaWZ5U3RlcChzdGVwLCBjb250ZXh0LCAoc3RlcFVuaWZpZXMpID0+IHtcbiAgICAgIGxldCBzdGVwVW5pZmllc1dpdGhEZWR1Y3Rpb24gPSBmYWxzZTtcblxuICAgICAgaWYgKHN0ZXBVbmlmaWVzKSB7XG4gICAgICAgIHN0ZXBVbmlmaWVzV2l0aERlZHVjdGlvbiA9IHRydWU7XG4gICAgICB9XG5cbiAgICAgIGlmIChzdGVwVW5pZmllc1dpdGhEZWR1Y3Rpb24pIHtcbiAgICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udW5pZmllZCB0aGUgJyR7c3RlcFN0cmluZ30nIHN0ZXAgd2l0aCB0aGUgJyR7cnVsZVN0cmluZ30nIHJ1bGUncyAnJHtkZWR1Y3Rpb25TdHJpbmd9JyBkZWR1Y3Rpb24uYCk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBjb250aW51YXRpb24oc3RlcFVuaWZpZXNXaXRoRGVkdWN0aW9uLCBjb250ZXh0KTtcbiAgICB9KTtcbiAgfVxuXG4gIHVuaWZ5U3RlcEFuZEZhY3RPclN1YnByb29mcyhzdGVwLCBmYWN0b3JTdWJwcm9vZnMsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICByZXR1cm4gcmVjb25jaWxlKChjb250ZXh0KSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy51bmlmeVN0ZXBXaXRoRGVkdWN0aW9uKHN0ZXAsIGNvbnRleHQsIChzdGF0ZW1lbnRVbmlmaWVzV2l0aERlZHVjdGlvbikgPT4ge1xuICAgICAgICBpZiAoIXN0YXRlbWVudFVuaWZpZXNXaXRoRGVkdWN0aW9uKSB7XG4gICAgICAgICAgY29uc3Qgc3RlcEFuZEZhY3RPclN1YnByb29mc1VuaWZ5ID0gZmFsc2U7XG5cbiAgICAgICAgICByZXR1cm4gY29udGludWF0aW9uKHN0ZXBBbmRGYWN0T3JTdWJwcm9vZnNVbmlmeSwgY29udGV4dCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5kaXNjaGFyZ2VIeXBvdGhlc2VzKGNvbnRleHQsIChoeXBvdGhlc2VzRGlzY2hhcmdlKSA9PiB7XG4gICAgICAgICAgaWYgKCFoeXBvdGhlc2VzRGlzY2hhcmdlKSB7XG4gICAgICAgICAgICBjb25zdCBzdGVwQW5kRmFjdE9yU3VicHJvb2ZzVW5pZnkgPSBmYWxzZTtcblxuICAgICAgICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbihzdGVwQW5kRmFjdE9yU3VicHJvb2ZzVW5pZnkpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiB0aGlzLnVuaWZ5RmFjdE9yU3VicHJvb2ZzV2l0aFN1cHBvc2l0aW9ucyhmYWN0b3JTdWJwcm9vZnMsIGNvbnRleHQsIChmYWN0b3JTdWJwcm9vZnNVbmlmaWVzV2l0aFN1cHBvc2l0aW9ucykgPT4ge1xuICAgICAgICAgICAgbGV0IHN0ZXBBbmRGYWN0T3JTdWJwcm9vZnNVbmlmeSA9IGZhbHNlO1xuXG4gICAgICAgICAgICBpZiAoZmFjdG9yU3VicHJvb2ZzVW5pZmllc1dpdGhTdXBwb3NpdGlvbnMpIHtcbiAgICAgICAgICAgICAgY29uc3QgaW5mZXJyZWRTdWJzdGl0dXRpb25zU29sdmVkID0gY29udGV4dC5hcmVJbmZlcnJlZFN1YnN0aXR1dGlvbnNTb2x2ZWQoKTtcblxuICAgICAgICAgICAgICBpZiAoaW5mZXJyZWRTdWJzdGl0dXRpb25zU29sdmVkKSB7XG4gICAgICAgICAgICAgICAgc3RlcEFuZEZhY3RPclN1YnByb29mc1VuaWZ5ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gY29udGludWF0aW9uKHN0ZXBBbmRGYWN0T3JTdWJwcm9vZnNVbmlmeSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSwgY29udGV4dCk7XG4gIH1cblxuICB1bmlmeUZhY3RPclN1YnByb29mc1dpdGhTdXBwb3NpdGlvbihmYWN0T3JTdWJwcm9vZnMsIHN1cHBvc2l0aW9uLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgcmV0dXJuIGV4dHJhY3QoZmFjdE9yU3VicHJvb2ZzLFxuICAgICAgKGZhY3RPclN1YnByb29mLCBmb3J3YXJkLCBiYWNrKSA9PiB7XG4gICAgICAgIHJldHVybiBzdXBwb3NpdGlvbi51bmlmeUZhY3RPclN1YnByb29mKGZhY3RPclN1YnByb29mLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKTtcbiAgICAgIH0sIChmYWN0T3JTdWJwcm9vZnMsIGZhY3RPclN1YnByb29mLCBjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICAgIHJldHVybiBjb250ZXh0LnNvbHZlSW5mZXJyZWRTdWJzdGl0dXRpb25zKChiYWNrKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGZvcndhcmQoZmFjdE9yU3VicHJvb2ZzLCBjb250ZXh0LCBiYWNrKTtcbiAgICAgICAgfSwgYmFjayk7XG4gICAgICB9LCAoZXhjZXB0aW9uKSA9PiB7XG4gICAgICAgIGlmKGV4Y2VwdGlvbikge1xuICAgICAgICAgIHJldHVybiBiYWNrKGV4Y2VwdGlvbik7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gc3VwcG9zaXRpb24udW5pZnlJbmRlcGVuZGVudGx5KGNvbnRleHQsIChjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGZvcndhcmQoZmFjdE9yU3VicHJvb2ZzLCBjb250ZXh0LCBiYWNrKTtcbiAgICAgICAgfSwgYmFjayk7XG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIHVuaWZ5RmFjdE9yU3VicHJvb2ZzV2l0aFN1cHBvc2l0aW9ucyhmYWN0T3JTdWJwcm9vZnMsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBmYWN0T3JTdWJwcm9vZnMgPSByZXZlcnNlKGZhY3RPclN1YnByb29mcyk7IC8vL1xuXG4gICAgcmV0dXJuIGJhY2t3YXJkc0V2ZXJ5KHRoaXMuc3VwcG9zaXRpb25zLCAoc3VwcG9zaXRpb24sIGZhY3RPclN1YnByb29mcywgY29udGV4dCwgZm9yd2FyZCwgYmFjaykgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMudW5pZnlGYWN0T3JTdWJwcm9vZnNXaXRoU3VwcG9zaXRpb24oZmFjdE9yU3VicHJvb2ZzLCBzdXBwb3NpdGlvbiwgY29udGV4dCwgZm9yd2FyZCwgYmFjayk7XG4gICAgfSwgZmFjdE9yU3VicHJvb2ZzLCBjb250ZXh0LCAoZmFjdE9yU3VicHJvb2ZzLCBjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICByZXR1cm4gZm9yd2FyZChjb250ZXh0LCBiYWNrKTtcbiAgICB9LCBiYWNrKTtcbiAgfVxuXG4gIHRvSlNPTigpIHtcbiAgICBjb25zdCBsYWJlbHNKU09OID0gbGFiZWxzVG9MYWJlbHNKU09OKHRoaXMubGFiZWxzKSxcbiAgICAgICAgICBkZWR1Y3Rpb25KU09OID0gZGVkdWN0aW9uVG9EZWR1Y3Rpb25KU09OKHRoaXMuZGVkdWN0aW9uKSxcbiAgICAgICAgICBzdXBwb3NpdGlvbnNKU09OID0gc3VwcG9zaXRpb25zVG9TdXBwb3NpdGlvbnNKU09OKHRoaXMuc3VwcG9zaXRpb25zKSxcbiAgICAgICAgICBzaWduYXR1cmVKU09OID0gc2lnbmF0dXJlVG9TaWduYXR1cmVKU09OKHRoaXMuc2lnbmF0dXJlKSxcbiAgICAgICAgICBoeXBvdGhlc2VzSlNPTiA9IGh5cG90aGVzZXNUb0h5cG90aGVzZXNKU09OKHRoaXMuaHlwb3RoZXNlcyksXG4gICAgICAgICAgc3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTtcblxuICAgIGxldCBicmVha1BvaW50O1xuXG4gICAgYnJlYWtQb2ludCA9IHRoaXMuZ2V0QnJlYWtQb2ludCgpO1xuXG4gICAgY29uc3QgYnJlYWtQb2ludEpTT04gPSBicmVha1BvaW50VG9CcmVha1BvaW50SlNPTihicmVha1BvaW50KTtcblxuICAgIGJyZWFrUG9pbnQgPSBicmVha1BvaW50SlNPTjsgIC8vL1xuXG4gICAgY29uc3QgbGFiZWxzID0gbGFiZWxzSlNPTiwgIC8vL1xuICAgICAgICAgIGRlZHVjdGlvbiA9IGRlZHVjdGlvbkpTT04sICAvLy9cbiAgICAgICAgICBzdXBwb3NpdGlvbnMgPSBzdXBwb3NpdGlvbnNKU09OLCAgLy8vXG4gICAgICAgICAgc2lnbmF0dXJlID0gc2lnbmF0dXJlSlNPTiwgIC8vL1xuICAgICAgICAgIGh5cG90aGVzZXMgPSBoeXBvdGhlc2VzSlNPTiwgIC8vL1xuICAgICAgICAgIGpzb24gPSB7XG4gICAgICAgICAgICBzdHJpbmcsXG4gICAgICAgICAgICBicmVha1BvaW50LFxuICAgICAgICAgICAgbGFiZWxzLFxuICAgICAgICAgICAgZGVkdWN0aW9uLFxuICAgICAgICAgICAgc3VwcG9zaXRpb25zLFxuICAgICAgICAgICAgc2lnbmF0dXJlLFxuICAgICAgICAgICAgaHlwb3RoZXNlc1xuICAgICAgICAgIH07XG5cbiAgICByZXR1cm4ganNvbjtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tSlNPTihDbGFzcywganNvbiwgY29udGV4dCkge1xuICAgIGNvbnN0IGxhYmVscyA9IGxhYmVsc0Zyb21KU09OKGpzb24sIGNvbnRleHQpLFxuICAgICAgICAgIGRlZHVjdGlvbiA9IGRlZHVjdGlvbkZyb21KU09OKGpzb24sIGNvbnRleHQpLFxuICAgICAgICAgIHN1cHBvc2l0aW9ucyA9IHN1cHBvc2l0aW9uc0Zyb21KU09OKGpzb24sIGNvbnRleHQpLFxuICAgICAgICAgIHNpZ25hdHVyZSA9IHNpZ25hdHVyZUZyb21KU09OKGpzb24sIGNvbnRleHQpLFxuICAgICAgICAgIGh5cG90aGVzZXMgPSBoeXBvdGhlc2VzRnJvbUpTT04oanNvbiwgY29udGV4dCksXG4gICAgICAgICAgY2xhaW1TdHJpbmcgPSBjbGFpbVN0cmluZ0Zyb21MYWJlbHNTaWduYXR1cmVTdXBwb3NpdGlvbnNBbmREZWR1Y3Rpb24obGFiZWxzLCBzaWduYXR1cmUsIHN1cHBvc2l0aW9ucywgZGVkdWN0aW9uKSxcbiAgICAgICAgICBzdHJpbmcgPSBjbGFpbVN0cmluZywgLy8vXG4gICAgICAgICAgbm9kZSA9IG51bGwsXG4gICAgICAgICAgYnJlYWtQb2ludCA9IGJyZWFrUG9pbnRGcm9tSlNPTihqc29uKSxcbiAgICAgICAgICBwcm9vZiA9IG51bGwsXG4gICAgICAgICAgY2xhaW0gPSBuZXcgQ2xhc3MoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCBsYWJlbHMsIHN1cHBvc2l0aW9ucywgZGVkdWN0aW9uLCBwcm9vZiwgc2lnbmF0dXJlLCBoeXBvdGhlc2VzKTtcblxuICAgIHJldHVybiBjbGFpbTtcbiAgfVxufVxuIl0sIm5hbWVzIjpbIkNsYWltIiwicmV2ZXJzZSIsImFycmF5VXRpbGl0aWVzIiwiYnJlYWtQb2ludEZyb21KU09OIiwiYnJlYWtQb2ludFRvQnJlYWtQb2ludEpTT04iLCJicmVha1BvaW50VXRpbGl0aWVzIiwiYWxsIiwiZXZlcnkiLCJleHRyYWN0IiwiZm9yd2FyZHNFdmVyeSIsImJhY2t3YXJkc0V2ZXJ5IiwiY29udGludWF0aW9uVXRpbGl0aWVzIiwiRWxlbWVudCIsImNvbnRleHQiLCJzdHJpbmciLCJub2RlIiwiYnJlYWtQb2ludCIsImxhYmVscyIsInN1cHBvc2l0aW9ucyIsImRlZHVjdGlvbiIsInByb29mIiwic2lnbmF0dXJlIiwiaHlwb3RoZXNlcyIsImdldExhYmVscyIsImdldFN1cHBvc2l0aW9ucyIsImdldERlZHVjdGlvbiIsImdldFByb29mIiwiZ2V0U2lnbmF0dXJlIiwiZ2V0SHlwb3RoZXNlcyIsInNldEh5cG90aGVzZXMiLCJnZXRTdXBwb3NpdGlvbiIsImluZGV4Iiwic3VwcG9zaXRpb24iLCJpc1NhdGlzZmlhYmxlIiwic2F0aXNmaWFibGUiLCJpc0h5cG90aGV0aWNhbCIsImh5cG90aGVzZXNMZW5ndGgiLCJsZW5ndGgiLCJoeXBvdGhldGljYWwiLCJtYXRjaE1ldGF2YXJpYWJsZU5vZGUiLCJtZXRhdmFyaWFibGVOb2RlIiwibWV0YXZhcmlhYmxlTm9kZU1hdGNoZXMiLCJzb21lIiwibGFiZWwiLCJ2ZXJpZnlFeCIsImZvcndhcmQiLCJiYWNrIiwiZW5jbG9zZSIsInZlcmlmeVByb29mIiwiYmluZCIsInZlcmlmeUxhYmVscyIsInZlcmlmeURlZHVjdGlvbiIsInZlcmlmeVN1cHBvc2l0aW9ucyIsImNsYWltU3RyaW5nIiwiZ2V0U3RyaW5nIiwidHJhY2UiLCJ2ZXJpZnlMYWJlbCIsImRlYnVnIiwibGFiZWxTdHJpbmciLCJ2ZXJpZnkiLCJzdGF0ZW1lbnQiLCJnZXRTdGF0ZW1lbnQiLCJwcm9vZlZlcmlmaWVzIiwiY29udGludWF0aW9uIiwiZGVkdWN0aW9uU3RyaW5nIiwidmVyaWZ5U3VwcG9zaXRpb24iLCJzdXBwb3NpdGlvblN0cmluZyIsImZhY3RPclN1YnByb29mIiwiYXNzaWduQXNzaWdubWVudHMiLCJhZGRGYWN0T3JTdWJwcm9vZiIsInN1cHBvc2l0aW9uc0xlbmd0aCIsImRpc2NoYXJnZUh5cG90aGVzaXMiLCJoeXBvdGhlc2lzIiwiaHlwb3RoZXNpc1N0cmluZyIsImRpc2NoYXJnZSIsImh5cG90aGVzaXNEaXNjaGFyZ2VzIiwiZGlzY2hhcmdlSHlwb3RoZXNlcyIsImh5cG90aGVzZXNEaXNjaGFyZ2VkIiwidW5pZnlTdGVwV2l0aERlZHVjdGlvbiIsInN0ZXAiLCJydWxlU3RyaW5nIiwic3RlcFN0cmluZyIsInVuaWZ5U3RlcCIsInN0ZXBVbmlmaWVzIiwic3RlcFVuaWZpZXNXaXRoRGVkdWN0aW9uIiwidW5pZnlTdGVwQW5kRmFjdE9yU3VicHJvb2ZzIiwiZmFjdG9yU3VicHJvb2ZzIiwicmVjb25jaWxlIiwic3RhdGVtZW50VW5pZmllc1dpdGhEZWR1Y3Rpb24iLCJzdGVwQW5kRmFjdE9yU3VicHJvb2ZzVW5pZnkiLCJoeXBvdGhlc2VzRGlzY2hhcmdlIiwidW5pZnlGYWN0T3JTdWJwcm9vZnNXaXRoU3VwcG9zaXRpb25zIiwiZmFjdG9yU3VicHJvb2ZzVW5pZmllc1dpdGhTdXBwb3NpdGlvbnMiLCJpbmZlcnJlZFN1YnN0aXR1dGlvbnNTb2x2ZWQiLCJhcmVJbmZlcnJlZFN1YnN0aXR1dGlvbnNTb2x2ZWQiLCJ1bmlmeUZhY3RPclN1YnByb29mc1dpdGhTdXBwb3NpdGlvbiIsImZhY3RPclN1YnByb29mcyIsInVuaWZ5RmFjdE9yU3VicHJvb2YiLCJzb2x2ZUluZmVycmVkU3Vic3RpdHV0aW9ucyIsImV4Y2VwdGlvbiIsInVuaWZ5SW5kZXBlbmRlbnRseSIsInRvSlNPTiIsImxhYmVsc0pTT04iLCJsYWJlbHNUb0xhYmVsc0pTT04iLCJkZWR1Y3Rpb25KU09OIiwiZGVkdWN0aW9uVG9EZWR1Y3Rpb25KU09OIiwic3VwcG9zaXRpb25zSlNPTiIsInN1cHBvc2l0aW9uc1RvU3VwcG9zaXRpb25zSlNPTiIsInNpZ25hdHVyZUpTT04iLCJzaWduYXR1cmVUb1NpZ25hdHVyZUpTT04iLCJoeXBvdGhlc2VzSlNPTiIsImh5cG90aGVzZXNUb0h5cG90aGVzZXNKU09OIiwiZ2V0QnJlYWtQb2ludCIsImJyZWFrUG9pbnRKU09OIiwianNvbiIsImZyb21KU09OIiwiQ2xhc3MiLCJsYWJlbHNGcm9tSlNPTiIsImRlZHVjdGlvbkZyb21KU09OIiwic3VwcG9zaXRpb25zRnJvbUpTT04iLCJzaWduYXR1cmVGcm9tSlNPTiIsImh5cG90aGVzZXNGcm9tSlNPTiIsImNsYWltU3RyaW5nRnJvbUxhYmVsc1NpZ25hdHVyZVN1cHBvc2l0aW9uc0FuZERlZHVjdGlvbiIsImNsYWltIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFzQkE7OztlQUFxQkE7OzsyQkFwQlU7Z0NBQ3FDO3lCQUVqQzt3QkFDb0M7c0JBVXhCO0FBRS9DLE1BQU0sRUFBRUMsT0FBTyxFQUFFLEdBQUdDLHlCQUFjLEVBQzVCLEVBQUVDLGtCQUFrQixFQUFFQywwQkFBMEIsRUFBRSxHQUFHQyxtQ0FBbUIsRUFDeEUsRUFBRUMsR0FBRyxFQUFFQyxLQUFLLEVBQUVDLE9BQU8sRUFBRUMsYUFBYSxFQUFFQyxjQUFjLEVBQUUsR0FBR0MscUNBQXFCO0FBRXJFLE1BQU1YLGNBQWNZLHVCQUFPO0lBQ3hDLFlBQVlDLE9BQU8sRUFBRUMsTUFBTSxFQUFFQyxJQUFJLEVBQUVDLFVBQVUsRUFBRUMsTUFBTSxFQUFFQyxZQUFZLEVBQUVDLFNBQVMsRUFBRUMsS0FBSyxFQUFFQyxTQUFTLEVBQUVDLFVBQVUsQ0FBRTtRQUM1RyxLQUFLLENBQUNULFNBQVNDLFFBQVFDLE1BQU1DO1FBRTdCLElBQUksQ0FBQ0MsTUFBTSxHQUFHQTtRQUNkLElBQUksQ0FBQ0MsWUFBWSxHQUFHQTtRQUNwQixJQUFJLENBQUNDLFNBQVMsR0FBR0E7UUFDakIsSUFBSSxDQUFDQyxLQUFLLEdBQUdBO1FBQ2IsSUFBSSxDQUFDQyxTQUFTLEdBQUdBO1FBQ2pCLElBQUksQ0FBQ0MsVUFBVSxHQUFHQTtJQUNwQjtJQUVBQyxZQUFZO1FBQ1YsT0FBTyxJQUFJLENBQUNOLE1BQU07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
|
|
259
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbGVtZW50L2NsYWltLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBhcnJheVV0aWxpdGllcyB9IGZyb20gXCJuZWNlc3NhcnlcIjtcbmltcG9ydCB7IEVsZW1lbnQsIGJyZWFrUG9pbnRVdGlsaXRpZXMsIGNvbnRpbnVhdGlvblV0aWxpdGllcyB9IGZyb20gXCJvY2NhbS1sYW5ndWFnZXNcIjtcblxuaW1wb3J0IHsgZW5jbG9zZSwgcmVjb25jaWxlIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9jb250ZXh0XCI7XG5pbXBvcnQgeyBjbGFpbVN0cmluZ0Zyb21MYWJlbHNTaWduYXR1cmVTdXBwb3NpdGlvbnNBbmREZWR1Y3Rpb24gfSBmcm9tIFwiLi4vdXRpbGl0aWVzL3N0cmluZ1wiO1xuaW1wb3J0IHsgbGFiZWxzRnJvbUpTT04sXG4gICAgICAgICBkZWR1Y3Rpb25Gcm9tSlNPTixcbiAgICAgICAgIHNpZ25hdHVyZUZyb21KU09OLFxuICAgICAgICAgbGFiZWxzVG9MYWJlbHNKU09OLFxuICAgICAgICAgaHlwb3RoZXNlc0Zyb21KU09OLFxuICAgICAgICAgc3VwcG9zaXRpb25zRnJvbUpTT04sXG4gICAgICAgICBkZWR1Y3Rpb25Ub0RlZHVjdGlvbkpTT04sXG4gICAgICAgICBzaWduYXR1cmVUb1NpZ25hdHVyZUpTT04sXG4gICAgICAgICBoeXBvdGhlc2VzVG9IeXBvdGhlc2VzSlNPTixcbiAgICAgICAgIHN1cHBvc2l0aW9uc1RvU3VwcG9zaXRpb25zSlNPTiB9IGZyb20gXCIuLi91dGlsaXRpZXMvanNvblwiO1xuXG5jb25zdCB7IHJldmVyc2UgfSA9IGFycmF5VXRpbGl0aWVzLFxuICAgICAgeyBicmVha1BvaW50RnJvbUpTT04sIGJyZWFrUG9pbnRUb0JyZWFrUG9pbnRKU09OIH0gPSBicmVha1BvaW50VXRpbGl0aWVzLFxuICAgICAgeyBhbGwsIGV2ZXJ5LCBleHRyYWN0LCBmb3J3YXJkc0V2ZXJ5LCBiYWNrd2FyZHNFdmVyeSB9ID0gY29udGludWF0aW9uVXRpbGl0aWVzO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBDbGFpbSBleHRlbmRzIEVsZW1lbnQge1xuICBjb25zdHJ1Y3Rvcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIGxhYmVscywgc3VwcG9zaXRpb25zLCBkZWR1Y3Rpb24sIHByb29mLCBzaWduYXR1cmUsIGh5cG90aGVzZXMpIHtcbiAgICBzdXBlcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQpO1xuXG4gICAgdGhpcy5sYWJlbHMgPSBsYWJlbHM7XG4gICAgdGhpcy5zdXBwb3NpdGlvbnMgPSBzdXBwb3NpdGlvbnM7XG4gICAgdGhpcy5kZWR1Y3Rpb24gPSBkZWR1Y3Rpb247XG4gICAgdGhpcy5wcm9vZiA9IHByb29mO1xuICAgIHRoaXMuc2lnbmF0dXJlID0gc2lnbmF0dXJlO1xuICAgIHRoaXMuaHlwb3RoZXNlcyA9IGh5cG90aGVzZXM7XG4gIH1cblxuICBnZXRMYWJlbHMoKSB7XG4gICAgcmV0dXJuIHRoaXMubGFiZWxzO1xuICB9XG5cbiAgZ2V0U3VwcG9zaXRpb25zKCkge1xuICAgIHJldHVybiB0aGlzLnN1cHBvc2l0aW9ucztcbiAgfVxuXG4gIGdldERlZHVjdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5kZWR1Y3Rpb247XG4gIH1cblxuICBnZXRQcm9vZigpIHtcbiAgICByZXR1cm4gdGhpcy5wcm9vZjtcbiAgfVxuXG4gIGdldFNpZ25hdHVyZSgpIHtcbiAgICByZXR1cm4gdGhpcy5zaWduYXR1cmU7XG4gIH1cblxuICBnZXRIeXBvdGhlc2VzKCkge1xuICAgIHJldHVybiB0aGlzLmh5cG90aGVzZXM7XG4gIH1cblxuICBzZXRIeXBvdGhlc2VzKGh5cG90aGVzZXMpIHtcbiAgICB0aGlzLmh5cG90aGVzZXMgPSBoeXBvdGhlc2VzO1xuICB9XG5cbiAgZ2V0U3VwcG9zaXRpb24oaW5kZXgpIHtcbiAgICBjb25zdCBzdXBwb3NpdGlvbiA9IHRoaXMuc3VwcG9zaXRpb25zW2luZGV4XSB8fCBudWxsO1xuXG4gICAgcmV0dXJuIHN1cHBvc2l0aW9uO1xuICB9XG5cbiAgaXNTYXRpc2ZpYWJsZSgpIHtcbiAgICBjb25zdCBzYXRpc2ZpYWJsZSA9IGZhbHNlO1xuXG4gICAgcmV0dXJuIHNhdGlzZmlhYmxlO1xuICB9XG5cbiAgaXNIeXBvdGhldGljYWwoKSB7XG4gICAgY29uc3QgaHlwb3RoZXNlc0xlbmd0aCA9IHRoaXMuaHlwb3RoZXNlcy5sZW5ndGgsXG4gICAgICAgICAgaHlwb3RoZXRpY2FsID0gKGh5cG90aGVzZXNMZW5ndGggPiAwKTtcblxuICAgIHJldHVybiBoeXBvdGhldGljYWw7XG4gIH1cblxuICBtYXRjaE1ldGF2YXJpYWJsZU5vZGUobWV0YXZhcmlhYmxlTm9kZSkge1xuICAgIGNvbnN0IG1ldGF2YXJpYWJsZU5vZGVNYXRjaGVzID0gdGhpcy5sYWJlbHMuc29tZSgobGFiZWwpID0+IHtcbiAgICAgIGNvbnN0IG1ldGF2YXJpYWJsZU5vZGVNYXRjaGVzID0gbGFiZWwubWF0Y2hNZXRhdmFyaWFibGVOb2RlKG1ldGF2YXJpYWJsZU5vZGUpO1xuXG4gICAgICBpZiAobWV0YXZhcmlhYmxlTm9kZU1hdGNoZXMpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gbWV0YXZhcmlhYmxlTm9kZU1hdGNoZXM7XG4gIH1cblxuICB2ZXJpZnlFeChjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgcmV0dXJuIGVuY2xvc2UoKGNvbnRleHQpID0+IHtcbiAgICAgIGNvbnN0IHZlcmlmeVByb29mID0gdGhpcy52ZXJpZnlQcm9vZi5iaW5kKHRoaXMpLFxuICAgICAgICAgICAgdmVyaWZ5TGFiZWxzID0gdGhpcy52ZXJpZnlMYWJlbHMuYmluZCh0aGlzKSxcbiAgICAgICAgICAgIHZlcmlmeURlZHVjdGlvbiA9IHRoaXMudmVyaWZ5RGVkdWN0aW9uLmJpbmQodGhpcyksXG4gICAgICAgICAgICB2ZXJpZnlTdXBwb3NpdGlvbnMgPSB0aGlzLnZlcmlmeVN1cHBvc2l0aW9ucy5iaW5kKHRoaXMpO1xuXG4gICAgICByZXR1cm4gYWxsKFtcbiAgICAgICAgdmVyaWZ5TGFiZWxzLFxuICAgICAgICB2ZXJpZnlTdXBwb3NpdGlvbnMsXG4gICAgICAgIHZlcmlmeURlZHVjdGlvbixcbiAgICAgICAgdmVyaWZ5UHJvb2ZcbiAgICAgIF0sIGNvbnRleHQsIGZvcndhcmQsIGJhY2spO1xuICAgIH0sIGNvbnRleHQpO1xuICB9XG5cbiAgdmVyaWZ5TGFiZWxzKGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBjbGFpbVN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7Y2xhaW1TdHJpbmd9JyBjbGFpbSdzIGxhYmVscy4uLmApO1xuXG4gICAgY29uc3QgdmVyaWZ5TGFiZWwgPSB0aGlzLnZlcmlmeUxhYmVsLmJpbmQodGhpcyk7XG5cbiAgICByZXR1cm4gZXZlcnkodGhpcy5sYWJlbHMsIHZlcmlmeUxhYmVsLCBjb250ZXh0LCAoY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke2NsYWltU3RyaW5nfScgY2xhaW0ncyBsYWJlbHMuYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKGNvbnRleHQsIGJhY2spO1xuICAgIH0sIGJhY2spO1xuICB9XG5cbiAgdmVyaWZ5TGFiZWwobGFiZWwsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBsYWJlbFN0cmluZyA9IGxhYmVsLmdldFN0cmluZygpLFxuICAgICAgICAgIGNsYWltU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke2NsYWltU3RyaW5nfScgY2xhaW0ncyAnJHtsYWJlbFN0cmluZ30nIGxhYmVsLi4uYCk7XG5cbiAgICByZXR1cm4gbGFiZWwudmVyaWZ5KChiYWNrKSA9PiB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7Y2xhaW1TdHJpbmd9JyBjbGFpbSdzICcke2xhYmVsU3RyaW5nfScgbGFiZWwuYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKGNvbnRleHQsIGJhY2spO1xuICAgIH0sIGJhY2spO1xuICB9XG5cbiAgdmVyaWZ5UHJvb2YoY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGlmICh0aGlzLnByb29mID09PSBudWxsKSB7XG4gICAgICByZXR1cm4gZm9yd2FyZChjb250ZXh0LCBiYWNrKTtcbiAgICB9XG5cbiAgICBjb25zdCBjbGFpbVN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7Y2xhaW1TdHJpbmd9JyBjbGFpbSdzIHByb29mLi4uYCk7XG5cbiAgICBjb25zdCBzdGF0ZW1lbnQgPSB0aGlzLmRlZHVjdGlvbi5nZXRTdGF0ZW1lbnQoKTtcblxuICAgIHJldHVybiB0aGlzLnByb29mLnZlcmlmeShzdGF0ZW1lbnQsIGNvbnRleHQsIChwcm9vZlZlcmlmaWVzKSA9PiB7XG4gICAgICBpZiAocHJvb2ZWZXJpZmllcykge1xuICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7Y2xhaW1TdHJpbmd9JyBjbGFpbSdzIHByb29mLmApO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gY29udGludWF0aW9uKHByb29mVmVyaWZpZXMsIGNvbnRleHQpO1xuICAgIH0pO1xuICB9XG5cbiAgdmVyaWZ5RGVkdWN0aW9uKGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBjbGFpbVN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCksIC8vL1xuICAgICAgICAgIGRlZHVjdGlvblN0cmluZyA9IHRoaXMuZGVkdWN0aW9uLmdldFN0cmluZygpO1xuXG4gICAgY29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHtjbGFpbVN0cmluZ30nIGNsYWltJ3MgJyR7ZGVkdWN0aW9uU3RyaW5nfScgZGVkdWN0aW9uLi4uYCk7XG5cbiAgICByZXR1cm4gdGhpcy5kZWR1Y3Rpb24udmVyaWZ5KGNvbnRleHQsIChjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7Y2xhaW1TdHJpbmd9JyBjbGFpbSdzICcke2RlZHVjdGlvblN0cmluZ30nIGRlZHVjdGlvbi5gKTtcblxuICAgICAgcmV0dXJuIGZvcndhcmQoY29udGV4dCwgYmFjayk7XG4gICAgfSwgYmFjayk7XG4gIH1cblxuICB2ZXJpZnlTdXBwb3NpdGlvbihzdXBwb3NpdGlvbiwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IGNsYWltU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKSwgLy8vXG4gICAgICAgICAgc3VwcG9zaXRpb25TdHJpbmcgPSBzdXBwb3NpdGlvbi5nZXRTdHJpbmcoKTtcblxuICAgIGNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7Y2xhaW1TdHJpbmd9JyBjbGFpbSdzICcke3N1cHBvc2l0aW9uU3RyaW5nfScgc3VwcG9zaXRpb24uLi5gKTtcblxuICAgIHJldHVybiBzdXBwb3NpdGlvbi52ZXJpZnkoY29udGV4dCwgKGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHtjbGFpbVN0cmluZ30nIGNsYWltJ3MgJyR7c3VwcG9zaXRpb25TdHJpbmd9JyBzdXBwb3NpdGlvbi5gKTtcblxuICAgICAgcmV0dXJuIGZvcndhcmQoY29udGV4dCwgYmFjayk7XG4gICAgfSwgYmFjayk7XG4gIH1cblxuICB2ZXJpZnlTdXBwb3NpdGlvbnMoY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IHN1cHBvc2l0aW9uc0xlbmd0aCA9IHRoaXMuc3VwcG9zaXRpb25zLmxlbmd0aDtcblxuICAgIGlmIChzdXBwb3NpdGlvbnNMZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiBmb3J3YXJkKGNvbnRleHQsIGJhY2spO1xuICAgIH1cblxuICAgIGNvbnN0IGNsYWltU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHtjbGFpbVN0cmluZ30nIGNsYWltJ3Mgc3VwcG9zaXRpb25zLi4uYCk7XG5cbiAgICByZXR1cm4gZm9yd2FyZHNFdmVyeSh0aGlzLnN1cHBvc2l0aW9ucywgKHN1cHBvc2l0aW9uLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy52ZXJpZnlTdXBwb3NpdGlvbihzdXBwb3NpdGlvbiwgY29udGV4dCwgKCBfICwgYmFjaykgPT4ge1xuICAgICAgICBjb25zdCBmYWN0T3JTdWJwcm9vZiA9IHN1cHBvc2l0aW9uOyAvLy9cblxuICAgICAgICBjb250ZXh0LmFkZEZhY3RPclN1YnByb29mKGZhY3RPclN1YnByb29mKTtcblxuICAgICAgICBjb250ZXh0LmFzc2lnbkFzc2lnbm1lbnRzKCk7XG5cbiAgICAgICAgcmV0dXJuIGZvcndhcmQoY29udGV4dCwgYmFjayk7XG4gICAgICB9LCBiYWNrKTtcbiAgICB9LCBjb250ZXh0LCAoY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke2NsYWltU3RyaW5nfScgY2xhaW0ncyBzdXBwb3NpdGlvbnMuYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKGNvbnRleHQsIGJhY2spO1xuICAgIH0sIGJhY2spO1xuICB9XG5cbiAgZGlzY2hhcmdlSHlwb3RoZXNpcyhoeXBvdGhlc2lzLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3QgY2xhaW1TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpLCAvLy9cbiAgICAgICAgICBoeXBvdGhlc2lzU3RyaW5nID0gaHlwb3RoZXNpcy5nZXRTdHJpbmcoKTtcblxuICAgIGNvbnRleHQudHJhY2UoYERpc2NoYXJnaW5nIHRoZSAnJHtjbGFpbVN0cmluZ30nIGNsYWltJ3MgJyR7aHlwb3RoZXNpc1N0cmluZ30nIGh5cG90aGVzaXMuLi5gKTtcblxuICAgIHJldHVybiBoeXBvdGhlc2lzLmRpc2NoYXJnZShjb250ZXh0LCAoaHlwb3RoZXNpc0Rpc2NoYXJnZXMsIGNvbnRleHQpID0+IHtcbiAgICAgIGlmIChoeXBvdGhlc2lzRGlzY2hhcmdlcykge1xuICAgICAgICBjb250ZXh0LnRyYWNlKGAuLi5kaXNjaGFyZ2VzIHRoZSAnJHtjbGFpbVN0cmluZ30nIGNsYWltJ3MgJyR7aHlwb3RoZXNpc1N0cmluZ30nIGh5cG90aGVzaXMuYCk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBjb250aW51YXRpb24oaHlwb3RoZXNpc0Rpc2NoYXJnZXMsIGNvbnRleHQpO1xuICAgIH0pO1xuICB9XG5cbiAgZGlzY2hhcmdlSHlwb3RoZXNlcyhjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3QgaHlwb3RoZXNlcyA9IHRoaXMuZ2V0SHlwb3RoZXNlcygpLFxuICAgICAgICAgaHlwb3RoZXNlc0xlbmd0aCA9IGh5cG90aGVzZXMubGVuZ3RoO1xuXG4gICAgaWYgKGh5cG90aGVzZXNMZW5ndGggPT09IDApIHtcbiAgICAgIGNvbnN0IGh5cG90aGVzZXNEaXNjaGFyZ2VkID0gdHJ1ZTtcblxuICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbihoeXBvdGhlc2VzRGlzY2hhcmdlZCwgY29udGV4dCk7XG4gICAgfVxuXG4gICAgY29uc3QgY2xhaW1TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYERpc2NoYXJnaW5nIHRoZSAnJHtjbGFpbVN0cmluZ30nIGNsYWltJ3MgaHlwb3RoZXNlcy4uLmApO1xuXG4gICAgY29uc3QgZGlzY2hhcmdlSHlwb3RoZXNpcyA9IHRoaXMuZGlzY2hhcmdlSHlwb3RoZXNpcy5iaW5kKHRoaXMpO1xuXG4gICAgcmV0dXJuIGV2ZXJ5KGh5cG90aGVzZXMsIGRpc2NoYXJnZUh5cG90aGVzaXMsIGNvbnRleHQsIChoeXBvdGhlc2VzRGlzY2hhcmdlZCkgPT4ge1xuICAgICAgaWYgKGh5cG90aGVzZXNEaXNjaGFyZ2VkKSB7XG4gICAgICAgIGNvbnRleHQudHJhY2UoYC4uLmRpc2NoYXJnZWQgdGhlICcke2NsYWltU3RyaW5nfScgY2xhaW0ncyBoeXBvdGhlc2VzLmApO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gY29udGludWF0aW9uKGh5cG90aGVzZXNEaXNjaGFyZ2VkLCBjb250ZXh0KTtcbiAgICB9KTtcbiAgfVxuXG4gIHVuaWZ5U3RlcFdpdGhEZWR1Y3Rpb24oc3RlcCwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IHJ1bGVTdHJpbmcgPSB0aGlzLmdldFN0cmluZygpLFxuICAgICAgICAgIHN0ZXBTdHJpbmcgPSBzdGVwLmdldFN0cmluZygpLFxuICAgICAgICAgIGRlZHVjdGlvblN0cmluZyA9IHRoaXMuZGVkdWN0aW9uLmdldFN0cmluZygpO1xuXG4gICAgY29udGV4dC50cmFjZShgVW5pZnlpbmcgdGhlICcke3N0ZXBTdHJpbmd9JyBzdGVwIHdpdGggdGhlICcke3J1bGVTdHJpbmd9JyBydWxlJ3MgJyR7ZGVkdWN0aW9uU3RyaW5nfScgZGVkdWN0aW9uLi4uYCk7XG5cbiAgICByZXR1cm4gdGhpcy5kZWR1Y3Rpb24udW5pZnlTdGVwKHN0ZXAsIGNvbnRleHQsIChzdGVwVW5pZmllcykgPT4ge1xuICAgICAgbGV0IHN0ZXBVbmlmaWVzV2l0aERlZHVjdGlvbiA9IGZhbHNlO1xuXG4gICAgICBpZiAoc3RlcFVuaWZpZXMpIHtcbiAgICAgICAgc3RlcFVuaWZpZXNXaXRoRGVkdWN0aW9uID0gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKHN0ZXBVbmlmaWVzV2l0aERlZHVjdGlvbikge1xuICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi51bmlmaWVkIHRoZSAnJHtzdGVwU3RyaW5nfScgc3RlcCB3aXRoIHRoZSAnJHtydWxlU3RyaW5nfScgcnVsZSdzICcke2RlZHVjdGlvblN0cmluZ30nIGRlZHVjdGlvbi5gKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbihzdGVwVW5pZmllc1dpdGhEZWR1Y3Rpb24sIGNvbnRleHQpO1xuICAgIH0pO1xuICB9XG5cbiAgdW5pZnlTdGVwQW5kRmFjdE9yU3VicHJvb2ZzKHN0ZXAsIGZhY3RvclN1YnByb29mcywgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIHJldHVybiByZWNvbmNpbGUoKGNvbnRleHQpID0+IHtcbiAgICAgIHJldHVybiB0aGlzLnVuaWZ5U3RlcFdpdGhEZWR1Y3Rpb24oc3RlcCwgY29udGV4dCwgKHN0YXRlbWVudFVuaWZpZXNXaXRoRGVkdWN0aW9uKSA9PiB7XG4gICAgICAgIGlmICghc3RhdGVtZW50VW5pZmllc1dpdGhEZWR1Y3Rpb24pIHtcbiAgICAgICAgICBjb25zdCBzdGVwQW5kRmFjdE9yU3VicHJvb2ZzVW5pZnkgPSBmYWxzZTtcblxuICAgICAgICAgIHJldHVybiBjb250aW51YXRpb24oc3RlcEFuZEZhY3RPclN1YnByb29mc1VuaWZ5LCBjb250ZXh0KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLmRpc2NoYXJnZUh5cG90aGVzZXMoY29udGV4dCwgKGh5cG90aGVzZXNEaXNjaGFyZ2UpID0+IHtcbiAgICAgICAgICBpZiAoIWh5cG90aGVzZXNEaXNjaGFyZ2UpIHtcbiAgICAgICAgICAgIGNvbnN0IHN0ZXBBbmRGYWN0T3JTdWJwcm9vZnNVbmlmeSA9IGZhbHNlO1xuXG4gICAgICAgICAgICByZXR1cm4gY29udGludWF0aW9uKHN0ZXBBbmRGYWN0T3JTdWJwcm9vZnNVbmlmeSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHRoaXMudW5pZnlGYWN0T3JTdWJwcm9vZnNXaXRoU3VwcG9zaXRpb25zKGZhY3RvclN1YnByb29mcywgY29udGV4dCwgKGZhY3RvclN1YnByb29mc1VuaWZpZXNXaXRoU3VwcG9zaXRpb25zKSA9PiB7XG4gICAgICAgICAgICBsZXQgc3RlcEFuZEZhY3RPclN1YnByb29mc1VuaWZ5ID0gZmFsc2U7XG5cbiAgICAgICAgICAgIGlmIChmYWN0b3JTdWJwcm9vZnNVbmlmaWVzV2l0aFN1cHBvc2l0aW9ucykge1xuICAgICAgICAgICAgICBjb25zdCBpbmZlcnJlZFN1YnN0aXR1dGlvbnNTb2x2ZWQgPSBjb250ZXh0LmFyZUluZmVycmVkU3Vic3RpdHV0aW9uc1NvbHZlZCgpO1xuXG4gICAgICAgICAgICAgIGlmIChpbmZlcnJlZFN1YnN0aXR1dGlvbnNTb2x2ZWQpIHtcbiAgICAgICAgICAgICAgICBzdGVwQW5kRmFjdE9yU3VicHJvb2ZzVW5pZnkgPSB0cnVlO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBjb250aW51YXRpb24oc3RlcEFuZEZhY3RPclN1YnByb29mc1VuaWZ5KTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9LCBjb250ZXh0KTtcbiAgfVxuXG4gIHVuaWZ5RmFjdE9yU3VicHJvb2ZzV2l0aFN1cHBvc2l0aW9uKGZhY3RPclN1YnByb29mcywgc3VwcG9zaXRpb24sIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICByZXR1cm4gZXh0cmFjdChmYWN0T3JTdWJwcm9vZnMsXG4gICAgICAoZmFjdE9yU3VicHJvb2YsIGZvcndhcmQsIGJhY2spID0+IHtcbiAgICAgICAgcmV0dXJuIHN1cHBvc2l0aW9uLnVuaWZ5RmFjdE9yU3VicHJvb2YoZmFjdE9yU3VicHJvb2YsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spO1xuICAgICAgfSwgKGZhY3RPclN1YnByb29mcywgZmFjdE9yU3VicHJvb2YsIGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgICAgcmV0dXJuIGNvbnRleHQuc29sdmVJbmZlcnJlZFN1YnN0aXR1dGlvbnMoKGJhY2spID0+IHtcbiAgICAgICAgICByZXR1cm4gZm9yd2FyZChmYWN0T3JTdWJwcm9vZnMsIGNvbnRleHQsIGJhY2spO1xuICAgICAgICB9LCBiYWNrKTtcbiAgICAgIH0sIChleGNlcHRpb24pID0+IHtcbiAgICAgICAgaWYoZXhjZXB0aW9uKSB7XG4gICAgICAgICAgcmV0dXJuIGJhY2soZXhjZXB0aW9uKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBzdXBwb3NpdGlvbi51bmlmeUluZGVwZW5kZW50bHkoY29udGV4dCwgKGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgICAgICByZXR1cm4gZm9yd2FyZChmYWN0T3JTdWJwcm9vZnMsIGNvbnRleHQsIGJhY2spO1xuICAgICAgICB9LCBiYWNrKTtcbiAgICAgIH1cbiAgICApO1xuICB9XG5cbiAgdW5pZnlGYWN0T3JTdWJwcm9vZnNXaXRoU3VwcG9zaXRpb25zKGZhY3RPclN1YnByb29mcywgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGZhY3RPclN1YnByb29mcyA9IHJldmVyc2UoZmFjdE9yU3VicHJvb2ZzKTsgLy8vXG5cbiAgICByZXR1cm4gYmFja3dhcmRzRXZlcnkodGhpcy5zdXBwb3NpdGlvbnMsIChzdXBwb3NpdGlvbiwgZmFjdE9yU3VicHJvb2ZzLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy51bmlmeUZhY3RPclN1YnByb29mc1dpdGhTdXBwb3NpdGlvbihmYWN0T3JTdWJwcm9vZnMsIHN1cHBvc2l0aW9uLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKTtcbiAgICB9LCBmYWN0T3JTdWJwcm9vZnMsIGNvbnRleHQsIChmYWN0T3JTdWJwcm9vZnMsIGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIHJldHVybiBmb3J3YXJkKGNvbnRleHQsIGJhY2spO1xuICAgIH0sIGJhY2spO1xuICB9XG5cbiAgdG9KU09OKCkge1xuICAgIGNvbnN0IGxhYmVsc0pTT04gPSBsYWJlbHNUb0xhYmVsc0pTT04odGhpcy5sYWJlbHMpLFxuICAgICAgICAgIGRlZHVjdGlvbkpTT04gPSBkZWR1Y3Rpb25Ub0RlZHVjdGlvbkpTT04odGhpcy5kZWR1Y3Rpb24pLFxuICAgICAgICAgIHN1cHBvc2l0aW9uc0pTT04gPSBzdXBwb3NpdGlvbnNUb1N1cHBvc2l0aW9uc0pTT04odGhpcy5zdXBwb3NpdGlvbnMpLFxuICAgICAgICAgIHNpZ25hdHVyZUpTT04gPSBzaWduYXR1cmVUb1NpZ25hdHVyZUpTT04odGhpcy5zaWduYXR1cmUpLFxuICAgICAgICAgIGh5cG90aGVzZXNKU09OID0gaHlwb3RoZXNlc1RvSHlwb3RoZXNlc0pTT04odGhpcy5oeXBvdGhlc2VzKSxcbiAgICAgICAgICBzdHJpbmcgPSB0aGlzLmdldFN0cmluZygpO1xuXG4gICAgbGV0IGJyZWFrUG9pbnQ7XG5cbiAgICBicmVha1BvaW50ID0gdGhpcy5nZXRCcmVha1BvaW50KCk7XG5cbiAgICBjb25zdCBicmVha1BvaW50SlNPTiA9IGJyZWFrUG9pbnRUb0JyZWFrUG9pbnRKU09OKGJyZWFrUG9pbnQpO1xuXG4gICAgYnJlYWtQb2ludCA9IGJyZWFrUG9pbnRKU09OOyAgLy8vXG5cbiAgICBjb25zdCBsYWJlbHMgPSBsYWJlbHNKU09OLCAgLy8vXG4gICAgICAgICAgZGVkdWN0aW9uID0gZGVkdWN0aW9uSlNPTiwgIC8vL1xuICAgICAgICAgIHN1cHBvc2l0aW9ucyA9IHN1cHBvc2l0aW9uc0pTT04sICAvLy9cbiAgICAgICAgICBzaWduYXR1cmUgPSBzaWduYXR1cmVKU09OLCAgLy8vXG4gICAgICAgICAgaHlwb3RoZXNlcyA9IGh5cG90aGVzZXNKU09OLCAgLy8vXG4gICAgICAgICAganNvbiA9IHtcbiAgICAgICAgICAgIHN0cmluZyxcbiAgICAgICAgICAgIGJyZWFrUG9pbnQsXG4gICAgICAgICAgICBsYWJlbHMsXG4gICAgICAgICAgICBkZWR1Y3Rpb24sXG4gICAgICAgICAgICBzdXBwb3NpdGlvbnMsXG4gICAgICAgICAgICBzaWduYXR1cmUsXG4gICAgICAgICAgICBoeXBvdGhlc2VzXG4gICAgICAgICAgfTtcblxuICAgIHJldHVybiBqc29uO1xuICB9XG5cbiAgc3RhdGljIGZyb21KU09OKENsYXNzLCBqc29uLCBjb250ZXh0KSB7XG4gICAgY29uc3QgbGFiZWxzID0gbGFiZWxzRnJvbUpTT04oanNvbiwgY29udGV4dCksXG4gICAgICAgICAgZGVkdWN0aW9uID0gZGVkdWN0aW9uRnJvbUpTT04oanNvbiwgY29udGV4dCksXG4gICAgICAgICAgc3VwcG9zaXRpb25zID0gc3VwcG9zaXRpb25zRnJvbUpTT04oanNvbiwgY29udGV4dCksXG4gICAgICAgICAgc2lnbmF0dXJlID0gc2lnbmF0dXJlRnJvbUpTT04oanNvbiwgY29udGV4dCksXG4gICAgICAgICAgaHlwb3RoZXNlcyA9IGh5cG90aGVzZXNGcm9tSlNPTihqc29uLCBjb250ZXh0KSxcbiAgICAgICAgICBjbGFpbVN0cmluZyA9IGNsYWltU3RyaW5nRnJvbUxhYmVsc1NpZ25hdHVyZVN1cHBvc2l0aW9uc0FuZERlZHVjdGlvbihsYWJlbHMsIHNpZ25hdHVyZSwgc3VwcG9zaXRpb25zLCBkZWR1Y3Rpb24pLFxuICAgICAgICAgIHN0cmluZyA9IGNsYWltU3RyaW5nLCAvLy9cbiAgICAgICAgICBub2RlID0gbnVsbCxcbiAgICAgICAgICBicmVha1BvaW50ID0gYnJlYWtQb2ludEZyb21KU09OKGpzb24pLFxuICAgICAgICAgIHByb29mID0gbnVsbCxcbiAgICAgICAgICBjbGFpbSA9IG5ldyBDbGFzcyhjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIGxhYmVscywgc3VwcG9zaXRpb25zLCBkZWR1Y3Rpb24sIHByb29mLCBzaWduYXR1cmUsIGh5cG90aGVzZXMpO1xuXG4gICAgcmV0dXJuIGNsYWltO1xuICB9XG59XG4iXSwibmFtZXMiOlsiQ2xhaW0iLCJyZXZlcnNlIiwiYXJyYXlVdGlsaXRpZXMiLCJicmVha1BvaW50RnJvbUpTT04iLCJicmVha1BvaW50VG9CcmVha1BvaW50SlNPTiIsImJyZWFrUG9pbnRVdGlsaXRpZXMiLCJhbGwiLCJldmVyeSIsImV4dHJhY3QiLCJmb3J3YXJkc0V2ZXJ5IiwiYmFja3dhcmRzRXZlcnkiLCJjb250aW51YXRpb25VdGlsaXRpZXMiLCJFbGVtZW50IiwiY29udGV4dCIsInN0cmluZyIsIm5vZGUiLCJicmVha1BvaW50IiwibGFiZWxzIiwic3VwcG9zaXRpb25zIiwiZGVkdWN0aW9uIiwicHJvb2YiLCJzaWduYXR1cmUiLCJoeXBvdGhlc2VzIiwiZ2V0TGFiZWxzIiwiZ2V0U3VwcG9zaXRpb25zIiwiZ2V0RGVkdWN0aW9uIiwiZ2V0UHJvb2YiLCJnZXRTaWduYXR1cmUiLCJnZXRIeXBvdGhlc2VzIiwic2V0SHlwb3RoZXNlcyIsImdldFN1cHBvc2l0aW9uIiwiaW5kZXgiLCJzdXBwb3NpdGlvbiIsImlzU2F0aXNmaWFibGUiLCJzYXRpc2ZpYWJsZSIsImlzSHlwb3RoZXRpY2FsIiwiaHlwb3RoZXNlc0xlbmd0aCIsImxlbmd0aCIsImh5cG90aGV0aWNhbCIsIm1hdGNoTWV0YXZhcmlhYmxlTm9kZSIsIm1ldGF2YXJpYWJsZU5vZGUiLCJtZXRhdmFyaWFibGVOb2RlTWF0Y2hlcyIsInNvbWUiLCJsYWJlbCIsInZlcmlmeUV4IiwiZm9yd2FyZCIsImJhY2siLCJlbmNsb3NlIiwidmVyaWZ5UHJvb2YiLCJiaW5kIiwidmVyaWZ5TGFiZWxzIiwidmVyaWZ5RGVkdWN0aW9uIiwidmVyaWZ5U3VwcG9zaXRpb25zIiwiY2xhaW1TdHJpbmciLCJnZXRTdHJpbmciLCJ0cmFjZSIsInZlcmlmeUxhYmVsIiwiZGVidWciLCJsYWJlbFN0cmluZyIsInZlcmlmeSIsInN0YXRlbWVudCIsImdldFN0YXRlbWVudCIsInByb29mVmVyaWZpZXMiLCJjb250aW51YXRpb24iLCJkZWR1Y3Rpb25TdHJpbmciLCJ2ZXJpZnlTdXBwb3NpdGlvbiIsInN1cHBvc2l0aW9uU3RyaW5nIiwic3VwcG9zaXRpb25zTGVuZ3RoIiwiXyIsImZhY3RPclN1YnByb29mIiwiYWRkRmFjdE9yU3VicHJvb2YiLCJhc3NpZ25Bc3NpZ25tZW50cyIsImRpc2NoYXJnZUh5cG90aGVzaXMiLCJoeXBvdGhlc2lzIiwiaHlwb3RoZXNpc1N0cmluZyIsImRpc2NoYXJnZSIsImh5cG90aGVzaXNEaXNjaGFyZ2VzIiwiZGlzY2hhcmdlSHlwb3RoZXNlcyIsImh5cG90aGVzZXNEaXNjaGFyZ2VkIiwidW5pZnlTdGVwV2l0aERlZHVjdGlvbiIsInN0ZXAiLCJydWxlU3RyaW5nIiwic3RlcFN0cmluZyIsInVuaWZ5U3RlcCIsInN0ZXBVbmlmaWVzIiwic3RlcFVuaWZpZXNXaXRoRGVkdWN0aW9uIiwidW5pZnlTdGVwQW5kRmFjdE9yU3VicHJvb2ZzIiwiZmFjdG9yU3VicHJvb2ZzIiwicmVjb25jaWxlIiwic3RhdGVtZW50VW5pZmllc1dpdGhEZWR1Y3Rpb24iLCJzdGVwQW5kRmFjdE9yU3VicHJvb2ZzVW5pZnkiLCJoeXBvdGhlc2VzRGlzY2hhcmdlIiwidW5pZnlGYWN0T3JTdWJwcm9vZnNXaXRoU3VwcG9zaXRpb25zIiwiZmFjdG9yU3VicHJvb2ZzVW5pZmllc1dpdGhTdXBwb3NpdGlvbnMiLCJpbmZlcnJlZFN1YnN0aXR1dGlvbnNTb2x2ZWQiLCJhcmVJbmZlcnJlZFN1YnN0aXR1dGlvbnNTb2x2ZWQiLCJ1bmlmeUZhY3RPclN1YnByb29mc1dpdGhTdXBwb3NpdGlvbiIsImZhY3RPclN1YnByb29mcyIsInVuaWZ5RmFjdE9yU3VicHJvb2YiLCJzb2x2ZUluZmVycmVkU3Vic3RpdHV0aW9ucyIsImV4Y2VwdGlvbiIsInVuaWZ5SW5kZXBlbmRlbnRseSIsInRvSlNPTiIsImxhYmVsc0pTT04iLCJsYWJlbHNUb0xhYmVsc0pTT04iLCJkZWR1Y3Rpb25KU09OIiwiZGVkdWN0aW9uVG9EZWR1Y3Rpb25KU09OIiwic3VwcG9zaXRpb25zSlNPTiIsInN1cHBvc2l0aW9uc1RvU3VwcG9zaXRpb25zSlNPTiIsInNpZ25hdHVyZUpTT04iLCJzaWduYXR1cmVUb1NpZ25hdHVyZUpTT04iLCJoeXBvdGhlc2VzSlNPTiIsImh5cG90aGVzZXNUb0h5cG90aGVzZXNKU09OIiwiZ2V0QnJlYWtQb2ludCIsImJyZWFrUG9pbnRKU09OIiwianNvbiIsImZyb21KU09OIiwiQ2xhc3MiLCJsYWJlbHNGcm9tSlNPTiIsImRlZHVjdGlvbkZyb21KU09OIiwic3VwcG9zaXRpb25zRnJvbUpTT04iLCJzaWduYXR1cmVGcm9tSlNPTiIsImh5cG90aGVzZXNGcm9tSlNPTiIsImNsYWltU3RyaW5nRnJvbUxhYmVsc1NpZ25hdHVyZVN1cHBvc2l0aW9uc0FuZERlZHVjdGlvbiIsImNsYWltIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFzQkE7OztlQUFxQkE7OzsyQkFwQlU7Z0NBQ3FDO3lCQUVqQzt3QkFDb0M7c0JBVXhCO0FBRS9DLE1BQU0sRUFBRUMsT0FBTyxFQUFFLEdBQUdDLHlCQUFjLEVBQzVCLEVBQUVDLGtCQUFrQixFQUFFQywwQkFBMEIsRUFBRSxHQUFHQyxtQ0FBbUIsRUFDeEUsRUFBRUMsR0FBRyxFQUFFQyxLQUFLLEVBQUVDLE9BQU8sRUFBRUMsYUFBYSxFQUFFQyxjQUFjLEVBQUUsR0FBR0MscUNBQXFCO0FBRXJFLE1BQU1YLGNBQWNZLHVCQUFPO0lBQ3hDLFlBQVlDLE9BQU8sRUFBRUMsTUFBTSxFQUFFQyxJQUFJLEVBQUVDLFVBQVUsRUFBRUMsTUFBTSxFQUFFQyxZQUFZLEVBQUVDLFNBQVMsRUFBRUMsS0FBSyxFQUFFQyxTQUFTLEVBQUVDLFVBQVUsQ0FBRTtRQUM1RyxLQUFLLENBQUNULFNBQVNDLFFBQVFDLE1BQU1DO1FBRTdCLElBQUksQ0FBQ0MsTUFBTSxHQUFHQTtRQUNkLElBQUksQ0FBQ0MsWUFBWSxHQUFHQTtRQUNwQixJQUFJLENBQUNDLFNBQVMsR0FBR0E7UUFDakIsSUFBSSxDQUFDQyxLQUFLLEdBQUdBO1FBQ2IsSUFBSSxDQUFDQyxTQUFTLEdBQUdBO1FBQ2pC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
|
|
@@ -30,9 +30,9 @@ const _default = (0, _elements.define)(class Derivation extends _occamlanguages.
|
|
|
30
30
|
}
|
|
31
31
|
verify(context, forward, back) {
|
|
32
32
|
return every(this.factOrSubproofs, (factOrSubproof, context, forward, back)=>{
|
|
33
|
-
return factOrSubproof.verify(context, (
|
|
34
|
-
context.assignAssignments();
|
|
33
|
+
return factOrSubproof.verify(context, (_, back)=>{
|
|
35
34
|
context.addFactOrSubproof(factOrSubproof);
|
|
35
|
+
context.assignAssignments();
|
|
36
36
|
return forward(context, back);
|
|
37
37
|
}, back);
|
|
38
38
|
}, context, forward, back);
|
|
@@ -40,4 +40,4 @@ const _default = (0, _elements.define)(class Derivation extends _occamlanguages.
|
|
|
40
40
|
static name = "Derivation";
|
|
41
41
|
});
|
|
42
42
|
|
|
43
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
43
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbGVtZW50L2Rlcml2YXRpb24uanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IGFycmF5VXRpbGl0aWVzIH0gZnJvbSBcIm5lY2Vzc2FyeVwiO1xuaW1wb3J0IHsgRWxlbWVudCwgY29udGludWF0aW9uVXRpbGl0aWVzIH0gZnJvbSBcIm9jY2FtLWxhbmd1YWdlc1wiO1xuXG5pbXBvcnQgeyBkZWZpbmUgfSBmcm9tIFwiLi4vZWxlbWVudHNcIjtcblxuY29uc3QgeyBsYXN0IH0gPSBhcnJheVV0aWxpdGllcyxcbiAgICAgIHsgZXZlcnkgfSA9IGNvbnRpbnVhdGlvblV0aWxpdGllcztcblxuZXhwb3J0IGRlZmF1bHQgZGVmaW5lKGNsYXNzIERlcml2YXRpb24gZXh0ZW5kcyBFbGVtZW50IHtcbiAgY29uc3RydWN0b3IoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCBmYWN0T3JTdWJwcm9vZnMpIHtcbiAgICBzdXBlcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQpO1xuXG4gICAgdGhpcy5mYWN0T3JTdWJwcm9vZnMgPSBmYWN0T3JTdWJwcm9vZnM7XG4gIH1cblxuICBnZXRGYWN0T3JTdWJwcm9vZnMoKSB7XG4gICAgcmV0dXJuIHRoaXMuZmFjdE9yU3VicHJvb2ZzO1xuICB9XG5cbiAgZ2V0RGVyaXZhdGlvbk5vZGUoKSB7XG4gICAgY29uc3Qgbm9kZSA9IHRoaXMuZ2V0Tm9kZSgpLFxuICAgICAgICAgIGRlcml2YXRpb25Ob2RlID0gbm9kZTsgIC8vL1xuXG4gICAgcmV0dXJuIGRlcml2YXRpb25Ob2RlO1xuICB9XG5cbiAgZ2V0TGFzdFN0ZXAoKSB7XG4gICAgY29uc3QgbGFzdEZhY3RPclN1YnByb29mID0gbGFzdCh0aGlzLmZhY3RPclN1YnByb29mcyksXG4gICAgICAgICAgbGFzdEZhY3QgPSBsYXN0RmFjdE9yU3VicHJvb2YsICAvLy9cbiAgICAgICAgICBsYXN0U3RlcCA9IGxhc3RGYWN0OyAgLy8vXG5cbiAgICByZXR1cm4gbGFzdFN0ZXA7XG4gIH1cblxuICB2ZXJpZnkoY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIHJldHVybiBldmVyeSh0aGlzLmZhY3RPclN1YnByb29mcywgKGZhY3RPclN1YnByb29mLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSA9PiB7XG4gICAgICByZXR1cm4gZmFjdE9yU3VicHJvb2YudmVyaWZ5KGNvbnRleHQsIChfLCBiYWNrKSA9PiB7XG4gICAgICAgIGNvbnRleHQuYWRkRmFjdE9yU3VicHJvb2YoZmFjdE9yU3VicHJvb2YpO1xuXG4gICAgICAgIGNvbnRleHQuYXNzaWduQXNzaWdubWVudHMoKTtcblxuICAgICAgICByZXR1cm4gZm9yd2FyZChjb250ZXh0LCBiYWNrKTtcbiAgICAgIH0sIGJhY2spO1xuICAgIH0sIGNvbnRleHQsIGZvcndhcmQsIGJhY2spO1xuICB9XG5cbiAgc3RhdGljIG5hbWUgPSBcIkRlcml2YXRpb25cIjtcbn0pO1xuXG4iXSwibmFtZXMiOlsibGFzdCIsImFycmF5VXRpbGl0aWVzIiwiZXZlcnkiLCJjb250aW51YXRpb25VdGlsaXRpZXMiLCJkZWZpbmUiLCJEZXJpdmF0aW9uIiwiRWxlbWVudCIsImNvbnRleHQiLCJzdHJpbmciLCJub2RlIiwiYnJlYWtQb2ludCIsImZhY3RPclN1YnByb29mcyIsImdldEZhY3RPclN1YnByb29mcyIsImdldERlcml2YXRpb25Ob2RlIiwiZ2V0Tm9kZSIsImRlcml2YXRpb25Ob2RlIiwiZ2V0TGFzdFN0ZXAiLCJsYXN0RmFjdE9yU3VicHJvb2YiLCJsYXN0RmFjdCIsImxhc3RTdGVwIiwidmVyaWZ5IiwiZm9yd2FyZCIsImJhY2siLCJmYWN0T3JTdWJwcm9vZiIsIl8iLCJhZGRGYWN0T3JTdWJwcm9vZiIsImFzc2lnbkFzc2lnbm1lbnRzIiwibmFtZSJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBVUE7OztlQUFBOzs7MkJBUitCO2dDQUNnQjswQkFFeEI7QUFFdkIsTUFBTSxFQUFFQSxJQUFJLEVBQUUsR0FBR0MseUJBQWMsRUFDekIsRUFBRUMsS0FBSyxFQUFFLEdBQUdDLHFDQUFxQjtNQUV2QyxXQUFlQyxJQUFBQSxnQkFBTSxFQUFDLE1BQU1DLG1CQUFtQkMsdUJBQU87SUFDcEQsWUFBWUMsT0FBTyxFQUFFQyxNQUFNLEVBQUVDLElBQUksRUFBRUMsVUFBVSxFQUFFQyxlQUFlLENBQUU7UUFDOUQsS0FBSyxDQUFDSixTQUFTQyxRQUFRQyxNQUFNQztRQUU3QixJQUFJLENBQUNDLGVBQWUsR0FBR0E7SUFDekI7SUFFQUMscUJBQXFCO1FBQ25CLE9BQU8sSUFBSSxDQUFDRCxlQUFlO0lBQzdCO0lBRUFFLG9CQUFvQjtRQUNsQixNQUFNSixPQUFPLElBQUksQ0FBQ0ssT0FBTyxJQUNuQkMsaUJBQWlCTixNQUFPLEdBQUc7UUFFakMsT0FBT007SUFDVDtJQUVBQyxjQUFjO1FBQ1osTUFBTUMscUJBQXFCakIsS0FBSyxJQUFJLENBQUNXLGVBQWUsR0FDOUNPLFdBQVdELG9CQUNYRSxXQUFXRCxVQUFXLEdBQUc7UUFFL0IsT0FBT0M7SUFDVDtJQUVBQyxPQUFPYixPQUFPLEVBQUVjLE9BQU8sRUFBRUMsSUFBSSxFQUFFO1FBQzdCLE9BQU9wQixNQUFNLElBQUksQ0FBQ1MsZUFBZSxFQUFFLENBQUNZLGdCQUFnQmhCLFNBQVNjLFNBQVNDO1lBQ3BFLE9BQU9DLGVBQWVILE1BQU0sQ0FBQ2IsU0FBUyxDQUFDaUIsR0FBR0Y7Z0JBQ3hDZixRQUFRa0IsaUJBQWlCLENBQUNGO2dCQUUxQmhCLFFBQVFtQixpQkFBaUI7Z0JBRXpCLE9BQU9MLFFBQVFkLFNBQVNlO1lBQzFCLEdBQUdBO1FBQ0wsR0FBR2YsU0FBU2MsU0FBU0M7SUFDdkI7SUFFQSxPQUFPSyxPQUFPLGFBQWE7QUFDN0IifQ==
|
|
@@ -183,4 +183,4 @@ function statementFromPremiseNode(premiseNode, context) {
|
|
|
183
183
|
return statement;
|
|
184
184
|
}
|
|
185
185
|
|
|
186
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L2ZhY3QvcHJlbWlzZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgYnJlYWtQb2ludFV0aWxpdGllcywgY29udGludWF0aW9uVXRpbGl0aWVzIH0gZnJvbSBcIm9jY2FtLWxhbmd1YWdlc1wiO1xuXG5pbXBvcnQgRmFjdCBmcm9tIFwiLi4vZmFjdFwiO1xuXG5pbXBvcnQgeyBkZWZpbmUgfSBmcm9tIFwiLi4vLi4vZWxlbWVudHNcIjtcbmltcG9ydCB7IGRlY2xhcmUgfSBmcm9tIFwiLi4vLi4vdXRpbGl0aWVzL3N0YXRlXCI7XG5pbXBvcnQgeyBpbnN0YW50aWF0ZVByZW1pc2UgfSBmcm9tIFwiLi4vLi4vcHJvY2Vzcy9pbnN0YW50aWF0ZVwiO1xuaW1wb3J0IHsgcmVmZXJlbmNlRnJvbVByZW1pc2VOb2RlLCBwcm9jZWR1cmVDYWxsRnJvbVByZW1pc2VOb2RlIH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9lbGVtZW50XCI7XG5pbXBvcnQgeyBhdHRlbXB0LCByZWNvbmNpbGUsIHNlcmlhbGlzZSwgdW5zZXJpYWxpc2UsIGluc3RhbnRpYXRlIH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9jb250ZXh0XCI7XG5cbmNvbnN0IHsgY3V0LCBhbGwgfSA9IGNvbnRpbnVhdGlvblV0aWxpdGllcyxcbiAgICAgIHsgYnJlYWthYmxlLCBicmVha1BvaW50RnJvbUpTT04sIGJyZWFrUG9pbnRUb0JyZWFrUG9pbnRKU09OIH0gPSBicmVha1BvaW50VXRpbGl0aWVzO1xuXG5leHBvcnQgZGVmYXVsdCBkZWZpbmUoY2xhc3MgUHJlbWlzZSBleHRlbmRzIEZhY3Qge1xuICBnZXRQcmVtaXNlTm9kZSgpIHtcbiAgICBjb25zdCBub2RlID0gdGhpcy5nZXROb2RlKCksXG4gICAgICAgICAgcHJlbWlzZU5vZGUgPSBub2RlOyAvLy9cblxuICAgIHJldHVybiBwcmVtaXNlTm9kZTtcbiAgfVxuXG4gIGdldFN0YXRlbWVudE5vZGUoKSB7XG4gICAgY29uc3QgcHJlbWlzZU5vZGUgPSB0aGlzLmdldFByZW1pc2VOb2RlKCksXG4gICAgICAgICAgc3RhdGVtZW50Tm9kZSA9IHByZW1pc2VOb2RlLmdldFN0YXRlbWVudE5vZGUoKTtcblxuICAgIHJldHVybiBzdGF0ZW1lbnROb2RlO1xuICB9XG5cbiAgZmluZFN1YnByb29mQXNzZXJ0aW9uKCkge1xuICAgIGxldCBzdWJwcm9vZkFzc2VydGlvbiA9IG51bGw7XG5cbiAgICBjb25zdCBzdGF0ZW1lbnROb2RlID0gdGhpcy5nZXRTdGF0ZW1lbnROb2RlKCk7XG5cbiAgICBpZiAoc3RhdGVtZW50Tm9kZSAhPT0gbnVsbCkge1xuICAgICAgY29uc3Qgc3VicHJvb2ZBc3NlcnRpb25Ob2RlID0gc3RhdGVtZW50Tm9kZS5nZXRTdWJwcm9vZkFzc2VydGlvbk5vZGUoKTtcblxuICAgICAgaWYgKHN1YnByb29mQXNzZXJ0aW9uTm9kZSAhPT0gbnVsbCkge1xuICAgICAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCk7XG5cbiAgICAgICAgc3VicHJvb2ZBc3NlcnRpb24gPSBjb250ZXh0LmZpbmRBc3NlcnRpb25CeUFzc2VydGlvbk5vZGUoc3VicHJvb2ZBc3NlcnRpb25Ob2RlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gc3VicHJvb2ZBc3NlcnRpb247XG4gIH1cblxuICBpc01hbGZvcm1lZCgpIHtcbiAgICBjb25zdCBwcmVtaXNlTm9kZSA9IHRoaXMuZ2V0UHJlbWlzZU5vZGUoKSxcbiAgICAgICAgICBtYWxmb3JtZWQgPSBwcmVtaXNlTm9kZS5pc01hbGZvcm1lZCgpO1xuXG4gICAgcmV0dXJuIG1hbGZvcm1lZDtcbiAgfVxuXG4gIHZlcmlmeSA9IGJyZWFrYWJsZShmdW5jdGlvbiAoY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGZvcndhcmQgPSBjdXQoZm9yd2FyZCwgYmFjayk7IC8vL1xuXG4gICAgY29uc3QgcHJlbWlzZVN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7IC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHtwcmVtaXNlU3RyaW5nfScgcHJlbWlzZS4uLmApO1xuXG4gICAgY29uc3QgbWFsZm9ybWVkID0gdGhpcy5pc01hbGZvcm1lZCgpO1xuXG4gICAgaWYgKG1hbGZvcm1lZCkge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgVW5hYmxlIHRvIHZlcmlmeSB0aGUgJyR7cHJlbWlzZVN0cmluZ30nIHByZW1pc2UgYmVjYXVzZSBpdCBpcyBtYWxmb3JtZWQuYCk7XG5cbiAgICAgIHJldHVybiBiYWNrKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGRlY2xhcmUoKHN0YXRlKSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy52YWxpZGF0ZShzdGF0ZSwgY29udGV4dCwgKHByZW1pc2UsIF8gLCBiYWNrKSA9PiB7XG4gICAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHtwcmVtaXNlU3RyaW5nfScgcHJlbWlzZS5gKTtcblxuICAgICAgICByZXR1cm4gZm9yd2FyZChjb250ZXh0LCBiYWNrKTtcbiAgICAgIH0sIGJhY2spO1xuICAgIH0pO1xuICB9KTtcblxuICB2YWxpZGF0ZShzdGF0ZSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IHByZW1pc2VTdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke3ByZW1pc2VTdHJpbmd9JyBwcmVtaXNlLi4uYCk7XG5cbiAgICByZXR1cm4gYXR0ZW1wdCgoY29udGV4dCkgPT4ge1xuICAgICAgY29uc3QgdmFsaWRhdGVTdGF0ZW1lbnQgPSB0aGlzLnZhbGlkYXRlU3RhdGVtZW50LmJpbmQodGhpcyksXG4gICAgICAgICAgICB2YWxpZGF0ZVByb2NlZHVyZUNhbGwgPSB0aGlzLnZhbGlkYXRlUHJvY2VkdXJlQ2FsbC5iaW5kKHRoaXMpO1xuXG4gICAgICByZXR1cm4gYWxsKFtcbiAgICAgICAgdmFsaWRhdGVTdGF0ZW1lbnQsXG4gICAgICAgIHZhbGlkYXRlUHJvY2VkdXJlQ2FsbFxuICAgICAgXSwgc3RhdGUsIGNvbnRleHQsIChzdGF0ZSwgY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgICBjb25zdCBwcmVtaXNlID0gdGhpczsgLy8vXG5cbiAgICAgICAgdGhpcy5jb21taXQoY29udGV4dCk7XG5cbiAgICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHtwcmVtaXNlU3RyaW5nfScgcHJlbWlzZS5gKTtcblxuICAgICAgICByZXR1cm4gZm9yd2FyZChwcmVtaXNlLCBjb250ZXh0LCBiYWNrKTtcbiAgICAgIH0sIGJhY2spO1xuICAgIH0sIGNvbnRleHQpO1xuICB9XG5cbiAgdW5pZnlJbmRlcGVuZGVudGx5KGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBmb3J3YXJkID0gY3V0KGZvcndhcmQsIGJhY2spOyAvLy9cblxuICAgIGNvbnN0IHByZW1pc2VTdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHtwcmVtaXNlU3RyaW5nfScgcHJlbWlzZSBpbmRlcGVuZGVudGx5Li4uYCk7XG5cbiAgICByZXR1cm4gcmVjb25jaWxlKChjb250ZXh0KSA9PiB7XG4gICAgICBjb25zdCBzdGF0ZW1lbnQgPSB0aGlzLmdldFN0YXRlbWVudCgpLFxuICAgICAgICAgICAgcHJvY2VkdXJlQ2FsbCA9IHRoaXMuZ2V0UHJvY2VkdXJlQ2FsbCgpO1xuXG4gICAgICBpZiAoc3RhdGVtZW50ICE9PSBudWxsKSB7XG4gICAgICAgIGNvbnN0IHByZW1pc2VDb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksIC8vL1xuICAgICAgICAgICAgICBnZW5lcmFsQ29udGV4dCA9IHByZW1pc2VDb250ZXh0LCAgLy8vXG4gICAgICAgICAgICAgIHNwZWNpZmljQ29udGV4dCA9IGNvbnRleHQ7ICAvLy9cblxuICAgICAgICByZXR1cm4gc3RhdGVtZW50LnVuaWZ5SW5kZXBlbmRlbnRseShnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCAoc3RhdGVtZW50VW5pZmllc0luZGVwZW5kZW50bHkpID0+IHtcbiAgICAgICAgICBsZXQgdW5pZmllc0luZGVwZW5kZW50bHkgPSBmYWxzZTtcblxuICAgICAgICAgIGlmIChzdGF0ZW1lbnRVbmlmaWVzSW5kZXBlbmRlbnRseSkge1xuICAgICAgICAgICAgdW5pZmllc0luZGVwZW5kZW50bHkgPSB0cnVlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmICh1bmlmaWVzSW5kZXBlbmRlbnRseSkge1xuICAgICAgICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udW5pZmllZCB0aGUgJyR7cHJlbWlzZVN0cmluZ30nIHByZW1pc2UgaW5kZXBlbmRlbnRseS5gKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gY29udGludWF0aW9uKHVuaWZpZXNJbmRlcGVuZGVudGx5KTtcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChwcm9jZWR1cmVDYWxsICE9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiBwcm9jZWR1cmVDYWxsLnVuaWZ5SW5kZXBlbmRlbnRseShjb250ZXh0LCAocHJvY2VkdXJlQ2FsbFVuaWZpZWRJbmRlcGVuZGVudGx5KSA9PiB7XG4gICAgICAgICAgbGV0IHVuaWZpZXNJbmRlcGVuZGVudGx5ID0gZmFsc2U7XG5cbiAgICAgICAgICBpZiAocHJvY2VkdXJlQ2FsbFVuaWZpZWRJbmRlcGVuZGVudGx5KSB7XG4gICAgICAgICAgICB1bmlmaWVzSW5kZXBlbmRlbnRseSA9IHRydWU7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKHVuaWZpZXNJbmRlcGVuZGVudGx5KSB7XG4gICAgICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi51bmlmaWVkIHRoZSAnJHtwcmVtaXNlU3RyaW5nfScgcHJlbWlzZSBpbmRlcGVuZGVudGx5LmApO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiBjb250aW51YXRpb24odW5pZmllc0luZGVwZW5kZW50bHkpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9LCBjb250ZXh0KTtcbiAgfVxuXG4gIHVuaWZ5U3VicHJvb2Yoc3VicHJvb2YsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBwcmVtaXNlU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKSwgLy8vXG4gICAgICAgICAgc3VicHJvb2ZTdHJpbmcgPSBzdWJwcm9vZi5nZXRTdHJpbmcoKTtcblxuICAgIGNvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHtzdWJwcm9vZlN0cmluZ30nIHN1YnByb29mIHdpdGggdGhlICcke3ByZW1pc2VTdHJpbmd9JyBwcmVtaXNlLi4uYCk7XG5cbiAgICBjb25zdCBzdWJwcm9vZkFzc2VydGlvbiA9IHRoaXMuZmluZFN1YnByb29mQXNzZXJ0aW9uKCk7XG5cbiAgICBpZiAoc3VicHJvb2ZBc3NlcnRpb24gPT09IG51bGwpIHtcbiAgICAgIHJldHVybiBiYWNrKCk7XG4gICAgfVxuXG4gICAgY29uc3QgcHJlbWlzZUNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSwgLy8vXG4gICAgICAgICAgZ2VuZXJhbENvbnRleHQgPSBwcmVtaXNlQ29udGV4dCwgLy8vXG4gICAgICAgICAgc3BlY2lmaWNDb250ZXh0ID0gY29udGV4dDsgIC8vL1xuXG4gICAgcmV0dXJuIHJlY29uY2lsZSgoY29udGV4dCkgPT4ge1xuICAgICAgcmV0dXJuIHN1YnByb29mQXNzZXJ0aW9uLnVuaWZ5U3VicHJvb2Yoc3VicHJvb2YsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIChnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICAgIHNwZWNpZmljQ29udGV4dC5jb21taXQoY29udGV4dCk7XG5cbiAgICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udW5pZmllZCB0aGUgJyR7c3VicHJvb2ZTdHJpbmd9JyBzdWJwcm9vZiB3aXRoIHRoZSAnJHtwcmVtaXNlU3RyaW5nfScgcHJlbWlzZS5gKTtcblxuICAgICAgICByZXR1cm4gZm9yd2FyZChjb250ZXh0LCBiYWNrKTtcbiAgICAgIH0sIGJhY2spO1xuICAgIH0sIGNvbnRleHQpO1xuICB9XG5cbiAgdW5pZnlGYWN0KGZhY3QsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBmYWN0U3RyaW5nID0gZmFjdC5nZXRTdHJpbmcoKSxcbiAgICAgICAgICBwcmVtaXNlU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBVbmlmeWluZyB0aGUgJyR7ZmFjdFN0cmluZ30nIGZhY3Qgd2l0aCB0aGUgJyR7cHJlbWlzZVN0cmluZ30nIHByZW1pc2UuLi5gKTtcblxuICAgIGNvbnN0IGZhY3RDb250ZXh0ID0gZmFjdC5nZXRDb250ZXh0KCksXG4gICAgICAgICAgcHJlbWlzZUNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSwgLy8vXG4gICAgICAgICAgZ2VuZXJhbENvbnRleHQgPSBwcmVtaXNlQ29udGV4dCwgLy8vXG4gICAgICAgICAgc3BlY2lmaWNDb250ZXh0ID0gZmFjdENvbnRleHQ7ICAvLy9cblxuICAgIHJldHVybiByZWNvbmNpbGUoKHNwZWNpZmljQ29udGV4dCkgPT4ge1xuICAgICAgY29uc3Qgc3RhdGVtZW50ID0gZmFjdC5nZXRTdGF0ZW1lbnQoKTtcblxuICAgICAgcmV0dXJuIHRoaXMudW5pZnlTdGF0ZW1lbnQoc3RhdGVtZW50LCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCAoZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgICBzcGVjaWZpY0NvbnRleHQuY29tbWl0KGNvbnRleHQpO1xuXG4gICAgICAgIGNvbnRleHQuZGVidWcoYC4uLnVuaWZpZWQgdGhlICcke2ZhY3RTdHJpbmd9JyBmYWN0IHdpdGggdGhlICcke3ByZW1pc2VTdHJpbmd9JyBwcmVtaXNlLmApO1xuXG4gICAgICAgIHJldHVybiBmb3J3YXJkKGNvbnRleHQsIGJhY2spO1xuICAgICAgfSwgYmFjayk7XG4gICAgfSwgc3BlY2lmaWNDb250ZXh0KTtcbiAgfVxuXG4gIHVuaWZ5RmFjdE9yU3VicHJvb2YoZmFjdE9yU3VicHJvb2YsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBmb3J3YXJkID0gY3V0KGZvcndhcmQsIGJhY2spOyAvLy9cblxuICAgIGNvbnN0IGZhY3RPclN1YnByb29mRmFjdCA9IGZhY3RPclN1YnByb29mLmlzRmFjdCgpO1xuXG4gICAgaWYgKGZhY3RPclN1YnByb29mRmFjdCkge1xuICAgICAgY29uc3QgZmFjdCA9IGZhY3RPclN1YnByb29mOyAgLy8vXG5cbiAgICAgIHJldHVybiB0aGlzLnVuaWZ5RmFjdChmYWN0LCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKTtcbiAgICB9XG5cbiAgICBjb25zdCBzdWJwcm9vZiA9IGZhY3RPclN1YnByb29mOyAgLy8vXG5cbiAgICByZXR1cm4gdGhpcy51bmlmeVN1YnByb29mKHN1YnByb29mLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKTtcbiAgfVxuXG4gIHRvSlNPTigpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCk7XG5cbiAgICByZXR1cm4gc2VyaWFsaXNlKChjb250ZXh0KSA9PiB7XG4gICAgICBjb25zdCBzdHJpbmcgPSB0aGlzLmdldFN0cmluZygpO1xuXG4gICAgICBsZXQgYnJlYWtQb2ludDtcblxuICAgICAgYnJlYWtQb2ludCA9IHRoaXMuZ2V0QnJlYWtQb2ludCgpO1xuXG4gICAgICBjb25zdCBicmVha1BvaW50SlNPTiA9IGJyZWFrUG9pbnRUb0JyZWFrUG9pbnRKU09OKGJyZWFrUG9pbnQpO1xuXG4gICAgICBicmVha1BvaW50ID0gYnJlYWtQb2ludEpTT047ICAvLy9cblxuICAgICAgY29uc3QganNvbiA9IHtcbiAgICAgICAgY29udGV4dCxcbiAgICAgICAgc3RyaW5nLFxuICAgICAgICBicmVha1BvaW50XG4gICAgICB9O1xuXG4gICAgICByZXR1cm4ganNvbjtcbiAgICB9LCBjb250ZXh0KTtcbiAgfVxuXG4gIHN0YXRpYyBuYW1lID0gXCJQcmVtaXNlXCI7XG5cbiAgc3RhdGljIGZyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgICBsZXQgcHJlbWlzZTtcblxuICAgIGluc3RhbnRpYXRlKChjb250ZXh0KSA9PiB7XG4gICAgICB1bnNlcmlhbGlzZSgoanNvbiwgY29udGV4dCkgPT4ge1xuICAgICAgICBjb25zdCB7IHN0cmluZyB9ID0ganNvbixcbiAgICAgICAgICAgICAgcHJlbWlzZU5vZGUgPSBpbnN0YW50aWF0ZVByZW1pc2Uoc3RyaW5nLCBjb250ZXh0KSxcbiAgICAgICAgICAgICAgbm9kZSA9IHByZW1pc2VOb2RlLCAgLy8vXG4gICAgICAgICAgICAgIGJyZWFrUG9pbnQgPSBicmVha1BvaW50RnJvbUpTT04oanNvbiksXG4gICAgICAgICAgICAgIHN0YXRlbWVudCA9IHN0YXRlbWVudEZyb21QcmVtaXNlTm9kZShwcmVtaXNlTm9kZSwgY29udGV4dCksXG4gICAgICAgICAgICAgIHJlZmVyZW5jZSA9IHJlZmVyZW5jZUZyb21QcmVtaXNlTm9kZShwcmVtaXNlTm9kZSwgY29udGV4dCksXG4gICAgICAgICAgICAgIHByb2NlZHVyZUNhbGwgPSBwcm9jZWR1cmVDYWxsRnJvbVByZW1pc2VOb2RlKHByZW1pc2VOb2RlLCBjb250ZXh0KTtcblxuICAgICAgICBwcmVtaXNlID0gbmV3IFByZW1pc2UoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCBzdGF0ZW1lbnQsIHJlZmVyZW5jZSwgcHJvY2VkdXJlQ2FsbCk7XG4gICAgICB9LCBqc29uLCBjb250ZXh0KTtcbiAgICB9LCBjb250ZXh0KTtcblxuICAgIHJldHVybiBwcmVtaXNlO1xuICB9XG59KTtcblxuZnVuY3Rpb24gc3RhdGVtZW50RnJvbVByZW1pc2VOb2RlKHByZW1pc2VOb2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IHN0YXRlbWVudE5vZGUgPSBwcmVtaXNlTm9kZS5nZXRTdGF0ZW1lbnROb2RlKCksXG4gICAgICAgIHN0YXRlbWVudCA9IGNvbnRleHQuZmluZFN0YXRlbWVudEJ5U3RhdGVtZW50Tm9kZShzdGF0ZW1lbnROb2RlKTtcblxuICByZXR1cm4gc3RhdGVtZW50O1xufVxuIl0sIm5hbWVzIjpbImN1dCIsImFsbCIsImNvbnRpbnVhdGlvblV0aWxpdGllcyIsImJyZWFrYWJsZSIsImJyZWFrUG9pbnRGcm9tSlNPTiIsImJyZWFrUG9pbnRUb0JyZWFrUG9pbnRKU09OIiwiYnJlYWtQb2ludFV0aWxpdGllcyIsImRlZmluZSIsIlByZW1pc2UiLCJGYWN0IiwiZ2V0UHJlbWlzZU5vZGUiLCJub2RlIiwiZ2V0Tm9kZSIsInByZW1pc2VOb2RlIiwiZ2V0U3RhdGVtZW50Tm9kZSIsInN0YXRlbWVudE5vZGUiLCJmaW5kU3VicHJvb2ZBc3NlcnRpb24iLCJzdWJwcm9vZkFzc2VydGlvbiIsInN1YnByb29mQXNzZXJ0aW9uTm9kZSIsImdldFN1YnByb29mQXNzZXJ0aW9uTm9kZSIsImNvbnRleHQiLCJnZXRDb250ZXh0IiwiZmluZEFzc2VydGlvbkJ5QXNzZXJ0aW9uTm9kZSIsImlzTWFsZm9ybWVkIiwibWFsZm9ybWVkIiwidmVyaWZ5IiwiZm9yd2FyZCIsImJhY2siLCJwcmVtaXNlU3RyaW5nIiwiZ2V0U3RyaW5nIiwidHJhY2UiLCJkZWJ1ZyIsImRlY2xhcmUiLCJzdGF0ZSIsInZhbGlkYXRlIiwicHJlbWlzZSIsIl8iLCJhdHRlbXB0IiwidmFsaWRhdGVTdGF0ZW1lbnQiLCJiaW5kIiwidmFsaWRhdGVQcm9jZWR1cmVDYWxsIiwiY29tbWl0IiwidW5pZnlJbmRlcGVuZGVudGx5IiwicmVjb25jaWxlIiwic3RhdGVtZW50IiwiZ2V0U3RhdGVtZW50IiwicHJvY2VkdXJlQ2FsbCIsImdldFByb2NlZHVyZUNhbGwiLCJwcmVtaXNlQ29udGV4dCIsImdlbmVyYWxDb250ZXh0Iiwic3BlY2lmaWNDb250ZXh0Iiwic3RhdGVtZW50VW5pZmllc0luZGVwZW5kZW50bHkiLCJ1bmlmaWVzSW5kZXBlbmRlbnRseSIsImNvbnRpbnVhdGlvbiIsInByb2NlZHVyZUNhbGxVbmlmaWVkSW5kZXBlbmRlbnRseSIsInVuaWZ5U3VicHJvb2YiLCJzdWJwcm9vZiIsInN1YnByb29mU3RyaW5nIiwidW5pZnlGYWN0IiwiZmFjdCIsImZhY3RTdHJpbmciLCJmYWN0Q29udGV4dCIsInVuaWZ5U3RhdGVtZW50IiwidW5pZnlGYWN0T3JTdWJwcm9vZiIsImZhY3RPclN1YnByb29mIiwiZmFjdE9yU3VicHJvb2ZGYWN0IiwiaXNGYWN0IiwidG9KU09OIiwic2VyaWFsaXNlIiwic3RyaW5nIiwiYnJlYWtQb2ludCIsImdldEJyZWFrUG9pbnQiLCJicmVha1BvaW50SlNPTiIsImpzb24iLCJuYW1lIiwiZnJvbUpTT04iLCJpbnN0YW50aWF0ZSIsInVuc2VyaWFsaXNlIiwiaW5zdGFudGlhdGVQcmVtaXNlIiwic3RhdGVtZW50RnJvbVByZW1pc2VOb2RlIiwicmVmZXJlbmNlIiwicmVmZXJlbmNlRnJvbVByZW1pc2VOb2RlIiwicHJvY2VkdXJlQ2FsbEZyb21QcmVtaXNlTm9kZSIsImZpbmRTdGF0ZW1lbnRCeVN0YXRlbWVudE5vZGUiXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQWVBOzs7ZUFBQTs7O2dDQWIyRDs2REFFMUM7MEJBRU07dUJBQ0M7NkJBQ1c7eUJBQ29DO3lCQUNDOzs7Ozs7QUFFeEUsTUFBTSxFQUFFQSxHQUFHLEVBQUVDLEdBQUcsRUFBRSxHQUFHQyxxQ0FBcUIsRUFDcEMsRUFBRUMsU0FBUyxFQUFFQyxrQkFBa0IsRUFBRUMsMEJBQTBCLEVBQUUsR0FBR0MsbUNBQW1CO01BRXpGLFdBQWVDLElBQUFBLGdCQUFNLEVBQUMsTUFBTUMsZ0JBQWdCQyxhQUFJO0lBQzlDQyxpQkFB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
|
|
186
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L2ZhY3QvcHJlbWlzZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgYnJlYWtQb2ludFV0aWxpdGllcywgY29udGludWF0aW9uVXRpbGl0aWVzIH0gZnJvbSBcIm9jY2FtLWxhbmd1YWdlc1wiO1xuXG5pbXBvcnQgRmFjdCBmcm9tIFwiLi4vZmFjdFwiO1xuXG5pbXBvcnQgeyBkZWZpbmUgfSBmcm9tIFwiLi4vLi4vZWxlbWVudHNcIjtcbmltcG9ydCB7IGRlY2xhcmUgfSBmcm9tIFwiLi4vLi4vdXRpbGl0aWVzL3N0YXRlXCI7XG5pbXBvcnQgeyBpbnN0YW50aWF0ZVByZW1pc2UgfSBmcm9tIFwiLi4vLi4vcHJvY2Vzcy9pbnN0YW50aWF0ZVwiO1xuaW1wb3J0IHsgcmVmZXJlbmNlRnJvbVByZW1pc2VOb2RlLCBwcm9jZWR1cmVDYWxsRnJvbVByZW1pc2VOb2RlIH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9lbGVtZW50XCI7XG5pbXBvcnQgeyBhdHRlbXB0LCByZWNvbmNpbGUsIHNlcmlhbGlzZSwgdW5zZXJpYWxpc2UsIGluc3RhbnRpYXRlIH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9jb250ZXh0XCI7XG5cbmNvbnN0IHsgY3V0LCBhbGwgfSA9IGNvbnRpbnVhdGlvblV0aWxpdGllcyxcbiAgICAgIHsgYnJlYWthYmxlLCBicmVha1BvaW50RnJvbUpTT04sIGJyZWFrUG9pbnRUb0JyZWFrUG9pbnRKU09OIH0gPSBicmVha1BvaW50VXRpbGl0aWVzO1xuXG5leHBvcnQgZGVmYXVsdCBkZWZpbmUoY2xhc3MgUHJlbWlzZSBleHRlbmRzIEZhY3Qge1xuICBnZXRQcmVtaXNlTm9kZSgpIHtcbiAgICBjb25zdCBub2RlID0gdGhpcy5nZXROb2RlKCksXG4gICAgICAgICAgcHJlbWlzZU5vZGUgPSBub2RlOyAvLy9cblxuICAgIHJldHVybiBwcmVtaXNlTm9kZTtcbiAgfVxuXG4gIGdldFN0YXRlbWVudE5vZGUoKSB7XG4gICAgY29uc3QgcHJlbWlzZU5vZGUgPSB0aGlzLmdldFByZW1pc2VOb2RlKCksXG4gICAgICAgICAgc3RhdGVtZW50Tm9kZSA9IHByZW1pc2VOb2RlLmdldFN0YXRlbWVudE5vZGUoKTtcblxuICAgIHJldHVybiBzdGF0ZW1lbnROb2RlO1xuICB9XG5cbiAgZmluZFN1YnByb29mQXNzZXJ0aW9uKCkge1xuICAgIGxldCBzdWJwcm9vZkFzc2VydGlvbiA9IG51bGw7XG5cbiAgICBjb25zdCBzdGF0ZW1lbnROb2RlID0gdGhpcy5nZXRTdGF0ZW1lbnROb2RlKCk7XG5cbiAgICBpZiAoc3RhdGVtZW50Tm9kZSAhPT0gbnVsbCkge1xuICAgICAgY29uc3Qgc3VicHJvb2ZBc3NlcnRpb25Ob2RlID0gc3RhdGVtZW50Tm9kZS5nZXRTdWJwcm9vZkFzc2VydGlvbk5vZGUoKTtcblxuICAgICAgaWYgKHN1YnByb29mQXNzZXJ0aW9uTm9kZSAhPT0gbnVsbCkge1xuICAgICAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCk7XG5cbiAgICAgICAgc3VicHJvb2ZBc3NlcnRpb24gPSBjb250ZXh0LmZpbmRBc3NlcnRpb25CeUFzc2VydGlvbk5vZGUoc3VicHJvb2ZBc3NlcnRpb25Ob2RlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gc3VicHJvb2ZBc3NlcnRpb247XG4gIH1cblxuICBpc01hbGZvcm1lZCgpIHtcbiAgICBjb25zdCBwcmVtaXNlTm9kZSA9IHRoaXMuZ2V0UHJlbWlzZU5vZGUoKSxcbiAgICAgICAgICBtYWxmb3JtZWQgPSBwcmVtaXNlTm9kZS5pc01hbGZvcm1lZCgpO1xuXG4gICAgcmV0dXJuIG1hbGZvcm1lZDtcbiAgfVxuXG4gIHZlcmlmeSA9IGJyZWFrYWJsZShmdW5jdGlvbiAoY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGZvcndhcmQgPSBjdXQoZm9yd2FyZCwgYmFjayk7IC8vL1xuXG4gICAgY29uc3QgcHJlbWlzZVN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7IC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHtwcmVtaXNlU3RyaW5nfScgcHJlbWlzZS4uLmApO1xuXG4gICAgY29uc3QgbWFsZm9ybWVkID0gdGhpcy5pc01hbGZvcm1lZCgpO1xuXG4gICAgaWYgKG1hbGZvcm1lZCkge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgVW5hYmxlIHRvIHZlcmlmeSB0aGUgJyR7cHJlbWlzZVN0cmluZ30nIHByZW1pc2UgYmVjYXVzZSBpdCBpcyBtYWxmb3JtZWQuYCk7XG5cbiAgICAgIHJldHVybiBiYWNrKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGRlY2xhcmUoKHN0YXRlKSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy52YWxpZGF0ZShzdGF0ZSwgY29udGV4dCwgKHByZW1pc2UsIF8sIGJhY2spID0+IHtcbiAgICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke3ByZW1pc2VTdHJpbmd9JyBwcmVtaXNlLmApO1xuXG4gICAgICAgIHJldHVybiBmb3J3YXJkKGNvbnRleHQsIGJhY2spO1xuICAgICAgfSwgYmFjayk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIHZhbGlkYXRlKHN0YXRlLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3QgcHJlbWlzZVN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7IC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7cHJlbWlzZVN0cmluZ30nIHByZW1pc2UuLi5gKTtcblxuICAgIHJldHVybiBhdHRlbXB0KChjb250ZXh0KSA9PiB7XG4gICAgICBjb25zdCB2YWxpZGF0ZVN0YXRlbWVudCA9IHRoaXMudmFsaWRhdGVTdGF0ZW1lbnQuYmluZCh0aGlzKSxcbiAgICAgICAgICAgIHZhbGlkYXRlUHJvY2VkdXJlQ2FsbCA9IHRoaXMudmFsaWRhdGVQcm9jZWR1cmVDYWxsLmJpbmQodGhpcyk7XG5cbiAgICAgIHJldHVybiBhbGwoW1xuICAgICAgICB2YWxpZGF0ZVN0YXRlbWVudCxcbiAgICAgICAgdmFsaWRhdGVQcm9jZWR1cmVDYWxsXG4gICAgICBdLCBzdGF0ZSwgY29udGV4dCwgKHN0YXRlLCBjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICAgIGNvbnN0IHByZW1pc2UgPSB0aGlzOyAvLy9cblxuICAgICAgICB0aGlzLmNvbW1pdChjb250ZXh0KTtcblxuICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke3ByZW1pc2VTdHJpbmd9JyBwcmVtaXNlLmApO1xuXG4gICAgICAgIHJldHVybiBmb3J3YXJkKHByZW1pc2UsIGNvbnRleHQsIGJhY2spO1xuICAgICAgfSwgYmFjayk7XG4gICAgfSwgY29udGV4dCk7XG4gIH1cblxuICB1bmlmeUluZGVwZW5kZW50bHkoY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGZvcndhcmQgPSBjdXQoZm9yd2FyZCwgYmFjayk7IC8vL1xuXG4gICAgY29uc3QgcHJlbWlzZVN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7IC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVW5pZnlpbmcgdGhlICcke3ByZW1pc2VTdHJpbmd9JyBwcmVtaXNlIGluZGVwZW5kZW50bHkuLi5gKTtcblxuICAgIHJldHVybiByZWNvbmNpbGUoKGNvbnRleHQpID0+IHtcbiAgICAgIGNvbnN0IHN0YXRlbWVudCA9IHRoaXMuZ2V0U3RhdGVtZW50KCksXG4gICAgICAgICAgICBwcm9jZWR1cmVDYWxsID0gdGhpcy5nZXRQcm9jZWR1cmVDYWxsKCk7XG5cbiAgICAgIGlmIChzdGF0ZW1lbnQgIT09IG51bGwpIHtcbiAgICAgICAgY29uc3QgcHJlbWlzZUNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSwgLy8vXG4gICAgICAgICAgICAgIGdlbmVyYWxDb250ZXh0ID0gcHJlbWlzZUNvbnRleHQsICAvLy9cbiAgICAgICAgICAgICAgc3BlY2lmaWNDb250ZXh0ID0gY29udGV4dDsgIC8vL1xuXG4gICAgICAgIHJldHVybiBzdGF0ZW1lbnQudW5pZnlJbmRlcGVuZGVudGx5KGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIChzdGF0ZW1lbnRVbmlmaWVzSW5kZXBlbmRlbnRseSkgPT4ge1xuICAgICAgICAgIGxldCB1bmlmaWVzSW5kZXBlbmRlbnRseSA9IGZhbHNlO1xuXG4gICAgICAgICAgaWYgKHN0YXRlbWVudFVuaWZpZXNJbmRlcGVuZGVudGx5KSB7XG4gICAgICAgICAgICB1bmlmaWVzSW5kZXBlbmRlbnRseSA9IHRydWU7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKHVuaWZpZXNJbmRlcGVuZGVudGx5KSB7XG4gICAgICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi51bmlmaWVkIHRoZSAnJHtwcmVtaXNlU3RyaW5nfScgcHJlbWlzZSBpbmRlcGVuZGVudGx5LmApO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiBjb250aW51YXRpb24odW5pZmllc0luZGVwZW5kZW50bHkpO1xuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgaWYgKHByb2NlZHVyZUNhbGwgIT09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIHByb2NlZHVyZUNhbGwudW5pZnlJbmRlcGVuZGVudGx5KGNvbnRleHQsIChwcm9jZWR1cmVDYWxsVW5pZmllZEluZGVwZW5kZW50bHkpID0+IHtcbiAgICAgICAgICBsZXQgdW5pZmllc0luZGVwZW5kZW50bHkgPSBmYWxzZTtcblxuICAgICAgICAgIGlmIChwcm9jZWR1cmVDYWxsVW5pZmllZEluZGVwZW5kZW50bHkpIHtcbiAgICAgICAgICAgIHVuaWZpZXNJbmRlcGVuZGVudGx5ID0gdHJ1ZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAodW5pZmllc0luZGVwZW5kZW50bHkpIHtcbiAgICAgICAgICAgIGNvbnRleHQuZGVidWcoYC4uLnVuaWZpZWQgdGhlICcke3ByZW1pc2VTdHJpbmd9JyBwcmVtaXNlIGluZGVwZW5kZW50bHkuYCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbih1bmlmaWVzSW5kZXBlbmRlbnRseSk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0sIGNvbnRleHQpO1xuICB9XG5cbiAgdW5pZnlTdWJwcm9vZihzdWJwcm9vZiwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IHByZW1pc2VTdHJpbmcgPSB0aGlzLmdldFN0cmluZygpLCAvLy9cbiAgICAgICAgICBzdWJwcm9vZlN0cmluZyA9IHN1YnByb29mLmdldFN0cmluZygpO1xuXG4gICAgY29udGV4dC50cmFjZShgVW5pZnlpbmcgdGhlICcke3N1YnByb29mU3RyaW5nfScgc3VicHJvb2Ygd2l0aCB0aGUgJyR7cHJlbWlzZVN0cmluZ30nIHByZW1pc2UuLi5gKTtcblxuICAgIGNvbnN0IHN1YnByb29mQXNzZXJ0aW9uID0gdGhpcy5maW5kU3VicHJvb2ZBc3NlcnRpb24oKTtcblxuICAgIGlmIChzdWJwcm9vZkFzc2VydGlvbiA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuIGJhY2soKTtcbiAgICB9XG5cbiAgICBjb25zdCBwcmVtaXNlQ29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpLCAvLy9cbiAgICAgICAgICBnZW5lcmFsQ29udGV4dCA9IHByZW1pc2VDb250ZXh0LCAvLy9cbiAgICAgICAgICBzcGVjaWZpY0NvbnRleHQgPSBjb250ZXh0OyAgLy8vXG5cbiAgICByZXR1cm4gcmVjb25jaWxlKChjb250ZXh0KSA9PiB7XG4gICAgICByZXR1cm4gc3VicHJvb2ZBc3NlcnRpb24udW5pZnlTdWJwcm9vZihzdWJwcm9vZiwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgKGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIGJhY2spID0+IHtcbiAgICAgICAgc3BlY2lmaWNDb250ZXh0LmNvbW1pdChjb250ZXh0KTtcblxuICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi51bmlmaWVkIHRoZSAnJHtzdWJwcm9vZlN0cmluZ30nIHN1YnByb29mIHdpdGggdGhlICcke3ByZW1pc2VTdHJpbmd9JyBwcmVtaXNlLmApO1xuXG4gICAgICAgIHJldHVybiBmb3J3YXJkKGNvbnRleHQsIGJhY2spO1xuICAgICAgfSwgYmFjayk7XG4gICAgfSwgY29udGV4dCk7XG4gIH1cblxuICB1bmlmeUZhY3QoZmFjdCwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IGZhY3RTdHJpbmcgPSBmYWN0LmdldFN0cmluZygpLFxuICAgICAgICAgIHByZW1pc2VTdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHtmYWN0U3RyaW5nfScgZmFjdCB3aXRoIHRoZSAnJHtwcmVtaXNlU3RyaW5nfScgcHJlbWlzZS4uLmApO1xuXG4gICAgY29uc3QgZmFjdENvbnRleHQgPSBmYWN0LmdldENvbnRleHQoKSxcbiAgICAgICAgICBwcmVtaXNlQ29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpLCAvLy9cbiAgICAgICAgICBnZW5lcmFsQ29udGV4dCA9IHByZW1pc2VDb250ZXh0LCAvLy9cbiAgICAgICAgICBzcGVjaWZpY0NvbnRleHQgPSBmYWN0Q29udGV4dDsgIC8vL1xuXG4gICAgcmV0dXJuIHJlY29uY2lsZSgoc3BlY2lmaWNDb250ZXh0KSA9PiB7XG4gICAgICBjb25zdCBzdGF0ZW1lbnQgPSBmYWN0LmdldFN0YXRlbWVudCgpO1xuXG4gICAgICByZXR1cm4gdGhpcy51bmlmeVN0YXRlbWVudChzdGF0ZW1lbnQsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIChnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICAgIHNwZWNpZmljQ29udGV4dC5jb21taXQoY29udGV4dCk7XG5cbiAgICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udW5pZmllZCB0aGUgJyR7ZmFjdFN0cmluZ30nIGZhY3Qgd2l0aCB0aGUgJyR7cHJlbWlzZVN0cmluZ30nIHByZW1pc2UuYCk7XG5cbiAgICAgICAgcmV0dXJuIGZvcndhcmQoY29udGV4dCwgYmFjayk7XG4gICAgICB9LCBiYWNrKTtcbiAgICB9LCBzcGVjaWZpY0NvbnRleHQpO1xuICB9XG5cbiAgdW5pZnlGYWN0T3JTdWJwcm9vZihmYWN0T3JTdWJwcm9vZiwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGZvcndhcmQgPSBjdXQoZm9yd2FyZCwgYmFjayk7IC8vL1xuXG4gICAgY29uc3QgZmFjdE9yU3VicHJvb2ZGYWN0ID0gZmFjdE9yU3VicHJvb2YuaXNGYWN0KCk7XG5cbiAgICBpZiAoZmFjdE9yU3VicHJvb2ZGYWN0KSB7XG4gICAgICBjb25zdCBmYWN0ID0gZmFjdE9yU3VicHJvb2Y7ICAvLy9cblxuICAgICAgcmV0dXJuIHRoaXMudW5pZnlGYWN0KGZhY3QsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spO1xuICAgIH1cblxuICAgIGNvbnN0IHN1YnByb29mID0gZmFjdE9yU3VicHJvb2Y7ICAvLy9cblxuICAgIHJldHVybiB0aGlzLnVuaWZ5U3VicHJvb2Yoc3VicHJvb2YsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spO1xuICB9XG5cbiAgdG9KU09OKCkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKTtcblxuICAgIHJldHVybiBzZXJpYWxpc2UoKGNvbnRleHQpID0+IHtcbiAgICAgIGNvbnN0IHN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7XG5cbiAgICAgIGxldCBicmVha1BvaW50O1xuXG4gICAgICBicmVha1BvaW50ID0gdGhpcy5nZXRCcmVha1BvaW50KCk7XG5cbiAgICAgIGNvbnN0IGJyZWFrUG9pbnRKU09OID0gYnJlYWtQb2ludFRvQnJlYWtQb2ludEpTT04oYnJlYWtQb2ludCk7XG5cbiAgICAgIGJyZWFrUG9pbnQgPSBicmVha1BvaW50SlNPTjsgIC8vL1xuXG4gICAgICBjb25zdCBqc29uID0ge1xuICAgICAgICBjb250ZXh0LFxuICAgICAgICBzdHJpbmcsXG4gICAgICAgIGJyZWFrUG9pbnRcbiAgICAgIH07XG5cbiAgICAgIHJldHVybiBqc29uO1xuICAgIH0sIGNvbnRleHQpO1xuICB9XG5cbiAgc3RhdGljIG5hbWUgPSBcIlByZW1pc2VcIjtcblxuICBzdGF0aWMgZnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICAgIGxldCBwcmVtaXNlO1xuXG4gICAgaW5zdGFudGlhdGUoKGNvbnRleHQpID0+IHtcbiAgICAgIHVuc2VyaWFsaXNlKChqc29uLCBjb250ZXh0KSA9PiB7XG4gICAgICAgIGNvbnN0IHsgc3RyaW5nIH0gPSBqc29uLFxuICAgICAgICAgICAgICBwcmVtaXNlTm9kZSA9IGluc3RhbnRpYXRlUHJlbWlzZShzdHJpbmcsIGNvbnRleHQpLFxuICAgICAgICAgICAgICBub2RlID0gcHJlbWlzZU5vZGUsICAvLy9cbiAgICAgICAgICAgICAgYnJlYWtQb2ludCA9IGJyZWFrUG9pbnRGcm9tSlNPTihqc29uKSxcbiAgICAgICAgICAgICAgc3RhdGVtZW50ID0gc3RhdGVtZW50RnJvbVByZW1pc2VOb2RlKHByZW1pc2VOb2RlLCBjb250ZXh0KSxcbiAgICAgICAgICAgICAgcmVmZXJlbmNlID0gcmVmZXJlbmNlRnJvbVByZW1pc2VOb2RlKHByZW1pc2VOb2RlLCBjb250ZXh0KSxcbiAgICAgICAgICAgICAgcHJvY2VkdXJlQ2FsbCA9IHByb2NlZHVyZUNhbGxGcm9tUHJlbWlzZU5vZGUocHJlbWlzZU5vZGUsIGNvbnRleHQpO1xuXG4gICAgICAgIHByZW1pc2UgPSBuZXcgUHJlbWlzZShjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIHN0YXRlbWVudCwgcmVmZXJlbmNlLCBwcm9jZWR1cmVDYWxsKTtcbiAgICAgIH0sIGpzb24sIGNvbnRleHQpO1xuICAgIH0sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIHByZW1pc2U7XG4gIH1cbn0pO1xuXG5mdW5jdGlvbiBzdGF0ZW1lbnRGcm9tUHJlbWlzZU5vZGUocHJlbWlzZU5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3Qgc3RhdGVtZW50Tm9kZSA9IHByZW1pc2VOb2RlLmdldFN0YXRlbWVudE5vZGUoKSxcbiAgICAgICAgc3RhdGVtZW50ID0gY29udGV4dC5maW5kU3RhdGVtZW50QnlTdGF0ZW1lbnROb2RlKHN0YXRlbWVudE5vZGUpO1xuXG4gIHJldHVybiBzdGF0ZW1lbnQ7XG59XG4iXSwibmFtZXMiOlsiY3V0IiwiYWxsIiwiY29udGludWF0aW9uVXRpbGl0aWVzIiwiYnJlYWthYmxlIiwiYnJlYWtQb2ludEZyb21KU09OIiwiYnJlYWtQb2ludFRvQnJlYWtQb2ludEpTT04iLCJicmVha1BvaW50VXRpbGl0aWVzIiwiZGVmaW5lIiwiUHJlbWlzZSIsIkZhY3QiLCJnZXRQcmVtaXNlTm9kZSIsIm5vZGUiLCJnZXROb2RlIiwicHJlbWlzZU5vZGUiLCJnZXRTdGF0ZW1lbnROb2RlIiwic3RhdGVtZW50Tm9kZSIsImZpbmRTdWJwcm9vZkFzc2VydGlvbiIsInN1YnByb29mQXNzZXJ0aW9uIiwic3VicHJvb2ZBc3NlcnRpb25Ob2RlIiwiZ2V0U3VicHJvb2ZBc3NlcnRpb25Ob2RlIiwiY29udGV4dCIsImdldENvbnRleHQiLCJmaW5kQXNzZXJ0aW9uQnlBc3NlcnRpb25Ob2RlIiwiaXNNYWxmb3JtZWQiLCJtYWxmb3JtZWQiLCJ2ZXJpZnkiLCJmb3J3YXJkIiwiYmFjayIsInByZW1pc2VTdHJpbmciLCJnZXRTdHJpbmciLCJ0cmFjZSIsImRlYnVnIiwiZGVjbGFyZSIsInN0YXRlIiwidmFsaWRhdGUiLCJwcmVtaXNlIiwiXyIsImF0dGVtcHQiLCJ2YWxpZGF0ZVN0YXRlbWVudCIsImJpbmQiLCJ2YWxpZGF0ZVByb2NlZHVyZUNhbGwiLCJjb21taXQiLCJ1bmlmeUluZGVwZW5kZW50bHkiLCJyZWNvbmNpbGUiLCJzdGF0ZW1lbnQiLCJnZXRTdGF0ZW1lbnQiLCJwcm9jZWR1cmVDYWxsIiwiZ2V0UHJvY2VkdXJlQ2FsbCIsInByZW1pc2VDb250ZXh0IiwiZ2VuZXJhbENvbnRleHQiLCJzcGVjaWZpY0NvbnRleHQiLCJzdGF0ZW1lbnRVbmlmaWVzSW5kZXBlbmRlbnRseSIsInVuaWZpZXNJbmRlcGVuZGVudGx5IiwiY29udGludWF0aW9uIiwicHJvY2VkdXJlQ2FsbFVuaWZpZWRJbmRlcGVuZGVudGx5IiwidW5pZnlTdWJwcm9vZiIsInN1YnByb29mIiwic3VicHJvb2ZTdHJpbmciLCJ1bmlmeUZhY3QiLCJmYWN0IiwiZmFjdFN0cmluZyIsImZhY3RDb250ZXh0IiwidW5pZnlTdGF0ZW1lbnQiLCJ1bmlmeUZhY3RPclN1YnByb29mIiwiZmFjdE9yU3VicHJvb2YiLCJmYWN0T3JTdWJwcm9vZkZhY3QiLCJpc0ZhY3QiLCJ0b0pTT04iLCJzZXJpYWxpc2UiLCJzdHJpbmciLCJicmVha1BvaW50IiwiZ2V0QnJlYWtQb2ludCIsImJyZWFrUG9pbnRKU09OIiwianNvbiIsIm5hbWUiLCJmcm9tSlNPTiIsImluc3RhbnRpYXRlIiwidW5zZXJpYWxpc2UiLCJpbnN0YW50aWF0ZVByZW1pc2UiLCJzdGF0ZW1lbnRGcm9tUHJlbWlzZU5vZGUiLCJyZWZlcmVuY2UiLCJyZWZlcmVuY2VGcm9tUHJlbWlzZU5vZGUiLCJwcm9jZWR1cmVDYWxsRnJvbVByZW1pc2VOb2RlIiwiZmluZFN0YXRlbWVudEJ5U3RhdGVtZW50Tm9kZSJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBZUE7OztlQUFBOzs7Z0NBYjJEOzZEQUUxQzswQkFFTTt1QkFDQzs2QkFDVzt5QkFDb0M7eUJBQ0M7Ozs7OztBQUV4RSxNQUFNLEVBQUVBLEdBQUcsRUFBRUMsR0FBRyxFQUFFLEdBQUdDLHFDQUFxQixFQUNwQyxFQUFFQyxTQUFTLEVBQUVDLGtCQUFrQixFQUFFQywwQkFBMEIsRUFBRSxHQUFHQyxtQ0FBbUI7TUFFekYsV0FBZUMsSUFBQUEsZ0JBQU0sRUFBQyxNQUFNQyxnQkFBZ0JDLGFBQUk7SUFDOUNDLGlCQUFp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
|
package/lib/element/fact/step.js
CHANGED
|
@@ -152,4 +152,4 @@ const _default = (0, _elements.define)(class Step extends _fact.default {
|
|
|
152
152
|
static name = "Step";
|
|
153
153
|
});
|
|
154
154
|
|
|
155
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L2ZhY3Qvc3RlcC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgYXJyYXlVdGlsaXRpZXMgfSBmcm9tIFwibmVjZXNzYXJ5XCI7XG5pbXBvcnQgeyBicmVha1BvaW50VXRpbGl0aWVzLCBjb250aW51YXRpb25VdGlsaXRpZXMgfSBmcm9tIFwib2NjYW0tbGFuZ3VhZ2VzXCI7XG5cbmltcG9ydCBGYWN0IGZyb20gXCIuLi9mYWN0XCI7XG5cbmltcG9ydCB7IGRlZmluZSB9IGZyb20gXCIuLi8uLi9lbGVtZW50c1wiO1xuaW1wb3J0IHsgYXR0ZW1wdCB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvY29udGV4dFwiO1xuaW1wb3J0IHsgdW5pZnlTdGVwcyB9IGZyb20gXCIuLi8uLi9wcm9jZXNzL3VuaWZpY2F0aW9uXCI7XG5pbXBvcnQgeyBkZXJpdmUsIGRlY2xhcmUgfSBmcm9tIFwiLi4vLi4vdXRpbGl0aWVzL3N0YXRlXCI7XG5cbmNvbnN0IHsgYnJlYWthYmxlIH0gPSBicmVha1BvaW50VXRpbGl0aWVzLFxuICAgICAgeyBiYWNrd2FyZHNTb21lIH0gPSBhcnJheVV0aWxpdGllcyxcbiAgICAgIHsgY3V0LCBhbGwsIHNvbWUgfSA9IGNvbnRpbnVhdGlvblV0aWxpdGllcztcblxuZXhwb3J0IGRlZmF1bHQgZGVmaW5lKGNsYXNzIFN0ZXAgZXh0ZW5kcyBGYWN0IHtcbiAgY29uc3RydWN0b3IoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCBzdGF0ZW1lbnQsIHJlZmVyZW5jZSwgcHJvY2VkdXJlQ2FsbCwgc2NoZW1hQXNzZXJ0aW9uLCBzaWduYXR1cmVBc3NlcnRpb24pIHtcbiAgICBzdXBlcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIHN0YXRlbWVudCwgcmVmZXJlbmNlLCBwcm9jZWR1cmVDYWxsKTtcblxuICAgIHRoaXMuc2NoZW1hQXNzZXJ0aW9uID0gc2NoZW1hQXNzZXJ0aW9uO1xuICAgIHRoaXMuc2lnbmF0dXJlQXNzZXJ0aW9uID0gc2lnbmF0dXJlQXNzZXJ0aW9uO1xuICB9XG5cbiAgZ2V0U2NoZW1hQXNzZXJ0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLnNjaGVtYUFzc2VydGlvbjtcbiAgfVxuXG4gIGdldFNpZ25hdHVyZUFzc2VydGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5zaWduYXR1cmVBc3NlcnRpb247XG4gIH1cblxuICBnZXRTdGVwTm9kZSgpIHtcbiAgICBjb25zdCBub2RlID0gdGhpcy5nZXROb2RlKCksXG4gICAgICAgICAgc3RlcE5vZGUgPSBub2RlOyAgLy8vXG5cbiAgICByZXR1cm4gc3RlcE5vZGU7XG4gIH1cblxuICBnZXRTdGF0ZW1lbnROb2RlKCkge1xuICAgIGNvbnN0IHN0YXRlbWVudCA9IHRoaXMuZ2V0U3RhdGVtZW50KCksXG4gICAgICAgICAgc3RhdGVtZW50Tm9kZSA9IHN0YXRlbWVudC5nZXROb2RlKCk7XG5cbiAgICByZXR1cm4gc3RhdGVtZW50Tm9kZTtcbiAgfVxuXG4gIGlzU3RlcCgpIHtcbiAgICBjb25zdCBzdGVwID0gdHJ1ZTtcblxuICAgIHJldHVybiBzdGVwO1xuICB9XG5cbiAgaWREZWNsYXJlZCgpIHtcbiAgICBjb25zdCBxdWFsaWZpZWQgPSB0aGlzLmlzUXVhbGlmaWVkKCksXG4gICAgICAgICAgZGVjbGFyZWQgPSBxdWFsaWZpZWQ7IC8vL1xuXG4gICAgcmV0dXJuIGRlY2xhcmVkO1xuICB9XG5cbiAgaXNRdWFsaWZpZWQoKSB7XG4gICAgY29uc3QgcXVhbGlmaWVkID0gKCh0aGlzLnJlZmVyZW5jZSAhPT0gbnVsbCkgfHwgKHRoaXMuc2NoZW1hQXNzZXJ0aW9uICE9PSBudWxsKSB8fCAodGhpcy5zaWduYXR1cmVBc3NlcnRpb24gIT09IG51bGwpKTtcblxuICAgIHJldHVybiBxdWFsaWZpZWQ7XG4gIH1cblxuICBpc1VucXVhbGlmaWVkKCkge1xuICAgIGNvbnN0IHF1YWxpZmllZCA9IHRoaXMuaXNRdWFsaWZpZWQoKSxcbiAgICAgICAgICB1bnF1YWxpZmllZCA9ICFxdWFsaWZpZWQ7XG5cbiAgICByZXR1cm4gdW5xdWFsaWZpZWQ7XG4gIH1cblxuICBpc01hbGZvcm1lZCgpIHtcbiAgICBjb25zdCBzdGVwTm9kZSA9IHRoaXMuZ2V0U3RlcE5vZGUoKSxcbiAgICAgICAgICBtYWxmb3JtZWQgPSBzdGVwTm9kZS5pc01hbGZvcm1lZCgpO1xuXG4gICAgcmV0dXJuIG1hbGZvcm1lZDtcbiAgfVxuXG4gIGNvbXBhcmVGYWN0T3JTdWJwcm9vZnMoZmFjdE9yU3VicHJvb2YsIGNvbnRleHQpIHtcbiAgICBsZXQgY29tcGFyZXNUb0ZhY3RPclN1YnByb29mcztcblxuICAgIGNvbnN0IHN0ZXAgPSB0aGlzOyAvLy9cblxuICAgIGNvbXBhcmVzVG9GYWN0T3JTdWJwcm9vZnMgPSBiYWNrd2FyZHNTb21lKGZhY3RPclN1YnByb29mLCAoZmFjdE9yU3VicHJvb2YpID0+IHtcbiAgICAgIGNvbnN0IGZhY3RPclN1YnByb29mQ29tcGFyZXNUb1N0YXRlbWVudCA9IGZhY3RPclN1YnByb29mLmNvbXBhcmVTdGVwKHN0ZXAsIGNvbnRleHQpO1xuXG4gICAgICBpZiAoZmFjdE9yU3VicHJvb2ZDb21wYXJlc1RvU3RhdGVtZW50KSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGNvbXBhcmVzVG9GYWN0T3JTdWJwcm9vZnM7XG4gIH1cblxuICB2ZXJpZnkgPSBicmVha2FibGUoZnVuY3Rpb24gKGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBmb3J3YXJkID0gY3V0KGZvcndhcmQsIGJhY2spOyAvLy9cblxuICAgIGNvbnN0IHN0ZXBTdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7c3RlcFN0cmluZ30nIHN0ZXAuLi5gKTtcblxuICAgIGNvbnN0IG1hbGZvcm1lZCA9IHRoaXMuaXNNYWxmb3JtZWQoKTtcblxuICAgIGlmIChtYWxmb3JtZWQpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYFVuYWJsZSB0byB2ZXJpZnkgdGhlICcke3N0ZXBTdHJpbmd9JyBzdGVwIGJlY2F1c2UgaXQgaXMgbWFsZm9ybWVkLmApO1xuXG4gICAgICByZXR1cm4gYmFjaygpO1xuICAgIH1cblxuICAgIGNvbnN0IGRlY2xhcmVkID0gdGhpcy5pZERlY2xhcmVkKCk7XG5cbiAgICAoZGVjbGFyZWQgPyBkZWNsYXJlIDogZGVyaXZlKSgoc3RhdGUpID0+IHtcbiAgICAgIHJldHVybiB0aGlzLnZhbGlkYXRlKHN0YXRlLCBjb250ZXh0LCAocHJlbWlzZSwgXyAsIGJhY2spID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMudW5pZnkoKCBfICwgYmFjaykgPT4ge1xuICAgICAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHtzdGVwU3RyaW5nfScgc3RlcC5gKTtcblxuICAgICAgICAgIHJldHVybiBmb3J3YXJkKGNvbnRleHQsIGJhY2spO1xuICAgICAgICB9LCBiYWNrKTtcbiAgICAgIH0sIGJhY2spO1xuICAgIH0pO1xuICB9KTtcblxuICB2YWxpZGF0ZShzdGF0ZSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IHN0ZXBTdHJpbmcgPSB0aGlzLmdldFN0cmluZygpLCAgLy8vXG4gICAgICAgICAgc3BlY2lmaWNDb250ZXh0ID0gY29udGV4dDsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7c3RlcFN0cmluZ30nIHN0ZXAuLi5gKTtcblxuICAgIHJldHVybiBhdHRlbXB0KChjb250ZXh0KSA9PiB7XG4gICAgICBjb25zdCB2YWxpZGF0ZVN0YXRlbWVudCA9IHRoaXMudmFsaWRhdGVTdGF0ZW1lbnQuYmluZCh0aGlzKSxcbiAgICAgICAgICAgIHZhbGlkYXRlUmVmZXJlbmNlID0gdGhpcy52YWxpZGF0ZVJlZmVyZW5jZS5iaW5kKHRoaXMpLFxuICAgICAgICAgICAgdmFsaWRhdGVTY2hlbWFBc3NlcnRpb24gPSB0aGlzLnZhbGlkYXRlU2NoZW1hQXNzZXJ0aW9uLmJpbmQodGhpcyksXG4gICAgICAgICAgICB2YWxpZGF0ZVNpZ25hdHVyZUFzc2VydGlvbiA9IHRoaXMudmFsaWRhdGVTaWduYXR1cmVBc3NlcnRpb24uYmluZCh0aGlzKTtcblxuICAgICAgcmV0dXJuIGFsbChbXG4gICAgICAgIHZhbGlkYXRlU3RhdGVtZW50LFxuICAgICAgICB2YWxpZGF0ZVJlZmVyZW5jZSxcbiAgICAgICAgdmFsaWRhdGVTY2hlbWFBc3NlcnRpb24sXG4gICAgICAgIHZhbGlkYXRlU2lnbmF0dXJlQXNzZXJ0aW9uXG4gICAgICBdLCBzdGF0ZSwgY29udGV4dCwgKHN0YXRlLCBjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICAgIHRoaXMuY29tbWl0KGNvbnRleHQpO1xuXG4gICAgICAgIGNvbnN0IHN0ZXAgPSB0aGlzOyAgLy8vXG5cbiAgICAgICAgY29udGV4dCA9IHNwZWNpZmljQ29udGV4dDsgIC8vL1xuXG4gICAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7c3RlcFN0cmluZ30nIHN0ZXAuYCk7XG5cbiAgICAgICAgcmV0dXJuIGZvcndhcmQoc3RlcCwgY29udGV4dCwgYmFjayk7XG4gICAgICB9LCBiYWNrKTtcbiAgICB9LCBjb250ZXh0KTtcbiAgfVxuXG4gIHZhbGlkYXRlU2NoZW1hQXNzZXJ0aW9uKHN0YXRlLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgaWYgKHRoaXMuc2NoZW1hQXNzZXJ0aW9uID09PSBudWxsKSB7XG4gICAgICByZXR1cm4gZm9yd2FyZChzdGF0ZSwgY29udGV4dCwgYmFjayk7XG4gICAgfVxuXG4gICAgY29uc3Qgc3RlcFN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCksICAvLy9cbiAgICAgICAgICBzY2hlbWFBc3NlcnRpb25TdHJpbmcgPSB0aGlzLnNjaGVtYUFzc2VydGlvbi5nZXRTdHJpbmcoKTtcblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke3N0ZXBTdHJpbmd9JyBzdGVwJ3MgJyR7c2NoZW1hQXNzZXJ0aW9uU3RyaW5nfScgc2NoZW1hIGFzc2VydGlvbi4uLmApO1xuXG4gICAgcmV0dXJuIGRlcml2ZSgoc3RhdGUpID0+IHtcbiAgICAgIHJldHVybiB0aGlzLnNjaGVtYUFzc2VydGlvbi52YWxpZGF0ZShzdGF0ZSwgY29udGV4dCwgKHNjaGVtYUFzc2VydGlvbiwgY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgICB0aGlzLnNjaGVtYUFzc2VydGlvbiA9IHNjaGVtYUFzc2VydGlvbjtcblxuICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke3N0ZXBTdHJpbmd9JyBzdGVwJ3MgJyR7c2NoZW1hQXNzZXJ0aW9uU3RyaW5nfScgc2NoZW1hIGFzc2VydGlvbi5gKTtcblxuICAgICAgICByZXR1cm4gZm9yd2FyZChzdGF0ZSwgY29udGV4dCwgYmFjayk7XG4gICAgICB9LCBiYWNrKTtcbiAgICB9LCBzdGF0ZSk7XG4gIH1cblxuICB2YWxpZGF0ZVNpZ25hdHVyZUFzc2VydGlvbihzdGF0ZSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGlmICh0aGlzLnNpZ25hdHVyZUFzc2VydGlvbiA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuIGZvcndhcmQoc3RhdGUsIGNvbnRleHQsIGJhY2spO1xuICAgIH1cblxuICAgIGNvbnN0IHN0ZXBTdHJpbmcgPSB0aGlzLmdldFN0cmluZygpLCAgLy8vXG4gICAgICAgICAgc2lnbmF0dXJlQXNzZXJ0aW9uU3RyaW5nID0gdGhpcy5zaWduYXR1cmVBc3NlcnRpb24uZ2V0U3RyaW5nKCk7XG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtzdGVwU3RyaW5nfScgc3RlcCdzICcke3NpZ25hdHVyZUFzc2VydGlvblN0cmluZ30nIHNpZ25hdHVyZSBhc3NlcnRpb24uLi5gKTtcblxuICAgIHJldHVybiBkZWNsYXJlKChzdGF0ZSkgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuc2lnbmF0dXJlQXNzZXJ0aW9uLnZhbGlkYXRlKHN0YXRlLCBjb250ZXh0LCAoc2lnbmF0dXJlQXNzZXJ0aW9uLCBjb250d2V4dCwgYmFjaykgPT4ge1xuICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke3N0ZXBTdHJpbmd9JyBzdGVwJ3MgJyR7c2lnbmF0dXJlQXNzZXJ0aW9uU3RyaW5nfScgc2lnbmF0dXJlIGFzc2VydGlvbi5gKTtcblxuICAgICAgICB0aGlzLnNpZ25hdHVyZUFzc2VydGlvbiA9IHNpZ25hdHVyZUFzc2VydGlvbjtcblxuICAgICAgICByZXR1cm4gZm9yd2FyZChjb250ZXh0LCBiYWNrKTtcbiAgICAgIH0sIGJhY2spO1xuICAgIH0sIHN0YXRlKTtcbiAgfVxuXG4gIHVuaWZ5KGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksXG4gICAgICAgICAgc3RlcFN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7IC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVW5pZnlpbmcgdGhlICcke3N0ZXBTdHJpbmd9JyBzdGVwLi4uYCk7XG5cbiAgICBjb25zdCBzdGVwID0gdGhpczsgIC8vL1xuXG4gICAgcmV0dXJuIHNvbWUodW5pZnlTdGVwcywgKHVuaWZ5U3RlcCwgZm9yd2FyZCwgYmFjaykgPT4ge1xuICAgICAgcmV0dXJuIHVuaWZ5U3RlcChzdGVwLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKTtcbiAgICB9LCAoY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udW5pZmllZCB0aGUgJyR7c3RlcFN0cmluZ30nIHN0ZXAuYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKGNvbnRleHQsIGJhY2spO1xuICAgIH0sIGJhY2spO1xuICB9XG5cbiAgc3RhdGljIG5hbWUgPSBcIlN0ZXBcIjtcbn0pO1xuIl0sIm5hbWVzIjpbImJyZWFrYWJsZSIsImJyZWFrUG9pbnRVdGlsaXRpZXMiLCJiYWNrd2FyZHNTb21lIiwiYXJyYXlVdGlsaXRpZXMiLCJjdXQiLCJhbGwiLCJzb21lIiwiY29udGludWF0aW9uVXRpbGl0aWVzIiwiZGVmaW5lIiwiU3RlcCIsIkZhY3QiLCJjb250ZXh0Iiwic3RyaW5nIiwibm9kZSIsImJyZWFrUG9pbnQiLCJzdGF0ZW1lbnQiLCJyZWZlcmVuY2UiLCJwcm9jZWR1cmVDYWxsIiwic2NoZW1hQXNzZXJ0aW9uIiwic2lnbmF0dXJlQXNzZXJ0aW9uIiwiZ2V0U2NoZW1hQXNzZXJ0aW9uIiwiZ2V0U2lnbmF0dXJlQXNzZXJ0aW9uIiwiZ2V0U3RlcE5vZGUiLCJnZXROb2RlIiwic3RlcE5vZGUiLCJnZXRTdGF0ZW1lbnROb2RlIiwiZ2V0U3RhdGVtZW50Iiwic3RhdGVtZW50Tm9kZSIsImlzU3RlcCIsInN0ZXAiLCJpZERlY2xhcmVkIiwicXVhbGlmaWVkIiwiaXNRdWFsaWZpZWQiLCJkZWNsYXJlZCIsImlzVW5xdWFsaWZpZWQiLCJ1bnF1YWxpZmllZCIsImlzTWFsZm9ybWVkIiwibWFsZm9ybWVkIiwiY29tcGFyZUZhY3RPclN1YnByb29mcyIsImZhY3RPclN1YnByb29mIiwiY29tcGFyZXNUb0ZhY3RPclN1YnByb29mcyIsImZhY3RPclN1YnByb29mQ29tcGFyZXNUb1N0YXRlbWVudCIsImNvbXBhcmVTdGVwIiwidmVyaWZ5IiwiZm9yd2FyZCIsImJhY2siLCJzdGVwU3RyaW5nIiwiZ2V0U3RyaW5nIiwidHJhY2UiLCJkZWJ1ZyIsImRlY2xhcmUiLCJkZXJpdmUiLCJzdGF0ZSIsInZhbGlkYXRlIiwicHJlbWlzZSIsIl8iLCJ1bmlmeSIsInNwZWNpZmljQ29udGV4dCIsImF0dGVtcHQiLCJ2YWxpZGF0ZVN0YXRlbWVudCIsImJpbmQiLCJ2YWxpZGF0ZVJlZmVyZW5jZSIsInZhbGlkYXRlU2NoZW1hQXNzZXJ0aW9uIiwidmFsaWRhdGVTaWduYXR1cmVBc3NlcnRpb24iLCJjb21taXQiLCJzY2hlbWFBc3NlcnRpb25TdHJpbmciLCJzaWduYXR1cmVBc3NlcnRpb25TdHJpbmciLCJjb250d2V4dCIsImdldENvbnRleHQiLCJ1bmlmeVN0ZXBzIiwidW5pZnlTdGVwIiwibmFtZSJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBZ0JBOzs7ZUFBQTs7OzJCQWQrQjtnQ0FDNEI7NkRBRTFDOzBCQUVNO3lCQUNDOzZCQUNHO3VCQUNLOzs7Ozs7QUFFaEMsTUFBTSxFQUFFQSxTQUFTLEVBQUUsR0FBR0MsbUNBQW1CLEVBQ25DLEVBQUVDLGFBQWEsRUFBRSxHQUFHQyx5QkFBYyxFQUNsQyxFQUFFQyxHQUFHLEVBQUVDLEdBQUcsRUFBRUMsSUFBSSxFQUFFLEdBQUdDLHFDQUFxQjtNQUVoRCxXQUFlQyxJQUFBQSxnQkFBTSxFQUFDLE1BQU1DLGFBQWFDLGFBQUk7SUFDM0MsWUFBWUMsT0FBTyxFQUFFQyxNQUFNLEVBQUVDLElBQUksRUFBRUMsVUFBVSxFQUFFQyxTQUFTLEVBQUVDLFNBQVMsRUFBRUMsYUFBYSxFQUFFQyxlQUFlLEVBQUVDLGtCQUFrQixDQUFFO1FBQ3ZILEtBQUssQ0FBQ1IsU0FBU0MsUUFBUUMsTUFBTUMsWUFBWUMsV0FBV0MsV0FBV0M7UUFFL0QsSUFBSSxDQUFDQyxlQUFlLEdBQUdBO1FBQ3ZCLElBQUksQ0FBQ0Msa0JBQWtCLEdBQUdBO0lBQzVCO0lBRUFDLHFCQUFxQjtRQUNuQixPQUFPLElBQUksQ0FBQ0YsZUFBZTtJQUM3QjtJQUVBRyx3QkFBd0I7UUFDdEIsT0FBTyxJQUFJLENBQUNGLGtCQUFrQjtJQUNoQztJQUVBRyxjQUFjO1FBQ1osTUFBTVQsT0FBTyxJQUFJLENBQUNVLE9BQU8sSUFDbkJDLFdBQVdYLE1BQU8sR0FBRztRQUUzQixPQUFPVztJQUNUO0lBRUFDLG1CQUFtQjtRQUNqQixNQUFNVixZQUFZLElBQUksQ0FBQ1csWUFBWSxJQUM3QkMsZ0JBQWdCWixVQUFVUSxPQUFPO1FBRXZDLE9BQU9JO0lBQ1Q7SUFFQUMsU0FB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
|
|
155
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L2ZhY3Qvc3RlcC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgYXJyYXlVdGlsaXRpZXMgfSBmcm9tIFwibmVjZXNzYXJ5XCI7XG5pbXBvcnQgeyBicmVha1BvaW50VXRpbGl0aWVzLCBjb250aW51YXRpb25VdGlsaXRpZXMgfSBmcm9tIFwib2NjYW0tbGFuZ3VhZ2VzXCI7XG5cbmltcG9ydCBGYWN0IGZyb20gXCIuLi9mYWN0XCI7XG5cbmltcG9ydCB7IGRlZmluZSB9IGZyb20gXCIuLi8uLi9lbGVtZW50c1wiO1xuaW1wb3J0IHsgYXR0ZW1wdCB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvY29udGV4dFwiO1xuaW1wb3J0IHsgdW5pZnlTdGVwcyB9IGZyb20gXCIuLi8uLi9wcm9jZXNzL3VuaWZpY2F0aW9uXCI7XG5pbXBvcnQgeyBkZXJpdmUsIGRlY2xhcmUgfSBmcm9tIFwiLi4vLi4vdXRpbGl0aWVzL3N0YXRlXCI7XG5cbmNvbnN0IHsgYnJlYWthYmxlIH0gPSBicmVha1BvaW50VXRpbGl0aWVzLFxuICAgICAgeyBiYWNrd2FyZHNTb21lIH0gPSBhcnJheVV0aWxpdGllcyxcbiAgICAgIHsgY3V0LCBhbGwsIHNvbWUgfSA9IGNvbnRpbnVhdGlvblV0aWxpdGllcztcblxuZXhwb3J0IGRlZmF1bHQgZGVmaW5lKGNsYXNzIFN0ZXAgZXh0ZW5kcyBGYWN0IHtcbiAgY29uc3RydWN0b3IoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCBzdGF0ZW1lbnQsIHJlZmVyZW5jZSwgcHJvY2VkdXJlQ2FsbCwgc2NoZW1hQXNzZXJ0aW9uLCBzaWduYXR1cmVBc3NlcnRpb24pIHtcbiAgICBzdXBlcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIHN0YXRlbWVudCwgcmVmZXJlbmNlLCBwcm9jZWR1cmVDYWxsKTtcblxuICAgIHRoaXMuc2NoZW1hQXNzZXJ0aW9uID0gc2NoZW1hQXNzZXJ0aW9uO1xuICAgIHRoaXMuc2lnbmF0dXJlQXNzZXJ0aW9uID0gc2lnbmF0dXJlQXNzZXJ0aW9uO1xuICB9XG5cbiAgZ2V0U2NoZW1hQXNzZXJ0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLnNjaGVtYUFzc2VydGlvbjtcbiAgfVxuXG4gIGdldFNpZ25hdHVyZUFzc2VydGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5zaWduYXR1cmVBc3NlcnRpb247XG4gIH1cblxuICBnZXRTdGVwTm9kZSgpIHtcbiAgICBjb25zdCBub2RlID0gdGhpcy5nZXROb2RlKCksXG4gICAgICAgICAgc3RlcE5vZGUgPSBub2RlOyAgLy8vXG5cbiAgICByZXR1cm4gc3RlcE5vZGU7XG4gIH1cblxuICBnZXRTdGF0ZW1lbnROb2RlKCkge1xuICAgIGNvbnN0IHN0YXRlbWVudCA9IHRoaXMuZ2V0U3RhdGVtZW50KCksXG4gICAgICAgICAgc3RhdGVtZW50Tm9kZSA9IHN0YXRlbWVudC5nZXROb2RlKCk7XG5cbiAgICByZXR1cm4gc3RhdGVtZW50Tm9kZTtcbiAgfVxuXG4gIGlzU3RlcCgpIHtcbiAgICBjb25zdCBzdGVwID0gdHJ1ZTtcblxuICAgIHJldHVybiBzdGVwO1xuICB9XG5cbiAgaWREZWNsYXJlZCgpIHtcbiAgICBjb25zdCBxdWFsaWZpZWQgPSB0aGlzLmlzUXVhbGlmaWVkKCksXG4gICAgICAgICAgZGVjbGFyZWQgPSBxdWFsaWZpZWQ7IC8vL1xuXG4gICAgcmV0dXJuIGRlY2xhcmVkO1xuICB9XG5cbiAgaXNRdWFsaWZpZWQoKSB7XG4gICAgY29uc3QgcXVhbGlmaWVkID0gKCh0aGlzLnJlZmVyZW5jZSAhPT0gbnVsbCkgfHwgKHRoaXMuc2NoZW1hQXNzZXJ0aW9uICE9PSBudWxsKSB8fCAodGhpcy5zaWduYXR1cmVBc3NlcnRpb24gIT09IG51bGwpKTtcblxuICAgIHJldHVybiBxdWFsaWZpZWQ7XG4gIH1cblxuICBpc1VucXVhbGlmaWVkKCkge1xuICAgIGNvbnN0IHF1YWxpZmllZCA9IHRoaXMuaXNRdWFsaWZpZWQoKSxcbiAgICAgICAgICB1bnF1YWxpZmllZCA9ICFxdWFsaWZpZWQ7XG5cbiAgICByZXR1cm4gdW5xdWFsaWZpZWQ7XG4gIH1cblxuICBpc01hbGZvcm1lZCgpIHtcbiAgICBjb25zdCBzdGVwTm9kZSA9IHRoaXMuZ2V0U3RlcE5vZGUoKSxcbiAgICAgICAgICBtYWxmb3JtZWQgPSBzdGVwTm9kZS5pc01hbGZvcm1lZCgpO1xuXG4gICAgcmV0dXJuIG1hbGZvcm1lZDtcbiAgfVxuXG4gIGNvbXBhcmVGYWN0T3JTdWJwcm9vZnMoZmFjdE9yU3VicHJvb2YsIGNvbnRleHQpIHtcbiAgICBsZXQgY29tcGFyZXNUb0ZhY3RPclN1YnByb29mcztcblxuICAgIGNvbnN0IHN0ZXAgPSB0aGlzOyAvLy9cblxuICAgIGNvbXBhcmVzVG9GYWN0T3JTdWJwcm9vZnMgPSBiYWNrd2FyZHNTb21lKGZhY3RPclN1YnByb29mLCAoZmFjdE9yU3VicHJvb2YpID0+IHtcbiAgICAgIGNvbnN0IGZhY3RPclN1YnByb29mQ29tcGFyZXNUb1N0YXRlbWVudCA9IGZhY3RPclN1YnByb29mLmNvbXBhcmVTdGVwKHN0ZXAsIGNvbnRleHQpO1xuXG4gICAgICBpZiAoZmFjdE9yU3VicHJvb2ZDb21wYXJlc1RvU3RhdGVtZW50KSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGNvbXBhcmVzVG9GYWN0T3JTdWJwcm9vZnM7XG4gIH1cblxuICB2ZXJpZnkgPSBicmVha2FibGUoZnVuY3Rpb24gKGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBmb3J3YXJkID0gY3V0KGZvcndhcmQsIGJhY2spOyAvLy9cblxuICAgIGNvbnN0IHN0ZXBTdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7c3RlcFN0cmluZ30nIHN0ZXAuLi5gKTtcblxuICAgIGNvbnN0IG1hbGZvcm1lZCA9IHRoaXMuaXNNYWxmb3JtZWQoKTtcblxuICAgIGlmIChtYWxmb3JtZWQpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYFVuYWJsZSB0byB2ZXJpZnkgdGhlICcke3N0ZXBTdHJpbmd9JyBzdGVwIGJlY2F1c2UgaXQgaXMgbWFsZm9ybWVkLmApO1xuXG4gICAgICByZXR1cm4gYmFjaygpO1xuICAgIH1cblxuICAgIGNvbnN0IGRlY2xhcmVkID0gdGhpcy5pZERlY2xhcmVkKCk7XG5cbiAgICAoZGVjbGFyZWQgPyBkZWNsYXJlIDogZGVyaXZlKSgoc3RhdGUpID0+IHtcbiAgICAgIHJldHVybiB0aGlzLnZhbGlkYXRlKHN0YXRlLCBjb250ZXh0LCAocHJlbWlzZSwgXywgYmFjaykgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy51bmlmeSgoIF8gLCBiYWNrKSA9PiB7XG4gICAgICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke3N0ZXBTdHJpbmd9JyBzdGVwLmApO1xuXG4gICAgICAgICAgcmV0dXJuIGZvcndhcmQoY29udGV4dCwgYmFjayk7XG4gICAgICAgIH0sIGJhY2spO1xuICAgICAgfSwgYmFjayk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIHZhbGlkYXRlKHN0YXRlLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3Qgc3RlcFN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCksICAvLy9cbiAgICAgICAgICBzcGVjaWZpY0NvbnRleHQgPSBjb250ZXh0OyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtzdGVwU3RyaW5nfScgc3RlcC4uLmApO1xuXG4gICAgcmV0dXJuIGF0dGVtcHQoKGNvbnRleHQpID0+IHtcbiAgICAgIGNvbnN0IHZhbGlkYXRlU3RhdGVtZW50ID0gdGhpcy52YWxpZGF0ZVN0YXRlbWVudC5iaW5kKHRoaXMpLFxuICAgICAgICAgICAgdmFsaWRhdGVSZWZlcmVuY2UgPSB0aGlzLnZhbGlkYXRlUmVmZXJlbmNlLmJpbmQodGhpcyksXG4gICAgICAgICAgICB2YWxpZGF0ZVNjaGVtYUFzc2VydGlvbiA9IHRoaXMudmFsaWRhdGVTY2hlbWFBc3NlcnRpb24uYmluZCh0aGlzKSxcbiAgICAgICAgICAgIHZhbGlkYXRlU2lnbmF0dXJlQXNzZXJ0aW9uID0gdGhpcy52YWxpZGF0ZVNpZ25hdHVyZUFzc2VydGlvbi5iaW5kKHRoaXMpO1xuXG4gICAgICByZXR1cm4gYWxsKFtcbiAgICAgICAgdmFsaWRhdGVTdGF0ZW1lbnQsXG4gICAgICAgIHZhbGlkYXRlUmVmZXJlbmNlLFxuICAgICAgICB2YWxpZGF0ZVNjaGVtYUFzc2VydGlvbixcbiAgICAgICAgdmFsaWRhdGVTaWduYXR1cmVBc3NlcnRpb25cbiAgICAgIF0sIHN0YXRlLCBjb250ZXh0LCAoc3RhdGUsIGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgICAgdGhpcy5jb21taXQoY29udGV4dCk7XG5cbiAgICAgICAgY29uc3Qgc3RlcCA9IHRoaXM7ICAvLy9cblxuICAgICAgICBjb250ZXh0ID0gc3BlY2lmaWNDb250ZXh0OyAgLy8vXG5cbiAgICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHtzdGVwU3RyaW5nfScgc3RlcC5gKTtcblxuICAgICAgICByZXR1cm4gZm9yd2FyZChzdGVwLCBjb250ZXh0LCBiYWNrKTtcbiAgICAgIH0sIGJhY2spO1xuICAgIH0sIGNvbnRleHQpO1xuICB9XG5cbiAgdmFsaWRhdGVTY2hlbWFBc3NlcnRpb24oc3RhdGUsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBpZiAodGhpcy5zY2hlbWFBc3NlcnRpb24gPT09IG51bGwpIHtcbiAgICAgIHJldHVybiBmb3J3YXJkKHN0YXRlLCBjb250ZXh0LCBiYWNrKTtcbiAgICB9XG5cbiAgICBjb25zdCBzdGVwU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKSwgIC8vL1xuICAgICAgICAgIHNjaGVtYUFzc2VydGlvblN0cmluZyA9IHRoaXMuc2NoZW1hQXNzZXJ0aW9uLmdldFN0cmluZygpO1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7c3RlcFN0cmluZ30nIHN0ZXAncyAnJHtzY2hlbWFBc3NlcnRpb25TdHJpbmd9JyBzY2hlbWEgYXNzZXJ0aW9uLi4uYCk7XG5cbiAgICByZXR1cm4gZGVyaXZlKChzdGF0ZSkgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuc2NoZW1hQXNzZXJ0aW9uLnZhbGlkYXRlKHN0YXRlLCBjb250ZXh0LCAoc2NoZW1hQXNzZXJ0aW9uLCBjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICAgIHRoaXMuc2NoZW1hQXNzZXJ0aW9uID0gc2NoZW1hQXNzZXJ0aW9uO1xuXG4gICAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7c3RlcFN0cmluZ30nIHN0ZXAncyAnJHtzY2hlbWFBc3NlcnRpb25TdHJpbmd9JyBzY2hlbWEgYXNzZXJ0aW9uLmApO1xuXG4gICAgICAgIHJldHVybiBmb3J3YXJkKHN0YXRlLCBjb250ZXh0LCBiYWNrKTtcbiAgICAgIH0sIGJhY2spO1xuICAgIH0sIHN0YXRlKTtcbiAgfVxuXG4gIHZhbGlkYXRlU2lnbmF0dXJlQXNzZXJ0aW9uKHN0YXRlLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgaWYgKHRoaXMuc2lnbmF0dXJlQXNzZXJ0aW9uID09PSBudWxsKSB7XG4gICAgICByZXR1cm4gZm9yd2FyZChzdGF0ZSwgY29udGV4dCwgYmFjayk7XG4gICAgfVxuXG4gICAgY29uc3Qgc3RlcFN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCksICAvLy9cbiAgICAgICAgICBzaWduYXR1cmVBc3NlcnRpb25TdHJpbmcgPSB0aGlzLnNpZ25hdHVyZUFzc2VydGlvbi5nZXRTdHJpbmcoKTtcblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke3N0ZXBTdHJpbmd9JyBzdGVwJ3MgJyR7c2lnbmF0dXJlQXNzZXJ0aW9uU3RyaW5nfScgc2lnbmF0dXJlIGFzc2VydGlvbi4uLmApO1xuXG4gICAgcmV0dXJuIGRlY2xhcmUoKHN0YXRlKSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5zaWduYXR1cmVBc3NlcnRpb24udmFsaWRhdGUoc3RhdGUsIGNvbnRleHQsIChzaWduYXR1cmVBc3NlcnRpb24sIGNvbnR3ZXh0LCBiYWNrKSA9PiB7XG4gICAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7c3RlcFN0cmluZ30nIHN0ZXAncyAnJHtzaWduYXR1cmVBc3NlcnRpb25TdHJpbmd9JyBzaWduYXR1cmUgYXNzZXJ0aW9uLmApO1xuXG4gICAgICAgIHRoaXMuc2lnbmF0dXJlQXNzZXJ0aW9uID0gc2lnbmF0dXJlQXNzZXJ0aW9uO1xuXG4gICAgICAgIHJldHVybiBmb3J3YXJkKGNvbnRleHQsIGJhY2spO1xuICAgICAgfSwgYmFjayk7XG4gICAgfSwgc3RhdGUpO1xuICB9XG5cbiAgdW5pZnkoZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSxcbiAgICAgICAgICBzdGVwU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBVbmlmeWluZyB0aGUgJyR7c3RlcFN0cmluZ30nIHN0ZXAuLi5gKTtcblxuICAgIGNvbnN0IHN0ZXAgPSB0aGlzOyAgLy8vXG5cbiAgICByZXR1cm4gc29tZSh1bmlmeVN0ZXBzLCAodW5pZnlTdGVwLCBmb3J3YXJkLCBiYWNrKSA9PiB7XG4gICAgICByZXR1cm4gdW5pZnlTdGVwKHN0ZXAsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spO1xuICAgIH0sIChjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi51bmlmaWVkIHRoZSAnJHtzdGVwU3RyaW5nfScgc3RlcC5gKTtcblxuICAgICAgcmV0dXJuIGZvcndhcmQoY29udGV4dCwgYmFjayk7XG4gICAgfSwgYmFjayk7XG4gIH1cblxuICBzdGF0aWMgbmFtZSA9IFwiU3RlcFwiO1xufSk7XG4iXSwibmFtZXMiOlsiYnJlYWthYmxlIiwiYnJlYWtQb2ludFV0aWxpdGllcyIsImJhY2t3YXJkc1NvbWUiLCJhcnJheVV0aWxpdGllcyIsImN1dCIsImFsbCIsInNvbWUiLCJjb250aW51YXRpb25VdGlsaXRpZXMiLCJkZWZpbmUiLCJTdGVwIiwiRmFjdCIsImNvbnRleHQiLCJzdHJpbmciLCJub2RlIiwiYnJlYWtQb2ludCIsInN0YXRlbWVudCIsInJlZmVyZW5jZSIsInByb2NlZHVyZUNhbGwiLCJzY2hlbWFBc3NlcnRpb24iLCJzaWduYXR1cmVBc3NlcnRpb24iLCJnZXRTY2hlbWFBc3NlcnRpb24iLCJnZXRTaWduYXR1cmVBc3NlcnRpb24iLCJnZXRTdGVwTm9kZSIsImdldE5vZGUiLCJzdGVwTm9kZSIsImdldFN0YXRlbWVudE5vZGUiLCJnZXRTdGF0ZW1lbnQiLCJzdGF0ZW1lbnROb2RlIiwiaXNTdGVwIiwic3RlcCIsImlkRGVjbGFyZWQiLCJxdWFsaWZpZWQiLCJpc1F1YWxpZmllZCIsImRlY2xhcmVkIiwiaXNVbnF1YWxpZmllZCIsInVucXVhbGlmaWVkIiwiaXNNYWxmb3JtZWQiLCJtYWxmb3JtZWQiLCJjb21wYXJlRmFjdE9yU3VicHJvb2ZzIiwiZmFjdE9yU3VicHJvb2YiLCJjb21wYXJlc1RvRmFjdE9yU3VicHJvb2ZzIiwiZmFjdE9yU3VicHJvb2ZDb21wYXJlc1RvU3RhdGVtZW50IiwiY29tcGFyZVN0ZXAiLCJ2ZXJpZnkiLCJmb3J3YXJkIiwiYmFjayIsInN0ZXBTdHJpbmciLCJnZXRTdHJpbmciLCJ0cmFjZSIsImRlYnVnIiwiZGVjbGFyZSIsImRlcml2ZSIsInN0YXRlIiwidmFsaWRhdGUiLCJwcmVtaXNlIiwiXyIsInVuaWZ5Iiwic3BlY2lmaWNDb250ZXh0IiwiYXR0ZW1wdCIsInZhbGlkYXRlU3RhdGVtZW50IiwiYmluZCIsInZhbGlkYXRlUmVmZXJlbmNlIiwidmFsaWRhdGVTY2hlbWFBc3NlcnRpb24iLCJ2YWxpZGF0ZVNpZ25hdHVyZUFzc2VydGlvbiIsImNvbW1pdCIsInNjaGVtYUFzc2VydGlvblN0cmluZyIsInNpZ25hdHVyZUFzc2VydGlvblN0cmluZyIsImNvbnR3ZXh0IiwiZ2V0Q29udGV4dCIsInVuaWZ5U3RlcHMiLCJ1bmlmeVN0ZXAiLCJuYW1lIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFnQkE7OztlQUFBOzs7MkJBZCtCO2dDQUM0Qjs2REFFMUM7MEJBRU07eUJBQ0M7NkJBQ0c7dUJBQ0s7Ozs7OztBQUVoQyxNQUFNLEVBQUVBLFNBQVMsRUFBRSxHQUFHQyxtQ0FBbUIsRUFDbkMsRUFBRUMsYUFBYSxFQUFFLEdBQUdDLHlCQUFjLEVBQ2xDLEVBQUVDLEdBQUcsRUFBRUMsR0FBRyxFQUFFQyxJQUFJLEVBQUUsR0FBR0MscUNBQXFCO01BRWhELFdBQWVDLElBQUFBLGdCQUFNLEVBQUMsTUFBTUMsYUFBYUMsYUFBSTtJQUMzQyxZQUFZQyxPQUFPLEVBQUVDLE1BQU0sRUFBRUMsSUFBSSxFQUFFQyxVQUFVLEVBQUVDLFNBQVMsRUFBRUMsU0FBUyxFQUFFQyxhQUFhLEVBQUVDLGVBQWUsRUFBRUMsa0JBQWtCLENBQUU7UUFDdkgsS0FBSyxDQUFDUixTQUFTQyxRQUFRQyxNQUFNQyxZQUFZQyxXQUFXQyxXQUFXQztRQUUvRCxJQUFJLENBQUNDLGVBQWUsR0FBR0E7UUFDdkIsSUFBSSxDQUFDQyxrQkFBa0IsR0FBR0E7SUFDNUI7SUFFQUMscUJBQXFCO1FBQ25CLE9BQU8sSUFBSSxDQUFDRixlQUFlO0lBQzdCO0lBRUFHLHdCQUF3QjtRQUN0QixPQUFPLElBQUksQ0FBQ0Ysa0JBQWtCO0lBQ2hDO0lBRUFHLGNBQWM7UUFDWixNQUFNVCxPQUFPLElBQUksQ0FBQ1UsT0FBTyxJQUNuQkMsV0FBV1gsTUFBTyxHQUFHO1FBRTNCLE9BQU9XO0lBQ1Q7SUFFQUMsbUJBQW1CO1FBQ2pCLE1BQU1WLFlBQVksSUFBSSxDQUFDVyxZQUFZLElBQzdCQyxnQkFBZ0JaLFVBQVVRLE9BQU87UUFFdkMsT0FBT0k7SUFDVDtJQUVBQyxTQUFT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
|