ctt-babylon 0.10.37 → 0.10.38
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/esm2022/lib/components/core/babylon-av-c4-img-text/babylon-av-c4-img-text.component.mjs +5 -5
- package/esm2022/lib/components/core/babylon-av-img-social/babylon-av-img-social.component.mjs +69 -5
- package/esm2022/lib/components/core/babylon-av-txt-ico/babylon-av-txt-ico.component.mjs +12 -5
- package/esm2022/lib/components/core/babylon-ba-img-txt/babylon-ba-img-txt.component.mjs +10 -3
- package/esm2022/lib/components/core/babylon-sli-c5-img-txt/babylon-sli-c5-img-txt.component.mjs +15 -5
- package/esm2022/lib/components/external/core/c4-sli-c2-txt-img/c4-sli-c2-txt-img.component.mjs +3 -3
- package/esm2022/lib/interfaces/babylon-item.interface.mjs +1 -1
- package/esm2022/lib/services/mapper/mapper.service.mjs +30 -4
- package/fesm2022/ctt-babylon.mjs +170 -62
- package/fesm2022/ctt-babylon.mjs.map +1 -1
- package/lib/components/core/babylon-av-c4-img-text/babylon-av-c4-img-text.component.d.ts +2 -2
- package/lib/components/core/babylon-av-img-social/babylon-av-img-social.component.d.ts +13 -2
- package/lib/components/core/babylon-av-txt-ico/babylon-av-txt-ico.component.d.ts +5 -1
- package/lib/components/core/babylon-ba-img-txt/babylon-ba-img-txt.component.d.ts +5 -1
- package/lib/components/core/babylon-sli-c5-img-txt/babylon-sli-c5-img-txt.component.d.ts +4 -1
- package/lib/interfaces/babylon-item.interface.d.ts +3 -2
- package/lib/services/mapper/mapper.service.d.ts +1 -0
- package/package.json +1 -1
|
@@ -391,9 +391,7 @@ export class MapperService {
|
|
|
391
391
|
texts: props?.texts,
|
|
392
392
|
rightSide: component.name?.toLowerCase().includes('right'),
|
|
393
393
|
leftSide: component.name?.toLowerCase().includes('left'),
|
|
394
|
-
items: this.
|
|
395
|
-
this.mapRoomDetails(props?.rooms) ??
|
|
396
|
-
this.mapOffersGlobal(props?.offers),
|
|
394
|
+
items: this.mapGlobalItems(props),
|
|
397
395
|
events: this.mapEventsGlobal(props?.events ?? props.event),
|
|
398
396
|
offers: this.mapOffersGlobal(props?.offers),
|
|
399
397
|
offer: this.mapOfferDetail(props),
|
|
@@ -447,9 +445,37 @@ export class MapperService {
|
|
|
447
445
|
id: hotel?.id,
|
|
448
446
|
name: hotel?.name,
|
|
449
447
|
order: hotel?.order,
|
|
448
|
+
texts: hotel?.texts,
|
|
449
|
+
multimedia: this.mapMultimedia(hotel?.multimedia),
|
|
450
|
+
images: hotel?.multimedia?.length
|
|
451
|
+
? this.mapMultimedia(hotel?.multimedia)
|
|
452
|
+
: undefined,
|
|
450
453
|
links: Utils.mapButtons(hotel?.link),
|
|
454
|
+
buttons: Utils.mapButtons(hotel?.link),
|
|
451
455
|
}));
|
|
452
456
|
}
|
|
457
|
+
mapGlobalItems(props) {
|
|
458
|
+
// Fuente principal de items
|
|
459
|
+
const rawItems = props?.items ?? props?.Items ?? props?.multimedia?.imagenes;
|
|
460
|
+
// 1) Intentamos mapear items “normales”
|
|
461
|
+
const mappedItems = this.mapItems(rawItems);
|
|
462
|
+
if (mappedItems != null) {
|
|
463
|
+
return mappedItems;
|
|
464
|
+
}
|
|
465
|
+
// 2) Si no hay items, probamos con rooms
|
|
466
|
+
const mappedRooms = this.mapRoomDetails(props?.rooms);
|
|
467
|
+
if (mappedRooms != null) {
|
|
468
|
+
return mappedRooms;
|
|
469
|
+
}
|
|
470
|
+
// 3) offers
|
|
471
|
+
const mappedOffers = this.mapOffersGlobal(props?.offers);
|
|
472
|
+
if (mappedOffers != null) {
|
|
473
|
+
return mappedOffers;
|
|
474
|
+
}
|
|
475
|
+
// 4) experiences
|
|
476
|
+
// 5) hoteles
|
|
477
|
+
return this.mapHotelsGlobal(props?.hotels);
|
|
478
|
+
}
|
|
453
479
|
mapAddress(address) {
|
|
454
480
|
return address?.map((address) => ({
|
|
455
481
|
id: address?.id,
|
|
@@ -2887,4 +2913,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
2887
2913
|
providedIn: 'root',
|
|
2888
2914
|
}]
|
|
2889
2915
|
}] });
|
|
2890
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwcGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYWJ5bG9uL3NyYy9saWIvc2VydmljZXMvbWFwcGVyL21hcHBlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3BELE9BQU8sRUFDSCxRQUFRLEVBQ1IsTUFBTSxFQUNOLFVBQVUsRUFDVixXQUFXLEVBRVgsTUFBTSxHQUNULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQWtHNUMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQW9CbEQsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzFDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3JELE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDOztBQUtuRSxNQUFNLE9BQU8sYUFBYTtJQUgxQjtRQUlxQixZQUFPLEdBQUcsTUFBTSxDQUFDLHlCQUF5QixDQUFDLENBQUM7UUFDNUMsZ0JBQVcsR0FBRyxNQUFNLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQU0xRCxrQkFBYSxHQUFHLE1BQU0sQ0FBcUMsU0FBUyxDQUFDLENBQUM7UUFFdEUsV0FBTSxHQUFtQixRQUFRLENBQzdCLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLEVBQUUsTUFBTSxDQUM5QyxDQUFDO1FBSU0sZUFBVSxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztLQTh6SDVDO0lBMTBIRyxJQUFJLHNCQUFzQjtRQUN0QixPQUFPLElBQUksQ0FBQyxXQUFX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LENBQzFDLFNBQVMsQ0FBQyxLQUFLLENBQ2IsQ0FBQzs0QkFDUCxNQUFNO3dCQUVWLEtBQUssWUFBWTs0QkFDYixlQUFlLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQ3RDLFNBQVMsQ0FBQyxLQUFLLENBQ2IsQ0FBQzs0QkFDUCxNQUFNO3dCQUVWLEtBQUssV0FBVzs0QkFDWixlQUFlLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQ3JDLFNBQVMsQ0FBQyxLQUFLLENBQ2IsQ0FBQzs0QkFDUCxNQUFNO3dCQUVWLEtBQUssWUFBWTs0QkFDYixlQUFlLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQ3RDLFNBQVMsQ0FBQyxLQUFLLENBQ2IsQ0FBQzs0QkFDUCxNQUFNO3dCQUVWLEtBQUssYUFBYTs0QkFDZCxlQUFlLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQ3ZDLFNBQVMsQ0FBQyxLQUFLLENBQ2IsQ0FBQzs0QkFDUCxNQUFNO3dCQUVWLEtBQUssWUFBWTs0QkFDYixlQUFlLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQ3RDLFNBQVMsQ0FBQyxLQUFLLENBQ2IsQ0FBQzs0QkFDUCxNQUFNO3dCQUVWLEtBQUssS0FBSzs0QkFDTixlQUFlLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQy9CLFNBQVMsQ0FBQyxLQUFLLENBQ2IsQ0FBQzs0QkFDUCxNQUFNO3dCQUVWLEtBQUssY0FBYzs0QkFDZixlQUFlLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQ3hDLFNBQVMsQ0FBQyxLQUFLLENBQ2IsQ0FBQzs0QkFDUCxNQUFNO3dCQUVWLEtBQUssU0FBUzs0QkFDVixlQUFlLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQ25DLFNBQVMsQ0FBQyxLQUFLLENBQ2IsQ0FBQzs0QkFDUCxNQUFNO3dCQUVWLEtBQUssS0FBSzs0QkFDTixlQUFlLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQ2hDLFNB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QUM7U0FDYSxDQUFDO0lBQ3pCLENBQUM7SUFDRCxjQUFjLENBQUMsS0FBc0I7UUFDakMsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQzsrR0E3MEhRLGFBQWE7bUhBQWIsYUFBYSxjQUZWLE1BQU07OzRGQUVULGFBQWE7a0JBSHpCLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNQbGF0Zm9ybUJyb3dzZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgICBjb21wdXRlZCxcbiAgICBpbmplY3QsXG4gICAgSW5qZWN0YWJsZSxcbiAgICBQTEFURk9STV9JRCxcbiAgICBTaWduYWwsXG4gICAgc2lnbmFsLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge1xuICAgIEJhYnlsb240MDRJLFxuICAgIEJhYnlsb25BY3Rpb25CYW5uZXJJLFxuICAgIEJhYnlsb25BZGRyZXNzSXRlbSxcbiAgICBCYWJ5bG9uQWR2YW50YWdlc0ksXG4gICAgQmFieWxvbkJhbm5lckdhbGxlcnlJLFxuICAgIEJhYnlsb25CYW5uZXJJbmZvSSxcbiAgICBCYWJ5bG9uQmxvZ0RldGFpbHNJLFxuICAgIEJhYnlsb25CbG9nTGlzdEksXG4gICAgQmFieWxvbkJyZWFkY3J1bWJJLFxuICAgIEJhYnlsb25Db21pbmdTb29uSSxcbiAgICBCYWJ5bG9uQ29udGFjdEFkZHJlc3NJLFxuICAgIEJhYnlsb25Db250YWN0Rm9ybUksXG4gICAgQmFieWxvbkNvbnRhY3RIb3dJLFxuICAgIEJhYnlsb25Db250YWN0TWFwYUksXG4gICAgQmFieWxvbkNvbnRhY3RNYXBJdGVtLFxuICAgIEJhYnlsb25FbmdpbmVJLFxuICAgIEJhYnlsb25FbmdpbmVNb2RhbEksXG4gICAgQmFieWxvbkVxdWlwbWVudEl0ZW0sXG4gICAgQmFieWxvbkV4dGVybmFsU2NyaXB0SSxcbiAgICBCYWJ5bG9uRmFxSSxcbiAgICBCYWJ5bG9uRmVhdHVyZXNTbGlkZXJJLFxuICAgIEJhYnlsb25GZWF0dXJlc1NsaWRlckl0ZW0sXG4gICAgQmFieWxvbkZsb2F0aW5nQnV0dG9uc0ksXG4gICAgQmFieWxvbkZvb3RlckNvbnRhY3RJLFxuICAgIEJhYnlsb25Gb290ZXJMaW5rc0ksXG4gICAgQmFieWxvbkZvb3RlckxvZ29zSSxcbiAgICBCYWJ5bG9uRm9vdGVyU29jaWFsSSxcbiAgICBCYWJ5bG9uR2FsbGVyeUZpbHRlcixcbiAgICBCYWJ5bG9uR2FsbGVyeUksXG4gICAgQmFieWxvbkdhbGxlcnlJdGVtLFxuICAgIEJhYnlsb25HckMySW1nSSxcbiAgICBCYWJ5bG9uSGVhZGVyQm9va1Nob3dJLFxuICAgIEJhYnlsb25IZWFkZXJDbGVhckksXG4gICAgQmFieWxvbkhlYWRlck1lbnVDZW50ZXJJLFxuICAgIEJhYnlsb25IZWFkZXJNZW51TG9nb0NlbnRlckksXG4gICAgQmFieWxvbkhlYWRlck1lbnVTaG93SSxcbiAgICBCYWJ5bG9uSGVhZEludHJvSSxcbiAgICBCYWJ5bG9uSG90ZWxzTGlzdEksXG4gICAgQmFieWxvbkhvdGVsc1NsaWRlckksXG4gICAgQmFieWxvbkluZm8yQ29sSW1nSSxcbiAgICBCYWJ5bG9uSW5mbzJpbWdCaWdJLFxuICAgIEJhYnlsb25JbmZvMmltZ0ksXG4gICAgQmFieWxvbkluZm80aW1nSSxcbiAgICBCYWJ5bG9uSW5mb0JpZ0ksXG4gICAgQmFieWxvbkluZm9HcmlkSSxcbiAgICBCYWJ5bG9uSW5mb0dyaWRJdGVtSSxcbiAgICBCYWJ5bG9uSW5mb0ltZ0ksXG4gICAgQmFieWxvbkluZm9JbWdTbGlkZXJJLFxuICAgIEJhYnlsb25JbmZvSW1nU2xpZGVySXRlbUksXG4gICAgQmFieWxvbkluZm9JbnRyb0ksXG4gICAgQmFieWxvbkluZm9aaWdaYWdDb3VudGVySSxcbiAgICBCYWJ5bG9uSW5mb1ppZ3phZ1YySSxcbiAgICBCYWJ5bG9uSW5mb1ppZ3phZ1YySXRlbSxcbiAgICBCYWJ5bG9uSXRlbXNHcmlkSSxcbiAgICBCYWJ5bG9uTGFuZ3VhZ2VNb2RhbEksXG4gICAgQmFieWxvbkxlZ2FsSSxcbiAgICBCYWJ5bG9uTGlzQzRUeHRJY29JLFxuICAgIEJhYnlsb25Nb2RhbE11bHRpcGxlTW90b3JzSSxcbiAgICBCYWJ5bG9uTmV3c2xldHRlckksXG4gICAgQmFieWxvbk9mZmVyRGV0YWlsSSxcbiAgICBCYWJ5bG9uT2ZmZXJJLFxuICAgIEJhYnlsb25PZmZlclBvcHVwSSxcbiAgICBCYWJ5bG9uT2ZmZXJQb3B1cFYySSxcbiAgICBCYWJ5bG9uT2ZmZXJTbGlkZXJJLFxuICAgIEJhYnlsb25PZmZlcnNMaXN0SSxcbiAgICBCYWJ5bG9uT2ZmZXJzTGlzdEl0ZW0sXG4gICAgQmFieWxvblByZXNzTGlzdEksXG4gICAgQmFieWxvblJvb21JbmZvSSxcbiAgICBCYWJ5bG9uUm9vbXNDb2xzSSxcbiAgICBCYWJ5bG9uUm9vbXNHcmlkSSxcbiAgICBCYWJ5bG9uUm9vbXNMaXN0RXF1aXBtZW50LFxuICAgIEJhYnlsb25Sb29tc0xpc3RJLFxuICAgIEJhYnlsb25Sb29tc0xpc3RJdGVtLFxuICAgIEJhYnlsb25Sb29tc1NsaWRlckksXG4gICAgQmFieWxvblNlcnZpY2VzU2xpZGVySSxcbiAgICBCYWJ5bG9uU2xpZGVyMkNvbEl0ZW1JLFxuICAgIEJhYnlsb25TbGlkZXIyaXRlbXNJLFxuICAgIEJhYnlsb25TbGlkZXIzSXRlbXNJLFxuICAgIEJhYnlsb25TbGlkZXI0Y29sTGFiZWxzLFxuICAgIEJhYnlsb25TbGlkZXJJdGVtLFxuICAgIEJhYnlsb25TdGF0aWNGb290ZXJJLFxuICAgIEJhYnlsb25TdWJtZW51SSxcbiAgICBCYWJ5bG9uVGhhbmtzSSxcbiAgICBCYWJ5bG9uVG9wU2xpZGVySSxcbiAgICBCYWJ5bG9uVG9wU2xpZGVySXRlbSxcbiAgICBCYWJ5bG9uVG9wU2xpZGVyVGh1bWJzSSxcbiAgICBCYWJ5bG9uVG9wU2xpZGVyVjJJLFxuICAgIEJhYnlsb25Ub3BTbGlkZXJWaWRlb0ksXG4gICAgQmFieWxvbldlYm1hcEksXG4gICAgRHJvcGRvd25PcHRpb24sXG59IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvY29yZSc7XG5pbXBvcnQgeyBCYWJ5bG9uR2xvYmFsTW9kYWxJIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9jb3JlL2JhYnlsb24tZ2xvYmFsLW1vZGFsJztcbmltcG9ydCB7IEJhYnlsb25JdGVtR3JpZEkgfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL2NvcmUvYmFieWxvbi1saXN0LWdyaWQvYmFieWxvbi1saXN0LWdyaWQuY29tcG9uZW50JztcbmltcG9ydCB7IEJhYnlsb25MaXN0R3JpZEkgfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL2NvcmUvYmFieWxvbi1saXN0LWdyaWQvYmFieWxvbi1saXN0LWdyaWQuaW50ZXJmYWNlJztcbmltcG9ydCB7IEJhYnlsb25Nb2RhbFBvcHVwSSB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvY29yZS9iYWJ5bG9uLW1vZGFsLXBvcHVwJztcbmltcG9ydCB7IEJhYnlsb25TdGF0aWNGb290ZXJWMkkgfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL2NvcmUvYmFieWxvbi1zdGF0aWMtZm9vdGVyLXYyL2JhYnlsb24tc3RhdGljLWZvb3Rlci12Mi5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUm9vbVNlcnZpY2VUeXBlIH0gZnJvbSAnLi4vLi4vRW51bS9zZXJ2aWNlcy5lbnVtJztcbmltcG9ydCB7IFZpZXdzVHlwZSB9IGZyb20gJy4uLy4uL0VudW0vdmlld3MuZW51bSc7XG5pbXBvcnQge1xuICAgIEJhYnlsb25CdXR0b25JLFxuICAgIEJhYnlsb25Db250YWN0SW5mb0ksXG4gICAgQmFieWxvbkRyb3Bkb3duSSxcbiAgICBCYWJ5bG9uSW1hZ2VJLFxuICAgIEJhYnlsb25JbnB1dEksXG4gICAgQmFieWxvbk1lbnVCdXR0b25JLFxuICAgIEJhYnlsb25NZW51SW5mb0ksXG4gICAgQmFieWxvbk9mZmVySXRlbUksXG4gICAgQmFieWxvblJvb21EZXRhaWxJLFxuICAgIEJhYnlsb25UZXh0SW5mb0ksXG4gICAgQm9keUNvbXBvbmVudCxcbiAgICBDT01QT05FTlRTX0VYVFJBLFxuICAgIENvbnN1bHRUeXBlSSxcbn0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBCYWJ5bG9uQWR2YW50YWdlSXRlbUkgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL2JhYnlsb24tYWR2YW50YWdlcy1pdGVtLmludGVyZmFjZSc7XG5pbXBvcnQgeyBCYWJ5bG9uR2xvYmFsIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9iYWJ5bG9uLWdsb2JhbC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgQmFieWxvbkhvdGVsSXRlbSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvYmFieWxvbi1ob3RlbC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgQmFieWxvbkl0ZW1JIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9iYWJ5bG9uLWl0ZW0uaW50ZXJmYWNlJztcbmltcG9ydCB7IFV0aWxzIH0gZnJvbSAnLi4vLi4vdXRpbHMvdXRpbHMnO1xuaW1wb3J0IHsgU2NyZWVuU2l6ZXJTZXJ2aWNlIH0gZnJvbSAnLi4vc2NyZWVuLXNpemVyJztcbmltcG9ydCB7IFNJVEVfQ09ORklHX1NFUlZJQ0VfVE9LRU4gfSBmcm9tICcuL21hcHBlci5zZXJ2aWNlLnRva2VuJztcblxuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgTWFwcGVyU2VydmljZSB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBzaXRlU3ZjID0gaW5qZWN0KFNJVEVfQ09ORklHX1NFUlZJQ0VfVE9LRU4pO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgc2NyZWVuU2l6ZXIgPSBpbmplY3QoU2NyZWVuU2l6ZXJTZXJ2aWNlKTtcblxuICAgIGdldCBpc01pbkZ1bGxUYWJsZXRJbnN0YW50KCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5zY3JlZW5TaXplci5taW5GdWxsVGFibGV0SW5zdGFudCgpO1xuICAgIH1cblxuICAgIGhlYWRlckJ1dHRvbnMgPSBzaWduYWw8UmVjb3JkPHN0cmluZywgc3RyaW5nPiB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcblxuICAgIHNpdGVJZDogU2lnbmFsPG51bWJlcj4gPSBjb21wdXRlZChcbiAgICAgICAgKCkgPT4gdGhpcy5zaXRlU3ZjLndlYkNvbmZpZ0luc3RhbnQ/LnNpdGVJRFxuICAgICk7XG5cbiAgICBmbG9hdGluZ0J1dHRvbnM/OiBCYWJ5bG9uRmxvYXRpbmdCdXR0b25zSTtcblxuICAgIHByaXZhdGUgcGxhdGZvcm1JZCA9IGluamVjdChQTEFURk9STV9JRCk7XG5cbiAgICBnZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgIGltYWdlOiBJbWFnZVJlc3BvbnNlIHwgdW5kZWZpbmVkLFxuICAgICAgICBpc0ZpZ3VyZSA9IHRydWVcbiAgICApOiBzdHJpbmcgfCBCYWJ5bG9uSW1hZ2VJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgbGV0IHNlbGVjdGVkSW1hZ2U7XG4gICAgICAgIGlmIChpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5zY3JlZW5TaXplci5tb2JpbGUoKSkge1xuICAgICAgICAgICAgICAgIHNlbGVjdGVkSW1hZ2UgPSBpbWFnZT8udGh1bWJuYWlscz8uWzM3NV0/LndlYnA7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuc2NyZWVuU2l6ZXIuaXNTbWFsbFRhYmxldEluc3RhbnQoKSkge1xuICAgICAgICAgICAgICAgIHNlbGVjdGVkSW1hZ2UgPSBpbWFnZT8udGh1bWJuYWlscz8uWzU0MF0/LndlYnA7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuc2NyZWVuU2l6ZXIuaXNNZWRpdW1UYWJsZXRJbnN0YW50KCkpIHtcbiAgICAgICAgICAgICAgICBzZWxlY3RlZEltYWdlID0gaW1hZ2U/LnRodW1ibmFpbHM/Lls3NjhdPy53ZWJwO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLnNjcmVlblNpemVyLmlzRnVsbFRhYmxldEluc3RhbnQoKSkge1xuICAgICAgICAgICAgICAgIHNlbGVjdGVkSW1hZ2UgPSBpbWFnZT8udGh1bWJuYWlscz8uWzEwMjRdPy53ZWJwO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLnNjcmVlblNpemVyLmlzU21hbGxEZXNrdG9wSW5zdGFudCgpKSB7XG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRJbWFnZSA9IGltYWdlPy50aHVtYm5haWxzPy5bMTI4MF0/LndlYnA7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuc2NyZWVuU2l6ZXIubWluTWVkaXVtRGVza3RvcCgpKSB7XG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRJbWFnZSA9IGltYWdlPy5wYXRoPy53ZWJwO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBzZWxlY3RlZEltYWdlID0gaW1hZ2U/LnRodW1ibmFpbHM/LlsxMzY2XT8ud2VicDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc2VsZWN0ZWRJbWFnZVxuICAgICAgICAgICAgPyBpc0ZpZ3VyZVxuICAgICAgICAgICAgICAgID8gYCR7dGhpcy5zaXRlU3ZjLmNkbkltYWdlc0luc3RhbnR9JHtzZWxlY3RlZEltYWdlfWBcbiAgICAgICAgICAgICAgICA6IHtcbiAgICAgICAgICAgICAgICAgICAgICBzcmM6IGAke3RoaXMuc2l0ZVN2Yy5jZG5JbWFnZXNJbnN0YW50fSR7c2VsZWN0ZWRJbWFnZX1gLFxuICAgICAgICAgICAgICAgICAgICAgIGFsdDogaW1hZ2U/LmFsdCxcbiAgICAgICAgICAgICAgICAgICAgICBuZFRpdGxlOiBpbWFnZT8ubmRUaXRsZSxcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDogdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGdldEFycmF5SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICBpbWFnZXM6IEltYWdlUmVzcG9uc2VbXSB8IHVuZGVmaW5lZCxcbiAgICAgICAgaXNGaWd1cmUgPSB0cnVlXG4gICAgKTogKHN0cmluZyB8IEJhYnlsb25JbWFnZUkpW10gfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gaW1hZ2VzPy5tYXAoKGltZykgPT4gdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaW1nLCBpc0ZpZ3VyZSkhKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdlbmVyYXRlQWdlc09wdGlvbnMoXG4gICAgICAgIG1heExlbmd0aDogbnVtYmVyLFxuICAgICAgICBtaW5MZW5ndGggPSAwXG4gICAgKTogRHJvcGRvd25PcHRpb25bXSB7XG4gICAgICAgIGNvbnN0IG9wdGlvbnM6IERyb3Bkb3duT3B0aW9uW10gPSBbXTtcbiAgICAgICAgZm9yIChsZXQgaSA9IG1pbkxlbmd0aDsgaSA8PSBtYXhMZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgb3B0aW9ucy5wdXNoKHsgY29kZTogaSwgbmFtZTogaSA8IDEwID8gYDAke2l9YCA6IGAke2l9YCB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gb3B0aW9ucztcbiAgICB9XG5cbiAgICBtYXBCb2R5RXh0cmEoXG4gICAgICAgIGJvZHk6IGFueVtdIHwgdW5kZWZpbmVkXG4gICAgKTogQm9keUNvbXBvbmVudDxDT01QT05FTlRTX0VYVFJBPltdIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgY29uc3QgYm9keU1hcHBlZDogQm9keUNvbXBvbmVudDxDT01QT05FTlRTX0VYVFJBPltdIHwgdW5kZWZpbmVkID1cbiAgICAgICAgICAgIGJvZHk/Lm1hcCgoY29tcG9uZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgY29tcG9uZW50TWFwcGVkOiBCb2R5Q29tcG9uZW50PENPTVBPTkVOVFNfRVhUUkE+ID0ge1xuICAgICAgICAgICAgICAgICAgICBuYW1lOiBjb21wb25lbnQubmFtZT8udG9Mb3dlckNhc2UoKSxcbiAgICAgICAgICAgICAgICAgICAgb3JkZXI6IGNvbXBvbmVudC5vcmRlcixcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM6IHt9LFxuICAgICAgICAgICAgICAgIH0gYXMgQm9keUNvbXBvbmVudDxDT01QT05FTlRTX0VYVFJBPjtcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKGNvbXBvbmVudC5uYW1lPy50b0xvd2VyQ2FzZSgpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ21lbnUnOlxuICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBTdWJtZW51KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBCYWJ5bG9uU3VibWVudUk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQubmFtZSA9ICdtZW51JztcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybiBjb21wb25lbnRNYXBwZWQ7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIGJvZHlNYXBwZWQ7XG4gICAgfVxuXG4gICAgbWFwU3VibWVudShwcm9wczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvblN1Ym1lbnVJIHtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWQgPSBwcm9wcz8uaXRlbXM/LmZpbmQoKGl0ZW06IGFueSkgPT4gaXRlbS5zZWxlY3RlZCk7XG4gICAgICAgIGNvbnN0IHN1Ym1lbnUgPSB7XG4gICAgICAgICAgICAvLyBob3RlbDogcHJvcHM/LmhvdGVsLFxuICAgICAgICAgICAgaXRlbXM6IHByb3BzPy5pdGVtc1xuICAgICAgICAgICAgICAgID8uZmlsdGVyKChpdGVtOiBhbnkpID0+IGl0ZW0uYWN0aXZlKVxuICAgICAgICAgICAgICAgID8ubWFwKFxuICAgICAgICAgICAgICAgICAgICAobGluazogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogbGluaz8ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6IGxpbms/LmxpbmtWYWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5rVHlwZTogJ2ludGVybmFsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pIGFzIEJhYnlsb25CdXR0b25JXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHNlbGVjdGVkOiB7XG4gICAgICAgICAgICAgICAgbGFiZWw6IHNlbGVjdGVkPy5uYW1lLFxuICAgICAgICAgICAgICAgIHVybDogc2VsZWN0ZWQ/LmxpbmtWYWx1ZSxcbiAgICAgICAgICAgIH0gYXMgQmFieWxvbkJ1dHRvbkksXG4gICAgICAgIH0gYXMgQmFieWxvblN1Ym1lbnVJO1xuXG4gICAgICAgIHJldHVybiBzdWJtZW51O1xuICAgIH1cblxuICAgIG1hcENvbXBvbmVudHM8VD4oXG4gICAgICAgIGJvZHk6IGFueVtdLFxuICAgICAgICBhZGRvbnM/OiBDb21wb25lbnRzQWRkb25zXG4gICAgKTogQm9keUNvbXBvbmVudDxUPltdIHtcbiAgICAgICAgaWYgKCFib2R5IHx8ICFib2R5Lmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuIFtdIGFzIEJvZHlDb21wb25lbnQ8VD5bXTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBib2R5TWFwcGVkOiBCb2R5Q29tcG9uZW50PFQ+W10gPSBib2R5XG4gICAgICAgICAgICA/LmZpbHRlcihcbiAgICAgICAgICAgICAgICAoY29tcG9uZW50KSA9PiBjb21wb25lbnQgIT09IG51bGwgJiYgY29tcG9uZW50ICE9PSB1bmRlZmluZWRcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgID8ubWFwKChjb21wb25lbnQpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBjb21wb25lbnRNYXBwZWQ6IEJvZHlDb21wb25lbnQ8VD4gPSB7XG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IGNvbXBvbmVudC5uYW1lPy50b0xvd2VyQ2FzZSgpLFxuICAgICAgICAgICAgICAgICAgICBvcmRlcjogY29tcG9uZW50Lm9yZGVyLFxuICAgICAgICAgICAgICAgICAgICBwcm9wczoge30sXG4gICAgICAgICAgICAgICAgICAgIGFsaWFzOiBjb21wb25lbnQuYWxpYXMsXG4gICAgICAgICAgICAgICAgICAgIGlkZW50aWZpZXI6IGNvbXBvbmVudC5pZGVudGlmaWVyLFxuICAgICAgICAgICAgICAgICAgICB0ZXh0Q29sb3I6IGNvbXBvbmVudC50ZXh0Y29sb3IsXG4gICAgICAgICAgICAgICAgfSBhcyBCb2R5Q29tcG9uZW50PFQ+O1xuXG4gICAgICAgICAgICAgICAgaWYgKGNvbXBvbmVudC5wcm9wcykge1xuICAgICAgICAgICAgICAgICAgICAvL0l0IGlzIG5lY2Vzc2FyeSwgb3RoZXJ3aXNlIGl0IGdpdmVzIGFuIGVycm9yIGFuZCBkb2VzIG5vdCBzaG93IGNvbXBvbmVudHNcbiAgICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoY29tcG9uZW50Lm5hbWU/LnRvTG93ZXJDYXNlKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdtb2R1bGU0MDQnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcDQwNChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8tLS0tIExBWU9VVCBDT01QT05FTlRTIC0tLS0vL1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3RvcHNsaWRlcic6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwVG9wU2xpZGVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAndG9wc2xpZGVydmlkZW8nOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcFRvcFNsaWRlclZpZGVvKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICd0b3BzbGlkZXJ2MmxlZnQnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3RvcHNsaWRlcnYycmlnaHQnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcFRvcFNsaWRlclYyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLm5hbWUgPT09ICd0b3BzbGlkZXJ2MnJpZ2h0J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2luZm9pbWcnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2luZm9pbWdyaWdodCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaW5mb2ltZ2xlZnQnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEluZm9JbWcoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQubmFtZSA9PT0gJ2luZm9pbWdyaWdodCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQudGV4dGNvbG9yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaW5mb2ltZ3NsaWRlcnJpZ2h0JzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdpbmZvaW1nc2xpZGVybGVmdCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwSW5mb0ltZ1NsaWRlcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5uYW1lID09PVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpbmZvaW1nc2xpZGVycmlnaHQnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaW5mb2ludHJvJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBJbmZvSW50cm8oXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdpbmZvMmltZ2xlZnQnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2luZm8yaW1ncmlnaHQnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEluZm8yaW1nKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLm5hbWUgPT09ICdpbmZvMmltZ3JpZ2h0J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2luZm8yY29saW1ncmlnaHQnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEluZm8yY29saW1nKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLm5hbWUgPT09ICdpbmZvMmNvbGltZ3JpZ2h0J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2luZm8yY29saW1nbGVmdCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwSW5mbzJjb2xpbWcoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQubmFtZSA9PT0gJ2luZm8yY29saW1nbGVmdCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdpbmZvM2ltZyc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwSW5mb0ltZyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnRleHRjb2xvclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2luZm96aWd6YWdsZWZ0JzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdpbmZvemlnemFncmlnaHQnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcFppZ3phZyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5uYW1lID09PSAnaW5mb3ppZ3phZ3JpZ2h0J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2luZm9ncmlkJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBJbmZvR3JpZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3NsaWRlcjJjb2xsZWZ0JzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdzbGlkZXIyY29scmlnaHQnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcFNsaWRlckNvbGwyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLm5hbWUgPT09ICdzbGlkZXIyY29scmlnaHQnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnc2xpZGVyM2NvbCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwU2xpZGVyQ29sbChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5pZGVudGlmaWVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnc2xpZGVyNGNvbCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwU2xpZGVyQ29sbChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5pZGVudGlmaWVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaXRlbXNncmlkJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBJdGVtc0dyaWQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdyb29tc3NsaWRlcic6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwUm9vbXNTbGlkZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdyb29tc2dyaWQnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcFJvb21zR3JpZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2Jhbm5lcmdhbGxlcnknOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEJhbm5lckdhbGxlcnkoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdncmlkZ2FsbGVyeSc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwR3JpZEdhbGxlcnkoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdiYW5uZXJuZXdzbGV0dGVyJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubWFwQmFubmVyTmV3c2xldHRlcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnb2ZmZXJzc2xpZGVyJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBPZmZlclNsaWRlcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vLS0tLSBMQVlPVVQgQ09NUE9ORU5UUyBFTkQtLS0tLy9cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3RoYW5rcyc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwVGhhbmtzKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdjb250YWN0Zm9ybSc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnY29udGFjdGZvcm12Mic6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwQ29udGFjdEZvcm0oXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRvbnM/LmNvbnRhY3RPZmZpY2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRvbnM/LmNvbnN1bHRUeXBlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdjb250YWN0aG93JzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBDb250YWN0SG93KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICd3ZWJtYXAnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcFdlYm1hcChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnY29udGFjdG1hcCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwQ29udGFjdE1hcChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnbGVnYWwnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcExlZ2FsKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdyb29tc2NvbHMnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcFJvb21zQ29scyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAncm9vbWRldGFpbHMnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcFJvb21EZXRhaWwoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3RvcHNsaWRlcnRodW1icyc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwVG9wU2xpZGVyVGh1bWJzKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdmZWF0dXJlc3NsaWRlcic6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwRmVhdHVyZXNTbGlkZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2Jhbm5lcmluZm8nOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEJhbm5lckluZm8oXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3Jvb21zbGlzdCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwUm9vbXNMaXN0KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdjb21pbmdzb29uJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBDb21pbmdTb29uKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdvZmZlcmRldGFpbCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwT2ZmZXJEZXRhaWwoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ29mZmVyc2xpc3QnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcE9mZmVyc0xpc3QoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2ZhcSc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwRmFxKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdzdGF0aWNmb290ZXInOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcFN0YXRpY0Zvb3RlcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnZ2FsbGVyeSc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwR2FsbGVyeShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnbmF2JzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBNZW51KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkb25zPy5tZW51U29jaWFsTWVkaWFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2xhbmd1YWdlc21vZGFsJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdsYW5ndWFnZXNtb2RhdjInOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcExhbmd1YWdlTW9kYWwoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3NsaWRlcjNpdGVtcyc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwU2xpZGVyM0l0ZW1zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdob3RlbHNzbGlkZXInOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEhvdGVsc1NsaWRlcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaG90ZWxzbGlzdCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwSG90ZWxzTGlzdChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaW5mbzRpbWcnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEluZm80SW1nKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdzZXJ2aWNlc3NsaWRlcic6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwU2VydmljZXNTbGlkZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdsb2NhdGlvbmFkZHJlc3MnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2NvbnRhY3RhZGRyZXNzJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBDb250YWN0QWRkcmVzcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnYWR2YW50YWdlcyc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwQWR2YW50YWdlcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaW5mb2JpZyc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwSW5mb0JpZyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaW5mb3ppZ3phZ3YybGVmdCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwSW5mb1ppZ1phZ1YyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdpbmZvemlnemFndjJyaWdodCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwSW5mb1ppZ1phZ1YyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdmb290ZXJjb250YWN0JzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBGb290ZXJDb250YWN0KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdpbmZvMmltZ2JpZyc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwSW5mbzJJbWdCaWcoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2Zvb3RlcmxpbmtzJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBGb290ZXJMaW5rcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnZm9vdGVybG9nb3MnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEZvb3RlckxvZ29zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdvZmZlcnNsaWRlcic6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwT2ZmZXJTbGlkZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2Zvb3RlcnNvY2lhbHMnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEZvb3RlclNvY2lhbHMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3NsaWRlcjJpdGVtcyc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwU2xpZGVyMml0ZW1zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdzdGF0aWNmb290ZXJ2Mic6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwU3RhdGljRm9vdGVydjIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2xpc3RncmlkJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBMaXN0R3JpZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnbmV3c2xldHRlcm1vZGFsJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBOZXdzbGV0dGVyTW9kYWwoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2hlYWRpbnRybyc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwSGVhZEludHJvKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdicmVhZGNydW1icyc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwQnJlYWRjcnVtYnMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdvZmZlcmJhbm5lcnYyJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBPZmZlckJhbm5lclYyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnZ2xvYmFsbW9kYWwnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2dsb2JhbG1vZGFsMic6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwR2xvYmFsTW9kYWwoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdtZW51JzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBTdWJtZW51KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnc3BhbG9waWEnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEV4dGVybmFsU2NyaXB0KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnYmxvZ2xpc3QnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEJsb2dMaXN0KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnYmxvZ2RldGFpbCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwQmxvZ0RldGFpbChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ29mZmVyYmFubmVyJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBPZmZlckJhbm5lcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ21vZGFsbXVsdGlwbGVtb3RvcnMnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5tYXBNb2RhbE11bHRpcGxlTW90b3JzKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdtb2RhbHBvcHVwJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBNb2RhbFBvcHVwKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdwcmVzc2xpc3QnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcFByZXNzTGlzdChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnYWN0aW9uYmFubmVyJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBBY3Rpb25CYW5uZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2luZm96aWd6YWdjb3VudGVyJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubWFwSW5mb1ppZ1phZ0NvdW50ZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2dyYzJpbWcnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEdyQzJJbWcoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdsaXNjNHR4dGljbyc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwTGlzQzRUeHRJY28oXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwR2xvYmFscyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gY29tcG9uZW50TWFwcGVkO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBib2R5TWFwcGVkO1xuICAgIH1cblxuICAgIG1hcEdsb2JhbHMoY29tcG9uZW50OiBhbnkpOiBhbnkge1xuICAgICAgICBjb25zb2xlLmxvZygnTWFwcGluZyBnbG9iYWwgY29tcG9uZW50OicsIGNvbXBvbmVudCk7XG4gICAgICAgIGNvbnN0IHsgcHJvcHMgfSA9IGNvbXBvbmVudDtcbiAgICAgICAgbGV0IHJlc3VsdCA9IHtcbiAgICAgICAgICAgIHRleHRzOiBwcm9wcz8udGV4dHMgYXMgQmFieWxvblRleHRJbmZvSSxcbiAgICAgICAgICAgIHJpZ2h0U2lkZTogY29tcG9uZW50Lm5hbWU/LnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoJ3JpZ2h0JyksIC8vVE9ETyBjaGFuZ2VcbiAgICAgICAgICAgIGxlZnRTaWRlOiBjb21wb25lbnQubmFtZT8udG9Mb3dlckNhc2UoKS5pbmNsdWRlcygnbGVmdCcpLCAvL1RPRE8gY2hhbmdlXG4gICAgICAgICAgICBpdGVtczpcbiAgICAgICAgICAgICAgICB0aGlzLm1hcEl0ZW1zKFxuICAgICAgICAgICAgICAgICAgICBwcm9wcz8uaXRlbXMgPz8gcHJvcHM/Lkl0ZW1zID8/IHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lc1xuICAgICAgICAgICAgICAgICkgPz9cbiAgICAgICAgICAgICAgICB0aGlzLm1hcFJvb21EZXRhaWxzKHByb3BzPy5yb29tcykgPz9cbiAgICAgICAgICAgICAgICB0aGlzLm1hcE9mZmVyc0dsb2JhbChwcm9wcz8ub2ZmZXJzKSxcbiAgICAgICAgICAgIGV2ZW50czogdGhpcy5tYXBFdmVudHNHbG9iYWwocHJvcHM/LmV2ZW50cyA/PyBwcm9wcy5ldmVudCksXG4gICAgICAgICAgICBvZmZlcnM6IHRoaXMubWFwT2ZmZXJzR2xvYmFsKHByb3BzPy5vZmZlcnMpLFxuICAgICAgICAgICAgb2ZmZXI6IHRoaXMubWFwT2ZmZXJEZXRhaWwocHJvcHMpLFxuICAgICAgICAgICAgbXVsdGltZWRpYTogdGhpcy5tYXBJbWFnZXMocHJvcHM/Lm11bHRpbWVkaWEpLFxuICAgICAgICAgICAgYWRkcmVzczogdGhpcy5tYXBBZGRyZXNzKHByb3BzPy5hZGRyZXNzKSxcbiAgICAgICAgICAgIGxpbmtzOiBVdGlscy5tYXBCdXR0b25zKFxuICAgICAgICAgICAgICAgIHByb3BzPy5saW5rcz8ubGVuZ3RoID8gcHJvcHM/LmxpbmtzIDogcHJvcHM/LmxpbmtzPy5jb250YWN0Py5bMF1cbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBmb290ZXJMaW5rczogVXRpbHMubWFwQnV0dG9ucyhwcm9wcz8ubGlua3M/LmZvb3RlckxpbmtzPy5bMF0pLFxuICAgICAgICAgICAgcGFnZXM6IChcbiAgICAgICAgICAgICAgICBwcm9wcz8ucGFnZXM/Lm1hcChcbiAgICAgICAgICAgICAgICAgICAgKGxpbms6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGxpbmsubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6IGxpbmsudXJsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtUeXBlOiAnaW50ZXJuYWwnLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSkgYXMgQmFieWxvbkJ1dHRvbklcbiAgICAgICAgICAgICAgICApIGFzIEJhYnlsb25CdXR0b25JW11cbiAgICAgICAgICAgICk/LmZpbHRlcihcbiAgICAgICAgICAgICAgICAobGluaykgPT5cbiAgICAgICAgICAgICAgICAgICAgbGluay51cmw/LnNwbGl0KCcvJylbMV0gPT09XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2l0ZVN2Yy5zZWxlY3RlZExhbmd1YWdlSW5zdGFudD8ubG9jYXRlXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYnV0dG9uczogVXRpbHMubWFwQnV0dG9ucyhwcm9wcz8uYnV0dG9ucyksXG4gICAgICAgICAgICBhZHZhbnRhZ2VzOiB0aGlzLm1hcEFkdmFudGFnZXNHbG9iYWwoXG4gICAgICAgICAgICAgICAgcHJvcHM/LlZlbnRhamFzID8/XG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy5BZHZhbnRhZ2VzID8/XG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy5saXN0cyA/P1xuICAgICAgICAgICAgICAgICAgICBwcm9wcy5MaXN0c1xuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8udGFnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRleHRDb2xvcnM6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzZWVNb3JlOiBwcm9wcz8udGV4dHM/LmFkdmFudGFnZXNzZWVtb3JlLFxuICAgICAgICAgICAgc2VlTGVzczogcHJvcHM/LnRleHRzPy5hZHZhbnRhZ2Vzc2VlbGVzcyxcbiAgICAgICAgICAgIGltYWdlOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uYWR2YW50YWdlc2ltYWdlPy5bMF0sXG4gICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICByb29tczogdGhpcy5tYXBSb29tRGV0YWlscyhwcm9wcz8ucm9vbXMpLFxuICAgICAgICAgICAgY29udGFjdEluZm86IHRoaXMubWFwQ29udGFjdEluZm8ocHJvcHM/LnRleHRzKSxcbiAgICAgICAgICAgIHNvY2lhbE1lZGlhOiBwcm9wcz8uc29jaWFsTWVkaWE/Lm1hcCgoc206IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIGljb246IHNtLmljb24sXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IHNtLm5hbWUsXG4gICAgICAgICAgICAgICAgICAgIHVybDogc20udXJsLFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIGhvdGVsczogdGhpcy5tYXBIb3RlbHNHbG9iYWwocHJvcHMuaG90ZWxzKSxcbiAgICAgICAgICAgIGNvbnN1bHRUeXBlczogdGhpcy5tYXBDb25zdWx0VHlwZXNHbG9iYWwocHJvcHMuY29uc3VsdFR5cGVzKSxcbiAgICAgICAgfSBhcyBCYWJ5bG9uR2xvYmFsO1xuICAgICAgICBjb25zb2xlLmxvZygnTWFwcGVkIGdsb2JhbCBjb21wb25lbnQgcmVzdWx0OicsIHJlc3VsdCk7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgbWFwQ29uc3VsdFR5cGVzR2xvYmFsKGNvbnN1bHRzOiBhbnkgfCB1bmRlZmluZWQpOiBDb25zdWx0VHlwZUlbXSB7XG4gICAgICAgIHJldHVybiBjb25zdWx0cz8ubWFwKFxuICAgICAgICAgICAgKGNvbnN1bHQ6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICBpZDogY29uc3VsdD8uaWQsXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IGNvbnN1bHQ/Lm5hbWUsXG4gICAgICAgICAgICAgICAgfSkgYXMgQ29uc3VsdFR5cGVJXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgbWFwSG90ZWxzR2xvYmFsKGhvdGVsczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvbkhvdGVsSXRlbVtdIHtcbiAgICAgICAgcmV0dXJuIGhvdGVscz8ubWFwKFxuICAgICAgICAgICAgKGhvdGVsOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IGhvdGVsPy5pZCxcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogaG90ZWw/Lm5hbWUsXG4gICAgICAgICAgICAgICAgICAgIG9yZGVyOiBob3RlbD8ub3JkZXIsXG4gICAgICAgICAgICAgICAgICAgIGxpbmtzOiBVdGlscy5tYXBCdXR0b25zKGhvdGVsPy5saW5rKSxcbiAgICAgICAgICAgICAgICB9KSBhcyBCYWJ5bG9uSG90ZWxJdGVtXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgbWFwQWRkcmVzcyhhZGRyZXNzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uQWRkcmVzc0l0ZW0ge1xuICAgICAgICByZXR1cm4gYWRkcmVzcz8ubWFwKFxuICAgICAgICAgICAgKGFkZHJlc3M6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICBpZDogYWRkcmVzcz8uaWQsXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IGFkZHJlc3M/Lm5hbWUsXG4gICAgICAgICAgICAgICAgICAgIGFkZHJlc3M6IGFkZHJlc3M/LmFkZHJlc3MsXG4gICAgICAgICAgICAgICAgICAgIGNpdHk6IGFkZHJlc3M/LmNpdHksXG4gICAgICAgICAgICAgICAgICAgIHByb3ZpbmNlOiBhZGRyZXNzPy5wcm92aW5jZSxcbiAgICAgICAgICAgICAgICAgICAgY291bnRyeTogYWRkcmVzcz8uY291bnRyeSxcbiAgICAgICAgICAgICAgICAgICAgY3A6IGFkZHJlc3M/LmNwLFxuICAgICAgICAgICAgICAgICAgICB1cmw6IGFkZHJlc3M/LmxpbmssXG4gICAgICAgICAgICAgICAgICAgIHBob25lOiBhZGRyZXNzPy5waG9uZSxcbiAgICAgICAgICAgICAgICAgICAgcGhvbmUyOiBhZGRyZXNzPy5waG9uZTIsXG4gICAgICAgICAgICAgICAgICAgIGVtYWlsOiBhZGRyZXNzPy5lbWFpbCxcbiAgICAgICAgICAgICAgICAgICAgZnVsbF9hZGRyZXNzOiBhZGRyZXNzPy5mdWxsQWRkcmVzcyxcbiAgICAgICAgICAgICAgICB9KSBhcyBCYWJ5bG9uQWRkcmVzc0l0ZW1cbiAgICAgICAgKTtcbiAgICB9XG4gICAgbWFwU3RhdGljRm9vdGVydjMocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25TdGF0aWNGb290ZXJJIHtcbiAgICAgICAgcmV0dXJuIHt9IGFzIGFueTtcbiAgICB9XG5cbiAgICBtYXBDb250YWN0SW5mbyh0ZXh0czogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvbkNvbnRhY3RJbmZvSSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aXRsZTogdGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgdGV4dDogdGV4dHM/LnRleHQsXG4gICAgICAgICAgICBpY29uOiB0ZXh0cz8uaWNvbixcbiAgICAgICAgICAgIHByZXRpdGxlOiB0ZXh0cz8ucHJldGl0bGUsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogdGV4dHM/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgY29uZGl0aW9uczogdGV4dHM/LmNvbmRpdGlvbnMsXG4gICAgICAgICAgICBkcm9wZG93blBsYWNlaG9sZGVyOiB0ZXh0cz8uZHJvcGRvd25QbGFjZWhvbGRlcixcbiAgICAgICAgICAgIGRyb3Bkb3duVGl0bGU6IHRleHRzPy5kcm9wZG93blRpdGxlLFxuICAgICAgICAgICAgZXJyb3JFbWFpbDogdGV4dHM/LmVycm9yRW1haWwsXG4gICAgICAgICAgICBlcnJvck1lc3NhZ2U6IHRleHRzPy5lcnJvck1lc3NhZ2UsXG4gICAgICAgICAgICBlcnJvck5hbWU6IHRleHRzPy5lcnJvck5hbWUsXG4gICAgICAgICAgICBlcnJvclBob25lOiB0ZXh0cz8uZXJyb3JQaG9uZSxcbiAgICAgICAgICAgIGVycm9yUmVxdWlyZWQ6IHRleHRzPy5lcnJvclJlcXVpcmVkLFxuICAgICAgICAgICAgaW5wdXRFbWFpbDogdGV4dHM/LmlucHV0RW1haWwsXG4gICAgICAgICAgICBpbnB1dEVtYWlsUGxhY2VIb2xkZXI6IHRleHRzPy5pbnB1dEVtYWlsUGxhY2VIb2xkZXIsXG4gICAgICAgICAgICBpbnB1dE1lc3NhZ2U6IHRleHRzPy5pbnB1dE1lc3NhZ2UsXG4gICAgICAgICAgICBpbnB1dE1lc3NhZ2VQbGFjZUhvbGRlcjogdGV4dHM/LmlucHV0TWVzc2FnZVBsYWNlSG9sZGVyLFxuICAgICAgICAgICAgaW5wdXROYW1lOiB0ZXh0cz8uaW5wdXROYW1lLFxuICAgICAgICAgICAgaW5wdXROYW1lUGxhY2VIb2xkZXI6IHRleHRzPy5pbnB1dE5hbWVQbGFjZUhvbGRlcixcbiAgICAgICAgICAgIGlucHV0UGhvbmU6IHRleHRzPy5pbnB1dFBob25lLFxuICAgICAgICAgICAgaW5wdXRQaG9uZVBsYWNlSG9sZGVyOiB0ZXh0cz8uaW5wdXRQaG9uZVBsYWNlSG9sZGVyLFxuICAgICAgICAgICAgaW5wdXRsYXN0bmFtZTogdGV4dHM/LmlucHV0bGFzdG5hbWUsXG4gICAgICAgICAgICBpbnB1dGxhc3RuYW1lUGxhY2VIb2xkZXI6IHRleHRzPy5pbnB1dGxhc3RuYW1lUGxhY2VIb2xkZXIsXG4gICAgICAgICAgICBpbnB1dFN1cm5hbWVzOiB0ZXh0cz8uaW5wdXRTdXJuYW1lcyxcbiAgICAgICAgICAgIGlucHV0U3VybmFtZXNQbGFjZUhvbGRlcjogdGV4dHM/LmlucHV0U3VybmFtZXNQbGFjZUhvbGRlcixcbiAgICAgICAgICAgIG1hbmRhdG9yeXRleHQ6IHRleHRzPy5tYW5kYXRvcnl0ZXh0LFxuICAgICAgICAgICAgcmVxdWlyZWRGaWVsZHNMYWJlbDogdGV4dHM/LnJlcXVpcmVkRmllbGRzTGFiZWwsXG4gICAgICAgIH0gYXMgQmFieWxvbkNvbnRhY3RJbmZvSTtcbiAgICB9XG4gICAgbWFwRXZlbnRzR2xvYmFsKGV2ZW50czogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvbkl0ZW1JW10ge1xuICAgICAgICByZXR1cm4gZXZlbnRzPy5tYXAoXG4gICAgICAgICAgICAoaXRlbTogYW55KSA9PlxuICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgIGJ1dHRvbnM6IFV0aWxzLm1hcEJ1dHRvbnMoaXRlbT8uYnV0dG9ucyksXG4gICAgICAgICAgICAgICAgICAgIGxpbmtzOiBVdGlscy5tYXBCdXR0b25zKGl0ZW0/LmxpbmtzKSxcbiAgICAgICAgICAgICAgICAgICAgaW1hZ2VzOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0/Lm11bHRpbWVkaWE/LlswXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IGl0ZW0/Lm5hbWUgPz8gaXRlbT8ubmFtZV9pZGVudGlmaWVyLFxuICAgICAgICAgICAgICAgICAgICBwcmljZTogaXRlbT8ucHJpY2UsXG4gICAgICAgICAgICAgICAgICAgIHRleHRzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaXRlbS50ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBzdWJ0aXRsZTogaXRlbS50ZXh0cz8uc3VidGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogaXRlbS50ZXh0cz8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsMTogaXRlbS50ZXh0cz8uYWRkaXRpb25hbDEsXG4gICAgICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsMjogaXRlbS50ZXh0cz8uYWRkaXRpb25hbDIsXG4gICAgICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsMzogaXRlbS50ZXh0cz8uYWRkaXRpb25hbDMsXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25kaXRpb25zOiBpdGVtLnRleHRzPy5jb25kaXRpb25zLFxuICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBpdGVtLnRleHRzPy5yZXNlcnZhdGlvblVybCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZUF0OiBpdGVtLnRleHRzPy5jcmVhdGVBdCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZWRBdDogaXRlbS50ZXh0cz8udXBkYXRlZEF0LFxuICAgICAgICAgICAgICAgICAgICB9IGFzIEJhYnlsb25UZXh0SW5mb0ksXG4gICAgICAgICAgICAgICAgICAgIHVybDogaXRlbT8udXJsLFxuICAgICAgICAgICAgICAgIH0pIGFzIEJhYnlsb25JdGVtSVxuICAgICAgICApO1xuICAgIH1cbiAgICBtYXBPZmZlcnNHbG9iYWwob2ZmZXJzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uT2ZmZXJJdGVtSVtdIHtcbiAgICAgICAgcmV0dXJuIG9mZmVycz8ubWFwKFxuICAgICAgICAgICAgKGl0ZW06IGFueSkgPT5cbiAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbkZyb206IGl0ZW0/LmFwcGxpY2F0aW9uRnJvbSxcbiAgICAgICAgICAgICAgICAgICAgYXBwbGljYXRpb25UbzogaXRlbT8uYXBwbGljYXRpb25UbyxcbiAgICAgICAgICAgICAgICAgICAgYnV0dG9uczogVXRpbHMubWFwQnV0dG9ucyhpdGVtPy5idXR0b25zKSxcbiAgICAgICAgICAgICAgICAgICAgY3VycmVuY3k6IGl0ZW0/LmN1cnJlbmN5LFxuICAgICAgICAgICAgICAgICAgICBkaXNjb3VudDogaXRlbT8uZGlzY291bnQsXG4gICAgICAgICAgICAgICAgICAgIHByaWNlOiBpdGVtPy5wcmljZSxcbiAgICAgICAgICAgICAgICAgICAgbGlua3M6IFV0aWxzLm1hcEJ1dHRvbnMoaXRlbT8ubGlua3MpLFxuICAgICAgICAgICAgICAgICAgICBpbWFnZXM6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbT8ubXVsdGltZWRpYT8uWzBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogaXRlbT8ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgdGV4dHM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtLnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHN1YnRpdGxlOiBpdGVtLnRleHRzPy5zdWJ0aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBpdGVtLnRleHRzPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgIGFkZGl0aW9uYWwxOiBpdGVtLnRleHRzPy5hZGRpdGlvbmFsMSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGFkZGl0aW9uYWwyOiBpdGVtLnRleHRzPy5hZGRpdGlvbmFsMixcbiAgICAgICAgICAgICAgICAgICAgICAgIGFkZGl0aW9uYWwzOiBpdGVtLnRleHRzPy5hZGRpdGlvbmFsMyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbmRpdGlvbnM6IGl0ZW0udGV4dHM/LmNvbmRpdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICB1cmw6IGl0ZW0udGV4dHM/LnJlc2VydmF0aW9uVXJsLFxuICAgICAgICAgICAgICAgICAgICB9IGFzIEJhYnlsb25UZXh0SW5mb0ksXG4gICAgICAgICAgICAgICAgICAgIHVybDogaXRlbT8udXJsLFxuICAgICAgICAgICAgICAgICAgICB2aXNpYmxlRnJvbTogaXRlbT8udmlzaWJsZUZyb20sXG4gICAgICAgICAgICAgICAgICAgIHZpc2libGVUbzogaXRlbT8udmlzaWJsZVRvLFxuICAgICAgICAgICAgICAgIH0pIGFzIEJhYnlsb25PZmZlcklcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBtYXBBZHZhbnRhZ2VzR2xvYmFsKGFkdmFudGFnZXM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25BZHZhbnRhZ2VJdGVtSVtdIHtcbiAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGFkdmFudGFnZXMpKSByZXR1cm4gW107XG4gICAgICAgIHJldHVybiBhZHZhbnRhZ2VzPy5tYXAoKGl0ZW06IGFueSkgPT4gKHtcbiAgICAgICAgICAgIHRpdGxlOiBpdGVtLnRpdGxlLFxuICAgICAgICAgICAgaWNvbjogYGljb24tJHtpdGVtLmljb259YCxcbiAgICAgICAgICAgIHRleHQ6IGl0ZW0udGV4dCxcbiAgICAgICAgfSkpO1xuICAgIH1cblxuICAgIG1hcEl0ZW1zKGl0ZW1zOiBhbnkpOiBhbnkgfCB1bmRlZmluZWQge1xuICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkoaXRlbXMpKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICBpdGVtcyA9IGl0ZW1zPy5tYXAoKGl0ZW06IGFueSkgPT4gKHtcbiAgICAgICAgICAgIGxhYmVsOiBpdGVtPy50aXRsZSxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBpdGVtPy50ZXh0ID8/IGl0ZW0/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgdGV4dHM6XG4gICAgICAgICAgICAgICAgaXRlbT8udGV4dHMgPz9cbiAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICB0aXRsZTogaXRlbT8udGl0bGUsXG4gICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBpdGVtPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICB9IGFzIEJhYnlsb25UZXh0SW5mb0kpLFxuICAgICAgICAgICAgbXVsdGltZWRpYTogdGhpcy5tYXBJbWFnZXMoaXRlbXM/Lm11bHRpbWVkaWEpLFxuICAgICAgICAgICAgYnV0dG9uczogVXRpbHMubWFwQnV0dG9ucyhpdGVtPy5idXR0b25zKSxcbiAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaXRlbSwgZmFsc2UpLFxuICAgICAgICB9KSk7XG4gICAgICAgIHJldHVybiBpdGVtcyBhcyBCYWJ5bG9uSXRlbUk7XG4gICAgfVxuXG4gICAgbWFwTXVsdGltZWRpYShpbWFnZXNBcnJheTogYW55IHwgdW5kZWZpbmVkKTogYW55IHwgdW5kZWZpbmVkIHtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoaW1hZ2VzQXJyYXkpICYmIGltYWdlc0FycmF5Lmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuIGltYWdlc0FycmF5Py5tYXAoKGl0ZW06IEltYWdlUmVzcG9uc2UpID0+ICh7XG4gICAgICAgICAgICAgICAgc3VidGl0bGU6IGl0ZW0/LnByZXRpdGxlLFxuICAgICAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaXRlbSwgZmFsc2UpLFxuICAgICAgICAgICAgICAgIGJ1dHRvbnM6IFV0aWxzLm1hcEJ1dHRvbnMoaXRlbT8uYnV0dG9ucyksXG4gICAgICAgICAgICAgICAgbGlua3M6IFV0aWxzLm1hcEJ1dHRvbnMoaXRlbT8ubGlua3MpLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtPy50aXRsZSxcbiAgICAgICAgICAgICAgICBwcmV0aXRsZTogaXRlbT8ucHJldGl0bGUsXG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGl0ZW0/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgIHRhZzogaXRlbT8udGFncyxcbiAgICAgICAgICAgIH0pKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIG1hcEltYWdlcyhtdWx0aW1lZGlhOiBhbnkgfCB1bmRlZmluZWQpOiBhbnkgfCB1bmRlZmluZWQge1xuICAgICAgICBpZiAobXVsdGltZWRpYSkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBpbWFnZW5lczogdGhpcy5tYXBNdWx0aW1lZGlhKG11bHRpbWVkaWE/LmltYWdlbmVzKSxcbiAgICAgICAgICAgICAgICBzdGF0aWNJbWFnZW5lczogdGhpcy5tYXBNdWx0aW1lZGlhKG11bHRpbWVkaWE/LnN0YXRpY2ltYWdlbmVzKSxcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kaW1hZ2U6IHRoaXMubWFwTXVsdGltZWRpYShcbiAgICAgICAgICAgICAgICAgICAgbXVsdGltZWRpYT8uYmFja2dyb3VuZGltYWdlXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBsb2dvOiB0aGlzLm1hcE11bHRpbWVkaWEobXVsdGltZWRpYT8ubG9nbyksXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgbWFwUm9vbURldGFpbHMocm9vbXM6IGFueSB8IHVuZGVmaW5lZCk6IGFueSB7XG4gICAgICAgIHJldHVybiByb29tc1xuICAgICAgICAgICAgPy5maWx0ZXIoXG4gICAgICAgICAgICAgICAgKHJvb206IGFueSwgaW5kZXg6IG51bWJlciwgc2VsZjogYW55W10pID0+XG4gICAgICAgICAgICAgICAgICAgIHNlbGYuZmluZEluZGV4KChyKSA9PiByLmlkID09PSByb29tLmlkKSA9PT0gaW5kZXhcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgID8ubWFwKFxuICAgICAgICAgICAgICAgIChpdGVtOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICBidXR0b25zOiBVdGlscy5tYXBCdXR0b25zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0/LmJ1dHRvbnM/LnNsaWNlKCkucmV2ZXJzZSgpXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGlua3M6IFV0aWxzLm1hcEJ1dHRvbnMoaXRlbT8ubGlua3MpLFxuICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2VzOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0/Lm11bHRpbWVkaWE/LmZpbmQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW1nOiBhbnkpID0+IGltZz8uY292ZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSB8fCBpdGVtPy5tdWx0aW1lZGlhPy5bMF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICBtdWx0aW1lZGlhOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2VuZXM6IGl0ZW0/Lm11bHRpbWVkaWE/Lm1hcCgoaW1nOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaW1nLCBmYWxzZSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0czogaW1nLnRleHRzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFnOiBpbWcudGFncyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvbnM6IFV0aWxzLm1hcEJ1dHRvbnMoaW1nLmJ1dHRvbnMpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlua3M6IFV0aWxzLm1hcEJ1dHRvbnMoaW1nLmxpbmtzKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IGltZy50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB2aWRlb3M6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmM6IGl0ZW0/Lm11bHRpbWVkaWE/LnZpZGVvPy5zcmMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ3ZpZGVvL21wNCcsXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgdGV4dHM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBpdGVtLnRleHRzPy5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBpdGVtLnRleHRzPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsMTogaXRlbS50ZXh0cz8uYWRkaXRpb25hbDEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbDI6IGl0ZW0udGV4dHM/LmFkZGl0aW9uYWwyLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZGl0aW9uYWwzOiBpdGVtLnRleHRzPy5hZGRpdGlvbmFsMyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsNDogaXRlbS50ZXh0cz8uYWRkaXRpb25hbDQsXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgb3JkZXI6IGl0ZW0/Lm9yZGVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgZXF1aXBtZW50czogQXJyYXkuaXNBcnJheShpdGVtPy5zZXJ2aWNlcylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IGl0ZW0uc2VydmljZXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZmlsdGVyKChzdmM6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB0eXBlcyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlb2Ygc3ZjLnR5cGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBzdmMudHlwZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5zcGxpdCgnLCcpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLm1hcCgodDogc3RyaW5nKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0LnRyaW0oKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFtdO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEFjZXB0YSB0YW50byAnZXF1aXBtZW50JyBjb21vICdjaGFyYWN0ZXJpc3RpY3MnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGhhc1ZhbGlkVHlwZSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlcy5pbmNsdWRlcygnZXF1aXBtZW50JykgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVzLmluY2x1ZGVzKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJvb21TZXJ2aWNlVHlwZS5jaGFyYWN0ZXJpc3RpY3NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGhhc1ZhbGlkVHlwZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5tYXAoKHN2YzogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBzdmMubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvbjogc3ZjLmNsYXNzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IGBpY29uLSR7c3ZjLmNsYXNzfWBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogW10sXG4gICAgICAgICAgICAgICAgICAgIH0pIGFzIEJhYnlsb25Sb29tSW5mb0lcbiAgICAgICAgICAgICk7XG4gICAgfVxuICAgIG1hcDQwNChwcm9wczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvbjQwNEkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6IHByb3BzLnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBwcm9wcy50ZXh0cz8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICBzdWJ0aXRsZTogcHJvcHMudGV4dHM/LnN1YnRpdGxlLFxuICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHByb3BzLmJ1dHRvbnMpPy5bMF0sXG4gICAgICAgIH0gYXMgQmFieWxvbjQwNEk7XG4gICAgfVxuXG4gICAgLy8tLS0tIExBWU9VVCBDT01QT05FTlRTIC0tLS0vL1xuICAgIG1hcFRvcFNsaWRlcihwcm9wczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvblRvcFNsaWRlckkgfCB1bmRlZmluZWQge1xuICAgICAgICBsZXQgaW1hZ2VzO1xuICAgICAgICBpZiAocHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzWzBdPy50YWdzPy5sZW5ndGgpIHtcbiAgICAgICAgICAgIGltYWdlcyA9IHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8uZmlsdGVyKFxuICAgICAgICAgICAgICAgIChpbWFnZTogYW55KSA9PiBpbWFnZT8udGFnc1swXT8ubmFtZSA9PT0gJ1RvcFNsaWRlcidcbiAgICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpbWFnZXMgPSBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXM7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGJ1dHRvbnM6IFV0aWxzLm1hcEJ1dHRvbnMocHJvcHM/LmJ1dHRvbnMpLFxuICAgICAgICAgICAgbGlua3M6IFV0aWxzLm1hcEJ1dHRvbnMocHJvcHM/LmxpbmtzKSxcbiAgICAgICAgICAgIGl0ZW1zOiBpbWFnZXMubWFwKChpdGVtOiBJbWFnZVJlc3BvbnNlKSA9PiAoe1xuICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtPy50aXRsZSxcbiAgICAgICAgICAgICAgICBzdWJ0aXRsZTogaXRlbT8ucHJldGl0bGUsXG4gICAgICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpdGVtLCBmYWxzZSksXG4gICAgICAgICAgICAgICAgYnV0dG9uczogVXRpbHMubWFwQnV0dG9ucyhpdGVtPy5idXR0b25zKSxcbiAgICAgICAgICAgICAgICBsaW5rczogVXRpbHMubWFwQnV0dG9ucyhpdGVtPy5saW5rcyksXG4gICAgICAgICAgICB9KSksXG4gICAgICAgICAgICBpdGVtc01vYmlsZTogcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzbW9iaWxlPy5tYXAoXG4gICAgICAgICAgICAgICAgKGl0ZW06IEltYWdlUmVzcG9uc2UpID0+XG4gICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaXRlbT8udGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBzdWJ0aXRsZTogaXRlbT8ucHJldGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGl0ZW0sIGZhbHNlKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvbnM6IFV0aWxzLm1hcEJ1dHRvbnMoaXRlbT8uYnV0dG9ucyksXG4gICAgICAgICAgICAgICAgICAgICAgICBsaW5rczogVXRpbHMubWFwQnV0dG9ucyhpdGVtPy5saW5rcyksXG4gICAgICAgICAgICAgICAgICAgIH0pIGFzIEJhYnlsb25Ub3BTbGlkZXJJdGVtXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgbG9nbzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUocHJvcHM/Lm11bHRpbWVkaWE/LmxvZ28/LlswXSwgZmFsc2UpLFxuICAgICAgICAgICAgbG9nb1RpdGxlOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8ubG9nb3RpdGxlPy5bMF0sXG4gICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICB2aWRlb0RhdGE6IHtcbiAgICAgICAgICAgICAgICAvLyB0aXRsZTogcHJvcHM/LnZpZGVvPy50aXRsZSxcbiAgICAgICAgICAgICAgICBzcmM6IHByb3BzPy50ZXh0cz8udmlkZW8sXG4gICAgICAgICAgICAgICAgdHlwZTogJ3ZpZGVvL21wNCcsXG4gICAgICAgICAgICB9LFxuICAgICAgICB9IGFzIEJhYnlsb25Ub3BTbGlkZXJJO1xuICAgIH1cblxuICAgIG1hcFRvcFNsaWRlclZpZGVvKFxuICAgICAgICBwcm9wczogYW55IHwgdW5kZWZpbmVkXG4gICAgKTogQmFieWxvblRvcFNsaWRlclZpZGVvSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB2aWRlb0RhdGE6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnZpZGVvPy50aXRsZSxcbiAgICAgICAgICAgICAgICBzcmM6IHByb3BzPy52aWRlbz8uc3JjLFxuICAgICAgICAgICAgICAgIHR5cGU6ICd2aWRlby9tcDQnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNtYWxsVmlkZW9EYXRhOiBwcm9wcz8udmlkZW8/Lm1vYmlsZVxuICAgICAgICAgICAgICAgID8ge1xuICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udmlkZW8/LnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgIHNyYzogcHJvcHM/LnZpZGVvPy5tb2JpbGUsXG4gICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ3ZpZGVvL21wNCcsXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBsYWJlbEluZm9zOiB7XG4gICAgICAgICAgICAgICAgcHJldGl0bGU6XG4gICAgICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnByZXRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnByZXRpdGxlXG4gICAgICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnRpdGxlXG4gICAgICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LnRhZyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW1vYmlsZT8uWzBdLFxuICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHByb3BzPy5idXR0b25zKT8uWzBdLFxuICAgICAgICB9IGFzIEJhYnlsb25Ub3BTbGlkZXJWaWRlb0k7XG4gICAgfVxuXG4gICAgbWFwVG9wU2xpZGVyVjIoXG4gICAgICAgIHByb3BzOiBhbnkgfCB1bmRlZmluZWQsXG4gICAgICAgIHJpZ2h0U2lkZTogYm9vbGVhbiA9IGZhbHNlXG4gICAgKTogQmFieWxvblRvcFNsaWRlclYySSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiBwcm9wc1xuICAgICAgICAgICAgPyAoe1xuICAgICAgICAgICAgICAgICAgcmlnaHRTaWRlOiByaWdodFNpZGUsXG4gICAgICAgICAgICAgICAgICBidXR0b25zOiBVdGlscy5tYXBCdXR0b25zKHByb3BzPy5idXR0b25zKT8uWzBdLFxuICAgICAgICAgICAgICAgICAgaXRlbXM6IHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8ubWFwKFxuICAgICAgICAgICAgICAgICAgICAgIChpdGVtOiBJbWFnZVJlc3BvbnNlKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0udGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJ0aXRsZTogaXRlbS5wcmV0aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaXRlbSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0pIGFzIEJhYnlsb25TbGlkZXI0Y29sTGFiZWxzXG4gICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgbGFiZWxzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgc3VidGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8udGV4dCxcbiAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogcHJvcHM/LnRleHRzPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICB0ZXh0OiBwcm9wcz8udGV4dHM/LnRleHQsXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB9IGFzIEJhYnlsb25Ub3BTbGlkZXJWMkkpXG4gICAgICAgICAgICA6IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBtYXBJbmZvSW1nKFxuICAgICAgICBwcm9wczogYW55IHwgdW5kZWZpbmVkLFxuICAgICAgICByaWdodFNpZGU6IGJvb2xlYW4gPSBmYWxzZSxcbiAgICAgICAgdGV4dENvbG9yOiBzdHJpbmcgfCB1bmRlZmluZWRcbiAgICApOiBCYWJ5bG9uSW5mb0ltZ0kgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcmlnaHRTaWRlOiByaWdodFNpZGUsXG4gICAgICAgICAgICB0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy50aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy50aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIHByZXRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnByZXRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8ucHJldGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgYnV0dG9uczogcHJvcHM/LmJ1dHRvbnNcbiAgICAgICAgICAgICAgICA/IFV0aWxzLm1hcEJ1dHRvbnMoXG4gICAgICAgICAgICAgICAgICAgICAgcHJvcHM/LmJ1dHRvbnM/LmZpbHRlcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGxpbms6IGFueSkgPT4gbGluaz8ubGlua1ZhbHVlICE9PSBudWxsXG4gICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8uZGVzY3JpcHRpb24gPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy5kZXNjcmlwdGlvblxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8uZGVzY3JpcHRpb24/LmNvbnRhaW4sXG4gICAgICAgICAgICB0ZXh0OlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnN1YnRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8uc3VidGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnN1YnRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgbmR0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy5uZHRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8ubmR0aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8ubmR0aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIGxlc3NCdG46IHByb3BzPy50ZXh0cz8uc2VlTGVzcyxcbiAgICAgICAgICAgIG1vcmVCdG46IHByb3BzPy50ZXh0cz8uc2VlTW9yZSxcbiAgICAgICAgICAgIGltYWdlczogdGhpcy5nZXRBcnJheUltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXMsXG4gICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBhZHZhbnRhZ2VzOiBwcm9wcz8uVmVudGFqYXM/LmZpbHRlcihcbiAgICAgICAgICAgICAgICAoaXRlbTogYW55KSA9PiBpdGVtPy50aXRsZSB8fCBpdGVtPy50ZXh0XG4gICAgICAgICAgICApPy5tYXAoKGl0ZW06IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICB0aXRsZTogaXRlbS50aXRsZSxcbiAgICAgICAgICAgICAgICB0ZXh0OiBpdGVtLnRleHQsXG4gICAgICAgICAgICAgICAgaWNvbjogaXRlbS5pY29uID8gYGljb24tJHtpdGVtLmljb259YCA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIH0pKSxcbiAgICAgICAgICAgIGxvZ286IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKHByb3BzPy5tdWx0aW1lZGlhPy5sb2dvPy5bMF0sIGZhbHNlKSxcbiAgICAgICAgICAgIGFkdlRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnRleHQgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy50ZXh0XG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy50ZXh0Py5jb250YWluLFxuICAgICAgICAgICAgdG9wQkc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy50b3BiZz8uWzBdLFxuICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYm90dG9tQkc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5ib3R0b21iZz8uWzBdLFxuICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgdG9wQ29sb3I6IHByb3BzPy50ZXh0cz8udG9wQ29sb3IsXG4gICAgICAgICAgICBib3R0b21Db2xvcjogcHJvcHM/LnRleHRzPy5Cb3R0b21Db2xvcixcbiAgICAgICAgICAgIHRleHRDb2xvcjogdGV4dENvbG9yLFxuICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICB0ZXh0OiBwcm9wcz8udGV4dHM/LnN1YnRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IHByb3BzPy50ZXh0cz8uZGVzY3JpcHRpb24/LnRhZyxcbiAgICAgICAgICAgICAgICBuZHRpdGxlOiBwcm9wcz8udGV4dHM/Lm5kdGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICBhZHZUaXRsZTogcHJvcHM/LnRleHRzPy50ZXh0Py50YWcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGV4dENvbG9yczoge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgICAgIHRleHQ6IHByb3BzPy50ZXh0cz8uc3VidGl0bGU/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IHByb3BzPy50ZXh0cz8uZGVzY3JpcHRpb24/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICB9LFxuICAgICAgICB9IGFzIEJhYnlsb25JbmZvSW1nSTtcbiAgICB9XG5cbiAgICBtYXBJbmZvSW1nU2xpZGVyKFxuICAgICAgICBwcm9wczogYW55IHwgdW5kZWZpbmVkLFxuICAgICAgICByaWdodFNpZGU6IGJvb2xlYW4gPSBmYWxzZVxuICAgICk6IEJhYnlsb25JbmZvSW1nU2xpZGVySSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIC8vIFRPRE86IGFkZCB0b3BCRywgYm90dG9tQkdcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHJpZ2h0U2lkZTogcmlnaHRTaWRlLFxuICAgICAgICAgICAgdG9wQ29sb3I6IHByb3BzPy50ZXh0cz8udG9wQ29sb3IsXG4gICAgICAgICAgICBib3R0b21Db2xvcjogcHJvcHM/LnRleHRzPy5ib3R0b21Db2xvcixcbiAgICAgICAgICAgIGxlc3NCdG46IHByb3BzPy50ZXh0cz8uc2VlTGVzcyxcbiAgICAgICAgICAgIG1vcmVCdG46IHByb3BzPy50ZXh0cz8uc2VlTW9yZSxcbiAgICAgICAgICAgIGl0ZW1zOiBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXM/Lm1hcChcbiAgICAgICAgICAgICAgICAoaXRlbTogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0/LnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJldGl0bGU6IGl0ZW0/LnByZXRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgc3VidGl0bGU6IGl0ZW0/LnN1YnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGl0ZW0/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmR0aXRsZTogaXRlbT8ubmRfdGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBpbWFnZTogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaXRlbSwgZmFsc2UpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uczogVXRpbHMubWFwQnV0dG9ucyhpdGVtPy5idXR0b25zKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtzOiBVdGlscy5tYXBCdXR0b25zKGl0ZW0/LmxpbmtzKSxcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgQmFieWxvbkluZm9JbWdTbGlkZXJJdGVtSVxuICAgICAgICAgICAgKSxcbiAgICAgICAgfSBhcyBCYWJ5bG9uSW5mb0ltZ1NsaWRlckk7XG4gICAgfVxuXG4gICAgbWFwSW5mb0ludHJvKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uSW5mb0ludHJvSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy50aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy50aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIHByZXRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnByZXRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8ucHJldGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8uZGVzY3JpcHRpb24gPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy5kZXNjcmlwdGlvblxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8uZGVzY3JpcHRpb24/LmNvbnRhaW4sXG4gICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnMocHJvcHM/LmJ1dHRvbnMpPy5bMF0sXG4gICAgICAgICAgICBpbWFnZXM6IHRoaXMuZ2V0QXJyYXlJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzLFxuICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgdG9wQkc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy50b3BiZz8uWzBdLFxuICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYm90dG9tQkc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5ib3R0b21iZz8uWzBdLFxuICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgdG9wQ29sb3I6IHByb3BzPy50ZXh0cz8udG9wQ29sb3IsXG4gICAgICAgICAgICBib3R0b21Db2xvcjogcHJvcHM/LnRleHRzPy5Cb3R0b21Db2xvcixcbiAgICAgICAgICAgIGxvZ286IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKHByb3BzPy5tdWx0aW1lZGlhPy5sb2dvPy5bMF0sIGZhbHNlKSxcbiAgICAgICAgICAgIGxvZ28yOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8ubG9nbzI/LlswXSxcbiAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IHByb3BzPy50ZXh0cz8uZGVzY3JpcHRpb24/LnRhZyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0ZXh0Q29sb3JzOiB7XG4gICAgICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IHByb3BzPy50ZXh0cz8uZGVzY3JpcHRpb24/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgYnV0dG9uTW9kYWw6IHByb3BzPy50ZXh0cz8ucG9wdXBtb2RhbCxcbiAgICAgICAgfSBhcyBCYWJ5bG9uSW5mb0ludHJvSTtcbiAgICB9XG5cbiAgICBtYXBIZWFkZXIoXG4gICAgICAgIHByb3BzOiBhbnkgfCB1bmRlZmluZWQsXG4gICAgICAgIG1lbnU6IGFueVxuICAgICk6XG4gICAgICAgIHwgQmFieWxvbkhlYWRlckJvb2tTaG93SVxuICAgICAgICB8IEJhYnlsb25IZWFkZXJDbGVhcklcbiAgICAgICAgfCBCYWJ5bG9uSGVhZGVyTWVudUNlbnRlcklcbiAgICAgICAgfCBCYWJ5bG9uSGVhZGVyTWVudUxvZ29DZW50ZXJJXG4gICAgICAgIHwgQmFieWxvbkhlYWRlck1lbnVTaG93SSB7XG4gICAgICAgIGNvbnN0IGxpbmsgPSBtZW51LmxpbmtzPy5sb2dvTGluaz8uZmxhdCgpPy5bMF07XG4gICAgICAgIGNvbnN0IGhlYWRlckJ1dHRvbnMgPSBwcm9wcztcblxuICAgICAgICBpZiAoaGVhZGVyQnV0dG9ucykge1xuICAgICAgICAgICAgdGhpcy5mbG9hdGluZ0J1dHRvbnMgPSB7XG4gICAgICAgICAgICAgICAgdGV4dHM6IFtcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWNvbjogYGJhYnlsb24tJHtoZWFkZXJCdXR0b25zLnRleHRzPy50cmFuc2Zlckljb259YCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBoZWFkZXJCdXR0b25zPy50ZXh0cz8udHJhbnNmZXIsXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGljb246IGBiYWJ5bG9uLSR7aGVhZGVyQnV0dG9ucy50ZXh0cz8uY2hlY2tpbkljb259YCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBoZWFkZXJCdXR0b25zPy50ZXh0cz8uY2hlY2tpbixcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWNvbjogYGJhYnlsb24tJHtoZWFkZXJCdXR0b25zLnRleHRzPy53aGF0c2FwcH1gLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGhlYWRlckJ1dHRvbnM/LnRleHRzPy53aGF0c2FwcCxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIGxpbmtzOiBVdGlscy5tYXBCdXR0b25zKGhlYWRlckJ1dHRvbnM/LmxpbmtzKSxcbiAgICAgICAgICAgIH0gYXMgQmFieWxvbkZsb2F0aW5nQnV0dG9uc0k7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZmxvYXRpbmdCdXR0b25zOiB0aGlzLmZsb2F0aW5nQnV0dG9ucyxcbiAgICAgICAgICAgIGxhbmc6IHRoaXMuc2l0ZVN2Yy5zZWxlY3RlZExhbmd1YWdlSW5zdGFudD8ubG9jYXRlPy50b1VwcGVyQ2FzZSgpLFxuICAgICAgICAgICAgYnRuQm9vazogeyBsYWJlbDogaGVhZGVyQnV0dG9ucz8udGV4dHM/LmJvb2tOb3cgfSxcbiAgICAgICAgICAgIHNob3A6IGhlYWRlckJ1dHRvbnM/LnRleHRzPy5zaG9wXG4gICAgICAgICAgICAgICAgPyBgaWNvbi0ke2hlYWRlckJ1dHRvbnM/LnRleHRzPy5zaG9wfWBcbiAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIGxpbmtzOiBVdGlscy5tYXBCdXR0b25zKGhlYWRlckJ1dHRvbnM/LmxpbmtzKSxcbiAgICAgICAgICAgIGxpbmtMb2dvOiB7XG4gICAgICAgICAgICAgICAgbGFiZWw6IGxpbms/LmxhYmVsLFxuICAgICAgICAgICAgICAgIHVybDogbGluaz8ubGlua1ZhbHVlLFxuICAgICAgICAgICAgICAgIGxpbmtUeXBlOiBsaW5rPy5saW5rVHlwZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBtZW51OiBtZW51Py5uYXY/Lm1hcChcbiAgICAgICAgICAgICAgICAobWVudTogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogbWVudT8ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVybDogbWVudT8ubGlua1ZhbHVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGlua1R5cGU6IG1lbnU/LmxpbmtUeXBlLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IG1lbnU/LnRyYW5zbGF0aW9ucz8uWzBdPy5uYW1lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBtZW51Py50cmFuc2xhdGlvbnM/LlswXT8ubmFtZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogbWVudT8ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuOiBtZW51Py5jaGlsZHJlbj8ubWFwKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGlsZDogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogY2hpbGQ/Lm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6IGNoaWxkPy5saW5rVmFsdWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5rVHlwZTogY2hpbGQ/LmxpbmtUeXBlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGNoaWxkPy50cmFuc2xhdGlvbnM/LlswXT8ubmFtZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gY2hpbGQ/LnRyYW5zbGF0aW9ucz8uWzBdPy5uYW1lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBjaGlsZD8ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkgYXMgQmFieWxvbkJ1dHRvbklcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgIH0pIGFzIEJhYnlsb25NZW51QnV0dG9uSVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIG1lbnVJbmZvOiB0aGlzLm1hcE1lbnUobWVudSwgdW5kZWZpbmVkKSxcbiAgICAgICAgfSBhc1xuICAgICAgICAgICAgfCBCYWJ5bG9uSGVhZGVyQm9va1Nob3dJXG4gICAgICAgICAgICB8IEJhYnlsb25IZWFkZXJDbGVhcklcbiAgICAgICAgICAgIHwgQmFieWxvbkhlYWRlck1lbnVDZW50ZXJJXG4gICAgICAgICAgICB8IEJhYnlsb25IZWFkZXJNZW51TG9nb0NlbnRlcklcbiAgICAgICAgICAgIHwgQmFieWxvbkhlYWRlck1lbnVTaG93STtcbiAgICB9XG5cbiAgICAvL1RPRE86IFdhaXQgZm9yIGJhY2sgaW5mb1xuICAgIG1hcE1lbnUoXG4gICAgICAgIHByb3BzOiBhbnkgfCB1bmRlZmluZWQsXG4gICAgICAgIHNvY2lhbE1lZGlhOiBhbnkgfCB1bmRlZmluZWRcbiAgICApOiBCYWJ5bG9uTWVudUluZm9JIHtcbiAgICAgICAgY29uc3QgbGlua3MgPSBVdGlscy5tYXBCdXR0b25zKFxuICAgICAgICAgICAgcHJvcHM/Lm5hdj8ubWFwKChsaW5rOiBhbnkpID0+ICh7XG4gICAgICAgICAgICAgICAgLi4ubGluayxcbiAgICAgICAgICAgICAgICBsYWJlbDogbGluay50cmFuc2xhdGlvbnM/LlswXT8ubmFtZSxcbiAgICAgICAgICAgIH0pKVxuICAgICAgICApO1xuXG4gICAgICAgIGNvbnN0IGNvbnRhY3QgPSAoKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgcmF3ID0gVXRpbHMubWFwQnV0dG9ucyhwcm9wcz8ubGlua3M/LmNvbnRhY3Q/LlswXSk7IC8vIHAuZWouIFt1bmRlZmluZWQsIHVuZGVmaW5lZF1cbiAgICAgICAgICAgIGNvbnN0IGxpbmtzID0gQXJyYXkuaXNBcnJheShyYXcpID8gcmF3LmZpbHRlcihCb29sZWFuKSA6IHVuZGVmaW5lZDtcblxuICAgICAgICAgICAgY29uc3QgcmF3VGl0bGUgPVxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LmNvbnRhY3RUaXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcy50ZXh0cy5jb250YWN0VGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LmNvbnRhY3RUaXRsZT8uY29udGFpbjtcblxuICAgICAgICAgICAgY29uc3QgdGl0bGUgPVxuICAgICAgICAgICAgICAgIHR5cGVvZiByYXdUaXRsZSA9PT0gJ3N0cmluZycgJiYgcmF3VGl0bGUudHJpbSgpLmxlbmd0aFxuICAgICAgICAgICAgICAgICAgICA/IHJhd1RpdGxlLnRyaW0oKVxuICAgICAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZDtcblxuICAgICAgICAgICAgaWYgKCFsaW5rcz8ubGVuZ3RoICYmICF0aXRsZSkgcmV0dXJuIHVuZGVmaW5lZDtcblxuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAuLi4obGlua3M/Lmxlbmd0aCA/IHsgbGlua3MgfSA6IHt9KSxcbiAgICAgICAgICAgICAgICAuLi4odGl0bGUgPyB7IHRpdGxlIH0gOiB7fSksXG4gICAgICAgICAgICB9O1xuICAgICAgICB9KSgpO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBsaW5rczogbGlua3M/LnNsaWNlKDAsIDYpLFxuICAgICAgICAgICAgYm90dG9tTGlua3M6IGxpbmtzPy5zbGljZSg2KSxcbiAgICAgICAgICAgIGFkZHJlc3M6IHtcbiAgICAgICAgICAgICAgICBhZGRyZXNzOiBwcm9wcz8uYWRkcmVzcz8uWzBdPy5hZGRyZXNzLFxuICAgICAgICAgICAgICAgIGNpdHk6IHByb3BzPy5hZGRyZXNzPy5bMF0/LmNpdHksXG4gICAgICAgICAgICAgICAgY291bnRyeTogcHJvcHM/LmFkZHJlc3M/LlswXT8uY291bnRyeSxcbiAgICAgICAgICAgICAgICBjcDogcHJvcHM/LmFkZHJlc3M/LlswXT8uY3AsXG4gICAgICAgICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LmFkZHJlc3NUaXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy5hZGRyZXNzVGl0bGVcbiAgICAgICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy5hZGRyZXNzVGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICAgICAgcHJvdmluY2U6IHByb3BzPy5hZGRyZXNzPy5bMF0/LnByb3ZpbmNlLFxuICAgICAgICAgICAgICAgIHVybDogcHJvcHM/LmFkZHJlc3M/LlswXT8ubGluayxcbiAgICAgICAgICAgICAgICBsaW5rczoge1xuICAgICAgICAgICAgICAgICAgICB1cmw6IHByb3BzPy5hZGRyZXNzPy5bMF0/LmxpbmssXG4gICAgICAgICAgICAgICAgICAgIGxpbmtUeXBlOiAnZXh0ZXJuYWwnLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgY29udGFjdDogY29udGFjdCxcbiAgICAgICAgICAgIHNvY2lhbE1lZGlhOiBzb2NpYWxNZWRpYT8ubWFwKFxuICAgICAgICAgICAgICAgIChpdGVtOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICBpY29uOiBgYmFieWxvbi0ke2l0ZW0ubmFtZT8udG9Mb3dlckNhc2UoKX1gLFxuICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBpdGVtLnVybCxcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgQmFieWxvbkJ1dHRvbklcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW4/LlswXSwgZmFsc2UpLFxuICAgICAgICAgICAgaW1nQmFja2dyb3VuZDogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmJhY2tncm91bmQ/LlswXSxcbiAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGxpbmtMb2dvOiB7XG4gICAgICAgICAgICAgICAgdXJsOiBwcm9wcz8ubGlua3M/LmxvZ29MaW5rPy5bMF0/LmxpbmtWYWx1ZSxcbiAgICAgICAgICAgICAgICBsaW5rVHlwZTogcHJvcHM/LmxpbmtzPy5sb2dvTGluaz8uWzBdPy5saW5rVHlwZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0YWdzOiB7XG4gICAgICAgICAgICAgICAgY29udGFjdFRpdGxlOiBwcm9wcz8udGV4dHM/LmNvbnRhY3RUaXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIGFkZHJlc3NUaXRsZTogcHJvcHM/LnRleHRzPy5hZGRyZXNzVGl0bGU/LnRhZyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0ZXh0Q29sb3JzOiB7XG4gICAgICAgICAgICAgICAgY29udGFjdFRpdGxlOiBwcm9wcz8udGV4dHM/LmNvbnRhY3RUaXRsZT8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgICAgICBhZGRyZXNzVGl0bGU6IHByb3BzPy50ZXh0cz8uYWRkcmVzc1RpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSBhcyBCYWJ5bG9uTWVudUluZm9JO1xuICAgIH1cblxuICAgIG1hcEluZm8yaW1nKFxuICAgICAgICBwcm9wczogYW55IHwgdW5kZWZpbmVkLFxuICAgICAgICByaWdodFNpZGU6IGJvb2xlYW4gPSBmYWxzZVxuICAgICk6IEJhYnlsb25JbmZvMmltZ0kgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcmlnaHRTaWRlOiByaWdodFNpZGUsXG4gICAgICAgICAgICB0YWdzOiB7XG4gICAgICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8udGFnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRleHRzOiB7XG4gICAgICAgICAgICAgICAgcHJldGl0bGU6XG4gICAgICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnByZXRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnByZXRpdGxlXG4gICAgICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnRpdGxlXG4gICAgICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICAgICAgdGV4dDogcHJvcHM/LnRleHRzPy50ZXh0LFxuICAgICAgICAgICAgICAgIGl0ZW0xOiBwcm9wcz8udGV4dHM/Lml0ZW0xLFxuICAgICAgICAgICAgICAgIGl0ZW0xVGV4dDogcHJvcHM/LnRleHRzPy5pdGVtMVRleHQsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHByb3BzPy5idXR0b25zKSxcbiAgICAgICAgICAgIGltYWdlczogdGhpcy5nZXRBcnJheUltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXMsXG4gICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBpbWFnZXNzbWFsbDogdGhpcy5nZXRBcnJheUltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2Vzc21hbGwsXG4gICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBhZHZhbnRhZ2VzOiBwcm9wcz8uVmVudGFqYXM/Lm1hcCgoaXRlbTogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtLnRpdGxlLFxuICAgICAgICAgICAgICAgIHRleHQ6IGl0ZW0udGV4dCxcbiAgICAgICAgICAgICAgICBpY29uOiBgaWNvbi0ke2l0ZW0uaWNvbn1gLFxuICAgICAgICAgICAgfSkpLFxuICAgICAgICB9IGFzIEJhYnlsb25JbmZvMmltZ0k7XG4gICAgfVxuXG4gICAgbWFwSW5mbzJjb2xpbWcoXG4gICAgICAgIHByb3BzOiBhbnkgfCB1bmRlZmluZWQsXG4gICAgICAgIHJpZ2h0U2lkZTogYm9vbGVhbiA9IGZhbHNlXG4gICAgKTogQmFieWxvbkluZm8yQ29sSW1nSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICByaWdodFNpZGU6IHJpZ2h0U2lkZSxcbiAgICAgICAgICAgIHRleHQ6IHByb3BzPy50ZXh0cz8udGV4dCxcbiAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlLFxuICAgICAgICAgICAgc3VidGl0bGU6IHByb3BzPy50ZXh0cz8uc3VidGl0bGUsXG4gICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgIHNtYWxsaW1hZ2U6IHRoaXMuZ2V0QXJyYXlJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LnNtYWxsaW1hZ2UsXG4gICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBpdGVtczogcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzPy5tYXAoKGl0ZW06IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICB0aXRsZTogaXRlbT8udGl0bGUsXG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGl0ZW0/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaXRlbSwgZmFsc2UpLFxuICAgICAgICAgICAgICAgIGJ1dHRvbnM6IFV0aWxzLm1hcEJ1dHRvbnMoaXRlbT8uYnV0dG9ucyksXG4gICAgICAgICAgICB9KSksXG4gICAgICAgIH0gYXMgQmFieWxvbkluZm8yQ29sSW1nSTtcbiAgICB9XG5cbiAgICBtYXBaaWd6YWcoXG4gICAgICAgIHByb3BzOiBhbnkgfCB1bmRlZmluZWQsXG4gICAgICAgIHJpZ2h0U2lkZTogYm9vbGVhbiA9IGZhbHNlXG4gICAgKTogQmFieWxvbkluZm8yaW1nSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGxldCBpbWFnZXM6IChzdHJpbmcgfCBCYWJ5bG9uSW1hZ2VJKVtdIHwgdW5kZWZpbmVkID0gW107XG4gICAgICAgIGxldCB0ZXh0cywgdGFncztcbiAgICAgICAgaWYgKHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcykge1xuICAgICAgICAgICAgaW1hZ2VzID0gdGhpcy5nZXRBcnJheUltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXMsXG4gICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICB0ZXh0cyA9IHtcbiAgICAgICAgICAgICAgICBwcmV0aXRsZTpcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8uY29udGFpbiA/P1xuICAgICAgICAgICAgICAgICAgICAodHlwZW9mIHByb3BzPy50ZXh0cz8ucHJldGl0bGUgPT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy5wcmV0aXRsZVxuICAgICAgICAgICAgICAgICAgICAgICAgOiB1bmRlZmluZWQpLFxuICAgICAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb250YWluID8/XG4gICAgICAgICAgICAgICAgICAgICh0eXBlb2YgcHJvcHM/LnRleHRzPy50aXRsZSA9PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnRpdGxlXG4gICAgICAgICAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZCksXG4gICAgICAgICAgICAgICAgY29udGVudHRpdGxlOlxuICAgICAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/LmNvbnRlbnR0aXRsZT8uY29udGFpbiA/P1xuICAgICAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/LmNvbnRlbnR0aXRsZSxcbiAgICAgICAgICAgICAgICBjb250ZW50c3VidGl0bGU6XG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy50ZXh0cz8uY29udGVudHN1YnRpdGxlPy5jb250YWluID8/XG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy50ZXh0cz8uY29udGVudHN1YnRpdGxlLFxuICAgICAgICAgICAgICAgIGNvbnRlbnRkZXNjcmlwdGlvbjpcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy5jb250ZW50ZGVzY3JpcHRpb24/LmNvbnRhaW4gPz9cbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy5jb250ZW50ZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgbG9nbzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5sb2dvPy5bMF0sXG4gICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBpY29uczogcHJvcHM/LlZlbnRhamFzPy5maWx0ZXIoXG4gICAgICAgICAgICAgICAgICAgIChpdGVtOiBhbnkpID0+IGl0ZW0/LnRpdGxlIHx8IGl0ZW0/LnRleHRcbiAgICAgICAgICAgICAgICApPy5tYXAoKGl0ZW06IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0udGl0bGUsXG4gICAgICAgICAgICAgICAgICAgIHRleHQ6IGl0ZW0udGV4dCxcbiAgICAgICAgICAgICAgICAgICAgaWNvbjogYGljb24tJHtpdGVtLmljb259YCxcbiAgICAgICAgICAgICAgICB9KSksXG4gICAgICAgICAgICAgICAgaWNvblRpdGxlOlxuICAgICAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/Lmljb250aXRsZT8uY29udGFpbiA/PyBwcm9wcz8udGV4dHM/Lmljb250aXRsZSxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICB0YWdzID0ge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICBjb250ZW50dGl0bGU6IHByb3BzPy50ZXh0cz8uY29udGVudHRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgY29udGVudHN1YnRpdGxlOiBwcm9wcz8udGV4dHM/LmNvbnRlbnRzdWJ0aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIGNvbnRlbnRkZXNjcmlwdGlvbjogcHJvcHM/LnRleHRzPy5jb250ZW50ZGVzY3JpcHRpb24/LnRhZyxcbiAgICAgICAgICAgICAgICBpY29uVGl0bGU6IHByb3BzPy50ZXh0cz8uaWNvbnRpdGxlPy50YWcsXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICByaWdodFNpZGU6IHJpZ2h0U2lkZSxcbiAgICAgICAgICAgIGJ1dHRvbnM6IFV0aWxzLm1hcEJ1dHRvbnMoXG4gICAgICAgICAgICAgICAgcHJvcHM/LmJ1dHRvbnMuZmlsdGVyKChidG46IGFueSkgPT4gISFidG4/LmxpbmtWYWx1ZSlcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICB0ZXh0cyxcbiAgICAgICAgICAgIGltYWdlcyxcbiAgICAgICAgICAgIHRhZ3MsXG4gICAgICAgIH0gYXMgQmFieWxvbkluZm8yaW1nSTtcbiAgICB9XG5cbiAgICBtYXBHcmlkR2FsbGVyeShwcm9wczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvbkluZm9JbWdJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgY29uc3QgaXNJbkVudW0gPSA8VCBleHRlbmRzIFJlY29yZDxzdHJpbmcsIHN0cmluZz4+KFxuICAgICAgICAgICAgZW51bU9iajogVCxcbiAgICAgICAgICAgIHZhbHVlOiBhbnlcbiAgICAgICAgKTogdmFsdWUgaXMgVFtrZXlvZiBUXSA9PiBPYmplY3QudmFsdWVzKGVudW1PYmopLmluY2x1ZGVzKHZhbHVlKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlLFxuICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICB0ZXh0OiBwcm9wcz8udGV4dHM/LnRleHQsXG4gICAgICAgICAgICBob3ZlcjogcHJvcHM/LnRleHRzPy5ob3ZlcixcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/LnBsYWNlaG9sZGVyLFxuICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHByb3BzPy5idXR0b25zKSxcbiAgICAgICAgICAgIHZpZXc6IGlzSW5FbnVtKFZpZXdzVHlwZSwgcHJvcHM/Lm11bHRpbWVkaWE/LnZpZXcpXG4gICAgICAgICAgICAgICAgPyBwcm9wcy5tdWx0aW1lZGlhPy52aWV3XG4gICAgICAgICAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBpbWFnZXM6IHRoaXMuZ2V0QXJyYXlJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzLFxuICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICApLFxuICAgICAgICB9IGFzIEJhYnlsb25JbmZvSW1nSTtcbiAgICB9XG5cbiAgICBtYXBJbmZvR3JpZChwcm9wczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvbkluZm9HcmlkSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBwcmV0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy5wcmV0aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnByZXRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8udGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LnRhZyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0ZXh0OiBwcm9wcz8udGV4dHM/LnRleHQsXG4gICAgICAgICAgICBidXR0b25zOiBVdGlscy5tYXBCdXR0b25zKFxuICAgICAgICAgICAgICAgIHByb3BzPy5idXR0b25zLmZpbHRlcigoYnRuOiBhbnkpID0+ICEhYnRuPy5saW5rVmFsdWUpXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgaXRlbXM6IHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8ubWFwKFxuICAgICAgICAgICAgICAgIChpdGVtOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICBwcmV0aXRsZTogaXRlbT8ucHJldGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaXRlbT8udGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICB0ZXh0OiBpdGVtPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpdGVtLCBmYWxzZSksXG4gICAgICAgICAgICAgICAgICAgICAgICBidXR0b25zOiBpdGVtLmJ1dHRvbnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IFV0aWxzLm1hcEJ1dHRvbnMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5idXR0b25zLmZpbHRlcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxpbms6IGFueSkgPT4gbGluaz8ubGlua1ZhbHVlICE9PSBudWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGlua3M6IGl0ZW0ubGlua3NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IFV0aWxzLm1hcEJ1dHRvbnMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5saW5rcy5maWx0ZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsaW5rOiBhbnkpID0+IGxpbms/LmxpbmtWYWx1ZSAhPT0gbnVsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk/LlswXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICB9KSBhcyBCYWJ5bG9uSW5mb0dyaWRJdGVtSVxuICAgICAgICAgICAgKSxcbiAgICAgICAgfSBhcyBCYWJ5bG9uSW5mb0dyaWRJO1xuICAgIH1cblxuICAgIG1hcEJhbm5lckdhbGxlcnkoXG4gICAgICAgIHByb3BzOiBhbnkgfCB1bmRlZmluZWRcbiAgICApOiBCYWJ5bG9uQmFubmVyR2FsbGVyeUkgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcHJldGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8ucHJldGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy5wcmV0aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICB0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy50aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy50aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy50YWcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgaG92ZXI6IHByb3BzPy50ZXh0cz8uaG92ZXIsXG4gICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnMocHJvcHM/LmJ1dHRvbnMpLFxuICAgICAgICAgICAgaW1hZ2VzOiB0aGlzLmdldEFycmF5SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcyxcbiAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgKSxcbiAgICAgICAgfSBhcyBCYWJ5bG9uQmFubmVyR2FsbGVyeUk7XG4gICAgfVxuXG4gICAgbWFwQmFubmVyTmV3c2xldHRlcihwcm9wczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvbkluZm9JbWdJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlLFxuICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICB0ZXh0OiBwcm9wcz8udGV4dHM/LnRleHQsXG4gICAgICAgICAgICBob3ZlcjogcHJvcHM/LnRleHRzPy5ob3ZlcixcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/LnBsYWNlaG9sZGVyLFxuICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHByb3BzPy5idXR0b25zKSxcbiAgICAgICAgICAgIGltYWdlOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXM/LlswXSA/P1xuICAgICAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2U/LlswXSxcbiAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgKSxcbiAgICAgICAgfSBhcyBCYWJ5bG9uSW5mb0ltZ0k7XG4gICAgfVxuXG4gICAgbWFwU2xpZGVyQ29sbDIoXG4gICAgICAgIHByb3BzOiBhbnkgfCB1bmRlZmluZWQsXG4gICAgICAgIHJpZ2h0U2lkZTogYm9vbGVhbiA9IGZhbHNlXG4gICAgKTogQmFieWxvblRvcFNsaWRlclYySSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiBwcm9wc1xuICAgICAgICAgICAgPyAoe1xuICAgICAgICAgICAgICAgICAgcmlnaHRTaWRlOiByaWdodFNpZGUsXG4gICAgICAgICAgICAgICAgICBidXR0b25zOiBVdGlscy5tYXBCdXR0b25zKHByb3BzPy5idXR0b25zKT8uWzBdLFxuICAgICAgICAgICAgICAgICAgaW1hZ2VzOiBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXM/Lm1hcChcbiAgICAgICAgICAgICAgICAgICAgICAoaXRlbTogSW1hZ2VSZXNwb25zZSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZXRpdGxlOiBpdGVtLnByZXRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0udGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJ0aXRsZTogaXRlbS5zdWJ0aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpdGVtLCBmYWxzZSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5rczogVXRpbHMubWFwQnV0dG9ucyhpdGVtPy5saW5rcyksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0pIGFzIEJhYnlsb25TbGlkZXIyQ29sSXRlbUlcbiAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICBsYWJlbHM6IHtcbiAgICAgICAgICAgICAgICAgICAgICB0aXRsZTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8udGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8udGl0bGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy50aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgICAgICAgICAgICBwcmV0aXRsZTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8ucHJldGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8ucHJldGl0bGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICB0YWdzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfSBhcyBCYWJ5bG9uVG9wU2xpZGVyVjJJKVxuICAgICAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgbWFwU2xpZGVyQ29sbChcbiAgICAgICAgcHJvcHM6IGFueSB8IHVuZGVmaW5lZCxcbiAgICAgICAgaWRlbnRpZmllcjogc3RyaW5nIHwgdW5kZWZpbmVkXG4gICAgKTogQmFieWxvblRvcFNsaWRlclYySSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGxldCBpbWFnZXM6IChzdHJpbmcgfCBCYWJ5bG9uSW1hZ2VJKVtdIHwgdW5kZWZpbmVkID0gW107XG4gICAgICAgIGlmIChwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXMpIHtcbiAgICAgICAgICAgIGltYWdlcyA9IHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8ubWFwKChpdGVtOiBJbWFnZVJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgaW1hZ2VSZXNwb25zZSA9IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGl0ZW0sIGZhbHNlKTtcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICBpZGVudGlmaWVyOiBpZGVudGlmaWVyLFxuICAgICAgICAgICAgICAgICAgICBwcmV0aXRsZTogaXRlbT8ucHJldGl0bGUsXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtPy50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgc3VidGl0bGU6IGl0ZW0/LnN1YnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogaXRlbT8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgICAgIHNyYzpcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVvZiBpbWFnZVJlc3BvbnNlID09PSAnb2JqZWN0J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gaW1hZ2VSZXNwb25zZS5zcmNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGltYWdlUmVzcG9uc2UsXG4gICAgICAgICAgICAgICAgICAgIGFsdDpcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVvZiBpbWFnZVJlc3BvbnNlID09PSAnb2JqZWN0J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gaW1hZ2VSZXNwb25zZS5hbHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgYnV0dG9uczogVXRpbHMubWFwQnV0dG9ucyhcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0/LmJ1dHRvbnM/LmZpbHRlcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYnRuOiBhbnkpID0+IGJ0bj8ubGlua1ZhbHVlICE9PSBudWxsIHx8IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICBsaW5rczogVXRpbHMubWFwQnV0dG9ucyhcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0/LmxpbmtzPy5maWx0ZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGJ0bjogYW55KSA9PiBidG4ubGlua1ZhbHVlICE9PSBudWxsIHx8IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIH0gYXMgQmFieWxvbkltYWdlSTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGlmIChwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VzKSB7XG4gICAgICAgICAgICBpbWFnZXMgPSBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VzPy5tYXAoKGl0ZW06IEltYWdlUmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBpbWFnZVJlc3BvbnNlID0gdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaXRlbSwgZmFsc2UpO1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIGlkZW50aWZpZXI6IGlkZW50aWZpZXIsXG4gICAgICAgICAgICAgICAgICAgIHByZXRpdGxlOiBpdGVtPy5wcmV0aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0/LnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICBzdWJ0aXRsZTogaXRlbT8uc3VidGl0bGUsXG4gICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBpdGVtPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICAgICAgc3JjOlxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZW9mIGltYWdlUmVzcG9uc2UgPT09ICdvYmplY3QnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBpbWFnZVJlc3BvbnNlLnNyY1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogaW1hZ2VSZXNwb25zZSxcbiAgICAgICAgICAgICAgICAgICAgYWx0OlxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZW9mIGltYWdlUmVzcG9uc2UgPT09ICdvYmplY3QnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBpbWFnZVJlc3BvbnNlLmFsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICBidXR0b25zOiBVdGlscy5tYXBCdXR0b25zKFxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbT8uYnV0dG9ucz8uZmlsdGVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChidG46IGFueSkgPT4gYnRuPy5saW5rVmFsdWUgIT09IG51bGwgfHwgdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgIGxpbmtzOiBVdGlscy5tYXBCdXR0b25zKFxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbT8uYnV0dG9ucz8uZmlsdGVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChidG46IGFueSkgPT4gYnRuPy5saW5rVmFsdWUgIT09IG51bGwgfHwgdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgfSBhcyBCYWJ5bG9uSW1hZ2VJO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHByb3BzXG4gICAgICAgICAgICA/ICh7XG4gICAgICAgICAgICAgICAgICBpbWFnZXM6IGltYWdlcyxcbiAgICAgICAgICAgICAgICAgIGxhYmVsczoge1xuICAgICAgICAgICAgICAgICAgICAgIHByZXRpdGxlOlxuICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy5wcmV0aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy5wcmV0aXRsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy50aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy50aXRsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIHRvcEJHOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8udG9wYmc/LlswXSxcbiAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgIGJvdHRvbUJHOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uYm90dG9tYmc/LlswXSxcbiAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgIHRvcENvbG9yOiBwcm9wcz8udGV4dHM/LnRvcENvbG9yLFxuICAgICAgICAgICAgICAgICAgYm90dG9tQ29sb3I6IHByb3BzPy50ZXh0cz8uQm90dG9tQ29sb3IsXG4gICAgICAgICAgICAgICAgICB0YWdzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIGlkZW50aWZpZXI6IGlkZW50aWZpZXIsXG4gICAgICAgICAgICAgIH0gYXMgQmFieWxvblRvcFNsaWRlclYySSlcbiAgICAgICAgICAgIDogdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIG1hcEl0ZW1zR3JpZChwcm9wczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvbkl0ZW1zR3JpZEkgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gcHJvcHNcbiAgICAgICAgICAgID8gKHtcbiAgICAgICAgICAgICAgICAgIGltYWdlczogcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzPy5tYXAoXG4gICAgICAgICAgICAgICAgICAgICAgKGl0ZW06IEltYWdlUmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaW1hZ2VSZXNwb25zZSA9IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmV0aXRsZTogaXRlbT8ucHJldGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaXRlbT8udGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJ0aXRsZTogaXRlbT8uc3VidGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogaXRlbT8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmM6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZW9mIGltYWdlUmVzcG9uc2UgPT09ICdvYmplY3QnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gaW1hZ2VSZXNwb25zZS5zcmNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBpbWFnZVJlc3BvbnNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVvZiBpbWFnZVJlc3BvbnNlID09PSAnb2JqZWN0J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IGltYWdlUmVzcG9uc2UuYWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uczogVXRpbHMubWFwQnV0dG9ucyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtPy5idXR0b25zPy5maWx0ZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChidG46IGFueSkgPT4gYnRuPy5saW5rVmFsdWUgIT09IG51bGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlua3M6IFV0aWxzLm1hcEJ1dHRvbnMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbT8ubGlua3M/LmZpbHRlcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGJ0bjogYW55KSA9PiBidG4ubGlua1ZhbHVlICE9PSBudWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSBhcyBCYWJ5bG9uSW1hZ2VJO1xuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICBsYWJlbHM6IHtcbiAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/LnRleHRzPy5wcmV0aXRsZSxcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICBidXR0b25zOiBVdGlscy5tYXBCdXR0b25zKFxuICAgICAgICAgICAgICAgICAgICAgIHByb3BzPy5idXR0b25zPy5maWx0ZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChidG46IGFueSkgPT4gYnRuPy5saW5rVmFsdWUgIT09IG51bGxcbiAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICB9IGFzIEJhYnlsb25JdGVtc0dyaWRJKVxuICAgICAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgbWFwUm9vbShwcm9wczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvbkluZm8yaW1nSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnMocHJvcHM/LmJ1dHRvbnMpLFxuICAgICAgICAgICAgdGV4dHM6IHtcbiAgICAgICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/LnRleHRzPy5wcmV0aXRsZSxcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICByb29tczogcHJvcHM/LnJvb21zPy5tYXAoXG4gICAgICAgICAgICAgICAgKGl0ZW06IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyhpdGVtPy5idXR0b25zKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtzOiBVdGlscy5tYXBCdXR0b25zKGl0ZW0/LmxpbmtzKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlczogaXRlbS5tdWx0aW1lZGlhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPy5maWx0ZXIoKGltZzogSW1hZ2VSZXNwb25zZSkgPT4gaW1nLmNvdmVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8ubWFwKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW1nOiBJbWFnZVJlc3BvbnNlKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmV0aXRsZTogaW1nLnByZXRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpbWcudGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VidGl0bGU6IGltZy5zdWJ0aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmM6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGltZyksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSBhcyBCYWJ5bG9uSW1hZ2VJXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRleHRzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogaXRlbS50ZXh0cz8ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogaXRlbS50ZXh0cz8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbDE6IGl0ZW0udGV4dHM/LmFkZGl0aW9uYWwxLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZGl0aW9uYWwyOiBpdGVtLnRleHRzPy5hZGRpdGlvbmFsMixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsMzogaXRlbS50ZXh0cz8uYWRkaXRpb25hbDMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbDQ6IGl0ZW0udGV4dHM/LmFkZGl0aW9uYWw0LFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZpY2VzOiBpdGVtPy5zZXJ2aWNlc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8uZmlsdGVyKChpdGVtOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0/LnR5cGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8uc3BsaXQoJywnKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLm1hcCgodjogc3RyaW5nKSA9PiB2LnRyaW0oKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5pbmNsdWRlcyhSb29tU2VydmljZVR5cGUuY2hhcmFjdGVyaXN0aWNzKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/Lm1hcCgoaXRlbTogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBpdGVtLm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb246IGBpY29uLSR7aXRlbS5jbGFzc31gLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKSxcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgQmFieWxvblJvb21JbmZvSVxuICAgICAgICAgICAgKSxcbiAgICAgICAgfSBhcyBCYWJ5bG9uSW5mbzJpbWdJO1xuICAgIH1cblxuICAgIG1hcFJvb21zR3JpZChwcm9wczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvblJvb21zR3JpZEkgfCB1bmRlZmluZWQge1xuICAgICAgICBsZXQgcm9vbXMgPSBwcm9wcz8ucm9vbXNcbiAgICAgICAgICAgID8ubWFwKFxuICAgICAgICAgICAgICAgIChpdGVtOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICBidXR0b25zOiBVdGlscy5tYXBCdXR0b25zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0/LmJ1dHRvbnM/LmZpbHRlcigoYnRuOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ0bj8ubGlua1R5cGU/LmluY2x1ZGVzKCdpbnRlcm5hbCcpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9yZGVyOiBpdGVtPy5vcmRlcixcbiAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtzOiBVdGlscy5tYXBCdXR0b25zKGl0ZW0/LmxpbmtzKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlczogaXRlbS5tdWx0aW1lZGlhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPy5maWx0ZXIoKGltZzogSW1hZ2VSZXNwb25zZSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1nLnRhZ3M/LnNvbWUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodGFnKSA9PiB0YWcubmFtZSA9PT0gJ1Jvb21zR3JpZCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/Lm1hcChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGltZzogSW1hZ2VSZXNwb25zZSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJldGl0bGU6IGltZy5wcmV0aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaW1nLnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YnRpdGxlOiBpbWcuc3VidGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1nLnRhZ3M/LnNvbWUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodGFnKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhZy5uYW1lID09PSAnUm9vbXNHcmlkJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IGltZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhZzogaW1nLnRhZ3M/LmZpbmQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0YWc6IGFueSkgPT4gdGFnPy5maWx0ZXJhYmxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKT8ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pIGFzIEJhYnlsb25JbWFnZUlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPy5zbGljZSgwLCAxKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRleHRzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogaXRlbS50ZXh0cz8ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogaXRlbS50ZXh0cz8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbDE6IGl0ZW0udGV4dHM/LmFkZGl0aW9uYWwxLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZGl0aW9uYWwyOiBpdGVtLnRleHRzPy5hZGRpdGlvbmFsMixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsMzogaXRlbS50ZXh0cz8uYWRkaXRpb25hbDMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbDQ6IGl0ZW0udGV4dHM/LmFkZGl0aW9uYWw0LFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZpY2VzOiBpdGVtPy5zZXJ2aWNlc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8uZmlsdGVyKChpdGVtOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0/LnR5cGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8uc3BsaXQoJywnKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLm1hcCgodjogc3RyaW5nKSA9PiB2LnRyaW0oKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5pbmNsdWRlcyhSb29tU2VydmljZVR5cGUuY2hhcmFjdGVyaXN0aWNzKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/Lm1hcCgoaXRlbTogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBpdGVtLm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb246IGBpY29uLSR7aXRlbS5jbGFzc31gLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKSxcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgQmFieWxvblJvb21JbmZvSVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnNvcnQoKGE6IEJhYnlsb25Sb29tc0xpc3RJdGVtLCBiOiBCYWJ5bG9uUm9vbXNMaXN0SXRlbSkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiAoYS5vcmRlciA/PyAwKSAtIChiLm9yZGVyID8/IDApO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnMocHJvcHM/LmJ1dHRvbnMpPy5bMF0sXG4gICAgICAgICAgICBsYWJlbHM6IHtcbiAgICAgICAgICAgICAgICBwcmV0aXRsZTpcbiAgICAgICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8ucHJldGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8ucHJldGl0bGVcbiAgICAgICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgICAgICB0aXRsZTpcbiAgICAgICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8udGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8udGl0bGVcbiAgICAgICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy50aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICByb29tczogcHJvcHM/LmJ1dHRvbnMgPyByb29tcy5zbGljZSgwLCA1KSA6IHJvb21zLFxuICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LnRhZyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0gYXMgQmFieWxvblJvb21zR3JpZEk7XG4gICAgfVxuXG4gICAgbWFwUm9vbXNTbGlkZXIocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25Sb29tc1NsaWRlckkgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHByb3BzPy5idXR0b25zKSxcbiAgICAgICAgICAgIHRleHRzOiB7XG4gICAgICAgICAgICAgICAgcHJldGl0bGVDb250YWluOiB7XG4gICAgICAgICAgICAgICAgICAgIHRhZzogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgICAgICBjb250ZW50OiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgdGl0bGVDb250YWluOiB7XG4gICAgICAgICAgICAgICAgICAgIHRhZzogcHJvcHM/LnRleHRzPy50aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgICAgICBjb250ZW50OiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcHJldGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8ucHJldGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy5wcmV0aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICB0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy50aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy50aXRsZT8uY29udGFpbixcblxuICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LnRhZyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICByb29tczogcHJvcHM/LnJvb21zXG4gICAgICAgICAgICAgICAgPy5maWx0ZXIoXG4gICAgICAgICAgICAgICAgICAgIChyb29tOiBhbnksIGluZGV4OiBudW1iZXIsIHNlbGY6IGFueVtdKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5maW5kSW5kZXgoKHIpID0+IHIuaWQgPT09IHJvb20uaWQpID09PSBpbmRleFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICA/Lm1hcChcbiAgICAgICAgICAgICAgICAgICAgKGl0ZW06IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uczogVXRpbHMubWFwQnV0dG9ucyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbT8uYnV0dG9ucz8uc2xpY2UoKS5yZXZlcnNlKClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtzOiBVdGlscy5tYXBCdXR0b25zKGl0ZW0/LmxpbmtzKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWFnZXM6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtPy5tdWx0aW1lZGlhPy5maW5kKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbWc6IGFueSkgPT4gaW1nPy5jb3ZlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSB8fCBpdGVtPy5tdWx0aW1lZGlhPy5bMF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dHM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogaXRlbS50ZXh0cz8ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGl0ZW0udGV4dHM/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsMTogaXRlbS50ZXh0cz8uYWRkaXRpb25hbDEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZGl0aW9uYWwyOiBpdGVtLnRleHRzPy5hZGRpdGlvbmFsMixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbDM6IGl0ZW0udGV4dHM/LmFkZGl0aW9uYWwzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsNDogaXRlbS50ZXh0cz8uYWRkaXRpb25hbDQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmRlcjogaXRlbT8ub3JkZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXF1aXBtZW50czpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbT8uc2VydmljZXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8uZmlsdGVyKChzdmM6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHR5cGVzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZW9mIHN2Yy50eXBlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBzdmMudHlwZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnNwbGl0KCcsJylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5tYXAoKHQ6IHN0cmluZykgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0LnRyaW0oKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBbXTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGhhc0NoYXJhY3RlcmlzdGljID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZXMuaW5jbHVkZXMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSb29tU2VydmljZVR5cGUuY2hhcmFjdGVyaXN0aWNzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaGFzQ2xhc3MgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhIXN2Yy5jbGFzcyAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdmMuY2xhc3MudG9TdHJpbmcoKS50cmltKCkgIT09ICcnO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGhhc0NoYXJhY3RlcmlzdGljICYmIGhhc0NsYXNzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8ubWFwKChzdmM6IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBzdmMubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uOiBgaWNvbi0ke3N2Yy5jbGFzc31gLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpID8/IFtdLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSkgYXMgQmFieWxvblJvb21JbmZvSVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuc29ydCgoYTogQmFieWxvblJvb21zTGlzdEl0ZW0sIGI6IEJhYnlsb25Sb29tc0xpc3RJdGVtKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoYS5vcmRlciA/PyAwKSAtIChiLm9yZGVyID8/IDApO1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICB9IGFzIEJhYnlsb25Sb29tc1NsaWRlckk7XG4gICAgfVxuXG4gICAgbWFwT2ZmZXJTbGlkZXIocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25PZmZlclNsaWRlckkgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGUsXG4gICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgIGJhY2tncm91bmRJbWFnZTogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmJhY2tncm91bmRpbWFnZW5lcz8uWzBdIHx8XG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5iYWNrZ3JvdW5kaW1hZ2U/LlswXSxcbiAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIG9mZmVyczogcHJvcHM/Lm9mZmVycz8ubWFwKFxuICAgICAgICAgICAgICAgIChpdGVtOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbkZyb206IGl0ZW0/LmFwcGxpY2F0aW9uRnJvbSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uVG86IGl0ZW0/LmFwcGxpY2F0aW9uVG8sXG4gICAgICAgICAgICAgICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnMoaXRlbT8uYnV0dG9ucyksXG4gICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW5jeTogaXRlbT8uY3VycmVuY3ksXG4gICAgICAgICAgICAgICAgICAgICAgICBkaXNjb3VudDogaXRlbT8uZGlzY291bnQsXG4gICAgICAgICAgICAgICAgICAgICAgICBwcmljZTogaXRlbT8ucHJpY2UsXG4gICAgICAgICAgICAgICAgICAgICAgICBsaW5rczogVXRpbHMubWFwQnV0dG9ucyhpdGVtPy5saW5rcyksXG4gICAgICAgICAgICAgICAgICAgICAgICBpbWFnZXM6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0/Lm11bHRpbWVkaWE/LlswXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IGl0ZW0/Lm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICB0ZXh0czoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtLnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJ0aXRsZTogaXRlbS50ZXh0cz8uc3VidGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGl0ZW0udGV4dHM/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZGl0aW9uYWwxOiBpdGVtLnRleHRzPy5hZGRpdGlvbmFsMSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsMjogaXRlbS50ZXh0cz8uYWRkaXRpb25hbDIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbDM6IGl0ZW0udGV4dHM/LmFkZGl0aW9uYWwzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmRpdGlvbnM6IGl0ZW0udGV4dHM/LmNvbmRpdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBpdGVtLnRleHRzPy5yZXNlcnZhdGlvblVybCxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gYXMgQmFieWxvblRleHRJbmZvSSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVybDogaXRlbT8udXJsLFxuICAgICAgICAgICAgICAgICAgICAgICAgdmlzaWJsZUZyb206IGl0ZW0/LnZpc2libGVGcm9tLFxuICAgICAgICAgICAgICAgICAgICAgICAgdmlzaWJsZVRvOiBpdGVtPy52aXNpYmxlVG8sXG4gICAgICAgICAgICAgICAgICAgIH0pIGFzIEJhYnlsb25PZmZlcklcbiAgICAgICAgICAgICksXG4gICAgICAgIH0gYXMgQmFieWxvbk9mZmVyU2xpZGVySTtcbiAgICB9XG4gICAgLy8tLS0tIExBWU9VVCBDT01QT05FTlRTIEVORC0tLS0vL1xuXG4gICAgbWFwVGhhbmtzKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uVGhhbmtzSSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aXRsZTogcHJvcHMudGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IHByb3BzLnRleHRzPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcy50ZXh0cz8ucHJldGl0bGUsXG4gICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnMocHJvcHMuYnV0dG9ucyk/LlswXSxcbiAgICAgICAgfSBhcyBCYWJ5bG9uVGhhbmtzSTtcbiAgICB9XG5cbiAgICBtYXBDb250YWN0Rm9ybShcbiAgICAgICAgcHJvcHM6IGFueSB8IHVuZGVmaW5lZCxcbiAgICAgICAgbmRQcm9wczogYW55IHwgdW5kZWZpbmVkLFxuICAgICAgICBuZFByb3BzQ29uc3VsdDogYW55IHwgdW5kZWZpbmVkXG4gICAgKTogQmFieWxvbkNvbnRhY3RGb3JtSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBwcmV0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy5wcmV0aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnByZXRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8udGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8uZGVzY3JpcHRpb24gPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy5kZXNjcmlwdGlvblxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8uZGVzY3JpcHRpb24/LmNvbnRhaW4sXG4gICAgICAgICAgICBzdWJ0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy5zdWJ0aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnN1YnRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy5zdWJ0aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IHByb3BzPy50ZXh0cz8uZGVzY3JpcHRpb24/LnRhZyxcbiAgICAgICAgICAgICAgICBzdWJ0aXRsZTogcHJvcHM/LnRleHRzPy5zdWJ0aXRsZT8udGFnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRleHRzOiBwcm9wcz8udGV4dHMsXG4gICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnMocHJvcHM/LmJ1dHRvbnMpPy5bMF0sXG4gICAgICAgICAgICB0ZXh0YXJlYToge1xuICAgICAgICAgICAgICAgIGlkOiAnbWVuc2FqZScsXG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8uaW5wdXRNZXNzYWdlLFxuICAgICAgICAgICAgICAgIG5hbWU6IFV0aWxzLm5vcm1hbGl6ZVRleHQocHJvcHM/LnRleHRzPy5pbnB1dE1lc3NhZ2UpLFxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/LmlucHV0TWVzc2FnZVBsYWNlSG9sZGVyLFxuICAgICAgICAgICAgICAgIHZhbHVlOiAnJyxcbiAgICAgICAgICAgICAgICB2YWxpZGF0b3JzOiBbVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAgICAgICAgICAgZXJyb3I6IHByb3BzPy50ZXh0cz8uZXJyb3JSZXF1aXJlZCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBjb25kaXRpb25zOiBwcm9wcz8udGV4dHM/LmNvbmRpdGlvbnMsXG4gICAgICAgICAgICBjb25kaXRpb25zMjogcHJvcHM/LnRleHRzPy5jb25kaXRpb25zMixcbiAgICAgICAgICAgIGRyb3Bkb3duOiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8uZHJvcGRvd25UaXRsZSxcbiAgICAgICAgICAgICAgICBvcHRpb25zOiBuZFByb3BzQ29uc3VsdD8ubWFwKFxuICAgICAgICAgICAgICAgICAgICAocHJvcDogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdWx0VHlwZUlkOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wLmNvbnN1bHRfdHlwZV9pZCA/PyBwcm9wLmNvbnN1bHRUeXBlSWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZTogcHJvcC5pZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBwcm9wLm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSBhcyBEcm9wZG93bk9wdGlvblxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8uZHJvcGRvd25QbGFjZWhvbGRlcixcbiAgICAgICAgICAgICAgICBlcnJvcjogcHJvcHM/LnRleHRzPy5lcnJvclJlcXVpcmVkLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGhvdGVsRHJvcDpcbiAgICAgICAgICAgICAgICBwcm9wcz8uaG90ZWxzPy5sZW5ndGggPiAxXG4gICAgICAgICAgICAgICAgICAgID8ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy5ob3RlbERyb3BUaXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uczogcHJvcHM/LmhvdGVscz8ubWFwKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByb3A6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlOiBwcm9wLmlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBwcm9wLm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkgYXMgRHJvcGRvd25PcHRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8uaG90ZWxEcm9wUGxhY2Vob2xkZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yOiBwcm9wcz8udGV4dHM/LmVycm9yUmVxdWlyZWQsXG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIGltYWdlOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXM/LlswXSxcbiAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgKSBhcyBzdHJpbmcsXG4gICAgICAgICAgICBpbnB1dHM6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiAnbm9tYnJlJyxcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8uaW5wdXROYW1lLFxuICAgICAgICAgICAgICAgICAgICBuYW1lOiBVdGlscy5ub3JtYWxpemVUZXh0KHByb3BzPy50ZXh0cz8uaW5wdXROYW1lKSxcbiAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8uaW5wdXROYW1lUGxhY2VIb2xkZXIsXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiAnJyxcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgICAgICAgICAgICAgICBlcnJvcjogcHJvcHM/LnRleHRzPy5lcnJvclJlcXVpcmVkLFxuICAgICAgICAgICAgICAgICAgICB2YWxpZGF0b3JzOiBbVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAgICAgICAgICAgICAgIHZhbGlkOiB0cnVlLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogJ3N1cm5hbWUnLFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTpcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzPy50ZXh0cz8uaW5wdXRTdXJuYW1lcyA/P1xuICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy5pbnB1dGxhc3RuYW1lLFxuICAgICAgICAgICAgICAgICAgICBuYW1lOiBVdGlscy5ub3JtYWxpemVUZXh0KFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy5pbnB1dFN1cm5hbWVzID8/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy5pbnB1dGxhc3RuYW1lXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOlxuICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy5pbnB1dFN1cm5hbWVzUGxhY2VIb2xkZXIgPz9cbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzPy50ZXh0cz8uaW5wdXRsYXN0bmFtZVBsYWNlSG9sZGVyLFxuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogJycsXG4gICAgICAgICAgICAgICAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgICAgICAgICAgICAgICAgZXJyb3I6IHByb3BzPy50ZXh0cz8uZXJyb3JSZXF1aXJlZCxcbiAgICAgICAgICAgICAgICAgICAgdmFsaWRhdG9yczogW1ZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgICAgICAgICAgICAgICB2YWxpZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6ICdlbWFpbCcsXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LmlucHV0RW1haWwsXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IFV0aWxzLm5vcm1hbGl6ZVRleHQocHJvcHM/LnRleHRzPy5pbnB1dEVtYWlsKSxcbiAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8uaW5wdXRFbWFpbFBsYWNlSG9sZGVyLFxuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogJycsXG4gICAgICAgICAgICAgICAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgICAgICAgICAgICAgICAgZXJyb3I6IHByb3BzPy50ZXh0cz8uZXJyb3JFbWFpbCxcbiAgICAgICAgICAgICAgICAgICAgdmFsaWRhdG9yczogW1ZhbGlkYXRvcnMuZW1haWwsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgICAgICAgICAgICAgICB2YWxpZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6ICdwaG9uZScsXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LmlucHV0UGhvbmUsXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IFV0aWxzLm5vcm1hbGl6ZVRleHQocHJvcHM/LnRleHRzPy5pbnB1dFBob25lKSxcbiAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8uaW5wdXRQaG9uZVBsYWNlSG9sZGVyLFxuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogJycsXG4gICAgICAgICAgICAgICAgICAgIHR5cGU6ICd0ZWwnLFxuICAgICAgICAgICAgICAgICAgICBlcnJvcjogcHJvcHM/LnRleHRzPy5lcnJvclBob25lLFxuICAgICAgICAgICAgICAgICAgICB2YWxpZGF0b3JzOiBbVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAgICAgICAgICAgICAgIHZhbGlkOiB0cnVlLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdIGFzIEJhYnlsb25JbnB1dElbXSxcbiAgICAgICAgICAgIGluZm86IHtcbiAgICAgICAgICAgICAgICBhZGRyZXNzOiB7XG4gICAgICAgICAgICAgICAgICAgIGljb246ICdpY29uLScgKyBuZFByb3BzPy50ZXh0cz8uYWRkcmVzc0ljb24sXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBuZFByb3BzPy50ZXh0cz8uYWRkcmVzc1RpdGxlLFxuICAgICAgICAgICAgICAgICAgICB0ZXh0OiBuZFByb3BzPy5saW5rcz8uYWRkcmVzcz8uWzBdPy5bMF0/LmxhYmVsLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgZW1haWw6IHtcbiAgICAgICAgICAgICAgICAgICAgaWNvbjogJ2ljb24tJyArIG5kUHJvcHM/LnRleHRzPy5lbWFpbEljb24sXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBuZFByb3BzPy50ZXh0cz8uZW1haWxUaXRsZSxcbiAgICAgICAgICAgICAgICAgICAgbGlua3M6IFV0aWxzLm1hcEJ1dHRvbnMobmRQcm9wcz8ubGlua3M/LmVtYWlsPy5bMF0pPy5tYXAoXG4gICAgICAgICAgICAgICAgICAgICAgICAoYnRuKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLmJ0bixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBgbWFpbHRvOiR7YnRuPy51cmx9bGAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkgYXMgQmFieWxvbkJ1dHRvbklcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHBob25lOiB7XG4gICAgICAgICAgICAgICAgICAgIGljb246ICdpY29uLScgKyBuZFByb3BzPy50ZXh0cz8ucGhvbmVJY29uLFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogbmRQcm9wcz8udGV4dHM/LnBob25lVGl0bGUsXG4gICAgICAgICAgICAgICAgICAgIGxpbmtzOiBVdGlscy5tYXBCdXR0b25zKG5kUHJvcHM/LmxpbmtzPy5waG9uZT8uWzBdKT8ubWFwKFxuICAgICAgICAgICAgICAgICAgICAgICAgKGJ0bikgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5idG4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogYHBob25lOiR7YnRuPy51cmx9bGAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkgYXMgQmFieWxvbkJ1dHRvbklcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSBhcyBCYWJ5bG9uQ29udGFjdEZvcm1JO1xuICAgIH1cblxuICAgIG1hcENvbnRhY3RBZGRyZXNzKFxuICAgICAgICBwcm9wczogYW55IHwgdW5kZWZpbmVkXG4gICAgKTogQmFieWxvbkNvbnRhY3RBZGRyZXNzSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGNvbnN0IGFkZHJlc3NTb3VyY2UgPSBwcm9wcz8uaG90ZWxBZGRyZXNzID8/IHByb3BzPy5hZGRyZXNzPy5bMF07XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBpbmZvOiB7XG4gICAgICAgICAgICAgICAgYWRkcmVzczoge1xuICAgICAgICAgICAgICAgICAgICBpY29uOiAnaWNvbi0nICsgcHJvcHM/LnRleHRzPy5hZGRyZXNzSWNvbixcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy5hZGRyZXNzVGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LmFkZHJlc3NUaXRsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy5hZGRyZXNzVGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICAgICAgICAgIHRleHQ6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFkZHJlc3NTb3VyY2U/LmFkZHJlc3MsXG4gICAgICAgICAgICAgICAgICAgICAgICBbYWRkcmVzc1NvdXJjZT8uY3AsIGFkZHJlc3NTb3VyY2U/LmNpdHldXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZpbHRlcihCb29sZWFuKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5qb2luKCcgJyksXG4gICAgICAgICAgICAgICAgICAgICAgICBhZGRyZXNzU291cmNlPy5sb2NhbGl0eSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFthZGRyZXNzU291cmNlPy5wcm92aW5jZSwgYWRkcmVzc1NvdXJjZT8uY291bnRyeV1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZmlsdGVyKEJvb2xlYW4pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLmpvaW4oJywgJyksXG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgICAgIC5maWx0ZXIoQm9vbGVhbilcbiAgICAgICAgICAgICAgICAgICAgICAgIC5tYXAoKHBhcnQsIGlkeCwgYXJyKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlkeCA9PT0gMCkgcmV0dXJuIHBhcnQgKyAnPGJyPic7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlkeCA9PT0gMSAmJiBhcnJbMl0pIHJldHVybiBwYXJ0ICsgJywgJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaWR4ID09PSAxKSByZXR1cm4gcGFydCArICc8YnI+JztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaWR4ID09PSAyKSByZXR1cm4gcGFydCArICc8YnI+JztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcGFydDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAuam9pbignJyksXG4gICAgICAgICAgICAgICAgICAgIGxpbmtzOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBhZGRyZXNzU291cmNlPy5saW5rLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtUeXBlOiAnZXh0ZXJuYWwnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBhZGRyZXNzU291cmNlPy5hZGRyZXNzLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgXSBhcyAoeyBzbWFsbFRleHQ/OiBzdHJpbmcgfSAmIEJhYnlsb25CdXR0b25JKVtdLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgZW1haWw6IHtcbiAgICAgICAgICAgICAgICAgICAgaWNvbjogJ2ljb24tJyArIHByb3BzPy50ZXh0cz8uZW1haWxJY29uLFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTpcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LmVtYWlsVGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LmVtYWlsVGl0bGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8uZW1haWxUaXRsZT8uY29udGFpbiB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkcmVzc1NvdXJjZT8uZW1haWwsXG4gICAgICAgICAgICAgICAgICAgIGxpbmtzOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBgbWFpbHRvOiR7YWRkcmVzc1NvdXJjZT8uZW1haWx9YCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5rVHlwZTogJ2V4dGVybmFsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogYWRkcmVzc1NvdXJjZT8uZW1haWwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc21hbGxUZXh0OiBhZGRyZXNzU291cmNlPy5lbWFpbCxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIF0gYXMgKHsgc21hbGxUZXh0Pzogc3RyaW5nIH0gJiBCYWJ5bG9uQnV0dG9uSSlbXSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHBob25lOiB7XG4gICAgICAgICAgICAgICAgICAgIGljb246ICdpY29uLScgKyBwcm9wcz8udGV4dHM/LnJlc2VydmF0aW9uc0ljb24sXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8ucmVzZXJ2YXRpb25zVGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnJlc2VydmF0aW9uc1RpdGxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnJlc2VydmF0aW9uc1RpdGxlPy5jb250YWluIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRyZXNzU291cmNlPy5waG9uZSxcbiAgICAgICAgICAgICAgICAgICAgbGlua3M6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6IGB0ZWw6JHthZGRyZXNzU291cmNlPy5waG9uZX1gLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtUeXBlOiAnZXh0ZXJuYWwnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBhZGRyZXNzU291cmNlPy5waG9uZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbWFsbFRleHQ6IGFkZHJlc3NTb3VyY2U/LnBob25lLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgXSBhcyAoeyBzbWFsbFRleHQ/OiBzdHJpbmcgfSAmIEJhYnlsb25CdXR0b25JKVtdLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIG1hcENvbnRhY3RNYXAocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25Db250YWN0TWFwYUkgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgY29udGVudFVybDogcHJvcHM/LnRleHRzPy5waG9uZUljb24sXG4gICAgICAgICAgICBtYXBJbWFnZTogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzPy5bMF0sXG4gICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnMocHJvcHM/LmJ1dHRvbnMpPy5bMF0sXG4gICAgICAgICAgICBtYXBJbWFnZU1vYmlsZTogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzbW9iaWxlPy5bMF0sXG4gICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICksXG4gICAgICAgIH0gYXMgQmFieWxvbkNvbnRhY3RNYXBhSTtcbiAgICB9XG5cbiAgICBtYXBDb250YWN0SG93KHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uQ29udGFjdEhvd0kgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/LnRleHRzPy5wcmV0aXRsZSxcbiAgICAgICAgICAgIGl0ZW1zOiBwcm9wcz8uVmVudGFqYXM/Lm1hcChcbiAgICAgICAgICAgICAgICAoaXRlbTogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0udGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogaXRlbS50ZXh0LFxuICAgICAgICAgICAgICAgICAgICAgICAgaWNvbjogYGljb24tJHtpdGVtLmljb259YCxcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgQmFieWxvbkNvbnRhY3RNYXBJdGVtXG4gICAgICAgICAgICApLFxuICAgICAgICB9IGFzIEJhYnlsb25Db250YWN0SG93STtcbiAgICB9XG5cbiAgICBtYXBXZWJtYXAocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25XZWJtYXBJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGxpbmtzOiAoXG4gICAgICAgICAgICAgICAgcHJvcHM/LnBhZ2VzPy5tYXAoXG4gICAgICAgICAgICAgICAgICAgIChsaW5rOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBsaW5rLm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBsaW5rLnVybCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5rVHlwZTogJ2ludGVybmFsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pIGFzIEJhYnlsb25CdXR0b25JXG4gICAgICAgICAgICAgICAgKSBhcyBCYWJ5bG9uQnV0dG9uSVtdXG4gICAgICAgICAgICApLmZpbHRlcihcbiAgICAgICAgICAgICAgICAobGluaykgPT5cbiAgICAgICAgICAgICAgICAgICAgbGluay51cmw/LnNwbGl0KCcvJylbMV0gPT09XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2l0ZVN2Yy5zZWxlY3RlZExhbmd1YWdlSW5zdGFudD8ubG9jYXRlXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8udGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy50aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICBwcmV0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy5wcmV0aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnByZXRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIGltYWdlOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXM/LlswXSxcbiAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgKSBhcyBzdHJpbmcsXG4gICAgICAgICAgICB0YWdzOiB7XG4gICAgICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8udGFnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBtYXBMZWdhbChwcm9wczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvbkxlZ2FsSSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBwcmV0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy5wcmV0aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnByZXRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8udGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8uZGVzY3JpcHRpb24gPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy5kZXNjcmlwdGlvblxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8uZGVzY3JpcHRpb24/LmNvbnRhaW4sXG4gICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8uWzBdLFxuICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogcHJvcHM/LnRleHRzPy5kZXNjcmlwdGlvbj8udGFnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRleHRDb2xvcnM6IHtcbiAgICAgICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogcHJvcHM/LnRleHRzPy5kZXNjcmlwdGlvbj8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0gYXMgQmFieWxvbkxlZ2FsSTtcbiAgICB9XG5cbiAgICBtYXBCcmVhZGNydW1icyhwcm9wczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvbkJyZWFkY3J1bWJJIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGxpbmtzOiAocHJvcHM/Lml0ZW1zIGFzIGFueVtdKVxuICAgICAgICAgICAgICAgID8uc29ydCgoYSwgYikgPT4gYSAtIGIpXG4gICAgICAgICAgICAgICAgPy5tYXAoXG4gICAgICAgICAgICAgICAgICAgIChpdGVtKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogaXRlbT8ubGFiZWwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlua1R5cGU6ICdpbnRlcm5hbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBpdGVtPy51cmxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBpdGVtPy51cmw/LmNoYXJBdChpdGVtPy51cmw/Lmxlbmd0aCAtIDEpID09PVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcvJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBpdGVtPy51cmw/LnNsaWNlKDAsIC0xKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBpdGVtPy51cmxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSBhcyBCYWJ5bG9uQnV0dG9uSVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgIH0gYXMgQmFieWxvbkJyZWFkY3J1bWJJO1xuICAgIH1cblxuICAgIG1hcFJvb21zQ29scyhwcm9wczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvblJvb21zQ29sc0kge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZmlsdGVyczogcHJvcHM/LmZpbHRlcnM/Lm1hcCgoZmlsdGVyOiBhbnkpID0+ICh7XG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IGZpbHRlci5uYW1lLFxuICAgICAgICAgICAgICAgIG9wdGlvbnM6IGZpbHRlcj8udmFsdWVzPy5tYXAoKG9wdGlvbjogc3RyaW5nKSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICBjb2RlOiBvcHRpb24sXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IG9wdGlvbixcbiAgICAgICAgICAgICAgICB9KSksXG4gICAgICAgICAgICAgICAgdGl0bGU6IGZpbHRlci5uYW1lLFxuICAgICAgICAgICAgICAgIHNtYWxsdGl0bGU6IGZpbHRlci5zbWFsbHRpdGxlLFxuICAgICAgICAgICAgICAgIGZpbHRlcklkOiBmaWx0ZXIuZmlsdGVySWQsXG4gICAgICAgICAgICB9KSkgYXMgQmFieWxvbkRyb3Bkb3duSVtdLFxuICAgICAgICAgICAgc3RGaWx0ZXJzOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBuZEZpbHRlcnM6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIHByZXRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnByZXRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8ucHJldGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8udGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy50aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICB0YWdzOiB7XG4gICAgICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8udGFnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGl0ZW1zOiBwcm9wcz8ucm9vbXNcbiAgICAgICAgICAgICAgICA/Lm1hcChcbiAgICAgICAgICAgICAgICAgICAgKGl0ZW06IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVkcm9vbUZpbHRlcklkOiBpdGVtPy50ZXh0cz8uYmVkcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyYWN0ZXJpc3RpY3NGaWx0ZXJJZDogMCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5rczogVXRpbHMubWFwQnV0dG9ucyhpdGVtLmxpbmtzKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBidXR0b25zOiBVdGlscy5tYXBCdXR0b25zKGl0ZW0uYnV0dG9ucyksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0udGV4dHM/Lm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJldGl0bGU6IGl0ZW0udGV4dHM/LmFkZGl0aW9uYWwxLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaWNlOiBpdGVtPy5wcmljZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmljZVRleHQ6IGl0ZW0udGV4dHM/LmFkZGl0aW9uYWwyLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZGVyOiBpdGVtPy5vcmRlcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcXVpcG1lbnQ6IGl0ZW0/LnNlcnZpY2VzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8uZmlsdGVyKChpdGVtOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtPy50eXBlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPy5zcGxpdCgnLCcpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLm1hcCgodjogc3RyaW5nKSA9PiB2LnRyaW0oKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuaW5jbHVkZXMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJvb21TZXJ2aWNlVHlwZS5jaGFyYWN0ZXJpc3RpY3NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPy5tYXAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaXRlbTogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb246IGBpY29uLSR7aXRlbS5jbGFzc31gLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogaXRlbS5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pIGFzIEJhYnlsb25Sb29tc0xpc3RFcXVpcG1lbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLm11bHRpbWVkaWE/LmZpbmQoKGltZzogSW1hZ2VSZXNwb25zZSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltZy50YWdzPy5zb21lKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0YWcpID0+IHRhZy5uYW1lID09PSAnUm9vbXNDb2xzJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gaW1nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSA/PyBpdGVtLm11bHRpbWVkaWE/LlswXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlczogdGhpcy5nZXRBcnJheUltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5tdWx0aW1lZGlhLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSBhcyBCYWJ5bG9uUm9vbXNMaXN0SXRlbVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuc29ydCgoYTogQmFieWxvblJvb21zTGlzdEl0ZW0sIGI6IEJhYnlsb25Sb29tc0xpc3RJdGVtKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoYS5vcmRlciA/PyAwKSAtIChiLm9yZGVyID8/IDApO1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICB9IGFzIEJhYnlsb25Sb29tc0NvbHNJO1xuICAgIH1cblxuICAgIG1hcEZlYXR1cmVzU2xpZGVyKFxuICAgICAgICBwcm9wczogYW55IHwgdW5kZWZpbmVkXG4gICAgKTogQmFieWxvbkZlYXR1cmVzU2xpZGVySSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy50aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy50aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIHByZXRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnByZXRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8ucHJldGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LnRhZyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBpdGVtczogcHJvcHM/LlZlbnRhamFzPy5tYXAoXG4gICAgICAgICAgICAgICAgKGl0ZW06IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtLnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGl0ZW0udGV4dCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGljb246IGBpY29uLSR7aXRlbS5pY29ufWAsXG4gICAgICAgICAgICAgICAgICAgIH0pIGFzIEJhYnlsb25GZWF0dXJlc1NsaWRlckl0ZW1cbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnMocHJvcHM/LmJ1dHRvbnMpPy5bMF0sXG4gICAgICAgIH0gYXMgQmFieWxvbkZlYXR1cmVzU2xpZGVySTtcbiAgICB9XG5cbiAgICBtYXBCYW5uZXJJbmZvKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uQmFubmVySW5mb0kge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6IHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8uWzBdPy50aXRsZSxcbiAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXM/LlswXT8ucHJldGl0bGUsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzPy5bMF0/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgdmlkZW86IHByb3BzPy50ZXh0cz8uWydWaWRlby1saW5rJ10sXG4gICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnMocHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzPy5bMF0/LmJ1dHRvbnMpLFxuICAgICAgICAgICAgaW1hZ2U6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8uWzBdLFxuICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICApLFxuICAgICAgICB9IGFzIEJhYnlsb25CYW5uZXJJbmZvSTtcbiAgICB9XG5cbiAgICBtYXBSb29tRGV0YWlsKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uUm9vbURldGFpbEkgfCB1bmRlZmluZWQge1xuICAgICAgICBpZiAoIXByb3BzPy5yb29tKSB7XG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHsgdGV4dHMsIG11bHRpbWVkaWEsIGJ1dHRvbnMgfSA9IHByb3BzPy5yb29tO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6IHRleHRzPy5uYW1lLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICAgICAgICAgdGV4dHM/LmFkZGl0aW9uYWw0ICE9PSB1bmRlZmluZWQgJiZcbiAgICAgICAgICAgICAgICB0ZXh0cz8uYWRkaXRpb25hbDQgIT09IG51bGwgJiZcbiAgICAgICAgICAgICAgICB0ZXh0cz8uYWRkaXRpb25hbDQgIT09ICcnXG4gICAgICAgICAgICAgICAgICAgID8gdGV4dHM/LmFkZGl0aW9uYWw0XG4gICAgICAgICAgICAgICAgICAgIDogdGV4dHM/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgcHJldGl0bGU6IHRleHRzPy5hZGRpdGlvbmFsMSxcbiAgICAgICAgICAgIGVxdWlwbWVudFRpdGxlOiB0ZXh0cz8uYWRkaXRpb25hbDIsXG4gICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnMoYnV0dG9ucyk/LlswXSxcbiAgICAgICAgICAgIGl0ZW1zOiBwcm9wcy5yb29tPy5zZXJ2aWNlc1xuICAgICAgICAgICAgICAgID8uZmlsdGVyKChpdGVtOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0/LnR5cGVcbiAgICAgICAgICAgICAgICAgICAgICAgID8uc3BsaXQoJywnKVxuICAgICAgICAgICAgICAgICAgICAgICAgLm1hcCgodjogc3RyaW5nKSA9PiB2LnRyaW0oKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIC5pbmNsdWRlcyhSb29tU2VydmljZVR5cGUuRXF1aXBtZW50KVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAubWFwKChpdGVtOiBhbnkpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtPy5uYW1lLFxuICAgICAgICAgICAgICAgICAgICBpY29uOiBgaWNvbi0ke2l0ZW0/LmNsYXNzfWAsXG4gICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBpdGVtPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICB9KSkgYXMgQmFieWxvbkVxdWlwbWVudEl0ZW1bXSxcbiAgICAgICAgICAgIHNob3dMZXNzOiBwcm9wcz8udGV4dHM/LnNob3dMZXNzLFxuICAgICAgICAgICAgc2hvd01vcmU6IHByb3BzPy50ZXh0cz8uc2hvd01vcmUsXG4gICAgICAgIH0gYXMgQmFieWxvblJvb21EZXRhaWxJO1xuICAgIH1cblxuICAgIG1hcFRvcFNsaWRlclRodW1icyhwcm9wczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvblRvcFNsaWRlclRodW1ic0kge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICBmcm9tOiBwcm9wcz8udGV4dHM/LmZyb20sXG4gICAgICAgICAgICBwcmljZTogcHJvcHM/LnRleHRzPy5wcmljZSxcbiAgICAgICAgICAgIGN1cnJlbmN5OiBwcm9wcz8udGV4dHM/LmN1cnJlbmN5LFxuICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHByb3BzLmJ1dHRvbnMpPy5bMF0sXG4gICAgICAgICAgICBpbWFnZTogcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbj8ubWFwKChpdGVtOiBJbWFnZVJlc3BvbnNlKSA9PiAoe1xuICAgICAgICAgICAgICAgIHNyYzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaXRlbSksXG4gICAgICAgICAgICB9KSksXG4gICAgICAgIH0gYXMgQmFieWxvblRvcFNsaWRlclRodW1ic0k7XG4gICAgfVxuXG4gICAgbWFwUm9vbXNMaXN0KHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uUm9vbXNMaXN0SSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBzdEZpbHRlcnM6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIG5kRmlsdGVyczogdW5kZWZpbmVkLFxuICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/LnRleHRzPy5wcmV0aXRsZSxcbiAgICAgICAgICAgIGl0ZW1zOiBwcm9wcz8ucm9vbXNcbiAgICAgICAgICAgICAgICA/Lm1hcChcbiAgICAgICAgICAgICAgICAgICAgKGl0ZW06IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVkcm9vbUZpbHRlcklkOiAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJhY3RlcmlzdGljc0ZpbHRlcklkOiAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtzOiBVdGlscy5tYXBCdXR0b25zKGl0ZW0/LmxpbmtzKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBidXR0b25zOiBVdGlscy5tYXBCdXR0b25zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtPy5idXR0b25zPy5zbGljZSgpLnJldmVyc2UoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0/LnRleHRzPy5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZXRpdGxlOiBpdGVtPy50ZXh0cz8uYWRkaXRpb25hbDEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGl0ZW0/LnRleHRzPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmljZTogaXRlbT8ucHJpY2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpY2VUZXh0OiBpdGVtPy50ZXh0cz8uYWRkaXRpb25hbDIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXF1aXBtZW50OiBpdGVtPy5zZXJ2aWNlc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/LmZpbHRlcigoaXRlbTogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbT8udHlwZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8uc3BsaXQoJywnKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5tYXAoKHY6IHN0cmluZykgPT4gdi50cmltKCkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmluY2x1ZGVzKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSb29tU2VydmljZVR5cGUuY2hhcmFjdGVyaXN0aWNzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8ubWFwKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGl0ZW06IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uOiBgaWNvbi0ke2l0ZW0uY2xhc3N9YCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGl0ZW0ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSBhcyBCYWJ5bG9uUm9vbXNMaXN0RXF1aXBtZW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5tdWx0aW1lZGlhPy5maW5kKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGltZzogYW55KSA9PiBpbWc/LmNvdmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgfHwgaXRlbT8ubXVsdGltZWRpYT8uWzBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2VzOiB0aGlzLmdldEFycmF5SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLm11bHRpbWVkaWEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmRlcjogaXRlbT8ub3JkZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSBhcyBCYWJ5bG9uUm9vbXNMaXN0SXRlbVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuc29ydCgoYTogQmFieWxvblJvb21zTGlzdEl0ZW0sIGI6IEJhYnlsb25Sb29tc0xpc3RJdGVtKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoYS5vcmRlciA/PyAwKSAtIChiLm9yZGVyID8/IDApO1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICB9IGFzIEJhYnlsb25Sb29tc0NvbHNJO1xuICAgIH1cblxuICAgIG1hcENvbWluZ1Nvb24ocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25Db21pbmdTb29uSSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBpbWFnZXM6IHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8ubWFwKFxuICAgICAgICAgICAgICAgIChpbWc6IEltYWdlUmVzcG9uc2UpID0+XG4gICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICBzcmM6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGltZyksXG4gICAgICAgICAgICAgICAgICAgIH0pIGFzIEJhYnlsb25JbWFnZUlcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBsb2dvOiBwcm9wcz8ubXVsdGltZWRpYT8ubG9nbz8ubWFwKFxuICAgICAgICAgICAgICAgIChpbWc6IEltYWdlUmVzcG9uc2UpID0+XG4gICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICBzcmM6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGltZyksXG4gICAgICAgICAgICAgICAgICAgIH0pIGFzIEJhYnlsb25JbWFnZUlcbiAgICAgICAgICAgIClbMF0sXG4gICAgICAgICAgICB0ZXh0czogcHJvcHM/LnRleHRzLFxuICAgICAgICAgICAgc29jaWFsTWVkaWE6IHByb3BzPy5zb2NpYWxNZWRpYSxcbiAgICAgICAgICAgIGxpbms6IFV0aWxzLm1hcEJ1dHRvbnMocHJvcHM/LmxpbmtzKT8uWzBdLFxuICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHByb3BzPy5idXR0b25zKT8uWzBdLFxuICAgICAgICB9IGFzIEJhYnlsb25Db21pbmdTb29uSTtcbiAgICB9XG5cbiAgICBtYXBPZmZlckRldGFpbChwcm9wczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvbk9mZmVyRGV0YWlsSSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/Lm9mZmVyPy5bMF0/LnRleHRzPy5zdWJ0aXRsZSxcbiAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8ub2ZmZXI/LlswXT8udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IHByb3BzPy5vZmZlcj8uWzBdPy50ZXh0cz8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICBuZFRpdGxlOiBwcm9wcz8ub2ZmZXI/LlswXT8udGV4dHM/LmFkZGl0aW9uYWwxLFxuICAgICAgICAgICAgbGFiZWxEaXNjb3VudDogcHJvcHM/Lm9mZmVyPy5bMF0/LnRleHRzPy5hZGRpdGlvbmFsMixcbiAgICAgICAgICAgIGxhYmVsRnJvbTogcHJvcHM/Lm9mZmVyPy5bMF0/LnRleHRzPy5hZGRpdGlvbmFsMyxcbiAgICAgICAgICAgIGN1cnJlbmN5OiBwcm9wcz8ub2ZmZXI/LlswXT8uY3VycmVuY3ksXG4gICAgICAgICAgICBwcmljZTogcHJvcHM/Lm9mZmVyPy5bMF0/LnByaWNlLFxuICAgICAgICAgICAgZGlzY291bnQ6IHByb3BzPy5vZmZlcj8uWzBdPy5kaXNjb3VudCxcbiAgICAgICAgICAgIGNvbmRpdGlvbnM6IHByb3BzPy5vZmZlcj8uWzBdPy50ZXh0cz8uY29uZGl0aW9ucyxcbiAgICAgICAgICAgIGltYWdlOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICBwcm9wcz8ub2ZmZXI/LlswXT8ubXVsdGltZWRpYT8uWzBdLFxuICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgbGluazogVXRpbHMubWFwQnV0dG9ucyhwcm9wcz8ubGlua3MpPy5bMF0sXG4gICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnMocHJvcHM/Lm9mZmVyPy5bMF0/LmJ1dHRvbnMpPy5bMF0sXG4gICAgICAgIH0gYXMgQmFieWxvbk9mZmVyRGV0YWlsSTtcbiAgICB9XG5cbiAgICBtYXBPZmZlcnNMaXN0KHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uT2ZmZXJzTGlzdEkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8udGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy50aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICBwcmV0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy5wcmV0aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnByZXRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIGl0ZW1zOiBwcm9wcz8ub2ZmZXJzPy5tYXAoXG4gICAgICAgICAgICAgICAgKGl0ZW06IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBpdGVtPy5pZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZXRpdGxlOiBpdGVtPy50ZXh0cz8uc3VidGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaXRlbT8udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJpY2U6IGl0ZW0/LnByaWNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVuY3k6IGl0ZW0/LmN1cnJlbmN5LFxuICAgICAgICAgICAgICAgICAgICAgICAgZGlzY291bnQ6IGl0ZW0/LmRpc2NvdW50LFxuICAgICAgICAgICAgICAgICAgICAgICAgaW1nOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpdGVtPy5tdWx0aW1lZGlhPy5bMF0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsdDogaXRlbT8ubXVsdGltZWRpYT8uWzBdPy5hbHQsXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzZXJ2ZUJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyhpdGVtPy5idXR0b25zKT8uWzBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2VlT2ZmZXJCdXR0b246IFV0aWxzLm1hcEJ1dHRvbnMoaXRlbT8ubGlua3MpPy5bMF0sXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbEZyb206IGl0ZW0/LnRleHRzPy5hZGRpdGlvbmFsMyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsRGlzY291bnQ6IGl0ZW0/LnRleHRzPy5hZGRpdGlvbmFsMixcbiAgICAgICAgICAgICAgICAgICAgICAgIGhvbWU6IGl0ZW0/LnNpdGVzPy5bMF0/LmhvbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBwb3B1cDogaXRlbT8uc2l0ZXM/LlswXT8ucG9wdXAsXG4gICAgICAgICAgICAgICAgICAgIH0pIGFzIEJhYnlsb25PZmZlcnNMaXN0SXRlbVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHBsYWNlaG9sZGVySW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXM/LlswXSxcbiAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyhwcm9wcz8uYnV0dG9ucyk/LlswXSxcbiAgICAgICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy50YWcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGV4dENvbG9yczoge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSBhcyBCYWJ5bG9uT2ZmZXJzTGlzdEk7XG4gICAgfVxuXG4gICAgbWFwRmFxKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uRmFxSSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBwcmV0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy5wcmV0aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnByZXRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8udGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LnRhZyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBpdGVtczogcHJvcHM/LmxvY2F0aW9uSG93XG4gICAgICAgICAgICAgICAgPyBwcm9wcz8ubG9jYXRpb25Ib3c/Lml0ZW1zPy5tYXAoXG4gICAgICAgICAgICAgICAgICAgICAgKGZhcTogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGZhcS50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBmYXEuZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0pIGFzIEJhYnlsb25JdGVtSVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIDogcHJvcHM/Lml0ZW1zPy5tYXAoXG4gICAgICAgICAgICAgICAgICAgICAgKGZhcTogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGZhcS50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBmYXEudGV4dCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSkgYXMgQmFieWxvbkl0ZW1JXG4gICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgaW1nOiBwcm9wcz8ubG9jYXRpb25NYXBcbiAgICAgICAgICAgICAgICA/IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgICAgICAgIHByb3BzPy5sb2NhdGlvbk1hcD8ubXVsdGltZWRpYT8uaW1hZ2VuZXM/LlswXSxcbiAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIDogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzPy5bMF0sXG4gICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICksXG4gICAgICAgIH0gYXMgQmFieWxvbkZhcUk7XG4gICAgfVxuXG4gICAgbWFwU3RhdGljRm9vdGVyKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uU3RhdGljRm9vdGVySSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy50aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy50aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIG5kVGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8uYWRkcmVzc1RpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8uYWRkcmVzc1RpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy5hZGRyZXNzVGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICByZFRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LmxpbmtzVGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy5saW5rc1RpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy5saW5rc1RpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgdGhUaXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy5sb2NhdGlvblRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8ubG9jYXRpb25UaXRsZVxuICAgICAgICAgICAgICAgICAgICA6IChwcm9wcz8udGV4dHM/LmxvY2F0aW9uVGl0bGU/LmNvbnRhaW4gPz9cbiAgICAgICAgICAgICAgICAgICAgICAodHlwZW9mIHByb3BzPy50ZXh0cz8ubmV3c2xldHRlclRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8ubmV3c2xldHRlclRpdGxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy5uZXdzbGV0dGVyVGl0bGU/LmNvbnRhaW4pKSxcblxuICAgICAgICAgICAgZmlmdGhUaXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy5hZGRpdGlvbmFsRm9vdGVyVGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy5hZGRpdGlvbmFsRm9vdGVyVGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LmFkZGl0aW9uYWxGb290ZXJUaXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIG5kdGl0bGU6IHByb3BzPy50ZXh0cz8uYWRkcmVzc1RpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgcmR0aXRsZTogcHJvcHM/LnRleHRzPy5saW5rc1RpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgdGh0aXRsZTpcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy5sb2NhdGlvblRpdGxlPy50YWcgPz9cbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy5uZXdzbGV0dGVyVGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICBmaWZ0aHRpdGxlOiBwcm9wcz8udGV4dHM/LmFkZGl0aW9uYWxGb290ZXJUaXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIGNvcHlyaWdodDogcHJvcHM/LnRleHRzPy5jb3B5cmlnaHQ/LnRhZyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBmcmFtZVVybDogISFwcm9wcz8udGV4dHM/LmZyYW1lVXJsXG4gICAgICAgICAgICAgICAgPyBwcm9wcy50ZXh0cy5mcmFtZVVybFxuICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgY29udGFjdEluZm86IFV0aWxzLm1hcEJ1dHRvbnMocHJvcHM/LmxpbmtzPy5jb250YWN0Py5bMF0pLFxuICAgICAgICAgICAgY29udGFjdExpbmtzOiBVdGlscy5tYXBCdXR0b25zKHByb3BzPy5saW5rcz8uY29udGFjdExpbmtzPy5bMF0pLFxuICAgICAgICAgICAgZm9vdGVyTGlua3M6IFV0aWxzLm1hcEJ1dHRvbnMocHJvcHM/LmxpbmtzPy5mb290ZXJMaW5rcz8uWzBdKSxcbiAgICAgICAgICAgIGFkZHJlc3M6IEFycmF5LmlzQXJyYXkocHJvcHM/LmFkZHJlc3MpXG4gICAgICAgICAgICAgICAgPyBwcm9wcy5hZGRyZXNzLm1hcChcbiAgICAgICAgICAgICAgICAgICAgICAoYWRkcmVzczogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IGFkZHJlc3MuaWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBhZGRyZXNzLm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRyZXNzOiBhZGRyZXNzLmFkZHJlc3MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaXR5OiBhZGRyZXNzLmNpdHksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm92aW5jZTogYWRkcmVzcy5wcm92aW5jZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50cnk6IGFkZHJlc3MuY291bnRyeSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNwOiBhZGRyZXNzLmNwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBhZGRyZXNzLmxpbmssXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdWxsX2FkZHJlc3M6IGFkZHJlc3MuZnVsbEFkZHJlc3MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0pIGFzIEJhYnlsb25BZGRyZXNzSXRlbVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIDogW10sXG4gICAgICAgICAgICBhZGRyZXNzSG90ZWxzOiBBcnJheS5pc0FycmF5KHByb3BzPy5hZGRyZXNzSG90ZWxzKVxuICAgICAgICAgICAgICAgID8gcHJvcHMuYWRkcmVzc0hvdGVscy5tYXAoXG4gICAgICAgICAgICAgICAgICAgICAgKGFkZHJlc3M6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBhZGRyZXNzLmlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogYWRkcmVzcy5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkcmVzczogYWRkcmVzcy5hZGRyZXNzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2l0eTogYWRkcmVzcy5jaXR5LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvdmluY2U6IGFkZHJlc3MucHJvdmluY2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3VudHJ5OiBhZGRyZXNzLmNvdW50cnksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcDogYWRkcmVzcy5jcCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogYWRkcmVzcy5saW5rLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGhvbmU6IGFkZHJlc3MucGhvbmUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbWFpbDogYWRkcmVzcy5lbWFpbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bGxfYWRkcmVzczogYWRkcmVzcy5mdWxsQWRkcmVzcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSkgYXMgQmFieWxvbkFkZHJlc3NJdGVtXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBzb2NpYWxNZWRpYTogcHJvcHM/LnNvY2lhbE1lZGlhPy5tYXAoXG4gICAgICAgICAgICAgICAgKGxpbms6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGljb246IGBiYWJ5bG9uLSR7bGluay5uYW1lPy50b0xvd2VyQ2FzZSgpfWAsXG4gICAgICAgICAgICAgICAgICAgICAgICB1cmw6IGxpbmsudXJsLFxuICAgICAgICAgICAgICAgICAgICB9KSBhcyBCYWJ5bG9uQnV0dG9uSVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGNvcHlyaWdodDpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy5jb3B5cmlnaHQgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy5jb3B5cmlnaHRcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LmNvcHlyaWdodD8uY29udGFpbixcbiAgICAgICAgICAgIG5hdjogcHJvcHM/Lm5hdj8ubWFwKFxuICAgICAgICAgICAgICAgIChuYXY6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBuYXYubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVybDogbmF2LnVybCxcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgQmFieWxvbkJ1dHRvbklcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBpbWc6IHtcbiAgICAgICAgICAgICAgICBzcmM6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uYmFja2dyb3VuZD8uWzBdXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBhbHQ6IHByb3BzPy5tdWx0aW1lZGlhPy5iYWNrZ3JvdW5kPy50aXRsZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBsb2dvOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShwcm9wcz8ubXVsdGltZWRpYT8ubG9nbz8uWzBdLCBmYWxzZSksXG4gICAgICAgICAgICAvLyBpbnB1dDogcHJvcHM/LnRleHRzPy5uZXdzbGV0dGVyRGVzY3JpcHRpb24sXG4gICAgICAgICAgICBpbnB1dDoge1xuICAgICAgICAgICAgICAgIG5hbWU6ICduZXdzbGV0dGVyJyxcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogcHJvcHM/LnRleHRzPy5pbnB1dEhvbGRlcixcbiAgICAgICAgICAgICAgICB2YWxpZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICB2YWx1ZTogJycsXG4gICAgICAgICAgICAgICAgZXJyb3I6IHByb3BzPy50ZXh0cz8ubmV3c0Vycm9yRW1haWwsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbGVnYWxBZHZpc2U6IHByb3BzPy50ZXh0cz8uc3Vic2NyaWJlcixcbiAgICAgICAgICAgIGFkZGl0aW9uYWxMaW5rczogVXRpbHMubWFwQnV0dG9ucyhcbiAgICAgICAgICAgICAgICBwcm9wcz8ubGlua3M/LmFkZGl0aW9uYWxGb290ZXJMaW5rc1swXT8uZmlsdGVyKFxuICAgICAgICAgICAgICAgICAgICAoYnRuOiBhbnkpID0+ICEhYnRuPy5sYWJlbFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICksXG4gICAgICAgIH0gYXMgQmFieWxvblN0YXRpY0Zvb3Rlckk7XG4gICAgfVxuXG4gICAgbWFwR2FsbGVyeShwcm9wczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvbkdhbGxlcnlJIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHByZXRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnByZXRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8ucHJldGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8udGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy50aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICB0YWdzOiB7XG4gICAgICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8udGFnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHJvb21zQnRuOiB7XG4gICAgICAgICAgICAgICAgbGFiZWw6IHByb3BzPy50ZXh0cz8uZmlsdGVyUm9vbXMsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZmlsdGVyc0J0bjoge1xuICAgICAgICAgICAgICAgIGxhYmVsOiBwcm9wcz8udGV4dHM/LmZpbHRlckNhdGVnb3JpZXMsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZmlsdGVyczogcHJvcHMuZmlsdGVycz8ubWFwKFxuICAgICAgICAgICAgICAgIChpdGVtOiBhbnksIGluZGV4OiBudW1iZXIpID0+XG4gICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogaW5kZXgsXG4gICAgICAgICAgICAgICAgICAgICAgICBhbGw6IGl0ZW0uYWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAgcm9vbTogaXRlbS5yb29tLFxuICAgICAgICAgICAgICAgICAgICAgICAgcm9vbXM6IGl0ZW0ucm9vbXMsXG4gICAgICAgICAgICAgICAgICAgICAgICB0ZXh0OiBpdGVtLm5hbWUsXG4gICAgICAgICAgICAgICAgICAgIH0pIGFzIEJhYnlsb25HYWxsZXJ5RmlsdGVyXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgaW1hZ2VzOiBwcm9wcz8uZmlsdGVyc1xuICAgICAgICAgICAgICAgID8ucmVkdWNlKFxuICAgICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICAgICBhY2M6IHsgbXVsdGltZWRpYTogYW55W107IGZpbHRlckluZGV4OiBudW1iZXIgfVtdLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyOiBhbnksXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJJbmRleDogbnVtYmVyXG4gICAgICAgICAgICAgICAgICAgICkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZpbHRlci5tdWx0aW1lZGlhKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbXVsdGltZWRpYVdpdGhGaWx0ZXIgPSBmaWx0ZXIubXVsdGltZWRpYS5tYXAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpdGVtOiBhbnkpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5pdGVtLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyOiBmaWx0ZXJJbmRleCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLmFjYyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXVsdGltZWRpYTogbXVsdGltZWRpYVdpdGhGaWx0ZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJJbmRleCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgW11cbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLmZsYXRNYXAoKHsgbXVsdGltZWRpYSB9OiBhbnkpID0+IG11bHRpbWVkaWEpXG4gICAgICAgICAgICAgICAgLm1hcChcbiAgICAgICAgICAgICAgICAgICAgKGltZzogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaW1nLnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaW1nLCBmYWxzZSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyOiBpbWc/LmZpbHRlcixcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pIGFzIEJhYnlsb25HYWxsZXJ5SXRlbVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgIH0gYXMgQmFieWxvbkdhbGxlcnlJO1xuICAgIH1cblxuICAgIG1hcExhbmd1YWdlTW9kYWwocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25MYW5ndWFnZU1vZGFsSSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgIHN1YnRpdGxlOiBwcm9wcz8udGV4dHM/LnN1YnRpdGxlLFxuICAgICAgICAgICAgaXRlbXM6IHByb3BzPy5sYW5ndWFnZXMsXG4gICAgICAgICAgICBzZWxlY3RlZDogcHJvcHMubGFuZ3VhZ2VzLmZpbmQoXG4gICAgICAgICAgICAgICAgKGxuZzogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICBsbmcuaWQgPT09IHRoaXMuc2l0ZVN2Yy5zZWxlY3RlZExhbmd1YWdlSW5zdGFudD8uaWRcbiAgICAgICAgICAgICksXG4gICAgICAgIH0gYXMgQmFieWxvbkxhbmd1YWdlTW9kYWxJO1xuICAgIH1cblxuICAgIG1hcEVuZ2luZShwcm9wczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvbkVuZ2luZUkgfCBCYWJ5bG9uRW5naW5lTW9kYWxJIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIG9ubHlBZHVsdHM6IHByb3BzPy5vbmx5QWR1bHRzLFxuICAgICAgICAgICAgZGVmYXVsdEJ1dHRvbjogcHJvcHM/LmRlZmF1bHRJbnRlcm5hbEJ1dHRvbixcbiAgICAgICAgICAgIGJ1dHRvbjogeyBsYWJlbDogcHJvcHM/LnRleHRzPy5tb3RvclN1Ym1pdCwgdXJsOiBwcm9wcz8udXJsIH0sXG4gICAgICAgICAgICBkYXRlcGlja2VyRGF0YToge1xuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/Lm1vdG9yRGF0ZVRpdGxlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGd1ZXN0c0lucHV0OiB7XG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8ubW90b3JHdWVzdHNJbnB1dEhvbGRlcixcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBwcm9tb0lucHV0OiB7XG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8ubW90b3JQcm9tb0hvbGRlcixcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBndWVzdHM6IHtcbiAgICAgICAgICAgICAgICBidG46IHsgbGFiZWw6IHByb3BzPy50ZXh0cz8ubW90b3JBcHBseSB9LFxuICAgICAgICAgICAgICAgIGFkdWx0c0Ryb3Bkb3duOiB7XG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/Lm1vdG9yQWR1bHRzVGl0bGUsXG4gICAgICAgICAgICAgICAgICAgIG9wdGlvbnM6IHRoaXMuZ2VuZXJhdGVBZ2VzT3B0aW9ucyhwcm9wcz8ubWF4QWR1bHRzLCAxKSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGtpZHNEcm9wZG93bjoge1xuICAgICAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy5tb3RvcktpZHNUaXRsZSxcbiAgICAgICAgICAgICAgICAgICAgc21hbGxUaXRsZTogcHJvcHM/LnRleHRzPy5tb3RvcktpZHNTbWFsbExhYmVsLFxuICAgICAgICAgICAgICAgICAgICBvcHRpb25zOiB0aGlzLmdlbmVyYXRlQWdlc09wdGlvbnMocHJvcHM/Lm1heENoaWxkcmVuKSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGJhYmllc0Ryb3Bkb3duOlxuICAgICAgICAgICAgICAgICAgICBwcm9wcz8ubWF4QmFiaWVzID4gMFxuICAgICAgICAgICAgICAgICAgICAgICAgPyB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy5tb3RvckJhYmllc1RpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc21hbGxUaXRsZTogcHJvcHM/LnRleHRzPy5tb3RvckJhYmllc1NtYWxsVGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zOiB0aGlzLmdlbmVyYXRlQWdlc09wdGlvbnMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHM/Lm1heEJhYmllc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgYWdlc0Ryb3Bkb3duOiB7XG4gICAgICAgICAgICAgICAgICAgIG9wdGlvbnM6IHRoaXMuZ2VuZXJhdGVBZ2VzT3B0aW9ucyhcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzPy5tYXhBZ2VDaGlsZHJlbixcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzPy5tYXhBZ2VCYWJpZXMgKyAxXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBhZ2VzTGFiZWw6IHByb3BzPy50ZXh0cz8ubW90b3JBZ2VzVGl0bGUsXG4gICAgICAgICAgICAgICAga2lkc0xhYmVsOiBwcm9wcz8udGV4dHM/Lm1vdG9yS2lkTGFiZWwsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8ubW90b3JUaXRsZSxcbiAgICAgICAgICAgIHN1YnRpdGxlOiBwcm9wcz8udGV4dHM/Lm1vdG9yU3VidGl0bGUsXG4gICAgICAgICAgICB1cmw6IHByb3BzPy51cmwsXG4gICAgICAgICAgICBob3RlbDogcHJvcHM/LmhvdGVscz8uWzBdLFxuICAgICAgICAgICAgY29kaWdvOiBwcm9wcz8uY29kaWdvID8gcHJvcHM/LmNvZGlnbyA6ICdkZW1vX2MydF9jbGllbnRlcycsIC8vdG8gY2hhbmdlLCBkb250IGNvbWUgZnJvbSBiYWNrXG4gICAgICAgICAgICBnbFZhbHVlOiBwcm9wcz8uZ2xWYWx1ZSxcbiAgICAgICAgICAgIGhvdGVsc0lucHV0OiBwcm9wcz8udGV4dHM/Lm1vdG9yRHJvcERvd25OYW1lLFxuICAgICAgICAgICAgaG90ZWxzUGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8ubW90b3JEcm9wRG93bkhvbGRlcixcbiAgICAgICAgICAgIGhvdGVsczoge1xuICAgICAgICAgICAgICAgIG9wdGlvbnM6IHByb3BzPy5ob3RlbHM/Lm1hcCgoaG90ZWw6IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogaG90ZWw/Lm5hbWUsXG4gICAgICAgICAgICAgICAgICAgIHRpY2tlcjogaG90ZWw/LnRpY2tlcixcbiAgICAgICAgICAgICAgICAgICAgdXJsOiBob3RlbD8udXJsLFxuICAgICAgICAgICAgICAgICAgICBpZDogaG90ZWw/LmlkLFxuICAgICAgICAgICAgICAgIH0pKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0gYXMgQmFieWxvbkVuZ2luZU1vZGFsSSB8IEJhYnlsb25FbmdpbmVJO1xuICAgIH1cbiAgICBtYXBTbGlkZXIzSXRlbXMocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25TbGlkZXIzSXRlbXNJIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGUsXG4gICAgICAgICAgICBpdGVtczogcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzPy5tYXAoXG4gICAgICAgICAgICAgICAgKGl0ZW06IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZXRpdGxlOiBpdGVtLnByZXRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0udGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGl0ZW0sIGZhbHNlKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxpbms6IFV0aWxzLm1hcEJ1dHRvbnMoaXRlbT8ubGlua3MpPy5bMF0sXG4gICAgICAgICAgICAgICAgICAgIH0pIGFzIEJhYnlsb25TbGlkZXJJdGVtXG4gICAgICAgICAgICApLFxuICAgICAgICB9IGFzIEJhYnlsb25TbGlkZXIzSXRlbXNJO1xuICAgIH1cblxuICAgIG1hcEhvdGVsc1NsaWRlcihwcm9wczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvbkhvdGVsc1NsaWRlckkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICBzdWJ0aXRsZTogcHJvcHM/LnRleHRzPy5wcmV0aXRsZSxcbiAgICAgICAgICAgIGhvdGVsczogcHJvcHM/LmhvdGVscz8ubWFwKFxuICAgICAgICAgICAgICAgIChpdGVtOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICBwcmV0aXRsZTogaXRlbS50ZXh0cy5hZGRpdGlvbmFsMSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtLnRleHRzLm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBpbWc6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmM6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGl0ZW0ubXVsdGltZWRpYT8uWzBdKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHQ6IGl0ZW0ubXVsdGltZWRpYT8uWzBdPy5hbHQsXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgbGluazogVXRpbHMubWFwQnV0dG9ucyhpdGVtLmxpbmtzKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyhpdGVtLmJ1dHRvbnMpLFxuICAgICAgICAgICAgICAgICAgICB9KSBhcyBCYWJ5bG9uU2xpZGVySXRlbVxuICAgICAgICAgICAgKSxcbiAgICAgICAgfSBhcyBCYWJ5bG9uSG90ZWxzU2xpZGVySTtcbiAgICB9XG5cbiAgICBtYXBIb3RlbHNMaXN0KHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uSG90ZWxzTGlzdEkge1xuICAgICAgICAvLyBUT0RPOiBSZXZpc2FyIG1hcHBlbyBkZSBpbcOhZ2VuZXNcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGUsXG4gICAgICAgICAgICBob3RlbHM6IHByb3BzPy5ob3RlbHM/Lm1hcChcbiAgICAgICAgICAgICAgICAoaXRlbTogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgcHJldGl0bGU6IGl0ZW0/LnRleHRzPy5hZGRpdGlvbmFsMSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtPy50ZXh0cz8ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRleHQ6IGl0ZW0/LnRleHRzPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgIHRleHRNb3JlOiBpdGVtPy50ZXh0cz8uYWRkaXRpb25hbDIsXG4gICAgICAgICAgICAgICAgICAgICAgICBpbWc6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmM6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGl0ZW0/Lm11bHRpbWVkaWE/LlswXSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0OiBpdGVtPy5tdWx0aW1lZGlhPy5bMF0/LmFsdCxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBsaW5rOiBVdGlscy5tYXBCdXR0b25zKGl0ZW0/LmxpbmtzKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyhpdGVtPy5idXR0b25zKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHByaWNlOiBpdGVtPy5wcmljZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZUaXRsZTogcHJvcHM/LnRleHRzPy5mb290ZXJUaXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZTdWJ0aXRsZTogcHJvcHM/LnRleHRzPy5mb290ZXJQcmV0aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZpY2VzOiBpdGVtPy5zZXJ2aWNlc0xpc3Q/Lm1hcCgoaXRlbTogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IGl0ZW0/Lm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvbjogYGljb24tJHtpdGVtPy5jbGFzc31gLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSkpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYnRuTGVzczogaXRlbT8udGV4dHM/LmFkZGl0aW9uYWwzLFxuICAgICAgICAgICAgICAgICAgICAgICAgYnRuTW9yZTogaXRlbT8udGV4dHM/LmFkZGl0aW9uYWw0LFxuICAgICAgICAgICAgICAgICAgICB9KSBhcyBCYWJ5bG9uU2xpZGVySXRlbVxuICAgICAgICAgICAgKSxcbiAgICAgICAgfSBhcyBCYWJ5bG9uSG90ZWxzTGlzdEk7XG4gICAgfVxuXG4gICAgbWFwSW5mbzRJbWcocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25JbmZvNGltZ0kge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGUsXG4gICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgIHRleHQ6IHByb3BzPy50ZXh0cz8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnMocHJvcHM/LmJ1dHRvbnMpPy5bMF0sXG4gICAgICAgICAgICBpbWFnZTE6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lc1swXSxcbiAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGltYWdlMjogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzWzFdLFxuICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgaW1hZ2UzOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXNbMl0sXG4gICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBpbWFnZTQ6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lc1szXSxcbiAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgKSxcbiAgICAgICAgfSBhcyBCYWJ5bG9uSW5mbzRpbWdJO1xuICAgIH1cblxuICAgIG1hcFNlcnZpY2VzU2xpZGVyKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uU2VydmljZXNTbGlkZXJJIHtcbiAgICAgICAgY29uc3QgYWR2ZW50ID0gcHJvcHM/LnNlcnZpY2VzU2VydmljZSA/PyBwcm9wcz8uVmVudGFqYXM7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBwcmV0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy5wcmV0aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnByZXRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8udGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LnRhZyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBhZHZhbnRhZ2VzOiBhZHZlbnQ/Lm1hcCgoaXRlbTogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtLm5hbWUgPz8gaXRlbS50aXRsZSxcbiAgICAgICAgICAgICAgICB0ZXh0OiBpdGVtLnRleHQsXG4gICAgICAgICAgICAgICAgaWNvbjogYGljb24tJHtpdGVtLmNsYXNzID8/IGl0ZW0uaWNvbn1gLFxuICAgICAgICAgICAgfSkpLFxuICAgICAgICB9IGFzIEJhYnlsb25TZXJ2aWNlc1NsaWRlckk7XG4gICAgfVxuXG4gICAgbWFwQWR2YW50YWdlcyhwcm9wczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvbkFkdmFudGFnZXNJIHtcbiAgICAgICAgY29uc3QgdmVudGFqYXMgPSBwcm9wcz8uVmVudGFqYXMgPz8gcHJvcHM/Lmxpc3RzID8/IHByb3BzPy5MaXN0cztcbiAgICAgICAgY29uc3QgYWR2ID0gdmVudGFqYXM/Lm1hcCgoaXRlbTogYW55KSA9PiAoe1xuICAgICAgICAgICAgdGl0bGU6IGl0ZW0udGl0bGUsXG4gICAgICAgICAgICBpY29uOiBgaWNvbi0ke2l0ZW0uaWNvbn1gLFxuICAgICAgICAgICAgdGV4dDogaXRlbS50ZXh0LFxuICAgICAgICB9KSk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy50aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy50aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIGFkdmFudGFnZXM6IGFkdixcbiAgICAgICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8udGFnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRleHRDb2xvcnM6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzZWVNb3JlOiBwcm9wcz8udGV4dHM/LmFkdmFudGFnZXNzZWVtb3JlLFxuICAgICAgICAgICAgc2VlTGVzczogcHJvcHM/LnRleHRzPy5hZHZhbnRhZ2Vzc2VlbGVzcyxcbiAgICAgICAgICAgIGltYWdlOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uYWR2YW50YWdlc2ltYWdlPy5bMF0sXG4gICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICksXG4gICAgICAgIH0gYXMgQmFieWxvbkFkdmFudGFnZXNJO1xuICAgIH1cblxuICAgIG1hcEluZm9CaWcocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25JbmZvQmlnSSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzPy5bMF0/LnByZXRpdGxlLFxuICAgICAgICAgICAgdGl0bGU6IHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8uWzBdPy50aXRsZSxcbiAgICAgICAgICAgIHRleHQ6IHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8uWzBdPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyhcbiAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXM/LlswXT8uYnV0dG9uc1xuICAgICAgICAgICAgKT8uWzBdLFxuICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXM/LlswXSxcbiAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGltZ1NtYWxsOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXM/LlsxXSA/P1xuICAgICAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8ubmRpbWFnZT8uWzBdLFxuICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICApLFxuICAgICAgICB9IGFzIEJhYnlsb25JbmZvQmlnSTtcbiAgICB9XG5cbiAgICBtYXBJbmZvWmlnWmFnVjIocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25JbmZvWmlnemFnVjJJIHtcbiAgICAgICAgY29uc3QgW2ltYWdlXSA9XG4gICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2UgfHwgcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzIHx8IFtdO1xuICAgICAgICBjb25zdCBbaW1hZ2UyXSA9XG4gICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2UyIHx8IHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZXNzbWFsbCB8fCBbXTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGl0ZW1zOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBidXR0b25zOiBVdGlscy5tYXBCdXR0b25zKGltYWdlPy5idXR0b25zKSxcbiAgICAgICAgICAgICAgICAgICAgZmVhdHVyZXM6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgaW1hZ2U6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGltYWdlLCBmYWxzZSksXG4gICAgICAgICAgICAgICAgICAgIHByZXRpdGxlOiBpbWFnZT8ucHJldGl0bGUsXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpbWFnZT8udGl0bGUsXG4gICAgICAgICAgICAgICAgICAgIHRleHQ6IGltYWdlPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgYnV0dG9uczogVXRpbHMubWFwQnV0dG9ucyhpbWFnZTI/LmJ1dHRvbnMpLFxuICAgICAgICAgICAgICAgICAgICBpbWFnZTogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaW1hZ2UyLCBmYWxzZSksXG4gICAgICAgICAgICAgICAgICAgIHByZXRpdGxlOiBpbWFnZTI/LnByZXRpdGxlLFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogaW1hZ2UyPy50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgdGV4dDogaW1hZ2UyPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICAgICAgZmVhdHVyZXM6IHByb3BzPy5WZW50YWphcz8ubWFwKChpdGVtOiBhbnkpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaXRlbS50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRleHQ6IGl0ZW0udGV4dCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGljb246IGBpY29uLSR7aXRlbS5pY29ufWAsXG4gICAgICAgICAgICAgICAgICAgIH0pKSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSBhcyBCYWJ5bG9uSW5mb1ppZ3phZ1YySXRlbVtdLFxuICAgICAgICB9IGFzIEJhYnlsb25JbmZvWmlnemFnVjJJO1xuICAgIH1cblxuICAgIG1hcEZvb3RlckNvbnRhY3QocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25Gb290ZXJDb250YWN0SSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgIHRleHQ6IHByb3BzPy50ZXh0cz8udGV4dCxcbiAgICAgICAgICAgIGV4dHJhVHh0OiBwcm9wcz8udGV4dHM/LmFkZGl0aW9uYWxUZXh0MSxcbiAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyhwcm9wcz8uYnV0dG9ucyk/LlswXSxcbiAgICAgICAgICAgIGltZzoge1xuICAgICAgICAgICAgICAgIHNyYzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUocHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzPy5bMF0pLFxuICAgICAgICAgICAgICAgIGFsdDogcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzPy5bMF0/LmFsdCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBhZHZhbnRhZ2VzOiBwcm9wcz8uVmVudGFqYXM/Lm1hcCgoaXRlbTogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtLnRpdGxlLFxuICAgICAgICAgICAgICAgIHRleHQ6IGl0ZW0udGV4dCxcbiAgICAgICAgICAgICAgICBpY29uOiBgaWNvbi0ke2l0ZW0uaWNvbn1gLFxuICAgICAgICAgICAgfSkpLFxuICAgICAgICAgICAgbGlua3M6IFV0aWxzLm1hcEJ1dHRvbnMocHJvcHM/LmxpbmtzPy5jb250YWN0TGlua3M/LlswXSksXG4gICAgICAgICAgICBhZGRyZXNzOiB7XG4gICAgICAgICAgICAgICAgbG9jYWxpdHk6IHByb3BzPy5ob3RlbEFkZHJlc3M/LmxvY2FsaXR5LFxuICAgICAgICAgICAgICAgIGNpdHk6IHByb3BzPy5ob3RlbEFkZHJlc3M/LmNpdHksXG4gICAgICAgICAgICAgICAgcHJvdmluY2U6IHByb3BzPy5ob3RlbEFkZHJlc3M/LnByb3ZpbmNlLFxuICAgICAgICAgICAgICAgIGNvdW50cnk6IHByb3BzPy5ob3RlbEFkZHJlc3M/LmNvdW50cnksXG4gICAgICAgICAgICAgICAgY3A6IHByb3BzPy5ob3RlbEFkZHJlc3M/LmNwLFxuICAgICAgICAgICAgICAgIGFkZHJlc3M6IHByb3BzPy5ob3RlbEFkZHJlc3M/LmFkZHJlc3MsXG4gICAgICAgICAgICAgICAgbGF0OiBwcm9wcz8uaG90ZWxBZGRyZXNzPy5sYXQsXG4gICAgICAgICAgICAgICAgbG9uOiBwcm9wcz8uaG90ZWxBZGRyZXNzPy5sb24sXG4gICAgICAgICAgICAgICAgcGhvbmU6IHByb3BzPy5ob3RlbEFkZHJlc3M/LnBob25lLFxuICAgICAgICAgICAgICAgIGVtYWlsOiBwcm9wcz8uaG90ZWxBZGRyZXNzPy5lbWFpbCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0gYXMgQmFieWxvbkZvb3RlckNvbnRhY3RJO1xuICAgIH1cblxuICAgIG1hcEluZm8ySW1nQmlnKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uSW5mbzJpbWdCaWdJIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHByZXRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnByZXRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8ucHJldGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8udGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy50aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICB0YWdzOiB7XG4gICAgICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8udGFnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRleHQ6IHByb3BzPy50ZXh0cz8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICBwcmV0aXRsZTI6IHByb3BzPy50ZXh0cz8ubmRQcmV0aXRsZSxcbiAgICAgICAgICAgIHRpdGxlMjogcHJvcHM/LnRleHRzPy5uZFRpdGxlLFxuICAgICAgICAgICAgdGV4dDI6IHByb3BzPy50ZXh0cz8ubmREZXNjcmlwdGlvbixcbiAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyhwcm9wcz8uYnV0dG9ucyk/LlswXSxcbiAgICAgICAgICAgIGJ1dHRvbjI6IFV0aWxzLm1hcEJ1dHRvbnMocHJvcHM/LmJ1dHRvbnMpPy5bMV0sXG4gICAgICAgICAgICBpbWc6IHtcbiAgICAgICAgICAgICAgICBzcmM6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXM/LlswXSA/P1xuICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlPy5bMF1cbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGFsdDpcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzPy5bMF0/LmFsdCA/P1xuICAgICAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2U/LlswXS5hbHQsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgaW1nU21hbGw6IHtcbiAgICAgICAgICAgICAgICBzcmM6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8ubmRpbWFnZW5lcz8uWzBdID8/XG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8ubmRpbWFnZT8uWzBdXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBhbHQ6IHByb3BzPy5tdWx0aW1lZGlhPy5uZGltYWdlbmVzPy5bMF0/LmFsdCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0gYXMgQmFieWxvbkluZm8yaW1nQmlnSTtcbiAgICB9XG5cbiAgICBtYXBGb290ZXJMb2dvcyhwcm9wczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvbkZvb3RlckxvZ29zSSB7XG4gICAgICAgIGNvbnN0IGRlc2NyaXB0aW9uID0gcHJvcHM/LnRleHRzPy5kZXNjcmlwdGlvbiA/PyBwcm9wcz8udGV4dHM/LnRleHQ7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRleHRzOiB7XG4gICAgICAgICAgICAgICAgLi4ucHJvcHM/LnRleHRzLFxuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBkZXNjcmlwdGlvbixcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBidXR0b25zOiBVdGlscy5tYXBCdXR0b25zKHByb3BzPy5idXR0b25zKSxcbiAgICAgICAgICAgIGxvZ29zOiBwcm9wcz8ubXVsdGltZWRpYT8ubG9nb3M/Lm1hcCgobG9nbzogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUobG9nbywgZmFsc2UpLFxuICAgICAgICAgICAgICAgIGxpbms6IFV0aWxzLm1hcEJ1dHRvbnMobG9nbz8ubGlua3M/LlswXSksXG4gICAgICAgICAgICB9KSksXG4gICAgICAgIH0gYXMgQmFieWxvbkZvb3RlckxvZ29zSTtcbiAgICB9XG5cbiAgICBtYXBGb290ZXJMaW5rcyhwcm9wczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvbkZvb3RlckxpbmtzSSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBjb3B5cmlnaHQ6IHByb3BzPy50ZXh0cz8uY29weXJpZ2h0LFxuICAgICAgICAgICAgeWVhcjogcHJvcHM/LnRleHRzPy55ZWFyLFxuICAgICAgICAgICAgYnV0dG9uczogVXRpbHMubWFwQnV0dG9ucyhwcm9wcz8uYnV0dG9ucyksXG4gICAgICAgIH0gYXMgQmFieWxvbkZvb3RlckxpbmtzSTtcbiAgICB9XG5cbiAgICBtYXBGb290ZXJTb2NpYWxzKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uRm9vdGVyU29jaWFsSSB7XG4gICAgICAgIGNvbnN0IGZpbHRlcmVkTGlua3MgPSAocHJvcHM/LnNvY2lhbE1lZGlhIHx8IFtdKS5maWx0ZXIoXG4gICAgICAgICAgICAobGluazogYW55KSA9PlxuICAgICAgICAgICAgICAgIGxpbmsgIT09IG51bGwgJiZcbiAgICAgICAgICAgICAgICBsaW5rICE9PSB1bmRlZmluZWQgJiZcbiAgICAgICAgICAgICAgICBsaW5rLnVybCAhPT0gJycgJiZcbiAgICAgICAgICAgICAgICBsaW5rLmljb24gIT09ICcnXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgIHRleHQ6IHByb3BzPy50ZXh0cz8udGV4dCxcbiAgICAgICAgICAgIGxpbmtzOiBmaWx0ZXJlZExpbmtzLm1hcCgobGluazogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgIGljb246IGBiYWJ5bG9uLSR7bGluay5uYW1lPy50b0xvd2VyQ2FzZSgpfWAsXG4gICAgICAgICAgICAgICAgdXJsOiBsaW5rLnVybCxcbiAgICAgICAgICAgICAgICBsYWJlbDogbGluay5uYW1lLFxuICAgICAgICAgICAgfSkpLFxuICAgICAgICB9IGFzIEJhYnlsb25Gb290ZXJTb2NpYWxJO1xuICAgIH1cblxuICAgIG1hcFNsaWRlcjJpdGVtcyhwcm9wczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvblNsaWRlcjJpdGVtc0kge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICB0ZXh0OiBwcm9wcz8udGV4dHM/LnRleHQsXG4gICAgICAgICAgICBpdGVtczogcHJvcHM/LnJvb21zPy5tYXAoKGl0ZW06IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICBwcmV0aXRsZTogaXRlbT8udGV4dHM/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtPy50ZXh0cz8ubmFtZSxcbiAgICAgICAgICAgICAgICBpbWc6IHtcbiAgICAgICAgICAgICAgICAgICAgc3JjOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpdGVtPy5tdWx0aW1lZGlhPy5bMF0pLFxuICAgICAgICAgICAgICAgICAgICBhbHQ6IGl0ZW0/Lm11bHRpbWVkaWE/LlswXT8uYWx0LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgLy8gbGluazpcbiAgICAgICAgICAgICAgICBidXR0b25zOiBVdGlscy5tYXBCdXR0b25zKGl0ZW0/LmJ1dHRvbnMpLFxuICAgICAgICAgICAgICAgIHNlcnZpY2VzOiBpdGVtPy5zZXJ2aWNlcz8ubWFwKChpdGVtOiBhbnkpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IGl0ZW0ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgaWNvbjogYGljb24tJHtpdGVtLmNsYXNzfWAsXG4gICAgICAgICAgICAgICAgfSkpLFxuICAgICAgICAgICAgfSkpLFxuICAgICAgICB9IGFzIEJhYnlsb25TbGlkZXIyaXRlbXNJO1xuICAgIH1cblxuICAgIG1hcFN0YXRpY0Zvb3RlcnYyKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uU3RhdGljRm9vdGVyVjJJIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgbmRUaXRsZTogcHJvcHM/LnRleHRzPy5hZGRyZXNzVGl0bGUsXG4gICAgICAgICAgICByZFRpdGxlOiBwcm9wcz8udGV4dHM/LmxpbmtzVGl0bGUsXG4gICAgICAgICAgICB0aFRpdGxlOiBwcm9wcz8udGV4dHM/LmxvY2F0aW9uVGl0bGUsXG4gICAgICAgICAgICBmcmFtZVVybDogcHJvcHM/LnRleHRzPy5mcmFtZVVybCxcbiAgICAgICAgICAgIGltZ1VybDogcHJvcHM/Lm11bHRpbWVkaWE/LmZvb3RlcmltZz8uWzBdPy5saW5rcz8uWzBdPy5saW5rVmFsdWUsXG4gICAgICAgICAgICBjb250YWN0SW5mbzogVXRpbHMubWFwQnV0dG9ucyhwcm9wcz8ubGlua3M/LmNvbnRhY3Q/LlswXSksXG4gICAgICAgICAgICBjb250YWN0TGlua3M6IFV0aWxzLm1hcEJ1dHRvbnMocHJvcHM/LmxpbmtzPy5jb250YWN0TGlua3M/LlswXSksXG4gICAgICAgICAgICBmb290ZXJMaW5rczogVXRpbHMubWFwQnV0dG9ucyhwcm9wcz8ubGlua3M/LmZvb3RlckxpbmtzPy5bMF0pLFxuICAgICAgICAgICAgYWRkcmVzczogQXJyYXkuaXNBcnJheShwcm9wcz8uYWRkcmVzcylcbiAgICAgICAgICAgICAgICA/IHByb3BzLmFkZHJlc3MubWFwKFxuICAgICAgICAgICAgICAgICAgICAgIChhZGRyZXNzOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZDogYWRkcmVzcz8uaWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBhZGRyZXNzPy5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkcmVzczogYWRkcmVzcz8uYWRkcmVzcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNpdHk6IGFkZHJlc3M/LmNpdHksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm92aW5jZTogYWRkcmVzcz8ucHJvdmluY2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3VudHJ5OiBhZGRyZXNzPy5jb3VudHJ5LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3A6IGFkZHJlc3M/LmNwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB9KSBhcyBCYWJ5bG9uQWRkcmVzc0l0ZW1cbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICA6IFtdLFxuICAgICAgICAgICAgc29jaWFsTWVkaWE6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHVybDogcHJvcHM/LnNvY2lhbE1lZGlhPy5bMF0/LnVybCxcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHByb3BzPy50ZXh0cz8uaW5zdGFncmFtVGl0bGUsXG4gICAgICAgICAgICAgICAgfSBhcyBCYWJ5bG9uQnV0dG9uSSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBjb3B5cmlnaHQ6IHByb3BzPy50ZXh0cz8uY29weXJpZ2h0LFxuICAgICAgICAgICAgbmF2OiBwcm9wcz8ubmF2Py5tYXAoXG4gICAgICAgICAgICAgICAgKG5hdjogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IG5hdj8ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVybDogbmF2Py51cmwsXG4gICAgICAgICAgICAgICAgICAgIH0pIGFzIEJhYnlsb25CdXR0b25JXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uZm9vdGVyaW1nPy5bMF0sXG4gICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICksXG4gICAgICAgIH0gYXMgQmFieWxvblN0YXRpY0Zvb3RlclYySTtcbiAgICB9XG5cbiAgICBtYXBMaXN0R3JpZChwcm9wczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvbkxpc3RHcmlkSSB7XG4gICAgICAgIGNvbnN0IHsgaW1hZ2VuZXMgfSA9IHByb3BzPy5tdWx0aW1lZGlhIHx8IFtdO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHByb3BzPy5idXR0b25zKT8uWzBdLFxuICAgICAgICAgICAgbGFiZWxzOiB7XG4gICAgICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGUsXG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgaXRlbXM6IGltYWdlbmVzPy5tYXAoXG4gICAgICAgICAgICAgICAgKGl0ZW06IEltYWdlUmVzcG9uc2UpID0+XG4gICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnMoaXRlbT8uYnV0dG9ucyksXG4gICAgICAgICAgICAgICAgICAgICAgICBsaW5rczogVXRpbHMubWFwQnV0dG9ucyhpdGVtPy5saW5rcyksXG4gICAgICAgICAgICAgICAgICAgICAgICBpbWFnZTogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaXRlbSksXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaXRlbS50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHN1YnRpdGxlOiBpdGVtLnN1YnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2VydmljZXM6IFtdLCAvL1RPRE86IHB0ZSBiYWNrLFxuICAgICAgICAgICAgICAgICAgICB9KSBhcyBCYWJ5bG9uSXRlbUdyaWRJXG4gICAgICAgICAgICApLFxuICAgICAgICB9IGFzIEJhYnlsb25MaXN0R3JpZEk7XG4gICAgfVxuXG4gICAgbWFwTmV3c2xldHRlck1vZGFsKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uTmV3c2xldHRlckkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgY29uZGl0aW9uczogcHJvcHM/LnRleHRzPy5jb25kaXRpb25zLFxuICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICBzdWJ0aXRsZTogcHJvcHM/LnRleHRzPy5zdWJ0aXRsZSxcbiAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyhwcm9wcz8uYnV0dG9ucyk/LlswXSxcbiAgICAgICAgICAgIGlucHV0OiB7XG4gICAgICAgICAgICAgICAgbmFtZTogJ21haWwnLFxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/LmlucHV0SG9sZGVyLFxuICAgICAgICAgICAgICAgIHZhbGlkOiB0cnVlLFxuICAgICAgICAgICAgICAgIHZhbHVlOiAnJyxcbiAgICAgICAgICAgICAgICBlcnJvcjogcHJvcHM/LnRleHRzPy5uZXdzRXJyb3JFbWFpbCxcbiAgICAgICAgICAgIH0gYXMgQmFieWxvbklucHV0SSxcbiAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlYmFja2dyb3VuZD8uWzBdLFxuICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICApLFxuICAgICAgICB9IGFzIEJhYnlsb25OZXdzbGV0dGVySTtcbiAgICB9XG5cbiAgICBtYXBHbG9iYWxNb2RhbChwcm9wczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvbkdsb2JhbE1vZGFsSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgIHN1YnRpdGxlOiBwcm9wcz8udGV4dHM/LnN1YnRpdGxlLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IHByb3BzPy50ZXh0cz8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICBidXR0b25zOiBVdGlscy5tYXBCdXR0b25zKFxuICAgICAgICAgICAgICAgIHByb3BzPy5idXR0b25zLmZpbHRlcigoYnRuOiBhbnkpID0+ICEhYnRuPy5saW5rVmFsdWUpXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgaW1hZ2U6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8uWzBdLFxuICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgaWZyYW1lOiBwcm9wcz8udGV4dHM/LmlmcmFtZSxcbiAgICAgICAgICAgIC8vIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUocHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzPy5bMF0pLFxuICAgICAgICB9IGFzIEJhYnlsb25HbG9iYWxNb2RhbEk7XG4gICAgfVxuXG4gICAgbWFwT2ZmZXJCYW5uZXJWMihwcm9wczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvbk9mZmVyUG9wdXBWMkkgfCB1bmRlZmluZWQge1xuICAgICAgICBsZXQgb2ZmZXJEYXRhO1xuICAgICAgICBpZiAocHJvcHMub2ZmZXJzPy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBjb25zdCBvZmZlciA9IHByb3BzLm9mZmVycz8uWzBdO1xuICAgICAgICAgICAgb2ZmZXJEYXRhID0ge1xuICAgICAgICAgICAgICAgIHRleHRzOiB7XG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBvZmZlcj8udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICBzdWJ0aXRsZTogb2ZmZXI/LnRleHRzPy5zdWJ0aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IG9mZmVyPy50ZXh0cz8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgICAgIGFkZGl0aW9uYWwxOiBvZmZlcj8udGV4dHM/LmFkZGl0aW9uYWwxLFxuICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsMjogb2ZmZXI/LnRleHRzPy5hZGRpdGlvbmFsMixcbiAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbDM6IG9mZmVyPy50ZXh0cz8uYWRkaXRpb25hbDMsXG4gICAgICAgICAgICAgICAgICAgIGFkZGl0aW9uYWw0OiBvZmZlcj8udGV4dHM/LmFkZGl0aW9uYWw0LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKG9mZmVyPy5idXR0b25zKT8uWzBdLFxuICAgICAgICAgICAgICAgIGltYWdlOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICAgICAgb2ZmZXI/Lm11bHRpbWVkaWE/Lmxlbmd0aCA+IDFcbiAgICAgICAgICAgICAgICAgICAgICAgID8gKG9mZmVyPy5tdWx0aW1lZGlhPy5maW5kKChpbWc6IGFueSkgPT4gaW1nLmNvdmVyKSA/P1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2ZmZXI/Lm11bHRpbWVkaWE/LlswXSlcbiAgICAgICAgICAgICAgICAgICAgICAgIDogKG9mZmVyPy5tdWx0aW1lZGlhPy5bMF0gPz9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5kZWZhdWx0aW1hZ2VuZXM/LlswXSksXG4gICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBkaXNjb3VudDogb2ZmZXI/LmRpc2NvdW50LFxuICAgICAgICAgICAgICAgIHByaWNlOiBvZmZlcj8ucHJpY2UsXG4gICAgICAgICAgICAgICAgY3VycmVuY3k6IG9mZmVyPy5jdXJyZW5jeSxcbiAgICAgICAgICAgIH0gYXMgQmFieWxvbk9mZmVyUG9wdXBWMkk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG9mZmVyRGF0YSA/PyBvZmZlckRhdGE7XG4gICAgfVxuXG4gICAgbWFwSGVhZEludHJvKFxuICAgICAgICBwcm9wczogYW55IHwgdW5kZWZpbmVkLFxuICAgICAgICBjb21wb25lbnQ6IGFueSB8IHVuZGVmaW5lZFxuICAgICk6IEJhYnlsb25IZWFkSW50cm9JIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHByZXRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnByZXRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8ucHJldGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8udGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy50aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICB0ZXh0OlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnRleHQgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy50ZXh0XG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy50ZXh0Py5jb250YWluLFxuICAgICAgICAgICAgYnV0dG9uczogVXRpbHMubWFwQnV0dG9ucyhcbiAgICAgICAgICAgICAgICBwcm9wcz8uYnV0dG9ucz8uZmlsdGVyKChidG46IGFueSkgPT4gYnRuPy5saW5rVmFsdWUgIT09IG51bGwpXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICB0ZXh0OiBwcm9wcz8udGV4dHM/LnRleHQ/LnRhZyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0ZXh0Q29sb3JzOiB7XG4gICAgICAgICAgICAgICAgcHJldGl0bGU6XG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LmNvbG9yPy50cmltKCkgPz9cbiAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50Py50ZXh0Y29sb3IsXG4gICAgICAgICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbG9yPy50cmltKCkgPz8gY29tcG9uZW50Py50ZXh0Y29sb3IsXG4gICAgICAgICAgICAgICAgY2F0ZWdvcmllc1RpdGxlOlxuICAgICAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/LmNhdGVnb3JpZXM/LmNvbG9yPy50cmltKCkgPz9cbiAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50Py50ZXh0Y29sb3IsXG4gICAgICAgICAgICAgICAgbGF0ZXN0UG9zdHNUaXRsZTpcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy5sYXRlc3RFbnRyaWVzPy5jb2xvcj8udHJpbSgpID8/XG4gICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudD8udGV4dGNvbG9yLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSBhcyBCYWJ5bG9uSGVhZEludHJvSTtcbiAgICB9XG5cbiAgICBtYXBFeHRlcm5hbFNjcmlwdChcbiAgICAgICAgcHJvcHM6IGFueSB8IHVuZGVmaW5lZFxuICAgICk6IEJhYnlsb25FeHRlcm5hbFNjcmlwdEkgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgc2NyaXB0OiBwcm9wcz8udGV4dHM/LkNvbnRhaW5lcixcbiAgICAgICAgICAgIG1zZ19sb2FkaW5nOiBwcm9wcz8udGV4dHM/LmxvYWRpbmcgPz8gJ0NhcmdhbmRvLi4uJyxcbiAgICAgICAgfSBhcyBCYWJ5bG9uRXh0ZXJuYWxTY3JpcHRJO1xuICAgIH1cblxuICAgIG1hcEJsb2dMaXN0KHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uQmxvZ0xpc3RJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgbGV0IHBvc3RzID0gcHJvcHM/LmJsb2c/LnBvc3RzPy5tYXAoKHBvc3Q6IGFueSkgPT4gKHtcbiAgICAgICAgICAgIGlkOiBwb3N0Py5pZCxcbiAgICAgICAgICAgIHRpdGxlOiBwb3N0Py50ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICBzdWJ0aXRsZTogcG9zdD8udGV4dHM/LnN1YnRpdGxlLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IHBvc3Q/LnRleHRzPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgIGFkZGl0aW9uYWwxOiBwb3N0Py50ZXh0cz8uYWRkaXRpb25hbDEsXG4gICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKHBvc3Q/Lm11bHRpbWVkaWE/LlswXSwgZmFsc2UpLFxuICAgICAgICAgICAgYnV0dG9uczogVXRpbHMubWFwQnV0dG9ucyhwb3N0Py5idXR0b25zKSxcbiAgICAgICAgICAgIHBvc3RVcmw6IFV0aWxzLm1hcEJ1dHRvbnMocG9zdD8uYnV0dG9ucyk/LlswXSxcbiAgICAgICAgICAgIGNhdGVnb3J5OiBwb3N0Py5jYXRlZ29yeSxcbiAgICAgICAgICAgIGRhdGU6IHBvc3Q/LmRhdGUgPyBuZXcgRGF0ZShwb3N0LmRhdGUpIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgYWN0aXZlOiBwb3N0Py5hY3RpdmUsXG4gICAgICAgIH0pKTtcblxuICAgICAgICBwb3N0cyA9IHBvc3RzLnNvcnQoKGE6IGFueSwgYjogYW55KSA9PiB7XG4gICAgICAgICAgICBpZiAoYS5kYXRlICYmIGIuZGF0ZSkgcmV0dXJuIGIuZGF0ZSAtIGEuZGF0ZTsgLy8gYW1ib3MgY29uIGZlY2hhXG4gICAgICAgICAgICBpZiAoYS5kYXRlICYmICFiLmRhdGUpIHJldHVybiAtMTsgLy8gYSB0aWVuZSBmZWNoYSwgYiBub1xuICAgICAgICAgICAgaWYgKCFhLmRhdGUgJiYgYi5kYXRlKSByZXR1cm4gMTsgLy8gYiB0aWVuZSBmZWNoYSwgYSBub1xuICAgICAgICAgICAgcmV0dXJuIDA7IC8vIG5pbmd1bm8gdGllbmUgZmVjaGFcbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gT2J0ZW5lciBsb3MgNCBwb3N0cyBtw6FzIHJlY2llbnRlc1xuICAgICAgICBwb3N0cyA9XG4gICAgICAgICAgICBwb3N0cz8uZmlsdGVyKChwb3N0OiB7IGFjdGl2ZTogYm9vbGVhbiB9KSA9PiBwb3N0LmFjdGl2ZSkgPz9cbiAgICAgICAgICAgIHBvc3RzID8/XG4gICAgICAgICAgICBbXTtcblxuICAgICAgICBjb25zdCBsYXRlc3RQb3N0cyA9IHBvc3RzPy5zbGljZSgwLCA0KTtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcHJldGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8ucHJldGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy5wcmV0aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICB0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy50aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy50aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgY2F0ZWdvcmllc1RpdGxlOiBwcm9wcz8udGV4dHM/LmNhdGVnb3JpZXM/LnRhZyxcbiAgICAgICAgICAgICAgICBsYXRlc3RQb3N0c1RpdGxlOiBwcm9wcz8udGV4dHM/LmxhdGVzdEVudHJpZXM/LnRhZyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0ZXh0Q29sb3JzOiB7XG4gICAgICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICAgICAgY2F0ZWdvcmllc1RpdGxlOiBwcm9wcz8udGV4dHM/LmNhdGVnb3JpZXM/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICAgICAgbGF0ZXN0UG9zdHNUaXRsZTogcHJvcHM/LnRleHRzPy5sYXRlc3RFbnRyaWVzPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNlYXJjaFBsYWNlSG9sZGVyOiBwcm9wcz8udGV4dHM/LnNlYXJjaFBsYWNlSG9sZGVyLFxuICAgICAgICAgICAgbm90Zm91bmRUZXh0OiBwcm9wcz8udGV4dHM/LnNlYXJjaE5vdEZvdW5kLFxuICAgICAgICAgICAgcG9zdHM6IHBvc3RzLFxuICAgICAgICAgICAgY2F0ZWdvcmllc1RpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LmNhdGVnb3JpZXMgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy5jYXRlZ29yaWVzXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy5jYXRlZ29yaWVzPy5jb250YWluLFxuICAgICAgICAgICAgY2F0ZWdvcmllczogcHJvcHM/LnBvc3RDYXRlZ29yaWVzPy5tYXAoKGNhdGVnb3J5OiBhbnkpID0+ICh7XG4gICAgICAgICAgICAgICAgaWQ6IGNhdGVnb3J5Py5pZCxcbiAgICAgICAgICAgICAgICB0aXRsZTogY2F0ZWdvcnk/Lm5hbWUsXG4gICAgICAgICAgICAgICAgcG9zdHM6IGNhdGVnb3J5Py50b3RhbFBvc3RzLFxuICAgICAgICAgICAgfSkpLFxuICAgICAgICAgICAgbGF0ZXN0UG9zdHNUaXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy5sYXRlc3RFbnRyaWVzID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8ubGF0ZXN0RW50cmllc1xuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8ubGF0ZXN0RW50cmllcz8uY29udGFpbixcbiAgICAgICAgICAgIGxhdGVzdFBvc3RzOiBsYXRlc3RQb3N0cyxcbiAgICAgICAgICAgIGFudGVyaW9yOiBwcm9wcz8udGV4dHM/LmFudGVyaW9yLFxuICAgICAgICAgICAgc2lndWllbnRlOiBwcm9wcz8udGV4dHM/LnNpZ3VpZW50ZSxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBtYXBCbG9nRGV0YWlsKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uQmxvZ0RldGFpbHNJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgY29uc3QgY3VycmVudFBvc3RJZCA9IHByb3BzPy5wb3N0Py5pZDtcbiAgICAgICAgY29uc3QgcG9zdHMgPSBwcm9wcz8ucmVsYXRlZFBvc3RzPy5tYXAoKHBvc3Q6IGFueSkgPT4gKHtcbiAgICAgICAgICAgIGlkOiBwb3N0Py5pZCxcbiAgICAgICAgICAgIHRpdGxlOiBwb3N0Py50ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICBzdWJ0aXRsZTogcG9zdD8udGV4dHM/LnN1YnRpdGxlLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IHBvc3Q/LnRleHRzPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgcG9zdD8ubXVsdGltZWRpYT8uaW1hZ2VuZXM/LlswXSxcbiAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGJ1dHRvbnM6IFV0aWxzLm1hcEJ1dHRvbnMocG9zdD8uYnV0dG9ucyksXG4gICAgICAgICAgICBwb3N0VXJsOiBVdGlscy5tYXBCdXR0b25zKHBvc3Q/LmJ1dHRvbnMpPy5bMF0sXG4gICAgICAgICAgICBjYXRlZ29yeTogcG9zdD8uY2F0ZWdvcnksXG4gICAgICAgICAgICBkYXRlOiBwb3N0Py5kYXRlID8gbmV3IERhdGUocG9zdC5kYXRlKSA6IHVuZGVmaW5lZCxcbiAgICAgICAgfSkpO1xuXG4gICAgICAgIGNvbnN0IGNhbmRpZGF0ZXMgPSAocG9zdHMgfHwgW10pLmZpbHRlcihcbiAgICAgICAgICAgIChwOiBhbnkpID0+IHA/LmlkICE9PSBjdXJyZW50UG9zdElkXG4gICAgICAgICk7XG5cbiAgICAgICAgbGV0IHJlbGF0ZWRQb3N0c0NvbnN0ID1cbiAgICAgICAgICAgIGNhbmRpZGF0ZXNcbiAgICAgICAgICAgICAgICAuZmlsdGVyKChwOiBhbnkpID0+IHA/LmRhdGUpXG4gICAgICAgICAgICAgICAgLnNvcnQoKGE6IGFueSwgYjogYW55KSA9PiAoYi5kYXRlIGFzIGFueSkgLSAoYS5kYXRlIGFzIGFueSkpXG4gICAgICAgICAgICAgICAgLnNsaWNlKDAsIDQpIHx8IFtdO1xuICAgICAgICBpZiAocmVsYXRlZFBvc3RzQ29uc3QubGVuZ3RoIDwgNCkge1xuICAgICAgICAgICAgY29uc3Qgd2l0aG91dERhdGUgPSBjYW5kaWRhdGVzLmZpbHRlcigocDogYW55KSA9PiAhcD8uZGF0ZSk7XG4gICAgICAgICAgICByZWxhdGVkUG9zdHNDb25zdCA9IHJlbGF0ZWRQb3N0c0NvbnN0LmNvbmNhdChcbiAgICAgICAgICAgICAgICB3aXRob3V0RGF0ZS5zbGljZSgwLCA0IC0gcmVsYXRlZFBvc3RzQ29uc3QubGVuZ3RoKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aXRsZTogcHJvcHM/LnBvc3Q/LnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgIHN1YnRpdGxlOiBwcm9wcz8ucG9zdD8udGV4dHM/LnN1YnRpdGxlLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IHByb3BzPy5wb3N0Py50ZXh0cz8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICBhZGRpdGlvbmFsMTogcHJvcHM/LnBvc3Q/LnRleHRzPy5hZGRpdGlvbmFsMSxcbiAgICAgICAgICAgIGFkZGl0aW9uYWwyOiBwcm9wcz8ucG9zdD8udGV4dHM/LmFkZGl0aW9uYWwyLFxuICAgICAgICAgICAgYWRkaXRpb25hbDM6IHByb3BzPy5wb3N0Py50ZXh0cz8uYWRkaXRpb25hbDMsXG4gICAgICAgICAgICBhZGRpdGlvbmFsNDogcHJvcHM/LnBvc3Q/LnRleHRzPy5hZGRpdGlvbmFsNCxcbiAgICAgICAgICAgIGRhdGU6IHByb3BzPy5wb3N0Py5kYXRlID8gbmV3IERhdGUocHJvcHM/LnBvc3Q/LmRhdGUpIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgY2F0ZWdvcnk6IHByb3BzPy5wb3N0Py5jYXRlZ29yeSxcbiAgICAgICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgY2F0ZWdvcmllc1RpdGxlOiBwcm9wcz8udGV4dHM/LmNhdGVnb3JpZXM/LnRhZyxcbiAgICAgICAgICAgICAgICBsYXRlc3RQb3N0c1RpdGxlOiBwcm9wcz8udGV4dHM/LmxhdGVzdEVudHJpZXM/LnRhZyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0ZXh0Q29sb3JzOiB7XG4gICAgICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICAgICAgY2F0ZWdvcmllc1RpdGxlOiBwcm9wcz8udGV4dHM/LmNhdGVnb3JpZXM/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICAgICAgbGF0ZXN0UG9zdHNUaXRsZTogcHJvcHM/LnRleHRzPy5sYXRlc3RFbnRyaWVzPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNlYXJjaFBsYWNlSG9sZGVyOiBwcm9wcz8udGV4dHM/LnNlYXJjaFBsYWNlSG9sZGVyLFxuICAgICAgICAgICAgY2F0ZWdvcmllc1RpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LmNhdGVnb3JpZXMgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy5jYXRlZ29yaWVzXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy5jYXRlZ29yaWVzPy5jb250YWluLFxuICAgICAgICAgICAgY2F0ZWdvcmllczogcHJvcHM/LnBvc3RDYXRlZ29yaWVzPy5tYXAoKGNhdGVnb3J5OiBhbnkpID0+ICh7XG4gICAgICAgICAgICAgICAgaWQ6IGNhdGVnb3J5Py5pZCxcbiAgICAgICAgICAgICAgICB0aXRsZTogY2F0ZWdvcnk/Lm5hbWUsXG4gICAgICAgICAgICAgICAgcG9zdHM6IGNhdGVnb3J5Py50b3RhbFBvc3RzLFxuICAgICAgICAgICAgfSkpLFxuICAgICAgICAgICAgcmVsYXRlZFBvc3RzVGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8ubGF0ZXN0RW50cmllcyA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LmxhdGVzdEVudHJpZXNcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LmxhdGVzdEVudHJpZXM/LmNvbnRhaW4sXG4gICAgICAgICAgICByZWxhdGVkUG9zdHM6IHJlbGF0ZWRQb3N0c0NvbnN0LFxuICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHByb3BzPy5idXR0b25zKT8uWzBdLFxuICAgICAgICAgICAgc2hhcmU6IHByb3BzPy50ZXh0cz8uc2hhcmUsXG4gICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgIHByb3BzPy5wb3N0Py5tdWx0aW1lZGlhPy5pbWFnZW5lcz8uWzBdLFxuICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICApLFxuICAgICAgICB9IGFzIEJhYnlsb25CbG9nRGV0YWlsc0k7XG4gICAgfVxuXG4gICAgbWFwTW9kYWxNdWx0aXBsZU1vdG9ycyhcbiAgICAgICAgcHJvcHM6IGFueSB8IHVuZGVmaW5lZFxuICAgICk6IEJhYnlsb25Nb2RhbE11bHRpcGxlTW90b3JzSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBsb2dvOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXM/LlswXSxcbiAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlLFxuICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICBidXR0b25zOiBVdGlscy5tYXBCdXR0b25zKFxuICAgICAgICAgICAgICAgIHByb3BzPy5saW5rc1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy5saW5rcz8uZmlsdGVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAoYnRuOiBhbnkpID0+IGJ0bj8ubGlua1ZhbHVlICE9PSBudWxsXG4gICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy5idXR0b25zPy5maWx0ZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChidG46IGFueSkgPT4gYnRuPy5saW5rVmFsdWUgIT09IG51bGxcbiAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApLFxuICAgICAgICB9IGFzIEJhYnlsb25Nb2RhbE11bHRpcGxlTW90b3JzSTtcbiAgICB9XG4gICAgbWFwT2ZmZXJCYW5uZXIocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25PZmZlclBvcHVwSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGxldCBvZmZlckRhdGE7XG4gICAgICAgIGlmIChwcm9wcy5vZmZlcnM/Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGNvbnN0IG9mZmVyID0gcHJvcHMub2ZmZXJzPy5bMF07XG4gICAgICAgICAgICBvZmZlckRhdGEgPSB7XG4gICAgICAgICAgICAgICAgdGV4dHM6IHtcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IG9mZmVyPy50ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICAgICAgICAgIHN1YnRpdGxlOiBvZmZlcj8udGV4dHM/LnN1YnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogb2ZmZXI/LnRleHRzPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbDE6IG9mZmVyPy50ZXh0cz8uYWRkaXRpb25hbDEsXG4gICAgICAgICAgICAgICAgICAgIGFkZGl0aW9uYWwyOiBvZmZlcj8udGV4dHM/LmFkZGl0aW9uYWwyLFxuICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsMzogb2ZmZXI/LnRleHRzPy5hZGRpdGlvbmFsMyxcbiAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbDQ6IG9mZmVyPy50ZXh0cz8uYWRkaXRpb25hbDQsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnMob2ZmZXI/LmJ1dHRvbnMpPy5bMF0sXG4gICAgICAgICAgICAgICAgaW1hZ2U6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgICAgICBvZmZlcj8ubXVsdGltZWRpYT8ubGVuZ3RoID4gMVxuICAgICAgICAgICAgICAgICAgICAgICAgPyAob2ZmZXI/Lm11bHRpbWVkaWE/LmZpbmQoKGltZzogYW55KSA9PiBpbWcuY292ZXIpID8/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZlcj8ubXVsdGltZWRpYT8uWzBdKVxuICAgICAgICAgICAgICAgICAgICAgICAgOiAob2ZmZXI/Lm11bHRpbWVkaWE/LlswXSA/P1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmRlZmF1bHRpbWFnZW5lcz8uWzBdKSxcbiAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGFkZGl0aW9uYWxCdXR0b25zOiBVdGlscy5tYXBCdXR0b25zKFxuICAgICAgICAgICAgICAgICAgICBwcm9wcz8uYnV0dG9ucz8uZmlsdGVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgKGJ0bjogYW55KSA9PiBidG4/LmxpbmtWYWx1ZSAhPT0gbnVsbFxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIH0gYXMgQmFieWxvbk9mZmVyUG9wdXBJO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBvZmZlckRhdGEgPz8gb2ZmZXJEYXRhO1xuICAgIH1cblxuICAgIG1hcE1vZGFsUG9wdXAocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25Nb2RhbFBvcHVwSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgIHN1YnRpdGxlOiBwcm9wcz8udGV4dHM/LnN1YnRpdGxlLFxuICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8uaW5wdXRIb2xkZXIsXG4gICAgICAgICAgICBvcHRpb25zOiBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXM/Lm1hcCgob3B0aW9uOiBhbnkpID0+ICh7XG4gICAgICAgICAgICAgICAgbGFiZWw6IG9wdGlvbj8udGl0bGUsXG4gICAgICAgICAgICAgICAgdmFsdWU6IG9wdGlvbj8uc3VidGl0bGUsXG4gICAgICAgICAgICAgICAgdGl0bGU6IG9wdGlvbj8udGl0bGUsXG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IG9wdGlvbj8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgaW1hZ2U6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKG9wdGlvbiwgZmFsc2UpLFxuICAgICAgICAgICAgfSkpLFxuICAgICAgICAgICAgaW1hZ2U6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5tb2RhbGltYWdlPy5bMF0sXG4gICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICksXG4gICAgICAgIH0gYXMgQmFieWxvbk1vZGFsUG9wdXBJO1xuICAgIH1cblxuICAgIG1hcFByZXNzTGlzdChwcm9wczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvblByZXNzTGlzdEkgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogcHJvcHM/LnRleHRzPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgIGl0ZW1zOiBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXM/Lm1hcCgoaXRlbTogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtPy50aXRsZSxcbiAgICAgICAgICAgICAgICBzdWJ0aXRsZTogaXRlbT8uc3VidGl0bGUsXG4gICAgICAgICAgICAgICAgaW1hZ2U6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGl0ZW0sIGZhbHNlKSxcbiAgICAgICAgICAgICAgICBsaW5rOiBVdGlscy5tYXBCdXR0b25zKGl0ZW0/LmxpbmtzKT8uWzBdLFxuICAgICAgICAgICAgfSkpLFxuICAgICAgICAgICAgYnV0dG9uczogVXRpbHMubWFwQnV0dG9ucyhwcm9wcz8uYnV0dG9ucyksXG4gICAgICAgIH0gYXMgQmFieWxvblByZXNzTGlzdEk7XG4gICAgfVxuXG4gICAgbWFwQWN0aW9uQmFubmVyKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uQWN0aW9uQmFubmVySSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBpbWFnZTogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmFjdGlvbmJhbm5lcmltYWdlPy5bMF0sXG4gICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBpbWFnZTI6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5hY3Rpb25iYW5uZXJpbWFnZTI/LlswXSxcbiAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyhwcm9wcz8uYnV0dG9ucyk/LlswXSxcbiAgICAgICAgICAgIHRhYmxlOiBwcm9wcz8udGV4dHM/LnRhYmxlLFxuICAgICAgICAgICAgc2FsYTE6IHByb3BzPy50ZXh0cz8uc2FsYTEsXG4gICAgICAgICAgICBzYWxhMjogcHJvcHM/LnRleHRzPy5zYWxhMixcbiAgICAgICAgfSBhcyBCYWJ5bG9uQWN0aW9uQmFubmVySTtcbiAgICB9XG4gICAgbWFwSW5mb1ppZ1phZ0NvdW50ZXIoXG4gICAgICAgIHByb3BzOiBhbnkgfCB1bmRlZmluZWRcbiAgICApOiBCYWJ5bG9uSW5mb1ppZ1phZ0NvdW50ZXJJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgbGV0IGltYWdlczogKHN0cmluZyB8IEJhYnlsb25JbWFnZUkpW10gfCB1bmRlZmluZWQgPSBbXTtcbiAgICAgICAgbGV0IHRleHRzLCB0YWdzO1xuICAgICAgICBjb25zdCBkYXRlU3RhcnQgPSBwcm9wcz8udGV4dHM/LmRhdGVzdGFydDtcbiAgICAgICAgY29uc3QgZGF0ZUZpbmlzaCA9IHByb3BzPy50ZXh0cz8uZGF0ZWZpbmlzaDtcbiAgICAgICAgaWYgKHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcykge1xuICAgICAgICAgICAgaW1hZ2VzID0gdGhpcy5nZXRBcnJheUltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXMsXG4gICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICB0ZXh0cyA9IHtcbiAgICAgICAgICAgICAgICBwcmV0aXRsZTpcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8uY29udGFpbiA/P1xuICAgICAgICAgICAgICAgICAgICAodHlwZW9mIHByb3BzPy50ZXh0cz8ucHJldGl0bGUgPT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy5wcmV0aXRsZVxuICAgICAgICAgICAgICAgICAgICAgICAgOiB1bmRlZmluZWQpLFxuICAgICAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb250YWluID8/XG4gICAgICAgICAgICAgICAgICAgICh0eXBlb2YgcHJvcHM/LnRleHRzPy50aXRsZSA9PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnRpdGxlXG4gICAgICAgICAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZCksXG4gICAgICAgICAgICAgICAgY29udGVudHRpdGxlOlxuICAgICAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/LmNvbnRlbnR0aXRsZT8uY29udGFpbiA/P1xuICAgICAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/LmNvbnRlbnR0aXRsZSxcbiAgICAgICAgICAgICAgICBjb250ZW50c3VidGl0bGU6XG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy50ZXh0cz8uY29udGVudHN1YnRpdGxlPy5jb250YWluID8/XG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy50ZXh0cz8uY29udGVudHN1YnRpdGxlLFxuICAgICAgICAgICAgICAgIGNvbnRlbnRkZXNjcmlwdGlvbjpcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy5jb250ZW50ZGVzY3JpcHRpb24/LmNvbnRhaW4gPz9cbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy5jb250ZW50ZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgbG9nbzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5sb2dvPy5bMF0sXG4gICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBpY29uczogcHJvcHM/LlZlbnRhamFzPy5maWx0ZXIoXG4gICAgICAgICAgICAgICAgICAgIChpdGVtOiBhbnkpID0+IGl0ZW0/LnRpdGxlIHx8IGl0ZW0/LnRleHRcbiAgICAgICAgICAgICAgICApPy5tYXAoKGl0ZW06IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0udGl0bGUsXG4gICAgICAgICAgICAgICAgICAgIHRleHQ6IGl0ZW0udGV4dCxcbiAgICAgICAgICAgICAgICAgICAgaWNvbjogYGljb24tJHtpdGVtLmljb259YCxcbiAgICAgICAgICAgICAgICB9KSksXG4gICAgICAgICAgICAgICAgaWNvblRpdGxlOlxuICAgICAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/Lmljb250aXRsZT8uY29udGFpbiA/PyBwcm9wcz8udGV4dHM/Lmljb250aXRsZSxcbiAgICAgICAgICAgICAgICBkYXlzVGV4dDogcHJvcHM/LnRleHRzPy5kYXlzdGV4dCxcbiAgICAgICAgICAgICAgICBob3Vyc1RleHQ6IHByb3BzPy50ZXh0cz8uaG91cnN0ZXh0LFxuICAgICAgICAgICAgICAgIG1pbnV0ZXNUZXh0OiBwcm9wcz8udGV4dHM/Lm1pbnV0ZXN0ZXh0LFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHRhZ3MgPSB7XG4gICAgICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIGNvbnRlbnR0aXRsZTogcHJvcHM/LnRleHRzPy5jb250ZW50dGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICBjb250ZW50c3VidGl0bGU6IHByb3BzPy50ZXh0cz8uY29udGVudHN1YnRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgY29udGVudGRlc2NyaXB0aW9uOiBwcm9wcz8udGV4dHM/LmNvbnRlbnRkZXNjcmlwdGlvbj8udGFnLFxuICAgICAgICAgICAgICAgIGljb25UaXRsZTogcHJvcHM/LnRleHRzPy5pY29udGl0bGU/LnRhZyxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGJ1dHRvbnM6IFV0aWxzLm1hcEJ1dHRvbnMoXG4gICAgICAgICAgICAgICAgcHJvcHM/LmJ1dHRvbnMuZmlsdGVyKChidG46IGFueSkgPT4gISFidG4/LmxpbmtWYWx1ZSlcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICB0ZXh0cyxcbiAgICAgICAgICAgIGltYWdlcyxcbiAgICAgICAgICAgIHRhZ3MsXG4gICAgICAgICAgICBkYXRlU3RhcnQsXG4gICAgICAgICAgICBkYXRlRmluaXNoLFxuICAgICAgICB9IGFzIEJhYnlsb25JbmZvWmlnWmFnQ291bnRlckk7XG4gICAgfVxuICAgIG1hcEdyQzJJbWcocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25HckMySW1nSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aXRsZTpcbiAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb250YWluID8/XG4gICAgICAgICAgICAgICAgKHR5cGVvZiBwcm9wcz8udGV4dHM/LnRpdGxlID09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy50aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZCksXG4gICAgICAgICAgICB0YWdzOiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LnRhZyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0ZXh0Q29sb3JzOiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBpdGVtczogcHJvcHM/LmhvdGVscz8ubWFwKChpdGVtOiBhbnkpID0+ICh7XG4gICAgICAgICAgICAgICAgc3VidGl0bGU6IGl0ZW0/LnRleHRzPy5hZGRpdGlvbmFsMSxcbiAgICAgICAgICAgICAgICB0aXRsZTogaXRlbT8udGV4dHM/Lm5hbWUsXG4gICAgICAgICAgICAgICAgaW1nOiB7XG4gICAgICAgICAgICAgICAgICAgIHNyYzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaXRlbT8ubXVsdGltZWRpYT8uWzBdKSxcbiAgICAgICAgICAgICAgICAgICAgYWx0OiBpdGVtPy5tdWx0aW1lZGlhPy5bMF0/LmFsdCxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGxpbms6IFV0aWxzLm1hcEJ1dHRvbnMoaXRlbT8ubGlua3MpLFxuICAgICAgICAgICAgfSkpLFxuICAgICAgICB9IGFzIEJhYnlsb25HckMySW1nSTtcbiAgICB9XG4gICAgbWFwTGlzQzRUeHRJY28ocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25MaXNDNFR4dEljb0kgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gcHJvcHM7XG4gICAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEltYWdlUmVzcG9uc2Uge1xuICAgIHBhdGg6IEltYWdlUmVzcG9uc2VQYXRoO1xuICAgIHRodW1ibmFpbHM6IHtcbiAgICAgICAgMzc1OiBJbWFnZVJlc3BvbnNlUGF0aDtcbiAgICAgICAgNTQwOiBJbWFnZVJlc3BvbnNlUGF0aDtcbiAgICAgICAgNzY4OiBJbWFnZVJlc3BvbnNlUGF0aDtcbiAgICAgICAgODAwOiBJbWFnZVJlc3BvbnNlUGF0aDtcbiAgICAgICAgMTAyNDogSW1hZ2VSZXNwb25zZVBhdGg7XG4gICAgICAgIDEyODA6IEltYWdlUmVzcG9uc2VQYXRoO1xuICAgICAgICAxMzY2OiBJbWFnZVJlc3BvbnNlUGF0aDtcbiAgICB9O1xuICAgIGNvdmVyOiBudW1iZXI7XG4gICAgdGFncz86IGFueVtdO1xuICAgIHRpdGxlPzogc3RyaW5nO1xuICAgIHByZXRpdGxlPzogc3RyaW5nO1xuICAgIHN1YnRpdGxlPzogc3RyaW5nO1xuICAgIG5kVGl0bGU/OiBzdHJpbmc7XG4gICAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gICAgbGlua3M/OiBhbnlbXTtcbiAgICBidXR0b25zPzogYW55W107XG4gICAgYWx0Pzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEltYWdlUmVzcG9uc2VQYXRoIHtcbiAgICBvcmlnaW5hbDogc3RyaW5nO1xuICAgIHdlYnA6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb21wb25lbnRzQWRkb25zIHtcbiAgICBjb250YWN0T2ZmaWNlPzogYW55O1xuICAgIG1lbnVTb2NpYWxNZWRpYT86IHsgW2s6IHN0cmluZ106IHN0cmluZyB9W107XG4gICAgY29uc3VsdFR5cGU/OiBDb25zdWx0VHlwZUk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmlsdGVyT3B0aW9uIHtcbiAgICBpZD86IG51bWJlcjtcbiAgICBuYW1lPzogc3RyaW5nO1xuICAgIGNoaWxkcmVuPzogRmlsdGVyT3B0aW9uO1xufVxuIl19
|
|
2916
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwcGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYWJ5bG9uL3NyYy9saWIvc2VydmljZXMvbWFwcGVyL21hcHBlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3BELE9BQU8sRUFDSCxRQUFRLEVBQ1IsTUFBTSxFQUNOLFVBQVUsRUFDVixXQUFXLEVBRVgsTUFBTSxHQUNULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQWtHNUMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQW9CbEQsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzFDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3JELE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDOztBQUtuRSxNQUFNLE9BQU8sYUFBYTtJQUgxQjtRQUlxQixZQUFPLEdBQUcsTUFBTSxDQUFDLHlCQUF5QixDQUFDLENBQUM7UUFDNUMsZ0JBQVcsR0FBRyxNQUFNLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQU0xRCxrQkFBYSxHQUFHLE1BQU0sQ0FBcUMsU0FBUyxDQUFDLENBQUM7UUFFdEUsV0FBTSxHQUFtQixRQUFRLENBQzdCLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLEVBQUUsTUFBTSxDQUM5QyxDQUFDO1FBSU0sZUFBVSxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztLQTQxSDVDO0lBeDJIRyxJQUFJLHNCQUFzQjtRQUN0QixPQUFPLElBQUksQ0FBQyxXQUFX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LENBQzFDLFNBQVMsQ0FBQyxLQUFLLENBQ2IsQ0FBQzs0QkFDUCxNQUFNO3dCQUVWLEtBQUssWUFBWTs0QkFDYixlQUFlLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQ3RDLFNBQVMsQ0FBQyxLQUFLLENBQ2IsQ0FBQzs0QkFDUCxNQUFNO3dCQUVWLEtBQUssV0FBVzs0QkFDWixlQUFlLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQ3JDLFNBQVMsQ0FBQyxLQUFLLENBQ2IsQ0FBQzs0QkFDUCxNQUFNO3dCQUVWLEtBQUssWUFBWTs0QkFDYixlQUFlLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQ3RDLFNBQVMsQ0FBQyxLQUFLLENBQ2IsQ0FBQzs0QkFDUCxNQUFNO3dCQUVWLEtBQUssYUFBYTs0QkFDZCxlQUFlLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQ3ZDLFNBQVMsQ0FBQyxLQUFLLENBQ2IsQ0FBQzs0QkFDUCxNQUFNO3dCQUVWLEtBQUssWUFBWTs0QkFDYixlQUFlLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQ3RDLFNBQVMsQ0FBQyxLQUFLLENBQ2IsQ0FBQzs0QkFDUCxNQUFNO3dCQUVWLEtBQUssS0FBSzs0QkFDTixlQUFlLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQy9CLFNBQVMsQ0FBQyxLQUFLLENBQ2IsQ0FBQzs0QkFDUCxNQUFNO3dCQUVWLEtBQUssY0FBYzs0QkFDZixlQUFlLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQ3hDLFNBQVMsQ0FBQyxLQUFLLENBQ2IsQ0FBQzs0QkFDUCxNQUFNO3dCQUVWLEtBQUssU0FBUzs0QkFDVixlQUFlLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQ25DLFNBQVMsQ0FBQyxLQUFLLENBQ2IsQ0FBQzs0QkFDUCxNQUFNO3dCQUVWLEtBQUssS0FBSzs0QkFDTixlQUFlLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQ2hDLFNB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ZW50IjpbImltcG9ydCB7IGlzUGxhdGZvcm1Ccm93c2VyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gICAgY29tcHV0ZWQsXG4gICAgaW5qZWN0LFxuICAgIEluamVjdGFibGUsXG4gICAgUExBVEZPUk1fSUQsXG4gICAgU2lnbmFsLFxuICAgIHNpZ25hbCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtcbiAgICBCYWJ5bG9uNDA0SSxcbiAgICBCYWJ5bG9uQWN0aW9uQmFubmVySSxcbiAgICBCYWJ5bG9uQWRkcmVzc0l0ZW0sXG4gICAgQmFieWxvbkFkdmFudGFnZXNJLFxuICAgIEJhYnlsb25CYW5uZXJHYWxsZXJ5SSxcbiAgICBCYWJ5bG9uQmFubmVySW5mb0ksXG4gICAgQmFieWxvbkJsb2dEZXRhaWxzSSxcbiAgICBCYWJ5bG9uQmxvZ0xpc3RJLFxuICAgIEJhYnlsb25CcmVhZGNydW1iSSxcbiAgICBCYWJ5bG9uQ29taW5nU29vbkksXG4gICAgQmFieWxvbkNvbnRhY3RBZGRyZXNzSSxcbiAgICBCYWJ5bG9uQ29udGFjdEZvcm1JLFxuICAgIEJhYnlsb25Db250YWN0SG93SSxcbiAgICBCYWJ5bG9uQ29udGFjdE1hcGFJLFxuICAgIEJhYnlsb25Db250YWN0TWFwSXRlbSxcbiAgICBCYWJ5bG9uRW5naW5lSSxcbiAgICBCYWJ5bG9uRW5naW5lTW9kYWxJLFxuICAgIEJhYnlsb25FcXVpcG1lbnRJdGVtLFxuICAgIEJhYnlsb25FeHRlcm5hbFNjcmlwdEksXG4gICAgQmFieWxvbkZhcUksXG4gICAgQmFieWxvbkZlYXR1cmVzU2xpZGVySSxcbiAgICBCYWJ5bG9uRmVhdHVyZXNTbGlkZXJJdGVtLFxuICAgIEJhYnlsb25GbG9hdGluZ0J1dHRvbnNJLFxuICAgIEJhYnlsb25Gb290ZXJDb250YWN0SSxcbiAgICBCYWJ5bG9uRm9vdGVyTGlua3NJLFxuICAgIEJhYnlsb25Gb290ZXJMb2dvc0ksXG4gICAgQmFieWxvbkZvb3RlclNvY2lhbEksXG4gICAgQmFieWxvbkdhbGxlcnlGaWx0ZXIsXG4gICAgQmFieWxvbkdhbGxlcnlJLFxuICAgIEJhYnlsb25HYWxsZXJ5SXRlbSxcbiAgICBCYWJ5bG9uR3JDMkltZ0ksXG4gICAgQmFieWxvbkhlYWRlckJvb2tTaG93SSxcbiAgICBCYWJ5bG9uSGVhZGVyQ2xlYXJJLFxuICAgIEJhYnlsb25IZWFkZXJNZW51Q2VudGVySSxcbiAgICBCYWJ5bG9uSGVhZGVyTWVudUxvZ29DZW50ZXJJLFxuICAgIEJhYnlsb25IZWFkZXJNZW51U2hvd0ksXG4gICAgQmFieWxvbkhlYWRJbnRyb0ksXG4gICAgQmFieWxvbkhvdGVsc0xpc3RJLFxuICAgIEJhYnlsb25Ib3RlbHNTbGlkZXJJLFxuICAgIEJhYnlsb25JbmZvMkNvbEltZ0ksXG4gICAgQmFieWxvbkluZm8yaW1nQmlnSSxcbiAgICBCYWJ5bG9uSW5mbzJpbWdJLFxuICAgIEJhYnlsb25JbmZvNGltZ0ksXG4gICAgQmFieWxvbkluZm9CaWdJLFxuICAgIEJhYnlsb25JbmZvR3JpZEksXG4gICAgQmFieWxvbkluZm9HcmlkSXRlbUksXG4gICAgQmFieWxvbkluZm9JbWdJLFxuICAgIEJhYnlsb25JbmZvSW1nU2xpZGVySSxcbiAgICBCYWJ5bG9uSW5mb0ltZ1NsaWRlckl0ZW1JLFxuICAgIEJhYnlsb25JbmZvSW50cm9JLFxuICAgIEJhYnlsb25JbmZvWmlnWmFnQ291bnRlckksXG4gICAgQmFieWxvbkluZm9aaWd6YWdWMkksXG4gICAgQmFieWxvbkluZm9aaWd6YWdWMkl0ZW0sXG4gICAgQmFieWxvbkl0ZW1zR3JpZEksXG4gICAgQmFieWxvbkxhbmd1YWdlTW9kYWxJLFxuICAgIEJhYnlsb25MZWdhbEksXG4gICAgQmFieWxvbkxpc0M0VHh0SWNvSSxcbiAgICBCYWJ5bG9uTW9kYWxNdWx0aXBsZU1vdG9yc0ksXG4gICAgQmFieWxvbk5ld3NsZXR0ZXJJLFxuICAgIEJhYnlsb25PZmZlckRldGFpbEksXG4gICAgQmFieWxvbk9mZmVySSxcbiAgICBCYWJ5bG9uT2ZmZXJQb3B1cEksXG4gICAgQmFieWxvbk9mZmVyUG9wdXBWMkksXG4gICAgQmFieWxvbk9mZmVyU2xpZGVySSxcbiAgICBCYWJ5bG9uT2ZmZXJzTGlzdEksXG4gICAgQmFieWxvbk9mZmVyc0xpc3RJdGVtLFxuICAgIEJhYnlsb25QcmVzc0xpc3RJLFxuICAgIEJhYnlsb25Sb29tSW5mb0ksXG4gICAgQmFieWxvblJvb21zQ29sc0ksXG4gICAgQmFieWxvblJvb21zR3JpZEksXG4gICAgQmFieWxvblJvb21zTGlzdEVxdWlwbWVudCxcbiAgICBCYWJ5bG9uUm9vbXNMaXN0SSxcbiAgICBCYWJ5bG9uUm9vbXNMaXN0SXRlbSxcbiAgICBCYWJ5bG9uUm9vbXNTbGlkZXJJLFxuICAgIEJhYnlsb25TZXJ2aWNlc1NsaWRlckksXG4gICAgQmFieWxvblNsaWRlcjJDb2xJdGVtSSxcbiAgICBCYWJ5bG9uU2xpZGVyMml0ZW1zSSxcbiAgICBCYWJ5bG9uU2xpZGVyM0l0ZW1zSSxcbiAgICBCYWJ5bG9uU2xpZGVyNGNvbExhYmVscyxcbiAgICBCYWJ5bG9uU2xpZGVySXRlbSxcbiAgICBCYWJ5bG9uU3RhdGljRm9vdGVySSxcbiAgICBCYWJ5bG9uU3VibWVudUksXG4gICAgQmFieWxvblRoYW5rc0ksXG4gICAgQmFieWxvblRvcFNsaWRlckksXG4gICAgQmFieWxvblRvcFNsaWRlckl0ZW0sXG4gICAgQmFieWxvblRvcFNsaWRlclRodW1ic0ksXG4gICAgQmFieWxvblRvcFNsaWRlclYySSxcbiAgICBCYWJ5bG9uVG9wU2xpZGVyVmlkZW9JLFxuICAgIEJhYnlsb25XZWJtYXBJLFxuICAgIERyb3Bkb3duT3B0aW9uLFxufSBmcm9tICcuLi8uLi9jb21wb25lbnRzL2NvcmUnO1xuaW1wb3J0IHsgQmFieWxvbkdsb2JhbE1vZGFsSSB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvY29yZS9iYWJ5bG9uLWdsb2JhbC1tb2RhbCc7XG5pbXBvcnQgeyBCYWJ5bG9uSXRlbUdyaWRJIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9jb3JlL2JhYnlsb24tbGlzdC1ncmlkL2JhYnlsb24tbGlzdC1ncmlkLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBCYWJ5bG9uTGlzdEdyaWRJIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9jb3JlL2JhYnlsb24tbGlzdC1ncmlkL2JhYnlsb24tbGlzdC1ncmlkLmludGVyZmFjZSc7XG5pbXBvcnQgeyBCYWJ5bG9uTW9kYWxQb3B1cEkgfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL2NvcmUvYmFieWxvbi1tb2RhbC1wb3B1cCc7XG5pbXBvcnQgeyBCYWJ5bG9uU3RhdGljRm9vdGVyVjJJIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9jb3JlL2JhYnlsb24tc3RhdGljLWZvb3Rlci12Mi9iYWJ5bG9uLXN0YXRpYy1mb290ZXItdjIuaW50ZXJmYWNlJztcbmltcG9ydCB7IFJvb21TZXJ2aWNlVHlwZSB9IGZyb20gJy4uLy4uL0VudW0vc2VydmljZXMuZW51bSc7XG5pbXBvcnQgeyBWaWV3c1R5cGUgfSBmcm9tICcuLi8uLi9FbnVtL3ZpZXdzLmVudW0nO1xuaW1wb3J0IHtcbiAgICBCYWJ5bG9uQnV0dG9uSSxcbiAgICBCYWJ5bG9uQ29udGFjdEluZm9JLFxuICAgIEJhYnlsb25Ecm9wZG93bkksXG4gICAgQmFieWxvbkltYWdlSSxcbiAgICBCYWJ5bG9uSW5wdXRJLFxuICAgIEJhYnlsb25NZW51QnV0dG9uSSxcbiAgICBCYWJ5bG9uTWVudUluZm9JLFxuICAgIEJhYnlsb25PZmZlckl0ZW1JLFxuICAgIEJhYnlsb25Sb29tRGV0YWlsSSxcbiAgICBCYWJ5bG9uVGV4dEluZm9JLFxuICAgIEJvZHlDb21wb25lbnQsXG4gICAgQ09NUE9ORU5UU19FWFRSQSxcbiAgICBDb25zdWx0VHlwZUksXG59IGZyb20gJy4uLy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgQmFieWxvbkFkdmFudGFnZUl0ZW1JIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9iYWJ5bG9uLWFkdmFudGFnZXMtaXRlbS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgQmFieWxvbkdsb2JhbCB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvYmFieWxvbi1nbG9iYWwuaW50ZXJmYWNlJztcbmltcG9ydCB7IEJhYnlsb25Ib3RlbEl0ZW0gfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL2JhYnlsb24taG90ZWwuaW50ZXJmYWNlJztcbmltcG9ydCB7IEJhYnlsb25JdGVtSSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvYmFieWxvbi1pdGVtLmludGVyZmFjZSc7XG5pbXBvcnQgeyBVdGlscyB9IGZyb20gJy4uLy4uL3V0aWxzL3V0aWxzJztcbmltcG9ydCB7IFNjcmVlblNpemVyU2VydmljZSB9IGZyb20gJy4uL3NjcmVlbi1zaXplcic7XG5pbXBvcnQgeyBTSVRFX0NPTkZJR19TRVJWSUNFX1RPS0VOIH0gZnJvbSAnLi9tYXBwZXIuc2VydmljZS50b2tlbic7XG5cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIE1hcHBlclNlcnZpY2Uge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgc2l0ZVN2YyA9IGluamVjdChTSVRFX0NPTkZJR19TRVJWSUNFX1RPS0VOKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHNjcmVlblNpemVyID0gaW5qZWN0KFNjcmVlblNpemVyU2VydmljZSk7XG5cbiAgICBnZXQgaXNNaW5GdWxsVGFibGV0SW5zdGFudCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2NyZWVuU2l6ZXIubWluRnVsbFRhYmxldEluc3RhbnQoKTtcbiAgICB9XG5cbiAgICBoZWFkZXJCdXR0b25zID0gc2lnbmFsPFJlY29yZDxzdHJpbmcsIHN0cmluZz4gfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG5cbiAgICBzaXRlSWQ6IFNpZ25hbDxudW1iZXI+ID0gY29tcHV0ZWQoXG4gICAgICAgICgpID0+IHRoaXMuc2l0ZVN2Yy53ZWJDb25maWdJbnN0YW50Py5zaXRlSURcbiAgICApO1xuXG4gICAgZmxvYXRpbmdCdXR0b25zPzogQmFieWxvbkZsb2F0aW5nQnV0dG9uc0k7XG5cbiAgICBwcml2YXRlIHBsYXRmb3JtSWQgPSBpbmplY3QoUExBVEZPUk1fSUQpO1xuXG4gICAgZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICBpbWFnZTogSW1hZ2VSZXNwb25zZSB8IHVuZGVmaW5lZCxcbiAgICAgICAgaXNGaWd1cmUgPSB0cnVlXG4gICAgKTogc3RyaW5nIHwgQmFieWxvbkltYWdlSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGxldCBzZWxlY3RlZEltYWdlO1xuICAgICAgICBpZiAoaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkge1xuICAgICAgICAgICAgaWYgKHRoaXMuc2NyZWVuU2l6ZXIubW9iaWxlKCkpIHtcbiAgICAgICAgICAgICAgICBzZWxlY3RlZEltYWdlID0gaW1hZ2U/LnRodW1ibmFpbHM/LlszNzVdPy53ZWJwO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLnNjcmVlblNpemVyLmlzU21hbGxUYWJsZXRJbnN0YW50KCkpIHtcbiAgICAgICAgICAgICAgICBzZWxlY3RlZEltYWdlID0gaW1hZ2U/LnRodW1ibmFpbHM/Lls1NDBdPy53ZWJwO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLnNjcmVlblNpemVyLmlzTWVkaXVtVGFibGV0SW5zdGFudCgpKSB7XG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRJbWFnZSA9IGltYWdlPy50aHVtYm5haWxzPy5bNzY4XT8ud2VicDtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5zY3JlZW5TaXplci5pc0Z1bGxUYWJsZXRJbnN0YW50KCkpIHtcbiAgICAgICAgICAgICAgICBzZWxlY3RlZEltYWdlID0gaW1hZ2U/LnRodW1ibmFpbHM/LlsxMDI0XT8ud2VicDtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5zY3JlZW5TaXplci5pc1NtYWxsRGVza3RvcEluc3RhbnQoKSkge1xuICAgICAgICAgICAgICAgIHNlbGVjdGVkSW1hZ2UgPSBpbWFnZT8udGh1bWJuYWlscz8uWzEyODBdPy53ZWJwO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLnNjcmVlblNpemVyLm1pbk1lZGl1bURlc2t0b3AoKSkge1xuICAgICAgICAgICAgICAgIHNlbGVjdGVkSW1hZ2UgPSBpbWFnZT8ucGF0aD8ud2VicDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRJbWFnZSA9IGltYWdlPy50aHVtYm5haWxzPy5bMTM2Nl0/LndlYnA7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHNlbGVjdGVkSW1hZ2VcbiAgICAgICAgICAgID8gaXNGaWd1cmVcbiAgICAgICAgICAgICAgICA/IGAke3RoaXMuc2l0ZVN2Yy5jZG5JbWFnZXNJbnN0YW50fSR7c2VsZWN0ZWRJbWFnZX1gXG4gICAgICAgICAgICAgICAgOiB7XG4gICAgICAgICAgICAgICAgICAgICAgc3JjOiBgJHt0aGlzLnNpdGVTdmMuY2RuSW1hZ2VzSW5zdGFudH0ke3NlbGVjdGVkSW1hZ2V9YCxcbiAgICAgICAgICAgICAgICAgICAgICBhbHQ6IGltYWdlPy5hbHQsXG4gICAgICAgICAgICAgICAgICAgICAgbmRUaXRsZTogaW1hZ2U/Lm5kVGl0bGUsXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA6IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBnZXRBcnJheUltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgaW1hZ2VzOiBJbWFnZVJlc3BvbnNlW10gfCB1bmRlZmluZWQsXG4gICAgICAgIGlzRmlndXJlID0gdHJ1ZVxuICAgICk6IChzdHJpbmcgfCBCYWJ5bG9uSW1hZ2VJKVtdIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIGltYWdlcz8ubWFwKChpbWcpID0+IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGltZywgaXNGaWd1cmUpISk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZW5lcmF0ZUFnZXNPcHRpb25zKFxuICAgICAgICBtYXhMZW5ndGg6IG51bWJlcixcbiAgICAgICAgbWluTGVuZ3RoID0gMFxuICAgICk6IERyb3Bkb3duT3B0aW9uW10ge1xuICAgICAgICBjb25zdCBvcHRpb25zOiBEcm9wZG93bk9wdGlvbltdID0gW107XG4gICAgICAgIGZvciAobGV0IGkgPSBtaW5MZW5ndGg7IGkgPD0gbWF4TGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIG9wdGlvbnMucHVzaCh7IGNvZGU6IGksIG5hbWU6IGkgPCAxMCA/IGAwJHtpfWAgOiBgJHtpfWAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG9wdGlvbnM7XG4gICAgfVxuXG4gICAgbWFwQm9keUV4dHJhKFxuICAgICAgICBib2R5OiBhbnlbXSB8IHVuZGVmaW5lZFxuICAgICk6IEJvZHlDb21wb25lbnQ8Q09NUE9ORU5UU19FWFRSQT5bXSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGNvbnN0IGJvZHlNYXBwZWQ6IEJvZHlDb21wb25lbnQ8Q09NUE9ORU5UU19FWFRSQT5bXSB8IHVuZGVmaW5lZCA9XG4gICAgICAgICAgICBib2R5Py5tYXAoKGNvbXBvbmVudCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGNvbXBvbmVudE1hcHBlZDogQm9keUNvbXBvbmVudDxDT01QT05FTlRTX0VYVFJBPiA9IHtcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogY29tcG9uZW50Lm5hbWU/LnRvTG93ZXJDYXNlKCksXG4gICAgICAgICAgICAgICAgICAgIG9yZGVyOiBjb21wb25lbnQub3JkZXIsXG4gICAgICAgICAgICAgICAgICAgIHByb3BzOiB7fSxcbiAgICAgICAgICAgICAgICB9IGFzIEJvZHlDb21wb25lbnQ8Q09NUE9ORU5UU19FWFRSQT47XG4gICAgICAgICAgICAgICAgc3dpdGNoIChjb21wb25lbnQubmFtZT8udG9Mb3dlckNhc2UoKSkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlICdtZW51JzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwU3VibWVudShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgQmFieWxvblN1Ym1lbnVJO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLm5hbWUgPSAnbWVudSc7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gY29tcG9uZW50TWFwcGVkO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBib2R5TWFwcGVkO1xuICAgIH1cblxuICAgIG1hcFN1Ym1lbnUocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25TdWJtZW51SSB7XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkID0gcHJvcHM/Lml0ZW1zPy5maW5kKChpdGVtOiBhbnkpID0+IGl0ZW0uc2VsZWN0ZWQpO1xuICAgICAgICBjb25zdCBzdWJtZW51ID0ge1xuICAgICAgICAgICAgLy8gaG90ZWw6IHByb3BzPy5ob3RlbCxcbiAgICAgICAgICAgIGl0ZW1zOiBwcm9wcz8uaXRlbXNcbiAgICAgICAgICAgICAgICA/LmZpbHRlcigoaXRlbTogYW55KSA9PiBpdGVtLmFjdGl2ZSlcbiAgICAgICAgICAgICAgICA/Lm1hcChcbiAgICAgICAgICAgICAgICAgICAgKGxpbms6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGxpbms/Lm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBsaW5rPy5saW5rVmFsdWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlua1R5cGU6ICdpbnRlcm5hbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSBhcyBCYWJ5bG9uQnV0dG9uSVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICBzZWxlY3RlZDoge1xuICAgICAgICAgICAgICAgIGxhYmVsOiBzZWxlY3RlZD8ubmFtZSxcbiAgICAgICAgICAgICAgICB1cmw6IHNlbGVjdGVkPy5saW5rVmFsdWUsXG4gICAgICAgICAgICB9IGFzIEJhYnlsb25CdXR0b25JLFxuICAgICAgICB9IGFzIEJhYnlsb25TdWJtZW51STtcblxuICAgICAgICByZXR1cm4gc3VibWVudTtcbiAgICB9XG5cbiAgICBtYXBDb21wb25lbnRzPFQ+KFxuICAgICAgICBib2R5OiBhbnlbXSxcbiAgICAgICAgYWRkb25zPzogQ29tcG9uZW50c0FkZG9uc1xuICAgICk6IEJvZHlDb21wb25lbnQ8VD5bXSB7XG4gICAgICAgIGlmICghYm9keSB8fCAhYm9keS5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybiBbXSBhcyBCb2R5Q29tcG9uZW50PFQ+W107XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgYm9keU1hcHBlZDogQm9keUNvbXBvbmVudDxUPltdID0gYm9keVxuICAgICAgICAgICAgPy5maWx0ZXIoXG4gICAgICAgICAgICAgICAgKGNvbXBvbmVudCkgPT4gY29tcG9uZW50ICE9PSBudWxsICYmIGNvbXBvbmVudCAhPT0gdW5kZWZpbmVkXG4gICAgICAgICAgICApXG4gICAgICAgICAgICA/Lm1hcCgoY29tcG9uZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgY29tcG9uZW50TWFwcGVkOiBCb2R5Q29tcG9uZW50PFQ+ID0ge1xuICAgICAgICAgICAgICAgICAgICBuYW1lOiBjb21wb25lbnQubmFtZT8udG9Mb3dlckNhc2UoKSxcbiAgICAgICAgICAgICAgICAgICAgb3JkZXI6IGNvbXBvbmVudC5vcmRlcixcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM6IHt9LFxuICAgICAgICAgICAgICAgICAgICBhbGlhczogY29tcG9uZW50LmFsaWFzLFxuICAgICAgICAgICAgICAgICAgICBpZGVudGlmaWVyOiBjb21wb25lbnQuaWRlbnRpZmllcixcbiAgICAgICAgICAgICAgICAgICAgdGV4dENvbG9yOiBjb21wb25lbnQudGV4dGNvbG9yLFxuICAgICAgICAgICAgICAgIH0gYXMgQm9keUNvbXBvbmVudDxUPjtcblxuICAgICAgICAgICAgICAgIGlmIChjb21wb25lbnQucHJvcHMpIHtcbiAgICAgICAgICAgICAgICAgICAgLy9JdCBpcyBuZWNlc3NhcnksIG90aGVyd2lzZSBpdCBnaXZlcyBhbiBlcnJvciBhbmQgZG9lcyBub3Qgc2hvdyBjb21wb25lbnRzXG4gICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGNvbXBvbmVudC5uYW1lPy50b0xvd2VyQ2FzZSgpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnbW9kdWxlNDA0JzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXA0MDQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vLS0tLSBMQVlPVVQgQ09NUE9ORU5UUyAtLS0tLy9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICd0b3BzbGlkZXInOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcFRvcFNsaWRlcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3RvcHNsaWRlcnZpZGVvJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBUb3BTbGlkZXJWaWRlbyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAndG9wc2xpZGVydjJsZWZ0JzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICd0b3BzbGlkZXJ2MnJpZ2h0JzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBUb3BTbGlkZXJWMihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5uYW1lID09PSAndG9wc2xpZGVydjJyaWdodCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdpbmZvaW1nJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdpbmZvaW1ncmlnaHQnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2luZm9pbWdsZWZ0JzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBJbmZvSW1nKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLm5hbWUgPT09ICdpbmZvaW1ncmlnaHQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnRleHRjb2xvclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2luZm9pbWdzbGlkZXJyaWdodCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaW5mb2ltZ3NsaWRlcmxlZnQnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEluZm9JbWdTbGlkZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQubmFtZSA9PT1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaW5mb2ltZ3NsaWRlcnJpZ2h0J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2luZm9pbnRybyc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwSW5mb0ludHJvKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaW5mbzJpbWdsZWZ0JzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdpbmZvMmltZ3JpZ2h0JzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBJbmZvMmltZyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5uYW1lID09PSAnaW5mbzJpbWdyaWdodCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdpbmZvMmNvbGltZ3JpZ2h0JzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBJbmZvMmNvbGltZyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5uYW1lID09PSAnaW5mbzJjb2xpbWdyaWdodCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdpbmZvMmNvbGltZ2xlZnQnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEluZm8yY29saW1nKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLm5hbWUgPT09ICdpbmZvMmNvbGltZ2xlZnQnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaW5mbzNpbWcnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEluZm9JbWcoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC50ZXh0Y29sb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdpbmZvemlnemFnbGVmdCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaW5mb3ppZ3phZ3JpZ2h0JzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBaaWd6YWcoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQubmFtZSA9PT0gJ2luZm96aWd6YWdyaWdodCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdpbmZvZ3JpZCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwSW5mb0dyaWQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdzbGlkZXIyY29sbGVmdCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnc2xpZGVyMmNvbHJpZ2h0JzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBTbGlkZXJDb2xsMihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5uYW1lID09PSAnc2xpZGVyMmNvbHJpZ2h0J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3NsaWRlcjNjb2wnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcFNsaWRlckNvbGwoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQuaWRlbnRpZmllclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3NsaWRlcjRjb2wnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcFNsaWRlckNvbGwoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQuaWRlbnRpZmllclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2l0ZW1zZ3JpZCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwSXRlbXNHcmlkKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAncm9vbXNzbGlkZXInOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcFJvb21zU2xpZGVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAncm9vbXNncmlkJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBSb29tc0dyaWQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdiYW5uZXJnYWxsZXJ5JzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBCYW5uZXJHYWxsZXJ5KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnZ3JpZGdhbGxlcnknOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEdyaWRHYWxsZXJ5KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnYmFubmVybmV3c2xldHRlcic6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm1hcEJhbm5lck5ld3NsZXR0ZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ29mZmVyc3NsaWRlcic6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwT2ZmZXJTbGlkZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLy0tLS0gTEFZT1VUIENPTVBPTkVOVFMgRU5ELS0tLS8vXG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICd0aGFua3MnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcFRoYW5rcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnY29udGFjdGZvcm0nOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2NvbnRhY3Rmb3JtdjInOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcENvbnRhY3RGb3JtKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkb25zPy5jb250YWN0T2ZmaWNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkb25zPy5jb25zdWx0VHlwZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnY29udGFjdGhvdyc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwQ29udGFjdEhvdyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnd2VibWFwJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBXZWJtYXAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2NvbnRhY3RtYXAnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcENvbnRhY3RNYXAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2xlZ2FsJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBMZWdhbChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAncm9vbXNjb2xzJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBSb29tc0NvbHMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3Jvb21kZXRhaWxzJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBSb29tRGV0YWlsKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICd0b3BzbGlkZXJ0aHVtYnMnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcFRvcFNsaWRlclRodW1icyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnZmVhdHVyZXNzbGlkZXInOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEZlYXR1cmVzU2xpZGVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdiYW5uZXJpbmZvJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBCYW5uZXJJbmZvKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdyb29tc2xpc3QnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcFJvb21zTGlzdChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnY29taW5nc29vbic6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwQ29taW5nU29vbihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnb2ZmZXJkZXRhaWwnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcE9mZmVyRGV0YWlsKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdvZmZlcnNsaXN0JzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBPZmZlcnNMaXN0KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdmYXEnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEZhcShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnc3RhdGljZm9vdGVyJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBTdGF0aWNGb290ZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2dhbGxlcnknOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEdhbGxlcnkoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ25hdic6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwTWVudShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZG9ucz8ubWVudVNvY2lhbE1lZGlhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdsYW5ndWFnZXNtb2RhbCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnbGFuZ3VhZ2VzbW9kYXYyJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBMYW5ndWFnZU1vZGFsKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdzbGlkZXIzaXRlbXMnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcFNsaWRlcjNJdGVtcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaG90ZWxzc2xpZGVyJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBIb3RlbHNTbGlkZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2hvdGVsc2xpc3QnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEhvdGVsc0xpc3QoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2luZm80aW1nJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBJbmZvNEltZyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnc2VydmljZXNzbGlkZXInOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcFNlcnZpY2VzU2xpZGVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnbG9jYXRpb25hZGRyZXNzJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdjb250YWN0YWRkcmVzcyc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwQ29udGFjdEFkZHJlc3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2FkdmFudGFnZXMnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEFkdmFudGFnZXMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2luZm9iaWcnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEluZm9CaWcoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2luZm96aWd6YWd2MmxlZnQnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEluZm9aaWdaYWdWMihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaW5mb3ppZ3phZ3YycmlnaHQnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEluZm9aaWdaYWdWMihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnZm9vdGVyY29udGFjdCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwRm9vdGVyQ29udGFjdChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaW5mbzJpbWdiaWcnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEluZm8ySW1nQmlnKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdmb290ZXJsaW5rcyc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwRm9vdGVyTGlua3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2Zvb3RlcmxvZ29zJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBGb290ZXJMb2dvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnb2ZmZXJzbGlkZXInOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcE9mZmVyU2xpZGVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdmb290ZXJzb2NpYWxzJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBGb290ZXJTb2NpYWxzKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdzbGlkZXIyaXRlbXMnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcFNsaWRlcjJpdGVtcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnc3RhdGljZm9vdGVydjInOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcFN0YXRpY0Zvb3RlcnYyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdsaXN0Z3JpZCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwTGlzdEdyaWQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ25ld3NsZXR0ZXJtb2RhbCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwTmV3c2xldHRlck1vZGFsKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdoZWFkaW50cm8nOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEhlYWRJbnRybyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnYnJlYWRjcnVtYnMnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEJyZWFkY3J1bWJzKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnb2ZmZXJiYW5uZXJ2Mic6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwT2ZmZXJCYW5uZXJWMihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2dsb2JhbG1vZGFsJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdnbG9iYWxtb2RhbDInOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEdsb2JhbE1vZGFsKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnbWVudSc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwU3VibWVudShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3NwYWxvcGlhJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBFeHRlcm5hbFNjcmlwdChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2Jsb2dsaXN0JzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBCbG9nTGlzdChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2Jsb2dkZXRhaWwnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEJsb2dEZXRhaWwoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdvZmZlcmJhbm5lcic6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwT2ZmZXJCYW5uZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdtb2RhbG11bHRpcGxlbW90b3JzJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubWFwTW9kYWxNdWx0aXBsZU1vdG9ycyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnbW9kYWxwb3B1cCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwTW9kYWxQb3B1cChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAncHJlc3NsaXN0JzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBQcmVzc0xpc3QoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2FjdGlvbmJhbm5lcic6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwQWN0aW9uQmFubmVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdpbmZvemlnemFnY291bnRlcic6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm1hcEluZm9aaWdaYWdDb3VudGVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdncmMyaW1nJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBHckMySW1nKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnbGlzYzR0eHRpY28nOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcExpc0M0VHh0SWNvKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEdsb2JhbHMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIGNvbXBvbmVudE1hcHBlZDtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gYm9keU1hcHBlZDtcbiAgICB9XG5cbiAgICBtYXBHbG9iYWxzKGNvbXBvbmVudDogYW55KTogYW55IHtcbiAgICAgICAgY29uc29sZS5sb2coJ01hcHBpbmcgZ2xvYmFsIGNvbXBvbmVudDonLCBjb21wb25lbnQpO1xuICAgICAgICBjb25zdCB7IHByb3BzIH0gPSBjb21wb25lbnQ7XG4gICAgICAgIGxldCByZXN1bHQgPSB7XG4gICAgICAgICAgICB0ZXh0czogcHJvcHM/LnRleHRzIGFzIEJhYnlsb25UZXh0SW5mb0ksXG4gICAgICAgICAgICByaWdodFNpZGU6IGNvbXBvbmVudC5uYW1lPy50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKCdyaWdodCcpLCAvL1RPRE8gY2hhbmdlXG4gICAgICAgICAgICBsZWZ0U2lkZTogY29tcG9uZW50Lm5hbWU/LnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoJ2xlZnQnKSwgLy9UT0RPIGNoYW5nZVxuICAgICAgICAgICAgaXRlbXM6IHRoaXMubWFwR2xvYmFsSXRlbXMocHJvcHMpLFxuICAgICAgICAgICAgZXZlbnRzOiB0aGlzLm1hcEV2ZW50c0dsb2JhbChwcm9wcz8uZXZlbnRzID8/IHByb3BzLmV2ZW50KSxcbiAgICAgICAgICAgIG9mZmVyczogdGhpcy5tYXBPZmZlcnNHbG9iYWwocHJvcHM/Lm9mZmVycyksXG4gICAgICAgICAgICBvZmZlcjogdGhpcy5tYXBPZmZlckRldGFpbChwcm9wcyksXG4gICAgICAgICAgICBtdWx0aW1lZGlhOiB0aGlzLm1hcEltYWdlcyhwcm9wcz8ubXVsdGltZWRpYSksXG4gICAgICAgICAgICBhZGRyZXNzOiB0aGlzLm1hcEFkZHJlc3MocHJvcHM/LmFkZHJlc3MpLFxuICAgICAgICAgICAgbGlua3M6IFV0aWxzLm1hcEJ1dHRvbnMoXG4gICAgICAgICAgICAgICAgcHJvcHM/LmxpbmtzPy5sZW5ndGggPyBwcm9wcz8ubGlua3MgOiBwcm9wcz8ubGlua3M/LmNvbnRhY3Q/LlswXVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGZvb3RlckxpbmtzOiBVdGlscy5tYXBCdXR0b25zKHByb3BzPy5saW5rcz8uZm9vdGVyTGlua3M/LlswXSksXG4gICAgICAgICAgICBwYWdlczogKFxuICAgICAgICAgICAgICAgIHByb3BzPy5wYWdlcz8ubWFwKFxuICAgICAgICAgICAgICAgICAgICAobGluazogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogbGluay5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogbGluay51cmwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlua1R5cGU6ICdpbnRlcm5hbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSBhcyBCYWJ5bG9uQnV0dG9uSVxuICAgICAgICAgICAgICAgICkgYXMgQmFieWxvbkJ1dHRvbklbXVxuICAgICAgICAgICAgKT8uZmlsdGVyKFxuICAgICAgICAgICAgICAgIChsaW5rKSA9PlxuICAgICAgICAgICAgICAgICAgICBsaW5rLnVybD8uc3BsaXQoJy8nKVsxXSA9PT1cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zaXRlU3ZjLnNlbGVjdGVkTGFuZ3VhZ2VJbnN0YW50Py5sb2NhdGVcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBidXR0b25zOiBVdGlscy5tYXBCdXR0b25zKHByb3BzPy5idXR0b25zKSxcbiAgICAgICAgICAgIGFkdmFudGFnZXM6IHRoaXMubWFwQWR2YW50YWdlc0dsb2JhbChcbiAgICAgICAgICAgICAgICBwcm9wcz8uVmVudGFqYXMgPz9cbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/LkFkdmFudGFnZXMgPz9cbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/Lmxpc3RzID8/XG4gICAgICAgICAgICAgICAgICAgIHByb3BzLkxpc3RzXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy50YWcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGV4dENvbG9yczoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNlZU1vcmU6IHByb3BzPy50ZXh0cz8uYWR2YW50YWdlc3NlZW1vcmUsXG4gICAgICAgICAgICBzZWVMZXNzOiBwcm9wcz8udGV4dHM/LmFkdmFudGFnZXNzZWVsZXNzLFxuICAgICAgICAgICAgaW1hZ2U6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5hZHZhbnRhZ2VzaW1hZ2U/LlswXSxcbiAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHJvb21zOiB0aGlzLm1hcFJvb21EZXRhaWxzKHByb3BzPy5yb29tcyksXG4gICAgICAgICAgICBjb250YWN0SW5mbzogdGhpcy5tYXBDb250YWN0SW5mbyhwcm9wcz8udGV4dHMpLFxuICAgICAgICAgICAgc29jaWFsTWVkaWE6IHByb3BzPy5zb2NpYWxNZWRpYT8ubWFwKChzbTogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgaWNvbjogc20uaWNvbixcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogc20ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgdXJsOiBzbS51cmwsXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgaG90ZWxzOiB0aGlzLm1hcEhvdGVsc0dsb2JhbChwcm9wcy5ob3RlbHMpLFxuICAgICAgICAgICAgY29uc3VsdFR5cGVzOiB0aGlzLm1hcENvbnN1bHRUeXBlc0dsb2JhbChwcm9wcy5jb25zdWx0VHlwZXMpLFxuICAgICAgICB9IGFzIEJhYnlsb25HbG9iYWw7XG4gICAgICAgIGNvbnNvbGUubG9nKCdNYXBwZWQgZ2xvYmFsIGNvbXBvbmVudCByZXN1bHQ6JywgcmVzdWx0KTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICBtYXBDb25zdWx0VHlwZXNHbG9iYWwoY29uc3VsdHM6IGFueSB8IHVuZGVmaW5lZCk6IENvbnN1bHRUeXBlSVtdIHtcbiAgICAgICAgcmV0dXJuIGNvbnN1bHRzPy5tYXAoXG4gICAgICAgICAgICAoY29uc3VsdDogYW55KSA9PlxuICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBjb25zdWx0Py5pZCxcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogY29uc3VsdD8ubmFtZSxcbiAgICAgICAgICAgICAgICB9KSBhcyBDb25zdWx0VHlwZUlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBtYXBIb3RlbHNHbG9iYWwoaG90ZWxzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uSG90ZWxJdGVtW10ge1xuICAgICAgICByZXR1cm4gaG90ZWxzPy5tYXAoXG4gICAgICAgICAgICAoaG90ZWw6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICBpZDogaG90ZWw/LmlkLFxuICAgICAgICAgICAgICAgICAgICBuYW1lOiBob3RlbD8ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgb3JkZXI6IGhvdGVsPy5vcmRlcixcbiAgICAgICAgICAgICAgICAgICAgdGV4dHM6IGhvdGVsPy50ZXh0cyBhcyBCYWJ5bG9uVGV4dEluZm9JLFxuICAgICAgICAgICAgICAgICAgICBtdWx0aW1lZGlhOiB0aGlzLm1hcE11bHRpbWVkaWEoaG90ZWw/Lm11bHRpbWVkaWEpLFxuICAgICAgICAgICAgICAgICAgICBpbWFnZXM6IGhvdGVsPy5tdWx0aW1lZGlhPy5sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgID8gdGhpcy5tYXBNdWx0aW1lZGlhKGhvdGVsPy5tdWx0aW1lZGlhKVxuICAgICAgICAgICAgICAgICAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgIGxpbmtzOiBVdGlscy5tYXBCdXR0b25zKGhvdGVsPy5saW5rKSxcbiAgICAgICAgICAgICAgICAgICAgYnV0dG9uczogVXRpbHMubWFwQnV0dG9ucyhob3RlbD8ubGluayksXG4gICAgICAgICAgICAgICAgfSkgYXMgQmFieWxvbkhvdGVsSXRlbVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgbWFwR2xvYmFsSXRlbXMocHJvcHM6IGFueSk6IGFueSB7XG4gICAgICAgIC8vIEZ1ZW50ZSBwcmluY2lwYWwgZGUgaXRlbXNcbiAgICAgICAgY29uc3QgcmF3SXRlbXMgPVxuICAgICAgICAgICAgcHJvcHM/Lml0ZW1zID8/IHByb3BzPy5JdGVtcyA/PyBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXM7XG5cbiAgICAgICAgLy8gMSkgSW50ZW50YW1vcyBtYXBlYXIgaXRlbXMg4oCcbm9ybWFsZXPigJ1cbiAgICAgICAgY29uc3QgbWFwcGVkSXRlbXMgPSB0aGlzLm1hcEl0ZW1zKHJhd0l0ZW1zKTtcbiAgICAgICAgaWYgKG1hcHBlZEl0ZW1zICE9IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiBtYXBwZWRJdGVtcztcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIDIpIFNpIG5vIGhheSBpdGVtcywgcHJvYmFtb3MgY29uIHJvb21zXG4gICAgICAgIGNvbnN0IG1hcHBlZFJvb21zID0gdGhpcy5tYXBSb29tRGV0YWlscyhwcm9wcz8ucm9vbXMpO1xuICAgICAgICBpZiAobWFwcGVkUm9vbXMgIT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIG1hcHBlZFJvb21zO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gMykgb2ZmZXJzXG4gICAgICAgIGNvbnN0IG1hcHBlZE9mZmVycyA9IHRoaXMubWFwT2ZmZXJzR2xvYmFsKHByb3BzPy5vZmZlcnMpO1xuICAgICAgICBpZiAobWFwcGVkT2ZmZXJzICE9IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiBtYXBwZWRPZmZlcnM7XG4gICAgICAgIH1cblxuICAgICAgICAvLyA0KSBleHBlcmllbmNlc1xuXG4gICAgICAgIC8vIDUpIGhvdGVsZXNcbiAgICAgICAgcmV0dXJuIHRoaXMubWFwSG90ZWxzR2xvYmFsKHByb3BzPy5ob3RlbHMpO1xuICAgIH1cblxuICAgIG1hcEFkZHJlc3MoYWRkcmVzczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvbkFkZHJlc3NJdGVtIHtcbiAgICAgICAgcmV0dXJuIGFkZHJlc3M/Lm1hcChcbiAgICAgICAgICAgIChhZGRyZXNzOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IGFkZHJlc3M/LmlkLFxuICAgICAgICAgICAgICAgICAgICBuYW1lOiBhZGRyZXNzPy5uYW1lLFxuICAgICAgICAgICAgICAgICAgICBhZGRyZXNzOiBhZGRyZXNzPy5hZGRyZXNzLFxuICAgICAgICAgICAgICAgICAgICBjaXR5OiBhZGRyZXNzPy5jaXR5LFxuICAgICAgICAgICAgICAgICAgICBwcm92aW5jZTogYWRkcmVzcz8ucHJvdmluY2UsXG4gICAgICAgICAgICAgICAgICAgIGNvdW50cnk6IGFkZHJlc3M/LmNvdW50cnksXG4gICAgICAgICAgICAgICAgICAgIGNwOiBhZGRyZXNzPy5jcCxcbiAgICAgICAgICAgICAgICAgICAgdXJsOiBhZGRyZXNzPy5saW5rLFxuICAgICAgICAgICAgICAgICAgICBwaG9uZTogYWRkcmVzcz8ucGhvbmUsXG4gICAgICAgICAgICAgICAgICAgIHBob25lMjogYWRkcmVzcz8ucGhvbmUyLFxuICAgICAgICAgICAgICAgICAgICBlbWFpbDogYWRkcmVzcz8uZW1haWwsXG4gICAgICAgICAgICAgICAgICAgIGZ1bGxfYWRkcmVzczogYWRkcmVzcz8uZnVsbEFkZHJlc3MsXG4gICAgICAgICAgICAgICAgfSkgYXMgQmFieWxvbkFkZHJlc3NJdGVtXG4gICAgICAgICk7XG4gICAgfVxuICAgIG1hcFN0YXRpY0Zvb3RlcnYzKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uU3RhdGljRm9vdGVySSB7XG4gICAgICAgIHJldHVybiB7fSBhcyBhbnk7XG4gICAgfVxuXG4gICAgbWFwQ29udGFjdEluZm8odGV4dHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25Db250YWN0SW5mb0kge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6IHRleHRzPy50aXRsZSxcbiAgICAgICAgICAgIHRleHQ6IHRleHRzPy50ZXh0LFxuICAgICAgICAgICAgaWNvbjogdGV4dHM/Lmljb24sXG4gICAgICAgICAgICBwcmV0aXRsZTogdGV4dHM/LnByZXRpdGxlLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IHRleHRzPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgIGNvbmRpdGlvbnM6IHRleHRzPy5jb25kaXRpb25zLFxuICAgICAgICAgICAgZHJvcGRvd25QbGFjZWhvbGRlcjogdGV4dHM/LmRyb3Bkb3duUGxhY2Vob2xkZXIsXG4gICAgICAgICAgICBkcm9wZG93blRpdGxlOiB0ZXh0cz8uZHJvcGRvd25UaXRsZSxcbiAgICAgICAgICAgIGVycm9yRW1haWw6IHRleHRzPy5lcnJvckVtYWlsLFxuICAgICAgICAgICAgZXJyb3JNZXNzYWdlOiB0ZXh0cz8uZXJyb3JNZXNzYWdlLFxuICAgICAgICAgICAgZXJyb3JOYW1lOiB0ZXh0cz8uZXJyb3JOYW1lLFxuICAgICAgICAgICAgZXJyb3JQaG9uZTogdGV4dHM/LmVycm9yUGhvbmUsXG4gICAgICAgICAgICBlcnJvclJlcXVpcmVkOiB0ZXh0cz8uZXJyb3JSZXF1aXJlZCxcbiAgICAgICAgICAgIGlucHV0RW1haWw6IHRleHRzPy5pbnB1dEVtYWlsLFxuICAgICAgICAgICAgaW5wdXRFbWFpbFBsYWNlSG9sZGVyOiB0ZXh0cz8uaW5wdXRFbWFpbFBsYWNlSG9sZGVyLFxuICAgICAgICAgICAgaW5wdXRNZXNzYWdlOiB0ZXh0cz8uaW5wdXRNZXNzYWdlLFxuICAgICAgICAgICAgaW5wdXRNZXNzYWdlUGxhY2VIb2xkZXI6IHRleHRzPy5pbnB1dE1lc3NhZ2VQbGFjZUhvbGRlcixcbiAgICAgICAgICAgIGlucHV0TmFtZTogdGV4dHM/LmlucHV0TmFtZSxcbiAgICAgICAgICAgIGlucHV0TmFtZVBsYWNlSG9sZGVyOiB0ZXh0cz8uaW5wdXROYW1lUGxhY2VIb2xkZXIsXG4gICAgICAgICAgICBpbnB1dFBob25lOiB0ZXh0cz8uaW5wdXRQaG9uZSxcbiAgICAgICAgICAgIGlucHV0UGhvbmVQbGFjZUhvbGRlcjogdGV4dHM/LmlucHV0UGhvbmVQbGFjZUhvbGRlcixcbiAgICAgICAgICAgIGlucHV0bGFzdG5hbWU6IHRleHRzPy5pbnB1dGxhc3RuYW1lLFxuICAgICAgICAgICAgaW5wdXRsYXN0bmFtZVBsYWNlSG9sZGVyOiB0ZXh0cz8uaW5wdXRsYXN0bmFtZVBsYWNlSG9sZGVyLFxuICAgICAgICAgICAgaW5wdXRTdXJuYW1lczogdGV4dHM/LmlucHV0U3VybmFtZXMsXG4gICAgICAgICAgICBpbnB1dFN1cm5hbWVzUGxhY2VIb2xkZXI6IHRleHRzPy5pbnB1dFN1cm5hbWVzUGxhY2VIb2xkZXIsXG4gICAgICAgICAgICBtYW5kYXRvcnl0ZXh0OiB0ZXh0cz8ubWFuZGF0b3J5dGV4dCxcbiAgICAgICAgICAgIHJlcXVpcmVkRmllbGRzTGFiZWw6IHRleHRzPy5yZXF1aXJlZEZpZWxkc0xhYmVsLFxuICAgICAgICB9IGFzIEJhYnlsb25Db250YWN0SW5mb0k7XG4gICAgfVxuICAgIG1hcEV2ZW50c0dsb2JhbChldmVudHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25JdGVtSVtdIHtcbiAgICAgICAgcmV0dXJuIGV2ZW50cz8ubWFwKFxuICAgICAgICAgICAgKGl0ZW06IGFueSkgPT5cbiAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICBidXR0b25zOiBVdGlscy5tYXBCdXR0b25zKGl0ZW0/LmJ1dHRvbnMpLFxuICAgICAgICAgICAgICAgICAgICBsaW5rczogVXRpbHMubWFwQnV0dG9ucyhpdGVtPy5saW5rcyksXG4gICAgICAgICAgICAgICAgICAgIGltYWdlczogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtPy5tdWx0aW1lZGlhPy5bMF0sXG4gICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICBuYW1lOiBpdGVtPy5uYW1lID8/IGl0ZW0/Lm5hbWVfaWRlbnRpZmllcixcbiAgICAgICAgICAgICAgICAgICAgcHJpY2U6IGl0ZW0/LnByaWNlLFxuICAgICAgICAgICAgICAgICAgICB0ZXh0czoge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgc3VidGl0bGU6IGl0ZW0udGV4dHM/LnN1YnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGl0ZW0udGV4dHM/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbDE6IGl0ZW0udGV4dHM/LmFkZGl0aW9uYWwxLFxuICAgICAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbDI6IGl0ZW0udGV4dHM/LmFkZGl0aW9uYWwyLFxuICAgICAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbDM6IGl0ZW0udGV4dHM/LmFkZGl0aW9uYWwzLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29uZGl0aW9uczogaXRlbS50ZXh0cz8uY29uZGl0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVybDogaXRlbS50ZXh0cz8ucmVzZXJ2YXRpb25VcmwsXG4gICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVBdDogaXRlbS50ZXh0cz8uY3JlYXRlQXQsXG4gICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVkQXQ6IGl0ZW0udGV4dHM/LnVwZGF0ZWRBdCxcbiAgICAgICAgICAgICAgICAgICAgfSBhcyBCYWJ5bG9uVGV4dEluZm9JLFxuICAgICAgICAgICAgICAgICAgICB1cmw6IGl0ZW0/LnVybCxcbiAgICAgICAgICAgICAgICB9KSBhcyBCYWJ5bG9uSXRlbUlcbiAgICAgICAgKTtcbiAgICB9XG4gICAgbWFwT2ZmZXJzR2xvYmFsKG9mZmVyczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvbk9mZmVySXRlbUlbXSB7XG4gICAgICAgIHJldHVybiBvZmZlcnM/Lm1hcChcbiAgICAgICAgICAgIChpdGVtOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgYXBwbGljYXRpb25Gcm9tOiBpdGVtPy5hcHBsaWNhdGlvbkZyb20sXG4gICAgICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uVG86IGl0ZW0/LmFwcGxpY2F0aW9uVG8sXG4gICAgICAgICAgICAgICAgICAgIGJ1dHRvbnM6IFV0aWxzLm1hcEJ1dHRvbnMoaXRlbT8uYnV0dG9ucyksXG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbmN5OiBpdGVtPy5jdXJyZW5jeSxcbiAgICAgICAgICAgICAgICAgICAgZGlzY291bnQ6IGl0ZW0/LmRpc2NvdW50LFxuICAgICAgICAgICAgICAgICAgICBwcmljZTogaXRlbT8ucHJpY2UsXG4gICAgICAgICAgICAgICAgICAgIGxpbmtzOiBVdGlscy5tYXBCdXR0b25zKGl0ZW0/LmxpbmtzKSxcbiAgICAgICAgICAgICAgICAgICAgaW1hZ2VzOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0/Lm11bHRpbWVkaWE/LlswXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IGl0ZW0/Lm5hbWUsXG4gICAgICAgICAgICAgICAgICAgIHRleHRzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaXRlbS50ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBzdWJ0aXRsZTogaXRlbS50ZXh0cz8uc3VidGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogaXRlbS50ZXh0cz8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsMTogaXRlbS50ZXh0cz8uYWRkaXRpb25hbDEsXG4gICAgICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsMjogaXRlbS50ZXh0cz8uYWRkaXRpb25hbDIsXG4gICAgICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsMzogaXRlbS50ZXh0cz8uYWRkaXRpb25hbDMsXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25kaXRpb25zOiBpdGVtLnRleHRzPy5jb25kaXRpb25zLFxuICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBpdGVtLnRleHRzPy5yZXNlcnZhdGlvblVybCxcbiAgICAgICAgICAgICAgICAgICAgfSBhcyBCYWJ5bG9uVGV4dEluZm9JLFxuICAgICAgICAgICAgICAgICAgICB1cmw6IGl0ZW0/LnVybCxcbiAgICAgICAgICAgICAgICAgICAgdmlzaWJsZUZyb206IGl0ZW0/LnZpc2libGVGcm9tLFxuICAgICAgICAgICAgICAgICAgICB2aXNpYmxlVG86IGl0ZW0/LnZpc2libGVUbyxcbiAgICAgICAgICAgICAgICB9KSBhcyBCYWJ5bG9uT2ZmZXJJXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgbWFwQWR2YW50YWdlc0dsb2JhbChhZHZhbnRhZ2VzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uQWR2YW50YWdlSXRlbUlbXSB7XG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheShhZHZhbnRhZ2VzKSkgcmV0dXJuIFtdO1xuICAgICAgICByZXR1cm4gYWR2YW50YWdlcz8ubWFwKChpdGVtOiBhbnkpID0+ICh7XG4gICAgICAgICAgICB0aXRsZTogaXRlbS50aXRsZSxcbiAgICAgICAgICAgIGljb246IGBpY29uLSR7aXRlbS5pY29ufWAsXG4gICAgICAgICAgICB0ZXh0OiBpdGVtLnRleHQsXG4gICAgICAgIH0pKTtcbiAgICB9XG5cbiAgICBtYXBJdGVtcyhpdGVtczogYW55KTogYW55IHwgdW5kZWZpbmVkIHtcbiAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGl0ZW1zKSkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgaXRlbXMgPSBpdGVtcz8ubWFwKChpdGVtOiBhbnkpID0+ICh7XG4gICAgICAgICAgICBsYWJlbDogaXRlbT8udGl0bGUsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogaXRlbT8udGV4dCA/PyBpdGVtPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgIHRleHRzOlxuICAgICAgICAgICAgICAgIGl0ZW0/LnRleHRzID8/XG4gICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0/LnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogaXRlbT8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgfSBhcyBCYWJ5bG9uVGV4dEluZm9JKSxcbiAgICAgICAgICAgIG11bHRpbWVkaWE6IHRoaXMubWFwSW1hZ2VzKGl0ZW1zPy5tdWx0aW1lZGlhKSxcbiAgICAgICAgICAgIGJ1dHRvbnM6IFV0aWxzLm1hcEJ1dHRvbnMoaXRlbT8uYnV0dG9ucyksXG4gICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGl0ZW0sIGZhbHNlKSxcbiAgICAgICAgfSkpO1xuICAgICAgICByZXR1cm4gaXRlbXMgYXMgQmFieWxvbkl0ZW1JO1xuICAgIH1cblxuICAgIG1hcE11bHRpbWVkaWEoaW1hZ2VzQXJyYXk6IGFueSB8IHVuZGVmaW5lZCk6IGFueSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KGltYWdlc0FycmF5KSAmJiBpbWFnZXNBcnJheS5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybiBpbWFnZXNBcnJheT8ubWFwKChpdGVtOiBJbWFnZVJlc3BvbnNlKSA9PiAoe1xuICAgICAgICAgICAgICAgIHN1YnRpdGxlOiBpdGVtPy5wcmV0aXRsZSxcbiAgICAgICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGl0ZW0sIGZhbHNlKSxcbiAgICAgICAgICAgICAgICBidXR0b25zOiBVdGlscy5tYXBCdXR0b25zKGl0ZW0/LmJ1dHRvbnMpLFxuICAgICAgICAgICAgICAgIGxpbmtzOiBVdGlscy5tYXBCdXR0b25zKGl0ZW0/LmxpbmtzKSxcbiAgICAgICAgICAgICAgICB0aXRsZTogaXRlbT8udGl0bGUsXG4gICAgICAgICAgICAgICAgcHJldGl0bGU6IGl0ZW0/LnByZXRpdGxlLFxuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBpdGVtPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICB0YWc6IGl0ZW0/LnRhZ3MsXG4gICAgICAgICAgICB9KSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBtYXBJbWFnZXMobXVsdGltZWRpYTogYW55IHwgdW5kZWZpbmVkKTogYW55IHwgdW5kZWZpbmVkIHtcbiAgICAgICAgaWYgKG11bHRpbWVkaWEpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgaW1hZ2VuZXM6IHRoaXMubWFwTXVsdGltZWRpYShtdWx0aW1lZGlhPy5pbWFnZW5lcyksXG4gICAgICAgICAgICAgICAgc3RhdGljSW1hZ2VuZXM6IHRoaXMubWFwTXVsdGltZWRpYShtdWx0aW1lZGlhPy5zdGF0aWNpbWFnZW5lcyksXG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZGltYWdlOiB0aGlzLm1hcE11bHRpbWVkaWEoXG4gICAgICAgICAgICAgICAgICAgIG11bHRpbWVkaWE/LmJhY2tncm91bmRpbWFnZVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgbG9nbzogdGhpcy5tYXBNdWx0aW1lZGlhKG11bHRpbWVkaWE/LmxvZ28pLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIG1hcFJvb21EZXRhaWxzKHJvb21zOiBhbnkgfCB1bmRlZmluZWQpOiBhbnkge1xuICAgICAgICByZXR1cm4gcm9vbXNcbiAgICAgICAgICAgID8uZmlsdGVyKFxuICAgICAgICAgICAgICAgIChyb29tOiBhbnksIGluZGV4OiBudW1iZXIsIHNlbGY6IGFueVtdKSA9PlxuICAgICAgICAgICAgICAgICAgICBzZWxmLmZpbmRJbmRleCgocikgPT4gci5pZCA9PT0gcm9vbS5pZCkgPT09IGluZGV4XG4gICAgICAgICAgICApXG4gICAgICAgICAgICA/Lm1hcChcbiAgICAgICAgICAgICAgICAoaXRlbTogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uczogVXRpbHMubWFwQnV0dG9ucyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtPy5idXR0b25zPy5zbGljZSgpLnJldmVyc2UoKVxuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtzOiBVdGlscy5tYXBCdXR0b25zKGl0ZW0/LmxpbmtzKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlczogW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtPy5tdWx0aW1lZGlhPy5maW5kKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGltZzogYW55KSA9PiBpbWc/LmNvdmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgfHwgaXRlbT8ubXVsdGltZWRpYT8uWzBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgbXVsdGltZWRpYToge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlbmVzOiBpdGVtPy5tdWx0aW1lZGlhPy5tYXAoKGltZzogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGltZywgZmFsc2UpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dHM6IGltZy50ZXh0cyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhZzogaW1nLnRhZ3MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidXR0b25zOiBVdGlscy5tYXBCdXR0b25zKGltZy5idXR0b25zKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtzOiBVdGlscy5tYXBCdXR0b25zKGltZy5saW5rcyksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBpbWcudGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgdmlkZW9zOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjOiBpdGVtPy5tdWx0aW1lZGlhPy52aWRlbz8uc3JjLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICd2aWRlby9tcDQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRleHRzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogaXRlbS50ZXh0cz8ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogaXRlbS50ZXh0cz8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbDE6IGl0ZW0udGV4dHM/LmFkZGl0aW9uYWwxLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZGl0aW9uYWwyOiBpdGVtLnRleHRzPy5hZGRpdGlvbmFsMixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsMzogaXRlbS50ZXh0cz8uYWRkaXRpb25hbDMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbDQ6IGl0ZW0udGV4dHM/LmFkZGl0aW9uYWw0LFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9yZGVyOiBpdGVtPy5vcmRlcixcbiAgICAgICAgICAgICAgICAgICAgICAgIGVxdWlwbWVudHM6IEFycmF5LmlzQXJyYXkoaXRlbT8uc2VydmljZXMpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBpdGVtLnNlcnZpY2VzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZpbHRlcigoc3ZjOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdHlwZXMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZW9mIHN2Yy50eXBlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gc3ZjLnR5cGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuc3BsaXQoJywnKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5tYXAoKHQ6IHN0cmluZykgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdC50cmltKClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBbXTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBBY2VwdGEgdGFudG8gJ2VxdWlwbWVudCcgY29tbyAnY2hhcmFjdGVyaXN0aWNzJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBoYXNWYWxpZFR5cGUgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZXMuaW5jbHVkZXMoJ2VxdWlwbWVudCcpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlcy5pbmNsdWRlcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSb29tU2VydmljZVR5cGUuY2hhcmFjdGVyaXN0aWNzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBoYXNWYWxpZFR5cGU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAubWFwKChzdmM6IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogc3ZjLm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb246IHN2Yy5jbGFzc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBgaWNvbi0ke3N2Yy5jbGFzc31gXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFtdLFxuICAgICAgICAgICAgICAgICAgICB9KSBhcyBCYWJ5bG9uUm9vbUluZm9JXG4gICAgICAgICAgICApO1xuICAgIH1cbiAgICBtYXA0MDQocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb240MDRJIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOiBwcm9wcy50ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogcHJvcHMudGV4dHM/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgc3VidGl0bGU6IHByb3BzLnRleHRzPy5zdWJ0aXRsZSxcbiAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyhwcm9wcy5idXR0b25zKT8uWzBdLFxuICAgICAgICB9IGFzIEJhYnlsb240MDRJO1xuICAgIH1cblxuICAgIC8vLS0tLSBMQVlPVVQgQ09NUE9ORU5UUyAtLS0tLy9cbiAgICBtYXBUb3BTbGlkZXIocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25Ub3BTbGlkZXJJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgbGV0IGltYWdlcztcbiAgICAgICAgaWYgKHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lc1swXT8udGFncz8ubGVuZ3RoKSB7XG4gICAgICAgICAgICBpbWFnZXMgPSBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXM/LmZpbHRlcihcbiAgICAgICAgICAgICAgICAoaW1hZ2U6IGFueSkgPT4gaW1hZ2U/LnRhZ3NbMF0/Lm5hbWUgPT09ICdUb3BTbGlkZXInXG4gICAgICAgICAgICApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaW1hZ2VzID0gcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBidXR0b25zOiBVdGlscy5tYXBCdXR0b25zKHByb3BzPy5idXR0b25zKSxcbiAgICAgICAgICAgIGxpbmtzOiBVdGlscy5tYXBCdXR0b25zKHByb3BzPy5saW5rcyksXG4gICAgICAgICAgICBpdGVtczogaW1hZ2VzLm1hcCgoaXRlbTogSW1hZ2VSZXNwb25zZSkgPT4gKHtcbiAgICAgICAgICAgICAgICB0aXRsZTogaXRlbT8udGl0bGUsXG4gICAgICAgICAgICAgICAgc3VidGl0bGU6IGl0ZW0/LnByZXRpdGxlLFxuICAgICAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaXRlbSwgZmFsc2UpLFxuICAgICAgICAgICAgICAgIGJ1dHRvbnM6IFV0aWxzLm1hcEJ1dHRvbnMoaXRlbT8uYnV0dG9ucyksXG4gICAgICAgICAgICAgICAgbGlua3M6IFV0aWxzLm1hcEJ1dHRvbnMoaXRlbT8ubGlua3MpLFxuICAgICAgICAgICAgfSkpLFxuICAgICAgICAgICAgaXRlbXNNb2JpbGU6IHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lc21vYmlsZT8ubWFwKFxuICAgICAgICAgICAgICAgIChpdGVtOiBJbWFnZVJlc3BvbnNlKSA9PlxuICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0/LnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgc3VidGl0bGU6IGl0ZW0/LnByZXRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpdGVtLCBmYWxzZSksXG4gICAgICAgICAgICAgICAgICAgICAgICBidXR0b25zOiBVdGlscy5tYXBCdXR0b25zKGl0ZW0/LmJ1dHRvbnMpLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGlua3M6IFV0aWxzLm1hcEJ1dHRvbnMoaXRlbT8ubGlua3MpLFxuICAgICAgICAgICAgICAgICAgICB9KSBhcyBCYWJ5bG9uVG9wU2xpZGVySXRlbVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGxvZ286IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKHByb3BzPy5tdWx0aW1lZGlhPy5sb2dvPy5bMF0sIGZhbHNlKSxcbiAgICAgICAgICAgIGxvZ29UaXRsZTogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmxvZ290aXRsZT8uWzBdLFxuICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgdmlkZW9EYXRhOiB7XG4gICAgICAgICAgICAgICAgLy8gdGl0bGU6IHByb3BzPy52aWRlbz8udGl0bGUsXG4gICAgICAgICAgICAgICAgc3JjOiBwcm9wcz8udGV4dHM/LnZpZGVvLFxuICAgICAgICAgICAgICAgIHR5cGU6ICd2aWRlby9tcDQnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSBhcyBCYWJ5bG9uVG9wU2xpZGVySTtcbiAgICB9XG5cbiAgICBtYXBUb3BTbGlkZXJWaWRlbyhcbiAgICAgICAgcHJvcHM6IGFueSB8IHVuZGVmaW5lZFxuICAgICk6IEJhYnlsb25Ub3BTbGlkZXJWaWRlb0kgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdmlkZW9EYXRhOiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy52aWRlbz8udGl0bGUsXG4gICAgICAgICAgICAgICAgc3JjOiBwcm9wcz8udmlkZW8/LnNyYyxcbiAgICAgICAgICAgICAgICB0eXBlOiAndmlkZW8vbXA0JyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzbWFsbFZpZGVvRGF0YTogcHJvcHM/LnZpZGVvPy5tb2JpbGVcbiAgICAgICAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnZpZGVvPy50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICBzcmM6IHByb3BzPy52aWRlbz8ubW9iaWxlLFxuICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICd2aWRlby9tcDQnLFxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgbGFiZWxJbmZvczoge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOlxuICAgICAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy5wcmV0aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy5wcmV0aXRsZVxuICAgICAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy50aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy50aXRsZVxuICAgICAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy50YWcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2Vtb2JpbGU/LlswXSxcbiAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyhwcm9wcz8uYnV0dG9ucyk/LlswXSxcbiAgICAgICAgfSBhcyBCYWJ5bG9uVG9wU2xpZGVyVmlkZW9JO1xuICAgIH1cblxuICAgIG1hcFRvcFNsaWRlclYyKFxuICAgICAgICBwcm9wczogYW55IHwgdW5kZWZpbmVkLFxuICAgICAgICByaWdodFNpZGU6IGJvb2xlYW4gPSBmYWxzZVxuICAgICk6IEJhYnlsb25Ub3BTbGlkZXJWMkkgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gcHJvcHNcbiAgICAgICAgICAgID8gKHtcbiAgICAgICAgICAgICAgICAgIHJpZ2h0U2lkZTogcmlnaHRTaWRlLFxuICAgICAgICAgICAgICAgICAgYnV0dG9uczogVXRpbHMubWFwQnV0dG9ucyhwcm9wcz8uYnV0dG9ucyk/LlswXSxcbiAgICAgICAgICAgICAgICAgIGl0ZW1zOiBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXM/Lm1hcChcbiAgICAgICAgICAgICAgICAgICAgICAoaXRlbTogSW1hZ2VSZXNwb25zZSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtLnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VidGl0bGU6IGl0ZW0ucHJldGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGl0ZW0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB9KSBhcyBCYWJ5bG9uU2xpZGVyNGNvbExhYmVsc1xuICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgIGxhYmVsczoge1xuICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgIHN1YnRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnRleHQsXG4gICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IHByb3BzPy50ZXh0cz8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgICAgICAgdGV4dDogcHJvcHM/LnRleHRzPy50ZXh0LFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfSBhcyBCYWJ5bG9uVG9wU2xpZGVyVjJJKVxuICAgICAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgbWFwSW5mb0ltZyhcbiAgICAgICAgcHJvcHM6IGFueSB8IHVuZGVmaW5lZCxcbiAgICAgICAgcmlnaHRTaWRlOiBib29sZWFuID0gZmFsc2UsXG4gICAgICAgIHRleHRDb2xvcjogc3RyaW5nIHwgdW5kZWZpbmVkXG4gICAgKTogQmFieWxvbkluZm9JbWdJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHJpZ2h0U2lkZTogcmlnaHRTaWRlLFxuICAgICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8udGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy50aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICBwcmV0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy5wcmV0aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnByZXRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIGJ1dHRvbnM6IHByb3BzPy5idXR0b25zXG4gICAgICAgICAgICAgICAgPyBVdGlscy5tYXBCdXR0b25zKFxuICAgICAgICAgICAgICAgICAgICAgIHByb3BzPy5idXR0b25zPy5maWx0ZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChsaW5rOiBhbnkpID0+IGxpbms/LmxpbmtWYWx1ZSAhPT0gbnVsbFxuICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LmRlc2NyaXB0aW9uID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8uZGVzY3JpcHRpb25cbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LmRlc2NyaXB0aW9uPy5jb250YWluLFxuICAgICAgICAgICAgdGV4dDpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy5zdWJ0aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnN1YnRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy5zdWJ0aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIG5kdGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8ubmR0aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/Lm5kdGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/Lm5kdGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICBsZXNzQnRuOiBwcm9wcz8udGV4dHM/LnNlZUxlc3MsXG4gICAgICAgICAgICBtb3JlQnRuOiBwcm9wcz8udGV4dHM/LnNlZU1vcmUsXG4gICAgICAgICAgICBpbWFnZXM6IHRoaXMuZ2V0QXJyYXlJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzLFxuICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYWR2YW50YWdlczogcHJvcHM/LlZlbnRhamFzPy5maWx0ZXIoXG4gICAgICAgICAgICAgICAgKGl0ZW06IGFueSkgPT4gaXRlbT8udGl0bGUgfHwgaXRlbT8udGV4dFxuICAgICAgICAgICAgKT8ubWFwKChpdGVtOiBhbnkpID0+ICh7XG4gICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0udGl0bGUsXG4gICAgICAgICAgICAgICAgdGV4dDogaXRlbS50ZXh0LFxuICAgICAgICAgICAgICAgIGljb246IGl0ZW0uaWNvbiA/IGBpY29uLSR7aXRlbS5pY29ufWAgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICB9KSksXG4gICAgICAgICAgICBsb2dvOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShwcm9wcz8ubXVsdGltZWRpYT8ubG9nbz8uWzBdLCBmYWxzZSksXG4gICAgICAgICAgICBhZHZUaXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy50ZXh0ID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8udGV4dFxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8udGV4dD8uY29udGFpbixcbiAgICAgICAgICAgIHRvcEJHOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8udG9wYmc/LlswXSxcbiAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGJvdHRvbUJHOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uYm90dG9tYmc/LlswXSxcbiAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHRvcENvbG9yOiBwcm9wcz8udGV4dHM/LnRvcENvbG9yLFxuICAgICAgICAgICAgYm90dG9tQ29sb3I6IHByb3BzPy50ZXh0cz8uQm90dG9tQ29sb3IsXG4gICAgICAgICAgICB0ZXh0Q29sb3I6IHRleHRDb2xvcixcbiAgICAgICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgdGV4dDogcHJvcHM/LnRleHRzPy5zdWJ0aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBwcm9wcz8udGV4dHM/LmRlc2NyaXB0aW9uPy50YWcsXG4gICAgICAgICAgICAgICAgbmR0aXRsZTogcHJvcHM/LnRleHRzPy5uZHRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgYWR2VGl0bGU6IHByb3BzPy50ZXh0cz8udGV4dD8udGFnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRleHRDb2xvcnM6IHtcbiAgICAgICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgICAgICB0ZXh0OiBwcm9wcz8udGV4dHM/LnN1YnRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBwcm9wcz8udGV4dHM/LmRlc2NyaXB0aW9uPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSBhcyBCYWJ5bG9uSW5mb0ltZ0k7XG4gICAgfVxuXG4gICAgbWFwSW5mb0ltZ1NsaWRlcihcbiAgICAgICAgcHJvcHM6IGFueSB8IHVuZGVmaW5lZCxcbiAgICAgICAgcmlnaHRTaWRlOiBib29sZWFuID0gZmFsc2VcbiAgICApOiBCYWJ5bG9uSW5mb0ltZ1NsaWRlckkgfCB1bmRlZmluZWQge1xuICAgICAgICAvLyBUT0RPOiBhZGQgdG9wQkcsIGJvdHRvbUJHXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICByaWdodFNpZGU6IHJpZ2h0U2lkZSxcbiAgICAgICAgICAgIHRvcENvbG9yOiBwcm9wcz8udGV4dHM/LnRvcENvbG9yLFxuICAgICAgICAgICAgYm90dG9tQ29sb3I6IHByb3BzPy50ZXh0cz8uYm90dG9tQ29sb3IsXG4gICAgICAgICAgICBsZXNzQnRuOiBwcm9wcz8udGV4dHM/LnNlZUxlc3MsXG4gICAgICAgICAgICBtb3JlQnRuOiBwcm9wcz8udGV4dHM/LnNlZU1vcmUsXG4gICAgICAgICAgICBpdGVtczogcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzPy5tYXAoXG4gICAgICAgICAgICAgICAgKGl0ZW06IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtPy50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZXRpdGxlOiBpdGVtPy5wcmV0aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHN1YnRpdGxlOiBpdGVtPy5zdWJ0aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBpdGVtPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgIG5kdGl0bGU6IGl0ZW0/Lm5kX3RpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2U6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGl0ZW0sIGZhbHNlKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvbnM6IFV0aWxzLm1hcEJ1dHRvbnMoaXRlbT8uYnV0dG9ucyksXG4gICAgICAgICAgICAgICAgICAgICAgICBsaW5rczogVXRpbHMubWFwQnV0dG9ucyhpdGVtPy5saW5rcyksXG4gICAgICAgICAgICAgICAgICAgIH0pIGFzIEJhYnlsb25JbmZvSW1nU2xpZGVySXRlbUlcbiAgICAgICAgICAgICksXG4gICAgICAgIH0gYXMgQmFieWxvbkluZm9JbWdTbGlkZXJJO1xuICAgIH1cblxuICAgIG1hcEluZm9JbnRybyhwcm9wczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvbkluZm9JbnRyb0kgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8udGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy50aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICBwcmV0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy5wcmV0aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnByZXRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LmRlc2NyaXB0aW9uID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8uZGVzY3JpcHRpb25cbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LmRlc2NyaXB0aW9uPy5jb250YWluLFxuICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHByb3BzPy5idXR0b25zKT8uWzBdLFxuICAgICAgICAgICAgaW1hZ2VzOiB0aGlzLmdldEFycmF5SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcyxcbiAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHRvcEJHOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8udG9wYmc/LlswXSxcbiAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGJvdHRvbUJHOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uYm90dG9tYmc/LlswXSxcbiAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHRvcENvbG9yOiBwcm9wcz8udGV4dHM/LnRvcENvbG9yLFxuICAgICAgICAgICAgYm90dG9tQ29sb3I6IHByb3BzPy50ZXh0cz8uQm90dG9tQ29sb3IsXG4gICAgICAgICAgICBsb2dvOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShwcm9wcz8ubXVsdGltZWRpYT8ubG9nbz8uWzBdLCBmYWxzZSksXG4gICAgICAgICAgICBsb2dvMjogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmxvZ28yPy5bMF0sXG4gICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICB0YWdzOiB7XG4gICAgICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBwcm9wcz8udGV4dHM/LmRlc2NyaXB0aW9uPy50YWcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGV4dENvbG9yczoge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBwcm9wcz8udGV4dHM/LmRlc2NyaXB0aW9uPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGJ1dHRvbk1vZGFsOiBwcm9wcz8udGV4dHM/LnBvcHVwbW9kYWwsXG4gICAgICAgIH0gYXMgQmFieWxvbkluZm9JbnRyb0k7XG4gICAgfVxuXG4gICAgbWFwSGVhZGVyKFxuICAgICAgICBwcm9wczogYW55IHwgdW5kZWZpbmVkLFxuICAgICAgICBtZW51OiBhbnlcbiAgICApOlxuICAgICAgICB8IEJhYnlsb25IZWFkZXJCb29rU2hvd0lcbiAgICAgICAgfCBCYWJ5bG9uSGVhZGVyQ2xlYXJJXG4gICAgICAgIHwgQmFieWxvbkhlYWRlck1lbnVDZW50ZXJJXG4gICAgICAgIHwgQmFieWxvbkhlYWRlck1lbnVMb2dvQ2VudGVySVxuICAgICAgICB8IEJhYnlsb25IZWFkZXJNZW51U2hvd0kge1xuICAgICAgICBjb25zdCBsaW5rID0gbWVudS5saW5rcz8ubG9nb0xpbms/LmZsYXQoKT8uWzBdO1xuICAgICAgICBjb25zdCBoZWFkZXJCdXR0b25zID0gcHJvcHM7XG5cbiAgICAgICAgaWYgKGhlYWRlckJ1dHRvbnMpIHtcbiAgICAgICAgICAgIHRoaXMuZmxvYXRpbmdCdXR0b25zID0ge1xuICAgICAgICAgICAgICAgIHRleHRzOiBbXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGljb246IGBiYWJ5bG9uLSR7aGVhZGVyQnV0dG9ucy50ZXh0cz8udHJhbnNmZXJJY29ufWAsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogaGVhZGVyQnV0dG9ucz8udGV4dHM/LnRyYW5zZmVyLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpY29uOiBgYmFieWxvbi0ke2hlYWRlckJ1dHRvbnMudGV4dHM/LmNoZWNraW5JY29ufWAsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogaGVhZGVyQnV0dG9ucz8udGV4dHM/LmNoZWNraW4sXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGljb246IGBiYWJ5bG9uLSR7aGVhZGVyQnV0dG9ucy50ZXh0cz8ud2hhdHNhcHB9YCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBoZWFkZXJCdXR0b25zPy50ZXh0cz8ud2hhdHNhcHAsXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICBsaW5rczogVXRpbHMubWFwQnV0dG9ucyhoZWFkZXJCdXR0b25zPy5saW5rcyksXG4gICAgICAgICAgICB9IGFzIEJhYnlsb25GbG9hdGluZ0J1dHRvbnNJO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGZsb2F0aW5nQnV0dG9uczogdGhpcy5mbG9hdGluZ0J1dHRvbnMsXG4gICAgICAgICAgICBsYW5nOiB0aGlzLnNpdGVTdmMuc2VsZWN0ZWRMYW5ndWFnZUluc3RhbnQ/LmxvY2F0ZT8udG9VcHBlckNhc2UoKSxcbiAgICAgICAgICAgIGJ0bkJvb2s6IHsgbGFiZWw6IGhlYWRlckJ1dHRvbnM/LnRleHRzPy5ib29rTm93IH0sXG4gICAgICAgICAgICBzaG9wOiBoZWFkZXJCdXR0b25zPy50ZXh0cz8uc2hvcFxuICAgICAgICAgICAgICAgID8gYGljb24tJHtoZWFkZXJCdXR0b25zPy50ZXh0cz8uc2hvcH1gXG4gICAgICAgICAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBsaW5rczogVXRpbHMubWFwQnV0dG9ucyhoZWFkZXJCdXR0b25zPy5saW5rcyksXG4gICAgICAgICAgICBsaW5rTG9nbzoge1xuICAgICAgICAgICAgICAgIGxhYmVsOiBsaW5rPy5sYWJlbCxcbiAgICAgICAgICAgICAgICB1cmw6IGxpbms/LmxpbmtWYWx1ZSxcbiAgICAgICAgICAgICAgICBsaW5rVHlwZTogbGluaz8ubGlua1R5cGUsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbWVudTogbWVudT8ubmF2Py5tYXAoXG4gICAgICAgICAgICAgICAgKG1lbnU6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IG1lbnU/Lm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICB1cmw6IG1lbnU/LmxpbmtWYWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtUeXBlOiBtZW51Py5saW5rVHlwZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBtZW51Py50cmFuc2xhdGlvbnM/LlswXT8ubmFtZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gbWVudT8udHJhbnNsYXRpb25zPy5bMF0/Lm5hbWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IG1lbnU/Lm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbjogbWVudT8uY2hpbGRyZW4/Lm1hcChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hpbGQ6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IGNoaWxkPy5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBjaGlsZD8ubGlua1ZhbHVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlua1R5cGU6IGNoaWxkPy5saW5rVHlwZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBjaGlsZD8udHJhbnNsYXRpb25zPy5bMF0/Lm5hbWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IGNoaWxkPy50cmFuc2xhdGlvbnM/LlswXT8ubmFtZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogY2hpbGQ/Lm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pIGFzIEJhYnlsb25CdXR0b25JXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICB9KSBhcyBCYWJ5bG9uTWVudUJ1dHRvbklcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBtZW51SW5mbzogdGhpcy5tYXBNZW51KG1lbnUsIHVuZGVmaW5lZCksXG4gICAgICAgIH0gYXNcbiAgICAgICAgICAgIHwgQmFieWxvbkhlYWRlckJvb2tTaG93SVxuICAgICAgICAgICAgfCBCYWJ5bG9uSGVhZGVyQ2xlYXJJXG4gICAgICAgICAgICB8IEJhYnlsb25IZWFkZXJNZW51Q2VudGVySVxuICAgICAgICAgICAgfCBCYWJ5bG9uSGVhZGVyTWVudUxvZ29DZW50ZXJJXG4gICAgICAgICAgICB8IEJhYnlsb25IZWFkZXJNZW51U2hvd0k7XG4gICAgfVxuXG4gICAgLy9UT0RPOiBXYWl0IGZvciBiYWNrIGluZm9cbiAgICBtYXBNZW51KFxuICAgICAgICBwcm9wczogYW55IHwgdW5kZWZpbmVkLFxuICAgICAgICBzb2NpYWxNZWRpYTogYW55IHwgdW5kZWZpbmVkXG4gICAgKTogQmFieWxvbk1lbnVJbmZvSSB7XG4gICAgICAgIGNvbnN0IGxpbmtzID0gVXRpbHMubWFwQnV0dG9ucyhcbiAgICAgICAgICAgIHByb3BzPy5uYXY/Lm1hcCgobGluazogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgIC4uLmxpbmssXG4gICAgICAgICAgICAgICAgbGFiZWw6IGxpbmsudHJhbnNsYXRpb25zPy5bMF0/Lm5hbWUsXG4gICAgICAgICAgICB9KSlcbiAgICAgICAgKTtcblxuICAgICAgICBjb25zdCBjb250YWN0ID0gKCgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHJhdyA9IFV0aWxzLm1hcEJ1dHRvbnMocHJvcHM/LmxpbmtzPy5jb250YWN0Py5bMF0pOyAvLyBwLmVqLiBbdW5kZWZpbmVkLCB1bmRlZmluZWRdXG4gICAgICAgICAgICBjb25zdCBsaW5rcyA9IEFycmF5LmlzQXJyYXkocmF3KSA/IHJhdy5maWx0ZXIoQm9vbGVhbikgOiB1bmRlZmluZWQ7XG5cbiAgICAgICAgICAgIGNvbnN0IHJhd1RpdGxlID1cbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy5jb250YWN0VGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHMudGV4dHMuY29udGFjdFRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy5jb250YWN0VGl0bGU/LmNvbnRhaW47XG5cbiAgICAgICAgICAgIGNvbnN0IHRpdGxlID1cbiAgICAgICAgICAgICAgICB0eXBlb2YgcmF3VGl0bGUgPT09ICdzdHJpbmcnICYmIHJhd1RpdGxlLnRyaW0oKS5sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgPyByYXdUaXRsZS50cmltKClcbiAgICAgICAgICAgICAgICAgICAgOiB1bmRlZmluZWQ7XG5cbiAgICAgICAgICAgIGlmICghbGlua3M/Lmxlbmd0aCAmJiAhdGl0bGUpIHJldHVybiB1bmRlZmluZWQ7XG5cbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgLi4uKGxpbmtzPy5sZW5ndGggPyB7IGxpbmtzIH0gOiB7fSksXG4gICAgICAgICAgICAgICAgLi4uKHRpdGxlID8geyB0aXRsZSB9IDoge30pLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSkoKTtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgbGlua3M6IGxpbmtzPy5zbGljZSgwLCA2KSxcbiAgICAgICAgICAgIGJvdHRvbUxpbmtzOiBsaW5rcz8uc2xpY2UoNiksXG4gICAgICAgICAgICBhZGRyZXNzOiB7XG4gICAgICAgICAgICAgICAgYWRkcmVzczogcHJvcHM/LmFkZHJlc3M/LlswXT8uYWRkcmVzcyxcbiAgICAgICAgICAgICAgICBjaXR5OiBwcm9wcz8uYWRkcmVzcz8uWzBdPy5jaXR5LFxuICAgICAgICAgICAgICAgIGNvdW50cnk6IHByb3BzPy5hZGRyZXNzPy5bMF0/LmNvdW50cnksXG4gICAgICAgICAgICAgICAgY3A6IHByb3BzPy5hZGRyZXNzPy5bMF0/LmNwLFxuICAgICAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy5hZGRyZXNzVGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8uYWRkcmVzc1RpdGxlXG4gICAgICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8uYWRkcmVzc1RpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgICAgIHByb3ZpbmNlOiBwcm9wcz8uYWRkcmVzcz8uWzBdPy5wcm92aW5jZSxcbiAgICAgICAgICAgICAgICB1cmw6IHByb3BzPy5hZGRyZXNzPy5bMF0/LmxpbmssXG4gICAgICAgICAgICAgICAgbGlua3M6IHtcbiAgICAgICAgICAgICAgICAgICAgdXJsOiBwcm9wcz8uYWRkcmVzcz8uWzBdPy5saW5rLFxuICAgICAgICAgICAgICAgICAgICBsaW5rVHlwZTogJ2V4dGVybmFsJyxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGNvbnRhY3Q6IGNvbnRhY3QsXG4gICAgICAgICAgICBzb2NpYWxNZWRpYTogc29jaWFsTWVkaWE/Lm1hcChcbiAgICAgICAgICAgICAgICAoaXRlbTogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgaWNvbjogYGJhYnlsb24tJHtpdGVtLm5hbWU/LnRvTG93ZXJDYXNlKCl9YCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVybDogaXRlbS51cmwsXG4gICAgICAgICAgICAgICAgICAgIH0pIGFzIEJhYnlsb25CdXR0b25JXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuPy5bMF0sIGZhbHNlKSxcbiAgICAgICAgICAgIGltZ0JhY2tncm91bmQ6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5iYWNrZ3JvdW5kPy5bMF0sXG4gICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBsaW5rTG9nbzoge1xuICAgICAgICAgICAgICAgIHVybDogcHJvcHM/LmxpbmtzPy5sb2dvTGluaz8uWzBdPy5saW5rVmFsdWUsXG4gICAgICAgICAgICAgICAgbGlua1R5cGU6IHByb3BzPy5saW5rcz8ubG9nb0xpbms/LlswXT8ubGlua1R5cGUsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgIGNvbnRhY3RUaXRsZTogcHJvcHM/LnRleHRzPy5jb250YWN0VGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICBhZGRyZXNzVGl0bGU6IHByb3BzPy50ZXh0cz8uYWRkcmVzc1RpdGxlPy50YWcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGV4dENvbG9yczoge1xuICAgICAgICAgICAgICAgIGNvbnRhY3RUaXRsZTogcHJvcHM/LnRleHRzPy5jb250YWN0VGl0bGU/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICAgICAgYWRkcmVzc1RpdGxlOiBwcm9wcz8udGV4dHM/LmFkZHJlc3NUaXRsZT8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0gYXMgQmFieWxvbk1lbnVJbmZvSTtcbiAgICB9XG5cbiAgICBtYXBJbmZvMmltZyhcbiAgICAgICAgcHJvcHM6IGFueSB8IHVuZGVmaW5lZCxcbiAgICAgICAgcmlnaHRTaWRlOiBib29sZWFuID0gZmFsc2VcbiAgICApOiBCYWJ5bG9uSW5mbzJpbWdJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHJpZ2h0U2lkZTogcmlnaHRTaWRlLFxuICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LnRhZyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0ZXh0czoge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOlxuICAgICAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy5wcmV0aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy5wcmV0aXRsZVxuICAgICAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy50aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy50aXRsZVxuICAgICAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgICAgIHRleHQ6IHByb3BzPy50ZXh0cz8udGV4dCxcbiAgICAgICAgICAgICAgICBpdGVtMTogcHJvcHM/LnRleHRzPy5pdGVtMSxcbiAgICAgICAgICAgICAgICBpdGVtMVRleHQ6IHByb3BzPy50ZXh0cz8uaXRlbTFUZXh0LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyhwcm9wcz8uYnV0dG9ucyksXG4gICAgICAgICAgICBpbWFnZXM6IHRoaXMuZ2V0QXJyYXlJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzLFxuICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgaW1hZ2Vzc21hbGw6IHRoaXMuZ2V0QXJyYXlJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlc3NtYWxsLFxuICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYWR2YW50YWdlczogcHJvcHM/LlZlbnRhamFzPy5tYXAoKGl0ZW06IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICB0aXRsZTogaXRlbS50aXRsZSxcbiAgICAgICAgICAgICAgICB0ZXh0OiBpdGVtLnRleHQsXG4gICAgICAgICAgICAgICAgaWNvbjogYGljb24tJHtpdGVtLmljb259YCxcbiAgICAgICAgICAgIH0pKSxcbiAgICAgICAgfSBhcyBCYWJ5bG9uSW5mbzJpbWdJO1xuICAgIH1cblxuICAgIG1hcEluZm8yY29saW1nKFxuICAgICAgICBwcm9wczogYW55IHwgdW5kZWZpbmVkLFxuICAgICAgICByaWdodFNpZGU6IGJvb2xlYW4gPSBmYWxzZVxuICAgICk6IEJhYnlsb25JbmZvMkNvbEltZ0kgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcmlnaHRTaWRlOiByaWdodFNpZGUsXG4gICAgICAgICAgICB0ZXh0OiBwcm9wcz8udGV4dHM/LnRleHQsXG4gICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/LnRleHRzPy5wcmV0aXRsZSxcbiAgICAgICAgICAgIHN1YnRpdGxlOiBwcm9wcz8udGV4dHM/LnN1YnRpdGxlLFxuICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICBzbWFsbGltYWdlOiB0aGlzLmdldEFycmF5SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5zbWFsbGltYWdlLFxuICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgaXRlbXM6IHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8ubWFwKChpdGVtOiBhbnkpID0+ICh7XG4gICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0/LnRpdGxlLFxuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBpdGVtPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGl0ZW0sIGZhbHNlKSxcbiAgICAgICAgICAgICAgICBidXR0b25zOiBVdGlscy5tYXBCdXR0b25zKGl0ZW0/LmJ1dHRvbnMpLFxuICAgICAgICAgICAgfSkpLFxuICAgICAgICB9IGFzIEJhYnlsb25JbmZvMkNvbEltZ0k7XG4gICAgfVxuXG4gICAgbWFwWmlnemFnKFxuICAgICAgICBwcm9wczogYW55IHwgdW5kZWZpbmVkLFxuICAgICAgICByaWdodFNpZGU6IGJvb2xlYW4gPSBmYWxzZVxuICAgICk6IEJhYnlsb25JbmZvMmltZ0kgfCB1bmRlZmluZWQge1xuICAgICAgICBsZXQgaW1hZ2VzOiAoc3RyaW5nIHwgQmFieWxvbkltYWdlSSlbXSB8IHVuZGVmaW5lZCA9IFtdO1xuICAgICAgICBsZXQgdGV4dHMsIHRhZ3M7XG4gICAgICAgIGlmIChwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXMpIHtcbiAgICAgICAgICAgIGltYWdlcyA9IHRoaXMuZ2V0QXJyYXlJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzLFxuICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgdGV4dHMgPSB7XG4gICAgICAgICAgICAgICAgcHJldGl0bGU6XG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LmNvbnRhaW4gPz9cbiAgICAgICAgICAgICAgICAgICAgKHR5cGVvZiBwcm9wcz8udGV4dHM/LnByZXRpdGxlID09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8ucHJldGl0bGVcbiAgICAgICAgICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkKSxcbiAgICAgICAgICAgICAgICB0aXRsZTpcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy50aXRsZT8uY29udGFpbiA/P1xuICAgICAgICAgICAgICAgICAgICAodHlwZW9mIHByb3BzPy50ZXh0cz8udGl0bGUgPT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy50aXRsZVxuICAgICAgICAgICAgICAgICAgICAgICAgOiB1bmRlZmluZWQpLFxuICAgICAgICAgICAgICAgIGNvbnRlbnR0aXRsZTpcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy5jb250ZW50dGl0bGU/LmNvbnRhaW4gPz9cbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy5jb250ZW50dGl0bGUsXG4gICAgICAgICAgICAgICAgY29udGVudHN1YnRpdGxlOlxuICAgICAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/LmNvbnRlbnRzdWJ0aXRsZT8uY29udGFpbiA/P1xuICAgICAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/LmNvbnRlbnRzdWJ0aXRsZSxcbiAgICAgICAgICAgICAgICBjb250ZW50ZGVzY3JpcHRpb246XG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy50ZXh0cz8uY29udGVudGRlc2NyaXB0aW9uPy5jb250YWluID8/XG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy50ZXh0cz8uY29udGVudGRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgIGxvZ286IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8ubG9nbz8uWzBdLFxuICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgaWNvbnM6IHByb3BzPy5WZW50YWphcz8uZmlsdGVyKFxuICAgICAgICAgICAgICAgICAgICAoaXRlbTogYW55KSA9PiBpdGVtPy50aXRsZSB8fCBpdGVtPy50ZXh0XG4gICAgICAgICAgICAgICAgKT8ubWFwKChpdGVtOiBhbnkpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtLnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICB0ZXh0OiBpdGVtLnRleHQsXG4gICAgICAgICAgICAgICAgICAgIGljb246IGBpY29uLSR7aXRlbS5pY29ufWAsXG4gICAgICAgICAgICAgICAgfSkpLFxuICAgICAgICAgICAgICAgIGljb25UaXRsZTpcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy5pY29udGl0bGU/LmNvbnRhaW4gPz8gcHJvcHM/LnRleHRzPy5pY29udGl0bGUsXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgdGFncyA9IHtcbiAgICAgICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgY29udGVudHRpdGxlOiBwcm9wcz8udGV4dHM/LmNvbnRlbnR0aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIGNvbnRlbnRzdWJ0aXRsZTogcHJvcHM/LnRleHRzPy5jb250ZW50c3VidGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICBjb250ZW50ZGVzY3JpcHRpb246IHByb3BzPy50ZXh0cz8uY29udGVudGRlc2NyaXB0aW9uPy50YWcsXG4gICAgICAgICAgICAgICAgaWNvblRpdGxlOiBwcm9wcz8udGV4dHM/Lmljb250aXRsZT8udGFnLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcmlnaHRTaWRlOiByaWdodFNpZGUsXG4gICAgICAgICAgICBidXR0b25zOiBVdGlscy5tYXBCdXR0b25zKFxuICAgICAgICAgICAgICAgIHByb3BzPy5idXR0b25zLmZpbHRlcigoYnRuOiBhbnkpID0+ICEhYnRuPy5saW5rVmFsdWUpXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgdGV4dHMsXG4gICAgICAgICAgICBpbWFnZXMsXG4gICAgICAgICAgICB0YWdzLFxuICAgICAgICB9IGFzIEJhYnlsb25JbmZvMmltZ0k7XG4gICAgfVxuXG4gICAgbWFwR3JpZEdhbGxlcnkocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25JbmZvSW1nSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGNvbnN0IGlzSW5FbnVtID0gPFQgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+PihcbiAgICAgICAgICAgIGVudW1PYmo6IFQsXG4gICAgICAgICAgICB2YWx1ZTogYW55XG4gICAgICAgICk6IHZhbHVlIGlzIFRba2V5b2YgVF0gPT4gT2JqZWN0LnZhbHVlcyhlbnVtT2JqKS5pbmNsdWRlcyh2YWx1ZSk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/LnRleHRzPy5wcmV0aXRsZSxcbiAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgdGV4dDogcHJvcHM/LnRleHRzPy50ZXh0LFxuICAgICAgICAgICAgaG92ZXI6IHByb3BzPy50ZXh0cz8uaG92ZXIsXG4gICAgICAgICAgICBwbGFjZWhvbGRlcjogcHJvcHM/LnRleHRzPy5wbGFjZWhvbGRlcixcbiAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyhwcm9wcz8uYnV0dG9ucyksXG4gICAgICAgICAgICB2aWV3OiBpc0luRW51bShWaWV3c1R5cGUsIHByb3BzPy5tdWx0aW1lZGlhPy52aWV3KVxuICAgICAgICAgICAgICAgID8gcHJvcHMubXVsdGltZWRpYT8udmlld1xuICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgaW1hZ2VzOiB0aGlzLmdldEFycmF5SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcyxcbiAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgKSxcbiAgICAgICAgfSBhcyBCYWJ5bG9uSW5mb0ltZ0k7XG4gICAgfVxuXG4gICAgbWFwSW5mb0dyaWQocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25JbmZvR3JpZEkgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcHJldGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8ucHJldGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy5wcmV0aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICB0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy50aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy50aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy50YWcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGV4dDogcHJvcHM/LnRleHRzPy50ZXh0LFxuICAgICAgICAgICAgYnV0dG9uczogVXRpbHMubWFwQnV0dG9ucyhcbiAgICAgICAgICAgICAgICBwcm9wcz8uYnV0dG9ucy5maWx0ZXIoKGJ0bjogYW55KSA9PiAhIWJ0bj8ubGlua1ZhbHVlKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGl0ZW1zOiBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXM/Lm1hcChcbiAgICAgICAgICAgICAgICAoaXRlbTogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgcHJldGl0bGU6IGl0ZW0/LnByZXRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0/LnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGV4dDogaXRlbT8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICBpbWFnZTogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaXRlbSwgZmFsc2UpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uczogaXRlbS5idXR0b25zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBVdGlscy5tYXBCdXR0b25zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0uYnV0dG9ucy5maWx0ZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsaW5rOiBhbnkpID0+IGxpbms/LmxpbmtWYWx1ZSAhPT0gbnVsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtzOiBpdGVtLmxpbmtzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBVdGlscy5tYXBCdXR0b25zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0ubGlua3MuZmlsdGVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGluazogYW55KSA9PiBsaW5rPy5saW5rVmFsdWUgIT09IG51bGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICApPy5bMF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgQmFieWxvbkluZm9HcmlkSXRlbUlcbiAgICAgICAgICAgICksXG4gICAgICAgIH0gYXMgQmFieWxvbkluZm9HcmlkSTtcbiAgICB9XG5cbiAgICBtYXBCYW5uZXJHYWxsZXJ5KFxuICAgICAgICBwcm9wczogYW55IHwgdW5kZWZpbmVkXG4gICAgKTogQmFieWxvbkJhbm5lckdhbGxlcnlJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHByZXRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnByZXRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8ucHJldGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8udGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy50aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICB0YWdzOiB7XG4gICAgICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8udGFnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGhvdmVyOiBwcm9wcz8udGV4dHM/LmhvdmVyLFxuICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHByb3BzPy5idXR0b25zKSxcbiAgICAgICAgICAgIGltYWdlczogdGhpcy5nZXRBcnJheUltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXMsXG4gICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICksXG4gICAgICAgIH0gYXMgQmFieWxvbkJhbm5lckdhbGxlcnlJO1xuICAgIH1cblxuICAgIG1hcEJhbm5lck5ld3NsZXR0ZXIocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25JbmZvSW1nSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/LnRleHRzPy5wcmV0aXRsZSxcbiAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgdGV4dDogcHJvcHM/LnRleHRzPy50ZXh0LFxuICAgICAgICAgICAgaG92ZXI6IHByb3BzPy50ZXh0cz8uaG92ZXIsXG4gICAgICAgICAgICBwbGFjZWhvbGRlcjogcHJvcHM/LnRleHRzPy5wbGFjZWhvbGRlcixcbiAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyhwcm9wcz8uYnV0dG9ucyksXG4gICAgICAgICAgICBpbWFnZTogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzPy5bMF0gPz9cbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlPy5bMF0sXG4gICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICksXG4gICAgICAgIH0gYXMgQmFieWxvbkluZm9JbWdJO1xuICAgIH1cblxuICAgIG1hcFNsaWRlckNvbGwyKFxuICAgICAgICBwcm9wczogYW55IHwgdW5kZWZpbmVkLFxuICAgICAgICByaWdodFNpZGU6IGJvb2xlYW4gPSBmYWxzZVxuICAgICk6IEJhYnlsb25Ub3BTbGlkZXJWMkkgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gcHJvcHNcbiAgICAgICAgICAgID8gKHtcbiAgICAgICAgICAgICAgICAgIHJpZ2h0U2lkZTogcmlnaHRTaWRlLFxuICAgICAgICAgICAgICAgICAgYnV0dG9uczogVXRpbHMubWFwQnV0dG9ucyhwcm9wcz8uYnV0dG9ucyk/LlswXSxcbiAgICAgICAgICAgICAgICAgIGltYWdlczogcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzPy5tYXAoXG4gICAgICAgICAgICAgICAgICAgICAgKGl0ZW06IEltYWdlUmVzcG9uc2UpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmV0aXRsZTogaXRlbS5wcmV0aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtLnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VidGl0bGU6IGl0ZW0uc3VidGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWFnZTogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaXRlbSwgZmFsc2UpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlua3M6IFV0aWxzLm1hcEJ1dHRvbnMoaXRlbT8ubGlua3MpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB9KSBhcyBCYWJ5bG9uU2xpZGVyMkNvbEl0ZW1JXG4gICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgbGFiZWxzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnRpdGxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICAgICAgICAgICAgcHJldGl0bGU6XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnByZXRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnByZXRpdGxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIH0gYXMgQmFieWxvblRvcFNsaWRlclYySSlcbiAgICAgICAgICAgIDogdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIG1hcFNsaWRlckNvbGwoXG4gICAgICAgIHByb3BzOiBhbnkgfCB1bmRlZmluZWQsXG4gICAgICAgIGlkZW50aWZpZXI6IHN0cmluZyB8IHVuZGVmaW5lZFxuICAgICk6IEJhYnlsb25Ub3BTbGlkZXJWMkkgfCB1bmRlZmluZWQge1xuICAgICAgICBsZXQgaW1hZ2VzOiAoc3RyaW5nIHwgQmFieWxvbkltYWdlSSlbXSB8IHVuZGVmaW5lZCA9IFtdO1xuICAgICAgICBpZiAocHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzKSB7XG4gICAgICAgICAgICBpbWFnZXMgPSBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXM/Lm1hcCgoaXRlbTogSW1hZ2VSZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGltYWdlUmVzcG9uc2UgPSB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpdGVtLCBmYWxzZSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgaWRlbnRpZmllcjogaWRlbnRpZmllcixcbiAgICAgICAgICAgICAgICAgICAgcHJldGl0bGU6IGl0ZW0/LnByZXRpdGxlLFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogaXRlbT8udGl0bGUsXG4gICAgICAgICAgICAgICAgICAgIHN1YnRpdGxlOiBpdGVtPy5zdWJ0aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGl0ZW0/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgICAgICBzcmM6XG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlb2YgaW1hZ2VSZXNwb25zZSA9PT0gJ29iamVjdCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IGltYWdlUmVzcG9uc2Uuc3JjXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBpbWFnZVJlc3BvbnNlLFxuICAgICAgICAgICAgICAgICAgICBhbHQ6XG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlb2YgaW1hZ2VSZXNwb25zZSA9PT0gJ29iamVjdCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IGltYWdlUmVzcG9uc2UuYWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgIGJ1dHRvbnM6IFV0aWxzLm1hcEJ1dHRvbnMoXG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtPy5idXR0b25zPy5maWx0ZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGJ0bjogYW55KSA9PiBidG4/LmxpbmtWYWx1ZSAhPT0gbnVsbCB8fCB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgbGlua3M6IFV0aWxzLm1hcEJ1dHRvbnMoXG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtPy5saW5rcz8uZmlsdGVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChidG46IGFueSkgPT4gYnRuLmxpbmtWYWx1ZSAhPT0gbnVsbCB8fCB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICB9IGFzIEJhYnlsb25JbWFnZUk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlcykge1xuICAgICAgICAgICAgaW1hZ2VzID0gcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlcz8ubWFwKChpdGVtOiBJbWFnZVJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgaW1hZ2VSZXNwb25zZSA9IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGl0ZW0sIGZhbHNlKTtcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICBpZGVudGlmaWVyOiBpZGVudGlmaWVyLFxuICAgICAgICAgICAgICAgICAgICBwcmV0aXRsZTogaXRlbT8ucHJldGl0bGUsXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtPy50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgc3VidGl0bGU6IGl0ZW0/LnN1YnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogaXRlbT8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgICAgIHNyYzpcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVvZiBpbWFnZVJlc3BvbnNlID09PSAnb2JqZWN0J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gaW1hZ2VSZXNwb25zZS5zcmNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGltYWdlUmVzcG9uc2UsXG4gICAgICAgICAgICAgICAgICAgIGFsdDpcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVvZiBpbWFnZVJlc3BvbnNlID09PSAnb2JqZWN0J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gaW1hZ2VSZXNwb25zZS5hbHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgYnV0dG9uczogVXRpbHMubWFwQnV0dG9ucyhcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0/LmJ1dHRvbnM/LmZpbHRlcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYnRuOiBhbnkpID0+IGJ0bj8ubGlua1ZhbHVlICE9PSBudWxsIHx8IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICBsaW5rczogVXRpbHMubWFwQnV0dG9ucyhcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0/LmJ1dHRvbnM/LmZpbHRlcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYnRuOiBhbnkpID0+IGJ0bj8ubGlua1ZhbHVlICE9PSBudWxsIHx8IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIH0gYXMgQmFieWxvbkltYWdlSTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBwcm9wc1xuICAgICAgICAgICAgPyAoe1xuICAgICAgICAgICAgICAgICAgaW1hZ2VzOiBpbWFnZXMsXG4gICAgICAgICAgICAgICAgICBsYWJlbHM6IHtcbiAgICAgICAgICAgICAgICAgICAgICBwcmV0aXRsZTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8ucHJldGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8ucHJldGl0bGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgICAgICAgICAgICB0aXRsZTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8udGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8udGl0bGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy50aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICB0b3BCRzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LnRvcGJnPy5bMF0sXG4gICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICBib3R0b21CRzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmJvdHRvbWJnPy5bMF0sXG4gICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICB0b3BDb2xvcjogcHJvcHM/LnRleHRzPy50b3BDb2xvcixcbiAgICAgICAgICAgICAgICAgIGJvdHRvbUNvbG9yOiBwcm9wcz8udGV4dHM/LkJvdHRvbUNvbG9yLFxuICAgICAgICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICBpZGVudGlmaWVyOiBpZGVudGlmaWVyLFxuICAgICAgICAgICAgICB9IGFzIEJhYnlsb25Ub3BTbGlkZXJWMkkpXG4gICAgICAgICAgICA6IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBtYXBJdGVtc0dyaWQocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25JdGVtc0dyaWRJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHByb3BzXG4gICAgICAgICAgICA/ICh7XG4gICAgICAgICAgICAgICAgICBpbWFnZXM6IHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8ubWFwKFxuICAgICAgICAgICAgICAgICAgICAgIChpdGVtOiBJbWFnZVJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGltYWdlUmVzcG9uc2UgPSB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJldGl0bGU6IGl0ZW0/LnByZXRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0/LnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VidGl0bGU6IGl0ZW0/LnN1YnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGl0ZW0/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVvZiBpbWFnZVJlc3BvbnNlID09PSAnb2JqZWN0J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IGltYWdlUmVzcG9uc2Uuc3JjXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogaW1hZ2VSZXNwb25zZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsdDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlb2YgaW1hZ2VSZXNwb25zZSA9PT0gJ29iamVjdCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBpbWFnZVJlc3BvbnNlLmFsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvbnM6IFV0aWxzLm1hcEJ1dHRvbnMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbT8uYnV0dG9ucz8uZmlsdGVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYnRuOiBhbnkpID0+IGJ0bj8ubGlua1ZhbHVlICE9PSBudWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtzOiBVdGlscy5tYXBCdXR0b25zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0/LmxpbmtzPy5maWx0ZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChidG46IGFueSkgPT4gYnRuLmxpbmtWYWx1ZSAhPT0gbnVsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0gYXMgQmFieWxvbkltYWdlSTtcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgbGFiZWxzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGUsXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgYnV0dG9uczogVXRpbHMubWFwQnV0dG9ucyhcbiAgICAgICAgICAgICAgICAgICAgICBwcm9wcz8uYnV0dG9ucz8uZmlsdGVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAoYnRuOiBhbnkpID0+IGJ0bj8ubGlua1ZhbHVlICE9PSBudWxsXG4gICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgfSBhcyBCYWJ5bG9uSXRlbXNHcmlkSSlcbiAgICAgICAgICAgIDogdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIG1hcFJvb20ocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25JbmZvMmltZ0kgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHByb3BzPy5idXR0b25zKSxcbiAgICAgICAgICAgIHRleHRzOiB7XG4gICAgICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGUsXG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcm9vbXM6IHByb3BzPy5yb29tcz8ubWFwKFxuICAgICAgICAgICAgICAgIChpdGVtOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnMoaXRlbT8uYnV0dG9ucyksXG4gICAgICAgICAgICAgICAgICAgICAgICBsaW5rczogVXRpbHMubWFwQnV0dG9ucyhpdGVtPy5saW5rcyksXG4gICAgICAgICAgICAgICAgICAgICAgICBpbWFnZXM6IGl0ZW0ubXVsdGltZWRpYVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8uZmlsdGVyKChpbWc6IEltYWdlUmVzcG9uc2UpID0+IGltZy5jb3ZlcilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/Lm1hcChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGltZzogSW1hZ2VSZXNwb25zZSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJldGl0bGU6IGltZy5wcmV0aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaW1nLnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YnRpdGxlOiBpbWcuc3VidGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpbWcpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkgYXMgQmFieWxvbkltYWdlSVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICB0ZXh0czoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IGl0ZW0udGV4dHM/Lm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGl0ZW0udGV4dHM/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZGl0aW9uYWwxOiBpdGVtLnRleHRzPy5hZGRpdGlvbmFsMSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsMjogaXRlbS50ZXh0cz8uYWRkaXRpb25hbDIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbDM6IGl0ZW0udGV4dHM/LmFkZGl0aW9uYWwzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZGl0aW9uYWw0OiBpdGVtLnRleHRzPy5hZGRpdGlvbmFsNCxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBzZXJ2aWNlczogaXRlbT8uc2VydmljZXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/LmZpbHRlcigoaXRlbTogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtPy50eXBlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/LnNwbGl0KCcsJylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5tYXAoKHY6IHN0cmluZykgPT4gdi50cmltKCkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuaW5jbHVkZXMoUm9vbVNlcnZpY2VUeXBlLmNoYXJhY3RlcmlzdGljcylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPy5tYXAoKGl0ZW06IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogaXRlbS5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uOiBgaWNvbi0ke2l0ZW0uY2xhc3N9YCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSksXG4gICAgICAgICAgICAgICAgICAgIH0pIGFzIEJhYnlsb25Sb29tSW5mb0lcbiAgICAgICAgICAgICksXG4gICAgICAgIH0gYXMgQmFieWxvbkluZm8yaW1nSTtcbiAgICB9XG5cbiAgICBtYXBSb29tc0dyaWQocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25Sb29tc0dyaWRJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgbGV0IHJvb21zID0gcHJvcHM/LnJvb21zXG4gICAgICAgICAgICA/Lm1hcChcbiAgICAgICAgICAgICAgICAoaXRlbTogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uczogVXRpbHMubWFwQnV0dG9ucyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtPy5idXR0b25zPy5maWx0ZXIoKGJ0bjogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidG4/LmxpbmtUeXBlPy5pbmNsdWRlcygnaW50ZXJuYWwnKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBvcmRlcjogaXRlbT8ub3JkZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICBsaW5rczogVXRpbHMubWFwQnV0dG9ucyhpdGVtPy5saW5rcyksXG4gICAgICAgICAgICAgICAgICAgICAgICBpbWFnZXM6IGl0ZW0ubXVsdGltZWRpYVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8uZmlsdGVyKChpbWc6IEltYWdlUmVzcG9uc2UpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltZy50YWdzPy5zb21lKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRhZykgPT4gdGFnLm5hbWUgPT09ICdSb29tc0dyaWQnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPy5tYXAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbWc6IEltYWdlUmVzcG9uc2UpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZXRpdGxlOiBpbWcucHJldGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGltZy50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJ0aXRsZTogaW1nLnN1YnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltZy50YWdzPy5zb21lKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRhZykgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWcubmFtZSA9PT0gJ1Jvb21zR3JpZCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBpbWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWc6IGltZy50YWdzPy5maW5kKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodGFnOiBhbnkpID0+IHRhZz8uZmlsdGVyYWJsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk/Lm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSBhcyBCYWJ5bG9uSW1hZ2VJXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8uc2xpY2UoMCwgMSksXG4gICAgICAgICAgICAgICAgICAgICAgICB0ZXh0czoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IGl0ZW0udGV4dHM/Lm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGl0ZW0udGV4dHM/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZGl0aW9uYWwxOiBpdGVtLnRleHRzPy5hZGRpdGlvbmFsMSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsMjogaXRlbS50ZXh0cz8uYWRkaXRpb25hbDIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbDM6IGl0ZW0udGV4dHM/LmFkZGl0aW9uYWwzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZGl0aW9uYWw0OiBpdGVtLnRleHRzPy5hZGRpdGlvbmFsNCxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBzZXJ2aWNlczogaXRlbT8uc2VydmljZXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/LmZpbHRlcigoaXRlbTogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtPy50eXBlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/LnNwbGl0KCcsJylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5tYXAoKHY6IHN0cmluZykgPT4gdi50cmltKCkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuaW5jbHVkZXMoUm9vbVNlcnZpY2VUeXBlLmNoYXJhY3RlcmlzdGljcylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPy5tYXAoKGl0ZW06IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogaXRlbS5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uOiBgaWNvbi0ke2l0ZW0uY2xhc3N9YCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSksXG4gICAgICAgICAgICAgICAgICAgIH0pIGFzIEJhYnlsb25Sb29tSW5mb0lcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zb3J0KChhOiBCYWJ5bG9uUm9vbXNMaXN0SXRlbSwgYjogQmFieWxvblJvb21zTGlzdEl0ZW0pID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gKGEub3JkZXIgPz8gMCkgLSAoYi5vcmRlciA/PyAwKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHByb3BzPy5idXR0b25zKT8uWzBdLFxuICAgICAgICAgICAgbGFiZWxzOiB7XG4gICAgICAgICAgICAgICAgcHJldGl0bGU6XG4gICAgICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnByZXRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnByZXRpdGxlXG4gICAgICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnRpdGxlXG4gICAgICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcm9vbXM6IHByb3BzPy5idXR0b25zID8gcm9vbXMuc2xpY2UoMCwgNSkgOiByb29tcyxcbiAgICAgICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy50YWcsXG4gICAgICAgICAgICB9LFxuICAgICAgICB9IGFzIEJhYnlsb25Sb29tc0dyaWRJO1xuICAgIH1cblxuICAgIG1hcFJvb21zU2xpZGVyKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uUm9vbXNTbGlkZXJJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyhwcm9wcz8uYnV0dG9ucyksXG4gICAgICAgICAgICB0ZXh0czoge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlQ29udGFpbjoge1xuICAgICAgICAgICAgICAgICAgICB0YWc6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICAgICAgY29udGVudDogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHRpdGxlQ29udGFpbjoge1xuICAgICAgICAgICAgICAgICAgICB0YWc6IHByb3BzPy50ZXh0cz8udGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICAgICAgY29udGVudDogcHJvcHM/LnRleHRzPy50aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHByZXRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnByZXRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8ucHJldGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8udGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy50aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbnRhaW4sXG5cbiAgICAgICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy50YWcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcm9vbXM6IHByb3BzPy5yb29tc1xuICAgICAgICAgICAgICAgID8uZmlsdGVyKFxuICAgICAgICAgICAgICAgICAgICAocm9vbTogYW55LCBpbmRleDogbnVtYmVyLCBzZWxmOiBhbnlbXSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZmluZEluZGV4KChyKSA9PiByLmlkID09PSByb29tLmlkKSA9PT0gaW5kZXhcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgPy5tYXAoXG4gICAgICAgICAgICAgICAgICAgIChpdGVtOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvbnM6IFV0aWxzLm1hcEJ1dHRvbnMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0/LmJ1dHRvbnM/LnNsaWNlKCkucmV2ZXJzZSgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5rczogVXRpbHMubWFwQnV0dG9ucyhpdGVtPy5saW5rcyksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2VzOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbT8ubXVsdGltZWRpYT8uZmluZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW1nOiBhbnkpID0+IGltZz8uY292ZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgfHwgaXRlbT8ubXVsdGltZWRpYT8uWzBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHRzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IGl0ZW0udGV4dHM/Lm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBpdGVtLnRleHRzPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbDE6IGl0ZW0udGV4dHM/LmFkZGl0aW9uYWwxLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsMjogaXRlbS50ZXh0cz8uYWRkaXRpb25hbDIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZGl0aW9uYWwzOiBpdGVtLnRleHRzPy5hZGRpdGlvbmFsMyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbDQ6IGl0ZW0udGV4dHM/LmFkZGl0aW9uYWw0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JkZXI6IGl0ZW0/Lm9yZGVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVxdWlwbWVudHM6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0/LnNlcnZpY2VzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/LmZpbHRlcigoc3ZjOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB0eXBlcyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVvZiBzdmMudHlwZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gc3ZjLnR5cGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5zcGxpdCgnLCcpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAubWFwKCh0OiBzdHJpbmcpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdC50cmltKClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogW107XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBoYXNDaGFyYWN0ZXJpc3RpYyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVzLmluY2x1ZGVzKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUm9vbVNlcnZpY2VUeXBlLmNoYXJhY3RlcmlzdGljc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGhhc0NsYXNzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgISFzdmMuY2xhc3MgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ZjLmNsYXNzLnRvU3RyaW5nKCkudHJpbSgpICE9PSAnJztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBoYXNDaGFyYWN0ZXJpc3RpYyAmJiBoYXNDbGFzcztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/Lm1hcCgoc3ZjOiBhbnkpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogc3ZjLm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvbjogYGljb24tJHtzdmMuY2xhc3N9YCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKSA/PyBbXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pIGFzIEJhYnlsb25Sb29tSW5mb0lcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLnNvcnQoKGE6IEJhYnlsb25Sb29tc0xpc3RJdGVtLCBiOiBCYWJ5bG9uUm9vbXNMaXN0SXRlbSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gKGEub3JkZXIgPz8gMCkgLSAoYi5vcmRlciA/PyAwKTtcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgfSBhcyBCYWJ5bG9uUm9vbXNTbGlkZXJJO1xuICAgIH1cblxuICAgIG1hcE9mZmVyU2xpZGVyKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uT2ZmZXJTbGlkZXJJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlLFxuICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICBiYWNrZ3JvdW5kSW1hZ2U6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5iYWNrZ3JvdW5kaW1hZ2VuZXM/LlswXSB8fFxuICAgICAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uYmFja2dyb3VuZGltYWdlPy5bMF0sXG4gICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBvZmZlcnM6IHByb3BzPy5vZmZlcnM/Lm1hcChcbiAgICAgICAgICAgICAgICAoaXRlbTogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgYXBwbGljYXRpb25Gcm9tOiBpdGVtPy5hcHBsaWNhdGlvbkZyb20sXG4gICAgICAgICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvblRvOiBpdGVtPy5hcHBsaWNhdGlvblRvLFxuICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKGl0ZW0/LmJ1dHRvbnMpLFxuICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVuY3k6IGl0ZW0/LmN1cnJlbmN5LFxuICAgICAgICAgICAgICAgICAgICAgICAgZGlzY291bnQ6IGl0ZW0/LmRpc2NvdW50LFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJpY2U6IGl0ZW0/LnByaWNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGlua3M6IFV0aWxzLm1hcEJ1dHRvbnMoaXRlbT8ubGlua3MpLFxuICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2VzOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtPy5tdWx0aW1lZGlhPy5bMF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBpdGVtPy5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGV4dHM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaXRlbS50ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VidGl0bGU6IGl0ZW0udGV4dHM/LnN1YnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBpdGVtLnRleHRzPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsMTogaXRlbS50ZXh0cz8uYWRkaXRpb25hbDEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbDI6IGl0ZW0udGV4dHM/LmFkZGl0aW9uYWwyLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZGl0aW9uYWwzOiBpdGVtLnRleHRzPy5hZGRpdGlvbmFsMyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25kaXRpb25zOiBpdGVtLnRleHRzPy5jb25kaXRpb25zLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogaXRlbS50ZXh0cz8ucmVzZXJ2YXRpb25VcmwsXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGFzIEJhYnlsb25UZXh0SW5mb0ksXG4gICAgICAgICAgICAgICAgICAgICAgICB1cmw6IGl0ZW0/LnVybCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZpc2libGVGcm9tOiBpdGVtPy52aXNpYmxlRnJvbSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZpc2libGVUbzogaXRlbT8udmlzaWJsZVRvLFxuICAgICAgICAgICAgICAgICAgICB9KSBhcyBCYWJ5bG9uT2ZmZXJJXG4gICAgICAgICAgICApLFxuICAgICAgICB9IGFzIEJhYnlsb25PZmZlclNsaWRlckk7XG4gICAgfVxuICAgIC8vLS0tLSBMQVlPVVQgQ09NUE9ORU5UUyBFTkQtLS0tLy9cblxuICAgIG1hcFRoYW5rcyhwcm9wczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvblRoYW5rc0kge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6IHByb3BzLnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBwcm9wcy50ZXh0cz8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICBwcmV0aXRsZTogcHJvcHMudGV4dHM/LnByZXRpdGxlLFxuICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHByb3BzLmJ1dHRvbnMpPy5bMF0sXG4gICAgICAgIH0gYXMgQmFieWxvblRoYW5rc0k7XG4gICAgfVxuXG4gICAgbWFwQ29udGFjdEZvcm0oXG4gICAgICAgIHByb3BzOiBhbnkgfCB1bmRlZmluZWQsXG4gICAgICAgIG5kUHJvcHM6IGFueSB8IHVuZGVmaW5lZCxcbiAgICAgICAgbmRQcm9wc0NvbnN1bHQ6IGFueSB8IHVuZGVmaW5lZFxuICAgICk6IEJhYnlsb25Db250YWN0Rm9ybUkgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcHJldGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8ucHJldGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy5wcmV0aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICB0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy50aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy50aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LmRlc2NyaXB0aW9uID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8uZGVzY3JpcHRpb25cbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LmRlc2NyaXB0aW9uPy5jb250YWluLFxuICAgICAgICAgICAgc3VidGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8uc3VidGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy5zdWJ0aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8uc3VidGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICB0YWdzOiB7XG4gICAgICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBwcm9wcz8udGV4dHM/LmRlc2NyaXB0aW9uPy50YWcsXG4gICAgICAgICAgICAgICAgc3VidGl0bGU6IHByb3BzPy50ZXh0cz8uc3VidGl0bGU/LnRhZyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0ZXh0czogcHJvcHM/LnRleHRzLFxuICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHByb3BzPy5idXR0b25zKT8uWzBdLFxuICAgICAgICAgICAgdGV4dGFyZWE6IHtcbiAgICAgICAgICAgICAgICBpZDogJ21lbnNhamUnLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LmlucHV0TWVzc2FnZSxcbiAgICAgICAgICAgICAgICBuYW1lOiBVdGlscy5ub3JtYWxpemVUZXh0KHByb3BzPy50ZXh0cz8uaW5wdXRNZXNzYWdlKSxcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogcHJvcHM/LnRleHRzPy5pbnB1dE1lc3NhZ2VQbGFjZUhvbGRlcixcbiAgICAgICAgICAgICAgICB2YWx1ZTogJycsXG4gICAgICAgICAgICAgICAgdmFsaWRhdG9yczogW1ZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgICAgICAgICAgIGVycm9yOiBwcm9wcz8udGV4dHM/LmVycm9yUmVxdWlyZWQsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgY29uZGl0aW9uczogcHJvcHM/LnRleHRzPy5jb25kaXRpb25zLFxuICAgICAgICAgICAgY29uZGl0aW9uczI6IHByb3BzPy50ZXh0cz8uY29uZGl0aW9uczIsXG4gICAgICAgICAgICBkcm9wZG93bjoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LmRyb3Bkb3duVGl0bGUsXG4gICAgICAgICAgICAgICAgb3B0aW9uczogbmRQcm9wc0NvbnN1bHQ/Lm1hcChcbiAgICAgICAgICAgICAgICAgICAgKHByb3A6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3VsdFR5cGVJZDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcC5jb25zdWx0X3R5cGVfaWQgPz8gcHJvcC5jb25zdWx0VHlwZUlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGU6IHByb3AuaWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogcHJvcC5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSkgYXMgRHJvcGRvd25PcHRpb25cbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/LmRyb3Bkb3duUGxhY2Vob2xkZXIsXG4gICAgICAgICAgICAgICAgZXJyb3I6IHByb3BzPy50ZXh0cz8uZXJyb3JSZXF1aXJlZCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBob3RlbERyb3A6XG4gICAgICAgICAgICAgICAgcHJvcHM/LmhvdGVscz8ubGVuZ3RoID4gMVxuICAgICAgICAgICAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8uaG90ZWxEcm9wVGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnM6IHByb3BzPy5ob3RlbHM/Lm1hcChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcm9wOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZTogcHJvcC5pZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogcHJvcC5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pIGFzIERyb3Bkb3duT3B0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/LmhvdGVsRHJvcFBsYWNlaG9sZGVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcjogcHJvcHM/LnRleHRzPy5lcnJvclJlcXVpcmVkLFxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBpbWFnZTogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzPy5bMF0sXG4gICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICkgYXMgc3RyaW5nLFxuICAgICAgICAgICAgaW5wdXRzOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogJ25vbWJyZScsXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LmlucHV0TmFtZSxcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogVXRpbHMubm9ybWFsaXplVGV4dChwcm9wcz8udGV4dHM/LmlucHV0TmFtZSksXG4gICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/LmlucHV0TmFtZVBsYWNlSG9sZGVyLFxuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogJycsXG4gICAgICAgICAgICAgICAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgICAgICAgICAgICAgICAgZXJyb3I6IHByb3BzPy50ZXh0cz8uZXJyb3JSZXF1aXJlZCxcbiAgICAgICAgICAgICAgICAgICAgdmFsaWRhdG9yczogW1ZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgICAgICAgICAgICAgICB2YWxpZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6ICdzdXJuYW1lJyxcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/LmlucHV0U3VybmFtZXMgPz9cbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzPy50ZXh0cz8uaW5wdXRsYXN0bmFtZSxcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogVXRpbHMubm9ybWFsaXplVGV4dChcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzPy50ZXh0cz8uaW5wdXRTdXJuYW1lcyA/P1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzPy50ZXh0cz8uaW5wdXRsYXN0bmFtZVxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjpcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzPy50ZXh0cz8uaW5wdXRTdXJuYW1lc1BsYWNlSG9sZGVyID8/XG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/LmlucHV0bGFzdG5hbWVQbGFjZUhvbGRlcixcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxuICAgICAgICAgICAgICAgICAgICB0eXBlOiAndGV4dCcsXG4gICAgICAgICAgICAgICAgICAgIGVycm9yOiBwcm9wcz8udGV4dHM/LmVycm9yUmVxdWlyZWQsXG4gICAgICAgICAgICAgICAgICAgIHZhbGlkYXRvcnM6IFtWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgICAgICAgICAgICAgICAgdmFsaWQ6IHRydWUsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiAnZW1haWwnLFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy5pbnB1dEVtYWlsLFxuICAgICAgICAgICAgICAgICAgICBuYW1lOiBVdGlscy5ub3JtYWxpemVUZXh0KHByb3BzPy50ZXh0cz8uaW5wdXRFbWFpbCksXG4gICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/LmlucHV0RW1haWxQbGFjZUhvbGRlcixcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxuICAgICAgICAgICAgICAgICAgICB0eXBlOiAndGV4dCcsXG4gICAgICAgICAgICAgICAgICAgIGVycm9yOiBwcm9wcz8udGV4dHM/LmVycm9yRW1haWwsXG4gICAgICAgICAgICAgICAgICAgIHZhbGlkYXRvcnM6IFtWYWxpZGF0b3JzLmVtYWlsLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgICAgICAgICAgICAgICAgdmFsaWQ6IHRydWUsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiAncGhvbmUnLFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy5pbnB1dFBob25lLFxuICAgICAgICAgICAgICAgICAgICBuYW1lOiBVdGlscy5ub3JtYWxpemVUZXh0KHByb3BzPy50ZXh0cz8uaW5wdXRQaG9uZSksXG4gICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/LmlucHV0UGhvbmVQbGFjZUhvbGRlcixcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxuICAgICAgICAgICAgICAgICAgICB0eXBlOiAndGVsJyxcbiAgICAgICAgICAgICAgICAgICAgZXJyb3I6IHByb3BzPy50ZXh0cz8uZXJyb3JQaG9uZSxcbiAgICAgICAgICAgICAgICAgICAgdmFsaWRhdG9yczogW1ZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgICAgICAgICAgICAgICB2YWxpZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSBhcyBCYWJ5bG9uSW5wdXRJW10sXG4gICAgICAgICAgICBpbmZvOiB7XG4gICAgICAgICAgICAgICAgYWRkcmVzczoge1xuICAgICAgICAgICAgICAgICAgICBpY29uOiAnaWNvbi0nICsgbmRQcm9wcz8udGV4dHM/LmFkZHJlc3NJY29uLFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogbmRQcm9wcz8udGV4dHM/LmFkZHJlc3NUaXRsZSxcbiAgICAgICAgICAgICAgICAgICAgdGV4dDogbmRQcm9wcz8ubGlua3M/LmFkZHJlc3M/LlswXT8uWzBdPy5sYWJlbCxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGVtYWlsOiB7XG4gICAgICAgICAgICAgICAgICAgIGljb246ICdpY29uLScgKyBuZFByb3BzPy50ZXh0cz8uZW1haWxJY29uLFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogbmRQcm9wcz8udGV4dHM/LmVtYWlsVGl0bGUsXG4gICAgICAgICAgICAgICAgICAgIGxpbmtzOiBVdGlscy5tYXBCdXR0b25zKG5kUHJvcHM/LmxpbmtzPy5lbWFpbD8uWzBdKT8ubWFwKFxuICAgICAgICAgICAgICAgICAgICAgICAgKGJ0bikgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5idG4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogYG1haWx0bzoke2J0bj8udXJsfWxgLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pIGFzIEJhYnlsb25CdXR0b25JXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBwaG9uZToge1xuICAgICAgICAgICAgICAgICAgICBpY29uOiAnaWNvbi0nICsgbmRQcm9wcz8udGV4dHM/LnBob25lSWNvbixcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IG5kUHJvcHM/LnRleHRzPy5waG9uZVRpdGxlLFxuICAgICAgICAgICAgICAgICAgICBsaW5rczogVXRpbHMubWFwQnV0dG9ucyhuZFByb3BzPy5saW5rcz8ucGhvbmU/LlswXSk/Lm1hcChcbiAgICAgICAgICAgICAgICAgICAgICAgIChidG4pID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uYnRuLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6IGBwaG9uZToke2J0bj8udXJsfWxgLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pIGFzIEJhYnlsb25CdXR0b25JXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0gYXMgQmFieWxvbkNvbnRhY3RGb3JtSTtcbiAgICB9XG5cbiAgICBtYXBDb250YWN0QWRkcmVzcyhcbiAgICAgICAgcHJvcHM6IGFueSB8IHVuZGVmaW5lZFxuICAgICk6IEJhYnlsb25Db250YWN0QWRkcmVzc0kgfCB1bmRlZmluZWQge1xuICAgICAgICBjb25zdCBhZGRyZXNzU291cmNlID0gcHJvcHM/LmhvdGVsQWRkcmVzcyA/PyBwcm9wcz8uYWRkcmVzcz8uWzBdO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgaW5mbzoge1xuICAgICAgICAgICAgICAgIGFkZHJlc3M6IHtcbiAgICAgICAgICAgICAgICAgICAgaWNvbjogJ2ljb24tJyArIHByb3BzPy50ZXh0cz8uYWRkcmVzc0ljb24sXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8uYWRkcmVzc1RpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy5hZGRyZXNzVGl0bGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8uYWRkcmVzc1RpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgICAgICAgICB0ZXh0OiBbXG4gICAgICAgICAgICAgICAgICAgICAgICBhZGRyZXNzU291cmNlPy5hZGRyZXNzLFxuICAgICAgICAgICAgICAgICAgICAgICAgW2FkZHJlc3NTb3VyY2U/LmNwLCBhZGRyZXNzU291cmNlPy5jaXR5XVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5maWx0ZXIoQm9vbGVhbilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuam9pbignICcpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYWRkcmVzc1NvdXJjZT8ubG9jYWxpdHksXG4gICAgICAgICAgICAgICAgICAgICAgICBbYWRkcmVzc1NvdXJjZT8ucHJvdmluY2UsIGFkZHJlc3NTb3VyY2U/LmNvdW50cnldXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZpbHRlcihCb29sZWFuKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5qb2luKCcsICcpLFxuICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgICAgICAuZmlsdGVyKEJvb2xlYW4pXG4gICAgICAgICAgICAgICAgICAgICAgICAubWFwKChwYXJ0LCBpZHgsIGFycikgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpZHggPT09IDApIHJldHVybiBwYXJ0ICsgJzxicj4nO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpZHggPT09IDEgJiYgYXJyWzJdKSByZXR1cm4gcGFydCArICcsICc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlkeCA9PT0gMSkgcmV0dXJuIHBhcnQgKyAnPGJyPic7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlkeCA9PT0gMikgcmV0dXJuIHBhcnQgKyAnPGJyPic7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHBhcnQ7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgLmpvaW4oJycpLFxuICAgICAgICAgICAgICAgICAgICBsaW5rczogW1xuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogYWRkcmVzc1NvdXJjZT8ubGluayxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5rVHlwZTogJ2V4dGVybmFsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogYWRkcmVzc1NvdXJjZT8uYWRkcmVzcyxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIF0gYXMgKHsgc21hbGxUZXh0Pzogc3RyaW5nIH0gJiBCYWJ5bG9uQnV0dG9uSSlbXSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGVtYWlsOiB7XG4gICAgICAgICAgICAgICAgICAgIGljb246ICdpY29uLScgKyBwcm9wcz8udGV4dHM/LmVtYWlsSWNvbixcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy5lbWFpbFRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy5lbWFpbFRpdGxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LmVtYWlsVGl0bGU/LmNvbnRhaW4gfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZHJlc3NTb3VyY2U/LmVtYWlsLFxuICAgICAgICAgICAgICAgICAgICBsaW5rczogW1xuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogYG1haWx0bzoke2FkZHJlc3NTb3VyY2U/LmVtYWlsfWAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlua1R5cGU6ICdleHRlcm5hbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGFkZHJlc3NTb3VyY2U/LmVtYWlsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNtYWxsVGV4dDogYWRkcmVzc1NvdXJjZT8uZW1haWwsXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBdIGFzICh7IHNtYWxsVGV4dD86IHN0cmluZyB9ICYgQmFieWxvbkJ1dHRvbkkpW10sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBwaG9uZToge1xuICAgICAgICAgICAgICAgICAgICBpY29uOiAnaWNvbi0nICsgcHJvcHM/LnRleHRzPy5yZXNlcnZhdGlvbnNJY29uLFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTpcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnJlc2VydmF0aW9uc1RpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy5yZXNlcnZhdGlvbnNUaXRsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy5yZXNlcnZhdGlvbnNUaXRsZT8uY29udGFpbiB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkcmVzc1NvdXJjZT8ucGhvbmUsXG4gICAgICAgICAgICAgICAgICAgIGxpbmtzOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBgdGVsOiR7YWRkcmVzc1NvdXJjZT8ucGhvbmV9YCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5rVHlwZTogJ2V4dGVybmFsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogYWRkcmVzc1NvdXJjZT8ucGhvbmUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc21hbGxUZXh0OiBhZGRyZXNzU291cmNlPy5waG9uZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIF0gYXMgKHsgc21hbGxUZXh0Pzogc3RyaW5nIH0gJiBCYWJ5bG9uQnV0dG9uSSlbXSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBtYXBDb250YWN0TWFwKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uQ29udGFjdE1hcGFJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGNvbnRlbnRVcmw6IHByb3BzPy50ZXh0cz8ucGhvbmVJY29uLFxuICAgICAgICAgICAgbWFwSW1hZ2U6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8uWzBdLFxuICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHByb3BzPy5idXR0b25zKT8uWzBdLFxuICAgICAgICAgICAgbWFwSW1hZ2VNb2JpbGU6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lc21vYmlsZT8uWzBdLFxuICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICApLFxuICAgICAgICB9IGFzIEJhYnlsb25Db250YWN0TWFwYUk7XG4gICAgfVxuXG4gICAgbWFwQ29udGFjdEhvdyhwcm9wczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvbkNvbnRhY3RIb3dJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGUsXG4gICAgICAgICAgICBpdGVtczogcHJvcHM/LlZlbnRhamFzPy5tYXAoXG4gICAgICAgICAgICAgICAgKGl0ZW06IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtLnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGl0ZW0udGV4dCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGljb246IGBpY29uLSR7aXRlbS5pY29ufWAsXG4gICAgICAgICAgICAgICAgICAgIH0pIGFzIEJhYnlsb25Db250YWN0TWFwSXRlbVxuICAgICAgICAgICAgKSxcbiAgICAgICAgfSBhcyBCYWJ5bG9uQ29udGFjdEhvd0k7XG4gICAgfVxuXG4gICAgbWFwV2VibWFwKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uV2VibWFwSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBsaW5rczogKFxuICAgICAgICAgICAgICAgIHByb3BzPy5wYWdlcz8ubWFwKFxuICAgICAgICAgICAgICAgICAgICAobGluazogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogbGluay5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogbGluay51cmwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlua1R5cGU6ICdpbnRlcm5hbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSBhcyBCYWJ5bG9uQnV0dG9uSVxuICAgICAgICAgICAgICAgICkgYXMgQmFieWxvbkJ1dHRvbklbXVxuICAgICAgICAgICAgKS5maWx0ZXIoXG4gICAgICAgICAgICAgICAgKGxpbmspID0+XG4gICAgICAgICAgICAgICAgICAgIGxpbmsudXJsPy5zcGxpdCgnLycpWzFdID09PVxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNpdGVTdmMuc2VsZWN0ZWRMYW5ndWFnZUluc3RhbnQ/LmxvY2F0ZVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8udGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgcHJldGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8ucHJldGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy5wcmV0aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICBpbWFnZTogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzPy5bMF0sXG4gICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICkgYXMgc3RyaW5nLFxuICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LnRhZyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgbWFwTGVnYWwocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25MZWdhbEkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcHJldGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8ucHJldGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy5wcmV0aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICB0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy50aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy50aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LmRlc2NyaXB0aW9uID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8uZGVzY3JpcHRpb25cbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LmRlc2NyaXB0aW9uPy5jb250YWluLFxuICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXM/LlswXSxcbiAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IHByb3BzPy50ZXh0cz8uZGVzY3JpcHRpb24/LnRhZyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0ZXh0Q29sb3JzOiB7XG4gICAgICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IHByb3BzPy50ZXh0cz8uZGVzY3JpcHRpb24/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICB9LFxuICAgICAgICB9IGFzIEJhYnlsb25MZWdhbEk7XG4gICAgfVxuXG4gICAgbWFwQnJlYWRjcnVtYnMocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25CcmVhZGNydW1iSSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBsaW5rczogKHByb3BzPy5pdGVtcyBhcyBhbnlbXSlcbiAgICAgICAgICAgICAgICA/LnNvcnQoKGEsIGIpID0+IGEgLSBiKVxuICAgICAgICAgICAgICAgID8ubWFwKFxuICAgICAgICAgICAgICAgICAgICAoaXRlbSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGl0ZW0/LmxhYmVsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtUeXBlOiAnaW50ZXJuYWwnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogaXRlbT8udXJsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gaXRlbT8udXJsPy5jaGFyQXQoaXRlbT8udXJsPy5sZW5ndGggLSAxKSA9PT1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gaXRlbT8udXJsPy5zbGljZSgwLCAtMSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogaXRlbT8udXJsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSkgYXMgQmFieWxvbkJ1dHRvbklcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICB9IGFzIEJhYnlsb25CcmVhZGNydW1iSTtcbiAgICB9XG5cbiAgICBtYXBSb29tc0NvbHMocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25Sb29tc0NvbHNJIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGZpbHRlcnM6IHByb3BzPy5maWx0ZXJzPy5tYXAoKGZpbHRlcjogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBmaWx0ZXIubmFtZSxcbiAgICAgICAgICAgICAgICBvcHRpb25zOiBmaWx0ZXI/LnZhbHVlcz8ubWFwKChvcHRpb246IHN0cmluZykgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgY29kZTogb3B0aW9uLFxuICAgICAgICAgICAgICAgICAgICBuYW1lOiBvcHRpb24sXG4gICAgICAgICAgICAgICAgfSkpLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBmaWx0ZXIubmFtZSxcbiAgICAgICAgICAgICAgICBzbWFsbHRpdGxlOiBmaWx0ZXIuc21hbGx0aXRsZSxcbiAgICAgICAgICAgICAgICBmaWx0ZXJJZDogZmlsdGVyLmZpbHRlcklkLFxuICAgICAgICAgICAgfSkpIGFzIEJhYnlsb25Ecm9wZG93bklbXSxcbiAgICAgICAgICAgIHN0RmlsdGVyczogdW5kZWZpbmVkLFxuICAgICAgICAgICAgbmRGaWx0ZXJzOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBwcmV0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy5wcmV0aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnByZXRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8udGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LnRhZyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBpdGVtczogcHJvcHM/LnJvb21zXG4gICAgICAgICAgICAgICAgPy5tYXAoXG4gICAgICAgICAgICAgICAgICAgIChpdGVtOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlZHJvb21GaWx0ZXJJZDogaXRlbT8udGV4dHM/LmJlZHMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhcmFjdGVyaXN0aWNzRmlsdGVySWQ6IDAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlua3M6IFV0aWxzLm1hcEJ1dHRvbnMoaXRlbS5saW5rcyksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uczogVXRpbHMubWFwQnV0dG9ucyhpdGVtLmJ1dHRvbnMpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtLnRleHRzPy5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZXRpdGxlOiBpdGVtLnRleHRzPy5hZGRpdGlvbmFsMSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmljZTogaXRlbT8ucHJpY2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpY2VUZXh0OiBpdGVtLnRleHRzPy5hZGRpdGlvbmFsMixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmRlcjogaXRlbT8ub3JkZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXF1aXBtZW50OiBpdGVtPy5zZXJ2aWNlc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/LmZpbHRlcigoaXRlbTogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbT8udHlwZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8uc3BsaXQoJywnKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5tYXAoKHY6IHN0cmluZykgPT4gdi50cmltKCkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmluY2x1ZGVzKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSb29tU2VydmljZVR5cGUuY2hhcmFjdGVyaXN0aWNzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8ubWFwKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGl0ZW06IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uOiBgaWNvbi0ke2l0ZW0uY2xhc3N9YCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGl0ZW0ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSBhcyBCYWJ5bG9uUm9vbXNMaXN0RXF1aXBtZW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5tdWx0aW1lZGlhPy5maW5kKChpbWc6IEltYWdlUmVzcG9uc2UpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWcudGFncz8uc29tZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodGFnKSA9PiB0YWcubmFtZSA9PT0gJ1Jvb21zQ29scydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IGltZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgPz8gaXRlbS5tdWx0aW1lZGlhPy5bMF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWFnZXM6IHRoaXMuZ2V0QXJyYXlJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0ubXVsdGltZWRpYSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSkgYXMgQmFieWxvblJvb21zTGlzdEl0ZW1cbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLnNvcnQoKGE6IEJhYnlsb25Sb29tc0xpc3RJdGVtLCBiOiBCYWJ5bG9uUm9vbXNMaXN0SXRlbSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gKGEub3JkZXIgPz8gMCkgLSAoYi5vcmRlciA/PyAwKTtcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgfSBhcyBCYWJ5bG9uUm9vbXNDb2xzSTtcbiAgICB9XG5cbiAgICBtYXBGZWF0dXJlc1NsaWRlcihcbiAgICAgICAgcHJvcHM6IGFueSB8IHVuZGVmaW5lZFxuICAgICk6IEJhYnlsb25GZWF0dXJlc1NsaWRlckkgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8udGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy50aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICBwcmV0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy5wcmV0aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnByZXRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy50YWcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgaXRlbXM6IHByb3BzPy5WZW50YWphcz8ubWFwKFxuICAgICAgICAgICAgICAgIChpdGVtOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaXRlbS50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBpdGVtLnRleHQsXG4gICAgICAgICAgICAgICAgICAgICAgICBpY29uOiBgaWNvbi0ke2l0ZW0uaWNvbn1gLFxuICAgICAgICAgICAgICAgICAgICB9KSBhcyBCYWJ5bG9uRmVhdHVyZXNTbGlkZXJJdGVtXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHByb3BzPy5idXR0b25zKT8uWzBdLFxuICAgICAgICB9IGFzIEJhYnlsb25GZWF0dXJlc1NsaWRlckk7XG4gICAgfVxuXG4gICAgbWFwQmFubmVySW5mbyhwcm9wczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvbkJhbm5lckluZm9JIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXM/LlswXT8udGl0bGUsXG4gICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzPy5bMF0/LnByZXRpdGxlLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8uWzBdPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgIHZpZGVvOiBwcm9wcz8udGV4dHM/LlsnVmlkZW8tbGluayddLFxuICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8uWzBdPy5idXR0b25zKSxcbiAgICAgICAgICAgIGltYWdlOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXM/LlswXSxcbiAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgKSxcbiAgICAgICAgfSBhcyBCYWJ5bG9uQmFubmVySW5mb0k7XG4gICAgfVxuXG4gICAgbWFwUm9vbURldGFpbChwcm9wczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvblJvb21EZXRhaWxJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgaWYgKCFwcm9wcz8ucm9vbSkge1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB7IHRleHRzLCBtdWx0aW1lZGlhLCBidXR0b25zIH0gPSBwcm9wcz8ucm9vbTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOiB0ZXh0cz8ubmFtZSxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAgICAgICAgIHRleHRzPy5hZGRpdGlvbmFsNCAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAgICAgICAgICAgdGV4dHM/LmFkZGl0aW9uYWw0ICE9PSBudWxsICYmXG4gICAgICAgICAgICAgICAgdGV4dHM/LmFkZGl0aW9uYWw0ICE9PSAnJ1xuICAgICAgICAgICAgICAgICAgICA/IHRleHRzPy5hZGRpdGlvbmFsNFxuICAgICAgICAgICAgICAgICAgICA6IHRleHRzPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgIHByZXRpdGxlOiB0ZXh0cz8uYWRkaXRpb25hbDEsXG4gICAgICAgICAgICBlcXVpcG1lbnRUaXRsZTogdGV4dHM/LmFkZGl0aW9uYWwyLFxuICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKGJ1dHRvbnMpPy5bMF0sXG4gICAgICAgICAgICBpdGVtczogcHJvcHMucm9vbT8uc2VydmljZXNcbiAgICAgICAgICAgICAgICA/LmZpbHRlcigoaXRlbTogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICBpdGVtPy50eXBlXG4gICAgICAgICAgICAgICAgICAgICAgICA/LnNwbGl0KCcsJylcbiAgICAgICAgICAgICAgICAgICAgICAgIC5tYXAoKHY6IHN0cmluZykgPT4gdi50cmltKCkpXG4gICAgICAgICAgICAgICAgICAgICAgICAuaW5jbHVkZXMoUm9vbVNlcnZpY2VUeXBlLkVxdWlwbWVudClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLm1hcCgoaXRlbTogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICB0aXRsZTogaXRlbT8ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgaWNvbjogYGljb24tJHtpdGVtPy5jbGFzc31gLFxuICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogaXRlbT8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgfSkpIGFzIEJhYnlsb25FcXVpcG1lbnRJdGVtW10sXG4gICAgICAgICAgICBzaG93TGVzczogcHJvcHM/LnRleHRzPy5zaG93TGVzcyxcbiAgICAgICAgICAgIHNob3dNb3JlOiBwcm9wcz8udGV4dHM/LnNob3dNb3JlLFxuICAgICAgICB9IGFzIEJhYnlsb25Sb29tRGV0YWlsSTtcbiAgICB9XG5cbiAgICBtYXBUb3BTbGlkZXJUaHVtYnMocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25Ub3BTbGlkZXJUaHVtYnNJIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgZnJvbTogcHJvcHM/LnRleHRzPy5mcm9tLFxuICAgICAgICAgICAgcHJpY2U6IHByb3BzPy50ZXh0cz8ucHJpY2UsXG4gICAgICAgICAgICBjdXJyZW5jeTogcHJvcHM/LnRleHRzPy5jdXJyZW5jeSxcbiAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyhwcm9wcy5idXR0b25zKT8uWzBdLFxuICAgICAgICAgICAgaW1hZ2U6IHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW4/Lm1hcCgoaXRlbTogSW1hZ2VSZXNwb25zZSkgPT4gKHtcbiAgICAgICAgICAgICAgICBzcmM6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGl0ZW0pLFxuICAgICAgICAgICAgfSkpLFxuICAgICAgICB9IGFzIEJhYnlsb25Ub3BTbGlkZXJUaHVtYnNJO1xuICAgIH1cblxuICAgIG1hcFJvb21zTGlzdChwcm9wczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvblJvb21zTGlzdEkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgc3RGaWx0ZXJzOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBuZEZpbHRlcnM6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGUsXG4gICAgICAgICAgICBpdGVtczogcHJvcHM/LnJvb21zXG4gICAgICAgICAgICAgICAgPy5tYXAoXG4gICAgICAgICAgICAgICAgICAgIChpdGVtOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlZHJvb21GaWx0ZXJJZDogMCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyYWN0ZXJpc3RpY3NGaWx0ZXJJZDogMCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5rczogVXRpbHMubWFwQnV0dG9ucyhpdGVtPy5saW5rcyksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uczogVXRpbHMubWFwQnV0dG9ucyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbT8uYnV0dG9ucz8uc2xpY2UoKS5yZXZlcnNlKClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtPy50ZXh0cz8ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmV0aXRsZTogaXRlbT8udGV4dHM/LmFkZGl0aW9uYWwxLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBpdGVtPy50ZXh0cz8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpY2U6IGl0ZW0/LnByaWNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaWNlVGV4dDogaXRlbT8udGV4dHM/LmFkZGl0aW9uYWwyLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVxdWlwbWVudDogaXRlbT8uc2VydmljZXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPy5maWx0ZXIoKGl0ZW06IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0/LnR5cGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/LnNwbGl0KCcsJylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAubWFwKCh2OiBzdHJpbmcpID0+IHYudHJpbSgpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5pbmNsdWRlcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUm9vbVNlcnZpY2VUeXBlLmNoYXJhY3RlcmlzdGljc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/Lm1hcChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpdGVtOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvbjogYGljb24tJHtpdGVtLmNsYXNzfWAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBpdGVtLm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkgYXMgQmFieWxvblJvb21zTGlzdEVxdWlwbWVudFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0ubXVsdGltZWRpYT8uZmluZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbWc6IGFueSkgPT4gaW1nPy5jb3ZlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIHx8IGl0ZW0/Lm11bHRpbWVkaWE/LlswXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlczogdGhpcy5nZXRBcnJheUltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5tdWx0aW1lZGlhLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JkZXI6IGl0ZW0/Lm9yZGVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSkgYXMgQmFieWxvblJvb21zTGlzdEl0ZW1cbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLnNvcnQoKGE6IEJhYnlsb25Sb29tc0xpc3RJdGVtLCBiOiBCYWJ5bG9uUm9vbXNMaXN0SXRlbSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gKGEub3JkZXIgPz8gMCkgLSAoYi5vcmRlciA/PyAwKTtcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgfSBhcyBCYWJ5bG9uUm9vbXNDb2xzSTtcbiAgICB9XG5cbiAgICBtYXBDb21pbmdTb29uKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uQ29taW5nU29vbkkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgaW1hZ2VzOiBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXM/Lm1hcChcbiAgICAgICAgICAgICAgICAoaW1nOiBJbWFnZVJlc3BvbnNlKSA9PlxuICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgc3JjOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpbWcpLFxuICAgICAgICAgICAgICAgICAgICB9KSBhcyBCYWJ5bG9uSW1hZ2VJXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgbG9nbzogcHJvcHM/Lm11bHRpbWVkaWE/LmxvZ28/Lm1hcChcbiAgICAgICAgICAgICAgICAoaW1nOiBJbWFnZVJlc3BvbnNlKSA9PlxuICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgc3JjOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpbWcpLFxuICAgICAgICAgICAgICAgICAgICB9KSBhcyBCYWJ5bG9uSW1hZ2VJXG4gICAgICAgICAgICApWzBdLFxuICAgICAgICAgICAgdGV4dHM6IHByb3BzPy50ZXh0cyxcbiAgICAgICAgICAgIHNvY2lhbE1lZGlhOiBwcm9wcz8uc29jaWFsTWVkaWEsXG4gICAgICAgICAgICBsaW5rOiBVdGlscy5tYXBCdXR0b25zKHByb3BzPy5saW5rcyk/LlswXSxcbiAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyhwcm9wcz8uYnV0dG9ucyk/LlswXSxcbiAgICAgICAgfSBhcyBCYWJ5bG9uQ29taW5nU29vbkk7XG4gICAgfVxuXG4gICAgbWFwT2ZmZXJEZXRhaWwocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25PZmZlckRldGFpbEkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy5vZmZlcj8uWzBdPy50ZXh0cz8uc3VidGl0bGUsXG4gICAgICAgICAgICB0aXRsZTogcHJvcHM/Lm9mZmVyPy5bMF0/LnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBwcm9wcz8ub2ZmZXI/LlswXT8udGV4dHM/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgbmRUaXRsZTogcHJvcHM/Lm9mZmVyPy5bMF0/LnRleHRzPy5hZGRpdGlvbmFsMSxcbiAgICAgICAgICAgIGxhYmVsRGlzY291bnQ6IHByb3BzPy5vZmZlcj8uWzBdPy50ZXh0cz8uYWRkaXRpb25hbDIsXG4gICAgICAgICAgICBsYWJlbEZyb206IHByb3BzPy5vZmZlcj8uWzBdPy50ZXh0cz8uYWRkaXRpb25hbDMsXG4gICAgICAgICAgICBjdXJyZW5jeTogcHJvcHM/Lm9mZmVyPy5bMF0/LmN1cnJlbmN5LFxuICAgICAgICAgICAgcHJpY2U6IHByb3BzPy5vZmZlcj8uWzBdPy5wcmljZSxcbiAgICAgICAgICAgIGRpc2NvdW50OiBwcm9wcz8ub2ZmZXI/LlswXT8uZGlzY291bnQsXG4gICAgICAgICAgICBjb25kaXRpb25zOiBwcm9wcz8ub2ZmZXI/LlswXT8udGV4dHM/LmNvbmRpdGlvbnMsXG4gICAgICAgICAgICBpbWFnZTogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgcHJvcHM/Lm9mZmVyPy5bMF0/Lm11bHRpbWVkaWE/LlswXSxcbiAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGxpbms6IFV0aWxzLm1hcEJ1dHRvbnMocHJvcHM/LmxpbmtzKT8uWzBdLFxuICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHByb3BzPy5vZmZlcj8uWzBdPy5idXR0b25zKT8uWzBdLFxuICAgICAgICB9IGFzIEJhYnlsb25PZmZlckRldGFpbEk7XG4gICAgfVxuXG4gICAgbWFwT2ZmZXJzTGlzdChwcm9wczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvbk9mZmVyc0xpc3RJIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8udGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgcHJldGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8ucHJldGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy5wcmV0aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICBpdGVtczogcHJvcHM/Lm9mZmVycz8ubWFwKFxuICAgICAgICAgICAgICAgIChpdGVtOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogaXRlbT8uaWQsXG4gICAgICAgICAgICAgICAgICAgICAgICBwcmV0aXRsZTogaXRlbT8udGV4dHM/LnN1YnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0/LnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHByaWNlOiBpdGVtPy5wcmljZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbmN5OiBpdGVtPy5jdXJyZW5jeSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRpc2NvdW50OiBpdGVtPy5kaXNjb3VudCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGltZzoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaXRlbT8ubXVsdGltZWRpYT8uWzBdKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHQ6IGl0ZW0/Lm11bHRpbWVkaWE/LlswXT8uYWx0LFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc2VydmVCdXR0b246IFV0aWxzLm1hcEJ1dHRvbnMoaXRlbT8uYnV0dG9ucyk/LlswXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlZU9mZmVyQnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKGl0ZW0/LmxpbmtzKT8uWzBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWxGcm9tOiBpdGVtPy50ZXh0cz8uYWRkaXRpb25hbDMsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbERpc2NvdW50OiBpdGVtPy50ZXh0cz8uYWRkaXRpb25hbDIsXG4gICAgICAgICAgICAgICAgICAgICAgICBob21lOiBpdGVtPy5zaXRlcz8uWzBdPy5ob21lLFxuICAgICAgICAgICAgICAgICAgICAgICAgcG9wdXA6IGl0ZW0/LnNpdGVzPy5bMF0/LnBvcHVwLFxuICAgICAgICAgICAgICAgICAgICB9KSBhcyBCYWJ5bG9uT2ZmZXJzTGlzdEl0ZW1cbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBwbGFjZWhvbGRlckltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzPy5bMF0sXG4gICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnMocHJvcHM/LmJ1dHRvbnMpPy5bMF0sXG4gICAgICAgICAgICB0YWdzOiB7XG4gICAgICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8udGFnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRleHRDb2xvcnM6IHtcbiAgICAgICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0gYXMgQmFieWxvbk9mZmVyc0xpc3RJO1xuICAgIH1cblxuICAgIG1hcEZhcShwcm9wczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvbkZhcUkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcHJldGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8ucHJldGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy5wcmV0aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICB0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy50aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy50aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy50YWcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgaXRlbXM6IHByb3BzPy5sb2NhdGlvbkhvd1xuICAgICAgICAgICAgICAgID8gcHJvcHM/LmxvY2F0aW9uSG93Py5pdGVtcz8ubWFwKFxuICAgICAgICAgICAgICAgICAgICAgIChmYXE6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBmYXEudGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogZmFxLmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB9KSBhcyBCYWJ5bG9uSXRlbUlcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICA6IHByb3BzPy5pdGVtcz8ubWFwKFxuICAgICAgICAgICAgICAgICAgICAgIChmYXE6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBmYXEudGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogZmFxLnRleHQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0pIGFzIEJhYnlsb25JdGVtSVxuICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGltZzogcHJvcHM/LmxvY2F0aW9uTWFwXG4gICAgICAgICAgICAgICAgPyB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICAgICAgICBwcm9wcz8ubG9jYXRpb25NYXA/Lm11bHRpbWVkaWE/LmltYWdlbmVzPy5bMF0sXG4gICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICA6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8uWzBdLFxuICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICApLFxuICAgICAgICB9IGFzIEJhYnlsb25GYXFJO1xuICAgIH1cblxuICAgIG1hcFN0YXRpY0Zvb3Rlcihwcm9wczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvblN0YXRpY0Zvb3Rlckkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8udGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy50aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICBuZFRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LmFkZHJlc3NUaXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LmFkZHJlc3NUaXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8uYWRkcmVzc1RpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgcmRUaXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy5saW5rc1RpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8ubGlua3NUaXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8ubGlua3NUaXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIHRoVGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8ubG9jYXRpb25UaXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LmxvY2F0aW9uVGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiAocHJvcHM/LnRleHRzPy5sb2NhdGlvblRpdGxlPy5jb250YWluID8/XG4gICAgICAgICAgICAgICAgICAgICAgKHR5cGVvZiBwcm9wcz8udGV4dHM/Lm5ld3NsZXR0ZXJUaXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/Lm5ld3NsZXR0ZXJUaXRsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8ubmV3c2xldHRlclRpdGxlPy5jb250YWluKSksXG5cbiAgICAgICAgICAgIGZpZnRoVGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8uYWRkaXRpb25hbEZvb3RlclRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8uYWRkaXRpb25hbEZvb3RlclRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy5hZGRpdGlvbmFsRm9vdGVyVGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICB0YWdzOiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICBuZHRpdGxlOiBwcm9wcz8udGV4dHM/LmFkZHJlc3NUaXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIHJkdGl0bGU6IHByb3BzPy50ZXh0cz8ubGlua3NUaXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIHRodGl0bGU6XG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy50ZXh0cz8ubG9jYXRpb25UaXRsZT8udGFnID8/XG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy50ZXh0cz8ubmV3c2xldHRlclRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgZmlmdGh0aXRsZTogcHJvcHM/LnRleHRzPy5hZGRpdGlvbmFsRm9vdGVyVGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICBjb3B5cmlnaHQ6IHByb3BzPy50ZXh0cz8uY29weXJpZ2h0Py50YWcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZnJhbWVVcmw6ICEhcHJvcHM/LnRleHRzPy5mcmFtZVVybFxuICAgICAgICAgICAgICAgID8gcHJvcHMudGV4dHMuZnJhbWVVcmxcbiAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIGNvbnRhY3RJbmZvOiBVdGlscy5tYXBCdXR0b25zKHByb3BzPy5saW5rcz8uY29udGFjdD8uWzBdKSxcbiAgICAgICAgICAgIGNvbnRhY3RMaW5rczogVXRpbHMubWFwQnV0dG9ucyhwcm9wcz8ubGlua3M/LmNvbnRhY3RMaW5rcz8uWzBdKSxcbiAgICAgICAgICAgIGZvb3RlckxpbmtzOiBVdGlscy5tYXBCdXR0b25zKHByb3BzPy5saW5rcz8uZm9vdGVyTGlua3M/LlswXSksXG4gICAgICAgICAgICBhZGRyZXNzOiBBcnJheS5pc0FycmF5KHByb3BzPy5hZGRyZXNzKVxuICAgICAgICAgICAgICAgID8gcHJvcHMuYWRkcmVzcy5tYXAoXG4gICAgICAgICAgICAgICAgICAgICAgKGFkZHJlc3M6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBhZGRyZXNzLmlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogYWRkcmVzcy5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkcmVzczogYWRkcmVzcy5hZGRyZXNzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2l0eTogYWRkcmVzcy5jaXR5LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvdmluY2U6IGFkZHJlc3MucHJvdmluY2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3VudHJ5OiBhZGRyZXNzLmNvdW50cnksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcDogYWRkcmVzcy5jcCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogYWRkcmVzcy5saW5rLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVsbF9hZGRyZXNzOiBhZGRyZXNzLmZ1bGxBZGRyZXNzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB9KSBhcyBCYWJ5bG9uQWRkcmVzc0l0ZW1cbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICA6IFtdLFxuICAgICAgICAgICAgYWRkcmVzc0hvdGVsczogQXJyYXkuaXNBcnJheShwcm9wcz8uYWRkcmVzc0hvdGVscylcbiAgICAgICAgICAgICAgICA/IHByb3BzLmFkZHJlc3NIb3RlbHMubWFwKFxuICAgICAgICAgICAgICAgICAgICAgIChhZGRyZXNzOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZDogYWRkcmVzcy5pZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IGFkZHJlc3MubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZHJlc3M6IGFkZHJlc3MuYWRkcmVzcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNpdHk6IGFkZHJlc3MuY2l0eSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3ZpbmNlOiBhZGRyZXNzLnByb3ZpbmNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY291bnRyeTogYWRkcmVzcy5jb3VudHJ5LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3A6IGFkZHJlc3MuY3AsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6IGFkZHJlc3MubGluayxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBob25lOiBhZGRyZXNzLnBob25lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW1haWw6IGFkZHJlc3MuZW1haWwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdWxsX2FkZHJlc3M6IGFkZHJlc3MuZnVsbEFkZHJlc3MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0pIGFzIEJhYnlsb25BZGRyZXNzSXRlbVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgc29jaWFsTWVkaWE6IHByb3BzPy5zb2NpYWxNZWRpYT8ubWFwKFxuICAgICAgICAgICAgICAgIChsaW5rOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICBpY29uOiBgYmFieWxvbi0ke2xpbmsubmFtZT8udG9Mb3dlckNhc2UoKX1gLFxuICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBsaW5rLnVybCxcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgQmFieWxvbkJ1dHRvbklcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjb3B5cmlnaHQ6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8uY29weXJpZ2h0ID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8uY29weXJpZ2h0XG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy5jb3B5cmlnaHQ/LmNvbnRhaW4sXG4gICAgICAgICAgICBuYXY6IHByb3BzPy5uYXY/Lm1hcChcbiAgICAgICAgICAgICAgICAobmF2OiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogbmF2Lm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICB1cmw6IG5hdi51cmwsXG4gICAgICAgICAgICAgICAgICAgIH0pIGFzIEJhYnlsb25CdXR0b25JXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgaW1nOiB7XG4gICAgICAgICAgICAgICAgc3JjOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmJhY2tncm91bmQ/LlswXVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgYWx0OiBwcm9wcz8ubXVsdGltZWRpYT8uYmFja2dyb3VuZD8udGl0bGUsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbG9nbzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUocHJvcHM/Lm11bHRpbWVkaWE/LmxvZ28/LlswXSwgZmFsc2UpLFxuICAgICAgICAgICAgLy8gaW5wdXQ6IHByb3BzPy50ZXh0cz8ubmV3c2xldHRlckRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgaW5wdXQ6IHtcbiAgICAgICAgICAgICAgICBuYW1lOiAnbmV3c2xldHRlcicsXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8uaW5wdXRIb2xkZXIsXG4gICAgICAgICAgICAgICAgdmFsaWQ6IHRydWUsXG4gICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxuICAgICAgICAgICAgICAgIGVycm9yOiBwcm9wcz8udGV4dHM/Lm5ld3NFcnJvckVtYWlsLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGxlZ2FsQWR2aXNlOiBwcm9wcz8udGV4dHM/LnN1YnNjcmliZXIsXG4gICAgICAgICAgICBhZGRpdGlvbmFsTGlua3M6IFV0aWxzLm1hcEJ1dHRvbnMoXG4gICAgICAgICAgICAgICAgcHJvcHM/LmxpbmtzPy5hZGRpdGlvbmFsRm9vdGVyTGlua3NbMF0/LmZpbHRlcihcbiAgICAgICAgICAgICAgICAgICAgKGJ0bjogYW55KSA9PiAhIWJ0bj8ubGFiZWxcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApLFxuICAgICAgICB9IGFzIEJhYnlsb25TdGF0aWNGb290ZXJJO1xuICAgIH1cblxuICAgIG1hcEdhbGxlcnkocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25HYWxsZXJ5SSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBwcmV0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy5wcmV0aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnByZXRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8udGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LnRhZyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICByb29tc0J0bjoge1xuICAgICAgICAgICAgICAgIGxhYmVsOiBwcm9wcz8udGV4dHM/LmZpbHRlclJvb21zLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGZpbHRlcnNCdG46IHtcbiAgICAgICAgICAgICAgICBsYWJlbDogcHJvcHM/LnRleHRzPy5maWx0ZXJDYXRlZ29yaWVzLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGZpbHRlcnM6IHByb3BzLmZpbHRlcnM/Lm1hcChcbiAgICAgICAgICAgICAgICAoaXRlbTogYW55LCBpbmRleDogbnVtYmVyKSA9PlxuICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IGluZGV4LFxuICAgICAgICAgICAgICAgICAgICAgICAgYWxsOiBpdGVtLmFsbCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJvb206IGl0ZW0ucm9vbSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJvb21zOiBpdGVtLnJvb21zLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGV4dDogaXRlbS5uYW1lLFxuICAgICAgICAgICAgICAgICAgICB9KSBhcyBCYWJ5bG9uR2FsbGVyeUZpbHRlclxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGltYWdlczogcHJvcHM/LmZpbHRlcnNcbiAgICAgICAgICAgICAgICA/LnJlZHVjZShcbiAgICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgICAgYWNjOiB7IG11bHRpbWVkaWE6IGFueVtdOyBmaWx0ZXJJbmRleDogbnVtYmVyIH1bXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlcjogYW55LFxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVySW5kZXg6IG51bWJlclxuICAgICAgICAgICAgICAgICAgICApID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmaWx0ZXIubXVsdGltZWRpYSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG11bHRpbWVkaWFXaXRoRmlsdGVyID0gZmlsdGVyLm11bHRpbWVkaWEubWFwKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaXRlbTogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uaXRlbSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlcjogZmlsdGVySW5kZXgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5hY2MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11bHRpbWVkaWE6IG11bHRpbWVkaWFXaXRoRmlsdGVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVySW5kZXgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBhY2M7XG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIFtdXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5mbGF0TWFwKCh7IG11bHRpbWVkaWEgfTogYW55KSA9PiBtdWx0aW1lZGlhKVxuICAgICAgICAgICAgICAgIC5tYXAoXG4gICAgICAgICAgICAgICAgICAgIChpbWc6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGltZy50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGltZywgZmFsc2UpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlcjogaW1nPy5maWx0ZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSBhcyBCYWJ5bG9uR2FsbGVyeUl0ZW1cbiAgICAgICAgICAgICAgICApLFxuICAgICAgICB9IGFzIEJhYnlsb25HYWxsZXJ5STtcbiAgICB9XG5cbiAgICBtYXBMYW5ndWFnZU1vZGFsKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uTGFuZ3VhZ2VNb2RhbEkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICBzdWJ0aXRsZTogcHJvcHM/LnRleHRzPy5zdWJ0aXRsZSxcbiAgICAgICAgICAgIGl0ZW1zOiBwcm9wcz8ubGFuZ3VhZ2VzLFxuICAgICAgICAgICAgc2VsZWN0ZWQ6IHByb3BzLmxhbmd1YWdlcy5maW5kKFxuICAgICAgICAgICAgICAgIChsbmc6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgbG5nLmlkID09PSB0aGlzLnNpdGVTdmMuc2VsZWN0ZWRMYW5ndWFnZUluc3RhbnQ/LmlkXG4gICAgICAgICAgICApLFxuICAgICAgICB9IGFzIEJhYnlsb25MYW5ndWFnZU1vZGFsSTtcbiAgICB9XG5cbiAgICBtYXBFbmdpbmUocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25FbmdpbmVJIHwgQmFieWxvbkVuZ2luZU1vZGFsSSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBvbmx5QWR1bHRzOiBwcm9wcz8ub25seUFkdWx0cyxcbiAgICAgICAgICAgIGRlZmF1bHRCdXR0b246IHByb3BzPy5kZWZhdWx0SW50ZXJuYWxCdXR0b24sXG4gICAgICAgICAgICBidXR0b246IHsgbGFiZWw6IHByb3BzPy50ZXh0cz8ubW90b3JTdWJtaXQsIHVybDogcHJvcHM/LnVybCB9LFxuICAgICAgICAgICAgZGF0ZXBpY2tlckRhdGE6IHtcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogcHJvcHM/LnRleHRzPy5tb3RvckRhdGVUaXRsZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBndWVzdHNJbnB1dDoge1xuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/Lm1vdG9yR3Vlc3RzSW5wdXRIb2xkZXIsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcHJvbW9JbnB1dDoge1xuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/Lm1vdG9yUHJvbW9Ib2xkZXIsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZ3Vlc3RzOiB7XG4gICAgICAgICAgICAgICAgYnRuOiB7IGxhYmVsOiBwcm9wcz8udGV4dHM/Lm1vdG9yQXBwbHkgfSxcbiAgICAgICAgICAgICAgICBhZHVsdHNEcm9wZG93bjoge1xuICAgICAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy5tb3RvckFkdWx0c1RpdGxlLFxuICAgICAgICAgICAgICAgICAgICBvcHRpb25zOiB0aGlzLmdlbmVyYXRlQWdlc09wdGlvbnMocHJvcHM/Lm1heEFkdWx0cywgMSksXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBraWRzRHJvcGRvd246IHtcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8ubW90b3JLaWRzVGl0bGUsXG4gICAgICAgICAgICAgICAgICAgIHNtYWxsVGl0bGU6IHByb3BzPy50ZXh0cz8ubW90b3JLaWRzU21hbGxMYWJlbCxcbiAgICAgICAgICAgICAgICAgICAgb3B0aW9uczogdGhpcy5nZW5lcmF0ZUFnZXNPcHRpb25zKHByb3BzPy5tYXhDaGlsZHJlbiksXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBiYWJpZXNEcm9wZG93bjpcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/Lm1heEJhYmllcyA+IDBcbiAgICAgICAgICAgICAgICAgICAgICAgID8ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8ubW90b3JCYWJpZXNUaXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNtYWxsVGl0bGU6IHByb3BzPy50ZXh0cz8ubW90b3JCYWJpZXNTbWFsbFRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uczogdGhpcy5nZW5lcmF0ZUFnZXNPcHRpb25zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzPy5tYXhCYWJpZXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgIGFnZXNEcm9wZG93bjoge1xuICAgICAgICAgICAgICAgICAgICBvcHRpb25zOiB0aGlzLmdlbmVyYXRlQWdlc09wdGlvbnMoXG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wcz8ubWF4QWdlQ2hpbGRyZW4sXG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wcz8ubWF4QWdlQmFiaWVzICsgMVxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgYWdlc0xhYmVsOiBwcm9wcz8udGV4dHM/Lm1vdG9yQWdlc1RpdGxlLFxuICAgICAgICAgICAgICAgIGtpZHNMYWJlbDogcHJvcHM/LnRleHRzPy5tb3RvcktpZExhYmVsLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/Lm1vdG9yVGl0bGUsXG4gICAgICAgICAgICBzdWJ0aXRsZTogcHJvcHM/LnRleHRzPy5tb3RvclN1YnRpdGxlLFxuICAgICAgICAgICAgdXJsOiBwcm9wcz8udXJsLFxuICAgICAgICAgICAgaG90ZWw6IHByb3BzPy5ob3RlbHM/LlswXSxcbiAgICAgICAgICAgIGNvZGlnbzogcHJvcHM/LmNvZGlnbyA/IHByb3BzPy5jb2RpZ28gOiAnZGVtb19jMnRfY2xpZW50ZXMnLCAvL3RvIGNoYW5nZSwgZG9udCBjb21lIGZyb20gYmFja1xuICAgICAgICAgICAgZ2xWYWx1ZTogcHJvcHM/LmdsVmFsdWUsXG4gICAgICAgICAgICBob3RlbHNJbnB1dDogcHJvcHM/LnRleHRzPy5tb3RvckRyb3BEb3duTmFtZSxcbiAgICAgICAgICAgIGhvdGVsc1BsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/Lm1vdG9yRHJvcERvd25Ib2xkZXIsXG4gICAgICAgICAgICBob3RlbHM6IHtcbiAgICAgICAgICAgICAgICBvcHRpb25zOiBwcm9wcz8uaG90ZWxzPy5tYXAoKGhvdGVsOiBhbnkpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IGhvdGVsPy5uYW1lLFxuICAgICAgICAgICAgICAgICAgICB0aWNrZXI6IGhvdGVsPy50aWNrZXIsXG4gICAgICAgICAgICAgICAgICAgIHVybDogaG90ZWw/LnVybCxcbiAgICAgICAgICAgICAgICAgICAgaWQ6IGhvdGVsPy5pZCxcbiAgICAgICAgICAgICAgICB9KSksXG4gICAgICAgICAgICB9LFxuICAgICAgICB9IGFzIEJhYnlsb25FbmdpbmVNb2RhbEkgfCBCYWJ5bG9uRW5naW5lSTtcbiAgICB9XG4gICAgbWFwU2xpZGVyM0l0ZW1zKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uU2xpZGVyM0l0ZW1zSSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlLFxuICAgICAgICAgICAgaXRlbXM6IHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8ubWFwKFxuICAgICAgICAgICAgICAgIChpdGVtOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICBwcmV0aXRsZTogaXRlbS5wcmV0aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtLnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpdGVtLCBmYWxzZSksXG4gICAgICAgICAgICAgICAgICAgICAgICBsaW5rOiBVdGlscy5tYXBCdXR0b25zKGl0ZW0/LmxpbmtzKT8uWzBdLFxuICAgICAgICAgICAgICAgICAgICB9KSBhcyBCYWJ5bG9uU2xpZGVySXRlbVxuICAgICAgICAgICAgKSxcbiAgICAgICAgfSBhcyBCYWJ5bG9uU2xpZGVyM0l0ZW1zSTtcbiAgICB9XG5cbiAgICBtYXBIb3RlbHNTbGlkZXIocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25Ib3RlbHNTbGlkZXJJIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgc3VidGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGUsXG4gICAgICAgICAgICBob3RlbHM6IHByb3BzPy5ob3RlbHM/Lm1hcChcbiAgICAgICAgICAgICAgICAoaXRlbTogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgcHJldGl0bGU6IGl0ZW0udGV4dHMuYWRkaXRpb25hbDEsXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaXRlbS50ZXh0cy5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgaW1nOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpdGVtLm11bHRpbWVkaWE/LlswXSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0OiBpdGVtLm11bHRpbWVkaWE/LlswXT8uYWx0LFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxpbms6IFV0aWxzLm1hcEJ1dHRvbnMoaXRlbS5saW5rcyksXG4gICAgICAgICAgICAgICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnMoaXRlbS5idXR0b25zKSxcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgQmFieWxvblNsaWRlckl0ZW1cbiAgICAgICAgICAgICksXG4gICAgICAgIH0gYXMgQmFieWxvbkhvdGVsc1NsaWRlckk7XG4gICAgfVxuXG4gICAgbWFwSG90ZWxzTGlzdChwcm9wczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvbkhvdGVsc0xpc3RJIHtcbiAgICAgICAgLy8gVE9ETzogUmV2aXNhciBtYXBwZW8gZGUgaW3DoWdlbmVzXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlLFxuICAgICAgICAgICAgaG90ZWxzOiBwcm9wcz8uaG90ZWxzPy5tYXAoXG4gICAgICAgICAgICAgICAgKGl0ZW06IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZXRpdGxlOiBpdGVtPy50ZXh0cz8uYWRkaXRpb25hbDEsXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaXRlbT8udGV4dHM/Lm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICB0ZXh0OiBpdGVtPy50ZXh0cz8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICB0ZXh0TW9yZTogaXRlbT8udGV4dHM/LmFkZGl0aW9uYWwyLFxuICAgICAgICAgICAgICAgICAgICAgICAgaW1nOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpdGVtPy5tdWx0aW1lZGlhPy5bMF0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsdDogaXRlbT8ubXVsdGltZWRpYT8uWzBdPy5hbHQsXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgbGluazogVXRpbHMubWFwQnV0dG9ucyhpdGVtPy5saW5rcyksXG4gICAgICAgICAgICAgICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnMoaXRlbT8uYnV0dG9ucyksXG4gICAgICAgICAgICAgICAgICAgICAgICBwcmljZTogaXRlbT8ucHJpY2UsXG4gICAgICAgICAgICAgICAgICAgICAgICBmVGl0bGU6IHByb3BzPy50ZXh0cz8uZm9vdGVyVGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBmU3VidGl0bGU6IHByb3BzPy50ZXh0cz8uZm9vdGVyUHJldGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBzZXJ2aWNlczogaXRlbT8uc2VydmljZXNMaXN0Py5tYXAoKGl0ZW06IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBpdGVtPy5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb246IGBpY29uLSR7aXRlbT8uY2xhc3N9YCxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ0bkxlc3M6IGl0ZW0/LnRleHRzPy5hZGRpdGlvbmFsMyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ0bk1vcmU6IGl0ZW0/LnRleHRzPy5hZGRpdGlvbmFsNCxcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgQmFieWxvblNsaWRlckl0ZW1cbiAgICAgICAgICAgICksXG4gICAgICAgIH0gYXMgQmFieWxvbkhvdGVsc0xpc3RJO1xuICAgIH1cblxuICAgIG1hcEluZm80SW1nKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uSW5mbzRpbWdJIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlLFxuICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICB0ZXh0OiBwcm9wcz8udGV4dHM/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHByb3BzPy5idXR0b25zKT8uWzBdLFxuICAgICAgICAgICAgaW1hZ2UxOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXNbMF0sXG4gICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBpbWFnZTI6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lc1sxXSxcbiAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGltYWdlMzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzWzJdLFxuICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgaW1hZ2U0OiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXNbM10sXG4gICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICksXG4gICAgICAgIH0gYXMgQmFieWxvbkluZm80aW1nSTtcbiAgICB9XG5cbiAgICBtYXBTZXJ2aWNlc1NsaWRlcihwcm9wczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvblNlcnZpY2VzU2xpZGVySSB7XG4gICAgICAgIGNvbnN0IGFkdmVudCA9IHByb3BzPy5zZXJ2aWNlc1NlcnZpY2UgPz8gcHJvcHM/LlZlbnRhamFzO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcHJldGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8ucHJldGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy5wcmV0aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICB0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy50aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy50aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy50YWcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgYWR2YW50YWdlczogYWR2ZW50Py5tYXAoKGl0ZW06IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICB0aXRsZTogaXRlbS5uYW1lID8/IGl0ZW0udGl0bGUsXG4gICAgICAgICAgICAgICAgdGV4dDogaXRlbS50ZXh0LFxuICAgICAgICAgICAgICAgIGljb246IGBpY29uLSR7aXRlbS5jbGFzcyA/PyBpdGVtLmljb259YCxcbiAgICAgICAgICAgIH0pKSxcbiAgICAgICAgfSBhcyBCYWJ5bG9uU2VydmljZXNTbGlkZXJJO1xuICAgIH1cblxuICAgIG1hcEFkdmFudGFnZXMocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25BZHZhbnRhZ2VzSSB7XG4gICAgICAgIGNvbnN0IHZlbnRhamFzID0gcHJvcHM/LlZlbnRhamFzID8/IHByb3BzPy5saXN0cyA/PyBwcm9wcz8uTGlzdHM7XG4gICAgICAgIGNvbnN0IGFkdiA9IHZlbnRhamFzPy5tYXAoKGl0ZW06IGFueSkgPT4gKHtcbiAgICAgICAgICAgIHRpdGxlOiBpdGVtLnRpdGxlLFxuICAgICAgICAgICAgaWNvbjogYGljb24tJHtpdGVtLmljb259YCxcbiAgICAgICAgICAgIHRleHQ6IGl0ZW0udGV4dCxcbiAgICAgICAgfSkpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8udGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy50aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICBhZHZhbnRhZ2VzOiBhZHYsXG4gICAgICAgICAgICB0YWdzOiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LnRhZyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0ZXh0Q29sb3JzOiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2VlTW9yZTogcHJvcHM/LnRleHRzPy5hZHZhbnRhZ2Vzc2VlbW9yZSxcbiAgICAgICAgICAgIHNlZUxlc3M6IHByb3BzPy50ZXh0cz8uYWR2YW50YWdlc3NlZWxlc3MsXG4gICAgICAgICAgICBpbWFnZTogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmFkdmFudGFnZXNpbWFnZT8uWzBdLFxuICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICApLFxuICAgICAgICB9IGFzIEJhYnlsb25BZHZhbnRhZ2VzSTtcbiAgICB9XG5cbiAgICBtYXBJbmZvQmlnKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uSW5mb0JpZ0kge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8uWzBdPy5wcmV0aXRsZSxcbiAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXM/LlswXT8udGl0bGUsXG4gICAgICAgICAgICB0ZXh0OiBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXM/LlswXT8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnMoXG4gICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzPy5bMF0/LmJ1dHRvbnNcbiAgICAgICAgICAgICk/LlswXSxcbiAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzPy5bMF0sXG4gICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBpbWdTbWFsbDogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzPy5bMV0gPz9cbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/Lm5kaW1hZ2U/LlswXSxcbiAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgKSxcbiAgICAgICAgfSBhcyBCYWJ5bG9uSW5mb0JpZ0k7XG4gICAgfVxuXG4gICAgbWFwSW5mb1ppZ1phZ1YyKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uSW5mb1ppZ3phZ1YySSB7XG4gICAgICAgIGNvbnN0IFtpbWFnZV0gPVxuICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlIHx8IHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcyB8fCBbXTtcbiAgICAgICAgY29uc3QgW2ltYWdlMl0gPVxuICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlMiB8fCBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2Vzc21hbGwgfHwgW107XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBpdGVtczogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgYnV0dG9uczogVXRpbHMubWFwQnV0dG9ucyhpbWFnZT8uYnV0dG9ucyksXG4gICAgICAgICAgICAgICAgICAgIGZlYXR1cmVzOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgIGltYWdlOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpbWFnZSwgZmFsc2UpLFxuICAgICAgICAgICAgICAgICAgICBwcmV0aXRsZTogaW1hZ2U/LnByZXRpdGxlLFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogaW1hZ2U/LnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICB0ZXh0OiBpbWFnZT8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGJ1dHRvbnM6IFV0aWxzLm1hcEJ1dHRvbnMoaW1hZ2UyPy5idXR0b25zKSxcbiAgICAgICAgICAgICAgICAgICAgaW1hZ2U6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGltYWdlMiwgZmFsc2UpLFxuICAgICAgICAgICAgICAgICAgICBwcmV0aXRsZTogaW1hZ2UyPy5wcmV0aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGltYWdlMj8udGl0bGUsXG4gICAgICAgICAgICAgICAgICAgIHRleHQ6IGltYWdlMj8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgICAgIGZlYXR1cmVzOiBwcm9wcz8uVmVudGFqYXM/Lm1hcCgoaXRlbTogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0udGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICB0ZXh0OiBpdGVtLnRleHQsXG4gICAgICAgICAgICAgICAgICAgICAgICBpY29uOiBgaWNvbi0ke2l0ZW0uaWNvbn1gLFxuICAgICAgICAgICAgICAgICAgICB9KSksXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0gYXMgQmFieWxvbkluZm9aaWd6YWdWMkl0ZW1bXSxcbiAgICAgICAgfSBhcyBCYWJ5bG9uSW5mb1ppZ3phZ1YySTtcbiAgICB9XG5cbiAgICBtYXBGb290ZXJDb250YWN0KHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uRm9vdGVyQ29udGFjdEkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICB0ZXh0OiBwcm9wcz8udGV4dHM/LnRleHQsXG4gICAgICAgICAgICBleHRyYVR4dDogcHJvcHM/LnRleHRzPy5hZGRpdGlvbmFsVGV4dDEsXG4gICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnMocHJvcHM/LmJ1dHRvbnMpPy5bMF0sXG4gICAgICAgICAgICBpbWc6IHtcbiAgICAgICAgICAgICAgICBzcmM6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8uWzBdKSxcbiAgICAgICAgICAgICAgICBhbHQ6IHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8uWzBdPy5hbHQsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgYWR2YW50YWdlczogcHJvcHM/LlZlbnRhamFzPy5tYXAoKGl0ZW06IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICB0aXRsZTogaXRlbS50aXRsZSxcbiAgICAgICAgICAgICAgICB0ZXh0OiBpdGVtLnRleHQsXG4gICAgICAgICAgICAgICAgaWNvbjogYGljb24tJHtpdGVtLmljb259YCxcbiAgICAgICAgICAgIH0pKSxcbiAgICAgICAgICAgIGxpbmtzOiBVdGlscy5tYXBCdXR0b25zKHByb3BzPy5saW5rcz8uY29udGFjdExpbmtzPy5bMF0pLFxuICAgICAgICAgICAgYWRkcmVzczoge1xuICAgICAgICAgICAgICAgIGxvY2FsaXR5OiBwcm9wcz8uaG90ZWxBZGRyZXNzPy5sb2NhbGl0eSxcbiAgICAgICAgICAgICAgICBjaXR5OiBwcm9wcz8uaG90ZWxBZGRyZXNzPy5jaXR5LFxuICAgICAgICAgICAgICAgIHByb3ZpbmNlOiBwcm9wcz8uaG90ZWxBZGRyZXNzPy5wcm92aW5jZSxcbiAgICAgICAgICAgICAgICBjb3VudHJ5OiBwcm9wcz8uaG90ZWxBZGRyZXNzPy5jb3VudHJ5LFxuICAgICAgICAgICAgICAgIGNwOiBwcm9wcz8uaG90ZWxBZGRyZXNzPy5jcCxcbiAgICAgICAgICAgICAgICBhZGRyZXNzOiBwcm9wcz8uaG90ZWxBZGRyZXNzPy5hZGRyZXNzLFxuICAgICAgICAgICAgICAgIGxhdDogcHJvcHM/LmhvdGVsQWRkcmVzcz8ubGF0LFxuICAgICAgICAgICAgICAgIGxvbjogcHJvcHM/LmhvdGVsQWRkcmVzcz8ubG9uLFxuICAgICAgICAgICAgICAgIHBob25lOiBwcm9wcz8uaG90ZWxBZGRyZXNzPy5waG9uZSxcbiAgICAgICAgICAgICAgICBlbWFpbDogcHJvcHM/LmhvdGVsQWRkcmVzcz8uZW1haWwsXG4gICAgICAgICAgICB9LFxuICAgICAgICB9IGFzIEJhYnlsb25Gb290ZXJDb250YWN0STtcbiAgICB9XG5cbiAgICBtYXBJbmZvMkltZ0JpZyhwcm9wczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvbkluZm8yaW1nQmlnSSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBwcmV0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy5wcmV0aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnByZXRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8udGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LnRhZyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0ZXh0OiBwcm9wcz8udGV4dHM/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgcHJldGl0bGUyOiBwcm9wcz8udGV4dHM/Lm5kUHJldGl0bGUsXG4gICAgICAgICAgICB0aXRsZTI6IHByb3BzPy50ZXh0cz8ubmRUaXRsZSxcbiAgICAgICAgICAgIHRleHQyOiBwcm9wcz8udGV4dHM/Lm5kRGVzY3JpcHRpb24sXG4gICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnMocHJvcHM/LmJ1dHRvbnMpPy5bMF0sXG4gICAgICAgICAgICBidXR0b24yOiBVdGlscy5tYXBCdXR0b25zKHByb3BzPy5idXR0b25zKT8uWzFdLFxuICAgICAgICAgICAgaW1nOiB7XG4gICAgICAgICAgICAgICAgc3JjOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzPy5bMF0gPz9cbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZT8uWzBdXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBhbHQ6XG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8uWzBdPy5hbHQgPz9cbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlPy5bMF0uYWx0LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGltZ1NtYWxsOiB7XG4gICAgICAgICAgICAgICAgc3JjOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/Lm5kaW1hZ2VuZXM/LlswXSA/P1xuICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/Lm5kaW1hZ2U/LlswXVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgYWx0OiBwcm9wcz8ubXVsdGltZWRpYT8ubmRpbWFnZW5lcz8uWzBdPy5hbHQsXG4gICAgICAgICAgICB9LFxuICAgICAgICB9IGFzIEJhYnlsb25JbmZvMmltZ0JpZ0k7XG4gICAgfVxuXG4gICAgbWFwRm9vdGVyTG9nb3MocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25Gb290ZXJMb2dvc0kge1xuICAgICAgICBjb25zdCBkZXNjcmlwdGlvbiA9IHByb3BzPy50ZXh0cz8uZGVzY3JpcHRpb24gPz8gcHJvcHM/LnRleHRzPy50ZXh0O1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0ZXh0czoge1xuICAgICAgICAgICAgICAgIC4uLnByb3BzPy50ZXh0cyxcbiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogZGVzY3JpcHRpb24sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgYnV0dG9uczogVXRpbHMubWFwQnV0dG9ucyhwcm9wcz8uYnV0dG9ucyksXG4gICAgICAgICAgICBsb2dvczogcHJvcHM/Lm11bHRpbWVkaWE/LmxvZ29zPy5tYXAoKGxvZ286IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGxvZ28sIGZhbHNlKSxcbiAgICAgICAgICAgICAgICBsaW5rOiBVdGlscy5tYXBCdXR0b25zKGxvZ28/LmxpbmtzPy5bMF0pLFxuICAgICAgICAgICAgfSkpLFxuICAgICAgICB9IGFzIEJhYnlsb25Gb290ZXJMb2dvc0k7XG4gICAgfVxuXG4gICAgbWFwRm9vdGVyTGlua3MocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25Gb290ZXJMaW5rc0kge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgY29weXJpZ2h0OiBwcm9wcz8udGV4dHM/LmNvcHlyaWdodCxcbiAgICAgICAgICAgIHllYXI6IHByb3BzPy50ZXh0cz8ueWVhcixcbiAgICAgICAgICAgIGJ1dHRvbnM6IFV0aWxzLm1hcEJ1dHRvbnMocHJvcHM/LmJ1dHRvbnMpLFxuICAgICAgICB9IGFzIEJhYnlsb25Gb290ZXJMaW5rc0k7XG4gICAgfVxuXG4gICAgbWFwRm9vdGVyU29jaWFscyhwcm9wczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvbkZvb3RlclNvY2lhbEkge1xuICAgICAgICBjb25zdCBmaWx0ZXJlZExpbmtzID0gKHByb3BzPy5zb2NpYWxNZWRpYSB8fCBbXSkuZmlsdGVyKFxuICAgICAgICAgICAgKGxpbms6IGFueSkgPT5cbiAgICAgICAgICAgICAgICBsaW5rICE9PSBudWxsICYmXG4gICAgICAgICAgICAgICAgbGluayAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAgICAgICAgICAgbGluay51cmwgIT09ICcnICYmXG4gICAgICAgICAgICAgICAgbGluay5pY29uICE9PSAnJ1xuICAgICAgICApO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICB0ZXh0OiBwcm9wcz8udGV4dHM/LnRleHQsXG4gICAgICAgICAgICBsaW5rczogZmlsdGVyZWRMaW5rcy5tYXAoKGxpbms6IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICBpY29uOiBgYmFieWxvbi0ke2xpbmsubmFtZT8udG9Mb3dlckNhc2UoKX1gLFxuICAgICAgICAgICAgICAgIHVybDogbGluay51cmwsXG4gICAgICAgICAgICAgICAgbGFiZWw6IGxpbmsubmFtZSxcbiAgICAgICAgICAgIH0pKSxcbiAgICAgICAgfSBhcyBCYWJ5bG9uRm9vdGVyU29jaWFsSTtcbiAgICB9XG5cbiAgICBtYXBTbGlkZXIyaXRlbXMocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25TbGlkZXIyaXRlbXNJIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgdGV4dDogcHJvcHM/LnRleHRzPy50ZXh0LFxuICAgICAgICAgICAgaXRlbXM6IHByb3BzPy5yb29tcz8ubWFwKChpdGVtOiBhbnkpID0+ICh7XG4gICAgICAgICAgICAgICAgcHJldGl0bGU6IGl0ZW0/LnRleHRzPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICB0aXRsZTogaXRlbT8udGV4dHM/Lm5hbWUsXG4gICAgICAgICAgICAgICAgaW1nOiB7XG4gICAgICAgICAgICAgICAgICAgIHNyYzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaXRlbT8ubXVsdGltZWRpYT8uWzBdKSxcbiAgICAgICAgICAgICAgICAgICAgYWx0OiBpdGVtPy5tdWx0aW1lZGlhPy5bMF0/LmFsdCxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIC8vIGxpbms6XG4gICAgICAgICAgICAgICAgYnV0dG9uczogVXRpbHMubWFwQnV0dG9ucyhpdGVtPy5idXR0b25zKSxcbiAgICAgICAgICAgICAgICBzZXJ2aWNlczogaXRlbT8uc2VydmljZXM/Lm1hcCgoaXRlbTogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICBuYW1lOiBpdGVtLm5hbWUsXG4gICAgICAgICAgICAgICAgICAgIGljb246IGBpY29uLSR7aXRlbS5jbGFzc31gLFxuICAgICAgICAgICAgICAgIH0pKSxcbiAgICAgICAgICAgIH0pKSxcbiAgICAgICAgfSBhcyBCYWJ5bG9uU2xpZGVyMml0ZW1zSTtcbiAgICB9XG5cbiAgICBtYXBTdGF0aWNGb290ZXJ2Mihwcm9wczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvblN0YXRpY0Zvb3RlclYySSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgIG5kVGl0bGU6IHByb3BzPy50ZXh0cz8uYWRkcmVzc1RpdGxlLFxuICAgICAgICAgICAgcmRUaXRsZTogcHJvcHM/LnRleHRzPy5saW5rc1RpdGxlLFxuICAgICAgICAgICAgdGhUaXRsZTogcHJvcHM/LnRleHRzPy5sb2NhdGlvblRpdGxlLFxuICAgICAgICAgICAgZnJhbWVVcmw6IHByb3BzPy50ZXh0cz8uZnJhbWVVcmwsXG4gICAgICAgICAgICBpbWdVcmw6IHByb3BzPy5tdWx0aW1lZGlhPy5mb290ZXJpbWc/LlswXT8ubGlua3M/LlswXT8ubGlua1ZhbHVlLFxuICAgICAgICAgICAgY29udGFjdEluZm86IFV0aWxzLm1hcEJ1dHRvbnMocHJvcHM/LmxpbmtzPy5jb250YWN0Py5bMF0pLFxuICAgICAgICAgICAgY29udGFjdExpbmtzOiBVdGlscy5tYXBCdXR0b25zKHByb3BzPy5saW5rcz8uY29udGFjdExpbmtzPy5bMF0pLFxuICAgICAgICAgICAgZm9vdGVyTGlua3M6IFV0aWxzLm1hcEJ1dHRvbnMocHJvcHM/LmxpbmtzPy5mb290ZXJMaW5rcz8uWzBdKSxcbiAgICAgICAgICAgIGFkZHJlc3M6IEFycmF5LmlzQXJyYXkocHJvcHM/LmFkZHJlc3MpXG4gICAgICAgICAgICAgICAgPyBwcm9wcy5hZGRyZXNzLm1hcChcbiAgICAgICAgICAgICAgICAgICAgICAoYWRkcmVzczogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IGFkZHJlc3M/LmlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogYWRkcmVzcz8ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZHJlc3M6IGFkZHJlc3M/LmFkZHJlc3MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaXR5OiBhZGRyZXNzPy5jaXR5LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvdmluY2U6IGFkZHJlc3M/LnByb3ZpbmNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY291bnRyeTogYWRkcmVzcz8uY291bnRyeSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNwOiBhZGRyZXNzPy5jcCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSkgYXMgQmFieWxvbkFkZHJlc3NJdGVtXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgOiBbXSxcbiAgICAgICAgICAgIHNvY2lhbE1lZGlhOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICB1cmw6IHByb3BzPy5zb2NpYWxNZWRpYT8uWzBdPy51cmwsXG4gICAgICAgICAgICAgICAgICAgIGxhYmVsOiBwcm9wcz8udGV4dHM/Lmluc3RhZ3JhbVRpdGxlLFxuICAgICAgICAgICAgICAgIH0gYXMgQmFieWxvbkJ1dHRvbkksXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgY29weXJpZ2h0OiBwcm9wcz8udGV4dHM/LmNvcHlyaWdodCxcbiAgICAgICAgICAgIG5hdjogcHJvcHM/Lm5hdj8ubWFwKFxuICAgICAgICAgICAgICAgIChuYXY6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBuYXY/Lm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICB1cmw6IG5hdj8udXJsLFxuICAgICAgICAgICAgICAgICAgICB9KSBhcyBCYWJ5bG9uQnV0dG9uSVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmZvb3RlcmltZz8uWzBdLFxuICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICApLFxuICAgICAgICB9IGFzIEJhYnlsb25TdGF0aWNGb290ZXJWMkk7XG4gICAgfVxuXG4gICAgbWFwTGlzdEdyaWQocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25MaXN0R3JpZEkge1xuICAgICAgICBjb25zdCB7IGltYWdlbmVzIH0gPSBwcm9wcz8ubXVsdGltZWRpYSB8fCBbXTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyhwcm9wcz8uYnV0dG9ucyk/LlswXSxcbiAgICAgICAgICAgIGxhYmVsczoge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGl0ZW1zOiBpbWFnZW5lcz8ubWFwKFxuICAgICAgICAgICAgICAgIChpdGVtOiBJbWFnZVJlc3BvbnNlKSA9PlxuICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKGl0ZW0/LmJ1dHRvbnMpLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGlua3M6IFV0aWxzLm1hcEJ1dHRvbnMoaXRlbT8ubGlua3MpLFxuICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2U6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGl0ZW0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0udGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBzdWJ0aXRsZTogaXRlbS5zdWJ0aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZpY2VzOiBbXSwgLy9UT0RPOiBwdGUgYmFjayxcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgQmFieWxvbkl0ZW1HcmlkSVxuICAgICAgICAgICAgKSxcbiAgICAgICAgfSBhcyBCYWJ5bG9uTGlzdEdyaWRJO1xuICAgIH1cblxuICAgIG1hcE5ld3NsZXR0ZXJNb2RhbChwcm9wczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvbk5ld3NsZXR0ZXJJIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGNvbmRpdGlvbnM6IHByb3BzPy50ZXh0cz8uY29uZGl0aW9ucyxcbiAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgc3VidGl0bGU6IHByb3BzPy50ZXh0cz8uc3VidGl0bGUsXG4gICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnMocHJvcHM/LmJ1dHRvbnMpPy5bMF0sXG4gICAgICAgICAgICBpbnB1dDoge1xuICAgICAgICAgICAgICAgIG5hbWU6ICdtYWlsJyxcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogcHJvcHM/LnRleHRzPy5pbnB1dEhvbGRlcixcbiAgICAgICAgICAgICAgICB2YWxpZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICB2YWx1ZTogJycsXG4gICAgICAgICAgICAgICAgZXJyb3I6IHByb3BzPy50ZXh0cz8ubmV3c0Vycm9yRW1haWwsXG4gICAgICAgICAgICB9IGFzIEJhYnlsb25JbnB1dEksXG4gICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZWJhY2tncm91bmQ/LlswXSxcbiAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgKSxcbiAgICAgICAgfSBhcyBCYWJ5bG9uTmV3c2xldHRlckk7XG4gICAgfVxuXG4gICAgbWFwR2xvYmFsTW9kYWwocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25HbG9iYWxNb2RhbEkgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICBzdWJ0aXRsZTogcHJvcHM/LnRleHRzPy5zdWJ0aXRsZSxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBwcm9wcz8udGV4dHM/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgYnV0dG9uczogVXRpbHMubWFwQnV0dG9ucyhcbiAgICAgICAgICAgICAgICBwcm9wcz8uYnV0dG9ucy5maWx0ZXIoKGJ0bjogYW55KSA9PiAhIWJ0bj8ubGlua1ZhbHVlKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGltYWdlOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXM/LlswXSxcbiAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGlmcmFtZTogcHJvcHM/LnRleHRzPy5pZnJhbWUsXG4gICAgICAgICAgICAvLyBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8uWzBdKSxcbiAgICAgICAgfSBhcyBCYWJ5bG9uR2xvYmFsTW9kYWxJO1xuICAgIH1cblxuICAgIG1hcE9mZmVyQmFubmVyVjIocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25PZmZlclBvcHVwVjJJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgbGV0IG9mZmVyRGF0YTtcbiAgICAgICAgaWYgKHByb3BzLm9mZmVycz8ubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgY29uc3Qgb2ZmZXIgPSBwcm9wcy5vZmZlcnM/LlswXTtcbiAgICAgICAgICAgIG9mZmVyRGF0YSA9IHtcbiAgICAgICAgICAgICAgICB0ZXh0czoge1xuICAgICAgICAgICAgICAgICAgICB0aXRsZTogb2ZmZXI/LnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgc3VidGl0bGU6IG9mZmVyPy50ZXh0cz8uc3VidGl0bGUsXG4gICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBvZmZlcj8udGV4dHM/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsMTogb2ZmZXI/LnRleHRzPy5hZGRpdGlvbmFsMSxcbiAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbDI6IG9mZmVyPy50ZXh0cz8uYWRkaXRpb25hbDIsXG4gICAgICAgICAgICAgICAgICAgIGFkZGl0aW9uYWwzOiBvZmZlcj8udGV4dHM/LmFkZGl0aW9uYWwzLFxuICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsNDogb2ZmZXI/LnRleHRzPy5hZGRpdGlvbmFsNCxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyhvZmZlcj8uYnV0dG9ucyk/LlswXSxcbiAgICAgICAgICAgICAgICBpbWFnZTogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgICAgIG9mZmVyPy5tdWx0aW1lZGlhPy5sZW5ndGggPiAxXG4gICAgICAgICAgICAgICAgICAgICAgICA/IChvZmZlcj8ubXVsdGltZWRpYT8uZmluZCgoaW1nOiBhbnkpID0+IGltZy5jb3ZlcikgPz9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZmVyPy5tdWx0aW1lZGlhPy5bMF0pXG4gICAgICAgICAgICAgICAgICAgICAgICA6IChvZmZlcj8ubXVsdGltZWRpYT8uWzBdID8/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uZGVmYXVsdGltYWdlbmVzPy5bMF0pLFxuICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgZGlzY291bnQ6IG9mZmVyPy5kaXNjb3VudCxcbiAgICAgICAgICAgICAgICBwcmljZTogb2ZmZXI/LnByaWNlLFxuICAgICAgICAgICAgICAgIGN1cnJlbmN5OiBvZmZlcj8uY3VycmVuY3ksXG4gICAgICAgICAgICB9IGFzIEJhYnlsb25PZmZlclBvcHVwVjJJO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBvZmZlckRhdGEgPz8gb2ZmZXJEYXRhO1xuICAgIH1cblxuICAgIG1hcEhlYWRJbnRybyhcbiAgICAgICAgcHJvcHM6IGFueSB8IHVuZGVmaW5lZCxcbiAgICAgICAgY29tcG9uZW50OiBhbnkgfCB1bmRlZmluZWRcbiAgICApOiBCYWJ5bG9uSGVhZEludHJvSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBwcmV0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy5wcmV0aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnByZXRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8udGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgdGV4dDpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy50ZXh0ID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8udGV4dFxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8udGV4dD8uY29udGFpbixcbiAgICAgICAgICAgIGJ1dHRvbnM6IFV0aWxzLm1hcEJ1dHRvbnMoXG4gICAgICAgICAgICAgICAgcHJvcHM/LmJ1dHRvbnM/LmZpbHRlcigoYnRuOiBhbnkpID0+IGJ0bj8ubGlua1ZhbHVlICE9PSBudWxsKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgdGV4dDogcHJvcHM/LnRleHRzPy50ZXh0Py50YWcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGV4dENvbG9yczoge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOlxuICAgICAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy5jb2xvcj8udHJpbSgpID8/XG4gICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudD8udGV4dGNvbG9yLFxuICAgICAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb2xvcj8udHJpbSgpID8/IGNvbXBvbmVudD8udGV4dGNvbG9yLFxuICAgICAgICAgICAgICAgIGNhdGVnb3JpZXNUaXRsZTpcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy5jYXRlZ29yaWVzPy5jb2xvcj8udHJpbSgpID8/XG4gICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudD8udGV4dGNvbG9yLFxuICAgICAgICAgICAgICAgIGxhdGVzdFBvc3RzVGl0bGU6XG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy50ZXh0cz8ubGF0ZXN0RW50cmllcz8uY29sb3I/LnRyaW0oKSA/P1xuICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQ/LnRleHRjb2xvcixcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0gYXMgQmFieWxvbkhlYWRJbnRyb0k7XG4gICAgfVxuXG4gICAgbWFwRXh0ZXJuYWxTY3JpcHQoXG4gICAgICAgIHByb3BzOiBhbnkgfCB1bmRlZmluZWRcbiAgICApOiBCYWJ5bG9uRXh0ZXJuYWxTY3JpcHRJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHNjcmlwdDogcHJvcHM/LnRleHRzPy5Db250YWluZXIsXG4gICAgICAgICAgICBtc2dfbG9hZGluZzogcHJvcHM/LnRleHRzPy5sb2FkaW5nID8/ICdDYXJnYW5kby4uLicsXG4gICAgICAgIH0gYXMgQmFieWxvbkV4dGVybmFsU2NyaXB0STtcbiAgICB9XG5cbiAgICBtYXBCbG9nTGlzdChwcm9wczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvbkJsb2dMaXN0SSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGxldCBwb3N0cyA9IHByb3BzPy5ibG9nPy5wb3N0cz8ubWFwKChwb3N0OiBhbnkpID0+ICh7XG4gICAgICAgICAgICBpZDogcG9zdD8uaWQsXG4gICAgICAgICAgICB0aXRsZTogcG9zdD8udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgc3VidGl0bGU6IHBvc3Q/LnRleHRzPy5zdWJ0aXRsZSxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBwb3N0Py50ZXh0cz8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICBhZGRpdGlvbmFsMTogcG9zdD8udGV4dHM/LmFkZGl0aW9uYWwxLFxuICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShwb3N0Py5tdWx0aW1lZGlhPy5bMF0sIGZhbHNlKSxcbiAgICAgICAgICAgIGJ1dHRvbnM6IFV0aWxzLm1hcEJ1dHRvbnMocG9zdD8uYnV0dG9ucyksXG4gICAgICAgICAgICBwb3N0VXJsOiBVdGlscy5tYXBCdXR0b25zKHBvc3Q/LmJ1dHRvbnMpPy5bMF0sXG4gICAgICAgICAgICBjYXRlZ29yeTogcG9zdD8uY2F0ZWdvcnksXG4gICAgICAgICAgICBkYXRlOiBwb3N0Py5kYXRlID8gbmV3IERhdGUocG9zdC5kYXRlKSA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIGFjdGl2ZTogcG9zdD8uYWN0aXZlLFxuICAgICAgICB9KSk7XG5cbiAgICAgICAgcG9zdHMgPSBwb3N0cy5zb3J0KChhOiBhbnksIGI6IGFueSkgPT4ge1xuICAgICAgICAgICAgaWYgKGEuZGF0ZSAmJiBiLmRhdGUpIHJldHVybiBiLmRhdGUgLSBhLmRhdGU7IC8vIGFtYm9zIGNvbiBmZWNoYVxuICAgICAgICAgICAgaWYgKGEuZGF0ZSAmJiAhYi5kYXRlKSByZXR1cm4gLTE7IC8vIGEgdGllbmUgZmVjaGEsIGIgbm9cbiAgICAgICAgICAgIGlmICghYS5kYXRlICYmIGIuZGF0ZSkgcmV0dXJuIDE7IC8vIGIgdGllbmUgZmVjaGEsIGEgbm9cbiAgICAgICAgICAgIHJldHVybiAwOyAvLyBuaW5ndW5vIHRpZW5lIGZlY2hhXG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIE9idGVuZXIgbG9zIDQgcG9zdHMgbcOhcyByZWNpZW50ZXNcbiAgICAgICAgcG9zdHMgPVxuICAgICAgICAgICAgcG9zdHM/LmZpbHRlcigocG9zdDogeyBhY3RpdmU6IGJvb2xlYW4gfSkgPT4gcG9zdC5hY3RpdmUpID8/XG4gICAgICAgICAgICBwb3N0cyA/P1xuICAgICAgICAgICAgW107XG5cbiAgICAgICAgY29uc3QgbGF0ZXN0UG9zdHMgPSBwb3N0cz8uc2xpY2UoMCwgNCk7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHByZXRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnByZXRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8ucHJldGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8udGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy50aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICB0YWdzOiB7XG4gICAgICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIGNhdGVnb3JpZXNUaXRsZTogcHJvcHM/LnRleHRzPy5jYXRlZ29yaWVzPy50YWcsXG4gICAgICAgICAgICAgICAgbGF0ZXN0UG9zdHNUaXRsZTogcHJvcHM/LnRleHRzPy5sYXRlc3RFbnRyaWVzPy50YWcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGV4dENvbG9yczoge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgICAgIGNhdGVnb3JpZXNUaXRsZTogcHJvcHM/LnRleHRzPy5jYXRlZ29yaWVzPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgICAgIGxhdGVzdFBvc3RzVGl0bGU6IHByb3BzPy50ZXh0cz8ubGF0ZXN0RW50cmllcz8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzZWFyY2hQbGFjZUhvbGRlcjogcHJvcHM/LnRleHRzPy5zZWFyY2hQbGFjZUhvbGRlcixcbiAgICAgICAgICAgIG5vdGZvdW5kVGV4dDogcHJvcHM/LnRleHRzPy5zZWFyY2hOb3RGb3VuZCxcbiAgICAgICAgICAgIHBvc3RzOiBwb3N0cyxcbiAgICAgICAgICAgIGNhdGVnb3JpZXNUaXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy5jYXRlZ29yaWVzID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8uY2F0ZWdvcmllc1xuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8uY2F0ZWdvcmllcz8uY29udGFpbixcbiAgICAgICAgICAgIGNhdGVnb3JpZXM6IHByb3BzPy5wb3N0Q2F0ZWdvcmllcz8ubWFwKChjYXRlZ29yeTogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgIGlkOiBjYXRlZ29yeT8uaWQsXG4gICAgICAgICAgICAgICAgdGl0bGU6IGNhdGVnb3J5Py5uYW1lLFxuICAgICAgICAgICAgICAgIHBvc3RzOiBjYXRlZ29yeT8udG90YWxQb3N0cyxcbiAgICAgICAgICAgIH0pKSxcbiAgICAgICAgICAgIGxhdGVzdFBvc3RzVGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8ubGF0ZXN0RW50cmllcyA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LmxhdGVzdEVudHJpZXNcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LmxhdGVzdEVudHJpZXM/LmNvbnRhaW4sXG4gICAgICAgICAgICBsYXRlc3RQb3N0czogbGF0ZXN0UG9zdHMsXG4gICAgICAgICAgICBhbnRlcmlvcjogcHJvcHM/LnRleHRzPy5hbnRlcmlvcixcbiAgICAgICAgICAgIHNpZ3VpZW50ZTogcHJvcHM/LnRleHRzPy5zaWd1aWVudGUsXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgbWFwQmxvZ0RldGFpbChwcm9wczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvbkJsb2dEZXRhaWxzSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRQb3N0SWQgPSBwcm9wcz8ucG9zdD8uaWQ7XG4gICAgICAgIGNvbnN0IHBvc3RzID0gcHJvcHM/LnJlbGF0ZWRQb3N0cz8ubWFwKChwb3N0OiBhbnkpID0+ICh7XG4gICAgICAgICAgICBpZDogcG9zdD8uaWQsXG4gICAgICAgICAgICB0aXRsZTogcG9zdD8udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgc3VidGl0bGU6IHBvc3Q/LnRleHRzPy5zdWJ0aXRsZSxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBwb3N0Py50ZXh0cz8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgIHBvc3Q/Lm11bHRpbWVkaWE/LmltYWdlbmVzPy5bMF0sXG4gICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBidXR0b25zOiBVdGlscy5tYXBCdXR0b25zKHBvc3Q/LmJ1dHRvbnMpLFxuICAgICAgICAgICAgcG9zdFVybDogVXRpbHMubWFwQnV0dG9ucyhwb3N0Py5idXR0b25zKT8uWzBdLFxuICAgICAgICAgICAgY2F0ZWdvcnk6IHBvc3Q/LmNhdGVnb3J5LFxuICAgICAgICAgICAgZGF0ZTogcG9zdD8uZGF0ZSA/IG5ldyBEYXRlKHBvc3QuZGF0ZSkgOiB1bmRlZmluZWQsXG4gICAgICAgIH0pKTtcblxuICAgICAgICBjb25zdCBjYW5kaWRhdGVzID0gKHBvc3RzIHx8IFtdKS5maWx0ZXIoXG4gICAgICAgICAgICAocDogYW55KSA9PiBwPy5pZCAhPT0gY3VycmVudFBvc3RJZFxuICAgICAgICApO1xuXG4gICAgICAgIGxldCByZWxhdGVkUG9zdHNDb25zdCA9XG4gICAgICAgICAgICBjYW5kaWRhdGVzXG4gICAgICAgICAgICAgICAgLmZpbHRlcigocDogYW55KSA9PiBwPy5kYXRlKVxuICAgICAgICAgICAgICAgIC5zb3J0KChhOiBhbnksIGI6IGFueSkgPT4gKGIuZGF0ZSBhcyBhbnkpIC0gKGEuZGF0ZSBhcyBhbnkpKVxuICAgICAgICAgICAgICAgIC5zbGljZSgwLCA0KSB8fCBbXTtcbiAgICAgICAgaWYgKHJlbGF0ZWRQb3N0c0NvbnN0Lmxlbmd0aCA8IDQpIHtcbiAgICAgICAgICAgIGNvbnN0IHdpdGhvdXREYXRlID0gY2FuZGlkYXRlcy5maWx0ZXIoKHA6IGFueSkgPT4gIXA/LmRhdGUpO1xuICAgICAgICAgICAgcmVsYXRlZFBvc3RzQ29uc3QgPSByZWxhdGVkUG9zdHNDb25zdC5jb25jYXQoXG4gICAgICAgICAgICAgICAgd2l0aG91dERhdGUuc2xpY2UoMCwgNCAtIHJlbGF0ZWRQb3N0c0NvbnN0Lmxlbmd0aClcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6IHByb3BzPy5wb3N0Py50ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICBzdWJ0aXRsZTogcHJvcHM/LnBvc3Q/LnRleHRzPy5zdWJ0aXRsZSxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBwcm9wcz8ucG9zdD8udGV4dHM/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgYWRkaXRpb25hbDE6IHByb3BzPy5wb3N0Py50ZXh0cz8uYWRkaXRpb25hbDEsXG4gICAgICAgICAgICBhZGRpdGlvbmFsMjogcHJvcHM/LnBvc3Q/LnRleHRzPy5hZGRpdGlvbmFsMixcbiAgICAgICAgICAgIGFkZGl0aW9uYWwzOiBwcm9wcz8ucG9zdD8udGV4dHM/LmFkZGl0aW9uYWwzLFxuICAgICAgICAgICAgYWRkaXRpb25hbDQ6IHByb3BzPy5wb3N0Py50ZXh0cz8uYWRkaXRpb25hbDQsXG4gICAgICAgICAgICBkYXRlOiBwcm9wcz8ucG9zdD8uZGF0ZSA/IG5ldyBEYXRlKHByb3BzPy5wb3N0Py5kYXRlKSA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIGNhdGVnb3J5OiBwcm9wcz8ucG9zdD8uY2F0ZWdvcnksXG4gICAgICAgICAgICB0YWdzOiB7XG4gICAgICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIGNhdGVnb3JpZXNUaXRsZTogcHJvcHM/LnRleHRzPy5jYXRlZ29yaWVzPy50YWcsXG4gICAgICAgICAgICAgICAgbGF0ZXN0UG9zdHNUaXRsZTogcHJvcHM/LnRleHRzPy5sYXRlc3RFbnRyaWVzPy50YWcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGV4dENvbG9yczoge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgICAgIGNhdGVnb3JpZXNUaXRsZTogcHJvcHM/LnRleHRzPy5jYXRlZ29yaWVzPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgICAgIGxhdGVzdFBvc3RzVGl0bGU6IHByb3BzPy50ZXh0cz8ubGF0ZXN0RW50cmllcz8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzZWFyY2hQbGFjZUhvbGRlcjogcHJvcHM/LnRleHRzPy5zZWFyY2hQbGFjZUhvbGRlcixcbiAgICAgICAgICAgIGNhdGVnb3JpZXNUaXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy5jYXRlZ29yaWVzID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8uY2F0ZWdvcmllc1xuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8uY2F0ZWdvcmllcz8uY29udGFpbixcbiAgICAgICAgICAgIGNhdGVnb3JpZXM6IHByb3BzPy5wb3N0Q2F0ZWdvcmllcz8ubWFwKChjYXRlZ29yeTogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgIGlkOiBjYXRlZ29yeT8uaWQsXG4gICAgICAgICAgICAgICAgdGl0bGU6IGNhdGVnb3J5Py5uYW1lLFxuICAgICAgICAgICAgICAgIHBvc3RzOiBjYXRlZ29yeT8udG90YWxQb3N0cyxcbiAgICAgICAgICAgIH0pKSxcbiAgICAgICAgICAgIHJlbGF0ZWRQb3N0c1RpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LmxhdGVzdEVudHJpZXMgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy5sYXRlc3RFbnRyaWVzXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy5sYXRlc3RFbnRyaWVzPy5jb250YWluLFxuICAgICAgICAgICAgcmVsYXRlZFBvc3RzOiByZWxhdGVkUG9zdHNDb25zdCxcbiAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyhwcm9wcz8uYnV0dG9ucyk/LlswXSxcbiAgICAgICAgICAgIHNoYXJlOiBwcm9wcz8udGV4dHM/LnNoYXJlLFxuICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICBwcm9wcz8ucG9zdD8ubXVsdGltZWRpYT8uaW1hZ2VuZXM/LlswXSxcbiAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgKSxcbiAgICAgICAgfSBhcyBCYWJ5bG9uQmxvZ0RldGFpbHNJO1xuICAgIH1cblxuICAgIG1hcE1vZGFsTXVsdGlwbGVNb3RvcnMoXG4gICAgICAgIHByb3BzOiBhbnkgfCB1bmRlZmluZWRcbiAgICApOiBCYWJ5bG9uTW9kYWxNdWx0aXBsZU1vdG9yc0kgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgbG9nbzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzPy5bMF0sXG4gICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/LnRleHRzPy5wcmV0aXRsZSxcbiAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgYnV0dG9uczogVXRpbHMubWFwQnV0dG9ucyhcbiAgICAgICAgICAgICAgICBwcm9wcz8ubGlua3NcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8ubGlua3M/LmZpbHRlcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGJ0bjogYW55KSA9PiBidG4/LmxpbmtWYWx1ZSAhPT0gbnVsbFxuICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8uYnV0dG9ucz8uZmlsdGVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAoYnRuOiBhbnkpID0+IGJ0bj8ubGlua1ZhbHVlICE9PSBudWxsXG4gICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgfSBhcyBCYWJ5bG9uTW9kYWxNdWx0aXBsZU1vdG9yc0k7XG4gICAgfVxuICAgIG1hcE9mZmVyQmFubmVyKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uT2ZmZXJQb3B1cEkgfCB1bmRlZmluZWQge1xuICAgICAgICBsZXQgb2ZmZXJEYXRhO1xuICAgICAgICBpZiAocHJvcHMub2ZmZXJzPy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBjb25zdCBvZmZlciA9IHByb3BzLm9mZmVycz8uWzBdO1xuICAgICAgICAgICAgb2ZmZXJEYXRhID0ge1xuICAgICAgICAgICAgICAgIHRleHRzOiB7XG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBvZmZlcj8udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICBzdWJ0aXRsZTogb2ZmZXI/LnRleHRzPy5zdWJ0aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IG9mZmVyPy50ZXh0cz8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgICAgIGFkZGl0aW9uYWwxOiBvZmZlcj8udGV4dHM/LmFkZGl0aW9uYWwxLFxuICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsMjogb2ZmZXI/LnRleHRzPy5hZGRpdGlvbmFsMixcbiAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbDM6IG9mZmVyPy50ZXh0cz8uYWRkaXRpb25hbDMsXG4gICAgICAgICAgICAgICAgICAgIGFkZGl0aW9uYWw0OiBvZmZlcj8udGV4dHM/LmFkZGl0aW9uYWw0LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKG9mZmVyPy5idXR0b25zKT8uWzBdLFxuICAgICAgICAgICAgICAgIGltYWdlOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICAgICAgb2ZmZXI/Lm11bHRpbWVkaWE/Lmxlbmd0aCA+IDFcbiAgICAgICAgICAgICAgICAgICAgICAgID8gKG9mZmVyPy5tdWx0aW1lZGlhPy5maW5kKChpbWc6IGFueSkgPT4gaW1nLmNvdmVyKSA/P1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2ZmZXI/Lm11bHRpbWVkaWE/LlswXSlcbiAgICAgICAgICAgICAgICAgICAgICAgIDogKG9mZmVyPy5tdWx0aW1lZGlhPy5bMF0gPz9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5kZWZhdWx0aW1hZ2VuZXM/LlswXSksXG4gICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBhZGRpdGlvbmFsQnV0dG9uczogVXRpbHMubWFwQnV0dG9ucyhcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/LmJ1dHRvbnM/LmZpbHRlcihcbiAgICAgICAgICAgICAgICAgICAgICAgIChidG46IGFueSkgPT4gYnRuPy5saW5rVmFsdWUgIT09IG51bGxcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICB9IGFzIEJhYnlsb25PZmZlclBvcHVwSTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gb2ZmZXJEYXRhID8/IG9mZmVyRGF0YTtcbiAgICB9XG5cbiAgICBtYXBNb2RhbFBvcHVwKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uTW9kYWxQb3B1cEkgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICBzdWJ0aXRsZTogcHJvcHM/LnRleHRzPy5zdWJ0aXRsZSxcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/LmlucHV0SG9sZGVyLFxuICAgICAgICAgICAgb3B0aW9uczogcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzPy5tYXAoKG9wdGlvbjogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgIGxhYmVsOiBvcHRpb24/LnRpdGxlLFxuICAgICAgICAgICAgICAgIHZhbHVlOiBvcHRpb24/LnN1YnRpdGxlLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBvcHRpb24/LnRpdGxlLFxuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBvcHRpb24/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgIGltYWdlOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShvcHRpb24sIGZhbHNlKSxcbiAgICAgICAgICAgIH0pKSxcbiAgICAgICAgICAgIGltYWdlOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8ubW9kYWxpbWFnZT8uWzBdLFxuICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICApLFxuICAgICAgICB9IGFzIEJhYnlsb25Nb2RhbFBvcHVwSTtcbiAgICB9XG5cbiAgICBtYXBQcmVzc0xpc3QocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25QcmVzc0xpc3RJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IHByb3BzPy50ZXh0cz8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICBpdGVtczogcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzPy5tYXAoKGl0ZW06IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICB0aXRsZTogaXRlbT8udGl0bGUsXG4gICAgICAgICAgICAgICAgc3VidGl0bGU6IGl0ZW0/LnN1YnRpdGxlLFxuICAgICAgICAgICAgICAgIGltYWdlOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpdGVtLCBmYWxzZSksXG4gICAgICAgICAgICAgICAgbGluazogVXRpbHMubWFwQnV0dG9ucyhpdGVtPy5saW5rcyk/LlswXSxcbiAgICAgICAgICAgIH0pKSxcbiAgICAgICAgICAgIGJ1dHRvbnM6IFV0aWxzLm1hcEJ1dHRvbnMocHJvcHM/LmJ1dHRvbnMpLFxuICAgICAgICB9IGFzIEJhYnlsb25QcmVzc0xpc3RJO1xuICAgIH1cblxuICAgIG1hcEFjdGlvbkJhbm5lcihwcm9wczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvbkFjdGlvbkJhbm5lckkgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgaW1hZ2U6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5hY3Rpb25iYW5uZXJpbWFnZT8uWzBdLFxuICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgaW1hZ2UyOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uYWN0aW9uYmFubmVyaW1hZ2UyPy5bMF0sXG4gICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnMocHJvcHM/LmJ1dHRvbnMpPy5bMF0sXG4gICAgICAgICAgICB0YWJsZTogcHJvcHM/LnRleHRzPy50YWJsZSxcbiAgICAgICAgICAgIHNhbGExOiBwcm9wcz8udGV4dHM/LnNhbGExLFxuICAgICAgICAgICAgc2FsYTI6IHByb3BzPy50ZXh0cz8uc2FsYTIsXG4gICAgICAgIH0gYXMgQmFieWxvbkFjdGlvbkJhbm5lckk7XG4gICAgfVxuICAgIG1hcEluZm9aaWdaYWdDb3VudGVyKFxuICAgICAgICBwcm9wczogYW55IHwgdW5kZWZpbmVkXG4gICAgKTogQmFieWxvbkluZm9aaWdaYWdDb3VudGVySSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGxldCBpbWFnZXM6IChzdHJpbmcgfCBCYWJ5bG9uSW1hZ2VJKVtdIHwgdW5kZWZpbmVkID0gW107XG4gICAgICAgIGxldCB0ZXh0cywgdGFncztcbiAgICAgICAgY29uc3QgZGF0ZVN0YXJ0ID0gcHJvcHM/LnRleHRzPy5kYXRlc3RhcnQ7XG4gICAgICAgIGNvbnN0IGRhdGVGaW5pc2ggPSBwcm9wcz8udGV4dHM/LmRhdGVmaW5pc2g7XG4gICAgICAgIGlmIChwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXMpIHtcbiAgICAgICAgICAgIGltYWdlcyA9IHRoaXMuZ2V0QXJyYXlJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzLFxuICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgdGV4dHMgPSB7XG4gICAgICAgICAgICAgICAgcHJldGl0bGU6XG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LmNvbnRhaW4gPz9cbiAgICAgICAgICAgICAgICAgICAgKHR5cGVvZiBwcm9wcz8udGV4dHM/LnByZXRpdGxlID09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8ucHJldGl0bGVcbiAgICAgICAgICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkKSxcbiAgICAgICAgICAgICAgICB0aXRsZTpcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy50aXRsZT8uY29udGFpbiA/P1xuICAgICAgICAgICAgICAgICAgICAodHlwZW9mIHByb3BzPy50ZXh0cz8udGl0bGUgPT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy50aXRsZVxuICAgICAgICAgICAgICAgICAgICAgICAgOiB1bmRlZmluZWQpLFxuICAgICAgICAgICAgICAgIGNvbnRlbnR0aXRsZTpcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy5jb250ZW50dGl0bGU/LmNvbnRhaW4gPz9cbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy5jb250ZW50dGl0bGUsXG4gICAgICAgICAgICAgICAgY29udGVudHN1YnRpdGxlOlxuICAgICAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/LmNvbnRlbnRzdWJ0aXRsZT8uY29udGFpbiA/P1xuICAgICAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/LmNvbnRlbnRzdWJ0aXRsZSxcbiAgICAgICAgICAgICAgICBjb250ZW50ZGVzY3JpcHRpb246XG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy50ZXh0cz8uY29udGVudGRlc2NyaXB0aW9uPy5jb250YWluID8/XG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy50ZXh0cz8uY29udGVudGRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgIGxvZ286IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8ubG9nbz8uWzBdLFxuICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgaWNvbnM6IHByb3BzPy5WZW50YWphcz8uZmlsdGVyKFxuICAgICAgICAgICAgICAgICAgICAoaXRlbTogYW55KSA9PiBpdGVtPy50aXRsZSB8fCBpdGVtPy50ZXh0XG4gICAgICAgICAgICAgICAgKT8ubWFwKChpdGVtOiBhbnkpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtLnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICB0ZXh0OiBpdGVtLnRleHQsXG4gICAgICAgICAgICAgICAgICAgIGljb246IGBpY29uLSR7aXRlbS5pY29ufWAsXG4gICAgICAgICAgICAgICAgfSkpLFxuICAgICAgICAgICAgICAgIGljb25UaXRsZTpcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy5pY29udGl0bGU/LmNvbnRhaW4gPz8gcHJvcHM/LnRleHRzPy5pY29udGl0bGUsXG4gICAgICAgICAgICAgICAgZGF5c1RleHQ6IHByb3BzPy50ZXh0cz8uZGF5c3RleHQsXG4gICAgICAgICAgICAgICAgaG91cnNUZXh0OiBwcm9wcz8udGV4dHM/LmhvdXJzdGV4dCxcbiAgICAgICAgICAgICAgICBtaW51dGVzVGV4dDogcHJvcHM/LnRleHRzPy5taW51dGVzdGV4dCxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICB0YWdzID0ge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICBjb250ZW50dGl0bGU6IHByb3BzPy50ZXh0cz8uY29udGVudHRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgY29udGVudHN1YnRpdGxlOiBwcm9wcz8udGV4dHM/LmNvbnRlbnRzdWJ0aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIGNvbnRlbnRkZXNjcmlwdGlvbjogcHJvcHM/LnRleHRzPy5jb250ZW50ZGVzY3JpcHRpb24/LnRhZyxcbiAgICAgICAgICAgICAgICBpY29uVGl0bGU6IHByb3BzPy50ZXh0cz8uaWNvbnRpdGxlPy50YWcsXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBidXR0b25zOiBVdGlscy5tYXBCdXR0b25zKFxuICAgICAgICAgICAgICAgIHByb3BzPy5idXR0b25zLmZpbHRlcigoYnRuOiBhbnkpID0+ICEhYnRuPy5saW5rVmFsdWUpXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgdGV4dHMsXG4gICAgICAgICAgICBpbWFnZXMsXG4gICAgICAgICAgICB0YWdzLFxuICAgICAgICAgICAgZGF0ZVN0YXJ0LFxuICAgICAgICAgICAgZGF0ZUZpbmlzaCxcbiAgICAgICAgfSBhcyBCYWJ5bG9uSW5mb1ppZ1phZ0NvdW50ZXJJO1xuICAgIH1cbiAgICBtYXBHckMySW1nKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uR3JDMkltZ0kgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy50aXRsZT8uY29udGFpbiA/P1xuICAgICAgICAgICAgICAgICh0eXBlb2YgcHJvcHM/LnRleHRzPy50aXRsZSA9PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8udGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiB1bmRlZmluZWQpLFxuICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy50YWcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGV4dENvbG9yczoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgaXRlbXM6IHByb3BzPy5ob3RlbHM/Lm1hcCgoaXRlbTogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgIHN1YnRpdGxlOiBpdGVtPy50ZXh0cz8uYWRkaXRpb25hbDEsXG4gICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0/LnRleHRzPy5uYW1lLFxuICAgICAgICAgICAgICAgIGltZzoge1xuICAgICAgICAgICAgICAgICAgICBzcmM6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGl0ZW0/Lm11bHRpbWVkaWE/LlswXSksXG4gICAgICAgICAgICAgICAgICAgIGFsdDogaXRlbT8ubXVsdGltZWRpYT8uWzBdPy5hbHQsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBsaW5rOiBVdGlscy5tYXBCdXR0b25zKGl0ZW0/LmxpbmtzKSxcbiAgICAgICAgICAgIH0pKSxcbiAgICAgICAgfSBhcyBCYWJ5bG9uR3JDMkltZ0k7XG4gICAgfVxuICAgIG1hcExpc0M0VHh0SWNvKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uTGlzQzRUeHRJY29JIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHByb3BzO1xuICAgIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBJbWFnZVJlc3BvbnNlIHtcbiAgICBwYXRoOiBJbWFnZVJlc3BvbnNlUGF0aDtcbiAgICB0aHVtYm5haWxzOiB7XG4gICAgICAgIDM3NTogSW1hZ2VSZXNwb25zZVBhdGg7XG4gICAgICAgIDU0MDogSW1hZ2VSZXNwb25zZVBhdGg7XG4gICAgICAgIDc2ODogSW1hZ2VSZXNwb25zZVBhdGg7XG4gICAgICAgIDgwMDogSW1hZ2VSZXNwb25zZVBhdGg7XG4gICAgICAgIDEwMjQ6IEltYWdlUmVzcG9uc2VQYXRoO1xuICAgICAgICAxMjgwOiBJbWFnZVJlc3BvbnNlUGF0aDtcbiAgICAgICAgMTM2NjogSW1hZ2VSZXNwb25zZVBhdGg7XG4gICAgfTtcbiAgICBjb3ZlcjogbnVtYmVyO1xuICAgIHRhZ3M/OiBhbnlbXTtcbiAgICB0aXRsZT86IHN0cmluZztcbiAgICBwcmV0aXRsZT86IHN0cmluZztcbiAgICBzdWJ0aXRsZT86IHN0cmluZztcbiAgICBuZFRpdGxlPzogc3RyaW5nO1xuICAgIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICAgIGxpbmtzPzogYW55W107XG4gICAgYnV0dG9ucz86IGFueVtdO1xuICAgIGFsdD86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJbWFnZVJlc3BvbnNlUGF0aCB7XG4gICAgb3JpZ2luYWw6IHN0cmluZztcbiAgICB3ZWJwOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29tcG9uZW50c0FkZG9ucyB7XG4gICAgY29udGFjdE9mZmljZT86IGFueTtcbiAgICBtZW51U29jaWFsTWVkaWE/OiB7IFtrOiBzdHJpbmddOiBzdHJpbmcgfVtdO1xuICAgIGNvbnN1bHRUeXBlPzogQ29uc3VsdFR5cGVJO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZpbHRlck9wdGlvbiB7XG4gICAgaWQ/OiBudW1iZXI7XG4gICAgbmFtZT86IHN0cmluZztcbiAgICBjaGlsZHJlbj86IEZpbHRlck9wdGlvbjtcbn1cbiJdfQ==
|