atr-components 2.0.210 → 2.0.211

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.
@@ -746,4 +746,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.6", ngImpor
746
746
  type: ViewChild,
747
747
  args: ['tableContent', { static: true }]
748
748
  }] } });
749
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy9zcmMvbGliL3NoYXJlZC90YWJsZS90YWJsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3NyYy9saWIvc2hhcmVkL3RhYmxlL3RhYmxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBR1QsS0FBSyxFQUVMLFNBQVMsRUFFVCxNQUFNLEVBQ04sWUFBWSxFQUNaLFNBQVMsRUFDVCxNQUFNLEVBRVAsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUF1QyxrQkFBa0IsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ3hGLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQWMsZUFBZSxFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFDcEUsT0FBTyxFQUFDLG9CQUFvQixFQUEwQixNQUFNLHdCQUF3QixDQUFDO0FBQ3JGLE9BQU8sRUFBQyxnQkFBZ0IsRUFBd0QsTUFBTSwrQkFBK0IsQ0FBQztBQUN0SCxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sMENBQTBDLENBQUM7QUFDckUsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLHFDQUFxQyxDQUFDO0FBQ2hFLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSwrQkFBK0IsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFPeEQsTUFBTSxPQUFPLGlCQUFpQjtJQXdDNUIsWUFBb0IsRUFBc0IsRUFBVSxRQUFrQixFQUE2QixNQUFjLEVBQVUsRUFBcUI7UUFBNUgsT0FBRSxHQUFGLEVBQUUsQ0FBb0I7UUFBVSxhQUFRLEdBQVIsUUFBUSxDQUFVO1FBQTZCLFdBQU0sR0FBTixNQUFNLENBQVE7UUFBVSxPQUFFLEdBQUYsRUFBRSxD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XHJcbiAgQ29tcG9uZW50LFxyXG4gIE9uSW5pdCxcclxuICBJbmplY3RvcixcclxuICBJbnB1dCxcclxuICBWaWV3Q2hpbGRyZW4sXHJcbiAgVmlld0NoaWxkLFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgT3V0cHV0LFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBMT0NBTEVfSUQsXHJcbiAgSW5qZWN0LFxyXG4gIENoYW5nZURldGVjdG9yUmVmXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7VW50eXBlZEZvcm1Hcm91cCwgVW50eXBlZEZvcm1CdWlsZGVyLCBVbnR5cGVkRm9ybUNvbnRyb2x9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHtmb3JtYXREYXRlfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQge0Nka0RyYWdEcm9wLCBtb3ZlSXRlbUluQXJyYXl9IGZyb20gXCJAYW5ndWxhci9jZGsvZHJhZy1kcm9wXCI7XHJcbmltcG9ydCB7TnpDb250ZXh0TWVudVNlcnZpY2UsIE56RHJvcGRvd25NZW51Q29tcG9uZW50fSBmcm9tICduZy16b3Jyby1hbnRkL2Ryb3Bkb3duJztcclxuaW1wb3J0IHthdHJfc3RhdGljX2RhdGFzLCBBdHJRdWVyeUhlYWRlciwgQXRyUXVleXJPcHQsIGpzb24sIFRhYmxlLCBUYWJsZUFjdGlvbn0gZnJvbSBcIi4uLy4uLy4uL2NvcmUvYmFzZS9hdHItY29tbW9uXCI7XHJcbmltcG9ydCB7RGljdFNlcnZpY2V9IGZyb20gXCIuLi8uLi8uLi9jb3JlL3NlcnZpY2VzL2RpY3QvZGljdC5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7SHR0cFNlcnZpY2V9IGZyb20gXCIuLi8uLi8uLi9jb3JlL3NlcnZpY2VzL2h0dHAuc2VydmljZVwiO1xyXG5pbXBvcnQge1Rvb2xzVXRpbH0gZnJvbSBcIi4uLy4uLy4uL2NvcmUvdXRpbHMvVG9vbHNVdGlsXCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2F0ci10YWJsZScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3RhYmxlLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi90YWJsZS5jb21wb25lbnQubGVzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBdHJUYWJsZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgYXRyRm9ybTogVW50eXBlZEZvcm1Hcm91cCB8IGFueTtcclxuICBpc0NvbGxhcHNlID0gdHJ1ZTtcclxuICBkaWN0czogYW55ID0ge307XHJcbiAgcGFnZUluZGV4ID0gMTtcclxuICB0b3RhbCA9IDE7XHJcblxyXG4gIEBJbnB1dCgpIHBhZ2VTaXplID0gMTA7XHJcbiAgQElucHV0KCkgcGFnZVNpemVPcHRpb25zOiBudW1iZXJbXSA9IFsgMTAsIDIwLCAzMCwgNDAsIDUwIF07XHJcblxyXG4gIEBJbnB1dCgpIGxvYWRpbmcgPSB0cnVlO1xyXG4gIEBJbnB1dCgpIGFsbG93RHJhZyA9IGZhbHNlOy8v5YWB6K645ouW5ou95o2i5L2NXHJcbiAgQElucHV0KCkgc2hvd1F1ZXJ5VGltZSA9IGZhbHNlO1xyXG4gIHRhYmxlRGF0YXM6IGFueSA9IFtdO1xyXG4gIHNjcm9sbFNpemU6IGFueSA9IHt4OiBcIlwiLCB5OiBcIlwifVxyXG4gIC8v6KGo5qC8Y2hlY2tib3gg6YWN572uXHJcbiAgaXNBbGxEaXNwbGF5RGF0YUNoZWNrZWQ6IGJvb2xlYW4gPSBmYWxzZVxyXG4gIGlzSW5kZXRlcm1pbmF0ZSA9IGZhbHNlO1xyXG4gIG51bWJlck9mQ2hlY2tlZCA9IDA7XHJcbiAgbWFwT2ZDaGVja2VkSWQ6IHsgW2tleTogc3RyaW5nXTogYm9vbGVhbiB9ID0ge307XHJcbiAgY3VyQ2hlY2tlZDogbnVtYmVyID0gLTE7XHJcbiAgaW1hZ2VQcmVmaXggPSBhdHJfc3RhdGljX2RhdGFzLk9TU19VUkw7XHJcbiAgZGVmYXVsdFBhcmFtcyA9IHt9O1xyXG4gIEBJbnB1dCgpIGlzSGlkZVRhYmxlID0gZmFsc2VcclxuICBpc0FsbExvYWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBzb3J0TWFwOiB7IFtrZXk6IHN0cmluZ106IGFueSB9ID0ge307XHJcbiAgcm93U3Bhbk1hcDogYW55ID0ge307Ly9rZXk6e+W+t+enkeeJp+Wcujp7bnVtOjF9fVxyXG4gIGhlYWRlckRlZmF1bHRWYWw6IGFueSA9IHt9XHJcblxyXG4gIEBJbnB1dCgpIHF1ZXJ5T3B0czogQXRyUXVleXJPcHQgfCBhbnk7XHJcbiAgQElucHV0KCkgc2hvd1BhZ2luYXRpb24gPSB0cnVlO1xyXG4gIEBJbnB1dCgpIHRpdGxlOiBzdHJpbmcgPSBcIlwiO1xyXG4gIEBJbnB1dCgpIHF1ZXJ5SGVhZGVycyA9IG51bGw7XHJcblxyXG4gIEBPdXRwdXQoKSB0YWJsZUFjdGlvbiA9IG5ldyBFdmVudEVtaXR0ZXI8VGFibGVBY3Rpb24+KCk7XHJcbiAgQE91dHB1dCgpIHF1ZXJ5QmFjayA9IG5ldyBFdmVudEVtaXR0ZXI8VGFibGVBY3Rpb24+KCk7XHJcbiAgQE91dHB1dCgpIGhlYWRlckFjdGlvbiA9IG5ldyBFdmVudEVtaXR0ZXI8VGFibGVBY3Rpb24+KCk7XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ3RhYmxlQ29udGVudCcsIHtzdGF0aWM6IHRydWV9KSB0YWJsZUNvbnRlbnQ6IEVsZW1lbnRSZWYgfCBhbnk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZmI6IFVudHlwZWRGb3JtQnVpbGRlciwgcHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IsIEBJbmplY3QoTE9DQUxFX0lEKSBwcml2YXRlIGxvY2FsZTogc3RyaW5nLCBwcml2YXRlIGNkOiBDaGFuZ2VEZXRlY3RvclJlZikge1xyXG4gIH1cclxuXHJcbiAgaXNTaG93Q29sb3IoZGF0YTogYW55KSB7XHJcbiAgICBpZiAodGhpcy5xdWVyeU9wdHMuY29sb3IgJiYgdGhpcy5xdWVyeU9wdHMuY29sb3Iub3BlcmF0b3IgJiYgdGhpcy5pc1Nob3dCdG4oZGF0YSwgdGhpcy5xdWVyeU9wdHMuY29sb3Iub3BlcmF0b3IpKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLnF1ZXJ5T3B0cy5jb2xvci5jb2xvcjtcclxuICAgIH1cclxuICAgIHJldHVybiAnJ1xyXG4gIH1cclxuXHJcbiAgZGJjbGlja0RhdGEoZGF0YTogYW55LCByb3dObzogbnVtYmVyKSB7XHJcbiAgICBsZXQgYWN0aW9uOiBUYWJsZUFjdGlvbiA9IHtcclxuICAgICAgbmFtZTogJ2RiY2xpY2tEYXRhJyxcclxuICAgICAgY29kZTogJ2RiY2xpY2tEYXRhJyxcclxuICAgICAgdHlwZTogXCJyb3dcIlxyXG4gICAgfTtcclxuICAgIGFjdGlvbi5kYXRhID0gZGF0YTtcclxuICAgIGFjdGlvbi5maXJzdERhdGEgPSBkYXRhO1xyXG4gICAgdGhpcy50YWJsZUFjdGlvbi5lbWl0KGFjdGlvbik7XHJcbiAgfVxyXG5cclxuICBkb0FjdGlvbkJ5Um93MihlOiBhbnkpIHtcclxuICAgIGxldCB7ZGF0YSwgY29kZSwgZXZlbnQ6IE1vdXNlRXZlbnQsIGluZGV4fSA9IGVcclxuICAgIGlmIChldmVudCkge1xyXG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICBpZiAoZXZlbnQuc3RvcFByb3BhZ2F0aW9uKSB7XHJcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgbGV0IGFjdGlvbjogVGFibGVBY3Rpb24gPSB7XHJcbiAgICAgIG5hbWU6IGNvZGUsXHJcbiAgICAgIGNvZGU6IGNvZGUsXHJcbiAgICAgIHR5cGU6IFwicm93XCJcclxuICAgIH07XHJcbiAgICBhY3Rpb24uZGF0YSA9IGRhdGE7XHJcbiAgICBhY3Rpb24uZmlyc3REYXRhID0gZGF0YTtcclxuICAgIGFjdGlvbi5udW1iZXJPZkNoZWNrZWQgPSBpbmRleDtcclxuICAgIHRoaXMudGFibGVBY3Rpb24uZW1pdChhY3Rpb24pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXQgaHR0cFNlcnZpY2UoKTogSHR0cFNlcnZpY2Uge1xyXG4gICAgcmV0dXJuIHRoaXMuaW5qZWN0b3IuZ2V0KEh0dHBTZXJ2aWNlKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0IG56Q29udGV4dE1lbnVTZXJ2aWNlKCk6IE56Q29udGV4dE1lbnVTZXJ2aWNlIHtcclxuICAgIHJldHVybiB0aGlzLmluamVjdG9yLmdldChOekNvbnRleHRNZW51U2VydmljZSk7XHJcbiAgfVxyXG5cclxuICBzZXRUYWJsZUxvYWRkaW5nKGxvYWRkaW5nOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLmxvYWRpbmcgPSBsb2FkZGluZztcclxuICB9XHJcblxyXG4gIG9uUmVzaXplKHdpZHRoOiBhbnksIGNvbDogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLnF1ZXJ5T3B0cy50YWJsZXMgPSB0aGlzLnF1ZXJ5T3B0cy50YWJsZXMubWFwKChlOiBhbnkpID0+IChlLm5hbWUgPT09IGNvbCA/IHsuLi5lLCB3aWR0aDogYCR7d2lkdGh9cHhgfSA6IGUpKTtcclxuICAgIGxldCB4ID0gMDtcclxuICAgIGZvciAobGV0IGl0ZW0gb2YgdGhpcy5xdWVyeU9wdHMudGFibGVzKSB7XHJcblxyXG4gICAgICBpZiAoaXRlbS5pc1Nob3cgJiYgaXRlbS53aWR0aCkge1xyXG4gICAgICAgIHggKz0gVG9vbHNVdGlsLnBpeGVsVG9OdW0oaXRlbS53aWR0aCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGlmICh4ID4gMjIpIHtcclxuICAgICAgeCA9IHggLSAyMjtcclxuICAgICAgdGhpcy5zY3JvbGxTaXplLnggPSB4ICsgXCJweFwiO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaXNFbmFibGUob3BlcmF0b3I6IHN0cmluZykge1xyXG4gICAgbGV0IGlzRW5hYmxlID0gdHJ1ZTtcclxuICAgIGlmICghb3BlcmF0b3IgfHwgb3BlcmF0b3IgPT0gdW5kZWZpbmVkIHx8IG9wZXJhdG9yID09IFwiXCIpXHJcbiAgICAgIGlzRW5hYmxlID0gZmFsc2U7XHJcbiAgICBlbHNlIHtcclxuICAgICAgbGV0IG9wID0gb3BlcmF0b3Iuc3BsaXQoXCJ8XCIpO1xyXG4gICAgICBpZiAob3AubGVuZ3RoID4gMikge1xyXG4gICAgICAgIGxldCBrZXkgPSBvcFswXTtcclxuICAgICAgICBpZiAoIWtleSkge1xyXG4gICAgICAgICAgaXNFbmFibGUgPSBmYWxzZTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgaXNFbmFibGUgPSAhdGhpcy5jb21wYXJlKHRoaXMubnVtYmVyT2ZDaGVja2VkLCBvcFsxXSwgb3BbMl0pXHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2VcclxuICAgICAgICBpc0VuYWJsZSA9IGZhbHNlXHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGlzRW5hYmxlXHJcbiAgfVxyXG5cclxuICBpc1Nob3dCdG4oZGF0YTogYW55LCBvcGVyYXRvcjogc3RyaW5nLCBhY3Rpb24/OiBUYWJsZUFjdGlvbik6IGJvb2xlYW4ge1xyXG4gICAgbGV0IGlzU2hvdyA9IGZhbHNlO1xyXG4gICAgaWYgKCFvcGVyYXRvciB8fCBvcGVyYXRvciA9PSBudWxsIHx8IG9wZXJhdG9yID09IFwiXCIpIHtcclxuICAgICAgaXNTaG93ID0gdHJ1ZTtcclxuICAgIH0gZWxzZSBpZiAob3BlcmF0b3IuaW5kZXhPZignJiYnKSA+IDApIHtcclxuICAgICAgLy8gYXxlcXxiICYmY3xlcXxkXHJcbiAgICAgIGNvbnN0IG9wcyA9IG9wZXJhdG9yLnNwbGl0KCcmJicpO1xyXG4gICAgICBpZiAob3BzLmxlbmd0aCA+IDEpIHtcclxuICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6cHJlZmVyLWZvci1vZlxyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgb3BzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICBpc1Nob3cgPSB0cnVlXHJcbiAgICAgICAgICBpZiAoIXRoaXMuY2hlY2tJc1Nob3dCYXNlKG9wc1tpXS5zcGxpdCgnfCcpLCBkYXRhKSkge1xyXG4gICAgICAgICAgICBpc1Nob3cgPSBmYWxzZTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9IGVsc2UgaWYgKG9wZXJhdG9yLmluZGV4T2YoJ3x8JykgPiAwKSB7XHJcbiAgICAgIC8vIGF8ZXF8Ynx8Y3xlcXxkXHJcbiAgICAgIGNvbnN0IG9wcyA9IG9wZXJhdG9yLnNwbGl0KCcmJicpO1xyXG4gICAgICBpZiAob3BzLmxlbmd0aCA+IDEpIHtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG9wcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgaXNTaG93ID0gZmFsc2U7XHJcbiAgICAgICAgICBpZiAodGhpcy5jaGVja0lzU2hvd0Jhc2Uob3BzW2ldLnNwbGl0KCd8JyksIGRhdGEpKSB7XHJcbiAgICAgICAgICAgIGlzU2hvdyA9IHRydWU7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgbGV0IG9wID0gb3BlcmF0b3Iuc3BsaXQoXCJ8XCIpO1xyXG4gICAgICBpc1Nob3cgPSB0aGlzLmNoZWNrSXNTaG93QmFzZShvcCwgZGF0YSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gaXNTaG93O1xyXG4gIH1cclxuXHJcbiAgY2hlY2tJc1Nob3dCYXNlKG9wOiBhbnksIGRhdGE6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgbGV0IGlzU2hvdyA9IGZhbHNlO1xyXG4gICAgaWYgKG9wLmxlbmd0aCA+IDEpIHtcclxuICAgICAgbGV0IHZhbHVlID0gZGF0YVtvcFswXV07XHJcbiAgICAgIGlmICghdmFsdWUpIHtcclxuICAgICAgICBpc1Nob3cgPSBmYWxzZTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBpc1Nob3cgPSB0aGlzLmNvbXBhcmUodmFsdWUsIG9wWzFdLCBvcFsyXSlcclxuICAgICAgfVxyXG4gICAgfSBlbHNlXHJcbiAgICAgIGlzU2hvdyA9IGZhbHNlXHJcblxyXG4gICAgcmV0dXJuIGlzU2hvdztcclxuICB9XHJcblxyXG4gIGNvbXBhcmUodmFsdWU6IGFueSwgb3BlcmF0b3I6IGFueSwgdGFyZ2V0OiBhbnkpOiBib29sZWFuIHtcclxuICAgIGxldCBpc1JpZ2h0ID0gZmFsc2U7XHJcbiAgICBzd2l0Y2ggKG9wZXJhdG9yKSB7XHJcbiAgICAgIGNhc2UgJ2VxJyA6XHJcbiAgICAgICAgaWYgKHZhbHVlID09IHRhcmdldCkge1xyXG4gICAgICAgICAgaXNSaWdodCA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdnaCcgOlxyXG4gICAgICAgIGlmICh2YWx1ZSA+PSB0YXJnZXQpIHtcclxuICAgICAgICAgIGlzUmlnaHQgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnbm90RW1wdHknOlxyXG4gICAgICAgIGlzUmlnaHQgPSBmYWxzZTtcclxuICAgICAgICBpZiAodmFsdWUpIHtcclxuICAgICAgICAgIGlzUmlnaHQgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnZW1wdHknOlxyXG4gICAgICAgIGlzUmlnaHQgPSBmYWxzZTtcclxuICAgICAgICBpZiAoIXZhbHVlKSB7XHJcbiAgICAgICAgICBpc1JpZ2h0ID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGRlZmF1bHQgOlxyXG4gICAgICAgIGlzUmlnaHQgPSBmYWxzZTtcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICAgIHJldHVybiBpc1JpZ2h0O1xyXG4gIH1cclxuXHJcbiAgcHVzaFRhYmxlRGF0YXModGFibGVEYXRhczogYW55KSB7XHJcbiAgICB0aGlzLnRhYmxlRGF0YXMgPSB0aGlzLnRhYmxlRGF0YXMuY29uY2F0KHRhYmxlRGF0YXMpO1xyXG4gIH1cclxuXHJcbiAgcmVtb3ZlRGF0YXMoa2V5OiBhbnksIHZhbHVlOiBhbnkpIHtcclxuICAgIHRoaXMudGFibGVEYXRhcy5mb3JFYWNoKChpdGVtOiBhbnksIGluZGV4OiBhbnkpID0+IHtcclxuICAgICAgaWYgKGl0ZW1ba2V5XSA9PT0gdmFsdWUpIHtcclxuICAgICAgICB0aGlzLnRhYmxlRGF0YXMuc3BsaWNlKGluZGV4LCAxKTtcclxuICAgICAgfVxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIGRvQWN0aW9uKGNvZGU6IGFueSkge1xyXG4gICAgbGV0IGFjdGlvbjogVGFibGVBY3Rpb24gPSB7XHJcbiAgICAgIG5hbWU6IGNvZGUsXHJcbiAgICAgIGNvZGU6IGNvZGUsXHJcbiAgICAgIHR5cGU6IFwicm93c1wiXHJcbiAgICB9O1xyXG4gICAgbGV0IHNlbGVjdERhdGFzOiBhbnkgPSBbXTtcclxuICAgIGlmICh0aGlzLnRhYmxlRGF0YXMgJiYgdGhpcy50YWJsZURhdGFzLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy50YWJsZURhdGFzLmZvckVhY2goKGl0ZW06IGFueSkgPT4ge1xyXG4gICAgICAgIGlmICh0aGlzLm1hcE9mQ2hlY2tlZElkW2l0ZW0uaWRdKVxyXG4gICAgICAgICAgc2VsZWN0RGF0YXMucHVzaChpdGVtKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBhY3Rpb24uZGF0YXMgPSBzZWxlY3REYXRhcztcclxuICAgIGlmIChzZWxlY3REYXRhcyAmJiBzZWxlY3REYXRhcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGFjdGlvbi5maXJzdERhdGEgPSBzZWxlY3REYXRhc1swXTtcclxuICAgIH1cclxuICAgIGFjdGlvbi5udW1iZXJPZkNoZWNrZWQgPSBzZWxlY3REYXRhcy5sZW5ndGg7XHJcbiAgICB0aGlzLnRhYmxlQWN0aW9uLmVtaXQoYWN0aW9uKTtcclxuICB9XHJcblxyXG4gIGRvQWN0aW9uQnlSb3coZGF0YTogYW55LCBjb2RlOiBhbnksIGV2ZW50OiBNb3VzZUV2ZW50KSB7XHJcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgaWYgKGV2ZW50LnN0b3BQcm9wYWdhdGlvbikge1xyXG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKVxyXG4gICAgfVxyXG4gICAgbGV0IGFjdGlvbjogVGFibGVBY3Rpb24gPSB7XHJcbiAgICAgIG5hbWU6IGNvZGUsXHJcbiAgICAgIGNvZGU6IGNvZGUsXHJcbiAgICAgIHR5cGU6IFwicm93XCJcclxuICAgIH07XHJcbiAgICBhY3Rpb24uZGF0YSA9IGRhdGE7XHJcbiAgICBhY3Rpb24uZmlyc3REYXRhID0gZGF0YTtcclxuICAgIGFjdGlvbi5udW1iZXJPZkNoZWNrZWQgPSAxO1xyXG4gICAgdGhpcy50YWJsZUFjdGlvbi5lbWl0KGFjdGlvbik7XHJcbiAgfVxyXG5cclxuICBnZXRBbGxDaGVja0luZm8oKTogYW55W10ge1xyXG4gICAgbGV0IGlkczogYW55ID0gW107XHJcbiAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyh0aGlzLm1hcE9mQ2hlY2tlZElkKSkge1xyXG4gICAgICBpZiAodGhpcy5tYXBPZkNoZWNrZWRJZC5oYXNPd25Qcm9wZXJ0eShrZXkpICYmIHRoaXMubWFwT2ZDaGVja2VkSWRba2V5XSkge1xyXG4gICAgICAgIGlkcy5wdXNoKGtleSlcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGlkcztcclxuICB9XHJcblxyXG4gIGdldEFsbENoZWNrRGF0YXMoKTogYW55W10ge1xyXG4gICAgbGV0IHNlbGVjdERhdGFzOiBhbnkgPSBbXVxyXG4gICAgdGhpcy50YWJsZURhdGFzLmZvckVhY2goKGl0ZW06IGFueSkgPT4ge1xyXG4gICAgICBpZiAodGhpcy5tYXBPZkNoZWNrZWRJZFtpdGVtLmlkXSlcclxuICAgICAgICBzZWxlY3REYXRhcy5wdXNoKGl0ZW0pO1xyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gc2VsZWN0RGF0YXM7XHJcbiAgfVxyXG5cclxuICBjaGVja0FsbCh2YWx1ZTogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgdGhpcy50YWJsZURhdGFzLmZvckVhY2goKGl0ZW06IGFueSkgPT4gKHRoaXMubWFwT2ZDaGVja2VkSWRbaXRlbS5pZF0gPSB2YWx1ZSkpO1xyXG4gICAgdGhpcy5yZWZyZXNoU3RhdHVzKCk7XHJcbiAgfVxyXG5cclxuICByZWZyZXNoU3RhdHVzKCk6IHZvaWQge1xyXG4gICAgdGhpcy5pc0FsbERpc3BsYXlEYXRhQ2hlY2tlZCA9IHRoaXMudGFibGVEYXRhc1xyXG4gICAgICAuZXZlcnkoKGl0ZW06IGFueSkgPT4gdGhpcy5tYXBPZkNoZWNrZWRJZFtpdGVtLmlkXSk7XHJcbiAgICB0aGlzLmlzSW5kZXRlcm1pbmF0ZSA9XHJcbiAgICAgIHRoaXMudGFibGVEYXRhcy5zb21lKChpdGVtOiBhbnkpID0+IHRoaXMubWFwT2ZDaGVja2VkSWRbaXRlbS5pZF0pICYmXHJcbiAgICAgICF0aGlzLmlzQWxsRGlzcGxheURhdGFDaGVja2VkO1xyXG4gICAgdGhpcy5udW1iZXJPZkNoZWNrZWQgPSB0aGlzLnRhYmxlRGF0YXMuZmlsdGVyKChpdGVtOiBhbnkpID0+IHRoaXMubWFwT2ZDaGVja2VkSWRbaXRlbS5pZF0pLmxlbmd0aDtcclxuICAgIHRoaXMudGFibGVBY3Rpb24uZW1pdCh7XHJcbiAgICAgIGNvZGU6ICdyZWZyZXNoU3RhdHVzJywgbmFtZTogJ3NlbGVjdCcsXHJcbiAgICAgIHR5cGU6IFwicm93XCIsIGRhdGE6IHRoaXMuZ2V0QWxsQ2hlY2tEYXRhcygpXHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgc2VsZWN0Um93KGRhdGE6IGFueSwgcm93Tm86IG51bWJlcikge1xyXG4gICAgLy8gdGhpcy50YWJsZURhdGFzLmZvckVhY2goaXRlbSA9PiAodGhpcy5tYXBPZkNoZWNrZWRJZFtkYXRhLmlkXSA9IHZhbHVlKSk7XHJcbiAgICB0aGlzLmN1ckNoZWNrZWQgPSByb3dObztcclxuICAgIGlmICghdGhpcy5xdWVyeU9wdHMuY2hlY2tCb3g/LmlzRm9yYmlkKSB7XHJcbiAgICAgIGlmICh0aGlzLnF1ZXJ5T3B0cy5jaGVja0JveD8uaXNTaG93Q2hlY2tib3gpIHtcclxuICAgICAgICB0aGlzLm1hcE9mQ2hlY2tlZElkW2RhdGEuaWRdID0gIXRoaXMubWFwT2ZDaGVja2VkSWRbZGF0YS5pZF07XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5tYXBPZkNoZWNrZWRJZCA9IHt9O1xyXG4gICAgICAgIHRoaXMubWFwT2ZDaGVja2VkSWRbZGF0YS5pZF0gPSB0cnVlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBsZXQgYWN0aW9uOiBUYWJsZUFjdGlvbiA9IHtcclxuICAgICAgbmFtZTogJ3NlbGVjdCcsXHJcbiAgICAgIGNvZGU6ICdzZWxlY3QnLFxyXG4gICAgICB0eXBlOiBcInJvd1wiXHJcbiAgICB9O1xyXG4gICAgYWN0aW9uLmRhdGEgPSBkYXRhO1xyXG4gICAgYWN0aW9uLmZpcnN0RGF0YSA9IGRhdGE7XHJcbiAgICBhY3Rpb24ubnVtYmVyT2ZDaGVja2VkID0gMTtcclxuICAgIHRoaXMudGFibGVBY3Rpb24uZW1pdChhY3Rpb24pO1xyXG4gICAgdGhpcy5yZWZyZXNoU3RhdHVzKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuYXRyRm9ybSA9IHRoaXMuZmIuZ3JvdXAoe30pO1xyXG4gICAgbGV0IHggPSB0aGlzLnRhYmxlQ29udGVudC5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoIC0gMjJcclxuICAgIGxldCB5ID0gdGhpcy50YWJsZUNvbnRlbnQubmF0aXZlRWxlbWVudC5vZmZzZXRIZWlnaHQgLSAyMDBcclxuICAgIHRoaXMuc2Nyb2xsU2l6ZS54ID0gKHggPiAwID8geCA6IDEwMCkgKyBcInB4XCI7XHJcbiAgICB0aGlzLnNjcm9sbFNpemUueSA9ICh5ID4gMCA/IHkgOiAxMDApICsgXCJweFwiO1xyXG4gICAgLy8gY29uc29sZS5sb2codGhpcy5zY3JvbGxTaXplKVxyXG4gICAgdGhpcy5pbml0SGVhZGVyKCk7XHJcbiAgICBpZiAodGhpcy5xdWVyeU9wdHMgJiYgdGhpcy5xdWVyeU9wdHMudGFibGVzKSB7XHJcbiAgICAgIGZvciAobGV0IHRhYmxlIG9mIHRoaXMucXVlcnlPcHRzLnRhYmxlcykge1xyXG4gICAgICAgIGlmKHRhYmxlLnR5cGUgPT0gJ2RpY3QnKXtcclxuICAgICAgICAgIHRoaXMuZ2V0RGljdFZhbHVlKHRhYmxlLmRpY3RDb2RlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRhYmxlLnNvcnRLZXkpIHtcclxuICAgICAgICAgIHRhYmxlLnNvcnRhYmxlID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuc29ydE1hcFt0YWJsZS5zb3J0S2V5XSA9IG51bGw7XHJcbiAgICAgICAgfSBlbHNlXHJcbiAgICAgICAgICB0YWJsZS5zb3J0YWJsZSA9IGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5xdWVyeU9wdHMgJiYgdGhpcy5xdWVyeU9wdHMuZGVmYXVsdFBhcmFtcykge1xyXG4gICAgICB0aGlzLmRlZmF1bHRQYXJhbXMgPSB0aGlzLnF1ZXJ5T3B0cy5kZWZhdWx0UGFyYW1zXHJcbiAgICB9XHJcbiAgICBpZiAoIXRoaXMucXVlcnlPcHRzLmlzQXV0b1F1ZXJ5KSB7XHJcbiAgICAgIHRoaXMucXVlcnkoKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAvLyB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGluaXRIZWFkZXIoKSB7XHJcbiAgICB0aGlzLmhlYWRlckRlZmF1bHRWYWwgPSB7fTtcclxuICAgIGlmICh0aGlzLnF1ZXJ5T3B0cyAmJiB0aGlzLnF1ZXJ5T3B0cy5oZWFkZXJzICYmIHRoaXMucXVlcnlPcHRzLmhlYWRlcnMubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLnF1ZXJ5T3B0cy5oZWFkZXJzLmZvckVhY2goKGl0ZW06IGFueSwgaTogYW55KSA9PiB7XHJcbiAgICAgICAgaXRlbS5zcGFuID0gaXRlbS5zcGFuIHx8IDg7XHJcbiAgICAgICAgaWYgKCFUb29sc1V0aWwuaXNOdWxsKGl0ZW0uZGVmYXVsdFZhbCkpIHtcclxuICAgICAgICAgIHRoaXMuaGVhZGVyRGVmYXVsdFZhbFtpdGVtLmtleV0gPSBpdGVtLmRlZmF1bHRWYWxcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGl0ZW0uaXNTaG93ICE9IGZhbHNlKSB7XHJcbiAgICAgICAgICBpdGVtLmlzU2hvdyA9IGkgPCB0aGlzLnF1ZXJ5T3B0cy5zaG93TnVtXHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuYXRyRm9ybS5hZGRDb250cm9sKGl0ZW0ua2V5LCBuZXcgVW50eXBlZEZvcm1Db250cm9sKCkpO1xyXG4gICAgICAgIGxldCB0eXBlID0gaXRlbS50eXBlO1xyXG4gICAgICAgIHN3aXRjaCAodHlwZSkge1xyXG4gICAgICAgICAgY2FzZSBcInNlbGVjdFwiOlxyXG4gICAgICAgICAgICB0aGlzLmdldERpY3RWYWx1ZShpdGVtLmRpY3RDb2RlKTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICBjYXNlIFwidHJlZVNlbGVjdFwiOlxyXG4gICAgICAgICAgY2FzZSBcImNhc2NhZGVyXCI6XHJcbiAgICAgICAgICBjYXNlIFwic2VsZWN0Q3VzXCI6XHJcbiAgICAgICAgICAgIGlmIChpdGVtLnNlbGVjdFVybCAmJiBpdGVtLnNlbGVjdFVybC51cmwpIHtcclxuICAgICAgICAgICAgICB0aGlzLmdldERpY0xpc3QoaXRlbSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldERpY0xpc3QoaXRlbTogYW55KSB7XHJcbiAgICBpZiAoIWl0ZW0uc2VsZWN0VXJsIHx8ICFpdGVtLnNlbGVjdFVybC51cmwpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgbGV0IGtleXMgPSBpdGVtLnNlbGVjdFVybC5jb252ZXJ0LnNwbGl0KCcsJyk7XHJcbiAgICB0aGlzLmh0dHBTZXJ2aWNlLnBvc3QoaXRlbS5zZWxlY3RVcmwudXJsLCB7fSwgVG9vbHNVdGlsLmdldEh0dHBPcHRpb25zKCkpLnN1YnNjcmliZShyZXMgPT4ge1xyXG4gICAgICBpZiAoaXRlbS50eXBlID09ICd0cmVlU2VsZWN0Jykge1xyXG4gICAgICAgIGl0ZW0udHJlZUxpc3QgPSByZXMuZGF0YS5maWx0ZXIoKGNoaWxkOiBhbnkpID0+IHtcclxuICAgICAgICAgIGtleXMuZm9yRWFjaCgodjogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIGxldCB2cyA9IHYuc3BsaXQoXCJ8XCIpO1xyXG4gICAgICAgICAgICBjaGlsZFt2c1swXV0gPSBjaGlsZFt2c1sxXV07XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIC8vIGNoaWxkLmtleSA9IGNoaWxkLmlkO1xyXG4gICAgICAgICAgLy8gY2hpbGQudGl0bGUgPSBjaGlsZC5yZWFsTmFtZTtcclxuICAgICAgICAgIHJldHVybiB0cnVlXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0gZWxzZSBpZiAoaXRlbS50eXBlID09ICdzZWxlY3RDdXMnKSB7XHJcbiAgICAgICAgaXRlbS5kaWN0TGlzdCA9IHJlcy5kYXRhLmZpbHRlcigoY2hpbGQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAga2V5cy5mb3JFYWNoKCh2OiBhbnkpID0+IHtcclxuICAgICAgICAgICAgbGV0IHZzID0gdi5zcGxpdChcInxcIik7XHJcbiAgICAgICAgICAgIGNoaWxkW3ZzWzBdXSA9IGNoaWxkW3ZzWzFdXTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgLy8gY2hpbGQudmFsdWUgPSBjaGlsZC5pZDtcclxuICAgICAgICAgIC8vIGNoaWxkLmxhYmVsID0gY2hpbGQubmFtZTtcclxuICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCkge1xyXG5cclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICBsZXQgc2Nyb2xsU2l6ZSA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy5zY3JvbGxTaXplKSk7XHJcbiAgICAgIHNjcm9sbFNpemUueSA9IHRoaXMudGFibGVDb250ZW50Lm5hdGl2ZUVsZW1lbnQub2Zmc2V0SGVpZ2h0IC0gMTAwICsgXCJweFwiO1xyXG4gICAgICBpZih0aGlzLmlzSGlkZVRhYmxlKXtcclxuICAgICAgICBzY3JvbGxTaXplLnkgPSB0aGlzLnRhYmxlQ29udGVudC5uYXRpdmVFbGVtZW50Lm9mZnNldEhlaWdodCAtIDYwICsgXCJweFwiO1xyXG4gICAgICB9XHJcbiAgICAgIGxldCB3aWR0aCA9IDA7XHJcbiAgICAgIGlmICh0aGlzLnF1ZXJ5T3B0cyAmJiB0aGlzLnF1ZXJ5T3B0cy50YWJsZXMpIHtcclxuICAgICAgICBmb3IgKGxldCB0YWJsZSBvZiB0aGlzLnF1ZXJ5T3B0cy50YWJsZXMpIHtcclxuICAgICAgICAgIGlmICh0YWJsZS5pc1Nob3cgJiYgdGFibGUud2lkdGgpIHtcclxuXHJcbiAgICAgICAgICAgIHdpZHRoICs9IFRvb2xzVXRpbC5waXhlbFRvTnVtKHRhYmxlLndpZHRoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgbGV0IHcgPSB0aGlzLnRhYmxlQ29udGVudC5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoIC0gMjI7XHJcbiAgICAgIGlmICh3aWR0aCA+IHcpXHJcbiAgICAgICAgc2Nyb2xsU2l6ZS54ID0gd2lkdGggKyBcInB4XCI7XHJcbiAgICAgIGVsc2VcclxuICAgICAgICBzY3JvbGxTaXplLnggPSB0aGlzLnRhYmxlQ29udGVudC5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoIC0gMjIgKyBcInB4XCI7XHJcblxyXG4gICAgICBjb25zb2xlLmxvZyhzY3JvbGxTaXplKTtcclxuICAgICAgdGhpcy5zY3JvbGxTaXplID0gc2Nyb2xsU2l6ZTtcclxuICAgICAgdGhpcy5pc0FsbExvYWQgPSB0cnVlO1xyXG4gICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH0sIDEwMClcclxuXHJcblxyXG4gIH1cclxuXHJcbiAgc29ydChzb3J0TmFtZTogc3RyaW5nLCB2YWx1ZTogYW55KTogdm9pZCB7XHJcbiAgICBmb3IgKGNvbnN0IGtleSBpbiB0aGlzLnNvcnRNYXApIHtcclxuICAgICAgdGhpcy5zb3J0TWFwW2tleV0gPSBrZXkgPT09IHNvcnROYW1lID8gdmFsdWUgOiBudWxsO1xyXG4gICAgfVxyXG4gICAgLy8gdGhpcy5zZWFyY2godGhpcy5saXN0T2ZTZWFyY2hOYW1lLCB0aGlzLmxpc3RPZlNlYXJjaEFkZHJlc3MpO1xyXG4gICAgY29uc29sZS5sb2codGhpcy5zb3J0TWFwKVxyXG4gICAgdGhpcy5xdWVyeSh0cnVlKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0IGRpY3RTZXJ2aWNlKCk6IERpY3RTZXJ2aWNlIHtcclxuICAgIHJldHVybiB0aGlzLmluamVjdG9yLmdldChEaWN0U2VydmljZSlcclxuICB9XHJcblxyXG4gIGdldERpY3RWYWx1ZShjb2RlOiBzdHJpbmcpIHtcclxuICAgIGNvbnNvbGUubG9nKFwicHBwcFwiKTtcclxuICAgIHRoaXMuZGljdFNlcnZpY2UuZ2V0RGljdEJ5Y29kZShjb2RlKS5zdWJzY3JpYmUoXHJcbiAgICAgIHJlc3VsdCA9PiB7XHJcbiAgICAgICAgaWYgKHJlc3VsdCAmJiByZXN1bHQgIT0gbnVsbClcclxuICAgICAgICAgIHRoaXMuZGljdHNbY29kZV0gPSByZXN1bHQuZGljdHM7XHJcbiAgICAgICAgY29uc29sZS5sb2codGhpcy5kaWN0cylcclxuXHJcbiAgICAgIH0sXHJcbiAgICAgIGVycm9yID0+IHtcclxuICAgICAgICB0aGlzLmRpY3RzW2NvZGVdID0gW107XHJcbiAgICAgIH1cclxuICAgIClcclxuICB9XHJcblxyXG4gIHRvZ2dsZUNvbGxhcHNlKCk6IHZvaWQge1xyXG4gICAgdGhpcy5pc0NvbGxhcHNlID0gIXRoaXMuaXNDb2xsYXBzZTtcclxuICAgIC8vIHRoaXMucXVlcnlPcHRzLmhlYWRlcnMuZm9yRWFjaCgoYzogYW55LCBpbmRleDogYW55KSA9PiB7XHJcbiAgICAvLyAgIGMuaXNTaG93ID0gdGhpcy5pc0NvbGxhcHNlID8gaW5kZXggPCB0aGlzLnF1ZXJ5T3B0cy5zaG93TnVtIDogdHJ1ZTtcclxuICAgIC8vIH0pO1xyXG4gICAgbGV0IGFjdGlvbjogVGFibGVBY3Rpb24gPSB7XHJcbiAgICAgIG5hbWU6ICfmlLbotbcv5bGV5byAJyxcclxuICAgICAgY29kZTogJ2NvbGxhcHNlJyxcclxuICAgICAgZGF0YTogdGhpcy5pc0NvbGxhcHNlLFxyXG4gICAgICB2YWx1ZTogdGhpcy5pc0NvbGxhcHNlLFxyXG4gICAgfTtcclxuICAgIHRoaXMuaGVhZGVyQWN0aW9uLmVtaXQoYWN0aW9uKVxyXG4gIH1cclxuXHJcbiAgcmVzZXRGb3JtKCk6IHZvaWQge1xyXG4gICAgdGhpcy5hdHJGb3JtLnJlc2V0KCk7XHJcbiAgICBmb3IgKGNvbnN0IGtleSBpbiB0aGlzLmhlYWRlckRlZmF1bHRWYWwpIHtcclxuICAgICAgdGhpcy5hdHJGb3JtLmdldChrZXkpPy5zZXRWYWx1ZSh0aGlzLmhlYWRlckRlZmF1bHRWYWxba2V5XSk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5oZWFkZXJBY3Rpb24uZW1pdCgge1xyXG4gICAgICBuYW1lOiAn6YeN572uJyxcclxuICAgICAgY29kZToncmVzZXRGb3JtJyxcclxuICAgIH0pXHJcblxyXG4gIH1cclxuXHJcbiAgc2VsZWN0Q2hhbmdlKHZhbHVlOiBhbnksIGl0ZW06IGFueSkge1xyXG4gICAgY29uc29sZS5sb2codmFsdWUpO1xyXG4gICAgbGV0IGFjdGlvbjogVGFibGVBY3Rpb24gPSB7XHJcbiAgICAgIG5hbWU6IGl0ZW0ubGFiZWwsXHJcbiAgICAgIGNvZGU6IGl0ZW0ua2V5LFxyXG4gICAgICBkYXRhOiBpdGVtLFxyXG4gICAgICB2YWx1ZTogdmFsdWUsXHJcbiAgICB9O1xyXG4gICAgdGhpcy5oZWFkZXJBY3Rpb24uZW1pdChhY3Rpb24pXHJcblxyXG4gIH1cclxuXHJcbiAgY2xpY2tJY29uKHZhbHVlOiBhbnksIGl0ZW06IEF0clF1ZXJ5SGVhZGVyLCAkZXZlbnQ6IGFueSkge1xyXG4gICAgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgY29uc29sZS5sb2codmFsdWUsIGl0ZW0pO1xyXG4gICAgbGV0IGFjdGlvbjogVGFibGVBY3Rpb24gPSB7XHJcbiAgICAgIG5hbWU6IGl0ZW0ubmFtZSxcclxuICAgICAgY29kZTogaXRlbS5pY29uPy5jb2RlID8gaXRlbS5pY29uPy5jb2RlIDogXCJcIixcclxuICAgICAgZGF0YTogaXRlbSxcclxuICAgICAgdmFsdWU6IHZhbHVlLFxyXG4gICAgfTtcclxuICAgIHRoaXMuaGVhZGVyQWN0aW9uLmVtaXQoYWN0aW9uKVxyXG4gIH1cclxuXHJcbiAgZ2V0UXVlcnlQYXJhbXMocmVzZXQ6IGJvb2xlYW4pOiBqc29uIHtcclxuICAgIGlmIChyZXNldCkge1xyXG4gICAgICB0aGlzLnBhZ2VJbmRleCA9IDE7XHJcbiAgICB9XHJcbiAgICBjb25zb2xlLmxvZyh0aGlzLnBhZ2VJbmRleCk7XHJcbiAgICBsZXQgcGFyYW1zOiBhbnkgPSB7XHJcbiAgICAgIHBhZ2U6IHRoaXMucGFnZUluZGV4LFxyXG4gICAgICBsaW1pdDogdGhpcy5wYWdlU2l6ZSxcclxuICAgICAgc29ydDogdGhpcy5nZXRTb3J0SW5mbygpXHJcbiAgICB9O1xyXG4gICAgcGFyYW1zID0gT2JqZWN0LmFzc2lnbihwYXJhbXMsIHRoaXMuZGVmYXVsdFBhcmFtcyk7XHJcbiAgICBmb3IgKGNvbnN0IGtleSBpbiB0aGlzLmF0ckZvcm0udmFsdWUpIHtcclxuICAgICAgaWYgKHRoaXMuYXRyRm9ybS52YWx1ZVtrZXldICYmIHRoaXMuYXRyRm9ybS52YWx1ZVtrZXldICE9IG51bGwgJiYgdGhpcy5hdHJGb3JtLnZhbHVlW2tleV0gIT0gXCJcIikge1xyXG4gICAgICAgIGlmICh0aGlzLmdldEhlZGVyVHlwZShrZXkpID09IFwiZGF0ZVJhbmdlXCIpIHtcclxuICAgICAgICAgIGxldCBiZWdpbiA9IGtleSArIFwiQmVnaW5cIjtcclxuICAgICAgICAgIGxldCBlbmQgPSBrZXkgKyBcIkVuZFwiO1xyXG4gICAgICAgICAgbGV0IGZvcm1hdGUgPSAneXl5eS1NTS1kZCAwMDowMDowMCdcclxuICAgICAgICAgIGxldCBuelNob3dUaW1lOiBhbnkgPSB0aGlzLmdldEhlZGVyVHlwZShrZXksICduelNob3dUaW1lJylcclxuICAgICAgICAgIGlmIChuelNob3dUaW1lKSB7XHJcbiAgICAgICAgICAgIGZvcm1hdGUgPSAneXl5eS1NTS1kZCBISDptbTpzcydcclxuICAgICAgICAgICAgaWYgKG56U2hvd1RpbWUubnpGb3JtYXQpIHtcclxuICAgICAgICAgICAgICBmb3JtYXRlID0gJ3l5eXktTU0tZGQgJyArIG56U2hvd1RpbWUubnpGb3JtYXQ7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHBhcmFtc1tiZWdpbl0gPSBmb3JtYXREYXRlKCh0aGlzLmF0ckZvcm0udmFsdWVba2V5XVswXSBhcyBEYXRlKSwgZm9ybWF0ZSwgdGhpcy5sb2NhbGUpO1xyXG4gICAgICAgICAgcGFyYW1zW2VuZF0gPSBmb3JtYXREYXRlKCh0aGlzLmF0ckZvcm0udmFsdWVba2V5XVsxXSBhcyBEYXRlKSwgZm9ybWF0ZSwgdGhpcy5sb2NhbGUpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5nZXRIZWRlclR5cGUoa2V5KSA9PSBcImRheVJhbmdlXCIpIHtcclxuICAgICAgICAgIGxldCBiZWdpbiA9IGtleSArIFwiQmVnaW5cIjtcclxuICAgICAgICAgIGxldCBlbmQgPSBrZXkgKyBcIkVuZFwiO1xyXG4gICAgICAgICAgbGV0IGZvcm1hdGUgPSAneXl5eS1NTS1kZCAwMDowMDowMCdcclxuICAgICAgICAgIHBhcmFtc1tiZWdpbl0gPSBmb3JtYXREYXRlKCh0aGlzLmF0ckZvcm0udmFsdWVba2V5XVswXSBhcyBEYXRlKSwgZm9ybWF0ZSwgdGhpcy5sb2NhbGUpO1xyXG4gICAgICAgICAgcGFyYW1zW2VuZF0gPSBmb3JtYXREYXRlKCh0aGlzLmF0ckZvcm0udmFsdWVba2V5XVsxXSBhcyBEYXRlKSwgZm9ybWF0ZSwgdGhpcy5sb2NhbGUpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5nZXRIZWRlclR5cGUoa2V5KSA9PSBcInNkYXRlXCIpIHtcclxuICAgICAgICAgIHBhcmFtc1trZXldID0gZm9ybWF0RGF0ZSgodGhpcy5hdHJGb3JtLnZhbHVlW2tleV0gYXMgRGF0ZSksICd5eXl5LU1NLWRkIDAwOjAwOjAwJywgdGhpcy5sb2NhbGUpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5nZXRIZWRlclR5cGUoa2V5KSA9PSBcInRyZWVTZWxlY3RcIikge1xyXG4gICAgICAgICAgbGV0IHZhbHVlID0gdGhpcy5hdHJGb3JtLnZhbHVlW2tleV07XHJcbiAgICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgICAgIHBhcmFtc1trZXldID0gdGhpcy5hdHJGb3JtLnZhbHVlW2tleV07XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBwYXJhbXNba2V5XSA9IHRoaXMuYXRyRm9ybS52YWx1ZVtrZXldLmpvaW4oKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuZ2V0SGVkZXJUeXBlKGtleSkgPT0gXCJjYXNjYWRlclwiIHx8IHRoaXMuZ2V0SGVkZXJUeXBlKGtleSwnbnpNb2RlJykgPT0gJ211bHRpcGxlJykge1xyXG4gICAgICAgICAgcGFyYW1zW2tleV0gPSB0aGlzLmF0ckZvcm0udmFsdWVba2V5XS5qb2luKCk7XHJcbiAgICAgICAgfSAgZWxzZSB7XHJcbiAgICAgICAgICBwYXJhbXNba2V5XSA9IHRoaXMuYXRyRm9ybS52YWx1ZVtrZXldO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBjb25zb2xlLmxvZyhwYXJhbXMpXHJcbiAgICByZXR1cm4gcGFyYW1zO1xyXG5cclxuICB9XHJcblxyXG4gIGdldEhlZGVyVHlwZShjdXNLZXk6IHN0cmluZywgdHlwZUtleT86IHN0cmluZykge1xyXG4gICAgbGV0IHR5cGUgPSBudWxsO1xyXG4gICAgZm9yIChsZXQgaGVhZGVyIG9mIHRoaXMucXVlcnlPcHRzLmhlYWRlcnMpIHtcclxuICAgICAgaWYgKGN1c0tleSA9PSBoZWFkZXIua2V5KSB7XHJcbiAgICAgICAgdHlwZSA9IGhlYWRlclt0eXBlS2V5IHx8ICd0eXBlJ107XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiB0eXBlO1xyXG4gIH1cclxuXHJcbiAgc2V0RGVmYXVsdFBhcmFtcyhwYXJhbXM6IGFueSwgcmVzZXQ6IGJvb2xlYW4gPSB0cnVlKSB7XHJcbiAgICB0aGlzLmRlZmF1bHRQYXJhbXMgPSBwYXJhbXM7XHJcbiAgICB0aGlzLnF1ZXJ5KHJlc2V0KTtcclxuICB9XHJcblxyXG4gIGdldFNvcnRJbmZvKCk6IHN0cmluZyB7XHJcbiAgICBsZXQgb3JkZXJieTogYW55ID0gW107XHJcbiAgICBmb3IgKGNvbnN0IGtleSBpbiB0aGlzLnNvcnRNYXApIHtcclxuICAgICAgaWYgKHRoaXMuc29ydE1hcFtrZXldID09ICdhc2NlbmQnKSB7XHJcbiAgICAgICAgb3JkZXJieS5wdXNoKGtleSArIFwifFwiICsgXCJhc2NcIilcclxuICAgICAgfSBlbHNlIGlmICh0aGlzLnNvcnRNYXBba2V5XSA9PSAnZGVzY2VuZCcpIHtcclxuICAgICAgICBvcmRlcmJ5LnB1c2goa2V5ICsgXCJ8XCIgKyBcImRlc2NcIilcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgbGV0IG9yZGVyID0gXCJcIjtcclxuICAgIGlmIChvcmRlcmJ5Lmxlbmd0aCA8IDEgJiYgdGhpcy5xdWVyeU9wdHMuc29ydCkge1xyXG4gICAgICBvcmRlciA9IHRoaXMucXVlcnlPcHRzLnNvcnRcclxuICAgIH0gZWxzZVxyXG4gICAgICBvcmRlciA9IG9yZGVyYnkuam9pbihcIixcIik7XHJcbiAgICByZXR1cm4gb3JkZXI7XHJcbiAgfVxyXG5cclxuICBxdWVyeVRpbWUgPSBcIlwiO1xyXG4gIHF1ZXJ5KHJlc2V0OiBib29sZWFuID0gZmFsc2UpIHtcclxuICAgIGxldCBwYXJhbXMgPSB0aGlzLmdldFF1ZXJ5UGFyYW1zKHJlc2V0KTtcclxuICAgIGlmKHRoaXMucXVlcnlIZWFkZXJzKXtcclxuICAgICAgcGFyYW1zID0gT2JqZWN0LmFzc2lnbih7fSx0aGlzLnF1ZXJ5SGVhZGVycyxwYXJhbXMpO1xyXG4gICAgICBjb25zb2xlLmxvZygn5p+l6K+i5p2h5Lu2JyxwYXJhbXMpXHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5xdWVyeU9wdHMudXJsKSB7XHJcbiAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7XHJcbiAgICAgIHRoaXMucXVlcnlUaW1lID0gZm9ybWF0RGF0ZShuZXcgRGF0ZSgpLCAneXl5eS1NTS1kZCBISDptbTpzcycsIHRoaXMubG9jYWxlKTtcclxuICAgICAgdGhpcy5odHRwU2VydmljZS5wb3N0KHRoaXMucXVlcnlPcHRzLnVybCwgcGFyYW1zLCBUb29sc1V0aWwuZ2V0SHR0cE9wdGlvbnMoKSkuc3Vic2NyaWJlKFxyXG4gICAgICAgIHJlc3VsdCA9PiB7XHJcbiAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgIGlmIChyZXN1bHQuc3RhdHVzID09IDIwMCkge1xyXG4gICAgICAgICAgICBsZXQgYWN0aW9uOiBhbnkgPSB7fTtcclxuICAgICAgICAgICAgYWN0aW9uW1wicmVzdWx0XCJdID0gcmVzdWx0O1xyXG4gICAgICAgICAgICBhY3Rpb25bXCJwYXJhbXNcIl0gPSBwYXJhbXM7XHJcbiAgICAgICAgICAgIHRoaXMucXVlcnlCYWNrLmVtaXQoYWN0aW9uKTtcclxuICAgICAgICAgICAgdGhpcy50b3RhbCA9IHJlc3VsdD8ucGFnZT8udG90YWxSZXN1bHQ7XHJcbiAgICAgICAgICAgIHRoaXMudGFibGVEYXRhcyA9IHJlc3VsdC5kYXRhO1xyXG4gICAgICAgICAgICB0aGlzLmdldFJvd1NwYW4oKTtcclxuICAgICAgICAgICAgdGhpcy5tYXBPZkNoZWNrZWRJZCA9IHt9O1xyXG4gICAgICAgICAgICB0aGlzLmN1ckNoZWNrZWQgPSAtMTtcclxuICAgICAgICAgICAgdGhpcy5yZWZyZXNoU3RhdHVzKCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICBlcnJvciA9PiB7XHJcbiAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgIClcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMucXVlcnlCYWNrLmVtaXQoe25hbWU6ICcnLCBjb2RlOiAncXVlcnknLCBkYXRhOiBwYXJhbXN9KVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY29udGV4dE1lbnUoJGV2ZW50OiBhbnksIG1lbnU6IE56RHJvcGRvd25NZW51Q29tcG9uZW50KSB7XHJcbiAgICBjb25zb2xlLmxvZygkZXZlbnQpXHJcbiAgICB0aGlzLm56Q29udGV4dE1lbnVTZXJ2aWNlLmNyZWF0ZSgkZXZlbnQsIG1lbnUpO1xyXG4gIH1cclxuXHJcbiAgbG9nKHZhbHVlOiBzdHJpbmdbXSk6IHZvaWQge1xyXG4gICAgY29uc29sZS5sb2codmFsdWUpO1xyXG4gICAgZm9yIChsZXQgdGFibGUgb2YgdGhpcy5xdWVyeU9wdHMudGFibGVzKSB7XHJcbiAgICAgIGxldCBmbGFnID0gZmFsc2U7XHJcbiAgICAgIGZvciAobGV0IGl0ZW0gb2YgdmFsdWUpIHtcclxuICAgICAgICBpZiAoaXRlbSA9PSB0YWJsZS5rZXkpIHtcclxuICAgICAgICAgIHRhYmxlLmlzU2hvdyA9IHRydWU7XHJcbiAgICAgICAgICBmbGFnID0gdHJ1ZVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBpZiAoIWZsYWcpXHJcbiAgICAgICAgdGFibGUuaXNTaG93ID0gZmFsc2U7XHJcblxyXG4gICAgfVxyXG4gICAgY29uc29sZS5sb2codGhpcy5xdWVyeU9wdHMudGFibGVzKTtcclxuICB9XHJcblxyXG4gIGNoZWNrU2hvd1RkKGl0ZW06IFRhYmxlLCBpbmRleDogYW55KTogYm9vbGVhbiB7XHJcbiAgICBpZiAoIWl0ZW0uaXNTaG93KSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIGlmIChpdGVtLmlzUm93U3Bhbikge1xyXG4gICAgICAvLyDlkIjlubbooYws6L+U5Zue5YC85LiO5LiK5LiA6KGM55u45ZCM5YiZ6ZqQ6JeP6L+Z5LiA6KGMO1xyXG4gICAgICBpZiAoaW5kZXggPT0gMCkge1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IGtleSA9IGl0ZW0ua2V5ID8gaXRlbS5rZXkgOiBcIlwiO1xyXG4gICAgICBjb25zdCBjdXIgPSB0aGlzLnRhYmxlRGF0YXNbaW5kZXhdW2tleV07XHJcbiAgICAgIGNvbnN0IHByZSA9IHRoaXMudGFibGVEYXRhc1tpbmRleCAtIDFdW2tleV07XHJcblxyXG4gICAgICByZXR1cm4gIShjdXIgPT0gcHJlKTtcclxuICAgIH1cclxuICAgIHJldHVybiBpdGVtLmlzU2hvdztcclxuICB9XHJcblxyXG4gIGNoZWNrUm93U3BhbihpdGVtOiBUYWJsZSwgZGF0YTogYW55KSB7XHJcbiAgICBpZiAoaXRlbS5pc1Jvd1NwYW4pIHtcclxuICAgICAgcmV0dXJuIHRoaXMucm93U3Bhbk1hcFtpdGVtLmtleSA/IGl0ZW0ua2V5IDogXCJcIl1bZGF0YVtpdGVtLmtleSA/IGl0ZW0ua2V5IDogXCJcIl1dLm51bVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIDE7XHJcbiAgfVxyXG5cclxuICBnZXRSb3dTcGFuKCkge1xyXG4gICAgbGV0IGlzUm93U3BhbiA9IGZhbHNlO1xyXG4gICAgdGhpcy5xdWVyeU9wdHMudGFibGVzLmZvckVhY2goXHJcbiAgICAgIChpdGVtOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAoaXRlbS5pc1Jvd1NwYW4pIHtcclxuICAgICAgICAgIGlzUm93U3BhbiA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLnJvd1NwYW5NYXBbaXRlbS5rZXldID0ge307XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICApO1xyXG4gICAgaWYgKCFpc1Jvd1NwYW4pIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgbGV0IGtleXMgPSBPYmplY3Qua2V5cyh0aGlzLnJvd1NwYW5NYXApO1xyXG4gICAgdGhpcy50YWJsZURhdGFzLmZvckVhY2goXHJcbiAgICAgIChpdGVtOiBhbnkpID0+IHtcclxuICAgICAgICBrZXlzLmZvckVhY2goXHJcbiAgICAgICAgICBrZXkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IGl0ZW1ba2V5XTtcclxuICAgICAgICAgICAgaWYgKCF0aGlzLnJvd1NwYW5NYXBba2V5XVt2YWx1ZV0pIHtcclxuICAgICAgICAgICAgICB0aGlzLnJvd1NwYW5NYXBba2V5XVt2YWx1ZV0gPSB7XHJcbiAgICAgICAgICAgICAgICBudW06IDFcclxuICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHRoaXMucm93U3Bhbk1hcFtrZXldW3ZhbHVlXS5udW0gKz0gMTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIClcclxuICAgICAgfVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGRyb3AoZXZlbnQ6IENka0RyYWdEcm9wPHN0cmluZ1tdPik6IHZvaWQge1xyXG4gICAgbW92ZUl0ZW1JbkFycmF5KHRoaXMudGFibGVEYXRhcywgZXZlbnQucHJldmlvdXNJbmRleCwgZXZlbnQuY3VycmVudEluZGV4KTtcclxuICAgIGxldCBhY3Rpb246IFRhYmxlQWN0aW9uID0ge1xyXG4gICAgICBuYW1lOiAnZHJhZycsXHJcbiAgICAgIGNvZGU6ICdkcmFnJyxcclxuICAgICAgdHlwZTogXCJyb3dzXCJcclxuICAgIH07XHJcbiAgICBhY3Rpb24uZGF0YXMgPSB0aGlzLnRhYmxlRGF0YXM7XHJcbiAgICBpZiAodGhpcy50YWJsZURhdGFzICYmIHRoaXMudGFibGVEYXRhcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGFjdGlvbi5maXJzdERhdGEgPSB0aGlzLnRhYmxlRGF0YXNbMF07XHJcbiAgICB9XHJcbiAgICBhY3Rpb24ubnVtYmVyT2ZDaGVja2VkID0gMTtcclxuICAgIHRoaXMudGFibGVBY3Rpb24uZW1pdChhY3Rpb24pO1xyXG4gIH1cclxuXHJcbn1cclxuIiwiPGZvcm0gbnotZm9ybSBbZm9ybUdyb3VwXT1cImF0ckZvcm1cIiBjbGFzcz1cImFudC1hZHZhbmNlZC1zZWFyY2gtZm9ybVwiXHJcbiAgICAgICpuZ0lmPVwicXVlcnlPcHRzLmhlYWRlcnMubGVuZ3RoID4wIHx8IHF1ZXJ5T3B0cy5hY3Rpb25zLmxlbmd0aCA+MFwiPlxyXG4gIDxkaXYgbnotcm93IFtuekd1dHRlcl09XCIyNFwiIFtoaWRkZW5dPVwiIWlzQ29sbGFwc2VcIj5cclxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltoZWFkZXItbGVmdC1zbG90XVwiPjwvbmctY29udGVudD5cclxuICAgIDxkaXYgbnotY29sIFtoaWRkZW5dPVwiIWhlYWRlci5pc1Nob3cgXCIgKm5nRm9yPVwibGV0IGhlYWRlciBvZiBxdWVyeU9wdHMuaGVhZGVyc1wiXHJcbiAgICAgICAgIFtuelNwYW5dPVwiaGVhZGVyLnNwYW5cIj5cclxuICAgICAgPGFwcC10YWJsZS1mb3JtLWl0ZW1cclxuICAgICAgICBbaGVhZGVyXT1cImhlYWRlclwiXHJcbiAgICAgICAgW25nTW9kZWxdPVwiaGVhZGVyLmRlZmF1bHRWYWxcIlxyXG4gICAgICAgIFtkaWN0TGlzdF09XCJkaWN0c1toZWFkZXIuZGljdENvZGVdXCJcclxuICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cImhlYWRlci5rZXlcIlxyXG4gICAgICAgIChoZWFkZXJBY3Rpb24pPVwiaGVhZGVyQWN0aW9uLmVtaXQoJGV2ZW50KVwiPjwvYXBwLXRhYmxlLWZvcm0taXRlbT5cclxuICAgIDwvZGl2PlxyXG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW2hlYWRlci1yaWdodC1zbG90XVwiPjwvbmctY29udGVudD5cclxuICA8L2Rpdj5cclxuICA8ZGl2IG56LXJvdyBuelR5cGU9XCJmbGV4XCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiYWN0aW9uLWFyZWFcIiBuei1jb2wgW256U3Bhbl09XCIxNlwiPlxyXG4gICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbYnV0dG9uLWxlZnQtc2xvdF1cIj48L25nLWNvbnRlbnQ+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGFjdGlvbiBvZiBxdWVyeU9wdHMuYWN0aW9uc1wiPlxyXG4gICAgICAgIDxhdHItbG9jYWwtdXBsb2FkICpuZ0lmPVwiYWN0aW9uLmdUeXBlID09ICd1cGxvYWQnXCIgW2NvZGVdPVwiYWN0aW9uLmNvZGVcIiBbdXJsXT1cImFjdGlvbi51cmxcIiBbbmFtZV09XCJhY3Rpb24ubmFtZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW3dpdGhvdXRSb2xlXT1cImFjdGlvbi53aXRob3V0Um9sZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCIgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1wiPjwvYXRyLWxvY2FsLXVwbG9hZD5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWFjdGlvbi5nVHlwZVwiPlxyXG4gICAgICAgICAgPGJ1dHRvbiBuei1idXR0b24gW256VHlwZV09XCIncHJpbWFyeSdcIiBuelNpemU9XCJzbWFsbFwiIChjbGljayk9XCJkb0FjdGlvbihhY3Rpb24uY29kZSlcIlxyXG4gICAgICAgICAgICAgICAgICAqYXRyUm9sZT1cImFjdGlvbi53aXRob3V0Um9sZSA/IG51bGw6YWN0aW9uLmNvZGVcIlxyXG4gICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiaXNFbmFibGUoYWN0aW9uLm9wZXJhdG9yKVwiPnt7YWN0aW9uLm5hbWV9fTwvYnV0dG9uPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW2J1dHRvbi1yaWdodC1zbG90XVwiPjwvbmctY29udGVudD5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBuei1jb2wgW256U3Bhbl09XCI4XCIgY2xhc3M9XCJzZWFyY2gtYXJlYVwiICpuZ0lmPVwicXVlcnlPcHRzLmhlYWRlcnMubGVuZ3RoID4wICYmICFxdWVyeU9wdHMuaXNIaWRlUXVlcnlcIj5cclxuICAgICAgPHNwYW4gKm5nSWY9XCJzaG93UXVlcnlUaW1lJiZxdWVyeVRpbWVcIj7mlbDmja7mn6Xor6Lml7bpl7TvvJp7e3F1ZXJ5VGltZX19PC9zcGFuPlxyXG4gICAgICA8YnV0dG9uIG56LWJ1dHRvbiBuelNpemU9XCJzbWFsbFwiIFtuelR5cGVdPVwiJ3ByaW1hcnknXCIgKGNsaWNrKT1cInF1ZXJ5KHRydWUpXCI+5p+l6K+iPC9idXR0b24+XHJcbiAgICAgIDxidXR0b24gbnotYnV0dG9uIG56U2l6ZT1cInNtYWxsXCIgKGNsaWNrKT1cInJlc2V0Rm9ybSgpXCI+6YeN572uPC9idXR0b24+XHJcbiAgICAgIDxhIGNsYXNzPVwiY29sbGFwc2VcIiAoY2xpY2spPVwidG9nZ2xlQ29sbGFwc2UoKVwiICpuZ0lmPVwicXVlcnlPcHRzLmhlYWRlcnMubGVuZ3RoID4gMCBcIj5cclxuICAgICAgICB7e2lzQ29sbGFwc2UgPyAn5pS26LW3JyA6ICflsZXlvIAnfX1cclxuICAgICAgICA8aSBuei1pY29uIFtuelR5cGVdPVwiaXNDb2xsYXBzZSA/ICd1cCcgOiAnZG93bidcIj48L2k+XHJcbiAgICAgIDwvYT5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgKm5nSWY9XCJ0aXRsZVwiIGNsYXNzPVwidGl0bGVcIj57e3RpdGxlfX08L2Rpdj5cclxuPC9mb3JtPlxyXG48ZGl2IGNsYXNzPVwic2VhcmNoLXJlc3VsdC1saXN0XCIgI3RhYmxlQ29udGVudCBbc3BpbkxvYWRpbmddPVwibG9hZGluZ1wiIEhxU3Bpbj5cclxuICA8bnotdGFibGUgKm5nSWY9XCJpc0FsbExvYWQgXCIgI2Jhc2ljVGFibGUgY2xhc3M9XCJtYWluLXRhYmxlXCJcclxuICAgICAgICAgICAgW256U2Nyb2xsXT1cInNjcm9sbFNpemVcIlxyXG4gICAgICAgICAgICBuelNpemU9XCJtaWRkbGVcIlxyXG4gICAgICAgICAgICBuekJvcmRlcmVkXHJcbiAgICAgICAgICAgIFtuelNob3dQYWdpbmF0aW9uXT1cInNob3dQYWdpbmF0aW9uXCJcclxuICAgICAgICAgICAgbnpTaG93U2l6ZUNoYW5nZXJcclxuICAgICAgICAgICAgW256RnJvbnRQYWdpbmF0aW9uXT1cImZhbHNlXCJcclxuICAgICAgICAgICAgW256TG9hZGluZ109XCJsb2FkaW5nXCJcclxuICAgICAgICAgICAgW256VG90YWxdPVwidG90YWxcIlxyXG4gICAgICAgICAgICBbKG56UGFnZUluZGV4KV09XCJwYWdlSW5kZXhcIlxyXG4gICAgICAgICAgICBbKG56UGFnZVNpemUpXT1cInBhZ2VTaXplXCJcclxuICAgICAgICAgICAgW256UGFnZVNpemVPcHRpb25zXT1cInBhZ2VTaXplT3B0aW9uc1wiXHJcbiAgICAgICAgICAgIFtuekRhdGFdPVwidGFibGVEYXRhc1wiXHJcbiAgICAgICAgICAgIChuelBhZ2VJbmRleENoYW5nZSk9XCJxdWVyeSgpXCJcclxuICAgICAgICAgICAgKG56UGFnZVNpemVDaGFuZ2UpPVwicXVlcnkodHJ1ZSlcIlxyXG4gICAgICAgICAgICBbbnpTaG93VG90YWxdPVwidG90YWxUZW1wbGF0ZVwiXHJcbiAgPlxyXG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW3Nsb3QxXVwiPjwvbmctY29udGVudD5cclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaXNIaWRlVGFibGVcIj5cclxuICAgICAgPHRoZWFkPlxyXG4gICAgICA8dHIgKGNvbnRleHRtZW51KT1cImNvbnRleHRNZW51KCRldmVudCxtZW51KVwiIGNsYXNzPVwiaGVhZGVyLXRyXCI+XHJcblxyXG4gICAgICAgIDx0aCBbbnpCcmVha1dvcmRdPVwidHJ1ZVwiICpuZ0lmPVwicXVlcnlPcHRzLmNoZWNrQm94Py5pc1Nob3dDaGVja2JveFwiXHJcbiAgICAgICAgICAgIFtuekxlZnRdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgIGNsYXNzPVwibGVmdC16aW5kZXgtaGVhZGVyXCJcclxuICAgICAgICAgICAgbnpTaG93Q2hlY2tib3hcclxuICAgICAgICAgICAgc3R5bGU9XCJ6LWluZGV4OiA5MCFpbXBvcnRhbnQ7XCJcclxuICAgICAgICAgICAgbnpXaWR0aD1cIjMwcHhcIlxyXG4gICAgICAgICAgICBuekFsaWduPVwiY2VudGVyXCJcclxuICAgICAgICAgICAgWyhuekNoZWNrZWQpXT1cImlzQWxsRGlzcGxheURhdGFDaGVja2VkXCJcclxuICAgICAgICAgICAgW256SW5kZXRlcm1pbmF0ZV09XCJpc0luZGV0ZXJtaW5hdGVcIlxyXG4gICAgICAgICAgICAobnpDaGVja2VkQ2hhbmdlKT1cImNoZWNrQWxsKCRldmVudClcIlxyXG4gICAgICAgID48L3RoPlxyXG4gICAgICAgIDx0aCBbbnpCcmVha1dvcmRdPVwidHJ1ZVwiIFtuekxlZnRdPVwidHJ1ZVwiIGNsYXNzPVwibGVmdC16aW5kZXgtaGVhZGVyXCIgKm5nSWY9XCJxdWVyeU9wdHMuaXNJbmRleFwiIG56V2lkdGg9XCIzMHB4XCIgbnpBbGlnbj1cImNlbnRlclwiPiM8L3RoPlxyXG4gICAgICAgIDx0aCBbbnpCcmVha1dvcmRdPVwidHJ1ZVwiIFtuekxlZnRdPVwidHJ1ZVwiIGNsYXNzPVwibGVmdC16aW5kZXgtaGVhZGVyXCIgKm5nSWY9XCJxdWVyeU9wdHMuY2hlY2tCb3g/LmlzUmFkaW9cIiBueldpZHRoPVwiMzBweFwiXHJcbiAgICAgICAgICAgIG56QWxpZ249XCJjZW50ZXJcIj4jXHJcbiAgICAgICAgPC90aD5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpdGVtIG9mIHF1ZXJ5T3B0cy50YWJsZXM7IFwiPlxyXG4gICAgICAgICAgPHRoIFtuekJyZWFrV29yZF09XCJ0cnVlXCIgKm5nSWY9XCJpdGVtLmlzU2hvdyBcIlxyXG4gICAgICAgICAgICAgIFtuelNob3dTb3J0XT1pdGVtLnNvcnRhYmxlXHJcbiAgICAgICAgICAgICAgbnotcmVzaXphYmxlXHJcbiAgICAgICAgICAgICAgbnpQcmV2aWV3XHJcbiAgICAgICAgICAgICAgbnpCb3VuZHM9XCJ3aW5kb3dcIlxyXG4gICAgICAgICAgICAgIFsobnpTb3J0T3JkZXIpXT1cInNvcnRNYXBbaXRlbS5zb3J0S2V5XVwiXHJcbiAgICAgICAgICAgICAgKG56U29ydE9yZGVyQ2hhbmdlKT1cInNvcnQoaXRlbS5zb3J0S2V5LCAkZXZlbnQpXCJcclxuICAgICAgICAgICAgICBbbnpXaWR0aF09XCJpdGVtLndpZHRoXCJcclxuICAgICAgICAgICAgICBbbnpNYXhXaWR0aF09XCIyNTZcIlxyXG4gICAgICAgICAgICAgIFtuek1pbldpZHRoXT1cIjYwXCJcclxuICAgICAgICAgICAgICBbbnpSaWdodF09XCJpdGVtLmlzUmlnaHQgPyB0cnVlIDogZmFsc2VcIlxyXG4gICAgICAgICAgICAgIFtuekxlZnRdPVwiaXRlbS5pc0xlZnQgPyB0cnVlIDogZmFsc2VcIlxyXG4gICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsnbGVmdC16aW5kZXgtaGVhZGVyJzppdGVtLmlzTGVmdCA/IHRydWUgOiBmYWxzZX1cIlxyXG4gICAgICAgICAgICAgIChuelJlc2l6ZUVuZCk9XCJvblJlc2l6ZSgkZXZlbnQsIGl0ZW0ubmFtZSlcIj5cclxuICAgICAgICAgICAge3tpdGVtLm5hbWV9fTwhLS0ge3dpZHRofTogeyB3aWR0aDogbnVtYmVyIH0sIGNvbDogc3RyaW5nLS0+XHJcbiAgICAgICAgICAgIDxuei1yZXNpemUtaGFuZGxlIG56RGlyZWN0aW9uPVwicmlnaHRcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVzaXplLXRyaWdnZXJcIj48L2Rpdj5cclxuICAgICAgICAgICAgPC9uei1yZXNpemUtaGFuZGxlPlxyXG4gICAgICAgICAgPC90aD5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC90cj5cclxuICAgICAgPC90aGVhZD5cclxuXHJcblxyXG4gICAgICA8dGJvZHkgKm5nSWY9XCIhYWxsb3dEcmFnXCI+XHJcblxyXG4gICAgICA8dHIgKm5nRm9yPVwibGV0IGRhdGEgb2YgYmFzaWNUYWJsZS5kYXRhO2luZGV4IGFzIGlcIiBjbGFzcz1cInQtdHJcIiAoY2xpY2spPVwic2VsZWN0Um93KGRhdGEsaSlcIlxyXG4gICAgICAgICAgW25nU3R5bGVdPVwieydjb2xvcic6aXNTaG93Q29sb3IoZGF0YSl9XCJcclxuICAgICAgICAgIFtuZ0NsYXNzXT1cInsnc2VsZWN0ZWQnOiBpID09IGN1ckNoZWNrZWR9XCIgKGRibGNsaWNrKT1cImRiY2xpY2tEYXRhKGRhdGEsaSlcIj5cclxuXHJcbiAgICAgICAgPHRkIFtuekJyZWFrV29yZF09XCJ0cnVlXCIgW256TGVmdF09XCJ0cnVlXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJsZWZ0LXppbmRleFwiXHJcbiAgICAgICAgICAgICpuZ0lmPVwicXVlcnlPcHRzLmNoZWNrQm94Py5pc1Nob3dDaGVja2JveFwiXHJcbiAgICAgICAgICAgIG56U2hvd0NoZWNrYm94XHJcbiAgICAgICAgICAgIFsobnpDaGVja2VkKV09XCJtYXBPZkNoZWNrZWRJZFtkYXRhLmlkXVwiXHJcbiAgICAgICAgICAgIChuekNoZWNrZWRDaGFuZ2UpPVwicmVmcmVzaFN0YXR1cygpXCJcclxuICAgICAgICA+PC90ZD5cclxuICAgICAgICA8dGQgW256QnJlYWtXb3JkXT1cInRydWVcIiBbbnpMZWZ0XT1cInRydWVcIlxyXG4gICAgICAgICAgICBjbGFzcz1cImxlZnQtemluZGV4XCJcclxuICAgICAgICAgICAgKm5nSWY9XCJxdWVyeU9wdHMuY2hlY2tCb3g/LmlzUmFkaW9cIiBuelNob3dDaGVja2JveCAobnpDaGVja2VkQ2hhbmdlKT1cInNlbGVjdFJvdyhkYXRhLGkpXCJcclxuICAgICAgICAgICAgWyhuekNoZWNrZWQpXT1cIm1hcE9mQ2hlY2tlZElkW2RhdGEuaWRdXCI+PC90ZD5cclxuICAgICAgICA8dGQgW256QnJlYWtXb3JkXT1cInRydWVcIiBbbnpMZWZ0XT1cInRydWVcIlxyXG4gICAgICAgICAgICAqbmdJZj1cInF1ZXJ5T3B0cy5pc0luZGV4XCIgbnpBbGlnbj1cImNlbnRlclwiIHN0eWxlPVwicGFkZGluZzoxMnB4IDA7XCIgbnpCcmVha1dvcmQ+e3tpICsgMX19PC90ZD5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpdGVtIG9mIHF1ZXJ5T3B0cy50YWJsZXM7XCI+XHJcblxyXG4gICAgICAgICAgPHRkIFtuekJyZWFrV29yZF09XCJ0cnVlXCIgW256TGVmdF09XCJpdGVtLmlzTGVmdCA/IHRydWUgOiBmYWxzZVwiXHJcbiAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieydsZWZ0LXppbmRleCc6aXRlbS5pc0xlZnQgPyB0cnVlIDogZmFsc2V9XCJcclxuICAgICAgICAgICAgICBbbnpSaWdodF09XCJpdGVtLmlzUmlnaHQgPyB0cnVlIDogZmFsc2VcIlxyXG4gICAgICAgICAgICAgIG56QnJlYWtXb3JkXHJcbiAgICAgICAgICAgICAgW3Jvd1NwYW5dPVwiY2hlY2tSb3dTcGFuKGl0ZW0sZGF0YSlcIlxyXG4gICAgICAgICAgICAgICpuZ0lmPVwiY2hlY2tTaG93VGQoaXRlbSxpKSBcIj5cclxuICAgICAgICAgICAgPGFwcC10YWJsZS10ZCBbZGF0YV09XCJkYXRhXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBbaXRlbV09XCJpdGVtXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBbaV09XCJpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAoZG9BY3Rpb25CeVJvd0FjdGlvbik9XCJkb0FjdGlvbkJ5Um93MigkZXZlbnQpXCJcclxuICAgICAgICAgICAgPjwvYXBwLXRhYmxlLXRkPlxyXG4gICAgICAgICAgPC90ZD5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC90cj5cclxuXHJcbiAgICAgIDwvdGJvZHk+XHJcbiAgICAgIDx0Ym9keSAqbmdJZj1cImFsbG93RHJhZ1wiIGNka0Ryb3BMaXN0IChjZGtEcm9wTGlzdERyb3BwZWQpPVwiZHJvcCgkZXZlbnQpXCI+XHJcbiAgICAgIDx0ciBjZGtEcmFnICpuZ0Zvcj1cImxldCBkYXRhIG9mIGJhc2ljVGFibGUuZGF0YTtpbmRleCBhcyBpXCIgY2xhc3M9XCJ0LXRyXCIgKGNsaWNrKT1cInNlbGVjdFJvdyhkYXRhLGkpXCJcclxuICAgICAgICAgIFtuZ0NsYXNzXT1cInsnc2VsZWN0ZWQnOiBpID09IGN1ckNoZWNrZWR9XCI+XHJcbiAgICAgICAgPHRkIFtuekJyZWFrV29yZF09XCJ0cnVlXCIgW256TGVmdF09XCJ0cnVlXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJsZWZ0LXppbmRleFwiXHJcbiAgICAgICAgICAgICpuZ0lmPVwicXVlcnlPcHRzLmNoZWNrQm94Py5pc1Nob3dDaGVja2JveFwiXHJcbiAgICAgICAgICAgIG56U2hvd0NoZWNrYm94XHJcbiAgICAgICAgICAgIFsobnpDaGVja2VkKV09XCJtYXBPZkNoZWNrZWRJZFtkYXRhLmlkXVwiXHJcbiAgICAgICAgICAgIChuekNoZWNrZWRDaGFuZ2UpPVwicmVmcmVzaFN0YXR1cygpXCJcclxuICAgICAgICA+PC90ZD5cclxuICAgICAgICA8IS0tXHJcbiAgICAgICAgICAgICAgICAgIDx0ZCBbbnpCcmVha1dvcmRdPVwidHJ1ZVwiIFtuekxlZnRdPVwiaXRlbS5pc0xlZnQgPyB0cnVlIDogZmFsc2VcIiBbbmdDbGFzc109XCJ7J2xlZnQtemluZGV4JzppdGVtLmlzTGVmdCA/IHRydWUgOiBmYWxzZX1cIiAgIFtuelJpZ2h0XT1cIml0ZW0uaXNSaWdodCA/IHRydWUgOiBmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInF1ZXJ5T3B0cy5pc1Nob3dDaGVja2JveFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBuelNob3dDaGVja2JveFxyXG4gICAgICAgICAgICAgICAgICAgICAgWyhuekNoZWNrZWQpXT1cIm1hcE9mQ2hlY2tlZElkW2RhdGEuaWRdXCJcclxuICAgICAgICAgICAgICAgICAgICAgIChuekNoZWNrZWRDaGFuZ2UpPVwicmVmcmVzaFN0YXR1cygpXCJcclxuICAgICAgICAgICAgICAgICAgPjwvdGQ+XHJcbiAgICAgICAgLS0+XHJcbiAgICAgICAgPHRkIFtuekJyZWFrV29yZF09XCJ0cnVlXCIgW256TGVmdF09XCJ0cnVlXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJsZWZ0LXppbmRleFwiXHJcbiAgICAgICAgICAgICpuZ0lmPVwicXVlcnlPcHRzLmNoZWNrQm94Py5pc1JhZGlvXCIgbnpTaG93Q2hlY2tib3ggKG56Q2hlY2tlZENoYW5nZSk9XCJzZWxlY3RSb3coZGF0YSxpKVwiXHJcbiAgICAgICAgICAgIFsobnpDaGVja2VkKV09XCJtYXBPZkNoZWNrZWRJZFtkYXRhLmlkXVwiPjwvdGQ+XHJcbiAgICAgICAgPHRkIFtuekJyZWFrV29yZF09XCJ0cnVlXCIgW256TGVmdF09XCJ0cnVlXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJsZWZ0LXppbmRleFwiXHJcbiAgICAgICAgICAgICpuZ0lmPVwicXVlcnlPcHRzLmlzSW5kZXhcIiBuekFsaWduPVwiY2VudGVyXCIgc3R5bGU9XCJwYWRkaW5nOjEycHggMDtcIiBuekJyZWFrV29yZD57e2kgKyAxfX08L3RkPlxyXG5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpdGVtIG9mIHF1ZXJ5T3B0cy50YWJsZXM7XCI+XHJcblxyXG4gICAgICAgICAgPHRkIFtuekJyZWFrV29yZF09XCJ0cnVlXCIgW256TGVmdF09XCJpdGVtLmlzTGVmdCA/IHRydWUgOiBmYWxzZVwiXHJcbiAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieydsZWZ0LXppbmRleCc6aXRlbS5pc0xlZnQgPyB0cnVlIDogZmFsc2V9XCJcclxuICAgICAgICAgICAgICBbbnpSaWdodF09XCJpdGVtLmlzUmlnaHQgPyB0cnVlIDogZmFsc2VcIlxyXG4gICAgICAgICAgICAgIG56QnJlYWtXb3JkXHJcbiAgICAgICAgICAgICAgW3Jvd1NwYW5dPVwiY2hlY2tSb3dTcGFuKGl0ZW0sZGF0YSlcIlxyXG4gICAgICAgICAgICAgICpuZ0lmPVwiY2hlY2tTaG93VGQoaXRlbSxpKSBcIj5cclxuICAgICAgICAgICAgPGFwcC10YWJsZS10ZCBbZGF0YV09XCJkYXRhXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBbaXRlbV09XCJpdGVtXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBbaV09XCJpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAoZG9BY3Rpb25CeVJvd0FjdGlvbik9XCJkb0FjdGlvbkJ5Um93MigkZXZlbnQpXCJcclxuICAgICAgICAgICAgPjwvYXBwLXRhYmxlLXRkPlxyXG4gICAgICAgICAgPC90ZD5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC90cj5cclxuICAgICAgPC90Ym9keT5cclxuXHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcblxyXG4gICAgPG5nLXRlbXBsYXRlICN0b3RhbFRlbXBsYXRlIGxldC10b3RhbD7lhbEge3sgdG90YWwgfX0g5p2h6K6w5b2VPC9uZy10ZW1wbGF0ZT5cclxuICA8L256LXRhYmxlPlxyXG4gIDxuei1kcm9wZG93bi1tZW51ICNtZW51PVwibnpEcm9wZG93bk1lbnVcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJ0YWJlbC1jb2x1bm1uXCI+XHJcbiAgICAgIDxuei1jaGVja2JveC13cmFwcGVyIHN0eWxlPVwid2lkdGg6IDEwMCU7bWFyZ2luLXRvcDogMzBweDtcIiAobnpPbkNoYW5nZSk9XCJsb2coJGV2ZW50KVwiPlxyXG4gICAgICAgIDxkaXYgbnotcm93PlxyXG4gICAgICAgICAgPGRpdiBuei1jb2wgbnpTcGFuPVwiMjRcIiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBxdWVyeU9wdHMudGFibGVzXCI+XHJcbiAgICAgICAgICAgIDxsYWJlbCBuei1jaGVja2JveCBuelZhbHVlPVwie3tpdGVtLmtleX19XCIgW25nTW9kZWxdPVwiaXRlbS5pc1Nob3dcIj57e2l0ZW0ubmFtZX19PC9sYWJlbD5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L256LWNoZWNrYm94LXdyYXBwZXI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ0YWJlbC1jb2x1bm1uLWhlYWRlclwiPuivt+mAieaLqeWIl+ihqOaYvuekuuWGheWuuTwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9uei1kcm9wZG93bi1tZW51PlxyXG48L2Rpdj5cclxuXHJcbiJdfQ==
749
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy9zcmMvbGliL3NoYXJlZC90YWJsZS90YWJsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3NyYy9saWIvc2hhcmVkL3RhYmxlL3RhYmxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBR1QsS0FBSyxFQUVMLFNBQVMsRUFFVCxNQUFNLEVBQ04sWUFBWSxFQUNaLFNBQVMsRUFDVCxNQUFNLEVBRVAsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUF1QyxrQkFBa0IsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ3hGLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQWMsZUFBZSxFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFDcEUsT0FBTyxFQUFDLG9CQUFvQixFQUEwQixNQUFNLHdCQUF3QixDQUFDO0FBQ3JGLE9BQU8sRUFBQyxnQkFBZ0IsRUFBd0QsTUFBTSwrQkFBK0IsQ0FBQztBQUN0SCxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sMENBQTBDLENBQUM7QUFDckUsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLHFDQUFxQyxDQUFDO0FBQ2hFLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSwrQkFBK0IsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFPeEQsTUFBTSxPQUFPLGlCQUFpQjtJQXdDNUIsWUFBb0IsRUFBc0IsRUFBVSxRQUFrQixFQUE2QixNQUFjLEVBQVUsRUFBcUI7UUFBNUgsT0FBRSxHQUFGLEVBQUUsQ0FBb0I7UUFBVSxhQUFRLEdBQVIsUUFBUSxDQUFVO1FBQTZCLFdBQU0sR0FBTixNQUFNLENBQVE7UUFBVSxPQUFFLEdBQUYsRUFBRSxD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XHJcbiAgQ29tcG9uZW50LFxyXG4gIE9uSW5pdCxcclxuICBJbmplY3RvcixcclxuICBJbnB1dCxcclxuICBWaWV3Q2hpbGRyZW4sXHJcbiAgVmlld0NoaWxkLFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgT3V0cHV0LFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBMT0NBTEVfSUQsXHJcbiAgSW5qZWN0LFxyXG4gIENoYW5nZURldGVjdG9yUmVmXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7VW50eXBlZEZvcm1Hcm91cCwgVW50eXBlZEZvcm1CdWlsZGVyLCBVbnR5cGVkRm9ybUNvbnRyb2x9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHtmb3JtYXREYXRlfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQge0Nka0RyYWdEcm9wLCBtb3ZlSXRlbUluQXJyYXl9IGZyb20gXCJAYW5ndWxhci9jZGsvZHJhZy1kcm9wXCI7XHJcbmltcG9ydCB7TnpDb250ZXh0TWVudVNlcnZpY2UsIE56RHJvcGRvd25NZW51Q29tcG9uZW50fSBmcm9tICduZy16b3Jyby1hbnRkL2Ryb3Bkb3duJztcclxuaW1wb3J0IHthdHJfc3RhdGljX2RhdGFzLCBBdHJRdWVyeUhlYWRlciwgQXRyUXVleXJPcHQsIGpzb24sIFRhYmxlLCBUYWJsZUFjdGlvbn0gZnJvbSBcIi4uLy4uLy4uL2NvcmUvYmFzZS9hdHItY29tbW9uXCI7XHJcbmltcG9ydCB7RGljdFNlcnZpY2V9IGZyb20gXCIuLi8uLi8uLi9jb3JlL3NlcnZpY2VzL2RpY3QvZGljdC5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7SHR0cFNlcnZpY2V9IGZyb20gXCIuLi8uLi8uLi9jb3JlL3NlcnZpY2VzL2h0dHAuc2VydmljZVwiO1xyXG5pbXBvcnQge1Rvb2xzVXRpbH0gZnJvbSBcIi4uLy4uLy4uL2NvcmUvdXRpbHMvVG9vbHNVdGlsXCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2F0ci10YWJsZScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3RhYmxlLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi90YWJsZS5jb21wb25lbnQubGVzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBdHJUYWJsZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgYXRyRm9ybTogVW50eXBlZEZvcm1Hcm91cCB8IGFueTtcclxuICBpc0NvbGxhcHNlID0gdHJ1ZTtcclxuICBkaWN0czogYW55ID0ge307XHJcbiAgcGFnZUluZGV4ID0gMTtcclxuICB0b3RhbCA9IDE7XHJcblxyXG4gIEBJbnB1dCgpIHBhZ2VTaXplID0gMTA7XHJcbiAgQElucHV0KCkgcGFnZVNpemVPcHRpb25zOiBudW1iZXJbXSA9IFsxMCwgMjAsIDMwLCA0MCwgNTBdO1xyXG5cclxuICBASW5wdXQoKSBsb2FkaW5nID0gdHJ1ZTtcclxuICBASW5wdXQoKSBhbGxvd0RyYWcgPSBmYWxzZTsvL+WFgeiuuOaLluaLveaNouS9jVxyXG4gIEBJbnB1dCgpIHNob3dRdWVyeVRpbWUgPSBmYWxzZTtcclxuICB0YWJsZURhdGFzOiBhbnkgPSBbXTtcclxuICBzY3JvbGxTaXplOiBhbnkgPSB7eDogXCJcIiwgeTogXCJcIn1cclxuICAvL+ihqOagvGNoZWNrYm94IOmFjee9rlxyXG4gIGlzQWxsRGlzcGxheURhdGFDaGVja2VkOiBib29sZWFuID0gZmFsc2VcclxuICBpc0luZGV0ZXJtaW5hdGUgPSBmYWxzZTtcclxuICBudW1iZXJPZkNoZWNrZWQgPSAwO1xyXG4gIG1hcE9mQ2hlY2tlZElkOiB7IFtrZXk6IHN0cmluZ106IGJvb2xlYW4gfSA9IHt9O1xyXG4gIGN1ckNoZWNrZWQ6IG51bWJlciA9IC0xO1xyXG4gIGltYWdlUHJlZml4ID0gYXRyX3N0YXRpY19kYXRhcy5PU1NfVVJMO1xyXG4gIGRlZmF1bHRQYXJhbXMgPSB7fTtcclxuICBASW5wdXQoKSBpc0hpZGVUYWJsZSA9IGZhbHNlXHJcbiAgaXNBbGxMb2FkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgc29ydE1hcDogeyBba2V5OiBzdHJpbmddOiBhbnkgfSA9IHt9O1xyXG4gIHJvd1NwYW5NYXA6IGFueSA9IHt9Oy8va2V5Onvlvrfnp5HniaflnLo6e251bToxfX1cclxuICBoZWFkZXJEZWZhdWx0VmFsOiBhbnkgPSB7fVxyXG5cclxuICBASW5wdXQoKSBxdWVyeU9wdHM6IEF0clF1ZXlyT3B0IHwgYW55O1xyXG4gIEBJbnB1dCgpIHNob3dQYWdpbmF0aW9uID0gdHJ1ZTtcclxuICBASW5wdXQoKSB0aXRsZTogc3RyaW5nID0gXCJcIjtcclxuICBASW5wdXQoKSBxdWVyeUhlYWRlcnMgPSBudWxsO1xyXG5cclxuICBAT3V0cHV0KCkgdGFibGVBY3Rpb24gPSBuZXcgRXZlbnRFbWl0dGVyPFRhYmxlQWN0aW9uPigpO1xyXG4gIEBPdXRwdXQoKSBxdWVyeUJhY2sgPSBuZXcgRXZlbnRFbWl0dGVyPFRhYmxlQWN0aW9uPigpO1xyXG4gIEBPdXRwdXQoKSBoZWFkZXJBY3Rpb24gPSBuZXcgRXZlbnRFbWl0dGVyPFRhYmxlQWN0aW9uPigpO1xyXG5cclxuICBAVmlld0NoaWxkKCd0YWJsZUNvbnRlbnQnLCB7c3RhdGljOiB0cnVlfSkgdGFibGVDb250ZW50OiBFbGVtZW50UmVmIHwgYW55O1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGZiOiBVbnR5cGVkRm9ybUJ1aWxkZXIsIHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yLCBASW5qZWN0KExPQ0FMRV9JRCkgcHJpdmF0ZSBsb2NhbGU6IHN0cmluZywgcHJpdmF0ZSBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcclxuICB9XHJcblxyXG4gIGlzU2hvd0NvbG9yKGRhdGE6IGFueSkge1xyXG4gICAgaWYgKHRoaXMucXVlcnlPcHRzLmNvbG9yICYmIHRoaXMucXVlcnlPcHRzLmNvbG9yLm9wZXJhdG9yICYmIHRoaXMuaXNTaG93QnRuKGRhdGEsIHRoaXMucXVlcnlPcHRzLmNvbG9yLm9wZXJhdG9yKSkge1xyXG4gICAgICByZXR1cm4gdGhpcy5xdWVyeU9wdHMuY29sb3IuY29sb3I7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gJydcclxuICB9XHJcblxyXG4gIGRiY2xpY2tEYXRhKGRhdGE6IGFueSwgcm93Tm86IG51bWJlcikge1xyXG4gICAgbGV0IGFjdGlvbjogVGFibGVBY3Rpb24gPSB7XHJcbiAgICAgIG5hbWU6ICdkYmNsaWNrRGF0YScsXHJcbiAgICAgIGNvZGU6ICdkYmNsaWNrRGF0YScsXHJcbiAgICAgIHR5cGU6IFwicm93XCJcclxuICAgIH07XHJcbiAgICBhY3Rpb24uZGF0YSA9IGRhdGE7XHJcbiAgICBhY3Rpb24uZmlyc3REYXRhID0gZGF0YTtcclxuICAgIHRoaXMudGFibGVBY3Rpb24uZW1pdChhY3Rpb24pO1xyXG4gIH1cclxuXHJcbiAgZG9BY3Rpb25CeVJvdzIoZTogYW55KSB7XHJcbiAgICBsZXQge2RhdGEsIGNvZGUsIGV2ZW50OiBNb3VzZUV2ZW50LCBpbmRleH0gPSBlXHJcbiAgICBpZiAoZXZlbnQpIHtcclxuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgaWYgKGV2ZW50LnN0b3BQcm9wYWdhdGlvbikge1xyXG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGxldCBhY3Rpb246IFRhYmxlQWN0aW9uID0ge1xyXG4gICAgICBuYW1lOiBjb2RlLFxyXG4gICAgICBjb2RlOiBjb2RlLFxyXG4gICAgICB0eXBlOiBcInJvd1wiXHJcbiAgICB9O1xyXG4gICAgYWN0aW9uLmRhdGEgPSBkYXRhO1xyXG4gICAgYWN0aW9uLmZpcnN0RGF0YSA9IGRhdGE7XHJcbiAgICBhY3Rpb24ubnVtYmVyT2ZDaGVja2VkID0gaW5kZXg7XHJcbiAgICB0aGlzLnRhYmxlQWN0aW9uLmVtaXQoYWN0aW9uKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0IGh0dHBTZXJ2aWNlKCk6IEh0dHBTZXJ2aWNlIHtcclxuICAgIHJldHVybiB0aGlzLmluamVjdG9yLmdldChIdHRwU2VydmljZSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldCBuekNvbnRleHRNZW51U2VydmljZSgpOiBOekNvbnRleHRNZW51U2VydmljZSB7XHJcbiAgICByZXR1cm4gdGhpcy5pbmplY3Rvci5nZXQoTnpDb250ZXh0TWVudVNlcnZpY2UpO1xyXG4gIH1cclxuXHJcbiAgc2V0VGFibGVMb2FkZGluZyhsb2FkZGluZzogYm9vbGVhbikge1xyXG4gICAgdGhpcy5sb2FkaW5nID0gbG9hZGRpbmc7XHJcbiAgfVxyXG5cclxuICBvblJlc2l6ZSh3aWR0aDogYW55LCBjb2w6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdGhpcy5xdWVyeU9wdHMudGFibGVzID0gdGhpcy5xdWVyeU9wdHMudGFibGVzLm1hcCgoZTogYW55KSA9PiAoZS5uYW1lID09PSBjb2wgPyB7Li4uZSwgd2lkdGg6IGAke3dpZHRofXB4YH0gOiBlKSk7XHJcbiAgICBsZXQgeCA9IDA7XHJcbiAgICBmb3IgKGxldCBpdGVtIG9mIHRoaXMucXVlcnlPcHRzLnRhYmxlcykge1xyXG5cclxuICAgICAgaWYgKGl0ZW0uaXNTaG93ICYmIGl0ZW0ud2lkdGgpIHtcclxuICAgICAgICB4ICs9IFRvb2xzVXRpbC5waXhlbFRvTnVtKGl0ZW0ud2lkdGgpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAoeCA+IDIyKSB7XHJcbiAgICAgIHggPSB4IC0gMjI7XHJcbiAgICAgIHRoaXMuc2Nyb2xsU2l6ZS54ID0geCArIFwicHhcIjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGlzRW5hYmxlKG9wZXJhdG9yOiBzdHJpbmcpIHtcclxuICAgIGxldCBpc0VuYWJsZSA9IHRydWU7XHJcbiAgICBpZiAoIW9wZXJhdG9yIHx8IG9wZXJhdG9yID09IHVuZGVmaW5lZCB8fCBvcGVyYXRvciA9PSBcIlwiKVxyXG4gICAgICBpc0VuYWJsZSA9IGZhbHNlO1xyXG4gICAgZWxzZSB7XHJcbiAgICAgIGxldCBvcCA9IG9wZXJhdG9yLnNwbGl0KFwifFwiKTtcclxuICAgICAgaWYgKG9wLmxlbmd0aCA+IDIpIHtcclxuICAgICAgICBsZXQga2V5ID0gb3BbMF07XHJcbiAgICAgICAgaWYgKCFrZXkpIHtcclxuICAgICAgICAgIGlzRW5hYmxlID0gZmFsc2U7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGlzRW5hYmxlID0gIXRoaXMuY29tcGFyZSh0aGlzLm51bWJlck9mQ2hlY2tlZCwgb3BbMV0sIG9wWzJdKVxyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlXHJcbiAgICAgICAgaXNFbmFibGUgPSBmYWxzZVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBpc0VuYWJsZVxyXG4gIH1cclxuXHJcbiAgaXNTaG93QnRuKGRhdGE6IGFueSwgb3BlcmF0b3I6IHN0cmluZywgYWN0aW9uPzogVGFibGVBY3Rpb24pOiBib29sZWFuIHtcclxuICAgIGxldCBpc1Nob3cgPSBmYWxzZTtcclxuICAgIGlmICghb3BlcmF0b3IgfHwgb3BlcmF0b3IgPT0gbnVsbCB8fCBvcGVyYXRvciA9PSBcIlwiKSB7XHJcbiAgICAgIGlzU2hvdyA9IHRydWU7XHJcbiAgICB9IGVsc2UgaWYgKG9wZXJhdG9yLmluZGV4T2YoJyYmJykgPiAwKSB7XHJcbiAgICAgIC8vIGF8ZXF8YiAmJmN8ZXF8ZFxyXG4gICAgICBjb25zdCBvcHMgPSBvcGVyYXRvci5zcGxpdCgnJiYnKTtcclxuICAgICAgaWYgKG9wcy5sZW5ndGggPiAxKSB7XHJcbiAgICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOnByZWZlci1mb3Itb2ZcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG9wcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgaXNTaG93ID0gdHJ1ZVxyXG4gICAgICAgICAgaWYgKCF0aGlzLmNoZWNrSXNTaG93QmFzZShvcHNbaV0uc3BsaXQoJ3wnKSwgZGF0YSkpIHtcclxuICAgICAgICAgICAgaXNTaG93ID0gZmFsc2U7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSBlbHNlIGlmIChvcGVyYXRvci5pbmRleE9mKCd8fCcpID4gMCkge1xyXG4gICAgICAvLyBhfGVxfGJ8fGN8ZXF8ZFxyXG4gICAgICBjb25zdCBvcHMgPSBvcGVyYXRvci5zcGxpdCgnJiYnKTtcclxuICAgICAgaWYgKG9wcy5sZW5ndGggPiAxKSB7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBvcHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgIGlzU2hvdyA9IGZhbHNlO1xyXG4gICAgICAgICAgaWYgKHRoaXMuY2hlY2tJc1Nob3dCYXNlKG9wc1tpXS5zcGxpdCgnfCcpLCBkYXRhKSkge1xyXG4gICAgICAgICAgICBpc1Nob3cgPSB0cnVlO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGxldCBvcCA9IG9wZXJhdG9yLnNwbGl0KFwifFwiKTtcclxuICAgICAgaXNTaG93ID0gdGhpcy5jaGVja0lzU2hvd0Jhc2Uob3AsIGRhdGEpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGlzU2hvdztcclxuICB9XHJcblxyXG4gIGNoZWNrSXNTaG93QmFzZShvcDogYW55LCBkYXRhOiBhbnkpOiBib29sZWFuIHtcclxuICAgIGxldCBpc1Nob3cgPSBmYWxzZTtcclxuICAgIGlmIChvcC5sZW5ndGggPiAxKSB7XHJcbiAgICAgIGxldCB2YWx1ZSA9IGRhdGFbb3BbMF1dO1xyXG4gICAgICBpZiAoIXZhbHVlKSB7XHJcbiAgICAgICAgaXNTaG93ID0gZmFsc2U7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgaXNTaG93ID0gdGhpcy5jb21wYXJlKHZhbHVlLCBvcFsxXSwgb3BbMl0pXHJcbiAgICAgIH1cclxuICAgIH0gZWxzZVxyXG4gICAgICBpc1Nob3cgPSBmYWxzZVxyXG5cclxuICAgIHJldHVybiBpc1Nob3c7XHJcbiAgfVxyXG5cclxuICBjb21wYXJlKHZhbHVlOiBhbnksIG9wZXJhdG9yOiBhbnksIHRhcmdldDogYW55KTogYm9vbGVhbiB7XHJcbiAgICBsZXQgaXNSaWdodCA9IGZhbHNlO1xyXG4gICAgc3dpdGNoIChvcGVyYXRvcikge1xyXG4gICAgICBjYXNlICdlcScgOlxyXG4gICAgICAgIGlmICh2YWx1ZSA9PSB0YXJnZXQpIHtcclxuICAgICAgICAgIGlzUmlnaHQgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnZ2gnIDpcclxuICAgICAgICBpZiAodmFsdWUgPj0gdGFyZ2V0KSB7XHJcbiAgICAgICAgICBpc1JpZ2h0ID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ25vdEVtcHR5JzpcclxuICAgICAgICBpc1JpZ2h0ID0gZmFsc2U7XHJcbiAgICAgICAgaWYgKHZhbHVlKSB7XHJcbiAgICAgICAgICBpc1JpZ2h0ID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ2VtcHR5JzpcclxuICAgICAgICBpc1JpZ2h0ID0gZmFsc2U7XHJcbiAgICAgICAgaWYgKCF2YWx1ZSkge1xyXG4gICAgICAgICAgaXNSaWdodCA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBkZWZhdWx0IDpcclxuICAgICAgICBpc1JpZ2h0ID0gZmFsc2U7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gaXNSaWdodDtcclxuICB9XHJcblxyXG4gIHB1c2hUYWJsZURhdGFzKHRhYmxlRGF0YXM6IGFueSkge1xyXG4gICAgdGhpcy50YWJsZURhdGFzID0gdGhpcy50YWJsZURhdGFzLmNvbmNhdCh0YWJsZURhdGFzKTtcclxuICB9XHJcblxyXG4gIHJlbW92ZURhdGFzKGtleTogYW55LCB2YWx1ZTogYW55KSB7XHJcbiAgICB0aGlzLnRhYmxlRGF0YXMuZm9yRWFjaCgoaXRlbTogYW55LCBpbmRleDogYW55KSA9PiB7XHJcbiAgICAgIGlmIChpdGVtW2tleV0gPT09IHZhbHVlKSB7XHJcbiAgICAgICAgdGhpcy50YWJsZURhdGFzLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBkb0FjdGlvbihjb2RlOiBhbnkpIHtcclxuICAgIGxldCBhY3Rpb246IFRhYmxlQWN0aW9uID0ge1xyXG4gICAgICBuYW1lOiBjb2RlLFxyXG4gICAgICBjb2RlOiBjb2RlLFxyXG4gICAgICB0eXBlOiBcInJvd3NcIlxyXG4gICAgfTtcclxuICAgIGxldCBzZWxlY3REYXRhczogYW55ID0gW107XHJcbiAgICBpZiAodGhpcy50YWJsZURhdGFzICYmIHRoaXMudGFibGVEYXRhcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMudGFibGVEYXRhcy5mb3JFYWNoKChpdGVtOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAodGhpcy5tYXBPZkNoZWNrZWRJZFtpdGVtLmlkXSlcclxuICAgICAgICAgIHNlbGVjdERhdGFzLnB1c2goaXRlbSk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgYWN0aW9uLmRhdGFzID0gc2VsZWN0RGF0YXM7XHJcbiAgICBpZiAoc2VsZWN0RGF0YXMgJiYgc2VsZWN0RGF0YXMubGVuZ3RoID4gMCkge1xyXG4gICAgICBhY3Rpb24uZmlyc3REYXRhID0gc2VsZWN0RGF0YXNbMF07XHJcbiAgICB9XHJcbiAgICBhY3Rpb24ubnVtYmVyT2ZDaGVja2VkID0gc2VsZWN0RGF0YXMubGVuZ3RoO1xyXG4gICAgdGhpcy50YWJsZUFjdGlvbi5lbWl0KGFjdGlvbik7XHJcbiAgfVxyXG5cclxuICBkb0FjdGlvbkJ5Um93KGRhdGE6IGFueSwgY29kZTogYW55LCBldmVudDogTW91c2VFdmVudCkge1xyXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgIGlmIChldmVudC5zdG9wUHJvcGFnYXRpb24pIHtcclxuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcclxuICAgIH1cclxuICAgIGxldCBhY3Rpb246IFRhYmxlQWN0aW9uID0ge1xyXG4gICAgICBuYW1lOiBjb2RlLFxyXG4gICAgICBjb2RlOiBjb2RlLFxyXG4gICAgICB0eXBlOiBcInJvd1wiXHJcbiAgICB9O1xyXG4gICAgYWN0aW9uLmRhdGEgPSBkYXRhO1xyXG4gICAgYWN0aW9uLmZpcnN0RGF0YSA9IGRhdGE7XHJcbiAgICBhY3Rpb24ubnVtYmVyT2ZDaGVja2VkID0gMTtcclxuICAgIHRoaXMudGFibGVBY3Rpb24uZW1pdChhY3Rpb24pO1xyXG4gIH1cclxuXHJcbiAgZ2V0QWxsQ2hlY2tJbmZvKCk6IGFueVtdIHtcclxuICAgIGxldCBpZHM6IGFueSA9IFtdO1xyXG4gICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXModGhpcy5tYXBPZkNoZWNrZWRJZCkpIHtcclxuICAgICAgaWYgKHRoaXMubWFwT2ZDaGVja2VkSWQuaGFzT3duUHJvcGVydHkoa2V5KSAmJiB0aGlzLm1hcE9mQ2hlY2tlZElkW2tleV0pIHtcclxuICAgICAgICBpZHMucHVzaChrZXkpXHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBpZHM7XHJcbiAgfVxyXG5cclxuICBnZXRBbGxDaGVja0RhdGFzKCk6IGFueVtdIHtcclxuICAgIGxldCBzZWxlY3REYXRhczogYW55ID0gW11cclxuICAgIHRoaXMudGFibGVEYXRhcy5mb3JFYWNoKChpdGVtOiBhbnkpID0+IHtcclxuICAgICAgaWYgKHRoaXMubWFwT2ZDaGVja2VkSWRbaXRlbS5pZF0pXHJcbiAgICAgICAgc2VsZWN0RGF0YXMucHVzaChpdGVtKTtcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIHNlbGVjdERhdGFzO1xyXG4gIH1cclxuXHJcbiAgY2hlY2tBbGwodmFsdWU6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIHRoaXMudGFibGVEYXRhcy5mb3JFYWNoKChpdGVtOiBhbnkpID0+ICh0aGlzLm1hcE9mQ2hlY2tlZElkW2l0ZW0uaWRdID0gdmFsdWUpKTtcclxuICAgIHRoaXMucmVmcmVzaFN0YXR1cygpO1xyXG4gIH1cclxuXHJcbiAgcmVmcmVzaFN0YXR1cygpOiB2b2lkIHtcclxuICAgIHRoaXMuaXNBbGxEaXNwbGF5RGF0YUNoZWNrZWQgPSB0aGlzLnRhYmxlRGF0YXNcclxuICAgICAgLmV2ZXJ5KChpdGVtOiBhbnkpID0+IHRoaXMubWFwT2ZDaGVja2VkSWRbaXRlbS5pZF0pO1xyXG4gICAgdGhpcy5pc0luZGV0ZXJtaW5hdGUgPVxyXG4gICAgICB0aGlzLnRhYmxlRGF0YXMuc29tZSgoaXRlbTogYW55KSA9PiB0aGlzLm1hcE9mQ2hlY2tlZElkW2l0ZW0uaWRdKSAmJlxyXG4gICAgICAhdGhpcy5pc0FsbERpc3BsYXlEYXRhQ2hlY2tlZDtcclxuICAgIHRoaXMubnVtYmVyT2ZDaGVja2VkID0gdGhpcy50YWJsZURhdGFzLmZpbHRlcigoaXRlbTogYW55KSA9PiB0aGlzLm1hcE9mQ2hlY2tlZElkW2l0ZW0uaWRdKS5sZW5ndGg7XHJcbiAgICB0aGlzLnRhYmxlQWN0aW9uLmVtaXQoe1xyXG4gICAgICBjb2RlOiAncmVmcmVzaFN0YXR1cycsIG5hbWU6ICdzZWxlY3QnLFxyXG4gICAgICB0eXBlOiBcInJvd1wiLCBkYXRhOiB0aGlzLmdldEFsbENoZWNrRGF0YXMoKVxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIHNlbGVjdFJvdyhkYXRhOiBhbnksIHJvd05vOiBudW1iZXIpIHtcclxuICAgIC8vIHRoaXMudGFibGVEYXRhcy5mb3JFYWNoKGl0ZW0gPT4gKHRoaXMubWFwT2ZDaGVja2VkSWRbZGF0YS5pZF0gPSB2YWx1ZSkpO1xyXG4gICAgdGhpcy5jdXJDaGVja2VkID0gcm93Tm87XHJcbiAgICBpZiAoIXRoaXMucXVlcnlPcHRzLmNoZWNrQm94Py5pc0ZvcmJpZCkge1xyXG4gICAgICBpZiAodGhpcy5xdWVyeU9wdHMuY2hlY2tCb3g/LmlzU2hvd0NoZWNrYm94KSB7XHJcbiAgICAgICAgdGhpcy5tYXBPZkNoZWNrZWRJZFtkYXRhLmlkXSA9ICF0aGlzLm1hcE9mQ2hlY2tlZElkW2RhdGEuaWRdO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMubWFwT2ZDaGVja2VkSWQgPSB7fTtcclxuICAgICAgICB0aGlzLm1hcE9mQ2hlY2tlZElkW2RhdGEuaWRdID0gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgbGV0IGFjdGlvbjogVGFibGVBY3Rpb24gPSB7XHJcbiAgICAgIG5hbWU6ICdzZWxlY3QnLFxyXG4gICAgICBjb2RlOiAnc2VsZWN0JyxcclxuICAgICAgdHlwZTogXCJyb3dcIlxyXG4gICAgfTtcclxuICAgIGFjdGlvbi5kYXRhID0gZGF0YTtcclxuICAgIGFjdGlvbi5maXJzdERhdGEgPSBkYXRhO1xyXG4gICAgYWN0aW9uLm51bWJlck9mQ2hlY2tlZCA9IDE7XHJcbiAgICB0aGlzLnRhYmxlQWN0aW9uLmVtaXQoYWN0aW9uKTtcclxuICAgIHRoaXMucmVmcmVzaFN0YXR1cygpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLmF0ckZvcm0gPSB0aGlzLmZiLmdyb3VwKHt9KTtcclxuICAgIGxldCB4ID0gdGhpcy50YWJsZUNvbnRlbnQubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aCAtIDIyXHJcbiAgICBsZXQgeSA9IHRoaXMudGFibGVDb250ZW50Lm5hdGl2ZUVsZW1lbnQub2Zmc2V0SGVpZ2h0IC0gMjAwXHJcbiAgICB0aGlzLnNjcm9sbFNpemUueCA9ICh4ID4gMCA/IHggOiAxMDApICsgXCJweFwiO1xyXG4gICAgdGhpcy5zY3JvbGxTaXplLnkgPSAoeSA+IDAgPyB5IDogMTAwKSArIFwicHhcIjtcclxuICAgIC8vIGNvbnNvbGUubG9nKHRoaXMuc2Nyb2xsU2l6ZSlcclxuICAgIHRoaXMuaW5pdEhlYWRlcigpO1xyXG4gICAgaWYgKHRoaXMucXVlcnlPcHRzICYmIHRoaXMucXVlcnlPcHRzLnRhYmxlcykge1xyXG4gICAgICBmb3IgKGxldCB0YWJsZSBvZiB0aGlzLnF1ZXJ5T3B0cy50YWJsZXMpIHtcclxuICAgICAgICBpZiAodGFibGUudHlwZSA9PSAnZGljdCcpIHtcclxuICAgICAgICAgIHRoaXMuZ2V0RGljdFZhbHVlKHRhYmxlLmRpY3RDb2RlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRhYmxlLnNvcnRLZXkpIHtcclxuICAgICAgICAgIHRhYmxlLnNvcnRhYmxlID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuc29ydE1hcFt0YWJsZS5zb3J0S2V5XSA9IG51bGw7XHJcbiAgICAgICAgfSBlbHNlXHJcbiAgICAgICAgICB0YWJsZS5zb3J0YWJsZSA9IGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5xdWVyeU9wdHMgJiYgdGhpcy5xdWVyeU9wdHMuZGVmYXVsdFBhcmFtcykge1xyXG4gICAgICB0aGlzLmRlZmF1bHRQYXJhbXMgPSB0aGlzLnF1ZXJ5T3B0cy5kZWZhdWx0UGFyYW1zXHJcbiAgICB9XHJcbiAgICBpZiAoIXRoaXMucXVlcnlPcHRzLmlzQXV0b1F1ZXJ5KSB7XHJcbiAgICAgIHRoaXMucXVlcnkoKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAvLyB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGluaXRIZWFkZXIoKSB7XHJcbiAgICB0aGlzLmhlYWRlckRlZmF1bHRWYWwgPSB7fTtcclxuICAgIGlmICh0aGlzLnF1ZXJ5T3B0cyAmJiB0aGlzLnF1ZXJ5T3B0cy5oZWFkZXJzICYmIHRoaXMucXVlcnlPcHRzLmhlYWRlcnMubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLnF1ZXJ5T3B0cy5oZWFkZXJzLmZvckVhY2goKGl0ZW06IGFueSwgaTogYW55KSA9PiB7XHJcbiAgICAgICAgaXRlbS5zcGFuID0gaXRlbS5zcGFuIHx8IDg7XHJcbiAgICAgICAgaWYgKCFUb29sc1V0aWwuaXNOdWxsKGl0ZW0uZGVmYXVsdFZhbCkpIHtcclxuICAgICAgICAgIHRoaXMuaGVhZGVyRGVmYXVsdFZhbFtpdGVtLmtleV0gPSBpdGVtLmRlZmF1bHRWYWxcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGl0ZW0uaXNTaG93ICE9IGZhbHNlKSB7XHJcbiAgICAgICAgICBpdGVtLmlzU2hvdyA9IGkgPCB0aGlzLnF1ZXJ5T3B0cy5zaG93TnVtXHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuYXRyRm9ybS5hZGRDb250cm9sKGl0ZW0ua2V5LCBuZXcgVW50eXBlZEZvcm1Db250cm9sKCkpO1xyXG4gICAgICAgIGxldCB0eXBlID0gaXRlbS50eXBlO1xyXG4gICAgICAgIHN3aXRjaCAodHlwZSkge1xyXG4gICAgICAgICAgY2FzZSBcInNlbGVjdFwiOlxyXG4gICAgICAgICAgICB0aGlzLmdldERpY3RWYWx1ZShpdGVtLmRpY3RDb2RlKTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICBjYXNlIFwidHJlZVNlbGVjdFwiOlxyXG4gICAgICAgICAgY2FzZSBcImNhc2NhZGVyXCI6XHJcbiAgICAgICAgICBjYXNlIFwic2VsZWN0Q3VzXCI6XHJcbiAgICAgICAgICAgIGlmIChpdGVtLnNlbGVjdFVybCAmJiBpdGVtLnNlbGVjdFVybC51cmwpIHtcclxuICAgICAgICAgICAgICB0aGlzLmdldERpY0xpc3QoaXRlbSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldERpY0xpc3QoaXRlbTogYW55KSB7XHJcbiAgICBpZiAoIWl0ZW0uc2VsZWN0VXJsIHx8ICFpdGVtLnNlbGVjdFVybC51cmwpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgbGV0IGtleXMgPSBpdGVtLnNlbGVjdFVybC5jb252ZXJ0LnNwbGl0KCcsJyk7XHJcbiAgICB0aGlzLmh0dHBTZXJ2aWNlLnBvc3QoaXRlbS5zZWxlY3RVcmwudXJsLCB7fSwgVG9vbHNVdGlsLmdldEh0dHBPcHRpb25zKCkpLnN1YnNjcmliZShyZXMgPT4ge1xyXG4gICAgICBpZiAoaXRlbS50eXBlID09ICd0cmVlU2VsZWN0Jykge1xyXG4gICAgICAgIGl0ZW0udHJlZUxpc3QgPSByZXMuZGF0YS5maWx0ZXIoKGNoaWxkOiBhbnkpID0+IHtcclxuICAgICAgICAgIGtleXMuZm9yRWFjaCgodjogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIGxldCB2cyA9IHYuc3BsaXQoXCJ8XCIpO1xyXG4gICAgICAgICAgICBjaGlsZFt2c1swXV0gPSBjaGlsZFt2c1sxXV07XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIC8vIGNoaWxkLmtleSA9IGNoaWxkLmlkO1xyXG4gICAgICAgICAgLy8gY2hpbGQudGl0bGUgPSBjaGlsZC5yZWFsTmFtZTtcclxuICAgICAgICAgIHJldHVybiB0cnVlXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0gZWxzZSBpZiAoaXRlbS50eXBlID09ICdzZWxlY3RDdXMnKSB7XHJcbiAgICAgICAgaXRlbS5kaWN0TGlzdCA9IHJlcy5kYXRhLmZpbHRlcigoY2hpbGQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAga2V5cy5mb3JFYWNoKCh2OiBhbnkpID0+IHtcclxuICAgICAgICAgICAgbGV0IHZzID0gdi5zcGxpdChcInxcIik7XHJcbiAgICAgICAgICAgIGNoaWxkW3ZzWzBdXSA9IGNoaWxkW3ZzWzFdXTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgLy8gY2hpbGQudmFsdWUgPSBjaGlsZC5pZDtcclxuICAgICAgICAgIC8vIGNoaWxkLmxhYmVsID0gY2hpbGQubmFtZTtcclxuICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCkge1xyXG5cclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICBsZXQgc2Nyb2xsU2l6ZSA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy5zY3JvbGxTaXplKSk7XHJcbiAgICAgIHNjcm9sbFNpemUueSA9IHRoaXMudGFibGVDb250ZW50Lm5hdGl2ZUVsZW1lbnQub2Zmc2V0SGVpZ2h0IC0gMTAwICsgXCJweFwiO1xyXG4gICAgICBpZiAodGhpcy5pc0hpZGVUYWJsZSkge1xyXG4gICAgICAgIHNjcm9sbFNpemUueSA9IHRoaXMudGFibGVDb250ZW50Lm5hdGl2ZUVsZW1lbnQub2Zmc2V0SGVpZ2h0IC0gNjAgKyBcInB4XCI7XHJcbiAgICAgIH1cclxuICAgICAgbGV0IHdpZHRoID0gMDtcclxuICAgICAgaWYgKHRoaXMucXVlcnlPcHRzICYmIHRoaXMucXVlcnlPcHRzLnRhYmxlcykge1xyXG4gICAgICAgIGZvciAobGV0IHRhYmxlIG9mIHRoaXMucXVlcnlPcHRzLnRhYmxlcykge1xyXG4gICAgICAgICAgaWYgKHRhYmxlLmlzU2hvdyAmJiB0YWJsZS53aWR0aCkge1xyXG5cclxuICAgICAgICAgICAgd2lkdGggKz0gVG9vbHNVdGlsLnBpeGVsVG9OdW0odGFibGUud2lkdGgpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBsZXQgdyA9IHRoaXMudGFibGVDb250ZW50Lm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGggLSAyMjtcclxuICAgICAgaWYgKHdpZHRoID4gdylcclxuICAgICAgICBzY3JvbGxTaXplLnggPSB3aWR0aCArIFwicHhcIjtcclxuICAgICAgZWxzZVxyXG4gICAgICAgIHNjcm9sbFNpemUueCA9IHRoaXMudGFibGVDb250ZW50Lm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGggLSAyMiArIFwicHhcIjtcclxuXHJcbiAgICAgIGNvbnNvbGUubG9nKHNjcm9sbFNpemUpO1xyXG4gICAgICB0aGlzLnNjcm9sbFNpemUgPSBzY3JvbGxTaXplO1xyXG4gICAgICB0aGlzLmlzQWxsTG9hZCA9IHRydWU7XHJcbiAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfSwgMTAwKVxyXG5cclxuXHJcbiAgfVxyXG5cclxuICBzb3J0KHNvcnROYW1lOiBzdHJpbmcsIHZhbHVlOiBhbnkpOiB2b2lkIHtcclxuICAgIGZvciAoY29uc3Qga2V5IGluIHRoaXMuc29ydE1hcCkge1xyXG4gICAgICB0aGlzLnNvcnRNYXBba2V5XSA9IGtleSA9PT0gc29ydE5hbWUgPyB2YWx1ZSA6IG51bGw7XHJcbiAgICB9XHJcbiAgICAvLyB0aGlzLnNlYXJjaCh0aGlzLmxpc3RPZlNlYXJjaE5hbWUsIHRoaXMubGlzdE9mU2VhcmNoQWRkcmVzcyk7XHJcbiAgICBjb25zb2xlLmxvZyh0aGlzLnNvcnRNYXApXHJcbiAgICB0aGlzLnF1ZXJ5KHRydWUpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXQgZGljdFNlcnZpY2UoKTogRGljdFNlcnZpY2Uge1xyXG4gICAgcmV0dXJuIHRoaXMuaW5qZWN0b3IuZ2V0KERpY3RTZXJ2aWNlKVxyXG4gIH1cclxuXHJcbiAgZ2V0RGljdFZhbHVlKGNvZGU6IHN0cmluZykge1xyXG4gICAgY29uc29sZS5sb2coXCJwcHBwXCIpO1xyXG4gICAgdGhpcy5kaWN0U2VydmljZS5nZXREaWN0Qnljb2RlKGNvZGUpLnN1YnNjcmliZShcclxuICAgICAgcmVzdWx0ID0+IHtcclxuICAgICAgICBpZiAocmVzdWx0ICYmIHJlc3VsdCAhPSBudWxsKVxyXG4gICAgICAgICAgdGhpcy5kaWN0c1tjb2RlXSA9IHJlc3VsdC5kaWN0cztcclxuICAgICAgICBjb25zb2xlLmxvZyh0aGlzLmRpY3RzKVxyXG5cclxuICAgICAgfSxcclxuICAgICAgZXJyb3IgPT4ge1xyXG4gICAgICAgIHRoaXMuZGljdHNbY29kZV0gPSBbXTtcclxuICAgICAgfVxyXG4gICAgKVxyXG4gIH1cclxuXHJcbiAgdG9nZ2xlQ29sbGFwc2UoKTogdm9pZCB7XHJcbiAgICB0aGlzLmlzQ29sbGFwc2UgPSAhdGhpcy5pc0NvbGxhcHNlO1xyXG4gICAgLy8gdGhpcy5xdWVyeU9wdHMuaGVhZGVycy5mb3JFYWNoKChjOiBhbnksIGluZGV4OiBhbnkpID0+IHtcclxuICAgIC8vICAgYy5pc1Nob3cgPSB0aGlzLmlzQ29sbGFwc2UgPyBpbmRleCA8IHRoaXMucXVlcnlPcHRzLnNob3dOdW0gOiB0cnVlO1xyXG4gICAgLy8gfSk7XHJcbiAgICBsZXQgYWN0aW9uOiBUYWJsZUFjdGlvbiA9IHtcclxuICAgICAgbmFtZTogJ+aUtui1ty/lsZXlvIAnLFxyXG4gICAgICBjb2RlOiAnY29sbGFwc2UnLFxyXG4gICAgICBkYXRhOiB0aGlzLmlzQ29sbGFwc2UsXHJcbiAgICAgIHZhbHVlOiB0aGlzLmlzQ29sbGFwc2UsXHJcbiAgICB9O1xyXG4gICAgdGhpcy5oZWFkZXJBY3Rpb24uZW1pdChhY3Rpb24pXHJcbiAgfVxyXG5cclxuICByZXNldEZvcm0oKTogdm9pZCB7XHJcbiAgICB0aGlzLmF0ckZvcm0ucmVzZXQoKTtcclxuICAgIGZvciAoY29uc3Qga2V5IGluIHRoaXMuaGVhZGVyRGVmYXVsdFZhbCkge1xyXG4gICAgICB0aGlzLmF0ckZvcm0uZ2V0KGtleSk/LnNldFZhbHVlKHRoaXMuaGVhZGVyRGVmYXVsdFZhbFtrZXldKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmhlYWRlckFjdGlvbi5lbWl0KHtcclxuICAgICAgbmFtZTogJ+mHjee9ricsXHJcbiAgICAgIGNvZGU6ICdyZXNldEZvcm0nLFxyXG4gICAgfSlcclxuXHJcbiAgfVxyXG5cclxuICBzZWxlY3RDaGFuZ2UodmFsdWU6IGFueSwgaXRlbTogYW55KSB7XHJcbiAgICBjb25zb2xlLmxvZyh2YWx1ZSk7XHJcbiAgICBsZXQgYWN0aW9uOiBUYWJsZUFjdGlvbiA9IHtcclxuICAgICAgbmFtZTogaXRlbS5sYWJlbCxcclxuICAgICAgY29kZTogaXRlbS5rZXksXHJcbiAgICAgIGRhdGE6IGl0ZW0sXHJcbiAgICAgIHZhbHVlOiB2YWx1ZSxcclxuICAgIH07XHJcbiAgICB0aGlzLmhlYWRlckFjdGlvbi5lbWl0KGFjdGlvbilcclxuXHJcbiAgfVxyXG5cclxuICBjbGlja0ljb24odmFsdWU6IGFueSwgaXRlbTogQXRyUXVlcnlIZWFkZXIsICRldmVudDogYW55KSB7XHJcbiAgICAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICBjb25zb2xlLmxvZyh2YWx1ZSwgaXRlbSk7XHJcbiAgICBsZXQgYWN0aW9uOiBUYWJsZUFjdGlvbiA9IHtcclxuICAgICAgbmFtZTogaXRlbS5uYW1lLFxyXG4gICAgICBjb2RlOiBpdGVtLmljb24/LmNvZGUgPyBpdGVtLmljb24/LmNvZGUgOiBcIlwiLFxyXG4gICAgICBkYXRhOiBpdGVtLFxyXG4gICAgICB2YWx1ZTogdmFsdWUsXHJcbiAgICB9O1xyXG4gICAgdGhpcy5oZWFkZXJBY3Rpb24uZW1pdChhY3Rpb24pXHJcbiAgfVxyXG5cclxuICBnZXRRdWVyeVBhcmFtcyhyZXNldDogYm9vbGVhbik6IGpzb24ge1xyXG4gICAgaWYgKHJlc2V0KSB7XHJcbiAgICAgIHRoaXMucGFnZUluZGV4ID0gMTtcclxuICAgIH1cclxuICAgIGNvbnNvbGUubG9nKHRoaXMucGFnZUluZGV4KTtcclxuICAgIGxldCBwYXJhbXM6IGFueSA9IHtcclxuICAgICAgcGFnZTogdGhpcy5wYWdlSW5kZXgsXHJcbiAgICAgIGxpbWl0OiB0aGlzLnBhZ2VTaXplLFxyXG4gICAgICBzb3J0OiB0aGlzLmdldFNvcnRJbmZvKClcclxuICAgIH07XHJcbiAgICBwYXJhbXMgPSBPYmplY3QuYXNzaWduKHBhcmFtcywgdGhpcy5kZWZhdWx0UGFyYW1zKTtcclxuICAgIGZvciAoY29uc3Qga2V5IGluIHRoaXMuYXRyRm9ybS52YWx1ZSkge1xyXG4gICAgICBpZiAodGhpcy5hdHJGb3JtLnZhbHVlW2tleV0gJiYgdGhpcy5hdHJGb3JtLnZhbHVlW2tleV0gIT0gbnVsbCAmJiB0aGlzLmF0ckZvcm0udmFsdWVba2V5XSAhPSBcIlwiKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuZ2V0SGVkZXJUeXBlKGtleSkgPT0gXCJkYXRlUmFuZ2VcIikge1xyXG4gICAgICAgICAgbGV0IGJlZ2luID0ga2V5ICsgXCJCZWdpblwiO1xyXG4gICAgICAgICAgbGV0IGVuZCA9IGtleSArIFwiRW5kXCI7XHJcbiAgICAgICAgICBsZXQgZm9ybWF0ZSA9ICd5eXl5LU1NLWRkIDAwOjAwOjAwJ1xyXG4gICAgICAgICAgbGV0IG56U2hvd1RpbWU6IGFueSA9IHRoaXMuZ2V0SGVkZXJUeXBlKGtleSwgJ256U2hvd1RpbWUnKVxyXG4gICAgICAgICAgaWYgKG56U2hvd1RpbWUpIHtcclxuICAgICAgICAgICAgZm9ybWF0ZSA9ICd5eXl5LU1NLWRkIEhIOm1tOnNzJ1xyXG4gICAgICAgICAgICBpZiAobnpTaG93VGltZS5uekZvcm1hdCkge1xyXG4gICAgICAgICAgICAgIGZvcm1hdGUgPSAneXl5eS1NTS1kZCAnICsgbnpTaG93VGltZS5uekZvcm1hdDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgcGFyYW1zW2JlZ2luXSA9IGZvcm1hdERhdGUoKHRoaXMuYXRyRm9ybS52YWx1ZVtrZXldWzBdIGFzIERhdGUpLCBmb3JtYXRlLCB0aGlzLmxvY2FsZSk7XHJcbiAgICAgICAgICBwYXJhbXNbZW5kXSA9IGZvcm1hdERhdGUoKHRoaXMuYXRyRm9ybS52YWx1ZVtrZXldWzFdIGFzIERhdGUpLCBmb3JtYXRlLCB0aGlzLmxvY2FsZSk7XHJcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmdldEhlZGVyVHlwZShrZXkpID09IFwiZGF5UmFuZ2VcIikge1xyXG4gICAgICAgICAgbGV0IGJlZ2luID0ga2V5ICsgXCJCZWdpblwiO1xyXG4gICAgICAgICAgbGV0IGVuZCA9IGtleSArIFwiRW5kXCI7XHJcbiAgICAgICAgICBsZXQgZm9ybWF0ZSA9ICd5eXl5LU1NLWRkIDAwOjAwOjAwJ1xyXG4gICAgICAgICAgcGFyYW1zW2JlZ2luXSA9IGZvcm1hdERhdGUoKHRoaXMuYXRyRm9ybS52YWx1ZVtrZXldWzBdIGFzIERhdGUpLCBmb3JtYXRlLCB0aGlzLmxvY2FsZSk7XHJcbiAgICAgICAgICBwYXJhbXNbZW5kXSA9IGZvcm1hdERhdGUoKHRoaXMuYXRyRm9ybS52YWx1ZVtrZXldWzFdIGFzIERhdGUpLCBmb3JtYXRlLCB0aGlzLmxvY2FsZSk7XHJcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmdldEhlZGVyVHlwZShrZXkpID09IFwic2RhdGVcIikge1xyXG4gICAgICAgICAgcGFyYW1zW2tleV0gPSBmb3JtYXREYXRlKCh0aGlzLmF0ckZvcm0udmFsdWVba2V5XSBhcyBEYXRlKSwgJ3l5eXktTU0tZGQgMDA6MDA6MDAnLCB0aGlzLmxvY2FsZSk7XHJcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmdldEhlZGVyVHlwZShrZXkpID09IFwidHJlZVNlbGVjdFwiKSB7XHJcbiAgICAgICAgICBsZXQgdmFsdWUgPSB0aGlzLmF0ckZvcm0udmFsdWVba2V5XTtcclxuICAgICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT0gJ3N0cmluZycpIHtcclxuICAgICAgICAgICAgcGFyYW1zW2tleV0gPSB0aGlzLmF0ckZvcm0udmFsdWVba2V5XTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHBhcmFtc1trZXldID0gdGhpcy5hdHJGb3JtLnZhbHVlW2tleV0uam9pbigpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5nZXRIZWRlclR5cGUoa2V5KSA9PSBcImNhc2NhZGVyXCIgfHwgdGhpcy5nZXRIZWRlclR5cGUoa2V5LCAnbnpNb2RlJykgPT0gJ211bHRpcGxlJykge1xyXG4gICAgICAgICAgcGFyYW1zW2tleV0gPSB0aGlzLmF0ckZvcm0udmFsdWVba2V5XS5qb2luKCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHBhcmFtc1trZXldID0gdGhpcy5hdHJGb3JtLnZhbHVlW2tleV07XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGNvbnNvbGUubG9nKHBhcmFtcylcclxuICAgIHJldHVybiBwYXJhbXM7XHJcblxyXG4gIH1cclxuXHJcbiAgZ2V0SGVkZXJUeXBlKGN1c0tleTogc3RyaW5nLCB0eXBlS2V5Pzogc3RyaW5nKSB7XHJcbiAgICBsZXQgdHlwZSA9IG51bGw7XHJcbiAgICBmb3IgKGxldCBoZWFkZXIgb2YgdGhpcy5xdWVyeU9wdHMuaGVhZGVycykge1xyXG4gICAgICBpZiAoY3VzS2V5ID09IGhlYWRlci5rZXkpIHtcclxuICAgICAgICB0eXBlID0gaGVhZGVyW3R5cGVLZXkgfHwgJ3R5cGUnXTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHR5cGU7XHJcbiAgfVxyXG5cclxuICBzZXREZWZhdWx0UGFyYW1zKHBhcmFtczogYW55LCByZXNldDogYm9vbGVhbiA9IHRydWUpIHtcclxuICAgIHRoaXMuZGVmYXVsdFBhcmFtcyA9IHBhcmFtcztcclxuICAgIHRoaXMucXVlcnkocmVzZXQpO1xyXG4gIH1cclxuXHJcbiAgZ2V0U29ydEluZm8oKTogc3RyaW5nIHtcclxuICAgIGxldCBvcmRlcmJ5OiBhbnkgPSBbXTtcclxuICAgIGZvciAoY29uc3Qga2V5IGluIHRoaXMuc29ydE1hcCkge1xyXG4gICAgICBpZiAodGhpcy5zb3J0TWFwW2tleV0gPT0gJ2FzY2VuZCcpIHtcclxuICAgICAgICBvcmRlcmJ5LnB1c2goa2V5ICsgXCJ8XCIgKyBcImFzY1wiKVxyXG4gICAgICB9IGVsc2UgaWYgKHRoaXMuc29ydE1hcFtrZXldID09ICdkZXNjZW5kJykge1xyXG4gICAgICAgIG9yZGVyYnkucHVzaChrZXkgKyBcInxcIiArIFwiZGVzY1wiKVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBsZXQgb3JkZXIgPSBcIlwiO1xyXG4gICAgaWYgKG9yZGVyYnkubGVuZ3RoIDwgMSAmJiB0aGlzLnF1ZXJ5T3B0cy5zb3J0KSB7XHJcbiAgICAgIG9yZGVyID0gdGhpcy5xdWVyeU9wdHMuc29ydFxyXG4gICAgfSBlbHNlXHJcbiAgICAgIG9yZGVyID0gb3JkZXJieS5qb2luKFwiLFwiKTtcclxuICAgIHJldHVybiBvcmRlcjtcclxuICB9XHJcblxyXG4gIHF1ZXJ5VGltZSA9IFwiXCI7XHJcblxyXG4gIHF1ZXJ5KHJlc2V0OiBib29sZWFuID0gZmFsc2UpIHtcclxuICAgIGxldCBwYXJhbXMgPSB0aGlzLmdldFF1ZXJ5UGFyYW1zKHJlc2V0KTtcclxuICAgIGlmICh0aGlzLnF1ZXJ5SGVhZGVycykge1xyXG4gICAgICBwYXJhbXMgPSBPYmplY3QuYXNzaWduKHt9LCB0aGlzLnF1ZXJ5SGVhZGVycywgcGFyYW1zKTtcclxuICAgICAgY29uc29sZS5sb2coJ+afpeivouadoeS7ticsIHBhcmFtcylcclxuICAgIH1cclxuICAgIGlmICh0aGlzLnF1ZXJ5T3B0cy51cmwpIHtcclxuICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcclxuICAgICAgdGhpcy5xdWVyeVRpbWUgPSBmb3JtYXREYXRlKG5ldyBEYXRlKCksICd5eXl5LU1NLWRkIEhIOm1tOnNzJywgdGhpcy5sb2NhbGUpO1xyXG4gICAgICB0aGlzLmh0dHBTZXJ2aWNlLnBvc3QodGhpcy5xdWVyeU9wdHMudXJsLCBwYXJhbXMsIFRvb2xzVXRpbC5nZXRIdHRwT3B0aW9ucygpKS5zdWJzY3JpYmUoXHJcbiAgICAgICAgcmVzdWx0ID0+IHtcclxuICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgaWYgKHJlc3VsdC5zdGF0dXMgPT0gMjAwKSB7XHJcbiAgICAgICAgICAgIGxldCBhY3Rpb246IGFueSA9IHt9O1xyXG4gICAgICAgICAgICBhY3Rpb25bXCJyZXN1bHRcIl0gPSByZXN1bHQ7XHJcbiAgICAgICAgICAgIGFjdGlvbltcInBhcmFtc1wiXSA9IHBhcmFtcztcclxuICAgICAgICAgICAgdGhpcy5xdWVyeUJhY2suZW1pdChhY3Rpb24pO1xyXG4gICAgICAgICAgICB0aGlzLnRvdGFsID0gcmVzdWx0Py5wYWdlPy50b3RhbFJlc3VsdDtcclxuICAgICAgICAgICAgdGhpcy50YWJsZURhdGFzID0gcmVzdWx0LmRhdGE7XHJcbiAgICAgICAgICAgIHRoaXMuZ2V0Um93U3BhbigpO1xyXG4gICAgICAgICAgICB0aGlzLm1hcE9mQ2hlY2tlZElkID0ge307XHJcbiAgICAgICAgICAgIHRoaXMuY3VyQ2hlY2tlZCA9IC0xO1xyXG4gICAgICAgICAgICB0aGlzLnJlZnJlc2hTdGF0dXMoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yID0+IHtcclxuICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgKVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5xdWVyeUJhY2suZW1pdCh7bmFtZTogJycsIGNvZGU6ICdxdWVyeScsIGRhdGE6IHBhcmFtc30pXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjb250ZXh0TWVudSgkZXZlbnQ6IGFueSwgbWVudTogTnpEcm9wZG93bk1lbnVDb21wb25lbnQpIHtcclxuICAgIGNvbnNvbGUubG9nKCRldmVudClcclxuICAgIHRoaXMubnpDb250ZXh0TWVudVNlcnZpY2UuY3JlYXRlKCRldmVudCwgbWVudSk7XHJcbiAgfVxyXG5cclxuICBsb2codmFsdWU6IHN0cmluZ1tdKTogdm9pZCB7XHJcbiAgICBjb25zb2xlLmxvZyh2YWx1ZSk7XHJcbiAgICBmb3IgKGxldCB0YWJsZSBvZiB0aGlzLnF1ZXJ5T3B0cy50YWJsZXMpIHtcclxuICAgICAgbGV0IGZsYWcgPSBmYWxzZTtcclxuICAgICAgZm9yIChsZXQgaXRlbSBvZiB2YWx1ZSkge1xyXG4gICAgICAgIGlmIChpdGVtID09IHRhYmxlLmtleSkge1xyXG4gICAgICAgICAgdGFibGUuaXNTaG93ID0gdHJ1ZTtcclxuICAgICAgICAgIGZsYWcgPSB0cnVlXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGlmICghZmxhZylcclxuICAgICAgICB0YWJsZS5pc1Nob3cgPSBmYWxzZTtcclxuXHJcbiAgICB9XHJcbiAgICBjb25zb2xlLmxvZyh0aGlzLnF1ZXJ5T3B0cy50YWJsZXMpO1xyXG4gIH1cclxuXHJcbiAgY2hlY2tTaG93VGQoaXRlbTogVGFibGUsIGluZGV4OiBhbnkpOiBib29sZWFuIHtcclxuICAgIGlmICghaXRlbS5pc1Nob3cpIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgaWYgKGl0ZW0uaXNSb3dTcGFuKSB7XHJcbiAgICAgIC8vIOWQiOW5tuihjCzov5Tlm57lgLzkuI7kuIrkuIDooYznm7jlkIzliJnpmpDol4/ov5nkuIDooYw7XHJcbiAgICAgIGlmIChpbmRleCA9PSAwKSB7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIH1cclxuICAgICAgY29uc3Qga2V5ID0gaXRlbS5rZXkgPyBpdGVtLmtleSA6IFwiXCI7XHJcbiAgICAgIGNvbnN0IGN1ciA9IHRoaXMudGFibGVEYXRhc1tpbmRleF1ba2V5XTtcclxuICAgICAgY29uc3QgcHJlID0gdGhpcy50YWJsZURhdGFzW2luZGV4IC0gMV1ba2V5XTtcclxuXHJcbiAgICAgIHJldHVybiAhKGN1ciA9PSBwcmUpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGl0ZW0uaXNTaG93O1xyXG4gIH1cclxuXHJcbiAgY2hlY2tSb3dTcGFuKGl0ZW06IFRhYmxlLCBkYXRhOiBhbnkpIHtcclxuICAgIGlmIChpdGVtLmlzUm93U3Bhbikge1xyXG4gICAgICByZXR1cm4gdGhpcy5yb3dTcGFuTWFwW2l0ZW0ua2V5ID8gaXRlbS5rZXkgOiBcIlwiXVtkYXRhW2l0ZW0ua2V5ID8gaXRlbS5rZXkgOiBcIlwiXV0ubnVtXHJcbiAgICB9XHJcbiAgICByZXR1cm4gMTtcclxuICB9XHJcblxyXG4gIGdldFJvd1NwYW4oKSB7XHJcbiAgICBsZXQgaXNSb3dTcGFuID0gZmFsc2U7XHJcbiAgICB0aGlzLnF1ZXJ5T3B0cy50YWJsZXMuZm9yRWFjaChcclxuICAgICAgKGl0ZW06IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChpdGVtLmlzUm93U3Bhbikge1xyXG4gICAgICAgICAgaXNSb3dTcGFuID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMucm93U3Bhbk1hcFtpdGVtLmtleV0gPSB7fTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICk7XHJcbiAgICBpZiAoIWlzUm93U3Bhbikge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBsZXQga2V5cyA9IE9iamVjdC5rZXlzKHRoaXMucm93U3Bhbk1hcCk7XHJcbiAgICB0aGlzLnRhYmxlRGF0YXMuZm9yRWFjaChcclxuICAgICAgKGl0ZW06IGFueSkgPT4ge1xyXG4gICAgICAgIGtleXMuZm9yRWFjaChcclxuICAgICAgICAgIGtleSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gaXRlbVtrZXldO1xyXG4gICAgICAgICAgICBpZiAoIXRoaXMucm93U3Bhbk1hcFtrZXldW3ZhbHVlXSkge1xyXG4gICAgICAgICAgICAgIHRoaXMucm93U3Bhbk1hcFtrZXldW3ZhbHVlXSA9IHtcclxuICAgICAgICAgICAgICAgIG51bTogMVxyXG4gICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5yb3dTcGFuTWFwW2tleV1bdmFsdWVdLm51bSArPSAxO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgKVxyXG4gICAgICB9XHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZHJvcChldmVudDogQ2RrRHJhZ0Ryb3A8c3RyaW5nW10+KTogdm9pZCB7XHJcbiAgICBtb3ZlSXRlbUluQXJyYXkodGhpcy50YWJsZURhdGFzLCBldmVudC5wcmV2aW91c0luZGV4LCBldmVudC5jdXJyZW50SW5kZXgpO1xyXG4gICAgbGV0IGFjdGlvbjogVGFibGVBY3Rpb24gPSB7XHJcbiAgICAgIG5hbWU6ICdkcmFnJyxcclxuICAgICAgY29kZTogJ2RyYWcnLFxyXG4gICAgICB0eXBlOiBcInJvd3NcIlxyXG4gICAgfTtcclxuICAgIGFjdGlvbi5kYXRhcyA9IHRoaXMudGFibGVEYXRhcztcclxuICAgIGlmICh0aGlzLnRhYmxlRGF0YXMgJiYgdGhpcy50YWJsZURhdGFzLmxlbmd0aCA+IDApIHtcclxuICAgICAgYWN0aW9uLmZpcnN0RGF0YSA9IHRoaXMudGFibGVEYXRhc1swXTtcclxuICAgIH1cclxuICAgIGFjdGlvbi5udW1iZXJPZkNoZWNrZWQgPSAxO1xyXG4gICAgdGhpcy50YWJsZUFjdGlvbi5lbWl0KGFjdGlvbik7XHJcbiAgfVxyXG5cclxufVxyXG4iLCI8Zm9ybSBuei1mb3JtIFtmb3JtR3JvdXBdPVwiYXRyRm9ybVwiIGNsYXNzPVwiYW50LWFkdmFuY2VkLXNlYXJjaC1mb3JtXCJcclxuICAgICAgKm5nSWY9XCJxdWVyeU9wdHMuaGVhZGVycy5sZW5ndGggPjAgfHwgcXVlcnlPcHRzLmFjdGlvbnMubGVuZ3RoID4wXCI+XHJcbiAgPGRpdiBuei1yb3cgW256R3V0dGVyXT1cIjI0XCIgW2hpZGRlbl09XCIhaXNDb2xsYXBzZVwiPlxyXG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW2hlYWRlci1sZWZ0LXNsb3RdXCI+PC9uZy1jb250ZW50PlxyXG4gICAgPGRpdiBuei1jb2wgW2hpZGRlbl09XCIhaGVhZGVyLmlzU2hvdyBcIiAqbmdGb3I9XCJsZXQgaGVhZGVyIG9mIHF1ZXJ5T3B0cy5oZWFkZXJzXCJcclxuICAgICAgICAgW256U3Bhbl09XCJoZWFkZXIuc3BhblwiPlxyXG4gICAgICA8YXBwLXRhYmxlLWZvcm0taXRlbVxyXG4gICAgICAgIFtoZWFkZXJdPVwiaGVhZGVyXCJcclxuICAgICAgICBbbmdNb2RlbF09XCJoZWFkZXIuZGVmYXVsdFZhbFwiXHJcbiAgICAgICAgW2RpY3RMaXN0XT1cImRpY3RzW2hlYWRlci5kaWN0Q29kZV1cIlxyXG4gICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwiaGVhZGVyLmtleVwiXHJcbiAgICAgICAgKGhlYWRlckFjdGlvbik9XCJoZWFkZXJBY3Rpb24uZW1pdCgkZXZlbnQpXCI+PC9hcHAtdGFibGUtZm9ybS1pdGVtPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbaGVhZGVyLXJpZ2h0LXNsb3RdXCI+PC9uZy1jb250ZW50PlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgbnotcm93IG56VHlwZT1cImZsZXhcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJhY3Rpb24tYXJlYVwiIG56LWNvbCBbbnpTcGFuXT1cIjE2XCI+XHJcbiAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltidXR0b24tbGVmdC1zbG90XVwiPjwvbmctY29udGVudD5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgYWN0aW9uIG9mIHF1ZXJ5T3B0cy5hY3Rpb25zXCI+XHJcbiAgICAgICAgPGF0ci1sb2NhbC11cGxvYWQgKm5nSWY9XCJhY3Rpb24uZ1R5cGUgPT0gJ3VwbG9hZCdcIiBbY29kZV09XCJhY3Rpb24uY29kZVwiIFt1cmxdPVwiYWN0aW9uLnVybFwiIFtuYW1lXT1cImFjdGlvbi5uYW1lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBbd2l0aG91dFJvbGVdPVwiYWN0aW9uLndpdGhvdXRSb2xlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cIiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XCI+PC9hdHItbG9jYWwtdXBsb2FkPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhYWN0aW9uLmdUeXBlXCI+XHJcbiAgICAgICAgICA8YnV0dG9uIG56LWJ1dHRvbiBbbnpUeXBlXT1cIidwcmltYXJ5J1wiIG56U2l6ZT1cInNtYWxsXCIgKGNsaWNrKT1cImRvQWN0aW9uKGFjdGlvbi5jb2RlKVwiXHJcbiAgICAgICAgICAgICAgICAgICphdHJSb2xlPVwiYWN0aW9uLndpdGhvdXRSb2xlID8gbnVsbDphY3Rpb24uY29kZVwiXHJcbiAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJpc0VuYWJsZShhY3Rpb24ub3BlcmF0b3IpXCI+e3thY3Rpb24ubmFtZX19PC9idXR0b24+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbYnV0dG9uLXJpZ2h0LXNsb3RdXCI+PC9uZy1jb250ZW50PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IG56LWNvbCBbbnpTcGFuXT1cIjhcIiBjbGFzcz1cInNlYXJjaC1hcmVhXCIgKm5nSWY9XCJxdWVyeU9wdHMuaGVhZGVycy5sZW5ndGggPjAgJiYgIXF1ZXJ5T3B0cy5pc0hpZGVRdWVyeVwiPlxyXG4gICAgICA8c3BhbiAqbmdJZj1cInNob3dRdWVyeVRpbWUmJnF1ZXJ5VGltZVwiPuaVsOaNruafpeivouaXtumXtO+8mnt7cXVlcnlUaW1lfX08L3NwYW4+XHJcbiAgICAgIDxidXR0b24gbnotYnV0dG9uIG56U2l6ZT1cInNtYWxsXCIgW256VHlwZV09XCIncHJpbWFyeSdcIiAoY2xpY2spPVwicXVlcnkodHJ1ZSlcIj7mn6Xor6I8L2J1dHRvbj5cclxuICAgICAgPGJ1dHRvbiBuei1idXR0b24gbnpTaXplPVwic21hbGxcIiAoY2xpY2spPVwicmVzZXRGb3JtKClcIj7ph43nva48L2J1dHRvbj5cclxuICAgICAgPGEgY2xhc3M9XCJjb2xsYXBzZVwiIChjbGljayk9XCJ0b2dnbGVDb2xsYXBzZSgpXCIgKm5nSWY9XCJxdWVyeU9wdHMuaGVhZGVycy5sZW5ndGggPiAwIFwiPlxyXG4gICAgICAgIHt7aXNDb2xsYXBzZSA/ICfmlLbotbcnIDogJ+WxleW8gCd9fVxyXG4gICAgICAgIDxpIG56LWljb24gW256VHlwZV09XCJpc0NvbGxhcHNlID8gJ3VwJyA6ICdkb3duJ1wiPjwvaT5cclxuICAgICAgPC9hPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdiAqbmdJZj1cInRpdGxlXCIgY2xhc3M9XCJ0aXRsZVwiPnt7dGl0bGV9fTwvZGl2PlxyXG48L2Zvcm0+XHJcbjxkaXYgY2xhc3M9XCJzZWFyY2gtcmVzdWx0LWxpc3RcIiAjdGFibGVDb250ZW50IFtzcGluTG9hZGluZ109XCJsb2FkaW5nXCIgSHFTcGluPlxyXG4gIDxuei10YWJsZSAqbmdJZj1cImlzQWxsTG9hZCBcIiAjYmFzaWNUYWJsZSBjbGFzcz1cIm1haW4tdGFibGVcIlxyXG4gICAgICAgICAgICBbbnpTY3JvbGxdPVwic2Nyb2xsU2l6ZVwiXHJcbiAgICAgICAgICAgIG56U2l6ZT1cIm1pZGRsZVwiXHJcbiAgICAgICAgICAgIG56Qm9yZGVyZWRcclxuICAgICAgICAgICAgW256U2hvd1BhZ2luYXRpb25dPVwic2hvd1BhZ2luYXRpb25cIlxyXG4gICAgICAgICAgICBuelNob3dTaXplQ2hhbmdlclxyXG4gICAgICAgICAgICBbbnpGcm9udFBhZ2luYXRpb25dPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICBbbnpMb2FkaW5nXT1cImxvYWRpbmdcIlxyXG4gICAgICAgICAgICBbbnpUb3RhbF09XCJ0b3RhbFwiXHJcbiAgICAgICAgICAgIFsobnpQYWdlSW5kZXgpXT1cInBhZ2VJbmRleFwiXHJcbiAgICAgICAgICAgIFsobnpQYWdlU2l6ZSldPVwicGFnZVNpemVcIlxyXG4gICAgICAgICAgICBbbnpQYWdlU2l6ZU9wdGlvbnNdPVwicGFnZVNpemVPcHRpb25zXCJcclxuICAgICAgICAgICAgW256RGF0YV09XCJ0YWJsZURhdGFzXCJcclxuICAgICAgICAgICAgKG56UGFnZUluZGV4Q2hhbmdlKT1cInF1ZXJ5KClcIlxyXG4gICAgICAgICAgICAobnpQYWdlU2l6ZUNoYW5nZSk9XCJxdWVyeSh0cnVlKVwiXHJcbiAgICAgICAgICAgIFtuelNob3dUb3RhbF09XCJ0b3RhbFRlbXBsYXRlXCJcclxuICA+XHJcbiAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbc2xvdDFdXCI+PC9uZy1jb250ZW50PlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpc0hpZGVUYWJsZVwiPlxyXG4gICAgICA8dGhlYWQ+XHJcbiAgICAgIDx0ciAoY29udGV4dG1lbnUpPVwiY29udGV4dE1lbnUoJGV2ZW50LG1lbnUpXCIgY2xhc3M9XCJoZWFkZXItdHJcIj5cclxuXHJcbiAgICAgICAgPHRoIFtuekJyZWFrV29yZF09XCJ0cnVlXCIgKm5nSWY9XCJxdWVyeU9wdHMuY2hlY2tCb3g/LmlzU2hvd0NoZWNrYm94XCJcclxuICAgICAgICAgICAgW256TGVmdF09XCJ0cnVlXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJsZWZ0LXppbmRleC1oZWFkZXJcIlxyXG4gICAgICAgICAgICBuelNob3dDaGVja2JveFxyXG4gICAgICAgICAgICBzdHlsZT1cInotaW5kZXg6IDkwIWltcG9ydGFudDtcIlxyXG4gICAgICAgICAgICBueldpZHRoPVwiMzBweFwiXHJcbiAgICAgICAgICAgIG56QWxpZ249XCJjZW50ZXJcIlxyXG4gICAgICAgICAgICBbKG56Q2hlY2tlZCldPVwiaXNBbGxEaXNwbGF5RGF0YUNoZWNrZWRcIlxyXG4gICAgICAgICAgICBbbnpJbmRldGVybWluYXRlXT1cImlzSW5kZXRlcm1pbmF0ZVwiXHJcbiAgICAgICAgICAgIChuekNoZWNrZWRDaGFuZ2UpPVwiY2hlY2tBbGwoJGV2ZW50KVwiXHJcbiAgICAgICAgPjwvdGg+XHJcbiAgICAgICAgPHRoIFtuekJyZWFrV29yZF09XCJ0cnVlXCIgW256TGVmdF09XCJ0cnVlXCIgY2xhc3M9XCJsZWZ0LXppbmRleC1oZWFkZXJcIiAqbmdJZj1cInF1ZXJ5T3B0cy5pc0luZGV4XCIgbnpXaWR0aD1cIjMwcHhcIiBuekFsaWduPVwiY2VudGVyXCI+IzwvdGg+XHJcbiAgICAgICAgPHRoIFtuekJyZWFrV29yZF09XCJ0cnVlXCIgW256TGVmdF09XCJ0cnVlXCIgY2xhc3M9XCJsZWZ0LXppbmRleC1oZWFkZXJcIiAqbmdJZj1cInF1ZXJ5T3B0cy5jaGVja0JveD8uaXNSYWRpb1wiIG56V2lkdGg9XCIzMHB4XCJcclxuICAgICAgICAgICAgbnpBbGlnbj1cImNlbnRlclwiPiNcclxuICAgICAgICA8L3RoPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgcXVlcnlPcHRzLnRhYmxlczsgXCI+XHJcbiAgICAgICAgICA8dGggW256QnJlYWtXb3JkXT1cInRydWVcIiAqbmdJZj1cIml0ZW0uaXNTaG93IFwiXHJcbiAgICAgICAgICAgICAgW256U2hvd1NvcnRdPWl0ZW0uc29ydGFibGVcclxuICAgICAgICAgICAgICBuei1yZXNpemFibGVcclxuICAgICAgICAgICAgICBuelByZXZpZXdcclxuICAgICAgICAgICAgICBuekJvdW5kcz1cIndpbmRvd1wiXHJcbiAgICAgICAgICAgICAgWyhuelNvcnRPcmRlcildPVwic29ydE1hcFtpdGVtLnNvcnRLZXldXCJcclxuICAgICAgICAgICAgICAobnpTb3J0T3JkZXJDaGFuZ2UpPVwic29ydChpdGVtLnNvcnRLZXksICRldmVudClcIlxyXG4gICAgICAgICAgICAgIFtueldpZHRoXT1cIml0ZW0ud2lkdGhcIlxyXG4gICAgICAgICAgICAgIFtuek1heFdpZHRoXT1cIjI1NlwiXHJcbiAgICAgICAgICAgICAgW256TWluV2lkdGhdPVwiNjBcIlxyXG4gICAgICAgICAgICAgIFtuelJpZ2h0XT1cIml0ZW0uaXNSaWdodCA/IHRydWUgOiBmYWxzZVwiXHJcbiAgICAgICAgICAgICAgW256TGVmdF09XCJpdGVtLmlzTGVmdCA/IHRydWUgOiBmYWxzZVwiXHJcbiAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieydsZWZ0LXppbmRleC1oZWFkZXInOml0ZW0uaXNMZWZ0ID8gdHJ1ZSA6IGZhbHNlfVwiXHJcbiAgICAgICAgICAgICAgKG56UmVzaXplRW5kKT1cIm9uUmVzaXplKCRldmVudCwgaXRlbS5uYW1lKVwiPlxyXG4gICAgICAgICAgICB7e2l0ZW0ubmFtZX19PCEtLSB7d2lkdGh9OiB7IHdpZHRoOiBudW1iZXIgfSwgY29sOiBzdHJpbmctLT5cclxuICAgICAgICAgICAgPG56LXJlc2l6ZS1oYW5kbGUgbnpEaXJlY3Rpb249XCJyaWdodFwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZXNpemUtdHJpZ2dlclwiPjwvZGl2PlxyXG4gICAgICAgICAgICA8L256LXJlc2l6ZS1oYW5kbGU+XHJcbiAgICAgICAgICA8L3RoPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L3RyPlxyXG4gICAgICA8L3RoZWFkPlxyXG5cclxuXHJcbiAgICAgIDx0Ym9keSAqbmdJZj1cIiFhbGxvd0RyYWdcIj5cclxuXHJcbiAgICAgIDx0ciAqbmdGb3I9XCJsZXQgZGF0YSBvZiBiYXNpY1RhYmxlLmRhdGE7aW5kZXggYXMgaVwiIGNsYXNzPVwidC10clwiIChjbGljayk9XCJzZWxlY3RSb3coZGF0YSxpKVwiXHJcbiAgICAgICAgICBbbmdTdHlsZV09XCJ7J2NvbG9yJzppc1Nob3dDb2xvcihkYXRhKX1cIlxyXG4gICAgICAgICAgW25nQ2xhc3NdPVwieydzZWxlY3RlZCc6IGkgPT0gY3VyQ2hlY2tlZH1cIiAoZGJsY2xpY2spPVwiZGJjbGlja0RhdGEoZGF0YSxpKVwiPlxyXG5cclxuICAgICAgICA8dGQgW256QnJlYWtXb3JkXT1cInRydWVcIiBbbnpMZWZ0XT1cInRydWVcIlxyXG4gICAgICAgICAgICBjbGFzcz1cImxlZnQtemluZGV4XCJcclxuICAgICAgICAgICAgKm5nSWY9XCJxdWVyeU9wdHMuY2hlY2tCb3g/LmlzU2hvd0NoZWNrYm94XCJcclxuICAgICAgICAgICAgbnpTaG93Q2hlY2tib3hcclxuICAgICAgICAgICAgWyhuekNoZWNrZWQpXT1cIm1hcE9mQ2hlY2tlZElkW2RhdGEuaWRdXCJcclxuICAgICAgICAgICAgKG56Q2hlY2tlZENoYW5nZSk9XCJyZWZyZXNoU3RhdHVzKClcIlxyXG4gICAgICAgID48L3RkPlxyXG4gICAgICAgIDx0ZCBbbnpCcmVha1dvcmRdPVwidHJ1ZVwiIFtuekxlZnRdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgIGNsYXNzPVwibGVmdC16aW5kZXhcIlxyXG4gICAgICAgICAgICAqbmdJZj1cInF1ZXJ5T3B0cy5jaGVja0JveD8uaXNSYWRpb1wiIG56U2hvd0NoZWNrYm94IChuekNoZWNrZWRDaGFuZ2UpPVwic2VsZWN0Um93KGRhdGEsaSlcIlxyXG4gICAgICAgICAgICBbKG56Q2hlY2tlZCldPVwibWFwT2ZDaGVja2VkSWRbZGF0YS5pZF1cIj48L3RkPlxyXG4gICAgICAgIDx0ZCBbbnpCcmVha1dvcmRdPVwidHJ1ZVwiIFtuekxlZnRdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICpuZ0lmPVwicXVlcnlPcHRzLmlzSW5kZXhcIiBuekFsaWduPVwiY2VudGVyXCIgc3R5bGU9XCJwYWRkaW5nOjEycHggMDtcIiBuekJyZWFrV29yZD57e2kgKyAxfX08L3RkPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgcXVlcnlPcHRzLnRhYmxlcztcIj5cclxuXHJcbiAgICAgICAgICA8dGQgW256QnJlYWtXb3JkXT1cInRydWVcIiBbbnpMZWZ0XT1cIml0ZW0uaXNMZWZ0ID8gdHJ1ZSA6IGZhbHNlXCJcclxuICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7J2xlZnQtemluZGV4JzppdGVtLmlzTGVmdCA/IHRydWUgOiBmYWxzZX1cIlxyXG4gICAgICAgICAgICAgIFtuelJpZ2h0XT1cIml0ZW0uaXNSaWdodCA/IHRydWUgOiBmYWxzZVwiXHJcbiAgICAgICAgICAgICAgbnpCcmVha1dvcmRcclxuICAgICAgICAgICAgICBbcm93U3Bhbl09XCJjaGVja1Jvd1NwYW4oaXRlbSxkYXRhKVwiXHJcbiAgICAgICAgICAgICAgKm5nSWY9XCJjaGVja1Nob3dUZChpdGVtLGkpIFwiPlxyXG4gICAgICAgICAgICA8YXBwLXRhYmxlLXRkIFtkYXRhXT1cImRhdGFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtpdGVtXT1cIml0ZW1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtpXT1cImlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChkb0FjdGlvbkJ5Um93QWN0aW9uKT1cImRvQWN0aW9uQnlSb3cyKCRldmVudClcIlxyXG4gICAgICAgICAgICA+PC9hcHAtdGFibGUtdGQ+XHJcbiAgICAgICAgICA8L3RkPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L3RyPlxyXG5cclxuICAgICAgPC90Ym9keT5cclxuICAgICAgPHRib2R5ICpuZ0lmPVwiYWxsb3dEcmFnXCIgY2RrRHJvcExpc3QgKGNka0Ryb3BMaXN0RHJvcHBlZCk9XCJkcm9wKCRldmVudClcIj5cclxuICAgICAgPHRyIGNka0RyYWcgKm5nRm9yPVwibGV0IGRhdGEgb2YgYmFzaWNUYWJsZS5kYXRhO2luZGV4IGFzIGlcIiBjbGFzcz1cInQtdHJcIiAoY2xpY2spPVwic2VsZWN0Um93KGRhdGEsaSlcIlxyXG4gICAgICAgICAgW25nQ2xhc3NdPVwieydzZWxlY3RlZCc6IGkgPT0gY3VyQ2hlY2tlZH1cIj5cclxuICAgICAgICA8dGQgW256QnJlYWtXb3JkXT1cInRydWVcIiBbbnpMZWZ0XT1cInRydWVcIlxyXG4gICAgICAgICAgICBjbGFzcz1cImxlZnQtemluZGV4XCJcclxuICAgICAgICAgICAgKm5nSWY9XCJxdWVyeU9wdHMuY2hlY2tCb3g/LmlzU2hvd0NoZWNrYm94XCJcclxuICAgICAgICAgICAgbnpTaG93Q2hlY2tib3hcclxuICAgICAgICAgICAgWyhuekNoZWNrZWQpXT1cIm1hcE9mQ2hlY2tlZElkW2RhdGEuaWRdXCJcclxuICAgICAgICAgICAgKG56Q2hlY2tlZENoYW5nZSk9XCJyZWZyZXNoU3RhdHVzKClcIlxyXG4gICAgICAgID48L3RkPlxyXG4gICAgICAgIDwhLS1cclxuICAgICAgICAgICAgICAgICAgPHRkIFtuekJyZWFrV29yZF09XCJ0cnVlXCIgW256TGVmdF09XCJpdGVtLmlzTGVmdCA/IHRydWUgOiBmYWxzZVwiIFtuZ0NsYXNzXT1cInsnbGVmdC16aW5kZXgnOml0ZW0uaXNMZWZ0ID8gdHJ1ZSA6IGZhbHNlfVwiICAgW256UmlnaHRdPVwiaXRlbS5pc1JpZ2h0ID8gdHJ1ZSA6IGZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwicXVlcnlPcHRzLmlzU2hvd0NoZWNrYm94XCJcclxuICAgICAgICAgICAgICAgICAgICAgIG56U2hvd0NoZWNrYm94XHJcbiAgICAgICAgICAgICAgICAgICAgICBbKG56Q2hlY2tlZCldPVwibWFwT2ZDaGVja2VkSWRbZGF0YS5pZF1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgKG56Q2hlY2tlZENoYW5nZSk9XCJyZWZyZXNoU3RhdHVzKClcIlxyXG4gICAgICAgICAgICAgICAgICA+PC90ZD5cclxuICAgICAgICAtLT5cclxuICAgICAgICA8dGQgW256QnJlYWtXb3JkXT1cInRydWVcIiBbbnpMZWZ0XT1cInRydWVcIlxyXG4gICAgICAgICAgICBjbGFzcz1cImxlZnQtemluZGV4XCJcclxuICAgICAgICAgICAgKm5nSWY9XCJxdWVyeU9wdHMuY2hlY2tCb3g/LmlzUmFkaW9cIiBuelNob3dDaGVja2JveCAobnpDaGVja2VkQ2hhbmdlKT1cInNlbGVjdFJvdyhkYXRhLGkpXCJcclxuICAgICAgICAgICAgWyhuekNoZWNrZWQpXT1cIm1hcE9mQ2hlY2tlZElkW2RhdGEuaWRdXCI+PC90ZD5cclxuICAgICAgICA8dGQgW256QnJlYWtXb3JkXT1cInRydWVcIiBbbnpMZWZ0XT1cInRydWVcIlxyXG4gICAgICAgICAgICBjbGFzcz1cImxlZnQtemluZGV4XCJcclxuICAgICAgICAgICAgKm5nSWY9XCJxdWVyeU9wdHMuaXNJbmRleFwiIG56QWxpZ249XCJjZW50ZXJcIiBzdHlsZT1cInBhZGRpbmc6MTJweCAwO1wiIG56QnJlYWtXb3JkPnt7aSArIDF9fTwvdGQ+XHJcblxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgcXVlcnlPcHRzLnRhYmxlcztcIj5cclxuXHJcbiAgICAgICAgICA8dGQgW256QnJlYWtXb3JkXT1cInRydWVcIiBbbnpMZWZ0XT1cIml0ZW0uaXNMZWZ0ID8gdHJ1ZSA6IGZhbHNlXCJcclxuICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7J2xlZnQtemluZGV4JzppdGVtLmlzTGVmdCA/IHRydWUgOiBmYWxzZX1cIlxyXG4gICAgICAgICAgICAgIFtuelJpZ2h0XT1cIml0ZW0uaXNSaWdodCA/IHRydWUgOiBmYWxzZVwiXHJcbiAgICAgICAgICAgICAgbnpCcmVha1dvcmRcclxuICAgICAgICAgICAgICBbcm93U3Bhbl09XCJjaGVja1Jvd1NwYW4oaXRlbSxkYXRhKVwiXHJcbiAgICAgICAgICAgICAgKm5nSWY9XCJjaGVja1Nob3dUZChpdGVtLGkpIFwiPlxyXG4gICAgICAgICAgICA8YXBwLXRhYmxlLXRkIFtkYXRhXT1cImRhdGFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtpdGVtXT1cIml0ZW1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtpXT1cImlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChkb0FjdGlvbkJ5Um93QWN0aW9uKT1cImRvQWN0aW9uQnlSb3cyKCRldmVudClcIlxyXG4gICAgICAgICAgICA+PC9hcHAtdGFibGUtdGQ+XHJcbiAgICAgICAgICA8L3RkPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L3RyPlxyXG4gICAgICA8L3Rib2R5PlxyXG5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuXHJcbiAgICA8bmctdGVtcGxhdGUgI3RvdGFsVGVtcGxhdGUgbGV0LXRvdGFsPuWFsSB7eyB0b3RhbCB9fSDmnaHorrDlvZU8L25nLXRlbXBsYXRlPlxyXG4gIDwvbnotdGFibGU+XHJcbiAgPG56LWRyb3Bkb3duLW1lbnUgI21lbnU9XCJuekRyb3Bkb3duTWVudVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cInRhYmVsLWNvbHVubW5cIj5cclxuICAgICAgPG56LWNoZWNrYm94LXdyYXBwZXIgc3R5bGU9XCJ3aWR0aDogMTAwJTttYXJnaW4tdG9wOiAzMHB4O1wiIChuek9uQ2hhbmdlKT1cImxvZygkZXZlbnQpXCI+XHJcbiAgICAgICAgPGRpdiBuei1yb3c+XHJcbiAgICAgICAgICA8ZGl2IG56LWNvbCBuelNwYW49XCIyNFwiICpuZ0Zvcj1cImxldCBpdGVtIG9mIHF1ZXJ5T3B0cy50YWJsZXNcIj5cclxuICAgICAgICAgICAgPGxhYmVsIG56LWNoZWNrYm94IG56VmFsdWU9XCJ7e2l0ZW0ua2V5fX1cIiBbbmdNb2RlbF09XCJpdGVtLmlzU2hvd1wiPnt7aXRlbS5uYW1lfX08L2xhYmVsPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvbnotY2hlY2tib3gtd3JhcHBlcj5cclxuICAgICAgPGRpdiBjbGFzcz1cInRhYmVsLWNvbHVubW4taGVhZGVyXCI+6K+36YCJ5oup5YiX6KGo5pi+56S65YaF5a65PC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L256LWRyb3Bkb3duLW1lbnU+XHJcbjwvZGl2PlxyXG5cclxuIl19