occam-nominal 1.0.613 → 1.0.617

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.
@@ -105,7 +105,7 @@ const _default = (0, _elements.define)(class ProcedureReference extends _occamla
105
105
  const context = specificContext, procedureReferenceString = this.getString(); ///
106
106
  context.trace(`Applying the '${procedureReferenceString}' function reference independently...`);
107
107
  const procedure = this.findProcecure(context), nominalValues = this.findNominalValues(context);
108
- return procedure.callNominally(nominalValues, (value, back)=>{
108
+ return procedure.evaluateNominally(nominalValues, (value, back)=>{
109
109
  const boolean = value.isBoolean();
110
110
  if (!boolean) {
111
111
  context.info(`The '${procedureReferenceString}' function reference did not return a boolean.`);
@@ -130,7 +130,7 @@ const _default = (0, _elements.define)(class ProcedureReference extends _occamla
130
130
  const procedureName = this.getProcedureName(), procedure = context.findProcedureByProcedureName(procedureName), node = term.getNode(), nominalValue = _occamfurtle.NominalValue.fromNode(node, context), nominalValues = [
131
131
  nominalValue
132
132
  ];
133
- return procedure.callNominally(nominalValues, (value, back)=>{
133
+ return procedure.evaluateNominally(nominalValues, (value, back)=>{
134
134
  const boolean = value.isBoolean();
135
135
  if (!boolean) {
136
136
  context.info(`The '${procedureReferenceString}' function reference did not return a boolean.`);
@@ -175,4 +175,4 @@ function parametersFromProcedureReferenceNode(procedureReferenceNode, context) {
175
175
  return parameters;
176
176
  }
177
177
 
178
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbGVtZW50L3Byb2NlZHVyZVJlZmVyZW5jZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgTm9taW5hbFZhbHVlIH0gZnJvbSBcIm9jY2FtLWZ1cnRsZVwiO1xuaW1wb3J0IHsgRWxlbWVudCwgY29udGludWF0aW9uVXRpbGl0aWVzLCBicmVha1BvaW50VXRpbGl0aWVzIH0gZnJvbSBcIm9jY2FtLWxhbmd1YWdlc1wiO1xuXG5pbXBvcnQgeyBkZWZpbmUgfSBmcm9tIFwiLi4vZWxlbWVudHNcIjtcbmltcG9ydCB7IGluc3RhbnRpYXRlIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9jb250ZXh0XCI7XG5pbXBvcnQgeyBpbnN0YW50aWF0ZVByb2NlZHVyZVJlZmVyZW5jZSB9IGZyb20gXCIuLi9wcm9jZXNzL2luc3RhbnRpYXRlXCI7XG5cbmNvbnN0IHsgYWxsLCBldmVyeSB9ID0gY29udGludWF0aW9uVXRpbGl0aWVzLFxuICAgICAgeyB1bmJyZWFrYWJsZSB9ID0gYnJlYWtQb2ludFV0aWxpdGllcztcblxuZXhwb3J0IGRlZmF1bHQgZGVmaW5lKGNsYXNzIFByb2NlZHVyZVJlZmVyZW5jZSBleHRlbmRzIEVsZW1lbnQge1xuICBjb25zdHJ1Y3Rvcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIG5hbWUsIHBhcmFtZXRlcnMpIHtcbiAgICBzdXBlcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQpO1xuXG4gICAgdGhpcy5uYW1lID0gbmFtZTtcbiAgICB0aGlzLnBhcmFtZXRlcnMgPSBwYXJhbWV0ZXJzO1xuICB9XG5cbiAgZ2V0TmFtZSgpIHtcbiAgICByZXR1cm4gdGhpcy5uYW1lO1xuICB9XG5cbiAgZ2V0UGFyYW1ldGVycygpIHtcbiAgICByZXR1cm4gdGhpcy5wYXJhbWV0ZXJzO1xuICB9XG5cbiAgZ2V0UHJvY2VkdXJlUmVmZXJlbmNlTm9kZSgpIHtcbiAgICBjb25zdCBub2RlID0gdGhpcy5nZXROb2RlKCksXG4gICAgICAgICAgcHJvY2VkdXJlUmVmZXJlbmNlTm9kZSA9IG5vZGU7XG5cbiAgICByZXR1cm4gcHJvY2VkdXJlUmVmZXJlbmNlTm9kZTtcbiAgfVxuXG4gIGdldFByb2NlZHVyZU5hbWUoKSB7XG4gICAgY29uc3QgcHJvY2VkdXJlTmFtZSA9IHRoaXMubmFtZTtcblxuICAgIHJldHVybiBwcm9jZWR1cmVOYW1lO1xuICB9XG5cbiAgaXNVbmFyeSgpIHtcbiAgICBjb25zdCBwYXJhbWV0ZXJzTGVuZ3RoID0gdGhpcy5wYXJhbWV0ZXJzLmxlbmd0aCxcbiAgICAgICAgICB1bmFyeSA9IChwYXJhbWV0ZXJzTGVuZ3RoID09PSAxKTtcblxuICAgIHJldHVybiB1bmFyeTtcbiAgfVxuXG4gIGlzRXF1YWxUbyhwcm9jZWR1cmVSZWZlcmVuY2UpIHtcbiAgICBjb25zdCBwcm9jZWR1cmVSZWZlcmVuY2VOb2RlID0gcHJvY2VkdXJlUmVmZXJlbmNlLmdldE5vZGUoKSxcbiAgICAgICAgICBwcm9jZWR1cmVSZWZlcmVuY2VOb2RlTWF0Y2hlcyA9IHRoaXMubWF0Y2hQcm9jZWR1cmVSZWZlcmVuY2VOb2RlKHByb2NlZHVyZVJlZmVyZW5jZU5vZGUpLFxuICAgICAgICAgIGVxdWFsVG8gPSBwcm9jZWR1cmVSZWZlcmVuY2VOb2RlTWF0Y2hlczsgIC8vL1xuXG4gICAgcmV0dXJuIGVxdWFsVG87XG4gIH1cblxuICBtYXRjaFByb2NlZHVyZVJlZmVyZW5jZU5vZGUocHJvY2VkdXJlUmVmZXJlbmNlTm9kZSkge1xuICAgIGNvbnN0IG5vZGUgPSBwcm9jZWR1cmVSZWZlcmVuY2VOb2RlLCAvLy9cbiAgICAgICAgICBub2RlTWF0Y2hlcyA9IHRoaXMubWF0Y2hOb2RlKG5vZGUpLFxuICAgICAgICAgIHByb2NlZHVyZVJlZmVyZW5jZU5vZGVNYXRjaGVzID0gbm9kZU1hdGNoZXM7IC8vL1xuXG4gICAgcmV0dXJuIHByb2NlZHVyZVJlZmVyZW5jZU5vZGVNYXRjaGVzO1xuICB9XG5cbiAgZmluZFByb2NlY3VyZShjb250ZXh0KSB7XG4gICAgY29uc3QgcHJvY2VkdXJlTmFtZSA9IHRoaXMuZ2V0UHJvY2VkdXJlTmFtZSgpLFxuICAgICAgICAgIHByb2NlZHVyZSA9IGNvbnRleHQuZmluZFByb2NlZHVyZUJ5UHJvY2VkdXJlTmFtZShwcm9jZWR1cmVOYW1lKTtcblxuICAgIHJldHVybiBwcm9jZWR1cmU7XG4gIH1cblxuICBmaW5kTm9taW5hbFZhbHVlcyhjb250ZXh0KSB7XG4gICAgY29uc3QgZGVyaXZlZFN1YnN0aXR1dGlvbnMgPSBjb250ZXh0LmdldERlcml2ZWRTdWJzdGl0dXRpb25zKCksXG4gICAgICAgICAgc3Vic3RpdHV0aW9ucyA9IGRlcml2ZWRTdWJzdGl0dXRpb25zLCAvLy9cbiAgICAgICAgICBub21pbmFsVmFsdWVzID0gdGhpcy5wYXJhbWV0ZXJzLm1hcCgocGFyYW1ldGVyKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBub21pbmFsVmFsdWUgPSBwYXJhbWV0ZXIuZmluZE5vbWluYWxWYWx1ZShzdWJzdGl0dXRpb25zKTtcblxuICAgICAgICAgICAgcmV0dXJuIG5vbWluYWxWYWx1ZTtcbiAgICAgICAgICB9KTtcblxuICAgIHJldHVybiBub21pbmFsVmFsdWVzO1xuICB9XG5cbiAgZmluZFByb2NlZHVyZVJlZmVyZW5jZShjb250ZXh0KSB7XG4gICAgY29uc3QgcHJvY2VkdXJlUmVmZXJlbmNlTm9kZSA9IHRoaXMuZ2V0UHJvY2VkdXJlUmVmZXJlbmNlTm9kZSgpLFxuICAgICAgICAgIHByb2NlZHVyZVJlZmVyZW5jZSA9IGNvbnRleHQuZmluZFByb2NlZHVyZVJlZmVyZW5jZUJ5UHJvY2VkdXJlUmVmZXJlbmNlTm9kZShwcm9jZWR1cmVSZWZlcmVuY2VOb2RlKTtcblxuICAgIHJldHVybiBwcm9jZWR1cmVSZWZlcmVuY2U7XG4gIH1cblxuICB2YWxpZGF0ZSA9IHVuYnJlYWthYmxlKGZ1bmN0aW9uIChzdGF0ZSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGxldCBwcm9jZWR1cmVSZWZlcmVuY2U7XG5cbiAgICBjb25zdCBwcm9jZWR1cmVSZWZlcmVuY2VTdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtwcm9jZWR1cmVSZWZlcmVuY2VTdHJpbmd9JyBmdW5jdGlvbiByZWZlcmVuY2UuLi5gKTtcblxuICAgIHByb2NlZHVyZVJlZmVyZW5jZSA9IHRoaXMuZmluZFByb2NlZHVyZVJlZmVyZW5jZShjb250ZXh0KTtcblxuICAgIGlmIChwcm9jZWR1cmVSZWZlcmVuY2UgIT09IG51bGwpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYFRoZSAnJHtwcm9jZWR1cmVSZWZlcmVuY2VTdHJpbmd9JyBmdW5jdGlvbiByZWZlcmVuY2UgaXMgYWxyZWFkeSBwcmVzZW50LmApO1xuXG4gICAgICByZXR1cm4gZm9yd2FyZChwcm9jZWR1cmVSZWZlcmVuY2UsIGNvbnRleHQsIGJhY2spO1xuICAgIH1cblxuICAgIHByb2NlZHVyZVJlZmVyZW5jZSA9IHRoaXM7IC8vL1xuXG4gICAgY29uc3QgdmFsaWRhdGVQYXJhbWV0ZXJzID0gdGhpcy52YWxpZGF0ZVBhcmFtZXRlcnMuYmluZCh0aGlzKTtcblxuICAgIHJldHVybiBhbGwoW1xuICAgICAgdmFsaWRhdGVQYXJhbWV0ZXJzXG4gICAgXSwgc3RhdGUsIGNvbnRleHQsIChzdGF0ZSwgY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgY29udGV4dC5hZGRQcm9jZWR1cmVSZWZlcmVuY2UocHJvY2VkdXJlUmVmZXJlbmNlKTtcblxuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHtwcm9jZWR1cmVSZWZlcmVuY2VTdHJpbmd9JyBmdW5jdGlvbiByZWZlcmVuY2UuYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKHByb2NlZHVyZVJlZmVyZW5jZSwgY29udGV4dCwgYmFjayk7XG4gICAgfSwgYmFjayk7XG4gIH0pO1xuXG4gIHZhbGlkYXRlUGFyYW1ldGVyKHBhcmFtZXRlciwgcGFyYW1ldGVycywgc3RhdGUsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBwYXJhbWV0ZXJTdHJpbmcgPSBwYXJhbWV0ZXIuZ2V0U3RyaW5nKCksXG4gICAgICAgICAgcHJvY2VkdXJlUmVmZXJlbmNlU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7cHJvY2VkdXJlUmVmZXJlbmNlU3RyaW5nfScgZnVuY3Rpb24gcmVmZXJlbmNlJ3MgJyR7cGFyYW1ldGVyU3RyaW5nfScgcGFyYW1ldGVyLi4uYCk7XG5cbiAgICByZXR1cm4gcGFyYW1ldGVyLnZhbGlkYXRlKHN0YXRlLCBjb250ZXh0LCAocGFyYW1ldGVyLCBjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICBwYXJhbWV0ZXJzLnB1c2gocGFyYW1ldGVyKTtcblxuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHtwcm9jZWR1cmVSZWZlcmVuY2VTdHJpbmd9JyBmdW5jdGlvbiByZWZlcmVuY2UncyAnJHtwYXJhbWV0ZXJTdHJpbmd9JyBwYXJhbWV0ZXIuYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKHBhcmFtZXRlcnMsIHN0YXRlLCBjb250ZXh0LCBiYWNrKTtcbiAgICB9LCBiYWNrKTtcbiAgfVxuXG4gIHZhbGlkYXRlUGFyYW1ldGVycyhzdGF0ZSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IHByb2NlZHVyZVJlZmVyZW5jZVN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke3Byb2NlZHVyZVJlZmVyZW5jZVN0cmluZ30nIGZ1bmN0aW9uIHJlZmVyZW5jZSdzIHBhcmFtZXRlcnMuLi5gKTtcblxuICAgIGNvbnN0IHBhcmFtZXRlcnMgPSBbXTtcblxuICAgIHJldHVybiBldmVyeSh0aGlzLnBhcmFtZXRlcnMsIChwYXJhbWV0ZXIsIHBhcmFtZXRlcnMsIHN0YXRlLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy52YWxpZGF0ZVBhcmFtZXRlcihwYXJhbWV0ZXIsIHBhcmFtZXRlcnMsIHN0YXRlLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKTtcbiAgICB9LCBwYXJhbWV0ZXJzLCBzdGF0ZSwgY29udGV4dCwgKHBhcmFtZXRlcnMsIHN0YXRlLCBjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICB0aGlzLnBhcmFtZXRlcnMgPSBwYXJhbWV0ZXJzO1xuXG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke3Byb2NlZHVyZVJlZmVyZW5jZVN0cmluZ30nIGZ1bmN0aW9uIHJlZmVyZW5jZSdzIHBhcmFtZXRlcnMuYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKHN0YXRlLCBjb250ZXh0LCBiYWNrKTtcbiAgICB9LCBiYWNrKTtcbiAgfVxuXG4gIGFwcGx5SW5kZXBlbmRlbnRseShnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHNwZWNpZmljQ29udGV4dCxcbiAgICAgICAgICBwcm9jZWR1cmVSZWZlcmVuY2VTdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYEFwcGx5aW5nIHRoZSAnJHtwcm9jZWR1cmVSZWZlcmVuY2VTdHJpbmd9JyBmdW5jdGlvbiByZWZlcmVuY2UgaW5kZXBlbmRlbnRseS4uLmApO1xuXG4gICAgY29uc3QgcHJvY2VkdXJlID0gdGhpcy5maW5kUHJvY2VjdXJlKGNvbnRleHQpLFxuICAgICAgICAgIG5vbWluYWxWYWx1ZXMgPSB0aGlzLmZpbmROb21pbmFsVmFsdWVzKGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIHByb2NlZHVyZS5jYWxsTm9taW5hbGx5KG5vbWluYWxWYWx1ZXMsICh2YWx1ZSwgYmFjaykgPT4ge1xuICAgICAgY29uc3QgYm9vbGVhbiA9IHZhbHVlLmlzQm9vbGVhbigpO1xuXG4gICAgICBpZiAoIWJvb2xlYW4pIHtcbiAgICAgICAgY29udGV4dC5pbmZvKGBUaGUgJyR7cHJvY2VkdXJlUmVmZXJlbmNlU3RyaW5nfScgZnVuY3Rpb24gcmVmZXJlbmNlIGRpZCBub3QgcmV0dXJuIGEgYm9vbGVhbi5gKTtcblxuICAgICAgICByZXR1cm4gYmFjaygpO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBwcmltaXRpdmVWYWx1ZSA9IHZhbHVlLmdldFByaW1pdGl2ZVZhbHVlKCk7XG5cbiAgICAgIGlmICghcHJpbWl0aXZlVmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIGJhY2soKTtcbiAgICAgIH1cblxuICAgICAgY29udGV4dC50cmFjZShgLi4uYXBwbGllZCB0aGUgJyR7cHJvY2VkdXJlUmVmZXJlbmNlU3RyaW5nfScgZnVuY3Rpb24gcmVmZXJlbmNlIGluZGVwZW5kZW50bHkuYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIGJhY2spO1xuICAgIH0sIGJhY2spO1xuICB9XG5cbiAgZGlzY2hhcmdlR2l2ZW5UZXJtKHRlcm0sIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCB0ZXJtU3RyaW5nID0gdGVybS5nZXRTdHJpbmcoKSxcbiAgICAgICAgICBwcm9jZWR1cmVSZWZlcmVuY2VTdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYERpc2NoYXJnaW5nIHRoZSAnJHtwcm9jZWR1cmVSZWZlcmVuY2VTdHJpbmd9JyBmdW5jdGlvbiByZWZlcmVuY2UgZ2l2ZW4gdGhlICcke3Rlcm1TdHJpbmd9JyB0ZXJtLi4uYCk7XG5cbiAgICBjb25zdCB1bmFyeSA9IHRoaXMuaXNVbmFyeSgpO1xuXG4gICAgaWYgKCF1bmFyeSkge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgVGhlICcke3Byb2NlZHVyZVJlZmVyZW5jZVN0cmluZ30nIGZ1bmN0aW9uIHJlZmVyZW5jZSBpcyBub3QgdW5hcnkuYCk7XG5cbiAgICAgIHJldHVybiBiYWNrKCk7XG4gICAgfVxuXG4gICAgY29uc3QgcHJvY2VkdXJlTmFtZSA9IHRoaXMuZ2V0UHJvY2VkdXJlTmFtZSgpLFxuICAgICAgICAgIHByb2NlZHVyZSA9IGNvbnRleHQuZmluZFByb2NlZHVyZUJ5UHJvY2VkdXJlTmFtZShwcm9jZWR1cmVOYW1lKSxcbiAgICAgICAgICBub2RlID0gdGVybS5nZXROb2RlKCksXG4gICAgICAgICAgbm9taW5hbFZhbHVlID0gTm9taW5hbFZhbHVlLmZyb21Ob2RlKG5vZGUsIGNvbnRleHQpLFxuICAgICAgICAgIG5vbWluYWxWYWx1ZXMgPSBbXG4gICAgICAgICAgICBub21pbmFsVmFsdWVcbiAgICAgICAgICBdO1xuXG4gICAgcmV0dXJuIHByb2NlZHVyZS5jYWxsTm9taW5hbGx5KG5vbWluYWxWYWx1ZXMsICh2YWx1ZSwgYmFjaykgPT4ge1xuICAgICAgY29uc3QgYm9vbGVhbiA9IHZhbHVlLmlzQm9vbGVhbigpO1xuXG4gICAgICBpZiAoIWJvb2xlYW4pIHtcbiAgICAgICAgY29udGV4dC5pbmZvKGBUaGUgJyR7cHJvY2VkdXJlUmVmZXJlbmNlU3RyaW5nfScgZnVuY3Rpb24gcmVmZXJlbmNlIGRpZCBub3QgcmV0dXJuIGEgYm9vbGVhbi5gKTtcblxuICAgICAgICByZXR1cm4gYmFjaygpO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBwcmltaXRpdmVWYWx1ZSA9IHZhbHVlLmdldFByaW1pdGl2ZVZhbHVlKCk7XG5cbiAgICAgIGlmICghcHJpbWl0aXZlVmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIGJhY2soKTtcbiAgICAgIH1cblxuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4uZGlzY2hhcmdlZCB0aGUgJyR7cHJvY2VkdXJlUmVmZXJlbmNlU3RyaW5nfScgZnVuY3Rpb24gcmVmZXJlbmNlIGdpdmVuIHRoZSAnJHt0ZXJtU3RyaW5nfScgdGVybS5gKTtcblxuICAgICAgcmV0dXJuIGZvcndhcmQoYmFjayk7XG4gICAgfSwgYmFjayk7XG4gIH1cblxuICB0b0pTT04oKSB7XG4gICAgbGV0IGpzb247XG5cbiAgICBjb25zdCBzdHJpbmcgPSB0aGlzLmdldFN0cmluZygpO1xuXG4gICAganNvbiA9IHtcbiAgICAgIHN0cmluZ1xuICAgIH07XG5cbiAgICByZXR1cm4ganNvbjtcbiAgfVxuXG4gIHN0YXRpYyBuYW1lID0gXCJQcm9jZWR1cmVSZWZlcmVuY2VcIjtcblxuICBzdGF0aWMgZnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICAgIGxldCBwcm9jZWR1cmVSZWZlcmVuY2U7XG5cbiAgICBpbnN0YW50aWF0ZSgoY29udGV4dCkgPT4ge1xuICAgICAgY29uc3QgeyBzdHJpbmcgfSA9IGpzb24sXG4gICAgICAgICAgICBwcm9jZWR1cmVSZWZlcmVuY2VOb2RlID0gaW5zdGFudGlhdGVQcm9jZWR1cmVSZWZlcmVuY2Uoc3RyaW5nLCBjb250ZXh0KSxcbiAgICAgICAgICAgIG5vZGUgPSBwcm9jZWR1cmVSZWZlcmVuY2VOb2RlLCAgLy8vXG4gICAgICAgICAgICBicmVha1BvaW50ID0gbnVsbCxcbiAgICAgICAgICAgIG5hbWUgPSBuYW1lRnJvbVByb2NlZHVyZVJlZmVyZW5jZU5vZGUocHJvY2VkdXJlUmVmZXJlbmNlTm9kZSwgY29udGV4dCksXG4gICAgICAgICAgICBwYXJhbWV0ZXJzID0gcGFyYW1ldGVyc0Zyb21Qcm9jZWR1cmVSZWZlcmVuY2VOb2RlKHByb2NlZHVyZVJlZmVyZW5jZU5vZGUsIGNvbnRleHQpO1xuXG4gICAgICBjb250ZXh0ID0gbnVsbDtcblxuICAgICAgcHJvY2VkdXJlUmVmZXJlbmNlID0gbmV3IFByb2NlZHVyZVJlZmVyZW5jZShjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIG5hbWUsIHBhcmFtZXRlcnMpO1xuICAgIH0sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIHByb2NlZHVyZVJlZmVyZW5jZTtcbiAgfVxufSk7XG5cbmZ1bmN0aW9uIG5hbWVGcm9tUHJvY2VkdXJlUmVmZXJlbmNlTm9kZShwcm9jZWR1cmVSZWZlcmVuY2VOb2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IG5hbWUgPSBwcm9jZWR1cmVSZWZlcmVuY2VOb2RlLmdldE5hbWUoKTtcblxuICByZXR1cm4gbmFtZTtcbn1cblxuZnVuY3Rpb24gcGFyYW1ldGVyc0Zyb21Qcm9jZWR1cmVSZWZlcmVuY2VOb2RlKHByb2NlZHVyZVJlZmVyZW5jZU5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgcGFyYW1ldGVyTm9kZXMgPSBwcm9jZWR1cmVSZWZlcmVuY2VOb2RlLmdldFBhcmFtZXRlck5vZGVzKCksXG4gICAgICAgIHBhcmFtZXRlcnMgPSBwYXJhbWV0ZXJOb2Rlcy5tYXAoKHBhcmFtZXRlck5vZGUpID0+IHtcbiAgICAgICAgICBjb25zdCBwYXJhbWV0ZXIgPSBjb250ZXh0LmZpbmRQYXJhbWV0ZXJCeVBhcmFtZXRlck5vZGUocGFyYW1ldGVyTm9kZSk7XG5cbiAgICAgICAgICByZXR1cm4gcGFyYW1ldGVyO1xuICAgICAgICB9KTtcblxuICByZXR1cm4gcGFyYW1ldGVycztcbn1cbiJdLCJuYW1lcyI6WyJhbGwiLCJldmVyeSIsImNvbnRpbnVhdGlvblV0aWxpdGllcyIsInVuYnJlYWthYmxlIiwiYnJlYWtQb2ludFV0aWxpdGllcyIsImRlZmluZSIsIlByb2NlZHVyZVJlZmVyZW5jZSIsIkVsZW1lbnQiLCJjb250ZXh0Iiwic3RyaW5nIiwibm9kZSIsImJyZWFrUG9pbnQiLCJuYW1lIiwicGFyYW1ldGVycyIsImdldE5hbWUiLCJnZXRQYXJhbWV0ZXJzIiwiZ2V0UHJvY2VkdXJlUmVmZXJlbmNlTm9kZSIsImdldE5vZGUiLCJwcm9jZWR1cmVSZWZlcmVuY2VOb2RlIiwiZ2V0UHJvY2VkdXJlTmFtZSIsInByb2NlZHVyZU5hbWUiLCJpc1VuYXJ5IiwicGFyYW1ldGVyc0xlbmd0aCIsImxlbmd0aCIsInVuYXJ5IiwiaXNFcXVhbFRvIiwicHJvY2VkdXJlUmVmZXJlbmNlIiwicHJvY2VkdXJlUmVmZXJlbmNlTm9kZU1hdGNoZXMiLCJtYXRjaFByb2NlZHVyZVJlZmVyZW5jZU5vZGUiLCJlcXVhbFRvIiwibm9kZU1hdGNoZXMiLCJtYXRjaE5vZGUiLCJmaW5kUHJvY2VjdXJlIiwicHJvY2VkdXJlIiwiZmluZFByb2NlZHVyZUJ5UHJvY2VkdXJlTmFtZSIsImZpbmROb21pbmFsVmFsdWVzIiwiZGVyaXZlZFN1YnN0aXR1dGlvbnMiLCJnZXREZXJpdmVkU3Vic3RpdHV0aW9ucyIsInN1YnN0aXR1dGlvbnMiLCJub21pbmFsVmFsdWVzIiwibWFwIiwicGFyYW1ldGVyIiwibm9taW5hbFZhbHVlIiwiZmluZE5vbWluYWxWYWx1ZSIsImZpbmRQcm9jZWR1cmVSZWZlcmVuY2UiLCJmaW5kUHJvY2VkdXJlUmVmZXJlbmNlQnlQcm9jZWR1cmVSZWZlcmVuY2VOb2RlIiwidmFsaWRhdGUiLCJzdGF0ZSIsImZvcndhcmQiLCJiYWNrIiwicHJvY2VkdXJlUmVmZXJlbmNlU3RyaW5nIiwiZ2V0U3RyaW5nIiwidHJhY2UiLCJkZWJ1ZyIsInZhbGlkYXRlUGFyYW1ldGVycyIsImJpbmQiLCJhZGRQcm9jZWR1cmVSZWZlcmVuY2UiLCJ2YWxpZGF0ZVBhcmFtZXRlciIsInBhcmFtZXRlclN0cmluZyIsInB1c2giLCJhcHBseUluZGVwZW5kZW50bHkiLCJnZW5lcmFsQ29udGV4dCIsInNwZWNpZmljQ29udGV4dCIsImNhbGxOb21pbmFsbHkiLCJ2YWx1ZSIsImJvb2xlYW4iLCJpc0Jvb2xlYW4iLCJpbmZvIiwicHJpbWl0aXZlVmFsdWUiLCJnZXRQcmltaXRpdmVWYWx1ZSIsImRpc2NoYXJnZUdpdmVuVGVybSIsInRlcm0iLCJ0ZXJtU3RyaW5nIiwiTm9taW5hbFZhbHVlIiwiZnJvbU5vZGUiLCJ0b0pTT04iLCJqc29uIiwiZnJvbUpTT04iLCJpbnN0YW50aWF0ZSIsImluc3RhbnRpYXRlUHJvY2VkdXJlUmVmZXJlbmNlIiwibmFtZUZyb21Qcm9jZWR1cmVSZWZlcmVuY2VOb2RlIiwicGFyYW1ldGVyc0Zyb21Qcm9jZWR1cmVSZWZlcmVuY2VOb2RlIiwicGFyYW1ldGVyTm9kZXMiLCJnZXRQYXJhbWV0ZXJOb2RlcyIsInBhcmFtZXRlck5vZGUiLCJmaW5kUGFyYW1ldGVyQnlQYXJhbWV0ZXJOb2RlIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFZQTs7O2VBQUE7Ozs2QkFWNkI7Z0NBQ3VDOzBCQUU3Qzt5QkFDSzs2QkFDa0I7QUFFOUMsTUFBTSxFQUFFQSxHQUFHLEVBQUVDLEtBQUssRUFBRSxHQUFHQyxxQ0FBcUIsRUFDdEMsRUFBRUMsV0FBVyxFQUFFLEdBQUdDLG1DQUFtQjtNQUUzQyxXQUFlQyxJQUFBQSxnQkFBTSxFQUFDLE1BQU1DLDJCQUEyQkMsdUJBQU87SUFDNUQsWUFBWUMsT0FBTyxFQUFFQyxNQUFNLEVBQUVDLElBQUksRUFBRUMsVUFBVSxFQUFFQyxJQUFJLEVBQUVDLFVBQVUsQ0FBRTtRQUMvRCxLQUFLLENBQUNMLFNBQVNDLFFBQVFDLE1BQU1DO1FBRTdCLElBQUksQ0FBQ0MsSUFBSSxHQUFHQTtRQUNaLElBQUksQ0FBQ0MsVUFBVSxHQUFHQTtJQUNwQjtJQUVBQyxVQUFVO1FBQ1IsT0FBTyxJQUFJLENBQUNGLElBQUk7SUFDbEI7SUFFQUcsZ0JBQWdCO1FBQ2QsT0FBTyxJQUFJLENBQUNGLFVBQVU7SUFDeEI7SUFFQUcsNEJBQTRCO1FBQzFCLE1BQU1OLE9BQU8sSUFBSSxDQUFDTyxPQUFPLElBQ25CQyx5QkFBeUJSO1FBRS9CLE9BQU9RO0lBQ1Q7SUFFQUMsbUJBQW1CO1FBQ2pCLE1BQU1DLGdCQUFnQixJQUFJLENBQUNSLElBQUk7UUFFL0IsT0FBT1E7SUFDVDtJQUVBQyxVQUFVO1FBQ1IsTUFBTUMsbUJBQW1CLElBQUksQ0FBQ1QsVUFBVSxDQUFDVSxNQUFNLEVBQ3pDQyxRQUFTRixxQkFBcUI7UUFFcEMsT0FBT0U7SUFDVDtJQUVBQyxVQUFVQyxrQkFBa0IsRUFBRTtRQUM1QixNQUFNUix5QkFBeUJRLG1CQUFtQlQsT0FBTyxJQUNuRFUsZ0NBQWdDLElBQUksQ0FBQ0MsMkJBQTJCLENBQUNWLHlCQUNqRVcsVUFBVUYsK0JBQWdDLEdBQUc7UUFFbkQsT0FBT0U7SUFDVDtJQUVBRCw0QkFBNEJWLHNCQUFzQixFQUFFO1FBQ2xELE1BQU1SLE9BQU9RLHdCQUNQWSxjQUFjLElBQUksQ0FBQ0MsU0FBUyxDQUFDckIsT0FDN0JpQixnQ0FBZ0NHLGFBQWEsR0FBRztRQUV0RCxPQUFPSDtJQUNUO0lBRUFLLGNBQWN4QixPQUFPLEVBQUU7UUFDckIsTUFBTVksZ0JBQWdCLElBQUksQ0FBQ0QsZ0JBQWdCLElBQ3JDYyxZQUFZekIsUUFBUTBCLDRCQUE0QixDQUFDZDtRQUV2RCxPQUFPYTtJQUNUO0lBRUFFLGtCQUFrQjNCLE9BQU8sRUFBRTtRQUN6QixNQUFNNEIsdUJBQXVCNUIsUUFBUTZCLHVCQUF1QixJQUN0REMsZ0JBQWdCRixzQkFDaEJHLGdCQUFnQixJQUFJLENBQUMxQixVQUFVLENBQUMyQixHQUFHLENBQUMsQ0FBQ0M7WUFDbkMsTUFBTUMsZUFBZUQsVUFBVUUsZ0JBQWdCLENBQUNMO1lBRWhELE9BQU9JO1FBQ1Q7UUFFTixPQUFPSDtJQUNUO0lBRUFLLHVCQUF1QnBDLE9BQU8sRUFBRTtRQUM5QixNQUFNVSx5QkFBeUIsSUFBSSxDQUFDRix5QkFBeUIsSUFDdkRVLHFCQUFxQmxCLFFBQVFxQyw4Q0FBOEMsQ0FBQzNCO1FBRWxGLE9BQU9RO0lBQ1Q7SUFFQW9CLFdBQVczQyxZQUFZLFNBQVU0QyxLQUFLLEVBQUV2QyxPQUFPLEVBQUV3QyxPQUFPLEVBQUVDLElBQUk7UUFDNUQsSUFBSXZCO1FBRUosTUFBTXdCLDJCQUEyQixJQUFJLENBQUNDLFNBQVMsSUFBSyxHQUFHO1FBRXZEM0MsUUFBUTRDLEtBQUssQ0FBQyxDQUFDLGdCQUFnQixFQUFFRix5QkFBeUIsdUJBQXVCLENBQUM7UUFFbEZ4QixxQkFBcUIsSUFBSSxDQUFDa0Isc0JBQXNCLENBQUNwQztRQUVqRCxJQUFJa0IsdUJBQXVCLE1BQU07WUFDL0JsQixRQUFRNkMsS0FBSyxDQUFDLENBQUMsS0FBSyxFQUFFSCx5QkFBeUIsd0NBQXdDLENBQUM7WUFFeEYsT0FBT0YsUUFBUXRCLG9CQUFvQmxCLFNBQVN5QztRQUM5QztRQUVBdkIscUJBQXFCLElBQUksRUFBRSxHQUFHO1FBRTlCLE1BQU00QixxQkFBcUIsSUFBSSxDQUFDQSxrQkFBa0IsQ0FBQ0MsSUFBSSxDQUFDLElBQUk7UUFFNUQsT0FBT3ZELElBQUk7WUFDVHNEO1NBQ0QsRUFBRVAsT0FBT3ZDLFNBQVMsQ0FBQ3VDLE9BQU92QyxTQUFTeUM7WUFDbEN6QyxRQUFRZ0QscUJBQXFCLENBQUM5QjtZQUU5QmxCLFFBQVE2QyxLQUFLLENBQUMsQ0FBQyxrQkFBa0IsRUFBRUgseUJBQXlCLHFCQUFxQixDQUFDO1lBRWxGLE9BQU9GLFFBQVF0QixvQkFBb0JsQixTQUFTeUM7UUFDOUMsR0FBR0E7SUFDTCxHQUFHO0lBRUhRLGtCQUFrQmhCLFNBQVMsRUFBRTVCLFVBQVUsRUFBRWtDLEtBQUssRUFBRXZDLE9BQU8sRUFBRXdDLE9BQU8sRUFBRUMsSUFBSSxFQUFFO1FBQ3RFLE1BQU1TLGtCQUFrQmpCLFVBQVVVLFNBQVMsSUFDckNELDJCQUEyQixJQUFJLENBQUNDLFNBQVMsSUFBSyxHQUFHO1FBRXZEM0MsUUFBUTRDLEtBQUssQ0FBQyxDQUFDLGdCQUFnQixFQUFFRix5QkFBeUIsd0JBQXdCLEVBQUVRLGdCQUFnQixjQUFjLENBQUM7UUFFbkgsT0FBT2pCLFVBQVVLLFFBQVEsQ0FBQ0MsT0FBT3ZDLFNBQVMsQ0FBQ2lDLFdBQVdqQyxTQUFTeUM7WUFDN0RwQyxXQUFXOEMsSUFBSSxDQUFDbEI7WUFFaEJqQyxRQUFRNkMsS0FBSyxDQUFDLENBQUMsa0JBQWtCLEVBQUVILHlCQUF5Qix3QkFBd0IsRUFBRVEsZ0JBQWdCLFlBQVksQ0FBQztZQUVuSCxPQUFPVixRQUFRbkMsWUFBWWtDLE9BQU92QyxTQUFTeUM7UUFDN0MsR0FBR0E7SUFDTDtJQUVBSyxtQkFBbUJQLEtBQUssRUFBRXZDLE9BQU8sRUFBRXdDLE9BQU8sRUFBRUMsSUFBSSxFQUFFO1FBQ2hELE1BQU1DLDJCQUEyQixJQUFJLENBQUNDLFNBQVMsSUFBSyxHQUFHO1FBRXZEM0MsUUFBUTRDLEtBQUssQ0FBQyxDQUFDLGdCQUFnQixFQUFFRix5QkFBeUIsb0NBQW9DLENBQUM7UUFFL0YsTUFBTXJDLGFBQWEsRUFBRTtRQUVyQixPQUFPWixNQUFNLElBQUksQ0FBQ1ksVUFBVSxFQUFFLENBQUM0QixXQUFXNUIsWUFBWWtDLE9BQU92QyxTQUFTd0MsU0FBU0M7WUFDN0UsT0FBTyxJQUFJLENBQUNRLGlCQUFpQixDQUFDaEIsV0FBVzVCLFlBQVlrQyxPQUFPdkMsU0FBU3dDLFNBQVNDO1FBQ2hGLEdBQUdwQyxZQUFZa0MsT0FBT3ZDLFNBQVMsQ0FBQ0ssWUFBWWtDLE9BQU92QyxTQUFTeUM7WUFDMUQsSUFBSSxDQUFDcEMsVUFBVSxHQUFHQTtZQUVsQkwsUUFBUTZDLEtBQUssQ0FBQyxDQUFDLGtCQUFrQixFQUFFSCx5QkFBeUIsa0NBQWtDLENBQUM7WUFFL0YsT0FBT0YsUUFBUUQsT0FBT3ZDLFNBQVN5QztRQUNqQyxHQUFHQTtJQUNMO0lBRUFXLG1CQUFtQkMsY0FBYyxFQUFFQyxlQUFlLEVBQUVkLE9BQU8sRUFBRUMsSUFBSSxFQUFFO1FBQ2pFLE1BQU16QyxVQUFVc0QsaUJBQ1ZaLDJCQUEyQixJQUFJLENBQUNDLFNBQVMsSUFBSSxHQUFHO1FBRXREM0MsUUFBUTRDLEtBQUssQ0FBQyxDQUFDLGNBQWMsRUFBRUYseUJBQXlCLHFDQUFxQyxDQUFDO1FBRTlGLE1BQU1qQixZQUFZLElBQUksQ0FBQ0QsYUFBYSxDQUFDeEIsVUFDL0IrQixnQkFBZ0IsSUFBSSxDQUFDSixpQkFBaUIsQ0FBQzNCO1FBRTdDLE9BQU95QixVQUFVOEIsYUFBYSxDQUFDeEIsZUFBZSxDQUFDeUIsT0FBT2Y7WUFDcEQsTUFBTWdCLFVBQVVELE1BQU1FLFNBQVM7WUFFL0IsSUFBSSxDQUFDRCxTQUFTO2dCQUNaekQsUUFBUTJELElBQUksQ0FBQyxDQUFDLEtBQUssRUFBRWpCLHlCQUF5Qiw4Q0FBOEMsQ0FBQztnQkFFN0YsT0FBT0Q7WUFDVDtZQUVBLE1BQU1tQixpQkFBaUJKLE1BQU1LLGlCQUFpQjtZQUU5QyxJQUFJLENBQUNELGdCQUFnQjtnQkFDbkIsT0FBT25CO1lBQ1Q7WUFFQXpDLFFBQVE0QyxLQUFLLENBQUMsQ0FBQyxnQkFBZ0IsRUFBRUYseUJBQXlCLG1DQUFtQyxDQUFDO1lBRTlGLE9BQU9GLFFBQVFhLGdCQUFnQkMsaUJBQWlCYjtRQUNsRCxHQUFHQTtJQUNMO0lBRUFxQixtQkFBbUJDLElBQUksRUFBRS9ELE9BQU8sRUFBRXdDLE9BQU8sRUFBRUMsSUFBSSxFQUFFO1FBQy9DLE1BQU11QixhQUFhRCxLQUFLcEIsU0FBUyxJQUMzQkQsMkJBQTJCLElBQUksQ0FBQ0MsU0FBUyxJQUFJLEdBQUc7UUFFdEQzQyxRQUFRNEMsS0FBSyxDQUFDLENBQUMsaUJBQWlCLEVBQUVGLHlCQUF5QixnQ0FBZ0MsRUFBRXNCLFdBQVcsU0FBUyxDQUFDO1FBRWxILE1BQU1oRCxRQUFRLElBQUksQ0FBQ0gsT0FBTztRQUUxQixJQUFJLENBQUNHLE9BQU87WUFDVmhCLFFBQVE2QyxLQUFLLENBQUMsQ0FBQyxLQUFLLEVBQUVILHlCQUF5QixrQ0FBa0MsQ0FBQztZQUVsRixPQUFPRDtRQUNUO1FBRUEsTUFBTTdCLGdCQUFnQixJQUFJLENBQUNELGdCQUFnQixJQUNyQ2MsWUFBWXpCLFFBQVEwQiw0QkFBNEIsQ0FBQ2QsZ0JBQ2pEVixPQUFPNkQsS0FBS3RELE9BQU8sSUFDbkJ5QixlQUFlK0IseUJBQVksQ0FBQ0MsUUFBUSxDQUFDaEUsTUFBTUYsVUFDM0MrQixnQkFBZ0I7WUFDZEc7U0FDRDtRQUVQLE9BQU9ULFVBQVU4QixhQUFhLENBQUN4QixlQUFlLENBQUN5QixPQUFPZjtZQUNwRCxNQUFNZ0IsVUFBVUQsTUFBTUUsU0FBUztZQUUvQixJQUFJLENBQUNELFNBQVM7Z0JBQ1p6RCxRQUFRMkQsSUFBSSxDQUFDLENBQUMsS0FBSyxFQUFFakIseUJBQXlCLDhDQUE4QyxDQUFDO2dCQUU3RixPQUFPRDtZQUNUO1lBRUEsTUFBTW1CLGlCQUFpQkosTUFBTUssaUJBQWlCO1lBRTlDLElBQUksQ0FBQ0QsZ0JBQWdCO2dCQUNuQixPQUFPbkI7WUFDVDtZQUVBekMsUUFBUTZDLEtBQUssQ0FBQyxDQUFDLG1CQUFtQixFQUFFSCx5QkFBeUIsZ0NBQWdDLEVBQUVzQixXQUFXLE9BQU8sQ0FBQztZQUVsSCxPQUFPeEIsUUFBUUM7UUFDakIsR0FBR0E7SUFDTDtJQUVBMEIsU0FBUztRQUNQLElBQUlDO1FBRUosTUFBTW5FLFNBQVMsSUFBSSxDQUFDMEMsU0FBUztRQUU3QnlCLE9BQU87WUFDTG5FO1FBQ0Y7UUFFQSxPQUFPbUU7SUFDVDtJQUVBLE9BQU9oRSxPQUFPLHFCQUFxQjtJQUVuQyxPQUFPaUUsU0FBU0QsSUFBSSxFQUFFcEUsT0FBTyxFQUFFO1FBQzdCLElBQUlrQjtRQUVKb0QsSUFBQUEsb0JBQVcsRUFBQyxDQUFDdEU7WUFDWCxNQUFNLEVBQUVDLE1BQU0sRUFBRSxHQUFHbUUsTUFDYjFELHlCQUF5QjZELElBQUFBLDBDQUE2QixFQUFDdEUsUUFBUUQsVUFDL0RFLE9BQU9RLHdCQUNQUCxhQUFhLE1BQ2JDLE9BQU9vRSwrQkFBK0I5RCx3QkFBd0JWLFVBQzlESyxhQUFhb0UscUNBQXFDL0Qsd0JBQXdCVjtZQUVoRkEsVUFBVTtZQUVWa0IscUJBQXFCLElBQUlwQixtQkFBbUJFLFNBQVNDLFFBQVFDLE1BQU1DLFlBQVlDLE1BQU1DO1FBQ3ZGLEdBQUdMO1FBRUgsT0FBT2tCO0lBQ1Q7QUFDRjtBQUVBLFNBQVNzRCwrQkFBK0I5RCxzQkFBc0IsRUFBRVYsT0FBTztJQUNyRSxNQUFNSSxPQUFPTSx1QkFBdUJKLE9BQU87SUFFM0MsT0FBT0Y7QUFDVDtBQUVBLFNBQVNxRSxxQ0FBcUMvRCxzQkFBc0IsRUFBRVYsT0FBTztJQUMzRSxNQUFNMEUsaUJBQWlCaEUsdUJBQXVCaUUsaUJBQWlCLElBQ3pEdEUsYUFBYXFFLGVBQWUxQyxHQUFHLENBQUMsQ0FBQzRDO1FBQy9CLE1BQU0zQyxZQUFZakMsUUFBUTZFLDRCQUE0QixDQUFDRDtRQUV2RCxPQUFPM0M7SUFDVDtJQUVOLE9BQU81QjtBQUNUIn0=
178
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbGVtZW50L3Byb2NlZHVyZVJlZmVyZW5jZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgTm9taW5hbFZhbHVlIH0gZnJvbSBcIm9jY2FtLWZ1cnRsZVwiO1xuaW1wb3J0IHsgRWxlbWVudCwgY29udGludWF0aW9uVXRpbGl0aWVzLCBicmVha1BvaW50VXRpbGl0aWVzIH0gZnJvbSBcIm9jY2FtLWxhbmd1YWdlc1wiO1xuXG5pbXBvcnQgeyBkZWZpbmUgfSBmcm9tIFwiLi4vZWxlbWVudHNcIjtcbmltcG9ydCB7IGluc3RhbnRpYXRlIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9jb250ZXh0XCI7XG5pbXBvcnQgeyBpbnN0YW50aWF0ZVByb2NlZHVyZVJlZmVyZW5jZSB9IGZyb20gXCIuLi9wcm9jZXNzL2luc3RhbnRpYXRlXCI7XG5cbmNvbnN0IHsgYWxsLCBldmVyeSB9ID0gY29udGludWF0aW9uVXRpbGl0aWVzLFxuICAgICAgeyB1bmJyZWFrYWJsZSB9ID0gYnJlYWtQb2ludFV0aWxpdGllcztcblxuZXhwb3J0IGRlZmF1bHQgZGVmaW5lKGNsYXNzIFByb2NlZHVyZVJlZmVyZW5jZSBleHRlbmRzIEVsZW1lbnQge1xuICBjb25zdHJ1Y3Rvcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIG5hbWUsIHBhcmFtZXRlcnMpIHtcbiAgICBzdXBlcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQpO1xuXG4gICAgdGhpcy5uYW1lID0gbmFtZTtcbiAgICB0aGlzLnBhcmFtZXRlcnMgPSBwYXJhbWV0ZXJzO1xuICB9XG5cbiAgZ2V0TmFtZSgpIHtcbiAgICByZXR1cm4gdGhpcy5uYW1lO1xuICB9XG5cbiAgZ2V0UGFyYW1ldGVycygpIHtcbiAgICByZXR1cm4gdGhpcy5wYXJhbWV0ZXJzO1xuICB9XG5cbiAgZ2V0UHJvY2VkdXJlUmVmZXJlbmNlTm9kZSgpIHtcbiAgICBjb25zdCBub2RlID0gdGhpcy5nZXROb2RlKCksXG4gICAgICAgICAgcHJvY2VkdXJlUmVmZXJlbmNlTm9kZSA9IG5vZGU7XG5cbiAgICByZXR1cm4gcHJvY2VkdXJlUmVmZXJlbmNlTm9kZTtcbiAgfVxuXG4gIGdldFByb2NlZHVyZU5hbWUoKSB7XG4gICAgY29uc3QgcHJvY2VkdXJlTmFtZSA9IHRoaXMubmFtZTtcblxuICAgIHJldHVybiBwcm9jZWR1cmVOYW1lO1xuICB9XG5cbiAgaXNVbmFyeSgpIHtcbiAgICBjb25zdCBwYXJhbWV0ZXJzTGVuZ3RoID0gdGhpcy5wYXJhbWV0ZXJzLmxlbmd0aCxcbiAgICAgICAgICB1bmFyeSA9IChwYXJhbWV0ZXJzTGVuZ3RoID09PSAxKTtcblxuICAgIHJldHVybiB1bmFyeTtcbiAgfVxuXG4gIGlzRXF1YWxUbyhwcm9jZWR1cmVSZWZlcmVuY2UpIHtcbiAgICBjb25zdCBwcm9jZWR1cmVSZWZlcmVuY2VOb2RlID0gcHJvY2VkdXJlUmVmZXJlbmNlLmdldE5vZGUoKSxcbiAgICAgICAgICBwcm9jZWR1cmVSZWZlcmVuY2VOb2RlTWF0Y2hlcyA9IHRoaXMubWF0Y2hQcm9jZWR1cmVSZWZlcmVuY2VOb2RlKHByb2NlZHVyZVJlZmVyZW5jZU5vZGUpLFxuICAgICAgICAgIGVxdWFsVG8gPSBwcm9jZWR1cmVSZWZlcmVuY2VOb2RlTWF0Y2hlczsgIC8vL1xuXG4gICAgcmV0dXJuIGVxdWFsVG87XG4gIH1cblxuICBtYXRjaFByb2NlZHVyZVJlZmVyZW5jZU5vZGUocHJvY2VkdXJlUmVmZXJlbmNlTm9kZSkge1xuICAgIGNvbnN0IG5vZGUgPSBwcm9jZWR1cmVSZWZlcmVuY2VOb2RlLCAvLy9cbiAgICAgICAgICBub2RlTWF0Y2hlcyA9IHRoaXMubWF0Y2hOb2RlKG5vZGUpLFxuICAgICAgICAgIHByb2NlZHVyZVJlZmVyZW5jZU5vZGVNYXRjaGVzID0gbm9kZU1hdGNoZXM7IC8vL1xuXG4gICAgcmV0dXJuIHByb2NlZHVyZVJlZmVyZW5jZU5vZGVNYXRjaGVzO1xuICB9XG5cbiAgZmluZFByb2NlY3VyZShjb250ZXh0KSB7XG4gICAgY29uc3QgcHJvY2VkdXJlTmFtZSA9IHRoaXMuZ2V0UHJvY2VkdXJlTmFtZSgpLFxuICAgICAgICAgIHByb2NlZHVyZSA9IGNvbnRleHQuZmluZFByb2NlZHVyZUJ5UHJvY2VkdXJlTmFtZShwcm9jZWR1cmVOYW1lKTtcblxuICAgIHJldHVybiBwcm9jZWR1cmU7XG4gIH1cblxuICBmaW5kTm9taW5hbFZhbHVlcyhjb250ZXh0KSB7XG4gICAgY29uc3QgZGVyaXZlZFN1YnN0aXR1dGlvbnMgPSBjb250ZXh0LmdldERlcml2ZWRTdWJzdGl0dXRpb25zKCksXG4gICAgICAgICAgc3Vic3RpdHV0aW9ucyA9IGRlcml2ZWRTdWJzdGl0dXRpb25zLCAvLy9cbiAgICAgICAgICBub21pbmFsVmFsdWVzID0gdGhpcy5wYXJhbWV0ZXJzLm1hcCgocGFyYW1ldGVyKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBub21pbmFsVmFsdWUgPSBwYXJhbWV0ZXIuZmluZE5vbWluYWxWYWx1ZShzdWJzdGl0dXRpb25zKTtcblxuICAgICAgICAgICAgcmV0dXJuIG5vbWluYWxWYWx1ZTtcbiAgICAgICAgICB9KTtcblxuICAgIHJldHVybiBub21pbmFsVmFsdWVzO1xuICB9XG5cbiAgZmluZFByb2NlZHVyZVJlZmVyZW5jZShjb250ZXh0KSB7XG4gICAgY29uc3QgcHJvY2VkdXJlUmVmZXJlbmNlTm9kZSA9IHRoaXMuZ2V0UHJvY2VkdXJlUmVmZXJlbmNlTm9kZSgpLFxuICAgICAgICAgIHByb2NlZHVyZVJlZmVyZW5jZSA9IGNvbnRleHQuZmluZFByb2NlZHVyZVJlZmVyZW5jZUJ5UHJvY2VkdXJlUmVmZXJlbmNlTm9kZShwcm9jZWR1cmVSZWZlcmVuY2VOb2RlKTtcblxuICAgIHJldHVybiBwcm9jZWR1cmVSZWZlcmVuY2U7XG4gIH1cblxuICB2YWxpZGF0ZSA9IHVuYnJlYWthYmxlKGZ1bmN0aW9uIChzdGF0ZSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGxldCBwcm9jZWR1cmVSZWZlcmVuY2U7XG5cbiAgICBjb25zdCBwcm9jZWR1cmVSZWZlcmVuY2VTdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtwcm9jZWR1cmVSZWZlcmVuY2VTdHJpbmd9JyBmdW5jdGlvbiByZWZlcmVuY2UuLi5gKTtcblxuICAgIHByb2NlZHVyZVJlZmVyZW5jZSA9IHRoaXMuZmluZFByb2NlZHVyZVJlZmVyZW5jZShjb250ZXh0KTtcblxuICAgIGlmIChwcm9jZWR1cmVSZWZlcmVuY2UgIT09IG51bGwpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYFRoZSAnJHtwcm9jZWR1cmVSZWZlcmVuY2VTdHJpbmd9JyBmdW5jdGlvbiByZWZlcmVuY2UgaXMgYWxyZWFkeSBwcmVzZW50LmApO1xuXG4gICAgICByZXR1cm4gZm9yd2FyZChwcm9jZWR1cmVSZWZlcmVuY2UsIGNvbnRleHQsIGJhY2spO1xuICAgIH1cblxuICAgIHByb2NlZHVyZVJlZmVyZW5jZSA9IHRoaXM7IC8vL1xuXG4gICAgY29uc3QgdmFsaWRhdGVQYXJhbWV0ZXJzID0gdGhpcy52YWxpZGF0ZVBhcmFtZXRlcnMuYmluZCh0aGlzKTtcblxuICAgIHJldHVybiBhbGwoW1xuICAgICAgdmFsaWRhdGVQYXJhbWV0ZXJzXG4gICAgXSwgc3RhdGUsIGNvbnRleHQsIChzdGF0ZSwgY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgY29udGV4dC5hZGRQcm9jZWR1cmVSZWZlcmVuY2UocHJvY2VkdXJlUmVmZXJlbmNlKTtcblxuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHtwcm9jZWR1cmVSZWZlcmVuY2VTdHJpbmd9JyBmdW5jdGlvbiByZWZlcmVuY2UuYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKHByb2NlZHVyZVJlZmVyZW5jZSwgY29udGV4dCwgYmFjayk7XG4gICAgfSwgYmFjayk7XG4gIH0pO1xuXG4gIHZhbGlkYXRlUGFyYW1ldGVyKHBhcmFtZXRlciwgcGFyYW1ldGVycywgc3RhdGUsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBwYXJhbWV0ZXJTdHJpbmcgPSBwYXJhbWV0ZXIuZ2V0U3RyaW5nKCksXG4gICAgICAgICAgcHJvY2VkdXJlUmVmZXJlbmNlU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7cHJvY2VkdXJlUmVmZXJlbmNlU3RyaW5nfScgZnVuY3Rpb24gcmVmZXJlbmNlJ3MgJyR7cGFyYW1ldGVyU3RyaW5nfScgcGFyYW1ldGVyLi4uYCk7XG5cbiAgICByZXR1cm4gcGFyYW1ldGVyLnZhbGlkYXRlKHN0YXRlLCBjb250ZXh0LCAocGFyYW1ldGVyLCBjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICBwYXJhbWV0ZXJzLnB1c2gocGFyYW1ldGVyKTtcblxuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHtwcm9jZWR1cmVSZWZlcmVuY2VTdHJpbmd9JyBmdW5jdGlvbiByZWZlcmVuY2UncyAnJHtwYXJhbWV0ZXJTdHJpbmd9JyBwYXJhbWV0ZXIuYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKHBhcmFtZXRlcnMsIHN0YXRlLCBjb250ZXh0LCBiYWNrKTtcbiAgICB9LCBiYWNrKTtcbiAgfVxuXG4gIHZhbGlkYXRlUGFyYW1ldGVycyhzdGF0ZSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IHByb2NlZHVyZVJlZmVyZW5jZVN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke3Byb2NlZHVyZVJlZmVyZW5jZVN0cmluZ30nIGZ1bmN0aW9uIHJlZmVyZW5jZSdzIHBhcmFtZXRlcnMuLi5gKTtcblxuICAgIGNvbnN0IHBhcmFtZXRlcnMgPSBbXTtcblxuICAgIHJldHVybiBldmVyeSh0aGlzLnBhcmFtZXRlcnMsIChwYXJhbWV0ZXIsIHBhcmFtZXRlcnMsIHN0YXRlLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy52YWxpZGF0ZVBhcmFtZXRlcihwYXJhbWV0ZXIsIHBhcmFtZXRlcnMsIHN0YXRlLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKTtcbiAgICB9LCBwYXJhbWV0ZXJzLCBzdGF0ZSwgY29udGV4dCwgKHBhcmFtZXRlcnMsIHN0YXRlLCBjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICB0aGlzLnBhcmFtZXRlcnMgPSBwYXJhbWV0ZXJzO1xuXG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke3Byb2NlZHVyZVJlZmVyZW5jZVN0cmluZ30nIGZ1bmN0aW9uIHJlZmVyZW5jZSdzIHBhcmFtZXRlcnMuYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKHN0YXRlLCBjb250ZXh0LCBiYWNrKTtcbiAgICB9LCBiYWNrKTtcbiAgfVxuXG4gIGFwcGx5SW5kZXBlbmRlbnRseShnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHNwZWNpZmljQ29udGV4dCxcbiAgICAgICAgICBwcm9jZWR1cmVSZWZlcmVuY2VTdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYEFwcGx5aW5nIHRoZSAnJHtwcm9jZWR1cmVSZWZlcmVuY2VTdHJpbmd9JyBmdW5jdGlvbiByZWZlcmVuY2UgaW5kZXBlbmRlbnRseS4uLmApO1xuXG4gICAgY29uc3QgcHJvY2VkdXJlID0gdGhpcy5maW5kUHJvY2VjdXJlKGNvbnRleHQpLFxuICAgICAgICAgIG5vbWluYWxWYWx1ZXMgPSB0aGlzLmZpbmROb21pbmFsVmFsdWVzKGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIHByb2NlZHVyZS5ldmFsdWF0ZU5vbWluYWxseShub21pbmFsVmFsdWVzLCAodmFsdWUsIGJhY2spID0+IHtcbiAgICAgIGNvbnN0IGJvb2xlYW4gPSB2YWx1ZS5pc0Jvb2xlYW4oKTtcblxuICAgICAgaWYgKCFib29sZWFuKSB7XG4gICAgICAgIGNvbnRleHQuaW5mbyhgVGhlICcke3Byb2NlZHVyZVJlZmVyZW5jZVN0cmluZ30nIGZ1bmN0aW9uIHJlZmVyZW5jZSBkaWQgbm90IHJldHVybiBhIGJvb2xlYW4uYCk7XG5cbiAgICAgICAgcmV0dXJuIGJhY2soKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgcHJpbWl0aXZlVmFsdWUgPSB2YWx1ZS5nZXRQcmltaXRpdmVWYWx1ZSgpO1xuXG4gICAgICBpZiAoIXByaW1pdGl2ZVZhbHVlKSB7XG4gICAgICAgIHJldHVybiBiYWNrKCk7XG4gICAgICB9XG5cbiAgICAgIGNvbnRleHQudHJhY2UoYC4uLmFwcGxpZWQgdGhlICcke3Byb2NlZHVyZVJlZmVyZW5jZVN0cmluZ30nIGZ1bmN0aW9uIHJlZmVyZW5jZSBpbmRlcGVuZGVudGx5LmApO1xuXG4gICAgICByZXR1cm4gZm9yd2FyZChnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCBiYWNrKTtcbiAgICB9LCBiYWNrKTtcbiAgfVxuXG4gIGRpc2NoYXJnZUdpdmVuVGVybSh0ZXJtLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3QgdGVybVN0cmluZyA9IHRlcm0uZ2V0U3RyaW5nKCksXG4gICAgICAgICAgcHJvY2VkdXJlUmVmZXJlbmNlU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBEaXNjaGFyZ2luZyB0aGUgJyR7cHJvY2VkdXJlUmVmZXJlbmNlU3RyaW5nfScgZnVuY3Rpb24gcmVmZXJlbmNlIGdpdmVuIHRoZSAnJHt0ZXJtU3RyaW5nfScgdGVybS4uLmApO1xuXG4gICAgY29uc3QgdW5hcnkgPSB0aGlzLmlzVW5hcnkoKTtcblxuICAgIGlmICghdW5hcnkpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYFRoZSAnJHtwcm9jZWR1cmVSZWZlcmVuY2VTdHJpbmd9JyBmdW5jdGlvbiByZWZlcmVuY2UgaXMgbm90IHVuYXJ5LmApO1xuXG4gICAgICByZXR1cm4gYmFjaygpO1xuICAgIH1cblxuICAgIGNvbnN0IHByb2NlZHVyZU5hbWUgPSB0aGlzLmdldFByb2NlZHVyZU5hbWUoKSxcbiAgICAgICAgICBwcm9jZWR1cmUgPSBjb250ZXh0LmZpbmRQcm9jZWR1cmVCeVByb2NlZHVyZU5hbWUocHJvY2VkdXJlTmFtZSksXG4gICAgICAgICAgbm9kZSA9IHRlcm0uZ2V0Tm9kZSgpLFxuICAgICAgICAgIG5vbWluYWxWYWx1ZSA9IE5vbWluYWxWYWx1ZS5mcm9tTm9kZShub2RlLCBjb250ZXh0KSxcbiAgICAgICAgICBub21pbmFsVmFsdWVzID0gW1xuICAgICAgICAgICAgbm9taW5hbFZhbHVlXG4gICAgICAgICAgXTtcblxuICAgIHJldHVybiBwcm9jZWR1cmUuZXZhbHVhdGVOb21pbmFsbHkobm9taW5hbFZhbHVlcywgKHZhbHVlLCBiYWNrKSA9PiB7XG4gICAgICBjb25zdCBib29sZWFuID0gdmFsdWUuaXNCb29sZWFuKCk7XG5cbiAgICAgIGlmICghYm9vbGVhbikge1xuICAgICAgICBjb250ZXh0LmluZm8oYFRoZSAnJHtwcm9jZWR1cmVSZWZlcmVuY2VTdHJpbmd9JyBmdW5jdGlvbiByZWZlcmVuY2UgZGlkIG5vdCByZXR1cm4gYSBib29sZWFuLmApO1xuXG4gICAgICAgIHJldHVybiBiYWNrKCk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHByaW1pdGl2ZVZhbHVlID0gdmFsdWUuZ2V0UHJpbWl0aXZlVmFsdWUoKTtcblxuICAgICAgaWYgKCFwcmltaXRpdmVWYWx1ZSkge1xuICAgICAgICByZXR1cm4gYmFjaygpO1xuICAgICAgfVxuXG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi5kaXNjaGFyZ2VkIHRoZSAnJHtwcm9jZWR1cmVSZWZlcmVuY2VTdHJpbmd9JyBmdW5jdGlvbiByZWZlcmVuY2UgZ2l2ZW4gdGhlICcke3Rlcm1TdHJpbmd9JyB0ZXJtLmApO1xuXG4gICAgICByZXR1cm4gZm9yd2FyZChiYWNrKTtcbiAgICB9LCBiYWNrKTtcbiAgfVxuXG4gIHRvSlNPTigpIHtcbiAgICBsZXQganNvbjtcblxuICAgIGNvbnN0IHN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7XG5cbiAgICBqc29uID0ge1xuICAgICAgc3RyaW5nXG4gICAgfTtcblxuICAgIHJldHVybiBqc29uO1xuICB9XG5cbiAgc3RhdGljIG5hbWUgPSBcIlByb2NlZHVyZVJlZmVyZW5jZVwiO1xuXG4gIHN0YXRpYyBmcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gICAgbGV0IHByb2NlZHVyZVJlZmVyZW5jZTtcblxuICAgIGluc3RhbnRpYXRlKChjb250ZXh0KSA9PiB7XG4gICAgICBjb25zdCB7IHN0cmluZyB9ID0ganNvbixcbiAgICAgICAgICAgIHByb2NlZHVyZVJlZmVyZW5jZU5vZGUgPSBpbnN0YW50aWF0ZVByb2NlZHVyZVJlZmVyZW5jZShzdHJpbmcsIGNvbnRleHQpLFxuICAgICAgICAgICAgbm9kZSA9IHByb2NlZHVyZVJlZmVyZW5jZU5vZGUsICAvLy9cbiAgICAgICAgICAgIGJyZWFrUG9pbnQgPSBudWxsLFxuICAgICAgICAgICAgbmFtZSA9IG5hbWVGcm9tUHJvY2VkdXJlUmVmZXJlbmNlTm9kZShwcm9jZWR1cmVSZWZlcmVuY2VOb2RlLCBjb250ZXh0KSxcbiAgICAgICAgICAgIHBhcmFtZXRlcnMgPSBwYXJhbWV0ZXJzRnJvbVByb2NlZHVyZVJlZmVyZW5jZU5vZGUocHJvY2VkdXJlUmVmZXJlbmNlTm9kZSwgY29udGV4dCk7XG5cbiAgICAgIGNvbnRleHQgPSBudWxsO1xuXG4gICAgICBwcm9jZWR1cmVSZWZlcmVuY2UgPSBuZXcgUHJvY2VkdXJlUmVmZXJlbmNlKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgbmFtZSwgcGFyYW1ldGVycyk7XG4gICAgfSwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gcHJvY2VkdXJlUmVmZXJlbmNlO1xuICB9XG59KTtcblxuZnVuY3Rpb24gbmFtZUZyb21Qcm9jZWR1cmVSZWZlcmVuY2VOb2RlKHByb2NlZHVyZVJlZmVyZW5jZU5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgbmFtZSA9IHByb2NlZHVyZVJlZmVyZW5jZU5vZGUuZ2V0TmFtZSgpO1xuXG4gIHJldHVybiBuYW1lO1xufVxuXG5mdW5jdGlvbiBwYXJhbWV0ZXJzRnJvbVByb2NlZHVyZVJlZmVyZW5jZU5vZGUocHJvY2VkdXJlUmVmZXJlbmNlTm9kZSwgY29udGV4dCkge1xuICBjb25zdCBwYXJhbWV0ZXJOb2RlcyA9IHByb2NlZHVyZVJlZmVyZW5jZU5vZGUuZ2V0UGFyYW1ldGVyTm9kZXMoKSxcbiAgICAgICAgcGFyYW1ldGVycyA9IHBhcmFtZXRlck5vZGVzLm1hcCgocGFyYW1ldGVyTm9kZSkgPT4ge1xuICAgICAgICAgIGNvbnN0IHBhcmFtZXRlciA9IGNvbnRleHQuZmluZFBhcmFtZXRlckJ5UGFyYW1ldGVyTm9kZShwYXJhbWV0ZXJOb2RlKTtcblxuICAgICAgICAgIHJldHVybiBwYXJhbWV0ZXI7XG4gICAgICAgIH0pO1xuXG4gIHJldHVybiBwYXJhbWV0ZXJzO1xufVxuIl0sIm5hbWVzIjpbImFsbCIsImV2ZXJ5IiwiY29udGludWF0aW9uVXRpbGl0aWVzIiwidW5icmVha2FibGUiLCJicmVha1BvaW50VXRpbGl0aWVzIiwiZGVmaW5lIiwiUHJvY2VkdXJlUmVmZXJlbmNlIiwiRWxlbWVudCIsImNvbnRleHQiLCJzdHJpbmciLCJub2RlIiwiYnJlYWtQb2ludCIsIm5hbWUiLCJwYXJhbWV0ZXJzIiwiZ2V0TmFtZSIsImdldFBhcmFtZXRlcnMiLCJnZXRQcm9jZWR1cmVSZWZlcmVuY2VOb2RlIiwiZ2V0Tm9kZSIsInByb2NlZHVyZVJlZmVyZW5jZU5vZGUiLCJnZXRQcm9jZWR1cmVOYW1lIiwicHJvY2VkdXJlTmFtZSIsImlzVW5hcnkiLCJwYXJhbWV0ZXJzTGVuZ3RoIiwibGVuZ3RoIiwidW5hcnkiLCJpc0VxdWFsVG8iLCJwcm9jZWR1cmVSZWZlcmVuY2UiLCJwcm9jZWR1cmVSZWZlcmVuY2VOb2RlTWF0Y2hlcyIsIm1hdGNoUHJvY2VkdXJlUmVmZXJlbmNlTm9kZSIsImVxdWFsVG8iLCJub2RlTWF0Y2hlcyIsIm1hdGNoTm9kZSIsImZpbmRQcm9jZWN1cmUiLCJwcm9jZWR1cmUiLCJmaW5kUHJvY2VkdXJlQnlQcm9jZWR1cmVOYW1lIiwiZmluZE5vbWluYWxWYWx1ZXMiLCJkZXJpdmVkU3Vic3RpdHV0aW9ucyIsImdldERlcml2ZWRTdWJzdGl0dXRpb25zIiwic3Vic3RpdHV0aW9ucyIsIm5vbWluYWxWYWx1ZXMiLCJtYXAiLCJwYXJhbWV0ZXIiLCJub21pbmFsVmFsdWUiLCJmaW5kTm9taW5hbFZhbHVlIiwiZmluZFByb2NlZHVyZVJlZmVyZW5jZSIsImZpbmRQcm9jZWR1cmVSZWZlcmVuY2VCeVByb2NlZHVyZVJlZmVyZW5jZU5vZGUiLCJ2YWxpZGF0ZSIsInN0YXRlIiwiZm9yd2FyZCIsImJhY2siLCJwcm9jZWR1cmVSZWZlcmVuY2VTdHJpbmciLCJnZXRTdHJpbmciLCJ0cmFjZSIsImRlYnVnIiwidmFsaWRhdGVQYXJhbWV0ZXJzIiwiYmluZCIsImFkZFByb2NlZHVyZVJlZmVyZW5jZSIsInZhbGlkYXRlUGFyYW1ldGVyIiwicGFyYW1ldGVyU3RyaW5nIiwicHVzaCIsImFwcGx5SW5kZXBlbmRlbnRseSIsImdlbmVyYWxDb250ZXh0Iiwic3BlY2lmaWNDb250ZXh0IiwiZXZhbHVhdGVOb21pbmFsbHkiLCJ2YWx1ZSIsImJvb2xlYW4iLCJpc0Jvb2xlYW4iLCJpbmZvIiwicHJpbWl0aXZlVmFsdWUiLCJnZXRQcmltaXRpdmVWYWx1ZSIsImRpc2NoYXJnZUdpdmVuVGVybSIsInRlcm0iLCJ0ZXJtU3RyaW5nIiwiTm9taW5hbFZhbHVlIiwiZnJvbU5vZGUiLCJ0b0pTT04iLCJqc29uIiwiZnJvbUpTT04iLCJpbnN0YW50aWF0ZSIsImluc3RhbnRpYXRlUHJvY2VkdXJlUmVmZXJlbmNlIiwibmFtZUZyb21Qcm9jZWR1cmVSZWZlcmVuY2VOb2RlIiwicGFyYW1ldGVyc0Zyb21Qcm9jZWR1cmVSZWZlcmVuY2VOb2RlIiwicGFyYW1ldGVyTm9kZXMiLCJnZXRQYXJhbWV0ZXJOb2RlcyIsInBhcmFtZXRlck5vZGUiLCJmaW5kUGFyYW1ldGVyQnlQYXJhbWV0ZXJOb2RlIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFZQTs7O2VBQUE7Ozs2QkFWNkI7Z0NBQ3VDOzBCQUU3Qzt5QkFDSzs2QkFDa0I7QUFFOUMsTUFBTSxFQUFFQSxHQUFHLEVBQUVDLEtBQUssRUFBRSxHQUFHQyxxQ0FBcUIsRUFDdEMsRUFBRUMsV0FBVyxFQUFFLEdBQUdDLG1DQUFtQjtNQUUzQyxXQUFlQyxJQUFBQSxnQkFBTSxFQUFDLE1BQU1DLDJCQUEyQkMsdUJBQU87SUFDNUQsWUFBWUMsT0FBTyxFQUFFQyxNQUFNLEVBQUVDLElBQUksRUFBRUMsVUFBVSxFQUFFQyxJQUFJLEVBQUVDLFVBQVUsQ0FBRTtRQUMvRCxLQUFLLENBQUNMLFNBQVNDLFFBQVFDLE1BQU1DO1FBRTdCLElBQUksQ0FBQ0MsSUFBSSxHQUFHQTtRQUNaLElBQUksQ0FBQ0MsVUFBVSxHQUFHQTtJQUNwQjtJQUVBQyxVQUFVO1FBQ1IsT0FBTyxJQUFJLENBQUNGLElBQUk7SUFDbEI7SUFFQUcsZ0JBQWdCO1FBQ2QsT0FBTyxJQUFJLENBQUNGLFVBQVU7SUFDeEI7SUFFQUcsNEJBQTRCO1FBQzFCLE1BQU1OLE9BQU8sSUFBSSxDQUFDTyxPQUFPLElBQ25CQyx5QkFBeUJSO1FBRS9CLE9BQU9RO0lBQ1Q7SUFFQUMsbUJBQW1CO1FBQ2pCLE1BQU1DLGdCQUFnQixJQUFJLENBQUNSLElBQUk7UUFFL0IsT0FBT1E7SUFDVDtJQUVBQyxVQUFVO1FBQ1IsTUFBTUMsbUJBQW1CLElBQUksQ0FBQ1QsVUFBVSxDQUFDVSxNQUFNLEVBQ3pDQyxRQUFTRixxQkFBcUI7UUFFcEMsT0FBT0U7SUFDVDtJQUVBQyxVQUFVQyxrQkFB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
@@ -35,11 +35,10 @@ const _default = (0, _elements.define)(class Property extends _occamlanguages.El
35
35
  }
36
36
  getString(includeType = true) {
37
37
  let string;
38
+ string = super.getString();
38
39
  if (includeType) {
39
- const termString = this.term.getString(), typeString = this.type.getString();
40
- string = `${termString}.${typeString}`;
41
- } else {
42
- string = super.getString();
40
+ const typeString = this.type.getString();
41
+ string = `${string}.${typeString}`;
43
42
  }
44
43
  return string;
45
44
  }
@@ -150,4 +149,4 @@ function termFromPropertyNode(propertyNode, context) {
150
149
  return term;
151
150
  }
152
151
 
153
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbGVtZW50L3Byb3BlcnR5LmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBFbGVtZW50LCBicmVha1BvaW50VXRpbGl0aWVzLCBjb250aW51YXRpb25VdGlsaXRpZXMgfSBmcm9tIFwib2NjYW0tbGFuZ3VhZ2VzXCI7XG5cbmltcG9ydCB7IGRlZmluZSB9IGZyb20gXCIuLi9lbGVtZW50c1wiO1xuaW1wb3J0IHsgZGVzaXN0LCBkZWNsYXJlIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9zdGF0ZVwiO1xuaW1wb3J0IHsgaW5zdGFudGlhdGVQcm9wZXJ0eSB9IGZyb20gXCIuLi9wcm9jZXNzL2luc3RhbnRpYXRlXCI7XG5pbXBvcnQgeyB1bmlmeVRlcm1XaXRoUHJvcGVydHkgfSBmcm9tIFwiLi4vcHJvY2Vzcy91bmlmeVwiO1xuaW1wb3J0IHsgdmFsaWRhdGVUZXJtQXNQcm9wZXJ0eSB9IGZyb20gXCIuLi9wcm9jZXNzL3ZhbGlkYXRlXCI7XG5pbXBvcnQgeyB0eXBlRnJvbUpTT04sIHR5cGVUb1R5cGVKU09OIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9qc29uXCI7XG5pbXBvcnQgeyBpc29sYXRlLCBhdHRlbXB0LCBzZXJpYWxpc2UsIHVuc2VyaWFsaXNlLCBpbnN0YW50aWF0ZSB9IGZyb20gXCIuLi91dGlsaXRpZXMvY29udGV4dFwiO1xuXG5jb25zdCB7IHVuYnJlYWthYmxlIH0gPSBicmVha1BvaW50VXRpbGl0aWVzLFxuICAgICAgeyBjdXQsIGFsbCwgZXhpc3RzIH0gPSBjb250aW51YXRpb25VdGlsaXRpZXM7XG5cbmV4cG9ydCBkZWZhdWx0IGRlZmluZShjbGFzcyBQcm9wZXJ0eSBleHRlbmRzIEVsZW1lbnQge1xuICBjb25zdHJ1Y3Rvcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIHRlcm0sIHR5cGUpIHtcbiAgICBzdXBlcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQpO1xuXG4gICAgdGhpcy50ZXJtID0gdGVybTtcbiAgICB0aGlzLnR5cGUgPSB0eXBlO1xuICB9XG5cbiAgZ2V0VGVybSgpIHtcbiAgICByZXR1cm4gdGhpcy50ZXJtO1xuICB9XG5cbiAgZ2V0VHlwZSgpIHtcbiAgICByZXR1cm4gdGhpcy50eXBlO1xuICB9XG5cbiAgZ2V0UHJvcGVydHlOb2RlKCkge1xuICAgIGNvbnN0IG5vZGUgPSB0aGlzLmdldE5vZGUoKSxcbiAgICAgICAgICBwcm9wZXJ0eU5vZGUgPSBub2RlOyAgLy8vXG5cbiAgICByZXR1cm4gcHJvcGVydHlOb2RlO1xuICB9XG5cbiAgZ2V0U3RyaW5nKGluY2x1ZGVUeXBlID0gdHJ1ZSkge1xuICAgIGxldCBzdHJpbmc7XG5cbiAgICBpZiAoaW5jbHVkZVR5cGUpIHtcbiAgICAgIGNvbnN0IHRlcm1TdHJpbmcgPSB0aGlzLnRlcm0uZ2V0U3RyaW5nKCksXG4gICAgICAgICAgICB0eXBlU3RyaW5nID0gdGhpcy50eXBlLmdldFN0cmluZygpO1xuXG4gICAgICBzdHJpbmcgPSBgJHt0ZXJtU3RyaW5nfS4ke3R5cGVTdHJpbmd9YDtcbiAgICB9IGVsc2Uge1xuICAgICAgc3RyaW5nID0gc3VwZXIuZ2V0U3RyaW5nKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHN0cmluZztcbiAgfVxuXG4gIHNldFR5cGUodHlwZSkge1xuICAgIHRoaXMudHlwZSA9IHR5cGU7XG4gIH1cblxuICBpc01hbGZvcm1lZCgpIHtcbiAgICBjb25zdCBwcm9wZXJ0eU5vZGUgPSB0aGlzLmdldFByb3BlcnR5Tm9kZSgpLFxuICAgICAgICAgIG1hbGZvcm1lZCA9IHByb3BlcnR5Tm9kZS5pc01hbGZvcm1lZCgpO1xuXG4gICAgcmV0dXJuIG1hbGZvcm1lZDtcbiAgfVxuXG4gIHZlcmlmeSA9IHVuYnJlYWthYmxlKGZ1bmN0aW9uIChjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgZm9yd2FyZCA9IGN1dChmb3J3YXJkLCBiYWNrKTsgLy8vXG5cbiAgICBjb25zdCBpbmNsdWRlVHlwZSA9IGZhbHNlLFxuICAgICAgICAgIHByb3BlcnR5U3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoaW5jbHVkZVR5cGUpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke3Byb3BlcnR5U3RyaW5nfScgcHJvcGVydHkuLi5gKTtcblxuICAgIGNvbnN0IG1hbGZvcm1lZCA9IHRoaXMuaXNNYWxmb3JtZWQoKTtcblxuICAgIGlmIChtYWxmb3JtZWQpIHtcbiAgICAgIGNvbnRleHQudHJhY2UoYFVuYWJsZSB0byB2ZXJpZnkgdGhlICcke3Byb3BlcnR5U3RyaW5nfScgcHJvcGVydHkgYmVjYXVzZSBpdCBpcyBtYWxmb3JtZWQuYCk7XG5cbiAgICAgIHJldHVybiBiYWNrKCk7XG4gICAgfVxuXG4gICAgZGVjbGFyZSgoc3RhdGUpID0+IHtcbiAgICAgIGRlc2lzdCgoc3RhdGUpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmFsaWRhdGUoc3RhdGUsIGNvbnRleHQsIChwcm9wZXJ0eSwgY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHtwcm9wZXJ0eVN0cmluZ30nIHByb3BlcnR5LmApO1xuXG4gICAgICAgICAgcmV0dXJuIGZvcndhcmQoY29udGV4dCwgYmFjayk7XG4gICAgICAgIH0sIGJhY2spO1xuICAgICAgfSwgc3RhdGUpO1xuICAgIH0pO1xuICB9KTtcblxuICB2YWxpZGF0ZSA9IHVuYnJlYWthYmxlKGZ1bmN0aW9uIChzdGF0ZSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IGluY2x1ZGVUeXBlID0gZmFsc2UsXG4gICAgICAgICAgcHJvcGVydHlTdHJpbmcgPSB0aGlzLmdldFN0cmluZyhpbmNsdWRlVHlwZSk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke3Byb3BlcnR5U3RyaW5nfScgcHJvcGVydHkuLi5gKTtcblxuICAgIHJldHVybiBpc29sYXRlKChzdGF0ZSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykgPT4ge1xuICAgICAgcmV0dXJuIGF0dGVtcHQoKGNvbnRleHQpID0+IHtcbiAgICAgICAgY29uc3QgdmFsaWRhdGVUZXJtQXNQcm9wZXJ0eSA9IHRoaXMudmFsaWRhdGVUZXJtQXNQcm9wZXJ0eS5iaW5kKHRoaXMpO1xuXG4gICAgICAgIHJldHVybiBleGlzdHMoW1xuICAgICAgICAgIHZhbGlkYXRlVGVybUFzUHJvcGVydHlcbiAgICAgICAgXSwgc3RhdGUsIGNvbnRleHQsIChzdGF0ZSwgY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgICAgIHRoaXMuY29tbWl0KGNvbnRleHQpO1xuXG4gICAgICAgICAgcmV0dXJuIGZvcndhcmQoYmFjayk7XG4gICAgICAgIH0sIGJhY2spO1xuICAgICAgfSwgY29udGV4dCk7XG4gICAgfSwgc3RhdGUsIGNvbnRleHQsIChzdGF0ZSwgY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgY29uc3QgcHJvcGVydHkgPSB0aGlzOyAvLy9cblxuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHtwcm9wZXJ0eVN0cmluZ30nIHByb3BlcnR5LmApO1xuXG4gICAgICByZXR1cm4gZm9yd2FyZChwcm9wZXJ0eSwgY29udGV4dCwgYmFjayk7XG4gICAgfSwgYmFjayk7XG4gIH0pO1xuXG4gIHZhbGlkYXRlVGVybUFzUHJvcGVydHkoc3RhdGUsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBpbmNsdWRlVHlwZSA9IGZhbHNlLFxuICAgICAgICAgIHByb3BlcnR5U3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoaW5jbHVkZVR5cGUpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtwcm9wZXJ0eVN0cmluZ30nIHByb3BlcnR5J3MgdGVybS4uLmApO1xuXG4gICAgcmV0dXJuIHZhbGlkYXRlVGVybUFzUHJvcGVydHkodGhpcy50ZXJtLCBjb250ZXh0LCAoY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgY29udGV4dC5hZGRUZXJtKHRoaXMudGVybSk7XG5cbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7cHJvcGVydHlTdHJpbmd9JyBwcm9wZXJ0eSdzIHRlcm0uYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKHN0YXRlLCBjb250ZXh0LCBiYWNrKTtcbiAgICB9LCBiYWNrKTtcbiAgfVxuXG4gIHVuaWZ5VGVybSh0ZXJtLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3QgdGVybVN0cmluZyA9IHRlcm0uZ2V0U3RyaW5nKCk7XG5cbiAgICBjb250ZXh0LnRyYWNlKGBVbmlmeWluZyB0aGUgJyR7dGVybVN0cmluZ30nIHRlcm0uLi5gKTtcblxuICAgIGNvbnN0IHVuaWZ5VGVybVdpdGhQcm9wZXJ0eSA9IHRoaXMudW5pZnlUZXJtV2l0aFByb3BlcnR5LmJpbmQodGhpcyk7XG5cbiAgICByZXR1cm4gYWxsKFtcbiAgICAgIHVuaWZ5VGVybVdpdGhQcm9wZXJ0eVxuICAgIF0sIHRlcm0sIGNvbnRleHQsICh0ZXJtLCBjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICBjb25zdCBwcm92aXNpb25hbCA9IHRoaXMudHlwZS5pc1Byb3Zpc2lvbmFsKCk7XG5cbiAgICAgIHRlcm0uc2V0UHJvdmlzaW9uYWwocHJvdmlzaW9uYWwpO1xuXG4gICAgICB0ZXJtLnNldFR5cGUodGhpcy50eXBlKTtcblxuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udW5pZmllZCB0aGUgJyR7dGVybVN0cmluZ30nIHRlcm0uYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKHRlcm0sIGNvbnRleHQsIGJhY2spO1xuICAgIH0sIGJhY2spO1xuICB9XG5cbiAgdW5pZnlUZXJtV2l0aFByb3BlcnR5KHRlcm0sIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCB0ZXJtU3RyaW5nID0gdGVybS5nZXRTdHJpbmcoKSxcbiAgICAgICAgICBpbmNsdWRlVHlwZSA9IHRydWUsXG4gICAgICAgICAgcHJvcGVydHlTdHJpbmcgPSB0aGlzLmdldFN0cmluZyhpbmNsdWRlVHlwZSk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHt0ZXJtU3RyaW5nfScgdGVybSB3aXRoIHRoZSAnJHtwcm9wZXJ0eVN0cmluZ30nIHByb3BlcnR5Li4uYCk7XG5cbiAgICBjb25zdCBwcm9wZXJ0eSA9IHRoaXMsIC8vL1xuICAgICAgICAgIGdlbmVyYWxDb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksICAvLy9cbiAgICAgICAgICBzcGVjaWZpY0NvbnRleHQgPSBjb250ZXh0OyAvLy9cblxuICAgIHJldHVybiB1bmlmeVRlcm1XaXRoUHJvcGVydHkodGVybSwgcHJvcGVydHksIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIChnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICBjb25zdCBjb250ZXh0ID0gc3BlY2lmaWNDb250ZXh0OyAvLy9cblxuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udW5pZmllZCB0aGUgJyR7dGVybVN0cmluZ30nIHRlcm0gd2l0aCB0aGUgJyR7cHJvcGVydHlTdHJpbmd9JyBwcm9wZXJ0eS5gKTtcblxuICAgICAgcmV0dXJuIGZvcndhcmQodGVybSwgY29udGV4dCwgYmFjayk7XG4gICAgfSwgYmFjayk7XG4gIH1cblxuICB0b0pTT04oKSB7XG4gICAgbGV0IGpzb247XG5cbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCk7XG5cbiAgICBzZXJpYWxpc2UoKGNvbnRleHQpID0+IHtcbiAgICAgIGNvbnN0IGluY2x1ZGVUeXBlID0gZmFsc2UsXG4gICAgICAgICAgICBzdHJpbmcgPSB0aGlzLmdldFN0cmluZyhpbmNsdWRlVHlwZSksXG4gICAgICAgICAgICB0eXBlSlNPTiA9IHR5cGVUb1R5cGVKU09OKHRoaXMudHlwZSksXG4gICAgICAgICAgICB0eXBlID0gdHlwZUpTT047ICAvLy9cblxuICAgICAganNvbiA9IHtcbiAgICAgICAgY29udGV4dCxcbiAgICAgICAgc3RyaW5nLFxuICAgICAgICB0eXBlXG4gICAgICB9O1xuICAgIH0sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIGpzb247XG4gIH1cblxuICBzdGF0aWMgbmFtZSA9IFwiUHJvcGVydHlcIjtcblxuICBzdGF0aWMgZnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICAgIGxldCBwcm9wZXJ0eTtcblxuICAgIGluc3RhbnRpYXRlKChjb250ZXh0KSA9PiB7XG4gICAgICB1bnNlcmlhbGlzZSgoanNvbiwgY29udGV4dCkgPT4ge1xuICAgICAgICBjb25zdCB7IHN0cmluZyB9ID0ganNvbixcbiAgICAgICAgICAgICAgcHJvcGVydHlOb2RlID0gaW5zdGFudGlhdGVQcm9wZXJ0eShzdHJpbmcsIGNvbnRleHQpLFxuICAgICAgICAgICAgICBub2RlID0gcHJvcGVydHlOb2RlLCAvLy9cbiAgICAgICAgICAgICAgYnJlYWtQb2ludCA9IG51bGwsXG4gICAgICAgICAgICAgIHRlcm0gPSB0ZXJtRnJvbVByb3BlcnR5Tm9kZShwcm9wZXJ0eU5vZGUsIGNvbnRleHQpLFxuICAgICAgICAgICAgICB0eXBlID0gdHlwZUZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgICAgIHByb3BlcnR5ID0gbmV3IFByb3BlcnR5KGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgdGVybSwgdHlwZSk7XG4gICAgICB9LCBqc29uLCBjb250ZXh0KTtcbiAgICB9LCBjb250ZXh0KTtcblxuICAgIHJldHVybiBwcm9wZXJ0eTtcbiAgfVxufSk7XG5cbmZ1bmN0aW9uIHRlcm1Gcm9tUHJvcGVydHlOb2RlKHByb3BlcnR5Tm9kZSwgY29udGV4dCkge1xuICBjb25zdCB0ZXJtTm9kZSA9IHByb3BlcnR5Tm9kZS5nZXRUZXJtTm9kZSgpLFxuICAgICAgICB0ZXJtID0gY29udGV4dC5maW5kVGVybUJ5VGVybU5vZGUodGVybU5vZGUpO1xuXG4gIHJldHVybiB0ZXJtO1xufVxuIl0sIm5hbWVzIjpbInVuYnJlYWthYmxlIiwiYnJlYWtQb2ludFV0aWxpdGllcyIsImN1dCIsImFsbCIsImV4aXN0cyIsImNvbnRpbnVhdGlvblV0aWxpdGllcyIsImRlZmluZSIsIlByb3BlcnR5IiwiRWxlbWVudCIsImNvbnRleHQiLCJzdHJpbmciLCJub2RlIiwiYnJlYWtQb2ludCIsInRlcm0iLCJ0eXBlIiwiZ2V0VGVybSIsImdldFR5cGUiLCJnZXRQcm9wZXJ0eU5vZGUiLCJnZXROb2RlIiwicHJvcGVydHlOb2RlIiwiZ2V0U3RyaW5nIiwiaW5jbHVkZVR5cGUiLCJ0ZXJtU3RyaW5nIiwidHlwZVN0cmluZyIsInNldFR5cGUiLCJpc01hbGZvcm1lZCIsIm1hbGZvcm1lZCIsInZlcmlmeSIsImZvcndhcmQiLCJiYWNrIiwicHJvcGVydHlTdHJpbmciLCJ0cmFjZSIsImRlY2xhcmUiLCJzdGF0ZSIsImRlc2lzdCIsInZhbGlkYXRlIiwicHJvcGVydHkiLCJkZWJ1ZyIsImlzb2xhdGUiLCJhdHRlbXB0IiwidmFsaWRhdGVUZXJtQXNQcm9wZXJ0eSIsImJpbmQiLCJjb21taXQiLCJhZGRUZXJtIiwidW5pZnlUZXJtIiwidW5pZnlUZXJtV2l0aFByb3BlcnR5IiwicHJvdmlzaW9uYWwiLCJpc1Byb3Zpc2lvbmFsIiwic2V0UHJvdmlzaW9uYWwiLCJnZW5lcmFsQ29udGV4dCIsImdldENvbnRleHQiLCJzcGVjaWZpY0NvbnRleHQiLCJ0b0pTT04iLCJqc29uIiwic2VyaWFsaXNlIiwidHlwZUpTT04iLCJ0eXBlVG9UeXBlSlNPTiIsIm5hbWUiLCJmcm9tSlNPTiIsImluc3RhbnRpYXRlIiwidW5zZXJpYWxpc2UiLCJpbnN0YW50aWF0ZVByb3BlcnR5IiwidGVybUZyb21Qcm9wZXJ0eU5vZGUiLCJ0eXBlRnJvbUpTT04iLCJ0ZXJtTm9kZSIsImdldFRlcm1Ob2Rl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
152
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbGVtZW50L3Byb3BlcnR5LmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBFbGVtZW50LCBicmVha1BvaW50VXRpbGl0aWVzLCBjb250aW51YXRpb25VdGlsaXRpZXMgfSBmcm9tIFwib2NjYW0tbGFuZ3VhZ2VzXCI7XG5cbmltcG9ydCB7IGRlZmluZSB9IGZyb20gXCIuLi9lbGVtZW50c1wiO1xuaW1wb3J0IHsgZGVzaXN0LCBkZWNsYXJlIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9zdGF0ZVwiO1xuaW1wb3J0IHsgaW5zdGFudGlhdGVQcm9wZXJ0eSB9IGZyb20gXCIuLi9wcm9jZXNzL2luc3RhbnRpYXRlXCI7XG5pbXBvcnQgeyB1bmlmeVRlcm1XaXRoUHJvcGVydHkgfSBmcm9tIFwiLi4vcHJvY2Vzcy91bmlmeVwiO1xuaW1wb3J0IHsgdmFsaWRhdGVUZXJtQXNQcm9wZXJ0eSB9IGZyb20gXCIuLi9wcm9jZXNzL3ZhbGlkYXRlXCI7XG5pbXBvcnQgeyB0eXBlRnJvbUpTT04sIHR5cGVUb1R5cGVKU09OIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9qc29uXCI7XG5pbXBvcnQgeyBpc29sYXRlLCBhdHRlbXB0LCBzZXJpYWxpc2UsIHVuc2VyaWFsaXNlLCBpbnN0YW50aWF0ZSB9IGZyb20gXCIuLi91dGlsaXRpZXMvY29udGV4dFwiO1xuXG5jb25zdCB7IHVuYnJlYWthYmxlIH0gPSBicmVha1BvaW50VXRpbGl0aWVzLFxuICAgICAgeyBjdXQsIGFsbCwgZXhpc3RzIH0gPSBjb250aW51YXRpb25VdGlsaXRpZXM7XG5cbmV4cG9ydCBkZWZhdWx0IGRlZmluZShjbGFzcyBQcm9wZXJ0eSBleHRlbmRzIEVsZW1lbnQge1xuICBjb25zdHJ1Y3Rvcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIHRlcm0sIHR5cGUpIHtcbiAgICBzdXBlcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQpO1xuXG4gICAgdGhpcy50ZXJtID0gdGVybTtcbiAgICB0aGlzLnR5cGUgPSB0eXBlO1xuICB9XG5cbiAgZ2V0VGVybSgpIHtcbiAgICByZXR1cm4gdGhpcy50ZXJtO1xuICB9XG5cbiAgZ2V0VHlwZSgpIHtcbiAgICByZXR1cm4gdGhpcy50eXBlO1xuICB9XG5cbiAgZ2V0UHJvcGVydHlOb2RlKCkge1xuICAgIGNvbnN0IG5vZGUgPSB0aGlzLmdldE5vZGUoKSxcbiAgICAgICAgICBwcm9wZXJ0eU5vZGUgPSBub2RlOyAgLy8vXG5cbiAgICByZXR1cm4gcHJvcGVydHlOb2RlO1xuICB9XG5cbiAgZ2V0U3RyaW5nKGluY2x1ZGVUeXBlID0gdHJ1ZSkge1xuICAgIGxldCBzdHJpbmc7XG5cbiAgICBzdHJpbmcgPSBzdXBlci5nZXRTdHJpbmcoKTtcblxuICAgIGlmIChpbmNsdWRlVHlwZSkge1xuICAgICAgY29uc3QgdHlwZVN0cmluZyA9IHRoaXMudHlwZS5nZXRTdHJpbmcoKTtcblxuICAgICAgc3RyaW5nID0gYCR7c3RyaW5nfS4ke3R5cGVTdHJpbmd9YDtcbiAgICB9XG5cbiAgICByZXR1cm4gc3RyaW5nO1xuICB9XG5cbiAgc2V0VHlwZSh0eXBlKSB7XG4gICAgdGhpcy50eXBlID0gdHlwZTtcbiAgfVxuXG4gIGlzTWFsZm9ybWVkKCkge1xuICAgIGNvbnN0IHByb3BlcnR5Tm9kZSA9IHRoaXMuZ2V0UHJvcGVydHlOb2RlKCksXG4gICAgICAgICAgbWFsZm9ybWVkID0gcHJvcGVydHlOb2RlLmlzTWFsZm9ybWVkKCk7XG5cbiAgICByZXR1cm4gbWFsZm9ybWVkO1xuICB9XG5cbiAgdmVyaWZ5ID0gdW5icmVha2FibGUoZnVuY3Rpb24gKGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBmb3J3YXJkID0gY3V0KGZvcndhcmQsIGJhY2spOyAvLy9cblxuICAgIGNvbnN0IGluY2x1ZGVUeXBlID0gZmFsc2UsXG4gICAgICAgICAgcHJvcGVydHlTdHJpbmcgPSB0aGlzLmdldFN0cmluZyhpbmNsdWRlVHlwZSk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7cHJvcGVydHlTdHJpbmd9JyBwcm9wZXJ0eS4uLmApO1xuXG4gICAgY29uc3QgbWFsZm9ybWVkID0gdGhpcy5pc01hbGZvcm1lZCgpO1xuXG4gICAgaWYgKG1hbGZvcm1lZCkge1xuICAgICAgY29udGV4dC50cmFjZShgVW5hYmxlIHRvIHZlcmlmeSB0aGUgJyR7cHJvcGVydHlTdHJpbmd9JyBwcm9wZXJ0eSBiZWNhdXNlIGl0IGlzIG1hbGZvcm1lZC5gKTtcblxuICAgICAgcmV0dXJuIGJhY2soKTtcbiAgICB9XG5cbiAgICBkZWNsYXJlKChzdGF0ZSkgPT4ge1xuICAgICAgZGVzaXN0KChzdGF0ZSkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy52YWxpZGF0ZShzdGF0ZSwgY29udGV4dCwgKHByb3BlcnR5LCBjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke3Byb3BlcnR5U3RyaW5nfScgcHJvcGVydHkuYCk7XG5cbiAgICAgICAgICByZXR1cm4gZm9yd2FyZChjb250ZXh0LCBiYWNrKTtcbiAgICAgICAgfSwgYmFjayk7XG4gICAgICB9LCBzdGF0ZSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIHZhbGlkYXRlID0gdW5icmVha2FibGUoZnVuY3Rpb24gKHN0YXRlLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3QgaW5jbHVkZVR5cGUgPSBmYWxzZSxcbiAgICAgICAgICBwcm9wZXJ0eVN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKGluY2x1ZGVUeXBlKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7cHJvcGVydHlTdHJpbmd9JyBwcm9wZXJ0eS4uLmApO1xuXG4gICAgcmV0dXJuIGlzb2xhdGUoKHN0YXRlLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSA9PiB7XG4gICAgICByZXR1cm4gYXR0ZW1wdCgoY29udGV4dCkgPT4ge1xuICAgICAgICBjb25zdCB2YWxpZGF0ZVRlcm1Bc1Byb3BlcnR5ID0gdGhpcy52YWxpZGF0ZVRlcm1Bc1Byb3BlcnR5LmJpbmQodGhpcyk7XG5cbiAgICAgICAgcmV0dXJuIGV4aXN0cyhbXG4gICAgICAgICAgdmFsaWRhdGVUZXJtQXNQcm9wZXJ0eVxuICAgICAgICBdLCBzdGF0ZSwgY29udGV4dCwgKHN0YXRlLCBjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICAgICAgdGhpcy5jb21taXQoY29udGV4dCk7XG5cbiAgICAgICAgICByZXR1cm4gZm9yd2FyZChiYWNrKTtcbiAgICAgICAgfSwgYmFjayk7XG4gICAgICB9LCBjb250ZXh0KTtcbiAgICB9LCBzdGF0ZSwgY29udGV4dCwgKHN0YXRlLCBjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICBjb25zdCBwcm9wZXJ0eSA9IHRoaXM7IC8vL1xuXG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke3Byb3BlcnR5U3RyaW5nfScgcHJvcGVydHkuYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKHByb3BlcnR5LCBjb250ZXh0LCBiYWNrKTtcbiAgICB9LCBiYWNrKTtcbiAgfSk7XG5cbiAgdmFsaWRhdGVUZXJtQXNQcm9wZXJ0eShzdGF0ZSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IGluY2x1ZGVUeXBlID0gZmFsc2UsXG4gICAgICAgICAgcHJvcGVydHlTdHJpbmcgPSB0aGlzLmdldFN0cmluZyhpbmNsdWRlVHlwZSk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke3Byb3BlcnR5U3RyaW5nfScgcHJvcGVydHkncyB0ZXJtLi4uYCk7XG5cbiAgICByZXR1cm4gdmFsaWRhdGVUZXJtQXNQcm9wZXJ0eSh0aGlzLnRlcm0sIGNvbnRleHQsIChjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICBjb250ZXh0LmFkZFRlcm0odGhpcy50ZXJtKTtcblxuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHtwcm9wZXJ0eVN0cmluZ30nIHByb3BlcnR5J3MgdGVybS5gKTtcblxuICAgICAgcmV0dXJuIGZvcndhcmQoc3RhdGUsIGNvbnRleHQsIGJhY2spO1xuICAgIH0sIGJhY2spO1xuICB9XG5cbiAgdW5pZnlUZXJtKHRlcm0sIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCB0ZXJtU3RyaW5nID0gdGVybS5nZXRTdHJpbmcoKTtcblxuICAgIGNvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHt0ZXJtU3RyaW5nfScgdGVybS4uLmApO1xuXG4gICAgY29uc3QgdW5pZnlUZXJtV2l0aFByb3BlcnR5ID0gdGhpcy51bmlmeVRlcm1XaXRoUHJvcGVydHkuYmluZCh0aGlzKTtcblxuICAgIHJldHVybiBhbGwoW1xuICAgICAgdW5pZnlUZXJtV2l0aFByb3BlcnR5XG4gICAgXSwgdGVybSwgY29udGV4dCwgKHRlcm0sIGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIGNvbnN0IHByb3Zpc2lvbmFsID0gdGhpcy50eXBlLmlzUHJvdmlzaW9uYWwoKTtcblxuICAgICAgdGVybS5zZXRQcm92aXNpb25hbChwcm92aXNpb25hbCk7XG5cbiAgICAgIHRlcm0uc2V0VHlwZSh0aGlzLnR5cGUpO1xuXG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi51bmlmaWVkIHRoZSAnJHt0ZXJtU3RyaW5nfScgdGVybS5gKTtcblxuICAgICAgcmV0dXJuIGZvcndhcmQodGVybSwgY29udGV4dCwgYmFjayk7XG4gICAgfSwgYmFjayk7XG4gIH1cblxuICB1bmlmeVRlcm1XaXRoUHJvcGVydHkodGVybSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IHRlcm1TdHJpbmcgPSB0ZXJtLmdldFN0cmluZygpLFxuICAgICAgICAgIGluY2x1ZGVUeXBlID0gdHJ1ZSxcbiAgICAgICAgICBwcm9wZXJ0eVN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKGluY2x1ZGVUeXBlKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVW5pZnlpbmcgdGhlICcke3Rlcm1TdHJpbmd9JyB0ZXJtIHdpdGggdGhlICcke3Byb3BlcnR5U3RyaW5nfScgcHJvcGVydHkuLi5gKTtcblxuICAgIGNvbnN0IHByb3BlcnR5ID0gdGhpcywgLy8vXG4gICAgICAgICAgZ2VuZXJhbENvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSwgIC8vL1xuICAgICAgICAgIHNwZWNpZmljQ29udGV4dCA9IGNvbnRleHQ7IC8vL1xuXG4gICAgcmV0dXJuIHVuaWZ5VGVybVdpdGhQcm9wZXJ0eSh0ZXJtLCBwcm9wZXJ0eSwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgKGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIGNvbnN0IGNvbnRleHQgPSBzcGVjaWZpY0NvbnRleHQ7IC8vL1xuXG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi51bmlmaWVkIHRoZSAnJHt0ZXJtU3RyaW5nfScgdGVybSB3aXRoIHRoZSAnJHtwcm9wZXJ0eVN0cmluZ30nIHByb3BlcnR5LmApO1xuXG4gICAgICByZXR1cm4gZm9yd2FyZCh0ZXJtLCBjb250ZXh0LCBiYWNrKTtcbiAgICB9LCBiYWNrKTtcbiAgfVxuXG4gIHRvSlNPTigpIHtcbiAgICBsZXQganNvbjtcblxuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKTtcblxuICAgIHNlcmlhbGlzZSgoY29udGV4dCkgPT4ge1xuICAgICAgY29uc3QgaW5jbHVkZVR5cGUgPSBmYWxzZSxcbiAgICAgICAgICAgIHN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKGluY2x1ZGVUeXBlKSxcbiAgICAgICAgICAgIHR5cGVKU09OID0gdHlwZVRvVHlwZUpTT04odGhpcy50eXBlKSxcbiAgICAgICAgICAgIHR5cGUgPSB0eXBlSlNPTjsgIC8vL1xuXG4gICAgICBqc29uID0ge1xuICAgICAgICBjb250ZXh0LFxuICAgICAgICBzdHJpbmcsXG4gICAgICAgIHR5cGVcbiAgICAgIH07XG4gICAgfSwgY29udGV4dCk7XG5cbiAgICByZXR1cm4ganNvbjtcbiAgfVxuXG4gIHN0YXRpYyBuYW1lID0gXCJQcm9wZXJ0eVwiO1xuXG4gIHN0YXRpYyBmcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gICAgbGV0IHByb3BlcnR5O1xuXG4gICAgaW5zdGFudGlhdGUoKGNvbnRleHQpID0+IHtcbiAgICAgIHVuc2VyaWFsaXNlKChqc29uLCBjb250ZXh0KSA9PiB7XG4gICAgICAgIGNvbnN0IHsgc3RyaW5nIH0gPSBqc29uLFxuICAgICAgICAgICAgICBwcm9wZXJ0eU5vZGUgPSBpbnN0YW50aWF0ZVByb3BlcnR5KHN0cmluZywgY29udGV4dCksXG4gICAgICAgICAgICAgIG5vZGUgPSBwcm9wZXJ0eU5vZGUsIC8vL1xuICAgICAgICAgICAgICBicmVha1BvaW50ID0gbnVsbCxcbiAgICAgICAgICAgICAgdGVybSA9IHRlcm1Gcm9tUHJvcGVydHlOb2RlKHByb3BlcnR5Tm9kZSwgY29udGV4dCksXG4gICAgICAgICAgICAgIHR5cGUgPSB0eXBlRnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICAgICAgcHJvcGVydHkgPSBuZXcgUHJvcGVydHkoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCB0ZXJtLCB0eXBlKTtcbiAgICAgIH0sIGpzb24sIGNvbnRleHQpO1xuICAgIH0sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIHByb3BlcnR5O1xuICB9XG59KTtcblxuZnVuY3Rpb24gdGVybUZyb21Qcm9wZXJ0eU5vZGUocHJvcGVydHlOb2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IHRlcm1Ob2RlID0gcHJvcGVydHlOb2RlLmdldFRlcm1Ob2RlKCksXG4gICAgICAgIHRlcm0gPSBjb250ZXh0LmZpbmRUZXJtQnlUZXJtTm9kZSh0ZXJtTm9kZSk7XG5cbiAgcmV0dXJuIHRlcm07XG59XG4iXSwibmFtZXMiOlsidW5icmVha2FibGUiLCJicmVha1BvaW50VXRpbGl0aWVzIiwiY3V0IiwiYWxsIiwiZXhpc3RzIiwiY29udGludWF0aW9uVXRpbGl0aWVzIiwiZGVmaW5lIiwiUHJvcGVydHkiLCJFbGVtZW50IiwiY29udGV4dCIsInN0cmluZyIsIm5vZGUiLCJicmVha1BvaW50IiwidGVybSIsInR5cGUiLCJnZXRUZXJtIiwiZ2V0VHlwZSIsImdldFByb3BlcnR5Tm9kZSIsImdldE5vZGUiLCJwcm9wZXJ0eU5vZGUiLCJnZXRTdHJpbmciLCJpbmNsdWRlVHlwZSIsInR5cGVTdHJpbmciLCJzZXRUeXBlIiwiaXNNYWxmb3JtZWQiLCJtYWxmb3JtZWQiLCJ2ZXJpZnkiLCJmb3J3YXJkIiwiYmFjayIsInByb3BlcnR5U3RyaW5nIiwidHJhY2UiLCJkZWNsYXJlIiwic3RhdGUiLCJkZXNpc3QiLCJ2YWxpZGF0ZSIsInByb3BlcnR5IiwiZGVidWciLCJpc29sYXRlIiwiYXR0ZW1wdCIsInZhbGlkYXRlVGVybUFzUHJvcGVydHkiLCJiaW5kIiwiY29tbWl0IiwiYWRkVGVybSIsInVuaWZ5VGVybSIsInRlcm1TdHJpbmciLCJ1bmlmeVRlcm1XaXRoUHJvcGVydHkiLCJwcm92aXNpb25hbCIsImlzUHJvdmlzaW9uYWwiLCJzZXRQcm92aXNpb25hbCIsImdlbmVyYWxDb250ZXh0IiwiZ2V0Q29udGV4dCIsInNwZWNpZmljQ29udGV4dCIsInRvSlNPTiIsImpzb24iLCJzZXJpYWxpc2UiLCJ0eXBlSlNPTiIsInR5cGVUb1R5cGVKU09OIiwibmFtZSIsImZyb21KU09OIiwiaW5zdGFudGlhdGUiLCJ1bnNlcmlhbGlzZSIsImluc3RhbnRpYXRlUHJvcGVydHkiLCJ0ZXJtRnJvbVByb3BlcnR5Tm9kZSIsInR5cGVGcm9tSlNPTiIsInRlcm1Ob2RlIiwiZ2V0VGVybU5vZGUiLCJmaW5kVGVybUJ5VGVybU5vZGUiXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQWVBOzs7ZUFBQTs7O2dDQWJvRTsw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
@@ -12,13 +12,14 @@ const _occamlanguages = require("occam-languages");
12
12
  const _resolution = /*#__PURE__*/ _interop_require_default(require("../resolution"));
13
13
  const _elements = require("../../elements");
14
14
  const _state = require("../../utilities/state");
15
+ const _instantiate = require("../../process/instantiate");
15
16
  const _context = require("../../utilities/context");
16
17
  function _interop_require_default(obj) {
17
18
  return obj && obj.__esModule ? obj : {
18
19
  default: obj
19
20
  };
20
21
  }
21
- const { cut, all } = _occamlanguages.continuationUtilities, { breakable, unbreakable } = _occamlanguages.breakPointUtilities;
22
+ const { cut, all } = _occamlanguages.continuationUtilities, { breakable, unbreakable, breakPointFromJSON, breakPointToBreakPointJSON } = _occamlanguages.breakPointUtilities;
22
23
  const _default = (0, _elements.define)(class Conclusion extends _resolution.default {
23
24
  getConclusionNode() {
24
25
  const node = this.getNode(), conclusionNode = node; ///
@@ -91,10 +92,38 @@ const _default = (0, _elements.define)(class Conclusion extends _resolution.defa
91
92
  return forward(conclusion, context, back);
92
93
  }, back);
93
94
  });
95
+ toJSON() {
96
+ let json;
97
+ const context = this.getContext();
98
+ (0, _context.serialise)((context)=>{
99
+ const string = this.getString();
100
+ let breakPoint;
101
+ breakPoint = this.getBreakPoint();
102
+ const breakPointJSON = breakPointToBreakPointJSON(breakPoint);
103
+ breakPoint = breakPointJSON; ///
104
+ json = {
105
+ context,
106
+ string,
107
+ breakPoint
108
+ };
109
+ }, context);
110
+ return json;
111
+ }
94
112
  static name = "Conclusion";
95
113
  static fromJSON(json, context) {
96
- return _resolution.default.fromJSON(Conclusion, json, context);
114
+ let conclusion;
115
+ (0, _context.instantiate)((context)=>{
116
+ (0, _context.unserialise)((json, context)=>{
117
+ const { string } = json, conclusionNode = (0, _instantiate.instantiateConclusion)(string, context), node = conclusionNode, breakPoint = breakPointFromJSON(json), statement = statementFromConclusionNode(conclusionNode, context);
118
+ conclusion = new Conclusion(context, string, node, breakPoint, statement);
119
+ }, json, context);
120
+ }, context);
121
+ return conclusion;
97
122
  }
98
123
  });
124
+ function statementFromConclusionNode(conclusionNode, context) {
125
+ const statementNode = conclusionNode.getStatementNode(), statement = context.findStatementByStatementNode(statementNode);
126
+ return statement;
127
+ }
99
128
 
100
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L3Jlc29sdXRpb24vY29uY2x1c2lvbi5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgYnJlYWtQb2ludFV0aWxpdGllcywgY29udGludWF0aW9uVXRpbGl0aWVzIH0gZnJvbSBcIm9jY2FtLWxhbmd1YWdlc1wiO1xuXG5pbXBvcnQgUmVzb2x1dGlvbiBmcm9tIFwiLi4vcmVzb2x1dGlvblwiO1xuXG5pbXBvcnQgeyBkZWZpbmUgfSBmcm9tIFwiLi4vLi4vZWxlbWVudHNcIjtcbmltcG9ydCB7IGRlc2lzdCwgZGVjbGFyZSB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvc3RhdGVcIjtcbmltcG9ydCB7IGlzb2xhdGUsIGF0dGVtcHQsIHJlY29uY2lsZSB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvY29udGV4dFwiO1xuXG5jb25zdCB7IGN1dCwgYWxsIH0gPSBjb250aW51YXRpb25VdGlsaXRpZXMsXG4gICAgICB7IGJyZWFrYWJsZSwgdW5icmVha2FibGUgfSA9IGJyZWFrUG9pbnRVdGlsaXRpZXM7XG5cbmV4cG9ydCBkZWZhdWx0IGRlZmluZShjbGFzcyBDb25jbHVzaW9uIGV4dGVuZHMgUmVzb2x1dGlvbiB7XG4gIGdldENvbmNsdXNpb25Ob2RlKCkge1xuICAgIGNvbnN0IG5vZGUgPSB0aGlzLmdldE5vZGUoKSxcbiAgICAgICAgICBjb25jbHVzaW9uTm9kZSA9IG5vZGU7ICAvLy9cblxuICAgIHJldHVybiBjb25jbHVzaW9uTm9kZTtcbiAgfVxuXG4gIGlzTWFsZm9ybWVkKCkge1xuICAgIGNvbnN0IGNvbmNsdXNpb25Ob2RlID0gdGhpcy5nZXRDb25jbHVzaW9uTm9kZSgpLFxuICAgICAgICAgIG1hbGZvcm1lZCA9IGNvbmNsdXNpb25Ob2RlLmlzTWFsZm9ybWVkKCk7XG5cbiAgICByZXR1cm4gbWFsZm9ybWVkO1xuICB9XG5cbiAgdmVyaWZ5ID0gYnJlYWthYmxlKGZ1bmN0aW9uIChjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgZm9yd2FyZCA9IGN1dChmb3J3YXJkLCBiYWNrKTsgLy8vXG5cbiAgICBjb25zdCBjb25jbHVzaW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHtjb25jbHVzaW9uU3RyaW5nfScgY29uY2x1c2lvbi4uLmApO1xuXG4gICAgY29uc3QgbWFsZm9ybWVkID0gdGhpcy5pc01hbGZvcm1lZCgpO1xuXG4gICAgaWYgKG1hbGZvcm1lZCkge1xuICAgICAgY29udGV4dC50cmFjZShgVW5hYmxlIHRvIHZlcmlmeSB0aGUgJyR7Y29uY2x1c2lvblN0cmluZ30nIGNvbmNsdXNpb24gYmVjYXVzZSBpdCBpcyBtYWxmb3JtZWQuYCk7XG5cbiAgICAgIHJldHVybiBiYWNrKCk7XG4gICAgfVxuXG4gICAgZGVjbGFyZSgoc3RhdGUpID0+IHtcbiAgICAgIGRlc2lzdCgoc3RhdGUpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmFsaWRhdGUoc3RhdGUsIGNvbnRleHQsIChjb25jbHVzaW9uLCBjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke2NvbmNsdXNpb25TdHJpbmd9JyBjb25jbHVzaW9uLmApO1xuXG4gICAgICAgICAgcmV0dXJuIGZvcndhcmQoY29udGV4dCwgYmFjayk7XG4gICAgICAgIH0sIChleGNlcHRpb24pID0+IHtcbiAgICAgICAgICBpZiAoZXhjZXB0aW9uKSB7XG4gICAgICAgICAgICByZXR1cm4gYmFjayhleGNlcHRpb24pO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnRleHQudHJhY2UoYFVuYWJsZSB0byB2ZXJpZnkgdGhlICcke2NvbmNsdXNpb25TdHJpbmd9JyBjb25jbHVzaW9uLmApO1xuXG4gICAgICAgICAgcmV0dXJuIGJhY2soKTtcbiAgICAgICAgfSk7XG4gICAgICB9LCBzdGF0ZSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGFwcGx5ID0gYnJlYWthYmxlKGZ1bmN0aW9uIChzdGVwLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgZm9yd2FyZCA9IGN1dChmb3J3YXJkLCBiYWNrKTsgLy8vXG5cbiAgICBjb25zdCBzdGVwU3RyaW5nID0gc3RlcC5nZXRTdHJpbmcoKSxcbiAgICAgICAgICBjb25jbHVzaW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgQXBwbHlpbmcgdGhlICcke2NvbmNsdXNpb25TdHJpbmd9JyBjb25jbHVzaW9uIHRvIHRoZSAnJHtzdGVwU3RyaW5nfScgc3RlcC4uLmApO1xuXG4gICAgY29uc3Qgc3RlcENvbnRleHQgPSBzdGVwLmdldENvbnRleHQoKSxcbiAgICAgICAgICBjb25jbHVzaW9uQ29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpLCAgLy8vXG4gICAgICAgICAgZ2VuZXJhbENvbnRleHQgPSBjb25jbHVzaW9uQ29udGV4dCwgLy8vXG4gICAgICAgICAgc3BlY2lmaWNDb250ZXh0ID0gc3RlcENvbnRleHQ7ICAvLy9cblxuICAgIHJldHVybiByZWNvbmNpbGUoKHNwZWNpZmljQ29udGV4dCkgPT4ge1xuICAgICAgY29uc3Qgc3RhdGVtZW50ID0gc3RlcC5nZXRTdGF0ZW1lbnQoKTtcblxuICAgICAgcmV0dXJuIHRoaXMuc3RhdGVtZW50LnVuaWZ5U3RhdGVtZW50KHN0YXRlbWVudCwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgKGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIGJhY2spID0+IHtcbiAgICAgICAgc3BlY2lmaWNDb250ZXh0LmNvbW1pdChjb250ZXh0KTtcblxuICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi5hcHBsaWVkIHRoZSAnJHtjb25jbHVzaW9uU3RyaW5nfScgY29uY2x1c2lvbiB0byB0aGUgJyR7c3RlcFN0cmluZ30nIHN0ZXAuYCk7XG5cbiAgICAgICAgcmV0dXJuIGZvcndhcmQoY29udGV4dCwgYmFjayk7XG4gICAgICB9LCAoZXhjZXB0aW9uKSA9PiB7XG4gICAgICAgIGlmIChleGNlcHRpb24pIHtcbiAgICAgICAgICByZXR1cm4gYmFjayhleGNlcHRpb24pO1xuICAgICAgICB9XG5cbiAgICAgICAgY29udGV4dC50cmFjZShgVW5hYmxlIHRvIGFwcGx5IHRoZSAnJHtjb25jbHVzaW9uU3RyaW5nfScgY29uY2x1c2lvbiB0byB0aGUgJyR7c3RlcFN0cmluZ30nIHN0ZXAuYCk7XG5cbiAgICAgICAgcmV0dXJuIGJhY2soKTtcbiAgICAgIH0pO1xuICAgIH0sIHNwZWNpZmljQ29udGV4dCk7XG4gIH0pO1xuXG4gIHZhbGlkYXRlID0gdW5icmVha2FibGUoZnVuY3Rpb24gKHN0YXRlLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3QgY29uY2x1c2lvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7IC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7Y29uY2x1c2lvblN0cmluZ30nIGNvbmNsdXNpb24uLi5gKTtcblxuICAgIHJldHVybiBpc29sYXRlKChzdGF0ZSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykgPT4ge1xuICAgICAgcmV0dXJuIGF0dGVtcHQoKGNvbnRleHQpID0+IHtcbiAgICAgICAgY29uc3QgdmFsaWRhdGVTdGF0ZW1lbnQgPSB0aGlzLnZhbGlkYXRlU3RhdGVtZW50LmJpbmQodGhpcyk7XG5cbiAgICAgICAgcmV0dXJuIGFsbChbXG4gICAgICAgICAgdmFsaWRhdGVTdGF0ZW1lbnRcbiAgICAgICAgXSwgc3RhdGUsIGNvbnRleHQsIChzdGF0ZSwgY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgICAgIHRoaXMuY29tbWl0KGNvbnRleHQpO1xuXG4gICAgICAgICAgcmV0dXJuIGZvcndhcmQoYmFjayk7XG4gICAgICAgIH0sIGJhY2spO1xuICAgICAgfSwgY29udGV4dCk7XG4gICAgfSwgc3RhdGUsIGNvbnRleHQsIChzdGF0ZSwgY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgY29uc3QgY29uY2x1c2lvbiA9IHRoaXM7ICAvLy9cblxuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHtjb25jbHVzaW9uU3RyaW5nfScgY29uY2x1c2lvbi5gKTtcblxuICAgICAgcmV0dXJuIGZvcndhcmQoY29uY2x1c2lvbiwgY29udGV4dCwgYmFjayk7XG4gICAgfSwgYmFjayk7XG4gIH0pO1xuXG4gIHN0YXRpYyBuYW1lID0gXCJDb25jbHVzaW9uXCI7XG5cbiAgc3RhdGljIGZyb21KU09OKGpzb24sIGNvbnRleHQpIHsgcmV0dXJuIFJlc29sdXRpb24uZnJvbUpTT04oQ29uY2x1c2lvbiwganNvbiwgY29udGV4dCk7IH1cbn0pO1xuIl0sIm5hbWVzIjpbImN1dCIsImFsbCIsImNvbnRpbnVhdGlvblV0aWxpdGllcyIsImJyZWFrYWJsZSIsInVuYnJlYWthYmxlIiwiYnJlYWtQb2ludFV0aWxpdGllcyIsImRlZmluZSIsIkNvbmNsdXNpb24iLCJSZXNvbHV0aW9uIiwiZ2V0Q29uY2x1c2lvbk5vZGUiLCJub2RlIiwiZ2V0Tm9kZSIsImNvbmNsdXNpb25Ob2RlIiwiaXNNYWxmb3JtZWQiLCJtYWxmb3JtZWQiLCJ2ZXJpZnkiLCJjb250ZXh0IiwiZm9yd2FyZCIsImJhY2siLCJjb25jbHVzaW9uU3RyaW5nIiwiZ2V0U3RyaW5nIiwidHJhY2UiLCJkZWNsYXJlIiwic3RhdGUiLCJkZXNpc3QiLCJ2YWxpZGF0ZSIsImNvbmNsdXNpb24iLCJkZWJ1ZyIsImV4Y2VwdGlvbiIsImFwcGx5Iiwic3RlcCIsInN0ZXBTdHJpbmciLCJzdGVwQ29udGV4dCIsImdldENvbnRleHQiLCJjb25jbHVzaW9uQ29udGV4dCIsImdlbmVyYWxDb250ZXh0Iiwic3BlY2lmaWNDb250ZXh0IiwicmVjb25jaWxlIiwic3RhdGVtZW50IiwiZ2V0U3RhdGVtZW50IiwidW5pZnlTdGF0ZW1lbnQiLCJjb21taXQiLCJpc29sYXRlIiwiYXR0ZW1wdCIsInZhbGlkYXRlU3RhdGVtZW50IiwiYmluZCIsIm5hbWUiLCJmcm9tSlNPTiIsImpzb24iXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQWFBOzs7ZUFBQTs7O2dDQVgyRDttRUFFcEM7MEJBRUE7dUJBQ1M7eUJBQ1k7Ozs7OztBQUU1QyxNQUFNLEVBQUVBLEdBQUcsRUFBRUMsR0FBRyxFQUFFLEdBQUdDLHFDQUFxQixFQUNwQyxFQUFFQyxTQUFTLEVBQUVDLFdBQVcsRUFBRSxHQUFHQyxtQ0FBbUI7TUFFdEQsV0FBZUMsSUFBQUEsZ0JBQU0sRUFBQyxNQUFNQyxtQkFBbUJDLG1CQUFVO0lBQ3ZEQyxvQkFBb0I7UUFDbEIsTUFBTUMsT0FBTyxJQUFJLENBQUNDLE9BQU8sSUFDbkJDLGlCQUFpQkYsTUFBTyxHQUFHO1FBRWpDLE9BQU9FO0lBQ1Q7SUFFQUMsY0FBYztRQUNaLE1BQU1ELGlCQUFpQixJQUFJLENBQUNILGlCQUFpQixJQUN2Q0ssWUFBWUYsZUFBZUMsV0FBVztRQUU1QyxPQUFPQztJQUNUO0lBRUFDLFNBQVNaLFVBQVUsU0FBVWEsT0FBTyxFQUFFQyxPQUFPLEVBQUVDLElBQUk7UUFDakRELFVBQVVqQixJQUFJaUIsU0FBU0MsT0FBTyxHQUFHO1FBRWpDLE1BQU1DLG1CQUFtQixJQUFJLENBQUNDLFNBQVMsSUFBSyxHQUFHO1FBRS9DSixRQUFRSyxLQUFLLENBQUMsQ0FBQyxlQUFlLEVBQUVGLGlCQUFpQixlQUFlLENBQUM7UUFFakUsTUFBTUwsWUFBWSxJQUFJLENBQUNELFdBQVc7UUFFbEMsSUFBSUMsV0FBVztZQUNiRSxRQUFRSyxLQUFLLENBQUMsQ0FBQyxzQkFBc0IsRUFBRUYsaUJBQWlCLHFDQUFxQyxDQUFDO1lBRTlGLE9BQU9EO1FBQ1Q7UUFFQUksSUFBQUEsY0FBTyxFQUFDLENBQUNDO1lBQ1BDLElBQUFBLGFBQU0sRUFBQyxDQUFDRDtnQkFDTixPQUFPLElBQUksQ0FBQ0UsUUFBUSxDQUFDRixPQUFPUCxT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
129
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L3Jlc29sdXRpb24vY29uY2x1c2lvbi5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgYnJlYWtQb2ludFV0aWxpdGllcywgY29udGludWF0aW9uVXRpbGl0aWVzIH0gZnJvbSBcIm9jY2FtLWxhbmd1YWdlc1wiO1xuXG5pbXBvcnQgUmVzb2x1dGlvbiBmcm9tIFwiLi4vcmVzb2x1dGlvblwiO1xuXG5pbXBvcnQgeyBkZWZpbmUgfSBmcm9tIFwiLi4vLi4vZWxlbWVudHNcIjtcbmltcG9ydCB7IGRlc2lzdCwgZGVjbGFyZSB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvc3RhdGVcIjtcbmltcG9ydCB7IGluc3RhbnRpYXRlQ29uY2x1c2lvbiB9IGZyb20gXCIuLi8uLi9wcm9jZXNzL2luc3RhbnRpYXRlXCI7XG5pbXBvcnQgeyBpc29sYXRlLCBhdHRlbXB0LCByZWNvbmNpbGUsIHNlcmlhbGlzZSwgdW5zZXJpYWxpc2UsIGluc3RhbnRpYXRlIH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9jb250ZXh0XCI7XG5cbmNvbnN0IHsgY3V0LCBhbGwgfSA9IGNvbnRpbnVhdGlvblV0aWxpdGllcyxcbiAgICAgIHsgYnJlYWthYmxlLCB1bmJyZWFrYWJsZSwgYnJlYWtQb2ludEZyb21KU09OLCBicmVha1BvaW50VG9CcmVha1BvaW50SlNPTiB9ID0gYnJlYWtQb2ludFV0aWxpdGllcztcblxuZXhwb3J0IGRlZmF1bHQgZGVmaW5lKGNsYXNzIENvbmNsdXNpb24gZXh0ZW5kcyBSZXNvbHV0aW9uIHtcbiAgZ2V0Q29uY2x1c2lvbk5vZGUoKSB7XG4gICAgY29uc3Qgbm9kZSA9IHRoaXMuZ2V0Tm9kZSgpLFxuICAgICAgICAgIGNvbmNsdXNpb25Ob2RlID0gbm9kZTsgIC8vL1xuXG4gICAgcmV0dXJuIGNvbmNsdXNpb25Ob2RlO1xuICB9XG5cbiAgaXNNYWxmb3JtZWQoKSB7XG4gICAgY29uc3QgY29uY2x1c2lvbk5vZGUgPSB0aGlzLmdldENvbmNsdXNpb25Ob2RlKCksXG4gICAgICAgICAgbWFsZm9ybWVkID0gY29uY2x1c2lvbk5vZGUuaXNNYWxmb3JtZWQoKTtcblxuICAgIHJldHVybiBtYWxmb3JtZWQ7XG4gIH1cblxuICB2ZXJpZnkgPSBicmVha2FibGUoZnVuY3Rpb24gKGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBmb3J3YXJkID0gY3V0KGZvcndhcmQsIGJhY2spOyAvLy9cblxuICAgIGNvbnN0IGNvbmNsdXNpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke2NvbmNsdXNpb25TdHJpbmd9JyBjb25jbHVzaW9uLi4uYCk7XG5cbiAgICBjb25zdCBtYWxmb3JtZWQgPSB0aGlzLmlzTWFsZm9ybWVkKCk7XG5cbiAgICBpZiAobWFsZm9ybWVkKSB7XG4gICAgICBjb250ZXh0LnRyYWNlKGBVbmFibGUgdG8gdmVyaWZ5IHRoZSAnJHtjb25jbHVzaW9uU3RyaW5nfScgY29uY2x1c2lvbiBiZWNhdXNlIGl0IGlzIG1hbGZvcm1lZC5gKTtcblxuICAgICAgcmV0dXJuIGJhY2soKTtcbiAgICB9XG5cbiAgICBkZWNsYXJlKChzdGF0ZSkgPT4ge1xuICAgICAgZGVzaXN0KChzdGF0ZSkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy52YWxpZGF0ZShzdGF0ZSwgY29udGV4dCwgKGNvbmNsdXNpb24sIGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7Y29uY2x1c2lvblN0cmluZ30nIGNvbmNsdXNpb24uYCk7XG5cbiAgICAgICAgICByZXR1cm4gZm9yd2FyZChjb250ZXh0LCBiYWNrKTtcbiAgICAgICAgfSwgKGV4Y2VwdGlvbikgPT4ge1xuICAgICAgICAgIGlmIChleGNlcHRpb24pIHtcbiAgICAgICAgICAgIHJldHVybiBiYWNrKGV4Y2VwdGlvbik7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29udGV4dC50cmFjZShgVW5hYmxlIHRvIHZlcmlmeSB0aGUgJyR7Y29uY2x1c2lvblN0cmluZ30nIGNvbmNsdXNpb24uYCk7XG5cbiAgICAgICAgICByZXR1cm4gYmFjaygpO1xuICAgICAgICB9KTtcbiAgICAgIH0sIHN0YXRlKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgYXBwbHkgPSBicmVha2FibGUoZnVuY3Rpb24gKHN0ZXAsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBmb3J3YXJkID0gY3V0KGZvcndhcmQsIGJhY2spOyAvLy9cblxuICAgIGNvbnN0IHN0ZXBTdHJpbmcgPSBzdGVwLmdldFN0cmluZygpLFxuICAgICAgICAgIGNvbmNsdXNpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBBcHBseWluZyB0aGUgJyR7Y29uY2x1c2lvblN0cmluZ30nIGNvbmNsdXNpb24gdG8gdGhlICcke3N0ZXBTdHJpbmd9JyBzdGVwLi4uYCk7XG5cbiAgICBjb25zdCBzdGVwQ29udGV4dCA9IHN0ZXAuZ2V0Q29udGV4dCgpLFxuICAgICAgICAgIGNvbmNsdXNpb25Db250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksICAvLy9cbiAgICAgICAgICBnZW5lcmFsQ29udGV4dCA9IGNvbmNsdXNpb25Db250ZXh0LCAvLy9cbiAgICAgICAgICBzcGVjaWZpY0NvbnRleHQgPSBzdGVwQ29udGV4dDsgIC8vL1xuXG4gICAgcmV0dXJuIHJlY29uY2lsZSgoc3BlY2lmaWNDb250ZXh0KSA9PiB7XG4gICAgICBjb25zdCBzdGF0ZW1lbnQgPSBzdGVwLmdldFN0YXRlbWVudCgpO1xuXG4gICAgICByZXR1cm4gdGhpcy5zdGF0ZW1lbnQudW5pZnlTdGF0ZW1lbnQoc3RhdGVtZW50LCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCAoZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgICBzcGVjaWZpY0NvbnRleHQuY29tbWl0KGNvbnRleHQpO1xuXG4gICAgICAgIGNvbnRleHQuZGVidWcoYC4uLmFwcGxpZWQgdGhlICcke2NvbmNsdXNpb25TdHJpbmd9JyBjb25jbHVzaW9uIHRvIHRoZSAnJHtzdGVwU3RyaW5nfScgc3RlcC5gKTtcblxuICAgICAgICByZXR1cm4gZm9yd2FyZChjb250ZXh0LCBiYWNrKTtcbiAgICAgIH0sIChleGNlcHRpb24pID0+IHtcbiAgICAgICAgaWYgKGV4Y2VwdGlvbikge1xuICAgICAgICAgIHJldHVybiBiYWNrKGV4Y2VwdGlvbik7XG4gICAgICAgIH1cblxuICAgICAgICBjb250ZXh0LnRyYWNlKGBVbmFibGUgdG8gYXBwbHkgdGhlICcke2NvbmNsdXNpb25TdHJpbmd9JyBjb25jbHVzaW9uIHRvIHRoZSAnJHtzdGVwU3RyaW5nfScgc3RlcC5gKTtcblxuICAgICAgICByZXR1cm4gYmFjaygpO1xuICAgICAgfSk7XG4gICAgfSwgc3BlY2lmaWNDb250ZXh0KTtcbiAgfSk7XG5cbiAgdmFsaWRhdGUgPSB1bmJyZWFrYWJsZShmdW5jdGlvbiAoc3RhdGUsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBjb25jbHVzaW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtjb25jbHVzaW9uU3RyaW5nfScgY29uY2x1c2lvbi4uLmApO1xuXG4gICAgcmV0dXJuIGlzb2xhdGUoKHN0YXRlLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSA9PiB7XG4gICAgICByZXR1cm4gYXR0ZW1wdCgoY29udGV4dCkgPT4ge1xuICAgICAgICBjb25zdCB2YWxpZGF0ZVN0YXRlbWVudCA9IHRoaXMudmFsaWRhdGVTdGF0ZW1lbnQuYmluZCh0aGlzKTtcblxuICAgICAgICByZXR1cm4gYWxsKFtcbiAgICAgICAgICB2YWxpZGF0ZVN0YXRlbWVudFxuICAgICAgICBdLCBzdGF0ZSwgY29udGV4dCwgKHN0YXRlLCBjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICAgICAgdGhpcy5jb21taXQoY29udGV4dCk7XG5cbiAgICAgICAgICByZXR1cm4gZm9yd2FyZChiYWNrKTtcbiAgICAgICAgfSwgYmFjayk7XG4gICAgICB9LCBjb250ZXh0KTtcbiAgICB9LCBzdGF0ZSwgY29udGV4dCwgKHN0YXRlLCBjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICBjb25zdCBjb25jbHVzaW9uID0gdGhpczsgIC8vL1xuXG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke2NvbmNsdXNpb25TdHJpbmd9JyBjb25jbHVzaW9uLmApO1xuXG4gICAgICByZXR1cm4gZm9yd2FyZChjb25jbHVzaW9uLCBjb250ZXh0LCBiYWNrKTtcbiAgICB9LCBiYWNrKTtcbiAgfSk7XG5cbiAgdG9KU09OKCkge1xuICAgIGxldCBqc29uO1xuXG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpO1xuXG4gICAgc2VyaWFsaXNlKChjb250ZXh0KSA9PiB7XG4gICAgICBjb25zdCBzdHJpbmcgPSB0aGlzLmdldFN0cmluZygpO1xuXG4gICAgICBsZXQgYnJlYWtQb2ludDtcblxuICAgICAgYnJlYWtQb2ludCA9IHRoaXMuZ2V0QnJlYWtQb2ludCgpO1xuXG4gICAgICBjb25zdCBicmVha1BvaW50SlNPTiA9IGJyZWFrUG9pbnRUb0JyZWFrUG9pbnRKU09OKGJyZWFrUG9pbnQpO1xuXG4gICAgICBicmVha1BvaW50ID0gYnJlYWtQb2ludEpTT047ICAvLy9cblxuICAgICAganNvbiA9IHtcbiAgICAgICAgY29udGV4dCxcbiAgICAgICAgc3RyaW5nLFxuICAgICAgICBicmVha1BvaW50XG4gICAgICB9O1xuICAgIH0sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIGpzb247XG4gIH1cblxuICBzdGF0aWMgbmFtZSA9IFwiQ29uY2x1c2lvblwiO1xuXG4gIHN0YXRpYyBmcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gICAgbGV0IGNvbmNsdXNpb247XG5cbiAgICBpbnN0YW50aWF0ZSgoY29udGV4dCkgPT4ge1xuICAgICAgdW5zZXJpYWxpc2UoKGpzb24sIGNvbnRleHQpID0+IHtcbiAgICAgICAgY29uc3QgeyBzdHJpbmcgfSA9IGpzb24sXG4gICAgICAgICAgICAgIGNvbmNsdXNpb25Ob2RlID0gaW5zdGFudGlhdGVDb25jbHVzaW9uKHN0cmluZywgY29udGV4dCksXG4gICAgICAgICAgICAgIG5vZGUgPSBjb25jbHVzaW9uTm9kZSwgIC8vL1xuICAgICAgICAgICAgICBicmVha1BvaW50ID0gYnJlYWtQb2ludEZyb21KU09OKGpzb24pLFxuICAgICAgICAgICAgICBzdGF0ZW1lbnQgPSBzdGF0ZW1lbnRGcm9tQ29uY2x1c2lvbk5vZGUoY29uY2x1c2lvbk5vZGUsIGNvbnRleHQpO1xuXG4gICAgICAgIGNvbmNsdXNpb24gPSBuZXcgQ29uY2x1c2lvbihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIHN0YXRlbWVudCk7XG4gICAgICB9LCBqc29uLCBjb250ZXh0KTtcbiAgICB9LCBjb250ZXh0KTtcblxuICAgIHJldHVybiBjb25jbHVzaW9uO1xuICB9XG59KTtcblxuZnVuY3Rpb24gc3RhdGVtZW50RnJvbUNvbmNsdXNpb25Ob2RlKGNvbmNsdXNpb25Ob2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IHN0YXRlbWVudE5vZGUgPSBjb25jbHVzaW9uTm9kZS5nZXRTdGF0ZW1lbnROb2RlKCksXG4gICAgICAgIHN0YXRlbWVudCA9IGNvbnRleHQuZmluZFN0YXRlbWVudEJ5U3RhdGVtZW50Tm9kZShzdGF0ZW1lbnROb2RlKTtcblxuICByZXR1cm4gc3RhdGVtZW50O1xufVxuIl0sIm5hbWVzIjpbImN1dCIsImFsbCIsImNvbnRpbnVhdGlvblV0aWxpdGllcyIsImJyZWFrYWJsZSIsInVuYnJlYWthYmxlIiwiYnJlYWtQb2ludEZyb21KU09OIiwiYnJlYWtQb2ludFRvQnJlYWtQb2ludEpTT04iLCJicmVha1BvaW50VXRpbGl0aWVzIiwiZGVmaW5lIiwiQ29uY2x1c2lvbiIsIlJlc29sdXRpb24iLCJnZXRDb25jbHVzaW9uTm9kZSIsIm5vZGUiLCJnZXROb2RlIiwiY29uY2x1c2lvbk5vZGUiLCJpc01hbGZvcm1lZCIsIm1hbGZvcm1lZCIsInZlcmlmeSIsImNvbnRleHQiLCJmb3J3YXJkIiwiYmFjayIsImNvbmNsdXNpb25TdHJpbmciLCJnZXRTdHJpbmciLCJ0cmFjZSIsImRlY2xhcmUiLCJzdGF0ZSIsImRlc2lzdCIsInZhbGlkYXRlIiwiY29uY2x1c2lvbiIsImRlYnVnIiwiZXhjZXB0aW9uIiwiYXBwbHkiLCJzdGVwIiwic3RlcFN0cmluZyIsInN0ZXBDb250ZXh0IiwiZ2V0Q29udGV4dCIsImNvbmNsdXNpb25Db250ZXh0IiwiZ2VuZXJhbENvbnRleHQiLCJzcGVjaWZpY0NvbnRleHQiLCJyZWNvbmNpbGUiLCJzdGF0ZW1lbnQiLCJnZXRTdGF0ZW1lbnQiLCJ1bmlmeVN0YXRlbWVudCIsImNvbW1pdCIsImlzb2xhdGUiLCJhdHRlbXB0IiwidmFsaWRhdGVTdGF0ZW1lbnQiLCJiaW5kIiwidG9KU09OIiwianNvbiIsInNlcmlhbGlzZSIsInN0cmluZyIsImJyZWFrUG9pbnQiLCJnZXRCcmVha1BvaW50IiwiYnJlYWtQb2ludEpTT04iLCJuYW1lIiwiZnJvbUpTT04iLCJpbnN0YW50aWF0ZSIsInVuc2VyaWFsaXNlIiwiaW5zdGFudGlhdGVDb25jbHVzaW9uIiwic3RhdGVtZW50RnJvbUNvbmNsdXNpb25Ob2RlIiwic3RhdGVtZW50Tm9kZSIsImdldFN0YXRlbWVudE5vZGUiLCJmaW5kU3RhdGVtZW50QnlTdGF0ZW1lbnROb2RlIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFjQTs7O2VBQUE7OztnQ0FaMkQ7bUVBRXBDOzBCQUVBO3VCQUNTOzZCQUNNO3lCQUMyQzs7Ozs7O0FBRWpGLE1BQU0sRUFBRUEsR0FBRyxFQUFFQyxHQUFH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
@@ -12,13 +12,14 @@ const _occamlanguages = require("occam-languages");
12
12
  const _resolution = /*#__PURE__*/ _interop_require_default(require("../resolution"));
13
13
  const _elements = require("../../elements");
14
14
  const _state = require("../../utilities/state");
15
+ const _instantiate = require("../../process/instantiate");
15
16
  const _context = require("../../utilities/context");
16
17
  function _interop_require_default(obj) {
17
18
  return obj && obj.__esModule ? obj : {
18
19
  default: obj
19
20
  };
20
21
  }
21
- const { cut, all } = _occamlanguages.continuationUtilities, { breakable, unbreakable } = _occamlanguages.breakPointUtilities;
22
+ const { cut, all } = _occamlanguages.continuationUtilities, { breakable, unbreakable, breakPointFromJSON, breakPointToBreakPointJSON } = _occamlanguages.breakPointUtilities;
22
23
  const _default = (0, _elements.define)(class Deduction extends _resolution.default {
23
24
  getDeductionNode() {
24
25
  const node = this.getNode(), deductionNode = node; ///
@@ -91,10 +92,38 @@ const _default = (0, _elements.define)(class Deduction extends _resolution.defau
91
92
  return forward(conclusion, context, back);
92
93
  }, back);
93
94
  });
95
+ toJSON() {
96
+ let json;
97
+ const context = this.getContext();
98
+ (0, _context.serialise)((context)=>{
99
+ const string = this.getString();
100
+ let breakPoint;
101
+ breakPoint = this.getBreakPoint();
102
+ const breakPointJSON = breakPointToBreakPointJSON(breakPoint);
103
+ breakPoint = breakPointJSON; ///
104
+ json = {
105
+ context,
106
+ string,
107
+ breakPoint
108
+ };
109
+ }, context);
110
+ return json;
111
+ }
94
112
  static name = "Deduction";
95
113
  static fromJSON(json, context) {
96
- return _resolution.default.fromJSON(Deduction, json, context);
114
+ let deduction;
115
+ (0, _context.instantiate)((context)=>{
116
+ (0, _context.unserialise)((json, context)=>{
117
+ const { string } = json, deductionNode = (0, _instantiate.instantiateDeduction)(string, context), node = deductionNode, breakPoint = breakPointFromJSON(json), statement = statementFromDeductionNode(deductionNode, context);
118
+ deduction = new Deduction(context, string, node, breakPoint, statement);
119
+ }, json, context);
120
+ }, context);
121
+ return deduction;
97
122
  }
98
123
  });
124
+ function statementFromDeductionNode(deductionNode, context) {
125
+ const statementNode = deductionNode.getStatementNode(), statement = context.findStatementByStatementNode(statementNode);
126
+ return statement;
127
+ }
99
128
 
100
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L3Jlc29sdXRpb24vZGVkdWN0aW9uLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBicmVha1BvaW50VXRpbGl0aWVzLCBjb250aW51YXRpb25VdGlsaXRpZXMgfSBmcm9tIFwib2NjYW0tbGFuZ3VhZ2VzXCI7XG5cbmltcG9ydCBSZXNvbHV0aW9uIGZyb20gXCIuLi9yZXNvbHV0aW9uXCI7XG5cbmltcG9ydCB7IGRlZmluZSB9IGZyb20gXCIuLi8uLi9lbGVtZW50c1wiO1xuaW1wb3J0IHsgZGVzaXN0LCBkZWNsYXJlIH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9zdGF0ZVwiO1xuaW1wb3J0IHsgaXNvbGF0ZSwgYXR0ZW1wdCwgcmVjb25jaWxlIH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9jb250ZXh0XCI7XG5cbmNvbnN0IHsgY3V0LCBhbGwgfSA9IGNvbnRpbnVhdGlvblV0aWxpdGllcyxcbiAgICAgIHsgYnJlYWthYmxlLCB1bmJyZWFrYWJsZSB9ID0gYnJlYWtQb2ludFV0aWxpdGllcztcblxuZXhwb3J0IGRlZmF1bHQgZGVmaW5lKGNsYXNzIERlZHVjdGlvbiBleHRlbmRzIFJlc29sdXRpb24ge1xuICBnZXREZWR1Y3Rpb25Ob2RlKCkge1xuICAgIGNvbnN0IG5vZGUgPSB0aGlzLmdldE5vZGUoKSxcbiAgICAgICAgICBkZWR1Y3Rpb25Ob2RlID0gbm9kZTsgLy8vXG5cbiAgICByZXR1cm4gZGVkdWN0aW9uTm9kZTtcbiAgfVxuXG4gIGlzTWFsZm9ybWVkKCkge1xuICAgIGNvbnN0IGRlZHVjdGlvbk5vZGUgPSB0aGlzLmdldERlZHVjdGlvbk5vZGUoKSxcbiAgICAgICAgICBtYWxmb3JtZWQgPSBkZWR1Y3Rpb25Ob2RlLmlzTWFsZm9ybWVkKCk7XG5cbiAgICByZXR1cm4gbWFsZm9ybWVkO1xuICB9XG5cbiAgdmVyaWZ5ID0gYnJlYWthYmxlKGZ1bmN0aW9uIChjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgZm9yd2FyZCA9IGN1dChmb3J3YXJkLCBiYWNrKTsgLy8vXG5cbiAgICBjb25zdCBkZWR1Y3Rpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke2RlZHVjdGlvblN0cmluZ30nIGRlZHVjdGlvbi4uLmApO1xuXG4gICAgY29uc3QgbWFsZm9ybWVkID0gdGhpcy5pc01hbGZvcm1lZCgpO1xuXG4gICAgaWYgKG1hbGZvcm1lZCkge1xuICAgICAgY29udGV4dC50cmFjZShgVW5hYmxlIHRvIHZlcmlmeSB0aGUgJyR7ZGVkdWN0aW9uU3RyaW5nfScgZGVkdWN0aW9uIGJlY2F1c2UgaXQgaXMgbWFsZm9ybWVkLmApO1xuXG4gICAgICByZXR1cm4gYmFjaygpO1xuICAgIH1cblxuICAgIGRlY2xhcmUoKHN0YXRlKSA9PiB7XG4gICAgICBkZXNpc3QoKHN0YXRlKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLnZhbGlkYXRlKHN0YXRlLCBjb250ZXh0LCAoZGVkdWN0aW9uLCBjb250ZXh0ICwgYmFjaykgPT4ge1xuICAgICAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHtkZWR1Y3Rpb25TdHJpbmd9JyBkZWR1Y3Rpb24uYCk7XG5cbiAgICAgICAgICByZXR1cm4gZm9yd2FyZChjb250ZXh0LCBiYWNrKTtcbiAgICAgICAgfSwgKGV4Y2VwdGlvbikgPT4ge1xuICAgICAgICAgIGlmIChleGNlcHRpb24pIHtcbiAgICAgICAgICAgIHJldHVybiBiYWNrKGV4Y2VwdGlvbik7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29udGV4dC50cmFjZShgVW5hYmxlIHRvIHZlcmlmeSB0aGUgJyR7ZGVkdWN0aW9uU3RyaW5nfScgZGVkdWN0aW9uLmApO1xuXG4gICAgICAgICAgcmV0dXJuIGJhY2soKTtcbiAgICAgICAgfSk7XG4gICAgICB9LCBzdGF0ZSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGFwcGx5ID0gYnJlYWthYmxlKGZ1bmN0aW9uIChzdGVwLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgZm9yd2FyZCA9IGN1dChmb3J3YXJkLCBiYWNrKTsgLy8vXG5cbiAgICBjb25zdCBzdGVwU3RyaW5nID0gc3RlcC5nZXRTdHJpbmcoKSxcbiAgICAgICAgICBkZWR1Y3Rpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBBcHBseWluZyB0aGUgJyR7ZGVkdWN0aW9uU3RyaW5nfScgZGVkdWN0aW9uIHRvIHRoZSAnJHtzdGVwU3RyaW5nfScgc3RlcC4uLmApO1xuXG4gICAgY29uc3Qgc3RlcENvbnRleHQgPSBzdGVwLmdldENvbnRleHQoKSxcbiAgICAgICAgICBkZWR1Y3Rpb25Db250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksICAvLy9cbiAgICAgICAgICBnZW5lcmFsQ29udGV4dCA9IGRlZHVjdGlvbkNvbnRleHQsIC8vL1xuICAgICAgICAgIHNwZWNpZmljQ29udGV4dCA9IHN0ZXBDb250ZXh0OyAgLy8vXG5cbiAgICByZXR1cm4gcmVjb25jaWxlKChzcGVjaWZpY0NvbnRleHQpID0+IHtcbiAgICAgIGNvbnN0IHN0YXRlbWVudCA9IHN0ZXAuZ2V0U3RhdGVtZW50KCk7XG5cbiAgICAgIHJldHVybiB0aGlzLnN0YXRlbWVudC51bmlmeVN0YXRlbWVudChzdGF0ZW1lbnQsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIChnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICAgIHNwZWNpZmljQ29udGV4dC5jb21taXQoY29udGV4dCk7XG5cbiAgICAgICAgY29udGV4dC5kZWJ1ZyhgLi4uYXBwbGllZCB0aGUgJyR7ZGVkdWN0aW9uU3RyaW5nfScgZGVkdWN0aW9uIHRvIHRoZSAnJHtzdGVwU3RyaW5nfScgc3RlcC5gKTtcblxuICAgICAgICByZXR1cm4gZm9yd2FyZChjb250ZXh0LCBiYWNrKTtcbiAgICAgIH0sIChleGNlcHRpb24pID0+IHtcbiAgICAgICAgaWYgKGV4Y2VwdGlvbikge1xuICAgICAgICAgIHJldHVybiBiYWNrKGV4Y2VwdGlvbik7XG4gICAgICAgIH1cblxuICAgICAgICBjb250ZXh0LnRyYWNlKGBVbmFibGUgdG8gYXBwbHkgdGhlICcke2RlZHVjdGlvblN0cmluZ30nIGRlZHVjdGlvbiB0byB0aGUgJyR7c3RlcFN0cmluZ30nIHN0ZXAuYCk7XG5cbiAgICAgICAgcmV0dXJuIGJhY2soKTtcbiAgICAgIH0pO1xuICAgIH0sIHNwZWNpZmljQ29udGV4dCk7XG4gIH0pO1xuXG4gIHZhbGlkYXRlID0gdW5icmVha2FibGUoZnVuY3Rpb24gKHN0YXRlLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3QgZGVkdWN0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtkZWR1Y3Rpb25TdHJpbmd9JyBkZWR1Y3Rpb24uLi5gKTtcblxuICAgIHJldHVybiBpc29sYXRlKChzdGF0ZSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykgPT4ge1xuICAgICAgcmV0dXJuIGF0dGVtcHQoKGNvbnRleHQpID0+IHtcbiAgICAgICAgY29uc3QgdmFsaWRhdGVTdGF0ZW1lbnQgPSB0aGlzLnZhbGlkYXRlU3RhdGVtZW50LmJpbmQodGhpcyk7XG5cbiAgICAgICAgcmV0dXJuIGFsbChbXG4gICAgICAgICAgdmFsaWRhdGVTdGF0ZW1lbnRcbiAgICAgICAgXSwgc3RhdGUsIGNvbnRleHQsIChzdGF0ZSwgY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgICAgIHRoaXMuY29tbWl0KGNvbnRleHQpO1xuXG4gICAgICAgICAgcmV0dXJuIGZvcndhcmQoYmFjayk7XG4gICAgICAgIH0sIGJhY2spO1xuICAgICAgfSwgY29udGV4dCk7XG4gICAgfSwgc3RhdGUsIGNvbnRleHQsIChzdGF0ZSwgY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgY29uc3QgY29uY2x1c2lvbiA9IHRoaXM7ICAvLy9cblxuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHtkZWR1Y3Rpb25TdHJpbmd9JyBkZWR1Y3Rpb24uYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKGNvbmNsdXNpb24sIGNvbnRleHQsIGJhY2spO1xuICAgIH0sIGJhY2spO1xuICB9KTtcblxuICBzdGF0aWMgbmFtZSA9IFwiRGVkdWN0aW9uXCI7XG5cbiAgc3RhdGljIGZyb21KU09OKGpzb24sIGNvbnRleHQpIHsgcmV0dXJuIFJlc29sdXRpb24uZnJvbUpTT04oRGVkdWN0aW9uLCBqc29uLCBjb250ZXh0KTsgfVxufSk7XG4iXSwibmFtZXMiOlsiY3V0IiwiYWxsIiwiY29udGludWF0aW9uVXRpbGl0aWVzIiwiYnJlYWthYmxlIiwidW5icmVha2FibGUiLCJicmVha1BvaW50VXRpbGl0aWVzIiwiZGVmaW5lIiwiRGVkdWN0aW9uIiwiUmVzb2x1dGlvbiIsImdldERlZHVjdGlvbk5vZGUiLCJub2RlIiwiZ2V0Tm9kZSIsImRlZHVjdGlvbk5vZGUiLCJpc01hbGZvcm1lZCIsIm1hbGZvcm1lZCIsInZlcmlmeSIsImNvbnRleHQiLCJmb3J3YXJkIiwiYmFjayIsImRlZHVjdGlvblN0cmluZyIsImdldFN0cmluZyIsInRyYWNlIiwiZGVjbGFyZSIsInN0YXRlIiwiZGVzaXN0IiwidmFsaWRhdGUiLCJkZWR1Y3Rpb24iLCJkZWJ1ZyIsImV4Y2VwdGlvbiIsImFwcGx5Iiwic3RlcCIsInN0ZXBTdHJpbmciLCJzdGVwQ29udGV4dCIsImdldENvbnRleHQiLCJkZWR1Y3Rpb25Db250ZXh0IiwiZ2VuZXJhbENvbnRleHQiLCJzcGVjaWZpY0NvbnRleHQiLCJyZWNvbmNpbGUiLCJzdGF0ZW1lbnQiLCJnZXRTdGF0ZW1lbnQiLCJ1bmlmeVN0YXRlbWVudCIsImNvbW1pdCIsImlzb2xhdGUiLCJhdHRlbXB0IiwidmFsaWRhdGVTdGF0ZW1lbnQiLCJiaW5kIiwiY29uY2x1c2lvbiIsIm5hbWUiLCJmcm9tSlNPTiIsImpzb24iXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQWFBOzs7ZUFBQTs7O2dDQVgyRDttRUFFcEM7MEJBRUE7dUJBQ1M7eUJBQ1k7Ozs7OztBQUU1QyxNQUFNLEVBQUVBLEdBQUcsRUFBRUMsR0FBRyxFQUFFLEdBQUdDLHFDQUFxQixFQUNwQyxFQUFFQyxTQUFTLEVBQUVDLFdBQVcsRUFBRSxHQUFHQyxtQ0FBbUI7TUFFdEQsV0FBZUMsSUFBQUEsZ0JBQU0sRUFBQyxNQUFNQyxrQkFBa0JDLG1CQUFVO0lBQ3REQyxtQkFBbUI7UUFDakIsTUFBTUMsT0FBTyxJQUFJLENBQUNDLE9BQU8sSUFDbkJDLGdCQUFnQkYsTUFBTSxHQUFHO1FBRS9CLE9BQU9FO0lBQ1Q7SUFFQUMsY0FBYztRQUNaLE1BQU1ELGdCQUFnQixJQUFJLENBQUNILGdCQUFnQixJQUNyQ0ssWUFBWUYsY0FBY0MsV0FBVztRQUUzQyxPQUFPQztJQUNUO0lBRUFDLFNBQVNaLFVBQVUsU0FBVWEsT0FBTyxFQUFFQyxPQUFPLEVBQUVDLElBQUk7UUFDakRELFVBQVVqQixJQUFJaUIsU0FBU0MsT0FBTyxHQUFHO1FBRWpDLE1BQU1DLGtCQUFrQixJQUFJLENBQUNDLFNBQVMsSUFBSyxHQUFHO1FBRTlDSixRQUFRSyxLQUFLLENBQUMsQ0FBQyxlQUFlLEVBQUVGLGdCQUFnQixjQUFjLENBQUM7UUFFL0QsTUFBTUwsWUFBWSxJQUFJLENBQUNELFdBQVc7UUFFbEMsSUFBSUMsV0FBVztZQUNiRSxRQUFRSyxLQUFLLENBQUMsQ0FBQyxzQkFBc0IsRUFBRUYsZ0JBQWdCLG9DQUFvQyxDQUFDO1lBRTVGLE9BQU9EO1FBQ1Q7UUFFQUksSUFBQUEsY0FBTyxFQUFDLENBQUNDO1lBQ1BDLElBQUFBLGFBQU0sRUFBQyxDQUFDRDtnQkFDTixPQUFPLElBQUksQ0FBQ0UsUUFBUSxDQUFDRixPQUFPUCxTQUFTLENBQUNVLFdBQVdWLFNBQVVFO29CQUN6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
129
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L3Jlc29sdXRpb24vZGVkdWN0aW9uLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBicmVha1BvaW50VXRpbGl0aWVzLCBjb250aW51YXRpb25VdGlsaXRpZXMgfSBmcm9tIFwib2NjYW0tbGFuZ3VhZ2VzXCI7XG5cbmltcG9ydCBSZXNvbHV0aW9uIGZyb20gXCIuLi9yZXNvbHV0aW9uXCI7XG5cbmltcG9ydCB7IGRlZmluZSB9IGZyb20gXCIuLi8uLi9lbGVtZW50c1wiO1xuaW1wb3J0IHsgZGVzaXN0LCBkZWNsYXJlIH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9zdGF0ZVwiO1xuaW1wb3J0IHsgaW5zdGFudGlhdGVEZWR1Y3Rpb24gfSBmcm9tIFwiLi4vLi4vcHJvY2Vzcy9pbnN0YW50aWF0ZVwiO1xuaW1wb3J0IHsgaXNvbGF0ZSwgYXR0ZW1wdCwgcmVjb25jaWxlLCBzZXJpYWxpc2UsIHVuc2VyaWFsaXNlLCBpbnN0YW50aWF0ZSB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvY29udGV4dFwiO1xuXG5jb25zdCB7IGN1dCwgYWxsIH0gPSBjb250aW51YXRpb25VdGlsaXRpZXMsXG4gICAgICB7IGJyZWFrYWJsZSwgdW5icmVha2FibGUsIGJyZWFrUG9pbnRGcm9tSlNPTiwgYnJlYWtQb2ludFRvQnJlYWtQb2ludEpTT04gfSA9IGJyZWFrUG9pbnRVdGlsaXRpZXM7XG5cbmV4cG9ydCBkZWZhdWx0IGRlZmluZShjbGFzcyBEZWR1Y3Rpb24gZXh0ZW5kcyBSZXNvbHV0aW9uIHtcbiAgZ2V0RGVkdWN0aW9uTm9kZSgpIHtcbiAgICBjb25zdCBub2RlID0gdGhpcy5nZXROb2RlKCksXG4gICAgICAgICAgZGVkdWN0aW9uTm9kZSA9IG5vZGU7IC8vL1xuXG4gICAgcmV0dXJuIGRlZHVjdGlvbk5vZGU7XG4gIH1cblxuICBpc01hbGZvcm1lZCgpIHtcbiAgICBjb25zdCBkZWR1Y3Rpb25Ob2RlID0gdGhpcy5nZXREZWR1Y3Rpb25Ob2RlKCksXG4gICAgICAgICAgbWFsZm9ybWVkID0gZGVkdWN0aW9uTm9kZS5pc01hbGZvcm1lZCgpO1xuXG4gICAgcmV0dXJuIG1hbGZvcm1lZDtcbiAgfVxuXG4gIHZlcmlmeSA9IGJyZWFrYWJsZShmdW5jdGlvbiAoY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGZvcndhcmQgPSBjdXQoZm9yd2FyZCwgYmFjayk7IC8vL1xuXG4gICAgY29uc3QgZGVkdWN0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHtkZWR1Y3Rpb25TdHJpbmd9JyBkZWR1Y3Rpb24uLi5gKTtcblxuICAgIGNvbnN0IG1hbGZvcm1lZCA9IHRoaXMuaXNNYWxmb3JtZWQoKTtcblxuICAgIGlmIChtYWxmb3JtZWQpIHtcbiAgICAgIGNvbnRleHQudHJhY2UoYFVuYWJsZSB0byB2ZXJpZnkgdGhlICcke2RlZHVjdGlvblN0cmluZ30nIGRlZHVjdGlvbiBiZWNhdXNlIGl0IGlzIG1hbGZvcm1lZC5gKTtcblxuICAgICAgcmV0dXJuIGJhY2soKTtcbiAgICB9XG5cbiAgICBkZWNsYXJlKChzdGF0ZSkgPT4ge1xuICAgICAgZGVzaXN0KChzdGF0ZSkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy52YWxpZGF0ZShzdGF0ZSwgY29udGV4dCwgKGRlZHVjdGlvbiwgY29udGV4dCAsIGJhY2spID0+IHtcbiAgICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7ZGVkdWN0aW9uU3RyaW5nfScgZGVkdWN0aW9uLmApO1xuXG4gICAgICAgICAgcmV0dXJuIGZvcndhcmQoY29udGV4dCwgYmFjayk7XG4gICAgICAgIH0sIChleGNlcHRpb24pID0+IHtcbiAgICAgICAgICBpZiAoZXhjZXB0aW9uKSB7XG4gICAgICAgICAgICByZXR1cm4gYmFjayhleGNlcHRpb24pO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnRleHQudHJhY2UoYFVuYWJsZSB0byB2ZXJpZnkgdGhlICcke2RlZHVjdGlvblN0cmluZ30nIGRlZHVjdGlvbi5gKTtcblxuICAgICAgICAgIHJldHVybiBiYWNrKCk7XG4gICAgICAgIH0pO1xuICAgICAgfSwgc3RhdGUpO1xuICAgIH0pO1xuICB9KTtcblxuICBhcHBseSA9IGJyZWFrYWJsZShmdW5jdGlvbiAoc3RlcCwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGZvcndhcmQgPSBjdXQoZm9yd2FyZCwgYmFjayk7IC8vL1xuXG4gICAgY29uc3Qgc3RlcFN0cmluZyA9IHN0ZXAuZ2V0U3RyaW5nKCksXG4gICAgICAgICAgZGVkdWN0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgQXBwbHlpbmcgdGhlICcke2RlZHVjdGlvblN0cmluZ30nIGRlZHVjdGlvbiB0byB0aGUgJyR7c3RlcFN0cmluZ30nIHN0ZXAuLi5gKTtcblxuICAgIGNvbnN0IHN0ZXBDb250ZXh0ID0gc3RlcC5nZXRDb250ZXh0KCksXG4gICAgICAgICAgZGVkdWN0aW9uQ29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpLCAgLy8vXG4gICAgICAgICAgZ2VuZXJhbENvbnRleHQgPSBkZWR1Y3Rpb25Db250ZXh0LCAvLy9cbiAgICAgICAgICBzcGVjaWZpY0NvbnRleHQgPSBzdGVwQ29udGV4dDsgIC8vL1xuXG4gICAgcmV0dXJuIHJlY29uY2lsZSgoc3BlY2lmaWNDb250ZXh0KSA9PiB7XG4gICAgICBjb25zdCBzdGF0ZW1lbnQgPSBzdGVwLmdldFN0YXRlbWVudCgpO1xuXG4gICAgICByZXR1cm4gdGhpcy5zdGF0ZW1lbnQudW5pZnlTdGF0ZW1lbnQoc3RhdGVtZW50LCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCAoZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgICBzcGVjaWZpY0NvbnRleHQuY29tbWl0KGNvbnRleHQpO1xuXG4gICAgICAgIGNvbnRleHQuZGVidWcoYC4uLmFwcGxpZWQgdGhlICcke2RlZHVjdGlvblN0cmluZ30nIGRlZHVjdGlvbiB0byB0aGUgJyR7c3RlcFN0cmluZ30nIHN0ZXAuYCk7XG5cbiAgICAgICAgcmV0dXJuIGZvcndhcmQoY29udGV4dCwgYmFjayk7XG4gICAgICB9LCAoZXhjZXB0aW9uKSA9PiB7XG4gICAgICAgIGlmIChleGNlcHRpb24pIHtcbiAgICAgICAgICByZXR1cm4gYmFjayhleGNlcHRpb24pO1xuICAgICAgICB9XG5cbiAgICAgICAgY29udGV4dC50cmFjZShgVW5hYmxlIHRvIGFwcGx5IHRoZSAnJHtkZWR1Y3Rpb25TdHJpbmd9JyBkZWR1Y3Rpb24gdG8gdGhlICcke3N0ZXBTdHJpbmd9JyBzdGVwLmApO1xuXG4gICAgICAgIHJldHVybiBiYWNrKCk7XG4gICAgICB9KTtcbiAgICB9LCBzcGVjaWZpY0NvbnRleHQpO1xuICB9KTtcblxuICB2YWxpZGF0ZSA9IHVuYnJlYWthYmxlKGZ1bmN0aW9uIChzdGF0ZSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IGRlZHVjdGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7IC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7ZGVkdWN0aW9uU3RyaW5nfScgZGVkdWN0aW9uLi4uYCk7XG5cbiAgICByZXR1cm4gaXNvbGF0ZSgoc3RhdGUsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spID0+IHtcbiAgICAgIHJldHVybiBhdHRlbXB0KChjb250ZXh0KSA9PiB7XG4gICAgICAgIGNvbnN0IHZhbGlkYXRlU3RhdGVtZW50ID0gdGhpcy52YWxpZGF0ZVN0YXRlbWVudC5iaW5kKHRoaXMpO1xuXG4gICAgICAgIHJldHVybiBhbGwoW1xuICAgICAgICAgIHZhbGlkYXRlU3RhdGVtZW50XG4gICAgICAgIF0sIHN0YXRlLCBjb250ZXh0LCAoc3RhdGUsIGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgICAgICB0aGlzLmNvbW1pdChjb250ZXh0KTtcblxuICAgICAgICAgIHJldHVybiBmb3J3YXJkKGJhY2spO1xuICAgICAgICB9LCBiYWNrKTtcbiAgICAgIH0sIGNvbnRleHQpO1xuICAgIH0sIHN0YXRlLCBjb250ZXh0LCAoc3RhdGUsIGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIGNvbnN0IGNvbmNsdXNpb24gPSB0aGlzOyAgLy8vXG5cbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7ZGVkdWN0aW9uU3RyaW5nfScgZGVkdWN0aW9uLmApO1xuXG4gICAgICByZXR1cm4gZm9yd2FyZChjb25jbHVzaW9uLCBjb250ZXh0LCBiYWNrKTtcbiAgICB9LCBiYWNrKTtcbiAgfSk7XG5cbiAgdG9KU09OKCkge1xuICAgIGxldCBqc29uO1xuXG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpO1xuXG4gICAgc2VyaWFsaXNlKChjb250ZXh0KSA9PiB7XG4gICAgICBjb25zdCBzdHJpbmcgPSB0aGlzLmdldFN0cmluZygpO1xuXG4gICAgICBsZXQgYnJlYWtQb2ludDtcblxuICAgICAgYnJlYWtQb2ludCA9IHRoaXMuZ2V0QnJlYWtQb2ludCgpO1xuXG4gICAgICBjb25zdCBicmVha1BvaW50SlNPTiA9IGJyZWFrUG9pbnRUb0JyZWFrUG9pbnRKU09OKGJyZWFrUG9pbnQpO1xuXG4gICAgICBicmVha1BvaW50ID0gYnJlYWtQb2ludEpTT047ICAvLy9cblxuICAgICAganNvbiA9IHtcbiAgICAgICAgY29udGV4dCxcbiAgICAgICAgc3RyaW5nLFxuICAgICAgICBicmVha1BvaW50XG4gICAgICB9O1xuICAgIH0sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIGpzb247XG4gIH1cblxuICBzdGF0aWMgbmFtZSA9IFwiRGVkdWN0aW9uXCI7XG5cbiAgc3RhdGljIGZyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgICBsZXQgZGVkdWN0aW9uO1xuXG4gICAgaW5zdGFudGlhdGUoKGNvbnRleHQpID0+IHtcbiAgICAgIHVuc2VyaWFsaXNlKChqc29uLCBjb250ZXh0KSA9PiB7XG4gICAgICAgIGNvbnN0IHsgc3RyaW5nIH0gPSBqc29uLFxuICAgICAgICAgICAgICBkZWR1Y3Rpb25Ob2RlID0gaW5zdGFudGlhdGVEZWR1Y3Rpb24oc3RyaW5nLCBjb250ZXh0KSxcbiAgICAgICAgICAgICAgbm9kZSA9IGRlZHVjdGlvbk5vZGUsICAvLy9cbiAgICAgICAgICAgICAgYnJlYWtQb2ludCA9IGJyZWFrUG9pbnRGcm9tSlNPTihqc29uKSxcbiAgICAgICAgICAgICAgc3RhdGVtZW50ID0gc3RhdGVtZW50RnJvbURlZHVjdGlvbk5vZGUoZGVkdWN0aW9uTm9kZSwgY29udGV4dCk7XG5cbiAgICAgICAgZGVkdWN0aW9uID0gbmV3IERlZHVjdGlvbihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIHN0YXRlbWVudCk7XG4gICAgICB9LCBqc29uLCBjb250ZXh0KTtcbiAgICB9LCBjb250ZXh0KTtcblxuICAgIHJldHVybiBkZWR1Y3Rpb247XG4gIH1cbn0pO1xuXG5mdW5jdGlvbiBzdGF0ZW1lbnRGcm9tRGVkdWN0aW9uTm9kZShkZWR1Y3Rpb25Ob2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IHN0YXRlbWVudE5vZGUgPSBkZWR1Y3Rpb25Ob2RlLmdldFN0YXRlbWVudE5vZGUoKSxcbiAgICAgICAgc3RhdGVtZW50ID0gY29udGV4dC5maW5kU3RhdGVtZW50QnlTdGF0ZW1lbnROb2RlKHN0YXRlbWVudE5vZGUpO1xuXG4gIHJldHVybiBzdGF0ZW1lbnQ7XG59XG4iXSwibmFtZXMiOlsiY3V0IiwiYWxsIiwiY29udGludWF0aW9uVXRpbGl0aWVzIiwiYnJlYWthYmxlIiwidW5icmVha2FibGUiLCJicmVha1BvaW50RnJvbUpTT04iLCJicmVha1BvaW50VG9CcmVha1BvaW50SlNPTiIsImJyZWFrUG9pbnRVdGlsaXRpZXMiLCJkZWZpbmUiLCJEZWR1Y3Rpb24iLCJSZXNvbHV0aW9uIiwiZ2V0RGVkdWN0aW9uTm9kZSIsIm5vZGUiLCJnZXROb2RlIiwiZGVkdWN0aW9uTm9kZSIsImlzTWFsZm9ybWVkIiwibWFsZm9ybWVkIiwidmVyaWZ5IiwiY29udGV4dCIsImZvcndhcmQiLCJiYWNrIiwiZGVkdWN0aW9uU3RyaW5nIiwiZ2V0U3RyaW5nIiwidHJhY2UiLCJkZWNsYXJlIiwic3RhdGUiLCJkZXNpc3QiLCJ2YWxpZGF0ZSIsImRlZHVjdGlvbiIsImRlYnVnIiwiZXhjZXB0aW9uIiwiYXBwbHkiLCJzdGVwIiwic3RlcFN0cmluZyIsInN0ZXBDb250ZXh0IiwiZ2V0Q29udGV4dCIsImRlZHVjdGlvbkNvbnRleHQiLCJnZW5lcmFsQ29udGV4dCIsInNwZWNpZmljQ29udGV4dCIsInJlY29uY2lsZSIsInN0YXRlbWVudCIsImdldFN0YXRlbWVudCIsInVuaWZ5U3RhdGVtZW50IiwiY29tbWl0IiwiaXNvbGF0ZSIsImF0dGVtcHQiLCJ2YWxpZGF0ZVN0YXRlbWVudCIsImJpbmQiLCJjb25jbHVzaW9uIiwidG9KU09OIiwianNvbiIsInNlcmlhbGlzZSIsInN0cmluZyIsImJyZWFrUG9pbnQiLCJnZXRCcmVha1BvaW50IiwiYnJlYWtQb2ludEpTT04iLCJuYW1lIiwiZnJvbUpTT04iLCJpbnN0YW50aWF0ZSIsInVuc2VyaWFsaXNlIiwiaW5zdGFudGlhdGVEZWR1Y3Rpb24iLCJzdGF0ZW1lbnRGcm9tRGVkdWN0aW9uTm9kZSIsInN0YXRlbWVudE5vZGUiLCJnZXRTdGF0ZW1lbnROb2RlIiwiZmluZFN0YXRlbWVudEJ5U3RhdGVtZW50Tm9kZSJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBY0E7OztlQUFBOzs7Z0NBWjJEO21FQUVwQzswQkFFQTt1QkFDUzs2QkFDSzt5QkFDNEM7Ozs7OztBQUVqRixNQUFNLEVBQUVBLEdBQUcsRUFBRUMsR0FBRyxFQUFFLEdBQUdDLHFDQUFxQixFQUNwQyxFQUFFQyxTQUFTLEVBQUVD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
@@ -9,9 +9,6 @@ Object.defineProperty(exports, "default", {
9
9
  }
10
10
  });
11
11
  const _occamlanguages = require("occam-languages");
12
- const _instantiate = require("../process/instantiate");
13
- const _context = require("../utilities/context");
14
- const { breakPointFromJSON, breakPointToBreakPointJSON } = _occamlanguages.breakPointUtilities;
15
12
  class Resolution extends _occamlanguages.Element {
16
13
  constructor(context, string, node, breakPoint, statement){
17
14
  super(context, string, node, breakPoint);
@@ -37,37 +34,6 @@ class Resolution extends _occamlanguages.Element {
37
34
  return forward(generalContext, specificContext, back);
38
35
  }, back);
39
36
  }
40
- toJSON() {
41
- let json;
42
- const context = this.getContext();
43
- (0, _context.serialise)((context)=>{
44
- const string = this.getString();
45
- let breakPoint;
46
- breakPoint = this.getBreakPoint();
47
- const breakPointJSON = breakPointToBreakPointJSON(breakPoint);
48
- breakPoint = breakPointJSON; ///
49
- json = {
50
- context,
51
- string,
52
- breakPoint
53
- };
54
- }, context);
55
- return json;
56
- }
57
- static fromJSON(Class, json, context) {
58
- let deduction;
59
- (0, _context.instantiate)((context)=>{
60
- (0, _context.unserialise)((json, context)=>{
61
- const { string } = json, deductionNode = (0, _instantiate.instantiateDeduction)(string, context), node = deductionNode, breakPoint = breakPointFromJSON(json), statement = statementFromDeductionNode(deductionNode, context);
62
- deduction = new Class(context, string, node, breakPoint, statement);
63
- }, json, context);
64
- }, context);
65
- return deduction;
66
- }
67
- }
68
- function statementFromDeductionNode(deductionNode, context) {
69
- const statementNode = deductionNode.getStatementNode(), statement = context.findStatementByStatementNode(statementNode);
70
- return statement;
71
37
  }
72
38
 
73
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbGVtZW50L3Jlc29sdXRpb24uanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IEVsZW1lbnQsIGJyZWFrUG9pbnRVdGlsaXRpZXMgfSBmcm9tIFwib2NjYW0tbGFuZ3VhZ2VzXCI7XG5cbmltcG9ydCB7IGluc3RhbnRpYXRlRGVkdWN0aW9uIH0gZnJvbSBcIi4uL3Byb2Nlc3MvaW5zdGFudGlhdGVcIjtcbmltcG9ydCB7IHNlcmlhbGlzZSwgdW5zZXJpYWxpc2UsIGluc3RhbnRpYXRlIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9jb250ZXh0XCI7XG5cbmNvbnN0IHsgYnJlYWtQb2ludEZyb21KU09OLCBicmVha1BvaW50VG9CcmVha1BvaW50SlNPTiB9ID0gYnJlYWtQb2ludFV0aWxpdGllcztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUmVzb2x1dGlvbiBleHRlbmRzIEVsZW1lbnQge1xuICBjb25zdHJ1Y3Rvcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIHN0YXRlbWVudCkge1xuICAgIHN1cGVyKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCk7XG5cbiAgICB0aGlzLnN0YXRlbWVudCA9IHN0YXRlbWVudDtcbiAgfVxuXG4gIGdldFN0YXRlbWVudCgpIHtcbiAgICByZXR1cm4gdGhpcy5zdGF0ZW1lbnQ7XG4gIH1cblxuICB2YWxpZGF0ZVN0YXRlbWVudChzdGF0ZSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IHJlc29sdXRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtyZXNvbHV0aW9uU3RyaW5nfScgcmVzb2x1dGlvbidzIHN0YXRlbWVudC4uLmApO1xuXG4gICAgcmV0dXJuIHRoaXMuc3RhdGVtZW50LnZhbGlkYXRlKHN0YXRlLCBjb250ZXh0LCAoc3RhdGVtZW50LCBjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICB0aGlzLnN0YXRlbWVudCA9IHN0YXRlbWVudDtcblxuICAgICAgY29udGV4dC50cmFjZShgLi4udmFsaWRhdGVkIHRoZSAnJHtyZXNvbHV0aW9uU3RyaW5nfScgcmVzb2x1dGlvbidzIHN0YXRlbWVudC5gKTtcblxuICAgICAgcmV0dXJuIGZvcndhcmQoc3RhdGUsIGNvbnRleHQsIGJhY2spO1xuICAgIH0sIGJhY2spO1xuICB9XG5cbiAgdW5pZnlTdGF0ZW1lbnQoc3RhdGVtZW50LCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHNwZWNpZmljQ29udGV4dCwgLy8vXG4gICAgICAgICAgc3RhdGVtZW50U3RyaW5nID0gc3RhdGVtZW50LmdldFN0cmluZygpLFxuICAgICAgICAgIHJlc29sdXRpbm9TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBVbmlmeWluZyB0aGUgJyR7c3RhdGVtZW50U3RyaW5nfScgc3RhdGVtZW50IHdpdGggdGhlICcke3Jlc29sdXRpbm9TdHJpbmd9JyByZXNvbHV0aW5vJ3Mgc3RhdGVtZW50Li4uYCk7XG5cbiAgICByZXR1cm4gdGhpcy5zdGF0ZW1lbnQudW5pZnlTdGF0ZW1lbnQoc3RhdGVtZW50LCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCAoZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udW5pZmllZCB0aGUgJyR7c3RhdGVtZW50U3RyaW5nfScgc3RhdGVtZW50IHdpdGggdGhlICcke3Jlc29sdXRpbm9TdHJpbmd9JyByZXNvbHV0aW5vJ3Mgc3RhdGVtZW50LmApO1xuXG4gICAgICByZXR1cm4gZm9yd2FyZChnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCBiYWNrKTtcbiAgICB9LCBiYWNrKTtcbiAgfVxuXG4gIHRvSlNPTigpIHtcbiAgICBsZXQganNvbjtcblxuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKTtcblxuICAgIHNlcmlhbGlzZSgoY29udGV4dCkgPT4ge1xuICAgICAgY29uc3Qgc3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTtcblxuICAgICAgbGV0IGJyZWFrUG9pbnQ7XG5cbiAgICAgIGJyZWFrUG9pbnQgPSB0aGlzLmdldEJyZWFrUG9pbnQoKTtcblxuICAgICAgY29uc3QgYnJlYWtQb2ludEpTT04gPSBicmVha1BvaW50VG9CcmVha1BvaW50SlNPTihicmVha1BvaW50KTtcblxuICAgICAgYnJlYWtQb2ludCA9IGJyZWFrUG9pbnRKU09OOyAgLy8vXG5cbiAgICAgIGpzb24gPSB7XG4gICAgICAgIGNvbnRleHQsXG4gICAgICAgIHN0cmluZyxcbiAgICAgICAgYnJlYWtQb2ludFxuICAgICAgfTtcbiAgICB9LCBjb250ZXh0KTtcblxuICAgIHJldHVybiBqc29uO1xuICB9XG5cbiAgc3RhdGljIGZyb21KU09OKENsYXNzLCBqc29uLCBjb250ZXh0KSB7XG4gICAgbGV0IGRlZHVjdGlvbjtcblxuICAgIGluc3RhbnRpYXRlKChjb250ZXh0KSA9PiB7XG4gICAgICB1bnNlcmlhbGlzZSgoanNvbiwgY29udGV4dCkgPT4ge1xuICAgICAgICBjb25zdCB7IHN0cmluZyB9ID0ganNvbixcbiAgICAgICAgICAgICAgZGVkdWN0aW9uTm9kZSA9IGluc3RhbnRpYXRlRGVkdWN0aW9uKHN0cmluZywgY29udGV4dCksXG4gICAgICAgICAgICAgIG5vZGUgPSBkZWR1Y3Rpb25Ob2RlLCAgLy8vXG4gICAgICAgICAgICAgIGJyZWFrUG9pbnQgPSBicmVha1BvaW50RnJvbUpTT04oanNvbiksXG4gICAgICAgICAgICAgIHN0YXRlbWVudCA9IHN0YXRlbWVudEZyb21EZWR1Y3Rpb25Ob2RlKGRlZHVjdGlvbk5vZGUsIGNvbnRleHQpO1xuXG4gICAgICAgIGRlZHVjdGlvbiA9IG5ldyBDbGFzcyhjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIHN0YXRlbWVudCk7XG4gICAgICB9LCBqc29uLCBjb250ZXh0KTtcbiAgICB9LCBjb250ZXh0KTtcblxuICAgIHJldHVybiBkZWR1Y3Rpb247XG4gIH1cbn1cblxuZnVuY3Rpb24gc3RhdGVtZW50RnJvbURlZHVjdGlvbk5vZGUoZGVkdWN0aW9uTm9kZSwgY29udGV4dCkge1xuICBjb25zdCBzdGF0ZW1lbnROb2RlID0gZGVkdWN0aW9uTm9kZS5nZXRTdGF0ZW1lbnROb2RlKCksXG4gICAgICAgIHN0YXRlbWVudCA9IGNvbnRleHQuZmluZFN0YXRlbWVudEJ5U3RhdGVtZW50Tm9kZShzdGF0ZW1lbnROb2RlKTtcblxuICByZXR1cm4gc3RhdGVtZW50O1xufVxuIl0sIm5hbWVzIjpbIlJlc29sdXRpb24iLCJicmVha1BvaW50RnJvbUpTT04iLCJicmVha1BvaW50VG9CcmVha1BvaW50SlNPTiIsImJyZWFrUG9pbnRVdGlsaXRpZXMiLCJFbGVtZW50IiwiY29udGV4dCIsInN0cmluZyIsIm5vZGUiLCJicmVha1BvaW50Iiwic3RhdGVtZW50IiwiZ2V0U3RhdGVtZW50IiwidmFsaWRhdGVTdGF0ZW1lbnQiLCJzdGF0ZSIsImZvcndhcmQiLCJiYWNrIiwicmVzb2x1dGlvblN0cmluZyIsImdldFN0cmluZyIsInRyYWNlIiwidmFsaWRhdGUiLCJ1bmlmeVN0YXRlbWVudCIsImdlbmVyYWxDb250ZXh0Iiwic3BlY2lmaWNDb250ZXh0Iiwic3RhdGVtZW50U3RyaW5nIiwicmVzb2x1dGlub1N0cmluZyIsImRlYnVnIiwidG9KU09OIiwianNvbiIsImdldENvbnRleHQiLCJzZXJpYWxpc2UiLCJnZXRCcmVha1BvaW50IiwiYnJlYWtQb2ludEpTT04iLCJmcm9tSlNPTiIsIkNsYXNzIiwiZGVkdWN0aW9uIiwiaW5zdGFudGlhdGUiLCJ1bnNlcmlhbGlzZSIsImRlZHVjdGlvbk5vZGUiLCJpbnN0YW50aWF0ZURlZHVjdGlvbiIsInN0YXRlbWVudEZyb21EZWR1Y3Rpb25Ob2RlIiwic3RhdGVtZW50Tm9kZSIsImdldFN0YXRlbWVudE5vZGUiLCJmaW5kU3RhdGVtZW50QnlTdGF0ZW1lbnROb2RlIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFTQTs7O2VBQXFCQTs7O2dDQVB3Qjs2QkFFUjt5QkFDZTtBQUVwRCxNQUFNLEVBQUVDLGtCQUFrQixFQUFFQywwQkFBMEIsRUFBRSxHQUFHQyxtQ0FBbUI7QUFFL0QsTUFBTUgsbUJBQW1CSSx1QkFBTztJQUM3QyxZQUFZQyxPQUFPLEVBQUVDLE1BQU0sRUFBRUMsSUFBSSxFQUFFQyxVQUFVLEVBQUVDLFNBQVMsQ0FBRTtRQUN4RCxLQUFLLENBQUNKLFNBQVNDLFFBQVFDLE1BQU1DO1FBRTdCLElBQUksQ0FBQ0MsU0FBUyxHQUFHQTtJQUNuQjtJQUVBQyxlQUFlO1FBQ2IsT0FBTyxJQUFJLENBQUNELFNBQVM7SUFDdkI7SUFFQUUsa0JBQWtCQyxLQUFLLEVBQUVQLE9BQU8sRUFBRVEsT0FBTyxFQUFFQyxJQUFJLEVBQUU7UUFDL0MsTUFBTUMsbUJBQW1CLElBQUksQ0FBQ0MsU0FBUyxJQUFLLEdBQUc7UUFFL0NYLFFBQVFZLEtBQUssQ0FBQyxDQUFDLGdCQUFnQixFQUFFRixpQkFBaUIsMkJBQTJCLENBQUM7UUFFOUUsT0FBTyxJQUFJLENBQUNOLFNBQVMsQ0FBQ1MsUUFBUSxDQUFDTixPQUFPUCxTQUFTLENBQUNJLFdBQVdKLFNBQVNTO1lBQ2xFLElBQUksQ0FBQ0wsU0FBUyxHQUFHQTtZQUVqQkosUUFBUVksS0FBSyxDQUFDLENBQUMsa0JBQWtCLEVBQUVGLGlCQUFpQix5QkFBeUIsQ0FBQztZQUU5RSxPQUFPRixRQUFRRCxPQUFPUCxTQUFTUztRQUNqQyxHQUFHQTtJQUNMO0lBRUFLLGVBQWVWLFNBQVMsRUFBRVcsY0FBYyxFQUFFQyxlQUFlLEVBQUVSLE9BQU8sRUFBRUMsSUFBSSxFQUFFO1FBQ3hFLE1BQU1ULFVBQVVnQixpQkFDVkMsa0JBQWtCYixVQUFVTyxTQUFTLElBQ3JDTyxtQkFBbUIsSUFBSSxDQUFDUCxTQUFTLElBQUssR0FBRztRQUUvQ1gsUUFBUVksS0FBSyxDQUFDLENBQUMsY0FBYyxFQUFFSyxnQkFBZ0Isc0JBQXNCLEVBQUVDLGlCQUFpQiwyQkFBMkIsQ0FBQztRQUVwSCxPQUFPLElBQUksQ0FBQ2QsU0FBUyxDQUFDVSxjQUFjLENBQUNWLFdBQVdXLGdCQUFnQkMsaUJBQWlCLENBQUNELGdCQUFnQkMsaUJBQWlCUDtZQUNqSFQsUUFBUW1CLEtBQUssQ0FBQyxDQUFDLGdCQUFnQixFQUFFRixnQkFBZ0Isc0JBQXNCLEVBQUVDLGlCQUFpQix5QkFBeUIsQ0FBQztZQUVwSCxPQUFPVixRQUFRTyxnQkFBZ0JDLGlCQUFpQlA7UUFDbEQsR0FBR0E7SUFDTDtJQUVBVyxTQUFTO1FBQ1AsSUFBSUM7UUFFSixNQUFNckIsVUFBVSxJQUFJLENBQUNzQixVQUFVO1FBRS9CQyxJQUFBQSxrQkFBUyxFQUFDLENBQUN2QjtZQUNULE1BQU1DLFNBQVMsSUFBSSxDQUFDVSxTQUFTO1lBRTdCLElBQUlSO1lBRUpBLGFBQWEsSUFBSSxDQUFDcUIsYUFBYTtZQUUvQixNQUFNQyxpQkFBaUI1QiwyQkFBMkJNO1lBRWxEQSxhQUFhc0IsZ0JBQWlCLEdBQUc7WUFFakNKLE9BQU87Z0JBQ0xyQjtnQkFDQUM7Z0JBQ0FFO1lBQ0Y7UUFDRixHQUFHSDtRQUVILE9BQU9xQjtJQUNUO0lBRUEsT0FBT0ssU0FBU0MsS0FBSyxFQUFFTixJQUFJLEVBQUVyQixPQUFPLEVBQUU7UUFDcEMsSUFBSTRCO1FBRUpDLElBQUFBLG9CQUFXLEVBQUMsQ0FBQzdCO1lBQ1g4QixJQUFBQSxvQkFBVyxFQUFDLENBQUNULE1BQU1yQjtnQkFDakIsTUFBTSxFQUFFQyxNQUFNLEVBQUUsR0FBR29CLE1BQ2JVLGdCQUFnQkMsSUFBQUEsaUNBQW9CLEVBQUMvQixRQUFRRCxVQUM3Q0UsT0FBTzZCLGVBQ1A1QixhQUFhUCxtQkFBbUJ5QixPQUNoQ2pCLFlBQVk2QiwyQkFBMkJGLGVBQWUvQjtnQkFFNUQ0QixZQUFZLElBQUlELE1BQU0zQixTQUFTQyxRQUFRQyxNQUFNQyxZQUFZQztZQUMzRCxHQUFHaUIsTUFBTXJCO1FBQ1gsR0FBR0E7UUFFSCxPQUFPNEI7SUFDVDtBQUNGO0FBRUEsU0FBU0ssMkJBQTJCRixhQUFhLEVBQUUvQixPQUFPO0lBQ3hELE1BQU1rQyxnQkFBZ0JILGNBQWNJLGdCQUFnQixJQUM5Qy9CLFlBQVlKLFFBQVFvQyw0QkFBNEIsQ0FBQ0Y7SUFFdkQsT0FBTzlCO0FBQ1QifQ==
39
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbGVtZW50L3Jlc29sdXRpb24uanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IEVsZW1lbnQgfSBmcm9tIFwib2NjYW0tbGFuZ3VhZ2VzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFJlc29sdXRpb24gZXh0ZW5kcyBFbGVtZW50IHtcbiAgY29uc3RydWN0b3IoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCBzdGF0ZW1lbnQpIHtcbiAgICBzdXBlcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQpO1xuXG4gICAgdGhpcy5zdGF0ZW1lbnQgPSBzdGF0ZW1lbnQ7XG4gIH1cblxuICBnZXRTdGF0ZW1lbnQoKSB7XG4gICAgcmV0dXJuIHRoaXMuc3RhdGVtZW50O1xuICB9XG5cbiAgdmFsaWRhdGVTdGF0ZW1lbnQoc3RhdGUsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCByZXNvbHV0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7cmVzb2x1dGlvblN0cmluZ30nIHJlc29sdXRpb24ncyBzdGF0ZW1lbnQuLi5gKTtcblxuICAgIHJldHVybiB0aGlzLnN0YXRlbWVudC52YWxpZGF0ZShzdGF0ZSwgY29udGV4dCwgKHN0YXRlbWVudCwgY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgdGhpcy5zdGF0ZW1lbnQgPSBzdGF0ZW1lbnQ7XG5cbiAgICAgIGNvbnRleHQudHJhY2UoYC4uLnZhbGlkYXRlZCB0aGUgJyR7cmVzb2x1dGlvblN0cmluZ30nIHJlc29sdXRpb24ncyBzdGF0ZW1lbnQuYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKHN0YXRlLCBjb250ZXh0LCBiYWNrKTtcbiAgICB9LCBiYWNrKTtcbiAgfVxuXG4gIHVuaWZ5U3RhdGVtZW50KHN0YXRlbWVudCwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IGNvbnRleHQgPSBzcGVjaWZpY0NvbnRleHQsIC8vL1xuICAgICAgICAgIHN0YXRlbWVudFN0cmluZyA9IHN0YXRlbWVudC5nZXRTdHJpbmcoKSxcbiAgICAgICAgICByZXNvbHV0aW5vU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVW5pZnlpbmcgdGhlICcke3N0YXRlbWVudFN0cmluZ30nIHN0YXRlbWVudCB3aXRoIHRoZSAnJHtyZXNvbHV0aW5vU3RyaW5nfScgcmVzb2x1dGlubydzIHN0YXRlbWVudC4uLmApO1xuXG4gICAgcmV0dXJuIHRoaXMuc3RhdGVtZW50LnVuaWZ5U3RhdGVtZW50KHN0YXRlbWVudCwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgKGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnVuaWZpZWQgdGhlICcke3N0YXRlbWVudFN0cmluZ30nIHN0YXRlbWVudCB3aXRoIHRoZSAnJHtyZXNvbHV0aW5vU3RyaW5nfScgcmVzb2x1dGlubydzIHN0YXRlbWVudC5gKTtcblxuICAgICAgcmV0dXJuIGZvcndhcmQoZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgYmFjayk7XG4gICAgfSwgYmFjayk7XG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJSZXNvbHV0aW9uIiwiRWxlbWVudCIsImNvbnRleHQiLCJzdHJpbmciLCJub2RlIiwiYnJlYWtQb2ludCIsInN0YXRlbWVudCIsImdldFN0YXRlbWVudCIsInZhbGlkYXRlU3RhdGVtZW50Iiwic3RhdGUiLCJmb3J3YXJkIiwiYmFjayIsInJlc29sdXRpb25TdHJpbmciLCJnZXRTdHJpbmciLCJ0cmFjZSIsInZhbGlkYXRlIiwidW5pZnlTdGF0ZW1lbnQiLCJnZW5lcmFsQ29udGV4dCIsInNwZWNpZmljQ29udGV4dCIsInN0YXRlbWVudFN0cmluZyIsInJlc29sdXRpbm9TdHJpbmciLCJkZWJ1ZyJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBSUE7OztlQUFxQkE7OztnQ0FGRztBQUVULE1BQU1BLG1CQUFtQkMsdUJBQU87SUFDN0MsWUFBWUMsT0FBTyxFQUFFQyxNQUFNLEVBQUVDLElBQUksRUFBRUMsVUFBVSxFQUFFQyxTQUFTLENBQUU7UUFDeEQsS0FBSyxDQUFDSixTQUFTQyxRQUFRQyxNQUFNQztRQUU3QixJQUFJLENBQUNDLFNBQVMsR0FBR0E7SUFDbkI7SUFFQUMsZUFBZTtRQUNiLE9BQU8sSUFBSSxDQUFDRCxTQUFTO0lBQ3ZCO0lBRUFFLGtCQUFrQkMsS0FBSyxFQUFFUCxPQUFPLEVBQUVRLE9BQU8sRUFBRUMsSUFBSSxFQUFFO1FBQy9DLE1BQU1DLG1CQUFtQixJQUFJLENBQUNDLFNBQVMsSUFBSyxHQUFHO1FBRS9DWCxRQUFRWSxLQUFLLENBQUMsQ0FBQyxnQkFBZ0IsRUFBRUYsaUJBQWlCLDJCQUEyQixDQUFDO1FBRTlFLE9BQU8sSUFBSSxDQUFDTixTQUFTLENBQUNTLFFBQVEsQ0FBQ04sT0FBT1AsU0FBUyxDQUFDSSxXQUFXSixTQUFTUztZQUNsRSxJQUFJLENBQUNMLFNBQVMsR0FBR0E7WUFFakJKLFFBQVFZLEtBQUssQ0FBQyxDQUFDLGtCQUFrQixFQUFFRixpQkFBaUIseUJBQXlCLENBQUM7WUFFOUUsT0FBT0YsUUFBUUQsT0FBT1AsU0FBU1M7UUFDakMsR0FBR0E7SUFDTDtJQUVBSyxlQUFlVixTQUFTLEVBQUVXLGNBQWMsRUFBRUMsZUFBZSxFQUFFUixPQUFPLEVBQUVDLElBQUksRUFBRTtRQUN4RSxNQUFNVCxVQUFVZ0IsaUJBQ1ZDLGtCQUFrQmIsVUFBVU8sU0FBUyxJQUNyQ08sbUJBQW1CLElBQUksQ0FBQ1AsU0FBUyxJQUFLLEdBQUc7UUFFL0NYLFFBQVFZLEtBQUssQ0FBQyxDQUFDLGNBQWMsRUFBRUssZ0JBQWdCLHNCQUFzQixFQUFFQyxpQkFBaUIsMkJBQTJCLENBQUM7UUFFcEgsT0FBTyxJQUFJLENBQUNkLFNBQVMsQ0FBQ1UsY0FBYyxDQUFDVixXQUFXVyxnQkFBZ0JDLGlCQUFpQixDQUFDRCxnQkFBZ0JDLGlCQUFpQlA7WUFDakhULFFBQVFtQixLQUFLLENBQUMsQ0FBQyxnQkFBZ0IsRUFBRUYsZ0JBQWdCLHNCQUFzQixFQUFFQyxpQkFBaUIseUJBQXlCLENBQUM7WUFFcEgsT0FBT1YsUUFBUU8sZ0JBQWdCQyxpQkFBaUJQO1FBQ2xELEdBQUdBO0lBQ0w7QUFDRiJ9