@hivegpt/hiveai-angular 0.0.84 → 0.0.85
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundles/hivegpt-hiveai-angular.umd.js +1 -1
- package/bundles/hivegpt-hiveai-angular.umd.js.map +1 -1
- package/bundles/hivegpt-hiveai-angular.umd.min.js +1 -1
- package/bundles/hivegpt-hiveai-angular.umd.min.js.map +1 -1
- package/esm2015/lib/components/chat-drawer/chat-drawer.component.js +2 -2
- package/fesm2015/hivegpt-hiveai-angular.js +1 -1
- package/fesm2015/hivegpt-hiveai-angular.js.map +1 -1
- package/package.json +1 -1
|
@@ -732,7 +732,7 @@ export class ChatDrawerComponent {
|
|
|
732
732
|
getDropdownHeaderText() {
|
|
733
733
|
var _a;
|
|
734
734
|
const selectedAgents = (_a = this.agents) === null || _a === void 0 ? void 0 : _a.filter(agent => agent.selected);
|
|
735
|
-
if (selectedAgents.length === 0) {
|
|
735
|
+
if (selectedAgents && selectedAgents.length === 0) {
|
|
736
736
|
return 'All';
|
|
737
737
|
}
|
|
738
738
|
else {
|
|
@@ -855,4 +855,4 @@ ChatDrawerComponent.propDecorators = {
|
|
|
855
855
|
connectWithUser: [{ type: Output }],
|
|
856
856
|
scheduleMeeting: [{ type: Output }]
|
|
857
857
|
};
|
|
858
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdC1kcmF3ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IkQ6L2hpdmVHUFQtQUktcGFja2FnZXMvSGl2ZUFJLVBhY2thZ2VzL3Byb2plY3RzL2hpdmVncHQvZXZlbnRzZ3B0LWFuZ3VsYXIvc3JjLyIsInNvdXJjZXMiOlsibGliL2NvbXBvbmVudHMvY2hhdC1kcmF3ZXIvY2hhdC1kcmF3ZXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLG9EQUFvRDtBQUNwRCxPQUFPLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQy9ELE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLEtBQUssRUFFTCxNQUFNLEVBQ04sU0FBUyxFQUNULFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsWUFBWSxFQUFZLE1BQU0sMkJBQTJCLENBQUM7QUFDbkUsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMxQixPQUFPLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsZUFBZSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDdEYsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFTOUQsTUFBTSxPQUFPLG1CQUFtQjtJQXNGOUIsWUFDVSxHQUFzQixFQUN0QixJQUFnQixFQUNoQixTQUF1QixFQUN2QixVQUFzQixFQUN0QixRQUFtQixFQUNuQixZQUFpQztJQUN6Qyw2QkFBNkI7O1FBTnJCLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBQ3RCLFNBQUksR0FBSixJQUFJLENBQVk7UUFDaEIsY0FBUyxHQUFULFNBQVMsQ0FBYztRQUN2QixlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ3RCLGFBQVEsR0FBUixRQUFRLENBQVc7UUFDbkIsaUJBQVksR0FBWixZQUFZLENBQXFCO1FBeEZuQyxzQkFBaUIsR0FBRyxzQkFBc0IsQ0FBQztRQUkxQyxnQkFBVyxHQUFXLFVBQVUsQ0FBQztRQXdDaEMsa0JBQWEsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBQzNDLGlCQUFZLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUN4QyxhQUFRLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUNuQyxtQkFBYyxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7UUFDekMsYUFBUSxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7UUFDbkMsb0JBQWUsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBQzFDLG9CQUFlLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUV2RCxlQUFVLEdBQUcsNkJBQTZCLENBQUE7UUFDMUMsd0JBQW1CLEdBQUcsa0JBQWtCLENBQUM7UUFDekMsNEJBQXVCLEdBQUcsc0JBQXNCLENBQUM7UUFDakQsMEJBQXFCLEdBQUcsbUJBQW1CLENBQUM7UUFDNUMsZUFBVSxHQUFXLEVBQUUsQ0FBQztRQUN4QixZQUFPLEdBQVUsRUFBRSxDQUFDO1FBQ3BCLFlBQU8sR0FBRyxJQUFJLFdBQVcsRUFBRSxDQUFDO1FBQzVCLGlCQUFZLEdBQVksS0FBSyxDQUFDO1FBQzlCLGdCQUFXLEdBQVcsRUFBRSxDQUFDO1FBQ3pCLHFCQUFnQixHQUFZLEtBQUssQ0FBQztRQUNsQyxVQUFLLEdBQVcsRUFBRSxDQUFDO1FBQ25CLGtCQUFhLEdBQUcsS0FBSyxDQUFDO1FBQ3RCLFlBQU8sR0FBWSxLQUFLLENBQUM7UUFDekIsU0FBSSxHQUFXLE1BQU0sQ0FBQztRQUN0QixpQkFBWSxHQUFVLEVBQUUsQ0FBQztRQUN6Qix1QkFBa0IsR0FBRyxDQUFDLENBQUM7UUFDdkIsYUFBUSxHQUFXLEVBQUUsQ0FBQztRQUN0QixtQkFBYyxHQUFZLEtBQUssQ0FBQztRQUNoQyxnQkFBVyxHQUFZLEtBQUssQ0FBQztRQUM3QiwyQkFBc0IsR0FBa0IsSUFBSSxDQUFDO1FBQzdDLGdCQUFXLEdBQVcsQ0FBQyxDQUFDO1FBQ3hCLGFBQVEsR0FBRyxFQUFFLENBQUM7UUFxU2Qsb0JBQWUsR0FBRyxLQUFLLENBQUM7UUE0RnhCLGtCQUFhLEdBQUcsQ0FBQyxNQUFXLEVBQUUsRUFBRTtZQUM5QixNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDbEMsTUFBTSxjQUFjLEdBQWEsRUFBRSxDQUFDO1lBRXBDLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUU7Z0JBQy9CLElBQUksR0FBRyxFQUFFO29CQUNQLE9BQU8sQ0FBQyxLQUFLLENBQUMsd0JBQXdCLEVBQUUsR0FBRyxDQUFDLENBQUM7aUJBQzlDO2dCQUVELElBQUksQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDO2dCQUM3QixJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7Z0JBQ3RCLE9BQU87WUFDVCxDQUFDLENBQUMsQ0FBQztZQUVILE9BQU8sSUFBSSxjQUFjLENBQUM7Z0JBQ3hCLEtBQUssRUFBRSxDQUFDLFVBQVUsRUFBRSxFQUFFO29CQUNwQixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLE1BQU0sRUFBRSxjQUFjLENBQUMsQ0FBQztnQkFDdkQsQ0FBQzthQUNGLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQztRQThaRixtQkFBYyxHQUFZLEtBQUssQ0FBQztRQWh5QjlCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFckMsMkJBQTJCO1FBQzNCLDZCQUE2QjtRQUM3QixJQUFJO0lBRU4sQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUM7UUFFbkUseUNBQXlDO1FBQ3pDLDJDQUEyQztRQUUzQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3pDLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQyxTQUFTLENBQzdCLENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDTixJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxDQUFDO1lBRXhCLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLFNBQVMsQ0FDL0IsQ0FBQyxRQUFRLEVBQUUsRUFBRTtnQkFDWCxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztnQkFDckIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDOUIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUMxQixDQUFDLEVBQ0QsQ0FBQyxHQUFHLEVBQUUsRUFBRTtnQkFDTixPQUFPLENBQUMsS0FBSyxDQUFDLDhCQUE4QixFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQ3JELENBQUMsQ0FDRixDQUFDO1FBQ0osQ0FBQyxFQUNELENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDTixPQUFPLENBQUMsS0FBSyxDQUFDLDhCQUE4QixFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ3JELENBQUMsQ0FDRixDQUFDO1FBQ0YsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ25CLElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVELGlCQUFpQixDQUFDLGNBQXNCO1FBQ3RDLElBQUksSUFBSSxDQUFDLE9BQU87WUFBRSxPQUFPO1FBQ3pCLElBQUksQ0FBQyxXQUFXLEdBQUcsY0FBYyxDQUFDO1FBQ2xDLE1BQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsdUJBQXVCLENBQUMsQ0FBQTtRQUMvRCwwQ0FBMEM7UUFDMUMsT0FBTyxhQUFQLE9BQU8sdUJBQVAsT0FBTyxDQUFFLFNBQVMsQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUU7UUFFN0QsUUFBUSxjQUFjLEVBQUU7WUFDdEIsS0FBSyxDQUFDO2dCQUNKLE9BQU8sYUFBUCxPQUFPLHVCQUFQLE9BQU8sQ0FBRSxTQUFTLENBQUMsR0FBRyxDQUFDLFVBQVUsRUFBRTtnQkFDbkMsTUFBTTtZQUNSLEtBQUssQ0FBQztnQkFDSixPQUFPLGFBQVAsT0FBTyx1QkFBUCxPQUFPLENBQUUsU0FBUyxDQUFDLEdBQUcsQ0FBQyxVQUFVLEVBQUU7Z0JBQ25DLE1BQU07WUFDUixLQUFLLENBQUM7Z0JBQ0osT0FBTyxhQUFQLE9BQU8sdUJBQVAsT0FBTyxDQUFFLFNBQVMsQ0FBQyxHQUFHLENBQUMsU0FBUyxFQUFFO2dCQUNsQyxNQUFNO1lBQ1I7Z0JBQ0UsTUFBTTtTQUNUO0lBQ0gsQ0FBQztJQUVELFlBQVk7UUFDVixJQUFJLElBQUksQ0FBQyxPQUFPO1lBQUUsT0FBTztRQUN6QixJQUFJLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQztRQUM1QixJQUFJLENBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztRQUNsQixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQztZQUNoQixJQUFJLEVBQUUsSUFBSTtZQUNWLE9BQU8sRUFDTCxJQUFJLENBQUMsV0FBVztnQkFDaEIsSUFBSSxDQUFDLGNBQWMsQ0FDakIsZ0dBQWdHLENBQ2pHO1lBQ0gsSUFBSSxFQUFFLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO1NBQy9CLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ3RDLENBQUM7SUFFRCxnQkFBZ0I7UUFDZCxNQUFNLE9BQU8sR0FBRyxJQUFJLFdBQVcsQ0FBQztZQUM5QixjQUFjLEVBQUUsa0JBQWtCO1lBQ2xDLFdBQVcsRUFBRSxJQUFJLENBQUMsTUFBTTtTQUN6QixDQUFDLENBQUM7UUFDSCxNQUFNLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxzQkFBc0IsSUFBSSxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDMUYsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQzlDLFNBQVMsQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFO1lBQ3JCLE9BQU8sRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2pCLENBQUMsQ0FBQyxFQUNGLFVBQVUsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ25CLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2xCLENBQUMsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDO0lBRUQsY0FBYztRQUNaLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO1FBQ3BCLE1BQU0sR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLGdCQUFnQixJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDckUsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQzVCLFNBQVMsQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFOztZQUNyQixJQUFJLENBQUMsT0FBTyxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUM7WUFDeEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDO1lBQ3hCLElBQUksQ0FBQyxTQUFTLEdBQUcsR0FBRyxhQUFILEdBQUcsdUJBQUgsR0FBRyxDQUFFLE1BQU0sQ0FBQztZQUM3QixJQUFJLENBQUMsV0FBVyxHQUFHLEdBQUcsQ0FBQyxRQUFRLENBQUM7WUFFaEMsSUFBSSxDQUFDLGtCQUFrQixHQUFHLE9BQUEsR0FBRyxhQUFILEdBQUcsdUJBQUgsR0FBRyxDQUFFLGlCQUFpQiwwQ0FBRSxNQUFNLEVBQ3RELENBQUMsQ0FBQyxHQUFHLENBQUMsaUJBQWlCO2dCQUN2QixDQUFDLENBQUM7b0JBQ0Esd1RBQXdUO2lCQUN6VCxDQUFDO1lBQ0osSUFBSSxDQUFDLFlBQVksR0FBRyxHQUFHLENBQUMsWUFBWSxDQUFDO1lBQ3JDLElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDeEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7WUFDckIsT0FBTyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDakIsQ0FBQyxDQUFDLEVBQ0YsVUFBVSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDbkIsT0FBTyxDQUFDLEtBQUssQ0FBQyxpQ0FBaUMsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUN4RCxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztZQUNyQixPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNsQixDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQztJQUVELGdCQUFnQjtRQUNkLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO1FBQ3BCLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzVELE1BQU0sR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLGtCQUFrQixJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDakYsTUFBTSxPQUFPLEdBQUcsSUFBSSxXQUFXLENBQUM7WUFDOUIsUUFBUSxFQUFFLGtCQUFrQjtTQUM3QixDQUFDLENBQUM7UUFFSCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUMsSUFBSSxDQUN6QyxVQUFVLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBTSxtQkFBbUIsQ0FBQyxDQUFDLENBQ3ZELENBQUM7SUFDSixDQUFDO0lBRU8sV0FBVyxDQUFJLFNBQVMsR0FBRyxXQUFXLEVBQUUsTUFBVTtRQUN4RCxPQUFPLENBQUMsS0FBVSxFQUFpQixFQUFFO1lBQ25DLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxTQUFTLFlBQVksS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7WUFDdkQsT0FBTyxFQUFFLENBQUMsTUFBVyxDQUFDLENBQUM7UUFDekIsQ0FBQyxDQUFDO0lBQ0osQ0FBQztJQUNELHVCQUF1QjtJQUN2Qix5QkFBeUI7SUFDekIsc0NBQXNDO0lBQ3RDLDBDQUEwQztJQUMxQyxnQ0FBZ0M7SUFDaEMsUUFBUTtJQUNSLHFCQUFxQjtJQUNyQiw4RkFBOEY7SUFDOUYsYUFBYTtJQUNiLGtDQUFrQztJQUNsQyxnQ0FBZ0M7SUFDaEMsMEJBQTBCO0lBQzFCLFlBQVk7SUFDWixxQ0FBcUM7SUFDckMsaUVBQWlFO0lBQ2pFLGdDQUFnQztJQUNoQywyQkFBMkI7SUFDM0IsV0FBVztJQUNYLFNBQVM7SUFDVCxJQUFJO0lBRUosY0FBYyxDQUFDLEtBQVU7O1FBQ3ZCLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDO1lBQ2hCLElBQUksRUFBRSxJQUFJO1lBQ1YsT0FBTyxFQUNMLElBQUksQ0FBQyxXQUFXO2dCQUNoQixJQUFJLENBQUMsY0FBYyxDQUNqQixnR0FBZ0csQ0FDakc7WUFDSCxJQUFJLEVBQUUsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7U0FDL0IsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxLQUFLLFdBQUksS0FBSyxhQUFMLEtBQUssdUJBQUwsS0FBSyxDQUFFLFFBQVEsMENBQUUsTUFBTSxDQUFBLEVBQUU7WUFDcEMsS0FBSyxhQUFMLEtBQUssdUJBQUwsS0FBSyxDQUFFLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFTLEVBQUUsRUFBRTtnQkFDcEMsSUFBSSxJQUFJLENBQUMsSUFBSSxJQUFJLE1BQU0sRUFBRTtvQkFDdkIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUM7d0JBQ2hCLElBQUksRUFBRSxNQUFNO3dCQUNaLE9BQU8sRUFBRSxJQUFJLENBQUMsd0JBQXdCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQzt3QkFDakQsSUFBSSxFQUFFLGdCQUFnQixDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQzt3QkFDM0QsTUFBTSxFQUFFLEtBQUs7cUJBQ2QsQ0FBQyxDQUFDO2lCQUNKO2dCQUNELElBQUksSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLEVBQUU7b0JBQ3JCLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDO3dCQUNoQixJQUFJLEVBQUUsSUFBSTt3QkFDVixPQUFPLEVBQUUsSUFBSSxDQUFDLHdCQUF3QixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7d0JBQ2pELElBQUksRUFBRSxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxlQUFlLENBQUM7d0JBQzNELE1BQU0sRUFBRSxLQUFLO3FCQUNkLENBQUMsQ0FBQztvQkFDSCxJQUFJLENBQUMsc0JBQXNCLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO2lCQUN2RDtZQUNILENBQUMsRUFBRTtZQUNILElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDO1NBQzVCO1FBQ0QsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVELGNBQWMsQ0FBQyxPQUFlO1FBQzVCLElBQUksQ0FBQyxPQUFPLElBQUksQ0FBQyxDQUFDLENBQUEsT0FBTyxhQUFQLE9BQU8sdUJBQVAsT0FBTyxDQUFFLE1BQU0sSUFBRyxDQUFDLENBQUMsRUFBRTtZQUN0QyxPQUFPLEVBQUUsQ0FBQztTQUNYO1FBRUQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFBO1FBQ2pDLE9BQU8sQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFckIsT0FBTyxHQUFHLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUV6QixNQUFNLGlCQUFpQixHQUFHLHdCQUF3QixDQUFDO1FBQ25ELE1BQU0sUUFBUSxHQUFHLHdDQUF3QyxDQUFDO1FBRTFELElBQUksaUJBQWlCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ25DLE1BQU0sSUFBSSxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQzFCLGlCQUFpQixFQUNqQixxQ0FBcUMsQ0FDdEMsQ0FBQztZQUNGLE9BQU8sQ0FBQyxHQUFHLENBQUMscUJBQXFCLEVBQUUsT0FBTyxDQUFDLENBQUM7WUFDNUMsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ2hDO1FBRUQsSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQzFCLE1BQU0sSUFBSSxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQzFCLFFBQVEsRUFDUixxQ0FBcUMsQ0FDdEMsQ0FBQztZQUNGLE9BQU8sQ0FBQyxHQUFHLENBQUMscUJBQXFCLEVBQUUsT0FBTyxDQUFDLENBQUM7WUFDNUMsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ2hDO1FBRUQsT0FBTyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsaUJBQWlCLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFFckQsT0FBTyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLEVBQUUscUJBQXFCLENBQUMsQ0FBQztRQUNuRSwyQ0FBMkM7UUFDM0MsT0FBTyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMscUJBQXFCLEVBQUUsQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxFQUFFO1lBQ3ZFLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUM7WUFDNUIsT0FBTyxLQUFLLEtBQUssSUFBSSxJQUFJLE1BQU0sS0FBSyxHQUFHLENBQUM7UUFDMUMsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3hCLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNwRCxPQUFPLGdCQUFnQixDQUFDO0lBQzFCLENBQUM7SUFFRCxrQkFBa0I7UUFDaEIsTUFBTSxhQUFhLEdBQ2pCLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLGdCQUFnQixDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDbkUsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQVMsRUFBRSxFQUFFO1lBQ2xDLElBQUksQ0FBQyxnQkFBZ0IsQ0FDbkIsT0FBTyxFQUNQLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxTQUFTLENBQUMsQ0FDM0MsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO1FBQ0gsdUVBQXVFO1FBQ3ZFLGtDQUFrQztRQUNsQyx1Q0FBdUM7UUFDdkMsOEVBQThFO1FBQzlFLElBQUk7SUFDTixDQUFDO0lBRUQsWUFBWSxDQUFDLElBQVk7UUFDdkIsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLHVCQUF1QixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFFRCxlQUFlLENBQUMsS0FBYTtRQUMzQixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRUQsT0FBTztRQUNMLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDakUsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRUQsbUJBQW1CLENBQUMsTUFBYztRQUNoQyxJQUFJLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQztRQUNwQixJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDakIsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQ3hCLENBQUM7SUFFRCxTQUFTOztRQUNQLElBQUksQ0FBQyxLQUFLLFNBQUcsSUFBSSxDQUFDLEtBQUssMENBQUUsSUFBSSxFQUFFLENBQUM7UUFDaEMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUMvQixPQUFPO1NBQ1I7UUFFRCxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQztZQUNoQixJQUFJLEVBQUUsTUFBTTtZQUNaLE9BQU8sRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7WUFDeEMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO1lBQzlCLE1BQU0sRUFBRSxLQUFLO1NBQ2QsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUV4QixJQUFJLENBQUMsVUFBVSxHQUFHLEVBQUUsQ0FBQztRQUNyQixJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQztRQUU1QixNQUFNLEdBQUcsR0FDUCxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxTQUFTLENBQUEsQ0FBQSxJQUFJO1FBQzNDLCtDQUErQztRQUMvQyxLQUFLLENBQUMsR0FBRyxFQUFFO1lBQ1QsTUFBTSxFQUFFLE1BQU07WUFDZCxPQUFPLEVBQUU7Z0JBQ1AsY0FBYyxFQUFFLGtCQUFrQjtnQkFDbEMsV0FBVyxFQUFFLElBQUksQ0FBQyxNQUFNO2FBQ3pCO1lBQ0QsSUFBSSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUM7Z0JBQ25CLGFBQWEsRUFBRSxJQUFJLENBQUMsS0FBSztnQkFDekIsT0FBTyxFQUFFLElBQUksQ0FBQyxNQUFNO2dCQUNwQixNQUFNLEVBQUUsSUFBSSxDQUFDLEtBQUs7Z0JBQ2xCLGlDQUFpQztnQkFDakMsMkJBQTJCO2dCQUMzQiw0QkFBNEI7Z0JBQzVCLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO2dCQUMxRCxlQUFlLEVBQUUsSUFBSSxDQUFDLGVBQWU7YUFDdEMsQ0FBQztTQUNILENBQUM7WUFDQSxzQ0FBc0M7YUFDckMsSUFBSSxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUU7WUFDakIsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMzQyxDQUFDLENBQUM7YUFDRCxLQUFLLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUNiLE9BQU8sQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQzVCLElBQUksQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDO1FBQy9CLENBQUMsQ0FBQyxDQUFDO1FBRUwsSUFBSSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7SUFDbEIsQ0FBQztJQUVELGNBQWM7UUFDWixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztRQUNwQixJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxDQUFDO1FBRXhCLE1BQU0sR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLG1CQUFtQixJQUFJLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUV2RixJQUFJLENBQUMsSUFBSTthQUNOLEdBQUcsQ0FBd0IsR0FBRyxFQUFFO1lBQy9CLE9BQU8sRUFBRTtnQkFDUCxXQUFXLEVBQUUsSUFBSSxDQUFDLE1BQU07YUFDekI7U0FDRixDQUFDO2FBQ0QsSUFBSSxDQUNILFVBQVUsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ25CLE9BQU8sQ0FBQyxLQUFLLENBQUMsa0NBQWtDLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFFekQsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbEIsQ0FBQyxDQUFDLENBQ0g7YUFDQSxTQUFTLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRTtZQUN0QixJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztZQUNyQixJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxDQUFDO1lBRXhCLElBQUksQ0FBQyxRQUFRLEVBQUU7Z0JBQ2IsT0FBTzthQUNSO1lBRUQsSUFBSSxRQUFRLElBQUksUUFBUSxDQUFDLFNBQVMsRUFBRTtnQkFDbEMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUM7b0JBQ2hCLElBQUksRUFBRSxJQUFJO29CQUNWLE9BQU8sRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUM7b0JBQ2hELElBQUksRUFBRSxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztvQkFDOUIsYUFBYSxFQUFFLElBQUk7aUJBQ3BCLENBQUMsQ0FBQztnQkFDSCxJQUFJLENBQUMsc0JBQXNCLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO2dCQUN0RCx5QkFBeUI7Z0JBQ3pCLElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLENBQUM7YUFDekI7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUF1QkQsSUFBSSxDQUFDLFVBQWUsRUFBRSxNQUFXLEVBQUUsY0FBd0I7UUFDekQsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBTyxFQUFFLEVBQUU7O1lBQzFDLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFFdkQsSUFBSSxJQUFJLEVBQUU7Z0JBQ1IsUUFBUSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsd0JBQXdCLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2dCQUNuRSxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDO2dCQUNuQixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDNUIsSUFBSSxjQUFjLGFBQWQsY0FBYyx1QkFBZCxjQUFjLENBQUUsTUFBTSxFQUFFO29CQUMxQixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQzt3QkFDaEIsSUFBSSxFQUFFLGFBQWE7d0JBQ25CLFdBQVcsRUFBRSxjQUFjO3FCQUM1QixDQUFDLENBQUE7aUJBQ0g7Z0JBRUQsVUFBVSxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUNuQixJQUFJLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQztnQkFDN0IseUJBQXlCO2dCQUN6QixJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxDQUFDO2dCQUN4QixJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQztnQkFFM0IscUJBQXFCO2dCQUNyQiwyQkFBMkI7Z0JBQzNCLFVBQVU7Z0JBQ1YsT0FBTzthQUNSO1lBRUQsSUFBSSxZQUFZLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7WUFDaEUsSUFBSSxDQUFDLFVBQVUsSUFBSSxZQUFZLENBQUM7WUFDaEMsSUFBSSxRQUFRLENBQUMsSUFBSSxLQUFLLElBQUksRUFBRTtnQkFDMUIsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO2dCQUNyRSxJQUFJLGdCQUFnQixFQUFFO29CQUNwQixnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTt3QkFDakMsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7d0JBQ3JELGNBQWMsQ0FBQyxJQUFJLENBQUMsS0FBSyxhQUFMLEtBQUssdUJBQUwsS0FBSyxDQUFFLE9BQU8sQ0FBQyxXQUFXLEVBQUUsRUFBRSxFQUFFLENBQUM7b0JBQ3ZELENBQUMsQ0FBQyxDQUFDO2lCQUNKO2dCQUVELFFBQVEsQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQztnQkFDbkMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQzthQUN6QjtpQkFBTTtnQkFDTCxJQUFJLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQztnQkFFN0IsSUFBSSxlQUFvQixDQUFDO2dCQUV6QixJQUFJO29CQUNGLE9BQU8sQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLENBQUE7b0JBQzVCLGVBQWUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUE7aUJBQzFEO2dCQUNELE9BQU8sQ0FBQyxFQUFFO29CQUNSLElBQUk7d0JBQ0YsT0FBTyxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFBO3dCQUM3QixlQUFlLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUE7cUJBQzlDO29CQUFDLE9BQU8sQ0FBQyxFQUFFLEdBQUc7aUJBQ2hCO2dCQUVELE9BQU8sQ0FBQyxHQUFHLENBQUMsbUJBQW1CLENBQUMsQ0FBQTtnQkFFaEMsSUFBSSxlQUFlLElBQUksT0FBQSxlQUFlLGFBQWYsZUFBZSx1QkFBZixlQUFlLENBQUUsVUFBVSwwQ0FBRSxNQUFNLElBQUcsQ0FBQyxFQUFFO29CQUM5RCxJQUFJLGVBQWUsQ0FBQyxVQUFVLElBQUksZ0JBQWdCLElBQUksZUFBZSxDQUFDLFVBQVUsSUFBSSxhQUFhLElBQUksZUFBZSxDQUFDLFVBQVUsSUFBSSx5QkFBeUIsRUFBRTt3QkFDNUosSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUMsU0FBUyxFQUFFLENBQUM7d0JBQ3RDLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDLFNBQVMsRUFBRSxDQUFDO3FCQUN6QztvQkFFRCxJQUFJLGVBQWUsQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDLHVCQUF1QixFQUFFO3dCQUM5RCxJQUFJLFVBQVUsR0FBRyxFQUFFLENBQUM7d0JBQ3BCLE1BQUEsZUFBZSxDQUFDLE9BQU8sMENBQUUsT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFOzRCQUN6QyxVQUFVLEdBQUcsQ0FBQyxHQUFHLFVBQVUsRUFBRSxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQTt3QkFDbkQsQ0FBQyxFQUFFO3dCQUVILElBQUksQ0FBQSxVQUFVLGFBQVYsVUFBVSx1QkFBVixVQUFVLENBQUUsTUFBTSxJQUFHLENBQUM7NEJBQ3hCLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxVQUFVLENBQUMsQ0FBQztxQkFDMUM7b0JBRUQsSUFBSSxlQUFlLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxtQkFBbUIsSUFBSSxPQUFBLGVBQWUsQ0FBQyxPQUFPLDBDQUFFLE1BQU0sSUFBRyxDQUFDLEVBQUU7d0JBQ2pHLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDOzRCQUNqQixTQUFTLEVBQUUsZUFBZSxDQUFDLFVBQVU7NEJBQ3JDLFVBQVUsRUFBRSxlQUFlLENBQUMsT0FBTzt5QkFDcEMsQ0FBQyxDQUFBO3FCQUNIO29CQUVELElBQUksZUFBZSxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUMscUJBQXFCLEVBQUU7d0JBQzVELElBQUksUUFBUSxTQUFHLGVBQWUsQ0FBQyxPQUFPLDBDQUFFLE1BQU0sQ0FBQzt3QkFDL0MsSUFBSSxRQUFRLEdBQUcsQ0FBQyxFQUFFOzRCQUNoQixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQztnQ0FDakIsU0FBUyxFQUFFLHdCQUF3QjtnQ0FDbkMsTUFBTSxFQUFFLGVBQWUsQ0FBQyxPQUFPOzZCQUNoQyxDQUFDLENBQUE7eUJBQ0g7NkJBQ0ksSUFBSSxRQUFRLElBQUksQ0FBQyxFQUFFOzRCQUN0QixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQztnQ0FDakIsU0FBUyxFQUFFLGVBQWUsQ0FBQyxVQUFVO2dDQUNyQyxhQUFhLEVBQUUsQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQzs2QkFDbkQsQ0FBQyxDQUFBO3lCQUNIO3FCQUNGO29CQUVELElBQUksZUFBZSxDQUFDLFlBQVksSUFBSSxNQUFNLEVBQUU7d0JBQzFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDOzRCQUNqQixTQUFTLEVBQUUsZUFBZSxDQUFDLFVBQVU7NEJBQ3JDLE1BQU0sRUFBRSxlQUFlLENBQUMsT0FBTzt5QkFDaEMsQ0FBQyxDQUFDO3dCQUVILElBQUksSUFBSSxDQUFDLGVBQWUsRUFBRSxFQUFFOzRCQUMxQixlQUFlLENBQUMsT0FBTyxJQUFJLE1BQU0sR0FBRyxvREFBb0QsQ0FBQTt5QkFDekY7cUJBQ0Y7b0JBSUQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUM7d0JBQ2hCLElBQUksRUFBRSxJQUFJO3dCQUNWLE9BQU8sRUFBRSxlQUFlLENBQUMsT0FBTzt3QkFDaEMsTUFBTSxFQUFFLGVBQWU7d0JBQ3ZCLElBQUksRUFBRSxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztxQkFDL0IsQ0FBQyxDQUFDO29CQUVILElBQUksSUFBSSxDQUFDLGVBQWUsRUFBRSxFQUFFO3dCQUMxQixVQUFVLENBQUMsR0FBRyxFQUFFOzRCQUNkLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO3dCQUMvQixDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7cUJBQ1Q7b0JBRUQsSUFBSSxDQUFDLFVBQVUsR0FBRyxFQUFFLENBQUM7aUJBQ3RCO3FCQUFNO29CQUNMLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDO3dCQUNoQixJQUFJLEVBQUUsSUFBSTt3QkFDVixPQUFPLEVBQUUsSUFBSSxDQUFDLFVBQVU7d0JBQ3hCLElBQUksRUFBRSxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztxQkFDL0IsQ0FBQyxDQUFDO2lCQUNKO2dCQUVELElBQUksQ0FBQyxzQkFBc0IsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7Z0JBQ3RELElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLENBQUM7YUFDekI7WUFFRCxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7WUFFdEIscURBQXFEO1lBQ3JELFVBQVUsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDMUIsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsTUFBTSxFQUFFLGNBQWMsQ0FBQyxDQUFDO1FBQ2hELENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELGNBQWMsQ0FBQyxJQUFhO1FBQzFCLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxJQUFJLENBQUM7UUFDbkMsTUFBTSxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsZUFBZSxDQUFDO1FBQ3hELEtBQUssQ0FBQyxHQUFHLEVBQUU7WUFDVCxNQUFNLEVBQUUsTUFBTTtZQUNkLE9BQU8sRUFBRTtnQkFDUCxjQUFjLEVBQUUsa0JBQWtCO2dCQUNsQyxXQUFXLEVBQUUsSUFBSSxDQUFDLE1BQU07YUFDekI7WUFDRCxJQUFJLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1NBQ3pFLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFO1lBQ1gsSUFBSSxJQUFJLEVBQUU7Z0JBQ1IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUM7b0JBQ2hCLElBQUksRUFBRSxJQUFJO29CQUNWLE9BQU8sRUFDTCxJQUFJLENBQUMsZUFBZTt3QkFDcEIsNkNBQTZDO29CQUMvQyxJQUFJLEVBQUUsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7b0JBQzlCLGFBQWEsRUFBRSxJQUFJO2lCQUNwQixDQUFDLENBQUM7Z0JBRUgsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO2dCQUN0QixJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxDQUFDO2dCQUN4QixJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQztnQkFDMUIsSUFBSSxDQUFDLHNCQUFzQixHQUFHLElBQUksQ0FBQztnQkFDbkMsT0FBTzthQUNSO1lBRUQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUM7Z0JBQ2hCLElBQUksRUFBRSxJQUFJO2dCQUNWLE9BQU8sRUFBRSxJQUFJLENBQUMsY0FBYyxDQUMxQixJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQ2pEO2dCQUNELElBQUksRUFBRSxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztnQkFDOUIsYUFBYSxFQUFFLElBQUk7YUFDcEIsQ0FBQyxDQUFDO1lBQ0gsSUFBSSxDQUFDLGtCQUFrQjtnQkFDckIsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLE1BQU0sQ0FBQztZQUNqRSxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDdEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUN4QixJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQztZQUMxQixJQUFJLENBQUMsc0JBQXNCLEdBQUcsSUFBSSxDQUFDO1FBQ3JDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFlBQVk7UUFDVixJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDakIsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQ3hCLENBQUM7SUFFRCxhQUFhLENBQUMsR0FBUTtRQUNwQixJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUU7WUFDckIsT0FBTztTQUNSO1FBRUQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMxQixJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDO1FBRW5ELElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLEVBQUU7WUFDN0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQztTQUN4RDtRQUVELElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVELGVBQWUsQ0FBQyxHQUFRO1FBQ3RCLElBQUksSUFBSSxDQUFDLFlBQVk7WUFBRSxPQUFPO1FBQzlCLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDM0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQztRQUN2RCxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSztZQUN6QixJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDO0lBQ3ZELENBQUM7SUFDRCxlQUFlLENBQUMsS0FBVTtRQUN4QixvQ0FBb0M7UUFDcEMsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLENBQUM7UUFDbEQsU0FBUyxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRTtZQUNyRCx1Q0FBdUM7WUFDdkMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO1lBQ2xDLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDekIsdUNBQXVDO1lBQ3ZDLFVBQVUsQ0FBQyxHQUFHLEVBQUU7Z0JBQ2QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO2dCQUNuQyxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQzNCLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLHdCQUF3QjtRQUNwQyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxjQUFjO1FBQ1osSUFBSSxPQUFPLEdBQUcsQ0FBQyxDQUFDO1FBQ2hCLE1BQU0sUUFBUSxHQUFHLFdBQVcsQ0FBQyxHQUFHLEVBQUU7WUFDaEMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsU0FBUztnQkFDbkMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDO1lBQzNDLElBQUksT0FBTyxFQUFFLEdBQUcsQ0FBQztnQkFBRSxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDN0MsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ1IsQ0FBQztJQUVELFlBQVksQ0FBQyxNQUFXO1FBQ3RCLE9BQU8sQ0FBQyxJQUFJLENBQUMscUNBQXFDLENBQUMsQ0FBQTtRQUNuRCxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFBO1FBRXBCLElBQUksTUFBTSxhQUFOLE1BQU0sdUJBQU4sTUFBTSxDQUFFLE9BQU8sRUFBRTtTQUVwQjtJQUNILENBQUM7SUFFRCxlQUFlO1FBQ2IsZ0ZBQWdGO1FBQ2hGLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUU7WUFDdEIsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1NBQ3hCO1FBRUQseURBQXlEO1FBQ3pELElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQWUsRUFBRSxFQUFFO1lBQ3JELElBQUksTUFBTSxFQUFFO2dCQUNWLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQzthQUN4QjtpQkFBTTtnQkFDTCxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQzthQUMzQjtRQUNILENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7WUFDNUMsSUFBSSxNQUFNLEVBQUU7Z0JBQ1YsVUFBVSxDQUFDLEdBQUcsRUFBRTtvQkFDZCxJQUFJLElBQUksQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLEVBQUU7d0JBQ3BELElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsd0JBQXdCO3FCQUNoRTtnQkFDSCxDQUFDLENBQUMsQ0FBQzthQUNKO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU8sZUFBZTtRQUNyQixJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQ2hFLENBQUM7SUFFTyxrQkFBa0I7UUFDeEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUNuRSxDQUFDO0lBRUQscUJBQXFCLENBQUMsR0FBRztRQUN2QixNQUFNLEdBQUcsR0FDUCxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxXQUFXLElBQUksQ0FBQyxPQUFPLHlCQUF5QixDQUFBO1FBQy9FLEtBQUssQ0FBQyxHQUFHLEVBQUU7WUFDVCxNQUFNLEVBQUUsTUFBTTtZQUNkLE9BQU8sRUFBRTtnQkFDUCxjQUFjLEVBQUUsa0JBQWtCO2dCQUNsQyxlQUFlLEVBQUUsU0FBUyxHQUFHLGlCQUFpQjthQUMvQztZQUNELElBQUksRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQztTQUMxQixDQUFDO2FBQ0MsSUFBSSxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUU7WUFDakIsSUFBSSxRQUFRLENBQUMsRUFBRSxFQUFFO2dCQUNmLE9BQU8sUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsc0NBQXNDO2FBQy9EO2lCQUFNO2dCQUNMLE1BQU0sSUFBSSxLQUFLLENBQUMsOEJBQThCLENBQUMsQ0FBQzthQUNqRDtRQUNILENBQUMsQ0FBQzthQUNELElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQ2IsSUFBSSxDQUFBLElBQUksYUFBSixJQUFJLHVCQUFKLElBQUksQ0FBRSxNQUFNLElBQUcsQ0FBQyxFQUFFO2dCQUNwQixJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFO29CQUNyQixJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsR0FBRyxPQUFPLENBQUM7Z0JBQ3RDLENBQUMsQ0FBQyxDQUFDO2dCQUVILElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLENBQUM7YUFDekI7UUFDSCxDQUFDLENBQUM7YUFDRCxLQUFLLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUNiLE9BQU8sQ0FBQyxLQUFLLENBQUMsc0JBQXNCLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDM0MsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7UUFDdkIsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsb0JBQW9CLENBQUMsU0FBUyxFQUFFLE1BQU07UUFDcEMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUM7WUFDdkIsU0FBUztZQUNULE1BQU07U0FDUCxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQscUJBQXFCO1FBQ25CLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUM1RSxJQUFJLE9BQU8sRUFBRTtZQUNYLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFO2dCQUMxQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ3ZCLENBQUMsQ0FBQyxDQUFDO1NBQ0o7SUFDSCxDQUFDO0lBRUQsZUFBZTtRQUNiLE9BQU8sZ0VBQWdFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNwRyxDQUFDO0lBRUQsYUFBYSxDQUFDLE1BQU07UUFDbEIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUM7WUFDeEIsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUM7WUFDcEMsTUFBTTtTQUNQLENBQUMsQ0FBQztRQUVILFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDZCxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEVBQUU7Z0JBQ3hDLElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDMUIsQ0FBQyxDQUFDLENBQUM7WUFDSCxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEVBQUU7Z0JBQzFDLElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDMUIsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDVixDQUFDO0lBRUQsdUJBQXVCLENBQUMsSUFBSTtRQUMxQixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRUQsVUFBVSxDQUFDLE1BQU07UUFDZixPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxJQUFJLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxDQUFDLENBQUE7SUFDckYsQ0FBQztJQUVELGFBQWEsQ0FBQyxNQUFNO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxJQUFJLE1BQU0sQ0FBQyxDQUFBO0lBQy9ELENBQUM7SUFFRCxvQkFBb0I7UUFDbEIsTUFBTSxPQUFPLEdBQUcsSUFBSSxXQUFXLENBQUM7WUFDOUIsY0FBYyxFQUFFLGtCQUFrQjtZQUNsQyxRQUFRLEVBQUUsSUFBSSxDQUFDLFVBQVU7U0FDMUIsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxJQUFJLENBQUMsSUFBSTthQUNiLEdBQUcsQ0FDRixHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxXQUFXLElBQUksQ0FBQyxPQUFPLDZEQUE2RCxJQUFJLENBQUMsTUFBTSxFQUFFLEVBQzlILEVBQUUsT0FBTyxFQUFFLENBQ1o7YUFDQSxJQUFJLENBQ0gsU0FBUyxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUU7WUFDckIsSUFBSSxDQUFDLGVBQWUsR0FBRyxHQUFHLENBQUM7WUFDM0IsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUN4QixPQUFPLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNqQixDQUFDLENBQUMsRUFDRixVQUFVLENBQUMsQ0FBQyxLQUFVLEVBQUUsRUFBRTtZQUN4QixPQUFPLENBQUMsS0FBSyxDQUFDLG1DQUFtQyxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQzFELE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2xCLENBQUMsQ0FBQyxDQUNILENBQUM7SUFDTixDQUFDO0lBRUQsa0JBQWtCO1FBQ2hCLE1BQU0sT0FBTyxHQUFHLElBQUksV0FBVyxDQUFDO1lBQzlCLGNBQWMsRUFBRSxrQkFBa0I7WUFDbEMsUUFBUSxFQUFFLElBQUksQ0FBQyxVQUFVO1NBQzFCLENBQUMsQ0FBQztRQUNILE9BQU8sSUFBSSxDQUFDLElBQUk7YUFDYixHQUFHLENBQ0YsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsV0FBVyxJQUFJLENBQUMsT0FBTyxxQ0FBcUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxFQUN0RyxFQUFFLE9BQU8sRUFBRSxDQUNaO2FBQ0EsSUFBSSxDQUNILFNBQVMsQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFO1lBQ3JCLElBQUksQ0FBQyxhQUFhLEdBQUcsR0FBRyxDQUFDO1lBQ3pCLElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDeEIsT0FBTyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDakIsQ0FBQyxDQUFDLEVBQ0YsVUFBVSxDQUFDLENBQUMsS0FBVSxFQUFFLEVBQUU7WUFDeEIsT0FBTyxDQUFDLEtBQUssQ0FBQyxtQ0FBbUMsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUMxRCxPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNsQixDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ04sQ0FBQztJQUtELGlDQUFpQztJQUNqQyxjQUFjO1FBQ1osSUFBSSxDQUFDLGNBQWMsR0FBRyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUM7SUFDN0MsQ0FBQztJQUVELFdBQVcsQ0FBQyxLQUFZOztRQUN0QixNQUFNLFVBQVUsR0FBSSxLQUFLLENBQUMsTUFBMkIsQ0FBQyxPQUFPLENBQUM7UUFDOUQsSUFBSSxVQUFVO1lBQ1osTUFBQSxJQUFJLENBQUMsTUFBTSwwQ0FBRSxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsUUFBUSxHQUFHLEtBQUssRUFBRTtJQUMxRCxDQUFDO0lBRUQsYUFBYSxDQUFDLEtBQVU7UUFDdEIsbUNBQW1DO1FBQ25DLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUVELGNBQWM7O1FBQ1osYUFBTyxJQUFJLENBQUMsTUFBTSwwQ0FBRSxLQUFLLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUU7SUFDdEQsQ0FBQztJQUVELHFCQUFxQjs7UUFDbkIsTUFBTSxjQUFjLFNBQUcsSUFBSSxDQUFDLE1BQU0sMENBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3BFLElBQUksY0FBYyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7WUFDL0IsT0FBTyxLQUFLLENBQUM7U0FDZDthQUFNO1lBQ0wsT0FBTyxHQUFHLGNBQWMsQ0FBQyxNQUFNLFdBQVcsQ0FBQztTQUM1QztJQUNILENBQUM7SUFDRCxnQkFBZ0I7UUFDZCxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztRQUNwQixNQUFNLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxZQUFZLElBQUksQ0FBQyxLQUFLLGdCQUFnQixDQUFDO1FBQ2pGLE1BQU0sT0FBTyxHQUFHLElBQUksV0FBVyxDQUFDO1lBQzlCLGNBQWMsRUFBRSxrQkFBa0I7U0FDbkMsQ0FBQyxDQUFDO1FBRUgsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQzlDLFNBQVMsQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFO1lBQ3JCLElBQUksR0FBRyxFQUFFO2dCQUNQLElBQUksQ0FBQyxNQUFNLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLGlDQUMxQixLQUFLLEtBQ1IsUUFBUSxFQUFFLEtBQUssSUFDZixDQUFDLENBQUM7YUFDTDtZQUNELElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLENBQUM7WUFFeEIsT0FBTyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDakIsQ0FBQyxDQUFDLEVBQ0YsVUFBVSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDbkIsT0FBTyxDQUFDLEtBQUssQ0FBQyxpQ0FBaUMsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUV4RCxPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNsQixDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQztJQUdELFdBQVc7UUFDVCxJQUFJLENBQUMsZ0JBQWdCLEVBQUU7YUFDcEIsU0FBUyxFQUFFLENBQUM7SUFDakIsQ0FBQztJQUlELHNDQUFzQztJQUN0Qyx3QkFBd0IsQ0FBQyxRQUFnQjtRQUN2QyxJQUFJLENBQUMsUUFBUSxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxFQUFFO1lBQ3ZDLE9BQU8sQ0FBQyxLQUFLLENBQUMsaUNBQWlDLENBQUMsQ0FBQztZQUNqRCxPQUFPLEVBQUUsQ0FBQztTQUNYO1FBRUQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUV6QywyQ0FBMkM7UUFDM0MsSUFBSSxJQUFJLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxxQkFBcUIsRUFBRSxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLEVBQUU7WUFDekUsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQztZQUM1QixPQUFPLEtBQUssS0FBSyxJQUFJLElBQUksTUFBTSxLQUFLLEdBQUcsQ0FBQztRQUMxQyxDQUFDLENBQUMsQ0FBQztRQUVILE9BQU8sQ0FBQyxHQUFHLENBQUMsMEJBQTBCLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFFOUMsdUNBQXVDO1FBQ3ZDLElBQUksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLHlCQUF5QixFQUFFLHFDQUFxQyxDQUFDLENBQUM7UUFFdEYsT0FBTyxDQUFDLEdBQUcsQ0FBQyx3QkFBd0IsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUU1Qyx1Q0FBdUM7UUFDdkMsSUFBSSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLEVBQUUscUJBQXFCLENBQUMsQ0FBQztRQUU3RCxPQUFPLENBQUMsR0FBRyxDQUFDLHdCQUF3QixFQUFFLElBQUksQ0FBQyxDQUFDO1FBRTVDLGlDQUFpQztRQUNqQyxJQUFJLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUUvQyxPQUFPLENBQUMsR0FBRyxDQUFDLCtCQUErQixFQUFFLElBQUksQ0FBQyxDQUFDO1FBRW5ELDZDQUE2QztRQUM3QyxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRTlDLE9BQU8sQ0FBQyxHQUFHLENBQUMsaUJBQWlCLEVBQUUsYUFBYSxDQUFDLENBQUM7UUFFOUMsT0FBTyxhQUFhLENBQUM7SUFDdkIsQ0FBQzs7O1lBNStCRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLHFCQUFxQjtnQkFDL0IsaXQrQ0FBMkM7Z0JBRTNDLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNOzthQUNoRDs7O1lBeEJDLGlCQUFpQjtZQUhWLFVBQVU7WUFjVixZQUFZO1lBVG5CLFVBQVU7WUFLVixTQUFTO1lBU0YsbUJBQW1COzs7dUJBVXpCLFNBQVMsU0FBQyxVQUFVO3FCQUVwQixTQUFTLFNBQUMsUUFBUTt5QkFFbEIsU0FBUyxTQUFDLFlBQVksRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7MEJBR3pDLEtBQUs7d0JBQ0wsS0FBSzt1QkFDTCxLQUFLO3FCQUNMLEtBQUs7eUJBQ0wsS0FBSzsyQkFDTCxLQUFLO3lCQUNMLEtBQUs7c0JBQ0wsS0FBSzt3QkFDTCxLQUFLO29CQUNMLEtBQUs7K0JBQ0wsS0FBSztpQ0FDTCxLQUFLOzBCQUNMLEtBQUs7NEJBQ0wsS0FBSzs0QkFDTCxLQUFLO3NCQUNMLEtBQUs7MkJBQ0wsS0FBSzt3QkFDTCxLQUFLO3NCQUNMLEtBQUs7K0JBQ0wsS0FBSztpQ0FDTCxLQUFLO3VCQUNMLEtBQUs7NkJBQ0wsS0FBSzt1QkFDTCxLQUFLO2lDQUNMLEtBQUs7bUNBQ0wsS0FBSztvQkFDTCxLQUFLOzhCQUNMLEtBQUs7a0NBQ0wsS0FBSzt3QkFDTCxLQUFLO2lDQUNMLEtBQUs7OEJBQ0wsS0FBSzt1QkFDTCxLQUFLOytCQUNMLEtBQUs7d0JBQ0wsS0FBSztxQkFDTCxLQUFLO29CQUNMLEtBQUs7K0JBRUwsS0FBSzttQ0FDTCxLQUFLOzRCQUNMLE1BQU07MkJBQ04sTUFBTTt1QkFDTixNQUFNOzZCQUNOLE1BQU07dUJBQ04sTUFBTTs4QkFDTixNQUFNOzhCQUNOLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyIvLyBpbXBvcnQgeyBQbGF0Zm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wbGF0Zm9ybSc7XHJcbmltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBIZWFkZXJzIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQge1xyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIENvbXBvbmVudCxcclxuICBFbGVtZW50UmVmLFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBJbnB1dCxcclxuICBPbkluaXQsXHJcbiAgT3V0cHV0LFxyXG4gIFJlbmRlcmVyMixcclxuICBWaWV3Q2hpbGQsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE1hdERyYXdlciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NpZGVuYXYnO1xyXG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIsIFNhZmVIdG1sIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XHJcbmltcG9ydCB7IG9mIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGNhdGNoRXJyb3IsIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgZm9ybWF0Tm93LCBmb3JtYXRUaW1lU3RhbXBzIH0gZnJvbSAnLi4vLi4vdXRpbHMvdXRpbHMnO1xyXG5pbXBvcnQgeyBkZXZfZW52aXJvbm1lbnQsIHByb2RfZW52aXJvbm1lbnQgfSBmcm9tICcuLi8uLi8uLi9lbnZpcm9ubWVudHMvZW52aXJvbm1lbnQnO1xyXG5pbXBvcnQgeyBDb252ZXJzYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vY29udmVyc2F0aW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2hpdmVncHQtY2hhdC1kcmF3ZXInLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9jaGF0LWRyYXdlci5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vY2hhdC1kcmF3ZXIuY29tcG9uZW50LnNjc3MnXSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxufSlcclxuZXhwb3J0IGNsYXNzIENoYXREcmF3ZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIEBWaWV3Q2hpbGQoJ2NoYXRNYWluJykgcHJpdmF0ZSBjaGF0TWFpbjogRWxlbWVudFJlZjtcclxuXHJcbiAgQFZpZXdDaGlsZCgnZHJhd2VyJykgZHJhd2VyITogTWF0RHJhd2VyO1xyXG4gIHByaXZhdGUgYm9keU92ZXJmbG93Q2xhc3MgPSAnYm9keS1vdmVyZmxvdy1oaWRkZW4nO1xyXG4gIEBWaWV3Q2hpbGQoJ215VGV4dGFyZWEnLCB7IHN0YXRpYzogZmFsc2UgfSlcclxuICBteVRleHRhcmVhITogRWxlbWVudFJlZjxIVE1MVGV4dEFyZWFFbGVtZW50PjsgLy8gUmVmZXJlbmNlIHRvIHRoZSB0ZXh0YXJlYVxyXG5cclxuICBASW5wdXQoKSBjb3BpbG90TmFtZTogc3RyaW5nID0gXCJIaXZlWEdQVFwiO1xyXG4gIEBJbnB1dCgpIGZpcnN0TmFtZSE6IHN0cmluZztcclxuICBASW5wdXQoKSBsYXN0TmFtZSE6IHN0cmluZztcclxuICBASW5wdXQoKSBhcGlLZXkhOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgYmdCdWJibGVBaSE6IHN0cmluZztcclxuICBASW5wdXQoKSBiZ0J1YmJsZVVzZXIhOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgYmdHcmFkaWVudCE6IHN0cmluZ1tdO1xyXG4gIEBJbnB1dCgpIGJvdE5hbWUhOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgYm90U2tpbGxzITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIGJvdElkITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIGNsb3NlQnV0dG9uQ29sb3IhOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgY2xvc2VCdXR0b25iZ0NvbG9yITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIGNyZWRlbnRpYWxzITogW107XHJcbiAgQElucHV0KCkgZGF0ZVRpbWVDb2xvciE6IHN0cmluZztcclxuICBASW5wdXQoKSBkYXRlVGV4dENvbG9yITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIGV2ZW50SWQhOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgczI3VXNlclRva2VuITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIGV2ZW50TmFtZSE6IHN0cmluZztcclxuICBASW5wdXQoKSBib3RJY29uITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIGZvcm1GaWVsZEJnQ29sb3IhOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgZm9ybUZpZWxkVGV4dENvbG9yITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIGZ1bGxWaWV3ITogYm9vbGVhbjtcclxuICBASW5wdXQoKSBncmFkaWVudENvbG9ycyE6IHN0cmluZ1tdO1xyXG4gIEBJbnB1dCgpIGdyZWV0aW5nITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIG1lc3NhZ2VUZXh0Q29sb3JBaSE6IHN0cmluZztcclxuICBASW5wdXQoKSBtZXNzYWdlVGV4dENvbG9yVXNlciE6IHN0cmluZztcclxuICBASW5wdXQoKSBydWxlcyE6IHN0cmluZztcclxuICBASW5wdXQoKSBzZW5kQnV0dG9uQ29sb3IhOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgc2VuZEJ1dHRvblRleHRDb2xvciE6IHN0cmluZztcclxuICBASW5wdXQoKSBzaG93Q2xvc2UhOiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIHRodW1ic0Rvd25NZXNzYWdlcyE6IHN0cmluZ1tdO1xyXG4gIEBJbnB1dCgpIHRodW1ic1VwTWVzc2FnZSE6IHN0cmluZztcclxuICBASW5wdXQoKSB0aW1lem9uZSE6IHN0cmluZztcclxuICBASW5wdXQoKSB1bmtub3duUmVzcG9uc2VzITogW107XHJcbiAgQElucHV0KCkgdXNlT3BlbkFpITogYm9vbGVhbjtcclxuICBASW5wdXQoKSB1c2VySWQhOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgaXNEZXYhOiBib29sZWFuO1xyXG5cclxuICBASW5wdXQoKSBhZ2FpbkJ1dHRvbkNvbG9yITogc3RyaW5nW107XHJcbiAgQElucHV0KCkgYWdhaW5CdXR0b25UZXh0Q29sb3IhOiBzdHJpbmdbXTtcclxuICBAT3V0cHV0KCkgZmVlZGJhY2tFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xyXG4gIEBPdXRwdXQoKSBvbkNsb3NlRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcbiAgQE91dHB1dCgpIG9wZW5QYWdlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgQE91dHB1dCgpIHNlc3Npb25BY3Rpb25zID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgQE91dHB1dCgpIGNsb3NlQm90ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgQE91dHB1dCgpIGNvbm5lY3RXaXRoVXNlciA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gIEBPdXRwdXQoKSBzY2hlZHVsZU1lZXRpbmcgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcclxuXHJcbiAgYXV0b2dlbktleSA9IFwiQXV0b2dlbl9lREpUdEVVLU5CMFJ0SXB6cTF3XCJcclxuICBhZGRUb015QWdlbmRhQWN0aW9uID0gXCJhZGRfdG9fbXlfYWdlbmRhXCI7XHJcbiAgbXlVcGNvbWluZ1Nlc3Npb25BY3Rpb24gPSBcIm15X3VwY29tbWluZ19zZXNzaW9uXCI7XHJcbiAgY29ubmVjdE9yRm9sbG93QWN0aW9uID0gXCJjb25uZWN0X29yX2ZvbGxvd1wiO1xyXG4gIGFpUmVzcG9uc2U6IHN0cmluZyA9ICcnO1xyXG4gIGNoYXRMb2c6IGFueVtdID0gW107XHJcbiAgZGVjb2RlciA9IG5ldyBUZXh0RGVjb2RlcigpO1xyXG4gIGZlZWRiYWNrRG9uZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGdyZWV0aW5nTXNnOiBzdHJpbmcgPSAnJztcclxuICBoYXNCYWNrZHJvcFZhbHVlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgaW5wdXQ6IHN0cmluZyA9ICcnO1xyXG4gIGxpc3RlbmVyQWRkZWQgPSBmYWxzZTtcclxuICBsb2FkaW5nOiBib29sZWFuID0gZmFsc2U7XHJcbiAgbW9kZTogc3RyaW5nID0gJ292ZXInO1xyXG4gIHF1aWNrUHJvbXB0czogYW55W10gPSBbXTtcclxuICB0aHVtYnNEb3duTXNnSW5kZXggPSAwO1xyXG4gIHVzZXJOYW1lOiBzdHJpbmcgPSAnJztcclxuICBzaG93U3RhcnRBZ2FpbjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGlzSU9TRGV2aWNlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgc2hvd0ZlZWRCYWNrSWNvbnNJbmRleDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XHJcbiAgdGVtcGVyYXR1cmU6IG51bWJlciA9IDE7XHJcbiAgc3BlYWtlcnMgPSBbXTtcclxuICBlbnZpcm9ubWVudDoge1xyXG4gICAgVVNFUlNfQVBJLFxyXG4gICAgQkFTRV9VUkwsXHJcbiAgICBBR0VOVFNfQVBJXHJcbiAgfTtcclxuICBwZW5kaW5nUmVxdWVzdHM6IGFueTtcclxuICBteUNvbm5lY3Rpb25zOiBhbnk7XHJcbiAgY29udmVyc2F0aW9uS2V5OiBzdHJpbmc7XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsXHJcbiAgICBwcml2YXRlIHNhbml0aXplcjogRG9tU2FuaXRpemVyLFxyXG4gICAgcHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxyXG4gICAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLFxyXG4gICAgcHJpdmF0ZSBjb252ZXJzYXRpb246IENvbnZlcnNhdGlvblNlcnZpY2VcclxuICAgIC8vIHByaXZhdGUgcGxhdGZvcm06IFBsYXRmb3JtXHJcbiAgKSB7XHJcbiAgICB0aGlzLmNoYXRNYWluID0gbmV3IEVsZW1lbnRSZWYobnVsbCk7XHJcblxyXG4gICAgLy8gaWYgKHRoaXMucGxhdGZvcm0uSU9TKSB7XHJcbiAgICAvLyAgIHRoaXMuaXNJT1NEZXZpY2UgPSB0cnVlO1xyXG4gICAgLy8gfVxyXG5cclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5lbnZpcm9ubWVudCA9IHRoaXMuaXNEZXYgPyBkZXZfZW52aXJvbm1lbnQgOiBwcm9kX2Vudmlyb25tZW50O1xyXG5cclxuICAgIC8vIHRoaXMuZmV0Y2hNeUNvbm5lY3Rpb25zKCkuc3Vic2NyaWJlKCk7XHJcbiAgICAvLyB0aGlzLmZldGNoUGVuZGluZ1JlcXVlc3RzKCkuc3Vic2NyaWJlKCk7XHJcblxyXG4gICAgdGhpcy5jaGFuZ2VUZW1wZXJhdHVyZSh0aGlzLnRlbXBlcmF0dXJlKTtcclxuICAgIHRoaXMuZmV0Y2hCb3RDb25maWcoKS5zdWJzY3JpYmUoXHJcbiAgICAgIChyZXMpID0+IHtcclxuICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcclxuXHJcbiAgICAgICAgdGhpcy5mZXRjaENoYXRIaXN0b3J5KCkuc3Vic2NyaWJlKFxyXG4gICAgICAgICAgKHJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLm1hcENoYXRIaXN0b3J5KHJlc3BvbnNlKTtcclxuICAgICAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgKGVycikgPT4ge1xyXG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBmZXRjaGluZyBjaGF0IGhpc3Rvcnk6JywgZXJyKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICApO1xyXG4gICAgICB9LFxyXG4gICAgICAoZXJyKSA9PiB7XHJcbiAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgZmV0Y2hpbmcgY2hhdCBoaXN0b3J5OicsIGVycik7XHJcbiAgICAgIH1cclxuICAgICk7XHJcbiAgICB0aGlzLmZldGNoQWdlbnRzKCk7XHJcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcclxuICB9XHJcblxyXG4gIGNoYW5nZVRlbXBlcmF0dXJlKG5ld1RlbXBlcmF0dXJlOiBudW1iZXIpIHtcclxuICAgIGlmICh0aGlzLmxvYWRpbmcpIHJldHVybjtcclxuICAgIHRoaXMudGVtcGVyYXR1cmUgPSBuZXdUZW1wZXJhdHVyZTtcclxuICAgIGNvbnN0IHdyYXBwZXIgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuaGl2ZWdwdC1jaGF0LXdyYXBwZXInKVxyXG4gICAgLy8gUmVtb3ZlIGV4aXN0aW5nIHRoZW1lIGNsYXNzZXMgZnJvbSBib2R5XHJcbiAgICB3cmFwcGVyPy5jbGFzc0xpc3QucmVtb3ZlKCdjcmVhdGl2ZScsICdiYWxhbmNlZCcsICdwcmVjaXNlJyk7XHJcblxyXG4gICAgc3dpdGNoIChuZXdUZW1wZXJhdHVyZSkge1xyXG4gICAgICBjYXNlIDA6XHJcbiAgICAgICAgd3JhcHBlcj8uY2xhc3NMaXN0LmFkZCgnY3JlYXRpdmUnKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAxOlxyXG4gICAgICAgIHdyYXBwZXI/LmNsYXNzTGlzdC5hZGQoJ2JhbGFuY2VkJyk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgMjpcclxuICAgICAgICB3cmFwcGVyPy5jbGFzc0xpc3QuYWRkKCdwcmVjaXNlJyk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvblN0YXJ0QWdhaW4oKSB7XHJcbiAgICBpZiAodGhpcy5sb2FkaW5nKSByZXR1cm47XHJcbiAgICB0aGlzLnNob3dTdGFydEFnYWluID0gZmFsc2U7XHJcbiAgICB0aGlzLmNoYXRMb2cgPSBbXTtcclxuICAgIHRoaXMuY2hhdExvZy5wdXNoKHtcclxuICAgICAgdHlwZTogJ2FpJyxcclxuICAgICAgbWVzc2FnZTpcclxuICAgICAgICB0aGlzLmdyZWV0aW5nTXNnIHx8XHJcbiAgICAgICAgdGhpcy5wcm9jZXNzTWVzc2FnZShcclxuICAgICAgICAgIFwiR3JlZXRpbmdzISBJJ20geW91ciBDT1AyOCB2aXJ0dWFsIGFzc2lzdGFudC4gSGF2ZSBxdWVzdGlvbnMgYWJvdXQgdGhlIGV2ZW50PyBJJ20gaGVyZSB0byBoZWxwLlwiXHJcbiAgICAgICAgKSxcclxuICAgICAgdGltZTogZm9ybWF0Tm93KHRoaXMudGltZXpvbmUpLFxyXG4gICAgfSk7XHJcbiAgICB0aGlzLmFyY2hpZXZlTWVzc2FnZXMoKS5zdWJzY3JpYmUoKTtcclxuICB9XHJcblxyXG4gIGFyY2hpZXZlTWVzc2FnZXMoKSB7XHJcbiAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKHtcclxuICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcclxuICAgICAgJ3gtYXBpLWtleSc6IHRoaXMuYXBpS2V5LFxyXG4gICAgfSk7XHJcbiAgICBjb25zdCB1cmwgPSBgJHt0aGlzLmVudmlyb25tZW50LkJBU0VfVVJMfS9ib3QvY2xlYXItaGlzdG9yeS8ke3RoaXMuYm90SWR9LyR7dGhpcy51c2VySWR9YDtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdCh1cmwsIHt9LCB7IGhlYWRlcnMgfSkucGlwZShcclxuICAgICAgc3dpdGNoTWFwKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIHJldHVybiBvZihyZXMpO1xyXG4gICAgICB9KSxcclxuICAgICAgY2F0Y2hFcnJvcigoZXJyb3IpID0+IHtcclxuICAgICAgICByZXR1cm4gb2YobnVsbCk7XHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZmV0Y2hCb3RDb25maWcoKSB7XHJcbiAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xyXG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5lbnZpcm9ubWVudC5CQVNFX1VSTH0vYm90cz9ib3RfaWQ9JHt0aGlzLmJvdElkfWA7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldCh1cmwpLnBpcGUoXHJcbiAgICAgIHN3aXRjaE1hcCgocmVzOiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLmJvdE5hbWUgPSByZXMuTmFtZTtcclxuICAgICAgICB0aGlzLmJvdEljb24gPSByZXMuSWNvbjtcclxuICAgICAgICB0aGlzLmJvdFNraWxscyA9IHJlcz8uU2tpbGxzO1xyXG4gICAgICAgIHRoaXMuZ3JlZXRpbmdNc2cgPSByZXMuR3JlZXRpbmc7XHJcblxyXG4gICAgICAgIHRoaXMudGh1bWJzRG93bk1lc3NhZ2VzID0gcmVzPy5OZWdhdGl2ZVJlc3BvbnNlcz8ubGVuZ3RoXHJcbiAgICAgICAgICA/IHJlcy5OZWdhdGl2ZVJlc3BvbnNlc1xyXG4gICAgICAgICAgOiBbXHJcbiAgICAgICAgICAgIFwiV2UgYXJlIHNvcnJ5IHdlJ3ZlIG5vdCBiZWVuIGFibGUgdG8gYW5zd2VyIHlvdXIgcXVlc3Rpb24uPGJyLz4gSG93ZXZlciwgb3VyIGRlZGljYXRlZCBzdXBwb3J0IHRlYW0gaXMgaGFwcHkgdG8gaGVscC4gPHNwYW4gY2xhc3M9J2ZlZWRiYWNrLWxpbmsnIHN0eWxlPSdjdXJzb3I6IHBvaW50ZXI7IHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOyBmb250LXdlaWdodDogNzAwOyBjb2xvcjogIzE3MjM1QjsnPlBsZWFzZSBjbGljayBoZXJlPC9zcGFuPiBhbmQgYSBodW1hbiBhZ2VudCB3aWxsIGFzc2lzdCB5b3UgYXMgc29vbiBhcyBwb3NzaWJsZVwiLFxyXG4gICAgICAgICAgXTtcclxuICAgICAgICB0aGlzLnF1aWNrUHJvbXB0cyA9IHJlcy5RdWlja1Byb21wdHM7XHJcbiAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XHJcbiAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgcmV0dXJuIG9mKHJlcyk7XHJcbiAgICAgIH0pLFxyXG4gICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4ge1xyXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGZldGNoaW5nIGNoYXRib3QgY29uZmlnOiAnLCBlcnJvcik7XHJcbiAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgcmV0dXJuIG9mKG51bGwpO1xyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGZldGNoQ2hhdEhpc3RvcnkoKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHRoaXMubG9hZGluZyA9IHRydWU7XHJcbiAgICB0aGlzLmNvbnZlcnNhdGlvbktleSA9IHRoaXMuY29udmVyc2F0aW9uLmdldEtleSh0aGlzLmJvdElkKTtcclxuICAgIGNvbnN0IHVybCA9IGAke3RoaXMuZW52aXJvbm1lbnQuQkFTRV9VUkx9L2NvbnZlcnNhdGlvbnMvJHt0aGlzLmNvbnZlcnNhdGlvbktleX1gO1xyXG4gICAgY29uc3QgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycyh7XHJcbiAgICAgICdhY2NlcHQnOiAnYXBwbGljYXRpb24vanNvbidcclxuICAgIH0pO1xyXG5cclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KHVybCwgeyBoZWFkZXJzIH0pLnBpcGUoXHJcbiAgICAgIGNhdGNoRXJyb3IodGhpcy5oYW5kbGVFcnJvcjxhbnk+KCdmZXRjaENvbnZlcnNhdGlvbicpKVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaGFuZGxlRXJyb3I8VD4ob3BlcmF0aW9uID0gJ29wZXJhdGlvbicsIHJlc3VsdD86IFQpIHtcclxuICAgIHJldHVybiAoZXJyb3I6IGFueSk6IE9ic2VydmFibGU8VD4gPT4ge1xyXG4gICAgICBjb25zb2xlLmVycm9yKGAke29wZXJhdGlvbn0gZmFpbGVkOiAke2Vycm9yLm1lc3NhZ2V9YCk7XHJcbiAgICAgIHJldHVybiBvZihyZXN1bHQgYXMgVCk7XHJcbiAgICB9O1xyXG4gIH1cclxuICAvLyBmZXRjaENoYXRIaXN0b3J5KCkge1xyXG4gIC8vICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcclxuICAvLyAgIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoe1xyXG4gIC8vICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxyXG4gIC8vICAgICAneC1hcGkta2V5JzogdGhpcy5hcGlLZXksXHJcbiAgLy8gICB9KTtcclxuICAvLyAgIHJldHVybiB0aGlzLmh0dHBcclxuICAvLyAgICAgLmdldChgJHt0aGlzLmVudmlyb25tZW50LkJBU0VfVVJMfS9jb252ZXJzYXRpb25zLyR7dGhpcy5jb252ZXJzYXRpb25LZXl9YCwgeyBoZWFkZXJzIH0pXHJcbiAgLy8gICAgIC5waXBlKFxyXG4gIC8vICAgICAgIHN3aXRjaE1hcCgocmVzOiBhbnkpID0+IHtcclxuICAvLyAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gIC8vICAgICAgICAgcmV0dXJuIG9mKHJlcyk7XHJcbiAgLy8gICAgICAgfSksXHJcbiAgLy8gICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IGFueSkgPT4ge1xyXG4gIC8vICAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgZmV0Y2hpbmcgY2hhdCBoaXN0b3J5OiAnLCBlcnJvcik7XHJcbiAgLy8gICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAvLyAgICAgICAgIHJldHVybiBvZihudWxsKTtcclxuICAvLyAgICAgICB9KVxyXG4gIC8vICAgICApO1xyXG4gIC8vIH1cclxuXHJcbiAgbWFwQ2hhdEhpc3RvcnkoY2hhdHM6IGFueSkge1xyXG4gICAgdGhpcy5jaGF0TG9nLnB1c2goe1xyXG4gICAgICB0eXBlOiAnYWknLFxyXG4gICAgICBtZXNzYWdlOlxyXG4gICAgICAgIHRoaXMuZ3JlZXRpbmdNc2cgfHxcclxuICAgICAgICB0aGlzLnByb2Nlc3NNZXNzYWdlKFxyXG4gICAgICAgICAgXCJHcmVldGluZ3MhIEknbSB5b3VyIENPUDI4IHZpcnR1YWwgYXNzaXN0YW50LiBIYXZlIHF1ZXN0aW9ucyBhYm91dCB0aGUgZXZlbnQ/IEknbSBoZXJlIHRvIGhlbHAuXCJcclxuICAgICAgICApLFxyXG4gICAgICB0aW1lOiBmb3JtYXROb3codGhpcy50aW1lem9uZSksXHJcbiAgICB9KTtcclxuICAgIGlmIChjaGF0cyAmJiBjaGF0cz8uTWVzc2FnZXM/Lmxlbmd0aCkge1xyXG4gICAgICBjaGF0cz8uTWVzc2FnZXMuZm9yRWFjaCgoY2hhdDogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKGNoYXQuVHlwZSA9PSBcInVzZXJcIikge1xyXG4gICAgICAgICAgdGhpcy5jaGF0TG9nLnB1c2goe1xyXG4gICAgICAgICAgICB0eXBlOiAndXNlcicsXHJcbiAgICAgICAgICAgIG1lc3NhZ2U6IHRoaXMucHJvY2Vzc01lc3NhZ2VGb3JEaXNwbGF5KGNoYXQuVGV4dCksXHJcbiAgICAgICAgICAgIHRpbWU6IGZvcm1hdFRpbWVTdGFtcHModGhpcy50aW1lem9uZSwgY2hhdC5JbnNlcnRUaW1lc3RhbXApLFxyXG4gICAgICAgICAgICBjb3BpZWQ6IGZhbHNlXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGNoYXQuVHlwZSA9PSBcImFpXCIpIHtcclxuICAgICAgICAgIHRoaXMuY2hhdExvZy5wdXNoKHtcclxuICAgICAgICAgICAgdHlwZTogJ2FpJyxcclxuICAgICAgICAgICAgbWVzc2FnZTogdGhpcy5wcm9jZXNzTWVzc2FnZUZvckRpc3BsYXkoY2hhdC5UZXh0KSxcclxuICAgICAgICAgICAgdGltZTogZm9ybWF0VGltZVN0YW1wcyh0aGlzLnRpbWV6b25lLCBjaGF0Lkluc2VydFRpbWVzdGFtcCksXHJcbiAgICAgICAgICAgIGNvcGllZDogZmFsc2VcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgdGhpcy5zaG93RmVlZEJhY2tJY29uc0luZGV4ID0gdGhpcy5jaGF0TG9nLmxlbmd0aCAtIDE7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy5zaG93U3RhcnRBZ2FpbiA9IHRydWU7XHJcbiAgICB9XHJcbiAgICB0aGlzLnNjcm9sbFRvQm90dG9tKCk7XHJcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcclxuICB9XHJcblxyXG4gIHByb2Nlc3NNZXNzYWdlKG1lc3NhZ2U6IHN0cmluZyk6IFNhZmVIdG1sIHtcclxuICAgIGlmICghbWVzc2FnZSB8fCAhKG1lc3NhZ2U/Lmxlbmd0aCA+IDApKSB7XHJcbiAgICAgIHJldHVybiAnJztcclxuICAgIH1cclxuXHJcbiAgICBjb25zb2xlLmxvZygnaGVyZSBpcyBteSBtZXNzYWdlJylcclxuICAgIGNvbnNvbGUubG9nKG1lc3NhZ2UpO1xyXG5cclxuICAgIG1lc3NhZ2UgPSBtZXNzYWdlLnRyaW0oKTtcclxuXHJcbiAgICBjb25zdCBtYXJrZG93bkxpbmtSZWdleCA9IC9cXFsoW15bXSspXVxcKChbXildKylcXCkvZztcclxuICAgIGNvbnN0IHVybFJlZ2V4ID0gLyg/PCFocmVmPVwiKVxcYmh0dHBzPzpcXC9cXC9cXFMrKD88IVsuLF0pL2dpO1xyXG5cclxuICAgIGlmIChtYXJrZG93bkxpbmtSZWdleC50ZXN0KG1lc3NhZ2UpKSB7XHJcbiAgICAgIGNvbnN0IGh0bWwgPSBtZXNzYWdlLnJlcGxhY2UoXHJcbiAgICAgICAgbWFya2Rvd25MaW5rUmVnZXgsXHJcbiAgICAgICAgJzxhIGhyZWY9XCIkMlwiIHRhcmdldD1cIl9ibGFua1wiPiQxPC9hPidcclxuICAgICAgKTtcclxuICAgICAgY29uc29sZS5sb2coJ1Nhbml0aXplZCBtZXNzYWdlOiAnLCBtZXNzYWdlKTtcclxuICAgICAgcmV0dXJuIHRoaXMuc2FuaXRpemVIdG1sKGh0bWwpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh1cmxSZWdleC50ZXN0KG1lc3NhZ2UpKSB7XHJcbiAgICAgIGNvbnN0IGh0bWwgPSBtZXNzYWdlLnJlcGxhY2UoXHJcbiAgICAgICAgdXJsUmVnZXgsXHJcbiAgICAgICAgJzxhIGhyZWY9XCIkJlwiIHRhcmdldD1cIl9ibGFua1wiPiQmPC9hPidcclxuICAgICAgKTtcclxuICAgICAgY29uc29sZS5sb2coJ1Nhbml0aXplZCBtZXNzYWdlOiAnLCBtZXNzYWdlKTtcclxuICAgICAgcmV0dXJuIHRoaXMuc2FuaXRpemVIdG1sKGh0bWwpO1xyXG4gICAgfVxyXG5cclxuICAgIG1lc3NhZ2UgPSBtZXNzYWdlLnJlcGxhY2UoLyg/OlxcclxcbnxcXHJ8XFxuKS9nLCAnPGJyPicpO1xyXG5cclxuICAgIG1lc3NhZ2UgPSBtZXNzYWdlLnJlcGxhY2UoL1xcKlxcKiguKj8pXFwqXFwqL2csICc8c3Ryb25nPiQxPC9zdHJvbmc+Jyk7XHJcbiAgICAvLyBDb252ZXJ0IE1hcmtkb3duIGhlYWRlcnMgdG8gSFRNTCBoZWFkZXJzXHJcbiAgICBtZXNzYWdlID0gbWVzc2FnZS5yZXBsYWNlKC9eKCN7MSw2fSlcXHMrKC4qKSQvZ20sIChtYXRjaCwgaGFzaGVzLCB0ZXh0KSA9PiB7XHJcbiAgICAgIGNvbnN0IGxldmVsID0gaGFzaGVzLmxlbmd0aDtcclxuICAgICAgcmV0dXJuIGA8aCR7bGV2ZWx9PiR7dGV4dH08L2gke2xldmVsfT5gO1xyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XHJcbiAgICBjb25zdCBzYW5pdGl6ZWRNZXNzYWdlID0gdGhpcy5zYW5pdGl6ZUh0bWwobWVzc2FnZSk7XHJcbiAgICByZXR1cm4gc2FuaXRpemVkTWVzc2FnZTtcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3Q2hlY2tlZCgpIHtcclxuICAgIGNvbnN0IGZlZWRiYWNrTGlua3MgPVxyXG4gICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuZmVlZGJhY2stbGluaycpO1xyXG4gICAgZmVlZGJhY2tMaW5rcy5mb3JFYWNoKChsaW5rOiBhbnkpID0+IHtcclxuICAgICAgbGluay5hZGRFdmVudExpc3RlbmVyKFxyXG4gICAgICAgICdjbGljaycsXHJcbiAgICAgICAgdGhpcy5vbkZlZWRiYWNrQ2xpY2suYmluZCh0aGlzLCAnemVuZGVzaycpXHJcbiAgICAgICk7XHJcbiAgICB9KTtcclxuICAgIC8vIGlmICh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCcuZmVlZGJhY2stbGluaycpKSB7XHJcbiAgICAvLyAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50XHJcbiAgICAvLyAgICAgLnF1ZXJ5U2VsZWN0b3IoJy5mZWVkYmFjay1saW5rJylcclxuICAgIC8vICAgICAuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCB0aGlzLm9uRmVlZGJhY2tDbGljay5iaW5kKHRoaXMsICd6ZW5kZXNrJykpO1xyXG4gICAgLy8gfVxyXG4gIH1cclxuXHJcbiAgc2FuaXRpemVIdG1sKGh0bWw6IHN0cmluZyk6IFNhZmVIdG1sIHtcclxuICAgIHJldHVybiB0aGlzLnNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0SHRtbChodG1sKTtcclxuICB9XHJcblxyXG4gIG9uRmVlZGJhY2tDbGljayh2YWx1ZTogc3RyaW5nKSB7XHJcbiAgICB0aGlzLmZlZWRiYWNrRXZlbnQuZW1pdCh2YWx1ZSk7XHJcbiAgfVxyXG5cclxuICBvbkNsb3NlKCkge1xyXG4gICAgdGhpcy5yZW5kZXJlci5yZW1vdmVDbGFzcyhkb2N1bWVudC5ib2R5LCB0aGlzLmJvZHlPdmVyZmxvd0NsYXNzKTtcclxuICAgIHRoaXMub25DbG9zZUV2ZW50LmVtaXQoKTtcclxuICB9XHJcblxyXG4gIHNlbmRNZXNzYWdlV2l0aFRpbGUocHJvbXB0OiBzdHJpbmcpIHtcclxuICAgIHRoaXMuaW5wdXQgPSBwcm9tcHQ7XHJcbiAgICB0aGlzLmZldGNoRGF0YSgpO1xyXG4gICAgdGhpcy5zY3JvbGxUb0JvdHRvbSgpO1xyXG4gIH1cclxuICBpc0NoYXRpbmdXaXRoQWkgPSBmYWxzZTtcclxuICBmZXRjaERhdGEoKSB7XHJcbiAgICB0aGlzLmlucHV0ID0gdGhpcy5pbnB1dD8udHJpbSgpO1xyXG4gICAgaWYgKCF0aGlzLmlucHV0IHx8IHRoaXMubG9hZGluZykge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5jaGF0TG9nLnB1c2goe1xyXG4gICAgICB0eXBlOiAndXNlcicsXHJcbiAgICAgIG1lc3NhZ2U6IHRoaXMucHJvY2Vzc01lc3NhZ2UodGhpcy5pbnB1dCksXHJcbiAgICAgIHRpbWU6IGZvcm1hdE5vdyh0aGlzLnRpbWV6b25lKSxcclxuICAgICAgY29waWVkOiBmYWxzZVxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XHJcblxyXG4gICAgdGhpcy5haVJlc3BvbnNlID0gJyc7XHJcbiAgICB0aGlzLmlzQ2hhdGluZ1dpdGhBaSA9IHRydWU7XHJcblxyXG4gICAgY29uc3QgdXJsID1cclxuICAgICAgYCR7dGhpcy5lbnZpcm9ubWVudC5CQVNFX1VSTH0vYWkvYXNrYC8vICtcclxuICAgIC8vICh0aGlzLnVzZU9wZW5BaSA9PT0gZmFsc2UgPyAnL2xsbS1oZicgOiAnJyk7XHJcbiAgICBmZXRjaCh1cmwsIHtcclxuICAgICAgbWV0aG9kOiAnUE9TVCcsXHJcbiAgICAgIGhlYWRlcnM6IHtcclxuICAgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxyXG4gICAgICAgICd4LWFwaS1rZXknOiB0aGlzLmFwaUtleSxcclxuICAgICAgfSxcclxuICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoe1xyXG4gICAgICAgIHVzZXJfcXVlc3Rpb246IHRoaXMuaW5wdXQsXHJcbiAgICAgICAgdXNlcl9pZDogdGhpcy51c2VySWQsXHJcbiAgICAgICAgYm90X2lkOiB0aGlzLmJvdElkLFxyXG4gICAgICAgIC8vIHRlbXBlcmF0dXJlOiB0aGlzLnRlbXBlcmF0dXJlLFxyXG4gICAgICAgIC8vICBldmVudF9pZDogdGhpcy5ldmVudElkLFxyXG4gICAgICAgIC8vIHRva2VuOiB0aGlzLnMyN1VzZXJUb2tlbixcclxuICAgICAgICBhZ2VudHM6IHRoaXMuYWdlbnRzLmZpbHRlcihwID0+IHAuc2VsZWN0ZWQpLm1hcChwID0+IHAuaWQpLFxyXG4gICAgICAgIGNvbnZlcnNhdGlvbl9pZDogdGhpcy5jb252ZXJzYXRpb25LZXlcclxuICAgICAgfSksXHJcbiAgICB9KVxyXG4gICAgICAvLyBSZXRyaWV2ZSBpdHMgYm9keSBhcyBSZWFkYWJsZVN0cmVhbVxyXG4gICAgICAudGhlbigocmVzcG9uc2UpID0+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5yZWFkQWxsQ2h1bmtzKHJlc3BvbnNlLmJvZHkpO1xyXG4gICAgICB9KVxyXG4gICAgICAuY2F0Y2goKGVycikgPT4ge1xyXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ0VycjogJywgZXJyKTtcclxuICAgICAgICB0aGlzLmlzQ2hhdGluZ1dpdGhBaSA9IGZhbHNlO1xyXG4gICAgICB9KTtcclxuXHJcbiAgICB0aGlzLmlucHV0ID0gJyc7XHJcbiAgfVxyXG5cclxuICBmZXRjaFNtYWxsVGFsaygpIHtcclxuICAgIHRoaXMubG9hZGluZyA9IHRydWU7XHJcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcclxuXHJcbiAgICBjb25zdCB1cmwgPSBgJHt0aGlzLmVudmlyb25tZW50LkJBU0VfVVJMfS9ib3Qvc21hbGwtdGFsay8ke3RoaXMuYm90SWR9LyR7dGhpcy51c2VySWR9YDtcclxuXHJcbiAgICB0aGlzLmh0dHBcclxuICAgICAgLmdldDx7IHNtYWxsVGFsazogc3RyaW5nIH0+KHVybCwge1xyXG4gICAgICAgIGhlYWRlcnM6IHtcclxuICAgICAgICAgICd4LWFwaS1rZXknOiB0aGlzLmFwaUtleSxcclxuICAgICAgICB9LFxyXG4gICAgICB9KVxyXG4gICAgICAucGlwZShcclxuICAgICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3Igd2hpbGUgZmV0Y2hpbmcgc21hbGwgdGFsazonLCBlcnJvcik7XHJcblxyXG4gICAgICAgICAgcmV0dXJuIG9mKG51bGwpO1xyXG4gICAgICAgIH0pXHJcbiAgICAgIClcclxuICAgICAgLnN1YnNjcmliZSgocmVzcG9uc2UpID0+IHtcclxuICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcclxuXHJcbiAgICAgICAgaWYgKCFyZXNwb25zZSkge1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHJlc3BvbnNlICYmIHJlc3BvbnNlLnNtYWxsVGFsaykge1xyXG4gICAgICAgICAgdGhpcy5jaGF0TG9nLnB1c2goe1xyXG4gICAgICAgICAgICB0eXBlOiAnYWknLFxyXG4gICAgICAgICAgICBtZXNzYWdlOiB0aGlzLnByb2Nlc3NNZXNzYWdlKHJlc3BvbnNlLnNtYWxsVGFsayksXHJcbiAgICAgICAgICAgIHRpbWU6IGZvcm1hdE5vdyh0aGlzLnRpbWV6b25lKSxcclxuICAgICAgICAgICAgaXNGZWVkYmFja01zZzogdHJ1ZSxcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgdGhpcy5zaG93RmVlZEJhY2tJY29uc0luZGV4ID0gdGhpcy5jaGF0TG9nLmxlbmd0aCAtIDI7XHJcbiAgICAgICAgICAvLyB0aGlzLnNjcm9sbFRvQm90dG9tKCk7XHJcbiAgICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcmVhZEFsbENodW5rcyA9IChzdHJlYW06IGFueSkgPT4ge1xyXG4gICAgY29uc3QgcmVhZGVyID0gc3RyZWFtLmdldFJlYWRlcigpO1xyXG4gICAgY29uc3QgYWxsU3VnZ2VzdGlvbnM6IHN0cmluZ1tdID0gW107XHJcblxyXG4gICAgcmVhZGVyLmNsb3NlZC5jYXRjaCgoZXJyOiBhbnkpID0+IHtcclxuICAgICAgaWYgKGVycikge1xyXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIHJlYWRpbmcgc3RyZWFtOiAnLCBlcnIpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLmlzQ2hhdGluZ1dpdGhBaSA9IGZhbHNlO1xyXG4gICAgICB0aGlzLnNjcm9sbFRvQm90dG9tKCk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH0pO1xyXG5cclxuICAgIHJldHVybiBuZXcgUmVhZGFibGVTdHJlYW0oe1xyXG4gICAgICBzdGFydDogKGNvbnRyb2xsZXIpID0+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5wdW1wKGNvbnRyb2xsZXIsIHJlYWRlciwgYWxsU3VnZ2VzdGlvbnMpO1xyXG4gICAgICB9LFxyXG4gICAgfSk7XHJcbiAgfTtcclxuXHJcbiAgcHVtcChjb250cm9sbGVyOiBhbnksIHJlYWRlcjogYW55LCBhbGxTdWdnZXN0aW9uczogc3RyaW5nW10pIHtcclxuICAgIHJlYWRlci5yZWFkKCkudGhlbigoeyBkb25lLCB2YWx1ZSB9OiBhbnkpID0+IHtcclxuICAgICAgY29uc3QgbGFzdEl0ZW0gPSB0aGlzLmNoYXRMb2dbdGhpcy5jaGF0TG9nLmxlbmd0aCAtIDFdO1xyXG5cclxuICAgICAgaWYgKGRvbmUpIHtcclxuICAgICAgICBsYXN0SXRlbS5tZXNzYWdlID0gdGhpcy5wcm9jZXNzTWVzc2FnZUZvckRpc3BsYXkobGFzdEl0ZW0ubWVzc2FnZSk7XHJcbiAgICAgICAgdGhpcy5jaGF0TG9nLnBvcCgpO1xyXG4gICAgICAgIHRoaXMuY2hhdExvZy5wdXNoKGxhc3RJdGVtKTtcclxuICAgICAgICBpZiAoYWxsU3VnZ2VzdGlvbnM/Lmxlbmd0aCkge1xyXG4gICAgICAgICAgdGhpcy5jaGF0TG9nLnB1c2goe1xyXG4gICAgICAgICAgICB0eXBlOiAnc3VnZ2VzdGlvbnMnLFxyXG4gICAgICAgICAgICBzdWdnZXN0aW9uczogYWxsU3VnZ2VzdGlvbnNcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb250cm9sbGVyLmNsb3NlKCk7XHJcbiAgICAgICAgdGhpcy5pc0NoYXRpbmdXaXRoQWkgPSBmYWxzZTtcclxuICAgICAgICAvLyB0aGlzLnNjcm9sbFRvQm90dG9tKCk7XHJcbiAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XHJcbiAgICAgICAgdGhpcy5zaG93U3RhcnRBZ2FpbiA9IHRydWU7XHJcblxyXG4gICAgICAgIC8vIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIC8vICAgdGhpcy5mZXRjaFNtYWxsVGFsaygpO1xyXG4gICAgICAgIC8vIH0sMTAwMClcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGxldCBkZWNvZGVkQ2h1bmsgPSB0aGlzLmRlY29kZXIuZGVjb2RlKHZhbHVlLCB7IHN0cmVhbTogdHJ1ZSB9KTtcclxuICAgICAgdGhpcy5haVJlc3BvbnNlICs9IGRlY29kZWRDaHVuaztcclxuICAgICAgaWYgKGxhc3RJdGVtLnR5cGUgPT09ICdhaScpIHtcclxuICAgICAgICBjb25zdCBzdWdnZXN0aW9uc01hdGNoID0gdGhpcy5haVJlc3BvbnNlLm1hdGNoKC88c3VnPiguKj8pPFxcL3N1Zz4vZyk7XHJcbiAgICAgICAgaWYgKHN1Z2dlc3Rpb25zTWF0Y2gpIHtcclxuICAgICAgICAgIHN1Z2dlc3Rpb25zTWF0Y2guZm9yRWFjaCgobWF0Y2gpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5haVJlc3BvbnNlID0gdGhpcy5haVJlc3BvbnNlLnJlcGxhY2UobWF0Y2gsIFwiXCIpO1xyXG4gICAgICAgICAgICBhbGxTdWdnZXN0aW9ucy5wdXNoKG1hdGNoPy5yZXBsYWNlKC88XFwvP3N1Zz4vZywgXCJcIikpO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBsYXN0SXRlbS5tZXNzYWdlID0gdGhpcy5haVJlc3BvbnNlO1xyXG4gICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuaXNDaGF0aW5nV2l0aEFpID0gZmFsc2U7XHJcblxyXG4gICAgICAgIGxldCBhaUZvcm1hdHRlZERhdGE6IGFueTtcclxuXHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgIGNvbnNvbGUubG9nKCdwYXJzaW5nIGpzb24gJylcclxuICAgICAgICAgIGFpRm9ybWF0dGVkRGF0YSA9IEpTT04ucGFyc2UoSlNPTi5wYXJzZSh0aGlzLmFpUmVzcG9uc2UpKVxyXG4gICAgICAgIH1cclxuICAgICAgICBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coJ3BhcnNpbmcganNvbiAyJylcclxuICAgICAgICAgICAgYWlGb3JtYXR0ZWREYXRhID0gSlNPTi5wYXJzZSh0aGlzLmFpUmVzcG9uc2UpXHJcbiAgICAgICAgICB9IGNhdGNoIChlKSB7IH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnNvbGUubG9nKCdwYXJzaW5nIGpzb24gZG9uZScpXHJcblxyXG4gICAgICAgIGlmIChhaUZvcm1hdHRlZERhdGEgJiYgYWlGb3JtYXR0ZWREYXRhPy5zZWN0aW9uX2lkPy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICBpZiAoYWlGb3JtYXR0ZWREYXRhLnNlY3Rpb25faWQgPT0gJ2NvbXBhbnlfc2VhcmNoJyB8fCBhaUZvcm1hdHRlZERhdGEuc2VjdGlvbl9pZCA9PSAndXNlcl9zZWFyY2gnIHx8IGFpRm9ybWF0dGVkRGF0YS5zZWN0aW9uX2lkID09ICdpbmR1c3RyeV9jb21wYW55X3NlYXJjaCcpIHtcclxuICAgICAgICAgICAgdGhpcy5mZXRjaE15Q29ubmVjdGlvbnMoKS5zdWJzY3JpYmUoKTtcclxuICAgICAgICAgICAgdGhpcy5mZXRjaFBlbmRpbmdSZXF1ZXN0cygpLnN1YnNjcmliZSgpO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIGlmIChhaUZvcm1hdHRlZERhdGEuc2VjdGlvbl9pZCA9PSB0aGlzLm15VXBjb21pbmdTZXNzaW9uQWN0aW9uKSB7XHJcbiAgICAgICAgICAgIHZhciBzcGVha2VySWRzID0gW107XHJcbiAgICAgICAgICAgIGFpRm9ybWF0dGVkRGF0YS5jb250ZW50Py5mb3JFYWNoKHNlc3Npb24gPT4ge1xyXG4gICAgICAgICAgICAgIHNwZWFrZXJJZHMgPSBbLi4uc3BlYWtlcklkcywgLi4uc2Vzc2lvbi5zcGVha2Vyc11cclxuICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICBpZiAoc3BlYWtlcklkcz8ubGVuZ3RoID4gMClcclxuICAgICAgICAgICAgICB0aGlzLmdldFNwZWFrZXJzQnlTdGFmZklkcyhzcGVha2VySWRzKTtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBpZiAoYWlGb3JtYXR0ZWREYXRhLnNlY3Rpb25faWQgPT0gdGhpcy5hZGRUb015QWdlbmRhQWN0aW9uICYmIGFpRm9ybWF0dGVkRGF0YS5jb250ZW50Py5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMub3BlblBhZ2UubmV4dCh7XHJcbiAgICAgICAgICAgICAgc2VjdGlvbklkOiBhaUZvcm1hdHRlZERhdGEuc2VjdGlvbl9pZCxcclxuICAgICAgICAgICAgICBzZXNzaW9uSWRzOiBhaUZvcm1hdHRlZERhdGEuY29udGVudFxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIGlmIChhaUZvcm1hdHRlZERhdGEuc2VjdGlvbl9pZCA9PSB0aGlzLmNvbm5lY3RPckZvbGxvd0FjdGlvbikge1xyXG4gICAgICAgICAgICBsZXQgdXNlcnNMZW4gPSBhaUZvcm1hdHRlZERhdGEuY29udGVudD8ubGVuZ3RoO1xyXG4gICAgICAgICAgICBpZiAodXNlcnNMZW4gPiAxKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5vcGVuUGFnZS5uZXh0KHtcclxuICAgICAgICAgICAgICAgIHNlY3Rpb25JZDogXCJvcGVuX25ldHdvcmtpbmdfZHJhd2VyXCIsXHJcbiAgICAgICAgICAgICAgICBzZWFyY2g6IGFpRm9ybWF0dGVkRGF0YS5jb250ZW50XHJcbiAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmICh1c2Vyc0xlbiA9PSAxKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5vcGVuUGFnZS5uZXh0KHtcclxuICAgICAgICAgICAgICAgIHNlY3Rpb25JZDogYWlGb3JtYXR0ZWREYXRhLnNlY3Rpb25faWQsXHJcbiAgICAgICAgICAgICAgICBjb25uZXRVc2VySWRzOiBbYWlGb3JtYXR0ZWREYXRhLmNvbnRlbnRbMF0udXNlcklkXVxyXG4gICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBpZiAoYWlGb3JtYXR0ZWREYXRhLmlzX29wZW5fcGFnZSA9PSBcInRydWVcIikge1xyXG4gICAgICAgICAgICB0aGlzLm9wZW5QYWdlLm5leHQoe1xyXG4gICAgICAgICAgICAgIHNlY3Rpb25JZDogYWlGb3JtYXR0ZWREYXRhLnNlY3Rpb25faWQsXHJcbiAgICAgICAgICAgICAgc2VhcmNoOiBhaUZvcm1hdHRlZERhdGEuY29udGVudFxyXG4gICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgIGlmICh0aGlzLmlzTW9iaWxlQnJvd3NlcigpKSB7XHJcbiAgICAgICAgICAgICAgYWlGb3JtYXR0ZWREYXRhLm1lc3NhZ2UgKz0gXCJcXG5cXG5cIiArICc8YSBpZD1cImNsb3NlQm90Tm93XCI+Q2xpY2sgSGVyZTwvYT4gdG8gc2VlIHJlc3VsdHMuJ1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcblxyXG5cclxuXHJcbiAgICAgICAgICB0aGlzLmNoYXRMb2cucHVzaCh7XHJcbiAgICAgICAgICAgIHR5cGU6ICdhaScsXHJcbiAgICAgICAgICAgIG1lc3NhZ2U6IGFpRm9ybWF0dGVkRGF0YS5tZXNzYWdlLFxyXG4gICAgICAgICAgICBhY3Rpb246IGFpRm9ybWF0dGVkRGF0YSxcclxuICAgICAgICAgICAgdGltZTogZm9ybWF0Tm93KHRoaXMudGltZXpvbmUpXHJcbiAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICBpZiAodGhpcy5pc01vYmlsZUJyb3dzZXIoKSkge1xyXG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICB0aGlzLmFkZENsb3NlQm90Q2xpY2tFdmVudCgpO1xyXG4gICAgICAgICAgICB9LCA1MDApO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIHRoaXMuYWlSZXNwb25zZSA9IFwiXCI7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuY2hhdExvZy5wdXNoKHtcclxuICAgICAgICAgICAgdHlwZTogJ2FpJyxcclxuICAgICAgICAgICAgbWVzc2FnZTogdGhpcy5haVJlc3BvbnNlLFxyXG4gICAgICAgICAgICB0aW1lOiBmb3JtYXROb3codGhpcy50aW1lem9uZSksXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuc2hvd0ZlZWRCYWNrSWNvbnNJbmRleCA9IHRoaXMuY2hhdExvZy5sZW5ndGggLSAxO1xyXG4gICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLnNjcm9sbFRvQm90dG9tKCk7XHJcblxyXG4gICAgICAvLyBFbnF1ZXVlIHRoZSBuZXh0IGRhdGEgY2h1bmsgaW50byBvdXIgdGFyZ2V0IHN0cmVhbVxyXG4gICAgICBjb250cm9sbGVyLmVucXVldWUodmFsdWUpO1xyXG4gICAgICB0aGlzLnB1bXAoY29udHJvbGxlciwgcmVhZGVyLCBhbGxTdWdnZXN0aW9ucyk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHN1Ym1pdEZlZWRiYWNrKGZsYWc6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuZmVlZGJhY2tEb25lID0gdHJ1ZTtcclxuICAgIHRoaXMuc2hvd0ZlZWRCYWNrSWNvbnNJbmRleCA9IG51bGw7XHJcbiAgICBjb25zdCB1cmwgPSBgJHt0aGlzLmVudmlyb25tZW50LkJBU0VfVVJMfS9ib3QvZmVlZGJhY2tgO1xyXG4gICAgZmV0Y2godXJsLCB7XHJcbiAgICAgIG1ldGhvZDogJ1BPU1QnLFxyXG4gICAgICBoZWFkZXJzOiB7XHJcbiAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcclxuICAgICAgICAneC1hcGkta2V5JzogdGhpcy5hcGlLZXksXHJcbiAgICAgIH0sXHJcbiAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KHsgZmxhZywgdXNlcl9pZDogdGhpcy51c2VySWQsIGJvdF9pZDogdGhpcy5ib3RJZCB9KSxcclxuICAgIH0pLnRoZW4oKCkgPT4ge1xyXG4gICAgICBpZiAoZmxhZykge1xyXG4gICAgICAgIHRoaXMuY2hhdExvZy5wdXNoKHtcclxuICAgICAgICAgIHR5cGU6ICdhaScsXHJcbiAgICAgICAgICBtZXNzYWdlOlxyXG4gICAgICAgICAgICB0aGlzLnRodW1ic1VwTWVzc2FnZSB8fFxyXG4gICAgICAgICAgICBgR3JlYXQuIE1heSBJIGFzc2lzdCB5b3Ugd2l0aCBhbnl0aGluZyBlbHNlP2AsXHJcbiAgICAgICAgICB0aW1lOiBmb3JtYXROb3codGhpcy50aW1lem9uZSksXHJcbiAgICAgICAgICBpc0ZlZWRiYWNrTXNnOiB0cnVlLFxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICB0aGlzLnNjcm9sbFRvQm90dG9tKCk7XHJcbiAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XHJcbiAgICAgICAgdGhpcy5mZWVkYmFja0RvbmUgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnNob3dGZWVkQmFja0ljb25zSW5kZXggPSBudWxsO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5jaGF0TG9nLnB1c2goe1xyXG4gICAgICAgIHR5cGU6ICdhaScsXHJcbiAgICAgICAgbWVzc2FnZTogdGhpcy5wcm9jZXNzTWVzc2FnZShcclxuICAgICAgICAgIHRoaXMudGh1bWJzRG93bk1lc3NhZ2VzW3RoaXMudGh1bWJzRG93bk1zZ0luZGV4XVxyXG4gICAgICAgICksXHJcbiAgICAgICAgdGltZTogZm9ybWF0Tm93KHRoaXMudGltZXpvbmUpLFxyXG4gICAgICAgIGlzRmVlZGJhY2tNc2c6IHRydWUsXHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLnRodW1ic0Rvd25Nc2dJbmRleCA9XHJcbiAgICAgICAgKHRoaXMudGh1bWJzRG93bk1zZ0luZGV4ICsgMSkgJSB0aGlzLnRodW1ic0Rvd25NZXNzYWdlcy5sZW5ndGg7XHJcbiAgICAgIHRoaXMuc2Nyb2xsVG9Cb3R0b20oKTtcclxuICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XHJcbiAgICAgIHRoaXMuZmVlZGJhY2tEb25lID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuc2hvd0ZlZWRCYWNrSWNvbnNJbmRleCA9IG51bGw7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGhhbmRsZVN1Ym1pdCgpIHtcclxuICAgIHRoaXMuZmV0Y2hEYXRhKCk7XHJcbiAgICB0aGlzLnNjcm9sbFRvQm90dG9tKCk7XHJcbiAgfVxyXG5cclxuICBoYW5kbGVVcENsaWNrKGlkeDogYW55KSB7XHJcbiAgICBpZiAodGhpcy5mZWVkYmFja0RvbmUpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuc3VibWl0RmVlZGJhY2sodHJ1ZSk7XHJcbiAgICB0aGlzLmNoYXRMb2dbaWR4XS5saWtlZCA9ICF0aGlzLmNoYXRMb2dbaWR4XS5saWtlZDtcclxuXHJcbiAgICBpZiAodGhpcy5jaGF0TG9nW2lkeF0udW5saWtlZCkge1xyXG4gICAgICB0aGlzLmNoYXRMb2dbaWR4XS51bmxpa2VkID0gIXRoaXMuY2hhdExvZ1tpZHhdLnVubGlrZWQ7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XHJcbiAgfVxyXG5cclxuICBoYW5kbGVEb3duQ2xpY2soaWR4OiBhbnkpIHtcclxuICAgIGlmICh0aGlzLmZlZWRiYWNrRG9uZSkgcmV0dXJuO1xyXG4gICAgdGhpcy5zdWJtaXRGZWVkYmFjayhmYWxzZSk7XHJcbiAgICB0aGlzLmNoYXRMb2dbaWR4XS51bmxpa2VkID0gIXRoaXMuY2hhdExvZ1tpZHhdLnVubGlrZWQ7XHJcbiAgICBpZiAodGhpcy5jaGF0TG9nW2lkeF0ubGlrZWQpXHJcbiAgICAgIHRoaXMuY2hhdExvZ1tpZHhdLmxpa2VkID0gIXRoaXMuY2hhdExvZ1tpZHhdLmxpa2VkO1xyXG4gIH1cclxuICBoYW5kbGVDb3B5Q2xpY2soaW5kZXg6IGFueSkge1xyXG4gICAgLy8gQ29weSB0aGUgbWVzc2FnZSB0byB0aGUgY2xpcGJvYXJkXHJcbiAgICBjb25zdCBjb250ZW50VG9Db3B5ID0gdGhpcy5jaGF0TG9nW2luZGV4XS5tZXNzYWdlO1xyXG4gICAgbmF2aWdhdG9yLmNsaXBib2FyZC53cml0ZVRleHQoY29udGVudFRvQ29weSkudGhlbigoKSA9PiB7XHJcbiAgICAgIC8vIEluZGljYXRlIHRoYXQgdGhlIG1lc3NhZ2Ugd2FzIGNvcGllZFxyXG4gICAgICB0aGlzLmNoYXRMb2dbaW5kZXhdLmNvcGllZCA9IHRydWU7XHJcbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgLy8gUmVzZXQgdGhlIGNvcGllZCBzdGF0ZSBhZnRlciBhIGRlbGF5XHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuY2hhdExvZ1tpbmRleF0uY29waWVkID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB9LCAyMDAwKTsgLy8gUmVzZXQgYWZ0ZXIgMiBzZWNvbmRzXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHNjcm9sbFRvQm90dG9tKCkge1xyXG4gICAgbGV0IGNvdW50ZXIgPSAwO1xyXG4gICAgY29uc3QgaW50ZXJ2YWwgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XHJcbiAgICAgIHRoaXMuY2hhdE1haW4ubmF0aXZlRWxlbWVudC5zY3JvbGxUb3AgPVxyXG4gICAgICAgIHRoaXMuY2hhdE1haW4ubmF0aXZlRWxlbWVudC5zY3JvbGxIZWlnaHQ7XHJcbiAgICAgIGlmIChjb3VudGVyKysgPiA1KSBjbGVhckludGVydmFsKGludGVydmFsKTtcclxuICAgIH0sIDUpO1xyXG4gIH1cclxuXHJcbiAgaGFuZGxlQWN0aW9uKGFjdGlvbjogYW55KSB7XHJcbiAgICBjb25zb2xlLmluZm8oXCJpbmNvbWluZyBhY3Rpb24gZnJvbSB0aGUgY2hhdGJvdCBBSVwiKVxyXG4gICAgY29uc29sZS5pbmZvKGFjdGlvbilcclxuXHJcbiAgICBpZiAoYWN0aW9uPy5jb250ZW50KSB7XHJcblxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgLy8gQ2hlY2sgaWYgdGhlIGRyYXdlciBpcyBpbml0aWFsbHkgb3BlbiBhbmQgYXBwbHkgb3ZlcmZsb3cgaGlkZGVuIHRvIGJvZHkgaWYgc29cclxuICAgIGlmICh0aGlzLmRyYXdlci5vcGVuZWQpIHtcclxuICAgICAgdGhpcy5zZXRCb2R5T3ZlcmZsb3coKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBMaXN0ZW4gdG8gY2hhbmdlcyBpbiB0aGUgZHJhd2VyIGJlaW5nIG9wZW5lZCBvciBjbG9zZWRcclxuICAgIHRoaXMuZHJhd2VyLm9wZW5lZENoYW5nZS5zdWJzY3JpYmUoKG9wZW5lZDogYm9vbGVhbikgPT4ge1xyXG4gICAgICBpZiAob3BlbmVkKSB7XHJcbiAgICAgICAgdGhpcy5zZXRCb2R5T3ZlcmZsb3coKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnJlbW92ZUJvZHlPdmVyZmxvdygpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmRyYXdlci5vcGVuZWRDaGFuZ2Uuc3Vic2NyaWJlKChvcGVuZWQpID0+IHtcclxuICAgICAgaWYgKG9wZW5lZCkge1xyXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgaWYgKHRoaXMubXlUZXh0YXJlYSAmJiB0aGlzLm15VGV4dGFyZWEubmF0aXZlRWxlbWVudCkge1xyXG4gICAgICAgICAgICB0aGlzLm15VGV4dGFyZWEubmF0aXZlRWxlbWVudC5mb2N1cygpOyAvLyBGb2N1cyBvbiB0aGUgdGV4dGFyZWFcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldEJvZHlPdmVyZmxvdygpIHtcclxuICAgIHRoaXMucmVuZGVyZXIuYWRkQ2xhc3MoZG9jdW1lbnQuYm9keSwgdGhpcy5ib2R5T3ZlcmZsb3dDbGFzcyk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHJlbW92ZUJvZHlPdmVyZmxvdygpIHtcclxuICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQ2xhc3MoZG9jdW1lbnQuYm9keSwgdGhpcy5ib2R5T3ZlcmZsb3dDbGFzcyk7XHJcbiAgfVxyXG5cclxuICBnZXRTcGVha2Vyc0J5U3RhZmZJZHMoaWRzKSB7XHJcbiAgICBjb25zdCB1cmwgPVxyXG4gICAgICBgJHt0aGlzLmVudmlyb25tZW50LlVTRVJTX0FQSX0vZXZlbnRzLyR7dGhpcy5ldmVudElkfS91c2Vycy9nZXQtYnktc3RhZmYtaWRzYFxyXG4gICAgZmV0Y2godXJsLCB7XHJcbiAgICAgIG1ldGhvZDogJ1BPU1QnLFxyXG4gICAgICBoZWFkZXJzOiB7XHJcbiAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcclxuICAgICAgICAnQXV0aG9yaXphdGlvbic6IFwiQmVhcmVyIFwiICsgXCJ5b3VyX3Rva2VuX2hlcmVcIixcclxuICAgICAgfSxcclxuICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoaWRzKSxcclxuICAgIH0pXHJcbiAgICAgIC50aGVuKChyZXNwb25zZSkgPT4ge1xyXG4gICAgICAgIGlmIChyZXNwb25zZS5vaykge1xyXG4gICAgICAgICAgcmV0dXJuIHJlc3BvbnNlLmpzb24oKTsgLy8gUGFyc2UgdGhlIEpTT04gYm9keSBvZiB0aGUgcmVzcG9uc2VcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdOZXR3b3JrIHJlc3BvbnNlIHdhcyBub3Qgb2suJyk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgICAudGhlbigoZGF0YSkgPT4ge1xyXG4gICAgICAgIGlmIChkYXRhPy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICBkYXRhLmZvckVhY2goc3BlYWtlciA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuc3BlYWtlcnNbc3BlYWtlci5pZF0gPSBzcGVha2VyO1xyXG4gICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgICAuY2F0Y2goKGVycikgPT4ge1xyXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGZldGNoaW5nIGRhdGE6JywgZXJyKTtcclxuICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBwZXJmb3JtU2Vzc2lvbkFjdGlvbihzZXNzaW9uSWQsIGFjdGlvbikge1xyXG4gICAgdGhpcy5zZXNzaW9uQWN0aW9ucy5uZXh0KHtcclxuICAgICAgc2Vzc2lvbklkLFxyXG4gICAgICBhY3Rpb25cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgYWRkQ2xvc2VCb3RDbGlja0V2ZW50KCkge1xyXG4gICAgY29uc3QgZWxlbWVudCA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJyNjbG9zZUJvdE5vdycpO1xyXG4gICAgaWYgKGVsZW1lbnQpIHtcclxuICAgICAgdGhpcy5yZW5kZXJlci5saXN0ZW4oZWxlbWVudCwgJ2NsaWNrJywgKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuY2xvc2VCb3QubmV4dCgpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGlzTW9iaWxlQnJvd3NlcigpIHtcclxuICAgIHJldHVybiAvQW5kcm9pZHx3ZWJPU3xpUGhvbmV8aVBhZHxpUG9kfEJsYWNrQmVycnl8SUVNb2JpbGV8T3BlcmEgTWluaS9pLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCk7XHJcbiAgfVxyXG5cclxuICBjb25uZWN0VG9Vc2VyKHVzZXJJZCkge1xyXG4gICAgdGhpcy5jb25uZWN0V2l0aFVzZXIuZW1pdCh7XHJcbiAgICAgIGNvbm5lY3Q6ICF0aGlzLmNhbkRpc2Nvbm5lY3QodXNlcklkKSxcclxuICAgICAgdXNlcklkXHJcbiAgICB9KTtcclxuXHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5mZXRjaE15Q29ubmVjdGlvbnMoKS5zdWJzY3JpYmUocmVzID0+IHtcclxuICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcclxuICAgICAgfSk7XHJcbiAgICAgIHRoaXMuZmV0Y2hQZW5kaW5nUmVxdWVzdHMoKS5zdWJzY3JpYmUocmVzID0+IHtcclxuICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcclxuICAgICAgfSk7XHJcbiAgICB9LCA1MDApO1xyXG4gIH1cclxuXHJcbiAgc2NoZWR1bGVNZWV0aW5nV2l0aFVzZXIodXNlcikge1xyXG4gICAgdGhpcy5zY2hlZHVsZU1lZXRpbmcuZW1pdCh1c2VyKTtcclxuICB9XHJcblxyXG4gIGNhbkNvbm5lY3QodXNlcklkKSB7XHJcbiAgICByZXR1cm4gISh0aGlzLmNhbkRpc2Nvbm5lY3QodXNlcklkKSB8fCB0aGlzLnBlbmRpbmdSZXF1ZXN0cy5maW5kKGEgPT4gYSA9PSB1c2VySWQpKVxyXG4gIH1cclxuXHJcbiAgY2FuRGlzY29ubmVjdCh1c2VySWQpIHtcclxuICAgIHJldHVybiB0aGlzLm15Q29ubmVjdGlvbnMuZmluZChjb25uID0+IGNvbm4udXNlcklkID09IHVzZXJJZClcclxuICB9XHJcblxyXG4gIGZldGNoUGVuZGluZ1JlcXVlc3RzKCkge1xyXG4gICAgY29uc3QgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycyh7XHJcbiAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXHJcbiAgICAgICdhcGlLZXknOiB0aGlzLmF1dG9nZW5LZXlcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cFxyXG4gICAgICAuZ2V0KFxyXG4gICAgICAgIGAke3RoaXMuZW52aXJvbm1lbnQuVVNFUlNfQVBJfS9ldmVudHMvJHt0aGlzLmV2ZW50SWR9L2Nvbm5lY3Rpb24tcmVxdWVzdHMvYXV0b2dlbi9wZW5kaW5nLXNlbnQtcmVxdWVzdHM/dXNlcklkPSR7dGhpcy51c2VySWR9YCxcclxuICAgICAgICB7IGhlYWRlcnMgfVxyXG4gICAgICApXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIHN3aXRjaE1hcCgocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgIHRoaXMucGVuZGluZ1JlcXVlc3RzID0gcmVzO1xyXG4gICAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XHJcbiAgICAgICAgICByZXR1cm4gb2YocmVzKTtcclxuICAgICAgICB9KSxcclxuICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogYW55KSA9PiB7XHJcbiAgICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBmZXRjaGluZyBwZW5kaW5nIHJlcXVlc3RzOiAnLCBlcnJvcik7XHJcbiAgICAgICAgICByZXR1cm4gb2YobnVsbCk7XHJcbiAgICAgICAgfSlcclxuICAgICAgKTtcclxuICB9XHJcblxyXG4gIGZldGNoTXlDb25uZWN0aW9ucygpIHtcclxuICAgIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoe1xyXG4gICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxyXG4gICAgICAnYXBpS2V5JzogdGhpcy5hdXRvZ2VuS2V5XHJcbiAgICB9KTtcclxuICAgIHJldHVybiB0aGlzLmh0dHBcclxuICAgICAgLmdldChcclxuICAgICAgICBgJHt0aGlzLmVudmlyb25tZW50LlVTRVJTX0FQSX0vZXZlbnRzLyR7dGhpcy5ldmVudElkfS91c2Vycy1jb25uZWN0aW9ucy9hdXRvZ2VuP3VzZXJJZD0ke3RoaXMudXNlcklkfWAsXHJcbiAgICAgICAgeyBoZWFkZXJzIH1cclxuICAgICAgKVxyXG4gICAgICAucGlwZShcclxuICAgICAgICBzd2l0Y2hNYXAoKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICB0aGlzLm15Q29ubmVjdGlvbnMgPSByZXM7XHJcbiAgICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcclxuICAgICAgICAgIHJldHVybiBvZihyZXMpO1xyXG4gICAgICAgIH0pLFxyXG4gICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBhbnkpID0+IHtcclxuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGZldGNoaW5nIHBlbmRpbmcgcmVxdWVzdHM6ICcsIGVycm9yKTtcclxuICAgICAgICAgIHJldHVybiBvZihudWxsKTtcclxuICAgICAgICB9KVxyXG4gICAgICApO1xyXG4gIH1cclxuXHJcblxyXG4gIGlzRHJvcGRvd25PcGVuOiBib29sZWFuID0gZmFsc2U7XHJcbiAgYWdlbnRzOiBhbnk7XHJcbiAgLy8gVG9nZ2xlIHRoZSBkcm9wZG93biB2aXNpYmlsaXR5XHJcbiAgdG9nZ2xlRHJvcGRvd24oKSB7XHJcbiAgICB0aGlzLmlzRHJvcGRvd25PcGVuID0gIXRoaXMuaXNEcm9wZG93bk9wZW47XHJcbiAgfVxyXG5cclxuICBvblNlbGVjdEFsbChldmVudDogRXZlbnQpIHtcclxuICAgIGNvbnN0IGlzU2VsZWN0ZWQgPSAoZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQpLmNoZWNrZWQ7XHJcbiAgICBpZiAoaXNTZWxlY3RlZClcclxuICAgICAgdGhpcy5hZ2VudHM/LmZvckVhY2goYWdlbnQgPT4gYWdlbnQuc2VsZWN0ZWQgPSBmYWxzZSk7XHJcbiAgfVxyXG5cclxuICBvbkFnZW50Q2hhbmdlKGFnZW50OiBhbnkpIHtcclxuICAgIC8vYWdlbnQuc2VsZWN0ZWQgPSAhYWdlbnQuc2VsZWN0ZWQ7XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBhcmVBbGxTZWxlY3RlZCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLmFnZW50cz8uZXZlcnkoYWdlbnQgPT4gIWFnZW50LnNlbGVjdGVkKTtcclxuICB9XHJcblxyXG4gIGdldERyb3Bkb3duSGVhZGVyVGV4dCgpOiBzdHJpbmcge1xyXG4gICAgY29uc3Qgc2VsZWN0ZWRBZ2VudHMgPSB0aGlzLmFnZW50cz8uZmlsdGVyKGFnZW50ID0+IGFnZW50LnNlbGVjdGVkKTtcclxuICAgIGlmIChzZWxlY3RlZEFnZW50cy5sZW5ndGggPT09IDApIHtcclxuICAgICAgcmV0dXJuICdBbGwnO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIGAke3NlbGVjdGVkQWdlbnRzLmxlbmd0aH0gc2VsZWN0ZWRgO1xyXG4gICAgfVxyXG4gIH1cclxuICBmZXRjaEFnZW50c19odHRwKCkge1xyXG4gICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcclxuICAgIGNvbnN0IHVybCA9IGAke3RoaXMuZW52aXJvbm1lbnQuQUdFTlRTX0FQSX0vQ29QaWxvdC8ke3RoaXMuYm90SWR9L2FjdGl2ZS1hZ2VudHNgO1xyXG4gICAgY29uc3QgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycyh7XHJcbiAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbidcclxuICAgIH0pO1xyXG5cclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdCh1cmwsIHt9LCB7IGhlYWRlcnMgfSkucGlwZShcclxuICAgICAgc3dpdGNoTWFwKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChyZXMpIHtcclxuICAgICAgICAgIHRoaXMuYWdlbnRzID0gcmVzLm1hcChhZ2VudCA9PiAoe1xyXG4gICAgICAgICAgICAuLi5hZ2VudCxcclxuICAgICAgICAgICAgc2VsZWN0ZWQ6IGZhbHNlXHJcbiAgICAgICAgICB9KSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xyXG5cclxuICAgICAgICByZXR1cm4gb2YocmVzKTtcclxuICAgICAgfSksXHJcbiAgICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PiB7XHJcbiAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgZmV0Y2hpbmcgY2hhdGJvdCBjb25maWc6ICcsIGVycm9yKTtcclxuXHJcbiAgICAgICAgcmV0dXJuIG9mKG51bGwpO1xyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICB9XHJcblxyXG5cclxuICBmZXRjaEFnZW50cygpIHtcclxuICAgIHRoaXMuZmV0Y2hBZ2VudHNfaHR0cCgpXHJcbiAgICAgIC5zdWJzY3JpYmUoKTtcclxuICB9XHJcblxyXG5cclxuXHJcbiAgLy8gZXZlbnRzLyR7ZXZlbnRJZH0vdXNlcnMtY29ubmVjdGlvbnNcclxuICBwcm9jZXNzTWVzc2FnZUZvckRpc3BsYXkobWFya2Rvd246IHN0cmluZyk6IFNhZmVIdG1sIHtcclxuICAgIGlmICghbWFya2Rvd24gfHwgIShtYXJrZG93bi5sZW5ndGggPiAwKSkge1xyXG4gICAgICBjb25zb2xlLmVycm9yKCdJbnB1dCBNYXJrZG93biBpcyBudWxsIG9yIGVtcHR5Jyk7XHJcbiAgICAgIHJldHVybiAnJztcclxuICAgIH1cclxuXHJcbiAgICBjb25zb2xlLmxvZygnTWFya2Rvd24gaW5wdXQ6JywgbWFya2Rvd24pO1xyXG5cclxuICAgIC8vIENvbnZlcnQgTWFya2Rvd24gaGVhZGVycyB0byBIVE1MIGhlYWRlcnNcclxuICAgIGxldCBodG1sID0gbWFya2Rvd24ucmVwbGFjZSgvXigjezEsNn0pXFxzKyguKikkL2dtLCAobWF0Y2gsIGhhc2hlcywgdGV4dCkgPT4ge1xyXG4gICAgICBjb25zdCBsZXZlbCA9IGhhc2hlcy5sZW5ndGg7XHJcbiAgICAgIHJldHVybiBgPGgke2xldmVsfT4ke3RleHR9PC9oJHtsZXZlbH0+YDtcclxuICAgIH0pO1xyXG5cclxuICAgIGNvbnNvbGUubG9nKCdBZnRlciBoZWFkZXIgY29udmVyc2lvbjonLCBodG1sKTtcclxuXHJcbiAgICAvLyBDb252ZXJ0IE1hcmtkb3duIGxpbmtzIHRvIEhUTUwgbGlua3NcclxuICAgIGh0bWwgPSBodG1sLnJlcGxhY2UoL1xcWyhbXlxcXV0rKV1cXCgoW14pXSspXFwpL2csICc8YSBocmVmPVwiJDJcIiB0YXJnZXQ9XCJfYmxhbmtcIj4kMTwvYT4nKTtcclxuXHJcbiAgICBjb25zb2xlLmxvZygnQWZ0ZXIgbGluayBjb252ZXJzaW9uOicsIGh0bWwpO1xyXG5cclxuICAgIC8vIENvbnZlcnQgTWFya2Rvd24gYm9sZCB0byBIVE1MIHN0cm9uZ1xyXG4gICAgaHRtbCA9IGh0bWwucmVwbGFjZSgvXFwqXFwqKC4qPylcXCpcXCovZywgJzxzdHJvbmc+JDE8L3N0cm9uZz4nKTtcclxuXHJcbiAgICBjb25zb2xlLmxvZygnQWZ0ZXIgYm9sZCBjb252ZXJzaW9uOicsIGh0bWwpO1xyXG5cclxuICAgIC8vIENvbnZlcnQgbmV3IGxpbmVzIHRvIDxicj4gdGFnc1xyXG4gICAgaHRtbCA9IGh0bWwucmVwbGFjZSgvKD86XFxyXFxufFxccnxcXG4pL2csICc8YnI+Jyk7XHJcblxyXG4gICAgY29uc29sZS5sb2coJ0FmdGVyIGxpbmUgYnJlYWtzIGNvbnZlcnNpb246JywgaHRtbCk7XHJcblxyXG4gICAgLy8gT3B0aW9uYWw6IFNhbml0aXplIHRoZSBIVE1MIHRvIHByZXZlbnQgWFNTXHJcbiAgICBjb25zdCBzYW5pdGl6ZWRIdG1sID0gdGhpcy5zYW5pdGl6ZUh0bWwoaHRtbCk7XHJcblxyXG4gICAgY29uc29sZS5sb2coJ1Nhbml0aXplZCBIVE1MOicsIHNhbml0aXplZEh0bWwpO1xyXG5cclxuICAgIHJldHVybiBzYW5pdGl6ZWRIdG1sO1xyXG4gIH1cclxuXHJcblxyXG59XHJcbiJdfQ==
|
|
858
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdC1kcmF3ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IkQ6L2hpdmVHUFQtQUktcGFja2FnZXMvSGl2ZUFJLVBhY2thZ2VzL3Byb2plY3RzL2hpdmVncHQvZXZlbnRzZ3B0LWFuZ3VsYXIvc3JjLyIsInNvdXJjZXMiOlsibGliL2NvbXBvbmVudHMvY2hhdC1kcmF3ZXIvY2hhdC1kcmF3ZXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLG9EQUFvRDtBQUNwRCxPQUFPLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQy9ELE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLEtBQUssRUFFTCxNQUFNLEVBQ04sU0FBUyxFQUNULFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsWUFBWSxFQUFZLE1BQU0sMkJBQTJCLENBQUM7QUFDbkUsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMxQixPQUFPLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsZUFBZSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDdEYsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFTOUQsTUFBTSxPQUFPLG1CQUFtQjtJQXNGOUIsWUFDVSxHQUFzQixFQUN0QixJQUFnQixFQUNoQixTQUF1QixFQUN2QixVQUFzQixFQUN0QixRQUFtQixFQUNuQixZQUFpQztJQUN6Qyw2QkFBNkI7O1FBTnJCLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBQ3RCLFNBQUksR0FBSixJQUFJLENBQVk7UUFDaEIsY0FBUyxHQUFULFNB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cm0gfSBmcm9tICdAYW5ndWxhci9jZGsvcGxhdGZvcm0nO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwSGVhZGVycyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHtcclxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICBDb21wb25lbnQsXHJcbiAgRWxlbWVudFJlZixcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgSW5wdXQsXHJcbiAgT25Jbml0LFxyXG4gIE91dHB1dCxcclxuICBSZW5kZXJlcjIsXHJcbiAgVmlld0NoaWxkLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBNYXREcmF3ZXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zaWRlbmF2JztcclxuaW1wb3J0IHsgRG9tU2FuaXRpemVyLCBTYWZlSHRtbCB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xyXG5pbXBvcnQgeyBvZiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBjYXRjaEVycm9yLCBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IGZvcm1hdE5vdywgZm9ybWF0VGltZVN0YW1wcyB9IGZyb20gJy4uLy4uL3V0aWxzL3V0aWxzJztcclxuaW1wb3J0IHsgZGV2X2Vudmlyb25tZW50LCBwcm9kX2Vudmlyb25tZW50IH0gZnJvbSAnLi4vLi4vLi4vZW52aXJvbm1lbnRzL2Vudmlyb25tZW50JztcclxuaW1wb3J0IHsgQ29udmVyc2F0aW9uU2VydmljZSB9IGZyb20gJy4uL2NvbnZlcnNhdGlvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdoaXZlZ3B0LWNoYXQtZHJhd2VyJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vY2hhdC1kcmF3ZXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2NoYXQtZHJhd2VyLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDaGF0RHJhd2VyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBAVmlld0NoaWxkKCdjaGF0TWFpbicpIHByaXZhdGUgY2hhdE1haW46IEVsZW1lbnRSZWY7XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ2RyYXdlcicpIGRyYXdlciE6IE1hdERyYXdlcjtcclxuICBwcml2YXRlIGJvZHlPdmVyZmxvd0NsYXNzID0gJ2JvZHktb3ZlcmZsb3ctaGlkZGVuJztcclxuICBAVmlld0NoaWxkKCdteVRleHRhcmVhJywgeyBzdGF0aWM6IGZhbHNlIH0pXHJcbiAgbXlUZXh0YXJlYSE6IEVsZW1lbnRSZWY8SFRNTFRleHRBcmVhRWxlbWVudD47IC8vIFJlZmVyZW5jZSB0byB0aGUgdGV4dGFyZWFcclxuXHJcbiAgQElucHV0KCkgY29waWxvdE5hbWU6IHN0cmluZyA9IFwiSGl2ZVhHUFRcIjtcclxuICBASW5wdXQoKSBmaXJzdE5hbWUhOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgbGFzdE5hbWUhOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgYXBpS2V5ITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIGJnQnViYmxlQWkhOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgYmdCdWJibGVVc2VyITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIGJnR3JhZGllbnQhOiBzdHJpbmdbXTtcclxuICBASW5wdXQoKSBib3ROYW1lITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIGJvdFNraWxscyE6IHN0cmluZztcclxuICBASW5wdXQoKSBib3RJZCE6IHN0cmluZztcclxuICBASW5wdXQoKSBjbG9zZUJ1dHRvbkNvbG9yITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIGNsb3NlQnV0dG9uYmdDb2xvciE6IHN0cmluZztcclxuICBASW5wdXQoKSBjcmVkZW50aWFscyE6IFtdO1xyXG4gIEBJbnB1dCgpIGRhdGVUaW1lQ29sb3IhOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgZGF0ZVRleHRDb2xvciE6IHN0cmluZztcclxuICBASW5wdXQoKSBldmVudElkITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHMyN1VzZXJUb2tlbiE6IHN0cmluZztcclxuICBASW5wdXQoKSBldmVudE5hbWUhOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgYm90SWNvbiE6IHN0cmluZztcclxuICBASW5wdXQoKSBmb3JtRmllbGRCZ0NvbG9yITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIGZvcm1GaWVsZFRleHRDb2xvciE6IHN0cmluZztcclxuICBASW5wdXQoKSBmdWxsVmlldyE6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgZ3JhZGllbnRDb2xvcnMhOiBzdHJpbmdbXTtcclxuICBASW5wdXQoKSBncmVldGluZyE6IHN0cmluZztcclxuICBASW5wdXQoKSBtZXNzYWdlVGV4dENvbG9yQWkhOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgbWVzc2FnZVRleHRDb2xvclVzZXIhOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgcnVsZXMhOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgc2VuZEJ1dHRvbkNvbG9yITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHNlbmRCdXR0b25UZXh0Q29sb3IhOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgc2hvd0Nsb3NlITogYm9vbGVhbjtcclxuICBASW5wdXQoKSB0aHVtYnNEb3duTWVzc2FnZXMhOiBzdHJpbmdbXTtcclxuICBASW5wdXQoKSB0aHVtYnNVcE1lc3NhZ2UhOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgdGltZXpvbmUhOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgdW5rbm93blJlc3BvbnNlcyE6IFtdO1xyXG4gIEBJbnB1dCgpIHVzZU9wZW5BaSE6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgdXNlcklkITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIGlzRGV2ITogYm9vbGVhbjtcclxuXHJcbiAgQElucHV0KCkgYWdhaW5CdXR0b25Db2xvciE6IHN0cmluZ1tdO1xyXG4gIEBJbnB1dCgpIGFnYWluQnV0dG9uVGV4dENvbG9yITogc3RyaW5nW107XHJcbiAgQE91dHB1dCgpIGZlZWRiYWNrRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcclxuICBAT3V0cHV0KCkgb25DbG9zZUV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xyXG4gIEBPdXRwdXQoKSBvcGVuUGFnZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gIEBPdXRwdXQoKSBzZXNzaW9uQWN0aW9ucyA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gIEBPdXRwdXQoKSBjbG9zZUJvdCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gIEBPdXRwdXQoKSBjb25uZWN0V2l0aFVzZXIgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICBAT3V0cHV0KCkgc2NoZWR1bGVNZWV0aW5nID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XHJcblxyXG4gIGF1dG9nZW5LZXkgPSBcIkF1dG9nZW5fZURKVHRFVS1OQjBSdElwenExd1wiXHJcbiAgYWRkVG9NeUFnZW5kYUFjdGlvbiA9IFwiYWRkX3RvX215X2FnZW5kYVwiO1xyXG4gIG15VXBjb21pbmdTZXNzaW9uQWN0aW9uID0gXCJteV91cGNvbW1pbmdfc2Vzc2lvblwiO1xyXG4gIGNvbm5lY3RPckZvbGxvd0FjdGlvbiA9IFwiY29ubmVjdF9vcl9mb2xsb3dcIjtcclxuICBhaVJlc3BvbnNlOiBzdHJpbmcgPSAnJztcclxuICBjaGF0TG9nOiBhbnlbXSA9IFtdO1xyXG4gIGRlY29kZXIgPSBuZXcgVGV4dERlY29kZXIoKTtcclxuICBmZWVkYmFja0RvbmU6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBncmVldGluZ01zZzogc3RyaW5nID0gJyc7XHJcbiAgaGFzQmFja2Ryb3BWYWx1ZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGlucHV0OiBzdHJpbmcgPSAnJztcclxuICBsaXN0ZW5lckFkZGVkID0gZmFsc2U7XHJcbiAgbG9hZGluZzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIG1vZGU6IHN0cmluZyA9ICdvdmVyJztcclxuICBxdWlja1Byb21wdHM6IGFueVtdID0gW107XHJcbiAgdGh1bWJzRG93bk1zZ0luZGV4ID0gMDtcclxuICB1c2VyTmFtZTogc3RyaW5nID0gJyc7XHJcbiAgc2hvd1N0YXJ0QWdhaW46IGJvb2xlYW4gPSBmYWxzZTtcclxuICBpc0lPU0RldmljZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHNob3dGZWVkQmFja0ljb25zSW5kZXg6IG51bWJlciB8IG51bGwgPSBudWxsO1xyXG4gIHRlbXBlcmF0dXJlOiBudW1iZXIgPSAxO1xyXG4gIHNwZWFrZXJzID0gW107XHJcbiAgZW52aXJvbm1lbnQ6IHtcclxuICAgIFVTRVJTX0FQSSxcclxuICAgIEJBU0VfVVJMLFxyXG4gICAgQUdFTlRTX0FQSVxyXG4gIH07XHJcbiAgcGVuZGluZ1JlcXVlc3RzOiBhbnk7XHJcbiAgbXlDb25uZWN0aW9uczogYW55O1xyXG4gIGNvbnZlcnNhdGlvbktleTogc3RyaW5nO1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgcHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LFxyXG4gICAgcHJpdmF0ZSBzYW5pdGl6ZXI6IERvbVNhbml0aXplcixcclxuICAgIHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZixcclxuICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMixcclxuICAgIHByaXZhdGUgY29udmVyc2F0aW9uOiBDb252ZXJzYXRpb25TZXJ2aWNlXHJcbiAgICAvLyBwcml2YXRlIHBsYXRmb3JtOiBQbGF0Zm9ybVxyXG4gICkge1xyXG4gICAgdGhpcy5jaGF0TWFpbiA9IG5ldyBFbGVtZW50UmVmKG51bGwpO1xyXG5cclxuICAgIC8vIGlmICh0aGlzLnBsYXRmb3JtLklPUykge1xyXG4gICAgLy8gICB0aGlzLmlzSU9TRGV2aWNlID0gdHJ1ZTtcclxuICAgIC8vIH1cclxuXHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuZW52aXJvbm1lbnQgPSB0aGlzLmlzRGV2ID8gZGV2X2Vudmlyb25tZW50IDogcHJvZF9lbnZpcm9ubWVudDtcclxuXHJcbiAgICAvLyB0aGlzLmZldGNoTXlDb25uZWN0aW9ucygpLnN1YnNjcmliZSgpO1xyXG4gICAgLy8gdGhpcy5mZXRjaFBlbmRpbmdSZXF1ZXN0cygpLnN1YnNjcmliZSgpO1xyXG5cclxuICAgIHRoaXMuY2hhbmdlVGVtcGVyYXR1cmUodGhpcy50ZW1wZXJhdHVyZSk7XHJcbiAgICB0aGlzLmZldGNoQm90Q29uZmlnKCkuc3Vic2NyaWJlKFxyXG4gICAgICAocmVzKSA9PiB7XHJcbiAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XHJcblxyXG4gICAgICAgIHRoaXMuZmV0Y2hDaGF0SGlzdG9yeSgpLnN1YnNjcmliZShcclxuICAgICAgICAgIChyZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5tYXBDaGF0SGlzdG9yeShyZXNwb25zZSk7XHJcbiAgICAgICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIChlcnIpID0+IHtcclxuICAgICAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgZmV0Y2hpbmcgY2hhdCBoaXN0b3J5OicsIGVycik7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgKTtcclxuICAgICAgfSxcclxuICAgICAgKGVycikgPT4ge1xyXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGZldGNoaW5nIGNoYXQgaGlzdG9yeTonLCBlcnIpO1xyXG4gICAgICB9XHJcbiAgICApO1xyXG4gICAgdGhpcy5mZXRjaEFnZW50cygpO1xyXG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XHJcbiAgfVxyXG5cclxuICBjaGFuZ2VUZW1wZXJhdHVyZShuZXdUZW1wZXJhdHVyZTogbnVtYmVyKSB7XHJcbiAgICBpZiAodGhpcy5sb2FkaW5nKSByZXR1cm47XHJcbiAgICB0aGlzLnRlbXBlcmF0dXJlID0gbmV3VGVtcGVyYXR1cmU7XHJcbiAgICBjb25zdCB3cmFwcGVyID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmhpdmVncHQtY2hhdC13cmFwcGVyJylcclxuICAgIC8vIFJlbW92ZSBleGlzdGluZyB0aGVtZSBjbGFzc2VzIGZyb20gYm9keVxyXG4gICAgd3JhcHBlcj8uY2xhc3NMaXN0LnJlbW92ZSgnY3JlYXRpdmUnLCAnYmFsYW5jZWQnLCAncHJlY2lzZScpO1xyXG5cclxuICAgIHN3aXRjaCAobmV3VGVtcGVyYXR1cmUpIHtcclxuICAgICAgY2FzZSAwOlxyXG4gICAgICAgIHdyYXBwZXI/LmNsYXNzTGlzdC5hZGQoJ2NyZWF0aXZlJyk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgMTpcclxuICAgICAgICB3cmFwcGVyPy5jbGFzc0xpc3QuYWRkKCdiYWxhbmNlZCcpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIDI6XHJcbiAgICAgICAgd3JhcHBlcj8uY2xhc3NMaXN0LmFkZCgncHJlY2lzZScpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25TdGFydEFnYWluKCkge1xyXG4gICAgaWYgKHRoaXMubG9hZGluZykgcmV0dXJuO1xyXG4gICAgdGhpcy5zaG93U3RhcnRBZ2FpbiA9IGZhbHNlO1xyXG4gICAgdGhpcy5jaGF0TG9nID0gW107XHJcbiAgICB0aGlzLmNoYXRMb2cucHVzaCh7XHJcbiAgICAgIHR5cGU6ICdhaScsXHJcbiAgICAgIG1lc3NhZ2U6XHJcbiAgICAgICAgdGhpcy5ncmVldGluZ01zZyB8fFxyXG4gICAgICAgIHRoaXMucHJvY2Vzc01lc3NhZ2UoXHJcbiAgICAgICAgICBcIkdyZWV0aW5ncyEgSSdtIHlvdXIgQ09QMjggdmlydHVhbCBhc3Npc3RhbnQuIEhhdmUgcXVlc3Rpb25zIGFib3V0IHRoZSBldmVudD8gSSdtIGhlcmUgdG8gaGVscC5cIlxyXG4gICAgICAgICksXHJcbiAgICAgIHRpbWU6IGZvcm1hdE5vdyh0aGlzLnRpbWV6b25lKSxcclxuICAgIH0pO1xyXG4gICAgdGhpcy5hcmNoaWV2ZU1lc3NhZ2VzKCkuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG5cclxuICBhcmNoaWV2ZU1lc3NhZ2VzKCkge1xyXG4gICAgY29uc3QgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycyh7XHJcbiAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXHJcbiAgICAgICd4LWFwaS1rZXknOiB0aGlzLmFwaUtleSxcclxuICAgIH0pO1xyXG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5lbnZpcm9ubWVudC5CQVNFX1VSTH0vYm90L2NsZWFyLWhpc3RvcnkvJHt0aGlzLmJvdElkfS8ke3RoaXMudXNlcklkfWA7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QodXJsLCB7fSwgeyBoZWFkZXJzIH0pLnBpcGUoXHJcbiAgICAgIHN3aXRjaE1hcCgocmVzOiBhbnkpID0+IHtcclxuICAgICAgICByZXR1cm4gb2YocmVzKTtcclxuICAgICAgfSksXHJcbiAgICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIG9mKG51bGwpO1xyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGZldGNoQm90Q29uZmlnKCkge1xyXG4gICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcclxuICAgIGNvbnN0IHVybCA9IGAke3RoaXMuZW52aXJvbm1lbnQuQkFTRV9VUkx9L2JvdHM/Ym90X2lkPSR7dGhpcy5ib3RJZH1gO1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQodXJsKS5waXBlKFxyXG4gICAgICBzd2l0Y2hNYXAoKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgdGhpcy5ib3ROYW1lID0gcmVzLk5hbWU7XHJcbiAgICAgICAgdGhpcy5ib3RJY29uID0gcmVzLkljb247XHJcbiAgICAgICAgdGhpcy5ib3RTa2lsbHMgPSByZXM/LlNraWxscztcclxuICAgICAgICB0aGlzLmdyZWV0aW5nTXNnID0gcmVzLkdyZWV0aW5nO1xyXG5cclxuICAgICAgICB0aGlzLnRodW1ic0Rvd25NZXNzYWdlcyA9IHJlcz8uTmVnYXRpdmVSZXNwb25zZXM/Lmxlbmd0aFxyXG4gICAgICAgICAgPyByZXMuTmVnYXRpdmVSZXNwb25zZXNcclxuICAgICAgICAgIDogW1xyXG4gICAgICAgICAgICBcIldlIGFyZSBzb3JyeSB3ZSd2ZSBub3QgYmVlbiBhYmxlIHRvIGFuc3dlciB5b3VyIHF1ZXN0aW9uLjxici8+IEhvd2V2ZXIsIG91ciBkZWRpY2F0ZWQgc3VwcG9ydCB0ZWFtIGlzIGhhcHB5IHRvIGhlbHAuIDxzcGFuIGNsYXNzPSdmZWVkYmFjay1saW5rJyBzdHlsZT0nY3Vyc29yOiBwb2ludGVyOyB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsgZm9udC13ZWlnaHQ6IDcwMDsgY29sb3I6ICMxNzIzNUI7Jz5QbGVhc2UgY2xpY2sgaGVyZTwvc3Bhbj4gYW5kIGEgaHVtYW4gYWdlbnQgd2lsbCBhc3Npc3QgeW91IGFzIHNvb24gYXMgcG9zc2libGVcIixcclxuICAgICAgICAgIF07XHJcbiAgICAgICAgdGhpcy5xdWlja1Byb21wdHMgPSByZXMuUXVpY2tQcm9tcHRzO1xyXG4gICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgIHJldHVybiBvZihyZXMpO1xyXG4gICAgICB9KSxcclxuICAgICAgY2F0Y2hFcnJvcigoZXJyb3IpID0+IHtcclxuICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBmZXRjaGluZyBjaGF0Ym90IGNvbmZpZzogJywgZXJyb3IpO1xyXG4gICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgIHJldHVybiBvZihudWxsKTtcclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBmZXRjaENoYXRIaXN0b3J5KCk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xyXG4gICAgdGhpcy5jb252ZXJzYXRpb25LZXkgPSB0aGlzLmNvbnZlcnNhdGlvbi5nZXRLZXkodGhpcy5ib3RJZCk7XHJcbiAgICBjb25zdCB1cmwgPSBgJHt0aGlzLmVudmlyb25tZW50LkJBU0VfVVJMfS9jb252ZXJzYXRpb25zLyR7dGhpcy5jb252ZXJzYXRpb25LZXl9YDtcclxuICAgIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoe1xyXG4gICAgICAnYWNjZXB0JzogJ2FwcGxpY2F0aW9uL2pzb24nXHJcbiAgICB9KTtcclxuXHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldCh1cmwsIHsgaGVhZGVycyB9KS5waXBlKFxyXG4gICAgICBjYXRjaEVycm9yKHRoaXMuaGFuZGxlRXJyb3I8YW55PignZmV0Y2hDb252ZXJzYXRpb24nKSlcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGhhbmRsZUVycm9yPFQ+KG9wZXJhdGlvbiA9ICdvcGVyYXRpb24nLCByZXN1bHQ/OiBUKSB7XHJcbiAgICByZXR1cm4gKGVycm9yOiBhbnkpOiBPYnNlcnZhYmxlPFQ+ID0+IHtcclxuICAgICAgY29uc29sZS5lcnJvcihgJHtvcGVyYXRpb259IGZhaWxlZDogJHtlcnJvci5tZXNzYWdlfWApO1xyXG4gICAgICByZXR1cm4gb2YocmVzdWx0IGFzIFQpO1xyXG4gICAgfTtcclxuICB9XHJcbiAgLy8gZmV0Y2hDaGF0SGlzdG9yeSgpIHtcclxuICAvLyAgIHRoaXMubG9hZGluZyA9IHRydWU7XHJcbiAgLy8gICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKHtcclxuICAvLyAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcclxuICAvLyAgICAgJ3gtYXBpLWtleSc6IHRoaXMuYXBpS2V5LFxyXG4gIC8vICAgfSk7XHJcbiAgLy8gICByZXR1cm4gdGhpcy5odHRwXHJcbiAgLy8gICAgIC5nZXQoYCR7dGhpcy5lbnZpcm9ubWVudC5CQVNFX1VSTH0vY29udmVyc2F0aW9ucy8ke3RoaXMuY29udmVyc2F0aW9uS2V5fWAsIHsgaGVhZGVycyB9KVxyXG4gIC8vICAgICAucGlwZShcclxuICAvLyAgICAgICBzd2l0Y2hNYXAoKHJlczogYW55KSA9PiB7XHJcbiAgLy8gICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAvLyAgICAgICAgIHJldHVybiBvZihyZXMpO1xyXG4gIC8vICAgICAgIH0pLFxyXG4gIC8vICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBhbnkpID0+IHtcclxuICAvLyAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGZldGNoaW5nIGNoYXQgaGlzdG9yeTogJywgZXJyb3IpO1xyXG4gIC8vICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgLy8gICAgICAgICByZXR1cm4gb2YobnVsbCk7XHJcbiAgLy8gICAgICAgfSlcclxuICAvLyAgICAgKTtcclxuICAvLyB9XHJcblxyXG4gIG1hcENoYXRIaXN0b3J5KGNoYXRzOiBhbnkpIHtcclxuICAgIHRoaXMuY2hhdExvZy5wdXNoKHtcclxuICAgICAgdHlwZTogJ2FpJyxcclxuICAgICAgbWVzc2FnZTpcclxuICAgICAgICB0aGlzLmdyZWV0aW5nTXNnIHx8XHJcbiAgICAgICAgdGhpcy5wcm9jZXNzTWVzc2FnZShcclxuICAgICAgICAgIFwiR3JlZXRpbmdzISBJJ20geW91ciBDT1AyOCB2aXJ0dWFsIGFzc2lzdGFudC4gSGF2ZSBxdWVzdGlvbnMgYWJvdXQgdGhlIGV2ZW50PyBJJ20gaGVyZSB0byBoZWxwLlwiXHJcbiAgICAgICAgKSxcclxuICAgICAgdGltZTogZm9ybWF0Tm93KHRoaXMudGltZXpvbmUpLFxyXG4gICAgfSk7XHJcbiAgICBpZiAoY2hhdHMgJiYgY2hhdHM/Lk1lc3NhZ2VzPy5sZW5ndGgpIHtcclxuICAgICAgY2hhdHM/Lk1lc3NhZ2VzLmZvckVhY2goKGNoYXQ6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChjaGF0LlR5cGUgPT0gXCJ1c2VyXCIpIHtcclxuICAgICAgICAgIHRoaXMuY2hhdExvZy5wdXNoKHtcclxuICAgICAgICAgICAgdHlwZTogJ3VzZXInLFxyXG4gICAgICAgICAgICBtZXNzYWdlOiB0aGlzLnByb2Nlc3NNZXNzYWdlRm9yRGlzcGxheShjaGF0LlRleHQpLFxyXG4gICAgICAgICAgICB0aW1lOiBmb3JtYXRUaW1lU3RhbXBzKHRoaXMudGltZXpvbmUsIGNoYXQuSW5zZXJ0VGltZXN0YW1wKSxcclxuICAgICAgICAgICAgY29waWVkOiBmYWxzZVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChjaGF0LlR5cGUgPT0gXCJhaVwiKSB7XHJcbiAgICAgICAgICB0aGlzLmNoYXRMb2cucHVzaCh7XHJcbiAgICAgICAgICAgIHR5cGU6ICdhaScsXHJcbiAgICAgICAgICAgIG1lc3NhZ2U6IHRoaXMucHJvY2Vzc01lc3NhZ2VGb3JEaXNwbGF5KGNoYXQuVGV4dCksXHJcbiAgICAgICAgICAgIHRpbWU6IGZvcm1hdFRpbWVTdGFtcHModGhpcy50aW1lem9uZSwgY2hhdC5JbnNlcnRUaW1lc3RhbXApLFxyXG4gICAgICAgICAgICBjb3BpZWQ6IGZhbHNlXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIHRoaXMuc2hvd0ZlZWRCYWNrSWNvbnNJbmRleCA9IHRoaXMuY2hhdExvZy5sZW5ndGggLSAxO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICAgIHRoaXMuc2hvd1N0YXJ0QWdhaW4gPSB0cnVlO1xyXG4gICAgfVxyXG4gICAgdGhpcy5zY3JvbGxUb0JvdHRvbSgpO1xyXG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XHJcbiAgfVxyXG5cclxuICBwcm9jZXNzTWVzc2FnZShtZXNzYWdlOiBzdHJpbmcpOiBTYWZlSHRtbCB7XHJcbiAgICBpZiAoIW1lc3NhZ2UgfHwgIShtZXNzYWdlPy5sZW5ndGggPiAwKSkge1xyXG4gICAgICByZXR1cm4gJyc7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc29sZS5sb2coJ2hlcmUgaXMgbXkgbWVzc2FnZScpXHJcbiAgICBjb25zb2xlLmxvZyhtZXNzYWdlKTtcclxuXHJcbiAgICBtZXNzYWdlID0gbWVzc2FnZS50cmltKCk7XHJcblxyXG4gICAgY29uc3QgbWFya2Rvd25MaW5rUmVnZXggPSAvXFxbKFteW10rKV1cXCgoW14pXSspXFwpL2c7XHJcbiAgICBjb25zdCB1cmxSZWdleCA9IC8oPzwhaHJlZj1cIilcXGJodHRwcz86XFwvXFwvXFxTKyg/PCFbLixdKS9naTtcclxuXHJcbiAgICBpZiAobWFya2Rvd25MaW5rUmVnZXgudGVzdChtZXNzYWdlKSkge1xyXG4gICAgICBjb25zdCBodG1sID0gbWVzc2FnZS5yZXBsYWNlKFxyXG4gICAgICAgIG1hcmtkb3duTGlua1JlZ2V4LFxyXG4gICAgICAgICc8YSBocmVmPVwiJDJcIiB0YXJnZXQ9XCJfYmxhbmtcIj4kMTwvYT4nXHJcbiAgICAgICk7XHJcbiAgICAgIGNvbnNvbGUubG9nKCdTYW5pdGl6ZWQgbWVzc2FnZTogJywgbWVzc2FnZSk7XHJcbiAgICAgIHJldHVybiB0aGlzLnNhbml0aXplSHRtbChodG1sKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodXJsUmVnZXgudGVzdChtZXNzYWdlKSkge1xyXG4gICAgICBjb25zdCBodG1sID0gbWVzc2FnZS5yZXBsYWNlKFxyXG4gICAgICAgIHVybFJlZ2V4LFxyXG4gICAgICAgICc8YSBocmVmPVwiJCZcIiB0YXJnZXQ9XCJfYmxhbmtcIj4kJjwvYT4nXHJcbiAgICAgICk7XHJcbiAgICAgIGNvbnNvbGUubG9nKCdTYW5pdGl6ZWQgbWVzc2FnZTogJywgbWVzc2FnZSk7XHJcbiAgICAgIHJldHVybiB0aGlzLnNhbml0aXplSHRtbChodG1sKTtcclxuICAgIH1cclxuXHJcbiAgICBtZXNzYWdlID0gbWVzc2FnZS5yZXBsYWNlKC8oPzpcXHJcXG58XFxyfFxcbikvZywgJzxicj4nKTtcclxuXHJcbiAgICBtZXNzYWdlID0gbWVzc2FnZS5yZXBsYWNlKC9cXCpcXCooLio/KVxcKlxcKi9nLCAnPHN0cm9uZz4kMTwvc3Ryb25nPicpO1xyXG4gICAgLy8gQ29udmVydCBNYXJrZG93biBoZWFkZXJzIHRvIEhUTUwgaGVhZGVyc1xyXG4gICAgbWVzc2FnZSA9IG1lc3NhZ2UucmVwbGFjZSgvXigjezEsNn0pXFxzKyguKikkL2dtLCAobWF0Y2gsIGhhc2hlcywgdGV4dCkgPT4ge1xyXG4gICAgICBjb25zdCBsZXZlbCA9IGhhc2hlcy5sZW5ndGg7XHJcbiAgICAgIHJldHVybiBgPGgke2xldmVsfT4ke3RleHR9PC9oJHtsZXZlbH0+YDtcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgY29uc3Qgc2FuaXRpemVkTWVzc2FnZSA9IHRoaXMuc2FuaXRpemVIdG1sKG1lc3NhZ2UpO1xyXG4gICAgcmV0dXJuIHNhbml0aXplZE1lc3NhZ2U7XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0NoZWNrZWQoKSB7XHJcbiAgICBjb25zdCBmZWVkYmFja0xpbmtzID1cclxuICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLmZlZWRiYWNrLWxpbmsnKTtcclxuICAgIGZlZWRiYWNrTGlua3MuZm9yRWFjaCgobGluazogYW55KSA9PiB7XHJcbiAgICAgIGxpbmsuYWRkRXZlbnRMaXN0ZW5lcihcclxuICAgICAgICAnY2xpY2snLFxyXG4gICAgICAgIHRoaXMub25GZWVkYmFja0NsaWNrLmJpbmQodGhpcywgJ3plbmRlc2snKVxyXG4gICAgICApO1xyXG4gICAgfSk7XHJcbiAgICAvLyBpZiAodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignLmZlZWRiYWNrLWxpbmsnKSkge1xyXG4gICAgLy8gICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudFxyXG4gICAgLy8gICAgIC5xdWVyeVNlbGVjdG9yKCcuZmVlZGJhY2stbGluaycpXHJcbiAgICAvLyAgICAgLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgdGhpcy5vbkZlZWRiYWNrQ2xpY2suYmluZCh0aGlzLCAnemVuZGVzaycpKTtcclxuICAgIC8vIH1cclxuICB9XHJcblxyXG4gIHNhbml0aXplSHRtbChodG1sOiBzdHJpbmcpOiBTYWZlSHRtbCB7XHJcbiAgICByZXR1cm4gdGhpcy5zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdEh0bWwoaHRtbCk7XHJcbiAgfVxyXG5cclxuICBvbkZlZWRiYWNrQ2xpY2sodmFsdWU6IHN0cmluZykge1xyXG4gICAgdGhpcy5mZWVkYmFja0V2ZW50LmVtaXQodmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgb25DbG9zZSgpIHtcclxuICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQ2xhc3MoZG9jdW1lbnQuYm9keSwgdGhpcy5ib2R5T3ZlcmZsb3dDbGFzcyk7XHJcbiAgICB0aGlzLm9uQ2xvc2VFdmVudC5lbWl0KCk7XHJcbiAgfVxyXG5cclxuICBzZW5kTWVzc2FnZVdpdGhUaWxlKHByb21wdDogc3RyaW5nKSB7XHJcbiAgICB0aGlzLmlucHV0ID0gcHJvbXB0O1xyXG4gICAgdGhpcy5mZXRjaERhdGEoKTtcclxuICAgIHRoaXMuc2Nyb2xsVG9Cb3R0b20oKTtcclxuICB9XHJcbiAgaXNDaGF0aW5nV2l0aEFpID0gZmFsc2U7XHJcbiAgZmV0Y2hEYXRhKCkge1xyXG4gICAgdGhpcy5pbnB1dCA9IHRoaXMuaW5wdXQ/LnRyaW0oKTtcclxuICAgIGlmICghdGhpcy5pbnB1dCB8fCB0aGlzLmxvYWRpbmcpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuY2hhdExvZy5wdXNoKHtcclxuICAgICAgdHlwZTogJ3VzZXInLFxyXG4gICAgICBtZXNzYWdlOiB0aGlzLnByb2Nlc3NNZXNzYWdlKHRoaXMuaW5wdXQpLFxyXG4gICAgICB0aW1lOiBmb3JtYXROb3codGhpcy50aW1lem9uZSksXHJcbiAgICAgIGNvcGllZDogZmFsc2VcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xyXG5cclxuICAgIHRoaXMuYWlSZXNwb25zZSA9ICcnO1xyXG4gICAgdGhpcy5pc0NoYXRpbmdXaXRoQWkgPSB0cnVlO1xyXG5cclxuICAgIGNvbnN0IHVybCA9XHJcbiAgICAgIGAke3RoaXMuZW52aXJvbm1lbnQuQkFTRV9VUkx9L2FpL2Fza2AvLyArXHJcbiAgICAvLyAodGhpcy51c2VPcGVuQWkgPT09IGZhbHNlID8gJy9sbG0taGYnIDogJycpO1xyXG4gICAgZmV0Y2godXJsLCB7XHJcbiAgICAgIG1ldGhvZDogJ1BPU1QnLFxyXG4gICAgICBoZWFkZXJzOiB7XHJcbiAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcclxuICAgICAgICAneC1hcGkta2V5JzogdGhpcy5hcGlLZXksXHJcbiAgICAgIH0sXHJcbiAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KHtcclxuICAgICAgICB1c2VyX3F1ZXN0aW9uOiB0aGlzLmlucHV0LFxyXG4gICAgICAgIHVzZXJfaWQ6IHRoaXMudXNlcklkLFxyXG4gICAgICAgIGJvdF9pZDogdGhpcy5ib3RJZCxcclxuICAgICAgICAvLyB0ZW1wZXJhdHVyZTogdGhpcy50ZW1wZXJhdHVyZSxcclxuICAgICAgICAvLyAgZXZlbnRfaWQ6IHRoaXMuZXZlbnRJZCxcclxuICAgICAgICAvLyB0b2tlbjogdGhpcy5zMjdVc2VyVG9rZW4sXHJcbiAgICAgICAgYWdlbnRzOiB0aGlzLmFnZW50cy5maWx0ZXIocCA9PiBwLnNlbGVjdGVkKS5tYXAocCA9PiBwLmlkKSxcclxuICAgICAgICBjb252ZXJzYXRpb25faWQ6IHRoaXMuY29udmVyc2F0aW9uS2V5XHJcbiAgICAgIH0pLFxyXG4gICAgfSlcclxuICAgICAgLy8gUmV0cmlldmUgaXRzIGJvZHkgYXMgUmVhZGFibGVTdHJlYW1cclxuICAgICAgLnRoZW4oKHJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMucmVhZEFsbENodW5rcyhyZXNwb25zZS5ib2R5KTtcclxuICAgICAgfSlcclxuICAgICAgLmNhdGNoKChlcnIpID0+IHtcclxuICAgICAgICBjb25zb2xlLmVycm9yKCdFcnI6ICcsIGVycik7XHJcbiAgICAgICAgdGhpcy5pc0NoYXRpbmdXaXRoQWkgPSBmYWxzZTtcclxuICAgICAgfSk7XHJcblxyXG4gICAgdGhpcy5pbnB1dCA9ICcnO1xyXG4gIH1cclxuXHJcbiAgZmV0Y2hTbWFsbFRhbGsoKSB7XHJcbiAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xyXG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XHJcblxyXG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5lbnZpcm9ubWVudC5CQVNFX1VSTH0vYm90L3NtYWxsLXRhbGsvJHt0aGlzLmJvdElkfS8ke3RoaXMudXNlcklkfWA7XHJcblxyXG4gICAgdGhpcy5odHRwXHJcbiAgICAgIC5nZXQ8eyBzbWFsbFRhbGs6IHN0cmluZyB9Pih1cmwsIHtcclxuICAgICAgICBoZWFkZXJzOiB7XHJcbiAgICAgICAgICAneC1hcGkta2V5JzogdGhpcy5hcGlLZXksXHJcbiAgICAgICAgfSxcclxuICAgICAgfSlcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3IpID0+IHtcclxuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIHdoaWxlIGZldGNoaW5nIHNtYWxsIHRhbGs6JywgZXJyb3IpO1xyXG5cclxuICAgICAgICAgIHJldHVybiBvZihudWxsKTtcclxuICAgICAgICB9KVxyXG4gICAgICApXHJcbiAgICAgIC5zdWJzY3JpYmUoKHJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XHJcblxyXG4gICAgICAgIGlmICghcmVzcG9uc2UpIHtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChyZXNwb25zZSAmJiByZXNwb25zZS5zbWFsbFRhbGspIHtcclxuICAgICAgICAgIHRoaXMuY2hhdExvZy5wdXNoKHtcclxuICAgICAgICAgICAgdHlwZTogJ2FpJyxcclxuICAgICAgICAgICAgbWVzc2FnZTogdGhpcy5wcm9jZXNzTWVzc2FnZShyZXNwb25zZS5zbWFsbFRhbGspLFxyXG4gICAgICAgICAgICB0aW1lOiBmb3JtYXROb3codGhpcy50aW1lem9uZSksXHJcbiAgICAgICAgICAgIGlzRmVlZGJhY2tNc2c6IHRydWUsXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIHRoaXMuc2hvd0ZlZWRCYWNrSWNvbnNJbmRleCA9IHRoaXMuY2hhdExvZy5sZW5ndGggLSAyO1xyXG4gICAgICAgICAgLy8gdGhpcy5zY3JvbGxUb0JvdHRvbSgpO1xyXG4gICAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIHJlYWRBbGxDaHVua3MgPSAoc3RyZWFtOiBhbnkpID0+IHtcclxuICAgIGNvbnN0IHJlYWRlciA9IHN0cmVhbS5nZXRSZWFkZXIoKTtcclxuICAgIGNvbnN0IGFsbFN1Z2dlc3Rpb25zOiBzdHJpbmdbXSA9IFtdO1xyXG5cclxuICAgIHJlYWRlci5jbG9zZWQuY2F0Y2goKGVycjogYW55KSA9PiB7XHJcbiAgICAgIGlmIChlcnIpIHtcclxuICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciByZWFkaW5nIHN0cmVhbTogJywgZXJyKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5pc0NoYXRpbmdXaXRoQWkgPSBmYWxzZTtcclxuICAgICAgdGhpcy5zY3JvbGxUb0JvdHRvbSgpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9KTtcclxuXHJcbiAgICByZXR1cm4gbmV3IFJlYWRhYmxlU3RyZWFtKHtcclxuICAgICAgc3RhcnQ6IChjb250cm9sbGVyKSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMucHVtcChjb250cm9sbGVyLCByZWFkZXIsIGFsbFN1Z2dlc3Rpb25zKTtcclxuICAgICAgfSxcclxuICAgIH0pO1xyXG4gIH07XHJcblxyXG4gIHB1bXAoY29udHJvbGxlcjogYW55LCByZWFkZXI6IGFueSwgYWxsU3VnZ2VzdGlvbnM6IHN0cmluZ1tdKSB7XHJcbiAgICByZWFkZXIucmVhZCgpLnRoZW4oKHsgZG9uZSwgdmFsdWUgfTogYW55KSA9PiB7XHJcbiAgICAgIGNvbnN0IGxhc3RJdGVtID0gdGhpcy5jaGF0TG9nW3RoaXMuY2hhdExvZy5sZW5ndGggLSAxXTtcclxuXHJcbiAgICAgIGlmIChkb25lKSB7XHJcbiAgICAgICAgbGFzdEl0ZW0ubWVzc2FnZSA9IHRoaXMucHJvY2Vzc01lc3NhZ2VGb3JEaXNwbGF5KGxhc3RJdGVtLm1lc3NhZ2UpO1xyXG4gICAgICAgIHRoaXMuY2hhdExvZy5wb3AoKTtcclxuICAgICAgICB0aGlzLmNoYXRMb2cucHVzaChsYXN0SXRlbSk7XHJcbiAgICAgICAgaWYgKGFsbFN1Z2dlc3Rpb25zPy5sZW5ndGgpIHtcclxuICAgICAgICAgIHRoaXMuY2hhdExvZy5wdXNoKHtcclxuICAgICAgICAgICAgdHlwZTogJ3N1Z2dlc3Rpb25zJyxcclxuICAgICAgICAgICAgc3VnZ2VzdGlvbnM6IGFsbFN1Z2dlc3Rpb25zXHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29udHJvbGxlci5jbG9zZSgpO1xyXG4gICAgICAgIHRoaXMuaXNDaGF0aW5nV2l0aEFpID0gZmFsc2U7XHJcbiAgICAgICAgLy8gdGhpcy5zY3JvbGxUb0JvdHRvbSgpO1xyXG4gICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgICAgIHRoaXMuc2hvd1N0YXJ0QWdhaW4gPSB0cnVlO1xyXG5cclxuICAgICAgICAvLyBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAvLyAgIHRoaXMuZmV0Y2hTbWFsbFRhbGsoKTtcclxuICAgICAgICAvLyB9LDEwMDApXHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBsZXQgZGVjb2RlZENodW5rID0gdGhpcy5kZWNvZGVyLmRlY29kZSh2YWx1ZSwgeyBzdHJlYW06IHRydWUgfSk7XHJcbiAgICAgIHRoaXMuYWlSZXNwb25zZSArPSBkZWNvZGVkQ2h1bms7XHJcbiAgICAgIGlmIChsYXN0SXRlbS50eXBlID09PSAnYWknKSB7XHJcbiAgICAgICAgY29uc3Qgc3VnZ2VzdGlvbnNNYXRjaCA9IHRoaXMuYWlSZXNwb25zZS5tYXRjaCgvPHN1Zz4oLio/KTxcXC9zdWc+L2cpO1xyXG4gICAgICAgIGlmIChzdWdnZXN0aW9uc01hdGNoKSB7XHJcbiAgICAgICAgICBzdWdnZXN0aW9uc01hdGNoLmZvckVhY2goKG1hdGNoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuYWlSZXNwb25zZSA9IHRoaXMuYWlSZXNwb25zZS5yZXBsYWNlKG1hdGNoLCBcIlwiKTtcclxuICAgICAgICAgICAgYWxsU3VnZ2VzdGlvbnMucHVzaChtYXRjaD8ucmVwbGFjZSgvPFxcLz9zdWc+L2csIFwiXCIpKTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgbGFzdEl0ZW0ubWVzc2FnZSA9IHRoaXMuYWlSZXNwb25zZTtcclxuICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmlzQ2hhdGluZ1dpdGhBaSA9IGZhbHNlO1xyXG5cclxuICAgICAgICBsZXQgYWlGb3JtYXR0ZWREYXRhOiBhbnk7XHJcblxyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZygncGFyc2luZyBqc29uICcpXHJcbiAgICAgICAgICBhaUZvcm1hdHRlZERhdGEgPSBKU09OLnBhcnNlKEpTT04ucGFyc2UodGhpcy5haVJlc3BvbnNlKSlcclxuICAgICAgICB9XHJcbiAgICAgICAgY2F0Y2ggKGUpIHtcclxuICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdwYXJzaW5nIGpzb24gMicpXHJcbiAgICAgICAgICAgIGFpRm9ybWF0dGVkRGF0YSA9IEpTT04ucGFyc2UodGhpcy5haVJlc3BvbnNlKVxyXG4gICAgICAgICAgfSBjYXRjaCAoZSkgeyB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zb2xlLmxvZygncGFyc2luZyBqc29uIGRvbmUnKVxyXG5cclxuICAgICAgICBpZiAoYWlGb3JtYXR0ZWREYXRhICYmIGFpRm9ybWF0dGVkRGF0YT8uc2VjdGlvbl9pZD8ubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgaWYgKGFpRm9ybWF0dGVkRGF0YS5zZWN0aW9uX2lkID09ICdjb21wYW55X3NlYXJjaCcgfHwgYWlGb3JtYXR0ZWREYXRhLnNlY3Rpb25faWQgPT0gJ3VzZXJfc2VhcmNoJyB8fCBhaUZvcm1hdHRlZERhdGEuc2VjdGlvbl9pZCA9PSAnaW5kdXN0cnlfY29tcGFueV9zZWFyY2gnKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZmV0Y2hNeUNvbm5lY3Rpb25zKCkuc3Vic2NyaWJlKCk7XHJcbiAgICAgICAgICAgIHRoaXMuZmV0Y2hQZW5kaW5nUmVxdWVzdHMoKS5zdWJzY3JpYmUoKTtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBpZiAoYWlGb3JtYXR0ZWREYXRhLnNlY3Rpb25faWQgPT0gdGhpcy5teVVwY29taW5nU2Vzc2lvbkFjdGlvbikge1xyXG4gICAgICAgICAgICB2YXIgc3BlYWtlcklkcyA9IFtdO1xyXG4gICAgICAgICAgICBhaUZvcm1hdHRlZERhdGEuY29udGVudD8uZm9yRWFjaChzZXNzaW9uID0+IHtcclxuICAgICAgICAgICAgICBzcGVha2VySWRzID0gWy4uLnNwZWFrZXJJZHMsIC4uLnNlc3Npb24uc3BlYWtlcnNdXHJcbiAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgaWYgKHNwZWFrZXJJZHM/Lmxlbmd0aCA+IDApXHJcbiAgICAgICAgICAgICAgdGhpcy5nZXRTcGVha2Vyc0J5U3RhZmZJZHMoc3BlYWtlcklkcyk7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgaWYgKGFpRm9ybWF0dGVkRGF0YS5zZWN0aW9uX2lkID09IHRoaXMuYWRkVG9NeUFnZW5kYUFjdGlvbiAmJiBhaUZvcm1hdHRlZERhdGEuY29udGVudD8ubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICB0aGlzLm9wZW5QYWdlLm5leHQoe1xyXG4gICAgICAgICAgICAgIHNlY3Rpb25JZDogYWlGb3JtYXR0ZWREYXRhLnNlY3Rpb25faWQsXHJcbiAgICAgICAgICAgICAgc2Vzc2lvbklkczogYWlGb3JtYXR0ZWREYXRhLmNvbnRlbnRcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBpZiAoYWlGb3JtYXR0ZWREYXRhLnNlY3Rpb25faWQgPT0gdGhpcy5jb25uZWN0T3JGb2xsb3dBY3Rpb24pIHtcclxuICAgICAgICAgICAgbGV0IHVzZXJzTGVuID0gYWlGb3JtYXR0ZWREYXRhLmNvbnRlbnQ/Lmxlbmd0aDtcclxuICAgICAgICAgICAgaWYgKHVzZXJzTGVuID4gMSkge1xyXG4gICAgICAgICAgICAgIHRoaXMub3BlblBhZ2UubmV4dCh7XHJcbiAgICAgICAgICAgICAgICBzZWN0aW9uSWQ6IFwib3Blbl9uZXR3b3JraW5nX2RyYXdlclwiLFxyXG4gICAgICAgICAgICAgICAgc2VhcmNoOiBhaUZvcm1hdHRlZERhdGEuY29udGVudFxyXG4gICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAodXNlcnNMZW4gPT0gMSkge1xyXG4gICAgICAgICAgICAgIHRoaXMub3BlblBhZ2UubmV4dCh7XHJcbiAgICAgICAgICAgICAgICBzZWN0aW9uSWQ6IGFpRm9ybWF0dGVkRGF0YS5zZWN0aW9uX2lkLFxyXG4gICAgICAgICAgICAgICAgY29ubmV0VXNlcklkczogW2FpRm9ybWF0dGVkRGF0YS5jb250ZW50WzBdLnVzZXJJZF1cclxuICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgaWYgKGFpRm9ybWF0dGVkRGF0YS5pc19vcGVuX3BhZ2UgPT0gXCJ0cnVlXCIpIHtcclxuICAgICAgICAgICAgdGhpcy5vcGVuUGFnZS5uZXh0KHtcclxuICAgICAgICAgICAgICBzZWN0aW9uSWQ6IGFpRm9ybWF0dGVkRGF0YS5zZWN0aW9uX2lkLFxyXG4gICAgICAgICAgICAgIHNlYXJjaDogYWlGb3JtYXR0ZWREYXRhLmNvbnRlbnRcclxuICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICBpZiAodGhpcy5pc01vYmlsZUJyb3dzZXIoKSkge1xyXG4gICAgICAgICAgICAgIGFpRm9ybWF0dGVkRGF0YS5tZXNzYWdlICs9IFwiXFxuXFxuXCIgKyAnPGEgaWQ9XCJjbG9zZUJvdE5vd1wiPkNsaWNrIEhlcmU8L2E+IHRvIHNlZSByZXN1bHRzLidcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG5cclxuXHJcblxyXG4gICAgICAgICAgdGhpcy5jaGF0TG9nLnB1c2goe1xyXG4gICAgICAgICAgICB0eXBlOiAnYWknLFxyXG4gICAgICAgICAgICBtZXNzYWdlOiBhaUZvcm1hdHRlZERhdGEubWVzc2FnZSxcclxuICAgICAgICAgICAgYWN0aW9uOiBhaUZvcm1hdHRlZERhdGEsXHJcbiAgICAgICAgICAgIHRpbWU6IGZvcm1hdE5vdyh0aGlzLnRpbWV6b25lKVxyXG4gICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgaWYgKHRoaXMuaXNNb2JpbGVCcm93c2VyKCkpIHtcclxuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgdGhpcy5hZGRDbG9zZUJvdENsaWNrRXZlbnQoKTtcclxuICAgICAgICAgICAgfSwgNTAwKTtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICB0aGlzLmFpUmVzcG9uc2UgPSBcIlwiO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLmNoYXRMb2cucHVzaCh7XHJcbiAgICAgICAgICAgIHR5cGU6ICdhaScsXHJcbiAgICAgICAgICAgIG1lc3NhZ2U6IHRoaXMuYWlSZXNwb25zZSxcclxuICAgICAgICAgICAgdGltZTogZm9ybWF0Tm93KHRoaXMudGltZXpvbmUpLFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLnNob3dGZWVkQmFja0ljb25zSW5kZXggPSB0aGlzLmNoYXRMb2cubGVuZ3RoIC0gMTtcclxuICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5zY3JvbGxUb0JvdHRvbSgpO1xyXG5cclxuICAgICAgLy8gRW5xdWV1ZSB0aGUgbmV4dCBkYXRhIGNodW5rIGludG8gb3VyIHRhcmdldCBzdHJlYW1cclxuICAgICAgY29udHJvbGxlci5lbnF1ZXVlKHZhbHVlKTtcclxuICAgICAgdGhpcy5wdW1wKGNvbnRyb2xsZXIsIHJlYWRlciwgYWxsU3VnZ2VzdGlvbnMpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBzdWJtaXRGZWVkYmFjayhmbGFnOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLmZlZWRiYWNrRG9uZSA9IHRydWU7XHJcbiAgICB0aGlzLnNob3dGZWVkQmFja0ljb25zSW5kZXggPSBudWxsO1xyXG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5lbnZpcm9ubWVudC5CQVNFX1VSTH0vYm90L2ZlZWRiYWNrYDtcclxuICAgIGZldGNoKHVybCwge1xyXG4gICAgICBtZXRob2Q6ICdQT1NUJyxcclxuICAgICAgaGVhZGVyczoge1xyXG4gICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXHJcbiAgICAgICAgJ3gtYXBpLWtleSc6IHRoaXMuYXBpS2V5LFxyXG4gICAgICB9LFxyXG4gICAgICBib2R5OiBKU09OLnN0cmluZ2lmeSh7IGZsYWcsIHVzZXJfaWQ6IHRoaXMudXNlcklkLCBib3RfaWQ6IHRoaXMuYm90SWQgfSksXHJcbiAgICB9KS50aGVuKCgpID0+IHtcclxuICAgICAgaWYgKGZsYWcpIHtcclxuICAgICAgICB0aGlzLmNoYXRMb2cucHVzaCh7XHJcbiAgICAgICAgICB0eXBlOiAnYWknLFxyXG4gICAgICAgICAgbWVzc2FnZTpcclxuICAgICAgICAgICAgdGhpcy50aHVtYnNVcE1lc3NhZ2UgfHxcclxuICAgICAgICAgICAgYEdyZWF0LiBNYXkgSSBhc3Npc3QgeW91IHdpdGggYW55dGhpbmcgZWxzZT9gLFxyXG4gICAgICAgICAgdGltZTogZm9ybWF0Tm93KHRoaXMudGltZXpvbmUpLFxyXG4gICAgICAgICAgaXNGZWVkYmFja01zZzogdHJ1ZSxcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgdGhpcy5zY3JvbGxUb0JvdHRvbSgpO1xyXG4gICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgICAgIHRoaXMuZmVlZGJhY2tEb25lID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5zaG93RmVlZEJhY2tJY29uc0luZGV4ID0gbnVsbDtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuY2hhdExvZy5wdXNoKHtcclxuICAgICAgICB0eXBlOiAnYWknLFxyXG4gICAgICAgIG1lc3NhZ2U6IHRoaXMucHJvY2Vzc01lc3NhZ2UoXHJcbiAgICAgICAgICB0aGlzLnRodW1ic0Rvd25NZXNzYWdlc1t0aGlzLnRodW1ic0Rvd25Nc2dJbmRleF1cclxuICAgICAgICApLFxyXG4gICAgICAgIHRpbWU6IGZvcm1hdE5vdyh0aGlzLnRpbWV6b25lKSxcclxuICAgICAgICBpc0ZlZWRiYWNrTXNnOiB0cnVlLFxyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy50aHVtYnNEb3duTXNnSW5kZXggPVxyXG4gICAgICAgICh0aGlzLnRodW1ic0Rvd25Nc2dJbmRleCArIDEpICUgdGhpcy50aHVtYnNEb3duTWVzc2FnZXMubGVuZ3RoO1xyXG4gICAgICB0aGlzLnNjcm9sbFRvQm90dG9tKCk7XHJcbiAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgICB0aGlzLmZlZWRiYWNrRG9uZSA9IGZhbHNlO1xyXG4gICAgICB0aGlzLnNob3dGZWVkQmFja0ljb25zSW5kZXggPSBudWxsO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBoYW5kbGVTdWJtaXQoKSB7XHJcbiAgICB0aGlzLmZldGNoRGF0YSgpO1xyXG4gICAgdGhpcy5zY3JvbGxUb0JvdHRvbSgpO1xyXG4gIH1cclxuXHJcbiAgaGFuZGxlVXBDbGljayhpZHg6IGFueSkge1xyXG4gICAgaWYgKHRoaXMuZmVlZGJhY2tEb25lKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnN1Ym1pdEZlZWRiYWNrKHRydWUpO1xyXG4gICAgdGhpcy5jaGF0TG9nW2lkeF0ubGlrZWQgPSAhdGhpcy5jaGF0TG9nW2lkeF0ubGlrZWQ7XHJcblxyXG4gICAgaWYgKHRoaXMuY2hhdExvZ1tpZHhdLnVubGlrZWQpIHtcclxuICAgICAgdGhpcy5jaGF0TG9nW2lkeF0udW5saWtlZCA9ICF0aGlzLmNoYXRMb2dbaWR4XS51bmxpa2VkO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xyXG4gIH1cclxuXHJcbiAgaGFuZGxlRG93bkNsaWNrKGlkeDogYW55KSB7XHJcbiAgICBpZiAodGhpcy5mZWVkYmFja0RvbmUpIHJldHVybjtcclxuICAgIHRoaXMuc3VibWl0RmVlZGJhY2soZmFsc2UpO1xyXG4gICAgdGhpcy5jaGF0TG9nW2lkeF0udW5saWtlZCA9ICF0aGlzLmNoYXRMb2dbaWR4XS51bmxpa2VkO1xyXG4gICAgaWYgKHRoaXMuY2hhdExvZ1tpZHhdLmxpa2VkKVxyXG4gICAgICB0aGlzLmNoYXRMb2dbaWR4XS5saWtlZCA9ICF0aGlzLmNoYXRMb2dbaWR4XS5saWtlZDtcclxuICB9XHJcbiAgaGFuZGxlQ29weUNsaWNrKGluZGV4OiBhbnkpIHtcclxuICAgIC8vIENvcHkgdGhlIG1lc3NhZ2UgdG8gdGhlIGNsaXBib2FyZFxyXG4gICAgY29uc3QgY29udGVudFRvQ29weSA9IHRoaXMuY2hhdExvZ1tpbmRleF0ubWVzc2FnZTtcclxuICAgIG5hdmlnYXRvci5jbGlwYm9hcmQud3JpdGVUZXh0KGNvbnRlbnRUb0NvcHkpLnRoZW4oKCkgPT4ge1xyXG4gICAgICAvLyBJbmRpY2F0ZSB0aGF0IHRoZSBtZXNzYWdlIHdhcyBjb3BpZWRcclxuICAgICAgdGhpcy5jaGF0TG9nW2luZGV4XS5jb3BpZWQgPSB0cnVlO1xyXG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIC8vIFJlc2V0IHRoZSBjb3BpZWQgc3RhdGUgYWZ0ZXIgYSBkZWxheVxyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICB0aGlzLmNoYXRMb2dbaW5kZXhdLmNvcGllZCA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgfSwgMjAwMCk7IC8vIFJlc2V0IGFmdGVyIDIgc2Vjb25kc1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBzY3JvbGxUb0JvdHRvbSgpIHtcclxuICAgIGxldCBjb3VudGVyID0gMDtcclxuICAgIGNvbnN0IGludGVydmFsID0gc2V0SW50ZXJ2YWwoKCkgPT4ge1xyXG4gICAgICB0aGlzLmNoYXRNYWluLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsVG9wID1cclxuICAgICAgICB0aGlzLmNoYXRNYWluLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsSGVpZ2h0O1xyXG4gICAgICBpZiAoY291bnRlcisrID4gNSkgY2xlYXJJbnRlcnZhbChpbnRlcnZhbCk7XHJcbiAgICB9LCA1KTtcclxuICB9XHJcblxyXG4gIGhhbmRsZUFjdGlvbihhY3Rpb246IGFueSkge1xyXG4gICAgY29uc29sZS5pbmZvKFwiaW5jb21pbmcgYWN0aW9uIGZyb20gdGhlIGNoYXRib3QgQUlcIilcclxuICAgIGNvbnNvbGUuaW5mbyhhY3Rpb24pXHJcblxyXG4gICAgaWYgKGFjdGlvbj8uY29udGVudCkge1xyXG5cclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAgIC8vIENoZWNrIGlmIHRoZSBkcmF3ZXIgaXMgaW5pdGlhbGx5IG9wZW4gYW5kIGFwcGx5IG92ZXJmbG93IGhpZGRlbiB0byBib2R5IGlmIHNvXHJcbiAgICBpZiAodGhpcy5kcmF3ZXIub3BlbmVkKSB7XHJcbiAgICAgIHRoaXMuc2V0Qm9keU92ZXJmbG93KCk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gTGlzdGVuIHRvIGNoYW5nZXMgaW4gdGhlIGRyYXdlciBiZWluZyBvcGVuZWQgb3IgY2xvc2VkXHJcbiAgICB0aGlzLmRyYXdlci5vcGVuZWRDaGFuZ2Uuc3Vic2NyaWJlKChvcGVuZWQ6IGJvb2xlYW4pID0+IHtcclxuICAgICAgaWYgKG9wZW5lZCkge1xyXG4gICAgICAgIHRoaXMuc2V0Qm9keU92ZXJmbG93KCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5yZW1vdmVCb2R5T3ZlcmZsb3coKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5kcmF3ZXIub3BlbmVkQ2hhbmdlLnN1YnNjcmliZSgob3BlbmVkKSA9PiB7XHJcbiAgICAgIGlmIChvcGVuZWQpIHtcclxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgIGlmICh0aGlzLm15VGV4dGFyZWEgJiYgdGhpcy5teVRleHRhcmVhLm5hdGl2ZUVsZW1lbnQpIHtcclxuICAgICAgICAgICAgdGhpcy5teVRleHRhcmVhLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTsgLy8gRm9jdXMgb24gdGhlIHRleHRhcmVhXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRCb2R5T3ZlcmZsb3coKSB7XHJcbiAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKGRvY3VtZW50LmJvZHksIHRoaXMuYm9keU92ZXJmbG93Q2xhc3MpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSByZW1vdmVCb2R5T3ZlcmZsb3coKSB7XHJcbiAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZUNsYXNzKGRvY3VtZW50LmJvZHksIHRoaXMuYm9keU92ZXJmbG93Q2xhc3MpO1xyXG4gIH1cclxuXHJcbiAgZ2V0U3BlYWtlcnNCeVN0YWZmSWRzKGlkcykge1xyXG4gICAgY29uc3QgdXJsID1cclxuICAgICAgYCR7dGhpcy5lbnZpcm9ubWVudC5VU0VSU19BUEl9L2V2ZW50cy8ke3RoaXMuZXZlbnRJZH0vdXNlcnMvZ2V0LWJ5LXN0YWZmLWlkc2BcclxuICAgIGZldGNoKHVybCwge1xyXG4gICAgICBtZXRob2Q6ICdQT1NUJyxcclxuICAgICAgaGVhZGVyczoge1xyXG4gICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXHJcbiAgICAgICAgJ0F1dGhvcml6YXRpb24nOiBcIkJlYXJlciBcIiArIFwieW91cl90b2tlbl9oZXJlXCIsXHJcbiAgICAgIH0sXHJcbiAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KGlkcyksXHJcbiAgICB9KVxyXG4gICAgICAudGhlbigocmVzcG9uc2UpID0+IHtcclxuICAgICAgICBpZiAocmVzcG9uc2Uub2spIHtcclxuICAgICAgICAgIHJldHVybiByZXNwb25zZS5qc29uKCk7IC8vIFBhcnNlIHRoZSBKU09OIGJvZHkgb2YgdGhlIHJlc3BvbnNlXHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcignTmV0d29yayByZXNwb25zZSB3YXMgbm90IG9rLicpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgICAgLnRoZW4oKGRhdGEpID0+IHtcclxuICAgICAgICBpZiAoZGF0YT8ubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgZGF0YS5mb3JFYWNoKHNwZWFrZXIgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnNwZWFrZXJzW3NwZWFrZXIuaWRdID0gc3BlYWtlcjtcclxuICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgICAgLmNhdGNoKChlcnIpID0+IHtcclxuICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBmZXRjaGluZyBkYXRhOicsIGVycik7XHJcbiAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcGVyZm9ybVNlc3Npb25BY3Rpb24oc2Vzc2lvbklkLCBhY3Rpb24pIHtcclxuICAgIHRoaXMuc2Vzc2lvbkFjdGlvbnMubmV4dCh7XHJcbiAgICAgIHNlc3Npb25JZCxcclxuICAgICAgYWN0aW9uXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGFkZENsb3NlQm90Q2xpY2tFdmVudCgpIHtcclxuICAgIGNvbnN0IGVsZW1lbnQgPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCcjY2xvc2VCb3ROb3cnKTtcclxuICAgIGlmIChlbGVtZW50KSB7XHJcbiAgICAgIHRoaXMucmVuZGVyZXIubGlzdGVuKGVsZW1lbnQsICdjbGljaycsICgpID0+IHtcclxuICAgICAgICB0aGlzLmNsb3NlQm90Lm5leHQoKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBpc01vYmlsZUJyb3dzZXIoKSB7XHJcbiAgICByZXR1cm4gL0FuZHJvaWR8d2ViT1N8aVBob25lfGlQYWR8aVBvZHxCbGFja0JlcnJ5fElFTW9iaWxlfE9wZXJhIE1pbmkvaS50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpO1xyXG4gIH1cclxuXHJcbiAgY29ubmVjdFRvVXNlcih1c2VySWQpIHtcclxuICAgIHRoaXMuY29ubmVjdFdpdGhVc2VyLmVtaXQoe1xyXG4gICAgICBjb25uZWN0OiAhdGhpcy5jYW5EaXNjb25uZWN0KHVzZXJJZCksXHJcbiAgICAgIHVzZXJJZFxyXG4gICAgfSk7XHJcblxyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIHRoaXMuZmV0Y2hNeUNvbm5lY3Rpb25zKCkuc3Vic2NyaWJlKHJlcyA9PiB7XHJcbiAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLmZldGNoUGVuZGluZ1JlcXVlc3RzKCkuc3Vic2NyaWJlKHJlcyA9PiB7XHJcbiAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XHJcbiAgICAgIH0pO1xyXG4gICAgfSwgNTAwKTtcclxuICB9XHJcblxyXG4gIHNjaGVkdWxlTWVldGluZ1dpdGhVc2VyKHVzZXIpIHtcclxuICAgIHRoaXMuc2NoZWR1bGVNZWV0aW5nLmVtaXQodXNlcik7XHJcbiAgfVxyXG5cclxuICBjYW5Db25uZWN0KHVzZXJJZCkge1xyXG4gICAgcmV0dXJuICEodGhpcy5jYW5EaXNjb25uZWN0KHVzZXJJZCkgfHwgdGhpcy5wZW5kaW5nUmVxdWVzdHMuZmluZChhID0+IGEgPT0gdXNlcklkKSlcclxuICB9XHJcblxyXG4gIGNhbkRpc2Nvbm5lY3QodXNlcklkKSB7XHJcbiAgICByZXR1cm4gdGhpcy5teUNvbm5lY3Rpb25zLmZpbmQoY29ubiA9PiBjb25uLnVzZXJJZCA9PSB1c2VySWQpXHJcbiAgfVxyXG5cclxuICBmZXRjaFBlbmRpbmdSZXF1ZXN0cygpIHtcclxuICAgIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoe1xyXG4gICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxyXG4gICAgICAnYXBpS2V5JzogdGhpcy5hdXRvZ2VuS2V5XHJcbiAgICB9KTtcclxuICAgIHJldHVybiB0aGlzLmh0dHBcclxuICAgICAgLmdldChcclxuICAgICAgICBgJHt0aGlzLmVudmlyb25tZW50LlVTRVJTX0FQSX0vZXZlbnRzLyR7dGhpcy5ldmVudElkfS9jb25uZWN0aW9uLXJlcXVlc3RzL2F1dG9nZW4vcGVuZGluZy1zZW50LXJlcXVlc3RzP3VzZXJJZD0ke3RoaXMudXNlcklkfWAsXHJcbiAgICAgICAgeyBoZWFkZXJzIH1cclxuICAgICAgKVxyXG4gICAgICAucGlwZShcclxuICAgICAgICBzd2l0Y2hNYXAoKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnBlbmRpbmdSZXF1ZXN0cyA9IHJlcztcclxuICAgICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgICAgICAgcmV0dXJuIG9mKHJlcyk7XHJcbiAgICAgICAgfSksXHJcbiAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IGFueSkgPT4ge1xyXG4gICAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgZmV0Y2hpbmcgcGVuZGluZyByZXF1ZXN0czogJywgZXJyb3IpO1xyXG4gICAgICAgICAgcmV0dXJuIG9mKG51bGwpO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICk7XHJcbiAgfVxyXG5cclxuICBmZXRjaE15Q29ubmVjdGlvbnMoKSB7XHJcbiAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKHtcclxuICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcclxuICAgICAgJ2FwaUtleSc6IHRoaXMuYXV0b2dlbktleVxyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwXHJcbiAgICAgIC5nZXQoXHJcbiAgICAgICAgYCR7dGhpcy5lbnZpcm9ubWVudC5VU0VSU19BUEl9L2V2ZW50cy8ke3RoaXMuZXZlbnRJZH0vdXNlcnMtY29ubmVjdGlvbnMvYXV0b2dlbj91c2VySWQ9JHt0aGlzLnVzZXJJZH1gLFxyXG4gICAgICAgIHsgaGVhZGVycyB9XHJcbiAgICAgIClcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgc3dpdGNoTWFwKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5teUNvbm5lY3Rpb25zID0gcmVzO1xyXG4gICAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XHJcbiAgICAgICAgICByZXR1cm4gb2YocmVzKTtcclxuICAgICAgICB9KSxcclxuICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogYW55KSA9PiB7XHJcbiAgICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBmZXRjaGluZyBwZW5kaW5nIHJlcXVlc3RzOiAnLCBlcnJvcik7XHJcbiAgICAgICAgICByZXR1cm4gb2YobnVsbCk7XHJcbiAgICAgICAgfSlcclxuICAgICAgKTtcclxuICB9XHJcblxyXG5cclxuICBpc0Ryb3Bkb3duT3BlbjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGFnZW50czogYW55O1xyXG4gIC8vIFRvZ2dsZSB0aGUgZHJvcGRvd24gdmlzaWJpbGl0eVxyXG4gIHRvZ2dsZURyb3Bkb3duKCkge1xyXG4gICAgdGhpcy5pc0Ryb3Bkb3duT3BlbiA9ICF0aGlzLmlzRHJvcGRvd25PcGVuO1xyXG4gIH1cclxuXHJcbiAgb25TZWxlY3RBbGwoZXZlbnQ6IEV2ZW50KSB7XHJcbiAgICBjb25zdCBpc1NlbGVjdGVkID0gKGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50KS5jaGVja2VkO1xyXG4gICAgaWYgKGlzU2VsZWN0ZWQpXHJcbiAgICAgIHRoaXMuYWdlbnRzPy5mb3JFYWNoKGFnZW50ID0+IGFnZW50LnNlbGVjdGVkID0gZmFsc2UpO1xyXG4gIH1cclxuXHJcbiAgb25BZ2VudENoYW5nZShhZ2VudDogYW55KSB7XHJcbiAgICAvL2FnZW50LnNlbGVjdGVkID0gIWFnZW50LnNlbGVjdGVkO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgYXJlQWxsU2VsZWN0ZWQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5hZ2VudHM/LmV2ZXJ5KGFnZW50ID0+ICFhZ2VudC5zZWxlY3RlZCk7XHJcbiAgfVxyXG5cclxuICBnZXREcm9wZG93bkhlYWRlclRleHQoKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IHNlbGVjdGVkQWdlbnRzID0gdGhpcy5hZ2VudHM/LmZpbHRlcihhZ2VudCA9PiBhZ2VudC5zZWxlY3RlZCk7XHJcbiAgICBpZiAoc2VsZWN0ZWRBZ2VudHMgJiYgc2VsZWN0ZWRBZ2VudHMubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgIHJldHVybiAnQWxsJztcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBgJHtzZWxlY3RlZEFnZW50cy5sZW5ndGh9IHNlbGVjdGVkYDtcclxuICAgIH1cclxuICB9XHJcbiAgZmV0Y2hBZ2VudHNfaHR0cCgpIHtcclxuICAgIHRoaXMubG9hZGluZyA9IHRydWU7XHJcbiAgICBjb25zdCB1cmwgPSBgJHt0aGlzLmVudmlyb25tZW50LkFHRU5UU19BUEl9L0NvUGlsb3QvJHt0aGlzLmJvdElkfS9hY3RpdmUtYWdlbnRzYDtcclxuICAgIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoe1xyXG4gICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nXHJcbiAgICB9KTtcclxuXHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QodXJsLCB7fSwgeyBoZWFkZXJzIH0pLnBpcGUoXHJcbiAgICAgIHN3aXRjaE1hcCgocmVzOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAocmVzKSB7XHJcbiAgICAgICAgICB0aGlzLmFnZW50cyA9IHJlcy5tYXAoYWdlbnQgPT4gKHtcclxuICAgICAgICAgICAgLi4uYWdlbnQsXHJcbiAgICAgICAgICAgIHNlbGVjdGVkOiBmYWxzZVxyXG4gICAgICAgICAgfSkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcclxuXHJcbiAgICAgICAgcmV0dXJuIG9mKHJlcyk7XHJcbiAgICAgIH0pLFxyXG4gICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4ge1xyXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGZldGNoaW5nIGNoYXRib3QgY29uZmlnOiAnLCBlcnJvcik7XHJcblxyXG4gICAgICAgIHJldHVybiBvZihudWxsKTtcclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgfVxyXG5cclxuXHJcbiAgZmV0Y2hBZ2VudHMoKSB7XHJcbiAgICB0aGlzLmZldGNoQWdlbnRzX2h0dHAoKVxyXG4gICAgICAuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG5cclxuXHJcblxyXG4gIC8vIGV2ZW50cy8ke2V2ZW50SWR9L3VzZXJzLWNvbm5lY3Rpb25zXHJcbiAgcHJvY2Vzc01lc3NhZ2VGb3JEaXNwbGF5KG1hcmtkb3duOiBzdHJpbmcpOiBTYWZlSHRtbCB7XHJcbiAgICBpZiAoIW1hcmtkb3duIHx8ICEobWFya2Rvd24ubGVuZ3RoID4gMCkpIHtcclxuICAgICAgY29uc29sZS5lcnJvcignSW5wdXQgTWFya2Rvd24gaXMgbnVsbCBvciBlbXB0eScpO1xyXG4gICAgICByZXR1cm4gJyc7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc29sZS5sb2coJ01hcmtkb3duIGlucHV0OicsIG1hcmtkb3duKTtcclxuXHJcbiAgICAvLyBDb252ZXJ0IE1hcmtkb3duIGhlYWRlcnMgdG8gSFRNTCBoZWFkZXJzXHJcbiAgICBsZXQgaHRtbCA9IG1hcmtkb3duLnJlcGxhY2UoL14oI3sxLDZ9KVxccysoLiopJC9nbSwgKG1hdGNoLCBoYXNoZXMsIHRleHQpID0+IHtcclxuICAgICAgY29uc3QgbGV2ZWwgPSBoYXNoZXMubGVuZ3RoO1xyXG4gICAgICByZXR1cm4gYDxoJHtsZXZlbH0+JHt0ZXh0fTwvaCR7bGV2ZWx9PmA7XHJcbiAgICB9KTtcclxuXHJcbiAgICBjb25zb2xlLmxvZygnQWZ0ZXIgaGVhZGVyIGNvbnZlcnNpb246JywgaHRtbCk7XHJcblxyXG4gICAgLy8gQ29udmVydCBNYXJrZG93biBsaW5rcyB0byBIVE1MIGxpbmtzXHJcbiAgICBodG1sID0gaHRtbC5yZXBsYWNlKC9cXFsoW15cXF1dKyldXFwoKFteKV0rKVxcKS9nLCAnPGEgaHJlZj1cIiQyXCIgdGFyZ2V0PVwiX2JsYW5rXCI+JDE8L2E+Jyk7XHJcblxyXG4gICAgY29uc29sZS5sb2coJ0FmdGVyIGxpbmsgY29udmVyc2lvbjonLCBodG1sKTtcclxuXHJcbiAgICAvLyBDb252ZXJ0IE1hcmtkb3duIGJvbGQgdG8gSFRNTCBzdHJvbmdcclxuICAgIGh0bWwgPSBodG1sLnJlcGxhY2UoL1xcKlxcKiguKj8pXFwqXFwqL2csICc8c3Ryb25nPiQxPC9zdHJvbmc+Jyk7XHJcblxyXG4gICAgY29uc29sZS5sb2coJ0FmdGVyIGJvbGQgY29udmVyc2lvbjonLCBodG1sKTtcclxuXHJcbiAgICAvLyBDb252ZXJ0IG5ldyBsaW5lcyB0byA8YnI+IHRhZ3NcclxuICAgIGh0bWwgPSBodG1sLnJlcGxhY2UoLyg/OlxcclxcbnxcXHJ8XFxuKS9nLCAnPGJyPicpO1xyXG5cclxuICAgIGNvbnNvbGUubG9nKCdBZnRlciBsaW5lIGJyZWFrcyBjb252ZXJzaW9uOicsIGh0bWwpO1xyXG5cclxuICAgIC8vIE9wdGlvbmFsOiBTYW5pdGl6ZSB0aGUgSFRNTCB0byBwcmV2ZW50IFhTU1xyXG4gICAgY29uc3Qgc2FuaXRpemVkSHRtbCA9IHRoaXMuc2FuaXRpemVIdG1sKGh0bWwpO1xyXG5cclxuICAgIGNvbnNvbGUubG9nKCdTYW5pdGl6ZWQgSFRNTDonLCBzYW5pdGl6ZWRIdG1sKTtcclxuXHJcbiAgICByZXR1cm4gc2FuaXRpemVkSHRtbDtcclxuICB9XHJcblxyXG5cclxufVxyXG4iXX0=
|
|
@@ -816,7 +816,7 @@ class ChatDrawerComponent {
|
|
|
816
816
|
getDropdownHeaderText() {
|
|
817
817
|
var _a;
|
|
818
818
|
const selectedAgents = (_a = this.agents) === null || _a === void 0 ? void 0 : _a.filter(agent => agent.selected);
|
|
819
|
-
if (selectedAgents.length === 0) {
|
|
819
|
+
if (selectedAgents && selectedAgents.length === 0) {
|
|
820
820
|
return 'All';
|
|
821
821
|
}
|
|
822
822
|
else {
|