imm-element-ui 2.9.3 → 2.9.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.
|
@@ -655,17 +655,69 @@ export class GridComponent {
|
|
|
655
655
|
this.ajustGridHeight();
|
|
656
656
|
}
|
|
657
657
|
handleDeletedRows(deletedRows) {
|
|
658
|
-
|
|
659
|
-
|
|
658
|
+
let headerName = '';
|
|
659
|
+
this.toOptions().columnDefs?.forEach((item) => {
|
|
660
|
+
if (item.field == this.mainField) {
|
|
661
|
+
headerName = item.headerName;
|
|
662
|
+
}
|
|
663
|
+
});
|
|
664
|
+
const result = this.grid.api.applyTransaction({ remove: deletedRows });
|
|
665
|
+
result?.remove.forEach((node) => {
|
|
666
|
+
const rowIndex = node.sourceRowIndex ?? node.rowIndex;
|
|
667
|
+
if (rowIndex == null) {
|
|
668
|
+
return;
|
|
669
|
+
}
|
|
660
670
|
this.upsert()?.subsert[this.subIndex]['maptmp'].delete(rowIndex);
|
|
661
671
|
this.upsert()?.subsert[this.subIndex]['logtmp'].delete(rowIndex + this.mainField);
|
|
672
|
+
Array.from(this.upsert()?.subsert[this.subIndex]['maptmp']?.entries() || []).forEach(([key, value]) => {
|
|
673
|
+
if (!value.id && key > rowIndex) {
|
|
674
|
+
this.upsert()?.subsert[this.subIndex]['maptmp'].delete(key);
|
|
675
|
+
}
|
|
676
|
+
});
|
|
677
|
+
Array.from(this.upsert()?.subsert[this.subIndex]['logtmp']?.entries() || []).forEach(([key, value]) => {
|
|
678
|
+
const index = String(key).match(/^\d+/)?.[0];
|
|
679
|
+
if (!value.id && index != null && Number(index) > rowIndex) {
|
|
680
|
+
this.upsert()?.subsert[this.subIndex]['logtmp'].delete(key);
|
|
681
|
+
}
|
|
682
|
+
});
|
|
683
|
+
});
|
|
684
|
+
this.grid.api.forEachNode((node) => {
|
|
685
|
+
const rowIndex = node.rowIndex;
|
|
686
|
+
if (rowIndex == null || !node.data) {
|
|
687
|
+
return;
|
|
688
|
+
}
|
|
689
|
+
if (!node.data.id) {
|
|
690
|
+
this.upsert()?.subsert[this.subIndex]['maptmp'].set(rowIndex, node.data);
|
|
691
|
+
this.upsert()?.subsert[this.subIndex]['logtmp'].set(rowIndex + this.mainField, {
|
|
692
|
+
newValue: node.data[this.mainField],
|
|
693
|
+
id: 0,
|
|
694
|
+
label: headerName,
|
|
695
|
+
});
|
|
696
|
+
}
|
|
697
|
+
else {
|
|
698
|
+
Array.from(this.upsert()?.subsert[this.subIndex]['maptmp']?.entries() || []).forEach(([key, value]) => {
|
|
699
|
+
if (value.id === node.data.id && key != rowIndex) {
|
|
700
|
+
this.upsert()?.subsert[this.subIndex]['maptmp'].delete(key);
|
|
701
|
+
this.upsert()?.subsert[this.subIndex]['maptmp'].set(rowIndex, value);
|
|
702
|
+
}
|
|
703
|
+
});
|
|
704
|
+
Array.from(this.upsert()?.subsert[this.subIndex]['logtmp']?.entries() || []).forEach(([key, value]) => {
|
|
705
|
+
if (value.id == node.data.id) {
|
|
706
|
+
const index = String(key).match(/^\d+/)?.[0];
|
|
707
|
+
if (index != null && Number(index) != rowIndex) {
|
|
708
|
+
const newKey = String(key).replace(/^\d+/, `${rowIndex}`);
|
|
709
|
+
this.upsert()?.subsert[this.subIndex]['logtmp'].delete(key);
|
|
710
|
+
this.upsert()?.subsert[this.subIndex]['logtmp'].set(newKey, value);
|
|
711
|
+
}
|
|
712
|
+
}
|
|
713
|
+
});
|
|
714
|
+
}
|
|
662
715
|
});
|
|
663
716
|
let dt = [];
|
|
664
717
|
this.upsert()?.subsert[this.subIndex]['maptmp'].forEach((value, key) => {
|
|
665
718
|
dt.push(value);
|
|
666
719
|
});
|
|
667
720
|
this.upsert()['subsert'][this.subIndex]['subData'] = dt;
|
|
668
|
-
this.grid.api.applyTransaction({ remove: deletedRows });
|
|
669
721
|
this.gridDataChanged.emit();
|
|
670
722
|
this.ajustGridHeight();
|
|
671
723
|
}
|
|
@@ -950,4 +1002,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
950
1002
|
type: HostListener,
|
|
951
1003
|
args: ['window:resize']
|
|
952
1004
|
}] } });
|
|
953
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pbW0tZWxlbWVudC11aS9zcmMvbGliL2dyaWQvZ3JpZC9ncmlkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2ltbS1lbGVtZW50LXVpL3NyYy9saWIvZ3JpZC9ncmlkL2dyaWQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNOLFNBQVMsRUFDVCxTQUFTLEVBQ1QsVUFBVSxFQUNWLEtBQUssRUFDTCxNQUFNLEVBQ04sTUFBTSxFQUNOLFFBQVEsRUFDUixTQUFTLEVBQ1QsTUFBTSxFQUNOLE1BQU0sRUFDTixTQUFTLEVBQ1QsaUJBQWlCLEVBQ2pCLFlBQVksRUFDWixNQUFNLEdBQ04sTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBRXZFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUV6RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUsYUFBYSxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNyRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDdkQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzFELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQzs7OztBQUVuRCxNQUFNLGVBQWUsR0FBRyxpQkFB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QUNwQixDQUFDOytHQTk4QlcsYUFBYTttR0FBYixhQUFhLGtuR0FDZCxhQUFhLDBFQUNiLGFBQWEsMkJBQVUsVUFBVSw2SENoRzdDLDhzRUE0REEsOHZDRDhCVyxhQUFhLGcwVEFBRSxZQUFZOzs0RkFJekIsYUFBYTtrQkFQekIsU0FBUzsrQkFDQyxhQUFhLGNBQ1gsSUFBSSxXQUNQLENBQUMsYUFBYSxFQUFFLFlBQVksQ0FBQztrRkFLWixJQUFJO3NCQUE3QixTQUFTO3VCQUFDLGFBQWE7Z0JBQ3dCLE9BQU87c0JBQXRELFNBQVM7dUJBQUMsYUFBYSxFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRTtnQkFDbEIsWUFBWTtzQkFBdkMsU0FBUzt1QkFBQyxlQUFlO2dCQStEMUIsUUFBUTtzQkFEUCxZQUFZO3VCQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuXHRDb21wb25lbnQsXG5cdFZpZXdDaGlsZCxcblx0RWxlbWVudFJlZixcblx0aW5wdXQsXG5cdGVmZmVjdCxcblx0aW5qZWN0LFxuXHRjb21wdXRlZCxcblx0dW50cmFja2VkLFxuXHRvdXRwdXQsXG5cdE5nWm9uZSxcblx0UmVuZGVyZXIyLFxuXHRDaGFuZ2VEZXRlY3RvclJlZixcblx0SG9zdExpc3RlbmVyLFxuXHRzaWduYWwsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ2VsbFZhbHVlQ2hhbmdlZEV2ZW50LCBDb2xEZWYsIEdyaWRPcHRpb25zIGFzIFJhd0dyaWRPcHRpb25zLCBSb3dEcmFnRW5kRXZlbnQgfSBmcm9tICdhZy1ncmlkLWNvbW11bml0eSc7XG5pbXBvcnQgeyBBZ0dyaWRBbmd1bGFyIH0gZnJvbSAnYWctZ3JpZC1hbmd1bGFyJztcbmltcG9ydCB7IFRoZW1lQ29uZmlnU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2UvdGhlbWVDb25maWcuc2VydmljZSc7XG5pbXBvcnQgeyBBY3Rpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZS9hY3Rpb24uc2VydmljZSc7XG5pbXBvcnQgeyBJMThuU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2UvaTE4bi5zZXJ2aWNlJztcbmltcG9ydCB7IFNlYXJjaCxDb2x1bW5GaWx0ZXIgfSBmcm9tICcuLi8uLi9hbS9hbS5jb21wb25lbnQnO1xuaW1wb3J0IHsgZ3JpZFV0aWxzIH0gZnJvbSAnLi4vZ3JpZC11dGlscyc7XG5pbXBvcnQgeyBCdXR0b25Nb2R1bGUgfSBmcm9tICdwcmltZW5nL2J1dHRvbic7XG5pbXBvcnQgeyBsYXN0VmFsdWVGcm9tLCBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IGNvbXBvbmVudHMsIENMSUVOVExJTUlUIH0gZnJvbSAnLi4vbW9jay1kYXRhJztcbmltcG9ydCB7IHRvT2JzZXJ2YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IHBhcnNlRnVuY3Rpb25zIH0gZnJvbSAnLi4vLi4vc2hhcmUvdXRpbHMnO1xuXG5jb25zdCBTVEFUSUNfSElERV9LRVkgPSAnX19pbW1TdGF0aWNIaWRlJztcbmNvbnN0IEhJREVfRVhQUkVTU0lPTl9LRVkgPSAnX19pbW1IaWRlRXhwcmVzc2lvbic7XG5cbmV4cG9ydCB0eXBlIENvbHVtbkhpZGVFeHByZXNzaW9uID0gKGRhdGE6IFJlY29yZDxzdHJpbmcsIGFueT4pID0+IGJvb2xlYW47XG5cbmV4cG9ydCBpbnRlcmZhY2UgR3JpZE9wdGlvbnMgZXh0ZW5kcyBSYXdHcmlkT3B0aW9ucyB7XG5cdHNlcnZlckZ1bmM/OiAoc2VhcmNoOiBTZWFyY2gpID0+IE9ic2VydmFibGU8YW55Pjtcblx0Y2xpZW50RnVuYz86IChzZWFyY2g6IFNlYXJjaCkgPT4gT2JzZXJ2YWJsZTxhbnk+O1xuXHRzaG93U2VhcmNoPzogYm9vbGVhbjtcblx0cHJlU2VhcmNoPzogU2VhcmNoO1xuXHR0cmVlRGF0YUZpZWxkPzogc3RyaW5nO1xuXHR0cmVlTGV2ZWw/OiBudW1iZXI7XG5cdGhlYWRlckhlaWdodD86IG51bWJlcjtcblx0c2Nyb2xsSGVpZ2h0Pzogc3RyaW5nO1xuXHRzaG93SW5kZXg/OiBib29sZWFuO1xuXHR1bmRvUmVkb0NlbGxFZGl0aW5nPzogYm9vbGVhbjtcblx0dW5kb1JlZG9DZWxsRWRpdGluZ0xpbWl0PzogbnVtYmVyO1xuXHRtYWluRmllbGQ/OiBzdHJpbmc7XG5cdG1vZGVsTmFtZT86IHN0cmluZztcblx0Zms/OiBzdHJpbmc7XG5cdGRyYWdTb3J0Pzogc3RyaW5nO1xuXHRzZWxlY3Rpb25Nb2RlPzogJ25vbmUnIHwgJ3NpbmdsZScgfCAnbXVsdGlwbGUnO1xuXHRkYXRhS2V5Pzogc3RyaW5nO1xuXHRyZWZlcmVuY2U/OiBzdHJpbmc7XG5cdGFkZERhdGFDYj86ICgpID0+IFJlY29yZDxzdHJpbmcsIGFueT5cbn1cblxuY29uc3QgZGVmYXVsdE9wdGlvbjogR3JpZE9wdGlvbnMgPSB7XG5cdC8vIHBvcHVwUGFyZW50OiBkb2N1bWVudC5ib2R5LFxuXHRkZWZhdWx0Q29sRGVmOiB7XG5cdFx0ZmxleDogMSxcblx0XHRtaW5XaWR0aDogMTAwLFxuXHRcdHNvcnRhYmxlOiBmYWxzZSxcblx0XHRmaWx0ZXI6IGZhbHNlLFxuXHR9LFxuXHRyb3dTZWxlY3Rpb246IHsgbW9kZTogJ211bHRpUm93JyB9LFxuXHRyb3dNb2RlbFR5cGU6ICdzZXJ2ZXJTaWRlJyxcblx0Y2VsbFNlbGVjdGlvbjoge1xuXHRcdGhhbmRsZToge1xuXHRcdFx0bW9kZTogJ3JhbmdlJyxcblx0XHR9LFxuXHR9LFxuXHRlbmFibGVDaGFydHM6IHRydWUsXG5cdHVuZG9SZWRvQ2VsbEVkaXRpbmc6IHRydWUsXG5cdHVuZG9SZWRvQ2VsbEVkaXRpbmdMaW1pdDogMjAsXG59O1xuXG5jb25zdCBkZWZhdWx0U29ydHMgPSBbeyBmaWVsZDogJ2NyZWF0ZWRBdCcsIGlzQXNjOiBmYWxzZSB9XTtcbmZ1bmN0aW9uIGZpbmRMYXN0SW5kZXgoYXJyYXk6IGFueVtdLCBwcmVkaWNhdGU6IGFueSwgdGhpc0FyZzogYW55KSB7XG5cdGZvciAobGV0IGkgPSBhcnJheS5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuXHRcdGlmIChwcmVkaWNhdGUuY2FsbCh0aGlzQXJnLCBhcnJheVtpXSwgaSwgYXJyYXkpKSB7XG5cdFx0XHRyZXR1cm4gaTtcblx0XHR9XG5cdH1cblx0cmV0dXJuIC0xO1xufVxuXG5AQ29tcG9uZW50KHtcblx0c2VsZWN0b3I6ICdjdXN0b20tZ3JpZCcsXG5cdHN0YW5kYWxvbmU6IHRydWUsXG5cdGltcG9ydHM6IFtBZ0dyaWRBbmd1bGFyLCBCdXR0b25Nb2R1bGVdLFxuXHR0ZW1wbGF0ZVVybDogJy4vZ3JpZC5jb21wb25lbnQuaHRtbCcsXG5cdHN0eWxlVXJsOiAnLi9ncmlkLmNvbXBvbmVudC5zY3NzJyxcbn0pXG5leHBvcnQgY2xhc3MgR3JpZENvbXBvbmVudCB7XG5cdEBWaWV3Q2hpbGQoQWdHcmlkQW5ndWxhcikgZ3JpZCE6IEFnR3JpZEFuZ3VsYXI7XG5cdEBWaWV3Q2hpbGQoQWdHcmlkQW5ndWxhciwgeyByZWFkOiBFbGVtZW50UmVmIH0pIGdyaWRSZWYhOiBFbGVtZW50UmVmO1xuXHRAVmlld0NoaWxkKCdncmlkQ29udGFpbmVyJykgY29udGFpbmVyUmVmITogRWxlbWVudFJlZjtcblx0Z3JpZE9wdGlvbnMgPSBpbnB1dDxHcmlkT3B0aW9ucz4oe30pO1xuXHRzZWxlY3Rpb25LZXlzID0gaW5wdXQ8YW55W10+KFtdKTtcblx0dG9PcHRpb25zID0gY29tcHV0ZWQoKCkgPT5cblx0XHR0aGlzLndpdGhHcmlkQ29udGV4dChncmlkVXRpbHMubWVyZ2VPcHRpb25zKHsgLi4uZGVmYXVsdE9wdGlvbiwgLi4udGhpcy5ncmlkT3B0aW9ucygpIH0sIHVudHJhY2tlZCgoKSA9PiB0aGlzLnNlYXJjaFBybSgpKS5saW1pdCwgdGhpcy5hY3Rpb24pKSxcblx0KTtcblx0dGhlbWVDb25maWcgPSBpbmplY3QoVGhlbWVDb25maWdTZXJ2aWNlKTtcblx0bG9jYWxlVGV4dDogYW55O1xuXHRpMThuU2VydmljZSA9IGluamVjdChJMThuU2VydmljZSk7XG5cdG15VGhlbWUgPSBjb21wdXRlZCgoKSA9PiBncmlkVXRpbHMuZ2V0VGhlbWUodGhpcy50aGVtZUNvbmZpZykpO1xuXHRjb21wb25lbnRzID0gY29tcG9uZW50cztcblx0Y29sdW1uRGVmczogQ29sRGVmW10gPSBbXTtcblx0aW5pdEdyaWQgPSB0cnVlO1xuXHRjb250ZW50TWFwOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge307XG5cdG1haW5GaWVsZCE6IHN0cmluZztcblx0bW9kZWxOYW1lITogc3RyaW5nO1xuXHR1cHNlcnQgPSBpbnB1dDxhbnk+KCk7XG5cdHN1YkluZGV4ITogbnVtYmVyO1xuXHRyb3dEYXRhID0gaW5wdXQ8YW55Pih1bmRlZmluZWQpO1xuXHRoaWRlRXhwcmVzc2lvbkRhdGEgPSBpbnB1dDxSZWNvcmQ8c3RyaW5nLCBhbnk+Pih7fSk7XG5cdGhpZGVFeHByZXNzaW9uVmVyc2lvbiA9IGlucHV0KDApO1xuXHRzZWFyY2hQcm0gPSBpbnB1dDxTZWFyY2g+KHt9KTtcblx0cmF3UHJtPzogU2VhcmNoO1xuXHRkZWxldGVFbWl0ID0gb3V0cHV0PG51bWJlcltdPigpO1xuXHRhZGRFbWl0ID0gb3V0cHV0KCk7XG5cdGdyaWREYXRhQ2hhbmdlZCA9IG91dHB1dDx2b2lkPigpO1xuXHRhZGRUeXBlID0gaW5wdXQ8J2hhbmRsZScgfCAnc2VsZWN0JyB8ICdub25lJz4oKTtcblx0c2VsZWN0RGF0YSA9IGlucHV0PGFueVtdPigpO1xuXHRzaG93QWN0ID0gaW5wdXQ8Ym9vbGVhbj4odHJ1ZSk7XG5cdGFjdFBvcyA9IGlucHV0PCd0b3AnIHwgJ2JvdHRvbSc+KCdib3R0b20nKTtcblx0YXV0aExldmVsID0gaW5wdXQ8bnVtYmVyPigtMSk7XG5cdGh0dHAgPSBpbmplY3QoSHR0cENsaWVudCk7XG5cdHJlbmRlcmVyID0gaW5qZWN0KFJlbmRlcmVyMik7XG5cdG5nWm9uZSA9IGluamVjdChOZ1pvbmUpO1xuXHRjZHIgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xuXHRzaG93RGVsZXRlID0gaW5wdXQ8Ym9vbGVhbj4odHJ1ZSk7XG5cdGRlbGV0ZUhpZGRlbiA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcblx0YWRkSGlkZGVuID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xuXHRncmlkRGlzYWJsZSA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcblx0YWRkU29ydCA9IGlucHV0PHN0cmluZz4oKTtcblx0c3ViU2F2ZVZpc2libGUgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XG5cdHN1YlNhdmVIaWRkZW4gPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XG5cdHN1YlNhdmVMYWJlbCA9IGlucHV0PHN0cmluZz4oJ+S/neWtmCcpO1xuXHRzdWJTYXZlRGlzYWJsZWQgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XG5cdHN1YlNhdmVFbWl0ID0gb3V0cHV0KCk7XG5cblx0cmljaE11bHRNYXA6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7fTtcblx0aG9yaXpvbnRhbFNjcm9sbEJhck9ic2VydmVyOiBhbnk7XG5cdGhvcml6b250YWxTY3JvbGxCYXJIZWlnaHQgPSAwO1xuXHR2ZXJ0aWNhbFNjcm9sbEJhck9ic2VydmVyOiBhbnk7XG5cdHZlcnRpY2FsU2Nyb2xsQmFyV2lkdGggPSAwO1xuXHRncmlkSGVpZ2h0ID0gMDtcblx0c2VsZWN0ZWRSb3dzID0gc2lnbmFsPGFueVtdPihbXSk7XG5cdG5vUm93cyA9IHRydWU7XG5cdHNob3dIb3Jpem9udGFsID0gZmFsc2U7XG5cdGRyYWdCZWZvcmVJbmRleCA9IC0xO1xuXHRzaW5nbGVDbGlja0VkaXQgPSBzaWduYWwoZmFsc2UpO1xuXHRwcml2YXRlIHNlYXJjaFBybVN1YjogYW55O1xuXHRwcml2YXRlIGNvbHVtbkRlZnNMb2FkSWQgPSAwO1xuXHRwcml2YXRlIGNvbHVtbkRlZnNIYXZlSGlkZUV4cHJlc3Npb24gPSBmYWxzZTtcblx0cHJpdmF0ZSBjb2x1bW5IaWRlU2lnbmF0dXJlID0gJyc7XG5cdHByaXZhdGUgY29sdW1uSGlkZUV4cHJlc3Npb25FcnJvclNldCA9IG5ldyBXZWFrU2V0PEZ1bmN0aW9uPigpO1xuXHRASG9zdExpc3RlbmVyKCd3aW5kb3c6cmVzaXplJylcblx0b25SZXNpemUoKSB7XG5cdFx0dGhpcy5zZXRTY3JvbGxIZWlnaHQoKTtcblx0fVxuXG5cdGNvbnN0cnVjdG9yKHByaXZhdGUgYWN0aW9uOiBBY3Rpb25TZXJ2aWNlKSB7XG5cdFx0dGhpcy5zaW5nbGVDbGlja0VkaXQuc2V0KHRoaXMuaXNNb2JpbGVPclRhYmxldEJyb3dzZXIoKSk7XG5cdFx0dGhpcy5zZWFyY2hQcm1TdWIgPSB0b09ic2VydmFibGUodGhpcy5zZWFyY2hQcm0pLnN1YnNjcmliZSgoc2VhcmNoUHJtKSA9PiB7XG5cdFx0XHRpZiAoc2VhcmNoUHJtLm1vZGVsTmFtZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRcdHRoaXMucmF3UHJtID0gc2VhcmNoUHJtO1xuXHRcdFx0XHR0aGlzLnNlYXJjaFBybVN1Yi51bnN1YnNjcmliZSgpO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHRcdGVmZmVjdChcblx0XHRcdCgpID0+IHtcblx0XHRcdFx0Y29uc3Qgb3B0aW9ucyA9IHRoaXMudG9PcHRpb25zKCk7XG5cdFx0XHRcdHZvaWQgdGhpcy5yZWZyZXNoQ29sdW1uRGVmcyhvcHRpb25zKTtcblx0XHRcdFx0dGhpcy5tYWluRmllbGQgPSBvcHRpb25zLm1haW5GaWVsZCE7XG5cdFx0XHRcdHRoaXMubW9kZWxOYW1lID0gb3B0aW9ucy5tb2RlbE5hbWUhO1xuXHRcdFx0XHRpZiAoIXRoaXMudXBzZXJ0KCk/LnN1YnNlcnQ/LmZpbmQoKHY6IGFueSkgPT4gdi5zdWJNb2RlbE5hbWUgPT09IHRoaXMubW9kZWxOYW1lKSkge1xuXHRcdFx0XHRcdHRoaXMudXBzZXJ0KCk/LnN1YnNlcnQ/LnB1c2goe1xuXHRcdFx0XHRcdFx0c3ViTW9kZWxOYW1lOiBvcHRpb25zLm1vZGVsTmFtZSxcblx0XHRcdFx0XHRcdGZrOiBvcHRpb25zLmZrLFxuXHRcdFx0XHRcdFx0c3ViRGF0YTogW10sXG5cdFx0XHRcdFx0XHRtYXB0bXA6IG5ldyBNYXAoKSxcblx0XHRcdFx0XHRcdGxvZ3RtcDogbmV3IE1hcCgpLFxuXHRcdFx0XHRcdFx0cmVmZXJlbmNlOiBvcHRpb25zLnJlZmVyZW5jZSxcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fVxuXHRcdFx0XHR0aGlzLnN1YkluZGV4ID0gdGhpcy51cHNlcnQoKT8uc3Vic2VydD8uZmluZEluZGV4KCh2OiBhbnkpID0+IHYuc3ViTW9kZWxOYW1lID09PSB0aGlzLm1vZGVsTmFtZSk7XG5cdFx0XHR9LFxuXHRcdFx0eyBhbGxvd1NpZ25hbFdyaXRlczogdHJ1ZSB9LFxuXHRcdCk7XG5cdFx0ZWZmZWN0KFxuXHRcdFx0KCkgPT4ge1xuXHRcdFx0XHRpZiAoIXRoaXMuYWN0aW9uLnNlYXJjaE1vbml0b3IodGhpcy50b09wdGlvbnMoKS5tb2RlbE5hbWUpKSB7XG5cdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHRoaXMuZ2V0RGF0YSgpO1xuXHRcdFx0fSxcblx0XHRcdHsgYWxsb3dTaWduYWxXcml0ZXM6IHRydWUgfSxcblx0XHQpO1xuXHRcdGVmZmVjdCgoKSA9PiB7XG5cdFx0XHRjb25zdCByb3dEYXRhID0gdGhpcy5yb3dEYXRhKCk7XG5cdFx0XHRpZiAocm93RGF0YSA9PT0gdW5kZWZpbmVkKSByZXR1cm47XG5cdFx0XHR1bnRyYWNrZWQoKCkgPT4ge1xuXHRcdFx0XHRjb25zdCBvcHRpb25zID0gdGhpcy50b09wdGlvbnMoKTtcblx0XHRcdFx0aWYgKHRoaXMuaGFzRHluYW1pY1NlbGVjdERhdGFDb2x1bW4ob3B0aW9ucykpIHtcblx0XHRcdFx0XHR2b2lkIHRoaXMucmVmcmVzaENvbHVtbkRlZnMob3B0aW9ucyk7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKG9wdGlvbnMucm93TW9kZWxUeXBlID09PSAnc2VydmVyU2lkZScgJiYgb3B0aW9ucy5zZXJ2ZXJGdW5jKSB7XG5cdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHR9XG5cdFx0XHRcdG9wdGlvbnMucm93TW9kZWxUeXBlID0gJ2NsaWVudFNpZGUnO1xuXHRcdFx0XHRvcHRpb25zLmNsaWVudEZ1bmMgPSAoKSA9PiBvZih7IGRhdGE6IHJvd0RhdGEsIHRvdGFsTnVtOiByb3dEYXRhPy5sZW5ndGggfSk7XG5cdFx0XHRcdHNldFRpbWVvdXQoKCkgPT4ge1xuXHRcdFx0XHRcdHRoaXMuZ2V0Q2xpZW50RGF0YSh1bmRlZmluZWQpO1xuXHRcdFx0XHR9LCAxMDApO1xuXHRcdFx0fSk7XG5cdFx0fSk7XG5cdFx0ZWZmZWN0KFxuXHRcdFx0KCkgPT4ge1xuXHRcdFx0XHRpZiAodGhpcy5zZWxlY3REYXRhKCkgJiYgdGhpcy5zZWxlY3REYXRhKCkhLmxlbmd0aCA+IDAgJiYgdGhpcy5ncmlkKSB7XG5cdFx0XHRcdFx0dGhpcy5oYW5kbGVBZGRlZFJvd3ModGhpcy5zZWxlY3REYXRhKCkhKTtcblx0XHRcdFx0fVxuXHRcdFx0fSxcblx0XHRcdHsgYWxsb3dTaWduYWxXcml0ZXM6IHRydWUgfSxcblx0XHQpO1xuXHRcdGVmZmVjdChcblx0XHRcdCgpID0+IHtcblx0XHRcdFx0dGhpcy50b09wdGlvbnMoKS5wcmVTZWFyY2ggJiZcblx0XHRcdFx0XHR0aGlzLmFjdGlvbi5zZXRTZWFyY2goeyBjb2x1bW5GaWx0ZXJzOiB0aGlzLnRvT3B0aW9ucygpLnByZVNlYXJjaCEuY29sdW1uRmlsdGVycyB9LCB0aGlzLnRvT3B0aW9ucygpLm1vZGVsTmFtZSk7XG5cdFx0XHR9LFxuXHRcdFx0eyBhbGxvd1NpZ25hbFdyaXRlczogdHJ1ZSB9LFxuXHRcdCk7XG5cdFx0ZWZmZWN0KFxuXHRcdFx0KCkgPT4ge1xuXHRcdFx0XHRjb25zdCBhY3Rpb24gPSB0aGlzLmFjdGlvbi5nZXRBY3Rpb24oKTtcblx0XHRcdFx0aWYgKGFjdGlvbj8udHlwZSA9PT0gJ2V4cG9ydCcpIHtcblx0XHRcdFx0XHR0aGlzLmdyaWQuYXBpLmV4cG9ydERhdGFBc0V4Y2VsKHsgZmlsZU5hbWU6IHRoaXMubW9kZWxOYW1lIH0pO1xuXHRcdFx0XHR9XG5cdFx0XHR9LFxuXHRcdFx0eyBhbGxvd1NpZ25hbFdyaXRlczogdHJ1ZSB9LFxuXHRcdCk7XG5cdFx0ZWZmZWN0KFxuXHRcdFx0KCkgPT4ge1xuXHRcdFx0XHR0aGlzLmhpZGVFeHByZXNzaW9uVmVyc2lvbigpO1xuXHRcdFx0XHR1bnRyYWNrZWQoKCkgPT4gdGhpcy5yZWZyZXNoQ29sdW1uSGlkZUV4cHJlc3Npb25zKCkpO1xuXHRcdFx0fSxcblx0XHRcdHsgYWxsb3dTaWduYWxXcml0ZXM6IHRydWUgfSxcblx0XHQpO1xuXHRcdHRoaXMuZWRpdGluZ0ZpeCgpO1xuXHR9XG5cblx0cHJpdmF0ZSB3aXRoR3JpZENvbnRleHQob3B0aW9uczogYW55KTogYW55IHtcblx0XHR0aGlzLmdyaWREaXNhYmxlKCk7XG5cdFx0cmV0dXJuIHtcblx0XHRcdC4uLm9wdGlvbnMsXG5cdFx0XHRjb250ZXh0OiB7XG5cdFx0XHRcdC4uLihvcHRpb25zLmNvbnRleHQgfHwge30pLFxuXHRcdFx0XHRncmlkRGlzYWJsZWQ6ICgpID0+IHRoaXMuZ3JpZERpc2FibGUoKSxcblx0XHRcdFx0Z3JpZDogKCkgPT4gdGhpcyxcblx0XHRcdH0sXG5cdFx0fTtcblx0fVxuXG5cdG5nT25Jbml0KCk6IHZvaWQge1xuXHRcdHRoaXMuaTE4blNlcnZpY2UuY2hhbmdlLnN1YnNjcmliZSgocmVzKSA9PiB7XG5cdFx0XHR0aGlzLmdyaWQgJiYgdGhpcy5ncmlkLmFwaS5kZXN0cm95KCk7XG5cdFx0XHR0aGlzLmluaXRHcmlkID0gZmFsc2U7XG5cdFx0XHR0aGlzLmxvY2FsZVRleHQgPSBncmlkVXRpbHMuZ2V0TG9jYWxUZXh0KHJlcyk7XG5cdFx0XHR0aGlzLmNvbHVtbkRlZnMgPSBncmlkVXRpbHMuaGFuZGxlSTE4bktleSh0aGlzLnJlc29sdmVDb2x1bW5IaWRlRXhwcmVzc2lvbnModGhpcy50b09wdGlvbnMoKS5jb2x1bW5EZWZzISksIHRoaXMuaTE4blNlcnZpY2UpO1xuXHRcdFx0dGhpcy5jb2x1bW5EZWZzSGF2ZUhpZGVFeHByZXNzaW9uID0gdGhpcy5oYXNDb2x1bW5IaWRlRXhwcmVzc2lvbih0aGlzLmNvbHVtbkRlZnMpO1xuXHRcdFx0dGhpcy5jb2x1bW5IaWRlU2lnbmF0dXJlID0gdGhpcy5nZXRDb2x1bW5IaWRlU2lnbmF0dXJlKHRoaXMuY29sdW1uRGVmcyk7XG5cdFx0XHRzZXRUaW1lb3V0KCgpID0+IHtcblx0XHRcdFx0dGhpcy5pbml0R3JpZCA9IHRydWU7XG5cdFx0XHR9LCAxMDApO1xuXHRcdH0pO1xuXHRcdHRoaXMubG9jYWxlVGV4dCA9IGdyaWRVdGlscy5nZXRMb2NhbFRleHQodGhpcy5pMThuU2VydmljZS5jdXJyZW50TGFuZyk7XG5cdH1cblxuXHRuZ0FmdGVyVmlld0luaXQoKSB7fVxuXG5cdG5nT25EZXN0cm95KCkge1xuXHRcdHRoaXMuc2VhcmNoUHJtU3ViPy51bnN1YnNjcmliZSgpO1xuXHRcdGlmICh0aGlzLmhvcml6b250YWxTY3JvbGxCYXJPYnNlcnZlcikge1xuXHRcdFx0dGhpcy5ob3Jpem9udGFsU2Nyb2xsQmFyT2JzZXJ2ZXIuZGlzY29ubmVjdCgpO1xuXHRcdH1cblx0XHRpZiAodGhpcy52ZXJ0aWNhbFNjcm9sbEJhck9ic2VydmVyKSB7XG5cdFx0XHR0aGlzLnZlcnRpY2FsU2Nyb2xsQmFyT2JzZXJ2ZXIuZGlzY29ubmVjdCgpO1xuXHRcdH1cblx0fVxuXG5cdGdldEdyaWQoKTogQWdHcmlkQW5ndWxhciB7XG5cdFx0cmV0dXJuIHRoaXMuZ3JpZDtcblx0fVxuXG5cdHByaXZhdGUgaXNNb2JpbGVPclRhYmxldEJyb3dzZXIoKSB7XG5cdFx0aWYgKHR5cGVvZiBuYXZpZ2F0b3IgPT09ICd1bmRlZmluZWQnKSB7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXHRcdGNvbnN0IHVhID0gbmF2aWdhdG9yLnVzZXJBZ2VudC50b0xvd2VyQ2FzZSgpO1xuXHRcdGNvbnN0IGlzUGhvbmUgPSAvYW5kcm9pZC4qbW9iaWxlfGlwaG9uZXxpcG9kfHdpbmRvd3MgcGhvbmV8YmxhY2tiZXJyeXxpZW1vYmlsZXxvcGVyYSBtaW5pLy50ZXN0KHVhKTtcblx0XHRjb25zdCBpc1RhYmxldCA9XG5cdFx0XHQvaXBhZHx0YWJsZXR8cGxheWJvb2t8c2lsa3woYW5kcm9pZCg/IS4qbW9iaWxlKSkvLnRlc3QodWEpIHx8XG5cdFx0XHQobmF2aWdhdG9yLnBsYXRmb3JtID09PSAnTWFjSW50ZWwnICYmIG5hdmlnYXRvci5tYXhUb3VjaFBvaW50cyA+IDEpO1xuXHRcdHJldHVybiBpc1Bob25lIHx8IGlzVGFibGV0O1xuXHR9XG5cblx0b25HcmlkUmVhZHkoZTogYW55KSB7XG5cdFx0dGhpcy5pbml0R3JpZEhlaWdodCgpO1xuXHRcdHNldFRpbWVvdXQoKCkgPT4ge1xuXHRcdFx0dGhpcy5nZXREYXRhKCk7XG5cdFx0fSwgMTAwKTtcblx0fVxuXG5cdG9uU2VsZWN0aW9uQ2hhbmdlZChldmVudDogYW55KTogYW55IHtcblx0XHR0aGlzLnNlbGVjdGVkUm93cy5zZXQoZ3JpZFV0aWxzLmNhbGNSb3dJZHMoZXZlbnQuYXBpLCB0aGlzLnRvT3B0aW9ucygpPy5yb3dNb2RlbFR5cGUgPT0gJ3NlcnZlclNpZGUnKSk7XG5cdH1cblxuXHRvblJvd0dyb3VwT3BlbmVkKCkge1xuXHRcdHRoaXMubmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcblx0XHRcdHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG5cdFx0XHRcdHRoaXMuYWp1c3RHcmlkSGVpZ2h0KCk7XG5cdFx0XHR9KTtcblx0XHR9KTtcblx0fVxuXG5cdHByaXZhdGUgaGFzRHluYW1pY1NlbGVjdERhdGFDb2x1bW4ob3B0aW9uczogR3JpZE9wdGlvbnMgPSB0aGlzLnRvT3B0aW9ucygpKSB7XG5cdFx0cmV0dXJuICEhb3B0aW9ucy5jb2x1bW5EZWZzPy5zb21lKChpdGVtOiBhbnkpID0+IGl0ZW0/Lmhhc093blByb3BlcnR5KCdzZWxlY3REYXRhJykgJiYgdHlwZW9mIGl0ZW0uc2VsZWN0RGF0YSA9PT0gJ2Z1bmN0aW9uJyk7XG5cdH1cblxuXHRwcml2YXRlIGFzeW5jIHJlZnJlc2hDb2x1bW5EZWZzKG9wdGlvbnM6IEdyaWRPcHRpb25zID0gdGhpcy50b09wdGlvbnMoKSkge1xuXHRcdGNvbnN0IGxvYWRJZCA9ICsrdGhpcy5jb2x1bW5EZWZzTG9hZElkO1xuXHRcdGNvbnN0IGNvbHVtbkRlZnMgPSBhd2FpdCB0aGlzLnNldFJpY2hWYWx1ZShvcHRpb25zKTtcblx0XHRpZiAobG9hZElkICE9PSB0aGlzLmNvbHVtbkRlZnNMb2FkSWQpIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0dGhpcy5jb2x1bW5EZWZzID0gZ3JpZFV0aWxzLmhhbmRsZUkxOG5LZXkodGhpcy5yZXNvbHZlQ29sdW1uSGlkZUV4cHJlc3Npb25zKGNvbHVtbkRlZnMpLCB0aGlzLmkxOG5TZXJ2aWNlKTtcblx0XHR0aGlzLmNvbHVtbkRlZnNIYXZlSGlkZUV4cHJlc3Npb24gPSB0aGlzLmhhc0NvbHVtbkhpZGVFeHByZXNzaW9uKHRoaXMuY29sdW1uRGVmcyk7XG5cdFx0dGhpcy5jb2x1bW5IaWRlU2lnbmF0dXJlID0gdGhpcy5nZXRDb2x1bW5IaWRlU2lnbmF0dXJlKHRoaXMuY29sdW1uRGVmcyk7XG5cdFx0aWYgKHRoaXMuZ3JpZD8uYXBpKSB7XG5cdFx0XHR0aGlzLmdyaWQuYXBpLnNldEdyaWRPcHRpb24oJ2NvbHVtbkRlZnMnLCB0aGlzLmNvbHVtbkRlZnMpO1xuXHRcdFx0dGhpcy5ncmlkLmFwaS5yZWZyZXNoQ2VsbHMoe1xuXHRcdFx0XHRmb3JjZTogdHJ1ZSxcblx0XHRcdFx0c3VwcHJlc3NGbGFzaDogdHJ1ZSxcblx0XHRcdH0pO1xuXHRcdH1cblx0fVxuXG5cdHByaXZhdGUgcmVmcmVzaENvbHVtbkhpZGVFeHByZXNzaW9ucygpIHtcblx0XHRpZiAoIXRoaXMuY29sdW1uRGVmc0hhdmVIaWRlRXhwcmVzc2lvbiB8fCAhdGhpcy5ncmlkPy5hcGkpIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0Y29uc3QgbmV4dENvbHVtbkRlZnMgPSB0aGlzLnJlc29sdmVDb2x1bW5IaWRlRXhwcmVzc2lvbnModGhpcy5jb2x1bW5EZWZzKTtcblx0XHRjb25zdCBuZXh0U2lnbmF0dXJlID0gdGhpcy5nZXRDb2x1bW5IaWRlU2lnbmF0dXJlKG5leHRDb2x1bW5EZWZzKTtcblx0XHRpZiAobmV4dFNpZ25hdHVyZSA9PT0gdGhpcy5jb2x1bW5IaWRlU2lnbmF0dXJlKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdHRoaXMuY29sdW1uRGVmcyA9IG5leHRDb2x1bW5EZWZzO1xuXHRcdHRoaXMuY29sdW1uSGlkZVNpZ25hdHVyZSA9IG5leHRTaWduYXR1cmU7XG5cdFx0dGhpcy5ncmlkLmFwaS5zZXRHcmlkT3B0aW9uKCdjb2x1bW5EZWZzJywgdGhpcy5jb2x1bW5EZWZzKTtcblx0XHR0aGlzLmdyaWQuYXBpLnJlZnJlc2hDZWxscyh7XG5cdFx0XHRmb3JjZTogdHJ1ZSxcblx0XHRcdHN1cHByZXNzRmxhc2g6IHRydWUsXG5cdFx0fSk7XG5cdH1cblxuXHRwcml2YXRlIHJlc29sdmVDb2x1bW5IaWRlRXhwcmVzc2lvbnMoY29sdW1uRGVmczogYW55W10gPSBbXSkge1xuXHRcdHJldHVybiBjb2x1bW5EZWZzLm1hcCgoaXRlbTogYW55KSA9PiB0aGlzLnJlc29sdmVDb2x1bW5IaWRlRXhwcmVzc2lvbihpdGVtKSk7XG5cdH1cblxuXHRwcml2YXRlIHJlc29sdmVDb2x1bW5IaWRlRXhwcmVzc2lvbihpdGVtOiBhbnkpOiBhbnkge1xuXHRcdGNvbnN0IHN0YXRpY0hpZGUgPSB0aGlzLnJlc29sdmVTdGF0aWNIaWRlKGl0ZW0pO1xuXHRcdGNvbnN0IGhpZGVFeHByZXNzaW9uID0gdGhpcy5yZXNvbHZlSGlkZUV4cHJlc3Npb24oaXRlbSk7XG5cdFx0bGV0IGV4cHJlc3Npb25IaWRlID0gZmFsc2U7XG5cdFx0aWYgKHR5cGVvZiBoaWRlRXhwcmVzc2lvbiA9PT0gJ2Z1bmN0aW9uJykge1xuXHRcdFx0dHJ5IHtcblx0XHRcdFx0ZXhwcmVzc2lvbkhpZGUgPSAhIWhpZGVFeHByZXNzaW9uKHRoaXMuaGlkZUV4cHJlc3Npb25EYXRhKCkgfHwge30pO1xuXHRcdFx0fSBjYXRjaCAoZXJyb3IpIHtcblx0XHRcdFx0aWYgKCF0aGlzLmNvbHVtbkhpZGVFeHByZXNzaW9uRXJyb3JTZXQuaGFzKGhpZGVFeHByZXNzaW9uKSkge1xuXHRcdFx0XHRcdHRoaXMuY29sdW1uSGlkZUV4cHJlc3Npb25FcnJvclNldC5hZGQoaGlkZUV4cHJlc3Npb24pO1xuXHRcdFx0XHRcdGNvbnNvbGUuZXJyb3IoJ+WIl+makOiXj+adoeS7tuaJp+ihjOWksei0pTonLCBlcnJvciwgaXRlbSk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdFx0Y29uc3QgbmV4dEl0ZW0gPSB7XG5cdFx0XHQuLi5pdGVtLFxuXHRcdFx0aGlkZUV4cHJlc3Npb246IGl0ZW0uaGlkZUV4cHJlc3Npb24gPyBoaWRlRXhwcmVzc2lvbiA6IGl0ZW0uaGlkZUV4cHJlc3Npb24sXG5cdFx0XHRoaWRlOiAhIXN0YXRpY0hpZGUgfHwgZXhwcmVzc2lvbkhpZGUsXG5cdFx0fTtcblx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkobmV4dEl0ZW0sIFNUQVRJQ19ISURFX0tFWSwge1xuXHRcdFx0dmFsdWU6IHN0YXRpY0hpZGUsXG5cdFx0XHRlbnVtZXJhYmxlOiBmYWxzZSxcblx0XHRcdGNvbmZpZ3VyYWJsZTogdHJ1ZSxcblx0XHR9KTtcblx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkobmV4dEl0ZW0sIEhJREVfRVhQUkVTU0lPTl9LRVksIHtcblx0XHRcdHZhbHVlOiBoaWRlRXhwcmVzc2lvbixcblx0XHRcdGVudW1lcmFibGU6IGZhbHNlLFxuXHRcdFx0Y29uZmlndXJhYmxlOiB0cnVlLFxuXHRcdH0pO1xuXHRcdGlmIChBcnJheS5pc0FycmF5KGl0ZW0uY2hpbGRyZW4pKSB7XG5cdFx0XHRuZXh0SXRlbS5jaGlsZHJlbiA9IHRoaXMucmVzb2x2ZUNvbHVtbkhpZGVFeHByZXNzaW9ucyhpdGVtLmNoaWxkcmVuKTtcblx0XHR9XG5cdFx0cmV0dXJuIG5leHRJdGVtO1xuXHR9XG5cblx0cHJpdmF0ZSByZXNvbHZlSGlkZUV4cHJlc3Npb24oaXRlbTogYW55KSB7XG5cdFx0Y29uc3QgY29uZmlndXJlZEhpZGVFeHByZXNzaW9uID0gaXRlbS5oaWRlRXhwcmVzc2lvbiA9PT0gJycgfHwgaXRlbS5oaWRlRXhwcmVzc2lvbiA9PSBudWxsID8gdW5kZWZpbmVkIDogaXRlbS5oaWRlRXhwcmVzc2lvbjtcblx0XHRjb25zdCBoaWRlRXhwcmVzc2lvbiA9IGl0ZW1bSElERV9FWFBSRVNTSU9OX0tFWV0gPz8gY29uZmlndXJlZEhpZGVFeHByZXNzaW9uID8/IHRoaXMuZ2V0RHluYW1pY0hpZGUoaXRlbS5oaWRlKTtcblx0XHRpZiAodHlwZW9mIGhpZGVFeHByZXNzaW9uID09PSAnZnVuY3Rpb24nKSB7XG5cdFx0XHRyZXR1cm4gaGlkZUV4cHJlc3Npb247XG5cdFx0fVxuXHRcdGlmICh0eXBlb2YgaGlkZUV4cHJlc3Npb24gPT09ICdzdHJpbmcnKSB7XG5cdFx0XHRyZXR1cm4gcGFyc2VGdW5jdGlvbnMoaGlkZUV4cHJlc3Npb24sIHRoaXMpO1xuXHRcdH1cblx0XHRyZXR1cm4gaGlkZUV4cHJlc3Npb247XG5cdH1cblxuXHRwcml2YXRlIHJlc29sdmVTdGF0aWNIaWRlKGl0ZW06IGFueSkge1xuXHRcdGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoaXRlbSwgU1RBVElDX0hJREVfS0VZKSkge1xuXHRcdFx0cmV0dXJuICEhaXRlbVtTVEFUSUNfSElERV9LRVldO1xuXHRcdH1cblx0XHRyZXR1cm4gaXRlbS5oaWRlQ29sID09PSB0cnVlIHx8IGl0ZW0uaGlkZSA9PT0gdHJ1ZTtcblx0fVxuXG5cdHByaXZhdGUgZ2V0RHluYW1pY0hpZGUoaGlkZTogYW55KSB7XG5cdFx0aWYgKHR5cGVvZiBoaWRlID09PSAnZnVuY3Rpb24nKSB7XG5cdFx0XHRyZXR1cm4gaGlkZTtcblx0XHR9XG5cdFx0aWYgKHR5cGVvZiBoaWRlID09PSAnc3RyaW5nJykge1xuXHRcdFx0Y29uc3QgcGFyc2VkSGlkZSA9IHBhcnNlRnVuY3Rpb25zKGhpZGUsIHRoaXMpO1xuXHRcdFx0cmV0dXJuIHR5cGVvZiBwYXJzZWRIaWRlID09PSAnZnVuY3Rpb24nID8gcGFyc2VkSGlkZSA6IHVuZGVmaW5lZDtcblx0XHR9XG5cdFx0cmV0dXJuIHVuZGVmaW5lZDtcblx0fVxuXG5cdHByaXZhdGUgaGFzQ29sdW1uSGlkZUV4cHJlc3Npb24oY29sdW1uRGVmczogYW55W10gPSBbXSk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiBjb2x1bW5EZWZzLnNvbWUoKGl0ZW06IGFueSkgPT4ge1xuXHRcdFx0aWYgKFxuXHRcdFx0XHR0eXBlb2YgaXRlbVtISURFX0VYUFJFU1NJT05fS0VZXSA9PT0gJ2Z1bmN0aW9uJyB8fFxuXHRcdFx0XHR0eXBlb2YgaXRlbS5oaWRlRXhwcmVzc2lvbiA9PT0gJ2Z1bmN0aW9uJyB8fFxuXHRcdFx0XHR0eXBlb2YgaXRlbS5oaWRlRXhwcmVzc2lvbiA9PT0gJ3N0cmluZycgfHxcblx0XHRcdFx0dHlwZW9mIGl0ZW0uaGlkZSA9PT0gJ2Z1bmN0aW9uJyB8fFxuXHRcdFx0XHR0eXBlb2YgaXRlbS5oaWRlID09PSAnc3RyaW5nJ1xuXHRcdFx0KSB7XG5cdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIEFycmF5LmlzQXJyYXkoaXRlbS5jaGlsZHJlbikgPyB0aGlzLmhhc0NvbHVtbkhpZGVFeHByZXNzaW9uKGl0ZW0uY2hpbGRyZW4pIDogZmFsc2U7XG5cdFx0fSk7XG5cdH1cblxuXHRwcml2YXRlIGdldENvbHVtbkhpZGVTaWduYXR1cmUoY29sdW1uRGVmczogYW55W10gPSBbXSk6IHN0cmluZyB7XG5cdFx0cmV0dXJuIGNvbHVtbkRlZnNcblx0XHRcdC5tYXAoKGl0ZW06IGFueSwgaW5kZXg6IG51bWJlcikgPT4ge1xuXHRcdFx0XHRjb25zdCBrZXkgPSBpdGVtLmNvbElkIHx8IGl0ZW0uZmllbGQgfHwgaXRlbS5oZWFkZXJOYW1lIHx8IGluZGV4O1xuXHRcdFx0XHRjb25zdCBjaGlsZHJlbiA9IEFycmF5LmlzQXJyYXkoaXRlbS5jaGlsZHJlbikgPyB0aGlzLmdldENvbHVtbkhpZGVTaWduYXR1cmUoaXRlbS5jaGlsZHJlbikgOiAnJztcblx0XHRcdFx0cmV0dXJuIGAke2tleX06JHtpdGVtLmhpZGUgPyAxIDogMH0ke2NoaWxkcmVuID8gYFske2NoaWxkcmVufV1gIDogJyd9YDtcblx0XHRcdH0pXG5cdFx0XHQuam9pbignfCcpO1xuXHR9XG5cblx0YXN5bmMgc2V0UmljaFZhbHVlKG9wdGlvbnM6IEdyaWRPcHRpb25zID0gdGhpcy50b09wdGlvbnMoKSkge1xuXHRcdGxldCBjb2wgPSBvcHRpb25zLmNvbHVtbkRlZnMhIHx8IFtdO1xuXHRcdHRyeSB7XG5cdFx0XHRjb25zdCBwcm9jZXNzZWRDb2xzID0gYXdhaXQgUHJvbWlzZS5hbGwoXG5cdFx0XHRcdGNvbC5tYXAoYXN5bmMgKGl0ZW06IGFueSkgPT4ge1xuXHRcdFx0XHRcdGNvbnN0IG5leHRJdGVtID0geyAuLi5pdGVtIH07XG5cdFx0XHRcdFx0aWYgKG5leHRJdGVtLmhhc093blByb3BlcnR5KCdmaWVsZElkJykgJiYgKG5leHRJdGVtLmNlbGxFZGl0b3IgPT0gJ2FnUmljaFNlbGVjdENlbGxFZGl0b3InIHx8IG5leHRJdGVtLmNlbGxFZGl0b3IgPT0gJ2FnU2VsZWN0Q2VsbEVkaXRvcicgfHwgbmV4dEl0ZW0uY2VsbEVkaXRvciA9PSAnY2VsbEVkaXRTZWxlY3RGaWVsZENvbXBvbmVudCcpICYmICFuZXh0SXRlbS5yb3dHcm91cCkge1xuXHRcdFx0XHRcdFx0bGV0IHZhbHVlczogYW55ID0gW107XG5cdFx0XHRcdFx0XHRjb25zdCByYXdDZWxsRWRpdG9yUGFyYW1zID1cblx0XHRcdFx0XHRcdFx0dHlwZW9mIGl0ZW0uY2VsbEVkaXRvclBhcmFtcyA9PT0gJ2Z1bmN0aW9uJyA/IGl0ZW0uY2VsbEVkaXRvclBhcmFtcygpIHx8IHt9IDogaXRlbS5jZWxsRWRpdG9yUGFyYW1zIHx8IHt9O1xuXHRcdFx0XHRcdFx0Y29uc3QgY2VsbEVkaXRvclBhcmFtcyA9IHsgLi4ucmF3Q2VsbEVkaXRvclBhcmFtcyB9O1xuXHRcdFx0XHRcdFx0aWYgKGNlbGxFZGl0b3JQYXJhbXMuaGFzT3duUHJvcGVydHkoJ3ZhbHVlcycpKSB7XG5cdFx0XHRcdFx0XHRcdHZhbHVlcyA9IGNlbGxFZGl0b3JQYXJhbXMudmFsdWVzIHx8IFtdO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0aWYgKG5leHRJdGVtLmhhc093blByb3BlcnR5KCdzZWxlY3REYXRhJykgJiYgdHlwZW9mIG5leHRJdGVtLnNlbGVjdERhdGEgPT09ICdmdW5jdGlvbicpIHtcblx0XHRcdFx0XHRcdFx0dmFsdWVzID0gKGF3YWl0IGl0ZW0uc2VsZWN0RGF0YSgpKSB8fCBbXTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdG5leHRJdGVtLmNlbGxFZGl0b3JQYXJhbXMgPSB7XG5cdFx0XHRcdFx0XHRcdC4uLmNlbGxFZGl0b3JQYXJhbXMsXG5cdFx0XHRcdFx0XHRcdHZhbHVlTGlzdE1heEhlaWdodDogMjAwLFxuXHRcdFx0XHRcdFx0XHRzdXBwcmVzc011bHRpU2VsZWN0UGlsbFJlbmRlcmVyOiB0cnVlLFxuXHRcdFx0XHRcdFx0fTtcblx0XHRcdFx0XHRcdGlmIChuZXh0SXRlbS5jZWxsRWRpdG9yUGFyYW1zLmhhc093blByb3BlcnR5KCd2YWx1ZXMnKSAmJiAhKG5leHRJdGVtLmhhc093blByb3BlcnR5KCdzZWxlY3REYXRhJykgJiYgdHlwZW9mIG5leHRJdGVtLnNlbGVjdERhdGEgPT09ICdmdW5jdGlvbicpKSB7XG5cdFx0XHRcdFx0XHRcdHZhbHVlcyA9IG5leHRJdGVtLmNlbGxFZGl0b3JQYXJhbXMudmFsdWVzO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0bGV0IGlzU3RyaW5nID0gdmFsdWVzLmV2ZXJ5KChpdGVtOiBhbnkpID0+IHR5cGVvZiBpdGVtID09PSAnc3RyaW5nJyk7XG5cdFx0XHRcdFx0XHRpZiAoIWlzU3RyaW5nKSB7XG5cdFx0XHRcdFx0XHRcdGNvbnN0IG9wdGlvblZhbHVlRmllbGQgPSBuZXh0SXRlbS5jZWxsRWRpdG9yUGFyYW1zLm9wdGlvblZhbHVlIHx8ICd2YWx1ZSc7XG5cdFx0XHRcdFx0XHRcdGNvbnN0IG9wdGlvbkxhYmVsRmllbGQgPSBuZXh0SXRlbS5jZWxsRWRpdG9yUGFyYW1zLm9wdGlvbkxhYmVsIHx8ICdsYWJlbCc7XG5cdFx0XHRcdFx0XHRcdG5leHRJdGVtLmNlbGxFZGl0b3JQYXJhbXMucmF3T3B0aW9ucyA9IHZhbHVlcztcblx0XHRcdFx0XHRcdFx0bmV4dEl0ZW0uY2VsbEVkaXRvclBhcmFtcy52YWx1ZXMgPSB2YWx1ZXMubWFwKChpdGVtOiBhbnkpID0+IGl0ZW0/LltvcHRpb25WYWx1ZUZpZWxkXSk7XG5cdFx0XHRcdFx0XHRcdG5leHRJdGVtLnZhbHVlRm9ybWF0dGVyID0gKHBhcmFtczogYW55KSA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0Y29uc3Qgb3B0aW9ucyA9IHBhcmFtcy5jb2xEZWYuY2VsbEVkaXRvclBhcmFtcy5yYXdPcHRpb25zIGFzIGFueVtdO1xuXHRcdFx0XHRcdFx0XHRcdGNvbnN0IHZhbHVlRmllbGQgPSBwYXJhbXMuY29sRGVmLmNlbGxFZGl0b3JQYXJhbXMub3B0aW9uVmFsdWUgfHwgJ3ZhbHVlJztcblx0XHRcdFx0XHRcdFx0XHRjb25zdCBsYWJlbEZpZWxkID0gcGFyYW1zLmNvbERlZi5jZWxsRWRpdG9yUGFyYW1zLm9wdGlvbkxhYmVsIHx8ICdsYWJlbCc7XG5cdFx0XHRcdFx0XHRcdFx0aWYgKHR5cGVvZiBwYXJhbXMudmFsdWUgPT09ICdudW1iZXInKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRjb25zdCBvcHRpb24gPSBvcHRpb25zLmZpbmQoKG9wdCkgPT4gb3B0Py5bdmFsdWVGaWVsZF0gPT0gcGFyYW1zLnZhbHVlKTtcblx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiBvcHRpb24gPyBvcHRpb24/LltsYWJlbEZpZWxkXSA6IHBhcmFtcy52YWx1ZTtcblx0XHRcdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRcdFx0bGV0IHZhbHVlczogYW55ID0gW107XG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAodHlwZW9mIHBhcmFtcy52YWx1ZSA9PT0gJ3N0cmluZycpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKHBhcmFtcy52YWx1ZS5sZW5ndGggPiAwKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0dmFsdWVzID0gcGFyYW1zLnZhbHVlLnNwbGl0KCcsJykubWFwKCh2OiBhbnkpID0+ICghaXNOYU4odikgPyBOdW1iZXIodikgOiB2KSkgfHwgW107XG5cdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHZhbHVlcyA9IHBhcmFtcy52YWx1ZSB8fCBbXTtcblx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdGNvbnN0IG9wdGlvbiA9IG9wdGlvbnMuZmlsdGVyKChvcHQpID0+IHZhbHVlcy5pbmNsdWRlcyhvcHQ/Llt2YWx1ZUZpZWxkXSkpIHx8IFtdO1xuXHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIG9wdGlvbi5sZW5ndGggPiAwID8gb3B0aW9uLm1hcCgodikgPT4gdj8uW2xhYmVsRmllbGRdKSA6IHBhcmFtcy52YWx1ZTtcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0XHRcdG5leHRJdGVtLnZhbHVlR2V0dGVyID0gKHBhcmFtczogYW55KSA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0Ly8gY29uc29sZS5sb2coJ3BhbXJhbXMtLS0tJyxwYXJhbXMsaXRlbS5maWVsZClcblx0XHRcdFx0XHRcdFx0XHRpZiAoKG5leHRJdGVtLmNlbGxFZGl0b3IgPT0gJ2FnUmljaFNlbGVjdENlbGxFZGl0b3InIHx8IG5leHRJdGVtLmNlbGxFZGl0b3IgPT0gJ2NlbGxFZGl0U2VsZWN0RmllbGRDb21wb25lbnQnKSAmJiBwYXJhbXMuZGF0YSAmJiBwYXJhbXMuZGF0YS5oYXNPd25Qcm9wZXJ0eShuZXh0SXRlbS5maWVsZCkpIHtcblx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiB0eXBlb2YgcGFyYW1zLmRhdGFbbmV4dEl0ZW0uZmllbGRdID09ICdzdHJpbmcnID8gcGFyYW1zLmRhdGFbbmV4dEl0ZW0uZmllbGRdLnNwbGl0KCcsJykgOiBwYXJhbXMuZGF0YVtuZXh0SXRlbS5maWVsZF07XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdHJldHVybiBwYXJhbXMuZGF0YSA/IHBhcmFtcy5kYXRhW25leHRJdGVtLmZpZWxkXTogJydcblx0XHRcdFx0XHRcdFx0fTtcblx0XHRcdFx0XHRcdFx0bmV4dEl0ZW0udmFsdWVQYXJzZXIgPSAocGFyYW1zOiBhbnkpID0+IHtcblx0XHRcdFx0XHRcdFx0XHQvLyBjb25zb2xlLmxvZygncGFyYW1zLS0tLScscGFyYW1zKVxuXHRcdFx0XHRcdFx0XHRcdGNvbnN0IG9wdGlvbnMgPSBwYXJhbXMuY29sRGVmLmNlbGxFZGl0b3JQYXJhbXMucmF3T3B0aW9ucyBhcyBhbnlbXTtcblx0XHRcdFx0XHRcdFx0XHRjb25zdCB2YWx1ZUZpZWxkID0gcGFyYW1zLmNvbERlZi5jZWxsRWRpdG9yUGFyYW1zLm9wdGlvblZhbHVlIHx8ICd2YWx1ZSc7XG5cdFx0XHRcdFx0XHRcdFx0Y29uc3QgbGFiZWxGaWVsZCA9IHBhcmFtcy5jb2xEZWYuY2VsbEVkaXRvclBhcmFtcy5vcHRpb25MYWJlbCB8fCAnbGFiZWwnO1xuXHRcdFx0XHRcdFx0XHRcdGNvbnN0IG9wdGlvbiA9IG9wdGlvbnMuZmluZCgob3B0KSA9PiBvcHQ/LltsYWJlbEZpZWxkXSA9PT0gcGFyYW1zLm5ld1ZhbHVlKTtcblx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gb3B0aW9uID8gb3B0aW9uPy5bdmFsdWVGaWVsZF0gOiBwYXJhbXMubmV3VmFsdWU7XG5cdFx0XHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRuZXh0SXRlbS5jZWxsRWRpdG9yUGFyYW1zLnZhbHVlcyA9IHZhbHVlcztcblx0XHRcdFx0XHRcdFx0bmV4dEl0ZW0udmFsdWVHZXR0ZXIgPSAocGFyYW1zOiBhbnkpID0+IHtcblx0XHRcdFx0XHRcdFx0XHRpZiAoKG5leHRJdGVtLmNlbGxFZGl0b3IgPT0gJ2FnUmljaFNlbGVjdENlbGxFZGl0b3InIHx8IG5leHRJdGVtLmNlbGxFZGl0b3IgPT0gJ2NlbGxFZGl0U2VsZWN0RmllbGRDb21wb25lbnQnKSAmJiBwYXJhbXMuZGF0YSAmJiBwYXJhbXMuZGF0YS5oYXNPd25Qcm9wZXJ0eShuZXh0SXRlbS5maWVsZCkpIHtcblx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiB0eXBlb2YgcGFyYW1zLmRhdGFbbmV4dEl0ZW0uZmllbGRdID09ICdzdHJpbmcnID8gcGFyYW1zLmRhdGFbbmV4dEl0ZW0uZmllbGRdLnNwbGl0KCcsJykgOiBwYXJhbXMuZGF0YVtuZXh0SXRlbS5maWVsZF07XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdHJldHVybiBwYXJhbXMuZGF0YSA/IHBhcmFtcy5kYXRhW25leHRJdGVtLmZpZWxkXTogJydcblx0XHRcdFx0XHRcdFx0fTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0cmV0dXJuIG5leHRJdGVtO1xuXHRcdFx0XHR9KSxcblx0XHRcdCk7XG5cdFx0XHRyZXR1cm4gcHJvY2Vzc2VkQ29scztcblx0XHR9IGNhdGNoIChlcnJvcikge1xuXHRcdFx0Y29uc29sZS5lcnJvcignRXJyb3IgcHJvY2Vzc2luZyBjb2x1bW5zOicsIGVycm9yKTtcblx0XHRcdHRocm93IGVycm9yO1xuXHRcdH1cblx0fVxuXG5cdGdldEVudW1zKGlkOiBudW1iZXIpIHtcblx0XHRyZXR1cm4gbGFzdFZhbHVlRnJvbSh0aGlzLmh0dHAucG9zdCgnZ2V0JywgeyBpZDogTnVtYmVyKGlkKSwgbW9kZWxOYW1lOiAnTW9kZWxGaWVsZCcsIHByZWxvYWRzOiBbJ0VudW0nXSB9KSk7XG5cdH1cblxuXHRoYW5kbGVTZWxlY3Rpb25zKHN0YXJ0Um93OiBudW1iZXIpIHtcblx0XHRzZXRUaW1lb3V0KCgpID0+IHtcblx0XHRcdGlmICh0aGlzLnNlbGVjdGlvbktleXMoKT8ubGVuZ3RoKSB7XG5cdFx0XHRcdGdyaWRVdGlscy5zZWxlY3Rpb25IYW5kbGVyKHRoaXMuZ3JpZC5hcGksIHRoaXMuc2VsZWN0aW9uS2V5cygpLCBzdGFydFJvdywgdGhpcy50b09wdGlvbnMoKT8uZGF0YUtleSk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdH1cblxuXHRnZXREYXRhKCkge1xuXHRcdHVudHJhY2tlZCgoKSA9PiB7XG5cdFx0XHQvLyBjb25zb2xlLmxvZygndGhpcy50b09wdGlvbnMoKScsdGhpcy50b09wdGlvbnMoKSlcblx0XHRcdGlmICghdGhpcy5zZWFyY2hQcm0oKS5tb2RlbE5hbWUgJiYgIXRoaXMucm93RGF0YSgpKSByZXR1cm47XG5cdFx0XHR0aGlzLmNhbmNlbFNlbGVjdCgpO1xuXHRcdFx0Y29uc3Qgc2VhcmNoID0gdGhpcy5hY3Rpb24uZ2V0U2VhcmNoKHRoaXMudG9PcHRpb25zKCkubW9kZWxOYW1lKTtcblx0XHRcdHRoaXMudG9PcHRpb25zKCk/LnJvd01vZGVsVHlwZSA9PSAnc2VydmVyU2lkZScgPyB0aGlzLmdldFNlcnZlckRhdGEoc2VhcmNoKSA6IHRoaXMuZ2V0Q2xpZW50RGF0YShzZWFyY2gpO1xuXHRcdH0pO1xuXHR9XG5cblx0Z2V0U2VydmVyRGF0YShzZWFyY2g/OiBTZWFyY2gpIHtcblx0XHR0aGlzLmdyaWQ/LmFwaS5zZXRHcmlkT3B0aW9uKCdzZXJ2ZXJTaWRlRGF0YXNvdXJjZScsIHtcblx0XHRcdGdldFJvd3M6IChwYXJhbXMpID0+IHtcblx0XHRcdFx0Y29uc3Qgc2VhcmNoUHJtOiBTZWFyY2ggPSB7XG5cdFx0XHRcdFx0Li4udGhpcy5zZWFyY2hQcm0oKSxcblx0XHRcdFx0XHRvZmZzZXQ6IHBhcmFtcy5yZXF1ZXN0LnN0YXJ0Um93LFxuXHRcdFx0XHRcdGNvbHVtbkZpbHRlcnM6IFsuLi4odGhpcy5yYXdQcm0/LmNvbHVtbkZpbHRlcnMgfHwgW10pLCAuLi4oc2VhcmNoPy5jb2x1bW5GaWx0ZXJzIHx8IFtdKV0sXG5cdFx0XHRcdFx0c29ydHM6IHNlYXJjaD8uc29ydHM/Lmxlbmd0aCA/IHNlYXJjaC5zb3J0cyA6IHRoaXMucmF3UHJtPy5zb3J0cz8ubGVuZ3RoID8gdGhpcy5yYXdQcm0uc29ydHMgOiBkZWZhdWx0U29ydHMsXG5cdFx0XHRcdH07XG5cdFx0XHRcdHNlYXJjaFBybS5jb2x1bW5GaWx0ZXJzID0gdGhpcy5pc1JhbmdlKHNlYXJjaFBybS5jb2x1bW5GaWx0ZXJzISkgYXMgQ29sdW1uRmlsdGVyW107XG5cdFx0XHRcdHRoaXMuaGFuZGxlU2VydmVyVHJlZShwYXJhbXMsIHNlYXJjaFBybSk7XG5cdFx0XHRcdHRoaXMudG9PcHRpb25zKClcblx0XHRcdFx0XHQuc2VydmVyRnVuYz8uKHNlYXJjaFBybSlcblx0XHRcdFx0XHQuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xuXHRcdFx0XHRcdFx0dGhpcy5hY3Rpb24uc2V0UGFnZSh7XG5cdFx0XHRcdFx0XHRcdHN0YXJ0Um93OiBwYXJhbXMucmVxdWVzdC5zdGFydFJvdyxcblx0XHRcdFx0XHRcdFx0ZW5kUm93OiBwYXJhbXMucmVxdWVzdC5lbmRSb3chIDwgcmVzLnRvdGFsTnVtID8gcGFyYW1zLnJlcXVlc3QuZW5kUm93IDogcmVzLnRvdGFsTnVtLFxuXHRcdFx0XHRcdFx0XHR0b3RhbDogcmVzLnRvdGFsTnVtLFxuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRwYXJhbXMuc3VjY2Vzcyh7IHJvd0RhdGE6IHJlcy5kYXRhIHx8IFtdIH0pO1xuXHRcdFx0XHRcdFx0dGhpcy5hanVzdEdyaWRIZWlnaHQoKTtcblx0XHRcdFx0XHRcdHRoaXMuaGFuZGxlU2VsZWN0aW9ucyhwYXJhbXMucmVxdWVzdC5zdGFydFJvdyB8fCAwKTtcblx0XHRcdFx0XHR9KTtcblx0XHRcdH0sXG5cdFx0fSk7XG5cdH1cblxuXHRoYW5kbGVTZXJ2ZXJUcmVlKHBhcmFtczogYW55LCBzZWFyY2hQcm06IFNlYXJjaCkge1xuXHRcdGlmICghdGhpcy50b09wdGlvbnMoKS50cmVlRGF0YSkgcmV0dXJuO1xuXHRcdGlmIChwYXJhbXMucmVxdWVzdC5ncm91cEtleXMubGVuZ3RoID4gMCkge1xuXHRcdFx0c2VhcmNoUHJtLmNvbHVtbkZpbHRlcnMgPSBzZWFyY2hQcm0uY29sdW1uRmlsdGVycz8uZmlsdGVyKChjb2x1bW5GaWx0ZXIpID0+IGNvbHVtbkZpbHRlci5jb2x1bW5GaWVsZCAhPT0gJ3BpZCcpO1xuXHRcdFx0c2VhcmNoUHJtLmNvbHVtbkZpbHRlcnMgPSBbXG5cdFx0XHRcdC8vIC4uLihzZWFyY2hQcm0uY29sdW1uRmlsdGVycyB8fCBbXSksXG5cdFx0XHRcdHsgY29sdW1uRmllbGQ6ICdwaWQnLCB0eXBlOiAnZXEnLCBmaXRlcjogcGFyYW1zLnJlcXVlc3QuZ3JvdXBLZXlzW3BhcmFtcy5yZXF1ZXN0Lmdyb3VwS2V5cy5sZW5ndGggLSAxXSB9LFxuXHRcdFx0XTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0aWYgKCFzZWFyY2hQcm0uY29sdW1uRmlsdGVycz8uZmluZCgoY29sdW1uRmlsdGVyKSA9PiBjb2x1bW5GaWx0ZXIuY29sdW1uRmllbGQgPT09ICdwaWQnKSkge1xuXHRcdFx0XHRzZWFyY2hQcm0uY29sdW1uRmlsdGVycyA9IFsuLi4oc2VhcmNoUHJtLmNvbHVtbkZpbHRlcnMgfHwgW10pLCB7IGNvbHVtbkZpZWxkOiAncGlkJywgdHlwZTogJ2VxJywgZml0ZXI6IDAgfV07XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHNlYXJjaFBybS5wcmVsb2FkcyA9IFsnY2hpbGRyZW4nXTtcblx0fVxuXG5cdGdldENsaWVudERhdGEoc2VhcmNoPzogU2VhcmNoKSB7XG5cdFx0Y29uc3Qgc2VhcmNoUHJtOiBTZWFyY2ggPSB7XG5cdFx0XHQuLi50aGlzLnNlYXJjaFBybSgpLFxuXHRcdFx0bGltaXQ6IENMSUVOVExJTUlULFxuXHRcdFx0Y29sdW1uRmlsdGVyczogWy4uLih0aGlzLnJhd1BybT8uY29sdW1uRmlsdGVycyB8fCBbXSksIC4uLihzZWFyY2g/LmNvbHVtbkZpbHRlcnMgfHwgW10pXSxcblx0XHRcdHNvcnRzOiBzZWFyY2g/LnNvcnRzPy5sZW5ndGggPyBzZWFyY2guc29ydHMgOiBkZWZhdWx0U29ydHMsXG5cdFx0fTtcblx0XHRzZWFyY2hQcm0uY29sdW1uRmlsdGVycyA9IHRoaXMuaXNSYW5nZShzZWFyY2hQcm0uY29sdW1uRmlsdGVycyEpIGFzIENvbHVtbkZpbHRlcltdO1xuXHRcdHRoaXMuaGFuZGxlQ2xpZW50VHJlZShzZWFyY2hQcm0pO1xuXHRcdHRoaXMudG9PcHRpb25zKClcblx0XHRcdC5jbGllbnRGdW5jPy4oc2VhcmNoUHJtKVxuXHRcdFx0LnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcblx0XHRcdFx0dGhpcy5hY3Rpb24uc2V0UGFnZSh7XG5cdFx0XHRcdFx0dG90YWw6IHJlcy50b3RhbE51bSxcblx0XHRcdFx0XHRtb2RlOiAnY2xpZW50Jyxcblx0XHRcdFx0fSk7XG5cdFx0XHRcdHRoaXMuZ3JpZD8uYXBpLnNldEdyaWRPcHRpb24oJ3Jvd0RhdGEnLCByZXMuZGF0YSB8fCBbXSk7XG5cdFx0XHRcdHRoaXMuYWp1c3RHcmlkSGVpZ2h0KCk7XG5cdFx0XHRcdHRoaXMuaGFuZGxlU2VsZWN0aW9ucygwKTtcblx0XHRcdH0pO1xuXHR9XG5cblx0aGFuZGxlQ2xpZW50VHJlZShzZWFyY2hQcm06IFNlYXJjaCkge1xuXHRcdGlmICghdGhpcy50b09wdGlvbnMoKS50cmVlRGF0YSkgcmV0dXJuO1xuXHRcdGNvbnN0IHByZWxvYWRzOiBhbnlbXSA9IFtdO1xuXHRcdGZvciAobGV0IGkgPSAxOyBpIDwgdGhpcy50b09wdGlvbnMoKS50cmVlTGV2ZWwhOyBpKyspIHtcblx0XHRcdHByZWxvYWRzLnB1c2goQXJyYXkoaSkuZmlsbCgnY2hpbGRyZW4nKS5qb2luKCcuJykpO1xuXHRcdH1cblx0XHRzZWFyY2hQcm0ucHJlbG9hZHMgPSBwcmVsb2Fkcztcblx0fVxuXG5cdGNlbGxWYWx1ZUNoYW5nZWQoZTogQ2VsbFZhbHVlQ2hhbmdlZEV2ZW50KSB7XG5cdFx0bGV0IHtcblx0XHRcdGNvbERlZjogeyBmaWVsZCwgaGVhZGVyTmFtZSwgY2VsbEVkaXRvciwgY2VsbEVkaXRvclBhcmFtcyB9LFxuXHRcdFx0bmV3VmFsdWUsXG5cdFx0XHRvbGRWYWx1ZSxcblx0XHRcdHJvd0luZGV4LFxuXHRcdFx0ZGF0YTogeyBpZCB9LFxuXHRcdH0gPSBlO1xuXHRcdGNvbnNvbGUubG9nKCdb5Y2V5YWD5qC85YC85Y+Y5YyWXScsIGUpO1xuXHRcdGlmIChjZWxsRWRpdG9yID09ICdhZ1JpY2hTZWxlY3RDZWxsRWRpdG9yJyAmJiBjZWxsRWRpdG9yUGFyYW1zICYmIGNlbGxFZGl0b3JQYXJhbXMubXVsdGlTZWxlY3QpIHtcblx0XHRcdG5ld1ZhbHVlID0gbmV3VmFsdWUgJiYgbmV3VmFsdWUubGVuZ3RoID4gMCA/IG5ld1ZhbHVlLmpvaW4oJywnKSA6ICcnO1xuXHRcdFx0dGhpcy5yaWNoTXVsdE1hcFtmaWVsZCFdID0gbmV3VmFsdWU7XG5cdFx0fVxuXHRcdGlmICghaWQgfHwgaWQgPT09IDApIHtcblx0XHRcdGlkID09PSAwICYmIGRlbGV0ZSBlLmRhdGEuaWQ7XG5cdFx0XHR0aGlzLnVwc2VydCgpPy5zdWJzZXJ0W3RoaXMuc3ViSW5kZXhdWydtYXB0bXAnXS5zZXQocm93SW5kZXghLCBPYmplY3QuYXNzaWduKHsgLi4uZS5kYXRhIH0sIHRoaXMucmljaE11bHRNYXApKTtcblx0XHRcdGlmIChmaWVsZCA9PSB0aGlzLm1haW5GaWVsZCkge1xuXHRcdFx0XHR0aGlzLnVwc2VydCgpPy5zdWJzZXJ0W3RoaXMuc3ViSW5kZXhdWydsb2d0bXAnXS5zZXQocm93SW5kZXghICsgZmllbGQhLCB7IG5ld1ZhbHVlOiBuZXdWYWx1ZSwgaWQ6IDAsIGxhYmVsOiBoZWFkZXJOYW1lIH0pO1xuXHRcdFx0fVxuXHRcdH0gZWxzZSBpZiAoaWQpIHtcblx0XHRcdGNvbnN0IGZpZWxkc3RyID0gYCR7ZmllbGR9YDtcblx0XHRcdGxldCBvOiBhbnk7XG5cdFx0XHRpZiAodGhpcy51cHNlcnQoKT8uc3Vic2VydFt0aGlzLnN1YkluZGV4XVsnbWFwdG1wJ10uaGFzKHJvd0luZGV4ISkpIHtcblx0XHRcdFx0byA9IHRoaXMudXBzZXJ0KCk/LnN1YnNlcnRbdGhpcy5zdWJJbmRleF1bJ21hcHRtcCddLmdldChyb3dJbmRleCEpO1xuXHRcdFx0XHRPYmplY3QuYXNzaWduKG8sIHsgW2ZpZWxkc3RyXTogbmV3VmFsdWUgfSk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRvID0geyBpZDogaWQsIFtmaWVsZHN0cl06IG5ld1ZhbHVlIH07XG5cdFx0XHR9XG5cdFx0XHR0aGlzLnVwc2VydCgpPy5zdWJzZXJ0W3RoaXMuc3ViSW5kZXhdWydtYXB0bXAnXS5zZXQocm93SW5kZXghLCBvKTtcblx0XHRcdGxldCBvbGQgPSB0aGlzLnVwc2VydCgpPy5zdWJzZXJ0W3RoaXMuc3ViSW5kZXhdWydsb2d0bXAnXS5nZXQocm93SW5kZXghICsgZmllbGQhKTtcblx0XHRcdGlmIChvbGQpIHtcblx0XHRcdFx0dGhpcy51cHNlcnQoKT8uc3Vic2VydFt0aGlzLnN1YkluZGV4XVsnbG9ndG1wJ10uc2V0KHJvd0luZGV4ISArIGZpZWxkISwge1xuXHRcdFx0XHRcdG5ld1ZhbHVlOiBuZXdWYWx1ZSxcblx0XHRcdFx0XHRvbGRWYWx1ZTogb2xkLm9sZFZhbHVlLFxuXHRcdFx0XHRcdGlkOiBpZCxcblx0XHRcdFx0XHRsYWJlbDogaGVhZGVyTmFtZSxcblx0XHRcdFx0fSk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHR0aGlzLnVwc2VydCgpPy5zdWJzZXJ0W3RoaXMuc3ViSW5kZXhdWydsb2d0bXAnXS5zZXQocm93SW5kZXghICsgZmllbGQhLCB7XG5cdFx0XHRcdFx0bmV3VmFsdWU6IG5ld1ZhbHVlLFxuXHRcdFx0XHRcdG9sZFZhbHVlOiBvbGRWYWx1ZSxcblx0XHRcdFx0XHRpZDogaWQsXG5cdFx0XHRcdFx0bGFiZWw6IGhlYWRlck5hbWUsXG5cdFx0XHRcdH0pO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRsZXQgZHQ6IGFueVtdID0gW107XG5cdFx0dGhpcy51cHNlcnQoKT8uc3Vic2VydFt0aGlzLnN1YkluZGV4XVsnbWFwdG1wJ10uZm9yRWFjaCgodmFsdWU6IGFueSwga2V5OiBhbnkpID0+IHtcblx0XHRcdGR0LnB1c2godmFsdWUpO1xuXHRcdH0pO1xuXHRcdHRoaXMudXBzZXJ0KClbJ3N1YnNlcnQnXVt0aGlzLnN1YkluZGV4XVsnc3ViRGF0YSddID0gZHQ7XG5cdFx0dGhpcy5hY3Rpb24uc2F2ZVNpZ25hbC5zZXQodHJ1ZSk7XG5cdFx0dGhpcy5ncmlkRGF0YUNoYW5nZWQuZW1pdCgpO1xuXHR9XG5cblx0aGFuZGxlQWRkZWRSb3dzKGFkZGVkUm93czogYW55W10pIHtcblx0XHRsZXQgaGVhZGVyTmFtZSA9ICcnO1xuXHRcdHRoaXMudG9PcHRpb25zKCkuY29sdW1uRGVmcz8uZm9yRWFjaCgoaXRlbTogYW55KSA9PiB7XG5cdFx0XHRpZiAoaXRlbS5maWVsZCA9PSB0aGlzLm1haW5GaWVsZCkge1xuXHRcdFx0XHRoZWFkZXJOYW1lID0gaXRlbS5oZWFkZXJOYW1lO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHRcdGlmICh0aGlzLmFkZFNvcnQoKSkge1xuXHRcdFx0Ly8gY29uc29sZS5sb2coJ2FkZC0tLS0tJyx0aGlzLmFkZFNvcnQoKSlcblx0XHRcdC8vIGxldCBsb2cgPSBuZXcgTWFwKClcblx0XHRcdHRoaXMuc2VsZWN0RGF0YSgpIS5mb3JFYWNoKChpdGVtOiBhbnkpID0+IHtcblx0XHRcdFx0Y29uc3Qgcm93RGF0YSA9IHRoaXMuZ3JpZC5hcGkuZ2V0UmVuZGVyZWROb2RlcygpLm1hcCgobm9kZSkgPT4gbm9kZS5kYXRhKTtcblx0XHRcdFx0bGV0IGxhc3RJbmRleCA9IGZpbmRMYXN0SW5kZXgocm93RGF0YSwgKHY6IGFueSkgPT4gdlt0aGlzLmFkZFNvcnQoKSFdID09IGl0ZW1bdGhpcy5hZGRTb3J0KCkhXSwgdGhpcyk7XG5cdFx0XHRcdGxhc3RJbmRleCA9IGxhc3RJbmRleCA9PSAtMSA/IHJvd0RhdGEubGVuZ3RoIC0gMSA6IGxhc3RJbmRleDtcblx0XHRcdFx0Y29uc3QgcmVzdWx0ID0gdGhpcy5ncmlkLmFwaS5hcHBseVRyYW5zYWN0aW9uKHsgYWRkSW5kZXg6IGxhc3RJbmRleCArIDEsIGFkZDogW2l0ZW1dIH0pO1xuXHRcdFx0XHR0aGlzLnVwc2VydCgpPy5zdWJzZXJ0W3RoaXMuc3ViSW5kZXhdWydsb2d0bXAnXS5mb3JFYWNoKCh2YWx1ZTogYW55LCBrZXk6IGFueSkgPT4ge1xuXHRcdFx0XHRcdGxldCBpbmRleCA9IGtleS5tYXRjaCgvXlxcZCsvKVswXTtcblx0XHRcdFx0XHRjb25zb2xlLmxvZygnaW5kZXgtLS0tJywgaW5kZXgpO1xuXHRcdFx0XHRcdGNvbnN0IGluc2VydEluZGV4ID0gbGFzdEluZGV4ICsgMTtcblx0XHRcdFx0XHRpZiAoaW5kZXggPT0gaW5zZXJ0SW5kZXgpIHtcblx0XHRcdFx0XHRcdGNvbnN0IHJlcGxhY2VJbmRleCA9IGluc2VydEluZGV4ICsgMTtcblx0XHRcdFx0XHRcdGxldCBuZXdLZXkgPSBrZXkucmVwbGFjZSgvXlxcZCsvLCByZXBsYWNlSW5kZXgpO1xuXHRcdFx0XHRcdFx0dGhpcy51cHNlcnQoKT8uc3Vic2VydFt0aGlzLnN1YkluZGV4XVsnbG9ndG1wJ10uc2V0KG5ld0tleSwgdmFsdWUpO1xuXHRcdFx0XHRcdFx0dGhpcy51cHNlcnQoKT8uc3Vic2VydFt0aGlzLnN1YkluZGV4XVsnbG9ndG1wJ10uZGVsZXRlKGtleSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KTtcblx0XHRcdFx0bGV0IG1hcERhdGEgPSB0aGlzLnVwc2VydCgpPy5zdWJzZXJ0W3RoaXMuc3ViSW5kZXhdWydtYXB0bXAnXS5nZXQobGFzdEluZGV4ICsgMSk7XG5cdFx0XHRcdGlmIChtYXBEYXRhKSB7XG5cdFx0XHRcdFx0dGhpcy51cHNlcnQoKT8uc3Vic2VydFt0aGlzLnN1YkluZGV4XVsnbWFwdG1wJ10uZGVsZXRlKGxhc3RJbmRleCArIDEpO1xuXHRcdFx0XHRcdHRoaXMudXBzZXJ0KCk/LnN1YnNlcnRbdGhpcy5zdWJJbmRleF1bJ21hcHRtcCddLnNldChsYXN0SW5kZXggKyAyLCBtYXBEYXRhKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRyZXN1bHQhLmFkZC5mb3JFYWNoKChub2RlOiBhbnkpID0+IHtcblx0XHRcdFx0XHQvLyBjb25zb2xlLmxvZygnbm9kZS0tLS0nLG5vZGUpXG5cdFx0XHRcdFx0dGhpcy51cHNlcnQoKT8uc3Vic2VydFt0aGlzLnN1YkluZGV4XVsnbWFwdG1wJ10uc2V0KG5vZGUucm93SW5kZXgsIG5vZGUuZGF0YSk7XG5cdFx0XHRcdFx0dGhpcy51cHNlcnQoKT8uc3Vic2VydFt0aGlzLnN1YkluZGV4XVsnbG9ndG1wJ10uc2V0KG5vZGUucm93SW5kZXghICsgdGhpcy5tYWluRmllbGQhLCB7XG5cdFx0XHRcdFx0XHRuZXdWYWx1ZTogbm9kZS5kYXRhW3RoaXMubWFpbkZpZWxkXSxcblx0XHRcdFx0XHRcdGlkOiAwLFxuXHRcdFx0XHRcdFx0bGFiZWw6IGhlYWRlck5hbWUsXG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH0pO1xuXHRcdFx0XHQvLyBjb25zb2xlLmxvZygnbGFzdEluZGV4JyxsYXN0SW5kZXgpXG5cdFx0XHR9KTtcblx0XHRcdHRoaXMuZ3JpZC5hcGkucmVmcmVzaENlbGxzKHtcblx0XHRcdFx0Zm9yY2U6IHRydWUsIC8vIOW8uuWItuWIt+aWsFxuXHRcdFx0XHRzdXBwcmVzc0ZsYXNoOiB0cnVlLCAvLyDpgb/lhY3pl6rng4Fcblx0XHRcdH0pO1xuXHRcdFx0Ly8gdGhpcy51cHNlcnQoKSEuc3Vic2VydFt0aGlzLnN1YkluZGV4XVsnbG9ndG1wJ10gPSBsb2dcblx0XHR9IGVsc2Uge1xuXHRcdFx0Y29uc3QgcmVzdWx0ID0gdGhpcy5ncmlkLmFwaS5hcHBseVRyYW5zYWN0aW9uKHsgYWRkOiBhZGRlZFJvd3MgfSk7XG5cdFx0XHRyZXN1bHQhLmFkZC5mb3JFYWNoKChub2RlOiBhbnkpID0+IHtcblx0XHRcdFx0Y29uc3Qgcm93SW5kZXggPSB0aGlzLmdyaWQuYXBpLmdldFJvd05vZGUobm9kZS5pZCk/LnJvd0luZGV4O1xuXHRcdFx0XHR0aGlzLnVwc2VydCgpPy5zdWJzZXJ0W3RoaXMuc3ViSW5kZXhdWydtYXB0bXAnXS5zZXQocm93SW5kZXghLCBub2RlLmRhdGEpO1xuXHRcdFx0XHR0aGlzLnVwc2VydCgpPy5zdWJzZXJ0W3RoaXMuc3ViSW5kZXhdWydsb2d0bXAnXS5zZXQocm93SW5kZXghICsgdGhpcy5tYWluRmllbGQhLCB7XG5cdFx0XHRcdFx0bmV3VmFsdWU6IG5vZGUuZGF0YVt0aGlzLm1haW5GaWVsZF0sXG5cdFx0XHRcdFx0aWQ6IDAsXG5cdFx0XHRcdFx0bGFiZWw6IGhlYWRlck5hbWUsXG5cdFx0XHRcdH0pO1xuXHRcdFx0fSk7XG5cdFx0fVxuXHRcdGxldCBkdDogYW55W10gPSBbXTtcblx0XHR0aGlzLnVwc2VydCgpPy5zdWJzZXJ0W3RoaXMuc3ViSW5kZXhdWydtYXB0bXAnXS5mb3JFYWNoKCh2YWx1ZTogYW55LCBrZXk6IGFueSkgPT4ge1xuXHRcdFx0ZHQucHVzaCh2YWx1ZSk7XG5cdFx0fSk7XG5cdFx0Ly8gY29uc29sZS5sb2coJ3Vwc2VydC0tLS0tJyx0aGlzLnVwc2VydCgpKVxuXHRcdHRoaXMudXBzZXJ0KClbJ3N1YnNlcnQnXVt0aGlzLnN1YkluZGV4XVsnc3ViRGF0YSddID0gZHQ7XG5cdFx0dGhpcy5ncmlkRGF0YUNoYW5nZWQuZW1pdCgpO1xuXHRcdHRoaXMuYWp1c3RHcmlkSGVpZ2h0KCk7XG5cdH1cblxuXHRoYW5kbGVEZWxldGVkUm93cyhkZWxldGVkUm93czogYW55W10pIHtcblx0XHRjb25zdCByZW1vdmVJbmRleGVzID0gdGhpcy5ncmlkLmFwaS5nZXRTZWxlY3RlZE5vZGVzKCkubWFwKChub2RlKSA9PiBub2RlLnJvd0luZGV4KTtcblx0XHRyZW1vdmVJbmRleGVzLmZvckVhY2goKHJvd0luZGV4OiBhbnkpID0+IHtcblx0XHRcdHRoaXMudXBzZXJ0KCk/LnN1YnNlcnRbdGhpcy5zdWJJbmRleF1bJ21hcHRtcCddLmRlbGV0ZShyb3dJbmRleCEpO1xuXHRcdFx0dGhpcy51cHNlcnQoKT8uc3Vic2VydFt0aGlzLnN1YkluZGV4XVsnbG9ndG1wJ10uZGVsZXRlKHJvd0luZGV4ISArIHRoaXMubWFpbkZpZWxkISk7XG5cdFx0fSk7XG5cdFx0bGV0IGR0OiBhbnlbXSA9IFtdO1xuXHRcdHRoaXMudXBzZXJ0KCk/LnN1YnNlcnRbdGhpcy5zdWJJbmRleF1bJ21hcHRtcCddLmZvckVhY2goKHZhbHVlOiBhbnksIGtleTogYW55KSA9PiB7XG5cdFx0XHRkdC5wdXNoKHZhbHVlKTtcblx0XHR9KTtcblx0XHR0aGlzLnVwc2VydCgpWydzdWJzZXJ0J11bdGhpcy5zdWJJbmRleF1bJ3N1YkRhdGEnXSA9IGR0O1xuXHRcdHRoaXMuZ3JpZC5hcGkuYXBwbHlUcmFuc2FjdGlvbih7IHJlbW92ZTogZGVsZXRlZFJvd3MgfSk7XG5cdFx0dGhpcy5ncmlkRGF0YUNoYW5nZWQuZW1pdCgpO1xuXHRcdHRoaXMuYWp1c3RHcmlkSGVpZ2h0KCk7XG5cdH1cblxuXHRzZWxlY3RSb3dzRGVsZXRlZChkZWxldGVkUm93czogYW55W10pIHtcblx0XHRsZXQgaGVhZGVyTmFtZSA9ICcnO1xuXHRcdHRoaXMudG9PcHRpb25zKCkuY29sdW1uRGVmcz8uZm9yRWFjaCgoaXRlbTogYW55KSA9PiB7XG5cdFx0XHRpZiAoaXRlbS5maWVsZCA9PSB0aGlzLm1haW5GaWVsZCkge1xuXHRcdFx0XHRoZWFkZXJOYW1lID0gaXRlbS5oZWFkZXJOYW1lO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHRcdGNvbnN0IHJlc3VsdCA9IHRoaXMuZ3JpZC5hcGkuYXBwbHlUcmFuc2FjdGlvbih7IHJlbW92ZTogZGVsZXRlZFJvd3MgfSk7XG5cdFx0cmVzdWx0Py5yZW1vdmUuZm9yRWFjaCgobm9kZSkgPT4ge1xuXHRcdFx0Ly8gY29uc29sZS5sb2coJ25vZGUtLS0nLG5vZGUuc291cmNlUm93SW5kZXgpO1xuXHRcdFx0bGV0IGtleSA9IG5vZGUuc291cmNlUm93SW5kZXggKyB0aGlzLm1haW5GaWVsZCE7XG5cdFx0XHR0aGlzLnVwc2VydCgpPy5zdWJzZXJ0W3RoaXMuc3ViSW5kZXhdWydsb2d0bXAnXS5kZWxldGUoa2V5KTtcblx0XHRcdHRoaXMudXBzZXJ0KCk/LnN1YnNlcnRbdGhpcy5zdWJJbmRleF1bJ21hcHRtcCddLmRlbGV0ZShub2RlLnNvdXJjZVJvd0luZGV4KTtcblx0XHRcdHRoaXMudXBzZXJ0KCk/LnN1YnNlcnRbdGhpcy5zdWJJbmRleF1bJ21hcHRtcCddLmZvckVhY2goKHZhbHVlOiBhbnksIGtleTogYW55KSA9PiB7XG5cdFx0XHRcdGlmICghdmFsdWUuaWQgJiYga2V5ID4gbm9kZS5zb3VyY2VSb3dJbmRleCkge1xuXHRcdFx0XHRcdHRoaXMudXBzZXJ0KCk/LnN1YnNlcnRbdGhpcy5zdWJJbmRleF1bJ21hcHRtcCddLmRlbGV0ZShrZXkpO1xuXHRcdFx0XHR9XG5cdFx0XHR9KTtcblx0XHRcdHRoaXMudXBzZXJ0KCk/LnN1YnNlcnRbdGhpcy5zdWJJbmRleF1bJ2xvZ3RtcCddLmZvckVhY2goKHZhbHVlOiBhbnksIGtleTogYW55KSA9PiB7XG5cdFx0XHRcdGxldCBpbmRleCA9IGtleS5tYXRjaCgvXlxcZCsvKVswXTtcblx0XHRcdFx0aWYgKCF2YWx1ZS5pZCAmJiBpbmRleCA+IG5vZGUuc291cmNlUm93SW5kZXgpIHtcblx0XHRcdFx0XHR0aGlzLnVwc2VydCgpPy5zdWJzZXJ0W3RoaXMuc3ViSW5kZXhdWydsb2d0bXAnXS5kZWxldGUoa2V5KTtcblx0XHRcdFx0fVxuXHRcdFx0fSk7XG5cdFx0fSk7XG5cdFx0dGhpcy5ncmlkLmFwaS5mb3JFYWNoTm9kZSgobm9kZTogYW55KSA9PiB7XG5cdFx0XHRjb25zdCByb3dJbmRleCA9IG5vZGUucm93SW5kZXg7XG5cdFx0XHRpZiAoIW5vZGUuZGF0YS5pZCkge1xuXHRcdFx0XHR0aGlzLnVwc2VydCgpPy5zdWJzZXJ0W3RoaXMuc3ViSW5kZXhdWydtYXB0bXAnXS5zZXQocm93SW5kZXghLCBub2RlLmRhdGEpO1xuXHRcdFx0XHR0aGlzLnVwc2VydCgpPy5zdWJzZXJ0W3RoaXMuc3ViSW5kZXhdWydsb2d0bXAnXS5zZXQocm93SW5kZXghICsgdGhpcy5tYWluRmllbGQhLCB7XG5cdFx0XHRcdFx0bmV3VmFsdWU6IG5vZGUuZGF0YVt0aGlzLm1haW5GaWVsZF0sXG5cdFx0XHRcdFx0aWQ6IDAsXG5cdFx0XHRcdFx0bGFiZWw6IGhlYWRlck5hbWUsXG5cdFx0XHRcdH0pO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0dGhpcy51cHNlcnQoKT8uc3Vic2VydFt0aGlzLnN1YkluZGV4XVsnbWFwdG1wJ10uZm9yRWFjaCgodmFsdWU6IGFueSwga2V5OiBhbnkpID0+IHtcblx0XHRcdFx0XHRpZiAodmFsdWUuaWQgPT09IG5vZGUuZGF0YS5pZCAmJiBrZXkgIT0gcm93SW5kZXgpIHtcblx0XHRcdFx0XHRcdHRoaXMudXBzZXJ0KCk/LnN1YnNlcnRbdGhpcy5zdWJJbmRleF1bJ21hcHRtcCddLmRlbGV0ZShrZXkpO1xuXHRcdFx0XHRcdFx0dGhpcy51cHNlcnQoKT8uc3Vic2VydFt0aGlzLnN1YkluZGV4XVsnbWFwdG1wJ10uc2V0KHJvd0luZGV4LCB2YWx1ZSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KTtcblx0XHRcdFx0dGhpcy51cHNlcnQoKT8uc3Vic2VydFt0aGlzLnN1YkluZGV4XVsnbG9ndG1wJ10uZm9yRWFjaCgodmFsdWU6IGFueSwga2V5OiBhbnkpID0+IHtcblx0XHRcdFx0XHRpZiAodmFsdWUuaWQgPT0gbm9kZS5kYXRhLmlkKSB7XG5cdFx0XHRcdFx0XHRsZXQgaW5kZXggPSBrZXkubWF0Y2goL15cXGQrLylbMF07XG5cdFx0XHRcdFx0XHRpZiAoaW5kZXggIT0gcm93SW5kZXgpIHtcblx0XHRcdFx0XHRcdFx0bGV0IG5ld0tleSA9IGtleS5yZXBsYWNlKC9eXFxkKy8sIHJvd0luZGV4KTtcblx0XHRcdFx0XHRcdFx0dGhpcy51cHNlcnQoKT8uc3Vic2VydFt0aGlzLnN1YkluZGV4XVsnbG9ndG1wJ10uZGVsZXRlKGtleSk7XG5cdFx0XHRcdFx0XHRcdHRoaXMudXBzZXJ0KCk/LnN1YnNlcnRbdGhpcy5zdWJJbmRleF1bJ2xvZ3RtcCddLnNldChuZXdLZXksIHZhbHVlKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHRcdGxldCBkdDogYW55W10gPSBbXTtcblx0XHR0aGlzLnVwc2VydCgpPy5zdWJzZXJ0W3RoaXMuc3ViSW5kZXhdWydtYXB0bXAnXS5mb3JFYWNoKCh2YWx1ZTogYW55LCBrZXk6IGFueSkgPT4ge1xuXHRcdFx0ZHQucHVzaCh2YWx1ZSk7XG5cdFx0fSk7XG5cdFx0dGhpcy51cHNlcnQoKVsnc3Vic2VydCddW3RoaXMuc3ViSW5kZXhdWydzdWJEYXRhJ10gPSBkdDtcblx0XHR0aGlzLmdyaWREYXRhQ2hhbmdlZC5lbWl0KCk7XG5cdFx0dGhpcy5hanVzdEdyaWRIZWlnaHQoKTtcblx0XHQvLyBjb25zb2xlLmxvZygncmVzdWx0LS0tLS0nLCB0aGlzLnVwc2VydCgpKVxuXHR9XG5cblx0Y2xlYXIoKSB7XG5cdFx0aWYgKHRoaXMudG9PcHRpb25zKCkucm93TW9kZWxUeXBlICE9PSAnc2VydmVyU2lkZScpIHtcblx0XHRcdHRoaXMuZ3JpZD8uYXBpLnNldEdyaWRPcHRpb24oJ3Jvd0RhdGEnLCBbXSk7XG5cdFx0fVxuXHRcdHRoaXMudXBzZXJ0KCkhLnN1YnNlcnRbdGhpcy5zdWJJbmRleF0gPSB7XG5cdFx0XHRzdWJNb2RlbE5hbWU6IHRoaXMudG9PcHRpb25zKCkubW9kZWxOYW1lLFxuXHRcdFx0Zms6IHRoaXMudG9PcHRpb25zKCkuZmssXG5cdFx0XHRzdWJEYXRhOiBbXSxcblx0XHRcdG1hcHRtcDogbmV3IE1hcCgpLFxuXHRcdFx0bG9ndG1wOiBuZXcgTWFwKCksXG5cdFx0XHRyZWZlcmVuY2U6IHRoaXMudG9PcHRpb25zKCkucmVmZXJlbmNlLFxuXHRcdH07XG5cdFx0dGhpcy5ncmlkRGF0YUNoYW5nZWQuZW1pdCgpO1xuXHR9XG5cblx0YWRkUm93KCkge1xuXHRcdGlmICh0aGlzLmFkZFR5cGUoKSA9PSAnaGFuZGxlJykge1xuXHRcdFx0bGV0IGl0ZW0gPSB0eXBlb2YgdGhpcy50b09wdGlvbnMoKS5hZGREYXRhQ2IgPT0gJ2Z1bmN0aW9uJyA/IHRoaXMudG9PcHRpb25zKCkuYWRkRGF0YUNiKCkgOiB7fTtcblx0XHRcdGlmICh0aGlzLmdyaWRPcHRpb25zKCkuZHJhZ1NvcnQpIHtcblx0XHRcdFx0bGV0IHRvdGFsQ291bnQgPSB0aGlzLmdyaWQuYXBpLmdldERpc3BsYXllZFJvd0NvdW50KCk7XG5cdFx0XHRcdGl0ZW1bdGhpcy5ncmlkT3B0aW9ucygpLmRyYWdTb3J0IV0gPSB0b3RhbENvdW50ICsgMTtcblx0XHRcdH1cblx0XHRcdHRoaXMuYWN0aW9uLnVwZGF0ZUdyaWRBY3Rpb24oe3R5cGU6J2FkZCcsZGF0YTogW2l0ZW1dfSlcblx0XHRcdHRoaXMuZ3JpZC5hcGkuYXBwbHlUcmFuc2FjdGlvbih7IGFkZDogW2l0ZW1dIH0pO1xuXHRcdFx0dGhpcy5ncmlkRGF0YUNoYW5nZWQuZW1pdCgpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLmFkZEVtaXQuZW1pdCgpO1xuXHRcdH1cblx0XHR0aGlzLmFqdXN0R3JpZEhlaWdodCgpO1xuXHR9XG5cblx0ZGVsUm93cygpIHtcblx0XHRjb25zdCBzZWxlY3RlZE5vZGVzID0gdGhpcy5ncmlkLmFwaS5nZXRTZWxlY3RlZE5vZGVzKCk7XG5cdFx0Y29uc3Qgc2VsZWN0ZWREYXRhID0gc2VsZWN0ZWROb2Rlcy5tYXAoKG5vZGUpID0+IG5vZGUuZGF0YSkgfHwgW107XG5cdFx0bGV0IGlkcyA9IHNlbGVjdGVkRGF0YS5tYXAoKGRhdGEpID0+IGRhdGEuaWQpLmZpbHRlcigodikgPT4gdikgfHwgW107XG5cdFx0aWYgKGlkcy5sZW5ndGggPiAwKSB7XG5cdFx0XHR0aGlzLmRlbGV0ZUVtaXQuZW1pdChpZHMpO1xuXHRcdH0gZWxzZSBpZiAoc2VsZWN0ZWREYXRhLmxlbmd0aCA+IDAgJiYgaWRzLmxlbmd0aCA9PSAwKSB7XG5cdFx0XHR0aGlzLmhhbmRsZURlbGV0ZWRSb3dzKHNlbGVjdGVkRGF0YSk7XG5cdFx0XHR0aGlzLmFjdGlvbi51cGRhdGVHcmlkQWN0aW9uKHt0eXBlOidkZWxldGUnLGRhdGE6IHNlbGVjdGVkRGF0YX0pXG5cdFx0fVxuXHRcdHRoaXMuYWp1c3RHcmlkSGVpZ2h0KCk7XG5cdH1cblxuXHRzZXRTY3JvbGxIZWlnaHQoaGVpZ2h0Pzogc3RyaW5nKSB7XG5cdFx0aWYgKHdpbmRvdy5pbm5lcldpZHRoIDwgMTAyNCAmJiB0aGlzLnRvT3B0aW9ucygpLm1haW5GaWVsZCkge1xuXHRcdFx0dGhpcy5yZW5kZXJlci5yZW1vdmVTdHlsZSh0aGlzLmNvbnRhaW5lclJlZi5uYXRpdmVFbGVtZW50LCAnbWF4LWhlaWdodCcpO1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHRoZWlnaHQgPSBoZWlnaHQgfHwgdGhpcy50b09wdGlvbnMoKS5zY3JvbGxIZWlnaHQ7XG5cdFx0aWYgKGhlaWdodCkge1xuXHRcdFx0dGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmNvbnRhaW5lclJlZi5uYXRpdmVFbGVtZW50LCAnbWF4LWhlaWdodCcsIGhlaWdodCk7XG5cdFx0fVxuXHR9XG5cblx0aW5pdEdyaWRIZWlnaHQoKSB7XG5cdFx0dGhpcy5ob3Jpem9udGFsU2Nyb2xsQmFyT2JzZXJ2ZXIgPSBuZXcgUmVzaXplT2JzZXJ2ZXIoKGVudHJpZXMpID0+IHtcblx0XHRcdGVudHJpZXMuZm9yRWFjaCgoZW50cnkpID0+IHtcblx0XHRcdFx0dGhpcy5ob3Jpem9udGFsU2Nyb2xsQmFySGVpZ2h0ID0gZW50cnkudGFyZ2V0LmNsaWVudEhlaWdodDtcblx0XHRcdFx0dGhpcy5hanVzdEdyaWRIZWlnaHQoKTtcblx0XHRcdH0pO1xuXHRcdH0pO1xuXHRcdHRoaXMuaG9yaXpvbnRhbFNjcm9sbEJhck9ic2VydmVyLm9ic2VydmUodGhpcy5ncmlkUmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignLmFnLWJvZHktaG9yaXpvbnRhbC1zY3JvbGwnKSk7XG5cdFx0dGhpcy52ZXJ0aWNhbFNjcm9sbEJhck9ic2VydmVyID0gbmV3IFJlc2l6ZU9ic2VydmVyKChlbnRyaWVzKSA9PiB7XG5cdFx0XHRlbnRyaWVzLmZvckVhY2goKGVudHJ5KSA9PiB7XG5cdFx0XHRcdHRoaXMudmVydGljYWxTY3JvbGxCYXJXaWR0aCA9IGVudHJ5LnRhcmdldC5jbGllbnRXaWR0aDtcblx0XHRcdFx0dGhpcy5hanVzdEdyaWRIZWlnaHQoKTtcblx0XHRcdH0pO1xuXHRcdH0pO1xuXHRcdHRoaXMudmVydGljYWxTY3JvbGxCYXJPYnNlcnZlci5vYnNlcnZlKHRoaXMuZ3JpZFJlZi5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJy5hZy1ib2R5LXZlcnRpY2FsLXNjcm9sbCcpKTtcblx0XHR0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuZ3JpZFJlZi5uYXRpdmVFbGVtZW50LCAnd2lkdGgnLCAnMTAwJScpO1xuXHRcdHRoaXMuc2V0U2Nyb2xsSGVpZ2h0KCk7XG5cdH1cblxuXHRjYWxjR3JpZE1hcmdpbigpIHtcblx0XHRjb25zdCBtYXJnaW4gPSB0aGlzLnNob3dBY3QoKSAmJiB0aGlzLmF1dGhMZXZlbCgpID49IDMgJiYgKHRoaXMuYWRkVHlwZSgpICE9ICdub25lJyB8fCB0aGlzLnNob3dEZWxldGUoKSkgPyAyIDogMTtcblx0XHRsZXQgYm9yZGVyQm90dG9tID0gMDtcblx0XHRpZiAodGhpcy5ncmlkUmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignLmFnLXJvb3Qtd3JhcHBlcicpKSB7XG5cdFx0XHRib3JkZXJCb3R0b20gPSBwYXJzZUZsb2F0KFxuXHRcdFx0XHR3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSh0aGlzLmdyaWRSZWYubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCcuYWctcm9vdC13cmFwcGVyJykpLmdldFByb3BlcnR5VmFsdWUoJ2JvcmRlci1ib3R0b20td2lkdGgnKSxcblx0XHRcdCk7XG5cdFx0fVxuXHRcdHJldHVybiBNYXRoLm1pbigyLCBtYXJnaW4gKyBib3JkZXJCb3R0b20pO1xuXHR9XG5cblx0Z2V0Q29udGFpbmVySGVpZ2h0KCkge1xuXHRcdGxldCBjb250YWluZXIgPSA1NDY7XG5cdFx0aWYgKHRoaXMuZ3JpZFJlZi5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJy5hZy1jZW50ZXItY29scy1jb250YWluZXInKSkge1xuXHRcdFx0Y29udGFpbmVyID0gcGFyc2VGbG9hdChcblx0XHRcdFx0d2luZG93LmdldENvbXB1dGVkU3R5bGUodGhpcy5ncmlkUmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignLmFnLWNlbnRlci1jb2xzLWNvbnRhaW5lcicpKS5nZXRQcm9wZXJ0eVZhbHVlKCdoZWlnaHQnKSxcblx0XHRcdCk7XG5cdFx0fVxuXHRcdHJldHVybiBjb250YWluZXI7XG5cdH1cblxuXHRhanVzdEdyaWRIZWlnaHQoKSB7XG5cdFx0bGV0IGNvbnRhaW5lciA9IHRoaXMuZ2V0Q29udGFpbmVySGVpZ2h0KCk7XG5cdFx0bGV0IGhlYWRlckhlaWdodCA9IHRoaXMuZ3JpZE9wdGlvbnMoKS5oZWFkZXJIZWlnaHQgPz8gNDk7XG5cdFx0bGV0IG1hcmdpbiA9IHRoaXMuY2FsY0dyaWRNYXJnaW4oKTtcblx0XHRsZXQgdG90YWwgPSBjb250YWluZXIgKyBtYXJnaW4gKyBoZWFkZXJIZWlnaHQ7XG5cdFx0Y29uc3QgaGVpZ2h0ID0gTWF0aC5tYXgodG90YWwsIGhlYWRlckhlaWdodCArIDQyICsgbWFyZ2luKTtcblx0XHR0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xuXHRcdFx0dGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmdyaWRSZWYubmF0aXZlRWxlbWVudCwgJ2hlaWdodCcsIGAke2hlaWdodCArIHRoaXMuaG9yaXpvbnRhbFNjcm9sbEJhckhlaWdodH1weGApO1xuXHRcdFx0dGhpcy5hanVzdEdyaWRTdGF0ZSgpO1xuXHRcdH0pO1xuXHR9XG5cblx0YWp1c3RHcmlkU3RhdGUoKSB7XG5cdFx0dGhpcy5ub1Jvd3MgPSB0aGlzLmdyaWQuYXBpLmdldERpc3BsYXllZFJvd0NvdW50KCkgPT09IDA7XG5cdFx0dGhpcy5ub1Jvd3MgPyB0aGlzLmdyaWQuYXBpLnNob3dOb1Jvd3NPdmVybGF5KCkgOiB0aGlzLmdyaWQuYXBpLmhpZGVPdmVybGF5KCk7XG5cdFx0dGhpcy5zaG93SG9yaXpvbnRhbCA9IHRoaXMuYWN0UG9zKCkgPT0gJ2JvdHRvbScgJiYgKHRoaXMubm9Sb3dzIHx8ICEhdGhpcy52ZXJ0aWNhbFNjcm9sbEJhcldpZHRoKTtcblx0fVxuXG5cdGNhbmNlbFNlbGVjdCgpIHtcblx0XHR0aGlzLmdldEdyaWQoKS5hcGkuZGVzZWxlY3RBbGwoKTtcblx0XHR0aGlzLnNlbGVjdGVkUm93cy5zZXQoW10pO1xuXHR9XG5cblx0ZWRpdGluZ0ZpeCgpIHtcblx0XHRkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIChldmVudDogYW55KSA9PiB7XG5cdFx0XHRpZiAoIXRoaXMuZ3JpZD8uYXBpPy5nZXRFZGl0aW5nQ2VsbHMoKT8ubGVuZ3RoKSB7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblx0XHRcdGNvbnN0IGdyaWRFbGVtZW50OiBhbnkgPSB0aGlzLmdyaWRSZWYubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCcuYWctcm9vdC13cmFwcGVyJyk7XG5cdFx0XHRpZiAoIWdyaWRFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCkpIHtcblx0XHRcdFx0dGhpcy5ncmlkLmFwaS5zdG9wRWRpdGluZygpO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHR9XG5cdHJvd0RyYWdFbnRlcihldmVudDogYW55KSB7XG5cdFx0Y29uc29sZS5sb2coJ2V2ZW50LS0tJywgZXZlbnQpO1xuXHRcdHRoaXMuZHJhZ0JlZm9yZUluZGV4ID0gZXZlbnQub3ZlckluZGV4O1xuXHR9XG5cblx0b25Sb3dEcmFnRW5kKGV2ZW50OiBSb3dEcmFnRW5kRXZlbnQpIHtcblxuXHRcdGlmICghdGhpcy5ncmlkT3B0aW9ucygpLmRyYWdTb3J0KSByZXR1cm47XG5cblx0XHRjb25zdCBzb3J0RmllbGQgPSB0aGlzLmdyaWRPcHRpb25zKCkuZHJhZ1NvcnQhO1xuXHRcdGNvbnN0IGNvbERlZnMgPSBldmVudC5hcGkuZ2V0Q29sdW1uRGVmcygpO1xuXHRcdGNvbnN0IGNvbEl0ZW06IGFueSA9IGNvbERlZnM/LmZpbmQoKHY6IGFueSkgPT4gdi5maWVsZCA9PT0gc29ydEZpZWxkKSB8fCB7fTtcblxuXHRcdGxldCBtYXAgPSBuZXcgTWFwKCk7XG5cdFx0bGV0IGxvZ01hcCA9IG5ldyBNYXAoKTtcblx0XHRsZXQgZHQ6IGFueVtdID0gW107XG5cblx0XHRjb25zdCB1cHNlcnQgPSB0aGlzLnVwc2VydCgpO1xuXHRcdGlmICghdXBzZXJ0KSByZXR1cm47XG5cblx0XHRjb25zdCBtYXBUbXA6IE1hcDxhbnksIGFueT4gPSB1cHNlcnQuc3Vic2VydFt0aGlzLnN1YkluZGV4XVsnbWFwdG1wJ107XG5cdFx0Y29uc3QgbG9nVG1wOiBNYXA8YW55LCBhbnk+ID0gdXBzZXJ0LnN1YnNlcnRbdGhpcy5zdWJJbmRleF1bJ2xvZ3RtcCddO1xuXG5cdFx0dGhpcy5ncmlkPy5hcGkuZm9yRWFjaE5vZGUoKG5vZGUsIGluZGV4KSA9PiB7XG5cblx0XHRcdGNvbnN0IGlkID0gbm9kZS5kYXRhLmlkO1xuXHRcdFx0Y29uc3QgbmV3U29ydCA9IGluZGV4ICsgMTtcblx0XHRcdGNvbnN0IG9sZFNvcnQgPSBub2RlLmRhdGFbc29ydEZpZWxkXTtcblx0XHRcdC8vIOabtOaWsCBncmlkIOaVsOaNrlxuXHRcdFx0bm9kZS5kYXRhW3NvcnRGaWVsZF0gPSBuZXdTb3J0O1xuXHRcdFx0bm9kZS5zZXREYXRhVmFsdWUoc29ydEZpZWxkLCBuZXdTb3J0KTtcblx0XHRcdC8vIGNvbnNvbGUubG9nKCdub2RlLS0tLScsIG5vZGUuZGF0YSwgaW5kZXgsbmV3U29ydCk7XG5cdFx0XHRpZiAoIWlkKSB7XG5cblx0XHRcdFx0bWFwVG1wLnNldChpbmRleCwge1xuXHRcdFx0XHRcdC4uLm5vZGUuZGF0YSxcblx0XHRcdFx0XHRbc29ydEZpZWxkXTogbmV3U29ydFxuXHRcdFx0XHR9KTtcblxuXHRcdFx0fSBlbHNlIHtcblxuXHRcdFx0XHRtYXAuc2V0KGluZGV4LCB7XG5cdFx0XHRcdFx0aWQ6IGlkLFxuXHRcdFx0XHRcdFtzb3J0RmllbGRdOiBuZXdTb3J0XG5cdFx0XHRcdH0pO1xuXG5cdFx0XHR9XG5cdFx0XHRpZiAoaWQpIHtcblx0XHRcdFx0Y29uc3Qga2V5ID0gaWQgKyAnXycgKyBzb3J0RmllbGQ7XG5cdFx0XHRcdGxldCBvbGRMb2cgPSBsb2dUbXAuZ2V0KGtleSk7XG5cblx0XHRcdFx0aWYgKG9sZExvZykge1xuXHRcdFx0XHRcdG9sZExvZy5uZXdWYWx1ZSA9IG5ld1NvcnQ7XG5cdFx0XHRcdFx0bG9nTWFwLnNldChrZXksIG9sZExvZyk7XG5cblx0XHRcdFx0fSBlbHNlIGlmIChvbGRTb3J0ICE9PSBuZXdTb3J0KSB7XG5cdFx0XHRcdFx0bG9nTWFwLnNldChrZXksIHtcblx0XHRcdFx0XHRcdGlkOiBpZCxcblx0XHRcdFx0XHRcdGxhYmVsOiBjb2xJdGVtWydoZWFkZXJOYW1lJ10gfHwgJ+aOkuW6jycsXG5cdFx0XHRcdFx0XHRvbGRWYWx1ZTogb2xkU29ydCxcblx0XHRcdFx0XHRcdG5ld1ZhbHVlOiBuZXdTb3J0XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9KTtcblx0aWYgKHVwc2VydCkge1xuXHRcdHVwc2VydC5zdWJzZXJ0W3RoaXMuc3ViSW5kZXhdWydtYXB0bXAnXSA9XG5cdFx0XHRcdG5ldyBNYXAoWy4uLm1hcFRtcCwgLi4ubWFwXSk7XG5cdFx0XHR1cHNlcnQuc3Vic2VydFt0aGlzLnN1YkluZGV4XVsnbG9ndG1wJ10gPVxuXHRcdFx0XHRuZXcgTWFwKFsuLi5sb2dUbXAsIC4uLmxvZ01hcF0pO1xuXG5cdFx0XHR1cHNlcnQuc3Vic2VydFt0aGlzLnN1YkluZGV4XVsnbWFwdG1wJ10uZm9yRWFjaCgodmFsdWU6IGFueSkgPT4ge1xuXHRcdFx0XHRkdC5wdXNoKHZhbHVlKTtcblx0XHRcdH0pO1xuXG5cdFx0XHR1cHNlcnQuc3Vic2VydFt0aGlzLnN1YkluZGV4XVsnc3ViRGF0YSddID0gZHQ7XG5cdFx0XHRjb25zb2xlLmxvZygnZHJhZ1Vwc2VydC0tLS0nLCB1cHNlcnQpO1xuXHRcdH1cblx0fVxuLy8g5pe26Ze06IyD5Zu05re75Yqg5pe25YiG56eSXG5cdGlzUmFuZ2UoY29sdW1uRmlsdGVyOkNvbHVtbkZpbHRlcltdKXtcblx0XHRjb25zdCBpc0VpeHN0ID0gY29sdW1uRmlsdGVyLnNvbWUoKHY6YW55KSA9PiB2LnR5cGUgPT0gJ2luUmFuZ2UnKVxuXHRcdGlmKGlzRWl4c3Qpe1xuXHRcdFx0bGV0IGNvbHMgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGNvbHVtbkZpbHRlcikpXG5cdFx0XHRjb2xzLmZvckVhY2goKGl0ZW06Q29sdW1uRmlsdGVyKSA9PiB7XG5cdFx0XHRcdGlmKGl0ZW0udHlwZSA9PSAnaW5SYW5nZScpe1xuXHRcdFx0XHRcdGl0ZW0uZnJvbSA9IGAke2l0ZW0uZnJvbX0gMDA6MDA6MDBgXG5cdFx0XHRcdFx0aXRlbS50byA9IGAke2l0ZW0udG99IDIzOjU5OjU5YFxuXHRcdFx0XHR9XG5cdFx0XHR9KVxuXHRcdFx0cmV0dXJuIGNvbHNcblx0XHR9XG5cdFx0cmV0dXJuIGNvbHVtbkZpbHRlclxuXHR9XG59XG4iLCJAaWYgKGluaXRHcmlkKSB7XG5cdDxkaXZcblx0XHQjZ3JpZENvbnRhaW5lclxuXHRcdFtjbGFzc109XCJcblx0XHRcdCh0b09wdGlvbnMoKS50cmVlRGF0YUZpZWxkID8gJ3RyZWUtZ3JpZCAnIDogJycpICtcblx0XHRcdCdncmlkLWNvbnRhaW5lciB3LWZ1bGwgZmxleCBqdXN0aWZ5LWJldHdlZW4gJyArXG5cdFx0XHQoYWN0UG9zKCkgPT0gJ2JvdHRvbScgPyAnZmxleC1jb2wnIDogJ2ZsZXgtY29sLXJldmVyc2UnKVxuXHRcdFwiPlxuXHRcdDxhZy1ncmlkLWFuZ3VsYXJcblx0XHRcdFt0aGVtZV09XCJteVRoZW1lKClcIlxuXHRcdFx0W2NvbHVtbkRlZnNdPVwiY29sdW1uRGVmc1wiXG5cdFx0XHRbZ3JpZE9wdGlvbnNdPVwidG9PcHRpb25zKClcIlxuXHRcdFx0W2xvY2FsZVRleHRdPVwibG9jYWxlVGV4dFwiXG5cdFx0XHRbY29tcG9uZW50c109XCJjb21wb25lbnRzXCJcblx0XHRcdFtzdXBwcmVzc0FnZ0Z1bmNJbkhlYWRlcl09XCJ0cnVlXCJcblx0XHRcdFtzdXBwcmVzc0RyYWdMZWF2ZUhpZGVzQ29sdW1uc109XCJ0cnVlXCJcblx0XHRcdFtzdXBwcmVzc0xhc3RFbXB0eUxpbmVPblBhc3RlXT1cInRydWVcIlxuXHRcdFx0W3VuZG9SZWRvQ2VsbEVkaXRpbmddPVwidG9PcHRpb25zKCkudW5kb1JlZG9DZWxsRWRpdGluZ1wiXG5cdFx0XHRbdW5kb1JlZG9DZWxsRWRpdGluZ0xpbWl0XT1cInRvT3B0aW9ucygpLnVuZG9SZWRvQ2VsbEVkaXRpbmdMaW1pdFwiXG5cdFx0XHRbcm93QnVmZmVyXT1cIjMwXCJcblx0XHRcdChjZWxsVmFsdWVDaGFuZ2VkKT1cImNlbGxWYWx1ZUNoYW5nZWQoJGV2ZW50KVwiXG5cdFx0XHQoc2VsZWN0aW9uQ2hhbmdlZCk9XCJvblNlbGVjdGlvbkNoYW5nZWQoJGV2ZW50KVwiXG5cdFx0XHQocm93R3JvdXBPcGVuZWQpPVwib25Sb3dHcm91cE9wZW5lZCgpXCJcblx0XHRcdChncmlkUmVhZHkpPVwib25HcmlkUmVhZHkoJGV2ZW50KVwiXG5cdFx0XHQocm93RHJhZ0VuZCk9XCJvblJvd0RyYWdFbmQoJGV2ZW50KVwiXG5cdFx0XHQocm93RHJhZ0VudGVyKT1cInJvd0RyYWdFbnRlcigkZXZlbnQpXCJcblx0XHRcdFtzaW5nbGVDbGlja0VkaXRdPVwic2luZ2xlQ2xpY2tFZGl0KClcIiAvPlxuXHRcdEBpZiAoc2hvd0FjdCgpICYmIGF1dGhMZXZlbCgpID49IDMgJiYgKChhZGRUeXBlKCkgIT0gJ25vbmUnICYmICFhZGRIaWRkZW4oKSkgfHwgKHNob3dEZWxldGUoKSAmJiAhZGVsZXRlSGlkZGVuKCkpIHx8IChzdWJTYXZlVmlzaWJsZSgpICYmICFzdWJTYXZlSGlkZGVuKCkpKSkge1xuXHRcdFx0QGlmIChzaG93SG9yaXpvbnRhbCkge1xuXHRcdFx0XHQ8ZGl2IGNsYXNzPVwidy1mdWxsIGJvcmRlci10IGJvcmRlci1ncmF5LTMwMFwiPjwvZGl2PlxuXHRcdFx0fVxuXHRcdFx0PGRpdiBjbGFzcz1cImZsZXgganVzdGlmeS1lbmQgcHktWzVweF0gcHItWzhweF1cIj5cblx0XHRcdFx0QGlmIChzdWJTYXZlVmlzaWJsZSgpICYmICFzdWJTYXZlSGlkZGVuKCkpIHtcblx0XHRcdFx0XHQ8cC1idXR0b25cblx0XHRcdFx0XHRcdGljb249XCJwaSBwaS1jbG91ZC11cGxvYWRcIlxuXHRcdFx0XHRcdFx0W3RleHRdPVwidHJ1ZVwiXG5cdFx0XHRcdFx0XHRzZXZlcml0eT1cInByaW1hcnlcIlxuXHRcdFx0XHRcdFx0W2Rpc2FibGVkXT1cInN1YlNhdmVEaXNhYmxlZCgpXCJcblx0XHRcdFx0XHRcdChvbkNsaWNrKT1cInN1YlNhdmVFbWl0LmVtaXQoKVwiIC8+XG5cdFx0XHRcdH1cblx0XHRcdFx0QGlmIChhZGRUeXBlKCkgIT0gJ25vbmUnICYmICFhZGRIaWRkZW4oKSkge1xuXHRcdFx0XHRcdDxwLWJ1dHRvblxuXHRcdFx0XHRcdFx0aWNvbj1cInBpIHBpLXBsdXNcIlxuXHRcdFx0XHRcdFx0W3RleHRdPVwidHJ1ZVwiXG5cdFx0XHRcdFx0XHRzZXZlcml0eT1cInN1Y2Nlc3NcIlxuXHRcdFx0XHRcdFx0W2Rpc2FibGVkXT1cImdyaWREaXNhYmxlKClcIlxuXHRcdFx0XHRcdFx0KG9uQ2xpY2spPVwiYWRkUm93KClcIiAvPlxuXHRcdFx0XHR9XG5cdFx0XHRcdEBpZiAoc2hvd0RlbGV0ZSgpICYmICFkZWxldGVIaWRkZW4oKSkge1xuXHRcdFx0XHRcdDxwLWJ1dHRvblxuXHRcdFx0XHRcdFx0aWNvbj1cInBpIHBpLXRyYXNoXCJcblx0XHRcdFx0XHRcdFt0ZXh0XT1cInRydWVcIlxuXHRcdFx0XHRcdFx0c2V2ZXJpdHk9XCJkYW5nZXJcIlxuXHRcdFx0XHRcdFx0W2Rpc2FibGVkXT1cImdyaWREaXNhYmxlKClcIlxuXHRcdFx0XHRcdFx0KG9uQ2xpY2spPVwiZGVsUm93cygpXCIgLz5cblx0XHRcdFx0fVxuXHRcdFx0PC9kaXY+XG5cdFx0fVxuXHQ8L2Rpdj5cbn1cbiJdfQ==
|
|
1005
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pbW0tZWxlbWVudC11aS9zcmMvbGliL2dyaWQvZ3JpZC9ncmlkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2ltbS1lbGVtZW50LXVpL3NyYy9saWIvZ3JpZC9ncmlkL2dyaWQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNOLFNBQVMsRUFDVCxTQUFTLEVBQ1QsVUFBVSxFQUNWLEtBQUssRUFDTCxNQUFNLEVBQ04sTUFBTSxFQUNOLFFBQVEsRUFDUixTQUFTLEVBQ1QsTUFBTSxFQUNOLE1BQU0sRUFDTixTQUFTLEVBQ1QsaUJBQWlCLEVBQ2pCLFlBQVksRUFDWixNQUFNLEdBQ04sTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBRXZFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUV6RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUsYUFBYSxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNyRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDdkQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzFELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQzs7OztBQUVuRCxNQUFNLGVBQWUsR0FBRyxpQkFB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LEVBQUMsQ0FBQztZQUNYLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFBO1lBQ25ELElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFpQixFQUFFLEVBQUU7Z0JBQ2xDLElBQUcsSUFBSSxDQUFDLElBQUksSUFBSSxTQUFTLEVBQUMsQ0FBQztvQkFDMUIsSUFBSSxDQUFDLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxJQUFJLFdBQVcsQ0FBQTtvQkFDbkMsSUFBSSxDQUFDLEVBQUUsR0FBRyxHQUFHLElBQUksQ0FBQyxFQUFFLFdBQVcsQ0FBQTtnQkFDaEMsQ0FBQztZQUNGLENBQUMsQ0FBQyxDQUFBO1lBQ0YsT0FBTyxJQUFJLENBQUE7UUFDWixDQUFDO1FBQ0QsT0FBTyxZQUFZLENBQUE7SUFDcEIsQ0FBQzsrR0FqZ0NXLGFBQWE7bUdBQWIsYUFBYSxrbkdBQ2QsYUFBYSwwRUFDYixhQUFhLDJCQUFVLFVBQVUsNkhDaEc3Qyw4c0VBNERBLDh2Q0Q4QlcsYUFBYSxnMFRBQUUsWUFBWTs7NEZBSXpCLGFBQWE7a0JBUHpCLFNBQVM7K0JBQ0MsYUFBYSxjQUNYLElBQUksV0FDUCxDQUFDLGFBQWEsRUFBRSxZQUFZLENBQUM7a0ZBS1osSUFBSTtzQkFBN0IsU0FBUzt1QkFBQyxhQUFhO2dCQUN3QixPQUFPO3NCQUF0RCxTQUFTO3VCQUFDLGFBQWEsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUU7Z0JBQ2xCLFlBQVk7c0JBQXZDLFNBQVM7dUJBQUMsZUFBZTtnQkErRDFCLFFBQVE7c0JBRFAsWUFBWTt1QkFBQyxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcblx0Q29tcG9uZW50LFxuXHRWaWV3Q2hpbGQsXG5cdEVsZW1lbnRSZWYsXG5cdGlucHV0LFxuXHRlZmZlY3QsXG5cdGluamVjdCxcblx0Y29tcHV0ZWQsXG5cdHVudHJhY2tlZCxcblx0b3V0cHV0LFxuXHROZ1pvbmUsXG5cdFJlbmRlcmVyMixcblx0Q2hhbmdlRGV0ZWN0b3JSZWYsXG5cdEhvc3RMaXN0ZW5lcixcblx0c2lnbmFsLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENlbGxWYWx1ZUNoYW5nZWRFdmVudCwgQ29sRGVmLCBHcmlkT3B0aW9ucyBhcyBSYXdHcmlkT3B0aW9ucywgUm93RHJhZ0VuZEV2ZW50IH0gZnJvbSAnYWctZ3JpZC1jb21tdW5pdHknO1xuaW1wb3J0IHsgQWdHcmlkQW5ndWxhciB9IGZyb20gJ2FnLWdyaWQtYW5ndWxhcic7XG5pbXBvcnQgeyBUaGVtZUNvbmZpZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlL3RoZW1lQ29uZmlnLnNlcnZpY2UnO1xuaW1wb3J0IHsgQWN0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2UvYWN0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgSTE4blNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlL2kxOG4uc2VydmljZSc7XG5pbXBvcnQgeyBTZWFyY2gsQ29sdW1uRmlsdGVyIH0gZnJvbSAnLi4vLi4vYW0vYW0uY29tcG9uZW50JztcbmltcG9ydCB7IGdyaWRVdGlscyB9IGZyb20gJy4uL2dyaWQtdXRpbHMnO1xuaW1wb3J0IHsgQnV0dG9uTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9idXR0b24nO1xuaW1wb3J0IHsgbGFzdFZhbHVlRnJvbSwgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBjb21wb25lbnRzLCBDTElFTlRMSU1JVCB9IGZyb20gJy4uL21vY2stZGF0YSc7XG5pbXBvcnQgeyB0b09ic2VydmFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBwYXJzZUZ1bmN0aW9ucyB9IGZyb20gJy4uLy4uL3NoYXJlL3V0aWxzJztcblxuY29uc3QgU1RBVElDX0hJREVfS0VZID0gJ19faW1tU3RhdGljSGlkZSc7XG5jb25zdCBISURFX0VYUFJFU1NJT05fS0VZID0gJ19faW1tSGlkZUV4cHJlc3Npb24nO1xuXG5leHBvcnQgdHlwZSBDb2x1bW5IaWRlRXhwcmVzc2lvbiA9IChkYXRhOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiBib29sZWFuO1xuXG5leHBvcnQgaW50ZXJmYWNlIEdyaWRPcHRpb25zIGV4dGVuZHMgUmF3R3JpZE9wdGlvbnMge1xuXHRzZXJ2ZXJGdW5jPzogKHNlYXJjaDogU2VhcmNoKSA9PiBPYnNlcnZhYmxlPGFueT47XG5cdGNsaWVudEZ1bmM/OiAoc2VhcmNoOiBTZWFyY2gpID0+IE9ic2VydmFibGU8YW55Pjtcblx0c2hvd1NlYXJjaD86IGJvb2xlYW47XG5cdHByZVNlYXJjaD86IFNlYXJjaDtcblx0dHJlZURhdGFGaWVsZD86IHN0cmluZztcblx0dHJlZUxldmVsPzogbnVtYmVyO1xuXHRoZWFkZXJIZWlnaHQ/OiBudW1iZXI7XG5cdHNjcm9sbEhlaWdodD86IHN0cmluZztcblx0c2hvd0luZGV4PzogYm9vbGVhbjtcblx0dW5kb1JlZG9DZWxsRWRpdGluZz86IGJvb2xlYW47XG5cdHVuZG9SZWRvQ2VsbEVkaXRpbmdMaW1pdD86IG51bWJlcjtcblx0bWFpbkZpZWxkPzogc3RyaW5nO1xuXHRtb2RlbE5hbWU/OiBzdHJpbmc7XG5cdGZrPzogc3RyaW5nO1xuXHRkcmFnU29ydD86IHN0cmluZztcblx0c2VsZWN0aW9uTW9kZT86ICdub25lJyB8ICdzaW5nbGUnIHwgJ211bHRpcGxlJztcblx0ZGF0YUtleT86IHN0cmluZztcblx0cmVmZXJlbmNlPzogc3RyaW5nO1xuXHRhZGREYXRhQ2I/OiAoKSA9PiBSZWNvcmQ8c3RyaW5nLCBhbnk+XG59XG5cbmNvbnN0IGRlZmF1bHRPcHRpb246IEdyaWRPcHRpb25zID0ge1xuXHQvLyBwb3B1cFBhcmVudDogZG9jdW1lbnQuYm9keSxcblx0ZGVmYXVsdENvbERlZjoge1xuXHRcdGZsZXg6IDEsXG5cdFx0bWluV2lkdGg6IDEwMCxcblx0XHRzb3J0YWJsZTogZmFsc2UsXG5cdFx0ZmlsdGVyOiBmYWxzZSxcblx0fSxcblx0cm93U2VsZWN0aW9uOiB7IG1vZGU6ICdtdWx0aVJvdycgfSxcblx0cm93TW9kZWxUeXBlOiAnc2VydmVyU2lkZScsXG5cdGNlbGxTZWxlY3Rpb246IHtcblx0XHRoYW5kbGU6IHtcblx0XHRcdG1vZGU6ICdyYW5nZScsXG5cdFx0fSxcblx0fSxcblx0ZW5hYmxlQ2hhcnRzOiB0cnVlLFxuXHR1bmRvUmVkb0NlbGxFZGl0aW5nOiB0cnVlLFxuXHR1bmRvUmVkb0NlbGxFZGl0aW5nTGltaXQ6IDIwLFxufTtcblxuY29uc3QgZGVmYXVsdFNvcnRzID0gW3sgZmllbGQ6ICdjcmVhdGVkQXQnLCBpc0FzYzogZmFsc2UgfV07XG5mdW5jdGlvbiBmaW5kTGFzdEluZGV4KGFycmF5OiBhbnlbXSwgcHJlZGljYXRlOiBhbnksIHRoaXNBcmc6IGFueSkge1xuXHRmb3IgKGxldCBpID0gYXJyYXkubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcblx0XHRpZiAocHJlZGljYXRlLmNhbGwodGhpc0FyZywgYXJyYXlbaV0sIGksIGFycmF5KSkge1xuXHRcdFx0cmV0dXJuIGk7XG5cdFx0fVxuXHR9XG5cdHJldHVybiAtMTtcbn1cblxuQENvbXBvbmVudCh7XG5cdHNlbGVjdG9yOiAnY3VzdG9tLWdyaWQnLFxuXHRzdGFuZGFsb25lOiB0cnVlLFxuXHRpbXBvcnRzOiBbQWdHcmlkQW5ndWxhciwgQnV0dG9uTW9kdWxlXSxcblx0dGVtcGxhdGVVcmw6ICcuL2dyaWQuY29tcG9uZW50Lmh0bWwnLFxuXHRzdHlsZVVybDogJy4vZ3JpZC5jb21wb25lbnQuc2NzcycsXG59KVxuZXhwb3J0IGNsYXNzIEdyaWRDb21wb25lbnQge1xuXHRAVmlld0NoaWxkKEFnR3JpZEFuZ3VsYXIpIGdyaWQhOiBBZ0dyaWRBbmd1bGFyO1xuXHRAVmlld0NoaWxkKEFnR3JpZEFuZ3VsYXIsIHsgcmVhZDogRWxlbWVudFJlZiB9KSBncmlkUmVmITogRWxlbWVudFJlZjtcblx0QFZpZXdDaGlsZCgnZ3JpZENvbnRhaW5lcicpIGNvbnRhaW5lclJlZiE6IEVsZW1lbnRSZWY7XG5cdGdyaWRPcHRpb25zID0gaW5wdXQ8R3JpZE9wdGlvbnM+KHt9KTtcblx0c2VsZWN0aW9uS2V5cyA9IGlucHV0PGFueVtdPihbXSk7XG5cdHRvT3B0aW9ucyA9IGNvbXB1dGVkKCgpID0+XG5cdFx0dGhpcy53aXRoR3JpZENvbnRleHQoZ3JpZFV0aWxzLm1lcmdlT3B0aW9ucyh7IC4uLmRlZmF1bHRPcHRpb24sIC4uLnRoaXMuZ3JpZE9wdGlvbnMoKSB9LCB1bnRyYWNrZWQoKCkgPT4gdGhpcy5zZWFyY2hQcm0oKSkubGltaXQsIHRoaXMuYWN0aW9uKSksXG5cdCk7XG5cdHRoZW1lQ29uZmlnID0gaW5qZWN0KFRoZW1lQ29uZmlnU2VydmljZSk7XG5cdGxvY2FsZVRleHQ6IGFueTtcblx0aTE4blNlcnZpY2UgPSBpbmplY3QoSTE4blNlcnZpY2UpO1xuXHRteVRoZW1lID0gY29tcHV0ZWQoKCkgPT4gZ3JpZFV0aWxzLmdldFRoZW1lKHRoaXMudGhlbWVDb25maWcpKTtcblx0Y29tcG9uZW50cyA9IGNvbXBvbmVudHM7XG5cdGNvbHVtbkRlZnM6IENvbERlZltdID0gW107XG5cdGluaXRHcmlkID0gdHJ1ZTtcblx0Y29udGVudE1hcDogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHt9O1xuXHRtYWluRmllbGQhOiBzdHJpbmc7XG5cdG1vZGVsTmFtZSE6IHN0cmluZztcblx0dXBzZXJ0ID0gaW5wdXQ8YW55PigpO1xuXHRzdWJJbmRleCE6IG51bWJlcjtcblx0cm93RGF0YSA9IGlucHV0PGFueT4odW5kZWZpbmVkKTtcblx0aGlkZUV4cHJlc3Npb25EYXRhID0gaW5wdXQ8UmVjb3JkPHN0cmluZywgYW55Pj4oe30pO1xuXHRoaWRlRXhwcmVzc2lvblZlcnNpb24gPSBpbnB1dCgwKTtcblx0c2VhcmNoUHJtID0gaW5wdXQ8U2VhcmNoPih7fSk7XG5cdHJhd1BybT86IFNlYXJjaDtcblx0ZGVsZXRlRW1pdCA9IG91dHB1dDxudW1iZXJbXT4oKTtcblx0YWRkRW1pdCA9IG91dHB1dCgpO1xuXHRncmlkRGF0YUNoYW5nZWQgPSBvdXRwdXQ8dm9pZD4oKTtcblx0YWRkVHlwZSA9IGlucHV0PCdoYW5kbGUnIHwgJ3NlbGVjdCcgfCAnbm9uZSc+KCk7XG5cdHNlbGVjdERhdGEgPSBpbnB1dDxhbnlbXT4oKTtcblx0c2hvd0FjdCA9IGlucHV0PGJvb2xlYW4+KHRydWUpO1xuXHRhY3RQb3MgPSBpbnB1dDwndG9wJyB8ICdib3R0b20nPignYm90dG9tJyk7XG5cdGF1dGhMZXZlbCA9IGlucHV0PG51bWJlcj4oLTEpO1xuXHRodHRwID0gaW5qZWN0KEh0dHBDbGllbnQpO1xuXHRyZW5kZXJlciA9IGluamVjdChSZW5kZXJlcjIpO1xuXHRuZ1pvbmUgPSBpbmplY3QoTmdab25lKTtcblx0Y2RyID0gaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKTtcblx0c2hvd0RlbGV0ZSA9IGlucHV0PGJvb2xlYW4+KHRydWUpO1xuXHRkZWxldGVIaWRkZW4gPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XG5cdGFkZEhpZGRlbiA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcblx0Z3JpZERpc2FibGUgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XG5cdGFkZFNvcnQgPSBpbnB1dDxzdHJpbmc+KCk7XG5cdHN1YlNhdmVWaXNpYmxlID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xuXHRzdWJTYXZlSGlkZGVuID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xuXHRzdWJTYXZlTGFiZWwgPSBpbnB1dDxzdHJpbmc+KCfkv53lrZgnKTtcblx0c3ViU2F2ZURpc2FibGVkID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xuXHRzdWJTYXZlRW1pdCA9IG91dHB1dCgpO1xuXG5cdHJpY2hNdWx0TWFwOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge307XG5cdGhvcml6b250YWxTY3JvbGxCYXJPYnNlcnZlcjogYW55O1xuXHRob3Jpem9udGFsU2Nyb2xsQmFySGVpZ2h0ID0gMDtcblx0dmVydGljYWxTY3JvbGxCYXJPYnNlcnZlcjogYW55O1xuXHR2ZXJ0aWNhbFNjcm9sbEJhcldpZHRoID0gMDtcblx0Z3JpZEhlaWdodCA9IDA7XG5cdHNlbGVjdGVkUm93cyA9IHNpZ25hbDxhbnlbXT4oW10pO1xuXHRub1Jvd3MgPSB0cnVlO1xuXHRzaG93SG9yaXpvbnRhbCA9IGZhbHNlO1xuXHRkcmFnQmVmb3JlSW5kZXggPSAtMTtcblx0c2luZ2xlQ2xpY2tFZGl0ID0gc2lnbmFsKGZhbHNlKTtcblx0cHJpdmF0ZSBzZWFyY2hQcm1TdWI6IGFueTtcblx0cHJpdmF0ZSBjb2x1bW5EZWZzTG9hZElkID0gMDtcblx0cHJpdmF0ZSBjb2x1bW5EZWZzSGF2ZUhpZGVFeHByZXNzaW9uID0gZmFsc2U7XG5cdHByaXZhdGUgY29sdW1uSGlkZVNpZ25hdHVyZSA9ICcnO1xuXHRwcml2YXRlIGNvbHVtbkhpZGVFeHByZXNzaW9uRXJyb3JTZXQgPSBuZXcgV2Vha1NldDxGdW5jdGlvbj4oKTtcblx0QEhvc3RMaXN0ZW5lcignd2luZG93OnJlc2l6ZScpXG5cdG9uUmVzaXplKCkge1xuXHRcdHRoaXMuc2V0U2Nyb2xsSGVpZ2h0KCk7XG5cdH1cblxuXHRjb25zdHJ1Y3Rvcihwcml2YXRlIGFjdGlvbjogQWN0aW9uU2VydmljZSkge1xuXHRcdHRoaXMuc2luZ2xlQ2xpY2tFZGl0LnNldCh0aGlzLmlzTW9iaWxlT3JUYWJsZXRCcm93c2VyKCkpO1xuXHRcdHRoaXMuc2VhcmNoUHJtU3ViID0gdG9PYnNlcnZhYmxlKHRoaXMuc2VhcmNoUHJtKS5zdWJzY3JpYmUoKHNlYXJjaFBybSkgPT4ge1xuXHRcdFx0aWYgKHNlYXJjaFBybS5tb2RlbE5hbWUgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0XHR0aGlzLnJhd1BybSA9IHNlYXJjaFBybTtcblx0XHRcdFx0dGhpcy5zZWFyY2hQcm1TdWIudW5zdWJzY3JpYmUoKTtcblx0XHRcdH1cblx0XHR9KTtcblx0XHRlZmZlY3QoXG5cdFx0XHQoKSA9PiB7XG5cdFx0XHRcdGNvbnN0IG9wdGlvbnMgPSB0aGlzLnRvT3B0aW9ucygpO1xuXHRcdFx0XHR2b2lkIHRoaXMucmVmcmVzaENvbHVtbkRlZnMob3B0aW9ucyk7XG5cdFx0XHRcdHRoaXMubWFpbkZpZWxkID0gb3B0aW9ucy5tYWluRmllbGQhO1xuXHRcdFx0XHR0aGlzLm1vZGVsTmFtZSA9IG9wdGlvbnMubW9kZWxOYW1lITtcblx0XHRcdFx0aWYgKCF0aGlzLnVwc2VydCgpPy5zdWJzZXJ0Py5maW5kKCh2OiBhbnkpID0+IHYuc3ViTW9kZWxOYW1lID09PSB0aGlzLm1vZGVsTmFtZSkpIHtcblx0XHRcdFx0XHR0aGlzLnVwc2VydCgpPy5zdWJzZXJ0Py5wdXNoKHtcblx0XHRcdFx0XHRcdHN1Yk1vZGVsTmFtZTogb3B0aW9ucy5tb2RlbE5hbWUsXG5cdFx0XHRcdFx0XHRmazogb3B0aW9ucy5mayxcblx0XHRcdFx0XHRcdHN1YkRhdGE6IFtdLFxuXHRcdFx0XHRcdFx0bWFwdG1wOiBuZXcgTWFwKCksXG5cdFx0XHRcdFx0XHRsb2d0bXA6IG5ldyBNYXAoKSxcblx0XHRcdFx0XHRcdHJlZmVyZW5jZTogb3B0aW9ucy5yZWZlcmVuY2UsXG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH1cblx0XHRcdFx0dGhpcy5zdWJJbmRleCA9IHRoaXMudXBzZXJ0KCk/LnN1YnNlcnQ/LmZpbmRJbmRleCgodjogYW55KSA9PiB2LnN1Yk1vZGVsTmFtZSA9PT0gdGhpcy5tb2RlbE5hbWUpO1xuXHRcdFx0fSxcblx0XHRcdHsgYWxsb3dTaWduYWxXcml0ZXM6IHRydWUgfSxcblx0XHQpO1xuXHRcdGVmZmVjdChcblx0XHRcdCgpID0+IHtcblx0XHRcdFx0aWYgKCF0aGlzLmFjdGlvbi5zZWFyY2hNb25pdG9yKHRoaXMudG9PcHRpb25zKCkubW9kZWxOYW1lKSkge1xuXHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0fVxuXHRcdFx0XHR0aGlzLmdldERhdGEoKTtcblx0XHRcdH0sXG5cdFx0XHR7IGFsbG93U2lnbmFsV3JpdGVzOiB0cnVlIH0sXG5cdFx0KTtcblx0XHRlZmZlY3QoKCkgPT4ge1xuXHRcdFx0Y29uc3Qgcm93RGF0YSA9IHRoaXMucm93RGF0YSgpO1xuXHRcdFx0aWYgKHJvd0RhdGEgPT09IHVuZGVmaW5lZCkgcmV0dXJuO1xuXHRcdFx0dW50cmFja2VkKCgpID0+IHtcblx0XHRcdFx0Y29uc3Qgb3B0aW9ucyA9IHRoaXMudG9PcHRpb25zKCk7XG5cdFx0XHRcdGlmICh0aGlzLmhhc0R5bmFtaWNTZWxlY3REYXRhQ29sdW1uKG9wdGlvbnMpKSB7XG5cdFx0XHRcdFx0dm9pZCB0aGlzLnJlZnJlc2hDb2x1bW5EZWZzKG9wdGlvbnMpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmIChvcHRpb25zLnJvd01vZGVsVHlwZSA9PT0gJ3NlcnZlclNpZGUnICYmIG9wdGlvbnMuc2VydmVyRnVuYykge1xuXHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0fVxuXHRcdFx0XHRvcHRpb25zLnJvd01vZGVsVHlwZSA9ICdjbGllbnRTaWRlJztcblx0XHRcdFx0b3B0aW9ucy5jbGllbnRGdW5jID0gKCkgPT4gb2YoeyBkYXRhOiByb3dEYXRhLCB0b3RhbE51bTogcm93RGF0YT8ubGVuZ3RoIH0pO1xuXHRcdFx0XHRzZXRUaW1lb3V0KCgpID0+IHtcblx0XHRcdFx0XHR0aGlzLmdldENsaWVudERhdGEodW5kZWZpbmVkKTtcblx0XHRcdFx0fSwgMTAwKTtcblx0XHRcdH0pO1xuXHRcdH0pO1xuXHRcdGVmZmVjdChcblx0XHRcdCgpID0+IHtcblx0XHRcdFx0aWYgKHRoaXMuc2VsZWN0RGF0YSgpICYmIHRoaXMuc2VsZWN0RGF0YSgpIS5sZW5ndGggPiAwICYmIHRoaXMuZ3JpZCkge1xuXHRcdFx0XHRcdHRoaXMuaGFuZGxlQWRkZWRSb3dzKHRoaXMuc2VsZWN0RGF0YSgpISk7XG5cdFx0XHRcdH1cblx0XHRcdH0sXG5cdFx0XHR7IGFsbG93U2lnbmFsV3JpdGVzOiB0cnVlIH0sXG5cdFx0KTtcblx0XHRlZmZlY3QoXG5cdFx0XHQoKSA9PiB7XG5cdFx0XHRcdHRoaXMudG9PcHRpb25zKCkucHJlU2VhcmNoICYmXG5cdFx0XHRcdFx0dGhpcy5hY3Rpb24uc2V0U2VhcmNoKHsgY29sdW1uRmlsdGVyczogdGhpcy50b09wdGlvbnMoKS5wcmVTZWFyY2ghLmNvbHVtbkZpbHRlcnMgfSwgdGhpcy50b09wdGlvbnMoKS5tb2RlbE5hbWUpO1xuXHRcdFx0fSxcblx0XHRcdHsgYWxsb3dTaWduYWxXcml0ZXM6IHRydWUgfSxcblx0XHQpO1xuXHRcdGVmZmVjdChcblx0XHRcdCgpID0+IHtcblx0XHRcdFx0Y29uc3QgYWN0aW9uID0gdGhpcy5hY3Rpb24uZ2V0QWN0aW9uKCk7XG5cdFx0XHRcdGlmIChhY3Rpb24/LnR5cGUgPT09ICdleHBvcnQnKSB7XG5cdFx0XHRcdFx0dGhpcy5ncmlkLmFwaS5leHBvcnREYXRhQXNFeGNlbCh7IGZpbGVOYW1lOiB0aGlzLm1vZGVsTmFtZSB9KTtcblx0XHRcdFx0fVxuXHRcdFx0fSxcblx0XHRcdHsgYWxsb3dTaWduYWxXcml0ZXM6IHRydWUgfSxcblx0XHQpO1xuXHRcdGVmZmVjdChcblx0XHRcdCgpID0+IHtcblx0XHRcdFx0dGhpcy5oaWRlRXhwcmVzc2lvblZlcnNpb24oKTtcblx0XHRcdFx0dW50cmFja2VkKCgpID0+IHRoaXMucmVmcmVzaENvbHVtbkhpZGVFeHByZXNzaW9ucygpKTtcblx0XHRcdH0sXG5cdFx0XHR7IGFsbG93U2lnbmFsV3JpdGVzOiB0cnVlIH0sXG5cdFx0KTtcblx0XHR0aGlzLmVkaXRpbmdGaXgoKTtcblx0fVxuXG5cdHByaXZhdGUgd2l0aEdyaWRDb250ZXh0KG9wdGlvbnM6IGFueSk6IGFueSB7XG5cdFx0dGhpcy5ncmlkRGlzYWJsZSgpO1xuXHRcdHJldHVybiB7XG5cdFx0XHQuLi5vcHRpb25zLFxuXHRcdFx0Y29udGV4dDoge1xuXHRcdFx0XHQuLi4ob3B0aW9ucy5jb250ZXh0IHx8IHt9KSxcblx0XHRcdFx0Z3JpZERpc2FibGVkOiAoKSA9PiB0aGlzLmdyaWREaXNhYmxlKCksXG5cdFx0XHRcdGdyaWQ6ICgpID0+IHRoaXMsXG5cdFx0XHR9LFxuXHRcdH07XG5cdH1cblxuXHRuZ09uSW5pdCgpOiB2b2lkIHtcblx0XHR0aGlzLmkxOG5TZXJ2aWNlLmNoYW5nZS5zdWJzY3JpYmUoKHJlcykgPT4ge1xuXHRcdFx0dGhpcy5ncmlkICYmIHRoaXMuZ3JpZC5hcGkuZGVzdHJveSgpO1xuXHRcdFx0dGhpcy5pbml0R3JpZCA9IGZhbHNlO1xuXHRcdFx0dGhpcy5sb2NhbGVUZXh0ID0gZ3JpZFV0aWxzLmdldExvY2FsVGV4dChyZXMpO1xuXHRcdFx0dGhpcy5jb2x1bW5EZWZzID0gZ3JpZFV0aWxzLmhhbmRsZUkxOG5LZXkodGhpcy5yZXNvbHZlQ29sdW1uSGlkZUV4cHJlc3Npb25zKHRoaXMudG9PcHRpb25zKCkuY29sdW1uRGVmcyEpLCB0aGlzLmkxOG5TZXJ2aWNlKTtcblx0XHRcdHRoaXMuY29sdW1uRGVmc0hhdmVIaWRlRXhwcmVzc2lvbiA9IHRoaXMuaGFzQ29sdW1uSGlkZUV4cHJlc3Npb24odGhpcy5jb2x1bW5EZWZzKTtcblx0XHRcdHRoaXMuY29sdW1uSGlkZVNpZ25hdHVyZSA9IHRoaXMuZ2V0Q29sdW1uSGlkZVNpZ25hdHVyZSh0aGlzLmNvbHVtbkRlZnMpO1xuXHRcdFx0c2V0VGltZW91dCgoKSA9PiB7XG5cdFx0XHRcdHRoaXMuaW5pdEdyaWQgPSB0cnVlO1xuXHRcdFx0fSwgMTAwKTtcblx0XHR9KTtcblx0XHR0aGlzLmxvY2FsZVRleHQgPSBncmlkVXRpbHMuZ2V0TG9jYWxUZXh0KHRoaXMuaTE4blNlcnZpY2UuY3VycmVudExhbmcpO1xuXHR9XG5cblx0bmdBZnRlclZpZXdJbml0KCkge31cblxuXHRuZ09uRGVzdHJveSgpIHtcblx0XHR0aGlzLnNlYXJjaFBybVN1Yj8udW5zdWJzY3JpYmUoKTtcblx0XHRpZiAodGhpcy5ob3Jpem9udGFsU2Nyb2xsQmFyT2JzZXJ2ZXIpIHtcblx0XHRcdHRoaXMuaG9yaXpvbnRhbFNjcm9sbEJhck9ic2VydmVyLmRpc2Nvbm5lY3QoKTtcblx0XHR9XG5cdFx0aWYgKHRoaXMudmVydGljYWxTY3JvbGxCYXJPYnNlcnZlcikge1xuXHRcdFx0dGhpcy52ZXJ0aWNhbFNjcm9sbEJhck9ic2VydmVyLmRpc2Nvbm5lY3QoKTtcblx0XHR9XG5cdH1cblxuXHRnZXRHcmlkKCk6IEFnR3JpZEFuZ3VsYXIge1xuXHRcdHJldHVybiB0aGlzLmdyaWQ7XG5cdH1cblxuXHRwcml2YXRlIGlzTW9iaWxlT3JUYWJsZXRCcm93c2VyKCkge1xuXHRcdGlmICh0eXBlb2YgbmF2aWdhdG9yID09PSAndW5kZWZpbmVkJykge1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblx0XHRjb25zdCB1YSA9IG5hdmlnYXRvci51c2VyQWdlbnQudG9Mb3dlckNhc2UoKTtcblx0XHRjb25zdCBpc1Bob25lID0gL2FuZHJvaWQuKm1vYmlsZXxpcGhvbmV8aXBvZHx3aW5kb3dzIHBob25lfGJsYWNrYmVycnl8aWVtb2JpbGV8b3BlcmEgbWluaS8udGVzdCh1YSk7XG5cdFx0Y29uc3QgaXNUYWJsZXQgPVxuXHRcdFx0L2lwYWR8dGFibGV0fHBsYXlib29rfHNpbGt8KGFuZHJvaWQoPyEuKm1vYmlsZSkpLy50ZXN0KHVhKSB8fFxuXHRcdFx0KG5hdmlnYXRvci5wbGF0Zm9ybSA9PT0gJ01hY0ludGVsJyAmJiBuYXZpZ2F0b3IubWF4VG91Y2hQb2ludHMgPiAxKTtcblx0XHRyZXR1cm4gaXNQaG9uZSB8fCBpc1RhYmxldDtcblx0fVxuXG5cdG9uR3JpZFJlYWR5KGU6IGFueSkge1xuXHRcdHRoaXMuaW5pdEdyaWRIZWlnaHQoKTtcblx0XHRzZXRUaW1lb3V0KCgpID0+IHtcblx0XHRcdHRoaXMuZ2V0RGF0YSgpO1xuXHRcdH0sIDEwMCk7XG5cdH1cblxuXHRvblNlbGVjdGlvbkNoYW5nZWQoZXZlbnQ6IGFueSk6IGFueSB7XG5cdFx0dGhpcy5zZWxlY3RlZFJvd3Muc2V0KGdyaWRVdGlscy5jYWxjUm93SWRzKGV2ZW50LmFwaSwgdGhpcy50b09wdGlvbnMoKT8ucm93TW9kZWxUeXBlID09ICdzZXJ2ZXJTaWRlJykpO1xuXHR9XG5cblx0b25Sb3dHcm91cE9wZW5lZCgpIHtcblx0XHR0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG5cdFx0XHRyZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuXHRcdFx0XHR0aGlzLmFqdXN0R3JpZEhlaWdodCgpO1xuXHRcdFx0fSk7XG5cdFx0fSk7XG5cdH1cblxuXHRwcml2YXRlIGhhc0R5bmFtaWNTZWxlY3REYXRhQ29sdW1uKG9wdGlvbnM6IEdyaWRPcHRpb25zID0gdGhpcy50b09wdGlvbnMoKSkge1xuXHRcdHJldHVybiAhIW9wdGlvbnMuY29sdW1uRGVmcz8uc29tZSgoaXRlbTogYW55KSA9PiBpdGVtPy5oYXNPd25Qcm9wZXJ0eSgnc2VsZWN0RGF0YScpICYmIHR5cGVvZiBpdGVtLnNlbGVjdERhdGEgPT09ICdmdW5jdGlvbicpO1xuXHR9XG5cblx0cHJpdmF0ZSBhc3luYyByZWZyZXNoQ29sdW1uRGVmcyhvcHRpb25zOiBHcmlkT3B0aW9ucyA9IHRoaXMudG9PcHRpb25zKCkpIHtcblx0XHRjb25zdCBsb2FkSWQgPSArK3RoaXMuY29sdW1uRGVmc0xvYWRJZDtcblx0XHRjb25zdCBjb2x1bW5EZWZzID0gYXdhaXQgdGhpcy5zZXRSaWNoVmFsdWUob3B0aW9ucyk7XG5cdFx0aWYgKGxvYWRJZCAhPT0gdGhpcy5jb2x1bW5EZWZzTG9hZElkKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdHRoaXMuY29sdW1uRGVmcyA9IGdyaWRVdGlscy5oYW5kbGVJMThuS2V5KHRoaXMucmVzb2x2ZUNvbHVtbkhpZGVFeHByZXNzaW9ucyhjb2x1bW5EZWZzKSwgdGhpcy5pMThuU2VydmljZSk7XG5cdFx0dGhpcy5jb2x1bW5EZWZzSGF2ZUhpZGVFeHByZXNzaW9uID0gdGhpcy5oYXNDb2x1bW5IaWRlRXhwcmVzc2lvbih0aGlzLmNvbHVtbkRlZnMpO1xuXHRcdHRoaXMuY29sdW1uSGlkZVNpZ25hdHVyZSA9IHRoaXMuZ2V0Q29sdW1uSGlkZVNpZ25hdHVyZSh0aGlzLmNvbHVtbkRlZnMpO1xuXHRcdGlmICh0aGlzLmdyaWQ/LmFwaSkge1xuXHRcdFx0dGhpcy5ncmlkLmFwaS5zZXRHcmlkT3B0aW9uKCdjb2x1bW5EZWZzJywgdGhpcy5jb2x1bW5EZWZzKTtcblx0XHRcdHRoaXMuZ3JpZC5hcGkucmVmcmVzaENlbGxzKHtcblx0XHRcdFx0Zm9yY2U6IHRydWUsXG5cdFx0XHRcdHN1cHByZXNzRmxhc2g6IHRydWUsXG5cdFx0XHR9KTtcblx0XHR9XG5cdH1cblxuXHRwcml2YXRlIHJlZnJlc2hDb2x1bW5IaWRlRXhwcmVzc2lvbnMoKSB7XG5cdFx0aWYgKCF0aGlzLmNvbHVtbkRlZnNIYXZlSGlkZUV4cHJlc3Npb24gfHwgIXRoaXMuZ3JpZD8uYXBpKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdGNvbnN0IG5leHRDb2x1bW5EZWZzID0gdGhpcy5yZXNvbHZlQ29sdW1uSGlkZUV4cHJlc3Npb25zKHRoaXMuY29sdW1uRGVmcyk7XG5cdFx0Y29uc3QgbmV4dFNpZ25hdHVyZSA9IHRoaXMuZ2V0Q29sdW1uSGlkZVNpZ25hdHVyZShuZXh0Q29sdW1uRGVmcyk7XG5cdFx0aWYgKG5leHRTaWduYXR1cmUgPT09IHRoaXMuY29sdW1uSGlkZVNpZ25hdHVyZSkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHR0aGlzLmNvbHVtbkRlZnMgPSBuZXh0Q29sdW1uRGVmcztcblx0XHR0aGlzLmNvbHVtbkhpZGVTaWduYXR1cmUgPSBuZXh0U2lnbmF0dXJlO1xuXHRcdHRoaXMuZ3JpZC5hcGkuc2V0R3JpZE9wdGlvbignY29sdW1uRGVmcycsIHRoaXMuY29sdW1uRGVmcyk7XG5cdFx0dGhpcy5ncmlkLmFwaS5yZWZyZXNoQ2VsbHMoe1xuXHRcdFx0Zm9yY2U6IHRydWUsXG5cdFx0XHRzdXBwcmVzc0ZsYXNoOiB0cnVlLFxuXHRcdH0pO1xuXHR9XG5cblx0cHJpdmF0ZSByZXNvbHZlQ29sdW1uSGlkZUV4cHJlc3Npb25zKGNvbHVtbkRlZnM6IGFueVtdID0gW10pIHtcblx0XHRyZXR1cm4gY29sdW1uRGVmcy5tYXAoKGl0ZW06IGFueSkgPT4gdGhpcy5yZXNvbHZlQ29sdW1uSGlkZUV4cHJlc3Npb24oaXRlbSkpO1xuXHR9XG5cblx0cHJpdmF0ZSByZXNvbHZlQ29sdW1uSGlkZUV4cHJlc3Npb24oaXRlbTogYW55KTogYW55IHtcblx0XHRjb25zdCBzdGF0aWNIaWRlID0gdGhpcy5yZXNvbHZlU3RhdGljSGlkZShpdGVtKTtcblx0XHRjb25zdCBoaWRlRXhwcmVzc2lvbiA9IHRoaXMucmVzb2x2ZUhpZGVFeHByZXNzaW9uKGl0ZW0pO1xuXHRcdGxldCBleHByZXNzaW9uSGlkZSA9IGZhbHNlO1xuXHRcdGlmICh0eXBlb2YgaGlkZUV4cHJlc3Npb24gPT09ICdmdW5jdGlvbicpIHtcblx0XHRcdHRyeSB7XG5cdFx0XHRcdGV4cHJlc3Npb25IaWRlID0gISFoaWRlRXhwcmVzc2lvbih0aGlzLmhpZGVFeHByZXNzaW9uRGF0YSgpIHx8IHt9KTtcblx0XHRcdH0gY2F0Y2ggKGVycm9yKSB7XG5cdFx0XHRcdGlmICghdGhpcy5jb2x1bW5IaWRlRXhwcmVzc2lvbkVycm9yU2V0LmhhcyhoaWRlRXhwcmVzc2lvbikpIHtcblx0XHRcdFx0XHR0aGlzLmNvbHVtbkhpZGVFeHByZXNzaW9uRXJyb3JTZXQuYWRkKGhpZGVFeHByZXNzaW9uKTtcblx0XHRcdFx0XHRjb25zb2xlLmVycm9yKCfliJfpmpDol4/mnaHku7bmiafooYzlpLHotKU6JywgZXJyb3IsIGl0ZW0pO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHRcdGNvbnN0IG5leHRJdGVtID0ge1xuXHRcdFx0Li4uaXRlbSxcblx0XHRcdGhpZGVFeHByZXNzaW9uOiBpdGVtLmhpZGVFeHByZXNzaW9uID8gaGlkZUV4cHJlc3Npb24gOiBpdGVtLmhpZGVFeHByZXNzaW9uLFxuXHRcdFx0aGlkZTogISFzdGF0aWNIaWRlIHx8IGV4cHJlc3Npb25IaWRlLFxuXHRcdH07XG5cdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KG5leHRJdGVtLCBTVEFUSUNfSElERV9LRVksIHtcblx0XHRcdHZhbHVlOiBzdGF0aWNIaWRlLFxuXHRcdFx0ZW51bWVyYWJsZTogZmFsc2UsXG5cdFx0XHRjb25maWd1cmFibGU6IHRydWUsXG5cdFx0fSk7XG5cdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KG5leHRJdGVtLCBISURFX0VYUFJFU1NJT05fS0VZLCB7XG5cdFx0XHR2YWx1ZTogaGlkZUV4cHJlc3Npb24sXG5cdFx0XHRlbnVtZXJhYmxlOiBmYWxzZSxcblx0XHRcdGNvbmZpZ3VyYWJsZTogdHJ1ZSxcblx0XHR9KTtcblx0XHRpZiAoQXJyYXkuaXNBcnJheShpdGVtLmNoaWxkcmVuKSkge1xuXHRcdFx0bmV4dEl0ZW0uY2hpbGRyZW4gPSB0aGlzLnJlc29sdmVDb2x1bW5IaWRlRXhwcmVzc2lvbnMoaXRlbS5jaGlsZHJlbik7XG5cdFx0fVxuXHRcdHJldHVybiBuZXh0SXRlbTtcblx0fVxuXG5cdHByaXZhdGUgcmVzb2x2ZUhpZGVFeHByZXNzaW9uKGl0ZW06IGFueSkge1xuXHRcdGNvbnN0IGNvbmZpZ3VyZWRIaWRlRXhwcmVzc2lvbiA9IGl0ZW0uaGlkZUV4cHJlc3Npb24gPT09ICcnIHx8IGl0ZW0uaGlkZUV4cHJlc3Npb24gPT0gbnVsbCA/IHVuZGVmaW5lZCA6IGl0ZW0uaGlkZUV4cHJlc3Npb247XG5cdFx0Y29uc3QgaGlkZUV4cHJlc3Npb24gPSBpdGVtW0hJREVfRVhQUkVTU0lPTl9LRVldID8/IGNvbmZpZ3VyZWRIaWRlRXhwcmVzc2lvbiA/PyB0aGlzLmdldER5bmFtaWNIaWRlKGl0ZW0uaGlkZSk7XG5cdFx0aWYgKHR5cGVvZiBoaWRlRXhwcmVzc2lvbiA9PT0gJ2Z1bmN0aW9uJykge1xuXHRcdFx0cmV0dXJuIGhpZGVFeHByZXNzaW9uO1xuXHRcdH1cblx0XHRpZiAodHlwZW9mIGhpZGVFeHByZXNzaW9uID09PSAnc3RyaW5nJykge1xuXHRcdFx0cmV0dXJuIHBhcnNlRnVuY3Rpb25zKGhpZGVFeHByZXNzaW9uLCB0aGlzKTtcblx0XHR9XG5cdFx0cmV0dXJuIGhpZGVFeHByZXNzaW9uO1xuXHR9XG5cblx0cHJpdmF0ZSByZXNvbHZlU3RhdGljSGlkZShpdGVtOiBhbnkpIHtcblx0XHRpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGl0ZW0sIFNUQVRJQ19ISURFX0tFWSkpIHtcblx0XHRcdHJldHVybiAhIWl0ZW1bU1RBVElDX0hJREVfS0VZXTtcblx0XHR9XG5cdFx0cmV0dXJuIGl0ZW0uaGlkZUNvbCA9PT0gdHJ1ZSB8fCBpdGVtLmhpZGUgPT09IHRydWU7XG5cdH1cblxuXHRwcml2YXRlIGdldER5bmFtaWNIaWRlKGhpZGU6IGFueSkge1xuXHRcdGlmICh0eXBlb2YgaGlkZSA9PT0gJ2Z1bmN0aW9uJykge1xuXHRcdFx0cmV0dXJuIGhpZGU7XG5cdFx0fVxuXHRcdGlmICh0eXBlb2YgaGlkZSA9PT0gJ3N0cmluZycpIHtcblx0XHRcdGNvbnN0IHBhcnNlZEhpZGUgPSBwYXJzZUZ1bmN0aW9ucyhoaWRlLCB0aGlzKTtcblx0XHRcdHJldHVybiB0eXBlb2YgcGFyc2VkSGlkZSA9PT0gJ2Z1bmN0aW9uJyA/IHBhcnNlZEhpZGUgOiB1bmRlZmluZWQ7XG5cdFx0fVxuXHRcdHJldHVybiB1bmRlZmluZWQ7XG5cdH1cblxuXHRwcml2YXRlIGhhc0NvbHVtbkhpZGVFeHByZXNzaW9uKGNvbHVtbkRlZnM6IGFueVtdID0gW10pOiBib29sZWFuIHtcblx0XHRyZXR1cm4gY29sdW1uRGVmcy5zb21lKChpdGVtOiBhbnkpID0+IHtcblx0XHRcdGlmIChcblx0XHRcdFx0dHlwZW9mIGl0ZW1bSElERV9FWFBSRVNTSU9OX0tFWV0gPT09ICdmdW5jdGlvbicgfHxcblx0XHRcdFx0dHlwZW9mIGl0ZW0uaGlkZUV4cHJlc3Npb24gPT09ICdmdW5jdGlvbicgfHxcblx0XHRcdFx0dHlwZW9mIGl0ZW0uaGlkZUV4cHJlc3Npb24gPT09ICdzdHJpbmcnIHx8XG5cdFx0XHRcdHR5cGVvZiBpdGVtLmhpZGUgPT09ICdmdW5jdGlvbicgfHxcblx0XHRcdFx0dHlwZW9mIGl0ZW0uaGlkZSA9PT0gJ3N0cmluZydcblx0XHRcdCkge1xuXHRcdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRcdH1cblx0XHRcdHJldHVybiBBcnJheS5pc0FycmF5KGl0ZW0uY2hpbGRyZW4pID8gdGhpcy5oYXNDb2x1bW5IaWRlRXhwcmVzc2lvbihpdGVtLmNoaWxkcmVuKSA6IGZhbHNlO1xuXHRcdH0pO1xuXHR9XG5cblx0cHJpdmF0ZSBnZXRDb2x1bW5IaWRlU2lnbmF0dXJlKGNvbHVtbkRlZnM6IGFueVtdID0gW10pOiBzdHJpbmcge1xuXHRcdHJldHVybiBjb2x1bW5EZWZzXG5cdFx0XHQubWFwKChpdGVtOiBhbnksIGluZGV4OiBudW1iZXIpID0+IHtcblx0XHRcdFx0Y29uc3Qga2V5ID0gaXRlbS5jb2xJZCB8fCBpdGVtLmZpZWxkIHx8IGl0ZW0uaGVhZGVyTmFtZSB8fCBpbmRleDtcblx0XHRcdFx0Y29uc3QgY2hpbGRyZW4gPSBBcnJheS5pc0FycmF5KGl0ZW0uY2hpbGRyZW4pID8gdGhpcy5nZXRDb2x1bW5IaWRlU2lnbmF0dXJlKGl0ZW0uY2hpbGRyZW4pIDogJyc7XG5cdFx0XHRcdHJldHVybiBgJHtrZXl9OiR7aXRlbS5oaWRlID8gMSA6IDB9JHtjaGlsZHJlbiA/IGBbJHtjaGlsZHJlbn1dYCA6ICcnfWA7XG5cdFx0XHR9KVxuXHRcdFx0LmpvaW4oJ3wnKTtcblx0fVxuXG5cdGFzeW5jIHNldFJpY2hWYWx1ZShvcHRpb25zOiBHcmlkT3B0aW9ucyA9IHRoaXMudG9PcHRpb25zKCkpIHtcblx0XHRsZXQgY29sID0gb3B0aW9ucy5jb2x1bW5EZWZzISB8fCBbXTtcblx0XHR0cnkge1xuXHRcdFx0Y29uc3QgcHJvY2Vzc2VkQ29scyA9IGF3YWl0IFByb21pc2UuYWxsKFxuXHRcdFx0XHRjb2wubWFwKGFzeW5jIChpdGVtOiBhbnkpID0+IHtcblx0XHRcdFx0XHRjb25zdCBuZXh0SXRlbSA9IHsgLi4uaXRlbSB9O1xuXHRcdFx0XHRcdGlmIChuZXh0SXRlbS5oYXNPd25Qcm9wZXJ0eSgnZmllbGRJZCcpICYmIChuZXh0SXRlbS5jZWxsRWRpdG9yID09ICdhZ1JpY2hTZWxlY3RDZWxsRWRpdG9yJyB8fCBuZXh0SXRlbS5jZWxsRWRpdG9yID09ICdhZ1NlbGVjdENlbGxFZGl0b3InIHx8IG5leHRJdGVtLmNlbGxFZGl0b3IgPT0gJ2NlbGxFZGl0U2VsZWN0RmllbGRDb21wb25lbnQnKSAmJiAhbmV4dEl0ZW0ucm93R3JvdXApIHtcblx0XHRcdFx0XHRcdGxldCB2YWx1ZXM6IGFueSA9IFtdO1xuXHRcdFx0XHRcdFx0Y29uc3QgcmF3Q2VsbEVkaXRvclBhcmFtcyA9XG5cdFx0XHRcdFx0XHRcdHR5cGVvZiBpdGVtLmNlbGxFZGl0b3JQYXJhbXMgPT09ICdmdW5jdGlvbicgPyBpdGVtLmNlbGxFZGl0b3JQYXJhbXMoKSB8fCB7fSA6IGl0ZW0uY2VsbEVkaXRvclBhcmFtcyB8fCB7fTtcblx0XHRcdFx0XHRcdGNvbnN0IGNlbGxFZGl0b3JQYXJhbXMgPSB7IC4uLnJhd0NlbGxFZGl0b3JQYXJhbXMgfTtcblx0XHRcdFx0XHRcdGlmIChjZWxsRWRpdG9yUGFyYW1zLmhhc093blByb3BlcnR5KCd2YWx1ZXMnKSkge1xuXHRcdFx0XHRcdFx0XHR2YWx1ZXMgPSBjZWxsRWRpdG9yUGFyYW1zLnZhbHVlcyB8fCBbXTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGlmIChuZXh0SXRlbS5oYXNPd25Qcm9wZXJ0eSgnc2VsZWN0RGF0YScpICYmIHR5cGVvZiBuZXh0SXRlbS5zZWxlY3REYXRhID09PSAnZnVuY3Rpb24nKSB7XG5cdFx0XHRcdFx0XHRcdHZhbHVlcyA9IChhd2FpdCBpdGVtLnNlbGVjdERhdGEoKSkgfHwgW107XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRuZXh0SXRlbS5jZWxsRWRpdG9yUGFyYW1zID0ge1xuXHRcdFx0XHRcdFx0XHQuLi5jZWxsRWRpdG9yUGFyYW1zLFxuXHRcdFx0XHRcdFx0XHR2YWx1ZUxpc3RNYXhIZWlnaHQ6IDIwMCxcblx0XHRcdFx0XHRcdFx0c3VwcHJlc3NNdWx0aVNlbGVjdFBpbGxSZW5kZXJlcjogdHJ1ZSxcblx0XHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0XHRpZiAobmV4dEl0ZW0uY2VsbEVkaXRvclBhcmFtcy5oYXNPd25Qcm9wZXJ0eSgndmFsdWVzJykgJiYgIShuZXh0SXRlbS5oYXNPd25Qcm9wZXJ0eSgnc2VsZWN0RGF0YScpICYmIHR5cGVvZiBuZXh0SXRlbS5zZWxlY3REYXRhID09PSAnZnVuY3Rpb24nKSkge1xuXHRcdFx0XHRcdFx0XHR2YWx1ZXMgPSBuZXh0SXRlbS5jZWxsRWRpdG9yUGFyYW1zLnZhbHVlcztcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGxldCBpc1N0cmluZyA9IHZhbHVlcy5ldmVyeSgoaXRlbTogYW55KSA9PiB0eXBlb2YgaXRlbSA9PT0gJ3N0cmluZycpO1xuXHRcdFx0XHRcdFx0aWYgKCFpc1N0cmluZykge1xuXHRcdFx0XHRcdFx0XHRjb25zdCBvcHRpb25WYWx1ZUZpZWxkID0gbmV4dEl0ZW0uY2VsbEVkaXRvclBhcmFtcy5vcHRpb25WYWx1ZSB8fCAndmFsdWUnO1xuXHRcdFx0XHRcdFx0XHRjb25zdCBvcHRpb25MYWJlbEZpZWxkID0gbmV4dEl0ZW0uY2VsbEVkaXRvclBhcmFtcy5vcHRpb25MYWJlbCB8fCAnbGFiZWwnO1xuXHRcdFx0XHRcdFx0XHRuZXh0SXRlbS5jZWxsRWRpdG9yUGFyYW1zLnJhd09wdGlvbnMgPSB2YWx1ZXM7XG5cdFx0XHRcdFx0XHRcdG5leHRJdGVtLmNlbGxFZGl0b3JQYXJhbXMudmFsdWVzID0gdmFsdWVzLm1hcCgoaXRlbTogYW55KSA9PiBpdGVtPy5bb3B0aW9uVmFsdWVGaWVsZF0pO1xuXHRcdFx0XHRcdFx0XHRuZXh0SXRlbS52YWx1ZUZvcm1hdHRlciA9IChwYXJhbXM6IGFueSkgPT4ge1xuXHRcdFx0XHRcdFx0XHRcdGNvbnN0IG9wdGlvbnMgPSBwYXJhbXMuY29sRGVmLmNlbGxFZGl0b3JQYXJhbXMucmF3T3B0aW9ucyBhcyBhbnlbXTtcblx0XHRcdFx0XHRcdFx0XHRjb25zdCB2YWx1ZUZpZWxkID0gcGFyYW1zLmNvbERlZi5jZWxsRWRpdG9yUGFyYW1zLm9wdGlvblZhbHVlIHx8ICd2YWx1ZSc7XG5cdFx0XHRcdFx0XHRcdFx0Y29uc3QgbGFiZWxGaWVsZCA9IHBhcmFtcy5jb2xEZWYuY2VsbEVkaXRvclBhcmFtcy5vcHRpb25MYWJlbCB8fCAnbGFiZWwnO1xuXHRcdFx0XHRcdFx0XHRcdGlmICh0eXBlb2YgcGFyYW1zLnZhbHVlID09PSAnbnVtYmVyJykge1xuXHRcdFx0XHRcdFx0XHRcdFx0Y29uc3Qgb3B0aW9uID0gb3B0aW9ucy5maW5kKChvcHQpID0+IG9wdD8uW3ZhbHVlRmllbGRdID09IHBhcmFtcy52YWx1ZSk7XG5cdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gb3B0aW9uID8gb3B0aW9uPy5bbGFiZWxGaWVsZF0gOiBwYXJhbXMudmFsdWU7XG5cdFx0XHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0XHRcdGxldCB2YWx1ZXM6IGFueSA9IFtdO1xuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKHR5cGVvZiBwYXJhbXMudmFsdWUgPT09ICdzdHJpbmcnKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGlmIChwYXJhbXMudmFsdWUubGVuZ3RoID4gMCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHZhbHVlcyA9IHBhcmFtcy52YWx1ZS5zcGxpdCgnLCcpLm1hcCgodjogYW55KSA9PiAoIWlzTmFOKHYpID8gTnVtYmVyKHYpIDogdikpIHx8IFtdO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR2YWx1ZXMgPSBwYXJhbXMudmFsdWUgfHwgW107XG5cdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRjb25zdCBvcHRpb24gPSBvcHRpb25zLmZpbHRlcigob3B0KSA9PiB2YWx1ZXMuaW5jbHVkZXMob3B0Py5bdmFsdWVGaWVsZF0pKSB8fCBbXTtcblx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiBvcHRpb24ubGVuZ3RoID4gMCA/IG9wdGlvbi5tYXAoKHYpID0+IHY/LltsYWJlbEZpZWxkXSkgOiBwYXJhbXMudmFsdWU7XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdFx0XHRuZXh0SXRlbS52YWx1ZUdldHRlciA9IChwYXJhbXM6IGFueSkgPT4ge1xuXHRcdFx0XHRcdFx0XHRcdC8vIGNvbnNvbGUubG9nKCdwYW1yYW1zLS0tLScscGFyYW1zLGl0ZW0uZmllbGQpXG5cdFx0XHRcdFx0XHRcdFx0aWYgKChuZXh0SXRlbS5jZWxsRWRpdG9yID09ICdhZ1JpY2hTZWxlY3RDZWxsRWRpdG9yJyB8fCBuZXh0SXRlbS5jZWxsRWRpdG9yID09ICdjZWxsRWRpdFNlbGVjdEZpZWxkQ29tcG9uZW50JykgJiYgcGFyYW1zLmRhdGEgJiYgcGFyYW1zLmRhdGEuaGFzT3duUHJvcGVydHkobmV4dEl0ZW0uZmllbGQpKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gdHlwZW9mIHBhcmFtcy5kYXRhW25leHRJdGVtLmZpZWxkXSA9PSAnc3RyaW5nJyA/IHBhcmFtcy5kYXRhW25leHRJdGVtLmZpZWxkXS5zcGxpdCgnLCcpIDogcGFyYW1zLmRhdGFbbmV4dEl0ZW0uZmllbGRdO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gcGFyYW1zLmRhdGEgPyBwYXJhbXMuZGF0YVtuZXh0SXRlbS5maWVsZF06ICcnXG5cdFx0XHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0XHRcdG5leHRJdGVtLnZhbHVlUGFyc2VyID0gKHBhcmFtczogYW55KSA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0Ly8gY29uc29sZS5sb2coJ3BhcmFtcy0tLS0nLHBhcmFtcylcblx0XHRcdFx0XHRcdFx0XHRjb25zdCBvcHRpb25zID0gcGFyYW1zLmNvbERlZi5jZWxsRWRpdG9yUGFyYW1zLnJhd09wdGlvbnMgYXMgYW55W107XG5cdFx0XHRcdFx0XHRcdFx0Y29uc3QgdmFsdWVGaWVsZCA9IHBhcmFtcy5jb2xEZWYuY2VsbEVkaXRvclBhcmFtcy5vcHRpb25WYWx1ZSB8fCAndmFsdWUnO1xuXHRcdFx0XHRcdFx0XHRcdGNvbnN0IGxhYmVsRmllbGQgPSBwYXJhbXMuY29sRGVmLmNlbGxFZGl0b3JQYXJhbXMub3B0aW9uTGFiZWwgfHwgJ2xhYmVsJztcblx0XHRcdFx0XHRcdFx0XHRjb25zdCBvcHRpb24gPSBvcHRpb25zLmZpbmQoKG9wdCkgPT4gb3B0Py5bbGFiZWxGaWVsZF0gPT09IHBhcmFtcy5uZXdWYWx1ZSk7XG5cdFx0XHRcdFx0XHRcdFx0cmV0dXJuIG9wdGlvbiA/IG9wdGlvbj8uW3ZhbHVlRmllbGRdIDogcGFyYW1zLm5ld1ZhbHVlO1xuXHRcdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0bmV4dEl0ZW0uY2VsbEVkaXRvclBhcmFtcy52YWx1ZXMgPSB2YWx1ZXM7XG5cdFx0XHRcdFx0XHRcdG5leHRJdGVtLnZhbHVlR2V0dGVyID0gKHBhcmFtczogYW55KSA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0aWYgKChuZXh0SXRlbS5jZWxsRWRpdG9yID09ICdhZ1JpY2hTZWxlY3RDZWxsRWRpdG9yJyB8fCBuZXh0SXRlbS5jZWxsRWRpdG9yID09ICdjZWxsRWRpdFNlbGVjdEZpZWxkQ29tcG9uZW50JykgJiYgcGFyYW1zLmRhdGEgJiYgcGFyYW1zLmRhdGEuaGFzT3duUHJvcGVydHkobmV4dEl0ZW0uZmllbGQpKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gdHlwZW9mIHBhcmFtcy5kYXRhW25leHRJdGVtLmZpZWxkXSA9PSAnc3RyaW5nJyA/IHBhcmFtcy5kYXRhW25leHRJdGVtLmZpZWxkXS5zcGxpdCgnLCcpIDogcGFyYW1zLmRhdGFbbmV4dEl0ZW0uZmllbGRdO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gcGFyYW1zLmRhdGEgPyBwYXJhbXMuZGF0YVtuZXh0SXRlbS5maWVsZF06ICcnXG5cdFx0XHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHJldHVybiBuZXh0SXRlbTtcblx0XHRcdFx0fSksXG5cdFx0XHQpO1xuXHRcdFx0cmV0dXJuIHByb2Nlc3NlZENvbHM7XG5cdFx0fSBjYXRjaCAoZXJyb3IpIHtcblx0XHRcdGNvbnNvbGUuZXJyb3IoJ0Vycm9yIHByb2Nlc3NpbmcgY29sdW1uczonLCBlcnJvcik7XG5cdFx0XHR0aHJvdyBlcnJvcjtcblx0XHR9XG5cdH1cblxuXHRnZXRFbnVtcyhpZDogbnVtYmVyKSB7XG5cdFx0cmV0dXJuIGxhc3RWYWx1ZUZyb20odGhpcy5odHRwLnBvc3QoJ2dldCcsIHsgaWQ6IE51bWJlcihpZCksIG1vZGVsTmFtZTogJ01vZGVsRmllbGQnLCBwcmVsb2FkczogWydFbnVtJ10gfSkpO1xuXHR9XG5cblx0aGFuZGxlU2VsZWN0aW9ucyhzdGFydFJvdzogbnVtYmVyKSB7XG5cdFx0c2V0VGltZW91dCgoKSA9PiB7XG5cdFx0XHRpZiAodGhpcy5zZWxlY3Rpb25LZXlzKCk/Lmxlbmd0aCkge1xuXHRcdFx0XHRncmlkVXRpbHMuc2VsZWN0aW9uSGFuZGxlcih0aGlzLmdyaWQuYXBpLCB0aGlzLnNlbGVjdGlvbktleXMoKSwgc3RhcnRSb3csIHRoaXMudG9PcHRpb25zKCk/LmRhdGFLZXkpO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHR9XG5cblx0Z2V0RGF0YSgpIHtcblx0XHR1bnRyYWNrZWQoKCkgPT4ge1xuXHRcdFx0Ly8gY29uc29sZS5sb2coJ3RoaXMudG9PcHRpb25zKCknLHRoaXMudG9PcHRpb25zKCkpXG5cdFx0XHRpZiAoIXRoaXMuc2VhcmNoUHJtKCkubW9kZWxOYW1lICYmICF0aGlzLnJvd0RhdGEoKSkgcmV0dXJuO1xuXHRcdFx0dGhpcy5jYW5jZWxTZWxlY3QoKTtcblx0XHRcdGNvbnN0IHNlYXJjaCA9IHRoaXMuYWN0aW9uLmdldFNlYXJjaCh0aGlzLnRvT3B0aW9ucygpLm1vZGVsTmFtZSk7XG5cdFx0XHR0aGlzLnRvT3B0aW9ucygpPy5yb3dNb2RlbFR5cGUgPT0gJ3NlcnZlclNpZGUnID8gdGhpcy5nZXRTZXJ2ZXJEYXRhKHNlYXJjaCkgOiB0aGlzLmdldENsaWVudERhdGEoc2VhcmNoKTtcblx0XHR9KTtcblx0fVxuXG5cdGdldFNlcnZlckRhdGEoc2VhcmNoPzogU2VhcmNoKSB7XG5cdFx0dGhpcy5ncmlkPy5hcGkuc2V0R3JpZE9wdGlvbignc2VydmVyU2lkZURhdGFzb3VyY2UnLCB7XG5cdFx0XHRnZXRSb3dzOiAocGFyYW1zKSA9PiB7XG5cdFx0XHRcdGNvbnN0IHNlYXJjaFBybTogU2VhcmNoID0ge1xuXHRcdFx0XHRcdC4uLnRoaXMuc2VhcmNoUHJtKCksXG5cdFx0XHRcdFx0b2Zmc2V0OiBwYXJhbXMucmVxdWVzdC5zdGFydFJvdyxcblx0XHRcdFx0XHRjb2x1bW5GaWx0ZXJzOiBbLi4uKHRoaXMucmF3UHJtPy5jb2x1bW5GaWx0ZXJzIHx8IFtdKSwgLi4uKHNlYXJjaD8uY29sdW1uRmlsdGVycyB8fCBbXSldLFxuXHRcdFx0XHRcdHNvcnRzOiBzZWFyY2g/LnNvcnRzPy5sZW5ndGggPyBzZWFyY2guc29ydHMgOiB0aGlzLnJhd1BybT8uc29ydHM/Lmxlbmd0aCA/IHRoaXMucmF3UHJtLnNvcnRzIDogZGVmYXVsdFNvcnRzLFxuXHRcdFx0XHR9O1xuXHRcdFx0XHRzZWFyY2hQcm0uY29sdW1uRmlsdGVycyA9IHRoaXMuaXNSYW5nZShzZWFyY2hQcm0uY29sdW1uRmlsdGVycyEpIGFzIENvbHVtbkZpbHRlcltdO1xuXHRcdFx0XHR0aGlzLmhhbmRsZVNlcnZlclRyZWUocGFyYW1zLCBzZWFyY2hQcm0pO1xuXHRcdFx0XHR0aGlzLnRvT3B0aW9ucygpXG5cdFx0XHRcdFx0LnNlcnZlckZ1bmM/LihzZWFyY2hQcm0pXG5cdFx0XHRcdFx0LnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcblx0XHRcdFx0XHRcdHRoaXMuYWN0aW9uLnNldFBhZ2Uoe1xuXHRcdFx0XHRcdFx0XHRzdGFydFJvdzogcGFyYW1zLnJlcXVlc3Quc3RhcnRSb3csXG5cdFx0XHRcdFx0XHRcdGVuZFJvdzogcGFyYW1zLnJlcXVlc3QuZW5kUm93ISA8IHJlcy50b3RhbE51bSA/IHBhcmFtcy5yZXF1ZXN0LmVuZFJvdyA6IHJlcy50b3RhbE51bSxcblx0XHRcdFx0XHRcdFx0dG90YWw6IHJlcy50b3RhbE51bSxcblx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0cGFyYW1zLnN1Y2Nlc3MoeyByb3dEYXRhOiByZXMuZGF0YSB8fCBbXSB9KTtcblx0XHRcdFx0XHRcdHRoaXMuYWp1c3RHcmlkSGVpZ2h0KCk7XG5cdFx0XHRcdFx0XHR0aGlzLmhhbmRsZVNlbGVjdGlvbnMocGFyYW1zLnJlcXVlc3Quc3RhcnRSb3cgfHwgMCk7XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHR9LFxuXHRcdH0pO1xuXHR9XG5cblx0aGFuZGxlU2VydmVyVHJlZShwYXJhbXM6IGFueSwgc2VhcmNoUHJtOiBTZWFyY2gpIHtcblx0XHRpZiAoIXRoaXMudG9PcHRpb25zKCkudHJlZURhdGEpIHJldHVybjtcblx0XHRpZiAocGFyYW1zLnJlcXVlc3QuZ3JvdXBLZXlzLmxlbmd0aCA+IDApIHtcblx0XHRcdHNlYXJjaFBybS5jb2x1bW5GaWx0ZXJzID0gc2VhcmNoUHJtLmNvbHVtbkZpbHRlcnM/LmZpbHRlcigoY29sdW1uRmlsdGVyKSA9PiBjb2x1bW5GaWx0ZXIuY29sdW1uRmllbGQgIT09ICdwaWQnKTtcblx0XHRcdHNlYXJjaFBybS5jb2x1bW5GaWx0ZXJzID0gW1xuXHRcdFx0XHQvLyAuLi4oc2VhcmNoUHJtLmNvbHVtbkZpbHRlcnMgfHwgW10pLFxuXHRcdFx0XHR7IGNvbHVtbkZpZWxkOiAncGlkJywgdHlwZTogJ2VxJywgZml0ZXI6IHBhcmFtcy5yZXF1ZXN0Lmdyb3VwS2V5c1twYXJhbXMucmVxdWVzdC5ncm91cEtleXMubGVuZ3RoIC0gMV0gfSxcblx0XHRcdF07XG5cdFx0fSBlbHNlIHtcblx0XHRcdGlmICghc2VhcmNoUHJtLmNvbHVtbkZpbHRlcnM/LmZpbmQoKGNvbHVtbkZpbHRlcikgPT4gY29sdW1uRmlsdGVyLmNvbHVtbkZpZWxkID09PSAncGlkJykpIHtcblx0XHRcdFx0c2VhcmNoUHJtLmNvbHVtbkZpbHRlcnMgPSBbLi4uKHNlYXJjaFBybS5jb2x1bW5GaWx0ZXJzIHx8IFtdKSwgeyBjb2x1bW5GaWVsZDogJ3BpZCcsIHR5cGU6ICdlcScsIGZpdGVyOiAwIH1dO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRzZWFyY2hQcm0ucHJlbG9hZHMgPSBbJ2NoaWxkcmVuJ107XG5cdH1cblxuXHRnZXRDbGllbnREYXRhKHNlYXJjaD86IFNlYXJjaCkge1xuXHRcdGNvbnN0IHNlYXJjaFBybTogU2VhcmNoID0ge1xuXHRcdFx0Li4udGhpcy5zZWFyY2hQcm0oKSxcblx0XHRcdGxpbWl0OiBDTElFTlRMSU1JVCxcblx0XHRcdGNvbHVtbkZpbHRlcnM6IFsuLi4odGhpcy5yYXdQcm0/LmNvbHVtbkZpbHRlcnMgfHwgW10pLCAuLi4oc2VhcmNoPy5jb2x1bW5GaWx0ZXJzIHx8IFtdKV0sXG5cdFx0XHRzb3J0czogc2VhcmNoPy5zb3J0cz8ubGVuZ3RoID8gc2VhcmNoLnNvcnRzIDogZGVmYXVsdFNvcnRzLFxuXHRcdH07XG5cdFx0c2VhcmNoUHJtLmNvbHVtbkZpbHRlcnMgPSB0aGlzLmlzUmFuZ2Uoc2VhcmNoUHJtLmNvbHVtbkZpbHRlcnMhKSBhcyBDb2x1bW5GaWx0ZXJbXTtcblx0XHR0aGlzLmhhbmRsZUNsaWVudFRyZWUoc2VhcmNoUHJtKTtcblx0XHR0aGlzLnRvT3B0aW9ucygpXG5cdFx0XHQuY2xpZW50RnVuYz8uKHNlYXJjaFBybSlcblx0XHRcdC5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XG5cdFx0XHRcdHRoaXMuYWN0aW9uLnNldFBhZ2Uoe1xuXHRcdFx0XHRcdHRvdGFsOiByZXMudG90YWxOdW0sXG5cdFx0XHRcdFx0bW9kZTogJ2NsaWVudCcsXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHR0aGlzLmdyaWQ/LmFwaS5zZXRHcmlkT3B0aW9uKCdyb3dEYXRhJywgcmVzLmRhdGEgfHwgW10pO1xuXHRcdFx0XHR0aGlzLmFqdXN0R3JpZEhlaWdodCgpO1xuXHRcdFx0XHR0aGlzLmhhbmRsZVNlbGVjdGlvbnMoMCk7XG5cdFx0XHR9KTtcblx0fVxuXG5cdGhhbmRsZUNsaWVudFRyZWUoc2VhcmNoUHJtOiBTZWFyY2gpIHtcblx0XHRpZiAoIXRoaXMudG9PcHRpb25zKCkudHJlZURhdGEpIHJldHVybjtcblx0XHRjb25zdCBwcmVsb2FkczogYW55W10gPSBbXTtcblx0XHRmb3IgKGxldCBpID0gMTsgaSA8IHRoaXMudG9PcHRpb25zKCkudHJlZUxldmVsITsgaSsrKSB7XG5cdFx0XHRwcmVsb2Fkcy5wdXNoKEFycmF5KGkpLmZpbGwoJ2NoaWxkcmVuJykuam9pbignLicpKTtcblx0XHR9XG5cdFx0c2VhcmNoUHJtLnByZWxvYWRzID0gcHJlbG9hZHM7XG5cdH1cblxuXHRjZWxsVmFsdWVDaGFuZ2VkKGU6IENlbGxWYWx1ZUNoYW5nZWRFdmVudCkge1xuXHRcdGxldCB7XG5cdFx0XHRjb2xEZWY6IHsgZmllbGQsIGhlYWRlck5hbWUsIGNlbGxFZGl0b3IsIGNlbGxFZGl0b3JQYXJhbXMgfSxcblx0XHRcdG5ld1ZhbHVlLFxuXHRcdFx0b2xkVmFsdWUsXG5cdFx0XHRyb3dJbmRleCxcblx0XHRcdGRhdGE6IHsgaWQgfSxcblx0XHR9ID0gZTtcblx0XHRjb25zb2xlLmxvZygnW+WNleWFg+agvOWAvOWPmOWMll0nLCBlKTtcblx0XHRpZiAoY2VsbEVkaXRvciA9PSAnYWdSaWNoU2VsZWN0Q2VsbEVkaXRvcicgJiYgY2VsbEVkaXRvclBhcmFtcyAmJiBjZWxsRWRpdG9yUGFyYW1zLm11bHRpU2VsZWN0KSB7XG5cdFx0XHRuZXdWYWx1ZSA9IG5ld1ZhbHVlICYmIG5ld1ZhbHVlLmxlbmd0aCA+IDAgPyBuZXdWYWx1ZS5qb2luKCcsJykgOiAnJztcblx0XHRcdHRoaXMucmljaE11bHRNYXBbZmllbGQhXSA9IG5ld1ZhbHVlO1xuXHRcdH1cblx0XHRpZiAoIWlkIHx8IGlkID09PSAwKSB7XG5cdFx0XHRpZCA9PT0gMCAmJiBkZWxldGUgZS5kYXRhLmlkO1xuXHRcdFx0dGhpcy51cHNlcnQoKT8uc3Vic2VydFt0aGlzLnN1YkluZGV4XVsnbWFwdG1wJ10uc2V0KHJvd0luZGV4ISwgT2JqZWN0LmFzc2lnbih7IC4uLmUuZGF0YSB9LCB0aGlzLnJpY2hNdWx0TWFwKSk7XG5cdFx0XHRpZiAoZmllbGQgPT0gdGhpcy5tYWluRmllbGQpIHtcblx0XHRcdFx0dGhpcy51cHNlcnQoKT8uc3Vic2VydFt0aGlzLnN1YkluZGV4XVsnbG9ndG1wJ10uc2V0KHJvd0luZGV4ISArIGZpZWxkISwgeyBuZXdWYWx1ZTogbmV3VmFsdWUsIGlkOiAwLCBsYWJlbDogaGVhZGVyTmFtZSB9KTtcblx0XHRcdH1cblx0XHR9IGVsc2UgaWYgKGlkKSB7XG5cdFx0XHRjb25zdCBmaWVsZHN0ciA9IGAke2ZpZWxkfWA7XG5cdFx0XHRsZXQgbzogYW55O1xuXHRcdFx0aWYgKHRoaXMudXBzZXJ0KCk/LnN1YnNlcnRbdGhpcy5zdWJJbmRleF1bJ21hcHRtcCddLmhhcyhyb3dJbmRleCEpKSB7XG5cdFx0XHRcdG8gPSB0aGlzLnVwc2VydCgpPy5zdWJzZXJ0W3RoaXMuc3ViSW5kZXhdWydtYXB0bXAnXS5nZXQocm93SW5kZXghKTtcblx0XHRcdFx0T2JqZWN0LmFzc2lnbihvLCB7IFtmaWVsZHN0cl06IG5ld1ZhbHVlIH0pO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0byA9IHsgaWQ6IGlkLCBbZmllbGRzdHJdOiBuZXdWYWx1ZSB9O1xuXHRcdFx0fVxuXHRcdFx0dGhpcy51cHNlcnQoKT8uc3Vic2VydFt0aGlzLnN1YkluZGV4XVsnbWFwdG1wJ10uc2V0KHJvd0luZGV4ISwgbyk7XG5cdFx0XHRsZXQgb2xkID0gdGhpcy51cHNlcnQoKT8uc3Vic2VydFt0aGlzLnN1YkluZGV4XVsnbG9ndG1wJ10uZ2V0KHJvd0luZGV4ISArIGZpZWxkISk7XG5cdFx0XHRpZiAob2xkKSB7XG5cdFx0XHRcdHRoaXMudXBzZXJ0KCk/LnN1YnNlcnRbdGhpcy5zdWJJbmRleF1bJ2xvZ3RtcCddLnNldChyb3dJbmRleCEgKyBmaWVsZCEsIHtcblx0XHRcdFx0XHRuZXdWYWx1ZTogbmV3VmFsdWUsXG5cdFx0XHRcdFx0b2xkVmFsdWU6IG9sZC5vbGRWYWx1ZSxcblx0XHRcdFx0XHRpZDogaWQsXG5cdFx0XHRcdFx0bGFiZWw6IGhlYWRlck5hbWUsXG5cdFx0XHRcdH0pO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0dGhpcy51cHNlcnQoKT8uc3Vic2VydFt0aGlzLnN1YkluZGV4XVsnbG9ndG1wJ10uc2V0KHJvd0luZGV4ISArIGZpZWxkISwge1xuXHRcdFx0XHRcdG5ld1ZhbHVlOiBuZXdWYWx1ZSxcblx0XHRcdFx0XHRvbGRWYWx1ZTogb2xkVmFsdWUsXG5cdFx0XHRcdFx0aWQ6IGlkLFxuXHRcdFx0XHRcdGxhYmVsOiBoZWFkZXJOYW1lLFxuXHRcdFx0XHR9KTtcblx0XHRcdH1cblx0XHR9XG5cdFx0bGV0IGR0OiBhbnlbXSA9IFtdO1xuXHRcdHRoaXMudXBzZXJ0KCk/LnN1YnNlcnRbdGhpcy5zdWJJbmRleF1bJ21hcHRtcCddLmZvckVhY2goKHZhbHVlOiBhbnksIGtleTogYW55KSA9PiB7XG5cdFx0XHRkdC5wdXNoKHZhbHVlKTtcblx0XHR9KTtcblx0XHR0aGlzLnVwc2VydCgpWydzdWJzZXJ0J11bdGhpcy5zdWJJbmRleF1bJ3N1YkRhdGEnXSA9IGR0O1xuXHRcdHRoaXMuYWN0aW9uLnNhdmVTaWduYWwuc2V0KHRydWUpO1xuXHRcdHRoaXMuZ3JpZERhdGFDaGFuZ2VkLmVtaXQoKTtcblx0fVxuXG5cdGhhbmRsZUFkZGVkUm93cyhhZGRlZFJvd3M6IGFueVtdKSB7XG5cdFx0bGV0IGhlYWRlck5hbWUgPSAnJztcblx0XHR0aGlzLnRvT3B0aW9ucygpLmNvbHVtbkRlZnM/LmZvckVhY2goKGl0ZW06IGFueSkgPT4ge1xuXHRcdFx0aWYgKGl0ZW0uZmllbGQgPT0gdGhpcy5tYWluRmllbGQpIHtcblx0XHRcdFx0aGVhZGVyTmFtZSA9IGl0ZW0uaGVhZGVyTmFtZTtcblx0XHRcdH1cblx0XHR9KTtcblx0XHRpZiAodGhpcy5hZGRTb3J0KCkpIHtcblx0XHRcdC8vIGNvbnNvbGUubG9nKCdhZGQtLS0tLScsdGhpcy5hZGRTb3J0KCkpXG5cdFx0XHQvLyBsZXQgbG9nID0gbmV3IE1hcCgpXG5cdFx0XHR0aGlzLnNlbGVjdERhdGEoKSEuZm9yRWFjaCgoaXRlbTogYW55KSA9PiB7XG5cdFx0XHRcdGNvbnN0IHJvd0RhdGEgPSB0aGlzLmdyaWQuYXBpLmdldFJlbmRlcmVkTm9kZXMoKS5tYXAoKG5vZGUpID0+IG5vZGUuZGF0YSk7XG5cdFx0XHRcdGxldCBsYXN0SW5kZXggPSBmaW5kTGFzdEluZGV4KHJvd0RhdGEsICh2OiBhbnkpID0+IHZbdGhpcy5hZGRTb3J0KCkhXSA9PSBpdGVtW3RoaXMuYWRkU29ydCgpIV0sIHRoaXMpO1xuXHRcdFx0XHRsYXN0SW5kZXggPSBsYXN0SW5kZXggPT0gLTEgPyByb3dEYXRhLmxlbmd0aCAtIDEgOiBsYXN0SW5kZXg7XG5cdFx0XHRcdGNvbnN0IHJlc3VsdCA9IHRoaXMuZ3JpZC5hcGkuYXBwbHlUcmFuc2FjdGlvbih7IGFkZEluZGV4OiBsYXN0SW5kZXggKyAxLCBhZGQ6IFtpdGVtXSB9KTtcblx0XHRcdFx0dGhpcy51cHNlcnQoKT8uc3Vic2VydFt0aGlzLnN1YkluZGV4XVsnbG9ndG1wJ10uZm9yRWFjaCgodmFsdWU6IGFueSwga2V5OiBhbnkpID0+IHtcblx0XHRcdFx0XHRsZXQgaW5kZXggPSBrZXkubWF0Y2goL15cXGQrLylbMF07XG5cdFx0XHRcdFx0Y29uc29sZS5sb2coJ2luZGV4LS0tLScsIGluZGV4KTtcblx0XHRcdFx0XHRjb25zdCBpbnNlcnRJbmRleCA9IGxhc3RJbmRleCArIDE7XG5cdFx0XHRcdFx0aWYgKGluZGV4ID09IGluc2VydEluZGV4KSB7XG5cdFx0XHRcdFx0XHRjb25zdCByZXBsYWNlSW5kZXggPSBpbnNlcnRJbmRleCArIDE7XG5cdFx0XHRcdFx0XHRsZXQgbmV3S2V5ID0ga2V5LnJlcGxhY2UoL15cXGQrLywgcmVwbGFjZUluZGV4KTtcblx0XHRcdFx0XHRcdHRoaXMudXBzZXJ0KCk/LnN1YnNlcnRbdGhpcy5zdWJJbmRleF1bJ2xvZ3RtcCddLnNldChuZXdLZXksIHZhbHVlKTtcblx0XHRcdFx0XHRcdHRoaXMudXBzZXJ0KCk/LnN1YnNlcnRbdGhpcy5zdWJJbmRleF1bJ2xvZ3RtcCddLmRlbGV0ZShrZXkpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSk7XG5cdFx0XHRcdGxldCBtYXBEYXRhID0gdGhpcy51cHNlcnQoKT8uc3Vic2VydFt0aGlzLnN1YkluZGV4XVsnbWFwdG1wJ10uZ2V0KGxhc3RJbmRleCArIDEpO1xuXHRcdFx0XHRpZiAobWFwRGF0YSkge1xuXHRcdFx0XHRcdHRoaXMudXBzZXJ0KCk/LnN1YnNlcnRbdGhpcy5zdWJJbmRleF1bJ21hcHRtcCddLmRlbGV0ZShsYXN0SW5kZXggKyAxKTtcblx0XHRcdFx0XHR0aGlzLnVwc2VydCgpPy5zdWJzZXJ0W3RoaXMuc3ViSW5kZXhdWydtYXB0bXAnXS5zZXQobGFzdEluZGV4ICsgMiwgbWFwRGF0YSk7XG5cdFx0XHRcdH1cblx0XHRcdFx0cmVzdWx0IS5hZGQuZm9yRWFjaCgobm9kZTogYW55KSA9PiB7XG5cdFx0XHRcdFx0Ly8gY29uc29sZS5sb2coJ25vZGUtLS0tJyxub2RlKVxuXHRcdFx0XHRcdHRoaXMudXBzZXJ0KCk/LnN1YnNlcnRbdGhpcy5zdWJJbmRleF1bJ21hcHRtcCddLnNldChub2RlLnJvd0luZGV4LCBub2RlLmRhdGEpO1xuXHRcdFx0XHRcdHRoaXMudXBzZXJ0KCk/LnN1YnNlcnRbdGhpcy5zdWJJbmRleF1bJ2xvZ3RtcCddLnNldChub2RlLnJvd0luZGV4ISArIHRoaXMubWFpbkZpZWxkISwge1xuXHRcdFx0XHRcdFx0bmV3VmFsdWU6IG5vZGUuZGF0YVt0aGlzLm1haW5GaWVsZF0sXG5cdFx0XHRcdFx0XHRpZDogMCxcblx0XHRcdFx0XHRcdGxhYmVsOiBoZWFkZXJOYW1lLFxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9KTtcblx0XHRcdFx0Ly8gY29uc29sZS5sb2coJ2xhc3RJbmRleCcsbGFzdEluZGV4KVxuXHRcdFx0fSk7XG5cdFx0XHR0aGlzLmdyaWQuYXBpLnJlZnJlc2hDZWxscyh7XG5cdFx0XHRcdGZvcmNlOiB0cnVlLCAvLyDlvLrliLbliLfmlrBcblx0XHRcdFx0c3VwcHJlc3NGbGFzaDogdHJ1ZSwgLy8g6YG/5YWN6Zeq54OBXG5cdFx0XHR9KTtcblx0XHRcdC8vIHRoaXMudXBzZXJ0KCkhLnN1YnNlcnRbdGhpcy5zdWJJbmRleF1bJ2xvZ3RtcCddID0gbG9nXG5cdFx0fSBlbHNlIHtcblx0XHRcdGNvbnN0IHJlc3VsdCA9IHRoaXMuZ3JpZC5hcGkuYXBwbHlUcmFuc2FjdGlvbih7IGFkZDogYWRkZWRSb3dzIH0pO1xuXHRcdFx0cmVzdWx0IS5hZGQuZm9yRWFjaCgobm9kZTogYW55KSA9PiB7XG5cdFx0XHRcdGNvbnN0IHJvd0luZGV4ID0gdGhpcy5ncmlkLmFwaS5nZXRSb3dOb2RlKG5vZGUuaWQpPy5yb3dJbmRleDtcblx0XHRcdFx0dGhpcy51cHNlcnQoKT8uc3Vic2VydFt0aGlzLnN1YkluZGV4XVsnbWFwdG1wJ10uc2V0KHJvd0luZGV4ISwgbm9kZS5kYXRhKTtcblx0XHRcdFx0dGhpcy51cHNlcnQoKT8uc3Vic2VydFt0aGlzLnN1YkluZGV4XVsnbG9ndG1wJ10uc2V0KHJvd0luZGV4ISArIHRoaXMubWFpbkZpZWxkISwge1xuXHRcdFx0XHRcdG5ld1ZhbHVlOiBub2RlLmRhdGFbdGhpcy5tYWluRmllbGRdLFxuXHRcdFx0XHRcdGlkOiAwLFxuXHRcdFx0XHRcdGxhYmVsOiBoZWFkZXJOYW1lLFxuXHRcdFx0XHR9KTtcblx0XHRcdH0pO1xuXHRcdH1cblx0XHRsZXQgZHQ6IGFueVtdID0gW107XG5cdFx0dGhpcy51cHNlcnQoKT8uc3Vic2VydFt0aGlzLnN1YkluZGV4XVsnbWFwdG1wJ10uZm9yRWFjaCgodmFsdWU6IGFueSwga2V5OiBhbnkpID0+IHtcblx0XHRcdGR0LnB1c2godmFsdWUpO1xuXHRcdH0pO1xuXHRcdC8vIGNvbnNvbGUubG9nKCd1cHNlcnQtLS0tLScsdGhpcy51cHNlcnQoKSlcblx0XHR0aGlzLnVwc2VydCgpWydzdWJzZXJ0J11bdGhpcy5zdWJJbmRleF1bJ3N1YkRhdGEnXSA9IGR0O1xuXHRcdHRoaXMuZ3JpZERhdGFDaGFuZ2VkLmVtaXQoKTtcblx0XHR0aGlzLmFqdXN0R3JpZEhlaWdodCgpO1xuXHR9XG5cblx0aGFuZGxlRGVsZXRlZFJvd3MoZGVsZXRlZFJvd3M6IGFueVtdKSB7XG5cdFx0bGV0IGhlYWRlck5hbWUgPSAnJztcblx0XHR0aGlzLnRvT3B0aW9ucygpLmNvbHVtbkRlZnM/LmZvckVhY2goKGl0ZW06IGFueSkgPT4ge1xuXHRcdFx0aWYgKGl0ZW0uZmllbGQgPT0gdGhpcy5tYWluRmllbGQpIHtcblx0XHRcdFx0aGVhZGVyTmFtZSA9IGl0ZW0uaGVhZGVyTmFtZTtcblx0XHRcdH1cblx0XHR9KTtcblx0XHRjb25zdCByZXN1bHQgPSB0aGlzLmdyaWQuYXBpLmFwcGx5VHJhbnNhY3Rpb24oeyByZW1vdmU6IGRlbGV0ZWRSb3dzIH0pO1xuXHRcdHJlc3VsdD8ucmVtb3ZlLmZvckVhY2goKG5vZGU6IGFueSkgPT4ge1xuXHRcdFx0Y29uc3Qgcm93SW5kZXggPSBub2RlLnNvdXJjZVJvd0luZGV4ID8/IG5vZGUucm93SW5kZXg7XG5cdFx0XHRpZiAocm93SW5kZXggPT0gbnVsbCkge1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0XHR0aGlzLnVwc2VydCgpPy5zdWJzZXJ0W3RoaXMuc3ViSW5kZXhdWydtYXB0bXAnXS5kZWxldGUocm93SW5kZXghKTtcblx0XHRcdHRoaXMudXBzZXJ0KCk/LnN1YnNlcnRbdGhpcy5zdWJJbmRleF1bJ2xvZ3RtcCddLmRlbGV0ZShyb3dJbmRleCEgKyB0aGlzLm1haW5GaWVsZCEpO1xuXHRcdFx0QXJyYXkuZnJvbSh0aGlzLnVwc2VydCgpPy5zdWJzZXJ0W3RoaXMuc3ViSW5kZXhdWydtYXB0bXAnXT8uZW50cmllcygpIHx8IFtdKS5mb3JFYWNoKChba2V5LCB2YWx1ZV06IGFueSkgPT4ge1xuXHRcdFx0XHRpZiAoIXZhbHVlLmlkICYmIGtleSA+IHJvd0luZGV4KSB7XG5cdFx0XHRcdFx0dGhpcy51cHNlcnQoKT8uc3Vic2VydFt0aGlzLnN1YkluZGV4XVsnbWFwdG1wJ10uZGVsZXRlKGtleSk7XG5cdFx0XHRcdH1cblx0XHRcdH0pO1xuXHRcdFx0QXJyYXkuZnJvbSh0aGlzLnVwc2VydCgpPy5zdWJzZXJ0W3RoaXMuc3ViSW5kZXhdWydsb2d0bXAnXT8uZW50cmllcygpIHx8IFtdKS5mb3JFYWNoKChba2V5LCB2YWx1ZV06IGFueSkgPT4ge1xuXHRcdFx0XHRjb25zdCBpbmRleCA9IFN0cmluZyhrZXkpLm1hdGNoKC9eXFxkKy8pPy5bMF07XG5cdFx0XHRcdGlmICghdmFsdWUuaWQgJiYgaW5kZXggIT0gbnVsbCAmJiBOdW1iZXIoaW5kZXgpID4gcm93SW5kZXgpIHtcblx0XHRcdFx0XHR0aGlzLnVwc2VydCgpPy5zdWJzZXJ0W3RoaXMuc3ViSW5kZXhdWydsb2d0bXAnXS5kZWxldGUoa2V5KTtcblx0XHRcdFx0fVxuXHRcdFx0fSk7XG5cdFx0fSk7XG5cdFx0dGhpcy5ncmlkLmFwaS5mb3JFYWNoTm9kZSgobm9kZTogYW55KSA9PiB7XG5cdFx0XHRjb25zdCByb3dJbmRleCA9IG5vZGUucm93SW5kZXg7XG5cdFx0XHRpZiAocm93SW5kZXggPT0gbnVsbCB8fCAhbm9kZS5kYXRhKSB7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblx0XHRcdGlmICghbm9kZS5kYXRhLmlkKSB7XG5cdFx0XHRcdHRoaXMudXBzZXJ0KCk/LnN1YnNlcnRbdGhpcy5zdWJJbmRleF1bJ21hcHRtcCddLnNldChyb3dJbmRleCEsIG5vZGUuZGF0YSk7XG5cdFx0XHRcdHRoaXMudXBzZXJ0KCk/LnN1YnNlcnRbdGhpcy5zdWJJbmRleF1bJ2xvZ3RtcCddLnNldChyb3dJbmRleCEgKyB0aGlzLm1haW5GaWVsZCEsIHtcblx0XHRcdFx0XHRuZXdWYWx1ZTogbm9kZS5kYXRhW3RoaXMubWFpbkZpZWxkXSxcblx0XHRcdFx0XHRpZDogMCxcblx0XHRcdFx0XHRsYWJlbDogaGVhZGVyTmFtZSxcblx0XHRcdFx0fSk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRBcnJheS5mcm9tKHRoaXMudXBzZXJ0KCk/LnN1YnNlcnRbdGhpcy5zdWJJbmRleF1bJ21hcHRtcCddPy5lbnRyaWVzKCkgfHwgW10pLmZvckVhY2goKFtrZXksIHZhbHVlXTogYW55KSA9PiB7XG5cdFx0XHRcdFx0aWYgKHZhbHVlLmlkID09PSBub2RlLmRhdGEuaWQgJiYga2V5ICE9IHJvd0luZGV4KSB7XG5cdFx0XHRcdFx0XHR0aGlzLnVwc2VydCgpPy5zdWJzZXJ0W3RoaXMuc3ViSW5kZXhdWydtYXB0bXAnXS5kZWxldGUoa2V5KTtcblx0XHRcdFx0XHRcdHRoaXMudXBzZXJ0KCk/LnN1YnNlcnRbdGhpcy5zdWJJbmRleF1bJ21hcHRtcCddLnNldChyb3dJbmRleCwgdmFsdWUpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSk7XG5cdFx0XHRcdEFycmF5LmZyb20odGhpcy51cHNlcnQoKT8uc3Vic2VydFt0aGlzLnN1YkluZGV4XVsnbG9ndG1wJ10/LmVudHJpZXMoKSB8fCBbXSkuZm9yRWFjaCgoW2tleSwgdmFsdWVdOiBhbnkpID0+IHtcblx0XHRcdFx0XHRpZiAodmFsdWUuaWQgPT0gbm9kZS5kYXRhLmlkKSB7XG5cdFx0XHRcdFx0XHRjb25zdCBpbmRleCA9IFN0cmluZyhrZXkpLm1hdGNoKC9eXFxkKy8pPy5bMF07XG5cdFx0XHRcdFx0XHRpZiAoaW5kZXggIT0gbnVsbCAmJiBOdW1iZXIoaW5kZXgpICE9IHJvd0luZGV4KSB7XG5cdFx0XHRcdFx0XHRcdGNvbnN0IG5ld0tleSA9IFN0cmluZyhrZXkpLnJlcGxhY2UoL15cXGQrLywgYCR7cm93SW5kZXh9YCk7XG5cdFx0XHRcdFx0XHRcdHRoaXMudXBzZXJ0KCk/LnN1YnNlcnRbdGhpcy5zdWJJbmRleF1bJ2xvZ3RtcCddLmRlbGV0ZShrZXkpO1xuXHRcdFx0XHRcdFx0XHR0aGlzLnVwc2VydCgpPy5zdWJzZXJ0W3RoaXMuc3ViSW5kZXhdWydsb2d0bXAnXS5zZXQobmV3S2V5LCB2YWx1ZSk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KTtcblx0XHRcdH1cblx0XHR9KTtcblx0XHRsZXQgZHQ6IGFueVtdID0gW107XG5cdFx0dGhpcy51cHNlcnQoKT8uc3Vic2VydFt0aGlzLnN1YkluZGV4XVsnbWFwdG1wJ10uZm9yRWFjaCgodmFsdWU6IGFueSwga2V5OiBhbnkpID0+IHtcblx0XHRcdGR0LnB1c2godmFsdWUpO1xuXHRcdH0pO1xuXHRcdHRoaXMudXBzZXJ0KClbJ3N1YnNlcnQnXVt0aGlzLnN1YkluZGV4XVsnc3ViRGF0YSddID0gZHQ7XG5cdFx0dGhpcy5ncmlkRGF0YUNoYW5nZWQuZW1pdCgpO1xuXHRcdHRoaXMuYWp1c3RHcmlkSGVpZ2h0KCk7XG5cdH1cblxuXHRzZWxlY3RSb3dzRGVsZXRlZChkZWxldGVkUm93czogYW55W10pIHtcblx0XHRsZXQgaGVhZGVyTmFtZSA9ICcnO1xuXHRcdHRoaXMudG9PcHRpb25zKCkuY29sdW1uRGVmcz8uZm9yRWFjaCgoaXRlbTogYW55KSA9PiB7XG5cdFx0XHRpZiAoaXRlbS5maWVsZCA9PSB0aGlzLm1haW5GaWVsZCkge1xuXHRcdFx0XHRoZWFkZXJOYW1lID0gaXRlbS5oZWFkZXJOYW1lO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHRcdGNvbnN0IHJlc3VsdCA9IHRoaXMuZ3JpZC5hcGkuYXBwbHlUcmFuc2FjdGlvbih7IHJlbW92ZTogZGVsZXRlZFJvd3MgfSk7XG5cdFx0cmVzdWx0Py5yZW1vdmUuZm9yRWFjaCgobm9kZSkgPT4ge1xuXHRcdFx0Ly8gY29uc29sZS5sb2coJ25vZGUtLS0nLG5vZGUuc291cmNlUm93SW5kZXgpO1xuXHRcdFx0bGV0IGtleSA9IG5vZGUuc291cmNlUm93SW5kZXggKyB0aGlzLm1haW5GaWVsZCE7XG5cdFx0XHR0aGlzLnVwc2VydCgpPy5zdWJzZXJ0W3RoaXMuc3ViSW5kZXhdWydsb2d0bXAnXS5kZWxldGUoa2V5KTtcblx0XHRcdHRoaXMudXBzZXJ0KCk/LnN1YnNlcnRbdGhpcy5zdWJJbmRleF1bJ21hcHRtcCddLmRlbGV0ZShub2RlLnNvdXJjZVJvd0luZGV4KTtcblx0XHRcdHRoaXMudXBzZXJ0KCk/LnN1YnNlcnRbdGhpcy5zdWJJbmRleF1bJ21hcHRtcCddLmZvckVhY2goKHZhbHVlOiBhbnksIGtleTogYW55KSA9PiB7XG5cdFx0XHRcdGlmICghdmFsdWUuaWQgJiYga2V5ID4gbm9kZS5zb3VyY2VSb3dJbmRleCkge1xuXHRcdFx0XHRcdHRoaXMudXBzZXJ0KCk/LnN1YnNlcnRbdGhpcy5zdWJJbmRleF1bJ21hcHRtcCddLmRlbGV0ZShrZXkpO1xuXHRcdFx0XHR9XG5cdFx0XHR9KTtcblx0XHRcdHRoaXMudXBzZXJ0KCk/LnN1YnNlcnRbdGhpcy5zdWJJbmRleF1bJ2xvZ3RtcCddLmZvckVhY2goKHZhbHVlOiBhbnksIGtleTogYW55KSA9PiB7XG5cdFx0XHRcdGxldCBpbmRleCA9IGtleS5tYXRjaCgvXlxcZCsvKVswXTtcblx0XHRcdFx0aWYgKCF2YWx1ZS5pZCAmJiBpbmRleCA+IG5vZGUuc291cmNlUm93SW5kZXgpIHtcblx0XHRcdFx0XHR0aGlzLnVwc2VydCgpPy5zdWJzZXJ0W3RoaXMuc3ViSW5kZXhdWydsb2d0bXAnXS5kZWxldGUoa2V5KTtcblx0XHRcdFx0fVxuXHRcdFx0fSk7XG5cdFx0fSk7XG5cdFx0dGhpcy5ncmlkLmFwaS5mb3JFYWNoTm9kZSgobm9kZTogYW55KSA9PiB7XG5cdFx0XHRjb25zdCByb3dJbmRleCA9IG5vZGUucm93SW5kZXg7XG5cdFx0XHRpZiAoIW5vZGUuZGF0YS5pZCkge1xuXHRcdFx0XHR0aGlzLnVwc2VydCgpPy5zdWJzZXJ0W3RoaXMuc3ViSW5kZXhdWydtYXB0bXAnXS5zZXQocm93SW5kZXghLCBub2RlLmRhdGEpO1xuXHRcdFx0XHR0aGlzLnVwc2VydCgpPy5zdWJzZXJ0W3RoaXMuc3ViSW5kZXhdWydsb2d0bXAnXS5zZXQocm93SW5kZXghICsgdGhpcy5tYWluRmllbGQhLCB7XG5cdFx0XHRcdFx0bmV3VmFsdWU6IG5vZGUuZGF0YVt0aGlzLm1haW5GaWVsZF0sXG5cdFx0XHRcdFx0aWQ6IDAsXG5cdFx0XHRcdFx0bGFiZWw6IGhlYWRlck5hbWUsXG5cdFx0XHRcdH0pO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0dGhpcy51cHNlcnQoKT8uc3Vic2VydFt0aGlzLnN1YkluZGV4XVsnbWFwdG1wJ10uZm9yRWFjaCgodmFsdWU6IGFueSwga2V5OiBhbnkpID0+IHtcblx0XHRcdFx0XHRpZiAodmFsdWUuaWQgPT09IG5vZGUuZGF0YS5pZCAmJiBrZXkgIT0gcm93SW5kZXgpIHtcblx0XHRcdFx0XHRcdHRoaXMudXBzZXJ0KCk/LnN1YnNlcnRbdGhpcy5zdWJJbmRleF1bJ21hcHRtcCddLmRlbGV0ZShrZXkpO1xuXHRcdFx0XHRcdFx0dGhpcy51cHNlcnQoKT8uc3Vic2VydFt0aGlzLnN1YkluZGV4XVsnbWFwdG1wJ10uc2V0KHJvd0luZGV4LCB2YWx1ZSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KTtcblx0XHRcdFx0dGhpcy51cHNlcnQoKT8uc3Vic2VydFt0aGlzLnN1YkluZGV4XVsnbG9ndG1wJ10uZm9yRWFjaCgodmFsdWU6IGFueSwga2V5OiBhbnkpID0+IHtcblx0XHRcdFx0XHRpZiAodmFsdWUuaWQgPT0gbm9kZS5kYXRhLmlkKSB7XG5cdFx0XHRcdFx0XHRsZXQgaW5kZXggPSBrZXkubWF0Y2goL15cXGQrLylbMF07XG5cdFx0XHRcdFx0XHRpZiAoaW5kZXggIT0gcm93SW5kZXgpIHtcblx0XHRcdFx0XHRcdFx0bGV0IG5ld0tleSA9IGtleS5yZXBsYWNlKC9eXFxkKy8sIHJvd0luZGV4KTtcblx0XHRcdFx0XHRcdFx0dGhpcy51cHNlcnQoKT8uc3Vic2VydFt0aGlzLnN1YkluZGV4XVsnbG9ndG1wJ10uZGVsZXRlKGtleSk7XG5cdFx0XHRcdFx0XHRcdHRoaXMudXBzZXJ0KCk/LnN1YnNlcnRbdGhpcy5zdWJJbmRleF1bJ2xvZ3RtcCddLnNldChuZXdLZXksIHZhbHVlKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHRcdGxldCBkdDogYW55W10gPSBbXTtcblx0XHR0aGlzLnVwc2VydCgpPy5zdWJzZXJ0W3RoaXMuc3ViSW5kZXhdWydtYXB0bXAnXS5mb3JFYWNoKCh2YWx1ZTogYW55LCBrZXk6IGFueSkgPT4ge1xuXHRcdFx0ZHQucHVzaCh2YWx1ZSk7XG5cdFx0fSk7XG5cdFx0dGhpcy51cHNlcnQoKVsnc3Vic2VydCddW3RoaXMuc3ViSW5kZXhdWydzdWJEYXRhJ10gPSBkdDtcblx0XHR0aGlzLmdyaWREYXRhQ2hhbmdlZC5lbWl0KCk7XG5cdFx0dGhpcy5hanVzdEdyaWRIZWlnaHQoKTtcblx0XHQvLyBjb25zb2xlLmxvZygncmVzdWx0LS0tLS0nLCB0aGlzLnVwc2VydCgpKVxuXHR9XG5cblx0Y2xlYXIoKSB7XG5cdFx0aWYgKHRoaXMudG9PcHRpb25zKCkucm93TW9kZWxUeXBlICE9PSAnc2VydmVyU2lkZScpIHtcblx0XHRcdHRoaXMuZ3JpZD8uYXBpLnNldEdyaWRPcHRpb24oJ3Jvd0RhdGEnLCBbXSk7XG5cdFx0fVxuXHRcdHRoaXMudXBzZXJ0KCkhLnN1YnNlcnRbdGhpcy5zdWJJbmRleF0gPSB7XG5cdFx0XHRzdWJNb2RlbE5hbWU6IHRoaXMudG9PcHRpb25zKCkubW9kZWxOYW1lLFxuXHRcdFx0Zms6IHRoaXMudG9PcHRpb25zKCkuZmssXG5cdFx0XHRzdWJEYXRhOiBbXSxcblx0XHRcdG1hcHRtcDogbmV3IE1hcCgpLFxuXHRcdFx0bG9ndG1wOiBuZXcgTWFwKCksXG5cdFx0XHRyZWZlcmVuY2U6IHRoaXMudG9PcHRpb25zKCkucmVmZXJlbmNlLFxuXHRcdH07XG5cdFx0dGhpcy5ncmlkRGF0YUNoYW5nZWQuZW1pdCgpO1xuXHR9XG5cblx0YWRkUm93KCkge1xuXHRcdGlmICh0aGlzLmFkZFR5cGUoKSA9PSAnaGFuZGxlJykge1xuXHRcdFx0bGV0IGl0ZW0gPSB0eXBlb2YgdGhpcy50b09wdGlvbnMoKS5hZGREYXRhQ2IgPT0gJ2Z1bmN0aW9uJyA/IHRoaXMudG9PcHRpb25zKCkuYWRkRGF0YUNiKCkgOiB7fTtcblx0XHRcdGlmICh0aGlzLmdyaWRPcHRpb25zKCkuZHJhZ1NvcnQpIHtcblx0XHRcdFx0bGV0IHRvdGFsQ291bnQgPSB0aGlzLmdyaWQuYXBpLmdldERpc3BsYXllZFJvd0NvdW50KCk7XG5cdFx0XHRcdGl0ZW1bdGhpcy5ncmlkT3B0aW9ucygpLmRyYWdTb3J0IV0gPSB0b3RhbENvdW50ICsgMTtcblx0XHRcdH1cblx0XHRcdHRoaXMuYWN0aW9uLnVwZGF0ZUdyaWRBY3Rpb24oe3R5cGU6J2FkZCcsZGF0YTogW2l0ZW1dfSlcblx0XHRcdHRoaXMuZ3JpZC5hcGkuYXBwbHlUcmFuc2FjdGlvbih7IGFkZDogW2l0ZW1dIH0pO1xuXHRcdFx0dGhpcy5ncmlkRGF0YUNoYW5nZWQuZW1pdCgpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLmFkZEVtaXQuZW1pdCgpO1xuXHRcdH1cblx0XHR0aGlzLmFqdXN0R3JpZEhlaWdodCgpO1xuXHR9XG5cblx0ZGVsUm93cygpIHtcblx0XHRjb25zdCBzZWxlY3RlZE5vZGVzID0gdGhpcy5ncmlkLmFwaS5nZXRTZWxlY3RlZE5vZGVzKCk7XG5cdFx0Y29uc3Qgc2VsZWN0ZWREYXRhID0gc2VsZWN0ZWROb2Rlcy5tYXAoKG5vZGUpID0+IG5vZGUuZGF0YSkgfHwgW107XG5cdFx0bGV0IGlkcyA9IHNlbGVjdGVkRGF0YS5tYXAoKGRhdGEpID0+IGRhdGEuaWQpLmZpbHRlcigodikgPT4gdikgfHwgW107XG5cdFx0aWYgKGlkcy5sZW5ndGggPiAwKSB7XG5cdFx0XHR0aGlzLmRlbGV0ZUVtaXQuZW1pdChpZHMpO1xuXHRcdH0gZWxzZSBpZiAoc2VsZWN0ZWREYXRhLmxlbmd0aCA+IDAgJiYgaWRzLmxlbmd0aCA9PSAwKSB7XG5cdFx0XHR0aGlzLmhhbmRsZURlbGV0ZWRSb3dzKHNlbGVjdGVkRGF0YSk7XG5cdFx0XHR0aGlzLmFjdGlvbi51cGRhdGVHcmlkQWN0aW9uKHt0eXBlOidkZWxldGUnLGRhdGE6IHNlbGVjdGVkRGF0YX0pXG5cdFx0fVxuXHRcdHRoaXMuYWp1c3RHcmlkSGVpZ2h0KCk7XG5cdH1cblxuXHRzZXRTY3JvbGxIZWlnaHQoaGVpZ2h0Pzogc3RyaW5nKSB7XG5cdFx0aWYgKHdpbmRvdy5pbm5lcldpZHRoIDwgMTAyNCAmJiB0aGlzLnRvT3B0aW9ucygpLm1haW5GaWVsZCkge1xuXHRcdFx0dGhpcy5yZW5kZXJlci5yZW1vdmVTdHlsZSh0aGlzLmNvbnRhaW5lclJlZi5uYXRpdmVFbGVtZW50LCAnbWF4LWhlaWdodCcpO1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHRoZWlnaHQgPSBoZWlnaHQgfHwgdGhpcy50b09wdGlvbnMoKS5zY3JvbGxIZWlnaHQ7XG5cdFx0aWYgKGhlaWdodCkge1xuXHRcdFx0dGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmNvbnRhaW5lclJlZi5uYXRpdmVFbGVtZW50LCAnbWF4LWhlaWdodCcsIGhlaWdodCk7XG5cdFx0fVxuXHR9XG5cblx0aW5pdEdyaWRIZWlnaHQoKSB7XG5cdFx0dGhpcy5ob3Jpem9udGFsU2Nyb2xsQmFyT2JzZXJ2ZXIgPSBuZXcgUmVzaXplT2JzZXJ2ZXIoKGVudHJpZXMpID0+IHtcblx0XHRcdGVudHJpZXMuZm9yRWFjaCgoZW50cnkpID0+IHtcblx0XHRcdFx0dGhpcy5ob3Jpem9udGFsU2Nyb2xsQmFySGVpZ2h0ID0gZW50cnkudGFyZ2V0LmNsaWVudEhlaWdodDtcblx0XHRcdFx0dGhpcy5hanVzdEdyaWRIZWlnaHQoKTtcblx0XHRcdH0pO1xuXHRcdH0pO1xuXHRcdHRoaXMuaG9yaXpvbnRhbFNjcm9sbEJhck9ic2VydmVyLm9ic2VydmUodGhpcy5ncmlkUmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignLmFnLWJvZHktaG9yaXpvbnRhbC1zY3JvbGwnKSk7XG5cdFx0dGhpcy52ZXJ0aWNhbFNjcm9sbEJhck9ic2VydmVyID0gbmV3IFJlc2l6ZU9ic2VydmVyKChlbnRyaWVzKSA9PiB7XG5cdFx0XHRlbnRyaWVzLmZvckVhY2goKGVudHJ5KSA9PiB7XG5cdFx0XHRcdHRoaXMudmVydGljYWxTY3JvbGxCYXJXaWR0aCA9IGVudHJ5LnRhcmdldC5jbGllbnRXaWR0aDtcblx0XHRcdFx0dGhpcy5hanVzdEdyaWRIZWlnaHQoKTtcblx0XHRcdH0pO1xuXHRcdH0pO1xuXHRcdHRoaXMudmVydGljYWxTY3JvbGxCYXJPYnNlcnZlci5vYnNlcnZlKHRoaXMuZ3JpZFJlZi5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJy5hZy1ib2R5LXZlcnRpY2FsLXNjcm9sbCcpKTtcblx0XHR0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuZ3JpZFJlZi5uYXRpdmVFbGVtZW50LCAnd2lkdGgnLCAnMTAwJScpO1xuXHRcdHRoaXMuc2V0U2Nyb2xsSGVpZ2h0KCk7XG5cdH1cblxuXHRjYWxjR3JpZE1hcmdpbigpIHtcblx0XHRjb25zdCBtYXJnaW4gPSB0aGlzLnNob3dBY3QoKSAmJiB0aGlzLmF1dGhMZXZlbCgpID49IDMgJiYgKHRoaXMuYWRkVHlwZSgpICE9ICdub25lJyB8fCB0aGlzLnNob3dEZWxldGUoKSkgPyAyIDogMTtcblx0XHRsZXQgYm9yZGVyQm90dG9tID0gMDtcblx0XHRpZiAodGhpcy5ncmlkUmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignLmFnLXJvb3Qtd3JhcHBlcicpKSB7XG5cdFx0XHRib3JkZXJCb3R0b20gPSBwYXJzZUZsb2F0KFxuXHRcdFx0XHR3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSh0aGlzLmdyaWRSZWYubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCcuYWctcm9vdC13cmFwcGVyJykpLmdldFByb3BlcnR5VmFsdWUoJ2JvcmRlci1ib3R0b20td2lkdGgnKSxcblx0XHRcdCk7XG5cdFx0fVxuXHRcdHJldHVybiBNYXRoLm1pbigyLCBtYXJnaW4gKyBib3JkZXJCb3R0b20pO1xuXHR9XG5cblx0Z2V0Q29udGFpbmVySGVpZ2h0KCkge1xuXHRcdGxldCBjb250YWluZXIgPSA1NDY7XG5cdFx0aWYgKHRoaXMuZ3JpZFJlZi5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJy5hZy1jZW50ZXItY29scy1jb250YWluZXInKSkge1xuXHRcdFx0Y29udGFpbmVyID0gcGFyc2VGbG9hdChcblx0XHRcdFx0d2luZG93LmdldENvbXB1dGVkU3R5bGUodGhpcy5ncmlkUmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignLmFnLWNlbnRlci1jb2xzLWNvbnRhaW5lcicpKS5nZXRQcm9wZXJ0eVZhbHVlKCdoZWlnaHQnKSxcblx0XHRcdCk7XG5cdFx0fVxuXHRcdHJldHVybiBjb250YWluZXI7XG5cdH1cblxuXHRhanVzdEdyaWRIZWlnaHQoKSB7XG5cdFx0bGV0IGNvbnRhaW5lciA9IHRoaXMuZ2V0Q29udGFpbmVySGVpZ2h0KCk7XG5cdFx0bGV0IGhlYWRlckhlaWdodCA9IHRoaXMuZ3JpZE9wdGlvbnMoKS5oZWFkZXJIZWlnaHQgPz8gNDk7XG5cdFx0bGV0IG1hcmdpbiA9IHRoaXMuY2FsY0dyaWRNYXJnaW4oKTtcblx0XHRsZXQgdG90YWwgPSBjb250YWluZXIgKyBtYXJnaW4gKyBoZWFkZXJIZWlnaHQ7XG5cdFx0Y29uc3QgaGVpZ2h0ID0gTWF0aC5tYXgodG90YWwsIGhlYWRlckhlaWdodCArIDQyICsgbWFyZ2luKTtcblx0XHR0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xuXHRcdFx0dGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmdyaWRSZWYubmF0aXZlRWxlbWVudCwgJ2hlaWdodCcsIGAke2hlaWdodCArIHRoaXMuaG9yaXpvbnRhbFNjcm9sbEJhckhlaWdodH1weGApO1xuXHRcdFx0dGhpcy5hanVzdEdyaWRTdGF0ZSgpO1xuXHRcdH0pO1xuXHR9XG5cblx0YWp1c3RHcmlkU3RhdGUoKSB7XG5cdFx0dGhpcy5ub1Jvd3MgPSB0aGlzLmdyaWQuYXBpLmdldERpc3BsYXllZFJvd0NvdW50KCkgPT09IDA7XG5cdFx0dGhpcy5ub1Jvd3MgPyB0aGlzLmdyaWQuYXBpLnNob3dOb1Jvd3NPdmVybGF5KCkgOiB0aGlzLmdyaWQuYXBpLmhpZGVPdmVybGF5KCk7XG5cdFx0dGhpcy5zaG93SG9yaXpvbnRhbCA9IHRoaXMuYWN0UG9zKCkgPT0gJ2JvdHRvbScgJiYgKHRoaXMubm9Sb3dzIHx8ICEhdGhpcy52ZXJ0aWNhbFNjcm9sbEJhcldpZHRoKTtcblx0fVxuXG5cdGNhbmNlbFNlbGVjdCgpIHtcblx0XHR0aGlzLmdldEdyaWQoKS5hcGkuZGVzZWxlY3RBbGwoKTtcblx0XHR0aGlzLnNlbGVjdGVkUm93cy5zZXQoW10pO1xuXHR9XG5cblx0ZWRpdGluZ0ZpeCgpIHtcblx0XHRkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIChldmVudDogYW55KSA9PiB7XG5cdFx0XHRpZiAoIXRoaXMuZ3JpZD8uYXBpPy5nZXRFZGl0aW5nQ2VsbHMoKT8ubGVuZ3RoKSB7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblx0XHRcdGNvbnN0IGdyaWRFbGVtZW50OiBhbnkgPSB0aGlzLmdyaWRSZWYubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCcuYWctcm9vdC13cmFwcGVyJyk7XG5cdFx0XHRpZiAoIWdyaWRFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCkpIHtcblx0XHRcdFx0dGhpcy5ncmlkLmFwaS5zdG9wRWRpdGluZygpO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHR9XG5cdHJvd0RyYWdFbnRlcihldmVudDogYW55KSB7XG5cdFx0Y29uc29sZS5sb2coJ2V2ZW50LS0tJywgZXZlbnQpO1xuXHRcdHRoaXMuZHJhZ0JlZm9yZUluZGV4ID0gZXZlbnQub3ZlckluZGV4O1xuXHR9XG5cblx0b25Sb3dEcmFnRW5kKGV2ZW50OiBSb3dEcmFnRW5kRXZlbnQpIHtcblxuXHRcdGlmICghdGhpcy5ncmlkT3B0aW9ucygpLmRyYWdTb3J0KSByZXR1cm47XG5cblx0XHRjb25zdCBzb3J0RmllbGQgPSB0aGlzLmdyaWRPcHRpb25zKCkuZHJhZ1NvcnQhO1xuXHRcdGNvbnN0IGNvbERlZnMgPSBldmVudC5hcGkuZ2V0Q29sdW1uRGVmcygpO1xuXHRcdGNvbnN0IGNvbEl0ZW06IGFueSA9IGNvbERlZnM/LmZpbmQoKHY6IGFueSkgPT4gdi5maWVsZCA9PT0gc29ydEZpZWxkKSB8fCB7fTtcblxuXHRcdGxldCBtYXAgPSBuZXcgTWFwKCk7XG5cdFx0bGV0IGxvZ01hcCA9IG5ldyBNYXAoKTtcblx0XHRsZXQgZHQ6IGFueVtdID0gW107XG5cblx0XHRjb25zdCB1cHNlcnQgPSB0aGlzLnVwc2VydCgpO1xuXHRcdGlmICghdXBzZXJ0KSByZXR1cm47XG5cblx0XHRjb25zdCBtYXBUbXA6IE1hcDxhbnksIGFueT4gPSB1cHNlcnQuc3Vic2VydFt0aGlzLnN1YkluZGV4XVsnbWFwdG1wJ107XG5cdFx0Y29uc3QgbG9nVG1wOiBNYXA8YW55LCBhbnk+ID0gdXBzZXJ0LnN1YnNlcnRbdGhpcy5zdWJJbmRleF1bJ2xvZ3RtcCddO1xuXG5cdFx0dGhpcy5ncmlkPy5hcGkuZm9yRWFjaE5vZGUoKG5vZGUsIGluZGV4KSA9PiB7XG5cblx0XHRcdGNvbnN0IGlkID0gbm9kZS5kYXRhLmlkO1xuXHRcdFx0Y29uc3QgbmV3U29ydCA9IGluZGV4ICsgMTtcblx0XHRcdGNvbnN0IG9sZFNvcnQgPSBub2RlLmRhdGFbc29ydEZpZWxkXTtcblx0XHRcdC8vIOabtOaWsCBncmlkIOaVsOaNrlxuXHRcdFx0bm9kZS5kYXRhW3NvcnRGaWVsZF0gPSBuZXdTb3J0O1xuXHRcdFx0bm9kZS5zZXREYXRhVmFsdWUoc29ydEZpZWxkLCBuZXdTb3J0KTtcblx0XHRcdC8vIGNvbnNvbGUubG9nKCdub2RlLS0tLScsIG5vZGUuZGF0YSwgaW5kZXgsbmV3U29ydCk7XG5cdFx0XHRpZiAoIWlkKSB7XG5cblx0XHRcdFx0bWFwVG1wLnNldChpbmRleCwge1xuXHRcdFx0XHRcdC4uLm5vZGUuZGF0YSxcblx0XHRcdFx0XHRbc29ydEZpZWxkXTogbmV3U29ydFxuXHRcdFx0XHR9KTtcblxuXHRcdFx0fSBlbHNlIHtcblxuXHRcdFx0XHRtYXAuc2V0KGluZGV4LCB7XG5cdFx0XHRcdFx0aWQ6IGlkLFxuXHRcdFx0XHRcdFtzb3J0RmllbGRdOiBuZXdTb3J0XG5cdFx0XHRcdH0pO1xuXG5cdFx0XHR9XG5cdFx0XHRpZiAoaWQpIHtcblx0XHRcdFx0Y29uc3Qga2V5ID0gaWQgKyAnXycgKyBzb3J0RmllbGQ7XG5cdFx0XHRcdGxldCBvbGRMb2cgPSBsb2dUbXAuZ2V0KGtleSk7XG5cblx0XHRcdFx0aWYgKG9sZExvZykge1xuXHRcdFx0XHRcdG9sZExvZy5uZXdWYWx1ZSA9IG5ld1NvcnQ7XG5cdFx0XHRcdFx0bG9nTWFwLnNldChrZXksIG9sZExvZyk7XG5cblx0XHRcdFx0fSBlbHNlIGlmIChvbGRTb3J0ICE9PSBuZXdTb3J0KSB7XG5cdFx0XHRcdFx0bG9nTWFwLnNldChrZXksIHtcblx0XHRcdFx0XHRcdGlkOiBpZCxcblx0XHRcdFx0XHRcdGxhYmVsOiBjb2xJdGVtWydoZWFkZXJOYW1lJ10gfHwgJ+aOkuW6jycsXG5cdFx0XHRcdFx0XHRvbGRWYWx1ZTogb2xkU29ydCxcblx0XHRcdFx0XHRcdG5ld1ZhbHVlOiBuZXdTb3J0XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9KTtcblx0aWYgKHVwc2VydCkge1xuXHRcdHVwc2VydC5zdWJzZXJ0W3RoaXMuc3ViSW5kZXhdWydtYXB0bXAnXSA9XG5cdFx0XHRcdG5ldyBNYXAoWy4uLm1hcFRtcCwgLi4ubWFwXSk7XG5cdFx0XHR1cHNlcnQuc3Vic2VydFt0aGlzLnN1YkluZGV4XVsnbG9ndG1wJ10gPVxuXHRcdFx0XHRuZXcgTWFwKFsuLi5sb2dUbXAsIC4uLmxvZ01hcF0pO1xuXG5cdFx0XHR1cHNlcnQuc3Vic2VydFt0aGlzLnN1YkluZGV4XVsnbWFwdG1wJ10uZm9yRWFjaCgodmFsdWU6IGFueSkgPT4ge1xuXHRcdFx0XHRkdC5wdXNoKHZhbHVlKTtcblx0XHRcdH0pO1xuXG5cdFx0XHR1cHNlcnQuc3Vic2VydFt0aGlzLnN1YkluZGV4XVsnc3ViRGF0YSddID0gZHQ7XG5cdFx0XHRjb25zb2xlLmxvZygnZHJhZ1Vwc2VydC0tLS0nLCB1cHNlcnQpO1xuXHRcdH1cblx0fVxuLy8g5pe26Ze06IyD5Zu05re75Yqg5pe25YiG56eSXG5cdGlzUmFuZ2UoY29sdW1uRmlsdGVyOkNvbHVtbkZpbHRlcltdKXtcblx0XHRjb25zdCBpc0VpeHN0ID0gY29sdW1uRmlsdGVyLnNvbWUoKHY6YW55KSA9PiB2LnR5cGUgPT0gJ2luUmFuZ2UnKVxuXHRcdGlmKGlzRWl4c3Qpe1xuXHRcdFx0bGV0IGNvbHMgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGNvbHVtbkZpbHRlcikpXG5cdFx0XHRjb2xzLmZvckVhY2goKGl0ZW06Q29sdW1uRmlsdGVyKSA9PiB7XG5cdFx0XHRcdGlmKGl0ZW0udHlwZSA9PSAnaW5SYW5nZScpe1xuXHRcdFx0XHRcdGl0ZW0uZnJvbSA9IGAke2l0ZW0uZnJvbX0gMDA6MDA6MDBgXG5cdFx0XHRcdFx0aXRlbS50byA9IGAke2l0ZW0udG99IDIzOjU5OjU5YFxuXHRcdFx0XHR9XG5cdFx0XHR9KVxuXHRcdFx0cmV0dXJuIGNvbHNcblx0XHR9XG5cdFx0cmV0dXJuIGNvbHVtbkZpbHRlclxuXHR9XG59XG4iLCJAaWYgKGluaXRHcmlkKSB7XG5cdDxkaXZcblx0XHQjZ3JpZENvbnRhaW5lclxuXHRcdFtjbGFzc109XCJcblx0XHRcdCh0b09wdGlvbnMoKS50cmVlRGF0YUZpZWxkID8gJ3RyZWUtZ3JpZCAnIDogJycpICtcblx0XHRcdCdncmlkLWNvbnRhaW5lciB3LWZ1bGwgZmxleCBqdXN0aWZ5LWJldHdlZW4gJyArXG5cdFx0XHQoYWN0UG9zKCkgPT0gJ2JvdHRvbScgPyAnZmxleC1jb2wnIDogJ2ZsZXgtY29sLXJldmVyc2UnKVxuXHRcdFwiPlxuXHRcdDxhZy1ncmlkLWFuZ3VsYXJcblx0XHRcdFt0aGVtZV09XCJteVRoZW1lKClcIlxuXHRcdFx0W2NvbHVtbkRlZnNdPVwiY29sdW1uRGVmc1wiXG5cdFx0XHRbZ3JpZE9wdGlvbnNdPVwidG9PcHRpb25zKClcIlxuXHRcdFx0W2xvY2FsZVRleHRdPVwibG9jYWxlVGV4dFwiXG5cdFx0XHRbY29tcG9uZW50c109XCJjb21wb25lbnRzXCJcblx0XHRcdFtzdXBwcmVzc0FnZ0Z1bmNJbkhlYWRlcl09XCJ0cnVlXCJcblx0XHRcdFtzdXBwcmVzc0RyYWdMZWF2ZUhpZGVzQ29sdW1uc109XCJ0cnVlXCJcblx0XHRcdFtzdXBwcmVzc0xhc3RFbXB0eUxpbmVPblBhc3RlXT1cInRydWVcIlxuXHRcdFx0W3VuZG9SZWRvQ2VsbEVkaXRpbmddPVwidG9PcHRpb25zKCkudW5kb1JlZG9DZWxsRWRpdGluZ1wiXG5cdFx0XHRbdW5kb1JlZG9DZWxsRWRpdGluZ0xpbWl0XT1cInRvT3B0aW9ucygpLnVuZG9SZWRvQ2VsbEVkaXRpbmdMaW1pdFwiXG5cdFx0XHRbcm93QnVmZmVyXT1cIjMwXCJcblx0XHRcdChjZWxsVmFsdWVDaGFuZ2VkKT1cImNlbGxWYWx1ZUNoYW5nZWQoJGV2ZW50KVwiXG5cdFx0XHQoc2VsZWN0aW9uQ2hhbmdlZCk9XCJvblNlbGVjdGlvbkNoYW5nZWQoJGV2ZW50KVwiXG5cdFx0XHQocm93R3JvdXBPcGVuZWQpPVwib25Sb3dHcm91cE9wZW5lZCgpXCJcblx0XHRcdChncmlkUmVhZHkpPVwib25HcmlkUmVhZHkoJGV2ZW50KVwiXG5cdFx0XHQocm93RHJhZ0VuZCk9XCJvblJvd0RyYWdFbmQoJGV2ZW50KVwiXG5cdFx0XHQocm93RHJhZ0VudGVyKT1cInJvd0RyYWdFbnRlcigkZXZlbnQpXCJcblx0XHRcdFtzaW5nbGVDbGlja0VkaXRdPVwic2luZ2xlQ2xpY2tFZGl0KClcIiAvPlxuXHRcdEBpZiAoc2hvd0FjdCgpICYmIGF1dGhMZXZlbCgpID49IDMgJiYgKChhZGRUeXBlKCkgIT0gJ25vbmUnICYmICFhZGRIaWRkZW4oKSkgfHwgKHNob3dEZWxldGUoKSAmJiAhZGVsZXRlSGlkZGVuKCkpIHx8IChzdWJTYXZlVmlzaWJsZSgpICYmICFzdWJTYXZlSGlkZGVuKCkpKSkge1xuXHRcdFx0QGlmIChzaG93SG9yaXpvbnRhbCkge1xuXHRcdFx0XHQ8ZGl2IGNsYXNzPVwidy1mdWxsIGJvcmRlci10IGJvcmRlci1ncmF5LTMwMFwiPjwvZGl2PlxuXHRcdFx0fVxuXHRcdFx0PGRpdiBjbGFzcz1cImZsZXgganVzdGlmeS1lbmQgcHktWzVweF0gcHItWzhweF1cIj5cblx0XHRcdFx0QGlmIChzdWJTYXZlVmlzaWJsZSgpICYmICFzdWJTYXZlSGlkZGVuKCkpIHtcblx0XHRcdFx0XHQ8cC1idXR0b25cblx0XHRcdFx0XHRcdGljb249XCJwaSBwaS1jbG91ZC11cGxvYWRcIlxuXHRcdFx0XHRcdFx0W3RleHRdPVwidHJ1ZVwiXG5cdFx0XHRcdFx0XHRzZXZlcml0eT1cInByaW1hcnlcIlxuXHRcdFx0XHRcdFx0W2Rpc2FibGVkXT1cInN1YlNhdmVEaXNhYmxlZCgpXCJcblx0XHRcdFx0XHRcdChvbkNsaWNrKT1cInN1YlNhdmVFbWl0LmVtaXQoKVwiIC8+XG5cdFx0XHRcdH1cblx0XHRcdFx0QGlmIChhZGRUeXBlKCkgIT0gJ25vbmUnICYmICFhZGRIaWRkZW4oKSkge1xuXHRcdFx0XHRcdDxwLWJ1dHRvblxuXHRcdFx0XHRcdFx0aWNvbj1cInBpIHBpLXBsdXNcIlxuXHRcdFx0XHRcdFx0W3RleHRdPVwidHJ1ZVwiXG5cdFx0XHRcdFx0XHRzZXZlcml0eT1cInN1Y2Nlc3NcIlxuXHRcdFx0XHRcdFx0W2Rpc2FibGVkXT1cImdyaWREaXNhYmxlKClcIlxuXHRcdFx0XHRcdFx0KG9uQ2xpY2spPVwiYWRkUm93KClcIiAvPlxuXHRcdFx0XHR9XG5cdFx0XHRcdEBpZiAoc2hvd0RlbGV0ZSgpICYmICFkZWxldGVIaWRkZW4oKSkge1xuXHRcdFx0XHRcdDxwLWJ1dHRvblxuXHRcdFx0XHRcdFx0aWNvbj1cInBpIHBpLXRyYXNoXCJcblx0XHRcdFx0XHRcdFt0ZXh0XT1cInRydWVcIlxuXHRcdFx0XHRcdFx0c2V2ZXJpdHk9XCJkYW5nZXJcIlxuXHRcdFx0XHRcdFx0W2Rpc2FibGVkXT1cImdyaWREaXNhYmxlKClcIlxuXHRcdFx0XHRcdFx0KG9uQ2xpY2spPVwiZGVsUm93cygpXCIgLz5cblx0XHRcdFx0fVxuXHRcdFx0PC9kaXY+XG5cdFx0fVxuXHQ8L2Rpdj5cbn1cbiJdfQ==
|