kwikid-forms 0.5.3 → 0.5.4
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.
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { __decorate } from "tslib";
|
|
2
|
-
import { checkObjectKeyExists, checkObjectPathExists, isEmptyValue, isNotEmptyValue, logMethod, mergeObjects, setMissingKeyValue, setValueToObjectPath } from "kwikid-toolkit";
|
|
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
5
|
import { getFormFields, getMaxDate, getMinDate, setFieldAsFormElement, setFieldKeyHidden, setFieldKeyValue, setMissingFieldKeyValue } from "./config-converter.helper";
|
|
@@ -40,7 +40,7 @@ export class Converter {
|
|
|
40
40
|
}
|
|
41
41
|
};
|
|
42
42
|
if (checkObjectKeyExists(formConfig, "properties")) {
|
|
43
|
-
formConfig.properties = mergeObjects(formViewProperties, formConfig.properties);
|
|
43
|
+
formConfig.properties = getObjectDeepCopy(mergeObjects(formViewProperties, formConfig.properties));
|
|
44
44
|
}
|
|
45
45
|
else {
|
|
46
46
|
formConfig.properties = formViewProperties;
|
|
@@ -62,7 +62,7 @@ export class Converter {
|
|
|
62
62
|
const formatFieldTypeText = (field) => {
|
|
63
63
|
field = setFieldKeyHidden(field);
|
|
64
64
|
field = setFieldAsFormElement(field, true);
|
|
65
|
-
field.properties = mergeObjects(FIELD_PROPERTIES[field.type], field.properties);
|
|
65
|
+
field.properties = getObjectDeepCopy(mergeObjects(FIELD_PROPERTIES[field.type], field.properties));
|
|
66
66
|
return field;
|
|
67
67
|
};
|
|
68
68
|
const formatFieldTypeTextarea = (field) => {
|
|
@@ -86,7 +86,7 @@ export class Converter {
|
|
|
86
86
|
field = setFieldKeyValue(field, "type", "phone");
|
|
87
87
|
}
|
|
88
88
|
if (field.type === "phone" || field.type === "number") {
|
|
89
|
-
field.properties = mergeObjects(FIELD_PROPERTIES[field.type], field.properties);
|
|
89
|
+
field.properties = getObjectDeepCopy(mergeObjects(FIELD_PROPERTIES[field.type], field.properties));
|
|
90
90
|
}
|
|
91
91
|
}
|
|
92
92
|
return field;
|
|
@@ -94,16 +94,16 @@ export class Converter {
|
|
|
94
94
|
const formatFieldTypeImage = (field) => {
|
|
95
95
|
field = setFieldKeyHidden(field);
|
|
96
96
|
field = setFieldAsFormElement(field, true);
|
|
97
|
-
field.properties = mergeObjects(FIELD_PROPERTIES[field.type], field.properties);
|
|
97
|
+
field.properties = getObjectDeepCopy(mergeObjects(FIELD_PROPERTIES[field.type], field.properties));
|
|
98
98
|
return field;
|
|
99
99
|
};
|
|
100
100
|
const formatFieldTypeDate = (field) => {
|
|
101
101
|
field = setFieldKeyHidden(field);
|
|
102
102
|
field = setFieldAsFormElement(field, true);
|
|
103
|
-
field.properties = mergeObjects(FIELD_PROPERTIES[field.type], {
|
|
103
|
+
field.properties = getObjectDeepCopy(mergeObjects(FIELD_PROPERTIES[field.type], {
|
|
104
104
|
max: getMaxDate(field),
|
|
105
105
|
min: getMinDate(field)
|
|
106
|
-
}, field.properties);
|
|
106
|
+
}, field.properties));
|
|
107
107
|
return field;
|
|
108
108
|
};
|
|
109
109
|
const formatFieldTypePhone = (field) => {
|
|
@@ -114,7 +114,7 @@ export class Converter {
|
|
|
114
114
|
const formatFieldTypeRadio = (field) => {
|
|
115
115
|
field = setFieldKeyHidden(field);
|
|
116
116
|
field = setFieldAsFormElement(field, true);
|
|
117
|
-
field.properties = mergeObjects(FIELD_PROPERTIES[field.type], field.properties);
|
|
117
|
+
field.properties = getObjectDeepCopy(mergeObjects(FIELD_PROPERTIES[field.type], field.properties));
|
|
118
118
|
field.options = field.options.map((x) => {
|
|
119
119
|
if (typeof x === "string" || typeof x === "number") {
|
|
120
120
|
return { label: x, disabled: false, description: "" };
|
|
@@ -139,7 +139,7 @@ export class Converter {
|
|
|
139
139
|
const formatFieldTypeSlider = (field) => {
|
|
140
140
|
field = setFieldKeyHidden(field);
|
|
141
141
|
field = setFieldAsFormElement(field, true);
|
|
142
|
-
field.properties = mergeObjects(FIELD_PROPERTIES[field.type], field.properties);
|
|
142
|
+
field.properties = getObjectDeepCopy(mergeObjects(FIELD_PROPERTIES[field.type], field.properties));
|
|
143
143
|
return field;
|
|
144
144
|
};
|
|
145
145
|
const formatFieldTypeSelect = (field) => {
|
|
@@ -149,7 +149,7 @@ export class Converter {
|
|
|
149
149
|
};
|
|
150
150
|
const formatFieldTypeApi = (field) => {
|
|
151
151
|
field = setFieldAsFormElement(field, true);
|
|
152
|
-
field.properties = mergeObjects(FIELD_PROPERTIES[field.type], field.properties);
|
|
152
|
+
field.properties = getObjectDeepCopy(mergeObjects(FIELD_PROPERTIES[field.type], field.properties));
|
|
153
153
|
if (!checkObjectKeyExists(field, "showLoader")) {
|
|
154
154
|
field = setFieldKeyValue(field, "showLoader", false);
|
|
155
155
|
}
|
|
@@ -168,7 +168,7 @@ export class Converter {
|
|
|
168
168
|
}
|
|
169
169
|
}
|
|
170
170
|
};
|
|
171
|
-
field.api = mergeObjects(fieldApiDefaults, fieldApiDefaults);
|
|
171
|
+
field.api = getObjectDeepCopy(mergeObjects(fieldApiDefaults, fieldApiDefaults));
|
|
172
172
|
}
|
|
173
173
|
if (!checkObjectKeyExists(field.api, "request") &&
|
|
174
174
|
!checkObjectKeyExists(field.api, "entrypoint")) {
|
|
@@ -187,7 +187,7 @@ export class Converter {
|
|
|
187
187
|
}
|
|
188
188
|
]
|
|
189
189
|
};
|
|
190
|
-
field.entrypoint = mergeObjects(apiEntrypoint, field.api);
|
|
190
|
+
field.entrypoint = getObjectDeepCopy(mergeObjects(apiEntrypoint, field.api));
|
|
191
191
|
}
|
|
192
192
|
return field;
|
|
193
193
|
};
|
|
@@ -195,11 +195,11 @@ export class Converter {
|
|
|
195
195
|
var _a, _b;
|
|
196
196
|
field = setFieldKeyHidden(field);
|
|
197
197
|
field = setFieldAsFormElement(field, true);
|
|
198
|
-
field.properties = mergeObjects(FIELD_PROPERTIES[field.type], {
|
|
198
|
+
field.properties = getObjectDeepCopy(mergeObjects(FIELD_PROPERTIES[field.type], {
|
|
199
199
|
mask: new Array((_b = (_a = field === null || field === void 0 ? void 0 : field.properties) === null || _a === void 0 ? void 0 : _a.otpLength) !== null && _b !== void 0 ? _b : 4)
|
|
200
200
|
.fill("#")
|
|
201
201
|
.join(" ")
|
|
202
|
-
}, field.properties);
|
|
202
|
+
}, field.properties));
|
|
203
203
|
return field;
|
|
204
204
|
};
|
|
205
205
|
const formatFieldTypeAadhaarNumber = (field) => {
|
|
@@ -210,7 +210,7 @@ export class Converter {
|
|
|
210
210
|
const formatFieldTypeFile = (field) => {
|
|
211
211
|
field = setFieldKeyHidden(field);
|
|
212
212
|
field = setFieldAsFormElement(field, true);
|
|
213
|
-
field.properties = mergeObjects(FIELD_PROPERTIES[field.type], field.properties);
|
|
213
|
+
field.properties = getObjectDeepCopy(mergeObjects(FIELD_PROPERTIES[field.type], field.properties));
|
|
214
214
|
return field;
|
|
215
215
|
};
|
|
216
216
|
switch (field.type) {
|
|
@@ -511,4 +511,4 @@ __decorate([
|
|
|
511
511
|
__decorate([
|
|
512
512
|
logMethod
|
|
513
513
|
], Converter.prototype, "convertFormConfig", null);
|
|
514
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLWNvbnZlcnRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2t3aWtpZC1mb3Jtcy9zcmMvbGliL3JlbmRlcmVyL2NvbmZpZy1jb252ZXJ0ZXIvY29uZmlnLWNvbnZlcnRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUNMLG9CQUFvQixFQUNwQixxQkFBcUIsRUFDckIsWUFBWSxFQUNaLGVBQWUsRUFDZixTQUFTLEVBQ1QsWUFBWSxFQUNaLGtCQUFrQixFQUNsQixvQkFBb0IsRUFDckIsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0RBQXNELENBQUM7QUFDbEYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDaEUsT0FBTyxFQUNMLGFBQWEsRUFDYixVQUFVLEVBQ1YsVUFBVSxFQUNWLHFCQUFxQixFQUNyQixpQkFBaUIsRUFDakIsZ0JBQWdCLEVBQ2hCLHVCQUF1QixFQUN4QixNQUFNLDJCQUEyQixDQUFDO0FBRW5DLE1BQU0sT0FBTyxTQUFTO0lBRXBCLDZCQUE2QixDQUFDLFVBQWUsRUFBRSxJQUFTO1FBQ3RELElBQUksb0JBQW9CLENBQUMsSUFBSSxFQUFFLGlCQUFpQixDQUFDLEVBQUU7WUFDakQsVUFBVSxHQUFHLG9CQUFvQixDQUMvQixVQUFVLEVBQ1YsaUJBQWlCLEVBQ2pCLElBQUksQ0FBQyxlQUFlLENBQ3JCLENBQUM7U0FDSDtRQUVELE9BQU8sVUFBVSxDQUFDO0lBQ3BCLENBQUM7SUFHRCwwQkFBMEIsQ0FBQyxVQUFlOztRQUN4QyxNQUFNLGtCQUFrQixHQUFHO1lBQ3pCLE1BQU0sRUFBRTtnQkFDTixVQUFVLEVBQUU7b0JBQ1YsSUFBSSxFQUFFLFFBQVE7b0JBQ2Qsa0JBQWtCLEVBQUUsS0FBSztvQkFDekIsTUFBTSxFQUFFLElBQUk7aUJBQ2I7Z0JBQ0QsS0FBSyxFQUFF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QUMsQ0FBQztZQUVyQyxLQUFLLEdBQUcsc0JBQXNCLENBQUMsS0FBSyxDQUFDLENBQUM7WUFFdEMsS0FBSyxHQUFHLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQ3BDO1FBRUQsVUFBVSxHQUFHLGtCQUFrQixDQUFDLFVBQVUsRUFBRSxXQUFXLENBQUMsQ0FBQztRQUV6RCxVQUFVLEdBQUcsYUFBYSxDQUFDLFVBQVUsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUUvQyxPQUFPLFVBQVUsQ0FBQztJQUNwQixDQUFDO0NBQ0Y7QUFobUJDO0lBREMsU0FBUzs4REFXVDtBQUdEO0lBREMsU0FBUzsyREF3Q1Q7QUFHRDtJQURDLFNBQVM7a0RBeWlCVCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIGNoZWNrT2JqZWN0S2V5RXhpc3RzLFxuICBjaGVja09iamVjdFBhdGhFeGlzdHMsXG4gIGlzRW1wdHlWYWx1ZSxcbiAgaXNOb3RFbXB0eVZhbHVlLFxuICBsb2dNZXRob2QsXG4gIG1lcmdlT2JqZWN0cyxcbiAgc2V0TWlzc2luZ0tleVZhbHVlLFxuICBzZXRWYWx1ZVRvT2JqZWN0UGF0aFxufSBmcm9tIFwia3dpa2lkLXRvb2xraXRcIjtcbmltcG9ydCB7IEVGaWVsZFR5cGUgfSBmcm9tIFwiLi4vZm9ybS12aWV3L2RlZmluaXRpb25zL2Zvcm0tdmlldy5maWVsZHMuZGVmaW5pdGlvblwiO1xuaW1wb3J0IHsgRklFTERfUFJPUEVSVElFUyB9IGZyb20gXCIuL2NvbmZpZy1jb252ZXJ0ZXIuY29uc3RhbnRzXCI7XG5pbXBvcnQge1xuICBnZXRGb3JtRmllbGRzLFxuICBnZXRNYXhEYXRlLFxuICBnZXRNaW5EYXRlLFxuICBzZXRGaWVsZEFzRm9ybUVsZW1lbnQsXG4gIHNldEZpZWxkS2V5SGlkZGVuLFxuICBzZXRGaWVsZEtleVZhbHVlLFxuICBzZXRNaXNzaW5nRmllbGRLZXlWYWx1ZVxufSBmcm9tIFwiLi9jb25maWctY29udmVydGVyLmhlbHBlclwiO1xuXG5leHBvcnQgY2xhc3MgQ29udmVydGVyIHtcbiAgQGxvZ01ldGhvZFxuICB1cGRhdGVGb3JtQ29uZmlnTWlzY2VsbGFuZW91cyhmb3JtQ29uZmlnOiBhbnksIGFyZ3M6IGFueSk6IGFueSB7XG4gICAgaWYgKGNoZWNrT2JqZWN0S2V5RXhpc3RzKGFyZ3MsIFwiZm9ybXNMaXN0TGVuZ3RoXCIpKSB7XG4gICAgICBmb3JtQ29uZmlnID0gc2V0VmFsdWVUb09iamVjdFBhdGgoXG4gICAgICAgIGZvcm1Db25maWcsXG4gICAgICAgIFwiZm9ybXNMaXN0TGVuZ3RoXCIsXG4gICAgICAgIGFyZ3MuZm9ybXNMaXN0TGVuZ3RoXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiBmb3JtQ29uZmlnO1xuICB9XG5cbiAgQGxvZ01ldGhvZFxuICB1cGRhdGVGb3JtQ29uZmlnUHJvcGVydGllcyhmb3JtQ29uZmlnOiBhbnkpOiBhbnkge1xuICAgIGNvbnN0IGZvcm1WaWV3UHJvcGVydGllcyA9IHtcbiAgICAgIGhlYWRlcjoge1xuICAgICAgICBiYWNrQnV0dG9uOiB7XG4gICAgICAgICAgbW9kZTogXCJUQUJCRURcIixcbiAgICAgICAgICBieXBhc3NDb25maXJtYXRpb246IGZhbHNlLFxuICAgICAgICAgIGhpZGRlbjogdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICB0aXRsZToge1xuICAgICAgICAgIGhpZGRlbjogZmFsc2UsXG4gICAgICAgICAgbGFiZWw6IGZvcm1Db25maWc/LnRpdGxlID8/IFwiRm9ybVwiXG4gICAgICAgIH0sXG4gICAgICAgIHN0ZXBzOiB7XG4gICAgICAgICAgaGlkZGVuOiBmYWxzZVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgZm9vdGVyOiB7XG4gICAgICAgIHZpZXdGb3Jtc0J1dHRvbjoge1xuICAgICAgICAgIGJ5cGFzc0NvbmZpcm1hdGlvbjogZmFsc2UsXG4gICAgICAgICAgaGlkZGVuOiBmYWxzZSxcbiAgICAgICAgICBsYWJlbDogXCJWaWV3IEZvcm1zXCJcbiAgICAgICAgfSxcbiAgICAgICAgc2F2ZUJ1dHRvbjoge1xuICAgICAgICAgIGhpZGRlbjogZmFsc2UsXG4gICAgICAgICAgbGFiZWw6IFwiU2F2ZVwiXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuXG4gICAgaWYgKGNoZWNrT2JqZWN0S2V5RXhpc3RzKGZvcm1Db25maWcsIFwicHJvcGVydGllc1wiKSkge1xuICAgICAgZm9ybUNvbmZpZy5wcm9wZXJ0aWVzID0gbWVyZ2VPYmplY3RzKFxuICAgICAgICBmb3JtVmlld1Byb3BlcnRpZXMsXG4gICAgICAgIGZvcm1Db25maWcucHJvcGVydGllc1xuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZm9ybUNvbmZpZy5wcm9wZXJ0aWVzID0gZm9ybVZpZXdQcm9wZXJ0aWVzO1xuICAgIH1cblxuICAgIHJldHVybiBmb3JtQ29uZmlnO1xuICB9XG5cbiAgQGxvZ01ldGhvZFxuICBjb252ZXJ0Rm9ybUNvbmZpZyhmb3JtQ29uZmlnOiBhbnkpOiBhbnkge1xuICAgIGNvbnN0IGZvcm1hdE9uRmllbGRUeXBlID0gKGZpZWxkOiBhbnkpOiBhbnkgPT4ge1xuICAgICAgY29uc3QgZm9ybWF0RmllbGRUeXBlSHRtbCA9IChmaWVsZDogYW55KTogYW55ID0+IHtcbiAgICAgICAgZmllbGQgPSBzZXRGaWVsZEtleUhpZGRlbihmaWVsZCk7XG4gICAgICAgIGZpZWxkID0gc2V0RmllbGRBc0Zvcm1FbGVtZW50KGZpZWxkLCBmYWxzZSk7XG5cbiAgICAgICAgcmV0dXJuIGZpZWxkO1xuICAgICAgfTtcbiAgICAgIGNvbnN0IGZvcm1hdEZpZWxkVHlwZVRpdGxlID0gKGZpZWxkOiBhbnkpOiBhbnkgPT4ge1xuICAgICAgICBmaWVsZCA9IHNldEZpZWxkS2V5SGlkZGVuKGZpZWxkKTtcbiAgICAgICAgZmllbGQgPSBzZXRGaWVsZEFzRm9ybUVsZW1lbnQoZmllbGQsIGZhbHNlKTtcblxuICAgICAgICByZXR1cm4gZmllbGQ7XG4gICAgICB9O1xuICAgICAgY29uc3QgZm9ybWF0RmllbGRUeXBlVGV4dCA9IChmaWVsZDogYW55KTogYW55ID0+IHtcbiAgICAgICAgZmllbGQgPSBzZXRGaWVsZEtleUhpZGRlbihmaWVsZCk7XG4gICAgICAgIGZpZWxkID0gc2V0RmllbGRBc0Zvcm1FbGVtZW50KGZpZWxkLCB0cnVlKTtcblxuICAgICAgICBmaWVsZC5wcm9wZXJ0aWVzID0gbWVyZ2VPYmplY3RzKFxuICAgICAgICAgIEZJRUxEX1BST1BFUlRJRVNbZmllbGQudHlwZV0sXG4gICAgICAgICAgZmllbGQucHJvcGVydGllc1xuICAgICAgICApO1xuXG4gICAgICAgIHJldHVybiBmaWVsZDtcbiAgICAgIH07XG4gICAgICBjb25zdCBmb3JtYXRGaWVsZFR5cGVUZXh0YXJlYSA9IChmaWVsZDogYW55KTogYW55ID0+IHtcbiAgICAgICAgZmllbGQgPSBzZXRGaWVsZEtleUhpZGRlbihmaWVsZCk7XG4gICAgICAgIGZpZWxkID0gc2V0RmllbGRBc0Zvcm1FbGVtZW50KGZpZWxkLCB0cnVlKTtcbiAgICAgICAgcmV0dXJuIGZpZWxkO1xuICAgICAgfTtcbiAgICAgIGNvbnN0IGZvcm1hdEZpZWxkVHlwZUNoZWNrYm94ID0gKGZpZWxkOiBhbnkpOiBhbnkgPT4ge1xuICAgICAgICBmaWVsZCA9IHNldEZpZWxkS2V5SGlkZGVuKGZpZWxkKTtcbiAgICAgICAgZmllbGQgPSBzZXRGaWVsZEFzRm9ybUVsZW1lbnQoZmllbGQsIHRydWUpO1xuICAgICAgICByZXR1cm4gZmllbGQ7XG4gICAgICB9O1xuICAgICAgY29uc3QgZm9ybWF0RmllbGRUeXBlTnVtYmVyID0gKGZpZWxkOiBhbnkpOiBhbnkgPT4ge1xuICAgICAgICBmaWVsZCA9IHNldEZpZWxkS2V5SGlkZGVuKGZpZWxkKTtcbiAgICAgICAgZmllbGQgPSBzZXRGaWVsZEFzRm9ybUVsZW1lbnQoZmllbGQsIHRydWUpO1xuXG4gICAgICAgIGlmIChjaGVja09iamVjdEtleUV4aXN0cyhmaWVsZCwgXCJrZXlcIikpIHtcbiAgICAgICAgICBpZiAoZmllbGQua2V5ID09PSBcImFhZGhhYXJfbnVtYmVyXCIpIHtcbiAgICAgICAgICAgIGZpZWxkID0gc2V0RmllbGRLZXlWYWx1ZShmaWVsZCwgXCJ0eXBlXCIsIFwiYWFkaGFhcl9udW1iZXJcIik7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChmaWVsZC5rZXkgPT09IFwiY29udGFjdF9udW1iZXJcIikge1xuICAgICAgICAgICAgZmllbGQgPSBzZXRGaWVsZEtleVZhbHVlKGZpZWxkLCBcInR5cGVcIiwgXCJwaG9uZVwiKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoZmllbGQudHlwZSA9PT0gXCJwaG9uZVwiIHx8IGZpZWxkLnR5cGUgPT09IFwibnVtYmVyXCIpIHtcbiAgICAgICAgICAgIGZpZWxkLnByb3BlcnRpZXMgPSBtZXJnZU9iamVjdHMoXG4gICAgICAgICAgICAgIEZJRUxEX1BST1BFUlRJRVNbZmllbGQudHlwZV0sXG4gICAgICAgICAgICAgIGZpZWxkLnByb3BlcnRpZXNcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGZpZWxkO1xuICAgICAgfTtcbiAgICAgIGNvbnN0IGZvcm1hdEZpZWxkVHlwZUltYWdlID0gKGZpZWxkOiBhbnkpOiBhbnkgPT4ge1xuICAgICAgICBmaWVsZCA9IHNldEZpZWxkS2V5SGlkZGVuKGZpZWxkKTtcbiAgICAgICAgZmllbGQgPSBzZXRGaWVsZEFzRm9ybUVsZW1lbnQoZmllbGQsIHRydWUpO1xuXG4gICAgICAgIGZpZWxkLnByb3BlcnRpZXMgPSBtZXJnZU9iamVjdHMoXG4gICAgICAgICAgRklFTERfUFJPUEVSVElFU1tmaWVsZC50eXBlXSxcbiAgICAgICAgICBmaWVsZC5wcm9wZXJ0aWVzXG4gICAgICAgICk7XG5cbiAgICAgICAgcmV0dXJuIGZpZWxkO1xuICAgICAgfTtcbiAgICAgIGNvbnN0IGZvcm1hdEZpZWxkVHlwZURhdGUgPSAoZmllbGQ6IGFueSk6IGFueSA9PiB7XG4gICAgICAgIGZpZWxkID0gc2V0RmllbGRLZXlIaWRkZW4oZmllbGQpO1xuICAgICAgICBmaWVsZCA9IHNldEZpZWxkQXNGb3JtRWxlbWVudChmaWVsZCwgdHJ1ZSk7XG5cbiAgICAgICAgZmllbGQucHJvcGVydGllcyA9IG1lcmdlT2JqZWN0cyhcbiAgICAgICAgICBGSUVMRF9QUk9QRVJUSUVTW2ZpZWxkLnR5cGVdLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIG1heDogZ2V0TWF4RGF0ZShmaWVsZCksXG4gICAgICAgICAgICBtaW46IGdldE1pbkRhdGUoZmllbGQpXG4gICAgICAgICAgfSxcbiAgICAgICAgICBmaWVsZC5wcm9wZXJ0aWVzXG4gICAgICAgICk7XG5cbiAgICAgICAgcmV0dXJuIGZpZWxkO1xuICAgICAgfTtcbiAgICAgIGNvbnN0IGZvcm1hdEZpZWxkVHlwZVBob25lID0gKGZpZWxkOiBhbnkpOiBhbnkgPT4ge1xuICAgICAgICBmaWVsZCA9IHNldEZpZWxkS2V5SGlkZGVuKGZpZWxkKTtcbiAgICAgICAgZmllbGQgPSBzZXRGaWVsZEFzRm9ybUVsZW1lbnQoZmllbGQsIHRydWUpO1xuICAgICAgICByZXR1cm4gZmllbGQ7XG4gICAgICB9O1xuICAgICAgY29uc3QgZm9ybWF0RmllbGRUeXBlUmFkaW8gPSAoZmllbGQ6IGFueSk6IGFueSA9PiB7XG4gICAgICAgIGZpZWxkID0gc2V0RmllbGRLZXlIaWRkZW4oZmllbGQpO1xuICAgICAgICBmaWVsZCA9IHNldEZpZWxkQXNGb3JtRWxlbWVudChmaWVsZCwgdHJ1ZSk7XG5cbiAgICAgICAgZmllbGQucHJvcGVydGllcyA9IG1lcmdlT2JqZWN0cyhcbiAgICAgICAgICBGSUVMRF9QUk9QRVJUSUVTW2ZpZWxkLnR5cGVdLFxuICAgICAgICAgIGZpZWxkLnByb3BlcnRpZXNcbiAgICAgICAgKTtcblxuICAgICAgICBmaWVsZC5vcHRpb25zID0gZmllbGQub3B0aW9ucy5tYXAoKHg6IGFueSk6IGFueSA9PiB7XG4gICAgICAgICAgaWYgKHR5cGVvZiB4ID09PSBcInN0cmluZ1wiIHx8IHR5cGVvZiB4ID09PSBcIm51bWJlclwiKSB7XG4gICAgICAgICAgICByZXR1cm4geyBsYWJlbDogeCwgZGlzYWJsZWQ6IGZhbHNlLCBkZXNjcmlwdGlvbjogXCJcIiB9O1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgIGNoZWNrT2JqZWN0S2V5RXhpc3RzKHgsIFwibGFiZWxcIikgJiZcbiAgICAgICAgICAgICAgY2hlY2tPYmplY3RLZXlFeGlzdHMoeCwgXCJkaXNhYmxlZFwiKSAmJlxuICAgICAgICAgICAgICBjaGVja09iamVjdEtleUV4aXN0cyh4LCBcImRlc2NyaXB0aW9uXCIpXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIWNoZWNrT2JqZWN0S2V5RXhpc3RzKHgsIFwiZGlzYWJsZWRcIikpIHtcbiAgICAgICAgICAgICAgeCA9IHsgLi4ueCwgZGlzYWJsZWQ6IGZhbHNlIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIWNoZWNrT2JqZWN0S2V5RXhpc3RzKHgsIFwiZGVzY3JpcHRpb25cIikpIHtcbiAgICAgICAgICAgICAgeCA9IHsgLi4ueCwgZGVzY3JpcHRpb246IGZhbHNlIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4geDtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBmaWVsZDtcbiAgICAgIH07XG4gICAgICBjb25zdCBmb3JtYXRGaWVsZFR5cGVTbGlkZXIgPSAoZmllbGQ6IGFueSk6IGFueSA9PiB7XG4gICAgICAgIGZpZWxkID0gc2V0RmllbGRLZXlIaWRkZW4oZmllbGQpO1xuICAgICAgICBmaWVsZCA9IHNldEZpZWxkQXNGb3JtRWxlbWVudChmaWVsZCwgdHJ1ZSk7XG5cbiAgICAgICAgZmllbGQucHJvcGVydGllcyA9IG1lcmdlT2JqZWN0cyhcbiAgICAgICAgICBGSUVMRF9QUk9QRVJUSUVTW2ZpZWxkLnR5cGVdLFxuICAgICAgICAgIGZpZWxkLnByb3BlcnRpZXNcbiAgICAgICAgKTtcblxuICAgICAgICByZXR1cm4gZmllbGQ7XG4gICAgICB9O1xuICAgICAgY29uc3QgZm9ybWF0RmllbGRUeXBlU2VsZWN0ID0gKGZpZWxkOiBhbnkpOiBhbnkgPT4ge1xuICAgICAgICBmaWVsZCA9IHNldEZpZWxkS2V5SGlkZGVuKGZpZWxkKTtcbiAgICAgICAgZmllbGQgPSBzZXRGaWVsZEFzRm9ybUVsZW1lbnQoZmllbGQsIHRydWUpO1xuXG4gICAgICAgIHJldHVybiBmaWVsZDtcbiAgICAgIH07XG4gICAgICBjb25zdCBmb3JtYXRGaWVsZFR5cGVBcGkgPSAoZmllbGQ6IGFueSk6IGFueSA9PiB7XG4gICAgICAgIGZpZWxkID0gc2V0RmllbGRBc0Zvcm1FbGVtZW50KGZpZWxkLCB0cnVlKTtcblxuICAgICAgICBmaWVsZC5wcm9wZXJ0aWVzID0gbWVyZ2VPYmplY3RzKFxuICAgICAgICAgIEZJRUxEX1BST1BFUlRJRVNbZmllbGQudHlwZV0sXG4gICAgICAgICAgZmllbGQucHJvcGVydGllc1xuICAgICAgICApO1xuXG4gICAgICAgIGlmICghY2hlY2tPYmplY3RLZXlFeGlzdHMoZmllbGQsIFwic2hvd0xvYWRlclwiKSkge1xuICAgICAgICAgIGZpZWxkID0gc2V0RmllbGRLZXlWYWx1ZShmaWVsZCwgXCJzaG93TG9hZGVyXCIsIGZhbHNlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghY2hlY2tPYmplY3RLZXlFeGlzdHMoZmllbGQsIFwiYXBpXCIpKSB7XG4gICAgICAgICAgY29uc3QgZmllbGRBcGlEZWZhdWx0cyA9IHtcbiAgICAgICAgICAgIHVybDogXCJcIixcbiAgICAgICAgICAgIHJlcXVlc3Q6IHt9LFxuICAgICAgICAgICAgcmVzcG9uc2U6IHt9LFxuICAgICAgICAgICAgc3RhdHVzOiB7XG4gICAgICAgICAgICAgIHZhbHVlOiBcImRlZmF1bHRcIixcbiAgICAgICAgICAgICAgbGFiZWxzOiB7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDogXCJDYWxsIEFQSVwiLFxuICAgICAgICAgICAgICAgIGxvYWRpbmc6IFwiQ2FsbCBBUElcIixcbiAgICAgICAgICAgICAgICBzdWNjZXNzOiBcIkFQSSBTdWNjZXNzXCIsXG4gICAgICAgICAgICAgICAgZmFpbGVkOiBcIkFQSSBGYWlsZWRcIlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfTtcbiAgICAgICAgICBmaWVsZC5hcGkgPSBtZXJnZU9iamVjdHMoZmllbGRBcGlEZWZhdWx0cywgZmllbGRBcGlEZWZhdWx0cyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKFxuICAgICAgICAgICFjaGVja09iamVjdEtleUV4aXN0cyhmaWVsZC5hcGksIFwicmVxdWVzdFwiKSAmJlxuICAgICAgICAgICFjaGVja09iamVjdEtleUV4aXN0cyhmaWVsZC5hcGksIFwiZW50cnlwb2ludFwiKVxuICAgICAgICApIHtcbiAgICAgICAgICBjb25zdCBhcGlFbnRyeXBvaW50ID0ge1xuICAgICAgICAgICAgdHJpZ2dlcnM6IFtcIk9OX0FQSV9DQUxMXCJdLFxuICAgICAgICAgICAgcnVsZXM6IFtdLFxuICAgICAgICAgICAgYWN0aW9uczogW1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgaWQ6IFwiMVwiLFxuICAgICAgICAgICAgICAgIGtleTogXCJBUElfQ0FMTFwiLFxuICAgICAgICAgICAgICAgIGNvbmRpdGlvbjogXCJ0cnVlXCIsXG4gICAgICAgICAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICAgICAgICAgIGZpZWxkS2V5OiBmaWVsZC5rZXksXG4gICAgICAgICAgICAgICAgICBhcGlLZXk6IGZpZWxkLmFwaS5lbmRwb2ludHNbMF0uYXBpS2V5XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdXG4gICAgICAgICAgfTtcbiAgICAgICAgICBmaWVsZC5lbnRyeXBvaW50ID0gbWVyZ2VPYmplY3RzKGFwaUVudHJ5cG9pbnQsIGZpZWxkLmFwaSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZpZWxkO1xuICAgICAgfTtcbiAgICAgIGNvbnN0IGZvcm1hdEZpZWxkVHlwZU90cCA9IChmaWVsZDogYW55KTogYW55ID0+IHtcbiAgICAgICAgZmllbGQgPSBzZXRGaWVsZEtleUhpZGRlbihmaWVsZCk7XG4gICAgICAgIGZpZWxkID0gc2V0RmllbGRBc0Zvcm1FbGVtZW50KGZpZWxkLCB0cnVlKTtcblxuICAgICAgICBmaWVsZC5wcm9wZXJ0aWVzID0gbWVyZ2VPYmplY3RzKFxuICAgICAgICAgIEZJRUxEX1BST1BFUlRJRVNbZmllbGQudHlwZV0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgbWFzazogbmV3IEFycmF5KGZpZWxkPy5wcm9wZXJ0aWVzPy5vdHBMZW5ndGggPz8gNClcbiAgICAgICAgICAgICAgLmZpbGwoXCIjXCIpXG4gICAgICAgICAgICAgIC5qb2luKFwiIFwiKVxuICAgICAgICAgIH0sXG4gICAgICAgICAgZmllbGQucHJvcGVydGllc1xuICAgICAgICApO1xuXG4gICAgICAgIHJldHVybiBmaWVsZDtcbiAgICAgIH07XG4gICAgICBjb25zdCBmb3JtYXRGaWVsZFR5cGVBYWRoYWFyTnVtYmVyID0gKGZpZWxkOiBhbnkpOiBhbnkgPT4ge1xuICAgICAgICBmaWVsZCA9IHNldEZpZWxkS2V5SGlkZGVuKGZpZWxkKTtcbiAgICAgICAgZmllbGQgPSBzZXRGaWVsZEFzRm9ybUVsZW1lbnQoZmllbGQsIHRydWUpO1xuXG4gICAgICAgIHJldHVybiBmaWVsZDtcbiAgICAgIH07XG4gICAgICBjb25zdCBmb3JtYXRGaWVsZFR5cGVGaWxlID0gKGZpZWxkOiBhbnkpOiBhbnkgPT4ge1xuICAgICAgICBmaWVsZCA9IHNldEZpZWxkS2V5SGlkZGVuKGZpZWxkKTtcbiAgICAgICAgZmllbGQgPSBzZXRGaWVsZEFzRm9ybUVsZW1lbnQoZmllbGQsIHRydWUpO1xuXG4gICAgICAgIGZpZWxkLnByb3BlcnRpZXMgPSBtZXJnZU9iamVjdHMoXG4gICAgICAgICAgRklFTERfUFJPUEVSVElFU1tmaWVsZC50eXBlXSxcbiAgICAgICAgICBmaWVsZC5wcm9wZXJ0aWVzXG4gICAgICAgICk7XG5cbiAgICAgICAgcmV0dXJuIGZpZWxkO1xuICAgICAgfTtcblxuICAgICAgc3dpdGNoIChmaWVsZC50eXBlKSB7XG4gICAgICAgIGNhc2UgRUZpZWxkVHlwZS5IVE1MOlxuICAgICAgICAgIGZpZWxkID0gZm9ybWF0RmllbGRUeXBlSHRtbChmaWVsZCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgRUZpZWxkVHlwZS5USVRMRTpcbiAgICAgICAgICBmaWVsZCA9IGZvcm1hdEZpZWxkVHlwZVRpdGxlKGZpZWxkKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBFRmllbGRUeXBlLlRFWFQ6XG4gICAgICAgICAgZmllbGQgPSBmb3JtYXRGaWVsZFR5cGVUZXh0KGZpZWxkKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBFRmllbGRUeXBlLlRFWFRBUkVBOlxuICAgICAgICAgIGZpZWxkID0gZm9ybWF0RmllbGRUeXBlVGV4dGFyZWEoZmllbGQpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIEVGaWVsZFR5cGUuQ0hFQ0tCT1g6XG4gICAgICAgICAgZmllbGQgPSBmb3JtYXRGaWVsZFR5cGVDaGVja2JveChmaWVsZCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgRUZpZWxkVHlwZS5OVU1CRVI6XG4gICAgICAgICAgZmllbGQgPSBmb3JtYXRGaWVsZFR5cGVOdW1iZXIoZmllbGQpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIEVGaWVsZFR5cGUuUFJFVklFV19JTUFHRTpcbiAgICAgICAgICBmaWVsZCA9IHNldEZpZWxkS2V5VmFsdWUoZmllbGQsIFwidHlwZVwiLCBcImltYWdlXCIpO1xuICAgICAgICAgIGZpZWxkID0gZm9ybWF0RmllbGRUeXBlSW1hZ2UoZmllbGQpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIEVGaWVsZFR5cGUuSU1BR0U6XG4gICAgICAgICAgZmllbGQgPSBmb3JtYXRGaWVsZFR5cGVJbWFnZShmaWVsZCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgRUZpZWxkVHlwZS5EQVRFOlxuICAgICAgICAgIGZpZWxkID0gZm9ybWF0RmllbGRUeXBlRGF0ZShmaWVsZCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgRUZpZWxkVHlwZS5QSE9ORTpcbiAgICAgICAgICBmaWVsZCA9IGZvcm1hdEZpZWxkVHlwZVBob25lKGZpZWxkKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBFRmllbGRUeXBlLlJBRElPOlxuICAgICAgICAgIGZpZWxkID0gZm9ybWF0RmllbGRUeXBlUmFkaW8oZmllbGQpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIEVGaWVsZFR5cGUuU0xJREVSOlxuICAgICAgICAgIGZpZWxkID0gZm9ybWF0RmllbGRUeXBlU2xpZGVyKGZpZWxkKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBcInNlYXJjaC10ZXh0XCI6XG4gICAgICAgICAgZmllbGQgPSBzZXRGaWVsZEtleVZhbHVlKGZpZWxkLCBcInR5cGVcIiwgXCJzZWxlY3RcIik7XG4gICAgICAgICAgZmllbGQgPSBmb3JtYXRGaWVsZFR5cGVTZWxlY3QoZmllbGQpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIEVGaWVsZFR5cGUuRFJPUERPV05fV0lUSF9TRUFSQ0g6XG4gICAgICAgICAgZmllbGQgPSBzZXRGaWVsZEtleVZhbHVlKGZpZWxkLCBcInR5cGVcIiwgXCJzZWxlY3RcIik7XG4gICAgICAgICAgZmllbGQgPSBmb3JtYXRGaWVsZFR5cGVTZWxlY3QoZmllbGQpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIEVGaWVsZFR5cGUuU0VMRUNUOlxuICAgICAgICAgIGZpZWxkID0gZm9ybWF0RmllbGRUeXBlU2VsZWN0KGZpZWxkKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBFRmllbGRUeXBlLkFQSV9DQUxMOlxuICAgICAgICAgIGZpZWxkID0gc2V0RmllbGRLZXlWYWx1ZShmaWVsZCwgXCJ0eXBlXCIsIFwiYXBpXCIpO1xuICAgICAgICAgIGZpZWxkID0gZm9ybWF0RmllbGRUeXBlQXBpKGZpZWxkKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBFRmllbGRUeXBlLkFQSTpcbiAgICAgICAgICBmaWVsZCA9IGZvcm1hdEZpZWxkVHlwZUFwaShmaWVsZCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgRUZpZWxkVHlwZS5PVFA6XG4gICAgICAgICAgZmllbGQgPSBmb3JtYXRGaWVsZFR5cGVPdHAoZmllbGQpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIEVGaWVsZFR5cGUuQUFESEFBUl9OVU1CRVI6XG4gICAgICAgICAgZmllbGQgPSBmb3JtYXRGaWVsZFR5cGVBYWRoYWFyTnVtYmVyKGZpZWxkKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBFRmllbGRUeXBlLkZJTEU6XG4gICAgICAgICAgZmllbGQgPSBmb3JtYXRGaWVsZFR5cGVGaWxlKGZpZWxkKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGZpZWxkO1xuICAgIH07XG5cbiAgICBjb25zdCB1cGRhdGVGaWVsZFZhbGlkYXRvcnMgPSAoZmllbGQ6IGFueSk6IGFueSA9PiB7XG4gICAgICBpZiAoZmllbGQuaXNGb3JtRWxlbWVudCkge1xuICAgICAgICBjb25zdCB2YWxpZGF0b3JzID0gY2hlY2tPYmplY3RLZXlFeGlzdHMoZmllbGQsIFwidmFsaWRhdG9yc1wiKVxuICAgICAgICAgID8gZmllbGQudmFsaWRhdG9yc1xuICAgICAgICAgIDoge307XG5cbiAgICAgICAgZmllbGQgPSBzZXRNaXNzaW5nRmllbGRLZXlWYWx1ZShmaWVsZCwgXCJ2YWxpZGF0b3JzXCIsIHt9KTtcblxuICAgICAgICBmaWVsZCA9IHNldEZpZWxkS2V5VmFsdWUoZmllbGQsIFwidmFsaWRhdG9yc1wiLCB7XG4gICAgICAgICAgLi4uZmllbGRbXCJ2YWxpZGF0b3JzXCJdLFxuICAgICAgICAgIG1pbjogY2hlY2tPYmplY3RLZXlFeGlzdHModmFsaWRhdG9ycywgXCJtaW5cIilcbiAgICAgICAgICAgID8gaXNOb3RFbXB0eVZhbHVlKHZhbGlkYXRvcnMubWluKVxuICAgICAgICAgICAgICA/IE51bWJlcih2YWxpZGF0b3JzLm1pbilcbiAgICAgICAgICAgICAgOiBudWxsXG4gICAgICAgICAgICA6IGNoZWNrT2JqZWN0S2V5RXhpc3RzKGZpZWxkLCBcIm1pblwiKVxuICAgICAgICAgICAgPyBOdW1iZXIoZmllbGQubWluKVxuICAgICAgICAgICAgOiBudWxsLFxuICAgICAgICAgIG1heDogY2hlY2tPYmplY3RLZXlFeGlzdHModmFsaWRhdG9ycywgXCJtYXhcIilcbiAgICAgICAgICAgID8gaXNOb3RFbXB0eVZhbHVlKHZhbGlkYXRvcnMubWF4KVxuICAgICAgICAgICAgICA/IE51bWJlcih2YWxpZGF0b3JzLm1heClcbiAgICAgICAgICAgICAgOiBudWxsXG4gICAgICAgICAgICA6IGNoZWNrT2JqZWN0S2V5RXhpc3RzKGZpZWxkLCBcIm1heFwiKVxuICAgICAgICAgICAgPyBOdW1iZXIoZmllbGQubWF4KVxuICAgICAgICAgICAgOiBudWxsLFxuICAgICAgICAgIHJlcXVpcmVkOiBjaGVja09iamVjdEtleUV4aXN0cyh2YWxpZGF0b3JzLCBcInJlcXVpcmVkXCIpXG4gICAgICAgICAgICA/IEJvb2xlYW4odmFsaWRhdG9ycy5yZXF1aXJlZClcbiAgICAgICAgICAgIDogY2hlY2tPYmplY3RLZXlFeGlzdHMoZmllbGQsIFwicmVxdWlyZWRcIilcbiAgICAgICAgICAgID8gQm9vbGVhbihmaWVsZC5yZXF1aXJlZClcbiAgICAgICAgICAgIDogZmFsc2UsXG4gICAgICAgICAgbWluTGVuZ3RoOiBjaGVja09iamVjdEtleUV4aXN0cyh2YWxpZGF0b3JzLCBcIm1pbkxlbmd0aFwiKVxuICAgICAgICAgICAgPyBpc05vdEVtcHR5VmFsdWUodmFsaWRhdG9ycy5taW5MZW5ndGgpXG4gICAgICAgICAgICAgID8gTnVtYmVyKHZhbGlkYXRvcnMubWluTGVuZ3RoKVxuICAgICAgICAgICAgICA6IG51bGxcbiAgICAgICAgICAgIDogY2hlY2tPYmplY3RLZXlFeGlzdHMoZmllbGQsIFwibWluTGVuZ3RoXCIpXG4gICAgICAgICAgICA/IE51bWJlcihmaWVsZC5taW5MZW5ndGgpXG4gICAgICAgICAgICA6IG51bGwsXG4gICAgICAgICAgbWF4TGVuZ3RoOiBjaGVja09iamVjdEtleUV4aXN0cyh2YWxpZGF0b3JzLCBcIm1heExlbmd0aFwiKVxuICAgICAgICAgICAgPyBpc05vdEVtcHR5VmFsdWUodmFsaWRhdG9ycy5tYXhMZW5ndGgpXG4gICAgICAgICAgICAgID8gTnVtYmVyKHZhbGlkYXRvcnMubWF4TGVuZ3RoKVxuICAgICAgICAgICAgICA6IG51bGxcbiAgICAgICAgICAgIDogY2hlY2tPYmplY3RLZXlFeGlzdHMoZmllbGQsIFwibGVuZ3RoXCIpXG4gICAgICAgICAgICA/IE51bWJlcihmaWVsZC5sZW5ndGgpXG4gICAgICAgICAgICA6IGNoZWNrT2JqZWN0S2V5RXhpc3RzKGZpZWxkLCBcIm1heExlbmd0aFwiKVxuICAgICAgICAgICAgPyBOdW1iZXIoZmllbGQubWF4TGVuZ3RoKVxuICAgICAgICAgICAgOiBudWxsLFxuICAgICAgICAgIHBhdHRlcm46IGNoZWNrT2JqZWN0S2V5RXhpc3RzKHZhbGlkYXRvcnMsIFwicGF0dGVyblwiKVxuICAgICAgICAgICAgPyBpc05vdEVtcHR5VmFsdWUodmFsaWRhdG9ycy5wYXR0ZXJuKVxuICAgICAgICAgICAgICA/IHZhbGlkYXRvcnMucGF0dGVyblxuICAgICAgICAgICAgICA6IHVuZGVmaW5lZFxuICAgICAgICAgICAgOiBjaGVja09iamVjdEtleUV4aXN0cyhmaWVsZCwgXCJwYXR0ZXJuXCIpXG4gICAgICAgICAgICA/IHsga2V5OiBcIkNVU1RPTVwiLCBwYXR0ZXJuOiBTdHJpbmcoZmllbGQucGF0dGVybikgfVxuICAgICAgICAgICAgOiBjaGVja09iamVjdEtleUV4aXN0cyhmaWVsZCwgXCJyZWdleFwiKVxuICAgICAgICAgICAgPyB7IGtleTogXCJDVVNUT01cIiwgcGF0dGVybjogU3RyaW5nKGZpZWxkLnJlZ2V4KSB9XG4gICAgICAgICAgICA6IHVuZGVmaW5lZFxuICAgICAgICB9KTtcblxuICAgICAgICBkZWxldGUgZmllbGQubWluO1xuICAgICAgICBkZWxldGUgZmllbGQubWF4O1xuICAgICAgICBkZWxldGUgZmllbGQucmVxdWlyZWQ7XG4gICAgICAgIGRlbGV0ZSBmaWVsZC5taW5MZW5ndGg7XG4gICAgICAgIGRlbGV0ZSBmaWVsZC5sZW5ndGg7XG4gICAgICAgIGRlbGV0ZSBmaWVsZC5tYXhMZW5ndGg7XG4gICAgICAgIGRlbGV0ZSBmaWVsZC5wYXR0ZXJuO1xuICAgICAgICBkZWxldGUgZmllbGQucmVnZXg7XG5cbiAgICAgICAgc3dpdGNoIChmaWVsZC50eXBlKSB7XG4gICAgICAgICAgY2FzZSBFRmllbGRUeXBlLlRFWFQ6XG4gICAgICAgICAgICBkZWxldGUgZmllbGQudmFsaWRhdG9ycy5taW47XG4gICAgICAgICAgICBkZWxldGUgZmllbGQudmFsaWRhdG9ycy5tYXg7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIEVGaWVsZFR5cGUuQ0hFQ0tCT1g6XG4gICAgICAgICAgICBkZWxldGUgZmllbGQudmFsaWRhdG9ycy5taW47XG4gICAgICAgICAgICBkZWxldGUgZmllbGQudmFsaWRhdG9ycy5tYXg7XG4gICAgICAgICAgY2FzZSBFRmllbGRUeXBlLlBSRVZJRVdfSU1BR0U6XG4gICAgICAgICAgICBkZWxldGUgZmllbGQudmFsaWRhdG9ycy5taW47XG4gICAgICAgICAgICBkZWxldGUgZmllbGQudmFsaWRhdG9ycy5tYXg7XG4gICAgICAgICAgICBkZWxldGUgZmllbGQudmFsaWRhdG9ycy5taW5MZW5ndGg7XG4gICAgICAgICAgICBkZWxldGUgZmllbGQudmFsaWRhdG9ycy5tYXhMZW5ndGg7XG4gICAgICAgICAgY2FzZSBFRmllbGRUeXBlLkZJTEU6XG4gICAgICAgICAgICBkZWxldGUgZmllbGQudmFsaWRhdG9ycy5taW47XG4gICAgICAgICAgICBkZWxldGUgZmllbGQudmFsaWRhdG9ycy5tYXg7XG4gICAgICAgICAgICBkZWxldGUgZmllbGQudmFsaWRhdG9ycy5taW5MZW5ndGg7XG4gICAgICAgICAgICBkZWxldGUgZmllbGQudmFsaWRhdG9ycy5tYXhMZW5ndGg7XG4gICAgICAgICAgICBkZWxldGUgZmllbGQudmFsaWRhdG9ycy5wYXR0ZXJuO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGlzRW1wdHlWYWx1ZShmaWVsZC52YWxpZGF0b3JzPy5taW4pKSB7XG4gICAgICAgICAgZGVsZXRlIGZpZWxkLnZhbGlkYXRvcnMubWluO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpc0VtcHR5VmFsdWUoZmllbGQudmFsaWRhdG9ycz8ubWF4KSkge1xuICAgICAgICAgIGRlbGV0ZSBmaWVsZC52YWxpZGF0b3JzLm1pbjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNFbXB0eVZhbHVlKGZpZWxkLnZhbGlkYXRvcnM/Lm1pbkxlbmd0aCkpIHtcbiAgICAgICAgICBkZWxldGUgZmllbGQudmFsaWRhdG9ycy5taW5MZW5ndGg7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlzRW1wdHlWYWx1ZShmaWVsZC52YWxpZGF0b3JzPy5tYXhMZW5ndGgpKSB7XG4gICAgICAgICAgZGVsZXRlIGZpZWxkLnZhbGlkYXRvcnMubWF4TGVuZ3RoO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpc0VtcHR5VmFsdWUoZmllbGQudmFsaWRhdG9ycz8ucGF0dGVybikpIHtcbiAgICAgICAgICBkZWxldGUgZmllbGQudmFsaWRhdG9ycy5wYXR0ZXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgZmllbGQuZm9jdXMgPSBmYWxzZTtcbiAgICAgICAgZmllbGQuaW52YWxpZCA9IGZhbHNlO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gZmllbGQ7XG4gICAgfTtcblxuICAgIGNvbnN0IHVwZGF0ZUZpZWxkRGVmYXVsdFZhbHVlID0gKGZpZWxkOiBhbnkpOiBhbnkgPT4ge1xuICAgICAgY29uc3QgZGVmYXVsdFZhbHVlID0ge1xuICAgICAgICB2YWx1ZToge1xuICAgICAgICAgIGlzX2ZvdW5kOiBmYWxzZSxcbiAgICAgICAgICB2YWx1ZTogXCJcIixcbiAgICAgICAgICBzb3VyY2VzOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGtleTogXCJPQkpFQ1RcIixcbiAgICAgICAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICAgICAgICBvYmplY3Q6IHtcbiAgICAgICAgICAgICAgICAgIGtleTogXCJGT1JNX0RBVEFcIixcbiAgICAgICAgICAgICAgICAgIHBhdGg6IGAkLiR7ZmllbGQua2V5fWBcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHZhbHVlOiBcIlwiLFxuICAgICAgICAgICAgICB2YWxpZGF0aW9uOiB7XG4gICAgICAgICAgICAgICAgaXNfdmFsaWQ6IGZhbHNlLFxuICAgICAgICAgICAgICAgIHRyaWdnZXJzOiBbXCJPTl9JTklUXCJdLFxuICAgICAgICAgICAgICAgIHJ1bGVzOiBbXSxcbiAgICAgICAgICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIjFcIixcbiAgICAgICAgICAgICAgICAgICAga2V5OiBcIlNFVF9GSUVMRF9ERUZBVUxUX1ZBTFVFXCIsXG4gICAgICAgICAgICAgICAgICAgIGNvbmRpdGlvbjogXCIxXCIsXG4gICAgICAgICAgICAgICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZToge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6IFwiT0JKRUNUXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JqZWN0OiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6IFwiRk9STV9EQVRBXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoOiBgJC4ke2ZpZWxkLmtleX1gXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgXVxuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICBpZiAoZmllbGQuaXNGb3JtRWxlbWVudCkge1xuICAgICAgICBpZiAoY2hlY2tPYmplY3RLZXlFeGlzdHMoZmllbGQsIFwiZGVmYXVsdFZhbHVlXCIpKSB7XG4gICAgICAgICAgcmV0dXJuIGZpZWxkO1xuICAgICAgICB9IGVsc2UgaWYgKGNoZWNrT2JqZWN0UGF0aEV4aXN0cyhmaWVsZCwgXCJkZWZhdWx0LnZhbHVlLnNvdXJjZXNcIikpIHtcbiAgICAgICAgICByZXR1cm4gZmllbGQ7XG4gICAgICAgIH0gZWxzZSBpZiAoIWNoZWNrT2JqZWN0UGF0aEV4aXN0cyhmaWVsZCwgXCJkZWZhdWx0LnZhbHVlLnNvdXJjZXNcIikpIHtcbiAgICAgICAgICBmaWVsZCA9IHNldEZpZWxkS2V5VmFsdWUoZmllbGQsIFwiZGVmYXVsdFwiLCBkZWZhdWx0VmFsdWUpO1xuICAgICAgICAgIHJldHVybiBmaWVsZDtcbiAgICAgICAgfVxuXG4gICAgICAgIGRlbGV0ZSBmaWVsZFtcImRlZmF1bHRWYWxcIl07XG4gICAgICAgIGRlbGV0ZSBmaWVsZFtcImRlZmF1bHRWYWx1ZVwiXTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGZpZWxkO1xuICAgIH07XG5cbiAgICBjb25zdCB1cGRhdGVGaWVsZERpc2FiaWxpdHkgPSAoZmllbGQ6IGFueSk6IGFueSA9PiB7XG4gICAgICBmaWVsZCA9IHNldE1pc3NpbmdLZXlWYWx1ZShmaWVsZCwgXCJkaXNhYmxlZFwiLCBmYWxzZSk7XG5cbiAgICAgIHJldHVybiBmaWVsZDtcbiAgICB9O1xuXG4gICAgY29uc3QgdXBkYXRlRmllbGRNZXNzYWdlcyA9IChmaWVsZDogYW55KTogYW55ID0+IHtcbiAgICAgIGlmIChmaWVsZC5pc0Zvcm1FbGVtZW50KSB7XG4gICAgICAgIGZpZWxkID0gc2V0TWlzc2luZ0ZpZWxkS2V5VmFsdWUoZmllbGQsIFwibWVzc2FnZXNcIiwgW10pO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gZmllbGQ7XG4gICAgfTtcblxuICAgIGNvbnN0IHVwZGF0ZUZpZWxkUmVzZXRCdXR0b24gPSAoZmllbGQ6IGFueSk6IGFueSA9PiB7XG4gICAgICBpZiAoZmllbGQuaXNGb3JtRWxlbWVudCkge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgY2hlY2tPYmplY3RLZXlFeGlzdHMoZmllbGQsIFwiYWN0aW9uXCIpICYmXG4gICAgICAgICAgZmllbGQuYWN0aW9uID09PSBcInJlc2V0XCIgJiZcbiAgICAgICAgICBjaGVja09iamVjdEtleUV4aXN0cyhmaWVsZCwgXCJmaWVsZHNcIilcbiAgICAgICAgKSB7XG4gICAgICAgICAgZmllbGQgPSBzZXRGaWVsZEtleVZhbHVlKGZpZWxkLCBcInJlc2V0XCIsIHtcbiAgICAgICAgICAgIGZpZWxkczogZmllbGQuZmllbGRzXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGZpZWxkO1xuICAgIH07XG5cbiAgICBjb25zdCBzZXRGb3JtRmllbGRzID0gKGZvcm1Db25maWc6IGFueSwgZmllbGRzOiBhbnlbXSk6IGFueSA9PiB7XG4gICAgICBpZiAoY2hlY2tPYmplY3RLZXlFeGlzdHMoZm9ybUNvbmZpZywgXCJtdWx0aUZvcm1cIikpIHtcbiAgICAgICAgZm9ybUNvbmZpZy5tdWx0aUZvcm1bXCJmaWVsZHNcIl0gPSBmaWVsZHM7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBmb3JtQ29uZmlnW1wiZmllbGRzXCJdID0gZmllbGRzO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gZm9ybUNvbmZpZztcbiAgICB9O1xuXG4gICAgY29uc3Qgc2V0Rm9ybUZpZWxkR3JvdXBzID0gKGZvcm1Db25maWc6IGFueSwgZ3JvdXBzOiBhbnkpOiBhbnkgPT4ge1xuICAgICAgZm9ybUNvbmZpZ1tcImZpZWxkR3JvdXBzXCJdID0gZ3JvdXBzO1xuXG4gICAgICByZXR1cm4gZm9ybUNvbmZpZztcbiAgICB9O1xuXG4gICAgY29uc3QgdXBkYXRlRm9ybUZpZWxkR3JvdXBzID0gKGZpZWxkR3JvdXBzOiBhbnksIGZpZWxkOiBhbnkpOiBhbnkgPT4ge1xuICAgICAgaWYgKGNoZWNrT2JqZWN0S2V5RXhpc3RzKGZpZWxkLCBcImdyb3VwS2V5XCIpKSB7XG4gICAgICAgIGlmIChjaGVja09iamVjdEtleUV4aXN0cyhmaWVsZEdyb3VwcywgZmllbGQuZ3JvdXBLZXkpKSB7XG4gICAgICAgICAgZmllbGRHcm91cHNbZmllbGQuZ3JvdXBLZXldLnB1c2goZmllbGQua2V5KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBmaWVsZEdyb3Vwc1tmaWVsZC5ncm91cEtleV0gPSBbZmllbGQua2V5XTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gZmllbGRHcm91cHM7XG4gICAgfTtcblxuICAgIGxldCBmaWVsZHM6IGFueVtdID0gZ2V0Rm9ybUZpZWxkcyhmb3JtQ29uZmlnKTtcblxuICAgIGxldCBmaWVsZEdyb3VwczogYW55ID0ge307XG5cbiAgICBmb3IgKGxldCBmaWVsZCBvZiBmaWVsZHMpIHtcbiAgICAgIGZpZWxkID0gZm9ybWF0T25GaWVsZFR5cGUoZmllbGQpO1xuXG4gICAgICBmaWVsZCA9IHVwZGF0ZUZpZWxkRGlzYWJpbGl0eShmaWVsZCk7XG5cbiAgICAgIGZpZWxkR3JvdXBzID0gdXBkYXRlRm9ybUZpZWxkR3JvdXBzKGZpZWxkR3JvdXBzLCBmaWVsZCk7XG5cbiAgICAgIGZpZWxkID0gdXBkYXRlRmllbGREZWZhdWx0VmFsdWUoZmllbGQpO1xuXG4gICAgICBmaWVsZCA9IHVwZGF0ZUZpZWxkVmFsaWRhdG9ycyhmaWVsZCk7XG5cbiAgICAgIGZpZWxkID0gdXBkYXRlRmllbGRSZXNldEJ1dHRvbihmaWVsZCk7XG5cbiAgICAgIGZpZWxkID0gdXBkYXRlRmllbGRNZXNzYWdlcyhmaWVsZCk7XG4gICAgfVxuXG4gICAgZm9ybUNvbmZpZyA9IHNldEZvcm1GaWVsZEdyb3Vwcyhmb3JtQ29uZmlnLCBmaWVsZEdyb3Vwcyk7XG5cbiAgICBmb3JtQ29uZmlnID0gc2V0Rm9ybUZpZWxkcyhmb3JtQ29uZmlnLCBmaWVsZHMpO1xuXG4gICAgcmV0dXJuIGZvcm1Db25maWc7XG4gIH1cbn1cbiJdfQ==
|
|
514
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLWNvbnZlcnRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2t3aWtpZC1mb3Jtcy9zcmMvbGliL3JlbmRlcmVyL2NvbmZpZy1jb252ZXJ0ZXIvY29uZmlnLWNvbnZlcnRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUNMLG9CQUFvQixFQUNwQixxQkFBcUIsRUFDckIsaUJBQWlCLEVBQ2pCLFlBQVksRUFDWixlQUFlLEVBQ2YsU0FBUyxFQUNULFlBQVksRUFDWixrQkFBa0IsRUFDbEIsb0JBQW9CLEVBQ3JCLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNEQUFzRCxDQUFDO0FBQ2xGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2hFLE9BQU8sRUFDTCxhQUFhLEVBQ2IsVUFBVSxFQUNWLFVBQVUsRUFDVixxQkFBcUIsRUFDckIsaUJBQWlCLEVBQ2pCLGdCQUFnQixFQUNoQix1QkFBdUIsRUFDeEIsTUFBTSwyQkFBMkIsQ0FBQztBQUVuQyxNQUFNLE9BQU8sU0FBUztJQUVwQiw2QkFBNkIsQ0FBQyxVQUFlLEVBQUUsSUFBUztRQUN0RCxJQUFJLG9CQUFvQixDQUFDLElBQUksRUFBRSxpQkFBaUIsQ0FBQyxFQUFFO1lBQ2pELFVBQVUsR0FBRyxvQkFBb0IsQ0FDL0IsVUFBVSxFQUNWLGlCQUFpQixFQUNqQixJQUFJLENBQUMsZUFBZSxDQUNyQixDQUFDO1NBQ0g7UUFFRCxPQUFPLFVBQVUsQ0FBQztJQUNwQixDQUFDO0lBR0QsMEJBQTBCLENBQUMsVUFBZTs7UUFDeEMsTUFBTSxrQkFBa0IsR0FBRztZQUN6QixNQUFNLEVBQUU7Z0JBQ04sVUFBVSxFQUFFO29CQUNWLElBQUksRUFBRSxRQUFRO29CQUNkLGtCQUFrQixFQUFFLEtBQUs7b0JBQ3pCLE1BQU0sRUFBRSxJQUFJO2lCQUNiO2dC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S0FBSyxHQUFHLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxDQUFDO1lBRWpDLEtBQUssR0FBRyxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUVyQyxXQUFXLEdBQUcscUJBQXFCLENBQUMsV0FBVyxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBRXhELEtBQUssR0FBRyx1QkFBdUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUV2QyxLQUFLLEdBQUcscUJBQXFCLENBQUMsS0FBSyxDQUFDLENBQUM7WUFFckMsS0FBSyxHQUFHLHNCQUFzQixDQUFDLEtBQUssQ0FBQyxDQUFDO1lBRXRDLEtBQUssR0FBRyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUNwQztRQUVELFVBQVUsR0FBRyxrQkFBa0IsQ0FBQyxVQUFVLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFFekQsVUFBVSxHQUFHLGFBQWEsQ0FBQyxVQUFVLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFFL0MsT0FBTyxVQUFVLENBQUM7SUFDcEIsQ0FBQztDQUNGO0FBaG1CQztJQURDLFNBQVM7OERBV1Q7QUFHRDtJQURDLFNBQVM7MkRBdUNUO0FBR0Q7SUFEQyxTQUFTO2tEQTBpQlQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBjaGVja09iamVjdEtleUV4aXN0cyxcbiAgY2hlY2tPYmplY3RQYXRoRXhpc3RzLFxuICBnZXRPYmplY3REZWVwQ29weSxcbiAgaXNFbXB0eVZhbHVlLFxuICBpc05vdEVtcHR5VmFsdWUsXG4gIGxvZ01ldGhvZCxcbiAgbWVyZ2VPYmplY3RzLFxuICBzZXRNaXNzaW5nS2V5VmFsdWUsXG4gIHNldFZhbHVlVG9PYmplY3RQYXRoXG59IGZyb20gXCJrd2lraWQtdG9vbGtpdFwiO1xuaW1wb3J0IHsgRUZpZWxkVHlwZSB9IGZyb20gXCIuLi9mb3JtLXZpZXcvZGVmaW5pdGlvbnMvZm9ybS12aWV3LmZpZWxkcy5kZWZpbml0aW9uXCI7XG5pbXBvcnQgeyBGSUVMRF9QUk9QRVJUSUVTIH0gZnJvbSBcIi4vY29uZmlnLWNvbnZlcnRlci5jb25zdGFudHNcIjtcbmltcG9ydCB7XG4gIGdldEZvcm1GaWVsZHMsXG4gIGdldE1heERhdGUsXG4gIGdldE1pbkRhdGUsXG4gIHNldEZpZWxkQXNGb3JtRWxlbWVudCxcbiAgc2V0RmllbGRLZXlIaWRkZW4sXG4gIHNldEZpZWxkS2V5VmFsdWUsXG4gIHNldE1pc3NpbmdGaWVsZEtleVZhbHVlXG59IGZyb20gXCIuL2NvbmZpZy1jb252ZXJ0ZXIuaGVscGVyXCI7XG5cbmV4cG9ydCBjbGFzcyBDb252ZXJ0ZXIge1xuICBAbG9nTWV0aG9kXG4gIHVwZGF0ZUZvcm1Db25maWdNaXNjZWxsYW5lb3VzKGZvcm1Db25maWc6IGFueSwgYXJnczogYW55KTogYW55IHtcbiAgICBpZiAoY2hlY2tPYmplY3RLZXlFeGlzdHMoYXJncywgXCJmb3Jtc0xpc3RMZW5ndGhcIikpIHtcbiAgICAgIGZvcm1Db25maWcgPSBzZXRWYWx1ZVRvT2JqZWN0UGF0aChcbiAgICAgICAgZm9ybUNvbmZpZyxcbiAgICAgICAgXCJmb3Jtc0xpc3RMZW5ndGhcIixcbiAgICAgICAgYXJncy5mb3Jtc0xpc3RMZW5ndGhcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZvcm1Db25maWc7XG4gIH1cblxuICBAbG9nTWV0aG9kXG4gIHVwZGF0ZUZvcm1Db25maWdQcm9wZXJ0aWVzKGZvcm1Db25maWc6IGFueSk6IGFueSB7XG4gICAgY29uc3QgZm9ybVZpZXdQcm9wZXJ0aWVzID0ge1xuICAgICAgaGVhZGVyOiB7XG4gICAgICAgIGJhY2tCdXR0b246IHtcbiAgICAgICAgICBtb2RlOiBcIlRBQkJFRFwiLFxuICAgICAgICAgIGJ5cGFzc0NvbmZpcm1hdGlvbjogZmFsc2UsXG4gICAgICAgICAgaGlkZGVuOiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIHRpdGxlOiB7XG4gICAgICAgICAgaGlkZGVuOiBmYWxzZSxcbiAgICAgICAgICBsYWJlbDogZm9ybUNvbmZpZz8udGl0bGUgPz8gXCJGb3JtXCJcbiAgICAgICAgfSxcbiAgICAgICAgc3RlcHM6IHtcbiAgICAgICAgICBoaWRkZW46IGZhbHNlXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBmb290ZXI6IHtcbiAgICAgICAgdmlld0Zvcm1zQnV0dG9uOiB7XG4gICAgICAgICAgYnlwYXNzQ29uZmlybWF0aW9uOiBmYWxzZSxcbiAgICAgICAgICBoaWRkZW46IGZhbHNlLFxuICAgICAgICAgIGxhYmVsOiBcIlZpZXcgRm9ybXNcIlxuICAgICAgICB9LFxuICAgICAgICBzYXZlQnV0dG9uOiB7XG4gICAgICAgICAgaGlkZGVuOiBmYWxzZSxcbiAgICAgICAgICBsYWJlbDogXCJTYXZlXCJcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07XG5cbiAgICBpZiAoY2hlY2tPYmplY3RLZXlFeGlzdHMoZm9ybUNvbmZpZywgXCJwcm9wZXJ0aWVzXCIpKSB7XG4gICAgICBmb3JtQ29uZmlnLnByb3BlcnRpZXMgPSBnZXRPYmplY3REZWVwQ29weShcbiAgICAgICAgbWVyZ2VPYmplY3RzKGZvcm1WaWV3UHJvcGVydGllcywgZm9ybUNvbmZpZy5wcm9wZXJ0aWVzKVxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZm9ybUNvbmZpZy5wcm9wZXJ0aWVzID0gZm9ybVZpZXdQcm9wZXJ0aWVzO1xuICAgIH1cblxuICAgIHJldHVybiBmb3JtQ29uZmlnO1xuICB9XG5cbiAgQGxvZ01ldGhvZFxuICBjb252ZXJ0Rm9ybUNvbmZpZyhmb3JtQ29uZmlnOiBhbnkpOiBhbnkge1xuICAgIGNvbnN0IGZvcm1hdE9uRmllbGRUeXBlID0gKGZpZWxkOiBhbnkpOiBhbnkgPT4ge1xuICAgICAgY29uc3QgZm9ybWF0RmllbGRUeXBlSHRtbCA9IChmaWVsZDogYW55KTogYW55ID0+IHtcbiAgICAgICAgZmllbGQgPSBzZXRGaWVsZEtleUhpZGRlbihmaWVsZCk7XG4gICAgICAgIGZpZWxkID0gc2V0RmllbGRBc0Zvcm1FbGVtZW50KGZpZWxkLCBmYWxzZSk7XG5cbiAgICAgICAgcmV0dXJuIGZpZWxkO1xuICAgICAgfTtcbiAgICAgIGNvbnN0IGZvcm1hdEZpZWxkVHlwZVRpdGxlID0gKGZpZWxkOiBhbnkpOiBhbnkgPT4ge1xuICAgICAgICBmaWVsZCA9IHNldEZpZWxkS2V5SGlkZGVuKGZpZWxkKTtcbiAgICAgICAgZmllbGQgPSBzZXRGaWVsZEFzRm9ybUVsZW1lbnQoZmllbGQsIGZhbHNlKTtcblxuICAgICAgICByZXR1cm4gZmllbGQ7XG4gICAgICB9O1xuICAgICAgY29uc3QgZm9ybWF0RmllbGRUeXBlVGV4dCA9IChmaWVsZDogYW55KTogYW55ID0+IHtcbiAgICAgICAgZmllbGQgPSBzZXRGaWVsZEtleUhpZGRlbihmaWVsZCk7XG4gICAgICAgIGZpZWxkID0gc2V0RmllbGRBc0Zvcm1FbGVtZW50KGZpZWxkLCB0cnVlKTtcblxuICAgICAgICBmaWVsZC5wcm9wZXJ0aWVzID0gZ2V0T2JqZWN0RGVlcENvcHkoXG4gICAgICAgICAgbWVyZ2VPYmplY3RzKEZJRUxEX1BST1BFUlRJRVNbZmllbGQudHlwZV0sIGZpZWxkLnByb3BlcnRpZXMpXG4gICAgICAgICk7XG5cbiAgICAgICAgcmV0dXJuIGZpZWxkO1xuICAgICAgfTtcbiAgICAgIGNvbnN0IGZvcm1hdEZpZWxkVHlwZVRleHRhcmVhID0gKGZpZWxkOiBhbnkpOiBhbnkgPT4ge1xuICAgICAgICBmaWVsZCA9IHNldEZpZWxkS2V5SGlkZGVuKGZpZWxkKTtcbiAgICAgICAgZmllbGQgPSBzZXRGaWVsZEFzRm9ybUVsZW1lbnQoZmllbGQsIHRydWUpO1xuICAgICAgICByZXR1cm4gZmllbGQ7XG4gICAgICB9O1xuICAgICAgY29uc3QgZm9ybWF0RmllbGRUeXBlQ2hlY2tib3ggPSAoZmllbGQ6IGFueSk6IGFueSA9PiB7XG4gICAgICAgIGZpZWxkID0gc2V0RmllbGRLZXlIaWRkZW4oZmllbGQpO1xuICAgICAgICBmaWVsZCA9IHNldEZpZWxkQXNGb3JtRWxlbWVudChmaWVsZCwgdHJ1ZSk7XG4gICAgICAgIHJldHVybiBmaWVsZDtcbiAgICAgIH07XG4gICAgICBjb25zdCBmb3JtYXRGaWVsZFR5cGVOdW1iZXIgPSAoZmllbGQ6IGFueSk6IGFueSA9PiB7XG4gICAgICAgIGZpZWxkID0gc2V0RmllbGRLZXlIaWRkZW4oZmllbGQpO1xuICAgICAgICBmaWVsZCA9IHNldEZpZWxkQXNGb3JtRWxlbWVudChmaWVsZCwgdHJ1ZSk7XG5cbiAgICAgICAgaWYgKGNoZWNrT2JqZWN0S2V5RXhpc3RzKGZpZWxkLCBcImtleVwiKSkge1xuICAgICAgICAgIGlmIChmaWVsZC5rZXkgPT09IFwiYWFkaGFhcl9udW1iZXJcIikge1xuICAgICAgICAgICAgZmllbGQgPSBzZXRGaWVsZEtleVZhbHVlKGZpZWxkLCBcInR5cGVcIiwgXCJhYWRoYWFyX251bWJlclwiKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGZpZWxkLmtleSA9PT0gXCJjb250YWN0X251bWJlclwiKSB7XG4gICAgICAgICAgICBmaWVsZCA9IHNldEZpZWxkS2V5VmFsdWUoZmllbGQsIFwidHlwZVwiLCBcInBob25lXCIpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChmaWVsZC50eXBlID09PSBcInBob25lXCIgfHwgZmllbGQudHlwZSA9PT0gXCJudW1iZXJcIikge1xuICAgICAgICAgICAgZmllbGQucHJvcGVydGllcyA9IGdldE9iamVjdERlZXBDb3B5KFxuICAgICAgICAgICAgICBtZXJnZU9iamVjdHMoRklFTERfUFJPUEVSVElFU1tmaWVsZC50eXBlXSwgZmllbGQucHJvcGVydGllcylcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGZpZWxkO1xuICAgICAgfTtcbiAgICAgIGNvbnN0IGZvcm1hdEZpZWxkVHlwZUltYWdlID0gKGZpZWxkOiBhbnkpOiBhbnkgPT4ge1xuICAgICAgICBmaWVsZCA9IHNldEZpZWxkS2V5SGlkZGVuKGZpZWxkKTtcbiAgICAgICAgZmllbGQgPSBzZXRGaWVsZEFzRm9ybUVsZW1lbnQoZmllbGQsIHRydWUpO1xuXG4gICAgICAgIGZpZWxkLnByb3BlcnRpZXMgPSBnZXRPYmplY3REZWVwQ29weShcbiAgICAgICAgICBtZXJnZU9iamVjdHMoRklFTERfUFJPUEVSVElFU1tmaWVsZC50eXBlXSwgZmllbGQucHJvcGVydGllcylcbiAgICAgICAgKTtcblxuICAgICAgICByZXR1cm4gZmllbGQ7XG4gICAgICB9O1xuICAgICAgY29uc3QgZm9ybWF0RmllbGRUeXBlRGF0ZSA9IChmaWVsZDogYW55KTogYW55ID0+IHtcbiAgICAgICAgZmllbGQgPSBzZXRGaWVsZEtleUhpZGRlbihmaWVsZCk7XG4gICAgICAgIGZpZWxkID0gc2V0RmllbGRBc0Zvcm1FbGVtZW50KGZpZWxkLCB0cnVlKTtcblxuICAgICAgICBmaWVsZC5wcm9wZXJ0aWVzID0gZ2V0T2JqZWN0RGVlcENvcHkoXG4gICAgICAgICAgbWVyZ2VPYmplY3RzKFxuICAgICAgICAgICAgRklFTERfUFJPUEVSVElFU1tmaWVsZC50eXBlXSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgbWF4OiBnZXRNYXhEYXRlKGZpZWxkKSxcbiAgICAgICAgICAgICAgbWluOiBnZXRNaW5EYXRlKGZpZWxkKVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGZpZWxkLnByb3BlcnRpZXNcbiAgICAgICAgICApXG4gICAgICAgICk7XG5cbiAgICAgICAgcmV0dXJuIGZpZWxkO1xuICAgICAgfTtcbiAgICAgIGNvbnN0IGZvcm1hdEZpZWxkVHlwZVBob25lID0gKGZpZWxkOiBhbnkpOiBhbnkgPT4ge1xuICAgICAgICBmaWVsZCA9IHNldEZpZWxkS2V5SGlkZGVuKGZpZWxkKTtcbiAgICAgICAgZmllbGQgPSBzZXRGaWVsZEFzRm9ybUVsZW1lbnQoZmllbGQsIHRydWUpO1xuICAgICAgICByZXR1cm4gZmllbGQ7XG4gICAgICB9O1xuICAgICAgY29uc3QgZm9ybWF0RmllbGRUeXBlUmFkaW8gPSAoZmllbGQ6IGFueSk6IGFueSA9PiB7XG4gICAgICAgIGZpZWxkID0gc2V0RmllbGRLZXlIaWRkZW4oZmllbGQpO1xuICAgICAgICBmaWVsZCA9IHNldEZpZWxkQXNGb3JtRWxlbWVudChmaWVsZCwgdHJ1ZSk7XG5cbiAgICAgICAgZmllbGQucHJvcGVydGllcyA9IGdldE9iamVjdERlZXBDb3B5KFxuICAgICAgICAgIG1lcmdlT2JqZWN0cyhGSUVMRF9QUk9QRVJUSUVTW2ZpZWxkLnR5cGVdLCBmaWVsZC5wcm9wZXJ0aWVzKVxuICAgICAgICApO1xuXG4gICAgICAgIGZpZWxkLm9wdGlvbnMgPSBmaWVsZC5vcHRpb25zLm1hcCgoeDogYW55KTogYW55ID0+IHtcbiAgICAgICAgICBpZiAodHlwZW9mIHggPT09IFwic3RyaW5nXCIgfHwgdHlwZW9mIHggPT09IFwibnVtYmVyXCIpIHtcbiAgICAgICAgICAgIHJldHVybiB7IGxhYmVsOiB4LCBkaXNhYmxlZDogZmFsc2UsIGRlc2NyaXB0aW9uOiBcIlwiIH07XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgY2hlY2tPYmplY3RLZXlFeGlzdHMoeCwgXCJsYWJlbFwiKSAmJlxuICAgICAgICAgICAgICBjaGVja09iamVjdEtleUV4aXN0cyh4LCBcImRpc2FibGVkXCIpICYmXG4gICAgICAgICAgICAgIGNoZWNrT2JqZWN0S2V5RXhpc3RzKHgsIFwiZGVzY3JpcHRpb25cIilcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICByZXR1cm4geDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghY2hlY2tPYmplY3RLZXlFeGlzdHMoeCwgXCJkaXNhYmxlZFwiKSkge1xuICAgICAgICAgICAgICB4ID0geyAuLi54LCBkaXNhYmxlZDogZmFsc2UgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghY2hlY2tPYmplY3RLZXlFeGlzdHMoeCwgXCJkZXNjcmlwdGlvblwiKSkge1xuICAgICAgICAgICAgICB4ID0geyAuLi54LCBkZXNjcmlwdGlvbjogZmFsc2UgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB4O1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIGZpZWxkO1xuICAgICAgfTtcbiAgICAgIGNvbnN0IGZvcm1hdEZpZWxkVHlwZVNsaWRlciA9IChmaWVsZDogYW55KTogYW55ID0+IHtcbiAgICAgICAgZmllbGQgPSBzZXRGaWVsZEtleUhpZGRlbihmaWVsZCk7XG4gICAgICAgIGZpZWxkID0gc2V0RmllbGRBc0Zvcm1FbGVtZW50KGZpZWxkLCB0cnVlKTtcblxuICAgICAgICBmaWVsZC5wcm9wZXJ0aWVzID0gZ2V0T2JqZWN0RGVlcENvcHkoXG4gICAgICAgICAgbWVyZ2VPYmplY3RzKEZJRUxEX1BST1BFUlRJRVNbZmllbGQudHlwZV0sIGZpZWxkLnByb3BlcnRpZXMpXG4gICAgICAgICk7XG5cbiAgICAgICAgcmV0dXJuIGZpZWxkO1xuICAgICAgfTtcbiAgICAgIGNvbnN0IGZvcm1hdEZpZWxkVHlwZVNlbGVjdCA9IChmaWVsZDogYW55KTogYW55ID0+IHtcbiAgICAgICAgZmllbGQgPSBzZXRGaWVsZEtleUhpZGRlbihmaWVsZCk7XG4gICAgICAgIGZpZWxkID0gc2V0RmllbGRBc0Zvcm1FbGVtZW50KGZpZWxkLCB0cnVlKTtcblxuICAgICAgICByZXR1cm4gZmllbGQ7XG4gICAgICB9O1xuICAgICAgY29uc3QgZm9ybWF0RmllbGRUeXBlQXBpID0gKGZpZWxkOiBhbnkpOiBhbnkgPT4ge1xuICAgICAgICBmaWVsZCA9IHNldEZpZWxkQXNGb3JtRWxlbWVudChmaWVsZCwgdHJ1ZSk7XG5cbiAgICAgICAgZmllbGQucHJvcGVydGllcyA9IGdldE9iamVjdERlZXBDb3B5KFxuICAgICAgICAgIG1lcmdlT2JqZWN0cyhGSUVMRF9QUk9QRVJUSUVTW2ZpZWxkLnR5cGVdLCBmaWVsZC5wcm9wZXJ0aWVzKVxuICAgICAgICApO1xuXG4gICAgICAgIGlmICghY2hlY2tPYmplY3RLZXlFeGlzdHMoZmllbGQsIFwic2hvd0xvYWRlclwiKSkge1xuICAgICAgICAgIGZpZWxkID0gc2V0RmllbGRLZXlWYWx1ZShmaWVsZCwgXCJzaG93TG9hZGVyXCIsIGZhbHNlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghY2hlY2tPYmplY3RLZXlFeGlzdHMoZmllbGQsIFwiYXBpXCIpKSB7XG4gICAgICAgICAgY29uc3QgZmllbGRBcGlEZWZhdWx0cyA9IHtcbiAgICAgICAgICAgIHVybDogXCJcIixcbiAgICAgICAgICAgIHJlcXVlc3Q6IHt9LFxuICAgICAgICAgICAgcmVzcG9uc2U6IHt9LFxuICAgICAgICAgICAgc3RhdHVzOiB7XG4gICAgICAgICAgICAgIHZhbHVlOiBcImRlZmF1bHRcIixcbiAgICAgICAgICAgICAgbGFiZWxzOiB7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDogXCJDYWxsIEFQSVwiLFxuICAgICAgICAgICAgICAgIGxvYWRpbmc6IFwiQ2FsbCBBUElcIixcbiAgICAgICAgICAgICAgICBzdWNjZXNzOiBcIkFQSSBTdWNjZXNzXCIsXG4gICAgICAgICAgICAgICAgZmFpbGVkOiBcIkFQSSBGYWlsZWRcIlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfTtcbiAgICAgICAgICBmaWVsZC5hcGkgPSBnZXRPYmplY3REZWVwQ29weShcbiAgICAgICAgICAgIG1lcmdlT2JqZWN0cyhmaWVsZEFwaURlZmF1bHRzLCBmaWVsZEFwaURlZmF1bHRzKVxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKFxuICAgICAgICAgICFjaGVja09iamVjdEtleUV4aXN0cyhmaWVsZC5hcGksIFwicmVxdWVzdFwiKSAmJlxuICAgICAgICAgICFjaGVja09iamVjdEtleUV4aXN0cyhmaWVsZC5hcGksIFwiZW50cnlwb2ludFwiKVxuICAgICAgICApIHtcbiAgICAgICAgICBjb25zdCBhcGlFbnRyeXBvaW50ID0ge1xuICAgICAgICAgICAgdHJpZ2dlcnM6IFtcIk9OX0FQSV9DQUxMXCJdLFxuICAgICAgICAgICAgcnVsZXM6IFtdLFxuICAgICAgICAgICAgYWN0aW9uczogW1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgaWQ6IFwiMVwiLFxuICAgICAgICAgICAgICAgIGtleTogXCJBUElfQ0FMTFwiLFxuICAgICAgICAgICAgICAgIGNvbmRpdGlvbjogXCJ0cnVlXCIsXG4gICAgICAgICAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICAgICAgICAgIGZpZWxkS2V5OiBmaWVsZC5rZXksXG4gICAgICAgICAgICAgICAgICBhcGlLZXk6IGZpZWxkLmFwaS5lbmRwb2ludHNbMF0uYXBpS2V5XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdXG4gICAgICAgICAgfTtcbiAgICAgICAgICBmaWVsZC5lbnRyeXBvaW50ID0gZ2V0T2JqZWN0RGVlcENvcHkoXG4gICAgICAgICAgICBtZXJnZU9iamVjdHMoYXBpRW50cnlwb2ludCwgZmllbGQuYXBpKVxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZpZWxkO1xuICAgICAgfTtcbiAgICAgIGNvbnN0IGZvcm1hdEZpZWxkVHlwZU90cCA9IChmaWVsZDogYW55KTogYW55ID0+IHtcbiAgICAgICAgZmllbGQgPSBzZXRGaWVsZEtleUhpZGRlbihmaWVsZCk7XG4gICAgICAgIGZpZWxkID0gc2V0RmllbGRBc0Zvcm1FbGVtZW50KGZpZWxkLCB0cnVlKTtcblxuICAgICAgICBmaWVsZC5wcm9wZXJ0aWVzID0gZ2V0T2JqZWN0RGVlcENvcHkoXG4gICAgICAgICAgbWVyZ2VPYmplY3RzKFxuICAgICAgICAgICAgRklFTERfUFJPUEVSVElFU1tmaWVsZC50eXBlXSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgbWFzazogbmV3IEFycmF5KGZpZWxkPy5wcm9wZXJ0aWVzPy5vdHBMZW5ndGggPz8gNClcbiAgICAgICAgICAgICAgICAuZmlsbChcIiNcIilcbiAgICAgICAgICAgICAgICAuam9pbihcIiBcIilcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBmaWVsZC5wcm9wZXJ0aWVzXG4gICAgICAgICAgKVxuICAgICAgICApO1xuXG4gICAgICAgIHJldHVybiBmaWVsZDtcbiAgICAgIH07XG4gICAgICBjb25zdCBmb3JtYXRGaWVsZFR5cGVBYWRoYWFyTnVtYmVyID0gKGZpZWxkOiBhbnkpOiBhbnkgPT4ge1xuICAgICAgICBmaWVsZCA9IHNldEZpZWxkS2V5SGlkZGVuKGZpZWxkKTtcbiAgICAgICAgZmllbGQgPSBzZXRGaWVsZEFzRm9ybUVsZW1lbnQoZmllbGQsIHRydWUpO1xuXG4gICAgICAgIHJldHVybiBmaWVsZDtcbiAgICAgIH07XG4gICAgICBjb25zdCBmb3JtYXRGaWVsZFR5cGVGaWxlID0gKGZpZWxkOiBhbnkpOiBhbnkgPT4ge1xuICAgICAgICBmaWVsZCA9IHNldEZpZWxkS2V5SGlkZGVuKGZpZWxkKTtcbiAgICAgICAgZmllbGQgPSBzZXRGaWVsZEFzRm9ybUVsZW1lbnQoZmllbGQsIHRydWUpO1xuXG4gICAgICAgIGZpZWxkLnByb3BlcnRpZXMgPSBnZXRPYmplY3REZWVwQ29weShcbiAgICAgICAgICBtZXJnZU9iamVjdHMoRklFTERfUFJPUEVSVElFU1tmaWVsZC50eXBlXSwgZmllbGQucHJvcGVydGllcylcbiAgICAgICAgKTtcblxuICAgICAgICByZXR1cm4gZmllbGQ7XG4gICAgICB9O1xuXG4gICAgICBzd2l0Y2ggKGZpZWxkLnR5cGUpIHtcbiAgICAgICAgY2FzZSBFRmllbGRUeXBlLkhUTUw6XG4gICAgICAgICAgZmllbGQgPSBmb3JtYXRGaWVsZFR5cGVIdG1sKGZpZWxkKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBFRmllbGRUeXBlLlRJVExFOlxuICAgICAgICAgIGZpZWxkID0gZm9ybWF0RmllbGRUeXBlVGl0bGUoZmllbGQpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIEVGaWVsZFR5cGUuVEVYVDpcbiAgICAgICAgICBmaWVsZCA9IGZvcm1hdEZpZWxkVHlwZVRleHQoZmllbGQpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIEVGaWVsZFR5cGUuVEVYVEFSRUE6XG4gICAgICAgICAgZmllbGQgPSBmb3JtYXRGaWVsZFR5cGVUZXh0YXJlYShmaWVsZCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgRUZpZWxkVHlwZS5DSEVDS0JPWDpcbiAgICAgICAgICBmaWVsZCA9IGZvcm1hdEZpZWxkVHlwZUNoZWNrYm94KGZpZWxkKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBFRmllbGRUeXBlLk5VTUJFUjpcbiAgICAgICAgICBmaWVsZCA9IGZvcm1hdEZpZWxkVHlwZU51bWJlcihmaWVsZCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgRUZpZWxkVHlwZS5QUkVWSUVXX0lNQUdFOlxuICAgICAgICAgIGZpZWxkID0gc2V0RmllbGRLZXlWYWx1ZShmaWVsZCwgXCJ0eXBlXCIsIFwiaW1hZ2VcIik7XG4gICAgICAgICAgZmllbGQgPSBmb3JtYXRGaWVsZFR5cGVJbWFnZShmaWVsZCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgRUZpZWxkVHlwZS5JTUFHRTpcbiAgICAgICAgICBmaWVsZCA9IGZvcm1hdEZpZWxkVHlwZUltYWdlKGZpZWxkKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBFRmllbGRUeXBlLkRBVEU6XG4gICAgICAgICAgZmllbGQgPSBmb3JtYXRGaWVsZFR5cGVEYXRlKGZpZWxkKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBFRmllbGRUeXBlLlBIT05FOlxuICAgICAgICAgIGZpZWxkID0gZm9ybWF0RmllbGRUeXBlUGhvbmUoZmllbGQpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIEVGaWVsZFR5cGUuUkFESU86XG4gICAgICAgICAgZmllbGQgPSBmb3JtYXRGaWVsZFR5cGVSYWRpbyhmaWVsZCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgRUZpZWxkVHlwZS5TTElERVI6XG4gICAgICAgICAgZmllbGQgPSBmb3JtYXRGaWVsZFR5cGVTbGlkZXIoZmllbGQpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFwic2VhcmNoLXRleHRcIjpcbiAgICAgICAgICBmaWVsZCA9IHNldEZpZWxkS2V5VmFsdWUoZmllbGQsIFwidHlwZVwiLCBcInNlbGVjdFwiKTtcbiAgICAgICAgICBmaWVsZCA9IGZvcm1hdEZpZWxkVHlwZVNlbGVjdChmaWVsZCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgRUZpZWxkVHlwZS5EUk9QRE9XTl9XSVRIX1NFQVJDSDpcbiAgICAgICAgICBmaWVsZCA9IHNldEZpZWxkS2V5VmFsdWUoZmllbGQsIFwidHlwZVwiLCBcInNlbGVjdFwiKTtcbiAgICAgICAgICBmaWVsZCA9IGZvcm1hdEZpZWxkVHlwZVNlbGVjdChmaWVsZCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgRUZpZWxkVHlwZS5TRUxFQ1Q6XG4gICAgICAgICAgZmllbGQgPSBmb3JtYXRGaWVsZFR5cGVTZWxlY3QoZmllbGQpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIEVGaWVsZFR5cGUuQVBJX0NBTEw6XG4gICAgICAgICAgZmllbGQgPSBzZXRGaWVsZEtleVZhbHVlKGZpZWxkLCBcInR5cGVcIiwgXCJhcGlcIik7XG4gICAgICAgICAgZmllbGQgPSBmb3JtYXRGaWVsZFR5cGVBcGkoZmllbGQpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIEVGaWVsZFR5cGUuQVBJOlxuICAgICAgICAgIGZpZWxkID0gZm9ybWF0RmllbGRUeXBlQXBpKGZpZWxkKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBFRmllbGRUeXBlLk9UUDpcbiAgICAgICAgICBmaWVsZCA9IGZvcm1hdEZpZWxkVHlwZU90cChmaWVsZCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgRUZpZWxkVHlwZS5BQURIQUFSX05VTUJFUjpcbiAgICAgICAgICBmaWVsZCA9IGZvcm1hdEZpZWxkVHlwZUFhZGhhYXJOdW1iZXIoZmllbGQpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIEVGaWVsZFR5cGUuRklMRTpcbiAgICAgICAgICBmaWVsZCA9IGZvcm1hdEZpZWxkVHlwZUZpbGUoZmllbGQpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gZmllbGQ7XG4gICAgfTtcblxuICAgIGNvbnN0IHVwZGF0ZUZpZWxkVmFsaWRhdG9ycyA9IChmaWVsZDogYW55KTogYW55ID0+IHtcbiAgICAgIGlmIChmaWVsZC5pc0Zvcm1FbGVtZW50KSB7XG4gICAgICAgIGNvbnN0IHZhbGlkYXRvcnMgPSBjaGVja09iamVjdEtleUV4aXN0cyhmaWVsZCwgXCJ2YWxpZGF0b3JzXCIpXG4gICAgICAgICAgPyBmaWVsZC52YWxpZGF0b3JzXG4gICAgICAgICAgOiB7fTtcblxuICAgICAgICBmaWVsZCA9IHNldE1pc3NpbmdGaWVsZEtleVZhbHVlKGZpZWxkLCBcInZhbGlkYXRvcnNcIiwge30pO1xuXG4gICAgICAgIGZpZWxkID0gc2V0RmllbGRLZXlWYWx1ZShmaWVsZCwgXCJ2YWxpZGF0b3JzXCIsIHtcbiAgICAgICAgICAuLi5maWVsZFtcInZhbGlkYXRvcnNcIl0sXG4gICAgICAgICAgbWluOiBjaGVja09iamVjdEtleUV4aXN0cyh2YWxpZGF0b3JzLCBcIm1pblwiKVxuICAgICAgICAgICAgPyBpc05vdEVtcHR5VmFsdWUodmFsaWRhdG9ycy5taW4pXG4gICAgICAgICAgICAgID8gTnVtYmVyKHZhbGlkYXRvcnMubWluKVxuICAgICAgICAgICAgICA6IG51bGxcbiAgICAgICAgICAgIDogY2hlY2tPYmplY3RLZXlFeGlzdHMoZmllbGQsIFwibWluXCIpXG4gICAgICAgICAgICA/IE51bWJlcihmaWVsZC5taW4pXG4gICAgICAgICAgICA6IG51bGwsXG4gICAgICAgICAgbWF4OiBjaGVja09iamVjdEtleUV4aXN0cyh2YWxpZGF0b3JzLCBcIm1heFwiKVxuICAgICAgICAgICAgPyBpc05vdEVtcHR5VmFsdWUodmFsaWRhdG9ycy5tYXgpXG4gICAgICAgICAgICAgID8gTnVtYmVyKHZhbGlkYXRvcnMubWF4KVxuICAgICAgICAgICAgICA6IG51bGxcbiAgICAgICAgICAgIDogY2hlY2tPYmplY3RLZXlFeGlzdHMoZmllbGQsIFwibWF4XCIpXG4gICAgICAgICAgICA/IE51bWJlcihmaWVsZC5tYXgpXG4gICAgICAgICAgICA6IG51bGwsXG4gICAgICAgICAgcmVxdWlyZWQ6IGNoZWNrT2JqZWN0S2V5RXhpc3RzKHZhbGlkYXRvcnMsIFwicmVxdWlyZWRcIilcbiAgICAgICAgICAgID8gQm9vbGVhbih2YWxpZGF0b3JzLnJlcXVpcmVkKVxuICAgICAgICAgICAgOiBjaGVja09iamVjdEtleUV4aXN0cyhmaWVsZCwgXCJyZXF1aXJlZFwiKVxuICAgICAgICAgICAgPyBCb29sZWFuKGZpZWxkLnJlcXVpcmVkKVxuICAgICAgICAgICAgOiBmYWxzZSxcbiAgICAgICAgICBtaW5MZW5ndGg6IGNoZWNrT2JqZWN0S2V5RXhpc3RzKHZhbGlkYXRvcnMsIFwibWluTGVuZ3RoXCIpXG4gICAgICAgICAgICA/IGlzTm90RW1wdHlWYWx1ZSh2YWxpZGF0b3JzLm1pbkxlbmd0aClcbiAgICAgICAgICAgICAgPyBOdW1iZXIodmFsaWRhdG9ycy5taW5MZW5ndGgpXG4gICAgICAgICAgICAgIDogbnVsbFxuICAgICAgICAgICAgOiBjaGVja09iamVjdEtleUV4aXN0cyhmaWVsZCwgXCJtaW5MZW5ndGhcIilcbiAgICAgICAgICAgID8gTnVtYmVyKGZpZWxkLm1pbkxlbmd0aClcbiAgICAgICAgICAgIDogbnVsbCxcbiAgICAgICAgICBtYXhMZW5ndGg6IGNoZWNrT2JqZWN0S2V5RXhpc3RzKHZhbGlkYXRvcnMsIFwibWF4TGVuZ3RoXCIpXG4gICAgICAgICAgICA/IGlzTm90RW1wdHlWYWx1ZSh2YWxpZGF0b3JzLm1heExlbmd0aClcbiAgICAgICAgICAgICAgPyBOdW1iZXIodmFsaWRhdG9ycy5tYXhMZW5ndGgpXG4gICAgICAgICAgICAgIDogbnVsbFxuICAgICAgICAgICAgOiBjaGVja09iamVjdEtleUV4aXN0cyhmaWVsZCwgXCJsZW5ndGhcIilcbiAgICAgICAgICAgID8gTnVtYmVyKGZpZWxkLmxlbmd0aClcbiAgICAgICAgICAgIDogY2hlY2tPYmplY3RLZXlFeGlzdHMoZmllbGQsIFwibWF4TGVuZ3RoXCIpXG4gICAgICAgICAgICA/IE51bWJlcihmaWVsZC5tYXhMZW5ndGgpXG4gICAgICAgICAgICA6IG51bGwsXG4gICAgICAgICAgcGF0dGVybjogY2hlY2tPYmplY3RLZXlFeGlzdHModmFsaWRhdG9ycywgXCJwYXR0ZXJuXCIpXG4gICAgICAgICAgICA/IGlzTm90RW1wdHlWYWx1ZSh2YWxpZGF0b3JzLnBhdHRlcm4pXG4gICAgICAgICAgICAgID8gdmFsaWRhdG9ycy5wYXR0ZXJuXG4gICAgICAgICAgICAgIDogdW5kZWZpbmVkXG4gICAgICAgICAgICA6IGNoZWNrT2JqZWN0S2V5RXhpc3RzKGZpZWxkLCBcInBhdHRlcm5cIilcbiAgICAgICAgICAgID8geyBrZXk6IFwiQ1VTVE9NXCIsIHBhdHRlcm46IFN0cmluZyhmaWVsZC5wYXR0ZXJuKSB9XG4gICAgICAgICAgICA6IGNoZWNrT2JqZWN0S2V5RXhpc3RzKGZpZWxkLCBcInJlZ2V4XCIpXG4gICAgICAgICAgICA/IHsga2V5OiBcIkNVU1RPTVwiLCBwYXR0ZXJuOiBTdHJpbmcoZmllbGQucmVnZXgpIH1cbiAgICAgICAgICAgIDogdW5kZWZpbmVkXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGRlbGV0ZSBmaWVsZC5taW47XG4gICAgICAgIGRlbGV0ZSBmaWVsZC5tYXg7XG4gICAgICAgIGRlbGV0ZSBmaWVsZC5yZXF1aXJlZDtcbiAgICAgICAgZGVsZXRlIGZpZWxkLm1pbkxlbmd0aDtcbiAgICAgICAgZGVsZXRlIGZpZWxkLmxlbmd0aDtcbiAgICAgICAgZGVsZXRlIGZpZWxkLm1heExlbmd0aDtcbiAgICAgICAgZGVsZXRlIGZpZWxkLnBhdHRlcm47XG4gICAgICAgIGRlbGV0ZSBmaWVsZC5yZWdleDtcblxuICAgICAgICBzd2l0Y2ggKGZpZWxkLnR5cGUpIHtcbiAgICAgICAgICBjYXNlIEVGaWVsZFR5cGUuVEVYVDpcbiAgICAgICAgICAgIGRlbGV0ZSBmaWVsZC52YWxpZGF0b3JzLm1pbjtcbiAgICAgICAgICAgIGRlbGV0ZSBmaWVsZC52YWxpZGF0b3JzLm1heDtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgRUZpZWxkVHlwZS5DSEVDS0JPWDpcbiAgICAgICAgICAgIGRlbGV0ZSBmaWVsZC52YWxpZGF0b3JzLm1pbjtcbiAgICAgICAgICAgIGRlbGV0ZSBmaWVsZC52YWxpZGF0b3JzLm1heDtcbiAgICAgICAgICBjYXNlIEVGaWVsZFR5cGUuUFJFVklFV19JTUFHRTpcbiAgICAgICAgICAgIGRlbGV0ZSBmaWVsZC52YWxpZGF0b3JzLm1pbjtcbiAgICAgICAgICAgIGRlbGV0ZSBmaWVsZC52YWxpZGF0b3JzLm1heDtcbiAgICAgICAgICAgIGRlbGV0ZSBmaWVsZC52YWxpZGF0b3JzLm1pbkxlbmd0aDtcbiAgICAgICAgICAgIGRlbGV0ZSBmaWVsZC52YWxpZGF0b3JzLm1heExlbmd0aDtcbiAgICAgICAgICBjYXNlIEVGaWVsZFR5cGUuRklMRTpcbiAgICAgICAgICAgIGRlbGV0ZSBmaWVsZC52YWxpZGF0b3JzLm1pbjtcbiAgICAgICAgICAgIGRlbGV0ZSBmaWVsZC52YWxpZGF0b3JzLm1heDtcbiAgICAgICAgICAgIGRlbGV0ZSBmaWVsZC52YWxpZGF0b3JzLm1pbkxlbmd0aDtcbiAgICAgICAgICAgIGRlbGV0ZSBmaWVsZC52YWxpZGF0b3JzLm1heExlbmd0aDtcbiAgICAgICAgICAgIGRlbGV0ZSBmaWVsZC52YWxpZGF0b3JzLnBhdHRlcm47XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaXNFbXB0eVZhbHVlKGZpZWxkLnZhbGlkYXRvcnM/Lm1pbikpIHtcbiAgICAgICAgICBkZWxldGUgZmllbGQudmFsaWRhdG9ycy5taW47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlzRW1wdHlWYWx1ZShmaWVsZC52YWxpZGF0b3JzPy5tYXgpKSB7XG4gICAgICAgICAgZGVsZXRlIGZpZWxkLnZhbGlkYXRvcnMubWluO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpc0VtcHR5VmFsdWUoZmllbGQudmFsaWRhdG9ycz8ubWluTGVuZ3RoKSkge1xuICAgICAgICAgIGRlbGV0ZSBmaWVsZC52YWxpZGF0b3JzLm1pbkxlbmd0aDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNFbXB0eVZhbHVlKGZpZWxkLnZhbGlkYXRvcnM/Lm1heExlbmd0aCkpIHtcbiAgICAgICAgICBkZWxldGUgZmllbGQudmFsaWRhdG9ycy5tYXhMZW5ndGg7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlzRW1wdHlWYWx1ZShmaWVsZC52YWxpZGF0b3JzPy5wYXR0ZXJuKSkge1xuICAgICAgICAgIGRlbGV0ZSBmaWVsZC52YWxpZGF0b3JzLnBhdHRlcm47XG4gICAgICAgIH1cblxuICAgICAgICBmaWVsZC5mb2N1cyA9IGZhbHNlO1xuICAgICAgICBmaWVsZC5pbnZhbGlkID0gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBmaWVsZDtcbiAgICB9O1xuXG4gICAgY29uc3QgdXBkYXRlRmllbGREZWZhdWx0VmFsdWUgPSAoZmllbGQ6IGFueSk6IGFueSA9PiB7XG4gICAgICBjb25zdCBkZWZhdWx0VmFsdWUgPSB7XG4gICAgICAgIHZhbHVlOiB7XG4gICAgICAgICAgaXNfZm91bmQ6IGZhbHNlLFxuICAgICAgICAgIHZhbHVlOiBcIlwiLFxuICAgICAgICAgIHNvdXJjZXM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAga2V5OiBcIk9CSkVDVFwiLFxuICAgICAgICAgICAgICBwcm9wczoge1xuICAgICAgICAgICAgICAgIG9iamVjdDoge1xuICAgICAgICAgICAgICAgICAga2V5OiBcIkZPUk1fREFUQVwiLFxuICAgICAgICAgICAgICAgICAgcGF0aDogYCQuJHtmaWVsZC5rZXl9YFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgdmFsdWU6IFwiXCIsXG4gICAgICAgICAgICAgIHZhbGlkYXRpb246IHtcbiAgICAgICAgICAgICAgICBpc192YWxpZDogZmFsc2UsXG4gICAgICAgICAgICAgICAgdHJpZ2dlcnM6IFtcIk9OX0lOSVRcIl0sXG4gICAgICAgICAgICAgICAgcnVsZXM6IFtdLFxuICAgICAgICAgICAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiMVwiLFxuICAgICAgICAgICAgICAgICAgICBrZXk6IFwiU0VUX0ZJRUxEX0RFRkFVTFRfVkFMVUVcIixcbiAgICAgICAgICAgICAgICAgICAgY29uZGl0aW9uOiBcIjFcIixcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICAgICAgICAgICAgICB2YWx1ZToge1xuICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogXCJPQkpFQ1RcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYmplY3Q6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogXCJGT1JNX0RBVEFcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGg6IGAkLiR7ZmllbGQua2V5fWBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICBdXG4gICAgICAgIH1cbiAgICAgIH07XG5cbiAgICAgIGlmIChmaWVsZC5pc0Zvcm1FbGVtZW50KSB7XG4gICAgICAgIGlmIChjaGVja09iamVjdEtleUV4aXN0cyhmaWVsZCwgXCJkZWZhdWx0VmFsdWVcIikpIHtcbiAgICAgICAgICByZXR1cm4gZmllbGQ7XG4gICAgICAgIH0gZWxzZSBpZiAoY2hlY2tPYmplY3RQYXRoRXhpc3RzKGZpZWxkLCBcImRlZmF1bHQudmFsdWUuc291cmNlc1wiKSkge1xuICAgICAgICAgIHJldHVybiBmaWVsZDtcbiAgICAgICAgfSBlbHNlIGlmICghY2hlY2tPYmplY3RQYXRoRXhpc3RzKGZpZWxkLCBcImRlZmF1bHQudmFsdWUuc291cmNlc1wiKSkge1xuICAgICAgICAgIGZpZWxkID0gc2V0RmllbGRLZXlWYWx1ZShmaWVsZCwgXCJkZWZhdWx0XCIsIGRlZmF1bHRWYWx1ZSk7XG4gICAgICAgICAgcmV0dXJuIGZpZWxkO1xuICAgICAgICB9XG5cbiAgICAgICAgZGVsZXRlIGZpZWxkW1wiZGVmYXVsdFZhbFwiXTtcbiAgICAgICAgZGVsZXRlIGZpZWxkW1wiZGVmYXVsdFZhbHVlXCJdO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gZmllbGQ7XG4gICAgfTtcblxuICAgIGNvbnN0IHVwZGF0ZUZpZWxkRGlzYWJpbGl0eSA9IChmaWVsZDogYW55KTogYW55ID0+IHtcbiAgICAgIGZpZWxkID0gc2V0TWlzc2luZ0tleVZhbHVlKGZpZWxkLCBcImRpc2FibGVkXCIsIGZhbHNlKTtcblxuICAgICAgcmV0dXJuIGZpZWxkO1xuICAgIH07XG5cbiAgICBjb25zdCB1cGRhdGVGaWVsZE1lc3NhZ2VzID0gKGZpZWxkOiBhbnkpOiBhbnkgPT4ge1xuICAgICAgaWYgKGZpZWxkLmlzRm9ybUVsZW1lbnQpIHtcbiAgICAgICAgZmllbGQgPSBzZXRNaXNzaW5nRmllbGRLZXlWYWx1ZShmaWVsZCwgXCJtZXNzYWdlc1wiLCBbXSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBmaWVsZDtcbiAgICB9O1xuXG4gICAgY29uc3QgdXBkYXRlRmllbGRSZXNldEJ1dHRvbiA9IChmaWVsZDogYW55KTogYW55ID0+IHtcbiAgICAgIGlmIChmaWVsZC5pc0Zvcm1FbGVtZW50KSB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICBjaGVja09iamVjdEtleUV4aXN0cyhmaWVsZCwgXCJhY3Rpb25cIikgJiZcbiAgICAgICAgICBmaWVsZC5hY3Rpb24gPT09IFwicmVzZXRcIiAmJlxuICAgICAgICAgIGNoZWNrT2JqZWN0S2V5RXhpc3RzKGZpZWxkLCBcImZpZWxkc1wiKVxuICAgICAgICApIHtcbiAgICAgICAgICBmaWVsZCA9IHNldEZpZWxkS2V5VmFsdWUoZmllbGQsIFwicmVzZXRcIiwge1xuICAgICAgICAgICAgZmllbGRzOiBmaWVsZC5maWVsZHNcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gZmllbGQ7XG4gICAgfTtcblxuICAgIGNvbnN0IHNldEZvcm1GaWVsZHMgPSAoZm9ybUNvbmZpZzogYW55LCBmaWVsZHM6IGFueVtdKTogYW55ID0+IHtcbiAgICAgIGlmIChjaGVja09iamVjdEtleUV4aXN0cyhmb3JtQ29uZmlnLCBcIm11bHRpRm9ybVwiKSkge1xuICAgICAgICBmb3JtQ29uZmlnLm11bHRpRm9ybVtcImZpZWxkc1wiXSA9IGZpZWxkcztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGZvcm1Db25maWdbXCJmaWVsZHNcIl0gPSBmaWVsZHM7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBmb3JtQ29uZmlnO1xuICAgIH07XG5cbiAgICBjb25zdCBzZXRGb3JtRmllbGRHcm91cHMgPSAoZm9ybUNvbmZpZzogYW55LCBncm91cHM6IGFueSk6IGFueSA9PiB7XG4gICAgICBmb3JtQ29uZmlnW1wiZmllbGRHcm91cHNcIl0gPSBncm91cHM7XG5cbiAgICAgIHJldHVybiBmb3JtQ29uZmlnO1xuICAgIH07XG5cbiAgICBjb25zdCB1cGRhdGVGb3JtRmllbGRHcm91cHMgPSAoZmllbGRHcm91cHM6IGFueSwgZmllbGQ6IGFueSk6IGFueSA9PiB7XG4gICAgICBpZiAoY2hlY2tPYmplY3RLZXlFeGlzdHMoZmllbGQsIFwiZ3JvdXBLZXlcIikpIHtcbiAgICAgICAgaWYgKGNoZWNrT2JqZWN0S2V5RXhpc3RzKGZpZWxkR3JvdXBzLCBmaWVsZC5ncm91cEtleSkpIHtcbiAgICAgICAgICBmaWVsZEdyb3Vwc1tmaWVsZC5ncm91cEtleV0ucHVzaChmaWVsZC5rZXkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGZpZWxkR3JvdXBzW2ZpZWxkLmdyb3VwS2V5XSA9IFtmaWVsZC5rZXldO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBmaWVsZEdyb3VwcztcbiAgICB9O1xuXG4gICAgbGV0IGZpZWxkczogYW55W10gPSBnZXRGb3JtRmllbGRzKGZvcm1Db25maWcpO1xuXG4gICAgbGV0IGZpZWxkR3JvdXBzOiBhbnkgPSB7fTtcblxuICAgIGZvciAobGV0IGZpZWxkIG9mIGZpZWxkcykge1xuICAgICAgZmllbGQgPSBmb3JtYXRPbkZpZWxkVHlwZShmaWVsZCk7XG5cbiAgICAgIGZpZWxkID0gdXBkYXRlRmllbGREaXNhYmlsaXR5KGZpZWxkKTtcblxuICAgICAgZmllbGRHcm91cHMgPSB1cGRhdGVGb3JtRmllbGRHcm91cHMoZmllbGRHcm91cHMsIGZpZWxkKTtcblxuICAgICAgZmllbGQgPSB1cGRhdGVGaWVsZERlZmF1bHRWYWx1ZShmaWVsZCk7XG5cbiAgICAgIGZpZWxkID0gdXBkYXRlRmllbGRWYWxpZGF0b3JzKGZpZWxkKTtcblxuICAgICAgZmllbGQgPSB1cGRhdGVGaWVsZFJlc2V0QnV0dG9uKGZpZWxkKTtcblxuICAgICAgZmllbGQgPSB1cGRhdGVGaWVsZE1lc3NhZ2VzKGZpZWxkKTtcbiAgICB9XG5cbiAgICBmb3JtQ29uZmlnID0gc2V0Rm9ybUZpZWxkR3JvdXBzKGZvcm1Db25maWcsIGZpZWxkR3JvdXBzKTtcblxuICAgIGZvcm1Db25maWcgPSBzZXRGb3JtRmllbGRzKGZvcm1Db25maWcsIGZpZWxkcyk7XG5cbiAgICByZXR1cm4gZm9ybUNvbmZpZztcbiAgfVxufVxuIl19
|
package/fesm2015/kwikid-forms.js
CHANGED
|
@@ -575,7 +575,7 @@ class Converter {
|
|
|
575
575
|
}
|
|
576
576
|
};
|
|
577
577
|
if (checkObjectKeyExists(formConfig, "properties")) {
|
|
578
|
-
formConfig.properties = mergeObjects(formViewProperties, formConfig.properties);
|
|
578
|
+
formConfig.properties = getObjectDeepCopy(mergeObjects(formViewProperties, formConfig.properties));
|
|
579
579
|
}
|
|
580
580
|
else {
|
|
581
581
|
formConfig.properties = formViewProperties;
|
|
@@ -597,7 +597,7 @@ class Converter {
|
|
|
597
597
|
const formatFieldTypeText = (field) => {
|
|
598
598
|
field = setFieldKeyHidden(field);
|
|
599
599
|
field = setFieldAsFormElement(field, true);
|
|
600
|
-
field.properties = mergeObjects(FIELD_PROPERTIES[field.type], field.properties);
|
|
600
|
+
field.properties = getObjectDeepCopy(mergeObjects(FIELD_PROPERTIES[field.type], field.properties));
|
|
601
601
|
return field;
|
|
602
602
|
};
|
|
603
603
|
const formatFieldTypeTextarea = (field) => {
|
|
@@ -621,7 +621,7 @@ class Converter {
|
|
|
621
621
|
field = setFieldKeyValue(field, "type", "phone");
|
|
622
622
|
}
|
|
623
623
|
if (field.type === "phone" || field.type === "number") {
|
|
624
|
-
field.properties = mergeObjects(FIELD_PROPERTIES[field.type], field.properties);
|
|
624
|
+
field.properties = getObjectDeepCopy(mergeObjects(FIELD_PROPERTIES[field.type], field.properties));
|
|
625
625
|
}
|
|
626
626
|
}
|
|
627
627
|
return field;
|
|
@@ -629,16 +629,16 @@ class Converter {
|
|
|
629
629
|
const formatFieldTypeImage = (field) => {
|
|
630
630
|
field = setFieldKeyHidden(field);
|
|
631
631
|
field = setFieldAsFormElement(field, true);
|
|
632
|
-
field.properties = mergeObjects(FIELD_PROPERTIES[field.type], field.properties);
|
|
632
|
+
field.properties = getObjectDeepCopy(mergeObjects(FIELD_PROPERTIES[field.type], field.properties));
|
|
633
633
|
return field;
|
|
634
634
|
};
|
|
635
635
|
const formatFieldTypeDate = (field) => {
|
|
636
636
|
field = setFieldKeyHidden(field);
|
|
637
637
|
field = setFieldAsFormElement(field, true);
|
|
638
|
-
field.properties = mergeObjects(FIELD_PROPERTIES[field.type], {
|
|
638
|
+
field.properties = getObjectDeepCopy(mergeObjects(FIELD_PROPERTIES[field.type], {
|
|
639
639
|
max: getMaxDate(field),
|
|
640
640
|
min: getMinDate(field)
|
|
641
|
-
}, field.properties);
|
|
641
|
+
}, field.properties));
|
|
642
642
|
return field;
|
|
643
643
|
};
|
|
644
644
|
const formatFieldTypePhone = (field) => {
|
|
@@ -649,7 +649,7 @@ class Converter {
|
|
|
649
649
|
const formatFieldTypeRadio = (field) => {
|
|
650
650
|
field = setFieldKeyHidden(field);
|
|
651
651
|
field = setFieldAsFormElement(field, true);
|
|
652
|
-
field.properties = mergeObjects(FIELD_PROPERTIES[field.type], field.properties);
|
|
652
|
+
field.properties = getObjectDeepCopy(mergeObjects(FIELD_PROPERTIES[field.type], field.properties));
|
|
653
653
|
field.options = field.options.map((x) => {
|
|
654
654
|
if (typeof x === "string" || typeof x === "number") {
|
|
655
655
|
return { label: x, disabled: false, description: "" };
|
|
@@ -674,7 +674,7 @@ class Converter {
|
|
|
674
674
|
const formatFieldTypeSlider = (field) => {
|
|
675
675
|
field = setFieldKeyHidden(field);
|
|
676
676
|
field = setFieldAsFormElement(field, true);
|
|
677
|
-
field.properties = mergeObjects(FIELD_PROPERTIES[field.type], field.properties);
|
|
677
|
+
field.properties = getObjectDeepCopy(mergeObjects(FIELD_PROPERTIES[field.type], field.properties));
|
|
678
678
|
return field;
|
|
679
679
|
};
|
|
680
680
|
const formatFieldTypeSelect = (field) => {
|
|
@@ -684,7 +684,7 @@ class Converter {
|
|
|
684
684
|
};
|
|
685
685
|
const formatFieldTypeApi = (field) => {
|
|
686
686
|
field = setFieldAsFormElement(field, true);
|
|
687
|
-
field.properties = mergeObjects(FIELD_PROPERTIES[field.type], field.properties);
|
|
687
|
+
field.properties = getObjectDeepCopy(mergeObjects(FIELD_PROPERTIES[field.type], field.properties));
|
|
688
688
|
if (!checkObjectKeyExists(field, "showLoader")) {
|
|
689
689
|
field = setFieldKeyValue(field, "showLoader", false);
|
|
690
690
|
}
|
|
@@ -703,7 +703,7 @@ class Converter {
|
|
|
703
703
|
}
|
|
704
704
|
}
|
|
705
705
|
};
|
|
706
|
-
field.api = mergeObjects(fieldApiDefaults, fieldApiDefaults);
|
|
706
|
+
field.api = getObjectDeepCopy(mergeObjects(fieldApiDefaults, fieldApiDefaults));
|
|
707
707
|
}
|
|
708
708
|
if (!checkObjectKeyExists(field.api, "request") &&
|
|
709
709
|
!checkObjectKeyExists(field.api, "entrypoint")) {
|
|
@@ -722,7 +722,7 @@ class Converter {
|
|
|
722
722
|
}
|
|
723
723
|
]
|
|
724
724
|
};
|
|
725
|
-
field.entrypoint = mergeObjects(apiEntrypoint, field.api);
|
|
725
|
+
field.entrypoint = getObjectDeepCopy(mergeObjects(apiEntrypoint, field.api));
|
|
726
726
|
}
|
|
727
727
|
return field;
|
|
728
728
|
};
|
|
@@ -730,11 +730,11 @@ class Converter {
|
|
|
730
730
|
var _a, _b;
|
|
731
731
|
field = setFieldKeyHidden(field);
|
|
732
732
|
field = setFieldAsFormElement(field, true);
|
|
733
|
-
field.properties = mergeObjects(FIELD_PROPERTIES[field.type], {
|
|
733
|
+
field.properties = getObjectDeepCopy(mergeObjects(FIELD_PROPERTIES[field.type], {
|
|
734
734
|
mask: new Array((_b = (_a = field === null || field === void 0 ? void 0 : field.properties) === null || _a === void 0 ? void 0 : _a.otpLength) !== null && _b !== void 0 ? _b : 4)
|
|
735
735
|
.fill("#")
|
|
736
736
|
.join(" ")
|
|
737
|
-
}, field.properties);
|
|
737
|
+
}, field.properties));
|
|
738
738
|
return field;
|
|
739
739
|
};
|
|
740
740
|
const formatFieldTypeAadhaarNumber = (field) => {
|
|
@@ -745,7 +745,7 @@ class Converter {
|
|
|
745
745
|
const formatFieldTypeFile = (field) => {
|
|
746
746
|
field = setFieldKeyHidden(field);
|
|
747
747
|
field = setFieldAsFormElement(field, true);
|
|
748
|
-
field.properties = mergeObjects(FIELD_PROPERTIES[field.type], field.properties);
|
|
748
|
+
field.properties = getObjectDeepCopy(mergeObjects(FIELD_PROPERTIES[field.type], field.properties));
|
|
749
749
|
return field;
|
|
750
750
|
};
|
|
751
751
|
switch (field.type) {
|