occam-nominal 1.0.501 → 1.0.503
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/file/nominal.js +7 -7
- package/lib/element/assertion/contained.js +2 -2
- package/lib/element/assertion/schema.js +16 -16
- package/lib/element/assertion/signature.js +20 -20
- package/lib/element/assumption/implicit.js +19 -22
- package/lib/element/assumption.js +22 -22
- package/lib/element/combinator.js +17 -14
- package/lib/element/constraint.js +26 -22
- package/lib/element/constructor.js +18 -15
- package/lib/element/generator.js +17 -19
- package/lib/element/hypothesis.js +18 -15
- package/lib/element/label.js +18 -14
- package/lib/element/link.js +181 -0
- package/lib/element/reference.js +19 -21
- package/lib/node/assertion/schema.js +5 -5
- package/lib/node/assertion/signature.js +5 -5
- package/lib/node/assumption.js +4 -4
- package/lib/node/link.js +23 -0
- package/lib/nonTerminalNodeMap.js +3 -1
- package/lib/preamble.js +2 -1
- package/lib/ruleNames.js +5 -1
- package/lib/utilities/element.js +42 -39
- package/package.json +5 -5
- package/src/context/file/nominal.js +8 -7
- package/src/element/assertion/contained.js +2 -2
- package/src/element/assertion/schema.js +16 -16
- package/src/element/assertion/signature.js +20 -20
- package/src/element/assumption/implicit.js +20 -28
- package/src/element/assumption.js +22 -22
- package/src/element/combinator.js +16 -14
- package/src/element/constraint.js +21 -16
- package/src/element/constructor.js +18 -16
- package/src/element/generator.js +19 -24
- package/src/element/hypothesis.js +18 -16
- package/src/element/label.js +17 -13
- package/src/element/link.js +262 -0
- package/src/element/reference.js +18 -15
- package/src/node/assertion/schema.js +8 -8
- package/src/node/assertion/signature.js +8 -8
- package/src/node/assumption.js +5 -5
- package/src/node/link.js +16 -0
- package/src/nonTerminalNodeMap.js +3 -0
- package/src/preamble.js +1 -0
- package/src/ruleNames.js +1 -0
- package/src/utilities/element.js +55 -51
|
@@ -8,8 +8,8 @@ Object.defineProperty(exports, "default", {
|
|
|
8
8
|
return NominalFileContext;
|
|
9
9
|
}
|
|
10
10
|
});
|
|
11
|
-
const _occamlanguages = require("occam-languages");
|
|
12
11
|
const _necessary = require("necessary");
|
|
12
|
+
const _occamlanguages = require("occam-languages");
|
|
13
13
|
const _lexer = /*#__PURE__*/ _interop_require_default(require("../../nominal/lexer"));
|
|
14
14
|
const _parser = /*#__PURE__*/ _interop_require_default(require("../../nominal/parser"));
|
|
15
15
|
const _type = require("../../utilities/type");
|
|
@@ -21,7 +21,7 @@ function _interop_require_default(obj) {
|
|
|
21
21
|
default: obj
|
|
22
22
|
};
|
|
23
23
|
}
|
|
24
|
-
const { push } = _necessary.arrayUtilities, { nominalLexerFromCombinedCustomGrammar, nominalParserFromCombinedCustomGrammar } = _occamlanguages.nominalUtilities;
|
|
24
|
+
const { push } = _necessary.arrayUtilities, { isolate } = _occamlanguages.continuationUtilities, { nominalLexerFromCombinedCustomGrammar, nominalParserFromCombinedCustomGrammar } = _occamlanguages.nominalUtilities;
|
|
25
25
|
class NominalFileContext extends _occamlanguages.FileContext {
|
|
26
26
|
constructor(context, fileContent, filePath, tokens, node, json, lexer, parser, types, rules, axioms, lemmas, schemas, theorems, generators, conjectures, combinators, typePrefixes, constructors, declaredVariables, declaredMetavariables){
|
|
27
27
|
super(context, fileContent, filePath, tokens, node, json);
|
|
@@ -455,10 +455,10 @@ class NominalFileContext extends _occamlanguages.FileContext {
|
|
|
455
455
|
///
|
|
456
456
|
}
|
|
457
457
|
verifyFile(forward, back) {
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
return forward
|
|
461
|
-
}, back);
|
|
458
|
+
return isolate((forward, back)=>{
|
|
459
|
+
const node = this.getNode(), context = this, fileNode = node; ///
|
|
460
|
+
return (0, _verify.verifyFile)(fileNode, context, forward, back);
|
|
461
|
+
}, forward, back);
|
|
462
462
|
}
|
|
463
463
|
initialise() {
|
|
464
464
|
const json = this.getJSON();
|
|
@@ -511,4 +511,4 @@ class NominalFileContext extends _occamlanguages.FileContext {
|
|
|
511
511
|
}
|
|
512
512
|
}
|
|
513
513
|
|
|
514
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb250ZXh0L2ZpbGUvbm9taW5hbC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgRmlsZUNvbnRleHQsIG5vbWluYWxVdGlsaXRpZXMgfSBmcm9tIFwib2NjYW0tbGFuZ3VhZ2VzXCI7XG5pbXBvcnQgeyBhcnJheVV0aWxpdGllcyB9IGZyb20gXCJuZWNlc3NhcnlcIjtcblxuaW1wb3J0IE5vbWluYWxMZXhlciBmcm9tIFwiLi4vLi4vbm9taW5hbC9sZXhlclwiO1xuaW1wb3J0IE5vbWluYWxQYXJzZXIgZnJvbSBcIi4uLy4uL25vbWluYWwvcGFyc2VyXCI7XG5cbmltcG9ydCB7IGZpbmRUeXBlfSBmcm9tIFwiLi4vLi4vdXRpbGl0aWVzL3R5cGVcIjtcbmltcG9ydCB7IHZlcmlmeUZpbGUgfSBmcm9tIFwiLi4vLi4vcHJvY2Vzcy92ZXJpZnlcIjtcbmltcG9ydCB7IGZpbmRNZXRhVHlwZUJ5TWV0YVR5cGVOYW1lIH0gZnJvbSBcIi4uLy4uL21ldGFUeXBlc1wiO1xuaW1wb3J0IHsgdHlwZXNGcm9tSlNPTixcbiAgICAgICAgIHJ1bGVzRnJvbUpTT04sXG4gICAgICAgICBheGlvbXNGcm9tSlNPTixcbiAgICAgICAgIHNjaGVtYXNGcm9tSlNPTixcbiAgICAgICAgIHR5cGVzVG9UeXBlc0pTT04sXG4gICAgICAgICB0aGVvcmVtc0Zyb21KU09OLFxuICAgICAgICAgcnVsZXNUb1J1bGVzSlNPTixcbiAgICAgICAgIGF4aW9tc1RvQXhpb21zSlNPTixcbiAgICAgICAgIGdlbmVyYXRvcnNGcm9tSlNPTixcbiAgICAgICAgIGNvbmplY3R1cmVzRnJvbUpTT04sXG4gICAgICAgICBjb21iaW5hdG9yc0Zyb21KU09OLFxuICAgICAgICAgdHlwZVByZWZpeGVzRnJvbUpTT04sXG4gICAgICAgICBjb25zdHJ1Y3RvcnNGcm9tSlNPTixcbiAgICAgICAgIHNjaGVtYXNUb1NjaGVtYXNKU09OLFxuICAgICAgICAgdGhlb3JlbXNUb1RoZW9yZW1zSlNPTixcbiAgICAgICAgIGRlY2xhcmVkVmFyaWFibGVzRnJvbUpTT04sXG4gICAgICAgICBnZW5lcmF0b3JzVG9HZW5lcmF0b3JzSlNPTixcbiAgICAgICAgIGNvbmplY3R1cmVzVG9Db25qZWN0dXJlc0pTT04sXG4gICAgICAgICBjb21iaW5hdG9yc1RvQ29tYmluYXRvcnNKU09OLFxuICAgICAgICAgZGVjbGFyZWRNZXRhdmFyaWFibGVzRnJvbUpTT04sXG4gICAgICAgICB0eXBlUHJlZml4ZXNUb1R5cGVQcmVmaXhlc0pTT04sXG4gICAgICAgICBjb25zdHJ1Y3RvcnNUb0NvbnN0cnVjdG9yc0pTT04sXG4gICAgICAgICBkZWNsYXJlZFZhcmlhYmxlc1RvRGVjbGFyZWRWYXJpYWJsZXNKU09OLFxuICAgICAgICAgZGVjbGFyZWRNZXRhdmFyaWFibGVzVG9EZWNsYXJlZE1ldGF2YXJpYWJsZXNKU09OIH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9qc29uXCI7XG5cbmNvbnN0IHsgcHVzaCB9ID0gYXJyYXlVdGlsaXRpZXMsXG4gICAgICB7IG5vbWluYWxMZXhlckZyb21Db21iaW5lZEN1c3RvbUdyYW1tYXIsIG5vbWluYWxQYXJzZXJGcm9tQ29tYmluZWRDdXN0b21HcmFtbWFyIH0gPSBub21pbmFsVXRpbGl0aWVzO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBOb21pbmFsRmlsZUNvbnRleHQgZXh0ZW5kcyBGaWxlQ29udGV4dCB7XG4gIGNvbnN0cnVjdG9yKGNvbnRleHQsIGZpbGVDb250ZW50LCBmaWxlUGF0aCwgdG9rZW5zLCBub2RlLCBqc29uLCBsZXhlciwgcGFyc2VyLCB0eXBlcywgcnVsZXMsIGF4aW9tcywgbGVtbWFzLCBzY2hlbWFzLCB0aGVvcmVtcywgZ2VuZXJhdG9ycywgY29uamVjdHVyZXMsIGNvbWJpbmF0b3JzLCB0eXBlUHJlZml4ZXMsIGNvbnN0cnVjdG9ycywgZGVjbGFyZWRWYXJpYWJsZXMsIGRlY2xhcmVkTWV0YXZhcmlhYmxlcykge1xuICAgIHN1cGVyKGNvbnRleHQsIGZpbGVDb250ZW50LCBmaWxlUGF0aCwgdG9rZW5zLCBub2RlLCBqc29uKTtcblxuICAgIHRoaXMubGV4ZXIgPSBsZXhlcjtcbiAgICB0aGlzLnBhcnNlciA9IHBhcnNlcjtcbiAgICB0aGlzLmNvbnRleHQgPSBjb250ZXh0O1xuICAgIHRoaXMuZmlsZVBhdGggPSBmaWxlUGF0aDtcbiAgICB0aGlzLnRva2VucyA9IHRva2VucztcbiAgICB0aGlzLm5vZGUgPSBub2RlO1xuICAgIHRoaXMudHlwZXMgPSB0eXBlcztcbiAgICB0aGlzLnJ1bGVzID0gcnVsZXM7XG4gICAgdGhpcy5heGlvbXMgPSBheGlvbXM7XG4gICAgdGhpcy5sZW1tYXMgPSBsZW1tYXM7XG4gICAgdGhpcy5zY2hlbWFzID0gc2NoZW1hcztcbiAgICB0aGlzLnRoZW9yZW1zID0gdGhlb3JlbXM7XG4gICAgdGhpcy5nZW5lcmF0b3JzID0gZ2VuZXJhdG9ycztcbiAgICB0aGlzLmNvbmplY3R1cmVzID0gY29uamVjdHVyZXM7XG4gICAgdGhpcy5jb21iaW5hdG9ycyA9IGNvbWJpbmF0b3JzO1xuICAgIHRoaXMudHlwZVByZWZpeGVzID0gdHlwZVByZWZpeGVzO1xuICAgIHRoaXMuY29uc3RydWN0b3JzID0gY29uc3RydWN0b3JzO1xuICAgIHRoaXMuZGVjbGFyZWRWYXJpYWJsZXMgPSBkZWNsYXJlZFZhcmlhYmxlcztcbiAgICB0aGlzLmRlY2xhcmVkTWV0YXZhcmlhYmxlcyA9IGRlY2xhcmVkTWV0YXZhcmlhYmxlcztcbiAgfVxuXG4gIGdldExleGVyKCkge1xuICAgIHJldHVybiB0aGlzLmxleGVyO1xuICB9XG5cbiAgZ2V0UGFyc2VyKCkge1xuICAgIHJldHVybiB0aGlzLnBhcnNlcjtcbiAgfVxuXG4gIGdldExhYmVscyhpbmNsdWRlUmVsZWFzZSA9IHRydWUpIHtcbiAgICBjb25zdCBsYWJlbHMgPSBbXTtcblxuICAgIGlmIChpbmNsdWRlUmVsZWFzZSkge1xuICAgICAgY29uc3QgcmVsZWFzZUNvbnRleHRMYWJlbHMgPSB0aGlzLmNvbnRleHQuZ2V0TGFiZWxzKCk7XG5cbiAgICAgIHB1c2gobGFiZWxzLCByZWxlYXNlQ29udGV4dExhYmVscyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucnVsZXMuZm9yRWFjaCgocnVsZSkgPT4ge1xuICAgICAgICBjb25zdCBydWxlTGFiZWxzID0gcnVsZS5nZXRMYWJlbHMoKTtcblxuICAgICAgICBwdXNoKGxhYmVscywgcnVsZUxhYmVscyk7XG4gICAgICB9KTtcblxuICAgICAgdGhpcy5heGlvbXMuZm9yRWFjaCgoYXhpb20pID0+IHtcbiAgICAgICAgY29uc3QgYXhpb21MYWJlbHMgPSBheGlvbS5nZXRMYWJlbHMoKTtcblxuICAgICAgICBwdXNoKGxhYmVscywgYXhpb21MYWJlbHMpO1xuICAgICAgfSk7XG5cbiAgICAgIHRoaXMubGVtbWFzLmZvckVhY2goKGxlbW1hKSA9PiB7XG4gICAgICAgIGNvbnN0IGxlbW1hTGFiZWxzID0gbGVtbWEuZ2V0TGFiZWxzKCk7XG5cbiAgICAgICAgcHVzaChsYWJlbHMsIGxlbW1hTGFiZWxzKTtcbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLnRoZW9yZW1zLmZvckVhY2goKHRoZW9yZW0pID0+IHtcbiAgICAgICAgY29uc3QgdGhlb3JlbUxhYmVscyA9IHRoZW9yZW0uZ2V0TGFiZWxzKCk7XG5cbiAgICAgICAgcHVzaChsYWJlbHMsIHRoZW9yZW1MYWJlbHMpO1xuICAgICAgfSk7XG5cbiAgICAgIHRoaXMuY29uamVjdHVyZXMuZm9yRWFjaCgoY29uamVjdHVyZSkgPT4ge1xuICAgICAgICBjb25zdCBjb25qZWN0dXJlTGFiZWxzID0gY29uamVjdHVyZS5nZXRMYWJlbHMoKTtcblxuICAgICAgICBwdXNoKGxhYmVscywgY29uamVjdHVyZUxhYmVscyk7XG4gICAgICB9KTtcblxuICAgICAgdGhpcy5zY2hlbWFzLmZvckVhY2goKHNjaGVtYSkgPT4ge1xuICAgICAgICBjb25zdCBzY2hlbWFMYWJlbCA9IHNjaGVtYS5nZXRMYWJlbCgpO1xuXG4gICAgICAgIGxhYmVscy5wdXNoKHNjaGVtYUxhYmVsKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiBsYWJlbHM7XG4gIH1cblxuICBnZXRUeXBlcyhpbmNsdWRlUmVsZWFzZSA9IHRydWUpIHtcbiAgICBjb25zdCB0eXBlcyA9IGluY2x1ZGVSZWxlYXNlID9cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0LmdldFR5cGVzKCkgOlxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMudHlwZXM7XG5cbiAgICByZXR1cm4gdHlwZXM7XG4gIH1cblxuICBnZXRSdWxlcyhpbmNsdWRlUmVsZWFzZSA9IHRydWUpIHtcbiAgICBjb25zdCBydWxlcyA9IGluY2x1ZGVSZWxlYXNlID9cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0LmdldFJ1bGVzKCkgOlxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMucnVsZXM7XG5cbiAgICByZXR1cm4gcnVsZXM7XG4gIH1cblxuICBnZXRBeGlvbXMoaW5jbHVkZVJlbGVhc2UgPSB0cnVlKSB7XG4gICAgY29uc3QgYXhpb21zID0gaW5jbHVkZVJlbGVhc2UgP1xuICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0LmdldEF4aW9tcygpIDpcbiAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5heGlvbXM7XG5cbiAgICByZXR1cm4gYXhpb21zO1xuICB9XG5cbiAgZ2V0TGVtbWFzKGluY2x1ZGVSZWxlYXNlID0gdHJ1ZSkge1xuICAgIGNvbnN0IGxlbW1hcyA9IGluY2x1ZGVSZWxlYXNlID9cbiAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dC5nZXRMZW1tYXMoKSA6XG4gICAgICAgICAgICAgICAgICAgICAgIHRoaXMubGVtbWFzO1xuXG4gICAgcmV0dXJuIGxlbW1hcztcbiAgfVxuXG4gIGdldFNjaGVtYXMoaW5jbHVkZVJlbGVhc2UgPSB0cnVlKSB7XG4gICAgY29uc3Qgc2NoZW1hcyA9IGluY2x1ZGVSZWxlYXNlID9cbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRleHQuZ2V0U2NoZW1hcygpIDpcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2NoZW1hcztcblxuICAgIHJldHVybiBzY2hlbWFzO1xuICB9XG5cbiAgZ2V0VGhlb3JlbXMoaW5jbHVkZVJlbGVhc2UgPSB0cnVlKSB7XG4gICAgY29uc3QgdGhlb3JlbXMgPSBpbmNsdWRlUmVsZWFzZSA/XG4gICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dC5nZXRUaGVvcmVtcygpIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRoZW9yZW1zO1xuXG4gICAgcmV0dXJuIHRoZW9yZW1zO1xuICB9XG5cbiAgZ2V0R2VuZXJhdG9ycyhpbmNsdWRlUmVsZWFzZSA9IHRydWUpIHtcbiAgICBjb25zdCBnZW5lcmF0b3JzID0gaW5jbHVkZVJlbGVhc2UgP1xuICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dC5nZXRHZW5lcmF0b3JzKCkgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5nZW5lcmF0b3JzO1xuXG4gICAgcmV0dXJuIGdlbmVyYXRvcnM7XG4gIH1cblxuICBnZXRDb25qZWN0dXJlcyhpbmNsdWRlUmVsZWFzZSA9IHRydWUpIHtcbiAgICBjb25zdCBjb25qZWN0dXJlcyA9IGluY2x1ZGVSZWxlYXNlID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0LmdldENvbmplY3R1cmVzKCkgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29uamVjdHVyZXM7XG5cbiAgICByZXR1cm4gY29uamVjdHVyZXM7XG4gIH1cblxuICBnZXRDb21iaW5hdG9ycyhpbmNsdWRlUmVsZWFzZSA9IHRydWUpIHtcbiAgICBjb25zdCBjb21iaW5hdG9ycyA9IGluY2x1ZGVSZWxlYXNlID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0LmdldENvbWJpbmF0b3JzKCkgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29tYmluYXRvcnM7XG5cbiAgICByZXR1cm4gY29tYmluYXRvcnM7XG4gIH1cblxuICBnZXRUeXBlUHJlZml4ZXMoaW5jbHVkZVJlbGVhc2UgPSB0cnVlKSB7XG4gICAgY29uc3QgdHlwZVByZWZpeGVzID0gaW5jbHVkZVJlbGVhc2UgP1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0LmdldFR5cGVQcmVmaXhlcygpIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50eXBlUHJlZml4ZXM7XG5cbiAgICByZXR1cm4gdHlwZVByZWZpeGVzO1xuICB9XG5cbiAgZ2V0Q29uc3RydWN0b3JzKGluY2x1ZGVSZWxlYXNlID0gdHJ1ZSkge1xuICAgIGNvbnN0IGNvbnN0cnVjdG9ycyA9IGluY2x1ZGVSZWxlYXNlID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dC5nZXRDb25zdHJ1Y3RvcnMoKSA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29uc3RydWN0b3JzO1xuXG4gICAgcmV0dXJuIGNvbnN0cnVjdG9ycztcbiAgfVxuXG4gIGdldFByb2NlZHVyZXMoaW5jbHVkZVJlbGVhc2UgPSB0cnVlKSB7XG4gICAgY29uc3QgcHJvY2VkdXJlcyA9IGluY2x1ZGVSZWxlYXNlID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0LmdldFByb2NlZHVyZXMoKSA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbDsgIC8vL1xuXG4gICAgcmV0dXJuIHByb2NlZHVyZXM7XG4gIH1cblxuICBnZXRDbGFpbXMoaW5jbHVkZVJlbGVhc2UgPSB0cnVlKSB7XG4gICAgY29uc3QgbGVtbWFzID0gdGhpcy5nZXRMZW1tYXMoaW5jbHVkZVJlbGVhc2UpLFxuICAgICAgICAgIGF4aW9tcyA9IHRoaXMuZ2V0QXhpb21zKGluY2x1ZGVSZWxlYXNlKSxcbiAgICAgICAgICB0aGVvcmVtcyA9IHRoaXMuZ2V0VGhlb3JlbXMoaW5jbHVkZVJlbGVhc2UpLFxuICAgICAgICAgIGNvbmplY3R1cmVzID0gdGhpcy5nZXRDb25qZWN0dXJlcyhpbmNsdWRlUmVsZWFzZSksXG4gICAgICAgICAgY2xhaW1zID0gW1xuICAgICAgICAgICAgLi4ubGVtbWFzLFxuICAgICAgICAgICAgLi4uYXhpb21zLFxuICAgICAgICAgICAgLi4udGhlb3JlbXMsXG4gICAgICAgICAgICAuLi5jb25qZWN0dXJlc1xuICAgICAgICAgIF07XG5cbiAgICByZXR1cm4gY2xhaW1zO1xuICB9XG5cbiAgZ2V0RGVjbGFyZWRWYXJpYWJsZXMoZGVjbGFyZWRWYXJpYWJsZXMgPSBbXSkge1xuICAgIHB1c2goZGVjbGFyZWRWYXJpYWJsZXMsIHRoaXMuZGVjbGFyZWRWYXJpYWJsZXMpO1xuXG4gICAgcmV0dXJuIGRlY2xhcmVkVmFyaWFibGVzO1xuICB9XG5cbiAgZ2V0RGVjbGFyZWRNZXRhdmFyaWFibGVzKCkge1xuICAgIHJldHVybiB0aGlzLmRlY2xhcmVkTWV0YXZhcmlhYmxlcztcbiAgfVxuXG4gIGdldFRlcm1zKHRlcm1zID0gW10pIHtcbiAgICByZXR1cm4gdGVybXM7XG4gIH1cblxuICBnZXRGcmFtZXMoZnJhbWVzID0gW10pIHtcbiAgICByZXR1cm4gZnJhbWVzO1xuICB9XG5cbiAgZ2V0RXF1YWxpdGllcyhlcXVhbGl0aWVzID0gW10pIHtcbiAgICByZXR1cm4gZXF1YWxpdGllcztcbiAgfVxuXG4gIGdldEFzc2VydGlvbnMoYXNzZXJ0aW9ucyA9IFtdKSB7XG4gICAgcmV0dXJuIGFzc2VydGlvbnM7XG4gIH1cblxuICBnZXRTdGF0ZW1lbnRzKHN0YXRlbWVudHMgPSBbXSkge1xuICAgIHJldHVybiBzdGF0ZW1lbnRzO1xuICB9XG5cbiAgZ2V0U2lnbmF0dXJlcyhzaWduYXR1cmVzID0gW10pIHtcbiAgICByZXR1cm4gc2lnbmF0dXJlcztcbiAgfVxuXG4gIGdldFJlZmVyZW5jZXMocmVmZXJlbmNlcyA9IFtdKSB7XG4gICAgcmV0dXJuIHJlZmVyZW5jZXM7XG4gIH1cblxuICBnZXRBc3N1bXB0aW9ucyhhc3N1bXB0aW9ucyA9IFtdKSB7XG4gICAgcmV0dXJuIGFzc3VtcHRpb25zO1xuICB9XG5cbiAgZ2V0TWV0YXZhcmlhYmxlcyhtZXRhdmFyaWFibGVzID0gW10pIHtcbiAgICByZXR1cm4gbWV0YXZhcmlhYmxlcztcbiAgfVxuXG4gIGdldFN1YnN0aXR1dGlvbnMoc3Vic3RpdHV0aW9ucyA9IFtdKSB7XG4gICAgcmV0dXJuIHN1YnN0aXR1dGlvbnM7XG4gIH1cblxuICBnZXRJbmZlcnJlZFN1YnN0aXR1dGlvbnMoaW5mZXJyZWRTdWJzdGl0dXRpb25zID0gW10pIHtcbiAgICByZXR1cm4gaW5mZXJyZWRTdWJzdGl0dXRpb25zO1xuICB9XG5cbiAgZ2V0RXF1aXZhbGVuY2VzKCkge1xuICAgIGNvbnN0IGVxdWl2YWxlbmNlcyA9IFtdO1xuXG4gICAgcmV0dXJuIGVxdWl2YWxlbmNlcztcbiAgfVxuXG4gIGdldEZhY3RPclN1YnByb29mcygpIHtcbiAgICBjb25zdCBmYWN0T3JTdWJwcm9vZnMgPSBbXTtcblxuICAgIHJldHVybiBmYWN0T3JTdWJwcm9vZnM7XG4gIH1cblxuICBhZGRUeXBlKHR5cGUpIHtcbiAgICB0aGlzLnR5cGVzLnB1c2godHlwZSk7XG5cbiAgICBjb25zdCBmaWxlUGF0aCA9IHRoaXMuZ2V0RmlsZVBhdGgoKSxcbiAgICAgICAgICB0eXBlU3RyaW5nID0gdHlwZS5nZXRTdHJpbmcoKTtcblxuICAgIHRoaXMudHJhY2UoYEFkZGVkIHRoZSAnJHt0eXBlU3RyaW5nfScgdHlwZSB0byB0aGUgJyR7ZmlsZVBhdGh9JyBmaWxlIGNvbnRleHQuYClcbiAgfVxuXG4gIGFkZFJ1bGUocnVsZSkge1xuICAgIHRoaXMucnVsZXMucHVzaChydWxlKTtcblxuICAgIGNvbnN0IGZpbGVQYXRoID0gdGhpcy5nZXRGaWxlUGF0aCgpLFxuICAgICAgICAgIHJ1bGVTdHJpbmcgPSBydWxlLmdldFN0cmluZygpO1xuXG4gICAgdGhpcy50cmFjZShgQWRkZWQgdGhlICcke3J1bGVTdHJpbmd9JyBydWxlIHRvIHRoZSAnJHtmaWxlUGF0aH0nIGZpbGUgY29udGV4dC5gKVxuICB9XG5cbiAgYWRkQXhpb20oYXhpb20pIHtcbiAgICB0aGlzLmF4aW9tcy5wdXNoKGF4aW9tKTtcblxuICAgIGNvbnN0IGZpbGVQYXRoID0gdGhpcy5nZXRGaWxlUGF0aCgpLFxuICAgICAgICAgIGF4aW9tU3RyaW5nID0gYXhpb20uZ2V0U3RyaW5nKCk7XG5cbiAgICB0aGlzLnRyYWNlKGBBZGRlZCB0aGUgJyR7YXhpb21TdHJpbmd9JyBheGlvbSB0byB0aGUgJyR7ZmlsZVBhdGh9JyBmaWxlIGNvbnRleHQuYClcbiAgfVxuXG4gIGFkZExlbW1hKGxlbW1hKSB7XG4gICAgdGhpcy5sZW1tYXMucHVzaChsZW1tYSk7XG5cbiAgICBjb25zdCBmaWxlUGF0aCA9IHRoaXMuZ2V0RmlsZVBhdGgoKSxcbiAgICAgIGxlbW1hU3RyaW5nID0gbGVtbWEuZ2V0U3RyaW5nKCk7XG5cbiAgICB0aGlzLnRyYWNlKGBBZGRlZCB0aGUgJyR7bGVtbWFTdHJpbmd9JyBsZW1tYSB0byB0aGUgJyR7ZmlsZVBhdGh9JyBmaWxlIGNvbnRleHQuYClcbiAgfVxuXG4gIGFkZFNjaGVtYShzY2hlbWEpIHtcbiAgICB0aGlzLnNjaGVtYXMucHVzaChzY2hlbWEpO1xuXG4gICAgY29uc3QgZmlsZVBhdGggPSB0aGlzLmdldEZpbGVQYXRoKCksXG4gICAgICAgICAgc2NoZW1hU3RyaW5nID0gc2NoZW1hLmdldFN0cmluZygpO1xuXG4gICAgdGhpcy50cmFjZShgQWRkZWQgdGhlICcke3NjaGVtYVN0cmluZ30nIHNjaGVtYSB0byB0aGUgJyR7ZmlsZVBhdGh9JyBmaWxlIGNvbnRleHQuYClcbiAgfVxuXG4gIGFkZFRoZW9yZW0odGhlb3JlbSkge1xuICAgIHRoaXMudGhlb3JlbXMucHVzaCh0aGVvcmVtKTtcblxuICAgIGNvbnN0IGZpbGVQYXRoID0gdGhpcy5nZXRGaWxlUGF0aCgpLFxuICAgICAgICAgIHRoZW9yZW1TdHJpbmcgPSB0aGVvcmVtLmdldFN0cmluZygpO1xuXG4gICAgdGhpcy50cmFjZShgQWRkZWQgdGhlICcke3RoZW9yZW1TdHJpbmd9JyB0aGVvcmVtIHRvIHRoZSAnJHtmaWxlUGF0aH0nIGZpbGUgY29udGV4dC5gKVxuICB9XG5cbiAgYWRkR2VuZXJhdG9yKGdlbmVyYXRvcikge1xuICAgIHRoaXMuZ2VuZXJhdG9ycy5wdXNoKGdlbmVyYXRvcik7XG5cbiAgICBjb25zdCBmaWxlUGF0aCA9IHRoaXMuZ2V0RmlsZVBhdGgoKSxcbiAgICAgICAgICBnZW5lcmF0b3JTdHJpbmcgPSBnZW5lcmF0b3IuZ2V0U3RyaW5nKCk7XG5cbiAgICB0aGlzLnRyYWNlKGBBZGRlZCB0aGUgJyR7Z2VuZXJhdG9yU3RyaW5nfScgZ2VuZXJhdG9yIHRvIHRoZSAnJHtmaWxlUGF0aH0nIGZpbGUgY29udGV4dC5gKVxuICB9XG5cbiAgYWRkQ29uamVjdHVyZShjb25qZWN0dXJlKSB7XG4gICAgdGhpcy5jb25qZWN0dXJlcy5wdXNoKGNvbmplY3R1cmUpO1xuXG4gICAgY29uc3QgZmlsZVBhdGggPSB0aGlzLmdldEZpbGVQYXRoKCksXG4gICAgICAgICAgb2NuamVjdHVyZVN0cmluZyA9IGNvbmplY3R1cmUuZ2V0U3RyaW5nKCk7XG5cbiAgICB0aGlzLnRyYWNlKGBBZGRlZCB0aGUgJyR7b2NuamVjdHVyZVN0cmluZ30nIG9jbmplY3R1cmUgdG8gdGhlICcke2ZpbGVQYXRofScgZmlsZSBjb250ZXh0LmApXG4gIH1cblxuICBhZGRDb21iaW5hdG9yKGNvbWJpbmF0b3IpIHtcbiAgICB0aGlzLmNvbWJpbmF0b3JzLnB1c2goY29tYmluYXRvcik7XG5cbiAgICBjb25zdCBmaWxlUGF0aCA9IHRoaXMuZ2V0RmlsZVBhdGgoKSxcbiAgICAgICAgICBjb21iaW5hdG9yU3RyaW5nID0gY29tYmluYXRvci5nZXRTdHJpbmcoKTtcblxuICAgIHRoaXMudHJhY2UoYEFkZGVkIHRoZSAnJHtjb21iaW5hdG9yU3RyaW5nfScgY29tYmluYXRvciB0byB0aGUgJyR7ZmlsZVBhdGh9JyBmaWxlIGNvbnRleHQuYClcbiAgfVxuXG4gIGFkZFR5cGVQcmVmaXgodHlwZVByZWZpeCkge1xuICAgIHRoaXMudHlwZVByZWZpeGVzLnB1c2godHlwZVByZWZpeCk7XG5cbiAgICBjb25zdCBmaWxlUGF0aCA9IHRoaXMuZ2V0RmlsZVBhdGgoKSxcbiAgICAgICAgICB0eXBlUHJlZml4U3RyaW5nID0gdHlwZVByZWZpeC5nZXRTdHJpbmcoKTtcblxuICAgIHRoaXMudHJhY2UoYEFkZGVkIHRoZSAnJHt0eXBlUHJlZml4U3RyaW5nfScgdHlwZS1wcmVmaXggdG8gdGhlICcke2ZpbGVQYXRofScgZmlsZSBjb250ZXh0LmApXG4gIH1cblxuICBhZGRDb25zdHJ1Y3Rvcihjb25zdHJ1Y3Rvcikge1xuICAgIHRoaXMuY29uc3RydWN0b3JzLnB1c2goY29uc3RydWN0b3IpO1xuXG4gICAgY29uc3QgZmlsZVBhdGggPSB0aGlzLmdldEZpbGVQYXRoKCksXG4gICAgICAgICAgY29uc3RydWN0b3JTdHJpbmcgPSBjb25zdHJ1Y3Rvci5nZXRTdHJpbmcoKTtcblxuICAgIHRoaXMudHJhY2UoYEFkZGVkIHRoZSAnJHtjb25zdHJ1Y3RvclN0cmluZ30nIGNvbnN0cnVjdG9yIHRvIHRoZSAnJHtmaWxlUGF0aH0nIGZpbGUgY29udGV4dC5gKVxuICB9XG5cbiAgYWRkRGVjbGFyZWRWYXJpYWJsZShkZWNsYXJlZFZhcmlhYmxlKSB7XG4gICAgdGhpcy5kZWNsYXJlZFZhcmlhYmxlcy5wdXNoKGRlY2xhcmVkVmFyaWFibGUpO1xuXG4gICAgY29uc3QgZmlsZVBhdGggPSB0aGlzLmdldEZpbGVQYXRoKCksXG4gICAgICAgICAgZGVjbGFyZWRWYXJpYWJsZVN0cmluZyA9IGRlY2xhcmVkVmFyaWFibGUuZ2V0U3RyaW5nKCk7XG5cbiAgICB0aGlzLnRyYWNlKGBBZGRlZCB0aGUgJyR7ZGVjbGFyZWRWYXJpYWJsZVN0cmluZ30nIGRlY2xhcmVkIHZhcmlhYmxlIHRvIHRoZSAnJHtmaWxlUGF0aH0nIGZpbGUgY29udGV4dC5gKVxuICB9XG5cbiAgYWRkRGVjbGFyZWRNZXRhdmFyaWFibGUoZGVjbGFyZWRNZXRhdmFyaWFibGUpIHtcbiAgICB0aGlzLmRlY2xhcmVkTWV0YXZhcmlhYmxlcy5wdXNoKGRlY2xhcmVkTWV0YXZhcmlhYmxlKTtcblxuICAgIGNvbnN0IGZpbGVQYXRoID0gdGhpcy5nZXRGaWxlUGF0aCgpLFxuICAgICAgICAgIGRlY2xhcmVkTWV0YXZhcmlhYmxlU3RyaW5nID0gZGVjbGFyZWRNZXRhdmFyaWFibGUuZ2V0U3RyaW5nKCk7XG5cbiAgICB0aGlzLnRyYWNlKGBBZGRlZCB0aGUgJyR7ZGVjbGFyZWRNZXRhdmFyaWFibGVTdHJpbmd9JyBkZWNsYXJlZCBtZXRhdmFyaWFibGUgdG8gdGhlICcke2ZpbGVQYXRofScgZmlsZSBjb250ZXh0LmApXG4gIH1cblxuICBmaW5kTWV0YXZhcmlhYmxlKG1ldGF2YXJpYWJsZSwgY29udGV4dCkge1xuICAgIGNvbnN0IGRlY2xhcmVkTWV0YXZhcmlhYmxlcyA9IHRoaXMuZ2V0RGVjbGFyZWRNZXRhdmFyaWFibGVzKCk7XG5cbiAgICBtZXRhdmFyaWFibGUgPSBkZWNsYXJlZE1ldGF2YXJpYWJsZXMuZmluZCgoZGVjbGFyZWRNZXRhdmFyaWFibGUpID0+IHtcbiAgICAgIGNvbnN0IG1ldGF2YXJpYWJsZVVuaWZpZXMgPSBkZWNsYXJlZE1ldGF2YXJpYWJsZS51bmlmeU1ldGF2YXJpYWJsZShtZXRhdmFyaWFibGUsIGNvbnRleHQpO1xuXG4gICAgICBpZiAobWV0YXZhcmlhYmxlVW5pZmllcykge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9KSB8fCBudWxsO1xuXG4gICAgcmV0dXJuIG1ldGF2YXJpYWJsZTtcbiAgfVxuXG4gIGZpbmRSdWxlQnlSZWZlcmVuY2UocmVmZXJlbmNlKSB7XG4gICAgY29uc3QgcnVsZXMgPSB0aGlzLmdldFJ1bGVzKCksXG4gICAgICAgICAgbWV0YXZhcmlhYmxlTm9kZSA9IHJlZmVyZW5jZS5nZXRNZXRhdmFyaWFibGVOb2RlKCksXG4gICAgICAgICAgcnVsZSA9IHJ1bGVzLmZpbmQoKHJ1bGUpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG1ldGF2YXJpYWJsZU5vZGVNYXRjaGVzID0gcnVsZS5tYXRjaE1ldGF2YXJpYWJsZU5vZGUobWV0YXZhcmlhYmxlTm9kZSk7XG5cbiAgICAgICAgICAgIGlmIChtZXRhdmFyaWFibGVOb2RlTWF0Y2hlcykge1xuICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KSB8fCBudWxsO1xuXG4gICAgcmV0dXJuIHJ1bGU7XG4gIH1cblxuICBmaW5kQXhpb21CeVJlZmVyZW5jZShyZWZlcmVuY2UpIHtcbiAgICBjb25zdCBheGlvbXMgPSB0aGlzLmdldEF4aW9tcygpLFxuICAgICAgICAgIG1ldGF2YXJpYWJsZU5vZGUgPSByZWZlcmVuY2UuZ2V0TWV0YXZhcmlhYmxlTm9kZSgpLFxuICAgICAgICAgIGF4aW9tID0gYXhpb21zLmZpbmQoKGF4aW9tKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBtZXRhdmFyaWFibGVOb2RlTWF0Y2hlcyA9IGF4aW9tLm1hdGNoTWV0YXZhcmlhYmxlTm9kZShtZXRhdmFyaWFibGVOb2RlKTtcblxuICAgICAgICAgICAgaWYgKG1ldGF2YXJpYWJsZU5vZGVNYXRjaGVzKSB7XG4gICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pIHx8IG51bGw7XG5cbiAgICByZXR1cm4gYXhpb207XG4gIH1cblxuICBmaW5kTGVtbWFCeVJlZmVyZW5jZShyZWZlcmVuY2UpIHtcbiAgICBjb25zdCBsZW1tYXMgPSB0aGlzLmdldExlbW1hcygpLFxuICAgICAgICAgIG1ldGF2YXJpYWJsZU5vZGUgPSByZWZlcmVuY2UuZ2V0TWV0YXZhcmlhYmxlTm9kZSgpLFxuICAgICAgICAgIGxlbW1hID0gbGVtbWFzLmZpbmQoKGxlbW1hKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBtZXRhdmFyaWFibGVOb2RlTWF0Y2hlcyA9IGxlbW1hLm1hdGNoTWV0YXZhcmlhYmxlTm9kZShtZXRhdmFyaWFibGVOb2RlKTtcblxuICAgICAgICAgICAgaWYgKG1ldGF2YXJpYWJsZU5vZGVNYXRjaGVzKSB7XG4gICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pIHx8IG51bGw7XG5cbiAgICByZXR1cm4gbGVtbWE7XG4gIH1cblxuICBmaW5kVGhlb3JlbUJ5UmVmZXJlbmNlKHJlZmVyZW5jZSkge1xuICAgIGNvbnN0IHRoZW9yZW1zID0gdGhpcy5nZXRUaGVvcmVtcygpLFxuICAgICAgICAgIG1ldGF2YXJpYWJsZU5vZGUgPSByZWZlcmVuY2UuZ2V0TWV0YXZhcmlhYmxlTm9kZSgpLFxuICAgICAgICAgIHRoZW9yZW0gPSB0aGVvcmVtcy5maW5kKCh0aGVvcmVtKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBtZXRhdmFyaWFibGVOb2RlTWF0Y2hlcyA9IHRoZW9yZW0ubWF0Y2hNZXRhdmFyaWFibGVOb2RlKG1ldGF2YXJpYWJsZU5vZGUpO1xuXG4gICAgICAgICAgICBpZiAobWV0YXZhcmlhYmxlTm9kZU1hdGNoZXMpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSkgfHwgbnVsbDtcblxuICAgIHJldHVybiB0aGVvcmVtO1xuICB9XG5cbiAgZmluZENvbmplY3R1cmVCeVJlZmVyZW5jZShyZWZlcmVuY2UpIHtcbiAgICBjb25zdCBjb25qZWN0dXJlcyA9IHRoaXMuZ2V0Q29uamVjdHVyZXMoKSxcbiAgICAgICAgICBtZXRhdmFyaWFibGVOb2RlID0gcmVmZXJlbmNlLmdldE1ldGF2YXJpYWJsZU5vZGUoKSxcbiAgICAgICAgICBjb25qZWN0dXJlID0gY29uamVjdHVyZXMuZmluZCgoY29uamVjdHVyZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgbWV0YXZhcmlhYmxlTm9kZU1hdGNoZXMgPSBjb25qZWN0dXJlLm1hdGNoTWV0YXZhcmlhYmxlTm9kZShtZXRhdmFyaWFibGVOb2RlKTtcblxuICAgICAgICAgICAgaWYgKG1ldGF2YXJpYWJsZU5vZGVNYXRjaGVzKSB7XG4gICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pIHx8IG51bGw7XG5cbiAgICByZXR1cm4gY29uamVjdHVyZTtcbiAgfVxuXG4gIGZpbmRDbGFpbUJ5UmVmZXJlbmNlKHJlZmVyZW5jZSkge1xuICAgIGNvbnN0IGNsYWltcyA9IHRoaXMuZ2V0Q2xhaW1zKCksXG4gICAgICAgICAgbWV0YXZhcmlhYmxlTm9kZSA9IHJlZmVyZW5jZS5nZXRNZXRhdmFyaWFibGVOb2RlKCksXG4gICAgICAgICAgY2xhaW0gPSBjbGFpbXMuZmluZCgoY2xhaW0pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG1ldGF2YXJpYWJsZU5vZGVNYXRjaGVzID0gY2xhaW0ubWF0Y2hNZXRhdmFyaWFibGVOb2RlKG1ldGF2YXJpYWJsZU5vZGUpO1xuXG4gICAgICAgICAgICBpZiAobWV0YXZhcmlhYmxlTm9kZU1hdGNoZXMpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSkgfHwgbnVsbDtcblxuICAgIHJldHVybiBjbGFpbTtcbiAgfVxuXG4gIGZpbmRUeXBlQnlUeXBlTmFtZSh0eXBlTmFtZSwgaW5jbHVkZVJlbGVhc2UgPSB0cnVlKSB7XG4gICAgY29uc3QgdHlwZXMgPSB0aGlzLmdldFR5cGVzKGluY2x1ZGVSZWxlYXNlKSxcbiAgICAgICAgICB0eXBlID0gZmluZFR5cGUodHlwZXMsICh0eXBlKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB0eXBlQ29tcGFyZXNUb1R5cGVOYW1lID0gdHlwZS5jb21wYXJlVHlwZU5hbWUodHlwZU5hbWUpO1xuXG4gICAgICAgICAgICBpZiAodHlwZUNvbXBhcmVzVG9UeXBlTmFtZSkge1xuICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcblxuICAgIHJldHVybiB0eXBlO1xuICB9XG5cbiAgZmluZFR5cGVCeU5vbWluYWxUeXBlTmFtZShub21pbmFsVHlwZU5hbWUsIGluY2x1ZGVSZWxlYXNlID0gdHJ1ZSkge1xuICAgIGNvbnN0IHR5cGVzID0gdGhpcy5nZXRUeXBlcyhpbmNsdWRlUmVsZWFzZSksXG4gICAgICAgICAgdHlwZSA9IGZpbmRUeXBlKHR5cGVzLCAodHlwZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgdHlwZUNvbXBhcmVzVG9Ob21pbmFsVHlwZU5hbWUgPSB0eXBlLmNvbXBhcmVOb21pbmFsVHlwZU5hbWUobm9taW5hbFR5cGVOYW1lKTtcblxuICAgICAgICAgICAgaWYgKHR5cGVDb21wYXJlc1RvTm9taW5hbFR5cGVOYW1lKSB7XG4gICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuXG4gICAgcmV0dXJuIHR5cGU7XG4gIH1cblxuICBmaW5kVHlwZUJ5UHJlZml4ZWRUeXBlTmFtZShwcmVmaXhlZFR5cGVOYW1lLCBpbmNsdWRlUmVsZWFzZSA9IHRydWUpIHtcbiAgICBjb25zdCB0eXBlcyA9IHRoaXMuZ2V0VHlwZXMoaW5jbHVkZVJlbGVhc2UpLFxuICAgICAgICAgIHR5cGUgPSBmaW5kVHlwZSh0eXBlcywgKHR5cGUpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHR5cGVDb21wYXJlc1RvUHJlZml4ZWRUeXBlTmFtZSA9IHR5cGUuY29tcGFyZVByZWZpeGVkVHlwZU5hbWUocHJlZml4ZWRUeXBlTmFtZSk7XG5cbiAgICAgICAgICAgIGlmICh0eXBlQ29tcGFyZXNUb1ByZWZpeGVkVHlwZU5hbWUpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG5cbiAgICByZXR1cm4gdHlwZTtcbiAgfVxuXG4gIGZpbmRUeXBlUHJlZml4QnlUeXBlUHJlZml4TmFtZSh0eXBlUHJlZml4TmFtZSkge1xuICAgIGNvbnN0IHR5cGVQcmVmaXhlcyA9IHRoaXMuZ2V0VHlwZVByZWZpeGVzKCksXG4gICAgICAgICAgdHlwZVByZWZpeCA9IHR5cGVQcmVmaXhlcy5maW5kKCh0eXBlUHJlZml4KSA9PiB7XG4gICAgICAgICAgICBjb25zdCB0eXBlUHJlZml4Q29tcGFyZXNUb1R5cGVQcmVmaXhOYW1lID0gdHlwZVByZWZpeC5jb21wYXJlVHlwZVByZWZpeE5hbWUodHlwZVByZWZpeE5hbWUpO1xuXG4gICAgICAgICAgICBpZiAodHlwZVByZWZpeENvbXBhcmVzVG9UeXBlUHJlZml4TmFtZSkge1xuICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KSB8fCBudWxsO1xuXG4gICAgcmV0dXJuIHR5cGVQcmVmaXg7XG4gIH1cblxuICBmaW5kRGVjbGFyZWRWYXJpYWJsZUJ5VmFyaWFibGVJZGVudGlmaWVyKFZhcmlhYmxlSWRlbnRpdGlmZXIpIHtcbiAgICBjb25zdCBkZWNsYXJlZFZhcmlhYmxlcyA9IHRoaXMuZ2V0RGVjbGFyZWRWYXJpYWJsZXMoKSxcbiAgICAgICAgICBkZWNsYXJlZFZhcmlhYmxlID0gZGVjbGFyZWRWYXJpYWJsZXMuZmluZCgoZGVjbGFyZWRWYXJpYWJsZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgZGVjbGFyZWRWYXJpYWJsZUNvbXBhcmVzVG9WYXJpYWJsZUlkZW50aXRpZmVyID0gZGVjbGFyZWRWYXJpYWJsZS5jb21wYXJlVmFyaWFibGVJZGVudGlmaWVyKFZhcmlhYmxlSWRlbnRpdGlmZXIpO1xuXG4gICAgICAgICAgICBpZiAoZGVjbGFyZWRWYXJpYWJsZUNvbXBhcmVzVG9WYXJpYWJsZUlkZW50aXRpZmVyKSB7XG4gICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pIHx8IG51bGw7XG5cbiAgICByZXR1cm4gZGVjbGFyZWRWYXJpYWJsZTtcbiAgfVxuXG4gIGZpbmREZWNsYXJlZFZhcmlhYmxlc0J5VmFyaWFibGVJZGVudGlmaWVyKHZhcmlhYmxlSWRlbnRpZmllcikge1xuICAgIGxldCBkZWNsYXJlZFZhcmlhYmxlcztcblxuICAgIGRlY2xhcmVkVmFyaWFibGVzID0gdGhpcy5nZXREZWNsYXJlZFZhcmlhYmxlcygpO1xuXG4gICAgZGVjbGFyZWRWYXJpYWJsZXMgPSBkZWNsYXJlZFZhcmlhYmxlcy5maWx0ZXIoKGRlY2xhcmVkVmFyaWFibGUpID0+IHtcbiAgICAgIGNvbnN0IHZhcmlhYmxlQ29tcGFyZXNUb1ZhcmlhYmxlSWRlbnRpZmllciA9IGRlY2xhcmVkVmFyaWFibGUuY29tcGFyZVZhcmlhYmxlSWRlbnRpZmllcih2YXJpYWJsZUlkZW50aWZpZXIpO1xuXG4gICAgICBpZiAodmFyaWFibGVDb21wYXJlc1RvVmFyaWFibGVJZGVudGlmaWVyKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGRlY2xhcmVkVmFyaWFibGVzO1xuICB9XG5cbiAgZmluZERlY2xhcmVkTWV0YXZhcmlhYmxlQnlNZXRhdmFyaWFibGVOYW1lKG1ldGF2YXJpYWJsZU5hbWUpIHtcbiAgICBjb25zdCBkZWNsYXJlZE1ldGF2YXJpYWJsZXMgPSB0aGlzLmdldERlY2xhcmVkTWV0YXZhcmlhYmxlcygpLFxuICAgICAgICAgIGRlY2xhcmVkTWV0YXZhcmlhYmxlID0gZGVjbGFyZWRNZXRhdmFyaWFibGVzLmZpbmQoKGRlY2xhcmVkTWV0YXZhcmlhYmxlKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBkZWNsYXJlZE1ldGF2YXJpYWJsZUNvbXBhcmVzVG9NZXRhdmFyaWFibGVOYW1lID0gZGVjbGFyZWRNZXRhdmFyaWFibGUuY29tcGFyZU1ldGF2YXJpYWJsZU5hbWUobWV0YXZhcmlhYmxlTmFtZSk7XG5cbiAgICAgICAgICAgIGlmIChkZWNsYXJlZE1ldGF2YXJpYWJsZUNvbXBhcmVzVG9NZXRhdmFyaWFibGVOYW1lKSB7XG4gICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pIHx8IG51bGw7XG5cbiAgICByZXR1cm4gZGVjbGFyZWRNZXRhdmFyaWFibGU7XG4gIH1cblxuICBmaW5kUHJvY2VkdXJlQnlQcm9jZWR1cmVOYW1lKHByb2NlZHVyZU5hbWUpIHtcbiAgICBjb25zdCBwcm9jZWR1cmVzID0gdGhpcy5nZXRQcm9jZWR1cmVzKCksXG4gICAgICAgICAgcHJvY2VkdXJlID0gcHJvY2VkdXJlcy5maW5kKChwcm9jZWR1cmUpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHByb2NlZHVyZUNvbXBhcmVzVG9Qcm9jZWR1cmVOYW1lID0gcHJvY2VkdXJlLmNvbXBhcmVQcm9jZWR1cmVOYW1lKHByb2NlZHVyZU5hbWUpO1xuXG4gICAgICAgICAgICBpZiAocHJvY2VkdXJlQ29tcGFyZXNUb1Byb2NlZHVyZU5hbWUpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSkgfHwgbnVsbDtcblxuICAgIHJldHVybiBwcm9jZWR1cmU7XG4gIH1cblxuICBmaW5kTWV0YVR5cGVCeU1ldGFUeXBlTmFtZShtZXRhVHlwZU5hbWUpIHsgcmV0dXJuIGZpbmRNZXRhVHlwZUJ5TWV0YVR5cGVOYW1lKG1ldGFUeXBlTmFtZSk7IH1cblxuICBpc0xhYmVsUHJlc2VudEJ5TGFiZWxOb2RlKGxhYmVsTm9kZSkge1xuICAgIGNvbnN0IGxhYmVscyA9IHRoaXMuZ2V0TGFiZWxzKCksXG4gICAgICBsYWJlbFByZXNlbnQgPSBsYWJlbHMuc29tZSgobGFiZWwpID0+IHtcbiAgICAgICAgY29uc3QgbGFiZWxOb2RlTWF0Y2hlcyA9IGxhYmVsLm1hdGNoTGFiZWxOb2RlKGxhYmVsTm9kZSk7XG5cbiAgICAgICAgaWYgKGxhYmVsTm9kZU1hdGNoZXMpIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICByZXR1cm4gbGFiZWxQcmVzZW50O1xuICB9XG5cbiAgaXNUeXBlUHJlc2VudEJ5VHlwZU5hbWUodHlwZU5hbWUsIGluY2x1ZGVSZWxlYXNlID0gdHJ1ZSkge1xuICAgIGNvbnN0IHR5cGUgPSB0aGlzLmZpbmRUeXBlQnlUeXBlTmFtZSh0eXBlTmFtZSwgaW5jbHVkZVJlbGVhc2UpLFxuICAgICAgICAgIHR5cGVQcmVzZW50ID0gKHR5cGUgIT09IG51bGwpO1xuXG4gICAgcmV0dXJuIHR5cGVQcmVzZW50O1xuICB9XG5cbiAgaXNUeXBlUHJlc2VudEJ5Tm9taW5hbFR5cGVOYW1lKG5vbWluYWxUeXBlTmFtZSwgaW5jbHVkZVJlbGVhc2UgPSB0cnVlKSB7XG4gICAgY29uc3QgdHlwZSA9IHRoaXMuZmluZFR5cGVCeU5vbWluYWxUeXBlTmFtZShub21pbmFsVHlwZU5hbWUsIGluY2x1ZGVSZWxlYXNlKSxcbiAgICAgICAgICB0eXBlUHJlc2VudCA9ICh0eXBlICE9PSBudWxsKTtcblxuICAgIHJldHVybiB0eXBlUHJlc2VudDtcbiAgfVxuXG4gIGlzVHlwZVByZXNlbnRCeVByZWZpeGVkVHlwZU5hbWUocHJlZml4ZWRUeXBlTmFtZSwgaW5jbHVkZVJlbGVhc2UgPSB0cnVlKSB7XG4gICAgY29uc3QgdHlwZSA9IHRoaXMuZmluZFR5cGVCeVByZWZpeGVkVHlwZU5hbWUocHJlZml4ZWRUeXBlTmFtZSwgaW5jbHVkZVJlbGVhc2UpLFxuICAgICAgICAgIHR5cGVQcmVzZW50ID0gKHR5cGUgIT09IG51bGwpO1xuXG4gICAgcmV0dXJuIHR5cGVQcmVzZW50O1xuICB9XG5cbiAgaXNUeXBlUHJlZml4UHJlc2VudEJ5VHlwZVByZWZpeE5hbWUodHlwZVByZWZpeE5hbWUpIHtcbiAgICBjb25zdCB0eXBlUHJlZml4ID0gdGhpcy5maW5kVHlwZVByZWZpeEJ5VHlwZVByZWZpeE5hbWUodHlwZVByZWZpeE5hbWUpLFxuICAgICAgICAgIHR5cGVQcmVmaXhQcmVzZW50ID0gKHR5cGVQcmVmaXggIT09IG51bGwpO1xuXG4gICAgcmV0dXJuIHR5cGVQcmVmaXhQcmVzZW50O1xuICB9XG5cbiAgaXNEZWNsYXJlZFZhcmlhYmxlUHJlc2VudEJ5VmFyaWFibGVJZGVudGlmaWVyKHZhcmlhYmxlSWRlbnRpZmllcikge1xuICAgIGNvbnN0IGRlY2xhcmVkVmFyaWFibGUgPSB0aGlzLmZpbmREZWNsYXJlZFZhcmlhYmxlQnlWYXJpYWJsZUlkZW50aWZpZXIodmFyaWFibGVJZGVudGlmaWVyKSxcbiAgICAgICAgICBkZWNsYXJlZFZhcmlhYmxlUHJlc2VudCA9IChkZWNsYXJlZFZhcmlhYmxlICE9PSBudWxsKTtcblxuICAgIHJldHVybiBkZWNsYXJlZFZhcmlhYmxlUHJlc2VudDtcbiAgfVxuXG4gIGlzRGVjbGFyZWRNZXRhdmFyaWFibGVQcmVzZW50QnlNZXRhdmFyaWFibGVOYW1lKG1ldGF2YXJpYWJsZU5hbWUpIHtcbiAgICBjb25zdCBkZWNsYXJlZE1ldGF2YXJpYWJsZSA9IHRoaXMuZmluZERlY2xhcmVkTWV0YXZhcmlhYmxlQnlNZXRhdmFyaWFibGVOYW1lKG1ldGF2YXJpYWJsZU5hbWUpLFxuICAgICAgICAgIGRlY2xhcmVkTWV0YXZhcmlhYmxlUHJlc2VudCA9IChkZWNsYXJlZE1ldGF2YXJpYWJsZSAhPT0gbnVsbCk7XG5cbiAgICByZXR1cm4gZGVjbGFyZWRNZXRhdmFyaWFibGVQcmVzZW50O1xuICB9XG5cbiAgaXNQcm9jZWR1cmVQcmVzZW50QnlQcm9jZWR1cmVOYW1lKHByb2NlZHVyZU5hbWUpIHtcbiAgICBjb25zdCBwcm9jZWR1cmUgPSB0aGlzLmZpbmRQcm9jZWR1cmVCeVByb2NlZHVyZU5hbWUocHJvY2VkdXJlTmFtZSksXG4gICAgICAgICAgcHJvY2VkdXJlUHJlc2VudCA9IChwcm9jZWR1cmUgIT09IG51bGwpO1xuXG4gICAgcmV0dXJuIHByb2NlZHVyZVByZXNlbnQ7XG4gIH1cblxuICBpc01ldGFMZXZlbCgpIHtcbiAgICBjb25zdCBtZXRhTEV2ZWwgPSBmYWxzZTtcblxuICAgIHJldHVybiBtZXRhTEV2ZWw7XG4gIH1cblxuICBjbGVhcigpIHtcbiAgICB0aGlzLnR5cGVzID0gW107XG4gICAgdGhpcy5ydWxlcyA9IFtdO1xuICAgIHRoaXMuYXhpb21zID0gW107XG4gICAgdGhpcy5sZW1tYXMgPSBbXTtcbiAgICB0aGlzLnNjaGVtYXMgPSBbXTtcbiAgICB0aGlzLnRoZW9yZW1zID0gW107XG4gICAgdGhpcy5nZW5lcmF0b3JzID0gW107XG4gICAgdGhpcy5jb25qZWN0dXJlcyA9IFtdO1xuICAgIHRoaXMuY29tYmluYXRvcnMgPSBbXTtcbiAgICB0aGlzLnR5cGVQcmVmaXhlcyA9IFtdO1xuICAgIHRoaXMuY29uc3RydWN0b3JzID0gW107XG4gICAgdGhpcy5kZWNsYXJlZFZhcmlhYmxlcyA9IFtdO1xuICAgIHRoaXMuZGVjbGFyZWRNZXRhdmFyaWFibGVzID0gW107XG4gIH1cblxuICBjb21wbGV0ZSgpIHtcbiAgICAvLy9cbiAgfVxuXG4gIHZlcmlmeUZpbGUoZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IG5vZGUgPSB0aGlzLmdldE5vZGUoKSxcbiAgICAgICAgICBjb250ZXh0ID0gdGhpcywgLy8vXG4gICAgICAgICAgZmlsZU5vZGUgPSBub2RlOyAgLy8vXG5cbiAgICByZXR1cm4gdmVyaWZ5RmlsZShmaWxlTm9kZSwgY29udGV4dCwgKCBfICwgYmFjaykgPT4ge1xuICAgICAgcmV0dXJuIGZvcndhcmQoYmFjayk7XG4gICAgfSwgYmFjayk7XG4gIH1cblxuICBpbml0aWFsaXNlKCkge1xuICAgIGNvbnN0IGpzb24gPSB0aGlzLmdldEpTT04oKTtcblxuICAgIGlmIChqc29uID09PSBudWxsKSB7XG4gICAgICBzdXBlci5pbml0aWFsaXNlKCk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBmaWxlQ29udGV4dCA9IHRoaXM7IC8vL1xuXG4gICAgdGhpcy50eXBlcyA9IFtdO1xuXG4gICAgdHlwZXNGcm9tSlNPTihqc29uLCB0aGlzLnR5cGVzLCBmaWxlQ29udGV4dCk7XG5cbiAgICB0aGlzLmxlbW1hcyA9IFtdO1xuXG4gICAgdGhpcy5kZWNsYXJlZE1ldGF2YXJpYWJsZXMgPSBkZWNsYXJlZE1ldGF2YXJpYWJsZXNGcm9tSlNPTihqc29uLCBmaWxlQ29udGV4dCk7XG4gICAgdGhpcy5kZWNsYXJlZFZhcmlhYmxlcyA9IGRlY2xhcmVkVmFyaWFibGVzRnJvbUpTT04oanNvbiwgZmlsZUNvbnRleHQpO1xuICAgIHRoaXMudHlwZVByZWZpeGVzID0gdHlwZVByZWZpeGVzRnJvbUpTT04oanNvbiwgZmlsZUNvbnRleHQpO1xuICAgIHRoaXMuZ2VuZXJhdG9ycyA9IGdlbmVyYXRvcnNGcm9tSlNPTihqc29uLCBmaWxlQ29udGV4dCk7XG4gICAgdGhpcy5jb21iaW5hdG9ycyA9IGNvbWJpbmF0b3JzRnJvbUpTT04oanNvbiwgZmlsZUNvbnRleHQpO1xuICAgIHRoaXMuY29uc3RydWN0b3JzID0gY29uc3RydWN0b3JzRnJvbUpTT04oanNvbiwgZmlsZUNvbnRleHQpO1xuXG4gICAgdGhpcy5ydWxlcyA9IHJ1bGVzRnJvbUpTT04oanNvbiwgZmlsZUNvbnRleHQpO1xuICAgIHRoaXMuYXhpb21zID0gYXhpb21zRnJvbUpTT04oanNvbiwgZmlsZUNvbnRleHQpO1xuICAgIHRoaXMuc2NoZW1hcyA9IHNjaGVtYXNGcm9tSlNPTihqc29uLCBmaWxlQ29udGV4dCk7XG4gICAgdGhpcy50aGVvcmVtcyA9IHRoZW9yZW1zRnJvbUpTT04oanNvbiwgZmlsZUNvbnRleHQpO1xuICAgIHRoaXMuY29uamVjdHVyZXMgPSBjb25qZWN0dXJlc0Zyb21KU09OKGpzb24sIGZpbGVDb250ZXh0KTtcbiAgfVxuXG4gIHRvSlNPTigpIHtcbiAgICBjb25zdCB0eXBlc0pTT04gPSB0eXBlc1RvVHlwZXNKU09OKHRoaXMudHlwZXMpLFxuICAgICAgICAgIHJ1bGVzSlNPTiA9IHJ1bGVzVG9SdWxlc0pTT04odGhpcy5ydWxlcyksXG4gICAgICAgICAgYXhpb21zSlNPTiA9IGF4aW9tc1RvQXhpb21zSlNPTih0aGlzLmF4aW9tcyksXG4gICAgICAgICAgc2NoZW1hc0pTT04gPSBzY2hlbWFzVG9TY2hlbWFzSlNPTih0aGlzLnNjaGVtYXMpLFxuICAgICAgICAgIHRoZW9yZW1zSlNPTiA9IHRoZW9yZW1zVG9UaGVvcmVtc0pTT04odGhpcy50aGVvcmVtcyksXG4gICAgICAgICAgZ2VuZXJhdG9yc0pTT04gPSBnZW5lcmF0b3JzVG9HZW5lcmF0b3JzSlNPTih0aGlzLmdlbmVyYXRvcnMpLFxuICAgICAgICAgIGNvbmplY3R1cmVzSlNPTiA9IGNvbmplY3R1cmVzVG9Db25qZWN0dXJlc0pTT04odGhpcy5jb25qZWN0dXJlcyksXG4gICAgICAgICAgY29tYmluYXRvcnNKU09OID0gY29tYmluYXRvcnNUb0NvbWJpbmF0b3JzSlNPTih0aGlzLmNvbWJpbmF0b3JzKSxcbiAgICAgICAgICB0eXBlUHJlZml4ZXNKU09OID0gdHlwZVByZWZpeGVzVG9UeXBlUHJlZml4ZXNKU09OKHRoaXMudHlwZVByZWZpeGVzKSxcbiAgICAgICAgICBjb25zdHJ1Y3RvcnNKU09OID0gY29uc3RydWN0b3JzVG9Db25zdHJ1Y3RvcnNKU09OKHRoaXMuY29uc3RydWN0b3JzKSxcbiAgICAgICAgICBkZWNsYXJlZFZhcmlhYmxlc0pTT04gPSBkZWNsYXJlZFZhcmlhYmxlc1RvRGVjbGFyZWRWYXJpYWJsZXNKU09OKHRoaXMuZGVjbGFyZWRWYXJpYWJsZXMpLFxuICAgICAgICAgIGRlY2xhcmVkTWV0YXZhcmlhYmxlc0pTT04gPSBkZWNsYXJlZE1ldGF2YXJpYWJsZXNUb0RlY2xhcmVkTWV0YXZhcmlhYmxlc0pTT04odGhpcy5kZWNsYXJlZE1ldGF2YXJpYWJsZXMpLFxuICAgICAgICAgIGZpbGVDb250ZW50ID0gdGhpcy5nZXRGaWxlQ29udGVudCgpLFxuICAgICAgICAgIGZpbGVQYXRoID0gdGhpcy5nZXRGaWxlUGF0aCgpLFxuICAgICAgICAgIHR5cGVzID0gdHlwZXNKU09OLCAgLy8vXG4gICAgICAgICAgcnVsZXMgPSBydWxlc0pTT04sICAvLy9cbiAgICAgICAgICBheGlvbXMgPSBheGlvbXNKU09OLCAgLy8vXG4gICAgICAgICAgc2NoZW1hcyA9IHNjaGVtYXNKU09OLCAgLy8vXG4gICAgICAgICAgdGhlb3JlbXMgPSB0aGVvcmVtc0pTT04sICAvLy9cbiAgICAgICAgICBnZW5lcmF0b3JzID0gZ2VuZXJhdG9yc0pTT04sICAvLy9cbiAgICAgICAgICBjb25qZWN0dXJlcyA9IGNvbmplY3R1cmVzSlNPTiwgIC8vL1xuICAgICAgICAgIGNvbWJpbmF0b3JzID0gY29tYmluYXRvcnNKU09OLCAgLy8vXG4gICAgICAgICAgdHlwZVByZWZpeGVzID0gdHlwZVByZWZpeGVzSlNPTiwgIC8vL1xuICAgICAgICAgIGNvbnN0cnVjdG9ycyA9IGNvbnN0cnVjdG9yc0pTT04sICAvLy9cbiAgICAgICAgICBkZWNsYXJlZFZhcmlhYmxlcyA9IGRlY2xhcmVkVmFyaWFibGVzSlNPTiwgIC8vL1xuICAgICAgICAgIGRlY2xhcmVkTWV0YXZhcmlhYmxlcyA9IGRlY2xhcmVkTWV0YXZhcmlhYmxlc0pTT04sICAvLy9cbiAgICAgICAgICBqc29uID0ge1xuICAgICAgICAgICAgZmlsZUNvbnRlbnQsXG4gICAgICAgICAgICBmaWxlUGF0aCxcbiAgICAgICAgICAgIHR5cGVzLFxuICAgICAgICAgICAgcnVsZXMsXG4gICAgICAgICAgICBheGlvbXMsXG4gICAgICAgICAgICBzY2hlbWFzLFxuICAgICAgICAgICAgdGhlb3JlbXMsXG4gICAgICAgICAgICBnZW5lcmF0b3JzLFxuICAgICAgICAgICAgY29uamVjdHVyZXMsXG4gICAgICAgICAgICBjb21iaW5hdG9ycyxcbiAgICAgICAgICAgIHR5cGVQcmVmaXhlcyxcbiAgICAgICAgICAgIGNvbnN0cnVjdG9ycyxcbiAgICAgICAgICAgIGRlY2xhcmVkVmFyaWFibGVzLFxuICAgICAgICAgICAgZGVjbGFyZWRNZXRhdmFyaWFibGVzXG4gICAgICAgICAgfTtcblxuICAgIHJldHVybiBqc29uO1xuICB9XG5cbiAgc3RhdGljIGZyb21GaWxlKGZpbGUsIGNvbnRleHQpIHtcbiAgICBjb25zdCByZWxlYXNlQ29udGV4dCA9IGNvbnRleHQsIC8vL1xuICAgICAgICAgIGNvbWJpbmVkQ3VzdG9tR3JhbW1hciA9IHJlbGVhc2VDb250ZXh0LmdldENvbWJpbmVkQ3VzdG9tR3JhbW1hcigpLFxuICAgICAgICAgIG5vbWluYWxMZXhlciA9IG5vbWluYWxMZXhlckZyb21Db21iaW5lZEN1c3RvbUdyYW1tYXIoTm9taW5hbExleGVyLCBjb21iaW5lZEN1c3RvbUdyYW1tYXIpLFxuICAgICAgICAgIG5vbWluYWxQYXJzZXIgPSBub21pbmFsUGFyc2VyRnJvbUNvbWJpbmVkQ3VzdG9tR3JhbW1hcihOb21pbmFsUGFyc2VyLCBjb21iaW5lZEN1c3RvbUdyYW1tYXIpLFxuICAgICAgICAgIGxleGVyID0gbm9taW5hbExleGVyLCAvLy9cbiAgICAgICAgICBwYXJzZXIgPSBub21pbmFsUGFyc2VyLCAvLy9cbiAgICAgICAgICB0eXBlcyA9IFtdLFxuICAgICAgICAgIHJ1bGVzID0gW10sXG4gICAgICAgICAgYXhpb21zID0gW10sXG4gICAgICAgICAgbGVtbWFzID0gW10sXG4gICAgICAgICAgc2NoZW1hcyA9IFtdLFxuICAgICAgICAgIHRoZW9yZW1zID0gW10sXG4gICAgICAgICAgZ2VuZXJhdG9ycyA9IFtdLFxuICAgICAgICAgIGNvbmplY3R1cmVzID0gW10sXG4gICAgICAgICAgY29tYmluYXRvcnMgPSBbXSxcbiAgICAgICAgICB0eXBlUHJlZml4ZXMgPSBbXSxcbiAgICAgICAgICBjb25zdHJ1Y3RvcnMgPSBbXSxcbiAgICAgICAgICBkZWNsYXJlZFZhcmlhYmxlcyA9IFtdLFxuICAgICAgICAgIGRlY2xhcmVkTWV0YXZhcmlhYmxlcyA9IFtdLFxuICAgICAgICAgIG5vbWluYWxGaWxlQ29udGV4dCA9IEZpbGVDb250ZXh0LmZyb21GaWxlKE5vbWluYWxGaWxlQ29udGV4dCwgZmlsZSwgbGV4ZXIsIHBhcnNlciwgdHlwZXMsIHJ1bGVzLCBheGlvbXMsIGxlbW1hcywgc2NoZW1hcywgdGhlb3JlbXMsIGdlbmVyYXRvcnMsIGNvbmplY3R1cmVzLCBjb21iaW5hdG9ycywgdHlwZVByZWZpeGVzLCBjb25zdHJ1Y3RvcnMsIGRlY2xhcmVkVmFyaWFibGVzLCBkZWNsYXJlZE1ldGF2YXJpYWJsZXMsIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIG5vbWluYWxGaWxlQ29udGV4dDtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gICAgY29uc3QgcmVsZWFzZUNvbnRleHQgPSBjb250ZXh0LCAvLy9cbiAgICAgICAgICBjb21iaW5lZEN1c3RvbUdyYW1tYXIgPSByZWxlYXNlQ29udGV4dC5nZXRDb21iaW5lZEN1c3RvbUdyYW1tYXIoKSxcbiAgICAgICAgICBub21pbmFsTGV4ZXIgPSBub21pbmFsTGV4ZXJGcm9tQ29tYmluZWRDdXN0b21HcmFtbWFyKE5vbWluYWxMZXhlciwgY29tYmluZWRDdXN0b21HcmFtbWFyKSxcbiAgICAgICAgICBub21pbmFsUGFyc2VyID0gbm9taW5hbFBhcnNlckZyb21Db21iaW5lZEN1c3RvbUdyYW1tYXIoTm9taW5hbFBhcnNlciwgY29tYmluZWRDdXN0b21HcmFtbWFyKSxcbiAgICAgICAgICBsZXhlciA9IG5vbWluYWxMZXhlciwgLy8vXG4gICAgICAgICAgcGFyc2VyID0gbm9taW5hbFBhcnNlciwgLy8vXG4gICAgICAgICAgdHlwZXMgPSBudWxsLFxuICAgICAgICAgIHJ1bGVzID0gbnVsbCxcbiAgICAgICAgICBheGlvbXMgPSBudWxsLFxuICAgICAgICAgIGxlbW1hcyA9IG51bGwsXG4gICAgICAgICAgc2NoZW1hcyA9IG51bGwsXG4gICAgICAgICAgdGhlb3JlbXMgPSBudWxsLFxuICAgICAgICAgIGdlbmVyYXRvcnMgPSBudWxsLFxuICAgICAgICAgIGNvbmplY3R1cmVzID0gbnVsbCxcbiAgICAgICAgICBjb21iaW5hdG9ycyA9IG51bGwsXG4gICAgICAgICAgdHlwZVByZWZpeGVzID0gbnVsbCxcbiAgICAgICAgICBjb25zdHJ1Y3RvcnMgPSBudWxsLFxuICAgICAgICAgIGRlY2xhcmVkVmFyaWFibGVzID0gbnVsbCxcbiAgICAgICAgICBkZWNsYXJlZE1ldGF2YXJpYWJsZXMgPSBudWxsLFxuICAgICAgICAgIG5vbWluYWxGaWxlQ29udGV4dCA9IEZpbGVDb250ZXh0LmZyb21KU09OKE5vbWluYWxGaWxlQ29udGV4dCwganNvbiwgbGV4ZXIsIHBhcnNlciwgdHlwZXMsIHJ1bGVzLCBheGlvbXMsIGxlbW1hcywgc2NoZW1hcywgdGhlb3JlbXMsIGdlbmVyYXRvcnMsIGNvbmplY3R1cmVzLCBjb21iaW5hdG9ycywgdHlwZVByZWZpeGVzLCBjb25zdHJ1Y3RvcnMsIGRlY2xhcmVkVmFyaWFibGVzLCBkZWNsYXJlZE1ldGF2YXJpYWJsZXMsIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIG5vbWluYWxGaWxlQ29udGV4dDtcbiAgfVxufVxuIl0sIm5hbWVzIjpbIk5vbWluYWxGaWxlQ29udGV4dCIsInB1c2giLCJhcnJheVV0aWxpdGllcyIsIm5vbWluYWxMZXhlckZyb21Db21iaW5lZEN1c3RvbUdyYW1tYXIiLCJub21pbmFsUGFyc2VyRnJvbUNvbWJpbmVkQ3VzdG9tR3JhbW1hciIsIm5vbWluYWxVdGlsaXRpZXMiLCJGaWxlQ29udGV4dCIsImNvbnRleHQiLCJmaWxlQ29udGVudCIsImZpbGVQYXRoIiwidG9rZW5zIiwibm9kZSIsImpzb24iLCJsZXhlciIsInBhcnNlciIsInR5cGVzIiwicnVsZXMiLCJheGlvbXMiLCJsZW1tYXMiLCJzY2hlbWFzIiwidGhlb3JlbXMiLCJnZW5lcmF0b3JzIiwiY29uamVjdHVyZXMiLCJjb21iaW5hdG9ycyIsInR5cGVQcmVmaXhlcyIsImNvbnN0cnVjdG9ycyIsImRlY2xhcmVkVmFyaWFibGVzIiwiZGVjbGFyZWRNZXRhdmFyaWFibGVzIiwiZ2V0TGV4ZXIiLCJnZXRQYXJzZXIiLCJnZXRMYWJlbHMiLCJpbmNsdWRlUmVsZWFzZSIsImxhYmVscyIsInJlbGVhc2VDb250ZXh0TGFiZWxzIiwiZm9yRWFjaCIsInJ1bGUiLCJydWxlTGFiZWxzIiwiYXhpb20iLCJheGlvbUxhYmVscyIsImxlbW1hIiwibGVtbWFMYWJlbHMiLCJ0aGVvcmVtIiwidGhlb3JlbUxhYmVscyIsImNvbmplY3R1cmUiLCJjb25qZWN0dXJlTGFiZWxzIiwic2NoZW1hIiwic2NoZW1hTGFiZWwiLCJnZXRMYWJlbCIsImdldFR5cGVzIiwiZ2V0UnVsZXMiLCJnZXRBeGlvbXMiLCJnZXRMZW1tYXMiLCJnZXRTY2hlbWFzIiwiZ2V0VGhlb3JlbXMiLCJnZXRHZW5lcmF0b3JzIiwiZ2V0Q29uamVjdHVyZXMiLCJnZXRDb21iaW5hdG9ycyIsImdldFR5cGVQcmVmaXhlcyIsImdldENvbnN0cnVjdG9ycyIsImdldFByb2NlZHVyZXMiLCJwcm9jZWR1cmVzIiwiZ2V0Q2xhaW1zIiwiY2xhaW1zIiwiZ2V0RGVjbGFyZWRWYXJpYWJsZXMiLCJnZXREZWNsYXJlZE1ldGF2YXJpYWJsZXMiLCJnZXRUZXJtcyIsInRlcm1zIiwiZ2V0RnJhbWVzIiwiZnJhbWVzIiwiZ2V0RXF1YWxpdGllcyIsImVxdWFsaXRpZXMiLCJnZXRBc3NlcnRpb25zIiwiYXNzZXJ0aW9ucyIsImdldFN0YXRlbWVudHMiLCJzdGF0ZW1lbnRzIiwiZ2V0U2lnbmF0dXJlcyIsInNpZ25hdHVyZXMiLCJnZXRSZWZlcmVuY2VzIiwicmVmZXJlbmNlcyIsImdldEFzc3VtcHRpb25zIiwiYXNzdW1wdGlvbnMiLCJnZXRNZXRhdmFyaWFibGVzIiwibWV0YXZhcmlhYmxlcyIsImdldFN1YnN0aXR1dGlvbnMiLCJzdWJzdGl0dXRpb25zIiwiZ2V0SW5mZXJyZWRTdWJzdGl0dXRpb25zIiwiaW5mZXJyZWRTdWJzdGl0dXRpb25zIiwiZ2V0RXF1aXZhbGVuY2VzIiwiZXF1aXZhbGVuY2VzIiwiZ2V0RmFjdE9yU3VicHJvb2ZzIiwiZmFjdE9yU3VicHJvb2ZzIiwiYWRkVHlwZSIsInR5cGUiLCJnZXRGaWxlUGF0aCIsInR5cGVTdHJpbmciLCJnZXRTdHJpbmciLCJ0cmFjZSIsImFkZFJ1bGUiLCJydWxlU3RyaW5nIiwiYWRkQXhpb20iLCJheGlvbVN0cmluZyIsImFkZExlbW1hIiwibGVtbWFTdHJpbmciLCJhZGRTY2hlbWEiLCJzY2hlbWFTdHJpbmciLCJhZGRUaGVvcmVtIiwidGhlb3JlbVN0cmluZyIsImFkZEdlbmVyYXRvciIsImdlbmVyYXRvciIsImdlbmVyYXRvclN0cmluZyIsImFkZENvbmplY3R1cmUiLCJvY25qZWN0dXJlU3RyaW5nIiwiYWRkQ29tYmluYXRvciIsImNvbWJpbmF0b3IiLCJjb21iaW5hdG9yU3RyaW5nIiwiYWRkVHlwZVByZWZpeCIsInR5cGVQcmVmaXgiLCJ0eXBlUHJlZml4U3RyaW5nIiwiYWRkQ29uc3RydWN0b3IiLCJjb25zdHJ1Y3RvciIsImNvbnN0cnVjdG9yU3RyaW5nIiwiYWRkRGVjbGFyZWRWYXJpYWJsZSIsImRlY2xhcmVkVmFyaWFibGUiLCJkZWNsYXJlZFZhcmlhYmxlU3RyaW5nIiwiYWRkRGVjbGFyZWRNZXRhdmFyaWFibGUiLCJkZWNsYXJlZE1ldGF2YXJpYWJsZSIsImRlY2xhcmVkTWV0YXZhcmlhYmxlU3RyaW5nIiwiZmluZE1ldGF2YXJpYWJsZSIsIm1ldGF2YXJpYWJsZSIsImZpbmQiLCJtZXRhdmFyaWFibGVVbmlmaWVzIiwidW5pZnlNZXRhdmFyaWFibGUiLCJmaW5kUnVsZUJ5UmVmZXJlbmNlIiwicmVmZXJlbmNlIiwibWV0YXZhcmlhYmxlTm9kZSIsImdldE1ldGF2YXJpYWJsZU5vZGUiLCJtZXRhdmFyaWFibGVOb2RlTWF0Y2hlcyIsIm1hdGNoTWV0YXZhcmlhYmxlTm9kZSIsImZpbmRBeGlvbUJ5UmVmZXJlbmNlIiwiZmluZExlbW1hQnlSZWZlcmVuY2UiLCJmaW5kVGhlb3JlbUJ5UmVmZXJlbmNlIiwiZmluZENvbmplY3R1cmVCeVJlZmVyZW5jZSIsImZpbmRDbGFpbUJ5UmVmZXJlbmNlIiwiY2xhaW0iLCJmaW5kVHlwZUJ5VHlwZU5hbWUiLCJ0eXBlTmFtZSIsImZpbmRUeXBlIiwidHlwZUNvbXBhcmVzVG9UeXBlTmFtZSIsImNvbXBhcmVUeXBlTmFtZSIsImZpbmRUeXBlQnlOb21pbmFsVHlwZU5hbWUiLCJub21pbmFsVHlwZU5hbWUiLCJ0eXBlQ29tcGFyZXNUb05vbWluYWxUeXBlTmFtZSIsImNvbXBhcmVOb21pbmFsVHlwZU5hbWUiLCJmaW5kVHlwZUJ5UHJlZml4ZWRUeXBlTmFtZSIsInByZWZpeGVkVHlwZU5hbWUiLCJ0eXBlQ29tcGFyZXNUb1ByZWZpeGVkVHlwZU5hbWUiLCJjb21wYXJlUHJlZml4ZWRUeXBlTmFtZSIsImZpbmRUeXBlUHJlZml4QnlUeXBlUHJlZml4TmFtZSIsInR5cGVQcmVmaXhOYW1lIiwidHlwZVByZWZpeENvbXBhcmVzVG9UeXBlUHJlZml4TmFtZSIsImNvbXBhcmVUeXBlUHJlZml4TmFtZSIsImZpbmREZWNsYXJlZFZhcmlhYmxlQnlWYXJpYWJsZUlkZW50aWZpZXIiLCJWYXJpYWJsZUlkZW50aXRpZmVyIiwiZGVjbGFyZWRWYXJpYWJsZUNvbXBhcmVzVG9WYXJpYWJsZUlkZW50aXRpZmVyIiwiY29tcGFyZVZhcmlhYmxlSWRlbnRpZmllciIsImZpbmREZWNsYXJlZFZhcmlhYmxlc0J5VmFyaWFibGVJZGVudGlmaWVyIiwidmFyaWFibGVJZGVudGlmaWVyIiwiZmlsdGVyIiwidmFyaWFibGVDb21wYXJlc1RvVmFyaWFibGVJZGVudGlmaWVyIiwiZmluZERlY2xhcmVkTWV0YXZhcmlhYmxlQnlNZXRhdmFyaWFibGVOYW1lIiwibWV0YXZhcmlhYmxlTmFtZSIsImRlY2xhcmVkTWV0YXZhcmlhYmxlQ29tcGFyZXNUb01ldGF2YXJpYWJsZU5hbWUiLCJjb21wYXJlTWV0YXZhcmlhYmxlTmFtZSIsImZpbmRQcm9jZWR1cmVCeVByb2NlZHVyZU5hbWUiLCJwcm9jZWR1cmVOYW1lIiwicHJvY2VkdXJlIiwicHJvY2VkdXJlQ29tcGFyZXNUb1Byb2NlZHVyZU5hbWUiLCJjb21wYXJlUHJvY2VkdXJlTmFtZSIsImZpbmRNZXRhVHlwZUJ5TWV0YVR5cGVOYW1lIiwibWV0YVR5cGVOYW1lIiwiaXNMYWJlbFByZXNlbnRCeUxhYmVsTm9kZSIsImxhYmVsTm9kZSIsImxhYmVsUHJlc2VudCIsInNvbWUiLCJsYWJlbCIsImxhYmVsTm9kZU1hdGNoZXMiLCJtYXRjaExhYmVsTm9kZSIsImlzVHlwZVByZXNlbnRCeVR5cGVOYW1lIiwidHlwZVByZXNlbnQiLCJpc1R5cGVQcmVzZW50QnlOb21pbmFsVHlwZU5hbWUiLCJpc1R5cGVQcmVzZW50QnlQcmVmaXhlZFR5cGVOYW1lIiwiaXNUeXBlUHJlZml4UHJlc2VudEJ5VHlwZVByZWZpeE5hbWUiLCJ0eXBlUHJlZml4UHJlc2VudCIsImlzRGVjbGFyZWRWYXJpYWJsZVByZXNlbnRCeVZhcmlhYmxlSWRlbnRpZmllciIsImRlY2xhcmVkVmFyaWFibGVQcmVzZW50IiwiaXNEZWNsYXJlZE1ldGF2YXJpYWJsZVByZXNlbnRCeU1ldGF2YXJpYWJsZU5hbWUiLCJkZWNsYXJlZE1ldGF2YXJpYWJsZVByZXNlbnQiLCJpc1Byb2NlZHVyZVByZXNlbnRCeVByb2NlZHVyZU5hbWUiLCJwcm9jZWR1cmVQcmVzZW50IiwiaXNNZXRhTGV2ZWwiLCJtZXRhTEV2ZWwiLCJjbGVhciIsImNvbXBsZXRlIiwidmVyaWZ5RmlsZSIsImZvcndhcmQiLCJiYWNrIiwiZ2V0Tm9kZSIsImZpbGVOb2RlIiwiXyIsImluaXRpYWxpc2UiLCJnZXRKU09OIiwiZmlsZUNvbnRleHQiLCJ0eXBlc0Zyb21KU09OIiwiZGVjbGFyZWRNZXRhdmFyaWFibGVzRnJvbUpTT04iLCJkZWNsYXJlZFZhcmlhYmxlc0Zyb21KU09OIiwidHlwZVByZWZpeGVzRnJvbUpTT04iLCJnZW5lcmF0b3JzRnJvbUpTT04iLCJjb21iaW5hdG9yc0Zyb21KU09OIiwiY29uc3RydWN0b3JzRnJvbUpTT04iLCJydWxlc0Zyb21KU09OIiwiYXhpb21zRnJvbUpTT04iLCJzY2hlbWFzRnJvbUpTT04iLCJ0aGVvcmVtc0Zyb21KU09OIiwiY29uamVjdHVyZXNGcm9tSlNPTiIsInRvSlNPTiIsInR5cGVzSlNPTiIsInR5cGVzVG9UeXBlc0pTT04iLCJydWxlc0pTT04iLCJydWxlc1RvUnVsZXNKU09OIiwiYXhpb21zSlNPTiIsImF4aW9tc1RvQXhpb21zSlNPTiIsInNjaGVtYXNKU09OIiwic2NoZW1hc1RvU2NoZW1hc0pTT04iLCJ0aGVvcmVtc0pTT04iLCJ0aGVvcmVtc1RvVGhlb3JlbXNKU09OIiwiZ2VuZXJhdG9yc0pTT04iLCJnZW5lcmF0b3JzVG9HZW5lcmF0b3JzSlNPTiIsImNvbmplY3R1cmVzSlNPTiIsImNvbmplY3R1cmVzVG9Db25qZWN0dXJlc0pTT04iLCJjb21iaW5hdG9yc0pTT04iLCJjb21iaW5hdG9yc1RvQ29tYmluYXRvcnNKU09OIiwidHlwZVByZWZpeGVzSlNPTiIsInR5cGVQcmVmaXhlc1RvVHlwZVByZWZpeGVzSlNPTiIsImNvbnN0cnVjdG9yc0pTT04iLCJjb25zdHJ1Y3RvcnNUb0NvbnN0cnVjdG9yc0pTT04iLCJkZWNsYXJlZFZhcmlhYmxlc0pTT04iLCJkZWNsYXJlZFZhcmlhYmxlc1RvRGVjbGFyZWRWYXJpYWJsZXNKU09OIiwiZGVjbGFyZWRNZXRhdmFyaWFibGVzSlNPTiIsImRlY2xhcmVkTWV0YXZhcmlhYmxlc1RvRGVjbGFyZWRNZXRhdmFyaWFibGVzSlNPTiIsImdldEZpbGVDb250ZW50IiwiZnJvbUZpbGUiLCJmaWxlIiwicmVsZWFzZUNvbnRleHQiLCJjb21iaW5lZEN1c3RvbUdyYW1tYXIiLCJnZXRDb21iaW5lZEN1c3RvbUdyYW1tYXIiLCJub21pbmFsTGV4ZXIiLCJOb21pbmFsTGV4ZXIiLCJub21pbmFsUGFyc2VyIiwiTm9taW5hbFBhcnNlciIsIm5vbWluYWxGaWxlQ29udGV4dCIsImZyb21KU09OIl0sIm1hcHBpbmdz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
|
|
514
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb250ZXh0L2ZpbGUvbm9taW5hbC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgYXJyYXlVdGlsaXRpZXMgfSBmcm9tIFwibmVjZXNzYXJ5XCI7XG5pbXBvcnQgeyBGaWxlQ29udGV4dCwgbm9taW5hbFV0aWxpdGllcywgY29udGludWF0aW9uVXRpbGl0aWVzIH0gZnJvbSBcIm9jY2FtLWxhbmd1YWdlc1wiO1xuXG5pbXBvcnQgTm9taW5hbExleGVyIGZyb20gXCIuLi8uLi9ub21pbmFsL2xleGVyXCI7XG5pbXBvcnQgTm9taW5hbFBhcnNlciBmcm9tIFwiLi4vLi4vbm9taW5hbC9wYXJzZXJcIjtcblxuaW1wb3J0IHsgZmluZFR5cGV9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvdHlwZVwiO1xuaW1wb3J0IHsgdmVyaWZ5RmlsZSB9IGZyb20gXCIuLi8uLi9wcm9jZXNzL3ZlcmlmeVwiO1xuaW1wb3J0IHsgZmluZE1ldGFUeXBlQnlNZXRhVHlwZU5hbWUgfSBmcm9tIFwiLi4vLi4vbWV0YVR5cGVzXCI7XG5pbXBvcnQgeyB0eXBlc0Zyb21KU09OLFxuICAgICAgICAgcnVsZXNGcm9tSlNPTixcbiAgICAgICAgIGF4aW9tc0Zyb21KU09OLFxuICAgICAgICAgc2NoZW1hc0Zyb21KU09OLFxuICAgICAgICAgdHlwZXNUb1R5cGVzSlNPTixcbiAgICAgICAgIHRoZW9yZW1zRnJvbUpTT04sXG4gICAgICAgICBydWxlc1RvUnVsZXNKU09OLFxuICAgICAgICAgYXhpb21zVG9BeGlvbXNKU09OLFxuICAgICAgICAgZ2VuZXJhdG9yc0Zyb21KU09OLFxuICAgICAgICAgY29uamVjdHVyZXNGcm9tSlNPTixcbiAgICAgICAgIGNvbWJpbmF0b3JzRnJvbUpTT04sXG4gICAgICAgICB0eXBlUHJlZml4ZXNGcm9tSlNPTixcbiAgICAgICAgIGNvbnN0cnVjdG9yc0Zyb21KU09OLFxuICAgICAgICAgc2NoZW1hc1RvU2NoZW1hc0pTT04sXG4gICAgICAgICB0aGVvcmVtc1RvVGhlb3JlbXNKU09OLFxuICAgICAgICAgZGVjbGFyZWRWYXJpYWJsZXNGcm9tSlNPTixcbiAgICAgICAgIGdlbmVyYXRvcnNUb0dlbmVyYXRvcnNKU09OLFxuICAgICAgICAgY29uamVjdHVyZXNUb0NvbmplY3R1cmVzSlNPTixcbiAgICAgICAgIGNvbWJpbmF0b3JzVG9Db21iaW5hdG9yc0pTT04sXG4gICAgICAgICBkZWNsYXJlZE1ldGF2YXJpYWJsZXNGcm9tSlNPTixcbiAgICAgICAgIHR5cGVQcmVmaXhlc1RvVHlwZVByZWZpeGVzSlNPTixcbiAgICAgICAgIGNvbnN0cnVjdG9yc1RvQ29uc3RydWN0b3JzSlNPTixcbiAgICAgICAgIGRlY2xhcmVkVmFyaWFibGVzVG9EZWNsYXJlZFZhcmlhYmxlc0pTT04sXG4gICAgICAgICBkZWNsYXJlZE1ldGF2YXJpYWJsZXNUb0RlY2xhcmVkTWV0YXZhcmlhYmxlc0pTT04gfSBmcm9tIFwiLi4vLi4vdXRpbGl0aWVzL2pzb25cIjtcblxuY29uc3QgeyBwdXNoIH0gPSBhcnJheVV0aWxpdGllcyxcbiAgICAgIHsgaXNvbGF0ZSB9ID0gY29udGludWF0aW9uVXRpbGl0aWVzLFxuICAgICAgeyBub21pbmFsTGV4ZXJGcm9tQ29tYmluZWRDdXN0b21HcmFtbWFyLCBub21pbmFsUGFyc2VyRnJvbUNvbWJpbmVkQ3VzdG9tR3JhbW1hciB9ID0gbm9taW5hbFV0aWxpdGllcztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTm9taW5hbEZpbGVDb250ZXh0IGV4dGVuZHMgRmlsZUNvbnRleHQge1xuICBjb25zdHJ1Y3Rvcihjb250ZXh0LCBmaWxlQ29udGVudCwgZmlsZVBhdGgsIHRva2Vucywgbm9kZSwganNvbiwgbGV4ZXIsIHBhcnNlciwgdHlwZXMsIHJ1bGVzLCBheGlvbXMsIGxlbW1hcywgc2NoZW1hcywgdGhlb3JlbXMsIGdlbmVyYXRvcnMsIGNvbmplY3R1cmVzLCBjb21iaW5hdG9ycywgdHlwZVByZWZpeGVzLCBjb25zdHJ1Y3RvcnMsIGRlY2xhcmVkVmFyaWFibGVzLCBkZWNsYXJlZE1ldGF2YXJpYWJsZXMpIHtcbiAgICBzdXBlcihjb250ZXh0LCBmaWxlQ29udGVudCwgZmlsZVBhdGgsIHRva2Vucywgbm9kZSwganNvbik7XG5cbiAgICB0aGlzLmxleGVyID0gbGV4ZXI7XG4gICAgdGhpcy5wYXJzZXIgPSBwYXJzZXI7XG4gICAgdGhpcy5jb250ZXh0ID0gY29udGV4dDtcbiAgICB0aGlzLmZpbGVQYXRoID0gZmlsZVBhdGg7XG4gICAgdGhpcy50b2tlbnMgPSB0b2tlbnM7XG4gICAgdGhpcy5ub2RlID0gbm9kZTtcbiAgICB0aGlzLnR5cGVzID0gdHlwZXM7XG4gICAgdGhpcy5ydWxlcyA9IHJ1bGVzO1xuICAgIHRoaXMuYXhpb21zID0gYXhpb21zO1xuICAgIHRoaXMubGVtbWFzID0gbGVtbWFzO1xuICAgIHRoaXMuc2NoZW1hcyA9IHNjaGVtYXM7XG4gICAgdGhpcy50aGVvcmVtcyA9IHRoZW9yZW1zO1xuICAgIHRoaXMuZ2VuZXJhdG9ycyA9IGdlbmVyYXRvcnM7XG4gICAgdGhpcy5jb25qZWN0dXJlcyA9IGNvbmplY3R1cmVzO1xuICAgIHRoaXMuY29tYmluYXRvcnMgPSBjb21iaW5hdG9ycztcbiAgICB0aGlzLnR5cGVQcmVmaXhlcyA9IHR5cGVQcmVmaXhlcztcbiAgICB0aGlzLmNvbnN0cnVjdG9ycyA9IGNvbnN0cnVjdG9ycztcbiAgICB0aGlzLmRlY2xhcmVkVmFyaWFibGVzID0gZGVjbGFyZWRWYXJpYWJsZXM7XG4gICAgdGhpcy5kZWNsYXJlZE1ldGF2YXJpYWJsZXMgPSBkZWNsYXJlZE1ldGF2YXJpYWJsZXM7XG4gIH1cblxuICBnZXRMZXhlcigpIHtcbiAgICByZXR1cm4gdGhpcy5sZXhlcjtcbiAgfVxuXG4gIGdldFBhcnNlcigpIHtcbiAgICByZXR1cm4gdGhpcy5wYXJzZXI7XG4gIH1cblxuICBnZXRMYWJlbHMoaW5jbHVkZVJlbGVhc2UgPSB0cnVlKSB7XG4gICAgY29uc3QgbGFiZWxzID0gW107XG5cbiAgICBpZiAoaW5jbHVkZVJlbGVhc2UpIHtcbiAgICAgIGNvbnN0IHJlbGVhc2VDb250ZXh0TGFiZWxzID0gdGhpcy5jb250ZXh0LmdldExhYmVscygpO1xuXG4gICAgICBwdXNoKGxhYmVscywgcmVsZWFzZUNvbnRleHRMYWJlbHMpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnJ1bGVzLmZvckVhY2goKHJ1bGUpID0+IHtcbiAgICAgICAgY29uc3QgcnVsZUxhYmVscyA9IHJ1bGUuZ2V0TGFiZWxzKCk7XG5cbiAgICAgICAgcHVzaChsYWJlbHMsIHJ1bGVMYWJlbHMpO1xuICAgICAgfSk7XG5cbiAgICAgIHRoaXMuYXhpb21zLmZvckVhY2goKGF4aW9tKSA9PiB7XG4gICAgICAgIGNvbnN0IGF4aW9tTGFiZWxzID0gYXhpb20uZ2V0TGFiZWxzKCk7XG5cbiAgICAgICAgcHVzaChsYWJlbHMsIGF4aW9tTGFiZWxzKTtcbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLmxlbW1hcy5mb3JFYWNoKChsZW1tYSkgPT4ge1xuICAgICAgICBjb25zdCBsZW1tYUxhYmVscyA9IGxlbW1hLmdldExhYmVscygpO1xuXG4gICAgICAgIHB1c2gobGFiZWxzLCBsZW1tYUxhYmVscyk7XG4gICAgICB9KTtcblxuICAgICAgdGhpcy50aGVvcmVtcy5mb3JFYWNoKCh0aGVvcmVtKSA9PiB7XG4gICAgICAgIGNvbnN0IHRoZW9yZW1MYWJlbHMgPSB0aGVvcmVtLmdldExhYmVscygpO1xuXG4gICAgICAgIHB1c2gobGFiZWxzLCB0aGVvcmVtTGFiZWxzKTtcbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLmNvbmplY3R1cmVzLmZvckVhY2goKGNvbmplY3R1cmUpID0+IHtcbiAgICAgICAgY29uc3QgY29uamVjdHVyZUxhYmVscyA9IGNvbmplY3R1cmUuZ2V0TGFiZWxzKCk7XG5cbiAgICAgICAgcHVzaChsYWJlbHMsIGNvbmplY3R1cmVMYWJlbHMpO1xuICAgICAgfSk7XG5cbiAgICAgIHRoaXMuc2NoZW1hcy5mb3JFYWNoKChzY2hlbWEpID0+IHtcbiAgICAgICAgY29uc3Qgc2NoZW1hTGFiZWwgPSBzY2hlbWEuZ2V0TGFiZWwoKTtcblxuICAgICAgICBsYWJlbHMucHVzaChzY2hlbWFMYWJlbCk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gbGFiZWxzO1xuICB9XG5cbiAgZ2V0VHlwZXMoaW5jbHVkZVJlbGVhc2UgPSB0cnVlKSB7XG4gICAgY29uc3QgdHlwZXMgPSBpbmNsdWRlUmVsZWFzZSA/XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dC5nZXRUeXBlcygpIDpcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLnR5cGVzO1xuXG4gICAgcmV0dXJuIHR5cGVzO1xuICB9XG5cbiAgZ2V0UnVsZXMoaW5jbHVkZVJlbGVhc2UgPSB0cnVlKSB7XG4gICAgY29uc3QgcnVsZXMgPSBpbmNsdWRlUmVsZWFzZSA/XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dC5nZXRSdWxlcygpIDpcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJ1bGVzO1xuXG4gICAgcmV0dXJuIHJ1bGVzO1xuICB9XG5cbiAgZ2V0QXhpb21zKGluY2x1ZGVSZWxlYXNlID0gdHJ1ZSkge1xuICAgIGNvbnN0IGF4aW9tcyA9IGluY2x1ZGVSZWxlYXNlID9cbiAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dC5nZXRBeGlvbXMoKSA6XG4gICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYXhpb21zO1xuXG4gICAgcmV0dXJuIGF4aW9tcztcbiAgfVxuXG4gIGdldExlbW1hcyhpbmNsdWRlUmVsZWFzZSA9IHRydWUpIHtcbiAgICBjb25zdCBsZW1tYXMgPSBpbmNsdWRlUmVsZWFzZSA/XG4gICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRleHQuZ2V0TGVtbWFzKCkgOlxuICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxlbW1hcztcblxuICAgIHJldHVybiBsZW1tYXM7XG4gIH1cblxuICBnZXRTY2hlbWFzKGluY2x1ZGVSZWxlYXNlID0gdHJ1ZSkge1xuICAgIGNvbnN0IHNjaGVtYXMgPSBpbmNsdWRlUmVsZWFzZSA/XG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0LmdldFNjaGVtYXMoKSA6XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNjaGVtYXM7XG5cbiAgICByZXR1cm4gc2NoZW1hcztcbiAgfVxuXG4gIGdldFRoZW9yZW1zKGluY2x1ZGVSZWxlYXNlID0gdHJ1ZSkge1xuICAgIGNvbnN0IHRoZW9yZW1zID0gaW5jbHVkZVJlbGVhc2UgP1xuICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRleHQuZ2V0VGhlb3JlbXMoKSA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50aGVvcmVtcztcblxuICAgIHJldHVybiB0aGVvcmVtcztcbiAgfVxuXG4gIGdldEdlbmVyYXRvcnMoaW5jbHVkZVJlbGVhc2UgPSB0cnVlKSB7XG4gICAgY29uc3QgZ2VuZXJhdG9ycyA9IGluY2x1ZGVSZWxlYXNlID9cbiAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRleHQuZ2V0R2VuZXJhdG9ycygpIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZ2VuZXJhdG9ycztcblxuICAgIHJldHVybiBnZW5lcmF0b3JzO1xuICB9XG5cbiAgZ2V0Q29uamVjdHVyZXMoaW5jbHVkZVJlbGVhc2UgPSB0cnVlKSB7XG4gICAgY29uc3QgY29uamVjdHVyZXMgPSBpbmNsdWRlUmVsZWFzZSA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dC5nZXRDb25qZWN0dXJlcygpIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbmplY3R1cmVzO1xuXG4gICAgcmV0dXJuIGNvbmplY3R1cmVzO1xuICB9XG5cbiAgZ2V0Q29tYmluYXRvcnMoaW5jbHVkZVJlbGVhc2UgPSB0cnVlKSB7XG4gICAgY29uc3QgY29tYmluYXRvcnMgPSBpbmNsdWRlUmVsZWFzZSA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dC5nZXRDb21iaW5hdG9ycygpIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbWJpbmF0b3JzO1xuXG4gICAgcmV0dXJuIGNvbWJpbmF0b3JzO1xuICB9XG5cbiAgZ2V0VHlwZVByZWZpeGVzKGluY2x1ZGVSZWxlYXNlID0gdHJ1ZSkge1xuICAgIGNvbnN0IHR5cGVQcmVmaXhlcyA9IGluY2x1ZGVSZWxlYXNlID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dC5nZXRUeXBlUHJlZml4ZXMoKSA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudHlwZVByZWZpeGVzO1xuXG4gICAgcmV0dXJuIHR5cGVQcmVmaXhlcztcbiAgfVxuXG4gIGdldENvbnN0cnVjdG9ycyhpbmNsdWRlUmVsZWFzZSA9IHRydWUpIHtcbiAgICBjb25zdCBjb25zdHJ1Y3RvcnMgPSBpbmNsdWRlUmVsZWFzZSA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRleHQuZ2V0Q29uc3RydWN0b3JzKCkgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnN0cnVjdG9ycztcblxuICAgIHJldHVybiBjb25zdHJ1Y3RvcnM7XG4gIH1cblxuICBnZXRQcm9jZWR1cmVzKGluY2x1ZGVSZWxlYXNlID0gdHJ1ZSkge1xuICAgIGNvbnN0IHByb2NlZHVyZXMgPSBpbmNsdWRlUmVsZWFzZSA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dC5nZXRQcm9jZWR1cmVzKCkgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGw7ICAvLy9cblxuICAgIHJldHVybiBwcm9jZWR1cmVzO1xuICB9XG5cbiAgZ2V0Q2xhaW1zKGluY2x1ZGVSZWxlYXNlID0gdHJ1ZSkge1xuICAgIGNvbnN0IGxlbW1hcyA9IHRoaXMuZ2V0TGVtbWFzKGluY2x1ZGVSZWxlYXNlKSxcbiAgICAgICAgICBheGlvbXMgPSB0aGlzLmdldEF4aW9tcyhpbmNsdWRlUmVsZWFzZSksXG4gICAgICAgICAgdGhlb3JlbXMgPSB0aGlzLmdldFRoZW9yZW1zKGluY2x1ZGVSZWxlYXNlKSxcbiAgICAgICAgICBjb25qZWN0dXJlcyA9IHRoaXMuZ2V0Q29uamVjdHVyZXMoaW5jbHVkZVJlbGVhc2UpLFxuICAgICAgICAgIGNsYWltcyA9IFtcbiAgICAgICAgICAgIC4uLmxlbW1hcyxcbiAgICAgICAgICAgIC4uLmF4aW9tcyxcbiAgICAgICAgICAgIC4uLnRoZW9yZW1zLFxuICAgICAgICAgICAgLi4uY29uamVjdHVyZXNcbiAgICAgICAgICBdO1xuXG4gICAgcmV0dXJuIGNsYWltcztcbiAgfVxuXG4gIGdldERlY2xhcmVkVmFyaWFibGVzKGRlY2xhcmVkVmFyaWFibGVzID0gW10pIHtcbiAgICBwdXNoKGRlY2xhcmVkVmFyaWFibGVzLCB0aGlzLmRlY2xhcmVkVmFyaWFibGVzKTtcblxuICAgIHJldHVybiBkZWNsYXJlZFZhcmlhYmxlcztcbiAgfVxuXG4gIGdldERlY2xhcmVkTWV0YXZhcmlhYmxlcygpIHtcbiAgICByZXR1cm4gdGhpcy5kZWNsYXJlZE1ldGF2YXJpYWJsZXM7XG4gIH1cblxuICBnZXRUZXJtcyh0ZXJtcyA9IFtdKSB7XG4gICAgcmV0dXJuIHRlcm1zO1xuICB9XG5cbiAgZ2V0RnJhbWVzKGZyYW1lcyA9IFtdKSB7XG4gICAgcmV0dXJuIGZyYW1lcztcbiAgfVxuXG4gIGdldEVxdWFsaXRpZXMoZXF1YWxpdGllcyA9IFtdKSB7XG4gICAgcmV0dXJuIGVxdWFsaXRpZXM7XG4gIH1cblxuICBnZXRBc3NlcnRpb25zKGFzc2VydGlvbnMgPSBbXSkge1xuICAgIHJldHVybiBhc3NlcnRpb25zO1xuICB9XG5cbiAgZ2V0U3RhdGVtZW50cyhzdGF0ZW1lbnRzID0gW10pIHtcbiAgICByZXR1cm4gc3RhdGVtZW50cztcbiAgfVxuXG4gIGdldFNpZ25hdHVyZXMoc2lnbmF0dXJlcyA9IFtdKSB7XG4gICAgcmV0dXJuIHNpZ25hdHVyZXM7XG4gIH1cblxuICBnZXRSZWZlcmVuY2VzKHJlZmVyZW5jZXMgPSBbXSkge1xuICAgIHJldHVybiByZWZlcmVuY2VzO1xuICB9XG5cbiAgZ2V0QXNzdW1wdGlvbnMoYXNzdW1wdGlvbnMgPSBbXSkge1xuICAgIHJldHVybiBhc3N1bXB0aW9ucztcbiAgfVxuXG4gIGdldE1ldGF2YXJpYWJsZXMobWV0YXZhcmlhYmxlcyA9IFtdKSB7XG4gICAgcmV0dXJuIG1ldGF2YXJpYWJsZXM7XG4gIH1cblxuICBnZXRTdWJzdGl0dXRpb25zKHN1YnN0aXR1dGlvbnMgPSBbXSkge1xuICAgIHJldHVybiBzdWJzdGl0dXRpb25zO1xuICB9XG5cbiAgZ2V0SW5mZXJyZWRTdWJzdGl0dXRpb25zKGluZmVycmVkU3Vic3RpdHV0aW9ucyA9IFtdKSB7XG4gICAgcmV0dXJuIGluZmVycmVkU3Vic3RpdHV0aW9ucztcbiAgfVxuXG4gIGdldEVxdWl2YWxlbmNlcygpIHtcbiAgICBjb25zdCBlcXVpdmFsZW5jZXMgPSBbXTtcblxuICAgIHJldHVybiBlcXVpdmFsZW5jZXM7XG4gIH1cblxuICBnZXRGYWN0T3JTdWJwcm9vZnMoKSB7XG4gICAgY29uc3QgZmFjdE9yU3VicHJvb2ZzID0gW107XG5cbiAgICByZXR1cm4gZmFjdE9yU3VicHJvb2ZzO1xuICB9XG5cbiAgYWRkVHlwZSh0eXBlKSB7XG4gICAgdGhpcy50eXBlcy5wdXNoKHR5cGUpO1xuXG4gICAgY29uc3QgZmlsZVBhdGggPSB0aGlzLmdldEZpbGVQYXRoKCksXG4gICAgICAgICAgdHlwZVN0cmluZyA9IHR5cGUuZ2V0U3RyaW5nKCk7XG5cbiAgICB0aGlzLnRyYWNlKGBBZGRlZCB0aGUgJyR7dHlwZVN0cmluZ30nIHR5cGUgdG8gdGhlICcke2ZpbGVQYXRofScgZmlsZSBjb250ZXh0LmApXG4gIH1cblxuICBhZGRSdWxlKHJ1bGUpIHtcbiAgICB0aGlzLnJ1bGVzLnB1c2gocnVsZSk7XG5cbiAgICBjb25zdCBmaWxlUGF0aCA9IHRoaXMuZ2V0RmlsZVBhdGgoKSxcbiAgICAgICAgICBydWxlU3RyaW5nID0gcnVsZS5nZXRTdHJpbmcoKTtcblxuICAgIHRoaXMudHJhY2UoYEFkZGVkIHRoZSAnJHtydWxlU3RyaW5nfScgcnVsZSB0byB0aGUgJyR7ZmlsZVBhdGh9JyBmaWxlIGNvbnRleHQuYClcbiAgfVxuXG4gIGFkZEF4aW9tKGF4aW9tKSB7XG4gICAgdGhpcy5heGlvbXMucHVzaChheGlvbSk7XG5cbiAgICBjb25zdCBmaWxlUGF0aCA9IHRoaXMuZ2V0RmlsZVBhdGgoKSxcbiAgICAgICAgICBheGlvbVN0cmluZyA9IGF4aW9tLmdldFN0cmluZygpO1xuXG4gICAgdGhpcy50cmFjZShgQWRkZWQgdGhlICcke2F4aW9tU3RyaW5nfScgYXhpb20gdG8gdGhlICcke2ZpbGVQYXRofScgZmlsZSBjb250ZXh0LmApXG4gIH1cblxuICBhZGRMZW1tYShsZW1tYSkge1xuICAgIHRoaXMubGVtbWFzLnB1c2gobGVtbWEpO1xuXG4gICAgY29uc3QgZmlsZVBhdGggPSB0aGlzLmdldEZpbGVQYXRoKCksXG4gICAgICBsZW1tYVN0cmluZyA9IGxlbW1hLmdldFN0cmluZygpO1xuXG4gICAgdGhpcy50cmFjZShgQWRkZWQgdGhlICcke2xlbW1hU3RyaW5nfScgbGVtbWEgdG8gdGhlICcke2ZpbGVQYXRofScgZmlsZSBjb250ZXh0LmApXG4gIH1cblxuICBhZGRTY2hlbWEoc2NoZW1hKSB7XG4gICAgdGhpcy5zY2hlbWFzLnB1c2goc2NoZW1hKTtcblxuICAgIGNvbnN0IGZpbGVQYXRoID0gdGhpcy5nZXRGaWxlUGF0aCgpLFxuICAgICAgICAgIHNjaGVtYVN0cmluZyA9IHNjaGVtYS5nZXRTdHJpbmcoKTtcblxuICAgIHRoaXMudHJhY2UoYEFkZGVkIHRoZSAnJHtzY2hlbWFTdHJpbmd9JyBzY2hlbWEgdG8gdGhlICcke2ZpbGVQYXRofScgZmlsZSBjb250ZXh0LmApXG4gIH1cblxuICBhZGRUaGVvcmVtKHRoZW9yZW0pIHtcbiAgICB0aGlzLnRoZW9yZW1zLnB1c2godGhlb3JlbSk7XG5cbiAgICBjb25zdCBmaWxlUGF0aCA9IHRoaXMuZ2V0RmlsZVBhdGgoKSxcbiAgICAgICAgICB0aGVvcmVtU3RyaW5nID0gdGhlb3JlbS5nZXRTdHJpbmcoKTtcblxuICAgIHRoaXMudHJhY2UoYEFkZGVkIHRoZSAnJHt0aGVvcmVtU3RyaW5nfScgdGhlb3JlbSB0byB0aGUgJyR7ZmlsZVBhdGh9JyBmaWxlIGNvbnRleHQuYClcbiAgfVxuXG4gIGFkZEdlbmVyYXRvcihnZW5lcmF0b3IpIHtcbiAgICB0aGlzLmdlbmVyYXRvcnMucHVzaChnZW5lcmF0b3IpO1xuXG4gICAgY29uc3QgZmlsZVBhdGggPSB0aGlzLmdldEZpbGVQYXRoKCksXG4gICAgICAgICAgZ2VuZXJhdG9yU3RyaW5nID0gZ2VuZXJhdG9yLmdldFN0cmluZygpO1xuXG4gICAgdGhpcy50cmFjZShgQWRkZWQgdGhlICcke2dlbmVyYXRvclN0cmluZ30nIGdlbmVyYXRvciB0byB0aGUgJyR7ZmlsZVBhdGh9JyBmaWxlIGNvbnRleHQuYClcbiAgfVxuXG4gIGFkZENvbmplY3R1cmUoY29uamVjdHVyZSkge1xuICAgIHRoaXMuY29uamVjdHVyZXMucHVzaChjb25qZWN0dXJlKTtcblxuICAgIGNvbnN0IGZpbGVQYXRoID0gdGhpcy5nZXRGaWxlUGF0aCgpLFxuICAgICAgICAgIG9jbmplY3R1cmVTdHJpbmcgPSBjb25qZWN0dXJlLmdldFN0cmluZygpO1xuXG4gICAgdGhpcy50cmFjZShgQWRkZWQgdGhlICcke29jbmplY3R1cmVTdHJpbmd9JyBvY25qZWN0dXJlIHRvIHRoZSAnJHtmaWxlUGF0aH0nIGZpbGUgY29udGV4dC5gKVxuICB9XG5cbiAgYWRkQ29tYmluYXRvcihjb21iaW5hdG9yKSB7XG4gICAgdGhpcy5jb21iaW5hdG9ycy5wdXNoKGNvbWJpbmF0b3IpO1xuXG4gICAgY29uc3QgZmlsZVBhdGggPSB0aGlzLmdldEZpbGVQYXRoKCksXG4gICAgICAgICAgY29tYmluYXRvclN0cmluZyA9IGNvbWJpbmF0b3IuZ2V0U3RyaW5nKCk7XG5cbiAgICB0aGlzLnRyYWNlKGBBZGRlZCB0aGUgJyR7Y29tYmluYXRvclN0cmluZ30nIGNvbWJpbmF0b3IgdG8gdGhlICcke2ZpbGVQYXRofScgZmlsZSBjb250ZXh0LmApXG4gIH1cblxuICBhZGRUeXBlUHJlZml4KHR5cGVQcmVmaXgpIHtcbiAgICB0aGlzLnR5cGVQcmVmaXhlcy5wdXNoKHR5cGVQcmVmaXgpO1xuXG4gICAgY29uc3QgZmlsZVBhdGggPSB0aGlzLmdldEZpbGVQYXRoKCksXG4gICAgICAgICAgdHlwZVByZWZpeFN0cmluZyA9IHR5cGVQcmVmaXguZ2V0U3RyaW5nKCk7XG5cbiAgICB0aGlzLnRyYWNlKGBBZGRlZCB0aGUgJyR7dHlwZVByZWZpeFN0cmluZ30nIHR5cGUtcHJlZml4IHRvIHRoZSAnJHtmaWxlUGF0aH0nIGZpbGUgY29udGV4dC5gKVxuICB9XG5cbiAgYWRkQ29uc3RydWN0b3IoY29uc3RydWN0b3IpIHtcbiAgICB0aGlzLmNvbnN0cnVjdG9ycy5wdXNoKGNvbnN0cnVjdG9yKTtcblxuICAgIGNvbnN0IGZpbGVQYXRoID0gdGhpcy5nZXRGaWxlUGF0aCgpLFxuICAgICAgICAgIGNvbnN0cnVjdG9yU3RyaW5nID0gY29uc3RydWN0b3IuZ2V0U3RyaW5nKCk7XG5cbiAgICB0aGlzLnRyYWNlKGBBZGRlZCB0aGUgJyR7Y29uc3RydWN0b3JTdHJpbmd9JyBjb25zdHJ1Y3RvciB0byB0aGUgJyR7ZmlsZVBhdGh9JyBmaWxlIGNvbnRleHQuYClcbiAgfVxuXG4gIGFkZERlY2xhcmVkVmFyaWFibGUoZGVjbGFyZWRWYXJpYWJsZSkge1xuICAgIHRoaXMuZGVjbGFyZWRWYXJpYWJsZXMucHVzaChkZWNsYXJlZFZhcmlhYmxlKTtcblxuICAgIGNvbnN0IGZpbGVQYXRoID0gdGhpcy5nZXRGaWxlUGF0aCgpLFxuICAgICAgICAgIGRlY2xhcmVkVmFyaWFibGVTdHJpbmcgPSBkZWNsYXJlZFZhcmlhYmxlLmdldFN0cmluZygpO1xuXG4gICAgdGhpcy50cmFjZShgQWRkZWQgdGhlICcke2RlY2xhcmVkVmFyaWFibGVTdHJpbmd9JyBkZWNsYXJlZCB2YXJpYWJsZSB0byB0aGUgJyR7ZmlsZVBhdGh9JyBmaWxlIGNvbnRleHQuYClcbiAgfVxuXG4gIGFkZERlY2xhcmVkTWV0YXZhcmlhYmxlKGRlY2xhcmVkTWV0YXZhcmlhYmxlKSB7XG4gICAgdGhpcy5kZWNsYXJlZE1ldGF2YXJpYWJsZXMucHVzaChkZWNsYXJlZE1ldGF2YXJpYWJsZSk7XG5cbiAgICBjb25zdCBmaWxlUGF0aCA9IHRoaXMuZ2V0RmlsZVBhdGgoKSxcbiAgICAgICAgICBkZWNsYXJlZE1ldGF2YXJpYWJsZVN0cmluZyA9IGRlY2xhcmVkTWV0YXZhcmlhYmxlLmdldFN0cmluZygpO1xuXG4gICAgdGhpcy50cmFjZShgQWRkZWQgdGhlICcke2RlY2xhcmVkTWV0YXZhcmlhYmxlU3RyaW5nfScgZGVjbGFyZWQgbWV0YXZhcmlhYmxlIHRvIHRoZSAnJHtmaWxlUGF0aH0nIGZpbGUgY29udGV4dC5gKVxuICB9XG5cbiAgZmluZE1ldGF2YXJpYWJsZShtZXRhdmFyaWFibGUsIGNvbnRleHQpIHtcbiAgICBjb25zdCBkZWNsYXJlZE1ldGF2YXJpYWJsZXMgPSB0aGlzLmdldERlY2xhcmVkTWV0YXZhcmlhYmxlcygpO1xuXG4gICAgbWV0YXZhcmlhYmxlID0gZGVjbGFyZWRNZXRhdmFyaWFibGVzLmZpbmQoKGRlY2xhcmVkTWV0YXZhcmlhYmxlKSA9PiB7XG4gICAgICBjb25zdCBtZXRhdmFyaWFibGVVbmlmaWVzID0gZGVjbGFyZWRNZXRhdmFyaWFibGUudW5pZnlNZXRhdmFyaWFibGUobWV0YXZhcmlhYmxlLCBjb250ZXh0KTtcblxuICAgICAgaWYgKG1ldGF2YXJpYWJsZVVuaWZpZXMpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfSkgfHwgbnVsbDtcblxuICAgIHJldHVybiBtZXRhdmFyaWFibGU7XG4gIH1cblxuICBmaW5kUnVsZUJ5UmVmZXJlbmNlKHJlZmVyZW5jZSkge1xuICAgIGNvbnN0IHJ1bGVzID0gdGhpcy5nZXRSdWxlcygpLFxuICAgICAgICAgIG1ldGF2YXJpYWJsZU5vZGUgPSByZWZlcmVuY2UuZ2V0TWV0YXZhcmlhYmxlTm9kZSgpLFxuICAgICAgICAgIHJ1bGUgPSBydWxlcy5maW5kKChydWxlKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBtZXRhdmFyaWFibGVOb2RlTWF0Y2hlcyA9IHJ1bGUubWF0Y2hNZXRhdmFyaWFibGVOb2RlKG1ldGF2YXJpYWJsZU5vZGUpO1xuXG4gICAgICAgICAgICBpZiAobWV0YXZhcmlhYmxlTm9kZU1hdGNoZXMpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSkgfHwgbnVsbDtcblxuICAgIHJldHVybiBydWxlO1xuICB9XG5cbiAgZmluZEF4aW9tQnlSZWZlcmVuY2UocmVmZXJlbmNlKSB7XG4gICAgY29uc3QgYXhpb21zID0gdGhpcy5nZXRBeGlvbXMoKSxcbiAgICAgICAgICBtZXRhdmFyaWFibGVOb2RlID0gcmVmZXJlbmNlLmdldE1ldGF2YXJpYWJsZU5vZGUoKSxcbiAgICAgICAgICBheGlvbSA9IGF4aW9tcy5maW5kKChheGlvbSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgbWV0YXZhcmlhYmxlTm9kZU1hdGNoZXMgPSBheGlvbS5tYXRjaE1ldGF2YXJpYWJsZU5vZGUobWV0YXZhcmlhYmxlTm9kZSk7XG5cbiAgICAgICAgICAgIGlmIChtZXRhdmFyaWFibGVOb2RlTWF0Y2hlcykge1xuICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KSB8fCBudWxsO1xuXG4gICAgcmV0dXJuIGF4aW9tO1xuICB9XG5cbiAgZmluZExlbW1hQnlSZWZlcmVuY2UocmVmZXJlbmNlKSB7XG4gICAgY29uc3QgbGVtbWFzID0gdGhpcy5nZXRMZW1tYXMoKSxcbiAgICAgICAgICBtZXRhdmFyaWFibGVOb2RlID0gcmVmZXJlbmNlLmdldE1ldGF2YXJpYWJsZU5vZGUoKSxcbiAgICAgICAgICBsZW1tYSA9IGxlbW1hcy5maW5kKChsZW1tYSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgbWV0YXZhcmlhYmxlTm9kZU1hdGNoZXMgPSBsZW1tYS5tYXRjaE1ldGF2YXJpYWJsZU5vZGUobWV0YXZhcmlhYmxlTm9kZSk7XG5cbiAgICAgICAgICAgIGlmIChtZXRhdmFyaWFibGVOb2RlTWF0Y2hlcykge1xuICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KSB8fCBudWxsO1xuXG4gICAgcmV0dXJuIGxlbW1hO1xuICB9XG5cbiAgZmluZFRoZW9yZW1CeVJlZmVyZW5jZShyZWZlcmVuY2UpIHtcbiAgICBjb25zdCB0aGVvcmVtcyA9IHRoaXMuZ2V0VGhlb3JlbXMoKSxcbiAgICAgICAgICBtZXRhdmFyaWFibGVOb2RlID0gcmVmZXJlbmNlLmdldE1ldGF2YXJpYWJsZU5vZGUoKSxcbiAgICAgICAgICB0aGVvcmVtID0gdGhlb3JlbXMuZmluZCgodGhlb3JlbSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgbWV0YXZhcmlhYmxlTm9kZU1hdGNoZXMgPSB0aGVvcmVtLm1hdGNoTWV0YXZhcmlhYmxlTm9kZShtZXRhdmFyaWFibGVOb2RlKTtcblxuICAgICAgICAgICAgaWYgKG1ldGF2YXJpYWJsZU5vZGVNYXRjaGVzKSB7XG4gICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pIHx8IG51bGw7XG5cbiAgICByZXR1cm4gdGhlb3JlbTtcbiAgfVxuXG4gIGZpbmRDb25qZWN0dXJlQnlSZWZlcmVuY2UocmVmZXJlbmNlKSB7XG4gICAgY29uc3QgY29uamVjdHVyZXMgPSB0aGlzLmdldENvbmplY3R1cmVzKCksXG4gICAgICAgICAgbWV0YXZhcmlhYmxlTm9kZSA9IHJlZmVyZW5jZS5nZXRNZXRhdmFyaWFibGVOb2RlKCksXG4gICAgICAgICAgY29uamVjdHVyZSA9IGNvbmplY3R1cmVzLmZpbmQoKGNvbmplY3R1cmUpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG1ldGF2YXJpYWJsZU5vZGVNYXRjaGVzID0gY29uamVjdHVyZS5tYXRjaE1ldGF2YXJpYWJsZU5vZGUobWV0YXZhcmlhYmxlTm9kZSk7XG5cbiAgICAgICAgICAgIGlmIChtZXRhdmFyaWFibGVOb2RlTWF0Y2hlcykge1xuICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KSB8fCBudWxsO1xuXG4gICAgcmV0dXJuIGNvbmplY3R1cmU7XG4gIH1cblxuICBmaW5kQ2xhaW1CeVJlZmVyZW5jZShyZWZlcmVuY2UpIHtcbiAgICBjb25zdCBjbGFpbXMgPSB0aGlzLmdldENsYWltcygpLFxuICAgICAgICAgIG1ldGF2YXJpYWJsZU5vZGUgPSByZWZlcmVuY2UuZ2V0TWV0YXZhcmlhYmxlTm9kZSgpLFxuICAgICAgICAgIGNsYWltID0gY2xhaW1zLmZpbmQoKGNsYWltKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBtZXRhdmFyaWFibGVOb2RlTWF0Y2hlcyA9IGNsYWltLm1hdGNoTWV0YXZhcmlhYmxlTm9kZShtZXRhdmFyaWFibGVOb2RlKTtcblxuICAgICAgICAgICAgaWYgKG1ldGF2YXJpYWJsZU5vZGVNYXRjaGVzKSB7XG4gICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pIHx8IG51bGw7XG5cbiAgICByZXR1cm4gY2xhaW07XG4gIH1cblxuICBmaW5kVHlwZUJ5VHlwZU5hbWUodHlwZU5hbWUsIGluY2x1ZGVSZWxlYXNlID0gdHJ1ZSkge1xuICAgIGNvbnN0IHR5cGVzID0gdGhpcy5nZXRUeXBlcyhpbmNsdWRlUmVsZWFzZSksXG4gICAgICAgICAgdHlwZSA9IGZpbmRUeXBlKHR5cGVzLCAodHlwZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgdHlwZUNvbXBhcmVzVG9UeXBlTmFtZSA9IHR5cGUuY29tcGFyZVR5cGVOYW1lKHR5cGVOYW1lKTtcblxuICAgICAgICAgICAgaWYgKHR5cGVDb21wYXJlc1RvVHlwZU5hbWUpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG5cbiAgICByZXR1cm4gdHlwZTtcbiAgfVxuXG4gIGZpbmRUeXBlQnlOb21pbmFsVHlwZU5hbWUobm9taW5hbFR5cGVOYW1lLCBpbmNsdWRlUmVsZWFzZSA9IHRydWUpIHtcbiAgICBjb25zdCB0eXBlcyA9IHRoaXMuZ2V0VHlwZXMoaW5jbHVkZVJlbGVhc2UpLFxuICAgICAgICAgIHR5cGUgPSBmaW5kVHlwZSh0eXBlcywgKHR5cGUpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHR5cGVDb21wYXJlc1RvTm9taW5hbFR5cGVOYW1lID0gdHlwZS5jb21wYXJlTm9taW5hbFR5cGVOYW1lKG5vbWluYWxUeXBlTmFtZSk7XG5cbiAgICAgICAgICAgIGlmICh0eXBlQ29tcGFyZXNUb05vbWluYWxUeXBlTmFtZSkge1xuICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcblxuICAgIHJldHVybiB0eXBlO1xuICB9XG5cbiAgZmluZFR5cGVCeVByZWZpeGVkVHlwZU5hbWUocHJlZml4ZWRUeXBlTmFtZSwgaW5jbHVkZVJlbGVhc2UgPSB0cnVlKSB7XG4gICAgY29uc3QgdHlwZXMgPSB0aGlzLmdldFR5cGVzKGluY2x1ZGVSZWxlYXNlKSxcbiAgICAgICAgICB0eXBlID0gZmluZFR5cGUodHlwZXMsICh0eXBlKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB0eXBlQ29tcGFyZXNUb1ByZWZpeGVkVHlwZU5hbWUgPSB0eXBlLmNvbXBhcmVQcmVmaXhlZFR5cGVOYW1lKHByZWZpeGVkVHlwZU5hbWUpO1xuXG4gICAgICAgICAgICBpZiAodHlwZUNvbXBhcmVzVG9QcmVmaXhlZFR5cGVOYW1lKSB7XG4gICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuXG4gICAgcmV0dXJuIHR5cGU7XG4gIH1cblxuICBmaW5kVHlwZVByZWZpeEJ5VHlwZVByZWZpeE5hbWUodHlwZVByZWZpeE5hbWUpIHtcbiAgICBjb25zdCB0eXBlUHJlZml4ZXMgPSB0aGlzLmdldFR5cGVQcmVmaXhlcygpLFxuICAgICAgICAgIHR5cGVQcmVmaXggPSB0eXBlUHJlZml4ZXMuZmluZCgodHlwZVByZWZpeCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgdHlwZVByZWZpeENvbXBhcmVzVG9UeXBlUHJlZml4TmFtZSA9IHR5cGVQcmVmaXguY29tcGFyZVR5cGVQcmVmaXhOYW1lKHR5cGVQcmVmaXhOYW1lKTtcblxuICAgICAgICAgICAgaWYgKHR5cGVQcmVmaXhDb21wYXJlc1RvVHlwZVByZWZpeE5hbWUpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSkgfHwgbnVsbDtcblxuICAgIHJldHVybiB0eXBlUHJlZml4O1xuICB9XG5cbiAgZmluZERlY2xhcmVkVmFyaWFibGVCeVZhcmlhYmxlSWRlbnRpZmllcihWYXJpYWJsZUlkZW50aXRpZmVyKSB7XG4gICAgY29uc3QgZGVjbGFyZWRWYXJpYWJsZXMgPSB0aGlzLmdldERlY2xhcmVkVmFyaWFibGVzKCksXG4gICAgICAgICAgZGVjbGFyZWRWYXJpYWJsZSA9IGRlY2xhcmVkVmFyaWFibGVzLmZpbmQoKGRlY2xhcmVkVmFyaWFibGUpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGRlY2xhcmVkVmFyaWFibGVDb21wYXJlc1RvVmFyaWFibGVJZGVudGl0aWZlciA9IGRlY2xhcmVkVmFyaWFibGUuY29tcGFyZVZhcmlhYmxlSWRlbnRpZmllcihWYXJpYWJsZUlkZW50aXRpZmVyKTtcblxuICAgICAgICAgICAgaWYgKGRlY2xhcmVkVmFyaWFibGVDb21wYXJlc1RvVmFyaWFibGVJZGVudGl0aWZlcikge1xuICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KSB8fCBudWxsO1xuXG4gICAgcmV0dXJuIGRlY2xhcmVkVmFyaWFibGU7XG4gIH1cblxuICBmaW5kRGVjbGFyZWRWYXJpYWJsZXNCeVZhcmlhYmxlSWRlbnRpZmllcih2YXJpYWJsZUlkZW50aWZpZXIpIHtcbiAgICBsZXQgZGVjbGFyZWRWYXJpYWJsZXM7XG5cbiAgICBkZWNsYXJlZFZhcmlhYmxlcyA9IHRoaXMuZ2V0RGVjbGFyZWRWYXJpYWJsZXMoKTtcblxuICAgIGRlY2xhcmVkVmFyaWFibGVzID0gZGVjbGFyZWRWYXJpYWJsZXMuZmlsdGVyKChkZWNsYXJlZFZhcmlhYmxlKSA9PiB7XG4gICAgICBjb25zdCB2YXJpYWJsZUNvbXBhcmVzVG9WYXJpYWJsZUlkZW50aWZpZXIgPSBkZWNsYXJlZFZhcmlhYmxlLmNvbXBhcmVWYXJpYWJsZUlkZW50aWZpZXIodmFyaWFibGVJZGVudGlmaWVyKTtcblxuICAgICAgaWYgKHZhcmlhYmxlQ29tcGFyZXNUb1ZhcmlhYmxlSWRlbnRpZmllcikge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBkZWNsYXJlZFZhcmlhYmxlcztcbiAgfVxuXG4gIGZpbmREZWNsYXJlZE1ldGF2YXJpYWJsZUJ5TWV0YXZhcmlhYmxlTmFtZShtZXRhdmFyaWFibGVOYW1lKSB7XG4gICAgY29uc3QgZGVjbGFyZWRNZXRhdmFyaWFibGVzID0gdGhpcy5nZXREZWNsYXJlZE1ldGF2YXJpYWJsZXMoKSxcbiAgICAgICAgICBkZWNsYXJlZE1ldGF2YXJpYWJsZSA9IGRlY2xhcmVkTWV0YXZhcmlhYmxlcy5maW5kKChkZWNsYXJlZE1ldGF2YXJpYWJsZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgZGVjbGFyZWRNZXRhdmFyaWFibGVDb21wYXJlc1RvTWV0YXZhcmlhYmxlTmFtZSA9IGRlY2xhcmVkTWV0YXZhcmlhYmxlLmNvbXBhcmVNZXRhdmFyaWFibGVOYW1lKG1ldGF2YXJpYWJsZU5hbWUpO1xuXG4gICAgICAgICAgICBpZiAoZGVjbGFyZWRNZXRhdmFyaWFibGVDb21wYXJlc1RvTWV0YXZhcmlhYmxlTmFtZSkge1xuICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KSB8fCBudWxsO1xuXG4gICAgcmV0dXJuIGRlY2xhcmVkTWV0YXZhcmlhYmxlO1xuICB9XG5cbiAgZmluZFByb2NlZHVyZUJ5UHJvY2VkdXJlTmFtZShwcm9jZWR1cmVOYW1lKSB7XG4gICAgY29uc3QgcHJvY2VkdXJlcyA9IHRoaXMuZ2V0UHJvY2VkdXJlcygpLFxuICAgICAgICAgIHByb2NlZHVyZSA9IHByb2NlZHVyZXMuZmluZCgocHJvY2VkdXJlKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBwcm9jZWR1cmVDb21wYXJlc1RvUHJvY2VkdXJlTmFtZSA9IHByb2NlZHVyZS5jb21wYXJlUHJvY2VkdXJlTmFtZShwcm9jZWR1cmVOYW1lKTtcblxuICAgICAgICAgICAgaWYgKHByb2NlZHVyZUNvbXBhcmVzVG9Qcm9jZWR1cmVOYW1lKSB7XG4gICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pIHx8IG51bGw7XG5cbiAgICByZXR1cm4gcHJvY2VkdXJlO1xuICB9XG5cbiAgZmluZE1ldGFUeXBlQnlNZXRhVHlwZU5hbWUobWV0YVR5cGVOYW1lKSB7IHJldHVybiBmaW5kTWV0YVR5cGVCeU1ldGFUeXBlTmFtZShtZXRhVHlwZU5hbWUpOyB9XG5cbiAgaXNMYWJlbFByZXNlbnRCeUxhYmVsTm9kZShsYWJlbE5vZGUpIHtcbiAgICBjb25zdCBsYWJlbHMgPSB0aGlzLmdldExhYmVscygpLFxuICAgICAgbGFiZWxQcmVzZW50ID0gbGFiZWxzLnNvbWUoKGxhYmVsKSA9PiB7XG4gICAgICAgIGNvbnN0IGxhYmVsTm9kZU1hdGNoZXMgPSBsYWJlbC5tYXRjaExhYmVsTm9kZShsYWJlbE5vZGUpO1xuXG4gICAgICAgIGlmIChsYWJlbE5vZGVNYXRjaGVzKSB7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgcmV0dXJuIGxhYmVsUHJlc2VudDtcbiAgfVxuXG4gIGlzVHlwZVByZXNlbnRCeVR5cGVOYW1lKHR5cGVOYW1lLCBpbmNsdWRlUmVsZWFzZSA9IHRydWUpIHtcbiAgICBjb25zdCB0eXBlID0gdGhpcy5maW5kVHlwZUJ5VHlwZU5hbWUodHlwZU5hbWUsIGluY2x1ZGVSZWxlYXNlKSxcbiAgICAgICAgICB0eXBlUHJlc2VudCA9ICh0eXBlICE9PSBudWxsKTtcblxuICAgIHJldHVybiB0eXBlUHJlc2VudDtcbiAgfVxuXG4gIGlzVHlwZVByZXNlbnRCeU5vbWluYWxUeXBlTmFtZShub21pbmFsVHlwZU5hbWUsIGluY2x1ZGVSZWxlYXNlID0gdHJ1ZSkge1xuICAgIGNvbnN0IHR5cGUgPSB0aGlzLmZpbmRUeXBlQnlOb21pbmFsVHlwZU5hbWUobm9taW5hbFR5cGVOYW1lLCBpbmNsdWRlUmVsZWFzZSksXG4gICAgICAgICAgdHlwZVByZXNlbnQgPSAodHlwZSAhPT0gbnVsbCk7XG5cbiAgICByZXR1cm4gdHlwZVByZXNlbnQ7XG4gIH1cblxuICBpc1R5cGVQcmVzZW50QnlQcmVmaXhlZFR5cGVOYW1lKHByZWZpeGVkVHlwZU5hbWUsIGluY2x1ZGVSZWxlYXNlID0gdHJ1ZSkge1xuICAgIGNvbnN0IHR5cGUgPSB0aGlzLmZpbmRUeXBlQnlQcmVmaXhlZFR5cGVOYW1lKHByZWZpeGVkVHlwZU5hbWUsIGluY2x1ZGVSZWxlYXNlKSxcbiAgICAgICAgICB0eXBlUHJlc2VudCA9ICh0eXBlICE9PSBudWxsKTtcblxuICAgIHJldHVybiB0eXBlUHJlc2VudDtcbiAgfVxuXG4gIGlzVHlwZVByZWZpeFByZXNlbnRCeVR5cGVQcmVmaXhOYW1lKHR5cGVQcmVmaXhOYW1lKSB7XG4gICAgY29uc3QgdHlwZVByZWZpeCA9IHRoaXMuZmluZFR5cGVQcmVmaXhCeVR5cGVQcmVmaXhOYW1lKHR5cGVQcmVmaXhOYW1lKSxcbiAgICAgICAgICB0eXBlUHJlZml4UHJlc2VudCA9ICh0eXBlUHJlZml4ICE9PSBudWxsKTtcblxuICAgIHJldHVybiB0eXBlUHJlZml4UHJlc2VudDtcbiAgfVxuXG4gIGlzRGVjbGFyZWRWYXJpYWJsZVByZXNlbnRCeVZhcmlhYmxlSWRlbnRpZmllcih2YXJpYWJsZUlkZW50aWZpZXIpIHtcbiAgICBjb25zdCBkZWNsYXJlZFZhcmlhYmxlID0gdGhpcy5maW5kRGVjbGFyZWRWYXJpYWJsZUJ5VmFyaWFibGVJZGVudGlmaWVyKHZhcmlhYmxlSWRlbnRpZmllciksXG4gICAgICAgICAgZGVjbGFyZWRWYXJpYWJsZVByZXNlbnQgPSAoZGVjbGFyZWRWYXJpYWJsZSAhPT0gbnVsbCk7XG5cbiAgICByZXR1cm4gZGVjbGFyZWRWYXJpYWJsZVByZXNlbnQ7XG4gIH1cblxuICBpc0RlY2xhcmVkTWV0YXZhcmlhYmxlUHJlc2VudEJ5TWV0YXZhcmlhYmxlTmFtZShtZXRhdmFyaWFibGVOYW1lKSB7XG4gICAgY29uc3QgZGVjbGFyZWRNZXRhdmFyaWFibGUgPSB0aGlzLmZpbmREZWNsYXJlZE1ldGF2YXJpYWJsZUJ5TWV0YXZhcmlhYmxlTmFtZShtZXRhdmFyaWFibGVOYW1lKSxcbiAgICAgICAgICBkZWNsYXJlZE1ldGF2YXJpYWJsZVByZXNlbnQgPSAoZGVjbGFyZWRNZXRhdmFyaWFibGUgIT09IG51bGwpO1xuXG4gICAgcmV0dXJuIGRlY2xhcmVkTWV0YXZhcmlhYmxlUHJlc2VudDtcbiAgfVxuXG4gIGlzUHJvY2VkdXJlUHJlc2VudEJ5UHJvY2VkdXJlTmFtZShwcm9jZWR1cmVOYW1lKSB7XG4gICAgY29uc3QgcHJvY2VkdXJlID0gdGhpcy5maW5kUHJvY2VkdXJlQnlQcm9jZWR1cmVOYW1lKHByb2NlZHVyZU5hbWUpLFxuICAgICAgICAgIHByb2NlZHVyZVByZXNlbnQgPSAocHJvY2VkdXJlICE9PSBudWxsKTtcblxuICAgIHJldHVybiBwcm9jZWR1cmVQcmVzZW50O1xuICB9XG5cbiAgaXNNZXRhTGV2ZWwoKSB7XG4gICAgY29uc3QgbWV0YUxFdmVsID0gZmFsc2U7XG5cbiAgICByZXR1cm4gbWV0YUxFdmVsO1xuICB9XG5cbiAgY2xlYXIoKSB7XG4gICAgdGhpcy50eXBlcyA9IFtdO1xuICAgIHRoaXMucnVsZXMgPSBbXTtcbiAgICB0aGlzLmF4aW9tcyA9IFtdO1xuICAgIHRoaXMubGVtbWFzID0gW107XG4gICAgdGhpcy5zY2hlbWFzID0gW107XG4gICAgdGhpcy50aGVvcmVtcyA9IFtdO1xuICAgIHRoaXMuZ2VuZXJhdG9ycyA9IFtdO1xuICAgIHRoaXMuY29uamVjdHVyZXMgPSBbXTtcbiAgICB0aGlzLmNvbWJpbmF0b3JzID0gW107XG4gICAgdGhpcy50eXBlUHJlZml4ZXMgPSBbXTtcbiAgICB0aGlzLmNvbnN0cnVjdG9ycyA9IFtdO1xuICAgIHRoaXMuZGVjbGFyZWRWYXJpYWJsZXMgPSBbXTtcbiAgICB0aGlzLmRlY2xhcmVkTWV0YXZhcmlhYmxlcyA9IFtdO1xuICB9XG5cbiAgY29tcGxldGUoKSB7XG4gICAgLy8vXG4gIH1cblxuICB2ZXJpZnlGaWxlKGZvcndhcmQsIGJhY2spIHtcbiAgICByZXR1cm4gaXNvbGF0ZSgoZm9yd2FyZCwgYmFjaykgPT4ge1xuICAgICAgY29uc3Qgbm9kZSA9IHRoaXMuZ2V0Tm9kZSgpLFxuICAgICAgICAgICAgY29udGV4dCA9IHRoaXMsIC8vL1xuICAgICAgICAgICAgZmlsZU5vZGUgPSBub2RlOyAgLy8vXG5cbiAgICAgIHJldHVybiB2ZXJpZnlGaWxlKGZpbGVOb2RlLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKTtcbiAgICB9LCBmb3J3YXJkLCBiYWNrKTtcbiAgfVxuXG4gIGluaXRpYWxpc2UoKSB7XG4gICAgY29uc3QganNvbiA9IHRoaXMuZ2V0SlNPTigpO1xuXG4gICAgaWYgKGpzb24gPT09IG51bGwpIHtcbiAgICAgIHN1cGVyLmluaXRpYWxpc2UoKTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGZpbGVDb250ZXh0ID0gdGhpczsgLy8vXG5cbiAgICB0aGlzLnR5cGVzID0gW107XG5cbiAgICB0eXBlc0Zyb21KU09OKGpzb24sIHRoaXMudHlwZXMsIGZpbGVDb250ZXh0KTtcblxuICAgIHRoaXMubGVtbWFzID0gW107XG5cbiAgICB0aGlzLmRlY2xhcmVkTWV0YXZhcmlhYmxlcyA9IGRlY2xhcmVkTWV0YXZhcmlhYmxlc0Zyb21KU09OKGpzb24sIGZpbGVDb250ZXh0KTtcbiAgICB0aGlzLmRlY2xhcmVkVmFyaWFibGVzID0gZGVjbGFyZWRWYXJpYWJsZXNGcm9tSlNPTihqc29uLCBmaWxlQ29udGV4dCk7XG4gICAgdGhpcy50eXBlUHJlZml4ZXMgPSB0eXBlUHJlZml4ZXNGcm9tSlNPTihqc29uLCBmaWxlQ29udGV4dCk7XG4gICAgdGhpcy5nZW5lcmF0b3JzID0gZ2VuZXJhdG9yc0Zyb21KU09OKGpzb24sIGZpbGVDb250ZXh0KTtcbiAgICB0aGlzLmNvbWJpbmF0b3JzID0gY29tYmluYXRvcnNGcm9tSlNPTihqc29uLCBmaWxlQ29udGV4dCk7XG4gICAgdGhpcy5jb25zdHJ1Y3RvcnMgPSBjb25zdHJ1Y3RvcnNGcm9tSlNPTihqc29uLCBmaWxlQ29udGV4dCk7XG5cbiAgICB0aGlzLnJ1bGVzID0gcnVsZXNGcm9tSlNPTihqc29uLCBmaWxlQ29udGV4dCk7XG4gICAgdGhpcy5heGlvbXMgPSBheGlvbXNGcm9tSlNPTihqc29uLCBmaWxlQ29udGV4dCk7XG4gICAgdGhpcy5zY2hlbWFzID0gc2NoZW1hc0Zyb21KU09OKGpzb24sIGZpbGVDb250ZXh0KTtcbiAgICB0aGlzLnRoZW9yZW1zID0gdGhlb3JlbXNGcm9tSlNPTihqc29uLCBmaWxlQ29udGV4dCk7XG4gICAgdGhpcy5jb25qZWN0dXJlcyA9IGNvbmplY3R1cmVzRnJvbUpTT04oanNvbiwgZmlsZUNvbnRleHQpO1xuICB9XG5cbiAgdG9KU09OKCkge1xuICAgIGNvbnN0IHR5cGVzSlNPTiA9IHR5cGVzVG9UeXBlc0pTT04odGhpcy50eXBlcyksXG4gICAgICAgICAgcnVsZXNKU09OID0gcnVsZXNUb1J1bGVzSlNPTih0aGlzLnJ1bGVzKSxcbiAgICAgICAgICBheGlvbXNKU09OID0gYXhpb21zVG9BeGlvbXNKU09OKHRoaXMuYXhpb21zKSxcbiAgICAgICAgICBzY2hlbWFzSlNPTiA9IHNjaGVtYXNUb1NjaGVtYXNKU09OKHRoaXMuc2NoZW1hcyksXG4gICAgICAgICAgdGhlb3JlbXNKU09OID0gdGhlb3JlbXNUb1RoZW9yZW1zSlNPTih0aGlzLnRoZW9yZW1zKSxcbiAgICAgICAgICBnZW5lcmF0b3JzSlNPTiA9IGdlbmVyYXRvcnNUb0dlbmVyYXRvcnNKU09OKHRoaXMuZ2VuZXJhdG9ycyksXG4gICAgICAgICAgY29uamVjdHVyZXNKU09OID0gY29uamVjdHVyZXNUb0NvbmplY3R1cmVzSlNPTih0aGlzLmNvbmplY3R1cmVzKSxcbiAgICAgICAgICBjb21iaW5hdG9yc0pTT04gPSBjb21iaW5hdG9yc1RvQ29tYmluYXRvcnNKU09OKHRoaXMuY29tYmluYXRvcnMpLFxuICAgICAgICAgIHR5cGVQcmVmaXhlc0pTT04gPSB0eXBlUHJlZml4ZXNUb1R5cGVQcmVmaXhlc0pTT04odGhpcy50eXBlUHJlZml4ZXMpLFxuICAgICAgICAgIGNvbnN0cnVjdG9yc0pTT04gPSBjb25zdHJ1Y3RvcnNUb0NvbnN0cnVjdG9yc0pTT04odGhpcy5jb25zdHJ1Y3RvcnMpLFxuICAgICAgICAgIGRlY2xhcmVkVmFyaWFibGVzSlNPTiA9IGRlY2xhcmVkVmFyaWFibGVzVG9EZWNsYXJlZFZhcmlhYmxlc0pTT04odGhpcy5kZWNsYXJlZFZhcmlhYmxlcyksXG4gICAgICAgICAgZGVjbGFyZWRNZXRhdmFyaWFibGVzSlNPTiA9IGRlY2xhcmVkTWV0YXZhcmlhYmxlc1RvRGVjbGFyZWRNZXRhdmFyaWFibGVzSlNPTih0aGlzLmRlY2xhcmVkTWV0YXZhcmlhYmxlcyksXG4gICAgICAgICAgZmlsZUNvbnRlbnQgPSB0aGlzLmdldEZpbGVDb250ZW50KCksXG4gICAgICAgICAgZmlsZVBhdGggPSB0aGlzLmdldEZpbGVQYXRoKCksXG4gICAgICAgICAgdHlwZXMgPSB0eXBlc0pTT04sICAvLy9cbiAgICAgICAgICBydWxlcyA9IHJ1bGVzSlNPTiwgIC8vL1xuICAgICAgICAgIGF4aW9tcyA9IGF4aW9tc0pTT04sICAvLy9cbiAgICAgICAgICBzY2hlbWFzID0gc2NoZW1hc0pTT04sICAvLy9cbiAgICAgICAgICB0aGVvcmVtcyA9IHRoZW9yZW1zSlNPTiwgIC8vL1xuICAgICAgICAgIGdlbmVyYXRvcnMgPSBnZW5lcmF0b3JzSlNPTiwgIC8vL1xuICAgICAgICAgIGNvbmplY3R1cmVzID0gY29uamVjdHVyZXNKU09OLCAgLy8vXG4gICAgICAgICAgY29tYmluYXRvcnMgPSBjb21iaW5hdG9yc0pTT04sICAvLy9cbiAgICAgICAgICB0eXBlUHJlZml4ZXMgPSB0eXBlUHJlZml4ZXNKU09OLCAgLy8vXG4gICAgICAgICAgY29uc3RydWN0b3JzID0gY29uc3RydWN0b3JzSlNPTiwgIC8vL1xuICAgICAgICAgIGRlY2xhcmVkVmFyaWFibGVzID0gZGVjbGFyZWRWYXJpYWJsZXNKU09OLCAgLy8vXG4gICAgICAgICAgZGVjbGFyZWRNZXRhdmFyaWFibGVzID0gZGVjbGFyZWRNZXRhdmFyaWFibGVzSlNPTiwgIC8vL1xuICAgICAgICAgIGpzb24gPSB7XG4gICAgICAgICAgICBmaWxlQ29udGVudCxcbiAgICAgICAgICAgIGZpbGVQYXRoLFxuICAgICAgICAgICAgdHlwZXMsXG4gICAgICAgICAgICBydWxlcyxcbiAgICAgICAgICAgIGF4aW9tcyxcbiAgICAgICAgICAgIHNjaGVtYXMsXG4gICAgICAgICAgICB0aGVvcmVtcyxcbiAgICAgICAgICAgIGdlbmVyYXRvcnMsXG4gICAgICAgICAgICBjb25qZWN0dXJlcyxcbiAgICAgICAgICAgIGNvbWJpbmF0b3JzLFxuICAgICAgICAgICAgdHlwZVByZWZpeGVzLFxuICAgICAgICAgICAgY29uc3RydWN0b3JzLFxuICAgICAgICAgICAgZGVjbGFyZWRWYXJpYWJsZXMsXG4gICAgICAgICAgICBkZWNsYXJlZE1ldGF2YXJpYWJsZXNcbiAgICAgICAgICB9O1xuXG4gICAgcmV0dXJuIGpzb247XG4gIH1cblxuICBzdGF0aWMgZnJvbUZpbGUoZmlsZSwgY29udGV4dCkge1xuICAgIGNvbnN0IHJlbGVhc2VDb250ZXh0ID0gY29udGV4dCwgLy8vXG4gICAgICAgICAgY29tYmluZWRDdXN0b21HcmFtbWFyID0gcmVsZWFzZUNvbnRleHQuZ2V0Q29tYmluZWRDdXN0b21HcmFtbWFyKCksXG4gICAgICAgICAgbm9taW5hbExleGVyID0gbm9taW5hbExleGVyRnJvbUNvbWJpbmVkQ3VzdG9tR3JhbW1hcihOb21pbmFsTGV4ZXIsIGNvbWJpbmVkQ3VzdG9tR3JhbW1hciksXG4gICAgICAgICAgbm9taW5hbFBhcnNlciA9IG5vbWluYWxQYXJzZXJGcm9tQ29tYmluZWRDdXN0b21HcmFtbWFyKE5vbWluYWxQYXJzZXIsIGNvbWJpbmVkQ3VzdG9tR3JhbW1hciksXG4gICAgICAgICAgbGV4ZXIgPSBub21pbmFsTGV4ZXIsIC8vL1xuICAgICAgICAgIHBhcnNlciA9IG5vbWluYWxQYXJzZXIsIC8vL1xuICAgICAgICAgIHR5cGVzID0gW10sXG4gICAgICAgICAgcnVsZXMgPSBbXSxcbiAgICAgICAgICBheGlvbXMgPSBbXSxcbiAgICAgICAgICBsZW1tYXMgPSBbXSxcbiAgICAgICAgICBzY2hlbWFzID0gW10sXG4gICAgICAgICAgdGhlb3JlbXMgPSBbXSxcbiAgICAgICAgICBnZW5lcmF0b3JzID0gW10sXG4gICAgICAgICAgY29uamVjdHVyZXMgPSBbXSxcbiAgICAgICAgICBjb21iaW5hdG9ycyA9IFtdLFxuICAgICAgICAgIHR5cGVQcmVmaXhlcyA9IFtdLFxuICAgICAgICAgIGNvbnN0cnVjdG9ycyA9IFtdLFxuICAgICAgICAgIGRlY2xhcmVkVmFyaWFibGVzID0gW10sXG4gICAgICAgICAgZGVjbGFyZWRNZXRhdmFyaWFibGVzID0gW10sXG4gICAgICAgICAgbm9taW5hbEZpbGVDb250ZXh0ID0gRmlsZUNvbnRleHQuZnJvbUZpbGUoTm9taW5hbEZpbGVDb250ZXh0LCBmaWxlLCBsZXhlciwgcGFyc2VyLCB0eXBlcywgcnVsZXMsIGF4aW9tcywgbGVtbWFzLCBzY2hlbWFzLCB0aGVvcmVtcywgZ2VuZXJhdG9ycywgY29uamVjdHVyZXMsIGNvbWJpbmF0b3JzLCB0eXBlUHJlZml4ZXMsIGNvbnN0cnVjdG9ycywgZGVjbGFyZWRWYXJpYWJsZXMsIGRlY2xhcmVkTWV0YXZhcmlhYmxlcywgY29udGV4dCk7XG5cbiAgICByZXR1cm4gbm9taW5hbEZpbGVDb250ZXh0O1xuICB9XG5cbiAgc3RhdGljIGZyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgICBjb25zdCByZWxlYXNlQ29udGV4dCA9IGNvbnRleHQsIC8vL1xuICAgICAgICAgIGNvbWJpbmVkQ3VzdG9tR3JhbW1hciA9IHJlbGVhc2VDb250ZXh0LmdldENvbWJpbmVkQ3VzdG9tR3JhbW1hcigpLFxuICAgICAgICAgIG5vbWluYWxMZXhlciA9IG5vbWluYWxMZXhlckZyb21Db21iaW5lZEN1c3RvbUdyYW1tYXIoTm9taW5hbExleGVyLCBjb21iaW5lZEN1c3RvbUdyYW1tYXIpLFxuICAgICAgICAgIG5vbWluYWxQYXJzZXIgPSBub21pbmFsUGFyc2VyRnJvbUNvbWJpbmVkQ3VzdG9tR3JhbW1hcihOb21pbmFsUGFyc2VyLCBjb21iaW5lZEN1c3RvbUdyYW1tYXIpLFxuICAgICAgICAgIGxleGVyID0gbm9taW5hbExleGVyLCAvLy9cbiAgICAgICAgICBwYXJzZXIgPSBub21pbmFsUGFyc2VyLCAvLy9cbiAgICAgICAgICB0eXBlcyA9IG51bGwsXG4gICAgICAgICAgcnVsZXMgPSBudWxsLFxuICAgICAgICAgIGF4aW9tcyA9IG51bGwsXG4gICAgICAgICAgbGVtbWFzID0gbnVsbCxcbiAgICAgICAgICBzY2hlbWFzID0gbnVsbCxcbiAgICAgICAgICB0aGVvcmVtcyA9IG51bGwsXG4gICAgICAgICAgZ2VuZXJhdG9ycyA9IG51bGwsXG4gICAgICAgICAgY29uamVjdHVyZXMgPSBudWxsLFxuICAgICAgICAgIGNvbWJpbmF0b3JzID0gbnVsbCxcbiAgICAgICAgICB0eXBlUHJlZml4ZXMgPSBudWxsLFxuICAgICAgICAgIGNvbnN0cnVjdG9ycyA9IG51bGwsXG4gICAgICAgICAgZGVjbGFyZWRWYXJpYWJsZXMgPSBudWxsLFxuICAgICAgICAgIGRlY2xhcmVkTWV0YXZhcmlhYmxlcyA9IG51bGwsXG4gICAgICAgICAgbm9taW5hbEZpbGVDb250ZXh0ID0gRmlsZUNvbnRleHQuZnJvbUpTT04oTm9taW5hbEZpbGVDb250ZXh0LCBqc29uLCBsZXhlciwgcGFyc2VyLCB0eXBlcywgcnVsZXMsIGF4aW9tcywgbGVtbWFzLCBzY2hlbWFzLCB0aGVvcmVtcywgZ2VuZXJhdG9ycywgY29uamVjdHVyZXMsIGNvbWJpbmF0b3JzLCB0eXBlUHJlZml4ZXMsIGNvbnN0cnVjdG9ycywgZGVjbGFyZWRWYXJpYWJsZXMsIGRlY2xhcmVkTWV0YXZhcmlhYmxlcywgY29udGV4dCk7XG5cbiAgICByZXR1cm4gbm9taW5hbEZpbGVDb250ZXh0O1xuICB9XG59XG4iXSwibmFtZXMiOlsiTm9taW5hbEZpbGVDb250ZXh0IiwicHVzaCIsImFycmF5VXRpbGl0aWVzIiwiaXNvbGF0ZSIsImNvbnRpbnVhdGlvblV0aWxpdGllcyIsIm5vbWluYWxMZXhlckZyb21Db21iaW5lZEN1c3RvbUdyYW1tYXIiLCJub21pbmFsUGFyc2VyRnJvbUNvbWJpbmVkQ3VzdG9tR3JhbW1hciIsIm5vbWluYWxVdGlsaXRpZXMiLCJGaWxlQ29udGV4dCIsImNvbnRleHQiLCJmaWxlQ29udGVudCIsImZpbGVQYXRoIiwidG9rZW5zIiwibm9kZSIsImpzb24iLCJsZXhlciIsInBhcnNlciIsInR5cGVzIiwicnVsZXMiLCJheGlvbXMiLCJsZW1tYXMiLCJzY2hlbWFzIiwidGhlb3JlbXMiLCJnZW5lcmF0b3JzIiwiY29uamVjdHVyZXMiLCJjb21iaW5hdG9ycyIsInR5cGVQcmVmaXhlcyIsImNvbnN0cnVjdG9ycyIsImRlY2xhcmVkVmFyaWFibGVzIiwiZGVjbGFyZWRNZXRhdmFyaWFibGVzIiwiZ2V0TGV4ZXIiLCJnZXRQYXJzZXIiLCJnZXRMYWJlbHMiLCJpbmNsdWRlUmVsZWFzZSIsImxhYmVscyIsInJlbGVhc2VDb250ZXh0TGFiZWxzIiwiZm9yRWFjaCIsInJ1bGUiLCJydWxlTGFiZWxzIiwiYXhpb20iLCJheGlvbUxhYmVscyIsImxlbW1hIiwibGVtbWFMYWJlbHMiLCJ0aGVvcmVtIiwidGhlb3JlbUxhYmVscyIsImNvbmplY3R1cmUiLCJjb25qZWN0dXJlTGFiZWxzIiwic2NoZW1hIiwic2NoZW1hTGFiZWwiLCJnZXRMYWJlbCIsImdldFR5cGVzIiwiZ2V0UnVsZXMiLCJnZXRBeGlvbXMiLCJnZXRMZW1tYXMiLCJnZXRTY2hlbWFzIiwiZ2V0VGhlb3JlbXMiLCJnZXRHZW5lcmF0b3JzIiwiZ2V0Q29uamVjdHVyZXMiLCJnZXRDb21iaW5hdG9ycyIsImdldFR5cGVQcmVmaXhlcyIsImdldENvbnN0cnVjdG9ycyIsImdldFByb2NlZHVyZXMiLCJwcm9jZWR1cmVzIiwiZ2V0Q2xhaW1zIiwiY2xhaW1zIiwiZ2V0RGVjbGFyZWRWYXJpYWJsZXMiLCJnZXREZWNsYXJlZE1ldGF2YXJpYWJsZXMiLCJnZXRUZXJtcyIsInRlcm1zIiwiZ2V0RnJhbWVzIiwiZnJhbWVzIiwiZ2V0RXF1YWxpdGllcyIsImVxdWFsaXRpZXMiLCJnZXRBc3NlcnRpb25zIiwiYXNzZXJ0aW9ucyIsImdldFN0YXRlbWVudHMiLCJzdGF0ZW1lbnRzIiwiZ2V0U2lnbmF0dXJlcyIsInNpZ25hdHVyZXMiLCJnZXRSZWZlcmVuY2VzIiwicmVmZXJlbmNlcyIsImdldEFzc3VtcHRpb25zIiwiYXNzdW1wdGlvbnMiLCJnZXRNZXRhdmFyaWFibGVzIiwibWV0YXZhcmlhYmxlcyIsImdldFN1YnN0aXR1dGlvbnMiLCJzdWJzdGl0dXRpb25zIiwiZ2V0SW5mZXJyZWRTdWJzdGl0dXRpb25zIiwiaW5mZXJyZWRTdWJzdGl0dXRpb25zIiwiZ2V0RXF1aXZhbGVuY2VzIiwiZXF1aXZhbGVuY2VzIiwiZ2V0RmFjdE9yU3VicHJvb2ZzIiwiZmFjdE9yU3VicHJvb2ZzIiwiYWRkVHlwZSIsInR5cGUiLCJnZXRGaWxlUGF0aCIsInR5cGVTdHJpbmciLCJnZXRTdHJpbmciLCJ0cmFjZSIsImFkZFJ1bGUiLCJydWxlU3RyaW5nIiwiYWRkQXhpb20iLCJheGlvbVN0cmluZyIsImFkZExlbW1hIiwibGVtbWFTdHJpbmciLCJhZGRTY2hlbWEiLCJzY2hlbWFTdHJpbmciLCJhZGRUaGVvcmVtIiwidGhlb3JlbVN0cmluZyIsImFkZEdlbmVyYXRvciIsImdlbmVyYXRvciIsImdlbmVyYXRvclN0cmluZyIsImFkZENvbmplY3R1cmUiLCJvY25qZWN0dXJlU3RyaW5nIiwiYWRkQ29tYmluYXRvciIsImNvbWJpbmF0b3IiLCJjb21iaW5hdG9yU3RyaW5nIiwiYWRkVHlwZVByZWZpeCIsInR5cGVQcmVmaXgiLCJ0eXBlUHJlZml4U3RyaW5nIiwiYWRkQ29uc3RydWN0b3IiLCJjb25zdHJ1Y3RvciIsImNvbnN0cnVjdG9yU3RyaW5nIiwiYWRkRGVjbGFyZWRWYXJpYWJsZSIsImRlY2xhcmVkVmFyaWFibGUiLCJkZWNsYXJlZFZhcmlhYmxlU3RyaW5nIiwiYWRkRGVjbGFyZWRNZXRhdmFyaWFibGUiLCJkZWNsYXJlZE1ldGF2YXJpYWJsZSIsImRlY2xhcmVkTWV0YXZhcmlhYmxlU3RyaW5nIiwiZmluZE1ldGF2YXJpYWJsZSIsIm1ldGF2YXJpYWJsZSIsImZpbmQiLCJtZXRhdmFyaWFibGVVbmlmaWVzIiwidW5pZnlNZXRhdmFyaWFibGUiLCJmaW5kUnVsZUJ5UmVmZXJlbmNlIiwicmVmZXJlbmNlIiwibWV0YXZhcmlhYmxlTm9kZSIsImdldE1ldGF2YXJpYWJsZU5vZGUiLCJtZXRhdmFyaWFibGVOb2RlTWF0Y2hlcyIsIm1hdGNoTWV0YXZhcmlhYmxlTm9kZSIsImZpbmRBeGlvbUJ5UmVmZXJlbmNlIiwiZmluZExlbW1hQnlSZWZlcmVuY2UiLCJmaW5kVGhlb3JlbUJ5UmVmZXJlbmNlIiwiZmluZENvbmplY3R1cmVCeVJlZmVyZW5jZSIsImZpbmRDbGFpbUJ5UmVmZXJlbmNlIiwiY2xhaW0iLCJmaW5kVHlwZUJ5VHlwZU5hbWUiLCJ0eXBlTmFtZSIsImZpbmRUeXBlIiwidHlwZUNvbXBhcmVzVG9UeXBlTmFtZSIsImNvbXBhcmVUeXBlTmFtZSIsImZpbmRUeXBlQnlOb21pbmFsVHlwZU5hbWUiLCJub21pbmFsVHlwZU5hbWUiLCJ0eXBlQ29tcGFyZXNUb05vbWluYWxUeXBlTmFtZSIsImNvbXBhcmVOb21pbmFsVHlwZU5hbWUiLCJmaW5kVHlwZUJ5UHJlZml4ZWRUeXBlTmFtZSIsInByZWZpeGVkVHlwZU5hbWUiLCJ0eXBlQ29tcGFyZXNUb1ByZWZpeGVkVHlwZU5hbWUiLCJjb21wYXJlUHJlZml4ZWRUeXBlTmFtZSIsImZpbmRUeXBlUHJlZml4QnlUeXBlUHJlZml4TmFtZSIsInR5cGVQcmVmaXhOYW1lIiwidHlwZVByZWZpeENvbXBhcmVzVG9UeXBlUHJlZml4TmFtZSIsImNvbXBhcmVUeXBlUHJlZml4TmFtZSIsImZpbmREZWNsYXJlZFZhcmlhYmxlQnlWYXJpYWJsZUlkZW50aWZpZXIiLCJWYXJpYWJsZUlkZW50aXRpZmVyIiwiZGVjbGFyZWRWYXJpYWJsZUNvbXBhcmVzVG9WYXJpYWJsZUlkZW50aXRpZmVyIiwiY29tcGFyZVZhcmlhYmxlSWRlbnRpZmllciIsImZpbmREZWNsYXJlZFZhcmlhYmxlc0J5VmFyaWFibGVJZGVudGlmaWVyIiwidmFyaWFibGVJZGVudGlmaWVyIiwiZmlsdGVyIiwidmFyaWFibGVDb21wYXJlc1RvVmFyaWFibGVJZGVudGlmaWVyIiwiZmluZERlY2xhcmVkTWV0YXZhcmlhYmxlQnlNZXRhdmFyaWFibGVOYW1lIiwibWV0YXZhcmlhYmxlTmFtZSIsImRlY2xhcmVkTWV0YXZhcmlhYmxlQ29tcGFyZXNUb01ldGF2YXJpYWJsZU5hbWUiLCJjb21wYXJlTWV0YXZhcmlhYmxlTmFtZSIsImZpbmRQcm9jZWR1cmVCeVByb2NlZHVyZU5hbWUiLCJwcm9jZWR1cmVOYW1lIiwicHJvY2VkdXJlIiwicHJvY2VkdXJlQ29tcGFyZXNUb1Byb2NlZHVyZU5hbWUiLCJjb21wYXJlUHJvY2VkdXJlTmFtZSIsImZpbmRNZXRhVHlwZUJ5TWV0YVR5cGVOYW1lIiwibWV0YVR5cGVOYW1lIiwiaXNMYWJlbFByZXNlbnRCeUxhYmVsTm9kZSIsImxhYmVsTm9kZSIsImxhYmVsUHJlc2VudCIsInNvbWUiLCJsYWJlbCIsImxhYmVsTm9kZU1hdGNoZXMiLCJtYXRjaExhYmVsTm9kZSIsImlzVHlwZVByZXNlbnRCeVR5cGVOYW1lIiwidHlwZVByZXNlbnQiLCJpc1R5cGVQcmVzZW50QnlOb21pbmFsVHlwZU5hbWUiLCJpc1R5cGVQcmVzZW50QnlQcmVmaXhlZFR5cGVOYW1lIiwiaXNUeXBlUHJlZml4UHJlc2VudEJ5VHlwZVByZWZpeE5hbWUiLCJ0eXBlUHJlZml4UHJlc2VudCIsImlzRGVjbGFyZWRWYXJpYWJsZVByZXNlbnRCeVZhcmlhYmxlSWRlbnRpZmllciIsImRlY2xhcmVkVmFyaWFibGVQcmVzZW50IiwiaXNEZWNsYXJlZE1ldGF2YXJpYWJsZVByZXNlbnRCeU1ldGF2YXJpYWJsZU5hbWUiLCJkZWNsYXJlZE1ldGF2YXJpYWJsZVByZXNlbnQiLCJpc1Byb2NlZHVyZVByZXNlbnRCeVByb2NlZHVyZU5hbWUiLCJwcm9jZWR1cmVQcmVzZW50IiwiaXNNZXRhTGV2ZWwiLCJtZXRhTEV2ZWwiLCJjbGVhciIsImNvbXBsZXRlIiwidmVyaWZ5RmlsZSIsImZvcndhcmQiLCJiYWNrIiwiZ2V0Tm9kZSIsImZpbGVOb2RlIiwiaW5pdGlhbGlzZSIsImdldEpTT04iLCJmaWxlQ29udGV4dCIsInR5cGVzRnJvbUpTT04iLCJkZWNsYXJlZE1ldGF2YXJpYWJsZXNGcm9tSlNPTiIsImRlY2xhcmVkVmFyaWFibGVzRnJvbUpTT04iLCJ0eXBlUHJlZml4ZXNGcm9tSlNPTiIsImdlbmVyYXRvcnNGcm9tSlNPTiIsImNvbWJpbmF0b3JzRnJvbUpTT04iLCJjb25zdHJ1Y3RvcnNGcm9tSlNPTiIsInJ1bGVzRnJvbUpTT04iLCJheGlvbXNGcm9tSlNPTiIsInNjaGVtYXNGcm9tSlNPTiIsInRoZW9yZW1zRnJvbUpTT04iLCJjb25qZWN0dXJlc0Zyb21KU09OIiwidG9KU09OIiwidHlwZXNKU09OIiwidHlwZXNUb1R5cGVzSlNPTiIsInJ1bGVzSlNPTiIsInJ1bGVzVG9SdWxlc0pTT04iLCJheGlvbXNKU09OIiwiYXhpb21zVG9BeGlvbXNKU09OIiwic2NoZW1hc0pTT04iLCJzY2hlbWFzVG9TY2hlbWFzSlNPTiIsInRoZW9yZW1zSlNPTiIsInRoZW9yZW1zVG9UaGVvcmVtc0pTT04iLCJnZW5lcmF0b3JzSlNPTiIsImdlbmVyYXRvcnNUb0dlbmVyYXRvcnNKU09OIiwiY29uamVjdHVyZXNKU09OIiwiY29uamVjdHVyZXNUb0NvbmplY3R1cmVzSlNPTiIsImNvbWJpbmF0b3JzSlNPTiIsImNvbWJpbmF0b3JzVG9Db21iaW5hdG9yc0pTT04iLCJ0eXBlUHJlZml4ZXNKU09OIiwidHlwZVByZWZpeGVzVG9UeXBlUHJlZml4ZXNKU09OIiwiY29uc3RydWN0b3JzSlNPTiIsImNvbnN0cnVjdG9yc1RvQ29uc3RydWN0b3JzSlNPTiIsImRlY2xhcmVkVmFyaWFibGVzSlNPTiIsImRlY2xhcmVkVmFyaWFibGVzVG9EZWNsYXJlZFZhcmlhYmxlc0pTT04iLCJkZWNsYXJlZE1ldGF2YXJpYWJsZXNKU09OIiwiZGVjbGFyZWRNZXRhdmFyaWFibGVzVG9EZWNsYXJlZE1ldGF2YXJpYWJsZXNKU09OIiwiZ2V0RmlsZUNvbnRlbnQiLCJmcm9tRmlsZSIsImZpbGUiLCJyZWxlYXNlQ29udGV4dCIsImNvbWJpbmVkQ3VzdG9tR3JhbW1hciIsImdldENvbWJpbmVkQ3VzdG9tR3JhbW1hciIsIm5vbWluYWxMZXhlciIsIk5vbWluYWxMZXhlciIsIm5vbWluYWxQYXJzZXIiLCJOb21pbmFsUGFyc2VyIiwibm9taW5hbEZpbGVDb250ZXh0IiwiZnJvbUpTT04iXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQXdDQTs7O2VBQXFCQTs7OzJCQXRDVTtnQ0FDc0M7OERBRTVDOytEQUNDO3NCQUVGO3dCQUNHOzJCQUNnQjtzQkF3QnNCOzs7Ozs7QUFFakUsTUFBTSxFQUFFQyxJQUFJLEVBQUUsR0FBR0MseUJBQWMsRUFDekIsRUFBRUMsT0FBTyxFQUFFLEdBQUdDLHFDQUFxQixFQUNuQyxFQUFFQyxxQ0FBcUMsRUFBRUMsc0NBQXNDLEVBQUUsR0FBR0MsZ0NBQWdCO0FBRTNGLE1BQU1QLDJCQUEyQlEsMkJBQVc7SUFDekQsWUFBWUMsT0FBTyxFQUFFQyxXQUFXLEVBQUVDLFFBQVEsRUFBRUMsTUFBTSxFQUFFQyxJQUFJLEVBQUVDLElBQUksRUFBRUMsS0FBSyxFQUFFQyxNQUFNLEVBQUVDLEtBQUssRUFBRUMsS0FBSyxFQUFFQyxNQUFNLEVBQUVDLE1BQU0sRUFBRUMsT0FBTyxFQUFFQyxRQUFRLEVBQUVDLFVBQVUsRUFBRUMsV0FBVyxFQUFFQyxXQUFXLEVBQUVDLFlBQVksRUFBRUMsWUFBWSxFQUFFQyxpQkFBaUIsRUFBRUMscUJBQXFCLENBQUU7UUFDMU8sS0FBSyxDQUFDcEIsU0FBU0MsYUFBYUMsVUFBVUMsUUFBUUMsTUFBTUM7UUFFcEQsSUFBSSxDQUFDQyxLQUFLLEdBQUdBO1FBQ2IsSUFBSSxDQUFDQyxNQUFNLEdBQUdBO1FBQ2QsSUFBSSxDQUFDUCxPQUFPLEdBQUdBO1FBQ2YsSUFBSSxDQUFDRSxRQUFRLEdBQUdBO1FBQ2hCLElBQUksQ0FBQ0MsTUFBTSxHQUFHQTtRQUNkLElBQUksQ0FBQ0MsSUFBSSxHQUFHQTtRQUNaLElBQUksQ0FBQ0ksS0FBSyxHQUFHQTtRQUNiLElBQUksQ0FBQ0MsS0FBSyxHQUFHQTtRQUNiLElBQUksQ0FBQ0MsTUFBTSxHQUFH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
|
|
@@ -22,7 +22,7 @@ function _interop_require_default(obj) {
|
|
|
22
22
|
default: obj
|
|
23
23
|
};
|
|
24
24
|
}
|
|
25
|
-
const {
|
|
25
|
+
const { breakPointFromJSON } = _occamlanguages.breakPointUtilities, { all, exists, isolate } = _occamlanguages.continuationUtilities;
|
|
26
26
|
const _default = (0, _elements.define)(class ContainedAssertion extends _assertion.default {
|
|
27
27
|
constructor(context, string, node, breakPoint, term, negated, statement){
|
|
28
28
|
super(context, string, node, breakPoint);
|
|
@@ -167,4 +167,4 @@ function validateWhenDerived(term, statement, negated, context, forward, back) {
|
|
|
167
167
|
return forward(context, back);
|
|
168
168
|
}
|
|
169
169
|
|
|
170
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L2Fzc2VydGlvbi9jb250YWluZWQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IGJyZWFrUG9pbnRVdGlsaXRpZXMsY29udGludWF0aW9uVXRpbGl0aWVzIH0gZnJvbSBcIm9jY2FtLWxhbmd1YWdlc1wiO1xuXG5pbXBvcnQgQXNzZXJ0aW9uIGZyb20gXCIuLi9hc3NlcnRpb25cIjtcblxuaW1wb3J0IHsgZGVmaW5lIH0gZnJvbSBcIi4uLy4uL2VsZW1lbnRzXCI7XG5pbXBvcnQgeyBpbnN0YW50aWF0ZSB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvY29udGV4dFwiO1xuaW1wb3J0IHsgaXNEZXJpdmVkLCBpc0RlY2xhcmVkIH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9zdGF0ZVwiO1xuaW1wb3J0IHsgaW5zdGFudGlhdGVDb250YWluZWRBc3NlcnRpb24gfSBmcm9tIFwiLi4vLi4vcHJvY2Vzcy9pbnN0YW50aWF0ZVwiO1xuaW1wb3J0IHsgdGVybUZyb21UZXJtQW5kU3Vic3RpdHV0aW9ucywgc3RhdGVtZW50RnJvbVN0YXRlbWVudEFuZFN1YnN0aXR1dGlvbnMgfSBmcm9tIFwiLi4vLi4vdXRpbGl0aWVzL3N1YnN0aXR1dGlvbnNcIjtcbmltcG9ydCB7IHRlcm1Gcm9tQ29udGFpbmVkQXNzZXJ0aW9uTm9kZSxcbiAgICAgICAgIG5lZ2F0ZWRGcm9tQ29udGFpbmVkQXNzZXJ0aW9uTm9kZSxcbiAgICAgICAgIHN0YXRlbWVudEZyb21Db250YWluZWRBc3NlcnRpb25Ob2RlLFxuICAgICAgICAgY29udGFpbmVkQXNzZXJ0aW9uRnJvbVN0YXRlbWVudE5vZGUgfSBmcm9tIFwiLi4vLi4vdXRpbGl0aWVzL2VsZW1lbnRcIjtcbmltcG9ydCBzdGF0ZSBmcm9tIFwiZWFzeS9saWIvbWl4aW5zL3N0YXRlXCI7XG5cbmNvbnN0IHsgYWxsLCBleGlzdHMgfSA9IGNvbnRpbnVhdGlvblV0aWxpdGllcyxcbiAgICAgIHsgYnJlYWtQb2ludEZyb21KU09OIH0gPSBicmVha1BvaW50VXRpbGl0aWVzO1xuXG5leHBvcnQgZGVmYXVsdCBkZWZpbmUoY2xhc3MgQ29udGFpbmVkQXNzZXJ0aW9uIGV4dGVuZHMgQXNzZXJ0aW9uIHtcbiAgY29uc3RydWN0b3IoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCB0ZXJtLCBuZWdhdGVkLCBzdGF0ZW1lbnQpIHtcbiAgICBzdXBlcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQpO1xuXG4gICAgdGhpcy50ZXJtID0gdGVybTtcbiAgICB0aGlzLm5lZ2F0ZWQgPSBuZWdhdGVkO1xuICAgIHRoaXMuc3RhdGVtZW50ID0gc3RhdGVtZW50O1xuICB9XG5cbiAgZ2V0VGVybSgpIHtcbiAgICByZXR1cm4gdGhpcy50ZXJtO1xuICB9XG5cbiAgaXNOZWdhdGVkKCkge1xuICAgIHJldHVybiB0aGlzLm5lZ2F0ZWQ7XG4gIH1cblxuICBnZXRTdGF0ZW1lbnQoKSB7XG4gICAgcmV0dXJuIHRoaXMuc3RhdGVtZW50O1xuICB9XG5cbiAgZ2V0Q29udGFpbmVkQXNzZXJ0aW9uTm9kZSgpIHtcbiAgICBjb25zdCBub2RlID0gdGhpcy5nZXROb2RlKCksXG4gICAgICAgICAgY29udGFpbmVkQXNzZXJ0aW9uTm9kZSA9IG5vZGU7ICAvLy9cblxuICAgIHJldHVybiBjb250YWluZWRBc3NlcnRpb25Ob2RlO1xuICB9XG5cbiAgdmFsaWRhdGUoc3RhdGUsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBsZXQgYXNzZXJ0aW9uO1xuXG4gICAgY29uc3QgY29udGFpbmVkQXNzZXJ0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7Y29udGFpbmVkQXNzZXJ0aW9uU3RyaW5nfScgY29udGFpbmVkIGFzc2VydGlvbi4uLmApO1xuXG4gICAgYXNzZXJ0aW9uID0gdGhpcy5maW5kQXNzZXJ0aW9uKGNvbnRleHQpO1xuXG4gICAgaWYgKGFzc2VydGlvbiAhPT0gbnVsbCkge1xuICAgICAgY29uc3QgY29udGFpbmVkQXNzZXJ0aW9uID0gYXNzZXJ0aW9uOyAvLy9cblxuICAgICAgY29udGV4dC5kZWJ1ZyhgVGhlICcke2NvbnRhaW5lZEFzc2VydGlvblN0cmluZ30nIGNvbnRhaW5lZCBhc3NlcnRpb24gaXMgYWxyZWFkeSBwcmVzZW50LmApO1xuXG4gICAgICByZXR1cm4gZm9yd2FyZChjb250YWluZWRBc3NlcnRpb24sIGNvbnRleHQsIGJhY2spO1xuICAgIH1cblxuICAgIGFzc2VydGlvbiA9IHRoaXM7IC8vL1xuXG4gICAgY29uc3QgdmFsaWRhdGVUZXJtID0gdGhpcy52YWxpZGF0ZVRlcm0uYmluZCh0aGlzKSxcbiAgICAgICAgICB2YWxpZGF0ZVN0YXRlbWVudCA9IHRoaXMudmFsaWRhdGVTdGF0ZW1lbnQuYmluZCh0aGlzKTtcblxuICAgIGFsbChbXG4gICAgICB2YWxpZGF0ZVRlcm0sXG4gICAgICB2YWxpZGF0ZVN0YXRlbWVudFxuICAgIF0sIHN0YXRlLCBjb250ZXh0LCAoc3RhdGUsIGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIGNvbnN0IHZhbGlkYXRlV2hlbkRlY2xhcmVkID0gdGhpcy52YWxpZGF0ZVdoZW5EZWNsYXJlZC5iaW5kKHRoaXMpLFxuICAgICAgICAgICAgdmFsaWRhdGVXaGVuRGVyaXZlZCA9IHRoaXMudmFsaWRhdGVXaGVuRGVyaXZlZC5iaW5kKHRoaXMpO1xuXG4gICAgICBleGlzdHMoW1xuICAgICAgICB2YWxpZGF0ZVdoZW5EZWNsYXJlZCxcbiAgICAgICAgdmFsaWRhdGVXaGVuRGVyaXZlZFxuICAgICAgXSwgc3RhdGUsIGNvbnRleHQsIChzdGF0ZSwgY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgICBjb25zdCBjb250YWluZWRBc3NlcnRpb24gPSBhc3NlcnRpb247IC8vL1xuXG4gICAgICAgIGNvbnRleHQuYWRkQXNzZXJ0aW9uKGFzc2VydGlvbik7XG5cbiAgICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHtjb250YWluZWRBc3NlcnRpb25TdHJpbmd9JyBjb250YWluZWQgYXNzZXJ0aW9uLmApO1xuXG4gICAgICAgIHJldHVybiBmb3J3YXJkKGNvbnRhaW5lZEFzc2VydGlvbiwgY29udGV4dCwgYmFjayk7XG4gICAgICB9LCBiYWNrKTtcbiAgICB9LCBiYWNrKTtcbiAgfVxuXG4gIHZhbGlkYXRlVGVybShzdGF0ZSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IGNvbnRhaW5lZEFzc2VydGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke2NvbnRhaW5lZEFzc2VydGlvblN0cmluZ30nIGNvbnRhaW5lZCBhc3NlcnRpb24ncyB0ZXJtLi4uYCk7XG5cbiAgICBjb25zdCB0ZXJtU2luZ3VsYXIgPSB0aGlzLnRlcm0uaXNTaW5ndWxhcigpO1xuXG4gICAgaWYgKCF0ZXJtU2luZ3VsYXIpIHtcbiAgICAgIGNvbnN0IHRlcm1TdHJpbmcgPSB0aGlzLnRlcm0uZ2V0U3RyaW5nKCkgLy8vXG5cbiAgICAgIGNvbnRleHQuZGVidWcoYFRoZSAnJHt0ZXJtU3RyaW5nfScgdGVybSBpcyBub3Qgc2luZ3VsYXIuYCk7XG5cbiAgICAgIHJldHVybiBiYWNrKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMudGVybS52YWxpZGF0ZShzdGF0ZSwgY29udGV4dCwgKHRlcm0sIGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIHRoaXMudGVybSAgPSB0ZXJtO1xuXG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZXMgdGhlICcke2NvbnRhaW5lZEFzc2VydGlvblN0cmluZ30nIGNvbnRhaW5lZCBhc3NlcnRpb24ncyB0ZXJtLmApO1xuXG4gICAgICByZXR1cm4gZm9yd2FyZChzdGF0ZSwgY29udGV4dCwgYmFjayk7XG4gICAgfSwgYmFjayk7XG4gIH1cblxuICB2YWxpZGF0ZVN0YXRlbWVudChzdGF0ZSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IGNvbnRhaW5lZEFzc2VydGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke2NvbnRhaW5lZEFzc2VydGlvblN0cmluZ30nIGNvbnRhaW5lZCBhc3NlcnRpb24ncyBzdGF0ZW1lbnQuLi5gKTtcblxuICAgIGNvbnN0IHN0YXRlbWVudFNpbmd1bGFyID0gdGhpcy5zdGF0ZW1lbnQuaXNTaW5ndWxhcigpO1xuXG4gICAgaWYgKCFzdGF0ZW1lbnRTaW5ndWxhcikge1xuICAgICAgY29uc3Qgc3RhdGVtZW50U3RyaW5nID0gdGhpcy5zdGF0ZW1lbnQuZ2V0U3RyaW5nKCkgLy8vXG5cbiAgICAgIGNvbnRleHQuZGVidWcoYFRoZSAnJHtzdGF0ZW1lbnRTdHJpbmd9JyBzdGF0ZW1lbnQgaXMgbm90IHNpbmd1bGFyLmApO1xuXG4gICAgICByZXR1cm4gYmFjaygpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnN0YXRlbWVudC52YWxpZGF0ZShzdGF0ZSwgY29udGV4dCwgKHN0YXRlbWVudCwgY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgdGhpcy5zdGF0ZW1lbnQgPSBzdGF0ZW1lbnQ7XG5cbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlcyB0aGUgJyR7Y29udGFpbmVkQXNzZXJ0aW9uU3RyaW5nfScgY29udGFpbmVkIGFzc2VydGlvbidzIHN0YXRlbWVudC5gKTtcblxuICAgICAgcmV0dXJuIGZvcndhcmQoc3RhdGUsIGNvbnRleHQsIGJhY2spO1xuICAgIH0sIGJhY2spO1xuICB9XG5cbiAgdmFsaWRhdGVXaGVuRGVjbGFyZWQoc3RhdGUsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBkZWNsYXJlZCA9IGlzRGVjbGFyZWQoc3RhdGUpO1xuXG4gICAgaWYgKCFkZWNsYXJlZCkge1xuICAgICAgcmV0dXJuIGJhY2soKTtcbiAgICB9XG5cbiAgICBjb25zdCBjb250YWluZWRBc3NlcnRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke2NvbnRhaW5lZEFzc2VydGlvblN0cmluZ30nIGRlY2xhcmVkIGNvbnRhaW5lZCBhc3NlcnRpb24uLi5gKTtcblxuICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7Y29udGFpbmVkQXNzZXJ0aW9uU3RyaW5nfScgZGVjbGFyZWQgY29udGFpbmVkIGFzc2VydGlvbi5gKTtcblxuICAgIHJldHVybiBmb3J3YXJkKHN0YXRlLCBjb250ZXh0LCBiYWNrKTtcbiAgfVxuXG4gIHZhbGlkYXRlV2hlbkRlcml2ZWQoc3RhdGUsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBkZXJpdmVkID0gaXNEZXJpdmVkKHN0YXRlKTtcblxuICAgIGlmICghZGVyaXZlZCkge1xuICAgICAgcmV0dXJuIGJhY2soKTtcbiAgICB9XG5cbiAgICBjb25zdCBjb250YWluZWRBc3NlcnRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke2NvbnRhaW5lZEFzc2VydGlvblN0cmluZ30nIGRlcml2ZWQgY29udGFpbmVkIGFzc2VydGlvbi4uLmApO1xuXG4gICAgcmV0dXJuIHZhbGlkYXRlV2hlbkRlcml2ZWQodGhpcy50ZXJtLCB0aGlzLnN0YXRlbWVudCwgdGhpcy5uZWdhdGVkLCBjb250ZXh0LCAoY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHtjb250YWluZWRBc3NlcnRpb25TdHJpbmd9JyBkZXJpdmVkIGNvbnRhaW5lZCBhc3NlcnRpb24uYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKHN0YXRlLCBjb250ZXh0LCBiYWNrKTtcbiAgICB9LCBiYWNrKTtcbiAgfVxuXG4gIHVuaWZ5SW5kZXBlbmRlbnRseShnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHNwZWNpZmljQ29udGV4dCwgIC8vL1xuICAgICAgICAgIGNvbnRhaW5lZEFzc2VydGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7IC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVW5pZnlpbmcgdGhlICcke2NvbnRhaW5lZEFzc2VydGlvblN0cmluZ30nIGNvbnRhaW5lZCBhc3NlcnRpb24gaW5kZXBlbmRlbnRseS4uLmApO1xuXG4gICAgY29uc3QgdGVybSA9IHRlcm1Gcm9tVGVybUFuZFN1YnN0aXR1dGlvbnModGhpcy50ZXJtLCBjb250ZXh0KSxcbiAgICAgICAgICBzdGF0ZW1lbnQgPSBzdGF0ZW1lbnRGcm9tU3RhdGVtZW50QW5kU3Vic3RpdHV0aW9ucyh0aGlzLnN0YXRlbWVudCwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gdmFsaWRhdGVXaGVuRGVyaXZlZCh0ZXJtLCBzdGF0ZW1lbnQsIHRoaXMubmVnYXRlZCwgY29udGV4dCwgKGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnVuaWZpZWQgdGhlICcke2NvbnRhaW5lZEFzc2VydGlvblN0cmluZ30nIGNvbnRhaW5lZCBhc3NlcnRpb24gaW5kZXBlbmRlbnRseS5gKTtcblxuICAgICAgcmV0dXJuIGZvcndhcmQoZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgYmFjayk7XG4gICAgfSwgYmFjayk7XG4gIH1cblxuICBzdGF0aWMgbmFtZSA9IFwiQ29udGFpbmVkQXNzZXJ0aW9uXCI7XG5cbiAgc3RhdGljIGZyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgICBsZXQgY29udGFpbmVkQXNzZXJ0aW9uID0gbnVsbDtcblxuICAgIGNvbnN0IHsgbmFtZSB9ID0ganNvbjtcblxuICAgIGlmICh0aGlzLm5hbWUgPT09IG5hbWUpIHtcbiAgICAgIGluc3RhbnRpYXRlKChjb250ZXh0KSA9PiB7XG4gICAgICAgIGNvbnN0IHsgc3RyaW5nIH0gPSBqc29uLFxuICAgICAgICAgICAgICBjb250YWluZWRBc3NlcnRpb25Ob2RlID0gaW5zdGFudGlhdGVDb250YWluZWRBc3NlcnRpb24oc3RyaW5nLCBjb250ZXh0KSxcbiAgICAgICAgICAgICAgbm9kZSA9IGNvbnRhaW5lZEFzc2VydGlvbk5vZGUsICAvLy9cbiAgICAgICAgICAgICAgYnJlYWtQb2ludCA9IGJyZWFrUG9pbnRGcm9tSlNPTihqc29uKSxcbiAgICAgICAgICAgICAgdGVybSA9IHRlcm1Gcm9tQ29udGFpbmVkQXNzZXJ0aW9uTm9kZShjb250YWluZWRBc3NlcnRpb25Ob2RlLCBjb250ZXh0KSxcbiAgICAgICAgICAgICAgbmVnYXRlZCA9IG5lZ2F0ZWRGcm9tQ29udGFpbmVkQXNzZXJ0aW9uTm9kZShjb250YWluZWRBc3NlcnRpb25Ob2RlLCBjb250ZXh0KSxcbiAgICAgICAgICAgICAgc3RhdGVtZW50ID0gc3RhdGVtZW50RnJvbUNvbnRhaW5lZEFzc2VydGlvbk5vZGUoY29udGFpbmVkQXNzZXJ0aW9uTm9kZSwgY29udGV4dCk7XG5cbiAgICAgICAgY29udGV4dCA9IG51bGw7XG5cbiAgICAgICAgY29udGFpbmVkQXNzZXJ0aW9uID0gbmV3IENvbnRhaW5lZEFzc2VydGlvbihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIHRlcm0sIG5lZ2F0ZWQsIHN0YXRlbWVudCk7XG4gICAgICB9LCBjb250ZXh0KTtcbiAgICB9XG5cbiAgICByZXR1cm4gY29udGFpbmVkQXNzZXJ0aW9uO1xuICB9XG5cbiAgc3RhdGljIGZyb21TdGF0ZW1lbnQoc3RhdGVtZW50LCBjb250ZXh0KSB7XG4gICAgY29uc3Qgc3RhdGVtZW50Tm9kZSA9IHN0YXRlbWVudC5nZXROb2RlKCksXG4gICAgICAgICAgY29udGFpbmVkQXNzZXJ0aW9uID0gY29udGFpbmVkQXNzZXJ0aW9uRnJvbVN0YXRlbWVudE5vZGUoc3RhdGVtZW50Tm9kZSwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gY29udGFpbmVkQXNzZXJ0aW9uO1xuICB9XG59KTtcblxuZnVuY3Rpb24gdmFsaWRhdGVXaGVuRGVyaXZlZCh0ZXJtLCBzdGF0ZW1lbnQsIG5lZ2F0ZWQsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgY29uc3QgdGVybUNvbnRhaW5lZCA9IHN0YXRlbWVudC5pc1Rlcm1Db250YWluZWQodGVybSwgY29udGV4dCk7XG5cbiAgbGV0IHZhbGlkYXRlc1doZW5EZXJpdmVkID0gZmFsc2U7XG5cbiAgaWYgKCFuZWdhdGVkICYmIHRlcm1Db250YWluZWQpIHtcbiAgICB2YWxpZGF0ZXNXaGVuRGVyaXZlZCA9IHRydWU7XG4gIH1cblxuICBpZiAobmVnYXRlZCAmJiAhdGVybUNvbnRhaW5lZCkge1xuICAgIHZhbGlkYXRlc1doZW5EZXJpdmVkID0gdHJ1ZTtcbiAgfVxuXG4gIGlmICghdmFsaWRhdGVzV2hlbkRlcml2ZWQpIHtcbiAgICByZXR1cm4gYmFjaygpO1xuICB9XG5cbiAgcmV0dXJuIGZvcndhcmQoY29udGV4dCwgYmFjayk7XG59Il0sIm5hbWVzIjpbImFsbCIsImV4aXN0cyIsImNvbnRpbnVhdGlvblV0aWxpdGllcyIsImJyZWFrUG9pbnRGcm9tSlNPTiIsImJyZWFrUG9pbnRVdGlsaXRpZXMiLCJkZWZpbmUiLCJDb250YWluZWRBc3NlcnRpb24iLCJBc3NlcnRpb24iLCJjb250ZXh0Iiwic3RyaW5nIiwibm9kZSIsImJyZWFrUG9pbnQiLCJ0ZXJtIiwibmVnYXRlZCIsInN0YXRlbWVudCIsImdldFRlcm0iLCJpc05lZ2F0ZWQiLCJnZXRTdGF0ZW1lbnQiLCJnZXRDb250YWluZWRBc3NlcnRpb25Ob2RlIiwiZ2V0Tm9kZSIsImNvbnRhaW5lZEFzc2VydGlvbk5vZGUiLCJ2YWxpZGF0ZSIsInN0YXRlIiwiZm9yd2FyZCIsImJhY2siLCJhc3NlcnRpb24iLCJjb250YWluZWRBc3NlcnRpb25TdHJpbmciLCJnZXRTdHJpbmciLCJ0cmFjZSIsImZpbmRBc3NlcnRpb24iLCJjb250YWluZWRBc3NlcnRpb24iLCJkZWJ1ZyIsInZhbGlkYXRlVGVybSIsImJpbmQiLCJ2YWxpZGF0ZVN0YXRlbWVudCIsInZhbGlkYXRlV2hlbkRlY2xhcmVkIiwidmFsaWRhdGVXaGVuRGVyaXZlZCIsImFkZEFzc2VydGlvbiIsInRlcm1TaW5ndWxhciIsImlzU2luZ3VsYXIiLCJ0ZXJtU3RyaW5nIiwic3RhdGVtZW50U2luZ3VsYXIiLCJzdGF0ZW1lbnRTdHJpbmciLCJkZWNsYXJlZCIsImlzRGVjbGFyZWQiLCJkZXJpdmVkIiwiaXNEZXJpdmVkIiwidW5pZnlJbmRlcGVuZGVudGx5IiwiZ2VuZXJhbENvbnRleHQiLCJzcGVjaWZpY0NvbnRleHQiLCJ0ZXJtRnJvbVRlcm1BbmRTdWJzdGl0dXRpb25zIiwic3RhdGVtZW50RnJvbVN0YXRlbWVudEFuZFN1YnN0aXR1dGlvbnMiLCJuYW1lIiwiZnJvbUpTT04iLCJqc29uIiwiaW5zdGFudGlhdGUiLCJpbnN0YW50aWF0ZUNvbnRhaW5lZEFzc2VydGlvbiIsInRlcm1Gcm9tQ29udGFpbmVkQXNzZXJ0aW9uTm9kZSIsIm5lZ2F0ZWRGcm9tQ29udGFpbmVkQXNzZXJ0aW9uTm9kZSIsInN0YXRlbWVudEZyb21Db250YWluZWRBc3NlcnRpb25Ob2RlIiwiZnJvbVN0YXRlbWVudCIsInN0YXRlbWVudE5vZGUiLCJjb250YWluZWRBc3NlcnRpb25Gcm9tU3RhdGVtZW50Tm9kZSIsInRlcm1Db250YWluZWQiLCJpc1Rlcm1Db250YWluZWQiLCJ2YWxpZGF0ZXNXaGVuRGVyaXZlZCJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBb0JBOzs7ZUFBQTs7O2dDQWxCMEQ7a0VBRXBDOzBCQUVDO3lCQUNLO3VCQUNVOzZCQUNROytCQUN1Qzt5QkFJakM7K0RBQ2xDOzs7Ozs7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
|
|
170
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L2Fzc2VydGlvbi9jb250YWluZWQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IGJyZWFrUG9pbnRVdGlsaXRpZXMsY29udGludWF0aW9uVXRpbGl0aWVzIH0gZnJvbSBcIm9jY2FtLWxhbmd1YWdlc1wiO1xuXG5pbXBvcnQgQXNzZXJ0aW9uIGZyb20gXCIuLi9hc3NlcnRpb25cIjtcblxuaW1wb3J0IHsgZGVmaW5lIH0gZnJvbSBcIi4uLy4uL2VsZW1lbnRzXCI7XG5pbXBvcnQgeyBpbnN0YW50aWF0ZSB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvY29udGV4dFwiO1xuaW1wb3J0IHsgaXNEZXJpdmVkLCBpc0RlY2xhcmVkIH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9zdGF0ZVwiO1xuaW1wb3J0IHsgaW5zdGFudGlhdGVDb250YWluZWRBc3NlcnRpb24gfSBmcm9tIFwiLi4vLi4vcHJvY2Vzcy9pbnN0YW50aWF0ZVwiO1xuaW1wb3J0IHsgdGVybUZyb21UZXJtQW5kU3Vic3RpdHV0aW9ucywgc3RhdGVtZW50RnJvbVN0YXRlbWVudEFuZFN1YnN0aXR1dGlvbnMgfSBmcm9tIFwiLi4vLi4vdXRpbGl0aWVzL3N1YnN0aXR1dGlvbnNcIjtcbmltcG9ydCB7IHRlcm1Gcm9tQ29udGFpbmVkQXNzZXJ0aW9uTm9kZSxcbiAgICAgICAgIG5lZ2F0ZWRGcm9tQ29udGFpbmVkQXNzZXJ0aW9uTm9kZSxcbiAgICAgICAgIHN0YXRlbWVudEZyb21Db250YWluZWRBc3NlcnRpb25Ob2RlLFxuICAgICAgICAgY29udGFpbmVkQXNzZXJ0aW9uRnJvbVN0YXRlbWVudE5vZGUgfSBmcm9tIFwiLi4vLi4vdXRpbGl0aWVzL2VsZW1lbnRcIjtcbmltcG9ydCBzdGF0ZSBmcm9tIFwiZWFzeS9saWIvbWl4aW5zL3N0YXRlXCI7XG5cbmNvbnN0IHsgYnJlYWtQb2ludEZyb21KU09OIH0gPSBicmVha1BvaW50VXRpbGl0aWVzLFxuICAgICAgeyBhbGwsIGV4aXN0cywgaXNvbGF0ZSB9ID0gY29udGludWF0aW9uVXRpbGl0aWVzO1xuXG5leHBvcnQgZGVmYXVsdCBkZWZpbmUoY2xhc3MgQ29udGFpbmVkQXNzZXJ0aW9uIGV4dGVuZHMgQXNzZXJ0aW9uIHtcbiAgY29uc3RydWN0b3IoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCB0ZXJtLCBuZWdhdGVkLCBzdGF0ZW1lbnQpIHtcbiAgICBzdXBlcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQpO1xuXG4gICAgdGhpcy50ZXJtID0gdGVybTtcbiAgICB0aGlzLm5lZ2F0ZWQgPSBuZWdhdGVkO1xuICAgIHRoaXMuc3RhdGVtZW50ID0gc3RhdGVtZW50O1xuICB9XG5cbiAgZ2V0VGVybSgpIHtcbiAgICByZXR1cm4gdGhpcy50ZXJtO1xuICB9XG5cbiAgaXNOZWdhdGVkKCkge1xuICAgIHJldHVybiB0aGlzLm5lZ2F0ZWQ7XG4gIH1cblxuICBnZXRTdGF0ZW1lbnQoKSB7XG4gICAgcmV0dXJuIHRoaXMuc3RhdGVtZW50O1xuICB9XG5cbiAgZ2V0Q29udGFpbmVkQXNzZXJ0aW9uTm9kZSgpIHtcbiAgICBjb25zdCBub2RlID0gdGhpcy5nZXROb2RlKCksXG4gICAgICAgICAgY29udGFpbmVkQXNzZXJ0aW9uTm9kZSA9IG5vZGU7ICAvLy9cblxuICAgIHJldHVybiBjb250YWluZWRBc3NlcnRpb25Ob2RlO1xuICB9XG5cbiAgdmFsaWRhdGUoc3RhdGUsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBsZXQgYXNzZXJ0aW9uO1xuXG4gICAgY29uc3QgY29udGFpbmVkQXNzZXJ0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7Y29udGFpbmVkQXNzZXJ0aW9uU3RyaW5nfScgY29udGFpbmVkIGFzc2VydGlvbi4uLmApO1xuXG4gICAgYXNzZXJ0aW9uID0gdGhpcy5maW5kQXNzZXJ0aW9uKGNvbnRleHQpO1xuXG4gICAgaWYgKGFzc2VydGlvbiAhPT0gbnVsbCkge1xuICAgICAgY29uc3QgY29udGFpbmVkQXNzZXJ0aW9uID0gYXNzZXJ0aW9uOyAvLy9cblxuICAgICAgY29udGV4dC5kZWJ1ZyhgVGhlICcke2NvbnRhaW5lZEFzc2VydGlvblN0cmluZ30nIGNvbnRhaW5lZCBhc3NlcnRpb24gaXMgYWxyZWFkeSBwcmVzZW50LmApO1xuXG4gICAgICByZXR1cm4gZm9yd2FyZChjb250YWluZWRBc3NlcnRpb24sIGNvbnRleHQsIGJhY2spO1xuICAgIH1cblxuICAgIGFzc2VydGlvbiA9IHRoaXM7IC8vL1xuXG4gICAgY29uc3QgdmFsaWRhdGVUZXJtID0gdGhpcy52YWxpZGF0ZVRlcm0uYmluZCh0aGlzKSxcbiAgICAgICAgICB2YWxpZGF0ZVN0YXRlbWVudCA9IHRoaXMudmFsaWRhdGVTdGF0ZW1lbnQuYmluZCh0aGlzKTtcblxuICAgIGFsbChbXG4gICAgICB2YWxpZGF0ZVRlcm0sXG4gICAgICB2YWxpZGF0ZVN0YXRlbWVudFxuICAgIF0sIHN0YXRlLCBjb250ZXh0LCAoc3RhdGUsIGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIGNvbnN0IHZhbGlkYXRlV2hlbkRlY2xhcmVkID0gdGhpcy52YWxpZGF0ZVdoZW5EZWNsYXJlZC5iaW5kKHRoaXMpLFxuICAgICAgICAgICAgdmFsaWRhdGVXaGVuRGVyaXZlZCA9IHRoaXMudmFsaWRhdGVXaGVuRGVyaXZlZC5iaW5kKHRoaXMpO1xuXG4gICAgICBleGlzdHMoW1xuICAgICAgICB2YWxpZGF0ZVdoZW5EZWNsYXJlZCxcbiAgICAgICAgdmFsaWRhdGVXaGVuRGVyaXZlZFxuICAgICAgXSwgc3RhdGUsIGNvbnRleHQsIChzdGF0ZSwgY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgICBjb25zdCBjb250YWluZWRBc3NlcnRpb24gPSBhc3NlcnRpb247IC8vL1xuXG4gICAgICAgIGNvbnRleHQuYWRkQXNzZXJ0aW9uKGFzc2VydGlvbik7XG5cbiAgICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHtjb250YWluZWRBc3NlcnRpb25TdHJpbmd9JyBjb250YWluZWQgYXNzZXJ0aW9uLmApO1xuXG4gICAgICAgIHJldHVybiBmb3J3YXJkKGNvbnRhaW5lZEFzc2VydGlvbiwgY29udGV4dCwgYmFjayk7XG4gICAgICB9LCBiYWNrKTtcbiAgICB9LCBiYWNrKTtcbiAgfVxuXG4gIHZhbGlkYXRlVGVybShzdGF0ZSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IGNvbnRhaW5lZEFzc2VydGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke2NvbnRhaW5lZEFzc2VydGlvblN0cmluZ30nIGNvbnRhaW5lZCBhc3NlcnRpb24ncyB0ZXJtLi4uYCk7XG5cbiAgICBjb25zdCB0ZXJtU2luZ3VsYXIgPSB0aGlzLnRlcm0uaXNTaW5ndWxhcigpO1xuXG4gICAgaWYgKCF0ZXJtU2luZ3VsYXIpIHtcbiAgICAgIGNvbnN0IHRlcm1TdHJpbmcgPSB0aGlzLnRlcm0uZ2V0U3RyaW5nKCkgLy8vXG5cbiAgICAgIGNvbnRleHQuZGVidWcoYFRoZSAnJHt0ZXJtU3RyaW5nfScgdGVybSBpcyBub3Qgc2luZ3VsYXIuYCk7XG5cbiAgICAgIHJldHVybiBiYWNrKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMudGVybS52YWxpZGF0ZShzdGF0ZSwgY29udGV4dCwgKHRlcm0sIGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIHRoaXMudGVybSAgPSB0ZXJtO1xuXG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZXMgdGhlICcke2NvbnRhaW5lZEFzc2VydGlvblN0cmluZ30nIGNvbnRhaW5lZCBhc3NlcnRpb24ncyB0ZXJtLmApO1xuXG4gICAgICByZXR1cm4gZm9yd2FyZChzdGF0ZSwgY29udGV4dCwgYmFjayk7XG4gICAgfSwgYmFjayk7XG4gIH1cblxuICB2YWxpZGF0ZVN0YXRlbWVudChzdGF0ZSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IGNvbnRhaW5lZEFzc2VydGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke2NvbnRhaW5lZEFzc2VydGlvblN0cmluZ30nIGNvbnRhaW5lZCBhc3NlcnRpb24ncyBzdGF0ZW1lbnQuLi5gKTtcblxuICAgIGNvbnN0IHN0YXRlbWVudFNpbmd1bGFyID0gdGhpcy5zdGF0ZW1lbnQuaXNTaW5ndWxhcigpO1xuXG4gICAgaWYgKCFzdGF0ZW1lbnRTaW5ndWxhcikge1xuICAgICAgY29uc3Qgc3RhdGVtZW50U3RyaW5nID0gdGhpcy5zdGF0ZW1lbnQuZ2V0U3RyaW5nKCkgLy8vXG5cbiAgICAgIGNvbnRleHQuZGVidWcoYFRoZSAnJHtzdGF0ZW1lbnRTdHJpbmd9JyBzdGF0ZW1lbnQgaXMgbm90IHNpbmd1bGFyLmApO1xuXG4gICAgICByZXR1cm4gYmFjaygpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnN0YXRlbWVudC52YWxpZGF0ZShzdGF0ZSwgY29udGV4dCwgKHN0YXRlbWVudCwgY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgdGhpcy5zdGF0ZW1lbnQgPSBzdGF0ZW1lbnQ7XG5cbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlcyB0aGUgJyR7Y29udGFpbmVkQXNzZXJ0aW9uU3RyaW5nfScgY29udGFpbmVkIGFzc2VydGlvbidzIHN0YXRlbWVudC5gKTtcblxuICAgICAgcmV0dXJuIGZvcndhcmQoc3RhdGUsIGNvbnRleHQsIGJhY2spO1xuICAgIH0sIGJhY2spO1xuICB9XG5cbiAgdmFsaWRhdGVXaGVuRGVjbGFyZWQoc3RhdGUsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBkZWNsYXJlZCA9IGlzRGVjbGFyZWQoc3RhdGUpO1xuXG4gICAgaWYgKCFkZWNsYXJlZCkge1xuICAgICAgcmV0dXJuIGJhY2soKTtcbiAgICB9XG5cbiAgICBjb25zdCBjb250YWluZWRBc3NlcnRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke2NvbnRhaW5lZEFzc2VydGlvblN0cmluZ30nIGRlY2xhcmVkIGNvbnRhaW5lZCBhc3NlcnRpb24uLi5gKTtcblxuICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7Y29udGFpbmVkQXNzZXJ0aW9uU3RyaW5nfScgZGVjbGFyZWQgY29udGFpbmVkIGFzc2VydGlvbi5gKTtcblxuICAgIHJldHVybiBmb3J3YXJkKHN0YXRlLCBjb250ZXh0LCBiYWNrKTtcbiAgfVxuXG4gIHZhbGlkYXRlV2hlbkRlcml2ZWQoc3RhdGUsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBkZXJpdmVkID0gaXNEZXJpdmVkKHN0YXRlKTtcblxuICAgIGlmICghZGVyaXZlZCkge1xuICAgICAgcmV0dXJuIGJhY2soKTtcbiAgICB9XG5cbiAgICBjb25zdCBjb250YWluZWRBc3NlcnRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke2NvbnRhaW5lZEFzc2VydGlvblN0cmluZ30nIGRlcml2ZWQgY29udGFpbmVkIGFzc2VydGlvbi4uLmApO1xuXG4gICAgcmV0dXJuIHZhbGlkYXRlV2hlbkRlcml2ZWQodGhpcy50ZXJtLCB0aGlzLnN0YXRlbWVudCwgdGhpcy5uZWdhdGVkLCBjb250ZXh0LCAoY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHtjb250YWluZWRBc3NlcnRpb25TdHJpbmd9JyBkZXJpdmVkIGNvbnRhaW5lZCBhc3NlcnRpb24uYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKHN0YXRlLCBjb250ZXh0LCBiYWNrKTtcbiAgICB9LCBiYWNrKTtcbiAgfVxuXG4gIHVuaWZ5SW5kZXBlbmRlbnRseShnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHNwZWNpZmljQ29udGV4dCwgIC8vL1xuICAgICAgICAgIGNvbnRhaW5lZEFzc2VydGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7IC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVW5pZnlpbmcgdGhlICcke2NvbnRhaW5lZEFzc2VydGlvblN0cmluZ30nIGNvbnRhaW5lZCBhc3NlcnRpb24gaW5kZXBlbmRlbnRseS4uLmApO1xuXG4gICAgY29uc3QgdGVybSA9IHRlcm1Gcm9tVGVybUFuZFN1YnN0aXR1dGlvbnModGhpcy50ZXJtLCBjb250ZXh0KSxcbiAgICAgICAgICBzdGF0ZW1lbnQgPSBzdGF0ZW1lbnRGcm9tU3RhdGVtZW50QW5kU3Vic3RpdHV0aW9ucyh0aGlzLnN0YXRlbWVudCwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gdmFsaWRhdGVXaGVuRGVyaXZlZCh0ZXJtLCBzdGF0ZW1lbnQsIHRoaXMubmVnYXRlZCwgY29udGV4dCwgKGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnVuaWZpZWQgdGhlICcke2NvbnRhaW5lZEFzc2VydGlvblN0cmluZ30nIGNvbnRhaW5lZCBhc3NlcnRpb24gaW5kZXBlbmRlbnRseS5gKTtcblxuICAgICAgcmV0dXJuIGZvcndhcmQoZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgYmFjayk7XG4gICAgfSwgYmFjayk7XG4gIH1cblxuICBzdGF0aWMgbmFtZSA9IFwiQ29udGFpbmVkQXNzZXJ0aW9uXCI7XG5cbiAgc3RhdGljIGZyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgICBsZXQgY29udGFpbmVkQXNzZXJ0aW9uID0gbnVsbDtcblxuICAgIGNvbnN0IHsgbmFtZSB9ID0ganNvbjtcblxuICAgIGlmICh0aGlzLm5hbWUgPT09IG5hbWUpIHtcbiAgICAgIGluc3RhbnRpYXRlKChjb250ZXh0KSA9PiB7XG4gICAgICAgIGNvbnN0IHsgc3RyaW5nIH0gPSBqc29uLFxuICAgICAgICAgICAgICBjb250YWluZWRBc3NlcnRpb25Ob2RlID0gaW5zdGFudGlhdGVDb250YWluZWRBc3NlcnRpb24oc3RyaW5nLCBjb250ZXh0KSxcbiAgICAgICAgICAgICAgbm9kZSA9IGNvbnRhaW5lZEFzc2VydGlvbk5vZGUsICAvLy9cbiAgICAgICAgICAgICAgYnJlYWtQb2ludCA9IGJyZWFrUG9pbnRGcm9tSlNPTihqc29uKSxcbiAgICAgICAgICAgICAgdGVybSA9IHRlcm1Gcm9tQ29udGFpbmVkQXNzZXJ0aW9uTm9kZShjb250YWluZWRBc3NlcnRpb25Ob2RlLCBjb250ZXh0KSxcbiAgICAgICAgICAgICAgbmVnYXRlZCA9IG5lZ2F0ZWRGcm9tQ29udGFpbmVkQXNzZXJ0aW9uTm9kZShjb250YWluZWRBc3NlcnRpb25Ob2RlLCBjb250ZXh0KSxcbiAgICAgICAgICAgICAgc3RhdGVtZW50ID0gc3RhdGVtZW50RnJvbUNvbnRhaW5lZEFzc2VydGlvbk5vZGUoY29udGFpbmVkQXNzZXJ0aW9uTm9kZSwgY29udGV4dCk7XG5cbiAgICAgICAgY29udGV4dCA9IG51bGw7XG5cbiAgICAgICAgY29udGFpbmVkQXNzZXJ0aW9uID0gbmV3IENvbnRhaW5lZEFzc2VydGlvbihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIHRlcm0sIG5lZ2F0ZWQsIHN0YXRlbWVudCk7XG4gICAgICB9LCBjb250ZXh0KTtcbiAgICB9XG5cbiAgICByZXR1cm4gY29udGFpbmVkQXNzZXJ0aW9uO1xuICB9XG5cbiAgc3RhdGljIGZyb21TdGF0ZW1lbnQoc3RhdGVtZW50LCBjb250ZXh0KSB7XG4gICAgY29uc3Qgc3RhdGVtZW50Tm9kZSA9IHN0YXRlbWVudC5nZXROb2RlKCksXG4gICAgICAgICAgY29udGFpbmVkQXNzZXJ0aW9uID0gY29udGFpbmVkQXNzZXJ0aW9uRnJvbVN0YXRlbWVudE5vZGUoc3RhdGVtZW50Tm9kZSwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gY29udGFpbmVkQXNzZXJ0aW9uO1xuICB9XG59KTtcblxuZnVuY3Rpb24gdmFsaWRhdGVXaGVuRGVyaXZlZCh0ZXJtLCBzdGF0ZW1lbnQsIG5lZ2F0ZWQsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgY29uc3QgdGVybUNvbnRhaW5lZCA9IHN0YXRlbWVudC5pc1Rlcm1Db250YWluZWQodGVybSwgY29udGV4dCk7XG5cbiAgbGV0IHZhbGlkYXRlc1doZW5EZXJpdmVkID0gZmFsc2U7XG5cbiAgaWYgKCFuZWdhdGVkICYmIHRlcm1Db250YWluZWQpIHtcbiAgICB2YWxpZGF0ZXNXaGVuRGVyaXZlZCA9IHRydWU7XG4gIH1cblxuICBpZiAobmVnYXRlZCAmJiAhdGVybUNvbnRhaW5lZCkge1xuICAgIHZhbGlkYXRlc1doZW5EZXJpdmVkID0gdHJ1ZTtcbiAgfVxuXG4gIGlmICghdmFsaWRhdGVzV2hlbkRlcml2ZWQpIHtcbiAgICByZXR1cm4gYmFjaygpO1xuICB9XG5cbiAgcmV0dXJuIGZvcndhcmQoY29udGV4dCwgYmFjayk7XG59Il0sIm5hbWVzIjpbImJyZWFrUG9pbnRGcm9tSlNPTiIsImJyZWFrUG9pbnRVdGlsaXRpZXMiLCJhbGwiLCJleGlzdHMiLCJpc29sYXRlIiwiY29udGludWF0aW9uVXRpbGl0aWVzIiwiZGVmaW5lIiwiQ29udGFpbmVkQXNzZXJ0aW9uIiwiQXNzZXJ0aW9uIiwiY29udGV4dCIsInN0cmluZyIsIm5vZGUiLCJicmVha1BvaW50IiwidGVybSIsIm5lZ2F0ZWQiLCJzdGF0ZW1lbnQiLCJnZXRUZXJtIiwiaXNOZWdhdGVkIiwiZ2V0U3RhdGVtZW50IiwiZ2V0Q29udGFpbmVkQXNzZXJ0aW9uTm9kZSIsImdldE5vZGUiLCJjb250YWluZWRBc3NlcnRpb25Ob2RlIiwidmFsaWRhdGUiLCJzdGF0ZSIsImZvcndhcmQiLCJiYWNrIiwiYXNzZXJ0aW9uIiwiY29udGFpbmVkQXNzZXJ0aW9uU3RyaW5nIiwiZ2V0U3RyaW5nIiwidHJhY2UiLCJmaW5kQXNzZXJ0aW9uIiwiY29udGFpbmVkQXNzZXJ0aW9uIiwiZGVidWciLCJ2YWxpZGF0ZVRlcm0iLCJiaW5kIiwidmFsaWRhdGVTdGF0ZW1lbnQiLCJ2YWxpZGF0ZVdoZW5EZWNsYXJlZCIsInZhbGlkYXRlV2hlbkRlcml2ZWQiLCJhZGRBc3NlcnRpb24iLCJ0ZXJtU2luZ3VsYXIiLCJpc1Npbmd1bGFyIiwidGVybVN0cmluZyIsInN0YXRlbWVudFNpbmd1bGFyIiwic3RhdGVtZW50U3RyaW5nIiwiZGVjbGFyZWQiLCJpc0RlY2xhcmVkIiwiZGVyaXZlZCIsImlzRGVyaXZlZCIsInVuaWZ5SW5kZXBlbmRlbnRseSIsImdlbmVyYWxDb250ZXh0Iiwic3BlY2lmaWNDb250ZXh0IiwidGVybUZyb21UZXJtQW5kU3Vic3RpdHV0aW9ucyIsInN0YXRlbWVudEZyb21TdGF0ZW1lbnRBbmRTdWJzdGl0dXRpb25zIiwibmFtZSIsImZyb21KU09OIiwianNvbiIsImluc3RhbnRpYXRlIiwiaW5zdGFudGlhdGVDb250YWluZWRBc3NlcnRpb24iLCJ0ZXJtRnJvbUNvbnRhaW5lZEFzc2VydGlvbk5vZGUiLCJuZWdhdGVkRnJvbUNvbnRhaW5lZEFzc2VydGlvbk5vZGUiLCJzdGF0ZW1lbnRGcm9tQ29udGFpbmVkQXNzZXJ0aW9uTm9kZSIsImZyb21TdGF0ZW1lbnQiLCJzdGF0ZW1lbnROb2RlIiwiY29udGFpbmVkQXNzZXJ0aW9uRnJvbVN0YXRlbWVudE5vZGUiLCJ0ZXJtQ29udGFpbmVkIiwiaXNUZXJtQ29udGFpbmVkIiwidmFsaWRhdGVzV2hlbkRlcml2ZWQiXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQW9CQTs7O2VBQUE7OztnQ0FsQjBEO2tFQUVwQzswQkFFQzt5QkFDSzt1QkFDVTs2QkFDUTsrQkFDdUM7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
|
|
@@ -60,17 +60,17 @@ function _interop_require_wildcard(obj, nodeInterop) {
|
|
|
60
60
|
}
|
|
61
61
|
const { some } = _occamlanguages.continuationUtilities;
|
|
62
62
|
const _default = (0, _elements.define)(class SchemaAssertion extends _assertion.default {
|
|
63
|
-
constructor(context, string, node, breakPoint,
|
|
63
|
+
constructor(context, string, node, breakPoint, link, frame){
|
|
64
64
|
super(context, string, node, breakPoint);
|
|
65
|
+
this.link = link;
|
|
65
66
|
this.frame = frame;
|
|
66
|
-
|
|
67
|
+
}
|
|
68
|
+
getLink() {
|
|
69
|
+
return this.link;
|
|
67
70
|
}
|
|
68
71
|
getFrame() {
|
|
69
72
|
return this.frame;
|
|
70
73
|
}
|
|
71
|
-
getReference() {
|
|
72
|
-
return this.reference;
|
|
73
|
-
}
|
|
74
74
|
getSchemaAssertionNode() {
|
|
75
75
|
const node = this.getNode(), schemaAssertionNode = node; ///
|
|
76
76
|
return schemaAssertionNode;
|
|
@@ -107,10 +107,10 @@ const _default = (0, _elements.define)(class SchemaAssertion extends _assertion.
|
|
|
107
107
|
validates = continuation(schameAssertion, context);
|
|
108
108
|
} else {
|
|
109
109
|
assertion = this; ///
|
|
110
|
-
const validateFrame = this.validateFrame.bind(this),
|
|
110
|
+
const validateFrame = this.validateFrame.bind(this), validateLink = this.validateLink.bind(this);
|
|
111
111
|
validates = all([
|
|
112
112
|
validateFrame,
|
|
113
|
-
|
|
113
|
+
validateLink
|
|
114
114
|
], state, context, (state, _)=>{
|
|
115
115
|
let validates;
|
|
116
116
|
const schameAssertion = assertion; ///
|
|
@@ -141,20 +141,20 @@ const _default = (0, _elements.define)(class SchemaAssertion extends _assertion.
|
|
|
141
141
|
}
|
|
142
142
|
return frameValidates;
|
|
143
143
|
}
|
|
144
|
-
|
|
145
|
-
let
|
|
144
|
+
validateLink(state, context, continuation) {
|
|
145
|
+
let linkValidates;
|
|
146
146
|
const schameAssertionString = this.getString(); ///
|
|
147
|
-
context.trace(`Validating the '${schameAssertionString}' schame assertion's
|
|
148
|
-
|
|
147
|
+
context.trace(`Validating the '${schameAssertionString}' schame assertion's link...`);
|
|
148
|
+
linkValidates = this.link.validate(state, context, (link, context)=>{
|
|
149
149
|
let validates;
|
|
150
|
-
this.
|
|
150
|
+
this.link = link;
|
|
151
151
|
validates = continuation(state, context);
|
|
152
152
|
return validates;
|
|
153
153
|
});
|
|
154
|
-
if (
|
|
155
|
-
context.debug(`...validated the '${schameAssertionString}' schame assertion's
|
|
154
|
+
if (linkValidates) {
|
|
155
|
+
context.debug(`...validated the '${schameAssertionString}' schame assertion's link.`);
|
|
156
156
|
}
|
|
157
|
-
return
|
|
157
|
+
return linkValidates;
|
|
158
158
|
}
|
|
159
159
|
unifyStep(step, context, continuation) {
|
|
160
160
|
const schemas = context.getSchemas(), statement = step.getStatement(), schemaAssertion = this; ///
|
|
@@ -165,4 +165,4 @@ const _default = (0, _elements.define)(class SchemaAssertion extends _assertion.
|
|
|
165
165
|
static name = "SchemaAssertion";
|
|
166
166
|
});
|
|
167
167
|
|
|
168
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L2Fzc2VydGlvbi9zY2hlbWEuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IGNvbnRpbnVhdGlvblV0aWxpdGllcyB9IGZyb20gXCJvY2NhbS1sYW5ndWFnZXNcIjtcblxuaW1wb3J0IEFzc2VydGlvbiBmcm9tIFwiLi4vYXNzZXJ0aW9uXCI7XG5cbmltcG9ydCBlbGVtZW50cyBmcm9tIFwiLi4vLi4vZWxlbWVudHNcIjtcblxuaW1wb3J0IHsgZGVmaW5lIH0gZnJvbSBcIi4uLy4uL2VsZW1lbnRzXCI7XG5pbXBvcnQgeyBkZWNsYXJlIH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9zdGF0ZVwiO1xuXG5jb25zdCB7IHNvbWUgfSA9IGNvbnRpbnVhdGlvblV0aWxpdGllcztcblxuZXhwb3J0IGRlZmF1bHQgZGVmaW5lKGNsYXNzIFNjaGVtYUFzc2VydGlvbiBleHRlbmRzIEFzc2VydGlvbiB7XG4gIGNvbnN0cnVjdG9yKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgZnJhbWUsIHJlZmVyZW5jZSkge1xuICAgIHN1cGVyKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCk7XG5cbiAgICB0aGlzLmZyYW1lID0gZnJhbWU7XG4gICAgdGhpcy5yZWZlcmVuY2UgPSByZWZlcmVuY2U7XG4gIH1cblxuICBnZXRGcmFtZSgpIHtcbiAgICByZXR1cm4gdGhpcy5mcmFtZTtcbiAgfVxuXG4gIGdldFJlZmVyZW5jZSgpIHtcbiAgICByZXR1cm4gdGhpcy5yZWZlcmVuY2U7XG4gIH1cblxuICBnZXRTY2hlbWFBc3NlcnRpb25Ob2RlKCkge1xuICAgIGNvbnN0IG5vZGUgPSB0aGlzLmdldE5vZGUoKSxcbiAgICAgICAgICBzY2hlbWFBc3NlcnRpb25Ob2RlID0gbm9kZTsgIC8vL1xuXG4gICAgcmV0dXJuIHNjaGVtYUFzc2VydGlvbk5vZGU7XG4gIH1cblxuICBnZXRBc3N1bXB0aW9ucygpIHsgcmV0dXJuIHRoaXMuZnJhbWUuZ2V0QXNzdW1wdGlvbnMoKTsgfVxuXG4gIGdldE1ldGF2YXJpYWJsZSgpIHsgcmV0dXJuIHRoaXMuZnJhbWUuZ2V0TWV0YXZhcmlhYmxlKCk7IH1cblxuICBnZXRJbXBsaWNpdEFzc3VtcHRpb25zKGNvbnRleHQpIHtcbiAgICBjb25zdCBpbXBsaWNpdEFzc3VtcHRpb25zID0gW10sXG4gICAgICAgICAgbWV0YXZhcmlhYmxlID0gdGhpcy5nZXRNZXRhdmFyaWFibGUoKTtcblxuICAgIGlmIChtZXRhdmFyaWFibGUgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IHsgSW1wbGljaXRBc3N1bXB0aW9uIH0gPSBlbGVtZW50cyxcbiAgICAgICAgICAgIGZhY3RzID0gY29udGV4dC5nZXRGYWN0cygpO1xuXG4gICAgICBmYWN0cy5mb3JFYWNoKChmYWN0KSA9PiB7XG4gICAgICAgIGNvbnN0IHN0YXRlbWVudCA9IGZhY3QuZ2V0U3RhdGVtZW50KCksXG4gICAgICAgICAgICAgIGltcGxpY2l0QXNzdW1wdGlvbiA9IEltcGxpY2l0QXNzdW1wdGlvbi5mcm9tU3RhdGVtZW50KHN0YXRlbWVudCwgY29udGV4dCk7XG5cbiAgICAgICAgZGVjbGFyZSgoc3RhdGUpID0+IHtcbiAgICAgICAgICBpbXBsaWNpdEFzc3VtcHRpb24udmFsaWRhdGUoc3RhdGUsIGNvbnRleHQsIChpbXBsaWNpdEFzc3VtcHRpb24sIGNvbnRleHQpID0+IHRydWUpICAvLy9cbiAgICAgICAgfSk7XG5cbiAgICAgICAgaW1wbGljaXRBc3N1bXB0aW9ucy5wdXNoKGltcGxpY2l0QXNzdW1wdGlvbik7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gaW1wbGljaXRBc3N1bXB0aW9ucztcbiAgfVxuXG4gIHZhbGlkYXRlKHN0YXRlLCBjb250ZXh0LCBjb250aW51YXRpb24pIHtcbiAgICBsZXQgdmFsaWRhdGVzO1xuXG4gICAgY29uc3Qgc2NoYW1lQXNzZXJ0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7c2NoYW1lQXNzZXJ0aW9uU3RyaW5nfScgc2NoYW1lIGFzc2VydGlvbi4uLmApO1xuXG4gICAgbGV0IGFzc2VydGlvbjtcblxuICAgIGFzc2VydGlvbiA9IHRoaXMuZmluZEFzc2VydGlvbihjb250ZXh0KTtcblxuICAgIGlmIChhc3NlcnRpb24gIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IHNjaGFtZUFzc2VydGlvbiA9IGFzc2VydGlvbjsgIC8vL1xuXG4gICAgICBjb250ZXh0LmRlYnVnKGBUaGUgJyR7c2NoYW1lQXNzZXJ0aW9uU3RyaW5nfScgc2NoYW1lIGFzc2VydGlvbiBpcyBhbHJlYWR5IHByZXNlbnQuYCk7XG5cbiAgICAgIHZhbGlkYXRlcyA9IGNvbnRpbnVhdGlvbihzY2hhbWVBc3NlcnRpb24sIGNvbnRleHQpO1xuICAgIH0gZWxzZSB7XG4gICAgICBhc3NlcnRpb24gPSB0aGlzOyAgLy8vXG5cbiAgICAgIGNvbnN0IHZhbGlkYXRlRnJhbWUgPSB0aGlzLnZhbGlkYXRlRnJhbWUuYmluZCh0aGlzKSxcbiAgICAgICAgICAgIHZhbGlkYXRlUmVmZXJlbmNlID0gdGhpcy52YWxpZGF0ZVJlZmVyZW5jZS5iaW5kKHRoaXMpO1xuXG4gICAgICB2YWxpZGF0ZXMgPSBhbGwoW1xuICAgICAgICB2YWxpZGF0ZUZyYW1lLFxuICAgICAgICB2YWxpZGF0ZVJlZmVyZW5jZVxuICAgICAgXSwgc3RhdGUsIGNvbnRleHQsIChzdGF0ZSwgXyApID0+IHtcbiAgICAgICAgbGV0IHZhbGlkYXRlcztcblxuICAgICAgICBjb25zdCBzY2hhbWVBc3NlcnRpb24gPSBhc3NlcnRpb247ICAvLy9cblxuICAgICAgICB2YWxpZGF0ZXMgPSBjb250aW51YXRpb24oc2NoYW1lQXNzZXJ0aW9uLCBjb250ZXh0KTtcblxuICAgICAgICByZXR1cm4gdmFsaWRhdGVzO1xuICAgICAgfSk7XG5cbiAgICAgIGlmICh2YWxpZGF0ZXMpIHtcbiAgICAgICAgY29udGV4dC5hZGRBc3NlcnRpb24oYXNzZXJ0aW9uKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodmFsaWRhdGVzKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke3NjaGFtZUFzc2VydGlvblN0cmluZ30nIHNjaGFtZSBhc3NlcnRpb24uYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbGlkYXRlcztcbiAgfVxuXG4gIHZhbGlkYXRlRnJhbWUoc3RhdGUsIGNvbnRleHQsIGNvbnRpbnVhdGlvbikge1xuICAgIGxldCBmcmFtZVZhbGlkYXRlcztcblxuICAgIGNvbnN0IHNjaGFtZUFzc2VydGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke3NjaGFtZUFzc2VydGlvblN0cmluZ30nIHNjaGFtZSBhc3NlcnRpb24ncyBmcmFtZS4uLmApO1xuXG4gICAgZnJhbWVWYWxpZGF0ZXMgPSB0aGlzLmZyYW1lLnZhbGlkYXRlKHN0YXRlLCBjb250ZXh0LCAoZnJhbWUsIGNvbnRleHQpID0+IHtcbiAgICAgIGxldCB2YWxpZGF0ZXM7XG5cbiAgICAgIHRoaXMuZnJhbWUgPSBmcmFtZTtcblxuICAgICAgdmFsaWRhdGVzID0gY29udGludWF0aW9uKHN0YXRlLCBjb250ZXh0KTtcblxuICAgICAgcmV0dXJuIHZhbGlkYXRlcztcbiAgICB9KTtcblxuICAgIGlmIChmcmFtZVZhbGlkYXRlcykge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHtzY2hhbWVBc3NlcnRpb25TdHJpbmd9JyBzY2hhbWUgYXNzZXJ0aW9uJ3MgZnJhbWUuYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZyYW1lVmFsaWRhdGVzO1xuICB9XG5cbiAgdmFsaWRhdGVSZWZlcmVuY2Uoc3RhdGUsIGNvbnRleHQsIGNvbnRpbnVhdGlvbikge1xuICAgIGxldCByZWZlcmVuY2VWYWxpZGF0ZXM7XG5cbiAgICBjb25zdCBzY2hhbWVBc3NlcnRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtzY2hhbWVBc3NlcnRpb25TdHJpbmd9JyBzY2hhbWUgYXNzZXJ0aW9uJ3MgcmVmZXJlbmNlLi4uYCk7XG5cbiAgICByZWZlcmVuY2VWYWxpZGF0ZXMgPSB0aGlzLnJlZmVyZW5jZS52YWxpZGF0ZShzdGF0ZSwgY29udGV4dCwgKHJlZmVyZW5jZSwgY29udGV4dCkgPT4ge1xuICAgICAgbGV0IHZhbGlkYXRlcztcblxuICAgICAgdGhpcy5yZWZlcmVuY2UgPSByZWZlcmVuY2U7XG5cbiAgICAgIHZhbGlkYXRlcyA9IGNvbnRpbnVhdGlvbihzdGF0ZSwgY29udGV4dCk7XG5cbiAgICAgIHJldHVybiB2YWxpZGF0ZXM7XG4gICAgfSk7XG5cbiAgICBpZiAocmVmZXJlbmNlVmFsaWRhdGVzKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke3NjaGFtZUFzc2VydGlvblN0cmluZ30nIHNjaGFtZSBhc3NlcnRpb24ncyByZWZlcmVuY2UuYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlZmVyZW5jZVZhbGlkYXRlcztcbiAgfVxuXG4gIHVuaWZ5U3RlcChzdGVwLCBjb250ZXh0LCBjb250aW51YXRpb24pIHtcbiAgICBjb25zdCBzY2hlbWFzID0gY29udGV4dC5nZXRTY2hlbWFzKCksXG4gICAgICAgICAgc3RhdGVtZW50ID0gc3RlcC5nZXRTdGF0ZW1lbnQoKSxcbiAgICAgICAgICBzY2hlbWFBc3NlcnRpb24gPSB0aGlzOyAvLy9cblxuICAgIHJldHVybiBzb21lKHNjaGVtYXMsIChzY2hlbWEsIGNvbnRpbnVhdGlvbikgPT4ge1xuICAgICAgcmV0dXJuIHNjaGVtYS51bmlmeVN0YXRlbWVudEFuZFNjaGVtYUFzc2VydGlvbihzdGF0ZW1lbnQsIHNjaGVtYUFzc2VydGlvbiwgY29udGV4dCwgY29udGludWF0aW9uKTtcbiAgICB9LCBjb250aW51YXRpb24pO1xuICB9XG5cbiAgc3RhdGljIG5hbWUgPSBcIlNjaGVtYUFzc2VydGlvblwiO1xufSk7XG4iXSwibmFtZXMiOlsic29tZSIsImNvbnRpbnVhdGlvblV0aWxpdGllcyIsImRlZmluZSIsIlNjaGVtYUFzc2VydGlvbiIsIkFzc2VydGlvbiIsImNvbnRleHQiLCJzdHJpbmciLCJub2RlIiwiYnJlYWtQb2ludCIsImZyYW1lIiwicmVmZXJlbmNlIiwiZ2V0RnJhbWUiLCJnZXRSZWZlcmVuY2UiLCJnZXRTY2hlbWFBc3NlcnRpb25Ob2RlIiwiZ2V0Tm9kZSIsInNjaGVtYUFzc2VydGlvbk5vZGUiLCJnZXRBc3N1bXB0aW9ucyIsImdldE1ldGF2YXJpYWJsZSIsImdldEltcGxpY2l0QXNzdW1wdGlvbnMiLCJpbXBsaWNpdEFzc3VtcHRpb25zIiwibWV0YXZhcmlhYmxlIiwiSW1wbGljaXRBc3N1bXB0aW9uIiwiZWxlbWVudHMiLCJmYWN0cyIsImdldEZhY3RzIiwiZm9yRWFjaCIsImZhY3QiLCJzdGF0ZW1lbnQiLCJnZXRTdGF0ZW1lbnQiLCJpbXBsaWNpdEFzc3VtcHRpb24iLCJmcm9tU3RhdGVtZW50IiwiZGVjbGFyZSIsInN0YXRlIiwidmFsaWRhdGUiLCJwdXNoIiwiY29udGludWF0aW9uIiwidmFsaWRhdGVzIiwic2NoYW1lQXNzZXJ0aW9uU3RyaW5nIiwiZ2V0U3RyaW5nIiwidHJhY2UiLCJhc3NlcnRpb24iLCJmaW5kQXNzZXJ0aW9uIiwic2NoYW1lQXNzZXJ0aW9uIiwiZGVidWciLCJ2YWxpZGF0ZUZyYW1lIiwiYmluZCIsInZhbGlkYXRlUmVmZXJlbmNlIiwiYWxsIiwiXyIsImFkZEFzc2VydGlvbiIsImZyYW1lVmFsaWRhdGVzIiwicmVmZXJlbmNlVmFsaWRhdGVzIiwidW5pZnlTdGVwIiwic3RlcCIsInNjaGVtYXMiLCJnZXRTY2hlbWFzIiwic2NoZW1hQXNzZXJ0aW9uIiwic2NoZW1h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
|
|
168
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L2Fzc2VydGlvbi9zY2hlbWEuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IGNvbnRpbnVhdGlvblV0aWxpdGllcyB9IGZyb20gXCJvY2NhbS1sYW5ndWFnZXNcIjtcblxuaW1wb3J0IEFzc2VydGlvbiBmcm9tIFwiLi4vYXNzZXJ0aW9uXCI7XG5cbmltcG9ydCBlbGVtZW50cyBmcm9tIFwiLi4vLi4vZWxlbWVudHNcIjtcblxuaW1wb3J0IHsgZGVmaW5lIH0gZnJvbSBcIi4uLy4uL2VsZW1lbnRzXCI7XG5pbXBvcnQgeyBkZWNsYXJlIH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9zdGF0ZVwiO1xuXG5jb25zdCB7IHNvbWUgfSA9IGNvbnRpbnVhdGlvblV0aWxpdGllcztcblxuZXhwb3J0IGRlZmF1bHQgZGVmaW5lKGNsYXNzIFNjaGVtYUFzc2VydGlvbiBleHRlbmRzIEFzc2VydGlvbiB7XG4gIGNvbnN0cnVjdG9yKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgbGluaywgZnJhbWUpIHtcbiAgICBzdXBlcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQpO1xuXG4gICAgdGhpcy5saW5rID0gbGluaztcbiAgICB0aGlzLmZyYW1lID0gZnJhbWU7XG4gIH1cblxuICBnZXRMaW5rKCkge1xuICAgIHJldHVybiB0aGlzLmxpbms7XG4gIH1cblxuICBnZXRGcmFtZSgpIHtcbiAgICByZXR1cm4gdGhpcy5mcmFtZTtcbiAgfVxuXG4gIGdldFNjaGVtYUFzc2VydGlvbk5vZGUoKSB7XG4gICAgY29uc3Qgbm9kZSA9IHRoaXMuZ2V0Tm9kZSgpLFxuICAgICAgICAgIHNjaGVtYUFzc2VydGlvbk5vZGUgPSBub2RlOyAgLy8vXG5cbiAgICByZXR1cm4gc2NoZW1hQXNzZXJ0aW9uTm9kZTtcbiAgfVxuXG4gIGdldEFzc3VtcHRpb25zKCkgeyByZXR1cm4gdGhpcy5mcmFtZS5nZXRBc3N1bXB0aW9ucygpOyB9XG5cbiAgZ2V0TWV0YXZhcmlhYmxlKCkgeyByZXR1cm4gdGhpcy5mcmFtZS5nZXRNZXRhdmFyaWFibGUoKTsgfVxuXG4gIGdldEltcGxpY2l0QXNzdW1wdGlvbnMoY29udGV4dCkge1xuICAgIGNvbnN0IGltcGxpY2l0QXNzdW1wdGlvbnMgPSBbXSxcbiAgICAgICAgICBtZXRhdmFyaWFibGUgPSB0aGlzLmdldE1ldGF2YXJpYWJsZSgpO1xuXG4gICAgaWYgKG1ldGF2YXJpYWJsZSAhPT0gbnVsbCkge1xuICAgICAgY29uc3QgeyBJbXBsaWNpdEFzc3VtcHRpb24gfSA9IGVsZW1lbnRzLFxuICAgICAgICAgICAgZmFjdHMgPSBjb250ZXh0LmdldEZhY3RzKCk7XG5cbiAgICAgIGZhY3RzLmZvckVhY2goKGZhY3QpID0+IHtcbiAgICAgICAgY29uc3Qgc3RhdGVtZW50ID0gZmFjdC5nZXRTdGF0ZW1lbnQoKSxcbiAgICAgICAgICAgICAgaW1wbGljaXRBc3N1bXB0aW9uID0gSW1wbGljaXRBc3N1bXB0aW9uLmZyb21TdGF0ZW1lbnQoc3RhdGVtZW50LCBjb250ZXh0KTtcblxuICAgICAgICBkZWNsYXJlKChzdGF0ZSkgPT4ge1xuICAgICAgICAgIGltcGxpY2l0QXNzdW1wdGlvbi52YWxpZGF0ZShzdGF0ZSwgY29udGV4dCwgKGltcGxpY2l0QXNzdW1wdGlvbiwgY29udGV4dCkgPT4gdHJ1ZSkgIC8vL1xuICAgICAgICB9KTtcblxuICAgICAgICBpbXBsaWNpdEFzc3VtcHRpb25zLnB1c2goaW1wbGljaXRBc3N1bXB0aW9uKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiBpbXBsaWNpdEFzc3VtcHRpb25zO1xuICB9XG5cbiAgdmFsaWRhdGUoc3RhdGUsIGNvbnRleHQsIGNvbnRpbnVhdGlvbikge1xuICAgIGxldCB2YWxpZGF0ZXM7XG5cbiAgICBjb25zdCBzY2hhbWVBc3NlcnRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtzY2hhbWVBc3NlcnRpb25TdHJpbmd9JyBzY2hhbWUgYXNzZXJ0aW9uLi4uYCk7XG5cbiAgICBsZXQgYXNzZXJ0aW9uO1xuXG4gICAgYXNzZXJ0aW9uID0gdGhpcy5maW5kQXNzZXJ0aW9uKGNvbnRleHQpO1xuXG4gICAgaWYgKGFzc2VydGlvbiAhPT0gbnVsbCkge1xuICAgICAgY29uc3Qgc2NoYW1lQXNzZXJ0aW9uID0gYXNzZXJ0aW9uOyAgLy8vXG5cbiAgICAgIGNvbnRleHQuZGVidWcoYFRoZSAnJHtzY2hhbWVBc3NlcnRpb25TdHJpbmd9JyBzY2hhbWUgYXNzZXJ0aW9uIGlzIGFscmVhZHkgcHJlc2VudC5gKTtcblxuICAgICAgdmFsaWRhdGVzID0gY29udGludWF0aW9uKHNjaGFtZUFzc2VydGlvbiwgY29udGV4dCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGFzc2VydGlvbiA9IHRoaXM7ICAvLy9cblxuICAgICAgY29uc3QgdmFsaWRhdGVGcmFtZSA9IHRoaXMudmFsaWRhdGVGcmFtZS5iaW5kKHRoaXMpLFxuICAgICAgICAgICAgdmFsaWRhdGVMaW5rID0gdGhpcy52YWxpZGF0ZUxpbmsuYmluZCh0aGlzKTtcblxuICAgICAgdmFsaWRhdGVzID0gYWxsKFtcbiAgICAgICAgdmFsaWRhdGVGcmFtZSxcbiAgICAgICAgdmFsaWRhdGVMaW5rXG4gICAgICBdLCBzdGF0ZSwgY29udGV4dCwgKHN0YXRlLCBfICkgPT4ge1xuICAgICAgICBsZXQgdmFsaWRhdGVzO1xuXG4gICAgICAgIGNvbnN0IHNjaGFtZUFzc2VydGlvbiA9IGFzc2VydGlvbjsgIC8vL1xuXG4gICAgICAgIHZhbGlkYXRlcyA9IGNvbnRpbnVhdGlvbihzY2hhbWVBc3NlcnRpb24sIGNvbnRleHQpO1xuXG4gICAgICAgIHJldHVybiB2YWxpZGF0ZXM7XG4gICAgICB9KTtcblxuICAgICAgaWYgKHZhbGlkYXRlcykge1xuICAgICAgICBjb250ZXh0LmFkZEFzc2VydGlvbihhc3NlcnRpb24pO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh2YWxpZGF0ZXMpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7c2NoYW1lQXNzZXJ0aW9uU3RyaW5nfScgc2NoYW1lIGFzc2VydGlvbi5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmFsaWRhdGVzO1xuICB9XG5cbiAgdmFsaWRhdGVGcmFtZShzdGF0ZSwgY29udGV4dCwgY29udGludWF0aW9uKSB7XG4gICAgbGV0IGZyYW1lVmFsaWRhdGVzO1xuXG4gICAgY29uc3Qgc2NoYW1lQXNzZXJ0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7c2NoYW1lQXNzZXJ0aW9uU3RyaW5nfScgc2NoYW1lIGFzc2VydGlvbidzIGZyYW1lLi4uYCk7XG5cbiAgICBmcmFtZVZhbGlkYXRlcyA9IHRoaXMuZnJhbWUudmFsaWRhdGUoc3RhdGUsIGNvbnRleHQsIChmcmFtZSwgY29udGV4dCkgPT4ge1xuICAgICAgbGV0IHZhbGlkYXRlcztcblxuICAgICAgdGhpcy5mcmFtZSA9IGZyYW1lO1xuXG4gICAgICB2YWxpZGF0ZXMgPSBjb250aW51YXRpb24oc3RhdGUsIGNvbnRleHQpO1xuXG4gICAgICByZXR1cm4gdmFsaWRhdGVzO1xuICAgIH0pO1xuXG4gICAgaWYgKGZyYW1lVmFsaWRhdGVzKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke3NjaGFtZUFzc2VydGlvblN0cmluZ30nIHNjaGFtZSBhc3NlcnRpb24ncyBmcmFtZS5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZnJhbWVWYWxpZGF0ZXM7XG4gIH1cblxuICB2YWxpZGF0ZUxpbmsoc3RhdGUsIGNvbnRleHQsIGNvbnRpbnVhdGlvbikge1xuICAgIGxldCBsaW5rVmFsaWRhdGVzO1xuXG4gICAgY29uc3Qgc2NoYW1lQXNzZXJ0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7c2NoYW1lQXNzZXJ0aW9uU3RyaW5nfScgc2NoYW1lIGFzc2VydGlvbidzIGxpbmsuLi5gKTtcblxuICAgIGxpbmtWYWxpZGF0ZXMgPSB0aGlzLmxpbmsudmFsaWRhdGUoc3RhdGUsIGNvbnRleHQsIChsaW5rLCBjb250ZXh0KSA9PiB7XG4gICAgICBsZXQgdmFsaWRhdGVzO1xuXG4gICAgICB0aGlzLmxpbmsgPSBsaW5rO1xuXG4gICAgICB2YWxpZGF0ZXMgPSBjb250aW51YXRpb24oc3RhdGUsIGNvbnRleHQpO1xuXG4gICAgICByZXR1cm4gdmFsaWRhdGVzO1xuICAgIH0pO1xuXG4gICAgaWYgKGxpbmtWYWxpZGF0ZXMpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7c2NoYW1lQXNzZXJ0aW9uU3RyaW5nfScgc2NoYW1lIGFzc2VydGlvbidzIGxpbmsuYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGxpbmtWYWxpZGF0ZXM7XG4gIH1cblxuICB1bmlmeVN0ZXAoc3RlcCwgY29udGV4dCwgY29udGludWF0aW9uKSB7XG4gICAgY29uc3Qgc2NoZW1hcyA9IGNvbnRleHQuZ2V0U2NoZW1hcygpLFxuICAgICAgICAgIHN0YXRlbWVudCA9IHN0ZXAuZ2V0U3RhdGVtZW50KCksXG4gICAgICAgICAgc2NoZW1hQXNzZXJ0aW9uID0gdGhpczsgLy8vXG5cbiAgICByZXR1cm4gc29tZShzY2hlbWFzLCAoc2NoZW1hLCBjb250aW51YXRpb24pID0+IHtcbiAgICAgIHJldHVybiBzY2hlbWEudW5pZnlTdGF0ZW1lbnRBbmRTY2hlbWFBc3NlcnRpb24oc3RhdGVtZW50LCBzY2hlbWFBc3NlcnRpb24sIGNvbnRleHQsIGNvbnRpbnVhdGlvbik7XG4gICAgfSwgY29udGludWF0aW9uKTtcbiAgfVxuXG4gIHN0YXRpYyBuYW1lID0gXCJTY2hlbWFBc3NlcnRpb25cIjtcbn0pO1xuIl0sIm5hbWVzIjpbInNvbWUiLCJjb250aW51YXRpb25VdGlsaXRpZXMiLCJkZWZpbmUiLCJTY2hlbWFBc3NlcnRpb24iLCJBc3NlcnRpb24iLCJjb250ZXh0Iiwic3RyaW5nIiwibm9kZSIsImJyZWFrUG9pbnQiLCJsaW5rIiwiZnJhbWUiLCJnZXRMaW5rIiwiZ2V0RnJhbWUiLCJnZXRTY2hlbWFBc3NlcnRpb25Ob2RlIiwiZ2V0Tm9kZSIsInNjaGVtYUFzc2VydGlvbk5vZGUiLCJnZXRBc3N1bXB0aW9ucyIsImdldE1ldGF2YXJpYWJsZSIsImdldEltcGxpY2l0QXNzdW1wdGlvbnMiLCJpbXBsaWNpdEFzc3VtcHRpb25zIiwibWV0YXZhcmlhYmxlIiwiSW1wbGljaXRBc3N1bXB0aW9uIiwiZWxlbWVudHMiLCJmYWN0cyIsImdldEZhY3RzIiwiZm9yRWFjaCIsImZhY3QiLCJzdGF0ZW1lbnQiLCJnZXRTdGF0ZW1lbnQiLCJpbXBsaWNpdEFzc3VtcHRpb24iLCJmcm9tU3RhdGVtZW50IiwiZGVjbGFyZSIsInN0YXRlIiwidmFsaWRhdGUiLCJwdXNoIiwiY29udGludWF0aW9uIiwidmFsaWRhdGVzIiwic2NoYW1lQXNzZXJ0aW9uU3RyaW5nIiwiZ2V0U3RyaW5nIiwidHJhY2UiLCJhc3NlcnRpb24iLCJmaW5kQXNzZXJ0aW9uIiwic2NoYW1lQXNzZXJ0aW9uIiwiZGVidWciLCJ2YWxpZGF0ZUZyYW1lIiwiYmluZCIsInZhbGlkYXRlTGluayIsImFsbCIsIl8iLCJhZGRBc3NlcnRpb24iLCJmcmFtZVZhbGlkYXRlcyIsImxpbmtWYWxpZGF0ZXMiLCJ1bmlmeVN0ZXAiLCJzdGVwIiwic2NoZW1hcyIsImdldFNjaGVtYXMiLCJzY2hlbWFBc3NlcnRpb24iLCJzY2hlbWEiLCJ1bmlmeVN0YXRlbWVudEFuZFNjaGVtYUFzc2VydGlvbiIsIm5hbWUiXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQWFBOzs7ZUFBQTs7O2dDQVhzQztrRUFFaEI7a0VBRUQ7dUJBR0c7Ozs7Ozs7Ozs7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
|