qms-angular 1.1.55 → 1.1.57
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundles/qms-angular.umd.js +32 -18
- package/bundles/qms-angular.umd.js.map +1 -1
- package/esm2015/lib/components/qms-nav-drawer/qms-nav-drawer.component.js +3 -3
- package/esm2015/lib/components/related/popup/related-popup.component.js +17 -7
- package/esm2015/lib/components/select-access-dialog/select-access-dialog.component.js +5 -2
- package/esm2015/lib/components/select-department-tree/select-department-tree.component.js +2 -2
- package/esm2015/lib/model/en.js +5 -3
- package/esm2015/lib/model/no.js +5 -3
- package/esm2015/lib/model/sv.js +5 -3
- package/esm2015/lib/qms-ckeditor-components/qms-ckeditor.component.js +1 -4
- package/fesm2015/qms-angular.js +35 -20
- package/fesm2015/qms-angular.js.map +1 -1
- package/lib/model/en.d.ts +2 -0
- package/lib/model/no.d.ts +2 -0
- package/lib/model/sv.d.ts +2 -0
- package/package.json +1 -1
- package/qms-angular.metadata.json +1 -1
@@ -262,7 +262,9 @@ export class RelatedPopupComponent {
|
|
262
262
|
return itemType;
|
263
263
|
}
|
264
264
|
removeCheckedNodeList(item) {
|
265
|
-
this.videoData
|
265
|
+
if (this.videoData) {
|
266
|
+
this.videoData.src = this.originVideoDataSrc;
|
267
|
+
}
|
266
268
|
this.selectedData = [];
|
267
269
|
this.selectedData2 = [];
|
268
270
|
this.checkedNodeList = this.checkedNodeList.filter(x => { var _a, _b; return (x.id.toLowerCase() !== item.id.toLowerCase() || ((_a = x.parentId) === null || _a === void 0 ? void 0 : _a.toLowerCase()) !== ((_b = item.parentId) === null || _b === void 0 ? void 0 : _b.toLowerCase())); });
|
@@ -885,7 +887,7 @@ export class RelatedPopupComponent {
|
|
885
887
|
});
|
886
888
|
if (!this.canUploadImage && !this.canUploadVideo)
|
887
889
|
return this.dialogRef.close(this.checkedNodeList);
|
888
|
-
if (this.originVideoDataSrc && !this.videoData.src) {
|
890
|
+
if (this.originVideoDataSrc && this.videoData && !this.videoData.src) {
|
889
891
|
this.videoData.src = this.originVideoDataSrc;
|
890
892
|
}
|
891
893
|
this.dialogRef.close(this.videoData);
|
@@ -1131,10 +1133,14 @@ export class RelatedPopupComponent {
|
|
1131
1133
|
});
|
1132
1134
|
if (index >= 0) {
|
1133
1135
|
this.commonCheckedList = this.commonCheckedList.filter((_, ind) => ind !== index);
|
1134
|
-
this.videoData
|
1136
|
+
if (this.videoData) {
|
1137
|
+
this.videoData.src = this.originVideoDataSrc;
|
1138
|
+
}
|
1135
1139
|
}
|
1136
1140
|
else {
|
1137
|
-
this.videoData
|
1141
|
+
if (this.videoData) {
|
1142
|
+
this.videoData.src = `/video?id=${node.id}`;
|
1143
|
+
}
|
1138
1144
|
this.commonCheckedList = [...this.commonCheckedList, node];
|
1139
1145
|
}
|
1140
1146
|
this.selectedData = this.commonCheckedList;
|
@@ -1201,7 +1207,9 @@ export class RelatedPopupComponent {
|
|
1201
1207
|
});
|
1202
1208
|
}
|
1203
1209
|
else {
|
1204
|
-
|
1210
|
+
if (this.videoData) {
|
1211
|
+
this.videoData.poster = yield this.uploadService.uploadImage(this.qmsInputImageFile.file, this.imageUpload.height, this.imageUpload.width).toPromise();
|
1212
|
+
}
|
1205
1213
|
}
|
1206
1214
|
const readerImage = new FileReader();
|
1207
1215
|
readerImage.readAsDataURL(this.qmsInputImageFile.file);
|
@@ -1218,7 +1226,9 @@ export class RelatedPopupComponent {
|
|
1218
1226
|
this.dataTrees.toArray()[0].checklistSelection.clear();
|
1219
1227
|
this.dataTrees.toArray()[0].treeControl.dataNodes.map(x => x.disabled = true);
|
1220
1228
|
const resUploadVideo = yield this.uploadService.uploadSingleFile(this.qmsInputVideoFile.file, '', '1', this.entityId).toPromise();
|
1221
|
-
this.videoData
|
1229
|
+
if (this.videoData) {
|
1230
|
+
this.videoData.src = resUploadVideo.url;
|
1231
|
+
}
|
1222
1232
|
this.isLoadingVideoFile = false;
|
1223
1233
|
});
|
1224
1234
|
}
|
@@ -1249,4 +1259,4 @@ RelatedPopupComponent.propDecorators = {
|
|
1249
1259
|
autoComplete: [{ type: ViewChild, args: ['autoCompleteInputSearch', { read: MatAutocompleteTrigger, static: true },] }],
|
1250
1260
|
onMessage: [{ type: HostListener, args: ['window:message', ['$event'],] }]
|
1251
1261
|
};
|
1252
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVsYXRlZC1wb3B1cC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9xbXMtYW5ndWxhci9zcmMvbGliL2NvbXBvbmVudHMvcmVsYXRlZC9wb3B1cC9yZWxhdGVkLXBvcHVwLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFvQixpQkFBaUIsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFnQyxTQUFTLEVBQUUsWUFBWSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pNLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN4RSxPQUFPLEVBQUUsWUFBWSxFQUFFLGVBQWUsRUFBRSxTQUFTLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNwRixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDekQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnRUFBZ0UsQ0FBQztBQUNsRyxPQUFPLEVBQXFCLGFBQWEsRUFBRSxNQUFNLGtFQUFrRSxDQUFDO0FBRXBILE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHVFQUF1RSxDQUFDO0FBQ2pILE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBQ3pGLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBRTlFLE9BQU8sRUFB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aUI7WUFZbkMsdUJBQXVCO1lBVHZCLFlBQVk7WUFxQlosdUJBQXVCO1lBcEJ2QixlQUFlO1lBQ2YsWUFBWTtZQVFaLHNCQUFzQjtZQWIwQixVQUFVO1lBVzFELHdCQUF3QjtZQVJPLFNBQVM7WUFrQnhDLFNBQVMsdUJBNEdiLE1BQU0sU0FBQyxlQUFlOzs7d0JBaEJ4QixZQUFZLFNBQUMsYUFBYSxFQUFFLEVBQUU7MkJBRTlCLFNBQVMsU0FBQyx5QkFBeUIsRUFBRSxFQUFFLElBQUksRUFBRSxzQkFBc0IsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO3dCQXdEbkYsWUFBWSxTQUFDLGdCQUFnQixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3Q2hlY2tlZCwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBIb3N0TGlzdGVuZXIsIEluamVjdCwgT25EZXN0cm95LCBPbkluaXQsIFF1ZXJ5TGlzdCwgVmlld0NoaWxkLCBWaWV3Q2hpbGRyZW4sIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE1hdEF1dG9jb21wbGV0ZVRyaWdnZXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9hdXRvY29tcGxldGUnO1xuaW1wb3J0IHsgTWF0RGlhbG9nUmVmLCBNQVRfRElBTE9HX0RBVEEsIE1hdERpYWxvZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQgeyBNYXRJY29uUmVnaXN0cnkgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcbmltcG9ydCB7IERvbVNhbml0aXplciB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyByZXF1aXJlZEZpbGVUeXBlIH0gZnJvbSAnLi4vLi4vLi4vZGlyZWN0aXZlcy9maWxlLXVwbG9hZC9maWxlLXVwbG9hZC1zZWxlY3Rvci5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgUU1TRmlsZUF0dGFjaG1lbnQsIEZpbGVFcnJvclR5cGUgfSBmcm9tICcuLi8uLi8uLi9kaXJlY3RpdmVzL2ZpbGUtdXBsb2FkL3Ftcy1maWxlLXVwbG9hZC1hdHRhY2htZW50Lm1vZGVsJztcbmltcG9ydCB7IFRyZWVOb2RlIH0gZnJvbSAnLi4vLi4vLi4vcW1zLWNrZWRpdG9yLWNvbXBvbmVudHMvY29tbW9uL21vZGVscy9xbXMtY2tlZGl0b3ItdHJlZS1ub2RlLm1vZGVsJztcbmltcG9ydCB7IFFNU0NLRWRpdG9yVXBsb2FkU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3Ftcy1ja2VkaXRvci1jb21wb25lbnRzL3NlcnZpY2VzL3Ftcy1ja2VkaXRvci11cGxvYWQuc2VydmljZSc7XG5pbXBvcnQgeyBUcmFuc2xhdGVMaWJyYXJ5U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3RyYW5zbGF0aW9uLXJlZ2lzdHJ5LnNlcnZpY2UnO1xuaW1wb3J0IHsgUU1TSWNvblJlZ2lzdHJ5U2VydmljZSB9IGZyb20gJy4uLy4uL2FwcC1pY29uL2ljb24tcmVnaXN0cnkuc2VydmljZSc7XG5pbXBvcnQgeyBUcmVlQ29uZmlnIH0gZnJvbSAnLi4vLi4vdHJlZS9tb2RlbC90cmVlLWNvbmZpZy5tb2RlbCc7XG5pbXBvcnQgeyBUcmVlRmxhdE5vZGUgfSBmcm9tICcuLi8uLi90cmVlL21vZGVsL3RyZWUtZmxhdC1ub2RlLm1vZGVsJztcbmltcG9ydCB7IFRyZWVNb2RlbCB9IGZyb20gJy4uLy4uL3RyZWUvbW9kZWwvdHJlZS5tb2RlbCc7XG5pbXBvcnQgeyBUcmVlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vdHJlZS90cmVlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEb2N1bWVudE5vZGVUeXBlIH0gZnJvbSAnLi4vY29tbW9uL2RvY3VtZW50LWZvbGRlci10eXBlLmVudW0nO1xuaW1wb3J0IHsgTW9kdWxlVHlwZSB9IGZyb20gJy4uL2NvbW1vbi9tb2R1bGUtdHlwZS5lbnVtJztcbmltcG9ydCB7IFJlbGF0ZWRDb25zdCB9IGZyb20gJy4uL2NvbW1vbi9yZWxhdGVkLmNvbnN0JztcbmltcG9ydCB7IFBvcHVwRGF0YSB9IGZyb20gJy4uL21vZGVsL3BvcHVwLWRhdGEubW9kZWwnO1xuaW1wb3J0IHsgSVJlbGF0ZWQsIFJlbGF0ZWRPcHRpb24gfSBmcm9tICcuLi9tb2RlbC9yZWxhdGVkLWRhdGEubW9kZWwnO1xuaW1wb3J0IHsgU2VsZWN0ZWROb2RlIH0gZnJvbSAnLi4vbW9kZWwvc2VsZWN0ZWQtbm9kZS5tb2RlbCc7XG5pbXBvcnQgeyBRTVNSZWxhdGVkR2xvYmFsU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2UvcmVsYXRlZC1nbG9iYWwuc2VydmljZSc7XG5pbXBvcnQgeyBJY29uU3ZnIH0gZnJvbSAnLi4vLi4vLi4vcW1zLWNrZWRpdG9yLWNvbXBvbmVudHMvY29tbW9uL2NvbnN0YW50cy9pY29uU3ZnLmNvbnN0YW50cyc7XG5pbXBvcnQgeyBWaWRlb0NvbnN0IH0gZnJvbSAnLi4vY29tbW9uL3ZpZGVvLmNvbnN0JztcbmltcG9ydCB7IFFNU1VwbG9hZEZpbGVFcnJvckRpYWxvZyB9IGZyb20gJy4uLy4uL3VwbG9hZC1maWxlLWVycm9yLWRpYWxvZy91cGxvYWQtZmlsZS1lcnJvci1kaWFsb2cnO1xuaW1wb3J0IHsgUU1TQ0tFZGl0b3JWaWRlbyB9IGZyb20gJy4uLy4uLy4uL3Ftcy1ja2VkaXRvci1jb21wb25lbnRzL21vZGVscy9xbXMtY2tlZGl0b3ItdmlkZW8ubW9kZWwnO1xuaW1wb3J0IHsgRGF0YVR5cGUgfSBmcm9tICcuLi8uLi8uLi9jb21tb24vZW51bS9kYXRhLXR5cGUuZW51bSc7XG5cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncW1zLXJlbGF0ZWQtcG9wdXAnLFxuICB0ZW1wbGF0ZVVybDogJy4vcmVsYXRlZC1wb3B1cC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3JlbGF0ZWQtcG9wdXAuY29tcG9uZW50LnNjc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxufSlcbmV4cG9ydCBjbGFzcyBSZWxhdGVkUG9wdXBDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgQWZ0ZXJWaWV3Q2hlY2tlZCB7XG4gIG5nVW5zdWJzY3JpYmUgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIExBTkc6IGFueTtcbiAgbW9kdWxlSWQgPSAwO1xuICBtb2R1bGVOYW1lID0gJyc7XG4gIG1vZHVsZVVwbG9hZEltYWdlTmFtZSA9ICcnO1xuICBtb2R1bGVVcGxvYWRGaWxlTmFtZSA9ICcnO1xuICB0cmVlRGF0YTE6IEFycmF5PFRyZWVNb2RlbD4gPSBbXTtcbiAgdHJlZURhdGEyOiBBcnJheTxUcmVlTW9kZWw+ID0gW107XG4gIHRyZWVDb25maWcxOiBUcmVlQ29uZmlnO1xuICB0cmVlQ29uZmlnMjogVHJlZUNvbmZpZztcblxuICBjaGVja2VkTm9kZUxpc3Q6IEFycmF5PFNlbGVjdGVkTm9kZT4gPSBbXTtcbiAgc2VsZWN0ZWROb2RlOiBBcnJheTxTZWxlY3RlZE5vZGU+ID0gW107XG4gIHNlbGVjdGVkRGF0YTogQXJyYXk8VHJlZUZsYXROb2RlPiA9IFtdO1xuICBzZWxlY3RlZERhdGEyOiBBcnJheTxUcmVlRmxhdE5vZGU+ID0gW107XG5cbiAgY29tbW9uQ2hlY2tlZExpc3Q6IEFycmF5PFRyZWVGbGF0Tm9kZT4gPSBbXTtcbiAgZG9jdW1lbnRDaGVja2VkTGlzdDogQXJyYXk8VHJlZUZsYXROb2RlPiA9IFtdO1xuICBzaW5nbGVQcm9jZXNzTGlzdDogQXJyYXk8U2VsZWN0ZWROb2RlPiA9IFtdO1xuICBzaW5nbGVEb2N1bWVudExpc3Q6IEFycmF5PFNlbGVjdGVkTm9kZT4gPSBbXTtcbiAgc3BsaXRWaWV3OiBib29sZWFuO1xuXG4gIG1vZHVsZSA9IE1vZHVsZVR5cGU7XG4gIGRhdGFUeXBlID0gRGF0YVR5cGU7XG4gIGl0ZW1UeXBlID0gMDtcbiAgc2VsZWN0ZWRSaXNrRGF0YTogYW55ID0gW107XG4gIGRpc2FibGVkTGlzdDogYW55ID0gW107XG4gIGRpc2FibGVkTGlzdDI6IGFueSA9IFtdO1xuICBtYXhTZWxlY3RJdGVtQ291bnQ6IG51bWJlcjtcbiAgY2FuT25seVNlbGVjdEl0ZW06IGJvb2xlYW47XG4gIGNhblVwbG9hZEltYWdlOiBib29sZWFuO1xuICBjYW5VcGxvYWRWaWRlbzogYm9vbGVhbjtcblxuICBpc0RvY3VtZW50RXhwYW5kZWQgPSB0cnVlO1xuICBpc0NvbW1vbkV4cGFuZGVkID0gdHJ1ZTtcbiAgc2luZ2xlU2VsZWN0ZWROb2RlID0gZmFsc2U7XG4gIHNlYXJjaE9yZGVyID0gW107XG5cbiAgbXlDb250cm9sID0gbmV3IEZvcm1Db250cm9sKCk7XG4gIGZpbHRlcmVkT3B0aW9uczogUmVsYXRlZE9wdGlvbltdID0gW107XG4gIGlzSW5wdXRWYWx1ZSA9IGZhbHNlO1xuXG4gIGl0ZW1JblNwbGl0dmlldzogSVJlbGF0ZWRbXSA9IFtdO1xuICBzZWxlY3RlZEZvbGRlcjogVHJlZUZsYXROb2RlID0gbnVsbDtcbiAgc3BsaXRWaWV3VGl0bGU6IHN0cmluZyA9IG51bGw7XG4gIGxpc3RDaGlsZHJlblNlbGVjdE9uZTogYW55ID0gW107XG5cbiAgb25TZWFyY2ggPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIG9uRXhwYW5kRm9sZGVyID0gbmV3IEV2ZW50RW1pdHRlcjxJUmVsYXRlZD4oKTtcbiAgcGFyZW50Tm9kZVNlbGVjdGVkID0gbmV3IFRyZWVGbGF0Tm9kZSgpO1xuICB0cmVlQ29udHJvbE5vZGVQcm9jZXNzOiBhbnk7XG4gIHRyZWVDb250cm9sTm9kZURvY3VtZW50OiBhbnk7XG5cbiAgYWNjZXB0RXh0ZW5zaW9ucyA9IFsncGpwJywgJ2pwZycsICdwanBlZycsICdqcGVnJywgJ2pmaWYnLCAncG5nJywgJ2dpZicsICdibXAnLCAnd2VicCcsICd0aWYnLCAndGlmZiddO1xuICBhY2NlcHRFeHRlbnNpb25zRm9yVmlkZW8gPSBbJ21wNCddO1xuICBxbXNJbnB1dEltYWdlVHlwZSA9IG5ldyBGb3JtQ29udHJvbCgnJywgW1xuICAgIHJlcXVpcmVkRmlsZVR5cGUodGhpcy5hY2NlcHRFeHRlbnNpb25zKVxuICBdKTtcbiAgcW1zSW5wdXRWaWRlb1R5cGUgPSBuZXcgRm9ybUNvbnRyb2woJycsIFtcbiAgICByZXF1aXJlZEZpbGVUeXBlKHRoaXMuYWNjZXB0RXh0ZW5zaW9uc0ZvclZpZGVvKVxuICBdKTtcbiAgcW1zSW5wdXRJbWFnZUZpbGU6IFFNU0ZpbGVBdHRhY2htZW50ID0gbnVsbDtcbiAgcW1zSW5wdXRWaWRlb0ZpbGU6IFFNU0ZpbGVBdHRhY2htZW50ID0gbnVsbDtcbiAgaXNMb2FkaW5nSW1hZ2VGaWxlID0gZmFsc2U7XG4gIGlzTG9hZGluZ1ZpZGVvRmlsZSA9IGZhbHNlO1xuICBpbWFnZVVwbG9hZCA9IG5ldyBJbWFnZSgpO1xuICBtYXhWaWRlb1RodW1ibmFpbFNpemVLQj86IG51bWJlcjtcblxuICBlbnRpdHlJZDogc3RyaW5nO1xuXG4gIHZpZGVvRGF0YTogUU1TQ0tFZGl0b3JWaWRlbztcbiAgb3JpZ2luVmlkZW9EYXRhU3JjOiBzdHJpbmcgPSAnJztcbiAgY2FuVXBkYXRlVmlkZW9Qcm9wZXJ0aWVzOiBib29sZWFuID0gZmFsc2U7XG4gIEBWaWV3Q2hpbGRyZW4oVHJlZUNvbXBvbmVudCwge30pIGRhdGFUcmVlczogUXVlcnlMaXN0PFRyZWVDb21wb25lbnQ+O1xuXG4gIEBWaWV3Q2hpbGQoJ2F1dG9Db21wbGV0ZUlucHV0U2VhcmNoJywgeyByZWFkOiBNYXRBdXRvY29tcGxldGVUcmlnZ2VyLCBzdGF0aWM6IHRydWUgfSlcbiAgYXV0b0NvbXBsZXRlOiBNYXRBdXRvY29tcGxldGVUcmlnZ2VyO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgY2RSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHB1YmxpYyB0cmFuc2xhdGU6IFRyYW5zbGF0ZUxpYnJhcnlTZXJ2aWNlLFxuICAgIHB1YmxpYyBkaWFsb2dSZWY6IE1hdERpYWxvZ1JlZjxSZWxhdGVkUG9wdXBDb21wb25lbnQ+LFxuICAgIHB1YmxpYyBnbG9iYWxTZXJ2aWNlOiBRTVNSZWxhdGVkR2xvYmFsU2VydmljZSxcbiAgICBwcml2YXRlIGljb25SZWdpc3RyeTogTWF0SWNvblJlZ2lzdHJ5LFxuICAgIHByaXZhdGUgc2FuaXRpemVyOiBEb21TYW5pdGl6ZXIsXG4gICAgcHJpdmF0ZSBhcHBJY29uU2VydmljZTogUU1TSWNvblJlZ2lzdHJ5U2VydmljZSxcbiAgICBwcml2YXRlIGVsZW06IEVsZW1lbnRSZWYsXG4gICAgcHJpdmF0ZSB1cGxvYWRTZXJ2aWNlOiBRTVNDS0VkaXRvclVwbG9hZFNlcnZpY2UsXG4gICAgcHVibGljIGRpYWxvZzogTWF0RGlhbG9nLFxuICAgIEBJbmplY3QoTUFUX0RJQUxPR19EQVRBKSBwdWJsaWMgZGF0YTogUG9wdXBEYXRhXG4gICkge1xuICAgIHRoaXMubW9kdWxlSWQgPSBkYXRhLm1vZHVsZUlkO1xuICAgIHRoaXMubW9kdWxlTmFtZSA9IGRhdGEubW9kdWxlTmFtZTtcbiAgICB0aGlzLm1vZHVsZVVwbG9hZEltYWdlTmFtZSA9IGRhdGEubW9kdWxlVXBsb2FkSW1hZ2VOYW1lO1xuICAgIHRoaXMubW9kdWxlVXBsb2FkRmlsZU5hbWUgPSBkYXRhLm1vZHVsZVVwbG9hZEZpbGVOYW1lO1xuICAgIHRoaXMudHJlZURhdGExID0gZGF0YS50cmVlRGF0YTE7XG4gICAgdGhpcy50cmVlRGF0YTIgPSBkYXRhLnRyZWVEYXRhMjtcbiAgICB0aGlzLnRyZWVDb25maWcxID0gZGF0YS50cmVlQ29uZmlnMTtcbiAgICB0aGlzLnRyZWVDb25maWcyID0gZGF0YS50cmVlQ29uZmlnMjtcbiAgICB0aGlzLnNlbGVjdGVkUmlza0RhdGEgPSBkYXRhPy5zZWxlY3RlZE5vZGUgfHwgW107XG4gICAgdGhpcy5zaW5nbGVTZWxlY3RlZE5vZGUgPSBkYXRhLnRyZWVDb25maWcxLnNpbmdsZVNlbGVjdGVkTm9kZTtcbiAgICB0aGlzLmRpc2FibGVkTGlzdCA9IGRhdGEuZGlzYWJsZWRMaXN0IHx8IFtdO1xuICAgIHRoaXMuZGlzYWJsZWRMaXN0MiA9IGRhdGEuZGlzYWJsZWRMaXN0MiB8fCBbXTtcbiAgICB0aGlzLnNwbGl0VmlldyA9IGRhdGEuc3BsaXRWaWV3O1xuICAgIHRoaXMubWF4U2VsZWN0SXRlbUNvdW50ID0gZGF0YS5tYXhTZWxlY3RJdGVtQ291bnQ7XG4gICAgdGhpcy5jYW5Pbmx5U2VsZWN0SXRlbSA9IGRhdGEuY2FuT25seVNlbGVjdEl0ZW07XG4gICAgdGhpcy5jYW5VcGxvYWRJbWFnZSA9IGRhdGEuY2FuVXBsb2FkSW1hZ2U7XG4gICAgdGhpcy5jYW5VcGxvYWRWaWRlbyA9IGRhdGEuY2FuVXBsb2FkVmlkZW87XG4gICAgdGhpcy5tYXhWaWRlb1RodW1ibmFpbFNpemVLQiA9IChkYXRhLm1heFZpZGVvVGh1bWJuYWlsU2l6ZUtCIHx8IFZpZGVvQ29uc3QuREVGQVVMX01BWF9WSURFT19USFVNQk5BSUxfU0laRV9LQikgKiAxMDI0O1xuICAgIHRoaXMuZW50aXR5SWQgPSBkYXRhLmVudGl0eUlkO1xuICAgIHRoaXMudmlkZW9EYXRhID0gZGF0YS52aWRlb0RhdGE7XG4gICAgdGhpcy5vcmlnaW5WaWRlb0RhdGFTcmMgPSBkYXRhLnZpZGVvRGF0YT8uc3JjIHx8ICcnO1xuICAgIHRoaXMuY2FuVXBkYXRlVmlkZW9Qcm9wZXJ0aWVzID0gZGF0YS5jYW5VcGRhdGVWaWRlb1Byb3BlcnRpZXM7XG4gICAgYXBwSWNvblNlcnZpY2UucmVnaXN0ZXJQcm9jZXNzSWNvbihpY29uUmVnaXN0cnksIHNhbml0aXplcik7XG4gICAgYXBwSWNvblNlcnZpY2UucmVnaXN0ZXJQcm9jZXNzQXJlYUljb24oaWNvblJlZ2lzdHJ5LCBzYW5pdGl6ZXIpO1xuICAgIGFwcEljb25TZXJ2aWNlLnJlZ2lzdGVyRG9jdW1lbnRJY29uKGljb25SZWdpc3RyeSwgc2FuaXRpemVyKTtcbiAgICBhcHBJY29uU2VydmljZS5yZWdpc3RlckZvbGRlckljb24oaWNvblJlZ2lzdHJ5LCBzYW5pdGl6ZXIpO1xuICAgIGFwcEljb25TZXJ2aWNlLnJlZ2lzdGVyRGV2aWF0aW9uSWNvbihpY29uUmVnaXN0cnksIHNhbml0aXplcik7XG4gICAgYXBwSWNvblNlcnZpY2UucmVnaXN0ZXJDaGVja2xpc3RJY29uKGljb25SZWdpc3RyeSwgc2FuaXRpemVyKTtcbiAgICBhcHBJY29uU2VydmljZS5yZWdpc3RlclJpc2tJY29uKGljb25SZWdpc3RyeSwgc2FuaXRpemVyKTtcbiAgICBpY29uUmVnaXN0cnkuYWRkU3ZnSWNvbkxpdGVyYWwoJ3VwbG9hZCcsIHNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0SHRtbChJY29uU3ZnLlVQTE9BRF9JQ09OKSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLm5nVW5zdWJzY3JpYmUubmV4dCgpO1xuICAgIHRoaXMubmdVbnN1YnNjcmliZS5jb21wbGV0ZSgpO1xuICAgIHRoaXMuZ2xvYmFsU2VydmljZS5zZXRTZWFyY2hSZWxhdGVkKFtdKTtcbiAgICB0aGlzLnNlbGVjdGVkRm9sZGVyID0gbnVsbDtcbiAgICB0aGlzLmdsb2JhbFNlcnZpY2Uuc2V0U3BsaXR2aWV3VmFsdWUoW10pO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignd2luZG93Om1lc3NhZ2UnLCBbJyRldmVudCddKVxuICBvbk1lc3NhZ2UoZXZlbnQpIHtcbiAgICBpZiAoZXZlbnQuZGF0YSA9PT0gUmVsYXRlZENvbnN0LkhJREVfU0VBUkNIX1JFU1VMVCkge1xuICAgICAgLy8gdGhpcy5hdXRvQ29tcGxldGUuY2xvc2VQYW5lbCgpO1xuICAgIH1cbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMudHJhbnNsYXRlLmdldExhbmd1YWdlU3ViamVjdCQucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSkuc3Vic2NyaWJlKChyZXMpID0+IHtcbiAgICAgIGlmIChyZXMpIHtcbiAgICAgICAgdGhpcy5MQU5HID0gdGhpcy50cmFuc2xhdGUuZ2V0T2JqZWN0TGFuZyhyZXMpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdGhpcy5nbG9iYWxTZXJ2aWNlLnNlYXJjaFJlbGF0ZWQucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSkuc3Vic2NyaWJlKChyZXMpID0+IHtcbiAgICAgIGlmIChyZXMgJiYgcmVzLmxlbmd0aCkge1xuICAgICAgICB0aGlzLmZpbHRlcmVkT3B0aW9ucyA9IHRoaXMudG9SZWxhdGVkT3B0aW9ucyhyZXMpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdGhpcy5nbG9iYWxTZXJ2aWNlLnNwbGl0Vmlld1ZhbHVlLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSkpLnN1YnNjcmliZSgocmVzKSA9PiB7XG5cbiAgICAgIHRoaXMuaXRlbUluU3BsaXR2aWV3ID0gcmVzO1xuICAgICAgaWYgKHJlcy5sZW5ndGgpIHtcbiAgICAgICAgbGV0IGxpc3ROb2RlUHJvY2VzczogVHJlZU1vZGVsW10gPSBbXTtcbiAgICAgICAgbGV0IGxpc3ROb2RlRG9jczogVHJlZU1vZGVsW10gPSBbXTtcblxuICAgICAgICByZXMuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgICAgICBpZiAoaXRlbS5pdGVtVHlwZSA9PT0gRGF0YVR5cGUucHJvY2Vzcykge1xuICAgICAgICAgICAgbGV0IG5ld05vZGVQcm9jZXNzID0gbmV3IFRyZWVNb2RlbCgpO1xuICAgICAgICAgICAgbmV3Tm9kZVByb2Nlc3MuY2hpbGRJZCA9IGl0ZW0uaWQ7XG4gICAgICAgICAgICBuZXdOb2RlUHJvY2Vzcy5jaGlsZE5hbWUgPSBpdGVtLml0ZW1OYW1lO1xuICAgICAgICAgICAgbmV3Tm9kZVByb2Nlc3MuZGlzcGxheUlkID0gK2l0ZW0uaXRlbU51bWJlcklkO1xuICAgICAgICAgICAgbmV3Tm9kZVByb2Nlc3MucGFyZW50SWQgPSBcIlwiO1xuICAgICAgICAgICAgbmV3Tm9kZVByb2Nlc3Mucm9vdElkID0gaXRlbS5wYXJlbnRJZDtcbiAgICAgICAgICAgIG5ld05vZGVQcm9jZXNzLnJvb3ROYW1lID0gaXRlbT8ucGFyZW50TmFtZTtcbiAgICAgICAgICAgIG5ld05vZGVQcm9jZXNzLnN1Yk5hbWUgPSBudWxsO1xuICAgICAgICAgICAgbmV3Tm9kZVByb2Nlc3Muc3RhdHVzSWQgPSBpdGVtLnN0YXR1cztcbiAgICAgICAgICAgIGxpc3ROb2RlUHJvY2Vzcy5wdXNoKG5ld05vZGVQcm9jZXNzKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbGV0IG5ld05vZGVEb2NzID0gbmV3IFRyZWVNb2RlbCgpO1xuICAgICAgICAgICAgbmV3Tm9kZURvY3MuY2hpbGRJZCA9IGl0ZW0uaWQ7XG4gICAgICAgICAgICBuZXdOb2RlRG9jcy5jaGlsZE5hbWUgPSBpdGVtLml0ZW1OYW1lO1xuICAgICAgICAgICAgbmV3Tm9kZURvY3MuZGlzcGxheUlkID0gK2l0ZW0uaXRlbU51bWJlcklkO1xuICAgICAgICAgICAgbmV3Tm9kZURvY3MucGFyZW50SWQgPSBcIlwiO1xuICAgICAgICAgICAgbmV3Tm9kZURvY3Mucm9vdElkID0gaXRlbS5wYXJlbnRJZDtcbiAgICAgICAgICAgIG5ld05vZGVEb2NzLnJvb3ROYW1lID0gaXRlbT8ucGFyZW50TmFtZTtcbiAgICAgICAgICAgIG5ld05vZGVEb2NzLnN1Yk5hbWUgPSBudWxsO1xuICAgICAgICAgICAgbmV3Tm9kZURvY3Muc3RhdHVzSWQgPSBpdGVtLnN0YXR1cztcbiAgICAgICAgICAgIG5ld05vZGVEb2NzLnN0YXR1c05hbWUgPSBpdGVtLnN0YXR1c05hbWU7XG4gICAgICAgICAgICBsaXN0Tm9kZURvY3MucHVzaChuZXdOb2RlRG9jcyk7XG4gICAgICAgICAgfVxuXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGxldCBpZHNQcm9jZXNzID0gbmV3IFNldCh0aGlzLnRyZWVEYXRhMS5tYXAoZCA9PiBkLmNoaWxkSWQpKTtcbiAgICAgICAgdGhpcy50cmVlRGF0YTEgPSBbLi4udGhpcy50cmVlRGF0YTEsIC4uLmxpc3ROb2RlUHJvY2Vzcy5maWx0ZXIoZCA9PiAhaWRzUHJvY2Vzcy5oYXMoZC5jaGlsZElkKSldO1xuXG4gICAgICAgIGxldCBpZHNEb2NzID0gbmV3IFNldCh0aGlzLnRyZWVEYXRhMi5tYXAoZCA9PiBkLmNoaWxkSWQpKTtcbiAgICAgICAgdGhpcy50cmVlRGF0YTIgPSBbLi4udGhpcy50cmVlRGF0YTIsIC4uLmxpc3ROb2RlRG9jcy5maWx0ZXIoZCA9PiAhaWRzRG9jcy5oYXMoZC5jaGlsZElkKSldO1xuXG5cbiAgICAgICAgaWYgKHRoaXMuY2hlY2tlZE5vZGVMaXN0Lmxlbmd0aCkge1xuICAgICAgICAgIHRoaXMuc2VsZWN0ZWREYXRhID0gW107XG4gICAgICAgICAgdGhpcy5zZWxlY3RlZERhdGEyID0gW107XG4gICAgICAgICAgbGV0IHNlbGVjdFByb2Nlc3M6IFRyZWVGbGF0Tm9kZVtdID0gW107XG4gICAgICAgICAgbGV0IHNlbGVjdERvY3VtZW50OiBUcmVlRmxhdE5vZGVbXSA9IFtdO1xuXG4gICAgICAgICAgdGhpcy5jaGVja2VkTm9kZUxpc3QuZm9yRWFjaCh4ID0+IHtcbiAgICAgICAgICAgIGlmICh4Lml0ZW1UeXBlID09PSBEYXRhVHlwZS5hcmVhIHx8IHguaXRlbVR5cGUgPT09IERhdGFUeXBlLnByb2Nlc3MpIHtcbiAgICAgICAgICAgICAgdGhpcy50cmVlRGF0YTEuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoaXRlbS5jaGlsZElkICYmIHguaWQgPT09IGl0ZW0uY2hpbGRJZCB8fCAhaXRlbS5jaGlsZElkICYmICh4LmlkID09PSBpdGVtLnJvb3RJZCkpIHtcbiAgICAgICAgICAgICAgICAgIHNlbGVjdFByb2Nlc3MucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgIGRpc2FibGVkOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgZXhwYW5kYWJsZTogeC5pdGVtVHlwZSA9PSBEYXRhVHlwZS5hcmVhID8gdHJ1ZSA6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICBoYXNDaGlsZDogeC5pdGVtVHlwZSA9PSBEYXRhVHlwZS5hcmVhID8gdHJ1ZSA6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICBpZDogeC5pZCxcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IDAsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsVHlwZTogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICBuYW1lOiB4Lml0ZW1OYW1lLFxuICAgICAgICAgICAgICAgICAgICBwYXJlbnRJZDogeC5wYXJlbnRJZFxuICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgdGhpcy50cmVlRGF0YTIuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoaXRlbS5jaGlsZElkICYmIHguaWQgPT09IGl0ZW0uY2hpbGRJZCB8fCAhaXRlbS5jaGlsZElkICYmICh4LmlkID09PSBpdGVtLnJvb3RJZCkpIHtcbiAgICAgICAgICAgICAgICAgIHNlbGVjdERvY3VtZW50LnB1c2goe1xuICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZDogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIGV4cGFuZGFibGU6IHguaXRlbVR5cGUgPT0gRGF0YVR5cGUuZm9sZGVyID8gdHJ1ZSA6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICBoYXNDaGlsZDogeC5pdGVtVHlwZSA9PSBEYXRhVHlwZS5mb2xkZXIgPyB0cnVlIDogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIGlkOiB4LmlkLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogMCxcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWxUeXBlOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IHguaXRlbU5hbWUsXG4gICAgICAgICAgICAgICAgICAgIHBhcmVudElkOiB4LnBhcmVudElkXG4gICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICB9KTtcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF0YSA9IFsuLi50aGlzLnNlbGVjdGVkRGF0YSwgLi4uc2VsZWN0UHJvY2Vzc107XG4gICAgICAgICAgdGhpcy5zZWxlY3RlZERhdGEyID0gWy4uLnRoaXMuc2VsZWN0ZWREYXRhMiwgLi4uc2VsZWN0RG9jdW1lbnRdO1xuICAgICAgICB9XG5cbiAgICAgIH1cblxuICAgIH0pO1xuXG4gICAgdGhpcy5teUNvbnRyb2wudmFsdWVDaGFuZ2VzLnBpcGUoZGVib3VuY2VUaW1lKDEwMDApLCB0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSkuc3Vic2NyaWJlKCh2YWwpID0+IHtcbiAgICAgIHRoaXMuaXNJbnB1dFZhbHVlID0gdHJ1ZTtcbiAgICAgIHRoaXMub25TZWFyY2hSZWxhdGVkKHZhbCk7XG4gICAgfSk7XG5cbiAgICB0aGlzLml0ZW1UeXBlID0gdGhpcy5nZXREYXRhVHlwZUlkKHRoaXMubW9kdWxlSWQpO1xuICAgIHRoaXMuc2VhcmNoT3JkZXIgPSB0aGlzLmdldFNlYXJjaE9yZGVyKCk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0NoZWNrZWQoKSB7XG4gICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgaWYgKHRoaXMuZmlsdGVyZWRPcHRpb25zICYmIHRoaXMuZmlsdGVyZWRPcHRpb25zLmxlbmd0aCkge1xuICAgICAgLy8gdGhpcy5hdXRvQ29tcGxldGUub3BlblBhbmVsKCk7XG4gICAgICB0aGlzLnNldFJlc3VsdEhlaWdodCgpO1xuICAgIH1cbiAgICAvLyBlbHNlIGlmICh0aGlzLmF1dG9Db21wbGV0ZSkge1xuICAgIC8vICAgdGhpcy5hdXRvQ29tcGxldGUuY2xvc2VQYW5lbCgpO1xuICAgIC8vIH1cbiAgfVxuXG4gIGdldERhdGFUeXBlSWQobW9kdWxlSWQ6IG51bWJlcikge1xuICAgIGxldCBpdGVtVHlwZTtcbiAgICBzd2l0Y2ggKG1vZHVsZUlkKSB7XG4gICAgICBjYXNlIE1vZHVsZVR5cGUuZG9jdW1lbnRQcm9jZXNzOlxuICAgICAgICBpdGVtVHlwZSA9IHRoaXMuZGF0YVR5cGUucHJvY2VzcztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIE1vZHVsZVR5cGUuZGV2aWF0aW9uOlxuICAgICAgICBpdGVtVHlwZSA9IHRoaXMuZGF0YVR5cGUuZGV2aWF0aW9uO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgTW9kdWxlVHlwZS5jaGVja2xpc3Q6XG4gICAgICAgIGl0ZW1UeXBlID0gdGhpcy5kYXRhVHlwZS5jaGVja2xpc3Q7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBNb2R1bGVUeXBlLnJpc2s6XG4gICAgICAgIGl0ZW1UeXBlID0gdGhpcy5kYXRhVHlwZS5yaXNrO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGl0ZW1UeXBlID0gdGhpcy5kYXRhVHlwZS5kb2N1bWVudDtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICAgIHJldHVybiBpdGVtVHlwZTtcbiAgfVxuXG4gIHJlbW92ZUNoZWNrZWROb2RlTGlzdChpdGVtOiBUcmVlRmxhdE5vZGUpIHtcbiAgICB0aGlzLnZpZGVvRGF0YS5zcmMgPSB0aGlzLm9yaWdpblZpZGVvRGF0YVNyYztcbiAgICB0aGlzLnNlbGVjdGVkRGF0YSA9IFtdO1xuICAgIHRoaXMuc2VsZWN0ZWREYXRhMiA9IFtdO1xuXG4gICAgdGhpcy5jaGVja2VkTm9kZUxpc3QgPSB0aGlzLmNoZWNrZWROb2RlTGlzdC5maWx0ZXIoeCA9PiAoeC5pZC50b0xvd2VyQ2FzZSgpICE9PSBpdGVtLmlkLnRvTG93ZXJDYXNlKCkgfHwgeC5wYXJlbnRJZD8udG9Mb3dlckNhc2UoKSAhPT0gaXRlbS5wYXJlbnRJZD8udG9Mb3dlckNhc2UoKSkpO1xuXG4gICAgY29uc3QgbmV3U2VsZWN0UHJvY2Vzc0xpc3QgPSBbXTtcbiAgICBjb25zdCBuZXdTZWxlY3REb2N1bWVudExpc3QgPSBbXTtcblxuXG4gICAgdGhpcy5jb21tb25DaGVja2VkTGlzdCA9IHRoaXMuY29tbW9uQ2hlY2tlZExpc3QuZmlsdGVyKHggPT4gKHguaWQudG9Mb3dlckNhc2UoKSAhPT0gaXRlbS5pZC50b0xvd2VyQ2FzZSgpIHx8IHgucGFyZW50SWQ/LnRvTG93ZXJDYXNlKCkgIT09IGl0ZW0ucGFyZW50SWQ/LnRvTG93ZXJDYXNlKCkpKTtcblxuICAgIHRoaXMuc2luZ2xlUHJvY2Vzc0xpc3QuZm9yRWFjaChlbGVtZW50ID0+IHtcbiAgICAgIHRoaXMuY2hlY2tlZE5vZGVMaXN0LmZvckVhY2goeCA9PiB7XG4gICAgICAgIGlmIChlbGVtZW50LmlkLnRvTG93ZXJDYXNlKCkgPT09IHguaWQudG9Mb3dlckNhc2UoKSAmJiBlbGVtZW50LnBhcmVudElkPy50b0xvd2VyQ2FzZSgpID09PSB4LnBhcmVudElkPy50b0xvd2VyQ2FzZSgpKSB7XG4gICAgICAgICAgbmV3U2VsZWN0UHJvY2Vzc0xpc3QucHVzaChlbGVtZW50KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICB0aGlzLnNpbmdsZVByb2Nlc3NMaXN0ID0gbmV3U2VsZWN0UHJvY2Vzc0xpc3Q7XG4gICAgdGhpcy5zZWxlY3RlZERhdGEgPSB0aGlzLmNvbW1vbkNoZWNrZWRMaXN0O1xuXG4gICAgdGhpcy5kb2N1bWVudENoZWNrZWRMaXN0ID0gdGhpcy5kb2N1bWVudENoZWNrZWRMaXN0LmZpbHRlcih4ID0+ICh4LmlkLnRvTG93ZXJDYXNlKCkgIT09IGl0ZW0uaWQudG9Mb3dlckNhc2UoKSB8fCB4LnBhcmVudElkPy50b0xvd2VyQ2FzZSgpICE9PSBpdGVtLnBhcmVudElkPy50b0xvd2VyQ2FzZSgpKSk7XG5cbiAgICB0aGlzLnNpbmdsZURvY3VtZW50TGlzdC5mb3JFYWNoKGVsZW1lbnQgPT4ge1xuICAgICAgdGhpcy5jaGVja2VkTm9kZUxpc3QuZm9yRWFjaCh4ID0+IHtcbiAgICAgICAgaWYgKGVsZW1lbnQuaWQudG9Mb3dlckNhc2UoKSA9PT0geC5pZC50b0xvd2VyQ2FzZSgpICYmIGVsZW1lbnQucGFyZW50SWQ/LnRvTG93ZXJDYXNlKCkgPT09IHgucGFyZW50SWQ/LnRvTG93ZXJDYXNlKCkpIHtcbiAgICAgICAgICBuZXdTZWxlY3REb2N1bWVudExpc3QucHVzaChlbGVtZW50KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG4gICAgdGhpcy5zaW5nbGVEb2N1bWVudExpc3QgPSBuZXdTZWxlY3REb2N1bWVudExpc3Q7XG4gICAgdGhpcy5zZWxlY3RlZERhdGEyID0gdGhpcy5jb21tb25DaGVja2VkTGlzdDtcblxuICAgIC8vIHdoZW4gcmVtb3ZlIGNoZWNrIG5vZGUgbGlzdCwgcmVsYXRlZCBvcHRpb25zIG5lZWQgcmVmcmVzaCBkaXNhYmxlZCBvcHRpb25zXG4gICAgdGhpcy5yZWZyZXNoUmVsYXRlZE9wdGlvbnMoKTtcbiAgfVxuXG4gIGlzTWF0Y2hUcnVlKGFycjogYW55W10sIGFycjI6IGFueVtdKSB7XG4gICAgcmV0dXJuIGFyci5ldmVyeSgoaSkgPT4ge1xuICAgICAgcmV0dXJuIGFycjIuaW5jbHVkZXMoaSk7XG4gICAgfSk7XG4gIH1cblxuICBzZXRSZXN1bHRIZWlnaHQoYXJyPzogSVJlbGF0ZWRbXSkge1xuICAgIGxldCBtYXhIZWlnaHQgPSA0ODQ7XG4gICAgY29uc3QgcG9wdXBfY29udGVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3Ftc2xpYl9yZWxhdGVkX3BvcHVwX2NvbnRlbnQnKVswXSBhcyBIVE1MRWxlbWVudDtcbiAgICBjb25zdCBsaW5lX19kaXZpZGVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnbGluZV9fZGl2aWRlcicpWzBdIGFzIEhUTUxFbGVtZW50O1xuICAgIGlmIChwb3B1cF9jb250ZW50ICYmIGxpbmVfX2RpdmlkZXIpIHtcbiAgICAgIG1heEhlaWdodCA9IHRoaXMuZ2V0T2Zmc2V0SGVpZ2h0KHBvcHVwX2NvbnRlbnQsIHRydWUpICsgdGhpcy5nZXRPZmZzZXRIZWlnaHQobGluZV9fZGl2aWRlciwgdHJ1ZSkgKiAyO1xuICAgIH1cblxuICAgIGNvbnN0IGNvbnRlbnRSZXN1bHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdjZGstdmlydHVhbC1zY3JvbGwtY29udGVudC13cmFwcGVyJylbMF0gYXMgSFRNTEVsZW1lbnQ7XG4gICAgY29uc3Qgdmlld3JlcG9ydHMgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdyZWxhdGVkLXZpZXdwb3J0JylbMF0gYXMgSFRNTEVsZW1lbnQ7XG5cbiAgICBpZiAodmlld3JlcG9ydHMpIHtcbiAgICAgIGlmIChjb250ZW50UmVzdWx0Lm9mZnNldEhlaWdodCA8PSBtYXhIZWlnaHQpIHtcbiAgICAgICAgdmlld3JlcG9ydHMuc3R5bGUuaGVpZ2h0ID0gYCR7Y29udGVudFJlc3VsdC5vZmZzZXRIZWlnaHR9cHhgO1xuICAgICAgfVxuICAgICAgZWxzZSB7XG4gICAgICAgIHZpZXdyZXBvcnRzLnN0eWxlLmhlaWdodCA9IGAke21heEhlaWdodH1weGA7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgb25TZWFyY2hSZWxhdGVkKF92YWw6IGFueSkge1xuICAgIHRoaXMuZmlsdGVyZWRPcHRpb25zID0gW107XG4gICAgaWYgKHR5cGVvZiAoX3ZhbCkgPT09ICdvYmplY3QnKSB7XG4gICAgICB0aGlzLm15Q29udHJvbC5zZXRWYWx1ZSgnJyk7XG4gICAgICB0aGlzLmlzSW5wdXRWYWx1ZSA9IGZhbHNlO1xuICAgIH1cbiAgICBlbHNlIGlmICh0eXBlb2YgKF92YWwpID09PSAnc3RyaW5nJykge1xuICAgICAgaWYgKCEhX3ZhbCkge1xuICAgICAgICB0aGlzLm9uU2VhcmNoLmVtaXQoX3ZhbCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZ2V0TW9kdWxlRmlsdGVyZWRPcHRpb25zKG1vZHVsZUlkOiBudW1iZXIpIHtcbiAgICBpZiAodGhpcy5saXN0Q2hpbGRyZW5TZWxlY3RPbmUubGVuZ3RoKSB7XG4gICAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgdGhpcy5saXN0Q2hpbGRyZW5TZWxlY3RPbmUubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICAgIGNvbnN0IGZpcnN0RWwgPSB0aGlzLmxpc3RDaGlsZHJlblNlbGVjdE9uZVtpbmRleF07XG4gICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5maWx0ZXJlZE9wdGlvbnMubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgICBjb25zdCBzZWNvbmRFbCA9IHRoaXMuZmlsdGVyZWRPcHRpb25zW2pdO1xuICAgICAgICAgIGlmIChmaXJzdEVsLmlkID09PSBzZWNvbmRFbC5pZCkge1xuICAgICAgICAgICAgdGhpcy5maWx0ZXJlZE9wdGlvbnMuc3BsaWNlKGosIDEpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgfVxuICAgIHJldHVybiB0aGlzLmZpbHRlcmVkT3B0aW9ucy5maWx0ZXIoeCA9PiB4Lml0ZW1UeXBlID09PSBtb2R1bGVJZCk7XG4gIH1cblxuICBzaG93U2VhcmNoUmVzdWx0KCkge1xuICAgIC8vIHRoaXMuYXV0b0NvbXBsZXRlLm9wZW5QYW5lbCgpO1xuICB9XG5cbiAgZGlzcGxheVJlbGF0ZWQocmVsYXRlZD86IElSZWxhdGVkKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gcmVsYXRlZCA/IHJlbGF0ZWQuaXRlbU5hbWUgOiB1bmRlZmluZWQ7XG4gIH1cblxuICBzZWxlY3RSZWxhdGVkKGl0ZW06IElSZWxhdGVkKSB7XG4gICAgaWYgKHRoaXMudHJlZUNvbmZpZzE/LnNlbGVjdE9uZSB8fCB0aGlzLnRyZWVDb25maWcyPy5zZWxlY3RPbmUpIHtcbiAgICAgIHRoaXMuZGlzYWJsZWRMaXN0ID0gW107XG4gICAgICB0aGlzLmRpc2FibGVkTGlzdDIgPSBbXTtcbiAgICB9XG5cbiAgICBsZXQgaW5kZXggPSAtMTtcbiAgICB0aGlzLnNlbGVjdGVkTm9kZSA9IFtdO1xuICAgIGlmICh0aGlzLnRyZWVDb25maWcxLnNob3dDaGVja0JveCkge1xuICAgICAgaW5kZXggPSB0aGlzLmNoZWNrZWROb2RlTGlzdC5maW5kSW5kZXgoeCA9PiB7XG4gICAgICAgIHJldHVybiB4LmlkLnRvTG93ZXJDYXNlKCkgPT09IGl0ZW0uaWQudG9Mb3dlckNhc2UoKSAmJiB4LnBhcmVudElkPy50b0xvd2VyQ2FzZSgpID09PSBpdGVtLnBhcmVudElkPy50b0xvd2VyQ2FzZSgpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKGluZGV4IDwgMCkge1xuICAgICAgbGV0IHBvc2l0aW9uID0gLTE7XG4gICAgICBsZXQgbm9kZTogYW55O1xuICAgICAgbGV0IHR5cGVJZDogbnVtYmVyO1xuXG4gICAgICBzd2l0Y2ggKGl0ZW0uaXRlbVR5cGUpIHtcbiAgICAgICAgY2FzZSB0aGlzLmRhdGFUeXBlLmRvY3VtZW50OlxuICAgICAgICAgIC8vIGRvY3VtZW50ICBcbiAgICAgICAgICBjb25zdCBpc0V4aXN0SW5EaXNhYmxlZCA9IHRoaXMuZGlzYWJsZWRMaXN0Mi5maW5kSW5kZXgoeCA9PiB7XG4gICAgICAgICAgICByZXR1cm4geC5pZCAmJiB4LmlkLnRvTG93ZXJDYXNlKCkgPT09IGl0ZW0uaWQudG9Mb3dlckNhc2UoKSAmJiB4LnBhcmVudElkPy50b0xvd2VyQ2FzZSgpID09PSBpdGVtLnBhcmVudElkPy50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgaWYgKGlzRXhpc3RJbkRpc2FibGVkID49IDApIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgICAgcG9zaXRpb24gPSB0aGlzLnRyZWVEYXRhMi5maW5kSW5kZXgoeCA9PiB7XG4gICAgICAgICAgICByZXR1cm4geC5jaGlsZElkID09PSBpdGVtLmlkICYmIHgucm9vdElkLnRvTG93ZXJDYXNlKCkgPT09IGl0ZW0ucGFyZW50SWQ/LnRvTG93ZXJDYXNlKCk7XG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICBpZiAocG9zaXRpb24gPj0gMCkge1xuICAgICAgICAgICAgbm9kZSA9IHRoaXMudHJlZURhdGEyW3Bvc2l0aW9uXTtcbiAgICAgICAgICAgIHR5cGVJZCA9IHRoaXMuZGF0YVR5cGUuZG9jdW1lbnQ7XG4gICAgICAgICAgICBjb25zdCB0cmVlTm9kZSA9IHtcbiAgICAgICAgICAgICAgaWQ6IG5vZGUuY2hpbGRJZCxcbiAgICAgICAgICAgICAgbmFtZTogbm9kZS5jaGlsZE5hbWUsXG4gICAgICAgICAgICAgIGNoaWxkcmVuOiBbXSxcbiAgICAgICAgICAgICAgcGFyZW50SWQ6IG5vZGUucm9vdElkXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgdGhpcy5kYXRhVHJlZXMudG9BcnJheSgpWzFdLnRvZG9JdGVtU2VsZWN0aW9uUHJvY2Vzc0RvY3VtZW50KFt0cmVlTm9kZV0pO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBsZXQgbmV3Tm9kZURvY3M6IFRyZWVNb2RlbCA9IHtcbiAgICAgICAgICAgICAgcm9vdElkOiBpdGVtLmJyZWFkY3VtYnNbaXRlbS5icmVhZGN1bWJzLmxlbmd0aCAtIDFdPy5bJ2lkJ10sXG4gICAgICAgICAgICAgIHJvb3ROYW1lOiBpdGVtLmJyZWFkY3VtYnNbaXRlbS5icmVhZGN1bWJzLmxlbmd0aCAtIDFdPy5bJ25hbWUnXSxcbiAgICAgICAgICAgICAgcGFyZW50SWQ6ICcnLFxuICAgICAgICAgICAgICBzdWJOYW1lOiBudWxsLFxuICAgICAgICAgICAgICBjaGlsZElkOiBpdGVtLmlkLFxuICAgICAgICAgICAgICBjaGlsZE5hbWU6IGl0ZW0uaXRlbU5hbWUsXG4gICAgICAgICAgICAgIHN0YXR1c0lkOiBpdGVtPy5bJ2l0ZW1TdGF0dXMnXSxcbiAgICAgICAgICAgICAgc3RhdHVzTmFtZTogaXRlbT8uWydzdGF0dXNOYW1lJ10sXG4gICAgICAgICAgICAgIGRpc3BsYXlJZDogK2l0ZW0uaXRlbU51bWJlcklkLFxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy50cmVlRGF0YTIgPSBbLi4udGhpcy50cmVlRGF0YTIsIG5ld05vZGVEb2NzXTtcbiAgICAgICAgICAgIGxldCBuZXdTZWxlY3RlZERvY3M6IFRyZWVGbGF0Tm9kZSA9IHtcbiAgICAgICAgICAgICAgZGlzYWJsZWQ6IGZhbHNlLFxuICAgICAgICAgICAgICBleHBhbmRhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgaGFzQ2hpbGQ6IGZhbHNlLFxuICAgICAgICAgICAgICBpZDogaXRlbS5pZCxcbiAgICAgICAgICAgICAgbGV2ZWw6IDAsXG4gICAgICAgICAgICAgIGxldmVsVHlwZTogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICBuYW1lOiBpdGVtLml0ZW1OYW1lLFxuICAgICAgICAgICAgICBwYXJlbnRJZDogaXRlbS5icmVhZGN1bWJzW2l0ZW0uYnJlYWRjdW1icy5sZW5ndGggLSAxXT8uWydpZCddXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF0YTIgPSBbXTtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWREYXRhID0gW107XG4gICAgICAgICAgICBsZXQgc2VsZWN0UHJvY2VzczogVHJlZUZsYXROb2RlW10gPSBbXTtcbiAgICAgICAgICAgIGxldCBzZWxlY3REb2N1bWVudDogVHJlZUZsYXROb2RlW10gPSBbXTtcblxuICAgICAgICAgICAgaWYgKHRoaXMuY2hlY2tlZE5vZGVMaXN0Lmxlbmd0aCkge1xuICAgICAgICAgICAgICB0aGlzLmNoZWNrZWROb2RlTGlzdC5mb3JFYWNoKHggPT4ge1xuICAgICAgICAgICAgICAgIGlmICh4Lml0ZW1UeXBlID09PSBEYXRhVHlwZS5kb2N1bWVudCB8fCB4Lml0ZW1UeXBlID09PSBEYXRhVHlwZS5mb2xkZXIpIHtcbiAgICAgICAgICAgICAgICAgIHRoaXMudHJlZURhdGEyLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpdGVtLmNoaWxkSWQgJiYgeC5pZCA9PT0gaXRlbS5jaGlsZElkIHx8ICFpdGVtLmNoaWxkSWQgJiYgKHguaWQgPT09IGl0ZW0ucm9vdElkKSkge1xuICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdERvY3VtZW50LnB1c2goe1xuICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgZXhwYW5kYWJsZTogeC5pdGVtVHlwZSA9PSBEYXRhVHlwZS5mb2xkZXIgPyB0cnVlIDogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICBoYXNDaGlsZDogeC5pdGVtVHlwZSA9PSBEYXRhVHlwZS5mb2xkZXIgPyB0cnVlIDogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogeC5pZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldmVsOiAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWxUeXBlOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiB4Lml0ZW1OYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50SWQ6IHgucGFyZW50SWRcbiAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERhdGEgPSBbLi4udGhpcy5zZWxlY3RlZERhdGEsIC4uLnNlbGVjdFByb2Nlc3NdO1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERhdGEyID0gWy4uLnRoaXMuc2VsZWN0ZWREYXRhMiwgLi4uc2VsZWN0RG9jdW1lbnQsIG5ld1NlbGVjdGVkRG9jc107XG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgdHJlZU5vZGUgPSB7XG4gICAgICAgICAgICAgICAgaWQ6IG5ld05vZGVEb2NzLmNoaWxkSWQsXG4gICAgICAgICAgICAgICAgbmFtZTogbmV3Tm9kZURvY3MuY2hpbGROYW1lLFxuICAgICAgICAgICAgICAgIGNoaWxkcmVuOiBbXSxcbiAgICAgICAgICAgICAgICBwYXJlbnRJZDogbmV3Tm9kZURvY3Mucm9vdElkXG4gICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgIHRoaXMuZGF0YVRyZWVzLnRvQXJyYXkoKVsxXS50b2RvSXRlbVNlbGVjdGlvblByb2Nlc3NEb2N1bWVudChbdHJlZU5vZGVdKTtcbiAgICAgICAgICAgIH0sIDUwMClcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgdGhpcy5kYXRhVHlwZS5mb2xkZXI6XG4gICAgICAgICAgcG9zaXRpb24gPSB0aGlzLnRyZWVEYXRhMi5maW5kSW5kZXgoeCA9PiB7XG4gICAgICAgICAgICByZXR1cm4geC5yb290SWQgPT09IGl0ZW0uaWQgJiYgeC5wYXJlbnRJZCA9PT0gaXRlbS5wYXJlbnRJZDtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICB0eXBlSWQgPSBpdGVtLml0ZW1UeXBlO1xuICAgICAgICAgIGlmIChwb3NpdGlvbiA+PSAwKSB7XG4gICAgICAgICAgICBub2RlID0gdGhpcy50cmVlRGF0YTJbcG9zaXRpb25dO1xuICAgICAgICAgICAgaWYgKHRoaXMudHJlZUNvbmZpZzIuc2hvd0NoZWNrQm94KSB7XG4gICAgICAgICAgICAgIHRoaXMuY2hlY2tlZE5vZGVMaXN0LnB1c2goe1xuICAgICAgICAgICAgICAgIG1vZHVsZUlkOiB0aGlzLm1vZHVsZUlkLFxuICAgICAgICAgICAgICAgIGlkOiBpdGVtLmlkLFxuICAgICAgICAgICAgICAgIGl0ZW1OYW1lOiBpdGVtLml0ZW1OYW1lLFxuICAgICAgICAgICAgICAgIGl0ZW1UeXBlOiB0eXBlSWQsXG4gICAgICAgICAgICAgICAgaXRlbU51bWJlcklkOiBpdGVtLml0ZW1OdW1iZXJJZCxcbiAgICAgICAgICAgICAgICBsZXZlbFR5cGU6IGl0ZW0ubGV2ZWxUeXBlLFxuICAgICAgICAgICAgICAgIHBhcmVudElkOiBpdGVtLnBhcmVudElkLFxuICAgICAgICAgICAgICAgIHBhcmVudE5hbWU6IGl0ZW0ucGFyZW50TmFtZVxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkTm9kZS5wdXNoKHtcbiAgICAgICAgICAgICAgICBtb2R1bGVJZDogdGhpcy5tb2R1bGVJZCxcbiAgICAgICAgICAgICAgICBpZDogaXRlbS5pZCxcbiAgICAgICAgICAgICAgICBpdGVtTmFtZTogaXRlbS5pdGVtTmFtZSxcbiAgICAgICAgICAgICAgICBpdGVtVHlwZTogdHlwZUlkLFxuICAgICAgICAgICAgICAgIGl0ZW1OdW1iZXJJZDogaXRlbS5pdGVtTnVtYmVySWQsXG4gICAgICAgICAgICAgICAgbGV2ZWxUeXBlOiBpdGVtLmxldmVsVHlwZVxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IHRyZWVOb2RlID0ge1xuICAgICAgICAgICAgICBpZDogbm9kZS5yb290SWQsXG4gICAgICAgICAgICAgIG5hbWU6ICEhbm9kZS5yb290SWQgPyBub2RlLnN1Yk5hbWUgOiBub2RlLnJvb3ROYW1lLFxuICAgICAgICAgICAgICBjaGlsZHJlbjogW10sXG4gICAgICAgICAgICAgIHBhcmVudElkOiBub2RlLnBhcmVudElkXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgdGhpcy5kYXRhVHJlZXMudG9BcnJheSgpWzFdLnRvZG9Gb2xkZXJTZWxlY3Rpb24oW3RyZWVOb2RlXSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIHRoaXMuZGF0YVR5cGUuYXJlYTpcbiAgICAgICAgICBwb3NpdGlvbiA9IHRoaXMudHJlZURhdGExLmZpbmRJbmRleCh4ID0+IHtcbiAgICAgICAgICAgIHJldHVybiB4LnJvb3RJZC50b0xvd2VyQ2FzZSgpID09PSBpdGVtLmlkLnRvTG93ZXJDYXNlKCkgJiYgeC5wYXJlbnRJZD8udG9Mb3dlckNhc2UoKSA9PT0gaXRlbS5wYXJlbnRJZD8udG9Mb3dlckNhc2UoKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICB0eXBlSWQgPSBpdGVtLml0ZW1UeXBlO1xuXG4gICAgICAgICAgaWYgKHBvc2l0aW9uID49IDApIHtcbiAgICAgICAgICAgIG5vZGUgPSB0aGlzLnRyZWVEYXRhMVtwb3NpdGlvbl07XG4gICAgICAgICAgICBpZiAodGhpcy50cmVlQ29uZmlnMS5zaG93Q2hlY2tCb3gpIHtcbiAgICAgICAgICAgICAgdGhpcy5jaGVja2VkTm9kZUxpc3QucHVzaCh7XG4gICAgICAgICAgICAgICAgbW9kdWxlSWQ6IHRoaXMubW9kdWxlSWQsXG4gICAgICAgICAgICAgICAgaWQ6IG5vZGUucm9vdElkLFxuICAgICAgICAgICAgICAgIGl0ZW1OYW1lOiBub2RlLnJvb3ROYW1lLFxuICAgICAgICAgICAgICAgIGl0ZW1UeXBlOiB0eXBlSWQsXG4gICAgICAgICAgICAgICAgaXRlbU51bWJlcklkOiBpdGVtLml0ZW1OdW1iZXJJZCxcbiAgICAgICAgICAgICAgICBsZXZlbFR5cGU6IGl0ZW0ubGV2ZWxUeXBlLFxuICAgICAgICAgICAgICAgIHBhcmVudElkOiBpdGVtLnBhcmVudElkLFxuICAgICAgICAgICAgICAgIHBhcmVudE5hbWU6IGl0ZW0ucGFyZW50TmFtZVxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkTm9kZS5wdXNoKHtcbiAgICAgICAgICAgICAgICBtb2R1bGVJZDogdGhpcy5tb2R1bGVJZCxcbiAgICAgICAgICAgICAgICBpZDogbm9kZS5yb290SWQsXG4gICAgICAgICAgICAgICAgaXRlbU5hbWU6IG5vZGUucm9vdE5hbWUsXG4gICAgICAgICAgICAgICAgaXRlbVR5cGU6IHR5cGVJZCxcbiAgICAgICAgICAgICAgICBpdGVtTnVtYmVySWQ6IGl0ZW0uaXRlbU51bWJlcklkLFxuICAgICAgICAgICAgICAgIGxldmVsVHlwZTogaXRlbS5sZXZlbFR5cGVcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnN0IHRyZWVOb2RlID0ge1xuICAgICAgICAgICAgaWQ6IG5vZGUucm9vdElkLFxuICAgICAgICAgICAgbmFtZTogISFub2RlLnJvb3RJZCA/IG5vZGUuc3ViTmFtZSA6IG5vZGUucm9vdE5hbWUsXG4gICAgICAgICAgICBjaGlsZHJlbjogW10sXG4gICAgICAgICAgICBwYXJlbnRJZDogbm9kZS5wYXJlbnRJZFxuICAgICAgICAgIH07XG4gICAgICAgICAgdGhpcy5kYXRhVHJlZXMudG9BcnJheSgpWzBdLnRvZG9Gb2xkZXJTZWxlY3Rpb24oW3RyZWVOb2RlXSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgdGhpcy5kYXRhVHlwZS5wcm9jZXNzOlxuICAgICAgICAgIGNvbnN0IGlzRXhpc3RJblByb2Nlc3NEaXNhYmxlZCA9IHRoaXMuZGlzYWJsZWRMaXN0LmZpbmRJbmRleCh4ID0+IHtcbiAgICAgICAgICAgIHJldHVybiB4LmlkICYmIHguaWQudG9Mb3dlckNhc2UoKSA9PT0gaXRlbS5pZC50b0xvd2VyQ2FzZSgpICYmIHgucGFyZW50SWQ/LnRvTG93ZXJDYXNlKCkgPT09IGl0ZW0ucGFyZW50SWQ/LnRvTG93ZXJDYXNlKCk7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgaWYgKGlzRXhpc3RJblByb2Nlc3NEaXNhYmxlZCA+PSAwKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICAgIHBvc2l0aW9uID0gdGhpcy50cmVlRGF0YTEuZmluZEluZGV4KHggPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHguY2hpbGRJZCAmJiB4LmNoaWxkSWQudG9Mb3dlckNhc2UoKSA9PT0gaXRlbS5pZC50b0xvd2VyQ2FzZSgpICYmIHgucm9vdElkLnRvTG93ZXJDYXNlKCkgPT09IGl0ZW0ucGFyZW50SWQ/LnRvTG93ZXJDYXNlKCk7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgaWYgKHBvc2l0aW9uID49IDApIHtcbiAgICAgICAgICAgIG5vZGUgPSB0aGlzLnRyZWVEYXRhMVtwb3NpdGlvbl07XG4gICAgICAgICAgICB0eXBlSWQgPSB0aGlzLml0ZW1UeXBlO1xuICAgICAgICAgICAgY29uc3QgdHJlZU5vZGUgPSB7XG4gICAgICAgICAgICAgIGlkOiBub2RlLmNoaWxkSWQsXG4gICAgICAgICAgICAgIG5hbWU6IG5vZGUuY2hpbGROYW1lLFxuICAgICAgICAgICAgICBjaGlsZHJlbjogW10sXG4gICAgICAgICAgICAgIHBhcmVudElkOiBub2RlLnJvb3RJZFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHRoaXMuZGF0YVRyZWVzLnRvQXJyYXkoKVswXS50b2RvSXRlbVNlbGVjdGlvblByb2Nlc3NEb2N1bWVudChbdHJlZU5vZGVdKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbGV0IG5ld05vZGVQcm9jZXNzOiBUcmVlTW9kZWwgPSB7XG4gICAgICAgICAgICAgIHJvb3RJZDogaXRlbS5icmVhZGN1bWJzW2l0ZW0uYnJlYWRjdW1icy5sZW5ndGggLSAxXT8uWydpZCddLFxuICAgICAgICAgICAgICByb290TmFtZTogaXRlbS5icmVhZGN1bWJzW2l0ZW0uYnJlYWRjdW1icy5sZW5ndGggLSAxXT8uWyduYW1lJ10sXG4gICAgICAgICAgICAgIHBhcmVudElkOiAnJyxcbiAgICAgICAgICAgICAgc3ViTmFtZTogbnVsbCxcbiAgICAgICAgICAgICAgY2hpbGRJZDogaXRlbS5pZCxcbiAgICAgICAgICAgICAgY2hpbGROYW1lOiBpdGVtLml0ZW1OYW1lLFxuICAgICAgICAgICAgICBzdGF0dXNJZDogaXRlbT8uWydpdGVtU3RhdHVzJ10sXG4gICAgICAgICAgICAgIHN0YXR1c05hbWU6IGl0ZW0/Llsnc3RhdHVzTmFtZSddLFxuICAgICAgICAgICAgICBkaXNwbGF5SWQ6ICtpdGVtLml0ZW1OdW1iZXJJZCxcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy50cmVlRGF0YTEgPSBbLi4udGhpcy50cmVlRGF0YTEsIG5ld05vZGVQcm9jZXNzXTtcbiAgICAgICAgICAgIGxldCBuZXdTZWxlY3RlZFByb2Nlc3M6IFRyZWVGbGF0Tm9kZSA9IHtcbiAgICAgICAgICAgICAgZGlzYWJsZWQ6IGZhbHNlLFxuICAgICAgICAgICAgICBleHBhbmRhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgaGFzQ2hpbGQ6IGZhbHNlLFxuICAgICAgICAgICAgICBpZDogaXRlbS5pZCxcbiAgICAgICAgICAgICAgbGV2ZWw6IDAsXG4gICAgICAgICAgICAgIGxldmVsVHlwZTogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICBuYW1lOiBpdGVtLml0ZW1OYW1lLFxuICAgICAgICAgICAgICBwYXJlbnRJZDogaXRlbS5icmVhZGN1bWJzW2l0ZW0uYnJlYWRjdW1icy5sZW5ndGggLSAxXT8uWydpZCddXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF0YSA9IFtdO1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERhdGEyID0gW107XG4gICAgICAgICAgICBsZXQgc2VsZWN0UHJvY2VzczogVHJlZUZsYXROb2RlW10gPSBbXTtcbiAgICAgICAgICAgIGxldCBzZWxlY3REb2N1bWVudDogVHJlZUZsYXROb2RlW10gPSBbXTtcblxuICAgICAgICAgICAgaWYgKHRoaXMuY2hlY2tlZE5vZGVMaXN0Lmxlbmd0aCkge1xuICAgICAgICAgICAgICB0aGlzLmNoZWNrZWROb2RlTGlzdC5mb3JFYWNoKHggPT4ge1xuICAgICAgICAgICAgICAgIGlmICh4Lml0ZW1UeXBlID09PSBEYXRhVHlwZS5hcmVhIHx8IHguaXRlbVR5cGUgPT09IERhdGFUeXBlLnByb2Nlc3MpIHtcbiAgICAgICAgICAgICAgICAgIHRoaXMudHJlZURhdGExLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpdGVtLmNoaWxkSWQgJiYgeC5pZCA9PT0gaXRlbS5jaGlsZElkIHx8ICFpdGVtLmNoaWxkSWQgJiYgKHguaWQgPT09IGl0ZW0ucm9vdElkKSkge1xuICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdFByb2Nlc3MucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZDogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICBleHBhbmRhYmxlOiB4Lml0ZW1UeXBlID09IERhdGFUeXBlLmFyZWEgPyB0cnVlIDogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICBoYXNDaGlsZDogeC5pdGVtVHlwZSA9PSBEYXRhVHlwZS5hcmVhID8gdHJ1ZSA6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHguaWQsXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXZlbDogMCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldmVsVHlwZTogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogeC5pdGVtTmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudElkOiB4LnBhcmVudElkXG4gICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIHRoaXMudHJlZURhdGEyLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpdGVtLmNoaWxkSWQgJiYgeC5pZCA9PT0gaXRlbS5jaGlsZElkIHx8ICFpdGVtLmNoaWxkSWQgJiYgKHguaWQgPT09IGl0ZW0ucm9vdElkKSkge1xuICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdERvY3VtZW50LnB1c2goe1xuICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgZXhwYW5kYWJsZTogeC5pdGVtVHlwZSA9PSBEYXRhVHlwZS5mb2xkZXIgPyB0cnVlIDogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICBoYXNDaGlsZDogeC5pdGVtVHlwZSA9PSBEYXRhVHlwZS5mb2xkZXIgPyB0cnVlIDogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogeC5pZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldmVsOiAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWxUeXBlOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiB4Lml0ZW1OYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50SWQ6IHgucGFyZW50SWRcbiAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWREYXRhID0gWy4uLnRoaXMuc2VsZWN0ZWREYXRhLCAuLi5zZWxlY3RQcm9jZXNzLCBuZXdTZWxlY3RlZFByb2Nlc3NdO1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERhdGEyID0gWy4uLnRoaXMuc2VsZWN0ZWREYXRhMiwgLi4uc2VsZWN0RG9jdW1lbnRdO1xuXG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgdHJlZU5vZGUgPSB7XG4gICAgICAgICAgICAgICAgaWQ6IG5ld05vZGVQcm9jZXNzLmNoaWxkSWQsXG4gICAgICAgICAgICAgICAgbmFtZTogbmV3Tm9kZVByb2Nlc3MuY2hpbGROYW1lLFxuICAgICAgICAgICAgICAgIGNoaWxkcmVuOiBbXSxcbiAgICAgICAgICAgICAgICBwYXJlbnRJZDogbmV3Tm9kZVByb2Nlc3Mucm9vdElkXG4gICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgIHRoaXMuZGF0YVRyZWVzLnRvQXJyYXkoKVswXS50b2RvSXRlbVNlbGVjdGlvblByb2Nlc3NEb2N1bWVudChbdHJlZU5vZGVdKTtcblxuICAgICAgICAgICAgfSwgNTAwKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgdGhpcy5kYXRhVHlwZS5kZXZpYXRpb25UeXBlOlxuICAgICAgICBjYXNlIHRoaXMuZGF0YVR5cGUuY2hlY2tsaXN0Q2F0ZWdvcnk6XG4gICAgICAgIGNhc2UgdGhpcy5kYXRhVHlwZS5yaXNrRm9sZGVyOlxuICAgICAgICAgIHBvc2l0aW9uID0gdGhpcy50cmVlRGF0YTEuZmluZEluZGV4KHggPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHgucm9vdElkLnRvTG93ZXJDYXNlKCkgPT09IGl0ZW0uaWQudG9Mb3dlckNhc2UoKSAmJiB4LnBhcmVudElkPy50b0xvd2VyQ2FzZSgpID09PSAoaXRlbS5wYXJlbnRJZCA/IGl0ZW0ucGFyZW50SWQ/LnRvTG93ZXJDYXNlKCkgOiAnJyk7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgdGhpcy5zZWxlY3ROb2RlUmVjdXJzaXZlKHRoaXMudHJlZURhdGExW3Bvc2l0aW9uXSwgaXRlbS5pdGVtVHlwZSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgdGhpcy5kYXRhVHlwZS5kZXZpYXRpb246XG4gICAgICAgIGNhc2UgdGhpcy5kYXRhVHlwZS5jaGVja2xpc3Q6XG4gICAgICAgIGNhc2UgdGhpcy5kYXRhVHlwZS5yaXNrOlxuICAgICAgICAgIHBvc2l0aW9uID0gdGhpcy50cmVlRGF0YTEuZmluZEluZGV4KHggPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHguY2hpbGRJZCAmJiB4LmNoaWxkSWQudG9Mb3dlckNhc2UoKSA9PT0gaXRlbS5pZC50b0xvd2VyQ2FzZSgpICYmIHgucm9vdElkLnRvTG93ZXJDYXNlKCkgPT09IGl0ZW0ucGFyZW50SWQ/LnRvTG93ZXJDYXNlKCk7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgaWYgKHBvc2l0aW9uID49IDApIHtcbiAgICAgICAgICAgIG5vZGUgPSB0aGlzLnRyZWVEYXRhMVtwb3NpdGlvbl07XG4gICAgICAgICAgICB0eXBlSWQgPSB0aGlzLml0ZW1UeXBlO1xuICAgICAgICAgICAgY29uc3QgdHJlZU5vZGUgPSB7XG4gICAgICAgICAgICAgIGlkOiBub2RlLmNoaWxkSWQsXG4gICAgICAgICAgICAgIG5hbWU6IG5vZGUuY2hpbGROYW1lLFxuICAgICAgICAgICAgICBjaGlsZHJlbjogW10sXG4gICAgICAgICAgICAgIHBhcmVudElkOiBub2RlLnJvb3RJZFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHRoaXMuZGF0YVRyZWVzLnRvQXJyYXkoKVswXS50b2RvSXRlbVNlbGVjdGlvbihbdHJlZU5vZGVdKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHNlbGVjdE5vZGVSZWN1cnNpdmUoaXRlbTogVHJlZU1vZGVsLCBpdGVtVHlwZTogRGF0YVR5cGUpIHtcbiAgICBsZXQgcG9zaXRpb24gPSB0aGlzLnRyZWVEYXRhMS5maW5kSW5kZXgoeCA9PiB7XG4gICAgICByZXR1cm4geC5yb290SWQgPT09IGl0ZW0ucm9vdElkO1xuICAgIH0pO1xuXG4gICAgaWYgKHBvc2l0aW9uID49IDApIHtcblxuICAgICAgY29uc3Qgbm9kZTogVHJlZU5vZGUgPSB7XG4gICAgICAgIGlkOiBpdGVtLnJvb3RJZCxcbiAgICAgICAgbmFtZTogaXRlbS5yb290TmFtZSxcbiAgICAgICAgY2hpbGRyZW46IFtdLFxuICAgICAgICBwYXJlbnRJZDogaXRlbS5wYXJlbnRJZFxuICAgICAgfTtcblxuICAgICAgbGV0IG5vZGVDaGlsZHJlbjogVHJlZU5vZGVbXSA9IHRoaXMudHJlZURhdGExLlxuICAgICAgICBmaWx0ZXIoeCA9PiB4LnJvb3RJZCA9PT0gaXRlbS5yb290SWQgJiYgeC5jaGlsZElkKS5cbiAgICAgICAgbWFwKHggPT4ge1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBpZDogeC5jaGlsZElkLFxuICAgICAgICAgICAgbmFtZTogaXRlbS5jaGlsZE5hbWUsXG4gICAgICAgICAgICBjaGlsZHJlbjogW10sXG4gICAgICAgICAgICBwYXJlbnRJZDogaXRlbS5yb290SWRcbiAgICAgICAgICB9O1xuICAgICAgICB9KTtcbiAgICAgIGxldCBub2RlU3ViZm9sZGVyczogVHJlZU1vZGVsW10gPSB0aGlzLnRyZWVEYXRhMS5cbiAgICAgICAgZmlsdGVyKHggPT4geC5wYXJlbnRJZCA9PT0gaXRlbS5yb290SWQpO1xuXG4gICAgICBpZiAodGhpcy50cmVlQ29uZmlnMS5zaG93Q2hlY2tCb3gpIHtcbiAgICAgICAgbm9kZUNoaWxkcmVuLmZvckVhY2goeCA9PiB7XG4gICAgICAgICAgdGhpcy5jaGVja2VkTm9kZUxpc3QucHVzaCh7XG4gICAgICAgICAgICBtb2R1bGVJZDogdGhpcy5tb2R1bGVJZCxcbiAgICAgICAgICAgIGlkOiB4LmlkLFxuICAgICAgICAgICAgaXRlbU5hbWU6IHgubmFtZSxcbiAgICAgICAgICAgIGl0ZW1UeXBlOiBpdGVtVHlwZSxcbiAgICAgICAgICAgIGl0ZW1OdW1iZXJJZDogaXRlbS5kaXNwbGF5SWQudG9TdHJpbmcoKSxcbiAgICAgICAgICAgIHBhcmVudElkOiBpdGVtLnJvb3RJZCxcbiAgICAgICAgICAgIHBhcmVudE5hbWU6IGl0ZW0ucm9vdE5hbWVcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICBlbHNlIHtcbiAgICAgICAgbm9kZUNoaWxkcmVuLmZvckVhY2goeCA9PiB7XG4gICAgICAgICAgdGhpcy5zZWxlY3RlZE5vZGUucHVzaCh7XG4gICAgICAgICAgICBtb2R1bGVJZDogdGhpcy5tb2R1bGVJZCxcbiAgICAgICAgICAgIGlkOiB4LmlkLFxuICAgICAgICAgICAgaXRlbU5hbWU6IHgubmFtZSxcbiAgICAgICAgICAgIGl0ZW1UeXBlOiBpdGVtVHlwZSxcbiAgICAgICAgICAgIGl0ZW1OdW1iZXJJZDogaXRlbS5kaXNwbGF5SWQudG9TdHJpbmcoKSxcbiAgICAgICAgICAgIHBhcmVudElkOiBpdGVtLnJvb3RJZFxuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5kYXRhVHJlZXMudG9BcnJheSgpWzBdLnRvZG9JdGVtU2VsZWN0aW9uKFtub2RlXS5jb25jYXQobm9kZUNoaWxkcmVuKSk7XG4gICAgICBpZiAobm9kZVN1YmZvbGRlcnMpIHtcbiAgICAgICAgbm9kZVN1YmZvbGRlcnMuZm9yRWFjaChmb2xkZXIgPT4ge1xuICAgICAgICAgIHRoaXMuc2VsZWN0Tm9kZVJlY3Vyc2l2ZShmb2xkZXIsIGl0ZW1UeXBlKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybjtcbiAgfVxuXG4gIHNldFR5cGVQcm9jZXNzKGV4cGFuZCkge1xuICAgIHJldHVybiBleHBhbmQgPyB0aGlzLmRhdGFUeXBlLmFyZWEgOiB0aGlzLmRhdGFUeXBlLnByb2Nlc3M7XG4gIH1cblxuICBnZXRDb21tb25DaGVja2VkTm9kZShsaXN0OiBBcnJheTxUcmVlRmxhdE5vZGU+KSB7XG4gICAgdGhpcy5jaGVja2VkTm9kZUxpc3QgPSBbXTtcbiAgICB0aGlzLnNpbmdsZVByb2Nlc3NMaXN0ID0gW107XG4gICAgdGhpcy5jb21tb25DaGVja2VkTGlzdCA9IFtdO1xuICAgIHRoaXMuY2hlY2tlZE5vZGVMaXN0ID0gWy4uLnRoaXMuc2luZ2xlRG9jdW1lbnRMaXN0XTtcbiAgICBpZiAobGlzdC5sZW5ndGgpIHtcbiAgICAgIGxpc3QuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLmNoZWNrZWROb2RlTGlzdC5maW5kSW5kZXgoeCA9PiB4LmlkID09PSBpdGVtLmlkICYmIHgucGFyZW50SWQgPT09IGl0ZW0ucGFyZW50SWQpO1xuXG4gICAgICAgIGlmIChpdGVtLmlkICYmIGluZGV4IDwgMCkge1xuICAgICAgICAgIHRoaXMuY29tbW9uQ2hlY2tlZExpc3QucHVzaChpdGVtKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLnNpbmdsZVNlbGVjdGVkTm9kZSkge1xuICAgICAgICAgIGxldCBwb3NpdGlvbjogbnVtYmVyO1xuICAgICAgICAgIGlmIChpdGVtLmV4cGFuZGFibGUpIHtcbiAgICAgICAgICAgIHBvc2l0aW9uID0gdGhpcy50cmVlRGF0YTEuZmluZEluZGV4KHAgPT4gcC5yb290SWQgPT09IGl0ZW0uaWQpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHBvc2l0aW9uID0gdGhpcy50cmVlRGF0YTEuZmluZEluZGV4KHAgPT4gcC5jaGlsZElkID09PSBpdGVtLmlkKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHBvc2l0aW9uID4gLTEpIHtcbiAgICAgICAgICAgIHRoaXMuc2luZ2xlUHJvY2Vzc0xpc3QucHVzaCh7XG4gICAgICAgICAgICAgIG1vZHVsZUlkOiB0aGlzLm1vZHVsZUlkLFxuICAgICAgICAgICAgICBpZDogaXRlbS5pZCxcbiAgICAgICAgICAgICAgaXRlbU5hbWU6IGl0ZW0ubmFtZSxcbiAgICAgICAgICAgICAgaXRlbVR5cGU6ICh0aGlzLml0ZW1UeXBlID09PSAyKSA/IHRoaXMuc2V0VHlwZVByb2Nlc3MoaXRlbS5leHBhbmRhYmxlKSA6IHRoaXMuaXRlbVR5cGUsXG4gICAgICAgICAgICAgIGl0ZW1OdW1iZXJJZDogdGhpcy50cmVlRGF0YTFbcG9zaXRpb25dLmRpc3BsYXlJZC50b1N0cmluZygpLFxuICAgICAgICAgICAgICBwYXJlbnRJZDogaXRlbS5wYXJlbnRJZCxcbiAgICAgICAgICAgICAgbGV2ZWxUeXBlOiBpdGVtLmxldmVsVHlwZVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGl0ZW0uaWQgJiYgaW5kZXggPCAwICYmICFpdGVtLmV4cGFuZGFibGUgJiYgIXRoaXMuc2luZ2xlU2VsZWN0ZWROb2RlKSB7XG4gICAgICAgICAgY29uc3QgcG9zaXRpb24gPSB0aGlzLnRyZWVEYXRhMS5maW5kSW5kZXgocCA9PiBwLmNoaWxkSWQgPT09IGl0ZW0uaWQgJiYgcC5yb290SWQgPT09IGl0ZW0ucGFyZW50SWQpO1xuXG4gICAgICAgICAgaWYgKHBvc2l0aW9uID4gLTEpIHtcbiAgICAgICAgICAgIHRoaXMuY2hlY2tlZE5vZGVMaXN0LnB1c2goe1xuICAgICAgICAgICAgICBtb2R1bGVJZDogdGhpcy5tb2R1bGVJZCxcbiAgICAgICAgICAgICAgaWQ6IGl0ZW0uaWQsXG4gICAgICAgICAgICAgIGl0ZW1OYW1lOiBpdGVtLm5hbWUsXG4gICAgICAgICAgICAgIGl0ZW1UeXBlOiB0aGlzLml0ZW1UeXBlLFxuICAgICAgICAgICAgICBwYXJlbnRJZDogaXRlbS5wYXJlbnRJZCxcbiAgICAgICAgICAgICAgcGFyZW50TmFtZTogdGhpcy50cmVlRGF0YTFbcG9zaXRpb25dLnBhcmVudElkID8gdGhpcy50cmVlRGF0YTFbcG9zaXRpb25dLnN1Yk5hbWUgOiB0aGlzLnRyZWVEYXRhMVtwb3NpdGlvbl0ucm9vdE5hbWUsXG4gICAgICAgICAgICAgIGl0ZW1OdW1iZXJJZDogdGhpcy50cmVlRGF0YTFbcG9zaXRpb25dLmRpc3BsYXlJZC50b1N0cmluZygpLFxuICAgICAgICAgICAgICBsZXZlbFR5cGU6IGl0ZW0ubGV2ZWxUeXBlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICBpZiAodGhpcy5zaW5nbGVTZWxlY3RlZE5vZGUpIHtcbiAgICAgICAgdGhpcy5jaGVja2VkTm9kZUxpc3QgPSBbLi4udGhpcy5jaGVja2VkTm9kZUxpc3QsIC4uLnRoaXMuc2luZ2xlUHJvY2Vzc0xpc3RdO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5tYXhTZWxlY3RJdGVtQ291bnQgJiYgdGhpcy5tYXhTZWxlY3RJdGVtQ291bnQgPiAwKSB7XG4gICAgICAgIGNvbnN0IHJlbW92ZUxpc3QgPSB0aGlzLmNoZWNrZWROb2RlTGlzdC5zbGljZSgwLCB0aGlzLm1heFNlbGVjdEl0ZW1Db3VudCAqIC0xKTtcbiAgICAgICAgaWYgKHJlbW92ZUxpc3QubGVuZ3RoKSB7XG4gICAgICAgICAgcmVtb3ZlTGlzdC5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgICAgICAgdGhpcy5yZW1vdmVDaGVja2VkTm9kZUxpc3Qoe1xuICAgICAgICAgICAgICBpZDogaXRlbS5pZCxcbiAgICAgICAgICAgICAgbmFtZTogaXRlbS5pdGVtTmFtZSxcbiAgICAgICAgICAgICAgcGFyZW50SWQ6IGl0ZW0ucGFyZW50SWQsXG4gICAgICAgICAgICAgIGxldmVsOiAwLFxuICAgICAgICAgICAgICBleHBhbmRhYmxlOiB0cnVlLFxuICAgICAgICAgICAgICBoYXNDaGlsZDogdHJ1ZSxcbiAgICAgICAgICAgICAgZGlzYWJsZWQ6IGZhbHNlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmNoZWNrZWROb2RlTGlzdCA9IHRoaXMuY2hlY2tlZE5vZGVMaXN0LnNsaWNlKHRoaXMubWF4U2VsZWN0SXRlbUNvdW50ICogLTEpO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLnNlbGVjdGVkRGF0YSA9IHRoaXMuY29tbW9uQ2hlY2tlZExpc3Q7XG4gIH1cblxuICBnZXREb2N1bWVudENoZWNrZWROb2RlKGxpc3Q6IEFycmF5PFRyZWVGbGF0Tm9kZT4pIHtcbiAgICB0aGlzLmNoZWNrZWROb2RlTGlzdCA9IFtdO1xuICAgIHRoaXMuc2luZ2xlRG9jdW1lbnRMaXN0ID0gW107XG4gICAgdGhpcy5kb2N1bWVudENoZWNrZWRMaXN0ID0gW107XG4gICAgdGhpcy5jaGVja2VkTm9kZUxpc3QgPSBbLi4udGhpcy5zaW5nbGVQcm9jZXNzTGlzdF07XG4gICAgaWYgKGxpc3QubGVuZ3RoKSB7XG4gICAgICBsaXN0LmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5jaGVja2VkTm9kZUxpc3QuZmluZEluZGV4KHggPT4geC5pZCA9PT0gaXRlbS5pZCk7XG5cbiAgICAgICAgaWYgKGl0ZW0uaWQgJiYgaW5kZXggPCAwKSB7XG4gICAgICAgICAgdGhpcy5kb2N1bWVudENoZWNrZWRMaXN0LnB1c2goaXRlbSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5zaW5nbGVTZWxlY3RlZE5vZGUpIHtcbiAgICAgICAgICBsZXQgcG9zaXRpb246IG51bWJlcjtcbiAgICAgICAgICBpZiAoaXRlbS5leHBhbmRhYmxlKSB7XG4gICAgICAgICAgICBwb3NpdGlvbiA9IHRoaXMudHJlZURhdGEyLmZpbmRJbmRleChwID0+IHAucm9vdElkID09PSBpdGVtLmlkKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBwb3NpdGlvbiA9IHRoaXMudHJlZURhdGEyLmZpbmRJbmRleChwID0+IHAuY2hpbGRJZCA9PT0gaXRlbS5pZCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChwb3NpdGlvbiA+IC0xKSB7XG4gICAgICAgICAgICB0aGlzLnNpbmdsZURvY3VtZW50TGlzdC5wdXNoKHtcbiAgICAgICAgICAgICAgbW9kdWxlSWQ6IHRoaXMubW9kdWxlSWQsXG4gICAgICAgICAgICAgIGlkOiBpdGVtLmlkLFxuICAgICAgICAgICAgICBpdGVtTmFtZTogaXRlbS5uYW1lLFxuICAgICAgICAgICAgICBpdGVtVHlwZTogaXRlbS5leHBhbmRhYmxlID8gdGhpcy5kYXRhVHlwZS5mb2xkZXIgOiB0aGlzLmRhdGFUeXBlLmRvY3VtZW50LFxuICAgICAgICAgICAgICBpdGVtTnVtYmVySWQ6IHRoaXMudHJlZURhdGEyW3Bvc2l0aW9uXS5kaXNwbGF5SWQudG9TdHJpbmcoKSxcbiAgICAgICAgICAgICAgcGFyZW50SWQ6IGl0ZW0ucGFyZW50SWQsXG4gICAgICAgICAgICAgIGxldmVsVHlwZTogaXRlbS5sZXZlbFR5cGVcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpbmRleCA8IDAgJiYgIWl0ZW0uZXhwYW5kYWJsZSAmJiAhdGhpcy5zaW5nbGVTZWxlY3RlZE5vZGUpIHtcbiAgICAgICAgICBjb25zdCBwb3NpdGlvbiA9IHRoaXMudHJlZURhdGEyLmZpbmRJbmRleChwID0+IHAuY2hpbGRJZCA9PT0gaXRlbS5pZCk7XG4gICAgICAgICAgaWYgKHBvc2l0aW9uID4gLTEpIHtcbiAgICAgICAgICAgIHRoaXMuY2hlY2tlZE5vZGVMaXN0LnB1c2goe1xuICAgICAgICAgICAgICBtb2R1bGVJZDogdGhpcy5tb2R1bGVJZCxcbiAgICAgICAgICAgICAgaWQ6IGl0ZW0uaWQsXG4gICAgICAgICAgICAgIGl0ZW1OYW1lOiBpdGVtLm5hbWUsXG4gICAgICAgICAgICAgIGl0ZW1UeXBlOiB0aGlzLmRhdGFUeXBlLmRvY3VtZW50LFxuICAgICAgICAgICAgICBpdGVtTnVtYmVySWQ6IHRoaXMudHJlZURhdGEyW3Bvc2l0aW9uXS5kaXNwbGF5SWQudG9TdHJpbmcoKSxcbiAgICAgICAgICAgICAgcGFyZW50SWQ6IGl0ZW0ucGFyZW50SWQsXG4gICAgICAgICAgICAgIHBhcmVudE5hbWU6IHRoaXMudHJlZURhdGEyW3Bvc2l0aW9uXS5yb290TmFtZSxcbiAgICAgICAgICAgICAgbGV2ZWxUeXBlOiBpdGVtLmxldmVsVHlwZVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgaWYgKHRoaXMuc2luZ2xlU2VsZWN0ZWROb2RlKSB7XG4gICAgICAgIHRoaXMuY2hlY2tlZE5vZGVMaXN0ID0gWy4uLnRoaXMuY2hlY2tlZE5vZGVMaXN0LCAuLi50aGlzLnNpbmdsZURvY3VtZW50TGlzdF07XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLm1heFNlbGVjdEl0ZW1Db3VudCAmJiB0aGlzLm1heFNlbGVjdEl0ZW1Db3VudCA+IDApIHtcbiAgICAgICAgY29uc3QgcmVtb3ZlTGlzdCA9IHRoaXMuY2hlY2tlZE5vZGVMaXN0LnNsaWNlKDAsIHRoaXMubWF4U2VsZWN0SXRlbUNvdW50ICogLTEpO1xuICAgICAgICBpZiAocmVtb3ZlTGlzdC5sZW5ndGgpIHtcbiAgICAgICAgICByZW1vdmVMaXN0LmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgICAgICB0aGlzLnJlbW92ZUNoZWNrZWROb2RlTGlzdCh7XG4gICAgICAgICAgICAgIGlkOiBpdGVtLmlkLFxuICAgICAgICAgICAgICBuYW1lOiBpdGVtLml0ZW1OYW1lLFxuICAgICAgICAgICAgICBwYXJlbnRJZDogaXRlbS5wYXJlbnRJZCxcbiAgICAgICAgICAgICAgbGV2ZWw6IDAsXG4gICAgICAgICAgICAgIGV4cGFuZGFibGU6IHRydWUsXG4gICAgICAgICAgICAgIGhhc0NoaWxkOiB0cnVlLFxuICAgICAgICAgICAgICBkaXNhYmxlZDogZmFsc2VcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuY2hlY2tlZE5vZGVMaXN0ID0gdGhpcy5jaGVja2VkTm9kZUxpc3Quc2xpY2UodGhpcy5tYXhTZWxlY3RJdGVtQ291bnQgKiAtMSk7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuc2VsZWN0ZWREYXRhMiA9IHRoaXMuZG9jdW1lbnRDaGVja2VkTGlzdDtcbiAgfVxuXG4gIG9uQ2xvc2VDbGljaygpOiB2b2lkIHtcbiAgICB0aGlzLnNlbGVjdGVkRm9sZGVyID0gbnVsbDtcbiAgICB0aGlzLml0ZW1JblNwbGl0dmlldyA9IFtdO1xuICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKCk7XG4gIH07XG5cbiAgYXN5bmMgb25BZGRDbGljaygpIHtcbiAgICB0aGlzLnNlbGVjdGVkRm9sZGVyID0gbnVsbDtcbiAgICB0aGlzLml0ZW1JblNwbGl0dmlldyA9IFtdO1xuICAgIGxldCBpbWFnZVJlbGF0aXZlVXJsID0gXCJcIjtcbiAgICBsZXQgcmVxdWVzdFVwbG9hZFZpZGVvVXJsID0gXCJcIjtcblxuICAgIHRoaXMuY2hlY2tlZE5vZGVMaXN0LmZvckVhY2goZWxlbWVudCA9PiB7XG4gICAgICBpZiAoZWxlbWVudC5pdGVtVHlwZSA9PT0gRGF0YVR5cGUuZG9jdW1lbnQpIHtcbiAgICAgICAgZWxlbWVudC5zdGF0dXMgPSB0aGlzLmdldFN0YXR1c0RvY3MoZWxlbWVudC5pZCk7XG4gICAgICAgIGVsZW1lbnQuYnJlYWRjdW1icyA9IHRoaXMuZ2V0QnJlYWRjdW1iQWxsUGFyZW50RG9jcyhlbGVtZW50LmlkKS5zbGljZSgxKS5yZXZlcnNlKCk7XG4gICAgICAgIGVsZW1lbnQuc3RhdHVzTmFtZSA9IHRoaXMuZ2V0U3RhdHVzTmFtZShlbGVtZW50LmlkKTtcbiAgICAgIH1cbiAgICAgIGlmIChlbGVtZW50Lml0ZW1UeXBlID09PSBEYXRhVHlwZS5wcm9jZXNzKSB7XG4gICAgICAgIGVsZW1lbnQuc3RhdHVzID0gdGhpcy5nZXRTdGF0dXNQcm9jZXNzKGVsZW1lbnQuaWQpO1xuICAgICAgICBlbGVtZW50LmJyZWFkY3VtYnMgPSB0aGlzLmdldEJyZWFkY3VtYkFsbFBhcmVudFByb2Nlc3MoZWxlbWVudC5pZCkuc2xpY2UoMSkucmV2ZXJzZSgpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgaWYgKCF0aGlzLmNhblVwbG9hZEltYWdlICYmICF0aGlzLmNhblVwbG9hZFZpZGVvKVxuICAgICAgcmV0dXJuIHRoaXMuZGlhbG9nUmVmLmNsb3NlKHRoaXMuY2hlY2tlZE5vZGVMaXN0KTtcblxuICAgIGlmICh0aGlzLm9yaWdpblZpZGVvRGF0YVNyYyAmJiAhdGhpcy52aWRlb0RhdGEuc3JjKSB7XG4gICAgICB0aGlzLnZpZGVvRGF0YS5zcmMgPSB0aGlzLm9yaWdpblZpZGVvRGF0YVNyYztcbiAgICB9XG4gICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UodGhpcy52aWRlb0RhdGEpO1xuICB9XG5cbiAgZ2V0U3RhdHVzTmFtZShpZCkge1xuICAgIGxldCBzdGF0dXNOYW1lID0gJydcbiAgICB0aGlzLnRyZWVEYXRhMi5mb3JFYWNoKHggPT4ge1xuICAgICAgaWYgKGlkLnRvU3RyaW5nKCkgPT09IHguY2hpbGRJZCkge1xuICAgICAgICBzdGF0dXNOYW1lID0geC5zdGF0dXNOYW1lO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHN0YXR1c05hbWU7XG4gIH1cblxuICBnZXRCcmVhZGN1bWJBbGxQYXJlbnRQcm9jZXNzKGlkKSB7XG4gICAgbGV0IHRlbXBQYXJlbnQgPSBbXTtcbiAgICB0aGlzLmNoZWNrQnJlYWRjdW1iUHJvY2VzcyhpZCwgdGVtcFBhcmVudCwgZnVuY3Rpb24gKGFycikge1xuICAgICAgdGVtcFBhcmVudCA9IFsuLi5hcnJdO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHRlbXBQYXJlbnQ7XG4gIH1cblxuICBnZXRCcmVhZGN1bWJBbGxQYXJlbnREb2NzKGlkKSB7XG4gICAgbGV0IHRlbXBQYXJlbnQgPSBbXTtcbiAgICB0aGlzLmNoZWNrQnJlYWRjdW1iRG9jdW1lbnQoaWQsIHRlbXBQYXJlbnQsIGZ1bmN0aW9uIChhcnIpIHtcbiAgICAgIHRlbXBQYXJlbnQgPSBbLi4uYXJyXTtcbiAgICB9KTtcblxuICAgIHJldHVybiB0ZW1wUGFyZW50O1xuICB9XG5cbiAgY2hlY2tCcmVhZGN1bWJQcm9jZXNzKGlkLCBicmVhZGN1bWJzLCBjYWxsYmFjaykge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy50cmVlQ29udHJvbE5vZGVQcm9jZXNzLmRhdGFOb2Rlcy5sZW5ndGg7IGkrKykge1xuICAgICAgY29uc3QgdHJlZSA9IHRoaXMudHJlZUNvbnRyb2xOb2RlUHJvY2Vzcy5kYXRhTm9kZXNbaV07XG4gICAgICBpZiAoaWQgPT0gdHJlZS5pZCkge1xuICAgICAgICBicmVhZGN1bWJzID0gWy4uLmJyZWFkY3VtYnMsIHRyZWVdO1xuICAgICAgICBpZiAodHJlZS5wYXJlbnRJZCkge1xuICAgICAgICAgIHRoaXMuY2hlY2tCcmVhZGN1bWJQcm9jZXNzKHRyZWUucGFyZW50SWQsIGJyZWFkY3VtYnMsIGNhbGxiYWNrKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjYWxsYmFjayhicmVhZGN1bWJzKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGNoZWNrQnJlYWRjdW1iRG9jdW1lbnQoaWQsIGJyZWFkY3VtYnMsIGNhbGxiYWNrKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnRyZWVDb250cm9sTm9kZURvY3VtZW50LmRhdGFOb2Rlcy5sZW5ndGg7IGkrKykge1xuICAgICAgY29uc3QgdHJlZSA9IHRoaXMudHJlZUNvbnRyb2xOb2RlRG9jdW1lbnQuZGF0YU5vZGVzW2ldO1xuICAgICAgaWYgKGlkID09IHRyZWUuaWQpIHtcbiAgICAgICAgYnJlYWRjdW1icyA9IFsuLi5icmVhZGN1bWJzLCB0cmVlXTtcbiAgICAgICAgaWYgKHRyZWUucGFyZW50SWQpIHtcbiAgICAgICAgICB0aGlzLmNoZWNrQnJlYWRjdW1iRG9jdW1lbnQodHJlZS5wYXJlbnRJZCwgYnJlYWRjdW1icywgY2FsbGJhY2spO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNhbGxiYWNrKGJyZWFkY3VtYnMpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgc2VsZWN0VHJlZUNvbnRyb2xOb2RlRG9jdW1lbnQodHJlZU5vZGVzKSB7XG4gICAgdGhpcy50cmVlQ29udHJvbE5vZGVEb2N1bWVudCA9IG51bGw7XG4gICAgdGhpcy50cmVlQ29udHJvbE5vZGVEb2N1bWVudCA9IHRyZWVOb2RlcztcbiAgICB0aGlzLnRyZWVDb250cm9sTm9kZURvY3VtZW50LmRhdGFOb2RlcyA9IHRoaXMudHJlZUNvbnRyb2xOb2RlRG9jdW1lbnQuZGF0YU5vZGVzLmZpbHRlcih4ID0+IHgubmFtZSAhPT0gbnVsbCAmJiB4Lm5hbWUgIT09ICcnKTtcblxuICB9XG5cbiAgc2VsZWN0VHJlZUNvbnRyb2xOb2RlUHJvY2Vzcyh0cmVlTm9kZXMpIHtcbiAgICB0aGlzLnRyZWVDb250cm9sTm9kZVByb2Nlc3MgPSBudWxsO1xuICAgIHRoaXMudHJlZUNvbnRyb2xOb2RlUHJvY2VzcyA9IHRyZWVOb2RlcztcbiAgICB0aGlzLnRyZWVDb250cm9sTm9kZVByb2Nlc3MuZGF0YU5vZGVzID0gdGhpcy50cmVlQ29udHJvbE5vZGVQcm9jZXNzLmRhdGFOb2Rlcy5maWx0ZXIoeCA9PiB4Lm5hbWUgIT09IG51bGwgJiYgeC5uYW1lICE9PSAnJyk7XG4gIH1cblxuICBnZXRTdGF0dXNEb2NzKGlkKSB7XG4gICAgcmV0dXJuIHRoaXMudHJlZURhdGEyLmZpbHRlcih4ID0+IHguY2hpbGRJZCA9PT0gaWQpWzBdLnN0YXR1c0lkO1xuICB9XG5cbiAgZ2V0U3RhdHVzUHJvY2VzcyhpZCkge1xuICAgIHJldHVybiB0aGlzLnRyZWVEYXRhMS5maWx0ZXIoeCA9PiB4LmNoaWxkSWQgPT09IGlkKVswXS5zdGF0dXNJZDtcbiAgfVxuXG4gIGdldE9mZnNldEhlaWdodChlbGVtZW50OiBIVE1MRWxlbWVudCwgaW5jbHVkZU1hcmdpbjogYm9vbGVhbik6IG51bWJlciB7XG4gICAgbGV0IGVsbUhlaWdodCA9IDAsIGVsbU1hcmdpbiA9IDA7XG5cbiAgICBlbG1IZWlnaHQgPSBlbGVtZW50Lm9mZnNldEhlaWdodDtcbiAgICBpZiAoaW5jbHVkZU1hcmdpbikge1xuICAgICAgY29uc3Qgc3R5bGUgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KTtcbiAgICAgIGVsbU1hcmdpbiA9IHBhcnNlRmxvYXQoc3R5bGUubWFyZ2luVG9wLnJlcGxhY2UoJ3B4JywgJycpKSArIHBhcnNlRmxvYXQoc3R5bGUubWFyZ2luQm90dG9tLnJlcGxhY2UoJ3B4JywgJycpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gKGVsbUhlaWdodCArIGVsbU1hcmdpbik7XG4gIH1cblxuICBnZXRJdGVtQ2hpcE5hbWUoaXRlbTogU2VsZWN0ZWROb2RlKSB7XG4gICAgaWYgKGl0ZW0uaXRlbVR5cGUgPT09IERhdGFUeXBlLmNoZWNrbGlzdCB8fCBpdGVtLml0ZW1UeXBlID09PSBEYXRhVHlwZS5kZXZpYXRpb24pIHtcbiAgICAgIHJldHVybiAoaXRlbS5wYXJlbnROYW1lICYmIGl0ZW0uaXRlbU5hbWUgIT09IGl0ZW0ucGFyZW50TmFtZSkgPyBgJHtpdGVtLnBhcmVudE5hbWV9LyR7aXRlbS5pdGVtTmFtZX1gIDogaXRlbS5pdGVtTmFtZTtcbiAgICB9XG4gICAgcmV0dXJuIGl0ZW0uaXRlbU5hbWU7XG4gIH1cblxuICBpc0VsbGlwc2lzQWN0aXZlKGU6IEhUTUxFbGVtZW50KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGUgPyAoZS5jbGllbnRXaWR0aCA8IGUuc2Nyb2xsV2lkdGgpIDogZmFsc2U7XG4gIH1cblxuICBnZXROb2RlSWNvbihpdGVtOiBJUmVsYXRlZCkge1xuICAgIHN3aXRjaCAoaXRlbS5pdGVtVHlwZSkge1xuICAgICAgY2FzZSBEYXRhVHlwZS5mb2xkZXI6IHtcbiAgICAgICAgc3dpdGNoIChpdGVtLmxldmVsVHlwZSkge1xuICAgICAgICAgIGNhc2UgRG9jdW1lbnROb2RlVHlwZS5EZXBhcnRtZW50Rm9sZGVyOlxuICAgICAgICAgICAgcmV0dXJuICdkZXBhcnRtZW50X2ZvbGRlcl9vdXRsaW5lZCc7XG4gICAgICAgICAgY2FzZSBEb2N1bWVudE5vZGVUeXBlLlJlZ2lvbmFsRm9sZGVyOlxuICAgICAgICAgICAgcmV0dXJuICdyZWdpb25hbF9mb2xkZXJfb3V0bGluZWQnO1xuICAgICAgICAgIGNhc2UgRG9jdW1lbnROb2RlVHlwZS5Ub3BGb2xkZXI6XG4gICAgICAgICAgICByZXR1cm4gJ2VudGVycHJpc2VfZm9sZGVyX291dGxpbmVkJztcbiAgICAgICAgICBjYXNlIERvY3VtZW50Tm9kZVR5cGUuRm9sZGVyOlxuICAgICAgICAgICAgcmV0dXJuICdsb2NhbF9mb2xkZXJfb3V0bGluZWQnO1xuICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICByZXR1cm4gJ2ZvbGRlcl9vdXRsaW5lZCc7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGNhc2UgRGF0YVR5cGUuZG9jdW1lbnQ6IHtcbiAgICAgICAgc3dpdGNoIChpdGVtLmxldmVsVHlwZSkge1xuICAgICAgICAgIGNhc2UgRG9jdW1lbnROb2RlVHlwZS5EZXBhcnRtZW50Rm9sZGVyOlxuICAgICAgICAgICAgcmV0dXJuICdkb2N1bWVudF9kZXBhcnRtZW50JztcbiAgICAgICAgICBjYXNlIERvY3VtZW50Tm9kZVR5cGUuUmVnaW9uYWxGb2xkZXI6XG4gICAgICAgICAgICByZXR1cm4gJ2RvY3VtZW50X3JlZ2lvbmFsJztcbiAgICAgICAgICBjYXNlIERvY3VtZW50Tm9kZVR5cGUuVG9wRm9sZGVyOlxuICAgICAgICAgICAgcmV0dXJuICdkb2N1bWVudF9lbnRlcnByaXNlJztcbiAgICAgICAgICBjYXNlIERvY3VtZW50Tm9kZVR5cGUuRm9sZGVyOlxuICAgICAgICAgICAgcmV0dXJuICdkb2N1bWVudF9sb2NhbCc7XG4gICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHJldHVybiAnZG9jdW1lbnQnO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBjYXNlIERhdGFUeXBlLmFyZWE6XG4gICAgICAgIHJldHVybiAncHJvY2Vzc19hcmVhX291dGxpbmVkJztcbiAgICAgIGNhc2UgRGF0YVR5cGUucHJvY2VzczpcbiAgICAgICAgcmV0dXJuICdwcm9jZXNzJztcbiAgICAgIGNhc2UgRGF0YVR5cGUuZGV2aWF0aW9uOlxuICAgICAgICByZXR1cm4gJ2RldmlhdGlvbic7XG4gICAgICBjYXNlIERhdGFUeXBlLmNoZWNrbGlzdDpcbiAgICAgICAgcmV0dXJuICdjaGVja2xpc3QnO1xuICAgICAgY2FzZSBEYXRhVHlwZS5yaXNrOlxuICAgICAgICByZXR1cm4gJ3Jpc2snO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuICdmb2xkZXJfb3V0bGluZWQnO1xuICAgIH1cbiAgfVxuXG4gIGdldFNlYXJjaE9yZGVyKCkge1xuICAgIGxldCBzZWFyY2hUeXBlcyA9IE9iamVjdC5rZXlzKHRoaXMuZGF0YVR5cGUpXG4gICAgICAubWFwKGtleSA9PiAoeyB2YWx1ZTogdGhpcy5kYXRhVHlwZVtrZXldLCBrZXk6IGtleSB9KSk7XG4gICAgc2VhcmNoVHlwZXMgPSBzZWFyY2hUeXBlcy5zbGljZShzZWFyY2hUeXBlcy5sZW5ndGggLyAyKTtcbiAgICByZXR1cm4gc2VhcmNoVHlwZXM7XG4gIH1cblxuICBnZXRUaXRsZSh0eXBlOiBudW1iZXIpIHtcbiAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgIGNhc2UgRGF0YVR5cGUucHJvY2VzczpcbiAgICAgICAgcmV0dXJuIHRoaXMuTEFORy5QUk9DRVNTRVM7XG4gICAgICBjYXNlIERhdGFUeXBlLmFyZWE6XG4gICAgICAgIHJldHVybiB0aGlzLkxBTkcuUFJPQ0VTU19BUkVBO1xuICAgICAgY2FzZSBEYXRhVHlwZS5kb2N1bWVudDpcbiAgICAgICAgcmV0dXJuIHRoaXMuTEFORy5ET0NVTUVOVFM7XG4gICAgICBjYXNlIERhdGFUeXBlLmZvbGRlcjpcbiAgICAgICAgcmV0dXJuIHRoaXMuTEFORy5GT0xERVI7XG4gICAgICBjYXNlIERhdGFUeXBlLmRldmlhdGlvbjpcbiAgICAgICAgcmV0dXJuIHRoaXMuTEFORy5ERVZJQVRJT047XG4gICAgICBjYXNlIERhdGFUeXBlLmRldmlhdGlvblR5cGU6XG4gICAgICAgIHJldHVybiB0aGlzLkxBTkcuREVWSUFUSU9OX1RZUEU7XG4gICAgICBjYXNlIERhdGFUeXBlLmNoZWNrbGlzdDpcbiAgICAgICAgcmV0dXJuIHRoaXMuTEFORy5DSEVDS0xJU1Q7XG4gICAgICBjYXNlIERhdGFUeXBlLmNoZWNrbGlzdENhdGVnb3J5OlxuICAgICAgICByZXR1cm4gdGhpcy5MQU5HLkNIRUNLTElTVF9DQVRFR09SWTtcbiAgICAgIGNhc2UgRGF0YVR5cGUucmlzazpcbiAgICAgICAgcmV0dXJuIHRoaXMuTEFORy5BU1NFU1NNRU5UO1xuICAgICAgY2FzZSBEYXRhVHlwZS5yaXNrRm9sZGVyOlxuICAgICAgICByZXR1cm4gdGhpcy5MQU5HLkZPTERFUjtcbiAgICB9XG4gIH1cblxuICBnZXRQYXJlbnROYW1lKGl0ZW06IElSZWxhdGVkKSB7XG4gICAgaWYgKGl0ZW0uaXRlbVR5cGUgPT09IHRoaXMuZGF0YVR5cGUuY2hlY2tsaXN0IHx8IGl0ZW0uaXRlbVR5cGUgPT09IHRoaXMuZGF0YVR5cGUuZGV2aWF0aW9uKSB7XG4gICAgICByZXR1cm4gaXRlbS5wYXJlbnROYW1lO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGdldEl0ZW1JZChpdGVtOiBJUmVsYXRlZCkge1xuICAgIGlmIChpdGVtLml0ZW1UeXBlID09PSB0aGlzLmRhdGFUeXBlLnByb2Nlc3MpIHtcbiAgICAgIHJldHVybiBgJHt0aGlzLkxBTkcuUFJPQ0VTU19JRH06ICR7aXRlbS5pdGVtTnVtYmVySWR9OyAke2l0ZW0uc3RhdHVzTmFtZX1gO1xuICAgIH1cbiAgICBlbHNlIGlmIChpdGVtLml0ZW1UeXBlID09PSB0aGlzLmRhdGFUeXBlLmRvY3VtZW50KSB7XG4gICAgICByZXR1cm4gYCR7dGhpcy5MQU5HLkRPQ1VNRU5UX0lEfTogJHtpdGVtLml0ZW1OdW1iZXJJZH07ICR7aXRlbS5zdGF0dXNOYW1lfWA7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgdG9nZ2xlU2VsZWN0SXRlbShub2RlOiBJUmVsYXRlZCkge1xuICAgIGNvbnN0IHNlbGVjdGVkTm9kZSA9IHRoaXMuY2hlY2tlZE5vZGVMaXN0LmZpbmQoeCA9PiAoeC5pZC50b0xvd2VyQ2FzZSgpID09PSBub2RlLmlkLnRvTG93ZXJDYXNlKCkgJiYgeC5wYXJlbnRJZD8udG9Mb3dlckNhc2UoKSA9PT0gbm9kZS5wYXJlbnRJZD8udG9Mb3dlckNhc2UoKSkpO1xuXG4gICAgaWYgKHNlbGVjdGVkTm9kZSkge1xuICAgICAgdGhpcy5yZW1vdmVDaGVja2VkTm9kZUxpc3Qoe1xuICAgICAgICBpZDogc2VsZWN0ZWROb2RlLmlkLFxuICAgICAgICBuYW1lOiBub2RlLml0ZW1OYW1lLFxuICAgICAgICBwYXJlbnRJZDogc2VsZWN0ZWROb2RlLnBhcmVudElkLFxuICAgICAgICBoYXNDaGlsZDogZmFsc2UsXG4gICAgICAgIGV4cGFuZGFibGU6IGZhbHNlLFxuICAgICAgICBsZXZlbDogMCxcbiAgICAgICAgZGlzYWJsZWQ6IGZhbHNlLFxuICAgICAgfSk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgdGhpcy5zZWxlY3RSZWxhdGVkKG5vZGUpO1xuICAgIH1cbiAgfVxuXG4gIGlzTm9kZVNlbGVjdGVkKG5vZGUpIHtcbiAgICByZXR1cm4gdGhpcy5jaGVja2VkTm9kZUxpc3QuZmlsdGVyKHggPT4gKHguaWQudG9Mb3dlckNhc2UoKSA9PT0gbm9kZS5pZC50b0xvd2VyQ2FzZSgpICYmIHgucGFyZW50SWQ/LnRvTG93ZXJDYXNlKCkgPT09IG5vZGUucGFyZW50SWQ/LnRvTG93ZXJDYXNlKCkpKS5sZW5ndGggPiAwO1xuICB9XG5cbiAgZ2V0Q2hpbGRyZW5PZkZvbGRlcihub2RlOiBUcmVlRmxhdE5vZGUsIHR5cGU6IERhdGFUeXBlKSB7XG4gICAgaWYgKHRoaXMuc3BsaXRWaWV3KSB7XG4gICAgICBjb25zdCBwYXJlbnRUZXh0cyA9IHRoaXMuZWxlbS5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy50ZXh0LW5vZGUtcGFyZW50Jyk7XG4gICAgICBbXS5mb3JFYWNoLmNhbGwocGFyZW50VGV4dHMsIChlbCkgPT4ge1xuICAgICAgICBlbC5jbGFzc0xpc3QucmVtb3ZlKCdhY3RpdmUtaXRlbScpO1xuICAgICAgfSk7XG4gICAgICBjb25zdCBpdGVtRWxlbWVudCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoYCNfJHtub2RlLnBhcmVudElkID8gbm9kZS5wYXJlbnRJZCA6ICcnfV8ke25vZGUuaWR9XyR7bm9kZS5sZXZlbH1gKTtcbiAgICAgIFtdLmZvckVhY2guY2FsbChpdGVtRWxlbWVudCwgKGVsKSA9PiB7XG4gICAgICAgIGVsLmNsYXNzTGlzdC5hZGQoJ2FjdGl2ZS1pdGVtJyk7XG4gICAgICB9KTtcbiAgICAgIGlmICh0eXBlID09PSB0aGlzLmRhdGFUeXBlLmZvbGRlcikge1xuICAgICAgICB0aGlzLnNwbGl0Vmlld1RpdGxlID0gYCR7dGhpcy5MQU5HLk1FU1NBR0UuRE9DVU1FTlRTX0lOLnRvVXBwZXJDYXNlKCl9IFwiJHtub2RlLm5hbWV9XCJgO1xuICAgICAgfVxuICAgICAgZWxzZSBpZiAodHlwZSA9PT0gdGhpcy5kYXRhVHlwZS5hcmVhKSB7XG4gICAgICAgIHRoaXMuc3BsaXRWaWV3VGl0bGUgPSBgJHt0aGlzLkxBTkcuTUVTU0FHRS5QUk9DRVNTRVNfSU4udG9VcHBlckNhc2UoKX0gXCIke25vZGUubmFtZX1cImA7XG4gICAgICB9XG4gICAgICBsZXQgaXRlbSA9IG5ldyBJUmVsYXRlZCgpO1xuICAgICAgaXRlbS5pZCA9IG5vZGUuaWQ7XG4gICAgICBpdGVtLml0ZW1UeXBlID0gdHlwZTtcbiAgICAgIGl0ZW0uaXRlbU5hbWUgPSBub2RlLm5hbWU7XG4gICAgICBpdGVtLmxldmVsVHlwZSA9IG5vZGUubGV2ZWxUeXBlO1xuICAgICAgdGhpcy5zZWxlY3RlZEZvbGRlciA9IG5vZGU7XG4gICAgICB0aGlzLnBhcmVudE5vZGVTZWxlY3RlZCA9IG5ldyBUcmVlRmxhdE5vZGUoKTtcbiAgICAgIHRoaXMucGFyZW50Tm9kZVNlbGVjdGVkID0geyAuLi5ub2RlIH07XG4gICAgICB0aGlzLm9uRXhwYW5kRm9sZGVyLmVtaXQoaXRlbSk7XG4gICAgfVxuICB9XG5cbiAgY2FuU2hvd1NlYXJjaE9wdGlvbihtb2R1bGVJZDogbnVtYmVyKSB7XG4gICAgaWYgKHRoaXMuY2FuT25seVNlbGVjdEl0ZW0gJiZcbiAgICAgIChtb2R1bGVJZCA9PT0gRGF0YVR5cGUuY2hlY2tsaXN0Q2F0ZWdvcnlcbiAgICAgICAgfHwgbW9kdWxlSWQgPT09IERhdGFUeXBlLnJpc2tGb2xkZXJcbiAgICAgICAgfHwgbW9kdWxlSWQgPT09IERhdGFUeXBlLmRldmlhdGlvblR5cGVcbiAgICAgICAgfHwgKG1vZHVsZUlkID09PSBEYXRhVHlwZS5hcmVhICYmIHRoaXMudHJlZUNvbmZpZzEgJiYgIXRoaXMudHJlZUNvbmZpZzEuc2luZ2xlU2VsZWN0ZWROb2RlKVxuICAgICAgICB8fCAobW9kdWxlSWQgPT09IERhdGFUeXBlLmZvbGRlciAmJiB0aGlzLnRyZWVDb25maWcyICYmICF0aGlzLnRyZWVDb25maWcyLnNpbmdsZVNlbGVjdGVkTm9kZSlcbiAgICAgICkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuZ2V0TW9kdWxlRmlsdGVyZWRPcHRpb25zKG1vZHVsZUlkKS5sZW5ndGggPiAwO1xuICB9XG5cbiAgc2VsZWN0Tm9kZVRyZWVFdmVudChub2RlOiBUcmVlRmxhdE5vZGUpIHtcbiAgICBjb25zdCBpbmRleCA9IHRoaXMuY29tbW9uQ2hlY2tlZExpc3QuZmluZEluZGV4KHggPT4geC5pZC50b0xvd2VyQ2FzZSgpID09PSBub2RlLmlkLnRvTG93ZXJDYXNlKClcbiAgICAgICYmICghbm9kZS5wYXJlbnRJZCB8fCB4LnBhcmVudElkPy50b0xvd2VyQ2FzZSgpID09PSBub2RlLnBhcmVudElkPy50b0xvd2VyQ2FzZSgpKSAmJiB4LmV4cGFuZGFibGUgPT09IG5vZGUuZXhwYW5kYWJsZSk7XG4gICAgaWYgKGluZGV4ID49IDApIHtcbiAgICAgIHRoaXMuY29tbW9uQ2hlY2tlZExpc3QgPSB0aGlzLmNvbW1vbkNoZWNrZWRMaXN0LmZpbHRlcigoXywgaW5kKSA9PiBpbmQgIT09IGluZGV4KTtcbiAgICAgIHRoaXMudmlkZW9EYXRhLnNyYyA9IHRoaXMub3JpZ2luVmlkZW9EYXRhU3JjO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIHRoaXMudmlkZW9EYXRhLnNyYyA9IGAvdmlkZW8/aWQ9JHtub2RlLmlkfWA7XG4gICAgICB0aGlzLmNvbW1vbkNoZWNrZWRMaXN0ID0gWy4uLnRoaXMuY29tbW9uQ2hlY2tlZExpc3QsIG5vZGVdO1xuICAgIH1cbiAgICB0aGlzLnNlbGVjdGVkRGF0YSA9IHRoaXMuY29tbW9uQ2hlY2tlZExpc3Q7XG4gIH1cblxuICBzZWxlY3ROb2RlVHJlZTJFdmVudChub2RlOiBUcmVlRmxhdE5vZGUpIHtcbiAgICBjb25zdCBpbmRleCA9IHRoaXMuZG9jdW1lbnRDaGVja2VkTGlzdC5maW5kSW5kZXgoeCA9PiB4LmlkLnRvTG93ZXJDYXNlKCkgPT09IG5vZGUuaWQudG9Mb3dlckNhc2UoKVxuICAgICAgJiYgKCFub2RlLnBhcmVudElkIHx8IHgucGFyZW50SWQ/LnRvTG93ZXJDYXNlKCkgPT09IG5vZGUucGFyZW50SWQ/LnRvTG93ZXJDYXNlKCkpICYmIHguZXhwYW5kYWJsZSA9PT0gbm9kZS5leHBhbmRhYmxlKTtcbiAgICBpZiAoaW5kZXggPj0gMCkge1xuICAgICAgdGhpcy5kb2N1bWVudENoZWNrZWRMaXN0ID0gdGhpcy5kb2N1bWVudENoZWNrZWRMaXN0LmZpbHRlcigoXywgaW5kKSA9PiBpbmQgIT09IGluZGV4KTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICB0aGlzLmRvY3VtZW50Q2hlY2tlZExpc3QgPSBbLi4udGhpcy5kb2N1bWVudENoZWNrZWRMaXN0LCBub2RlXTtcbiAgICB9XG4gICAgdGhpcy5zZWxlY3RlZERhdGEyID0gdGhpcy5kb2N1bWVudENoZWNrZWRMaXN0O1xuICB9XG5cbiAgZ2V0Q2hpbGROb2RlU2VsZWN0T25lKGxpc3RDaGlsZHJlbikge1xuICAgIHRoaXMubGlzdENoaWxkcmVuU2VsZWN0T25lID0gW107XG4gICAgdGhpcy5saXN0Q2hpbGRyZW5TZWxlY3RPbmUgPSBsaXN0Q2hpbGRyZW47XG4gIH1cblxuICBoYXNTZWxlY3RlZChyZWxhdGVkOiBJUmVsYXRlZCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGFyckRpc2FibGVkTGlzdCA9IHRoaXMuZGlzYWJsZWRMaXN0LmNvbmNhdCh0aGlzLmRpc2FibGVkTGlzdDIpO1xuICAgIHJldHVybiBhcnJEaXNhYmxlZExpc3Quc29tZShub2RlID0+IG5vZGUuaWQudG9VcHBlckNhc2UoKSA9PT0gcmVsYXRlZC5pZC50b1VwcGVyQ2FzZSgpICYmICghcmVsYXRlZC5wYXJlbnRJZCB8fCByZWxhdGVkLnBhcmVudElkPy50b0xvd2VyQ2FzZSgpID09PSBub2RlLnBhcmVudElkPy50b0xvd2VyQ2FzZSgpKSk7XG4gIH1cblxuICB0b1JlbGF0ZWRPcHRpb25zKHJlbGF0ZWRzOiBJUmVsYXRlZFtdKTogUmVsYXRlZE9wdGlvbltdIHtcbiAgICBjb25zdCByZXN1bHRzOiBSZWxhdGVkT3B0aW9uW10gPSBbXTtcbiAgICBmb3IgKGNvbnN0IHJlbGF0ZWQgb2YgcmVsYXRlZHMpIHtcbiAgICAgIHJlc3VsdHMucHVzaCh7IC4uLnJlbGF0ZWQsIGRpc2FibGVkOiB0aGlzLmhhc1NlbGVjdGVkKHJlbGF0ZWQpIH0pO1xuICAgIH1cblxuICAgIHJldHVybiByZXN1bHRzO1xuICB9XG5cbiAgZGlzcGxheVdoZW5TZWxlY3RSZWxhdGVkT3B0aW9uKCRldmVudDogYW55KTogc3RyaW5nIHwgbnVsbCB7XG4gICAgcmV0dXJuICcnO1xuICB9XG5cbiAgcmVmcmVzaFJlbGF0ZWRPcHRpb25zKCk6IHZvaWQge1xuICAgIHRoaXMuZmlsdGVyZWRPcHRpb25zID0gdGhpcy50b1JlbGF0ZWRPcHRpb25zKHRoaXMuZmlsdGVyZWRPcHRpb25zKTtcbiAgfVxuXG4gIGNsZWFyUU1TSW5wdXRJbWFnZUZpbGUoKSB7XG4gICAgdGhpcy5xbXNJbnB1dEltYWdlRmlsZSA9IG51bGw7XG4gIH1cblxuICBjbGVhclFNU0lucHV0VmlkZW9GaWxlKCkge1xuICAgIHRoaXMucW1zSW5wdXRWaWRlb0ZpbGUgPSBudWxsO1xuICAgIHRoaXMuZGF0YVRyZWVzLnRvQXJyYXkoKVswXS50cmVlQ29udHJvbC5kYXRhTm9kZXMubWFwKHggPT4geC5kaXNhYmxlZCA9IGZhbHNlKTtcbiAgfVxuXG4gIGFzeW5jIG9uQ2hhbmdlSW1hZ2UoZXZlbnQ6IGFueSkge1xuICAgIHRoaXMuaXNMb2FkaW5nSW1hZ2VGaWxlID0gdHJ1ZTtcblxuICAgIGlmICghdGhpcy5xbXNJbnB1dEltYWdlRmlsZT8uaXNTdWNjZXNzZnVsICYmIHRoaXMubWF4VmlkZW9UaHVtYm5haWxTaXplS0IpIHtcbiAgICAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nLm9wZW4oUU1TVXBsb2FkRmlsZUVycm9yRGlhbG9nLCB7XG4gICAgICAgIHdpZHRoOiAnNTAwcHgnLFxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgZmlsZU5hbWVzOiB0aGlzLnFtc0lucHV0SW1hZ2VGaWxlLnR5cGVFcnJvciA9PSBGaWxlRXJyb3JUeXBlLm5vdFN1cHBvcnRlZEV4dGVuc2lvbiA/IFt0aGlzLnFtc0lucHV0SW1hZ2VGaWxlLmZpbGVOYW1lXSA6IFtdLFxuICAgICAgICAgIGFjY2VwdGVkRXh0ZW5zaW9uOiB0aGlzLmFjY2VwdEV4dGVuc2lvbnMsXG4gICAgICAgICAgb3ZlckxpbWl0RmlsZXM6IHRoaXMucW1zSW5wdXRJbWFnZUZpbGUudHlwZUVycm9yID09IEZpbGVFcnJvclR5cGUuZXhjZWVkTWF4U2l6ZSA/IFt0aGlzLnFtc0lucHV0SW1hZ2VGaWxlLmZpbGVOYW1lXSA6IFtdLFxuICAgICAgICAgIGZpbGVTaXplTGltaXQ6IHRoaXMubWF4VmlkZW9UaHVtYm5haWxTaXplS0IgLyAxMDI0LFxuICAgICAgICAgIGZpbGVTaXplTGltaXRVbml0OiAnS0InXG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgZGlhbG9nUmVmLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5xbXNJbnB1dEltYWdlRmlsZSA9IG51bGw7XG4gICAgICB9KTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICB0aGlzLnZpZGVvRGF0YS5wb3N0ZXIgPSBhd2FpdCB0aGlzLnVwbG9hZFNlcnZpY2UudXBsb2FkSW1hZ2UodGhpcy5xbXNJbnB1dEltYWdlRmlsZS5maWxlLCB0aGlzLmltYWdlVXBsb2FkLmhlaWdodCwgdGhpcy5pbWFnZVVwbG9hZC53aWR0aCkudG9Qcm9taXNlKCk7XG4gICAgfVxuXG4gICAgY29uc3QgcmVhZGVySW1hZ2UgPSBuZXcgRmlsZVJlYWRlcigpO1xuICAgIHJlYWRlckltYWdlLnJlYWRBc0RhdGFVUkwodGhpcy5xbXNJbnB1dEltYWdlRmlsZS5maWxlKTtcbiAgICByZWFkZXJJbWFnZS5vbmxvYWQgPSBhc3luYyAoZXZlbnQpID0+IHtcbiAgICAgIHRoaXMuaW1hZ2VVcGxvYWQuc3JjID0gZXZlbnQudGFyZ2V0LnJlc3VsdC50b1N0cmluZygpO1xuICAgIH1cbiAgICB0aGlzLmlzTG9hZGluZ0ltYWdlRmlsZSA9IGZhbHNlO1xuICB9XG5cbiAgYXN5bmMgb25DaGFuZ2VGaWxlKGV2ZW50OiBhbnkpIHtcbiAgICB0aGlzLmlzTG9hZGluZ1ZpZGVvRmlsZSA9IHRydWU7XG4gICAgdGhpcy5jaGVja2VkTm9kZUxpc3QgPSBbXTtcbiAgICB0aGlzLmRhdGFUcmVlcy50b0FycmF5KClbMF0uY2hlY2tsaXN0U2VsZWN0aW9uLmNsZWFyKCk7XG4gICAgdGhpcy5kYXRhVHJlZXMudG9BcnJheSgpWzBdLnRyZWVDb250cm9sLmRhdGFOb2Rlcy5tYXAoeCA9PiB4LmRpc2FibGVkID0gdHJ1ZSk7XG4gICAgY29uc3QgcmVzVXBsb2FkVmlkZW8gPSBhd2FpdCB0aGlzLnVwbG9hZFNlcnZpY2UudXBsb2FkU2luZ2xlRmlsZSh0aGlzLnFtc0lucHV0VmlkZW9GaWxlLmZpbGUsICcnLCAnMScsIHRoaXMuZW50aXR5SWQpLnRvUHJvbWlzZSgpO1xuICAgIHRoaXMudmlkZW9EYXRhLnNyYyA9IHJlc1VwbG9hZFZpZGVvLnVybDtcbiAgICB0aGlzLmlzTG9hZGluZ1ZpZGVvRmlsZSA9IGZhbHNlO1xuICB9XG59XG4iXX0=
|
1262
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVsYXRlZC1wb3B1cC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9xbXMtYW5ndWxhci9zcmMvbGliL2NvbXBvbmVudHMvcmVsYXRlZC9wb3B1cC9yZWxhdGVkLXBvcHVwLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFvQixpQkFBaUIsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFnQyxTQUFTLEVBQUUsWUFBWSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pNLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN4RSxPQUFPLEVBQUUsWUFBWSxFQUFFLGVBQWUsRUFBRSxTQUFTLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNwRixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDekQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnRUFBZ0UsQ0FBQztBQUNsRyxPQUFPLEVBQXFCLGFBQWEsRUFBRSxNQUFNLGtFQUFrRSxDQUFDO0FBRXBILE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHVFQUF1RSxDQUFDO0FBQ2pILE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBQ3pGLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBRTlFLE9BQU8sRUFB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Q0FBQyxHQUFHLEdBQUcsY0FBYyxDQUFDLEdBQUcsQ0FBQzthQUN6QztZQUNELElBQUksQ0FBQyxrQkFBa0IsR0FBRyxLQUFLLENBQUM7UUFDbEMsQ0FBQztLQUFBOzs7WUFuekNGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsbUJBQW1CO2dCQUM3QixvaGVBQTZDO2dCQUU3QyxhQUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSTs7YUFDdEM7OztZQXJDMEIsaUJBQWlCO1lBWW5DLHVCQUF1QjtZQVR2QixZQUFZO1lBcUJaLHVCQUF1QjtZQXBCdkIsZUFBZTtZQUNmLFlBQVk7WUFRWixzQkFBc0I7WUFiMEIsVUFBVTtZQVcxRCx3QkFBd0I7WUFSTyxTQUFTO1lBa0J4QyxTQUFTLHVCQTRHYixNQUFNLFNBQUMsZUFBZTs7O3dCQWhCeEIsWUFBWSxTQUFDLGFBQWEsRUFBRSxFQUFFOzJCQUU5QixTQUFTLFNBQUMseUJBQXlCLEVBQUUsRUFBRSxJQUFJLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTt3QkF3RG5GLFlBQVksU0FBQyxnQkFBZ0IsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyVmlld0NoZWNrZWQsIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSG9zdExpc3RlbmVyLCBJbmplY3QsIE9uRGVzdHJveSwgT25Jbml0LCBRdWVyeUxpc3QsIFZpZXdDaGlsZCwgVmlld0NoaWxkcmVuLCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBNYXRBdXRvY29tcGxldGVUcmlnZ2VyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYXV0b2NvbXBsZXRlJztcbmltcG9ydCB7IE1hdERpYWxvZ1JlZiwgTUFUX0RJQUxPR19EQVRBLCBNYXREaWFsb2cgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IHsgTWF0SWNvblJlZ2lzdHJ5IH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgcmVxdWlyZWRGaWxlVHlwZSB9IGZyb20gJy4uLy4uLy4uL2RpcmVjdGl2ZXMvZmlsZS11cGxvYWQvZmlsZS11cGxvYWQtc2VsZWN0b3IuZGlyZWN0aXZlJztcbmltcG9ydCB7IFFNU0ZpbGVBdHRhY2htZW50LCBGaWxlRXJyb3JUeXBlIH0gZnJvbSAnLi4vLi4vLi4vZGlyZWN0aXZlcy9maWxlLXVwbG9hZC9xbXMtZmlsZS11cGxvYWQtYXR0YWNobWVudC5tb2RlbCc7XG5pbXBvcnQgeyBUcmVlTm9kZSB9IGZyb20gJy4uLy4uLy4uL3Ftcy1ja2VkaXRvci1jb21wb25lbnRzL2NvbW1vbi9tb2RlbHMvcW1zLWNrZWRpdG9yLXRyZWUtbm9kZS5tb2RlbCc7XG5pbXBvcnQgeyBRTVNDS0VkaXRvclVwbG9hZFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9xbXMtY2tlZGl0b3ItY29tcG9uZW50cy9zZXJ2aWNlcy9xbXMtY2tlZGl0b3ItdXBsb2FkLnNlcnZpY2UnO1xuaW1wb3J0IHsgVHJhbnNsYXRlTGlicmFyeVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy90cmFuc2xhdGlvbi1yZWdpc3RyeS5zZXJ2aWNlJztcbmltcG9ydCB7IFFNU0ljb25SZWdpc3RyeVNlcnZpY2UgfSBmcm9tICcuLi8uLi9hcHAtaWNvbi9pY29uLXJlZ2lzdHJ5LnNlcnZpY2UnO1xuaW1wb3J0IHsgVHJlZUNvbmZpZyB9IGZyb20gJy4uLy4uL3RyZWUvbW9kZWwvdHJlZS1jb25maWcubW9kZWwnO1xuaW1wb3J0IHsgVHJlZUZsYXROb2RlIH0gZnJvbSAnLi4vLi4vdHJlZS9tb2RlbC90cmVlLWZsYXQtbm9kZS5tb2RlbCc7XG5pbXBvcnQgeyBUcmVlTW9kZWwgfSBmcm9tICcuLi8uLi90cmVlL21vZGVsL3RyZWUubW9kZWwnO1xuaW1wb3J0IHsgVHJlZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL3RyZWUvdHJlZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgRG9jdW1lbnROb2RlVHlwZSB9IGZyb20gJy4uL2NvbW1vbi9kb2N1bWVudC1mb2xkZXItdHlwZS5lbnVtJztcbmltcG9ydCB7IE1vZHVsZVR5cGUgfSBmcm9tICcuLi9jb21tb24vbW9kdWxlLXR5cGUuZW51bSc7XG5pbXBvcnQgeyBSZWxhdGVkQ29uc3QgfSBmcm9tICcuLi9jb21tb24vcmVsYXRlZC5jb25zdCc7XG5pbXBvcnQgeyBQb3B1cERhdGEgfSBmcm9tICcuLi9tb2RlbC9wb3B1cC1kYXRhLm1vZGVsJztcbmltcG9ydCB7IElSZWxhdGVkLCBSZWxhdGVkT3B0aW9uIH0gZnJvbSAnLi4vbW9kZWwvcmVsYXRlZC1kYXRhLm1vZGVsJztcbmltcG9ydCB7IFNlbGVjdGVkTm9kZSB9IGZyb20gJy4uL21vZGVsL3NlbGVjdGVkLW5vZGUubW9kZWwnO1xuaW1wb3J0IHsgUU1TUmVsYXRlZEdsb2JhbFNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlL3JlbGF0ZWQtZ2xvYmFsLnNlcnZpY2UnO1xuaW1wb3J0IHsgSWNvblN2ZyB9IGZyb20gJy4uLy4uLy4uL3Ftcy1ja2VkaXRvci1jb21wb25lbnRzL2NvbW1vbi9jb25zdGFudHMvaWNvblN2Zy5jb25zdGFudHMnO1xuaW1wb3J0IHsgVmlkZW9Db25zdCB9IGZyb20gJy4uL2NvbW1vbi92aWRlby5jb25zdCc7XG5pbXBvcnQgeyBRTVNVcGxvYWRGaWxlRXJyb3JEaWFsb2cgfSBmcm9tICcuLi8uLi91cGxvYWQtZmlsZS1lcnJvci1kaWFsb2cvdXBsb2FkLWZpbGUtZXJyb3ItZGlhbG9nJztcbmltcG9ydCB7IFFNU0NLRWRpdG9yVmlkZW8gfSBmcm9tICcuLi8uLi8uLi9xbXMtY2tlZGl0b3ItY29tcG9uZW50cy9tb2RlbHMvcW1zLWNrZWRpdG9yLXZpZGVvLm1vZGVsJztcbmltcG9ydCB7IERhdGFUeXBlIH0gZnJvbSAnLi4vLi4vLi4vY29tbW9uL2VudW0vZGF0YS10eXBlLmVudW0nO1xuXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3Ftcy1yZWxhdGVkLXBvcHVwJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3JlbGF0ZWQtcG9wdXAuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9yZWxhdGVkLXBvcHVwLmNvbXBvbmVudC5zY3NzJ10sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcbn0pXG5leHBvcnQgY2xhc3MgUmVsYXRlZFBvcHVwQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIEFmdGVyVmlld0NoZWNrZWQge1xuICBuZ1Vuc3Vic2NyaWJlID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBMQU5HOiBhbnk7XG4gIG1vZHVsZUlkID0gMDtcbiAgbW9kdWxlTmFtZSA9ICcnO1xuICBtb2R1bGVVcGxvYWRJbWFnZU5hbWUgPSAnJztcbiAgbW9kdWxlVXBsb2FkRmlsZU5hbWUgPSAnJztcbiAgdHJlZURhdGExOiBBcnJheTxUcmVlTW9kZWw+ID0gW107XG4gIHRyZWVEYXRhMjogQXJyYXk8VHJlZU1vZGVsPiA9IFtdO1xuICB0cmVlQ29uZmlnMTogVHJlZUNvbmZpZztcbiAgdHJlZUNvbmZpZzI6IFRyZWVDb25maWc7XG5cbiAgY2hlY2tlZE5vZGVMaXN0OiBBcnJheTxTZWxlY3RlZE5vZGU+ID0gW107XG4gIHNlbGVjdGVkTm9kZTogQXJyYXk8U2VsZWN0ZWROb2RlPiA9IFtdO1xuICBzZWxlY3RlZERhdGE6IEFycmF5PFRyZWVGbGF0Tm9kZT4gPSBbXTtcbiAgc2VsZWN0ZWREYXRhMjogQXJyYXk8VHJlZUZsYXROb2RlPiA9IFtdO1xuXG4gIGNvbW1vbkNoZWNrZWRMaXN0OiBBcnJheTxUcmVlRmxhdE5vZGU+ID0gW107XG4gIGRvY3VtZW50Q2hlY2tlZExpc3Q6IEFycmF5PFRyZWVGbGF0Tm9kZT4gPSBbXTtcbiAgc2luZ2xlUHJvY2Vzc0xpc3Q6IEFycmF5PFNlbGVjdGVkTm9kZT4gPSBbXTtcbiAgc2luZ2xlRG9jdW1lbnRMaXN0OiBBcnJheTxTZWxlY3RlZE5vZGU+ID0gW107XG4gIHNwbGl0VmlldzogYm9vbGVhbjtcblxuICBtb2R1bGUgPSBNb2R1bGVUeXBlO1xuICBkYXRhVHlwZSA9IERhdGFUeXBlO1xuICBpdGVtVHlwZSA9IDA7XG4gIHNlbGVjdGVkUmlza0RhdGE6IGFueSA9IFtdO1xuICBkaXNhYmxlZExpc3Q6IGFueSA9IFtdO1xuICBkaXNhYmxlZExpc3QyOiBhbnkgPSBbXTtcbiAgbWF4U2VsZWN0SXRlbUNvdW50OiBudW1iZXI7XG4gIGNhbk9ubHlTZWxlY3RJdGVtOiBib29sZWFuO1xuICBjYW5VcGxvYWRJbWFnZTogYm9vbGVhbjtcbiAgY2FuVXBsb2FkVmlkZW86IGJvb2xlYW47XG5cbiAgaXNEb2N1bWVudEV4cGFuZGVkID0gdHJ1ZTtcbiAgaXNDb21tb25FeHBhbmRlZCA9IHRydWU7XG4gIHNpbmdsZVNlbGVjdGVkTm9kZSA9IGZhbHNlO1xuICBzZWFyY2hPcmRlciA9IFtdO1xuXG4gIG15Q29udHJvbCA9IG5ldyBGb3JtQ29udHJvbCgpO1xuICBmaWx0ZXJlZE9wdGlvbnM6IFJlbGF0ZWRPcHRpb25bXSA9IFtdO1xuICBpc0lucHV0VmFsdWUgPSBmYWxzZTtcblxuICBpdGVtSW5TcGxpdHZpZXc6IElSZWxhdGVkW10gPSBbXTtcbiAgc2VsZWN0ZWRGb2xkZXI6IFRyZWVGbGF0Tm9kZSA9IG51bGw7XG4gIHNwbGl0Vmlld1RpdGxlOiBzdHJpbmcgPSBudWxsO1xuICBsaXN0Q2hpbGRyZW5TZWxlY3RPbmU6IGFueSA9IFtdO1xuXG4gIG9uU2VhcmNoID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBvbkV4cGFuZEZvbGRlciA9IG5ldyBFdmVudEVtaXR0ZXI8SVJlbGF0ZWQ+KCk7XG4gIHBhcmVudE5vZGVTZWxlY3RlZCA9IG5ldyBUcmVlRmxhdE5vZGUoKTtcbiAgdHJlZUNvbnRyb2xOb2RlUHJvY2VzczogYW55O1xuICB0cmVlQ29udHJvbE5vZGVEb2N1bWVudDogYW55O1xuXG4gIGFjY2VwdEV4dGVuc2lvbnMgPSBbJ3BqcCcsICdqcGcnLCAncGpwZWcnLCAnanBlZycsICdqZmlmJywgJ3BuZycsICdnaWYnLCAnYm1wJywgJ3dlYnAnLCAndGlmJywgJ3RpZmYnXTtcbiAgYWNjZXB0RXh0ZW5zaW9uc0ZvclZpZGVvID0gWydtcDQnXTtcbiAgcW1zSW5wdXRJbWFnZVR5cGUgPSBuZXcgRm9ybUNvbnRyb2woJycsIFtcbiAgICByZXF1aXJlZEZpbGVUeXBlKHRoaXMuYWNjZXB0RXh0ZW5zaW9ucylcbiAgXSk7XG4gIHFtc0lucHV0VmlkZW9UeXBlID0gbmV3IEZvcm1Db250cm9sKCcnLCBbXG4gICAgcmVxdWlyZWRGaWxlVHlwZSh0aGlzLmFjY2VwdEV4dGVuc2lvbnNGb3JWaWRlbylcbiAgXSk7XG4gIHFtc0lucHV0SW1hZ2VGaWxlOiBRTVNGaWxlQXR0YWNobWVudCA9IG51bGw7XG4gIHFtc0lucHV0VmlkZW9GaWxlOiBRTVNGaWxlQXR0YWNobWVudCA9IG51bGw7XG4gIGlzTG9hZGluZ0ltYWdlRmlsZSA9IGZhbHNlO1xuICBpc0xvYWRpbmdWaWRlb0ZpbGUgPSBmYWxzZTtcbiAgaW1hZ2VVcGxvYWQgPSBuZXcgSW1hZ2UoKTtcbiAgbWF4VmlkZW9UaHVtYm5haWxTaXplS0I/OiBudW1iZXI7XG5cbiAgZW50aXR5SWQ6IHN0cmluZztcblxuICB2aWRlb0RhdGE6IFFNU0NLRWRpdG9yVmlkZW87XG4gIG9yaWdpblZpZGVvRGF0YVNyYzogc3RyaW5nID0gJyc7XG4gIGNhblVwZGF0ZVZpZGVvUHJvcGVydGllczogYm9vbGVhbiA9IGZhbHNlO1xuICBAVmlld0NoaWxkcmVuKFRyZWVDb21wb25lbnQsIHt9KSBkYXRhVHJlZXM6IFF1ZXJ5TGlzdDxUcmVlQ29tcG9uZW50PjtcblxuICBAVmlld0NoaWxkKCdhdXRvQ29tcGxldGVJbnB1dFNlYXJjaCcsIHsgcmVhZDogTWF0QXV0b2NvbXBsZXRlVHJpZ2dlciwgc3RhdGljOiB0cnVlIH0pXG4gIGF1dG9Db21wbGV0ZTogTWF0QXV0b2NvbXBsZXRlVHJpZ2dlcjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGNkUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwdWJsaWMgdHJhbnNsYXRlOiBUcmFuc2xhdGVMaWJyYXJ5U2VydmljZSxcbiAgICBwdWJsaWMgZGlhbG9nUmVmOiBNYXREaWFsb2dSZWY8UmVsYXRlZFBvcHVwQ29tcG9uZW50PixcbiAgICBwdWJsaWMgZ2xvYmFsU2VydmljZTogUU1TUmVsYXRlZEdsb2JhbFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBpY29uUmVnaXN0cnk6IE1hdEljb25SZWdpc3RyeSxcbiAgICBwcml2YXRlIHNhbml0aXplcjogRG9tU2FuaXRpemVyLFxuICAgIHByaXZhdGUgYXBwSWNvblNlcnZpY2U6IFFNU0ljb25SZWdpc3RyeVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBlbGVtOiBFbGVtZW50UmVmLFxuICAgIHByaXZhdGUgdXBsb2FkU2VydmljZTogUU1TQ0tFZGl0b3JVcGxvYWRTZXJ2aWNlLFxuICAgIHB1YmxpYyBkaWFsb2c6IE1hdERpYWxvZyxcbiAgICBASW5qZWN0KE1BVF9ESUFMT0dfREFUQSkgcHVibGljIGRhdGE6IFBvcHVwRGF0YVxuICApIHtcbiAgICB0aGlzLm1vZHVsZUlkID0gZGF0YS5tb2R1bGVJZDtcbiAgICB0aGlzLm1vZHVsZU5hbWUgPSBkYXRhLm1vZHVsZU5hbWU7XG4gICAgdGhpcy5tb2R1bGVVcGxvYWRJbWFnZU5hbWUgPSBkYXRhLm1vZHVsZVVwbG9hZEltYWdlTmFtZTtcbiAgICB0aGlzLm1vZHVsZVVwbG9hZEZpbGVOYW1lID0gZGF0YS5tb2R1bGVVcGxvYWRGaWxlTmFtZTtcbiAgICB0aGlzLnRyZWVEYXRhMSA9IGRhdGEudHJlZURhdGExO1xuICAgIHRoaXMudHJlZURhdGEyID0gZGF0YS50cmVlRGF0YTI7XG4gICAgdGhpcy50cmVlQ29uZmlnMSA9IGRhdGEudHJlZUNvbmZpZzE7XG4gICAgdGhpcy50cmVlQ29uZmlnMiA9IGRhdGEudHJlZUNvbmZpZzI7XG4gICAgdGhpcy5zZWxlY3RlZFJpc2tEYXRhID0gZGF0YT8uc2VsZWN0ZWROb2RlIHx8IFtdO1xuICAgIHRoaXMuc2luZ2xlU2VsZWN0ZWROb2RlID0gZGF0YS50cmVlQ29uZmlnMS5zaW5nbGVTZWxlY3RlZE5vZGU7XG4gICAgdGhpcy5kaXNhYmxlZExpc3QgPSBkYXRhLmRpc2FibGVkTGlzdCB8fCBbXTtcbiAgICB0aGlzLmRpc2FibGVkTGlzdDIgPSBkYXRhLmRpc2FibGVkTGlzdDIgfHwgW107XG4gICAgdGhpcy5zcGxpdFZpZXcgPSBkYXRhLnNwbGl0VmlldztcbiAgICB0aGlzLm1heFNlbGVjdEl0ZW1Db3VudCA9IGRhdGEubWF4U2VsZWN0SXRlbUNvdW50O1xuICAgIHRoaXMuY2FuT25seVNlbGVjdEl0ZW0gPSBkYXRhLmNhbk9ubHlTZWxlY3RJdGVtO1xuICAgIHRoaXMuY2FuVXBsb2FkSW1hZ2UgPSBkYXRhLmNhblVwbG9hZEltYWdlO1xuICAgIHRoaXMuY2FuVXBsb2FkVmlkZW8gPSBkYXRhLmNhblVwbG9hZFZpZGVvO1xuICAgIHRoaXMubWF4VmlkZW9UaHVtYm5haWxTaXplS0IgPSAoZGF0YS5tYXhWaWRlb1RodW1ibmFpbFNpemVLQiB8fCBWaWRlb0NvbnN0LkRFRkFVTF9NQVhfVklERU9fVEhVTUJOQUlMX1NJWkVfS0IpICogMTAyNDtcbiAgICB0aGlzLmVudGl0eUlkID0gZGF0YS5lbnRpdHlJZDtcbiAgICB0aGlzLnZpZGVvRGF0YSA9IGRhdGEudmlkZW9EYXRhO1xuICAgIHRoaXMub3JpZ2luVmlkZW9EYXRhU3JjID0gZGF0YS52aWRlb0RhdGE/LnNyYyB8fCAnJztcbiAgICB0aGlzLmNhblVwZGF0ZVZpZGVvUHJvcGVydGllcyA9IGRhdGEuY2FuVXBkYXRlVmlkZW9Qcm9wZXJ0aWVzO1xuICAgIGFwcEljb25TZXJ2aWNlLnJlZ2lzdGVyUHJvY2Vzc0ljb24oaWNvblJlZ2lzdHJ5LCBzYW5pdGl6ZXIpO1xuICAgIGFwcEljb25TZXJ2aWNlLnJlZ2lzdGVyUHJvY2Vzc0FyZWFJY29uKGljb25SZWdpc3RyeSwgc2FuaXRpemVyKTtcbiAgICBhcHBJY29uU2VydmljZS5yZWdpc3RlckRvY3VtZW50SWNvbihpY29uUmVnaXN0cnksIHNhbml0aXplcik7XG4gICAgYXBwSWNvblNlcnZpY2UucmVnaXN0ZXJGb2xkZXJJY29uKGljb25SZWdpc3RyeSwgc2FuaXRpemVyKTtcbiAgICBhcHBJY29uU2VydmljZS5yZWdpc3RlckRldmlhdGlvbkljb24oaWNvblJlZ2lzdHJ5LCBzYW5pdGl6ZXIpO1xuICAgIGFwcEljb25TZXJ2aWNlLnJlZ2lzdGVyQ2hlY2tsaXN0SWNvbihpY29uUmVnaXN0cnksIHNhbml0aXplcik7XG4gICAgYXBwSWNvblNlcnZpY2UucmVnaXN0ZXJSaXNrSWNvbihpY29uUmVnaXN0cnksIHNhbml0aXplcik7XG4gICAgaWNvblJlZ2lzdHJ5LmFkZFN2Z0ljb25MaXRlcmFsKCd1cGxvYWQnLCBzYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdEh0bWwoSWNvblN2Zy5VUExPQURfSUNPTikpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5uZ1Vuc3Vic2NyaWJlLm5leHQoKTtcbiAgICB0aGlzLm5nVW5zdWJzY3JpYmUuY29tcGxldGUoKTtcbiAgICB0aGlzLmdsb2JhbFNlcnZpY2Uuc2V0U2VhcmNoUmVsYXRlZChbXSk7XG4gICAgdGhpcy5zZWxlY3RlZEZvbGRlciA9IG51bGw7XG4gICAgdGhpcy5nbG9iYWxTZXJ2aWNlLnNldFNwbGl0dmlld1ZhbHVlKFtdKTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzptZXNzYWdlJywgWyckZXZlbnQnXSlcbiAgb25NZXNzYWdlKGV2ZW50KSB7XG4gICAgaWYgKGV2ZW50LmRhdGEgPT09IFJlbGF0ZWRDb25zdC5ISURFX1NFQVJDSF9SRVNVTFQpIHtcbiAgICAgIC8vIHRoaXMuYXV0b0NvbXBsZXRlLmNsb3NlUGFuZWwoKTtcbiAgICB9XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnRyYW5zbGF0ZS5nZXRMYW5ndWFnZVN1YmplY3QkLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSkpLnN1YnNjcmliZSgocmVzKSA9PiB7XG4gICAgICBpZiAocmVzKSB7XG4gICAgICAgIHRoaXMuTEFORyA9IHRoaXMudHJhbnNsYXRlLmdldE9iamVjdExhbmcocmVzKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMuZ2xvYmFsU2VydmljZS5zZWFyY2hSZWxhdGVkLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSkpLnN1YnNjcmliZSgocmVzKSA9PiB7XG4gICAgICBpZiAocmVzICYmIHJlcy5sZW5ndGgpIHtcbiAgICAgICAgdGhpcy5maWx0ZXJlZE9wdGlvbnMgPSB0aGlzLnRvUmVsYXRlZE9wdGlvbnMocmVzKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMuZ2xvYmFsU2VydmljZS5zcGxpdFZpZXdWYWx1ZS5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpKS5zdWJzY3JpYmUoKHJlcykgPT4ge1xuXG4gICAgICB0aGlzLml0ZW1JblNwbGl0dmlldyA9IHJlcztcbiAgICAgIGlmIChyZXMubGVuZ3RoKSB7XG4gICAgICAgIGxldCBsaXN0Tm9kZVByb2Nlc3M6IFRyZWVNb2RlbFtdID0gW107XG4gICAgICAgIGxldCBsaXN0Tm9kZURvY3M6IFRyZWVNb2RlbFtdID0gW107XG5cbiAgICAgICAgcmVzLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgICAgaWYgKGl0ZW0uaXRlbVR5cGUgPT09IERhdGFUeXBlLnByb2Nlc3MpIHtcbiAgICAgICAgICAgIGxldCBuZXdOb2RlUHJvY2VzcyA9IG5ldyBUcmVlTW9kZWwoKTtcbiAgICAgICAgICAgIG5ld05vZGVQcm9jZXNzLmNoaWxkSWQgPSBpdGVtLmlkO1xuICAgICAgICAgICAgbmV3Tm9kZVByb2Nlc3MuY2hpbGROYW1lID0gaXRlbS5pdGVtTmFtZTtcbiAgICAgICAgICAgIG5ld05vZGVQcm9jZXNzLmRpc3BsYXlJZCA9ICtpdGVtLml0ZW1OdW1iZXJJZDtcbiAgICAgICAgICAgIG5ld05vZGVQcm9jZXNzLnBhcmVudElkID0gXCJcIjtcbiAgICAgICAgICAgIG5ld05vZGVQcm9jZXNzLnJvb3RJZCA9IGl0ZW0ucGFyZW50SWQ7XG4gICAgICAgICAgICBuZXdOb2RlUHJvY2Vzcy5yb290TmFtZSA9IGl0ZW0/LnBhcmVudE5hbWU7XG4gICAgICAgICAgICBuZXdOb2RlUHJvY2Vzcy5zdWJOYW1lID0gbnVsbDtcbiAgICAgICAgICAgIG5ld05vZGVQcm9jZXNzLnN0YXR1c0lkID0gaXRlbS5zdGF0dXM7XG4gICAgICAgICAgICBsaXN0Tm9kZVByb2Nlc3MucHVzaChuZXdOb2RlUHJvY2Vzcyk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGxldCBuZXdOb2RlRG9jcyA9IG5ldyBUcmVlTW9kZWwoKTtcbiAgICAgICAgICAgIG5ld05vZGVEb2NzLmNoaWxkSWQgPSBpdGVtLmlkO1xuICAgICAgICAgICAgbmV3Tm9kZURvY3MuY2hpbGROYW1lID0gaXRlbS5pdGVtTmFtZTtcbiAgICAgICAgICAgIG5ld05vZGVEb2NzLmRpc3BsYXlJZCA9ICtpdGVtLml0ZW1OdW1iZXJJZDtcbiAgICAgICAgICAgIG5ld05vZGVEb2NzLnBhcmVudElkID0gXCJcIjtcbiAgICAgICAgICAgIG5ld05vZGVEb2NzLnJvb3RJZCA9IGl0ZW0ucGFyZW50SWQ7XG4gICAgICAgICAgICBuZXdOb2RlRG9jcy5yb290TmFtZSA9IGl0ZW0/LnBhcmVudE5hbWU7XG4gICAgICAgICAgICBuZXdOb2RlRG9jcy5zdWJOYW1lID0gbnVsbDtcbiAgICAgICAgICAgIG5ld05vZGVEb2NzLnN0YXR1c0lkID0gaXRlbS5zdGF0dXM7XG4gICAgICAgICAgICBuZXdOb2RlRG9jcy5zdGF0dXNOYW1lID0gaXRlbS5zdGF0dXNOYW1lO1xuICAgICAgICAgICAgbGlzdE5vZGVEb2NzLnB1c2gobmV3Tm9kZURvY3MpO1xuICAgICAgICAgIH1cblxuICAgICAgICB9KTtcblxuICAgICAgICBsZXQgaWRzUHJvY2VzcyA9IG5ldyBTZXQodGhpcy50cmVlRGF0YTEubWFwKGQgPT4gZC5jaGlsZElkKSk7XG4gICAgICAgIHRoaXMudHJlZURhdGExID0gWy4uLnRoaXMudHJlZURhdGExLCAuLi5saXN0Tm9kZVByb2Nlc3MuZmlsdGVyKGQgPT4gIWlkc1Byb2Nlc3MuaGFzKGQuY2hpbGRJZCkpXTtcblxuICAgICAgICBsZXQgaWRzRG9jcyA9IG5ldyBTZXQodGhpcy50cmVlRGF0YTIubWFwKGQgPT4gZC5jaGlsZElkKSk7XG4gICAgICAgIHRoaXMudHJlZURhdGEyID0gWy4uLnRoaXMudHJlZURhdGEyLCAuLi5saXN0Tm9kZURvY3MuZmlsdGVyKGQgPT4gIWlkc0RvY3MuaGFzKGQuY2hpbGRJZCkpXTtcblxuXG4gICAgICAgIGlmICh0aGlzLmNoZWNrZWROb2RlTGlzdC5sZW5ndGgpIHtcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF0YSA9IFtdO1xuICAgICAgICAgIHRoaXMuc2VsZWN0ZWREYXRhMiA9IFtdO1xuICAgICAgICAgIGxldCBzZWxlY3RQcm9jZXNzOiBUcmVlRmxhdE5vZGVbXSA9IFtdO1xuICAgICAgICAgIGxldCBzZWxlY3REb2N1bWVudDogVHJlZUZsYXROb2RlW10gPSBbXTtcblxuICAgICAgICAgIHRoaXMuY2hlY2tlZE5vZGVMaXN0LmZvckVhY2goeCA9PiB7XG4gICAgICAgICAgICBpZiAoeC5pdGVtVHlwZSA9PT0gRGF0YVR5cGUuYXJlYSB8fCB4Lml0ZW1UeXBlID09PSBEYXRhVHlwZS5wcm9jZXNzKSB7XG4gICAgICAgICAgICAgIHRoaXMudHJlZURhdGExLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGl0ZW0uY2hpbGRJZCAmJiB4LmlkID09PSBpdGVtLmNoaWxkSWQgfHwgIWl0ZW0uY2hpbGRJZCAmJiAoeC5pZCA9PT0gaXRlbS5yb290SWQpKSB7XG4gICAgICAgICAgICAgICAgICBzZWxlY3RQcm9jZXNzLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZDogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIGV4cGFuZGFibGU6IHguaXRlbVR5cGUgPT0gRGF0YVR5cGUuYXJlYSA/IHRydWUgOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgaGFzQ2hpbGQ6IHguaXRlbVR5cGUgPT0gRGF0YVR5cGUuYXJlYSA/IHRydWUgOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgaWQ6IHguaWQsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiAwLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbFR5cGU6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogeC5pdGVtTmFtZSxcbiAgICAgICAgICAgICAgICAgICAgcGFyZW50SWQ6IHgucGFyZW50SWRcbiAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHRoaXMudHJlZURhdGEyLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGl0ZW0uY2hpbGRJZCAmJiB4LmlkID09PSBpdGVtLmNoaWxkSWQgfHwgIWl0ZW0uY2hpbGRJZCAmJiAoeC5pZCA9PT0gaXRlbS5yb290SWQpKSB7XG4gICAgICAgICAgICAgICAgICBzZWxlY3REb2N1bWVudC5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICBleHBhbmRhYmxlOiB4Lml0ZW1UeXBlID09IERhdGFUeXBlLmZvbGRlciA/IHRydWUgOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgaGFzQ2hpbGQ6IHguaXRlbVR5cGUgPT0gRGF0YVR5cGUuZm9sZGVyID8gdHJ1ZSA6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICBpZDogeC5pZCxcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IDAsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsVHlwZTogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICBuYW1lOiB4Lml0ZW1OYW1lLFxuICAgICAgICAgICAgICAgICAgICBwYXJlbnRJZDogeC5wYXJlbnRJZFxuICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgdGhpcy5zZWxlY3RlZERhdGEgPSBbLi4udGhpcy5zZWxlY3RlZERhdGEsIC4uLnNlbGVjdFByb2Nlc3NdO1xuICAgICAgICAgIHRoaXMuc2VsZWN0ZWREYXRhMiA9IFsuLi50aGlzLnNlbGVjdGVkRGF0YTIsIC4uLnNlbGVjdERvY3VtZW50XTtcbiAgICAgICAgfVxuXG4gICAgICB9XG5cbiAgICB9KTtcblxuICAgIHRoaXMubXlDb250cm9sLnZhbHVlQ2hhbmdlcy5waXBlKGRlYm91bmNlVGltZSgxMDAwKSwgdGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSkpLnN1YnNjcmliZSgodmFsKSA9PiB7XG4gICAgICB0aGlzLmlzSW5wdXRWYWx1ZSA9IHRydWU7XG4gICAgICB0aGlzLm9uU2VhcmNoUmVsYXRlZCh2YWwpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5pdGVtVHlwZSA9IHRoaXMuZ2V0RGF0YVR5cGVJZCh0aGlzLm1vZHVsZUlkKTtcbiAgICB0aGlzLnNlYXJjaE9yZGVyID0gdGhpcy5nZXRTZWFyY2hPcmRlcigpO1xuICB9XG5cbiAgbmdBZnRlclZpZXdDaGVja2VkKCkge1xuICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIGlmICh0aGlzLmZpbHRlcmVkT3B0aW9ucyAmJiB0aGlzLmZpbHRlcmVkT3B0aW9ucy5sZW5ndGgpIHtcbiAgICAgIC8vIHRoaXMuYXV0b0NvbXBsZXRlLm9wZW5QYW5lbCgpO1xuICAgICAgdGhpcy5zZXRSZXN1bHRIZWlnaHQoKTtcbiAgICB9XG4gICAgLy8gZWxzZSBpZiAodGhpcy5hdXRvQ29tcGxldGUpIHtcbiAgICAvLyAgIHRoaXMuYXV0b0NvbXBsZXRlLmNsb3NlUGFuZWwoKTtcbiAgICAvLyB9XG4gIH1cblxuICBnZXREYXRhVHlwZUlkKG1vZHVsZUlkOiBudW1iZXIpIHtcbiAgICBsZXQgaXRlbVR5cGU7XG4gICAgc3dpdGNoIChtb2R1bGVJZCkge1xuICAgICAgY2FzZSBNb2R1bGVUeXBlLmRvY3VtZW50UHJvY2VzczpcbiAgICAgICAgaXRlbVR5cGUgPSB0aGlzLmRhdGFUeXBlLnByb2Nlc3M7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBNb2R1bGVUeXBlLmRldmlhdGlvbjpcbiAgICAgICAgaXRlbVR5cGUgPSB0aGlzLmRhdGFUeXBlLmRldmlhdGlvbjtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIE1vZHVsZVR5cGUuY2hlY2tsaXN0OlxuICAgICAgICBpdGVtVHlwZSA9IHRoaXMuZGF0YVR5cGUuY2hlY2tsaXN0O1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgTW9kdWxlVHlwZS5yaXNrOlxuICAgICAgICBpdGVtVHlwZSA9IHRoaXMuZGF0YVR5cGUucmlzaztcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBpdGVtVHlwZSA9IHRoaXMuZGF0YVR5cGUuZG9jdW1lbnQ7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgICByZXR1cm4gaXRlbVR5cGU7XG4gIH1cblxuICByZW1vdmVDaGVja2VkTm9kZUxpc3QoaXRlbTogVHJlZUZsYXROb2RlKSB7XG4gICAgaWYgKHRoaXMudmlkZW9EYXRhKSB7XG4gICAgICB0aGlzLnZpZGVvRGF0YS5zcmMgPSB0aGlzLm9yaWdpblZpZGVvRGF0YVNyYztcbiAgICB9XG4gICAgdGhpcy5zZWxlY3RlZERhdGEgPSBbXTtcbiAgICB0aGlzLnNlbGVjdGVkRGF0YTIgPSBbXTtcblxuICAgIHRoaXMuY2hlY2tlZE5vZGVMaXN0ID0gdGhpcy5jaGVja2VkTm9kZUxpc3QuZmlsdGVyKHggPT4gKHguaWQudG9Mb3dlckNhc2UoKSAhPT0gaXRlbS5pZC50b0xvd2VyQ2FzZSgpIHx8IHgucGFyZW50SWQ/LnRvTG93ZXJDYXNlKCkgIT09IGl0ZW0ucGFyZW50SWQ/LnRvTG93ZXJDYXNlKCkpKTtcblxuICAgIGNvbnN0IG5ld1NlbGVjdFByb2Nlc3NMaXN0ID0gW107XG4gICAgY29uc3QgbmV3U2VsZWN0RG9jdW1lbnRMaXN0ID0gW107XG5cblxuICAgIHRoaXMuY29tbW9uQ2hlY2tlZExpc3QgPSB0aGlzLmNvbW1vbkNoZWNrZWRMaXN0LmZpbHRlcih4ID0+ICh4LmlkLnRvTG93ZXJDYXNlKCkgIT09IGl0ZW0uaWQudG9Mb3dlckNhc2UoKSB8fCB4LnBhcmVudElkPy50b0xvd2VyQ2FzZSgpICE9PSBpdGVtLnBhcmVudElkPy50b0xvd2VyQ2FzZSgpKSk7XG5cbiAgICB0aGlzLnNpbmdsZVByb2Nlc3NMaXN0LmZvckVhY2goZWxlbWVudCA9PiB7XG4gICAgICB0aGlzLmNoZWNrZWROb2RlTGlzdC5mb3JFYWNoKHggPT4ge1xuICAgICAgICBpZiAoZWxlbWVudC5pZC50b0xvd2VyQ2FzZSgpID09PSB4LmlkLnRvTG93ZXJDYXNlKCkgJiYgZWxlbWVudC5wYXJlbnRJZD8udG9Mb3dlckNhc2UoKSA9PT0geC5wYXJlbnRJZD8udG9Mb3dlckNhc2UoKSkge1xuICAgICAgICAgIG5ld1NlbGVjdFByb2Nlc3NMaXN0LnB1c2goZWxlbWVudCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgdGhpcy5zaW5nbGVQcm9jZXNzTGlzdCA9IG5ld1NlbGVjdFByb2Nlc3NMaXN0O1xuICAgIHRoaXMuc2VsZWN0ZWREYXRhID0gdGhpcy5jb21tb25DaGVja2VkTGlzdDtcblxuICAgIHRoaXMuZG9jdW1lbnRDaGVja2VkTGlzdCA9IHRoaXMuZG9jdW1lbnRDaGVja2VkTGlzdC5maWx0ZXIoeCA9PiAoeC5pZC50b0xvd2VyQ2FzZSgpICE9PSBpdGVtLmlkLnRvTG93ZXJDYXNlKCkgfHwgeC5wYXJlbnRJZD8udG9Mb3dlckNhc2UoKSAhPT0gaXRlbS5wYXJlbnRJZD8udG9Mb3dlckNhc2UoKSkpO1xuXG4gICAgdGhpcy5zaW5nbGVEb2N1bWVudExpc3QuZm9yRWFjaChlbGVtZW50ID0+IHtcbiAgICAgIHRoaXMuY2hlY2tlZE5vZGVMaXN0LmZvckVhY2goeCA9PiB7XG4gICAgICAgIGlmIChlbGVtZW50LmlkLnRvTG93ZXJDYXNlKCkgPT09IHguaWQudG9Mb3dlckNhc2UoKSAmJiBlbGVtZW50LnBhcmVudElkPy50b0xvd2VyQ2FzZSgpID09PSB4LnBhcmVudElkPy50b0xvd2VyQ2FzZSgpKSB7XG4gICAgICAgICAgbmV3U2VsZWN0RG9jdW1lbnRMaXN0LnB1c2goZWxlbWVudCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIHRoaXMuc2luZ2xlRG9jdW1lbnRMaXN0ID0gbmV3U2VsZWN0RG9jdW1lbnRMaXN0O1xuICAgIHRoaXMuc2VsZWN0ZWREYXRhMiA9IHRoaXMuY29tbW9uQ2hlY2tlZExpc3Q7XG5cbiAgICAvLyB3aGVuIHJlbW92ZSBjaGVjayBub2RlIGxpc3QsIHJlbGF0ZWQgb3B0aW9ucyBuZWVkIHJlZnJlc2ggZGlzYWJsZWQgb3B0aW9uc1xuICAgIHRoaXMucmVmcmVzaFJlbGF0ZWRPcHRpb25zKCk7XG4gIH1cblxuICBpc01hdGNoVHJ1ZShhcnI6IGFueVtdLCBhcnIyOiBhbnlbXSkge1xuICAgIHJldHVybiBhcnIuZXZlcnkoKGkpID0+IHtcbiAgICAgIHJldHVybiBhcnIyLmluY2x1ZGVzKGkpO1xuICAgIH0pO1xuICB9XG5cbiAgc2V0UmVzdWx0SGVpZ2h0KGFycj86IElSZWxhdGVkW10pIHtcbiAgICBsZXQgbWF4SGVpZ2h0ID0gNDg0O1xuICAgIGNvbnN0IHBvcHVwX2NvbnRlbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdxbXNsaWJfcmVsYXRlZF9wb3B1cF9jb250ZW50JylbMF0gYXMgSFRNTEVsZW1lbnQ7XG4gICAgY29uc3QgbGluZV9fZGl2aWRlciA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2xpbmVfX2RpdmlkZXInKVswXSBhcyBIVE1MRWxlbWVudDtcbiAgICBpZiAocG9wdXBfY29udGVudCAmJiBsaW5lX19kaXZpZGVyKSB7XG4gICAgICBtYXhIZWlnaHQgPSB0aGlzLmdldE9mZnNldEhlaWdodChwb3B1cF9jb250ZW50LCB0cnVlKSArIHRoaXMuZ2V0T2Zmc2V0SGVpZ2h0KGxpbmVfX2RpdmlkZXIsIHRydWUpICogMjtcbiAgICB9XG5cbiAgICBjb25zdCBjb250ZW50UmVzdWx0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnY2RrLXZpcnR1YWwtc2Nyb2xsLWNvbnRlbnQtd3JhcHBlcicpWzBdIGFzIEhUTUxFbGVtZW50O1xuICAgIGNvbnN0IHZpZXdyZXBvcnRzID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgncmVsYXRlZC12aWV3cG9ydCcpWzBdIGFzIEhUTUxFbGVtZW50O1xuXG4gICAgaWYgKHZpZXdyZXBvcnRzKSB7XG4gICAgICBpZiAoY29udGVudFJlc3VsdC5vZmZzZXRIZWlnaHQgPD0gbWF4SGVpZ2h0KSB7XG4gICAgICAgIHZpZXdyZXBvcnRzLnN0eWxlLmhlaWdodCA9IGAke2NvbnRlbnRSZXN1bHQub2Zmc2V0SGVpZ2h0fXB4YDtcbiAgICAgIH1cbiAgICAgIGVsc2Uge1xuICAgICAgICB2aWV3cmVwb3J0cy5zdHlsZS5oZWlnaHQgPSBgJHttYXhIZWlnaHR9cHhgO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG9uU2VhcmNoUmVsYXRlZChfdmFsOiBhbnkpIHtcbiAgICB0aGlzLmZpbHRlcmVkT3B0aW9ucyA9IFtdO1xuICAgIGlmICh0eXBlb2YgKF92YWwpID09PSAnb2JqZWN0Jykge1xuICAgICAgdGhpcy5teUNvbnRyb2wuc2V0VmFsdWUoJycpO1xuICAgICAgdGhpcy5pc0lucHV0VmFsdWUgPSBmYWxzZTtcbiAgICB9XG4gICAgZWxzZSBpZiAodHlwZW9mIChfdmFsKSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGlmICghIV92YWwpIHtcbiAgICAgICAgdGhpcy5vblNlYXJjaC5lbWl0KF92YWwpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGdldE1vZHVsZUZpbHRlcmVkT3B0aW9ucyhtb2R1bGVJZDogbnVtYmVyKSB7XG4gICAgaWYgKHRoaXMubGlzdENoaWxkcmVuU2VsZWN0T25lLmxlbmd0aCkge1xuICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IHRoaXMubGlzdENoaWxkcmVuU2VsZWN0T25lLmxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgICBjb25zdCBmaXJzdEVsID0gdGhpcy5saXN0Q2hpbGRyZW5TZWxlY3RPbmVbaW5kZXhdO1xuICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMuZmlsdGVyZWRPcHRpb25zLmxlbmd0aDsgaisrKSB7XG4gICAgICAgICAgY29uc3Qgc2Vjb25kRWwgPSB0aGlzLmZpbHRlcmVkT3B0aW9uc1tqXTtcbiAgICAgICAgICBpZiAoZmlyc3RFbC5pZCA9PT0gc2Vjb25kRWwuaWQpIHtcbiAgICAgICAgICAgIHRoaXMuZmlsdGVyZWRPcHRpb25zLnNwbGljZShqLCAxKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgIH1cbiAgICByZXR1cm4gdGhpcy5maWx0ZXJlZE9wdGlvbnMuZmlsdGVyKHggPT4geC5pdGVtVHlwZSA9PT0gbW9kdWxlSWQpO1xuICB9XG5cbiAgc2hvd1NlYXJjaFJlc3VsdCgpIHtcbiAgICAvLyB0aGlzLmF1dG9Db21wbGV0ZS5vcGVuUGFuZWwoKTtcbiAgfVxuXG4gIGRpc3BsYXlSZWxhdGVkKHJlbGF0ZWQ/OiBJUmVsYXRlZCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHJlbGF0ZWQgPyByZWxhdGVkLml0ZW1OYW1lIDogdW5kZWZpbmVkO1xuICB9XG5cbiAgc2VsZWN0UmVsYXRlZChpdGVtOiBJUmVsYXRlZCkge1xuICAgIGlmICh0aGlzLnRyZWVDb25maWcxPy5zZWxlY3RPbmUgfHwgdGhpcy50cmVlQ29uZmlnMj8uc2VsZWN0T25lKSB7XG4gICAgICB0aGlzLmRpc2FibGVkTGlzdCA9IFtdO1xuICAgICAgdGhpcy5kaXNhYmxlZExpc3QyID0gW107XG4gICAgfVxuXG4gICAgbGV0IGluZGV4ID0gLTE7XG4gICAgdGhpcy5zZWxlY3RlZE5vZGUgPSBbXTtcbiAgICBpZiAodGhpcy50cmVlQ29uZmlnMS5zaG93Q2hlY2tCb3gpIHtcbiAgICAgIGluZGV4ID0gdGhpcy5jaGVja2VkTm9kZUxpc3QuZmluZEluZGV4KHggPT4ge1xuICAgICAgICByZXR1cm4geC5pZC50b0xvd2VyQ2FzZSgpID09PSBpdGVtLmlkLnRvTG93ZXJDYXNlKCkgJiYgeC5wYXJlbnRJZD8udG9Mb3dlckNhc2UoKSA9PT0gaXRlbS5wYXJlbnRJZD8udG9Mb3dlckNhc2UoKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmIChpbmRleCA8IDApIHtcbiAgICAgIGxldCBwb3NpdGlvbiA9IC0xO1xuICAgICAgbGV0IG5vZGU6IGFueTtcbiAgICAgIGxldCB0eXBlSWQ6IG51bWJlcjtcblxuICAgICAgc3dpdGNoIChpdGVtLml0ZW1UeXBlKSB7XG4gICAgICAgIGNhc2UgdGhpcy5kYXRhVHlwZS5kb2N1bWVudDpcbiAgICAgICAgICAvLyBkb2N1bWVudCAgXG4gICAgICAgICAgY29uc3QgaXNFeGlzdEluRGlzYWJsZWQgPSB0aGlzLmRpc2FibGVkTGlzdDIuZmluZEluZGV4KHggPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHguaWQgJiYgeC5pZC50b0xvd2VyQ2FzZSgpID09PSBpdGVtLmlkLnRvTG93ZXJDYXNlKCkgJiYgeC5wYXJlbnRJZD8udG9Mb3dlckNhc2UoKSA9PT0gaXRlbS5wYXJlbnRJZD8udG9Mb3dlckNhc2UoKTtcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIGlmIChpc0V4aXN0SW5EaXNhYmxlZCA+PSAwKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICAgIHBvc2l0aW9uID0gdGhpcy50cmVlRGF0YTIuZmluZEluZGV4KHggPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHguY2hpbGRJZCA9PT0gaXRlbS5pZCAmJiB4LnJvb3RJZC50b0xvd2VyQ2FzZSgpID09PSBpdGVtLnBhcmVudElkPy50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgaWYgKHBvc2l0aW9uID49IDApIHtcbiAgICAgICAgICAgIG5vZGUgPSB0aGlzLnRyZWVEYXRhMltwb3NpdGlvbl07XG4gICAgICAgICAgICB0eXBlSWQgPSB0aGlzLmRhdGFUeXBlLmRvY3VtZW50O1xuICAgICAgICAgICAgY29uc3QgdHJlZU5vZGUgPSB7XG4gICAgICAgICAgICAgIGlkOiBub2RlLmNoaWxkSWQsXG4gICAgICAgICAgICAgIG5hbWU6IG5vZGUuY2hpbGROYW1lLFxuICAgICAgICAgICAgICBjaGlsZHJlbjogW10sXG4gICAgICAgICAgICAgIHBhcmVudElkOiBub2RlLnJvb3RJZFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHRoaXMuZGF0YVRyZWVzLnRvQXJyYXkoKVsxXS50b2RvSXRlbVNlbGVjdGlvblByb2Nlc3NEb2N1bWVudChbdHJlZU5vZGVdKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbGV0IG5ld05vZGVEb2NzOiBUcmVlTW9kZWwgPSB7XG4gICAgICAgICAgICAgIHJvb3RJZDogaXRlbS5icmVhZGN1bWJzW2l0ZW0uYnJlYWRjdW1icy5sZW5ndGggLSAxXT8uWydpZCddLFxuICAgICAgICAgICAgICByb290TmFtZTogaXRlbS5icmVhZGN1bWJzW2l0ZW0uYnJlYWRjdW1icy5sZW5ndGggLSAxXT8uWyduYW1lJ10sXG4gICAgICAgICAgICAgIHBhcmVudElkOiAnJyxcbiAgICAgICAgICAgICAgc3ViTmFtZTogbnVsbCxcbiAgICAgICAgICAgICAgY2hpbGRJZDogaXRlbS5pZCxcbiAgICAgICAgICAgICAgY2hpbGROYW1lOiBpdGVtLml0ZW1OYW1lLFxuICAgICAgICAgICAgICBzdGF0dXNJZDogaXRlbT8uWydpdGVtU3RhdHVzJ10sXG4gICAgICAgICAgICAgIHN0YXR1c05hbWU6IGl0ZW0/Llsnc3RhdHVzTmFtZSddLFxuICAgICAgICAgICAgICBkaXNwbGF5SWQ6ICtpdGVtLml0ZW1OdW1iZXJJZCxcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMudHJlZURhdGEyID0gWy4uLnRoaXMudHJlZURhdGEyLCBuZXdOb2RlRG9jc107XG4gICAgICAgICAgICBsZXQgbmV3U2VsZWN0ZWREb2NzOiBUcmVlRmxhdE5vZGUgPSB7XG4gICAgICAgICAgICAgIGRpc2FibGVkOiBmYWxzZSxcbiAgICAgICAgICAgICAgZXhwYW5kYWJsZTogZmFsc2UsXG4gICAgICAgICAgICAgIGhhc0NoaWxkOiBmYWxzZSxcbiAgICAgICAgICAgICAgaWQ6IGl0ZW0uaWQsXG4gICAgICAgICAgICAgIGxldmVsOiAwLFxuICAgICAgICAgICAgICBsZXZlbFR5cGU6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgbmFtZTogaXRlbS5pdGVtTmFtZSxcbiAgICAgICAgICAgICAgcGFyZW50SWQ6IGl0ZW0uYnJlYWRjdW1ic1tpdGVtLmJyZWFkY3VtYnMubGVuZ3RoIC0gMV0/LlsnaWQnXVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERhdGEyID0gW107XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF0YSA9IFtdO1xuICAgICAgICAgICAgbGV0IHNlbGVjdFByb2Nlc3M6IFRyZWVGbGF0Tm9kZVtdID0gW107XG4gICAgICAgICAgICBsZXQgc2VsZWN0RG9jdW1lbnQ6IFRyZWVGbGF0Tm9kZVtdID0gW107XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmNoZWNrZWROb2RlTGlzdC5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgdGhpcy5jaGVja2VkTm9kZUxpc3QuZm9yRWFjaCh4ID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoeC5pdGVtVHlwZSA9PT0gRGF0YVR5cGUuZG9jdW1lbnQgfHwgeC5pdGVtVHlwZSA9PT0gRGF0YVR5cGUuZm9sZGVyKSB7XG4gICAgICAgICAgICAgICAgICB0aGlzLnRyZWVEYXRhMi5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoaXRlbS5jaGlsZElkICYmIHguaWQgPT09IGl0ZW0uY2hpbGRJZCB8fCAhaXRlbS5jaGlsZElkICYmICh4LmlkID09PSBpdGVtLnJvb3RJZCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICBzZWxlY3REb2N1bWVudC5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGV4cGFuZGFibGU6IHguaXRlbVR5cGUgPT0gRGF0YVR5cGUuZm9sZGVyID8gdHJ1ZSA6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgaGFzQ2hpbGQ6IHguaXRlbVR5cGUgPT0gRGF0YVR5cGUuZm9sZGVyID8gdHJ1ZSA6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHguaWQsXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXZlbDogMCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldmVsVHlwZTogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogeC5pdGVtTmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudElkOiB4LnBhcmVudElkXG4gICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWREYXRhID0gWy4uLnRoaXMuc2VsZWN0ZWREYXRhLCAuLi5zZWxlY3RQcm9jZXNzXTtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWREYXRhMiA9IFsuLi50aGlzLnNlbGVjdGVkRGF0YTIsIC4uLnNlbGVjdERvY3VtZW50LCBuZXdTZWxlY3RlZERvY3NdO1xuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IHRyZWVOb2RlID0ge1xuICAgICAgICAgICAgICAgIGlkOiBuZXdOb2RlRG9jcy5jaGlsZElkLFxuICAgICAgICAgICAgICAgIG5hbWU6IG5ld05vZGVEb2NzLmNoaWxkTmFtZSxcbiAgICAgICAgICAgICAgICBjaGlsZHJlbjogW10sXG4gICAgICAgICAgICAgICAgcGFyZW50SWQ6IG5ld05vZGVEb2NzLnJvb3RJZFxuICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICB0aGlzLmRhdGFUcmVlcy50b0FycmF5KClbMV0udG9kb0l0ZW1TZWxlY3Rpb25Qcm9jZXNzRG9jdW1lbnQoW3RyZWVOb2RlXSk7XG4gICAgICAgICAgICB9LCA1MDApXG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIHRoaXMuZGF0YVR5cGUuZm9sZGVyOlxuICAgICAgICAgIHBvc2l0aW9uID0gdGhpcy50cmVlRGF0YTIuZmluZEluZGV4KHggPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHgucm9vdElkID09PSBpdGVtLmlkICYmIHgucGFyZW50SWQgPT09IGl0ZW0ucGFyZW50SWQ7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgdHlwZUlkID0gaXRlbS5pdGVtVHlwZTtcbiAgICAgICAgICBpZiAocG9zaXRpb24gPj0gMCkge1xuICAgICAgICAgICAgbm9kZSA9IHRoaXMudHJlZURhdGEyW3Bvc2l0aW9uXTtcbiAgICAgICAgICAgIGlmICh0aGlzLnRyZWVDb25maWcyLnNob3dDaGVja0JveCkge1xuICAgICAgICAgICAgICB0aGlzLmNoZWNrZWROb2RlTGlzdC5wdXNoKHtcbiAgICAgICAgICAgICAgICBtb2R1bGVJZDogdGhpcy5tb2R1bGVJZCxcbiAgICAgICAgICAgICAgICBpZDogaXRlbS5pZCxcbiAgICAgICAgICAgICAgICBpdGVtTmFtZTogaXRlbS5pdGVtTmFtZSxcbiAgICAgICAgICAgICAgICBpdGVtVHlwZTogdHlwZUlkLFxuICAgICAgICAgICAgICAgIGl0ZW1OdW1iZXJJZDogaXRlbS5pdGVtTnVtYmVySWQsXG4gICAgICAgICAgICAgICAgbGV2ZWxUeXBlOiBpdGVtLmxldmVsVHlwZSxcbiAgICAgICAgICAgICAgICBwYXJlbnRJZDogaXRlbS5wYXJlbnRJZCxcbiAgICAgICAgICAgICAgICBwYXJlbnROYW1lOiBpdGVtLnBhcmVudE5hbWVcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZE5vZGUucHVzaCh7XG4gICAgICAgICAgICAgICAgbW9kdWxlSWQ6IHRoaXMubW9kdWxlSWQsXG4gICAgICAgICAgICAgICAgaWQ6IGl0ZW0uaWQsXG4gICAgICAgICAgICAgICAgaXRlbU5hbWU6IGl0ZW0uaXRlbU5hbWUsXG4gICAgICAgICAgICAgICAgaXRlbVR5cGU6IHR5cGVJZCxcbiAgICAgICAgICAgICAgICBpdGVtTnVtYmVySWQ6IGl0ZW0uaXRlbU51bWJlcklkLFxuICAgICAgICAgICAgICAgIGxldmVsVHlwZTogaXRlbS5sZXZlbFR5cGVcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCB0cmVlTm9kZSA9IHtcbiAgICAgICAgICAgICAgaWQ6IG5vZGUucm9vdElkLFxuICAgICAgICAgICAgICBuYW1lOiAhIW5vZGUucm9vdElkID8gbm9kZS5zdWJOYW1lIDogbm9kZS5yb290TmFtZSxcbiAgICAgICAgICAgICAgY2hpbGRyZW46IFtdLFxuICAgICAgICAgICAgICBwYXJlbnRJZDogbm9kZS5wYXJlbnRJZFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHRoaXMuZGF0YVRyZWVzLnRvQXJyYXkoKVsxXS50b2RvRm9sZGVyU2VsZWN0aW9uKFt0cmVlTm9kZV0pO1xuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSB0aGlzLmRhdGFUeXBlLmFyZWE6XG4gICAgICAgICAgcG9zaXRpb24gPSB0aGlzLnRyZWVEYXRhMS5maW5kSW5kZXgoeCA9PiB7XG4gICAgICAgICAgICByZXR1cm4geC5yb290SWQudG9Mb3dlckNhc2UoKSA9PT0gaXRlbS5pZC50b0xvd2VyQ2FzZSgpICYmIHgucGFyZW50SWQ/LnRvTG93ZXJDYXNlKCkgPT09IGl0ZW0ucGFyZW50SWQ/LnRvTG93ZXJDYXNlKCk7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgdHlwZUlkID0gaXRlbS5pdGVtVHlwZTtcblxuICAgICAgICAgIGlmIChwb3NpdGlvbiA+PSAwKSB7XG4gICAgICAgICAgICBub2RlID0gdGhpcy50cmVlRGF0YTFbcG9zaXRpb25dO1xuICAgICAgICAgICAgaWYgKHRoaXMudHJlZUNvbmZpZzEuc2hvd0NoZWNrQm94KSB7XG4gICAgICAgICAgICAgIHRoaXMuY2hlY2tlZE5vZGVMaXN0LnB1c2goe1xuICAgICAgICAgICAgICAgIG1vZHVsZUlkOiB0aGlzLm1vZHVsZUlkLFxuICAgICAgICAgICAgICAgIGlkOiBub2RlLnJvb3RJZCxcbiAgICAgICAgICAgICAgICBpdGVtTmFtZTogbm9kZS5yb290TmFtZSxcbiAgICAgICAgICAgICAgICBpdGVtVHlwZTogdHlwZUlkLFxuICAgICAgICAgICAgICAgIGl0ZW1OdW1iZXJJZDogaXRlbS5pdGVtTnVtYmVySWQsXG4gICAgICAgICAgICAgICAgbGV2ZWxUeXBlOiBpdGVtLmxldmVsVHlwZSxcbiAgICAgICAgICAgICAgICBwYXJlbnRJZDogaXRlbS5wYXJlbnRJZCxcbiAgICAgICAgICAgICAgICBwYXJlbnROYW1lOiBpdGVtLnBhcmVudE5hbWVcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZE5vZGUucHVzaCh7XG4gICAgICAgICAgICAgICAgbW9kdWxlSWQ6IHRoaXMubW9kdWxlSWQsXG4gICAgICAgICAgICAgICAgaWQ6IG5vZGUucm9vdElkLFxuICAgICAgICAgICAgICAgIGl0ZW1OYW1lOiBub2RlLnJvb3ROYW1lLFxuICAgICAgICAgICAgICAgIGl0ZW1UeXBlOiB0eXBlSWQsXG4gICAgICAgICAgICAgICAgaXRlbU51bWJlcklkOiBpdGVtLml0ZW1OdW1iZXJJZCxcbiAgICAgICAgICAgICAgICBsZXZlbFR5cGU6IGl0ZW0ubGV2ZWxUeXBlXG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBjb25zdCB0cmVlTm9kZSA9IHtcbiAgICAgICAgICAgIGlkOiBub2RlLnJvb3RJZCxcbiAgICAgICAgICAgIG5hbWU6ICEhbm9kZS5yb290SWQgPyBub2RlLnN1Yk5hbWUgOiBub2RlLnJvb3ROYW1lLFxuICAgICAgICAgICAgY2hpbGRyZW46IFtdLFxuICAgICAgICAgICAgcGFyZW50SWQ6IG5vZGUucGFyZW50SWRcbiAgICAgICAgICB9O1xuICAgICAgICAgIHRoaXMuZGF0YVRyZWVzLnRvQXJyYXkoKVswXS50b2RvRm9sZGVyU2VsZWN0aW9uKFt0cmVlTm9kZV0pO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIHRoaXMuZGF0YVR5cGUucHJvY2VzczpcbiAgICAgICAgICBjb25zdCBpc0V4aXN0SW5Qcm9jZXNzRGlzYWJsZWQgPSB0aGlzLmRpc2FibGVkTGlzdC5maW5kSW5kZXgoeCA9PiB7XG4gICAgICAgICAgICByZXR1cm4geC5pZCAmJiB4LmlkLnRvTG93ZXJDYXNlKCkgPT09IGl0ZW0uaWQudG9Mb3dlckNhc2UoKSAmJiB4LnBhcmVudElkPy50b0xvd2VyQ2FzZSgpID09PSBpdGVtLnBhcmVudElkPy50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIGlmIChpc0V4aXN0SW5Qcm9jZXNzRGlzYWJsZWQgPj0gMCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgICBwb3NpdGlvbiA9IHRoaXMudHJlZURhdGExLmZpbmRJbmRleCh4ID0+IHtcbiAgICAgICAgICAgIHJldHVybiB4LmNoaWxkSWQgJiYgeC5jaGlsZElkLnRvTG93ZXJDYXNlKCkgPT09IGl0ZW0uaWQudG9Mb3dlckNhc2UoKSAmJiB4LnJvb3RJZC50b0xvd2VyQ2FzZSgpID09PSBpdGVtLnBhcmVudElkPy50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIGlmIChwb3NpdGlvbiA+PSAwKSB7XG4gICAgICAgICAgICBub2RlID0gdGhpcy50cmVlRGF0YTFbcG9zaXRpb25dO1xuICAgICAgICAgICAgdHlwZUlkID0gdGhpcy5pdGVtVHlwZTtcbiAgICAgICAgICAgIGNvbnN0IHRyZWVOb2RlID0ge1xuICAgICAgICAgICAgICBpZDogbm9kZS5jaGlsZElkLFxuICAgICAgICAgICAgICBuYW1lOiBub2RlLmNoaWxkTmFtZSxcbiAgICAgICAgICAgICAgY2hpbGRyZW46IFtdLFxuICAgICAgICAgICAgICBwYXJlbnRJZDogbm9kZS5yb290SWRcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICB0aGlzLmRhdGFUcmVlcy50b0FycmF5KClbMF0udG9kb0l0ZW1TZWxlY3Rpb25Qcm9jZXNzRG9jdW1lbnQoW3RyZWVOb2RlXSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGxldCBuZXdOb2RlUHJvY2VzczogVHJlZU1vZGVsID0ge1xuICAgICAgICAgICAgICByb290SWQ6IGl0ZW0uYnJlYWRjdW1ic1tpdGVtLmJyZWFkY3VtYnMubGVuZ3RoIC0gMV0/LlsnaWQnXSxcbiAgICAgICAgICAgICAgcm9vdE5hbWU6IGl0ZW0uYnJlYWRjdW1ic1tpdGVtLmJyZWFkY3VtYnMubGVuZ3RoIC0gMV0/LlsnbmFtZSddLFxuICAgICAgICAgICAgICBwYXJlbnRJZDogJycsXG4gICAgICAgICAgICAgIHN1Yk5hbWU6IG51bGwsXG4gICAgICAgICAgICAgIGNoaWxkSWQ6IGl0ZW0uaWQsXG4gICAgICAgICAgICAgIGNoaWxkTmFtZTogaXRlbS5pdGVtTmFtZSxcbiAgICAgICAgICAgICAgc3RhdHVzSWQ6IGl0ZW0/LlsnaXRlbVN0YXR1cyddLFxuICAgICAgICAgICAgICBzdGF0dXNOYW1lOiBpdGVtPy5bJ3N0YXR1c05hbWUnXSxcbiAgICAgICAgICAgICAgZGlzcGxheUlkOiAraXRlbS5pdGVtTnVtYmVySWQsXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMudHJlZURhdGExID0gWy4uLnRoaXMudHJlZURhdGExLCBuZXdOb2RlUHJvY2Vzc107XG4gICAgICAgICAgICBsZXQgbmV3U2VsZWN0ZWRQcm9jZXNzOiBUcmVlRmxhdE5vZGUgPSB7XG4gICAgICAgICAgICAgIGRpc2FibGVkOiBmYWxzZSxcbiAgICAgICAgICAgICAgZXhwYW5kYWJsZTogZmFsc2UsXG4gICAgICAgICAgICAgIGhhc0NoaWxkOiBmYWxzZSxcbiAgICAgICAgICAgICAgaWQ6IGl0ZW0uaWQsXG4gICAgICAgICAgICAgIGxldmVsOiAwLFxuICAgICAgICAgICAgICBsZXZlbFR5cGU6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgbmFtZTogaXRlbS5pdGVtTmFtZSxcbiAgICAgICAgICAgICAgcGFyZW50SWQ6IGl0ZW0uYnJlYWRjdW1ic1tpdGVtLmJyZWFkY3VtYnMubGVuZ3RoIC0gMV0/LlsnaWQnXVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERhdGEgPSBbXTtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWREYXRhMiA9IFtdO1xuICAgICAgICAgICAgbGV0IHNlbGVjdFByb2Nlc3M6IFRyZWVGbGF0Tm9kZVtdID0gW107XG4gICAgICAgICAgICBsZXQgc2VsZWN0RG9jdW1lbnQ6IFRyZWVGbGF0Tm9kZVtdID0gW107XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmNoZWNrZWROb2RlTGlzdC5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgdGhpcy5jaGVja2VkTm9kZUxpc3QuZm9yRWFjaCh4ID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoeC5pdGVtVHlwZSA9PT0gRGF0YVR5cGUuYXJlYSB8fCB4Lml0ZW1UeXBlID09PSBEYXRhVHlwZS5wcm9jZXNzKSB7XG4gICAgICAgICAgICAgICAgICB0aGlzLnRyZWVEYXRhMS5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoaXRlbS5jaGlsZElkICYmIHguaWQgPT09IGl0ZW0uY2hpbGRJZCB8fCAhaXRlbS5jaGlsZElkICYmICh4LmlkID09PSBpdGVtLnJvb3RJZCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RQcm9jZXNzLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgZXhwYW5kYWJsZTogeC5pdGVtVHlwZSA9PSBEYXRhVHlwZS5hcmVhID8gdHJ1ZSA6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgaGFzQ2hpbGQ6IHguaXRlbVR5cGUgPT0gRGF0YVR5cGUuYXJlYSA/IHRydWUgOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiB4LmlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IDAsXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXZlbFR5cGU6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IHguaXRlbU5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnRJZDogeC5wYXJlbnRJZFxuICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICB0aGlzLnRyZWVEYXRhMi5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoaXRlbS5jaGlsZElkICYmIHguaWQgPT09IGl0ZW0uY2hpbGRJZCB8fCAhaXRlbS5jaGlsZElkICYmICh4LmlkID09PSBpdGVtLnJvb3RJZCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICBzZWxlY3REb2N1bWVudC5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGV4cGFuZGFibGU6IHguaXRlbVR5cGUgPT0gRGF0YVR5cGUuZm9sZGVyID8gdHJ1ZSA6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgaGFzQ2hpbGQ6IHguaXRlbVR5cGUgPT0gRGF0YVR5cGUuZm9sZGVyID8gdHJ1ZSA6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHguaWQsXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXZlbDogMCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldmVsVHlwZTogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogeC5pdGVtTmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudElkOiB4LnBhcmVudElkXG4gICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF0YSA9IFsuLi50aGlzLnNlbGVjdGVkRGF0YSwgLi4uc2VsZWN0UHJvY2VzcywgbmV3U2VsZWN0ZWRQcm9jZXNzXTtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWREYXRhMiA9IFsuLi50aGlzLnNlbGVjdGVkRGF0YTIsIC4uLnNlbGVjdERvY3VtZW50XTtcblxuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IHRyZWVOb2RlID0ge1xuICAgICAgICAgICAgICAgIGlkOiBuZXdOb2RlUHJvY2Vzcy5jaGlsZElkLFxuICAgICAgICAgICAgICAgIG5hbWU6IG5ld05vZGVQcm9jZXNzLmNoaWxkTmFtZSxcbiAgICAgICAgICAgICAgICBjaGlsZHJlbjogW10sXG4gICAgICAgICAgICAgICAgcGFyZW50SWQ6IG5ld05vZGVQcm9jZXNzLnJvb3RJZFxuICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICB0aGlzLmRhdGFUcmVlcy50b0FycmF5KClbMF0udG9kb0l0ZW1TZWxlY3Rpb25Qcm9jZXNzRG9jdW1lbnQoW3RyZWVOb2RlXSk7XG5cbiAgICAgICAgICAgIH0sIDUwMCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIHRoaXMuZGF0YVR5cGUuZGV2aWF0aW9uVHlwZTpcbiAgICAgICAgY2FzZSB0aGlzLmRhdGFUeXBlLmNoZWNrbGlzdENhdGVnb3J5OlxuICAgICAgICBjYXNlIHRoaXMuZGF0YVR5cGUucmlza0ZvbGRlcjpcbiAgICAgICAgICBwb3NpdGlvbiA9IHRoaXMudHJlZURhdGExLmZpbmRJbmRleCh4ID0+IHtcbiAgICAgICAgICAgIHJldHVybiB4LnJvb3RJZC50b0xvd2VyQ2FzZSgpID09PSBpdGVtLmlkLnRvTG93ZXJDYXNlKCkgJiYgeC5wYXJlbnRJZD8udG9Mb3dlckNhc2UoKSA9PT0gKGl0ZW0ucGFyZW50SWQgPyBpdGVtLnBhcmVudElkPy50b0xvd2VyQ2FzZSgpIDogJycpO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIHRoaXMuc2VsZWN0Tm9kZVJlY3Vyc2l2ZSh0aGlzLnRyZWVEYXRhMVtwb3NpdGlvbl0sIGl0ZW0uaXRlbVR5cGUpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIHRoaXMuZGF0YVR5cGUuZGV2aWF0aW9uOlxuICAgICAgICBjYXNlIHRoaXMuZGF0YVR5cGUuY2hlY2tsaXN0OlxuICAgICAgICBjYXNlIHRoaXMuZGF0YVR5cGUucmlzazpcbiAgICAgICAgICBwb3NpdGlvbiA9IHRoaXMudHJlZURhdGExLmZpbmRJbmRleCh4ID0+IHtcbiAgICAgICAgICAgIHJldHVybiB4LmNoaWxkSWQgJiYgeC5jaGlsZElkLnRvTG93ZXJDYXNlKCkgPT09IGl0ZW0uaWQudG9Mb3dlckNhc2UoKSAmJiB4LnJvb3RJZC50b0xvd2VyQ2FzZSgpID09PSBpdGVtLnBhcmVudElkPy50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIGlmIChwb3NpdGlvbiA+PSAwKSB7XG4gICAgICAgICAgICBub2RlID0gdGhpcy50cmVlRGF0YTFbcG9zaXRpb25dO1xuICAgICAgICAgICAgdHlwZUlkID0gdGhpcy5pdGVtVHlwZTtcbiAgICAgICAgICAgIGNvbnN0IHRyZWVOb2RlID0ge1xuICAgICAgICAgICAgICBpZDogbm9kZS5jaGlsZElkLFxuICAgICAgICAgICAgICBuYW1lOiBub2RlLmNoaWxkTmFtZSxcbiAgICAgICAgICAgICAgY2hpbGRyZW46IFtdLFxuICAgICAgICAgICAgICBwYXJlbnRJZDogbm9kZS5yb290SWRcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICB0aGlzLmRhdGFUcmVlcy50b0FycmF5KClbMF0udG9kb0l0ZW1TZWxlY3Rpb24oW3RyZWVOb2RlXSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBzZWxlY3ROb2RlUmVjdXJzaXZlKGl0ZW06IFRyZWVNb2RlbCwgaXRlbVR5cGU6IERhdGFUeXBlKSB7XG4gICAgbGV0IHBvc2l0aW9uID0gdGhpcy50cmVlRGF0YTEuZmluZEluZGV4KHggPT4ge1xuICAgICAgcmV0dXJuIHgucm9vdElkID09PSBpdGVtLnJvb3RJZDtcbiAgICB9KTtcblxuICAgIGlmIChwb3NpdGlvbiA+PSAwKSB7XG5cbiAgICAgIGNvbnN0IG5vZGU6IFRyZWVOb2RlID0ge1xuICAgICAgICBpZDogaXRlbS5yb290SWQsXG4gICAgICAgIG5hbWU6IGl0ZW0ucm9vdE5hbWUsXG4gICAgICAgIGNoaWxkcmVuOiBbXSxcbiAgICAgICAgcGFyZW50SWQ6IGl0ZW0ucGFyZW50SWRcbiAgICAgIH07XG5cbiAgICAgIGxldCBub2RlQ2hpbGRyZW46IFRyZWVOb2RlW10gPSB0aGlzLnRyZWVEYXRhMS5cbiAgICAgICAgZmlsdGVyKHggPT4geC5yb290SWQgPT09IGl0ZW0ucm9vdElkICYmIHguY2hpbGRJZCkuXG4gICAgICAgIG1hcCh4ID0+IHtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgaWQ6IHguY2hpbGRJZCxcbiAgICAgICAgICAgIG5hbWU6IGl0ZW0uY2hpbGROYW1lLFxuICAgICAgICAgICAgY2hpbGRyZW46IFtdLFxuICAgICAgICAgICAgcGFyZW50SWQ6IGl0ZW0ucm9vdElkXG4gICAgICAgICAgfTtcbiAgICAgICAgfSk7XG4gICAgICBsZXQgbm9kZVN1YmZvbGRlcnM6IFRyZWVNb2RlbFtdID0gdGhpcy50cmVlRGF0YTEuXG4gICAgICAgIGZpbHRlcih4ID0+IHgucGFyZW50SWQgPT09IGl0ZW0ucm9vdElkKTtcblxuICAgICAgaWYgKHRoaXMudHJlZUNvbmZpZzEuc2hvd0NoZWNrQm94KSB7XG4gICAgICAgIG5vZGVDaGlsZHJlbi5mb3JFYWNoKHggPT4ge1xuICAgICAgICAgIHRoaXMuY2hlY2tlZE5vZGVMaXN0LnB1c2goe1xuICAgICAgICAgICAgbW9kdWxlSWQ6IHRoaXMubW9kdWxlSWQsXG4gICAgICAgICAgICBpZDogeC5pZCxcbiAgICAgICAgICAgIGl0ZW1OYW1lOiB4Lm5hbWUsXG4gICAgICAgICAgICBpdGVtVHlwZTogaXRlbVR5cGUsXG4gICAgICAgICAgICBpdGVtTnVtYmVySWQ6IGl0ZW0uZGlzcGxheUlkLnRvU3RyaW5nKCksXG4gICAgICAgICAgICBwYXJlbnRJZDogaXRlbS5yb290SWQsXG4gICAgICAgICAgICBwYXJlbnROYW1lOiBpdGVtLnJvb3ROYW1lXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgZWxzZSB7XG4gICAgICAgIG5vZGVDaGlsZHJlbi5mb3JFYWNoKHggPT4ge1xuICAgICAgICAgIHRoaXMuc2VsZWN0ZWROb2RlLnB1c2goe1xuICAgICAgICAgICAgbW9kdWxlSWQ6IHRoaXMubW9kdWxlSWQsXG4gICAgICAgICAgICBpZDogeC5pZCxcbiAgICAgICAgICAgIGl0ZW1OYW1lOiB4Lm5hbWUsXG4gICAgICAgICAgICBpdGVtVHlwZTogaXRlbVR5cGUsXG4gICAgICAgICAgICBpdGVtTnVtYmVySWQ6IGl0ZW0uZGlzcGxheUlkLnRvU3RyaW5nKCksXG4gICAgICAgICAgICBwYXJlbnRJZDogaXRlbS5yb290SWRcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuZGF0YVRyZWVzLnRvQXJyYXkoKVswXS50b2RvSXRlbVNlbGVjdGlvbihbbm9kZV0uY29uY2F0KG5vZGVDaGlsZHJlbikpO1xuICAgICAgaWYgKG5vZGVTdWJmb2xkZXJzKSB7XG4gICAgICAgIG5vZGVTdWJmb2xkZXJzLmZvckVhY2goZm9sZGVyID0+IHtcbiAgICAgICAgICB0aGlzLnNlbGVjdE5vZGVSZWN1cnNpdmUoZm9sZGVyLCBpdGVtVHlwZSk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm47XG4gIH1cblxuICBzZXRUeXBlUHJvY2VzcyhleHBhbmQpIHtcbiAgICByZXR1cm4gZXhwYW5kID8gdGhpcy5kYXRhVHlwZS5hcmVhIDogdGhpcy5kYXRhVHlwZS5wcm9jZXNzO1xuICB9XG5cbiAgZ2V0Q29tbW9uQ2hlY2tlZE5vZGUobGlzdDogQXJyYXk8VHJlZUZsYXROb2RlPikge1xuICAgIHRoaXMuY2hlY2tlZE5vZGVMaXN0ID0gW107XG4gICAgdGhpcy5zaW5nbGVQcm9jZXNzTGlzdCA9IFtdO1xuICAgIHRoaXMuY29tbW9uQ2hlY2tlZExpc3QgPSBbXTtcbiAgICB0aGlzLmNoZWNrZWROb2RlTGlzdCA9IFsuLi50aGlzLnNpbmdsZURvY3VtZW50TGlzdF07XG4gICAgaWYgKGxpc3QubGVuZ3RoKSB7XG4gICAgICBsaXN0LmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5jaGVja2VkTm9kZUxpc3QuZmluZEluZGV4KHggPT4geC5pZCA9PT0gaXRlbS5pZCAmJiB4LnBhcmVudElkID09PSBpdGVtLnBhcmVudElkKTtcblxuICAgICAgICBpZiAoaXRlbS5pZCAmJiBpbmRleCA8IDApIHtcbiAgICAgICAgICB0aGlzLmNvbW1vbkNoZWNrZWRMaXN0LnB1c2goaXRlbSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5zaW5nbGVTZWxlY3RlZE5vZGUpIHtcbiAgICAgICAgICBsZXQgcG9zaXRpb246IG51bWJlcjtcbiAgICAgICAgICBpZiAoaXRlbS5leHBhbmRhYmxlKSB7XG4gICAgICAgICAgICBwb3NpdGlvbiA9IHRoaXMudHJlZURhdGExLmZpbmRJbmRleChwID0+IHAucm9vdElkID09PSBpdGVtLmlkKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBwb3NpdGlvbiA9IHRoaXMudHJlZURhdGExLmZpbmRJbmRleChwID0+IHAuY2hpbGRJZCA9PT0gaXRlbS5pZCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChwb3NpdGlvbiA+IC0xKSB7XG4gICAgICAgICAgICB0aGlzLnNpbmdsZVByb2Nlc3NMaXN0LnB1c2goe1xuICAgICAgICAgICAgICBtb2R1bGVJZDogdGhpcy5tb2R1bGVJZCxcbiAgICAgICAgICAgICAgaWQ6IGl0ZW0uaWQsXG4gICAgICAgICAgICAgIGl0ZW1OYW1lOiBpdGVtLm5hbWUsXG4gICAgICAgICAgICAgIGl0ZW1UeXBlOiAodGhpcy5pdGVtVHlwZSA9PT0gMikgPyB0aGlzLnNldFR5cGVQcm9jZXNzKGl0ZW0uZXhwYW5kYWJsZSkgOiB0aGlzLml0ZW1UeXBlLFxuICAgICAgICAgICAgICBpdGVtTnVtYmVySWQ6IHRoaXMudHJlZURhdGExW3Bvc2l0aW9uXS5kaXNwbGF5SWQudG9TdHJpbmcoKSxcbiAgICAgICAgICAgICAgcGFyZW50SWQ6IGl0ZW0ucGFyZW50SWQsXG4gICAgICAgICAgICAgIGxldmVsVHlwZTogaXRlbS5sZXZlbFR5cGVcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpdGVtLmlkICYmIGluZGV4IDwgMCAmJiAhaXRlbS5leHBhbmRhYmxlICYmICF0aGlzLnNpbmdsZVNlbGVjdGVkTm9kZSkge1xuICAgICAgICAgIGNvbnN0IHBvc2l0aW9uID0gdGhpcy50cmVlRGF0YTEuZmluZEluZGV4KHAgPT4gcC5jaGlsZElkID09PSBpdGVtLmlkICYmIHAucm9vdElkID09PSBpdGVtLnBhcmVudElkKTtcblxuICAgICAgICAgIGlmIChwb3NpdGlvbiA+IC0xKSB7XG4gICAgICAgICAgICB0aGlzLmNoZWNrZWROb2RlTGlzdC5wdXNoKHtcbiAgICAgICAgICAgICAgbW9kdWxlSWQ6IHRoaXMubW9kdWxlSWQsXG4gICAgICAgICAgICAgIGlkOiBpdGVtLmlkLFxuICAgICAgICAgICAgICBpdGVtTmFtZTogaXRlbS5uYW1lLFxuICAgICAgICAgICAgICBpdGVtVHlwZTogdGhpcy5pdGVtVHlwZSxcbiAgICAgICAgICAgICAgcGFyZW50SWQ6IGl0ZW0ucGFyZW50SWQsXG4gICAgICAgICAgICAgIHBhcmVudE5hbWU6IHRoaXMudHJlZURhdGExW3Bvc2l0aW9uXS5wYXJlbnRJZCA/IHRoaXMudHJlZURhdGExW3Bvc2l0aW9uXS5zdWJOYW1lIDogdGhpcy50cmVlRGF0YTFbcG9zaXRpb25dLnJvb3ROYW1lLFxuICAgICAgICAgICAgICBpdGVtTnVtYmVySWQ6IHRoaXMudHJlZURhdGExW3Bvc2l0aW9uXS5kaXNwbGF5SWQudG9TdHJpbmcoKSxcbiAgICAgICAgICAgICAgbGV2ZWxUeXBlOiBpdGVtLmxldmVsVHlwZVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgaWYgKHRoaXMuc2luZ2xlU2VsZWN0ZWROb2RlKSB7XG4gICAgICAgIHRoaXMuY2hlY2tlZE5vZGVMaXN0ID0gWy4uLnRoaXMuY2hlY2tlZE5vZGVMaXN0LCAuLi50aGlzLnNpbmdsZVByb2Nlc3NMaXN0XTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMubWF4U2VsZWN0SXRlbUNvdW50ICYmIHRoaXMubWF4U2VsZWN0SXRlbUNvdW50ID4gMCkge1xuICAgICAgICBjb25zdCByZW1vdmVMaXN0ID0gdGhpcy5jaGVja2VkTm9kZUxpc3Quc2xpY2UoMCwgdGhpcy5tYXhTZWxlY3RJdGVtQ291bnQgKiAtMSk7XG4gICAgICAgIGlmIChyZW1vdmVMaXN0Lmxlbmd0aCkge1xuICAgICAgICAgIHJlbW92ZUxpc3QuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgICAgICAgIHRoaXMucmVtb3ZlQ2hlY2tlZE5vZGVMaXN0KHtcbiAgICAgICAgICAgICAgaWQ6IGl0ZW0uaWQsXG4gICAgICAgICAgICAgIG5hbWU6IGl0ZW0uaXRlbU5hbWUsXG4gICAgICAgICAgICAgIHBhcmVudElkOiBpdGVtLnBhcmVudElkLFxuICAgICAgICAgICAgICBsZXZlbDogMCxcbiAgICAgICAgICAgICAgZXhwYW5kYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgaGFzQ2hpbGQ6IHRydWUsXG4gICAgICAgICAgICAgIGRpc2FibGVkOiBmYWxzZVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jaGVja2VkTm9kZUxpc3QgPSB0aGlzLmNoZWNrZWROb2RlTGlzdC5zbGljZSh0aGlzLm1heFNlbGVjdEl0ZW1Db3VudCAqIC0xKTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5zZWxlY3RlZERhdGEgPSB0aGlzLmNvbW1vbkNoZWNrZWRMaXN0O1xuICB9XG5cbiAgZ2V0RG9jdW1lbnRDaGVja2VkTm9kZShsaXN0OiBBcnJheTxUcmVlRmxhdE5vZGU+KSB7XG4gICAgdGhpcy5jaGVja2VkTm9kZUxpc3QgPSBbXTtcbiAgICB0aGlzLnNpbmdsZURvY3VtZW50TGlzdCA9IFtdO1xuICAgIHRoaXMuZG9jdW1lbnRDaGVja2VkTGlzdCA9IFtdO1xuICAgIHRoaXMuY2hlY2tlZE5vZGVMaXN0ID0gWy4uLnRoaXMuc2luZ2xlUHJvY2Vzc0xpc3RdO1xuICAgIGlmIChsaXN0Lmxlbmd0aCkge1xuICAgICAgbGlzdC5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMuY2hlY2tlZE5vZGVMaXN0LmZpbmRJbmRleCh4ID0+IHguaWQgPT09IGl0ZW0uaWQpO1xuXG4gICAgICAgIGlmIChpdGVtLmlkICYmIGluZGV4IDwgMCkge1xuICAgICAgICAgIHRoaXMuZG9jdW1lbnRDaGVja2VkTGlzdC5wdXNoKGl0ZW0pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuc2luZ2xlU2VsZWN0ZWROb2RlKSB7XG4gICAgICAgICAgbGV0IHBvc2l0aW9uOiBudW1iZXI7XG4gICAgICAgICAgaWYgKGl0ZW0uZXhwYW5kYWJsZSkge1xuICAgICAgICAgICAgcG9zaXRpb24gPSB0aGlzLnRyZWVEYXRhMi5maW5kSW5kZXgocCA9PiBwLnJvb3RJZCA9PT0gaXRlbS5pZCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcG9zaXRpb24gPSB0aGlzLnRyZWVEYXRhMi5maW5kSW5kZXgocCA9PiBwLmNoaWxkSWQgPT09IGl0ZW0uaWQpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAocG9zaXRpb24gPiAtMSkge1xuICAgICAgICAgICAgdGhpcy5zaW5nbGVEb2N1bWVudExpc3QucHVzaCh7XG4gICAgICAgICAgICAgIG1vZHVsZUlkOiB0aGlzLm1vZHVsZUlkLFxuICAgICAgICAgICAgICBpZDogaXRlbS5pZCxcbiAgICAgICAgICAgICAgaXRlbU5hbWU6IGl0ZW0ubmFtZSxcbiAgICAgICAgICAgICAgaXRlbVR5cGU6IGl0ZW0uZXhwYW5kYWJsZSA/IHRoaXMuZGF0YVR5cGUuZm9sZGVyIDogdGhpcy5kYXRhVHlwZS5kb2N1bWVudCxcbiAgICAgICAgICAgICAgaXRlbU51bWJlcklkOiB0aGlzLnRyZWVEYXRhMltwb3NpdGlvbl0uZGlzcGxheUlkLnRvU3RyaW5nKCksXG4gICAgICAgICAgICAgIHBhcmVudElkOiBpdGVtLnBhcmVudElkLFxuICAgICAgICAgICAgICBsZXZlbFR5cGU6IGl0ZW0ubGV2ZWxUeXBlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaW5kZXggPCAwICYmICFpdGVtLmV4cGFuZGFibGUgJiYgIXRoaXMuc2luZ2xlU2VsZWN0ZWROb2RlKSB7XG4gICAgICAgICAgY29uc3QgcG9zaXRpb24gPSB0aGlzLnRyZWVEYXRhMi5maW5kSW5kZXgocCA9PiBwLmNoaWxkSWQgPT09IGl0ZW0uaWQpO1xuICAgICAgICAgIGlmIChwb3NpdGlvbiA+IC0xKSB7XG4gICAgICAgICAgICB0aGlzLmNoZWNrZWROb2RlTGlzdC5wdXNoKHtcbiAgICAgICAgICAgICAgbW9kdWxlSWQ6IHRoaXMubW9kdWxlSWQsXG4gICAgICAgICAgICAgIGlkOiBpdGVtLmlkLFxuICAgICAgICAgICAgICBpdGVtTmFtZTogaXRlbS5uYW1lLFxuICAgICAgICAgICAgICBpdGVtVHlwZTogdGhpcy5kYXRhVHlwZS5kb2N1bWVudCxcbiAgICAgICAgICAgICAgaXRlbU51bWJlcklkOiB0aGlzLnRyZWVEYXRhMltwb3NpdGlvbl0uZGlzcGxheUlkLnRvU3RyaW5nKCksXG4gICAgICAgICAgICAgIHBhcmVudElkOiBpdGVtLnBhcmVudElkLFxuICAgICAgICAgICAgICBwYXJlbnROYW1lOiB0aGlzLnRyZWVEYXRhMltwb3NpdGlvbl0ucm9vdE5hbWUsXG4gICAgICAgICAgICAgIGxldmVsVHlwZTogaXRlbS5sZXZlbFR5cGVcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIGlmICh0aGlzLnNpbmdsZVNlbGVjdGVkTm9kZSkge1xuICAgICAgICB0aGlzLmNoZWNrZWROb2RlTGlzdCA9IFsuLi50aGlzLmNoZWNrZWROb2RlTGlzdCwgLi4udGhpcy5zaW5nbGVEb2N1bWVudExpc3RdO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5tYXhTZWxlY3RJdGVtQ291bnQgJiYgdGhpcy5tYXhTZWxlY3RJdGVtQ291bnQgPiAwKSB7XG4gICAgICAgIGNvbnN0IHJlbW92ZUxpc3QgPSB0aGlzLmNoZWNrZWROb2RlTGlzdC5zbGljZSgwLCB0aGlzLm1heFNlbGVjdEl0ZW1Db3VudCAqIC0xKTtcbiAgICAgICAgaWYgKHJlbW92ZUxpc3QubGVuZ3RoKSB7XG4gICAgICAgICAgcmVtb3ZlTGlzdC5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgICAgICAgdGhpcy5yZW1vdmVDaGVja2VkTm9kZUxpc3Qoe1xuICAgICAgICAgICAgICBpZDogaXRlbS5pZCxcbiAgICAgICAgICAgICAgbmFtZTogaXRlbS5pdGVtTmFtZSxcbiAgICAgICAgICAgICAgcGFyZW50SWQ6IGl0ZW0ucGFyZW50SWQsXG4gICAgICAgICAgICAgIGxldmVsOiAwLFxuICAgICAgICAgICAgICBleHBhbmRhYmxlOiB0cnVlLFxuICAgICAgICAgICAgICBoYXNDaGlsZDogdHJ1ZSxcbiAgICAgICAgICAgICAgZGlzYWJsZWQ6IGZhbHNlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmNoZWNrZWROb2RlTGlzdCA9IHRoaXMuY2hlY2tlZE5vZGVMaXN0LnNsaWNlKHRoaXMubWF4U2VsZWN0SXRlbUNvdW50ICogLTEpO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLnNlbGVjdGVkRGF0YTIgPSB0aGlzLmRvY3VtZW50Q2hlY2tlZExpc3Q7XG4gIH1cblxuICBvbkNsb3NlQ2xpY2soKTogdm9pZCB7XG4gICAgdGhpcy5zZWxlY3RlZEZvbGRlciA9IG51bGw7XG4gICAgdGhpcy5pdGVtSW5TcGxpdHZpZXcgPSBbXTtcbiAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZSgpO1xuICB9O1xuXG4gIGFzeW5jIG9uQWRkQ2xpY2soKSB7XG4gICAgdGhpcy5zZWxlY3RlZEZvbGRlciA9IG51bGw7XG4gICAgdGhpcy5pdGVtSW5TcGxpdHZpZXcgPSBbXTtcbiAgICBsZXQgaW1hZ2VSZWxhdGl2ZVVybCA9IFwiXCI7XG4gICAgbGV0IHJlcXVlc3RVcGxvYWRWaWRlb1VybCA9IFwiXCI7XG5cbiAgICB0aGlzLmNoZWNrZWROb2RlTGlzdC5mb3JFYWNoKGVsZW1lbnQgPT4ge1xuICAgICAgaWYgKGVsZW1lbnQuaXRlbVR5cGUgPT09IERhdGFUeXBlLmRvY3VtZW50KSB7XG4gICAgICAgIGVsZW1lbnQuc3RhdHVzID0gdGhpcy5nZXRTdGF0dXNEb2NzKGVsZW1lbnQuaWQpO1xuICAgICAgICBlbGVtZW50LmJyZWFkY3VtYnMgPSB0aGlzLmdldEJyZWFkY3VtYkFsbFBhcmVudERvY3MoZWxlbWVudC5pZCkuc2xpY2UoMSkucmV2ZXJzZSgpO1xuICAgICAgICBlbGVtZW50LnN0YXR1c05hbWUgPSB0aGlzLmdldFN0YXR1c05hbWUoZWxlbWVudC5pZCk7XG4gICAgICB9XG4gICAgICBpZiAoZWxlbWVudC5pdGVtVHlwZSA9PT0gRGF0YVR5cGUucHJvY2Vzcykge1xuICAgICAgICBlbGVtZW50LnN0YXR1cyA9IHRoaXMuZ2V0U3RhdHVzUHJvY2VzcyhlbGVtZW50LmlkKTtcbiAgICAgICAgZWxlbWVudC5icmVhZGN1bWJzID0gdGhpcy5nZXRCcmVhZGN1bWJBbGxQYXJlbnRQcm9jZXNzKGVsZW1lbnQuaWQpLnNsaWNlKDEpLnJldmVyc2UoKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGlmICghdGhpcy5jYW5VcGxvYWRJbWFnZSAmJiAhdGhpcy5jYW5VcGxvYWRWaWRlbylcbiAgICAgIHJldHVybiB0aGlzLmRpYWxvZ1JlZi5jbG9zZSh0aGlzLmNoZWNrZWROb2RlTGlzdCk7XG5cbiAgICBpZiAodGhpcy5vcmlnaW5WaWRlb0RhdGFTcmMgJiYgdGhpcy52aWRlb0RhdGEgJiYgIXRoaXMudmlkZW9EYXRhLnNyYykge1xuICAgICAgdGhpcy52aWRlb0RhdGEuc3JjID0gdGhpcy5vcmlnaW5WaWRlb0RhdGFTcmM7XG4gICAgfVxuICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKHRoaXMudmlkZW9EYXRhKTtcbiAgfVxuXG4gIGdldFN0YXR1c05hbWUoaWQpIHtcbiAgICBsZXQgc3RhdHVzTmFtZSA9ICcnXG4gICAgdGhpcy50cmVlRGF0YTIuZm9yRWFjaCh4ID0+IHtcbiAgICAgIGlmIChpZC50b1N0cmluZygpID09PSB4LmNoaWxkSWQpIHtcbiAgICAgICAgc3RhdHVzTmFtZSA9IHguc3RhdHVzTmFtZTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBzdGF0dXNOYW1lO1xuICB9XG5cbiAgZ2V0QnJlYWRjdW1iQWxsUGFyZW50UHJvY2VzcyhpZCkge1xuICAgIGxldCB0ZW1wUGFyZW50ID0gW107XG4gICAgdGhpcy5jaGVja0JyZWFkY3VtYlByb2Nlc3MoaWQsIHRlbXBQYXJlbnQsIGZ1bmN0aW9uIChhcnIpIHtcbiAgICAgIHRlbXBQYXJlbnQgPSBbLi4uYXJyXTtcbiAgICB9KTtcblxuICAgIHJldHVybiB0ZW1wUGFyZW50O1xuICB9XG5cbiAgZ2V0QnJlYWRjdW1iQWxsUGFyZW50RG9jcyhpZCkge1xuICAgIGxldCB0ZW1wUGFyZW50ID0gW107XG4gICAgdGhpcy5jaGVja0JyZWFkY3VtYkRvY3VtZW50KGlkLCB0ZW1wUGFyZW50LCBmdW5jdGlvbiAoYXJyKSB7XG4gICAgICB0ZW1wUGFyZW50ID0gWy4uLmFycl07XG4gICAgfSk7XG5cbiAgICByZXR1cm4gdGVtcFBhcmVudDtcbiAgfVxuXG4gIGNoZWNrQnJlYWRjdW1iUHJvY2VzcyhpZCwgYnJlYWRjdW1icywgY2FsbGJhY2spIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMudHJlZUNvbnRyb2xOb2RlUHJvY2Vzcy5kYXRhTm9kZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNvbnN0IHRyZWUgPSB0aGlzLnRyZWVDb250cm9sTm9kZVByb2Nlc3MuZGF0YU5vZGVzW2ldO1xuICAgICAgaWYgKGlkID09IHRyZWUuaWQpIHtcbiAgICAgICAgYnJlYWRjdW1icyA9IFsuLi5icmVhZGN1bWJzLCB0cmVlXTtcbiAgICAgICAgaWYgKHRyZWUucGFyZW50SWQpIHtcbiAgICAgICAgICB0aGlzLmNoZWNrQnJlYWRjdW1iUHJvY2Vzcyh0cmVlLnBhcmVudElkLCBicmVhZGN1bWJzLCBjYWxsYmFjayk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY2FsbGJhY2soYnJlYWRjdW1icyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjaGVja0JyZWFkY3VtYkRvY3VtZW50KGlkLCBicmVhZGN1bWJzLCBjYWxsYmFjaykge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy50cmVlQ29udHJvbE5vZGVEb2N1bWVudC5kYXRhTm9kZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNvbnN0IHRyZWUgPSB0aGlzLnRyZWVDb250cm9sTm9kZURvY3VtZW50LmRhdGFOb2Rlc1tpXTtcbiAgICAgIGlmIChpZCA9PSB0cmVlLmlkKSB7XG4gICAgICAgIGJyZWFkY3VtYnMgPSBbLi4uYnJlYWRjdW1icywgdHJlZV07XG4gICAgICAgIGlmICh0cmVlLnBhcmVudElkKSB7XG4gICAgICAgICAgdGhpcy5jaGVja0JyZWFkY3VtYkRvY3VtZW50KHRyZWUucGFyZW50SWQsIGJyZWFkY3VtYnMsIGNhbGxiYWNrKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjYWxsYmFjayhicmVhZGN1bWJzKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHNlbGVjdFRyZWVDb250cm9sTm9kZURvY3VtZW50KHRyZWVOb2Rlcykge1xuICAgIHRoaXMudHJlZUNvbnRyb2xOb2RlRG9jdW1lbnQgPSBudWxsO1xuICAgIHRoaXMudHJlZUNvbnRyb2xOb2RlRG9jdW1lbnQgPSB0cmVlTm9kZXM7XG4gICAgdGhpcy50cmVlQ29udHJvbE5vZGVEb2N1bWVudC5kYXRhTm9kZXMgPSB0aGlzLnRyZWVDb250cm9sTm9kZURvY3VtZW50LmRhdGFOb2Rlcy5maWx0ZXIoeCA9PiB4Lm5hbWUgIT09IG51bGwgJiYgeC5uYW1lICE9PSAnJyk7XG5cbiAgfVxuXG4gIHNlbGVjdFRyZWVDb250cm9sTm9kZVByb2Nlc3ModHJlZU5vZGVzKSB7XG4gICAgdGhpcy50cmVlQ29udHJvbE5vZGVQcm9jZXNzID0gbnVsbDtcbiAgICB0aGlzLnRyZWVDb250cm9sTm9kZVByb2Nlc3MgPSB0cmVlTm9kZXM7XG4gICAgdGhpcy50cmVlQ29udHJvbE5vZGVQcm9jZXNzLmRhdGFOb2RlcyA9IHRoaXMudHJlZUNvbnRyb2xOb2RlUHJvY2Vzcy5kYXRhTm9kZXMuZmlsdGVyKHggPT4geC5uYW1lICE9PSBudWxsICYmIHgubmFtZSAhPT0gJycpO1xuICB9XG5cbiAgZ2V0U3RhdHVzRG9jcyhpZCkge1xuICAgIHJldHVybiB0aGlzLnRyZWVEYXRhMi5maWx0ZXIoeCA9PiB4LmNoaWxkSWQgPT09IGlkKVswXS5zdGF0dXNJZDtcbiAgfVxuXG4gIGdldFN0YXR1c1Byb2Nlc3MoaWQpIHtcbiAgICByZXR1cm4gdGhpcy50cmVlRGF0YTEuZmlsdGVyKHggPT4geC5jaGlsZElkID09PSBpZClbMF0uc3RhdHVzSWQ7XG4gIH1cblxuICBnZXRPZmZzZXRIZWlnaHQoZWxlbWVudDogSFRNTEVsZW1lbnQsIGluY2x1ZGVNYXJnaW46IGJvb2xlYW4pOiBudW1iZXIge1xuICAgIGxldCBlbG1IZWlnaHQgPSAwLCBlbG1NYXJnaW4gPSAwO1xuXG4gICAgZWxtSGVpZ2h0ID0gZWxlbWVudC5vZmZzZXRIZWlnaHQ7XG4gICAgaWYgKGluY2x1ZGVNYXJnaW4pIHtcbiAgICAgIGNvbnN0IHN0eWxlID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUoZWxlbWVudCk7XG4gICAgICBlbG1NYXJnaW4gPSBwYXJzZUZsb2F0KHN0eWxlLm1hcmdpblRvcC5yZXBsYWNlKCdweCcsICcnKSkgKyBwYXJzZUZsb2F0KHN0eWxlLm1hcmdpbkJvdHRvbS5yZXBsYWNlKCdweCcsICcnKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIChlbG1IZWlnaHQgKyBlbG1NYXJnaW4pO1xuICB9XG5cbiAgZ2V0SXRlbUNoaXBOYW1lKGl0ZW06IFNlbGVjdGVkTm9kZSkge1xuICAgIGlmIChpdGVtLml0ZW1UeXBlID09PSBEYXRhVHlwZS5jaGVja2xpc3QgfHwgaXRlbS5pdGVtVHlwZSA9PT0gRGF0YVR5cGUuZGV2aWF0aW9uKSB7XG4gICAgICByZXR1cm4gKGl0ZW0ucGFyZW50TmFtZSAmJiBpdGVtLml0ZW1OYW1lICE9PSBpdGVtLnBhcmVudE5hbWUpID8gYCR7aXRlbS5wYXJlbnROYW1lfS8ke2l0ZW0uaXRlbU5hbWV9YCA6IGl0ZW0uaXRlbU5hbWU7XG4gICAgfVxuICAgIHJldHVybiBpdGVtLml0ZW1OYW1lO1xuICB9XG5cbiAgaXNFbGxpcHNpc0FjdGl2ZShlOiBIVE1MRWxlbWVudCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBlID8gKGUuY2xpZW50V2lkdGggPCBlLnNjcm9sbFdpZHRoKSA6IGZhbHNlO1xuICB9XG5cbiAgZ2V0Tm9kZUljb24oaXRlbTogSVJlbGF0ZWQpIHtcbiAgICBzd2l0Y2ggKGl0ZW0uaXRlbVR5cGUpIHtcbiAgICAgIGNhc2UgRGF0YVR5cGUuZm9sZGVyOiB7XG4gICAgICAgIHN3aXRjaCAoaXRlbS5sZXZlbFR5cGUpIHtcbiAgICAgICAgICBjYXNlIERvY3VtZW50Tm9kZVR5cGUuRGVwYXJ0bWVudEZvbGRlcjpcbiAgICAgICAgICAgIHJldHVybiAnZGVwYXJ0bWVudF9mb2xkZXJfb3V0bGluZWQnO1xuICAgICAgICAgIGNhc2UgRG9jdW1lbnROb2RlVHlwZS5SZWdpb25hbEZvbGRlcjpcbiAgICAgICAgICAgIHJldHVybiAncmVnaW9uYWxfZm9sZGVyX291dGxpbmVkJztcbiAgICAgICAgICBjYXNlIERvY3VtZW50Tm9kZVR5cGUuVG9wRm9sZGVyOlxuICAgICAgICAgICAgcmV0dXJuICdlbnRlcnByaXNlX2ZvbGRlcl9vdXRsaW5lZCc7XG4gICAgICAgICAgY2FzZSBEb2N1bWVudE5vZGVUeXBlLkZvbGRlcjpcbiAgICAgICAgICAgIHJldHVybiAnbG9jYWxfZm9sZGVyX291dGxpbmVkJztcbiAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgcmV0dXJuICdmb2xkZXJfb3V0bGluZWQnO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBjYXNlIERhdGFUeXBlLmRvY3VtZW50OiB7XG4gICAgICAgIHN3aXRjaCAoaXRlbS5sZXZlbFR5cGUpIHtcbiAgICAgICAgICBjYXNlIERvY3VtZW50Tm9kZVR5cGUuRGVwYXJ0bWVudEZvbGRlcjpcbiAgICAgICAgICAgIHJldHVybiAnZG9jdW1lbnRfZGVwYXJ0bWVudCc7XG4gICAgICAgICAgY2FzZSBEb2N1bWVudE5vZGVUeXBlLlJlZ2lvbmFsRm9sZGVyOlxuICAgICAgICAgICAgcmV0dXJuICdkb2N1bWVudF9yZWdpb25hbCc7XG4gICAgICAgICAgY2FzZSBEb2N1bWVudE5vZGVUeXBlLlRvcEZvbGRlcjpcbiAgICAgICAgICAgIHJldHVybiAnZG9jdW1lbnRfZW50ZXJwcmlzZSc7XG4gICAgICAgICAgY2FzZSBEb2N1bWVudE5vZGVUeXBlLkZvbGRlcjpcbiAgICAgICAgICAgIHJldHVybiAnZG9jdW1lbnRfbG9jYWwnO1xuICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICByZXR1cm4gJ2RvY3VtZW50JztcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgY2FzZSBEYXRhVHlwZS5hcmVhOlxuICAgICAgICByZXR1cm4gJ3Byb2Nlc3NfYXJlYV9vdXRsaW5lZCc7XG4gICAgICBjYXNlIERhdGFUeXBlLnByb2Nlc3M6XG4gICAgICAgIHJldHVybiAncHJvY2Vzcyc7XG4gICAgICBjYXNlIERhdGFUeXBlLmRldmlhdGlvbjpcbiAgICAgICAgcmV0dXJuICdkZXZpYXRpb24nO1xuICAgICAgY2FzZSBEYXRhVHlwZS5jaGVja2xpc3Q6XG4gICAgICAgIHJldHVybiAnY2hlY2tsaXN0JztcbiAgICAgIGNhc2UgRGF0YVR5cGUucmlzazpcbiAgICAgICAgcmV0dXJuICdyaXNrJztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiAnZm9sZGVyX291dGxpbmVkJztcbiAgICB9XG4gIH1cblxuICBnZXRTZWFyY2hPcmRlcigpIHtcbiAgICBsZXQgc2VhcmNoVHlwZXMgPSBPYmplY3Qua2V5cyh0aGlzLmRhdGFUeXBlKVxuICAgICAgLm1hcChrZXkgPT4gKHsgdmFsdWU6IHRoaXMuZGF0YVR5cGVba2V5XSwga2V5OiBrZXkgfSkpO1xuICAgIHNlYXJjaFR5cGVzID0gc2VhcmNoVHlwZXMuc2xpY2Uoc2VhcmNoVHlwZXMubGVuZ3RoIC8gMik7XG4gICAgcmV0dXJuIHNlYXJjaFR5cGVzO1xuICB9XG5cbiAgZ2V0VGl0bGUodHlwZTogbnVtYmVyKSB7XG4gICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICBjYXNlIERhdGFUeXBlLnByb2Nlc3M6XG4gICAgICAgIHJldHVybiB0aGlzLkxBTkcuUFJPQ0VTU0VTO1xuICAgICAgY2FzZSBEYXRhVHlwZS5hcmVhOlxuICAgICAgICByZXR1cm4gdGhpcy5MQU5HLlBST0NFU1NfQVJFQTtcbiAgICAgIGNhc2UgRGF0YVR5cGUuZG9jdW1lbnQ6XG4gICAgICAgIHJldHVybiB0aGlzLkxBTkcuRE9DVU1FTlRTO1xuICAgICAgY2FzZSBEYXRhVHlwZS5mb2xkZXI6XG4gICAgICAgIHJldHVybiB0aGlzLkxBTkcuRk9MREVSO1xuICAgICAgY2FzZSBEYXRhVHlwZS5kZXZpYXRpb246XG4gICAgICAgIHJldHVybiB0aGlzLkxBTkcuREVWSUFUSU9OO1xuICAgICAgY2FzZSBEYXRhVHlwZS5kZXZpYXRpb25UeXBlOlxuICAgICAgICByZXR1cm4gdGhpcy5MQU5HLkRFVklBVElPTl9UWVBFO1xuICAgICAgY2FzZSBEYXRhVHlwZS5jaGVja2xpc3Q6XG4gICAgICAgIHJldHVybiB0aGlzLkxBTkcuQ0hFQ0tMSVNUO1xuICAgICAgY2FzZSBEYXRhVHlwZS5jaGVja2xpc3RDYXRlZ29yeTpcbiAgICAgICAgcmV0dXJuIHRoaXMuTEFORy5DSEVDS0xJU1RfQ0FURUdPUlk7XG4gICAgICBjYXNlIERhdGFUeXBlLnJpc2s6XG4gICAgICAgIHJldHVybiB0aGlzLkxBTkcuQVNTRVNTTUVOVDtcbiAgICAgIGNhc2UgRGF0YVR5cGUucmlza0ZvbGRlcjpcbiAgICAgICAgcmV0dXJuIHRoaXMuTEFORy5GT0xERVI7XG4gICAgfVxuICB9XG5cbiAgZ2V0UGFyZW50TmFtZShpdGVtOiBJUmVsYXRlZCkge1xuICAgIGlmIChpdGVtLml0ZW1UeXBlID09PSB0aGlzLmRhdGFUeXBlLmNoZWNrbGlzdCB8fCBpdGVtLml0ZW1UeXBlID09PSB0aGlzLmRhdGFUeXBlLmRldmlhdGlvbikge1xuICAgICAgcmV0dXJuIGl0ZW0ucGFyZW50TmFtZTtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBnZXRJdGVtSWQoaXRlbTogSVJlbGF0ZWQpIHtcbiAgICBpZiAoaXRlbS5pdGVtVHlwZSA9PT0gdGhpcy5kYXRhVHlwZS5wcm9jZXNzKSB7XG4gICAgICByZXR1cm4gYCR7dGhpcy5MQU5HLlBST0NFU1NfSUR9OiAke2l0ZW0uaXRlbU51bWJlcklkfTsgJHtpdGVtLnN0YXR1c05hbWV9YDtcbiAgICB9XG4gICAgZWxzZSBpZiAoaXRlbS5pdGVtVHlwZSA9PT0gdGhpcy5kYXRhVHlwZS5kb2N1bWVudCkge1xuICAgICAgcmV0dXJuIGAke3RoaXMuTEFORy5ET0NVTUVOVF9JRH06ICR7aXRlbS5pdGVtTnVtYmVySWR9OyAke2l0ZW0uc3RhdHVzTmFtZX1gO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHRvZ2dsZVNlbGVjdEl0ZW0obm9kZTogSVJlbGF0ZWQpIHtcbiAgICBjb25zdCBzZWxlY3RlZE5vZGUgPSB0aGlzLmNoZWNrZWROb2RlTGlzdC5maW5kKHggPT4gKHguaWQudG9Mb3dlckNhc2UoKSA9PT0gbm9kZS5pZC50b0xvd2VyQ2FzZSgpICYmIHgucGFyZW50SWQ/LnRvTG93ZXJDYXNlKCkgPT09IG5vZGUucGFyZW50SWQ/LnRvTG93ZXJDYXNlKCkpKTtcblxuICAgIGlmIChzZWxlY3RlZE5vZGUpIHtcbiAgICAgIHRoaXMucmVtb3ZlQ2hlY2tlZE5vZGVMaXN0KHtcbiAgICAgICAgaWQ6IHNlbGVjdGVkTm9kZS5pZCxcbiAgICAgICAgbmFtZTogbm9kZS5pdGVtTmFtZSxcbiAgICAgICAgcGFyZW50SWQ6IHNlbGVjdGVkTm9kZS5wYXJlbnRJZCxcbiAgICAgICAgaGFzQ2hpbGQ6IGZhbHNlLFxuICAgICAgICBleHBhbmRhYmxlOiBmYWxzZSxcbiAgICAgICAgbGV2ZWw6IDAsXG4gICAgICAgIGRpc2FibGVkOiBmYWxzZSxcbiAgICAgIH0pO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIHRoaXMuc2VsZWN0UmVsYXRlZChub2RlKTtcbiAgICB9XG4gIH1cblxuICBpc05vZGVTZWxlY3RlZChub2RlKSB7XG4gICAgcmV0dXJuIHRoaXMuY2hlY2tlZE5vZGVMaXN0LmZpbHRlcih4ID0+ICh4LmlkLnRvTG93ZXJDYXNlKCkgPT09IG5vZGUuaWQudG9Mb3dlckNhc2UoKSAmJiB4LnBhcmVudElkPy50b0xvd2VyQ2FzZSgpID09PSBub2RlLnBhcmVudElkPy50b0xvd2VyQ2FzZSgpKSkubGVuZ3RoID4gMDtcbiAgfVxuXG4gIGdldENoaWxkcmVuT2ZGb2xkZXIobm9kZTogVHJlZUZsYXROb2RlLCB0eXBlOiBEYXRhVHlwZSkge1xuICAgIGlmICh0aGlzLnNwbGl0Vmlldykge1xuICAgICAgY29uc3QgcGFyZW50VGV4dHMgPSB0aGlzLmVsZW0ubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKCcudGV4dC1ub2RlLXBhcmVudCcpO1xuICAgICAgW10uZm9yRWFjaC5jYWxsKHBhcmVudFRleHRzLCAoZWwpID0+IHtcbiAgICAgICAgZWwuY2xhc3NMaXN0LnJlbW92ZSgnYWN0aXZlLWl0ZW0nKTtcbiAgICAgIH0pO1xuICAgICAgY29uc3QgaXRlbUVsZW1lbnQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKGAjXyR7bm9kZS5wYXJlbnRJZCA/IG5vZGUucGFyZW50SWQgOiAnJ31fJHtub2RlLmlkfV8ke25vZGUubGV2ZWx9YCk7XG4gICAgICBbXS5mb3JFYWNoLmNhbGwoaXRlbUVsZW1lbnQsIChlbCkgPT4ge1xuICAgICAgICBlbC5jbGFzc0xpc3QuYWRkKCdhY3RpdmUtaXRlbScpO1xuICAgICAgfSk7XG4gICAgICBpZiAodHlwZSA9PT0gdGhpcy5kYXRhVHlwZS5mb2xkZXIpIHtcbiAgICAgICAgdGhpcy5zcGxpdFZpZXdUaXRsZSA9IGAke3RoaXMuTEFORy5NRVNTQUdFLkRPQ1VNRU5UU19JTi50b1VwcGVyQ2FzZSgpfSBcIiR7bm9kZS5uYW1lfVwiYDtcbiAgICAgIH1cbiAgICAgIGVsc2UgaWYgKHR5cGUgPT09IHRoaXMuZGF0YVR5cGUuYXJlYSkge1xuICAgICAgICB0aGlzLnNwbGl0Vmlld1RpdGxlID0gYCR7dGhpcy5MQU5HLk1FU1NBR0UuUFJPQ0VTU0VTX0lOLnRvVXBwZXJDYXNlKCl9IFwiJHtub2RlLm5hbWV9XCJgO1xuICAgICAgfVxuICAgICAgbGV0IGl0ZW0gPSBuZXcgSVJlbGF0ZWQoKTtcbiAgICAgIGl0ZW0uaWQgPSBub2RlLmlkO1xuICAgICAgaXRlbS5pdGVtVHlwZSA9IHR5cGU7XG4gICAgICBpdGVtLml0ZW1OYW1lID0gbm9kZS5uYW1lO1xuICAgICAgaXRlbS5sZXZlbFR5cGUgPSBub2RlLmxldmVsVHlwZTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRGb2xkZXIgPSBub2RlO1xuICAgICAgdGhpcy5wYXJlbnROb2RlU2VsZWN0ZWQgPSBuZXcgVHJlZUZsYXROb2RlKCk7XG4gICAgICB0aGlzLnBhcmVudE5vZGVTZWxlY3RlZCA9IHsgLi4ubm9kZSB9O1xuICAgICAgdGhpcy5vbkV4cGFuZEZvbGRlci5lbWl0KGl0ZW0pO1xuICAgIH1cbiAgfVxuXG4gIGNhblNob3dTZWFyY2hPcHRpb24obW9kdWxlSWQ6IG51bWJlcikge1xuICAgIGlmICh0aGlzLmNhbk9ubHlTZWxlY3RJdGVtICYmXG4gICAgICAobW9kdWxlSWQgPT09IERhdGFUeXBlLmNoZWNrbGlzdENhdGVnb3J5XG4gICAgICAgIHx8IG1vZHVsZUlkID09PSBEYXRhVHlwZS5yaXNrRm9sZGVyXG4gICAgICAgIHx8IG1vZHVsZUlkID09PSBEYXRhVHlwZS5kZXZpYXRpb25UeXBlXG4gICAgICAgIHx8IChtb2R1bGVJZCA9PT0gRGF0YVR5cGUuYXJlYSAmJiB0aGlzLnRyZWVDb25maWcxICYmICF0aGlzLnRyZWVDb25maWcxLnNpbmdsZVNlbGVjdGVkTm9kZSlcbiAgICAgICAgfHwgKG1vZHVsZUlkID09PSBEYXRhVHlwZS5mb2xkZXIgJiYgdGhpcy50cmVlQ29uZmlnMiAmJiAhdGhpcy50cmVlQ29uZmlnMi5zaW5nbGVTZWxlY3RlZE5vZGUpXG4gICAgICApKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmdldE1vZHVsZUZpbHRlcmVkT3B0aW9ucyhtb2R1bGVJZCkubGVuZ3RoID4gMDtcbiAgfVxuXG4gIHNlbGVjdE5vZGVUcmVlRXZlbnQobm9kZTogVHJlZUZsYXROb2RlKSB7XG4gICAgY29uc3QgaW5kZXggPSB0aGlzLmNvbW1vbkNoZWNrZWRMaXN0LmZpbmRJbmRleCh4ID0+IHguaWQudG9Mb3dlckNhc2UoKSA9PT0gbm9kZS5pZC50b0xvd2VyQ2FzZSgpXG4gICAgICAmJiAoIW5vZGUucGFyZW50SWQgfHwgeC5wYXJlbnRJZD8udG9Mb3dlckNhc2UoKSA9PT0gbm9kZS5wYXJlbnRJZD8udG9Mb3dlckNhc2UoKSkgJiYgeC5leHBhbmRhYmxlID09PSBub2RlLmV4cGFuZGFibGUpO1xuICAgIGlmIChpbmRleCA+PSAwKSB7XG4gICAgICB0aGlzLmNvbW1vbkNoZWNrZWRMaXN0ID0gdGhpcy5jb21tb25DaGVja2VkTGlzdC5maWx0ZXIoKF8sIGluZCkgPT4gaW5kICE9PSBpbmRleCk7XG4gICAgICBpZiAodGhpcy52aWRlb0RhdGEpIHtcbiAgICAgICAgdGhpcy52aWRlb0RhdGEuc3JjID0gdGhpcy5vcmlnaW5WaWRlb0RhdGFTcmM7XG4gICAgICB9XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgaWYgKHRoaXMudmlkZW9EYXRhKSB7XG4gICAgICAgIHRoaXMudmlkZW9EYXRhLnNyYyA9IGAvdmlkZW8/aWQ9JHtub2RlLmlkfWA7XG4gICAgICB9XG4gICAgICB0aGlzLmNvbW1vbkNoZWNrZWRMaXN0ID0gWy4uLnRoaXMuY29tbW9uQ2hlY2tlZExpc3QsIG5vZGVdO1xuICAgIH1cbiAgICB0aGlzLnNlbGVjdGVkRGF0YSA9IHRoaXMuY29tbW9uQ2hlY2tlZExpc3Q7XG4gIH1cblxuICBzZWxlY3ROb2RlVHJlZTJFdmVudChub2RlOiBUcmVlRmxhdE5vZGUpIHtcbiAgICBjb25zdCBpbmRleCA9IHRoaXMuZG9jdW1lbnRDaGVja2VkTGlzdC5maW5kSW5kZXgoeCA9PiB4LmlkLnRvTG93ZXJDYXNlKCkgPT09IG5vZGUuaWQudG9Mb3dlckNhc2UoKVxuICAgICAgJiYgKCFub2RlLnBhcmVudElkIHx8IHgucGFyZW50SWQ/LnRvTG93ZXJDYXNlKCkgPT09IG5vZGUucGFyZW50SWQ/LnRvTG93ZXJDYXNlKCkpICYmIHguZXhwYW5kYWJsZSA9PT0gbm9kZS5leHBhbmRhYmxlKTtcbiAgICBpZiAoaW5kZXggPj0gMCkge1xuICAgICAgdGhpcy5kb2N1bWVudENoZWNrZWRMaXN0ID0gdGhpcy5kb2N1bWVudENoZWNrZWRMaXN0LmZpbHRlcigoXywgaW5kKSA9PiBpbmQgIT09IGluZGV4KTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICB0aGlzLmRvY3VtZW50Q2hlY2tlZExpc3QgPSBbLi4udGhpcy5kb2N1bWVudENoZWNrZWRMaXN0LCBub2RlXTtcbiAgICB9XG4gICAgdGhpcy5zZWxlY3RlZERhdGEyID0gdGhpcy5kb2N1bWVudENoZWNrZWRMaXN0O1xuICB9XG5cbiAgZ2V0Q2hpbGROb2RlU2VsZWN0T25lKGxpc3RDaGlsZHJlbikge1xuICAgIHRoaXMubGlzdENoaWxkcmVuU2VsZWN0T25lID0gW107XG4gICAgdGhpcy5saXN0Q2hpbGRyZW5TZWxlY3RPbmUgPSBsaXN0Q2hpbGRyZW47XG4gIH1cblxuICBoYXNTZWxlY3RlZChyZWxhdGVkOiBJUmVsYXRlZCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGFyckRpc2FibGVkTGlzdCA9IHRoaXMuZGlzYWJsZWRMaXN0LmNvbmNhdCh0aGlzLmRpc2FibGVkTGlzdDIpO1xuICAgIHJldHVybiBhcnJEaXNhYmxlZExpc3Quc29tZShub2RlID0+IG5vZGUuaWQudG9VcHBlckNhc2UoKSA9PT0gcmVsYXRlZC5pZC50b1VwcGVyQ2FzZSgpICYmICghcmVsYXRlZC5wYXJlbnRJZCB8fCByZWxhdGVkLnBhcmVudElkPy50b0xvd2VyQ2FzZSgpID09PSBub2RlLnBhcmVudElkPy50b0xvd2VyQ2FzZSgpKSk7XG4gIH1cblxuICB0b1JlbGF0ZWRPcHRpb25zKHJlbGF0ZWRzOiBJUmVsYXRlZFtdKTogUmVsYXRlZE9wdGlvbltdIHtcbiAgICBjb25zdCByZXN1bHRzOiBSZWxhdGVkT3B0aW9uW10gPSBbXTtcbiAgICBmb3IgKGNvbnN0IHJlbGF0ZWQgb2YgcmVsYXRlZHMpIHtcbiAgICAgIHJlc3VsdHMucHVzaCh7IC4uLnJlbGF0ZWQsIGRpc2FibGVkOiB0aGlzLmhhc1NlbGVjdGVkKHJlbGF0ZWQpIH0pO1xuICAgIH1cblxuICAgIHJldHVybiByZXN1bHRzO1xuICB9XG5cbiAgZGlzcGxheVdoZW5TZWxlY3RSZWxhdGVkT3B0aW9uKCRldmVudDogYW55KTogc3RyaW5nIHwgbnVsbCB7XG4gICAgcmV0dXJuICcnO1xuICB9XG5cbiAgcmVmcmVzaFJlbGF0ZWRPcHRpb25zKCk6IHZvaWQge1xuICAgIHRoaXMuZmlsdGVyZWRPcHRpb25zID0gdGhpcy50b1JlbGF0ZWRPcHRpb25zKHRoaXMuZmlsdGVyZWRPcHRpb25zKTtcbiAgfVxuXG4gIGNsZWFyUU1TSW5wdXRJbWFnZUZpbGUoKSB7XG4gICAgdGhpcy5xbXNJbnB1dEltYWdlRmlsZSA9IG51bGw7XG4gIH1cblxuICBjbGVhclFNU0lucHV0VmlkZW9GaWxlKCkge1xuICAgIHRoaXMucW1zSW5wdXRWaWRlb0ZpbGUgPSBudWxsO1xuICAgIHRoaXMuZGF0YVRyZWVzLnRvQXJyYXkoKVswXS50cmVlQ29udHJvbC5kYXRhTm9kZXMubWFwKHggPT4geC5kaXNhYmxlZCA9IGZhbHNlKTtcbiAgfVxuXG4gIGFzeW5jIG9uQ2hhbmdlSW1hZ2UoZXZlbnQ6IGFueSkge1xuICAgIHRoaXMuaXNMb2FkaW5nSW1hZ2VGaWxlID0gdHJ1ZTtcblxuICAgIGlmICghdGhpcy5xbXNJbnB1dEltYWdlRmlsZT8uaXNTdWNjZXNzZnVsICYmIHRoaXMubWF4VmlkZW9UaHVtYm5haWxTaXplS0IpIHtcbiAgICAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nLm9wZW4oUU1TVXBsb2FkRmlsZUVycm9yRGlhbG9nLCB7XG4gICAgICAgIHdpZHRoOiAnNTAwcHgnLFxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgZmlsZU5hbWVzOiB0aGlzLnFtc0lucHV0SW1hZ2VGaWxlLnR5cGVFcnJvciA9PSBGaWxlRXJyb3JUeXBlLm5vdFN1cHBvcnRlZEV4dGVuc2lvbiA/IFt0aGlzLnFtc0lucHV0SW1hZ2VGaWxlLmZpbGVOYW1lXSA6IFtdLFxuICAgICAgICAgIGFjY2VwdGVkRXh0ZW5zaW9uOiB0aGlzLmFjY2VwdEV4dGVuc2lvbnMsXG4gICAgICAgICAgb3ZlckxpbWl0RmlsZXM6IHRoaXMucW1zSW5wdXRJbWFnZUZpbGUudHlwZUVycm9yID09IEZpbGVFcnJvclR5cGUuZXhjZWVkTWF4U2l6ZSA/IFt0aGlzLnFtc0lucHV0SW1hZ2VGaWxlLmZpbGVOYW1lXSA6IFtdLFxuICAgICAgICAgIGZpbGVTaXplTGltaXQ6IHRoaXMubWF4VmlkZW9UaHVtYm5haWxTaXplS0IgLyAxMDI0LFxuICAgICAgICAgIGZpbGVTaXplTGltaXRVbml0OiAnS0InXG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgZGlhbG9nUmVmLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5xbXNJbnB1dEltYWdlRmlsZSA9IG51bGw7XG4gICAgICB9KTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICBpZiAodGhpcy52aWRlb0RhdGEpIHtcbiAgICAgICAgdGhpcy52aWRlb0RhdGEucG9zdGVyID0gYXdhaXQgdGhpcy51cGxvYWRTZXJ2aWNlLnVwbG9hZEltYWdlKHRoaXMucW1zSW5wdXRJbWFnZUZpbGUuZmlsZSwgdGhpcy5pbWFnZVVwbG9hZC5oZWlnaHQsIHRoaXMuaW1hZ2VVcGxvYWQud2lkdGgpLnRvUHJvbWlzZSgpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IHJlYWRlckltYWdlID0gbmV3IEZpbGVSZWFkZXIoKTtcbiAgICByZWFkZXJJbWFnZS5yZWFkQXNEYXRhVVJMKHRoaXMucW1zSW5wdXRJbWFnZUZpbGUuZmlsZSk7XG4gICAgcmVhZGVySW1hZ2Uub25sb2FkID0gYXN5bmMgKGV2ZW50KSA9PiB7XG4gICAgICB0aGlzLmltYWdlVXBsb2FkLnNyYyA9IGV2ZW50LnRhcmdldC5yZXN1bHQudG9TdHJpbmcoKTtcbiAgICB9XG4gICAgdGhpcy5pc0xvYWRpbmdJbWFnZUZpbGUgPSBmYWxzZTtcbiAgfVxuXG4gIGFzeW5jIG9uQ2hhbmdlRmlsZShldmVudDogYW55KSB7XG4gICAgdGhpcy5pc0xvYWRpbmdWaWRlb0ZpbGUgPSB0cnVlO1xuICAgIHRoaXMuY2hlY2tlZE5vZGVMaXN0ID0gW107XG4gICAgdGhpcy5kYXRhVHJlZXMudG9BcnJheSgpWzBdLmNoZWNrbGlzdFNlbGVjdGlvbi5jbGVhcigpO1xuICAgIHRoaXMuZGF0YVRyZWVzLnRvQXJyYXkoKVswXS50cmVlQ29udHJvbC5kYXRhTm9kZXMubWFwKHggPT4geC5kaXNhYmxlZCA9IHRydWUpO1xuICAgIGNvbnN0IHJlc1VwbG9hZFZpZGVvID0gYXdhaXQgdGhpcy51cGxvYWRTZXJ2aWNlLnVwbG9hZFNpbmdsZUZpbGUodGhpcy5xbXNJbnB1dFZpZGVvRmlsZS5maWxlLCAnJywgJzEnLCB0aGlzLmVudGl0eUlkKS50b1Byb21pc2UoKTtcbiAgICBpZiAodGhpcy52aWRlb0RhdGEpIHtcbiAgICAgIHRoaXMudmlkZW9EYXRhLnNyYyA9IHJlc1VwbG9hZFZpZGVvLnVybDtcbiAgICB9XG4gICAgdGhpcy5pc0xvYWRpbmdWaWRlb0ZpbGUgPSBmYWxzZTtcbiAgfVxufVxuIl19
|