occam-nominal 1.0.382 → 1.0.384

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.
@@ -95,7 +95,7 @@ const _default = (0, _elements.define)(class Generator extends _occamlanguages.E
95
95
  termValidates = true;
96
96
  }
97
97
  } else {
98
- const termValidatesAsGenerator = await (0, _validate.validateTermAsGenerator)(this.term, context);
98
+ const termValidatesAsGenerator = (0, _validate.validateTermAsGenerator)(this.term, context);
99
99
  if (termValidatesAsGenerator) {
100
100
  termValidates = true;
101
101
  }
@@ -179,4 +179,4 @@ const _default = (0, _elements.define)(class Generator extends _occamlanguages.E
179
179
  }
180
180
  });
181
181
 
182
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbGVtZW50L2dlbmVyYXRvci5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgRWxlbWVudCwgYnJlYWtQb2ludFV0aWxpdGllcywgY29udGludWF0aW9uVXRpbGl0aWVzIH0gZnJvbSBcIm9jY2FtLWxhbmd1YWdlc1wiO1xuXG5pbXBvcnQgeyBkZWZpbmUgfSBmcm9tIFwiLi4vZWxlbWVudHNcIjtcbmltcG9ydCB7IGJhc2VUeXBlRnJvbU5vdGhpbmcgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL3R5cGVcIjtcbmltcG9ydCB7IGluc3RhbnRpYXRlR2VuZXJhdG9yIH0gZnJvbSBcIi4uL3Byb2Nlc3MvaW5zdGFudGlhdGVcIjtcbmltcG9ydCB7IHRlcm1Gcm9tR2VuZXJhdG9yTm9kZSB9IGZyb20gXCIuLi91dGlsaXRpZXMvZWxlbWVudFwiO1xuaW1wb3J0IHsgdmFsaWRhdGVUZXJtQXNWYXJpYWJsZSB9IGZyb20gXCIuLi9wcm9jZXNzL3ZhbGlkYXRpb25cIjtcbmltcG9ydCB7IHVuaWZ5VGVybVdpdGhHZW5lcmF0b3IgfSBmcm9tIFwiLi4vcHJvY2Vzcy91bmlmeVwiO1xuaW1wb3J0IHsgdmFsaWRhdGVUZXJtQXNHZW5lcmF0b3IgfSBmcm9tIFwiLi4vcHJvY2Vzcy92YWxpZGF0ZVwiO1xuaW1wb3J0IHsgdHlwZUZyb21KU09OLCB0eXBlVG9UeXBlSlNPTiB9IGZyb20gXCIuLi91dGlsaXRpZXMvanNvblwiO1xuaW1wb3J0IHsgYXR0ZW1wdCwgc2VyaWFsaXNlLCB1bnNlcmlhbGlzZSwgaW5zdGFudGlhdGUgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2NvbnRleHRcIjtcblxuY29uc3QgeyBhc3luY2hyb25vdXNFdmVyeSB9ID0gY29udGludWF0aW9uVXRpbGl0aWVzLFxuICAgICAgeyBicmVha1BvaW50RnJvbUpTT04sIGJyZWFrUG9pbnRUb0JyZWFrUG9pbnRKU09OIH0gPSBicmVha1BvaW50VXRpbGl0aWVzO1xuXG5leHBvcnQgZGVmYXVsdCBkZWZpbmUoY2xhc3MgR2VuZXJhdG9yIGV4dGVuZHMgRWxlbWVudCB7XG4gIGNvbnN0cnVjdG9yKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgdGVybSwgdHlwZSwgaHlwb3RoZXNlcykge1xuICAgIHN1cGVyKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCk7XG5cbiAgICB0aGlzLnRlcm0gPSB0ZXJtO1xuICAgIHRoaXMudHlwZSA9IHR5cGU7XG4gICAgdGhpcy5oeXBvdGhlc2VzID0gaHlwb3RoZXNlcztcbiAgfVxuXG4gIGdldFRlcm0oKSB7XG4gICAgcmV0dXJuIHRoaXMudGVybTtcbiAgfVxuXG4gIGdldFR5cGUoKSB7XG4gICAgcmV0dXJuIHRoaXMudHlwZTtcbiAgfVxuXG4gIGdldEh5cG90aGVzZXMoKSB7XG4gICAgcmV0dXJuIHRoaXMuaHlwb3RoZXNlcztcbiAgfVxuXG4gIHNldEh5cG90aGVzZXMoaHlwb3RoZXNlcykge1xuICAgIHRoaXMuaHlwb3RoZXNlcyA9IGh5cG90aGVzZXM7XG4gIH1cblxuICBnZXRHZW5lcmF0b3JOb2RlKCkge1xuICAgIGNvbnN0IG5vZGUgPSB0aGlzLmdldE5vZGUoKSxcbiAgICAgICAgICBnZW5lcmF0b3JOb2RlID0gbm9kZTsgIC8vL1xuXG4gICAgcmV0dXJuIGdlbmVyYXRvck5vZGU7XG4gIH1cblxuICBpc0h5cG90aGV0aWNhbCgpIHtcbiAgICBjb25zdCBoeXBvdGhlc2VzTGVuZ3RoID0gdGhpcy5oeXBvdGhlc2VzLmxlbmd0aCxcbiAgICAgICAgICBoeXBvdGhldGljYWwgPSAoaHlwb3RoZXNlc0xlbmd0aCA+IDApO1xuXG4gICAgcmV0dXJuIGh5cG90aGV0aWNhbDtcbiAgfVxuXG4gIGdldFN0cmluZyhpbmNsdWRlVHlwZSA9IHRydWUpIHtcbiAgICBsZXQgc3RyaW5nO1xuXG4gICAgaWYgKGluY2x1ZGVUeXBlKSB7XG4gICAgICBjb25zdCB0ZXJtU3RyaW5nID0gdGhpcy50ZXJtLmdldFN0cmluZygpLFxuICAgICAgICAgICAgdHlwZVN0cmluZyA9IHRoaXMudHlwZS5nZXRTdHJpbmcoKTtcblxuICAgICAgc3RyaW5nID0gYCR7dGVybVN0cmluZ30uJHt0eXBlU3RyaW5nfWA7XG4gICAgfSBlbHNlIHtcbiAgICAgIHN0cmluZyA9IHN1cGVyLmdldFN0cmluZygpO1xuICAgIH1cblxuICAgIHJldHVybiBzdHJpbmc7XG4gIH1cblxuICBzZXRUeXBlKHR5cGUpIHtcbiAgICB0aGlzLnR5cGUgPSB0eXBlO1xuICB9XG5cbiAgYXN5bmMgdmVyaWZ5KGNvbnRleHQpIHtcbiAgICBsZXQgdmVyaWZpZXMgPSBmYWxzZTtcblxuICAgIGNvbnN0IGluY2x1ZGVUeXBlID0gZmFsc2UsXG4gICAgICAgICAgZ2VuZXJhdG9yU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoaW5jbHVkZVR5cGUpO1xuXG4gICAgY29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHtnZW5lcmF0b3JTdHJpbmd9JyBnZW5lcmF0b3IuLi5gKTtcblxuICAgIGF3YWl0IGF0dGVtcHQoYXN5bmMgKGNvbnRleHQpID0+IHtcbiAgICAgIGNvbnN0IHRlcm1WYWxpZGF0ZXMgPSBhd2FpdCB0aGlzLnZhbGlkYXRlVGVybShjb250ZXh0KTtcblxuICAgICAgaWYgKHRlcm1WYWxpZGF0ZXMpIHtcbiAgICAgICAgdmVyaWZpZXMgPSB0cnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAodmVyaWZpZXMpIHtcbiAgICAgICAgdGhpcy5jb21taXQoY29udGV4dCk7XG4gICAgICB9XG4gICAgfSwgY29udGV4dCk7XG5cbiAgICBpZiAodmVyaWZpZXMpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHtnZW5lcmF0b3JTdHJpbmd9JyBnZW5lcmF0b3IuYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZlcmlmaWVzO1xuICB9XG5cbiAgYXN5bmMgdmFsaWRhdGVUZXJtKGNvbnRleHQpIHtcbiAgICBsZXQgdGVybVZhbGlkYXRlcyA9IGZhbHNlO1xuXG4gICAgY29uc3QgaW5jbHVkZVR5cGUgPSBmYWxzZSxcbiAgICAgICAgICBnZW5lcmF0b3JTdHJpbmcgPSB0aGlzLmdldFN0cmluZyhpbmNsdWRlVHlwZSk7XG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtnZW5lcmF0b3JTdHJpbmd9JyBnZW5lcmF0b3IncyB0ZXJtLi4uYCk7XG5cbiAgICBjb25zdCBoeXBvdGhldGljYWwgPSB0aGlzLmlzSHlwb3RoZXRpY2FsKCk7XG5cbiAgICBpZiAoaHlwb3RoZXRpY2FsKSB7XG4gICAgICBjb25zdCB0ZXJtVmFsaWRhdGVzQXNWYXJpYWJsZSA9IGF3YWl0IHZhbGlkYXRlVGVybUFzVmFyaWFibGUodGhpcy50ZXJtLCBjb250ZXh0LCBhc3luYyAodGVybSwgY29udGV4dCkgPT4geyAvLy9cbiAgICAgICAgbGV0IHZhbGlkYXRlc0ZvcndhcmRzID0gZmFsc2U7XG5cbiAgICAgICAgY29uc3QgdHlwZSA9IHRlcm0uZ2V0VHlwZSgpLFxuICAgICAgICAgICAgICBiYXNlVHlwZSA9IGJhc2VUeXBlRnJvbU5vdGhpbmcoKTtcblxuICAgICAgICBpZiAodHlwZSA9PT0gYmFzZVR5cGUpIHtcbiAgICAgICAgICB2YWxpZGF0ZXNGb3J3YXJkcyA9IHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdmFsaWRhdGVzRm9yd2FyZHM7XG4gICAgICB9KTtcblxuICAgICAgaWYgKHRlcm1WYWxpZGF0ZXNBc1ZhcmlhYmxlKSB7XG4gICAgICAgIHRlcm1WYWxpZGF0ZXMgPSB0cnVlO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCB0ZXJtVmFsaWRhdGVzQXNHZW5lcmF0b3IgPSBhd2FpdCB2YWxpZGF0ZVRlcm1Bc0dlbmVyYXRvcih0aGlzLnRlcm0sIGNvbnRleHQpO1xuXG4gICAgICBpZiAodGVybVZhbGlkYXRlc0FzR2VuZXJhdG9yKSB7XG4gICAgICAgIHRlcm1WYWxpZGF0ZXMgPSB0cnVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0ZXJtVmFsaWRhdGVzKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke2dlbmVyYXRvclN0cmluZ30nIGdlbmVyYXRvcidzIHRlcm0uYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRlcm1WYWxpZGF0ZXM7XG4gIH1cblxuICBhc3luYyB1bmlmeVRlcm0odGVybSwgY29udGV4dCwgdmFsaWRhdGVGb3J3YXJkcykge1xuICAgIGxldCB0ZXJtVW5pZmllcyA9IGZhbHNlO1xuXG4gICAgY29uc3QgdGVybVN0cmluZyA9IHRlcm0uZ2V0U3RyaW5nKCksXG4gICAgICAgICAgaW5jbHVkZVR5cGUgPSBmYWxzZSxcbiAgICAgICAgICBnZW5lcmF0b3JTdHJpbmcgPSB0aGlzLmdldFN0cmluZyhpbmNsdWRlVHlwZSk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHt0ZXJtU3RyaW5nfScgdGVybSB3aXRoIHRoZSAnJHtnZW5lcmF0b3JTdHJpbmd9JyBnZW5lcmF0b3IuLi5gKTtcblxuICAgIGNvbnN0IGh5cG90aGVzZXNEaXNjYXJkZWRHaXZlblRlcm0gPSBhd2FpdCB0aGlzLmRpc2NoYXJnZUh5cG90aGVzZXNHaXZlblRlcm0odGVybSwgY29udGV4dCk7XG5cbiAgICBpZiAoaHlwb3RoZXNlc0Rpc2NhcmRlZEdpdmVuVGVybSkge1xuICAgICAgY29uc3QgZ2VuZXJhdG9yID0gdGhpcywgLy8vXG4gICAgICAgICAgICBnZW5lcmF0b3JDb250ZXh0ID0gZ2VuZXJhdG9yLmdldENvbnRleHQoKSxcbiAgICAgICAgICAgIGdlbmVyYWxDb250ZXh0ID0gZ2VuZXJhdG9yQ29udGV4dCwgIC8vL1xuICAgICAgICAgICAgc3BlY2lmaUNvbnRleHQgPSBjb250ZXh0LCAvLy9cbiAgICAgICAgICAgIHRlcm1VbmlmaWVzV2l0aEdlbmVyYXRvciA9IHVuaWZ5VGVybVdpdGhHZW5lcmF0b3IodGVybSwgZ2VuZXJhdG9yLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaUNvbnRleHQpO1xuXG4gICAgICBpZiAodGVybVVuaWZpZXNXaXRoR2VuZXJhdG9yKSB7XG4gICAgICAgIGNvbnN0IHByb3Zpc2lvbmFsID0gdGhpcy50eXBlLmlzUHJvdmlzaW9uYWwoKTtcblxuICAgICAgICB0ZXJtLnNldFR5cGUodGhpcy50eXBlKTtcblxuICAgICAgICB0ZXJtLnNldFByb3Zpc2lvbmFsKHByb3Zpc2lvbmFsKTtcblxuICAgICAgICBjb25zdCB2YWxpZGF0ZXNGb3J3YXJkcyA9IGF3YWl0IHZhbGlkYXRlRm9yd2FyZHModGVybSwgY29udGV4dCk7XG5cbiAgICAgICAgaWYgKHZhbGlkYXRlc0ZvcndhcmRzKSB7XG4gICAgICAgICAgdGVybVVuaWZpZXMgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHRlcm1VbmlmaWVzKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi51bmlmaWVkIHRoZSAnJHt0ZXJtU3RyaW5nfScgdGVybSB3aXRoIHRoZSAnJHtnZW5lcmF0b3JTdHJpbmd9JyBnZW5lcmF0b3IuYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRlcm1VbmlmaWVzO1xuICB9XG5cbiAgYXN5bmMgZGlzY2hhcmdlSHlwb3RoZXNpc0dpdmVuVGVybShoeXBvdGhlc2lzLCB0ZXJtLCBjb250ZXh0KSB7XG4gICAgbGV0IGh5cG90aGVzaXNEaXNjaGFyZ2VzR2l2ZW5UZXJtO1xuXG4gICAgYXdhaXQgdGhpcy5icmVhayhjb250ZXh0KTtcblxuICAgIGNvbnN0IHRlcm1TdHJpbmcgPSB0ZXJtLmdldFN0cmluZygpLFxuICAgICAgICAgIGh5cG90aGVzaXNTdHJpbmcgPSBoeXBvdGhlc2lzLmdldFN0cmluZygpLFxuICAgICAgICAgIGdlbmVyYXRvclN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7IC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgRGlzY2hhcmRpbmcgdGhlICcke2dlbmVyYXRvclN0cmluZ30nIGdlbmVyYXRvcidzICcke2h5cG90aGVzaXNTdHJpbmd9JyBoeXBvdGhlc2lzIGdpdmVuIHRoZSAnJHt0ZXJtU3RyaW5nfScgdGVybS4uLmApO1xuXG4gICAgaHlwb3RoZXNpc0Rpc2NoYXJnZXNHaXZlblRlcm0gPSBhd2FpdCBoeXBvdGhlc2lzLmRpc2NoYXJnZUdpdmVuVGVybSh0ZXJtLCBjb250ZXh0KTtcblxuICAgIGlmIChoeXBvdGhlc2lzRGlzY2hhcmdlc0dpdmVuVGVybSkge1xuICAgICAgY29udGV4dC50cmFjZShgLi4uZGlzY2hhcmdlcyB0aGUgJyR7Z2VuZXJhdG9yU3RyaW5nfScgZ2VuZXJhdG9yJ3MgJyR7aHlwb3RoZXNpc1N0cmluZ30nIGh5cG90aGVzaXMgZ2l2ZW4gdGhlICcke3Rlcm1TdHJpbmd9JyB0ZXJtLmApO1xuICAgIH1cblxuICAgIHJldHVybiBoeXBvdGhlc2lzRGlzY2hhcmdlc0dpdmVuVGVybTtcbiAgfVxuXG4gIGFzeW5jIGRpc2NoYXJnZUh5cG90aGVzZXNHaXZlblRlcm0odGVybSwgY29udGV4dCkge1xuICAgIGxldCBoeXBvdGhlc2VzRGlzY2hhcmdlc0dpdmVuVGVybSA9IHRydWU7ICAvLy9cblxuICAgIGNvbnN0IGh5cG90aGV0aWNhbCA9IHRoaXMuaXNIeXBvdGhldGljYWwoKTtcblxuICAgIGlmIChoeXBvdGhldGljYWwpIHtcbiAgICAgIGh5cG90aGVzZXNEaXNjaGFyZ2VzR2l2ZW5UZXJtID0gYXdhaXQgYXN5bmNocm9ub3VzRXZlcnkodGhpcy5oeXBvdGhlc2VzLCBhc3luYyAoaHlwb3RoZXNpcykgPT4ge1xuICAgICAgICBjb25zdCBoeXBvdGhlc2lzRGlzY2hhcmdlcyA9IGF3YWl0IHRoaXMuZGlzY2hhcmdlSHlwb3RoZXNpc0dpdmVuVGVybShoeXBvdGhlc2lzLCB0ZXJtLCBjb250ZXh0KTtcblxuICAgICAgICBpZiAoaHlwb3RoZXNpc0Rpc2NoYXJnZXMpIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGh5cG90aGVzZXNEaXNjaGFyZ2VzR2l2ZW5UZXJtO1xuICB9XG5cbiAgdG9KU09OKCkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKTtcblxuICAgIHJldHVybiBzZXJpYWxpc2UoKGNvbnRleHQpID0+IHtcbiAgICAgIGNvbnN0IGluY2x1ZGVUeXBlID0gZmFsc2UsXG4gICAgICAgICAgICB0eXBlSlNPTiA9IHR5cGVUb1R5cGVKU09OKHRoaXMudHlwZSksXG4gICAgICAgICAgICBzdHJpbmcgPSB0aGlzLmdldFN0cmluZyhpbmNsdWRlVHlwZSk7XG5cbiAgICAgIGxldCBicmVha1BvaW50O1xuXG4gICAgICBicmVha1BvaW50ID0gdGhpcy5nZXRCcmVha1BvaW50KCk7XG5cbiAgICAgIGNvbnN0IGJyZWFrUG9pbnRKU09OID0gYnJlYWtQb2ludFRvQnJlYWtQb2ludEpTT04oYnJlYWtQb2ludCk7XG5cbiAgICAgIGJyZWFrUG9pbnQgPSBicmVha1BvaW50SlNPTjsgIC8vL1xuXG4gICAgICBjb25zdCB0eXBlID0gdHlwZUpTT04sICAvLy9cbiAgICAgICAgICAgIGpzb24gPSB7XG4gICAgICAgICAgICAgIGNvbnRleHQsXG4gICAgICAgICAgICAgIHN0cmluZyxcbiAgICAgICAgICAgICAgYnJlYWtQb2ludCxcbiAgICAgICAgICAgICAgdHlwZVxuICAgICAgICAgICAgfTtcblxuICAgICAgcmV0dXJuIGpzb247XG4gICAgfSwgY29udGV4dCk7XG4gIH1cblxuICBzdGF0aWMgbmFtZSA9IFwiR2VuZXJhdG9yXCI7XG5cbiAgc3RhdGljIGZyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgICByZXR1cm4gaW5zdGFudGlhdGUoKGNvbnRleHQpID0+IHtcbiAgICAgIHJldHVybiB1bnNlcmlhbGlzZSgoanNvbiwgY29udGV4dCkgPT4ge1xuICAgICAgICBjb25zdCB7IHN0cmluZyB9ID0ganNvbixcbiAgICAgICAgICAgICAgZ2VuZXJhdG9yTm9kZSA9IGluc3RhbnRpYXRlR2VuZXJhdG9yKHN0cmluZywgY29udGV4dCksXG4gICAgICAgICAgICAgIG5vZGUgPSBnZW5lcmF0b3JOb2RlLCAvLy9cbiAgICAgICAgICAgICAgYnJlYWtQb2ludCA9IGJyZWFrUG9pbnRGcm9tSlNPTihqc29uKSxcbiAgICAgICAgICAgICAgdGVybSA9IHRlcm1Gcm9tR2VuZXJhdG9yTm9kZShnZW5lcmF0b3JOb2RlLCBjb250ZXh0KSxcbiAgICAgICAgICAgICAgdHlwZSA9IHR5cGVGcm9tSlNPTihqc29uLCBjb250ZXh0KSxcbiAgICAgICAgICAgICAgZ2VuZXJhdG9yID0gbmV3IEdlbmVyYXRvcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIHRlcm0sIHR5cGUpO1xuXG4gICAgICAgIHJldHVybiBnZW5lcmF0b3I7XG4gICAgICB9LCBqc29uLCBjb250ZXh0KTtcbiAgICB9LCBjb250ZXh0KTtcbiAgfVxufSk7XG4iXSwibmFtZXMiOlsiYXN5bmNocm9ub3VzRXZlcnkiLCJjb250aW51YXRpb25VdGlsaXRpZXMiLCJicmVha1BvaW50RnJvbUpTT04iLCJicmVha1BvaW50VG9CcmVha1BvaW50SlNPTiIsImJyZWFrUG9pbnRVdGlsaXRpZXMiLCJkZWZpbmUiLCJHZW5lcmF0b3IiLCJFbGVtZW50IiwiY29udGV4dCIsInN0cmluZyIsIm5vZGUiLCJicmVha1BvaW50IiwidGVybSIsInR5cGUiLCJoeXBvdGhlc2VzIiwiZ2V0VGVybSIsImdldFR5cGUiLCJnZXRIeXBvdGhlc2VzIiwic2V0SHlwb3RoZXNlcyIsImdldEdlbmVyYXRvck5vZGUiLCJnZXROb2RlIiwiZ2VuZXJhdG9yTm9kZSIsImlzSHlwb3RoZXRpY2FsIiwiaHlwb3RoZXNlc0xlbmd0aCIsImxlbmd0aCIsImh5cG90aGV0aWNhbCIsImdldFN0cmluZyIsImluY2x1ZGVUeXBlIiwidGVybVN0cmluZyIsInR5cGVTdHJpbmciLCJzZXRUeXBlIiwidmVyaWZ5IiwidmVyaWZpZXMiLCJnZW5lcmF0b3JTdHJpbmciLCJ0cmFjZSIsImF0dGVtcHQiLCJ0ZXJtVmFsaWRhdGVzIiwidmFsaWRhdGVUZXJtIiwiY29tbWl0IiwiZGVidWciLCJ0ZXJtVmFsaWRhdGVzQXNWYXJpYWJsZSIsInZhbGlkYXRlVGVybUFzVmFyaWFibGUiLCJ2YWxpZGF0ZXNGb3J3YXJkcyIsImJhc2VUeXBlIiwiYmFzZVR5cGVGcm9tTm90aGluZyIsInRlcm1WYWxpZGF0ZXNBc0dlbmVyYXRvciIsInZhbGlkYXRlVGVybUFzR2VuZXJhdG9yIiwidW5pZnlUZXJtIiwidmFsaWRhdGVGb3J3YXJkcyIsInRlcm1VbmlmaWVzIiwiaHlwb3RoZXNlc0Rpc2NhcmRlZEdpdmVuVGVybSIsImRpc2NoYXJnZUh5cG90aGVzZXNHaXZlblRlcm0iLCJnZW5lcmF0b3IiLCJnZW5lcmF0b3JDb250ZXh0IiwiZ2V0Q29udGV4dCIsImdlbmVyYWxDb250ZXh0Iiwic3BlY2lmaUNvbnRleHQiLCJ0ZXJtVW5pZmllc1dpdGhHZW5lcmF0b3IiLCJ1bmlmeVRlcm1XaXRoR2VuZXJhdG9yIiwicHJvdmlzaW9uYWwiLCJpc1Byb3Zpc2lvbmFsIiwic2V0UHJvdmlzaW9uYWwiLCJkaXNjaGFyZ2VIeXBvdGhlc2lzR2l2ZW5UZXJtIiwiaHlwb3RoZXNpcyIsImh5cG90aGVzaXNEaXNjaGFyZ2VzR2l2ZW5UZXJtIiwiYnJlYWsiLCJoeXBvdGhlc2lzU3RyaW5nIiwiZGlzY2hhcmdlR2l2ZW5UZXJtIiwiaHlwb3RoZXNlc0Rpc2NoYXJnZXNHaXZlblRlcm0iLCJoeXBvdGhlc2lzRGlzY2hhcmdlcyIsInRvSlNPTiIsInNlcmlhbGlzZSIsInR5cGVKU09OIiwidHlwZVRvVHlwZUpTT04iLCJnZXRCcmVha1BvaW50IiwiYnJlYWtQb2ludEpTT04iLCJqc29uIiwibmFtZSIsImZyb21KU09OIiwiaW5zdGFudGlhdGUiLCJ1bnNlcmlhbGlzZSIsImluc3RhbnRpYXRlR2VuZXJhdG9yIiwidGVybUZyb21HZW5lcmF0b3JOb2RlIiwidHlw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
182
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbGVtZW50L2dlbmVyYXRvci5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgRWxlbWVudCwgYnJlYWtQb2ludFV0aWxpdGllcywgY29udGludWF0aW9uVXRpbGl0aWVzIH0gZnJvbSBcIm9jY2FtLWxhbmd1YWdlc1wiO1xuXG5pbXBvcnQgeyBkZWZpbmUgfSBmcm9tIFwiLi4vZWxlbWVudHNcIjtcbmltcG9ydCB7IGJhc2VUeXBlRnJvbU5vdGhpbmcgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL3R5cGVcIjtcbmltcG9ydCB7IGluc3RhbnRpYXRlR2VuZXJhdG9yIH0gZnJvbSBcIi4uL3Byb2Nlc3MvaW5zdGFudGlhdGVcIjtcbmltcG9ydCB7IHRlcm1Gcm9tR2VuZXJhdG9yTm9kZSB9IGZyb20gXCIuLi91dGlsaXRpZXMvZWxlbWVudFwiO1xuaW1wb3J0IHsgdmFsaWRhdGVUZXJtQXNWYXJpYWJsZSB9IGZyb20gXCIuLi9wcm9jZXNzL3ZhbGlkYXRpb25cIjtcbmltcG9ydCB7IHVuaWZ5VGVybVdpdGhHZW5lcmF0b3IgfSBmcm9tIFwiLi4vcHJvY2Vzcy91bmlmeVwiO1xuaW1wb3J0IHsgdmFsaWRhdGVUZXJtQXNHZW5lcmF0b3IgfSBmcm9tIFwiLi4vcHJvY2Vzcy92YWxpZGF0ZVwiO1xuaW1wb3J0IHsgdHlwZUZyb21KU09OLCB0eXBlVG9UeXBlSlNPTiB9IGZyb20gXCIuLi91dGlsaXRpZXMvanNvblwiO1xuaW1wb3J0IHsgYXR0ZW1wdCwgc2VyaWFsaXNlLCB1bnNlcmlhbGlzZSwgaW5zdGFudGlhdGUgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2NvbnRleHRcIjtcblxuY29uc3QgeyBhc3luY2hyb25vdXNFdmVyeSB9ID0gY29udGludWF0aW9uVXRpbGl0aWVzLFxuICAgICAgeyBicmVha1BvaW50RnJvbUpTT04sIGJyZWFrUG9pbnRUb0JyZWFrUG9pbnRKU09OIH0gPSBicmVha1BvaW50VXRpbGl0aWVzO1xuXG5leHBvcnQgZGVmYXVsdCBkZWZpbmUoY2xhc3MgR2VuZXJhdG9yIGV4dGVuZHMgRWxlbWVudCB7XG4gIGNvbnN0cnVjdG9yKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgdGVybSwgdHlwZSwgaHlwb3RoZXNlcykge1xuICAgIHN1cGVyKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCk7XG5cbiAgICB0aGlzLnRlcm0gPSB0ZXJtO1xuICAgIHRoaXMudHlwZSA9IHR5cGU7XG4gICAgdGhpcy5oeXBvdGhlc2VzID0gaHlwb3RoZXNlcztcbiAgfVxuXG4gIGdldFRlcm0oKSB7XG4gICAgcmV0dXJuIHRoaXMudGVybTtcbiAgfVxuXG4gIGdldFR5cGUoKSB7XG4gICAgcmV0dXJuIHRoaXMudHlwZTtcbiAgfVxuXG4gIGdldEh5cG90aGVzZXMoKSB7XG4gICAgcmV0dXJuIHRoaXMuaHlwb3RoZXNlcztcbiAgfVxuXG4gIHNldEh5cG90aGVzZXMoaHlwb3RoZXNlcykge1xuICAgIHRoaXMuaHlwb3RoZXNlcyA9IGh5cG90aGVzZXM7XG4gIH1cblxuICBnZXRHZW5lcmF0b3JOb2RlKCkge1xuICAgIGNvbnN0IG5vZGUgPSB0aGlzLmdldE5vZGUoKSxcbiAgICAgICAgICBnZW5lcmF0b3JOb2RlID0gbm9kZTsgIC8vL1xuXG4gICAgcmV0dXJuIGdlbmVyYXRvck5vZGU7XG4gIH1cblxuICBpc0h5cG90aGV0aWNhbCgpIHtcbiAgICBjb25zdCBoeXBvdGhlc2VzTGVuZ3RoID0gdGhpcy5oeXBvdGhlc2VzLmxlbmd0aCxcbiAgICAgICAgICBoeXBvdGhldGljYWwgPSAoaHlwb3RoZXNlc0xlbmd0aCA+IDApO1xuXG4gICAgcmV0dXJuIGh5cG90aGV0aWNhbDtcbiAgfVxuXG4gIGdldFN0cmluZyhpbmNsdWRlVHlwZSA9IHRydWUpIHtcbiAgICBsZXQgc3RyaW5nO1xuXG4gICAgaWYgKGluY2x1ZGVUeXBlKSB7XG4gICAgICBjb25zdCB0ZXJtU3RyaW5nID0gdGhpcy50ZXJtLmdldFN0cmluZygpLFxuICAgICAgICAgICAgdHlwZVN0cmluZyA9IHRoaXMudHlwZS5nZXRTdHJpbmcoKTtcblxuICAgICAgc3RyaW5nID0gYCR7dGVybVN0cmluZ30uJHt0eXBlU3RyaW5nfWA7XG4gICAgfSBlbHNlIHtcbiAgICAgIHN0cmluZyA9IHN1cGVyLmdldFN0cmluZygpO1xuICAgIH1cblxuICAgIHJldHVybiBzdHJpbmc7XG4gIH1cblxuICBzZXRUeXBlKHR5cGUpIHtcbiAgICB0aGlzLnR5cGUgPSB0eXBlO1xuICB9XG5cbiAgYXN5bmMgdmVyaWZ5KGNvbnRleHQpIHtcbiAgICBsZXQgdmVyaWZpZXMgPSBmYWxzZTtcblxuICAgIGNvbnN0IGluY2x1ZGVUeXBlID0gZmFsc2UsXG4gICAgICAgICAgZ2VuZXJhdG9yU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoaW5jbHVkZVR5cGUpO1xuXG4gICAgY29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHtnZW5lcmF0b3JTdHJpbmd9JyBnZW5lcmF0b3IuLi5gKTtcblxuICAgIGF3YWl0IGF0dGVtcHQoYXN5bmMgKGNvbnRleHQpID0+IHtcbiAgICAgIGNvbnN0IHRlcm1WYWxpZGF0ZXMgPSBhd2FpdCB0aGlzLnZhbGlkYXRlVGVybShjb250ZXh0KTtcblxuICAgICAgaWYgKHRlcm1WYWxpZGF0ZXMpIHtcbiAgICAgICAgdmVyaWZpZXMgPSB0cnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAodmVyaWZpZXMpIHtcbiAgICAgICAgdGhpcy5jb21taXQoY29udGV4dCk7XG4gICAgICB9XG4gICAgfSwgY29udGV4dCk7XG5cbiAgICBpZiAodmVyaWZpZXMpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHtnZW5lcmF0b3JTdHJpbmd9JyBnZW5lcmF0b3IuYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZlcmlmaWVzO1xuICB9XG5cbiAgYXN5bmMgdmFsaWRhdGVUZXJtKGNvbnRleHQpIHtcbiAgICBsZXQgdGVybVZhbGlkYXRlcyA9IGZhbHNlO1xuXG4gICAgY29uc3QgaW5jbHVkZVR5cGUgPSBmYWxzZSxcbiAgICAgICAgICBnZW5lcmF0b3JTdHJpbmcgPSB0aGlzLmdldFN0cmluZyhpbmNsdWRlVHlwZSk7XG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtnZW5lcmF0b3JTdHJpbmd9JyBnZW5lcmF0b3IncyB0ZXJtLi4uYCk7XG5cbiAgICBjb25zdCBoeXBvdGhldGljYWwgPSB0aGlzLmlzSHlwb3RoZXRpY2FsKCk7XG5cbiAgICBpZiAoaHlwb3RoZXRpY2FsKSB7XG4gICAgICBjb25zdCB0ZXJtVmFsaWRhdGVzQXNWYXJpYWJsZSA9IGF3YWl0IHZhbGlkYXRlVGVybUFzVmFyaWFibGUodGhpcy50ZXJtLCBjb250ZXh0LCBhc3luYyAodGVybSwgY29udGV4dCkgPT4geyAvLy9cbiAgICAgICAgbGV0IHZhbGlkYXRlc0ZvcndhcmRzID0gZmFsc2U7XG5cbiAgICAgICAgY29uc3QgdHlwZSA9IHRlcm0uZ2V0VHlwZSgpLFxuICAgICAgICAgICAgICBiYXNlVHlwZSA9IGJhc2VUeXBlRnJvbU5vdGhpbmcoKTtcblxuICAgICAgICBpZiAodHlwZSA9PT0gYmFzZVR5cGUpIHtcbiAgICAgICAgICB2YWxpZGF0ZXNGb3J3YXJkcyA9IHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdmFsaWRhdGVzRm9yd2FyZHM7XG4gICAgICB9KTtcblxuICAgICAgaWYgKHRlcm1WYWxpZGF0ZXNBc1ZhcmlhYmxlKSB7XG4gICAgICAgIHRlcm1WYWxpZGF0ZXMgPSB0cnVlO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCB0ZXJtVmFsaWRhdGVzQXNHZW5lcmF0b3IgPSB2YWxpZGF0ZVRlcm1Bc0dlbmVyYXRvcih0aGlzLnRlcm0sIGNvbnRleHQpO1xuXG4gICAgICBpZiAodGVybVZhbGlkYXRlc0FzR2VuZXJhdG9yKSB7XG4gICAgICAgIHRlcm1WYWxpZGF0ZXMgPSB0cnVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0ZXJtVmFsaWRhdGVzKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke2dlbmVyYXRvclN0cmluZ30nIGdlbmVyYXRvcidzIHRlcm0uYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRlcm1WYWxpZGF0ZXM7XG4gIH1cblxuICBhc3luYyB1bmlmeVRlcm0odGVybSwgY29udGV4dCwgdmFsaWRhdGVGb3J3YXJkcykge1xuICAgIGxldCB0ZXJtVW5pZmllcyA9IGZhbHNlO1xuXG4gICAgY29uc3QgdGVybVN0cmluZyA9IHRlcm0uZ2V0U3RyaW5nKCksXG4gICAgICAgICAgaW5jbHVkZVR5cGUgPSBmYWxzZSxcbiAgICAgICAgICBnZW5lcmF0b3JTdHJpbmcgPSB0aGlzLmdldFN0cmluZyhpbmNsdWRlVHlwZSk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHt0ZXJtU3RyaW5nfScgdGVybSB3aXRoIHRoZSAnJHtnZW5lcmF0b3JTdHJpbmd9JyBnZW5lcmF0b3IuLi5gKTtcblxuICAgIGNvbnN0IGh5cG90aGVzZXNEaXNjYXJkZWRHaXZlblRlcm0gPSBhd2FpdCB0aGlzLmRpc2NoYXJnZUh5cG90aGVzZXNHaXZlblRlcm0odGVybSwgY29udGV4dCk7XG5cbiAgICBpZiAoaHlwb3RoZXNlc0Rpc2NhcmRlZEdpdmVuVGVybSkge1xuICAgICAgY29uc3QgZ2VuZXJhdG9yID0gdGhpcywgLy8vXG4gICAgICAgICAgICBnZW5lcmF0b3JDb250ZXh0ID0gZ2VuZXJhdG9yLmdldENvbnRleHQoKSxcbiAgICAgICAgICAgIGdlbmVyYWxDb250ZXh0ID0gZ2VuZXJhdG9yQ29udGV4dCwgIC8vL1xuICAgICAgICAgICAgc3BlY2lmaUNvbnRleHQgPSBjb250ZXh0LCAvLy9cbiAgICAgICAgICAgIHRlcm1VbmlmaWVzV2l0aEdlbmVyYXRvciA9IHVuaWZ5VGVybVdpdGhHZW5lcmF0b3IodGVybSwgZ2VuZXJhdG9yLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaUNvbnRleHQpO1xuXG4gICAgICBpZiAodGVybVVuaWZpZXNXaXRoR2VuZXJhdG9yKSB7XG4gICAgICAgIGNvbnN0IHByb3Zpc2lvbmFsID0gdGhpcy50eXBlLmlzUHJvdmlzaW9uYWwoKTtcblxuICAgICAgICB0ZXJtLnNldFR5cGUodGhpcy50eXBlKTtcblxuICAgICAgICB0ZXJtLnNldFByb3Zpc2lvbmFsKHByb3Zpc2lvbmFsKTtcblxuICAgICAgICBjb25zdCB2YWxpZGF0ZXNGb3J3YXJkcyA9IGF3YWl0IHZhbGlkYXRlRm9yd2FyZHModGVybSwgY29udGV4dCk7XG5cbiAgICAgICAgaWYgKHZhbGlkYXRlc0ZvcndhcmRzKSB7XG4gICAgICAgICAgdGVybVVuaWZpZXMgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHRlcm1VbmlmaWVzKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi51bmlmaWVkIHRoZSAnJHt0ZXJtU3RyaW5nfScgdGVybSB3aXRoIHRoZSAnJHtnZW5lcmF0b3JTdHJpbmd9JyBnZW5lcmF0b3IuYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRlcm1VbmlmaWVzO1xuICB9XG5cbiAgYXN5bmMgZGlzY2hhcmdlSHlwb3RoZXNpc0dpdmVuVGVybShoeXBvdGhlc2lzLCB0ZXJtLCBjb250ZXh0KSB7XG4gICAgbGV0IGh5cG90aGVzaXNEaXNjaGFyZ2VzR2l2ZW5UZXJtO1xuXG4gICAgYXdhaXQgdGhpcy5icmVhayhjb250ZXh0KTtcblxuICAgIGNvbnN0IHRlcm1TdHJpbmcgPSB0ZXJtLmdldFN0cmluZygpLFxuICAgICAgICAgIGh5cG90aGVzaXNTdHJpbmcgPSBoeXBvdGhlc2lzLmdldFN0cmluZygpLFxuICAgICAgICAgIGdlbmVyYXRvclN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7IC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgRGlzY2hhcmRpbmcgdGhlICcke2dlbmVyYXRvclN0cmluZ30nIGdlbmVyYXRvcidzICcke2h5cG90aGVzaXNTdHJpbmd9JyBoeXBvdGhlc2lzIGdpdmVuIHRoZSAnJHt0ZXJtU3RyaW5nfScgdGVybS4uLmApO1xuXG4gICAgaHlwb3RoZXNpc0Rpc2NoYXJnZXNHaXZlblRlcm0gPSBhd2FpdCBoeXBvdGhlc2lzLmRpc2NoYXJnZUdpdmVuVGVybSh0ZXJtLCBjb250ZXh0KTtcblxuICAgIGlmIChoeXBvdGhlc2lzRGlzY2hhcmdlc0dpdmVuVGVybSkge1xuICAgICAgY29udGV4dC50cmFjZShgLi4uZGlzY2hhcmdlcyB0aGUgJyR7Z2VuZXJhdG9yU3RyaW5nfScgZ2VuZXJhdG9yJ3MgJyR7aHlwb3RoZXNpc1N0cmluZ30nIGh5cG90aGVzaXMgZ2l2ZW4gdGhlICcke3Rlcm1TdHJpbmd9JyB0ZXJtLmApO1xuICAgIH1cblxuICAgIHJldHVybiBoeXBvdGhlc2lzRGlzY2hhcmdlc0dpdmVuVGVybTtcbiAgfVxuXG4gIGFzeW5jIGRpc2NoYXJnZUh5cG90aGVzZXNHaXZlblRlcm0odGVybSwgY29udGV4dCkge1xuICAgIGxldCBoeXBvdGhlc2VzRGlzY2hhcmdlc0dpdmVuVGVybSA9IHRydWU7ICAvLy9cblxuICAgIGNvbnN0IGh5cG90aGV0aWNhbCA9IHRoaXMuaXNIeXBvdGhldGljYWwoKTtcblxuICAgIGlmIChoeXBvdGhldGljYWwpIHtcbiAgICAgIGh5cG90aGVzZXNEaXNjaGFyZ2VzR2l2ZW5UZXJtID0gYXdhaXQgYXN5bmNocm9ub3VzRXZlcnkodGhpcy5oeXBvdGhlc2VzLCBhc3luYyAoaHlwb3RoZXNpcykgPT4ge1xuICAgICAgICBjb25zdCBoeXBvdGhlc2lzRGlzY2hhcmdlcyA9IGF3YWl0IHRoaXMuZGlzY2hhcmdlSHlwb3RoZXNpc0dpdmVuVGVybShoeXBvdGhlc2lzLCB0ZXJtLCBjb250ZXh0KTtcblxuICAgICAgICBpZiAoaHlwb3RoZXNpc0Rpc2NoYXJnZXMpIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGh5cG90aGVzZXNEaXNjaGFyZ2VzR2l2ZW5UZXJtO1xuICB9XG5cbiAgdG9KU09OKCkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKTtcblxuICAgIHJldHVybiBzZXJpYWxpc2UoKGNvbnRleHQpID0+IHtcbiAgICAgIGNvbnN0IGluY2x1ZGVUeXBlID0gZmFsc2UsXG4gICAgICAgICAgICB0eXBlSlNPTiA9IHR5cGVUb1R5cGVKU09OKHRoaXMudHlwZSksXG4gICAgICAgICAgICBzdHJpbmcgPSB0aGlzLmdldFN0cmluZyhpbmNsdWRlVHlwZSk7XG5cbiAgICAgIGxldCBicmVha1BvaW50O1xuXG4gICAgICBicmVha1BvaW50ID0gdGhpcy5nZXRCcmVha1BvaW50KCk7XG5cbiAgICAgIGNvbnN0IGJyZWFrUG9pbnRKU09OID0gYnJlYWtQb2ludFRvQnJlYWtQb2ludEpTT04oYnJlYWtQb2ludCk7XG5cbiAgICAgIGJyZWFrUG9pbnQgPSBicmVha1BvaW50SlNPTjsgIC8vL1xuXG4gICAgICBjb25zdCB0eXBlID0gdHlwZUpTT04sICAvLy9cbiAgICAgICAgICAgIGpzb24gPSB7XG4gICAgICAgICAgICAgIGNvbnRleHQsXG4gICAgICAgICAgICAgIHN0cmluZyxcbiAgICAgICAgICAgICAgYnJlYWtQb2ludCxcbiAgICAgICAgICAgICAgdHlwZVxuICAgICAgICAgICAgfTtcblxuICAgICAgcmV0dXJuIGpzb247XG4gICAgfSwgY29udGV4dCk7XG4gIH1cblxuICBzdGF0aWMgbmFtZSA9IFwiR2VuZXJhdG9yXCI7XG5cbiAgc3RhdGljIGZyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgICByZXR1cm4gaW5zdGFudGlhdGUoKGNvbnRleHQpID0+IHtcbiAgICAgIHJldHVybiB1bnNlcmlhbGlzZSgoanNvbiwgY29udGV4dCkgPT4ge1xuICAgICAgICBjb25zdCB7IHN0cmluZyB9ID0ganNvbixcbiAgICAgICAgICAgICAgZ2VuZXJhdG9yTm9kZSA9IGluc3RhbnRpYXRlR2VuZXJhdG9yKHN0cmluZywgY29udGV4dCksXG4gICAgICAgICAgICAgIG5vZGUgPSBnZW5lcmF0b3JOb2RlLCAvLy9cbiAgICAgICAgICAgICAgYnJlYWtQb2ludCA9IGJyZWFrUG9pbnRGcm9tSlNPTihqc29uKSxcbiAgICAgICAgICAgICAgdGVybSA9IHRlcm1Gcm9tR2VuZXJhdG9yTm9kZShnZW5lcmF0b3JOb2RlLCBjb250ZXh0KSxcbiAgICAgICAgICAgICAgdHlwZSA9IHR5cGVGcm9tSlNPTihqc29uLCBjb250ZXh0KSxcbiAgICAgICAgICAgICAgZ2VuZXJhdG9yID0gbmV3IEdlbmVyYXRvcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIHRlcm0sIHR5cGUpO1xuXG4gICAgICAgIHJldHVybiBnZW5lcmF0b3I7XG4gICAgICB9LCBqc29uLCBjb250ZXh0KTtcbiAgICB9LCBjb250ZXh0KTtcbiAgfVxufSk7XG4iXSwibmFtZXMiOlsiYXN5bmNocm9ub3VzRXZlcnkiLCJjb250aW51YXRpb25VdGlsaXRpZXMiLCJicmVha1BvaW50RnJvbUpTT04iLCJicmVha1BvaW50VG9CcmVha1BvaW50SlNPTiIsImJyZWFrUG9pbnRVdGlsaXRpZXMiLCJkZWZpbmUiLCJHZW5lcmF0b3IiLCJFbGVtZW50IiwiY29udGV4dCIsInN0cmluZyIsIm5vZGUiLCJicmVha1BvaW50IiwidGVybSIsInR5cGUiLCJoeXBvdGhlc2VzIiwiZ2V0VGVybSIsImdldFR5cGUiLCJnZXRIeXBvdGhlc2VzIiwic2V0SHlwb3RoZXNlcyIsImdldEdlbmVyYXRvck5vZGUiLCJnZXROb2RlIiwiZ2VuZXJhdG9yTm9kZSIsImlzSHlwb3RoZXRpY2FsIiwiaHlwb3RoZXNlc0xlbmd0aCIsImxlbmd0aCIsImh5cG90aGV0aWNhbCIsImdldFN0cmluZyIsImluY2x1ZGVUeXBlIiwidGVybVN0cmluZyIsInR5cGVTdHJpbmciLCJzZXRUeXBlIiwidmVyaWZ5IiwidmVyaWZpZXMiLCJnZW5lcmF0b3JTdHJpbmciLCJ0cmFjZSIsImF0dGVtcHQiLCJ0ZXJtVmFsaWRhdGVzIiwidmFsaWRhdGVUZXJtIiwiY29tbWl0IiwiZGVidWciLCJ0ZXJtVmFsaWRhdGVzQXNWYXJpYWJsZSIsInZhbGlkYXRlVGVybUFzVmFyaWFibGUiLCJ2YWxpZGF0ZXNGb3J3YXJkcyIsImJhc2VUeXBlIiwiYmFzZVR5cGVGcm9tTm90aGluZyIsInRlcm1WYWxpZGF0ZXNBc0dlbmVyYXRvciIsInZhbGlkYXRlVGVybUFzR2VuZXJhdG9yIiwidW5pZnlUZXJtIiwidmFsaWRhdGVGb3J3YXJkcyIsInRlcm1VbmlmaWVzIiwiaHlwb3RoZXNlc0Rpc2NhcmRlZEdpdmVuVGVybSIsImRpc2NoYXJnZUh5cG90aGVzZXNHaXZlblRlcm0iLCJnZW5lcmF0b3IiLCJnZW5lcmF0b3JDb250ZXh0IiwiZ2V0Q29udGV4dCIsImdlbmVyYWxDb250ZXh0Iiwic3BlY2lmaUNvbnRleHQiLCJ0ZXJtVW5pZmllc1dpdGhHZW5lcmF0b3IiLCJ1bmlmeVRlcm1XaXRoR2VuZXJhdG9yIiwicHJvdmlzaW9uYWwiLCJpc1Byb3Zpc2lvbmFsIiwic2V0UHJvdmlzaW9uYWwiLCJkaXNjaGFyZ2VIeXBvdGhlc2lzR2l2ZW5UZXJtIiwiaHlwb3RoZXNpcyIsImh5cG90aGVzaXNEaXNjaGFyZ2VzR2l2ZW5UZXJtIiwiYnJlYWsiLCJoeXBvdGhlc2lzU3RyaW5nIiwiZGlzY2hhcmdlR2l2ZW5UZXJtIiwiaHlwb3RoZXNlc0Rpc2NoYXJnZXNHaXZlblRlcm0iLCJoeXBvdGhlc2lzRGlzY2hhcmdlcyIsInRvSlNPTiIsInNlcmlhbGlzZSIsInR5cGVKU09OIiwidHlwZVRvVHlwZUpTT04iLCJnZXRCcmVha1BvaW50IiwiYnJlYWtQb2ludEpTT04iLCJqc29uIiwibmFtZSIsImZyb21KU09OIiwiaW5zdGFudGlhdGUiLCJ1bnNlcmlhbGlzZSIsImluc3RhbnRpYXRlR2VuZXJhdG9yIiwidGVybUZyb21HZW5lcmF0b3JOb2RlIiwidHlwZUZyb21K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
@@ -68,7 +68,7 @@ const _default = (0, _elements.define)(class Property extends _occamlanguages.El
68
68
  let termValidates = false;
69
69
  const includeType = false, propertyString = this.getString(includeType); ///
70
70
  context.trace(`Validating the '${propertyString}' property's term...`);
71
- const termValidatesAsProperty = await (0, _validate.validateTermAsProperty)(this.term, context);
71
+ const termValidatesAsProperty = (0, _validate.validateTermAsProperty)(this.term, context);
72
72
  if (termValidatesAsProperty) {
73
73
  termValidates = true;
74
74
  }
@@ -124,4 +124,4 @@ const _default = (0, _elements.define)(class Property extends _occamlanguages.El
124
124
  }
125
125
  });
126
126
 
127
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbGVtZW50L3Byb3BlcnR5LmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBFbGVtZW50LCBicmVha1BvaW50VXRpbGl0aWVzIH0gZnJvbSBcIm9jY2FtLWxhbmd1YWdlc1wiO1xuXG5pbXBvcnQgeyBkZWZpbmUgfSBmcm9tIFwiLi4vZWxlbWVudHNcIjtcbmltcG9ydCB7IGluc3RhbnRpYXRlUHJvcGVydHkgfSBmcm9tIFwiLi4vcHJvY2Vzcy9pbnN0YW50aWF0ZVwiO1xuaW1wb3J0IHsgdGVybUZyb21Qcm9wZXJ0eU5vZGUgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2VsZW1lbnRcIjtcbmltcG9ydCB7IHVuaWZ5VGVybVdpdGhQcm9wZXJ0eSB9IGZyb20gXCIuLi9wcm9jZXNzL3VuaWZ5XCI7XG5pbXBvcnQgeyB2YWxpZGF0ZVRlcm1Bc1Byb3BlcnR5IH0gZnJvbSBcIi4uL3Byb2Nlc3MvdmFsaWRhdGVcIjtcbmltcG9ydCB7IHR5cGVGcm9tSlNPTiwgdHlwZVRvVHlwZUpTT04gfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2pzb25cIjtcbmltcG9ydCB7IGF0dGVtcHQsIHNlcmlhbGlzZSwgdW5zZXJpYWxpc2UsIGluc3RhbnRpYXRlIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9jb250ZXh0XCI7XG5cbmNvbnN0IHsgYnJlYWtQb2ludEZyb21KU09OLCBicmVha1BvaW50VG9CcmVha1BvaW50SlNPTiB9ID0gYnJlYWtQb2ludFV0aWxpdGllcztcblxuZXhwb3J0IGRlZmF1bHQgZGVmaW5lKGNsYXNzIFByb3BlcnR5IGV4dGVuZHMgRWxlbWVudCB7XG4gIGNvbnN0cnVjdG9yKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgdGVybSwgdHlwZSkge1xuICAgIHN1cGVyKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCk7XG5cbiAgICB0aGlzLnRlcm0gPSB0ZXJtO1xuICAgIHRoaXMudHlwZSA9IHR5cGU7XG4gIH1cblxuICBnZXRUZXJtKCkge1xuICAgIHJldHVybiB0aGlzLnRlcm07XG4gIH1cblxuICBnZXRUeXBlKCkge1xuICAgIHJldHVybiB0aGlzLnR5cGU7XG4gIH1cblxuICBnZXRQcm9wZXJ0eU5vZGUoKSB7XG4gICAgY29uc3Qgbm9kZSA9IHRoaXMuZ2V0Tm9kZSgpLFxuICAgICAgICAgIHByb3BlcnR5Tm9kZSA9IG5vZGU7ICAvLy9cblxuICAgIHJldHVybiBwcm9wZXJ0eU5vZGU7XG4gIH1cblxuICBnZXRTdHJpbmcoaW5jbHVkZVR5cGUgPSB0cnVlKSB7XG4gICAgbGV0IHN0cmluZztcblxuICAgIGlmIChpbmNsdWRlVHlwZSkge1xuICAgICAgY29uc3QgdGVybVN0cmluZyA9IHRoaXMudGVybS5nZXRTdHJpbmcoKSxcbiAgICAgICAgICAgIHR5cGVTdHJpbmcgPSB0aGlzLnR5cGUuZ2V0U3RyaW5nKCk7XG5cbiAgICAgIHN0cmluZyA9IGAke3Rlcm1TdHJpbmd9LiR7dHlwZVN0cmluZ31gO1xuICAgIH0gZWxzZSB7XG4gICAgICBzdHJpbmcgPSBzdXBlci5nZXRTdHJpbmcoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gc3RyaW5nO1xuICB9XG5cbiAgc2V0VHlwZSh0eXBlKSB7XG4gICAgdGhpcy50eXBlID0gdHlwZTtcbiAgfVxuXG4gIGFzeW5jIHZlcmlmeShjb250ZXh0KSB7XG4gICAgbGV0IHZlcmlmaWVzID0gZmFsc2U7XG5cbiAgICBjb25zdCBpbmNsdWRlVHlwZSA9IGZhbHNlLFxuICAgICAgICAgIHByb3BlcnR5U3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoaW5jbHVkZVR5cGUpOyAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7cHJvcGVydHlTdHJpbmd9JyBwcm9wZXJ0eS4uLmApO1xuXG4gICAgYXdhaXQgYXR0ZW1wdChhc3luYyAoY29udGV4dCkgPT4ge1xuICAgICAgY29uc3QgdGVybVZhbGlkYXRlcyA9IGF3YWl0IHRoaXMudmFsaWRhdGVUZXJtKGNvbnRleHQpO1xuXG4gICAgICBpZiAodGVybVZhbGlkYXRlcykge1xuICAgICAgICB2ZXJpZmllcyA9IHRydWU7XG4gICAgICB9XG5cbiAgICAgIGlmICh2ZXJpZmllcykge1xuICAgICAgICB0aGlzLmNvbW1pdChjb250ZXh0KTtcbiAgICAgIH1cbiAgICB9LCBjb250ZXh0KTtcblxuICAgIGlmICh2ZXJpZmllcykge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke3Byb3BlcnR5U3RyaW5nfScgcHJvcGVydHkuYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZlcmlmaWVzO1xuICB9XG5cbiAgYXN5bmMgdmFsaWRhdGVUZXJtKGNvbnRleHQpIHtcbiAgICBsZXQgdGVybVZhbGlkYXRlcyA9IGZhbHNlO1xuXG4gICAgY29uc3QgaW5jbHVkZVR5cGUgPSBmYWxzZSxcbiAgICAgICAgICBwcm9wZXJ0eVN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKGluY2x1ZGVUeXBlKTsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtwcm9wZXJ0eVN0cmluZ30nIHByb3BlcnR5J3MgdGVybS4uLmApO1xuXG4gICAgY29uc3QgdGVybVZhbGlkYXRlc0FzUHJvcGVydHkgPSBhd2FpdCB2YWxpZGF0ZVRlcm1Bc1Byb3BlcnR5KHRoaXMudGVybSwgY29udGV4dCk7XG5cbiAgICBpZiAodGVybVZhbGlkYXRlc0FzUHJvcGVydHkpIHtcbiAgICAgIHRlcm1WYWxpZGF0ZXMgPSB0cnVlO1xuICAgIH1cblxuICAgIGlmICh0ZXJtVmFsaWRhdGVzKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke3Byb3BlcnR5U3RyaW5nfScgcHJvcGVydHkncyB0ZXJtLmApO1xuICAgIH1cblxuICAgIHJldHVybiB0ZXJtVmFsaWRhdGVzO1xuICB9XG5cbiAgYXN5bmMgdW5pZnlUZXJtKHRlcm0sIGNvbnRleHQsIHZhbGlkYXRlRm9yd2FyZHMpIHtcbiAgICBsZXQgdGVybVVuaWZpZXMgPSBmYWxzZTtcblxuICAgIGNvbnN0IHRlcm1TdHJpbmcgPSB0ZXJtLmdldFN0cmluZygpLFxuICAgICAgICAgIGluY2x1ZGVUeXBlID0gZmFsc2UsXG4gICAgICAgICAgcHJvcGVydHlTdHJpbmcgPSB0aGlzLmdldFN0cmluZyhpbmNsdWRlVHlwZSk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHt0ZXJtU3RyaW5nfScgdGVybSB3aXRoIHRoZSAnJHtwcm9wZXJ0eVN0cmluZ30nIHByb3BlcnR5Li4uYCk7XG5cbiAgICBjb25zdCBwcm9wZXJ0eSA9IHRoaXMsIC8vL1xuICAgICAgICAgIHByb3BlcnR5Q29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpLCAgLy8vXG4gICAgICAgICAgZ2VuZXJhbENvbnRleHQgPSBwcm9wZXJ0eUNvbnRleHQsICAvLy9cbiAgICAgICAgICBzcGVjaWZpQ29udGV4dCA9IGNvbnRleHQsIC8vL1xuICAgICAgICAgIHRlcm1VbmlmaWVzV2l0aFByb3BlcnR5ID0gdW5pZnlUZXJtV2l0aFByb3BlcnR5KHRlcm0sIHByb3BlcnR5LCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaUNvbnRleHQpO1xuXG4gICAgaWYgKHRlcm1VbmlmaWVzV2l0aFByb3BlcnR5KSB7XG4gICAgICBjb25zdCBwcm92aXNpb25hbCA9IHRoaXMudHlwZS5pc1Byb3Zpc2lvbmFsKCk7XG5cbiAgICAgIHRlcm0uc2V0VHlwZSh0aGlzLnR5cGUpO1xuXG4gICAgICB0ZXJtLnNldFByb3Zpc2lvbmFsKHByb3Zpc2lvbmFsKTtcblxuICAgICAgY29uc3QgdmFsaWRhdGVzRm9yd2FyZHMgPSBhd2FpdCB2YWxpZGF0ZUZvcndhcmRzKHRlcm0sIGNvbnRleHQpO1xuXG4gICAgICBpZiAodmFsaWRhdGVzRm9yd2FyZHMpIHtcbiAgICAgICAgdGVybVVuaWZpZXMgPSB0cnVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0ZXJtVW5pZmllcykge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udW5pZmllZCB0aGUgJyR7dGVybVN0cmluZ30nIHRlcm0gd2l0aCB0aGUgJyR7cHJvcGVydHlTdHJpbmd9JyBwcm9wZXJ0eS5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGVybVVuaWZpZXM7XG4gIH1cblxuICB0b0pTT04oKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpO1xuXG4gICAgcmV0dXJuIHNlcmlhbGlzZSgoY29udGV4dCkgPT4ge1xuICAgICAgY29uc3QgaW5jbHVkZVR5cGUgPSBmYWxzZSxcbiAgICAgICAgICAgIHR5cGVKU09OID0gdHlwZVRvVHlwZUpTT04odGhpcy50eXBlKSxcbiAgICAgICAgICAgIHN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKGluY2x1ZGVUeXBlKTtcblxuICAgICAgbGV0IGJyZWFrUG9pbnQ7XG5cbiAgICAgIGJyZWFrUG9pbnQgPSB0aGlzLmdldEJyZWFrUG9pbnQoKTtcblxuICAgICAgY29uc3QgYnJlYWtQb2ludEpTT04gPSBicmVha1BvaW50VG9CcmVha1BvaW50SlNPTihicmVha1BvaW50KTtcblxuICAgICAgYnJlYWtQb2ludCA9IGJyZWFrUG9pbnRKU09OOyAgLy8vXG5cbiAgICAgIGNvbnN0IHR5cGUgPSB0eXBlSlNPTiwgIC8vL1xuICAgICAgICAgICAganNvbiA9IHtcbiAgICAgICAgICAgICAgY29udGV4dCxcbiAgICAgICAgICAgICAgc3RyaW5nLFxuICAgICAgICAgICAgICBicmVha1BvaW50LFxuICAgICAgICAgICAgICB0eXBlXG4gICAgICAgICAgICB9O1xuXG4gICAgICByZXR1cm4ganNvbjtcbiAgICB9LCBjb250ZXh0KTtcbiAgfVxuXG4gIHN0YXRpYyBuYW1lID0gXCJQcm9wZXJ0eVwiO1xuXG4gIHN0YXRpYyBmcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gICAgcmV0dXJuIGluc3RhbnRpYXRlKChjb250ZXh0KSA9PiB7XG4gICAgICByZXR1cm4gdW5zZXJpYWxpc2UoKGpzb24sIGNvbnRleHQpID0+IHtcbiAgICAgICAgY29uc3QgeyBzdHJpbmcgfSA9IGpzb24sXG4gICAgICAgICAgICAgIHByb3BlcnR5Tm9kZSA9IGluc3RhbnRpYXRlUHJvcGVydHkoc3RyaW5nLCBjb250ZXh0KSxcbiAgICAgICAgICAgICAgbm9kZSA9IHByb3BlcnR5Tm9kZSwgLy8vXG4gICAgICAgICAgICAgIGJyZWFrUG9pbnQgPSBicmVha1BvaW50RnJvbUpTT04oanNvbiksXG4gICAgICAgICAgICAgIHRlcm0gPSB0ZXJtRnJvbVByb3BlcnR5Tm9kZShwcm9wZXJ0eU5vZGUsIGNvbnRleHQpLFxuICAgICAgICAgICAgICB0eXBlID0gdHlwZUZyb21KU09OKGpzb24sIGNvbnRleHQpLFxuICAgICAgICAgICAgICBwcm9wZXJ0eSA9IG5ldyBQcm9wZXJ0eShjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIHRlcm0sIHR5cGUpO1xuXG4gICAgICAgIHJldHVybiBwcm9wZXJ0eTtcbiAgICAgIH0sIGpzb24sIGNvbnRleHQpO1xuICAgIH0sIGNvbnRleHQpO1xuICB9XG59KTtcbiJdLCJuYW1lcyI6WyJicmVha1BvaW50RnJvbUpTT04iLCJicmVha1BvaW50VG9CcmVha1BvaW50SlNPTiIsImJyZWFrUG9pbnRVdGlsaXRpZXMiLCJkZWZpbmUiLCJQcm9wZXJ0eSIsIkVsZW1lbnQiLCJjb250ZXh0Iiwic3RyaW5nIiwibm9kZSIsImJyZWFrUG9pbnQiLCJ0ZXJtIiwidHlwZSIsImdldFRlcm0iLCJnZXRUeXBlIiwiZ2V0UHJvcGVydHlOb2RlIiwiZ2V0Tm9kZSIsInByb3BlcnR5Tm9kZSIsImdldFN0cmluZyIsImluY2x1ZGVUeXBlIiwidGVybVN0cmluZyIsInR5cGVTdHJpbmciLCJzZXRUeXBlIiwidmVyaWZ5IiwidmVyaWZpZXMiLCJwcm9wZXJ0eVN0cmluZyIsInRyYWNlIiwiYXR0ZW1wdCIsInRlcm1WYWxpZGF0ZXMiLCJ2YWxpZGF0ZVRlcm0iLCJjb21taXQiLCJkZWJ1ZyIsInRlcm1WYWxpZGF0ZXNBc1Byb3BlcnR5IiwidmFsaWRhdGVUZXJtQXNQcm9wZXJ0eSIsInVuaWZ5VGVybSIsInZhbGlkYXRlRm9yd2FyZHMiLCJ0ZXJtVW5pZmllcyIsInByb3BlcnR5IiwicHJvcGVydHlDb250ZXh0IiwiZ2V0Q29udGV4dCIsImdlbmVyYWxDb250ZXh0Iiwic3BlY2lmaUNvbnRleHQiLCJ0ZXJtVW5pZmllc1dpdGhQcm9wZXJ0eSIsInVuaWZ5VGVybVdpdGhQcm9wZXJ0eSIsInByb3Zpc2lvbmFsIiwiaXNQcm92aXNpb25hbCIsInNldFByb3Zpc2lvbmFsIiwidmFsaWRhdGVzRm9yd2FyZHMiLCJ0b0pTT04iLCJzZXJpYWxpc2UiLCJ0eXBlSlNPTiIsInR5cGVUb1R5cGVKU09OIiwiZ2V0QnJlYWtQb2ludCIsImJyZWFrUG9pbnRKU09OIiwianNvbiIsIm5hbWUiLCJmcm9tSlNPTiIsImluc3RhbnRpYXRlIiwidW5zZXJpYWxpc2UiLCJpbnN0YW50aWF0ZVByb3BlcnR5IiwidGVybUZyb21Qcm9wZXJ0eU5vZGUiLCJ0eXBlRnJvbUpTT04iXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQWNBOzs7ZUFBQTs7O2dDQVo2QzswQkFFdEI7NkJBQ2E7eUJBQ0M7dUJBQ0M7MEJBQ0M7c0JBQ007eUJBQ2dCO0FBRTdELE1BQU0sRUFBRUEsa0JBQWtCLEVBQUVDLDBCQUEwQixFQUFFLEdBQUdDLG1DQUFtQjtNQUU5RSxXQUFlQyxJQUFBQSxnQkFBTSxFQUFDLE1BQU1DLGlCQUFpQkMsdUJBQU87SUFDbEQsWUFBWUMsT0FBTyxFQUFFQyxNQUFNLEVBQUVDLElBQUksRUFBRUMsVUFBVSxFQUFFQyxJQUFJLEVBQUVDLElBQUksQ0FBRTtRQUN6RCxLQUFLLENBQUNMLFNBQVNDLFFBQVFDLE1BQU1DO1FBRTdCLElBQUksQ0FBQ0MsSUFBSSxHQUFHQTtRQUNaLElBQUksQ0FBQ0MsSUFBSSxHQUFHQTtJQUNkO0lBRUFDLFVBQVU7UUFDUixPQUFPLElBQUksQ0FBQ0YsSUFB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
127
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbGVtZW50L3Byb3BlcnR5LmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBFbGVtZW50LCBicmVha1BvaW50VXRpbGl0aWVzIH0gZnJvbSBcIm9jY2FtLWxhbmd1YWdlc1wiO1xuXG5pbXBvcnQgeyBkZWZpbmUgfSBmcm9tIFwiLi4vZWxlbWVudHNcIjtcbmltcG9ydCB7IGluc3RhbnRpYXRlUHJvcGVydHkgfSBmcm9tIFwiLi4vcHJvY2Vzcy9pbnN0YW50aWF0ZVwiO1xuaW1wb3J0IHsgdGVybUZyb21Qcm9wZXJ0eU5vZGUgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2VsZW1lbnRcIjtcbmltcG9ydCB7IHVuaWZ5VGVybVdpdGhQcm9wZXJ0eSB9IGZyb20gXCIuLi9wcm9jZXNzL3VuaWZ5XCI7XG5pbXBvcnQgeyB2YWxpZGF0ZVRlcm1Bc1Byb3BlcnR5IH0gZnJvbSBcIi4uL3Byb2Nlc3MvdmFsaWRhdGVcIjtcbmltcG9ydCB7IHR5cGVGcm9tSlNPTiwgdHlwZVRvVHlwZUpTT04gfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2pzb25cIjtcbmltcG9ydCB7IGF0dGVtcHQsIHNlcmlhbGlzZSwgdW5zZXJpYWxpc2UsIGluc3RhbnRpYXRlIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9jb250ZXh0XCI7XG5cbmNvbnN0IHsgYnJlYWtQb2ludEZyb21KU09OLCBicmVha1BvaW50VG9CcmVha1BvaW50SlNPTiB9ID0gYnJlYWtQb2ludFV0aWxpdGllcztcblxuZXhwb3J0IGRlZmF1bHQgZGVmaW5lKGNsYXNzIFByb3BlcnR5IGV4dGVuZHMgRWxlbWVudCB7XG4gIGNvbnN0cnVjdG9yKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgdGVybSwgdHlwZSkge1xuICAgIHN1cGVyKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCk7XG5cbiAgICB0aGlzLnRlcm0gPSB0ZXJtO1xuICAgIHRoaXMudHlwZSA9IHR5cGU7XG4gIH1cblxuICBnZXRUZXJtKCkge1xuICAgIHJldHVybiB0aGlzLnRlcm07XG4gIH1cblxuICBnZXRUeXBlKCkge1xuICAgIHJldHVybiB0aGlzLnR5cGU7XG4gIH1cblxuICBnZXRQcm9wZXJ0eU5vZGUoKSB7XG4gICAgY29uc3Qgbm9kZSA9IHRoaXMuZ2V0Tm9kZSgpLFxuICAgICAgICAgIHByb3BlcnR5Tm9kZSA9IG5vZGU7ICAvLy9cblxuICAgIHJldHVybiBwcm9wZXJ0eU5vZGU7XG4gIH1cblxuICBnZXRTdHJpbmcoaW5jbHVkZVR5cGUgPSB0cnVlKSB7XG4gICAgbGV0IHN0cmluZztcblxuICAgIGlmIChpbmNsdWRlVHlwZSkge1xuICAgICAgY29uc3QgdGVybVN0cmluZyA9IHRoaXMudGVybS5nZXRTdHJpbmcoKSxcbiAgICAgICAgICAgIHR5cGVTdHJpbmcgPSB0aGlzLnR5cGUuZ2V0U3RyaW5nKCk7XG5cbiAgICAgIHN0cmluZyA9IGAke3Rlcm1TdHJpbmd9LiR7dHlwZVN0cmluZ31gO1xuICAgIH0gZWxzZSB7XG4gICAgICBzdHJpbmcgPSBzdXBlci5nZXRTdHJpbmcoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gc3RyaW5nO1xuICB9XG5cbiAgc2V0VHlwZSh0eXBlKSB7XG4gICAgdGhpcy50eXBlID0gdHlwZTtcbiAgfVxuXG4gIGFzeW5jIHZlcmlmeShjb250ZXh0KSB7XG4gICAgbGV0IHZlcmlmaWVzID0gZmFsc2U7XG5cbiAgICBjb25zdCBpbmNsdWRlVHlwZSA9IGZhbHNlLFxuICAgICAgICAgIHByb3BlcnR5U3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoaW5jbHVkZVR5cGUpOyAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7cHJvcGVydHlTdHJpbmd9JyBwcm9wZXJ0eS4uLmApO1xuXG4gICAgYXdhaXQgYXR0ZW1wdChhc3luYyAoY29udGV4dCkgPT4ge1xuICAgICAgY29uc3QgdGVybVZhbGlkYXRlcyA9IGF3YWl0IHRoaXMudmFsaWRhdGVUZXJtKGNvbnRleHQpO1xuXG4gICAgICBpZiAodGVybVZhbGlkYXRlcykge1xuICAgICAgICB2ZXJpZmllcyA9IHRydWU7XG4gICAgICB9XG5cbiAgICAgIGlmICh2ZXJpZmllcykge1xuICAgICAgICB0aGlzLmNvbW1pdChjb250ZXh0KTtcbiAgICAgIH1cbiAgICB9LCBjb250ZXh0KTtcblxuICAgIGlmICh2ZXJpZmllcykge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke3Byb3BlcnR5U3RyaW5nfScgcHJvcGVydHkuYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZlcmlmaWVzO1xuICB9XG5cbiAgYXN5bmMgdmFsaWRhdGVUZXJtKGNvbnRleHQpIHtcbiAgICBsZXQgdGVybVZhbGlkYXRlcyA9IGZhbHNlO1xuXG4gICAgY29uc3QgaW5jbHVkZVR5cGUgPSBmYWxzZSxcbiAgICAgICAgICBwcm9wZXJ0eVN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKGluY2x1ZGVUeXBlKTsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtwcm9wZXJ0eVN0cmluZ30nIHByb3BlcnR5J3MgdGVybS4uLmApO1xuXG4gICAgY29uc3QgdGVybVZhbGlkYXRlc0FzUHJvcGVydHkgPSB2YWxpZGF0ZVRlcm1Bc1Byb3BlcnR5KHRoaXMudGVybSwgY29udGV4dCk7XG5cbiAgICBpZiAodGVybVZhbGlkYXRlc0FzUHJvcGVydHkpIHtcbiAgICAgIHRlcm1WYWxpZGF0ZXMgPSB0cnVlO1xuICAgIH1cblxuICAgIGlmICh0ZXJtVmFsaWRhdGVzKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke3Byb3BlcnR5U3RyaW5nfScgcHJvcGVydHkncyB0ZXJtLmApO1xuICAgIH1cblxuICAgIHJldHVybiB0ZXJtVmFsaWRhdGVzO1xuICB9XG5cbiAgYXN5bmMgdW5pZnlUZXJtKHRlcm0sIGNvbnRleHQsIHZhbGlkYXRlRm9yd2FyZHMpIHtcbiAgICBsZXQgdGVybVVuaWZpZXMgPSBmYWxzZTtcblxuICAgIGNvbnN0IHRlcm1TdHJpbmcgPSB0ZXJtLmdldFN0cmluZygpLFxuICAgICAgICAgIGluY2x1ZGVUeXBlID0gZmFsc2UsXG4gICAgICAgICAgcHJvcGVydHlTdHJpbmcgPSB0aGlzLmdldFN0cmluZyhpbmNsdWRlVHlwZSk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHt0ZXJtU3RyaW5nfScgdGVybSB3aXRoIHRoZSAnJHtwcm9wZXJ0eVN0cmluZ30nIHByb3BlcnR5Li4uYCk7XG5cbiAgICBjb25zdCBwcm9wZXJ0eSA9IHRoaXMsIC8vL1xuICAgICAgICAgIHByb3BlcnR5Q29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpLCAgLy8vXG4gICAgICAgICAgZ2VuZXJhbENvbnRleHQgPSBwcm9wZXJ0eUNvbnRleHQsICAvLy9cbiAgICAgICAgICBzcGVjaWZpQ29udGV4dCA9IGNvbnRleHQsIC8vL1xuICAgICAgICAgIHRlcm1VbmlmaWVzV2l0aFByb3BlcnR5ID0gdW5pZnlUZXJtV2l0aFByb3BlcnR5KHRlcm0sIHByb3BlcnR5LCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaUNvbnRleHQpO1xuXG4gICAgaWYgKHRlcm1VbmlmaWVzV2l0aFByb3BlcnR5KSB7XG4gICAgICBjb25zdCBwcm92aXNpb25hbCA9IHRoaXMudHlwZS5pc1Byb3Zpc2lvbmFsKCk7XG5cbiAgICAgIHRlcm0uc2V0VHlwZSh0aGlzLnR5cGUpO1xuXG4gICAgICB0ZXJtLnNldFByb3Zpc2lvbmFsKHByb3Zpc2lvbmFsKTtcblxuICAgICAgY29uc3QgdmFsaWRhdGVzRm9yd2FyZHMgPSBhd2FpdCB2YWxpZGF0ZUZvcndhcmRzKHRlcm0sIGNvbnRleHQpO1xuXG4gICAgICBpZiAodmFsaWRhdGVzRm9yd2FyZHMpIHtcbiAgICAgICAgdGVybVVuaWZpZXMgPSB0cnVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0ZXJtVW5pZmllcykge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udW5pZmllZCB0aGUgJyR7dGVybVN0cmluZ30nIHRlcm0gd2l0aCB0aGUgJyR7cHJvcGVydHlTdHJpbmd9JyBwcm9wZXJ0eS5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGVybVVuaWZpZXM7XG4gIH1cblxuICB0b0pTT04oKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpO1xuXG4gICAgcmV0dXJuIHNlcmlhbGlzZSgoY29udGV4dCkgPT4ge1xuICAgICAgY29uc3QgaW5jbHVkZVR5cGUgPSBmYWxzZSxcbiAgICAgICAgICAgIHR5cGVKU09OID0gdHlwZVRvVHlwZUpTT04odGhpcy50eXBlKSxcbiAgICAgICAgICAgIHN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKGluY2x1ZGVUeXBlKTtcblxuICAgICAgbGV0IGJyZWFrUG9pbnQ7XG5cbiAgICAgIGJyZWFrUG9pbnQgPSB0aGlzLmdldEJyZWFrUG9pbnQoKTtcblxuICAgICAgY29uc3QgYnJlYWtQb2ludEpTT04gPSBicmVha1BvaW50VG9CcmVha1BvaW50SlNPTihicmVha1BvaW50KTtcblxuICAgICAgYnJlYWtQb2ludCA9IGJyZWFrUG9pbnRKU09OOyAgLy8vXG5cbiAgICAgIGNvbnN0IHR5cGUgPSB0eXBlSlNPTiwgIC8vL1xuICAgICAgICAgICAganNvbiA9IHtcbiAgICAgICAgICAgICAgY29udGV4dCxcbiAgICAgICAgICAgICAgc3RyaW5nLFxuICAgICAgICAgICAgICBicmVha1BvaW50LFxuICAgICAgICAgICAgICB0eXBlXG4gICAgICAgICAgICB9O1xuXG4gICAgICByZXR1cm4ganNvbjtcbiAgICB9LCBjb250ZXh0KTtcbiAgfVxuXG4gIHN0YXRpYyBuYW1lID0gXCJQcm9wZXJ0eVwiO1xuXG4gIHN0YXRpYyBmcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gICAgcmV0dXJuIGluc3RhbnRpYXRlKChjb250ZXh0KSA9PiB7XG4gICAgICByZXR1cm4gdW5zZXJpYWxpc2UoKGpzb24sIGNvbnRleHQpID0+IHtcbiAgICAgICAgY29uc3QgeyBzdHJpbmcgfSA9IGpzb24sXG4gICAgICAgICAgICAgIHByb3BlcnR5Tm9kZSA9IGluc3RhbnRpYXRlUHJvcGVydHkoc3RyaW5nLCBjb250ZXh0KSxcbiAgICAgICAgICAgICAgbm9kZSA9IHByb3BlcnR5Tm9kZSwgLy8vXG4gICAgICAgICAgICAgIGJyZWFrUG9pbnQgPSBicmVha1BvaW50RnJvbUpTT04oanNvbiksXG4gICAgICAgICAgICAgIHRlcm0gPSB0ZXJtRnJvbVByb3BlcnR5Tm9kZShwcm9wZXJ0eU5vZGUsIGNvbnRleHQpLFxuICAgICAgICAgICAgICB0eXBlID0gdHlwZUZyb21KU09OKGpzb24sIGNvbnRleHQpLFxuICAgICAgICAgICAgICBwcm9wZXJ0eSA9IG5ldyBQcm9wZXJ0eShjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIHRlcm0sIHR5cGUpO1xuXG4gICAgICAgIHJldHVybiBwcm9wZXJ0eTtcbiAgICAgIH0sIGpzb24sIGNvbnRleHQpO1xuICAgIH0sIGNvbnRleHQpO1xuICB9XG59KTtcbiJdLCJuYW1lcyI6WyJicmVha1BvaW50RnJvbUpTT04iLCJicmVha1BvaW50VG9CcmVha1BvaW50SlNPTiIsImJyZWFrUG9pbnRVdGlsaXRpZXMiLCJkZWZpbmUiLCJQcm9wZXJ0eSIsIkVsZW1lbnQiLCJjb250ZXh0Iiwic3RyaW5nIiwibm9kZSIsImJyZWFrUG9pbnQiLCJ0ZXJtIiwidHlwZSIsImdldFRlcm0iLCJnZXRUeXBlIiwiZ2V0UHJvcGVydHlOb2RlIiwiZ2V0Tm9kZSIsInByb3BlcnR5Tm9kZSIsImdldFN0cmluZyIsImluY2x1ZGVUeXBlIiwidGVybVN0cmluZyIsInR5cGVTdHJpbmciLCJzZXRUeXBlIiwidmVyaWZ5IiwidmVyaWZpZXMiLCJwcm9wZXJ0eVN0cmluZyIsInRyYWNlIiwiYXR0ZW1wdCIsInRlcm1WYWxpZGF0ZXMiLCJ2YWxpZGF0ZVRlcm0iLCJjb21taXQiLCJkZWJ1ZyIsInRlcm1WYWxpZGF0ZXNBc1Byb3BlcnR5IiwidmFsaWRhdGVUZXJtQXNQcm9wZXJ0eSIsInVuaWZ5VGVybSIsInZhbGlkYXRlRm9yd2FyZHMiLCJ0ZXJtVW5pZmllcyIsInByb3BlcnR5IiwicHJvcGVydHlDb250ZXh0IiwiZ2V0Q29udGV4dCIsImdlbmVyYWxDb250ZXh0Iiwic3BlY2lmaUNvbnRleHQiLCJ0ZXJtVW5pZmllc1dpdGhQcm9wZXJ0eSIsInVuaWZ5VGVybVdpdGhQcm9wZXJ0eSIsInByb3Zpc2lvbmFsIiwiaXNQcm92aXNpb25hbCIsInNldFByb3Zpc2lvbmFsIiwidmFsaWRhdGVzRm9yd2FyZHMiLCJ0b0pTT04iLCJzZXJpYWxpc2UiLCJ0eXBlSlNPTiIsInR5cGVUb1R5cGVKU09OIiwiZ2V0QnJlYWtQb2ludCIsImJyZWFrUG9pbnRKU09OIiwianNvbiIsIm5hbWUiLCJmcm9tSlNPTiIsImluc3RhbnRpYXRlIiwidW5zZXJpYWxpc2UiLCJpbnN0YW50aWF0ZVByb3BlcnR5IiwidGVybUZyb21Qcm9wZXJ0eU5vZGUiLCJ0eXBlRnJvbUpTT04iXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQWNBOzs7ZUFBQTs7O2dDQVo2QzswQkFFdEI7NkJBQ2E7eUJBQ0M7dUJBQ0M7MEJBQ0M7c0JBQ007eUJBQ2dCO0FBRTdELE1BQU0sRUFBRUEsa0JBQWtCLEVBQUVDLDBCQUEwQixFQUFFLEdBQUdDLG1DQUFtQjtNQUU5RSxXQUFlQyxJQUFBQSxnQkFBTSxFQUFDLE1BQU1DLGlCQUFpQkMsdUJBQU87SUFDbEQsWUFBWUMsT0FBTyxFQUFFQyxNQUFNLEVBQUVDLElBQUksRUFBRUMsVUFBVSxFQUFFQyxJQUFJLEVBQUVDLElBQUksQ0FBRTtRQUN6RCxLQUFLLENBQUNMLFNBQVNDLFFBQVFDLE1BQU1DO1FBRTdCLElBQUksQ0FBQ0MsSUFBSSxHQUFHQTtRQUNaLElBQUksQ0FBQ0MsSUFBSSxHQUFHQTtJQUNkO0lBRUFDLFVBQVU7UUFDUixPQUFPLElBQUksQ0FBQ0YsSUFBSTtJQUNsQjtJQUVBRyxVQUFVO1FBQ1IsT0FBTyxJQUFJLENBQUNGLElBQUk7SUFDbEI7SUFFQUcsa0JBQWtCO1FBQ2hCLE1BQU1OLE9BQU8sSUFBSSxDQUFDTyxPQUFPLElBQ25CQyxlQUFlUixNQUFPLEdBQUc7UUFFL0IsT0FBT1E7SUFDVDtJQUVBQyxVQUFVQyxjQUFjLElBQUksRUFBRTtRQUM1QixJQUFJWDtRQUVKLElBQUlXLGFBQWE7WUFDZixNQUFNQyxhQUFhLElBQUksQ0FBQ1QsSUFBSSxDQUFDTyxTQUFTLElBQ2hDRyxhQUFhLElBQUksQ0FBQ1QsSUFBSSxDQUFDTSxTQUFTO1lBRXRDVixTQUFTLEdBQUdZLFdBQVcsQ0FBQyxFQUFFQyxZQUFZO1FBQ3hDLE9BQU87WUFDTGIsU0FBUyxLQUFLLENBQUNVO1FBQ2pCO1FBRUEsT0FBT1Y7SUFDVDtJQUVBYyxRQUFRVixJQUFJLEVBQUU7UUFDWixJQUFJLENBQUNBLElBQUksR0FBR0E7SUFDZDtJQUVBLE1BQU1XLE9BQU9oQixPQUFPLEVBQUU7UUFDcEIsSUFBSWlCLFdBQVc7UUFFZixNQUFNTCxjQUFjLE9BQ2RNLGlCQUFpQixJQUFJLENBQUNQLFNBQVMsQ0FBQ0MsY0FBYyxHQUFHO1FBRXZEWixRQUFRbUIsS0FBSyxDQUFDLENBQUMsZUFBZSxFQUFFRCxlQUFlLGFBQWEsQ0FBQztRQUU3RCxNQUFNRSxJQUFBQSxnQkFBTyxFQUFDLE9BQU9wQjtZQUNuQixNQUFNcUIsZ0JBQWdCLE1BQU0sSUFBSSxDQUFDQyxZQUFZLENBQUN0QjtZQUU5QyxJQUFJcUIsZUFBZTtnQkFDakJKLFdBQVc7WUFDYjtZQUVBLElBQUlBLFVBQVU7Z0JBQ1osSUFBSSxDQUFDTSxNQUFNLENBQUN2QjtZQUNkO1FBQ0YsR0FBR0E7UUFFSCxJQUFJaUIsVUFBVTtZQUNaakIsUUFBUXdCLEtBQUssQ0FBQyxDQUFDLGlCQUFpQixFQUFFTixlQUFlLFdBQVcsQ0FBQztRQUMvRDtRQUVBLE9BQU9EO0lBQ1Q7SUFFQSxNQUFNSyxhQUFhdEIsT0FBTyxFQUFFO1FBQzFCLElBQUlxQixnQkFBZ0I7UUFFcEIsTUFBTVQsY0FBYyxPQUNkTSxpQkFBaUIsSUFBSSxDQUFDUCxTQUFTLENBQUNDLGNBQWMsR0FBRztRQUV2RFosUUFBUW1CLEtBQUssQ0FBQyxDQUFDLGdCQUFnQixFQUFFRCxlQUFlLG9CQUFvQixDQUFDO1FBRXJFLE1BQU1PLDBCQUEwQkMsSUFBQUEsZ0NBQXNCLEVBQUMsSUFBSSxDQUFDdEIsSUFBSSxFQUFFSjtRQUVsRSxJQUFJeUIseUJBQXlCO1lBQzNCSixnQkFBZ0I7UUFDbEI7UUFFQSxJQUFJQSxlQUFlO1lBQ2pCckIsUUFBUXdCLEtBQUssQ0FBQyxDQUFDLGtCQUFrQixFQUFFTixlQUFlLGtCQUFrQixDQUFDO1FBQ3ZFO1FBRUEsT0FBT0c7SUFDVDtJQUVBLE1BQU1NLFVBQVV2QixJQUFJLEVBQUVKLE9BQU8sRUFBRTRCLGdCQUFnQixFQUFFO1FBQy9DLElBQUlDLGNBQWM7UUFFbEIsTUFBTWhCLGFBQWFULEtBQUtPLFNBQVMsSUFDM0JDLGNBQWMsT0FDZE0saUJBQWlCLElBQUksQ0FBQ1AsU0FBUyxDQUFDQyxjQUFlLEdBQUc7UUFFeERaLFFBQVFtQixLQUFLLENBQUMsQ0FBQyxjQUFjLEVBQUVOLFdBQVcsaUJBQWlCLEVBQUVLLGVBQWUsYUFBYSxDQUFDO1FBRTFGLE1BQU1ZLFdBQVcsSUFBSSxFQUNmQyxrQkFBa0IsSUFBSSxDQUFDQyxVQUFVLElBQ2pDQyxpQkFBaUJGLGlCQUNqQkcsaUJBQWlCbEMsU0FDakJtQywwQkFBMEJDLElBQUFBLDRCQUFxQixFQUFDaEMsTUFBTTBCLFVBQVVHLGdCQUFnQkM7UUFFdEYsSUFBSUMseUJBQXlCO1lBQzNCLE1BQU1FLGNBQWMsSUFBSSxDQUFDaEMsSUFBSSxDQUFDaUMsYUFBYTtZQUUzQ2xDLEtBQUtXLE9BQU8sQ0FBQyxJQUFJLENBQUNWLElBQUk7WUFFdEJELEtBQUttQyxjQUFjLENBQUNGO1lBRXBCLE1BQU1HLG9CQUFvQixNQUFNWixpQkFBaUJ4QixNQUFNSjtZQUV2RCxJQUFJd0MsbUJBQW1CO2dCQUNyQlgsY0FBYztZQUNoQjtRQUNGO1FBRUEsSUFBSUEsYUFBYTtZQUNmN0IsUUFBUXdCLEtBQUssQ0FBQyxDQUFDLGdCQUFnQixFQUFFWCxXQUFXLGlCQUFpQixFQUFFSyxlQUFlLFdBQVcsQ0FBQztRQUM1RjtRQUVBLE9BQU9XO0lBQ1Q7SUFFQVksU0FBUztRQUNQLE1BQU16QyxVQUFVLElBQUksQ0FBQ2dDLFVBQVU7UUFFL0IsT0FBT1UsSUFBQUEsa0JBQVMsRUFBQyxDQUFDMUM7WUFDaEIsTUFBTVksY0FBYyxPQUNkK0IsV0FBV0MsSUFBQUEsb0JBQWMsRUFBQyxJQUFJLENBQUN2QyxJQUFJLEdBQ25DSixTQUFTLElBQUksQ0FBQ1UsU0FBUyxDQUFDQztZQUU5QixJQUFJVDtZQUVKQSxhQUFhLElBQUksQ0FBQzBDLGFBQWE7WUFFL0IsTUFBTUMsaUJBQWlCbkQsMkJBQTJCUTtZQUVsREEsYUFBYTJDLGdCQUFpQixHQUFHO1lBRWpDLE1BQU16QyxPQUFPc0MsVUFDUEksT0FBTztnQkFDTC9DO2dCQUNBQztnQkFDQUU7Z0JBQ0FFO1lBQ0Y7WUFFTixPQUFPMEM7UUFDVCxHQUFHL0M7SUFDTDtJQUVBLE9BQU9nRCxPQUFPLFdBQVc7SUFFekIsT0FBT0MsU0FBU0YsSUFBSSxFQUFFL0MsT0FBTyxFQUFFO1FBQzdCLE9BQU9rRCxJQUFBQSxvQkFBVyxFQUFDLENBQUNsRDtZQUNsQixPQUFPbUQsSUFBQUEsb0JBQVcsRUFBQyxDQUFDSixNQUFNL0M7Z0JBQ3hCLE1BQU0sRUFBRUMsTUFBTSxFQUFFLEdBQUc4QyxNQUNickMsZUFBZTBDLElBQUFBLGdDQUFtQixFQUFDbkQsUUFBUUQsVUFDM0NFLE9BQU9RLGNBQ1BQLGFBQWFULG1CQUFtQnFELE9BQ2hDM0MsT0FBT2lELElBQUFBLDZCQUFvQixFQUFDM0MsY0FBY1YsVUFDMUNLLE9BQU9pRCxJQUFBQSxrQkFBWSxFQUFDUCxNQUFNL0MsVUFDMUI4QixXQUFXLElBQUloQyxTQUFTRSxTQUFTQyxRQUFRQyxNQUFNQyxZQUFZQyxNQUFNQztnQkFFdkUsT0FBT3lCO1lBQ1QsR0FBR2lCLE1BQU0vQztRQUNYLEdBQUdBO0lBQ0w7QUFDRiJ9
@@ -87,7 +87,7 @@ const _default = (0, _elements.define)(class Signature extends _occamlanguages.E
87
87
  }, context);
88
88
  context = temporaryContext; ///
89
89
  if (validates) {
90
- signature = this; ///
90
+ const signature = this; ///
91
91
  context.addSignature(signature);
92
92
  }
93
93
  }
@@ -184,4 +184,4 @@ function termsFromSignatureNode(signatureNode, context) {
184
184
  return terms;
185
185
  }
186
186
 
187
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbGVtZW50L3NpZ25hdHVyZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgYXJyYXlVdGlsaXRpZXMgfSBmcm9tIFwibmVjZXNzYXJ5XCI7XG5pbXBvcnQgeyBFbGVtZW50LCBicmVha1BvaW50VXRpbGl0aWVzLCBjb250aW51YXRpb25VdGlsaXRpZXMgfSBmcm9tIFwib2NjYW0tbGFuZ3VhZ2VzXCI7XG5cbmltcG9ydCB7IGRlZmluZSB9IGZyb20gXCIuLi9lbGVtZW50c1wiO1xuaW1wb3J0IHsgaW5zdGFudGlhdGVTaWduYXR1cmUgfSBmcm9tIFwiLi4vcHJvY2Vzcy9pbnN0YW50aWF0ZVwiO1xuaW1wb3J0IHsgc2lnbmF0dXJlRnJvbVNpZ25hdHVyZU5vZGUgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2VsZW1lbnRcIjtcbmltcG9ydCB7IGFibGF0ZSwgYXR0ZW1wdCwgcmVjb25jaWxlLCBzZXJpYWxpc2UsIHVuc2VyaWFsaXNlLCBpbnN0YW50aWF0ZSB9IGZyb20gXCIuLi91dGlsaXRpZXMvY29udGV4dFwiO1xuXG5jb25zdCB7IG1hdGNoIH0gPSBhcnJheVV0aWxpdGllcyxcbiAgICAgIHsgYXN5bmNocm9ub3VzRXZlcnkgfSA9IGNvbnRpbnVhdGlvblV0aWxpdGllcyxcbiAgICAgIHsgYnJlYWtQb2ludEZyb21KU09OLCBicmVha1BvaW50VG9CcmVha1BvaW50SlNPTiB9ID0gYnJlYWtQb2ludFV0aWxpdGllcztcblxuZXhwb3J0IGRlZmF1bHQgZGVmaW5lKGNsYXNzIFNpZ25hdHVyZSBleHRlbmRzIEVsZW1lbnQge1xuICBjb25zdHJ1Y3Rvcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIHRlcm1zKSB7XG4gICAgc3VwZXIoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50KTtcblxuICAgIHRoaXMudGVybXMgPSB0ZXJtcztcbiAgfVxuXG4gIGdldFRlcm1zKCkge1xuICAgIHJldHVybiB0aGlzLnRlcm1zO1xuICB9XG5cbiAgZ2V0U2lnbmF0dXJlTm9kZSgpIHtcbiAgICBjb25zdCBub2RlID0gdGhpcy5nZXROb2RlKCksXG4gICAgICAgICAgc2lnbmF0dXJlTm9kZSA9IG5vZGU7IC8vL1xuXG4gICAgcmV0dXJuIHNpZ25hdHVyZU5vZGU7XG4gIH1cblxuICBnZXRMZW5ndGgoKSB7XG4gICAgY29uc3QgdGVybXNMZW5ndGggPSB0aGlzLnRlcm1zLmxlbmd0aCxcbiAgICAgICAgICBsZW5ndGggPSB0ZXJtc0xlbmd0aDsgLy8vXG5cbiAgICByZXR1cm4gbGVuZ3RoO1xuICB9XG5cbiAgZ2V0VGVybShpbmRleCkge1xuICAgIGNvbnN0IHRlcm0gPSB0aGlzLnRlcm1zW2luZGV4XTtcblxuICAgIHJldHVybiB0ZXJtO1xuICB9XG5cbiAgaXNFcXVhbFRvKHNpZ25hdHVyZSkge1xuICAgIGNvbnN0IHNpZ25hdHVyZU5vZGUgPSBzaWduYXR1cmUuZ2V0Tm9kZSgpLFxuICAgICAgICAgIHNpZ25hdHVyZU5vZGVNYXRjaGVzID0gdGhpcy5tYXRjaFNpZ25hdHVyZU5vZGUoc2lnbmF0dXJlTm9kZSksXG4gICAgICAgICAgZXF1YWxUbyA9IHNpZ25hdHVyZU5vZGVNYXRjaGVzOyAgLy8vXG5cbiAgICByZXR1cm4gZXF1YWxUbztcbiAgfVxuXG4gIG1hdGNoU2lnbmF0dXJlTm9kZShzaWduYXR1cmVOb2RlKSB7XG4gICAgY29uc3Qgbm9kZSA9IHNpZ25hdHVyZU5vZGUsIC8vL1xuICAgICAgICAgIG5vZGVNYXRjaGVzID0gdGhpcy5tYXRjaE5vZGUobm9kZSksXG4gICAgICAgICAgc2lnbmF0dXJlTm9kZU1hdGNoZXMgPSBub2RlTWF0Y2hlczsgLy8vXG5cbiAgICByZXR1cm4gc2lnbmF0dXJlTm9kZU1hdGNoZXM7XG4gIH1cblxuICBmaW5kU2lnbmF0dXJlKGNvbnRleHQpIHtcbiAgICBjb25zdCBzaWduYXR1cmVOb2RlID0gdGhpcy5nZXRTaWduYXR1cmVOb2RlKCksXG4gICAgICAgICAgc2lnbmF0dXJlID0gY29udGV4dC5maW5kU2lnbmF0dXJlQnlTaWduYXR1cmVOb2RlKHNpZ25hdHVyZU5vZGUpO1xuXG4gICAgcmV0dXJuIHNpZ25hdHVyZTtcbiAgfVxuXG4gIHZlcmlmeShjb250ZXh0KSB7XG4gICAgbGV0IHZlcmlmaWVzID0gZmFsc2U7XG5cbiAgICBjb25zdCBzaWduYXR1cmVTdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke3NpZ25hdHVyZVN0cmluZ30nIHNpZ25hdHVyZS4uLmApO1xuXG4gICAgYXR0ZW1wdCgoY29udGV4dCkgPT4ge1xuICAgICAgY29uc3QgdGVybXNWYWxpZGF0ZSA9IHRoaXMudmFsaWRhdGVUZXJtcyhjb250ZXh0KTtcblxuICAgICAgaWYgKHRlcm1zVmFsaWRhdGUgIT09IG51bGwpIHtcbiAgICAgICAgdmVyaWZpZXMgPSB0cnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAodmVyaWZpZXMpIHtcbiAgICAgICAgdGhpcy5jb21taXQoY29udGV4dCk7XG4gICAgICB9XG4gICAgfSwgY29udGV4dCk7XG5cbiAgICBpZiAodmVyaWZpZXMpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7c2lnbmF0dXJlU3RyaW5nfScgc2lnbmF0dXJlLmApO1xuICAgIH1cblxuICAgIHJldHVybiB2ZXJpZmllcztcbiAgfVxuXG4gIHZhbGlkYXRlKGNvbnRleHQpIHtcbiAgICBjb25zdCBzaWduYXR1cmVTdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtzaWduYXR1cmVTdHJpbmd9JyBzaWduYXR1cmUuLi5gKTtcblxuICAgIGxldCB2YWxpZGF0ZXMgPSBmYWxzZTtcblxuICAgIGNvbnN0IHNpZ25hdHVyZSA9IHRoaXMuZmluZFNpZ25hdHVyZShjb250ZXh0KTtcblxuICAgIGlmIChzaWduYXR1cmUgIT09IG51bGwpIHtcbiAgICAgIHZhbGlkYXRlcyA9IHRydWU7XG5cbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnRoZSAnJHtzaWduYXR1cmVTdHJpbmd9JyBzaWduYXR1cmUgaXMgYWxyZWFkeSBwcmVzZW50LmApO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCB0ZW1wb3JhcnlDb250ZXh0ID0gY29udGV4dDsgLy8vXG5cbiAgICAgIGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKTtcblxuICAgICAgYXR0ZW1wdCgoY29udGV4dCkgPT4ge1xuICAgICAgICBjb25zdCB0ZXJtc1ZhbGlkYXRlID0gdGhpcy52YWxpZGF0ZVRlcm1zKGNvbnRleHQpO1xuXG4gICAgICAgIGlmICh0ZXJtc1ZhbGlkYXRlICE9PSBudWxsKSB7XG4gICAgICAgICAgdmFsaWRhdGVzID0gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh2YWxpZGF0ZXMpIHtcbiAgICAgICAgICB0aGlzLmNvbW1pdChjb250ZXh0KTtcbiAgICAgICAgfVxuICAgICAgfSwgY29udGV4dCk7XG5cbiAgICAgIGNvbnRleHQgPSB0ZW1wb3JhcnlDb250ZXh0OyAvLy9cblxuICAgICAgaWYgKHZhbGlkYXRlcykge1xuICAgICAgICBzaWduYXR1cmUgPSB0aGlzOyAvLy9cblxuICAgICAgICBjb250ZXh0LmFkZFNpZ25hdHVyZShzaWduYXR1cmUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh2YWxpZGF0ZXMpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7c2lnbmF0dXJlU3RyaW5nfScgc2lnbmF0dXJlLmApO1xuICAgIH1cblxuICAgIHJldHVybiBzaWduYXR1cmU7XG4gIH1cblxuICB2YWxpZGF0ZVRlcm1zKGNvbnRleHQpIHtcbiAgICBsZXQgdGVybXNWYWxpZGF0ZTtcblxuICAgIGNvbnN0IHNpZ25hdHVyZVN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke3NpZ25hdHVyZVN0cmluZ30nIHNpZ25hdHVyZSdzIHRlcm1zLi4uYCk7XG5cbiAgICBjb25zdCB0ZXJtcyA9IFtdO1xuXG4gICAgdGVybXNWYWxpZGF0ZSA9IGFzeW5jaHJvbm91c0V2ZXJ5KHRoaXMudGVybXMsICh0ZXJtKSA9PiB7XG4gICAgICB0ZXJtID0gdGVybS52YWxpZGF0ZShjb250ZXh0LCAodGVybSwgY29udGV4dCkgPT4geyAvLy9cbiAgICAgICAgY29uc3QgdmFsaWRhdGVzRm9yd2FyZHMgPSB0cnVlO1xuXG4gICAgICAgIHJldHVybiB2YWxpZGF0ZXNGb3J3YXJkcztcbiAgICAgIH0pO1xuXG4gICAgICBpZiAodGVybSAhPT0gbnVsbCkge1xuICAgICAgICB0ZXJtcy5wdXNoKHRlcm0pO1xuXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgaWYgKHRlcm1zVmFsaWRhdGUpIHtcbiAgICAgIHRoaXMudGVybXMgPSB0ZXJtcztcbiAgICB9XG5cbiAgICBpZiAodGVybXNWYWxpZGF0ZSl7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke3NpZ25hdHVyZVN0cmluZ30nIHNpZ25hdHVyZSdzIHRlcm1zLmApO1xuICAgIH1cblxuICAgIHJldHVybiB0ZXJtc1ZhbGlkYXRlXG4gIH1cblxuICB1bmlmeVNpZ25hdHVyZShzaWduYXR1cmUsIGNvbnRleHQpIHtcbiAgICBsZXQgc2lnbmF0dXJlVW5pZmllcztcblxuICAgIGNvbnN0IGdlbmVyYWxTaWduYXR1cmUgPSB0aGlzLCAgLy8vXG4gICAgICAgICAgc3BlY2lmaWNTaWduYXR1cmUgPSBzaWduYXR1cmUsICAvLy9cbiAgICAgICAgICBnZW5lcmFsU2lnbmF0dXJlU3RyaW5nID0gZ2VuZXJhbFNpZ25hdHVyZS5nZXRTdHJpbmcoKSxcbiAgICAgICAgICBzcGVjaWZpY1NpZ25hdHVyZVN0cmluZyA9IHNwZWNpZmljU2lnbmF0dXJlLmdldFN0cmluZygpO1xuXG4gICAgY29udGV4dC50cmFjZShgVW5pZnlpbmcgdGhlICcke3NwZWNpZmljU2lnbmF0dXJlU3RyaW5nfScgc2lnbmF0dXJlIHdpdGggdGhlICcke2dlbmVyYWxTaWduYXR1cmVTdHJpbmd9JyBzaWduYXR1cmUuLi5gKTtcblxuICAgIGNvbnN0IGdlbmVyYWxTaWduYXR1cmVUZXJtcyA9IGdlbmVyYWxTaWduYXR1cmUuZ2V0VGVybXMoKSxcbiAgICAgICAgICBzcGVjaWZpY1NpZ25hdHVyZVRlcm1zID0gc3BlY2lmaWNTaWduYXR1cmUuZ2V0VGVybXMoKSxcbiAgICAgICAgICBnZW5lcmFsU2lnbmF0dXJlQ29udGV4dCA9IGdlbmVyYWxTaWduYXR1cmUuZ2V0Q29udGV4dCgpLFxuICAgICAgICAgIHNwZWNpZmljU2lnbmF0dXJlQ29udGV4dCA9IHNwZWNpZmljU2lnbmF0dXJlLmdldENvbnRleHQoKSxcbiAgICAgICAgICBnZW5lcmFsVGVybXMgPSBnZW5lcmFsU2lnbmF0dXJlVGVybXMsICAvLy9cbiAgICAgICAgICBzcGVjaWZpY1Rlcm1zID0gc3BlY2lmaWNTaWduYXR1cmVUZXJtcywgLy8vXG4gICAgICAgICAgZ2VuZXJhbENvbnRleHQgPSBnZW5lcmFsU2lnbmF0dXJlQ29udGV4dCwgLy8vXG4gICAgICAgICAgc3BlY2lmaWNDb250ZXh0ID0gc3BlY2lmaWNTaWduYXR1cmVDb250ZXh0OyAgLy8vXG5cbiAgICBkZWJ1Z2dlclxuXG4gICAgc2lnbmF0dXJlVW5pZmllcyA9IHJlY29uY2lsZSgoc3BlY2lmaWNDb250ZXh0KSA9PiB7XG4gICAgICBtYXRjaChnZW5lcmFsVGVybXMsIHNwZWNpZmljVGVybXMsIChnZW5lcmFsVGVybSwgc3BlY2lmaWNUZXJtKSA9PiB7XG4gICAgICAgIGxldCB0ZXJtVW5pZmllcztcblxuICAgICAgICB0ZXJtVW5pZmllcyA9IGdlbmVyYWxUZXJtLnVuaWZ5VGVybShzcGVjaWZpY1Rlcm0sIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQpO1xuXG4gICAgICAgIGlmICh0ZXJtVW5pZmllcykge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgaWYgKHNpZ25hdHVyZVVuaWZpZXMpIHtcbiAgICAgICAgc3BlY2lmaWNDb250ZXh0LmNvbW1pdChjb250ZXh0KTtcbiAgICAgIH1cbiAgICB9LCBzcGVjaWZpY0NvbnRleHQpO1xuXG4gICAgaWYgKHNpZ25hdHVyZVVuaWZpZXMpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnVuaWZpZWQgdGhlICcke3NwZWNpZmljU2lnbmF0dXJlU3RyaW5nfScgc2lnbmF0dXJlIHdpdGggdGhlICcke2dlbmVyYWxTaWduYXR1cmVTdHJpbmd9JyBzaWduYXR1cmUuYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHNpZ25hdHVyZVVuaWZpZXM7XG4gIH1cblxuICB0b0pTT04oKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpO1xuXG4gICAgcmV0dXJuIHNlcmlhbGlzZSgoY29udGV4dCkgPT4ge1xuICAgICAgY29uc3Qgc3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTtcblxuICAgICAgbGV0IGJyZWFrUG9pbnQ7XG5cbiAgICAgIGJyZWFrUG9pbnQgPSB0aGlzLmdldEJyZWFrUG9pbnQoKTtcblxuICAgICAgY29uc3QgYnJlYWtQb2ludEpTT04gPSBicmVha1BvaW50VG9CcmVha1BvaW50SlNPTihicmVha1BvaW50KTtcblxuICAgICAgYnJlYWtQb2ludCA9IGJyZWFrUG9pbnRKU09OOyAgLy8vXG5cbiAgICAgIGNvbnN0IGpzb24gPSB7XG4gICAgICAgIGNvbnRleHQsXG4gICAgICAgIHN0cmluZyxcbiAgICAgICAgYnJlYWtQb2ludFxuICAgICAgfTtcblxuICAgICAgcmV0dXJuIGpzb247XG4gICAgfSwgY29udGV4dCk7XG4gIH1cblxuICBzdGF0aWMgbmFtZSA9IFwiU2lnbmF0dXJlXCI7XG5cbiAgc3RhdGljIGZyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgICByZXR1cm4gaW5zdGFudGlhdGUoKGNvbnRleHQpID0+IHtcbiAgICAgIHJldHVybiB1bnNlcmlhbGlzZSgoanNvbiwgY29udGV4dCkgPT4ge1xuICAgICAgICBjb25zdCB7IHN0cmluZyB9ID0ganNvbixcbiAgICAgICAgICAgICAgc2lnbmF0dXJlTm9kZSA9IGluc3RhbnRpYXRlU2lnbmF0dXJlKHN0cmluZywgY29udGV4dCksXG4gICAgICAgICAgICAgIG5vZGUgPSBzaWduYXR1cmVOb2RlLCAgLy8vXG4gICAgICAgICAgICAgIGJyZWFrUG9pbnQgPSBicmVha1BvaW50RnJvbUpTT04oanNvbiksXG4gICAgICAgICAgICAgIHRlcm1zID0gdGVybXNGcm9tU2lnbmF0dXJlTm9kZShzaWduYXR1cmVOb2RlLCBjb250ZXh0KSxcbiAgICAgICAgICAgICAgc2lnbmF0dXJlID0gbmV3IFNpZ25hdHVyZShjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIHRlcm1zKTtcblxuICAgICAgICByZXR1cm4gc2lnbmF0dXJlO1xuICAgICAgfSwganNvbiwgY29udGV4dCk7XG4gICAgfSwgY29udGV4dCk7XG4gIH1cblxuICBzdGF0aWMgZnJvbVNpZ25hdHVyZVN0cmluZyhzaWduYXR1cmVTdHJpbmcsIGNvbnRleHQpIHtcbiAgICByZXR1cm4gYWJsYXRlKChjb250ZXh0KSA9PiB7XG4gICAgICByZXR1cm4gaW5zdGFudGlhdGUoKGNvbnRleHQpID0+IHtcbiAgICAgICAgY29uc3Qgc3RyaW5nID0gc2lnbmF0dXJlU3RyaW5nLCAgLy8vXG4gICAgICAgICAgICAgIHNpZ25hdHVyZU5vZGUgPSBpbnN0YW50aWF0ZVNpZ25hdHVyZShzdHJpbmcsIGNvbnRleHQpLFxuICAgICAgICAgICAgICBzaWduYXR1cmUgPSBzaWduYXR1cmVGcm9tU2lnbmF0dXJlTm9kZShzaWduYXR1cmVOb2RlLCBjb250ZXh0KTtcblxuICAgICAgICByZXR1cm4gc2lnbmF0dXJlO1xuICAgICAgfSwgY29udGV4dCk7XG4gICAgfSwgY29udGV4dCk7XG4gIH1cbn0pO1xuXG5mdW5jdGlvbiB0ZXJtc0Zyb21TaWduYXR1cmVOb2RlKHNpZ25hdHVyZU5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgdGVybU5vZGVzID0gc2lnbmF0dXJlTm9kZS5nZXRUZXJtTm9kZXMoKSxcbiAgICAgICAgdGVybXMgPSB0ZXJtTm9kZXMubWFwKCh0ZXJtTm9kZSkgPT4ge1xuICAgICAgICAgIGNvbnN0IHRlcm0gPSBjb250ZXh0LmZpbmRUZXJtQnlUZXJtTm9kZSh0ZXJtTm9kZSk7XG5cbiAgICAgICAgICByZXR1cm4gdGVybTtcbiAgICAgICAgfSk7XG5cbiAgcmV0dXJuIHRlcm1zO1xufVxuIl0sIm5hbWVzIjpbIm1hdGNoIiwiYXJyYXlVdGlsaXRpZXMiLCJhc3luY2hyb25vdXNFdmVyeSIsImNvbnRpbnVhdGlvblV0aWxpdGllcyIsImJyZWFrUG9pbnRGcm9tSlNPTiIsImJyZWFrUG9pbnRUb0JyZWFrUG9pbnRKU09OIiwiYnJlYWtQb2ludFV0aWxpdGllcyIsImRlZmluZSIsIlNpZ25hdHVyZSIsIkVsZW1lbnQiLCJjb250ZXh0Iiwic3RyaW5nIiwibm9kZSIsImJyZWFrUG9pbnQiLCJ0ZXJtcyIsImdldFRlcm1zIiwiZ2V0U2lnbmF0dXJlTm9kZSIsImdldE5vZGUiLCJzaWduYXR1cmVOb2RlIiwiZ2V0TGVuZ3RoIiwidGVybXNMZW5ndGgiLCJsZW5ndGgiLCJnZXRUZXJtIiwiaW5kZXgiLCJ0ZXJtIiwiaXNFcXVhbFRvIiwic2lnbmF0dXJlIiwic2lnbmF0dXJlTm9kZU1hdGNoZXMiLCJtYXRjaFNpZ25hdHVyZU5vZGUiLCJlcXVhbFRvIiwibm9kZU1hdGNoZXMiLCJtYXRjaE5vZGUiLCJmaW5kU2lnbmF0dXJlIiwiZmluZFNpZ25hdHVyZUJ5U2lnbmF0dXJlTm9kZSIsInZlcmlmeSIsInZlcmlmaWVzIiwic2lnbmF0dXJlU3RyaW5nIiwiZ2V0U3RyaW5nIiwidHJhY2UiLCJhdHRlbXB0IiwidGVybXNWYWxpZGF0ZSIsInZhbGlkYXRlVGVybXMiLCJjb21taXQiLCJkZWJ1ZyIsInZhbGlkYXRlIiwidmFsaWRhdGVzIiwidGVtcG9yYXJ5Q29udGV4dCIsImdldENvbnRleHQiLCJhZGRTaWduYXR1cmUiLCJ2YWxpZGF0ZXNGb3J3YXJkcyIsInB1c2giLCJ1bmlmeVNpZ25hdHVyZSIsInNpZ25hdHVyZVVuaWZpZXMiLCJnZW5lcmFsU2lnbmF0dXJlIiwic3BlY2lmaWNTaWduYXR1cmUiLCJnZW5lcmFsU2lnbmF0dXJlU3RyaW5nIiwic3BlY2lmaWNTaWduYXR1cmVTdHJpbmciLCJnZW5lcmFsU2lnbmF0dXJlVGVybXMiLCJzcGVjaWZpY1NpZ25hdHVyZVRlcm1zIiwiZ2VuZXJhbFNpZ25hdHVyZUNvbnRleHQiLCJzcGVjaWZpY1NpZ25hdHVyZUNvbnRleHQiLCJnZW5lcmFsVGVybXMiLCJzcGVjaWZpY1Rlcm1zIiwiZ2VuZXJhbENvbnRleHQiLCJzcGVjaWZpY0NvbnRleHQiLCJyZWNvbmNpbGUiLCJnZW5lcmFsVGVybSIsInNwZWNpZmljVGVybSIsInRlcm1VbmlmaWVzIiwidW5pZnlUZXJtIiwidG9KU09OIiwic2VyaWFsaXNlIiwiZ2V0QnJlYWtQb2ludCIsImJyZWFrUG9pbnRKU09OIiwianNvbiIsIm5hbWUiLCJmcm9tSlNPTiIsImluc3RhbnRpYXRlIiwidW5zZXJpYWxpc2UiLCJpbnN0YW50aWF0ZVNpZ25hdHVyZSIsInRlcm1zRnJvbVNpZ25hdHVyZU5vZGUiLCJmcm9tU2lnbmF0dXJlU3RyaW5nIiwiYWJsYXRlIiwic2lnbmF0dXJlRnJvbVNpZ25hdHVyZU5vZGUiLCJ0ZXJtTm9kZXMiLCJnZXRUZXJtTm9kZXMiLCJtYXAiLCJ0ZXJtTm9kZSIsImZpbmRUZXJtQnlUZXJtTm9kZSJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBY0E7OztlQUFBOzs7MkJBWitCO2dDQUNxQzswQkFFN0M7NkJBQ2M7eUJBQ007eUJBQ3FDO0FBRWhGLE1BQU0sRUFBRUEsS0FBSyxFQUFF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
187
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbGVtZW50L3NpZ25hdHVyZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgYXJyYXlVdGlsaXRpZXMgfSBmcm9tIFwibmVjZXNzYXJ5XCI7XG5pbXBvcnQgeyBFbGVtZW50LCBicmVha1BvaW50VXRpbGl0aWVzLCBjb250aW51YXRpb25VdGlsaXRpZXMgfSBmcm9tIFwib2NjYW0tbGFuZ3VhZ2VzXCI7XG5cbmltcG9ydCB7IGRlZmluZSB9IGZyb20gXCIuLi9lbGVtZW50c1wiO1xuaW1wb3J0IHsgaW5zdGFudGlhdGVTaWduYXR1cmUgfSBmcm9tIFwiLi4vcHJvY2Vzcy9pbnN0YW50aWF0ZVwiO1xuaW1wb3J0IHsgc2lnbmF0dXJlRnJvbVNpZ25hdHVyZU5vZGUgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2VsZW1lbnRcIjtcbmltcG9ydCB7IGFibGF0ZSwgYXR0ZW1wdCwgcmVjb25jaWxlLCBzZXJpYWxpc2UsIHVuc2VyaWFsaXNlLCBpbnN0YW50aWF0ZSB9IGZyb20gXCIuLi91dGlsaXRpZXMvY29udGV4dFwiO1xuXG5jb25zdCB7IG1hdGNoIH0gPSBhcnJheVV0aWxpdGllcyxcbiAgICAgIHsgYXN5bmNocm9ub3VzRXZlcnkgfSA9IGNvbnRpbnVhdGlvblV0aWxpdGllcyxcbiAgICAgIHsgYnJlYWtQb2ludEZyb21KU09OLCBicmVha1BvaW50VG9CcmVha1BvaW50SlNPTiB9ID0gYnJlYWtQb2ludFV0aWxpdGllcztcblxuZXhwb3J0IGRlZmF1bHQgZGVmaW5lKGNsYXNzIFNpZ25hdHVyZSBleHRlbmRzIEVsZW1lbnQge1xuICBjb25zdHJ1Y3Rvcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIHRlcm1zKSB7XG4gICAgc3VwZXIoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50KTtcblxuICAgIHRoaXMudGVybXMgPSB0ZXJtcztcbiAgfVxuXG4gIGdldFRlcm1zKCkge1xuICAgIHJldHVybiB0aGlzLnRlcm1zO1xuICB9XG5cbiAgZ2V0U2lnbmF0dXJlTm9kZSgpIHtcbiAgICBjb25zdCBub2RlID0gdGhpcy5nZXROb2RlKCksXG4gICAgICAgICAgc2lnbmF0dXJlTm9kZSA9IG5vZGU7IC8vL1xuXG4gICAgcmV0dXJuIHNpZ25hdHVyZU5vZGU7XG4gIH1cblxuICBnZXRMZW5ndGgoKSB7XG4gICAgY29uc3QgdGVybXNMZW5ndGggPSB0aGlzLnRlcm1zLmxlbmd0aCxcbiAgICAgICAgICBsZW5ndGggPSB0ZXJtc0xlbmd0aDsgLy8vXG5cbiAgICByZXR1cm4gbGVuZ3RoO1xuICB9XG5cbiAgZ2V0VGVybShpbmRleCkge1xuICAgIGNvbnN0IHRlcm0gPSB0aGlzLnRlcm1zW2luZGV4XTtcblxuICAgIHJldHVybiB0ZXJtO1xuICB9XG5cbiAgaXNFcXVhbFRvKHNpZ25hdHVyZSkge1xuICAgIGNvbnN0IHNpZ25hdHVyZU5vZGUgPSBzaWduYXR1cmUuZ2V0Tm9kZSgpLFxuICAgICAgICAgIHNpZ25hdHVyZU5vZGVNYXRjaGVzID0gdGhpcy5tYXRjaFNpZ25hdHVyZU5vZGUoc2lnbmF0dXJlTm9kZSksXG4gICAgICAgICAgZXF1YWxUbyA9IHNpZ25hdHVyZU5vZGVNYXRjaGVzOyAgLy8vXG5cbiAgICByZXR1cm4gZXF1YWxUbztcbiAgfVxuXG4gIG1hdGNoU2lnbmF0dXJlTm9kZShzaWduYXR1cmVOb2RlKSB7XG4gICAgY29uc3Qgbm9kZSA9IHNpZ25hdHVyZU5vZGUsIC8vL1xuICAgICAgICAgIG5vZGVNYXRjaGVzID0gdGhpcy5tYXRjaE5vZGUobm9kZSksXG4gICAgICAgICAgc2lnbmF0dXJlTm9kZU1hdGNoZXMgPSBub2RlTWF0Y2hlczsgLy8vXG5cbiAgICByZXR1cm4gc2lnbmF0dXJlTm9kZU1hdGNoZXM7XG4gIH1cblxuICBmaW5kU2lnbmF0dXJlKGNvbnRleHQpIHtcbiAgICBjb25zdCBzaWduYXR1cmVOb2RlID0gdGhpcy5nZXRTaWduYXR1cmVOb2RlKCksXG4gICAgICAgICAgc2lnbmF0dXJlID0gY29udGV4dC5maW5kU2lnbmF0dXJlQnlTaWduYXR1cmVOb2RlKHNpZ25hdHVyZU5vZGUpO1xuXG4gICAgcmV0dXJuIHNpZ25hdHVyZTtcbiAgfVxuXG4gIHZlcmlmeShjb250ZXh0KSB7XG4gICAgbGV0IHZlcmlmaWVzID0gZmFsc2U7XG5cbiAgICBjb25zdCBzaWduYXR1cmVTdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke3NpZ25hdHVyZVN0cmluZ30nIHNpZ25hdHVyZS4uLmApO1xuXG4gICAgYXR0ZW1wdCgoY29udGV4dCkgPT4ge1xuICAgICAgY29uc3QgdGVybXNWYWxpZGF0ZSA9IHRoaXMudmFsaWRhdGVUZXJtcyhjb250ZXh0KTtcblxuICAgICAgaWYgKHRlcm1zVmFsaWRhdGUgIT09IG51bGwpIHtcbiAgICAgICAgdmVyaWZpZXMgPSB0cnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAodmVyaWZpZXMpIHtcbiAgICAgICAgdGhpcy5jb21taXQoY29udGV4dCk7XG4gICAgICB9XG4gICAgfSwgY29udGV4dCk7XG5cbiAgICBpZiAodmVyaWZpZXMpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7c2lnbmF0dXJlU3RyaW5nfScgc2lnbmF0dXJlLmApO1xuICAgIH1cblxuICAgIHJldHVybiB2ZXJpZmllcztcbiAgfVxuXG4gIHZhbGlkYXRlKGNvbnRleHQpIHtcbiAgICBjb25zdCBzaWduYXR1cmVTdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtzaWduYXR1cmVTdHJpbmd9JyBzaWduYXR1cmUuLi5gKTtcblxuICAgIGxldCB2YWxpZGF0ZXMgPSBmYWxzZTtcblxuICAgIGNvbnN0IHNpZ25hdHVyZSA9IHRoaXMuZmluZFNpZ25hdHVyZShjb250ZXh0KTtcblxuICAgIGlmIChzaWduYXR1cmUgIT09IG51bGwpIHtcbiAgICAgIHZhbGlkYXRlcyA9IHRydWU7XG5cbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnRoZSAnJHtzaWduYXR1cmVTdHJpbmd9JyBzaWduYXR1cmUgaXMgYWxyZWFkeSBwcmVzZW50LmApO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCB0ZW1wb3JhcnlDb250ZXh0ID0gY29udGV4dDsgLy8vXG5cbiAgICAgIGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKTtcblxuICAgICAgYXR0ZW1wdCgoY29udGV4dCkgPT4ge1xuICAgICAgICBjb25zdCB0ZXJtc1ZhbGlkYXRlID0gdGhpcy52YWxpZGF0ZVRlcm1zKGNvbnRleHQpO1xuXG4gICAgICAgIGlmICh0ZXJtc1ZhbGlkYXRlICE9PSBudWxsKSB7XG4gICAgICAgICAgdmFsaWRhdGVzID0gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh2YWxpZGF0ZXMpIHtcbiAgICAgICAgICB0aGlzLmNvbW1pdChjb250ZXh0KTtcbiAgICAgICAgfVxuICAgICAgfSwgY29udGV4dCk7XG5cbiAgICAgIGNvbnRleHQgPSB0ZW1wb3JhcnlDb250ZXh0OyAvLy9cblxuICAgICAgaWYgKHZhbGlkYXRlcykge1xuICAgICAgICBjb25zdCBzaWduYXR1cmUgPSB0aGlzOyAvLy9cblxuICAgICAgICBjb250ZXh0LmFkZFNpZ25hdHVyZShzaWduYXR1cmUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh2YWxpZGF0ZXMpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7c2lnbmF0dXJlU3RyaW5nfScgc2lnbmF0dXJlLmApO1xuICAgIH1cblxuICAgIHJldHVybiBzaWduYXR1cmU7XG4gIH1cblxuICB2YWxpZGF0ZVRlcm1zKGNvbnRleHQpIHtcbiAgICBsZXQgdGVybXNWYWxpZGF0ZTtcblxuICAgIGNvbnN0IHNpZ25hdHVyZVN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke3NpZ25hdHVyZVN0cmluZ30nIHNpZ25hdHVyZSdzIHRlcm1zLi4uYCk7XG5cbiAgICBjb25zdCB0ZXJtcyA9IFtdO1xuXG4gICAgdGVybXNWYWxpZGF0ZSA9IGFzeW5jaHJvbm91c0V2ZXJ5KHRoaXMudGVybXMsICh0ZXJtKSA9PiB7XG4gICAgICB0ZXJtID0gdGVybS52YWxpZGF0ZShjb250ZXh0LCAodGVybSwgY29udGV4dCkgPT4geyAvLy9cbiAgICAgICAgY29uc3QgdmFsaWRhdGVzRm9yd2FyZHMgPSB0cnVlO1xuXG4gICAgICAgIHJldHVybiB2YWxpZGF0ZXNGb3J3YXJkcztcbiAgICAgIH0pO1xuXG4gICAgICBpZiAodGVybSAhPT0gbnVsbCkge1xuICAgICAgICB0ZXJtcy5wdXNoKHRlcm0pO1xuXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgaWYgKHRlcm1zVmFsaWRhdGUpIHtcbiAgICAgIHRoaXMudGVybXMgPSB0ZXJtcztcbiAgICB9XG5cbiAgICBpZiAodGVybXNWYWxpZGF0ZSl7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke3NpZ25hdHVyZVN0cmluZ30nIHNpZ25hdHVyZSdzIHRlcm1zLmApO1xuICAgIH1cblxuICAgIHJldHVybiB0ZXJtc1ZhbGlkYXRlXG4gIH1cblxuICB1bmlmeVNpZ25hdHVyZShzaWduYXR1cmUsIGNvbnRleHQpIHtcbiAgICBsZXQgc2lnbmF0dXJlVW5pZmllcztcblxuICAgIGNvbnN0IGdlbmVyYWxTaWduYXR1cmUgPSB0aGlzLCAgLy8vXG4gICAgICAgICAgc3BlY2lmaWNTaWduYXR1cmUgPSBzaWduYXR1cmUsICAvLy9cbiAgICAgICAgICBnZW5lcmFsU2lnbmF0dXJlU3RyaW5nID0gZ2VuZXJhbFNpZ25hdHVyZS5nZXRTdHJpbmcoKSxcbiAgICAgICAgICBzcGVjaWZpY1NpZ25hdHVyZVN0cmluZyA9IHNwZWNpZmljU2lnbmF0dXJlLmdldFN0cmluZygpO1xuXG4gICAgY29udGV4dC50cmFjZShgVW5pZnlpbmcgdGhlICcke3NwZWNpZmljU2lnbmF0dXJlU3RyaW5nfScgc2lnbmF0dXJlIHdpdGggdGhlICcke2dlbmVyYWxTaWduYXR1cmVTdHJpbmd9JyBzaWduYXR1cmUuLi5gKTtcblxuICAgIGNvbnN0IGdlbmVyYWxTaWduYXR1cmVUZXJtcyA9IGdlbmVyYWxTaWduYXR1cmUuZ2V0VGVybXMoKSxcbiAgICAgICAgICBzcGVjaWZpY1NpZ25hdHVyZVRlcm1zID0gc3BlY2lmaWNTaWduYXR1cmUuZ2V0VGVybXMoKSxcbiAgICAgICAgICBnZW5lcmFsU2lnbmF0dXJlQ29udGV4dCA9IGdlbmVyYWxTaWduYXR1cmUuZ2V0Q29udGV4dCgpLFxuICAgICAgICAgIHNwZWNpZmljU2lnbmF0dXJlQ29udGV4dCA9IHNwZWNpZmljU2lnbmF0dXJlLmdldENvbnRleHQoKSxcbiAgICAgICAgICBnZW5lcmFsVGVybXMgPSBnZW5lcmFsU2lnbmF0dXJlVGVybXMsICAvLy9cbiAgICAgICAgICBzcGVjaWZpY1Rlcm1zID0gc3BlY2lmaWNTaWduYXR1cmVUZXJtcywgLy8vXG4gICAgICAgICAgZ2VuZXJhbENvbnRleHQgPSBnZW5lcmFsU2lnbmF0dXJlQ29udGV4dCwgLy8vXG4gICAgICAgICAgc3BlY2lmaWNDb250ZXh0ID0gc3BlY2lmaWNTaWduYXR1cmVDb250ZXh0OyAgLy8vXG5cbiAgICBkZWJ1Z2dlclxuXG4gICAgc2lnbmF0dXJlVW5pZmllcyA9IHJlY29uY2lsZSgoc3BlY2lmaWNDb250ZXh0KSA9PiB7XG4gICAgICBtYXRjaChnZW5lcmFsVGVybXMsIHNwZWNpZmljVGVybXMsIChnZW5lcmFsVGVybSwgc3BlY2lmaWNUZXJtKSA9PiB7XG4gICAgICAgIGxldCB0ZXJtVW5pZmllcztcblxuICAgICAgICB0ZXJtVW5pZmllcyA9IGdlbmVyYWxUZXJtLnVuaWZ5VGVybShzcGVjaWZpY1Rlcm0sIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQpO1xuXG4gICAgICAgIGlmICh0ZXJtVW5pZmllcykge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgaWYgKHNpZ25hdHVyZVVuaWZpZXMpIHtcbiAgICAgICAgc3BlY2lmaWNDb250ZXh0LmNvbW1pdChjb250ZXh0KTtcbiAgICAgIH1cbiAgICB9LCBzcGVjaWZpY0NvbnRleHQpO1xuXG4gICAgaWYgKHNpZ25hdHVyZVVuaWZpZXMpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnVuaWZpZWQgdGhlICcke3NwZWNpZmljU2lnbmF0dXJlU3RyaW5nfScgc2lnbmF0dXJlIHdpdGggdGhlICcke2dlbmVyYWxTaWduYXR1cmVTdHJpbmd9JyBzaWduYXR1cmUuYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHNpZ25hdHVyZVVuaWZpZXM7XG4gIH1cblxuICB0b0pTT04oKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpO1xuXG4gICAgcmV0dXJuIHNlcmlhbGlzZSgoY29udGV4dCkgPT4ge1xuICAgICAgY29uc3Qgc3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTtcblxuICAgICAgbGV0IGJyZWFrUG9pbnQ7XG5cbiAgICAgIGJyZWFrUG9pbnQgPSB0aGlzLmdldEJyZWFrUG9pbnQoKTtcblxuICAgICAgY29uc3QgYnJlYWtQb2ludEpTT04gPSBicmVha1BvaW50VG9CcmVha1BvaW50SlNPTihicmVha1BvaW50KTtcblxuICAgICAgYnJlYWtQb2ludCA9IGJyZWFrUG9pbnRKU09OOyAgLy8vXG5cbiAgICAgIGNvbnN0IGpzb24gPSB7XG4gICAgICAgIGNvbnRleHQsXG4gICAgICAgIHN0cmluZyxcbiAgICAgICAgYnJlYWtQb2ludFxuICAgICAgfTtcblxuICAgICAgcmV0dXJuIGpzb247XG4gICAgfSwgY29udGV4dCk7XG4gIH1cblxuICBzdGF0aWMgbmFtZSA9IFwiU2lnbmF0dXJlXCI7XG5cbiAgc3RhdGljIGZyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgICByZXR1cm4gaW5zdGFudGlhdGUoKGNvbnRleHQpID0+IHtcbiAgICAgIHJldHVybiB1bnNlcmlhbGlzZSgoanNvbiwgY29udGV4dCkgPT4ge1xuICAgICAgICBjb25zdCB7IHN0cmluZyB9ID0ganNvbixcbiAgICAgICAgICAgICAgc2lnbmF0dXJlTm9kZSA9IGluc3RhbnRpYXRlU2lnbmF0dXJlKHN0cmluZywgY29udGV4dCksXG4gICAgICAgICAgICAgIG5vZGUgPSBzaWduYXR1cmVOb2RlLCAgLy8vXG4gICAgICAgICAgICAgIGJyZWFrUG9pbnQgPSBicmVha1BvaW50RnJvbUpTT04oanNvbiksXG4gICAgICAgICAgICAgIHRlcm1zID0gdGVybXNGcm9tU2lnbmF0dXJlTm9kZShzaWduYXR1cmVOb2RlLCBjb250ZXh0KSxcbiAgICAgICAgICAgICAgc2lnbmF0dXJlID0gbmV3IFNpZ25hdHVyZShjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIHRlcm1zKTtcblxuICAgICAgICByZXR1cm4gc2lnbmF0dXJlO1xuICAgICAgfSwganNvbiwgY29udGV4dCk7XG4gICAgfSwgY29udGV4dCk7XG4gIH1cblxuICBzdGF0aWMgZnJvbVNpZ25hdHVyZVN0cmluZyhzaWduYXR1cmVTdHJpbmcsIGNvbnRleHQpIHtcbiAgICByZXR1cm4gYWJsYXRlKChjb250ZXh0KSA9PiB7XG4gICAgICByZXR1cm4gaW5zdGFudGlhdGUoKGNvbnRleHQpID0+IHtcbiAgICAgICAgY29uc3Qgc3RyaW5nID0gc2lnbmF0dXJlU3RyaW5nLCAgLy8vXG4gICAgICAgICAgICAgIHNpZ25hdHVyZU5vZGUgPSBpbnN0YW50aWF0ZVNpZ25hdHVyZShzdHJpbmcsIGNvbnRleHQpLFxuICAgICAgICAgICAgICBzaWduYXR1cmUgPSBzaWduYXR1cmVGcm9tU2lnbmF0dXJlTm9kZShzaWduYXR1cmVOb2RlLCBjb250ZXh0KTtcblxuICAgICAgICByZXR1cm4gc2lnbmF0dXJlO1xuICAgICAgfSwgY29udGV4dCk7XG4gICAgfSwgY29udGV4dCk7XG4gIH1cbn0pO1xuXG5mdW5jdGlvbiB0ZXJtc0Zyb21TaWduYXR1cmVOb2RlKHNpZ25hdHVyZU5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgdGVybU5vZGVzID0gc2lnbmF0dXJlTm9kZS5nZXRUZXJtTm9kZXMoKSxcbiAgICAgICAgdGVybXMgPSB0ZXJtTm9kZXMubWFwKCh0ZXJtTm9kZSkgPT4ge1xuICAgICAgICAgIGNvbnN0IHRlcm0gPSBjb250ZXh0LmZpbmRUZXJtQnlUZXJtTm9kZSh0ZXJtTm9kZSk7XG5cbiAgICAgICAgICByZXR1cm4gdGVybTtcbiAgICAgICAgfSk7XG5cbiAgcmV0dXJuIHRlcm1zO1xufVxuIl0sIm5hbWVzIjpbIm1hdGNoIiwiYXJyYXlVdGlsaXRpZXMiLCJhc3luY2hyb25vdXNFdmVyeSIsImNvbnRpbnVhdGlvblV0aWxpdGllcyIsImJyZWFrUG9pbnRGcm9tSlNPTiIsImJyZWFrUG9pbnRUb0JyZWFrUG9pbnRKU09OIiwiYnJlYWtQb2ludFV0aWxpdGllcyIsImRlZmluZSIsIlNpZ25hdHVyZSIsIkVsZW1lbnQiLCJjb250ZXh0Iiwic3RyaW5nIiwibm9kZSIsImJyZWFrUG9pbnQiLCJ0ZXJtcyIsImdldFRlcm1zIiwiZ2V0U2lnbmF0dXJlTm9kZSIsImdldE5vZGUiLCJzaWduYXR1cmVOb2RlIiwiZ2V0TGVuZ3RoIiwidGVybXNMZW5ndGgiLCJsZW5ndGgiLCJnZXRUZXJtIiwiaW5kZXgiLCJ0ZXJtIiwiaXNFcXVhbFRvIiwic2lnbmF0dXJlIiwic2lnbmF0dXJlTm9kZU1hdGNoZXMiLCJtYXRjaFNpZ25hdHVyZU5vZGUiLCJlcXVhbFRvIiwibm9kZU1hdGNoZXMiLCJtYXRjaE5vZGUiLCJmaW5kU2lnbmF0dXJlIiwiZmluZFNpZ25hdHVyZUJ5U2lnbmF0dXJlTm9kZSIsInZlcmlmeSIsInZlcmlmaWVzIiwic2lnbmF0dXJlU3RyaW5nIiwiZ2V0U3RyaW5nIiwidHJhY2UiLCJhdHRlbXB0IiwidGVybXNWYWxpZGF0ZSIsInZhbGlkYXRlVGVybXMiLCJjb21taXQiLCJkZWJ1ZyIsInZhbGlkYXRlIiwidmFsaWRhdGVzIiwidGVtcG9yYXJ5Q29udGV4dCIsImdldENvbnRleHQiLCJhZGRTaWduYXR1cmUiLCJ2YWxpZGF0ZXNGb3J3YXJkcyIsInB1c2giLCJ1bmlmeVNpZ25hdHVyZSIsInNpZ25hdHVyZVVuaWZpZXMiLCJnZW5lcmFsU2lnbmF0dXJlIiwic3BlY2lmaWNTaWduYXR1cmUiLCJnZW5lcmFsU2lnbmF0dXJlU3RyaW5nIiwic3BlY2lmaWNTaWduYXR1cmVTdHJpbmciLCJnZW5lcmFsU2lnbmF0dXJlVGVybXMiLCJzcGVjaWZpY1NpZ25hdHVyZVRlcm1zIiwiZ2VuZXJhbFNpZ25hdHVyZUNvbnRleHQiLCJzcGVjaWZpY1NpZ25hdHVyZUNvbnRleHQiLCJnZW5lcmFsVGVybXMiLCJzcGVjaWZpY1Rlcm1zIiwiZ2VuZXJhbENvbnRleHQiLCJzcGVjaWZpY0NvbnRleHQiLCJyZWNvbmNpbGUiLCJnZW5lcmFsVGVybSIsInNwZWNpZmljVGVybSIsInRlcm1VbmlmaWVzIiwidW5pZnlUZXJtIiwidG9KU09OIiwic2VyaWFsaXNlIiwiZ2V0QnJlYWtQb2ludCIsImJyZWFrUG9pbnRKU09OIiwianNvbiIsIm5hbWUiLCJmcm9tSlNPTiIsImluc3RhbnRpYXRlIiwidW5zZXJpYWxpc2UiLCJpbnN0YW50aWF0ZVNpZ25hdHVyZSIsInRlcm1zRnJvbVNpZ25hdHVyZU5vZGUiLCJmcm9tU2lnbmF0dXJlU3RyaW5nIiwiYWJsYXRlIiwic2lnbmF0dXJlRnJvbVNpZ25hdHVyZU5vZGUiLCJ0ZXJtTm9kZXMiLCJnZXRUZXJtTm9kZXMiLCJtYXAiLCJ0ZXJtTm9kZSIsImZpbmRUZXJtQnlUZXJtTm9kZSJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBY0E7OztlQUFBOzs7MkJBWitCO2dDQUNxQzswQkFFN0M7NkJBQ2M7eUJBQ007eUJBQ3FDO0FBRWhGLE1BQU0sRUFBRUEsS0FB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
@@ -35,21 +35,23 @@ const { nodeQuery } = _occamquery.queryUtilities;
35
35
  const termNodeQuery = nodeQuery("/term"), typeNodeQuery = nodeQuery("/type"), statementNodeQuery = nodeQuery("/statement");
36
36
  class ValidateTermAsPropertyPass extends _continuation.default {
37
37
  run(termNode, context, continuation) {
38
- const nonTerminalNode = termNode, childNodes = nonTerminalNode.getChildNodes();
39
- return this.descend(childNodes, context, continuation);
38
+ const nonTerminalNode = termNode, childNodes = nonTerminalNode.getChildNodes(), descended = this.descend(childNodes, context, continuation), success = descended; ///
39
+ return success;
40
40
  }
41
41
  static maps = [
42
42
  {
43
43
  nodeQuery: termNodeQuery,
44
44
  run: (termNode, context, continuation)=>{
45
- const term = (0, _element.termFromTermNode)(termNode, context);
46
- return term.validate(context, (term, context)=>{
47
- let success = false;
48
- if (term !== null) {
49
- success = true;
50
- }
51
- return continuation(success);
45
+ let success = false;
46
+ const term = (0, _element.termFromTermNode)(termNode, context), termValidates = term.validate(context, (term, context)=>{
47
+ let validates;
48
+ validates = continuation(context);
49
+ return validates;
52
50
  });
51
+ if (termValidates) {
52
+ success = true;
53
+ }
54
+ return success;
53
55
  }
54
56
  },
55
57
  {
@@ -58,30 +60,32 @@ class ValidateTermAsPropertyPass extends _continuation.default {
58
60
  let success = false;
59
61
  const nominalTypeName = typeNode.getNominalTypeName(), typePresent = context.isTypePresentByNominalTypeName(nominalTypeName);
60
62
  if (typePresent) {
61
- success = true;
63
+ success = continuation(ontext);
62
64
  }
63
- return continuation(success);
65
+ return success;
64
66
  }
65
67
  }
66
68
  ];
67
69
  }
68
70
  class ValidateTermAsGeneratorPass extends _continuation.default {
69
71
  run(termNode, context, continuation) {
70
- const nonTerminalNode = termNode, childNodes = nonTerminalNode.getChildNodes();
71
- return this.descend(childNodes, context, continuation);
72
+ const nonTerminalNode = termNode, childNodes = nonTerminalNode.getChildNodes(), descended = this.descend(childNodes, context, continuation), success = descended; ///
73
+ return success;
72
74
  }
73
75
  static maps = [
74
76
  {
75
77
  nodeQuery: termNodeQuery,
76
78
  run: (termNode, context, continuation)=>{
77
- const term = (0, _element.termFromTermNode)(termNode, context);
78
- return term.validate(context, (term, context)=>{
79
- let success = false;
80
- if (term !== null) {
81
- success = true;
82
- }
83
- return continuation(success);
79
+ let success = false;
80
+ const term = (0, _element.termFromTermNode)(termNode, context), termValidates = term.validate(context, (term, context)=>{
81
+ let validates;
82
+ validates = continuation(context);
83
+ return validates;
84
84
  });
85
+ if (termValidates) {
86
+ success = true;
87
+ }
88
+ return success;
85
89
  }
86
90
  },
87
91
  {
@@ -90,30 +94,32 @@ class ValidateTermAsGeneratorPass extends _continuation.default {
90
94
  let success = false;
91
95
  const nominalTypeName = typeNode.getNominalTypeName(), typePresent = context.isTypePresentByNominalTypeName(nominalTypeName);
92
96
  if (typePresent) {
93
- success = true;
97
+ success = continuation(context);
94
98
  }
95
- return continuation(success);
99
+ return success;
96
100
  }
97
101
  }
98
102
  ];
99
103
  }
100
104
  class ValidateTermAsConstructorPass extends _continuation.default {
101
105
  run(termNode, context, continuation) {
102
- const nonTerminalNode = termNode, childNodes = nonTerminalNode.getChildNodes();
103
- return this.descend(childNodes, context, continuation);
106
+ const nonTerminalNode = termNode, childNodes = nonTerminalNode.getChildNodes(), descended = this.descend(childNodes, context, continuation), success = descended; ///
107
+ return success;
104
108
  }
105
109
  static maps = [
106
110
  {
107
111
  nodeQuery: termNodeQuery,
108
112
  run: (termNode, context, continuation)=>{
109
- const term = (0, _element.termFromTermNode)(termNode, context);
110
- return term.validate(context, (term, context)=>{
111
- let success = false;
112
- if (term !== null) {
113
- success = true;
114
- }
115
- return continuation(success);
113
+ let success = false;
114
+ const term = (0, _element.termFromTermNode)(termNode, context), termValidates = term.validate(context, (term, context)=>{
115
+ let validates;
116
+ validates = continuation(context);
117
+ return validates;
116
118
  });
119
+ if (termValidates) {
120
+ success = true;
121
+ }
122
+ return success;
117
123
  }
118
124
  },
119
125
  {
@@ -122,45 +128,50 @@ class ValidateTermAsConstructorPass extends _continuation.default {
122
128
  let success = false;
123
129
  const nominalTypeName = typeNode.getNominalTypeName(), typePresent = context.isTypePresentByNominalTypeName(nominalTypeName);
124
130
  if (typePresent) {
125
- success = true;
131
+ success = continuation(context);
126
132
  }
127
- return continuation(success);
133
+ return success;
128
134
  }
129
135
  }
130
136
  ];
131
137
  }
132
138
  class ValidateStatementAsCombinatorPass extends _continuation.default {
133
139
  run(statementNode, context, continuation) {
134
- const nonTerminalNode = statementNode, childNodes = nonTerminalNode.getChildNodes();
135
- return this.descend(childNodes, context, continuation);
140
+ const nonTerminalNode = statementNode, childNodes = nonTerminalNode.getChildNodes(), descended = this.descend(childNodes, context, continuation), success = descended; ///
141
+ return success;
136
142
  }
137
143
  static maps = [
138
144
  {
139
145
  nodeQuery: statementNodeQuery,
140
146
  run: (statementNode, context, continuation)=>{
147
+ let success;
141
148
  const statement = (0, _element.statementFromStatementNode)(statementNode, context);
142
- return (0, _context.descend)((context)=>{
143
- return statement.validate(context, (statement)=>{
144
- let success = false;
145
- if (statement !== null) {
146
- success = true;
147
- }
148
- return continuation(success);
149
+ (0, _context.descend)((context)=>{
150
+ const statementValidates = statement.validate(context, (statement)=>{
151
+ let validates;
152
+ validates = continuation(success);
153
+ return validates;
149
154
  });
155
+ if (statementValidates) {
156
+ success = true;
157
+ }
150
158
  }, context);
159
+ return true;
151
160
  }
152
161
  },
153
162
  {
154
163
  nodeQuery: termNodeQuery,
155
164
  run: (termNode, context, continuation)=>{
156
- const term = (0, _element.termFromTermNode)(termNode, context);
157
- return term.validate(context, (term, context)=>{
158
- let success = false;
159
- if (term !== null) {
160
- success = true;
161
- }
162
- return continuation(success);
165
+ let success = false;
166
+ const term = (0, _element.termFromTermNode)(termNode, context), termValidates = term.validate(context, (term, context)=>{
167
+ let validates;
168
+ validates = continuation(context);
169
+ return validates;
163
170
  });
171
+ if (termValidates) {
172
+ success = true;
173
+ }
174
+ return success;
164
175
  }
165
176
  },
166
177
  {
@@ -169,29 +180,29 @@ class ValidateStatementAsCombinatorPass extends _continuation.default {
169
180
  let success = false;
170
181
  const nominalTypeName = typeNode.getNominalTypeName(), typePresent = context.isTypePresentByNominalTypeName(nominalTypeName);
171
182
  if (typePresent) {
172
- success = true;
183
+ success = continuation(context);
173
184
  }
174
- return continuation(success);
185
+ return success;
175
186
  }
176
187
  }
177
188
  ];
178
189
  }
179
190
  const validateTermAsPropertyPass = new ValidateTermAsPropertyPass(), validateTermAsGeneratorPass = new ValidateTermAsGeneratorPass(), validateTermAsConstructorPass = new ValidateTermAsConstructorPass(), validateStatementAsCombinatorPass = new ValidateStatementAsCombinatorPass();
180
191
  function validateTermAsProperty(term, context, continuation) {
181
- const termNode = term.getNode();
182
- return validateTermAsPropertyPass.run(termNode, context, continuation);
192
+ const termNode = term.getNode(), success = validateTermAsPropertyPass.run(termNode, context, continuation), termValidatesAsProperty = success; ///
193
+ return termValidatesAsProperty;
183
194
  }
184
195
  function validateTermAsGenerator(term, context, continuation) {
185
- const termNode = term.getNode();
186
- return validateTermAsGeneratorPass.run(termNode, context, continuation);
196
+ const termNode = term.getNode(), success = validateTermAsGeneratorPass.run(termNode, context, continuation), termValidatesAsGenerator = success; ///
197
+ return termValidatesAsGenerator;
187
198
  }
188
199
  function validateTermAsConstructor(term, context, continuation) {
189
- const termNode = term.getNode();
190
- return validateTermAsConstructorPass.run(termNode, context, continuation);
200
+ const termNode = term.getNode(), success = validateTermAsConstructorPass.run(termNode, context, continuation), termValidatesAsConstructor = success; ///
201
+ return termValidatesAsConstructor;
191
202
  }
192
203
  function validateStatementAsCombinator(statement, context, continuation) {
193
- const statementNode = statement.getNode();
194
- return validateStatementAsCombinatorPass.run(statementNode, context, continuation);
204
+ const statementNode = statement.getNode(), success = validateStatementAsCombinatorPass.run(statementNode, context, continuation), statementValidatesAsCombinator = success; ///
205
+ return statementValidatesAsCombinator;
195
206
  }
196
207
 
197
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wcm9jZXNzL3ZhbGlkYXRlLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBxdWVyeVV0aWxpdGllcyB9IGZyb20gXCJvY2NhbS1xdWVyeVwiO1xuXG5pbXBvcnQgQ29udGludWF0aW9uUGFzcyBmcm9tIFwiLi4vcGFzcy9jb250aW51YXRpb25cIjtcblxuaW1wb3J0IHsgZGVzY2VuZCB9IGZyb20gXCIuLi91dGlsaXRpZXMvY29udGV4dFwiO1xuaW1wb3J0IHsgdGVybUZyb21UZXJtTm9kZSwgc3RhdGVtZW50RnJvbVN0YXRlbWVudE5vZGUgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2VsZW1lbnRcIjtcblxuY29uc3QgeyBub2RlUXVlcnkgfSA9IHF1ZXJ5VXRpbGl0aWVzO1xuXG5jb25zdCB0ZXJtTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL3Rlcm1cIiksXG4gICAgICB0eXBlTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL3R5cGVcIiksXG4gICAgICBzdGF0ZW1lbnROb2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvc3RhdGVtZW50XCIpO1xuXG5jbGFzcyBWYWxpZGF0ZVRlcm1Bc1Byb3BlcnR5UGFzcyBleHRlbmRzIENvbnRpbnVhdGlvblBhc3Mge1xuICBydW4odGVybU5vZGUsIGNvbnRleHQsIGNvbnRpbnVhdGlvbikge1xuICAgIGNvbnN0IG5vblRlcm1pbmFsTm9kZSA9IHRlcm1Ob2RlLCAgLy8vXG4gICAgICAgICAgY2hpbGROb2RlcyA9IG5vblRlcm1pbmFsTm9kZS5nZXRDaGlsZE5vZGVzKCk7XG5cbiAgICByZXR1cm4gdGhpcy5kZXNjZW5kKGNoaWxkTm9kZXMsIGNvbnRleHQsIGNvbnRpbnVhdGlvbik7XG4gIH1cblxuICBzdGF0aWMgbWFwcyA9IFtcbiAgICB7XG4gICAgICBub2RlUXVlcnk6IHRlcm1Ob2RlUXVlcnksXG4gICAgICBydW46ICh0ZXJtTm9kZSwgY29udGV4dCwgY29udGludWF0aW9uKSA9PiB7XG4gICAgICAgIGNvbnN0IHRlcm0gPSB0ZXJtRnJvbVRlcm1Ob2RlKHRlcm1Ob2RlLCBjb250ZXh0KTtcblxuICAgICAgICByZXR1cm4gdGVybS52YWxpZGF0ZShjb250ZXh0LCAodGVybSwgY29udGV4dCkgPT4ge1xuICAgICAgICAgIGxldCBzdWNjZXNzID0gZmFsc2U7XG5cbiAgICAgICAgICBpZiAodGVybSAhPT0gbnVsbCkge1xuICAgICAgICAgICAgc3VjY2VzcyA9IHRydWU7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbihzdWNjZXNzKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSxcbiAgICB7XG4gICAgICBub2RlUXVlcnk6IHR5cGVOb2RlUXVlcnksXG4gICAgICBydW46ICh0eXBlTm9kZSwgY29udGV4dCwgY29udGludWF0aW9uKSA9PiB7XG4gICAgICAgIGxldCBzdWNjZXNzID0gZmFsc2U7XG5cbiAgICAgICAgY29uc3Qgbm9taW5hbFR5cGVOYW1lID0gdHlwZU5vZGUuZ2V0Tm9taW5hbFR5cGVOYW1lKCksXG4gICAgICAgICAgICAgIHR5cGVQcmVzZW50ID0gY29udGV4dC5pc1R5cGVQcmVzZW50QnlOb21pbmFsVHlwZU5hbWUobm9taW5hbFR5cGVOYW1lKTtcblxuICAgICAgICBpZiAodHlwZVByZXNlbnQpIHtcbiAgICAgICAgICBzdWNjZXNzID0gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBjb250aW51YXRpb24oc3VjY2Vzcyk7XG4gICAgICB9XG4gICAgfVxuICBdO1xufVxuXG5jbGFzcyBWYWxpZGF0ZVRlcm1Bc0dlbmVyYXRvclBhc3MgZXh0ZW5kcyBDb250aW51YXRpb25QYXNzIHtcbiAgcnVuKHRlcm1Ob2RlLCBjb250ZXh0LCBjb250aW51YXRpb24pIHtcbiAgICBjb25zdCBub25UZXJtaW5hbE5vZGUgPSB0ZXJtTm9kZSwgIC8vL1xuICAgICAgICAgIGNoaWxkTm9kZXMgPSBub25UZXJtaW5hbE5vZGUuZ2V0Q2hpbGROb2RlcygpO1xuXG4gICAgcmV0dXJuIHRoaXMuZGVzY2VuZChjaGlsZE5vZGVzLCBjb250ZXh0LCBjb250aW51YXRpb24pO1xuICB9XG5cbiAgc3RhdGljIG1hcHMgPSBbXG4gICAge1xuICAgICAgbm9kZVF1ZXJ5OiB0ZXJtTm9kZVF1ZXJ5LFxuICAgICAgcnVuOiAodGVybU5vZGUsIGNvbnRleHQsIGNvbnRpbnVhdGlvbikgPT4ge1xuICAgICAgICBjb25zdCB0ZXJtID0gdGVybUZyb21UZXJtTm9kZSh0ZXJtTm9kZSwgY29udGV4dCk7XG5cbiAgICAgICAgcmV0dXJuIHRlcm0udmFsaWRhdGUoY29udGV4dCwgKHRlcm0sIGNvbnRleHQpID0+IHtcbiAgICAgICAgICBsZXQgc3VjY2VzcyA9IGZhbHNlO1xuXG4gICAgICAgICAgaWYgKHRlcm0gIT09IG51bGwpIHtcbiAgICAgICAgICAgIHN1Y2Nlc3MgPSB0cnVlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiBjb250aW51YXRpb24oc3VjY2Vzcyk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgbm9kZVF1ZXJ5OiB0eXBlTm9kZVF1ZXJ5LFxuICAgICAgcnVuOiAodHlwZU5vZGUsIGNvbnRleHQsIGNvbnRpbnVhdGlvbikgPT4ge1xuICAgICAgICBsZXQgc3VjY2VzcyA9IGZhbHNlO1xuXG4gICAgICAgIGNvbnN0IG5vbWluYWxUeXBlTmFtZSA9IHR5cGVOb2RlLmdldE5vbWluYWxUeXBlTmFtZSgpLFxuICAgICAgICAgICAgICB0eXBlUHJlc2VudCA9IGNvbnRleHQuaXNUeXBlUHJlc2VudEJ5Tm9taW5hbFR5cGVOYW1lKG5vbWluYWxUeXBlTmFtZSk7XG5cbiAgICAgICAgaWYgKHR5cGVQcmVzZW50KSB7XG4gICAgICAgICAgc3VjY2VzcyA9IHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gY29udGludWF0aW9uKHN1Y2Nlc3MpO1xuICAgICAgfVxuICAgIH1cbiAgXTtcbn1cblxuY2xhc3MgVmFsaWRhdGVUZXJtQXNDb25zdHJ1Y3RvclBhc3MgZXh0ZW5kcyBDb250aW51YXRpb25QYXNzIHtcbiAgcnVuKHRlcm1Ob2RlLCBjb250ZXh0LCBjb250aW51YXRpb24pIHtcbiAgICBjb25zdCBub25UZXJtaW5hbE5vZGUgPSB0ZXJtTm9kZSwgIC8vL1xuICAgICAgICAgIGNoaWxkTm9kZXMgPSBub25UZXJtaW5hbE5vZGUuZ2V0Q2hpbGROb2RlcygpO1xuXG4gICAgcmV0dXJuIHRoaXMuZGVzY2VuZChjaGlsZE5vZGVzLCBjb250ZXh0LCBjb250aW51YXRpb24pO1xuICB9XG5cbiAgc3RhdGljIG1hcHMgPSBbXG4gICAge1xuICAgICAgbm9kZVF1ZXJ5OiB0ZXJtTm9kZVF1ZXJ5LFxuICAgICAgcnVuOiAodGVybU5vZGUsIGNvbnRleHQsIGNvbnRpbnVhdGlvbikgPT4ge1xuICAgICAgICBjb25zdCB0ZXJtID0gdGVybUZyb21UZXJtTm9kZSh0ZXJtTm9kZSwgY29udGV4dCk7XG5cbiAgICAgICAgcmV0dXJuIHRlcm0udmFsaWRhdGUoY29udGV4dCwgKHRlcm0sIGNvbnRleHQpID0+IHtcbiAgICAgICAgICBsZXQgc3VjY2VzcyA9IGZhbHNlO1xuXG4gICAgICAgICAgaWYgKHRlcm0gIT09IG51bGwpIHtcbiAgICAgICAgICAgIHN1Y2Nlc3MgPSB0cnVlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiBjb250aW51YXRpb24oc3VjY2Vzcyk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgbm9kZVF1ZXJ5OiB0eXBlTm9kZVF1ZXJ5LFxuICAgICAgcnVuOiAodHlwZU5vZGUsIGNvbnRleHQsIGNvbnRpbnVhdGlvbikgPT4ge1xuICAgICAgICBsZXQgc3VjY2VzcyA9IGZhbHNlO1xuXG4gICAgICAgIGNvbnN0IG5vbWluYWxUeXBlTmFtZSA9IHR5cGVOb2RlLmdldE5vbWluYWxUeXBlTmFtZSgpLFxuICAgICAgICAgICAgICB0eXBlUHJlc2VudCA9IGNvbnRleHQuaXNUeXBlUHJlc2VudEJ5Tm9taW5hbFR5cGVOYW1lKG5vbWluYWxUeXBlTmFtZSk7XG5cbiAgICAgICAgaWYgKHR5cGVQcmVzZW50KSB7XG4gICAgICAgICAgc3VjY2VzcyA9IHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gY29udGludWF0aW9uKHN1Y2Nlc3MpO1xuICAgICAgfVxuICAgIH1cbiAgXTtcbn1cblxuY2xhc3MgVmFsaWRhdGVTdGF0ZW1lbnRBc0NvbWJpbmF0b3JQYXNzIGV4dGVuZHMgQ29udGludWF0aW9uUGFzcyB7XG4gIHJ1bihzdGF0ZW1lbnROb2RlLCBjb250ZXh0LCBjb250aW51YXRpb24pIHtcbiAgICBjb25zdCBub25UZXJtaW5hbE5vZGUgPSBzdGF0ZW1lbnROb2RlLCAgLy8vXG4gICAgICBjaGlsZE5vZGVzID0gbm9uVGVybWluYWxOb2RlLmdldENoaWxkTm9kZXMoKTtcblxuICAgIHJldHVybiB0aGlzLmRlc2NlbmQoY2hpbGROb2RlcywgY29udGV4dCwgY29udGludWF0aW9uKTtcbiAgfVxuXG4gIHN0YXRpYyBtYXBzID0gW1xuICAgIHtcbiAgICAgIG5vZGVRdWVyeTogc3RhdGVtZW50Tm9kZVF1ZXJ5LFxuICAgICAgcnVuOiAoc3RhdGVtZW50Tm9kZSwgY29udGV4dCwgY29udGludWF0aW9uKSA9PiB7XG4gICAgICAgIGNvbnN0IHN0YXRlbWVudCA9IHN0YXRlbWVudEZyb21TdGF0ZW1lbnROb2RlKHN0YXRlbWVudE5vZGUsIGNvbnRleHQpO1xuXG4gICAgICAgIHJldHVybiBkZXNjZW5kKChjb250ZXh0KSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHN0YXRlbWVudC52YWxpZGF0ZShjb250ZXh0LCAoc3RhdGVtZW50KSA9PiB7XG4gICAgICAgICAgICBsZXQgc3VjY2VzcyA9IGZhbHNlO1xuXG4gICAgICAgICAgICBpZiAoc3RhdGVtZW50ICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgIHN1Y2Nlc3MgPSB0cnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gY29udGludWF0aW9uKHN1Y2Nlc3MpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9LCBjb250ZXh0KTtcbiAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgIG5vZGVRdWVyeTogdGVybU5vZGVRdWVyeSxcbiAgICAgIHJ1bjogKHRlcm1Ob2RlLCBjb250ZXh0LCBjb250aW51YXRpb24pID0+IHtcbiAgICAgICAgY29uc3QgdGVybSA9IHRlcm1Gcm9tVGVybU5vZGUodGVybU5vZGUsIGNvbnRleHQpO1xuXG4gICAgICAgIHJldHVybiB0ZXJtLnZhbGlkYXRlKGNvbnRleHQsICh0ZXJtLCBjb250ZXh0KSA9PiB7XG4gICAgICAgICAgbGV0IHN1Y2Nlc3MgPSBmYWxzZTtcblxuICAgICAgICAgIGlmICh0ZXJtICE9PSBudWxsKSB7XG4gICAgICAgICAgICBzdWNjZXNzID0gdHJ1ZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gY29udGludWF0aW9uKHN1Y2Nlc3MpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgIG5vZGVRdWVyeTogdHlwZU5vZGVRdWVyeSxcbiAgICAgIHJ1bjogKHR5cGVOb2RlLCBjb250ZXh0LCBjb250aW51YXRpb24pID0+IHtcbiAgICAgICAgbGV0IHN1Y2Nlc3MgPSBmYWxzZTtcblxuICAgICAgICBjb25zdCBub21pbmFsVHlwZU5hbWUgPSB0eXBlTm9kZS5nZXROb21pbmFsVHlwZU5hbWUoKSxcbiAgICAgICAgICAgICAgdHlwZVByZXNlbnQgPSBjb250ZXh0LmlzVHlwZVByZXNlbnRCeU5vbWluYWxUeXBlTmFtZShub21pbmFsVHlwZU5hbWUpO1xuXG4gICAgICAgIGlmICh0eXBlUHJlc2VudCkge1xuICAgICAgICAgIHN1Y2Nlc3MgPSB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbihzdWNjZXNzKTtcbiAgICAgIH1cbiAgICB9XG4gIF07XG59XG5cbmNvbnN0IHZhbGlkYXRlVGVybUFzUHJvcGVydHlQYXNzID0gbmV3IFZhbGlkYXRlVGVybUFzUHJvcGVydHlQYXNzKCksXG4gICAgICB2YWxpZGF0ZVRlcm1Bc0dlbmVyYXRvclBhc3MgPSBuZXcgVmFsaWRhdGVUZXJtQXNHZW5lcmF0b3JQYXNzKCksXG4gICAgICB2YWxpZGF0ZVRlcm1Bc0NvbnN0cnVjdG9yUGFzcyA9IG5ldyBWYWxpZGF0ZVRlcm1Bc0NvbnN0cnVjdG9yUGFzcygpLFxuICAgICAgdmFsaWRhdGVTdGF0ZW1lbnRBc0NvbWJpbmF0b3JQYXNzID0gbmV3IFZhbGlkYXRlU3RhdGVtZW50QXNDb21iaW5hdG9yUGFzcygpO1xuXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVUZXJtQXNQcm9wZXJ0eSh0ZXJtLCBjb250ZXh0LCBjb250aW51YXRpb24pIHtcbiAgY29uc3QgdGVybU5vZGUgPSB0ZXJtLmdldE5vZGUoKTtcblxuICByZXR1cm4gdmFsaWRhdGVUZXJtQXNQcm9wZXJ0eVBhc3MucnVuKHRlcm1Ob2RlLCBjb250ZXh0LCBjb250aW51YXRpb24pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVUZXJtQXNHZW5lcmF0b3IodGVybSwgY29udGV4dCwgY29udGludWF0aW9uKSB7XG4gIGNvbnN0IHRlcm1Ob2RlID0gdGVybS5nZXROb2RlKCk7XG5cbiAgcmV0dXJuIHZhbGlkYXRlVGVybUFzR2VuZXJhdG9yUGFzcy5ydW4odGVybU5vZGUsIGNvbnRleHQsIGNvbnRpbnVhdGlvbik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZVRlcm1Bc0NvbnN0cnVjdG9yKHRlcm0sIGNvbnRleHQsIGNvbnRpbnVhdGlvbikge1xuICBjb25zdCB0ZXJtTm9kZSA9IHRlcm0uZ2V0Tm9kZSgpO1xuXG4gIHJldHVybiB2YWxpZGF0ZVRlcm1Bc0NvbnN0cnVjdG9yUGFzcy5ydW4odGVybU5vZGUsIGNvbnRleHQsIGNvbnRpbnVhdGlvbik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZVN0YXRlbWVudEFzQ29tYmluYXRvcihzdGF0ZW1lbnQsIGNvbnRleHQsIGNvbnRpbnVhdGlvbikge1xuICBjb25zdCBzdGF0ZW1lbnROb2RlID0gc3RhdGVtZW50LmdldE5vZGUoKTtcblxuICByZXR1cm4gdmFsaWRhdGVTdGF0ZW1lbnRBc0NvbWJpbmF0b3JQYXNzLnJ1bihzdGF0ZW1lbnROb2RlLCBjb250ZXh0LCBjb250aW51YXRpb24pO1xufVxuIl0sIm5hbWVzIjpbInZhbGlkYXRlU3RhdGVtZW50QXNDb21iaW5hdG9yIiwidmFsaWRhdGVUZXJtQXNDb25zdHJ1Y3RvciIsInZhbGlkYXRlVGVybUFzR2VuZXJhdG9yIiwidmFsaWRhdGVUZXJtQXNQcm9wZXJ0eSIsIm5vZGVRdWVyeSIsInF1ZXJ5VXRpbGl0aWVzIiwidGVybU5vZGVRdWVyeSIsInR5cGVOb2RlUXVlcnkiLCJzdGF0ZW1lbnROb2RlUXVlcnkiLCJWYWxpZGF0ZVRlcm1Bc1Byb3BlcnR5UGFzcyIsIkNvbnRpbnVhdGlvblBhc3MiLCJydW4iLCJ0ZXJtTm9kZSIsImNvbnRleHQiLCJjb250aW51YXRpb24iLCJub25UZXJtaW5hbE5vZGUiLCJjaGlsZE5vZGVzIiwiZ2V0Q2hpbGROb2RlcyIsImRlc2NlbmQiLCJtYXBzIiwidGVybSIsInRlcm1Gcm9tVGVybU5vZGUiLCJ2YWxpZGF0ZSIsInN1Y2Nlc3MiLCJ0eXBlTm9kZSIsIm5vbWluYWxUeXBlTmFtZSIsImdldE5vbWluYWxUeXBlTmFtZSIsInR5cGVQcmVzZW50IiwiaXNUeXBlUHJlc2VudEJ5Tm9taW5hbFR5cGVOYW1lIiwiVmFsaWRhdGVUZXJtQXNHZW5lcmF0b3JQYXNzIiwiVmFsaWRhdGVUZXJtQXNDb25zdHJ1Y3RvclBhc3MiLCJWYWxpZGF0ZVN0YXRlbWVudEFzQ29tYmluYXRvclBhc3MiLCJzdGF0ZW1lbnROb2RlIiwic3RhdGVtZW50Iiwic3RhdGVtZW50RnJvbVN0YXRlbWVudE5vZGUiLCJ2YWxpZGF0ZVRlcm1Bc1Byb3BlcnR5UGFzcyIsInZhbGlkYXRlVGVybUFzR2VuZXJhdG9yUGFzcyIsInZhbGlkYXRlVGVybUFzQ29uc3RydWN0b3JQYXNzIiwidmFsaWRhdGVTdGF0ZW1lbnRBc0NvbWJpbmF0b3JQYXNzIiwiZ2V0Tm9kZSJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7O1FBb09nQkE7ZUFBQUE7O1FBTkFDO2VBQUFBOztRQU5BQztlQUFBQTs7UUFOQUM7ZUFBQUE7Ozs0QkFoTmU7cUVBRUY7eUJBRUw7eUJBQ3FDOzs7Ozs7QUFFN0QsTUFBTSxFQUFFQyxTQUFTLEVBQUUsR0FBR0MsMEJBQWM7QUFFcEMsTUFBTUMsZ0JBQWdCRixVQUFVLFVBQzFCRyxnQkFBZ0JILFVBQVUsVUFDMUJJLHFCQUFxQkosVUFBVTtBQUVyQyxNQUFNSyxtQ0FBbUNDLHFCQUFnQjtJQUN2REMsSUFBSUMsUUFBUSxFQUFFQyxPQUFPLEVBQUVDLFlBQVksRUFBRTtRQUNuQyxNQUFNQyxrQkFBa0JILFVBQ2xCSSxhQUFhRCxnQkFBZ0JFLGFBQWE7UUFFaEQsT0FBTyxJQUFJLENBQUNDLE9BQU8sQ0FBQ0YsWUFBWUgsU0FBU0M7SUFDM0M7SUFFQSxPQUFPSyxPQUFPO1FBQ1o7WUFDRWYsV0FBV0U7WUFDWEssS0FBSyxDQUFDQyxVQUFVQyxTQUFTQztnQkFDdkIsTUFBTU0sT0FBT0MsSUFBQUEseUJBQWdCLEVBQUNULFVBQVVDO2dCQUV4QyxPQUFPTyxLQUFLRSxRQUFRLENBQUNULFNBQVMsQ0FBQ08sTUFBTVA7b0JBQ25DLElBQUlVLFVBQVU7b0JBRWQsSUFBSUgsU0FBUyxNQUFNO3dCQUNqQkcsVUFBVTtvQkFDWjtvQkFFQSxPQUFPVCxhQUFhUztnQkFDdEI7WUFDRjtRQUNGO1FBQ0E7WUFDRW5CLFdBQVdHO1lBQ1hJLEtBQUssQ0FBQ2EsVUFBVVgsU0FBU0M7Z0JBQ3ZCLElBQUlTLFVBQVU7Z0JBRWQsTUFBTUUsa0JBQWtCRCxTQUFTRSxrQkFBa0IsSUFDN0NDLGNBQWNkLFFBQVFlLDhCQUE4QixDQUFDSDtnQkFFM0Qs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
208
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wcm9jZXNzL3ZhbGlkYXRlLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBxdWVyeVV0aWxpdGllcyB9IGZyb20gXCJvY2NhbS1xdWVyeVwiO1xuXG5pbXBvcnQgQ29udGludWF0aW9uUGFzcyBmcm9tIFwiLi4vcGFzcy9jb250aW51YXRpb25cIjtcblxuaW1wb3J0IHsgZGVzY2VuZCB9IGZyb20gXCIuLi91dGlsaXRpZXMvY29udGV4dFwiO1xuaW1wb3J0IHsgdGVybUZyb21UZXJtTm9kZSwgc3RhdGVtZW50RnJvbVN0YXRlbWVudE5vZGUgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2VsZW1lbnRcIjtcblxuY29uc3QgeyBub2RlUXVlcnkgfSA9IHF1ZXJ5VXRpbGl0aWVzO1xuXG5jb25zdCB0ZXJtTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL3Rlcm1cIiksXG4gICAgICB0eXBlTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL3R5cGVcIiksXG4gICAgICBzdGF0ZW1lbnROb2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvc3RhdGVtZW50XCIpO1xuXG5jbGFzcyBWYWxpZGF0ZVRlcm1Bc1Byb3BlcnR5UGFzcyBleHRlbmRzIENvbnRpbnVhdGlvblBhc3Mge1xuICBydW4odGVybU5vZGUsIGNvbnRleHQsIGNvbnRpbnVhdGlvbikge1xuICAgIGNvbnN0IG5vblRlcm1pbmFsTm9kZSA9IHRlcm1Ob2RlLCAgLy8vXG4gICAgICAgICAgY2hpbGROb2RlcyA9IG5vblRlcm1pbmFsTm9kZS5nZXRDaGlsZE5vZGVzKCksXG4gICAgICAgICAgZGVzY2VuZGVkID0gdGhpcy5kZXNjZW5kKGNoaWxkTm9kZXMsIGNvbnRleHQsIGNvbnRpbnVhdGlvbiksXG4gICAgICAgICAgc3VjY2VzcyA9IGRlc2NlbmRlZDsgIC8vL1xuXG4gICAgcmV0dXJuIHN1Y2Nlc3M7XG4gIH1cblxuICBzdGF0aWMgbWFwcyA9IFtcbiAgICB7XG4gICAgICBub2RlUXVlcnk6IHRlcm1Ob2RlUXVlcnksXG4gICAgICBydW46ICh0ZXJtTm9kZSwgY29udGV4dCwgY29udGludWF0aW9uKSA9PiB7XG4gICAgICAgIGxldCBzdWNjZXNzID0gZmFsc2U7XG5cbiAgICAgICAgY29uc3QgdGVybSA9IHRlcm1Gcm9tVGVybU5vZGUodGVybU5vZGUsIGNvbnRleHQpLFxuICAgICAgICAgICAgICB0ZXJtVmFsaWRhdGVzID0gdGVybS52YWxpZGF0ZShjb250ZXh0LCAodGVybSwgY29udGV4dCkgPT4ge1xuICAgICAgICAgICAgICAgIGxldCB2YWxpZGF0ZXM7XG5cbiAgICAgICAgICAgICAgICB2YWxpZGF0ZXMgPSBjb250aW51YXRpb24oY29udGV4dCk7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gdmFsaWRhdGVzO1xuICAgICAgICAgICAgICB9KTtcblxuICAgICAgICBpZiAodGVybVZhbGlkYXRlcykge1xuICAgICAgICAgIHN1Y2Nlc3MgPSB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHN1Y2Nlc3M7XG4gICAgICB9XG4gICAgfSxcbiAgICB7XG4gICAgICBub2RlUXVlcnk6IHR5cGVOb2RlUXVlcnksXG4gICAgICBydW46ICh0eXBlTm9kZSwgY29udGV4dCwgY29udGludWF0aW9uKSA9PiB7XG4gICAgICAgIGxldCBzdWNjZXNzID0gZmFsc2U7XG5cbiAgICAgICAgY29uc3Qgbm9taW5hbFR5cGVOYW1lID0gdHlwZU5vZGUuZ2V0Tm9taW5hbFR5cGVOYW1lKCksXG4gICAgICAgICAgICAgIHR5cGVQcmVzZW50ID0gY29udGV4dC5pc1R5cGVQcmVzZW50QnlOb21pbmFsVHlwZU5hbWUobm9taW5hbFR5cGVOYW1lKTtcblxuICAgICAgICBpZiAodHlwZVByZXNlbnQpIHtcbiAgICAgICAgICBzdWNjZXNzID0gY29udGludWF0aW9uKCBvbnRleHQpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHN1Y2Nlc3M7XG4gICAgICB9XG4gICAgfVxuICBdO1xufVxuXG5jbGFzcyBWYWxpZGF0ZVRlcm1Bc0dlbmVyYXRvclBhc3MgZXh0ZW5kcyBDb250aW51YXRpb25QYXNzIHtcbiAgcnVuKHRlcm1Ob2RlLCBjb250ZXh0LCBjb250aW51YXRpb24pIHtcbiAgICBjb25zdCBub25UZXJtaW5hbE5vZGUgPSB0ZXJtTm9kZSwgIC8vL1xuICAgICAgICAgIGNoaWxkTm9kZXMgPSBub25UZXJtaW5hbE5vZGUuZ2V0Q2hpbGROb2RlcygpLFxuICAgICAgICAgIGRlc2NlbmRlZCA9IHRoaXMuZGVzY2VuZChjaGlsZE5vZGVzLCBjb250ZXh0LCBjb250aW51YXRpb24pLFxuICAgICAgICAgIHN1Y2Nlc3MgPSBkZXNjZW5kZWQ7ICAvLy9cblxuICAgIHJldHVybiBzdWNjZXNzO1xuICB9XG5cbiAgc3RhdGljIG1hcHMgPSBbXG4gICAge1xuICAgICAgbm9kZVF1ZXJ5OiB0ZXJtTm9kZVF1ZXJ5LFxuICAgICAgcnVuOiAodGVybU5vZGUsIGNvbnRleHQsIGNvbnRpbnVhdGlvbikgPT4ge1xuICAgICAgICBsZXQgc3VjY2VzcyA9IGZhbHNlO1xuXG4gICAgICAgIGNvbnN0IHRlcm0gPSB0ZXJtRnJvbVRlcm1Ob2RlKHRlcm1Ob2RlLCBjb250ZXh0KSxcbiAgICAgICAgICAgICAgdGVybVZhbGlkYXRlcyA9IHRlcm0udmFsaWRhdGUoY29udGV4dCwgKHRlcm0sIGNvbnRleHQpID0+IHtcbiAgICAgICAgICAgICAgICBsZXQgdmFsaWRhdGVzO1xuXG4gICAgICAgICAgICAgICAgdmFsaWRhdGVzID0gY29udGludWF0aW9uKGNvbnRleHQpO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHZhbGlkYXRlcztcbiAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKHRlcm1WYWxpZGF0ZXMpIHtcbiAgICAgICAgICBzdWNjZXNzID0gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBzdWNjZXNzO1xuICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgbm9kZVF1ZXJ5OiB0eXBlTm9kZVF1ZXJ5LFxuICAgICAgcnVuOiAodHlwZU5vZGUsIGNvbnRleHQsIGNvbnRpbnVhdGlvbikgPT4ge1xuICAgICAgICBsZXQgc3VjY2VzcyA9IGZhbHNlO1xuXG4gICAgICAgIGNvbnN0IG5vbWluYWxUeXBlTmFtZSA9IHR5cGVOb2RlLmdldE5vbWluYWxUeXBlTmFtZSgpLFxuICAgICAgICAgICAgICB0eXBlUHJlc2VudCA9IGNvbnRleHQuaXNUeXBlUHJlc2VudEJ5Tm9taW5hbFR5cGVOYW1lKG5vbWluYWxUeXBlTmFtZSk7XG5cbiAgICAgICAgaWYgKHR5cGVQcmVzZW50KSB7XG4gICAgICAgICAgc3VjY2VzcyA9IGNvbnRpbnVhdGlvbihjb250ZXh0KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBzdWNjZXNzO1xuICAgICAgfVxuICAgIH1cbiAgXTtcbn1cblxuY2xhc3MgVmFsaWRhdGVUZXJtQXNDb25zdHJ1Y3RvclBhc3MgZXh0ZW5kcyBDb250aW51YXRpb25QYXNzIHtcbiAgcnVuKHRlcm1Ob2RlLCBjb250ZXh0LCBjb250aW51YXRpb24pIHtcbiAgICBjb25zdCBub25UZXJtaW5hbE5vZGUgPSB0ZXJtTm9kZSwgIC8vL1xuICAgICAgICAgIGNoaWxkTm9kZXMgPSBub25UZXJtaW5hbE5vZGUuZ2V0Q2hpbGROb2RlcygpLFxuICAgICAgICAgIGRlc2NlbmRlZCA9IHRoaXMuZGVzY2VuZChjaGlsZE5vZGVzLCBjb250ZXh0LCBjb250aW51YXRpb24pLFxuICAgICAgICAgIHN1Y2Nlc3MgPSBkZXNjZW5kZWQ7ICAvLy9cblxuICAgIHJldHVybiBzdWNjZXNzO1xuICB9XG5cbiAgc3RhdGljIG1hcHMgPSBbXG4gICAge1xuICAgICAgbm9kZVF1ZXJ5OiB0ZXJtTm9kZVF1ZXJ5LFxuICAgICAgcnVuOiAodGVybU5vZGUsIGNvbnRleHQsIGNvbnRpbnVhdGlvbikgPT4ge1xuICAgICAgICBsZXQgc3VjY2VzcyA9IGZhbHNlO1xuXG4gICAgICAgIGNvbnN0IHRlcm0gPSB0ZXJtRnJvbVRlcm1Ob2RlKHRlcm1Ob2RlLCBjb250ZXh0KSxcbiAgICAgICAgICAgICAgdGVybVZhbGlkYXRlcyA9IHRlcm0udmFsaWRhdGUoY29udGV4dCwgKHRlcm0sIGNvbnRleHQpID0+IHtcbiAgICAgICAgICAgICAgICBsZXQgdmFsaWRhdGVzO1xuXG4gICAgICAgICAgICAgICAgdmFsaWRhdGVzID0gY29udGludWF0aW9uKGNvbnRleHQpO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHZhbGlkYXRlcztcbiAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKHRlcm1WYWxpZGF0ZXMpIHtcbiAgICAgICAgICBzdWNjZXNzID0gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBzdWNjZXNzO1xuICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgbm9kZVF1ZXJ5OiB0eXBlTm9kZVF1ZXJ5LFxuICAgICAgcnVuOiAodHlwZU5vZGUsIGNvbnRleHQsIGNvbnRpbnVhdGlvbikgPT4ge1xuICAgICAgICBsZXQgc3VjY2VzcyA9IGZhbHNlO1xuXG4gICAgICAgIGNvbnN0IG5vbWluYWxUeXBlTmFtZSA9IHR5cGVOb2RlLmdldE5vbWluYWxUeXBlTmFtZSgpLFxuICAgICAgICAgICAgICB0eXBlUHJlc2VudCA9IGNvbnRleHQuaXNUeXBlUHJlc2VudEJ5Tm9taW5hbFR5cGVOYW1lKG5vbWluYWxUeXBlTmFtZSk7XG5cbiAgICAgICAgaWYgKHR5cGVQcmVzZW50KSB7XG4gICAgICAgICAgc3VjY2VzcyA9IGNvbnRpbnVhdGlvbihjb250ZXh0KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBzdWNjZXNzO1xuICAgICAgfVxuICAgIH1cbiAgXTtcbn1cblxuY2xhc3MgVmFsaWRhdGVTdGF0ZW1lbnRBc0NvbWJpbmF0b3JQYXNzIGV4dGVuZHMgQ29udGludWF0aW9uUGFzcyB7XG4gIHJ1bihzdGF0ZW1lbnROb2RlLCBjb250ZXh0LCBjb250aW51YXRpb24pIHtcbiAgICBjb25zdCBub25UZXJtaW5hbE5vZGUgPSBzdGF0ZW1lbnROb2RlLCAgLy8vXG4gICAgICAgICAgY2hpbGROb2RlcyA9IG5vblRlcm1pbmFsTm9kZS5nZXRDaGlsZE5vZGVzKCksXG4gICAgICAgICAgZGVzY2VuZGVkID0gdGhpcy5kZXNjZW5kKGNoaWxkTm9kZXMsIGNvbnRleHQsIGNvbnRpbnVhdGlvbiksXG4gICAgICAgICAgc3VjY2VzcyA9IGRlc2NlbmRlZDsgIC8vL1xuXG4gICAgcmV0dXJuIHN1Y2Nlc3M7XG4gIH1cblxuICBzdGF0aWMgbWFwcyA9IFtcbiAgICB7XG4gICAgICBub2RlUXVlcnk6IHN0YXRlbWVudE5vZGVRdWVyeSxcbiAgICAgIHJ1bjogKHN0YXRlbWVudE5vZGUsIGNvbnRleHQsIGNvbnRpbnVhdGlvbikgPT4ge1xuICAgICAgICBsZXQgc3VjY2VzcztcblxuICAgICAgICBjb25zdCBzdGF0ZW1lbnQgPSBzdGF0ZW1lbnRGcm9tU3RhdGVtZW50Tm9kZShzdGF0ZW1lbnROb2RlLCBjb250ZXh0KTtcblxuICAgICAgICBkZXNjZW5kKChjb250ZXh0KSA9PiB7XG4gICAgICAgICAgY29uc3Qgc3RhdGVtZW50VmFsaWRhdGVzID0gc3RhdGVtZW50LnZhbGlkYXRlKGNvbnRleHQsIChzdGF0ZW1lbnQpID0+IHtcbiAgICAgICAgICAgIGxldCB2YWxpZGF0ZXM7XG5cbiAgICAgICAgICAgIHZhbGlkYXRlcyA9IGNvbnRpbnVhdGlvbihzdWNjZXNzKTtcblxuICAgICAgICAgICAgcmV0dXJuIHZhbGlkYXRlcztcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIGlmIChzdGF0ZW1lbnRWYWxpZGF0ZXMpIHtcbiAgICAgICAgICAgIHN1Y2Nlc3MgPSB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSwgY29udGV4dCk7XG5cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfSxcbiAgICB7XG4gICAgICBub2RlUXVlcnk6IHRlcm1Ob2RlUXVlcnksXG4gICAgICBydW46ICh0ZXJtTm9kZSwgY29udGV4dCwgY29udGludWF0aW9uKSA9PiB7XG4gICAgICAgIGxldCBzdWNjZXNzID0gZmFsc2U7XG5cbiAgICAgICAgY29uc3QgdGVybSA9IHRlcm1Gcm9tVGVybU5vZGUodGVybU5vZGUsIGNvbnRleHQpLFxuICAgICAgICAgICAgICB0ZXJtVmFsaWRhdGVzID0gdGVybS52YWxpZGF0ZShjb250ZXh0LCAodGVybSwgY29udGV4dCkgPT4ge1xuICAgICAgICAgICAgICAgIGxldCB2YWxpZGF0ZXM7XG5cbiAgICAgICAgICAgICAgICB2YWxpZGF0ZXMgPSBjb250aW51YXRpb24oY29udGV4dCk7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gdmFsaWRhdGVzO1xuICAgICAgICAgICAgICB9KTtcblxuICAgICAgICBpZiAodGVybVZhbGlkYXRlcykge1xuICAgICAgICAgIHN1Y2Nlc3MgPSB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHN1Y2Nlc3M7XG4gICAgICB9XG4gICAgfSxcbiAgICB7XG4gICAgICBub2RlUXVlcnk6IHR5cGVOb2RlUXVlcnksXG4gICAgICBydW46ICh0eXBlTm9kZSwgY29udGV4dCwgY29udGludWF0aW9uKSA9PiB7XG4gICAgICAgIGxldCBzdWNjZXNzID0gZmFsc2U7XG5cbiAgICAgICAgY29uc3Qgbm9taW5hbFR5cGVOYW1lID0gdHlwZU5vZGUuZ2V0Tm9taW5hbFR5cGVOYW1lKCksXG4gICAgICAgICAgICAgIHR5cGVQcmVzZW50ID0gY29udGV4dC5pc1R5cGVQcmVzZW50QnlOb21pbmFsVHlwZU5hbWUobm9taW5hbFR5cGVOYW1lKTtcblxuICAgICAgICBpZiAodHlwZVByZXNlbnQpIHtcbiAgICAgICAgICBzdWNjZXNzID0gY29udGludWF0aW9uKGNvbnRleHQpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHN1Y2Nlc3M7XG4gICAgICB9XG4gICAgfVxuICBdO1xufVxuXG5jb25zdCB2YWxpZGF0ZVRlcm1Bc1Byb3BlcnR5UGFzcyA9IG5ldyBWYWxpZGF0ZVRlcm1Bc1Byb3BlcnR5UGFzcygpLFxuICAgICAgdmFsaWRhdGVUZXJtQXNHZW5lcmF0b3JQYXNzID0gbmV3IFZhbGlkYXRlVGVybUFzR2VuZXJhdG9yUGFzcygpLFxuICAgICAgdmFsaWRhdGVUZXJtQXNDb25zdHJ1Y3RvclBhc3MgPSBuZXcgVmFsaWRhdGVUZXJtQXNDb25zdHJ1Y3RvclBhc3MoKSxcbiAgICAgIHZhbGlkYXRlU3RhdGVtZW50QXNDb21iaW5hdG9yUGFzcyA9IG5ldyBWYWxpZGF0ZVN0YXRlbWVudEFzQ29tYmluYXRvclBhc3MoKTtcblxuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlVGVybUFzUHJvcGVydHkodGVybSwgY29udGV4dCwgY29udGludWF0aW9uKSB7XG4gIGNvbnN0IHRlcm1Ob2RlID0gdGVybS5nZXROb2RlKCksXG4gICAgICAgIHN1Y2Nlc3MgPSB2YWxpZGF0ZVRlcm1Bc1Byb3BlcnR5UGFzcy5ydW4odGVybU5vZGUsIGNvbnRleHQsIGNvbnRpbnVhdGlvbiksXG4gICAgICAgIHRlcm1WYWxpZGF0ZXNBc1Byb3BlcnR5ID0gc3VjY2VzczsgIC8vL1xuXG4gIHJldHVybiB0ZXJtVmFsaWRhdGVzQXNQcm9wZXJ0eTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlVGVybUFzR2VuZXJhdG9yKHRlcm0sIGNvbnRleHQsIGNvbnRpbnVhdGlvbikge1xuICBjb25zdCB0ZXJtTm9kZSA9IHRlcm0uZ2V0Tm9kZSgpLFxuICAgICAgICBzdWNjZXNzID0gdmFsaWRhdGVUZXJtQXNHZW5lcmF0b3JQYXNzLnJ1bih0ZXJtTm9kZSwgY29udGV4dCwgY29udGludWF0aW9uKSxcbiAgICAgICAgdGVybVZhbGlkYXRlc0FzR2VuZXJhdG9yID0gc3VjY2VzczsgLy8vXG5cbiAgcmV0dXJuIHRlcm1WYWxpZGF0ZXNBc0dlbmVyYXRvcjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlVGVybUFzQ29uc3RydWN0b3IodGVybSwgY29udGV4dCwgY29udGludWF0aW9uKSB7XG4gIGNvbnN0IHRlcm1Ob2RlID0gdGVybS5nZXROb2RlKCksXG4gICAgICAgIHN1Y2Nlc3MgPSB2YWxpZGF0ZVRlcm1Bc0NvbnN0cnVjdG9yUGFzcy5ydW4odGVybU5vZGUsIGNvbnRleHQsIGNvbnRpbnVhdGlvbiksXG4gICAgICAgIHRlcm1WYWxpZGF0ZXNBc0NvbnN0cnVjdG9yID0gc3VjY2VzczsgLy8vXG5cbiAgcmV0dXJuIHRlcm1WYWxpZGF0ZXNBc0NvbnN0cnVjdG9yO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVTdGF0ZW1lbnRBc0NvbWJpbmF0b3Ioc3RhdGVtZW50LCBjb250ZXh0LCBjb250aW51YXRpb24pIHtcbiAgY29uc3Qgc3RhdGVtZW50Tm9kZSA9IHN0YXRlbWVudC5nZXROb2RlKCksXG4gICAgICAgIHN1Y2Nlc3MgPSB2YWxpZGF0ZVN0YXRlbWVudEFzQ29tYmluYXRvclBhc3MucnVuKHN0YXRlbWVudE5vZGUsIGNvbnRleHQsIGNvbnRpbnVhdGlvbiksXG4gICAgICAgIHN0YXRlbWVudFZhbGlkYXRlc0FzQ29tYmluYXRvciA9IHN1Y2Nlc3M7IC8vL1xuXG4gIHJldHVybiBzdGF0ZW1lbnRWYWxpZGF0ZXNBc0NvbWJpbmF0b3I7XG59XG4iXSwibmFtZXMiOlsidmFsaWRhdGVTdGF0ZW1lbnRBc0NvbWJpbmF0b3IiLCJ2YWxpZGF0ZVRlcm1Bc0NvbnN0cnVjdG9yIiwidmFsaWRhdGVUZXJtQXNHZW5lcmF0b3IiLCJ2YWxpZGF0ZVRlcm1Bc1Byb3BlcnR5Iiwibm9kZVF1ZXJ5IiwicXVlcnlVdGlsaXRpZXMiLCJ0ZXJtTm9kZVF1ZXJ5IiwidHlwZU5vZGVRdWVyeSIsInN0YXRlbWVudE5vZGVRdWVyeSIsIlZhbGlkYXRlVGVybUFzUHJvcGVydHlQYXNzIiwiQ29udGludWF0aW9uUGFzcyIsInJ1biIsInRlcm1Ob2RlIiwiY29udGV4dCIsImNvbnRpbnVhdGlvbiIsIm5vblRlcm1pbmFsTm9kZSIsImNoaWxkTm9kZXMiLCJnZXRDaGlsZE5vZGVzIiwiZGVzY2VuZGVkIiwiZGVzY2VuZCIsInN1Y2Nlc3MiLCJtYXBzIiwidGVybSIsInRlcm1Gcm9tVGVybU5vZGUiLCJ0ZXJtVmFsaWRhdGVzIiwidmFsaWRhdGUiLCJ2YWxpZGF0ZXMiLCJ0eXBlTm9kZSIsIm5vbWluYWxUeXBlTmFtZSIsImdldE5vbWluYWxUeXBlTmFtZSIsInR5cGVQcmVzZW50IiwiaXNUeXBlUHJlc2VudEJ5Tm9taW5hbFR5cGVOYW1lIiwib250ZXh0IiwiVmFsaWRhdGVUZXJtQXNHZW5lcmF0b3JQYXNzIiwiVmFsaWRhdGVUZXJtQXNDb25zdHJ1Y3RvclBhc3MiLCJWYWxpZGF0ZVN0YXRlbWVudEFzQ29tYmluYXRvclBhc3MiLCJzdGF0ZW1lbnROb2RlIiwic3RhdGVtZW50Iiwic3RhdGVtZW50RnJvbVN0YXRlbWVudE5vZGUiLCJzdGF0ZW1lbnRWYWxpZGF0ZXMiLCJ2YWxpZGF0ZVRlcm1Bc1Byb3BlcnR5UGFzcyIsInZhbGlkYXRlVGVybUFzR2VuZXJhdG9yUGFzcyIsInZhbGlkYXRlVGVybUFzQ29uc3RydWN0b3JQYXNzIiwidmFsaWRhdGVTdGF0ZW1lbnRBc0NvbWJpbmF0b3JQYXNzIiwiZ2V0Tm9kZSIsInRlcm1WYWxpZGF0ZXNBc1Byb3BlcnR5IiwidGVybVZhbGlkYXRlc0FzR2VuZXJhdG9yIiwidGVybVZhbGlkYXRlc0FzQ29uc3RydWN0b3IiLCJzdGF0ZW1lbnRWYWxpZGF0ZXNBc0NvbWJpbmF0b3IiXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7OztRQTRRZ0JBO2VBQUFBOztRQVJBQztlQUFBQTs7UUFSQUM7ZUFBQUE7O1FBUkFDO2VBQUFBOzs7NEJBbFBlO3FFQUVGO3lCQUVMO3lCQUNxQzs7Ozs7O0FBRTdELE1BQU0sRUFBRUMsU0FBUyxFQUFFLEdBQUdDLDBCQUFjO0FBRXBDLE1BQU1DLGdCQUFnQkYsVUFBVSxVQUMxQkcsZ0JBQWdCSCxVQUFVLFVBQzFCSSxxQkFBcUJKLFVBQVU7QUFFckMsTUFBTUssbUNBQW1D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
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "occam-nominal",
3
3
  "author": "James Smith",
4
- "version": "1.0.382",
4
+ "version": "1.0.384",
5
5
  "license": "MIT, Anti-996",
6
6
  "homepage": "https://github.com/djalbat/occam-nominal",
7
7
  "description": "Occam's Nominal language.",
@@ -11,16 +11,16 @@
11
11
  },
12
12
  "dependencies": {
13
13
  "necessary": "^17.6.3",
14
- "occam-furtle": "^3.0.430",
14
+ "occam-furtle": "^3.0.431",
15
15
  "occam-grammar-utilities": "^8.1.22",
16
- "occam-languages": "^2.2.45",
16
+ "occam-languages": "^2.2.46",
17
17
  "occam-query": "^4.1.203"
18
18
  },
19
19
  "devDependencies": {
20
20
  "@swc/core": "1.13.20",
21
21
  "decaf-cli": "^1.0.37",
22
- "occam-model": "^1.0.565",
23
- "occam-server": "^7.0.65",
22
+ "occam-model": "^1.0.566",
23
+ "occam-server": "^7.0.66",
24
24
  "watchful-cli": "^1.7.102"
25
25
  },
26
26
  "scripts": {
@@ -128,7 +128,7 @@ export default define(class Generator extends Element {
128
128
  termValidates = true;
129
129
  }
130
130
  } else {
131
- const termValidatesAsGenerator = await validateTermAsGenerator(this.term, context);
131
+ const termValidatesAsGenerator = validateTermAsGenerator(this.term, context);
132
132
 
133
133
  if (termValidatesAsGenerator) {
134
134
  termValidates = true;
@@ -89,7 +89,7 @@ export default define(class Property extends Element {
89
89
 
90
90
  context.trace(`Validating the '${propertyString}' property's term...`);
91
91
 
92
- const termValidatesAsProperty = await validateTermAsProperty(this.term, context);
92
+ const termValidatesAsProperty = validateTermAsProperty(this.term, context);
93
93
 
94
94
  if (termValidatesAsProperty) {
95
95
  termValidates = true;
@@ -125,7 +125,7 @@ export default define(class Signature extends Element {
125
125
  context = temporaryContext; ///
126
126
 
127
127
  if (validates) {
128
- signature = this; ///
128
+ const signature = this; ///
129
129
 
130
130
  context.addSignature(signature);
131
131
  }
@@ -16,26 +16,33 @@ const termNodeQuery = nodeQuery("/term"),
16
16
  class ValidateTermAsPropertyPass extends ContinuationPass {
17
17
  run(termNode, context, continuation) {
18
18
  const nonTerminalNode = termNode, ///
19
- childNodes = nonTerminalNode.getChildNodes();
19
+ childNodes = nonTerminalNode.getChildNodes(),
20
+ descended = this.descend(childNodes, context, continuation),
21
+ success = descended; ///
20
22
 
21
- return this.descend(childNodes, context, continuation);
23
+ return success;
22
24
  }
23
25
 
24
26
  static maps = [
25
27
  {
26
28
  nodeQuery: termNodeQuery,
27
29
  run: (termNode, context, continuation) => {
28
- const term = termFromTermNode(termNode, context);
30
+ let success = false;
29
31
 
30
- return term.validate(context, (term, context) => {
31
- let success = false;
32
+ const term = termFromTermNode(termNode, context),
33
+ termValidates = term.validate(context, (term, context) => {
34
+ let validates;
32
35
 
33
- if (term !== null) {
34
- success = true;
35
- }
36
+ validates = continuation(context);
37
+
38
+ return validates;
39
+ });
40
+
41
+ if (termValidates) {
42
+ success = true;
43
+ }
36
44
 
37
- return continuation(success);
38
- });
45
+ return success;
39
46
  }
40
47
  },
41
48
  {
@@ -47,10 +54,10 @@ class ValidateTermAsPropertyPass extends ContinuationPass {
47
54
  typePresent = context.isTypePresentByNominalTypeName(nominalTypeName);
48
55
 
49
56
  if (typePresent) {
50
- success = true;
57
+ success = continuation( ontext);
51
58
  }
52
59
 
53
- return continuation(success);
60
+ return success;
54
61
  }
55
62
  }
56
63
  ];
@@ -59,26 +66,33 @@ class ValidateTermAsPropertyPass extends ContinuationPass {
59
66
  class ValidateTermAsGeneratorPass extends ContinuationPass {
60
67
  run(termNode, context, continuation) {
61
68
  const nonTerminalNode = termNode, ///
62
- childNodes = nonTerminalNode.getChildNodes();
69
+ childNodes = nonTerminalNode.getChildNodes(),
70
+ descended = this.descend(childNodes, context, continuation),
71
+ success = descended; ///
63
72
 
64
- return this.descend(childNodes, context, continuation);
73
+ return success;
65
74
  }
66
75
 
67
76
  static maps = [
68
77
  {
69
78
  nodeQuery: termNodeQuery,
70
79
  run: (termNode, context, continuation) => {
71
- const term = termFromTermNode(termNode, context);
80
+ let success = false;
72
81
 
73
- return term.validate(context, (term, context) => {
74
- let success = false;
82
+ const term = termFromTermNode(termNode, context),
83
+ termValidates = term.validate(context, (term, context) => {
84
+ let validates;
75
85
 
76
- if (term !== null) {
77
- success = true;
78
- }
86
+ validates = continuation(context);
87
+
88
+ return validates;
89
+ });
90
+
91
+ if (termValidates) {
92
+ success = true;
93
+ }
79
94
 
80
- return continuation(success);
81
- });
95
+ return success;
82
96
  }
83
97
  },
84
98
  {
@@ -90,10 +104,10 @@ class ValidateTermAsGeneratorPass extends ContinuationPass {
90
104
  typePresent = context.isTypePresentByNominalTypeName(nominalTypeName);
91
105
 
92
106
  if (typePresent) {
93
- success = true;
107
+ success = continuation(context);
94
108
  }
95
109
 
96
- return continuation(success);
110
+ return success;
97
111
  }
98
112
  }
99
113
  ];
@@ -102,26 +116,33 @@ class ValidateTermAsGeneratorPass extends ContinuationPass {
102
116
  class ValidateTermAsConstructorPass extends ContinuationPass {
103
117
  run(termNode, context, continuation) {
104
118
  const nonTerminalNode = termNode, ///
105
- childNodes = nonTerminalNode.getChildNodes();
119
+ childNodes = nonTerminalNode.getChildNodes(),
120
+ descended = this.descend(childNodes, context, continuation),
121
+ success = descended; ///
106
122
 
107
- return this.descend(childNodes, context, continuation);
123
+ return success;
108
124
  }
109
125
 
110
126
  static maps = [
111
127
  {
112
128
  nodeQuery: termNodeQuery,
113
129
  run: (termNode, context, continuation) => {
114
- const term = termFromTermNode(termNode, context);
130
+ let success = false;
115
131
 
116
- return term.validate(context, (term, context) => {
117
- let success = false;
132
+ const term = termFromTermNode(termNode, context),
133
+ termValidates = term.validate(context, (term, context) => {
134
+ let validates;
118
135
 
119
- if (term !== null) {
120
- success = true;
121
- }
136
+ validates = continuation(context);
122
137
 
123
- return continuation(success);
124
- });
138
+ return validates;
139
+ });
140
+
141
+ if (termValidates) {
142
+ success = true;
143
+ }
144
+
145
+ return success;
125
146
  }
126
147
  },
127
148
  {
@@ -133,10 +154,10 @@ class ValidateTermAsConstructorPass extends ContinuationPass {
133
154
  typePresent = context.isTypePresentByNominalTypeName(nominalTypeName);
134
155
 
135
156
  if (typePresent) {
136
- success = true;
157
+ success = continuation(context);
137
158
  }
138
159
 
139
- return continuation(success);
160
+ return success;
140
161
  }
141
162
  }
142
163
  ];
@@ -145,44 +166,57 @@ class ValidateTermAsConstructorPass extends ContinuationPass {
145
166
  class ValidateStatementAsCombinatorPass extends ContinuationPass {
146
167
  run(statementNode, context, continuation) {
147
168
  const nonTerminalNode = statementNode, ///
148
- childNodes = nonTerminalNode.getChildNodes();
169
+ childNodes = nonTerminalNode.getChildNodes(),
170
+ descended = this.descend(childNodes, context, continuation),
171
+ success = descended; ///
149
172
 
150
- return this.descend(childNodes, context, continuation);
173
+ return success;
151
174
  }
152
175
 
153
176
  static maps = [
154
177
  {
155
178
  nodeQuery: statementNodeQuery,
156
179
  run: (statementNode, context, continuation) => {
180
+ let success;
181
+
157
182
  const statement = statementFromStatementNode(statementNode, context);
158
183
 
159
- return descend((context) => {
160
- return statement.validate(context, (statement) => {
161
- let success = false;
184
+ descend((context) => {
185
+ const statementValidates = statement.validate(context, (statement) => {
186
+ let validates;
162
187
 
163
- if (statement !== null) {
164
- success = true;
165
- }
188
+ validates = continuation(success);
166
189
 
167
- return continuation(success);
190
+ return validates;
168
191
  });
192
+
193
+ if (statementValidates) {
194
+ success = true;
195
+ }
169
196
  }, context);
197
+
198
+ return true;
170
199
  }
171
200
  },
172
201
  {
173
202
  nodeQuery: termNodeQuery,
174
203
  run: (termNode, context, continuation) => {
175
- const term = termFromTermNode(termNode, context);
204
+ let success = false;
176
205
 
177
- return term.validate(context, (term, context) => {
178
- let success = false;
206
+ const term = termFromTermNode(termNode, context),
207
+ termValidates = term.validate(context, (term, context) => {
208
+ let validates;
179
209
 
180
- if (term !== null) {
181
- success = true;
182
- }
210
+ validates = continuation(context);
211
+
212
+ return validates;
213
+ });
183
214
 
184
- return continuation(success);
185
- });
215
+ if (termValidates) {
216
+ success = true;
217
+ }
218
+
219
+ return success;
186
220
  }
187
221
  },
188
222
  {
@@ -194,10 +228,10 @@ class ValidateStatementAsCombinatorPass extends ContinuationPass {
194
228
  typePresent = context.isTypePresentByNominalTypeName(nominalTypeName);
195
229
 
196
230
  if (typePresent) {
197
- success = true;
231
+ success = continuation(context);
198
232
  }
199
233
 
200
- return continuation(success);
234
+ return success;
201
235
  }
202
236
  }
203
237
  ];
@@ -209,25 +243,33 @@ const validateTermAsPropertyPass = new ValidateTermAsPropertyPass(),
209
243
  validateStatementAsCombinatorPass = new ValidateStatementAsCombinatorPass();
210
244
 
211
245
  export function validateTermAsProperty(term, context, continuation) {
212
- const termNode = term.getNode();
246
+ const termNode = term.getNode(),
247
+ success = validateTermAsPropertyPass.run(termNode, context, continuation),
248
+ termValidatesAsProperty = success; ///
213
249
 
214
- return validateTermAsPropertyPass.run(termNode, context, continuation);
250
+ return termValidatesAsProperty;
215
251
  }
216
252
 
217
253
  export function validateTermAsGenerator(term, context, continuation) {
218
- const termNode = term.getNode();
254
+ const termNode = term.getNode(),
255
+ success = validateTermAsGeneratorPass.run(termNode, context, continuation),
256
+ termValidatesAsGenerator = success; ///
219
257
 
220
- return validateTermAsGeneratorPass.run(termNode, context, continuation);
258
+ return termValidatesAsGenerator;
221
259
  }
222
260
 
223
261
  export function validateTermAsConstructor(term, context, continuation) {
224
- const termNode = term.getNode();
262
+ const termNode = term.getNode(),
263
+ success = validateTermAsConstructorPass.run(termNode, context, continuation),
264
+ termValidatesAsConstructor = success; ///
225
265
 
226
- return validateTermAsConstructorPass.run(termNode, context, continuation);
266
+ return termValidatesAsConstructor;
227
267
  }
228
268
 
229
269
  export function validateStatementAsCombinator(statement, context, continuation) {
230
- const statementNode = statement.getNode();
270
+ const statementNode = statement.getNode(),
271
+ success = validateStatementAsCombinatorPass.run(statementNode, context, continuation),
272
+ statementValidatesAsCombinator = success; ///
231
273
 
232
- return validateStatementAsCombinatorPass.run(statementNode, context, continuation);
274
+ return statementValidatesAsCombinator;
233
275
  }