occam-nominal 1.0.543 → 1.0.545

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.
@@ -96,6 +96,22 @@ class TemenicContext extends _context.default {
96
96
  }
97
97
  return metaLevel;
98
98
  }
99
+ addAxiom(axiom) {
100
+ const context = this.getContext();
101
+ context.addAxiom(axiom);
102
+ }
103
+ addLemma(lemma) {
104
+ const context = this.getContext();
105
+ context.addLemma(lemma);
106
+ }
107
+ addTheorem(thorem) {
108
+ const context = this.getContext();
109
+ context.addTheorem(thorem);
110
+ }
111
+ addConjecture(conjecture) {
112
+ const context = this.getContext();
113
+ context.addConjecture(conjecture);
114
+ }
99
115
  addAssignment(assignment) {
100
116
  this.assignments.push(assignment);
101
117
  }
@@ -207,4 +223,4 @@ class TemenicContext extends _context.default {
207
223
  }
208
224
  const _default = TemenicContext;
209
225
 
210
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb250ZXh0L3RlbWVuaWMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IGFycmF5VXRpbGl0aWVzIH0gZnJvbSBcIm5lY2Vzc2FyeVwiO1xuXG5pbXBvcnQgQ29udGV4dCBmcm9tIFwiLi4vY29udGV4dFwiO1xuXG5pbXBvcnQgeyBtZXJnZUVxdWl2YWxlbmNlcywgc2VwYXJhdGVHcm91bmRlZFRlcm1zQW5kRGVmaW5lZFZhcmlhYmxlcyB9IGZyb20gXCIuLi91dGlsaXRpZXMvZXF1aXZhbGVuY2VzXCI7XG5cbmNvbnN0IHsgbGFzdCwgcHVzaCwgY2xlYXIgfSA9IGFycmF5VXRpbGl0aWVzO1xuXG5jbGFzcyBUZW1lbmljQ29udGV4dCBleHRlbmRzIENvbnRleHQge1xuICBjb25zdHJ1Y3Rvcihjb250ZXh0LCBjb25zdHJhaW50cywgYXNzaWdubWVudHMsIGVxdWl2YWxlbmNlcywgZmFjdE9yU3VicHJvb2ZzLCBkZWNsYXJlZFZhcmlhYmxlcykge1xuICAgIHN1cGVyKGNvbnRleHQpO1xuXG4gICAgdGhpcy5jb25zdHJhaW50cyA9IGNvbnN0cmFpbnRzO1xuICAgIHRoaXMuYXNzaWdubWVudHMgPSBhc3NpZ25tZW50cztcbiAgICB0aGlzLmVxdWl2YWxlbmNlcyA9IGVxdWl2YWxlbmNlcztcbiAgICB0aGlzLmZhY3RPclN1YnByb29mcyA9IGZhY3RPclN1YnByb29mcztcbiAgICB0aGlzLmRlY2xhcmVkVmFyaWFibGVzID0gZGVjbGFyZWRWYXJpYWJsZXM7XG4gIH1cblxuICBnZXRDb25zdHJhaW50cygpIHtcbiAgICByZXR1cm4gdGhpcy5jb25zdHJhaW50cztcbiAgfVxuXG4gIGdldEFzc2lnbm1lbnRzKCkge1xuICAgIHJldHVybiB0aGlzLmFzc2lnbm1lbnRzO1xuICB9XG5cbiAgZ2V0RXF1aXZhbGVuY2VzKCkge1xuICAgIGxldCBlcXVpdmFsZW5jZXM7XG5cbiAgICBsZXQgY29udGV4dDtcblxuICAgIGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKTtcblxuICAgIGVxdWl2YWxlbmNlcyA9IGNvbnRleHQuZ2V0RXF1aXZhbGVuY2VzKCk7XG5cbiAgICBjb250ZXh0ID0gdGhpczsgLy8vXG5cbiAgICBlcXVpdmFsZW5jZXMgPSBtZXJnZUVxdWl2YWxlbmNlcyh0aGlzLmVxdWl2YWxlbmNlcywgZXF1aXZhbGVuY2VzLCBjb250ZXh0KTsgIC8vL1xuXG4gICAgcmV0dXJuIGVxdWl2YWxlbmNlcztcbiAgfVxuXG4gIGdldEZhY3RPclN1YnByb29mcygpIHtcbiAgICBsZXQgZmFjdE9yU3VicHJvb2ZzO1xuXG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpO1xuXG4gICAgZmFjdE9yU3VicHJvb2ZzID0gY29udGV4dC5nZXRGYWN0T3JTdWJwcm9vZnMoKTtcblxuICAgIGZhY3RPclN1YnByb29mcyA9IFsgIC8vL1xuICAgICAgLi4uZmFjdE9yU3VicHJvb2ZzLFxuICAgICAgLi4udGhpcy5mYWN0T3JTdWJwcm9vZnNcbiAgICBdO1xuXG4gICAgcmV0dXJuIGZhY3RPclN1YnByb29mcztcbiAgfVxuXG4gIGdldERlY2xhcmVkVmFyaWFibGVzKGRlY2xhcmVkVmFyaWFibGVzID0gW10pIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCk7XG5cbiAgICBwdXNoKGRlY2xhcmVkVmFyaWFibGVzLCB0aGlzLmRlY2xhcmVkVmFyaWFibGVzKTtcblxuICAgIGNvbnRleHQuZ2V0RGVjbGFyZWRWYXJpYWJsZXMoZGVjbGFyZWRWYXJpYWJsZXMpO1xuXG4gICAgcmV0dXJuIGRlY2xhcmVkVmFyaWFibGVzO1xuICB9XG5cbiAgc2V0RXF1aXZhbGVuY2VzKGVxdWl2YWxlbmNlcykge1xuICAgIHRoaXMuZXF1aXZhbGVuY2VzID0gZXF1aXZhbGVuY2VzO1xuICB9XG5cbiAgZ2V0RmFjdHMoKSB7XG4gICAgY29uc3QgZmFjdE9yU3VicHJvb2ZzID0gdGhpcy5nZXRGYWN0T3JTdWJwcm9vZnMoKSxcbiAgICAgICAgICBmYWN0cyA9IGZhY3RPclN1YnByb29mcy5maWx0ZXIoKGZhY3RPclN1YnByb29mKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBmYWN0T3JTdWJwcm9vZkZhY3QgPSBmYWN0T3JTdWJwcm9vZi5pc0ZhY3QoKTtcblxuICAgICAgICAgICAgaWYgKGZhY3RPclN1YnByb29mRmFjdCkge1xuICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcblxuICAgIHJldHVybiBmYWN0cztcbiAgfVxuXG4gIGdldFN0ZXBzKCkge1xuICAgIGNvbnN0IGZhY3RzID0gdGhpcy5nZXRGYWN0cygpLFxuICAgICAgICAgIHN0ZXBzID0gZmFjdHMuZmlsdGVyKChmYWN0KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBmYWN0U3RlcCA9IGZhY3QuaXNTdGVwKCk7XG5cbiAgICAgICAgICAgIGlmIChmYWN0U3RlcCkge1xuICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcblxuICAgIHJldHVybiBzdGVwcztcbiAgfVxuXG4gIGdldExhc3RTdGVwKCkge1xuICAgIGxldCBsYXN0U3RlcCA9IG51bGw7XG5cbiAgICBjb25zdCBzdGVwcyA9IHRoaXMuZ2V0U3RlcHMoKSxcbiAgICAgICAgICBzdGVwc0xlbmd0aCA9IHN0ZXBzLmxlbmd0aDtcblxuICAgIGlmIChzdGVwc0xlbmd0aCA+IDApIHtcbiAgICAgIGxhc3RTdGVwID0gbGFzdChzdGVwcyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGxhc3RTdGVwO1xuICB9XG5cbiAgaXNNZXRhTGV2ZWwoKSB7XG4gICAgbGV0IG1ldGFMZXZlbDtcblxuICAgIGlmICh0aGlzLmNvbnN0cmFpbnRzICE9PSBudWxsKSB7XG4gICAgICBtZXRhTGV2ZWwgPSB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCk7XG5cbiAgICAgIG1ldGFMZXZlbCA9IGNvbnRleHQuaXNNZXRhTGV2ZWwoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbWV0YUxldmVsO1xuICB9XG5cbiAgYWRkQXNzaWdubWVudChhc3NpZ25tZW50KSB7XG4gICAgdGhpcy5hc3NpZ25tZW50cy5wdXNoKGFzc2lnbm1lbnQpO1xuICB9XG5cbiAgYXNzaWduQXNzaWdubWVudHMoKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXM7IC8vL1xuXG4gICAgdGhpcy5hc3NpZ25tZW50cy5mb3JFYWNoKChhc3NpZ25tZW50KSA9PiB7XG4gICAgICBhc3NpZ25tZW50KGNvbnRleHQpO1xuICAgIH0pO1xuXG4gICAgY2xlYXIodGhpcy5hc3NpZ25tZW50cyk7XG4gIH1cblxuICBhZGREZWNsYXJlZFZhcmlhYmxlKGRlY2xhcmVkVmFyaWFibGUpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcywgLy8vXG4gICAgICAgICAgZGVjbGFyZWRWYXJpYWJsZVN0cmluZyA9IGRlY2xhcmVkVmFyaWFibGUuZ2V0U3RyaW5nKCk7XG5cbiAgICBjb250ZXh0LnRyYWNlKGBBZGRpbmcgdGhlICcke2RlY2xhcmVkVmFyaWFibGVTdHJpbmd9JyBkZWNsYXJlZCB2YXJpYWJsZSB0byB0aGUgdGVtZXJpYyBjb250ZXh0Li4uYCk7XG5cbiAgICB0aGlzLmRlY2xhcmVkVmFyaWFibGVzLnB1c2goZGVjbGFyZWRWYXJpYWJsZSk7XG5cbiAgICBjb250ZXh0LmRlYnVnKGAuLi5hZGRlZCB0aGUgJyR7ZGVjbGFyZWRWYXJpYWJsZVN0cmluZ30nIGRlY2xhcmVkIHZhcmlhYmxlIHRvIHRoZSB0ZW1lcmljIGNvbnRleHQuYCk7XG4gIH1cblxuICBhZGRDb25zdHJhaW50KGNvbnN0cmFpbnQpIHtcbiAgICBpZiAodGhpcy5jb25zdHJhaW50cyA9PT0gbnVsbCkge1xuICAgICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpO1xuXG4gICAgICBjb250ZXh0LmFkZENvbnN0cmFpbnQoY29uc3RyYWludCk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcywgLy8vXG4gICAgICAgICAgY29uc3RyYWludEEgPSBjb25zdHJhaW50LCAvLy9cbiAgICAgICAgICBjb25zdHJhaW50U3RyaW5nID0gY29uc3RyYWludC5nZXRTdHJpbmcoKTtcblxuICAgIGNvbnRleHQudHJhY2UoYEFkZGluZyB0aGUgJyR7Y29uc3RyYWludFN0cmluZ30nIGNvbnN0cmFpbnQgdG8gdGhlIHRlbWVyaWMgY29udGV4dC4uLmApO1xuXG4gICAgY29uc3QgY29uc3RyYWludEIgPSB0aGlzLmNvbnN0cmFpbnRzLmZpbmQoKGNvbnN0cmFpbnQpID0+IHtcbiAgICAgIGNvbnN0IGNvbnN0cmFpbnRCID0gY29uc3RyYWludCwgLy8vXG4gICAgICAgICAgICBjb25zdHJhaW50QUVxdWFsVG9Bc3N1bXB0aW9uQiA9IGNvbnN0cmFpbnRBLmlzRXF1YWxUbyhjb25zdHJhaW50Qik7XG5cbiAgICAgIGlmIChjb25zdHJhaW50QUVxdWFsVG9Bc3N1bXB0aW9uQikge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9KSB8fCBudWxsO1xuXG4gICAgaWYgKGNvbnN0cmFpbnRCICE9PSBudWxsKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGBUaGUgJyR7Y29uc3RyYWludFN0cmluZ30nIGNvbnN0cmFpbnQgaGFzIGFscmVhZHkgYmVlbiBhZGRlZCB0byB0aGUgdGVtZXJpYyBjb250ZXh0LmApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmNvbnN0cmFpbnRzLnB1c2goY29uc3RyYWludCk7XG4gICAgfVxuXG4gICAgY29udGV4dC5kZWJ1ZyhgLi4uYWRkZWQgdGhlICcke2NvbnN0cmFpbnRTdHJpbmd9JyBjb25zdHJhaW50IHRvIHRoZSB0ZW1lcmljIGNvbnRleHQuYCk7XG4gIH1cblxuICBhZGRHZW5lcmF0b3IoZ2VuZXJhdG9yKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpO1xuXG4gICAgY29udGV4dC5hZGRHZW5lcmF0b3IoZ2VuZXJhdG9yKTtcbiAgfVxuXG4gIGFkZENvbnN0cnVjdG9yKGNvbnN0cnVjdG9yKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpO1xuXG4gICAgY29udGV4dC5hZGRDb25zdHJ1Y3Rvcihjb25zdHJ1Y3Rvcik7XG4gIH1cblxuICBhZGRGYWN0T3JTdWJwcm9vZihmYWN0T3JTdWJwcm9vZikge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLCAvLy9cbiAgICAgICAgICBmYWN0T3JTdWJwcm9vZlN0cmluZyA9IGZhY3RPclN1YnByb29mLmdldFN0cmluZygpO1xuXG4gICAgY29udGV4dC50cmFjZShgQWRkaW5nIHRoZSAnJHtmYWN0T3JTdWJwcm9vZlN0cmluZ30nIGZhY3Qgb3Igc3VicHJvb2YgdG8gdGhlIHRlbWVyaWMgY29udGV4dC4uLmApO1xuXG4gICAgdGhpcy5mYWN0T3JTdWJwcm9vZnMucHVzaChmYWN0T3JTdWJwcm9vZik7XG5cbiAgICBjb250ZXh0LmRlYnVnKGAuLi5hZGRlZCB0aGUgJyR7ZmFjdE9yU3VicHJvb2ZTdHJpbmd9JyBmYWN0IG9yIHN1YnByb29mIHRvIHRoZSB0ZW1lcmljIGNvbnRleHQuYCk7XG4gIH1cblxuICBmaW5kRGVjbGFyZWRWYXJpYWJsZUJ5VmFyaWFibGVJZGVudGlmaWVyKHZhcmlhYmxlSWRlbnRpZmllcikge1xuICAgIGNvbnN0IGRlY2xhcmVkVmFyaWFibGVzID0gdGhpcy5nZXREZWNsYXJlZFZhcmlhYmxlcygpLFxuICAgICAgICAgIGRlY2xhcmVkVmFyaWFibGUgPSBkZWNsYXJlZFZhcmlhYmxlcy5maW5kKChkZWNsYXJlZFZhcmlhYmxlKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB2YXJpYWJsZUNvbXBhcmVzVG9WYXJpYWJsZUlkZW50aWZpZXIgPSBkZWNsYXJlZFZhcmlhYmxlLmNvbXBhcmVWYXJpYWJsZUlkZW50aWZpZXIodmFyaWFibGVJZGVudGlmaWVyKTtcblxuICAgICAgICAgICAgaWYgKHZhcmlhYmxlQ29tcGFyZXNUb1ZhcmlhYmxlSWRlbnRpZmllcikge1xuICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KSB8fCBudWxsO1xuXG4gICAgcmV0dXJuIGRlY2xhcmVkVmFyaWFibGU7XG4gIH1cblxuICBmaW5kRGVjbGFyZWRWYXJpYWJsZXNCeVZhcmlhYmxlSWRlbnRpZmllcih2YXJpYWJsZUlkZW50aWZpZXIpIHtcbiAgICBsZXQgZGVjbGFyZWRWYXJpYWJsZXM7XG5cbiAgICBkZWNsYXJlZFZhcmlhYmxlcyA9IHRoaXMuZ2V0RGVjbGFyZWRWYXJpYWJsZXMoKTtcblxuICAgIGRlY2xhcmVkVmFyaWFibGVzID0gZGVjbGFyZWRWYXJpYWJsZXMuZmlsdGVyKChkZWNsYXJlZFZhcmlhYmxlKSA9PiB7XG4gICAgICBjb25zdCB2YXJpYWJsZUNvbXBhcmVzVG9WYXJpYWJsZUlkZW50aWZpZXIgPSBkZWNsYXJlZFZhcmlhYmxlLmNvbXBhcmVWYXJpYWJsZUlkZW50aWZpZXIodmFyaWFibGVJZGVudGlmaWVyKTtcblxuICAgICAgaWYgKHZhcmlhYmxlQ29tcGFyZXNUb1ZhcmlhYmxlSWRlbnRpZmllcikge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBkZWNsYXJlZFZhcmlhYmxlcztcbiAgfVxuXG4gIGZpbmRDb25zdHJhaW50QnlDb25zdHJhaW50Tm9kZShjb25zdHJhaW50Tm9kZSkge1xuICAgIGxldCBjb25zdHJhaW50O1xuXG4gICAgaWYgKHRoaXMuY29uc3RyYWludHMgPT09IG51bGwpIHtcbiAgICAgIGNvbnN0cmFpbnQgPSBzdXBlci5maW5kQ29uc3RyYWludEJ5Q29uc3RyYWludE5vZGUoY29uc3RyYWludE5vZGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdHJhaW50ID0gdGhpcy5jb25zdHJhaW50cy5maW5kKChjb25zdHJhaW50KSA9PiB7XG4gICAgICAgIGNvbnN0IGNvbnN0cmFpbnROb2RlTWF0Y2hlcyA9IGNvbnN0cmFpbnQubWF0Y2hDb25zdHJhaW50Tm9kZShjb25zdHJhaW50Tm9kZSk7XG5cbiAgICAgICAgaWYgKGNvbnN0cmFpbnROb2RlTWF0Y2hlcykge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICB9KSB8fCBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiBjb25zdHJhaW50O1xuICB9XG5cbiAgaXNEZWNsYXJlZFZhcmlhYmxlUHJlc2VudEJ5VmFyaWFibGVJZGVudGlmaWVyKHZhcmlhYmxlSWRlbnRpZmllcikge1xuICAgIGNvbnN0IGRlY2xhcmVkVmFyaWFibGUgPSB0aGlzLmZpbmREZWNsYXJlZFZhcmlhYmxlQnlWYXJpYWJsZUlkZW50aWZpZXIodmFyaWFibGVJZGVudGlmaWVyKSxcbiAgICAgICAgICBkZWNsYXJlZFZhcmlhYmxlUHJlc2VudCA9IChkZWNsYXJlZFZhcmlhYmxlICE9PSBudWxsKTtcblxuICAgIHJldHVybiBkZWNsYXJlZFZhcmlhYmxlUHJlc2VudDtcbiAgfVxuXG4gIGlzVGVybUdyb3VuZGVkKHRlcm0pIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcywgLy8vXG4gICAgICAgICAgZXF1aXZhbGVuY2VzID0gdGhpcy5nZXRFcXVpdmFsZW5jZXMoKSxcbiAgICAgICAgICBncm91bmRlZFRlcm1zID0gW10sXG4gICAgICAgICAgZGVmaW5lZFZhcmlhYmxlcyA9IFtdO1xuXG4gICAgc2VwYXJhdGVHcm91bmRlZFRlcm1zQW5kRGVmaW5lZFZhcmlhYmxlcyhlcXVpdmFsZW5jZXMsIGdyb3VuZGVkVGVybXMsIGRlZmluZWRWYXJpYWJsZXMsIGNvbnRleHQpO1xuXG4gICAgY29uc3QgdGVybU1hdGNoZXNHcm91bmRlZFRlcm0gPSBncm91bmRlZFRlcm1zLnNvbWUoKGdyb3VuZGVkVGVybSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgZ3JvdW5kZWRUZXJtTm9kZSA9IGdyb3VuZGVkVGVybS5nZXROb2RlKCksXG4gICAgICAgICAgICAgICAgICBncm91bmRlZFRlcm1Ob2RlTWF0Y2hlcyA9IHRlcm0ubWF0Y2hUZXJtTm9kZShncm91bmRlZFRlcm1Ob2RlKTtcblxuICAgICAgICAgICAgaWYgKGdyb3VuZGVkVGVybU5vZGVNYXRjaGVzKSB7XG4gICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pLFxuICAgICAgICAgIHRlcm1Hcm91bmRlZCA9IHRlcm1NYXRjaGVzR3JvdW5kZWRUZXJtOyAvLy9cblxuICAgIHJldHVybiB0ZXJtR3JvdW5kZWQ7XG4gIH1cblxuICBzdGF0aWMgZnJvbU5vdGhpbmcoY29udGV4dCkge1xuICAgIGNvbnN0IGFzc2lnbm1lbnRzID0gW10sXG4gICAgICAgICAgZXF1aXZhbGVuY2VzID0gW10sXG4gICAgICAgICAgY29uc3RyYWludHMgPSBudWxsLFxuICAgICAgICAgIGZhY3RPclN1YnByb29mcyA9IFtdLFxuICAgICAgICAgIGRlY2xhcmVkVmFyaWFibGVzID0gW10sXG4gICAgICAgICAgdGVtZW5pY0NvbnRleHQgPSBuZXcgVGVtZW5pY0NvbnRleHQoY29udGV4dCwgY29uc3RyYWludHMsIGFzc2lnbm1lbnRzLCBlcXVpdmFsZW5jZXMsIGZhY3RPclN1YnByb29mcywgZGVjbGFyZWRWYXJpYWJsZXMpO1xuXG4gICAgcmV0dXJuIHRlbWVuaWNDb250ZXh0O1xuICB9XG5cbiAgc3RhdGljIGZyb21Db25zdHJhaW50cyhjb25zdHJhaW50cywgY29udGV4dCkge1xuICAgIGNvbnN0IGFzc2lnbm1lbnRzID0gW10sXG4gICAgICAgICAgZXF1aXZhbGVuY2VzID0gW10sXG4gICAgICAgICAgZmFjdE9yU3VicHJvb2ZzID0gW10sXG4gICAgICAgICAgZGVjbGFyZWRWYXJpYWJsZXMgPSBbXSxcbiAgICAgICAgICB0ZW1lbmljQ29udGV4dCA9IG5ldyBUZW1lbmljQ29udGV4dChjb250ZXh0LCBjb25zdHJhaW50cywgYXNzaWdubWVudHMsIGVxdWl2YWxlbmNlcywgZmFjdE9yU3VicHJvb2ZzLCBkZWNsYXJlZFZhcmlhYmxlcyk7XG5cbiAgICByZXR1cm4gdGVtZW5pY0NvbnRleHQ7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgVGVtZW5pY0NvbnRleHQ7Il0sIm5hbWVzIjpbImxhc3QiLCJwdXNoIiwiY2xlYXIiLCJhcnJheVV0aWxpdGllcyIsIlRlbWVuaWNDb250ZXh0IiwiQ29udGV4dCIsImNvbnRleHQiLCJjb25zdHJhaW50cyIsImFzc2lnbm1lbnRzIiwiZXF1aXZhbGVuY2VzIiwiZmFjdE9yU3VicHJvb2ZzIiwiZGVjbGFyZWRWYXJpYWJsZXMiLCJnZXRDb25zdHJhaW50cyIsImdldEFzc2lnbm1lbnRzIiwiZ2V0RXF1aXZhbGVuY2VzIiwiZ2V0Q29udGV4dCIsIm1lcmdlRXF1aXZhbGVuY2VzIiwiZ2V0RmFjdE9yU3VicHJvb2ZzIiwiZ2V0RGVjbGFyZWRWYXJpYWJsZXMiLCJzZXRFcXVpdmFsZW5jZXMiLCJnZXRGYWN0cyIsImZhY3RzIiwiZmlsdGVyIiwiZmFjdE9yU3VicHJvb2YiLCJmYWN0T3JTdWJwcm9vZkZhY3QiLCJpc0ZhY3QiLCJnZXRTdGVwcyIsInN0ZXBzIiwiZmFjdCIsImZhY3RTdGVwIiwiaXNTdGVwIiwiZ2V0TGFzdFN0ZXAiLCJsYXN0U3RlcCIsInN0ZXBzTGVuZ3RoIiwibGVuZ3RoIiwiaXNNZXRhTGV2ZWwiLCJtZXRhTGV2ZWwiLCJhZGRBc3NpZ25tZW50IiwiYXNzaWdubWVudCIsImFzc2lnbkFzc2lnbm1lbnRzIiwiZm9yRWFjaCIsImFkZERlY2xhcmVkVmFyaWFibGUiLCJkZWNsYXJlZFZhcmlhYmxlIiwiZGVjbGFyZWRWYXJpYWJsZVN0cmluZyIsImdldFN0cmluZyIsInRyYWNlIiwiZGVidWciLCJhZGRDb25zdHJhaW50IiwiY29uc3RyYWludCIsImNvbnN0cmFpbnRBIiwiY29uc3RyYWludFN0cmluZyIsImNvbnN0cmFpbnRCIiwiZmluZCIsImNvbnN0cmFpbnRBRXF1YWxUb0Fzc3VtcHRpb25CIiwiaXNFcXVhbFRvIiwiYWRkR2VuZXJhdG9yIiwiZ2VuZXJhdG9yIiwiYWRkQ29uc3RydWN0b3IiLCJjb25zdHJ1Y3RvciIsImFkZEZhY3RPclN1YnByb29mIiwiZmFjdE9yU3VicHJvb2ZTdHJpbmciLCJmaW5kRGVjbGFyZWRWYXJpYWJsZUJ5VmFyaWFibGVJZGVudGlmaWVyIiwidmFyaWFibGVJZGVudGlmaWVyIiwidmFyaWFibGVDb21wYXJlc1RvVmFyaWFibGVJZGVudGlmaWVyIiwiY29tcGFyZVZhcmlhYmxlSWRlbnRpZmllciIsImZpbmREZWNsYXJlZFZhcmlhYmxlc0J5VmFyaWFibGVJZGVudGlmaWVyIiwiZmluZENvbnN0cmFpbnRCeUNvbnN0cmFpbnROb2RlIiwiY29uc3RyYWludE5vZGUiLCJjb25zdHJhaW50Tm9kZU1hdGNoZXMiLCJtYXRjaENvbnN0cmFpbnROb2RlIiwiaXNEZWNsYXJlZFZhcmlhYmxlUHJlc2VudEJ5VmFyaWFibGVJZGVudGlmaWVyIiwiZGVjbGFyZWRWYXJpYWJsZVByZXNlbnQiLCJpc1Rlcm1Hcm91bmRlZCIsInRlcm0iLCJncm91bmRlZFRlcm1zIiwiZGVmaW5lZFZhcmlhYmxlcyIsInNlcGFyYXRlR3JvdW5kZWRUZXJtc0FuZERlZmluZWRWYXJpYWJsZXMiLCJ0ZXJtTWF0Y2hlc0dyb3VuZGVkVGVybSIsInNvbWUiLCJncm91bmRlZFRlcm0iLCJncm91bmRlZFRlcm1Ob2RlIiwiZ2V0Tm9kZSIsImdyb3VuZGVkVGVybU5vZGVNYXRjaGVzIiwibWF0Y2hUZXJtTm9kZSIsInRlcm1Hcm91bmRlZCIsImZyb21Ob3RoaW5nIiwidGVtZW5pY0NvbnRleHQiLCJmcm9tQ29uc3RyYWludHMiXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQWlUQTs7O2VBQUE7OzsyQkEvUytCO2dFQUVYOzhCQUV3RDs7Ozs7O0FBRTVFLE1BQU0sRUFBRUEsSUFBSSxFQUFFQyxJQUFJLEVBQUVDLEtBQUss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
226
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb250ZXh0L3RlbWVuaWMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IGFycmF5VXRpbGl0aWVzIH0gZnJvbSBcIm5lY2Vzc2FyeVwiO1xuXG5pbXBvcnQgQ29udGV4dCBmcm9tIFwiLi4vY29udGV4dFwiO1xuXG5pbXBvcnQgeyBtZXJnZUVxdWl2YWxlbmNlcywgc2VwYXJhdGVHcm91bmRlZFRlcm1zQW5kRGVmaW5lZFZhcmlhYmxlcyB9IGZyb20gXCIuLi91dGlsaXRpZXMvZXF1aXZhbGVuY2VzXCI7XG5cbmNvbnN0IHsgbGFzdCwgcHVzaCwgY2xlYXIgfSA9IGFycmF5VXRpbGl0aWVzO1xuXG5jbGFzcyBUZW1lbmljQ29udGV4dCBleHRlbmRzIENvbnRleHQge1xuICBjb25zdHJ1Y3Rvcihjb250ZXh0LCBjb25zdHJhaW50cywgYXNzaWdubWVudHMsIGVxdWl2YWxlbmNlcywgZmFjdE9yU3VicHJvb2ZzLCBkZWNsYXJlZFZhcmlhYmxlcykge1xuICAgIHN1cGVyKGNvbnRleHQpO1xuXG4gICAgdGhpcy5jb25zdHJhaW50cyA9IGNvbnN0cmFpbnRzO1xuICAgIHRoaXMuYXNzaWdubWVudHMgPSBhc3NpZ25tZW50cztcbiAgICB0aGlzLmVxdWl2YWxlbmNlcyA9IGVxdWl2YWxlbmNlcztcbiAgICB0aGlzLmZhY3RPclN1YnByb29mcyA9IGZhY3RPclN1YnByb29mcztcbiAgICB0aGlzLmRlY2xhcmVkVmFyaWFibGVzID0gZGVjbGFyZWRWYXJpYWJsZXM7XG4gIH1cblxuICBnZXRDb25zdHJhaW50cygpIHtcbiAgICByZXR1cm4gdGhpcy5jb25zdHJhaW50cztcbiAgfVxuXG4gIGdldEFzc2lnbm1lbnRzKCkge1xuICAgIHJldHVybiB0aGlzLmFzc2lnbm1lbnRzO1xuICB9XG5cbiAgZ2V0RXF1aXZhbGVuY2VzKCkge1xuICAgIGxldCBlcXVpdmFsZW5jZXM7XG5cbiAgICBsZXQgY29udGV4dDtcblxuICAgIGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKTtcblxuICAgIGVxdWl2YWxlbmNlcyA9IGNvbnRleHQuZ2V0RXF1aXZhbGVuY2VzKCk7XG5cbiAgICBjb250ZXh0ID0gdGhpczsgLy8vXG5cbiAgICBlcXVpdmFsZW5jZXMgPSBtZXJnZUVxdWl2YWxlbmNlcyh0aGlzLmVxdWl2YWxlbmNlcywgZXF1aXZhbGVuY2VzLCBjb250ZXh0KTsgIC8vL1xuXG4gICAgcmV0dXJuIGVxdWl2YWxlbmNlcztcbiAgfVxuXG4gIGdldEZhY3RPclN1YnByb29mcygpIHtcbiAgICBsZXQgZmFjdE9yU3VicHJvb2ZzO1xuXG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpO1xuXG4gICAgZmFjdE9yU3VicHJvb2ZzID0gY29udGV4dC5nZXRGYWN0T3JTdWJwcm9vZnMoKTtcblxuICAgIGZhY3RPclN1YnByb29mcyA9IFsgIC8vL1xuICAgICAgLi4uZmFjdE9yU3VicHJvb2ZzLFxuICAgICAgLi4udGhpcy5mYWN0T3JTdWJwcm9vZnNcbiAgICBdO1xuXG4gICAgcmV0dXJuIGZhY3RPclN1YnByb29mcztcbiAgfVxuXG4gIGdldERlY2xhcmVkVmFyaWFibGVzKGRlY2xhcmVkVmFyaWFibGVzID0gW10pIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCk7XG5cbiAgICBwdXNoKGRlY2xhcmVkVmFyaWFibGVzLCB0aGlzLmRlY2xhcmVkVmFyaWFibGVzKTtcblxuICAgIGNvbnRleHQuZ2V0RGVjbGFyZWRWYXJpYWJsZXMoZGVjbGFyZWRWYXJpYWJsZXMpO1xuXG4gICAgcmV0dXJuIGRlY2xhcmVkVmFyaWFibGVzO1xuICB9XG5cbiAgc2V0RXF1aXZhbGVuY2VzKGVxdWl2YWxlbmNlcykge1xuICAgIHRoaXMuZXF1aXZhbGVuY2VzID0gZXF1aXZhbGVuY2VzO1xuICB9XG5cbiAgZ2V0RmFjdHMoKSB7XG4gICAgY29uc3QgZmFjdE9yU3VicHJvb2ZzID0gdGhpcy5nZXRGYWN0T3JTdWJwcm9vZnMoKSxcbiAgICAgICAgICBmYWN0cyA9IGZhY3RPclN1YnByb29mcy5maWx0ZXIoKGZhY3RPclN1YnByb29mKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBmYWN0T3JTdWJwcm9vZkZhY3QgPSBmYWN0T3JTdWJwcm9vZi5pc0ZhY3QoKTtcblxuICAgICAgICAgICAgaWYgKGZhY3RPclN1YnByb29mRmFjdCkge1xuICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcblxuICAgIHJldHVybiBmYWN0cztcbiAgfVxuXG4gIGdldFN0ZXBzKCkge1xuICAgIGNvbnN0IGZhY3RzID0gdGhpcy5nZXRGYWN0cygpLFxuICAgICAgICAgIHN0ZXBzID0gZmFjdHMuZmlsdGVyKChmYWN0KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBmYWN0U3RlcCA9IGZhY3QuaXNTdGVwKCk7XG5cbiAgICAgICAgICAgIGlmIChmYWN0U3RlcCkge1xuICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcblxuICAgIHJldHVybiBzdGVwcztcbiAgfVxuXG4gIGdldExhc3RTdGVwKCkge1xuICAgIGxldCBsYXN0U3RlcCA9IG51bGw7XG5cbiAgICBjb25zdCBzdGVwcyA9IHRoaXMuZ2V0U3RlcHMoKSxcbiAgICAgICAgICBzdGVwc0xlbmd0aCA9IHN0ZXBzLmxlbmd0aDtcblxuICAgIGlmIChzdGVwc0xlbmd0aCA+IDApIHtcbiAgICAgIGxhc3RTdGVwID0gbGFzdChzdGVwcyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGxhc3RTdGVwO1xuICB9XG5cbiAgaXNNZXRhTGV2ZWwoKSB7XG4gICAgbGV0IG1ldGFMZXZlbDtcblxuICAgIGlmICh0aGlzLmNvbnN0cmFpbnRzICE9PSBudWxsKSB7XG4gICAgICBtZXRhTGV2ZWwgPSB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCk7XG5cbiAgICAgIG1ldGFMZXZlbCA9IGNvbnRleHQuaXNNZXRhTGV2ZWwoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbWV0YUxldmVsO1xuICB9XG5cbiAgYWRkQXhpb20oYXhpb20pIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCk7XG5cbiAgICBjb250ZXh0LmFkZEF4aW9tKGF4aW9tKTtcbiAgfVxuXG4gIGFkZExlbW1hKGxlbW1hKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpO1xuXG4gICAgY29udGV4dC5hZGRMZW1tYShsZW1tYSk7XG4gIH1cblxuICBhZGRUaGVvcmVtKHRob3JlbSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKTtcblxuICAgIGNvbnRleHQuYWRkVGhlb3JlbSh0aG9yZW0pO1xuICB9XG5cbiAgYWRkQ29uamVjdHVyZShjb25qZWN0dXJlKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpO1xuXG4gICAgY29udGV4dC5hZGRDb25qZWN0dXJlKGNvbmplY3R1cmUpO1xuICB9XG5cbiAgYWRkQXNzaWdubWVudChhc3NpZ25tZW50KSB7XG4gICAgdGhpcy5hc3NpZ25tZW50cy5wdXNoKGFzc2lnbm1lbnQpO1xuICB9XG5cbiAgYXNzaWduQXNzaWdubWVudHMoKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXM7IC8vL1xuXG4gICAgdGhpcy5hc3NpZ25tZW50cy5mb3JFYWNoKChhc3NpZ25tZW50KSA9PiB7XG4gICAgICBhc3NpZ25tZW50KGNvbnRleHQpO1xuICAgIH0pO1xuXG4gICAgY2xlYXIodGhpcy5hc3NpZ25tZW50cyk7XG4gIH1cblxuICBhZGREZWNsYXJlZFZhcmlhYmxlKGRlY2xhcmVkVmFyaWFibGUpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcywgLy8vXG4gICAgICAgICAgZGVjbGFyZWRWYXJpYWJsZVN0cmluZyA9IGRlY2xhcmVkVmFyaWFibGUuZ2V0U3RyaW5nKCk7XG5cbiAgICBjb250ZXh0LnRyYWNlKGBBZGRpbmcgdGhlICcke2RlY2xhcmVkVmFyaWFibGVTdHJpbmd9JyBkZWNsYXJlZCB2YXJpYWJsZSB0byB0aGUgdGVtZXJpYyBjb250ZXh0Li4uYCk7XG5cbiAgICB0aGlzLmRlY2xhcmVkVmFyaWFibGVzLnB1c2goZGVjbGFyZWRWYXJpYWJsZSk7XG5cbiAgICBjb250ZXh0LmRlYnVnKGAuLi5hZGRlZCB0aGUgJyR7ZGVjbGFyZWRWYXJpYWJsZVN0cmluZ30nIGRlY2xhcmVkIHZhcmlhYmxlIHRvIHRoZSB0ZW1lcmljIGNvbnRleHQuYCk7XG4gIH1cblxuICBhZGRDb25zdHJhaW50KGNvbnN0cmFpbnQpIHtcbiAgICBpZiAodGhpcy5jb25zdHJhaW50cyA9PT0gbnVsbCkge1xuICAgICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpO1xuXG4gICAgICBjb250ZXh0LmFkZENvbnN0cmFpbnQoY29uc3RyYWludCk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcywgLy8vXG4gICAgICAgICAgY29uc3RyYWludEEgPSBjb25zdHJhaW50LCAvLy9cbiAgICAgICAgICBjb25zdHJhaW50U3RyaW5nID0gY29uc3RyYWludC5nZXRTdHJpbmcoKTtcblxuICAgIGNvbnRleHQudHJhY2UoYEFkZGluZyB0aGUgJyR7Y29uc3RyYWludFN0cmluZ30nIGNvbnN0cmFpbnQgdG8gdGhlIHRlbWVyaWMgY29udGV4dC4uLmApO1xuXG4gICAgY29uc3QgY29uc3RyYWludEIgPSB0aGlzLmNvbnN0cmFpbnRzLmZpbmQoKGNvbnN0cmFpbnQpID0+IHtcbiAgICAgIGNvbnN0IGNvbnN0cmFpbnRCID0gY29uc3RyYWludCwgLy8vXG4gICAgICAgICAgICBjb25zdHJhaW50QUVxdWFsVG9Bc3N1bXB0aW9uQiA9IGNvbnN0cmFpbnRBLmlzRXF1YWxUbyhjb25zdHJhaW50Qik7XG5cbiAgICAgIGlmIChjb25zdHJhaW50QUVxdWFsVG9Bc3N1bXB0aW9uQikge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9KSB8fCBudWxsO1xuXG4gICAgaWYgKGNvbnN0cmFpbnRCICE9PSBudWxsKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGBUaGUgJyR7Y29uc3RyYWludFN0cmluZ30nIGNvbnN0cmFpbnQgaGFzIGFscmVhZHkgYmVlbiBhZGRlZCB0byB0aGUgdGVtZXJpYyBjb250ZXh0LmApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmNvbnN0cmFpbnRzLnB1c2goY29uc3RyYWludCk7XG4gICAgfVxuXG4gICAgY29udGV4dC5kZWJ1ZyhgLi4uYWRkZWQgdGhlICcke2NvbnN0cmFpbnRTdHJpbmd9JyBjb25zdHJhaW50IHRvIHRoZSB0ZW1lcmljIGNvbnRleHQuYCk7XG4gIH1cblxuICBhZGRHZW5lcmF0b3IoZ2VuZXJhdG9yKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpO1xuXG4gICAgY29udGV4dC5hZGRHZW5lcmF0b3IoZ2VuZXJhdG9yKTtcbiAgfVxuXG4gIGFkZENvbnN0cnVjdG9yKGNvbnN0cnVjdG9yKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpO1xuXG4gICAgY29udGV4dC5hZGRDb25zdHJ1Y3Rvcihjb25zdHJ1Y3Rvcik7XG4gIH1cblxuICBhZGRGYWN0T3JTdWJwcm9vZihmYWN0T3JTdWJwcm9vZikge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLCAvLy9cbiAgICAgICAgICBmYWN0T3JTdWJwcm9vZlN0cmluZyA9IGZhY3RPclN1YnByb29mLmdldFN0cmluZygpO1xuXG4gICAgY29udGV4dC50cmFjZShgQWRkaW5nIHRoZSAnJHtmYWN0T3JTdWJwcm9vZlN0cmluZ30nIGZhY3Qgb3Igc3VicHJvb2YgdG8gdGhlIHRlbWVyaWMgY29udGV4dC4uLmApO1xuXG4gICAgdGhpcy5mYWN0T3JTdWJwcm9vZnMucHVzaChmYWN0T3JTdWJwcm9vZik7XG5cbiAgICBjb250ZXh0LmRlYnVnKGAuLi5hZGRlZCB0aGUgJyR7ZmFjdE9yU3VicHJvb2ZTdHJpbmd9JyBmYWN0IG9yIHN1YnByb29mIHRvIHRoZSB0ZW1lcmljIGNvbnRleHQuYCk7XG4gIH1cblxuICBmaW5kRGVjbGFyZWRWYXJpYWJsZUJ5VmFyaWFibGVJZGVudGlmaWVyKHZhcmlhYmxlSWRlbnRpZmllcikge1xuICAgIGNvbnN0IGRlY2xhcmVkVmFyaWFibGVzID0gdGhpcy5nZXREZWNsYXJlZFZhcmlhYmxlcygpLFxuICAgICAgICAgIGRlY2xhcmVkVmFyaWFibGUgPSBkZWNsYXJlZFZhcmlhYmxlcy5maW5kKChkZWNsYXJlZFZhcmlhYmxlKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB2YXJpYWJsZUNvbXBhcmVzVG9WYXJpYWJsZUlkZW50aWZpZXIgPSBkZWNsYXJlZFZhcmlhYmxlLmNvbXBhcmVWYXJpYWJsZUlkZW50aWZpZXIodmFyaWFibGVJZGVudGlmaWVyKTtcblxuICAgICAgICAgICAgaWYgKHZhcmlhYmxlQ29tcGFyZXNUb1ZhcmlhYmxlSWRlbnRpZmllcikge1xuICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KSB8fCBudWxsO1xuXG4gICAgcmV0dXJuIGRlY2xhcmVkVmFyaWFibGU7XG4gIH1cblxuICBmaW5kRGVjbGFyZWRWYXJpYWJsZXNCeVZhcmlhYmxlSWRlbnRpZmllcih2YXJpYWJsZUlkZW50aWZpZXIpIHtcbiAgICBsZXQgZGVjbGFyZWRWYXJpYWJsZXM7XG5cbiAgICBkZWNsYXJlZFZhcmlhYmxlcyA9IHRoaXMuZ2V0RGVjbGFyZWRWYXJpYWJsZXMoKTtcblxuICAgIGRlY2xhcmVkVmFyaWFibGVzID0gZGVjbGFyZWRWYXJpYWJsZXMuZmlsdGVyKChkZWNsYXJlZFZhcmlhYmxlKSA9PiB7XG4gICAgICBjb25zdCB2YXJpYWJsZUNvbXBhcmVzVG9WYXJpYWJsZUlkZW50aWZpZXIgPSBkZWNsYXJlZFZhcmlhYmxlLmNvbXBhcmVWYXJpYWJsZUlkZW50aWZpZXIodmFyaWFibGVJZGVudGlmaWVyKTtcblxuICAgICAgaWYgKHZhcmlhYmxlQ29tcGFyZXNUb1ZhcmlhYmxlSWRlbnRpZmllcikge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBkZWNsYXJlZFZhcmlhYmxlcztcbiAgfVxuXG4gIGZpbmRDb25zdHJhaW50QnlDb25zdHJhaW50Tm9kZShjb25zdHJhaW50Tm9kZSkge1xuICAgIGxldCBjb25zdHJhaW50O1xuXG4gICAgaWYgKHRoaXMuY29uc3RyYWludHMgPT09IG51bGwpIHtcbiAgICAgIGNvbnN0cmFpbnQgPSBzdXBlci5maW5kQ29uc3RyYWludEJ5Q29uc3RyYWludE5vZGUoY29uc3RyYWludE5vZGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdHJhaW50ID0gdGhpcy5jb25zdHJhaW50cy5maW5kKChjb25zdHJhaW50KSA9PiB7XG4gICAgICAgIGNvbnN0IGNvbnN0cmFpbnROb2RlTWF0Y2hlcyA9IGNvbnN0cmFpbnQubWF0Y2hDb25zdHJhaW50Tm9kZShjb25zdHJhaW50Tm9kZSk7XG5cbiAgICAgICAgaWYgKGNvbnN0cmFpbnROb2RlTWF0Y2hlcykge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICB9KSB8fCBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiBjb25zdHJhaW50O1xuICB9XG5cbiAgaXNEZWNsYXJlZFZhcmlhYmxlUHJlc2VudEJ5VmFyaWFibGVJZGVudGlmaWVyKHZhcmlhYmxlSWRlbnRpZmllcikge1xuICAgIGNvbnN0IGRlY2xhcmVkVmFyaWFibGUgPSB0aGlzLmZpbmREZWNsYXJlZFZhcmlhYmxlQnlWYXJpYWJsZUlkZW50aWZpZXIodmFyaWFibGVJZGVudGlmaWVyKSxcbiAgICAgICAgICBkZWNsYXJlZFZhcmlhYmxlUHJlc2VudCA9IChkZWNsYXJlZFZhcmlhYmxlICE9PSBudWxsKTtcblxuICAgIHJldHVybiBkZWNsYXJlZFZhcmlhYmxlUHJlc2VudDtcbiAgfVxuXG4gIGlzVGVybUdyb3VuZGVkKHRlcm0pIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcywgLy8vXG4gICAgICAgICAgZXF1aXZhbGVuY2VzID0gdGhpcy5nZXRFcXVpdmFsZW5jZXMoKSxcbiAgICAgICAgICBncm91bmRlZFRlcm1zID0gW10sXG4gICAgICAgICAgZGVmaW5lZFZhcmlhYmxlcyA9IFtdO1xuXG4gICAgc2VwYXJhdGVHcm91bmRlZFRlcm1zQW5kRGVmaW5lZFZhcmlhYmxlcyhlcXVpdmFsZW5jZXMsIGdyb3VuZGVkVGVybXMsIGRlZmluZWRWYXJpYWJsZXMsIGNvbnRleHQpO1xuXG4gICAgY29uc3QgdGVybU1hdGNoZXNHcm91bmRlZFRlcm0gPSBncm91bmRlZFRlcm1zLnNvbWUoKGdyb3VuZGVkVGVybSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgZ3JvdW5kZWRUZXJtTm9kZSA9IGdyb3VuZGVkVGVybS5nZXROb2RlKCksXG4gICAgICAgICAgICAgICAgICBncm91bmRlZFRlcm1Ob2RlTWF0Y2hlcyA9IHRlcm0ubWF0Y2hUZXJtTm9kZShncm91bmRlZFRlcm1Ob2RlKTtcblxuICAgICAgICAgICAgaWYgKGdyb3VuZGVkVGVybU5vZGVNYXRjaGVzKSB7XG4gICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pLFxuICAgICAgICAgIHRlcm1Hcm91bmRlZCA9IHRlcm1NYXRjaGVzR3JvdW5kZWRUZXJtOyAvLy9cblxuICAgIHJldHVybiB0ZXJtR3JvdW5kZWQ7XG4gIH1cblxuICBzdGF0aWMgZnJvbU5vdGhpbmcoY29udGV4dCkge1xuICAgIGNvbnN0IGFzc2lnbm1lbnRzID0gW10sXG4gICAgICAgICAgZXF1aXZhbGVuY2VzID0gW10sXG4gICAgICAgICAgY29uc3RyYWludHMgPSBudWxsLFxuICAgICAgICAgIGZhY3RPclN1YnByb29mcyA9IFtdLFxuICAgICAgICAgIGRlY2xhcmVkVmFyaWFibGVzID0gW10sXG4gICAgICAgICAgdGVtZW5pY0NvbnRleHQgPSBuZXcgVGVtZW5pY0NvbnRleHQoY29udGV4dCwgY29uc3RyYWludHMsIGFzc2lnbm1lbnRzLCBlcXVpdmFsZW5jZXMsIGZhY3RPclN1YnByb29mcywgZGVjbGFyZWRWYXJpYWJsZXMpO1xuXG4gICAgcmV0dXJuIHRlbWVuaWNDb250ZXh0O1xuICB9XG5cbiAgc3RhdGljIGZyb21Db25zdHJhaW50cyhjb25zdHJhaW50cywgY29udGV4dCkge1xuICAgIGNvbnN0IGFzc2lnbm1lbnRzID0gW10sXG4gICAgICAgICAgZXF1aXZhbGVuY2VzID0gW10sXG4gICAgICAgICAgZmFjdE9yU3VicHJvb2ZzID0gW10sXG4gICAgICAgICAgZGVjbGFyZWRWYXJpYWJsZXMgPSBbXSxcbiAgICAgICAgICB0ZW1lbmljQ29udGV4dCA9IG5ldyBUZW1lbmljQ29udGV4dChjb250ZXh0LCBjb25zdHJhaW50cywgYXNzaWdubWVudHMsIGVxdWl2YWxlbmNlcywgZmFjdE9yU3VicHJvb2ZzLCBkZWNsYXJlZFZhcmlhYmxlcyk7XG5cbiAgICByZXR1cm4gdGVtZW5pY0NvbnRleHQ7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgVGVtZW5pY0NvbnRleHQ7Il0sIm5hbWVzIjpbImxhc3QiLCJwdXNoIiwiY2xlYXIiLCJhcnJheVV0aWxpdGllcyIsIlRlbWVuaWNDb250ZXh0IiwiQ29udGV4dCIsImNvbnRleHQiLCJjb25zdHJhaW50cyIsImFzc2lnbm1lbnRzIiwiZXF1aXZhbGVuY2VzIiwiZmFjdE9yU3VicHJvb2ZzIiwiZGVjbGFyZWRWYXJpYWJsZXMiLCJnZXRDb25zdHJhaW50cyIsImdldEFzc2lnbm1lbnRzIiwiZ2V0RXF1aXZhbGVuY2VzIiwiZ2V0Q29udGV4dCIsIm1lcmdlRXF1aXZhbGVuY2VzIiwiZ2V0RmFjdE9yU3VicHJvb2ZzIiwiZ2V0RGVjbGFyZWRWYXJpYWJsZXMiLCJzZXRFcXVpdmFsZW5jZXMiLCJnZXRGYWN0cyIsImZhY3RzIiwiZmlsdGVyIiwiZmFjdE9yU3VicHJvb2YiLCJmYWN0T3JTdWJwcm9vZkZhY3QiLCJpc0ZhY3QiLCJnZXRTdGVwcyIsInN0ZXBzIiwiZmFjdCIsImZhY3RTdGVwIiwiaXNTdGVwIiwiZ2V0TGFzdFN0ZXAiLCJsYXN0U3RlcCIsInN0ZXBzTGVuZ3RoIiwibGVuZ3RoIiwiaXNNZXRhTGV2ZWwiLCJtZXRhTGV2ZWwiLCJhZGRBeGlvbSIsImF4aW9tIiwiYWRkTGVtbWEiLCJsZW1tYSIsImFkZFRoZW9yZW0iLCJ0aG9yZW0iLCJhZGRDb25qZWN0dXJlIiwiY29uamVjdHVyZSIsImFkZEFzc2lnbm1lbnQiLCJhc3NpZ25tZW50IiwiYXNzaWduQXNzaWdubWVudHMiLCJmb3JFYWNoIiwiYWRkRGVjbGFyZWRWYXJpYWJsZSIsImRlY2xhcmVkVmFyaWFibGUiLCJkZWNsYXJlZFZhcmlhYmxlU3RyaW5nIiwiZ2V0U3RyaW5nIiwidHJhY2UiLCJkZWJ1ZyIsImFkZENvbnN0cmFpbnQiLCJjb25zdHJhaW50IiwiY29uc3RyYWludEEiLCJjb25zdHJhaW50U3RyaW5nIiwiY29uc3RyYWludEIiLCJmaW5kIiwiY29uc3RyYWludEFFcXVhbFRvQXNzdW1wdGlvbkIiLCJpc0VxdWFsVG8iLCJhZGRHZW5lcmF0b3IiLCJnZW5lcmF0b3IiLCJhZGRDb25zdHJ1Y3RvciIsImNvbnN0cnVjdG9yIiwiYWRkRmFjdE9yU3VicHJvb2YiLCJmYWN0T3JTdWJwcm9vZlN0cmluZyIsImZpbmREZWNsYXJlZFZhcmlhYmxlQnlWYXJpYWJsZUlkZW50aWZpZXIiLCJ2YXJpYWJsZUlkZW50aWZpZXIiLCJ2YXJpYWJsZUNvbXBhcmVzVG9WYXJpYWJsZUlkZW50aWZpZXIiLCJjb21wYXJlVmFyaWFibGVJZGVudGlmaWVyIiwiZmluZERlY2xhcmVkVmFyaWFibGVzQnlWYXJpYWJsZUlkZW50aWZpZXIiLCJmaW5kQ29uc3RyYWludEJ5Q29uc3RyYWludE5vZGUiLCJjb25zdHJhaW50Tm9kZSIsImNvbnN0cmFpbnROb2RlTWF0Y2hlcyIsIm1hdGNoQ29uc3RyYWludE5vZGUiLCJpc0RlY2xhcmVkVmFyaWFibGVQcmVzZW50QnlWYXJpYWJsZUlkZW50aWZpZXIiLCJkZWNsYXJlZFZhcmlhYmxlUHJlc2VudCIsImlzVGVybUdyb3VuZGVkIiwidGVybSIsImdyb3VuZGVkVGVybXMiLCJkZWZpbmVkVmFyaWFibGVzIiwic2VwYXJhdGVHcm91bmRlZFRlcm1zQW5kRGVmaW5lZFZhcmlhYmxlcyIsInRlcm1NYXRjaGVzR3JvdW5kZWRUZXJtIiwic29tZSIsImdyb3VuZGVkVGVybSIsImdyb3VuZGVkVGVybU5vZGUiLCJnZXROb2RlIiwiZ3JvdW5kZWRUZXJtTm9kZU1hdGNoZXMiLCJtYXRjaFRlcm1Ob2RlIiwidGVybUdyb3VuZGVkIiwiZnJvbU5vdGhpbmciLCJ0ZW1lbmljQ29udGV4dCIsImZyb21Db25zdHJhaW50cyJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBeVVBOzs7ZUFBQTs7OzJCQXZVK0I7Z0VBRVg7OEJBRXdEOzs7Ozs7QUFFNUUsTUFBTSxFQUFFQSxJQUFJLEVBQUVDLElBQUksRUFBRUMsS0FBSyxFQUFFLEdBQUdDLHlCQUFjO0FBRTVDLE1BQU1DLHVCQUF1QkMsZ0JBQU87SUFDbEMsWUFBWUMsT0FBTyxFQUFFQyxXQUFXLEVBQUVDLFdBQVcsRUFBRUMsWUFBWSxFQUFFQyxlQUFlLEVBQUVDLGlCQUFpQixDQUFFO1FBQy9GLEtBQUssQ0FBQ0w7UUFFTixJQUFJLENBQUNDLFdBQVcsR0FBR0E7UUFDbkIsSUFBSSxDQUFDQyxXQUFXLEdBQUdBO1FBQ25CLElBQUksQ0FBQ0MsWUFBWSxHQUFHQTtRQUNwQixJQUFJLENBQUNDLGVBQWUsR0FBR0E7UUFDdkIsSUFBSSxDQUFDQyxpQkFBaUIsR0FBR0E7SUFDM0I7SUFFQUMsaUJBQWlCO1FBQ2YsT0FBTyxJQUFJLENBQUNMLFdBQVc7SUFDekI7SUFFQU0saUJBQWlCO1FBQ2YsT0FBTyxJQUFJLENBQUNMLFdBQVc7SUFDekI7SUFFQU0sa0JB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
@@ -40,25 +40,17 @@ const _default = (0, _elements.define)(class TypeAssertion extends _assertion.de
40
40
  const node = this.getNode(), typeAssertionNode = node; ///
41
41
  return typeAssertionNode;
42
42
  }
43
- discharge(context) {
44
- let discharges = false;
45
- const typeAssertionString = this.getString(); ///
43
+ discharge(generalContext, specificContext, forward, back) {
44
+ const context = specificContext, typeAssertionString = this.getString(); ///
46
45
  context.trace(`Discharging the '${typeAssertionString}' type assertion...`);
47
46
  const term = (0, _substitutions.termFromTermAndSubstitutions)(this.term, context);
48
- (0, _state.derive)((state)=>{
49
- const validatesWhenDerived = validateWhenDerived(term, this.type, state, context, (term, context)=>{
50
- let validatesWhenDerived;
51
- validatesWhenDerived = true;
52
- return validatesWhenDerived;
53
- });
54
- if (validatesWhenDerived) {
55
- discharges = true;
56
- }
47
+ return (0, _state.derive)((state)=>{
48
+ return validateWhenDerived(term, this.type, state, context, (term, context, back)=>{
49
+ specificContext = context; ///
50
+ context.debug(`...discharged the '${typeAssertionString}' type assertion.`);
51
+ return forward(generalContext, specificContext, back);
52
+ }, back);
57
53
  });
58
- if (discharges) {
59
- context.debug(`...discharged the '${typeAssertionString}' type assertion.`);
60
- }
61
- return discharges;
62
54
  }
63
55
  validate(state, context, forward, back) {
64
56
  let assertion;
@@ -194,17 +186,12 @@ const _default = (0, _elements.define)(class TypeAssertion extends _assertion.de
194
186
  });
195
187
  function validateWhenDerived(term, type, state, context, forward, back) {
196
188
  return term.validate(state, context, (term, context, back)=>{
197
- let validatesWhenDerived = false;
198
- if (term !== null) {
199
- const termType = term.getType(), termTypeEqualToOrSubTypeOfType = termType.isEqualToOrSubTypeOf(type);
200
- if (termTypeEqualToOrSubTypeOfType) {
201
- const termEstablished = term.isEstablished();
202
- if (termEstablished) {
203
- validatesWhenDerived = true;
204
- }
205
- }
189
+ const termType = term.getType(), termTypeEqualToOrSubTypeOfType = termType.isEqualToOrSubTypeOf(type);
190
+ if (!termTypeEqualToOrSubTypeOfType) {
191
+ return back();
206
192
  }
207
- if (!validatesWhenDerived) {
193
+ const termEstablished = term.isEstablished();
194
+ if (!termEstablished) {
208
195
  return back();
209
196
  }
210
197
  return forward(term, context, back);
@@ -215,4 +202,4 @@ function termFromTypeAssertionNode(typeAssertionNode, context) {
215
202
  return term;
216
203
  }
217
204
 
218
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L2Fzc2VydGlvbi90eXBlLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBjb250aW51YXRpb25VdGlsaXRpZXMgfSBmcm9tIFwib2NjYW0tbGFuZ3VhZ2VzXCI7XG5cbmltcG9ydCBBc3NlcnRpb24gZnJvbSBcIi4uL2Fzc2VydGlvblwiO1xuXG5pbXBvcnQgeyBkZWZpbmUgfSBmcm9tIFwiLi4vLi4vZWxlbWVudHNcIjtcbmltcG9ydCB7IGluc3RhbnRpYXRlIH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9jb250ZXh0XCI7XG5pbXBvcnQgeyBpbnN0YW50aWF0ZVR5cGVBc3NlcnRpb24gfSBmcm9tIFwiLi4vLi4vcHJvY2Vzcy9pbnN0YW50aWF0ZVwiO1xuaW1wb3J0IHsgdHlwZUZyb21KU09OLCB0eXBlVG9UeXBlSlNPTiB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvanNvblwiO1xuaW1wb3J0IHsgdGVybUZyb21UZXJtQW5kU3Vic3RpdHV0aW9ucyB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvc3Vic3RpdHV0aW9uc1wiO1xuaW1wb3J0IHsgdHlwZUFzc2VydGlvbkZyb21TdGF0ZW1lbnROb2RlIH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9lbGVtZW50XCI7XG5pbXBvcnQgeyB2YXJpYWJsZUFzc2lnbm1lbnRGcm9tVHlwZUFzc2VydGlvbiB9IGZyb20gXCIuLi8uLi9wcm9jZXNzL2Fzc2lnblwiO1xuaW1wb3J0IHsgZGVyaXZlLCBpc0Rlcml2ZWQsIGlzRGVjbGFyZWQsIGlzVHJhbnNpZW50fSBmcm9tIFwiLi4vLi4vdXRpbGl0aWVzL3N0YXRlXCI7XG5cbmNvbnN0IHsgYWxsLCBleGlzdHMgfSA9IGNvbnRpbnVhdGlvblV0aWxpdGllcztcblxuZXhwb3J0IGRlZmF1bHQgZGVmaW5lKGNsYXNzIFR5cGVBc3NlcnRpb24gZXh0ZW5kcyBBc3NlcnRpb24ge1xuICBjb25zdHJ1Y3Rvcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIHRlcm0sIHR5cGUpIHtcbiAgICBzdXBlcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQpO1xuXG4gICAgdGhpcy50ZXJtID0gdGVybTtcbiAgICB0aGlzLnR5cGUgPSB0eXBlO1xuICB9XG5cbiAgZ2V0VGVybSgpIHtcbiAgICByZXR1cm4gdGhpcy50ZXJtO1xuICB9XG5cbiAgZ2V0VHlwZSgpIHtcbiAgICByZXR1cm4gdGhpcy50eXBlO1xuICB9XG5cbiAgZ2V0VHlwZUFzc2VydGlvbk5Cb2RlKCkge1xuICAgIGNvbnN0IG5vZGUgPSB0aGlzLmdldE5vZGUoKSxcbiAgICAgICAgICB0eXBlQXNzZXJ0aW9uTm9kZSA9IG5vZGU7IC8vL1xuXG4gICAgcmV0dXJuIHR5cGVBc3NlcnRpb25Ob2RlO1xuICB9XG5cbiAgZGlzY2hhcmdlKGNvbnRleHQpIHtcbiAgICBsZXQgZGlzY2hhcmdlcyA9IGZhbHNlO1xuXG4gICAgY29uc3QgdHlwZUFzc2VydGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYERpc2NoYXJnaW5nIHRoZSAnJHt0eXBlQXNzZXJ0aW9uU3RyaW5nfScgdHlwZSBhc3NlcnRpb24uLi5gKTtcblxuICAgIGNvbnN0IHRlcm0gPSB0ZXJtRnJvbVRlcm1BbmRTdWJzdGl0dXRpb25zKHRoaXMudGVybSwgY29udGV4dCk7XG5cbiAgICBkZXJpdmUoKHN0YXRlKSA9PiB7XG4gICAgICBjb25zdCB2YWxpZGF0ZXNXaGVuRGVyaXZlZCA9IHZhbGlkYXRlV2hlbkRlcml2ZWQodGVybSwgdGhpcy50eXBlLCBzdGF0ZSwgY29udGV4dCwgKHRlcm0sIGNvbnRleHQpID0+IHtcbiAgICAgICAgbGV0IHZhbGlkYXRlc1doZW5EZXJpdmVkO1xuXG4gICAgICAgIHZhbGlkYXRlc1doZW5EZXJpdmVkID0gdHJ1ZTtcblxuICAgICAgICByZXR1cm4gdmFsaWRhdGVzV2hlbkRlcml2ZWQ7XG4gICAgICB9KTtcblxuICAgICAgaWYgKHZhbGlkYXRlc1doZW5EZXJpdmVkKSB7XG4gICAgICAgIGRpc2NoYXJnZXMgPSB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgaWYgKGRpc2NoYXJnZXMpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLmRpc2NoYXJnZWQgdGhlICcke3R5cGVBc3NlcnRpb25TdHJpbmd9JyB0eXBlIGFzc2VydGlvbi5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZGlzY2hhcmdlcztcbiAgfVxuXG4gIHZhbGlkYXRlKHN0YXRlLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgbGV0IGFzc2VydGlvbjtcblxuICAgIGNvbnN0IHR5cGVBc3NlcnRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHt0eXBlQXNzZXJ0aW9uU3RyaW5nfScgdHlwZSBhc3NlcnRpb24uLi5gKTtcblxuICAgIGFzc2VydGlvbiA9IHRoaXMuZmluZEFzc2VydGlvbihjb250ZXh0KTtcblxuICAgIGlmIChhc3NlcnRpb24gIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IHR5cGVBc3NlcnRpb24gPSBhc3NlcnRpb247IC8vL1xuXG4gICAgICBjb250ZXh0LmRlYnVnKGBUaGUgJyR7dHlwZUFzc2VydGlvblN0cmluZ30nIHR5cGUgYXNzZXJ0aW9uIGlzIGFscmVhZHkgcHJlc2VudC5gKTtcblxuICAgICAgcmV0dXJuIGZvcndhcmQodHlwZUFzc2VydGlvbiwgY29udGV4dCwgYmFjayk7XG4gICAgfVxuXG4gICAgY29uc3QgdmFsaWRhdGVUeXBlID0gdGhpcy52YWxpZGF0ZVR5cGUuYmluZCh0aGlzKTtcblxuICAgIHJldHVybiBhbGwoW1xuICAgICAgdmFsaWRhdGVUeXBlXG4gICAgXSwgc3RhdGUsIGNvbnRleHQsIChzdGF0ZSwgY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgY29uc3QgdmFsaWRhdGVXaGVuRGVjbGFyZWQgPSB0aGlzLnZhbGlkYXRlV2hlbkRlY2xhcmVkLmJpbmQodGhpcyksXG4gICAgICAgICAgICB2YWxpZGF0ZVdoZW5EZXJpdmVkID0gdGhpcy52YWxpZGF0ZVdoZW5EZXJpdmVkLmJpbmQodGhpcyk7XG5cbiAgICAgIHJldHVybiBleGlzdHMoW1xuICAgICAgICB2YWxpZGF0ZVdoZW5EZWNsYXJlZCxcbiAgICAgICAgdmFsaWRhdGVXaGVuRGVyaXZlZFxuICAgICAgXSwgc3RhdGUsIGNvbnRleHQsIChzdGF0ZSwgY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgICBhc3NlcnRpb24gPSB0aGlzOyAvLy9cblxuICAgICAgICB0aGlzLmFzc2lnbihzdGF0ZSwgY29udGV4dCk7XG5cbiAgICAgICAgY29udGV4dC5hZGRBc3NlcnRpb24oYXNzZXJ0aW9uKTtcblxuICAgICAgICBjb25zdCB0eXBlQXNzZXJ0aW9uID0gYXNzZXJ0aW9uOyAvLy9cblxuICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke3R5cGVBc3NlcnRpb25TdHJpbmd9JyB0eXBlIGFzc2VydGlvbi5gKTtcblxuICAgICAgICByZXR1cm4gZm9yd2FyZCh0eXBlQXNzZXJ0aW9uLCBjb250ZXh0LCBiYWNrKTtcbiAgICAgIH0sIGJhY2spO1xuICAgIH0sIGJhY2spO1xuICB9XG5cbiAgdmFsaWRhdGVUeXBlKHN0YXRlLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3QgdHlwZUFzc2VydGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke3R5cGVBc3NlcnRpb25TdHJpbmd9JyB0eXBlIGFzc2VydGlvbidzIHR5cGUuLi5gKTtcblxuICAgIGNvbnN0IG5vbWluYWxUeXBlTmFtZSA9IHRoaXMudHlwZS5nZXROb21pbmFsVHlwZU5hbWUoKSxcbiAgICAgICAgICB0eXBlID0gY29udGV4dC5maW5kVHlwZUJ5Tm9taW5hbFR5cGVOYW1lKG5vbWluYWxUeXBlTmFtZSk7XG5cbiAgICBpZiAodHlwZSA9PT0gbnVsbCkge1xuICAgICAgY29uc3QgdHlwZVN0cmluZyA9IHRoaXMudHlwZS5nZXRTdHJpbmcoKTtcblxuICAgICAgY29udGV4dC5kZWJ1ZyhgVGhlICcke3R5cGVTdHJpbmd9JyB0eXBlIGlzIG5vdCBwcmVzZW50LmApO1xuXG4gICAgICByZXR1cm4gYmFjaygpO1xuICAgIH1cblxuICAgIHRoaXMudHlwZSA9IHR5cGU7XG5cbiAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke3R5cGVBc3NlcnRpb25TdHJpbmd9JyB0eXBlIGFzc2VydGlvbidzIHR5cGUuYCk7XG5cbiAgICByZXR1cm4gZm9yd2FyZChzdGF0ZSwgY29udGV4dCwgYmFjaylcbiAgfVxuXG4gIHZhbGlkYXRlV2hlbkRlY2xhcmVkKHN0YXRlLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3QgZGVjbGFyZWQgPSBpc0RlY2xhcmVkKHN0YXRlKTtcblxuICAgIGlmICghZGVjbGFyZWQpIHtcbiAgICAgIHJldHVybiBiYWNrKCk7XG4gICAgfVxuXG4gICAgY29uc3QgdHlwZUFzc2VydGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7IC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7dHlwZUFzc2VydGlvblN0cmluZ30nIGRlY2xhcmVkIHR5cGUgYXNzZXJ0aW9uLi4uYCk7XG5cbiAgICByZXR1cm4gdGhpcy50ZXJtLnZhbGlkYXRlKHN0YXRlLCBjb250ZXh0LCAodGVybSwgY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgbGV0IHZhbGlkYXRlc1doZW5EZWNsYXJlZCA9IGZhbHNlO1xuXG4gICAgICBpZiAodGVybSAhPT0gbnVsbCkge1xuICAgICAgICBjb25zdCB0ZXJtVHlwZSA9IHRlcm0uZ2V0VHlwZSgpLFxuICAgICAgICAgICAgICB0ZXJtVHlwZUVxdWFsVG9UeXBlID0gdGVybVR5cGUuaXNFcXVhbFRvKHRoaXMudHlwZSksXG4gICAgICAgICAgICAgIHRlcm1UeXBlU3VwZXJUeXBlT2ZUeXBlID0gdGVybVR5cGUuaXNTdXBlclR5cGVPZih0aGlzLnR5cGUpO1xuXG4gICAgICAgIGlmIChmYWxzZSkge1xuICAgICAgICAgIC8vL1xuICAgICAgICB9IGVsc2UgaWYgKHRlcm1UeXBlRXF1YWxUb1R5cGUpIHtcbiAgICAgICAgICB2YWxpZGF0ZXNXaGVuRGVjbGFyZWQgPSB0cnVlO1xuICAgICAgICB9IGVsc2UgaWYgKHRlcm1UeXBlU3VwZXJUeXBlT2ZUeXBlKSB7XG4gICAgICAgICAgY29uc3QgdGVybUVzdGFibGlzaGVkID0gdGVybS5pc0VzdGFibGlzaGVkKCk7XG5cbiAgICAgICAgICBpZiAodGVybUVzdGFibGlzaGVkKSB7XG4gICAgICAgICAgICB2YWxpZGF0ZXNXaGVuRGVjbGFyZWQgPSB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoIXZhbGlkYXRlc1doZW5EZWNsYXJlZCkge1xuICAgICAgICByZXR1cm4gYmFjaygpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnRlcm0gPSB0ZXJtO1xuXG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke3R5cGVBc3NlcnRpb25TdHJpbmd9JyBkZWNsYXJlZCB0eXBlIGFzc2VydGlvbi5gKTtcblxuICAgICAgcmV0dXJuIGZvcndhcmQoc3RhdGUsIGNvbnRleHQsIGJhY2spO1xuICAgIH0sIGJhY2spO1xuICB9XG5cbiAgdmFsaWRhdGVXaGVuRGVyaXZlZChzdGF0ZSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IGRlcml2ZWQgPSBpc0Rlcml2ZWQoc3RhdGUpO1xuXG4gICAgaWYgKCFkZXJpdmVkKSB7XG4gICAgICByZXR1cm4gYmFjaygpO1xuICAgIH1cblxuICAgIGNvbnN0IHR5cGVBc3NlcnRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke3R5cGVBc3NlcnRpb25TdHJpbmd9JyBkZXJpdmVkIHR5cGUgYXNzZXJ0aW9uLi4uYCk7XG5cbiAgICByZXR1cm4gdmFsaWRhdGVXaGVuRGVyaXZlZCh0aGlzLnRlcm0sIHRoaXMudHlwZSwgc3RhdGUsIGNvbnRleHQsICh0ZXJtLCBjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICB0aGlzLnRlcm0gPSB0ZXJtO1xuXG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke3R5cGVBc3NlcnRpb25TdHJpbmd9JyBkZXJpdmVkIHR5cGUgYXNzZXJ0aW9uLmApO1xuXG4gICAgICByZXR1cm4gZm9yd2FyZChzdGF0ZSwgY29udGV4dCwgYmFjayk7XG4gICAgfSwgYmFjayk7XG4gIH1cblxuICBhcHBseUluZGVwZW5kZW50bHkoZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IGNvbnRleHQgPSBzcGVjaWZpY0NvbnRleHQsIC8vL1xuICAgICAgICAgIHR5cGVBc3NlcnRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYEFwcGx5aW5nIHRoZSAnJHt0eXBlQXNzZXJ0aW9uU3RyaW5nfScgdHlwZSBhc3NlcnRpb24gaW5kZXBlbmRlbnRseS4uLmApO1xuXG4gICAgY29uc3QgdGVybSA9IHRlcm1Gcm9tVGVybUFuZFN1YnN0aXR1dGlvbnModGhpcy50ZXJtLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBkZXJpdmUoKHN0YXRlKSA9PiB7XG4gICAgICByZXR1cm4gdmFsaWRhdGVXaGVuRGVyaXZlZCh0ZXJtLCB0aGlzLnR5cGUsIHN0YXRlLCBjb250ZXh0LCAodGVybSwgY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgICBzcGVjaWZpY0NvbnRleHQgPSBjb250ZXh0OyAgLy8vXG5cbiAgICAgICAgY29udGV4dC5kZWJ1ZyhgLi4uYXBwbGllZCB0aGUgJyR7dHlwZUFzc2VydGlvblN0cmluZ30nIHR5cGUgYXNzZXJ0aW9uIGluZGVwZW5kZW50bHkuYCk7XG5cbiAgICAgICAgcmV0dXJuIGZvcndhcmQoZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgYmFjayk7XG4gICAgICB9LCBiYWNrKTtcbiAgICB9KTtcbiAgfVxuXG4gIGFzc2lnbihzdGF0ZSwgY29udGV4dCkge1xuICAgIGNvbnN0IGRlcml2ZWQgPSBpc0Rlcml2ZWQoc3RhdGUpLFxuICAgICAgICAgIHRyYW5zaWVudCA9IGlzVHJhbnNpZW50KHN0YXRlKTtcblxuICAgIGlmIChkZXJpdmVkIHx8IHRyYW5zaWVudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHR5cGVBc3NlcnRpb24gPSB0aGlzLCAvLy9cbiAgICAgICAgICB2YXJpYWJsZUFzc2lnbWVudCA9IHZhcmlhYmxlQXNzaWdubWVudEZyb21UeXBlQXNzZXJ0aW9uKHR5cGVBc3NlcnRpb24sIGNvbnRleHQpO1xuXG4gICAgY29udGV4dC5hZGRBc3NpZ25tZW50KHZhcmlhYmxlQXNzaWdtZW50KTtcbiAgfVxuXG4gIHRvSlNPTigpIHtcbiAgICBsZXQganNvbjtcblxuICAgIGNvbnN0IHR5cGVKU09OID0gdHlwZVRvVHlwZUpTT04odGhpcy50eXBlKSxcbiAgICAgICAgICBuYW1lID0gdGhpcy5nZXROYW1lKCksXG4gICAgICAgICAgc3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKSxcbiAgICAgICAgICB0eXBlID0gdHlwZUpTT047ICAvLy9cblxuICAgIGpzb24gPSB7XG4gICAgICBuYW1lLFxuICAgICAgc3RyaW5nLFxuICAgICAgdHlwZVxuICAgIH07XG5cbiAgICByZXR1cm4ganNvbjtcbiAgfVxuXG4gIHN0YXRpYyBuYW1lID0gXCJUeXBlQXNzZXJ0aW9uXCI7XG5cbiAgc3RhdGljIGZyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgICBsZXQgdHlwZUFzc2VydGlvbiA9IG51bGw7XG5cbiAgICBjb25zdCB7IG5hbWUgfSA9IGpzb247XG5cbiAgICBpZiAodGhpcy5uYW1lID09PSBuYW1lKSB7XG4gICAgICBpbnN0YW50aWF0ZSgoY29udGV4dCkgPT4ge1xuICAgICAgICBjb25zdCB7IHN0cmluZyB9ID0ganNvbixcbiAgICAgICAgICAgICAgdHlwZUFzc2VydGlvbk5vZGUgPSBpbnN0YW50aWF0ZVR5cGVBc3NlcnRpb24oc3RyaW5nLCBjb250ZXh0KSxcbiAgICAgICAgICAgICAgbm9kZSA9IHR5cGVBc3NlcnRpb25Ob2RlLCAvLy9cbiAgICAgICAgICAgICAgYnJlYWtQb2ludCA9IG51bGwsXG4gICAgICAgICAgICAgIHRlcm0gPSB0ZXJtRnJvbVR5cGVBc3NlcnRpb25Ob2RlKHR5cGVBc3NlcnRpb25Ob2RlLCBjb250ZXh0KSxcbiAgICAgICAgICAgICAgdHlwZSA9IHR5cGVGcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgICAgICBjb250ZXh0ID0gbnVsbDtcblxuICAgICAgICB0eXBlQXNzZXJ0aW9uID0gbmV3IFR5cGVBc3NlcnRpb24oY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCB0ZXJtLCB0eXBlKTtcbiAgICAgIH0sIGNvbnRleHQpO1xuICAgIH1cblxuICAgIHJldHVybiB0eXBlQXNzZXJ0aW9uO1xuICB9XG5cbiAgc3RhdGljIGZyb21TdGF0ZW1lbnQoc3RhdGVtZW50LCBjb250ZXh0KSB7XG4gICAgY29uc3Qgc3RhdGVtZW50Tm9kZSA9IHN0YXRlbWVudC5nZXROb2RlKCksXG4gICAgICAgICAgdHlwZUFzc2VydGlvbiA9IHR5cGVBc3NlcnRpb25Gcm9tU3RhdGVtZW50Tm9kZShzdGF0ZW1lbnROb2RlLCBjb250ZXh0KTtcblxuICAgIHJldHVybiB0eXBlQXNzZXJ0aW9uO1xuICB9XG59KTtcblxuZnVuY3Rpb24gdmFsaWRhdGVXaGVuRGVyaXZlZCh0ZXJtLCB0eXBlLCBzdGF0ZSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICByZXR1cm4gdGVybS52YWxpZGF0ZShzdGF0ZSwgY29udGV4dCwgKHRlcm0sIGNvbnRleHQsIGJhY2spID0+IHtcbiAgICBsZXQgdmFsaWRhdGVzV2hlbkRlcml2ZWQgPSBmYWxzZTtcblxuICAgIGlmICh0ZXJtICE9PSBudWxsKSB7XG4gICAgICBjb25zdCB0ZXJtVHlwZSA9IHRlcm0uZ2V0VHlwZSgpLFxuICAgICAgICAgICAgdGVybVR5cGVFcXVhbFRvT3JTdWJUeXBlT2ZUeXBlID0gdGVybVR5cGUuaXNFcXVhbFRvT3JTdWJUeXBlT2YodHlwZSk7XG5cbiAgICAgIGlmICh0ZXJtVHlwZUVxdWFsVG9PclN1YlR5cGVPZlR5cGUpIHtcbiAgICAgICAgY29uc3QgdGVybUVzdGFibGlzaGVkID0gdGVybS5pc0VzdGFibGlzaGVkKCk7XG5cbiAgICAgICAgaWYgKHRlcm1Fc3RhYmxpc2hlZCkge1xuICAgICAgICAgIHZhbGlkYXRlc1doZW5EZXJpdmVkID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmICghdmFsaWRhdGVzV2hlbkRlcml2ZWQpIHtcbiAgICAgIHJldHVybiBiYWNrKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZvcndhcmQodGVybSwgY29udGV4dCwgYmFjayk7XG4gIH0sIGJhY2spO1xufVxuXG5mdW5jdGlvbiB0ZXJtRnJvbVR5cGVBc3NlcnRpb25Ob2RlKHR5cGVBc3NlcnRpb25Ob2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IHRlcm1Ob2RlID0gdHlwZUFzc2VydGlvbk5vZGUuZ2V0VGVybU5vZGUoKSxcbiAgICAgICAgdGVybSA9IGNvbnRleHQuZmluZFRlcm1CeVRlcm1Ob2RlKHRlcm1Ob2RlKTtcblxuICByZXR1cm4gdGVybTtcbn0iXSwibmFtZXMiOlsiYWxsIiwiZXhpc3RzIiwiY29udGludWF0aW9uVXRpbGl0aWVzIiwiZGVmaW5lIiwiVHlwZUFzc2VydGlvbiIsIkFzc2VydGlvbiIsImNvbnRleHQiLCJzdHJpbmciLCJub2RlIiwiYnJlYWtQb2ludCIsInRlcm0iLCJ0eXBlIiwiZ2V0VGVybSIsImdldFR5cGUiLCJnZXRUeXBlQXNzZXJ0aW9uTkJvZGUiLCJnZXROb2RlIiwidHlwZUFzc2VydGlvbk5vZGUiLCJkaXNjaGFyZ2UiLCJkaXNjaGFyZ2VzIiwidHlwZUFzc2VydGlvblN0cmluZyIsImdldFN0cmluZyIsInRyYWNlIiwidGVybUZyb21UZXJtQW5kU3Vic3RpdHV0aW9ucyIsImRlcml2ZSIsInN0YXRlIiwidmFsaWRhdGVzV2hlbkRlcml2ZWQiLCJ2YWxpZGF0ZVdoZW5EZXJpdmVkIiwiZGVidWciLCJ2YWxpZGF0ZSIsImZvcndhcmQiLCJiYWNrIiwiYXNzZXJ0aW9uIiwiZmluZEFzc2VydGlvbiIsInR5cGVBc3NlcnRpb24iLCJ2YWxpZGF0ZVR5cGUiLCJiaW5kIiwidmFsaWRhdGVXaGVuRGVjbGFyZWQiLCJhc3NpZ24iLCJhZGRBc3NlcnRpb24iLCJub21pbmFsVHlwZU5hbWUiLCJnZXROb21pbmFsVHlwZU5hbWUiLCJmaW5kVHlwZUJ5Tm9taW5hbFR5cGVOYW1lIiwidHlwZVN0cmluZyIsImRlY2xhcmVkIiwiaXNEZWNsYXJlZCIsInZhbGlkYXRlc1doZW5EZWNsYXJlZCIsInRlcm1UeXBlIiwidGVybVR5cGVFcXVhbFRvVHlwZSIsImlzRXF1YWxUbyIsInRlcm1UeXBlU3VwZXJUeXBlT2ZUeXBlIiwiaXNTdXBlclR5cGVPZiIsInRlcm1Fc3RhYmxpc2hlZCIsImlzRXN0YWJsaXNoZWQiLCJkZXJpdmVkIiwiaXNEZXJpdmVkIiwiYXBwbHlJbmRlcGVuZGVudGx5IiwiZ2VuZXJhbENvbnRleHQiLCJzcGVjaWZpY0NvbnRleHQiLCJ0cmFuc2llbnQiLCJpc1RyYW5zaWVudCIsInZhcmlhYmxlQXNzaWdtZW50IiwidmFyaWFibGVBc3NpZ25tZW50RnJvbVR5cGVBc3NlcnRpb24iLCJhZGRBc3NpZ25tZW50IiwidG9KU09OIiwianNvbiIsInR5cGVKU09OIiwidHlwZVRvVHlwZUpTT04iLCJuYW1lIiwiZ2V0TmFtZSIsImZyb21KU09OIiwiaW5zdGFudGlhdGUiLCJpbnN0YW50aWF0ZVR5cGVBc3NlcnRpb24iLCJ0ZXJtRnJvbVR5cGVBc3NlcnRpb25Ob2RlIiwidHlwZUZyb21KU09OIiwiZnJvbVN0YXRlbWVudCIsInN0YXRlbWVudCIsInN0YXRlbWVudE5vZGUiLCJ0eXBlQXNzZXJ0aW9uRnJvbVN0YXRlbWVudE5vZGUiLCJ0ZXJtVHlwZUVxdWFsVG9PclN1YlR5cGVPZlR5cGUiLCJpc0VxdWFsVG9PclN1YlR5cGVPZiIsInRlcm1Ob2RlIiwiZ2V0VGVybU5vZGUiLCJmaW5kVGVybUJ5VGVybU5vZGUiXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQWlCQTs7O2VBQUE7OztnQ0Fmc0M7a0VBRWhCOzBCQUVDO3lCQUNLOzZCQUNhO3NCQUNJOytCQUNBO3lCQUNFO3dCQUNLO3VCQUNNOzs7Ozs7QUFFMUQsTUFBTSxFQUFFQSxHQUFHLEVBQUVDLE1BQU0sRUFBRSxHQUFHQyxxQ0FBcUI7TUFFN0MsV0FBZUMsSUFBQUEsZ0JBQU0sRUFBQyxNQUFNQyxzQkFBc0JDLGtCQUFTO0lBQ3pELFlBQVlDLE9BQU8sRUFBRUMsTUFBTSxFQUFFQyxJQUFJLEVBQUVDLFVBQVUsRUFBRUMsSUFBSSxFQUFFQyxJQUFJLENBQUU7UUFDekQsS0FBSyxDQUFDTCxTQUFTQyxRQUFRQyxNQUFNQztRQUU3QixJQUFJLENBQUNDLElBQUksR0FBR0E7UUFDWixJQUFJLENBQUNDLElBQUksR0FBR0E7SUFDZDtJQUVBQyxVQUFVO1FBQ1IsT0FBTyxJQUFJLENBQUNGLElBQUk7SUFDbEI7SUFFQUcsVUFBVTtRQUNSLE9BQU8sSUFBSSxDQUFDRixJQUFJO0lBQ2xCO0lBRUFHLHdCQUF3QjtRQUN0QixNQUFNTixPQUFPLElBQUksQ0FBQ08sT0FBTyxJQUNuQkMsb0JBQW9CUixNQUFNLEdBQUc7UUFFbkMsT0FBT1E7SUFDVDtJQUVBQyxVQUFVWCxPQUFPLEVBQUU7UUFDakIsSUFBSVksYUFBYTtRQUVqQixNQUFNQyxz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
205
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L2Fzc2VydGlvbi90eXBlLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBjb250aW51YXRpb25VdGlsaXRpZXMgfSBmcm9tIFwib2NjYW0tbGFuZ3VhZ2VzXCI7XG5cbmltcG9ydCBBc3NlcnRpb24gZnJvbSBcIi4uL2Fzc2VydGlvblwiO1xuXG5pbXBvcnQgeyBkZWZpbmUgfSBmcm9tIFwiLi4vLi4vZWxlbWVudHNcIjtcbmltcG9ydCB7IGluc3RhbnRpYXRlIH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9jb250ZXh0XCI7XG5pbXBvcnQgeyBpbnN0YW50aWF0ZVR5cGVBc3NlcnRpb24gfSBmcm9tIFwiLi4vLi4vcHJvY2Vzcy9pbnN0YW50aWF0ZVwiO1xuaW1wb3J0IHsgdHlwZUZyb21KU09OLCB0eXBlVG9UeXBlSlNPTiB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvanNvblwiO1xuaW1wb3J0IHsgdGVybUZyb21UZXJtQW5kU3Vic3RpdHV0aW9ucyB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvc3Vic3RpdHV0aW9uc1wiO1xuaW1wb3J0IHsgdHlwZUFzc2VydGlvbkZyb21TdGF0ZW1lbnROb2RlIH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9lbGVtZW50XCI7XG5pbXBvcnQgeyB2YXJpYWJsZUFzc2lnbm1lbnRGcm9tVHlwZUFzc2VydGlvbiB9IGZyb20gXCIuLi8uLi9wcm9jZXNzL2Fzc2lnblwiO1xuaW1wb3J0IHsgZGVyaXZlLCBpc0Rlcml2ZWQsIGlzRGVjbGFyZWQsIGlzVHJhbnNpZW50fSBmcm9tIFwiLi4vLi4vdXRpbGl0aWVzL3N0YXRlXCI7XG5cbmNvbnN0IHsgYWxsLCBleGlzdHMgfSA9IGNvbnRpbnVhdGlvblV0aWxpdGllcztcblxuZXhwb3J0IGRlZmF1bHQgZGVmaW5lKGNsYXNzIFR5cGVBc3NlcnRpb24gZXh0ZW5kcyBBc3NlcnRpb24ge1xuICBjb25zdHJ1Y3Rvcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIHRlcm0sIHR5cGUpIHtcbiAgICBzdXBlcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQpO1xuXG4gICAgdGhpcy50ZXJtID0gdGVybTtcbiAgICB0aGlzLnR5cGUgPSB0eXBlO1xuICB9XG5cbiAgZ2V0VGVybSgpIHtcbiAgICByZXR1cm4gdGhpcy50ZXJtO1xuICB9XG5cbiAgZ2V0VHlwZSgpIHtcbiAgICByZXR1cm4gdGhpcy50eXBlO1xuICB9XG5cbiAgZ2V0VHlwZUFzc2VydGlvbk5Cb2RlKCkge1xuICAgIGNvbnN0IG5vZGUgPSB0aGlzLmdldE5vZGUoKSxcbiAgICAgICAgICB0eXBlQXNzZXJ0aW9uTm9kZSA9IG5vZGU7IC8vL1xuXG4gICAgcmV0dXJuIHR5cGVBc3NlcnRpb25Ob2RlO1xuICB9XG5cbiAgZGlzY2hhcmdlKGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBjb250ZXh0ID0gc3BlY2lmaWNDb250ZXh0LCAvLy9cbiAgICAgICAgICB0eXBlQXNzZXJ0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBEaXNjaGFyZ2luZyB0aGUgJyR7dHlwZUFzc2VydGlvblN0cmluZ30nIHR5cGUgYXNzZXJ0aW9uLi4uYCk7XG5cbiAgICBjb25zdCB0ZXJtID0gdGVybUZyb21UZXJtQW5kU3Vic3RpdHV0aW9ucyh0aGlzLnRlcm0sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIGRlcml2ZSgoc3RhdGUpID0+IHtcbiAgICAgIHJldHVybiB2YWxpZGF0ZVdoZW5EZXJpdmVkKHRlcm0sIHRoaXMudHlwZSwgc3RhdGUsIGNvbnRleHQsICh0ZXJtLCBjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICAgIHNwZWNpZmljQ29udGV4dCA9IGNvbnRleHQ7ICAvLy9cblxuICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi5kaXNjaGFyZ2VkIHRoZSAnJHt0eXBlQXNzZXJ0aW9uU3RyaW5nfScgdHlwZSBhc3NlcnRpb24uYCk7XG5cbiAgICAgICAgcmV0dXJuIGZvcndhcmQoZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgYmFjayk7XG4gICAgICB9LCBiYWNrKTtcbiAgICB9KTtcbiAgfVxuXG4gIHZhbGlkYXRlKHN0YXRlLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgbGV0IGFzc2VydGlvbjtcblxuICAgIGNvbnN0IHR5cGVBc3NlcnRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHt0eXBlQXNzZXJ0aW9uU3RyaW5nfScgdHlwZSBhc3NlcnRpb24uLi5gKTtcblxuICAgIGFzc2VydGlvbiA9IHRoaXMuZmluZEFzc2VydGlvbihjb250ZXh0KTtcblxuICAgIGlmIChhc3NlcnRpb24gIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IHR5cGVBc3NlcnRpb24gPSBhc3NlcnRpb247IC8vL1xuXG4gICAgICBjb250ZXh0LmRlYnVnKGBUaGUgJyR7dHlwZUFzc2VydGlvblN0cmluZ30nIHR5cGUgYXNzZXJ0aW9uIGlzIGFscmVhZHkgcHJlc2VudC5gKTtcblxuICAgICAgcmV0dXJuIGZvcndhcmQodHlwZUFzc2VydGlvbiwgY29udGV4dCwgYmFjayk7XG4gICAgfVxuXG4gICAgY29uc3QgdmFsaWRhdGVUeXBlID0gdGhpcy52YWxpZGF0ZVR5cGUuYmluZCh0aGlzKTtcblxuICAgIHJldHVybiBhbGwoW1xuICAgICAgdmFsaWRhdGVUeXBlXG4gICAgXSwgc3RhdGUsIGNvbnRleHQsIChzdGF0ZSwgY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgY29uc3QgdmFsaWRhdGVXaGVuRGVjbGFyZWQgPSB0aGlzLnZhbGlkYXRlV2hlbkRlY2xhcmVkLmJpbmQodGhpcyksXG4gICAgICAgICAgICB2YWxpZGF0ZVdoZW5EZXJpdmVkID0gdGhpcy52YWxpZGF0ZVdoZW5EZXJpdmVkLmJpbmQodGhpcyk7XG5cbiAgICAgIHJldHVybiBleGlzdHMoW1xuICAgICAgICB2YWxpZGF0ZVdoZW5EZWNsYXJlZCxcbiAgICAgICAgdmFsaWRhdGVXaGVuRGVyaXZlZFxuICAgICAgXSwgc3RhdGUsIGNvbnRleHQsIChzdGF0ZSwgY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgICBhc3NlcnRpb24gPSB0aGlzOyAvLy9cblxuICAgICAgICB0aGlzLmFzc2lnbihzdGF0ZSwgY29udGV4dCk7XG5cbiAgICAgICAgY29udGV4dC5hZGRBc3NlcnRpb24oYXNzZXJ0aW9uKTtcblxuICAgICAgICBjb25zdCB0eXBlQXNzZXJ0aW9uID0gYXNzZXJ0aW9uOyAvLy9cblxuICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke3R5cGVBc3NlcnRpb25TdHJpbmd9JyB0eXBlIGFzc2VydGlvbi5gKTtcblxuICAgICAgICByZXR1cm4gZm9yd2FyZCh0eXBlQXNzZXJ0aW9uLCBjb250ZXh0LCBiYWNrKTtcbiAgICAgIH0sIGJhY2spO1xuICAgIH0sIGJhY2spO1xuICB9XG5cbiAgdmFsaWRhdGVUeXBlKHN0YXRlLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3QgdHlwZUFzc2VydGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke3R5cGVBc3NlcnRpb25TdHJpbmd9JyB0eXBlIGFzc2VydGlvbidzIHR5cGUuLi5gKTtcblxuICAgIGNvbnN0IG5vbWluYWxUeXBlTmFtZSA9IHRoaXMudHlwZS5nZXROb21pbmFsVHlwZU5hbWUoKSxcbiAgICAgICAgICB0eXBlID0gY29udGV4dC5maW5kVHlwZUJ5Tm9taW5hbFR5cGVOYW1lKG5vbWluYWxUeXBlTmFtZSk7XG5cbiAgICBpZiAodHlwZSA9PT0gbnVsbCkge1xuICAgICAgY29uc3QgdHlwZVN0cmluZyA9IHRoaXMudHlwZS5nZXRTdHJpbmcoKTtcblxuICAgICAgY29udGV4dC5kZWJ1ZyhgVGhlICcke3R5cGVTdHJpbmd9JyB0eXBlIGlzIG5vdCBwcmVzZW50LmApO1xuXG4gICAgICByZXR1cm4gYmFjaygpO1xuICAgIH1cblxuICAgIHRoaXMudHlwZSA9IHR5cGU7XG5cbiAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke3R5cGVBc3NlcnRpb25TdHJpbmd9JyB0eXBlIGFzc2VydGlvbidzIHR5cGUuYCk7XG5cbiAgICByZXR1cm4gZm9yd2FyZChzdGF0ZSwgY29udGV4dCwgYmFjaylcbiAgfVxuXG4gIHZhbGlkYXRlV2hlbkRlY2xhcmVkKHN0YXRlLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3QgZGVjbGFyZWQgPSBpc0RlY2xhcmVkKHN0YXRlKTtcblxuICAgIGlmICghZGVjbGFyZWQpIHtcbiAgICAgIHJldHVybiBiYWNrKCk7XG4gICAgfVxuXG4gICAgY29uc3QgdHlwZUFzc2VydGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7IC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7dHlwZUFzc2VydGlvblN0cmluZ30nIGRlY2xhcmVkIHR5cGUgYXNzZXJ0aW9uLi4uYCk7XG5cbiAgICByZXR1cm4gdGhpcy50ZXJtLnZhbGlkYXRlKHN0YXRlLCBjb250ZXh0LCAodGVybSwgY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgbGV0IHZhbGlkYXRlc1doZW5EZWNsYXJlZCA9IGZhbHNlO1xuXG4gICAgICBpZiAodGVybSAhPT0gbnVsbCkge1xuICAgICAgICBjb25zdCB0ZXJtVHlwZSA9IHRlcm0uZ2V0VHlwZSgpLFxuICAgICAgICAgICAgICB0ZXJtVHlwZUVxdWFsVG9UeXBlID0gdGVybVR5cGUuaXNFcXVhbFRvKHRoaXMudHlwZSksXG4gICAgICAgICAgICAgIHRlcm1UeXBlU3VwZXJUeXBlT2ZUeXBlID0gdGVybVR5cGUuaXNTdXBlclR5cGVPZih0aGlzLnR5cGUpO1xuXG4gICAgICAgIGlmIChmYWxzZSkge1xuICAgICAgICAgIC8vL1xuICAgICAgICB9IGVsc2UgaWYgKHRlcm1UeXBlRXF1YWxUb1R5cGUpIHtcbiAgICAgICAgICB2YWxpZGF0ZXNXaGVuRGVjbGFyZWQgPSB0cnVlO1xuICAgICAgICB9IGVsc2UgaWYgKHRlcm1UeXBlU3VwZXJUeXBlT2ZUeXBlKSB7XG4gICAgICAgICAgY29uc3QgdGVybUVzdGFibGlzaGVkID0gdGVybS5pc0VzdGFibGlzaGVkKCk7XG5cbiAgICAgICAgICBpZiAodGVybUVzdGFibGlzaGVkKSB7XG4gICAgICAgICAgICB2YWxpZGF0ZXNXaGVuRGVjbGFyZWQgPSB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoIXZhbGlkYXRlc1doZW5EZWNsYXJlZCkge1xuICAgICAgICByZXR1cm4gYmFjaygpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnRlcm0gPSB0ZXJtO1xuXG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke3R5cGVBc3NlcnRpb25TdHJpbmd9JyBkZWNsYXJlZCB0eXBlIGFzc2VydGlvbi5gKTtcblxuICAgICAgcmV0dXJuIGZvcndhcmQoc3RhdGUsIGNvbnRleHQsIGJhY2spO1xuICAgIH0sIGJhY2spO1xuICB9XG5cbiAgdmFsaWRhdGVXaGVuRGVyaXZlZChzdGF0ZSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IGRlcml2ZWQgPSBpc0Rlcml2ZWQoc3RhdGUpO1xuXG4gICAgaWYgKCFkZXJpdmVkKSB7XG4gICAgICByZXR1cm4gYmFjaygpO1xuICAgIH1cblxuICAgIGNvbnN0IHR5cGVBc3NlcnRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke3R5cGVBc3NlcnRpb25TdHJpbmd9JyBkZXJpdmVkIHR5cGUgYXNzZXJ0aW9uLi4uYCk7XG5cbiAgICByZXR1cm4gdmFsaWRhdGVXaGVuRGVyaXZlZCh0aGlzLnRlcm0sIHRoaXMudHlwZSwgc3RhdGUsIGNvbnRleHQsICh0ZXJtLCBjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICB0aGlzLnRlcm0gPSB0ZXJtO1xuXG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke3R5cGVBc3NlcnRpb25TdHJpbmd9JyBkZXJpdmVkIHR5cGUgYXNzZXJ0aW9uLmApO1xuXG4gICAgICByZXR1cm4gZm9yd2FyZChzdGF0ZSwgY29udGV4dCwgYmFjayk7XG4gICAgfSwgYmFjayk7XG4gIH1cblxuICBhcHBseUluZGVwZW5kZW50bHkoZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IGNvbnRleHQgPSBzcGVjaWZpY0NvbnRleHQsIC8vL1xuICAgICAgICAgIHR5cGVBc3NlcnRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYEFwcGx5aW5nIHRoZSAnJHt0eXBlQXNzZXJ0aW9uU3RyaW5nfScgdHlwZSBhc3NlcnRpb24gaW5kZXBlbmRlbnRseS4uLmApO1xuXG4gICAgY29uc3QgdGVybSA9IHRlcm1Gcm9tVGVybUFuZFN1YnN0aXR1dGlvbnModGhpcy50ZXJtLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBkZXJpdmUoKHN0YXRlKSA9PiB7XG4gICAgICByZXR1cm4gdmFsaWRhdGVXaGVuRGVyaXZlZCh0ZXJtLCB0aGlzLnR5cGUsIHN0YXRlLCBjb250ZXh0LCAodGVybSwgY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgICBzcGVjaWZpY0NvbnRleHQgPSBjb250ZXh0OyAgLy8vXG5cbiAgICAgICAgY29udGV4dC5kZWJ1ZyhgLi4uYXBwbGllZCB0aGUgJyR7dHlwZUFzc2VydGlvblN0cmluZ30nIHR5cGUgYXNzZXJ0aW9uIGluZGVwZW5kZW50bHkuYCk7XG5cbiAgICAgICAgcmV0dXJuIGZvcndhcmQoZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgYmFjayk7XG4gICAgICB9LCBiYWNrKTtcbiAgICB9KTtcbiAgfVxuXG4gIGFzc2lnbihzdGF0ZSwgY29udGV4dCkge1xuICAgIGNvbnN0IGRlcml2ZWQgPSBpc0Rlcml2ZWQoc3RhdGUpLFxuICAgICAgICAgIHRyYW5zaWVudCA9IGlzVHJhbnNpZW50KHN0YXRlKTtcblxuICAgIGlmIChkZXJpdmVkIHx8IHRyYW5zaWVudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHR5cGVBc3NlcnRpb24gPSB0aGlzLCAvLy9cbiAgICAgICAgICB2YXJpYWJsZUFzc2lnbWVudCA9IHZhcmlhYmxlQXNzaWdubWVudEZyb21UeXBlQXNzZXJ0aW9uKHR5cGVBc3NlcnRpb24sIGNvbnRleHQpO1xuXG4gICAgY29udGV4dC5hZGRBc3NpZ25tZW50KHZhcmlhYmxlQXNzaWdtZW50KTtcbiAgfVxuXG4gIHRvSlNPTigpIHtcbiAgICBsZXQganNvbjtcblxuICAgIGNvbnN0IHR5cGVKU09OID0gdHlwZVRvVHlwZUpTT04odGhpcy50eXBlKSxcbiAgICAgICAgICBuYW1lID0gdGhpcy5nZXROYW1lKCksXG4gICAgICAgICAgc3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKSxcbiAgICAgICAgICB0eXBlID0gdHlwZUpTT047ICAvLy9cblxuICAgIGpzb24gPSB7XG4gICAgICBuYW1lLFxuICAgICAgc3RyaW5nLFxuICAgICAgdHlwZVxuICAgIH07XG5cbiAgICByZXR1cm4ganNvbjtcbiAgfVxuXG4gIHN0YXRpYyBuYW1lID0gXCJUeXBlQXNzZXJ0aW9uXCI7XG5cbiAgc3RhdGljIGZyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgICBsZXQgdHlwZUFzc2VydGlvbiA9IG51bGw7XG5cbiAgICBjb25zdCB7IG5hbWUgfSA9IGpzb247XG5cbiAgICBpZiAodGhpcy5uYW1lID09PSBuYW1lKSB7XG4gICAgICBpbnN0YW50aWF0ZSgoY29udGV4dCkgPT4ge1xuICAgICAgICBjb25zdCB7IHN0cmluZyB9ID0ganNvbixcbiAgICAgICAgICAgICAgdHlwZUFzc2VydGlvbk5vZGUgPSBpbnN0YW50aWF0ZVR5cGVBc3NlcnRpb24oc3RyaW5nLCBjb250ZXh0KSxcbiAgICAgICAgICAgICAgbm9kZSA9IHR5cGVBc3NlcnRpb25Ob2RlLCAvLy9cbiAgICAgICAgICAgICAgYnJlYWtQb2ludCA9IG51bGwsXG4gICAgICAgICAgICAgIHRlcm0gPSB0ZXJtRnJvbVR5cGVBc3NlcnRpb25Ob2RlKHR5cGVBc3NlcnRpb25Ob2RlLCBjb250ZXh0KSxcbiAgICAgICAgICAgICAgdHlwZSA9IHR5cGVGcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgICAgICBjb250ZXh0ID0gbnVsbDtcblxuICAgICAgICB0eXBlQXNzZXJ0aW9uID0gbmV3IFR5cGVBc3NlcnRpb24oY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCB0ZXJtLCB0eXBlKTtcbiAgICAgIH0sIGNvbnRleHQpO1xuICAgIH1cblxuICAgIHJldHVybiB0eXBlQXNzZXJ0aW9uO1xuICB9XG5cbiAgc3RhdGljIGZyb21TdGF0ZW1lbnQoc3RhdGVtZW50LCBjb250ZXh0KSB7XG4gICAgY29uc3Qgc3RhdGVtZW50Tm9kZSA9IHN0YXRlbWVudC5nZXROb2RlKCksXG4gICAgICAgICAgdHlwZUFzc2VydGlvbiA9IHR5cGVBc3NlcnRpb25Gcm9tU3RhdGVtZW50Tm9kZShzdGF0ZW1lbnROb2RlLCBjb250ZXh0KTtcblxuICAgIHJldHVybiB0eXBlQXNzZXJ0aW9uO1xuICB9XG59KTtcblxuZnVuY3Rpb24gdmFsaWRhdGVXaGVuRGVyaXZlZCh0ZXJtLCB0eXBlLCBzdGF0ZSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICByZXR1cm4gdGVybS52YWxpZGF0ZShzdGF0ZSwgY29udGV4dCwgKHRlcm0sIGNvbnRleHQsIGJhY2spID0+IHtcbiAgICBjb25zdCB0ZXJtVHlwZSA9IHRlcm0uZ2V0VHlwZSgpLFxuICAgICAgICAgIHRlcm1UeXBlRXF1YWxUb09yU3ViVHlwZU9mVHlwZSA9IHRlcm1UeXBlLmlzRXF1YWxUb09yU3ViVHlwZU9mKHR5cGUpO1xuXG4gICAgaWYgKCF0ZXJtVHlwZUVxdWFsVG9PclN1YlR5cGVPZlR5cGUpIHtcbiAgICAgIHJldHVybiBiYWNrKCk7XG4gICAgfVxuXG4gICAgY29uc3QgdGVybUVzdGFibGlzaGVkID0gdGVybS5pc0VzdGFibGlzaGVkKCk7XG5cbiAgICBpZiAoIXRlcm1Fc3RhYmxpc2hlZCkge1xuICAgICAgcmV0dXJuIGJhY2soKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZm9yd2FyZCh0ZXJtLCBjb250ZXh0LCBiYWNrKTtcbiAgfSwgYmFjayk7XG59XG5cbmZ1bmN0aW9uIHRlcm1Gcm9tVHlwZUFzc2VydGlvbk5vZGUodHlwZUFzc2VydGlvbk5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgdGVybU5vZGUgPSB0eXBlQXNzZXJ0aW9uTm9kZS5nZXRUZXJtTm9kZSgpLFxuICAgICAgICB0ZXJtID0gY29udGV4dC5maW5kVGVybUJ5VGVybU5vZGUodGVybU5vZGUpO1xuXG4gIHJldHVybiB0ZXJtO1xufSJdLCJuYW1lcyI6WyJhbGwiLCJleGlzdHMiLCJjb250aW51YXRpb25VdGlsaXRpZXMiLCJkZWZpbmUiLCJUeXBlQXNzZXJ0aW9uIiwiQXNzZXJ0aW9uIiwiY29udGV4dCIsInN0cmluZyIsIm5vZGUiLCJicmVha1BvaW50IiwidGVybSIsInR5cGUiLCJnZXRUZXJtIiwiZ2V0VHlwZSIsImdldFR5cGVBc3NlcnRpb25OQm9kZSIsImdldE5vZGUiLCJ0eXBlQXNzZXJ0aW9uTm9kZSIsImRpc2NoYXJnZSIsImdlbmVyYWxDb250ZXh0Iiwic3BlY2lmaWNDb250ZXh0IiwiZm9yd2FyZCIsImJhY2siLCJ0eXBlQXNzZXJ0aW9uU3RyaW5nIiwiZ2V0U3RyaW5nIiwidHJhY2UiLCJ0ZXJtRnJvbVRlcm1BbmRTdWJzdGl0dXRpb25zIiwiZGVyaXZlIiwic3RhdGUiLCJ2YWxpZGF0ZVdoZW5EZXJpdmVkIiwiZGVidWciLCJ2YWxpZGF0ZSIsImFzc2VydGlvbiIsImZpbmRBc3NlcnRpb24iLCJ0eXBlQXNzZXJ0aW9uIiwidmFsaWRhdGVUeXBlIiwiYmluZCIsInZhbGlkYXRlV2hlbkRlY2xhcmVkIiwiYXNzaWduIiwiYWRkQXNzZXJ0aW9uIiwibm9taW5hbFR5cGVOYW1lIiwiZ2V0Tm9taW5hbFR5cGVOYW1lIiwiZmluZFR5cGVCeU5vbWluYWxUeXBlTmFtZSIsInR5cGVTdHJpbmciLCJkZWNsYXJlZCIsImlzRGVjbGFyZWQiLCJ2YWxpZGF0ZXNXaGVuRGVjbGFyZWQiLCJ0ZXJtVHlwZSIsInRlcm1UeXBlRXF1YWxUb1R5cGUiLCJpc0VxdWFsVG8iLCJ0ZXJtVHlwZVN1cGVyVHlwZU9mVHlwZSIsImlzU3VwZXJUeXBlT2YiLCJ0ZXJtRXN0YWJsaXNoZWQiLCJpc0VzdGFibGlzaGVkIiwiZGVyaXZlZCIsImlzRGVyaXZlZCIsImFwcGx5SW5kZXBlbmRlbnRseSIsInRyYW5zaWVudCIsImlzVHJhbnNpZW50IiwidmFyaWFibGVBc3NpZ21lbnQiLCJ2YXJpYWJsZUFzc2lnbm1lbnRGcm9tVHlwZUFzc2VydGlvbiIsImFkZEFzc2lnbm1lbnQiLCJ0b0pTT04iLCJqc29uIiwidHlwZUpTT04iLCJ0eXBlVG9UeXBlSlNPTiIsIm5hbWUiLCJnZXROYW1lIiwiZnJvbUpTT04iLCJpbnN0YW50aWF0ZSIsImluc3RhbnRpYXRlVHlwZUFzc2VydGlvbiIsInRlcm1Gcm9tVHlwZUFzc2VydGlvbk5vZGUiLCJ0eXBlRnJvbUpTT04iLCJmcm9tU3RhdGVtZW50Iiwic3RhdGVtZW50Iiwic3RhdGVtZW50Tm9kZSIsInR5cGVBc3NlcnRpb25Gcm9tU3RhdGVtZW50Tm9kZSIsInRlcm1UeXBlRXF1YWxUb09yU3ViVHlwZU9mVHlwZSIsImlzRXF1YWxUb09yU3ViVHlwZU9mIiwidGVybU5vZGUiLCJnZXRUZXJtTm9kZSIs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
@@ -63,10 +63,11 @@ const _default = (0, _elements.define)(class Axiom extends _claim.default {
63
63
  const axiomString = this.getString(); ///
64
64
  context.trace(`Applying the '${axiomString}' axiom...`);
65
65
  return (0, _context.isolate)((step, factOrSubproofs, context, forward, back)=>{
66
- const applyDeduction = this.applyDeduction.bind(this), applySuppositions = this.applySuppositions.bind(this);
66
+ const applyDeduction = this.applyDeduction.bind(this), applySuppositions = this.applySuppositions.bind(this), dischargeHypotheses = this.dischargeHypotheses.bind(this);
67
67
  return (0, _context.reconcile)((context)=>{
68
68
  return all([
69
69
  applyDeduction,
70
+ dischargeHypotheses,
70
71
  applySuppositions
71
72
  ], step, factOrSubproofs, context, (step, factOrSubproofs, context, back)=>{
72
73
  const complexSubstitutionsUnsolved = context.areComplexSubstitutionsUnsolved();
@@ -194,4 +195,4 @@ const _default = (0, _elements.define)(class Axiom extends _claim.default {
194
195
  }
195
196
  });
196
197
 
197
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L2NsYWltL2F4aW9tLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBicmVha1BvaW50VXRpbGl0aWVzLCBjb250aW51YXRpb25VdGlsaXRpZXMgfSBmcm9tIFwib2NjYW0tbGFuZ3VhZ2VzXCI7XG5cbmltcG9ydCBDbGFpbSBmcm9tIFwiLi4vY2xhaW1cIjtcblxuaW1wb3J0IHsgZGVmaW5lIH0gZnJvbSBcIi4uLy4uL2VsZW1lbnRzXCI7XG5pbXBvcnQgeyB0ZXJtc1N0cmluZ0Zyb21UZXJtcyB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvc3RyaW5nXCI7XG5pbXBvcnQgeyBqb2luLCBpc29sYXRlLCBlbmNsb3NlLCByZWNvbmNpbGUgfSBmcm9tIFwiLi4vLi4vdXRpbGl0aWVzL2NvbnRleHRcIjtcblxuY29uc3QgeyBicmVha2FibGUgfSA9IGJyZWFrUG9pbnRVdGlsaXRpZXMsXG4gICAgICB7IGN1dCwgYWxsLCBiYWNrd2FyZHNFdmVyeSB9ID0gY29udGludWF0aW9uVXRpbGl0aWVzO1xuXG5leHBvcnQgZGVmYXVsdCBkZWZpbmUoY2xhc3MgQXhpb20gZXh0ZW5kcyBDbGFpbSB7XG4gIGdldEF4aW9tTm9kZSgpIHtcbiAgICBjb25zdCBub2RlID0gdGhpcy5nZXROb2RlKCksXG4gICAgICAgICAgYXhpb21Ob2RlID0gbm9kZTsgLy8vXG5cbiAgICByZXR1cm4gYXhpb21Ob2RlO1xuICB9XG5cbiAgaXNTYXRpc2ZpYWJsZSgpIHtcbiAgICBjb25zdCBzaWduYXR1cmUgPSB0aGlzLmdldFNpZ25hdHVyZSgpLFxuICAgICAgICAgIHNhdGlzZmlhYmxlID0gKHNpZ25hdHVyZSAhPT0gbnVsbCk7XG5cbiAgICByZXR1cm4gc2F0aXNmaWFibGU7XG4gIH1cblxuICB2ZXJpZnkgPSBicmVha2FibGUoZnVuY3Rpb24gKGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBmb3J3YXJkID0gY3V0KGZvcndhcmQsIGJhY2spOyAvLy9cblxuICAgIGNvbnN0IGF4aW9tU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHtheGlvbVN0cmluZ30nIGF4aW9tLi4uYCk7XG5cbiAgICByZXR1cm4gaXNvbGF0ZSgoY29udGV4dCwgZm9yd2FyZCwgYmFjaykgPT4ge1xuICAgICAgcmV0dXJuIGVuY2xvc2UoKGNvbnRleHQpID0+IHtcbiAgICAgICAgY29uc3QgdmVyaWZ5UHJvb2YgPSB0aGlzLnZlcmlmeVByb29mLmJpbmQodGhpcyksXG4gICAgICAgICAgICAgIHZlcmlmeUxhYmVscyA9IHRoaXMudmVyaWZ5TGFiZWxzLmJpbmQodGhpcyksXG4gICAgICAgICAgICAgIHZlcmlmeVNpZ25hdHVyZSA9IHRoaXMudmVyaWZ5U2lnbmF0dXJlLmJpbmQodGhpcyksXG4gICAgICAgICAgICAgIHZlcmlmeURlZHVjdGlvbiA9IHRoaXMudmVyaWZ5RGVkdWN0aW9uLmJpbmQodGhpcyksXG4gICAgICAgICAgICAgIHZlcmlmeVN1cHBvc2l0aW9ucyA9IHRoaXMudmVyaWZ5U3VwcG9zaXRpb25zLmJpbmQodGhpcyk7XG5cbiAgICAgICAgcmV0dXJuIGFsbChbXG4gICAgICAgICAgdmVyaWZ5TGFiZWxzLFxuICAgICAgICAgIHZlcmlmeVNpZ25hdHVyZSxcbiAgICAgICAgICB2ZXJpZnlTdXBwb3NpdGlvbnMsXG4gICAgICAgICAgdmVyaWZ5RGVkdWN0aW9uLFxuICAgICAgICAgIHZlcmlmeVByb29mXG4gICAgICAgIF0sIGNvbnRleHQsIChjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGZvcndhcmQoYmFjayk7XG4gICAgICAgIH0sIGJhY2spO1xuICAgICAgfSwgY29udGV4dCk7XG4gICAgfSwgY29udGV4dCwgKGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIGNvbnN0IGF4aW9tID0gdGhpczsgLy8vXG5cbiAgICAgIGNvbnRleHQuYWRkQXhpb20oYXhpb20pO1xuXG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7YXhpb21TdHJpbmd9JyBheGlvbS5gKTtcblxuICAgICAgcmV0dXJuIGZvcndhcmQoY29udGV4dCwgYmFjayk7XG4gICAgfSwgKGV4Y2VwdGlvbikgPT4ge1xuICAgICAgaWYgKGV4Y2VwdGlvbikge1xuICAgICAgICByZXR1cm4gYmFjayhleGNlcHRpb24pO1xuICAgICAgfVxuXG4gICAgICBjb250ZXh0LnRyYWNlKGBVbmFibGUgdG8gdmVyaWZ5IHRoZSAnJHtheGlvbVN0cmluZ30nIGF4aW9tLmApO1xuXG4gICAgICByZXR1cm4gYmFjaygpO1xuICAgIH0pO1xuICB9KTtcblxuICBhcHBseSA9IGJyZWFrYWJsZShmdW5jdGlvbiAoc3RlcCwgZmFjdE9yU3VicHJvb2ZzLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgZm9yd2FyZCA9IGN1dChmb3J3YXJkLCBiYWNrKTsgLy8vXG5cbiAgICBjb25zdCBheGlvbVN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYEFwcGx5aW5nIHRoZSAnJHtheGlvbVN0cmluZ30nIGF4aW9tLi4uYCk7XG5cbiAgICByZXR1cm4gaXNvbGF0ZSgoc3RlcCwgZmFjdE9yU3VicHJvb2ZzLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSA9PiB7XG4gICAgICBjb25zdCBhcHBseURlZHVjdGlvbiA9IHRoaXMuYXBwbHlEZWR1Y3Rpb24uYmluZCh0aGlzKSxcbiAgICAgICAgICAgIGFwcGx5U3VwcG9zaXRpb25zID0gdGhpcy5hcHBseVN1cHBvc2l0aW9ucy5iaW5kKHRoaXMpO1xuXG4gICAgICByZXR1cm4gcmVjb25jaWxlKChjb250ZXh0KSA9PiB7XG4gICAgICAgIHJldHVybiBhbGwoW1xuICAgICAgICAgIGFwcGx5RGVkdWN0aW9uLFxuICAgICAgICAgIGFwcGx5U3VwcG9zaXRpb25zXG4gICAgICAgIF0sIHN0ZXAsIGZhY3RPclN1YnByb29mcywgY29udGV4dCwgKHN0ZXAsIGZhY3RPclN1YnByb29mcywgY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgICAgIGNvbnN0IGNvbXBsZXhTdWJzdGl0dXRpb25zVW5zb2x2ZWQgPSBjb250ZXh0LmFyZUNvbXBsZXhTdWJzdGl0dXRpb25zVW5zb2x2ZWQoKTtcblxuICAgICAgICAgIGlmIChjb21wbGV4U3Vic3RpdHV0aW9uc1Vuc29sdmVkKSB7XG4gICAgICAgICAgICBjb250ZXh0LmRlYnVnKGBUaGVyZSBhcmUgdW5zb2x2ZWQgY29tcGxleCBzdWJzdGl0dXRpb25zLmApO1xuXG4gICAgICAgICAgICByZXR1cm4gYmFjaygpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiBmb3J3YXJkKGJhY2spO1xuICAgICAgICB9LCBiYWNrKTtcbiAgICAgIH0sIGNvbnRleHQpXG4gICAgfSwgc3RlcCwgZmFjdE9yU3VicHJvb2ZzLCBjb250ZXh0LCAoc3RlcCwgZmFjdE9yU3VicHJvb2ZzLCBjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi5hcHBsaWVkIHRoZSAnJHtheGlvbVN0cmluZ30nIGF4aW9tLmApO1xuXG4gICAgICByZXR1cm4gZm9yd2FyZChjb250ZXh0LCBiYWNrKTtcbiAgICB9LCAoZXhjZXB0aW9uKSA9PiB7XG4gICAgICBpZiAoZXhjZXB0aW9uKSB7XG4gICAgICAgIHJldHVybiBiYWNrKGV4Y2VwdGlvbik7XG4gICAgICB9XG5cbiAgICAgIGNvbnRleHQudHJhY2UoYFVuYWJsZSB0byBhcHBseSB0aGUgJyR7YXhpb21TdHJpbmd9JyBheGlvbS5gKTtcblxuICAgICAgcmV0dXJuIGJhY2soKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgdmVyaWZ5U2lnbmF0dXJlKGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBzYXRpc2ZpYWJsZSA9IHRoaXMuaXNTYXRpc2ZpYWJsZSgpO1xuXG4gICAgaWYgKCFzYXRpc2ZpYWJsZSkge1xuICAgICAgcmV0dXJuIGZvcndhcmQoY29udGV4dCwgYmFjayk7XG4gICAgfVxuXG4gICAgY29uc3Qgc2lnbmF0dXJlID0gdGhpcy5nZXRTaWduYXR1cmUoKSxcbiAgICAgICAgICBheGlvbVN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7IC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHtheGlvbVN0cmluZ30nIGF4aW9tJ3Mgc2lnbmF0dXJlLi4uYCk7XG5cbiAgICByZXR1cm4gc2lnbmF0dXJlLnZlcmlmeShjb250ZXh0LCAoY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgY29udGV4dC50cmFjZShgLi4udmVyaWZpZWQgdGhlICcke2F4aW9tU3RyaW5nfScgYXhpb20ncyBzaWduYXR1cmUuYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKGNvbnRleHQsIGJhY2spO1xuICAgIH0sIGJhY2spO1xuICB9XG5cbiAgdW5pZnlUZXJtcyh0ZXJtcywgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IHF1b3RlZCA9IHRydWUsXG4gICAgICAgICAgdGVybXNTdHJpbmcgPSB0ZXJtc1N0cmluZ0Zyb21UZXJtcyh0ZXJtcywgcXVvdGVkKSxcbiAgICAgICAgICBheGlvbVN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7IC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVW5pZnlpbmcgdGhlICR7dGVybXNTdHJpbmd9IHRlcm1zIHdpdGggdGhlICcke2F4aW9tU3RyaW5nfScgYXhpb20uLi5gKTtcblxuICAgIGNvbnN0IHNpZ25hdHVyZSA9IHRoaXMuZ2V0U2lnbmF0dXJlKCk7XG5cbiAgICByZXR1cm4gc2lnbmF0dXJlLnVuaWZ5VGVybXModGVybXMsIGNvbnRleHQsIChjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi51bmlmaWVkIHRoZSAke3Rlcm1zU3RyaW5nfSB0ZXJtcyB3aXRoIHRoZSAnJHtheGlvbVN0cmluZ30nIGF4aW9tLi4uYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKGNvbnRleHQsIGJhY2spO1xuICAgIH0sIGJhY2spO1xuICB9XG5cbiAgdW5pZnlDbGFpbShjbGFpbSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGZvcndhcmQgPSBjdXQoZm9yd2FyZCwgYmFjayk7IC8vL1xuXG4gICAgY29uc3QgYXhpb21TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpLCAvLy9cbiAgICAgICAgICBjbGFpbVN0cmluZyA9IGNsYWltLmdldFN0cmluZygpO1xuXG4gICAgY29udGV4dC50cmFjZShgVW5pZnlpbmcgdGhlICcke2NsYWltU3RyaW5nfScgY2xhaW0gd2l0aCB0aGUgJyR7YXhpb21TdHJpbmd9JyBheGlvbS4uLmApO1xuXG4gICAgcmV0dXJuIGlzb2xhdGUoKGNsYWltLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSA9PiB7XG4gICAgICByZXR1cm4gcmVjb25jaWxlKChjb250ZXh0KSA9PiB7XG4gICAgICAgIGNvbnN0IGRlZHVjdGlvbiA9IGNsYWltLmdldERlZHVjdGlvbigpO1xuXG4gICAgICAgIHJldHVybiB0aGlzLnVuaWZ5RGVkdWN0aW9uKGRlZHVjdGlvbiwgY29udGV4dCwgKGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgICAgICBjb25zdCBzdXBwb3NpdGlvbnMgPSBjbGFpbS5nZXRTdXBwb3NpdGlvbnMoKTtcblxuICAgICAgICAgIHJldHVybiB0aGlzLnVuaWZ5U3VwcG9zaXRpb25zKHN1cHBvc2l0aW9ucywgY29udGV4dCwgKGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgICAgICAgIGNvbnRleHQuY29tbWl0KCk7XG5cbiAgICAgICAgICAgIHJldHVybiBmb3J3YXJkKGJhY2spO1xuICAgICAgICAgIH0sIGJhY2spO1xuICAgICAgICB9LCBiYWNrKTtcbiAgICAgIH0sIGNvbnRleHQpO1xuICAgIH0sIGNsYWltLCBjb250ZXh0LCAoY2xhaW0sIGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnVuaWZpZWQgdGhlICcke2NsYWltU3RyaW5nfScgY2xhaW0gd2l0aCB0aGUgJyR7YXhpb21TdHJpbmd9JyBheGlvbS5gKTtcblxuICAgICAgcmV0dXJuIGZvcndhcmQoY29udGV4dCwgYmFjayk7XG4gICAgfSwgKGV4Y2VwdGlvbikgPT4ge1xuICAgICAgaWYgKGV4Y2VwdGlvbikge1xuICAgICAgICByZXR1cm4gYmFjayhleGNlcHRpb24pO1xuICAgICAgfVxuXG4gICAgICBjb250ZXh0LnRyYWNlKGBVbmFibGUgdG8gdW5pZnkgdGhlICcke2NsYWltU3RyaW5nfScgY2xhaW0gd2l0aCB0aGUgJyR7YXhpb21TdHJpbmd9JyBheGlvbS5gKTtcblxuICAgICAgcmV0dXJuIGJhY2soKTtcbiAgICB9KTtcbiAgfVxuXG4gIHVuaWZ5RGVkdWN0aW9uKGRlZHVjdGlvbiwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IGdlbmVyYWxEZWR1Y3Rpb24gPSB0aGlzLmdldERlZHVjdGlvbigpLCAvLy9cbiAgICAgICAgICBzcGVjaWZpY0RlZHVjdGlvbiA9IGRlZHVjdGlvbiwgIC8vL1xuICAgICAgICAgIGdlbmVyYWxEZWR1Y3Rpb25TdHJpbmcgPSBnZW5lcmFsRGVkdWN0aW9uLmdldFN0cmluZygpLFxuICAgICAgICAgIHNwZWNpZmljRGVkdWN0aW9uU3RyaW5nID0gc3BlY2lmaWNEZWR1Y3Rpb24uZ2V0U3RyaW5nKCk7XG5cbiAgICBjb250ZXh0LnRyYWNlKGBVbmlmeWluZyB0aGUgJyR7c3BlY2lmaWNEZWR1Y3Rpb25TdHJpbmd9JyBkZWR1Y3Rpb24gd2l0aCB0aGUgJyR7Z2VuZXJhbERlZHVjdGlvblN0cmluZ30nIGRlZHVjdGlvbi4uLmApO1xuXG4gICAgY29uc3Qgc3BlY2lmaWNEZWR1Y3Rpb25Db250ZXh0ID0gc3BlY2lmaWNEZWR1Y3Rpb24uZ2V0Q29udGV4dCgpLFxuICAgICAgICAgIGdlbmVyYWxEZWR1Y3Rpb25Db250ZXh0ID0gZ2VuZXJhbERlZHVjdGlvbi5nZXRDb250ZXh0KCksXG4gICAgICAgICAgc3BlY2lmaWNDb250ZXh0ID0gc3BlY2lmaWNEZWR1Y3Rpb25Db250ZXh0LCAgLy8vXG4gICAgICAgICAgZ2VuZXJhbENvbnRleHQgPSBnZW5lcmFsRGVkdWN0aW9uQ29udGV4dDsgLy8vXG5cbiAgICByZXR1cm4gam9pbigoc3BlY2lmaWNDb250ZXh0KSA9PiB7XG4gICAgICByZXR1cm4gcmVjb25jaWxlKChzcGVjaWZpY0NvbnRleHQpID0+IHtcbiAgICAgICAgY29uc3Qgc3RhdGVtZW50ID0gc3BlY2lmaWNEZWR1Y3Rpb24uZ2V0U3RhdGVtZW50KCk7XG5cbiAgICAgICAgZGVkdWN0aW9uID0gZ2VuZXJhbERlZHVjdGlvbjsgLy8vXG5cbiAgICAgICAgcmV0dXJuIGRlZHVjdGlvbi51bmlmeVN0YXRlbWVudChzdGF0ZW1lbnQsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIChnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICAgICAgc3BlY2lmaWNDb250ZXh0LmNvbW1pdChjb250ZXh0KTtcblxuICAgICAgICAgIGNvbnRleHQuZGVidWcoYC4uLnVuaWZpZWQgdGhlICcke3NwZWNpZmljRGVkdWN0aW9uU3RyaW5nfScgZGVkdWN0aW9uIHdpdGggdGhlICcke2dlbmVyYWxEZWR1Y3Rpb25TdHJpbmd9JyBkZWR1Y3Rpb24uYCk7XG5cbiAgICAgICAgICByZXR1cm4gZm9yd2FyZChjb250ZXh0LCBiYWNrKTtcbiAgICAgICAgfSwgYmFjayk7XG4gICAgICB9LCBzcGVjaWZpY0NvbnRleHQpO1xuICAgIH0sIHNwZWNpZmljQ29udGV4dCwgY29udGV4dCk7XG4gIH1cblxuICB1bmlmeVN1cHBvc2l0aW9uKHN1cHBvc2l0aW9uLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrLCBpbmRleCkge1xuICAgIGNvbnN0IHNwZWNpZmljU3VwcG9zaXRpb24gPSBzdXBwb3NpdGlvbjsgIC8vL1xuXG4gICAgc3VwcG9zaXRpb24gPSB0aGlzLmdldFN1cHBvc2l0aW9uKGluZGV4KTtcblxuICAgIGNvbnN0IGdlbmVyYWxTdXBwb3NpdGlvbiA9IHN1cHBvc2l0aW9uLCAvLy9cbiAgICAgICAgICBnZW5lcmFsU3VwcG9zaXRpb25TdHJpbmcgPSBnZW5lcmFsU3VwcG9zaXRpb24uZ2V0U3RyaW5nKCksXG4gICAgICAgICAgc3BlY2lmaWNTdXBwb3NpdGlvblN0cmluZyA9IHNwZWNpZmljU3VwcG9zaXRpb24uZ2V0U3RyaW5nKCk7XG5cbiAgICBjb250ZXh0LnRyYWNlKGBVbmlmeWluZyB0aGUgJyR7c3BlY2lmaWNTdXBwb3NpdGlvblN0cmluZ30nIHN1cHBvc2l0aW9uIHdpdGggdGhlICcke2dlbmVyYWxTdXBwb3NpdGlvblN0cmluZ30nIHN1cHBvc2l0aW9uLi4uYCk7XG5cbiAgICBjb25zdCBzcGVjaWZpY1N1cHBvc2l0aW9uQ29udGV4dCA9IHNwZWNpZmljU3VwcG9zaXRpb24uZ2V0Q29udGV4dCgpLFxuICAgICAgICAgIGdlbmVyYWxTdXBwb3NpdGlvbkNvbnRleHQgPSBnZW5lcmFsU3VwcG9zaXRpb24uZ2V0Q29udGV4dCgpLFxuICAgICAgICAgIHNwZWNpZmljQ29udGV4dCA9IHNwZWNpZmljU3VwcG9zaXRpb25Db250ZXh0LCAgLy8vXG4gICAgICAgICAgZ2VuZXJhbENvbnRleHQgPSBnZW5lcmFsU3VwcG9zaXRpb25Db250ZXh0OyAvLy9cblxuICAgIHJldHVybiBqb2luKChzcGVjaWZpY0NvbnRleHQpID0+IHtcbiAgICAgIHJldHVybiByZWNvbmNpbGUoKHNwZWNpZmljQ29udGV4dCkgPT4ge1xuICAgICAgICBjb25zdCBzdGF0ZW1lbnQgPSBzcGVjaWZpY1N1cHBvc2l0aW9uLmdldFN0YXRlbWVudCgpLFxuICAgICAgICAgICAgICBzdXBwb3NpdGlvbiA9IGdlbmVyYWxTdXBwb3NpdGlvbjsgLy8vXG5cbiAgICAgICAgcmV0dXJuIHN1cHBvc2l0aW9uLnVuaWZ5U3RhdGVtZW50KHN0YXRlbWVudCwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgKGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIGJhY2spID0+IHtcbiAgICAgICAgICBzcGVjaWZpY0NvbnRleHQuY29tbWl0KGNvbnRleHQpO1xuXG4gICAgICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udW5pZmllZCB0aGUgJyR7c3BlY2lmaWNTdXBwb3NpdGlvblN0cmluZ30nIHN1cHBvc2l0aW9uIHdpdGggdGhlICcke2dlbmVyYWxTdXBwb3NpdGlvblN0cmluZ30nIHN1cHBvc2l0aW9uLmApO1xuXG4gICAgICAgICAgcmV0dXJuIGZvcndhcmQoY29udGV4dCwgYmFjayk7XG4gICAgICAgIH0sIGJhY2spO1xuICAgICAgfSwgc3BlY2lmaWNDb250ZXh0KTtcbiAgICB9LCBzcGVjaWZpY0NvbnRleHQsIGNvbnRleHQpO1xuICB9XG5cbiAgdW5pZnlTdXBwb3NpdGlvbnMoc3VwcG9zaXRpb25zLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3Qgc3BlY2lmaWNTdXBwb3NpdGlvbnMgPSBzdXBwb3NpdGlvbnMsICAvLy9cbiAgICAgICAgICBzcGVjaWZpY1N1cHBvc2l0aW9uc0xlbmd0aCA9IHNwZWNpZmljU3VwcG9zaXRpb25zLmxlbmd0aDtcblxuICAgIHN1cHBvc2l0aW9ucyA9IHRoaXMuZ2V0U3VwcG9zaXRpb25zKCk7XG5cbiAgICBjb25zdCBnZW5lcmFsU3VwcG9zaXRpb25zID0gc3VwcG9zaXRpb25zLCAvLy9cbiAgICAgICAgICBnZW5lcmFsU3VwcG9zaXRpb25zTGVuZ3RoID0gZ2VuZXJhbFN1cHBvc2l0aW9ucy5sZW5ndGg7XG5cbiAgICBpZiAoZ2VuZXJhbFN1cHBvc2l0aW9uc0xlbmd0aCAhPT0gc3BlY2lmaWNTdXBwb3NpdGlvbnNMZW5ndGgpIHtcbiAgICAgIHJldHVybiBiYWNrKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGJhY2t3YXJkc0V2ZXJ5KHN1cHBvc2l0aW9ucywgKHN1cHBvc2l0aW9uLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrLCBpbmRleCkgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMudW5pZnlTdXBwb3NpdGlvbihzdXBwb3NpdGlvbiwgY29udGV4dCwgZm9yd2FyZCwgYmFjaywgaW5kZXgpO1xuICAgIH0sIGNvbnRleHQsIGZvcndhcmQsIGJhY2spO1xuICB9XG5cbiAgdW5pZnlTaWduYXR1cmVBc3NlcnRpb24oc2lnbmF0dXJlQXNzZXJ0aW9uLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3QgYXhpb21TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpLCAvLy9cbiAgICAgICAgICBzaWduYXR1cmVBc3NlcnRpb25TdHJpbmcgPSBzaWduYXR1cmVBc3NlcnRpb24uZ2V0U3RyaW5nKCk7XG5cbiAgICBjb250ZXh0LnRyYWNlKGBVbmlmeWluZyB0aGUgJyR7c2lnbmF0dXJlQXNzZXJ0aW9uU3RyaW5nfScgc2lnbmF0dXJlIGFzc2VydGlvbiB3aXRoIHRoZSAnJHtheGlvbVN0cmluZ30nIGF4aW9tLi4uYCk7XG5cbiAgICBjb25zdCB0ZXJtcyA9IHNpZ25hdHVyZUFzc2VydGlvbi5nZXRUZXJtcygpLFxuICAgICAgICAgIHNpZ25hdHVyZSA9IHRoaXMuZ2V0U2lnbmF0dXJlKCk7XG5cbiAgICByZXR1cm4gc2lnbmF0dXJlLnVuaWZ5VGVybXModGVybXMsIGNvbnRleHQsIChjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi51bmlmaWVkIHRoZSAnJHtzaWduYXR1cmVBc3NlcnRpb25TdHJpbmd9JyBzaWduYXR1cmUgYXNzZXJ0aW9uIHdpdGggdGhlICcke2F4aW9tU3RyaW5nfScgYXhpb20uYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKGNvbnRleHQsIGJhY2spO1xuICAgIH0sIGJhY2spO1xuICB9XG5cbiAgc3RhdGljIG5hbWUgPSBcIkF4aW9tXCI7XG5cbiAgc3RhdGljIGZyb21KU09OKGpzb24sIGNvbnRleHQpIHsgcmV0dXJuIENsYWltLmZyb21KU09OKEF4aW9tLCBqc29uLCBjb250ZXh0KTsgfVxufSk7XG4iXSwibmFtZXMiOlsiYnJlYWthYmxlIiwiYnJlYWtQb2ludFV0aWxpdGllcyIsImN1dCIsImFsbCIsImJhY2t3YXJkc0V2ZXJ5IiwiY29udGludWF0aW9uVXRpbGl0aWVzIiwiZGVmaW5lIiwiQXhpb20iLCJDbGFpbSIsImdldEF4aW9tTm9kZSIsIm5vZGUiLCJnZXROb2RlIiwiYXhpb21Ob2RlIiwiaXNTYXRpc2ZpYWJsZSIsInNpZ25hdHVyZSIsImdldFNpZ25hdHVyZSIsInNhdGlzZmlhYmxlIiwidmVyaWZ5IiwiY29udGV4dCIsImZvcndhcmQiLCJiYWNrIiwiYXhpb21TdHJpbmciLCJnZXRTdHJpbmciLCJ0cmFjZSIsImlzb2xhdGUiLCJlbmNsb3NlIiwidmVyaWZ5UHJvb2YiLCJiaW5kIiwidmVyaWZ5TGFiZWxzIiwidmVyaWZ5U2lnbmF0dXJlIiwidmVyaWZ5RGVkdWN0aW9uIiwidmVyaWZ5U3VwcG9zaXRpb25zIiwiYXhpb20iLCJhZGRBeGlvbSIsImRlYnVnIiwiZXhjZXB0aW9uIiwiYXBwbHkiLCJzdGVwIiwiZmFjdE9yU3VicHJvb2ZzIiwiYXBwbHlEZWR1Y3Rpb24iLCJhcHBseVN1cHBvc2l0aW9ucyIsInJlY29uY2lsZSIsImNvbXBsZXhTdWJzdGl0dXRpb25zVW5zb2x2ZWQiLCJhcmVDb21wbGV4U3Vic3RpdHV0aW9uc1Vuc29sdmVkIiwidW5pZnlUZXJtcyIsInRlcm1zIiwicXVvdGVkIiwidGVybXNTdHJpbmciLCJ0ZXJtc1N0cmluZ0Zyb21UZXJtcyIsInVuaWZ5Q2xhaW0iLCJjbGFpbSIsImNsYWltU3RyaW5nIiwiZGVkdWN0aW9uIiwiZ2V0RGVkdWN0aW9uIiwidW5pZnlEZWR1Y3Rpb24iLCJzdXBwb3NpdGlvbnMiLCJnZXRTdXBwb3NpdGlvbnMiLCJ1bmlmeVN1cHBvc2l0aW9ucyIsImNvbW1pdCIsImdlbmVyYWxEZWR1Y3Rpb24iLCJzcGVjaWZpY0RlZHVjdGlvbiIsImdlbmVyYWxEZWR1Y3Rpb25TdHJpbmciLCJzcGVjaWZpY0RlZHVjdGlvblN0cmluZyIsInNwZWNpZmljRGVkdWN0aW9uQ29udGV4dCIsImdldENvbnRleHQiLCJnZW5lcmFsRGVkdWN0aW9uQ29udGV4dCIsInNwZWNpZmljQ29udGV4dCIsImdlbmVyYWxDb250ZXh0Iiwiam9pbiIsInN0YXRlbWVudCIsImdldFN0YXRlbWVudCIsInVuaWZ5U3RhdGVtZW50IiwidW5pZnlTdXBwb3NpdGlvbiIsInN1cHBvc2l0aW9uIiwiaW5kZXgiLCJzcGVjaWZpY1N1cHBvc2l0aW9uIiwiZ2V0U3VwcG9zaXRpb24iLCJnZW5lcmFsU3VwcG9zaXRpb24iLCJnZW5lcmFsU3VwcG9zaXRpb25TdHJpbmciLCJzcGVjaWZpY1N1cHBvc2l0aW9uU3RyaW5nIiwic3BlY2lmaWNTdXBwb3NpdGlvbkNvbnRleHQiLCJnZW5lcmFsU3VwcG9zaXRpb25Db250ZXh0Iiwic3BlY2lmaWNTdXBwb3NpdGlvbnMiLCJzcGVjaWZpY1N1cHBvc2l0aW9uc0xlbmd0aCIsImxlbmd0aCIsImdlbmVyYWxTdXBwb3NpdGlvbnMiLCJnZW5lcmFsU3VwcG9zaXRpb25zTGVuZ3RoIiwidW5pZnlTaWduYXR1cmVBc3NlcnRpb24iLCJzaWduYXR1cmVBc3NlcnRpb24iLCJzaWduYXR1cmVBc3NlcnRpb25TdHJpbmciLCJnZXRUZXJtcyIsIm5hbWUiLCJmcm9tSlNPTiIsImpzb24iXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQWFBOzs7ZUFBQTs7O2dDQVgyRDs4REFFekM7MEJBRUs7d0JBQ2M7eUJBQ2E7Ozs7OztBQUVsRCxNQUFNLEVBQUVBLFNBQVMsRUFBRSxHQUFHQyxtQ0FBbUIsRUFDbkMsRUFBRUMsR0FBRyxFQUFFQyxHQUFHLEVBQUVDLGNBQWMsRUFBRSxHQUFHQyxxQ0FBcUI7TUFFMUQsV0FBZUMsSUFBQUEsZ0JBQU0sRUFBQyxNQUFNQyxjQUFjQyxjQUFLO0lBQzdDQyxlQUFlO1FBQ2IsTUFBTUMsT0FBTyxJQUFJLENB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
198
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L2NsYWltL2F4aW9tLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBicmVha1BvaW50VXRpbGl0aWVzLCBjb250aW51YXRpb25VdGlsaXRpZXMgfSBmcm9tIFwib2NjYW0tbGFuZ3VhZ2VzXCI7XG5cbmltcG9ydCBDbGFpbSBmcm9tIFwiLi4vY2xhaW1cIjtcblxuaW1wb3J0IHsgZGVmaW5lIH0gZnJvbSBcIi4uLy4uL2VsZW1lbnRzXCI7XG5pbXBvcnQgeyB0ZXJtc1N0cmluZ0Zyb21UZXJtcyB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvc3RyaW5nXCI7XG5pbXBvcnQgeyBqb2luLCBpc29sYXRlLCBlbmNsb3NlLCByZWNvbmNpbGUgfSBmcm9tIFwiLi4vLi4vdXRpbGl0aWVzL2NvbnRleHRcIjtcblxuY29uc3QgeyBicmVha2FibGUgfSA9IGJyZWFrUG9pbnRVdGlsaXRpZXMsXG4gICAgICB7IGN1dCwgYWxsLCBiYWNrd2FyZHNFdmVyeSB9ID0gY29udGludWF0aW9uVXRpbGl0aWVzO1xuXG5leHBvcnQgZGVmYXVsdCBkZWZpbmUoY2xhc3MgQXhpb20gZXh0ZW5kcyBDbGFpbSB7XG4gIGdldEF4aW9tTm9kZSgpIHtcbiAgICBjb25zdCBub2RlID0gdGhpcy5nZXROb2RlKCksXG4gICAgICAgICAgYXhpb21Ob2RlID0gbm9kZTsgLy8vXG5cbiAgICByZXR1cm4gYXhpb21Ob2RlO1xuICB9XG5cbiAgaXNTYXRpc2ZpYWJsZSgpIHtcbiAgICBjb25zdCBzaWduYXR1cmUgPSB0aGlzLmdldFNpZ25hdHVyZSgpLFxuICAgICAgICAgIHNhdGlzZmlhYmxlID0gKHNpZ25hdHVyZSAhPT0gbnVsbCk7XG5cbiAgICByZXR1cm4gc2F0aXNmaWFibGU7XG4gIH1cblxuICB2ZXJpZnkgPSBicmVha2FibGUoZnVuY3Rpb24gKGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBmb3J3YXJkID0gY3V0KGZvcndhcmQsIGJhY2spOyAvLy9cblxuICAgIGNvbnN0IGF4aW9tU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHtheGlvbVN0cmluZ30nIGF4aW9tLi4uYCk7XG5cbiAgICByZXR1cm4gaXNvbGF0ZSgoY29udGV4dCwgZm9yd2FyZCwgYmFjaykgPT4ge1xuICAgICAgcmV0dXJuIGVuY2xvc2UoKGNvbnRleHQpID0+IHtcbiAgICAgICAgY29uc3QgdmVyaWZ5UHJvb2YgPSB0aGlzLnZlcmlmeVByb29mLmJpbmQodGhpcyksXG4gICAgICAgICAgICAgIHZlcmlmeUxhYmVscyA9IHRoaXMudmVyaWZ5TGFiZWxzLmJpbmQodGhpcyksXG4gICAgICAgICAgICAgIHZlcmlmeVNpZ25hdHVyZSA9IHRoaXMudmVyaWZ5U2lnbmF0dXJlLmJpbmQodGhpcyksXG4gICAgICAgICAgICAgIHZlcmlmeURlZHVjdGlvbiA9IHRoaXMudmVyaWZ5RGVkdWN0aW9uLmJpbmQodGhpcyksXG4gICAgICAgICAgICAgIHZlcmlmeVN1cHBvc2l0aW9ucyA9IHRoaXMudmVyaWZ5U3VwcG9zaXRpb25zLmJpbmQodGhpcyk7XG5cbiAgICAgICAgcmV0dXJuIGFsbChbXG4gICAgICAgICAgdmVyaWZ5TGFiZWxzLFxuICAgICAgICAgIHZlcmlmeVNpZ25hdHVyZSxcbiAgICAgICAgICB2ZXJpZnlTdXBwb3NpdGlvbnMsXG4gICAgICAgICAgdmVyaWZ5RGVkdWN0aW9uLFxuICAgICAgICAgIHZlcmlmeVByb29mXG4gICAgICAgIF0sIGNvbnRleHQsIChjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGZvcndhcmQoYmFjayk7XG4gICAgICAgIH0sIGJhY2spO1xuICAgICAgfSwgY29udGV4dCk7XG4gICAgfSwgY29udGV4dCwgKGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIGNvbnN0IGF4aW9tID0gdGhpczsgLy8vXG5cbiAgICAgIGNvbnRleHQuYWRkQXhpb20oYXhpb20pO1xuXG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7YXhpb21TdHJpbmd9JyBheGlvbS5gKTtcblxuICAgICAgcmV0dXJuIGZvcndhcmQoY29udGV4dCwgYmFjayk7XG4gICAgfSwgKGV4Y2VwdGlvbikgPT4ge1xuICAgICAgaWYgKGV4Y2VwdGlvbikge1xuICAgICAgICByZXR1cm4gYmFjayhleGNlcHRpb24pO1xuICAgICAgfVxuXG4gICAgICBjb250ZXh0LnRyYWNlKGBVbmFibGUgdG8gdmVyaWZ5IHRoZSAnJHtheGlvbVN0cmluZ30nIGF4aW9tLmApO1xuXG4gICAgICByZXR1cm4gYmFjaygpO1xuICAgIH0pO1xuICB9KTtcblxuICBhcHBseSA9IGJyZWFrYWJsZShmdW5jdGlvbiAoc3RlcCwgZmFjdE9yU3VicHJvb2ZzLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgZm9yd2FyZCA9IGN1dChmb3J3YXJkLCBiYWNrKTsgLy8vXG5cbiAgICBjb25zdCBheGlvbVN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYEFwcGx5aW5nIHRoZSAnJHtheGlvbVN0cmluZ30nIGF4aW9tLi4uYCk7XG5cbiAgICByZXR1cm4gaXNvbGF0ZSgoc3RlcCwgZmFjdE9yU3VicHJvb2ZzLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSA9PiB7XG4gICAgICBjb25zdCBhcHBseURlZHVjdGlvbiA9IHRoaXMuYXBwbHlEZWR1Y3Rpb24uYmluZCh0aGlzKSxcbiAgICAgICAgICAgIGFwcGx5U3VwcG9zaXRpb25zID0gdGhpcy5hcHBseVN1cHBvc2l0aW9ucy5iaW5kKHRoaXMpLFxuICAgICAgICAgICAgZGlzY2hhcmdlSHlwb3RoZXNlcyA9IHRoaXMuZGlzY2hhcmdlSHlwb3RoZXNlcy5iaW5kKHRoaXMpO1xuXG4gICAgICByZXR1cm4gcmVjb25jaWxlKChjb250ZXh0KSA9PiB7XG4gICAgICAgIHJldHVybiBhbGwoW1xuICAgICAgICAgIGFwcGx5RGVkdWN0aW9uLFxuICAgICAgICAgIGRpc2NoYXJnZUh5cG90aGVzZXMsXG4gICAgICAgICAgYXBwbHlTdXBwb3NpdGlvbnNcbiAgICAgICAgXSwgc3RlcCwgZmFjdE9yU3VicHJvb2ZzLCBjb250ZXh0LCAoc3RlcCwgZmFjdE9yU3VicHJvb2ZzLCBjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICAgICAgY29uc3QgY29tcGxleFN1YnN0aXR1dGlvbnNVbnNvbHZlZCA9IGNvbnRleHQuYXJlQ29tcGxleFN1YnN0aXR1dGlvbnNVbnNvbHZlZCgpO1xuXG4gICAgICAgICAgaWYgKGNvbXBsZXhTdWJzdGl0dXRpb25zVW5zb2x2ZWQpIHtcbiAgICAgICAgICAgIGNvbnRleHQuZGVidWcoYFRoZXJlIGFyZSB1bnNvbHZlZCBjb21wbGV4IHN1YnN0aXR1dGlvbnMuYCk7XG5cbiAgICAgICAgICAgIHJldHVybiBiYWNrKCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIGZvcndhcmQoYmFjayk7XG4gICAgICAgIH0sIGJhY2spO1xuICAgICAgfSwgY29udGV4dClcbiAgICB9LCBzdGVwLCBmYWN0T3JTdWJwcm9vZnMsIGNvbnRleHQsIChzdGVwLCBmYWN0T3JTdWJwcm9vZnMsIGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLmFwcGxpZWQgdGhlICcke2F4aW9tU3RyaW5nfScgYXhpb20uYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKGNvbnRleHQsIGJhY2spO1xuICAgIH0sIChleGNlcHRpb24pID0+IHtcbiAgICAgIGlmIChleGNlcHRpb24pIHtcbiAgICAgICAgcmV0dXJuIGJhY2soZXhjZXB0aW9uKTtcbiAgICAgIH1cblxuICAgICAgY29udGV4dC50cmFjZShgVW5hYmxlIHRvIGFwcGx5IHRoZSAnJHtheGlvbVN0cmluZ30nIGF4aW9tLmApO1xuXG4gICAgICByZXR1cm4gYmFjaygpO1xuICAgIH0pO1xuICB9KTtcblxuICB2ZXJpZnlTaWduYXR1cmUoY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IHNhdGlzZmlhYmxlID0gdGhpcy5pc1NhdGlzZmlhYmxlKCk7XG5cbiAgICBpZiAoIXNhdGlzZmlhYmxlKSB7XG4gICAgICByZXR1cm4gZm9yd2FyZChjb250ZXh0LCBiYWNrKTtcbiAgICB9XG5cbiAgICBjb25zdCBzaWduYXR1cmUgPSB0aGlzLmdldFNpZ25hdHVyZSgpLFxuICAgICAgICAgIGF4aW9tU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke2F4aW9tU3RyaW5nfScgYXhpb20ncyBzaWduYXR1cmUuLi5gKTtcblxuICAgIHJldHVybiBzaWduYXR1cmUudmVyaWZ5KGNvbnRleHQsIChjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICBjb250ZXh0LnRyYWNlKGAuLi52ZXJpZmllZCB0aGUgJyR7YXhpb21TdHJpbmd9JyBheGlvbSdzIHNpZ25hdHVyZS5gKTtcblxuICAgICAgcmV0dXJuIGZvcndhcmQoY29udGV4dCwgYmFjayk7XG4gICAgfSwgYmFjayk7XG4gIH1cblxuICB1bmlmeVRlcm1zKHRlcm1zLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3QgcXVvdGVkID0gdHJ1ZSxcbiAgICAgICAgICB0ZXJtc1N0cmluZyA9IHRlcm1zU3RyaW5nRnJvbVRlcm1zKHRlcm1zLCBxdW90ZWQpLFxuICAgICAgICAgIGF4aW9tU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBVbmlmeWluZyB0aGUgJHt0ZXJtc1N0cmluZ30gdGVybXMgd2l0aCB0aGUgJyR7YXhpb21TdHJpbmd9JyBheGlvbS4uLmApO1xuXG4gICAgY29uc3Qgc2lnbmF0dXJlID0gdGhpcy5nZXRTaWduYXR1cmUoKTtcblxuICAgIHJldHVybiBzaWduYXR1cmUudW5pZnlUZXJtcyh0ZXJtcywgY29udGV4dCwgKGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnVuaWZpZWQgdGhlICR7dGVybXNTdHJpbmd9IHRlcm1zIHdpdGggdGhlICcke2F4aW9tU3RyaW5nfScgYXhpb20uLi5gKTtcblxuICAgICAgcmV0dXJuIGZvcndhcmQoY29udGV4dCwgYmFjayk7XG4gICAgfSwgYmFjayk7XG4gIH1cblxuICB1bmlmeUNsYWltKGNsYWltLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgZm9yd2FyZCA9IGN1dChmb3J3YXJkLCBiYWNrKTsgLy8vXG5cbiAgICBjb25zdCBheGlvbVN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCksIC8vL1xuICAgICAgICAgIGNsYWltU3RyaW5nID0gY2xhaW0uZ2V0U3RyaW5nKCk7XG5cbiAgICBjb250ZXh0LnRyYWNlKGBVbmlmeWluZyB0aGUgJyR7Y2xhaW1TdHJpbmd9JyBjbGFpbSB3aXRoIHRoZSAnJHtheGlvbVN0cmluZ30nIGF4aW9tLi4uYCk7XG5cbiAgICByZXR1cm4gaXNvbGF0ZSgoY2xhaW0sIGNvbnRleHQsIGZvcndhcmQsIGJhY2spID0+IHtcbiAgICAgIHJldHVybiByZWNvbmNpbGUoKGNvbnRleHQpID0+IHtcbiAgICAgICAgY29uc3QgZGVkdWN0aW9uID0gY2xhaW0uZ2V0RGVkdWN0aW9uKCk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMudW5pZnlEZWR1Y3Rpb24oZGVkdWN0aW9uLCBjb250ZXh0LCAoY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgICAgIGNvbnN0IHN1cHBvc2l0aW9ucyA9IGNsYWltLmdldFN1cHBvc2l0aW9ucygpO1xuXG4gICAgICAgICAgcmV0dXJuIHRoaXMudW5pZnlTdXBwb3NpdGlvbnMoc3VwcG9zaXRpb25zLCBjb250ZXh0LCAoY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgICAgICAgY29udGV4dC5jb21taXQoKTtcblxuICAgICAgICAgICAgcmV0dXJuIGZvcndhcmQoYmFjayk7XG4gICAgICAgICAgfSwgYmFjayk7XG4gICAgICAgIH0sIGJhY2spO1xuICAgICAgfSwgY29udGV4dCk7XG4gICAgfSwgY2xhaW0sIGNvbnRleHQsIChjbGFpbSwgY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udW5pZmllZCB0aGUgJyR7Y2xhaW1TdHJpbmd9JyBjbGFpbSB3aXRoIHRoZSAnJHtheGlvbVN0cmluZ30nIGF4aW9tLmApO1xuXG4gICAgICByZXR1cm4gZm9yd2FyZChjb250ZXh0LCBiYWNrKTtcbiAgICB9LCAoZXhjZXB0aW9uKSA9PiB7XG4gICAgICBpZiAoZXhjZXB0aW9uKSB7XG4gICAgICAgIHJldHVybiBiYWNrKGV4Y2VwdGlvbik7XG4gICAgICB9XG5cbiAgICAgIGNvbnRleHQudHJhY2UoYFVuYWJsZSB0byB1bmlmeSB0aGUgJyR7Y2xhaW1TdHJpbmd9JyBjbGFpbSB3aXRoIHRoZSAnJHtheGlvbVN0cmluZ30nIGF4aW9tLmApO1xuXG4gICAgICByZXR1cm4gYmFjaygpO1xuICAgIH0pO1xuICB9XG5cbiAgdW5pZnlEZWR1Y3Rpb24oZGVkdWN0aW9uLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3QgZ2VuZXJhbERlZHVjdGlvbiA9IHRoaXMuZ2V0RGVkdWN0aW9uKCksIC8vL1xuICAgICAgICAgIHNwZWNpZmljRGVkdWN0aW9uID0gZGVkdWN0aW9uLCAgLy8vXG4gICAgICAgICAgZ2VuZXJhbERlZHVjdGlvblN0cmluZyA9IGdlbmVyYWxEZWR1Y3Rpb24uZ2V0U3RyaW5nKCksXG4gICAgICAgICAgc3BlY2lmaWNEZWR1Y3Rpb25TdHJpbmcgPSBzcGVjaWZpY0RlZHVjdGlvbi5nZXRTdHJpbmcoKTtcblxuICAgIGNvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHtzcGVjaWZpY0RlZHVjdGlvblN0cmluZ30nIGRlZHVjdGlvbiB3aXRoIHRoZSAnJHtnZW5lcmFsRGVkdWN0aW9uU3RyaW5nfScgZGVkdWN0aW9uLi4uYCk7XG5cbiAgICBjb25zdCBzcGVjaWZpY0RlZHVjdGlvbkNvbnRleHQgPSBzcGVjaWZpY0RlZHVjdGlvbi5nZXRDb250ZXh0KCksXG4gICAgICAgICAgZ2VuZXJhbERlZHVjdGlvbkNvbnRleHQgPSBnZW5lcmFsRGVkdWN0aW9uLmdldENvbnRleHQoKSxcbiAgICAgICAgICBzcGVjaWZpY0NvbnRleHQgPSBzcGVjaWZpY0RlZHVjdGlvbkNvbnRleHQsICAvLy9cbiAgICAgICAgICBnZW5lcmFsQ29udGV4dCA9IGdlbmVyYWxEZWR1Y3Rpb25Db250ZXh0OyAvLy9cblxuICAgIHJldHVybiBqb2luKChzcGVjaWZpY0NvbnRleHQpID0+IHtcbiAgICAgIHJldHVybiByZWNvbmNpbGUoKHNwZWNpZmljQ29udGV4dCkgPT4ge1xuICAgICAgICBjb25zdCBzdGF0ZW1lbnQgPSBzcGVjaWZpY0RlZHVjdGlvbi5nZXRTdGF0ZW1lbnQoKTtcblxuICAgICAgICBkZWR1Y3Rpb24gPSBnZW5lcmFsRGVkdWN0aW9uOyAvLy9cblxuICAgICAgICByZXR1cm4gZGVkdWN0aW9uLnVuaWZ5U3RhdGVtZW50KHN0YXRlbWVudCwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgKGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIGJhY2spID0+IHtcbiAgICAgICAgICBzcGVjaWZpY0NvbnRleHQuY29tbWl0KGNvbnRleHQpO1xuXG4gICAgICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udW5pZmllZCB0aGUgJyR7c3BlY2lmaWNEZWR1Y3Rpb25TdHJpbmd9JyBkZWR1Y3Rpb24gd2l0aCB0aGUgJyR7Z2VuZXJhbERlZHVjdGlvblN0cmluZ30nIGRlZHVjdGlvbi5gKTtcblxuICAgICAgICAgIHJldHVybiBmb3J3YXJkKGNvbnRleHQsIGJhY2spO1xuICAgICAgICB9LCBiYWNrKTtcbiAgICAgIH0sIHNwZWNpZmljQ29udGV4dCk7XG4gICAgfSwgc3BlY2lmaWNDb250ZXh0LCBjb250ZXh0KTtcbiAgfVxuXG4gIHVuaWZ5U3VwcG9zaXRpb24oc3VwcG9zaXRpb24sIGNvbnRleHQsIGZvcndhcmQsIGJhY2ssIGluZGV4KSB7XG4gICAgY29uc3Qgc3BlY2lmaWNTdXBwb3NpdGlvbiA9IHN1cHBvc2l0aW9uOyAgLy8vXG5cbiAgICBzdXBwb3NpdGlvbiA9IHRoaXMuZ2V0U3VwcG9zaXRpb24oaW5kZXgpO1xuXG4gICAgY29uc3QgZ2VuZXJhbFN1cHBvc2l0aW9uID0gc3VwcG9zaXRpb24sIC8vL1xuICAgICAgICAgIGdlbmVyYWxTdXBwb3NpdGlvblN0cmluZyA9IGdlbmVyYWxTdXBwb3NpdGlvbi5nZXRTdHJpbmcoKSxcbiAgICAgICAgICBzcGVjaWZpY1N1cHBvc2l0aW9uU3RyaW5nID0gc3BlY2lmaWNTdXBwb3NpdGlvbi5nZXRTdHJpbmcoKTtcblxuICAgIGNvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHtzcGVjaWZpY1N1cHBvc2l0aW9uU3RyaW5nfScgc3VwcG9zaXRpb24gd2l0aCB0aGUgJyR7Z2VuZXJhbFN1cHBvc2l0aW9uU3RyaW5nfScgc3VwcG9zaXRpb24uLi5gKTtcblxuICAgIGNvbnN0IHNwZWNpZmljU3VwcG9zaXRpb25Db250ZXh0ID0gc3BlY2lmaWNTdXBwb3NpdGlvbi5nZXRDb250ZXh0KCksXG4gICAgICAgICAgZ2VuZXJhbFN1cHBvc2l0aW9uQ29udGV4dCA9IGdlbmVyYWxTdXBwb3NpdGlvbi5nZXRDb250ZXh0KCksXG4gICAgICAgICAgc3BlY2lmaWNDb250ZXh0ID0gc3BlY2lmaWNTdXBwb3NpdGlvbkNvbnRleHQsICAvLy9cbiAgICAgICAgICBnZW5lcmFsQ29udGV4dCA9IGdlbmVyYWxTdXBwb3NpdGlvbkNvbnRleHQ7IC8vL1xuXG4gICAgcmV0dXJuIGpvaW4oKHNwZWNpZmljQ29udGV4dCkgPT4ge1xuICAgICAgcmV0dXJuIHJlY29uY2lsZSgoc3BlY2lmaWNDb250ZXh0KSA9PiB7XG4gICAgICAgIGNvbnN0IHN0YXRlbWVudCA9IHNwZWNpZmljU3VwcG9zaXRpb24uZ2V0U3RhdGVtZW50KCksXG4gICAgICAgICAgICAgIHN1cHBvc2l0aW9uID0gZ2VuZXJhbFN1cHBvc2l0aW9uOyAvLy9cblxuICAgICAgICByZXR1cm4gc3VwcG9zaXRpb24udW5pZnlTdGF0ZW1lbnQoc3RhdGVtZW50LCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCAoZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgICAgIHNwZWNpZmljQ29udGV4dC5jb21taXQoY29udGV4dCk7XG5cbiAgICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi51bmlmaWVkIHRoZSAnJHtzcGVjaWZpY1N1cHBvc2l0aW9uU3RyaW5nfScgc3VwcG9zaXRpb24gd2l0aCB0aGUgJyR7Z2VuZXJhbFN1cHBvc2l0aW9uU3RyaW5nfScgc3VwcG9zaXRpb24uYCk7XG5cbiAgICAgICAgICByZXR1cm4gZm9yd2FyZChjb250ZXh0LCBiYWNrKTtcbiAgICAgICAgfSwgYmFjayk7XG4gICAgICB9LCBzcGVjaWZpY0NvbnRleHQpO1xuICAgIH0sIHNwZWNpZmljQ29udGV4dCwgY29udGV4dCk7XG4gIH1cblxuICB1bmlmeVN1cHBvc2l0aW9ucyhzdXBwb3NpdGlvbnMsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBzcGVjaWZpY1N1cHBvc2l0aW9ucyA9IHN1cHBvc2l0aW9ucywgIC8vL1xuICAgICAgICAgIHNwZWNpZmljU3VwcG9zaXRpb25zTGVuZ3RoID0gc3BlY2lmaWNTdXBwb3NpdGlvbnMubGVuZ3RoO1xuXG4gICAgc3VwcG9zaXRpb25zID0gdGhpcy5nZXRTdXBwb3NpdGlvbnMoKTtcblxuICAgIGNvbnN0IGdlbmVyYWxTdXBwb3NpdGlvbnMgPSBzdXBwb3NpdGlvbnMsIC8vL1xuICAgICAgICAgIGdlbmVyYWxTdXBwb3NpdGlvbnNMZW5ndGggPSBnZW5lcmFsU3VwcG9zaXRpb25zLmxlbmd0aDtcblxuICAgIGlmIChnZW5lcmFsU3VwcG9zaXRpb25zTGVuZ3RoICE9PSBzcGVjaWZpY1N1cHBvc2l0aW9uc0xlbmd0aCkge1xuICAgICAgcmV0dXJuIGJhY2soKTtcbiAgICB9XG5cbiAgICByZXR1cm4gYmFja3dhcmRzRXZlcnkoc3VwcG9zaXRpb25zLCAoc3VwcG9zaXRpb24sIGNvbnRleHQsIGZvcndhcmQsIGJhY2ssIGluZGV4KSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy51bmlmeVN1cHBvc2l0aW9uKHN1cHBvc2l0aW9uLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrLCBpbmRleCk7XG4gICAgfSwgY29udGV4dCwgZm9yd2FyZCwgYmFjayk7XG4gIH1cblxuICB1bmlmeVNpZ25hdHVyZUFzc2VydGlvbihzaWduYXR1cmVBc3NlcnRpb24sIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBheGlvbVN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCksIC8vL1xuICAgICAgICAgIHNpZ25hdHVyZUFzc2VydGlvblN0cmluZyA9IHNpZ25hdHVyZUFzc2VydGlvbi5nZXRTdHJpbmcoKTtcblxuICAgIGNvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHtzaWduYXR1cmVBc3NlcnRpb25TdHJpbmd9JyBzaWduYXR1cmUgYXNzZXJ0aW9uIHdpdGggdGhlICcke2F4aW9tU3RyaW5nfScgYXhpb20uLi5gKTtcblxuICAgIGNvbnN0IHRlcm1zID0gc2lnbmF0dXJlQXNzZXJ0aW9uLmdldFRlcm1zKCksXG4gICAgICAgICAgc2lnbmF0dXJlID0gdGhpcy5nZXRTaWduYXR1cmUoKTtcblxuICAgIHJldHVybiBzaWduYXR1cmUudW5pZnlUZXJtcyh0ZXJtcywgY29udGV4dCwgKGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnVuaWZpZWQgdGhlICcke3NpZ25hdHVyZUFzc2VydGlvblN0cmluZ30nIHNpZ25hdHVyZSBhc3NlcnRpb24gd2l0aCB0aGUgJyR7YXhpb21TdHJpbmd9JyBheGlvbS5gKTtcblxuICAgICAgcmV0dXJuIGZvcndhcmQoY29udGV4dCwgYmFjayk7XG4gICAgfSwgYmFjayk7XG4gIH1cblxuICBzdGF0aWMgbmFtZSA9IFwiQXhpb21cIjtcblxuICBzdGF0aWMgZnJvbUpTT04oanNvbiwgY29udGV4dCkgeyByZXR1cm4gQ2xhaW0uZnJvbUpTT04oQXhpb20sIGpzb24sIGNvbnRleHQpOyB9XG59KTtcbiJdLCJuYW1lcyI6WyJicmVha2FibGUiLCJicmVha1BvaW50VXRpbGl0aWVzIiwiY3V0IiwiYWxsIiwiYmFja3dhcmRzRXZlcnkiLCJjb250aW51YXRpb25VdGlsaXRpZXMiLCJkZWZpbmUiLCJBeGlvbSIsIkNsYWltIiwiZ2V0QXhpb21Ob2RlIiwibm9kZSIsImdldE5vZGUiLCJheGlvbU5vZGUiLCJpc1NhdGlzZmlhYmxlIiwic2lnbmF0dXJlIiwiZ2V0U2lnbmF0dXJlIiwic2F0aXNmaWFibGUiLCJ2ZXJpZnkiLCJjb250ZXh0IiwiZm9yd2FyZCIsImJhY2siLCJheGlvbVN0cmluZyIsImdldFN0cmluZyIsInRyYWNlIiwiaXNvbGF0ZSIsImVuY2xvc2UiLCJ2ZXJpZnlQcm9vZiIsImJpbmQiLCJ2ZXJpZnlMYWJlbHMiLCJ2ZXJpZnlTaWduYXR1cmUiLCJ2ZXJpZnlEZWR1Y3Rpb24iLCJ2ZXJpZnlTdXBwb3NpdGlvbnMiLCJheGlvbSIsImFkZEF4aW9tIiwiZGVidWciLCJleGNlcHRpb24iLCJhcHBseSIsInN0ZXAiLCJmYWN0T3JTdWJwcm9vZnMiLCJhcHBseURlZHVjdGlvbiIsImFwcGx5U3VwcG9zaXRpb25zIiwiZGlzY2hhcmdlSHlwb3RoZXNlcyIsInJlY29uY2lsZSIsImNvbXBsZXhTdWJzdGl0dXRpb25zVW5zb2x2ZWQiLCJhcmVDb21wbGV4U3Vic3RpdHV0aW9uc1Vuc29sdmVkIiwidW5pZnlUZXJtcyIsInRlcm1zIiwicXVvdGVkIiwidGVybXNTdHJpbmciLCJ0ZXJtc1N0cmluZ0Zyb21UZXJtcyIsInVuaWZ5Q2xhaW0iLCJjbGFpbSIsImNsYWltU3RyaW5nIiwiZGVkdWN0aW9uIiwiZ2V0RGVkdWN0aW9uIiwidW5pZnlEZWR1Y3Rpb24iLCJzdXBwb3NpdGlvbnMiLCJnZXRTdXBwb3NpdGlvbnMiLCJ1bmlmeVN1cHBvc2l0aW9ucyIsImNvbW1pdCIsImdlbmVyYWxEZWR1Y3Rpb24iLCJzcGVjaWZpY0RlZHVjdGlvbiIsImdlbmVyYWxEZWR1Y3Rpb25TdHJpbmciLCJzcGVjaWZpY0RlZHVjdGlvblN0cmluZyIsInNwZWNpZmljRGVkdWN0aW9uQ29udGV4dCIsImdldENvbnRleHQiLCJnZW5lcmFsRGVkdWN0aW9uQ29udGV4dCIsInNwZWNpZmljQ29udGV4dCIsImdlbmVyYWxDb250ZXh0Iiwiam9pbiIsInN0YXRlbWVudCIsImdldFN0YXRlbWVudCIsInVuaWZ5U3RhdGVtZW50IiwidW5pZnlTdXBwb3NpdGlvbiIsInN1cHBvc2l0aW9uIiwiaW5kZXgiLCJzcGVjaWZpY1N1cHBvc2l0aW9uIiwiZ2V0U3VwcG9zaXRpb24iLCJnZW5lcmFsU3VwcG9zaXRpb24iLCJnZW5lcmFsU3VwcG9zaXRpb25TdHJpbmciLCJzcGVjaWZpY1N1cHBvc2l0aW9uU3RyaW5nIiwic3BlY2lmaWNTdXBwb3NpdGlvbkNvbnRleHQiLCJnZW5lcmFsU3VwcG9zaXRpb25Db250ZXh0Iiwic3BlY2lmaWNTdXBwb3NpdGlvbnMiLCJzcGVjaWZpY1N1cHBvc2l0aW9uc0xlbmd0aCIsImxlbmd0aCIsImdlbmVyYWxTdXBwb3NpdGlvbnMiLCJnZW5lcmFsU3VwcG9zaXRpb25zTGVuZ3RoIiwidW5pZnlTaWduYXR1cmVBc3NlcnRpb24iLCJzaWduYXR1cmVBc3NlcnRpb24iLCJzaWduYXR1cmVBc3NlcnRpb25TdHJpbmciLCJnZXRUZXJtcyIsIm5hbWUiLCJmcm9tSlNPTiIsImpzb24iXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQWFBOzs7ZUFBQTs7O2dDQVgyRDs4REFFekM7MEJBRUs7d0JBQ2M7eUJBQ2E7Ozs7OztBQUVsRCxNQUFNLEVBQUVBLFNBQVMsRUFBRSxHQUFHQyxtQ0FBbUIsRUFDbkMsRUFBRUMs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
@@ -57,10 +57,11 @@ const _default = (0, _elements.define)(class Conjecture extends _claim.default {
57
57
  const conjectureString = this.getString(); ///
58
58
  context.trace(`Applying the '${conjectureString}' conjecture...`);
59
59
  return (0, _context.isolate)((step, factOrSubproofs, context, forward, back)=>{
60
- const applyDeduction = this.applyDeduction.bind(this), applySuppositions = this.applySuppositions.bind(this);
60
+ const applyDeduction = this.applyDeduction.bind(this), applySuppositions = this.applySuppositions.bind(this), dischargeHypotheses = this.dischargeHypotheses.bind(this);
61
61
  return (0, _context.reconcile)((context)=>{
62
62
  return all([
63
63
  applyDeduction,
64
+ dischargeHypotheses,
64
65
  applySuppositions
65
66
  ], step, factOrSubproofs, context, (step, factOrSubproofs, context, back)=>{
66
67
  const complexSubstitutionsUnsolved = context.areComplexSubstitutionsUnsolved();
@@ -88,4 +89,4 @@ const _default = (0, _elements.define)(class Conjecture extends _claim.default {
88
89
  }
89
90
  });
90
91
 
91
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L2NsYWltL2NvbmplY3R1cmUuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IGJyZWFrUG9pbnRVdGlsaXRpZXMsIGNvbnRpbnVhdGlvblV0aWxpdGllcyB9IGZyb20gXCJvY2NhbS1sYW5ndWFnZXNcIjtcblxuaW1wb3J0IENsYWltIGZyb20gXCIuLi9jbGFpbVwiO1xuXG5pbXBvcnQgeyBkZWZpbmUgfSBmcm9tIFwiLi4vLi4vZWxlbWVudHNcIjtcbmltcG9ydCB7IGlzb2xhdGUsIGVuY2xvc2UsIHJlY29uY2lsZSB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvY29udGV4dFwiO1xuXG5jb25zdCB7IGN1dCwgYWxsIH0gPSBjb250aW51YXRpb25VdGlsaXRpZXMsXG4gICAgICB7IGJyZWFrYWJsZSB9ID0gYnJlYWtQb2ludFV0aWxpdGllcztcblxuZXhwb3J0IGRlZmF1bHQgZGVmaW5lKGNsYXNzIENvbmplY3R1cmUgZXh0ZW5kcyBDbGFpbSB7XG4gIGdldENvbmplY3R1cmVOb2RlKCkge1xuICAgIGNvbnN0IG5vZGUgPSB0aGlzLmdldE5vZGUoKSxcbiAgICAgICAgICBjb25qZWN0dXJlTm9kZSA9IG5vZGU7ICAvLy9cblxuICAgIHJldHVybiBjb25qZWN0dXJlTm9kZTtcbiAgfVxuXG4gIHZlcmlmeSA9IGJyZWFrYWJsZShmdW5jdGlvbiAoY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGZvcndhcmQgPSBjdXQoZm9yd2FyZCwgYmFjayk7IC8vL1xuXG4gICAgY29uc3QgY29uamVjdHVyZVN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7Y29uamVjdHVyZVN0cmluZ30nIGNvbmplY3R1cmUuLi5gKTtcblxuICAgIHJldHVybiBpc29sYXRlKChjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSA9PiB7XG4gICAgICByZXR1cm4gZW5jbG9zZSgoY29udGV4dCkgPT4ge1xuICAgICAgICBjb25zdCB2ZXJpZnlQcm9vZiA9IHRoaXMudmVyaWZ5UHJvb2YuYmluZCh0aGlzKSxcbiAgICAgICAgICAgICAgdmVyaWZ5TGFiZWxzID0gdGhpcy52ZXJpZnlMYWJlbHMuYmluZCh0aGlzKSxcbiAgICAgICAgICAgICAgdmVyaWZ5RGVkdWN0aW9uID0gdGhpcy52ZXJpZnlEZWR1Y3Rpb24uYmluZCh0aGlzKSxcbiAgICAgICAgICAgICAgdmVyaWZ5U3VwcG9zaXRpb25zID0gdGhpcy52ZXJpZnlTdXBwb3NpdGlvbnMuYmluZCh0aGlzKTtcblxuICAgICAgICByZXR1cm4gYWxsKFtcbiAgICAgICAgICB2ZXJpZnlMYWJlbHMsXG4gICAgICAgICAgdmVyaWZ5U3VwcG9zaXRpb25zLFxuICAgICAgICAgIHZlcmlmeURlZHVjdGlvbixcbiAgICAgICAgICB2ZXJpZnlQcm9vZlxuICAgICAgICBdLCBjb250ZXh0LCAoY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgICAgIHJldHVybiBmb3J3YXJkKGJhY2spO1xuICAgICAgICB9LCBiYWNrKTtcbiAgICAgIH0sIGNvbnRleHQpO1xuICAgIH0sIGNvbnRleHQsIChjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICBjb25zdCBjb25qZWN0dXJlID0gdGhpczsgLy8vXG5cbiAgICAgIGNvbnRleHQuYWRkQ29uamVjdHVyZShjb25qZWN0dXJlKTtcblxuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke2NvbmplY3R1cmVTdHJpbmd9JyBjb25qZWN0dXJlLmApO1xuXG4gICAgICByZXR1cm4gZm9yd2FyZChjb250ZXh0LCBiYWNrKTtcbiAgICB9LCAoZXhjZXB0aW9uKSA9PiB7XG4gICAgICBpZiAoZXhjZXB0aW9uKSB7XG4gICAgICAgIHJldHVybiBiYWNrKGV4Y2VwdGlvbik7XG4gICAgICB9XG5cbiAgICAgIGNvbnRleHQudHJhY2UoYFVuYWJsZSB0byB2ZXJpZnkgdGhlICcke2NvbmplY3R1cmVTdHJpbmd9JyBjb25qZWN0dXJlLmApO1xuXG4gICAgICByZXR1cm4gYmFjaygpO1xuICAgIH0pO1xuICB9KTtcblxuICBhcHBseSA9IGJyZWFrYWJsZShmdW5jdGlvbiAoc3RlcCwgZmFjdE9yU3VicHJvb2ZzLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgZm9yd2FyZCA9IGN1dChmb3J3YXJkLCBiYWNrKTsgLy8vXG5cbiAgICBjb25zdCBjb25qZWN0dXJlU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgQXBwbHlpbmcgdGhlICcke2NvbmplY3R1cmVTdHJpbmd9JyBjb25qZWN0dXJlLi4uYCk7XG5cbiAgICByZXR1cm4gaXNvbGF0ZSgoc3RlcCwgZmFjdE9yU3VicHJvb2ZzLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSA9PiB7XG4gICAgICBjb25zdCBhcHBseURlZHVjdGlvbiA9IHRoaXMuYXBwbHlEZWR1Y3Rpb24uYmluZCh0aGlzKSxcbiAgICAgICAgICAgIGFwcGx5U3VwcG9zaXRpb25zID0gdGhpcy5hcHBseVN1cHBvc2l0aW9ucy5iaW5kKHRoaXMpO1xuXG4gICAgICByZXR1cm4gcmVjb25jaWxlKChjb250ZXh0KSA9PiB7XG4gICAgICAgIHJldHVybiBhbGwoW1xuICAgICAgICAgIGFwcGx5RGVkdWN0aW9uLFxuICAgICAgICAgIGFwcGx5U3VwcG9zaXRpb25zXG4gICAgICAgIF0sIHN0ZXAsIGZhY3RPclN1YnByb29mcywgY29udGV4dCwgKHN0ZXAsIGZhY3RPclN1YnByb29mcywgY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgICAgIGNvbnN0IGNvbXBsZXhTdWJzdGl0dXRpb25zVW5zb2x2ZWQgPSBjb250ZXh0LmFyZUNvbXBsZXhTdWJzdGl0dXRpb25zVW5zb2x2ZWQoKTtcblxuICAgICAgICAgIGlmIChjb21wbGV4U3Vic3RpdHV0aW9uc1Vuc29sdmVkKSB7XG4gICAgICAgICAgICBjb250ZXh0LmRlYnVnKGBUaGVyZSBhcmUgdW5zb2x2ZWQgY29tcGxleCBzdWJzdGl0dXRpb25zLmApO1xuXG4gICAgICAgICAgICByZXR1cm4gYmFjaygpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiBmb3J3YXJkKGJhY2spO1xuICAgICAgICB9LCBiYWNrKTtcbiAgICAgIH0sIGNvbnRleHQpXG4gICAgfSwgc3RlcCwgZmFjdE9yU3VicHJvb2ZzLCBjb250ZXh0LCAoc3RlcCwgZmFjdE9yU3VicHJvb2ZzLCBjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi5hcHBsaWVkIHRoZSAnJHtjb25qZWN0dXJlU3RyaW5nfScgY29uamVjdHVyZS5gKTtcblxuICAgICAgcmV0dXJuIGZvcndhcmQoY29udGV4dCwgYmFjayk7XG4gICAgfSwgKGV4Y2VwdGlvbikgPT4ge1xuICAgICAgaWYgKGV4Y2VwdGlvbikge1xuICAgICAgICByZXR1cm4gYmFjayhleGNlcHRpb24pO1xuICAgICAgfVxuXG4gICAgICBjb250ZXh0LnRyYWNlKGBVbmFibGUgdG8gYXBwbHkgdGhlICcke2NvbmplY3R1cmVTdHJpbmd9JyBjb25qZWN0dXJlLmApO1xuXG4gICAgICByZXR1cm4gYmFjaygpO1xuICAgIH0pO1xuICB9KTtcblxuICBzdGF0aWMgbmFtZSA9IFwiQ29uamVjdHVyZVwiO1xuXG4gIHN0YXRpYyBmcm9tSlNPTihqc29uLCBjb250ZXh0KSB7IHJldHVybiBDbGFpbS5mcm9tSlNPTihDb25qZWN0dXJlLCBqc29uLCBjb250ZXh0KTsgfVxufSk7XG4iXSwibmFtZXMiOlsiY3V0IiwiYWxsIiwiY29udGludWF0aW9uVXRpbGl0aWVzIiwiYnJlYWthYmxlIiwiYnJlYWtQb2ludFV0aWxpdGllcyIsImRlZmluZSIsIkNvbmplY3R1cmUiLCJDbGFpbSIsImdldENvbmplY3R1cmVOb2RlIiwibm9kZSIsImdldE5vZGUiLCJjb25qZWN0dXJlTm9kZSIsInZlcmlmeSIsImNvbnRleHQiLCJmb3J3YXJkIiwiYmFjayIsImNvbmplY3R1cmVTdHJpbmciLCJnZXRTdHJpbmciLCJ0cmFjZSIsImlzb2xhdGUiLCJlbmNsb3NlIiwidmVyaWZ5UHJvb2YiLCJiaW5kIiwidmVyaWZ5TGFiZWxzIiwidmVyaWZ5RGVkdWN0aW9uIiwidmVyaWZ5U3VwcG9zaXRpb25zIiwiY29uamVjdHVyZSIsImFkZENvbmplY3R1cmUiLCJkZWJ1ZyIsImV4Y2VwdGlvbiIsImFwcGx5Iiwic3RlcCIsImZhY3RPclN1YnByb29mcyIsImFwcGx5RGVkdWN0aW9uIiwiYXBwbHlTdXBwb3NpdGlvbnMiLCJyZWNvbmNpbGUiLCJjb21wbGV4U3Vic3RpdHV0aW9uc1Vuc29sdmVkIiwiYXJlQ29tcGxleFN1YnN0aXR1dGlvbnNVbnNvbHZlZCIsIm5hbWUiLCJmcm9tSlNPTiIsImpzb24iXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQVlBOzs7ZUFBQTs7O2dDQVYyRDs4REFFekM7MEJBRUs7eUJBQ3FCOzs7Ozs7QUFFNUMsTUFBTSxFQUFFQSxHQUFHLEVBQUVDLEdBQUcsRUFBRSxHQUFHQyxxQ0FBcUIsRUFDcEMsRUFBRUMsU0FBUyxFQUFFLEdBQUdDLG1DQUFtQjtNQUV6QyxXQUFlQyxJQUFBQSxnQkFBTSxFQUFDLE1BQU1DLG1CQUFtQkMsY0FBSztJQUNsREMsb0JBQW9CO1FBQ2xCLE1BQU1DLE9BQU8sSUFBSSxDQUFDQyxPQUFPLElBQ25CQyxpQkFBaUJGLE1BQU8sR0FBRztRQUVqQyxPQUFPRTtJQUNUO0lBRUFDLFNBQVNULFVBQVUsU0FBVVUsT0FBTyxFQUFFQyxPQUFPLEVBQUVDLElBQUk7UUFDakRELFVBQVVkLElBQUljLFNBQVNDLE9BQU8sR0FBRztRQUVqQyxNQUFNQyxtQkFBbUIsSUFBSSxDQUFDQyxTQUFTLElBQUssR0FBRztRQUUvQ0osUUFBUUssS0FBSyxDQUFDLENBQUMsZUFBZSxFQUFFRixpQkFBaUIsZUFBZSxDQUFDO1FBRWpFLE9BQU9HLElBQUFBLGdCQUFPLEVBQUMsQ0FBQ04sU0FBU0MsU0FB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
92
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L2NsYWltL2NvbmplY3R1cmUuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IGJyZWFrUG9pbnRVdGlsaXRpZXMsIGNvbnRpbnVhdGlvblV0aWxpdGllcyB9IGZyb20gXCJvY2NhbS1sYW5ndWFnZXNcIjtcblxuaW1wb3J0IENsYWltIGZyb20gXCIuLi9jbGFpbVwiO1xuXG5pbXBvcnQgeyBkZWZpbmUgfSBmcm9tIFwiLi4vLi4vZWxlbWVudHNcIjtcbmltcG9ydCB7IGlzb2xhdGUsIGVuY2xvc2UsIHJlY29uY2lsZSB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvY29udGV4dFwiO1xuXG5jb25zdCB7IGN1dCwgYWxsIH0gPSBjb250aW51YXRpb25VdGlsaXRpZXMsXG4gICAgICB7IGJyZWFrYWJsZSB9ID0gYnJlYWtQb2ludFV0aWxpdGllcztcblxuZXhwb3J0IGRlZmF1bHQgZGVmaW5lKGNsYXNzIENvbmplY3R1cmUgZXh0ZW5kcyBDbGFpbSB7XG4gIGdldENvbmplY3R1cmVOb2RlKCkge1xuICAgIGNvbnN0IG5vZGUgPSB0aGlzLmdldE5vZGUoKSxcbiAgICAgICAgICBjb25qZWN0dXJlTm9kZSA9IG5vZGU7ICAvLy9cblxuICAgIHJldHVybiBjb25qZWN0dXJlTm9kZTtcbiAgfVxuXG4gIHZlcmlmeSA9IGJyZWFrYWJsZShmdW5jdGlvbiAoY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGZvcndhcmQgPSBjdXQoZm9yd2FyZCwgYmFjayk7IC8vL1xuXG4gICAgY29uc3QgY29uamVjdHVyZVN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7Y29uamVjdHVyZVN0cmluZ30nIGNvbmplY3R1cmUuLi5gKTtcblxuICAgIHJldHVybiBpc29sYXRlKChjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSA9PiB7XG4gICAgICByZXR1cm4gZW5jbG9zZSgoY29udGV4dCkgPT4ge1xuICAgICAgICBjb25zdCB2ZXJpZnlQcm9vZiA9IHRoaXMudmVyaWZ5UHJvb2YuYmluZCh0aGlzKSxcbiAgICAgICAgICAgICAgdmVyaWZ5TGFiZWxzID0gdGhpcy52ZXJpZnlMYWJlbHMuYmluZCh0aGlzKSxcbiAgICAgICAgICAgICAgdmVyaWZ5RGVkdWN0aW9uID0gdGhpcy52ZXJpZnlEZWR1Y3Rpb24uYmluZCh0aGlzKSxcbiAgICAgICAgICAgICAgdmVyaWZ5U3VwcG9zaXRpb25zID0gdGhpcy52ZXJpZnlTdXBwb3NpdGlvbnMuYmluZCh0aGlzKTtcblxuICAgICAgICByZXR1cm4gYWxsKFtcbiAgICAgICAgICB2ZXJpZnlMYWJlbHMsXG4gICAgICAgICAgdmVyaWZ5U3VwcG9zaXRpb25zLFxuICAgICAgICAgIHZlcmlmeURlZHVjdGlvbixcbiAgICAgICAgICB2ZXJpZnlQcm9vZlxuICAgICAgICBdLCBjb250ZXh0LCAoY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgICAgIHJldHVybiBmb3J3YXJkKGJhY2spO1xuICAgICAgICB9LCBiYWNrKTtcbiAgICAgIH0sIGNvbnRleHQpO1xuICAgIH0sIGNvbnRleHQsIChjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICBjb25zdCBjb25qZWN0dXJlID0gdGhpczsgLy8vXG5cbiAgICAgIGNvbnRleHQuYWRkQ29uamVjdHVyZShjb25qZWN0dXJlKTtcblxuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke2NvbmplY3R1cmVTdHJpbmd9JyBjb25qZWN0dXJlLmApO1xuXG4gICAgICByZXR1cm4gZm9yd2FyZChjb250ZXh0LCBiYWNrKTtcbiAgICB9LCAoZXhjZXB0aW9uKSA9PiB7XG4gICAgICBpZiAoZXhjZXB0aW9uKSB7XG4gICAgICAgIHJldHVybiBiYWNrKGV4Y2VwdGlvbik7XG4gICAgICB9XG5cbiAgICAgIGNvbnRleHQudHJhY2UoYFVuYWJsZSB0byB2ZXJpZnkgdGhlICcke2NvbmplY3R1cmVTdHJpbmd9JyBjb25qZWN0dXJlLmApO1xuXG4gICAgICByZXR1cm4gYmFjaygpO1xuICAgIH0pO1xuICB9KTtcblxuICBhcHBseSA9IGJyZWFrYWJsZShmdW5jdGlvbiAoc3RlcCwgZmFjdE9yU3VicHJvb2ZzLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgZm9yd2FyZCA9IGN1dChmb3J3YXJkLCBiYWNrKTsgLy8vXG5cbiAgICBjb25zdCBjb25qZWN0dXJlU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgQXBwbHlpbmcgdGhlICcke2NvbmplY3R1cmVTdHJpbmd9JyBjb25qZWN0dXJlLi4uYCk7XG5cbiAgICByZXR1cm4gaXNvbGF0ZSgoc3RlcCwgZmFjdE9yU3VicHJvb2ZzLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSA9PiB7XG4gICAgICBjb25zdCBhcHBseURlZHVjdGlvbiA9IHRoaXMuYXBwbHlEZWR1Y3Rpb24uYmluZCh0aGlzKSxcbiAgICAgICAgICAgIGFwcGx5U3VwcG9zaXRpb25zID0gdGhpcy5hcHBseVN1cHBvc2l0aW9ucy5iaW5kKHRoaXMpLFxuICAgICAgICAgICAgZGlzY2hhcmdlSHlwb3RoZXNlcyA9IHRoaXMuZGlzY2hhcmdlSHlwb3RoZXNlcy5iaW5kKHRoaXMpO1xuXG4gICAgICByZXR1cm4gcmVjb25jaWxlKChjb250ZXh0KSA9PiB7XG4gICAgICAgIHJldHVybiBhbGwoW1xuICAgICAgICAgIGFwcGx5RGVkdWN0aW9uLFxuICAgICAgICAgIGRpc2NoYXJnZUh5cG90aGVzZXMsXG4gICAgICAgICAgYXBwbHlTdXBwb3NpdGlvbnNcbiAgICAgICAgXSwgc3RlcCwgZmFjdE9yU3VicHJvb2ZzLCBjb250ZXh0LCAoc3RlcCwgZmFjdE9yU3VicHJvb2ZzLCBjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICAgICAgY29uc3QgY29tcGxleFN1YnN0aXR1dGlvbnNVbnNvbHZlZCA9IGNvbnRleHQuYXJlQ29tcGxleFN1YnN0aXR1dGlvbnNVbnNvbHZlZCgpO1xuXG4gICAgICAgICAgaWYgKGNvbXBsZXhTdWJzdGl0dXRpb25zVW5zb2x2ZWQpIHtcbiAgICAgICAgICAgIGNvbnRleHQuZGVidWcoYFRoZXJlIGFyZSB1bnNvbHZlZCBjb21wbGV4IHN1YnN0aXR1dGlvbnMuYCk7XG5cbiAgICAgICAgICAgIHJldHVybiBiYWNrKCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIGZvcndhcmQoYmFjayk7XG4gICAgICAgIH0sIGJhY2spO1xuICAgICAgfSwgY29udGV4dClcbiAgICB9LCBzdGVwLCBmYWN0T3JTdWJwcm9vZnMsIGNvbnRleHQsIChzdGVwLCBmYWN0T3JTdWJwcm9vZnMsIGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLmFwcGxpZWQgdGhlICcke2NvbmplY3R1cmVTdHJpbmd9JyBjb25qZWN0dXJlLmApO1xuXG4gICAgICByZXR1cm4gZm9yd2FyZChjb250ZXh0LCBiYWNrKTtcbiAgICB9LCAoZXhjZXB0aW9uKSA9PiB7XG4gICAgICBpZiAoZXhjZXB0aW9uKSB7XG4gICAgICAgIHJldHVybiBiYWNrKGV4Y2VwdGlvbik7XG4gICAgICB9XG5cbiAgICAgIGNvbnRleHQudHJhY2UoYFVuYWJsZSB0byBhcHBseSB0aGUgJyR7Y29uamVjdHVyZVN0cmluZ30nIGNvbmplY3R1cmUuYCk7XG5cbiAgICAgIHJldHVybiBiYWNrKCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIHN0YXRpYyBuYW1lID0gXCJDb25qZWN0dXJlXCI7XG5cbiAgc3RhdGljIGZyb21KU09OKGpzb24sIGNvbnRleHQpIHsgcmV0dXJuIENsYWltLmZyb21KU09OKENvbmplY3R1cmUsIGpzb24sIGNvbnRleHQpOyB9XG59KTtcbiJdLCJuYW1lcyI6WyJjdXQiLCJhbGwiLCJjb250aW51YXRpb25VdGlsaXRpZXMiLCJicmVha2FibGUiLCJicmVha1BvaW50VXRpbGl0aWVzIiwiZGVmaW5lIiwiQ29uamVjdHVyZSIsIkNsYWltIiwiZ2V0Q29uamVjdHVyZU5vZGUiLCJub2RlIiwiZ2V0Tm9kZSIsImNvbmplY3R1cmVOb2RlIiwidmVyaWZ5IiwiY29udGV4dCIsImZvcndhcmQiLCJiYWNrIiwiY29uamVjdHVyZVN0cmluZyIsImdldFN0cmluZyIsInRyYWNlIiwiaXNvbGF0ZSIsImVuY2xvc2UiLCJ2ZXJpZnlQcm9vZiIsImJpbmQiLCJ2ZXJpZnlMYWJlbHMiLCJ2ZXJpZnlEZWR1Y3Rpb24iLCJ2ZXJpZnlTdXBwb3NpdGlvbnMiLCJjb25qZWN0dXJlIiwiYWRkQ29uamVjdHVyZSIsImRlYnVnIiwiZXhjZXB0aW9uIiwiYXBwbHkiLCJzdGVwIiwiZmFjdE9yU3VicHJvb2ZzIiwiYXBwbHlEZWR1Y3Rpb24iLCJhcHBseVN1cHBvc2l0aW9ucyIsImRpc2NoYXJnZUh5cG90aGVzZXMiLCJyZWNvbmNpbGUiLCJjb21wbGV4U3Vic3RpdHV0aW9uc1Vuc29sdmVkIiwiYXJlQ29tcGxleFN1YnN0aXR1dGlvbnNVbnNvbHZlZCIsIm5hbWUiLCJmcm9tSlNPTiIsImpzb24iXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQVlBOzs7ZUFBQTs7O2dDQVYyRDs4REFFekM7MEJBRUs7eUJBQ3FCOzs7Ozs7QUFFNUMsTUFBTSxFQUFFQSxHQUFHLEVBQUVDLEdBQUcsRUFBRSxHQUFHQyxxQ0FBcUIsRUFDcEMsRUFBRUMsU0FBUyxFQUFFLEdBQUdDLG1DQUFtQjtNQUV6QyxXQUFlQyxJQUFBQSxnQkFBTSxFQUFDLE1BQU1DLG1CQUFtQkMsY0FBSztJQUNsREMsb0JBQW9CO1FBQ2xCLE1BQU1DLE9BQU8sSUFBSSxDQUFDQyxPQUFPLElBQ25CQyxpQkFBaUJGLE1BQU8sR0FBRztRQUVqQyxPQUFPRTtJQUNUO0lBRUFDLFNBQVNULFVBQVUsU0FBVVUsT0FBTyxFQUFFQyxPQUFPLEVBQUVDLElBQUk7UUFDakRELFVBQVVkLElBQUljLFNBQVNDLE9BQU8sR0FBRztRQUVqQyxNQUFNQyxtQkFBbUIs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
@@ -57,10 +57,11 @@ const _default = (0, _elements.define)(class Lemma extends _claim.default {
57
57
  const lemmaString = this.getString(); ///
58
58
  context.trace(`Applying the '${lemmaString}' lemma...`);
59
59
  return (0, _context.isolate)((step, factOrSubproofs, context, forward, back)=>{
60
- const applyDeduction = this.applyDeduction.bind(this), applySuppositions = this.applySuppositions.bind(this);
60
+ const applyDeduction = this.applyDeduction.bind(this), applySuppositions = this.applySuppositions.bind(this), dischargeHypotheses = this.dischargeHypotheses.bind(this);
61
61
  return (0, _context.reconcile)((context)=>{
62
62
  return all([
63
63
  applyDeduction,
64
+ dischargeHypotheses,
64
65
  applySuppositions
65
66
  ], step, factOrSubproofs, context, (step, factOrSubproofs, context, back)=>{
66
67
  const complexSubstitutionsUnsolved = context.areComplexSubstitutionsUnsolved();
@@ -85,4 +86,4 @@ const _default = (0, _elements.define)(class Lemma extends _claim.default {
85
86
  static name = "Lemma";
86
87
  });
87
88
 
88
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L2NsYWltL2xlbW1hLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBicmVha1BvaW50VXRpbGl0aWVzLCBjb250aW51YXRpb25VdGlsaXRpZXMgfSBmcm9tIFwib2NjYW0tbGFuZ3VhZ2VzXCI7XG5cbmltcG9ydCBDbGFpbSBmcm9tIFwiLi4vY2xhaW1cIjtcblxuaW1wb3J0IHsgZGVmaW5lIH0gZnJvbSBcIi4uLy4uL2VsZW1lbnRzXCI7XG5pbXBvcnQgeyBpc29sYXRlLCBlbmNsb3NlLCByZWNvbmNpbGUgfSBmcm9tIFwiLi4vLi4vdXRpbGl0aWVzL2NvbnRleHRcIjtcblxuY29uc3QgeyBjdXQsIGFsbCB9ID0gY29udGludWF0aW9uVXRpbGl0aWVzLFxuICAgICAgeyBicmVha2FibGUgfSA9IGJyZWFrUG9pbnRVdGlsaXRpZXM7XG5cbmV4cG9ydCBkZWZhdWx0IGRlZmluZShjbGFzcyBMZW1tYSBleHRlbmRzIENsYWltIHtcbiAgZ2V0TGVtbWFOb2RlKCkge1xuICAgIGNvbnN0IG5vZGUgPSB0aGlzLmdldE5vZGUoKSxcbiAgICAgICAgICBsZW1tYU5vZGUgPSBub2RlOyAvLy9cblxuICAgIHJldHVybiBsZW1tYU5vZGU7XG4gIH1cblxuICB2ZXJpZnkgPSBicmVha2FibGUoZnVuY3Rpb24gKGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBmb3J3YXJkID0gY3V0KGZvcndhcmQsIGJhY2spOyAvLy9cblxuICAgIGNvbnN0IGxlbW1hU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHtsZW1tYVN0cmluZ30nIGxlbW1hLi4uYCk7XG5cbiAgICByZXR1cm4gaXNvbGF0ZSgoY29udGV4dCwgZm9yd2FyZCwgYmFjaykgPT4ge1xuICAgICAgcmV0dXJuIGVuY2xvc2UoKGNvbnRleHQpID0+IHtcbiAgICAgICAgY29uc3QgdmVyaWZ5UHJvb2YgPSB0aGlzLnZlcmlmeVByb29mLmJpbmQodGhpcyksXG4gICAgICAgICAgICAgIHZlcmlmeUxhYmVscyA9IHRoaXMudmVyaWZ5TGFiZWxzLmJpbmQodGhpcyksXG4gICAgICAgICAgICAgIHZlcmlmeURlZHVjdGlvbiA9IHRoaXMudmVyaWZ5RGVkdWN0aW9uLmJpbmQodGhpcyksXG4gICAgICAgICAgICAgIHZlcmlmeVN1cHBvc2l0aW9ucyA9IHRoaXMudmVyaWZ5U3VwcG9zaXRpb25zLmJpbmQodGhpcyk7XG5cbiAgICAgICAgcmV0dXJuIGFsbChbXG4gICAgICAgICAgdmVyaWZ5TGFiZWxzLFxuICAgICAgICAgIHZlcmlmeVN1cHBvc2l0aW9ucyxcbiAgICAgICAgICB2ZXJpZnlEZWR1Y3Rpb24sXG4gICAgICAgICAgdmVyaWZ5UHJvb2ZcbiAgICAgICAgXSwgY29udGV4dCwgKGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgICAgICByZXR1cm4gZm9yd2FyZChiYWNrKTtcbiAgICAgICAgfSwgYmFjayk7XG4gICAgICB9LCBjb250ZXh0KTtcbiAgICB9LCBjb250ZXh0LCAoY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgY29uc3QgbGVtbWEgPSB0aGlzOyAvLy9cblxuICAgICAgY29udGV4dC5hZGRMZW1tYShsZW1tYSk7XG5cbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHtsZW1tYVN0cmluZ30nIGxlbW1hLmApO1xuXG4gICAgICByZXR1cm4gZm9yd2FyZChjb250ZXh0LCBiYWNrKTtcbiAgICB9LCAoZXhjZXB0aW9uKSA9PiB7XG4gICAgICBpZiAoZXhjZXB0aW9uKSB7XG4gICAgICAgIHJldHVybiBiYWNrKGV4Y2VwdGlvbik7XG4gICAgICB9XG5cbiAgICAgIGNvbnRleHQudHJhY2UoYFVuYWJsZSB0byB2ZXJpZnkgdGhlICcke2xlbW1hU3RyaW5nfScgbGVtbWEuYCk7XG5cbiAgICAgIHJldHVybiBiYWNrKCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGFwcGx5ID0gYnJlYWthYmxlKGZ1bmN0aW9uIChzdGVwLCBmYWN0T3JTdWJwcm9vZnMsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBmb3J3YXJkID0gY3V0KGZvcndhcmQsIGJhY2spOyAvLy9cblxuICAgIGNvbnN0IGxlbW1hU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgQXBwbHlpbmcgdGhlICcke2xlbW1hU3RyaW5nfScgbGVtbWEuLi5gKTtcblxuICAgIHJldHVybiBpc29sYXRlKChzdGVwLCBmYWN0T3JTdWJwcm9vZnMsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spID0+IHtcbiAgICAgIGNvbnN0IGFwcGx5RGVkdWN0aW9uID0gdGhpcy5hcHBseURlZHVjdGlvbi5iaW5kKHRoaXMpLFxuICAgICAgICAgICAgYXBwbHlTdXBwb3NpdGlvbnMgPSB0aGlzLmFwcGx5U3VwcG9zaXRpb25zLmJpbmQodGhpcyk7XG5cbiAgICAgIHJldHVybiByZWNvbmNpbGUoKGNvbnRleHQpID0+IHtcbiAgICAgICAgcmV0dXJuIGFsbChbXG4gICAgICAgICAgYXBwbHlEZWR1Y3Rpb24sXG4gICAgICAgICAgYXBwbHlTdXBwb3NpdGlvbnNcbiAgICAgICAgXSwgc3RlcCwgZmFjdE9yU3VicHJvb2ZzLCBjb250ZXh0LCAoc3RlcCwgZmFjdE9yU3VicHJvb2ZzLCBjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICAgICAgY29uc3QgY29tcGxleFN1YnN0aXR1dGlvbnNVbnNvbHZlZCA9IGNvbnRleHQuYXJlQ29tcGxleFN1YnN0aXR1dGlvbnNVbnNvbHZlZCgpO1xuXG4gICAgICAgICAgaWYgKGNvbXBsZXhTdWJzdGl0dXRpb25zVW5zb2x2ZWQpIHtcbiAgICAgICAgICAgIGNvbnRleHQuZGVidWcoYFRoZXJlIGFyZSB1bnNvbHZlZCBjb21wbGV4IHN1YnN0aXR1dGlvbnMuYCk7XG5cbiAgICAgICAgICAgIHJldHVybiBiYWNrKCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIGZvcndhcmQoYmFjayk7XG4gICAgICAgIH0sIGJhY2spO1xuICAgICAgfSwgY29udGV4dClcbiAgICB9LCBzdGVwLCBmYWN0T3JTdWJwcm9vZnMsIGNvbnRleHQsIChzdGVwLCBmYWN0T3JTdWJwcm9vZnMsIGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLmFwcGxpZWQgdGhlICcke2xlbW1hU3RyaW5nfScgbGVtbWEuYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKGNvbnRleHQsIGJhY2spO1xuICAgIH0sIChleGNlcHRpb24pID0+IHtcbiAgICAgIGlmIChleGNlcHRpb24pIHtcbiAgICAgICAgcmV0dXJuIGJhY2soZXhjZXB0aW9uKTtcbiAgICAgIH1cblxuICAgICAgY29udGV4dC50cmFjZShgVW5hYmxlIHRvIGFwcGx5IHRoZSAnJHtsZW1tYVN0cmluZ30nIGxlbW1hLmApO1xuXG4gICAgICByZXR1cm4gYmFjaygpO1xuICAgIH0pO1xuICB9KTtcblxuICBzdGF0aWMgbmFtZSA9IFwiTGVtbWFcIjtcbn0pO1xuIl0sIm5hbWVzIjpbImN1dCIsImFsbCIsImNvbnRpbnVhdGlvblV0aWxpdGllcyIsImJyZWFrYWJsZSIsImJyZWFrUG9pbnRVdGlsaXRpZXMiLCJkZWZpbmUiLCJMZW1tYSIsIkNsYWltIiwiZ2V0TGVtbWFOb2RlIiwibm9kZSIsImdldE5vZGUiLCJsZW1tYU5vZGUiLCJ2ZXJpZnkiLCJjb250ZXh0IiwiZm9yd2FyZCIsImJhY2siLCJsZW1tYVN0cmluZyIsImdldFN0cmluZyIsInRyYWNlIiwiaXNvbGF0ZSIsImVuY2xvc2UiLCJ2ZXJpZnlQcm9vZiIsImJpbmQiLCJ2ZXJpZnlMYWJlbHMiLCJ2ZXJpZnlEZWR1Y3Rpb24iLCJ2ZXJpZnlTdXBwb3NpdGlvbnMiLCJsZW1tYSIsImFkZExlbW1hIiwiZGVidWciLCJleGNlcHRpb24iLCJhcHBseSIsInN0ZXAiLCJmYWN0T3JTdWJwcm9vZnMiLCJhcHBseURlZHVjdGlvbiIsImFwcGx5U3VwcG9zaXRpb25zIiwicmVjb25jaWxlIiwiY29tcGxleFN1YnN0aXR1dGlvbnNVbnNvbHZlZCIsImFyZUNvbXBsZXhTdWJzdGl0dXRpb25zVW5zb2x2ZWQiLCJuYW1lIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFZQTs7O2VBQUE7OztnQ0FWMkQ7OERBRXpDOzBCQUVLO3lCQUNxQjs7Ozs7O0FBRTVDLE1BQU0sRUFBRUEsR0FBRyxFQUFFQyxHQUFHLEVBQUUsR0FBR0MscUNBQXFCLEVBQ3BDLEVBQUVDLFNBQVMsRUFBRSxHQUFHQyxtQ0FBbUI7TUFFekMsV0FBZUMsSUFBQUEsZ0JBQU0sRUFBQyxNQUFNQyxjQUFjQyxjQUFLO0lBQzdDQyxlQUFlO1FBQ2IsTUFBTUMsT0FBTyxJQUFJLENBQUNDLE9BQU8sSUFDbkJDLFlBQVlGLE1BQU0sR0FBRztRQUUzQixPQUFPRTtJQUNUO0lBRUFDLFNBQVNULFVBQVUsU0FBVVUsT0FBTyxFQUFFQyxPQUFPLEVBQUVDLElBQUk7UUFDakRELFVBQVVkLElBQUljLFNBQVNDLE9BQU8sR0FBRztRQUVqQyxNQUFNQyxjQUFjLElBQUksQ0FBQ0MsU0FBUyxJQUFLLEdBQUc7UUFFMUNKLFFBQVFLLEtBQUssQ0FBQyxDQUFDLGVBQWUsRUFBRUYsWUFBWSxVQUFVLENBQUM7UUFFdkQsT0FBT0csSUFBQUEsZ0JBQU8sRUFBQyxDQUFDTixTQUFTQyxTQUFTQztZQUNoQyxPQUFPSyxJQUFBQSxnQkFBTyxFQUFDLENBQUNQO2dCQUNkLE1BQU1RLGNBQWMsSUFBSSxDQUFDQSxXQUFXLENBQUNDLElBQUksQ0FBQyxJQUFJLEdBQ3hDQyxlQUFlLElBQUksQ0FBQ0EsWUFBWSxDQUFDRCxJQUFJLENBQUMsSUFBSSxHQUMxQ0Usa0JBQWtCLElBQUksQ0FBQ0EsZUFBZSxDQUFDRixJQUFJLENBQUMsSUFBSSxHQUNoREcscUJBQXFCLElBQUksQ0FBQ0Esa0JBQWtCLENBQUNILElBQUksQ0FBQyxJQUFJO2dCQUU1RCxPQUFPckIsSUFBSTtvQkFDVHNCO29CQUNBRTtvQkFDQUQ7b0JBQ0FIO2lCQUNELEVBQUVSLFNBQVMsQ0FBQ0EsU0FBU0U7b0JBQ3BCLE9BQU9ELFFBQVFDO2dCQUNqQixHQUFHQTtZQUNMLEdBQUdGO1FBQ0wsR0FBR0EsU0FBUyxDQUFDQSxTQUFTRTtZQUNwQixNQUFNVyxRQUFRLElBQUksRUFBRSxHQUFHO1lBRXZCYixRQUFRYyxRQUFRLENBQUNEO1lBRWpCYixRQUFRZSxLQUFLLENBQUMsQ0FBQyxpQkFBaUIsRUFBRVosWUFBWSxRQUFRLENBQUM7WUFFdkQsT0FBT0YsUUFBUUQsU0FBU0U7UUFDMUIsR0FBRyxDQUFDYztZQUNGLElBQUlBLFdBQVc7Z0JBQ2IsT0FBT2QsS0FBS2M7WUFDZDtZQUVBaEIsUUFBUUssS0FBSyxDQUFDLENBQUMsc0JBQXNCLEVBQUVGLFlBQVksUUFBUSxDQUFDO1lBRTVELE9BQU9EO1FBQ1Q7SUFDRixHQUFHO0lBRUhlLFFBQVEzQixVQUFVLFNBQVU0QixJQUFJLEVBQUVDLGVBQWUsRUFBRW5CLE9BQU8sRUFBRUMsT0FBTyxFQUFFQyxJQUFJO1FBQ3ZFRCxVQUFVZCxJQUFJYyxTQUFTQyxPQUFPLEdBQUc7UUFFakMsTUFBTUMsY0FBYyxJQUFJLENBQUNDLFNBQVMsSUFBSyxHQUFHO1FBRTFDSixRQUFRSyxLQUFLLENBQUMsQ0FBQyxjQUFjLEVBQUVGLFlBQVksVUFBVSxDQUFDO1FBRXRELE9BQU9HLElBQUFBLGdCQUFPLEVBQUMsQ0FBQ1ksTUFBTUMsaUJBQWlCbkIsU0FBU0MsU0FBU0M7WUFDdkQsTUFBTWtCLGlCQUFpQixJQUFJLENBQUNBLGNBQWMsQ0FBQ1gsSUFBSSxDQUFDLElBQUksR0FDOUNZLG9CQUFvQixJQUFJLENBQUNBLGlCQUFpQixDQUFDWixJQUFJLENBQUMsSUFBSTtZQUUxRCxPQUFPYSxJQUFBQSxrQkFBUyxFQUFDLENBQUN0QjtnQkFDaEIsT0FBT1osSUFBSTtvQkFDVGdDO29CQUNBQztpQkFDRCxFQUFFSCxNQUFNQyxpQkFBaUJuQixTQUFTLENBQUNrQixNQUFNQyxpQkFBaUJuQixTQUFTRTtvQkFDbEUsTUFBTXFCLCtCQUErQnZCLFFBQVF3QiwrQkFBK0I7b0JBRTVFLElBQUlELDhCQUE4Qjt3QkFDaEN2QixRQUFRZSxLQUFLLENBQUMsQ0FBQyx5Q0FBeUMsQ0FBQzt3QkFFekQsT0FBT2I7b0JBQ1Q7b0JBRUEsT0FBT0QsUUFBUUM7Z0JBQ2pCLEdBQUdBO1lBQ0wsR0FBR0Y7UUFDTCxHQUFHa0IsTUFBTUMsaUJBQWlCbkIsU0FBUyxDQUFDa0IsTUFBTUMsaUJBQWlCbkIsU0FBU0U7WUFDbEVGLFFBQVFlLEtBQUssQ0FBQyxDQUFDLGdCQUFnQixFQUFFWixZQUFZLFFBQVEsQ0FBQztZQUV0RCxPQUFPRixRQUFRRCxTQUFTRTtRQUMxQixHQUFHLENBQUNjO1lBQ0YsSUFBSUEsV0FBVztnQkFDYixPQUFPZCxLQUFLYztZQUNkO1lBRUFoQixRQUFRSyxLQUFLLENBQUMsQ0FBQyxxQkFBcUIsRUFBRUYsWUFBWSxRQUFRLENBQUM7WUFFM0QsT0FBT0Q7UUFDVDtJQUNGLEdBQUc7SUFFSCxPQUFPdUIsT0FBTyxRQUFRO0FBQ3hCIn0=
89
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L2NsYWltL2xlbW1hLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBicmVha1BvaW50VXRpbGl0aWVzLCBjb250aW51YXRpb25VdGlsaXRpZXMgfSBmcm9tIFwib2NjYW0tbGFuZ3VhZ2VzXCI7XG5cbmltcG9ydCBDbGFpbSBmcm9tIFwiLi4vY2xhaW1cIjtcblxuaW1wb3J0IHsgZGVmaW5lIH0gZnJvbSBcIi4uLy4uL2VsZW1lbnRzXCI7XG5pbXBvcnQgeyBpc29sYXRlLCBlbmNsb3NlLCByZWNvbmNpbGUgfSBmcm9tIFwiLi4vLi4vdXRpbGl0aWVzL2NvbnRleHRcIjtcblxuY29uc3QgeyBjdXQsIGFsbCB9ID0gY29udGludWF0aW9uVXRpbGl0aWVzLFxuICAgICAgeyBicmVha2FibGUgfSA9IGJyZWFrUG9pbnRVdGlsaXRpZXM7XG5cbmV4cG9ydCBkZWZhdWx0IGRlZmluZShjbGFzcyBMZW1tYSBleHRlbmRzIENsYWltIHtcbiAgZ2V0TGVtbWFOb2RlKCkge1xuICAgIGNvbnN0IG5vZGUgPSB0aGlzLmdldE5vZGUoKSxcbiAgICAgICAgICBsZW1tYU5vZGUgPSBub2RlOyAvLy9cblxuICAgIHJldHVybiBsZW1tYU5vZGU7XG4gIH1cblxuICB2ZXJpZnkgPSBicmVha2FibGUoZnVuY3Rpb24gKGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBmb3J3YXJkID0gY3V0KGZvcndhcmQsIGJhY2spOyAvLy9cblxuICAgIGNvbnN0IGxlbW1hU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHtsZW1tYVN0cmluZ30nIGxlbW1hLi4uYCk7XG5cbiAgICByZXR1cm4gaXNvbGF0ZSgoY29udGV4dCwgZm9yd2FyZCwgYmFjaykgPT4ge1xuICAgICAgcmV0dXJuIGVuY2xvc2UoKGNvbnRleHQpID0+IHtcbiAgICAgICAgY29uc3QgdmVyaWZ5UHJvb2YgPSB0aGlzLnZlcmlmeVByb29mLmJpbmQodGhpcyksXG4gICAgICAgICAgICAgIHZlcmlmeUxhYmVscyA9IHRoaXMudmVyaWZ5TGFiZWxzLmJpbmQodGhpcyksXG4gICAgICAgICAgICAgIHZlcmlmeURlZHVjdGlvbiA9IHRoaXMudmVyaWZ5RGVkdWN0aW9uLmJpbmQodGhpcyksXG4gICAgICAgICAgICAgIHZlcmlmeVN1cHBvc2l0aW9ucyA9IHRoaXMudmVyaWZ5U3VwcG9zaXRpb25zLmJpbmQodGhpcyk7XG5cbiAgICAgICAgcmV0dXJuIGFsbChbXG4gICAgICAgICAgdmVyaWZ5TGFiZWxzLFxuICAgICAgICAgIHZlcmlmeVN1cHBvc2l0aW9ucyxcbiAgICAgICAgICB2ZXJpZnlEZWR1Y3Rpb24sXG4gICAgICAgICAgdmVyaWZ5UHJvb2ZcbiAgICAgICAgXSwgY29udGV4dCwgKGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgICAgICByZXR1cm4gZm9yd2FyZChiYWNrKTtcbiAgICAgICAgfSwgYmFjayk7XG4gICAgICB9LCBjb250ZXh0KTtcbiAgICB9LCBjb250ZXh0LCAoY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgY29uc3QgbGVtbWEgPSB0aGlzOyAvLy9cblxuICAgICAgY29udGV4dC5hZGRMZW1tYShsZW1tYSk7XG5cbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHtsZW1tYVN0cmluZ30nIGxlbW1hLmApO1xuXG4gICAgICByZXR1cm4gZm9yd2FyZChjb250ZXh0LCBiYWNrKTtcbiAgICB9LCAoZXhjZXB0aW9uKSA9PiB7XG4gICAgICBpZiAoZXhjZXB0aW9uKSB7XG4gICAgICAgIHJldHVybiBiYWNrKGV4Y2VwdGlvbik7XG4gICAgICB9XG5cbiAgICAgIGNvbnRleHQudHJhY2UoYFVuYWJsZSB0byB2ZXJpZnkgdGhlICcke2xlbW1hU3RyaW5nfScgbGVtbWEuYCk7XG5cbiAgICAgIHJldHVybiBiYWNrKCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGFwcGx5ID0gYnJlYWthYmxlKGZ1bmN0aW9uIChzdGVwLCBmYWN0T3JTdWJwcm9vZnMsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBmb3J3YXJkID0gY3V0KGZvcndhcmQsIGJhY2spOyAvLy9cblxuICAgIGNvbnN0IGxlbW1hU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgQXBwbHlpbmcgdGhlICcke2xlbW1hU3RyaW5nfScgbGVtbWEuLi5gKTtcblxuICAgIHJldHVybiBpc29sYXRlKChzdGVwLCBmYWN0T3JTdWJwcm9vZnMsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spID0+IHtcbiAgICAgIGNvbnN0IGFwcGx5RGVkdWN0aW9uID0gdGhpcy5hcHBseURlZHVjdGlvbi5iaW5kKHRoaXMpLFxuICAgICAgICAgICAgYXBwbHlTdXBwb3NpdGlvbnMgPSB0aGlzLmFwcGx5U3VwcG9zaXRpb25zLmJpbmQodGhpcyksXG4gICAgICAgICAgICBkaXNjaGFyZ2VIeXBvdGhlc2VzID0gdGhpcy5kaXNjaGFyZ2VIeXBvdGhlc2VzLmJpbmQodGhpcyk7XG5cbiAgICAgIHJldHVybiByZWNvbmNpbGUoKGNvbnRleHQpID0+IHtcbiAgICAgICAgcmV0dXJuIGFsbChbXG4gICAgICAgICAgYXBwbHlEZWR1Y3Rpb24sXG4gICAgICAgICAgZGlzY2hhcmdlSHlwb3RoZXNlcyxcbiAgICAgICAgICBhcHBseVN1cHBvc2l0aW9uc1xuICAgICAgICBdLCBzdGVwLCBmYWN0T3JTdWJwcm9vZnMsIGNvbnRleHQsIChzdGVwLCBmYWN0T3JTdWJwcm9vZnMsIGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgICAgICBjb25zdCBjb21wbGV4U3Vic3RpdHV0aW9uc1Vuc29sdmVkID0gY29udGV4dC5hcmVDb21wbGV4U3Vic3RpdHV0aW9uc1Vuc29sdmVkKCk7XG5cbiAgICAgICAgICBpZiAoY29tcGxleFN1YnN0aXR1dGlvbnNVbnNvbHZlZCkge1xuICAgICAgICAgICAgY29udGV4dC5kZWJ1ZyhgVGhlcmUgYXJlIHVuc29sdmVkIGNvbXBsZXggc3Vic3RpdHV0aW9ucy5gKTtcblxuICAgICAgICAgICAgcmV0dXJuIGJhY2soKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gZm9yd2FyZChiYWNrKTtcbiAgICAgICAgfSwgYmFjayk7XG4gICAgICB9LCBjb250ZXh0KVxuICAgIH0sIHN0ZXAsIGZhY3RPclN1YnByb29mcywgY29udGV4dCwgKHN0ZXAsIGZhY3RPclN1YnByb29mcywgY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4uYXBwbGllZCB0aGUgJyR7bGVtbWFTdHJpbmd9JyBsZW1tYS5gKTtcblxuICAgICAgcmV0dXJuIGZvcndhcmQoY29udGV4dCwgYmFjayk7XG4gICAgfSwgKGV4Y2VwdGlvbikgPT4ge1xuICAgICAgaWYgKGV4Y2VwdGlvbikge1xuICAgICAgICByZXR1cm4gYmFjayhleGNlcHRpb24pO1xuICAgICAgfVxuXG4gICAgICBjb250ZXh0LnRyYWNlKGBVbmFibGUgdG8gYXBwbHkgdGhlICcke2xlbW1hU3RyaW5nfScgbGVtbWEuYCk7XG5cbiAgICAgIHJldHVybiBiYWNrKCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIHN0YXRpYyBuYW1lID0gXCJMZW1tYVwiO1xufSk7XG4iXSwibmFtZXMiOlsiY3V0IiwiYWxsIiwiY29udGludWF0aW9uVXRpbGl0aWVzIiwiYnJlYWthYmxlIiwiYnJlYWtQb2ludFV0aWxpdGllcyIsImRlZmluZSIsIkxlbW1hIiwiQ2xhaW0iLCJnZXRMZW1tYU5vZGUiLCJub2RlIiwiZ2V0Tm9kZSIsImxlbW1hTm9kZSIsInZlcmlmeSIsImNvbnRleHQiLCJmb3J3YXJkIiwiYmFjayIsImxlbW1hU3RyaW5nIiwiZ2V0U3RyaW5nIiwidHJhY2UiLCJpc29sYXRlIiwiZW5jbG9zZSIsInZlcmlmeVByb29mIiwiYmluZCIsInZlcmlmeUxhYmVscyIsInZlcmlmeURlZHVjdGlvbiIsInZlcmlmeVN1cHBvc2l0aW9ucyIsImxlbW1hIiwiYWRkTGVtbWEiLCJkZWJ1ZyIsImV4Y2VwdGlvbiIsImFwcGx5Iiwic3RlcCIsImZhY3RPclN1YnByb29mcyIsImFwcGx5RGVkdWN0aW9uIiwiYXBwbHlTdXBwb3NpdGlvbnMiLCJkaXNjaGFyZ2VIeXBvdGhlc2VzIiwicmVjb25jaWxlIiwiY29tcGxleFN1YnN0aXR1dGlvbnNVbnNvbHZlZCIsImFyZUNvbXBsZXhTdWJzdGl0dXRpb25zVW5zb2x2ZWQiLCJuYW1lIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFZQTs7O2VBQUE7OztnQ0FWMkQ7OERBRXpDOzBCQUVLO3lCQUNxQjs7Ozs7O0FBRTVDLE1BQU0sRUFBRUEsR0FBRyxFQUFFQyxHQUFHLEVBQUUsR0FBR0MscUNBQXFCLEVBQ3BDLEVBQUVDLFNBQVMsRUFBRSxHQUFHQyxtQ0FBbUI7TUFFekMsV0FBZUMsSUFBQUEsZ0JBQU0sRUFBQyxNQUFNQyxjQUFjQyxjQUFLO0lBQzdDQyxlQUFlO1FBQ2IsTUFBTUMsT0FBTyxJQUFJLENBQUNDLE9BQU8sSUFDbkJDLFlBQVlGLE1BQU0sR0FBRztRQUUzQixPQUFPRTtJQUNUO0lBRUFDLFNBQVNULFVBQVUsU0FBVVUsT0FBTyxFQUFFQyxPQUFPLEVBQUVDLElBQUk7UUFDakRELFVBQVVkLElBQUljLFNBQVNDLE9BQU8sR0FBRztRQUVqQyxNQUFNQyxjQUFjLElBQUksQ0FBQ0MsU0FBUyxJQUFLLEdBQUc7UUFFMUNKLFFBQVFLLEtBQUssQ0FBQyxDQUFDLGVBQWUsRUFBRUYsWUFBWSxVQUFVLENBQUM7UUFFdkQsT0FBT0csSUFBQUEsZ0JBQU8sRUFBQyxDQUFDTixTQUFTQyxTQUFTQztZQUNoQyxPQUFPSyxJQUFBQSxnQkFBTyxFQUFDLENBQUNQO2dCQUNkLE1BQU1RLGNBQWMsSUFBSSxDQUFDQSxXQUFXLENBQUNDLElBQUksQ0FBQyxJQUFJLEdBQ3hDQyxlQUFlLElBQUksQ0FBQ0EsWUFBWSxDQUFDRCxJQUFJLENBQUMsSUFB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
@@ -57,10 +57,11 @@ const _default = (0, _elements.define)(class Theorem extends _claim.default {
57
57
  const theoremString = this.getString(); ///
58
58
  context.trace(`Applying the '${theoremString}' theorem...`);
59
59
  return (0, _context.isolate)((step, factOrSubproofs, context, forward, back)=>{
60
- const applyDeduction = this.applyDeduction.bind(this), applySuppositions = this.applySuppositions.bind(this);
60
+ const applyDeduction = this.applyDeduction.bind(this), applySuppositions = this.applySuppositions.bind(this), dischargeHypotheses = this.dischargeHypotheses.bind(this);
61
61
  return (0, _context.reconcile)((context)=>{
62
62
  return all([
63
63
  applyDeduction,
64
+ dischargeHypotheses,
64
65
  applySuppositions
65
66
  ], step, factOrSubproofs, context, (step, factOrSubproofs, context, back)=>{
66
67
  const complexSubstitutionsUnsolved = context.areComplexSubstitutionsUnsolved();
@@ -88,4 +89,4 @@ const _default = (0, _elements.define)(class Theorem extends _claim.default {
88
89
  }
89
90
  });
90
91
 
91
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L2NsYWltL3RoZW9yZW0uanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IGJyZWFrUG9pbnRVdGlsaXRpZXMsIGNvbnRpbnVhdGlvblV0aWxpdGllcyB9IGZyb20gXCJvY2NhbS1sYW5ndWFnZXNcIjtcblxuaW1wb3J0IENsYWltIGZyb20gXCIuLi9jbGFpbVwiO1xuXG5pbXBvcnQgeyBkZWZpbmUgfSBmcm9tIFwiLi4vLi4vZWxlbWVudHNcIjtcbmltcG9ydCB7IGlzb2xhdGUsIGVuY2xvc2UsIHJlY29uY2lsZSB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvY29udGV4dFwiO1xuXG5jb25zdCB7IGN1dCwgYWxsIH0gPSBjb250aW51YXRpb25VdGlsaXRpZXMsXG4gICAgICB7IGJyZWFrYWJsZSB9ID0gYnJlYWtQb2ludFV0aWxpdGllcztcblxuZXhwb3J0IGRlZmF1bHQgZGVmaW5lKGNsYXNzIFRoZW9yZW0gZXh0ZW5kcyBDbGFpbSB7XG4gIGdldFRob2VyZW1Ob2RlKCkge1xuICAgIGNvbnN0IG5vZGUgPSB0aGlzLmdldE5vZGUoKSxcbiAgICAgICAgICB0aGVvcmVtTm9kZSA9IG5vZGU7IC8vL1xuXG4gICAgcmV0dXJuIHRoZW9yZW1Ob2RlO1xuICB9XG5cbiAgdmVyaWZ5ID0gYnJlYWthYmxlKGZ1bmN0aW9uIChjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgZm9yd2FyZCA9IGN1dChmb3J3YXJkLCBiYWNrKTsgLy8vXG5cbiAgICBjb25zdCB0aGVvcmVtU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHt0aGVvcmVtU3RyaW5nfScgdGhlb3JlbS4uLmApO1xuXG4gICAgcmV0dXJuIGlzb2xhdGUoKGNvbnRleHQsIGZvcndhcmQsIGJhY2spID0+IHtcbiAgICAgIHJldHVybiBlbmNsb3NlKChjb250ZXh0KSA9PiB7XG4gICAgICAgIGNvbnN0IHZlcmlmeVByb29mID0gdGhpcy52ZXJpZnlQcm9vZi5iaW5kKHRoaXMpLFxuICAgICAgICAgICAgICB2ZXJpZnlMYWJlbHMgPSB0aGlzLnZlcmlmeUxhYmVscy5iaW5kKHRoaXMpLFxuICAgICAgICAgICAgICB2ZXJpZnlEZWR1Y3Rpb24gPSB0aGlzLnZlcmlmeURlZHVjdGlvbi5iaW5kKHRoaXMpLFxuICAgICAgICAgICAgICB2ZXJpZnlTdXBwb3NpdGlvbnMgPSB0aGlzLnZlcmlmeVN1cHBvc2l0aW9ucy5iaW5kKHRoaXMpO1xuXG4gICAgICAgIHJldHVybiBhbGwoW1xuICAgICAgICAgIHZlcmlmeUxhYmVscyxcbiAgICAgICAgICB2ZXJpZnlTdXBwb3NpdGlvbnMsXG4gICAgICAgICAgdmVyaWZ5RGVkdWN0aW9uLFxuICAgICAgICAgIHZlcmlmeVByb29mXG4gICAgICAgIF0sIGNvbnRleHQsIChjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGZvcndhcmQoYmFjayk7XG4gICAgICAgIH0sIGJhY2spO1xuICAgICAgfSwgY29udGV4dCk7XG4gICAgfSwgY29udGV4dCwgKGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIGNvbnN0IHRoZW9yZW0gPSB0aGlzOyAvLy9cblxuICAgICAgY29udGV4dC5hZGRUaGVvcmVtKHRoZW9yZW0pO1xuXG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7dGhlb3JlbVN0cmluZ30nIHRoZW9yZW0uYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKGNvbnRleHQsIGJhY2spO1xuICAgIH0sIChleGNlcHRpb24pID0+IHtcbiAgICAgIGlmIChleGNlcHRpb24pIHtcbiAgICAgICAgcmV0dXJuIGJhY2soZXhjZXB0aW9uKTtcbiAgICAgIH1cblxuICAgICAgY29udGV4dC50cmFjZShgVW5hYmxlIHRvIHZlcmlmeSB0aGUgJyR7dGhlb3JlbVN0cmluZ30nIHRoZW9yZW0uYCk7XG5cbiAgICAgIHJldHVybiBiYWNrKCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGFwcGx5ID0gYnJlYWthYmxlKGZ1bmN0aW9uIChzdGVwLCBmYWN0T3JTdWJwcm9vZnMsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBmb3J3YXJkID0gY3V0KGZvcndhcmQsIGJhY2spOyAvLy9cblxuICAgIGNvbnN0IHRoZW9yZW1TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBBcHBseWluZyB0aGUgJyR7dGhlb3JlbVN0cmluZ30nIHRoZW9yZW0uLi5gKTtcblxuICAgIHJldHVybiBpc29sYXRlKChzdGVwLCBmYWN0T3JTdWJwcm9vZnMsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spID0+IHtcbiAgICAgIGNvbnN0IGFwcGx5RGVkdWN0aW9uID0gdGhpcy5hcHBseURlZHVjdGlvbi5iaW5kKHRoaXMpLFxuICAgICAgICAgICAgYXBwbHlTdXBwb3NpdGlvbnMgPSB0aGlzLmFwcGx5U3VwcG9zaXRpb25zLmJpbmQodGhpcyk7XG5cbiAgICAgIHJldHVybiByZWNvbmNpbGUoKGNvbnRleHQpID0+IHtcbiAgICAgICAgcmV0dXJuIGFsbChbXG4gICAgICAgICAgYXBwbHlEZWR1Y3Rpb24sXG4gICAgICAgICAgYXBwbHlTdXBwb3NpdGlvbnNcbiAgICAgICAgXSwgc3RlcCwgZmFjdE9yU3VicHJvb2ZzLCBjb250ZXh0LCAoc3RlcCwgZmFjdE9yU3VicHJvb2ZzLCBjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICAgICAgY29uc3QgY29tcGxleFN1YnN0aXR1dGlvbnNVbnNvbHZlZCA9IGNvbnRleHQuYXJlQ29tcGxleFN1YnN0aXR1dGlvbnNVbnNvbHZlZCgpO1xuXG4gICAgICAgICAgaWYgKGNvbXBsZXhTdWJzdGl0dXRpb25zVW5zb2x2ZWQpIHtcbiAgICAgICAgICAgIGNvbnRleHQuZGVidWcoYFRoZXJlIGFyZSB1bnNvbHZlZCBjb21wbGV4IHN1YnN0aXR1dGlvbnMuYCk7XG5cbiAgICAgICAgICAgIHJldHVybiBiYWNrKCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIGZvcndhcmQoYmFjayk7XG4gICAgICAgIH0sIGJhY2spO1xuICAgICAgfSwgY29udGV4dClcbiAgICB9LCBzdGVwLCBmYWN0T3JTdWJwcm9vZnMsIGNvbnRleHQsIChzdGVwLCBmYWN0T3JTdWJwcm9vZnMsIGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLmFwcGxpZWQgdGhlICcke3RoZW9yZW1TdHJpbmd9JyB0aGVvcmVtLmApO1xuXG4gICAgICByZXR1cm4gZm9yd2FyZChjb250ZXh0LCBiYWNrKTtcbiAgICB9LCAoZXhjZXB0aW9uKSA9PiB7XG4gICAgICBpZiAoZXhjZXB0aW9uKSB7XG4gICAgICAgIHJldHVybiBiYWNrKGV4Y2VwdGlvbik7XG4gICAgICB9XG5cbiAgICAgIGNvbnRleHQudHJhY2UoYFVuYWJsZSB0byBhcHBseSB0aGUgJyR7dGhlb3JlbVN0cmluZ30nIHRoZW9yZW0uYCk7XG5cbiAgICAgIHJldHVybiBiYWNrKCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIHN0YXRpYyBuYW1lID0gXCJUaGVvcmVtXCI7XG5cbiAgc3RhdGljIGZyb21KU09OKGpzb24sIGNvbnRleHQpIHsgcmV0dXJuIENsYWltLmZyb21KU09OKFRoZW9yZW0sIGpzb24sIGNvbnRleHQpOyB9XG59KTtcbiJdLCJuYW1lcyI6WyJjdXQiLCJhbGwiLCJjb250aW51YXRpb25VdGlsaXRpZXMiLCJicmVha2FibGUiLCJicmVha1BvaW50VXRpbGl0aWVzIiwiZGVmaW5lIiwiVGhlb3JlbSIsIkNsYWltIiwiZ2V0VGhvZXJlbU5vZGUiLCJub2RlIiwiZ2V0Tm9kZSIsInRoZW9yZW1Ob2RlIiwidmVyaWZ5IiwiY29udGV4dCIsImZvcndhcmQiLCJiYWNrIiwidGhlb3JlbVN0cmluZyIsImdldFN0cmluZyIsInRyYWNlIiwiaXNvbGF0ZSIsImVuY2xvc2UiLCJ2ZXJpZnlQcm9vZiIsImJpbmQiLCJ2ZXJpZnlMYWJlbHMiLCJ2ZXJpZnlEZWR1Y3Rpb24iLCJ2ZXJpZnlTdXBwb3NpdGlvbnMiLCJ0aGVvcmVtIiwiYWRkVGhlb3JlbSIsImRlYnVnIiwiZXhjZXB0aW9uIiwiYXBwbHkiLCJzdGVwIiwiZmFjdE9yU3VicHJvb2ZzIiwiYXBwbHlEZWR1Y3Rpb24iLCJhcHBseVN1cHBvc2l0aW9ucyIsInJlY29uY2lsZSIsImNvbXBsZXhTdWJzdGl0dXRpb25zVW5zb2x2ZWQiLCJhcmVDb21wbGV4U3Vic3RpdHV0aW9uc1Vuc29sdmVkIiwibmFtZSIsImZyb21KU09OIiwianNvbiJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBWUE7OztlQUFBOzs7Z0NBVjJEOzhEQUV6QzswQkFFSzt5QkFDcUI7Ozs7OztBQUU1QyxNQUFNLEVBQUVBLEdBQUcsRUFBRUMsR0FBRyxFQUFFLEdBQUdDLHFDQUFxQixFQUNwQyxFQUFFQyxTQUFTLEVBQUUsR0FBR0MsbUNBQW1CO01BRXpDLFdBQWVDLElBQUFBLGdCQUFNLEVBQUMsTUFBTUMsZ0JBQWdCQyxjQUFLO0lBQy9DQyxpQkFBaUI7UUFDZixNQUFNQyxPQUFPLElBQUksQ0FBQ0MsT0FBTyxJQUNuQkMsY0FBY0YsTUFBTSxHQUFHO1FBRTdCLE9BQU9FO0lBQ1Q7SUFFQUMsU0FBU1QsVUFBVSxTQUFVVSxPQUFPLEVBQUVDLE9BQU8sRUFBRUMsSUFBSTtRQUNqREQsVUFBVWQsSUFBSWMsU0FBU0MsT0FBTyxHQUFHO1FBRWpDLE1BQU1DLGdCQUFnQixJQUFJLENBQUNDLFNBQVMsSUFBSyxHQUFHO1FBRTVDSixRQUFRSyxLQUFLLENBQUMsQ0FBQyxlQUFlLEVBQUVGLGNBQWMsWUFBWSxDQUFDO1FBRTNELE9BQU9HLElBQUFBLGdCQUFPLEVBQUMsQ0FBQ04sU0FBU0MsU0FBU0M7WUFDaEMsT0FBT0ssSUFBQUEsZ0JBQU8sRUFBQyxDQUFDUDtnQkFDZCxNQUFNUSxjQUFjLElBQUksQ0FBQ0EsV0FBVyxDQUFDQyxJQUFJLENBQUMsSUFBSSxHQUN4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
92
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L2NsYWltL3RoZW9yZW0uanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IGJyZWFrUG9pbnRVdGlsaXRpZXMsIGNvbnRpbnVhdGlvblV0aWxpdGllcyB9IGZyb20gXCJvY2NhbS1sYW5ndWFnZXNcIjtcblxuaW1wb3J0IENsYWltIGZyb20gXCIuLi9jbGFpbVwiO1xuXG5pbXBvcnQgeyBkZWZpbmUgfSBmcm9tIFwiLi4vLi4vZWxlbWVudHNcIjtcbmltcG9ydCB7IGlzb2xhdGUsIGVuY2xvc2UsIHJlY29uY2lsZSB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvY29udGV4dFwiO1xuXG5jb25zdCB7IGN1dCwgYWxsIH0gPSBjb250aW51YXRpb25VdGlsaXRpZXMsXG4gICAgICB7IGJyZWFrYWJsZSB9ID0gYnJlYWtQb2ludFV0aWxpdGllcztcblxuZXhwb3J0IGRlZmF1bHQgZGVmaW5lKGNsYXNzIFRoZW9yZW0gZXh0ZW5kcyBDbGFpbSB7XG4gIGdldFRob2VyZW1Ob2RlKCkge1xuICAgIGNvbnN0IG5vZGUgPSB0aGlzLmdldE5vZGUoKSxcbiAgICAgICAgICB0aGVvcmVtTm9kZSA9IG5vZGU7IC8vL1xuXG4gICAgcmV0dXJuIHRoZW9yZW1Ob2RlO1xuICB9XG5cbiAgdmVyaWZ5ID0gYnJlYWthYmxlKGZ1bmN0aW9uIChjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgZm9yd2FyZCA9IGN1dChmb3J3YXJkLCBiYWNrKTsgLy8vXG5cbiAgICBjb25zdCB0aGVvcmVtU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHt0aGVvcmVtU3RyaW5nfScgdGhlb3JlbS4uLmApO1xuXG4gICAgcmV0dXJuIGlzb2xhdGUoKGNvbnRleHQsIGZvcndhcmQsIGJhY2spID0+IHtcbiAgICAgIHJldHVybiBlbmNsb3NlKChjb250ZXh0KSA9PiB7XG4gICAgICAgIGNvbnN0IHZlcmlmeVByb29mID0gdGhpcy52ZXJpZnlQcm9vZi5iaW5kKHRoaXMpLFxuICAgICAgICAgICAgICB2ZXJpZnlMYWJlbHMgPSB0aGlzLnZlcmlmeUxhYmVscy5iaW5kKHRoaXMpLFxuICAgICAgICAgICAgICB2ZXJpZnlEZWR1Y3Rpb24gPSB0aGlzLnZlcmlmeURlZHVjdGlvbi5iaW5kKHRoaXMpLFxuICAgICAgICAgICAgICB2ZXJpZnlTdXBwb3NpdGlvbnMgPSB0aGlzLnZlcmlmeVN1cHBvc2l0aW9ucy5iaW5kKHRoaXMpO1xuXG4gICAgICAgIHJldHVybiBhbGwoW1xuICAgICAgICAgIHZlcmlmeUxhYmVscyxcbiAgICAgICAgICB2ZXJpZnlTdXBwb3NpdGlvbnMsXG4gICAgICAgICAgdmVyaWZ5RGVkdWN0aW9uLFxuICAgICAgICAgIHZlcmlmeVByb29mXG4gICAgICAgIF0sIGNvbnRleHQsIChjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGZvcndhcmQoYmFjayk7XG4gICAgICAgIH0sIGJhY2spO1xuICAgICAgfSwgY29udGV4dCk7XG4gICAgfSwgY29udGV4dCwgKGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIGNvbnN0IHRoZW9yZW0gPSB0aGlzOyAvLy9cblxuICAgICAgY29udGV4dC5hZGRUaGVvcmVtKHRoZW9yZW0pO1xuXG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7dGhlb3JlbVN0cmluZ30nIHRoZW9yZW0uYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKGNvbnRleHQsIGJhY2spO1xuICAgIH0sIChleGNlcHRpb24pID0+IHtcbiAgICAgIGlmIChleGNlcHRpb24pIHtcbiAgICAgICAgcmV0dXJuIGJhY2soZXhjZXB0aW9uKTtcbiAgICAgIH1cblxuICAgICAgY29udGV4dC50cmFjZShgVW5hYmxlIHRvIHZlcmlmeSB0aGUgJyR7dGhlb3JlbVN0cmluZ30nIHRoZW9yZW0uYCk7XG5cbiAgICAgIHJldHVybiBiYWNrKCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGFwcGx5ID0gYnJlYWthYmxlKGZ1bmN0aW9uIChzdGVwLCBmYWN0T3JTdWJwcm9vZnMsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBmb3J3YXJkID0gY3V0KGZvcndhcmQsIGJhY2spOyAvLy9cblxuICAgIGNvbnN0IHRoZW9yZW1TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBBcHBseWluZyB0aGUgJyR7dGhlb3JlbVN0cmluZ30nIHRoZW9yZW0uLi5gKTtcblxuICAgIHJldHVybiBpc29sYXRlKChzdGVwLCBmYWN0T3JTdWJwcm9vZnMsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spID0+IHtcbiAgICAgIGNvbnN0IGFwcGx5RGVkdWN0aW9uID0gdGhpcy5hcHBseURlZHVjdGlvbi5iaW5kKHRoaXMpLFxuICAgICAgICAgICAgYXBwbHlTdXBwb3NpdGlvbnMgPSB0aGlzLmFwcGx5U3VwcG9zaXRpb25zLmJpbmQodGhpcyksXG4gICAgICAgICAgICBkaXNjaGFyZ2VIeXBvdGhlc2VzID0gdGhpcy5kaXNjaGFyZ2VIeXBvdGhlc2VzLmJpbmQodGhpcyk7XG5cbiAgICAgIHJldHVybiByZWNvbmNpbGUoKGNvbnRleHQpID0+IHtcbiAgICAgICAgcmV0dXJuIGFsbChbXG4gICAgICAgICAgYXBwbHlEZWR1Y3Rpb24sXG4gICAgICAgICAgZGlzY2hhcmdlSHlwb3RoZXNlcyxcbiAgICAgICAgICBhcHBseVN1cHBvc2l0aW9uc1xuICAgICAgICBdLCBzdGVwLCBmYWN0T3JTdWJwcm9vZnMsIGNvbnRleHQsIChzdGVwLCBmYWN0T3JTdWJwcm9vZnMsIGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgICAgICBjb25zdCBjb21wbGV4U3Vic3RpdHV0aW9uc1Vuc29sdmVkID0gY29udGV4dC5hcmVDb21wbGV4U3Vic3RpdHV0aW9uc1Vuc29sdmVkKCk7XG5cbiAgICAgICAgICBpZiAoY29tcGxleFN1YnN0aXR1dGlvbnNVbnNvbHZlZCkge1xuICAgICAgICAgICAgY29udGV4dC5kZWJ1ZyhgVGhlcmUgYXJlIHVuc29sdmVkIGNvbXBsZXggc3Vic3RpdHV0aW9ucy5gKTtcblxuICAgICAgICAgICAgcmV0dXJuIGJhY2soKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gZm9yd2FyZChiYWNrKTtcbiAgICAgICAgfSwgYmFjayk7XG4gICAgICB9LCBjb250ZXh0KVxuICAgIH0sIHN0ZXAsIGZhY3RPclN1YnByb29mcywgY29udGV4dCwgKHN0ZXAsIGZhY3RPclN1YnByb29mcywgY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4uYXBwbGllZCB0aGUgJyR7dGhlb3JlbVN0cmluZ30nIHRoZW9yZW0uYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKGNvbnRleHQsIGJhY2spO1xuICAgIH0sIChleGNlcHRpb24pID0+IHtcbiAgICAgIGlmIChleGNlcHRpb24pIHtcbiAgICAgICAgcmV0dXJuIGJhY2soZXhjZXB0aW9uKTtcbiAgICAgIH1cblxuICAgICAgY29udGV4dC50cmFjZShgVW5hYmxlIHRvIGFwcGx5IHRoZSAnJHt0aGVvcmVtU3RyaW5nfScgdGhlb3JlbS5gKTtcblxuICAgICAgcmV0dXJuIGJhY2soKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgc3RhdGljIG5hbWUgPSBcIlRoZW9yZW1cIjtcblxuICBzdGF0aWMgZnJvbUpTT04oanNvbiwgY29udGV4dCkgeyByZXR1cm4gQ2xhaW0uZnJvbUpTT04oVGhlb3JlbSwganNvbiwgY29udGV4dCk7IH1cbn0pO1xuIl0sIm5hbWVzIjpbImN1dCIsImFsbCIsImNvbnRpbnVhdGlvblV0aWxpdGllcyIsImJyZWFrYWJsZSIsImJyZWFrUG9pbnRVdGlsaXRpZXMiLCJkZWZpbmUiLCJUaGVvcmVtIiwiQ2xhaW0iLCJnZXRUaG9lcmVtTm9kZSIsIm5vZGUiLCJnZXROb2RlIiwidGhlb3JlbU5vZGUiLCJ2ZXJpZnkiLCJjb250ZXh0IiwiZm9yd2FyZCIsImJhY2siLCJ0aGVvcmVtU3RyaW5nIiwiZ2V0U3RyaW5nIiwidHJhY2UiLCJpc29sYXRlIiwiZW5jbG9zZSIsInZlcmlmeVByb29mIiwiYmluZCIsInZlcmlmeUxhYmVscyIsInZlcmlmeURlZHVjdGlvbiIsInZlcmlmeVN1cHBvc2l0aW9ucyIsInRoZW9yZW0iLCJhZGRUaGVvcmVtIiwiZGVidWciLCJleGNlcHRpb24iLCJhcHBseSIsInN0ZXAiLCJmYWN0T3JTdWJwcm9vZnMiLCJhcHBseURlZHVjdGlvbiIsImFwcGx5U3VwcG9zaXRpb25zIiwiZGlzY2hhcmdlSHlwb3RoZXNlcyIsInJlY29uY2lsZSIsImNvbXBsZXhTdWJzdGl0dXRpb25zVW5zb2x2ZWQiLCJhcmVDb21wbGV4U3Vic3RpdHV0aW9uc1Vuc29sdmVkIiwibmFtZSIsImZyb21KU09OIiwianNvbiJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBWUE7OztlQUFBOzs7Z0NBVjJEOzhEQUV6QzswQkFFSzt5QkFDcUI7Ozs7OztBQUU1QyxNQUFNLEVBQUVBLEdBQUcsRUFBRUMsR0FBRyxFQUFFLEdBQUdDLHFDQUFxQixFQUNwQyxFQUFFQyxTQUFTLEVBQUUsR0FBR0MsbUNBQW1CO01BRXpDLFdBQWVDLElBQUFBLGdCQUFNLEVBQUMsTUFBTUMsZ0JBQWdCQyxjQUFLO0lBQy9DQyxpQkFBaUI7UUFDZixNQUFNQyxPQUFPLElBQUksQ0FBQ0MsT0FBTyxJQUNuQkMsY0FBY0YsTUFBTSxHQUFHO1FBRTdCLE9BQU9FO0lBQ1Q7SUFFQUMsU0FBU1QsVUFBVSxTQUFVVSxPQUFPLEVBQUVDLE9BQU8sRUFBRUMsSUFBSTtRQUNqREQsVUFBVWQsSUFBSWMsU0FBU0MsT0FBTyxHQUFHO1FBRWpDLE1BQU1DLGdCQUFnQixJQUFJLENBQUNDLFNBQVMsSUFBSyxHQUFHO1FBRTVDSixRQUFRSyxLQUFLLENBQUMsQ0FBQyxlQUFlLEVBQUVGLGNBQWMsWUFBWSxDQUFDO1FBRTNELE9BQU9HLElB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