@piserve-tech/form-submission 1.3.84 → 1.3.85
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.
|
@@ -133,11 +133,12 @@ export class MultipleSubformComponent {
|
|
|
133
133
|
this.updateSubFormWithSubmissions();
|
|
134
134
|
}
|
|
135
135
|
addNewSubmission() {
|
|
136
|
+
const subForm = this.cleanCircularReferences(this.subForm);
|
|
136
137
|
const dialogConfig = new MatDialogConfig();
|
|
137
138
|
dialogConfig.position = { top: '5%' };
|
|
138
139
|
dialogConfig.width = '100%';
|
|
139
140
|
dialogConfig.data = {
|
|
140
|
-
subForm:
|
|
141
|
+
subForm: subForm,
|
|
141
142
|
acceptedLanguage: this.acceptedLanguage
|
|
142
143
|
};
|
|
143
144
|
dialogConfig.hasBackdrop = true;
|
|
@@ -154,6 +155,22 @@ export class MultipleSubformComponent {
|
|
|
154
155
|
}
|
|
155
156
|
});
|
|
156
157
|
}
|
|
158
|
+
cleanCircularReferences(obj, seen = new WeakSet()) {
|
|
159
|
+
if (obj === null || typeof obj !== "object") {
|
|
160
|
+
return obj;
|
|
161
|
+
}
|
|
162
|
+
if (seen.has(obj)) {
|
|
163
|
+
return;
|
|
164
|
+
}
|
|
165
|
+
seen.add(obj);
|
|
166
|
+
const cleanedObj = Array.isArray(obj) ? [] : {};
|
|
167
|
+
for (const key in obj) {
|
|
168
|
+
if (Object.prototype.hasOwnProperty.call(obj, key)) {
|
|
169
|
+
cleanedObj[key] = this.cleanCircularReferences(obj[key], seen);
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
return cleanedObj;
|
|
173
|
+
}
|
|
157
174
|
updateSubmission(result, index) {
|
|
158
175
|
const processFormElements = (rows, answers) => {
|
|
159
176
|
rows.forEach((row) => {
|
|
@@ -261,4 +278,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
261
278
|
}], acceptedLanguage: [{
|
|
262
279
|
type: Input
|
|
263
280
|
}] } });
|
|
264
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXVsdGlwbGUtc3ViZm9ybS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mb3JtLXN1Ym1pc3Npb24vc3JjL3F1ZXN0aW9uL211bHRpcGxlLXN1YmZvcm0vbXVsdGlwbGUtc3ViZm9ybS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mb3JtLXN1Ym1pc3Npb24vc3JjL3F1ZXN0aW9uL211bHRpcGxlLXN1YmZvcm0vbXVsdGlwbGUtc3ViZm9ybS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZFLE9BQU8sRUFBYSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN0RSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw0REFBNEQsQ0FBQzs7Ozs7Ozs7QUF5QnRHLE1BQU0sT0FBTyx3QkFBd0I7SUFTbkMsWUFBbUIsTUFBaUIsRUFBVSxTQUF1QjtRQUFsRCxXQUFNLEdBQU4sTUFBTSxDQUFXO1FBQVUsY0FBUyxHQUFULFNBQVMsQ0FBYztRQVI1RCxZQUFPLEdBQVEsRUFBRSxDQUFDO1FBQ2pCLGtCQUFhLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUN6QyxxQkFBZ0IsR0FBVSxFQUFFLENBQUM7UUFFdEMsZ0JBQVcsR0FBaUIsRUFBRSxDQUFDO1FBQy9CLHVCQUFrQixHQUFhLEVBQUUsQ0FBQztRQUNsQyxxQkFBZ0IsR0FBYSxFQUFFLENBQUM7SUFFd0MsQ0FBQztJQUV6RSxRQUFRO1FBQ04sSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLFdBQVcsRUFBRTtZQUM3QixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDO1lBQzVDLElBQUksQ0FBQyxPQUFPLENBQUMsa0JB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QU0sS0FBSyxFQUFFLENBQUMsRUFBRTtnQkFDM0QsbUJBQW1CLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO2FBQ3RDO2lCQUFNLElBQUksVUFBVSxDQUFDLFlBQVksRUFBRTtnQkFDbEMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsQ0FBQzthQUNsRDtRQUNILENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLFdBQVcsR0FBRyxtQkFBbUIsQ0FBQztRQUN2QyxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLEdBQUcsa0JBQWtCLENBQUMsQ0FBQztRQUNwRCxJQUFJLENBQUMsNEJBQTRCLEVBQUUsQ0FBQztJQUN0QyxDQUFDOytHQTVSVSx3QkFBd0I7bUdBQXhCLHdCQUF3QiwrS0MzQnJDLGtoSkF5REE7OzRGRDlCYSx3QkFBd0I7a0JBTHBDLFNBQVM7K0JBQ0Usc0JBQXNCOzJIQUt2QixPQUFPO3NCQUFmLEtBQUs7Z0JBQ0ksYUFBYTtzQkFBdEIsTUFBTTtnQkFDRSxnQkFBZ0I7c0JBQXhCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0RGlhbG9nLCBNYXREaWFsb2dDb25maWcgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IHsgU3VibWlzc2lvbk1vZGFsQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vc3ViLWZvcm0vc3VibWlzc2lvbi1tb2RhbC9zdWJtaXNzaW9uLW1vZGFsLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBdHRhY2htZW50IH0gZnJvbSAnLi4vLi4vbW9kZWxzL2F0dGFjaG1lbnQubW9kZWwnO1xuaW1wb3J0IHsgRG9tU2FuaXRpemVyLCBTYWZlSHRtbCB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuXG5pbnRlcmZhY2UgQW5zd2VyIHtcbiAgcXVlc3Rpb25JZDogc3RyaW5nO1xuICBhbnN3ZXI/OiBhbnk7XG4gIGFuc3dlcklkPzogc3RyaW5nO1xuICBkZWxldGVGaWxlcz86IHN0cmluZ1tdO1xuICBhdHRhY2htZW50cz86IEF0dGFjaG1lbnRbXTtcbiAgZmlsZXM/OiBhbnk7XG4gIGlzQ2hpbGQ/OiBib29sZWFuO1xuICBodG1sQ29udGVudD86IFNhZmVIdG1sO1xufVxuXG5pbnRlcmZhY2UgU3VibWlzc2lvbiB7XG4gIHN1Ym1pc3Npb25JZDogc3RyaW5nO1xuICBhbnN3ZXJzOiBBbnN3ZXJbXTtcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbGliLW11bHRpcGxlLXN1YmZvcm0nLFxuICB0ZW1wbGF0ZVVybDogJy4vbXVsdGlwbGUtc3ViZm9ybS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL211bHRpcGxlLXN1YmZvcm0uY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgTXVsdGlwbGVTdWJmb3JtQ29tcG9uZW50IHtcbiAgQElucHV0KCkgc3ViRm9ybTogYW55ID0ge307XG4gIEBPdXRwdXQoKSBzdWJGb3JtQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBJbnB1dCgpIGFjY2VwdGVkTGFuZ3VhZ2U6IHN0cmluZyA9Jyc7XG5cbiAgc3VibWlzc2lvbnM6IFN1Ym1pc3Npb25bXSA9IFtdO1xuICBkZWxldGVkU3VibWlzc2lvbnM6IHN0cmluZ1tdID0gW107XG4gIGRpc3BsYXllZENvbHVtbnM6IHN0cmluZ1tdID0gW107XG5cbiAgY29uc3RydWN0b3IocHVibGljIGRpYWxvZzogTWF0RGlhbG9nLCBwcml2YXRlIHNhbml0aXplcjogRG9tU2FuaXRpemVyKSB7fVxuXG4gIG5nT25Jbml0KCkgeyAgICBcbiAgICBpZiAodGhpcy5zdWJGb3JtPy5zdWJtaXNzaW9ucykge1xuICAgICAgdGhpcy5zdWJtaXNzaW9ucyA9IHRoaXMuc3ViRm9ybS5zdWJtaXNzaW9ucztcbiAgICAgIHRoaXMuc3ViRm9ybS5kZWxldGVkU3VibWlzc2lvbnMgPSBbXTtcbiAgICB9XG4gICAgdGhpcy5pbml0aWFsaXplRGlzcGxheWVkQ29sdW1ucygpO1xuICB9XG5cbiAgaW5pdGlhbGl6ZURpc3BsYXllZENvbHVtbnMoKSB7XG4gICAgdGhpcy5kaXNwbGF5ZWRDb2x1bW5zID0gdGhpcy5zdWJGb3JtLnJvd3MuZmxhdE1hcCgoaXRlbTogYW55KSA9PiBcbiAgICAgIGl0ZW0uZ3JpZFxuICAgICAgICAgIC5tYXAoKGdyaWRJdGVtOiBhbnkpID0+IGdyaWRJdGVtLmVsZW1lbnQucXVlc3Rpb24pXG4gICk7XG4gIFxuICAgLy8gdGhpcy5kaXNwbGF5ZWRDb2x1bW5zID0gdGhpcy5zdWJGb3JtLmZvcm1FbGVtZW50cy5tYXAoKGZlOiBhbnkpID0+IGZlLmVsZW1lbnQucXVlc3Rpb24pO1xuICAgIHRoaXMuZGlzcGxheWVkQ29sdW1ucy5wdXNoKCdhY3Rpb25zJyk7XG4gIH1cblxuICBnZXRBbnN3ZXJCeVF1ZXN0aW9uSWQoc3VibWlzc2lvbjogU3VibWlzc2lvbiwgcXVlc3Rpb25JZDogc3RyaW5nKSB7XG4gICAgY29uc3QgYW5zd2VycyA9ICBzdWJtaXNzaW9uLmFuc3dlcnMuZmluZChhbnN3ZXIgPT4gYW5zd2VyLnF1ZXN0aW9uSWQgPT09IHF1ZXN0aW9uSWQpO1xuICAgIGlmKGFuc3dlcnMpIHtcbiAgICAgIGFuc3dlcnNbJ2h0bWxDb250ZW50J10gPSB0aGlzLnNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0SHRtbChhbnN3ZXJzLmFuc3dlcik7XG4gICAgfVxuICAgXG4gICAgcmV0dXJuIGFuc3dlcnM7XG4gIH1cblxuICBzdWJGb3JtU3VibWlzc2lvbihzdWJGb3JtOiBhbnkpIHtcbiAgICBjb25zdCBwcm9jZXNzRm9ybUVsZW1lbnRzID0gKHJvd3M6IGFueVtdLCBpc0NoaWxkOiBib29sZWFuID0gZmFsc2UpOiBBbnN3ZXJbXSA9PiB7XG4gICAgICBjb25zdCBhbnN3ZXJzOiBBbnN3ZXJbXSA9IFtdO1xuICBcbiAgICAgIHJvd3MuZmxhdE1hcCgoaXRlbTogYW55KSA9PiBcbiAgICAgICAgaXRlbS5ncmlkLmZvckVhY2goKGZvcm1FbGVtZW50OiBhbnkpID0+IHtcbiAgICAgICAgY29uc3QgYW5zd2VyOiBBbnN3ZXIgPSB7XG4gICAgICAgICAgcXVlc3Rpb25JZDogZm9ybUVsZW1lbnQuZWxlbWVudC5pZCxcbiAgICAgICAgICBhbnN3ZXI6IGZvcm1FbGVtZW50LmVsZW1lbnQ/LmFuc3dlciB8fCAnJyxcbiAgICAgICAgICBmaWxlczogZm9ybUVsZW1lbnQuZWxlbWVudC5mb3JtRWxlbWVudC5lbGVtZW50VHlwZSA9PSAnRklMRV9QSUNLRVInICYmIGZvcm1FbGVtZW50LmVsZW1lbnQuYW5zd2VyXG4gICAgICAgICAgICA/IGZvcm1FbGVtZW50LmVsZW1lbnQuYW5zd2VyXG4gICAgICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgICAgICBpc0NoaWxkOiBpc0NoaWxkXG4gICAgICAgIH07XG4gIFxuICAgICAgICBpZiAoXG4gICAgICAgICAgZm9ybUVsZW1lbnQuZWxlbWVudC5mb3JtRWxlbWVudC5lbGVtZW50VHlwZSA9PSAnRklMRV9QSUNLRVInICYmXG4gICAgICAgICAgZm9ybUVsZW1lbnQuZWxlbWVudC5hbnN3ZXJcbiAgICAgICAgKSB7XG4gICAgICAgICAgY29uc3QgZmlsZU5hbWVzID0gZm9ybUVsZW1lbnQuZWxlbWVudC5hbnN3ZXIubWFwKFxuICAgICAgICAgICAgKGZpbGU6IGFueSkgPT4gZmlsZT8uX2ZpbGUubmFtZVxuICAgICAgICAgICk7XG4gICAgICAgICAgYW5zd2VyLmFuc3dlciA9IGZpbGVOYW1lcztcbiAgICAgICAgfVxuICAgICAgICBhbnN3ZXJzLnB1c2goYW5zd2VyKTtcbiAgXG4gICAgICAgIGlmIChmb3JtRWxlbWVudC5lbGVtZW50LmNoaWxkTG9naWNzKSB7XG4gICAgICAgICAgZm9ybUVsZW1lbnQuZWxlbWVudC5jaGlsZExvZ2ljcy5mb3JFYWNoKChsb2dpYzogYW55KSA9PiB7XG4gICAgICAgICAgICBpZihsb2dpYy5zaG93TG9naWMpe1xuICAgICAgICAgICAgICBhbnN3ZXJzLnB1c2goLi4ucHJvY2Vzc0Zvcm1FbGVtZW50cyhsb2dpYy5yb3dzLCB0cnVlKSk7XG4gICAgICAgICAgICAgIGxvZ2ljLnNob3dMb2dpYz1mYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICAgICk7XG4gICAgICByZXR1cm4gYW5zd2VycztcbiAgICB9O1xuICBcbiAgICBjb25zdCBhbnN3ZXJzID0gcHJvY2Vzc0Zvcm1FbGVtZW50cyhzdWJGb3JtLnJvd3MpO1xuICBcbiAgICBpZiAoYW5zd2Vycy5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBzdWJtaXNzaW9uOiBTdWJtaXNzaW9uID0ge1xuICAgICAgICBzdWJtaXNzaW9uSWQ6ICcnLFxuICAgICAgICBhbnN3ZXJzOiBhbnN3ZXJzLFxuICAgICAgfTtcbiAgICAgIHRoaXMuc3VibWlzc2lvbnMucHVzaChzdWJtaXNzaW9uKTtcbiAgICAgIHRoaXMuc3VibWlzc2lvbnMgPSBbLi4udGhpcy5zdWJtaXNzaW9uc107XG4gICAgICB0aGlzLnVwZGF0ZVN1YkZvcm1XaXRoU3VibWlzc2lvbnMoKTtcbiAgICB9XG4gIH1cbiAgXG5cbiAgZWRpdFN1YkZvcm1TdWJtaXNzaW9uKGluZGV4OiBudW1iZXIsIHN1Ym1pc3Npb246IFN1Ym1pc3Npb24pIHtcbiAgICBjb25zdCBzdWJGb3JtID0gdGhpcy5iaW5kQW5zd2Vycyh0aGlzLnN1YkZvcm0sIHN1Ym1pc3Npb24pO1xuICAgIGNvbnN0IGRpYWxvZ0NvbmZpZyA9IG5ldyBNYXREaWFsb2dDb25maWcoKTtcbiAgICBkaWFsb2dDb25maWcucG9zaXRpb24gPSB7IHRvcDogJzUlJyB9O1xuICAgIGRpYWxvZ0NvbmZpZy53aWR0aCA9ICcxMDAlJztcbiAgICBkaWFsb2dDb25maWcuZGF0YSA9IHtcbiAgICAgIHN1YkZvcm06IHN1YkZvcm0sXG4gICAgICBhY2NlcHRlZExhbmd1YWdlOiB0aGlzLmFjY2VwdGVkTGFuZ3VhZ2VcbiAgICB9O1xuICAgIGRpYWxvZ0NvbmZpZy5oYXNCYWNrZHJvcCA9IHRydWU7XG4gICAgZGlhbG9nQ29uZmlnLmRpc2FibGVDbG9zZSA9IHRydWU7XG4gICAgZGlhbG9nQ29uZmlnLm1heEhlaWdodCA9ICc4MHZoJztcbiAgICBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKFN1Ym1pc3Npb25Nb2RhbENvbXBvbmVudCwgZGlhbG9nQ29uZmlnKTtcblxuICAgIGRpYWxvZ1JlZi5hZnRlckNsb3NlZCgpLnN1YnNjcmliZSgocmVzdWx0OiBhbnkpID0+IHtcbiAgICAgIGlmIChyZXN1bHQpIHtcbiAgICAgICAgICB0aGlzLnVwZGF0ZVN1Ym1pc3Npb24ocmVzdWx0LCBpbmRleCk7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGJpbmRBbnN3ZXJzKHN1YkZvcm06IGFueSwgc3VibWlzc2lvbjogU3VibWlzc2lvbik6IGFueSB7XG4gICAgY29uc3QgYmluZEVsZW1lbnRBbnN3ZXJzID0gKHJvd3M6IGFueVtdLCBhbnN3ZXJzOiBBbnN3ZXJbXSkgPT4ge1xuICAgICAgcm93cy5mb3JFYWNoKChyb3c6IGFueSkgPT4ge1xuICAgICAgICByb3cuZ3JpZC5mb3JFYWNoKChncmlkOmFueSk9PnsgICAgICAgICAgXG4gICAgICAgICAgY29uc3QgYW5zd2VyID0gYW5zd2Vycy5maW5kKFxuICAgICAgICAgICAgKGEpID0+IGEucXVlc3Rpb25JZCA9PT0gZ3JpZC5lbGVtZW50LmlkXG4gICAgICAgICAgKTtcbiAgICAgICAgICBpZiAoYW5zd2VyKSB7XG4gICAgICAgICAgICBncmlkLmVsZW1lbnQuYW5zd2VyID1cbiAgICAgICAgICAgIGdyaWQuZWxlbWVudC5mb3JtRWxlbWVudC5lbGVtZW50VHlwZSA9PSAnRklMRV9QSUNLRVInXG4gICAgICAgICAgICAgICAgPyBhbnN3ZXI/LmZpbGVzXG4gICAgICAgICAgICAgICAgOiBhbnN3ZXIuYW5zd2VyO1xuICAgICAgICAgICAgICAgIGdyaWQuZWxlbWVudC5hbnN3ZXJJZCA9IGFuc3dlci5hbnN3ZXJJZDtcbiAgICAgICAgICAgICAgICBncmlkLmVsZW1lbnQuYXR0YWNobWVudHMgPSBhbnN3ZXIuYXR0YWNobWVudHM7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChncmlkLmVsZW1lbnQuY2hpbGRMb2dpY3MpIHtcbiAgICAgICAgICAgIGdyaWQuZWxlbWVudC5jaGlsZExvZ2ljcy5mb3JFYWNoKChsb2dpYzogYW55KSA9PiB7XG4gICAgICAgICAgICAgIGJpbmRFbGVtZW50QW5zd2Vycyhsb2dpYy5yb3dzLCBhbnN3ZXJzKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgICAgXG4gICAgICB9KTtcbiAgICB9O1xuXG4gICAgY29uc3QgdXBkYXRlZFN1YkZvcm0gPSB7IC4uLnN1YkZvcm0gfTsgICAgXG4gICAgYmluZEVsZW1lbnRBbnN3ZXJzKHVwZGF0ZWRTdWJGb3JtLnJvd3MsIHN1Ym1pc3Npb24uYW5zd2Vycyk7XG4gICAgcmV0dXJuIHVwZGF0ZWRTdWJGb3JtO1xuICB9XG5cbiAgZGVsZXRlU3ViRm9ybShpbmRleDogbnVtYmVyKSB7XG4gICAgY29uc3Qgc3VibWlzc2lvbiA9IHRoaXMuc3VibWlzc2lvbnNbaW5kZXhdO1xuICAgIGlmIChzdWJtaXNzaW9uLnN1Ym1pc3Npb25JZCkge1xuICAgICAgdGhpcy5kZWxldGVkU3VibWlzc2lvbnMucHVzaChzdWJtaXNzaW9uLnN1Ym1pc3Npb25JZCk7XG4gICAgfVxuICAgIHRoaXMuc3VibWlzc2lvbnMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICB0aGlzLnN1Ym1pc3Npb25zID0gWy4uLnRoaXMuc3VibWlzc2lvbnNdO1xuICAgIHRoaXMudXBkYXRlU3ViRm9ybVdpdGhTdWJtaXNzaW9ucygpO1xuICB9XG5cbiAgYWRkTmV3U3VibWlzc2lvbigpIHtcbiAgICBjb25zdCBkaWFsb2dDb25maWcgPSBuZXcgTWF0RGlhbG9nQ29uZmlnKCk7XG4gICAgZGlhbG9nQ29uZmlnLnBvc2l0aW9uID0geyB0b3A6ICc1JScgfTtcbiAgICBkaWFsb2dDb25maWcud2lkdGggPSAnMTAwJSc7XG4gICAgZGlhbG9nQ29uZmlnLmRhdGEgPSB7XG4gICAgICBzdWJGb3JtOiBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHRoaXMuc3ViRm9ybSkpLCBcbiAgICAgIGFjY2VwdGVkTGFuZ3VhZ2U6IHRoaXMuYWNjZXB0ZWRMYW5ndWFnZVxuICAgIH07XG4gICAgZGlhbG9nQ29uZmlnLmhhc0JhY2tkcm9wID0gdHJ1ZTtcbiAgICBkaWFsb2dDb25maWcuZGlzYWJsZUNsb3NlID0gdHJ1ZTtcbiAgICBkaWFsb2dDb25maWcubWF4SGVpZ2h0ID0gJzgwdmgnO1xuICAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nLm9wZW4oU3VibWlzc2lvbk1vZGFsQ29tcG9uZW50LCBkaWFsb2dDb25maWcpO1xuICBcbiAgICBkaWFsb2dSZWYuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUoKHJlc3VsdDogYW55KSA9PiB7XG4gICAgICBpZiAocmVzdWx0KSB7XG4gICAgICAgIGNvbnN0IGhhc0RhdGEgPSByZXN1bHQucm93cy5mbGF0TWFwKChpdGVtOiBhbnkpID0+IFxuICAgICAgICAgIGl0ZW0uZ3JpZFxuICAgICAgICAgICAgICAuc29tZSgoZm9ybUVsZW1lbnQ6IGFueSkgPT4gZm9ybUVsZW1lbnQuZWxlbWVudC5hbnN3ZXIgJiYgZm9ybUVsZW1lbnQuZWxlbWVudC5hbnN3ZXIubGVuZ3RoID4gMClcbiAgICAgICk7XG4gIFxuICAgICAgICBpZiAoaGFzRGF0YSkge1xuICAgICAgICAgIHRoaXMuc3ViRm9ybVN1Ym1pc3Npb24ocmVzdWx0KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICB9XG4gIFxuICBcblxuICB1cGRhdGVTdWJtaXNzaW9uKHJlc3VsdDogYW55LCBpbmRleDogbnVtYmVyKSB7XG4gICAgY29uc3QgcHJvY2Vzc0Zvcm1FbGVtZW50cyA9IChyb3dzOiBhbnlbXSwgYW5zd2VyczogQW5zd2VyW10pID0+IHtcbiAgICAgIHJvd3MuZm9yRWFjaCgocm93OiBhbnkpID0+IHtcbiAgICAgICAgcm93LmdyaWQuZm9yRWFjaCgoZ3JpZDphbnkpPT57XG4gICAgICAgICAgbGV0IGFuc3dlcjogQW5zd2VyID0ge1xuICAgICAgICAgICAgcXVlc3Rpb25JZDogZ3JpZC5lbGVtZW50LmlkLFxuICAgICAgICAgICAgYW5zd2VySWQ6IGdyaWQuZWxlbWVudD8uYW5zd2VySWQgfHwgJycsXG4gICAgICAgICAgICBhdHRhY2htZW50czogZ3JpZC5lbGVtZW50LmF0dGFjaG1lbnRzIHx8IFtdLFxuICAgICAgICAgICAgYW5zd2VyOiBbXSxcbiAgICAgICAgICAgIGZpbGVzOiBbXSxcbiAgICAgICAgICAgIGRlbGV0ZUZpbGVzOiBbXSxcbiAgICAgICAgICB9O1xuICAgIFxuICAgICAgICAgIGlmIChhbnN3ZXIuYXR0YWNobWVudHMpIHtcbiAgICAgICAgICAgIGFuc3dlci5hbnN3ZXIgPSBhbnN3ZXIuYXR0YWNobWVudHMubWFwKFxuICAgICAgICAgICAgICAoYXR0YWNobWVudDogQXR0YWNobWVudCkgPT4gYXR0YWNobWVudC5maWxlTmFtZVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgXG4gICAgICAgICAgaWYgKGdyaWQuZWxlbWVudC5mb3JtRWxlbWVudC5lbGVtZW50VHlwZSA9PT0gJ0ZJTEVfUElDS0VSJykge1xuICAgICAgICAgICAgaWYgKGdyaWQuZWxlbWVudD8uZGVsZXRlRmlsZXMpIHtcbiAgICAgICAgICAgICAgYW5zd2VyLmFuc3dlciA9IFtdO1xuICAgICAgICAgICAgICBncmlkLmVsZW1lbnQuZGVsZXRlRmlsZXMuZm9yRWFjaCgoZGVsZXRlZElkOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgICAgICBhbnN3ZXIuZGVsZXRlRmlsZXM/LnB1c2goZGVsZXRlZElkKTtcbiAgICAgICAgICAgICAgICBpZiAoYW5zd2VyLmF0dGFjaG1lbnRzKSB7XG4gICAgICAgICAgICAgICAgICBhbnN3ZXIuYXR0YWNobWVudHMgPSBhbnN3ZXIuYXR0YWNobWVudHMuZmlsdGVyKFxuICAgICAgICAgICAgICAgICAgICAoYXR0YWNobWVudDogQXR0YWNobWVudCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGZpbGVOYW1lID0gYXR0YWNobWVudC5maWxlTmFtZTtcbiAgICAgICAgICAgICAgICAgICAgICBpZiAoYXR0YWNobWVudC5maWxlSWQgIT09IGRlbGV0ZWRJZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFhbnN3ZXIuYW5zd2VyLmluY2x1ZGVzKGZpbGVOYW1lKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBhbnN3ZXIuYW5zd2VyLnB1c2goZmlsZU5hbWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZ3JpZC5lbGVtZW50LmFuc3dlcikge1xuICAgICAgICAgICAgICBhbnN3ZXIuZmlsZXMgPSBncmlkLmVsZW1lbnQuYW5zd2VyO1xuICAgICAgICAgICAgICBncmlkLmVsZW1lbnQuYW5zd2VyLmZvckVhY2goKGZpbGU6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGZpbGVOYW1lID0gZmlsZS5fZmlsZT8ubmFtZTtcbiAgICAgICAgICAgICAgICBsZXQgZmlsZU5hbWVzQXJyYXkgPSBBcnJheS5pc0FycmF5KGFuc3dlci5hbnN3ZXIpXG4gICAgICAgICAgICAgICAgICA/IGFuc3dlci5hbnN3ZXJcbiAgICAgICAgICAgICAgICAgIDogW107XG4gICAgICAgICAgICAgICAgaWYgKCFmaWxlTmFtZXNBcnJheS5pbmNsdWRlcyhmaWxlTmFtZSkpIHtcbiAgICAgICAgICAgICAgICAgIGZpbGVOYW1lc0FycmF5LnB1c2goZmlsZU5hbWUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBhbnN3ZXIuYW5zd2VyID0gZmlsZU5hbWVzQXJyYXk7XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBhbnN3ZXIgPSB7XG4gICAgICAgICAgICAgIHF1ZXN0aW9uSWQ6IGdyaWQuZWxlbWVudC5pZCxcbiAgICAgICAgICAgICAgYW5zd2VySWQ6IGdyaWQuZWxlbWVudD8uYW5zd2VySWQgfHwgJycsXG4gICAgICAgICAgICAgIGF0dGFjaG1lbnRzOiBncmlkLmVsZW1lbnQuYXR0YWNobWVudHMsXG4gICAgICAgICAgICAgIGFuc3dlcjogZ3JpZC5lbGVtZW50LmFuc3dlcixcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfVxuICAgICAgICAgIGdyaWQuZWxlbWVudC5hbnN3ZXIgPSAnJztcbiAgICAgICAgICBhbnN3ZXJzLnB1c2goYW5zd2VyKTtcbiAgICBcbiAgICAgICAgICBpZiAoZ3JpZC5lbGVtZW50LmNoaWxkTG9naWNzKSB7XG4gICAgICAgICAgICBncmlkLmVsZW1lbnQuY2hpbGRMb2dpY3MuZm9yRWFjaCgobG9naWM6IGFueSkgPT4ge1xuICAgICAgICAgICAgICBpZihsb2dpYy5zaG93TG9naWMpe1xuICAgICAgICAgICAgICAgIHByb2Nlc3NGb3JtRWxlbWVudHMobG9naWMucm93cywgYW5zd2Vycyk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgIH0pO1xuICAgIH07XG4gIFxuICAgIHRoaXMuc3VibWlzc2lvbnNbaW5kZXhdLmFuc3dlcnMgPSBbXTsgICAgXG4gICAgcHJvY2Vzc0Zvcm1FbGVtZW50cyhyZXN1bHQucm93cywgdGhpcy5zdWJtaXNzaW9uc1tpbmRleF0uYW5zd2Vycyk7XG4gICAgdGhpcy5zdWJtaXNzaW9ucyA9IFsuLi50aGlzLnN1Ym1pc3Npb25zXTtcbiAgICB0aGlzLnVwZGF0ZVN1YkZvcm1XaXRoU3VibWlzc2lvbnMoKTtcbiAgICB0aGlzLmNsZWFyRW1wdHlSb3dzKCk7XG4gIH0gIFxuXG4gIHVwZGF0ZVN1YkZvcm1XaXRoU3VibWlzc2lvbnMoKSB7XG4gICAgdGhpcy5zdWJGb3JtLnN1Ym1pc3Npb25zID0gdGhpcy5zdWJtaXNzaW9ucztcbiAgICB0aGlzLnN1YkZvcm0uZGVsZXRlZFN1Ym1pc3Npb25zID0gdGhpcy5kZWxldGVkU3VibWlzc2lvbnM7XG4gICAgdGhpcy5zdWJGb3JtQ2hhbmdlLmVtaXQodGhpcy5zdWJGb3JtKTtcbiAgfVxuXG4gIGNsZWFyRW1wdHlSb3dzKCkge1xuICAgIGNvbnN0IG5vbkVtcHR5U3VibWlzc2lvbnM6U3VibWlzc2lvbltdID0gW107XG4gICAgY29uc3QgZW1wdHlTdWJtaXNzaW9uSWRzOnN0cmluZ1tdID0gW107XG4gIFxuICAgIHRoaXMuc3VibWlzc2lvbnMuZm9yRWFjaChzdWJtaXNzaW9uID0+IHtcbiAgICAgIGlmIChzdWJtaXNzaW9uLmFuc3dlcnMuc29tZShhbnN3ZXIgPT4gYW5zd2VyLmFuc3dlciAhPT0gJycpKSB7XG4gICAgICAgIG5vbkVtcHR5U3VibWlzc2lvbnMucHVzaChzdWJtaXNzaW9uKTtcbiAgICAgIH0gZWxzZSBpZiAoc3VibWlzc2lvbi5zdWJtaXNzaW9uSWQpIHtcbiAgICAgICAgZW1wdHlTdWJtaXNzaW9uSWRzLnB1c2goc3VibWlzc2lvbi5zdWJtaXNzaW9uSWQpO1xuICAgICAgfVxuICAgIH0pO1xuICBcbiAgICB0aGlzLnN1Ym1pc3Npb25zID0gbm9uRW1wdHlTdWJtaXNzaW9ucztcbiAgICB0aGlzLmRlbGV0ZWRTdWJtaXNzaW9ucy5wdXNoKC4uLmVtcHR5U3VibWlzc2lvbklkcyk7XG4gICAgdGhpcy51cGRhdGVTdWJGb3JtV2l0aFN1Ym1pc3Npb25zKCk7XG4gIH1cbiAgXG59XG4iLCI8ZGl2IGNsYXNzPVwiZXhhbXBsZS1jb250YWluZXIgXCIgdGFiaW5kZXg9XCIwXCI+XG4gIDxkaXYgY2xhc3M9XCJ0YWJsZS1jb250YWluZXJcIj5cbiAgICA8dGFibGUgbWF0LXRhYmxlIFtkYXRhU291cmNlXT1cInN1Ym1pc3Npb25zXCIgY2xhc3M9XCJtYXQtZWxldmF0aW9uLXo4XCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCByb3cgb2Ygc3ViRm9ybS5yb3dzXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBmb3JtRWxlbWVudCBvZiByb3cuZ3JpZFwiIFttYXRDb2x1bW5EZWZdPVwiZm9ybUVsZW1lbnQuZWxlbWVudC5xdWVzdGlvblwiPlxuICAgICAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmIGNsYXNzPVwiYm9yZGVyIGJvcmRlci0xXCI+e3sgZm9ybUVsZW1lbnQuZWxlbWVudC5xdWVzdGlvbiB9fTwvdGg+XG4gICAgICAgIDx0ZCBtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCBzdWJtaXNzaW9uXCIgY2xhc3M9XCJib3JkZXIgYm9yZGVyLTFcIiBbbmdDbGFzc109XCJ7J2hpZGRlbic6IGdldEFuc3dlckJ5UXVlc3Rpb25JZChzdWJtaXNzaW9uLCBmb3JtRWxlbWVudC5lbGVtZW50LmlkKT8uaXNDaGlsZH1cIj5cbiAgICAgICAgICA8ZGl2IFtpbm5lckhUTUxdPVwiZ2V0QW5zd2VyQnlRdWVzdGlvbklkKHN1Ym1pc3Npb24sIGZvcm1FbGVtZW50LmVsZW1lbnQuaWQpPy5odG1sQ29udGVudFwiPjwvZGl2PlxuICAgICAgICA8L3RkPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cImFjdGlvbnNcIiBzdGlja3lFbmQ+XG4gICAgICAgIDx0aCBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWYgIGNsYXNzPVwiYm9yZGVyIGJvcmRlci0xXCI+IEFjdGlvbnMgPC90aD5cbiAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IHN1Ym1pc3Npb247IGxldCBpID0gaW5kZXhcIiBjbGFzcz1cInRleHQtY2VudGVyIGJvcmRlciBib3JkZXItMVwiPlxuXG4gICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG5cIiBtYXQtaWNvbi1idXR0b24gW21hdE1lbnVUcmlnZ2VyRm9yXT1cIm1lbnVcIiBhcmlhLWxhYmVsPVwiRXhhbXBsZSBpY29uLWJ1dHRvbiB3aXRoIGEgbWVudVwiPlxuICAgICAgICAgICAgICA8bWF0LWljb24+bW9yZV92ZXJ0PC9tYXQtaWNvbj5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPG1hdC1tZW51ICNtZW51PVwibWF0TWVudVwiPlxuICAgICAgICAgICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gIChjbGljayk9XCJlZGl0U3ViRm9ybVN1Ym1pc3Npb24oaSwgc3VibWlzc2lvbilcIj5cbiAgICAgICAgICAgICAgICA8c3ZnIHdpZHRoPVwiMjlcIiBoZWlnaHQ9XCIyOFwiIHZpZXdCb3g9XCIwIDAgMjkgMjhcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgICAgICAgICAgICAgICAgIDxyZWN0IHg9XCIwLjVcIiB5PVwiMC41XCIgd2lkdGg9XCIyOFwiIGhlaWdodD1cIjI2LjQ3MzdcIiByeD1cIjUuNVwiIGZpbGw9XCJ3aGl0ZVwiIHN0cm9rZT1cIiNEOEQ4RDhcIi8+XG4gICAgICAgICAgICAgICAgICA8cGF0aCBmaWxsLXJ1bGU9XCJldmVub2RkXCIgY2xpcC1ydWxlPVwiZXZlbm9kZFwiIGQ9XCJNMTIuMDAwOSAxOS4wNzg3SDkuMTU4MlYxNi4yMzYxQzkuMTU4MiAxNS45NDQ3IDkuMjczOSAxNS42NjUzIDkuNDc5OTkgMTUuNDU5M0wxNi4yMjI0IDguNzE2ODZDMTYuNDI4NCA4LjUxMDUgMTYuNzA4IDguMzk0NTMgMTYuOTk5NSA4LjM5NDUzQzE3LjI5MTEgOC4zOTQ1MyAxNy41NzA3IDguNTEwNSAxNy43NzY3IDguNzE2ODZMMTkuNTIwMSAxMC40NjAzQzE5LjcyNjQgMTAuNjY2MyAxOS44NDI0IDEwLjk0NTggMTkuODQyNCAxMS4yMzc0QzE5Ljg0MjQgMTEuNTI5IDE5LjcyNjQgMTEuODA4NiAxOS41MjAxIDEyLjAxNDVMMTIuNzc3NyAxOC43NTdDMTIuNTcxNSAxOC45NjI4IDEyLjI5MjIgMTkuMDc4NSAxMi4wMDA5IDE5LjA3ODdaXCIgc3Ryb2tlPVwiIzA4NEZGRlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cbiAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTUuMTcwNCAxMC4zOTg0TDE3Ljg0MTUgMTMuMDY5NVwiIHN0cm9rZT1cIiMwODRGRkZcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XG4gICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gKGNsaWNrKT1cImRlbGV0ZVN1YkZvcm0oaSlcIj5cbiAgICAgICAgICAgICAgICA8c3ZnIHdpZHRoPVwiMjlcIiBoZWlnaHQ9XCIyOFwiIHZpZXdCb3g9XCIwIDAgMjkgMjhcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgICAgICAgICAgICAgICAgIDxyZWN0IHg9XCIwLjVcIiB5PVwiMC41XCIgd2lkdGg9XCIyNy42NDAyXCIgaGVpZ2h0PVwiMjYuMTMyOFwiIHJ4PVwiNS41XCIgZmlsbD1cIndoaXRlXCIgc3Ryb2tlPVwiI0Q4RDhEOFwiLz5cbiAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNOC42MDQ0OSA5LjIwNjM3SDIwLjAzNTRcIiBzdHJva2U9XCIjMDg0RkZGXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxuICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xOS4yMTg5IDkuMjA3MDNWMTcuNzg2M0MxOS4yMTg5IDE4LjY0ODIgMTguNDg4MSAxOS4zNDYyIDE3LjU4NTkgMTkuMzQ2MkgxMS4wNTM5QzEwLjE1MTcgMTkuMzQ2MiA5LjQyMDkgMTguNjQ4MiA5LjQyMDkgMTcuNzg2M1Y5LjIwNzAzXCIgc3Ryb2tlPVwiIzA4NEZGRlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cbiAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTYuNzY5NiA2LjY3MTIySDExLjg3MDZcIiBzdHJva2U9XCIjMDg0RkZGXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxuICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xMi42ODcxIDEyLjMyNDJWMTYuMjIzOVwiIHN0cm9rZT1cIiMwODRGRkZcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XG4gICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTE1Ljk1MzIgMTIuMzI0MlYxNi4yMjM5XCIgc3Ryb2tlPVwiIzA4NEZGRlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cbiAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L21hdC1tZW51PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L3RkPlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDx0ciBtYXQtaGVhZGVyLXJvdyAqbWF0SGVhZGVyUm93RGVmPVwiZGlzcGxheWVkQ29sdW1uc1wiPjwvdHI+XG4gICAgICA8dHIgbWF0LXJvdyAqbWF0Um93RGVmPVwibGV0IHJvdzsgY29sdW1uczogZGlzcGxheWVkQ29sdW1ucztcIj48L3RyPlxuICAgIDwvdGFibGU+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiZm9vdGVyXCI+XG4gICAgPGRpdiBjbGFzcz1cImFkZE5ld0J0blwiIChjbGljayk9XCJhZGROZXdTdWJtaXNzaW9uKClcIj5cbiAgICAgIDxzdmcgd2lkdGg9XCIxNVwiIGhlaWdodD1cIjE0XCIgdmlld0JveD1cIjAgMCAxNSAxNFwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgICAgICA8cGF0aCBmaWxsLXJ1bGU9XCJldmVub2RkXCIgY2xpcC1ydWxlPVwiZXZlbm9kZFwiIGQ9XCJNMTIuNTU1NiAxMy4yNzc4SDIuNDQ0NDRDMS42NDYzOSAxMy4yNzc4IDEgMTIuNjY3MyAxIDExLjkxMzZWMi4zNjQyQzEgMS42MTA0OCAxLjY0NjM5IDEgMi40NDQ0NCAxSDEyLjU1NTZDMTMuMzUzNiAxIDE0IDEuNjEwNDggMTQgMi4zNjQyVjExLjkxMzZDMTQgMTIuNjY3MyAxMy4zNTM2IDEzLjI3NzggMTIuNTU1NiAxMy4yNzc4WlwiIHN0cm9rZT1cIiNEOEQ4RDhcIiBzdHJva2Utd2lkdGg9XCIwLjhcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XG4gICAgICAgIDxwYXRoIGQ9XCJNNS4zMzM1IDcuNTAzNDdIOS42NjY4M1wiIHN0cm9rZT1cIiMwODRGRkZcIiBzdHJva2Utd2lkdGg9XCIwLjhcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XG4gICAgICAgIDxwYXRoIGQ9XCJNNy41MDAwNSA1LjMzNTk0VjkuNjY5MjdcIiBzdHJva2U9XCIjMDg0RkZGXCIgc3Ryb2tlLXdpZHRoPVwiMC44XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxuICAgICAgPC9zdmc+XG4gICAgICA8YSBjbGFzcz1cIm1zLTIgdGV4dC1kZWNvcmF0aW9uLW5vbmVcIj5BZGQgTmV3PC9hPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
|
|
281
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXVsdGlwbGUtc3ViZm9ybS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mb3JtLXN1Ym1pc3Npb24vc3JjL3F1ZXN0aW9uL211bHRpcGxlLXN1YmZvcm0vbXVsdGlwbGUtc3ViZm9ybS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mb3JtLXN1Ym1pc3Npb24vc3JjL3F1ZXN0aW9uL211bHRpcGxlLXN1YmZvcm0vbXVsdGlwbGUtc3ViZm9ybS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZFLE9BQU8sRUFBYSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN0RSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw0REFBNEQsQ0FBQzs7Ozs7Ozs7QUF5QnRHLE1BQU0sT0FBTyx3QkFBd0I7SUFTbkMsWUFBbUIsTUFBaUIsRUFBVSxTQUF1QjtRQUFsRCxXQUFNLEdBQU4sTUFBTSxDQUFXO1FBQVUsY0FBUyxHQUFULFNBQVMsQ0FBYztRQVI1RCxZQUFPLEdBQVEsRUFBRSxDQUFDO1FBQ2pCLGtCQUFhLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUN6QyxxQkFBZ0IsR0FBVSxFQUFFLENBQUM7UUFFdEMsZ0JBQVcsR0FBaUIsRUFBRSxDQUFDO1FBQy9CLHVCQUFrQixHQUFhLEVBQUUsQ0FBQztRQUNsQyxxQkFBZ0IsR0FBYSxFQUFFLENBQUM7SUFFd0MsQ0FBQztJQUV6RSxRQUFRO1FBQ04sSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLFdBQVcsRUFBRTtZQUM3QixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDO1lBQzVDLElBQUksQ0FBQyxPQUFPLENBQUMsa0JB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SUFDdEMsQ0FBQzsrR0FqVFUsd0JBQXdCO21HQUF4Qix3QkFBd0IsK0tDM0JyQyxraEpBeURBOzs0RkQ5QmEsd0JBQXdCO2tCQUxwQyxTQUFTOytCQUNFLHNCQUFzQjsySEFLdkIsT0FBTztzQkFBZixLQUFLO2dCQUNJLGFBQWE7c0JBQXRCLE1BQU07Z0JBQ0UsZ0JBQWdCO3NCQUF4QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdERpYWxvZywgTWF0RGlhbG9nQ29uZmlnIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7IFN1Ym1pc3Npb25Nb2RhbENvbXBvbmVudCB9IGZyb20gJy4uLy4uL3N1Yi1mb3JtL3N1Ym1pc3Npb24tbW9kYWwvc3VibWlzc2lvbi1tb2RhbC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQXR0YWNobWVudCB9IGZyb20gJy4uLy4uL21vZGVscy9hdHRhY2htZW50Lm1vZGVsJztcbmltcG9ydCB7IERvbVNhbml0aXplciwgU2FmZUh0bWwgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcblxuaW50ZXJmYWNlIEFuc3dlciB7XG4gIHF1ZXN0aW9uSWQ6IHN0cmluZztcbiAgYW5zd2VyPzogYW55O1xuICBhbnN3ZXJJZD86IHN0cmluZztcbiAgZGVsZXRlRmlsZXM/OiBzdHJpbmdbXTtcbiAgYXR0YWNobWVudHM/OiBBdHRhY2htZW50W107XG4gIGZpbGVzPzogYW55O1xuICBpc0NoaWxkPzogYm9vbGVhbjtcbiAgaHRtbENvbnRlbnQ/OiBTYWZlSHRtbDtcbn1cblxuaW50ZXJmYWNlIFN1Ym1pc3Npb24ge1xuICBzdWJtaXNzaW9uSWQ6IHN0cmluZztcbiAgYW5zd2VyczogQW5zd2VyW107XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2xpYi1tdWx0aXBsZS1zdWJmb3JtJyxcbiAgdGVtcGxhdGVVcmw6ICcuL211bHRpcGxlLXN1YmZvcm0uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9tdWx0aXBsZS1zdWJmb3JtLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIE11bHRpcGxlU3ViZm9ybUNvbXBvbmVudCB7XG4gIEBJbnB1dCgpIHN1YkZvcm06IGFueSA9IHt9O1xuICBAT3V0cHV0KCkgc3ViRm9ybUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBASW5wdXQoKSBhY2NlcHRlZExhbmd1YWdlOiBzdHJpbmcgPScnO1xuXG4gIHN1Ym1pc3Npb25zOiBTdWJtaXNzaW9uW10gPSBbXTtcbiAgZGVsZXRlZFN1Ym1pc3Npb25zOiBzdHJpbmdbXSA9IFtdO1xuICBkaXNwbGF5ZWRDb2x1bW5zOiBzdHJpbmdbXSA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBkaWFsb2c6IE1hdERpYWxvZywgcHJpdmF0ZSBzYW5pdGl6ZXI6IERvbVNhbml0aXplcikge31cblxuICBuZ09uSW5pdCgpIHsgICAgXG4gICAgaWYgKHRoaXMuc3ViRm9ybT8uc3VibWlzc2lvbnMpIHtcbiAgICAgIHRoaXMuc3VibWlzc2lvbnMgPSB0aGlzLnN1YkZvcm0uc3VibWlzc2lvbnM7XG4gICAgICB0aGlzLnN1YkZvcm0uZGVsZXRlZFN1Ym1pc3Npb25zID0gW107XG4gICAgfVxuICAgIHRoaXMuaW5pdGlhbGl6ZURpc3BsYXllZENvbHVtbnMoKTtcbiAgfVxuXG4gIGluaXRpYWxpemVEaXNwbGF5ZWRDb2x1bW5zKCkge1xuICAgIHRoaXMuZGlzcGxheWVkQ29sdW1ucyA9IHRoaXMuc3ViRm9ybS5yb3dzLmZsYXRNYXAoKGl0ZW06IGFueSkgPT4gXG4gICAgICBpdGVtLmdyaWRcbiAgICAgICAgICAubWFwKChncmlkSXRlbTogYW55KSA9PiBncmlkSXRlbS5lbGVtZW50LnF1ZXN0aW9uKVxuICApO1xuICBcbiAgIC8vIHRoaXMuZGlzcGxheWVkQ29sdW1ucyA9IHRoaXMuc3ViRm9ybS5mb3JtRWxlbWVudHMubWFwKChmZTogYW55KSA9PiBmZS5lbGVtZW50LnF1ZXN0aW9uKTtcbiAgICB0aGlzLmRpc3BsYXllZENvbHVtbnMucHVzaCgnYWN0aW9ucycpO1xuICB9XG5cbiAgZ2V0QW5zd2VyQnlRdWVzdGlvbklkKHN1Ym1pc3Npb246IFN1Ym1pc3Npb24sIHF1ZXN0aW9uSWQ6IHN0cmluZykge1xuICAgIGNvbnN0IGFuc3dlcnMgPSAgc3VibWlzc2lvbi5hbnN3ZXJzLmZpbmQoYW5zd2VyID0+IGFuc3dlci5xdWVzdGlvbklkID09PSBxdWVzdGlvbklkKTtcbiAgICBpZihhbnN3ZXJzKSB7XG4gICAgICBhbnN3ZXJzWydodG1sQ29udGVudCddID0gdGhpcy5zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdEh0bWwoYW5zd2Vycy5hbnN3ZXIpO1xuICAgIH1cbiAgIFxuICAgIHJldHVybiBhbnN3ZXJzO1xuICB9XG5cbiAgc3ViRm9ybVN1Ym1pc3Npb24oc3ViRm9ybTogYW55KSB7XG4gICAgY29uc3QgcHJvY2Vzc0Zvcm1FbGVtZW50cyA9IChyb3dzOiBhbnlbXSwgaXNDaGlsZDogYm9vbGVhbiA9IGZhbHNlKTogQW5zd2VyW10gPT4ge1xuICAgICAgY29uc3QgYW5zd2VyczogQW5zd2VyW10gPSBbXTtcbiAgXG4gICAgICByb3dzLmZsYXRNYXAoKGl0ZW06IGFueSkgPT4gXG4gICAgICAgIGl0ZW0uZ3JpZC5mb3JFYWNoKChmb3JtRWxlbWVudDogYW55KSA9PiB7XG4gICAgICAgIGNvbnN0IGFuc3dlcjogQW5zd2VyID0ge1xuICAgICAgICAgIHF1ZXN0aW9uSWQ6IGZvcm1FbGVtZW50LmVsZW1lbnQuaWQsXG4gICAgICAgICAgYW5zd2VyOiBmb3JtRWxlbWVudC5lbGVtZW50Py5hbnN3ZXIgfHwgJycsXG4gICAgICAgICAgZmlsZXM6IGZvcm1FbGVtZW50LmVsZW1lbnQuZm9ybUVsZW1lbnQuZWxlbWVudFR5cGUgPT0gJ0ZJTEVfUElDS0VSJyAmJiBmb3JtRWxlbWVudC5lbGVtZW50LmFuc3dlclxuICAgICAgICAgICAgPyBmb3JtRWxlbWVudC5lbGVtZW50LmFuc3dlclxuICAgICAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICAgICAgaXNDaGlsZDogaXNDaGlsZFxuICAgICAgICB9O1xuICBcbiAgICAgICAgaWYgKFxuICAgICAgICAgIGZvcm1FbGVtZW50LmVsZW1lbnQuZm9ybUVsZW1lbnQuZWxlbWVudFR5cGUgPT0gJ0ZJTEVfUElDS0VSJyAmJlxuICAgICAgICAgIGZvcm1FbGVtZW50LmVsZW1lbnQuYW5zd2VyXG4gICAgICAgICkge1xuICAgICAgICAgIGNvbnN0IGZpbGVOYW1lcyA9IGZvcm1FbGVtZW50LmVsZW1lbnQuYW5zd2VyLm1hcChcbiAgICAgICAgICAgIChmaWxlOiBhbnkpID0+IGZpbGU/Ll9maWxlLm5hbWVcbiAgICAgICAgICApO1xuICAgICAgICAgIGFuc3dlci5hbnN3ZXIgPSBmaWxlTmFtZXM7XG4gICAgICAgIH1cbiAgICAgICAgYW5zd2Vycy5wdXNoKGFuc3dlcik7XG4gIFxuICAgICAgICBpZiAoZm9ybUVsZW1lbnQuZWxlbWVudC5jaGlsZExvZ2ljcykge1xuICAgICAgICAgIGZvcm1FbGVtZW50LmVsZW1lbnQuY2hpbGRMb2dpY3MuZm9yRWFjaCgobG9naWM6IGFueSkgPT4ge1xuICAgICAgICAgICAgaWYobG9naWMuc2hvd0xvZ2ljKXtcbiAgICAgICAgICAgICAgYW5zd2Vycy5wdXNoKC4uLnByb2Nlc3NGb3JtRWxlbWVudHMobG9naWMucm93cywgdHJ1ZSkpO1xuICAgICAgICAgICAgICBsb2dpYy5zaG93TG9naWM9ZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgICApO1xuICAgICAgcmV0dXJuIGFuc3dlcnM7XG4gICAgfTtcbiAgXG4gICAgY29uc3QgYW5zd2VycyA9IHByb2Nlc3NGb3JtRWxlbWVudHMoc3ViRm9ybS5yb3dzKTtcbiAgXG4gICAgaWYgKGFuc3dlcnMubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3Qgc3VibWlzc2lvbjogU3VibWlzc2lvbiA9IHtcbiAgICAgICAgc3VibWlzc2lvbklkOiAnJyxcbiAgICAgICAgYW5zd2VyczogYW5zd2VycyxcbiAgICAgIH07XG4gICAgICB0aGlzLnN1Ym1pc3Npb25zLnB1c2goc3VibWlzc2lvbik7XG4gICAgICB0aGlzLnN1Ym1pc3Npb25zID0gWy4uLnRoaXMuc3VibWlzc2lvbnNdO1xuICAgICAgdGhpcy51cGRhdGVTdWJGb3JtV2l0aFN1Ym1pc3Npb25zKCk7XG4gICAgfVxuICB9XG4gIFxuXG4gIGVkaXRTdWJGb3JtU3VibWlzc2lvbihpbmRleDogbnVtYmVyLCBzdWJtaXNzaW9uOiBTdWJtaXNzaW9uKSB7XG4gICAgY29uc3Qgc3ViRm9ybSA9IHRoaXMuYmluZEFuc3dlcnModGhpcy5zdWJGb3JtLCBzdWJtaXNzaW9uKTtcbiAgICBjb25zdCBkaWFsb2dDb25maWcgPSBuZXcgTWF0RGlhbG9nQ29uZmlnKCk7XG4gICAgZGlhbG9nQ29uZmlnLnBvc2l0aW9uID0geyB0b3A6ICc1JScgfTtcbiAgICBkaWFsb2dDb25maWcud2lkdGggPSAnMTAwJSc7XG4gICAgZGlhbG9nQ29uZmlnLmRhdGEgPSB7XG4gICAgICBzdWJGb3JtOiBzdWJGb3JtLFxuICAgICAgYWNjZXB0ZWRMYW5ndWFnZTogdGhpcy5hY2NlcHRlZExhbmd1YWdlXG4gICAgfTtcbiAgICBkaWFsb2dDb25maWcuaGFzQmFja2Ryb3AgPSB0cnVlO1xuICAgIGRpYWxvZ0NvbmZpZy5kaXNhYmxlQ2xvc2UgPSB0cnVlO1xuICAgIGRpYWxvZ0NvbmZpZy5tYXhIZWlnaHQgPSAnODB2aCc7XG4gICAgY29uc3QgZGlhbG9nUmVmID0gdGhpcy5kaWFsb2cub3BlbihTdWJtaXNzaW9uTW9kYWxDb21wb25lbnQsIGRpYWxvZ0NvbmZpZyk7XG5cbiAgICBkaWFsb2dSZWYuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUoKHJlc3VsdDogYW55KSA9PiB7XG4gICAgICBpZiAocmVzdWx0KSB7XG4gICAgICAgICAgdGhpcy51cGRhdGVTdWJtaXNzaW9uKHJlc3VsdCwgaW5kZXgpO1xuICAgICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBiaW5kQW5zd2VycyhzdWJGb3JtOiBhbnksIHN1Ym1pc3Npb246IFN1Ym1pc3Npb24pOiBhbnkge1xuICAgIGNvbnN0IGJpbmRFbGVtZW50QW5zd2VycyA9IChyb3dzOiBhbnlbXSwgYW5zd2VyczogQW5zd2VyW10pID0+IHtcbiAgICAgIHJvd3MuZm9yRWFjaCgocm93OiBhbnkpID0+IHtcbiAgICAgICAgcm93LmdyaWQuZm9yRWFjaCgoZ3JpZDphbnkpPT57ICAgICAgICAgIFxuICAgICAgICAgIGNvbnN0IGFuc3dlciA9IGFuc3dlcnMuZmluZChcbiAgICAgICAgICAgIChhKSA9PiBhLnF1ZXN0aW9uSWQgPT09IGdyaWQuZWxlbWVudC5pZFxuICAgICAgICAgICk7XG4gICAgICAgICAgaWYgKGFuc3dlcikge1xuICAgICAgICAgICAgZ3JpZC5lbGVtZW50LmFuc3dlciA9XG4gICAgICAgICAgICBncmlkLmVsZW1lbnQuZm9ybUVsZW1lbnQuZWxlbWVudFR5cGUgPT0gJ0ZJTEVfUElDS0VSJ1xuICAgICAgICAgICAgICAgID8gYW5zd2VyPy5maWxlc1xuICAgICAgICAgICAgICAgIDogYW5zd2VyLmFuc3dlcjtcbiAgICAgICAgICAgICAgICBncmlkLmVsZW1lbnQuYW5zd2VySWQgPSBhbnN3ZXIuYW5zd2VySWQ7XG4gICAgICAgICAgICAgICAgZ3JpZC5lbGVtZW50LmF0dGFjaG1lbnRzID0gYW5zd2VyLmF0dGFjaG1lbnRzO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoZ3JpZC5lbGVtZW50LmNoaWxkTG9naWNzKSB7XG4gICAgICAgICAgICBncmlkLmVsZW1lbnQuY2hpbGRMb2dpY3MuZm9yRWFjaCgobG9naWM6IGFueSkgPT4ge1xuICAgICAgICAgICAgICBiaW5kRWxlbWVudEFuc3dlcnMobG9naWMucm93cywgYW5zd2Vycyk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICAgIFxuICAgICAgfSk7XG4gICAgfTtcblxuICAgIGNvbnN0IHVwZGF0ZWRTdWJGb3JtID0geyAuLi5zdWJGb3JtIH07ICAgIFxuICAgIGJpbmRFbGVtZW50QW5zd2Vycyh1cGRhdGVkU3ViRm9ybS5yb3dzLCBzdWJtaXNzaW9uLmFuc3dlcnMpO1xuICAgIHJldHVybiB1cGRhdGVkU3ViRm9ybTtcbiAgfVxuXG4gIGRlbGV0ZVN1YkZvcm0oaW5kZXg6IG51bWJlcikge1xuICAgIGNvbnN0IHN1Ym1pc3Npb24gPSB0aGlzLnN1Ym1pc3Npb25zW2luZGV4XTtcbiAgICBpZiAoc3VibWlzc2lvbi5zdWJtaXNzaW9uSWQpIHtcbiAgICAgIHRoaXMuZGVsZXRlZFN1Ym1pc3Npb25zLnB1c2goc3VibWlzc2lvbi5zdWJtaXNzaW9uSWQpO1xuICAgIH1cbiAgICB0aGlzLnN1Ym1pc3Npb25zLnNwbGljZShpbmRleCwgMSk7XG4gICAgdGhpcy5zdWJtaXNzaW9ucyA9IFsuLi50aGlzLnN1Ym1pc3Npb25zXTtcbiAgICB0aGlzLnVwZGF0ZVN1YkZvcm1XaXRoU3VibWlzc2lvbnMoKTtcbiAgfVxuXG4gIGFkZE5ld1N1Ym1pc3Npb24oKSB7XG4gICAgY29uc3Qgc3ViRm9ybSA9IHRoaXMuY2xlYW5DaXJjdWxhclJlZmVyZW5jZXModGhpcy5zdWJGb3JtKTtcbiAgICBjb25zdCBkaWFsb2dDb25maWcgPSBuZXcgTWF0RGlhbG9nQ29uZmlnKCk7XG4gICAgZGlhbG9nQ29uZmlnLnBvc2l0aW9uID0geyB0b3A6ICc1JScgfTtcbiAgICBkaWFsb2dDb25maWcud2lkdGggPSAnMTAwJSc7XG4gICAgZGlhbG9nQ29uZmlnLmRhdGEgPSB7XG4gICAgICBzdWJGb3JtOiBzdWJGb3JtLCBcbiAgICAgIGFjY2VwdGVkTGFuZ3VhZ2U6IHRoaXMuYWNjZXB0ZWRMYW5ndWFnZVxuICAgIH07XG4gICAgZGlhbG9nQ29uZmlnLmhhc0JhY2tkcm9wID0gdHJ1ZTtcbiAgICBkaWFsb2dDb25maWcuZGlzYWJsZUNsb3NlID0gdHJ1ZTtcbiAgICBkaWFsb2dDb25maWcubWF4SGVpZ2h0ID0gJzgwdmgnO1xuICAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nLm9wZW4oU3VibWlzc2lvbk1vZGFsQ29tcG9uZW50LCBkaWFsb2dDb25maWcpO1xuICBcbiAgICBkaWFsb2dSZWYuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUoKHJlc3VsdDogYW55KSA9PiB7XG4gICAgICBpZiAocmVzdWx0KSB7XG4gICAgICAgIGNvbnN0IGhhc0RhdGEgPSByZXN1bHQucm93cy5mbGF0TWFwKChpdGVtOiBhbnkpID0+IFxuICAgICAgICAgIGl0ZW0uZ3JpZFxuICAgICAgICAgICAgICAuc29tZSgoZm9ybUVsZW1lbnQ6IGFueSkgPT4gZm9ybUVsZW1lbnQuZWxlbWVudC5hbnN3ZXIgJiYgZm9ybUVsZW1lbnQuZWxlbWVudC5hbnN3ZXIubGVuZ3RoID4gMClcbiAgICAgICk7XG4gIFxuICAgICAgICBpZiAoaGFzRGF0YSkge1xuICAgICAgICAgIHRoaXMuc3ViRm9ybVN1Ym1pc3Npb24ocmVzdWx0KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICB9XG4gIFxuICBjbGVhbkNpcmN1bGFyUmVmZXJlbmNlcyhvYmo6IGFueSwgc2VlbiA9IG5ldyBXZWFrU2V0KCkpIHtcbiAgICBpZiAob2JqID09PSBudWxsIHx8IHR5cGVvZiBvYmogIT09IFwib2JqZWN0XCIpIHtcbiAgICAgIHJldHVybiBvYmo7XG4gICAgfVxuICBcbiAgICBpZiAoc2Vlbi5oYXMob2JqKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgXG4gICAgc2Vlbi5hZGQob2JqKTtcbiAgXG4gICAgY29uc3QgY2xlYW5lZE9iajogYW55ID0gQXJyYXkuaXNBcnJheShvYmopID8gW10gOiB7fTtcbiAgXG4gICAgZm9yIChjb25zdCBrZXkgaW4gb2JqKSB7XG4gICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwga2V5KSkge1xuICAgICAgICBjbGVhbmVkT2JqW2tleV0gPSB0aGlzLmNsZWFuQ2lyY3VsYXJSZWZlcmVuY2VzKG9ialtrZXldLCBzZWVuKTtcbiAgICAgIH1cbiAgICB9XG4gIFxuICAgIHJldHVybiBjbGVhbmVkT2JqO1xuICB9XG5cbiAgdXBkYXRlU3VibWlzc2lvbihyZXN1bHQ6IGFueSwgaW5kZXg6IG51bWJlcikge1xuICAgIGNvbnN0IHByb2Nlc3NGb3JtRWxlbWVudHMgPSAocm93czogYW55W10sIGFuc3dlcnM6IEFuc3dlcltdKSA9PiB7XG4gICAgICByb3dzLmZvckVhY2goKHJvdzogYW55KSA9PiB7XG4gICAgICAgIHJvdy5ncmlkLmZvckVhY2goKGdyaWQ6YW55KT0+e1xuICAgICAgICAgIGxldCBhbnN3ZXI6IEFuc3dlciA9IHtcbiAgICAgICAgICAgIHF1ZXN0aW9uSWQ6IGdyaWQuZWxlbWVudC5pZCxcbiAgICAgICAgICAgIGFuc3dlcklkOiBncmlkLmVsZW1lbnQ/LmFuc3dlcklkIHx8ICcnLFxuICAgICAgICAgICAgYXR0YWNobWVudHM6IGdyaWQuZWxlbWVudC5hdHRhY2htZW50cyB8fCBbXSxcbiAgICAgICAgICAgIGFuc3dlcjogW10sXG4gICAgICAgICAgICBmaWxlczogW10sXG4gICAgICAgICAgICBkZWxldGVGaWxlczogW10sXG4gICAgICAgICAgfTtcbiAgICBcbiAgICAgICAgICBpZiAoYW5zd2VyLmF0dGFjaG1lbnRzKSB7XG4gICAgICAgICAgICBhbnN3ZXIuYW5zd2VyID0gYW5zd2VyLmF0dGFjaG1lbnRzLm1hcChcbiAgICAgICAgICAgICAgKGF0dGFjaG1lbnQ6IEF0dGFjaG1lbnQpID0+IGF0dGFjaG1lbnQuZmlsZU5hbWVcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgIFxuICAgICAgICAgIGlmIChncmlkLmVsZW1lbnQuZm9ybUVsZW1lbnQuZWxlbWVudFR5cGUgPT09ICdGSUxFX1BJQ0tFUicpIHtcbiAgICAgICAgICAgIGlmIChncmlkLmVsZW1lbnQ/LmRlbGV0ZUZpbGVzKSB7XG4gICAgICAgICAgICAgIGFuc3dlci5hbnN3ZXIgPSBbXTtcbiAgICAgICAgICAgICAgZ3JpZC5lbGVtZW50LmRlbGV0ZUZpbGVzLmZvckVhY2goKGRlbGV0ZWRJZDogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICAgICAgYW5zd2VyLmRlbGV0ZUZpbGVzPy5wdXNoKGRlbGV0ZWRJZCk7XG4gICAgICAgICAgICAgICAgaWYgKGFuc3dlci5hdHRhY2htZW50cykge1xuICAgICAgICAgICAgICAgICAgYW5zd2VyLmF0dGFjaG1lbnRzID0gYW5zd2VyLmF0dGFjaG1lbnRzLmZpbHRlcihcbiAgICAgICAgICAgICAgICAgICAgKGF0dGFjaG1lbnQ6IEF0dGFjaG1lbnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICBjb25zdCBmaWxlTmFtZSA9IGF0dGFjaG1lbnQuZmlsZU5hbWU7XG4gICAgICAgICAgICAgICAgICAgICAgaWYgKGF0dGFjaG1lbnQuZmlsZUlkICE9PSBkZWxldGVkSWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghYW5zd2VyLmFuc3dlci5pbmNsdWRlcyhmaWxlTmFtZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYW5zd2VyLmFuc3dlci5wdXNoKGZpbGVOYW1lKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGdyaWQuZWxlbWVudC5hbnN3ZXIpIHtcbiAgICAgICAgICAgICAgYW5zd2VyLmZpbGVzID0gZ3JpZC5lbGVtZW50LmFuc3dlcjtcbiAgICAgICAgICAgICAgZ3JpZC5lbGVtZW50LmFuc3dlci5mb3JFYWNoKChmaWxlOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBmaWxlTmFtZSA9IGZpbGUuX2ZpbGU/Lm5hbWU7XG4gICAgICAgICAgICAgICAgbGV0IGZpbGVOYW1lc0FycmF5ID0gQXJyYXkuaXNBcnJheShhbnN3ZXIuYW5zd2VyKVxuICAgICAgICAgICAgICAgICAgPyBhbnN3ZXIuYW5zd2VyXG4gICAgICAgICAgICAgICAgICA6IFtdO1xuICAgICAgICAgICAgICAgIGlmICghZmlsZU5hbWVzQXJyYXkuaW5jbHVkZXMoZmlsZU5hbWUpKSB7XG4gICAgICAgICAgICAgICAgICBmaWxlTmFtZXNBcnJheS5wdXNoKGZpbGVOYW1lKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYW5zd2VyLmFuc3dlciA9IGZpbGVOYW1lc0FycmF5O1xuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgYW5zd2VyID0ge1xuICAgICAgICAgICAgICBxdWVzdGlvbklkOiBncmlkLmVsZW1lbnQuaWQsXG4gICAgICAgICAgICAgIGFuc3dlcklkOiBncmlkLmVsZW1lbnQ/LmFuc3dlcklkIHx8ICcnLFxuICAgICAgICAgICAgICBhdHRhY2htZW50czogZ3JpZC5lbGVtZW50LmF0dGFjaG1lbnRzLFxuICAgICAgICAgICAgICBhbnN3ZXI6IGdyaWQuZWxlbWVudC5hbnN3ZXIsXG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH1cbiAgICAgICAgICBncmlkLmVsZW1lbnQuYW5zd2VyID0gJyc7XG4gICAgICAgICAgYW5zd2Vycy5wdXNoKGFuc3dlcik7XG4gICAgXG4gICAgICAgICAgaWYgKGdyaWQuZWxlbWVudC5jaGlsZExvZ2ljcykge1xuICAgICAgICAgICAgZ3JpZC5lbGVtZW50LmNoaWxkTG9naWNzLmZvckVhY2goKGxvZ2ljOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgaWYobG9naWMuc2hvd0xvZ2ljKXtcbiAgICAgICAgICAgICAgICBwcm9jZXNzRm9ybUVsZW1lbnRzKGxvZ2ljLnJvd3MsIGFuc3dlcnMpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICB9KTtcbiAgICB9O1xuICBcbiAgICB0aGlzLnN1Ym1pc3Npb25zW2luZGV4XS5hbnN3ZXJzID0gW107ICAgIFxuICAgIHByb2Nlc3NGb3JtRWxlbWVudHMocmVzdWx0LnJvd3MsIHRoaXMuc3VibWlzc2lvbnNbaW5kZXhdLmFuc3dlcnMpO1xuICAgIHRoaXMuc3VibWlzc2lvbnMgPSBbLi4udGhpcy5zdWJtaXNzaW9uc107XG4gICAgdGhpcy51cGRhdGVTdWJGb3JtV2l0aFN1Ym1pc3Npb25zKCk7XG4gICAgdGhpcy5jbGVhckVtcHR5Um93cygpO1xuICB9ICBcblxuICB1cGRhdGVTdWJGb3JtV2l0aFN1Ym1pc3Npb25zKCkge1xuICAgIHRoaXMuc3ViRm9ybS5zdWJtaXNzaW9ucyA9IHRoaXMuc3VibWlzc2lvbnM7XG4gICAgdGhpcy5zdWJGb3JtLmRlbGV0ZWRTdWJtaXNzaW9ucyA9IHRoaXMuZGVsZXRlZFN1Ym1pc3Npb25zO1xuICAgIHRoaXMuc3ViRm9ybUNoYW5nZS5lbWl0KHRoaXMuc3ViRm9ybSk7XG4gIH1cblxuICBjbGVhckVtcHR5Um93cygpIHtcbiAgICBjb25zdCBub25FbXB0eVN1Ym1pc3Npb25zOlN1Ym1pc3Npb25bXSA9IFtdO1xuICAgIGNvbnN0IGVtcHR5U3VibWlzc2lvbklkczpzdHJpbmdbXSA9IFtdO1xuICBcbiAgICB0aGlzLnN1Ym1pc3Npb25zLmZvckVhY2goc3VibWlzc2lvbiA9PiB7XG4gICAgICBpZiAoc3VibWlzc2lvbi5hbnN3ZXJzLnNvbWUoYW5zd2VyID0+IGFuc3dlci5hbnN3ZXIgIT09ICcnKSkge1xuICAgICAgICBub25FbXB0eVN1Ym1pc3Npb25zLnB1c2goc3VibWlzc2lvbik7XG4gICAgICB9IGVsc2UgaWYgKHN1Ym1pc3Npb24uc3VibWlzc2lvbklkKSB7XG4gICAgICAgIGVtcHR5U3VibWlzc2lvbklkcy5wdXNoKHN1Ym1pc3Npb24uc3VibWlzc2lvbklkKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgXG4gICAgdGhpcy5zdWJtaXNzaW9ucyA9IG5vbkVtcHR5U3VibWlzc2lvbnM7XG4gICAgdGhpcy5kZWxldGVkU3VibWlzc2lvbnMucHVzaCguLi5lbXB0eVN1Ym1pc3Npb25JZHMpO1xuICAgIHRoaXMudXBkYXRlU3ViRm9ybVdpdGhTdWJtaXNzaW9ucygpO1xuICB9XG4gIFxufVxuIiwiPGRpdiBjbGFzcz1cImV4YW1wbGUtY29udGFpbmVyIFwiIHRhYmluZGV4PVwiMFwiPlxuICA8ZGl2IGNsYXNzPVwidGFibGUtY29udGFpbmVyXCI+XG4gICAgPHRhYmxlIG1hdC10YWJsZSBbZGF0YVNvdXJjZV09XCJzdWJtaXNzaW9uc1wiIGNsYXNzPVwibWF0LWVsZXZhdGlvbi16OFwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgcm93IG9mIHN1YkZvcm0ucm93c1wiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZm9ybUVsZW1lbnQgb2Ygcm93LmdyaWRcIiBbbWF0Q29sdW1uRGVmXT1cImZvcm1FbGVtZW50LmVsZW1lbnQucXVlc3Rpb25cIj5cbiAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZiBjbGFzcz1cImJvcmRlciBib3JkZXItMVwiPnt7IGZvcm1FbGVtZW50LmVsZW1lbnQucXVlc3Rpb24gfX08L3RoPlxuICAgICAgICA8dGQgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgc3VibWlzc2lvblwiIGNsYXNzPVwiYm9yZGVyIGJvcmRlci0xXCIgW25nQ2xhc3NdPVwieydoaWRkZW4nOiBnZXRBbnN3ZXJCeVF1ZXN0aW9uSWQoc3VibWlzc2lvbiwgZm9ybUVsZW1lbnQuZWxlbWVudC5pZCk/LmlzQ2hpbGR9XCI+XG4gICAgICAgICAgPGRpdiBbaW5uZXJIVE1MXT1cImdldEFuc3dlckJ5UXVlc3Rpb25JZChzdWJtaXNzaW9uLCBmb3JtRWxlbWVudC5lbGVtZW50LmlkKT8uaHRtbENvbnRlbnRcIj48L2Rpdj5cbiAgICAgICAgPC90ZD5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJhY3Rpb25zXCIgc3RpY2t5RW5kPlxuICAgICAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmICBjbGFzcz1cImJvcmRlciBib3JkZXItMVwiPiBBY3Rpb25zIDwvdGg+XG4gICAgICAgIDx0ZCBtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCBzdWJtaXNzaW9uOyBsZXQgaSA9IGluZGV4XCIgY2xhc3M9XCJ0ZXh0LWNlbnRlciBib3JkZXIgYm9yZGVyLTFcIj5cblxuICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuXCIgbWF0LWljb24tYnV0dG9uIFttYXRNZW51VHJpZ2dlckZvcl09XCJtZW51XCIgYXJpYS1sYWJlbD1cIkV4YW1wbGUgaWNvbi1idXR0b24gd2l0aCBhIG1lbnVcIj5cbiAgICAgICAgICAgICAgPG1hdC1pY29uPm1vcmVfdmVydDwvbWF0LWljb24+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDxtYXQtbWVudSAjbWVudT1cIm1hdE1lbnVcIj5cbiAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtICAoY2xpY2spPVwiZWRpdFN1YkZvcm1TdWJtaXNzaW9uKGksIHN1Ym1pc3Npb24pXCI+XG4gICAgICAgICAgICAgICAgPHN2ZyB3aWR0aD1cIjI5XCIgaGVpZ2h0PVwiMjhcIiB2aWV3Qm94PVwiMCAwIDI5IDI4XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICAgICAgICAgICAgICA8cmVjdCB4PVwiMC41XCIgeT1cIjAuNVwiIHdpZHRoPVwiMjhcIiBoZWlnaHQ9XCIyNi40NzM3XCIgcng9XCI1LjVcIiBmaWxsPVwid2hpdGVcIiBzdHJva2U9XCIjRDhEOEQ4XCIvPlxuICAgICAgICAgICAgICAgICAgPHBhdGggZmlsbC1ydWxlPVwiZXZlbm9kZFwiIGNsaXAtcnVsZT1cImV2ZW5vZGRcIiBkPVwiTTEyLjAwMDkgMTkuMDc4N0g5LjE1ODJWMTYuMjM2MUM5LjE1ODIgMTUuOTQ0NyA5LjI3MzkgMTUuNjY1MyA5LjQ3OTk5IDE1LjQ1OTNMMTYuMjIyNCA4LjcxNjg2QzE2LjQyODQgOC41MTA1IDE2LjcwOCA4LjM5NDUzIDE2Ljk5OTUgOC4zOTQ1M0MxNy4yOTExIDguMzk0NTMgMTcuNTcwNyA4LjUxMDUgMTcuNzc2NyA4LjcxNjg2TDE5LjUyMDEgMTAuNDYwM0MxOS43MjY0IDEwLjY2NjMgMTkuODQyNCAxMC45NDU4IDE5Ljg0MjQgMTEuMjM3NEMxOS44NDI0IDExLjUyOSAxOS43MjY0IDExLjgwODYgMTkuNTIwMSAxMi4wMTQ1TDEyLjc3NzcgMTguNzU3QzEyLjU3MTUgMTguOTYyOCAxMi4yOTIyIDE5LjA3ODUgMTIuMDAwOSAxOS4wNzg3WlwiIHN0cm9rZT1cIiMwODRGRkZcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XG4gICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTE1LjE3MDQgMTAuMzk4NEwxNy44NDE1IDEzLjA2OTVcIiBzdHJva2U9XCIjMDg0RkZGXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxuICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIChjbGljayk9XCJkZWxldGVTdWJGb3JtKGkpXCI+XG4gICAgICAgICAgICAgICAgPHN2ZyB3aWR0aD1cIjI5XCIgaGVpZ2h0PVwiMjhcIiB2aWV3Qm94PVwiMCAwIDI5IDI4XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICAgICAgICAgICAgICA8cmVjdCB4PVwiMC41XCIgeT1cIjAuNVwiIHdpZHRoPVwiMjcuNjQwMlwiIGhlaWdodD1cIjI2LjEzMjhcIiByeD1cIjUuNVwiIGZpbGw9XCJ3aGl0ZVwiIHN0cm9rZT1cIiNEOEQ4RDhcIi8+XG4gICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTguNjA0NDkgOS4yMDYzN0gyMC4wMzU0XCIgc3Ryb2tlPVwiIzA4NEZGRlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cbiAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTkuMjE4OSA5LjIwNzAzVjE3Ljc4NjNDMTkuMjE4OSAxOC42NDgyIDE4LjQ4ODEgMTkuMzQ2MiAxNy41ODU5IDE5LjM0NjJIMTEuMDUzOUMxMC4xNTE3IDE5LjM0NjIgOS40MjA5IDE4LjY0ODIgOS40MjA5IDE3Ljc4NjNWOS4yMDcwM1wiIHN0cm9rZT1cIiMwODRGRkZcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XG4gICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTE2Ljc2OTYgNi42NzEyMkgxMS44NzA2XCIgc3Ryb2tlPVwiIzA4NEZGRlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cbiAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTIuNjg3MSAxMi4zMjQyVjE2LjIyMzlcIiBzdHJva2U9XCIjMDg0RkZGXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxuICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xNS45NTMyIDEyLjMyNDJWMTYuMjIzOVwiIHN0cm9rZT1cIiMwODRGRkZcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XG4gICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9tYXQtbWVudT5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC90ZD5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICA8dHIgbWF0LWhlYWRlci1yb3cgKm1hdEhlYWRlclJvd0RlZj1cImRpc3BsYXllZENvbHVtbnNcIj48L3RyPlxuICAgICAgPHRyIG1hdC1yb3cgKm1hdFJvd0RlZj1cImxldCByb3c7IGNvbHVtbnM6IGRpc3BsYXllZENvbHVtbnM7XCI+PC90cj5cbiAgICA8L3RhYmxlPlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cImZvb3RlclwiPlxuICAgIDxkaXYgY2xhc3M9XCJhZGROZXdCdG5cIiAoY2xpY2spPVwiYWRkTmV3U3VibWlzc2lvbigpXCI+XG4gICAgICA8c3ZnIHdpZHRoPVwiMTVcIiBoZWlnaHQ9XCIxNFwiIHZpZXdCb3g9XCIwIDAgMTUgMTRcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgICAgICAgPHBhdGggZmlsbC1ydWxlPVwiZXZlbm9kZFwiIGNsaXAtcnVsZT1cImV2ZW5vZGRcIiBkPVwiTTEyLjU1NTYgMTMuMjc3OEgyLjQ0NDQ0QzEuNjQ2MzkgMTMuMjc3OCAxIDEyLjY2NzMgMSAxMS45MTM2VjIuMzY0MkMxIDEuNjEwNDggMS42NDYzOSAxIDIuNDQ0NDQgMUgxMi41NTU2QzEzLjM1MzYgMSAxNCAxLjYxMDQ4IDE0IDIuMzY0MlYxMS45MTM2QzE0IDEyLjY2NzMgMTMuMzUzNiAxMy4yNzc4IDEyLjU1NTYgMTMuMjc3OFpcIiBzdHJva2U9XCIjRDhEOEQ4XCIgc3Ryb2tlLXdpZHRoPVwiMC44XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxuICAgICAgICA8cGF0aCBkPVwiTTUuMzMzNSA3LjUwMzQ3SDkuNjY2ODNcIiBzdHJva2U9XCIjMDg0RkZGXCIgc3Ryb2tlLXdpZHRoPVwiMC44XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxuICAgICAgICA8cGF0aCBkPVwiTTcuNTAwMDUgNS4zMzU5NFY5LjY2OTI3XCIgc3Ryb2tlPVwiIzA4NEZGRlwiIHN0cm9rZS13aWR0aD1cIjAuOFwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cbiAgICAgIDwvc3ZnPlxuICAgICAgPGEgY2xhc3M9XCJtcy0yIHRleHQtZGVjb3JhdGlvbi1ub25lXCI+QWRkIE5ldzwvYT5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|
|
@@ -3583,11 +3583,12 @@ class MultipleSubformComponent {
|
|
|
3583
3583
|
this.updateSubFormWithSubmissions();
|
|
3584
3584
|
}
|
|
3585
3585
|
addNewSubmission() {
|
|
3586
|
+
const subForm = this.cleanCircularReferences(this.subForm);
|
|
3586
3587
|
const dialogConfig = new MatDialogConfig();
|
|
3587
3588
|
dialogConfig.position = { top: '5%' };
|
|
3588
3589
|
dialogConfig.width = '100%';
|
|
3589
3590
|
dialogConfig.data = {
|
|
3590
|
-
subForm:
|
|
3591
|
+
subForm: subForm,
|
|
3591
3592
|
acceptedLanguage: this.acceptedLanguage
|
|
3592
3593
|
};
|
|
3593
3594
|
dialogConfig.hasBackdrop = true;
|
|
@@ -3604,6 +3605,22 @@ class MultipleSubformComponent {
|
|
|
3604
3605
|
}
|
|
3605
3606
|
});
|
|
3606
3607
|
}
|
|
3608
|
+
cleanCircularReferences(obj, seen = new WeakSet()) {
|
|
3609
|
+
if (obj === null || typeof obj !== "object") {
|
|
3610
|
+
return obj;
|
|
3611
|
+
}
|
|
3612
|
+
if (seen.has(obj)) {
|
|
3613
|
+
return;
|
|
3614
|
+
}
|
|
3615
|
+
seen.add(obj);
|
|
3616
|
+
const cleanedObj = Array.isArray(obj) ? [] : {};
|
|
3617
|
+
for (const key in obj) {
|
|
3618
|
+
if (Object.prototype.hasOwnProperty.call(obj, key)) {
|
|
3619
|
+
cleanedObj[key] = this.cleanCircularReferences(obj[key], seen);
|
|
3620
|
+
}
|
|
3621
|
+
}
|
|
3622
|
+
return cleanedObj;
|
|
3623
|
+
}
|
|
3607
3624
|
updateSubmission(result, index) {
|
|
3608
3625
|
const processFormElements = (rows, answers) => {
|
|
3609
3626
|
rows.forEach((row) => {
|