occam-nominal 1.0.520 → 1.0.522
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/context/temenic.js +3 -2
- package/lib/element/assertion/schema.js +50 -60
- package/lib/element/claim/axiom.js +1 -1
- package/lib/element/constraint.js +21 -27
- package/lib/element/frame.js +57 -111
- package/lib/element/hypothesis.js +3 -1
- package/lib/element/link.js +8 -15
- package/lib/element/parameter.js +3 -9
- package/lib/element/schema.js +16 -16
- package/lib/element/substitution/frame.js +2 -2
- package/lib/node/frame.js +7 -7
- package/lib/process/unification.js +4 -4
- package/lib/utilities/context.js +22 -4
- package/lib/utilities/element.js +14 -14
- package/package.json +5 -5
- package/src/context/temenic.js +3 -1
- package/src/element/assertion/schema.js +53 -78
- package/src/element/claim/axiom.js +1 -1
- package/src/element/constraint.js +21 -35
- package/src/element/frame.js +75 -156
- package/src/element/hypothesis.js +4 -0
- package/src/element/link.js +10 -18
- package/src/element/parameter.js +3 -14
- package/src/element/schema.js +15 -15
- package/src/element/substitution/frame.js +1 -2
- package/src/node/frame.js +10 -10
- package/src/process/unification.js +3 -4
- package/src/utilities/context.js +26 -4
- package/src/utilities/element.js +15 -15
package/lib/element/link.js
CHANGED
|
@@ -86,25 +86,18 @@ const _default = (0, _elements.define)(class Link extends _occamlanguages.Elemen
|
|
|
86
86
|
const linkString = this.getString(); ///
|
|
87
87
|
context.trace(`Validating the '${linkString}' link's metavariable...'`);
|
|
88
88
|
return this.metavariable.validate(state, context, (metavariable, context, back)=>{
|
|
89
|
-
let validates = false;
|
|
90
89
|
const metaType = metavariable.getMetaType();
|
|
91
|
-
if (metaType
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
} else {
|
|
98
|
-
const metaTypeString = metaType.getString(), metavariableString = metavariable.getString(), linkMetaTypeString = linkMetaType.getString();
|
|
99
|
-
context.debug(`The '${linkString}' link's '${metavariableString}' metavariable's '${metaTypeString}' meta-type should be the '${linkMetaTypeString}' meta-type.`);
|
|
90
|
+
if (metaType !== null) {
|
|
91
|
+
const referenceMetaTypeName = _metaTypeNames.REFERENCE_META_TYPE_NAME, referenceMetaType = context.findMetaTypeByMetaTypeName(referenceMetaTypeName), metavariableMetaTypeEqualToReferenceMetaType = metavariable.isMetaTypeEqualTo(referenceMetaType);
|
|
92
|
+
if (!metavariableMetaTypeEqualToReferenceMetaType) {
|
|
93
|
+
const metaTypeString = metaType.getString(), metavariableString = metavariable.getString(), referenceMetaTypeString = referenceMetaType.getString();
|
|
94
|
+
context.debug(`The '${linkString}' link's '${metavariableString}' metavariable's '${metaTypeString}' meta-type should be the '${referenceMetaTypeString}' meta-type.`);
|
|
95
|
+
return back();
|
|
100
96
|
}
|
|
101
97
|
}
|
|
102
|
-
if (!validates) {
|
|
103
|
-
return back();
|
|
104
|
-
}
|
|
105
98
|
this.metavariable = metavariable;
|
|
106
99
|
context.debug(`...validated the '${linkString}' link's metavariable.'`);
|
|
107
|
-
return forward(context, back);
|
|
100
|
+
return forward(state, context, back);
|
|
108
101
|
}, back);
|
|
109
102
|
}
|
|
110
103
|
unifyLabel(label, context, forward, back) {
|
|
@@ -171,4 +164,4 @@ const _default = (0, _elements.define)(class Link extends _occamlanguages.Elemen
|
|
|
171
164
|
}
|
|
172
165
|
});
|
|
173
166
|
|
|
174
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbGVtZW50L2xpbmsuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IEVsZW1lbnQsIGJyZWFrUG9pbnRVdGlsaXRpZXMsIGNvbnRpbnVhdGlvblV0aWxpdGllcyB9IGZyb20gXCJvY2NhbS1sYW5ndWFnZXNcIjtcblxuaW1wb3J0IHsgZGVmaW5lIH0gZnJvbSBcIi4uL2VsZW1lbnRzXCI7XG5pbXBvcnQgeyBpbnN0YW50aWF0ZUxpbmsgfSBmcm9tIFwiLi4vcHJvY2Vzcy9pbnN0YW50aWF0ZVwiO1xuaW1wb3J0IHsgUkVGRVJFTkNFX01FVEFfVFlQRV9OQU1FIH0gZnJvbSBcIi4uL21ldGFUeXBlTmFtZXNcIjtcbmltcG9ydCB7IGxpbmtGcm9tTGlua05vZGUsIG1ldGF2YXJpYWJsZUZyb21MaW5rTm9kZSB9IGZyb20gXCIuLi91dGlsaXRpZXMvZWxlbWVudFwiO1xuaW1wb3J0IHsgam9pbiwgYWJsYXRlLCBhdHRlbXB0LCByZWNvbmNpbGUsIHNlcmlhbGlzZSwgdW5zZXJpYWxpc2UsIGluc3RhbnRpYXRlIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9jb250ZXh0XCI7XG5cbmNvbnN0IHsgYWxsIH0gPSBjb250aW51YXRpb25VdGlsaXRpZXMsXG4gICAgICB7IGJyZWFrUG9pbnRGcm9tSlNPTiwgYnJlYWtQb2ludFRvQnJlYWtQb2ludEpTT04gfSA9IGJyZWFrUG9pbnRVdGlsaXRpZXM7XG5cbmV4cG9ydCBkZWZhdWx0IGRlZmluZShjbGFzcyBMaW5rIGV4dGVuZHMgRWxlbWVudCB7XG4gIGNvbnN0cnVjdG9yKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgbWV0YXZhcmlhYmxlKSB7XG4gICAgc3VwZXIoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50KTtcblxuICAgIHRoaXMubWV0YXZhcmlhYmxlID0gbWV0YXZhcmlhYmxlO1xuICB9XG5cbiAgZ2V0TWV0YXZhcmlhYmxlKCkge1xuICAgIHJldHVybiB0aGlzLm1ldGF2YXJpYWJsZTtcbiAgfVxuXG4gIGdldExpbmtOb2RlKCkge1xuICAgIGNvbnN0IG5vZGUgPSB0aGlzLmdldE5vZGUoKSxcbiAgICAgICAgICBsaW5rTm9kZSA9IG5vZGU7IC8vL1xuXG4gICAgcmV0dXJuIGxpbmtOb2RlO1xuICB9XG5cbiAgZ2V0TWV0YXZhcmlhYmxlTm9kZSgpIHtcbiAgICBjb25zdCBtZXRhdmFyaWFibGVOb2RlID0gdGhpcy5tZXRhdmFyaWFibGUuZ2V0Tm9kZSgpO1xuXG4gICAgcmV0dXJuIG1ldGF2YXJpYWJsZU5vZGU7XG4gIH1cblxuICBnZXRNZXRhVHlwZSgpIHsgcmV0dXJuIHRoaXMubWV0YXZhcmlhYmxlLmdldE1ldGFUeXBlKCk7IH1cblxuICBpc0VxdWFsVG8obGluaykge1xuICAgIGNvbnN0IGxpbmtOb2RlID0gbGluay5nZXROb2RlKCksXG4gICAgICAgICAgbGlua05vZGVNYXRjaGVzID0gdGhpcy5tYXRjaExpbmtOb2RlKGxpbmtOb2RlKSxcbiAgICAgICAgICBlcXVhbFRvID0gbGlua05vZGVNYXRjaGVzOyAgLy8vXG5cbiAgICByZXR1cm4gZXF1YWxUbztcbiAgfVxuXG4gIG1hdGNoTGlua05vZGUobGlua05vZGUpIHtcbiAgICBjb25zdCBub2RlID0gbGlua05vZGUsIC8vL1xuICAgICAgICAgIG5vZGVNYXRjaGVzID0gdGhpcy5tYXRjaE5vZGUobm9kZSksXG4gICAgICAgICAgbGlua05vZGVNYXRjaGVzID0gbm9kZU1hdGNoZXM7IC8vL1xuXG4gICAgcmV0dXJuIGxpbmtOb2RlTWF0Y2hlcztcbiAgfVxuXG4gIG1hdGNoTWV0YXZhcmlhYmxlTm9kZShtZXRhdmFyaWFibGVOb2RlKSB7IHJldHVybiB0aGlzLm1ldGF2YXJpYWJsZS5tYXRjaE1ldGF2YXJpYWJsZU5vZGUobWV0YXZhcmlhYmxlTm9kZSk7IH1cblxuICBmaW5kTGluayhjb250ZXh0KSB7XG4gICAgY29uc3QgbGlua05vZGUgPSB0aGlzLmdldExpbmtOb2RlKCksXG4gICAgICAgICAgbGluayA9IGNvbnRleHQuZmluZExpbmtCeUxpbmtOb2RlKGxpbmtOb2RlKTtcblxuICAgIHJldHVybiBsaW5rO1xuICB9XG5cbiAgY29tcGFyZVBhcmFtZXRlcihwYXJhbWV0ZXIpIHtcbiAgICBsZXQgY29tcGFyZXNUb1BhcmFtdGVyID0gZmFsc2U7XG5cbiAgICBjb25zdCBzaW5ndWxhciA9IHRoaXMuaXNTaW5ndWxhcigpO1xuXG4gICAgaWYgKHNpbmd1bGFyKSB7XG4gICAgICBjb25zdCBwYXJhbWV0ZXJOYW1lID0gcGFyYW1ldGVyLmdldE5hbWUoKTtcblxuICAgICAgaWYgKHBhcmFtZXRlck5hbWUgIT09IG51bGwpIHtcbiAgICAgICAgY29uc3QgbWV0YXZhcmlhYmxlTmFtZSA9IHRoaXMuZ2V0TWV0YXZhcmlhYmxlTmFtZSgpO1xuXG4gICAgICAgIGlmIChwYXJhbWV0ZXJOYW1lID09PSBtZXRhdmFyaWFibGVOYW1lKSB7XG4gICAgICAgICAgY29tcGFyZXNUb1BhcmFtdGVyID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBjb21wYXJlc1RvUGFyYW10ZXI7XG4gIH1cblxuICB2YWxpZGF0ZShzdGF0ZSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGxldCBsaW5rO1xuXG4gICAgY29uc3QgbGlua1N0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7IC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7bGlua1N0cmluZ30nIGxpbmsuLi5gKTtcblxuICAgIGxpbmsgPSB0aGlzLmZpbmRMaW5rKGNvbnRleHQpO1xuXG4gICAgaWYgKGxpbmsgIT09IG51bGwpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnRoZSAnJHtsaW5rU3RyaW5nfScgbGluayBpcyBhbHJlYWR5IHByZXNlbnQuYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKGxpbmssIGNvbnRleHQsIGJhY2spO1xuICAgIH1cblxuICAgIGxpbmsgPSB0aGlzOyAvLy9cblxuICAgIGNvbnN0IHZhbGlkYXRlTWV0YXZhcmlhYmxlID0gdGhpcy52YWxpZGF0ZU1ldGF2YXJpYWJsZS5iaW5kKHRoaXMpO1xuXG4gICAgcmV0dXJuIGFsbChbXG4gICAgICB2YWxpZGF0ZU1ldGF2YXJpYWJsZVxuICAgIF0sIHN0YXRlLCBjb250ZXh0LCAoc3RhdGUsIGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIGNvbnRleHQuYWRkTGluayhsaW5rKTtcblxuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHtsaW5rU3RyaW5nfScgbGluay5gKTtcblxuICAgICAgcmV0dXJuIGZvcndhcmQobGluaywgY29udGV4dCwgYmFjayk7XG4gICAgfSwgYmFjayk7XG4gIH1cblxuICB2YWxpZGF0ZU1ldGF2YXJpYWJsZShzdGF0ZSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IGxpbmtTdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke2xpbmtTdHJpbmd9JyBsaW5rJ3MgbWV0YXZhcmlhYmxlLi4uJ2ApO1xuXG4gICAgcmV0dXJuIHRoaXMubWV0YXZhcmlhYmxlLnZhbGlkYXRlKHN0YXRlLCBjb250ZXh0LCAobWV0YXZhcmlhYmxlLCBjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICBsZXQgdmFsaWRhdGVzID0gZmFsc2U7XG5cbiAgICAgIGNvbnN0IG1ldGFUeXBlID0gbWV0YXZhcmlhYmxlLmdldE1ldGFUeXBlKCk7XG5cbiAgICAgIGlmIChtZXRhVHlwZSA9PT0gbnVsbCkge1xuICAgICAgICB2YWxpZGF0ZXMgPSB0cnVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgbGlua01ldGFUeXBlTmFtZSA9IFJFRkVSRU5DRV9NRVRBX1RZUEVfTkFNRSxcbiAgICAgICAgICAgICAgbGlua01ldGFUeXBlID0gY29udGV4dC5maW5kTWV0YVR5cGVCeU1ldGFUeXBlTmFtZShsaW5rTWV0YVR5cGVOYW1lKSxcbiAgICAgICAgICAgICAgbWV0YXZhcmlhYmxlTWV0YVR5cGVFcXVhbFRvTGlua01ldGFUeXBlID0gbWV0YXZhcmlhYmxlLmlzTWV0YVR5cGVFcXVhbFRvKGxpbmtNZXRhVHlwZSk7XG5cbiAgICAgICAgaWYgKG1ldGF2YXJpYWJsZU1ldGFUeXBlRXF1YWxUb0xpbmtNZXRhVHlwZSkge1xuICAgICAgICAgIHZhbGlkYXRlcyA9IHRydWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3QgbWV0YVR5cGVTdHJpbmcgPSBtZXRhVHlwZS5nZXRTdHJpbmcoKSxcbiAgICAgICAgICAgICAgICBtZXRhdmFyaWFibGVTdHJpbmcgPSBtZXRhdmFyaWFibGUuZ2V0U3RyaW5nKCksXG4gICAgICAgICAgICAgICAgbGlua01ldGFUeXBlU3RyaW5nID0gbGlua01ldGFUeXBlLmdldFN0cmluZygpO1xuXG4gICAgICAgICAgY29udGV4dC5kZWJ1ZyhgVGhlICcke2xpbmtTdHJpbmd9JyBsaW5rJ3MgJyR7bWV0YXZhcmlhYmxlU3RyaW5nfScgbWV0YXZhcmlhYmxlJ3MgJyR7bWV0YVR5cGVTdHJpbmd9JyBtZXRhLXR5cGUgc2hvdWxkIGJlIHRoZSAnJHtsaW5rTWV0YVR5cGVTdHJpbmd9JyBtZXRhLXR5cGUuYCk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKCF2YWxpZGF0ZXMpIHtcbiAgICAgICAgcmV0dXJuIGJhY2soKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5tZXRhdmFyaWFibGUgPSBtZXRhdmFyaWFibGU7XG5cbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7bGlua1N0cmluZ30nIGxpbmsncyBtZXRhdmFyaWFibGUuJ2ApO1xuXG4gICAgICByZXR1cm4gZm9yd2FyZChjb250ZXh0LCBiYWNrKTtcbiAgICB9LCBiYWNrKTtcbiAgfVxuXG4gIHVuaWZ5TGFiZWwobGFiZWwsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBsYWJlbFN0cmluZyA9IGxhYmVsLmdldFN0cmluZygpLFxuICAgICAgICAgIGxpbmtTdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHtsYWJlbFN0cmluZ30nIGxhYmVsIHdpdGggdGhlICcke2xpbmtTdHJpbmd9JyBsaW5rLi4uYCk7XG5cbiAgICBjb25zdCBtZXRhdmFyaWFibGUgPSBsYWJlbC5nZXRNZXRhdmFyaWFibGUoKSxcbiAgICAgICAgICBsYWJlbENvbnRleHQgPSBsYWJlbC5nZXRDb250ZXh0KCksXG4gICAgICAgICAgZ2VuZXJhbENvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSwgLy8vXG4gICAgICAgICAgc3BlY2lmaWNDb250ZXh0ID0gbGFiZWxDb250ZXh0OyAgLy8vXG5cbiAgICByZXR1cm4gam9pbigoc3BlY2lmaWNDb250ZXh0KSA9PiB7XG4gICAgICByZXR1cm4gcmVjb25jaWxlKChzcGVjaWZpY0NvbnRleHQpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMudW5pZnlNZXRhdmFyaWFibGUobWV0YXZhcmlhYmxlLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCAobWV0YXZhcmlhYmxlVW5pZmllcykgPT4ge1xuICAgICAgICAgIGxldCBsYWJlbFVuaWZpZXMgPSBmYWxzZTtcblxuICAgICAgICAgIGlmIChtZXRhdmFyaWFibGVVbmlmaWVzKSB7XG4gICAgICAgICAgICBzcGVjaWZpY0NvbnRleHQuY29tbWl0KGNvbnRleHQpO1xuXG4gICAgICAgICAgICBsYWJlbFVuaWZpZXMgPSB0cnVlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChsYWJlbFVuaWZpZXMpIHtcbiAgICAgICAgICAgIGNvbnRleHQuZGVidWcoYC4uLnVuaWZpZWQgdGhlICcke2xhYmVsU3RyaW5nfScgbGFiZWwgd2l0aCB0aGUgJyR7bGlua1N0cmluZ30nIGxpbmsuYCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbihsYWJlbFVuaWZpZXMpO1xuICAgICAgICB9KTtcbiAgICAgIH0sIHNwZWNpZmljQ29udGV4dCk7XG4gICAgfSwgc3BlY2lmaWNDb250ZXh0LCBjb250ZXh0KTtcbiAgfVxuXG4gIHVuaWZ5TWV0YXZhcmlhYmxlKG1ldGF2YXJpYWJsZSwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IGNvbnRleHQgPSBzcGVjaWZpY0NvbnRleHQsICAvLy9cbiAgICAgICAgICBsaW5rU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKSwgLy8vXG4gICAgICAgICAgbWV0YXZhcmlhYmxlU3RyaW5nID0gbWV0YXZhcmlhYmxlLmdldFN0cmluZygpO1xuXG4gICAgY29udGV4dC50cmFjZShgVW5pZnlpbmcgdGhlICcke21ldGF2YXJpYWJsZVN0cmluZ30nIG1ldGF2YXJpYWJsZSB3aXRoIHRoZSAnJHtsaW5rU3RyaW5nfScgbGluay4uLmApO1xuXG4gICAgcmV0dXJuIHRoaXMubWV0YXZhcmlhYmxlLnVuaWZ5TWV0YXZhcmlhYmxlSW50cmluc2ljYWxseShtZXRhdmFyaWFibGUsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIChtZXRhdmFyaWFibGVVbmlmaWVzSW50cmluc2ljYWxseSkgPT4ge1xuICAgICAgbGV0IG1ldGF2YXJpYWJsZVVuaWZpZXMgPSBmYWxzZTtcblxuICAgICAgaWYgKG1ldGF2YXJpYWJsZVVuaWZpZXNJbnRyaW5zaWNhbGx5KSB7XG4gICAgICAgIG1ldGF2YXJpYWJsZVVuaWZpZXMgPSB0cnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAobWV0YXZhcmlhYmxlVW5pZmllcykge1xuICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi51bmlmaWVkIHRoZSAnJHttZXRhdmFyaWFibGVTdHJpbmd9JyBtZXRhdmFyaWFibGUgd2l0aCB0aGUgJyR7bGlua1N0cmluZ30nIGxpbmsuYCk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBjb250aW51YXRpb24obWV0YXZhcmlhYmxlVW5pZmllcyk7XG4gICAgfSk7XG4gIH1cblxuICB0b0pTT04oKSB7XG4gICAgbGV0IGpzb247XG5cbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCk7XG5cbiAgICBzZXJpYWxpc2UoKGNvbnRleHQpID0+IHtcbiAgICAgIGNvbnN0IHN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7XG5cbiAgICAgIGxldCBicmVha1BvaW50O1xuXG4gICAgICBicmVha1BvaW50ID0gdGhpcy5nZXRCcmVha1BvaW50KCk7XG5cbiAgICAgIGNvbnN0IGJyZWFrUG9pbnRKU09OID0gYnJlYWtQb2ludFRvQnJlYWtQb2ludEpTT04oYnJlYWtQb2ludCk7XG5cbiAgICAgIGJyZWFrUG9pbnQgPSBicmVha1BvaW50SlNPTjsgIC8vL1xuXG4gICAgICBqc29uID0ge1xuICAgICAgICBjb250ZXh0LFxuICAgICAgICBzdHJpbmcsXG4gICAgICAgIGJyZWFrUG9pbnRcbiAgICAgIH07XG4gICAgfSwgY29udGV4dCk7XG5cbiAgICByZXR1cm4ganNvbjtcbiAgfVxuXG4gIHN0YXRpYyBuYW1lID0gXCJMaW5rXCI7XG5cbiAgc3RhdGljIGZyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgICBsZXQgbGluaztcblxuICAgIGluc3RhbnRpYXRlKChjb250ZXh0KSA9PiB7XG4gICAgICB1bnNlcmlhbGlzZSgoanNvbiwgY29udGV4dCkgPT4ge1xuICAgICAgICBjb25zdCB7IHN0cmluZyB9ID0ganNvbixcbiAgICAgICAgICAgICAgbGlua05vZGUgPSBpbnN0YW50aWF0ZUxpbmsoc3RyaW5nLCBjb250ZXh0KSxcbiAgICAgICAgICAgICAgbm9kZSA9IGxpbmtOb2RlLCAgLy8vXG4gICAgICAgICAgICAgIGJyZWFrUG9pbnQgPSBicmVha1BvaW50RnJvbUpTT04oanNvbiksXG4gICAgICAgICAgICAgIG1ldGF2YXJpYWJsZSA9IG1ldGF2YXJpYWJsZUZyb21MaW5rTm9kZShsaW5rTm9kZSwgY29udGV4dCk7XG5cbiAgICAgICAgbGluayA9IG5ldyBMaW5rKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgbWV0YXZhcmlhYmxlKTtcbiAgICAgIH0sIGpzb24sIGNvbnRleHQpO1xuICAgIH0sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIGxpbms7XG4gIH1cbn0pO1xuIl0sIm5hbWVzIjpbImFsbCIsImNvbnRpbnVhdGlvblV0aWxpdGllcyIsImJyZWFrUG9pbnRGcm9tSlNPTiIsImJyZWFrUG9pbnRUb0JyZWFrUG9pbnRKU09OIiwiYnJlYWtQb2ludFV0aWxpdGllcyIsImRlZmluZSIsIkxpbmsiLCJFbGVtZW50IiwiY29udGV4dCIsInN0cmluZyIsIm5vZGUiLCJicmVha1BvaW50IiwibWV0YXZhcmlhYmxlIiwiZ2V0TWV0YXZhcmlhYmxlIiwiZ2V0TGlua05vZGUiLCJnZXROb2RlIiwibGlua05vZGUiLCJnZXRNZXRhdmFyaWFibGVOb2RlIiwibWV0YXZhcmlhYmxlTm9kZSIsImdldE1ldGFUeXBlIiwiaXNFcXVhbFRvIiwibGluayIsImxpbmtOb2RlTWF0Y2hlcyIsIm1hdGNoTGlua05vZGUiLCJlcXVhbFRvIiwibm9kZU1hdGNoZXMiLCJtYXRjaE5vZGUiLCJtYXRjaE1ldGF2YXJpYWJsZU5vZGUiLCJmaW5kTGluayIsImZpbmRMaW5rQnlMaW5rTm9kZSIsImNvbXBhcmVQYXJhbWV0ZXIiLCJwYXJhbWV0ZXIiLCJjb21wYXJlc1RvUGFyYW10ZXIiLCJzaW5ndWxhciIsImlzU2luZ3VsYXIiLCJwYXJhbWV0ZXJOYW1lIiwiZ2V0TmFtZSIsIm1ldGF2YXJpYWJsZU5hbWUiLCJnZXRNZXRhdmFyaWFibGVOYW1lIiwidmFsaWRhdGUiLCJzdGF0ZSIsImZvcndhcmQiLCJiYWNrIiwibGlua1N0cmluZyIsImdldFN0cmluZyIsInRyYWNlIiwiZGVidWciLCJ2YWxpZGF0ZU1ldGF2YXJpYWJsZSIsImJpbmQiLCJhZGRMaW5rIiwidmFsaWRhdGVzIiwibWV0YVR5cGUiLCJsaW5rTWV0YVR5cGVOYW1lIiwiUkVGRVJFTkNFX01FVEFfVFlQRV9OQU1FIiwibGlua01ldGFUeXBlIiwiZmluZE1ldGFUeXBlQnlNZXRhVHlwZU5hbWUiLCJtZXRhdmFyaWFibGVNZXRhVHlwZUVxdWFsVG9MaW5rTWV0YVR5cGUiLCJpc01ldGFUeXBlRXF1YWxUbyIsIm1ldGFUeXBlU3RyaW5nIiwibWV0YXZhcmlhYmxlU3RyaW5nIiwibGlua01ldGFUeXBlU3RyaW5nIiwidW5pZnlMYWJlbCIsImxhYmVsIiwibGFiZWxTdHJpbmciLCJsYWJlbENvbnRleHQiLCJnZXRDb250ZXh0IiwiZ2VuZXJhbENvbnRleHQiLCJzcGVjaWZpY0NvbnRleHQiLCJqb2luIiwicmVjb25jaWxlIiwidW5pZnlNZXRhdmFyaWFibGUiLCJtZXRhdmFyaWFibGVVbmlmaWVzIiwibGFiZWxVbmlmaWVzIiwiY29tbWl0IiwiY29udGludWF0aW9uIiwidW5pZnlNZXRhdmFyaWFibGVJbnRyaW5zaWNhbGx5IiwibWV0YXZhcmlhYmxlVW5pZmllc0ludHJpbnNpY2FsbHkiLCJ0b0pTT04iLCJqc29uIiwic2VyaWFsaXNlIiwiZ2V0QnJlYWtQb2ludCIsImJyZWFrUG9pbnRKU09OIiwibmFtZSIsImZyb21KU09OIiwiaW5zdGFudGlhdGUiLCJ1bnNlcmlhbGlzZSIsImluc3RhbnRpYXRlTGluayIsIm1ldGF2YXJpYWJsZUZyb21MaW5rTm9kZSJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBYUE7OztlQUFBOzs7Z0NBWG9FOzBCQUU3Qzs2QkFDUzsrQkFDUzt5QkFDa0I7eUJBQzJCO0FBRXRGLE1BQU0sRUFBRUEsR0FBRyxFQUFFLEdBQUdDLHFDQUFxQixFQUMvQixFQUFFQyxrQkFBa0IsRUFBRUMsMEJBQTBCLEVBQUUsR0FBR0MsbUNBQW1CO01BRTlFLFdBQWVDLElBQUFBLGdCQUFNLEVBQUMsTUFBTUMsYUFBYUMsdUJB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
|
|
167
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbGVtZW50L2xpbmsuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IEVsZW1lbnQsIGJyZWFrUG9pbnRVdGlsaXRpZXMsIGNvbnRpbnVhdGlvblV0aWxpdGllcyB9IGZyb20gXCJvY2NhbS1sYW5ndWFnZXNcIjtcblxuaW1wb3J0IHsgZGVmaW5lIH0gZnJvbSBcIi4uL2VsZW1lbnRzXCI7XG5pbXBvcnQgeyBpbnN0YW50aWF0ZUxpbmsgfSBmcm9tIFwiLi4vcHJvY2Vzcy9pbnN0YW50aWF0ZVwiO1xuaW1wb3J0IHsgUkVGRVJFTkNFX01FVEFfVFlQRV9OQU1FIH0gZnJvbSBcIi4uL21ldGFUeXBlTmFtZXNcIjtcbmltcG9ydCB7IGxpbmtGcm9tTGlua05vZGUsIG1ldGF2YXJpYWJsZUZyb21MaW5rTm9kZSB9IGZyb20gXCIuLi91dGlsaXRpZXMvZWxlbWVudFwiO1xuaW1wb3J0IHsgam9pbiwgYWJsYXRlLCBhdHRlbXB0LCByZWNvbmNpbGUsIHNlcmlhbGlzZSwgdW5zZXJpYWxpc2UsIGluc3RhbnRpYXRlIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9jb250ZXh0XCI7XG5cbmNvbnN0IHsgYWxsIH0gPSBjb250aW51YXRpb25VdGlsaXRpZXMsXG4gICAgICB7IGJyZWFrUG9pbnRGcm9tSlNPTiwgYnJlYWtQb2ludFRvQnJlYWtQb2ludEpTT04gfSA9IGJyZWFrUG9pbnRVdGlsaXRpZXM7XG5cbmV4cG9ydCBkZWZhdWx0IGRlZmluZShjbGFzcyBMaW5rIGV4dGVuZHMgRWxlbWVudCB7XG4gIGNvbnN0cnVjdG9yKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgbWV0YXZhcmlhYmxlKSB7XG4gICAgc3VwZXIoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50KTtcblxuICAgIHRoaXMubWV0YXZhcmlhYmxlID0gbWV0YXZhcmlhYmxlO1xuICB9XG5cbiAgZ2V0TWV0YXZhcmlhYmxlKCkge1xuICAgIHJldHVybiB0aGlzLm1ldGF2YXJpYWJsZTtcbiAgfVxuXG4gIGdldExpbmtOb2RlKCkge1xuICAgIGNvbnN0IG5vZGUgPSB0aGlzLmdldE5vZGUoKSxcbiAgICAgICAgICBsaW5rTm9kZSA9IG5vZGU7IC8vL1xuXG4gICAgcmV0dXJuIGxpbmtOb2RlO1xuICB9XG5cbiAgZ2V0TWV0YXZhcmlhYmxlTm9kZSgpIHtcbiAgICBjb25zdCBtZXRhdmFyaWFibGVOb2RlID0gdGhpcy5tZXRhdmFyaWFibGUuZ2V0Tm9kZSgpO1xuXG4gICAgcmV0dXJuIG1ldGF2YXJpYWJsZU5vZGU7XG4gIH1cblxuICBnZXRNZXRhVHlwZSgpIHsgcmV0dXJuIHRoaXMubWV0YXZhcmlhYmxlLmdldE1ldGFUeXBlKCk7IH1cblxuICBpc0VxdWFsVG8obGluaykge1xuICAgIGNvbnN0IGxpbmtOb2RlID0gbGluay5nZXROb2RlKCksXG4gICAgICAgICAgbGlua05vZGVNYXRjaGVzID0gdGhpcy5tYXRjaExpbmtOb2RlKGxpbmtOb2RlKSxcbiAgICAgICAgICBlcXVhbFRvID0gbGlua05vZGVNYXRjaGVzOyAgLy8vXG5cbiAgICByZXR1cm4gZXF1YWxUbztcbiAgfVxuXG4gIG1hdGNoTGlua05vZGUobGlua05vZGUpIHtcbiAgICBjb25zdCBub2RlID0gbGlua05vZGUsIC8vL1xuICAgICAgICAgIG5vZGVNYXRjaGVzID0gdGhpcy5tYXRjaE5vZGUobm9kZSksXG4gICAgICAgICAgbGlua05vZGVNYXRjaGVzID0gbm9kZU1hdGNoZXM7IC8vL1xuXG4gICAgcmV0dXJuIGxpbmtOb2RlTWF0Y2hlcztcbiAgfVxuXG4gIG1hdGNoTWV0YXZhcmlhYmxlTm9kZShtZXRhdmFyaWFibGVOb2RlKSB7IHJldHVybiB0aGlzLm1ldGF2YXJpYWJsZS5tYXRjaE1ldGF2YXJpYWJsZU5vZGUobWV0YXZhcmlhYmxlTm9kZSk7IH1cblxuICBmaW5kTGluayhjb250ZXh0KSB7XG4gICAgY29uc3QgbGlua05vZGUgPSB0aGlzLmdldExpbmtOb2RlKCksXG4gICAgICAgICAgbGluayA9IGNvbnRleHQuZmluZExpbmtCeUxpbmtOb2RlKGxpbmtOb2RlKTtcblxuICAgIHJldHVybiBsaW5rO1xuICB9XG5cbiAgY29tcGFyZVBhcmFtZXRlcihwYXJhbWV0ZXIpIHtcbiAgICBsZXQgY29tcGFyZXNUb1BhcmFtdGVyID0gZmFsc2U7XG5cbiAgICBjb25zdCBzaW5ndWxhciA9IHRoaXMuaXNTaW5ndWxhcigpO1xuXG4gICAgaWYgKHNpbmd1bGFyKSB7XG4gICAgICBjb25zdCBwYXJhbWV0ZXJOYW1lID0gcGFyYW1ldGVyLmdldE5hbWUoKTtcblxuICAgICAgaWYgKHBhcmFtZXRlck5hbWUgIT09IG51bGwpIHtcbiAgICAgICAgY29uc3QgbWV0YXZhcmlhYmxlTmFtZSA9IHRoaXMuZ2V0TWV0YXZhcmlhYmxlTmFtZSgpO1xuXG4gICAgICAgIGlmIChwYXJhbWV0ZXJOYW1lID09PSBtZXRhdmFyaWFibGVOYW1lKSB7XG4gICAgICAgICAgY29tcGFyZXNUb1BhcmFtdGVyID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBjb21wYXJlc1RvUGFyYW10ZXI7XG4gIH1cblxuICB2YWxpZGF0ZShzdGF0ZSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGxldCBsaW5rO1xuXG4gICAgY29uc3QgbGlua1N0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7IC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7bGlua1N0cmluZ30nIGxpbmsuLi5gKTtcblxuICAgIGxpbmsgPSB0aGlzLmZpbmRMaW5rKGNvbnRleHQpO1xuXG4gICAgaWYgKGxpbmsgIT09IG51bGwpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnRoZSAnJHtsaW5rU3RyaW5nfScgbGluayBpcyBhbHJlYWR5IHByZXNlbnQuYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKGxpbmssIGNvbnRleHQsIGJhY2spO1xuICAgIH1cblxuICAgIGxpbmsgPSB0aGlzOyAvLy9cblxuICAgIGNvbnN0IHZhbGlkYXRlTWV0YXZhcmlhYmxlID0gdGhpcy52YWxpZGF0ZU1ldGF2YXJpYWJsZS5iaW5kKHRoaXMpO1xuXG4gICAgcmV0dXJuIGFsbChbXG4gICAgICB2YWxpZGF0ZU1ldGF2YXJpYWJsZVxuICAgIF0sIHN0YXRlLCBjb250ZXh0LCAoc3RhdGUsIGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIGNvbnRleHQuYWRkTGluayhsaW5rKTtcblxuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHtsaW5rU3RyaW5nfScgbGluay5gKTtcblxuICAgICAgcmV0dXJuIGZvcndhcmQobGluaywgY29udGV4dCwgYmFjayk7XG4gICAgfSwgYmFjayk7XG4gIH1cblxuICB2YWxpZGF0ZU1ldGF2YXJpYWJsZShzdGF0ZSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IGxpbmtTdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke2xpbmtTdHJpbmd9JyBsaW5rJ3MgbWV0YXZhcmlhYmxlLi4uJ2ApO1xuXG4gICAgcmV0dXJuIHRoaXMubWV0YXZhcmlhYmxlLnZhbGlkYXRlKHN0YXRlLCBjb250ZXh0LCAobWV0YXZhcmlhYmxlLCBjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICBjb25zdCBtZXRhVHlwZSA9IG1ldGF2YXJpYWJsZS5nZXRNZXRhVHlwZSgpO1xuXG4gICAgICBpZiAobWV0YVR5cGUgIT09IG51bGwpIHtcbiAgICAgICAgY29uc3QgcmVmZXJlbmNlTWV0YVR5cGVOYW1lID0gUkVGRVJFTkNFX01FVEFfVFlQRV9OQU1FLFxuICAgICAgICAgICAgICByZWZlcmVuY2VNZXRhVHlwZSA9IGNvbnRleHQuZmluZE1ldGFUeXBlQnlNZXRhVHlwZU5hbWUocmVmZXJlbmNlTWV0YVR5cGVOYW1lKSxcbiAgICAgICAgICAgICAgbWV0YXZhcmlhYmxlTWV0YVR5cGVFcXVhbFRvUmVmZXJlbmNlTWV0YVR5cGUgPSBtZXRhdmFyaWFibGUuaXNNZXRhVHlwZUVxdWFsVG8ocmVmZXJlbmNlTWV0YVR5cGUpO1xuXG4gICAgICAgIGlmICghbWV0YXZhcmlhYmxlTWV0YVR5cGVFcXVhbFRvUmVmZXJlbmNlTWV0YVR5cGUpIHtcbiAgICAgICAgICBjb25zdCBtZXRhVHlwZVN0cmluZyA9IG1ldGFUeXBlLmdldFN0cmluZygpLFxuICAgICAgICAgICAgICAgIG1ldGF2YXJpYWJsZVN0cmluZyA9IG1ldGF2YXJpYWJsZS5nZXRTdHJpbmcoKSxcbiAgICAgICAgICAgICAgICByZWZlcmVuY2VNZXRhVHlwZVN0cmluZyA9IHJlZmVyZW5jZU1ldGFUeXBlLmdldFN0cmluZygpO1xuXG4gICAgICAgICAgY29udGV4dC5kZWJ1ZyhgVGhlICcke2xpbmtTdHJpbmd9JyBsaW5rJ3MgJyR7bWV0YXZhcmlhYmxlU3RyaW5nfScgbWV0YXZhcmlhYmxlJ3MgJyR7bWV0YVR5cGVTdHJpbmd9JyBtZXRhLXR5cGUgc2hvdWxkIGJlIHRoZSAnJHtyZWZlcmVuY2VNZXRhVHlwZVN0cmluZ30nIG1ldGEtdHlwZS5gKTtcblxuICAgICAgICAgIHJldHVybiBiYWNrKCk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgdGhpcy5tZXRhdmFyaWFibGUgPSBtZXRhdmFyaWFibGU7XG5cbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7bGlua1N0cmluZ30nIGxpbmsncyBtZXRhdmFyaWFibGUuJ2ApO1xuXG4gICAgICByZXR1cm4gZm9yd2FyZChzdGF0ZSwgY29udGV4dCwgYmFjayk7XG4gICAgfSwgYmFjayk7XG4gIH1cblxuICB1bmlmeUxhYmVsKGxhYmVsLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3QgbGFiZWxTdHJpbmcgPSBsYWJlbC5nZXRTdHJpbmcoKSxcbiAgICAgICAgICBsaW5rU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBVbmlmeWluZyB0aGUgJyR7bGFiZWxTdHJpbmd9JyBsYWJlbCB3aXRoIHRoZSAnJHtsaW5rU3RyaW5nfScgbGluay4uLmApO1xuXG4gICAgY29uc3QgbWV0YXZhcmlhYmxlID0gbGFiZWwuZ2V0TWV0YXZhcmlhYmxlKCksXG4gICAgICAgICAgbGFiZWxDb250ZXh0ID0gbGFiZWwuZ2V0Q29udGV4dCgpLFxuICAgICAgICAgIGdlbmVyYWxDb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksIC8vL1xuICAgICAgICAgIHNwZWNpZmljQ29udGV4dCA9IGxhYmVsQ29udGV4dDsgIC8vL1xuXG4gICAgcmV0dXJuIGpvaW4oKHNwZWNpZmljQ29udGV4dCkgPT4ge1xuICAgICAgcmV0dXJuIHJlY29uY2lsZSgoc3BlY2lmaWNDb250ZXh0KSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLnVuaWZ5TWV0YXZhcmlhYmxlKG1ldGF2YXJpYWJsZSwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgKG1ldGF2YXJpYWJsZVVuaWZpZXMpID0+IHtcbiAgICAgICAgICBsZXQgbGFiZWxVbmlmaWVzID0gZmFsc2U7XG5cbiAgICAgICAgICBpZiAobWV0YXZhcmlhYmxlVW5pZmllcykge1xuICAgICAgICAgICAgc3BlY2lmaWNDb250ZXh0LmNvbW1pdChjb250ZXh0KTtcblxuICAgICAgICAgICAgbGFiZWxVbmlmaWVzID0gdHJ1ZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAobGFiZWxVbmlmaWVzKSB7XG4gICAgICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi51bmlmaWVkIHRoZSAnJHtsYWJlbFN0cmluZ30nIGxhYmVsIHdpdGggdGhlICcke2xpbmtTdHJpbmd9JyBsaW5rLmApO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiBjb250aW51YXRpb24obGFiZWxVbmlmaWVzKTtcbiAgICAgICAgfSk7XG4gICAgICB9LCBzcGVjaWZpY0NvbnRleHQpO1xuICAgIH0sIHNwZWNpZmljQ29udGV4dCwgY29udGV4dCk7XG4gIH1cblxuICB1bmlmeU1ldGF2YXJpYWJsZShtZXRhdmFyaWFibGUsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBjb250ZXh0ID0gc3BlY2lmaWNDb250ZXh0LCAgLy8vXG4gICAgICAgICAgbGlua1N0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCksIC8vL1xuICAgICAgICAgIG1ldGF2YXJpYWJsZVN0cmluZyA9IG1ldGF2YXJpYWJsZS5nZXRTdHJpbmcoKTtcblxuICAgIGNvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHttZXRhdmFyaWFibGVTdHJpbmd9JyBtZXRhdmFyaWFibGUgd2l0aCB0aGUgJyR7bGlua1N0cmluZ30nIGxpbmsuLi5gKTtcblxuICAgIHJldHVybiB0aGlzLm1ldGF2YXJpYWJsZS51bmlmeU1ldGF2YXJpYWJsZUludHJpbnNpY2FsbHkobWV0YXZhcmlhYmxlLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCAobWV0YXZhcmlhYmxlVW5pZmllc0ludHJpbnNpY2FsbHkpID0+IHtcbiAgICAgIGxldCBtZXRhdmFyaWFibGVVbmlmaWVzID0gZmFsc2U7XG5cbiAgICAgIGlmIChtZXRhdmFyaWFibGVVbmlmaWVzSW50cmluc2ljYWxseSkge1xuICAgICAgICBtZXRhdmFyaWFibGVVbmlmaWVzID0gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKG1ldGF2YXJpYWJsZVVuaWZpZXMpIHtcbiAgICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udW5pZmllZCB0aGUgJyR7bWV0YXZhcmlhYmxlU3RyaW5nfScgbWV0YXZhcmlhYmxlIHdpdGggdGhlICcke2xpbmtTdHJpbmd9JyBsaW5rLmApO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gY29udGludWF0aW9uKG1ldGF2YXJpYWJsZVVuaWZpZXMpO1xuICAgIH0pO1xuICB9XG5cbiAgdG9KU09OKCkge1xuICAgIGxldCBqc29uO1xuXG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpO1xuXG4gICAgc2VyaWFsaXNlKChjb250ZXh0KSA9PiB7XG4gICAgICBjb25zdCBzdHJpbmcgPSB0aGlzLmdldFN0cmluZygpO1xuXG4gICAgICBsZXQgYnJlYWtQb2ludDtcblxuICAgICAgYnJlYWtQb2ludCA9IHRoaXMuZ2V0QnJlYWtQb2ludCgpO1xuXG4gICAgICBjb25zdCBicmVha1BvaW50SlNPTiA9IGJyZWFrUG9pbnRUb0JyZWFrUG9pbnRKU09OKGJyZWFrUG9pbnQpO1xuXG4gICAgICBicmVha1BvaW50ID0gYnJlYWtQb2ludEpTT047ICAvLy9cblxuICAgICAganNvbiA9IHtcbiAgICAgICAgY29udGV4dCxcbiAgICAgICAgc3RyaW5nLFxuICAgICAgICBicmVha1BvaW50XG4gICAgICB9O1xuICAgIH0sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIGpzb247XG4gIH1cblxuICBzdGF0aWMgbmFtZSA9IFwiTGlua1wiO1xuXG4gIHN0YXRpYyBmcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gICAgbGV0IGxpbms7XG5cbiAgICBpbnN0YW50aWF0ZSgoY29udGV4dCkgPT4ge1xuICAgICAgdW5zZXJpYWxpc2UoKGpzb24sIGNvbnRleHQpID0+IHtcbiAgICAgICAgY29uc3QgeyBzdHJpbmcgfSA9IGpzb24sXG4gICAgICAgICAgICAgIGxpbmtOb2RlID0gaW5zdGFudGlhdGVMaW5rKHN0cmluZywgY29udGV4dCksXG4gICAgICAgICAgICAgIG5vZGUgPSBsaW5rTm9kZSwgIC8vL1xuICAgICAgICAgICAgICBicmVha1BvaW50ID0gYnJlYWtQb2ludEZyb21KU09OKGpzb24pLFxuICAgICAgICAgICAgICBtZXRhdmFyaWFibGUgPSBtZXRhdmFyaWFibGVGcm9tTGlua05vZGUobGlua05vZGUsIGNvbnRleHQpO1xuXG4gICAgICAgIGxpbmsgPSBuZXcgTGluayhjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIG1ldGF2YXJpYWJsZSk7XG4gICAgICB9LCBqc29uLCBjb250ZXh0KTtcbiAgICB9LCBjb250ZXh0KTtcblxuICAgIHJldHVybiBsaW5rO1xuICB9XG59KTtcbiJdLCJuYW1lcyI6WyJhbGwiLCJjb250aW51YXRpb25VdGlsaXRpZXMiLCJicmVha1BvaW50RnJvbUpTT04iLCJicmVha1BvaW50VG9CcmVha1BvaW50SlNPTiIsImJyZWFrUG9pbnRVdGlsaXRpZXMiLCJkZWZpbmUiLCJMaW5rIiwiRWxlbWVudCIsImNvbnRleHQiLCJzdHJpbmciLCJub2RlIiwiYnJlYWtQb2ludCIsIm1ldGF2YXJpYWJsZSIsImdldE1ldGF2YXJpYWJsZSIsImdldExpbmtOb2RlIiwiZ2V0Tm9kZSIsImxpbmtOb2RlIiwiZ2V0TWV0YXZhcmlhYmxlTm9kZSIsIm1ldGF2YXJpYWJsZU5vZGUiLCJnZXRNZXRhVHlwZSIsImlzRXF1YWxUbyIsImxpbmsiLCJsaW5rTm9kZU1hdGNoZXMiLCJtYXRjaExpbmtOb2RlIiwiZXF1YWxUbyIsIm5vZGVNYXRjaGVzIiwibWF0Y2hOb2RlIiwibWF0Y2hNZXRhdmFyaWFibGVOb2RlIiwiZmluZExpbmsiLCJmaW5kTGlua0J5TGlua05vZGUiLCJjb21wYXJlUGFyYW1ldGVyIiwicGFyYW1ldGVyIiwiY29tcGFyZXNUb1BhcmFtdGVyIiwic2luZ3VsYXIiLCJpc1Npbmd1bGFyIiwicGFyYW1ldGVyTmFtZSIsImdldE5hbWUiLCJtZXRhdmFyaWFibGVOYW1lIiwiZ2V0TWV0YXZhcmlhYmxlTmFtZSIsInZhbGlkYXRlIiwic3RhdGUiLCJmb3J3YXJkIiwiYmFjayIsImxpbmtTdHJpbmciLCJnZXRTdHJpbmciLCJ0cmFjZSIsImRlYnVnIiwidmFsaWRhdGVNZXRhdmFyaWFibGUiLCJiaW5kIiwiYWRkTGluayIsIm1ldGFUeXBlIiwicmVmZXJlbmNlTWV0YVR5cGVOYW1lIiwiUkVGRVJFTkNFX01FVEFfVFlQRV9OQU1FIiwicmVmZXJlbmNlTWV0YVR5cGUiLCJmaW5kTWV0YVR5cGVCeU1ldGFUeXBlTmFtZSIsIm1ldGF2YXJpYWJsZU1ldGFUeXBlRXF1YWxUb1JlZmVyZW5jZU1ldGFUeXBlIiwiaXNNZXRhVHlwZUVxdWFsVG8iLCJtZXRhVHlwZVN0cmluZyIsIm1ldGF2YXJpYWJsZVN0cmluZyIsInJlZmVyZW5jZU1ldGFUeXBlU3RyaW5nIiwidW5pZnlMYWJlbCIsImxhYmVsIiwibGFiZWxTdHJpbmciLCJsYWJlbENvbnRleHQiLCJnZXRDb250ZXh0IiwiZ2VuZXJhbENvbnRleHQiLCJzcGVjaWZpY0NvbnRleHQiLCJqb2luIiwicmVjb25jaWxlIiwidW5pZnlNZXRhdmFyaWFibGUiLCJtZXRhdmFyaWFibGVVbmlmaWVzIiwibGFiZWxVbmlmaWVzIiwiY29tbWl0IiwiY29udGludWF0aW9uIiwidW5pZnlNZXRhdmFyaWFibGVJbnRyaW5zaWNhbGx5IiwibWV0YXZhcmlhYmxlVW5pZmllc0ludHJpbnNpY2FsbHkiLCJ0b0pTT04iLCJqc29uIiwic2VyaWFsaXNlIiwiZ2V0QnJlYWtQb2ludCIsImJyZWFrUG9pbnRKU09OIiwibmFtZSIsImZyb21KU09OIiwiaW5zdGFudGlhdGUiLCJ1bnNlcmlhbGlzZSIsImluc3RhbnRpYXRlTGluayIsIm1ldGF2YXJpYWJsZUZyb21MaW5rTm9kZSJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBYUE7OztlQUFBOzs7Z0NBWG9FOzBCQUU3Qzs2QkFDUzsrQkFDUzt5QkFDa0I7eUJBQzJCO0FBRXRGLE1BQU0sRUFBRUEsR0FBRyxFQUFFLEdBQUdDLHFDQUFxQixFQUMvQixFQUFFQyxrQkFBa0IsRUFBRUMsMEJBQTBCLEVBQUUsR0FBR0MsbUNBQW1CO01BRTlFLFdBQWVDLElBQUFBLGdCQUFNLEVBQUMsTUFBTUMsYUFBYUMsdUJBQU87SUFDOUMsWUFBWUMsT0FBTyxFQUFFQyxNQUFNLEVBQUVDLElBQUksRUFBRUMsVUFBVSxFQUFFQyxZQUFZLENBQUU7UUFDM0QsS0FBSyxDQUFDSixTQUFTQyxR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
|
package/lib/element/parameter.js
CHANGED
|
@@ -19,7 +19,6 @@ function _interop_require_default(obj) {
|
|
|
19
19
|
default: obj
|
|
20
20
|
};
|
|
21
21
|
}
|
|
22
|
-
const { breakPointFromJSON, breakPointToBreakPointJSON } = _occamlanguages.breakPointUtilities;
|
|
23
22
|
const _default = (0, _elements.define)(class Parameter extends _occamlanguages.Element {
|
|
24
23
|
constructor(context, string, node, breakPoint, name, identifier){
|
|
25
24
|
super(context, string, node, breakPoint);
|
|
@@ -52,13 +51,8 @@ const _default = (0, _elements.define)(class Parameter extends _occamlanguages.E
|
|
|
52
51
|
toJSON() {
|
|
53
52
|
let json;
|
|
54
53
|
const string = this.getString();
|
|
55
|
-
let breakPoint;
|
|
56
|
-
breakPoint = this.getBreakPoint();
|
|
57
|
-
const breakPointJSON = breakPointToBreakPointJSON(breakPoint);
|
|
58
|
-
breakPoint = breakPointJSON; ///
|
|
59
54
|
json = {
|
|
60
|
-
string
|
|
61
|
-
breakPoint
|
|
55
|
+
string
|
|
62
56
|
};
|
|
63
57
|
return json;
|
|
64
58
|
}
|
|
@@ -66,7 +60,7 @@ const _default = (0, _elements.define)(class Parameter extends _occamlanguages.E
|
|
|
66
60
|
static fromJSON(json, context) {
|
|
67
61
|
let parameter;
|
|
68
62
|
(0, _context.instantiate)((context)=>{
|
|
69
|
-
const { string } = json, parameterNode = (0, _instantiate.instantiateParameter)(string, context), node = parameterNode, breakPoint =
|
|
63
|
+
const { string } = json, parameterNode = (0, _instantiate.instantiateParameter)(string, context), node = parameterNode, breakPoint = null, name = (0, _element.nameFromParaneterNode)(parameterNode, context), identifier = (0, _element.identifierFromParameterNode)(parameterNode, context);
|
|
70
64
|
context = null;
|
|
71
65
|
parameter = new Parameter(context, string, node, breakPoint, name, identifier);
|
|
72
66
|
}, context);
|
|
@@ -74,4 +68,4 @@ const _default = (0, _elements.define)(class Parameter extends _occamlanguages.E
|
|
|
74
68
|
}
|
|
75
69
|
});
|
|
76
70
|
|
|
77
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
71
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbGVtZW50L3BhcmFtZXRlci5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgRWxlbWVudCB9IGZyb20gXCJvY2NhbS1sYW5ndWFnZXNcIjtcblxuaW1wb3J0IFZhbHVlIGZyb20gXCIuLi92YWx1ZVwiO1xuXG5pbXBvcnQgeyBkZWZpbmUgfSBmcm9tIFwiLi4vZWxlbWVudHNcIjtcbmltcG9ydCB7IGluc3RhbnRpYXRlIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9jb250ZXh0XCI7XG5pbXBvcnQgeyBpbnN0YW50aWF0ZVBhcmFtZXRlciB9IGZyb20gXCIuLi9wcm9jZXNzL2luc3RhbnRpYXRlXCI7XG5pbXBvcnQgeyBuYW1lRnJvbVBhcmFuZXRlck5vZGUsIGlkZW50aWZpZXJGcm9tUGFyYW1ldGVyTm9kZSB9IGZyb20gXCIuLi91dGlsaXRpZXMvZWxlbWVudFwiO1xuXG5leHBvcnQgZGVmYXVsdCBkZWZpbmUoY2xhc3MgUGFyYW1ldGVyIGV4dGVuZHMgRWxlbWVudCB7XG4gIGNvbnN0cnVjdG9yKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgbmFtZSwgaWRlbnRpZmllcikge1xuICAgIHN1cGVyKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCk7XG5cbiAgICB0aGlzLm5hbWUgPSBuYW1lO1xuICAgIHRoaXMuaWRlbnRpZmllciA9IGlkZW50aWZpZXI7XG4gIH1cbiAgXG4gIGdldE5hbWUoKSB7XG4gICAgcmV0dXJuIHRoaXMubmFtZTtcbiAgfVxuXG4gIGdldElkZW50aWZpZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMuaWRlbnRpZmllcjtcbiAgfVxuXG4gIGdldFBhcmFtZXRlck5vZGUoKSB7XG4gICAgY29uc3Qgbm9kZSA9IHRoaXMuZ2V0Tm9kZSgpLFxuICAgICAgICAgIHBhcmFtZXRlck5vZGUgPSBub2RlOyAvLy9cblxuICAgIHJldHVybiBwYXJhbWV0ZXJOb2RlO1xuICB9XG5cbiAgZmluZFZhbHVlKHN1YnN0aXR1dGlvbnMpIHtcbiAgICBsZXQgdmFsdWUgPSBudWxsO1xuXG4gICAgY29uc3QgcGFyYW1ldGVyID0gdGhpcywgLy8vXG4gICAgICAgICAgc3Vic3RpdHV0aW9uID0gc3Vic3RpdHV0aW9ucy5maW5kKChzdWJzdGl0dXRpb24pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHN1YnN0aXR1dGlvbkNvbXBhcmVzVG9QYXJhbWV0ZXIgPSBzdWJzdGl0dXRpb24uY29tcGFyZVBhcmFtZXRlcihwYXJhbWV0ZXIpO1xuXG4gICAgICAgICAgICBpZiAoc3Vic3RpdHV0aW9uQ29tcGFyZXNUb1BhcmFtZXRlcikge1xuICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KSB8fCBudWxsO1xuXG4gICAgaWYgKHN1YnN0aXR1dGlvbiAhPT0gbnVsbCkge1xuICAgICAgdmFsdWUgPSBWYWx1ZS5mcm9tU3Vic3RpdHV0aW9uKHN1YnN0aXR1dGlvbik7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG5cbiAgdG9KU09OKCkge1xuICAgIGxldCBqc29uO1xuXG4gICAgY29uc3Qgc3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTtcblxuICAgIGpzb24gPSB7XG4gICAgICBzdHJpbmdcbiAgICB9O1xuXG4gICAgcmV0dXJuIGpzb247XG4gIH1cblxuICBzdGF0aWMgbmFtZSA9IFwiUGFyYW1ldGVyXCI7XG5cbiAgc3RhdGljIGZyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgICBsZXQgcGFyYW1ldGVyO1xuXG4gICAgaW5zdGFudGlhdGUoKGNvbnRleHQpID0+IHtcbiAgICAgIGNvbnN0IHsgc3RyaW5nIH0gPSBqc29uLFxuICAgICAgICAgICAgcGFyYW1ldGVyTm9kZSA9IGluc3RhbnRpYXRlUGFyYW1ldGVyKHN0cmluZywgY29udGV4dCksXG4gICAgICAgICAgICBub2RlID0gcGFyYW1ldGVyTm9kZSwgIC8vL1xuICAgICAgICAgICAgYnJlYWtQb2ludCA9IG51bGwsXG4gICAgICAgICAgICBuYW1lID0gbmFtZUZyb21QYXJhbmV0ZXJOb2RlKHBhcmFtZXRlck5vZGUsIGNvbnRleHQpLFxuICAgICAgICAgICAgaWRlbnRpZmllciA9IGlkZW50aWZpZXJGcm9tUGFyYW1ldGVyTm9kZShwYXJhbWV0ZXJOb2RlLCBjb250ZXh0KTtcblxuICAgICAgY29udGV4dCA9IG51bGw7XG5cbiAgICAgIHBhcmFtZXRlciA9IG5ldyBQYXJhbWV0ZXIoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCBuYW1lLCBpZGVudGlmaWVyKTtcbiAgICB9LCBjb250ZXh0KTtcblxuICAgIHJldHVybiBwYXJhbWV0ZXI7XG4gIH1cbn0pO1xuIl0sIm5hbWVzIjpbImRlZmluZSIsIlBhcmFtZXRlciIsIkVsZW1lbnQiLCJjb250ZXh0Iiwic3RyaW5nIiwibm9kZSIsImJyZWFrUG9pbnQiLCJuYW1lIiwiaWRlbnRpZmllciIsImdldE5hbWUiLCJnZXRJZGVudGlmaWVyIiwiZ2V0UGFyYW1ldGVyTm9kZSIsImdldE5vZGUiLCJwYXJhbWV0ZXJOb2RlIiwiZmluZFZhbHVlIiwic3Vic3RpdHV0aW9ucyIsInZhbHVlIiwicGFyYW1ldGVyIiwic3Vic3RpdHV0aW9uIiwiZmluZCIsInN1YnN0aXR1dGlvbkNvbXBhcmVzVG9QYXJhbWV0ZXIiLCJjb21wYXJlUGFyYW1ldGVyIiwiVmFsdWUiLCJmcm9tU3Vic3RpdHV0aW9uIiwidG9KU09OIiwianNvbiIsImdldFN0cmluZyIsImZyb21KU09OIiwiaW5zdGFudGlhdGUiLCJpbnN0YW50aWF0ZVBhcmFtZXRlciIsIm5hbWVGcm9tUGFyYW5ldGVyTm9kZSIsImlkZW50aWZpZXJGcm9tUGFyYW1ldGVyTm9kZSJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBV0E7OztlQUFBOzs7Z0NBVHdCOzhEQUVOOzBCQUVLO3lCQUNLOzZCQUNTO3lCQUM4Qjs7Ozs7O01BRW5FLFdBQWVBLElBQUFBLGdCQUFNLEVBQUMsTUFBTUMsa0JBQWtCQyx1QkFBTztJQUNuRCxZQUFZQyxPQUFPLEVBQUVDLE1BQU0sRUFBRUMsSUFBSSxFQUFFQyxVQUFVLEVBQUVDLElBQUksRUFBRUMsVUFBVSxDQUFFO1FBQy9ELEtBQUssQ0FBQ0wsU0FBU0MsUUFBUUMsTUFBTUM7UUFFN0IsSUFBSSxDQUFDQyxJQUFJLEdBQUdBO1FBQ1osSUFBSSxDQUFDQyxVQUFVLEdBQUdBO0lBQ3BCO0lBRUFDLFVBQVU7UUFDUixPQUFPLElBQUksQ0FBQ0YsSUFBSTtJQUNsQjtJQUVBRyxnQkFBZ0I7UUFDZCxPQUFPLElBQUksQ0FBQ0YsVUFBVTtJQUN4QjtJQUVBRyxtQkFBbUI7UUFDakIsTUFBTU4sT0FBTyxJQUFJLENBQUNPLE9BQU8sSUFDbkJDLGdCQUFnQlIsTUFBTSxHQUFHO1FBRS9CLE9BQU9RO0lBQ1Q7SUFFQUMsVUFBVUMsYUFBYSxFQUFFO1FBQ3ZCLElBQUlDLFFBQVE7UUFFWixNQUFNQyxZQUFZLElBQUksRUFDaEJDLGVBQWVILGNBQWNJLElBQUksQ0FBQyxDQUFDRDtZQUNqQyxNQUFNRSxrQ0FBa0NGLGFBQWFHLGdCQUFnQixDQUFDSjtZQUV0RSxJQUFJRyxpQ0FBaUM7Z0JBQ25DLE9BQU87WUFDVDtRQUNGLE1BQU07UUFFWixJQUFJRixpQkFBaUIsTUFBTTtZQUN6QkYsUUFBUU0sY0FBSyxDQUFDQyxnQkFBZ0IsQ0FBQ0w7UUFDakM7UUFFQSxPQUFPRjtJQUNUO0lBRUFRLFNBQVM7UUFDUCxJQUFJQztRQUVKLE1BQU1yQixTQUFTLElBQUksQ0FBQ3NCLFNBQVM7UUFFN0JELE9BQU87WUFDTHJCO1FBQ0Y7UUFFQSxPQUFPcUI7SUFDVDtJQUVBLE9BQU9sQixPQUFPLFlBQVk7SUFFMUIsT0FBT29CLFNBQVNGLElBQUksRUFBRXRCLE9BQU8sRUFBRTtRQUM3QixJQUFJYztRQUVKVyxJQUFBQSxvQkFBVyxFQUFDLENBQUN6QjtZQUNYLE1BQU0sRUFBRUMsTUFBTSxFQUFFLEdBQUdxQixNQUNiWixnQkFBZ0JnQixJQUFBQSxpQ0FBb0IsRUFBQ3pCLFFBQVFELFVBQzdDRSxPQUFPUSxlQUNQUCxhQUFhLE1BQ2JDLE9BQU91QixJQUFBQSw4QkFBcUIsRUFBQ2pCLGVBQWVWLFVBQzVDSyxhQUFhdUIsSUFBQUEsb0NBQTJCLEVBQUNsQixlQUFlVjtZQUU5REEsVUFBVTtZQUVWYyxZQUFZLElBQUloQixVQUFVRSxTQUFTQyxRQUFRQyxNQUFNQyxZQUFZQyxNQUFNQztRQUNyRSxHQUFHTDtRQUVILE9BQU9jO0lBQ1Q7QUFDRiJ9
|
package/lib/element/schema.js
CHANGED
|
@@ -213,45 +213,45 @@ const _default = (0, _elements.define)(class Schema extends _occamlanguages.Elem
|
|
|
213
213
|
});
|
|
214
214
|
}, forward, back);
|
|
215
215
|
}
|
|
216
|
-
unifyStatementAndSchemaAssertion(statement,
|
|
217
|
-
let
|
|
218
|
-
const schemaString = this.getString(), statementString = statement.getString(),
|
|
219
|
-
context.trace(`Unifying the '${statementString}' statement and ${
|
|
216
|
+
unifyStatementAndSchemaAssertion(statement, schemaAssertion, context, forward, back) {
|
|
217
|
+
let schemaAssertionUnifies = false;
|
|
218
|
+
const schemaString = this.getString(), statementString = statement.getString(), schemaAssertionString = schemaAssertion.getString();
|
|
219
|
+
context.trace(`Unifying the '${statementString}' statement and ${schemaAssertionString}' schema assertion with the '${schemaString}' schema...`);
|
|
220
220
|
return (0, _context.reconcile)((context)=>{
|
|
221
|
-
const reference =
|
|
221
|
+
const reference = schemaAssertion.getReference();
|
|
222
222
|
return this.unifyReference(reference, context, (referenceUnifies)=>{
|
|
223
223
|
if (!referenceUnifies) {
|
|
224
|
-
return continuation(
|
|
224
|
+
return continuation(schemaAssertionUnifies);
|
|
225
225
|
}
|
|
226
|
-
const assumptions =
|
|
226
|
+
const assumptions = schemaAssertion.getAssumptions(context), constraints = [
|
|
227
227
|
...this.constraints
|
|
228
228
|
];
|
|
229
229
|
return this.unifyAssumptions(assumptions, constraints, context, ()=>{
|
|
230
|
-
const implicitAssumptions =
|
|
230
|
+
const implicitAssumptions = schemaAssertion.getImplicitAssumptions(context);
|
|
231
231
|
return this.unifyImplicitAssumptions(implicitAssumptions, constraints, context, ()=>{
|
|
232
232
|
const constraintsLength = constraints.length;
|
|
233
233
|
if (constraintsLength > 0) {
|
|
234
|
-
return continuation(
|
|
234
|
+
return continuation(schemaAssertionUnifies);
|
|
235
235
|
}
|
|
236
236
|
const conditional = this.isConditional(), statementConditional = statement.isConditional();
|
|
237
237
|
if (conditional !== statementConditional) {
|
|
238
238
|
context.trace(`Either the '${statementString}' statement is unconditional whilst the '${schemaString}' schema is conditional or vice verse.`);
|
|
239
|
-
return continuation(
|
|
239
|
+
return continuation(schemaAssertionUnifies);
|
|
240
240
|
}
|
|
241
241
|
const deducedStatement = statement.findDeducedStatement(context);
|
|
242
242
|
return this.unifyDeducedStatement(deducedStatement, context, (deducedStatementUnifies)=>{
|
|
243
243
|
if (!deducedStatementUnifies) {
|
|
244
|
-
return continuation(
|
|
244
|
+
return continuation(schemaAssertionUnifies);
|
|
245
245
|
}
|
|
246
246
|
const supposedStatements = statement.findSupposedStatements(context);
|
|
247
247
|
return this.unifySupposedStatements(supposedStatements, context, (supposedStatementsUnify)=>{
|
|
248
248
|
if (supposedStatementsUnify) {
|
|
249
|
-
|
|
249
|
+
schemaAssertionUnifies = true;
|
|
250
250
|
}
|
|
251
|
-
if (
|
|
252
|
-
context.debug(`...unified the '${statementString}' statement and ${
|
|
251
|
+
if (schemaAssertionUnifies) {
|
|
252
|
+
context.debug(`...unified the '${statementString}' statement and ${schemaAssertionString}' schema assertion with the '${schemaString}' schema.`);
|
|
253
253
|
}
|
|
254
|
-
return continuation(
|
|
254
|
+
return continuation(schemaAssertionUnifies);
|
|
255
255
|
});
|
|
256
256
|
});
|
|
257
257
|
});
|
|
@@ -284,4 +284,4 @@ const _default = (0, _elements.define)(class Schema extends _occamlanguages.Elem
|
|
|
284
284
|
}
|
|
285
285
|
});
|
|
286
286
|
|
|
287
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbGVtZW50L3NjaGVtYS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgRWxlbWVudCwgYnJlYWtQb2ludFV0aWxpdGllcywgY29udGludWF0aW9uVXRpbGl0aWVzIH0gZnJvbSBcIm9jY2FtLWxhbmd1YWdlc1wiO1xuXG5pbXBvcnQgeyBkZWZpbmUgfSBmcm9tIFwiLi4vZWxlbWVudHNcIjtcbmltcG9ydCB7IHJlY29uY2lsZSwgZW5jYXBzdWxhdGUgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2NvbnRleHRcIjtcbmltcG9ydCB7IHNjaGVtYVN0cmluZ0Zyb21MYWJlbFN1cHBvc2l0aW9uc0FuZERlZHVjdGlvbiB9IGZyb20gXCIuLi91dGlsaXRpZXMvc3RyaW5nXCI7XG5pbXBvcnQgeyBsYWJlbEZyb21KU09OLFxuICAgICAgICAgbGFiZWxUb0xhYmVsSlNPTixcbiAgICAgICAgIGRlZHVjdGlvbkZyb21KU09OLFxuICAgICAgICAgY29uc3RyYWludHNGcm9tSlNPTixcbiAgICAgICAgIHN1cHBvc2l0aW9uc0Zyb21KU09OLFxuICAgICAgICAgZGVkdWN0aW9uVG9EZWR1Y3Rpb25KU09OLFxuICAgICAgICAgY29uc3RyYWludHNUb0NvbnN0cmFpbnRzSlNPTixcbiAgICAgICAgIHN1cHBvc2l0aW9uc1RvU3VwcG9zaXRpb25zSlNPTiB9IGZyb20gXCIuLi91dGlsaXRpZXMvanNvblwiO1xuXG5jb25zdCB7IGN1dCwgYWxsLCBmaWx0ZXIsIGlzb2xhdGUsIGZvcndhcmRzRXZlcnksIGJhY2t3YXJkc0V2ZXJ5IH0gPSBjb250aW51YXRpb25VdGlsaXRpZXMsXG4gICAgICB7IGJyZWFrYWJsZSwgYnJlYWtQb2ludEZyb21KU09OLCBicmVha1BvaW50VG9CcmVha1BvaW50SlNPTiB9ID0gYnJlYWtQb2ludFV0aWxpdGllcztcblxuZXhwb3J0IGRlZmF1bHQgZGVmaW5lKGNsYXNzIFNjaGVtYSBleHRlbmRzIEVsZW1lbnQge1xuICBjb25zdHJ1Y3Rvcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIGxhYmVsLCBzdXBwb3NpdGlvbnMsIGRlZHVjdGlvbiwgcHJvb2YsIGNvbnN0cmFpbnRzKSB7XG4gICAgc3VwZXIoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50KTtcblxuICAgIHRoaXMubGFiZWwgPSBsYWJlbDtcbiAgICB0aGlzLnN1cHBvc2l0aW9ucyA9IHN1cHBvc2l0aW9ucztcbiAgICB0aGlzLmRlZHVjdGlvbiA9IGRlZHVjdGlvbjtcbiAgICB0aGlzLnByb29mID0gcHJvb2Y7XG4gICAgdGhpcy5jb25zdHJhaW50cyA9IGNvbnN0cmFpbnRzO1xuICB9XG5cbiAgZ2V0TGFiZWwoKSB7XG4gICAgcmV0dXJuIHRoaXMubGFiZWw7XG4gIH1cblxuICBnZXRTdXBwb3NpdGlvbnMoKSB7XG4gICAgcmV0dXJuIHRoaXMuc3VwcG9zaXRpb25zO1xuICB9XG5cbiAgZ2V0RGVkdWN0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLmRlZHVjdGlvbjtcbiAgfVxuXG4gIGdldFByb29mKCkge1xuICAgIHJldHVybiB0aGlzLnByb29mO1xuICB9XG5cbiAgZ2V0TUNvbnN0cmFpbnQoKSB7XG4gICAgcmV0dXJuIHRoaXMuY29uc3RyYWludHM7XG4gIH1cblxuICBpc0NvbmRpdGlvbmFsKCkge1xuICAgIGNvbnN0IHN1cHBvc2l0aW9uc0xlbmd0aCA9IHRoaXMuc3VwcG9zaXRpb25zLmxlbmd0aCxcbiAgICAgICAgICBjb25kaXRpb25hbCA9IChzdXBwb3NpdGlvbnNMZW5ndGggPiAwKTtcblxuICAgIHJldHVybiBjb25kaXRpb25hbDtcbiAgfVxuXG4gIGNvbXBhcmVSZWZlcmVuY2UocmVmZXJlbmNlKSB7XG4gICAgY29uc3QgbGFiZWwgPSB0aGlzLmdldExhYmVsKCksXG4gICAgICAgICAgbGFiZWxDb21wYXJlc1RvUmVmZmVyZW5jZSA9IGxhYmVsLmNvbXBhcmVSZWZlcmVuY2UocmVmZXJlbmNlKSxcbiAgICAgICAgICBjb21wYXJlc1RvUmVmZXJlbmNlID0gbGFiZWxDb21wYXJlc1RvUmVmZmVyZW5jZTsgIC8vL1xuXG4gICAgcmV0dXJuIGNvbXBhcmVzVG9SZWZlcmVuY2U7XG4gIH1cblxuICBtYXRjaE1ldGF2YXJpYWJsZU5vZGUobWV0YXZhcmlhYmxlTm9kZSkgeyByZXR1cm4gdGhpcy5sYWJlbC5tYXRjaE1ldGF2YXJpYWJsZU5vZGUobWV0YXZhcmlhYmxlTm9kZSk7IH1cblxuICB2ZXJpZnkgPSBicmVha2FibGUoZnVuY3Rpb24gKGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBmb3J3YXJkID0gY3V0KGZvcndhcmQsIGJhY2spOyAvLy9cblxuICAgIGNvbnN0IHNjaGVtYVN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7XG5cbiAgICBjb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke3NjaGVtYVN0cmluZ30nIHNjaGVtYS4uLmApO1xuXG4gICAgcmV0dXJuIGlzb2xhdGUoKGNvbnRleHQsIGZvcndhcmQsIGJhY2spID0+IHtcbiAgICAgIHJldHVybiBlbmNhcHN1bGF0ZSgoY29udGV4dCkgPT4ge1xuICAgICAgICBjb25zdCB2ZXJpZnlQcm9vZiA9IHRoaXMudmVyaWZ5UHJvb2YuYmluZCh0aGlzKSxcbiAgICAgICAgICAgICAgdmVyaWZ5TGFiZWwgPSB0aGlzLnZlcmlmeUxhYmVsLmJpbmQodGhpcyksXG4gICAgICAgICAgICAgIHZlcmlmeURlZHVjdGlvbiA9IHRoaXMudmVyaWZ5RGVkdWN0aW9uLmJpbmQodGhpcyksXG4gICAgICAgICAgICAgIHZlcmlmeVN1cHBvc2l0aW9ucyA9IHRoaXMudmVyaWZ5U3VwcG9zaXRpb25zLmJpbmQodGhpcyk7XG5cbiAgICAgICAgcmV0dXJuIGFsbChbXG4gICAgICAgICAgdmVyaWZ5TGFiZWwsXG4gICAgICAgICAgdmVyaWZ5U3VwcG9zaXRpb25zLFxuICAgICAgICAgIHZlcmlmeURlZHVjdGlvbixcbiAgICAgICAgICB2ZXJpZnlQcm9vZlxuICAgICAgICBdLCBjb250ZXh0LCAoY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgICAgIHJldHVybiBmb3J3YXJkKGJhY2spO1xuICAgICAgICB9LCBiYWNrKTtcbiAgICAgIH0sIHRoaXMuY29uc3RyYWludHMsIGNvbnRleHQpO1xuICAgIH0sIGNvbnRleHQsIChjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICBjb25zdCBzY2hlbWEgPSB0aGlzOyAvLy9cblxuICAgICAgY29udGV4dC5hZGRTY2hlbWEoc2NoZW1hKTtcblxuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke3NjaGVtYVN0cmluZ30nIHNjaGVtYS5gKTtcblxuICAgICAgcmV0dXJuIGZvcndhcmQoY29udGV4dCwgYmFjayk7XG4gICAgfSwgKGV4Y2VwdGlvbikgPT4ge1xuICAgICAgaWYgKGV4Y2VwdGlvbikge1xuICAgICAgICByZXR1cm4gYmFjayhleGNlcHRpb24pO1xuICAgICAgfVxuXG4gICAgICBjb250ZXh0LnRyYWNlKGBVbmFibGUgdG8gdmVyaWZ5IHRoZSAnJHtzY2hlbWFTdHJpbmd9JyBzY2hlbWEuYCk7XG5cbiAgICAgIHJldHVybiBiYWNrKCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIHZlcmlmeUxhYmVsKGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBsYWJlbFN0cmluZyA9IHRoaXMubGFiZWwuZ2V0U3RyaW5nKCksXG4gICAgICAgICAgc2NoZW1hU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke3NjaGVtYVN0cmluZ30nIHNjaGVtYSdzICcke2xhYmVsU3RyaW5nfScgbGFiZWwuLi5gKTtcblxuICAgIHJldHVybiB0aGlzLmxhYmVsLnZlcmlmeShjb250ZXh0LCAoY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke3NjaGVtYVN0cmluZ30nIHNjaGVtYSdzICcke2xhYmVsU3RyaW5nfScgbGFiZWwuYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKGNvbnRleHQsIGJhY2spO1xuICAgIH0sIGJhY2spO1xuICB9XG5cbiAgdmVyaWZ5UHJvb2YoY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IHNjaGVtYVN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7c2NoZW1hU3RyaW5nfScgc2NoZW1hJ3MgcHJvb2YuLi5gKTtcblxuICAgIGNvbnN0IHN0YXRlbWVudCA9IHRoaXMuZGVkdWN0aW9uLmdldFN0YXRlbWVudCgpO1xuXG4gICAgcmV0dXJuIHRoaXMucHJvb2YudmVyaWZ5KHN0YXRlbWVudCwgY29udGV4dCwgKGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHtzY2hlbWFTdHJpbmd9JyBzY2hlbWEncyBwcm9vZi5gKTtcblxuICAgICAgcmV0dXJuIGZvcndhcmQoY29udGV4dCwgYmFjayk7XG4gICAgfSwgYmFjayk7XG4gIH1cblxuICB2ZXJpZnlEZWR1Y3Rpb24oY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IHNjaGVtYVN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCksIC8vL1xuICAgICAgICAgIGRlZHVjdGlvblN0cmluZyA9IHRoaXMuZGVkdWN0aW9uLmdldFN0cmluZygpO1xuXG4gICAgY29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHtzY2hlbWFTdHJpbmd9JyBzY2hlbWEncyAnJHtkZWR1Y3Rpb25TdHJpbmd9JyBkZWR1Y3Rpb24uLi5gKTtcblxuICAgIHJldHVybiB0aGlzLmRlZHVjdGlvbi52ZXJpZnkoY29udGV4dCwgKGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHtzY2hlbWFTdHJpbmd9JyBzY2hlbWEncyAnJHtkZWR1Y3Rpb25TdHJpbmd9JyBkZWR1Y3Rpb24uYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKGNvbnRleHQsIGJhY2spO1xuICAgIH0sIGJhY2spO1xuICB9XG5cbiAgdmVyaWZ5U3VwcG9zaXRpb24oc3VwcG9zaXRpb24sIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBzY2hlbWFTdHJpbmcgPSB0aGlzLmdldFN0cmluZygpLCAvLy9cbiAgICAgICAgICBzdXBwb3NpdGlvblN0cmluZyA9IHN1cHBvc2l0aW9uLmdldFN0cmluZygpO1xuXG4gICAgY29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHtzY2hlbWFTdHJpbmd9JyBzY2hlbWEncyAnJHtzdXBwb3NpdGlvblN0cmluZ30nIHN1cHBvc2l0aW9uLi4uYCk7XG5cbiAgICByZXR1cm4gc3VwcG9zaXRpb24udmVyaWZ5KGNvbnRleHQsIChjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7c2NoZW1hU3RyaW5nfScgc2NoZW1hJ3MgJyR7c3VwcG9zaXRpb25TdHJpbmd9JyBzdXBwb3NpdGlvbi5gKTtcblxuICAgICAgcmV0dXJuIGZvcndhcmQoY29udGV4dCwgYmFjayk7XG4gICAgfSwgYmFjayk7XG4gIH1cblxuICB2ZXJpZnlTdXBwb3NpdGlvbnMoY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IHN1cHBvc2l0aW9uc0xlbmd0aCA9IHRoaXMuc3VwcG9zaXRpb25zLmxlbmd0aDtcblxuICAgIGlmIChzdXBwb3NpdGlvbnNMZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiBmb3J3YXJkKGNvbnRleHQsIGJhY2spO1xuICAgIH1cblxuICAgIGNvbnN0IHNjaGVtYVN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7c2NoZW1hU3RyaW5nfScgc2NoZW1hJ3Mgc3VwcG9zaXRpb25zLi4uYCk7XG5cbiAgICByZXR1cm4gZm9yd2FyZHNFdmVyeSh0aGlzLnN1cHBvc2l0aW9ucywgKHN1cHBvc2l0aW9uLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy52ZXJpZnlTdXBwb3NpdGlvbihzdXBwb3NpdGlvbiwgY29udGV4dCwgKGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgICAgY29uc3QgZmFjdE9yU3VicHJvb2YgPSBzdXBwb3NpdGlvbjsgLy8vXG5cbiAgICAgICAgY29udGV4dC5hZGRGYWN0T3JTdWJwcm9vZihmYWN0T3JTdWJwcm9vZik7XG5cbiAgICAgICAgY29udGV4dC5hc3NpZ25Bc3NpZ25tZW50cygpO1xuXG4gICAgICAgIHJldHVybiBmb3J3YXJkKGNvbnRleHQsIGJhY2spO1xuICAgICAgfSwgYmFjayk7XG4gICAgfSwgY29udGV4dCwgKGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHtzY2hlbWFTdHJpbmd9JyBzY2hlbWEncyBzdXBwb3NpdGlvbnMuYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKGNvbnRleHQsIGJhY2spO1xuICAgIH0sIGJhY2spO1xuICB9XG5cbiAgdW5pZnlSZWZlcmVuY2UocmVmZXJlbmNlLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3Qgc2NoZW1hU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKSwgIC8vL1xuICAgICAgICAgIHJlZmVyZW5jZVN0cmluZyA9IHJlZmVyZW5jZS5nZXRTdHJpbmcoKTtcblxuICAgIGNvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHtyZWZlcmVuY2VTdHJpbmd9JyByZWZlcmVuY2Ugd2l0aCB0aGUgJyR7c2NoZW1hU3RyaW5nfScgc2NoZW1hLi4uYCk7XG5cbiAgICByZXR1cm4gdGhpcy5sYWJlbC51bmlmeVJlZmVyZW5jZShyZWZlcmVuY2UsIGNvbnRleHQsIChyZWZlcmVuY2VVbmlmaWVzKSA9PiB7XG4gICAgICBpZiAocmVmZXJlbmNlVW5pZmllcykge1xuICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi51bmlmaWVkIHRoZSAnJHtyZWZlcmVuY2VTdHJpbmd9JyByZWZlcmVuY2Ugd2l0aCB0aGUgJyR7c2NoZW1hU3RyaW5nfScgc2NoZW1hLmApO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gY29udGludWF0aW9uKHJlZmVyZW5jZVVuaWZpZXMpO1xuICAgIH0pO1xuICB9XG5cbiAgdW5pZnlBc3N1bXB0aW9ucyhhc3N1bXB0aW9ucywgY29uc3RyYWludHMsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBmaWx0ZXIoY29uc3RyYWludHMsIChjb25zdHJhaW50LCBmb3J3YXJkLCBiYWNrKSA9PiB7XG4gICAgICBjb25zdHJhaW50LnVuaWZ5QXNzdW1wdGlvbnMoYXNzdW1wdGlvbnMsIGNvbnRleHQsIChhc3N1bXB0aW9uc1VuaWZ5KSA9PiB7XG4gICAgICAgIGxldCBwYXNzZWQgPSBmYWxzZTtcblxuICAgICAgICBpZiAoIWFzc3VtcHRpb25zVW5pZnkpIHtcbiAgICAgICAgICBwYXNzZWQgPSB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbihwYXNzZWQpO1xuICAgICAgfSk7XG4gICAgfSwgZm9yd2FyZCwgYmFjayk7XG4gIH1cblxuICB1bmlmeURlZHVjZWRTdGF0ZW1lbnQoZGVkdWNlZFN0YXRlbWVudCwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IGRlZHVjdGlvblN0cmluZyA9IHRoaXMuZGVkdWN0aW9uLmdldFN0cmluZygpLFxuICAgICAgICAgIGRlZHVjZWRTdGF0ZW1lbnRTdHJpbmcgPSBkZWR1Y2VkU3RhdGVtZW50LmdldFN0cmluZygpO1xuXG4gICAgY29udGV4dC50cmFjZShgVW5pZnlpbmcgdGhlICcke2RlZHVjZWRTdGF0ZW1lbnRTdHJpbmd9JyBkZWR1Y2VkIHN0YXRlbWVudCB3aXRoIHRoZSAnJHtkZWR1Y3Rpb25TdHJpbmd9JyBkZWR1Y3Rpbm8uLi5gKTtcblxuICAgIGNvbnN0IGRlZHVjdGlvbkNvbnRleHQgPSB0aGlzLmRlZHVjdGlvbi5nZXRDb250ZXh0KCksIC8vL1xuICAgICAgICAgIGdlbmVyYWxDb250ZXh0ID0gZGVkdWN0aW9uQ29udGV4dDsgLy8vXG5cbiAgICByZXR1cm4gcmVjb25jaWxlKChjb250ZXh0KSA9PiB7XG4gICAgICBjb25zdCBzdGF0ZW1lbnQgPSBkZWR1Y2VkU3RhdGVtZW50LCAvLy9cbiAgICAgICAgICAgIHNwZWNpZmljQ29udGV4dCA9IGNvbnRleHQ7ICAvLy9cblxuICAgICAgcmV0dXJuIHRoaXMuZGVkdWN0aW9uLnVuaWZ5U3RhdGVtZW50KHN0YXRlbWVudCwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgKHN0YXRlbWVudFVuaWZpZXMpID0+IHtcbiAgICAgICAgbGV0IGRlZHVjZWRTdGF0ZW1lbnRVbmlmaWVzID0gZmFsc2U7XG5cbiAgICAgICAgaWYgKHN0YXRlbWVudFVuaWZpZXMpIHtcbiAgICAgICAgICBjb250ZXh0LmNvbW1pdCgpO1xuXG4gICAgICAgICAgZGVkdWNlZFN0YXRlbWVudFVuaWZpZXMgPSB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGRlZHVjZWRTdGF0ZW1lbnRVbmlmaWVzKSB7XG4gICAgICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udW5pZmllZCB0aGUgJyR7ZGVkdWNlZFN0YXRlbWVudFN0cmluZ30nIGRlZHVjZWQgc3RhdGVtZW50IHdpdGggdGhlICcke2RlZHVjdGlvblN0cmluZ30nIGRlZHVjdGlvbi5gKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBjb250aW51YXRpb24oZGVkdWNlZFN0YXRlbWVudFVuaWZpZXMpO1xuICAgICAgfSk7XG4gICAgfSwgY29udGV4dCk7XG4gIH1cblxuICB1bmlmeVN1cHBvc2VkU3RhdGVtZW50KHN1cHBvc2VkU3RhdGVtZW50LCBzdXBwb3NpdGlvbiwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IHN1cHBvc2l0aW9uU3RyaW5nID0gc3VwcG9zaXRpb24uZ2V0U3RyaW5nKCksXG4gICAgICAgICAgc3VwcG9zZWRTdGF0ZW1lbnRTdHJpbmcgPSBzdXBwb3NlZFN0YXRlbWVudC5nZXRTdHJpbmcoKTtcblxuICAgIGNvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHtzdXBwb3NlZFN0YXRlbWVudFN0cmluZ30nIHN1cHBvc2VkIHN0YXRlbWVudCB3aXRoIHRoZSAnJHtzdXBwb3NpdGlvblN0cmluZ30nIGRlZHVjdGluby4uLmApO1xuXG4gICAgY29uc3Qgc3VwcG9zaXRpb25Db250ZXh0ID0gc3VwcG9zaXRpb24uZ2V0Q29udGV4dCgpLCAvLy9cbiAgICAgICAgICBnZW5lcmFsQ29udGV4dCA9IHN1cHBvc2l0aW9uQ29udGV4dDsgLy8vXG5cbiAgICByZXR1cm4gcmVjb25jaWxlKChjb250ZXh0KSA9PiB7XG4gICAgICBjb25zdCBzdGF0ZW1lbnQgPSBzdXBwb3NlZFN0YXRlbWVudCwgLy8vXG4gICAgICAgICAgICBzcGVjaWZpY0NvbnRleHQgPSBjb250ZXh0OyAgLy8vXG5cbiAgICAgIHJldHVybiBzdXBwb3NpdGlvbi51bmlmeVN0YXRlbWVudChzdGF0ZW1lbnQsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIChzdGF0ZW1lbnRVbmlmaWVzKSA9PiB7XG4gICAgICAgIGxldCBzdXBwb3NlZFN0YXRlbWVudFVuaWZpZXMgPSBmYWxzZTtcblxuICAgICAgICBpZiAoc3RhdGVtZW50VW5pZmllcykge1xuICAgICAgICAgIGNvbnRleHQuY29tbWl0KCk7XG5cbiAgICAgICAgICBzdXBwb3NlZFN0YXRlbWVudFVuaWZpZXMgPSB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHN1cHBvc2VkU3RhdGVtZW50VW5pZmllcykge1xuICAgICAgICAgIGNvbnRleHQuZGVidWcoYC4uLnVuaWZpZWQgdGhlICcke3N1cHBvc2VkU3RhdGVtZW50U3RyaW5nfScgc3VwcG9zZWQgc3RhdGVtZW50IHdpdGggdGhlICcke3N1cHBvc2l0aW9uU3RyaW5nfScgc3VwcG9zaXRpb24uYCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gY29udGludWF0aW9uKHN1cHBvc2VkU3RhdGVtZW50VW5pZmllcyk7XG4gICAgICB9KTtcbiAgICB9LCBjb250ZXh0KTtcbiAgfVxuXG4gIHVuaWZ5U3VwcG9zZWRTdGF0ZW1lbnRzKHN1cHBvc2VkU3RhdGVtZW50cywgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IHN1cHBvc2l0aW9uc0xlbmd0aCA9IHRoaXMuc3VwcG9zaXRpb25zLmxlbmd0aCxcbiAgICAgICAgICBzdXBwb3NlZFN0YXRlbWVudHNMZW5ndGggPSBzdXBwb3NlZFN0YXRlbWVudHMubGVuZ3RoO1xuXG4gICAgaWYgKHN1cHBvc2l0aW9uc0xlbmd0aCAhPT0gc3VwcG9zZWRTdGF0ZW1lbnRzTGVuZ3RoKSB7XG4gICAgICBjb25zdCBzdXBwb3NlZFN0YXRlbWVudHNVbmlmeSA9IGZhbHNlO1xuXG4gICAgICByZXR1cm4gY29udGludWF0aW9uKHN1cHBvc2VkU3RhdGVtZW50c1VuaWZ5KTtcbiAgICB9XG5cbiAgICBsZXQgaW5kZXggPSBzdXBwb3NlZFN0YXRlbWVudHNMZW5ndGg7XG5cbiAgICBiYWNrd2FyZHNFdmVyeShzdXBwb3NlZFN0YXRlbWVudHMsIChzdXBwb3NlZFN0YXRlbWVudCwgZm9yd2FyZCwgYmFjaykgPT4ge1xuICAgICAgaW5kZXgtLTtcblxuICAgICAgY29uc3Qgc3VwcG9zaXRpb24gPSB0aGlzLnN1cHBvc2l0aW9uc1tpbmRleF07XG5cbiAgICAgIHJldHVybiB0aGlzLnVuaWZ5U3VwcG9zZWRTdGF0ZW1lbnQoc3VwcG9zZWRTdGF0ZW1lbnQsIHN1cHBvc2l0aW9uLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKTtcbiAgICB9LCBmb3J3YXJkLCBiYWNrKTtcbiAgfVxuXG4gIHVuaWZ5SW1wbGljaXRBc3N1bXB0aW9ucyhpbXBsaWNpdEFzc3VtcHRpb25zLCBjb25zdHJhaW50cywgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGZpbHRlcihjb25zdHJhaW50cywgKGNvbnN0cmFpbnQsIGZvcndhcmQsIGJhY2spID0+IHtcbiAgICAgIGNvbnN0cmFpbnQudW5pZnlJbXBsaWNpdEFzc3VtcHRpb25zKGltcGxpY2l0QXNzdW1wdGlvbnMsIGNvbnRleHQsIChpbXBsaWNpdEFzc3VtcHRpb25zVW5pZnkpID0+IHtcbiAgICAgICAgbGV0IHBhc3NlZCA9IGZhbHNlO1xuXG4gICAgICAgIGlmICghaW1wbGljaXRBc3N1bXB0aW9uc1VuaWZ5KSB7XG4gICAgICAgICAgcGFzc2VkID0gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBjb250aW51YXRpb24ocGFzc2VkKTtcbiAgICAgIH0pO1xuICAgIH0sIGZvcndhcmQsIGJhY2spO1xuICB9XG5cbiAgdW5pZnlTdGF0ZW1lbnRBbmRTY2hlbWFBc3NlcnRpb24oc3RhdGVtZW50LCBzY2hhbWVBc3NlcnRpb24sIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBsZXQgc2NoYW1lQXNzZXJ0aW9uVW5pZmllcyA9IGZhbHNlO1xuXG4gICAgY29uc3Qgc2NoZW1hU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKSwgIC8vL1xuICAgICAgICAgIHN0YXRlbWVudFN0cmluZyA9IHN0YXRlbWVudC5nZXRTdHJpbmcoKSwgIC8vL1xuICAgICAgICAgIHNjaGFtZUFzc2VydGlvblN0cmluZyA9IHNjaGFtZUFzc2VydGlvbi5nZXRTdHJpbmcoKTtcblxuICAgIGNvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHtzdGF0ZW1lbnRTdHJpbmd9JyBzdGF0ZW1lbnQgYW5kICR7c2NoYW1lQXNzZXJ0aW9uU3RyaW5nfScgc2NoYW1lIGFzc2VydGlvbiB3aXRoIHRoZSAnJHtzY2hlbWFTdHJpbmd9JyBzY2hlbWEuLi5gKTtcblxuICAgIHJldHVybiByZWNvbmNpbGUoKGNvbnRleHQpID0+IHtcbiAgICAgIGNvbnN0IHJlZmVyZW5jZSA9IHNjaGFtZUFzc2VydGlvbi5nZXRSZWZlcmVuY2UoKTtcblxuICAgICAgcmV0dXJuIHRoaXMudW5pZnlSZWZlcmVuY2UocmVmZXJlbmNlLCBjb250ZXh0LCAocmVmZXJlbmNlVW5pZmllcykgPT4ge1xuICAgICAgICBpZiAoIXJlZmVyZW5jZVVuaWZpZXMpIHtcbiAgICAgICAgICByZXR1cm4gY29udGludWF0aW9uKHNjaGFtZUFzc2VydGlvblVuaWZpZXMpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgYXNzdW1wdGlvbnMgPSBzY2hhbWVBc3NlcnRpb24uZ2V0QXNzdW1wdGlvbnMoY29udGV4dCksXG4gICAgICAgICAgICAgIGNvbnN0cmFpbnRzID0gW1xuICAgICAgICAgICAgICAgIC4uLnRoaXMuY29uc3RyYWludHNcbiAgICAgICAgICAgICAgXTtcblxuICAgICAgICByZXR1cm4gdGhpcy51bmlmeUFzc3VtcHRpb25zKGFzc3VtcHRpb25zLCBjb25zdHJhaW50cywgY29udGV4dCwgKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGltcGxpY2l0QXNzdW1wdGlvbnMgPSBzY2hhbWVBc3NlcnRpb24uZ2V0SW1wbGljaXRBc3N1bXB0aW9ucyhjb250ZXh0KTtcblxuICAgICAgICAgIHJldHVybiB0aGlzLnVuaWZ5SW1wbGljaXRBc3N1bXB0aW9ucyhpbXBsaWNpdEFzc3VtcHRpb25zLCBjb25zdHJhaW50cywgY29udGV4dCwgKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgY29uc3RyYWludHNMZW5ndGggPSBjb25zdHJhaW50cy5sZW5ndGg7XG5cbiAgICAgICAgICAgIGlmIChjb25zdHJhaW50c0xlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbihzY2hhbWVBc3NlcnRpb25VbmlmaWVzKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgY29uZGl0aW9uYWwgPSB0aGlzLmlzQ29uZGl0aW9uYWwoKSxcbiAgICAgICAgICAgICAgICAgIHN0YXRlbWVudENvbmRpdGlvbmFsID0gc3RhdGVtZW50LmlzQ29uZGl0aW9uYWwoKTtcblxuICAgICAgICAgICAgaWYgKGNvbmRpdGlvbmFsICE9PSBzdGF0ZW1lbnRDb25kaXRpb25hbCkge1xuICAgICAgICAgICAgICBjb250ZXh0LnRyYWNlKGBFaXRoZXIgdGhlICcke3N0YXRlbWVudFN0cmluZ30nIHN0YXRlbWVudCBpcyB1bmNvbmRpdGlvbmFsIHdoaWxzdCB0aGUgJyR7c2NoZW1hU3RyaW5nfScgc2NoZW1hIGlzIGNvbmRpdGlvbmFsIG9yIHZpY2UgdmVyc2UuYCk7XG5cbiAgICAgICAgICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbihzY2hhbWVBc3NlcnRpb25VbmlmaWVzKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgZGVkdWNlZFN0YXRlbWVudCA9IHN0YXRlbWVudC5maW5kRGVkdWNlZFN0YXRlbWVudChjb250ZXh0KTtcblxuICAgICAgICAgICAgcmV0dXJuIHRoaXMudW5pZnlEZWR1Y2VkU3RhdGVtZW50KGRlZHVjZWRTdGF0ZW1lbnQsIGNvbnRleHQsIChkZWR1Y2VkU3RhdGVtZW50VW5pZmllcykgPT4ge1xuICAgICAgICAgICAgICBpZiAoIWRlZHVjZWRTdGF0ZW1lbnRVbmlmaWVzKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbihzY2hhbWVBc3NlcnRpb25VbmlmaWVzKTtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGNvbnN0IHN1cHBvc2VkU3RhdGVtZW50cyA9IHN0YXRlbWVudC5maW5kU3VwcG9zZWRTdGF0ZW1lbnRzKGNvbnRleHQpO1xuXG4gICAgICAgICAgICAgIHJldHVybiB0aGlzLnVuaWZ5U3VwcG9zZWRTdGF0ZW1lbnRzKHN1cHBvc2VkU3RhdGVtZW50cywgY29udGV4dCwgKHN1cHBvc2VkU3RhdGVtZW50c1VuaWZ5KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHN1cHBvc2VkU3RhdGVtZW50c1VuaWZ5KSB7XG4gICAgICAgICAgICAgICAgICBzY2hhbWVBc3NlcnRpb25VbmlmaWVzID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoc2NoYW1lQXNzZXJ0aW9uVW5pZmllcykge1xuICAgICAgICAgICAgICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udW5pZmllZCB0aGUgJyR7c3RhdGVtZW50U3RyaW5nfScgc3RhdGVtZW50IGFuZCAke3NjaGFtZUFzc2VydGlvblN0cmluZ30nIHNjaGFtZSBhc3NlcnRpb24gd2l0aCB0aGUgJyR7c2NoZW1hU3RyaW5nfScgc2NoZW1hLmApO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybiBjb250aW51YXRpb24oc2NoYW1lQXNzZXJ0aW9uVW5pZmllcyk7XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSwgY29udGV4dCk7XG4gIH1cblxuICB0b0pTT04oKSB7XG4gICAgbGV0IGpzb247XG5cbiAgICBjb25zdCBsYWJlbEpTT04gPSBsYWJlbFRvTGFiZWxKU09OKHRoaXMubGFiZWwpLFxuICAgICAgICAgIGRlZHVjdGlvbkpTT04gPSBkZWR1Y3Rpb25Ub0RlZHVjdGlvbkpTT04odGhpcy5kZWR1Y3Rpb24pLFxuICAgICAgICAgIHN1cHBvc2l0aW9uc0pTT04gPSBzdXBwb3NpdGlvbnNUb1N1cHBvc2l0aW9uc0pTT04odGhpcy5zdXBwb3NpdGlvbnMpLFxuICAgICAgICAgIGNvbnN0cmFpbnRzSlNPTiA9IGNvbnN0cmFpbnRzVG9Db25zdHJhaW50c0pTT04odGhpcy5jb25zdHJhaW50cyksXG4gICAgICAgICAgc3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTtcblxuICAgIGxldCBicmVha1BvaW50O1xuXG4gICAgYnJlYWtQb2ludCA9IHRoaXMuZ2V0QnJlYWtQb2ludCgpO1xuXG4gICAgY29uc3QgYnJlYWtQb2ludEpTT04gPSBicmVha1BvaW50VG9CcmVha1BvaW50SlNPTihicmVha1BvaW50KTtcblxuICAgIGJyZWFrUG9pbnQgPSBicmVha1BvaW50SlNPTjsgIC8vL1xuXG4gICAgY29uc3QgbGFiZWwgPSBsYWJlbEpTT04sICAvLy9cbiAgICAgICAgICBkZWR1Y3Rpb24gPSBkZWR1Y3Rpb25KU09OLCAgLy8vXG4gICAgICAgICAgc3VwcG9zaXRpb25zID0gc3VwcG9zaXRpb25zSlNPTiwgIC8vL1xuICAgICAgICAgIGNvbnN0cmFpbnRzID0gY29uc3RyYWludHNKU09OOyAgLy8vXG5cbiAgICBqc29uID0ge1xuICAgICAgc3RyaW5nLFxuICAgICAgYnJlYWtQb2ludCxcbiAgICAgIGxhYmVsLFxuICAgICAgZGVkdWN0aW9uLFxuICAgICAgc3VwcG9zaXRpb25zLFxuICAgICAgY29uc3RyYWludHNcbiAgICB9O1xuXG4gICAgcmV0dXJuIGpzb247XG4gIH1cblxuICBzdGF0aWMgbmFtZSA9IFwiU2NoZW1hXCI7XG5cbiAgc3RhdGljIGZyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgICBjb25zdCBsYWJlbCA9IGxhYmVsRnJvbUpTT04oanNvbiwgY29udGV4dCksXG4gICAgICAgICAgZGVkdWN0aW9uID0gZGVkdWN0aW9uRnJvbUpTT04oanNvbiwgY29udGV4dCksXG4gICAgICAgICAgc3VwcG9zaXRpb25zID0gc3VwcG9zaXRpb25zRnJvbUpTT04oanNvbiwgY29udGV4dCksXG4gICAgICAgICAgY29uc3RyYWludHMgPSBjb25zdHJhaW50c0Zyb21KU09OKGpzb24sIGNvbnRleHQpLFxuICAgICAgICAgIHN0cmluZyA9IHNjaGVtYVN0cmluZ0Zyb21MYWJlbFN1cHBvc2l0aW9uc0FuZERlZHVjdGlvbihsYWJlbCwgc3VwcG9zaXRpb25zLCBkZWR1Y3Rpb24pLFxuICAgICAgICAgIG5vZGUgPSBudWxsLFxuICAgICAgICAgIGJyZWFrUG9pbnQgPSBicmVha1BvaW50RnJvbUpTT04oanNvbiksXG4gICAgICAgICAgcHJvb2YgPSBudWxsLFxuICAgICAgICAgIHNjaGVtYSA9IG5ldyBTY2hlbWEoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCBsYWJlbCwgc3VwcG9zaXRpb25zLCBkZWR1Y3Rpb24sIHByb29mLCBjb25zdHJhaW50cyk7XG5cbiAgICByZXR1cm4gc2NoZW1hO1xuICB9XG59KTtcbiJdLCJuYW1lcyI6WyJjdXQiLCJhbGwiLCJmaWx0ZXIiLCJpc29sYXRlIiwiZm9yd2FyZHNFdmVyeSIsImJhY2t3YXJkc0V2ZXJ5IiwiY29udGludWF0aW9uVXRpbGl0aWVzIiwiYnJlYWthYmxlIiwiYnJlYWtQb2ludEZyb21KU09OIiwiYnJlYWtQb2ludFRvQnJlYWtQb2ludEpTT04iLCJicmVha1BvaW50VXRpbGl0aWVzIiwiZGVmaW5lIiwiU2NoZW1hIiwiRWxlbWVudCIsImNvbnRleHQiLCJzdHJpbmciLCJub2RlIiwiYnJlYWtQb2ludCIsImxhYmVsIiwic3VwcG9zaXRpb25zIiwiZGVkdWN0aW9uIiwicHJvb2YiLCJjb25zdHJhaW50cyIsImdldExhYmVsIiwiZ2V0U3VwcG9zaXRpb25zIiwiZ2V0RGVkdWN0aW9uIiwiZ2V0UHJvb2YiLCJnZXRNQ29uc3RyYWludCIsImlzQ29uZGl0aW9uYWwiLCJzdXBwb3NpdGlvbnNMZW5ndGgiLCJsZW5ndGgiLCJjb25kaXRpb25hbCIsImNvbXBhcmVSZWZlcmVuY2UiLCJyZWZlcmVuY2UiLCJsYWJlbENvbXBhcmVzVG9SZWZmZXJlbmNlIiwiY29tcGFyZXNUb1JlZmVyZW5jZSIsIm1hdGNoTWV0YXZhcmlhYmxlTm9kZSIsIm1ldGF2YXJpYWJsZU5vZGUiLCJ2ZXJpZnkiLCJmb3J3YXJkIiwiYmFjayIsInNjaGVtYVN0cmluZyIsImdldFN0cmluZyIsInRyYWNlIiwiZW5jYXBzdWxhdGUiLCJ2ZXJpZnlQcm9vZiIsImJpbmQiLCJ2ZXJpZnlMYWJlbCIsInZlcmlmeURlZHVjdGlvbiIsInZlcmlmeVN1cHBvc2l0aW9ucyIsInNjaGVtYSIsImFkZFNjaGVtYSIsImRlYnVnIiwiZXhjZXB0aW9uIiwibGFiZWxTdHJpbmciLCJzdGF0ZW1lbnQiLCJnZXRTdGF0ZW1lbnQiLCJkZWR1Y3Rpb25TdHJpbmciLCJ2ZXJpZnlTdXBwb3NpdGlvbiIsInN1cHBvc2l0aW9uIiwic3VwcG9zaXRpb25TdHJpbmciLCJmYWN0T3JTdWJwcm9vZiIsImFkZEZhY3RPclN1YnByb29mIiwiYXNzaWduQXNzaWdubWVudHMiLCJ1bmlmeVJlZmVyZW5jZSIsInJlZmVyZW5jZVN0cmluZyIsInJlZmVyZW5jZVVuaWZpZXMiLCJjb250aW51YXRpb24iLCJ1bmlmeUFzc3VtcHRpb25zIiwiYXNzdW1wdGlvbnMiLCJjb25zdHJhaW50IiwiYXNzdW1wdGlvbnNVbmlmeSIsInBhc3NlZCIsInVuaWZ5RGVkdWNlZFN0YXRlbWVudCIsImRlZHVjZWRTdGF0ZW1lbnQiLCJkZWR1Y2VkU3RhdGVtZW50U3RyaW5nIiwiZGVkdWN0aW9uQ29udGV4dCIsImdldENvbnRleHQiLCJnZW5lcmFsQ29udGV4dCIsInJlY29uY2lsZSIsInNwZWNpZmljQ29udGV4dCIsInVuaWZ5U3RhdGVtZW50Iiwic3RhdGVtZW50VW5pZmllcyIsImRlZHVjZWRTdGF0ZW1lbnRVbmlmaWVzIiwiY29tbWl0IiwidW5pZnlTdXBwb3NlZFN0YXRlbWVudCIsInN1cHBvc2VkU3RhdGVtZW50Iiwic3VwcG9zZWRTdGF0ZW1lbnRTdHJpbmciLCJzdXBwb3NpdGlvbkNvbnRleHQiLCJzdXBwb3NlZFN0YXRlbWVudFVuaWZpZXMiLCJ1bmlmeVN1cHBvc2VkU3RhdGVtZW50cyIsInN1cHBvc2VkU3RhdGVtZW50cyIsInN1cHBvc2VkU3RhdGVtZW50c0xlbmd0aCIsInN1cHBvc2VkU3RhdGVtZW50c1VuaWZ5IiwiaW5kZXgiLCJ1bmlmeUltcGxpY2l0QXNzdW1wdGlvbnMiLCJpbXBsaWNpdEFzc3VtcHRpb25zIiwiaW1wbGljaXRBc3N1bXB0aW9uc1VuaWZ5IiwidW5pZnlTdGF0ZW1lbnRBbmRTY2hlbWFBc3NlcnRpb24iLCJzY2hhbWVBc3NlcnRpb24iLCJzY2hhbWVBc3NlcnRpb25VbmlmaWVzIiwic3RhdGVtZW50U3RyaW5nIiwic2NoYW1lQXNzZXJ0aW9uU3RyaW5nIiwiZ2V0UmVmZXJlbmNlIiwiZ2V0QXNzdW1wdGlvbnMiLCJnZXRJbXBsaWNpdEFzc3VtcHRpb25zIiwiY29uc3RyYWludHNMZW5ndGgiLCJzdGF0ZW1lbnRDb25kaXRpb25hbCIsImZpbmREZWR1Y2VkU3RhdGVtZW50IiwiZmluZFN1cHBvc2VkU3RhdGVtZW50cyIsInRvSlNPTiIsImpzb24iLCJsYWJlbEpTT04iLCJsYWJlbFRvTGFiZWxKU09OIiwiZGVkdWN0aW9uSlNPTiIsImRlZHVjdGlvblRvRGVkdWN0aW9uSlNPTiIsInN1cHBvc2l0aW9uc0pTT04iLCJzdXBwb3NpdGlvbnNUb1N1cHBvc2l0aW9uc0pTT04iLCJjb25zdHJhaW50c0pTT04iLCJjb25zdHJhaW50c1RvQ29uc3RyYWludHNKU09OIiwiZ2V0QnJlYWtQb2ludCIsImJyZWFrUG9pbnRKU09OIiwibmFtZSIsImZyb21KU09OIiwibGFiZWxGcm9tSlNPTiIsImRlZHVjdGlvbkZyb21KU09OIiwic3VwcG9zaXRpb25zRnJvbUpTT04iLCJjb25zdHJhaW50c0Zyb21KU09OIiwic2NoZW1hU3RyaW5nRnJvbUxhYmVsU3VwcG9zaXRpb25zQW5kRGVkdWN0aW9uIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFtQkE7OztlQUFBOzs7Z0NBakJvRTswQkFFN0M7eUJBQ2dCO3dCQUN1QjtzQkFRZjtBQUUvQyxNQUFNLEVBQUVBLEdBQUcsRUFBRUMsR0FBRyxFQUFFQyxNQUFNLEVBQUVDLE9BQU8sRUFBRUMsYUFBYSxFQUFFQyxjQUFjLEVBQUUsR0FBR0MscUNBQXFCLEVBQ3BGLEVBQUVDLFNBQVMsRUFBRUMsa0JBQWtCLEVBQUVDLDBCQUEwQixFQUFFLEdBQUdD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
|
|
287
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbGVtZW50L3NjaGVtYS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgRWxlbWVudCwgYnJlYWtQb2ludFV0aWxpdGllcywgY29udGludWF0aW9uVXRpbGl0aWVzIH0gZnJvbSBcIm9jY2FtLWxhbmd1YWdlc1wiO1xuXG5pbXBvcnQgeyBkZWZpbmUgfSBmcm9tIFwiLi4vZWxlbWVudHNcIjtcbmltcG9ydCB7IHJlY29uY2lsZSwgZW5jYXBzdWxhdGUgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2NvbnRleHRcIjtcbmltcG9ydCB7IHNjaGVtYVN0cmluZ0Zyb21MYWJlbFN1cHBvc2l0aW9uc0FuZERlZHVjdGlvbiB9IGZyb20gXCIuLi91dGlsaXRpZXMvc3RyaW5nXCI7XG5pbXBvcnQgeyBsYWJlbEZyb21KU09OLFxuICAgICAgICAgbGFiZWxUb0xhYmVsSlNPTixcbiAgICAgICAgIGRlZHVjdGlvbkZyb21KU09OLFxuICAgICAgICAgY29uc3RyYWludHNGcm9tSlNPTixcbiAgICAgICAgIHN1cHBvc2l0aW9uc0Zyb21KU09OLFxuICAgICAgICAgZGVkdWN0aW9uVG9EZWR1Y3Rpb25KU09OLFxuICAgICAgICAgY29uc3RyYWludHNUb0NvbnN0cmFpbnRzSlNPTixcbiAgICAgICAgIHN1cHBvc2l0aW9uc1RvU3VwcG9zaXRpb25zSlNPTiB9IGZyb20gXCIuLi91dGlsaXRpZXMvanNvblwiO1xuXG5jb25zdCB7IGN1dCwgYWxsLCBmaWx0ZXIsIGlzb2xhdGUsIGZvcndhcmRzRXZlcnksIGJhY2t3YXJkc0V2ZXJ5IH0gPSBjb250aW51YXRpb25VdGlsaXRpZXMsXG4gICAgICB7IGJyZWFrYWJsZSwgYnJlYWtQb2ludEZyb21KU09OLCBicmVha1BvaW50VG9CcmVha1BvaW50SlNPTiB9ID0gYnJlYWtQb2ludFV0aWxpdGllcztcblxuZXhwb3J0IGRlZmF1bHQgZGVmaW5lKGNsYXNzIFNjaGVtYSBleHRlbmRzIEVsZW1lbnQge1xuICBjb25zdHJ1Y3Rvcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIGxhYmVsLCBzdXBwb3NpdGlvbnMsIGRlZHVjdGlvbiwgcHJvb2YsIGNvbnN0cmFpbnRzKSB7XG4gICAgc3VwZXIoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50KTtcblxuICAgIHRoaXMubGFiZWwgPSBsYWJlbDtcbiAgICB0aGlzLnN1cHBvc2l0aW9ucyA9IHN1cHBvc2l0aW9ucztcbiAgICB0aGlzLmRlZHVjdGlvbiA9IGRlZHVjdGlvbjtcbiAgICB0aGlzLnByb29mID0gcHJvb2Y7XG4gICAgdGhpcy5jb25zdHJhaW50cyA9IGNvbnN0cmFpbnRzO1xuICB9XG5cbiAgZ2V0TGFiZWwoKSB7XG4gICAgcmV0dXJuIHRoaXMubGFiZWw7XG4gIH1cblxuICBnZXRTdXBwb3NpdGlvbnMoKSB7XG4gICAgcmV0dXJuIHRoaXMuc3VwcG9zaXRpb25zO1xuICB9XG5cbiAgZ2V0RGVkdWN0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLmRlZHVjdGlvbjtcbiAgfVxuXG4gIGdldFByb29mKCkge1xuICAgIHJldHVybiB0aGlzLnByb29mO1xuICB9XG5cbiAgZ2V0TUNvbnN0cmFpbnQoKSB7XG4gICAgcmV0dXJuIHRoaXMuY29uc3RyYWludHM7XG4gIH1cblxuICBpc0NvbmRpdGlvbmFsKCkge1xuICAgIGNvbnN0IHN1cHBvc2l0aW9uc0xlbmd0aCA9IHRoaXMuc3VwcG9zaXRpb25zLmxlbmd0aCxcbiAgICAgICAgICBjb25kaXRpb25hbCA9IChzdXBwb3NpdGlvbnNMZW5ndGggPiAwKTtcblxuICAgIHJldHVybiBjb25kaXRpb25hbDtcbiAgfVxuXG4gIGNvbXBhcmVSZWZlcmVuY2UocmVmZXJlbmNlKSB7XG4gICAgY29uc3QgbGFiZWwgPSB0aGlzLmdldExhYmVsKCksXG4gICAgICAgICAgbGFiZWxDb21wYXJlc1RvUmVmZmVyZW5jZSA9IGxhYmVsLmNvbXBhcmVSZWZlcmVuY2UocmVmZXJlbmNlKSxcbiAgICAgICAgICBjb21wYXJlc1RvUmVmZXJlbmNlID0gbGFiZWxDb21wYXJlc1RvUmVmZmVyZW5jZTsgIC8vL1xuXG4gICAgcmV0dXJuIGNvbXBhcmVzVG9SZWZlcmVuY2U7XG4gIH1cblxuICBtYXRjaE1ldGF2YXJpYWJsZU5vZGUobWV0YXZhcmlhYmxlTm9kZSkgeyByZXR1cm4gdGhpcy5sYWJlbC5tYXRjaE1ldGF2YXJpYWJsZU5vZGUobWV0YXZhcmlhYmxlTm9kZSk7IH1cblxuICB2ZXJpZnkgPSBicmVha2FibGUoZnVuY3Rpb24gKGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBmb3J3YXJkID0gY3V0KGZvcndhcmQsIGJhY2spOyAvLy9cblxuICAgIGNvbnN0IHNjaGVtYVN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7XG5cbiAgICBjb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke3NjaGVtYVN0cmluZ30nIHNjaGVtYS4uLmApO1xuXG4gICAgcmV0dXJuIGlzb2xhdGUoKGNvbnRleHQsIGZvcndhcmQsIGJhY2spID0+IHtcbiAgICAgIHJldHVybiBlbmNhcHN1bGF0ZSgoY29udGV4dCkgPT4ge1xuICAgICAgICBjb25zdCB2ZXJpZnlQcm9vZiA9IHRoaXMudmVyaWZ5UHJvb2YuYmluZCh0aGlzKSxcbiAgICAgICAgICAgICAgdmVyaWZ5TGFiZWwgPSB0aGlzLnZlcmlmeUxhYmVsLmJpbmQodGhpcyksXG4gICAgICAgICAgICAgIHZlcmlmeURlZHVjdGlvbiA9IHRoaXMudmVyaWZ5RGVkdWN0aW9uLmJpbmQodGhpcyksXG4gICAgICAgICAgICAgIHZlcmlmeVN1cHBvc2l0aW9ucyA9IHRoaXMudmVyaWZ5U3VwcG9zaXRpb25zLmJpbmQodGhpcyk7XG5cbiAgICAgICAgcmV0dXJuIGFsbChbXG4gICAgICAgICAgdmVyaWZ5TGFiZWwsXG4gICAgICAgICAgdmVyaWZ5U3VwcG9zaXRpb25zLFxuICAgICAgICAgIHZlcmlmeURlZHVjdGlvbixcbiAgICAgICAgICB2ZXJpZnlQcm9vZlxuICAgICAgICBdLCBjb250ZXh0LCAoY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgICAgIHJldHVybiBmb3J3YXJkKGJhY2spO1xuICAgICAgICB9LCBiYWNrKTtcbiAgICAgIH0sIHRoaXMuY29uc3RyYWludHMsIGNvbnRleHQpO1xuICAgIH0sIGNvbnRleHQsIChjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICBjb25zdCBzY2hlbWEgPSB0aGlzOyAvLy9cblxuICAgICAgY29udGV4dC5hZGRTY2hlbWEoc2NoZW1hKTtcblxuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke3NjaGVtYVN0cmluZ30nIHNjaGVtYS5gKTtcblxuICAgICAgcmV0dXJuIGZvcndhcmQoY29udGV4dCwgYmFjayk7XG4gICAgfSwgKGV4Y2VwdGlvbikgPT4ge1xuICAgICAgaWYgKGV4Y2VwdGlvbikge1xuICAgICAgICByZXR1cm4gYmFjayhleGNlcHRpb24pO1xuICAgICAgfVxuXG4gICAgICBjb250ZXh0LnRyYWNlKGBVbmFibGUgdG8gdmVyaWZ5IHRoZSAnJHtzY2hlbWFTdHJpbmd9JyBzY2hlbWEuYCk7XG5cbiAgICAgIHJldHVybiBiYWNrKCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIHZlcmlmeUxhYmVsKGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBsYWJlbFN0cmluZyA9IHRoaXMubGFiZWwuZ2V0U3RyaW5nKCksXG4gICAgICAgICAgc2NoZW1hU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke3NjaGVtYVN0cmluZ30nIHNjaGVtYSdzICcke2xhYmVsU3RyaW5nfScgbGFiZWwuLi5gKTtcblxuICAgIHJldHVybiB0aGlzLmxhYmVsLnZlcmlmeShjb250ZXh0LCAoY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke3NjaGVtYVN0cmluZ30nIHNjaGVtYSdzICcke2xhYmVsU3RyaW5nfScgbGFiZWwuYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKGNvbnRleHQsIGJhY2spO1xuICAgIH0sIGJhY2spO1xuICB9XG5cbiAgdmVyaWZ5UHJvb2YoY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IHNjaGVtYVN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7c2NoZW1hU3RyaW5nfScgc2NoZW1hJ3MgcHJvb2YuLi5gKTtcblxuICAgIGNvbnN0IHN0YXRlbWVudCA9IHRoaXMuZGVkdWN0aW9uLmdldFN0YXRlbWVudCgpO1xuXG4gICAgcmV0dXJuIHRoaXMucHJvb2YudmVyaWZ5KHN0YXRlbWVudCwgY29udGV4dCwgKGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHtzY2hlbWFTdHJpbmd9JyBzY2hlbWEncyBwcm9vZi5gKTtcblxuICAgICAgcmV0dXJuIGZvcndhcmQoY29udGV4dCwgYmFjayk7XG4gICAgfSwgYmFjayk7XG4gIH1cblxuICB2ZXJpZnlEZWR1Y3Rpb24oY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IHNjaGVtYVN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCksIC8vL1xuICAgICAgICAgIGRlZHVjdGlvblN0cmluZyA9IHRoaXMuZGVkdWN0aW9uLmdldFN0cmluZygpO1xuXG4gICAgY29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHtzY2hlbWFTdHJpbmd9JyBzY2hlbWEncyAnJHtkZWR1Y3Rpb25TdHJpbmd9JyBkZWR1Y3Rpb24uLi5gKTtcblxuICAgIHJldHVybiB0aGlzLmRlZHVjdGlvbi52ZXJpZnkoY29udGV4dCwgKGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHtzY2hlbWFTdHJpbmd9JyBzY2hlbWEncyAnJHtkZWR1Y3Rpb25TdHJpbmd9JyBkZWR1Y3Rpb24uYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKGNvbnRleHQsIGJhY2spO1xuICAgIH0sIGJhY2spO1xuICB9XG5cbiAgdmVyaWZ5U3VwcG9zaXRpb24oc3VwcG9zaXRpb24sIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBzY2hlbWFTdHJpbmcgPSB0aGlzLmdldFN0cmluZygpLCAvLy9cbiAgICAgICAgICBzdXBwb3NpdGlvblN0cmluZyA9IHN1cHBvc2l0aW9uLmdldFN0cmluZygpO1xuXG4gICAgY29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHtzY2hlbWFTdHJpbmd9JyBzY2hlbWEncyAnJHtzdXBwb3NpdGlvblN0cmluZ30nIHN1cHBvc2l0aW9uLi4uYCk7XG5cbiAgICByZXR1cm4gc3VwcG9zaXRpb24udmVyaWZ5KGNvbnRleHQsIChjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7c2NoZW1hU3RyaW5nfScgc2NoZW1hJ3MgJyR7c3VwcG9zaXRpb25TdHJpbmd9JyBzdXBwb3NpdGlvbi5gKTtcblxuICAgICAgcmV0dXJuIGZvcndhcmQoY29udGV4dCwgYmFjayk7XG4gICAgfSwgYmFjayk7XG4gIH1cblxuICB2ZXJpZnlTdXBwb3NpdGlvbnMoY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IHN1cHBvc2l0aW9uc0xlbmd0aCA9IHRoaXMuc3VwcG9zaXRpb25zLmxlbmd0aDtcblxuICAgIGlmIChzdXBwb3NpdGlvbnNMZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiBmb3J3YXJkKGNvbnRleHQsIGJhY2spO1xuICAgIH1cblxuICAgIGNvbnN0IHNjaGVtYVN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7c2NoZW1hU3RyaW5nfScgc2NoZW1hJ3Mgc3VwcG9zaXRpb25zLi4uYCk7XG5cbiAgICByZXR1cm4gZm9yd2FyZHNFdmVyeSh0aGlzLnN1cHBvc2l0aW9ucywgKHN1cHBvc2l0aW9uLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy52ZXJpZnlTdXBwb3NpdGlvbihzdXBwb3NpdGlvbiwgY29udGV4dCwgKGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgICAgY29uc3QgZmFjdE9yU3VicHJvb2YgPSBzdXBwb3NpdGlvbjsgLy8vXG5cbiAgICAgICAgY29udGV4dC5hZGRGYWN0T3JTdWJwcm9vZihmYWN0T3JTdWJwcm9vZik7XG5cbiAgICAgICAgY29udGV4dC5hc3NpZ25Bc3NpZ25tZW50cygpO1xuXG4gICAgICAgIHJldHVybiBmb3J3YXJkKGNvbnRleHQsIGJhY2spO1xuICAgICAgfSwgYmFjayk7XG4gICAgfSwgY29udGV4dCwgKGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHtzY2hlbWFTdHJpbmd9JyBzY2hlbWEncyBzdXBwb3NpdGlvbnMuYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKGNvbnRleHQsIGJhY2spO1xuICAgIH0sIGJhY2spO1xuICB9XG5cbiAgdW5pZnlSZWZlcmVuY2UocmVmZXJlbmNlLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3Qgc2NoZW1hU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKSwgIC8vL1xuICAgICAgICAgIHJlZmVyZW5jZVN0cmluZyA9IHJlZmVyZW5jZS5nZXRTdHJpbmcoKTtcblxuICAgIGNvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHtyZWZlcmVuY2VTdHJpbmd9JyByZWZlcmVuY2Ugd2l0aCB0aGUgJyR7c2NoZW1hU3RyaW5nfScgc2NoZW1hLi4uYCk7XG5cbiAgICByZXR1cm4gdGhpcy5sYWJlbC51bmlmeVJlZmVyZW5jZShyZWZlcmVuY2UsIGNvbnRleHQsIChyZWZlcmVuY2VVbmlmaWVzKSA9PiB7XG4gICAgICBpZiAocmVmZXJlbmNlVW5pZmllcykge1xuICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi51bmlmaWVkIHRoZSAnJHtyZWZlcmVuY2VTdHJpbmd9JyByZWZlcmVuY2Ugd2l0aCB0aGUgJyR7c2NoZW1hU3RyaW5nfScgc2NoZW1hLmApO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gY29udGludWF0aW9uKHJlZmVyZW5jZVVuaWZpZXMpO1xuICAgIH0pO1xuICB9XG5cbiAgdW5pZnlBc3N1bXB0aW9ucyhhc3N1bXB0aW9ucywgY29uc3RyYWludHMsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBmaWx0ZXIoY29uc3RyYWludHMsIChjb25zdHJhaW50LCBmb3J3YXJkLCBiYWNrKSA9PiB7XG4gICAgICBjb25zdHJhaW50LnVuaWZ5QXNzdW1wdGlvbnMoYXNzdW1wdGlvbnMsIGNvbnRleHQsIChhc3N1bXB0aW9uc1VuaWZ5KSA9PiB7XG4gICAgICAgIGxldCBwYXNzZWQgPSBmYWxzZTtcblxuICAgICAgICBpZiAoIWFzc3VtcHRpb25zVW5pZnkpIHtcbiAgICAgICAgICBwYXNzZWQgPSB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbihwYXNzZWQpO1xuICAgICAgfSk7XG4gICAgfSwgZm9yd2FyZCwgYmFjayk7XG4gIH1cblxuICB1bmlmeURlZHVjZWRTdGF0ZW1lbnQoZGVkdWNlZFN0YXRlbWVudCwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IGRlZHVjdGlvblN0cmluZyA9IHRoaXMuZGVkdWN0aW9uLmdldFN0cmluZygpLFxuICAgICAgICAgIGRlZHVjZWRTdGF0ZW1lbnRTdHJpbmcgPSBkZWR1Y2VkU3RhdGVtZW50LmdldFN0cmluZygpO1xuXG4gICAgY29udGV4dC50cmFjZShgVW5pZnlpbmcgdGhlICcke2RlZHVjZWRTdGF0ZW1lbnRTdHJpbmd9JyBkZWR1Y2VkIHN0YXRlbWVudCB3aXRoIHRoZSAnJHtkZWR1Y3Rpb25TdHJpbmd9JyBkZWR1Y3Rpbm8uLi5gKTtcblxuICAgIGNvbnN0IGRlZHVjdGlvbkNvbnRleHQgPSB0aGlzLmRlZHVjdGlvbi5nZXRDb250ZXh0KCksIC8vL1xuICAgICAgICAgIGdlbmVyYWxDb250ZXh0ID0gZGVkdWN0aW9uQ29udGV4dDsgLy8vXG5cbiAgICByZXR1cm4gcmVjb25jaWxlKChjb250ZXh0KSA9PiB7XG4gICAgICBjb25zdCBzdGF0ZW1lbnQgPSBkZWR1Y2VkU3RhdGVtZW50LCAvLy9cbiAgICAgICAgICAgIHNwZWNpZmljQ29udGV4dCA9IGNvbnRleHQ7ICAvLy9cblxuICAgICAgcmV0dXJuIHRoaXMuZGVkdWN0aW9uLnVuaWZ5U3RhdGVtZW50KHN0YXRlbWVudCwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgKHN0YXRlbWVudFVuaWZpZXMpID0+IHtcbiAgICAgICAgbGV0IGRlZHVjZWRTdGF0ZW1lbnRVbmlmaWVzID0gZmFsc2U7XG5cbiAgICAgICAgaWYgKHN0YXRlbWVudFVuaWZpZXMpIHtcbiAgICAgICAgICBjb250ZXh0LmNvbW1pdCgpO1xuXG4gICAgICAgICAgZGVkdWNlZFN0YXRlbWVudFVuaWZpZXMgPSB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGRlZHVjZWRTdGF0ZW1lbnRVbmlmaWVzKSB7XG4gICAgICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udW5pZmllZCB0aGUgJyR7ZGVkdWNlZFN0YXRlbWVudFN0cmluZ30nIGRlZHVjZWQgc3RhdGVtZW50IHdpdGggdGhlICcke2RlZHVjdGlvblN0cmluZ30nIGRlZHVjdGlvbi5gKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBjb250aW51YXRpb24oZGVkdWNlZFN0YXRlbWVudFVuaWZpZXMpO1xuICAgICAgfSk7XG4gICAgfSwgY29udGV4dCk7XG4gIH1cblxuICB1bmlmeVN1cHBvc2VkU3RhdGVtZW50KHN1cHBvc2VkU3RhdGVtZW50LCBzdXBwb3NpdGlvbiwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IHN1cHBvc2l0aW9uU3RyaW5nID0gc3VwcG9zaXRpb24uZ2V0U3RyaW5nKCksXG4gICAgICAgICAgc3VwcG9zZWRTdGF0ZW1lbnRTdHJpbmcgPSBzdXBwb3NlZFN0YXRlbWVudC5nZXRTdHJpbmcoKTtcblxuICAgIGNvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHtzdXBwb3NlZFN0YXRlbWVudFN0cmluZ30nIHN1cHBvc2VkIHN0YXRlbWVudCB3aXRoIHRoZSAnJHtzdXBwb3NpdGlvblN0cmluZ30nIGRlZHVjdGluby4uLmApO1xuXG4gICAgY29uc3Qgc3VwcG9zaXRpb25Db250ZXh0ID0gc3VwcG9zaXRpb24uZ2V0Q29udGV4dCgpLCAvLy9cbiAgICAgICAgICBnZW5lcmFsQ29udGV4dCA9IHN1cHBvc2l0aW9uQ29udGV4dDsgLy8vXG5cbiAgICByZXR1cm4gcmVjb25jaWxlKChjb250ZXh0KSA9PiB7XG4gICAgICBjb25zdCBzdGF0ZW1lbnQgPSBzdXBwb3NlZFN0YXRlbWVudCwgLy8vXG4gICAgICAgICAgICBzcGVjaWZpY0NvbnRleHQgPSBjb250ZXh0OyAgLy8vXG5cbiAgICAgIHJldHVybiBzdXBwb3NpdGlvbi51bmlmeVN0YXRlbWVudChzdGF0ZW1lbnQsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIChzdGF0ZW1lbnRVbmlmaWVzKSA9PiB7XG4gICAgICAgIGxldCBzdXBwb3NlZFN0YXRlbWVudFVuaWZpZXMgPSBmYWxzZTtcblxuICAgICAgICBpZiAoc3RhdGVtZW50VW5pZmllcykge1xuICAgICAgICAgIGNvbnRleHQuY29tbWl0KCk7XG5cbiAgICAgICAgICBzdXBwb3NlZFN0YXRlbWVudFVuaWZpZXMgPSB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHN1cHBvc2VkU3RhdGVtZW50VW5pZmllcykge1xuICAgICAgICAgIGNvbnRleHQuZGVidWcoYC4uLnVuaWZpZWQgdGhlICcke3N1cHBvc2VkU3RhdGVtZW50U3RyaW5nfScgc3VwcG9zZWQgc3RhdGVtZW50IHdpdGggdGhlICcke3N1cHBvc2l0aW9uU3RyaW5nfScgc3VwcG9zaXRpb24uYCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gY29udGludWF0aW9uKHN1cHBvc2VkU3RhdGVtZW50VW5pZmllcyk7XG4gICAgICB9KTtcbiAgICB9LCBjb250ZXh0KTtcbiAgfVxuXG4gIHVuaWZ5U3VwcG9zZWRTdGF0ZW1lbnRzKHN1cHBvc2VkU3RhdGVtZW50cywgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IHN1cHBvc2l0aW9uc0xlbmd0aCA9IHRoaXMuc3VwcG9zaXRpb25zLmxlbmd0aCxcbiAgICAgICAgICBzdXBwb3NlZFN0YXRlbWVudHNMZW5ndGggPSBzdXBwb3NlZFN0YXRlbWVudHMubGVuZ3RoO1xuXG4gICAgaWYgKHN1cHBvc2l0aW9uc0xlbmd0aCAhPT0gc3VwcG9zZWRTdGF0ZW1lbnRzTGVuZ3RoKSB7XG4gICAgICBjb25zdCBzdXBwb3NlZFN0YXRlbWVudHNVbmlmeSA9IGZhbHNlO1xuXG4gICAgICByZXR1cm4gY29udGludWF0aW9uKHN1cHBvc2VkU3RhdGVtZW50c1VuaWZ5KTtcbiAgICB9XG5cbiAgICBsZXQgaW5kZXggPSBzdXBwb3NlZFN0YXRlbWVudHNMZW5ndGg7XG5cbiAgICBiYWNrd2FyZHNFdmVyeShzdXBwb3NlZFN0YXRlbWVudHMsIChzdXBwb3NlZFN0YXRlbWVudCwgZm9yd2FyZCwgYmFjaykgPT4ge1xuICAgICAgaW5kZXgtLTtcblxuICAgICAgY29uc3Qgc3VwcG9zaXRpb24gPSB0aGlzLnN1cHBvc2l0aW9uc1tpbmRleF07XG5cbiAgICAgIHJldHVybiB0aGlzLnVuaWZ5U3VwcG9zZWRTdGF0ZW1lbnQoc3VwcG9zZWRTdGF0ZW1lbnQsIHN1cHBvc2l0aW9uLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKTtcbiAgICB9LCBmb3J3YXJkLCBiYWNrKTtcbiAgfVxuXG4gIHVuaWZ5SW1wbGljaXRBc3N1bXB0aW9ucyhpbXBsaWNpdEFzc3VtcHRpb25zLCBjb25zdHJhaW50cywgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGZpbHRlcihjb25zdHJhaW50cywgKGNvbnN0cmFpbnQsIGZvcndhcmQsIGJhY2spID0+IHtcbiAgICAgIGNvbnN0cmFpbnQudW5pZnlJbXBsaWNpdEFzc3VtcHRpb25zKGltcGxpY2l0QXNzdW1wdGlvbnMsIGNvbnRleHQsIChpbXBsaWNpdEFzc3VtcHRpb25zVW5pZnkpID0+IHtcbiAgICAgICAgbGV0IHBhc3NlZCA9IGZhbHNlO1xuXG4gICAgICAgIGlmICghaW1wbGljaXRBc3N1bXB0aW9uc1VuaWZ5KSB7XG4gICAgICAgICAgcGFzc2VkID0gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBjb250aW51YXRpb24ocGFzc2VkKTtcbiAgICAgIH0pO1xuICAgIH0sIGZvcndhcmQsIGJhY2spO1xuICB9XG5cbiAgdW5pZnlTdGF0ZW1lbnRBbmRTY2hlbWFBc3NlcnRpb24oc3RhdGVtZW50LCBzY2hlbWFBc3NlcnRpb24sIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBsZXQgc2NoZW1hQXNzZXJ0aW9uVW5pZmllcyA9IGZhbHNlO1xuXG4gICAgY29uc3Qgc2NoZW1hU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKSwgIC8vL1xuICAgICAgICAgIHN0YXRlbWVudFN0cmluZyA9IHN0YXRlbWVudC5nZXRTdHJpbmcoKSwgIC8vL1xuICAgICAgICAgIHNjaGVtYUFzc2VydGlvblN0cmluZyA9IHNjaGVtYUFzc2VydGlvbi5nZXRTdHJpbmcoKTtcblxuICAgIGNvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHtzdGF0ZW1lbnRTdHJpbmd9JyBzdGF0ZW1lbnQgYW5kICR7c2NoZW1hQXNzZXJ0aW9uU3RyaW5nfScgc2NoZW1hIGFzc2VydGlvbiB3aXRoIHRoZSAnJHtzY2hlbWFTdHJpbmd9JyBzY2hlbWEuLi5gKTtcblxuICAgIHJldHVybiByZWNvbmNpbGUoKGNvbnRleHQpID0+IHtcbiAgICAgIGNvbnN0IHJlZmVyZW5jZSA9IHNjaGVtYUFzc2VydGlvbi5nZXRSZWZlcmVuY2UoKTtcblxuICAgICAgcmV0dXJuIHRoaXMudW5pZnlSZWZlcmVuY2UocmVmZXJlbmNlLCBjb250ZXh0LCAocmVmZXJlbmNlVW5pZmllcykgPT4ge1xuICAgICAgICBpZiAoIXJlZmVyZW5jZVVuaWZpZXMpIHtcbiAgICAgICAgICByZXR1cm4gY29udGludWF0aW9uKHNjaGVtYUFzc2VydGlvblVuaWZpZXMpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgYXNzdW1wdGlvbnMgPSBzY2hlbWFBc3NlcnRpb24uZ2V0QXNzdW1wdGlvbnMoY29udGV4dCksXG4gICAgICAgICAgICAgIGNvbnN0cmFpbnRzID0gW1xuICAgICAgICAgICAgICAgIC4uLnRoaXMuY29uc3RyYWludHNcbiAgICAgICAgICAgICAgXTtcblxuICAgICAgICByZXR1cm4gdGhpcy51bmlmeUFzc3VtcHRpb25zKGFzc3VtcHRpb25zLCBjb25zdHJhaW50cywgY29udGV4dCwgKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGltcGxpY2l0QXNzdW1wdGlvbnMgPSBzY2hlbWFBc3NlcnRpb24uZ2V0SW1wbGljaXRBc3N1bXB0aW9ucyhjb250ZXh0KTtcblxuICAgICAgICAgIHJldHVybiB0aGlzLnVuaWZ5SW1wbGljaXRBc3N1bXB0aW9ucyhpbXBsaWNpdEFzc3VtcHRpb25zLCBjb25zdHJhaW50cywgY29udGV4dCwgKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgY29uc3RyYWludHNMZW5ndGggPSBjb25zdHJhaW50cy5sZW5ndGg7XG5cbiAgICAgICAgICAgIGlmIChjb25zdHJhaW50c0xlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbihzY2hlbWFBc3NlcnRpb25VbmlmaWVzKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgY29uZGl0aW9uYWwgPSB0aGlzLmlzQ29uZGl0aW9uYWwoKSxcbiAgICAgICAgICAgICAgICAgIHN0YXRlbWVudENvbmRpdGlvbmFsID0gc3RhdGVtZW50LmlzQ29uZGl0aW9uYWwoKTtcblxuICAgICAgICAgICAgaWYgKGNvbmRpdGlvbmFsICE9PSBzdGF0ZW1lbnRDb25kaXRpb25hbCkge1xuICAgICAgICAgICAgICBjb250ZXh0LnRyYWNlKGBFaXRoZXIgdGhlICcke3N0YXRlbWVudFN0cmluZ30nIHN0YXRlbWVudCBpcyB1bmNvbmRpdGlvbmFsIHdoaWxzdCB0aGUgJyR7c2NoZW1hU3RyaW5nfScgc2NoZW1hIGlzIGNvbmRpdGlvbmFsIG9yIHZpY2UgdmVyc2UuYCk7XG5cbiAgICAgICAgICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbihzY2hlbWFBc3NlcnRpb25VbmlmaWVzKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgZGVkdWNlZFN0YXRlbWVudCA9IHN0YXRlbWVudC5maW5kRGVkdWNlZFN0YXRlbWVudChjb250ZXh0KTtcblxuICAgICAgICAgICAgcmV0dXJuIHRoaXMudW5pZnlEZWR1Y2VkU3RhdGVtZW50KGRlZHVjZWRTdGF0ZW1lbnQsIGNvbnRleHQsIChkZWR1Y2VkU3RhdGVtZW50VW5pZmllcykgPT4ge1xuICAgICAgICAgICAgICBpZiAoIWRlZHVjZWRTdGF0ZW1lbnRVbmlmaWVzKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbihzY2hlbWFBc3NlcnRpb25VbmlmaWVzKTtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGNvbnN0IHN1cHBvc2VkU3RhdGVtZW50cyA9IHN0YXRlbWVudC5maW5kU3VwcG9zZWRTdGF0ZW1lbnRzKGNvbnRleHQpO1xuXG4gICAgICAgICAgICAgIHJldHVybiB0aGlzLnVuaWZ5U3VwcG9zZWRTdGF0ZW1lbnRzKHN1cHBvc2VkU3RhdGVtZW50cywgY29udGV4dCwgKHN1cHBvc2VkU3RhdGVtZW50c1VuaWZ5KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHN1cHBvc2VkU3RhdGVtZW50c1VuaWZ5KSB7XG4gICAgICAgICAgICAgICAgICBzY2hlbWFBc3NlcnRpb25VbmlmaWVzID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoc2NoZW1hQXNzZXJ0aW9uVW5pZmllcykge1xuICAgICAgICAgICAgICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udW5pZmllZCB0aGUgJyR7c3RhdGVtZW50U3RyaW5nfScgc3RhdGVtZW50IGFuZCAke3NjaGVtYUFzc2VydGlvblN0cmluZ30nIHNjaGVtYSBhc3NlcnRpb24gd2l0aCB0aGUgJyR7c2NoZW1hU3RyaW5nfScgc2NoZW1hLmApO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybiBjb250aW51YXRpb24oc2NoZW1hQXNzZXJ0aW9uVW5pZmllcyk7XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSwgY29udGV4dCk7XG4gIH1cblxuICB0b0pTT04oKSB7XG4gICAgbGV0IGpzb247XG5cbiAgICBjb25zdCBsYWJlbEpTT04gPSBsYWJlbFRvTGFiZWxKU09OKHRoaXMubGFiZWwpLFxuICAgICAgICAgIGRlZHVjdGlvbkpTT04gPSBkZWR1Y3Rpb25Ub0RlZHVjdGlvbkpTT04odGhpcy5kZWR1Y3Rpb24pLFxuICAgICAgICAgIHN1cHBvc2l0aW9uc0pTT04gPSBzdXBwb3NpdGlvbnNUb1N1cHBvc2l0aW9uc0pTT04odGhpcy5zdXBwb3NpdGlvbnMpLFxuICAgICAgICAgIGNvbnN0cmFpbnRzSlNPTiA9IGNvbnN0cmFpbnRzVG9Db25zdHJhaW50c0pTT04odGhpcy5jb25zdHJhaW50cyksXG4gICAgICAgICAgc3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTtcblxuICAgIGxldCBicmVha1BvaW50O1xuXG4gICAgYnJlYWtQb2ludCA9IHRoaXMuZ2V0QnJlYWtQb2ludCgpO1xuXG4gICAgY29uc3QgYnJlYWtQb2ludEpTT04gPSBicmVha1BvaW50VG9CcmVha1BvaW50SlNPTihicmVha1BvaW50KTtcblxuICAgIGJyZWFrUG9pbnQgPSBicmVha1BvaW50SlNPTjsgIC8vL1xuXG4gICAgY29uc3QgbGFiZWwgPSBsYWJlbEpTT04sICAvLy9cbiAgICAgICAgICBkZWR1Y3Rpb24gPSBkZWR1Y3Rpb25KU09OLCAgLy8vXG4gICAgICAgICAgc3VwcG9zaXRpb25zID0gc3VwcG9zaXRpb25zSlNPTiwgIC8vL1xuICAgICAgICAgIGNvbnN0cmFpbnRzID0gY29uc3RyYWludHNKU09OOyAgLy8vXG5cbiAgICBqc29uID0ge1xuICAgICAgc3RyaW5nLFxuICAgICAgYnJlYWtQb2ludCxcbiAgICAgIGxhYmVsLFxuICAgICAgZGVkdWN0aW9uLFxuICAgICAgc3VwcG9zaXRpb25zLFxuICAgICAgY29uc3RyYWludHNcbiAgICB9O1xuXG4gICAgcmV0dXJuIGpzb247XG4gIH1cblxuICBzdGF0aWMgbmFtZSA9IFwiU2NoZW1hXCI7XG5cbiAgc3RhdGljIGZyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgICBjb25zdCBsYWJlbCA9IGxhYmVsRnJvbUpTT04oanNvbiwgY29udGV4dCksXG4gICAgICAgICAgZGVkdWN0aW9uID0gZGVkdWN0aW9uRnJvbUpTT04oanNvbiwgY29udGV4dCksXG4gICAgICAgICAgc3VwcG9zaXRpb25zID0gc3VwcG9zaXRpb25zRnJvbUpTT04oanNvbiwgY29udGV4dCksXG4gICAgICAgICAgY29uc3RyYWludHMgPSBjb25zdHJhaW50c0Zyb21KU09OKGpzb24sIGNvbnRleHQpLFxuICAgICAgICAgIHN0cmluZyA9IHNjaGVtYVN0cmluZ0Zyb21MYWJlbFN1cHBvc2l0aW9uc0FuZERlZHVjdGlvbihsYWJlbCwgc3VwcG9zaXRpb25zLCBkZWR1Y3Rpb24pLFxuICAgICAgICAgIG5vZGUgPSBudWxsLFxuICAgICAgICAgIGJyZWFrUG9pbnQgPSBicmVha1BvaW50RnJvbUpTT04oanNvbiksXG4gICAgICAgICAgcHJvb2YgPSBudWxsLFxuICAgICAgICAgIHNjaGVtYSA9IG5ldyBTY2hlbWEoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCBsYWJlbCwgc3VwcG9zaXRpb25zLCBkZWR1Y3Rpb24sIHByb29mLCBjb25zdHJhaW50cyk7XG5cbiAgICByZXR1cm4gc2NoZW1hO1xuICB9XG59KTtcbiJdLCJuYW1lcyI6WyJjdXQiLCJhbGwiLCJmaWx0ZXIiLCJpc29sYXRlIiwiZm9yd2FyZHNFdmVyeSIsImJhY2t3YXJkc0V2ZXJ5IiwiY29udGludWF0aW9uVXRpbGl0aWVzIiwiYnJlYWthYmxlIiwiYnJlYWtQb2ludEZyb21KU09OIiwiYnJlYWtQb2ludFRvQnJlYWtQb2ludEpTT04iLCJicmVha1BvaW50VXRpbGl0aWVzIiwiZGVmaW5lIiwiU2NoZW1hIiwiRWxlbWVudCIsImNvbnRleHQiLCJzdHJpbmciLCJub2RlIiwiYnJlYWtQb2ludCIsImxhYmVsIiwic3VwcG9zaXRpb25zIiwiZGVkdWN0aW9uIiwicHJvb2YiLCJjb25zdHJhaW50cyIsImdldExhYmVsIiwiZ2V0U3VwcG9zaXRpb25zIiwiZ2V0RGVkdWN0aW9uIiwiZ2V0UHJvb2YiLCJnZXRNQ29uc3RyYWludCIsImlzQ29uZGl0aW9uYWwiLCJzdXBwb3NpdGlvbnNMZW5ndGgiLCJsZW5ndGgiLCJjb25kaXRpb25hbCIsImNvbXBhcmVSZWZlcmVuY2UiLCJyZWZlcmVuY2UiLCJsYWJlbENvbXBhcmVzVG9SZWZmZXJlbmNlIiwiY29tcGFyZXNUb1JlZmVyZW5jZSIsIm1hdGNoTWV0YXZhcmlhYmxlTm9kZSIsIm1ldGF2YXJpYWJsZU5vZGUiLCJ2ZXJpZnkiLCJmb3J3YXJkIiwiYmFjayIsInNjaGVtYVN0cmluZyIsImdldFN0cmluZyIsInRyYWNlIiwiZW5jYXBzdWxhdGUiLCJ2ZXJpZnlQcm9vZiIsImJpbmQiLCJ2ZXJpZnlMYWJlbCIsInZlcmlmeURlZHVjdGlvbiIsInZlcmlmeVN1cHBvc2l0aW9ucyIsInNjaGVtYSIsImFkZFNjaGVtYSIsImRlYnVnIiwiZXhjZXB0aW9uIiwibGFiZWxTdHJpbmciLCJzdGF0ZW1lbnQiLCJnZXRTdGF0ZW1lbnQiLCJkZWR1Y3Rpb25TdHJpbmciLCJ2ZXJpZnlTdXBwb3NpdGlvbiIsInN1cHBvc2l0aW9uIiwic3VwcG9zaXRpb25TdHJpbmciLCJmYWN0T3JTdWJwcm9vZiIsImFkZEZhY3RPclN1YnByb29mIiwiYXNzaWduQXNzaWdubWVudHMiLCJ1bmlmeVJlZmVyZW5jZSIsInJlZmVyZW5jZVN0cmluZyIsInJlZmVyZW5jZVVuaWZpZXMiLCJjb250aW51YXRpb24iLCJ1bmlmeUFzc3VtcHRpb25zIiwiYXNzdW1wdGlvbnMiLCJjb25zdHJhaW50IiwiYXNzdW1wdGlvbnNVbmlmeSIsInBhc3NlZCIsInVuaWZ5RGVkdWNlZFN0YXRlbWVudCIsImRlZHVjZWRTdGF0ZW1lbnQiLCJkZWR1Y2VkU3RhdGVtZW50U3RyaW5nIiwiZGVkdWN0aW9uQ29udGV4dCIsImdldENvbnRleHQiLCJnZW5lcmFsQ29udGV4dCIsInJlY29uY2lsZSIsInNwZWNpZmljQ29udGV4dCIsInVuaWZ5U3RhdGVtZW50Iiwic3RhdGVtZW50VW5pZmllcyIsImRlZHVjZWRTdGF0ZW1lbnRVbmlmaWVzIiwiY29tbWl0IiwidW5pZnlTdXBwb3NlZFN0YXRlbWVudCIsInN1cHBvc2VkU3RhdGVtZW50Iiwic3VwcG9zZWRTdGF0ZW1lbnRTdHJpbmciLCJzdXBwb3NpdGlvbkNvbnRleHQiLCJzdXBwb3NlZFN0YXRlbWVudFVuaWZpZXMiLCJ1bmlmeVN1cHBvc2VkU3RhdGVtZW50cyIsInN1cHBvc2VkU3RhdGVtZW50cyIsInN1cHBvc2VkU3RhdGVtZW50c0xlbmd0aCIsInN1cHBvc2VkU3RhdGVtZW50c1VuaWZ5IiwiaW5kZXgiLCJ1bmlmeUltcGxpY2l0QXNzdW1wdGlvbnMiLCJpbXBsaWNpdEFzc3VtcHRpb25zIiwiaW1wbGljaXRBc3N1bXB0aW9uc1VuaWZ5IiwidW5pZnlTdGF0ZW1lbnRBbmRTY2hlbWFBc3NlcnRpb24iLCJzY2hlbWFBc3NlcnRpb24iLCJzY2hlbWFBc3NlcnRpb25VbmlmaWVzIiwic3RhdGVtZW50U3RyaW5nIiwic2NoZW1hQXNzZXJ0aW9uU3RyaW5nIiwiZ2V0UmVmZXJlbmNlIiwiZ2V0QXNzdW1wdGlvbnMiLCJnZXRJbXBsaWNpdEFzc3VtcHRpb25zIiwiY29uc3RyYWludHNMZW5ndGgiLCJzdGF0ZW1lbnRDb25kaXRpb25hbCIsImZpbmREZWR1Y2VkU3RhdGVtZW50IiwiZmluZFN1cHBvc2VkU3RhdGVtZW50cyIsInRvSlNPTiIsImpzb24iLCJsYWJlbEpTT04iLCJsYWJlbFRvTGFiZWxKU09OIiwiZGVkdWN0aW9uSlNPTiIsImRlZHVjdGlvblRvRGVkdWN0aW9uSlNPTiIsInN1cHBvc2l0aW9uc0pTT04iLCJzdXBwb3NpdGlvbnNUb1N1cHBvc2l0aW9uc0pTT04iLCJjb25zdHJhaW50c0pTT04iLCJjb25zdHJhaW50c1RvQ29uc3RyYWludHNKU09OIiwiZ2V0QnJlYWtQb2ludCIsImJyZWFrUG9pbnRKU09OIiwibmFtZSIsImZyb21KU09OIiwibGFiZWxGcm9tSlNPTiIsImRlZHVjdGlvbkZyb21KU09OIiwic3VwcG9zaXRpb25zRnJvbUpTT04iLCJjb25zdHJhaW50c0Zyb21KU09OIiwic2NoZW1hU3RyaW5nRnJvbUxhYmVsU3VwcG9zaXRpb25zQW5kRGVkdWN0aW9uIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFtQkE7OztlQUFBOzs7Z0NBakJvRTswQkFFN0M7eUJBQ2dCO3dCQUN1QjtzQkFRZjtBQUUvQyxNQUFNLEVBQUVBLEdBQUcsRUFBRUMsR0FBRyxFQUFFQyxNQUFNLEVBQUVDLE9BQU8sRUFBRUMsYUFBYSxFQUFFQyxjQUFjLEVBQUUsR0FBR0MscUNBQXFCLEVBQ3BGLEVBQUVDLFNBQVMsRUFBRUMsa0JBQWtCLEVBQUVDLDBCQUEwQixFQUFFLEdBQUdD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
|
|
@@ -57,7 +57,7 @@ const _default = (0, _elements.define)(class FrameSubstitution extends _substitu
|
|
|
57
57
|
return this.targetFrame.matchMetavariableNode(metavariableNode);
|
|
58
58
|
}
|
|
59
59
|
compareParameter(parameter) {
|
|
60
|
-
const
|
|
60
|
+
const comparesToParameter = false; ///
|
|
61
61
|
return comparesToParameter;
|
|
62
62
|
}
|
|
63
63
|
compareFrame(frame, context) {
|
|
@@ -184,4 +184,4 @@ function replacementFrameFromFrameSubstitutionNode(frameSubstitutionNode, specif
|
|
|
184
184
|
return replacementFrame;
|
|
185
185
|
}
|
|
186
186
|
|
|
187
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L3N1YnN0aXR1dGlvbi9mcmFtZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgYnJlYWtQb2ludFV0aWxpdGllcywgY29udGludWF0aW9uVXRpbGl0aWVzIH0gZnJvbSBcIm9jY2FtLWxhbmd1YWdlc1wiO1xuXG5pbXBvcnQgU3Vic3RpdHV0aW9uIGZyb20gXCIuLi9zdWJzdGl0dXRpb25cIjtcblxuaW1wb3J0IHsgZGVmaW5lIH0gZnJvbSBcIi4uLy4uL2VsZW1lbnRzXCI7XG5pbXBvcnQgeyBkZXNpc3QsIGRlY2xhcmUgfSBmcm9tIFwiLi4vLi4vdXRpbGl0aWVzL3N0YXRlXCI7XG5pbXBvcnQgeyBpbnN0YW50aWF0ZUZyYW1lU3Vic3RpdHV0aW9uIH0gZnJvbSBcIi4uLy4uL3Byb2Nlc3MvaW5zdGFudGlhdGVcIjtcbmltcG9ydCB7IGZyYW1lU3Vic3RpdHV0aW9uRnJvbUZyYW1lU3Vic3RpdHV0aW9uTm9kZSB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvZWxlbWVudFwiO1xuaW1wb3J0IHsgZnJhbWVTdWJzdGl0dXRpb25TdHJpbmdGcm9tRnJhbWVBbmRNZXRhdmFyaWFibGUgfSBmcm9tIFwiLi4vLi4vdXRpbGl0aWVzL3N0cmluZ1wiO1xuaW1wb3J0IHsgYWJsYXRlcywgbWFuaWZlc3QsIGF0dGVtcHRzLCBwYXJ0aWNpcGF0ZSwgaW5zdGFudGlhdGUsIHVuc2VyaWFsaXNlcyB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvY29udGV4dFwiO1xuXG5jb25zdCB7IHVuYnJlYWthYmxlIH0gPSBicmVha1BvaW50VXRpbGl0aWVzLFxuICAgICAgeyBjdXQsIGFsbCwgaXNvbGF0ZSB9ID0gY29udGludWF0aW9uVXRpbGl0aWVzO1xuXG5leHBvcnQgZGVmYXVsdCBkZWZpbmUoY2xhc3MgRnJhbWVTdWJzdGl0dXRpb24gZXh0ZW5kcyBTdWJzdGl0dXRpb24ge1xuICBjb25zdHJ1Y3Rvcihjb250ZXh0cywgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCB0YXJnZXRGcmFtZSwgcmVwbGFjZW1lbnRGcmFtZSkge1xuICAgIHN1cGVyKGNvbnRleHRzLCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQpO1xuXG4gICAgdGhpcy50YXJnZXRGcmFtZSA9IHRhcmdldEZyYW1lO1xuICAgIHRoaXMucmVwbGFjZW1lbnRGcmFtZSA9IHJlcGxhY2VtZW50RnJhbWU7XG4gIH1cblxuICBnZXRUYXJnZXRGcmFtZSgpIHtcbiAgICByZXR1cm4gdGhpcy50YXJnZXRGcmFtZTtcbiAgfVxuXG4gIGdldFJlcGxhY2VtZW50RnJhbWUoKSB7XG4gICAgcmV0dXJuIHRoaXMucmVwbGFjZW1lbnRGcmFtZTtcbiAgfVxuXG4gIGdldEZyYW1lU3Vic3RpdHV0aW9uTm9kZSgpIHtcbiAgICBjb25zdCBub2RlID0gdGhpcy5nZXROb2RlKCksXG4gICAgICAgICAgZnJhbWVTdWJzdGl0dXRpb25Ob2RlID0gbm9kZTsgLy8vXG5cbiAgICByZXR1cm4gZnJhbWVTdWJzdGl0dXRpb25Ob2RlO1xuICB9XG5cbiAgZ2V0TWV0YXZhcmlhYmxlTm9kZSgpIHsgcmV0dXJuIHRoaXMudGFyZ2V0RnJhbWUuZ2V0TWV0YXZhcmlhYmxlTm9kZSgpOyB9XG5cbiAgZ2V0VGFyZ2V0Tm9kZSgpIHtcbiAgICBjb25zdCB0YXJnZXRGcmFtZU5vZGUgPSB0aGlzLnRhcmdldEZyYW1lLmdldE5vZGUoKSxcbiAgICAgICAgICB0ZXJnZXROb2RlID0gdGFyZ2V0RnJhbWVOb2RlOyAvLy9cblxuICAgIHJldHVybiB0ZXJnZXROb2RlO1xuICB9XG5cbiAgZ2V0UmVwbGFjZW1lbnROb2RlKCkge1xuICAgIGNvbnN0IHJlcGxhY2VtZW50RnJhbWVOb2RlID0gdGhpcy5yZXBsYWNlbWVudEZyYW1lLmdldE5vZGUoKSxcbiAgICAgICAgICByZXBsYWNlbWVudE5vZGUgPSByZXBsYWNlbWVudEZyYW1lTm9kZTsgLy8vXG5cbiAgICByZXR1cm4gcmVwbGFjZW1lbnROb2RlO1xuICB9XG5cbiAgaXNUcml2aWFsKCkge1xuICAgIGNvbnN0IHRhcmdldEZyYW1lRXF1YWxUb1JlcGxhY2VtZW50RnJhbWUgPSB0aGlzLnRhcmdldEZyYW1lLmlzRXF1YWxUbyh0aGlzLnJlcGxhY2VtZW50RnJhbWUpLFxuICAgICAgICAgIHRyaXZpYWwgPSB0YXJnZXRGcmFtZUVxdWFsVG9SZXBsYWNlbWVudEZyYW1lOyAvLy9cblxuICAgIHJldHVybiB0cml2aWFsO1xuICB9XG5cbiAgbWF0Y2hNZXRhdmFyaWFibGVOb2RlKG1ldGF2YXJpYWJsZU5vZGUpIHsgcmV0dXJuIHRoaXMudGFyZ2V0RnJhbWUubWF0Y2hNZXRhdmFyaWFibGVOb2RlKG1ldGF2YXJpYWJsZU5vZGUpOyB9XG5cbiAgY29tcGFyZVBhcmFtZXRlcihwYXJhbWV0ZXIpIHtcbiAgICBjb25zdCB0YXJnZXRGcmFtZUNvbXBhcmVzVG9QYXJhbWV0ZXIgPSB0aGlzLnRhcmdldEZyYW1lLmNvbXBhcmVQYXJhbWV0ZXIocGFyYW1ldGVyKSxcbiAgICAgICAgICBjb21wYXJlc1RvUGFyYW1ldGVyID0gdGFyZ2V0RnJhbWVDb21wYXJlc1RvUGFyYW1ldGVyOyAgLy8vXG5cbiAgICByZXR1cm4gY29tcGFyZXNUb1BhcmFtZXRlcjtcbiAgfVxuXG4gIGNvbXBhcmVGcmFtZShmcmFtZSwgY29udGV4dCkge1xuICAgIGNvbnN0IGZyYW1lRXF1YWxUb1JlcGxhY2VtZW50RnJhbWUgPSB0aGlzLnJlcGxhY2VtZW50RnJhbWUuaXNFcXVhbFRvKGZyYW1lKSxcbiAgICAgICAgICBjb21wYXJlZFRvRnJhbWUgPSBmcmFtZUVxdWFsVG9SZXBsYWNlbWVudEZyYW1lOyAvLy9cblxuICAgIHJldHVybiBjb21wYXJlZFRvRnJhbWU7XG4gIH1cblxuICB2ZXJpZnkgPSB1bmJyZWFrYWJsZShmdW5jdGlvbiAoY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGZvcndhcmQgPSBjdXQoZm9yd2FyZCwgYmFjayk7IC8vL1xuXG4gICAgY29uc3QgZnJhbWVTdWJzdGl0dXRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7ZnJhbWVTdWJzdGl0dXRpb25TdHJpbmd9JyBmcmFtZSBzdWJzdGl0dXRpb24uLi5gKTtcblxuICAgIHJldHVybiBkZXNpc3QoKHN0YXRlKSA9PiB7XG4gICAgICByZXR1cm4gZGVjbGFyZSgoc3RhdGUpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmFsaWRhdGUoc3RhdGUsIGNvbnRleHQsIChmcmFtZVN1YnN0aXR1dGlvbiwgY29udGV4dCAsIGJhY2spID0+IHtcbiAgICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7ZnJhbWVTdWJzdGl0dXRpb25TdHJpbmd9JyBmcmFtZSBzdWJzdGl0dXRpb24uYCk7XG5cbiAgICAgICAgICByZXR1cm4gZm9yd2FyZChjb250ZXh0LCBiYWNrKTtcbiAgICAgICAgfSwgYmFjayk7XG4gICAgICB9LCBzdGF0ZSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIHZhbGlkYXRlKHN0YXRlLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgbGV0IHN1YnN0aXR1dGlvbjtcblxuICAgIGNvbnN0IGZyYW1lU3Vic3RpdHV0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7ZnJhbWVTdWJzdGl0dXRpb25TdHJpbmd9JyBmcmFtZSBzdWJzdGl0dXRpb24uLi5gKTtcblxuICAgIHN1YnN0aXR1dGlvbiA9IHRoaXMuZmluZFN1YnN0aXR1dGlvbihjb250ZXh0KTtcblxuICAgIGlmIChzdWJzdGl0dXRpb24gIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IGZyYW1lU3Vic3RpdHV0aW9uID0gc3Vic3RpdHV0aW9uOyAgLy8vXG5cbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnRoZSAnJHtmcmFtZVN1YnN0aXR1dGlvblN0cmluZ30nIGZyYW1lIHN1YnN0aXR1dGlvbiBpcyBhbHJlYWR5IHByZXNlbmV0LmApO1xuXG4gICAgICByZXR1cm4gZm9yd2FyZChmcmFtZVN1YnN0aXR1dGlvbiwgY29udGV4dCwgYmFjayk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGlzb2xhdGUoKHN0YXRlLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSA9PiB7XG4gICAgICBzdWJzdGl0dXRpb24gPSB0aGlzOyAgLy8vXG5cbiAgICAgIGNvbnN0IGdlbmVyYWxDb250ZXh0ID0gdGhpcy5nZXRHZW5lcmFsQ29udGV4dCgpLFxuICAgICAgICAgICAgc3BlY2lmaWNDb250ZXh0ID0gdGhpcy5nZXRTcGVjaWZpY0NvbnRleHQoKTtcblxuICAgICAgcmV0dXJuIGF0dGVtcHRzKChnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0KSA9PiB7XG4gICAgICAgIGNvbnN0IHZhbGlkYXRlVGFyZ2V0RnJhbWUgPSB0aGlzLnZhbGlkYXRlVGFyZ2V0RnJhbWUuYmluZCh0aGlzKSxcbiAgICAgICAgICAgICAgdmFsaWRhdGVSZXBsYWNlbWVudEZyYW1lID0gdGhpcy52YWxpZGF0ZVJlcGxhY2VtZW50RnJhbWUuYmluZCh0aGlzKTtcblxuICAgICAgICByZXR1cm4gYWxsKFtcbiAgICAgICAgICB2YWxpZGF0ZVRhcmdldEZyYW1lLFxuICAgICAgICAgIHZhbGlkYXRlUmVwbGFjZW1lbnRGcmFtZVxuICAgICAgICBdLCBzdGF0ZSwgY29udGV4dCwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgKHN0YXRlLCBjb250ZXh0LCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0KSA9PiB7XG4gICAgICAgICAgdGhpcy5jb21taXQoZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCk7XG5cbiAgICAgICAgICByZXR1cm4gZm9yd2FyZChiYWNrKTtcbiAgICAgICAgfSwgYmFjayk7XG4gICAgICB9LCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0KTtcbiAgICB9LCBzdGF0ZSwgY29udGV4dCwgKHN0YXRlLCBjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICBjb25zdCBmcmFtZVN1YnN0aXR1dGlvbiA9IHN1YnN0aXR1dGlvbjsgIC8vL1xuXG4gICAgICBjb250ZXh0LmFkZFN1YnN0aXR1dGlvbihzdWJzdGl0dXRpb24pO1xuXG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke2ZyYW1lU3Vic3RpdHV0aW9uU3RyaW5nfScgZnJhbWUgc3Vic3RpdHV0aW9uLmApO1xuXG4gICAgICByZXR1cm4gZm9yd2FyZChmcmFtZVN1YnN0aXR1dGlvbiwgY29udGV4dCwgYmFjayk7XG4gICAgfSwgYmFjayk7XG4gIH1cblxuICB2YWxpZGF0ZVRhcmdldEZyYW1lKHN0YXRlLCBjb250ZXh0LCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCBjb250aW51YXRpb24pIHtcbiAgICBsZXQgdGFyZ2V0RnJhbWVWYWxpZGF0ZXM7XG5cbiAgICBjb25zdCBmcmFtZVN1YnN0aXR1dGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke2ZyYW1lU3Vic3RpdHV0aW9uU3RyaW5nfScgZnJhbWUgc3Vic3RpdHV0aW9uJ3MgdGFyZ2V0IGZyYW1lLi4uYCk7XG5cbiAgICBjb25zdCB0YXJnZXRGcmFtZVNpbmd1bGFyID0gdGhpcy50YXJnZXRGcmFtZS5pc1Npbmd1bGFyKCk7XG5cbiAgICBpZiAodGFyZ2V0RnJhbWVTaW5ndWxhcikge1xuICAgICAgdGFyZ2V0RnJhbWVWYWxpZGF0ZXMgPSB0aGlzLnRhcmdldEZyYW1lLnZhbGlkYXRlKHN0YXRlLCBnZW5lcmFsQ29udGV4dCwgKHRhcmdldEZyYW1lLCBnZW5lcmFsQ29udGV4dCkgPT4ge1xuICAgICAgICBsZXQgdmFsaWRhdGVzO1xuXG4gICAgICAgIHZhbGlkYXRlcyA9IGNvbnRpbnVhdGlvbihzdGF0ZSwgY29udGV4dCwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCk7XG5cbiAgICAgICAgcmV0dXJuIHZhbGlkYXRlcztcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCB0YXJnZXRGcmFtZVN0cmluZyA9IHRoaXMudGFyZ2V0RnJhbWUuZ2V0U3RyaW5nKCk7XG5cbiAgICAgIHRhcmdldEZyYW1lVmFsaWRhdGVzID0gZmFsc2U7XG5cbiAgICAgIGNvbnRleHQuZGVidWcoYFRoZSAnJHt0YXJnZXRGcmFtZVN0cmluZ30nIHRhcmdldCBmcmFtZSBpcyBub3Qgc2luZ3VsYXIuYCk7XG4gICAgfVxuXG4gICAgaWYgKHRhcmdldEZyYW1lVmFsaWRhdGVzKSB7XG4gICAgICBjb250ZXh0LnRyYWNlKGAuLi52YWxpZGF0ZWQgdGhlICcke2ZyYW1lU3Vic3RpdHV0aW9uU3RyaW5nfScgZnJhbWUgc3Vic3RpdHV0aW9uJ3MgdGFyZ2V0IGZyYW1lLmApO1xuICAgIH1cblxuICAgIHJldHVybiB0YXJnZXRGcmFtZVZhbGlkYXRlcztcbiAgfVxuXG4gIHZhbGlkYXRlUmVwbGFjZW1lbnRGcmFtZShzdGF0ZSwgY29udGV4dCwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgY29udGludWF0aW9uKSB7XG4gICAgbGV0IHJlcGxhY2VtZW50RnJhbWVWYWxpZGF0ZXM7XG5cbiAgICBjb25zdCBmcmFtZVN1YnN0aXR1dGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke2ZyYW1lU3Vic3RpdHV0aW9uU3RyaW5nfScgZnJhbWUgc3Vic3RpdHV0aW9uJ3MgcmVwbGFjZW1lbnQgZnJhbWUuLi5gKTtcblxuICAgIHBhcnRpY2lwYXRlKChzcGVjaWZpY0NvbnRleHQpID0+IHtcbiAgICAgIHJlcGxhY2VtZW50RnJhbWVWYWxpZGF0ZXMgPSB0aGlzLnJlcGxhY2VtZW50RnJhbWUudmFsaWRhdGUoc3RhdGUsIHNwZWNpZmljQ29udGV4dCwgKHJlcGxhY2VtZW50RnJhbWUsIHNwZWNpZmljQ29udGV4dCkgPT4ge1xuICAgICAgICBsZXQgdmFsaWRhdGVzO1xuXG4gICAgICAgIHZhbGlkYXRlcyA9IGNvbnRpbnVhdGlvbihzdGF0ZSwgY29udGV4dCwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCk7XG5cbiAgICAgICAgcmV0dXJuIHZhbGlkYXRlcztcbiAgICAgIH0pO1xuICAgIH0sIHNwZWNpZmljQ29udGV4dCwgY29udGV4dCk7XG5cbiAgICBpZiAocmVwbGFjZW1lbnRGcmFtZVZhbGlkYXRlcykge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHtmcmFtZVN1YnN0aXR1dGlvblN0cmluZ30nIGZyYW1lIHN1YnN0aXR1dGlvbidzIHJlcGxhY2VtZW50IGZyYW1lLmApO1xuICAgIH1cblxuICAgIHJldHVybiByZXBsYWNlbWVudEZyYW1lVmFsaWRhdGVzO1xuICB9XG5cbiAgc3RhdGljIG5hbWUgPSBcIkZyYW1lU3Vic3RpdHV0aW9uXCI7XG5cbiAgc3RhdGljIGZyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgICBsZXQgZnJhbWVTdWJzdGl0dXRpb25uO1xuXG4gICAgY29uc3QgeyBuYW1lIH0gPSBqc29uO1xuXG4gICAgaWYgKHRoaXMubmFtZSA9PT0gbmFtZSkge1xuICAgICAgaW5zdGFudGlhdGUoKGNvbnRleHQpID0+IHtcbiAgICAgICAgdW5zZXJpYWxpc2VzKChqc29uLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0KSA9PiB7XG4gICAgICAgICAgY29uc3QgeyBzdHJpbmcgfSA9IGpzb24sXG4gICAgICAgICAgICAgICAgZnJhbWVTdWJzdGl0dXRpb25Ob2RlID0gaW5zdGFudGlhdGVGcmFtZVN1YnN0aXR1dGlvbihzdHJpbmcsIGNvbnRleHQpLFxuICAgICAgICAgICAgICAgIG5vZGUgPSBmcmFtZVN1YnN0aXR1dGlvbk5vZGUsIC8vL1xuICAgICAgICAgICAgICAgIGNvbnRleHRzID0gW1xuICAgICAgICAgICAgICAgICAgZ2VuZXJhbENvbnRleHQsXG4gICAgICAgICAgICAgICAgICBzcGVjaWZpY0NvbnRleHRcbiAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIGJyZWFrUG9pbnQgPSBudWxsLFxuICAgICAgICAgICAgICAgIHRhcmdldEZyYW1lID0gdGFyZ2V0RnJhbWVGcm9tRnJhbWVTdWJzdGl0dXRpb25Ob2RlKGZyYW1lU3Vic3RpdHV0aW9uTm9kZSwgZ2VuZXJhbENvbnRleHQpLFxuICAgICAgICAgICAgICAgIHJlcGxhY2VtZW50RnJhbWUgPSByZXBsYWNlbWVudEZyYW1lRnJvbUZyYW1lU3Vic3RpdHV0aW9uTm9kZShmcmFtZVN1YnN0aXR1dGlvbk5vZGUsIHNwZWNpZmljQ29udGV4dCk7XG5cbiAgICAgICAgICBmcmFtZVN1YnN0aXR1dGlvbm4gPSBuZXcgRnJhbWVTdWJzdGl0dXRpb24oY29udGV4dHMsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgdGFyZ2V0RnJhbWUsIHJlcGxhY2VtZW50RnJhbWUpO1xuICAgICAgICB9LCBqc29uLCBjb250ZXh0KTtcbiAgICAgIH0sIGNvbnRleHQpO1xuICAgIH1cblxuICAgIHJldHVybiBmcmFtZVN1YnN0aXR1dGlvbm47XG4gIH1cblxuICBzdGF0aWMgZnJvbUZyYW1lQW5kTWV0YXZhcmlhYmxlKGZyYW1lLCBtZXRhdmFyaWFibGUsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQpIHtcbiAgICBsZXQgZnJhbWVTdWJzdGl0dXRpb247XG5cbiAgICBjb25zdCBmcmFtZVN1YnN0aXR1dGlvblN0cmluZyA9IGZyYW1lU3Vic3RpdHV0aW9uU3RyaW5nRnJvbUZyYW1lQW5kTWV0YXZhcmlhYmxlKGZyYW1lLCBtZXRhdmFyaWFibGUpO1xuXG4gICAgYWJsYXRlcygoZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCkgPT4ge1xuICAgICAgaW5zdGFudGlhdGUoKHNwZWNpZmljQ29udGV4dCkgPT4ge1xuICAgICAgICBtYW5pZmVzdCgoZ2VuZXJhbENvbnRleHQpID0+IHtcbiAgICAgICAgICBjb25zdCBzdHJpbmcgPSBmcmFtZVN1YnN0aXR1dGlvblN0cmluZywgIC8vL1xuICAgICAgICAgICAgICAgIGNvbnRleHQgPSBzcGVjaWZpY0NvbnRleHQsICAvLy9cbiAgICAgICAgICAgICAgICBmcmFtZVN1YnN0aXR1dGlvbk5vZGUgPSBpbnN0YW50aWF0ZUZyYW1lU3Vic3RpdHV0aW9uKHN0cmluZywgY29udGV4dCk7XG5cbiAgICAgICAgICBmcmFtZVN1YnN0aXR1dGlvbiA9IGZyYW1lU3Vic3RpdHV0aW9uRnJvbUZyYW1lU3Vic3RpdHV0aW9uTm9kZShmcmFtZVN1YnN0aXR1dGlvbk5vZGUsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQpO1xuICAgICAgICB9LCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0KTtcbiAgICAgIH0sIHNwZWNpZmljQ29udGV4dCk7XG4gICAgfSwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCk7XG5cbiAgICByZXR1cm4gZnJhbWVTdWJzdGl0dXRpb247XG4gIH1cbn0pO1xuXG5mdW5jdGlvbiB0YXJnZXRGcmFtZUZyb21GcmFtZVN1YnN0aXR1dGlvbk5vZGUoZnJhbWVTdWJzdGl0dXRpb25Ob2RlLCBnZW5lcmFsQ29udGV4dCkge1xuICBjb25zdCB0YXJnZXRGcmFtZU5vZGUgPSBmcmFtZVN1YnN0aXR1dGlvbk5vZGUuZ2V0VGFyZ2V0RnJhbWVOb2RlKCksXG4gICAgICAgIHRhcmdldEZyYW1lID0gZ2VuZXJhbENvbnRleHQuZmluZEZyYW1lQnlGcmFtZU5vZGUodGFyZ2V0RnJhbWVOb2RlKTtcblxuICByZXR1cm4gdGFyZ2V0RnJhbWU7XG59XG5cbmZ1bmN0aW9uIHJlcGxhY2VtZW50RnJhbWVGcm9tRnJhbWVTdWJzdGl0dXRpb25Ob2RlKGZyYW1lU3Vic3RpdHV0aW9uTm9kZSwgc3BlY2lmaWNDb250ZXh0KSB7XG4gIGNvbnN0IHJlcGxhY2VtZW50RnJhbWVOb2RlID0gZnJhbWVTdWJzdGl0dXRpb25Ob2RlLmdldFJlcGxhY2VtZW50RnJhbWVOb2RlKCksXG4gICAgICAgIHJlcGxhY2VtZW50RnJhbWUgPSBzcGVjaWZpY0NvbnRleHQuZmluZEZyYW1lQnlGcmFtZU5vZGUocmVwbGFjZW1lbnRGcmFtZU5vZGUpO1xuXG4gIHJldHVybiByZXBsYWNlbWVudEZyYW1lO1xufVxuIl0sIm5hbWVzIjpbInVuYnJlYWthYmxlIiwiYnJlYWtQb2ludFV0aWxpdGllcyIsImN1dCIsImFsbCIsImlzb2xhdGUiLCJjb250aW51YXRpb25VdGlsaXRpZXMiLCJkZWZpbmUiLCJGcmFtZVN1YnN0aXR1dGlvbiIsIlN1YnN0aXR1dGlvbiIsImNvbnRleHRzIiwic3RyaW5nIiwibm9kZSIsImJyZWFrUG9pbnQiLCJ0YXJnZXRGcmFtZSIsInJlcGxhY2VtZW50RnJhbWUiLCJnZXRUYXJnZXRGcmFtZSIsImdldFJlcGxhY2VtZW50RnJhbWUiLCJnZXRGcmFtZVN1YnN0aXR1dGlvbk5vZGUiLCJnZXROb2RlIiwiZnJhbWVTdWJzdGl0dXRpb25Ob2RlIiwiZ2V0TWV0YXZhcmlhYmxlTm9kZSIsImdldFRhcmdldE5vZGUiLCJ0YXJnZXRGcmFtZU5vZGUiLCJ0ZXJnZXROb2RlIiwiZ2V0UmVwbGFjZW1lbnROb2RlIiwicmVwbGFjZW1lbnRGcmFtZU5vZGUiLCJyZXBsYWNlbWVudE5vZGUiLCJpc1RyaXZpYWwiLCJ0YXJnZXRGcmFtZUVxdWFsVG9SZXBsYWNlbWVudEZyYW1lIiwiaXNFcXVhbFRvIiwidHJpdmlhbCIsIm1hdGNoTWV0YXZhcmlhYmxlTm9kZSIsIm1ldGF2YXJpYWJsZU5vZGUiLCJjb21wYXJlUGFyYW1ldGVyIiwicGFyYW1ldGVyIiwidGFyZ2V0RnJhbWVDb21wYXJlc1RvUGFyYW1ldGVyIiwiY29tcGFyZXNUb1BhcmFtZXRlciIsImNvbXBhcmVGcmFtZSIsImZyYW1lIiwiY29udGV4dCIsImZyYW1lRXF1YWxUb1JlcGxhY2VtZW50RnJhbWUiLCJjb21wYXJlZFRvRnJhbWUiLCJ2ZXJpZnkiLCJmb3J3YXJkIiwiYmFjayIsImZyYW1lU3Vic3RpdHV0aW9uU3RyaW5nIiwiZ2V0U3RyaW5nIiwidHJhY2UiLCJkZXNpc3QiLCJzdGF0ZSIsImRlY2xhcmUiLCJ2YWxpZGF0ZSIsImZyYW1lU3Vic3RpdHV0aW9uIiwiZGVidWciLCJzdWJzdGl0dXRpb24iLCJmaW5kU3Vic3RpdHV0aW9uIiwiZ2VuZXJhbENvbnRleHQiLCJnZXRHZW5lcmFsQ29udGV4dCIsInNwZWNpZmljQ29udGV4dCIsImdldFNwZWNpZmljQ29udGV4dCIsImF0dGVtcHRzIiwidmFsaWRhdGVUYXJnZXRGcmFtZSIsImJpbmQiLCJ2YWxpZGF0ZVJlcGxhY2VtZW50RnJhbWUiLCJjb21taXQiLCJhZGRTdWJzdGl0dXRpb24iLCJjb250aW51YXRpb24iLCJ0YXJnZXRGcmFtZVZhbGlkYXRlcyIsInRhcmdldEZyYW1lU2luZ3VsYXIiLCJpc1Npbmd1bGFyIiwidmFsaWRhdGVzIiwidGFyZ2V0RnJhbWVTdHJpbmciLCJyZXBsYWNlbWVudEZyYW1lVmFsaWRhdGVzIiwicGFydGljaXBhdGUiLCJuYW1lIiwiZnJvbUpTT04iLCJqc29uIiwiZnJhbWVTdWJzdGl0dXRpb25uIiwiaW5zdGFudGlhdGUiLCJ1bnNlcmlhbGlzZXMiLCJpbnN0YW50aWF0ZUZyYW1lU3Vic3RpdHV0aW9uIiwidGFyZ2V0RnJhbWVGcm9tRnJhbWVTdWJzdGl0dXRpb25Ob2RlIiwicmVwbGFjZW1lbnRGcmFtZUZyb21GcmFtZVN1YnN0aXR1dGlvbk5vZGUiLCJmcm9tRnJhbWVBbmRNZXRhdmFyaWFibGUiLCJtZXRhdmFyaWFibGUiLCJmcmFtZVN1YnN0aXR1dGlvblN0cmluZ0Zyb21GcmFtZUFuZE1ldGF2YXJpYWJsZSIsImFibGF0ZXMiLCJtYW5pZmVzdCIsImZyYW1lU3Vic3RpdHV0aW9uRnJvbUZyYW1lU3Vic3RpdHV0aW9uTm9kZSIsImdldFRhcmdldEZyYW1lTm9kZSIs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
|
|
187
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L3N1YnN0aXR1dGlvbi9mcmFtZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgYnJlYWtQb2ludFV0aWxpdGllcywgY29udGludWF0aW9uVXRpbGl0aWVzIH0gZnJvbSBcIm9jY2FtLWxhbmd1YWdlc1wiO1xuXG5pbXBvcnQgU3Vic3RpdHV0aW9uIGZyb20gXCIuLi9zdWJzdGl0dXRpb25cIjtcblxuaW1wb3J0IHsgZGVmaW5lIH0gZnJvbSBcIi4uLy4uL2VsZW1lbnRzXCI7XG5pbXBvcnQgeyBkZXNpc3QsIGRlY2xhcmUgfSBmcm9tIFwiLi4vLi4vdXRpbGl0aWVzL3N0YXRlXCI7XG5pbXBvcnQgeyBpbnN0YW50aWF0ZUZyYW1lU3Vic3RpdHV0aW9uIH0gZnJvbSBcIi4uLy4uL3Byb2Nlc3MvaW5zdGFudGlhdGVcIjtcbmltcG9ydCB7IGZyYW1lU3Vic3RpdHV0aW9uRnJvbUZyYW1lU3Vic3RpdHV0aW9uTm9kZSB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvZWxlbWVudFwiO1xuaW1wb3J0IHsgZnJhbWVTdWJzdGl0dXRpb25TdHJpbmdGcm9tRnJhbWVBbmRNZXRhdmFyaWFibGUgfSBmcm9tIFwiLi4vLi4vdXRpbGl0aWVzL3N0cmluZ1wiO1xuaW1wb3J0IHsgYWJsYXRlcywgbWFuaWZlc3QsIGF0dGVtcHRzLCBwYXJ0aWNpcGF0ZSwgaW5zdGFudGlhdGUsIHVuc2VyaWFsaXNlcyB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvY29udGV4dFwiO1xuXG5jb25zdCB7IHVuYnJlYWthYmxlIH0gPSBicmVha1BvaW50VXRpbGl0aWVzLFxuICAgICAgeyBjdXQsIGFsbCwgaXNvbGF0ZSB9ID0gY29udGludWF0aW9uVXRpbGl0aWVzO1xuXG5leHBvcnQgZGVmYXVsdCBkZWZpbmUoY2xhc3MgRnJhbWVTdWJzdGl0dXRpb24gZXh0ZW5kcyBTdWJzdGl0dXRpb24ge1xuICBjb25zdHJ1Y3Rvcihjb250ZXh0cywgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCB0YXJnZXRGcmFtZSwgcmVwbGFjZW1lbnRGcmFtZSkge1xuICAgIHN1cGVyKGNvbnRleHRzLCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQpO1xuXG4gICAgdGhpcy50YXJnZXRGcmFtZSA9IHRhcmdldEZyYW1lO1xuICAgIHRoaXMucmVwbGFjZW1lbnRGcmFtZSA9IHJlcGxhY2VtZW50RnJhbWU7XG4gIH1cblxuICBnZXRUYXJnZXRGcmFtZSgpIHtcbiAgICByZXR1cm4gdGhpcy50YXJnZXRGcmFtZTtcbiAgfVxuXG4gIGdldFJlcGxhY2VtZW50RnJhbWUoKSB7XG4gICAgcmV0dXJuIHRoaXMucmVwbGFjZW1lbnRGcmFtZTtcbiAgfVxuXG4gIGdldEZyYW1lU3Vic3RpdHV0aW9uTm9kZSgpIHtcbiAgICBjb25zdCBub2RlID0gdGhpcy5nZXROb2RlKCksXG4gICAgICAgICAgZnJhbWVTdWJzdGl0dXRpb25Ob2RlID0gbm9kZTsgLy8vXG5cbiAgICByZXR1cm4gZnJhbWVTdWJzdGl0dXRpb25Ob2RlO1xuICB9XG5cbiAgZ2V0TWV0YXZhcmlhYmxlTm9kZSgpIHsgcmV0dXJuIHRoaXMudGFyZ2V0RnJhbWUuZ2V0TWV0YXZhcmlhYmxlTm9kZSgpOyB9XG5cbiAgZ2V0VGFyZ2V0Tm9kZSgpIHtcbiAgICBjb25zdCB0YXJnZXRGcmFtZU5vZGUgPSB0aGlzLnRhcmdldEZyYW1lLmdldE5vZGUoKSxcbiAgICAgICAgICB0ZXJnZXROb2RlID0gdGFyZ2V0RnJhbWVOb2RlOyAvLy9cblxuICAgIHJldHVybiB0ZXJnZXROb2RlO1xuICB9XG5cbiAgZ2V0UmVwbGFjZW1lbnROb2RlKCkge1xuICAgIGNvbnN0IHJlcGxhY2VtZW50RnJhbWVOb2RlID0gdGhpcy5yZXBsYWNlbWVudEZyYW1lLmdldE5vZGUoKSxcbiAgICAgICAgICByZXBsYWNlbWVudE5vZGUgPSByZXBsYWNlbWVudEZyYW1lTm9kZTsgLy8vXG5cbiAgICByZXR1cm4gcmVwbGFjZW1lbnROb2RlO1xuICB9XG5cbiAgaXNUcml2aWFsKCkge1xuICAgIGNvbnN0IHRhcmdldEZyYW1lRXF1YWxUb1JlcGxhY2VtZW50RnJhbWUgPSB0aGlzLnRhcmdldEZyYW1lLmlzRXF1YWxUbyh0aGlzLnJlcGxhY2VtZW50RnJhbWUpLFxuICAgICAgICAgIHRyaXZpYWwgPSB0YXJnZXRGcmFtZUVxdWFsVG9SZXBsYWNlbWVudEZyYW1lOyAvLy9cblxuICAgIHJldHVybiB0cml2aWFsO1xuICB9XG5cbiAgbWF0Y2hNZXRhdmFyaWFibGVOb2RlKG1ldGF2YXJpYWJsZU5vZGUpIHsgcmV0dXJuIHRoaXMudGFyZ2V0RnJhbWUubWF0Y2hNZXRhdmFyaWFibGVOb2RlKG1ldGF2YXJpYWJsZU5vZGUpOyB9XG5cbiAgY29tcGFyZVBhcmFtZXRlcihwYXJhbWV0ZXIpIHtcbiAgICBjb25zdCBjb21wYXJlc1RvUGFyYW1ldGVyID0gZmFsc2U7ICAvLy9cblxuICAgIHJldHVybiBjb21wYXJlc1RvUGFyYW1ldGVyO1xuICB9XG5cbiAgY29tcGFyZUZyYW1lKGZyYW1lLCBjb250ZXh0KSB7XG4gICAgY29uc3QgZnJhbWVFcXVhbFRvUmVwbGFjZW1lbnRGcmFtZSA9IHRoaXMucmVwbGFjZW1lbnRGcmFtZS5pc0VxdWFsVG8oZnJhbWUpLFxuICAgICAgICAgIGNvbXBhcmVkVG9GcmFtZSA9IGZyYW1lRXF1YWxUb1JlcGxhY2VtZW50RnJhbWU7IC8vL1xuXG4gICAgcmV0dXJuIGNvbXBhcmVkVG9GcmFtZTtcbiAgfVxuXG4gIHZlcmlmeSA9IHVuYnJlYWthYmxlKGZ1bmN0aW9uIChjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgZm9yd2FyZCA9IGN1dChmb3J3YXJkLCBiYWNrKTsgLy8vXG5cbiAgICBjb25zdCBmcmFtZVN1YnN0aXR1dGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7IC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHtmcmFtZVN1YnN0aXR1dGlvblN0cmluZ30nIGZyYW1lIHN1YnN0aXR1dGlvbi4uLmApO1xuXG4gICAgcmV0dXJuIGRlc2lzdCgoc3RhdGUpID0+IHtcbiAgICAgIHJldHVybiBkZWNsYXJlKChzdGF0ZSkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy52YWxpZGF0ZShzdGF0ZSwgY29udGV4dCwgKGZyYW1lU3Vic3RpdHV0aW9uLCBjb250ZXh0ICwgYmFjaykgPT4ge1xuICAgICAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHtmcmFtZVN1YnN0aXR1dGlvblN0cmluZ30nIGZyYW1lIHN1YnN0aXR1dGlvbi5gKTtcblxuICAgICAgICAgIHJldHVybiBmb3J3YXJkKGNvbnRleHQsIGJhY2spO1xuICAgICAgICB9LCBiYWNrKTtcbiAgICAgIH0sIHN0YXRlKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgdmFsaWRhdGUoc3RhdGUsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBsZXQgc3Vic3RpdHV0aW9uO1xuXG4gICAgY29uc3QgZnJhbWVTdWJzdGl0dXRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtmcmFtZVN1YnN0aXR1dGlvblN0cmluZ30nIGZyYW1lIHN1YnN0aXR1dGlvbi4uLmApO1xuXG4gICAgc3Vic3RpdHV0aW9uID0gdGhpcy5maW5kU3Vic3RpdHV0aW9uKGNvbnRleHQpO1xuXG4gICAgaWYgKHN1YnN0aXR1dGlvbiAhPT0gbnVsbCkge1xuICAgICAgY29uc3QgZnJhbWVTdWJzdGl0dXRpb24gPSBzdWJzdGl0dXRpb247ICAvLy9cblxuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udGhlICcke2ZyYW1lU3Vic3RpdHV0aW9uU3RyaW5nfScgZnJhbWUgc3Vic3RpdHV0aW9uIGlzIGFscmVhZHkgcHJlc2VuZXQuYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKGZyYW1lU3Vic3RpdHV0aW9uLCBjb250ZXh0LCBiYWNrKTtcbiAgICB9XG5cbiAgICByZXR1cm4gaXNvbGF0ZSgoc3RhdGUsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spID0+IHtcbiAgICAgIHN1YnN0aXR1dGlvbiA9IHRoaXM7ICAvLy9cblxuICAgICAgY29uc3QgZ2VuZXJhbENvbnRleHQgPSB0aGlzLmdldEdlbmVyYWxDb250ZXh0KCksXG4gICAgICAgICAgICBzcGVjaWZpY0NvbnRleHQgPSB0aGlzLmdldFNwZWNpZmljQ29udGV4dCgpO1xuXG4gICAgICByZXR1cm4gYXR0ZW1wdHMoKGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQpID0+IHtcbiAgICAgICAgY29uc3QgdmFsaWRhdGVUYXJnZXRGcmFtZSA9IHRoaXMudmFsaWRhdGVUYXJnZXRGcmFtZS5iaW5kKHRoaXMpLFxuICAgICAgICAgICAgICB2YWxpZGF0ZVJlcGxhY2VtZW50RnJhbWUgPSB0aGlzLnZhbGlkYXRlUmVwbGFjZW1lbnRGcmFtZS5iaW5kKHRoaXMpO1xuXG4gICAgICAgIHJldHVybiBhbGwoW1xuICAgICAgICAgIHZhbGlkYXRlVGFyZ2V0RnJhbWUsXG4gICAgICAgICAgdmFsaWRhdGVSZXBsYWNlbWVudEZyYW1lXG4gICAgICAgIF0sIHN0YXRlLCBjb250ZXh0LCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCAoc3RhdGUsIGNvbnRleHQsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQpID0+IHtcbiAgICAgICAgICB0aGlzLmNvbW1pdChnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0KTtcblxuICAgICAgICAgIHJldHVybiBmb3J3YXJkKGJhY2spO1xuICAgICAgICB9LCBiYWNrKTtcbiAgICAgIH0sIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQpO1xuICAgIH0sIHN0YXRlLCBjb250ZXh0LCAoc3RhdGUsIGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIGNvbnN0IGZyYW1lU3Vic3RpdHV0aW9uID0gc3Vic3RpdHV0aW9uOyAgLy8vXG5cbiAgICAgIGNvbnRleHQuYWRkU3Vic3RpdHV0aW9uKHN1YnN0aXR1dGlvbik7XG5cbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7ZnJhbWVTdWJzdGl0dXRpb25TdHJpbmd9JyBmcmFtZSBzdWJzdGl0dXRpb24uYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKGZyYW1lU3Vic3RpdHV0aW9uLCBjb250ZXh0LCBiYWNrKTtcbiAgICB9LCBiYWNrKTtcbiAgfVxuXG4gIHZhbGlkYXRlVGFyZ2V0RnJhbWUoc3RhdGUsIGNvbnRleHQsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIGNvbnRpbnVhdGlvbikge1xuICAgIGxldCB0YXJnZXRGcmFtZVZhbGlkYXRlcztcblxuICAgIGNvbnN0IGZyYW1lU3Vic3RpdHV0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7ZnJhbWVTdWJzdGl0dXRpb25TdHJpbmd9JyBmcmFtZSBzdWJzdGl0dXRpb24ncyB0YXJnZXQgZnJhbWUuLi5gKTtcblxuICAgIGNvbnN0IHRhcmdldEZyYW1lU2luZ3VsYXIgPSB0aGlzLnRhcmdldEZyYW1lLmlzU2luZ3VsYXIoKTtcblxuICAgIGlmICh0YXJnZXRGcmFtZVNpbmd1bGFyKSB7XG4gICAgICB0YXJnZXRGcmFtZVZhbGlkYXRlcyA9IHRoaXMudGFyZ2V0RnJhbWUudmFsaWRhdGUoc3RhdGUsIGdlbmVyYWxDb250ZXh0LCAodGFyZ2V0RnJhbWUsIGdlbmVyYWxDb250ZXh0KSA9PiB7XG4gICAgICAgIGxldCB2YWxpZGF0ZXM7XG5cbiAgICAgICAgdmFsaWRhdGVzID0gY29udGludWF0aW9uKHN0YXRlLCBjb250ZXh0LCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0KTtcblxuICAgICAgICByZXR1cm4gdmFsaWRhdGVzO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHRhcmdldEZyYW1lU3RyaW5nID0gdGhpcy50YXJnZXRGcmFtZS5nZXRTdHJpbmcoKTtcblxuICAgICAgdGFyZ2V0RnJhbWVWYWxpZGF0ZXMgPSBmYWxzZTtcblxuICAgICAgY29udGV4dC5kZWJ1ZyhgVGhlICcke3RhcmdldEZyYW1lU3RyaW5nfScgdGFyZ2V0IGZyYW1lIGlzIG5vdCBzaW5ndWxhci5gKTtcbiAgICB9XG5cbiAgICBpZiAodGFyZ2V0RnJhbWVWYWxpZGF0ZXMpIHtcbiAgICAgIGNvbnRleHQudHJhY2UoYC4uLnZhbGlkYXRlZCB0aGUgJyR7ZnJhbWVTdWJzdGl0dXRpb25TdHJpbmd9JyBmcmFtZSBzdWJzdGl0dXRpb24ncyB0YXJnZXQgZnJhbWUuYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRhcmdldEZyYW1lVmFsaWRhdGVzO1xuICB9XG5cbiAgdmFsaWRhdGVSZXBsYWNlbWVudEZyYW1lKHN0YXRlLCBjb250ZXh0LCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCBjb250aW51YXRpb24pIHtcbiAgICBsZXQgcmVwbGFjZW1lbnRGcmFtZVZhbGlkYXRlcztcblxuICAgIGNvbnN0IGZyYW1lU3Vic3RpdHV0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7ZnJhbWVTdWJzdGl0dXRpb25TdHJpbmd9JyBmcmFtZSBzdWJzdGl0dXRpb24ncyByZXBsYWNlbWVudCBmcmFtZS4uLmApO1xuXG4gICAgcGFydGljaXBhdGUoKHNwZWNpZmljQ29udGV4dCkgPT4ge1xuICAgICAgcmVwbGFjZW1lbnRGcmFtZVZhbGlkYXRlcyA9IHRoaXMucmVwbGFjZW1lbnRGcmFtZS52YWxpZGF0ZShzdGF0ZSwgc3BlY2lmaWNDb250ZXh0LCAocmVwbGFjZW1lbnRGcmFtZSwgc3BlY2lmaWNDb250ZXh0KSA9PiB7XG4gICAgICAgIGxldCB2YWxpZGF0ZXM7XG5cbiAgICAgICAgdmFsaWRhdGVzID0gY29udGludWF0aW9uKHN0YXRlLCBjb250ZXh0LCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0KTtcblxuICAgICAgICByZXR1cm4gdmFsaWRhdGVzO1xuICAgICAgfSk7XG4gICAgfSwgc3BlY2lmaWNDb250ZXh0LCBjb250ZXh0KTtcblxuICAgIGlmIChyZXBsYWNlbWVudEZyYW1lVmFsaWRhdGVzKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke2ZyYW1lU3Vic3RpdHV0aW9uU3RyaW5nfScgZnJhbWUgc3Vic3RpdHV0aW9uJ3MgcmVwbGFjZW1lbnQgZnJhbWUuYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlcGxhY2VtZW50RnJhbWVWYWxpZGF0ZXM7XG4gIH1cblxuICBzdGF0aWMgbmFtZSA9IFwiRnJhbWVTdWJzdGl0dXRpb25cIjtcblxuICBzdGF0aWMgZnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICAgIGxldCBmcmFtZVN1YnN0aXR1dGlvbm47XG5cbiAgICBjb25zdCB7IG5hbWUgfSA9IGpzb247XG5cbiAgICBpZiAodGhpcy5uYW1lID09PSBuYW1lKSB7XG4gICAgICBpbnN0YW50aWF0ZSgoY29udGV4dCkgPT4ge1xuICAgICAgICB1bnNlcmlhbGlzZXMoKGpzb24sIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQpID0+IHtcbiAgICAgICAgICBjb25zdCB7IHN0cmluZyB9ID0ganNvbixcbiAgICAgICAgICAgICAgICBmcmFtZVN1YnN0aXR1dGlvbk5vZGUgPSBpbnN0YW50aWF0ZUZyYW1lU3Vic3RpdHV0aW9uKHN0cmluZywgY29udGV4dCksXG4gICAgICAgICAgICAgICAgbm9kZSA9IGZyYW1lU3Vic3RpdHV0aW9uTm9kZSwgLy8vXG4gICAgICAgICAgICAgICAgY29udGV4dHMgPSBbXG4gICAgICAgICAgICAgICAgICBnZW5lcmFsQ29udGV4dCxcbiAgICAgICAgICAgICAgICAgIHNwZWNpZmljQ29udGV4dFxuICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgYnJlYWtQb2ludCA9IG51bGwsXG4gICAgICAgICAgICAgICAgdGFyZ2V0RnJhbWUgPSB0YXJnZXRGcmFtZUZyb21GcmFtZVN1YnN0aXR1dGlvbk5vZGUoZnJhbWVTdWJzdGl0dXRpb25Ob2RlLCBnZW5lcmFsQ29udGV4dCksXG4gICAgICAgICAgICAgICAgcmVwbGFjZW1lbnRGcmFtZSA9IHJlcGxhY2VtZW50RnJhbWVGcm9tRnJhbWVTdWJzdGl0dXRpb25Ob2RlKGZyYW1lU3Vic3RpdHV0aW9uTm9kZSwgc3BlY2lmaWNDb250ZXh0KTtcblxuICAgICAgICAgIGZyYW1lU3Vic3RpdHV0aW9ubiA9IG5ldyBGcmFtZVN1YnN0aXR1dGlvbihjb250ZXh0cywgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCB0YXJnZXRGcmFtZSwgcmVwbGFjZW1lbnRGcmFtZSk7XG4gICAgICAgIH0sIGpzb24sIGNvbnRleHQpO1xuICAgICAgfSwgY29udGV4dCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZyYW1lU3Vic3RpdHV0aW9ubjtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tRnJhbWVBbmRNZXRhdmFyaWFibGUoZnJhbWUsIG1ldGF2YXJpYWJsZSwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCkge1xuICAgIGxldCBmcmFtZVN1YnN0aXR1dGlvbjtcblxuICAgIGNvbnN0IGZyYW1lU3Vic3RpdHV0aW9uU3RyaW5nID0gZnJhbWVTdWJzdGl0dXRpb25TdHJpbmdGcm9tRnJhbWVBbmRNZXRhdmFyaWFibGUoZnJhbWUsIG1ldGF2YXJpYWJsZSk7XG5cbiAgICBhYmxhdGVzKChnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0KSA9PiB7XG4gICAgICBpbnN0YW50aWF0ZSgoc3BlY2lmaWNDb250ZXh0KSA9PiB7XG4gICAgICAgIG1hbmlmZXN0KChnZW5lcmFsQ29udGV4dCkgPT4ge1xuICAgICAgICAgIGNvbnN0IHN0cmluZyA9IGZyYW1lU3Vic3RpdHV0aW9uU3RyaW5nLCAgLy8vXG4gICAgICAgICAgICAgICAgY29udGV4dCA9IHNwZWNpZmljQ29udGV4dCwgIC8vL1xuICAgICAgICAgICAgICAgIGZyYW1lU3Vic3RpdHV0aW9uTm9kZSA9IGluc3RhbnRpYXRlRnJhbWVTdWJzdGl0dXRpb24oc3RyaW5nLCBjb250ZXh0KTtcblxuICAgICAgICAgIGZyYW1lU3Vic3RpdHV0aW9uID0gZnJhbWVTdWJzdGl0dXRpb25Gcm9tRnJhbWVTdWJzdGl0dXRpb25Ob2RlKGZyYW1lU3Vic3RpdHV0aW9uTm9kZSwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCk7XG4gICAgICAgIH0sIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQpO1xuICAgICAgfSwgc3BlY2lmaWNDb250ZXh0KTtcbiAgICB9LCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0KTtcblxuICAgIHJldHVybiBmcmFtZVN1YnN0aXR1dGlvbjtcbiAgfVxufSk7XG5cbmZ1bmN0aW9uIHRhcmdldEZyYW1lRnJvbUZyYW1lU3Vic3RpdHV0aW9uTm9kZShmcmFtZVN1YnN0aXR1dGlvbk5vZGUsIGdlbmVyYWxDb250ZXh0KSB7XG4gIGNvbnN0IHRhcmdldEZyYW1lTm9kZSA9IGZyYW1lU3Vic3RpdHV0aW9uTm9kZS5nZXRUYXJnZXRGcmFtZU5vZGUoKSxcbiAgICAgICAgdGFyZ2V0RnJhbWUgPSBnZW5lcmFsQ29udGV4dC5maW5kRnJhbWVCeUZyYW1lTm9kZSh0YXJnZXRGcmFtZU5vZGUpO1xuXG4gIHJldHVybiB0YXJnZXRGcmFtZTtcbn1cblxuZnVuY3Rpb24gcmVwbGFjZW1lbnRGcmFtZUZyb21GcmFtZVN1YnN0aXR1dGlvbk5vZGUoZnJhbWVTdWJzdGl0dXRpb25Ob2RlLCBzcGVjaWZpY0NvbnRleHQpIHtcbiAgY29uc3QgcmVwbGFjZW1lbnRGcmFtZU5vZGUgPSBmcmFtZVN1YnN0aXR1dGlvbk5vZGUuZ2V0UmVwbGFjZW1lbnRGcmFtZU5vZGUoKSxcbiAgICAgICAgcmVwbGFjZW1lbnRGcmFtZSA9IHNwZWNpZmljQ29udGV4dC5maW5kRnJhbWVCeUZyYW1lTm9kZShyZXBsYWNlbWVudEZyYW1lTm9kZSk7XG5cbiAgcmV0dXJuIHJlcGxhY2VtZW50RnJhbWU7XG59XG4iXSwibmFtZXMiOlsidW5icmVha2FibGUiLCJicmVha1BvaW50VXRpbGl0aWVzIiwiY3V0IiwiYWxsIiwiaXNvbGF0ZSIsImNvbnRpbnVhdGlvblV0aWxpdGllcyIsImRlZmluZSIsIkZyYW1lU3Vic3RpdHV0aW9uIiwiU3Vic3RpdHV0aW9uIiwiY29udGV4dHMiLCJzdHJpbmciLCJub2RlIiwiYnJlYWtQb2ludCIsInRhcmdldEZyYW1lIiwicmVwbGFjZW1lbnRGcmFtZSIsImdldFRhcmdldEZyYW1lIiwiZ2V0UmVwbGFjZW1lbnRGcmFtZSIsImdldEZyYW1lU3Vic3RpdHV0aW9uTm9kZSIsImdldE5vZGUiLCJmcmFtZVN1YnN0aXR1dGlvbk5vZGUiLCJnZXRNZXRhdmFyaWFibGVOb2RlIiwiZ2V0VGFyZ2V0Tm9kZSIsInRhcmdldEZyYW1lTm9kZSIsInRlcmdldE5vZGUiLCJnZXRSZXBsYWNlbWVudE5vZGUiLCJyZXBsYWNlbWVudEZyYW1lTm9kZSIsInJlcGxhY2VtZW50Tm9kZSIsImlzVHJpdmlhbCIsInRhcmdldEZyYW1lRXF1YWxUb1JlcGxhY2VtZW50RnJhbWUiLCJpc0VxdWFsVG8iLCJ0cml2aWFsIiwibWF0Y2hNZXRhdmFyaWFibGVOb2RlIiwibWV0YXZhcmlhYmxlTm9kZSIsImNvbXBhcmVQYXJhbWV0ZXIiLCJwYXJhbWV0ZXIiLCJjb21wYXJlc1RvUGFyYW1ldGVyIiwiY29tcGFyZUZyYW1lIiwiZnJhbWUiLCJjb250ZXh0IiwiZnJhbWVFcXVhbFRvUmVwbGFjZW1lbnRGcmFtZSIsImNvbXBhcmVkVG9GcmFtZSIsInZlcmlmeSIsImZvcndhcmQiLCJiYWNrIiwiZnJhbWVTdWJzdGl0dXRpb25TdHJpbmciLCJnZXRTdHJpbmciLCJ0cmFjZSIsImRlc2lzdCIsInN0YXRlIiwiZGVjbGFyZSIsInZhbGlkYXRlIiwiZnJhbWVTdWJzdGl0dXRpb24iLCJkZWJ1ZyIsInN1YnN0aXR1dGlvbiIsImZpbmRTdWJzdGl0dXRpb24iLCJnZW5lcmFsQ29udGV4dCIsImdldEdlbmVyYWxDb250ZXh0Iiwic3BlY2lmaWNDb250ZXh0IiwiZ2V0U3BlY2lmaWNDb250ZXh0IiwiYXR0ZW1wdHMiLCJ2YWxpZGF0ZVRhcmdldEZyYW1lIiwiYmluZCIsInZhbGlkYXRlUmVwbGFjZW1lbnRGcmFtZSIsImNvbW1pdCIsImFkZFN1YnN0aXR1dGlvbiIsImNvbnRpbnVhdGlvbiIsInRhcmdldEZyYW1lVmFsaWRhdGVzIiwidGFyZ2V0RnJhbWVTaW5ndWxhciIsImlzU2luZ3VsYXIiLCJ2YWxpZGF0ZXMiLCJ0YXJnZXRGcmFtZVN0cmluZyIsInJlcGxhY2VtZW50RnJhbWVWYWxpZGF0ZXMiLCJwYXJ0aWNpcGF0ZSIsIm5hbWUiLCJmcm9tSlNPTiIsImpzb24iLCJmcmFtZVN1YnN0aXR1dGlvbm4iLCJpbnN0YW50aWF0ZSIsInVuc2VyaWFsaXNlcyIsImluc3RhbnRpYXRlRnJhbWVTdWJzdGl0dXRpb24iLCJ0YXJnZXRGcmFtZUZyb21GcmFtZVN1YnN0aXR1dGlvbk5vZGUiLCJyZXBsYWNlbWVudEZyYW1lRnJvbUZyYW1lU3Vic3RpdHV0aW9uTm9kZSIsImZyb21GcmFtZUFuZE1ldGF2YXJpYWJsZSIsIm1ldGF2YXJpYWJsZSIsImZyYW1lU3Vic3RpdHV0aW9uU3RyaW5nRnJvbUZyYW1lQW5kTWV0YXZhcmlhYmxlIiwiYWJsYXRlcyIsIm1hbmlmZXN0IiwiZnJhbWVTdWJzdGl0dXRpb25Gcm9tRnJhbWVTdWJzdGl0dXRpb25Ob2RlIiwiZ2V0VGFyZ2V0RnJhbWVOb2RlIiwiZmluZEZyYW1lQnlGcmFtZU5vZGUiLCJnZXRSZXBsYWNlbWVudEZyYW1lTm9kZSJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBZ0JBOzs7ZUFBQTs7O2dDQWQyRDtxRUFFbEM7MEJBRUY7dUJBQ1M7NkJBQ2E7eUJBQ2M7d0JBQ0s7eUJBQ29COzs7Ozs7QUFFcEYsTUFBTSxFQUFFQSxXQUFXLEVBQUUsR0FBR0MsbUNBQW1CLEVBQ3JDLEVBQUVDLEdBQUcsRUFBRUMsR0FBRyxFQUFFQyxPQUFPLEVBQUUsR0FBR0MscUNBQXFCO01BRW5ELFdBQWVDLElBQUFBLGdCQUFNLEVBQUMsTUFBTUMsMEJBQTBCQyxxQkFBWTtJQUNoRSxZQUFZQyxRQUFRLEVBQUVDLE1BQU0sRUFBRUMsSUFBSSxFQUFFQyxVQUFVLEVBQUVDLFdBQVcsRUFBRUMsZ0JBQWdCLENBQUU7UUFDN0UsS0FBSyxDQUFDTCxVQUFVQyxRQUFRQyxNQUFNQztRQUU5QixJQUFJLENBQUNDLFdBQVcsR0FBR0E7UUFDbkIsSUFBSSxDQUFDQyxnQkFBZ0IsR0FBR0E7SUFDMUI7SUFFQUMsaUJBQWlCO1FBQ2YsT0FBTyxJQUFJLENBQUNGLFdBQVc7SUFDekI7SUFFQUcsc0JBQXNCO1FBQ3BCLE9BQU8sSUFBSSxDQUFDRixnQkFBZ0I7SUFDOUI7SUFFQUcsMkJBQTJCO1FBQ3pCLE1BQU1OLE9BQU8sSUFBSSxDQUFDTyxPQUFPLElBQ25CQyx3QkFBd0JSLE1BQU0sR0FBRztRQUV2QyxPQUFPUTtJQUNUO0lBRUFDLHNCQUFzQjtRQUFFLE9BQU8sSUFBSSxDQUFDUCxXQUFXLENBQUNPLG1CQUFtQjtJQUFJO0lBRXZFQyxnQkFBZ0I7UUFDZCxNQUFNQyxrQkFBa0IsSUFBSSxDQUFDVCxXQUFXLENBQUNLLE9BQU8sSUFDMUNLLGFBQWFELGlCQUFpQixHQUFHO1FBRXZDLE9BQU9DO0lBQ1Q7SUFFQUMscUJBQXFCO1FBQ25CLE1BQU1DLHVCQUF1QixJQUFJLENBQUNYLGdCQUFnQixDQUFDSSxPQUFPLElBQ3BEUSxrQkFBa0JELHNCQUFzQixHQUFHO1FBRWpELE9BQU9DO0lBQ1Q7SUFFQUMsWUFBWTtRQUNWLE1BQU1DLHFDQUFxQyxJQUFJLENBQUNmLFdBQVcsQ0FBQ2dCLFNBQVMsQ0FBQyxJQUFJLENBQUNmLGdCQUFnQixHQUNyRmdCLFVBQVVGLG9DQUFvQyxHQUFHO1FBRXZELE9BQU9FO0lBQ1Q7SUFFQUMsc0JBQXNCQyxnQkFBZ0IsRUFBRTtRQUFFLE9BQU8sSUFBSSxDQUFDbkIsV0FBVyxDQUFDa0IscUJBQXFCLENBQUNDO0lBQW1CO0lBRTNHQyxpQkFBaUJDLFNBQVMsRUFBRTtRQUMxQixNQUFNQyxzQkFBc0IsT0FBUSxHQUFHO1FBRXZDLE9BQU9BO0lBQ1Q7SUFFQUMsYUFBYUMsS0FBSyxFQUFFQyxPQUFPLEVBQUU7UUFDM0IsTUFBTUMsK0JBQStCLElBQUksQ0FBQ3pCLGdCQUFnQixDQUFDZSxTQUFTLENBQUNRLFFBQy9ERyxrQkFBa0JELDhCQUE4QixHQUFHO1FBRXpELE9BQU9DO0lBQ1Q7SUFFQUMsU0FBU3pDLFlBQVksU0FBVXNDLE9BQU8sRUFBRUksT0FBTyxFQUFFQyxJQUFJO1FBQ25ERCxVQUFVeEMsSUFBSXdDLFNBQVNDLE9BQU8sR0FBRztRQUVqQyxNQUFNQywwQkFBMEIsSUFBSSxDQUFDQyxTQUFTLElBQUksR0FBRztRQUVyRFAsUUFBUVEsS0FBSyxDQUFDLENBQUMsZUFBZSxFQUFFRix3QkFBd0IsdUJBQXVCLENBQUM7UUFFaEYsT0FBT0csSUFBQUEsYUFBTSxFQUFDLENBQUNDO1lBQ2IsT0FBT0MsSUFBQUEsY0FBTyxFQUFDLENBQUNEO2dCQUNkLE9BQU8sSUFBSSxDQUFDRSxRQUFRLENBQUNGLE9BQU9WLFNBQVMsQ0FBQ2EsbUJBQW1CYixTQUFVSztvQkFDakVMLFFBQVFjLEtBQUssQ0FBQyxDQUFDLGlCQUFpQixFQUFFUix3QkFBd0IscUJBQXFCLENBQUM7b0JBRWhGLE9BQU9GLFFBQVFKLFNBQVNLO2dCQUMxQixHQUFHQTtZQUNMLEdBQUdLO1FBQ0w7SUFDRixHQUFHO0lBRUhFLFNBQVNGLEtBQUssRUFBRVYsT0FBTyxFQUFFSSxPQUFPLEVBQUVDLElBQUksRUFBRTtRQUN0QyxJQUFJVTtRQUVKLE1BQU1ULDBCQUEwQixJQUFJLENBQUNDLFNBQVMsSUFBSyxHQUFHO1FBRXREUCxRQUFRUSxLQUFLLENBQUMsQ0FBQyxnQkFBZ0IsRUFBRUYsd0JBQXdCLHVCQUF1QixDQUFDO1FBRWpGUyxlQUFlLElBQUksQ0FBQ0MsZ0JBQWdCLENBQUNoQjtRQUVyQyxJQUFJZSxpQkFBaUIsTUFBTTtZQUN6QixNQUFNRixvQkFBb0JFLGNBQWUsR0FBRztZQUU1Q2YsUUFBUWMsS0FBSyxDQUFDLENBQUMsUUFBUSxFQUFFUix3QkFBd0IseUNBQXlDLENBQUM7WUFFM0YsT0FBT0YsUUFBUVMsbUJBQW1CYixTQUFTSztRQUM3QztRQUVBLE9BQU92QyxRQUFRLENBQUM0QyxPQUFPVixTQUFTSSxTQUFTQztZQUN2Q1UsZUFBZSxJQUFJLEVBQUcsR0FBRztZQUV6QixNQUFNRSxpQkFBaUIsSUFBSSxDQUFDQyxpQkFBaUIsSUFDdkNDLGtCQUFrQixJQUFJLENBQUNDLGtCQUFrQjtZQUUvQyxPQUFPQyxJQUFBQSxpQkFBUSxFQUFDLENBQUNKLGdCQUFnQkU7Z0JBQy9CLE1BQU1HLHNCQUFzQixJQUFJLENBQUNBLG1CQUFtQixDQUFDQyxJQUFJLENBQUMsSUFBSSxHQUN4REMsMkJBQTJCLElBQUksQ0FBQ0Esd0JBQXdCLENBQUNELElBQUksQ0FBQyxJQUFJO2dCQUV4RSxPQUFPMUQsSUFBSTtvQkFDVHlEO29CQUNBRTtpQkFDRCxFQUFFZCxPQUFPVixTQUFTaUIsZ0JBQWdCRSxpQkFBaUIsQ0FBQ1QsT0FBT1YsU0FBU2lCLGdCQUFnQkU7b0JBQ25GLElBQUksQ0FBQ00sTUFBTSxDQUFDUixnQkFBZ0JFO29CQUU1QixPQUFPZixRQUFRQztnQkFDakIsR0FBR0E7WUFDTCxHQUFHWSxnQkFBZ0JFO1FBQ3JCLEdBQUdULE9BQU9WLFNBQVMsQ0FBQ1UsT0FBT1YsU0FBU0s7WUFDbEMsTUFBTVEsb0JBQW9CRSxjQUFlLEdBQUc7WUFFNUNmLFFBQVEwQixlQUFlLENBQUNYO1lBRXhCZixRQUFRYyxLQUFLLENBQUMsQ0FBQyxrQkFBa0IsRUFBRVIsd0JBQXdCLHFCQUFxQixDQUFDO1lBRWpGLE9BQU9GLFFBQVFTLG1CQUFtQmIsU0FBU0s7UUFDN0MsR0FBR0E7SUFDTDtJQUVBaUIsb0JBQW9CWixLQUFLLEVBQUVWLE9BQU8sRUFBRWlCLGNBQWMsRUFBRUUsZUFBZSxFQUFFUSxZQUFZLEVBQUU7UUFDakYsSUFBSUM7UUFFSixNQUFNdEIsMEJBQTBCLElBQUksQ0FBQ0MsU0FBUyxJQUFLLEdBQUc7UUFFdERQLFFBQVFRLEtBQUssQ0FBQyxDQUFDLGdCQUFnQixFQUFFRix3QkFBd0Isc0NBQXNDLENBQUM7UUFFaEcsTUFBTXVCLHNCQUFzQixJQUFJLENBQUN0RCxXQUFXLENBQUN1RCxVQUFVO1FBRXZELElBQUlELHFCQUFxQjtZQUN2QkQsdUJBQXVCLElBQUksQ0FBQ3JELFdBQVcsQ0FBQ3FDLFFBQVEsQ0FBQ0YsT0FBT08sZ0JBQWdCLENBQUMxQyxhQUFhMEM7Z0JBQ3BGLElBQUljO2dCQUVKQSxZQUFZSixhQUFhakIsT0FBT1YsU0FBU2lCLGdCQUFnQkU7Z0JBRXpELE9BQU9ZO1lBQ1Q7UUFDRixPQUFPO1lBQ0wsTUFBTUMsb0JBQW9CLElBQUksQ0FBQ3pELFdBQVcsQ0FBQ2dDLFNBQVM7WUFFcERxQix1QkFBdUI7WUFFdkI1QixRQUFRYyxLQUFLLENBQUMsQ0FBQyxLQUFLLEVBQUVrQixrQkFBa0IsK0JBQStCLENBQUM7UUFDMUU7UUFFQSxJQUFJSixzQkFBc0I7WUFDeEI1QixRQUFRUSxLQUFLLENBQUMsQ0FBQyxrQkFBa0IsRUFBRUYsd0JBQXdCLG9DQUFvQyxDQUFDO1FBQ2xHO1FBRUEsT0FBT3NCO0lBQ1Q7SUFFQUoseUJBQXlCZCxLQUFLLEVBQUVWLE9BQU8sRUFBRWlCLGNBQWMsRUFBRUUsZUFBZSxFQUFFUSxZQUFZLEVBQUU7UUFDdEYsSUFBSU07UUFFSixNQUFNM0IsMEJBQTBCLElBQUksQ0FBQ0MsU0FBUyxJQUFLLEdBQUc7UUFFdERQLFFBQVFRLEtBQUssQ0FBQyxDQUFDLGdCQUFnQixFQUFFRix3QkFBd0IsMkNBQTJDLENBQUM7UUFFckc0QixJQUFBQSxvQkFBVyxFQUFDLENBQUNmO1lBQ1hjLDRCQUE0QixJQUFJLENBQUN6RCxnQkFBZ0IsQ0FBQ29DLFFBQVEsQ0FBQ0YsT0FBT1MsaUJBQWlCLENBQUMzQyxrQkFBa0IyQztnQkFDcEcsSUFBSVk7Z0JBRUpBLFlBQVlKLGFBQWFqQixPQUFPVixTQUFTaUIsZ0JBQWdCRTtnQkFFekQsT0FBT1k7WUFDVDtRQUNGLEdBQUdaLGlCQUFpQm5CO1FBRXBCLElBQUlpQywyQkFBMkI7WUFDN0JqQyxRQUFRYyxLQUFLLENBQUMsQ0FBQyxrQkFBa0IsRUFBRVIsd0JBQXdCLHlDQUF5QyxDQUFDO1FBQ3ZHO1FBRUEsT0FBTzJCO0lBQ1Q7SUFFQSxPQUFPRSxPQUFPLG9CQUFvQjtJQUVsQyxPQUFPQyxTQUFTQyxJQUFJLEVBQUVyQyxPQUFPLEVBQUU7UUFDN0IsSUFBSXNDO1FBRUosTUFBTSxFQUFFSCxJQUFJLEVBQUUsR0FBR0U7UUFFakIsSUFBSSxJQUFJLENBQUNGLElBQUksS0FBS0EsTUFBTTtZQUN0QkksSUFBQUEsb0JBQVcsRUFBQyxDQUFDdkM7Z0JBQ1h3QyxJQUFBQSxxQkFBWSxFQUFDLENBQUNILE1BQU1wQixnQkFBZ0JFO29CQUNsQyxNQUFNLEVBQUUvQyxNQUFNLEVBQUUsR0FBR2lFLE1BQ2J4RCx3QkFBd0I0RCxJQUFBQSx5Q0FBNEIsRUFBQ3JFLFFBQVE0QixVQUM3RDNCLE9BQU9RLHVCQUNQVixXQUFXO3dCQUNUOEM7d0JBQ0FFO3FCQUNELEVBQ0Q3QyxhQUFhLE1BQ2JDLGNBQWNtRSxxQ0FBcUM3RCx1QkFBdUJvQyxpQkFDMUV6QyxtQkFBbUJtRSwwQ0FBMEM5RCx1QkFBdUJzQztvQkFFMUZtQixxQkFBcUIsSUFBSXJFLGtCQUFrQkUsVUFBVUMsUUFBUUMsTUFBTUMsWUFBWUMsYUFBYUM7Z0JBQzlGLEdBQUc2RCxNQUFNckM7WUFDWCxHQUFHQTtRQUNMO1FBRUEsT0FBT3NDO0lBQ1Q7SUFFQSxPQUFPTSx5QkFBeUI3QyxLQUFLLEVBQUU4QyxZQUFZLEVBQUU1QixjQUFjLEVBQUVFLGVBQWUsRUFBRTtRQUNwRixJQUFJTjtRQUVKLE1BQU1QLDBCQUEwQndDLElBQUFBLHVEQUErQyxFQUFDL0MsT0FBTzhDO1FBRXZGRSxJQUFBQSxnQkFBTyxFQUFDLENBQUM5QixnQkFBZ0JFO1lBQ3ZCb0IsSUFBQUEsb0JBQVcsRUFBQyxDQUFDcEI7Z0JBQ1g2QixJQUFBQSxpQkFBUSxFQUFDLENBQUMvQjtvQkFDUixNQUFNN0MsU0FBU2tDLHlCQUNUTixVQUFVbUIsaUJBQ1Z0Qyx3QkFBd0I0RCxJQUFBQSx5Q0FBNEIsRUFBQ3JFLFFBQVE0QjtvQkFFbkVhLG9CQUFvQm9DLElBQUFBLG1EQUEwQyxFQUFDcEUsdUJBQXVCb0MsZ0JBQWdCRTtnQkFDeEcsR0FBR0YsZ0JBQWdCRTtZQUNyQixHQUFHQTtRQUNMLEdBQUdGLGdCQUFnQkU7UUFFbkIsT0FBT047SUFDVDtBQUNGO0FBRUEsU0FBUzZCLHFDQUFxQzdELHFCQUFxQixFQUFFb0MsY0FBYztJQUNqRixNQUFNakMsa0JBQWtCSCxzQkFBc0JxRSxrQkFBa0IsSUFDMUQzRSxjQUFjMEMsZUFBZWtDLG9CQUFvQixDQUFDbkU7SUFFeEQsT0FBT1Q7QUFDVDtBQUVBLFNBQVNvRSwwQ0FBMEM5RCxxQkFBcUIsRUFBRXNDLGVBQWU7SUFDdkYsTUFBTWhDLHVCQUF1Qk4sc0JBQXNCdUUsdUJBQXVCLElBQ3BFNUUsbUJBQW1CMkMsZ0JBQWdCZ0Msb0JBQW9CLENBQUNoRTtJQUU5RCxPQUFPWDtBQUNUIn0=
|
package/lib/node/frame.js
CHANGED
|
@@ -13,8 +13,8 @@ const _ruleNames = require("../ruleNames");
|
|
|
13
13
|
class FrameNode extends _occamlanguages.NonTerminalNode {
|
|
14
14
|
isSingular() {
|
|
15
15
|
let singular = false;
|
|
16
|
-
const
|
|
17
|
-
if (
|
|
16
|
+
const linkNode = this.getLinkNode();
|
|
17
|
+
if (linkNode !== null) {
|
|
18
18
|
const assumptionNodes = this.getAssumptionNodes(), assumptionNodesLength = assumptionNodes.length;
|
|
19
19
|
if (assumptionNodesLength === 0) {
|
|
20
20
|
singular = true;
|
|
@@ -22,17 +22,17 @@ class FrameNode extends _occamlanguages.NonTerminalNode {
|
|
|
22
22
|
}
|
|
23
23
|
return singular;
|
|
24
24
|
}
|
|
25
|
+
getLinkNode() {
|
|
26
|
+
const ruleName = _ruleNames.LINK_RULE_NAME, linkNode = this.getNodeByRuleName(ruleName);
|
|
27
|
+
return linkNode;
|
|
28
|
+
}
|
|
25
29
|
getAssumptionNodes() {
|
|
26
30
|
const ruleName = _ruleNames.ASSUMPTION_RULE_NAME, declarationNodes = this.getNodesByRuleName(ruleName);
|
|
27
31
|
return declarationNodes;
|
|
28
32
|
}
|
|
29
|
-
getMetavariableNode() {
|
|
30
|
-
const ruleName = _ruleNames.METAVARIABLE_RULE_NAME, metavariableNode = this.getNodeByRuleName(ruleName);
|
|
31
|
-
return metavariableNode;
|
|
32
|
-
}
|
|
33
33
|
static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) {
|
|
34
34
|
return _occamlanguages.NonTerminalNode.fromRuleNameChildNodesOpacityAndPrecedence(FrameNode, ruleName, childNodes, opacity, precedence);
|
|
35
35
|
}
|
|
36
36
|
}
|
|
37
37
|
|
|
38
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
38
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ub2RlL2ZyYW1lLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBOb25UZXJtaW5hbE5vZGUgfSBmcm9tIFwib2NjYW0tbGFuZ3VhZ2VzXCI7XG5cbmltcG9ydCB7IExJTktfUlVMRV9OQU1FLCBBU1NVTVBUSU9OX1JVTEVfTkFNRSB9IGZyb20gXCIuLi9ydWxlTmFtZXNcIjtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRnJhbWVOb2RlIGV4dGVuZHMgTm9uVGVybWluYWxOb2RlIHtcbiAgaXNTaW5ndWxhcigpIHtcbiAgICBsZXQgc2luZ3VsYXIgPSBmYWxzZTtcblxuICAgIGNvbnN0IGxpbmtOb2RlID0gdGhpcy5nZXRMaW5rTm9kZSgpO1xuXG4gICAgaWYgKGxpbmtOb2RlICE9PSBudWxsKSB7XG4gICAgICBjb25zdCBhc3N1bXB0aW9uTm9kZXMgPSB0aGlzLmdldEFzc3VtcHRpb25Ob2RlcygpLFxuICAgICAgICAgICAgYXNzdW1wdGlvbk5vZGVzTGVuZ3RoID0gYXNzdW1wdGlvbk5vZGVzLmxlbmd0aDtcblxuICAgICAgaWYgKGFzc3VtcHRpb25Ob2Rlc0xlbmd0aCA9PT0gMCkge1xuICAgICAgICBzaW5ndWxhciA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHNpbmd1bGFyO1xuICB9XG5cbiAgZ2V0TGlua05vZGUoKSB7XG4gICAgY29uc3QgcnVsZU5hbWUgPSBMSU5LX1JVTEVfTkFNRSxcbiAgICAgICAgICBsaW5rTm9kZSA9IHRoaXMuZ2V0Tm9kZUJ5UnVsZU5hbWUocnVsZU5hbWUpO1xuXG4gICAgcmV0dXJuIGxpbmtOb2RlO1xuICB9XG5cbiAgZ2V0QXNzdW1wdGlvbk5vZGVzKCkge1xuICAgIGNvbnN0IHJ1bGVOYW1lID0gQVNTVU1QVElPTl9SVUxFX05BTUUsXG4gICAgICAgICAgZGVjbGFyYXRpb25Ob2RlcyA9IHRoaXMuZ2V0Tm9kZXNCeVJ1bGVOYW1lKHJ1bGVOYW1lKTtcblxuICAgIHJldHVybiBkZWNsYXJhdGlvbk5vZGVzO1xuICB9XG5cbiAgc3RhdGljIGZyb21SdWxlTmFtZUNoaWxkTm9kZXNPcGFjaXR5QW5kUHJlY2VkZW5jZShydWxlTmFtZSwgY2hpbGROb2Rlcywgb3BhY2l0eSwgcHJlY2VkZW5jZSkgeyByZXR1cm4gTm9uVGVybWluYWxOb2RlLmZyb21SdWxlTmFtZUNoaWxkTm9kZXNPcGFjaXR5QW5kUHJlY2VkZW5jZShGcmFtZU5vZGUsIHJ1bGVOYW1lLCBjaGlsZE5vZGVzLCBvcGFjaXR5LCBwcmVjZWRlbmNlKTsgfVxufVxuIl0sIm5hbWVzIjpbIkZyYW1lTm9kZSIsIk5vblRlcm1pbmFsTm9kZSIsImlzU2luZ3VsYXIiLCJzaW5ndWxhciIsImxpbmtOb2RlIiwiZ2V0TGlua05vZGUiLCJhc3N1bXB0aW9uTm9kZXMiLCJnZXRBc3N1bXB0aW9uTm9kZXMiLCJhc3N1bXB0aW9uTm9kZXNMZW5ndGgiLCJsZW5ndGgiLCJydWxlTmFtZSIsIkxJTktfUlVMRV9OQU1FIiwiZ2V0Tm9kZUJ5UnVsZU5hbWUiLCJBU1NVTVBUSU9OX1JVTEVfTkFNRSIsImRlY2xhcmF0aW9uTm9kZXMiLCJnZXROb2Rlc0J5UnVsZU5hbWUiLCJmcm9tUnVsZU5hbWVDaGlsZE5vZGVzT3BhY2l0eUFuZFByZWNlZGVuY2UiLCJjaGlsZE5vZGVzIiwib3BhY2l0eSIsInByZWNlZGVuY2UiXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQU1BOzs7ZUFBcUJBOzs7Z0NBSlc7MkJBRXFCO0FBRXRDLE1BQU1BLGtCQUFrQkMsK0JBQWU7SUFDcERDLGFBQWE7UUFDWCxJQUFJQyxXQUFXO1FBRWYsTUFBTUMsV0FBVyxJQUFJLENBQUNDLFdBQVc7UUFFakMsSUFBSUQsYUFBYSxNQUFNO1lBQ3JCLE1BQU1FLGtCQUFrQixJQUFJLENBQUNDLGtCQUFrQixJQUN6Q0Msd0JBQXdCRixnQkFBZ0JHLE1BQU07WUFFcEQsSUFBSUQsMEJBQTBCLEdBQUc7Z0JBQy9CTCxXQUFXO1lBQ2I7UUFDRjtRQUVBLE9BQU9BO0lBQ1Q7SUFFQUUsY0FBYztRQUNaLE1BQU1LLFdBQVdDLHlCQUFjLEVBQ3pCUCxXQUFXLElBQUksQ0FBQ1EsaUJBQWlCLENBQUNGO1FBRXhDLE9BQU9OO0lBQ1Q7SUFFQUcscUJBQXFCO1FBQ25CLE1BQU1HLFdBQVdHLCtCQUFvQixFQUMvQkMsbUJBQW1CLElBQUksQ0FBQ0Msa0JBQWtCLENBQUNMO1FBRWpELE9BQU9JO0lBQ1Q7SUFFQSxPQUFPRSwyQ0FBMkNOLFFBQVEsRUFBRU8sVUFBVSxFQUFFQyxPQUFPLEVBQUVDLFVBQVUsRUFBRTtRQUFFLE9BQU9sQiwrQkFBZSxDQUFDZSwwQ0FBMEMsQ0FBQ2hCLFdBQVdVLFVBQVVPLFlBQVlDLFNBQVNDO0lBQWE7QUFDMU4ifQ==
|