kwikid-forms 0.6.13 → 0.6.15

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.
@@ -46,4 +46,22 @@ export const getMaxDate = (field) => {
46
46
  );
47
47
  }
48
48
  };
49
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLWNvbnZlcnRlci5oZWxwZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rd2lraWQtZm9ybXMvc3JjL2xpYi9yZW5kZXJlci9jb25maWctY29udmVydGVyL2NvbmZpZy1jb252ZXJ0ZXIuaGVscGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEQsT0FBTyxFQUFFLHNDQUFzQyxFQUFFLE1BQU0sOENBQThDLENBQUM7QUFFdEcsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLENBQUMsVUFBZSxFQUFTLEVBQUU7SUFDdEQsSUFBSSxNQUFNLEdBQVUsRUFBRSxDQUFDO0lBRXZCLElBQUksb0JBQW9CLENBQUMsVUFBVSxFQUFFLFdBQVcsQ0FBQyxFQUFFO1FBQ2pELE1BQU0sR0FBRyxVQUFVLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQztLQUN0QztTQUFNLElBQUksb0JBQW9CLENBQUMsVUFBVSxFQUFFLFFBQVEsQ0FBQyxFQUFFO1FBQ3JELE1BQU0sR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDO0tBQzVCO0lBRUQsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQUcsQ0FDckMsS0FBVSxFQUNWLEdBQVcsRUFDWCxLQUFVLEVBQ0wsRUFBRTtJQUNQLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLEVBQUU7UUFDckMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQztLQUNwQjtJQUNELE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxLQUFVLEVBQUUsR0FBVyxFQUFFLEtBQVUsRUFBTyxFQUFFO0lBQzNFLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUM7SUFFbkIsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxDQUFDLEtBQVUsRUFBTyxFQUFFO0lBQ25ELE9BQU8sdUJBQXVCLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxLQUFLLENBQUMsQ0FBQztBQUN6RCxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRyxDQUFDLEtBQVUsRUFBRSxLQUFjLEVBQU8sRUFBRTtJQUN2RSxPQUFPLGdCQUFnQixDQUFDLEtBQUssRUFBRSxlQUFlLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDekQsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHLENBQUMsS0FBVSxFQUFPLEVBQUU7SUFDNUMsSUFBSSxvQkFBb0IsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLEVBQUU7UUFDdEMsT0FBTyxzQ0FBc0MsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztLQUM3RDtTQUFNO1FBQ0wsT0FBTyxJQUFJLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsK0NBQStDO0tBQzVFO0FBQ0gsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHLENBQUMsS0FBVSxFQUFPLEVBQUU7SUFDNUMsSUFBSSxvQkFBb0IsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLEVBQUU7UUFDdEMsT0FBTyxzQ0FBc0MsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztLQUM3RDtTQUFNO1FBQ0wsT0FBTyxJQUFJLE1BQU0sQ0FDZixJQUFJLElBQUksRUFBRSxDQUFDLFdBQVcsRUFBRSxFQUFFLGNBQWM7UUFDeEMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxRQUFRLEVBQUUsRUFBRSwwQkFBMEI7UUFDakQsSUFBSSxJQUFJLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxXQUFXO1NBQ2pDLENBQUM7S0FDSDtBQUNILENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFR1aURheSB9IGZyb20gXCJAdGFpZ2EtdWkvY2RrXCI7XG5pbXBvcnQgeyBjaGVja09iamVjdEtleUV4aXN0cyB9IGZyb20gXCJrd2lraWQtdG9vbGtpdFwiO1xuaW1wb3J0IHsgY29udmVydEZvcm1GaWVsZFR5cGVEYXRlVG9Ld2lrVUlGb3JtYXQgfSBmcm9tIFwiLi4vZm9ybS12aWV3L2hlbHBlcnMvZm9ybS12aWV3LmZpZWxkcy5oZWxwZXJcIjtcblxuZXhwb3J0IGNvbnN0IGdldEZvcm1GaWVsZHMgPSAoZm9ybUNvbmZpZzogYW55KTogYW55W10gPT4ge1xuICBsZXQgZmllbGRzOiBhbnlbXSA9IFtdO1xuXG4gIGlmIChjaGVja09iamVjdEtleUV4aXN0cyhmb3JtQ29uZmlnLCBcIm11bHRpRm9ybVwiKSkge1xuICAgIGZpZWxkcyA9IGZvcm1Db25maWcubXVsdGlGb3JtLmZpZWxkcztcbiAgfSBlbHNlIGlmIChjaGVja09iamVjdEtleUV4aXN0cyhmb3JtQ29uZmlnLCBcImZpZWxkc1wiKSkge1xuICAgIGZpZWxkcyA9IGZvcm1Db25maWcuZmllbGRzO1xuICB9XG5cbiAgcmV0dXJuIGZpZWxkcztcbn07XG5cbmV4cG9ydCBjb25zdCBzZXRNaXNzaW5nRmllbGRLZXlWYWx1ZSA9IChcbiAgZmllbGQ6IGFueSxcbiAga2V5OiBzdHJpbmcsXG4gIHZhbHVlOiBhbnlcbik6IGFueSA9PiB7XG4gIGlmICghY2hlY2tPYmplY3RLZXlFeGlzdHMoZmllbGQsIGtleSkpIHtcbiAgICBmaWVsZFtrZXldID0gdmFsdWU7XG4gIH1cbiAgcmV0dXJuIGZpZWxkO1xufTtcblxuZXhwb3J0IGNvbnN0IHNldEZpZWxkS2V5VmFsdWUgPSAoZmllbGQ6IGFueSwga2V5OiBzdHJpbmcsIHZhbHVlOiBhbnkpOiBhbnkgPT4ge1xuICBmaWVsZFtrZXldID0gdmFsdWU7XG5cbiAgcmV0dXJuIGZpZWxkO1xufTtcblxuZXhwb3J0IGNvbnN0IHNldEZpZWxkS2V5SGlkZGVuID0gKGZpZWxkOiBhbnkpOiBhbnkgPT4ge1xuICByZXR1cm4gc2V0TWlzc2luZ0ZpZWxkS2V5VmFsdWUoZmllbGQsIFwiaGlkZGVuXCIsIGZhbHNlKTtcbn07XG5cbmV4cG9ydCBjb25zdCBzZXRGaWVsZEFzRm9ybUVsZW1lbnQgPSAoZmllbGQ6IGFueSwgdmFsdWU6IGJvb2xlYW4pOiBhbnkgPT4ge1xuICByZXR1cm4gc2V0RmllbGRLZXlWYWx1ZShmaWVsZCwgXCJpc0Zvcm1FbGVtZW50XCIsIHZhbHVlKTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRNaW5EYXRlID0gKGZpZWxkOiBhbnkpOiBhbnkgPT4ge1xuICBpZiAoY2hlY2tPYmplY3RLZXlFeGlzdHMoZmllbGQsIFwibWluXCIpKSB7XG4gICAgcmV0dXJuIGNvbnZlcnRGb3JtRmllbGRUeXBlRGF0ZVRvS3dpa1VJRm9ybWF0KGZpZWxkW1wibWluXCJdKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gbmV3IFR1aURheSgwLCAwLCAxKTsgLy8gWWVhciAtIDAwMDAsIE1vbnRoIC0gMCAoMCBJbmRleGluZyksIERheSAtIDFcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGdldE1heERhdGUgPSAoZmllbGQ6IGFueSk6IGFueSA9PiB7XG4gIGlmIChjaGVja09iamVjdEtleUV4aXN0cyhmaWVsZCwgXCJtYXhcIikpIHtcbiAgICByZXR1cm4gY29udmVydEZvcm1GaWVsZFR5cGVEYXRlVG9Ld2lrVUlGb3JtYXQoZmllbGRbXCJtYXhcIl0pO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBuZXcgVHVpRGF5KFxuICAgICAgbmV3IERhdGUoKS5nZXRGdWxsWWVhcigpLCAvLyBZZWFyIC0gOTk5OVxuICAgICAgbmV3IERhdGUoKS5nZXRNb250aCgpLCAvLyBNb250aCAtIDExICgwIEluZGV4aW5nKVxuICAgICAgbmV3IERhdGUoKS5nZXREYXRlKCkgLy8gRGF5IC0gMzFcbiAgICApO1xuICB9XG59O1xuIl19
49
+ export const updateDisplayLanguage = (object, language) => {
50
+ if (isObject(object)) {
51
+ if (language && checkObjectKeyExists(object, language)) {
52
+ object = object[language];
53
+ }
54
+ else {
55
+ object = object["en"];
56
+ }
57
+ }
58
+ return object;
59
+ };
60
+ export const isObject = (variable) => {
61
+ return typeof variable === "object" && variable !== null;
62
+ };
63
+ export const getLanguage = () => {
64
+ var _a, _b, _c;
65
+ return ((_c = (_b = (_a = localStorage.getItem("lng")) !== null && _a !== void 0 ? _a : localStorage.getItem("lang")) !== null && _b !== void 0 ? _b : localStorage.getItem("language")) !== null && _c !== void 0 ? _c : "en");
66
+ };
67
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLWNvbnZlcnRlci5oZWxwZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rd2lraWQtZm9ybXMvc3JjL2xpYi9yZW5kZXJlci9jb25maWctY29udmVydGVyL2NvbmZpZy1jb252ZXJ0ZXIuaGVscGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEQsT0FBTyxFQUFFLHNDQUFzQyxFQUFFLE1BQU0sOENBQThDLENBQUM7QUFFdEcsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLENBQUMsVUFBZSxFQUFTLEVBQUU7SUFDdEQsSUFBSSxNQUFNLEdBQVUsRUFBRSxDQUFDO0lBRXZCLElBQUksb0JBQW9CLENBQUMsVUFBVSxFQUFFLFdBQVcsQ0FBQyxFQUFFO1FBQ2pELE1BQU0sR0FBRyxVQUFVLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQztLQUN0QztTQUFNLElBQUksb0JBQW9CLENBQUMsVUFBVSxFQUFFLFFBQVEsQ0FBQyxFQUFFO1FBQ3JELE1BQU0sR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDO0tBQzVCO0lBRUQsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQUcsQ0FDckMsS0FBVSxFQUNWLEdBQVcsRUFDWCxLQUFVLEVBQ0wsRUFBRTtJQUNQLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLEVBQUU7UUFDckMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQztLQUNwQjtJQUNELE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxLQUFVLEVBQUUsR0FBVyxFQUFFLEtBQVUsRUFBTyxFQUFFO0lBQzNFLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUM7SUFFbkIsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxDQUFDLEtBQVUsRUFBTyxFQUFFO0lBQ25ELE9BQU8sdUJBQXVCLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxLQUFLLENBQUMsQ0FBQztBQUN6RCxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRyxDQUFDLEtBQVUsRUFBRSxLQUFjLEVBQU8sRUFBRTtJQUN2RSxPQUFPLGdCQUFnQixDQUFDLEtBQUssRUFBRSxlQUFlLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDekQsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHLENBQUMsS0FBVSxFQUFPLEVBQUU7SUFDNUMsSUFBSSxvQkFBb0IsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLEVBQUU7UUFDdEMsT0FBTyxzQ0FBc0MsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztLQUM3RDtTQUFNO1FBQ0wsT0FBTyxJQUFJLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsK0NBQStDO0tBQzVFO0FBQ0gsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHLENBQUMsS0FBVSxFQUFPLEVBQUU7SUFDNUMsSUFBSSxvQkFBb0IsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLEVBQUU7UUFDdEMsT0FBTyxzQ0FBc0MsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztLQUM3RDtTQUFNO1FBQ0wsT0FBTyxJQUFJLE1BQU0sQ0FDZixJQUFJLElBQUksRUFBRSxDQUFDLFdBQVcsRUFBRSxFQUFFLGNBQWM7UUFDeEMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxRQUFRLEVBQUUsRUFBRSwwQkFBMEI7UUFDakQsSUFBSSxJQUFJLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxXQUFXO1NBQ2pDLENBQUM7S0FDSDtBQUNILENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHLENBQUMsTUFBVyxFQUFFLFFBQWdCLEVBQUUsRUFBRTtJQUNyRSxJQUFJLFFBQVEsQ0FBQyxNQUFNLENBQUMsRUFBRTtRQUNwQixJQUFJLFFBQVEsSUFBSSxvQkFBb0IsQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLEVBQUU7WUFDdEQsTUFBTSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztTQUMzQjthQUFNO1lBQ0wsTUFBTSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUN2QjtLQUNGO0lBRUQsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sUUFBUSxHQUFHLENBQUMsUUFBUSxFQUFFLEVBQUU7SUFDbkMsT0FBTyxPQUFPLFFBQVEsS0FBSyxRQUFRLElBQUksUUFBUSxLQUFLLElBQUksQ0FBQztBQUMzRCxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsR0FBRyxFQUFFOztJQUM5QixPQUFPLENBQ0wsTUFBQSxNQUFBLE1BQUEsWUFBWSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsbUNBQzNCLFlBQVksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLG1DQUM1QixZQUFZLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxtQ0FDaEMsSUFBSSxDQUNMLENBQUM7QUFDSixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUdWlEYXkgfSBmcm9tIFwiQHRhaWdhLXVpL2Nka1wiO1xuaW1wb3J0IHsgY2hlY2tPYmplY3RLZXlFeGlzdHMgfSBmcm9tIFwia3dpa2lkLXRvb2xraXRcIjtcbmltcG9ydCB7IGNvbnZlcnRGb3JtRmllbGRUeXBlRGF0ZVRvS3dpa1VJRm9ybWF0IH0gZnJvbSBcIi4uL2Zvcm0tdmlldy9oZWxwZXJzL2Zvcm0tdmlldy5maWVsZHMuaGVscGVyXCI7XG5cbmV4cG9ydCBjb25zdCBnZXRGb3JtRmllbGRzID0gKGZvcm1Db25maWc6IGFueSk6IGFueVtdID0+IHtcbiAgbGV0IGZpZWxkczogYW55W10gPSBbXTtcblxuICBpZiAoY2hlY2tPYmplY3RLZXlFeGlzdHMoZm9ybUNvbmZpZywgXCJtdWx0aUZvcm1cIikpIHtcbiAgICBmaWVsZHMgPSBmb3JtQ29uZmlnLm11bHRpRm9ybS5maWVsZHM7XG4gIH0gZWxzZSBpZiAoY2hlY2tPYmplY3RLZXlFeGlzdHMoZm9ybUNvbmZpZywgXCJmaWVsZHNcIikpIHtcbiAgICBmaWVsZHMgPSBmb3JtQ29uZmlnLmZpZWxkcztcbiAgfVxuXG4gIHJldHVybiBmaWVsZHM7XG59O1xuXG5leHBvcnQgY29uc3Qgc2V0TWlzc2luZ0ZpZWxkS2V5VmFsdWUgPSAoXG4gIGZpZWxkOiBhbnksXG4gIGtleTogc3RyaW5nLFxuICB2YWx1ZTogYW55XG4pOiBhbnkgPT4ge1xuICBpZiAoIWNoZWNrT2JqZWN0S2V5RXhpc3RzKGZpZWxkLCBrZXkpKSB7XG4gICAgZmllbGRba2V5XSA9IHZhbHVlO1xuICB9XG4gIHJldHVybiBmaWVsZDtcbn07XG5cbmV4cG9ydCBjb25zdCBzZXRGaWVsZEtleVZhbHVlID0gKGZpZWxkOiBhbnksIGtleTogc3RyaW5nLCB2YWx1ZTogYW55KTogYW55ID0+IHtcbiAgZmllbGRba2V5XSA9IHZhbHVlO1xuXG4gIHJldHVybiBmaWVsZDtcbn07XG5cbmV4cG9ydCBjb25zdCBzZXRGaWVsZEtleUhpZGRlbiA9IChmaWVsZDogYW55KTogYW55ID0+IHtcbiAgcmV0dXJuIHNldE1pc3NpbmdGaWVsZEtleVZhbHVlKGZpZWxkLCBcImhpZGRlblwiLCBmYWxzZSk7XG59O1xuXG5leHBvcnQgY29uc3Qgc2V0RmllbGRBc0Zvcm1FbGVtZW50ID0gKGZpZWxkOiBhbnksIHZhbHVlOiBib29sZWFuKTogYW55ID0+IHtcbiAgcmV0dXJuIHNldEZpZWxkS2V5VmFsdWUoZmllbGQsIFwiaXNGb3JtRWxlbWVudFwiLCB2YWx1ZSk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0TWluRGF0ZSA9IChmaWVsZDogYW55KTogYW55ID0+IHtcbiAgaWYgKGNoZWNrT2JqZWN0S2V5RXhpc3RzKGZpZWxkLCBcIm1pblwiKSkge1xuICAgIHJldHVybiBjb252ZXJ0Rm9ybUZpZWxkVHlwZURhdGVUb0t3aWtVSUZvcm1hdChmaWVsZFtcIm1pblwiXSk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIG5ldyBUdWlEYXkoMCwgMCwgMSk7IC8vIFllYXIgLSAwMDAwLCBNb250aCAtIDAgKDAgSW5kZXhpbmcpLCBEYXkgLSAxXG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBnZXRNYXhEYXRlID0gKGZpZWxkOiBhbnkpOiBhbnkgPT4ge1xuICBpZiAoY2hlY2tPYmplY3RLZXlFeGlzdHMoZmllbGQsIFwibWF4XCIpKSB7XG4gICAgcmV0dXJuIGNvbnZlcnRGb3JtRmllbGRUeXBlRGF0ZVRvS3dpa1VJRm9ybWF0KGZpZWxkW1wibWF4XCJdKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gbmV3IFR1aURheShcbiAgICAgIG5ldyBEYXRlKCkuZ2V0RnVsbFllYXIoKSwgLy8gWWVhciAtIDk5OTlcbiAgICAgIG5ldyBEYXRlKCkuZ2V0TW9udGgoKSwgLy8gTW9udGggLSAxMSAoMCBJbmRleGluZylcbiAgICAgIG5ldyBEYXRlKCkuZ2V0RGF0ZSgpIC8vIERheSAtIDMxXG4gICAgKTtcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IHVwZGF0ZURpc3BsYXlMYW5ndWFnZSA9IChvYmplY3Q6IGFueSwgbGFuZ3VhZ2U6IHN0cmluZykgPT4ge1xuICBpZiAoaXNPYmplY3Qob2JqZWN0KSkge1xuICAgIGlmIChsYW5ndWFnZSAmJiBjaGVja09iamVjdEtleUV4aXN0cyhvYmplY3QsIGxhbmd1YWdlKSkge1xuICAgICAgb2JqZWN0ID0gb2JqZWN0W2xhbmd1YWdlXTtcbiAgICB9IGVsc2Uge1xuICAgICAgb2JqZWN0ID0gb2JqZWN0W1wiZW5cIl07XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG9iamVjdDtcbn07XG5cbmV4cG9ydCBjb25zdCBpc09iamVjdCA9ICh2YXJpYWJsZSkgPT4ge1xuICByZXR1cm4gdHlwZW9mIHZhcmlhYmxlID09PSBcIm9iamVjdFwiICYmIHZhcmlhYmxlICE9PSBudWxsO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldExhbmd1YWdlID0gKCkgPT4ge1xuICByZXR1cm4gKFxuICAgIGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwibG5nXCIpID8/XG4gICAgbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJsYW5nXCIpID8/XG4gICAgbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJsYW5ndWFnZVwiKSA/P1xuICAgIFwiZW5cIlxuICApO1xufTtcbiJdfQ==
@@ -2,7 +2,7 @@ import { __decorate } from "tslib";
2
2
  import { checkObjectKeyExists, checkObjectPathExists, getObjectDeepCopy, isEmptyValue, isNotEmptyValue, logMethod, mergeObjects, setMissingKeyValue, setValueToObjectPath } from "kwikid-toolkit";
3
3
  import { EFieldType } from "../form-view/definitions/form-view.fields.definition";
4
4
  import { FIELD_PROPERTIES } from "./config-converter.constants";
5
- import { getFormFields, getMaxDate, getMinDate, setFieldAsFormElement, setFieldKeyHidden, setFieldKeyValue, setMissingFieldKeyValue } from "./config-converter.helper";
5
+ import { updateDisplayLanguage, getFormFields, getMaxDate, getMinDate, setFieldAsFormElement, setFieldKeyHidden, setFieldKeyValue, setMissingFieldKeyValue, getLanguage } from "./config-converter.helper";
6
6
  export class Converter {
7
7
  updateFormConfigMiscellaneous(formConfig, args) {
8
8
  if (checkObjectKeyExists(args, "formsListLength")) {
@@ -568,20 +568,51 @@ export class Converter {
568
568
  }
569
569
  return fieldGroups;
570
570
  };
571
+ const updateFormDisplayLanguage = (formConfig, language) => {
572
+ if (checkObjectPathExists(formConfig, "properties.header.title.label")) {
573
+ formConfig.properties.header.title.label = updateDisplayLanguage(formConfig.properties.header.title.label, language);
574
+ }
575
+ if (checkObjectPathExists(formConfig, "properties.footer.viewFormsButton.label")) {
576
+ formConfig.properties.footer.viewFormsButton.label =
577
+ updateDisplayLanguage(formConfig.properties.footer.viewFormsButton.label, language);
578
+ }
579
+ if (checkObjectPathExists(formConfig, "properties.footer.saveButton.label")) {
580
+ formConfig.properties.footer.saveButton.label = updateDisplayLanguage(formConfig.properties.footer.saveButton.label, language);
581
+ }
582
+ return formConfig;
583
+ };
584
+ const updateFieldDisplayLanguage = (field, language) => {
585
+ if (checkObjectKeyExists(field, "label")) {
586
+ field.label = updateDisplayLanguage(field.label, language);
587
+ }
588
+ if (checkObjectPathExists(field, "properties.placeholder")) {
589
+ field.properties["placeholder"] = updateDisplayLanguage(field.properties["placeholder"], language);
590
+ }
591
+ const updateApiStatus = (fieldApiStatus) => {
592
+ for (const status in fieldApiStatus) {
593
+ fieldApiStatus[status] = updateDisplayLanguage(fieldApiStatus[status], language);
594
+ }
595
+ return fieldApiStatus;
596
+ };
597
+ if (field.type == EFieldType.API_CALL &&
598
+ checkObjectPathExists(field, "api.status")) {
599
+ field["api"]["status"]["labels"] = updateApiStatus(field["api"]["status"]["labels"]);
600
+ }
601
+ return field;
602
+ };
571
603
  let fields = getFormFields(formConfig);
572
604
  let fieldGroups = {};
573
605
  for (let field of fields) {
574
606
  field = formatOnFieldType(field);
575
607
  field = updateFieldDisability(field);
576
608
  fieldGroups = updateFormFieldGroups(fieldGroups, field);
577
- console.log("sadssadasdsdda");
578
- console.log(getObjectDeepCopy(field));
579
609
  field = updateFieldDefaultValue(field);
580
- console.log(getObjectDeepCopy(field));
581
610
  field = updateFieldValidators(field);
582
611
  field = updateFieldResetButton(field);
612
+ field = updateFieldDisplayLanguage(field, getLanguage());
583
613
  field = updateFieldMessages(field);
584
614
  }
615
+ formConfig = updateFormDisplayLanguage(formConfig, getLanguage());
585
616
  formConfig = setFormFieldGroups(formConfig, fieldGroups);
586
617
  formConfig = setFormFields(formConfig, fields);
587
618
  return formConfig;
@@ -599,4 +630,4 @@ __decorate([
599
630
  __decorate([
600
631
  logMethod
601
632
  ], Converter.prototype, "convertFormConfig", null);
602
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLWNvbnZlcnRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2t3aWtpZC1mb3Jtcy9zcmMvbGliL3JlbmRlcmVyL2NvbmZpZy1jb252ZXJ0ZXIvY29uZmlnLWNvbnZlcnRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUNMLG9CQUFvQixFQUNwQixxQkFBcUIsRUFDckIsaUJBQWlCLEVBQ2pCLFlBQVksRUFDWixlQUFlLEVBQ2YsU0FBUyxFQUNULFlBQVksRUFDWixrQkFBa0IsRUFDbEIsb0JBQW9CLEVBQ3JCLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNEQUFzRCxDQUFDO0FBQ2xGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2hFLE9BQU8sRUFDTCxhQUFhLEVBQ2IsVUFBVSxFQUNWLFVBQVUsRUFDVixxQkFBcUIsRUFDckIsaUJBQWlCLEVBQ2pCLGdCQUFnQixFQUNoQix1QkFBdUIsRUFDeEIsTUFBTSwyQkFBMkIsQ0FBQztBQUVuQyxNQUFNLE9BQU8sU0FBUztJQUVwQiw2QkFBNkIsQ0FBQyxVQUFlLEVBQUUsSUFBUztRQUN0RCxJQUFJLG9CQUFvQixDQUFDLElBQUksRUFBRSxpQkFBaUIsQ0FBQyxFQUFFO1lBQ2pELFVBQVUsR0FBRyxvQkFBb0IsQ0FDL0IsVUFBVSxFQUNWLGlCQUFpQixFQUNqQixJQUFJLENBQUMsZUFBZSxDQUNyQixDQUFDO1NBQ0g7UUFFRCxPQUFPLFVBQVUsQ0FBQztJQUNwQixDQUFDO0lBR0QsOEJBQThCLENBQUMsVUFBZSxFQUFFLFVBQWU7UUFDN0QsSUFBSSxlQUFlLENBQUMsVUFBVSxDQUFDLEVBQUU7WUFDL0IsSUFBSSxvQkFBb0IsQ0FBQyxVQUFVLEVBQUUsT0FBTyxDQUFDLEVBQUU7Z0JBQzdDLElBQUksb0JBQW9CLENBQUMsVUFBVSxDQUFDLEtB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LEtBQUssR0FBRyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUNwQztRQUVELFVBQVUsR0FBRyxrQkFBa0IsQ0FBQyxVQUFVLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFFekQsVUFBVSxHQUFHLGFBQWEsQ0FBQyxVQUFVLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFFL0MsT0FBTyxVQUFVLENBQUM7SUFDcEIsQ0FBQztDQUNGO0FBbnJCQztJQURDLFNBQVM7OERBV1Q7QUFHRDtJQURDLFNBQVM7K0RBZVQ7QUFHRDtJQURDLFNBQVM7MkRBbURUO0FBR0Q7SUFEQyxTQUFTO2tEQWdtQlQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBjaGVja09iamVjdEtleUV4aXN0cyxcbiAgY2hlY2tPYmplY3RQYXRoRXhpc3RzLFxuICBnZXRPYmplY3REZWVwQ29weSxcbiAgaXNFbXB0eVZhbHVlLFxuICBpc05vdEVtcHR5VmFsdWUsXG4gIGxvZ01ldGhvZCxcbiAgbWVyZ2VPYmplY3RzLFxuICBzZXRNaXNzaW5nS2V5VmFsdWUsXG4gIHNldFZhbHVlVG9PYmplY3RQYXRoXG59IGZyb20gXCJrd2lraWQtdG9vbGtpdFwiO1xuaW1wb3J0IHsgRUZpZWxkVHlwZSB9IGZyb20gXCIuLi9mb3JtLXZpZXcvZGVmaW5pdGlvbnMvZm9ybS12aWV3LmZpZWxkcy5kZWZpbml0aW9uXCI7XG5pbXBvcnQgeyBGSUVMRF9QUk9QRVJUSUVTIH0gZnJvbSBcIi4vY29uZmlnLWNvbnZlcnRlci5jb25zdGFudHNcIjtcbmltcG9ydCB7XG4gIGdldEZvcm1GaWVsZHMsXG4gIGdldE1heERhdGUsXG4gIGdldE1pbkRhdGUsXG4gIHNldEZpZWxkQXNGb3JtRWxlbWVudCxcbiAgc2V0RmllbGRLZXlIaWRkZW4sXG4gIHNldEZpZWxkS2V5VmFsdWUsXG4gIHNldE1pc3NpbmdGaWVsZEtleVZhbHVlXG59IGZyb20gXCIuL2NvbmZpZy1jb252ZXJ0ZXIuaGVscGVyXCI7XG5cbmV4cG9ydCBjbGFzcyBDb252ZXJ0ZXIge1xuICBAbG9nTWV0aG9kXG4gIHVwZGF0ZUZvcm1Db25maWdNaXNjZWxsYW5lb3VzKGZvcm1Db25maWc6IGFueSwgYXJnczogYW55KTogYW55IHtcbiAgICBpZiAoY2hlY2tPYmplY3RLZXlFeGlzdHMoYXJncywgXCJmb3Jtc0xpc3RMZW5ndGhcIikpIHtcbiAgICAgIGZvcm1Db25maWcgPSBzZXRWYWx1ZVRvT2JqZWN0UGF0aChcbiAgICAgICAgZm9ybUNvbmZpZyxcbiAgICAgICAgXCJmb3Jtc0xpc3RMZW5ndGhcIixcbiAgICAgICAgYXJncy5mb3Jtc0xpc3RMZW5ndGhcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZvcm1Db25maWc7XG4gIH1cblxuICBAbG9nTWV0aG9kXG4gIHVwZGF0ZUZvcm1Db25maWdGcm9tVXNlckNvbmZpZyhmb3JtQ29uZmlnOiBhbnksIHVzZXJDb25maWc6IGFueSk6IGFueSB7XG4gICAgaWYgKGlzTm90RW1wdHlWYWx1ZSh1c2VyQ29uZmlnKSkge1xuICAgICAgaWYgKGNoZWNrT2JqZWN0S2V5RXhpc3RzKHVzZXJDb25maWcsIFwidGhlbWVcIikpIHtcbiAgICAgICAgaWYgKGNoZWNrT2JqZWN0S2V5RXhpc3RzKHVzZXJDb25maWcudGhlbWUsIFwiY2xpZW50TG9nb1wiKSkge1xuICAgICAgICAgIHNldFZhbHVlVG9PYmplY3RQYXRoKFxuICAgICAgICAgICAgZm9ybUNvbmZpZyxcbiAgICAgICAgICAgIFwicHJvcGVydGllcy5oZWFkZXIubG9nby5zcmNcIixcbiAgICAgICAgICAgIHVzZXJDb25maWcudGhlbWUuY2xpZW50TG9nb1xuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZm9ybUNvbmZpZztcbiAgfVxuXG4gIEBsb2dNZXRob2RcbiAgdXBkYXRlRm9ybUNvbmZpZ1Byb3BlcnRpZXMoZm9ybUNvbmZpZzogYW55KTogYW55IHtcbiAgICBjb25zdCBmb3JtVmlld1Byb3BlcnRpZXMgPSB7XG4gICAgICBoZWFkZXI6IHtcbiAgICAgICAgbG9nbzoge1xuICAgICAgICAgIHNyYzogXCJcIixcbiAgICAgICAgICBhbHQ6IFwiTG9nb1wiLFxuICAgICAgICAgIGhpZGRlbjogZmFsc2UsXG4gICAgICAgICAgc3R5bGVzOiBcIlwiXG4gICAgICAgIH0sXG4gICAgICAgIGJhY2tCdXR0b246IHtcbiAgICAgICAgICBtb2RlOiBcIlRBQkJFRFwiLFxuICAgICAgICAgIGJ5cGFzc0NvbmZpcm1hdGlvbjogZmFsc2UsXG4gICAgICAgICAgaGlkZGVuOiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIHRpdGxlOiB7XG4gICAgICAgICAgaGlkZGVuOiBmYWxzZSxcbiAgICAgICAgICBsYWJlbDogZm9ybUNvbmZpZz8udGl0bGUgPz8gZm9ybUNvbmZpZz8ucHJvcHMudGl0bGUgPz8gXCJGb3JtXCIsXG4gICAgICAgICAgc3R5bGVzOiBcIlwiXG4gICAgICAgIH0sXG4gICAgICAgIHN0ZXBzOiB7XG4gICAgICAgICAgaGlkZGVuOiBmYWxzZSxcbiAgICAgICAgICBzdHlsZXM6IFwiXCJcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIG1haW46IHtcbiAgICAgICAgc3R5bGVzOiBcIlwiXG4gICAgICB9LFxuICAgICAgZm9vdGVyOiB7XG4gICAgICAgIHZpZXdGb3Jtc0J1dHRvbjoge1xuICAgICAgICAgIGJ5cGFzc0NvbmZpcm1hdGlvbjogZmFsc2UsXG4gICAgICAgICAgaGlkZGVuOiBmYWxzZSxcbiAgICAgICAgICBsYWJlbDogXCJWaWV3IEZvcm1zXCJcbiAgICAgICAgfSxcbiAgICAgICAgc2F2ZUJ1dHRvbjoge1xuICAgICAgICAgIGhpZGRlbjogZmFsc2UsXG4gICAgICAgICAgbGFiZWw6IFwiU2F2ZVwiXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBpc1Vuc2F2ZWREYXRhQWxlcnRFbmFibGVkOiBmYWxzZVxuICAgIH07XG5cbiAgICBpZiAoY2hlY2tPYmplY3RLZXlFeGlzdHMoZm9ybUNvbmZpZywgXCJwcm9wZXJ0aWVzXCIpKSB7XG4gICAgICBmb3JtQ29uZmlnLnByb3BlcnRpZXMgPSBnZXRPYmplY3REZWVwQ29weShcbiAgICAgICAgbWVyZ2VPYmplY3RzKGZvcm1WaWV3UHJvcGVydGllcywgZm9ybUNvbmZpZy5wcm9wZXJ0aWVzKVxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZm9ybUNvbmZpZy5wcm9wZXJ0aWVzID0gZm9ybVZpZXdQcm9wZXJ0aWVzO1xuICAgIH1cblxuICAgIHJldHVybiBmb3JtQ29uZmlnO1xuICB9XG5cbiAgQGxvZ01ldGhvZFxuICBjb252ZXJ0Rm9ybUNvbmZpZyhmb3JtQ29uZmlnOiBhbnkpOiBhbnkge1xuICAgIGNvbnN0IGZvcm1hdE9uRmllbGRUeXBlID0gKGZpZWxkOiBhbnkpOiBhbnkgPT4ge1xuICAgICAgY29uc3QgdXBkYXRlRm9ybUZpZWxkUHJvcGVydGllcyA9IChmaWVsZDogYW55KTogYW55ID0+IHtcbiAgICAgICAgaWYgKGNoZWNrT2JqZWN0S2V5RXhpc3RzKEZJRUxEX1BST1BFUlRJRVMsIGZpZWxkLnR5cGUpKSB7XG4gICAgICAgICAgZmllbGQucHJvcGVydGllcyA9IG1lcmdlT2JqZWN0cyhcbiAgICAgICAgICAgIGdldE9iamVjdERlZXBDb3B5KEZJRUxEX1BST1BFUlRJRVNbZmllbGQudHlwZV0pLFxuICAgICAgICAgICAgZmllbGQucHJvcGVydGllc1xuICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZmllbGQ7XG4gICAgICB9O1xuXG4gICAgICBjb25zdCBmb3JtYXRGaWVsZFR5cGVIdG1sID0gKGZpZWxkOiBhbnkpOiBhbnkgPT4ge1xuICAgICAgICBmaWVsZCA9IHNldEZpZWxkS2V5SGlkZGVuKGZpZWxkKTtcbiAgICAgICAgZmllbGQgPSBzZXRGaWVsZEFzRm9ybUVsZW1lbnQoZmllbGQsIGZhbHNlKTtcblxuICAgICAgICByZXR1cm4gZmllbGQ7XG4gICAgICB9O1xuICAgICAgY29uc3QgZm9ybWF0RmllbGRUeXBlVGl0bGUgPSAoZmllbGQ6IGFueSk6IGFueSA9PiB7XG4gICAgICAgIGZpZWxkID0gc2V0RmllbGRLZXlIaWRkZW4oZmllbGQpO1xuICAgICAgICBmaWVsZCA9IHNldEZpZWxkQXNGb3JtRWxlbWVudChmaWVsZCwgZmFsc2UpO1xuXG4gICAgICAgIHJldHVybiBmaWVsZDtcbiAgICAgIH07XG4gICAgICBjb25zdCBmb3JtYXRGaWVsZFR5cGVCdXR0b24gPSAoZmllbGQ6IGFueSk6IGFueSA9PiB7XG4gICAgICAgIGZpZWxkID0gc2V0TWlzc2luZ0ZpZWxkS2V5VmFsdWUoZmllbGQsIFwiaGlkZGVuXCIsIGZhbHNlKTtcbiAgICAgICAgZmllbGQgPSBzZXRGaWVsZEFzRm9ybUVsZW1lbnQoZmllbGQsIGZhbHNlKTtcbiAgICAgICAgZmllbGQgPSB1cGRhdGVGb3JtRmllbGRQcm9wZXJ0aWVzKGZpZWxkKTtcblxuICAgICAgICByZXR1cm4gZmllbGQ7XG4gICAgICB9O1xuICAgICAgY29uc3QgZm9ybWF0RmllbGRUeXBlVGV4dCA9IChmaWVsZDogYW55KTogYW55ID0+IHtcbiAgICAgICAgZmllbGQgPSBzZXRGaWVsZEtleUhpZGRlbihmaWVsZCk7XG4gICAgICAgIGZpZWxkID0gc2V0RmllbGRBc0Zvcm1FbGVtZW50KGZpZWxkLCB0cnVlKTtcbiAgICAgICAgZmllbGQgPSB1cGRhdGVGb3JtRmllbGRQcm9wZXJ0aWVzKGZpZWxkKTtcblxuICAgICAgICByZXR1cm4gZmllbGQ7XG4gICAgICB9O1xuICAgICAgY29uc3QgZm9ybWF0RmllbGRUeXBlUGFzc3dvcmQgPSAoZmllbGQ6IGFueSk6IGFueSA9PiB7XG4gICAgICAgIGZpZWxkID0gc2V0RmllbGRLZXlIaWRkZW4oZmllbGQpO1xuICAgICAgICBmaWVsZCA9IHNldEZpZWxkQXNGb3JtRWxlbWVudChmaWVsZCwgdHJ1ZSk7XG4gICAgICAgIGZpZWxkID0gdXBkYXRlRm9ybUZpZWxkUHJvcGVydGllcyhmaWVsZCk7XG5cbiAgICAgICAgcmV0dXJuIGZpZWxkO1xuICAgICAgfTtcbiAgICAgIGNvbnN0IGZvcm1hdEZpZWxkVHlwZUVtYWlsID0gKGZpZWxkOiBhbnkpOiBhbnkgPT4ge1xuICAgICAgICBmaWVsZCA9IHNldEZpZWxkS2V5SGlkZGVuKGZpZWxkKTtcbiAgICAgICAgZmllbGQgPSBzZXRGaWVsZEFzRm9ybUVsZW1lbnQoZmllbGQsIHRydWUpO1xuICAgICAgICBmaWVsZCA9IHVwZGF0ZUZvcm1GaWVsZFByb3BlcnRpZXMoZmllbGQpO1xuXG4gICAgICAgIHJldHVybiBmaWVsZDtcbiAgICAgIH07XG4gICAgICBjb25zdCBmb3JtYXRGaWVsZFR5cGVTdGFyUmF0aW5nID0gKGZpZWxkOiBhbnkpOiBhbnkgPT4ge1xuICAgICAgICBmaWVsZCA9IHNldEZpZWxkS2V5SGlkZGVuKGZpZWxkKTtcbiAgICAgICAgZmllbGQgPSBzZXRGaWVsZEFzRm9ybUVsZW1lbnQoZmllbGQsIHRydWUpO1xuICAgICAgICBmaWVsZCA9IHVwZGF0ZUZvcm1GaWVsZFByb3BlcnRpZXMoZmllbGQpO1xuXG4gICAgICAgIHJldHVybiBmaWVsZDtcbiAgICAgIH07XG4gICAgICBjb25zdCBmb3JtYXRGaWVsZFR5cGVUZXh0YXJlYSA9IChmaWVsZDogYW55KTogYW55ID0+IHtcbiAgICAgICAgZmllbGQgPSBzZXRGaWVsZEtleUhpZGRlbihmaWVsZCk7XG4gICAgICAgIGZpZWxkID0gc2V0RmllbGRBc0Zvcm1FbGVtZW50KGZpZWxkLCB0cnVlKTtcbiAgICAgICAgcmV0dXJuIGZpZWxkO1xuICAgICAgfTtcbiAgICAgIGNvbnN0IGZvcm1hdEZpZWxkVHlwZUNoZWNrYm94ID0gKGZpZWxkOiBhbnkpOiBhbnkgPT4ge1xuICAgICAgICBmaWVsZCA9IHNldEZpZWxkS2V5SGlkZGVuKGZpZWxkKTtcbiAgICAgICAgZmllbGQgPSBzZXRGaWVsZEFzRm9ybUVsZW1lbnQoZmllbGQsIHRydWUpO1xuICAgICAgICByZXR1cm4gZmllbGQ7XG4gICAgICB9O1xuICAgICAgY29uc3QgZm9ybWF0RmllbGRUeXBlTnVtYmVyID0gKGZpZWxkOiBhbnkpOiBhbnkgPT4ge1xuICAgICAgICBmaWVsZCA9IHNldEZpZWxkS2V5SGlkZGVuKGZpZWxkKTtcbiAgICAgICAgZmllbGQgPSBzZXRGaWVsZEFzRm9ybUVsZW1lbnQoZmllbGQsIHRydWUpO1xuXG4gICAgICAgIGlmIChjaGVja09iamVjdEtleUV4aXN0cyhmaWVsZCwgXCJrZXlcIikpIHtcbiAgICAgICAgICBpZiAoZmllbGQua2V5ID09PSBcImFhZGhhYXJfbnVtYmVyXCIpIHtcbiAgICAgICAgICAgIGZpZWxkID0gc2V0RmllbGRLZXlWYWx1ZShmaWVsZCwgXCJ0eXBlXCIsIFwiYWFkaGFhcl9udW1iZXJcIik7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChmaWVsZC5rZXkgPT09IFwiY29udGFjdF9udW1iZXJcIikge1xuICAgICAgICAgICAgZmllbGQgPSBzZXRGaWVsZEtleVZhbHVlKGZpZWxkLCBcInR5cGVcIiwgXCJwaG9uZVwiKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoZmllbGQudHlwZSA9PT0gXCJwaG9uZVwiIHx8IGZpZWxkLnR5cGUgPT09IFwibnVtYmVyXCIpIHtcbiAgICAgICAgICAgIGZpZWxkID0gdXBkYXRlRm9ybUZpZWxkUHJvcGVydGllcyhmaWVsZCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGZpZWxkO1xuICAgICAgfTtcbiAgICAgIGNvbnN0IGZvcm1hdEZpZWxkVHlwZUltYWdlID0gKGZpZWxkOiBhbnkpOiBhbnkgPT4ge1xuICAgICAgICBmaWVsZCA9IHNldEZpZWxkS2V5SGlkZGVuKGZpZWxkKTtcbiAgICAgICAgZmllbGQgPSBzZXRGaWVsZEFzRm9ybUVsZW1lbnQoZmllbGQsIHRydWUpO1xuICAgICAgICBmaWVsZCA9IHVwZGF0ZUZvcm1GaWVsZFByb3BlcnRpZXMoZmllbGQpO1xuXG4gICAgICAgIHJldHVybiBmaWVsZDtcbiAgICAgIH07XG4gICAgICBjb25zdCBmb3JtYXRGaWVsZFR5cGVEYXRlID0gKGZpZWxkOiBhbnkpOiBhbnkgPT4ge1xuICAgICAgICBmaWVsZCA9IHNldEZpZWxkS2V5SGlkZGVuKGZpZWxkKTtcbiAgICAgICAgZmllbGQgPSBzZXRGaWVsZEFzRm9ybUVsZW1lbnQoZmllbGQsIHRydWUpO1xuXG4gICAgICAgIGZpZWxkLnByb3BlcnRpZXMgPSBnZXRPYmplY3REZWVwQ29weShcbiAgICAgICAgICBtZXJnZU9iamVjdHMoXG4gICAgICAgICAgICBnZXRPYmplY3REZWVwQ29weShGSUVMRF9QUk9QRVJUSUVTW2ZpZWxkLnR5cGVdKSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgbWF4OiBnZXRNYXhEYXRlKGZpZWxkKSxcbiAgICAgICAgICAgICAgbWluOiBnZXRNaW5EYXRlKGZpZWxkKVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGZpZWxkLnByb3BlcnRpZXNcbiAgICAgICAgICApXG4gICAgICAgICk7XG5cbiAgICAgICAgcmV0dXJuIGZpZWxkO1xuICAgICAgfTtcbiAgICAgIGNvbnN0IGZvcm1hdEZpZWxkVHlwZVBob25lID0gKGZpZWxkOiBhbnkpOiBhbnkgPT4ge1xuICAgICAgICBmaWVsZCA9IHNldEZpZWxkS2V5SGlkZGVuKGZpZWxkKTtcbiAgICAgICAgZmllbGQgPSBzZXRGaWVsZEFzRm9ybUVsZW1lbnQoZmllbGQsIHRydWUpO1xuICAgICAgICBmaWVsZCA9IHVwZGF0ZUZvcm1GaWVsZFByb3BlcnRpZXMoZmllbGQpO1xuXG4gICAgICAgIHJldHVybiBmaWVsZDtcbiAgICAgIH07XG4gICAgICBjb25zdCBmb3JtYXRGaWVsZFR5cGVSYWRpbyA9IChmaWVsZDogYW55KTogYW55ID0+IHtcbiAgICAgICAgZmllbGQgPSBzZXRGaWVsZEtleUhpZGRlbihmaWVsZCk7XG4gICAgICAgIGZpZWxkID0gc2V0RmllbGRBc0Zvcm1FbGVtZW50KGZpZWxkLCB0cnVlKTtcbiAgICAgICAgZmllbGQgPSB1cGRhdGVGb3JtRmllbGRQcm9wZXJ0aWVzKGZpZWxkKTtcblxuICAgICAgICBmaWVsZC5vcHRpb25zID0gZmllbGQub3B0aW9ucy5tYXAoKHg6IGFueSk6IGFueSA9PiB7XG4gICAgICAgICAgaWYgKHR5cGVvZiB4ID09PSBcInN0cmluZ1wiIHx8IHR5cGVvZiB4ID09PSBcIm51bWJlclwiKSB7XG4gICAgICAgICAgICByZXR1cm4geyBsYWJlbDogeCwgZGlzYWJsZWQ6IGZhbHNlLCBkZXNjcmlwdGlvbjogXCJcIiB9O1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgIGNoZWNrT2JqZWN0S2V5RXhpc3RzKHgsIFwibGFiZWxcIikgJiZcbiAgICAgICAgICAgICAgY2hlY2tPYmplY3RLZXlFeGlzdHMoeCwgXCJkaXNhYmxlZFwiKSAmJlxuICAgICAgICAgICAgICBjaGVja09iamVjdEtleUV4aXN0cyh4LCBcImRlc2NyaXB0aW9uXCIpXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIWNoZWNrT2JqZWN0S2V5RXhpc3RzKHgsIFwiZGlzYWJsZWRcIikpIHtcbiAgICAgICAgICAgICAgeCA9IHsgLi4ueCwgZGlzYWJsZWQ6IGZhbHNlIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIWNoZWNrT2JqZWN0S2V5RXhpc3RzKHgsIFwiZGVzY3JpcHRpb25cIikpIHtcbiAgICAgICAgICAgICAgeCA9IHsgLi4ueCwgZGVzY3JpcHRpb246IGZhbHNlIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4geDtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBmaWVsZDtcbiAgICAgIH07XG4gICAgICBjb25zdCBmb3JtYXRGaWVsZFR5cGVTbGlkZXIgPSAoZmllbGQ6IGFueSk6IGFueSA9PiB7XG4gICAgICAgIGZpZWxkID0gc2V0RmllbGRLZXlIaWRkZW4oZmllbGQpO1xuICAgICAgICBmaWVsZCA9IHNldEZpZWxkQXNGb3JtRWxlbWVudChmaWVsZCwgdHJ1ZSk7XG4gICAgICAgIGZpZWxkID0gdXBkYXRlRm9ybUZpZWxkUHJvcGVydGllcyhmaWVsZCk7XG5cbiAgICAgICAgcmV0dXJuIGZpZWxkO1xuICAgICAgfTtcbiAgICAgIGNvbnN0IGZvcm1hdEZpZWxkVHlwZVNlbGVjdCA9IChmaWVsZDogYW55KTogYW55ID0+IHtcbiAgICAgICAgZmllbGQgPSBzZXRGaWVsZEtleUhpZGRlbihmaWVsZCk7XG4gICAgICAgIGZpZWxkID0gc2V0RmllbGRBc0Zvcm1FbGVtZW50KGZpZWxkLCB0cnVlKTtcbiAgICAgICAgZmllbGQgPSB1cGRhdGVGb3JtRmllbGRQcm9wZXJ0aWVzKGZpZWxkKTtcblxuICAgICAgICByZXR1cm4gZmllbGQ7XG4gICAgICB9O1xuICAgICAgY29uc3QgZm9ybWF0RmllbGRUeXBlQXBpID0gKGZpZWxkOiBhbnkpOiBhbnkgPT4ge1xuICAgICAgICBmaWVsZCA9IHNldEZpZWxkQXNGb3JtRWxlbWVudChmaWVsZCwgdHJ1ZSk7XG4gICAgICAgIGZpZWxkID0gdXBkYXRlRm9ybUZpZWxkUHJvcGVydGllcyhmaWVsZCk7XG5cbiAgICAgICAgaWYgKCFjaGVja09iamVjdEtleUV4aXN0cyhmaWVsZCwgXCJzaG93TG9hZGVyXCIpKSB7XG4gICAgICAgICAgZmllbGQgPSBzZXRGaWVsZEtleVZhbHVlKGZpZWxkLCBcInNob3dMb2FkZXJcIiwgZmFsc2UpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFjaGVja09iamVjdEtleUV4aXN0cyhmaWVsZCwgXCJhcGlcIikpIHtcbiAgICAgICAgICBjb25zdCBmaWVsZEFwaURlZmF1bHRzID0ge1xuICAgICAgICAgICAgdXJsOiBcIlwiLFxuICAgICAgICAgICAgcmVxdWVzdDoge30sXG4gICAgICAgICAgICByZXNwb25zZToge30sXG4gICAgICAgICAgICBzdGF0dXM6IHtcbiAgICAgICAgICAgICAgdmFsdWU6IFwiZGVmYXVsdFwiLFxuICAgICAgICAgICAgICBsYWJlbHM6IHtcbiAgICAgICAgICAgICAgICBkZWZhdWx0OiBcIkNhbGwgQVBJXCIsXG4gICAgICAgICAgICAgICAgbG9hZGluZzogXCJDYWxsIEFQSVwiLFxuICAgICAgICAgICAgICAgIHJldHJ5OiBcIlJldHJ5IEFQSVwiLFxuICAgICAgICAgICAgICAgIHN1Y2Nlc3M6IFwiQVBJIFN1Y2Nlc3NcIixcbiAgICAgICAgICAgICAgICBmYWlsZWQ6IFwiQVBJIEZhaWxlZFwiXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9O1xuICAgICAgICAgIGZpZWxkLmFwaSA9IGdldE9iamVjdERlZXBDb3B5KFxuICAgICAgICAgICAgbWVyZ2VPYmplY3RzKGZpZWxkQXBpRGVmYXVsdHMsIGZpZWxkQXBpRGVmYXVsdHMpXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoXG4gICAgICAgICAgIWNoZWNrT2JqZWN0S2V5RXhpc3RzKGZpZWxkLmFwaSwgXCJyZXF1ZXN0XCIpICYmXG4gICAgICAgICAgIWNoZWNrT2JqZWN0S2V5RXhpc3RzKGZpZWxkLmFwaSwgXCJlbnRyeXBvaW50XCIpXG4gICAgICAgICkge1xuICAgICAgICAgIGNvbnN0IGFwaUVudHJ5cG9pbnQgPSB7XG4gICAgICAgICAgICB0cmlnZ2VyczogW1wiT05fQVBJX0NBTExcIl0sXG4gICAgICAgICAgICBydWxlczogW10sXG4gICAgICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBpZDogXCIxXCIsXG4gICAgICAgICAgICAgICAga2V5OiBcIkFQSV9DQUxMXCIsXG4gICAgICAgICAgICAgICAgY29uZGl0aW9uOiBcInRydWVcIixcbiAgICAgICAgICAgICAgICBwcm9wczoge1xuICAgICAgICAgICAgICAgICAgZmllbGRLZXk6IGZpZWxkLmtleSxcbiAgICAgICAgICAgICAgICAgIGFwaUtleTogZmllbGQuYXBpLmVuZHBvaW50c1swXS5hcGlLZXlcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgICB9O1xuICAgICAgICAgIGZpZWxkLmVudHJ5cG9pbnQgPSBnZXRPYmplY3REZWVwQ29weShcbiAgICAgICAgICAgIG1lcmdlT2JqZWN0cyhhcGlFbnRyeXBvaW50LCBmaWVsZC5hcGkpXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmllbGQ7XG4gICAgICB9O1xuICAgICAgY29uc3QgZm9ybWF0RmllbGRUeXBlT3RwID0gKGZpZWxkOiBhbnkpOiBhbnkgPT4ge1xuICAgICAgICBmaWVsZCA9IHNldEZpZWxkS2V5SGlkZGVuKGZpZWxkKTtcbiAgICAgICAgZmllbGQgPSBzZXRGaWVsZEFzRm9ybUVsZW1lbnQoZmllbGQsIHRydWUpO1xuXG4gICAgICAgIGZpZWxkLnByb3BlcnRpZXMgPSBnZXRPYmplY3REZWVwQ29weShcbiAgICAgICAgICBtZXJnZU9iamVjdHMoXG4gICAgICAgICAgICBnZXRPYmplY3REZWVwQ29weShGSUVMRF9QUk9QRVJUSUVTW2ZpZWxkLnR5cGVdKSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgbWFzazogbmV3IEFycmF5KGZpZWxkPy5wcm9wZXJ0aWVzPy5vdHBMZW5ndGggPz8gNClcbiAgICAgICAgICAgICAgICAuZmlsbChcIiNcIilcbiAgICAgICAgICAgICAgICAuam9pbihcIiBcIilcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBmaWVsZC5wcm9wZXJ0aWVzXG4gICAgICAgICAgKVxuICAgICAgICApO1xuXG4gICAgICAgIHJldHVybiBmaWVsZDtcbiAgICAgIH07XG4gICAgICBjb25zdCBmb3JtYXRGaWVsZFR5cGVBYWRoYWFyTnVtYmVyID0gKGZpZWxkOiBhbnkpOiBhbnkgPT4ge1xuICAgICAgICBmaWVsZCA9IHNldEZpZWxkS2V5SGlkZGVuKGZpZWxkKTtcbiAgICAgICAgZmllbGQgPSBzZXRGaWVsZEFzRm9ybUVsZW1lbnQoZmllbGQsIHRydWUpO1xuICAgICAgICBmaWVsZCA9IHVwZGF0ZUZvcm1GaWVsZFByb3BlcnRpZXMoZmllbGQpO1xuXG4gICAgICAgIHJldHVybiBmaWVsZDtcbiAgICAgIH07XG4gICAgICBjb25zdCBmb3JtYXRGaWVsZFR5cGVGaWxlID0gKGZpZWxkOiBhbnkpOiBhbnkgPT4ge1xuICAgICAgICBmaWVsZCA9IHNldEZpZWxkS2V5SGlkZGVuKGZpZWxkKTtcbiAgICAgICAgZmllbGQgPSBzZXRGaWVsZEFzRm9ybUVsZW1lbnQoZmllbGQsIHRydWUpO1xuICAgICAgICBmaWVsZCA9IHVwZGF0ZUZvcm1GaWVsZFByb3BlcnRpZXMoZmllbGQpO1xuXG4gICAgICAgIHJldHVybiBmaWVsZDtcbiAgICAgIH07XG4gICAgICBjb25zdCBmb3JtYXRGaWVsZFR5cGVDYXB0dXJlID0gKGZpZWxkOiBhbnkpOiBhbnkgPT4ge1xuICAgICAgICBmaWVsZCA9IHNldEZpZWxkS2V5SGlkZGVuKGZpZWxkKTtcbiAgICAgICAgZmllbGQgPSBzZXRGaWVsZEFzRm9ybUVsZW1lbnQoZmllbGQsIHRydWUpO1xuICAgICAgICBmaWVsZCA9IHVwZGF0ZUZvcm1GaWVsZFByb3BlcnRpZXMoZmllbGQpO1xuXG4gICAgICAgIHJldHVybiBmaWVsZDtcbiAgICAgIH07XG5cbiAgICAgIHN3aXRjaCAoZmllbGQudHlwZSkge1xuICAgICAgICBjYXNlIEVGaWVsZFR5cGUuSFRNTDpcbiAgICAgICAgICBmaWVsZCA9IGZvcm1hdEZpZWxkVHlwZUh0bWwoZmllbGQpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIEVGaWVsZFR5cGUuVElUTEU6XG4gICAgICAgICAgZmllbGQgPSBmb3JtYXRGaWVsZFR5cGVUaXRsZShmaWVsZCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgRUZpZWxkVHlwZS5CVVRUT046XG4gICAgICAgICAgZmllbGQgPSBmb3JtYXRGaWVsZFR5cGVCdXR0b24oZmllbGQpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIEVGaWVsZFR5cGUuVEVYVDpcbiAgICAgICAgICBmaWVsZCA9IGZvcm1hdEZpZWxkVHlwZVRleHQoZmllbGQpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIEVGaWVsZFR5cGUuUEFTU1dPUkQ6XG4gICAgICAgICAgZmllbGQgPSBmb3JtYXRGaWVsZFR5cGVQYXNzd29yZChmaWVsZCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgRUZpZWxkVHlwZS5FTUFJTDpcbiAgICAgICAgICBmaWVsZCA9IGZvcm1hdEZpZWxkVHlwZUVtYWlsKGZpZWxkKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBFRmllbGRUeXBlLlRFWFRBUkVBOlxuICAgICAgICAgIGZpZWxkID0gZm9ybWF0RmllbGRUeXBlVGV4dGFyZWEoZmllbGQpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIEVGaWVsZFR5cGUuQ0hFQ0tCT1g6XG4gICAgICAgICAgZmllbGQgPSBmb3JtYXRGaWVsZFR5cGVDaGVja2JveChmaWVsZCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgRUZpZWxkVHlwZS5OVU1CRVI6XG4gICAgICAgICAgZmllbGQgPSBmb3JtYXRGaWVsZFR5cGVOdW1iZXIoZmllbGQpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIEVGaWVsZFR5cGUuUFJFVklFV19JTUFHRTpcbiAgICAgICAgICBmaWVsZCA9IHNldEZpZWxkS2V5VmFsdWUoZmllbGQsIFwidHlwZVwiLCBcImltYWdlXCIpO1xuICAgICAgICAgIGZpZWxkID0gZm9ybWF0RmllbGRUeXBlSW1hZ2UoZmllbGQpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIEVGaWVsZFR5cGUuSU1BR0U6XG4gICAgICAgICAgZmllbGQgPSBmb3JtYXRGaWVsZFR5cGVJbWFnZShmaWVsZCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgRUZpZWxkVHlwZS5EQVRFOlxuICAgICAgICAgIGZpZWxkID0gZm9ybWF0RmllbGRUeXBlRGF0ZShmaWVsZCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgRUZpZWxkVHlwZS5QSE9ORTpcbiAgICAgICAgICBmaWVsZCA9IGZvcm1hdEZpZWxkVHlwZVBob25lKGZpZWxkKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBFRmllbGRUeXBlLlJBRElPOlxuICAgICAgICAgIGZpZWxkID0gZm9ybWF0RmllbGRUeXBlUmFkaW8oZmllbGQpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIEVGaWVsZFR5cGUuU0xJREVSOlxuICAgICAgICAgIGZpZWxkID0gZm9ybWF0RmllbGRUeXBlU2xpZGVyKGZpZWxkKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBcInNlYXJjaC10ZXh0XCI6XG4gICAgICAgICAgZmllbGQgPSBzZXRGaWVsZEtleVZhbHVlKGZpZWxkLCBcInR5cGVcIiwgXCJzZWxlY3RcIik7XG4gICAgICAgICAgZmllbGQgPSBmb3JtYXRGaWVsZFR5cGVTZWxlY3QoZmllbGQpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIEVGaWVsZFR5cGUuRFJPUERPV05fV0lUSF9TRUFSQ0g6XG4gICAgICAgICAgZmllbGQgPSBzZXRGaWVsZEtleVZhbHVlKGZpZWxkLCBcInR5cGVcIiwgXCJzZWxlY3RcIik7XG4gICAgICAgICAgZmllbGQgPSBmb3JtYXRGaWVsZFR5cGVTZWxlY3QoZmllbGQpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIEVGaWVsZFR5cGUuU0VMRUNUOlxuICAgICAgICAgIGZpZWxkID0gZm9ybWF0RmllbGRUeXBlU2VsZWN0KGZpZWxkKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBFRmllbGRUeXBlLkFQSV9DQUxMOlxuICAgICAgICAgIGZpZWxkID0gc2V0RmllbGRLZXlWYWx1ZShmaWVsZCwgXCJ0eXBlXCIsIFwiYXBpXCIpO1xuICAgICAgICAgIGZpZWxkID0gZm9ybWF0RmllbGRUeXBlQXBpKGZpZWxkKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBFRmllbGRUeXBlLkFQSTpcbiAgICAgICAgICBmaWVsZCA9IGZvcm1hdEZpZWxkVHlwZUFwaShmaWVsZCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgRUZpZWxkVHlwZS5PVFA6XG4gICAgICAgICAgZmllbGQgPSBmb3JtYXRGaWVsZFR5cGVPdHAoZmllbGQpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIEVGaWVsZFR5cGUuQUFESEFBUl9OVU1CRVI6XG4gICAgICAgICAgZmllbGQgPSBmb3JtYXRGaWVsZFR5cGVBYWRoYWFyTnVtYmVyKGZpZWxkKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBFRmllbGRUeXBlLkZJTEU6XG4gICAgICAgICAgZmllbGQgPSBmb3JtYXRGaWVsZFR5cGVGaWxlKGZpZWxkKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBFRmllbGRUeXBlLkNBUFRVUkU6XG4gICAgICAgICAgZmllbGQgPSBmb3JtYXRGaWVsZFR5cGVDYXB0dXJlKGZpZWxkKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBFRmllbGRUeXBlLlNUQVJfUkFUSU5HOlxuICAgICAgICAgIGZpZWxkID0gZm9ybWF0RmllbGRUeXBlU3RhclJhdGluZyhmaWVsZCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBmaWVsZDtcbiAgICB9O1xuXG4gICAgY29uc3QgdXBkYXRlRmllbGRWYWxpZGF0b3JzID0gKGZpZWxkOiBhbnkpOiBhbnkgPT4ge1xuICAgICAgaWYgKGZpZWxkLmlzRm9ybUVsZW1lbnQpIHtcbiAgICAgICAgY29uc3QgdmFsaWRhdG9ycyA9IGNoZWNrT2JqZWN0S2V5RXhpc3RzKGZpZWxkLCBcInZhbGlkYXRvcnNcIilcbiAgICAgICAgICA/IGZpZWxkLnZhbGlkYXRvcnNcbiAgICAgICAgICA6IHt9O1xuXG4gICAgICAgIGZpZWxkID0gc2V0TWlzc2luZ0ZpZWxkS2V5VmFsdWUoZmllbGQsIFwidmFsaWRhdG9yc1wiLCB7fSk7XG5cbiAgICAgICAgZmllbGQgPSBzZXRGaWVsZEtleVZhbHVlKGZpZWxkLCBcInZhbGlkYXRvcnNcIiwge1xuICAgICAgICAgIC4uLmZpZWxkW1widmFsaWRhdG9yc1wiXSxcbiAgICAgICAgICBtaW46IGNoZWNrT2JqZWN0S2V5RXhpc3RzKHZhbGlkYXRvcnMsIFwibWluXCIpXG4gICAgICAgICAgICA/IGlzTm90RW1wdHlWYWx1ZSh2YWxpZGF0b3JzLm1pbilcbiAgICAgICAgICAgICAgPyBOdW1iZXIodmFsaWRhdG9ycy5taW4pXG4gICAgICAgICAgICAgIDogbnVsbFxuICAgICAgICAgICAgOiBjaGVja09iamVjdEtleUV4aXN0cyhmaWVsZCwgXCJtaW5cIilcbiAgICAgICAgICAgID8gTnVtYmVyKGZpZWxkLm1pbilcbiAgICAgICAgICAgIDogbnVsbCxcbiAgICAgICAgICBtYXg6IGNoZWNrT2JqZWN0S2V5RXhpc3RzKHZhbGlkYXRvcnMsIFwibWF4XCIpXG4gICAgICAgICAgICA/IGlzTm90RW1wdHlWYWx1ZSh2YWxpZGF0b3JzLm1heClcbiAgICAgICAgICAgICAgPyBOdW1iZXIodmFsaWRhdG9ycy5tYXgpXG4gICAgICAgICAgICAgIDogbnVsbFxuICAgICAgICAgICAgOiBjaGVja09iamVjdEtleUV4aXN0cyhmaWVsZCwgXCJtYXhcIilcbiAgICAgICAgICAgID8gTnVtYmVyKGZpZWxkLm1heClcbiAgICAgICAgICAgIDogbnVsbCxcbiAgICAgICAgICByZXF1aXJlZDogY2hlY2tPYmplY3RLZXlFeGlzdHModmFsaWRhdG9ycywgXCJyZXF1aXJlZFwiKVxuICAgICAgICAgICAgPyBCb29sZWFuKHZhbGlkYXRvcnMucmVxdWlyZWQpXG4gICAgICAgICAgICA6IGNoZWNrT2JqZWN0S2V5RXhpc3RzKGZpZWxkLCBcInJlcXVpcmVkXCIpXG4gICAgICAgICAgICA/IEJvb2xlYW4oZmllbGQucmVxdWlyZWQpXG4gICAgICAgICAgICA6IGZhbHNlLFxuICAgICAgICAgIG1pbkxlbmd0aDogY2hlY2tPYmplY3RLZXlFeGlzdHModmFsaWRhdG9ycywgXCJtaW5MZW5ndGhcIilcbiAgICAgICAgICAgID8gaXNOb3RFbXB0eVZhbHVlKHZhbGlkYXRvcnMubWluTGVuZ3RoKVxuICAgICAgICAgICAgICA/IE51bWJlcih2YWxpZGF0b3JzLm1pbkxlbmd0aClcbiAgICAgICAgICAgICAgOiBudWxsXG4gICAgICAgICAgICA6IGNoZWNrT2JqZWN0S2V5RXhpc3RzKGZpZWxkLCBcIm1pbkxlbmd0aFwiKVxuICAgICAgICAgICAgPyBOdW1iZXIoZmllbGQubWluTGVuZ3RoKVxuICAgICAgICAgICAgOiBudWxsLFxuICAgICAgICAgIG1heExlbmd0aDogY2hlY2tPYmplY3RLZXlFeGlzdHModmFsaWRhdG9ycywgXCJtYXhMZW5ndGhcIilcbiAgICAgICAgICAgID8gaXNOb3RFbXB0eVZhbHVlKHZhbGlkYXRvcnMubWF4TGVuZ3RoKVxuICAgICAgICAgICAgICA/IE51bWJlcih2YWxpZGF0b3JzLm1heExlbmd0aClcbiAgICAgICAgICAgICAgOiBudWxsXG4gICAgICAgICAgICA6IGNoZWNrT2JqZWN0S2V5RXhpc3RzKGZpZWxkLCBcImxlbmd0aFwiKVxuICAgICAgICAgICAgPyBOdW1iZXIoZmllbGQubGVuZ3RoKVxuICAgICAgICAgICAgOiBjaGVja09iamVjdEtleUV4aXN0cyhmaWVsZCwgXCJtYXhMZW5ndGhcIilcbiAgICAgICAgICAgID8gTnVtYmVyKGZpZWxkLm1heExlbmd0aClcbiAgICAgICAgICAgIDogbnVsbCxcbiAgICAgICAgICBwYXR0ZXJuOiBjaGVja09iamVjdEtleUV4aXN0cyh2YWxpZGF0b3JzLCBcInBhdHRlcm5cIilcbiAgICAgICAgICAgID8gaXNOb3RFbXB0eVZhbHVlKHZhbGlkYXRvcnMucGF0dGVybilcbiAgICAgICAgICAgICAgPyB2YWxpZGF0b3JzLnBhdHRlcm5cbiAgICAgICAgICAgICAgOiB1bmRlZmluZWRcbiAgICAgICAgICAgIDogY2hlY2tPYmplY3RLZXlFeGlzdHMoZmllbGQsIFwicGF0dGVyblwiKVxuICAgICAgICAgICAgPyB7IGtleTogXCJDVVNUT01cIiwgcGF0dGVybjogU3RyaW5nKGZpZWxkLnBhdHRlcm4pIH1cbiAgICAgICAgICAgIDogY2hlY2tPYmplY3RLZXlFeGlzdHMoZmllbGQsIFwicmVnZXhcIilcbiAgICAgICAgICAgID8geyBrZXk6IFwiQ1VTVE9NXCIsIHBhdHRlcm46IFN0cmluZyhmaWVsZC5yZWdleCkgfVxuICAgICAgICAgICAgOiB1bmRlZmluZWRcbiAgICAgICAgfSk7XG5cbiAgICAgICAgZGVsZXRlIGZpZWxkLm1pbjtcbiAgICAgICAgZGVsZXRlIGZpZWxkLm1heDtcbiAgICAgICAgZGVsZXRlIGZpZWxkLnJlcXVpcmVkO1xuICAgICAgICBkZWxldGUgZmllbGQubWluTGVuZ3RoO1xuICAgICAgICBkZWxldGUgZmllbGQubGVuZ3RoO1xuICAgICAgICBkZWxldGUgZmllbGQubWF4TGVuZ3RoO1xuICAgICAgICBkZWxldGUgZmllbGQucGF0dGVybjtcbiAgICAgICAgZGVsZXRlIGZpZWxkLnJlZ2V4O1xuXG4gICAgICAgIHN3aXRjaCAoZmllbGQudHlwZSkge1xuICAgICAgICAgIGNhc2UgRUZpZWxkVHlwZS5URVhUOlxuICAgICAgICAgICAgZGVsZXRlIGZpZWxkLnZhbGlkYXRvcnMubWluO1xuICAgICAgICAgICAgZGVsZXRlIGZpZWxkLnZhbGlkYXRvcnMubWF4O1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSBFRmllbGRUeXBlLkNIRUNLQk9YOlxuICAgICAgICAgICAgZGVsZXRlIGZpZWxkLnZhbGlkYXRvcnMubWluO1xuICAgICAgICAgICAgZGVsZXRlIGZpZWxkLnZhbGlkYXRvcnMubWF4O1xuICAgICAgICAgIGNhc2UgRUZpZWxkVHlwZS5QUkVWSUVXX0lNQUdFOlxuICAgICAgICAgICAgZGVsZXRlIGZpZWxkLnZhbGlkYXRvcnMubWluO1xuICAgICAgICAgICAgZGVsZXRlIGZpZWxkLnZhbGlkYXRvcnMubWF4O1xuICAgICAgICAgICAgZGVsZXRlIGZpZWxkLnZhbGlkYXRvcnMubWluTGVuZ3RoO1xuICAgICAgICAgICAgZGVsZXRlIGZpZWxkLnZhbGlkYXRvcnMubWF4TGVuZ3RoO1xuICAgICAgICAgIGNhc2UgRUZpZWxkVHlwZS5GSUxFOlxuICAgICAgICAgICAgZGVsZXRlIGZpZWxkLnZhbGlkYXRvcnMubWluO1xuICAgICAgICAgICAgZGVsZXRlIGZpZWxkLnZhbGlkYXRvcnMubWF4O1xuICAgICAgICAgICAgZGVsZXRlIGZpZWxkLnZhbGlkYXRvcnMubWluTGVuZ3RoO1xuICAgICAgICAgICAgZGVsZXRlIGZpZWxkLnZhbGlkYXRvcnMubWF4TGVuZ3RoO1xuICAgICAgICAgICAgZGVsZXRlIGZpZWxkLnZhbGlkYXRvcnMucGF0dGVybjtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgRUZpZWxkVHlwZS5DQVBUVVJFOlxuICAgICAgICAgICAgZGVsZXRlIGZpZWxkLnZhbGlkYXRvcnMubWluO1xuICAgICAgICAgICAgZGVsZXRlIGZpZWxkLnZhbGlkYXRvcnMubWF4O1xuICAgICAgICAgICAgZGVsZXRlIGZpZWxkLnZhbGlkYXRvcnMubWluTGVuZ3RoO1xuICAgICAgICAgICAgZGVsZXRlIGZpZWxkLnZhbGlkYXRvcnMubWF4TGVuZ3RoO1xuICAgICAgICAgICAgZGVsZXRlIGZpZWxkLnZhbGlkYXRvcnMucGF0dGVybjtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpc0VtcHR5VmFsdWUoZmllbGQudmFsaWRhdG9ycz8ubWluKSkge1xuICAgICAgICAgIGRlbGV0ZSBmaWVsZC52YWxpZGF0b3JzLm1pbjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNFbXB0eVZhbHVlKGZpZWxkLnZhbGlkYXRvcnM/Lm1heCkpIHtcbiAgICAgICAgICBkZWxldGUgZmllbGQudmFsaWRhdG9ycy5taW47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlzRW1wdHlWYWx1ZShmaWVsZC52YWxpZGF0b3JzPy5taW5MZW5ndGgpKSB7XG4gICAgICAgICAgZGVsZXRlIGZpZWxkLnZhbGlkYXRvcnMubWluTGVuZ3RoO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpc0VtcHR5VmFsdWUoZmllbGQudmFsaWRhdG9ycz8ubWF4TGVuZ3RoKSkge1xuICAgICAgICAgIGRlbGV0ZSBmaWVsZC52YWxpZGF0b3JzLm1heExlbmd0aDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNFbXB0eVZhbHVlKGZpZWxkLnZhbGlkYXRvcnM/LnBhdHRlcm4pKSB7XG4gICAgICAgICAgZGVsZXRlIGZpZWxkLnZhbGlkYXRvcnMucGF0dGVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGZpZWxkLmZvY3VzID0gZmFsc2U7XG4gICAgICAgIGZpZWxkLmludmFsaWQgPSBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGZpZWxkO1xuICAgIH07XG5cbiAgICBjb25zdCB1cGRhdGVGaWVsZERlZmF1bHRWYWx1ZSA9IChmaWVsZDogYW55KTogYW55ID0+IHtcbiAgICAgIGlmIChmaWVsZC5pc0Zvcm1FbGVtZW50KSB7XG4gICAgICAgIGlmIChjaGVja09iamVjdEtleUV4aXN0cyhmaWVsZCwgXCJkZWZhdWx0VmFsdWVcIikpIHtcbiAgICAgICAgICByZXR1cm4gZmllbGQ7XG4gICAgICAgIH0gZWxzZSBpZiAoY2hlY2tPYmplY3RQYXRoRXhpc3RzKGZpZWxkLCBcImRlZmF1bHQudmFsdWUuc291cmNlc1wiKSkge1xuICAgICAgICAgIHJldHVybiBmaWVsZDtcbiAgICAgICAgfSBlbHNlIGlmICghY2hlY2tPYmplY3RQYXRoRXhpc3RzKGZpZWxkLCBcImRlZmF1bHQudmFsdWUuc291cmNlc1wiKSkge1xuICAgICAgICAgIGNvbnN0IGRlZmF1bHRWYWx1ZSA9IHtcbiAgICAgICAgICAgIGlzX2ZvdW5kOiBmYWxzZSxcbiAgICAgICAgICAgIHZhbHVlOiBcIlwiLFxuICAgICAgICAgICAgc291cmNlczogW1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAga2V5OiBcIk9CSkVDVFwiLFxuICAgICAgICAgICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgICAgICAgICBvYmplY3Q6IHtcbiAgICAgICAgICAgICAgICAgICAga2V5OiBcIkZPUk1fREFUQVwiLFxuICAgICAgICAgICAgICAgICAgICBwYXRoOiBgJC4ke2ZpZWxkLmtleX1gXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB2YWx1ZTogXCJcIixcbiAgICAgICAgICAgICAgICB2YWxpZGF0aW9uOiB7XG4gICAgICAgICAgICAgICAgICBpc192YWxpZDogZmFsc2UsXG4gICAgICAgICAgICAgICAgICB0cmlnZ2VyczogW1wiT05fSU5JVFwiXSxcbiAgICAgICAgICAgICAgICAgIHJ1bGVzOiBbXSxcbiAgICAgICAgICAgICAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgIGlkOiBcIjFcIixcbiAgICAgICAgICAgICAgICAgICAgICBrZXk6IFwiU0VUX0ZJRUxEX0RFRkFVTFRfVkFMVUVcIixcbiAgICAgICAgICAgICAgICAgICAgICBjb25kaXRpb246IFwiMVwiLFxuICAgICAgICAgICAgICAgICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZToge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2U6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6IFwiT0JKRUNUXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9iamVjdDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6IFwiRk9STV9EQVRBXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGg6IGAkLiR7ZmllbGQua2V5fWBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgICB9O1xuXG4gICAgICAgICAgZmllbGQgPSBzZXRWYWx1ZVRvT2JqZWN0UGF0aChmaWVsZCwgXCJkZWZhdWx0LnZhbHVlXCIsIGRlZmF1bHRWYWx1ZSk7XG4gICAgICAgICAgcmV0dXJuIGZpZWxkO1xuICAgICAgICB9XG5cbiAgICAgICAgZGVsZXRlIGZpZWxkW1wiZGVmYXVsdFZhbFwiXTtcbiAgICAgICAgZGVsZXRlIGZpZWxkW1wiZGVmYXVsdFZhbHVlXCJdO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gZmllbGQ7XG4gICAgfTtcblxuICAgIGNvbnN0IHVwZGF0ZUZpZWxkRGlzYWJpbGl0eSA9IChmaWVsZDogYW55KTogYW55ID0+IHtcbiAgICAgIGZpZWxkID0gc2V0TWlzc2luZ0tleVZhbHVlKGZpZWxkLCBcImRpc2FibGVkXCIsIGZhbHNlKTtcblxuICAgICAgcmV0dXJuIGZpZWxkO1xuICAgIH07XG5cbiAgICBjb25zdCB1cGRhdGVGaWVsZE1lc3NhZ2VzID0gKGZpZWxkOiBhbnkpOiBhbnkgPT4ge1xuICAgICAgaWYgKGZpZWxkLmlzRm9ybUVsZW1lbnQpIHtcbiAgICAgICAgZmllbGQgPSBzZXRNaXNzaW5nRmllbGRLZXlWYWx1ZShmaWVsZCwgXCJtZXNzYWdlc1wiLCBbXSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBmaWVsZDtcbiAgICB9O1xuXG4gICAgY29uc3QgdXBkYXRlRmllbGRSZXNldEJ1dHRvbiA9IChmaWVsZDogYW55KTogYW55ID0+IHtcbiAgICAgIGlmIChmaWVsZC5pc0Zvcm1FbGVtZW50KSB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICBjaGVja09iamVjdEtleUV4aXN0cyhmaWVsZCwgXCJhY3Rpb25cIikgJiZcbiAgICAgICAgICBmaWVsZC5hY3Rpb24gPT09IFwicmVzZXRcIiAmJlxuICAgICAgICAgIGNoZWNrT2JqZWN0S2V5RXhpc3RzKGZpZWxkLCBcImZpZWxkc1wiKVxuICAgICAgICApIHtcbiAgICAgICAgICBmaWVsZCA9IHNldEZpZWxkS2V5VmFsdWUoZmllbGQsIFwicmVzZXRcIiwge1xuICAgICAgICAgICAgZmllbGRzOiBmaWVsZC5maWVsZHNcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gZmllbGQ7XG4gICAgfTtcblxuICAgIGNvbnN0IHNldEZvcm1GaWVsZHMgPSAoZm9ybUNvbmZpZzogYW55LCBmaWVsZHM6IGFueVtdKTogYW55ID0+IHtcbiAgICAgIGlmIChjaGVja09iamVjdEtleUV4aXN0cyhmb3JtQ29uZmlnLCBcIm11bHRpRm9ybVwiKSkge1xuICAgICAgICBmb3JtQ29uZmlnLm11bHRpRm9ybVtcImZpZWxkc1wiXSA9IGZpZWxkcztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGZvcm1Db25maWdbXCJmaWVsZHNcIl0gPSBmaWVsZHM7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBmb3JtQ29uZmlnO1xuICAgIH07XG5cbiAgICBjb25zdCBzZXRGb3JtRmllbGRHcm91cHMgPSAoZm9ybUNvbmZpZzogYW55LCBncm91cHM6IGFueSk6IGFueSA9PiB7XG4gICAgICBmb3JtQ29uZmlnW1wiZmllbGRHcm91cHNcIl0gPSBncm91cHM7XG5cbiAgICAgIHJldHVybiBmb3JtQ29uZmlnO1xuICAgIH07XG5cbiAgICBjb25zdCB1cGRhdGVGb3JtRmllbGRHcm91cHMgPSAoZmllbGRHcm91cHM6IGFueSwgZmllbGQ6IGFueSk6IGFueSA9PiB7XG4gICAgICBpZiAoY2hlY2tPYmplY3RLZXlFeGlzdHMoZmllbGQsIFwiZ3JvdXBLZXlcIikpIHtcbiAgICAgICAgaWYgKGNoZWNrT2JqZWN0S2V5RXhpc3RzKGZpZWxkR3JvdXBzLCBmaWVsZC5ncm91cEtleSkpIHtcbiAgICAgICAgICBmaWVsZEdyb3Vwc1tmaWVsZC5ncm91cEtleV0ucHVzaChmaWVsZC5rZXkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGZpZWxkR3JvdXBzW2ZpZWxkLmdyb3VwS2V5XSA9IFtmaWVsZC5rZXldO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBmaWVsZEdyb3VwcztcbiAgICB9O1xuXG4gICAgbGV0IGZpZWxkczogYW55W10gPSBnZXRGb3JtRmllbGRzKGZvcm1Db25maWcpO1xuXG4gICAgbGV0IGZpZWxkR3JvdXBzOiBhbnkgPSB7fTtcblxuICAgIGZvciAobGV0IGZpZWxkIG9mIGZpZWxkcykge1xuICAgICAgZmllbGQgPSBmb3JtYXRPbkZpZWxkVHlwZShmaWVsZCk7XG5cbiAgICAgIGZpZWxkID0gdXBkYXRlRmllbGREaXNhYmlsaXR5KGZpZWxkKTtcblxuICAgICAgZmllbGRHcm91cHMgPSB1cGRhdGVGb3JtRmllbGRHcm91cHMoZmllbGRHcm91cHMsIGZpZWxkKTtcblxuICAgICAgY29uc29sZS5sb2coXCJzYWRzc2FkYXNkc2RkYVwiKTtcbiAgICAgIGNvbnNvbGUubG9nKGdldE9iamVjdERlZXBDb3B5KGZpZWxkKSk7XG4gICAgICBmaWVsZCA9IHVwZGF0ZUZpZWxkRGVmYXVsdFZhbHVlKGZpZWxkKTtcbiAgICAgIGNvbnNvbGUubG9nKGdldE9iamVjdERlZXBDb3B5KGZpZWxkKSk7XG5cbiAgICAgIGZpZWxkID0gdXBkYXRlRmllbGRWYWxpZGF0b3JzKGZpZWxkKTtcblxuICAgICAgZmllbGQgPSB1cGRhdGVGaWVsZFJlc2V0QnV0dG9uKGZpZWxkKTtcblxuICAgICAgZmllbGQgPSB1cGRhdGVGaWVsZE1lc3NhZ2VzKGZpZWxkKTtcbiAgICB9XG5cbiAgICBmb3JtQ29uZmlnID0gc2V0Rm9ybUZpZWxkR3JvdXBzKGZvcm1Db25maWcsIGZpZWxkR3JvdXBzKTtcblxuICAgIGZvcm1Db25maWcgPSBzZXRGb3JtRmllbGRzKGZvcm1Db25maWcsIGZpZWxkcyk7XG5cbiAgICByZXR1cm4gZm9ybUNvbmZpZztcbiAgfVxufVxuIl19
633
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLWNvbnZlcnRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2t3aWtpZC1mb3Jtcy9zcmMvbGliL3JlbmRlcmVyL2NvbmZpZy1jb252ZXJ0ZXIvY29uZmlnLWNvbnZlcnRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUNMLG9CQUFvQixFQUNwQixxQkFBcUIsRUFDckIsaUJBQWlCLEVBQ2pCLFlBQVksRUFDWixlQUFlLEVBQ2YsU0FBUyxFQUNULFlBQVksRUFDWixrQkFBa0IsRUFDbEIsb0JBQW9CLEVBQ3JCLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUNMLFVBQVUsRUFFWCxNQUFNLHNEQUFzRCxDQUFDO0FBQzlELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2hFLE9BQU8sRUFDTCxxQkFBcUIsRUFDckIsYUFBYSxFQUNiLFVBQVUsRUFDVixVQUFVLEVBQ1YscUJBQXFCLEVBQ3JCLGlCQUFpQixFQUNqQixnQkFBZ0IsRUFDaEIsdUJBQXVCLEVBQ3ZCLFdBQVcsRUFDWixNQUFNLDJCQUEyQixDQUFDO0FBRW5DLE1BQU0sT0FBTyxTQUFTO0lBRXBCLDZCQUE2QixDQUFDLFVBQWUsRUFBRSxJQUFTO1FBQ3RELElBQUksb0JBQW9CLENBQUMsSUFBSSxFQUFFLGlCQUFpQixDQUFDLEVBQUU7WUFDakQsVUFBVSxHQUFHLG9CQUFvQixDQUMvQixVQUFVLEVBQ1YsaUJBQWlCLEVBQ2pCLElBQUksQ0FBQyxlQUFlLENBQ3JCLENBQUM7U0FDSDtRQUVELE9BQU8sVUFBVSxDQUFDO0lBQ3BCLENBQUM7SUFHRCw4QkFBOEIsQ0FBQyxVQUFlLEVBQUUsVUFBZTtRQUM3RCxJQUFJLGVBQWUsQ0FBQyxVQUFVLENBQUMsRUFBRTtZQUMvQixJQUFJLG9CQUFvQixDQUFDLFVBQVUsRUFBRSxPQUFPLENBQUMsRUFBRTtnQkFDN0MsSUFBSSxvQkFBb0IsQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLFlBQVksQ0FBQyxFQUFFO29CQUN4RCxvQkFBb0IsQ0FDbEIsVUFBVSxFQUNWLDRCQUE0QixFQUM1QixVQUFVLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FDNUIsQ0FBQztpQkFDSDthQUNGO1NBQ0Y7UUFFRCxPQUFPLFVBQVUsQ0FBQztJQUNwQixDQUFDO0lBR0QsMEJBQTBCLENBQUMsVUFBZTs7UUFDeEMsTUFBTSxrQkFBa0IsR0FBRztZQUN6QixNQUFNLEVBQUU7Z0JBQ04sSUFBSSxFQUFFO29CQUNKLEdBQUcsRUFBRSxFQUFFO29CQUNQLEdBQUcsRUFBRSxNQUFNO29CQUNYLE1BQU0sRUFBRSxLQUFLO29CQUNiLE1BQU0sRUFBRSxFQUFFO2lCQUNYO2dCQUNELFVBQVUsRUFBRTtvQkFDVixJQUFJLEVBQUUsUUFBUTtvQkFDZCxrQkFBa0IsRUFBRSxLQUFLO29CQUN6QixNQUFNLEVBQUUsSUFBSTtpQkFDYjtnQkFDRCxLQUFLLEVBQUU7b0JBQ0wsTUFBTSxFQUFFLEtBQUs7b0JBQ2IsS0FBSyxFQUFFLE1BQUEsTUFBQSxVQUFVLGFBQVYsVUFBVSx1QkFBVixVQUFVLENBQUUsS0FBSyxtQ0FBSSxVQUFVLGFBQVYsVUFBVSx1QkFBVixVQUFVLENBQUUsS0FBSyxDQUFDLEtBQUssbUNBQUksTUFBTTtvQkFDN0QsTUFBTSxFQUFFLEVBQUU7aUJBQ1g7Z0JBQ0QsS0FBSyxFQUFFO29CQUNMLE1BQU0sRUFBRSxLQUFLO29CQUNiLE1BQU0sRUFBRSxFQUFFO2lCQUNYO2FBQ0Y7WUFDRCxJQUFJLEVBQUU7Z0JBQ0osTUFBTSxFQUFFLEVBQUU7YUFDWDtZQUNELE1BQU0sRUFBRTtnQkFDTixlQUFlLEVBQUU7b0JBQ2Ysa0JBQWtCLEVBQUUsS0FBSztvQkFDekIsTUFBTSxFQUFFLEtBQUs7b0JBQ2IsS0FBSyxFQUFFLFlBQVk7aUJBQ3BCO2dCQUNELFVBQVUsRUFBRTtvQkFDVixNQUFNLEVBQUUsS0FBSztvQkFDYixLQUFLLEVBQUUsTUFBTTtpQkFDZDthQUNGO1lBQ0QseUJBQXlCLEVBQUUsS0FBSztTQUNqQyxDQUFDO1FBRUYsSUFBSSxvQkFBb0IsQ0FBQyxVQUFVLEVBQUUsWUFBWSxDQUFDLEVBQUU7WUFDbEQsVUFBVSxDQUFDLFVBQVUsR0FBRyxpQkFBaUIsQ0FDdkMsWUFBWSxDQUFDLGtCQUFrQixFQUFFLFVBQVUsQ0FBQyxVQUFVLENBQUMsQ0FDeEQsQ0FBQztTQUNIO2FBQU07WUFDTCxVQUFVLENBQUMsVUFBVSxHQUFHLGtCQUFrQixDQUFDO1NBQzVDO1FBRUQsT0FBTyxVQUFVLENBQUM7SUFDcEIsQ0FBQztJQUdELGlCQUFpQixDQUFDLFVBQWU7UUFDL0IsTUFBTSxpQkFBaUIsR0FBRyxDQUFDLEtBQVUsRUFBTyxFQUFFO1lBQzVDLE1BQU0seUJBQXlCLEdBQUcsQ0FBQyxLQUFVLEVBQU8sRUFBRTtnQkFDcEQsSUFBSSxvQkFBb0IsQ0FBQyxnQkFBZ0IsRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUU7b0JBQ3RELEtBQUssQ0FBQyxVQUFVLEdBQUcsWUFBWSxDQUM3QixpQkFBaUIsQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsRUFDL0MsS0FBSyxDQUFDLFVBQVUsQ0FDakIsQ0FBQztpQkFDSDtnQkFFRCxPQUFPLEtBQUssQ0FBQztZQUNmLENBQUMsQ0FBQztZQUVGLE1BQU0sbUJBQW1CLEdBQUcsQ0FBQyxLQUFVLEVBQU8sRUFBRTtnQkFDOUMsS0FBSyxHQUFHLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUNqQyxLQUFLLEdBQUcscUJBQXFCLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO2dCQUU1QyxPQUFPLEtBQUssQ0FBQztZQUNmLENBQUMsQ0FBQztZQUNGLE1BQU0sb0JBQW9CLEdBQUcsQ0FBQyxLQUFVLEVBQU8sRUFBRTtnQkFDL0MsS0FBSyxHQUFHLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUNqQyxLQUFLLEdBQUcscUJBQXFCLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO2dCQUU1QyxPQUFPLEtBQUssQ0FBQztZQUNmLENBQUMsQ0FBQztZQUNGLE1BQU0scUJBQXFCLEdBQUcsQ0FBQyxLQUFVLEVBQU8sRUFBRTtnQkFDaEQsS0FBSyxHQUFHLHVCQUF1QixDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsS0FBSyxDQUFDLENBQUM7Z0JBQ3hELEtBQUssR0FBRyxxQkFBcUIsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7Z0JBQzVDLEtBQUssR0FBRyx5QkFBeUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFFekMsT0FBTyxLQUFLLENBQUM7WUFDZixDQUFDLENBQUM7WUFDRixNQUFNLG1CQUFtQixHQUFHLENBQUMsS0FBVSxFQUFPLEVBQUU7Z0JBQzlDLEtBQUssR0FBRyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDakMsS0FBSyxHQUFHLHFCQUFxQixDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQztnQkFDM0MsS0FBSyxHQUFHLHlCQUF5QixDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUV6QyxPQUFPLEtBQUssQ0FBQztZQUNmLENBQUMsQ0FBQztZQUNGLE1BQU0sdUJBQXVCLEdBQUcsQ0FBQyxLQUFVLEVBQU8sRUFBRTtnQkFDbEQsS0FBSyxHQUFHLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUNqQyxLQUFLLEdBQUcscUJBQXFCLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO2dCQUMzQyxLQUFLLEdBQUcseUJBQXlCLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBRXpDLE9BQU8sS0FBSyxDQUFDO1lBQ2YsQ0FBQyxDQUFDO1lBQ0YsTUFBTSxvQkFBb0IsR0FBRyxDQUFDLEtBQVUsRUFBTyxFQUFFO2dCQUMvQyxLQUFLLEdBQUcsaUJBQWlCLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ2pDLEtBQUssR0FBRyxxQkFBcUIsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUM7Z0JBQzNDLEtBQUssR0FBRyx5QkFBeUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFFekMsT0FBTyxLQUFLLENBQUM7WUFDZixDQUFDLENBQUM7WUFDRixNQUFNLHlCQUF5QixHQUFHLENBQUMsS0FBVSxFQUFPLEVBQUU7Z0JBQ3BELEtBQUssR0FBRyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDakMsS0FBSyxHQUFHLHFCQUFxQixDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQztnQkFDM0MsS0FBSyxHQUFHLHlCQUF5QixDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUV6QyxPQUFPLEtBQUssQ0FBQztZQUNmLENBQUMsQ0FBQztZQUNGLE1BQU0sdUJBQXVCLEdBQUcsQ0FBQyxLQUFVLEVBQU8sRUFBRTtnQkFDbEQsS0FBSyxHQUFHLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUNqQyxLQUFLLEdBQUcscUJBQXFCLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO2dCQUMzQyxPQUFPLEtBQUssQ0FBQztZQUNmLENBQUMsQ0FBQztZQUNGLE1BQU0sdUJBQXVCLEdBQUcsQ0FBQyxLQUFVLEVBQU8sRUFBRTtnQkFDbEQsS0FBSyxHQUFHLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUNqQyxLQUFLLEdBQUcscUJBQXFCLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO2dCQUMzQyxPQUFPLEtBQUssQ0FBQztZQUNmLENBQUMsQ0FBQztZQUNGLE1BQU0scUJBQXFCLEdBQUcsQ0FBQyxLQUFVLEVBQU8sRUFBRTtnQkFDaEQsS0FBSyxHQUFHLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUNqQyxLQUFLLEdBQUcscUJBQXFCLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO2dCQUUzQyxJQUFJLG9CQUFvQixDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsRUFBRTtvQkFDdEMsSUFBSSxLQUFLLENBQUMsR0FBRyxLQUFLLGdCQUFnQixFQUFFO3dCQUNsQyxLQUFLLEdBQUcsZ0JBQWdCLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO3FCQUMzRDtvQkFDRCxJQUFJLEtBQUssQ0FBQyxHQUFHLEtBQUssZ0JBQWdCLEVBQUU7d0JBQ2xDLEtBQUssR0FBRyxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDO3FCQUNsRDtvQkFFRCxJQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUssT0FBTyxJQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUssUUFBUSxFQUFFO3dCQUNyRCxLQUFLLEdBQUcseUJBQXlCLENBQUMsS0FBSyxDQUFDLENBQUM7cUJBQzFDO2lCQUNGO2dCQUVELE9BQU8sS0FBSyxDQUFDO1lBQ2YsQ0FBQyxDQUFDO1lBQ0YsTUFBTSxvQkFBb0IsR0FBRyxDQUFDLEtBQVUsRUFBTyxFQUFFO2dCQUMvQyxLQUFLLEdBQUcsaUJBQWlCLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ2pDLEtBQUssR0FBRyxxQkFBcUIsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUM7Z0JBQzNDLEtBQUssR0FBRyx5QkFBeUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFFekMsT0FBTyxLQUFLLENBQUM7WUFDZixDQUFDLENBQUM7WUFDRixNQUFNLG1CQUFtQixHQUFHLENBQUMsS0FBVSxFQUFPLEVBQUU7Z0JBQzlDLEtBQUssR0FBRyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDakMsS0FBSyxHQUFHLHFCQUFxQixDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQztnQkFFM0MsS0FBSyxDQUFDLFVBQVUsR0FBRyxpQkFBaUIsQ0FDbEMsWUFBWSxDQUNWLGlCQUFpQixDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUMvQztvQkFDRSxHQUFHLEVBQUUsVUFBVSxDQUFDLEtBQUssQ0FBQztvQkFDdEIsR0FBRyxFQUFFLFVBQVUsQ0FBQyxLQUFLLENBQUM7aUJBQ3ZCLEVBQ0QsS0FBSyxDQUFDLFVBQVUsQ0FDakIsQ0FDRixDQUFDO2dCQUVGLE9BQU8sS0FBSyxDQUFDO1lBQ2YsQ0FBQyxDQUFDO1lBQ0YsTUFBTSxvQkFBb0IsR0FBRyxDQUFDLEtBQVUsRUFBTyxFQUFFO2dCQUMvQyxLQUFLLEdBQUcsaUJBQWlCLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ2pDLEtBQUssR0FBRyxxQkFBcUIsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUM7Z0JBQzNDLEtBQUssR0FBRyx5QkFBeUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFFekMsT0FBTyxLQUFLLENBQUM7WUFDZixDQUFDLENBQUM7WUFDRixNQUFNLG9CQUFvQixHQUFHLENBQUMsS0FBVSxFQUFPLEVBQUU7Z0JBQy9DLEtBQUssR0FBRyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDakMsS0FBSyxHQUFHLHFCQUFxQixDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQztnQkFDM0MsS0FBSyxHQUFHLHlCQUF5QixDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUV6QyxLQUFLLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBTSxFQUFPLEVBQUU7b0JBQ2hELElBQUksT0FBTyxDQUFDLEtBQUssUUFBUSxJQUFJLE9BQU8sQ0FBQyxLQUFLLFFBQVEsRUFBRTt3QkFDbEQsT0FBTyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsRUFBRSxFQUFFLENBQUM7cUJBQ3ZEO3lCQUFNO3dCQUNMLElBQ0Usb0JBQW9CLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQzs0QkFDaEMsb0JBQW9CLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQzs0QkFDbkMsb0JBQW9CLENBQUMsQ0FBQyxFQUFFLGFBQWEsQ0FBQyxFQUN0Qzs0QkFDQSxPQUFPLENBQUMsQ0FBQzt5QkFDVjt3QkFDRCxJQUFJLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxFQUFFOzRCQUN4QyxDQUFDLG1DQUFRLENBQUMsS0FBRSxRQUFRLEVBQUUsS0FBSyxHQUFFLENBQUM7eUJBQy9CO3dCQUNELElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLEVBQUUsYUFBYSxDQUFDLEVBQUU7NEJBQzNDLENBQUMsbUNBQVEsQ0FBQyxLQUFFLFdBQVcsRUFBRSxLQUFLLEdBQUUsQ0FBQzt5QkFDbEM7d0JBQ0QsT0FBTyxDQUFDLENBQUM7cUJBQ1Y7Z0JBQ0gsQ0FBQyxDQUFDLENBQUM7Z0JBRUgsT0FBTyxLQUFLLENBQUM7WUFDZixDQUFDLENBQUM7WUFDRixNQUFNLHFCQUFxQixHQUFHLENBQUMsS0FBVSxFQUFPLEVBQUU7Z0JBQ2hELEtBQUssR0FBRyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDakMsS0FBSyxHQUFHLHFCQUFxQixDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQztnQkFDM0MsS0FBSyxHQUFHLHlCQUF5QixDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUV6QyxPQUFPLEtBQUssQ0FBQztZQUNmLENBQUMsQ0FBQztZQUNGLE1BQU0scUJBQXFCLEdBQUcsQ0FBQyxLQUFVLEVBQU8sRUFBRTtnQkFDaEQsS0FBSyxHQUFHLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUNqQyxLQUFLLEdBQUcscUJBQXFCLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO2dCQUMzQyxLQUFLLEdBQUcseUJBQXlCLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBRXpDLE9BQU8sS0FBSyxDQUFDO1lBQ2YsQ0FBQyxDQUFDO1lBQ0YsTUFBTSxrQkFBa0IsR0FBRyxDQUFDLEtBQVUsRUFBTyxFQUFFO2dCQUM3QyxLQUFLLEdBQUcscUJBQXFCLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO2dCQUMzQyxLQUFLLEdBQUcseUJBQXlCLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBRXpDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLEVBQUUsWUFBWSxDQUFDLEVBQUU7b0JBQzlDLEtBQUssR0FBRyxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUUsWUFBWSxFQUFFLEtBQUssQ0FBQyxDQUFDO2lCQUN0RDtnQkFFRCxJQUFJLENBQUMsb0JBQW9CLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxFQUFFO29CQUN2QyxNQUFNLGdCQUFnQixHQUFHO3dCQUN2QixHQUFHLEVBQUUsRUFBRTt3QkFDUCxPQUFPLEVBQUUsRUFBRTt3QkFDWCxRQUFRLEVBQUUsRUFBRTt3QkFDWixNQUFNLEVBQUU7NEJBQ04sS0FBSyxFQUFFLFNBQVM7NEJBQ2hCLE1BQU0sRUFBRTtnQ0FDTixPQUFPLEVBQUUsVUFBVTtnQ0FDbkIsT0FBTyxFQUFFLFVBQVU7Z0NBQ25CLEtBQUssRUFBRSxXQUFXO2dDQUNsQixPQUFPLEVBQUUsYUFBYTtnQ0FDdEIsTUFBTSxFQUFFLFlBQVk7NkJBQ3JCO3lCQUNGO3FCQUNGLENBQUM7b0JBQ0YsS0FBSyxDQUFDLEdBQUcsR0FBRyxpQkFBaUIsQ0FDM0IsWUFBWSxDQUFDLGdCQUFnQixFQUFFLGdCQUFnQixDQUFDLENBQ2pELENBQUM7aUJBQ0g7Z0JBQ0QsSUFDRSxDQUFDLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsU0FBUyxDQUFDO29CQUMzQyxDQUFDLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsWUFBWSxDQUFDLEVBQzlDO29CQUNBLE1BQU0sYUFBYSxHQUFHO3dCQUNwQixRQUFRLEVBQUUsQ0FBQyxhQUFhLENBQUM7d0JBQ3pCLEtBQUssRUFBRSxFQUFFO3dCQUNULE9BQU8sRUFBRTs0QkFDUDtnQ0FDRSxFQUFFLEVBQUUsR0FBRztnQ0FDUCxHQUFHLEVBQUUsVUFBVTtnQ0FDZixTQUFTLEVBQUUsTUFBTTtnQ0FDakIsS0FBSyxFQUFFO29DQUNMLFFBQVEsRUFBRSxLQUFLLENBQUMsR0FBRztvQ0FDbkIsTUFBTSxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU07aUNBQ3RDOzZCQUNGO3lCQUNGO3FCQUNGLENBQUM7b0JBQ0YsS0FBSyxDQUFDLFVBQVUsR0FBRyxpQkFBaUIsQ0FDbEMsWUFBWSxDQUFDLGFBQWEsRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLENBQ3ZDLENBQUM7aUJBQ0g7Z0JBQ0QsT0FBTyxLQUFLLENBQUM7WUFDZixDQUFDLENBQUM7WUFDRixNQUFNLGtCQUFrQixHQUFHLENBQUMsS0FBVSxFQUFPLEVBQUU7O2dCQUM3QyxLQUFLLEdBQUcsaUJBQWlCLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ2pDLEtBQUssR0FBRyxxQkFBcUIsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUM7Z0JBRTNDLEtBQUssQ0FBQyxVQUFVLEdBQUcsaUJBQWlCLENBQ2xDLFlBQVksQ0FDVixpQkFBaUIsQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsRUFDL0M7b0JBQ0UsSUFBSSxFQUFFLElBQUksS0FBSyxDQUFDLE1BQUEsTUFBQSxLQUFLLGFBQUwsS0FBSyx1QkFBTCxLQUFLLENBQUUsVUFBVSwwQ0FBRSxTQUFTLG1DQUFJLENBQUMsQ0FBQzt5QkFDL0MsSUFBSSxDQUFDLEdBQUcsQ0FBQzt5QkFDVCxJQUFJLENBQUMsR0FBRyxDQUFDO2lCQUNiLEVBQ0QsS0FBSyxDQUFDLFVBQVUsQ0FDakIsQ0FDRixDQUFDO2dCQUVGLE9BQU8sS0FBSyxDQUFDO1lBQ2YsQ0FBQyxDQUFDO1lBQ0YsTUFBTSw0QkFBNEIsR0FBRyxDQUFDLEtBQVUsRUFBTyxFQUFFO2dCQUN2RCxLQUFLLEdBQUcsaUJBQWlCLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ2pDLEtBQUssR0FBRyxxQkFBcUIsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUM7Z0JBQzNDLEtBQUssR0FBRyx5QkFBeUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFFekMsT0FBTyxLQUFLLENBQUM7WUFDZixDQUFDLENBQUM7WUFDRixNQUFNLG1CQUFtQixHQUFHLENBQUMsS0FBVSxFQUFPLEVBQUU7Z0JBQzlDLEtBQUssR0FBRyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDakMsS0FBSyxHQUFHLHFCQUFxQixDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQztnQkFDM0MsS0FBSyxHQUFHLHlCQUF5QixDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUV6QyxPQUFPLEtBQUssQ0FBQztZQUNmLENBQUMsQ0FBQztZQUNGLE1BQU0sc0JBQXNCLEdBQUcsQ0FBQyxLQUFVLEVBQU8sRUFBRTtnQkFDakQsS0FBSyxHQUFHLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUNqQyxLQUFLLEdBQUcscUJBQXFCLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO2dCQUMzQyxLQUFLLEdBQUcseUJBQXlCLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBRXpDLE9BQU8sS0FBSyxDQUFDO1lBQ2YsQ0FBQyxDQUFDO1lBRUYsUUFBUSxLQUFLLENBQUMsSUFBSSxFQUFFO2dCQUNsQixLQUFLLFVBQVUsQ0FBQyxJQUFJO29CQUNsQixLQUFLLEdBQUcsbUJBQW1CLENBQUMsS0FBSyxDQUFDLENBQUM7b0JBQ25DLE1BQU07Z0JBQ1IsS0FBSyxVQUFVLENBQUMsS0FBSztvQkFDbkIsS0FBSyxHQUFHLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxDQUFDO29CQUNwQyxNQUFNO2dCQUNSLEtBQUssVUFBVSxDQUFDLE1BQU07b0JBQ3BCLEtBQUssR0FBRyxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztvQkFDckMsTUFBTTtnQkFDUixLQUFLLFVBQVUsQ0FBQyxJQUFJO29CQUNsQixLQUFLLEdBQUcsbUJBQW1CLENBQUMsS0FBSyxDQUFDLENBQUM7b0JBQ25DLE1BQU07Z0JBQ1IsS0FBSyxVQUFVLENBQUMsUUFBUTtvQkFDdEIsS0FBSyxHQUFHLHVCQUF1QixDQUFDLEtBQUssQ0FBQyxDQUFDO29CQUN2QyxNQUFNO2dCQUNSLEtBQUssVUFBVSxDQUFDLEtBQUs7b0JBQ25CLEtBQUssR0FBRyxvQkFBb0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztvQkFDcEMsTUFBTTtnQkFDUixLQUFLLFVBQVUsQ0FBQyxRQUFRO29CQUN0QixLQUFLLEdBQUcsdUJBQXVCLENBQUMsS0FBSyxDQUFDLENBQUM7b0JBQ3ZDLE1BQU07Z0JBQ1IsS0FBSyxVQUFVLENBQUMsUUFBUTtvQkFDdEIsS0FBSyxHQUFHLHVCQUF1QixDQUFDLEtBQUssQ0FBQyxDQUFDO29CQUN2QyxNQUFNO2dCQUNSLEtBQUssVUFBVSxDQUFDLE1BQU07b0JBQ3BCLEtBQUssR0FBRyxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztvQkFDckMsTUFBTTtnQkFDUixLQUFLLFVBQVUsQ0FBQyxhQUFhO29CQUMzQixLQUFLLEdBQUcsZ0JBQWdCLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQztvQkFDakQsS0FBSyxHQUFHLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxDQUFDO29CQUNwQyxNQUFNO2dCQUNSLEtBQUssVUFBVSxDQUFDLEtBQUs7b0JBQ25CLEtBQUssR0FBRyxvQkFBb0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztvQkFDcEMsTUFBTTtnQkFDUixLQUFLLFVBQVUsQ0FBQyxJQUFJO29CQUNsQixLQUFLLEdBQUcsbUJBQW1CLENBQUMsS0FBSyxDQUFDLENBQUM7b0JBQ25DLE1BQU07Z0JBQ1IsS0FBSyxVQUFVLENBQUMsS0FBSztvQkFDbkIsS0FBSyxHQUFHLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxDQUFDO29CQUNwQyxNQUFNO2dCQUNSLEtBQUssVUFBVSxDQUFDLEtBQUs7b0JBQ25CLEtBQUssR0FBRyxvQkFBb0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztvQkFDcEMsTUFBTTtnQkFDUixLQUFLLFVBQVUsQ0FBQyxNQUFNO29CQUNwQixLQUFLLEdBQUcscUJBQXFCLENBQUMsS0FBSyxDQUFDLENBQUM7b0JBQ3JDLE1BQU07Z0JBQ1IsS0FBSyxhQUFhO29CQUNoQixLQUFLLEdBQUcsZ0JBQWdCLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQztvQkFDbEQsS0FBSyxHQUFHLHFCQUFxQixDQUFDLEtBQUssQ0FBQyxDQUFDO29CQUNyQyxNQUFNO2dCQUNSLEtBQUssVUFBVSxDQUFDLG9CQUFvQjtvQkFDbEMsS0FBSyxHQUFHLGdCQUFnQixDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUM7b0JBQ2xELEtBQUssR0FBRyxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztvQkFDckMsTUFBTTtnQkFDUixLQUFLLFVBQVUsQ0FBQyxNQUFNO29CQUNwQixLQUFLLEdBQUcscUJBQXFCLENBQUMsS0FBSyxDQUFDLENBQUM7b0JBQ3JDLE1BQU07Z0JBQ1IsS0FBSyxVQUFVLENBQUMsUUFBUTtvQkFDdEIsS0FBSyxHQUFHLGdCQUFnQixDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUM7b0JBQy9DLEtBQUssR0FBRyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztvQkFDbEMsTUFBTTtnQkFDUixLQUFLLFVBQVUsQ0FBQyxHQUFHO29CQUNqQixLQUFLLEdBQUcsa0JBQWtCLENBQUMsS0FBSyxDQUFDLENBQUM7b0JBQ2xDLE1BQU07Z0JBQ1IsS0FBSyxVQUFVLENBQUMsR0FBRztvQkFDakIsS0FBSyxHQUFHLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxDQUFDO29CQUNsQyxNQUFNO2dCQUNSLEtBQUssVUFBVSxDQUFDLGNBQWM7b0JBQzVCLEtBQUssR0FBRyw0QkFBNEIsQ0FBQyxLQUFLLENBQUMsQ0FBQztvQkFDNUMsTUFBTTtnQkFDUixLQUFLLFVBQVUsQ0FBQyxJQUFJO29CQUNsQixLQUFLLEdBQUcsbUJBQW1CLENBQUMsS0FBSyxDQUFDLENBQUM7b0JBQ25DLE1BQU07Z0JBQ1IsS0FBSyxVQUFVLENBQUMsT0FBTztvQkFDckIsS0FBSyxHQUFHLHNCQUFzQixDQUFDLEtBQUssQ0FBQyxDQUFDO29CQUN0QyxNQUFNO2dCQUNSLEtBQUssVUFBVSxDQUFDLFdBQVc7b0JBQ3pCLEtBQUssR0FBRyx5QkFBeUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztvQkFDekMsTUFBTTtnQkFDUjtvQkFDRSxNQUFNO2FBQ1Q7WUFFRCxPQUFPLEtBQUssQ0FBQztRQUNmLENBQUMsQ0FBQztRQUVGLE1BQU0scUJBQXFCLEdBQUcsQ0FBQyxLQUFVLEVBQU8sRUFBRTs7WUFDaEQsSUFBSSxLQUFLLENBQUMsYUFBYSxFQUFFO2dCQUN2QixNQUFNLFVBQVUsR0FBRyxvQkFBb0IsQ0FBQyxLQUFLLEVBQUUsWUFBWSxDQUFDO29CQUMxRCxDQUFDLENBQUMsS0FBSyxDQUFDLFVBQVU7b0JBQ2xCLENBQUMsQ0FBQyxFQUFFLENBQUM7Z0JBRVAsS0FBSyxHQUFHLHVCQUF1QixDQUFDLEtBQUssRUFBRSxZQUFZLEVBQUUsRUFBRSxDQUFDLENBQUM7Z0JBRXpELEtBQUssR0FBRyxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUUsWUFBWSxrQ0FDdkMsS0FBSyxDQUFDLFlBQVksQ0FBQyxLQUN0QixHQUFHLEVBQUUsb0JBQW9CLENBQUMsVUFBVSxFQUFFLEtBQUssQ0FBQzt3QkFDMUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDOzRCQUMvQixDQUFDLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUM7NEJBQ3hCLENBQUMsQ0FBQyxJQUFJO3dCQUNSLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDOzRCQUNwQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUM7NEJBQ25CLENBQUMsQ0FBQyxJQUFJLEVBQ1IsR0FBRyxFQUFFLG9CQUFvQixDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUM7d0JBQzFDLENBQUMsQ0FBQyxlQUFlLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQzs0QkFDL0IsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDOzRCQUN4QixDQUFDLENBQUMsSUFBSTt3QkFDUixDQUFDLENBQUMsb0JBQW9CLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQzs0QkFDcEMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDOzRCQUNuQixDQUFDLENBQUMsSUFBSSxFQUNSLFFBQVEsRUFBRSxvQkFBb0IsQ0FBQyxVQUFVLEVBQUUsVUFBVSxDQUFDO3dCQUNwRCxDQUFDLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUM7d0JBQzlCLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLEVBQUUsVUFBVSxDQUFDOzRCQUN6QyxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUM7NEJBQ3pCLENBQUMsQ0FBQyxLQUFLLEVBQ1QsU0FBUyxFQUFFLG9CQUFvQixDQUFDLFVBQVUsRUFBRSxXQUFXLENBQUM7d0JBQ3RELENBQUMsQ0FBQyxlQUFlLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQzs0QkFDckMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDOzRCQUM5QixDQUFDLENBQUMsSUFBSTt3QkFDUixDQUFDLENBQUMsb0JBQW9CLENBQUMsS0FBSyxFQUFFLFdBQVcsQ0FBQzs0QkFDMUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDOzRCQUN6QixDQUFDLENBQUMsSUFBSSxFQUNSLFNBQVMsRUFBRSxvQkFBb0IsQ0FBQyxVQUFVLEVBQUUsV0FBVyxDQUFDO3dCQUN0RCxDQUFDLENBQUMsZUFBZSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUM7NEJBQ3JDLENBQUMsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQzs0QkFDOUIsQ0FBQyxDQUFDLElBQUk7d0JBQ1IsQ0FBQyxDQUFDLG9CQUFvQixDQUFDLEtBQUssRUFBRSxRQUFRLENBQUM7NEJBQ3ZDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQzs0QkFDdEIsQ0FBQyxDQUFDLG9CQUFvQixDQUFDLEtBQUssRUFBRSxXQUFXLENBQUM7Z0NBQzFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQztnQ0FDekIsQ0FBQyxDQUFDLElBQUksRUFDUixPQUFPLEVBQUUsb0JBQW9CLENBQUMsVUFBVSxFQUFFLFNBQVMsQ0FBQzt3QkFDbEQsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDOzRCQUNuQyxDQUFDLENBQUMsVUFBVSxDQUFDLE9BQU87NEJBQ3BCLENBQUMsQ0FBQyxTQUFTO3dCQUNiLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLEVBQUUsU0FBUyxDQUFDOzRCQUN4QyxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxFQUFFOzRCQUNuRCxDQUFDLENBQUMsb0JBQW9CLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQztnQ0FDdEMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBRTtnQ0FDakQsQ0FBQyxDQUFDLFNBQVMsSUFDYixDQUFDO2dCQUVILE9BQU8sS0FBSyxDQUFDLEdBQUcsQ0FBQztnQkFDakIsT0FBTyxLQUFLLENBQUMsR0FBRyxDQUFDO2dCQUNqQixPQUFPLEtBQUssQ0FBQyxRQUFRLENBQUM7Z0JBQ3RCLE9BQU8sS0FBSyxDQUFDLFNBQVMsQ0FBQztnQkFDdkIsT0FBTyxLQUFLLENBQUMsTUFBTSxDQUFDO2dCQUNwQixPQUFPLEtBQUssQ0FBQyxTQUFTLENBQUM7Z0JBQ3ZCLE9BQU8sS0FBSyxDQUFDLE9BQU8sQ0FBQztnQkFDckIsT0FBTyxLQUFLLENBQUMsS0FBSyxDQUFDO2dCQUVuQixRQUFRLEtBQUssQ0FBQyxJQUFJLEVBQUU7b0JBQ2xCLEtBQUssVUFBVSxDQUFDLElBQUk7d0JBQ2xCLE9BQU8sS0FBSyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUM7d0JBQzVCLE9BQU8sS0FBSyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUM7d0JBQzVCLE1BQU07b0JBQ1IsS0FBSyxVQUFVLENBQUMsUUFBUTt3QkFDdEIsT0FBTyxLQUFLLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQzt3QkFDNUIsT0FBTyxLQUFLLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQztvQkFDOUIsS0FBSyxVQUFVLENBQUMsYUFBYTt3QkFDM0IsT0FBTyxLQUFLLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQzt3QkFDNUIsT0FBTyxLQUFLLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQzt3QkFDNUIsT0FBTyxLQUFLLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQzt3QkFDbEMsT0FBTyxLQUFLLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQztvQkFDcEMsS0FBSyxVQUFVLENBQUMsSUFBSTt3QkFDbEIsT0FBTyxLQUFLLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQzt3QkFDNUIsT0FBTyxLQUFLLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQzt3QkFDNUIsT0FBTyxLQUFLLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQzt3QkFDbEMsT0FBTyxLQUFLLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQzt3QkFDbEMsT0FBTyxLQUFLLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQzt3QkFDaEMsTUFBTTtvQkFDUixLQUFLLFVBQVUsQ0FBQyxPQUFPO3dCQUNyQixPQUFPLEtBQUssQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDO3dCQUM1QixPQUFPLEtBQUssQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDO3dCQUM1QixPQUFPLEtBQUssQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDO3dCQUNsQyxPQUFPLEtBQUssQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDO3dCQUNsQyxPQUFPLEtBQUssQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDO3dCQUNoQyxNQUFNO29CQUNSO3dCQUNFLE1BQU07aUJBQ1Q7Z0JBRUQsSUFBSSxZQUFZLENBQUMsTUFBQSxLQUFLLENBQUMsVUFBVSwwQ0FBRSxHQUFHLENBQUMsRUFBRTtvQkFDdkMsT0FBTyxLQUFLLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQztpQkFDN0I7Z0JBQ0QsSUFBSSxZQUFZLENBQUMsTUFBQSxLQUFLLENBQUMsVUFBVSwwQ0FBRSxHQUFHLENBQUMsRUFBRTtvQkFDdkMsT0FBTyxLQUFLLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQztpQkFDN0I7Z0JBQ0QsSUFBSSxZQUFZLENBQUMsTUFBQSxLQUFLLENBQUMsVUFBVSwwQ0FBRSxTQUFTLENBQUMsRUFBRTtvQkFDN0MsT0FBTyxLQUFLLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQztpQkFDbkM7Z0JBQ0QsSUFBSSxZQUFZLENBQUMsTUFBQSxLQUFLLENBQUMsVUFBVSwwQ0FBRSxTQUFTLENBQUMsRUFBRTtvQkFDN0MsT0FBTyxLQUFLLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQztpQkFDbkM7Z0JBQ0QsSUFBSSxZQUFZLENBQUMsTUFBQSxLQUFLLENBQUMsVUFBVSwwQ0FBRSxPQUFPLENBQUMsRUFBRTtvQkFDM0MsT0FBTyxLQUFLLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQztpQkFDakM7Z0JBRUQsS0FBSyxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7Z0JBQ3BCLEtBQUssQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO2FBQ3ZCO1lBRUQsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDLENBQUM7UUFFRixNQUFNLHVCQUF1QixHQUFHLENBQUMsS0FBVSxFQUFPLEVBQUU7WUFDbEQsSUFBSSxLQUFLLENBQUMsYUFBYSxFQUFFO2dCQUN2QixJQUFJLG9CQUFvQixDQUFDLEtBQUssRUFBRSxjQUFjLENBQUMsRUFBRTtvQkFDL0MsT0FBTyxLQUFLLENBQUM7aUJBQ2Q7cUJBQU0sSUFBSSxxQkFBcUIsQ0FBQyxLQUFLLEVBQUUsdUJBQXVCLENBQUMsRUFBRTtvQkFDaEUsT0FBTyxLQUFLLENBQUM7aUJBQ2Q7cUJBQU0sSUFBSSxDQUFDLHFCQUFxQixDQUFDLEtBQUssRUFBRSx1QkFBdUIsQ0FBQyxFQUFFO29CQUNqRSxNQUFNLFlBQVksR0FBRzt3QkFDbkIsUUFBUSxFQUFFLEtBQUs7d0JBQ2YsS0FBSyxFQUFFLEVBQUU7d0JBQ1QsT0FBTyxFQUFFOzRCQUNQO2dDQUNFLEdBQUcsRUFBRSxRQUFRO2dDQUNiLEtBQUssRUFBRTtvQ0FDTCxNQUFNLEVBQUU7d0NBQ04sR0FBRyxFQUFFLFdBQVc7d0NBQ2hCLElBQUksRUFBRSxLQUFLLEtBQUssQ0FBQyxHQUFHLEVBQUU7cUNBQ3ZCO2lDQUNGO2dDQUNELEtBQUssRUFBRSxFQUFFO2dDQUNULFVBQVUsRUFBRTtvQ0FDVixRQUFRLEVBQUUsS0FBSztvQ0FDZixRQUFRLEVBQUUsQ0FBQyxTQUFTLENBQUM7b0NBQ3JCLEtBQUssRUFBRSxFQUFFO29DQUNULE9BQU8sRUFBRTt3Q0FDUDs0Q0FDRSxFQUFFLEVBQUUsR0FBRzs0Q0FDUCxHQUFHLEVBQUUseUJBQXlCOzRDQUM5QixTQUFTLEVBQUUsR0FBRzs0Q0FDZCxLQUFLLEVBQUU7Z0RBQ0wsS0FBSyxFQUFFO29EQUNMLE1BQU0sRUFBRTt3REFDTixHQUFHLEVBQUUsUUFBUTt3REFDYixLQUFLLEVBQUU7NERBQ0wsTUFBTSxFQUFFO2dFQUNOLEdBQUcsRUFBRSxXQUFXO2dFQUNoQixJQUFJLEVBQUUsS0FBSyxLQUFLLENBQUMsR0FBRyxFQUFFOzZEQUN2Qjt5REFDRjtxREFDRjtpREFDRjs2Q0FDRjt5Q0FDRjtxQ0FDRjtpQ0FDRjs2QkFDRjt5QkFDRjtxQkFDRixDQUFDO29CQUVGLEtBQUssR0FBRyxvQkFBb0IsQ0FBQyxLQUFLLEVBQUUsZUFBZSxFQUFFLFlBQVksQ0FBQyxDQUFDO29CQUNuRSxPQUFPLEtBQUssQ0FBQztpQkFDZDtnQkFFRCxPQUFPLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQztnQkFDM0IsT0FBTyxLQUFLLENBQUMsY0FBYyxDQUFDLENBQUM7YUFDOUI7WUFFRCxPQUFPLEtBQUssQ0FBQztRQUNmLENBQUMsQ0FBQztRQUVGLE1BQU0scUJBQXFCLEdBQUcsQ0FBQyxLQUFVLEVBQU8sRUFBRTtZQUNoRCxLQUFLLEdBQUcsa0JBQWtCLENBQUMsS0FBSyxFQUFFLFVBQVUsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUVyRCxPQUFPLEtBQUssQ0FBQztRQUNmLENBQUMsQ0FBQztRQUVGLE1BQU0sbUJBQW1CLEdBQUcsQ0FBQyxLQUFVLEVBQU8sRUFBRTtZQUM5QyxJQUFJLEtBQUssQ0FBQyxhQUFhLEVBQUU7Z0JBQ3ZCLEtBQUssR0FBRyx1QkFBdUIsQ0FBQyxLQUFLLEVBQUUsVUFBVSxFQUFFLEVBQUUsQ0FBQyxDQUFDO2FBQ3hEO1lBRUQsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDLENBQUM7UUFFRixNQUFNLHNCQUFzQixHQUFHLENBQUMsS0FBVSxFQUFPLEVBQUU7WUFDakQsSUFBSSxLQUFLLENBQUMsYUFBYSxFQUFFO2dCQUN2QixJQUNFLG9CQUFvQixDQUFDLEtBQUssRUFBRSxRQUFRLENBQUM7b0JBQ3JDLEtBQUssQ0FBQyxNQUFNLEtBQUssT0FBTztvQkFDeEIsb0JBQW9CLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxFQUNyQztvQkFDQSxLQUFLLEdBQUcsZ0JBQWdCLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRTt3QkFDdkMsTUFBTSxFQUFFLEtBQUssQ0FBQyxNQUFNO3FCQUNyQixDQUFDLENBQUM7aUJBQ0o7YUFDRjtZQUVELE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQyxDQUFDO1FBRUYsTUFBTSxhQUFhLEdBQUcsQ0FBQyxVQUFlLEVBQUUsTUFBYSxFQUFPLEVBQUU7WUFDNUQsSUFBSSxvQkFBb0IsQ0FBQyxVQUFVLEVBQUUsV0FBVyxDQUFDLEVBQUU7Z0JBQ2pELFVBQVUsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLEdBQUcsTUFBTSxDQUFDO2FBQ3pDO2lCQUFNO2dCQUNMLFVBQVUsQ0FBQyxRQUFRLENBQUMsR0FBRyxNQUFNLENBQUM7YUFDL0I7WUFFRCxPQUFPLFVBQVUsQ0FBQztRQUNwQixDQUFDLENBQUM7UUFFRixNQUFNLGtCQUFrQixHQUFHLENBQUMsVUFBZSxFQUFFLE1BQVcsRUFBTyxFQUFFO1lBQy9ELFVBQVUsQ0FBQyxhQUFhLENBQUMsR0FBRyxNQUFNLENBQUM7WUFFbkMsT0FBTyxVQUFVLENBQUM7UUFDcEIsQ0FBQyxDQUFDO1FBRUYsTUFBTSxxQkFBcUIsR0FBRyxDQUFDLFdBQWdCLEVBQUUsS0FBVSxFQUFPLEVBQUU7WUFDbEUsSUFBSSxvQkFBb0IsQ0FBQyxLQUFLLEVBQUUsVUFBVSxDQUFDLEVBQUU7Z0JBQzNDLElBQUksb0JBQW9CLENBQUMsV0FBVyxFQUFFLEtBQUssQ0FBQyxRQUFRLENBQUMsRUFBRTtvQkFDckQsV0FBVyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2lCQUM3QztxQkFBTTtvQkFDTCxXQUFXLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2lCQUMzQzthQUNGO1lBRUQsT0FBTyxXQUFXLENBQUM7UUFDckIsQ0FBQyxDQUFDO1FBRUYsTUFBTSx5QkFBeUIsR0FBRyxDQUNoQyxVQUFlLEVBQ2YsUUFBZ0IsRUFDWCxFQUFFO1lBQ1AsSUFBSSxxQkFBcUIsQ0FBQyxVQUFVLEVBQUUsK0JBQStCLENBQUMsRUFBRTtnQkFDdEUsVUFBVSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssR0FBRyxxQkFBcUIsQ0FDOUQsVUFBVSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssRUFDeEMsUUFBUSxDQUNULENBQUM7YUFDSDtZQUVELElBQ0UscUJBQXFCLENBQ25CLFVBQVUsRUFDVix5Q0FBeUMsQ0FDMUMsRUFDRDtnQkFDQSxVQUFVLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUMsS0FBSztvQkFDaEQscUJBQXFCLENBQ25CLFVBQVUsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxLQUFLLEVBQ2xELFFBQVEsQ0FDVCxDQUFDO2FBQ0w7WUFFRCxJQUNFLHFCQUFxQixDQUFDLFVBQVUsRUFBRSxvQ0FBb0MsQ0FBQyxFQUN2RTtnQkFDQSxVQUFVLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsS0FBSyxHQUFHLHFCQUFxQixDQUNuRSxVQUFVLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUM3QyxRQUFRLENBQ1QsQ0FBQzthQUNIO1lBRUQsT0FBTyxVQUFVLENBQUM7UUFDcEIsQ0FBQyxDQUFDO1FBRUYsTUFBTSwwQkFBMEIsR0FBRyxDQUNqQyxLQUFhLEVBQ2IsUUFBZ0IsRUFDWCxFQUFFO1lBQ1AsSUFBSSxvQkFBb0IsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLEVBQUU7Z0JBQ3hDLEtBQUssQ0FBQyxLQUFLLEdBQUcscUJBQXFCLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQzthQUM1RDtZQUVELElBQUkscUJBQXFCLENBQUMsS0FBSyxFQUFFLHdCQUF3QixDQUFDLEVBQUU7Z0JBQzFELEtBQUssQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLEdBQUcscUJBQXFCLENBQ3JELEtBQUssQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLEVBQy9CLFFBQVEsQ0FDVCxDQUFDO2FBQ0g7WUFFRCxNQUFNLGVBQWUsR0FBRyxDQUFDLGNBQWMsRUFBRSxFQUFFO2dCQUN6QyxLQUFLLE1BQU0sTUFBTSxJQUFJLGNBQWMsRUFBRTtvQkFDbkMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxHQUFHLHFCQUFxQixDQUM1QyxjQUFjLENBQUMsTUFBTSxDQUFDLEVBQ3RCLFFBQVEsQ0FDVCxDQUFDO2lCQUNIO2dCQUNELE9BQU8sY0FBYyxDQUFDO1lBQ3hCLENBQUMsQ0FBQztZQUVGLElBQ0UsS0FBSyxDQUFDLElBQUksSUFBSSxVQUFVLENBQUMsUUFBUTtnQkFDakMscUJBQXFCLENBQUMsS0FBSyxFQUFFLFlBQVksQ0FBQyxFQUMxQztnQkFDQSxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsZUFBZSxDQUNoRCxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQ2pDLENBQUM7YUFDSDtZQUVELE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQyxDQUFDO1FBRUYsSUFBSSxNQUFNLEdBQVUsYUFBYSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBRTlDLElBQUksV0FBVyxHQUFRLEVBQUUsQ0FBQztRQUUxQixLQUFLLElBQUksS0FBSyxJQUFJLE1BQU0sRUFBRTtZQUN4QixLQUFLLEdBQUcsaUJBQWlCLENBQUMsS0FBSyxDQUFDLENBQUM7WUFFakMsS0FBSyxHQUFHLHFCQUFxQixDQUFDLEtBQUssQ0FBQyxDQUFDO1lBRXJDLFdBQVcsR0FBRyxxQkFBcUIsQ0FBQyxXQUFXLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFFeEQsS0FBSyxHQUFHLHVCQUF1QixDQUFDLEtBQUssQ0FBQyxDQUFDO1lBRXZDLEtBQUssR0FBRyxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUVyQyxLQUFLLEdBQUcsc0JBQXNCLENBQUMsS0FBSyxDQUFDLENBQUM7WUFFdEMsS0FBSyxHQUFHLDBCQUEwQixDQUFDLEtBQUssRUFBRSxXQUFXLEVBQUUsQ0FBQyxDQUFDO1lBRXpELEtBQUssR0FBRyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUNwQztRQUVELFVBQVUsR0FBRyx5QkFBeUIsQ0FBQyxVQUFVLEVBQUUsV0FBVyxFQUFFLENBQUMsQ0FBQztRQUVsRSxVQUFVLEdBQUcsa0JBQWtCLENBQUMsVUFBVSxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBRXpELFVBQVUsR0FBRyxhQUFhLENBQUMsVUFBVSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBRS9DLE9BQU8sVUFBVSxDQUFDO0lBQ3BCLENBQUM7Q0FDRjtBQTd2QkM7SUFEQyxTQUFTOzhEQVdUO0FBR0Q7SUFEQyxTQUFTOytEQWVUO0FBR0Q7SUFEQyxTQUFTOzJEQW1EVDtBQUdEO0lBREMsU0FBUztrREEwcUJUIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgY2hlY2tPYmplY3RLZXlFeGlzdHMsXG4gIGNoZWNrT2JqZWN0UGF0aEV4aXN0cyxcbiAgZ2V0T2JqZWN0RGVlcENvcHksXG4gIGlzRW1wdHlWYWx1ZSxcbiAgaXNOb3RFbXB0eVZhbHVlLFxuICBsb2dNZXRob2QsXG4gIG1lcmdlT2JqZWN0cyxcbiAgc2V0TWlzc2luZ0tleVZhbHVlLFxuICBzZXRWYWx1ZVRvT2JqZWN0UGF0aFxufSBmcm9tIFwia3dpa2lkLXRvb2xraXRcIjtcbmltcG9ydCB7XG4gIEVGaWVsZFR5cGUsXG4gIFRGaWVsZFxufSBmcm9tIFwiLi4vZm9ybS12aWV3L2RlZmluaXRpb25zL2Zvcm0tdmlldy5maWVsZHMuZGVmaW5pdGlvblwiO1xuaW1wb3J0IHsgRklFTERfUFJPUEVSVElFUyB9IGZyb20gXCIuL2NvbmZpZy1jb252ZXJ0ZXIuY29uc3RhbnRzXCI7XG5pbXBvcnQge1xuICB1cGRhdGVEaXNwbGF5TGFuZ3VhZ2UsXG4gIGdldEZvcm1GaWVsZHMsXG4gIGdldE1heERhdGUsXG4gIGdldE1pbkRhdGUsXG4gIHNldEZpZWxkQXNGb3JtRWxlbWVudCxcbiAgc2V0RmllbGRLZXlIaWRkZW4sXG4gIHNldEZpZWxkS2V5VmFsdWUsXG4gIHNldE1pc3NpbmdGaWVsZEtleVZhbHVlLFxuICBnZXRMYW5ndWFnZVxufSBmcm9tIFwiLi9jb25maWctY29udmVydGVyLmhlbHBlclwiO1xuXG5leHBvcnQgY2xhc3MgQ29udmVydGVyIHtcbiAgQGxvZ01ldGhvZFxuICB1cGRhdGVGb3JtQ29uZmlnTWlzY2VsbGFuZW91cyhmb3JtQ29uZmlnOiBhbnksIGFyZ3M6IGFueSk6IGFueSB7XG4gICAgaWYgKGNoZWNrT2JqZWN0S2V5RXhpc3RzKGFyZ3MsIFwiZm9ybXNMaXN0TGVuZ3RoXCIpKSB7XG4gICAgICBmb3JtQ29uZmlnID0gc2V0VmFsdWVUb09iamVjdFBhdGgoXG4gICAgICAgIGZvcm1Db25maWcsXG4gICAgICAgIFwiZm9ybXNMaXN0TGVuZ3RoXCIsXG4gICAgICAgIGFyZ3MuZm9ybXNMaXN0TGVuZ3RoXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiBmb3JtQ29uZmlnO1xuICB9XG5cbiAgQGxvZ01ldGhvZFxuICB1cGRhdGVGb3JtQ29uZmlnRnJvbVVzZXJDb25maWcoZm9ybUNvbmZpZzogYW55LCB1c2VyQ29uZmlnOiBhbnkpOiBhbnkge1xuICAgIGlmIChpc05vdEVtcHR5VmFsdWUodXNlckNvbmZpZykpIHtcbiAgICAgIGlmIChjaGVja09iamVjdEtleUV4aXN0cyh1c2VyQ29uZmlnLCBcInRoZW1lXCIpKSB7XG4gICAgICAgIGlmIChjaGVja09iamVjdEtleUV4aXN0cyh1c2VyQ29uZmlnLnRoZW1lLCBcImNsaWVudExvZ29cIikpIHtcbiAgICAgICAgICBzZXRWYWx1ZVRvT2JqZWN0UGF0aChcbiAgICAgICAgICAgIGZvcm1Db25maWcsXG4gICAgICAgICAgICBcInByb3BlcnRpZXMuaGVhZGVyLmxvZ28uc3JjXCIsXG4gICAgICAgICAgICB1c2VyQ29uZmlnLnRoZW1lLmNsaWVudExvZ29cbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGZvcm1Db25maWc7XG4gIH1cblxuICBAbG9nTWV0aG9kXG4gIHVwZGF0ZUZvcm1Db25maWdQcm9wZXJ0aWVzKGZvcm1Db25maWc6IGFueSk6IGFueSB7XG4gICAgY29uc3QgZm9ybVZpZXdQcm9wZXJ0aWVzID0ge1xuICAgICAgaGVhZGVyOiB7XG4gICAgICAgIGxvZ286IHtcbiAgICAgICAgICBzcmM6IFwiXCIsXG4gICAgICAgICAgYWx0OiBcIkxvZ29cIixcbiAgICAgICAgICBoaWRkZW46IGZhbHNlLFxuICAgICAgICAgIHN0eWxlczogXCJcIlxuICAgICAgICB9LFxuICAgICAgICBiYWNrQnV0dG9uOiB7XG4gICAgICAgICAgbW9kZTogXCJUQUJCRURcIixcbiAgICAgICAgICBieXBhc3NDb25maXJtYXRpb246IGZhbHNlLFxuICAgICAgICAgIGhpZGRlbjogdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICB0aXRsZToge1xuICAgICAgICAgIGhpZGRlbjogZmFsc2UsXG4gICAgICAgICAgbGFiZWw6IGZvcm1Db25maWc/LnRpdGxlID8/IGZvcm1Db25maWc/LnByb3BzLnRpdGxlID8/IFwiRm9ybVwiLFxuICAgICAgICAgIHN0eWxlczogXCJcIlxuICAgICAgICB9LFxuICAgICAgICBzdGVwczoge1xuICAgICAgICAgIGhpZGRlbjogZmFsc2UsXG4gICAgICAgICAgc3R5bGVzOiBcIlwiXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBtYWluOiB7XG4gICAgICAgIHN0eWxlczogXCJcIlxuICAgICAgfSxcbiAgICAgIGZvb3Rlcjoge1xuICAgICAgICB2aWV3Rm9ybXNCdXR0b246IHtcbiAgICAgICAgICBieXBhc3NDb25maXJtYXRpb246IGZhbHNlLFxuICAgICAgICAgIGhpZGRlbjogZmFsc2UsXG4gICAgICAgICAgbGFiZWw6IFwiVmlldyBGb3Jtc1wiXG4gICAgICAgIH0sXG4gICAgICAgIHNhdmVCdXR0b246IHtcbiAgICAgICAgICBoaWRkZW46IGZhbHNlLFxuICAgICAgICAgIGxhYmVsOiBcIlNhdmVcIlxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgaXNVbnNhdmVkRGF0YUFsZXJ0RW5hYmxlZDogZmFsc2VcbiAgICB9O1xuXG4gICAgaWYgKGNoZWNrT2JqZWN0S2V5RXhpc3RzKGZvcm1Db25maWcsIFwicHJvcGVydGllc1wiKSkge1xuICAgICAgZm9ybUNvbmZpZy5wcm9wZXJ0aWVzID0gZ2V0T2JqZWN0RGVlcENvcHkoXG4gICAgICAgIG1lcmdlT2JqZWN0cyhmb3JtVmlld1Byb3BlcnRpZXMsIGZvcm1Db25maWcucHJvcGVydGllcylcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGZvcm1Db25maWcucHJvcGVydGllcyA9IGZvcm1WaWV3UHJvcGVydGllcztcbiAgICB9XG5cbiAgICByZXR1cm4gZm9ybUNvbmZpZztcbiAgfVxuXG4gIEBsb2dNZXRob2RcbiAgY29udmVydEZvcm1Db25maWcoZm9ybUNvbmZpZzogYW55KTogYW55IHtcbiAgICBjb25zdCBmb3JtYXRPbkZpZWxkVHlwZSA9IChmaWVsZDogYW55KTogYW55ID0+IHtcbiAgICAgIGNvbnN0IHVwZGF0ZUZvcm1GaWVsZFByb3BlcnRpZXMgPSAoZmllbGQ6IGFueSk6IGFueSA9PiB7XG4gICAgICAgIGlmIChjaGVja09iamVjdEtleUV4aXN0cyhGSUVMRF9QUk9QRVJUSUVTLCBmaWVsZC50eXBlKSkge1xuICAgICAgICAgIGZpZWxkLnByb3BlcnRpZXMgPSBtZXJnZU9iamVjdHMoXG4gICAgICAgICAgICBnZXRPYmplY3REZWVwQ29weShGSUVMRF9QUk9QRVJUSUVTW2ZpZWxkLnR5cGVdKSxcbiAgICAgICAgICAgIGZpZWxkLnByb3BlcnRpZXNcbiAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGZpZWxkO1xuICAgICAgfTtcblxuICAgICAgY29uc3QgZm9ybWF0RmllbGRUeXBlSHRtbCA9IChmaWVsZDogYW55KTogYW55ID0+IHtcbiAgICAgICAgZmllbGQgPSBzZXRGaWVsZEtleUhpZGRlbihmaWVsZCk7XG4gICAgICAgIGZpZWxkID0gc2V0RmllbGRBc0Zvcm1FbGVtZW50KGZpZWxkLCBmYWxzZSk7XG5cbiAgICAgICAgcmV0dXJuIGZpZWxkO1xuICAgICAgfTtcbiAgICAgIGNvbnN0IGZvcm1hdEZpZWxkVHlwZVRpdGxlID0gKGZpZWxkOiBhbnkpOiBhbnkgPT4ge1xuICAgICAgICBmaWVsZCA9IHNldEZpZWxkS2V5SGlkZGVuKGZpZWxkKTtcbiAgICAgICAgZmllbGQgPSBzZXRGaWVsZEFzRm9ybUVsZW1lbnQoZmllbGQsIGZhbHNlKTtcblxuICAgICAgICByZXR1cm4gZmllbGQ7XG4gICAgICB9O1xuICAgICAgY29uc3QgZm9ybWF0RmllbGRUeXBlQnV0dG9uID0gKGZpZWxkOiBhbnkpOiBhbnkgPT4ge1xuICAgICAgICBmaWVsZCA9IHNldE1pc3NpbmdGaWVsZEtleVZhbHVlKGZpZWxkLCBcImhpZGRlblwiLCBmYWxzZSk7XG4gICAgICAgIGZpZWxkID0gc2V0RmllbGRBc0Zvcm1FbGVtZW50KGZpZWxkLCBmYWxzZSk7XG4gICAgICAgIGZpZWxkID0gdXBkYXRlRm9ybUZpZWxkUHJvcGVydGllcyhmaWVsZCk7XG5cbiAgICAgICAgcmV0dXJuIGZpZWxkO1xuICAgICAgfTtcbiAgICAgIGNvbnN0IGZvcm1hdEZpZWxkVHlwZVRleHQgPSAoZmllbGQ6IGFueSk6IGFueSA9PiB7XG4gICAgICAgIGZpZWxkID0gc2V0RmllbGRLZXlIaWRkZW4oZmllbGQpO1xuICAgICAgICBmaWVsZCA9IHNldEZpZWxkQXNGb3JtRWxlbWVudChmaWVsZCwgdHJ1ZSk7XG4gICAgICAgIGZpZWxkID0gdXBkYXRlRm9ybUZpZWxkUHJvcGVydGllcyhmaWVsZCk7XG5cbiAgICAgICAgcmV0dXJuIGZpZWxkO1xuICAgICAgfTtcbiAgICAgIGNvbnN0IGZvcm1hdEZpZWxkVHlwZVBhc3N3b3JkID0gKGZpZWxkOiBhbnkpOiBhbnkgPT4ge1xuICAgICAgICBmaWVsZCA9IHNldEZpZWxkS2V5SGlkZGVuKGZpZWxkKTtcbiAgICAgICAgZmllbGQgPSBzZXRGaWVsZEFzRm9ybUVsZW1lbnQoZmllbGQsIHRydWUpO1xuICAgICAgICBmaWVsZCA9IHVwZGF0ZUZvcm1GaWVsZFByb3BlcnRpZXMoZmllbGQpO1xuXG4gICAgICAgIHJldHVybiBmaWVsZDtcbiAgICAgIH07XG4gICAgICBjb25zdCBmb3JtYXRGaWVsZFR5cGVFbWFpbCA9IChmaWVsZDogYW55KTogYW55ID0+IHtcbiAgICAgICAgZmllbGQgPSBzZXRGaWVsZEtleUhpZGRlbihmaWVsZCk7XG4gICAgICAgIGZpZWxkID0gc2V0RmllbGRBc0Zvcm1FbGVtZW50KGZpZWxkLCB0cnVlKTtcbiAgICAgICAgZmllbGQgPSB1cGRhdGVGb3JtRmllbGRQcm9wZXJ0aWVzKGZpZWxkKTtcblxuICAgICAgICByZXR1cm4gZmllbGQ7XG4gICAgICB9O1xuICAgICAgY29uc3QgZm9ybWF0RmllbGRUeXBlU3RhclJhdGluZyA9IChmaWVsZDogYW55KTogYW55ID0+IHtcbiAgICAgICAgZmllbGQgPSBzZXRGaWVsZEtleUhpZGRlbihmaWVsZCk7XG4gICAgICAgIGZpZWxkID0gc2V0RmllbGRBc0Zvcm1FbGVtZW50KGZpZWxkLCB0cnVlKTtcbiAgICAgICAgZmllbGQgPSB1cGRhdGVGb3JtRmllbGRQcm9wZXJ0aWVzKGZpZWxkKTtcblxuICAgICAgICByZXR1cm4gZmllbGQ7XG4gICAgICB9O1xuICAgICAgY29uc3QgZm9ybWF0RmllbGRUeXBlVGV4dGFyZWEgPSAoZmllbGQ6IGFueSk6IGFueSA9PiB7XG4gICAgICAgIGZpZWxkID0gc2V0RmllbGRLZXlIaWRkZW4oZmllbGQpO1xuICAgICAgICBmaWVsZCA9IHNldEZpZWxkQXNGb3JtRWxlbWVudChmaWVsZCwgdHJ1ZSk7XG4gICAgICAgIHJldHVybiBmaWVsZDtcbiAgICAgIH07XG4gICAgICBjb25zdCBmb3JtYXRGaWVsZFR5cGVDaGVja2JveCA9IChmaWVsZDogYW55KTogYW55ID0+IHtcbiAgICAgICAgZmllbGQgPSBzZXRGaWVsZEtleUhpZGRlbihmaWVsZCk7XG4gICAgICAgIGZpZWxkID0gc2V0RmllbGRBc0Zvcm1FbGVtZW50KGZpZWxkLCB0cnVlKTtcbiAgICAgICAgcmV0dXJuIGZpZWxkO1xuICAgICAgfTtcbiAgICAgIGNvbnN0IGZvcm1hdEZpZWxkVHlwZU51bWJlciA9IChmaWVsZDogYW55KTogYW55ID0+IHtcbiAgICAgICAgZmllbGQgPSBzZXRGaWVsZEtleUhpZGRlbihmaWVsZCk7XG4gICAgICAgIGZpZWxkID0gc2V0RmllbGRBc0Zvcm1FbGVtZW50KGZpZWxkLCB0cnVlKTtcblxuICAgICAgICBpZiAoY2hlY2tPYmplY3RLZXlFeGlzdHMoZmllbGQsIFwia2V5XCIpKSB7XG4gICAgICAgICAgaWYgKGZpZWxkLmtleSA9PT0gXCJhYWRoYWFyX251bWJlclwiKSB7XG4gICAgICAgICAgICBmaWVsZCA9IHNldEZpZWxkS2V5VmFsdWUoZmllbGQsIFwidHlwZVwiLCBcImFhZGhhYXJfbnVtYmVyXCIpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoZmllbGQua2V5ID09PSBcImNvbnRhY3RfbnVtYmVyXCIpIHtcbiAgICAgICAgICAgIGZpZWxkID0gc2V0RmllbGRLZXlWYWx1ZShmaWVsZCwgXCJ0eXBlXCIsIFwicGhvbmVcIik7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKGZpZWxkLnR5cGUgPT09IFwicGhvbmVcIiB8fCBmaWVsZC50eXBlID09PSBcIm51bWJlclwiKSB7XG4gICAgICAgICAgICBmaWVsZCA9IHVwZGF0ZUZvcm1GaWVsZFByb3BlcnRpZXMoZmllbGQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmaWVsZDtcbiAgICAgIH07XG4gICAgICBjb25zdCBmb3JtYXRGaWVsZFR5cGVJbWFnZSA9IChmaWVsZDogYW55KTogYW55ID0+IHtcbiAgICAgICAgZmllbGQgPSBzZXRGaWVsZEtleUhpZGRlbihmaWVsZCk7XG4gICAgICAgIGZpZWxkID0gc2V0RmllbGRBc0Zvcm1FbGVtZW50KGZpZWxkLCB0cnVlKTtcbiAgICAgICAgZmllbGQgPSB1cGRhdGVGb3JtRmllbGRQcm9wZXJ0aWVzKGZpZWxkKTtcblxuICAgICAgICByZXR1cm4gZmllbGQ7XG4gICAgICB9O1xuICAgICAgY29uc3QgZm9ybWF0RmllbGRUeXBlRGF0ZSA9IChmaWVsZDogYW55KTogYW55ID0+IHtcbiAgICAgICAgZmllbGQgPSBzZXRGaWVsZEtleUhpZGRlbihmaWVsZCk7XG4gICAgICAgIGZpZWxkID0gc2V0RmllbGRBc0Zvcm1FbGVtZW50KGZpZWxkLCB0cnVlKTtcblxuICAgICAgICBmaWVsZC5wcm9wZXJ0aWVzID0gZ2V0T2JqZWN0RGVlcENvcHkoXG4gICAgICAgICAgbWVyZ2VPYmplY3RzKFxuICAgICAgICAgICAgZ2V0T2JqZWN0RGVlcENvcHkoRklFTERfUFJPUEVSVElFU1tmaWVsZC50eXBlXSksXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIG1heDogZ2V0TWF4RGF0ZShmaWVsZCksXG4gICAgICAgICAgICAgIG1pbjogZ2V0TWluRGF0ZShmaWVsZClcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBmaWVsZC5wcm9wZXJ0aWVzXG4gICAgICAgICAgKVxuICAgICAgICApO1xuXG4gICAgICAgIHJldHVybiBmaWVsZDtcbiAgICAgIH07XG4gICAgICBjb25zdCBmb3JtYXRGaWVsZFR5cGVQaG9uZSA9IChmaWVsZDogYW55KTogYW55ID0+IHtcbiAgICAgICAgZmllbGQgPSBzZXRGaWVsZEtleUhpZGRlbihmaWVsZCk7XG4gICAgICAgIGZpZWxkID0gc2V0RmllbGRBc0Zvcm1FbGVtZW50KGZpZWxkLCB0cnVlKTtcbiAgICAgICAgZmllbGQgPSB1cGRhdGVGb3JtRmllbGRQcm9wZXJ0aWVzKGZpZWxkKTtcblxuICAgICAgICByZXR1cm4gZmllbGQ7XG4gICAgICB9O1xuICAgICAgY29uc3QgZm9ybWF0RmllbGRUeXBlUmFkaW8gPSAoZmllbGQ6IGFueSk6IGFueSA9PiB7XG4gICAgICAgIGZpZWxkID0gc2V0RmllbGRLZXlIaWRkZW4oZmllbGQpO1xuICAgICAgICBmaWVsZCA9IHNldEZpZWxkQXNGb3JtRWxlbWVudChmaWVsZCwgdHJ1ZSk7XG4gICAgICAgIGZpZWxkID0gdXBkYXRlRm9ybUZpZWxkUHJvcGVydGllcyhmaWVsZCk7XG5cbiAgICAgICAgZmllbGQub3B0aW9ucyA9IGZpZWxkLm9wdGlvbnMubWFwKCh4OiBhbnkpOiBhbnkgPT4ge1xuICAgICAgICAgIGlmICh0eXBlb2YgeCA9PT0gXCJzdHJpbmdcIiB8fCB0eXBlb2YgeCA9PT0gXCJudW1iZXJcIikge1xuICAgICAgICAgICAgcmV0dXJuIHsgbGFiZWw6IHgsIGRpc2FibGVkOiBmYWxzZSwgZGVzY3JpcHRpb246IFwiXCIgfTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICBjaGVja09iamVjdEtleUV4aXN0cyh4LCBcImxhYmVsXCIpICYmXG4gICAgICAgICAgICAgIGNoZWNrT2JqZWN0S2V5RXhpc3RzKHgsIFwiZGlzYWJsZWRcIikgJiZcbiAgICAgICAgICAgICAgY2hlY2tPYmplY3RLZXlFeGlzdHMoeCwgXCJkZXNjcmlwdGlvblwiKVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgIHJldHVybiB4O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFjaGVja09iamVjdEtleUV4aXN0cyh4LCBcImRpc2FibGVkXCIpKSB7XG4gICAgICAgICAgICAgIHggPSB7IC4uLngsIGRpc2FibGVkOiBmYWxzZSB9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFjaGVja09iamVjdEtleUV4aXN0cyh4LCBcImRlc2NyaXB0aW9uXCIpKSB7XG4gICAgICAgICAgICAgIHggPSB7IC4uLngsIGRlc2NyaXB0aW9uOiBmYWxzZSB9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHg7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gZmllbGQ7XG4gICAgICB9O1xuICAgICAgY29uc3QgZm9ybWF0RmllbGRUeXBlU2xpZGVyID0gKGZpZWxkOiBhbnkpOiBhbnkgPT4ge1xuICAgICAgICBmaWVsZCA9IHNldEZpZWxkS2V5SGlkZGVuKGZpZWxkKTtcbiAgICAgICAgZmllbGQgPSBzZXRGaWVsZEFzRm9ybUVsZW1lbnQoZmllbGQsIHRydWUpO1xuICAgICAgICBmaWVsZCA9IHVwZGF0ZUZvcm1GaWVsZFByb3BlcnRpZXMoZmllbGQpO1xuXG4gICAgICAgIHJldHVybiBmaWVsZDtcbiAgICAgIH07XG4gICAgICBjb25zdCBmb3JtYXRGaWVsZFR5cGVTZWxlY3QgPSAoZmllbGQ6IGFueSk6IGFueSA9PiB7XG4gICAgICAgIGZpZWxkID0gc2V0RmllbGRLZXlIaWRkZW4oZmllbGQpO1xuICAgICAgICBmaWVsZCA9IHNldEZpZWxkQXNGb3JtRWxlbWVudChmaWVsZCwgdHJ1ZSk7XG4gICAgICAgIGZpZWxkID0gdXBkYXRlRm9ybUZpZWxkUHJvcGVydGllcyhmaWVsZCk7XG5cbiAgICAgICAgcmV0dXJuIGZpZWxkO1xuICAgICAgfTtcbiAgICAgIGNvbnN0IGZvcm1hdEZpZWxkVHlwZUFwaSA9IChmaWVsZDogYW55KTogYW55ID0+IHtcbiAgICAgICAgZmllbGQgPSBzZXRGaWVsZEFzRm9ybUVsZW1lbnQoZmllbGQsIHRydWUpO1xuICAgICAgICBmaWVsZCA9IHVwZGF0ZUZvcm1GaWVsZFByb3BlcnRpZXMoZmllbGQpO1xuXG4gICAgICAgIGlmICghY2hlY2tPYmplY3RLZXlFeGlzdHMoZmllbGQsIFwic2hvd0xvYWRlclwiKSkge1xuICAgICAgICAgIGZpZWxkID0gc2V0RmllbGRLZXlWYWx1ZShmaWVsZCwgXCJzaG93TG9hZGVyXCIsIGZhbHNlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghY2hlY2tPYmplY3RLZXlFeGlzdHMoZmllbGQsIFwiYXBpXCIpKSB7XG4gICAgICAgICAgY29uc3QgZmllbGRBcGlEZWZhdWx0cyA9IHtcbiAgICAgICAgICAgIHVybDogXCJcIixcbiAgICAgICAgICAgIHJlcXVlc3Q6IHt9LFxuICAgICAgICAgICAgcmVzcG9uc2U6IHt9LFxuICAgICAgICAgICAgc3RhdHVzOiB7XG4gICAgICAgICAgICAgIHZhbHVlOiBcImRlZmF1bHRcIixcbiAgICAgICAgICAgICAgbGFiZWxzOiB7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDogXCJDYWxsIEFQSVwiLFxuICAgICAgICAgICAgICAgIGxvYWRpbmc6IFwiQ2FsbCBBUElcIixcbiAgICAgICAgICAgICAgICByZXRyeTogXCJSZXRyeSBBUElcIixcbiAgICAgICAgICAgICAgICBzdWNjZXNzOiBcIkFQSSBTdWNjZXNzXCIsXG4gICAgICAgICAgICAgICAgZmFpbGVkOiBcIkFQSSBGYWlsZWRcIlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfTtcbiAgICAgICAgICBmaWVsZC5hcGkgPSBnZXRPYmplY3REZWVwQ29weShcbiAgICAgICAgICAgIG1lcmdlT2JqZWN0cyhmaWVsZEFwaURlZmF1bHRzLCBmaWVsZEFwaURlZmF1bHRzKVxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKFxuICAgICAgICAgICFjaGVja09iamVjdEtleUV4aXN0cyhmaWVsZC5hcGksIFwicmVxdWVzdFwiKSAmJlxuICAgICAgICAgICFjaGVja09iamVjdEtleUV4aXN0cyhmaWVsZC5hcGksIFwiZW50cnlwb2ludFwiKVxuICAgICAgICApIHtcbiAgICAgICAgICBjb25zdCBhcGlFbnRyeXBvaW50ID0ge1xuICAgICAgICAgICAgdHJpZ2dlcnM6IFtcIk9OX0FQSV9DQUxMXCJdLFxuICAgICAgICAgICAgcnVsZXM6IFtdLFxuICAgICAgICAgICAgYWN0aW9uczogW1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgaWQ6IFwiMVwiLFxuICAgICAgICAgICAgICAgIGtleTogXCJBUElfQ0FMTFwiLFxuICAgICAgICAgICAgICAgIGNvbmRpdGlvbjogXCJ0cnVlXCIsXG4gICAgICAgICAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICAgICAgICAgIGZpZWxkS2V5OiBmaWVsZC5rZXksXG4gICAgICAgICAgICAgICAgICBhcGlLZXk6IGZpZWxkLmFwaS5lbmRwb2ludHNbMF0uYXBpS2V5XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdXG4gICAgICAgICAgfTtcbiAgICAgICAgICBmaWVsZC5lbnRyeXBvaW50ID0gZ2V0T2JqZWN0RGVlcENvcHkoXG4gICAgICAgICAgICBtZXJnZU9iamVjdHMoYXBpRW50cnlwb2ludCwgZmllbGQuYXBpKVxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZpZWxkO1xuICAgICAgfTtcbiAgICAgIGNvbnN0IGZvcm1hdEZpZWxkVHlwZU90cCA9IChmaWVsZDogYW55KTogYW55ID0+IHtcbiAgICAgICAgZmllbGQgPSBzZXRGaWVsZEtleUhpZGRlbihmaWVsZCk7XG4gICAgICAgIGZpZWxkID0gc2V0RmllbGRBc0Zvcm1FbGVtZW50KGZpZWxkLCB0cnVlKTtcblxuICAgICAgICBmaWVsZC5wcm9wZXJ0aWVzID0gZ2V0T2JqZWN0RGVlcENvcHkoXG4gICAgICAgICAgbWVyZ2VPYmplY3RzKFxuICAgICAgICAgICAgZ2V0T2JqZWN0RGVlcENvcHkoRklFTERfUFJPUEVSVElFU1tmaWVsZC50eXBlXSksXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIG1hc2s6IG5ldyBBcnJheShmaWVsZD8ucHJvcGVydGllcz8ub3RwTGVuZ3RoID8/IDQpXG4gICAgICAgICAgICAgICAgLmZpbGwoXCIjXCIpXG4gICAgICAgICAgICAgICAgLmpvaW4oXCIgXCIpXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZmllbGQucHJvcGVydGllc1xuICAgICAgICAgIClcbiAgICAgICAgKTtcblxuICAgICAgICByZXR1cm4gZmllbGQ7XG4gICAgICB9O1xuICAgICAgY29uc3QgZm9ybWF0RmllbGRUeXBlQWFkaGFhck51bWJlciA9IChmaWVsZDogYW55KTogYW55ID0+IHtcbiAgICAgICAgZmllbGQgPSBzZXRGaWVsZEtleUhpZGRlbihmaWVsZCk7XG4gICAgICAgIGZpZWxkID0gc2V0RmllbGRBc0Zvcm1FbGVtZW50KGZpZWxkLCB0cnVlKTtcbiAgICAgICAgZmllbGQgPSB1cGRhdGVGb3JtRmllbGRQcm9wZXJ0aWVzKGZpZWxkKTtcblxuICAgICAgICByZXR1cm4gZmllbGQ7XG4gICAgICB9O1xuICAgICAgY29uc3QgZm9ybWF0RmllbGRUeXBlRmlsZSA9IChmaWVsZDogYW55KTogYW55ID0+IHtcbiAgICAgICAgZmllbGQgPSBzZXRGaWVsZEtleUhpZGRlbihmaWVsZCk7XG4gICAgICAgIGZpZWxkID0gc2V0RmllbGRBc0Zvcm1FbGVtZW50KGZpZWxkLCB0cnVlKTtcbiAgICAgICAgZmllbGQgPSB1cGRhdGVGb3JtRmllbGRQcm9wZXJ0aWVzKGZpZWxkKTtcblxuICAgICAgICByZXR1cm4gZmllbGQ7XG4gICAgICB9O1xuICAgICAgY29uc3QgZm9ybWF0RmllbGRUeXBlQ2FwdHVyZSA9IChmaWVsZDogYW55KTogYW55ID0+IHtcbiAgICAgICAgZmllbGQgPSBzZXRGaWVsZEtleUhpZGRlbihmaWVsZCk7XG4gICAgICAgIGZpZWxkID0gc2V0RmllbGRBc0Zvcm1FbGVtZW50KGZpZWxkLCB0cnVlKTtcbiAgICAgICAgZmllbGQgPSB1cGRhdGVGb3JtRmllbGRQcm9wZXJ0aWVzKGZpZWxkKTtcblxuICAgICAgICByZXR1cm4gZmllbGQ7XG4gICAgICB9O1xuXG4gICAgICBzd2l0Y2ggKGZpZWxkLnR5cGUpIHtcbiAgICAgICAgY2FzZSBFRmllbGRUeXBlLkhUTUw6XG4gICAgICAgICAgZmllbGQgPSBmb3JtYXRGaWVsZFR5cGVIdG1sKGZpZWxkKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBFRmllbGRUeXBlLlRJVExFOlxuICAgICAgICAgIGZpZWxkID0gZm9ybWF0RmllbGRUeXBlVGl0bGUoZmllbGQpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIEVGaWVsZFR5cGUuQlVUVE9OOlxuICAgICAgICAgIGZpZWxkID0gZm9ybWF0RmllbGRUeXBlQnV0dG9uKGZpZWxkKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBFRmllbGRUeXBlLlRFWFQ6XG4gICAgICAgICAgZmllbGQgPSBmb3JtYXRGaWVsZFR5cGVUZXh0KGZpZWxkKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBFRmllbGRUeXBlLlBBU1NXT1JEOlxuICAgICAgICAgIGZpZWxkID0gZm9ybWF0RmllbGRUeXBlUGFzc3dvcmQoZmllbGQpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIEVGaWVsZFR5cGUuRU1BSUw6XG4gICAgICAgICAgZmllbGQgPSBmb3JtYXRGaWVsZFR5cGVFbWFpbChmaWVsZCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgRUZpZWxkVHlwZS5URVhUQVJFQTpcbiAgICAgICAgICBmaWVsZCA9IGZvcm1hdEZpZWxkVHlwZVRleHRhcmVhKGZpZWxkKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBFRmllbGRUeXBlLkNIRUNLQk9YOlxuICAgICAgICAgIGZpZWxkID0gZm9ybWF0RmllbGRUeXBlQ2hlY2tib3goZmllbGQpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIEVGaWVsZFR5cGUuTlVNQkVSOlxuICAgICAgICAgIGZpZWxkID0gZm9ybWF0RmllbGRUeXBlTnVtYmVyKGZpZWxkKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBFRmllbGRUeXBlLlBSRVZJRVdfSU1BR0U6XG4gICAgICAgICAgZmllbGQgPSBzZXRGaWVsZEtleVZhbHVlKGZpZWxkLCBcInR5cGVcIiwgXCJpbWFnZVwiKTtcbiAgICAgICAgICBmaWVsZCA9IGZvcm1hdEZpZWxkVHlwZUltYWdlKGZpZWxkKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBFRmllbGRUeXBlLklNQUdFOlxuICAgICAgICAgIGZpZWxkID0gZm9ybWF0RmllbGRUeXBlSW1hZ2UoZmllbGQpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIEVGaWVsZFR5cGUuREFURTpcbiAgICAgICAgICBmaWVsZCA9IGZvcm1hdEZpZWxkVHlwZURhdGUoZmllbGQpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIEVGaWVsZFR5cGUuUEhPTkU6XG4gICAgICAgICAgZmllbGQgPSBmb3JtYXRGaWVsZFR5cGVQaG9uZShmaWVsZCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgRUZpZWxkVHlwZS5SQURJTzpcbiAgICAgICAgICBmaWVsZCA9IGZvcm1hdEZpZWxkVHlwZVJhZGlvKGZpZWxkKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBFRmllbGRUeXBlLlNMSURFUjpcbiAgICAgICAgICBmaWVsZCA9IGZvcm1hdEZpZWxkVHlwZVNsaWRlcihmaWVsZCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgXCJzZWFyY2gtdGV4dFwiOlxuICAgICAgICAgIGZpZWxkID0gc2V0RmllbGRLZXlWYWx1ZShmaWVsZCwgXCJ0eXBlXCIsIFwic2VsZWN0XCIpO1xuICAgICAgICAgIGZpZWxkID0gZm9ybWF0RmllbGRUeXBlU2VsZWN0KGZpZWxkKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBFRmllbGRUeXBlLkRST1BET1dOX1dJVEhfU0VBUkNIOlxuICAgICAgICAgIGZpZWxkID0gc2V0RmllbGRLZXlWYWx1ZShmaWVsZCwgXCJ0eXBlXCIsIFwic2VsZWN0XCIpO1xuICAgICAgICAgIGZpZWxkID0gZm9ybWF0RmllbGRUeXBlU2VsZWN0KGZpZWxkKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBFRmllbGRUeXBlLlNFTEVDVDpcbiAgICAgICAgICBmaWVsZCA9IGZvcm1hdEZpZWxkVHlwZVNlbGVjdChmaWVsZCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgRUZpZWxkVHlwZS5BUElfQ0FMTDpcbiAgICAgICAgICBmaWVsZCA9IHNldEZpZWxkS2V5VmFsdWUoZmllbGQsIFwidHlwZVwiLCBcImFwaVwiKTtcbiAgICAgICAgICBmaWVsZCA9IGZvcm1hdEZpZWxkVHlwZUFwaShmaWVsZCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgRUZpZWxkVHlwZS5BUEk6XG4gICAgICAgICAgZmllbGQgPSBmb3JtYXRGaWVsZFR5cGVBcGkoZmllbGQpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIEVGaWVsZFR5cGUuT1RQOlxuICAgICAgICAgIGZpZWxkID0gZm9ybWF0RmllbGRUeXBlT3RwKGZpZWxkKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBFRmllbGRUeXBlLkFBREhBQVJfTlVNQkVSOlxuICAgICAgICAgIGZpZWxkID0gZm9ybWF0RmllbGRUeXBlQWFkaGFhck51bWJlcihmaWVsZCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgRUZpZWxkVHlwZS5GSUxFOlxuICAgICAgICAgIGZpZWxkID0gZm9ybWF0RmllbGRUeXBlRmlsZShmaWVsZCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgRUZpZWxkVHlwZS5DQVBUVVJFOlxuICAgICAgICAgIGZpZWxkID0gZm9ybWF0RmllbGRUeXBlQ2FwdHVyZShmaWVsZCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgRUZpZWxkVHlwZS5TVEFSX1JBVElORzpcbiAgICAgICAgICBmaWVsZCA9IGZvcm1hdEZpZWxkVHlwZVN0YXJSYXRpbmcoZmllbGQpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gZmllbGQ7XG4gICAgfTtcblxuICAgIGNvbnN0IHVwZGF0ZUZpZWxkVmFsaWRhdG9ycyA9IChmaWVsZDogYW55KTogYW55ID0+IHtcbiAgICAgIGlmIChmaWVsZC5pc0Zvcm1FbGVtZW50KSB7XG4gICAgICAgIGNvbnN0IHZhbGlkYXRvcnMgPSBjaGVja09iamVjdEtleUV4aXN0cyhmaWVsZCwgXCJ2YWxpZGF0b3JzXCIpXG4gICAgICAgICAgPyBmaWVsZC52YWxpZGF0b3JzXG4gICAgICAgICAgOiB7fTtcblxuICAgICAgICBmaWVsZCA9IHNldE1pc3NpbmdGaWVsZEtleVZhbHVlKGZpZWxkLCBcInZhbGlkYXRvcnNcIiwge30pO1xuXG4gICAgICAgIGZpZWxkID0gc2V0RmllbGRLZXlWYWx1ZShmaWVsZCwgXCJ2YWxpZGF0b3JzXCIsIHtcbiAgICAgICAgICAuLi5maWVsZFtcInZhbGlkYXRvcnNcIl0sXG4gICAgICAgICAgbWluOiBjaGVja09iamVjdEtleUV4aXN0cyh2YWxpZGF0b3JzLCBcIm1pblwiKVxuICAgICAgICAgICAgPyBpc05vdEVtcHR5VmFsdWUodmFsaWRhdG9ycy5taW4pXG4gICAgICAgICAgICAgID8gTnVtYmVyKHZhbGlkYXRvcnMubWluKVxuICAgICAgICAgICAgICA6IG51bGxcbiAgICAgICAgICAgIDogY2hlY2tPYmplY3RLZXlFeGlzdHMoZmllbGQsIFwibWluXCIpXG4gICAgICAgICAgICA/IE51bWJlcihmaWVsZC5taW4pXG4gICAgICAgICAgICA6IG51bGwsXG4gICAgICAgICAgbWF4OiBjaGVja09iamVjdEtleUV4aXN0cyh2YWxpZGF0b3JzLCBcIm1heFwiKVxuICAgICAgICAgICAgPyBpc05vdEVtcHR5VmFsdWUodmFsaWRhdG9ycy5tYXgpXG4gICAgICAgICAgICAgID8gTnVtYmVyKHZhbGlkYXRvcnMubWF4KVxuICAgICAgICAgICAgICA6IG51bGxcbiAgICAgICAgICAgIDogY2hlY2tPYmplY3RLZXlFeGlzdHMoZmllbGQsIFwibWF4XCIpXG4gICAgICAgICAgICA/IE51bWJlcihmaWVsZC5tYXgpXG4gICAgICAgICAgICA6IG51bGwsXG4gICAgICAgICAgcmVxdWlyZWQ6IGNoZWNrT2JqZWN0S2V5RXhpc3RzKHZhbGlkYXRvcnMsIFwicmVxdWlyZWRcIilcbiAgICAgICAgICAgID8gQm9vbGVhbih2YWxpZGF0b3JzLnJlcXVpcmVkKVxuICAgICAgICAgICAgOiBjaGVja09iamVjdEtleUV4aXN0cyhmaWVsZCwgXCJyZXF1aXJlZFwiKVxuICAgICAgICAgICAgPyBCb29sZWFuKGZpZWxkLnJlcXVpcmVkKVxuICAgICAgICAgICAgOiBmYWxzZSxcbiAgICAgICAgICBtaW5MZW5ndGg6IGNoZWNrT2JqZWN0S2V5RXhpc3RzKHZhbGlkYXRvcnMsIFwibWluTGVuZ3RoXCIpXG4gICAgICAgICAgICA/IGlzTm90RW1wdHlWYWx1ZSh2YWxpZGF0b3JzLm1pbkxlbmd0aClcbiAgICAgICAgICAgICAgPyBOdW1iZXIodmFsaWRhdG9ycy5taW5MZW5ndGgpXG4gICAgICAgICAgICAgIDogbnVsbFxuICAgICAgICAgICAgOiBjaGVja09iamVjdEtleUV4aXN0cyhmaWVsZCwgXCJtaW5MZW5ndGhcIilcbiAgICAgICAgICAgID8gTnVtYmVyKGZpZWxkLm1pbkxlbmd0aClcbiAgICAgICAgICAgIDogbnVsbCxcbiAgICAgICAgICBtYXhMZW5ndGg6IGNoZWNrT2JqZWN0S2V5RXhpc3RzKHZhbGlkYXRvcnMsIFwibWF4TGVuZ3RoXCIpXG4gICAgICAgICAgICA/IGlzTm90RW1wdHlWYWx1ZSh2YWxpZGF0b3JzLm1heExlbmd0aClcbiAgICAgICAgICAgICAgPyBOdW1iZXIodmFsaWRhdG9ycy5tYXhMZW5ndGgpXG4gICAgICAgICAgICAgIDogbnVsbFxuICAgICAgICAgICAgOiBjaGVja09iamVjdEtleUV4aXN0cyhmaWVsZCwgXCJsZW5ndGhcIilcbiAgICAgICAgICAgID8gTnVtYmVyKGZpZWxkLmxlbmd0aClcbiAgICAgICAgICAgIDogY2hlY2tPYmplY3RLZXlFeGlzdHMoZmllbGQsIFwibWF4TGVuZ3RoXCIpXG4gICAgICAgICAgICA/IE51bWJlcihmaWVsZC5tYXhMZW5ndGgpXG4gICAgICAgICAgICA6IG51bGwsXG4gICAgICAgICAgcGF0dGVybjogY2hlY2tPYmplY3RLZXlFeGlzdHModmFsaWRhdG9ycywgXCJwYXR0ZXJuXCIpXG4gICAgICAgICAgICA/IGlzTm90RW1wdHlWYWx1ZSh2YWxpZGF0b3JzLnBhdHRlcm4pXG4gICAgICAgICAgICAgID8gdmFsaWRhdG9ycy5wYXR0ZXJuXG4gICAgICAgICAgICAgIDogdW5kZWZpbmVkXG4gICAgICAgICAgICA6IGNoZWNrT2JqZWN0S2V5RXhpc3RzKGZpZWxkLCBcInBhdHRlcm5cIilcbiAgICAgICAgICAgID8geyBrZXk6IFwiQ1VTVE9NXCIsIHBhdHRlcm46IFN0cmluZyhmaWVsZC5wYXR0ZXJuKSB9XG4gICAgICAgICAgICA6IGNoZWNrT2JqZWN0S2V5RXhpc3RzKGZpZWxkLCBcInJlZ2V4XCIpXG4gICAgICAgICAgICA/IHsga2V5OiBcIkNVU1RPTVwiLCBwYXR0ZXJuOiBTdHJpbmcoZmllbGQucmVnZXgpIH1cbiAgICAgICAgICAgIDogdW5kZWZpbmVkXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGRlbGV0ZSBmaWVsZC5taW47XG4gICAgICAgIGRlbGV0ZSBmaWVsZC5tYXg7XG4gICAgICAgIGRlbGV0ZSBmaWVsZC5yZXF1aXJlZDtcbiAgICAgICAgZGVsZXRlIGZpZWxkLm1pbkxlbmd0aDtcbiAgICAgICAgZGVsZXRlIGZpZWxkLmxlbmd0aDtcbiAgICAgICAgZGVsZXRlIGZpZWxkLm1heExlbmd0aDtcbiAgICAgICAgZGVsZXRlIGZpZWxkLnBhdHRlcm47XG4gICAgICAgIGRlbGV0ZSBmaWVsZC5yZWdleDtcblxuICAgICAgICBzd2l0Y2ggKGZpZWxkLnR5cGUpIHtcbiAgICAgICAgICBjYXNlIEVGaWVsZFR5cGUuVEVYVDpcbiAgICAgICAgICAgIGRlbGV0ZSBmaWVsZC52YWxpZGF0b3JzLm1pbjtcbiAgICAgICAgICAgIGRlbGV0ZSBmaWVsZC52YWxpZGF0b3JzLm1heDtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgRUZpZWxkVHlwZS5DSEVDS0JPWDpcbiAgICAgICAgICAgIGRlbGV0ZSBmaWVsZC52YWxpZGF0b3JzLm1pbjtcbiAgICAgICAgICAgIGRlbGV0ZSBmaWVsZC52YWxpZGF0b3JzLm1heDtcbiAgICAgICAgICBjYXNlIEVGaWVsZFR5cGUuUFJFVklFV19JTUFHRTpcbiAgICAgICAgICAgIGRlbGV0ZSBmaWVsZC52YWxpZGF0b3JzLm1pbjtcbiAgICAgICAgICAgIGRlbGV0ZSBmaWVsZC52YWxpZGF0b3JzLm1heDtcbiAgICAgICAgICAgIGRlbGV0ZSBmaWVsZC52YWxpZGF0b3JzLm1pbkxlbmd0aDtcbiAgICAgICAgICAgIGRlbGV0ZSBmaWVsZC52YWxpZGF0b3JzLm1heExlbmd0aDtcbiAgICAgICAgICBjYXNlIEVGaWVsZFR5cGUuRklMRTpcbiAgICAgICAgICAgIGRlbGV0ZSBmaWVsZC52YWxpZGF0b3JzLm1pbjtcbiAgICAgICAgICAgIGRlbGV0ZSBmaWVsZC52YWxpZGF0b3JzLm1heDtcbiAgICAgICAgICAgIGRlbGV0ZSBmaWVsZC52YWxpZGF0b3JzLm1pbkxlbmd0aDtcbiAgICAgICAgICAgIGRlbGV0ZSBmaWVsZC52YWxpZGF0b3JzLm1heExlbmd0aDtcbiAgICAgICAgICAgIGRlbGV0ZSBmaWVsZC52YWxpZGF0b3JzLnBhdHRlcm47XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIEVGaWVsZFR5cGUuQ0FQVFVSRTpcbiAgICAgICAgICAgIGRlbGV0ZSBmaWVsZC52YWxpZGF0b3JzLm1pbjtcbiAgICAgICAgICAgIGRlbGV0ZSBmaWVsZC52YWxpZGF0b3JzLm1heDtcbiAgICAgICAgICAgIGRlbGV0ZSBmaWVsZC52YWxpZGF0b3JzLm1pbkxlbmd0aDtcbiAgICAgICAgICAgIGRlbGV0ZSBmaWVsZC52YWxpZGF0b3JzLm1heExlbmd0aDtcbiAgICAgICAgICAgIGRlbGV0ZSBmaWVsZC52YWxpZGF0b3JzLnBhdHRlcm47XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaXNFbXB0eVZhbHVlKGZpZWxkLnZhbGlkYXRvcnM/Lm1pbikpIHtcbiAgICAgICAgICBkZWxldGUgZmllbGQudmFsaWRhdG9ycy5taW47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlzRW1wdHlWYWx1ZShmaWVsZC52YWxpZGF0b3JzPy5tYXgpKSB7XG4gICAgICAgICAgZGVsZXRlIGZpZWxkLnZhbGlkYXRvcnMubWluO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpc0VtcHR5VmFsdWUoZmllbGQudmFsaWRhdG9ycz8ubWluTGVuZ3RoKSkge1xuICAgICAgICAgIGRlbGV0ZSBmaWVsZC52YWxpZGF0b3JzLm1pbkxlbmd0aDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNFbXB0eVZhbHVlKGZpZWxkLnZhbGlkYXRvcnM/Lm1heExlbmd0aCkpIHtcbiAgICAgICAgICBkZWxldGUgZmllbGQudmFsaWRhdG9ycy5tYXhMZW5ndGg7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlzRW1wdHlWYWx1ZShmaWVsZC52YWxpZGF0b3JzPy5wYXR0ZXJuKSkge1xuICAgICAgICAgIGRlbGV0ZSBmaWVsZC52YWxpZGF0b3JzLnBhdHRlcm47XG4gICAgICAgIH1cblxuICAgICAgICBmaWVsZC5mb2N1cyA9IGZhbHNlO1xuICAgICAgICBmaWVsZC5pbnZhbGlkID0gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBmaWVsZDtcbiAgICB9O1xuXG4gICAgY29uc3QgdXBkYXRlRmllbGREZWZhdWx0VmFsdWUgPSAoZmllbGQ6IGFueSk6IGFueSA9PiB7XG4gICAgICBpZiAoZmllbGQuaXNGb3JtRWxlbWVudCkge1xuICAgICAgICBpZiAoY2hlY2tPYmplY3RLZXlFeGlzdHMoZmllbGQsIFwiZGVmYXVsdFZhbHVlXCIpKSB7XG4gICAgICAgICAgcmV0dXJuIGZpZWxkO1xuICAgICAgICB9IGVsc2UgaWYgKGNoZWNrT2JqZWN0UGF0aEV4aXN0cyhmaWVsZCwgXCJkZWZhdWx0LnZhbHVlLnNvdXJjZXNcIikpIHtcbiAgICAgICAgICByZXR1cm4gZmllbGQ7XG4gICAgICAgIH0gZWxzZSBpZiAoIWNoZWNrT2JqZWN0UGF0aEV4aXN0cyhmaWVsZCwgXCJkZWZhdWx0LnZhbHVlLnNvdXJjZXNcIikpIHtcbiAgICAgICAgICBjb25zdCBkZWZhdWx0VmFsdWUgPSB7XG4gICAgICAgICAgICBpc19mb3VuZDogZmFsc2UsXG4gICAgICAgICAgICB2YWx1ZTogXCJcIixcbiAgICAgICAgICAgIHNvdXJjZXM6IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGtleTogXCJPQkpFQ1RcIixcbiAgICAgICAgICAgICAgICBwcm9wczoge1xuICAgICAgICAgICAgICAgICAgb2JqZWN0OiB7XG4gICAgICAgICAgICAgICAgICAgIGtleTogXCJGT1JNX0RBVEFcIixcbiAgICAgICAgICAgICAgICAgICAgcGF0aDogYCQuJHtmaWVsZC5rZXl9YFxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgdmFsdWU6IFwiXCIsXG4gICAgICAgICAgICAgICAgdmFsaWRhdGlvbjoge1xuICAgICAgICAgICAgICAgICAgaXNfdmFsaWQ6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgdHJpZ2dlcnM6IFtcIk9OX0lOSVRcIl0sXG4gICAgICAgICAgICAgICAgICBydWxlczogW10sXG4gICAgICAgICAgICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICBpZDogXCIxXCIsXG4gICAgICAgICAgICAgICAgICAgICAga2V5OiBcIlNFVF9GSUVMRF9ERUZBVUxUX1ZBTFVFXCIsXG4gICAgICAgICAgICAgICAgICAgICAgY29uZGl0aW9uOiBcIjFcIixcbiAgICAgICAgICAgICAgICAgICAgICBwcm9wczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiBcIk9CSkVDVFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYmplY3Q6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiBcIkZPUk1fREFUQVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoOiBgJC4ke2ZpZWxkLmtleX1gXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdXG4gICAgICAgICAgfTtcblxuICAgICAgICAgIGZpZWxkID0gc2V0VmFsdWVUb09iamVjdFBhdGgoZmllbGQsIFwiZGVmYXVsdC52YWx1ZVwiLCBkZWZhdWx0VmFsdWUpO1xuICAgICAgICAgIHJldHVybiBmaWVsZDtcbiAgICAgICAgfVxuXG4gICAgICAgIGRlbGV0ZSBmaWVsZFtcImRlZmF1bHRWYWxcIl07XG4gICAgICAgIGRlbGV0ZSBmaWVsZFtcImRlZmF1bHRWYWx1ZVwiXTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGZpZWxkO1xuICAgIH07XG5cbiAgICBjb25zdCB1cGRhdGVGaWVsZERpc2FiaWxpdHkgPSAoZmllbGQ6IGFueSk6IGFueSA9PiB7XG4gICAgICBmaWVsZCA9IHNldE1pc3NpbmdLZXlWYWx1ZShmaWVsZCwgXCJkaXNhYmxlZFwiLCBmYWxzZSk7XG5cbiAgICAgIHJldHVybiBmaWVsZDtcbiAgICB9O1xuXG4gICAgY29uc3QgdXBkYXRlRmllbGRNZXNzYWdlcyA9IChmaWVsZDogYW55KTogYW55ID0+IHtcbiAgICAgIGlmIChmaWVsZC5pc0Zvcm1FbGVtZW50KSB7XG4gICAgICAgIGZpZWxkID0gc2V0TWlzc2luZ0ZpZWxkS2V5VmFsdWUoZmllbGQsIFwibWVzc2FnZXNcIiwgW10pO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gZmllbGQ7XG4gICAgfTtcblxuICAgIGNvbnN0IHVwZGF0ZUZpZWxkUmVzZXRCdXR0b24gPSAoZmllbGQ6IGFueSk6IGFueSA9PiB7XG4gICAgICBpZiAoZmllbGQuaXNGb3JtRWxlbWVudCkge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgY2hlY2tPYmplY3RLZXlFeGlzdHMoZmllbGQsIFwiYWN0aW9uXCIpICYmXG4gICAgICAgICAgZmllbGQuYWN0aW9uID09PSBcInJlc2V0XCIgJiZcbiAgICAgICAgICBjaGVja09iamVjdEtleUV4aXN0cyhmaWVsZCwgXCJmaWVsZHNcIilcbiAgICAgICAgKSB7XG4gICAgICAgICAgZmllbGQgPSBzZXRGaWVsZEtleVZhbHVlKGZpZWxkLCBcInJlc2V0XCIsIHtcbiAgICAgICAgICAgIGZpZWxkczogZmllbGQuZmllbGRzXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGZpZWxkO1xuICAgIH07XG5cbiAgICBjb25zdCBzZXRGb3JtRmllbGRzID0gKGZvcm1Db25maWc6IGFueSwgZmllbGRzOiBhbnlbXSk6IGFueSA9PiB7XG4gICAgICBpZiAoY2hlY2tPYmplY3RLZXlFeGlzdHMoZm9ybUNvbmZpZywgXCJtdWx0aUZvcm1cIikpIHtcbiAgICAgICAgZm9ybUNvbmZpZy5tdWx0aUZvcm1bXCJmaWVsZHNcIl0gPSBmaWVsZHM7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBmb3JtQ29uZmlnW1wiZmllbGRzXCJdID0gZmllbGRzO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gZm9ybUNvbmZpZztcbiAgICB9O1xuXG4gICAgY29uc3Qgc2V0Rm9ybUZpZWxkR3JvdXBzID0gKGZvcm1Db25maWc6IGFueSwgZ3JvdXBzOiBhbnkpOiBhbnkgPT4ge1xuICAgICAgZm9ybUNvbmZpZ1tcImZpZWxkR3JvdXBzXCJdID0gZ3JvdXBzO1xuXG4gICAgICByZXR1cm4gZm9ybUNvbmZpZztcbiAgICB9O1xuXG4gICAgY29uc3QgdXBkYXRlRm9ybUZpZWxkR3JvdXBzID0gKGZpZWxkR3JvdXBzOiBhbnksIGZpZWxkOiBhbnkpOiBhbnkgPT4ge1xuICAgICAgaWYgKGNoZWNrT2JqZWN0S2V5RXhpc3RzKGZpZWxkLCBcImdyb3VwS2V5XCIpKSB7XG4gICAgICAgIGlmIChjaGVja09iamVjdEtleUV4aXN0cyhmaWVsZEdyb3VwcywgZmllbGQuZ3JvdXBLZXkpKSB7XG4gICAgICAgICAgZmllbGRHcm91cHNbZmllbGQuZ3JvdXBLZXldLnB1c2goZmllbGQua2V5KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBmaWVsZEdyb3Vwc1tmaWVsZC5ncm91cEtleV0gPSBbZmllbGQua2V5XTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gZmllbGRHcm91cHM7XG4gICAgfTtcblxuICAgIGNvbnN0IHVwZGF0ZUZvcm1EaXNwbGF5TGFuZ3VhZ2UgPSAoXG4gICAgICBmb3JtQ29uZmlnOiBhbnksXG4gICAgICBsYW5ndWFnZTogc3RyaW5nXG4gICAgKTogYW55ID0+IHtcbiAgICAgIGlmIChjaGVja09iamVjdFBhdGhFeGlzdHMoZm9ybUNvbmZpZywgXCJwcm9wZXJ0aWVzLmhlYWRlci50aXRsZS5sYWJlbFwiKSkge1xuICAgICAgICBmb3JtQ29uZmlnLnByb3BlcnRpZXMuaGVhZGVyLnRpdGxlLmxhYmVsID0gdXBkYXRlRGlzcGxheUxhbmd1YWdlKFxuICAgICAgICAgIGZvcm1Db25maWcucHJvcGVydGllcy5oZWFkZXIudGl0bGUubGFiZWwsXG4gICAgICAgICAgbGFuZ3VhZ2VcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgaWYgKFxuICAgICAgICBjaGVja09iamVjdFBhdGhFeGlzdHMoXG4gICAgICAgICAgZm9ybUNvbmZpZyxcbiAgICAgICAgICBcInByb3BlcnRpZXMuZm9vdGVyLnZpZXdGb3Jtc0J1dHRvbi5sYWJlbFwiXG4gICAgICAgIClcbiAgICAgICkge1xuICAgICAgICBmb3JtQ29uZmlnLnByb3BlcnRpZXMuZm9vdGVyLnZpZXdGb3Jtc0J1dHRvbi5sYWJlbCA9XG4gICAgICAgICAgdXBkYXRlRGlzcGxheUxhbmd1YWdlKFxuICAgICAgICAgICAgZm9ybUNvbmZpZy5wcm9wZXJ0aWVzLmZvb3Rlci52aWV3Rm9ybXNCdXR0b24ubGFiZWwsXG4gICAgICAgICAgICBsYW5ndWFnZVxuICAgICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIGlmIChcbiAgICAgICAgY2hlY2tPYmplY3RQYXRoRXhpc3RzKGZvcm1Db25maWcsIFwicHJvcGVydGllcy5mb290ZXIuc2F2ZUJ1dHRvbi5sYWJlbFwiKVxuICAgICAgKSB7XG4gICAgICAgIGZvcm1Db25maWcucHJvcGVydGllcy5mb290ZXIuc2F2ZUJ1dHRvbi5sYWJlbCA9IHVwZGF0ZURpc3BsYXlMYW5ndWFnZShcbiAgICAgICAgICBmb3JtQ29uZmlnLnByb3BlcnRpZXMuZm9vdGVyLnNhdmVCdXR0b24ubGFiZWwsXG4gICAgICAgICAgbGFuZ3VhZ2VcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGZvcm1Db25maWc7XG4gICAgfTtcblxuICAgIGNvbnN0IHVwZGF0ZUZpZWxkRGlzcGxheUxhbmd1YWdlID0gKFxuICAgICAgZmllbGQ6IFRGaWVsZCxcbiAgICAgIGxhbmd1YWdlOiBzdHJpbmdcbiAgICApOiBhbnkgPT4ge1xuICAgICAgaWYgKGNoZWNrT2JqZWN0S2V5RXhpc3RzKGZpZWxkLCBcImxhYmVsXCIpKSB7XG4gICAgICAgIGZpZWxkLmxhYmVsID0gdXBkYXRlRGlzcGxheUxhbmd1YWdlKGZpZWxkLmxhYmVsLCBsYW5ndWFnZSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChjaGVja09iamVjdFBhdGhFeGlzdHMoZmllbGQsIFwicHJvcGVydGllcy5wbGFjZWhvbGRlclwiKSkge1xuICAgICAgICBmaWVsZC5wcm9wZXJ0aWVzW1wicGxhY2Vob2xkZXJcIl0gPSB1cGRhdGVEaXNwbGF5TGFuZ3VhZ2UoXG4gICAgICAgICAgZmllbGQucHJvcGVydGllc1tcInBsYWNlaG9sZGVyXCJdLFxuICAgICAgICAgIGxhbmd1YWdlXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHVwZGF0ZUFwaVN0YXR1cyA9IChmaWVsZEFwaVN0YXR1cykgPT4ge1xuICAgICAgICBmb3IgKGNvbnN0IHN0YXR1cyBpbiBmaWVsZEFwaVN0YXR1cykge1xuICAgICAgICAgIGZpZWxkQXBpU3RhdHVzW3N0YXR1c10gPSB1cGRhdGVEaXNwbGF5TGFuZ3VhZ2UoXG4gICAgICAgICAgICBmaWVsZEFwaVN0YXR1c1tzdGF0dXNdLFxuICAgICAgICAgICAgbGFuZ3VhZ2VcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmaWVsZEFwaVN0YXR1cztcbiAgICAgIH07XG5cbiAgICAgIGlmIChcbiAgICAgICAgZmllbGQudHlwZSA9PSBFRmllbGRUeXBlLkFQSV9DQUxMICYmXG4gICAgICAgIGNoZWNrT2JqZWN0UGF0aEV4aXN0cyhmaWVsZCwgXCJhcGkuc3RhdHVzXCIpXG4gICAgICApIHtcbiAgICAgICAgZmllbGRbXCJhcGlcIl1bXCJzdGF0dXNcIl1bXCJsYWJlbHNcIl0gPSB1cGRhdGVBcGlTdGF0dXMoXG4gICAgICAgICAgZmllbGRbXCJhcGlcIl1bXCJzdGF0dXNcIl1bXCJsYWJlbHNcIl1cbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGZpZWxkO1xuICAgIH07XG5cbiAgICBsZXQgZmllbGRzOiBhbnlbXSA9IGdldEZvcm1GaWVsZHMoZm9ybUNvbmZpZyk7XG5cbiAgICBsZXQgZmllbGRHcm91cHM6IGFueSA9IHt9O1xuXG4gICAgZm9yIChsZXQgZmllbGQgb2YgZmllbGRzKSB7XG4gICAgICBmaWVsZCA9IGZvcm1hdE9uRmllbGRUeXBlKGZpZWxkKTtcblxuICAgICAgZmllbGQgPSB1cGRhdGVGaWVsZERpc2FiaWxpdHkoZmllbGQpO1xuXG4gICAgICBmaWVsZEdyb3VwcyA9IHVwZGF0ZUZvcm1GaWVsZEdyb3VwcyhmaWVsZEdyb3VwcywgZmllbGQpO1xuXG4gICAgICBmaWVsZCA9IHVwZGF0ZUZpZWxkRGVmYXVsdFZhbHVlKGZpZWxkKTtcblxuICAgICAgZmllbGQgPSB1cGRhdGVGaWVsZFZhbGlkYXRvcnMoZmllbGQpO1xuXG4gICAgICBmaWVsZCA9IHVwZGF0ZUZpZWxkUmVzZXRCdXR0b24oZmllbGQpO1xuXG4gICAgICBmaWVsZCA9IHVwZGF0ZUZpZWxkRGlzcGxheUxhbmd1YWdlKGZpZWxkLCBnZXRMYW5ndWFnZSgpKTtcblxuICAgICAgZmllbGQgPSB1cGRhdGVGaWVsZE1lc3NhZ2VzKGZpZWxkKTtcbiAgICB9XG5cbiAgICBmb3JtQ29uZmlnID0gdXBkYXRlRm9ybURpc3BsYXlMYW5ndWFnZShmb3JtQ29uZmlnLCBnZXRMYW5ndWFnZSgpKTtcblxuICAgIGZvcm1Db25maWcgPSBzZXRGb3JtRmllbGRHcm91cHMoZm9ybUNvbmZpZywgZmllbGRHcm91cHMpO1xuXG4gICAgZm9ybUNvbmZpZyA9IHNldEZvcm1GaWVsZHMoZm9ybUNvbmZpZywgZmllbGRzKTtcblxuICAgIHJldHVybiBmb3JtQ29uZmlnO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,5 @@
1
+ export var ETypeLogs;
2
+ (function (ETypeLogs) {
3
+ ETypeLogs["API"] = "API";
4
+ })(ETypeLogs || (ETypeLogs = {}));
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJvbS12aWV3LmxvZ3MuZGVmaW5pdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2t3aWtpZC1mb3Jtcy9zcmMvbGliL3JlbmRlcmVyL2Zvcm0tdmlldy9kZWZpbml0aW9ucy9mcm9tLXZpZXcubG9ncy5kZWZpbml0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBTixJQUFZLFNBRVg7QUFGRCxXQUFZLFNBQVM7SUFDbkIsd0JBQVcsQ0FBQTtBQUNiLENBQUMsRUFGVyxTQUFTLEtBQVQsU0FBUyxRQUVwQiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBlbnVtIEVUeXBlTG9ncyB7XG4gIEFQSSA9IFwiQVBJXCJcbn1cbiJdfQ==