@annalib/anna-core 15.0.24 → 15.0.25

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.
@@ -145,7 +145,7 @@ export class AnnaNonEditableGenericTableComponent {
145
145
  this.cdRef.detectChanges();
146
146
  }
147
147
  setTableBottomBorder() {
148
- if (this.tableBorderBottomClassRequired && this.tableData && this.tableData.length && this.maximumRowsWhichCanBeRenderedWithoutScroll <= this.tableData.length) {
148
+ if (this.tableBorderBottomClassRequired && this.tableData && this.tableData.length && this.maximumRowsWhichCanBeRenderedWithoutScroll < this.tableData.length) {
149
149
  this.tableBottomBorderClass = 'bottom-border';
150
150
  }
151
151
  else {
@@ -1967,4 +1967,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
1967
1967
  type: ViewChildren,
1968
1968
  args: ['tableHeader']
1969
1969
  }] } });
1970
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5uYS1ub24tZWRpdGFibGUtZ2VuZXJpYy10YWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbm5hLWNvcmUvc3JjL2xpYi9hbm5hLWdlbmVyaWMtdGFibGUtbGliL2NvbXBvbmVudHMvYW5uYS1ub24tZWRpdGFibGUtZ2VuZXJpYy10YWJsZS9hbm5hLW5vbi1lZGl0YWJsZS1nZW5lcmljLXRhYmxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FubmEtY29yZS9zcmMvbGliL2FubmEtZ2VuZXJpYy10YWJsZS1saWIvY29tcG9uZW50cy9hbm5hLW5vbi1lZGl0YWJsZS1nZW5lcmljLXRhYmxlL2FubmEtbm9uLWVkaXRhYmxlLWdlbmVyaWMtdGFibGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsNEJBQTRCO0FBQzVCLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBNEIsaUJBQWlCLEVBQWdDLHVCQUF1QixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTVNLGdDQUFnQztBQUNoQyxPQUFPLEtBQUssTUFBTSxPQUFPLENBQUM7QUFFMUIsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFLbEUsT0FBTyxFQUFFLHlCQUF5QixFQUFlLE1BQU0sc0VBQXNFLENBQUM7QUFHOUgsT0FBTyxFQUFZLFlBQVksRUFBRSxNQUFNLHNEQUFzRCxDQUFDO0FBQzlGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxZQUFZLEVBQUUsTUFBTSx5REFBeUQsQ0FBQztBQUN6RyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMERBQTBELENBQUM7QUFDM0YsT0FBTyxFQUFFLGlC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YXIgaW1wb3J0IHN0YXRlbWVudHNcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIElucHV0LCBWaWV3Q2hpbGRyZW4sIFF1ZXJ5TGlzdCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIFNpbXBsZUNoYW5nZXMsIE9uQ2hhbmdlcywgQ2hhbmdlRGV0ZWN0b3JSZWYsIEVsZW1lbnRSZWYsIEFmdGVyVmlld0NoZWNrZWQsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG4vLyBUaGlyZCBwYXJ0eSBpbXBvcnQgc3RhdGVtZW50c1xyXG5pbXBvcnQgZGF5anMgZnJvbSBcImRheWpzXCI7XHJcbmltcG9ydCB7IE9wdGlvbnMgfSBmcm9tICdAYW5ndWxhci1zbGlkZXIvbmd4LXNsaWRlcic7XHJcbmltcG9ydCB7IGNsb25lRGVlcCwgaXNFcXVhbCwgbWFwLCB1bmlxLCBzb3J0QnkgfSBmcm9tIFwibG9kYXNoLWVzXCI7XHJcblxyXG5cclxuLy9zdWItZW50cmllcyBvZiBhbm5hIGxpYiBpbXBvcnQgc3RhdGVtZW50XHJcbmltcG9ydCB7IElHdEdlbmVyYWxDb25maWcsIElHdFRhYmxlSGVhZGVyLCBJSGVhZGVySW5mbywgSVRvdGFsUm93SW5mbyB9IGZyb20gJy4uLy4uLy4uL2FubmEtY29yZS1zaGFyZWQtbGliL21vZGVscy9hbm5hLW5vbi1lZGl0YWJsZS1ndC1tb2RlbHMnO1xyXG5pbXBvcnQgeyBBbm5hRGF0ZVRpbWVGb3JtYXRTZXJ2aWNlLCBOZ2JEYXRlVHlwZSB9IGZyb20gJy4uLy4uLy4uL2FubmEtY29yZS1zaGFyZWQtbGliL3NlcnZpY2VzL2FubmEtZGF0ZS10aW1lLWZvcm1hdC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgSVdlZWtDYWxlbmRhciB9IGZyb20gJy4uLy4uLy4uL2FubmEtY29yZS1zaGFyZWQtbGliL21vZGVscy9hbm5hLWdsb2JhbC1kcm9wZG93bi1jb25maWcubW9kZWwnO1xyXG5pbXBvcnQgeyBHdENvbHVtbkljb25FbWl0dGVkRGF0YSwgUmF0aW5nU2VsbGVyR3JvdXBIaWVyYXJjaHksICB9IGZyb20gJy4uLy4uLy4uL2FubmEtY29yZS1zaGFyZWQtbGliL21vZGVscy9hbm5hLWdlbmVyaWMtZGF0YS10eXBlLm1vZGVsJztcclxuaW1wb3J0IHsgU29ydFR5cGUsIFNvcnRUeXBlRW51bSB9IGZyb20gJy4uLy4uLy4uL2FubmEtY29yZS1zaGFyZWQtbGliL21vZGVscy9hbm5hLXNvcnQubW9kZWwnO1xyXG5pbXBvcnQgeyByYWRpb0J1dHRvbk1vZGVsLCBUb29sdGlwTW9kZWwgfSBmcm9tICcuLi8uLi8uLi9hbm5hLWNvcmUtc2hhcmVkLWxpYi9tb2RlbHMvYW5uYS10b29sdGlwLm1vZGVsJztcclxuaW1wb3J0IHsgQW5uYVNvcnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vYW5uYS1jb3JlLXNoYXJlZC1saWIvc2VydmljZXMvYW5uYS1zb3J0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBbm5hRmlsdGVyU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2FubmEtY29yZS1zaGFyZWQtbGliL3NlcnZpY2VzL2FubmEtZmlsdGVyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgVXNlckFjdGl2YXRpb25TdGF0dXMgfSBmcm9tICcuLi8uLi8uLi9hbm5hLWNvcmUtc2hhcmVkLWxpYi9tb2RlbHMvYW5uYS1tYW5hZ2UtdXNlcnMubW9kZWwnO1xyXG5cclxuaW50ZXJmYWNlIGtleVZhbHVlVG9vbHRpcFR5cGUgeyBrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZyB9O1xyXG5pbnRlcmZhY2UgdGFibGVUb29sdGlwVHlwZSB7IHRvb2x0aXBUYWJsZUhlYWRlcjogc3RyaW5nW10sIHRvb2x0aXBUYWJsZUJvZHk6IHN0cmluZ1tdW10sIHRhYmxlSGVhZGVyTXNnOiBzdHJpbmdbXSwgdGFibGVGb290ZXJNc2c6IHN0cmluZ1tdIH1cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYW5uYS1jb3JlLW5vbi1lZGl0YWJsZS1nZW5lcmljLXRhYmxlLWxpYicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2FubmEtbm9uLWVkaXRhYmxlLWdlbmVyaWMtdGFibGUuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2FubmEtbm9uLWVkaXRhYmxlLWdlbmVyaWMtdGFibGUuY29tcG9uZW50LnNjc3MnXSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQW5uYU5vbkVkaXRhYmxlR2VuZXJpY1RhYmxlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIEFmdGVyVmlld0NoZWNrZWQge1xyXG5cclxuICBASW5wdXQoKSBzaG93U2tlbGV0b25Mb2FkaW5nOiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIHRhYmxlSGVhZGVyczogSUd0VGFibGVIZWFkZXJbXTtcclxuICBASW5wdXQoKSB0YWJsZURhdGE6IGFueVtdO1xyXG4gIEBJbnB1dCgpIGNsb25lZFRhYmxlRGF0YTogYW55W107XHJcbiAgQElucHV0KCkgZ3RHZW5lcmFsQ29uZmlnOiBJR3RHZW5lcmFsQ29uZmlnO1xyXG4gIEBJbnB1dCgpIHRvdGFsUm93SW5mbz86IElUb3RhbFJvd0luZm9bXTtcclxuICBASW5wdXQoKSBndERpbWVuc2lvbjogeyByb3dIZWlnaHQ6IG51bWJlciwgaGVhZGVySGVpZ2h0OiBudW1iZXIsIGRhdGFPblRvcEhlaWdodDogbnVtYmVyLCBtYXJnaW5Gcm9tQm90dG9tOiBudW1iZXIsIHRhYmxlSGVpZ2h0Pzogc3RyaW5nfTtcclxuICBASW5wdXQoKSB0YWJsZUNsYXNzOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgbWF4aW11bVJvd3NXaGljaENhbkJlUmVuZGVyZWRXaXRob3V0U2Nyb2xsOiBudW1iZXIgPSA1O1xyXG4gIEBJbnB1dCgpIGxpbWl0OiBudW1iZXIgPSAzMDsgXHJcbiAgQElucHV0KCkgaW5jbHVkZUJvcmRlckluVGFibGVIZWlnaHQ6IGJvb2xlYW4gPSB0cnVlOyBcclxuICBASW5wdXQoKSBkb3dubG9hZEluUHJvZ3Jlc3M6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgcGVyY2VudERvbmU6IG51bWJlcjtcclxuICBASW5wdXQoKSBzdGFycmVkSW5Qcm9ncmVzczogYm9vbGVhbjtcclxuICBASW5wdXQoKSBjbGlja2FibGVSb3c6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBzZXRUYWJsZUhlaWdodFdoZW5Sb3dTaXplSXNGaXhlZDogYm9vbGVhbiA9IHRydWU7XHJcbiAgQElucHV0KCkgdGFibGVCb3JkZXJCb3R0b21DbGFzc1JlcXVpcmVkOiBib29sZWFuID0gdHJ1ZTtcclxuICBASW5wdXQoKSBoaWRlU29tZVRkczogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHRkc0hhdmVSb3dTcGFuOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIEBPdXRwdXQoKSB0b2dnbGVDaGVja2JveCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgdG9nZ2xlUm93Q2hlY2tib3ggPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIHRvZ2dsZUhlYWRlckNoZWNrYm94ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSB1bmRvSWNvbkNsaWNrZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGZpbHRlckFwcGxpZWRUb1RhYmxlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBzb3J0aW5nQXBwbGllZFRvVGFibGUgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIHJvd0NsaWNrZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIHJhZGlvQnV0dG9uU2VsZWN0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGNvbHVtbkZpbHRlck9wZW5lZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgY29sdW1uRmlsdGVyQ2xvc2VkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBndEljb25DbGlja2VkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBndFNWR0ljb25DbGlja2VkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBndFRleHRBY3Rpb25DbGlja2VkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBndFZpZXdEZXRhaWxDbGlja2VkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBkb3dubG9hZFNwb3REZXRhaWxzID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBjbGlja2FibGVEYXRhQ2xpY2tlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgdG90YWxSb3dJY29uQ2xpY2tlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgbm90aWZpY2F0aW9uSWNvbkhvdmVyID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBub3RpZmljYXRpb25JY29uSG92ZXJMZWF2ZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgZWRpdGFibGVJbnB1dEVkaXRlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgbnVtYmVyT2ZTa2VsZXRvblJvd3M6IG51bWJlcltdW10gPSBBcnJheSgyMCkuZmlsbCgwKTtcclxuICB0YWJsZURhdGFXcmFwcGVyOiBhbnlbXTtcclxuICByb3dDaGVja2VkOiBib29sZWFuO1xyXG4gIGlzQWxsUm93c0NoZWNrZWQ6IGJvb2xlYW47XHJcbiAgbm9EYXRhV2lkdGg6IHN0cmluZyA9IFwiNTAlXCI7XHJcbiAgbWFya2VkRm9yQ3JlZGl0U3RhdHVzOiBzdHJpbmc7XHJcbiAgbWFya2VkRm9yTUdTdGF0dXM6IHN0cmluZztcclxuXHJcbiAgLy9Tb3J0IGFuZCBGaWx0ZXJcclxuICB0b29sVGlwZGF0YTogYW55O1xyXG4gIHRlbXBUb29sdGlwRGF0YTogYW55O1xyXG4gIHRvb2x0aXBSYWRpb1RleHRNYXA6IE1hcDxhbnksIGFueT47XHJcbiAgZmlsdGVyVGFiT2JqZWN0czogYW55W107XHJcbiAgdG9vbHRpcDogYW55O1xyXG4gIGNsb25lZFRvb2x0aXBEYXRhOiBhbnk7XHJcbiAgY2xvbmVkVG9vbHRpcFNlbGVjdGVkTWFwRGF0YTogYW55O1xyXG4gIHNlYXJjaEJhcjogc3RyaW5nO1xyXG4gIGRpc2FibGVDbGVhckFsbEJ0bjogYm9vbGVhbiA9IHRydWU7XHJcbiAgZGlzYWJsZUNvbHVtbkNsZWFyQWxsQnRuOiBib29sZWFuID0gdHJ1ZTtcclxuICBhbGxTZWxlY3RlZCA9IDA7XHJcbiAgc2hvd0FsbDogYm9vbGVhbjtcclxuICBkaXNhYmxlQ2hlY2tib3hBcHBseTogYm9vbGVhbjtcclxuICBkaXNhYmxlU2xpZGVyQXBwbHlCdXR0b246IGJvb2xlYW47XHJcbiAgZGlzYWJsZVRpbWVBcHBseUJ1dHRvbjogYm9vbGVhbjtcclxuICBtYXJnaW4gPSA1O1xyXG5cclxuXHJcbiAgLy8gU2xpZGVyIEZpbHRlclxyXG4gIHNsaWRlck1pblZhbHVlOiBudW1iZXI7XHJcbiAgc2xpZGVyTWF4VmFsdWU6IG51bWJlcjtcclxuICBvcHRpb25zOiBPcHRpb25zID0ge1xyXG4gICAgZmxvb3I6IDAsXHJcbiAgICBjZWlsOiAwLFxyXG4gICAgc3RlcDogMC4wMVxyXG4gIH07XHJcbiAgc2xpZGVyVmFsdWU6IHsgbWluOiBudW1iZXIsIG1heDogbnVtYmVyIH07XHJcbiAgc2xpZGVyRmlsdGVyVGV4dEJveFN0ZXA6IHN0cmluZztcclxuICBzbGlkZXJFbnRlcmVkTWluVmFsdWU6IG51bWJlcjtcclxuICBzbGlkZXJFbnRlcmVkTWF4VmFsdWU6IG51bWJlcjtcclxuXHJcbiAgLy8gQ2FsZW5kYXIgRmlsdGVyXHJcbiAgY2FsZW5kYXJNaW5FbmFibGVkRGF0ZTogTmdiRGF0ZVR5cGU7XHJcbiAgY2FsZW5kYXJNYXhFbmFibGVkRGF0ZTogTmdiRGF0ZVR5cGU7XHJcbiAgc2VsZWN0ZWRNaW5EYXRlOiBOZ2JEYXRlVHlwZTtcclxuICBzZWxlY3RlZE1heERhdGU6IE5nYkRhdGVUeXBlO1xyXG5cclxuICAvL1dlZWsgRmlsdGVyXHJcbiAgbXVsdGlXZWVrUGlja2VyQ29uZmlnOiBJV2Vla0NhbGVuZGFyO1xyXG5cclxuICAvL1RpbWUgRmlsdGVyXHJcbiAgc2VsZWN0ZWRGcm9tVGltZTogYW55W107XHJcbiAgc2VsZWN0ZWRUb1RpbWU6IGFueVtdO1xyXG4gIGNsb25lZFNlbGVjdGVkRnJvbVRpbWU6IGFueTtcclxuICBjbG9uZWRTZWxlY3RlZFRvVGltZTogYW55O1xyXG4gIGRpc2FibGVUaW1lRmlsdGVyQXBwbHlCdG46IGJvb2xlYW47XHJcbiAgdGFibGVDb2x1bW5zOiBzdHJpbmdbXSA9IFtdO1xyXG4gIHRvdGFsUm93Q29sdW1uczogc3RyaW5nW10gPSBudWxsO1xyXG4gIHNob3dNdWx0aVRpbWVDaGVja2JveDogYm9vbGVhbjtcclxuICBzaG93WmVyb1RpbWVDaGVja2JveDogYm9vbGVhbjtcclxuICBzaG93RW50ZXJUaW1lQ2hlY2tib3g6IGJvb2xlYW47XHJcbiAgbXVsdGlUaW1lQ2hlY2tib3hDaGVja2VkOiBib29sZWFuO1xyXG4gIHplcm9UaW1lQ2hlY2tib3hDaGVja2VkOiBib29sZWFuO1xyXG4gIGVudGVyVGltZUNoZWNrYm94Q2hlY2tlZDogYm9vbGVhbjtcclxuICBiaW5kVmFsdWVGdW5jQ2FsbGVkOiBib29sZWFuO1xyXG5cclxuICBoaWVyYXJjaHlUb29sdGlwOiB7IG9wZW46ICgpID0+IHZvaWQ7IGNsb3NlOiAoKSA9PiB2b2lkOyB9O1xyXG4gIHNlbGxlckdyb3VwSGllcmFyY2h5OiBSYXRpbmdTZWxsZXJHcm91cEhpZXJhcmNoeVtdO1xyXG4gIHNob3dGaWx0ZXJUb29sdGlwVGFiczogYm9vbGVhbjsgLy9DaGFuZ2UgdGhlIE5hbWVcclxuXHJcbiAgaXNTY3JvbGxlZExlZnQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICByb3dCb3JkZXJXaWR0aDogbnVtYmVyID0gMjtcclxuICBcclxuICBzaG93U29ydENvbXBvbmVudDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHNob3dGaWx0ZXJDb21wb25lbnQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICB0ZW1wU29ydE9yZGVyOiBTb3J0VHlwZSA9IG51bGw7XHJcbiAgICBcclxuICB0b29sdGlwT3B0aW9uczogVG9vbHRpcE1vZGVsW107XHJcbiAgY2xvbmVkVG9vbHRpcE9wdGlvbnM6IFRvb2x0aXBNb2RlbFtdO1xyXG4gIGRpc2FibGVTZWxlY3RBbGw6IGJvb2xlYW47XHJcbiAgZGlzYWJsZUNsZWFyQWxsOiBib29sZWFuO1xyXG4gIHNlYXJjaEl0ZW06IHN0cmluZztcclxuXHJcbiAgZGlzYWJsZUNhbGVuZGFyQXBwbHlCdG46IGJvb2xlYW47XHJcbiAgY2FsZW5kYXJTZWxlY3Rpb246IGFueSA9IHtmcm9tRGF0ZTogbnVsbCAsIHRvRGF0ZTogbnVsbH07XHJcblxyXG4gIHNob3dTbGlkZXJNaW5WYWx1ZUVycm9yOiBib29sZWFuO1xyXG4gIHNob3dTbGlkZXJNYXhWYWx1ZUVycm9yOiBib29sZWFuO1xyXG4gIGlzTWluVGV4dEJveEVtcHR5OiBib29sZWFuO1xyXG4gIGlzTWF4VGV4dEJveEVtcHR5OiBib29sZWFuO1xyXG4gIHNlbGVjdGVkTGFiZWw6IHN0cmluZztcclxuXHJcbiAgc3RhcnRUaW1lSG91ckVycjogYm9vbGVhbjtcclxuICBzdGFydFRpbWVNaW5FcnI6IGJvb2xlYW47XHJcbiAgZW5kVGltZUhvdXJFcnI6IGJvb2xlYW47XHJcbiAgZW5kVGltZU1pbkVycjogYm9vbGVhbjtcclxuXHJcbiAgc2FtZVRvb2x0aXBDbGlja2VkOiBib29sZWFuO1xyXG4gIG1hcmdpblRvcDogc3RyaW5nID0gXCJcIjtcclxuICBAVmlld0NoaWxkcmVuKCd0YWJsZUhlYWRlcicpIHZpZXdDaGlsZFRhYmxlSGVhZGVyczogUXVlcnlMaXN0PEVsZW1lbnRSZWY+O1xyXG5cclxuICBzZWxlY3RlZENoZWNrYm94T3B0aW9uc0NvdW50OiBudW1iZXI7XHJcbiAgaXNGaWx0ZXJDaGFuZ2VkOiBib29sZWFuO1xyXG4gIGlzU29ydENoYW5nZWQ6IGJvb2xlYW47XHJcbiAgaXNEaWZmZXJlbmNlTGVzc1RoYW4yNVBlcmNlbnQ6IGJvb2xlYW47XHJcbiAgaW5jb3JyZWN0U2xpZGVySW5wdXQ6IGJvb2xlYW47XHJcbiAgc3RhcnQ6IG51bWJlciA9IDA7XHJcbiAgZW5kOiBudW1iZXIgPSB0aGlzLmxpbWl0ICsgdGhpcy5zdGFydDtcclxuICByZW5kZXJlZERhdGE6IGFueVtdOyBcclxuICBzZWxlY3RlZEludmVudG9yeUlkRm9yRG93bmxvYWQ6IG51bWJlcjtcclxuICBzZWxlY3RlZERlbW9ncmFwaGljRm9yRG93bmxvYWQ6IGFueTtcclxuICBzZWxlY3RlZFJvd1R5cGVGb3JEb3dubG9hZDogc3RyaW5nO1xyXG4gIGhlaWdodE9mQ2hlY2tib3hUb29sdGlwRmlsdGVyOiBudW1iZXI7XHJcbiAgaXNOb0RhdGFUb0Rpc3BsYXlTdWJqZWN0JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xyXG4gIHNlbGVjdGVkU3RhcnJlZE9yZGVySWQ6IHN0cmluZztcclxuICBVc2VyQWN0aXZhdGlvblN0YXR1cyA9IFVzZXJBY3RpdmF0aW9uU3RhdHVzO1xyXG4gIHRleHRBY3Rpb25Ub29sdGlwOiBrZXlWYWx1ZVRvb2x0aXBUeXBlW10gPSBbXTtcclxuICB0b29sdGlwQ29udGFpbmluZ1RhYmxlOiB0YWJsZVRvb2x0aXBUeXBlID0gbnVsbDtcclxuICBzaG93RW1wdHlTcGFjZUZvclNsaWRlcjogYm9vbGVhbjsgXHJcbiAgdGFibGVCb3R0b21Cb3JkZXJDbGFzczogc3RyaW5nID0gbnVsbDtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGNkUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgIHByaXZhdGUgYW5uYVNvcnRTZXJ2aWNlOiBBbm5hU29ydFNlcnZpY2UsXHJcbiAgICBwdWJsaWMgYW5uYURhdGVUaW1lRm9ybWF0U2VydmljZTogQW5uYURhdGVUaW1lRm9ybWF0U2VydmljZSxcclxuICAgIHB1YmxpYyBhbm5hRmlsdGVyU2VydmljZTogQW5uYUZpbHRlclNlcnZpY2VcclxuICApIHtcclxuICAgIHRoaXMuc2V0VG9vbHRpcFJhZGlvTmFtZXMoKTtcclxuICB9XHJcbiAgXHJcbiAgbmdBZnRlclZpZXdDaGVja2VkKCk6IHZvaWQge1xyXG4gICAgdGhpcy5zZXRNYXJnaW5MZWZ0Rm9yRmlsdGVySWNvbigpOyAgICBcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xyXG4gICAgY29uc29sZS5sb2coXCJjaGFuZ2VzIDpcIixjaGFuZ2VzKVxyXG4gICAgY29uc29sZS5sb2coXCJ0YWJsZSBoZWFkZXJzIDpcIix0aGlzLnRhYmxlSGVhZGVycylcclxuICAgIGlmKGNoYW5nZXMgJiYgY2hhbmdlc1tcImd0RGltZW5zaW9uXCJdICYmIGNoYW5nZXNbXCJndERpbWVuc2lvblwiXS5jdXJyZW50VmFsdWUgJiYgdGhpcy5zZXRUYWJsZUhlaWdodFdoZW5Sb3dTaXplSXNGaXhlZCl7XHJcbiAgICAgIHRoaXMuc2V0VGFibGVIZWlnaHQoKTtcclxuICAgICAgdGhpcy5zZXRUYWJsZUJvdHRvbUJvcmRlcigpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuc2hvd1NrZWxldG9uTG9hZGluZykge1xyXG4gICAgICB0aGlzLnRhYmxlRGF0YSA9IHRoaXMubnVtYmVyT2ZTa2VsZXRvblJvd3M7XHJcbiAgICAgIHRoaXMucmVuZGVyZWREYXRhID0gdGhpcy5udW1iZXJPZlNrZWxldG9uUm93cztcclxuICAgICAgdGhpcy5pc05vRGF0YVRvRGlzcGxheVN1YmplY3QkLm5leHQoZmFsc2UpO1xyXG4gICAgICB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmluaXRpYWxWYWx1ZU1hcCA9IG5ldyBNYXAoKTtcclxuICAgICAgdGhpcy5zZXRUYWJsZUJvdHRvbUJvcmRlcigpO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZihjaGFuZ2VzW1wicGVyY2VudERvbmVcIl0gfHwgY2hhbmdlc1tcImRvd25sb2FkSW5Qcm9ncmVzc1wiXSB8fCAoIGNoYW5nZXNbXCJzdGFycmVkSW5Qcm9ncmVzc1wiXSAmJiBjaGFuZ2VzW1wic3RhcnJlZEluUHJvZ3Jlc3NcIl0uY3VycmVudFZhbHVlICE9IHVuZGVmaW5lZCApKXtcclxuICAgICAgLy9ubyB0YXNrIHdpbGwgYmUgcGVyZm9ybWVkXHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgdGhpcy5zZXRJbml0aWFsUm93c0ZvclRhYmxlKCk7XHJcbiAgICAgIHRoaXMuZGlzYWJsZUVuYWJsZUVhY2hDb2x1bW5Ub29sdGlwSWNvbigpO1xyXG4gICAgICB0aGlzLnRhYmxlQ29sdW1ucyA9IHRoaXMudGFibGVIZWFkZXJzLmZpbHRlcih4ID0+IHgudmlzaWJsZSkubWFwKHggPT4geC5oZWFkZXJJbmZvWzBdLm9iamVjdEtleSk7XHJcbiAgICAgIGlmKCAodGhpcy50YWJsZURhdGEgJiYgdGhpcy50YWJsZURhdGEubGVuZ3RoID09IDApIHx8ICh0aGlzLnRhYmxlRGF0YS5sZW5ndGggPT0gMiAmJiB0aGlzLmNoZWNrSWZBbGxUaGVFbGVtZW50c0FyZVplcm8oKSkpe1xyXG4gICAgICAgIHRoaXMudGFibGVEYXRhID0gQXJyYXkoMikuZmlsbCgwKTtcclxuICAgICAgICB0aGlzLnJlbmRlcmVkRGF0YSA9IGNsb25lRGVlcCh0aGlzLnRhYmxlRGF0YSk7XHJcbiAgICAgICAgdGhpcy5tYXJnaW5Ub3AgPSAoLSB0aGlzLmd0RGltZW5zaW9uLnJvd0hlaWdodCAtICh0aGlzLmd0RGltZW5zaW9uLnJvd0hlaWdodC8yKSkgKyAncHgnO1xyXG4gICAgICAgIHRoaXMuaXNOb0RhdGFUb0Rpc3BsYXlTdWJqZWN0JC5uZXh0KHRydWUpO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2V7XHJcbiAgICAgICAgdGhpcy5pc05vRGF0YVRvRGlzcGxheVN1YmplY3QkLm5leHQoZmFsc2UpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLnNob3dTa2VsZXRvbkxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgdGhpcy5zZXRUYWJsZUJvdHRvbUJvcmRlcigpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vc2V0dGluZyB0YWJsZSBjb2x1bW4gaGVyZSBhcyB3ZWxsIGJlY2F1c2Ugd2hpbGUgc2hvd2luZyBza2VsZXRvbiBsb2FkZXIsIHdlIHNob3VsZCBzaG93IHRhYmxlIGhlYWRlcnMuXHJcbiAgICBpZiAoY2hhbmdlc1sndGFibGVIZWFkZXJzJ10gJiYgIWlzRXF1YWwoY2hhbmdlc1sndGFibGVIZWFkZXJzJ10uY3VycmVudFZhbHVlLCBjaGFuZ2VzWyd0YWJsZUhlYWRlcnMnXS5wcmV2aW91c1ZhbHVlKSkge1xyXG4gICAgICB0aGlzLnRhYmxlQ29sdW1ucyA9IHRoaXMudGFibGVIZWFkZXJzLmZpbHRlcih4ID0+IHgudmlzaWJsZSkubWFwKHggPT4geC5oZWFkZXJJbmZvWzBdLm9iamVjdEtleSk7XHJcbiAgICAgIHRoaXMuYW5uYVNvcnRTZXJ2aWNlLmNvbHVtblNvcnRTdGF0ZSA9IG5ldyBNYXAoKTtcclxuICAgICAgLy8gdGhpcy5zZXRDb2x1bW5Tb3J0U3RhdGVNYXAoKTtcclxuICAgICAgdGhpcy5zZXRBY3RpdmVTdGF0ZU9iamVjdCgpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChjaGFuZ2VzWyd0b3RhbFJvd0luZm8nXSAmJiBjaGFuZ2VzWyd0b3RhbFJvd0luZm8nXS5jdXJyZW50VmFsdWUpIHtcclxuICAgICAgdGhpcy50b3RhbFJvd0NvbHVtbnMgPSB0aGlzLnRvdGFsUm93SW5mby5tYXAoeCA9PiB4LmNvbE5hbWUpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBzZXRUYWJsZUJvdHRvbUJvcmRlcigpe1xyXG4gICAgaWYodGhpcy50YWJsZUJvcmRlckJvdHRvbUNsYXNzUmVxdWlyZWQgJiYgdGhpcy50YWJsZURhdGEgJiYgdGhpcy50YWJsZURhdGEubGVuZ3RoICYmIHRoaXMubWF4aW11bVJvd3NXaGljaENhbkJlUmVuZGVyZWRXaXRob3V0U2Nyb2xsIDw9IHRoaXMudGFibGVEYXRhLmxlbmd0aCl7XHJcbiAgICAgIHRoaXMudGFibGVCb3R0b21Cb3JkZXJDbGFzcyA9ICdib3R0b20tYm9yZGVyJztcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLnRhYmxlQm90dG9tQm9yZGVyQ2xhc3MgPSBudWxsO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2hlY2tJZkFsbFRoZUVsZW1lbnRzQXJlWmVybygpe1xyXG4gICAgIHJldHVybiAhdGhpcy50YWJsZURhdGEuc29tZShpdGVtID0+IGl0ZW0gIT0gMCk7XHJcbiAgfVxyXG5cclxuICBzZXRUYWJsZUhlaWdodCgpe1xyXG4gICAgbGV0IHZpZXdwb3J0SGVpZ2h0ID0gd2luZG93LmlubmVySGVpZ2h0O1xyXG4gICAgbGV0IHJvd0hlaWdodCA9IHRoaXMuZ3REaW1lbnNpb24ucm93SGVpZ2h0O1xyXG4gICAgbGV0IGhlYWRlckhlaWdodCA9IHRoaXMuZ3REaW1lbnNpb24uaGVhZGVySGVpZ2h0O1xyXG4gICAgbGV0IGRhdGFPblRvcEhlaWdodCA9IHRoaXMuZ3REaW1lbnNpb24uZGF0YU9uVG9wSGVpZ2h0O1xyXG4gICAgbGV0IG1hcmdpbkZyb21Cb3R0b20gPSB0aGlzLmd0RGltZW5zaW9uLm1hcmdpbkZyb21Cb3R0b207XHJcblxyXG4gICAgbGV0IGhlaWdodExlZnRGb3JUYWJsZSA9IHZpZXdwb3J0SGVpZ2h0IC0gZGF0YU9uVG9wSGVpZ2h0IC0gbWFyZ2luRnJvbUJvdHRvbTtcclxuICAgIHRoaXMubWF4aW11bVJvd3NXaGljaENhbkJlUmVuZGVyZWRXaXRob3V0U2Nyb2xsID1cclxuICAgICAgICBNYXRoLmNlaWwoKGhlaWdodExlZnRGb3JUYWJsZSAtIGhlYWRlckhlaWdodCAtIHJvd0hlaWdodCkgLyByb3dIZWlnaHQpICsgMTtcclxuICAgIC8vIGxldCBhY3R1YWxUYWJsZUhlaWdodCA9IGhlaWdodExlZnRGb3JUYWJsZSAtICgoaGVpZ2h0TGVmdEZvclRhYmxlIC0gaGVhZGVySGVpZ2h0IC0gcm93SGVpZ2h0KSAlIHJvd0hlaWdodCk7XHJcbiAgICBsZXQgYWN0dWFsVGFibGVIZWlnaHQgPSB2aWV3cG9ydEhlaWdodCAtIGRhdGFPblRvcEhlaWdodCAtIG1hcmdpbkZyb21Cb3R0b207XHJcbiAgICB0aGlzLmd0RGltZW5zaW9uLnRhYmxlSGVpZ2h0ID0gYCR7YWN0dWFsVGFibGVIZWlnaHR9cHhgO1xyXG5cclxuICAgIFxyXG4gICAgdGhpcy5udW1iZXJPZlNrZWxldG9uUm93cyA9IEFycmF5KHRoaXMubWF4aW11bVJvd3NXaGljaENhbkJlUmVuZGVyZWRXaXRob3V0U2Nyb2xsKS5maWxsKDApO1xyXG4gIH1cclxuXHJcblxyXG4gIHRyYWNrQnlGbihpbmRleDogbnVtYmVyKSB7XHJcbiAgICByZXR1cm4gaW5kZXg7XHJcbiAgfVxyXG5cclxuICBzZXRUb29sdGlwUmFkaW9OYW1lcygpIHtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcCA9IG5ldyBNYXAoKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJTdGFydFRpbWVGb3JGaWx0ZXJcIiwgXCJTdGFydCBUaW1lXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcIkVuZFRpbWVGb3JGaWx0ZXJcIiwgXCJFbmQgVGltZVwiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJzdGFydF90aW1lX2Zvcl9maWx0ZXJcIiwgXCJTdGFydCBUaW1lXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcImVuZF90aW1lX2Zvcl9maWx0ZXJcIiwgXCJFbmQgVGltZVwiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJwcmltYXJ5QUVOYW1lXCIsIFwiUHJpbWFyeSBBRVwiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJyZWdpb25cIiwgXCJSZWdpb25cIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiYWdlbmN5TmFtZVwiLCBcIkFnZW5jeVwiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJsb2NhdGlvblwiLCBcIkxvY2F0aW9uXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcImFkdmVydGlzZXJOYW1lXCIsIFwiQWR2ZXJ0aXNlclwiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJwcm9kdWN0Q29kZVwiLCBcIlByb2R1Y3QgQ29kZVwiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJmbGlnaHRTdGFydERhdGVcIiwgXCJTdGFydCBEYXRlXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcImZsaWdodEVuZERhdGVcIiwgXCJFbmQgRGF0ZVwiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJvcmRlcklkQW5kUmV2TnVtYmVyXCIsIFwiU1ROIE9yZGVyIy1SZXYjXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcImFsdGVybmF0ZU9yZGVySWRcIiwgXCJBbHQvUmVwIE9yZGVyICNcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiZ3JwXCIsIFwiR1JQXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcImNwcFwiLCBcIkNQUFwiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJpbXBzXCIsIFwiSU1QU1wiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJjcG1cIiwgXCJDUE1cIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwib2ZmZXJlZE1Hc1wiLCBcIk9mZmVyZWQgTUdcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwib3V0c3RhbmRpbmdQRVwiLCBcIk8vUyBQRVwiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJvZmZlcmVkQURVc1wiLCBcIk9mZmVyZWQgQURVc1wiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJ1ZERlZmljaXRWYWx1ZVwiLCBcIk8vUyBBdWQgRGVsdGFcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwic3RhcnRFbmRUaW1lTXVsdGlcIiwgXCJUaW1lXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcImJvb2tlZFZhbHVlXCIsIFwiQm9va2VkXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcImJvb2tlZFNwb3RzXCIsIFwiU3BvdHNcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiVXNlckNyZWRpdGVkVmFsdWVcIiwgXCJVc2VyIENyZWRpdGVkXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcIlVzZXJVbnJlc29sdmVkVmFsdWVcIiwgXCJVc2VyIFVucmVzb2x2ZWRcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiQnV5ZXJBZGRlZFZhbHVlXCIsIFwiQnV5ZXIgQWRkZWRcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiQnV5ZXJEZWxldGVkVmFsdWVcIiwgXCJCdXllciBEZWxldGVkXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcInVzZXJDaGFuZ2VzXCIsIFwiVXNlciBDaGFuZ2VzXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcImJ1eWVyQ2hhbmdlc1wiLCBcIkJ1eWVyIENoYW5nZXNcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwidXNlck1HXCIsIFwiVXNlciBNR1wiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJ1c2VyQURVc1wiLCBcIlVzZXIgQURVc1wiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJpbnZlbnRvcnlDb2RlXCIsIFwiSW52ZW50b3J5IENvZGVcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwicHJvZ3JhbVwiLCBcIlByb2dyYW1cIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiYWdlbmN5XCIsIFwiQWdlbmN5XCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcImFkdmVydGlzZXJcIiwgXCJBZHZlcnRpc2VyXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcInN0YXJ0RGF0ZVwiLCBcIlN0YXJ0IERhdGVcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiZW5kRGF0ZVwiLCBcIkVuZCBEYXRlXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcImRhdGVcIiwgXCJEYXRlXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcInJjdlByZWVtcHRcIiwgXCIkIE1hZGVnb29kIFBFc1wiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJvc1ByZWVtcHRcIiwgXCIkIE8vUyBQRXNcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwicmN2VW5kZXJEbHlcIiwgXCJSZWNvdmVyZWQgVURcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwib3NVbmRlckRseVwiLCBcIk8vcyBVbmRlciBEbHlcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwicHJpbWFyeUFlXCIsIFwiUHJpbWFyeSBBRVwiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJyZWdpb25cIiwgXCJSZWdpb25cIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwicmV2Q29kZTFcIiwgXCJSZXYgY29kZSAxXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcIm9yZGVyTm9SZXZOb1wiLCBcIlNUTiBPcmRlciMtUmV2I1wiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJyZXZDb2RlMlwiLCBcIlJldiBjb2RlIDJcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwicmV2Q29kZTNcIiwgXCJSZXYgY29kZSAzXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcImJvb2tlZFwiLCBcIiQgQm9va2VkXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcInNwb3RzXCIsIFwiU3BvdHNcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwicG9zdGVkQXVkUGVyY2VudFwiLCBcIlBvc3RlZCAlXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcInJldmlzaW9uXCIsIFwiUmV2aXNpb25cIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiYnV5ZXJPcmRlcklkXCIsIFwiQUxUL1JFUCBPcmRlciNcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiZGVtb1wiLFwiRGVtb1wiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJwb3N0ZWRBZHVcIixcIiQgUG9zdGVkIEFEVXNcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwic2NoZWR1bGVkQWR1XCIsXCIkIFNjaGVkdWxlZCBBRFVzXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcImF1ZGllbmNlRGVmaWNpdFwiLFwiJCBPL1MgQXVkaWVuY2VcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwicG9zdGVkQXVkUGVyY2VudFwiLFwiUG9zdGVkIEF1ZGllbmNlICVcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwicG90ZW50aWFsVW5pdHNWYWx1ZVwiLFwiUE9UIFVuaXRzXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcImJvb2tlZFVuaXRzVmFsdWVcIixcIkJvb2tlZCBFcSBVbml0c1wiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJib29rZWRBbW91bnRXaXRoWmVyb1JhdGluZ1ZhbHVlXCIsXCJUb3RhbCAkIEJvb2tlZFwiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJib29rZWRBbW91bnRQZXJjZW50YWdlV2l0aFplcm9SYXRpbmdWYWx1ZVwiLFwiJSBBZ2FpbnN0IEFsbCBEZW1vc1wiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJib29rZWRBbW91bnRXaXRob3V0WmVyb1JhdGluZ1ZhbHVlXCIsXCIkQm9va2VkIFdpdGggSW1wcyjigJkwMDApXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcImJvb2tlZEFtb3VudFBlcmNlbnRhZ2VXaXRob3V0WmVyb1JhdGluZ1ZhbHVlXCIsIFwiJSBBZ2FpbnN0IEFsbCBEZW1vc1wiKTtcclxuICAgIFxyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcInRvdGFsQm9va2VkQW1vdW50VmFsdWVcIixcIlRvdGFsICRCb29rZWRcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiYXZlcmFnZVVuaXRSYXRlVmFsdWVcIixcIiBBdmcgUmF0ZVwiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJ0b3RhbEJvb2tlZEFtb3VudFdpdGhSYXRpbmdWYWx1ZVwiLCBcIiRCb29rZWQgV2l0aCBSYXRpbmdcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiYXZlcmFnZVVuaXRSYXRlV2l0aFJhdGluZ1ZhbHVlXCIsIFwiQVVSIFdpdGggUmF0aW5nXCIpO1xyXG4gICAgXHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwidG90YWxCb29rZWRBbW91bnRXaXRoSW1wcmVzc2lvblZhbHVlXCIsIFwiJEJvb2tlZCBXaXRoIElNUFNcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiYXZlcmFnZVVuaXRSYXRlV2l0aEltcHJlc3Npb25WYWx1ZVwiLCBcIkFVUiBXaXRoIElNUFNcIik7XHJcbiAgICBcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJib29rZWRVbml0c1dpdGhSYXRpbmdWYWx1ZVwiLCBcIkJvb2tlZCBVbml0cyBXaXRoIFJhdGluZ1wiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJwb3N0ZWRVbml0c1dpdGhSYXRpbmdWYWx1ZVwiLCBcIlBvc3RlZCBVbml0cyBXaXRoIFJhdGluZ1wiKTtcclxuICAgIFxyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcImJvb2tlZFVuaXRzV2l0aEltcHJlc3Npb25WYWx1ZVwiLCBcIkJvb2tlZCBVbml0cyBXaXRoIElNUFNcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwicG9zdGVkVW5pdHNXaXRoSW1wcmVzc2lvblZhbHVlXCIsIFwiUG9zdGVkIFVuaXRzIFdpdGggSU1QU1wiKTtcclxuICAgIFxyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcImJvb2tlZFJhdGluZ3NcIiwgXCJCb29rZWQgUmF0aW5nXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcIlBvc3RlZFJhdGluZ1wiLCBcIlBvc3RlZCBSVEdcIik7XHJcbiAgICBcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJib29rZWRJbXByZXNzaW9uc1wiLCBcIkJvb2tlZCBJTVBTXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcIlBvc3RlZEltcHJlc3Npb25zXCIsIFwiUG9zdGVkIElNUCgnMDAwKVwiKTtcclxuICAgIFxyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcImJvb2tlZEF2ZXJhZ2VSYXRpbmdcIiwgXCJCb29rZWQgQVZHIFJhdGluZ1wiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJwb3N0ZWRBdmVyYWdlUmF0aW5nXCIsIFwiUG9zdGVkIEFWRyBSYXRpbmdcIik7XHJcbiAgICBcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJib29rZWRBdmVyYWdlSW1wcmVzc2lvblwiLCBcIkJvb2tlZCBBVkcgSU1QU1wiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJwb3N0ZWRBdmVyYWdlSW1wcmVzc2lvblwiLCBcIlBvc3RlZCBBVkcgSU1QU1wiKTtcclxuICAgIFxyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcImJvb2tlZENwcFZhbHVlXCIsIFwiQm9va2VkIENQUFwiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJib29rZWRFZmZlY3RpdmVDcHBWYWx1ZVwiLCBcIkVmZmVjdGl2ZSBDUFBcIik7XHJcbiAgICBcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJib29rZWRDcG1WYWx1ZVwiLCBcIkJvb2tlZCBDUE1cIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiYm9va2VkRWZmZWN0aXZlQ3BtVmFsdWVcIiwgXCJFZmZlY3RpdmUgQ1BNXCIpO1xyXG4gICAgXHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwib3JkZXJTb3VyY2VcIixcIk9yZGVyIFJvdXRlXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcIm9yZGVyQ2F0ZWdvcnlcIixcIlJldiBDYXRlZ29yeVwiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJjYXNoT3JUcmFkZVwiLFwiQy9UXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcInJldmlzaW9uU3RhcnREYXRlXCIsIFwiUmV2aXNpb24gU3RhcnQgRGF0ZVwiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJuYW1lXCIsIFwibmFtZVwiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJyb2xlXCIsIFwicm9sZVwiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJzdGF0aW9uQ291bnRcIiwgXCJzdGF0aW9uQ291bnRcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwic3RhdGlvbkxpc3RcIiwgXCJzdGF0aW9uTGlzdFwiKTtcclxuICAgIFxyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcIk9ESW1wc1wiLFwiT0QgSU1QU1wiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJVREltcHNcIixcIlVEIElNUFNcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiT0RHcnBcIixcIk9EIEdSUFwiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJVREdycFwiLFwiVUQgR1JQXCIpOyBcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJ1ZEltcHNQZXJjZW50XCIsXCJVRCBJTVBTICVcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwidWRHcnBQZXJjZW50XCIsXCJVRCBHUlAgJVwiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJvZEltcHNQZXJjZW50XCIsXCJPRCBJTVBTICVcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwib2RHcnBQZXJjZW50XCIsXCJPRCBHUlAgJVwiKTtcclxuXHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiUmV2aXNpb25OdW1iZXJcIixcIlJldmlzaW9uICNcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiUmV2aXNpb25UeXBlXCIsXCJSZXZpc2lvbiBUeXBlXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcIkdlbmVyYXRlZE9uXCIsXCJHZW5lcmF0ZWQgT25cIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiQm9va2VkVmFsdWVGb3JEaXNwbGF5XCIsXCIkIEJPT0tFRFwiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJCb29rZWRWYWx1ZVwiLFwiJCBCb29rZWRcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiQm9va2VkU3BvdHNcIixcIlNwb3RzXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcIkJvb2tlZEdSUFwiLFwiR1JQXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcIkJvb2tlZElNUFNSZXZUYWJcIixcIklNUFMnKDAwMClcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiQm9va2VkQ1BQXCIsXCJDUFBcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiQm9va2VkQ1BNXCIsXCJDUE1cIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiTUdzVmFsdWVGb3JEaXNwbGF5XCIsXCIkIE1HU1wiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJNR3NWYWx1ZVwiLFwiJCBNR1NcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiQURVc1ZhbHVlRm9yRGlzcGxheVwiLFwiJCBBRFVTXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcIkFEVXNWYWx1ZVwiLFwiJCBBRFVTXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcIkJ1eWVyQ2hhbmdlc1ZhbHVlRm9yRGlzcGxheVwiLFwiJCBCdXllciBDaGFuZ2VcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiQnV5ZXJDaGFuZ2VzVmFsdWVcIixcIiQgQnV5ZXIgQ2hhbmdlXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcIlVzZXJDaGFuZ2VzVmFsdWVGb3JEaXNwbGF5XCIsXCIkIFNlbGxlciBVc2VyIENoYW5nZVwiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJVc2VyQ2hhbmdlc1ZhbHVlXCIsXCIkIFNlbGxlciBVc2VyIENoYW5nZVwiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJTZWxsZXJMaW5lXCIsXCJTZWxsZXIgTGluZSAjXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcIkJ1eWVyTGluZVwiLFwiQnV5IExpbmUgI1wiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJTcG90U3RhdHVzXCIsXCJTcG90IFN0YXR1c1wiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJJbnZlbnRvcnlDb2RlXCIsXCJJbnZlbnRvcnkgQ29kZVwiKTsgXHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiQnV5ZXJQcm9ncmFtTmFtZVwiLFwiQnV5ZXIgUHJvZ3JhbSBOYW1lXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcIlJldmVudWVDbGFzc1wiLFwiUmV2ZW51ZSBDbGFzc1wiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJXZWVrbHlBVVJcIixcIiBBdmcgUmF0ZVwiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJCb29rZWRSYXRlXCIsXCJCb29rZWQgUmF0ZVwiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJCb29rZWRSVEdcIixcIkJvb2tlZCBSVEdcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiQm9va2VkSU1QU1wiLFwiQm9va2VkIElNUCgnMDAwKVwiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJJTVBTXCIsXCJJTVAoJzAwMClcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiQVVSVEdcIixcIkF2ZyBSVEdcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiQVVJTVBTXCIsXCJBdmcgSU1QKCcwMDApXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcIlBvc3RlZFJhdGluZ3NPckltcHJlc3Npb25zXCIsXCJQb3N0ZWQgUlRHXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcIlNjaGVkdWxlRmxpZ2h0V2Vla1wiLFwiU2NoZWR1bGUgV2Vla1wiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJTY2hlZHVsZWREYXlcIixcIlNjaGVkdWxlZCBEYXlcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiQWlyU3RhdHVzXCIsXCJBaXIgU3RhdHVzXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcIkFpckRhdGVBbmRUaW1lXCIsXCJBaXIgRGF0ZSAmIFRpbWVcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiTm9ybWFsaXplZE9yZGVyZWRSYXRpbmdcIixcIk5vcm1hbGl6ZWQgQm9va2VkIFJUR1wiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJOb3JtYWxpemVkT3JkZXJlZEltcHJlc3Npb25zXCIsXCJOb3JtYWxpemVkIEJvb2tlZCBJTVAoJzAwMClcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiTm9ybWFsaXplZFBvc3RlZFJhdGluZ1wiLFwiTm9ybWFsaXplZCBQb3N0ZWQgUlRHXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcIk5vcm1hbGl6ZWRQb3N0ZWRJbXByZXNzaW9uc1wiLFwiTm9ybWFsaXplZCBQb3N0ZWQgSU1QKCcwMDApXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcIkFkSWRcIixcIkFkLUlkXCIpO1xyXG5cclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJkaXNwbGF5aW1wc1wiLFwiSU1QU1wiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJkaXNwbGF5R3JwXCIsXCJHUlBcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiYm9va2VkU3BvdHNGb3JEaXNwbGF5XCIsXCJTcG90c1wiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJkaXNwbGF5U3BvdHNcIixcIlNwb3RzXCIpO1xyXG5cclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJlc3RpbWF0ZU5vXCIsIFwiRXN0aW1hdGUjXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcInByaW1hcnlCdXllclwiLCBcIlByaW1hcnkgQnV5ZXJcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwicHJpbWFyeUJ1eWVyTmFtZVwiLCBcIlByaW1hcnkgQnV5ZXJcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwic2Vjb25kYXJ5QnV5ZXJOYW1lXCIsIFwiU2Vjb25kYXJ5IEJ1eWVyXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcInNlY29uZGFyeUJ1eWVyXCIsIFwiU2Vjb25kYXJ5IEJ1eWVyXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcInRpbWVvdXREYXRlXCIsIFwiVGltZW91dCBEYXRlXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcIkRpc3BsYXl0U3BvdFN0YXR1c0JJXCIsIFwiU3BvdCBTdGF0dXNcIik7XHJcbiAgfVxyXG5cclxuICBnZW5lcmF0ZVRhYmxlRGF0YVdyYXBwZXIoKSB7XHJcbiAgICB0aGlzLnNob3dTa2VsZXRvbkxvYWRpbmcgPSB0cnVlO1xyXG4gICAgdGhpcy50YWJsZURhdGFXcmFwcGVyID0gW107XHJcbiAgICBsZXQgcm93T2JqZWN0OiBhbnk7XHJcbiAgICBsZXQgY29sdW1uTmFtZTogc3RyaW5nO1xyXG4gICAgbGV0IGNvbHVtbk9iamVjdDogeyBbeDogc3RyaW5nXTogYW55OyB9O1xyXG4gICAgbGV0IGNvbHVtbk9iamVjdEtleTtcclxuICAgIGxldCBrZXlzVXNlZEZvclRhYmxlRGlzcGxheTogc3RyaW5nW107XHJcbiAgICBsZXQga2V5c1VzZWRGb3JDb2x1bW46IHN0cmluZ1tdO1xyXG4gICAgbGV0IGFkZGl0aW9uYWxJbmZvT2JqZWN0OiB7IFt4OiBzdHJpbmddOiBhbnk7IH07XHJcbiAgICBsZXQgYWRkaXRpb25hbEtleXM7XHJcbiAgICB0aGlzLnRhYmxlRGF0YS5mb3JFYWNoKChvYmo6IHsgW3g6IHN0cmluZ106IGFueTsgfSkgPT4ge1xyXG4gICAgICByb3dPYmplY3QgPSB7fTtcclxuICAgICAga2V5c1VzZWRGb3JUYWJsZURpc3BsYXkgPSBbXTtcclxuICAgICAgZm9yICh2YXIgY29sTnVtIGluIHRoaXMudGFibGVIZWFkZXJzKSB7XHJcbiAgICAgICAgY29sdW1uT2JqZWN0ID0ge307XHJcbiAgICAgICAgaWYgKCF0aGlzLnRhYmxlSGVhZGVyc1tjb2xOdW1dLnZpc2libGUpIHtcclxuICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb2x1bW5OYW1lID0gXCJcIjtcclxuICAgICAgICBrZXlzVXNlZEZvckNvbHVtbiA9IFtdO1xyXG4gICAgICAgIHRoaXMudGFibGVIZWFkZXJzW2NvbE51bV0uaGVhZGVySW5mby5mb3JFYWNoKChoZWFkZXIpID0+IHtcclxuICAgICAgICAgIGlmIChoZWFkZXIudHlwZU9mQm9keURhdGEgPT09IFwiU1RSSU5HXCIpIHtcclxuICAgICAgICAgICAgY29sdW1uT2JqZWN0S2V5ID0gaGVhZGVyLm9iamVjdEtleTtcclxuICAgICAgICAgICAgY29sdW1uT2JqZWN0W2NvbHVtbk9iamVjdEtleV0gPSBvYmpbY29sdW1uT2JqZWN0S2V5XTtcclxuICAgICAgICAgICAga2V5c1VzZWRGb3JUYWJsZURpc3BsYXkucHVzaChjb2x1bW5PYmplY3RLZXkpO1xyXG4gICAgICAgICAgICBrZXlzVXNlZEZvckNvbHVtbi5wdXNoKGNvbHVtbk9iamVjdEtleSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIGlmIChoZWFkZXIudHlwZU9mQm9keURhdGEgPT09IFwiSUNPTlwiKSB7XHJcbiAgICAgICAgICAgIGNvbHVtbk9iamVjdEtleSA9IGhlYWRlci50eXBlT2ZCb2R5RGF0YTtcclxuICAgICAgICAgICAgY29sdW1uT2JqZWN0W2NvbHVtbk9iamVjdEtleV0gPSBvYmpbaGVhZGVyLm9iamVjdEtleV07XHJcbiAgICAgICAgICAgIGtleXNVc2VkRm9yQ29sdW1uLnB1c2goaGVhZGVyLm9iamVjdEtleSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIGlmIChoZWFkZXIudHlwZU9mQm9keURhdGEgPT09IFwiQ0hFQ0tCT1hcIikge1xyXG4gICAgICAgICAgICBjb2x1bW5PYmplY3RLZXkgPSBoZWFkZXIudHlwZU9mQm9keURhdGE7XHJcbiAgICAgICAgICAgIGNvbHVtbk9iamVjdFtjb2x1bW5PYmplY3RLZXldID0gb2JqW2hlYWRlci5vYmplY3RLZXldO1xyXG4gICAgICAgICAgICBrZXlzVXNlZEZvckNvbHVtbi5wdXNoKGhlYWRlci5vYmplY3RLZXkpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBrZXlzVXNlZEZvckNvbHVtbi5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgY29sdW1uTmFtZSArPSBrZXlzVXNlZEZvckNvbHVtbltpXTtcclxuICAgICAgICAgIGlmIChpICE9PSBrZXlzVXNlZEZvckNvbHVtbi5sZW5ndGggLSAxKSB7XHJcbiAgICAgICAgICAgIGNvbHVtbk5hbWUgKz0gJywnO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByb3dPYmplY3RbY29sdW1uTmFtZV0gPSBjb2x1bW5PYmplY3Q7XHJcbiAgICAgIH1cclxuICAgICAgYWRkaXRpb25hbEluZm9PYmplY3QgPSB7fTtcclxuICAgICAgYWRkaXRpb25hbEtleXMgPSBPYmplY3Qua2V5cyhvYmopLmZpbHRlcihrZXkgPT4gIWtleXNVc2VkRm9yVGFibGVEaXNwbGF5LmluY2x1ZGVzKGtleSkpO1xyXG4gICAgICBhZGRpdGlvbmFsS2V5cy5mb3JFYWNoKGtleSA9PiB7XHJcbiAgICAgICAgYWRkaXRpb25hbEluZm9PYmplY3Rba2V5XSA9IG9ialtrZXldO1xyXG4gICAgICB9KVxyXG4gICAgICByb3dPYmplY3QuQWRkaXRpb25hbEluZm8gPSBhZGRpdGlvbmFsSW5mb09iamVjdDtcclxuICAgICAgdGhpcy50YWJsZURhdGFXcmFwcGVyLnB1c2gocm93T2JqZWN0KTtcclxuICAgIH0pXHJcbiAgICB0aGlzLnRhYmxlRGF0YSA9IHRoaXMudGFibGVEYXRhV3JhcHBlcjtcclxuICAgIHRoaXMuc2hvd1NrZWxldG9uTG9hZGluZyA9IGZhbHNlO1xyXG4gIH1cclxuXHJcblxyXG4gIHNlbGVjdE9yVW5zZWxlY3RDaGVja2JveChyb3dEYXRhOiBhbnksIGNvbHVtbktleXM6IGFueSwgaXNDaGVja2JveFNlbGVjdGVkOiBhbnkpIHtcclxuICAgIHJvd0RhdGFbY29sdW1uS2V5c10gPSAhcm93RGF0YVtjb2x1bW5LZXlzXTtcclxuICAgIHRoaXMudG9nZ2xlQ2hlY2tib3guZW1pdCh7IHJvd0RhdGEsIGNvbHVtbktleXMsIGlzQ2hlY2tib3hTZWxlY3RlZCB9KTtcclxuICB9XHJcblxyXG4gIHNlbGVjdFVuc2VsZWN0QWxsUm93cygpIHtcclxuICAgIHRoaXMudG9nZ2xlSGVhZGVyQ2hlY2tib3guZW1pdCgpO1xyXG4gIH1cclxuXHJcbiAgc2VsZWN0VW5zZWxlY3RSb3cocm93RGF0YTogYW55KSB7XHJcbiAgICB0aGlzLnRvZ2dsZVJvd0NoZWNrYm94LmVtaXQocm93RGF0YSk7XHJcbiAgfVxyXG5cclxuICB1bmRvQ3JlZGl0ZWRTcG90KGRhdGE6IGFueSkge1xyXG4gICAgdGhpcy51bmRvSWNvbkNsaWNrZWQuZW1pdCh7IGRhdGEsIG1nT3JDcmVkaXQ6IFwiQ3JlZGl0XCIgfSk7XHJcbiAgfVxyXG5cclxuICB1bmRvTWdTcG90KGRhdGE6IGFueSkge1xyXG4gICAgdGhpcy51bmRvSWNvbkNsaWNrZWQuZW1pdCh7IGRhdGEsIG1nT3JDcmVkaXQ6IFwiTWFrZUdvb2RcIiB9KTtcclxuICB9XHJcblxyXG4gIC8vU29ydCBhbmQgRmlsdGVyIExvZ2ljIGJlZ2lucyFcclxuICBjbG9zZVRvb2x0aXAoKSB7XHJcbiAgICBpZiAodGhpcy50b29sdGlwICYmIHRoaXMudG9vbHRpcC5pc09wZW4oKSkge1xyXG4gICAgICB0aGlzLnRvb2x0aXAuY2xvc2UoKTtcclxuICAgIH1cclxuICAgIHRoaXMudG9vbHRpcCA9IG51bGw7XHJcbiAgICB0aGlzLmRpc2FibGVDaGVja2JveEFwcGx5ID0gZmFsc2U7XHJcbiAgICBpZiAoIXRoaXMuYmluZFZhbHVlRnVuY0NhbGxlZCkge1xyXG4gICAgICB0aGlzLmNvbHVtbkZpbHRlckNsb3NlZC5lbWl0KCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBpc1Rvb2x0aXBBY3RpdmUoaGVhZGVyOiBhbnlbXSkge1xyXG4gICAgcmV0dXJuIHRoaXMuYW5uYUZpbHRlclNlcnZpY2UuaXNUb29sdGlwQWN0aXZlKGhlYWRlcix0aGlzLmFubmFTb3J0U2VydmljZS5jb2x1bW5Tb3J0U3RhdGUpO1xyXG4gIH1cclxuXHJcbiAgYmluZFRoZVZhbHVlVG9Ub29sVGlwKHRvb2x0aXA6IGFueSwgaGVhZGVyOiBJSGVhZGVySW5mbykge1xyXG5cclxuICAgIHRoaXMuYmluZFZhbHVlRnVuY0NhbGxlZCA9IHRydWU7XHJcbiAgICAvLyBsZXQgY29udGFpbmVyVG9TY3JvbGw7XHJcbiAgICAvLyBpZiAodGhpcy5ndEdlbmVyYWxDb25maWcuY29tcG9uZW50ID09PSBcIlNQT1RERVRBSUxTXCIgfHwgdGhpcy5ndEdlbmVyYWxDb25maWcuY29tcG9uZW50ID09PSBcIkRSUkxJU1RJTkdcIikge1xyXG4gICAgICAvLyBjb250YWluZXJUb1Njcm9sbCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXCJzY3JvbGxhYmxlLWNvbnRhaW5lclwiKVswXTtcclxuICAgICAgLy8gdmFyIG1lZGlhUXVlcnkgPSB3aW5kb3cubWF0Y2hNZWRpYShcIihtYXgtd2lkdGg6IDEzNjZweClcIik7XHJcbiAgICAgIC8vIGlmIChtZWRpYVF1ZXJ5Lm1hdGNoZXMpIHtcclxuICAgICAgLy8gICBjb250YWluZXJUb1Njcm9sbC5zY3JvbGwoMCwgdGhpcy5ndEdlbmVyYWxDb25maWcudmVydGljYWxTY3JvbGxPZmZzZXRGb3JGaWx0ZXJUb29sdGlwKTtcclxuICAgICAgLy8gfVxyXG4gICAgLy8gfVxyXG4gICAgXHJcbiAgICAvLyBpZiBzYW1lIHRvb2x0aXAgb3BlbmVkIGNsb3NlIGl0XHJcbiAgICBpZiAodG9vbHRpcCA9PSB0aGlzLnRvb2x0aXApIHtcclxuICAgICAgdGhpcy5iaW5kVmFsdWVGdW5jQ2FsbGVkID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuY2xvc2VUb29sdGlwKCk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgbGV0IGVuYWJsZWRIZWFkZXJzOiBhbnlbXSA9IFtdO1xyXG4gICAgICB0aGlzLmNoZWNrSWZVbmlxdWVWYWx1ZVByZXNlbnRGb3JUaGVIZWFkZXIoaGVhZGVyLGVuYWJsZWRIZWFkZXJzKTtcclxuICAgICAgdGhpcy5vcGVuVG9vbHRpcCh0b29sdGlwLCBlbmFibGVkSGVhZGVycyxoZWFkZXIpO1xyXG5cclxuICAgICAgaWYgKHdpbmRvdy5pbm5lcldpZHRoIDwgMTUwMCAmJiB3aW5kb3cuaW5uZXJIZWlnaHQgPCA3NjggJiYgIXRoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2xpZGVyU2V0LmhhcyhoZWFkZXIuZmlsdGVyU29ydE9iamVjdEtleXNbMF0pKSB7XHJcbiAgICAgICAgdGhpcy5jb2x1bW5GaWx0ZXJPcGVuZWQuZW1pdCgpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLnNob3dGaWx0ZXJUb29sdGlwVGFicyA9IGhlYWRlci5maWx0ZXJTb3J0T2JqZWN0S2V5cy5sZW5ndGggPiAxO1xyXG4gICAgICBsZXQgYWN0aXZlVGFiID0gdGhpcy5maWx0ZXJUYWJPYmplY3RzWzBdO1xyXG4gICAgICB0aGlzLnBvcHVsYXRlVG9vbHRpcERhdGFCYXNlZE9uU2VsZWN0ZWRSYWRpbyhhY3RpdmVUYWIsIGZhbHNlKTtcclxuICAgICAgdGhpcy5iaW5kVmFsdWVGdW5jQ2FsbGVkID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjaGVja0lmVW5pcXVlVmFsdWVQcmVzZW50Rm9yVGhlSGVhZGVyKGhlYWRlcjogSUhlYWRlckluZm8sIGVuYWJsZWRIZWFkZXJzOiBhbnlbXSl7XHJcbiAgICBoZWFkZXIuZmlsdGVyU29ydE9iamVjdEtleXMuZm9yRWFjaCgoaXRlbTogc3RyaW5nKSA9PiB7XHJcbiAgICAgIGxldCBkYXRhVG9DaGVjayA9IHRoaXMuYW5uYUZpbHRlclNlcnZpY2UuZ2V0RmlsdGVyT3B0aW9uc0RhdGEodGhpcy50YWJsZURhdGEsIHRoaXMuY2xvbmVkVGFibGVEYXRhLCBpdGVtKTtcclxuICAgICAgaWYoaXRlbSA9PSBcInBlcmlvZFwiKXtcclxuICAgICAgICAgIGxldCB1bmlxU3RhcnREYXRlID0gdW5pcShkYXRhVG9DaGVjay5tYXAoKHU6IHsgW3g6IHN0cmluZ106IGFueTsgfSkgPT4gdVtcInN0YXJ0RGF0ZVwiXSkpO1xyXG4gICAgICAgICAgbGV0IHVuaXFFbmREYXRlID0gdW5pcShkYXRhVG9DaGVjay5tYXAoKHU6eyBbeDogc3RyaW5nXTogYW55OyB9KSA9PiB1W1wiZW5kRGF0ZVwiXSkpO1xyXG4gICAgICAgICAgaWYodW5pcVN0YXJ0RGF0ZS5sZW5ndGggPiAxIHx8IHVuaXFFbmREYXRlLmxlbmd0aCA+IDEgfHwgdGhpcy5pc1Rvb2x0aXBBY3RpdmUoW2l0ZW1dKSl7XHJcbiAgICAgICAgICAgIGVuYWJsZWRIZWFkZXJzLnB1c2goaXRlbSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGVsc2V7XHJcbiAgICAgICAgICBsZXQgdmFsdWVzID0gZGF0YVRvQ2hlY2subWFwKCh1OiB7IFt4OiBzdHJpbmddOiBhbnk7IH0pID0+IHVbaXRlbV0pO1xyXG4gICAgICAgIC8vIGlmIGxhc3QgYXBwbGllZCBmaWx0ZXIgaXMgdGhpcyBoZWFkZXIsIHB1c2ggaXQgYWxvcyBhcyBlbmFibGVkSGVhZGVyXHJcbiAgICAgICAgbGV0IGFjdGl2ZUFuZExhc3RseUFwcGxpZWRIZWFkZXIgPSBmYWxzZTtcclxuICAgICAgICBpZih0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmFwcGxpZWRGaWx0ZXJzQXJyYXkubGVuZ3RoID4gMCAmJlxyXG4gICAgICAgICAgdGhpcy5hbm5hRmlsdGVyU2VydmljZS5hcHBsaWVkRmlsdGVyc0FycmF5W3RoaXMuYW5uYUZpbHRlclNlcnZpY2UuYXBwbGllZEZpbHRlcnNBcnJheS5sZW5ndGgtMV0gPT0gaXRlbSl7XHJcbiAgICAgICAgICAgIGFjdGl2ZUFuZExhc3RseUFwcGxpZWRIZWFkZXIgPSB0cnVlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIGlmKGhlYWRlci5maWx0ZXIgPT0gXCJDSEVDS0JPWFwiICYmICh1bmlxKHZhbHVlcykuZmlsdGVyKG4gPT4gbiE9bnVsbCkubGVuZ3RoID4gMSB8fCBhY3RpdmVBbmRMYXN0bHlBcHBsaWVkSGVhZGVyKSl7XHJcbiAgICAgICAgICAgIGVuYWJsZWRIZWFkZXJzLnB1c2goaXRlbSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYoaGVhZGVyLmZpbHRlciAhPSBcIkNIRUNLQk9YXCIgJiYgKHVuaXEodmFsdWVzKS5maWx0ZXIobiA9PiBuIT1udWxsICYmIG4hPVwiLVwiKS5sZW5ndGggPiAxIHx8IGFjdGl2ZUFuZExhc3RseUFwcGxpZWRIZWFkZXIpKXtcclxuICAgICAgICAgIGVuYWJsZWRIZWFkZXJzLnB1c2goaXRlbSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBvcGVuVG9vbHRpcCh0b29sdGlwOiBhbnksaGVhZGVyOiBhbnksIGNvbHVtbkhlYWRlcjogSUhlYWRlckluZm8pIHtcclxuICAgIHRoaXMuY2xvc2VUb29sdGlwKCk7XHJcbiAgICB0aGlzLnRvb2x0aXAgPSB0b29sdGlwO1xyXG4gICAgdGhpcy50b29sdGlwLm9wZW4oKTtcclxuICAgIC8vY29udmVydCBrZXkgaW50byB0aGUgaGVhZGVyXHJcbiAgICB0aGlzLmZpbHRlclRhYk9iamVjdHMgPSBoZWFkZXIubWFwKChrZXk6IHN0cmluZyxpbmRleDogbnVtYmVyKSA9PiB7XHJcbiAgICAgIGxldCB2YWx1ZSA9IHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5oYXMoa2V5KVxyXG4gICAgICAgID8gdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLmdldChrZXkpXHJcbiAgICAgICAgOiBrZXk7IC8vY2hhbmdlIHRvIGRpc3BsYXkgbmFtZVxyXG4gICAgICByZXR1cm4gbmV3IHJhZGlvQnV0dG9uTW9kZWwoa2V5LCB2YWx1ZSwgY29sdW1uSGVhZGVyLmlzU29ydFJlcXVpcmVkW2luZGV4XSwgY29sdW1uSGVhZGVyLmlzRmlsdGVyUmVxdWlyZWRbaW5kZXhdKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgY2xlYXJDb2x1bW5GaWx0ZXIoKSB7XHJcbiAgICB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmNsZWFyQ29sdW1uRmlsdGVyKCk7XHJcbiAgICB0aGlzLmNsb3NlVG9vbHRpcCgpO1xyXG4gICAgdGhpcy50YWJsZURhdGEgPSBjbG9uZURlZXAodGhpcy5hbm5hRmlsdGVyU2VydmljZS5maWx0ZXJEYXRhKHRoaXMuY2xvbmVkVGFibGVEYXRhLCBcIlwiKSk7XHJcbiAgICB0aGlzLmFubmFTb3J0U2VydmljZS5ub1NvcnRpbmdBcHBsaWVkRGF0YSA9IHRoaXMudGFibGVEYXRhO1xyXG4gICAgdGhpcy5jaGVja0lmU29ydGluZ0lzQXBwbGllZCgpO1xyXG4gICAgdGhpcy5maWx0ZXJBcHBsaWVkVG9UYWJsZS5lbWl0KHRoaXMudGFibGVEYXRhKTtcclxuICAgIHRoaXMuZGlzYWJsZUVuYWJsZUVhY2hDb2x1bW5Ub29sdGlwSWNvbigpO1xyXG4gICAgdGhpcy5hbm5hRmlsdGVyU2VydmljZS51cGRhdGVTdGF0ZU9mVGhlQ3VycmVudEZpbHRlclRhYih0aGlzLmFubmFTb3J0U2VydmljZS5jb2x1bW5Tb3J0U3RhdGUpO1xyXG4gICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBwb3B1bGF0ZVRvb2x0aXBEYXRhQmFzZWRPblNlbGVjdGVkUmFkaW8oYWN0aXZlVGFiOiByYWRpb0J1dHRvbk1vZGVsLCByZWxvYWQ6IGJvb2xlYW4pIHtcclxuICAgIGxldCBoZWFkZXIgPSBhY3RpdmVUYWIua2V5O1xyXG4gICAgdGhpcy5zZWxlY3RlZExhYmVsID0gYWN0aXZlVGFiLmxhYmVsO1xyXG4gICAgdGhpcy5zaG93U29ydENvbXBvbmVudCA9IGZhbHNlO1xyXG4gICAgdGhpcy5zaG93RmlsdGVyQ29tcG9uZW50ID0gZmFsc2U7IFxyXG4gICAgdGhpcy5zZWFyY2hJdGVtID0gbnVsbDtcclxuICAgIFxyXG4gICAgXHJcbiAgICB0aGlzLnNob3dTb3J0Q29tcG9uZW50ID0gYWN0aXZlVGFiLmlzU29ydFJlcXVpcmVkO1xyXG4gICAgdGhpcy5zaG93RmlsdGVyQ29tcG9uZW50ID0gYWN0aXZlVGFiLmlzRmlsdGVyUmVxdWlyZWQ7XHJcblxyXG4gICAgdGhpcy5zaG93U29ydENvbXBvbmVudCA9IGFjdGl2ZVRhYi5pc1NvcnRSZXF1aXJlZDtcclxuICAgIHRoaXMuc2hvd0ZpbHRlckNvbXBvbmVudCA9IGFjdGl2ZVRhYi5pc0ZpbHRlclJlcXVpcmVkO1xyXG4gICAgdGhpcy50ZW1wU29ydE9yZGVyID0gbnVsbDtcclxuICAgIHRoaXMuaXNGaWx0ZXJDaGFuZ2VkID0gZmFsc2U7XHJcbiAgICB0aGlzLmlzU29ydENoYW5nZWQgPSBmYWxzZTtcclxuICAgIFxyXG4gICAgdGhpcy5hbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvID0gaGVhZGVyO1xyXG4gICAgdGhpcy5kaXNhYmxlQWN0aXZlRmlsdGVyQ2xlYXJCdXR0b24oKTtcclxuICAgIGlmKHJlbG9hZCl7XHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0RmlsdGVyRGF0YUFuZENhbGxDcmVhdGVUb29sdGlwZGF0YUZ1bmMoYWN0aXZlVGFiLCBoZWFkZXIpO1xyXG4gICAgICB9LCAxMDApOyAgXHJcbiAgICB9ZWxzZXtcclxuICAgICAgdGhpcy5zZXRGaWx0ZXJEYXRhQW5kQ2FsbENyZWF0ZVRvb2x0aXBkYXRhRnVuYyhhY3RpdmVUYWIsIGhlYWRlcik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZXRGaWx0ZXJEYXRhQW5kQ2FsbENyZWF0ZVRvb2x0aXBkYXRhRnVuYyhhY3RpdmVUYWI6cmFkaW9CdXR0b25Nb2RlbCwgaGVhZGVyOnN0cmluZyl7XHJcbiAgICB0aGlzLnNob3dTb3J0Q29tcG9uZW50ID0gYWN0aXZlVGFiLmlzU29ydFJlcXVpcmVkO1xyXG4gICAgdGhpcy5zaG93RmlsdGVyQ29tcG9uZW50ID0gYWN0aXZlVGFiLmlzRmlsdGVyUmVxdWlyZWQ7XHJcbiAgICB0aGlzLmNyZWF0ZUZpbHRlclRvb2x0aXBEYXRhKGhlYWRlcik7XHJcbiAgfVxyXG5cclxuICBjcmVhdGVGaWx0ZXJUb29sdGlwRGF0YShoZWFkZXI6IHN0cmluZyl7XHJcbiAgICBpZih0aGlzLnNob3dGaWx0ZXJDb21wb25lbnQpe1xyXG4gICAgICB0aGlzLmRpc2FibGVTbGlkZXJBcHBseUJ1dHRvbiA9IHRoaXMuZGlzYWJsZUNoZWNrYm94QXBwbHkgPSB0cnVlO1xyXG4gICAgICB0aGlzLmRpc2FibGVDYWxlbmRhckFwcGx5QnRuID0gdGhpcy5kaXNhYmxlVGltZUZpbHRlckFwcGx5QnRuID0gdHJ1ZTtcclxuICAgICAgXHJcbiAgICAgIGlmICh0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmNhbGVuZGFyU2V0LmhhcyhoZWFkZXIpKSB7XHJcbiAgICAgICAgdGhpcy5nZXRDYWxlbmRhckRhdGEoKTtcclxuICAgICAgfSBlbHNlIGlmICh0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnNsaWRlclNldC5oYXMoaGVhZGVyKSkge1xyXG4gICAgICAgIHRoaXMuZ2V0U2xpZGVyRGF0YShoZWFkZXIpO1xyXG4gICAgICB9IGVsc2UgaWYgKHRoaXMuYW5uYUZpbHRlclNlcnZpY2UudGltZVNldC5oYXMoaGVhZGVyKSkge1xyXG4gICAgICAgIHRoaXMuZ2V0VGltZUZpbHRlckRhdGEoaGVhZGVyKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmdldENoZWNrYm94RGF0YShoZWFkZXIpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmKHRoaXMuc2hvd1NvcnRDb21wb25lbnQpe1xyXG4gICAgICB0aGlzLmRpc2FibGVTbGlkZXJBcHBseUJ1dHRvbiA9IHRoaXMuZGlzYWJsZUNoZWNrYm94QXBwbHkgPSB0cnVlO1xyXG4gICAgICB0aGlzLmRpc2FibGVDYWxlbmRhckFwcGx5QnRuID0gdGhpcy5kaXNhYmxlVGltZUZpbHRlckFwcGx5QnRuID0gdHJ1ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGRpc2FibGVBY3RpdmVGaWx0ZXJDbGVhckJ1dHRvbigpe1xyXG4gICAgbGV0IHNlbGVjdGVkRmlsdGVyU2V0ID0gbmV3IFNldCh0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmFwcGxpZWRGaWx0ZXJzQXJyYXkpO1xyXG5cclxuICAgIGxldCBjdXJyZW50Q29sdW1uU29ydEZpbHRlciA9IHRoaXMuZ2V0Q29sdW1uU29ydFN0YXRlRm9yU2VsZWN0ZWRSYWRpbygpO1xyXG4gICAgbGV0IGlzU29ydFByZXNlbnQgPSAodGhpcy5hbm5hU29ydFNlcnZpY2UuY29sdW1uU29ydFN0YXRlICYmIHRoaXMuYW5uYVNvcnRTZXJ2aWNlLmNvbHVtblNvcnRTdGF0ZS5zaXplID4gMCAmJiBjdXJyZW50Q29sdW1uU29ydEZpbHRlciAhPSBTb3J0VHlwZUVudW0uREVGQVVMVCk7XHJcblxyXG4gICAgdGhpcy5kaXNhYmxlQ29sdW1uQ2xlYXJBbGxCdG4gPSBzZWxlY3RlZEZpbHRlclNldC5oYXModGhpcy5hbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvKSB8fCBpc1NvcnRQcmVzZW50ID8gZmFsc2UgOiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgZ2V0U2xpZGVyRGF0YShoZWFkZXI6IHN0cmluZykge1xyXG4gICAgdGhpcy5zaG93RW1wdHlTcGFjZUZvclNsaWRlciA9IHRydWU7XHJcblxyXG4gICAgdGhpcy5jcmVhdGVPcHRpb25zRm9yU2xpZGVyKGhlYWRlcik7XHJcbiAgICB0aGlzLnNldFNlbGVjdGVkUmFuZ2VGb3JTbGlkZXIoaGVhZGVyKTtcclxuICAgIFxyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIHRoaXMuc2hvd0VtcHR5U3BhY2VGb3JTbGlkZXIgPSBmYWxzZTtcclxuICAgIH0sIDApO1xyXG4gIH1cclxuXHJcbiAgY3JlYXRlT3B0aW9uc0ZvclNsaWRlcihoZWFkZXI6IHN0cmluZyl7XHJcblxyXG4gICAgbGV0IHRyYW5zbGF0ZUZ1bmM7XHJcbiAgICB0aGlzLmluY29ycmVjdFNsaWRlcklucHV0ID0gZmFsc2U7XHJcbiAgICB0aGlzLnNsaWRlckVudGVyZWRNYXhWYWx1ZSA9IHRoaXMuc2xpZGVyRW50ZXJlZE1pblZhbHVlID0gbnVsbDtcclxuICAgIHRoaXMuc2hvd1NsaWRlck1pblZhbHVlRXJyb3IgPSB0aGlzLnNob3dTbGlkZXJNYXhWYWx1ZUVycm9yID0gdGhpcy5pc01pblRleHRCb3hFbXB0eSA9IHRoaXMuaXNNYXhUZXh0Qm94RW1wdHkgPSBmYWxzZTtcclxuXHJcbiAgICBpZiAodGhpcy5hbm5hRmlsdGVyU2VydmljZS5zbGlkZXJDdXJyZW5jeVNldC5oYXMoaGVhZGVyKSkge1xyXG4gICAgICB0cmFuc2xhdGVGdW5jID0gXCJjdXJyZW5jeVwiO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZihoZWFkZXIgPT0gXCJwb3N0ZWRBdWRQZXJjZW50XCIpe1xyXG4gICAgICB0cmFuc2xhdGVGdW5jID0gXCJwZXJjZW50XCI7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgdHJhbnNsYXRlRnVuYyA9IFwibm9ybWFsXCI7XHJcbiAgICB9XHJcblxyXG4gICAgbGV0IG9wdGlvbnNEYXRhID0gdGhpcy5hbm5hRmlsdGVyU2VydmljZS5nZXRGaWx0ZXJPcHRpb25zRGF0YSh0aGlzLnRhYmxlRGF0YSwgdGhpcy5jbG9uZWRUYWJsZURhdGEpO1xyXG4gICAgbGV0IG1pblZhbHVlID0gdGhpcy5hbm5hRmlsdGVyU2VydmljZS5yZXR1cm5NYXhBbmRNaW5WYWx1ZShvcHRpb25zRGF0YSwgaGVhZGVyLCB0cnVlKTtcclxuICAgIGxldCBtYXhWYWx1ZSA9IHRoaXMuYW5uYUZpbHRlclNlcnZpY2UucmV0dXJuTWF4QW5kTWluVmFsdWUob3B0aW9uc0RhdGEsIGhlYWRlciwgZmFsc2UpO1xyXG5cclxuICAgIGxldCBvYmogPSB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnNldE9wdGlvblZhbHVlcyhtaW5WYWx1ZSxtYXhWYWx1ZSk7XHJcbiAgICBcclxuICAgIGlmICh0cmFuc2xhdGVGdW5jID09PSBcIm5vcm1hbFwiKSB7XHJcbiAgICAgICAgb2JqLnRyYW5zbGF0ZSA9IHRoaXMuYW5uYUZpbHRlclNlcnZpY2Uubm9ybWFsVHJhbnNsYXRlRnVuY3Rpb247XHJcbiAgICB9IGVsc2UgaWYgKHRyYW5zbGF0ZUZ1bmMgPT09IFwicGVyY2VudFwiKSB7XHJcbiAgICAgICAgb2JqLnRyYW5zbGF0ZSA9IHRoaXMuYW5uYUZpbHRlclNlcnZpY2UucGVyY2VudFRyYW5zbGF0ZUZ1bmN0aW9uO1xyXG4gICAgfSBlbHNlIGlmICh0cmFuc2xhdGVGdW5jID09PSBcImN1cnJlbmN5XCIpIHtcclxuICAgICAgICBvYmoudHJhbnNsYXRlID0gdGhpcy5hbm5hRmlsdGVyU2VydmljZS5jdXJyZW5jeVRyYW5zbGF0ZUZ1bmN0aW9uO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMub3B0aW9ucyA9IG9iajtcclxuICAgIHRoaXMub3B0aW9ucy5zdGVwID0gMTtcclxuICAgIHRoaXMuc2xpZGVyRmlsdGVyVGV4dEJveFN0ZXAgPSBcIjFcIjtcclxuICAgIGlmIChoZWFkZXIgIT09IFwiV2Vla051bWJlclwiKSB7XHJcbiAgICAgIHRoaXMub3B0aW9ucy5zdGVwID0gMC4wMTtcclxuICAgICAgdGhpcy5zbGlkZXJGaWx0ZXJUZXh0Qm94U3RlcCA9IFwiMC4wMVwiO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0U2VsZWN0ZWRSYW5nZUZvclNsaWRlcihoZWFkZXI6IHN0cmluZyl7XHJcbiAgICBpZih0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnRvb2x0aXBTZWxlY3RlZE1hcC5oYXMoaGVhZGVyKSl7XHJcbiAgICAgIGxldCBzZWxlY3RlZE9iaiA9IHRoaXMuYW5uYUZpbHRlclNlcnZpY2UudG9vbHRpcFNlbGVjdGVkTWFwLmdldChoZWFkZXIpO1xyXG4gICAgICB0aGlzLnNsaWRlck1pblZhbHVlID0gc2VsZWN0ZWRPYmoubWluIDwgdGhpcy5vcHRpb25zLmZsb29yID8gdGhpcy5vcHRpb25zLmZsb29yIDogc2VsZWN0ZWRPYmoubWluO1xyXG4gICAgICB0aGlzLnNsaWRlck1heFZhbHVlID0gc2VsZWN0ZWRPYmoubWF4IDwgdGhpcy5vcHRpb25zLmNlaWwgPyBzZWxlY3RlZE9iai5tYXggOiB0aGlzLm9wdGlvbnMuY2VpbDtcclxuICAgICAgdGhpcy5zbGlkZXJFbnRlcmVkTWluVmFsdWUgPSB0aGlzLnNsaWRlck1pblZhbHVlO1xyXG4gICAgICB0aGlzLnNsaWRlckVudGVyZWRNYXhWYWx1ZSA9IHRoaXMuc2xpZGVyTWF4VmFsdWU7ICAgXHJcbiAgICB9XHJcbiAgICBlbHNle1xyXG4gICAgICAgIHRoaXMuc2xpZGVyTWluVmFsdWUgPSB0aGlzLm9wdGlvbnMuZmxvb3I7XHJcbiAgICAgICAgdGhpcy5zbGlkZXJNYXhWYWx1ZSA9IHRoaXMub3B0aW9ucy5jZWlsO1xyXG4gICAgfVxyXG4gICAgdGhpcy5zbGlkZXJFbnRlcmVkTWluVmFsdWUgPSB0aGlzLnNsaWRlck1pblZhbHVlO1xyXG4gICAgdGhpcy5zbGlkZXJFbnRlcmVkTWF4VmFsdWUgPSB0aGlzLnNsaWRlck1heFZhbHVlO1xyXG4gIH1cclxuXHJcblxyXG4gIGdldENoZWNrYm94RGF0YShoZWFkZXI6IHN0cmluZykge1xyXG5cclxuICAgIGxldCB0b29sdGlwT3B0aW9ucyA9IHRoaXMuY3JlYXRlTGlzdEZvckNoZWNrYm94RmlsdGVyKGhlYWRlcik7ICAgIFxyXG4gICAgbGV0IHNlbGVjdGVkSXRlbXMgPSBzb3J0QnkodG9vbHRpcE9wdGlvbnMuZmlsdGVyKGl0ZW0gPT4gaXRlbS5pc1NlbGVjdGVkKSxcInZhbHVlXCIpO1xyXG4gICAgbGV0IHVuc2VsZWN0ZWRJdGVtcyA9IHNvcnRCeSh0b29sdGlwT3B0aW9ucy5maWx0ZXIoaXRlbSA9PiAhaXRlbS5pc1NlbGVjdGVkKSxcInZhbHVlXCIpO1xyXG4gICAgICAgIFxyXG4gICAgdGhpcy5jbG9uZWRUb29sdGlwT3B0aW9ucyA9IFsuLi5zZWxlY3RlZEl0ZW1zLCAuLi51bnNlbGVjdGVkSXRlbXNdO1xyXG5cclxuICAgIHRoaXMudG9vbHRpcE9wdGlvbnMgPSBjbG9uZURlZXAodGhpcy5jbG9uZWRUb29sdGlwT3B0aW9ucyk7XHJcbiAgICBcclxuICAgIGxldCBkYXRhTGVuZ3RoID0gdGhpcy50b29sdGlwT3B0aW9ucy5sZW5ndGg7XHJcbiAgICB0aGlzLmhlaWdodE9mQ2hlY2tib3hUb29sdGlwRmlsdGVyID0gZGF0YUxlbmd0aCA+IDYgPyAyMDAgOiAoKDI2LjAzICogZGF0YUxlbmd0aCkgKyAodGhpcy5tYXJnaW4gKiBkYXRhTGVuZ3RoKSArIHRoaXMubWFyZ2luKTtcclxuICAgIFxyXG4gICAgdGhpcy5kaXNhYmxlU2VsZWN0QWxsID0gdW5zZWxlY3RlZEl0ZW1zLmxlbmd0aCA9PSAwO1xyXG4gICAgdGhpcy5kaXNhYmxlQ2xlYXJBbGwgPSBzZWxlY3RlZEl0ZW1zLmxlbmd0aCA9PSAwO1xyXG4gICAgdGhpcy5zZWxlY3RlZENoZWNrYm94T3B0aW9uc0NvdW50ID0gc2VsZWN0ZWRJdGVtcy5sZW5ndGg7XHJcbiAgfVxyXG5cclxuICBjcmVhdGVMaXN0Rm9yQ2hlY2tib3hGaWx0ZXIoaGVhZGVyOiBzdHJpbmcpe1xyXG4gICAgbGV0IG9wdGlvbkRhdGEgPSB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmdldEZpbHRlck9wdGlvbnNEYXRhKHRoaXMudGFibGVEYXRhLCB0aGlzLmNsb25lZFRhYmxlRGF0YSk7XHJcbiAgICBsZXQgdW5pcU9wdGlvbkRhdGEgPSB1bmlxKG9wdGlvbkRhdGEubWFwKGl0ZW0gPT4gaXRlbVtoZWFkZXJdKSk7XHJcbiAgICBsZXQgdG9vbHRpcE9wdGlvbnMgPSB1bmlxT3B0aW9uRGF0YS5tYXAoKGl0ZW0saW5kZXgpID0+IG5ldyBUb29sdGlwTW9kZWwoaXRlbSxpbmRleCsxKSk7XHJcblxyXG4gICAgdGhpcy5zZWxlY3RVbnNlbGVjdExpc3RDaGVja2JveCh0b29sdGlwT3B0aW9ucyxoZWFkZXIpO1xyXG4gICAgbGV0IGluZGV4ID0gdG9vbHRpcE9wdGlvbnMuZmluZEluZGV4KGl0ZW0gPT4gaXRlbS52YWx1ZSA9PSBudWxsKTtcclxuICAgIFxyXG4gICAgaWYoaW5kZXggIT0gLTEpe1xyXG4gICAgICB0b29sdGlwT3B0aW9uc1tpbmRleF0ubGFiZWwgPSBcIi1cIjtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdG9vbHRpcE9wdGlvbnM7XHJcbiAgfVxyXG5cclxuICBzZWxlY3RVbnNlbGVjdExpc3RDaGVja2JveCh0b29sdGlwT3B0aW9uczogVG9vbHRpcE1vZGVsW10saGVhZGVyOiBzdHJpbmcpe1xyXG4gICAgXHJcbiAgICBpZih0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnRvb2x0aXBTZWxlY3RlZE1hcC5oYXMoaGVhZGVyKSl7XHJcbiAgICAgIGxldCBzZWxlY3RlZFZhbHVlU2V0ID0gbmV3IFNldCh0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnRvb2x0aXBTZWxlY3RlZE1hcC5nZXQoaGVhZGVyKSk7XHJcbiAgICAgIHRvb2x0aXBPcHRpb25zLmZvckVhY2goaXRlbSA9PiBpdGVtLmlzU2VsZWN0ZWQgPSBzZWxlY3RlZFZhbHVlU2V0LmhhcyhpdGVtLnZhbHVlKSA/IHRydWUgOiBmYWxzZSk7XHJcbiAgICB9XHJcbiAgICBlbHNle1xyXG4gICAgICB0b29sdGlwT3B0aW9ucy5mb3JFYWNoKGl0ZW0gPT4gaXRlbS5pc1NlbGVjdGVkID0gdHJ1ZSk7XHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbiAgZ2V0Q2FsZW5kYXJEYXRhKCkge1xyXG4gICAgY29uc3QgcGFyc2luZ0Zvcm1hdCA9IFwiTU0vREQvWVlZWVwiO1xyXG4gICAgbGV0IG1pbk1heERhdGUgPSB0aGlzLmNyZWF0ZVJhbmdlRm9yVGhlRGF0ZUZpbHRlcigpO1xyXG4gICAgdGhpcy5zZWxlY3RSYW5nZUZvclRoZURhdGVGaWx0ZXIobWluTWF4RGF0ZSwgcGFyc2luZ0Zvcm1hdCk7XHJcbiAgfVxyXG5cclxuICBjcmVhdGVSYW5nZUZvclRoZURhdGVGaWx0ZXIoKXtcclxuICAgIFxyXG4gICAgbGV0IG9wdGlvbkRhdGEgPSB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmdldEZpbHRlck9wdGlvbnNEYXRhKHRoaXMudGFibGVEYXRhLCB0aGlzLmNsb25lZFRhYmxlRGF0YSk7XHJcbiAgICBcclxuICAgIGxldCBtaW5NYXhEYXRlO1xyXG4gICAgLy9XaGVuIHlvdSB3YW50IHRvIHVzZSBzdGFydERhdGUgYW5kIGVuZERhdGUgY29tYmluZWQgYXMgc2luZ2xlIGNvbHVtbiB0aGVuIHVzZSBQZXJpb2QuXHJcbiAgICBpZih0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnNlbGVjdGVkUmFkaW8gPT0gXCJwZXJpb2RcIil7XHJcbiAgICAgIG1pbk1heERhdGUgPSB0aGlzLmNyZWF0ZVN0YXJ0RW5kRGF0ZVJhbmdlKG9wdGlvbkRhdGEpO1xyXG4gICAgfVxyXG4gICAgZWxzZXtcclxuICAgICAgbWluTWF4RGF0ZSA9IHRoaXMuYW5uYUZpbHRlclNlcnZpY2UucmV0dXJuTWluQW5kTWF4RGF0ZShvcHRpb25EYXRhLCB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnNlbGVjdGVkUmFkaW8pOyAgXHJcbiAgICB9XHJcbiAgICBcclxuICAgIHJldHVybiBtaW5NYXhEYXRlO1xyXG5cclxuICB9XHJcblxyXG4gIGNyZWF0ZVN0YXJ0RW5kRGF0ZVJhbmdlKG9wdGlvbkRhdGE6IGFueVtdKXtcclxuICAgIGxldCBtaW5TdGFydERhdGUgPSB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnJldHVybk1pbkFuZE1heERhdGUob3B0aW9uRGF0YSwgXCJzdGFydERhdGVcIik7XHJcbiAgICBsZXQgbWF4RW5kRGF0ZSA9IHRoaXMuYW5uYUZpbHRlclNlcnZpY2UucmV0dXJuTWluQW5kTWF4RGF0ZShvcHRpb25EYXRhLFwiZW5kRGF0ZVwiKTtcclxuICAgIHJldHVybiBbbWluU3RhcnREYXRlWzBdLG1heEVuZERhdGVbMV1dO1xyXG4gIH1cclxuXHJcbiAgc2VsZWN0UmFuZ2VGb3JUaGVEYXRlRmlsdGVyKG1pbk1heERhdGU6IGFueVtdLCBwYXJzaW5nRm9ybWF0OiBzdHJpbmcpe1xyXG4gICAgdGhpcy5jYWxlbmRhck1pbkVuYWJsZWREYXRlID0gdGhpcy5hbm5hRGF0ZVRpbWVGb3JtYXRTZXJ2aWNlLmNvbnZlcnRUb05nYkRhdGUobWluTWF4RGF0ZVswXSxwYXJzaW5nRm9ybWF0KTtcclxuICAgIHRoaXMuY2FsZW5kYXJNYXhFbmFibGVkRGF0ZSA9IHRoaXMuYW5uYURhdGVUaW1lRm9ybWF0U2VydmljZS5jb252ZXJ0VG9OZ2JEYXRlKG1pbk1heERhdGVbMV0scGFyc2luZ0Zvcm1hdCk7XHJcbiAgICBcclxuICAgIFxyXG4gICAgaWYodGhpcy5hbm5hRmlsdGVyU2VydmljZS50b29sdGlwU2VsZWN0ZWRNYXAuaGFzKHRoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpbykpe1xyXG4gICAgICAgIGxldCBzZWxlY3RlZERhdGVPYmogPSB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnRvb2x0aXBTZWxlY3RlZE1hcC5nZXQodGhpcy5hbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvKTtcclxuICAgICAgICBcclxuICAgICAgICBpZihzZWxlY3RlZERhdGVPYmouZnJvbURhdGUuaXNBZnRlcihtaW5NYXhEYXRlWzBdKSl7XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRNaW5EYXRlID0gdGhpcy5hbm5hRGF0ZVRpbWVGb3JtYXRTZXJ2aWNlLmNvbnZlcnRUb05nYkRhdGUoc2VsZWN0ZWREYXRlT2JqLmZyb21EYXRlLHBhcnNpbmdGb3JtYXQpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNle1xyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkTWluRGF0ZSA9IHRoaXMuYW5uYURhdGVUaW1lRm9ybWF0U2VydmljZS5jb252ZXJ0VG9OZ2JEYXRlKG1pbk1heERhdGVbMF0scGFyc2luZ0Zvcm1hdCk7XHJcbiAgICAgICAgfSBcclxuXHJcbiAgICAgICAgaWYoc2VsZWN0ZWREYXRlT2JqLnRvRGF0ZS5pc0FmdGVyKG1pbk1heERhdGVbMV0pKXtcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZE1heERhdGUgPSB0aGlzLmFubmFEYXRlVGltZUZvcm1hdFNlcnZpY2UuY29udmVydFRvTmdiRGF0ZShtaW5NYXhEYXRlWzFdLHBhcnNpbmdGb3JtYXQpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNle1xyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkTWF4RGF0ZSA9IHRoaXMuYW5uYURhdGVUaW1lRm9ybWF0U2VydmljZS5jb252ZXJ0VG9OZ2JEYXRlKHNlbGVjdGVkRGF0ZU9iai50b0RhdGUscGFyc2luZ0Zvcm1hdCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgIH1cclxuICAgIGVsc2V7XHJcbiAgICAgICB0aGlzLnNlbGVjdGVkTWluRGF0ZSA9IGNsb25lRGVlcCh0aGlzLmNhbGVuZGFyTWluRW5hYmxlZERhdGUpO1xyXG4gICAgICAgdGhpcy5zZWxlY3RlZE1heERhdGUgPSBjbG9uZURlZXAodGhpcy5jYWxlbmRhck1heEVuYWJsZWREYXRlKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmNhbGVuZGFyU2VsZWN0aW9uLmZyb21EYXRlID0gY2xvbmVEZWVwKHRoaXMuc2VsZWN0ZWRNaW5EYXRlKTtcclxuICAgIHRoaXMuY2FsZW5kYXJTZWxlY3Rpb24udG9EYXRlID0gY2xvbmVEZWVwKHRoaXMuc2VsZWN0ZWRNYXhEYXRlKTtcclxuXHJcbiAgICBcclxuICB9XHJcblxyXG4gIGdldFRpbWVGaWx0ZXJEYXRhKGhlYWRlcjogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBcclxuICAgIHRoaXMuc3RhcnRUaW1lSG91ckVyciA9IHRoaXMuc3RhcnRUaW1lTWluRXJyID0gdGhpcy5lbmRUaW1lSG91ckVyciA9IHRoaXMuZW5kVGltZU1pbkVyciA9IGZhbHNlOyAgICBcclxuXHJcbiAgICBpZiAodGhpcy5hbm5hRmlsdGVyU2VydmljZS50b29sdGlwU2VsZWN0ZWRNYXAuaGFzKGhlYWRlcikpIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZEZyb21UaW1lID0gdGhpcy5hbm5hRmlsdGVyU2VydmljZS50b29sdGlwU2VsZWN0ZWRNYXAuZ2V0KGhlYWRlcikuZnJvbVRpbWU7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRUb1RpbWUgPSB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnRvb2x0aXBTZWxlY3RlZE1hcC5nZXQoaGVhZGVyKS50b1RpbWU7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNldEluaXRpYWxWYWx1ZU1hcEZvclRpbWVGaWx0ZXIoaGVhZGVyKTtcclxuICAgICAgdGhpcy5zZWxlY3RlZEZyb21UaW1lID0gdGhpcy5hbm5hRmlsdGVyU2VydmljZS5pbml0aWFsVmFsdWVNYXAuZ2V0KGhlYWRlcikuZnJvbVRpbWU7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRUb1RpbWUgPSB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmluaXRpYWxWYWx1ZU1hcC5nZXQoaGVhZGVyKS50b1RpbWU7XHJcbiAgICB9XHJcblxyXG4gICAgaWYodGhpcy5zZWxlY3RlZEZyb21UaW1lICE9IHVuZGVmaW5lZCB8fCB0aGlzLnNlbGVjdGVkVG9UaW1lICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkRnJvbVRpbWUgPSBBbm5hRGF0ZVRpbWVGb3JtYXRTZXJ2aWNlLmZvcm1hdFRvVHdlbHZlSHJzKHRoaXMuc2VsZWN0ZWRGcm9tVGltZSwgdHJ1ZSk7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRUb1RpbWUgPSBBbm5hRGF0ZVRpbWVGb3JtYXRTZXJ2aWNlLmZvcm1hdFRvVHdlbHZlSHJzKHRoaXMuc2VsZWN0ZWRUb1RpbWUsIHRydWUpO1xyXG5cclxuICAgICAgdGhpcy5jbG9uZWRTZWxlY3RlZEZyb21UaW1lID0gY2xvbmVEZWVwKHRoaXMuc2VsZWN0ZWRGcm9tVGltZSk7XHJcbiAgICAgIHRoaXMuY2xvbmVkU2VsZWN0ZWRUb1RpbWUgPSBjbG9uZURlZXAodGhpcy5zZWxlY3RlZFRvVGltZSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZEZyb21UaW1lID0gW1wiLVwiLCBcIi1cIiwgXCItXCJdO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkVG9UaW1lID0gW1wiLVwiLCBcIi1cIiwgXCItXCJdO1xyXG4gICAgfVxyXG5cclxuICAgICBpZih0aGlzLmd0R2VuZXJhbENvbmZpZy5jb21wb25lbnQgPT09IFwiUkFUSU5HXCIpe1xyXG4gICAgICB0aGlzLnNldFRpbWVGaWx0ZXJEYXRhRm9yUmF0aW5nUGFnZUNvbXBvbmVudChoZWFkZXIpO1xyXG4gICAgfWVsc2V7XHJcbiAgICAgIHRoaXMuc2V0VGltZUZpbHRlckRhdGFGb3JDb21wb25lbnRzT3RoZXJUaGFuUmF0aW5nc1BhZ2UoaGVhZGVyKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vTmVlZCB0byBjaGFuZ2UgdGhpcyBtZXRob2RcclxuICBzZXRUaW1lRmlsdGVyRGF0YUZvckNvbXBvbmVudHNPdGhlclRoYW5SYXRpbmdzUGFnZShoZWFkZXI6IHN0cmluZyl7XHJcbiAgICB0aGlzLnNob3dNdWx0aVRpbWVDaGVja2JveCA9IGZhbHNlO1xyXG4gICAgdGhpcy5zaG93WmVyb1RpbWVDaGVja2JveCA9IGZhbHNlO1xyXG4gICAgdGhpcy5zaG93RW50ZXJUaW1lQ2hlY2tib3ggPSBmYWxzZTtcclxuICAgIHRoaXMubXVsdGlUaW1lQ2hlY2tib3hDaGVja2VkID0gZmFsc2U7XHJcbiAgICB0aGlzLnplcm9UaW1lQ2hlY2tib3hDaGVja2VkID0gZmFsc2U7XHJcbiAgICB0aGlzLmVudGVyVGltZUNoZWNrYm94Q2hlY2tlZCA9IGZhbHNlO1xyXG5cclxuXHJcbiAgICBsZXQgb3B0aW9uc0RhdGEgPSB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmdldEZpbHRlck9wdGlvbnNEYXRhKHRoaXMudGFibGVEYXRhLCB0aGlzLmNsb25lZFRhYmxlRGF0YSk7XHJcbiAgICBsZXQgc2VsZWN0ZWRPYmo7XHJcblxyXG4gICAgaWYodGhpcy5hbm5hRmlsdGVyU2VydmljZS50b29sdGlwU2VsZWN0ZWRNYXAuaGFzKGhlYWRlcikpe1xyXG4gICAgICBzZWxlY3RlZE9iaiA9IHRoaXMuYW5uYUZpbHRlclNlcnZpY2UudG9vbHRpcFNlbGVjdGVkTWFwLmdldChoZWFkZXIpO1xyXG4gICAgfVxyXG4gICAgZWxzZXtcclxuICAgICAgc2VsZWN0ZWRPYmogPSB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmluaXRpYWxWYWx1ZU1hcC5nZXQoaGVhZGVyKTtcclxuICAgIH1cclxuXHJcbiAgICBpZihvcHRpb25zRGF0YS5maW5kSW5kZXgob2JqID0+IG9ialtoZWFkZXJdID09IFwiMFwiKSAhPSAtMSkge1xyXG4gICAgICB0aGlzLnNob3daZXJvVGltZUNoZWNrYm94ID0gdHJ1ZTtcclxuICAgICAgdGhpcy56ZXJvVGltZUNoZWNrYm94Q2hlY2tlZCA9IHNlbGVjdGVkT2JqLmluY2x1ZGVaZXJvVGltZTtcclxuICAgIH1cclxuICAgIFxyXG4gICAgXHJcbiAgICBpZihvcHRpb25zRGF0YS5maW5kSW5kZXgob2JqID0+IG9ialtoZWFkZXJdID09IFwiPG11bHRpPlwiKSAhPSAtMSkge1xyXG4gICAgICB0aGlzLnNob3dNdWx0aVRpbWVDaGVja2JveCA9IHRydWU7XHJcbiAgICAgIHRoaXMubXVsdGlUaW1lQ2hlY2tib3hDaGVja2VkID0gc2VsZWN0ZWRPYmouaW5jbHVkZU11bHRpO1xyXG4gICAgfVxyXG4gICAgXHJcblxyXG4gICAgaWYodGhpcy5zaG93WmVyb1RpbWVDaGVja2JveCB8fCB0aGlzLnNob3dNdWx0aVRpbWVDaGVja2JveCkge1xyXG4gICAgICB0aGlzLnNob3dFbnRlclRpbWVDaGVja2JveCA9IHRydWU7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIGlmKG9wdGlvbnNEYXRhLmZpbmRJbmRleChvYmogPT4gb2JqW2hlYWRlcl0gIT0gXCI8bXVsdGk+XCIgJiYgb2JqW2hlYWRlcl0gIT0gXCIwXCIpICE9IC0xKSB7XHJcbiAgICAgIHRoaXMuZW50ZXJUaW1lQ2hlY2tib3hDaGVja2VkID0gc2VsZWN0ZWRPYmouaW5jbHVkZVRpbWVSYW5nZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNldFRpbWVGaWx0ZXJEYXRhRm9yUmF0aW5nUGFnZUNvbXBvbmVudChoZWFkZXI6IHN0cmluZyl7XHJcbiAgICAgIHRoaXMuc2hvd011bHRpVGltZUNoZWNrYm94ID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuc2hvd1plcm9UaW1lQ2hlY2tib3ggPSBmYWxzZTtcclxuICAgICAgdGhpcy5zaG93RW50ZXJUaW1lQ2hlY2tib3ggPSBmYWxzZTtcclxuICAgICAgdGhpcy5tdWx0aVRpbWVDaGVja2JveENoZWNrZWQgPSBmYWxzZTtcclxuICAgICAgdGhpcy56ZXJvVGltZUNoZWNrYm94Q2hlY2tlZCA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmVudGVyVGltZUNoZWNrYm94Q2hlY2tlZCA9IGZhbHNlO1xyXG5cclxuICAgICAgbGV0IG9wdGlvbnNEYXRhID0gdGhpcy5hbm5hRmlsdGVyU2VydmljZS5nZXRGaWx0ZXJPcHRpb25zRGF0YSh0aGlzLnRhYmxlRGF0YSwgdGhpcy5jbG9uZWRUYWJsZURhdGEpO1xyXG4gICAgICBsZXQgc2VsZWN0ZWRPYmo7XHJcblxyXG4gICAgICBpZih0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnRvb2x0aXBTZWxlY3RlZE1hcC5oYXMoaGVhZGVyKSl7XHJcbiAgICAgICAgc2VsZWN0ZWRPYmogPSB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnRvb2x0aXBTZWxlY3RlZE1hcC5nZXQoaGVhZGVyKTtcclxuICAgICAgfVxyXG4gICAgICBlbHNle1xyXG4gICAgICAgIHNlbGVjdGVkT2JqID0gdGhpcy5hbm5hRmlsdGVyU2VydmljZS5pbml0aWFsVmFsdWVNYXAuZ2V0KGhlYWRlcik7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmKG9wdGlvbnNEYXRhLmZpbmRJbmRleChvYmogPT4gb2JqW2hlYWRlcl1bMF0gPT0gXCIwXCIpICE9IC0xKSB7XHJcbiAgICAgICAgdGhpcy5zaG93WmVyb1RpbWVDaGVja2JveCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy56ZXJvVGltZUNoZWNrYm94Q2hlY2tlZCA9IHNlbGVjdGVkT2JqLmluY2x1ZGVaZXJvO1xyXG4gICAgICB9XHJcbiAgICAgIFxyXG4gICAgICBcclxuICAgICAgaWYob3B0aW9uc0RhdGEuZmluZEluZGV4KG9iaiA9PiBvYmpbaGVhZGVyXVswXSA9PSBcIjxtdWx0aT5cIikgIT0gLTEpIHtcclxuICAgICAgICB0aGlzLnNob3dNdWx0aVRpbWVDaGVja2JveCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5tdWx0aVRpbWVDaGVja2JveENoZWNrZWQgPSBzZWxlY3RlZE9iai5pbmNsdWRlTXVsdGk7XHJcbiAgICAgIH1cclxuICAgICAgXHJcblxyXG4gICAgICBpZih0aGlzLnNob3daZXJvVGltZUNoZWNrYm94IHx8IHRoaXMuc2hvd011bHRpVGltZUNoZWNrYm94KSB7XHJcbiAgICAgICAgdGhpcy5zaG93RW50ZXJUaW1lQ2hlY2tib3ggPSB0cnVlO1xyXG4gICAgICB9XHJcbiAgICAgIFxyXG4gICAgICBpZihvcHRpb25zRGF0YS5maW5kSW5kZXgob2JqID0+IG9ialtoZWFkZXJdWzBdICE9IFwiPG11bHRpPlwiICYmIG9ialtoZWFkZXJdWzBdICE9IFwiMFwiKSAhPSAtMSkge1xyXG4gICAgICAgIHRoaXMuZW50ZXJUaW1lQ2hlY2tib3hDaGVja2VkID0gc2VsZWN0ZWRPYmouaW5jbHVkZVRpbWVSYW5nZTtcclxuICAgICAgfVxyXG4gIH1cclxuXHJcbiAgc2VsZWN0T3JVbnNlbGVjdE11bHRpVGltZUNoZWNrYm94KCkge1xyXG4gICAgdGhpcy5tdWx0aVRpbWVDaGVja2JveENoZWNrZWQgPSAhdGhpcy5tdWx0aVRpbWVDaGVja2JveENoZWNrZWQ7XHJcbiAgICB0aGlzLmRpc2FibGVUaW1lRmlsdGVyQXBwbHlCdXR0b24oKTtcclxuICB9XHJcblxyXG4gIHNlbGVjdE9yVW5zZWxlY3RaZXJvVGltZUNoZWNrYm94KCkge1xyXG4gICAgdGhpcy56ZXJvVGltZUNoZWNrYm94Q2hlY2tlZCA9ICF0aGlzLnplcm9UaW1lQ2hlY2tib3hDaGVja2VkO1xyXG4gICAgdGhpcy5kaXNhYmxlVGltZUZpbHRlckFwcGx5QnV0dG9uKCk7XHJcbiAgfVxyXG5cclxuICBzZWxlY3RPclVuc2VsZWN0RW50ZXJUaW1lQ2hlY2tib3goKSB7XHJcbiAgICB0aGlzLmVudGVyVGltZUNoZWNrYm94Q2hlY2tlZCA9ICF0aGlzLmVudGVyVGltZUNoZWNrYm94Q2hlY2tlZDtcclxuICAgIHRoaXMuZGlzYWJsZVRpbWVGaWx0ZXJBcHBseUJ1dHRvbigpO1xyXG4gIH1cclxuXHJcbiAgXHJcbiAgc2VsZWN0VW5zZWxlY3RDaGVja2JveChkYXRhOiBUb29sdGlwTW9kZWwpIHtcclxuICAgIGRhdGEuaXNTZWxlY3RlZCA9ICFkYXRhLmlzU2VsZWN0ZWQ7XHJcbiAgICBsZXQgaW5kZXggPSB0aGlzLmNsb25lZFRvb2x0aXBPcHRpb25zLmZpbmRJbmRleChpdGVtID0+IGl0ZW0uaWQgPT0gZGF0YS5pZCk7XHJcbiAgICB0aGlzLmNsb25lZFRvb2x0aXBPcHRpb25zW2luZGV4XS5pc1NlbGVjdGVkID0gZGF0YS5pc1NlbGVjdGVkO1xyXG4gICAgICAgIFxyXG4gICAgbGV0IHNlbGVjdGVkSXRlbXMgPSB0aGlzLnRvb2x0aXBPcHRpb25zLmZpbHRlcihpdGVtID0+IGl0ZW0uaXNTZWxlY3RlZCk7XHJcbiAgICBsZXQgdW5zZWxlY3RlZEl0ZW1zID0gdGhpcy50b29sdGlwT3B0aW9ucy5maWx0ZXIoaXRlbSA9PiAhaXRlbS5pc1NlbGVjdGVkKTtcclxuXHJcbiAgICB0aGlzLmRpc2FibGVDbGVhckFsbCA9ICBzZWxlY3RlZEl0ZW1zLmxlbmd0aCA9PSAwO1xyXG4gICAgdGhpcy5kaXNhYmxlU2VsZWN0QWxsID0gdW5zZWxlY3RlZEl0ZW1zLmxlbmd0aCA9PSAwO1xyXG4gICAgdGhpcy5zZWxlY3RlZENoZWNrYm94T3B0aW9uc0NvdW50ID0gc2VsZWN0ZWRJdGVtcy5sZW5ndGg7XHJcbiAgICB0aGlzLmRpc2FibGVDaGVja2JveEZpbHRlckFwcGx5QnV0dG9uKCk7XHJcbiAgfVxyXG5cclxuICBtaW5WYWx1ZUNoYW5nZWQodmFsOiBzdHJpbmcpIHtcclxuICAgIGlmICh2YWwgfHwgdmFsID09ICcwJykge1xyXG4gICAgICB0aGlzLnNsaWRlckVudGVyZWRNaW5WYWx1ZSA9ICt2YWw7XHJcbiAgICAgIHRoaXMuaXNNaW5UZXh0Qm94RW1wdHkgPSBmYWxzZTtcclxuICAgICAgaWYgKHRoaXMuaXNNYXhUZXh0Qm94RW1wdHkpIHtcclxuICAgICAgICBpZiAoICh0aGlzLnNsaWRlckVudGVyZWRNaW5WYWx1ZSA+IHRoaXMub3B0aW9ucy5jZWlsKSB8fCAodGhpcy5zbGlkZXJFbnRlcmVkTWluVmFsdWUgPCB0aGlzLm9wdGlvbnMuZmxvb3IpKSB7XHJcbiAgICAgICAgICB0aGlzLnNob3dTbGlkZXJNaW5WYWx1ZUVycm9yID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuZGlzYWJsZVNsaWRlckFwcGx5QnV0dG9uID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuaW5jb3JyZWN0U2xpZGVySW5wdXQgPSB0cnVlO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLnNob3dTbGlkZXJNaW5WYWx1ZUVycm9yID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLnNob3dTbGlkZXJNYXhWYWx1ZUVycm9yID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLmRpc2FibGVTbGlkZXJBcHBseUJ1dHRvbiA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5pbmNvcnJlY3RTbGlkZXJJbnB1dCA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIGlmICh0aGlzLnNsaWRlckVudGVyZWRNaW5WYWx1ZSA+IHRoaXMuc2xpZGVyRW50ZXJlZE1heFZhbHVlKSB7XHJcbiAgICAgICAgaWYodGhpcy5pc1ZhbHVlSW5SYW5nZSh0aGlzLnNsaWRlckVudGVyZWRNYXhWYWx1ZSkpe1xyXG4gICAgICAgICAgdGhpcy5zaG93U2xpZGVyTWluVmFsdWVFcnJvciA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLnNob3dTbGlkZXJNYXhWYWx1ZUVycm9yID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2V7XHJcbiAgICAgICAgICB0aGlzLnNob3dTbGlkZXJNYXhWYWx1ZUVycm9yID0gdHJ1ZTtcclxuICAgICAgICAgIGlmKHRoaXMuaXNWYWx1ZUluUmFuZ2UodGhpcy5zbGlkZXJFbnRlcmVkTWluVmFsdWUpKXtcclxuICAgICAgICAgICAgdGhpcy5zaG93U2xpZGVyTWluVmFsdWVFcnJvciA9IGZhbHNlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZXtcclxuICAgICAgICAgICAgdGhpcy5zaG93U2xpZGVyTWluVmFsdWVFcnJvciA9IHRydWU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgIFxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmRpc2FibGVTbGlkZXJBcHBseUJ1dHRvbiA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5pbmNvcnJlY3RTbGlkZXJJbnB1dCA9IHRydWU7XHJcbiAgICAgICAgXHJcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5zbGlkZXJFbnRlcmVkTWluVmFsdWUgPCB0aGlzLm9wdGlvbnMuZmxvb3IpIHtcclxuICAgICAgICB0aGlzLnNob3dTbGlkZXJNaW5WYWx1ZUVycm9yID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmRpc2FibGVTbGlkZXJBcHBseUJ1dHRvbiA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5pbmNvcnJlY3RTbGlkZXJJbnB1dCA9IHRydWU7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5zaG93U2xpZGVyTWluVmFsdWVFcnJvciA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuZGlzYWJsZVNsaWRlckFwcGx5QnV0dG9uID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5pbmNvcnJlY3RTbGlkZXJJbnB1dCA9IGZhbHNlO1xyXG4gICAgICB9XHJcblxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zbGlkZXJFbnRlcmVkTWluVmFsdWUgPSB0aGlzLm9wdGlvbnMuZmxvb3I7XHJcbiAgICAgIHRoaXMuaXNNaW5UZXh0Qm94RW1wdHkgPSB0cnVlO1xyXG4gICAgICB0aGlzLnNob3dTbGlkZXJNaW5WYWx1ZUVycm9yID0gZmFsc2U7XHJcblxyXG4gICAgfVxyXG4gICAgdGhpcy5zaG93RXJyb3JGb3JNaW5BbmRNYXhWYWx1ZSgpO1xyXG4gIH1cclxuXHJcbiAgbWF4VmFsdWVDaGFuZ2VkKHZhbDogc3RyaW5nKSB7XHJcbiAgICBpZiAodmFsIHx8IHZhbCA9PSBcIjBcIikge1xyXG4gICAgICB0aGlzLnNsaWRlckVudGVyZWRNYXhWYWx1ZSA9ICt2YWw7XHJcbiAgICAgIHRoaXMuaXNNYXhUZXh0Qm94RW1wdHkgPSBmYWxzZTtcclxuICAgICAgaWYgKHRoaXMuaXNNaW5UZXh0Qm94RW1wdHkpIHtcclxuICAgICAgICBpZiAoICh0aGlzLnNsaWRlckVudGVyZWRNYXhWYWx1ZSA8IHRoaXMub3B0aW9ucy5mbG9vcikgfHwgKHRoaXMuc2xpZGVyRW50ZXJlZE1heFZhbHVlID4gdGhpcy5vcHRpb25zLmNlaWwpKSB7XHJcbiAgICAgICAgICB0aGlzLnNob3dTbGlkZXJNYXhWYWx1ZUVycm9yID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuZGlzYWJsZVNsaWRlckFwcGx5QnV0dG9uID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuaW5jb3JyZWN0U2xpZGVySW5wdXQgPSB0cnVlO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLnNob3dTbGlkZXJNYXhWYWx1ZUVycm9yID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLnNob3dTbGlkZXJNaW5WYWx1ZUVycm9yID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLmRpc2FibGVTbGlkZXJBcHBseUJ1dHRvbiA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5pbmNvcnJlY3RTbGlkZXJJbnB1dCA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIGlmICh0aGlzLnNsaWRlckVudGVyZWRNYXhWYWx1ZSA8IHRoaXMuc2xpZGVyRW50ZXJlZE1pblZhbHVlKSB7XHJcbiAgICAgICAgaWYodGhpcy5pc1ZhbHVlSW5SYW5nZSh0aGlzLnNsaWRlckVudGVyZWRNaW5WYWx1ZSkpe1xyXG4gICAgICAgICAgdGhpcy5zaG93U2xpZGVyTWF4VmFsdWVFcnJvciA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLnNob3dTbGlkZXJNaW5WYWx1ZUVycm9yID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2V7XHJcbiAgICAgICAgICB0aGlzLnNob3dTbGlkZXJNaW5WYWx1ZUVycm9yID0gdHJ1ZTtcclxuICAgICAgICAgIGlmKHRoaXMuaXNWYWx1ZUluUmFuZ2UodGhpcy5zbGlkZXJFbnRlcmVkTWF4VmFsdWUpKXtcclxuICAgICAgICAgICAgdGhpcy5zaG93U2xpZGVyTWF4VmFsdWVFcnJvciA9IGZhbHNlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZXtcclxuICAgICAgICAgICAgdGhpcy5zaG93U2xpZGVyTWF4VmFsdWVFcnJvciA9IHRydWU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuZGlzYWJsZVNsaWRlckFwcGx5QnV0dG9uID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmluY29ycmVjdFNsaWRlcklucHV0ID0gdHJ1ZTtcclxuICAgICAgICAvLyB0aGlzLnNob3dNYXhFcnJvciA9IHRydWU7XHJcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5zbGlkZXJFbnRlcmVkTWF4VmFsdWUgPiB0aGlzLm9wdGlvbnMuY2VpbCkge1xyXG4gICAgICAgIHRoaXMuc2hvd1NsaWRlck1heFZhbHVlRXJyb3IgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuZGlzYWJsZVNsaWRlckFwcGx5QnV0dG9uID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmluY29ycmVjdFNsaWRlcklucHV0ID0gdHJ1ZTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnNob3dTbGlkZXJNYXhWYWx1ZUVycm9yID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5kaXNhYmxlU2xpZGVyQXBwbHlCdXR0b24gPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmluY29ycmVjdFNsaWRlcklucHV0ID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc2xpZGVyRW50ZXJlZE1heFZhbHVlID0gdGhpcy5vcHRpb25zLmNlaWw7XHJcbiAgICAgIHRoaXMuaXNNYXhUZXh0Qm94RW1wdHkgPSB0cnVlO1xyXG4gICAgICB0aGlzLnNob3dTbGlkZXJNYXhWYWx1ZUVycm9yID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgICB0aGlzLnNob3dFcnJvckZvck1pbkFuZE1heFZhbHVlKCk7XHJcbiAgfVxyXG5cclxuICBzaG93RXJyb3JGb3JNaW5BbmRNYXhWYWx1ZSgpe1xyXG4gICAgICBpZih0aGlzLmlzTWluVGV4dEJveEVtcHR5ICYmIHRoaXMuaXNNYXhUZXh0Qm94RW1wdHkpe1xyXG4gICAgICAgIHRoaXMuc2hvd1NsaWRlck1pblZhbHVlRXJyb3IgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuc2hvd1NsaWRlck1heFZhbHVlRXJyb3IgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuZGlzYWJsZVNsaWRlckFwcGx5QnV0dG9uID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmluY29ycmVjdFNsaWRlcklucHV0ID0gdHJ1ZTtcclxuICAgICB9XHJcbiAgICAgZWxzZSBpZih0aGlzLnNob3dTbGlkZXJNYXhWYWx1ZUVycm9yIHx8IHRoaXMuc2hvd1NsaWRlck1pblZhbHVlRXJyb3Ipe1xyXG4gICAgICB0aGlzLmluY29ycmVjdFNsaWRlcklucHV0ID0gdHJ1ZTtcclxuICAgICB9XHJcbiAgICAgZWxzZXtcclxuICAgICAgdGhpcy5pbmNvcnJlY3RTbGlkZXJJbnB1dCA9IGZhbHNlO1xyXG4gICAgIH1cclxuICAgICB0aGlzLmRpc2FibGVTbGlkZXJBcHBseUJ0bigpO1xyXG4gIH1cclxuXHJcbiAgaXNWYWx1ZUluUmFuZ2UodmFsOiBudW1iZXIpe1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5mbG9vciA8PSB2YWwgJiYgdmFsIDw9IHRoaXMub3B0aW9ucy5jZWlsO1xyXG4gIH1cclxuXHJcbiAgZGlzYWJsZVNsaWRlckFwcGx5QnRuKCl7XHJcbiAgICBpZih0aGlzLnNob3dGaWx0ZXJDb21wb25lbnQgJiYgdGhpcy5zaG93U29ydENvbXBvbmVudCl7XHJcbiAgICAgIGxldCBpc0ZpbHRlckNoYW5nZWQgPSB0aGlzLmNoZWNrSWZTbGlkZXJUb29sdGlwSXNGaWx0ZXJlZCgpO1xyXG4gICAgICBsZXQgaXNTb3J0Q2hhbmdlZCA9IHRoaXMuY2hlY2tJZlNvcnRpbmdDaGFuZ2VkKCk7XHJcbiAgICAgICAgICBcclxuICAgICAgdGhpcy5kaXNhYmxlU2xpZGVyQXBwbHlCdXR0b24gPSB0aGlzLmluY29ycmVjdFNsaWRlcklucHV0IHx8ICghaXNTb3J0Q2hhbmdlZCAmJiAhaXNGaWx0ZXJDaGFuZ2VkICk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmKHRoaXMuc2hvd0ZpbHRlckNvbXBvbmVudCl7XHJcbiAgICAgICAgdGhpcy5kaXNhYmxlU2xpZGVyQXBwbHlCdXR0b24gPSB0aGlzLmluY29ycmVjdFNsaWRlcklucHV0IHx8ICF0aGlzLmNoZWNrSWZTbGlkZXJUb29sdGlwSXNGaWx0ZXJlZCgpO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZih0aGlzLnNob3dTb3J0Q29tcG9uZW50KXtcclxuICAgICAgICB0aGlzLmRpc2FibGVTbGlkZXJBcHBseUJ1dHRvbiA9ICF0aGlzLmNoZWNrSWZTb3J0aW5nQ2hhbmdlZCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2xpZGVyVmFsdWVDaGFuZ2UoKSB7XHJcbiAgICB0aGlzLnNsaWRlclZhbHVlID0geyBtaW46IHRoaXMuc2xpZGVyTWluVmFsdWUsIG1heDogdGhpcy5zbGlkZXJNYXhWYWx1ZSB9O1xyXG4gIH1cclxuXHJcbiAgY2FuY2VsU2xpZGVyRmlsdGVyKCkge1xyXG4gICAgdGhpcy5zbGlkZXJWYWx1ZSA9IG51bGw7XHJcbiAgICB0aGlzLmNsb3NlVG9vbHRpcCgpO1xyXG4gIH1cclxuXHJcbiAgYXBwbHlGaWx0ZXJzKCkge1xyXG4gICAgdGhpcy5hcHBseUxpc3RGaWx0ZXJzKCk7XHJcbiAgICB0aGlzLmFwcGx5U29ydGluZ09uRmlsdGVyZWREYXRhKCk7XHJcbiAgICAvLyB0aGlzLmVtaXREYXRhKCk7XHJcbiAgICB0aGlzLnNldEluaXRpYWxSb3dzRm9yVGFibGUoKTtcclxuICAgIHRoaXMuZGlzYWJsZUVuYWJsZUVhY2hDb2x1bW5Ub29sdGlwSWNvbigpO1xyXG4gICAgdGhpcy5hbm5hRmlsdGVyU2VydmljZS51cGRhdGVTdGF0ZU9mQWxsVGhlS2V5cyh0aGlzLmFubmFTb3J0U2VydmljZS5jb2x1bW5Tb3J0U3RhdGUpO1xyXG4gICAgdGhpcy5lbWl0RGF0YSgpO1xyXG4gICAgdGhpcy5jbG9zZVRvb2x0aXAoKTtcclxuICB9XHJcblxyXG4gIGFwcGx5TGlzdEZpbHRlcnMoKXtcclxuICAgIGlmKHRoaXMuc2hvd0ZpbHRlckNvbXBvbmVudCAmJiB0aGlzLmlzRmlsdGVyQ2hhbmdlZCl7XHJcbiAgICAgIGxldCBjdXJyZW50U2VsZWN0ZWRWYWx1ZSA9IFtdO1xyXG4gICAgICBcclxuICAgICAgaWYodGhpcy50b29sdGlwT3B0aW9ucyl7XHJcblxyXG4gICAgICAgICAgY3VycmVudFNlbGVjdGVkVmFsdWUgPSBzb3J0QnkodGhpcy50b29sdGlwT3B0aW9ucy5maWx0ZXIoaXRlbSA9PiBpdGVtLmlzU2VsZWN0ZWQpLm1hcChpdGVtID0+IGl0ZW0udmFsdWUpKTtcclxuXHJcbiAgICAgICAgICBpZighdGhpcy5zZWFyY2hJdGVtICYmIGN1cnJlbnRTZWxlY3RlZFZhbHVlLmxlbmd0aCA9PSB0aGlzLnRvb2x0aXBPcHRpb25zLmxlbmd0aCAmJiB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmluaXRpYWxWYWx1ZU1hcC5oYXModGhpcy5hbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvKSl7XHJcbiAgICAgICAgICAgIGN1cnJlbnRTZWxlY3RlZFZhbHVlID0gdGhpcy5hbm5hRmlsdGVyU2VydmljZS5pbml0aWFsVmFsdWVNYXAuZ2V0KHRoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpbyk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBcclxuICAgICAgfVxyXG5cclxuICAgICAgbGV0IGJsYW5rSW5kZXggPSBjdXJyZW50U2VsZWN0ZWRWYWx1ZS5maW5kSW5kZXgoKGl0ZW06IHN0cmluZykgPT4gaXRlbSA9PSBudWxsKTtcclxuICAgICAgaWYoYmxhbmtJbmRleCAhPSAtMSl7XHJcbiAgICAgICAgY3VycmVudFNlbGVjdGVkVmFsdWUgPSBzb3J0QnkoY3VycmVudFNlbGVjdGVkVmFsdWUpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuYW5uYUZpbHRlclNlcnZpY2UucmVPcmRlckFwcGxpZWRGaWx0ZXJzU3RhdGUodGhpcy5jbG9uZWRUYWJsZURhdGEsY3VycmVudFNlbGVjdGVkVmFsdWUpO1xyXG4gICAgICAgIHRoaXMuYW5uYUZpbHRlclNlcnZpY2UudG9vbHRpcFNlbGVjdGVkTWFwLnNldCh0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnNlbGVjdGVkUmFkaW8sIGN1cnJlbnRTZWxlY3RlZFZhbHVlKTtcclxuICAgICAgXHJcbiAgICAgICAgdGhpcy50YWJsZURhdGEgPSB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmZpbHRlckRhdGEodGhpcy5jbG9uZWRUYWJsZURhdGEsIFwiXCIpO1xyXG4gICAgICAgIHRoaXMuYW5uYVNvcnRTZXJ2aWNlLm5vU29ydGluZ0FwcGxpZWREYXRhID0gY2xvbmVEZWVwKHRoaXMudGFibGVEYXRhKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFwcGx5U29ydGluZ09uRmlsdGVyZWREYXRhKCl7XHJcbiAgICBpZih0aGlzLnNob3dTb3J0Q29tcG9uZW50KXtcclxuICAgICAgaWYodGhpcy5pc1NvcnRDaGFuZ2VkKXtcclxuICAgICAgICB0aGlzLnVwZGF0ZVNvcnRNYXAoKTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIGlmKHRoaXMuaXNGaWx0ZXJDaGFuZ2VkKXtcclxuICAgICAgICB0aGlzLmNoZWNrSWZTb3J0aW5nSXNBcHBsaWVkKCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2UgaWYodGhpcy5pc0ZpbHRlckNoYW5nZWQpe1xyXG4gICAgICB0aGlzLmNoZWNrSWZTb3J0aW5nSXNBcHBsaWVkKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBlbWl0RGF0YSgpe1xyXG4gICAgaWYodGhpcy5pc0ZpbHRlckNoYW5nZWQgJiYgdGhpcy5pc1NvcnRDaGFuZ2VkKXtcclxuICAgICAgdGhpcy5maWx0ZXJBcHBsaWVkVG9UYWJsZS5lbWl0KHRoaXMudGFibGVEYXRhKTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYodGhpcy5pc0ZpbHRlckNoYW5nZWQpe1xyXG4gICAgICB0aGlzLmZpbHRlckFwcGxpZWRUb1RhYmxlLmVtaXQodGhpcy50YWJsZURhdGEpO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZih0aGlzLmlzU29ydENoYW5nZWQpe1xyXG4gICAgICB0aGlzLnNvcnRpbmdBcHBsaWVkVG9UYWJsZS5lbWl0KHRoaXMudGFibGVEYXRhKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFwcGx5U29ydGluZyhrZXk6IHN0cmluZyl7XHJcbiAgICBpZih0aGlzLnRlbXBTb3J0T3JkZXIgPT0gXCJBU0NcIil7XHJcbiAgICAgIHRoaXMudGFibGVEYXRhID0gY2xvbmVEZWVwKHRoaXMuYW5uYVNvcnRTZXJ2aWNlLnNvcnREYXRhRm9yQ29tcG9uZW50T3RoZXJUaGFuTHVyQW5kQ3NyUGFnZSh0cnVlLHRoaXMudGFibGVEYXRhLGtleSkpO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZih0aGlzLnRlbXBTb3J0T3JkZXIgPT0gXCJERVNDXCIpe1xyXG4gICAgICAgIHRoaXMudGFibGVEYXRhID0gY2xvbmVEZWVwKHRoaXMuYW5uYVNvcnRTZXJ2aWNlLnNvcnREYXRhRm9yQ29tcG9uZW50T3RoZXJUaGFuTHVyQW5kQ3NyUGFnZShmYWxzZSx0aGlzLnRhYmxlRGF0YSxrZXkpKTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYodGhpcy50ZW1wU29ydE9yZGVyID09IFwiREVGQVVMVFwiKXtcclxuICAgICAgICB0aGlzLnRhYmxlRGF0YSA9IGNsb25lRGVlcCh0aGlzLmFubmFTb3J0U2VydmljZS5ub1NvcnRpbmdBcHBsaWVkRGF0YSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZXZlcnQoKSB7XHJcbiAgICB0aGlzLnRlbXBUb29sdGlwRGF0YSA9IGNsb25lRGVlcCh0aGlzLnRvb2xUaXBkYXRhKTtcclxuICAgIHRoaXMuYW5uYUZpbHRlclNlcnZpY2UudG9vbHRpcE1hcC5zZXQodGhpcy5hbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvLCB0aGlzLnRlbXBUb29sdGlwRGF0YSk7XHJcbiAgICB0aGlzLnRvb2xUaXBkYXRhID0gbnVsbDtcclxuICB9XHJcblxyXG4gIGNsb3NlQ2hlY2tib3hGaWx0ZXIoKSB7XHJcbiAgICBpZiAodGhpcy50b29sVGlwZGF0YSkge1xyXG4gICAgICB0aGlzLnJldmVydCgpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5jbG9zZVRvb2x0aXAoKTtcclxuICB9XHJcblxyXG4gIGFwcGx5U2xpZGVyRmlsdGVyKCkge1xyXG5cclxuICAgIHRoaXMuYXBwbHlTbGlkZXJGaWx0ZXJPbkRhdGEoKTtcclxuICAgIHRoaXMuYXBwbHlTb3J0aW5nT25GaWx0ZXJlZERhdGEoKTtcclxuICAgIHRoaXMuZW1pdERhdGEoKTtcclxuICAgIHRoaXMuc2V0SW5pdGlhbFJvd3NGb3JUYWJsZSgpO1xyXG4gICAgdGhpcy5hbm5hRmlsdGVyU2VydmljZS51cGRhdGVTdGF0ZU9mQWxsVGhlS2V5cyh0aGlzLmFubmFTb3J0U2VydmljZS5jb2x1bW5Tb3J0U3RhdGUpO1xyXG4gICAgdGhpcy5jbG9zZVRvb2x0aXAoKTtcclxuICB9XHJcblxyXG4gIGFwcGx5U2xpZGVyRmlsdGVyT25EYXRhKCl7XHJcbiAgICBpZih0aGlzLnNob3dGaWx0ZXJDb21wb25lbnQgJiYgdGhpcy5pc0ZpbHRlckNoYW5nZWQpe1xyXG4gICAgICBsZXQgY3VycmVudFNsaWRlckRhdGE6IHttaW46YW55LCBtYXg6IGFueX0gPSB7bWluOiBudWxsICwgbWF4OiBudWxsfTtcclxuXHJcbiAgICAgIC8vIGlmKHRoaXMuaXNNaW5UZXh0Qm94RW1wdHkpe1xyXG4gICAgICAvLyAgICAgY3VycmVudFNsaWRlckRhdGEubWluID0gdGhpcy5vcHRpb25zLmZsb29yO1xyXG4gICAgICAvLyAgICAgY3VycmVudFNsaWRlckRhdGEubWF4ID0gdGhpcy5zbGlkZXJNYXhWYWx1ZTtcclxuICAgICAgLy8gfVxyXG4gICAgICAvLyBlbHNlIGlmKHRoaXMuaXNNYXhUZXh0Qm94RW1wdHkpe1xyXG4gICAgICAvLyAgICAgY3VycmVudFNsaWRlckRhdGEubWF4ID0gdGhpcy5vcHRpb25zLmNlaWw7XHJcbiAgICAgIC8vICAgICBjdXJyZW50U2xpZGVyRGF0YS5taW4gPSB0aGlzLnNsaWRlck1pblZhbHVlO1xyXG4gICAgICAvLyB9XHJcbiAgICAgIC8vIGVsc2V7XHJcbiAgICAgICAgICBjdXJyZW50U2xpZGVyRGF0YS5tYXggPSB0aGlzLnNsaWRlckVudGVyZWRNYXhWYWx1ZTtcclxuICAgICAgICAgIGN1cnJlbnRTbGlkZXJEYXRhLm1pbiA9IHRoaXMuc2xpZGVyRW50ZXJlZE1pblZhbHVlO1xyXG4gICAgICAvLyB9XHJcblxyXG4gICAgICBpZihjdXJyZW50U2xpZGVyRGF0YS5taW4gPT0gdGhpcy5vcHRpb25zLmZsb29yICYmIGN1cnJlbnRTbGlkZXJEYXRhLm1heCA9PSB0aGlzLm9wdGlvbnMuY2VpbCAmJiB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmluaXRpYWxWYWx1ZU1hcC5oYXModGhpcy5hbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvKSApe1xyXG4gICAgICAgICAgY3VycmVudFNsaWRlckRhdGEgPSB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmluaXRpYWxWYWx1ZU1hcC5nZXQodGhpcy5hbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvKTtcclxuICAgICAgfVxyXG4gICAgICBcclxuICAgICAgdGhpcy5hbm5hRmlsdGVyU2VydmljZS5yZU9yZGVyQXBwbGllZEZpbHRlcnNTdGF0ZSh0aGlzLmNsb25lZFRhYmxlRGF0YSxjdXJyZW50U2xpZGVyRGF0YSk7XHJcbiAgICAgIHRoaXMuYW5uYUZpbHRlclNlcnZpY2UudG9vbHRpcFNlbGVjdGVkTWFwLnNldCh0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnNlbGVjdGVkUmFkaW8sY3VycmVudFNsaWRlckRhdGEpO1xyXG4gICAgICB0aGlzLnRhYmxlRGF0YSA9IHRoaXMuYW5uYUZpbHRlclNlcnZpY2UuZmlsdGVyRGF0YSh0aGlzLmNsb25lZFRhYmxlRGF0YSwgXCJcIik7XHJcbiAgICAgIHRoaXMuYW5uYVNvcnRTZXJ2aWNlLm5vU29ydGluZ0FwcGxpZWREYXRhID0gY2xvbmVEZWVwKHRoaXMudGFibGVEYXRhKTtcclxuICAgICAgdGhpcy5kaXNhYmxlRW5hYmxlRWFjaENvbHVtblRvb2x0aXBJY29uKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjYW5jZWxJbkRhdGVGaWx0ZXIoKSB7XHJcbiAgICB0aGlzLmNsb3NlVG9vbHRpcCgpO1xyXG4gIH1cclxuXHJcbiAgdXBkYXRlU29ydE1hcCgpe1xyXG4gICAgdGhpcy5hbm5hU29ydFNlcnZpY2UuY29sdW1uU29ydFN0YXRlID0gbmV3IE1hcCgpO1xyXG4gICAgdGhpcy5hbm5hU29ydFNlcnZpY2UuY29sdW1uU29ydFN0YXRlLnNldCh0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnNlbGVjdGVkUmFkaW8sIHRoaXMudGVtcFNvcnRPcmRlcik7XHJcbiAgICB0aGlzLmFwcGx5U29ydGluZyh0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnNlbGVjdGVkUmFkaW8pO1xyXG4gIH1cclxuXHJcbiAgYXBwbHlEYXRlRmlsdGVyKCkge1xyXG4gICAgdGhpcy5hcHBseURhdGVGaWx0ZXJPbkRhdGEoKTtcclxuICAgIHRoaXMuYXBwbHlTb3J0aW5nT25GaWx0ZXJlZERhdGEoKTtcclxuICAgIHRoaXMuZW1pdERhdGEoKTtcclxuICAgIHRoaXMuc2V0SW5pdGlhbFJvd3NGb3JUYWJsZSgpO1xyXG4gICAgdGhpcy5hbm5hRmlsdGVyU2VydmljZS51cGRhdGVTdGF0ZU9mQWxsVGhlS2V5cyh0aGlzLmFubmFTb3J0U2VydmljZS5jb2x1bW5Tb3J0U3RhdGUpO1xyXG4gICAgdGhpcy5jbG9zZVRvb2x0aXAoKTtcclxuICAgIFxyXG4gIH1cclxuXHJcbiAgYXBwbHlEYXRlRmlsdGVyT25EYXRhKCl7XHJcbiAgICBpZih0aGlzLnNob3dGaWx0ZXJDb21wb25lbnQgJiYgdGhpcy5pc0ZpbHRlckNoYW5nZWQpe1xyXG4gICAgICBsZXQgY3VycmVudFNlbGVjdGVkRGF0ZSA9IHRoaXMuY2FsZW5kYXJTZWxlY3Rpb247XHJcbiAgICAgIFxyXG4gICAgICBsZXQgZnJvbURhdGUgPSB7eWVhcjogY3VycmVudFNlbGVjdGVkRGF0ZS5mcm9tRGF0ZS55ZWFyLG1vbnRoOiBjdXJyZW50U2VsZWN0ZWREYXRlLmZyb21EYXRlLm1vbnRoLGRheTogY3VycmVudFNlbGVjdGVkRGF0ZS5mcm9tRGF0ZS5kYXl9O1xyXG4gICAgICBsZXQgdG9EYXRlID0ge3llYXI6IGN1cnJlbnRTZWxlY3RlZERhdGUudG9EYXRlLnllYXIsbW9udGg6IGN1cnJlbnRTZWxlY3RlZERhdGUudG9EYXRlLm1vbnRoLGRheTogY3VycmVudFNlbGVjdGVkRGF0ZS50b0RhdGUuZGF5fTtcclxuICAgICAgICAgIFxyXG4gICAgICBpZihpc0VxdWFsKHRoaXMuY2FsZW5kYXJNaW5FbmFibGVkRGF0ZSxmcm9tRGF0ZSkgJiYgaXNFcXVhbCh0aGlzLmNhbGVuZGFyTWF4RW5hYmxlZERhdGUsdG9EYXRlKSAmJiB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmluaXRpYWxWYWx1ZU1hcC5oYXModGhpcy5hbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvKSl7XHJcbiAgICAgICAgICBjdXJyZW50U2VsZWN0ZWREYXRlID0gdGhpcy5hbm5hRmlsdGVyU2VydmljZS5pbml0aWFsVmFsdWVNYXAuZ2V0KHRoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpbyk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZXtcclxuICAgICAgICAgIGN1cnJlbnRTZWxlY3RlZERhdGUuZnJvbURhdGUgPSBkYXlqcyh0aGlzLmFubmFEYXRlVGltZUZvcm1hdFNlcnZpY2UuY29udmVydE5nYkRhdGVUb01vbWVudChjdXJyZW50U2VsZWN0ZWREYXRlLmZyb21EYXRlKSk7XHJcbiAgICAgICAgICBjdXJyZW50U2VsZWN0ZWREYXRlLnRvRGF0ZSA9IGRheWpzKHRoaXMuYW5uYURhdGVUaW1lRm9ybWF0U2VydmljZS5jb252ZXJ0TmdiRGF0ZVRvTW9tZW50KGN1cnJlbnRTZWxlY3RlZERhdGUudG9EYXRlKSk7XHJcbiAgICAgIH1cclxuICAgICAgICAgIFxyXG4gICAgICAgICAgXHJcbiAgICAgIHRoaXMuYW5uYUZpbHRlclNlcnZpY2UucmVPcmRlckFwcGxpZWRGaWx0ZXJzU3RhdGUodGhpcy5jbG9uZWRUYWJsZURhdGEsY3VycmVudFNlbGVjdGVkRGF0ZSk7XHJcbiAgICAgIHRoaXMuYW5uYUZpbHRlclNlcnZpY2UudG9vbHRpcFNlbGVjdGVkTWFwLnNldCh0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnNlbGVjdGVkUmFkaW8sY3VycmVudFNlbGVjdGVkRGF0ZSk7XHJcbiAgICAgIHRoaXMudGFibGVEYXRhID0gdGhpcy5hbm5hRmlsdGVyU2VydmljZS5maWx0ZXJEYXRhKHRoaXMuY2xvbmVkVGFibGVEYXRhLCBcIlwiKTtcclxuICAgICAgdGhpcy5hbm5hU29ydFNlcnZpY2Uubm9Tb3J0aW5nQXBwbGllZERhdGEgPSBjbG9uZURlZXAodGhpcy50YWJsZURhdGEpO1xyXG4gICAgICB0aGlzLmRpc2FibGVFbmFibGVFYWNoQ29sdW1uVG9vbHRpcEljb24oKTtcclxuXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhcHBseVdlZWtGaWx0ZXIoZXZlbnQ6IGFueSkge1xyXG5cclxuICB9XHJcblxyXG4gIGluY3JlbWVudEhvdXIoYXJyOiBhbnlbXSkge1xyXG4gICAgaWYgKGFyclswXSA9PSBcIlwiKSB7XHJcbiAgICAgIGFyclswXSA9IDE7XHJcbiAgICB9IGVsc2UgaWYgKHBhcnNlSW50KGFyclswXSkgPCAxMikge1xyXG4gICAgICBhcnJbMF0gPSBwYXJzZUludChhcnJbMF0pICsgMTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGFyclswXSA9IDE7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBkZWNyZW1lbnRIb3VyKGFycjogYW55W10pIHtcclxuICAgIGlmIChhcnJbMF0gPT0gXCJcIikge1xyXG4gICAgICBhcnJbMF0gPSAxMjtcclxuICAgIH0gZWxzZSBpZiAocGFyc2VJbnQoYXJyWzBdKSA+IDEpIHtcclxuICAgICAgYXJyWzBdID0gcGFyc2VJbnQoYXJyWzBdKSAtIDE7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBhcnJbMF0gPSAxMjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGluY3JlbWVudE1pbnV0ZShhcnI6IGFueVtdKSB7XHJcbiAgLy8gaW5jcmVtZW50IHRvIG5lYXJlc3QgcHJvcGVyIGludGVydmFsKDE1LDMwLDQ1KVxyXG4gIGxldCBtaW4gPSBwYXJzZUludChhcnJbMV0pXHJcbiAgICBpZiAobWluIDw9IDE0KSB7XHJcbiAgICAgIGFyclsxXSA9IFwiMTVcIjtcclxuICAgIH0gZWxzZSBpZiAobWluID49IDE1ICYmIG1pbiA8PSAyOSkge1xyXG4gICAgICBhcnJbMV0gPSBcIjMwXCI7XHJcbiAgICB9IGVsc2UgaWYgKG1pbiA+PSAzMCAmJiBtaW4gPD0gNDQpIHtcclxuICAgICAgYXJyWzFdID0gXCI0NVwiO1xyXG4gICAgfSBlbHNlIGlmIChtaW4gPj0gNDUpIHtcclxuICAgICAgYXJyWzFdID0gXCIwMFwiO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZGVjcmVtZW50TWludXRlKGFycjogYW55KSB7XHJcbiAgICBsZXQgbWluID0gcGFyc2VJbnQoYXJyWzFdKTtcclxuICAgIGlmIChtaW4gPiAwICYmIG1pbiA8PSAxNSkge1xyXG4gICAgICBhcnJbMV0gPSBcIjAwXCI7XHJcbiAgICB9IGVsc2UgaWYgKG1pbiA+PSAxNiAmJiBtaW4gPD0gMzApIHtcclxuICAgICAgYXJyWzFdID0gXCIxNVwiO1xyXG4gICAgfSBlbHNlIGlmIChtaW4gPj0gMzEgJiYgbWluIDw9IDQ1KSB7XHJcbiAgICAgIGFyclsxXSA9IFwiMzBcIjtcclxuICAgIH0gZWxzZSBpZiAobWluID4gNDUgfHwgbWluID09IDApIHtcclxuICAgICAgYXJyWzFdID0gXCI0NVwiO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2hhbmdlU3RhcnRUaW1lSG91cihpbmNyZW1lbnQ6IGJvb2xlYW4pIHtcclxuICAgIGlmKCF0aGlzLnN0YXJ0VGltZUhvdXJFcnIpe1xyXG4gICAgICBpZiAoaW5jcmVtZW50KSB7XHJcbiAgICAgICAgdGhpcy5pbmNyZW1lbnRIb3VyKHRoaXMuc2VsZWN0ZWRGcm9tVGltZSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5kZWNyZW1lbnRIb3VyKHRoaXMuc2VsZWN0ZWRGcm9tVGltZSk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5zdGFydFRpbWVIb3VyQ2hhbmdlKHRoaXMuc2VsZWN0ZWRGcm9tVGltZVswXS50b1N0cmluZygpKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNoYW5nZUVuZFRpbWVIb3VyKGluY3JlbWVudDogYm9vbGVhbikge1xyXG4gICAgaWYoIXRoaXMuZW5kVGltZUhvdXJFcnIpe1xyXG4gICAgICBpZiAoaW5jcmVtZW50KSB7XHJcbiAgICAgICAgdGhpcy5pbmNyZW1lbnRIb3VyKHRoaXMuc2VsZWN0ZWRUb1RpbWUpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuZGVjcmVtZW50SG91cih0aGlzLnNlbGVjdGVkVG9UaW1lKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmVuZFRpbWVIb3VyQ2hhbmdlKHRoaXMuc2VsZWN0ZWRUb1RpbWVbMF0udG9TdHJpbmcoKSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjaGFuZ2VFbmRUaW1lTWludXRlKGluY3JlbWVudDogYm9vbGVhbikge1xyXG4gICAgaWYoIXRoaXMuZW5kVGltZU1pbkVycil7XHJcbiAgICAgIGlmIChpbmNyZW1lbnQpIHtcclxuICAgICAgICB0aGlzLmluY3JlbWVudE1pbnV0ZSh0aGlzLnNlbGVjdGVkVG9UaW1lKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmRlY3JlbWVudE1pbnV0ZSh0aGlzLnNlbGVjdGVkVG9UaW1lKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmVuZFRpbWVNaW5DaGFuZ2UodGhpcy5zZWxlY3RlZFRvVGltZVsxXS50b1N0cmluZygpKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNoYW5nZVN0YXJ0VGltZU1pbnV0ZShpbmNyZW1lbnQ6IGJvb2xlYW4pIHtcclxuICAgIGlmKCF0aGlzLnN0YXJ0VGltZU1pbkVycil7XHJcbiAgICAgIGlmIChpbmNyZW1lbnQpIHtcclxuICAgICAgICB0aGlzLmluY3JlbWVudE1pbnV0ZSh0aGlzLnNlbGVjdGVkRnJvbVRpbWUpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuZGVjcmVtZW50TWludXRlKHRoaXMuc2VsZWN0ZWRGcm9tVGltZSk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5zdGFydFRpbWVNaW5DaGFuZ2UodGhpcy5zZWxlY3RlZEZyb21UaW1lWzFdLnRvU3RyaW5nKCkpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYXBwbHlUaW1lRmlsdGVycygpIHtcclxuXHJcbiAgICB0aGlzLmFwcGx5VGltZUZpbHRlck9uRGF0YSgpO1xyXG4gICAgdGhpcy5hcHBseVNvcnRpbmdPbkZpbHRlcmVkRGF0YSgpO1xyXG4gICAgdGhpcy5lbWl0RGF0YSgpO1xyXG4gICAgdGhpcy5zZXRJbml0aWFsUm93c0ZvclRhYmxlKCk7XHJcbiAgICB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnVwZGF0ZVN0YXRlT2ZBbGxUaGVLZXlzKHRoaXMuYW5uYVNvcnRTZXJ2aWNlLmNvbHVtblNvcnRTdGF0ZSk7XHJcbiAgICB0aGlzLmNsb3NlVG9vbHRpcCgpO1xyXG5cclxuICB9XHJcblxyXG4gIGFwcGx5VGltZUZpbHRlck9uRGF0YSgpe1xyXG4gICAgaWYodGhpcy5zaG93RmlsdGVyQ29tcG9uZW50ICYmIHRoaXMuaXNGaWx0ZXJDaGFuZ2VkKXtcclxuICAgICAgbGV0IGN1cnJlbnRTZWxlY3RlZFRpbWVGaWx0ZXI6IHtmcm9tVGltZTogc3RyaW5nLCB0b1RpbWU6c3RyaW5nLCBpbmNsdWRlTXVsdGk6IGJvb2xlYW4sIGluY2x1ZGVaZXJvOiBib29sZWFuLCBpbmNsdWRlVGltZVJhbmdlOiBib29sZWFufSA9IHtcclxuICAgICAgICBmcm9tVGltZTogbnVsbCxcclxuICAgICAgICB0b1RpbWU6IG51bGwsXHJcbiAgICAgICAgaW5jbHVkZU11bHRpOiBmYWxzZSxcclxuICAgICAgICBpbmNsdWRlWmVybzogZmFsc2UsXHJcbiAgICAgICAgaW5jbHVkZVRpbWVSYW5nZTogZmFsc2UsXHJcbiAgICAgIH07XHJcbiAgXHJcbiAgICAgIGxldCBmcm9tVGltZTI0SHJGb3JtYXRBcnIgPSB0aGlzLmFubmFEYXRlVGltZUZvcm1hdFNlcnZpY2UuY29udmVydFRvdHdlbnR5Rm91ckhyc0Zvcm1hdChcclxuICAgICAgICB0aGlzLnNlbGVjdGVkRnJvbVRpbWVbMF0gKyBcIjpcIiArIHRoaXMuc2VsZWN0ZWRGcm9tVGltZVsxXSArIFwiIFwiICsgdGhpcy5zZWxlY3RlZEZyb21UaW1lWzJdLFxyXG4gICAgICAgIHRydWVcclxuICAgICAgKTtcclxuICAgICAgbGV0IGZyb21UaW1lMjRIckZvcm1hdCA9IGZyb21UaW1lMjRIckZvcm1hdEFyclswXSArIFwiOlwiICsgZnJvbVRpbWUyNEhyRm9ybWF0QXJyWzFdICsgXCI6MDBcIjtcclxuICAgICAgXHJcbiAgICAgIGxldCB0b1RpbWUyNEhyRm9ybWF0QXJyID0gdGhpcy5hbm5hRGF0ZVRpbWVGb3JtYXRTZXJ2aWNlLmNvbnZlcnRUb3R3ZW50eUZvdXJIcnNGb3JtYXQoXHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZFRvVGltZVswXSArIFwiOlwiICsgdGhpcy5zZWxlY3RlZFRvVGltZVsxXSArIFwiIFwiICsgdGhpcy5zZWxlY3RlZFRvVGltZVsyXSxcclxuICAgICAgICB0cnVlXHJcbiAgICAgICk7XHJcbiAgICAgIGxldCB0b1RpbWUyNEhyRm9ybWF0ID0gdG9UaW1lMjRIckZvcm1hdEFyclswXSArIFwiOlwiICsgdG9UaW1lMjRIckZvcm1hdEFyclsxXSArIFwiOjU5XCI7XHJcbiAgXHJcbiAgICAgIGN1cnJlbnRTZWxlY3RlZFRpbWVGaWx0ZXIgPSB7IGZyb21UaW1lOiBmcm9tVGltZTI0SHJGb3JtYXQsIHRvVGltZTogdG9UaW1lMjRIckZvcm1hdCwgaW5jbHVkZU11bHRpOiB0aGlzLm11bHRpVGltZUNoZWNrYm94Q2hlY2tlZCwgXHJcbiAgICAgIGluY2x1ZGVaZXJvOiB0aGlzLnplcm9UaW1lQ2hlY2tib3hDaGVja2VkLCBpbmNsdWRlVGltZVJhbmdlOiB0aGlzLmVudGVyVGltZUNoZWNrYm94Q2hlY2tlZH07XHJcbiAgXHJcbiAgICAgIGxldCBpc0ZpbHRlcmVkID0gdGhpcy5hbm5hRmlsdGVyU2VydmljZS5yZU9yZGVyQXBwbGllZEZpbHRlcnNTdGF0ZSh0aGlzLmNsb25lZFRhYmxlRGF0YSxjdXJyZW50U2VsZWN0ZWRUaW1lRmlsdGVyKTtcclxuICAgICAgdGhpcy5hbm5hRmlsdGVyU2VydmljZS50b29sdGlwU2VsZWN0ZWRNYXAuc2V0KHRoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpbyxjdXJyZW50U2VsZWN0ZWRUaW1lRmlsdGVyKTtcclxuICAgICAgdGhpcy50YWJsZURhdGEgPSB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmZpbHRlckRhdGEodGhpcy5jbG9uZWRUYWJsZURhdGEsIFwiXCIpO1xyXG4gICAgICBcclxuICAgICAgaWYoIWlzRmlsdGVyZWQpe1xyXG4gICAgICAgIHRoaXMuYW5uYUZpbHRlclNlcnZpY2UudG9vbHRpcFNlbGVjdGVkTWFwLmRlbGV0ZSh0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnNlbGVjdGVkUmFkaW8pO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuYW5uYVNvcnRTZXJ2aWNlLm5vU29ydGluZ0FwcGxpZWREYXRhID0gY2xvbmVEZWVwKHRoaXMudGFibGVEYXRhKTtcclxuICAgICAgdGhpcy5kaXNhYmxlRW5hYmxlRWFjaENvbHVtblRvb2x0aXBJY29uKCk7ICAgICAgICAgICAgXHJcbiBcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNsb3NlVGltZUZpbHRlcigpIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRGcm9tVGltZSA9IGNsb25lRGVlcCh0aGlzLmNsb25lZFNlbGVjdGVkRnJvbVRpbWUpO1xyXG4gICAgdGhpcy5zZWxlY3RlZFRvVGltZSA9IGNsb25lRGVlcCh0aGlzLmNsb25lZFNlbGVjdGVkVG9UaW1lKTtcclxuICAgIHRoaXMuY2xvc2VUb29sdGlwKCk7XHJcbiAgfVxyXG5cclxuICBkaXNhYmxlVGltZUZpbHRlckFwcGx5QnV0dG9uKCkge1xyXG5cclxuICAgIGlmKHRoaXMuc2hvd0ZpbHRlckNvbXBvbmVudCAmJiB0aGlzLnNob3dTb3J0Q29tcG9uZW50KXtcclxuICAgICAgbGV0IGlzRmlsdGVyQ2hhbmdlZCA9IHRoaXMuY2hlY2tJZlRpbWVUb29sdGlwSXNGaWx0ZXJlZCgpO1xyXG4gICAgICBsZXQgaXNTb3J0Q2hhbmdlZCA9IHRoaXMuY2hlY2tJZlNvcnRpbmdDaGFuZ2VkKCk7XHJcbiAgICAgIHRoaXMuZGlzYWJsZVRpbWVGaWx0ZXJBcHBseUJ0biA9ICF0aGlzLnZhbGlkYXRlVGltZUZpbHRlcklucHV0KCkgfHwgKCFpc1NvcnRDaGFuZ2VkICYmICFpc0ZpbHRlckNoYW5nZWQgKTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYodGhpcy5zaG93RmlsdGVyQ29tcG9uZW50KXtcclxuICAgICAgICB0aGlzLmRpc2FibGVUaW1lRmlsdGVyQXBwbHlCdG4gPSAhdGhpcy52YWxpZGF0ZVRpbWVGaWx0ZXJJbnB1dCgpIHx8ICF0aGlzLmNoZWNrSWZUaW1lVG9vbHRpcElzRmlsdGVyZWQoKTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYodGhpcy5zaG93U29ydENvbXBvbmVudCl7XHJcbiAgICAgICAgdGhpcy5kaXNhYmxlVGltZUZpbHRlckFwcGx5QnRuID0gIXRoaXMuY2hlY2tJZlNvcnRpbmdDaGFuZ2VkKCk7XHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbiAgdmFsaWRhdGVUaW1lRmlsdGVySW5wdXQoKXtcclxuICAgIGlmKHRoaXMuc3RhcnRUaW1lSG91ckVyciB8fCB0aGlzLnN0YXJ0VGltZU1pbkVyciB8fCB0aGlzLmVuZFRpbWVIb3VyRXJyIHx8IHRoaXMuZW5kVGltZU1pbkVycil7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICgodGhpcy5zaG93TXVsdGlUaW1lQ2hlY2tib3ggJiYgIXRoaXMubXVsdGlUaW1lQ2hlY2tib3hDaGVja2VkKSAmJiBcclxuICAgICAgICAgICh0aGlzLnNob3daZXJvVGltZUNoZWNrYm94ICYmICF0aGlzLnplcm9UaW1lQ2hlY2tib3hDaGVja2VkICkmJiBcclxuICAgICAgICAgICh0aGlzLnNob3dFbnRlclRpbWVDaGVja2JveCAmJiAhdGhpcy5lbnRlclRpbWVDaGVja2JveENoZWNrZWQpKSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIGxldCB0aW1lRm9ybWF0ID0gXCJISDptbTpzc1wiO1xyXG5cclxuICAgIGxldCBzdGFydFRpbWUyNEhyRm9ybWF0QXJyID0gdGhpcy5hbm5hRGF0ZVRpbWVGb3JtYXRTZXJ2aWNlLmNvbnZlcnRUb3R3ZW50eUZvdXJIcnNGb3JtYXQoXHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZEZyb21UaW1lWzBdICsgXCI6XCIgKyB0aGlzLnNlbGVjdGVkRnJvbVRpbWVbMV0gKyBcIiBcIiArIHRoaXMuc2VsZWN0ZWRGcm9tVGltZVsyXSxcclxuICAgICAgICB0cnVlXHJcbiAgICApO1xyXG4gICAgbGV0IHN0YXJ0VGltZTI0SHJGb3JtYXQgPSBzdGFydFRpbWUyNEhyRm9ybWF0QXJyWzBdICsgXCI6XCIgKyBzdGFydFRpbWUyNEhyRm9ybWF0QXJyWzFdICsgXCI6MDBcIjtcclxuICAgIGxldCBlbmRUaW1lMjRIckZvcm1hdEFyciA9IHRoaXMuYW5uYURhdGVUaW1lRm9ybWF0U2VydmljZS5jb252ZXJ0VG90d2VudHlGb3VySHJzRm9ybWF0KFxyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRUb1RpbWVbMF0gKyBcIjpcIiArIHRoaXMuc2VsZWN0ZWRUb1RpbWVbMV0gKyBcIiBcIiArIHRoaXMuc2VsZWN0ZWRUb1RpbWVbMl0sXHJcbiAgICAgICAgdHJ1ZVxyXG4gICAgKTtcclxuICAgIGxldCBlbmRUaW1lMjRIckZvcm1hdCA9IGVuZFRpbWUyNEhyRm9ybWF0QXJyWzBdICsgXCI6XCIgKyBlbmRUaW1lMjRIckZvcm1hdEFyclsxXSArIFwiOjAwXCI7XHJcblxyXG4gICAgcmV0dXJuICEoZGF5anMoc3RhcnRUaW1lMjRIckZvcm1hdCwgdGltZUZvcm1hdCkuaXNBZnRlcihkYXlqcyhlbmRUaW1lMjRIckZvcm1hdCwgdGltZUZvcm1hdCkpKTsgICAgICAgIFxyXG4gIH1cclxuXHJcbiAgc29ydGVkRGF0YShldmVudDogYW55KSB7XHJcbiAgICBpZiAoZXZlbnQudHlwZSA9PSBcIm5vbmVcIikge1xyXG4gICAgICB0aGlzLnRhYmxlRGF0YSA9IHRoaXMuYW5uYUZpbHRlclNlcnZpY2UuZmlsdGVyRGF0YSh0aGlzLmNsb25lZFRhYmxlRGF0YSwgXCJcIik7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnRhYmxlRGF0YSA9IGV2ZW50LmRhdGE7XHJcbiAgICB9XHJcbiAgICB0aGlzLnNvcnRpbmdBcHBsaWVkVG9UYWJsZS5lbWl0KHRoaXMudGFibGVEYXRhKTtcclxuICB9XHJcblxyXG4gIGNoZWNrSWZTb3J0aW5nSXNBcHBsaWVkKCkge1xyXG4gICAgZm9yKGxldCBba2V5LHZhbHVlXSBvZiB0aGlzLmFubmFTb3J0U2VydmljZS5jb2x1bW5Tb3J0U3RhdGUuZW50cmllcygpKXtcclxuICAgICAgaWYodmFsdWUgPT0gXCJBU0NcIil7XHJcbiAgICAgICAgICB0aGlzLnRhYmxlRGF0YSA9IGNsb25lRGVlcCh0aGlzLmFubmFTb3J0U2VydmljZS5zb3J0RGF0YUZvckNvbXBvbmVudE90aGVyVGhhbkx1ckFuZENzclBhZ2UodHJ1ZSx0aGlzLnRhYmxlRGF0YSxrZXkpKTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIGlmKHZhbHVlID09IFwiREVTQ1wiKXtcclxuICAgICAgICAgIHRoaXMudGFibGVEYXRhID0gY2xvbmVEZWVwKHRoaXMuYW5uYVNvcnRTZXJ2aWNlLnNvcnREYXRhRm9yQ29tcG9uZW50T3RoZXJUaGFuTHVyQW5kQ3NyUGFnZShmYWxzZSx0aGlzLnRhYmxlRGF0YSxrZXkpKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG4gIGRpc2FibGVFbmFibGVFYWNoQ29sdW1uVG9vbHRpcEljb24oKSB7XHJcbiAgICB0aGlzLnRhYmxlSGVhZGVycy5mb3JFYWNoKGhlYWRlciA9PiB7XHJcbiAgICAgIFxyXG4gICAgICBoZWFkZXIuaGVhZGVySW5mby5mb3JFYWNoKGl0ZW0gPT4ge1xyXG4gICAgICAgIGlmIChpdGVtLnNob3dUb29sdGlwSWNvbikge1xyXG4gICAgICAgICAgXHJcbiAgICAgICAgICBsZXQgdmFsdWVzID0gW107XHJcbiAgICAgICAgICBpdGVtLmRpc2FibGVUb29sdGlwSWNvbiA9IHRydWU7XHJcblxyXG4gICAgICAgICAgaXRlbS5maWx0ZXJTb3J0T2JqZWN0S2V5cy5mb3JFYWNoKGtleSA9PiB7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICBsZXQgbGF0ZXN0RmlsdGVycyA9IHRoaXMuYW5uYUZpbHRlclNlcnZpY2UuYXBwbGllZEZpbHRlcnNBcnJheTtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIGlmKGxhdGVzdEZpbHRlcnMubGVuZ3RoID4gMCAmJiBpdGVtLmRpc2FibGVUb29sdGlwSWNvbiAmJiBsYXRlc3RGaWx0ZXJzW2xhdGVzdEZpbHRlcnMubGVuZ3RoIC0gMV0gPT0ga2V5KXtcclxuICAgICAgICAgICAgICAgIGl0ZW0uZGlzYWJsZVRvb2x0aXBJY29uID0gZmFsc2U7XHJcbiAgICAgICAgICAgIH0gXHJcblxyXG4gICAgICAgICAgICBpZihpdGVtLmRpc2FibGVUb29sdGlwSWNvbil7XHJcbiAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgaWYoa2V5ID09IFwicGVyaW9kXCIpe1xyXG4gICAgICAgICAgICAgICAgbGV0IHVuaXFTdGFydERhdGUgPSB1bmlxKHRoaXMudGFibGVEYXRhLm1hcCgodTogeyBbeDogc3RyaW5nXTogYW55OyB9KSA9PiB1W1wic3RhcnREYXRlXCJdKSk7XHJcbiAgICAgICAgICAgICAgICBsZXQgdW5pcUVuZERhdGUgPSB1bmlxKHRoaXMudGFibGVEYXRhLm1hcCgodTogeyBbeDogc3RyaW5nXTogYW55OyB9KSA9PiB1W1wiZW5kRGF0ZVwiXSkpO1xyXG4gIFxyXG4gICAgICAgICAgICAgICAgaXRlbS5kaXNhYmxlVG9vbHRpcEljb24gPSAodW5pcVN0YXJ0RGF0ZS5sZW5ndGggPiAxIHx8IHVuaXFFbmREYXRlLmxlbmd0aCA+IDEpID8gZmFsc2UgOiB0cnVlOyBcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgZWxzZXtcclxuICAgICAgICAgICAgICAgIHZhbHVlcyA9IHRoaXMudGFibGVEYXRhLm1hcCgodTogeyBbeDogc3RyaW5nXTogYW55OyB9KSA9PiB1W2tleV0pO1xyXG4gICAgICAgICAgICAgICAgaWYoIChpdGVtLmZpbHRlciA9PSBcIkNIRUNLQk9YXCIgJiYgdW5pcSh2YWx1ZXMpLmZpbHRlcihuID0+IG4hPW51bGwpLmxlbmd0aCA+IDEpIHx8IChpdGVtLmZpbHRlciAhPSBcIkNIRUNLQk9YXCIgJiYgdW5pcSh2YWx1ZXMpLmZpbHRlcihuID0+IG4hPW51bGwgJiYgbiE9XCItXCIpLmxlbmd0aCA+IDEpKXtcclxuICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgIGl0ZW0uZGlzYWJsZVRvb2x0aXBJY29uID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgfSlcclxuICAgICAgICB9XHJcbiAgICAgICAgXHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcblxyXG4gIFxyXG4gIH1cclxuXHJcbiAgc2V0TWFyZ2luTGVmdEZvckZpbHRlckljb24oKXtcclxuICAgIGxldCBlbGVtZW50QXJyID0gdGhpcy52aWV3Q2hpbGRUYWJsZUhlYWRlcnMudG9BcnJheSgpO1xyXG4gICAgZWxlbWVudEFyci5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgIGxldCBjaGlsZERpdkVsZW1lbnRzID0gaXRlbS5uYXRpdmVFbGVtZW50LmNoaWxkcmVuO1xyXG4gICAgICBcclxuICAgICAgaWYgKGNoaWxkRGl2RWxlbWVudHMubGVuZ3RoID09IDIpIHtcclxuICAgICAgICBsZXQgZmlyc3RQYXJhZ3JhcGhXaWR0aCA9IGNoaWxkRGl2RWxlbWVudHNbMF0uY2hpbGRyZW5bMF07XHJcbiAgICAgICAgbGV0IHNlY29uZFBhcmFncmFwaFdpZHRoID0gY2hpbGREaXZFbGVtZW50c1sxXS5jaGlsZHJlblswXTtcclxuICAgICAgICBcclxuICAgICAgICBpZihmaXJzdFBhcmFncmFwaFdpZHRoLm9mZnNldFdpZHRoID4gc2Vjb25kUGFyYWdyYXBoV2lkdGgub2Zmc2V0V2lkdGgpe1xyXG4gICAgICAgICAgbGV0IGRpZmYgPSBmaXJzdFBhcmFncmFwaFdpZHRoLm9mZnNldFdpZHRoIC0gc2Vjb25kUGFyYWdyYXBoV2lkdGgub2Zmc2V0V2lkdGg7XHJcbiAgICAgICAgICBpZihjaGlsZERpdkVsZW1lbnRzWzBdLmNoaWxkcmVuLmxlbmd0aCA9PSAyKXtcclxuICAgICAgICAgICAgY2hpbGREaXZFbGVtZW50c1swXS5jaGlsZHJlblsxXS5zdHlsZS5tYXJnaW5MZWZ0ID0gNCArICdweCc7XHJcbiAgICAgICAgICB9XHJcbiAgXHJcbiAgICAgICAgICBpZihjaGlsZERpdkVsZW1lbnRzWzFdLmNoaWxkcmVuLmxlbmd0aCA9PSAyKXtcclxuXHJcbiAgICAgICAgICAgIGNoaWxkRGl2RWxlbWVudHNbMV0uY2hpbGRyZW5bMV0uc3R5bGUubWFyZ2luTGVmdCA9IGRpZmYgKyA0ICsgJ3B4JztcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZXtcclxuICAgICAgICAgIGxldCBkaWZmID0gc2Vjb25kUGFyYWdyYXBoV2lkdGgub2Zmc2V0V2lkdGggLSBmaXJzdFBhcmFncmFwaFdpZHRoLm9mZnNldFdpZHRoO1xyXG4gICAgICAgICAgaWYoY2hpbGREaXZFbGVtZW50c1swXS5jaGlsZHJlbi5sZW5ndGggPT0gMil7XHJcbiAgICAgICAgICAgIGNoaWxkRGl2RWxlbWVudHNbMF0uY2hpbGRyZW5bMV0uc3R5bGUubWFyZ2luTGVmdCA9IGRpZmYgKyA0ICsgJ3B4JztcclxuICAgICAgICAgIH1cclxuICBcclxuICAgICAgICAgIGlmKGNoaWxkRGl2RWxlbWVudHNbMV0uY2hpbGRyZW4ubGVuZ3RoID09IDIpe1xyXG5cclxuICAgICAgICAgICAgY2hpbGREaXZFbGVtZW50c1sxXS5jaGlsZHJlblsxXS5zdHlsZS5tYXJnaW5MZWZ0ID0gNCArICdweCc7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIFxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGRhdGFSb3dDbGlja2VkKHJvd0RhdGE6IGFueSkge1xyXG4gICAgdGhpcy5yb3dDbGlja2VkLmVtaXQocm93RGF0YSk7XHJcbiAgfVxyXG5cclxuICByYWRpb0J1dHRvbkNsaWNrZWQoZGF0YTogYW55LCBhY3Rpb246IHN0cmluZywgaXNEaXNhYmxlZDogYm9vbGVhbikge1xyXG4gICAgaWYgKCFpc0Rpc2FibGVkKSB7XHJcbiAgICAgIHRoaXMucmFkaW9CdXR0b25TZWxlY3RlZC5lbWl0KHsgZGF0YSwgYWN0aW9uIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYmluZFRoZVZhbHVlVG9TZWxsZXJHcm91cFRvb2x0aXAoc2VsbGVyR3JvdXBIaWVyYXJjaHk6IFJhdGluZ1NlbGxlckdyb3VwSGllcmFyY2h5W10sIHRvb2x0aXA6IGFueSk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuaGllcmFyY2h5VG9vbHRpcCAmJiB0aGlzLmhpZXJhcmNoeVRvb2x0aXAub3Blbikge1xyXG4gICAgICB0aGlzLmhpZXJhcmNoeVRvb2x0aXAuY2xvc2UoKTtcclxuICAgIH1cclxuICAgIHRoaXMuc2VsbGVyR3JvdXBIaWVyYXJjaHkgPSBzZWxsZXJHcm91cEhpZXJhcmNoeTtcclxuICAgIHRoaXMuaGllcmFyY2h5VG9vbHRpcCA9IHRvb2x0aXA7XHJcbiAgICB0aGlzLmhpZXJhcmNoeVRvb2x0aXAub3BlbigpO1xyXG4gIH1cclxuXHJcbiAgaWNvbkNsaWNrZWQocm93RGF0YTogYW55LGljb25DbGFzczogc3RyaW5nKXtcclxuICAgIFxyXG4gICAgaWYoXCJvcmRlcklkXCIgaW4gcm93RGF0YSAmJiBpY29uQ2xhc3MuaW5jbHVkZXMoXCJtZGktc3RhclwiKSApe1xyXG4gICAgICB0aGlzLnNlbGVjdGVkU3RhcnJlZE9yZGVySWQgPSByb3dEYXRhLm9yZGVySWQ7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5ndEljb25DbGlja2VkLmVtaXQoe2RhdGE6IHJvd0RhdGEsaWNvbkNsYXNzOiBpY29uQ2xhc3N9KTtcclxuICB9XHJcblxyXG4gIHN2Z0ljb25DbGlja2VkKGRhdGE6IEd0Q29sdW1uSWNvbkVtaXR0ZWREYXRhKXtcclxuICAgIHRoaXMuZ3RTVkdJY29uQ2xpY2tlZC5lbWl0KGRhdGEpO1xyXG4gIH1cclxuXHJcbiAgdGV4dEFjdGlvbkNsaWNrZWQocm93RGF0YTogYW55LGlkOiBhbnkpe1xyXG4gICAgdGhpcy5ndFRleHRBY3Rpb25DbGlja2VkLmVtaXQoe2RhdGE6cm93RGF0YSwgaWQ6IGlkfSk7XHJcbiAgfVxyXG5cclxuICBpY29uQ2xpY2tlZE9uU3RyaW5nSWNvbkFjdGlvblR5cGUocm93RGF0YTogYW55LCBpZDogYW55KXtcclxuICAgIHRoaXMuZ3RUZXh0QWN0aW9uQ2xpY2tlZC5lbWl0KHtkYXRhOnJvd0RhdGEsIGlkOiBpZH0pO1xyXG4gIH1cclxuXHJcbiAgdmlld0RldGFpbHNDbGlja2VkKHJvd0RhdGE6IGFueSl7XHJcbiAgICB0aGlzLmd0Vmlld0RldGFpbENsaWNrZWQuZW1pdCh7ZGF0YTpyb3dEYXRhfSk7XHJcbiAgfVxyXG5cclxuICAvLyBzZXRDb2x1bW5Tb3J0U3RhdGVNYXAoKXtcclxuICAvLyAgIHRoaXMudGFibGVIZWFkZXJzLmZvckVhY2goY29sdW1uID0+IHtcclxuICAvLyAgICAgICBjb2x1bW4uaGVhZGVySW5mby5mb3JFYWNoKCAoaGVhZGVyKSA9PiB7XHJcbiAgLy8gICAgICAgICAgIGlmKGhlYWRlci5zaG93VG9vbHRpcEljb24gJiYgaGVhZGVyLmlzU29ydFJlcXVpcmVkKXtcclxuICAvLyAgICAgICAgICAgICAgIGhlYWRlci5pc1NvcnRSZXF1aXJlZC5mb3JFYWNoKCAoaXRlbSxpbmRleCkgPT4ge1xyXG4gIC8vICAgICAgICAgICAgICAgICBpZihpdGVtKXtcclxuICAvLyAgICAgICAgICAgICAgICAgICB0aGlzLmFubmFTb3J0U2VydmljZS5jb2x1bW5Tb3J0U3RhdGUuc2V0KGhlYWRlci5maWx0ZXJTb3J0T2JqZWN0S2V5c1tpbmRleF0sIFwiREVGQVVMVFwiKTsgIFxyXG4gIC8vICAgICAgICAgICAgICAgICB9XHJcbiAgLy8gICAgICAgICAgICAgICB9KVxyXG4gIC8vICAgICAgICAgICB9XHJcbiAgLy8gICAgICAgfSlcclxuICAvLyAgIH0pO1xyXG4gIC8vIH1cclxuXHJcbiAgc3RvcmVTb3J0VHlwZUluVGVtcFZhcmlhYmxlKGV2ZW50OiBTb3J0VHlwZSl7XHJcbiAgICB0aGlzLnRlbXBTb3J0T3JkZXIgPSBldmVudDtcclxuICAgIHRoaXMuZGlzYWJsZUFwcGx5QnV0dG9uT2ZTZWxlY3RlZEZpbHRlcigpO1xyXG4gIH1cclxuXHJcbiAgdW5DaGVja0FsbENoZWNrYm94KCl7XHJcbiAgICAgIHRoaXMudG9vbHRpcE9wdGlvbnMuZm9yRWFjaChpdGVtID0+IHtcclxuICAgICAgICBpdGVtLmlzU2VsZWN0ZWQgPSBmYWxzZTtcclxuICAgICAgICBsZXQgaW5kZXggPSB0aGlzLmNsb25lZFRvb2x0aXBPcHRpb25zLmZpbmRJbmRleChvcHQgPT4gb3B0LmlkID09IGl0ZW0uaWQpO1xyXG4gICAgICAgIHRoaXMuY2xvbmVkVG9vbHRpcE9wdGlvbnNbaW5kZXhdLmlzU2VsZWN0ZWQgPSBmYWxzZTtcclxuICAgICAgICBcclxuICAgICAgfSk7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRDaGVja2JveE9wdGlvbnNDb3VudCA9IDA7XHJcbiAgICAgIHRoaXMuZGlzYWJsZVNlbGVjdEFsbCA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmRpc2FibGVDbGVhckFsbCA9IHRydWU7XHJcbiAgICAgIHRoaXMuZGlzYWJsZUNoZWNrYm94QXBwbHkgPSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgc2VsZWN0QWxsQ2hlY2tib3goKXtcclxuICAgICAgdGhpcy50b29sdGlwT3B0aW9ucy5mb3JFYWNoKGl0ZW0gPT4ge1xyXG4gICAgICAgIGl0ZW0uaXNTZWxlY3RlZCA9IHRydWU7XHJcbiAgICAgICAgbGV0IGluZGV4ID0gdGhpcy5jbG9uZWRUb29sdGlwT3B0aW9ucy5maW5kSW5kZXgob3B0ID0+IG9wdC5pZCA9PSBpdGVtLmlkKTtcclxuICAgICAgICB0aGlzLmNsb25lZFRvb2x0aXBPcHRpb25zW2luZGV4XS5pc1NlbGVjdGVkID0gdHJ1ZTtcclxuICAgICAgfSk7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRDaGVja2JveE9wdGlvbnNDb3VudCA9IHRoaXMudG9vbHRpcE9wdGlvbnMubGVuZ3RoO1xyXG4gICAgICB0aGlzLmRpc2FibGVTZWxlY3RBbGwgPSB0cnVlO1xyXG4gICAgICB0aGlzLmRpc2FibGVDbGVhckFsbCA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmRpc2FibGVDaGVja2JveEZpbHRlckFwcGx5QnV0dG9uKCk7XHJcbiAgfVxyXG5cclxuICBzZWFyY2hGb3JUaGVJdGVtKHN0cjogc3RyaW5nKXtcclxuICAgICAgaWYoc3RyKXtcclxuICAgICAgICAgIHRoaXMudG9vbHRpcE9wdGlvbnMgPSBjbG9uZURlZXAodGhpcy5jbG9uZWRUb29sdGlwT3B0aW9ucy5maWx0ZXIoaXRlbSA9PiBpdGVtLmxhYmVsLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhzdHIudG9Mb3dlckNhc2UoKSkpKTtcclxuICAgICAgICAgIHRoaXMuY2FsY3VsYXRlSGVpZ2h0Rm9yRmlsdGVyVG9vbHRpcCgpO1xyXG4gICAgICAgICAgdGhpcy50b29sdGlwT3B0aW9ucy5mb3JFYWNoKGVsZW1lbnQgPT4ge1xyXG4gICAgICAgICAgICBlbGVtZW50LmxhYmVsID0gdGhpcy5ib2xkU3RyaW5nKGVsZW1lbnQubGFiZWwsc3RyKTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgXHJcbiAgICAgICAgICBpZih0aGlzLnRvb2x0aXBPcHRpb25zLmxlbmd0aCA+IDApe1xyXG4gICAgICAgICAgICAgIGxldCB1bnNlbGVjdGVkSXRlbXMgPSB0aGlzLnRvb2x0aXBPcHRpb25zLmZpbHRlcigoaXRlbSkgPT4gIWl0ZW0uaXNTZWxlY3RlZCk7XHJcbiAgICAgICAgICAgICAgbGV0IHNlbGVjdGVkSXRlbXMgPSB0aGlzLnRvb2x0aXBPcHRpb25zLmZpbHRlcigoaXRlbSkgPT4gaXRlbS5pc1NlbGVjdGVkKTsgIFxyXG4gICAgICAgICAgICAgIHRoaXMuZGlzYWJsZVNlbGVjdEFsbCA9IHVuc2VsZWN0ZWRJdGVtcy5sZW5ndGggPT0gMDtcclxuICAgICAgICAgICAgICB0aGlzLmRpc2FibGVDbGVhckFsbCA9IHNlbGVjdGVkSXRlbXMubGVuZ3RoID09IDA7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZENoZWNrYm94T3B0aW9uc0NvdW50ID0gc2VsZWN0ZWRJdGVtcy5sZW5ndGg7XHJcbiAgICAgICAgICAgICAgdGhpcy5kaXNhYmxlQ2hlY2tib3hBcHBseSA9IChzZWxlY3RlZEl0ZW1zLmxlbmd0aCA9PSAwIHx8ICF0aGlzLmNoZWNrSWZDaGVja2JveFRvb2x0aXBJc0ZpbHRlcmVkKCkpO1xyXG4gICAgICAgICAgXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNle1xyXG4gICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRDaGVja2JveE9wdGlvbnNDb3VudCA9IDA7XHJcbiAgICAgICAgICAgICAgdGhpcy5kaXNhYmxlQ2hlY2tib3hBcHBseSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgdGhpcy5kaXNhYmxlQ2xlYXJBbGwgPSB0cnVlO1xyXG4gICAgICAgICAgICAgIHRoaXMuZGlzYWJsZVNlbGVjdEFsbCA9IHRydWU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgZWxzZXtcclxuICAgICAgICAgIHRoaXMudG9vbHRpcE9wdGlvbnMgPSBjbG9uZURlZXAodGhpcy5jbG9uZWRUb29sdGlwT3B0aW9ucyk7XHJcbiAgICAgICAgICB0aGlzLmNhbGN1bGF0ZUhlaWdodEZvckZpbHRlclRvb2x0aXAoKTtcclxuICAgICAgICAgIGxldCB1bnNlbGVjdGVkSXRlbXMgPSB0aGlzLnRvb2x0aXBPcHRpb25zLmZpbHRlcihpdGVtID0+ICFpdGVtLmlzU2VsZWN0ZWQpO1xyXG4gICAgICAgICAgbGV0IHNlbGVjdGVkSXRlbXMgPSB0aGlzLnRvb2x0aXBPcHRpb25zLmZpbHRlcihpdGVtID0+IGl0ZW0uaXNTZWxlY3RlZCk7XHJcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkQ2hlY2tib3hPcHRpb25zQ291bnQgPSBzZWxlY3RlZEl0ZW1zLmxlbmd0aDtcclxuICAgICAgICAgIHRoaXMuZGlzYWJsZVNlbGVjdEFsbCA9IHVuc2VsZWN0ZWRJdGVtcy5sZW5ndGggPT0gMDtcclxuICAgICAgICAgIHRoaXMuZGlzYWJsZUNsZWFyQWxsID0gc2VsZWN0ZWRJdGVtcy5sZW5ndGggPT0gMDtcclxuICAgICAgICAgIHRoaXMuZGlzYWJsZUNoZWNrYm94RmlsdGVyQXBwbHlCdXR0b24oKTtcclxuICAgICAgfVxyXG4gIH1cclxuICBcclxuICBjYWxjdWxhdGVIZWlnaHRGb3JGaWx0ZXJUb29sdGlwKCl7XHJcbiAgICBsZXQgZGF0YUxlbmd0aCA9IHRoaXMudG9vbHRpcE9wdGlvbnMubGVuZ3RoO1xyXG4gICAgaWYoZGF0YUxlbmd0aCA9PSAwKXtcclxuICAgICAgZGF0YUxlbmd0aCsrO1xyXG4gICAgfSBcclxuICAgIHRoaXMuaGVpZ2h0T2ZDaGVja2JveFRvb2x0aXBGaWx0ZXIgPSB0aGlzLnRvb2x0aXBPcHRpb25zLmxlbmd0aCA+IDYgPyAyMDAgOiAoKDI2LjAzICogZGF0YUxlbmd0aCkgKyAodGhpcy5tYXJnaW4gKiBkYXRhTGVuZ3RoKSArIHRoaXMubWFyZ2luKTsgICAgICBcclxuICB9XHJcblxyXG4gIGJvbGRTdHJpbmcoc3RyOiBzdHJpbmcsIGZpbmQ6IHN0cmluZykge1xyXG4gICAgbGV0IGluZGV4ZXMgPSB0aGlzLmdldEluZGljZXNPZihmaW5kLCBzdHIsIGZhbHNlKTtcclxuICAgIFxyXG4gICAgaW5kZXhlcy5mb3JFYWNoKChpdGVtLGluZGV4KSA9PiB7XHJcbiAgICAgICAgbGV0IHN0YXJ0SW5kZXggPSBpdGVtICsgKGluZGV4ICogNyk7IC8vTXVsdGlwbHlpbmcgYnkgNyBhcyB0aGVyZSBhcmUgN2NoYXI6IDxiPjwvYj5cclxuICAgICAgICBsZXQgZW5kSW5kZXggPSBzdGFydEluZGV4ICsgZmluZC5sZW5ndGg7XHJcbiAgICAgICAgbGV0IHN0clRvQmVSZXBsYWNlZCA9IHN0ci5zdWJzdHJpbmcoc3RhcnRJbmRleCwgZW5kSW5kZXgpO1xyXG4gICAgICAgIHN0ciA9IHN0ci5yZXBsYWNlKHN0clRvQmVSZXBsYWNlZCwgXCI8Yj5cIiArIHN0clRvQmVSZXBsYWNlZCArIFwiPC9iPlwiKTsgXHJcbiAgICB9KTtcclxuICAgIHJldHVybiBzdHI7XHJcbn1cclxuXHJcbmdldEluZGljZXNPZihzZWFyY2hTdHI6IHN0cmluZywgc3RyOiBzdHJpbmcsIGNhc2VTZW5zaXRpdmU6IGJvb2xlYW4pIHtcclxuICAgIHZhciBzZWFyY2hTdHJMZW4gPSBzZWFyY2hTdHIubGVuZ3RoO1xyXG4gICAgaWYgKHNlYXJjaFN0ckxlbiA9PSAwKSB7XHJcbiAgICAgICAgcmV0dXJuIFtdO1xyXG4gICAgfVxyXG4gICAgdmFyIHN0YXJ0SW5kZXggPSAwLCBpbmRleCwgaW5kaWNlcyA9IFtdO1xyXG4gICAgaWYgKCFjYXNlU2Vuc2l0aXZlKSB7XHJcbiAgICAgICAgc3RyID0gc3RyLnRvTG93ZXJDYXNlKCk7XHJcbiAgICAgICAgc2VhcmNoU3RyID0gc2VhcmNoU3RyLnRvTG93ZXJDYXNlKCk7XHJcbiAgICB9XHJcbiAgICB3aGlsZSAoKGluZGV4ID0gc3RyLmluZGV4T2Yoc2VhcmNoU3RyLCBzdGFydEluZGV4KSkgPiAtMSkge1xyXG4gICAgICAgIGluZGljZXMucHVzaChpbmRleCk7XHJcbiAgICAgICAgc3RhcnRJbmRleCA9IGluZGV4ICsgc2VhcmNoU3RyTGVuO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGluZGljZXM7XHJcbn1cclxuXHJcblxyXG4gIHJlbW92ZUJvbGRFbGVtZW50RnJvbVN0cmluZyhvcmlnaW5hbFN0cmluZzogc3RyaW5nKXtcclxuICAgICAgbGV0IGZpcnN0UmVnRXhwID0gbmV3IFJlZ0V4cCgnPGI+JywnZycpO1xyXG4gICAgICBsZXQgc2Vjb25kUmVnRXhwID0gbmV3IFJlZ0V4cCgnPC9iPicsJ2cnKTtcclxuXHJcbiAgICAgIGxldCByZXQgPSBvcmlnaW5hbFN0cmluZy5yZXBsYWNlKGZpcnN0UmVnRXhwLCcnKTtcclxuICAgICAgcmV0dXJuIHJldC5yZXBsYWNlKHNlY29uZFJlZ0V4cCwnJyk7XHJcbiAgfVxyXG5cclxuICBjbGVhclNlYXJjaGVkSXRlbSgpe1xyXG4gICAgICB0aGlzLnNlYXJjaEl0ZW0gPSBcIlwiO1xyXG4gICAgICB0aGlzLnNlYXJjaEZvclRoZUl0ZW0oXCJcIik7XHJcbiAgfVxyXG5cclxuICBjYWxlbmRhckRhdGVDaGFuZ2VkKGV2ZW50OiBhbnkpe1xyXG4gICAgdGhpcy5jYWxlbmRhclNlbGVjdGlvbiA9IGV2ZW50O1xyXG4gICAgdGhpcy5kaXNhYmxlQ2FsZW5kYXJBcHBseUJ1dHRvbigpO1xyXG4gIH1cclxuXHJcbiAgZGlzYWJsZUNhbGVuZGFyQXBwbHlCdXR0b24oKSB7XHJcblxyXG4gICAgaWYodGhpcy5zaG93RmlsdGVyQ29tcG9uZW50ICYmIHRoaXMuc2hvd1NvcnRDb21wb25lbnQpe1xyXG4gICAgICBsZXQgaXNGaWx0ZXJDaGFuZ2VkID0gdGhpcy5jaGVja0lmRGF0ZVRvb2x0aXBJc0ZpbHRlcmVkKCk7XHJcbiAgICAgIGxldCBpc1NvcnRDaGFuZ2VkID0gdGhpcy5jaGVja0lmU29ydGluZ0NoYW5nZWQoKTtcclxuICAgICAgICAgIFxyXG4gICAgICB0aGlzLmRpc2FibGVDYWxlbmRhckFwcGx5QnRuID0gISh0aGlzLmNhbGVuZGFyU2VsZWN0aW9uLmZyb21EYXRlICYmIHRoaXMuY2FsZW5kYXJTZWxlY3Rpb24udG9EYXRlKSB8fCAoIWlzU29ydENoYW5nZWQgJiYgIWlzRmlsdGVyQ2hhbmdlZCApO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZih0aGlzLnNob3dGaWx0ZXJDb21wb25lbnQpe1xyXG4gICAgICAgIHRoaXMuZGlzYWJsZUNhbGVuZGFyQXBwbHlCdG4gPSAhKHRoaXMuY2FsZW5kYXJTZWxlY3Rpb24uZnJvbURhdGUgJiYgdGhpcy5jYWxlbmRhclNlbGVjdGlvbi50b0RhdGUpIHx8ICF0aGlzLmNoZWNrSWZEYXRlVG9vbHRpcElzRmlsdGVyZWQoKTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYodGhpcy5zaG93U29ydENvbXBvbmVudCl7XHJcbiAgICAgICAgdGhpcy5kaXNhYmxlQ2FsZW5kYXJBcHBseUJ0biA9ICF0aGlzLmNoZWNrSWZTb3J0aW5nQ2hhbmdlZCgpO1xyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIHNldEluaXRpYWxWYWx1ZU1hcEZvclRpbWVGaWx0ZXIoa2V5OiBzdHJpbmcpIHtcclxuICAgIGxldCBkYXRhID0gdGhpcy5jbG9uZWRUYWJsZURhdGEuZmlsdGVyKFxyXG4gICAgICAgIChvYmopID0+ICFbXCJcIiwgXCItXCIsIG51bGwsIFwiMFwiLCBcIjxtdWx0aT5cIl0uaW5jbHVkZXMob2JqW2tleV0pKTtcclxuXHJcbiAgICBsZXQgdGltZUFyciA9IG1hcChkYXRhLCBrZXkpO1xyXG4gICAgdGltZUFyci5zb3J0KChhLCBiKSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuYW5uYURhdGVUaW1lRm9ybWF0U2VydmljZS5zb3J0QnlUaW1lQXNjZW5kaW5nKGEsIGIpO1xyXG4gICAgfSk7XHJcbiAgICBcclxuICAgIGxldCBvYmogPSB7XHJcbiAgICAgICAgZnJvbVRpbWU6IHRpbWVBcnJbMF0sXHJcbiAgICAgICAgdG9UaW1lOiB0aW1lQXJyW3RpbWVBcnIubGVuZ3RoIC0gMV0sXHJcbiAgICAgICAgaW5jbHVkZU11bHRpOiBmYWxzZSxcclxuICAgICAgICBpbmNsdWRlWmVybzogZmFsc2UsXHJcbiAgICAgICAgaW5jbHVkZVRpbWVSYW5nZTogZmFsc2VcclxuICAgIH07XHJcbiAgICBcclxuICAgIGlmICh0aGlzLmd0R2VuZXJhbENvbmZpZy5jb21wb25lbnQgPT09IFwiUkFUSU5HXCIpIHtcclxuICAgICAgICB0aGlzLnNldEluaXRpYWxWYWx1ZU1hcEZvclJhdGluZ1BhZ2VUaW1lRmlsdGVyKGtleSk7XHJcbiAgICB9ZWxzZSB7XHJcbiAgICAgICAgbGV0IGluY2x1ZGVNdWx0aSA9XHJcbiAgICAgICAgdGhpcy5jbG9uZWRUYWJsZURhdGEuZmluZEluZGV4KChvYmopID0+IG9ialtrZXldID09IFwiPG11bHRpPlwiKSAhPVxyXG4gICAgICAgIC0xO1xyXG4gICAgICAgIGxldCBpbmNsdWRlWmVybyA9XHJcbiAgICAgICAgICAgIHRoaXMuY2xvbmVkVGFibGVEYXRhLmZpbmRJbmRleCgob2JqKSA9PiBvYmpba2V5XSA9PSBcIjBcIikgIT0gLTE7XHJcbiAgICAgICAgbGV0IGluY2x1ZGVUaW1lUmFuZ2UgPVxyXG4gICAgICAgICAgICB0aGlzLmNsb25lZFRhYmxlRGF0YS5maW5kSW5kZXgoXHJcbiAgICAgICAgICAgICAgICAob2JqKSA9PiBvYmpba2V5XSAhPSBcIjBcIiAmJiBvYmpba2V5XSAhPSBcIjxtdWx0aT5cIlxyXG4gICAgICAgICAgICApICE9IC0xO1xyXG4gICAgICAgIFxyXG4gICAgICAgIGxldCBvYmogPSB7XHJcbiAgICAgICAgICAgIGZyb21UaW1lOiB0aW1lQXJyWzBdLFxyXG4gICAgICAgICAgICB0b1RpbWU6IHRpbWVBcnJbdGltZUFyci5sZW5ndGggLSAxXSxcclxuICAgICAgICAgICAgaW5jbHVkZU11bHRpOiBpbmNsdWRlTXVsdGksXHJcbiAgICAgICAgICAgIGluY2x1ZGVaZXJvOiBpbmNsdWRlWmVybyxcclxuICAgICAgICAgICAgaW5jbHVkZVRpbWVSYW5nZTogaW5jbHVkZVRpbWVSYW5nZSxcclxuICAgICAgICB9O1xyXG4gICAgICAgIHRoaXMuYW5uYUZpbHRlclNlcnZpY2UuaW5pdGlhbFZhbHVlTWFwLnNldChrZXksIG9iaik7XHJcbiAgICB9XHJcbn1cclxuXHJcbnNldEluaXRpYWxWYWx1ZU1hcEZvclJhdGluZ1BhZ2VUaW1lRmlsdGVyKGtleTogc3RyaW5nKXtcclxuICBsZXQgaW5jbHVkZU11bHRpID1cclxuICAgICAgICAgICAgdGhpcy5jbG9uZWRUYWJsZURhdGEuZmluZEluZGV4KChvYmopID0+IG9ialtrZXldWzBdID09IFwiPG11bHRpPlwiKSAhPVxyXG4gICAgICAgICAgICAtMTtcclxuICAgICAgICBsZXQgaW5jbHVkZVplcm8gPVxyXG4gICAgICAgICAgICB0aGlzLmNsb25lZFRhYmxlRGF0YS5maW5kSW5kZXgoKG9iaikgPT4gb2JqW2tleV1bMF0gPT0gXCIwXCIpICE9IC0xO1xyXG4gICAgICAgIGxldCBpbmNsdWRlVGltZVJhbmdlID1cclxuICAgICAgICAgICAgdGhpcy5jbG9uZWRUYWJsZURhdGEuZmluZEluZGV4KFxyXG4gICAgICAgICAgICAgICAgKG9iaikgPT4gb2JqW2tleV1bMF0gIT0gXCIwXCIgJiYgb2JqW2tleV1bMF0gIT0gXCI8bXVsdGk+XCJcclxuICAgICAgICAgICAgKSAhPSAtMTtcclxuXHJcbiAgICAgICAgbGV0IHN0YXJ0VGltZUFyciA9IG1hcCh0aGlzLmNsb25lZFRhYmxlRGF0YSwgXCJzdGFydFRpbWVcIik7XHJcbiAgICAgICAgbGV0IGVuZFRpbWVBcnIgPSBtYXAodGhpcy5jbG9uZWRUYWJsZURhdGEsIFwiZW5kVGltZVwiKTtcclxuXHJcbiAgICAgICAgc3RhcnRUaW1lQXJyLnNvcnQoKGEsIGIpID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuYW5uYURhdGVUaW1lRm9ybWF0U2VydmljZS5zb3J0QnlUaW1lQXNjZW5kaW5nKGEsIGIpO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICBlbmRUaW1lQXJyLnNvcnQoKGEsIGIpID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuYW5uYURhdGVUaW1lRm9ybWF0U2VydmljZS5zb3J0QnlUaW1lRGVzY2VuZGluZyhhLCBiKTtcclxuICAgICAgICB9KTtcclxuICAgICAgICBsZXQgc3RhcnRfdGltZSA9IHN0YXJ0VGltZUFycltzdGFydFRpbWVBcnIuZmluZEluZGV4KGVsZW1lbnQgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIGVsZW1lbnQgIT09IHVuZGVmaW5lZCAmJiBlbGVtZW50ICE9PSBudWxsICYmIGVsZW1lbnQgIT09ICcnO1xyXG4gICAgICAgIH0pXVxyXG4gICAgICAgIGxldCBvYmogPSB7XHJcbiAgICAgICAgICAgIGZyb21UaW1lOiBzdGFydF90aW1lLFxyXG4gICAgICAgICAgICB0b1RpbWU6IGVuZFRpbWVBcnJbMF0sXHJcbiAgICAgICAgICAgIGluY2x1ZGVNdWx0aTogaW5jbHVkZU11bHRpLFxyXG4gICAgICAgICAgICBpbmNsdWRlWmVybzogaW5jbHVkZVplcm8sXHJcbiAgICAgICAgICAgIGluY2x1ZGVUaW1lUmFuZ2U6IGluY2x1ZGVUaW1lUmFuZ2UsXHJcbiAgICAgICAgfTtcclxuICAgICAgICB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmluaXRpYWxWYWx1ZU1hcC5zZXQoa2V5LCBvYmopOyBcclxuICAgIH1cclxuXHJcbiAgICBzdGFydFRpbWVIb3VyQ2hhbmdlKHZhbDogc3RyaW5nKXtcclxuICAgICAgICBpZih2YWwubGVuZ3RoID09IDAgfHwgISsodmFsKSB8fCAxID4gcGFyc2VJbnQodmFsKSB8fCBwYXJzZUludCh2YWwpID4gMTIpe1xyXG4gICAgICAgICAgICB0aGlzLnN0YXJ0VGltZUhvdXJFcnIgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNle1xyXG4gICAgICAgICAgICB0aGlzLnN0YXJ0VGltZUhvdXJFcnIgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5kaXNhYmxlVGltZUZpbHRlckFwcGx5QnV0dG9uKCk7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhcnRUaW1lTWluQ2hhbmdlKHZhbDogc3RyaW5nKXtcclxuICAgICAgICBpZih2YWwubGVuZ3RoICE9IDIgIHx8ICghKyh2YWwpICYmIHZhbCAhPSBcIjAwXCIpIHx8IDAgPiBwYXJzZUludCh2YWwpIHx8IHBhcnNlSW50KHZhbCkgPiA1OSl7XHJcbiAgICAgICAgICAgIHRoaXMuc3RhcnRUaW1lTWluRXJyID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZXtcclxuICAgICAgICAgICAgdGhpcy5zdGFydFRpbWVNaW5FcnIgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5kaXNhYmxlVGltZUZpbHRlckFwcGx5QnV0dG9uKCk7XHJcbiAgICB9XHJcblxyXG4gICAgZW5kVGltZUhvdXJDaGFuZ2UodmFsOiBzdHJpbmcpe1xyXG4gICAgICAgIGlmKHZhbC5sZW5ndGggPT0gMCB8fCAhKyh2YWwpIHx8IDEgPiBwYXJzZUludCh2YWwpIHx8IHBhcnNlSW50KHZhbCkgPiAxMil7XHJcbiAgICAgICAgICAgIHRoaXMuZW5kVGltZUhvdXJFcnIgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNle1xyXG4gICAgICAgICAgICB0aGlzLmVuZFRpbWVIb3VyRXJyID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuZGlzYWJsZVRpbWVGaWx0ZXJBcHBseUJ1dHRvbigpO1xyXG4gICAgfVxyXG5cclxuICAgIGVuZFRpbWVNaW5DaGFuZ2UodmFsOiBzdHJpbmcpe1xyXG4gICAgICAgIGlmKHZhbC5sZW5ndGggIT0gMiAgfHwgKCErKHZhbCkgJiYgdmFsICE9IFwiMDBcIikgfHwgMCA+IHBhcnNlSW50KHZhbCkgfHwgcGFyc2VJbnQodmFsKSA+IDU5KXtcclxuICAgICAgICAgICAgdGhpcy5lbmRUaW1lTWluRXJyID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZXtcclxuICAgICAgICAgICAgdGhpcy5lbmRUaW1lTWluRXJyID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuZGlzYWJsZVRpbWVGaWx0ZXJBcHBseUJ1dHRvbigpO1xyXG4gICAgfVxyXG5cclxuICAgIGNoZWNrSWZDaGVja2JveFRvb2x0aXBJc0ZpbHRlcmVkKCl7XHJcbiAgICAgICAgbGV0IGN1cnJlbnRTZWxlY3RlZFZhbHVlID0gW107XHJcbiAgICAgICAgbGV0IHByZXZpb3VzU2VsZWN0ZWRWYWx1ZSA9IFtdO1xyXG5cclxuICAgICAgICBpZih0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnRvb2x0aXBTZWxlY3RlZE1hcC5oYXModGhpcy5hbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvKSl7XHJcbiAgICAgICAgICBwcmV2aW91c1NlbGVjdGVkVmFsdWUgPSB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnRvb2x0aXBTZWxlY3RlZE1hcC5nZXQodGhpcy5hbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvKTtcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgaWYoIXRoaXMuYW5uYUZpbHRlclNlcnZpY2UuaW5pdGlhbFZhbHVlTWFwLmhhcyh0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnNlbGVjdGVkUmFkaW8pKXtcclxuICAgICAgICAgICAgbGV0IGluaXRpYWxWYWx1ZSA9IHNvcnRCeSh1bmlxKHRoaXMuY2xvbmVkVGFibGVEYXRhLm1hcChpdGVtID0+IGl0ZW1bdGhpcy5hbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvXSkpKTtcclxuICAgICAgICAgICAgdGhpcy5hbm5hRmlsdGVyU2VydmljZS5pbml0aWFsVmFsdWVNYXAuc2V0KHRoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpbyxpbml0aWFsVmFsdWUpO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZih0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmluaXRpYWxWYWx1ZU1hcC5oYXModGhpcy5hbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvKSl7XHJcbiAgICAgICAgICBwcmV2aW91c1NlbGVjdGVkVmFsdWUgPSB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmluaXRpYWxWYWx1ZU1hcC5nZXQodGhpcy5hbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZXtcclxuICAgICAgICAgIHByZXZpb3VzU2VsZWN0ZWRWYWx1ZSA9IHNvcnRCeSh1bmlxKHRoaXMuY2xvbmVkVGFibGVEYXRhLm1hcChpdGVtID0+IGl0ZW1bdGhpcy5hbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvXSkpKTtcclxuICAgICAgICAgIHRoaXMuYW5uYUZpbHRlclNlcnZpY2UuaW5pdGlhbFZhbHVlTWFwLnNldCh0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnNlbGVjdGVkUmFkaW8scHJldmlvdXNTZWxlY3RlZFZhbHVlKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmKHRoaXMudG9vbHRpcE9wdGlvbnMpe1xyXG5cclxuICAgICAgICAgICAgY3VycmVudFNlbGVjdGVkVmFsdWUgPSBzb3J0QnkodGhpcy50b29sdGlwT3B0aW9ucy5maWx0ZXIoaXRlbSA9PiBpdGVtLmlzU2VsZWN0ZWQpLm1hcChpdGVtID0+IGl0ZW0udmFsdWUpKTtcclxuXHJcbiAgICAgICAgICAgIGlmKCF0aGlzLnNlYXJjaEl0ZW0gJiYgY3VycmVudFNlbGVjdGVkVmFsdWUubGVuZ3RoID09IHRoaXMudG9vbHRpcE9wdGlvbnMubGVuZ3RoICYmIHRoaXMuYW5uYUZpbHRlclNlcnZpY2UuaW5pdGlhbFZhbHVlTWFwLmhhcyh0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnNlbGVjdGVkUmFkaW8pKXtcclxuICAgICAgICAgICAgICBjdXJyZW50U2VsZWN0ZWRWYWx1ZSA9IHRoaXMuYW5uYUZpbHRlclNlcnZpY2UuaW5pdGlhbFZhbHVlTWFwLmdldCh0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnNlbGVjdGVkUmFkaW8pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgbGV0IGJsYW5rSW5kZXggPSBjdXJyZW50U2VsZWN0ZWRWYWx1ZS5maW5kSW5kZXgoKGl0ZW06IHN0cmluZykgPT4gaXRlbSA9PSBudWxsKTtcclxuICAgICAgICBpZihibGFua0luZGV4ICE9IC0xKXtcclxuICAgICAgICAgIGN1cnJlbnRTZWxlY3RlZFZhbHVlID0gc29ydEJ5KGN1cnJlbnRTZWxlY3RlZFZhbHVlKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuaXNGaWx0ZXJDaGFuZ2VkID0gIWlzRXF1YWwoY3VycmVudFNlbGVjdGVkVmFsdWUscHJldmlvdXNTZWxlY3RlZFZhbHVlKTtcclxuICAgICAgICByZXR1cm4gdGhpcy5pc0ZpbHRlckNoYW5nZWQ7XHJcbiAgICB9XHJcblxyXG4gICAgY2hlY2tJZlRpbWVUb29sdGlwSXNGaWx0ZXJlZCgpe1xyXG4gICAgICBsZXQgY3VycmVudFNlbGVjdGVkVGltZUZpbHRlcjoge2Zyb21UaW1lOiBzdHJpbmcsIHRvVGltZTpzdHJpbmcsIGluY2x1ZGVNdWx0aTogYm9vbGVhbiwgaW5jbHVkZVplcm86IGJvb2xlYW4sIGluY2x1ZGVUaW1lUmFuZ2U6IGJvb2xlYW59ID0ge1xyXG4gICAgICAgIGZyb21UaW1lOiBudWxsLFxyXG4gICAgICAgIHRvVGltZTogbnVsbCxcclxuICAgICAgICBpbmNsdWRlTXVsdGk6IGZhbHNlLFxyXG4gICAgICAgIGluY2x1ZGVaZXJvOiBmYWxzZSxcclxuICAgICAgICBpbmNsdWRlVGltZVJhbmdlOiBmYWxzZSxcclxuICAgICAgfTtcclxuICBcclxuICAgICAgbGV0IHByZXZpb3VzU2VsZWN0ZWRUaW1lRmlsdGVyO1xyXG4gIFxyXG4gICAgICBpZih0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnRvb2x0aXBTZWxlY3RlZE1hcC5oYXModGhpcy5hbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvKSl7XHJcbiAgICAgICAgcHJldmlvdXNTZWxlY3RlZFRpbWVGaWx0ZXIgPSB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnRvb2x0aXBTZWxlY3RlZE1hcC5nZXQodGhpcy5hbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvKTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIGlmKHRoaXMuYW5uYUZpbHRlclNlcnZpY2UuaW5pdGlhbFZhbHVlTWFwLmhhcyh0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnNlbGVjdGVkUmFkaW8pKXtcclxuICAgICAgICBwcmV2aW91c1NlbGVjdGVkVGltZUZpbHRlciA9IHRoaXMuYW5uYUZpbHRlclNlcnZpY2UuaW5pdGlhbFZhbHVlTWFwLmdldCh0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnNlbGVjdGVkUmFkaW8pO1xyXG4gICAgICB9XHJcbiAgXHJcbiAgICAgIGxldCBmcm9tVGltZTI0SHJGb3JtYXRBcnIgPSB0aGlzLmFubmFEYXRlVGltZUZvcm1hdFNlcnZpY2UuY29udmVydFRvdHdlbnR5Rm91ckhyc0Zvcm1hdChcclxuICAgICAgICB0aGlzLnNlbGVjdGVkRnJvbVRpbWVbMF0gKyBcIjpcIiArIHRoaXMuc2VsZWN0ZWRGcm9tVGltZVsxXSArIFwiIFwiICsgdGhpcy5zZWxlY3RlZEZyb21UaW1lWzJdLFxyXG4gICAgICAgIHRydWVcclxuICAgICAgKTtcclxuICAgICAgbGV0IGZyb21UaW1lMjRIckZvcm1hdCA9IGZyb21UaW1lMjRIckZvcm1hdEFyclswXSArIFwiOlwiICsgZnJvbVRpbWUyNEhyRm9ybWF0QXJyWzFdICsgXCI6MDBcIjtcclxuXHJcbiAgICAgIGxldCB0b1RpbWUyNEhyRm9ybWF0QXJyID0gdGhpcy5hbm5hRGF0ZVRpbWVGb3JtYXRTZXJ2aWNlLmNvbnZlcnRUb3R3ZW50eUZvdXJIcnNGb3JtYXQoXHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZFRvVGltZVswXSArIFwiOlwiICsgdGhpcy5zZWxlY3RlZFRvVGltZVsxXSArIFwiIFwiICsgdGhpcy5zZWxlY3RlZFRvVGltZVsyXSxcclxuICAgICAgICB0cnVlXHJcbiAgICAgICk7XHJcbiAgICAgIGxldCB0b1RpbWUyNEhyRm9ybWF0ID0gdG9UaW1lMjRIckZvcm1hdEFyclswXSArIFwiOlwiICsgdG9UaW1lMjRIckZvcm1hdEFyclsxXSArIFwiOjAwXCI7XHJcbiAgXHJcbiAgICAgIGN1cnJlbnRTZWxlY3RlZFRpbWVGaWx0ZXIgPSB7IGZyb21UaW1lOiBmcm9tVGltZTI0SHJGb3JtYXQsIHRvVGltZTogdG9UaW1lMjRIckZvcm1hdCwgaW5jbHVkZU11bHRpOiB0aGlzLm11bHRpVGltZUNoZWNrYm94Q2hlY2tlZCwgXHJcbiAgICAgIGluY2x1ZGVaZXJvOiB0aGlzLnplcm9UaW1lQ2hlY2tib3hDaGVja2VkLCBpbmNsdWRlVGltZVJhbmdlOiB0aGlzLmVudGVyVGltZUNoZWNrYm94Q2hlY2tlZH07XHJcbiAgICAgIFxyXG4gICAgICB0aGlzLmlzRmlsdGVyQ2hhbmdlZCA9ICFpc0VxdWFsKHByZXZpb3VzU2VsZWN0ZWRUaW1lRmlsdGVyLCBjdXJyZW50U2VsZWN0ZWRUaW1lRmlsdGVyKTtcclxuICAgICAgcmV0dXJuIHRoaXMuaXNGaWx0ZXJDaGFuZ2VkOyAgXHJcbiAgICB9XHJcblxyXG4gICAgY2hlY2tJZkRhdGVUb29sdGlwSXNGaWx0ZXJlZCgpe1xyXG4gICAgICBsZXQgY3VycmVudFNlbGVjdGVkRGF0ZSA9IGNsb25lRGVlcCh0aGlzLmNhbGVuZGFyU2VsZWN0aW9uKTtcclxuICAgICAgbGV0IHByZXZpb3VzU2VsZWN0ZWREYXRlOiB7ZnJvbURhdGU6IGFueSwgdG9EYXRlOiBhbnl9ID0ge2Zyb21EYXRlOiBudWxsLCB0b0RhdGU6IG51bGx9O1xyXG5cclxuICAgICAgaWYodGhpcy5hbm5hRmlsdGVyU2VydmljZS50b29sdGlwU2VsZWN0ZWRNYXAuaGFzKHRoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpbykpe1xyXG4gICAgICAgIHByZXZpb3VzU2VsZWN0ZWREYXRlID0gdGhpcy5hbm5hRmlsdGVyU2VydmljZS50b29sdGlwU2VsZWN0ZWRNYXAuZ2V0KHRoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpbyk7XHJcbiAgICAgICAgXHJcbiAgICAgICAgaWYoIXRoaXMuYW5uYUZpbHRlclNlcnZpY2UuaW5pdGlhbFZhbHVlTWFwLmhhcyh0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnNlbGVjdGVkUmFkaW8pKXtcclxuICAgICAgICAgICAgdGhpcy5zZXRJbml0aWFsVmFsdWVNYXBGb3JEYXRlRmlsdGVyKCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgfVxyXG4gICAgICBlbHNlIGlmKHRoaXMuYW5uYUZpbHRlclNlcnZpY2UuaW5pdGlhbFZhbHVlTWFwLmhhcyh0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnNlbGVjdGVkUmFkaW8pKXtcclxuICAgICAgICBwcmV2aW91c1NlbGVjdGVkRGF0ZSA9IHRoaXMuYW5uYUZpbHRlclNlcnZpY2UuaW5pdGlhbFZhbHVlTWFwLmdldCh0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnNlbGVjdGVkUmFkaW8pO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2V7XHJcbiAgICAgICAgdGhpcy5zZXRJbml0aWFsVmFsdWVNYXBGb3JEYXRlRmlsdGVyKCk7XHJcbiAgICAgICAgcHJldmlvdXNTZWxlY3RlZERhdGUgPSB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmluaXRpYWxWYWx1ZU1hcC5nZXQodGhpcy5hbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYoY3VycmVudFNlbGVjdGVkRGF0ZS5mcm9tRGF0ZSAmJiBjdXJyZW50U2VsZWN0ZWREYXRlLnRvRGF0ZSl7XHJcbiAgICAgICAgICBsZXQgZnJvbURhdGUgPSB7eWVhcjogY3VycmVudFNlbGVjdGVkRGF0ZS5mcm9tRGF0ZS55ZWFyLG1vbnRoOiBjdXJyZW50U2VsZWN0ZWREYXRlLmZyb21EYXRlLm1vbnRoLGRheTogY3VycmVudFNlbGVjdGVkRGF0ZS5mcm9tRGF0ZS5kYXl9O1xyXG4gICAgICAgICAgbGV0IHRvRGF0ZSA9IHt5ZWFyOiBjdXJyZW50U2VsZWN0ZWREYXRlLnRvRGF0ZS55ZWFyLG1vbnRoOiBjdXJyZW50U2VsZWN0ZWREYXRlLnRvRGF0ZS5tb250aCxkYXk6IGN1cnJlbnRTZWxlY3RlZERhdGUudG9EYXRlLmRheX07XHJcbiAgICAgICAgICBcclxuICAgICAgICAgIGlmKGlzRXF1YWwodGhpcy5jYWxlbmRhck1pbkVuYWJsZWREYXRlLGZyb21EYXRlKSAmJiBpc0VxdWFsKHRoaXMuY2FsZW5kYXJNYXhFbmFibGVkRGF0ZSx0b0RhdGUpICYmIHRoaXMuYW5uYUZpbHRlclNlcnZpY2UuaW5pdGlhbFZhbHVlTWFwLmhhcyh0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnNlbGVjdGVkUmFkaW8pKXtcclxuICAgICAgICAgICAgICBjdXJyZW50U2VsZWN0ZWREYXRlID0gdGhpcy5hbm5hRmlsdGVyU2VydmljZS5pbml0aWFsVmFsdWVNYXAuZ2V0KHRoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpbyk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNle1xyXG4gICAgICAgICAgICAgIGN1cnJlbnRTZWxlY3RlZERhdGUuZnJvbURhdGUgPSBkYXlqcyh0aGlzLmFubmFEYXRlVGltZUZvcm1hdFNlcnZpY2UuY29udmVydE5nYkRhdGVUb01vbWVudChjdXJyZW50U2VsZWN0ZWREYXRlLmZyb21EYXRlKSk7XHJcbiAgICAgICAgICAgICAgY3VycmVudFNlbGVjdGVkRGF0ZS50b0RhdGUgPSBkYXlqcyh0aGlzLmFubmFEYXRlVGltZUZvcm1hdFNlcnZpY2UuY29udmVydE5nYkRhdGVUb01vbWVudChjdXJyZW50U2VsZWN0ZWREYXRlLnRvRGF0ZSkpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5pc0ZpbHRlckNoYW5nZWQgPSAhaXNFcXVhbChwcmV2aW91c1NlbGVjdGVkRGF0ZSxjdXJyZW50U2VsZWN0ZWREYXRlKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gdGhpcy5pc0ZpbHRlckNoYW5nZWQ7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0SW5pdGlhbFZhbHVlTWFwRm9yRGF0ZUZpbHRlcigpe1xyXG4gICAgICAgIGxldCBtaW5NYXhEYXRlO1xyXG5cclxuICAgICAgICBpZih0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnNlbGVjdGVkUmFkaW8gPT0gXCJwZXJpb2RcIil7XHJcbiAgICAgICAgICBsZXQgbWluU3RhcnREYXRlID0gdGhpcy5hbm5hRmlsdGVyU2VydmljZS5yZXR1cm5NaW5BbmRNYXhEYXRlKHRoaXMuY2xvbmVkVGFibGVEYXRhLCBcInN0YXJ0RGF0ZVwiKTtcclxuICAgICAgICAgIGxldCBtYXhFbmREYXRlID0gdGhpcy5hbm5hRmlsdGVyU2VydmljZS5yZXR1cm5NaW5BbmRNYXhEYXRlKHRoaXMuY2xvbmVkVGFibGVEYXRhLFwiZW5kRGF0ZVwiKTtcclxuICAgICAgICAgIG1pbk1heERhdGUgPSBbbWluU3RhcnREYXRlWzBdLG1heEVuZERhdGVbMV1dO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNle1xyXG4gICAgICAgICAgbWluTWF4RGF0ZSA9IHRoaXMuYW5uYUZpbHRlclNlcnZpY2UucmV0dXJuTWluQW5kTWF4RGF0ZSh0aGlzLmNsb25lZFRhYmxlRGF0YSx0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnNlbGVjdGVkUmFkaW8pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBsZXQgc2VsZWN0ZWREYXRlID0ge2Zyb21EYXRlOiBtaW5NYXhEYXRlWzBdLCB0b0RhdGU6IG1pbk1heERhdGVbMV19O1xyXG4gICAgICAgIHRoaXMuYW5uYUZpbHRlclNlcnZpY2UuaW5pdGlhbFZhbHVlTWFwLnNldCh0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnNlbGVjdGVkUmFkaW8sIHNlbGVjdGVkRGF0ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgY2hlY2tJZlNsaWRlclRvb2x0aXBJc0ZpbHRlcmVkKCl7XHJcbiAgICAgIGxldCBjdXJyZW50U2xpZGVyRGF0YToge21pbjphbnksIG1heDogYW55fSA9IHttaW46IG51bGwgLCBtYXg6IG51bGx9O1xyXG4gICAgICBsZXQgcHJldmlvdXNTbGlkZXJEYXRhOiB7bWluOmFueSwgbWF4OiBhbnl9ID0ge21pbjogXCJcIiwgbWF4OiBcIlwifTtcclxuXHJcbiAgICAgIC8vIGlmKHRoaXMuaXNNaW5UZXh0Qm94RW1wdHkpe1xyXG4gICAgICAvLyAgICAgY3VycmVudFNsaWRlckRhdGEubWluID0gdGhpcy5vcHRpb25zLmZsb29yO1xyXG4gICAgICAvLyAgICAgY3VycmVudFNsaWRlckRhdGEubWF4ID0gdGhpcy5zbGlkZXJNYXhWYWx1ZTtcclxuICAgICAgLy8gfVxyXG4gICAgICAvLyBlbHNlIGlmKHRoaXMuaXNNYXhUZXh0Qm94RW1wdHkpe1xyXG4gICAgICAvLyAgICAgY3VycmVudFNsaWRlckRhdGEubWF4ID0gdGhpcy5vcHRpb25zLmNlaWw7XHJcbiAgICAgIC8vICAgICBjdXJyZW50U2xpZGVyRGF0YS5taW4gPSB0aGlzLnNsaWRlck1pblZhbHVlO1xyXG4gICAgICAvLyB9XHJcbiAgICAgIC8vIGVsc2V7XHJcbiAgICAgICAgICBjdXJyZW50U2xpZGVyRGF0YS5tYXggPSB0aGlzLnNsaWRlckVudGVyZWRNYXhWYWx1ZTtcclxuICAgICAgICAgIGN1cnJlbnRTbGlkZXJEYXRhLm1pbiA9IHRoaXMuc2xpZGVyRW50ZXJlZE1pblZhbHVlO1xyXG4gICAgICAvLyB9XHJcblxyXG4gICAgICBpZih0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnRvb2x0aXBTZWxlY3RlZE1hcC5oYXModGhpcy5hbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvKSl7XHJcbiAgICAgICAgcHJldmlvdXNTbGlkZXJEYXRhID0gdGhpcy5hbm5hRmlsdGVyU2VydmljZS50b29sdGlwU2VsZWN0ZWRNYXAuZ2V0KHRoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpbyk7XHJcbiAgICAgICAgaWYoIXRoaXMuYW5uYUZpbHRlclNlcnZpY2UuaW5pdGlhbFZhbHVlTWFwLmhhcyh0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnNlbGVjdGVkUmFkaW8pKXtcclxuICAgICAgICAgIHRoaXMuc2V0SW5pdGlhbFZhbHVlTWFwRm9yU2xpZGVyRmlsdGVyKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYodGhpcy5hbm5hRmlsdGVyU2VydmljZS5pbml0aWFsVmFsdWVNYXAuaGFzKHRoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpbykpe1xyXG4gICAgICAgIHByZXZpb3VzU2xpZGVyRGF0YSA9IHRoaXMuYW5uYUZpbHRlclNlcnZpY2UuaW5pdGlhbFZhbHVlTWFwLmdldCh0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnNlbGVjdGVkUmFkaW8pO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2V7XHJcbiAgICAgICAgdGhpcy5zZXRJbml0aWFsVmFsdWVNYXBGb3JTbGlkZXJGaWx0ZXIoKTtcclxuICAgICAgICBwcmV2aW91c1NsaWRlckRhdGEgPSB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmluaXRpYWxWYWx1ZU1hcC5nZXQodGhpcy5hbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYoY3VycmVudFNsaWRlckRhdGEubWluID09IHRoaXMub3B0aW9ucy5mbG9vciAmJiBjdXJyZW50U2xpZGVyRGF0YS5tYXggPT0gdGhpcy5vcHRpb25zLmNlaWwgJiYgdGhpcy5hbm5hRmlsdGVyU2VydmljZS5pbml0aWFsVmFsdWVNYXAuaGFzKHRoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpbykgKXtcclxuICAgICAgICAgIGN1cnJlbnRTbGlkZXJEYXRhID0gdGhpcy5hbm5hRmlsdGVyU2VydmljZS5pbml0aWFsVmFsdWVNYXAuZ2V0KHRoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpbyk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuaXNGaWx0ZXJDaGFuZ2VkID0gIWlzRXF1YWwocHJldmlvdXNTbGlkZXJEYXRhLGN1cnJlbnRTbGlkZXJEYXRhKTtcclxuICAgICAgcmV0dXJuIHRoaXMuaXNGaWx0ZXJDaGFuZ2VkO1xyXG4gICAgfVxyXG5cclxuICAgIHNldEluaXRpYWxWYWx1ZU1hcEZvclNsaWRlckZpbHRlcigpe1xyXG4gICAgICBsZXQgbWluVmFsdWUgPSB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnJldHVybk1heEFuZE1pblZhbHVlKHRoaXMuY2xvbmVkVGFibGVEYXRhLCB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnNlbGVjdGVkUmFkaW8sIHRydWUpO1xyXG4gICAgICBsZXQgbWF4VmFsdWUgPSB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnJldHVybk1heEFuZE1pblZhbHVlKHRoaXMuY2xvbmVkVGFibGVEYXRhLCB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnNlbGVjdGVkUmFkaW8sIGZhbHNlKTtcclxuICAgICAgbGV0IHNsaWRlckRhdGEgPSB7IG1pbjogbWluVmFsdWUsIG1heDogbWF4VmFsdWUgfTtcclxuICAgICAgdGhpcy5hbm5hRmlsdGVyU2VydmljZS5pbml0aWFsVmFsdWVNYXAuc2V0KHRoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpbywgc2xpZGVyRGF0YSk7XHJcbiAgICAgIFxyXG4gICAgfVxyXG5cclxuICAgIGNoZWNrSWZTb3J0aW5nQ2hhbmdlZCgpe1xyXG4gICAgICBsZXQgY3VycmVudENvbHVtblNvcnRGaWx0ZXIgPSB0aGlzLmdldENvbHVtblNvcnRTdGF0ZUZvclNlbGVjdGVkUmFkaW8oKTtcclxuXHJcbiAgICAgIHRoaXMuaXNTb3J0Q2hhbmdlZCA9IHRoaXMudGVtcFNvcnRPcmRlciAhPSBudWxsICYmIHRoaXMudGVtcFNvcnRPcmRlciAhPSBjdXJyZW50Q29sdW1uU29ydEZpbHRlcjtcclxuICAgICAgcmV0dXJuIHRoaXMuaXNTb3J0Q2hhbmdlZDtcclxuICAgIH1cclxuXHJcbiAgICBnZXRDb2x1bW5Tb3J0U3RhdGVGb3JTZWxlY3RlZFJhZGlvKCk6IHN0cmluZyB7XHJcbiAgICAgIGxldCBjdXJyZW50Q29sdW1uU29ydEZpbHRlciA9IHRoaXMuYW5uYVNvcnRTZXJ2aWNlLmNvbHVtblNvcnRTdGF0ZSAmJiB0aGlzLmFubmFTb3J0U2VydmljZS5jb2x1bW5Tb3J0U3RhdGUuaGFzKHRoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpbykgJiZcclxuICAgICAgdGhpcy5hbm5hU29ydFNlcnZpY2UuY29sdW1uU29ydFN0YXRlLmdldCh0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnNlbGVjdGVkUmFkaW8pO1xyXG4gICAgICBjdXJyZW50Q29sdW1uU29ydEZpbHRlciA9IGN1cnJlbnRDb2x1bW5Tb3J0RmlsdGVyID8gY3VycmVudENvbHVtblNvcnRGaWx0ZXIgOiBTb3J0VHlwZUVudW0uREVGQVVMVDtcclxuICAgICAgcmV0dXJuIGN1cnJlbnRDb2x1bW5Tb3J0RmlsdGVyO1xyXG4gICAgfVxyXG5cclxuICAgIGRpc2FibGVBcHBseUJ1dHRvbk9mU2VsZWN0ZWRGaWx0ZXIoKXtcclxuICAgICAgbGV0IGhlYWRlciA9IHRoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpbztcclxuXHJcbiAgICAgIGlmICh0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmNhbGVuZGFyU2V0LmhhcyhoZWFkZXIpKSB7XHJcbiAgICAgICAgdGhpcy5kaXNhYmxlQ2FsZW5kYXJBcHBseUJ1dHRvbigpO1xyXG4gICAgICB9IGVsc2UgaWYgKHRoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2xpZGVyU2V0LmhhcyhoZWFkZXIpKSB7XHJcbiAgICAgICAgdGhpcy5kaXNhYmxlU2xpZGVyQXBwbHlCdG4oKTtcclxuICAgICAgfSBlbHNlIGlmICh0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnRpbWVTZXQuaGFzKGhlYWRlcikpIHtcclxuICAgICAgICB0aGlzLmRpc2FibGVUaW1lRmlsdGVyQXBwbHlCdXR0b24oKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmRpc2FibGVDaGVja2JveEZpbHRlckFwcGx5QnV0dG9uKCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBkaXNhYmxlQ2hlY2tib3hGaWx0ZXJBcHBseUJ1dHRvbigpe1xyXG4gICAgICBsZXQgc2VsZWN0ZWRJdGVtcyA9IHRoaXMuc2hvd0ZpbHRlckNvbXBvbmVudCA/IHRoaXMudG9vbHRpcE9wdGlvbnMuZmlsdGVyKGl0ZW0gPT4gaXRlbS5pc1NlbGVjdGVkKSA6IFtdO1xyXG4gICAgICAgIFxyXG4gICAgICBpZih0aGlzLnNob3dGaWx0ZXJDb21wb25lbnQgJiYgdGhpcy5zaG93U29ydENvbXBvbmVudCl7XHJcbiAgICAgICAgICBsZXQgaXNGaWx0ZXJDaGFuZ2VkID0gdGhpcy5jaGVja0lmQ2hlY2tib3hUb29sdGlwSXNGaWx0ZXJlZCgpO1xyXG4gICAgICAgICAgbGV0IGlzU29ydENoYW5nZWQgPSB0aGlzLmNoZWNrSWZTb3J0aW5nQ2hhbmdlZCgpO1xyXG4gICAgICAgICAgdGhpcy5kaXNhYmxlQ2hlY2tib3hBcHBseSA9IHNlbGVjdGVkSXRlbXMubGVuZ3RoID09IDAgfHwgKCFpc1NvcnRDaGFuZ2VkICYmICFpc0ZpbHRlckNoYW5nZWQgKTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIGlmKHRoaXMuc2hvd0ZpbHRlckNvbXBvbmVudCl7XHJcbiAgICAgICAgICB0aGlzLmRpc2FibGVDaGVja2JveEFwcGx5ID0gc2VsZWN0ZWRJdGVtcy5sZW5ndGggPT0gMCB8fCAhdGhpcy5jaGVja0lmQ2hlY2tib3hUb29sdGlwSXNGaWx0ZXJlZCgpO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYodGhpcy5zaG93U29ydENvbXBvbmVudCl7XHJcbiAgICAgICAgICB0aGlzLmRpc2FibGVDaGVja2JveEFwcGx5ID0gIXRoaXMuY2hlY2tJZlNvcnRpbmdDaGFuZ2VkKCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB0cmFja0J5VG9vbHRpcE1vZGVsSWQoaW5kZXg6IG51bWJlciAsIGl0ZW06IFRvb2x0aXBNb2RlbCl7XHJcbiAgICAgIHJldHVybiBpdGVtLmlkO1xyXG4gICAgfVxyXG5cclxuICAgIHNldEFjdGl2ZVN0YXRlT2JqZWN0KCl7XHJcbiAgICAgIHRoaXMuYW5uYUZpbHRlclNlcnZpY2UuaXNGaWx0ZXJTb3J0QWN0aXZlID0gICF0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnJlc2V0RmlsdGVyU29ydEFjdGl2ZVN0YXR1c1xyXG4gICAgICA/IHRoaXMuYW5uYUZpbHRlclNlcnZpY2UuaXNGaWx0ZXJTb3J0QWN0aXZlXHJcbiAgICAgIDoge307XHJcbiAgICAgIHRoaXMudGFibGVIZWFkZXJzLmZvckVhY2goaXRlbSA9PiB7XHJcbiAgICAgICAgaXRlbS5oZWFkZXJJbmZvLmZvckVhY2goaGVhZGVyID0+IHtcclxuICAgICAgICAgICAgaWYoaGVhZGVyLnNob3dUb29sdGlwSWNvbil7XHJcbiAgICAgICAgICAgICAgbGV0IGtleSA9IGhlYWRlci5maWx0ZXJTb3J0T2JqZWN0S2V5cy5qb2luKCcsJyk7XHJcbiAgICAgICAgICAgICAgaGVhZGVyLmpvaW5lZEZpbHRlclNvcnRPYmplY3RLZXlzID0ga2V5O1xyXG4gICAgICAgICAgICAgIC8vIEFOTkEtNDExMyBmaXhcclxuICAgICAgICAgICAgICBpZih0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnJlc2V0RmlsdGVyU29ydEFjdGl2ZVN0YXR1cyl7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmlzRmlsdGVyU29ydEFjdGl2ZVtrZXldID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICAgfSk7XHJcbiAgICAgIHRoaXMuYW5uYUZpbHRlclNlcnZpY2UucmVzZXRGaWx0ZXJTb3J0QWN0aXZlU3RhdHVzID0gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICBzZXRJc0RpZmZlcmVuY2UodmFsdWU6IGJvb2xlYW4pe1xyXG4gICAgICB0aGlzLmlzRGlmZmVyZW5jZUxlc3NUaGFuMjVQZXJjZW50ID0gdmFsdWU7XHJcbiAgICB9XHJcblxyXG4gICAgcmVzZXRJbmRleCgpe1xyXG4gICAgICB0aGlzLnN0YXJ0ID0gMDtcclxuICAgICAgdGhpcy5lbmQgPSB0aGlzLmxpbWl0ICsgdGhpcy5zdGFydDtcclxuICAgIH1cclxuXHJcbiAgICBvblRhYmxlQ29udGFpbmVyU2Nyb2xsKGU6IGFueSkge1xyXG4gICAgICAgIGNvbnN0IHRhYmxlVmlld0hlaWdodCA9IGUudGFyZ2V0Lm9mZnNldEhlaWdodDsgLy8gdmlld3BvcnRcclxuICAgICAgICBjb25zdCB0YWJsZVNjcm9sbEhlaWdodCA9IGUudGFyZ2V0LnNjcm9sbEhlaWdodDsgLy8gbGVuZ3RoIG9mIGFsbCB0YWJsZVxyXG4gICAgICAgIGNvbnN0IHNjcm9sbExvY2F0aW9uID0gZS50YXJnZXQuc2Nyb2xsVG9wOyAvLyBob3cgZmFyIHVzZXIgc2Nyb2xsZWRcclxuXHJcbiAgICAgICAgdGhpcy5yZW1vdmVUb29sdGlwT25TY3JvbGwoKTtcclxuICAgICAgICBcclxuICAgICAgICAvLyBJZiB0aGUgdXNlciBoYXMgc2Nyb2xsZWQgd2l0aGluIDE1MHB4IG9mIHRoZSBib3R0b20sIGFkZCBtb3JlIGRhdGFcclxuICAgICAgICBjb25zdCBidWZmZXIgPSAxNTA7XHJcbiAgICAgICAgY29uc3QgbGltaXQgPSB0YWJsZVNjcm9sbEhlaWdodCAtIHRhYmxlVmlld0hlaWdodCAtIGJ1ZmZlcjtcclxuICAgICAgICBpZiAoc2Nyb2xsTG9jYXRpb24gPiBsaW1pdCkge1xyXG4gICAgICAgICAgICBsZXQgZGF0YSA9IHRoaXMuZ2V0VGFibGVEYXRhKHRoaXMuc3RhcnQsIHRoaXMuZW5kKTtcclxuICAgICAgICAgICAgdGhpcy5yZW5kZXJlZERhdGEgPSB0aGlzLnJlbmRlcmVkRGF0YS5jb25jYXQoZGF0YSk7XHJcbiAgICAgICAgICAgIHRoaXMudXBkYXRlSW5kZXgoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy50YWJsZUNvbnRhaW5lclNjcm9sbGVkKGUpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldFRhYmxlRGF0YShzdGFydDogbnVtYmVyLCBlbmQ6IG51bWJlcikge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnRhYmxlRGF0YS5maWx0ZXIoKHZhbHVlLCBpbmRleCkgPT4gaW5kZXggPj0gc3RhcnQgJiYgaW5kZXggPCBlbmQpO1xyXG4gICAgfVxyXG5cclxuICAgIHVwZGF0ZUluZGV4KCkge1xyXG4gICAgICAgIHRoaXMuc3RhcnQgPSB0aGlzLmVuZDtcclxuICAgICAgICB0aGlzLmVuZCA9IHRoaXMubGltaXQgKyB0aGlzLnN0YXJ0O1xyXG4gICAgfVxyXG5cclxuICAgIHNldEluaXRpYWxSb3dzRm9yVGFibGUoKXtcclxuICAgICAgdGhpcy5yZXNldEluZGV4KCk7XHJcbiAgICAgIHRoaXMucmVuZGVyZWREYXRhID0gdGhpcy5nZXRUYWJsZURhdGEodGhpcy5zdGFydCx0aGlzLmVuZCk7XHJcbiAgICAgIHRoaXMudXBkYXRlSW5kZXgoKTtcclxuICAgIH1cclxuXHJcbiAgICBzcG90RGV0YWlsc0Rvd25sb2FkQ2xpY2tlZChwYXJlbnRDaGlsZE9yVG90YWxSb3c6IFwiREFUQVJPV1wiIHwgXCJUT1RBTFJPV1wiLCByb3dkYXRhPzogYW55ICkge1xyXG4gICAgICBpZihyb3dkYXRhKXtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkSW52ZW50b3J5SWRGb3JEb3dubG9hZCA9IHJvd2RhdGEuaW52ZW50b3J5Q29kZUlkO1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWREZW1vZ3JhcGhpY0ZvckRvd25sb2FkID0gcm93ZGF0YS5kZW1vZ3JhcGhpYztcclxuICAgICAgfSBlbHNle1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJbnZlbnRvcnlJZEZvckRvd25sb2FkID0gbnVsbDtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkRGVtb2dyYXBoaWNGb3JEb3dubG9hZCA9IG51bGw7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5zZWxlY3RlZFJvd1R5cGVGb3JEb3dubG9hZCA9IHBhcmVudENoaWxkT3JUb3RhbFJvdztcclxuICAgICAgdGhpcy5kb3dubG9hZFNwb3REZXRhaWxzLmVtaXQoe1xyXG4gICAgICAgIHBhcmVudENoaWxkT3JUb3RhbFJvdzogcGFyZW50Q2hpbGRPclRvdGFsUm93LFxyXG4gICAgICAgIGludmVudG9yeUNvZGVJZDogdGhpcy5zZWxlY3RlZEludmVudG9yeUlkRm9yRG93bmxvYWQsXHJcbiAgICAgICAgZGVtb2dyYXBoaWM6IHRoaXMuc2VsZWN0ZWREZW1vZ3JhcGhpY0ZvckRvd25sb2FkfSlcclxuICB9XHJcblxyXG4gIHRhYmxlQ29udGFpbmVyU2Nyb2xsZWQoZXZlbnQ6IGFueSl7XHJcbiAgICAgIHRoaXMuaXNTY3JvbGxlZExlZnQgPSBldmVudC50YXJnZXQuc2Nyb2xsTGVmdCA+IDA7XHJcbiAgICAgIHRoaXMucmVtb3ZlVG9vbHRpcE9uU2Nyb2xsKCk7XHJcbiAgICB9XHJcbiAgXHJcbiAgbW91c2VFbnRlck9uU3RyaW5nVGV4dEFjdGlvblR5cGUocm93RGF0YTogYW55LCB0b29sdGlwS2V5OiBzdHJpbmcgKXtcclxuICAgIHRoaXMudGV4dEFjdGlvblRvb2x0aXAgPSByb3dEYXRhW3Rvb2x0aXBLZXldOyBcclxuICAgIHRoaXMubm90aWZpY2F0aW9uSWNvbkhvdmVyLmVtaXQoe3Jvd0RhdGE6cm93RGF0YSwgdHlwZTogXCJvbi1lbnRlclwifSlcclxuICB9XHJcblxyXG4gIG1vdXNlRW50ZXJPblN0cmluZ1RleHRBY3Rpb25UeXBlQ29udGFpbmluZ1RhYmxlKHJvd0RhdGE6IGFueSwgdG9vbHRpcEtleTogc3RyaW5nICl7XHJcbiAgICB0aGlzLnRvb2x0aXBDb250YWluaW5nVGFibGUgPSByb3dEYXRhW3Rvb2x0aXBLZXldO1xyXG4gIH1cclxuXHJcbiAgbW91c2VMZWF2ZVRleHRBY3Rpb25UeXBlKHJvd0RhdGE6IGFueSl7XHJcbiAgICB0aGlzLm5vdGlmaWNhdGlvbkljb25Ib3ZlckxlYXZlLmVtaXQoe3Jvd0RhdGE6cm93RGF0YSwgdHlwZTogXCJvbi1sZWF2ZVwifSkgIFxyXG4gIH1cclxuXHJcbiAgbW91c2VFbnRlck9uVGV4dEFjdGlvblR5cGUocm93RGF0YTogYW55LCB0b29sdGlwS2V5OiBzdHJpbmcgKXtcclxuICAgIHRoaXMudGV4dEFjdGlvblRvb2x0aXAgPSByb3dEYXRhW3Rvb2x0aXBLZXldO1xyXG4gIH1cclxuXHJcbiAgb25DbGlja2FibGVEYXRhQ2xpY2tlZChSb3dkYXRhOiBhbnksIGlkOiBudW1iZXIpe1xyXG4gICAgICB0aGlzLmNsaWNrYWJsZURhdGFDbGlja2VkLmVtaXQoe2RhdGE6IFJvd2RhdGEsIGlkOiBpZH0pO1xyXG4gIH1cclxuXHJcbiAgcmVtb3ZlVG9vbHRpcE9uU2Nyb2xsKCl7XHJcbiAgICBjb25zdCBlbGVtZW50cyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXCJyZW1hcmtzLWluZm8tdG9vbHRpcFwiKTtcclxuICAgIC8vIGNvbnN0IHRvb2x0aXBFbGVtZW50cyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXCJ0b29sdGlwXCIpO1xyXG4gICAgY29uc3QgZ3RUb29sdGlwID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcInJlbW92ZS1vbi1zY3JvbGwtY2xhc3NcIik7XHJcbiAgICBjb25zdCB0b29sdGlwRWxlbWVudHMgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFwidG9vbHRpcFwiKTtcclxuXHJcbiAgICB3aGlsZSAoZWxlbWVudHMgJiYgZWxlbWVudHMubGVuZ3RoID4gMCkge1xyXG4gICAgICBlbGVtZW50c1swXS5yZW1vdmUoKTtcclxuICAgIH1cclxuICAgIHdoaWxlICh0b29sdGlwRWxlbWVudHMgJiYgdG9vbHRpcEVsZW1lbnRzLmxlbmd0aCA+IDApIHtcclxuICAgICAgdG9vbHRpcEVsZW1lbnRzWzBdLnJlbW92ZSgpO1xyXG4gICAgICB0aGlzLnRvb2x0aXAgPSBudWxsO1xyXG4gICAgfVxyXG4gICAgd2hpbGUgKGd0VG9vbHRpcCAmJiBndFRvb2x0aXAubGVuZ3RoID4gMCkge1xyXG4gICAgICBndFRvb2x0aXBbMF0ucmVtb3ZlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBpY29uQ2xpY2tlZEluVG90YWxSb3coY29sTmFtZTogc3RyaW5nKXtcclxuICAgIHRoaXMudG90YWxSb3dJY29uQ2xpY2tlZC5lbWl0KGNvbE5hbWUpO1xyXG4gIH1cclxuXHJcbiAgZWRpdGFibGVJbnB1dFZhbHVlQ2hhbmdlZCh2YWx1ZTogYW55LCByb3c6IGFueSl7XHJcbiAgICB0aGlzLmVkaXRhYmxlSW5wdXRFZGl0ZWQuZW1pdCh7cm93OnJvdywgdmFsdWV9KTtcclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cInRhYmxlLWNvbnRhaW5lciB7e2d0R2VuZXJhbENvbmZpZz8udGFibGVPdXRlckNvbnRhaW5lck5hbWV9fSB7e3RhYmxlQm90dG9tQm9yZGVyQ2xhc3N9fVwiIFtuZ0NsYXNzXT1cInsgJ3Njcm9sbC1sZWZ0LXNoYWRvdy1lZmZlY3QnOiBpc1Njcm9sbGVkTGVmdCwgJ2NsaWNrYWJsZS1yb3cnOiBjbGlja2FibGVSb3cgfVwiIChzY3JvbGwpPVwib25UYWJsZUNvbnRhaW5lclNjcm9sbCgkZXZlbnQpXCI+XHJcbiAgICA8ZGl2XHJcbiAgICAgICAgW2NsYXNzXT1cImd0R2VuZXJhbENvbmZpZy50YWJsZUNvbnRhaW5lck5hbWVcIlxyXG4gICAgICAgIGNsYXNzPVwiaG9yaXpvbnRhbC1zY3JvbGwtZm9yLXRhYmxlLWNvbnRhaW5lclwiXHJcbiAgICAgICAgW25nU3R5bGVdPVwie1xyXG4gICAgICAgICAgICBoZWlnaHQ6XHJcbiAgICAgICAgICAgICAgICB0YWJsZURhdGEubGVuZ3RoIDwgbWF4aW11bVJvd3NXaGljaENhbkJlUmVuZGVyZWRXaXRob3V0U2Nyb2xsXHJcbiAgICAgICAgICAgICAgICAgICAgPyAnY2FsYygnICtcclxuICAgICAgICAgICAgICAgICAgICAoKGd0RGltZW5zaW9uLnJvd0hlaWdodCkgKiB0YWJsZURhdGEubGVuZ3RoICtcclxuICAgICAgICAgICAgICAgICAgICAgICAgKCF0YWJsZURhdGEubGVuZ3RoIHx8ICFndEdlbmVyYWxDb25maWcudG90YWxSb3dcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gZ3REaW1lbnNpb24uaGVhZGVySGVpZ2h0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGd0RGltZW5zaW9uLmhlYWRlckhlaWdodCArIGd0RGltZW5zaW9uLnJvd0hlaWdodCkpICtcclxuICAgICAgICAgICAgICAgICAgICAncHgpJ1xyXG4gICAgICAgICAgICAgICAgICAgIDogZ3REaW1lbnNpb24udGFibGVIZWlnaHRcclxuICAgICAgICB9XCJcclxuICAgID5cclxuICAgICAgICA8dGFibGUgY2xhc3M9XCJndFwiIFtuZ0NsYXNzXT1cInRhYmxlQ2xhc3NcIiBtYXQtdGFibGUgW2RhdGFTb3VyY2VdPVwicmVuZGVyZWREYXRhXCI+XHJcbiAgICAgICAgICAgIDx0clxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJoZWFkZXItcm93XCJcclxuICAgICAgICAgICAgICAgIG1hdC1oZWFkZXItcm93XHJcbiAgICAgICAgICAgICAgICAqbWF0SGVhZGVyUm93RGVmPVwidGFibGVDb2x1bW5zOyBzdGlja3k6IHRydWVcIlxyXG4gICAgICAgICAgICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJndERpbWVuc2lvbi5oZWFkZXJIZWlnaHRcIlxyXG4gICAgICAgICAgICA+PC90cj5cclxuICAgICAgICAgICAgPHRyXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInRvdGFsLXJvd1wiXHJcbiAgICAgICAgICAgICAgICBtYXQtaGVhZGVyLXJvd1xyXG4gICAgICAgICAgICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJndERpbWVuc2lvbi5yb3dIZWlnaHRcIlxyXG4gICAgICAgICAgICAgICAgKm1hdEhlYWRlclJvd0RlZj1cInRvdGFsUm93Q29sdW1uczsgc3RpY2t5OiB0cnVlXCJcclxuICAgICAgICAgICAgICAgIFtjbGFzcy5oaWRkZW5dPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgc2hvd1NrZWxldG9uTG9hZGluZyB8fFxyXG4gICAgICAgICAgICAgICAgICAgICghc2hvd1NrZWxldG9uTG9hZGluZyAmJiAhdGFibGVEYXRhLmxlbmd0aCApIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgKGlzTm9EYXRhVG9EaXNwbGF5U3ViamVjdCQgfCBhc3luYykgfHwgXHJcbiAgICAgICAgICAgICAgICAgICAgKCFzaG93U2tlbGV0b25Mb2FkaW5nICYmICFndEdlbmVyYWxDb25maWcudG90YWxSb3cpXHJcbiAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICA+PC90cj5cclxuICAgICAgICAgICAgPHRyXHJcbiAgICAgICAgICAgICAgICBbY2xhc3NdPVwicm93RGF0YS5ndENsYXNzXCJcclxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsnbm8tYm9yZGVyLXRyJzogKGlzTm9EYXRhVG9EaXNwbGF5U3ViamVjdCQgfCBhc3luYyl9XCJcclxuICAgICAgICAgICAgICAgIG1hdC1yb3dcclxuICAgICAgICAgICAgICAgICptYXRSb3dEZWY9XCJsZXQgcm93RGF0YTsgY29sdW1uczogdGFibGVDb2x1bW5zXCJcclxuICAgICAgICAgICAgICAgIFtzdHlsZS5oZWlnaHQucHhdPVwiZ3REaW1lbnNpb24ucm93SGVpZ2h0XCIoY2xpY2spPVwiZGF0YVJvd0NsaWNrZWQocm93RGF0YSlcIlxyXG4gICAgICAgICAgICA+PC90cj5cclxuXHJcbiAgICAgICAgICAgIDwhLS0gVE9UQUwgUk9XIC0tPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyIFttYXRDb2x1bW5EZWZdPVwiY29sdW1uLmNvbE5hbWVcIiAqbmdGb3I9XCJsZXQgY29sdW1uIG9mIHRvdGFsUm93SW5mbzsgdHJhY2tCeTogdHJhY2tCeUZuXCI+XHJcbiAgICAgICAgICAgICAgICA8dGQgbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmIFthdHRyLmNvbHNwYW5dPVwiY29sdW1uLmNvbHNwYW5cIiBjbGFzcz1cInt7Y29sdW1uLmNsYXNzfX1cIj5cclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sdW1uWydpc0FjdGlvbkNvbHVtbiddXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxhICpuZ0Zvcj1cImxldCBkYXRhIG9mIGNvbHVtbi5hY3Rpb25EYXRhXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwiZGF0YS5jbGFzc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25DbGlja2FibGVEYXRhQ2xpY2tlZCh7fSwgZGF0YS5pZClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBkYXRhLm5hbWUgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9hPiAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2x1bW5bJ2lzSWNvbkNvbHVtbiddXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwie3tjb2x1bW4/Lmljb25EYXRhPy5jbGFzc319XCIgKGNsaWNrKT1cImljb25DbGlja2VkSW5Ub3RhbFJvdyhjb2x1bW4/LmNvbE5hbWUpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvaT4gICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWNvbHVtblsnaXNBY3Rpb25Db2x1bW4nXVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3Ryb25nPnt7IGNvbHVtbi5kYXRhIH19PC9zdHJvbmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2x1bW4ubG93ZXJEYXRhXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImNvbHVtbi5jb2xOYW1lID09ICd0b3RhbC1wb3RlbnRpYWwtYm9va2VkLXVuaXQnICYmIGd0R2VuZXJhbENvbmZpZy5jb21wb25lbnQgPT0gJ1JBVElORyc7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBjb2x1bW5Mb3dlckRhdGFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2xpY2thYmxlLWRhdGFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzcG90RGV0YWlsc0Rvd25sb2FkQ2xpY2tlZCgnVE9UQUxST1cnKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnZGlzYWJsZWQtY2xpY2thYmxlLWRhdGEnOiBkb3dubG9hZEluUHJvZ3Jlc3MgfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPnt7IGNvbHVtbi5sb3dlckRhdGEgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1hdGVyaWFsLWljb25zIHNwb3QtZGV0YWlscy1kb3dubG9hZC1pY29uc1wiPmdldF9hcHA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImRvd25sb2FkSW5Qcm9ncmVzcyBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIHNlbGVjdGVkUm93VHlwZUZvckRvd25sb2FkID09ICdUT1RBTFJPVycgXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiY2lyY3VsYXJQcm9ncmVzc0JhclwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNjb2x1bW5Mb3dlckRhdGE+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgY29sdW1uLmxvd2VyRGF0YSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2x1bW4udG9vbHRpcE1lc3NhZ2VcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cIm1pIG1kaS1pbmZvLW91dGxpbmUgaW5mby1sYWJlbFwiIGNvbnRhaW5lcj1cImJvZHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ2JUb29sdGlwXT1cImNvbHVtbi50b29sdGlwTWVzc2FnZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdG9vbHRpcENsYXNzPVwiZ3QtdG90YWwtcm93LXRvb2x0aXBcIiBwbGFjZW1lbnQ9XCJib3R0b21cIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICA8IS0tIE1BSU4gUk9XIC0tPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyIFttYXRDb2x1bW5EZWZdPVwiY29sdW1uRGVmLmhlYWRlckluZm9bMF0ub2JqZWN0S2V5XCIgKm5nRm9yPVwibGV0IGNvbHVtbkRlZiBvZiB0YWJsZUhlYWRlcnM7ICB0cmFja0J5OiB0cmFja0J5Rm5cIj5cclxuICAgICAgICAgICAgICAgIDx0aCAjdGFibGVIZWFkZXIgbm93cmFwIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZiBbc3R5bGUud2lkdGhdPVwiY29sdW1uRGVmLndpZHRoXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBteC0wXCIgKm5nRm9yPVwibGV0IGhlYWRlciBvZiBjb2x1bW5EZWYuaGVhZGVySW5mbzsgbGV0IGogPSBpbmRleDtcIj4gICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxwXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImhlYWRlci50eXBlT2ZIZWFkZXJEYXRhID09PSAnU1RSSU5HJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICd1cHBlci1sYWJlbCc6IGogPT09IDAsICdsb3dlci1sYWJlbCc6IGogPT09IDEgfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGhlYWRlci5uYW1lIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSAqbmdJZj1cImhlYWRlci50b29sdGlwICYmIGhlYWRlci50b29sdGlwLm5hbWUgPT0gJ2ltcHNJbmZvVG9vbHRpcCdcIiBjbGFzcz1cInt7aGVhZGVyWyd0b29sdGlwJ10uaWNvbkNsYXNzfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cInsnZmxvYXQnOiBoZWFkZXJbJ3Rvb2x0aXAnXS5pY29uUG9zaXRpb259XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjdD1cIm5nYlRvb2x0aXBcIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXI9XCJib2R5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdiVG9vbHRpcF09XCJpbXBzSW5mb1Rvb2x0aXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lcj1cImJvZHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cInt7IGhlYWRlclsndG9vbHRpcCddLnRvb2x0aXBQb3NpdGlvbiB9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9vbHRpcENsYXNzPVwie3sgaGVhZGVyWyd0b29sdGlwJ10udG9vbHRpcENsYXNzIH19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpICpuZ0lmPVwiaGVhZGVyLnRvb2x0aXAgJiYgaGVhZGVyLnRvb2x0aXAubmFtZSA9PSAnc3BvdHNDb2x1bW5FcXVpdmFsaXphdGlvbk1lc3NhZ2VUb29sdGlwJ1wiIGNsYXNzPVwie3toZWFkZXJbJ3Rvb2x0aXAnXS5pY29uQ2xhc3N9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nU3R5bGVdPVwieydmbG9hdCc6IGhlYWRlclsndG9vbHRpcCddLmljb25Qb3NpdGlvbn1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lcj1cImJvZHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICN0PVwibmdiVG9vbHRpcFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyPVwiYm9keVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nYlRvb2x0aXBdPVwic3BvdHNDb2x1bW5FcXVpdmFsaXphdGlvbk1lc3NhZ2VUb29sdGlwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJ7eyBoZWFkZXJbJ3Rvb2x0aXAnXS50b29sdGlwUG9zaXRpb24gfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvb2x0aXBDbGFzcz1cInt7IGhlYWRlclsndG9vbHRpcCddLnRvb2x0aXBDbGFzcyB9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSAqbmdJZj1cImhlYWRlci50b29sdGlwICYmIGhlYWRlci50b29sdGlwLm5hbWUgPT0gJ3JhdGluZ0luZm9Ub29sdGlwJ1wiIGNsYXNzPVwie3toZWFkZXJbJ3Rvb2x0aXAnXS5pY29uQ2xhc3N9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nU3R5bGVdPVwieydmbG9hdCc6IGhlYWRlclsndG9vbHRpcCddLmljb25Qb3NpdGlvbn1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICN0PVwibmdiVG9vbHRpcFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyPVwiYm9keVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nYlRvb2x0aXBdPVwicmF0aW5nSW5mb1Rvb2x0aXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lcj1cImJvZHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cInt7IGhlYWRlclsndG9vbHRpcCddLnRvb2x0aXBQb3NpdGlvbiB9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9vbHRpcENsYXNzPVwie3sgaGVhZGVyWyd0b29sdGlwJ10udG9vbHRpcENsYXNzIH19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpICpuZ0lmPVwiaGVhZGVyLnRvb2x0aXAgJiYgaGVhZGVyLnRvb2x0aXAubmFtZSA9PSAncmF0ZUluZm9Ub29sdGlwJ1wiIGNsYXNzPVwie3toZWFkZXJbJ3Rvb2x0aXAnXS5pY29uQ2xhc3N9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nU3R5bGVdPVwieydmbG9hdCc6IGhlYWRlclsndG9vbHRpcCddLmljb25Qb3NpdGlvbn1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICN0PVwibmdiVG9vbHRpcFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyPVwiYm9keVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nYlRvb2x0aXBdPVwicmF0ZUluZm9Ub29sdGlwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXI9XCJib2R5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJ7eyBoZWFkZXJbJ3Rvb2x0aXAnXS50b29sdGlwUG9zaXRpb24gfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvb2x0aXBDbGFzcz1cInt7IGhlYWRlclsndG9vbHRpcCddLnRvb2x0aXBDbGFzcyB9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSAqbmdJZj1cImhlYWRlci50b29sdGlwICYmIGhlYWRlci50b29sdGlwLm5hbWUgPT0gJ29uZ29pbmdSZXZCb29rZWRDb2x1bW5Ub29sdGlwJ1wiIGNsYXNzPVwie3toZWFkZXJbJ3Rvb2x0aXAnXS5pY29uQ2xhc3N9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nU3R5bGVdPVwieydmbG9hdCc6IGhlYWRlclsndG9vbHRpcCddLmljb25Qb3NpdGlvbn1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICN0PVwibmdiVG9vbHRpcFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyPVwiYm9keVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nYlRvb2x0aXBdPVwib25nb2luZ1JldkJvb2tlZENvbHVtblRvb2x0aXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cInt7IGhlYWRlclsndG9vbHRpcCddLnRvb2x0aXBQb3NpdGlvbiB9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9vbHRpcENsYXNzPVwie3sgaGVhZGVyWyd0b29sdGlwJ10udG9vbHRpcENsYXNzIH19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpICpuZ0lmPVwiaGVhZGVyLnRvb2x0aXAgJiYgaGVhZGVyLnRvb2x0aXAubmFtZSA9PSAnY29tcGxldGVkUmV2Qm9va2VkQ29sdW1uVG9vbHRpcCdcIiBjbGFzcz1cInt7aGVhZGVyWyd0b29sdGlwJ10uaWNvbkNsYXNzfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cInsnZmxvYXQnOiBoZWFkZXJbJ3Rvb2x0aXAnXS5pY29uUG9zaXRpb259XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjdD1cIm5nYlRvb2x0aXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lcj1cImJvZHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ2JUb29sdGlwXT1cImNvbXBsZXRlZFJldkJvb2tlZENvbHVtblRvb2x0aXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cInt7IGhlYWRlclsndG9vbHRpcCddLnRvb2x0aXBQb3NpdGlvbiB9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9vbHRpcENsYXNzPVwie3sgaGVhZGVyWyd0b29sdGlwJ10udG9vbHRpcENsYXNzIH19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpICpuZ0lmPVwiaGVhZGVyLnRvb2x0aXAgJiYgaGVhZGVyLnRvb2x0aXAubmFtZSA9PSAnYXZnQm9va2VkUmF0ZSdcIiBjbGFzcz1cInt7aGVhZGVyWyd0b29sdGlwJ10uaWNvbkNsYXNzfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cInsnZmxvYXQnOiBoZWFkZXJbJ3Rvb2x0aXAnXS5pY29uUG9zaXRpb259XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjdD1cIm5nYlRvb2x0aXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lcj1cImJvZHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ2JUb29sdGlwXT1cImF2Z0Jvb2tlZFJhdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cInt7IGhlYWRlclsndG9vbHRpcCddLnRvb2x0aXBQb3NpdGlvbiB9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9vbHRpcENsYXNzPVwie3sgaGVhZGVyWyd0b29sdGlwJ10udG9vbHRpcENsYXNzIH19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpICpuZ0lmPVwiaGVhZGVyLnRvb2x0aXAgJiYgaGVhZGVyLnRvb2x0aXAubmFtZSA9PSAnYXZnQm9va2VkUnRnJ1wiIGNsYXNzPVwie3toZWFkZXJbJ3Rvb2x0aXAnXS5pY29uQ2xhc3N9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nU3R5bGVdPVwieydmbG9hdCc6IGhlYWRlclsndG9vbHRpcCddLmljb25Qb3NpdGlvbn1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICN0PVwibmdiVG9vbHRpcFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyPVwiYm9keVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nYlRvb2x0aXBdPVwiYXZnQm9va2VkUnRnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJ7eyBoZWFkZXJbJ3Rvb2x0aXAnXS50b29sdGlwUG9zaXRpb24gfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvb2x0aXBDbGFzcz1cInt7IGhlYWRlclsndG9vbHRpcCddLnRvb2x0aXBDbGFzcyB9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSAqbmdJZj1cImhlYWRlci50b29sdGlwICYmIGhlYWRlci50b29sdGlwLm5hbWUgPT0gJ2F2Z0Jvb2tlZEltcHMnXCIgY2xhc3M9XCJ7e2hlYWRlclsndG9vbHRpcCddLmljb25DbGFzc319XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJ7J2Zsb2F0JzogaGVhZGVyWyd0b29sdGlwJ10uaWNvblBvc2l0aW9ufVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI3Q9XCJuZ2JUb29sdGlwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXI9XCJib2R5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdiVG9vbHRpcF09XCJhdmdCb29rZWRJbXBzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJ7eyBoZWFkZXJbJ3Rvb2x0aXAnXS50b29sdGlwUG9zaXRpb24gfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvb2x0aXBDbGFzcz1cInt7IGhlYWRlclsndG9vbHRpcCddLnRvb2x0aXBDbGFzcyB9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvcD5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJoZWFkZXIudHlwZU9mSGVhZGVyRGF0YSA9PT0gJ0NIRUNLQk9YJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImd0R2VuZXJhbENvbmZpZy5pc0hlYWRlckNoZWNrZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnMgY3VzdG9tLWNvbHVtbi1jaGVja2JveC1jaGVja2VkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0VW5zZWxlY3RBbGxSb3dzKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrX2JveFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIiFndEdlbmVyYWxDb25maWcuaXNIZWFkZXJDaGVja2VkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1hdGVyaWFsLWljb25zIGN1c3RvbS1jb2x1bW4tY2hlY2tib3gtdW5jaGVja2VkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdkaXNhYmxlLWNoZWNrYm94JzogZ3RHZW5lcmFsQ29uZmlnLmRpc2FibGVIZWFkZXJDaGVja2JveCB9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0VW5zZWxlY3RBbGxSb3dzKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrX2JveF9vdXRsaW5lX2JsYW5rXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImd0R2VuZXJhbENvbmZpZy5zaG93QWxsQ29sdW1uRmlsdGVyXCIgY2xhc3M9XCJzb3J0LWZpbHRlci1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJoZWFkZXIuc2hvd1Rvb2x0aXBJY29uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBBY3RpdmUgdG9vbHRpcCBGdW5jdGlvbmFsaXR5IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJoZWFkZXIuZmlsdGVyID09PSAnQ0hFQ0tCT1gnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1kaSBtZGktZmlsdGVyLXZhcmlhbnRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGl2ZTogYW5uYUZpbHRlclNlcnZpY2UuaXNGaWx0ZXJTb3J0QWN0aXZlICYmIGFubmFGaWx0ZXJTZXJ2aWNlLmlzRmlsdGVyU29ydEFjdGl2ZVtoZWFkZXIuam9pbmVkRmlsdGVyU29ydE9iamVjdEtleXNdLCAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZDogaGVhZGVyLmRpc2FibGVUb29sdGlwSWNvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdiVG9vbHRpcF09XCJmaWx0ZXJUb29sdGlwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbSBsZWZ0LXRvcCBhdXRvXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lcj1cImJvZHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9vbHRpcENsYXNzPVwibm9uLWVkaXQtY2hlY2tib3gtdG9vbHRpcFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXV0b0Nsb3NlXT1cIidvdXRzaWRlJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmlnZ2Vycz1cIm1hbnVhbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjdD1cIm5nYlRvb2x0aXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImJpbmRUaGVWYWx1ZVRvVG9vbFRpcCh0LCBoZWFkZXIpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChoaWRkZW4pPVwiY2xvc2VUb29sdGlwKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PGJyIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImhlYWRlci5maWx0ZXIgPT09ICdTTElERVInXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1kaSBtZGktZmlsdGVyLXZhcmlhbnRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGl2ZTogYW5uYUZpbHRlclNlcnZpY2UuaXNGaWx0ZXJTb3J0QWN0aXZlICYmIGFubmFGaWx0ZXJTZXJ2aWNlLmlzRmlsdGVyU29ydEFjdGl2ZVtoZWFkZXIuam9pbmVkRmlsdGVyU29ydE9iamVjdEtleXNdLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkOiBoZWFkZXIuZGlzYWJsZVRvb2x0aXBJY29uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ2JUb29sdGlwXT1cInNsaWRlclRvb2xUaXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tIGxlZnQtdG9wXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lcj1cImJvZHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9vbHRpcENsYXNzPVwibm9uLWVkaXQtc2xpZGVyLXRvb2x0aXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F1dG9DbG9zZV09XCInb3V0c2lkZSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJpZ2dlcnM9XCJtYW51YWxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI3QxPVwibmdiVG9vbHRpcFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiYmluZFRoZVZhbHVlVG9Ub29sVGlwKHQxLCBoZWFkZXIpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChoaWRkZW4pPVwiY2xvc2VUb29sdGlwKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PGJyIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImhlYWRlci5maWx0ZXIgPT09ICdEQVRFJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtZGkgbWRpLWZpbHRlci12YXJpYW50XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3RpdmU6IGFubmFGaWx0ZXJTZXJ2aWNlLmlzRmlsdGVyU29ydEFjdGl2ZSAmJiBhbm5hRmlsdGVyU2VydmljZS5pc0ZpbHRlclNvcnRBY3RpdmVbaGVhZGVyLmpvaW5lZEZpbHRlclNvcnRPYmplY3RLZXlzXSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZDogaGVhZGVyLmRpc2FibGVUb29sdGlwSWNvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdiVG9vbHRpcF09XCJkYXRlUGlja2VyVG9vbHRpcFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20gYXV0b1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXI9XCJib2R5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvb2x0aXBDbGFzcz1cIm5vbi1lZGl0LWRhdGVwaWNrZXItdG9vbHRpcFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXV0b0Nsb3NlXT1cIidvdXRzaWRlJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmlnZ2Vycz1cIm1hbnVhbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjdDI9XCJuZ2JUb29sdGlwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJiaW5kVGhlVmFsdWVUb1Rvb2xUaXAodDIsIGhlYWRlcilcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGhpZGRlbik9XCJjbG9zZVRvb2x0aXAoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID48YnIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaGVhZGVyLmZpbHRlciA9PT0gJ1dFRUsnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1kaSBtZGktZmlsdGVyLXZhcmlhbnRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGl2ZTogYW5uYUZpbHRlclNlcnZpY2UuaXNGaWx0ZXJTb3J0QWN0aXZlICYmIGFubmFGaWx0ZXJTZXJ2aWNlLmlzRmlsdGVyU29ydEFjdGl2ZVtoZWFkZXIuam9pbmVkRmlsdGVyU29ydE9iamVjdEtleXNdLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkOiBoZWFkZXIuZGlzYWJsZVRvb2x0aXBJY29uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ2JUb29sdGlwXT1cIndlZWtQaWNrZXJUb29sVGlwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbSBsZWZ0LXRvcFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXI9XCJib2R5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdXRvQ2xvc2VdPVwiJ291dHNpZGUnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyaWdnZXJzPVwibWFudWFsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICN0Mz1cIm5nYlRvb2x0aXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImJpbmRUaGVWYWx1ZVRvVG9vbFRpcCh0MywgaGVhZGVyKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaGlkZGVuKT1cImNsb3NlVG9vbHRpcCgpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjxiciAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJoZWFkZXIuZmlsdGVyID09PSAnVElNRSdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWRpIG1kaS1maWx0ZXItdmFyaWFudFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aXZlOiBhbm5hRmlsdGVyU2VydmljZS5pc0ZpbHRlclNvcnRBY3RpdmUgJiYgYW5uYUZpbHRlclNlcnZpY2UuaXNGaWx0ZXJTb3J0QWN0aXZlW2hlYWRlci5qb2luZWRGaWx0ZXJTb3J0T2JqZWN0S2V5c10sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6IGhlYWRlci5kaXNhYmxlVG9vbHRpcEljb25cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nYlRvb2x0aXBdPVwidGltZUZpbHRlclRvb2xUaXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tIGxlZnQtdG9wIGF1dG9cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyPVwiYm9keVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b29sdGlwQ2xhc3M9XCJub24tZWRpdC10aW1lLXRvb2x0aXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F1dG9DbG9zZV09XCInb3V0c2lkZSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJpZ2dlcnM9XCJtYW51YWxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI3Q0PVwibmdiVG9vbHRpcFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiYmluZFRoZVZhbHVlVG9Ub29sVGlwKHQ0LCBoZWFkZXIpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChoaWRkZW4pPVwiY2xvc2VUb29sdGlwKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PGJyIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaGVhZGVyLnNob3dUb29sdGlwSWNvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGlkPVwibm8tZmlsdGVyLXNwYWNlXCI+PC9zcGFuPjxiciAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSAqbmdJZj1cImhlYWRlci50b29sdGlwICYmIGhlYWRlci50b29sdGlwLm5hbWUgPT0gJ2x1clZpb2xhdGlvbkluZm9Ub29sdGlwJ1wiIGNsYXNzPVwie3toZWFkZXJbJ3Rvb2x0aXAnXS5pY29uQ2xhc3N9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nU3R5bGVdPVwieydmbG9hdCc6IGhlYWRlclsndG9vbHRpcCddLmljb25Qb3NpdGlvbn1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICN0PVwibmdiVG9vbHRpcFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyPVwiYm9keVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nYlRvb2x0aXBdPVwibHVyVmlvbGF0aW9uSW5mb1Rvb2x0aXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cInt7IGhlYWRlclsndG9vbHRpcCddLnRvb2x0aXBQb3NpdGlvbiB9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9vbHRpcENsYXNzPVwie3sgaGVhZGVyWyd0b29sdGlwJ10udG9vbHRpcENsYXNzIH19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaT5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC90aD5cclxuXHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICptYXRDZWxsRGVmPVwibGV0IFJPV19EQVRBXCI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDx0ZCBtYXQtY2VsbCBbc3R5bGUuYmFja2dyb3VuZF09XCJST1dfREFUQS5iYWNrZ3JvdW5kQ29sb3JcIiBcclxuICAgICAgICAgICAgICAgICAgICBbc3R5bGUuYm9yZGVyXT1cIlJPV19EQVRBLmJvcmRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ7e1JPV19EQVRBLnJvd0NsYXNzfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLnJvd3NwYW5dPVwiUk9XX0RBVEFbY29sdW1uRGVmLmhlYWRlckluZm9bMF0ub2JqZWN0S2V5ICsgJ1Jvd3NwYW4nXVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhaGlkZVNvbWVUZHMgfHwoIGhpZGVTb21lVGRzICYmICFST1dfREFUQVsnaGlkZScgKyBjb2x1bW5EZWYuaGVhZGVySW5mb1swXS5vYmplY3RLZXkgKyAnVGQnXSlcIlxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5neC1za2VsZXRvbi1sb2FkZXIgKm5nSWY9XCJzaG93U2tlbGV0b25Mb2FkaW5nXCIgY291bnQ9XCIxXCIgW3RoZW1lXT1cInsgaGVpZ2h0OiAnMTBweCcsIGRpc3BsYXk6ICdibG9jaycgfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25neC1za2VsZXRvbi1sb2FkZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXNob3dTa2VsZXRvbkxvYWRpbmdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0YWJsZURhdGEubGVuZ3RoID4gMCAmJiAhKGlzTm9EYXRhVG9EaXNwbGF5U3ViamVjdCQgfCBhc3luYylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBzdWJsaW5lIG9mIGNvbHVtbkRlZi5oZWFkZXJJbmZvOyBsZXQgc3ViTGluZUluZGV4ID0gaW5kZXg7IHRyYWNrQnk6IHRyYWNrQnlGblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgc2hvd0VsbGlwc2lzVGV4dE9uSG92ZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nU3dpdGNoXT1cImNvbHVtbkRlZi5oZWFkZXJJbmZvW3N1YkxpbmVJbmRleF0udHlwZU9mQm9keURhdGFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidJQ09OJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpICpuZ0lmPVwiIShzdGFycmVkSW5Qcm9ncmVzcyAmJiBST1dfREFUQS5vcmRlcklkID09IHNlbGVjdGVkU3RhcnJlZE9yZGVySWQpXCIgW2NsYXNzXT1cIlJPV19EQVRBLmljb25DbGFzc1wiIChjbGljayk9XCJpY29uQ2xpY2tlZChST1dfREFUQSxST1dfREFUQS5pY29uQ2xhc3MpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZ2JUb29sdGlwPVwie3sgUk9XX0RBVEEuaWNvblRpdGxlVGV4dCB9fVwiIHBsYWNlbWVudD1cImJvdHRvbVwiIGNvbnRhaW5lcj1cImJvZHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvb2x0aXBDbGFzcz1cImd0LWljb24tY29sdW1uLXRvb2x0aXAgcmVtb3ZlLW9uLXNjcm9sbC1jbGFzc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic3RhcnJlZEluUHJvZ3Jlc3MgJiYgUk9XX0RBVEEub3JkZXJJZCA9PSBzZWxlY3RlZFN0YXJyZWRPcmRlcklkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzcGlubmVyLWZvci1idXR0b24tZGlyZWN0aXZlXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidJQ09OX0NFTEwnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGFjdGlvbiBvZiBST1dfREFUQVtjb2x1bW5EZWYuaGVhZGVySW5mb1tzdWJMaW5lSW5kZXhdLmFjdGlvbktleV1cIj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgKm5nSWY9XCJhY3Rpb24uc2hvd0ljb25cIiBbY2xhc3NdPVwiYWN0aW9uLmljb25DbGFzc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vdXNlZW50ZXIpPVwibW91c2VFbnRlck9uU3RyaW5nVGV4dEFjdGlvblR5cGUoUk9XX0RBVEEsIGNvbHVtbkRlZi5oZWFkZXJJbmZvW3N1YkxpbmVJbmRleF0udG9vbHRpcEtleSlcIiBwbGFjZW1lbnQ9XCJib3R0b20gYXV0b1wiIGNvbnRhaW5lcj1cImJvZHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdXRvQ2xvc2VdPVwidHJ1ZVwiIHRvb2x0aXBDbGFzcz1cInRlYW0tdXNlci10b29sdGlwIHJlbW92ZS1vbi1zY3JvbGwtY2xhc3NcIiBbbmdiVG9vbHRpcF09XCJ1c2VyTG9nZ2VkSW5EZXRhaWxzXCIgKGNsaWNrKT1cInRleHRBY3Rpb25DbGlja2VkKFJPV19EQVRBLCBhY3Rpb24uaWQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZVRvb2x0aXBdPVwiIWFjdGlvbi5zaG93VG9vbHRpcFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2k+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJhY3Rpb24uc2hvd09iamVjdEtleVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IFJPV19EQVRBW2NvbHVtbkRlZi5oZWFkZXJJbmZvW3N1YkxpbmVJbmRleF0ub2JqZWN0S2V5XSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ0hUTUxfU1RSSU5HJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIFtpbm5lckhUTUxdPVwiUk9XX0RBVEFbY29sdW1uRGVmLmhlYWRlckluZm9bc3ViTGluZUluZGV4XS5vYmplY3RLZXldXCI+PC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ1NWR19JQ09OJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhbm5hLWNvcmUtYW5uYS1pY29uLWNvbHVtbiBbY29tcG9uZW50TmFtZV09XCJndEdlbmVyYWxDb25maWcuY29tcG9uZW50XCIgW2RhdGFPYmplY3RdPVwiUk9XX0RBVEFcIiBbaWNvblRvU2hvd109XCJST1dfREFUQVtjb2x1bW5EZWYuaGVhZGVySW5mb1tzdWJMaW5lSW5kZXhdLm9iamVjdEtleV0gXCIgKG9uQ29sdW1uSWNvbkNsaWNrZWQpPVwic3ZnSWNvbkNsaWNrZWQoJGV2ZW50KVwiPjwvYW5uYS1jb3JlLWFubmEtaWNvbi1jb2x1bW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ1RFWFRfQUNUSU9OUydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgdGV4dCBvZiBST1dfREFUQVtjb2x1bW5EZWYuaGVhZGVySW5mb1tzdWJMaW5lSW5kZXhdLmFjdGlvbktleV1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwidGV4dC5zaG93VG9vbHRpcFwiIChjbGljayk9XCJ0ZXh0QWN0aW9uQ2xpY2tlZChST1dfREFUQSx0ZXh0LmlkKVwiIFtkaXNhYmxlZF09XCJ0ZXh0LmlzRGlzYWJsZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ7e3RleHQuY2xhc3N9fVwiIChtb3VzZWVudGVyKT1cIm1vdXNlRW50ZXJPblRleHRBY3Rpb25UeXBlKFJPV19EQVRBLCBjb2x1bW5EZWYuaGVhZGVySW5mb1tzdWJMaW5lSW5kZXhdLnRvb2x0aXBLZXkpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ2JUb29sdGlwXT1cInRleHRBY3Rpb25Ub29sdGlwVGVtcGxhdGVcIiBwbGFjZW1lbnQ9XCJib3R0b21cIiBjb250YWluZXI9XCJib2R5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvb2x0aXBDbGFzcz1cImd0LWljb24tY29sdW1uLXRvb2x0aXAgcmVtb3ZlLW9uLXNjcm9sbC1jbGFzc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgdGV4dC5uYW1lfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCIhdGV4dC5zaG93VG9vbHRpcFwiIChjbGljayk9XCJ0ZXh0QWN0aW9uQ2xpY2tlZChST1dfREFUQSx0ZXh0LmlkKVwiIFtkaXNhYmxlZF09XCJ0ZXh0LmlzRGlzYWJsZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ7e3RleHQuY2xhc3N9fVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3t0ZXh0Lm5hbWV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInQ0hFQ0tCT1gnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJST1dfREFUQVtjb2x1bW5EZWYuaGVhZGVySW5mb1tzdWJMaW5lSW5kZXhdLm9iamVjdEtleV1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGlzYWJsZS1jaGVja2JveCc6IFJPV19EQVRBW2NvbHVtbkRlZi5oZWFkZXJJbmZvW3N1YkxpbmVJbmRleF0uaXNEaXNhYmxlZEtleV1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnMgY3VzdG9tLWNvbHVtbi1jaGVja2JveC1jaGVja2VkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0T3JVbnNlbGVjdENoZWNrYm94KFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJPV19EQVRBLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbkRlZi5oZWFkZXJJbmZvW3N1YkxpbmVJbmRleF0ub2JqZWN0S2V5LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGVja19ib3hcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhUk9XX0RBVEFbY29sdW1uRGVmLmhlYWRlckluZm9bc3ViTGluZUluZGV4XS5vYmplY3RLZXldXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtYXRlcmlhbC1pY29ucyBjdXN0b20tY29sdW1uLWNoZWNrYm94LXVuY2hlY2tlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkaXNhYmxlLWNoZWNrYm94JzogUk9XX0RBVEFbY29sdW1uRGVmLmhlYWRlckluZm9bc3ViTGluZUluZGV4XS5pc0Rpc2FibGVkS2V5XVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0T3JVbnNlbGVjdENoZWNrYm94KFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJPV19EQVRBLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbkRlZi5oZWFkZXJJbmZvW3N1YkxpbmVJbmRleF0ub2JqZWN0S2V5LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrX2JveF9vdXRsaW5lX2JsYW5rXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidDTElDS0FCTEVfREFUQSdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IHRleHQgb2YgUk9XX0RBVEFbY29sdW1uRGVmLmhlYWRlckluZm9bc3ViTGluZUluZGV4XS5hY3Rpb25LZXldXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwidGV4dC5jbGFzc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25DbGlja2FibGVEYXRhQ2xpY2tlZChST1dfREFUQSwgdGV4dC5pZClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IHRleHQubmFtZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJzdWJsaW5lLm9iamVjdEtleSA9PSAnZGlzcGxheUJvb2tlZFVuaXRzJyAmJiBndEdlbmVyYWxDb25maWcuY29tcG9uZW50ID09ICdSQVRJTkcnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2xpY2thYmxlLWRhdGFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNwb3REZXRhaWxzRG93bmxvYWRDbGlja2VkKCdEQVRBUk9XJywgUk9XX0RBVEEpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ2Rpc2FibGVkLWNsaWNrYWJsZS1kYXRhJzogZG93bmxvYWRJblByb2dyZXNzIH1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPnt7IFJPV19EQVRBLmRpc3BsYXlCb29rZWRVbml0c319XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1hdGVyaWFsLWljb25zIHNwb3QtZGV0YWlscy1kb3dubG9hZC1pY29uc1wiPmdldF9hcHA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZG93bmxvYWRJblByb2dyZXNzIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiBST1dfREFUQS5pbnZlbnRvcnlDb2RlSWQgPT0gc2VsZWN0ZWRJbnZlbnRvcnlJZEZvckRvd25sb2FkIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiBST1dfREFUQS5kZW1vZ3JhcGhpYyA9PSBzZWxlY3RlZERlbW9ncmFwaGljRm9yRG93bmxvYWQgXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJjaXJjdWxhclByb2dyZXNzQmFyXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ1NUUklOR19fX0lDT05fT1JfVEVYVF9BQ1RJT04nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGFjdGlvbiBvZiBST1dfREFUQVtjb2x1bW5EZWYuaGVhZGVySW5mb1tzdWJMaW5lSW5kZXhdLmFjdGlvbktleV1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBuZ2JUb29sdGlwPVwie3sgYWN0aW9uLmFkZGl0aW9uYWxUZXh0QmVmb3JlTGluayB9fVwiIHBsYWNlbWVudD1cImJvdHRvbVwiIGNvbnRhaW5lcj1cImJvZHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvb2x0aXBDbGFzcz1cImd0LWljb24tY29sdW1uLXRvb2x0aXAgcmVtb3ZlLW9uLXNjcm9sbC1jbGFzc1wiIFtkaXNhYmxlVG9vbHRpcF09XCIhYWN0aW9uLmVuYWJsZVRvb2x0aXBGb3JBZGRpdGlvbmFsVGV4dFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGFjdGlvbi5hZGRpdGlvbmFsVGV4dEJlZm9yZUxpbmsgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYWN0aW9uICYmIGFjdGlvbi50eXBlT2ZEYXRhPT0gJ1NUUklORydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGFjdGlvbi5kYXRhIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgW2lkXT1cImFjdGlvbi5pZFwiICpuZ0lmPVwiYWN0aW9uLnNob3dMaW5rXCIgKGNsaWNrKT1cInRleHRBY3Rpb25DbGlja2VkKFJPV19EQVRBLCBhY3Rpb24uaWQpXCIgW2NsYXNzXT1cImFjdGlvbi5saW5rQ2xhc3NcIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsnZGlzYWJsZWQnOiBhY3Rpb24uZGlzYWJsZWRMaW5rfVwiPnt7YWN0aW9uLmRhdGF9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJhY3Rpb24uc2hvd1Rvb2x0aXBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJhY3Rpb24udG9vbHRpcERhdGEudG9vbHRpcFRhYmxlQm9keSAmJiBhY3Rpb24udG9vbHRpcERhdGEudG9vbHRpcFRhYmxlQm9keS5sZW5ndGhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgKm5nSWY9XCJhY3Rpb24uc2hvd0ljb25cIiBbY2xhc3NdPVwiYWN0aW9uLmljb25DbGFzc1wiIFtuZ0NsYXNzXT1cInsnZGlzYWJsZWQnOiBhY3Rpb24uZGlzYWJsZWRJY29ufVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb3VzZWVudGVyKT1cIm1vdXNlRW50ZXJPblN0cmluZ1RleHRBY3Rpb25UeXBlQ29udGFpbmluZ1RhYmxlKFJPV19EQVRBLCBjb2x1bW5EZWYuaGVhZGVySW5mb1tzdWJMaW5lSW5kZXhdLnRvb2x0aXBLZXkpXCIgcGxhY2VtZW50PVwiYm90dG9tIGF1dG9cIiBjb250YWluZXI9XCJib2R5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F1dG9DbG9zZV09XCJ0cnVlXCIgdG9vbHRpcENsYXNzPVwidG9vbHRpcC1jb250YWluaW5nLXRhYmxlIHJlbW92ZS1vbi1zY3JvbGwtY2xhc3NcIiBbbmdiVG9vbHRpcF09XCJ0b29sdGlwQ29udGFpbmluZ1RhYmxlVGVtcGxhdGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFhY3Rpb24udG9vbHRpcERhdGEudG9vbHRpcFRhYmxlQm9keVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSAqbmdJZj1cImFjdGlvbi5zaG93SWNvblwiIFtjbGFzc109XCJhY3Rpb24uaWNvbkNsYXNzXCIgW25nQ2xhc3NdPVwieydkaXNhYmxlZCc6IGFjdGlvbi5kaXNhYmxlZEljb259XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImljb25DbGlja2VkT25TdHJpbmdJY29uQWN0aW9uVHlwZShST1dfREFUQSwgYWN0aW9uLmlkKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb3VzZWxlYXZlKT1cIm1vdXNlTGVhdmVUZXh0QWN0aW9uVHlwZShST1dfREFUQSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW91c2VlbnRlcik9XCJtb3VzZUVudGVyT25TdHJpbmdUZXh0QWN0aW9uVHlwZShST1dfREFUQSwgY29sdW1uRGVmLmhlYWRlckluZm9bc3ViTGluZUluZGV4XS50b29sdGlwS2V5KVwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcGxhY2VtZW50XT1cImFjdGlvbi50b29sdGlwUGxhY2VtZW50ID8gYWN0aW9uLnRvb2x0aXBQbGFjZW1lbnQgOiAnYm90dG9tIGF1dG8nXCIgY29udGFpbmVyPVwiYm9keVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdXRvQ2xvc2VdPVwidHJ1ZVwiIHRvb2x0aXBDbGFzcz1cInRlYW0tdXNlci10b29sdGlwIHJlbW92ZS1vbi1zY3JvbGwtY2xhc3Mge3sgYWN0aW9uWyd0b29sdGlwQ2xhc3MnXSB9fVwiIFtuZ2JUb29sdGlwXT1cInVzZXJMb2dnZWRJbkRldGFpbHNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhYWN0aW9uLnNob3dUb29sdGlwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSAqbmdJZj1cImFjdGlvbi5zaG93SWNvblwiIFtjbGFzc109XCJhY3Rpb24uaWNvbkNsYXNzXCIgW25nQ2xhc3NdPVwieydkaXNhYmxlZCc6IGFjdGlvbi5kaXNhYmxlZEljb259XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJpY29uQ2xpY2tlZE9uU3RyaW5nSWNvbkFjdGlvblR5cGUoUk9XX0RBVEEsIGFjdGlvbi5pZClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidTVFJJTkdfT1JfSU5QVVQnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIlJPV19EQVRBW2NvbHVtbkRlZi5oZWFkZXJJbmZvW3N1YkxpbmVJbmRleF0ub2JqZWN0S2V5XS50eXBlID09ICdTVFJJTkcnO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaW5wdXRCb3hcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gW2lubmVySHRtbF09XCJST1dfREFUQVtjb2x1bW5EZWYuaGVhZGVySW5mb1tzdWJMaW5lSW5kZXhdLm9iamVjdEtleV0udmFsdWVcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjaW5wdXRCb3g+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJ7e1JPV19EQVRBW2NvbHVtbkRlZi5oZWFkZXJJbmZvW3N1YkxpbmVJbmRleF0ub2JqZWN0S2V5XS5wbGFjZWhvbGRlcn19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvd0VsbGlwc2lzVGV4dE9uSG92ZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwiZWRpdGFibGVJbnB1dFZhbHVlQ2hhbmdlZCgkZXZlbnQsIFJPV19EQVRBKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ01vZGVsXT1cIlJPV19EQVRBW2NvbHVtbkRlZi5oZWFkZXJJbmZvW3N1YkxpbmVJbmRleF0ub2JqZWN0S2V5XS52YWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJST1dfREFUQVtjb2x1bW5EZWYuaGVhZGVySW5mb1tzdWJMaW5lSW5kZXhdLm9iamVjdEtleV0uZGlzYWJsZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7J3JlZC1ib3JkZXInOiAgUk9XX0RBVEFbY29sdW1uRGVmLmhlYWRlckluZm9bc3ViTGluZUluZGV4XS5vYmplY3RLZXldLmhhc0Vycm9yIH1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ0hUTUwnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gW2lubmVySHRtbF09XCJST1dfREFUQVtjb2x1bW5EZWYuaGVhZGVySW5mb1tzdWJMaW5lSW5kZXhdLm9iamVjdEtleV1cIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInUkFESU8nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1yYWRpby1ncm91cFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIlJPV19EQVRBWydSYWRpb0J1dHRvbkNvbmZpZyddXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nTW9kZWxdPVwiUk9XX0RBVEFbc3VibGluZS5vYmplY3RLZXldXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIlJPV19EQVRBWydSYWRpb0J1dHRvbkNvbmZpZyddWzBdLmlzRGlzYWJsZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IHJhZGlvQnV0dG9uIG9mIFJPV19EQVRBWydSYWRpb0J1dHRvbkNvbmZpZyddOyBsZXQgbGFzdCA9IGxhc3RcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LXJhZGlvLWJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPVwie3sgcmFkaW9CdXR0b24udmFsdWUgfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwie3sgcmFkaW9CdXR0b24uY2xhc3MgfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFkaW9CdXR0b25DbGlja2VkKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUk9XX0RBVEEsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByYWRpb0J1dHRvbi52YWx1ZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJPV19EQVRBWydSYWRpb0J1dHRvbkNvbmZpZyddWzBdLmlzRGlzYWJsZWRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPnt7IHJhZGlvQnV0dG9uLmxhYmVsIH19PC9tYXQtcmFkaW8tYnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PGJyICpuZ0lmPVwiIWxhc3RcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1yYWRpby1ncm91cD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoRGVmYXVsdD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic3VibGluZS5vYmplY3RLZXkgIT0gJ2Rlc2NyaXB0aW9uJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57eyBST1dfREFUQVtjb2x1bW5EZWYuaGVhZGVySW5mb1tzdWJMaW5lSW5kZXhdLm9iamVjdEtleV0gfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInN1YmxpbmUub2JqZWN0S2V5ID09ICdpbnZlbnRvcnlDb2RlJyAmJiBST1dfREFUQVsnaXNTZWxsZXJHcm91cCddICYmIGd0R2VuZXJhbENvbmZpZy5jb21wb25lbnQgPT0gJ1JBVElORycgXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWkgbWRpLWluZm8tb3V0bGluZSBzZWxsZXItdG9vbHRpcFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdiVG9vbHRpcF09XCJzZWxsZXJIaWVyYXJjaHlUb29sdGlwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbSBhdXRvXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lcj1cImJvZHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F1dG9DbG9zZV09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyaWdnZXJzPVwibWFudWFsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChoaWRkZW4pPVwiY2xvc2VUb29sdGlwKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI2luZm89XCJuZ2JUb29sdGlwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvb2x0aXBDbGFzcz1cImhpZXJhcmNoeS10b29sdGlwIHJlbW92ZS1vbi1zY3JvbGwtY2xhc3NcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vdXNlZW50ZXIpPVwiYmluZFRoZVZhbHVlVG9TZWxsZXJHcm91cFRvb2x0aXAoUk9XX0RBVEEuc2VsbGVyR3JvdXBIaWVyYXJjaHksIGluZm8pXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaT5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpICpuZ0lmPVwic3VibGluZS5vYmplY3RLZXkgPT0gJ2Rpc3BsYXlCb29rZWRBdmVyYWdlUmF0aW5nJyAmJiBndEdlbmVyYWxDb25maWcuY29tcG9uZW50ID09ICdSQVRJTkcnICYmIFJPV19EQVRBWydzaG93UmF0aW5nQXZlcmFnZUljb24nXSBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtaSBtZGktaW5mby1vdXRsaW5lIHNlbGxlci10b29sdGlwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbSBhdXRvXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lcj1cImJvZHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F1dG9DbG9zZV09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb3VzZWVudGVyKT1cInNldElzRGlmZmVyZW5jZShST1dfREFUQS5pc0RpZmZlcmVuY2VMZXNzVGhhbjI1UGVyY2VudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9vbHRpcENsYXNzPVwicG9zdGVkLWF2Zy10b29sdGlwIHJlbW92ZS1vbi1zY3JvbGwtY2xhc3NcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nYlRvb2x0aXBdPVwicG9zdGVkUmF0aW5nRGlmZmVyZW5jZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSAqbmdJZj1cInN1YmxpbmUub2JqZWN0S2V5ID09ICdkaXNwbGF5Qm9va2VkQXZlcmFnZUltcHJlc3Npb24nICYmIGd0R2VuZXJhbENvbmZpZy5jb21wb25lbnQgPT0gJ1JBVElORycgJiYgUk9XX0RBVEFbJ3Nob3dJbXByZXNzaW9uQXZlcmFnZUljb24nXSBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtaSBtZGktaW5mby1vdXRsaW5lIHNlbGxlci10b29sdGlwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbSBhdXRvXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lcj1cImJvZHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F1dG9DbG9zZV09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb3VzZWVudGVyKT1cInNldElzRGlmZmVyZW5jZShST1dfREFUQS5pc0RpZmZlcmVuY2VMZXNzVGhhbjI1UGVyY2VudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9vbHRpcENsYXNzPVwicG9zdGVkLWF2Zy10b29sdGlwIHJlbW92ZS1vbi1zY3JvbGwtY2xhc3NcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nYlRvb2x0aXBdPVwicG9zdGVkSW1wRGlmZmVyZW5jZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9pPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic3VibGluZS5vYmplY3RLZXkgPT0gJ2Rlc2NyaXB0aW9uJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCAqbmdJZj1cIlJPV19EQVRBLmRlc2NyaXB0aW9uTWVzc2FnZSB8fCBST1dfREFUQS5kZXNjcmlwdGlvbkVtYWlsUmVmZXJlbmNlTnVtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiUk9XX0RBVEEuZGVzY3JpcHRpb25NZXNzYWdlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgUk9XX0RBVEEuZGVzY3JpcHRpb25NZXNzYWdlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJyIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJST1dfREFUQS5kZXNjcmlwdGlvbkVtYWlsUmVmZXJlbmNlTnVtICE9ICctJyAmJiBST1dfREFUQS5kZXNjcmlwdGlvbkVtYWlsUmVmZXJlbmNlTnVtICE9ICcnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1haWwgUmVmOiB7eyBST1dfREFUQS5kZXNjcmlwdGlvbkVtYWlsUmVmZXJlbmNlTnVtIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJyIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaHJlZj1cInt7IFJPV19EQVRBLmRlc2NyaXB0aW9uRGV0YWlsc1VybCB9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQ9XCJfYmxhbmtcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJST1dfREFUQS5kZXNjcmlwdGlvbkRldGFpbHNVcmxUeXBlID09PSAnUERGJyB8fCBST1dfREFUQS5kZXNjcmlwdGlvbkRldGFpbHNVcmxUeXBlID09PSAnRVhDRUwnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biB2aWV3RGV0YWlsc0FuZEVtYWlsQnRuXCI+RG93bmxvYWQ8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiUk9XX0RBVEEuYWN0aXZpdHluYW1lLnRvTG93ZXJDYXNlKCkgPT0gJ29yZGVyIG9uYm9hcmRlZCdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhICpuZ0lmPVwiUk9XX0RBVEEuZGVzY3JpcHRpb25EZXRhaWxzVXJsVHlwZSA9PT0gJ0xJTksnXCIgKGNsaWNrKT1cInZpZXdEZXRhaWxzQ2xpY2tlZChST1dfREFUQSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biB2aWV3RGV0YWlsc0FuZEVtYWlsQnRuIG9yZGVyLW9uYm9hcmRlZFwiPlZpZXcgZGV0YWlsczwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9XCJ7eyBST1dfREFUQS5kZXNjcmlwdGlvbkVtYWlsVXJsIH19XCIgdGFyZ2V0PVwiX2JsYW5rXCIgKm5nSWY9XCJST1dfREFUQS5kZXNjcmlwdGlvbkVtYWlsVXJsICE9ICctJyAmJiBST1dfREFUQS5kZXNjcmlwdGlvbkVtYWlsVXJsICE9ICcnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIHZpZXdEZXRhaWxzQW5kRW1haWxCdG5cIj5WaWV3IGVtYWlsPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIoaXNOb0RhdGFUb0Rpc3BsYXlTdWJqZWN0JCB8IGFzeW5jKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7bnVsbH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPC90YWJsZT5cclxuICAgIDwvZGl2PlxyXG4gICAgPGFubmEtY29yZS1uby1kYXRhLWxpYiBbd2lkdGhdPVwibm9EYXRhV2lkdGhcIiBbbWFyZ2luVG9wXT1cIm1hcmdpblRvcFwiICpuZ0lmPVwiKGlzTm9EYXRhVG9EaXNwbGF5U3ViamVjdCQgfCBhc3luYylcIj4gPC9hbm5hLWNvcmUtbm8tZGF0YS1saWI+XHJcbjwvZGl2PlxyXG5cclxuPCEtLSBDaGVja2JveCB0ZW1wbGF0ZSAtLT5cclxuPG5nLXRlbXBsYXRlICNmaWx0ZXJUb29sdGlwPlxyXG4gICAgXHJcbiAgICA8ZGl2IGNsYXNzPVwicmFkaW8tY29udGFpbmVyXCIgKm5nSWY9XCJzaG93RmlsdGVyVG9vbHRpcFRhYnNcIj5cclxuICAgICAgICA8ZGl2IFtuZ0NsYXNzXT1cInsnZnVsbC13aWR0aCc6IGZpbHRlclRhYk9iamVjdHMubGVuZ3RoID09IDF9XCIgKm5nRm9yPVwibGV0IGRhdGEgb2YgZmlsdGVyVGFiT2JqZWN0c1wiPlxyXG4gICAgICAgICAgICA8cCBjbGFzcz1cImZpbHRlci10YWJcIiBbdGl0bGVdPVwiZGF0YS5sYWJlbFwiIChjbGljayk9XCJwb3B1bGF0ZVRvb2x0aXBEYXRhQmFzZWRPblNlbGVjdGVkUmFkaW8oZGF0YSwgdHJ1ZSlcIiBbbmdDbGFzc109XCJ7J2FjdGl2ZSc6IGFubmFGaWx0ZXJTZXJ2aWNlLnNlbGVjdGVkUmFkaW8gPT0gZGF0YS5rZXl9XCIgKm5nSWY9XCJmaWx0ZXJUYWJPYmplY3RzLmxlbmd0aCA+IDBcIj57eyBkYXRhLmxhYmVsIH19PC9wPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICBcclxuICAgIDxkaXYgY2xhc3M9XCJjaGVja2JveC1zb3J0XCIgKm5nSWY9XCJzaG93U29ydENvbXBvbmVudFwiPlxyXG4gICAgICAgIDxhbm5hLWNvcmUtc29ydC1saWIgIFtuZ0NsYXNzXT1cInsnbm8tYm90dG9tLWJvcmRlcic6ICFzaG93RmlsdGVyQ29tcG9uZW50fVwiXHJcbiAgICAgICAgKHNvcnRPcHRpb25DbGlja2VkKT1cInN0b3JlU29ydFR5cGVJblRlbXBWYXJpYWJsZSgkZXZlbnQpXCIgW3NvcnRPYmplY3RLZXldPVwiYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpb1wiPjwvYW5uYS1jb3JlLXNvcnQtbGliPlxyXG4gICAgPC9kaXY+XHJcbiAgICBcclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzaG93RmlsdGVyQ29tcG9uZW50XCI+XHJcbiAgICAgICAgPHAgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW5cIj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImZpbHRlci10ZXh0LWJ0blwiIFtkaXNhYmxlZF09XCJkaXNhYmxlQ2xlYXJBbGxcIiAoY2xpY2spPVwidW5DaGVja0FsbENoZWNrYm94KClcIj5DbGVhciBhbGw8L2J1dHRvbj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImZpbHRlci10ZXh0LWJ0blwiIFtkaXNhYmxlZF09XCJkaXNhYmxlU2VsZWN0QWxsXCIgKGNsaWNrKT1cInNlbGVjdEFsbENoZWNrYm94KClcIj5TZWxlY3QgYWxsPC9idXR0b24+XHJcbiAgICAgICAgPC9wPlxyXG4gICAgICAgIDxwIGNsYXNzPVwic2VhcmNoLWJveFwiPlxyXG4gICAgICAgICAgICA8aSBjbGFzcz1cIm1pIG1kaS1zZWFyY2ggc2VhcmNoLWljb24gc2VhcmNoLWljb24tcG9zaXRpb25cIj48L2k+XHJcbiAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJTZWFyY2hcIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJzZWFyY2gtaW5wdXRcIlxyXG4gICAgICAgICAgICAgICAgc3R5bGU9XCJtYXJnaW4tbGVmdDogMnB4OyBib3JkZXI6IG5vbmU7IHBhZGRpbmc6IDBweFwiXHJcbiAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInNlYXJjaEl0ZW1cIlxyXG4gICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwic2VhcmNoRm9yVGhlSXRlbSgkZXZlbnQpXCJcclxuICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgPGkgY2xhc3M9XCJtZGkgbWRpLWNsb3NlIHNlYXJjaC1iYXItY2xvc2VcIiBbbmdDbGFzc109XCJ7J2Rpc2FibGUtY2xvc2UtaWNvbic6ICghc2VhcmNoSXRlbSB8fCBzZWFyY2hJdGVtLmxlbmd0aCA9PSAwKSB9XCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cImNsZWFyU2VhcmNoZWRJdGVtKClcIj48L2k+XHJcblxyXG4gICAgICAgIDwvcD5cclxuICAgICAgICA8ZGl2IHN0eWxlPVwicG9zaXRpb246cmVsYXRpdmVcIj5cclxuICAgICAgICAgICAgPCEtLSBUcmFjayBCeSBmdW5jIC0tPlxyXG4gICAgICAgICAgICA8Y2RrLXZpcnR1YWwtc2Nyb2xsLXZpZXdwb3J0IGl0ZW1TaXplPVwiMThcIiBbc3R5bGUuaGVpZ2h0LnB4XT1cImhlaWdodE9mQ2hlY2tib3hUb29sdGlwRmlsdGVyXCIgY2xhc3M9XCJkcm9wZG93bi1kYXRhLWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICAgICAgPHAgKmNka1ZpcnR1YWxGb3I9XCJsZXQgb3B0aW9uIG9mIHRvb2x0aXBPcHRpb25zXCIgY2xhc3M9XCJpbnB1dCBleGFtcGxlLWl0ZW1cIiAoY2xpY2spPVwic2VsZWN0VW5zZWxlY3RDaGVja2JveChvcHRpb24pXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJvcHRpb24uaXNTZWxlY3RlZFwiIHJvbGU9XCJidXR0b25cIiBjbGFzcz1cIm1pIG1kaS1jaGVjay1ib3ggY2hlY2stYm94XCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIW9wdGlvbi5pc1NlbGVjdGVkXCIgcm9sZT1cImJ1dHRvblwiIGNsYXNzPVwibWkgbWRpLWNoZWNrLWJveC1vdXRsaW5lLWJsYW5rIGNoZWNrLWJveCB1bmNoZWNrZWRcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkYXRhXCIgdGl0bGU9XCJ7eyBvcHRpb24udmFsdWUgfX1cIiBbaW5uZXJIVE1MXT1cIm9wdGlvbi5sYWJlbFwiPjwvc3Bhbj5cclxuXHJcblxyXG4gICAgICAgICAgICAgICAgPC9wPlxyXG5cclxuICAgICAgICAgICAgICAgIDxwIGNsYXNzID0gXCJuby1kYXRhLWNhc2VcIiAqbmdJZj1cInRvb2x0aXBPcHRpb25zPy5sZW5ndGggPT0gMFwiIHN0eWxlPVwicGFkZGluZy1sZWZ0OiAuNDM3NXJlbTtcIj5ObyBkYXRhIGZvdW5kPC9wPlxyXG5cclxuXHJcblxyXG4gICAgICAgICAgICA8L2Nkay12aXJ0dWFsLXNjcm9sbC12aWV3cG9ydD5cclxuICAgICAgICAgICAgPGRpdiBzdHlsZT1cInBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOjA7IGxlZnQ6MDsgd2lkdGg6MTAwJTsgaGVpZ2h0OjEwMCU7IHBvaW50ZXItZXZlbnRzOm5vbmVcIj48L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJidXR0b25zLWNvbnRhaW5lciBjaGVja2JveC1maWx0ZXItYnV0dG9ucy1jb250YWluZXJcIj5cclxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnV0dG9uXCIgKGNsaWNrKT1cImNsb3NlQ2hlY2tib3hGaWx0ZXIoKVwiPkNhbmNlbDwvYnV0dG9uPlxyXG4gICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgY2xhc3M9XCJidXR0b25cIlxyXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7IGRpc2FibGVkOiBkaXNhYmxlQ2hlY2tib3hBcHBseSB9XCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cImFwcGx5RmlsdGVycygpXCJcclxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVDaGVja2JveEFwcGx5XCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICAgIEFwcGx5XHJcbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwic2hvd0ZpbHRlckNvbXBvbmVudFwiPnt7IHNlbGVjdGVkQ2hlY2tib3hPcHRpb25zQ291bnQgPT0gdG9vbHRpcE9wdGlvbnMubGVuZ3RoICYmIHRvb2x0aXBPcHRpb25zLmxlbmd0aCAhPSAwICYmICFzZWFyY2hJdGVtPyAnQWxsICgnKyBzZWxlY3RlZENoZWNrYm94T3B0aW9uc0NvdW50ICsgJyknOiAnKCcgKyBzZWxlY3RlZENoZWNrYm94T3B0aW9uc0NvdW50ICsgJyknIH19PC9zcGFuPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48IS0tIFNsaWRlciB0ZW1wbGF0ZSAtLT5cclxuPG5nLXRlbXBsYXRlICNzbGlkZXJUb29sVGlwPlxyXG4gICAgXHJcbiAgICA8ZGl2IGNsYXNzPVwicmFkaW8tY29udGFpbmVyXCIgKm5nSWY9XCJzaG93RmlsdGVyVG9vbHRpcFRhYnNcIj5cclxuICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBkYXRhIG9mIGZpbHRlclRhYk9iamVjdHNcIj5cclxuICAgICAgICAgICAgPHAgY2xhc3M9XCJmaWx0ZXItdGFiXCIgW3RpdGxlXT1cImRhdGEubGFiZWxcIiAoY2xpY2spPVwicG9wdWxhdGVUb29sdGlwRGF0YUJhc2VkT25TZWxlY3RlZFJhZGlvKGRhdGEsIHRydWUpXCIgW25nQ2xhc3NdPVwieydhY3RpdmUnOiBhbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvID09IGRhdGEua2V5fVwiICpuZ0lmPVwiZmlsdGVyVGFiT2JqZWN0cy5sZW5ndGggPiAwXCI+e3sgZGF0YS5sYWJlbCB9fTwvcD4gICBcclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPCEtLSA8YnV0dG9uIGNsYXNzPVwiY29sdW1uLWNsZWFyLWFsbCBhbGlnbi1jZW50ZXJcIiBbZGlzYWJsZWRdPVwiZGlzYWJsZUNvbHVtbkNsZWFyQWxsQnRuXCIgKGNsaWNrKT1cImNsZWFyQ29sdW1uRmlsdGVyKClcIj5cclxuICAgICAgICBDbGVhciBmaWx0ZXJcclxuICAgIDwvYnV0dG9uPiAtLT5cclxuICAgICAgICBcclxuICAgIDxhbm5hLWNvcmUtc29ydC1saWIgKm5nSWY9XCJzaG93U29ydENvbXBvbmVudFwiIFtuZ0NsYXNzXT1cInsnbm8tYm90dG9tLWJvcmRlcic6ICFzaG93RmlsdGVyQ29tcG9uZW50fVwiXHJcbiAgICAoc29ydE9wdGlvbkNsaWNrZWQpPVwic3RvcmVTb3J0VHlwZUluVGVtcFZhcmlhYmxlKCRldmVudClcIiBbc29ydE9iamVjdEtleV09XCJhbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvXCI+PC9hbm5hLWNvcmUtc29ydC1saWI+XHJcbiAgICBcclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzaG93RmlsdGVyQ29tcG9uZW50XCI+XHJcbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNvbHVtbi1jbGVhci1hbGxcIiBbZGlzYWJsZWRdPVwiZGlzYWJsZUNvbHVtbkNsZWFyQWxsQnRuXCIgKGNsaWNrKT1cImNsZWFyQ29sdW1uRmlsdGVyKClcIj5DbGVhciBmaWx0ZXI8L2J1dHRvbj5cclxuICAgICAgICA8c2VjdGlvbiBjbGFzcz1cIm1pbi1tYXhDb250YWluZXJcIj5cclxuICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgICB0eXBlPVwibnVtYmVyXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwic2xpZGVyLXRleHRcIlxyXG4gICAgICAgICAgICAgICAgc3RlcD1cInt7IHNsaWRlckZpbHRlclRleHRCb3hTdGVwIH19XCJcclxuICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwic2xpZGVyTWluVmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwibWluVmFsdWVDaGFuZ2VkKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieydyZWQtYm9yZGVyJzogc2hvd1NsaWRlck1pblZhbHVlRXJyb3J9XCJcclxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiTWluXCJcclxuICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgPHNwYW4+VG88L3NwYW4+XHJcbiAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgICAgdHlwZT1cIm51bWJlclwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInNsaWRlci10ZXh0XCJcclxuICAgICAgICAgICAgICAgIHN0ZXA9XCJ7eyBzbGlkZXJGaWx0ZXJUZXh0Qm94U3RlcCB9fVwiXHJcbiAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInNsaWRlck1heFZhbHVlXCJcclxuICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm1heFZhbHVlQ2hhbmdlZCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsncmVkLWJvcmRlcic6IHNob3dTbGlkZXJNYXhWYWx1ZUVycm9yfVwiXHJcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIk1heFwiXHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgPC9zZWN0aW9uPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzaWRlYmFyLXNsaWRlclwiPlxyXG4gICAgICAgICAgICA8bmd4LXNsaWRlclxyXG4gICAgICAgICAgICAgICAgKm5nSWY9XCIhc2hvd0VtcHR5U3BhY2VGb3JTbGlkZXJcIlxyXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieydzaG93LW1pbic6IHNsaWRlck1pblZhbHVlICE9IG9wdGlvbnMuZmxvb3IsICdzaG93LW1heCc6IHNsaWRlck1heFZhbHVlICE9IG9wdGlvbnMuY2VpbH1cIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJmaWx0ZXItc2xpZGVyXCJcclxuICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJzbGlkZXJFbnRlcmVkTWluVmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgW2hpZ2hWYWx1ZV09XCJzbGlkZXJFbnRlcmVkTWF4VmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgW29wdGlvbnNdPVwib3B0aW9uc1wiXHJcbiAgICAgICAgICAgID48L25neC1zbGlkZXI+XHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJzaG93RW1wdHlTcGFjZUZvclNsaWRlclwiIGNsYXNzPVwic2xpZGVyLXBsYWNlaG9sZGVyXCI+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgICBcclxuICAgIDxkaXYgY2xhc3M9XCJidXR0b25zLWNvbnRhaW5lclwiPlxyXG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJidXR0b25cIiAoY2xpY2spPVwiY2FuY2VsU2xpZGVyRmlsdGVyKClcIj5DYW5jZWw8L2J1dHRvbj5cclxuICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgIGNsYXNzPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgW25nQ2xhc3NdPVwieyBkaXNhYmxlZDogZGlzYWJsZVNsaWRlckFwcGx5QnV0dG9uIH1cIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwiYXBwbHlTbGlkZXJGaWx0ZXIoKVwiXHJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlU2xpZGVyQXBwbHlCdXR0b25cIlxyXG4gICAgICAgID5cclxuICAgICAgICAgICAgQXBwbHlcclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPCEtLSBEYXRlIFBpY2tlciBUZW1wbGF0ZSAtLT5cclxuPG5nLXRlbXBsYXRlICNkYXRlUGlja2VyVG9vbHRpcD5cclxuICAgIDxkaXYgY2xhc3M9XCJyYWRpby1jb250YWluZXJcIiAqbmdJZj1cInNob3dGaWx0ZXJUb29sdGlwVGFic1wiPlxyXG4gICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGRhdGEgb2YgZmlsdGVyVGFiT2JqZWN0c1wiPlxyXG4gICAgICAgICAgICA8cCBjbGFzcz1cImZpbHRlci10YWJcIiBbdGl0bGVdPVwiZGF0YS5sYWJlbFwiIChjbGljayk9XCJwb3B1bGF0ZVRvb2x0aXBEYXRhQmFzZWRPblNlbGVjdGVkUmFkaW8oZGF0YSwgdHJ1ZSlcIiBbbmdDbGFzc109XCJ7J2FjdGl2ZSc6IGFubmFGaWx0ZXJTZXJ2aWNlLnNlbGVjdGVkUmFkaW8gPT0gZGF0YS5rZXl9XCIgKm5nSWY9XCJmaWx0ZXJUYWJPYmplY3RzLmxlbmd0aCA+IDBcIj57eyBkYXRhLmxhYmVsIH19PC9wPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGFubmEtY29yZS1zb3J0LWxpYiAqbmdJZj1cInNob3dTb3J0Q29tcG9uZW50XCIgW25nQ2xhc3NdPVwieyduby1ib3R0b20tYm9yZGVyJzogIXNob3dGaWx0ZXJDb21wb25lbnR9XCJcclxuICAgIChzb3J0T3B0aW9uQ2xpY2tlZCk9XCJzdG9yZVNvcnRUeXBlSW5UZW1wVmFyaWFibGUoJGV2ZW50KVwiIFtzb3J0T2JqZWN0S2V5XT1cImFubmFGaWx0ZXJTZXJ2aWNlLnNlbGVjdGVkUmFkaW9cIj48L2FubmEtY29yZS1zb3J0LWxpYj5cclxuICAgIFxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNob3dGaWx0ZXJDb21wb25lbnRcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZGF0ZXBpY2tlci1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNvbHVtbi1jbGVhci1hbGxcIiBbZGlzYWJsZWRdPVwiZGlzYWJsZUNvbHVtbkNsZWFyQWxsQnRuXCIgKGNsaWNrKT1cImNsZWFyQ29sdW1uRmlsdGVyKClcIj5cclxuICAgICAgICAgICAgICAgIENsZWFyIGZpbHRlclxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPGFubmEtY29yZS1jYWxlbmRhci1maWx0ZXItbGliXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImZpbHRlci1jYWxlbmRhclwiXHJcbiAgICAgICAgICAgICAgICBbbWluRGF0ZV09XCJjYWxlbmRhck1pbkVuYWJsZWREYXRlXCJcclxuICAgICAgICAgICAgICAgIFttYXhEYXRlXT1cImNhbGVuZGFyTWF4RW5hYmxlZERhdGVcIlxyXG4gICAgICAgICAgICAgICAgW3NlbGVjdGVkRnJvbURhdGVdPVwic2VsZWN0ZWRNaW5EYXRlXCJcclxuICAgICAgICAgICAgICAgIFtzZWxlY3RlZFRvRGF0ZV09XCJzZWxlY3RlZE1heERhdGVcIlxyXG4gICAgICAgICAgICAgICAgKHNlbGVjdGVkRGF0ZSkgPSBcImNhbGVuZGFyRGF0ZUNoYW5nZWQoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICBbbGFiZWxdPVwic2VsZWN0ZWRMYWJlbFwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgPC9hbm5hLWNvcmUtY2FsZW5kYXItZmlsdGVyLWxpYj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJidXR0b25zLWNvbnRhaW5lclwiPlxyXG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJidXR0b25cIiAoY2xpY2spPVwiY2FuY2VsSW5EYXRlRmlsdGVyKClcIj5DYW5jZWw8L2J1dHRvbj5cclxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnV0dG9uXCIgKGNsaWNrKT1cImFwcGx5RGF0ZUZpbHRlcigpXCIgW25nQ2xhc3NdPVwieyBkaXNhYmxlZDogZGlzYWJsZUNhbGVuZGFyQXBwbHlCdG4gfVwiXHJcbiAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVDYWxlbmRhckFwcGx5QnRuXCI+QXBwbHk8L2J1dHRvbj5cclxuICAgIDwvZGl2PlxyXG4gICAgXHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48IS0tIFdlZWsgUGlja2VyIFRlbXBsYXRlIC0tPlxyXG48bmctdGVtcGxhdGUgI3dlZWtQaWNrZXJUb29sVGlwPlxyXG4gICAgPGRpdiBjbGFzcz1cIndlZWtwaWNrZXItY29udGFpbmVyXCI+XHJcbiAgICAgICAgPGFubmEtY29yZS13ZWVrLWNhbGVuZGFyLWZpbHRlci1saWJcclxuICAgICAgICAgICAgW3dlZWstY2FsZW5kYXItY29uZmlnXT1cImd0R2VuZXJhbENvbmZpZy5tdWx0aVdlZWtQaWNrZXJDb25maWdcIlxyXG4gICAgICAgICAgICAoYXBwbHkpPVwiYXBwbHlXZWVrRmlsdGVyKCRldmVudClcIlxyXG4gICAgICAgICAgICBbZnJvbS1kYXRlXT1cImNhbGVuZGFyTWluRW5hYmxlZERhdGVcIlxyXG4gICAgICAgICAgICBbdG8tZGF0ZV09XCJjYWxlbmRhck1heEVuYWJsZWREYXRlXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgPC9hbm5hLWNvcmUtd2Vlay1jYWxlbmRhci1maWx0ZXItbGliPlxyXG4gICAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48IS0tIFRpbWUgRmlsdGVyIFRlbXBsYXRlIC0tPlxyXG48bmctdGVtcGxhdGUgI3RpbWVGaWx0ZXJUb29sVGlwPlxyXG4gICAgXHJcbiAgICA8ZGl2IGNsYXNzPVwicmFkaW8tY29udGFpbmVyXCIgKm5nSWY9XCJzaG93RmlsdGVyVG9vbHRpcFRhYnNcIj5cclxuICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBkYXRhIG9mIGZpbHRlclRhYk9iamVjdHNcIj5cclxuICAgICAgICAgICAgPHAgY2xhc3M9XCJmaWx0ZXItdGFiXCIgW3RpdGxlXT1cImRhdGEubGFiZWxcIiAoY2xpY2spPVwicG9wdWxhdGVUb29sdGlwRGF0YUJhc2VkT25TZWxlY3RlZFJhZGlvKGRhdGEsIHRydWUpXCIgW25nQ2xhc3NdPVwieydhY3RpdmUnOiBhbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvID09IGRhdGEua2V5fVwiICpuZ0lmPVwiZmlsdGVyVGFiT2JqZWN0cy5sZW5ndGggPiAwXCI+e3sgZGF0YS5sYWJlbCB9fTwvcD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxhbm5hLWNvcmUtc29ydC1saWIgKm5nSWY9XCJzaG93U29ydENvbXBvbmVudFwiIFtuZ0NsYXNzXT1cInsnbm8tYm90dG9tLWJvcmRlcic6ICFzaG93RmlsdGVyQ29tcG9uZW50fVwiXHJcbiAgICAoc29ydE9wdGlvbkNsaWNrZWQpPVwic3RvcmVTb3J0VHlwZUluVGVtcFZhcmlhYmxlKCRldmVudClcIiBbc29ydE9iamVjdEtleV09XCJhbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvXCI+PC9hbm5hLWNvcmUtc29ydC1saWI+XHJcbiAgICBcclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzaG93RmlsdGVyQ29tcG9uZW50XCI+XHJcbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNvbHVtbi1jbGVhci1hbGxcIiBbZGlzYWJsZWRdPVwiZGlzYWJsZUNvbHVtbkNsZWFyQWxsQnRuXCIgKGNsaWNrKT1cImNsZWFyQ29sdW1uRmlsdGVyKClcIj5DbGVhciBmaWx0ZXI8L2J1dHRvbj5cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzPVwidGltZS1maWx0ZXItY2hlY2tib3hlc1wiXHJcbiAgICAgICAgICAgICpuZ0lmPVwiZ3RHZW5lcmFsQ29uZmlnLmNvbXBvbmVudCA9PSAnU1BPVERFVEFJTFMnIHx8IGd0R2VuZXJhbENvbmZpZy5jb21wb25lbnQgPT0gJ0VYQ0xVREVJTlZFTlRPUllQT1BVUCcgfHwgZ3RHZW5lcmFsQ29uZmlnLmNvbXBvbmVudCA9PSAnUkFUSU5HJ1wiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgICA8IS0tIE11bHRpIHRpbWUgb3B0aW9uIGNoZWNrYm94IC0tPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiIHN0eWxlPVwicGFkZGluZzogMC41cmVtIDAgMC41cmVtIDAuNXJlbVwiICpuZ0lmPVwic2hvd011bHRpVGltZUNoZWNrYm94XCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwibXVsdGlUaW1lQ2hlY2tib3hDaGVja2VkXCJcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1hdGVyaWFsLWljb25zIGN1c3RvbS1jb2x1bW4tY2hlY2tib3gtY2hlY2tlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdE9yVW5zZWxlY3RNdWx0aVRpbWVDaGVja2JveCgpXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICBjaGVja19ib3hcclxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhbXVsdGlUaW1lQ2hlY2tib3hDaGVja2VkXCJcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1hdGVyaWFsLWljb25zIGN1c3RvbS1jb2x1bW4tY2hlY2tib3gtdW5jaGVja2VkXCJcclxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0T3JVbnNlbGVjdE11bHRpVGltZUNoZWNrYm94KClcIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgIGNoZWNrX2JveF9vdXRsaW5lX2JsYW5rXHJcbiAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8cCBzdHlsZT1cIm1hcmdpbi1sZWZ0OiAycHhcIj5JbmNsdWRlIE11bHRpPC9wPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPCEtLSBaZXJvIHRpbWUgb3B0aW9uIGNoZWNrYm94IC0tPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiIHN0eWxlPVwicGFkZGluZzogMC41cmVtIDAgMC41cmVtIDAuNXJlbVwiICpuZ0lmPVwic2hvd1plcm9UaW1lQ2hlY2tib3hcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJ6ZXJvVGltZUNoZWNrYm94Q2hlY2tlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtYXRlcmlhbC1pY29ucyBjdXN0b20tY29sdW1uLWNoZWNrYm94LWNoZWNrZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RPclVuc2VsZWN0WmVyb1RpbWVDaGVja2JveCgpXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICBjaGVja19ib3hcclxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhemVyb1RpbWVDaGVja2JveENoZWNrZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnMgY3VzdG9tLWNvbHVtbi1jaGVja2JveC11bmNoZWNrZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RPclVuc2VsZWN0WmVyb1RpbWVDaGVja2JveCgpXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICBjaGVja19ib3hfb3V0bGluZV9ibGFua1xyXG4gICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPHAgc3R5bGU9XCJtYXJnaW4tbGVmdDogMnB4XCI+SW5jbHVkZSBaZXJvPC9wPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPCEtLSBFbnRlciB0aW1lIHJhbmdlIG9wdGlvbiBjaGVja2JveCAtLT5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIiBzdHlsZT1cInBhZGRpbmc6IDAuNXJlbSAwIDAuNXJlbSAwLjVyZW1cIiAqbmdJZj1cInNob3dFbnRlclRpbWVDaGVja2JveFwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImVudGVyVGltZUNoZWNrYm94Q2hlY2tlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtYXRlcmlhbC1pY29ucyBjdXN0b20tY29sdW1uLWNoZWNrYm94LWNoZWNrZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RPclVuc2VsZWN0RW50ZXJUaW1lQ2hlY2tib3goKVwiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgY2hlY2tfYm94XHJcbiAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIWVudGVyVGltZUNoZWNrYm94Q2hlY2tlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtYXRlcmlhbC1pY29ucyBjdXN0b20tY29sdW1uLWNoZWNrYm94LXVuY2hlY2tlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdE9yVW5zZWxlY3RFbnRlclRpbWVDaGVja2JveCgpXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICBjaGVja19ib3hfb3V0bGluZV9ibGFua1xyXG4gICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPHAgc3R5bGU9XCJtYXJnaW4tbGVmdDogMnB4XCI+RW50ZXIgdGltZSByYW5nZTwvcD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInRpbWUtbGFiZWwtY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgIDxsYWJlbD5Gcm9tPC9sYWJlbD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwidGltZS1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiZm9ybS1jb250cm9sIG51bWJlcklucHV0XCIgW25nQ2xhc3NdPVwieydlcnJvci1ib3JkZXInOiBzdGFydFRpbWVIb3VyRXJyfVwiIFsobmdNb2RlbCldPVwic2VsZWN0ZWRGcm9tVGltZVswXVwiIHR5cGU9XCJ0ZXh0XCIgcGF0dGVybj1cIlsxLTEyXSpcIiAobmdNb2RlbENoYW5nZSk9XCJzdGFydFRpbWVIb3VyQ2hhbmdlKCRldmVudClcIiAvPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXJyb3ctY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cIm1kaSBtZGktbWVudS11cCB1cHdhcmRcIiAoY2xpY2spPVwiY2hhbmdlU3RhcnRUaW1lSG91cih0cnVlKVwiPjwvaT5cclxuICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwibWRpIG1kaS1tZW51LWRvd24gZG93bndhcmRcIiAoY2xpY2spPVwiY2hhbmdlU3RhcnRUaW1lSG91cihmYWxzZSlcIj48L2k+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRvdFwiPjo8L3NwYW4+XHJcbiAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImZvcm0tY29udHJvbCBudW1iZXJJbnB1dFwiIFtuZ0NsYXNzXT1cInsnZXJyb3ItYm9yZGVyJzogc3RhcnRUaW1lTWluRXJyfVwiIFsobmdNb2RlbCldPVwic2VsZWN0ZWRGcm9tVGltZVsxXVwiIHR5cGU9XCJ0ZXh0XCIgcGF0dGVybj1cIlswLTU5XSpcIiAobmdNb2RlbENoYW5nZSk9XCJzdGFydFRpbWVNaW5DaGFuZ2UoJGV2ZW50KVwiLz5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFycm93LWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJtZGkgbWRpLW1lbnUtdXAgdXB3YXJkXCIgKGNsaWNrKT1cImNoYW5nZVN0YXJ0VGltZU1pbnV0ZSh0cnVlKVwiPjwvaT5cclxuICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwibWRpIG1kaS1tZW51LWRvd24gZG93bndhcmRcIiBzdHlsZT1cInBvc2l0aW9uOiByZWxhdGl2ZTtsZWZ0OiAuMjVweDtcIiAoY2xpY2spPVwiY2hhbmdlU3RhcnRUaW1lTWludXRlKGZhbHNlKVwiPjwvaT5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICA8bWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXAgWyhuZ01vZGVsKV09XCJzZWxlY3RlZEZyb21UaW1lWzJdXCIgKG5nTW9kZWxDaGFuZ2UpPVwiZGlzYWJsZVRpbWVGaWx0ZXJBcHBseUJ1dHRvbigpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG1hdC1idXR0b24tdG9nZ2xlIHZhbHVlPVwiQU1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+QU08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9tYXQtYnV0dG9uLXRvZ2dsZT5cclxuICAgICAgICAgICAgICAgICAgICA8bWF0LWJ1dHRvbi10b2dnbGUgdmFsdWU9XCJQTVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5QTTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L21hdC1idXR0b24tdG9nZ2xlPlxyXG4gICAgICAgICAgICAgICAgPC9tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0aW1lLWxhYmVsLWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICA8bGFiZWw+VG88L2xhYmVsPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0aW1lLWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJmb3JtLWNvbnRyb2wgbnVtYmVySW5wdXRcIiBbKG5nTW9kZWwpXT1cInNlbGVjdGVkVG9UaW1lWzBdXCIgW25nQ2xhc3NdPVwieydlcnJvci1ib3JkZXInOiBlbmRUaW1lSG91ckVycn1cIiAobmdNb2RlbENoYW5nZSk9XCJlbmRUaW1lSG91ckNoYW5nZSgkZXZlbnQpXCIgdHlwZT1cInRleHRcInBhdHRlcm49XCJbMS0xMl0qXCIgLz5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFycm93LWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJtZGkgbWRpLW1lbnUtdXAgdXB3YXJkXCIgKGNsaWNrKT1cImNoYW5nZUVuZFRpbWVIb3VyKHRydWUpXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJtZGkgbWRpLW1lbnUtZG93biBkb3dud2FyZFwiIChjbGljayk9XCJjaGFuZ2VFbmRUaW1lSG91cihmYWxzZSlcIj48L2k+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRvdFwiPjo8L3NwYW4+XHJcbiAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImZvcm0tY29udHJvbCBudW1iZXJJbnB1dFwiIFtuZ0NsYXNzXT1cInsnZXJyb3ItYm9yZGVyJzogZW5kVGltZU1pbkVycn1cIiBbKG5nTW9kZWwpXT1cInNlbGVjdGVkVG9UaW1lWzFdXCIgKG5nTW9kZWxDaGFuZ2UpPVwiZW5kVGltZU1pbkNoYW5nZSgkZXZlbnQpXCIgdHlwZT1cInRleHRcInBhdHRlcm49XCJbMC01OV0qXCIgLz5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFycm93LWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJtZGkgbWRpLW1lbnUtdXAgdXB3YXJkXCIgKGNsaWNrKT1cImNoYW5nZUVuZFRpbWVNaW51dGUodHJ1ZSlcIj48L2k+XHJcbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cIm1kaSBtZGktbWVudS1kb3duIGRvd253YXJkXCIgc3R5bGU9XCJwb3NpdGlvbjogcmVsYXRpdmU7bGVmdDogLjI1cHg7XCIgKGNsaWNrKT1cImNoYW5nZUVuZFRpbWVNaW51dGUoZmFsc2UpXCI+PC9pPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgIDxtYXQtYnV0dG9uLXRvZ2dsZS1ncm91cCBbKG5nTW9kZWwpXT1cInNlbGVjdGVkVG9UaW1lWzJdXCIgKG5nTW9kZWxDaGFuZ2UpPVwiZGlzYWJsZVRpbWVGaWx0ZXJBcHBseUJ1dHRvbigpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG1hdC1idXR0b24tdG9nZ2xlIHZhbHVlPVwiQU1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+QU08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9tYXQtYnV0dG9uLXRvZ2dsZT5cclxuICAgICAgICAgICAgICAgICAgICA8bWF0LWJ1dHRvbi10b2dnbGUgdmFsdWU9XCJQTVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5QTTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L21hdC1idXR0b24tdG9nZ2xlPlxyXG4gICAgICAgICAgICAgICAgPC9tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwiYnV0dG9ucy1jb250YWluZXJcIj5cclxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnV0dG9uXCIgKGNsaWNrKT1cImNsb3NlVGltZUZpbHRlcigpXCI+Q2FuY2VsPC9idXR0b24+XHJcbiAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICBjbGFzcz1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgZGlzYWJsZWQ6IGRpc2FibGVUaW1lRmlsdGVyQXBwbHlCdG4gfVwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJhcHBseVRpbWVGaWx0ZXJzKClcIlxyXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZVRpbWVGaWx0ZXJBcHBseUJ0blwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgICBBcHBseVxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI2NvbHVtbkluZm9Ub29sdGlwPlxyXG4gIDxwIHN0eWxlPVwiY29sb3I6IGJsYWNrO3doaXRlLXNwYWNlOiBub3dyYXA7XCI+VGhpcyBwcmVlbXB0aW9uIGlzIHJlamVjdGVkIGFuZCBub3QgbWFya2VkIGZvciBjcmVkaXQuPC9wPlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNyYXRpbmdJbmZvVG9vbHRpcD5cclxuICAgIDxwIGNsYXNzPVwiZmlyc3Qtcm93XCI+U2hvd3MgJ0Jvb2tlZCBSYXRpbmcnIGZvciBQcmVlbXB0aW9ucyAmIE1ha2VHb29kIE9mZmVyZWQgc3BvdChzKS48L3A+XHJcbiAgICA8cCBjbGFzcz1cInNlY29uZC1yb3dcIj5TaG93cyAnUHJvamVjdGVkIFJhdGluZycgZm9yIEFEVSBPZmZlcmVkIHNwb3QocykuPC9wPlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNpbXBzSW5mb1Rvb2x0aXA+XHJcbiAgICA8cCBjbGFzcyA9XCJmaXJzdC1yb3dcIiA+U2hvd3MgJ0Jvb2tlZCBJTVBTJyBmb3IgUHJlZW1wdGlvbnMgJiBNYWtlR29vZCBPZmZlcmVkIHNwb3QocykuPC9wPlxyXG4gICAgPHAgY2xhc3M9XCJzZWNvbmQtcm93XCIgPlNob3dzICdQcm9qZWN0ZWQgSU1QUycgZm9yIEFEVSBPZmZlcmVkIHNwb3QocykuPC9wPlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNzcG90c0NvbHVtbkVxdWl2YWxpemF0aW9uTWVzc2FnZVRvb2x0aXA+XHJcbiAgICA8cCBjbGFzcz1cInNwb3QtY29sdW1uLXRvb2x0aXAtbWVzc2FnZVwiID5UaGlzIGNvbnNpc3RzIG9mIGVxdWl2YWxpemVkIHNwb3RzIGFuZCB1bi1lcXVpdmFsaXplZCBQYWlkIFByb2dyYW1zICYgdW4tZXF1aXZhbGl6ZWQgTm9uLXNwb3RzLjwvcD5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjcmF0ZUluZm9Ub29sdGlwPlxyXG4gICAgPHAgY2xhc3MgPVwiZmlyc3Qtcm93XCIgPlNob3dzICdCb29rZWQgUmF0ZScgZm9yIFByZWVtcHRpb25zICYgTWFrZUdvb2QgT2ZmZXJlZCBzcG90KHMpLjwvcD5cclxuICAgIDxwIGNsYXNzPVwic2Vjb25kLXJvd1wiID5TaG93cyAnUHJvamVjdGVkICQgVmFsdWUnIGZvciBBRFUgT2ZmZXJlZCBzcG90KHMpLjwvcD5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjc2VsbGVySGllcmFyY2h5VG9vbHRpcD5cclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzZWxsZXJHcm91cEhpZXJhcmNoeS5sZW5ndGggPiAwXCI+XHJcbiAgICAgICAgPHNlY3Rpb24gY2xhc3MgPSBcImhpZXJhcmNoeS10YWJsZS1jb250YWluZXJcIj5cclxuICAgICAgICA8dGFibGUgY2xhc3M9XCJzZWxsZXItaGllcmFyY2h5LXRhYmxlXCI+XHJcbiAgICAgICAgICAgIDx0aGVhZD5cclxuICAgICAgICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICAgICAgICA8dGg+IzwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRoPkludmVudG9yeSBDb2RlczwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRoPlByb2dyYW0vRGVzY3JpcHRpb248L3RoPlxyXG4gICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgPC90aGVhZD5cclxuICAgICAgICAgICAgPHRib2R5PlxyXG4gICAgICAgICAgICAgICAgPHRyICpuZ0Zvcj1cImxldCBkYXRhIG9mIHNlbGxlckdyb3VwSGllcmFyY2h5OyBsZXQgdG9vbHRpcEluZGV4ID0gaW5kZXhcIj5cclxuICAgICAgICAgICAgICAgICAgICA8dGQ+e3sgdG9vbHRpcEluZGV4ICsgMSB9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBzaG93RWxsaXBzaXNUZXh0T25Ib3Zlcj57eyBkYXRhLkludmVudG9yeUNvZGUgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIHNob3dFbGxpcHNpc1RleHRPbkhvdmVyPnt7IGRhdGEuUHJvZ3JhbSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgPC90Ym9keT5cclxuICAgICAgICA8L3RhYmxlPlxyXG4gICAgPC9zZWN0aW9uPlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2VsbGVyR3JvdXBIaWVyYXJjaHkubGVuZ3RoID09IDBcIj5cclxuICAgICAgICA8c3BhbiBzdHlsZT1cImNvbG9yOiAjMDAwXCI+U2VsbGVyIGdyb3VwIG5vdCBhdmFpbGFibGUgZm9yIHRoaXMgaW52ZW50b3J5IGNvZGU8L3NwYW4+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjbHVyVmlvbGF0aW9uSW5mb1Rvb2x0aXA+XHJcbiAgICA8cCBjbGFzcyA9XCJmaXJzdC1yb3dcIiA+VGhlIHZhbHVlcyBhcmUgZm9yIHRoZSBlbnRpcmUgd2Vlay48L3A+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI3Bvc3RlZFJhdGluZ0RpZmZlcmVuY2U+XHJcbiAgICA8cCBjbGFzcz1cImRpZmZlcmVuY2UtdGV4dFwiPlRoZSBkaWZmZXJlbmNlIGJldHdlZW4gcG9zdGVkIGFuZCBib29rZWQgYXZlcmFnZSByYXRpbmcgaXMge3tpc0RpZmZlcmVuY2VMZXNzVGhhbjI1UGVyY2VudCA/ICdsZXNzJyA6ICdtb3JlJ319IHRoYW4gMjUlLjwvcD5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjcG9zdGVkSW1wRGlmZmVyZW5jZT5cclxuICAgIDxwIGNsYXNzPVwiZGlmZmVyZW5jZS10ZXh0XCI+VGhlIGRpZmZlcmVuY2UgYmV0d2VlbiBwb3N0ZWQgYW5kIGJvb2tlZCBhdmVyYWdlIGltcHJlc3Npb24gaXMge3tpc0RpZmZlcmVuY2VMZXNzVGhhbjI1UGVyY2VudCA/ICdsZXNzJyA6ICdtb3JlJ319IHRoYW4gMjUlLjwvcD5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjb25nb2luZ1JldkJvb2tlZENvbHVtblRvb2x0aXA+XHJcbiAgICA8cD5UaGUgQm9va2VkICQgdmFsdWUsIFNwb3RzLCBHUlAsIENQUCwgSU1QUywgQ1BNIGNvcnJlc3BvbmRzIG9uIHRoZSBsYXN0IHBlcm1hbmVudCByZXZpc2lvbiBnZW5lcmF0ZWQ8L3A+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI2NvbXBsZXRlZFJldkJvb2tlZENvbHVtblRvb2x0aXA+XHJcbiAgICA8cD5UaGUgQm9va2VkICQgdmFsdWUgY29ycmVzcG9uZHMgb24gdGhlIGxhc3QgcGVybWFuZW50IHJldmlzaW9uIGdlbmVyYXRlZDwvcD5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjYXZnQm9va2VkUmF0ZT5cclxuICAgIDxwPlRoaXMgaXMgdGhlIGJvb2tlZCBhdmVyYWdlIFJhdGU8L3A+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI2F2Z0Jvb2tlZFJ0Zz5cclxuICAgIDxwPlRoaXMgaXMgdGhlIGJvb2tlZCBhdmVyYWdlIFJURzwvcD5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjYXZnQm9va2VkSW1wcz5cclxuICAgIDxwPlRoaXMgaXMgdGhlIGJvb2tlZCBhdmVyYWdlIElNUCjigJkwMDApPC9wPlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNjaXJjdWxhclByb2dyZXNzQmFyPlxyXG4gICAgPGNpcmNsZS1wcm9ncmVzc1xyXG4gICAgICAgIFtwZXJjZW50XT1cInBlcmNlbnREb25lXCJcclxuICAgICAgICBbcmFkaXVzXT1cIjVcIlxyXG4gICAgICAgIFtzaG93VGl0bGVdPVwiZmFsc2VcIlxyXG4gICAgICAgIFtzaG93VW5pdHNdPVwiZmFsc2VcIlxyXG4gICAgICAgIFtzaG93U3VidGl0bGVdPVwiZmFsc2VcIlxyXG4gICAgICAgIFtvdXRlclN0cm9rZVdpZHRoXT1cIjNcIlxyXG4gICAgICAgIFtpbm5lclN0cm9rZVdpZHRoXT1cIjNcIlxyXG4gICAgICAgIFtzcGFjZV09XCItM1wiXHJcbiAgICAgICAgW291dGVyU3Ryb2tlQ29sb3JdPVwiJyMyNjhiZmYnXCJcclxuICAgICAgICBbaW5uZXJTdHJva2VDb2xvcl09XCInI2Q1ZDVkNSdcIlxyXG4gICAgICAgIFthbmltYXRpb25EdXJhdGlvbl09XCIxMFwiXHJcbiAgICA+PC9jaXJjbGUtcHJvZ3Jlc3M+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG5cclxuPG5nLXRlbXBsYXRlICN1c2VyTG9nZ2VkSW5EZXRhaWxzPlxyXG4gIDxkaXYgY2xhc3M9XCJ0b29sdGlwLWRpdi1jb250YWluZXJcIj5cclxuICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGRhdGEgb2YgdGV4dEFjdGlvblRvb2x0aXBcIj5cclxuICAgICAgICA8c3BhbiAqbmdJZj1cImRhdGEua2V5ICE9ICdyZWFkJ1wiPiAgICAgICAgXHJcbiAgICAgIHt7IGRhdGEua2V5IH19IDxiPiB7e2RhdGEudmFsdWV9fTwvYj5cclxuICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgPHNwYW4gKm5nSWY9XCJkYXRhLmtleSA9PSAncmVhZCdcIj4gICAgICAgIFxyXG4gICAgICAgICAgIDxiPiB7e2RhdGEudmFsdWV9fTwvYj5cclxuICAgICAgICA8L3NwYW4+XHJcbiAgIDwvbmctY29udGFpbmVyPlxyXG4gIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNtYXJrQXNSZWFkVGlwPlxyXG4gICAgPGRpdiBjbGFzcz1cInRvb2x0aXAtZGl2LWNvbnRhaW5lclwiPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBkYXRhIG9mIHRleHRBY3Rpb25Ub29sdGlwXCI+XHJcbiAgICAgICAge3tkYXRhLnZhbHVlfX1cclxuICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDwvZGl2PlxyXG4gIDwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI3RleHRBY3Rpb25Ub29sdGlwVGVtcGxhdGU+XHJcbiAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZGF0YSBvZiB0ZXh0QWN0aW9uVG9vbHRpcFwiPlxyXG4gICAgIHt7IGRhdGEua2V5IH19IDxiPiB7e2RhdGEudmFsdWV9fTwvYj5cclxuICA8L25nLWNvbnRhaW5lcj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjdG9vbHRpcENvbnRhaW5pbmdUYWJsZVRlbXBsYXRlPlxyXG4gIDxkaXYgKm5nSWY9XCJ0b29sdGlwQ29udGFpbmluZ1RhYmxlXCIgY2xhc3M9XCJ0b29sdGlwLWRpdi1jb250YWluZXJcIj5cclxuICAgIDx1bD5cclxuICAgICAgPGxpICpuZ0Zvcj1cImxldCBoZWFkZXJNc2cgb2YgdG9vbHRpcENvbnRhaW5pbmdUYWJsZS50YWJsZUhlYWRlck1zZ1wiPlxyXG4gICAgICAgIDxiPiB7e2hlYWRlck1zZ319ICA8L2I+XHJcbiAgICAgIDwvbGk+XHJcbiAgICA8L3VsPlxyXG5cclxuICAgIDx0YWJsZSBjbGFzcz1cInRvb2x0aXAtdGFibGVcIj5cclxuICAgICAgPHRoZWFkPlxyXG4gICAgICAgIDx0cj5cclxuICAgICAgICAgIDx0aCAqbmdGb3I9XCJsZXQgaGVhZGVyIG9mIHRvb2x0aXBDb250YWluaW5nVGFibGUudG9vbHRpcFRhYmxlSGVhZGVyXCI+XHJcbiAgICAgICAgICAgIHt7IGhlYWRlcn19XHJcbiAgICAgICAgICA8L3RoPlxyXG4gICAgICAgIDwvdHI+XHJcbiAgICAgIDwvdGhlYWQ+XHJcbiAgICAgIDx0Ym9keT5cclxuICAgICAgICA8dHIgKm5nRm9yPVwibGV0IHJvd3Mgb2YgdG9vbHRpcENvbnRhaW5pbmdUYWJsZS50b29sdGlwVGFibGVCb2R5XCI+XHJcbiAgICAgICAgICA8dGQgKm5nRm9yPVwibGV0IGRhdGEgb2Ygcm93c1wiPlxyXG4gICAgICAgICAgICB7eyBkYXRhIH19XHJcbiAgICAgICAgICA8L3RkPlxyXG4gICAgICAgIDwvdHI+XHJcbiAgICAgIDwvdGJvZHk+XHJcbiAgICA8L3RhYmxlPlxyXG5cclxuICAgIDx1bD5cclxuICAgICAgPGxpIHN0eWxlPVwibWFyZ2luLXRvcDoxMHB4OyBwYWRkaW5nOjBcIiAqbmdGb3I9XCJsZXQgZm9vdGVyTXNnIG9mIHRvb2x0aXBDb250YWluaW5nVGFibGUudGFibGVGb290ZXJNc2dcIj5cclxuICAgICAgICB7eyBmb290ZXJNc2cgfX0gXHJcbiAgICAgIDwvbGk+XHJcbiAgICA8L3VsPlxyXG5cclxuICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuPG5nLXRlbXBsYXRlICN0ZXh0QWN0aW9uVG9vbHRpcFRlbXBsYXRlPlxyXG4gICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBkYXRhIG9mIHRleHRBY3Rpb25Ub29sdGlwXCI+XHJcbiAgICAgIHt7IGRhdGEua2V5IH19IDxiPiB7e2RhdGEudmFsdWV9fTwvYj5cclxuICAgPC9uZy1jb250YWluZXI+XHJcbjwvbmctdGVtcGxhdGU+XHJcbiJdfQ==
1970
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5uYS1ub24tZWRpdGFibGUtZ2VuZXJpYy10YWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbm5hLWNvcmUvc3JjL2xpYi9hbm5hLWdlbmVyaWMtdGFibGUtbGliL2NvbXBvbmVudHMvYW5uYS1ub24tZWRpdGFibGUtZ2VuZXJpYy10YWJsZS9hbm5hLW5vbi1lZGl0YWJsZS1nZW5lcmljLXRhYmxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FubmEtY29yZS9zcmMvbGliL2FubmEtZ2VuZXJpYy10YWJsZS1saWIvY29tcG9uZW50cy9hbm5hLW5vbi1lZGl0YWJsZS1nZW5lcmljLXRhYmxlL2FubmEtbm9uLWVkaXRhYmxlLWdlbmVyaWMtdGFibGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsNEJBQTRCO0FBQzVCLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBNEIsaUJBQWlCLEVBQWdDLHVCQUF1QixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTVNLGdDQUFnQztBQUNoQyxPQUFPLEtBQUssTUFBTSxPQUFPLENBQUM7QUFFMUIsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFLbEUsT0FBTyxFQUFFLHlCQUF5QixFQUFlLE1BQU0sc0VBQXNFLENBQUM7QUFHOUgsT0FBTyxFQUFZLFlBQVksRUFBRSxNQUFNLHNEQUFzRCxDQUFDO0FBQzlGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxZQUFZLEVBQUUsTUFBTSx5REFBeUQsQ0FBQztBQUN6RyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMERBQTBELENBQUM7QUFDM0YsT0FBTyxFQUFFLGlC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YXIgaW1wb3J0IHN0YXRlbWVudHNcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIElucHV0LCBWaWV3Q2hpbGRyZW4sIFF1ZXJ5TGlzdCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIFNpbXBsZUNoYW5nZXMsIE9uQ2hhbmdlcywgQ2hhbmdlRGV0ZWN0b3JSZWYsIEVsZW1lbnRSZWYsIEFmdGVyVmlld0NoZWNrZWQsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG4vLyBUaGlyZCBwYXJ0eSBpbXBvcnQgc3RhdGVtZW50c1xyXG5pbXBvcnQgZGF5anMgZnJvbSBcImRheWpzXCI7XHJcbmltcG9ydCB7IE9wdGlvbnMgfSBmcm9tICdAYW5ndWxhci1zbGlkZXIvbmd4LXNsaWRlcic7XHJcbmltcG9ydCB7IGNsb25lRGVlcCwgaXNFcXVhbCwgbWFwLCB1bmlxLCBzb3J0QnkgfSBmcm9tIFwibG9kYXNoLWVzXCI7XHJcblxyXG5cclxuLy9zdWItZW50cmllcyBvZiBhbm5hIGxpYiBpbXBvcnQgc3RhdGVtZW50XHJcbmltcG9ydCB7IElHdEdlbmVyYWxDb25maWcsIElHdFRhYmxlSGVhZGVyLCBJSGVhZGVySW5mbywgSVRvdGFsUm93SW5mbyB9IGZyb20gJy4uLy4uLy4uL2FubmEtY29yZS1zaGFyZWQtbGliL21vZGVscy9hbm5hLW5vbi1lZGl0YWJsZS1ndC1tb2RlbHMnO1xyXG5pbXBvcnQgeyBBbm5hRGF0ZVRpbWVGb3JtYXRTZXJ2aWNlLCBOZ2JEYXRlVHlwZSB9IGZyb20gJy4uLy4uLy4uL2FubmEtY29yZS1zaGFyZWQtbGliL3NlcnZpY2VzL2FubmEtZGF0ZS10aW1lLWZvcm1hdC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgSVdlZWtDYWxlbmRhciB9IGZyb20gJy4uLy4uLy4uL2FubmEtY29yZS1zaGFyZWQtbGliL21vZGVscy9hbm5hLWdsb2JhbC1kcm9wZG93bi1jb25maWcubW9kZWwnO1xyXG5pbXBvcnQgeyBHdENvbHVtbkljb25FbWl0dGVkRGF0YSwgUmF0aW5nU2VsbGVyR3JvdXBIaWVyYXJjaHksICB9IGZyb20gJy4uLy4uLy4uL2FubmEtY29yZS1zaGFyZWQtbGliL21vZGVscy9hbm5hLWdlbmVyaWMtZGF0YS10eXBlLm1vZGVsJztcclxuaW1wb3J0IHsgU29ydFR5cGUsIFNvcnRUeXBlRW51bSB9IGZyb20gJy4uLy4uLy4uL2FubmEtY29yZS1zaGFyZWQtbGliL21vZGVscy9hbm5hLXNvcnQubW9kZWwnO1xyXG5pbXBvcnQgeyByYWRpb0J1dHRvbk1vZGVsLCBUb29sdGlwTW9kZWwgfSBmcm9tICcuLi8uLi8uLi9hbm5hLWNvcmUtc2hhcmVkLWxpYi9tb2RlbHMvYW5uYS10b29sdGlwLm1vZGVsJztcclxuaW1wb3J0IHsgQW5uYVNvcnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vYW5uYS1jb3JlLXNoYXJlZC1saWIvc2VydmljZXMvYW5uYS1zb3J0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBbm5hRmlsdGVyU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2FubmEtY29yZS1zaGFyZWQtbGliL3NlcnZpY2VzL2FubmEtZmlsdGVyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgVXNlckFjdGl2YXRpb25TdGF0dXMgfSBmcm9tICcuLi8uLi8uLi9hbm5hLWNvcmUtc2hhcmVkLWxpYi9tb2RlbHMvYW5uYS1tYW5hZ2UtdXNlcnMubW9kZWwnO1xyXG5cclxuaW50ZXJmYWNlIGtleVZhbHVlVG9vbHRpcFR5cGUgeyBrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZyB9O1xyXG5pbnRlcmZhY2UgdGFibGVUb29sdGlwVHlwZSB7IHRvb2x0aXBUYWJsZUhlYWRlcjogc3RyaW5nW10sIHRvb2x0aXBUYWJsZUJvZHk6IHN0cmluZ1tdW10sIHRhYmxlSGVhZGVyTXNnOiBzdHJpbmdbXSwgdGFibGVGb290ZXJNc2c6IHN0cmluZ1tdIH1cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYW5uYS1jb3JlLW5vbi1lZGl0YWJsZS1nZW5lcmljLXRhYmxlLWxpYicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2FubmEtbm9uLWVkaXRhYmxlLWdlbmVyaWMtdGFibGUuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2FubmEtbm9uLWVkaXRhYmxlLWdlbmVyaWMtdGFibGUuY29tcG9uZW50LnNjc3MnXSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQW5uYU5vbkVkaXRhYmxlR2VuZXJpY1RhYmxlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIEFmdGVyVmlld0NoZWNrZWQge1xyXG5cclxuICBASW5wdXQoKSBzaG93U2tlbGV0b25Mb2FkaW5nOiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIHRhYmxlSGVhZGVyczogSUd0VGFibGVIZWFkZXJbXTtcclxuICBASW5wdXQoKSB0YWJsZURhdGE6IGFueVtdO1xyXG4gIEBJbnB1dCgpIGNsb25lZFRhYmxlRGF0YTogYW55W107XHJcbiAgQElucHV0KCkgZ3RHZW5lcmFsQ29uZmlnOiBJR3RHZW5lcmFsQ29uZmlnO1xyXG4gIEBJbnB1dCgpIHRvdGFsUm93SW5mbz86IElUb3RhbFJvd0luZm9bXTtcclxuICBASW5wdXQoKSBndERpbWVuc2lvbjogeyByb3dIZWlnaHQ6IG51bWJlciwgaGVhZGVySGVpZ2h0OiBudW1iZXIsIGRhdGFPblRvcEhlaWdodDogbnVtYmVyLCBtYXJnaW5Gcm9tQm90dG9tOiBudW1iZXIsIHRhYmxlSGVpZ2h0Pzogc3RyaW5nfTtcclxuICBASW5wdXQoKSB0YWJsZUNsYXNzOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgbWF4aW11bVJvd3NXaGljaENhbkJlUmVuZGVyZWRXaXRob3V0U2Nyb2xsOiBudW1iZXIgPSA1O1xyXG4gIEBJbnB1dCgpIGxpbWl0OiBudW1iZXIgPSAzMDsgXHJcbiAgQElucHV0KCkgaW5jbHVkZUJvcmRlckluVGFibGVIZWlnaHQ6IGJvb2xlYW4gPSB0cnVlOyBcclxuICBASW5wdXQoKSBkb3dubG9hZEluUHJvZ3Jlc3M6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgcGVyY2VudERvbmU6IG51bWJlcjtcclxuICBASW5wdXQoKSBzdGFycmVkSW5Qcm9ncmVzczogYm9vbGVhbjtcclxuICBASW5wdXQoKSBjbGlja2FibGVSb3c6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBzZXRUYWJsZUhlaWdodFdoZW5Sb3dTaXplSXNGaXhlZDogYm9vbGVhbiA9IHRydWU7XHJcbiAgQElucHV0KCkgdGFibGVCb3JkZXJCb3R0b21DbGFzc1JlcXVpcmVkOiBib29sZWFuID0gdHJ1ZTtcclxuICBASW5wdXQoKSBoaWRlU29tZVRkczogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHRkc0hhdmVSb3dTcGFuOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIEBPdXRwdXQoKSB0b2dnbGVDaGVja2JveCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgdG9nZ2xlUm93Q2hlY2tib3ggPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIHRvZ2dsZUhlYWRlckNoZWNrYm94ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSB1bmRvSWNvbkNsaWNrZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGZpbHRlckFwcGxpZWRUb1RhYmxlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBzb3J0aW5nQXBwbGllZFRvVGFibGUgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIHJvd0NsaWNrZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIHJhZGlvQnV0dG9uU2VsZWN0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGNvbHVtbkZpbHRlck9wZW5lZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgY29sdW1uRmlsdGVyQ2xvc2VkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBndEljb25DbGlja2VkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBndFNWR0ljb25DbGlja2VkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBndFRleHRBY3Rpb25DbGlja2VkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBndFZpZXdEZXRhaWxDbGlja2VkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBkb3dubG9hZFNwb3REZXRhaWxzID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBjbGlja2FibGVEYXRhQ2xpY2tlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgdG90YWxSb3dJY29uQ2xpY2tlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgbm90aWZpY2F0aW9uSWNvbkhvdmVyID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBub3RpZmljYXRpb25JY29uSG92ZXJMZWF2ZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgZWRpdGFibGVJbnB1dEVkaXRlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgbnVtYmVyT2ZTa2VsZXRvblJvd3M6IG51bWJlcltdW10gPSBBcnJheSgyMCkuZmlsbCgwKTtcclxuICB0YWJsZURhdGFXcmFwcGVyOiBhbnlbXTtcclxuICByb3dDaGVja2VkOiBib29sZWFuO1xyXG4gIGlzQWxsUm93c0NoZWNrZWQ6IGJvb2xlYW47XHJcbiAgbm9EYXRhV2lkdGg6IHN0cmluZyA9IFwiNTAlXCI7XHJcbiAgbWFya2VkRm9yQ3JlZGl0U3RhdHVzOiBzdHJpbmc7XHJcbiAgbWFya2VkRm9yTUdTdGF0dXM6IHN0cmluZztcclxuXHJcbiAgLy9Tb3J0IGFuZCBGaWx0ZXJcclxuICB0b29sVGlwZGF0YTogYW55O1xyXG4gIHRlbXBUb29sdGlwRGF0YTogYW55O1xyXG4gIHRvb2x0aXBSYWRpb1RleHRNYXA6IE1hcDxhbnksIGFueT47XHJcbiAgZmlsdGVyVGFiT2JqZWN0czogYW55W107XHJcbiAgdG9vbHRpcDogYW55O1xyXG4gIGNsb25lZFRvb2x0aXBEYXRhOiBhbnk7XHJcbiAgY2xvbmVkVG9vbHRpcFNlbGVjdGVkTWFwRGF0YTogYW55O1xyXG4gIHNlYXJjaEJhcjogc3RyaW5nO1xyXG4gIGRpc2FibGVDbGVhckFsbEJ0bjogYm9vbGVhbiA9IHRydWU7XHJcbiAgZGlzYWJsZUNvbHVtbkNsZWFyQWxsQnRuOiBib29sZWFuID0gdHJ1ZTtcclxuICBhbGxTZWxlY3RlZCA9IDA7XHJcbiAgc2hvd0FsbDogYm9vbGVhbjtcclxuICBkaXNhYmxlQ2hlY2tib3hBcHBseTogYm9vbGVhbjtcclxuICBkaXNhYmxlU2xpZGVyQXBwbHlCdXR0b246IGJvb2xlYW47XHJcbiAgZGlzYWJsZVRpbWVBcHBseUJ1dHRvbjogYm9vbGVhbjtcclxuICBtYXJnaW4gPSA1O1xyXG5cclxuXHJcbiAgLy8gU2xpZGVyIEZpbHRlclxyXG4gIHNsaWRlck1pblZhbHVlOiBudW1iZXI7XHJcbiAgc2xpZGVyTWF4VmFsdWU6IG51bWJlcjtcclxuICBvcHRpb25zOiBPcHRpb25zID0ge1xyXG4gICAgZmxvb3I6IDAsXHJcbiAgICBjZWlsOiAwLFxyXG4gICAgc3RlcDogMC4wMVxyXG4gIH07XHJcbiAgc2xpZGVyVmFsdWU6IHsgbWluOiBudW1iZXIsIG1heDogbnVtYmVyIH07XHJcbiAgc2xpZGVyRmlsdGVyVGV4dEJveFN0ZXA6IHN0cmluZztcclxuICBzbGlkZXJFbnRlcmVkTWluVmFsdWU6IG51bWJlcjtcclxuICBzbGlkZXJFbnRlcmVkTWF4VmFsdWU6IG51bWJlcjtcclxuXHJcbiAgLy8gQ2FsZW5kYXIgRmlsdGVyXHJcbiAgY2FsZW5kYXJNaW5FbmFibGVkRGF0ZTogTmdiRGF0ZVR5cGU7XHJcbiAgY2FsZW5kYXJNYXhFbmFibGVkRGF0ZTogTmdiRGF0ZVR5cGU7XHJcbiAgc2VsZWN0ZWRNaW5EYXRlOiBOZ2JEYXRlVHlwZTtcclxuICBzZWxlY3RlZE1heERhdGU6IE5nYkRhdGVUeXBlO1xyXG5cclxuICAvL1dlZWsgRmlsdGVyXHJcbiAgbXVsdGlXZWVrUGlja2VyQ29uZmlnOiBJV2Vla0NhbGVuZGFyO1xyXG5cclxuICAvL1RpbWUgRmlsdGVyXHJcbiAgc2VsZWN0ZWRGcm9tVGltZTogYW55W107XHJcbiAgc2VsZWN0ZWRUb1RpbWU6IGFueVtdO1xyXG4gIGNsb25lZFNlbGVjdGVkRnJvbVRpbWU6IGFueTtcclxuICBjbG9uZWRTZWxlY3RlZFRvVGltZTogYW55O1xyXG4gIGRpc2FibGVUaW1lRmlsdGVyQXBwbHlCdG46IGJvb2xlYW47XHJcbiAgdGFibGVDb2x1bW5zOiBzdHJpbmdbXSA9IFtdO1xyXG4gIHRvdGFsUm93Q29sdW1uczogc3RyaW5nW10gPSBudWxsO1xyXG4gIHNob3dNdWx0aVRpbWVDaGVja2JveDogYm9vbGVhbjtcclxuICBzaG93WmVyb1RpbWVDaGVja2JveDogYm9vbGVhbjtcclxuICBzaG93RW50ZXJUaW1lQ2hlY2tib3g6IGJvb2xlYW47XHJcbiAgbXVsdGlUaW1lQ2hlY2tib3hDaGVja2VkOiBib29sZWFuO1xyXG4gIHplcm9UaW1lQ2hlY2tib3hDaGVja2VkOiBib29sZWFuO1xyXG4gIGVudGVyVGltZUNoZWNrYm94Q2hlY2tlZDogYm9vbGVhbjtcclxuICBiaW5kVmFsdWVGdW5jQ2FsbGVkOiBib29sZWFuO1xyXG5cclxuICBoaWVyYXJjaHlUb29sdGlwOiB7IG9wZW46ICgpID0+IHZvaWQ7IGNsb3NlOiAoKSA9PiB2b2lkOyB9O1xyXG4gIHNlbGxlckdyb3VwSGllcmFyY2h5OiBSYXRpbmdTZWxsZXJHcm91cEhpZXJhcmNoeVtdO1xyXG4gIHNob3dGaWx0ZXJUb29sdGlwVGFiczogYm9vbGVhbjsgLy9DaGFuZ2UgdGhlIE5hbWVcclxuXHJcbiAgaXNTY3JvbGxlZExlZnQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICByb3dCb3JkZXJXaWR0aDogbnVtYmVyID0gMjtcclxuICBcclxuICBzaG93U29ydENvbXBvbmVudDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHNob3dGaWx0ZXJDb21wb25lbnQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICB0ZW1wU29ydE9yZGVyOiBTb3J0VHlwZSA9IG51bGw7XHJcbiAgICBcclxuICB0b29sdGlwT3B0aW9uczogVG9vbHRpcE1vZGVsW107XHJcbiAgY2xvbmVkVG9vbHRpcE9wdGlvbnM6IFRvb2x0aXBNb2RlbFtdO1xyXG4gIGRpc2FibGVTZWxlY3RBbGw6IGJvb2xlYW47XHJcbiAgZGlzYWJsZUNsZWFyQWxsOiBib29sZWFuO1xyXG4gIHNlYXJjaEl0ZW06IHN0cmluZztcclxuXHJcbiAgZGlzYWJsZUNhbGVuZGFyQXBwbHlCdG46IGJvb2xlYW47XHJcbiAgY2FsZW5kYXJTZWxlY3Rpb246IGFueSA9IHtmcm9tRGF0ZTogbnVsbCAsIHRvRGF0ZTogbnVsbH07XHJcblxyXG4gIHNob3dTbGlkZXJNaW5WYWx1ZUVycm9yOiBib29sZWFuO1xyXG4gIHNob3dTbGlkZXJNYXhWYWx1ZUVycm9yOiBib29sZWFuO1xyXG4gIGlzTWluVGV4dEJveEVtcHR5OiBib29sZWFuO1xyXG4gIGlzTWF4VGV4dEJveEVtcHR5OiBib29sZWFuO1xyXG4gIHNlbGVjdGVkTGFiZWw6IHN0cmluZztcclxuXHJcbiAgc3RhcnRUaW1lSG91ckVycjogYm9vbGVhbjtcclxuICBzdGFydFRpbWVNaW5FcnI6IGJvb2xlYW47XHJcbiAgZW5kVGltZUhvdXJFcnI6IGJvb2xlYW47XHJcbiAgZW5kVGltZU1pbkVycjogYm9vbGVhbjtcclxuXHJcbiAgc2FtZVRvb2x0aXBDbGlja2VkOiBib29sZWFuO1xyXG4gIG1hcmdpblRvcDogc3RyaW5nID0gXCJcIjtcclxuICBAVmlld0NoaWxkcmVuKCd0YWJsZUhlYWRlcicpIHZpZXdDaGlsZFRhYmxlSGVhZGVyczogUXVlcnlMaXN0PEVsZW1lbnRSZWY+O1xyXG5cclxuICBzZWxlY3RlZENoZWNrYm94T3B0aW9uc0NvdW50OiBudW1iZXI7XHJcbiAgaXNGaWx0ZXJDaGFuZ2VkOiBib29sZWFuO1xyXG4gIGlzU29ydENoYW5nZWQ6IGJvb2xlYW47XHJcbiAgaXNEaWZmZXJlbmNlTGVzc1RoYW4yNVBlcmNlbnQ6IGJvb2xlYW47XHJcbiAgaW5jb3JyZWN0U2xpZGVySW5wdXQ6IGJvb2xlYW47XHJcbiAgc3RhcnQ6IG51bWJlciA9IDA7XHJcbiAgZW5kOiBudW1iZXIgPSB0aGlzLmxpbWl0ICsgdGhpcy5zdGFydDtcclxuICByZW5kZXJlZERhdGE6IGFueVtdOyBcclxuICBzZWxlY3RlZEludmVudG9yeUlkRm9yRG93bmxvYWQ6IG51bWJlcjtcclxuICBzZWxlY3RlZERlbW9ncmFwaGljRm9yRG93bmxvYWQ6IGFueTtcclxuICBzZWxlY3RlZFJvd1R5cGVGb3JEb3dubG9hZDogc3RyaW5nO1xyXG4gIGhlaWdodE9mQ2hlY2tib3hUb29sdGlwRmlsdGVyOiBudW1iZXI7XHJcbiAgaXNOb0RhdGFUb0Rpc3BsYXlTdWJqZWN0JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xyXG4gIHNlbGVjdGVkU3RhcnJlZE9yZGVySWQ6IHN0cmluZztcclxuICBVc2VyQWN0aXZhdGlvblN0YXR1cyA9IFVzZXJBY3RpdmF0aW9uU3RhdHVzO1xyXG4gIHRleHRBY3Rpb25Ub29sdGlwOiBrZXlWYWx1ZVRvb2x0aXBUeXBlW10gPSBbXTtcclxuICB0b29sdGlwQ29udGFpbmluZ1RhYmxlOiB0YWJsZVRvb2x0aXBUeXBlID0gbnVsbDtcclxuICBzaG93RW1wdHlTcGFjZUZvclNsaWRlcjogYm9vbGVhbjsgXHJcbiAgdGFibGVCb3R0b21Cb3JkZXJDbGFzczogc3RyaW5nID0gbnVsbDtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGNkUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgIHByaXZhdGUgYW5uYVNvcnRTZXJ2aWNlOiBBbm5hU29ydFNlcnZpY2UsXHJcbiAgICBwdWJsaWMgYW5uYURhdGVUaW1lRm9ybWF0U2VydmljZTogQW5uYURhdGVUaW1lRm9ybWF0U2VydmljZSxcclxuICAgIHB1YmxpYyBhbm5hRmlsdGVyU2VydmljZTogQW5uYUZpbHRlclNlcnZpY2VcclxuICApIHtcclxuICAgIHRoaXMuc2V0VG9vbHRpcFJhZGlvTmFtZXMoKTtcclxuICB9XHJcbiAgXHJcbiAgbmdBZnRlclZpZXdDaGVja2VkKCk6IHZvaWQge1xyXG4gICAgdGhpcy5zZXRNYXJnaW5MZWZ0Rm9yRmlsdGVySWNvbigpOyAgICBcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xyXG4gICAgY29uc29sZS5sb2coXCJjaGFuZ2VzIDpcIixjaGFuZ2VzKVxyXG4gICAgY29uc29sZS5sb2coXCJ0YWJsZSBoZWFkZXJzIDpcIix0aGlzLnRhYmxlSGVhZGVycylcclxuICAgIGlmKGNoYW5nZXMgJiYgY2hhbmdlc1tcImd0RGltZW5zaW9uXCJdICYmIGNoYW5nZXNbXCJndERpbWVuc2lvblwiXS5jdXJyZW50VmFsdWUgJiYgdGhpcy5zZXRUYWJsZUhlaWdodFdoZW5Sb3dTaXplSXNGaXhlZCl7XHJcbiAgICAgIHRoaXMuc2V0VGFibGVIZWlnaHQoKTtcclxuICAgICAgdGhpcy5zZXRUYWJsZUJvdHRvbUJvcmRlcigpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuc2hvd1NrZWxldG9uTG9hZGluZykge1xyXG4gICAgICB0aGlzLnRhYmxlRGF0YSA9IHRoaXMubnVtYmVyT2ZTa2VsZXRvblJvd3M7XHJcbiAgICAgIHRoaXMucmVuZGVyZWREYXRhID0gdGhpcy5udW1iZXJPZlNrZWxldG9uUm93cztcclxuICAgICAgdGhpcy5pc05vRGF0YVRvRGlzcGxheVN1YmplY3QkLm5leHQoZmFsc2UpO1xyXG4gICAgICB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmluaXRpYWxWYWx1ZU1hcCA9IG5ldyBNYXAoKTtcclxuICAgICAgdGhpcy5zZXRUYWJsZUJvdHRvbUJvcmRlcigpO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZihjaGFuZ2VzW1wicGVyY2VudERvbmVcIl0gfHwgY2hhbmdlc1tcImRvd25sb2FkSW5Qcm9ncmVzc1wiXSB8fCAoIGNoYW5nZXNbXCJzdGFycmVkSW5Qcm9ncmVzc1wiXSAmJiBjaGFuZ2VzW1wic3RhcnJlZEluUHJvZ3Jlc3NcIl0uY3VycmVudFZhbHVlICE9IHVuZGVmaW5lZCApKXtcclxuICAgICAgLy9ubyB0YXNrIHdpbGwgYmUgcGVyZm9ybWVkXHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgdGhpcy5zZXRJbml0aWFsUm93c0ZvclRhYmxlKCk7XHJcbiAgICAgIHRoaXMuZGlzYWJsZUVuYWJsZUVhY2hDb2x1bW5Ub29sdGlwSWNvbigpO1xyXG4gICAgICB0aGlzLnRhYmxlQ29sdW1ucyA9IHRoaXMudGFibGVIZWFkZXJzLmZpbHRlcih4ID0+IHgudmlzaWJsZSkubWFwKHggPT4geC5oZWFkZXJJbmZvWzBdLm9iamVjdEtleSk7XHJcbiAgICAgIGlmKCAodGhpcy50YWJsZURhdGEgJiYgdGhpcy50YWJsZURhdGEubGVuZ3RoID09IDApIHx8ICh0aGlzLnRhYmxlRGF0YS5sZW5ndGggPT0gMiAmJiB0aGlzLmNoZWNrSWZBbGxUaGVFbGVtZW50c0FyZVplcm8oKSkpe1xyXG4gICAgICAgIHRoaXMudGFibGVEYXRhID0gQXJyYXkoMikuZmlsbCgwKTtcclxuICAgICAgICB0aGlzLnJlbmRlcmVkRGF0YSA9IGNsb25lRGVlcCh0aGlzLnRhYmxlRGF0YSk7XHJcbiAgICAgICAgdGhpcy5tYXJnaW5Ub3AgPSAoLSB0aGlzLmd0RGltZW5zaW9uLnJvd0hlaWdodCAtICh0aGlzLmd0RGltZW5zaW9uLnJvd0hlaWdodC8yKSkgKyAncHgnO1xyXG4gICAgICAgIHRoaXMuaXNOb0RhdGFUb0Rpc3BsYXlTdWJqZWN0JC5uZXh0KHRydWUpO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2V7XHJcbiAgICAgICAgdGhpcy5pc05vRGF0YVRvRGlzcGxheVN1YmplY3QkLm5leHQoZmFsc2UpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLnNob3dTa2VsZXRvbkxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgdGhpcy5zZXRUYWJsZUJvdHRvbUJvcmRlcigpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vc2V0dGluZyB0YWJsZSBjb2x1bW4gaGVyZSBhcyB3ZWxsIGJlY2F1c2Ugd2hpbGUgc2hvd2luZyBza2VsZXRvbiBsb2FkZXIsIHdlIHNob3VsZCBzaG93IHRhYmxlIGhlYWRlcnMuXHJcbiAgICBpZiAoY2hhbmdlc1sndGFibGVIZWFkZXJzJ10gJiYgIWlzRXF1YWwoY2hhbmdlc1sndGFibGVIZWFkZXJzJ10uY3VycmVudFZhbHVlLCBjaGFuZ2VzWyd0YWJsZUhlYWRlcnMnXS5wcmV2aW91c1ZhbHVlKSkge1xyXG4gICAgICB0aGlzLnRhYmxlQ29sdW1ucyA9IHRoaXMudGFibGVIZWFkZXJzLmZpbHRlcih4ID0+IHgudmlzaWJsZSkubWFwKHggPT4geC5oZWFkZXJJbmZvWzBdLm9iamVjdEtleSk7XHJcbiAgICAgIHRoaXMuYW5uYVNvcnRTZXJ2aWNlLmNvbHVtblNvcnRTdGF0ZSA9IG5ldyBNYXAoKTtcclxuICAgICAgLy8gdGhpcy5zZXRDb2x1bW5Tb3J0U3RhdGVNYXAoKTtcclxuICAgICAgdGhpcy5zZXRBY3RpdmVTdGF0ZU9iamVjdCgpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChjaGFuZ2VzWyd0b3RhbFJvd0luZm8nXSAmJiBjaGFuZ2VzWyd0b3RhbFJvd0luZm8nXS5jdXJyZW50VmFsdWUpIHtcclxuICAgICAgdGhpcy50b3RhbFJvd0NvbHVtbnMgPSB0aGlzLnRvdGFsUm93SW5mby5tYXAoeCA9PiB4LmNvbE5hbWUpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBzZXRUYWJsZUJvdHRvbUJvcmRlcigpe1xyXG4gICAgaWYodGhpcy50YWJsZUJvcmRlckJvdHRvbUNsYXNzUmVxdWlyZWQgJiYgdGhpcy50YWJsZURhdGEgJiYgdGhpcy50YWJsZURhdGEubGVuZ3RoICYmIHRoaXMubWF4aW11bVJvd3NXaGljaENhbkJlUmVuZGVyZWRXaXRob3V0U2Nyb2xsIDwgdGhpcy50YWJsZURhdGEubGVuZ3RoKXtcclxuICAgICAgdGhpcy50YWJsZUJvdHRvbUJvcmRlckNsYXNzID0gJ2JvdHRvbS1ib3JkZXInO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHRoaXMudGFibGVCb3R0b21Cb3JkZXJDbGFzcyA9IG51bGw7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjaGVja0lmQWxsVGhlRWxlbWVudHNBcmVaZXJvKCl7XHJcbiAgICAgcmV0dXJuICF0aGlzLnRhYmxlRGF0YS5zb21lKGl0ZW0gPT4gaXRlbSAhPSAwKTtcclxuICB9XHJcblxyXG4gIHNldFRhYmxlSGVpZ2h0KCl7XHJcbiAgICBsZXQgdmlld3BvcnRIZWlnaHQgPSB3aW5kb3cuaW5uZXJIZWlnaHQ7XHJcbiAgICBsZXQgcm93SGVpZ2h0ID0gdGhpcy5ndERpbWVuc2lvbi5yb3dIZWlnaHQ7XHJcbiAgICBsZXQgaGVhZGVySGVpZ2h0ID0gdGhpcy5ndERpbWVuc2lvbi5oZWFkZXJIZWlnaHQ7XHJcbiAgICBsZXQgZGF0YU9uVG9wSGVpZ2h0ID0gdGhpcy5ndERpbWVuc2lvbi5kYXRhT25Ub3BIZWlnaHQ7XHJcbiAgICBsZXQgbWFyZ2luRnJvbUJvdHRvbSA9IHRoaXMuZ3REaW1lbnNpb24ubWFyZ2luRnJvbUJvdHRvbTtcclxuXHJcbiAgICBsZXQgaGVpZ2h0TGVmdEZvclRhYmxlID0gdmlld3BvcnRIZWlnaHQgLSBkYXRhT25Ub3BIZWlnaHQgLSBtYXJnaW5Gcm9tQm90dG9tO1xyXG4gICAgdGhpcy5tYXhpbXVtUm93c1doaWNoQ2FuQmVSZW5kZXJlZFdpdGhvdXRTY3JvbGwgPVxyXG4gICAgICAgIE1hdGguY2VpbCgoaGVpZ2h0TGVmdEZvclRhYmxlIC0gaGVhZGVySGVpZ2h0IC0gcm93SGVpZ2h0KSAvIHJvd0hlaWdodCkgKyAxO1xyXG4gICAgLy8gbGV0IGFjdHVhbFRhYmxlSGVpZ2h0ID0gaGVpZ2h0TGVmdEZvclRhYmxlIC0gKChoZWlnaHRMZWZ0Rm9yVGFibGUgLSBoZWFkZXJIZWlnaHQgLSByb3dIZWlnaHQpICUgcm93SGVpZ2h0KTtcclxuICAgIGxldCBhY3R1YWxUYWJsZUhlaWdodCA9IHZpZXdwb3J0SGVpZ2h0IC0gZGF0YU9uVG9wSGVpZ2h0IC0gbWFyZ2luRnJvbUJvdHRvbTtcclxuICAgIHRoaXMuZ3REaW1lbnNpb24udGFibGVIZWlnaHQgPSBgJHthY3R1YWxUYWJsZUhlaWdodH1weGA7XHJcblxyXG4gICAgXHJcbiAgICB0aGlzLm51bWJlck9mU2tlbGV0b25Sb3dzID0gQXJyYXkodGhpcy5tYXhpbXVtUm93c1doaWNoQ2FuQmVSZW5kZXJlZFdpdGhvdXRTY3JvbGwpLmZpbGwoMCk7XHJcbiAgfVxyXG5cclxuXHJcbiAgdHJhY2tCeUZuKGluZGV4OiBudW1iZXIpIHtcclxuICAgIHJldHVybiBpbmRleDtcclxuICB9XHJcblxyXG4gIHNldFRvb2x0aXBSYWRpb05hbWVzKCkge1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwID0gbmV3IE1hcCgpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcIlN0YXJ0VGltZUZvckZpbHRlclwiLCBcIlN0YXJ0IFRpbWVcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiRW5kVGltZUZvckZpbHRlclwiLCBcIkVuZCBUaW1lXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcInN0YXJ0X3RpbWVfZm9yX2ZpbHRlclwiLCBcIlN0YXJ0IFRpbWVcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiZW5kX3RpbWVfZm9yX2ZpbHRlclwiLCBcIkVuZCBUaW1lXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcInByaW1hcnlBRU5hbWVcIiwgXCJQcmltYXJ5IEFFXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcInJlZ2lvblwiLCBcIlJlZ2lvblwiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJhZ2VuY3lOYW1lXCIsIFwiQWdlbmN5XCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcImxvY2F0aW9uXCIsIFwiTG9jYXRpb25cIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiYWR2ZXJ0aXNlck5hbWVcIiwgXCJBZHZlcnRpc2VyXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcInByb2R1Y3RDb2RlXCIsIFwiUHJvZHVjdCBDb2RlXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcImZsaWdodFN0YXJ0RGF0ZVwiLCBcIlN0YXJ0IERhdGVcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiZmxpZ2h0RW5kRGF0ZVwiLCBcIkVuZCBEYXRlXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcIm9yZGVySWRBbmRSZXZOdW1iZXJcIiwgXCJTVE4gT3JkZXIjLVJldiNcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiYWx0ZXJuYXRlT3JkZXJJZFwiLCBcIkFsdC9SZXAgT3JkZXIgI1wiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJncnBcIiwgXCJHUlBcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiY3BwXCIsIFwiQ1BQXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcImltcHNcIiwgXCJJTVBTXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcImNwbVwiLCBcIkNQTVwiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJvZmZlcmVkTUdzXCIsIFwiT2ZmZXJlZCBNR1wiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJvdXRzdGFuZGluZ1BFXCIsIFwiTy9TIFBFXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcIm9mZmVyZWRBRFVzXCIsIFwiT2ZmZXJlZCBBRFVzXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcInVkRGVmaWNpdFZhbHVlXCIsIFwiTy9TIEF1ZCBEZWx0YVwiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJzdGFydEVuZFRpbWVNdWx0aVwiLCBcIlRpbWVcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiYm9va2VkVmFsdWVcIiwgXCJCb29rZWRcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiYm9va2VkU3BvdHNcIiwgXCJTcG90c1wiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJVc2VyQ3JlZGl0ZWRWYWx1ZVwiLCBcIlVzZXIgQ3JlZGl0ZWRcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiVXNlclVucmVzb2x2ZWRWYWx1ZVwiLCBcIlVzZXIgVW5yZXNvbHZlZFwiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJCdXllckFkZGVkVmFsdWVcIiwgXCJCdXllciBBZGRlZFwiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJCdXllckRlbGV0ZWRWYWx1ZVwiLCBcIkJ1eWVyIERlbGV0ZWRcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwidXNlckNoYW5nZXNcIiwgXCJVc2VyIENoYW5nZXNcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiYnV5ZXJDaGFuZ2VzXCIsIFwiQnV5ZXIgQ2hhbmdlc1wiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJ1c2VyTUdcIiwgXCJVc2VyIE1HXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcInVzZXJBRFVzXCIsIFwiVXNlciBBRFVzXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcImludmVudG9yeUNvZGVcIiwgXCJJbnZlbnRvcnkgQ29kZVwiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJwcm9ncmFtXCIsIFwiUHJvZ3JhbVwiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJhZ2VuY3lcIiwgXCJBZ2VuY3lcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiYWR2ZXJ0aXNlclwiLCBcIkFkdmVydGlzZXJcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwic3RhcnREYXRlXCIsIFwiU3RhcnQgRGF0ZVwiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJlbmREYXRlXCIsIFwiRW5kIERhdGVcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiZGF0ZVwiLCBcIkRhdGVcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwicmN2UHJlZW1wdFwiLCBcIiQgTWFkZWdvb2QgUEVzXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcIm9zUHJlZW1wdFwiLCBcIiQgTy9TIFBFc1wiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJyY3ZVbmRlckRseVwiLCBcIlJlY292ZXJlZCBVRFwiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJvc1VuZGVyRGx5XCIsIFwiTy9zIFVuZGVyIERseVwiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJwcmltYXJ5QWVcIiwgXCJQcmltYXJ5IEFFXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcInJlZ2lvblwiLCBcIlJlZ2lvblwiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJyZXZDb2RlMVwiLCBcIlJldiBjb2RlIDFcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwib3JkZXJOb1Jldk5vXCIsIFwiU1ROIE9yZGVyIy1SZXYjXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcInJldkNvZGUyXCIsIFwiUmV2IGNvZGUgMlwiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJyZXZDb2RlM1wiLCBcIlJldiBjb2RlIDNcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiYm9va2VkXCIsIFwiJCBCb29rZWRcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwic3BvdHNcIiwgXCJTcG90c1wiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJwb3N0ZWRBdWRQZXJjZW50XCIsIFwiUG9zdGVkICVcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwicmV2aXNpb25cIiwgXCJSZXZpc2lvblwiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJidXllck9yZGVySWRcIiwgXCJBTFQvUkVQIE9yZGVyI1wiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJkZW1vXCIsXCJEZW1vXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcInBvc3RlZEFkdVwiLFwiJCBQb3N0ZWQgQURVc1wiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJzY2hlZHVsZWRBZHVcIixcIiQgU2NoZWR1bGVkIEFEVXNcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiYXVkaWVuY2VEZWZpY2l0XCIsXCIkIE8vUyBBdWRpZW5jZVwiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJwb3N0ZWRBdWRQZXJjZW50XCIsXCJQb3N0ZWQgQXVkaWVuY2UgJVwiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJwb3RlbnRpYWxVbml0c1ZhbHVlXCIsXCJQT1QgVW5pdHNcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiYm9va2VkVW5pdHNWYWx1ZVwiLFwiQm9va2VkIEVxIFVuaXRzXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcImJvb2tlZEFtb3VudFdpdGhaZXJvUmF0aW5nVmFsdWVcIixcIlRvdGFsICQgQm9va2VkXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcImJvb2tlZEFtb3VudFBlcmNlbnRhZ2VXaXRoWmVyb1JhdGluZ1ZhbHVlXCIsXCIlIEFnYWluc3QgQWxsIERlbW9zXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcImJvb2tlZEFtb3VudFdpdGhvdXRaZXJvUmF0aW5nVmFsdWVcIixcIiRCb29rZWQgV2l0aCBJbXBzKOKAmTAwMClcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiYm9va2VkQW1vdW50UGVyY2VudGFnZVdpdGhvdXRaZXJvUmF0aW5nVmFsdWVcIiwgXCIlIEFnYWluc3QgQWxsIERlbW9zXCIpO1xyXG4gICAgXHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwidG90YWxCb29rZWRBbW91bnRWYWx1ZVwiLFwiVG90YWwgJEJvb2tlZFwiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJhdmVyYWdlVW5pdFJhdGVWYWx1ZVwiLFwiIEF2ZyBSYXRlXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcInRvdGFsQm9va2VkQW1vdW50V2l0aFJhdGluZ1ZhbHVlXCIsIFwiJEJvb2tlZCBXaXRoIFJhdGluZ1wiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJhdmVyYWdlVW5pdFJhdGVXaXRoUmF0aW5nVmFsdWVcIiwgXCJBVVIgV2l0aCBSYXRpbmdcIik7XHJcbiAgICBcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJ0b3RhbEJvb2tlZEFtb3VudFdpdGhJbXByZXNzaW9uVmFsdWVcIiwgXCIkQm9va2VkIFdpdGggSU1QU1wiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJhdmVyYWdlVW5pdFJhdGVXaXRoSW1wcmVzc2lvblZhbHVlXCIsIFwiQVVSIFdpdGggSU1QU1wiKTtcclxuICAgIFxyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcImJvb2tlZFVuaXRzV2l0aFJhdGluZ1ZhbHVlXCIsIFwiQm9va2VkIFVuaXRzIFdpdGggUmF0aW5nXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcInBvc3RlZFVuaXRzV2l0aFJhdGluZ1ZhbHVlXCIsIFwiUG9zdGVkIFVuaXRzIFdpdGggUmF0aW5nXCIpO1xyXG4gICAgXHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiYm9va2VkVW5pdHNXaXRoSW1wcmVzc2lvblZhbHVlXCIsIFwiQm9va2VkIFVuaXRzIFdpdGggSU1QU1wiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJwb3N0ZWRVbml0c1dpdGhJbXByZXNzaW9uVmFsdWVcIiwgXCJQb3N0ZWQgVW5pdHMgV2l0aCBJTVBTXCIpO1xyXG4gICAgXHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiYm9va2VkUmF0aW5nc1wiLCBcIkJvb2tlZCBSYXRpbmdcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiUG9zdGVkUmF0aW5nXCIsIFwiUG9zdGVkIFJUR1wiKTtcclxuICAgIFxyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcImJvb2tlZEltcHJlc3Npb25zXCIsIFwiQm9va2VkIElNUFNcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiUG9zdGVkSW1wcmVzc2lvbnNcIiwgXCJQb3N0ZWQgSU1QKCcwMDApXCIpO1xyXG4gICAgXHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiYm9va2VkQXZlcmFnZVJhdGluZ1wiLCBcIkJvb2tlZCBBVkcgUmF0aW5nXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcInBvc3RlZEF2ZXJhZ2VSYXRpbmdcIiwgXCJQb3N0ZWQgQVZHIFJhdGluZ1wiKTtcclxuICAgIFxyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcImJvb2tlZEF2ZXJhZ2VJbXByZXNzaW9uXCIsIFwiQm9va2VkIEFWRyBJTVBTXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcInBvc3RlZEF2ZXJhZ2VJbXByZXNzaW9uXCIsIFwiUG9zdGVkIEFWRyBJTVBTXCIpO1xyXG4gICAgXHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiYm9va2VkQ3BwVmFsdWVcIiwgXCJCb29rZWQgQ1BQXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcImJvb2tlZEVmZmVjdGl2ZUNwcFZhbHVlXCIsIFwiRWZmZWN0aXZlIENQUFwiKTtcclxuICAgIFxyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcImJvb2tlZENwbVZhbHVlXCIsIFwiQm9va2VkIENQTVwiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJib29rZWRFZmZlY3RpdmVDcG1WYWx1ZVwiLCBcIkVmZmVjdGl2ZSBDUE1cIik7XHJcbiAgICBcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJvcmRlclNvdXJjZVwiLFwiT3JkZXIgUm91dGVcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwib3JkZXJDYXRlZ29yeVwiLFwiUmV2IENhdGVnb3J5XCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcImNhc2hPclRyYWRlXCIsXCJDL1RcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwicmV2aXNpb25TdGFydERhdGVcIiwgXCJSZXZpc2lvbiBTdGFydCBEYXRlXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcIm5hbWVcIiwgXCJuYW1lXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcInJvbGVcIiwgXCJyb2xlXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcInN0YXRpb25Db3VudFwiLCBcInN0YXRpb25Db3VudFwiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJzdGF0aW9uTGlzdFwiLCBcInN0YXRpb25MaXN0XCIpO1xyXG4gICAgXHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiT0RJbXBzXCIsXCJPRCBJTVBTXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcIlVESW1wc1wiLFwiVUQgSU1QU1wiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJPREdycFwiLFwiT0QgR1JQXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcIlVER3JwXCIsXCJVRCBHUlBcIik7IFxyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcInVkSW1wc1BlcmNlbnRcIixcIlVEIElNUFMgJVwiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJ1ZEdycFBlcmNlbnRcIixcIlVEIEdSUCAlXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcIm9kSW1wc1BlcmNlbnRcIixcIk9EIElNUFMgJVwiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJvZEdycFBlcmNlbnRcIixcIk9EIEdSUCAlXCIpO1xyXG5cclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJSZXZpc2lvbk51bWJlclwiLFwiUmV2aXNpb24gI1wiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJSZXZpc2lvblR5cGVcIixcIlJldmlzaW9uIFR5cGVcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiR2VuZXJhdGVkT25cIixcIkdlbmVyYXRlZCBPblwiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJCb29rZWRWYWx1ZUZvckRpc3BsYXlcIixcIiQgQk9PS0VEXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcIkJvb2tlZFZhbHVlXCIsXCIkIEJvb2tlZFwiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJCb29rZWRTcG90c1wiLFwiU3BvdHNcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiQm9va2VkR1JQXCIsXCJHUlBcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiQm9va2VkSU1QU1JldlRhYlwiLFwiSU1QUycoMDAwKVwiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJCb29rZWRDUFBcIixcIkNQUFwiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJCb29rZWRDUE1cIixcIkNQTVwiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJNR3NWYWx1ZUZvckRpc3BsYXlcIixcIiQgTUdTXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcIk1Hc1ZhbHVlXCIsXCIkIE1HU1wiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJBRFVzVmFsdWVGb3JEaXNwbGF5XCIsXCIkIEFEVVNcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiQURVc1ZhbHVlXCIsXCIkIEFEVVNcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiQnV5ZXJDaGFuZ2VzVmFsdWVGb3JEaXNwbGF5XCIsXCIkIEJ1eWVyIENoYW5nZVwiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJCdXllckNoYW5nZXNWYWx1ZVwiLFwiJCBCdXllciBDaGFuZ2VcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiVXNlckNoYW5nZXNWYWx1ZUZvckRpc3BsYXlcIixcIiQgU2VsbGVyIFVzZXIgQ2hhbmdlXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcIlVzZXJDaGFuZ2VzVmFsdWVcIixcIiQgU2VsbGVyIFVzZXIgQ2hhbmdlXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcIlNlbGxlckxpbmVcIixcIlNlbGxlciBMaW5lICNcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiQnV5ZXJMaW5lXCIsXCJCdXkgTGluZSAjXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcIlNwb3RTdGF0dXNcIixcIlNwb3QgU3RhdHVzXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcIkludmVudG9yeUNvZGVcIixcIkludmVudG9yeSBDb2RlXCIpOyBcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJCdXllclByb2dyYW1OYW1lXCIsXCJCdXllciBQcm9ncmFtIE5hbWVcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiUmV2ZW51ZUNsYXNzXCIsXCJSZXZlbnVlIENsYXNzXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcIldlZWtseUFVUlwiLFwiIEF2ZyBSYXRlXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcIkJvb2tlZFJhdGVcIixcIkJvb2tlZCBSYXRlXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcIkJvb2tlZFJUR1wiLFwiQm9va2VkIFJUR1wiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJCb29rZWRJTVBTXCIsXCJCb29rZWQgSU1QKCcwMDApXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcIklNUFNcIixcIklNUCgnMDAwKVwiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJBVVJUR1wiLFwiQXZnIFJUR1wiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJBVUlNUFNcIixcIkF2ZyBJTVAoJzAwMClcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiUG9zdGVkUmF0aW5nc09ySW1wcmVzc2lvbnNcIixcIlBvc3RlZCBSVEdcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiU2NoZWR1bGVGbGlnaHRXZWVrXCIsXCJTY2hlZHVsZSBXZWVrXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcIlNjaGVkdWxlZERheVwiLFwiU2NoZWR1bGVkIERheVwiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJBaXJTdGF0dXNcIixcIkFpciBTdGF0dXNcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiQWlyRGF0ZUFuZFRpbWVcIixcIkFpciBEYXRlICYgVGltZVwiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJOb3JtYWxpemVkT3JkZXJlZFJhdGluZ1wiLFwiTm9ybWFsaXplZCBCb29rZWQgUlRHXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcIk5vcm1hbGl6ZWRPcmRlcmVkSW1wcmVzc2lvbnNcIixcIk5vcm1hbGl6ZWQgQm9va2VkIElNUCgnMDAwKVwiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJOb3JtYWxpemVkUG9zdGVkUmF0aW5nXCIsXCJOb3JtYWxpemVkIFBvc3RlZCBSVEdcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiTm9ybWFsaXplZFBvc3RlZEltcHJlc3Npb25zXCIsXCJOb3JtYWxpemVkIFBvc3RlZCBJTVAoJzAwMClcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiQWRJZFwiLFwiQWQtSWRcIik7XHJcblxyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcImRpc3BsYXlpbXBzXCIsXCJJTVBTXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcImRpc3BsYXlHcnBcIixcIkdSUFwiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJib29rZWRTcG90c0ZvckRpc3BsYXlcIixcIlNwb3RzXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcImRpc3BsYXlTcG90c1wiLFwiU3BvdHNcIik7XHJcblxyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcImVzdGltYXRlTm9cIiwgXCJFc3RpbWF0ZSNcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwicHJpbWFyeUJ1eWVyXCIsIFwiUHJpbWFyeSBCdXllclwiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJwcmltYXJ5QnV5ZXJOYW1lXCIsIFwiUHJpbWFyeSBCdXllclwiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJzZWNvbmRhcnlCdXllck5hbWVcIiwgXCJTZWNvbmRhcnkgQnV5ZXJcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwic2Vjb25kYXJ5QnV5ZXJcIiwgXCJTZWNvbmRhcnkgQnV5ZXJcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwidGltZW91dERhdGVcIiwgXCJUaW1lb3V0IERhdGVcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiRGlzcGxheXRTcG90U3RhdHVzQklcIiwgXCJTcG90IFN0YXR1c1wiKTtcclxuICB9XHJcblxyXG4gIGdlbmVyYXRlVGFibGVEYXRhV3JhcHBlcigpIHtcclxuICAgIHRoaXMuc2hvd1NrZWxldG9uTG9hZGluZyA9IHRydWU7XHJcbiAgICB0aGlzLnRhYmxlRGF0YVdyYXBwZXIgPSBbXTtcclxuICAgIGxldCByb3dPYmplY3Q6IGFueTtcclxuICAgIGxldCBjb2x1bW5OYW1lOiBzdHJpbmc7XHJcbiAgICBsZXQgY29sdW1uT2JqZWN0OiB7IFt4OiBzdHJpbmddOiBhbnk7IH07XHJcbiAgICBsZXQgY29sdW1uT2JqZWN0S2V5O1xyXG4gICAgbGV0IGtleXNVc2VkRm9yVGFibGVEaXNwbGF5OiBzdHJpbmdbXTtcclxuICAgIGxldCBrZXlzVXNlZEZvckNvbHVtbjogc3RyaW5nW107XHJcbiAgICBsZXQgYWRkaXRpb25hbEluZm9PYmplY3Q6IHsgW3g6IHN0cmluZ106IGFueTsgfTtcclxuICAgIGxldCBhZGRpdGlvbmFsS2V5cztcclxuICAgIHRoaXMudGFibGVEYXRhLmZvckVhY2goKG9iajogeyBbeDogc3RyaW5nXTogYW55OyB9KSA9PiB7XHJcbiAgICAgIHJvd09iamVjdCA9IHt9O1xyXG4gICAgICBrZXlzVXNlZEZvclRhYmxlRGlzcGxheSA9IFtdO1xyXG4gICAgICBmb3IgKHZhciBjb2xOdW0gaW4gdGhpcy50YWJsZUhlYWRlcnMpIHtcclxuICAgICAgICBjb2x1bW5PYmplY3QgPSB7fTtcclxuICAgICAgICBpZiAoIXRoaXMudGFibGVIZWFkZXJzW2NvbE51bV0udmlzaWJsZSkge1xyXG4gICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbHVtbk5hbWUgPSBcIlwiO1xyXG4gICAgICAgIGtleXNVc2VkRm9yQ29sdW1uID0gW107XHJcbiAgICAgICAgdGhpcy50YWJsZUhlYWRlcnNbY29sTnVtXS5oZWFkZXJJbmZvLmZvckVhY2goKGhlYWRlcikgPT4ge1xyXG4gICAgICAgICAgaWYgKGhlYWRlci50eXBlT2ZCb2R5RGF0YSA9PT0gXCJTVFJJTkdcIikge1xyXG4gICAgICAgICAgICBjb2x1bW5PYmplY3RLZXkgPSBoZWFkZXIub2JqZWN0S2V5O1xyXG4gICAgICAgICAgICBjb2x1bW5PYmplY3RbY29sdW1uT2JqZWN0S2V5XSA9IG9ialtjb2x1bW5PYmplY3RLZXldO1xyXG4gICAgICAgICAgICBrZXlzVXNlZEZvclRhYmxlRGlzcGxheS5wdXNoKGNvbHVtbk9iamVjdEtleSk7XHJcbiAgICAgICAgICAgIGtleXNVc2VkRm9yQ29sdW1uLnB1c2goY29sdW1uT2JqZWN0S2V5KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2UgaWYgKGhlYWRlci50eXBlT2ZCb2R5RGF0YSA9PT0gXCJJQ09OXCIpIHtcclxuICAgICAgICAgICAgY29sdW1uT2JqZWN0S2V5ID0gaGVhZGVyLnR5cGVPZkJvZHlEYXRhO1xyXG4gICAgICAgICAgICBjb2x1bW5PYmplY3RbY29sdW1uT2JqZWN0S2V5XSA9IG9ialtoZWFkZXIub2JqZWN0S2V5XTtcclxuICAgICAgICAgICAga2V5c1VzZWRGb3JDb2x1bW4ucHVzaChoZWFkZXIub2JqZWN0S2V5KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2UgaWYgKGhlYWRlci50eXBlT2ZCb2R5RGF0YSA9PT0gXCJDSEVDS0JPWFwiKSB7XHJcbiAgICAgICAgICAgIGNvbHVtbk9iamVjdEtleSA9IGhlYWRlci50eXBlT2ZCb2R5RGF0YTtcclxuICAgICAgICAgICAgY29sdW1uT2JqZWN0W2NvbHVtbk9iamVjdEtleV0gPSBvYmpbaGVhZGVyLm9iamVjdEtleV07XHJcbiAgICAgICAgICAgIGtleXNVc2VkRm9yQ29sdW1uLnB1c2goaGVhZGVyLm9iamVjdEtleSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGtleXNVc2VkRm9yQ29sdW1uLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICBjb2x1bW5OYW1lICs9IGtleXNVc2VkRm9yQ29sdW1uW2ldO1xyXG4gICAgICAgICAgaWYgKGkgIT09IGtleXNVc2VkRm9yQ29sdW1uLmxlbmd0aCAtIDEpIHtcclxuICAgICAgICAgICAgY29sdW1uTmFtZSArPSAnLCc7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJvd09iamVjdFtjb2x1bW5OYW1lXSA9IGNvbHVtbk9iamVjdDtcclxuICAgICAgfVxyXG4gICAgICBhZGRpdGlvbmFsSW5mb09iamVjdCA9IHt9O1xyXG4gICAgICBhZGRpdGlvbmFsS2V5cyA9IE9iamVjdC5rZXlzKG9iaikuZmlsdGVyKGtleSA9PiAha2V5c1VzZWRGb3JUYWJsZURpc3BsYXkuaW5jbHVkZXMoa2V5KSk7XHJcbiAgICAgIGFkZGl0aW9uYWxLZXlzLmZvckVhY2goa2V5ID0+IHtcclxuICAgICAgICBhZGRpdGlvbmFsSW5mb09iamVjdFtrZXldID0gb2JqW2tleV07XHJcbiAgICAgIH0pXHJcbiAgICAgIHJvd09iamVjdC5BZGRpdGlvbmFsSW5mbyA9IGFkZGl0aW9uYWxJbmZvT2JqZWN0O1xyXG4gICAgICB0aGlzLnRhYmxlRGF0YVdyYXBwZXIucHVzaChyb3dPYmplY3QpO1xyXG4gICAgfSlcclxuICAgIHRoaXMudGFibGVEYXRhID0gdGhpcy50YWJsZURhdGFXcmFwcGVyO1xyXG4gICAgdGhpcy5zaG93U2tlbGV0b25Mb2FkaW5nID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuXHJcbiAgc2VsZWN0T3JVbnNlbGVjdENoZWNrYm94KHJvd0RhdGE6IGFueSwgY29sdW1uS2V5czogYW55LCBpc0NoZWNrYm94U2VsZWN0ZWQ6IGFueSkge1xyXG4gICAgcm93RGF0YVtjb2x1bW5LZXlzXSA9ICFyb3dEYXRhW2NvbHVtbktleXNdO1xyXG4gICAgdGhpcy50b2dnbGVDaGVja2JveC5lbWl0KHsgcm93RGF0YSwgY29sdW1uS2V5cywgaXNDaGVja2JveFNlbGVjdGVkIH0pO1xyXG4gIH1cclxuXHJcbiAgc2VsZWN0VW5zZWxlY3RBbGxSb3dzKCkge1xyXG4gICAgdGhpcy50b2dnbGVIZWFkZXJDaGVja2JveC5lbWl0KCk7XHJcbiAgfVxyXG5cclxuICBzZWxlY3RVbnNlbGVjdFJvdyhyb3dEYXRhOiBhbnkpIHtcclxuICAgIHRoaXMudG9nZ2xlUm93Q2hlY2tib3guZW1pdChyb3dEYXRhKTtcclxuICB9XHJcblxyXG4gIHVuZG9DcmVkaXRlZFNwb3QoZGF0YTogYW55KSB7XHJcbiAgICB0aGlzLnVuZG9JY29uQ2xpY2tlZC5lbWl0KHsgZGF0YSwgbWdPckNyZWRpdDogXCJDcmVkaXRcIiB9KTtcclxuICB9XHJcblxyXG4gIHVuZG9NZ1Nwb3QoZGF0YTogYW55KSB7XHJcbiAgICB0aGlzLnVuZG9JY29uQ2xpY2tlZC5lbWl0KHsgZGF0YSwgbWdPckNyZWRpdDogXCJNYWtlR29vZFwiIH0pO1xyXG4gIH1cclxuXHJcbiAgLy9Tb3J0IGFuZCBGaWx0ZXIgTG9naWMgYmVnaW5zIVxyXG4gIGNsb3NlVG9vbHRpcCgpIHtcclxuICAgIGlmICh0aGlzLnRvb2x0aXAgJiYgdGhpcy50b29sdGlwLmlzT3BlbigpKSB7XHJcbiAgICAgIHRoaXMudG9vbHRpcC5jbG9zZSgpO1xyXG4gICAgfVxyXG4gICAgdGhpcy50b29sdGlwID0gbnVsbDtcclxuICAgIHRoaXMuZGlzYWJsZUNoZWNrYm94QXBwbHkgPSBmYWxzZTtcclxuICAgIGlmICghdGhpcy5iaW5kVmFsdWVGdW5jQ2FsbGVkKSB7XHJcbiAgICAgIHRoaXMuY29sdW1uRmlsdGVyQ2xvc2VkLmVtaXQoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGlzVG9vbHRpcEFjdGl2ZShoZWFkZXI6IGFueVtdKSB7XHJcbiAgICByZXR1cm4gdGhpcy5hbm5hRmlsdGVyU2VydmljZS5pc1Rvb2x0aXBBY3RpdmUoaGVhZGVyLHRoaXMuYW5uYVNvcnRTZXJ2aWNlLmNvbHVtblNvcnRTdGF0ZSk7XHJcbiAgfVxyXG5cclxuICBiaW5kVGhlVmFsdWVUb1Rvb2xUaXAodG9vbHRpcDogYW55LCBoZWFkZXI6IElIZWFkZXJJbmZvKSB7XHJcblxyXG4gICAgdGhpcy5iaW5kVmFsdWVGdW5jQ2FsbGVkID0gdHJ1ZTtcclxuICAgIC8vIGxldCBjb250YWluZXJUb1Njcm9sbDtcclxuICAgIC8vIGlmICh0aGlzLmd0R2VuZXJhbENvbmZpZy5jb21wb25lbnQgPT09IFwiU1BPVERFVEFJTFNcIiB8fCB0aGlzLmd0R2VuZXJhbENvbmZpZy5jb21wb25lbnQgPT09IFwiRFJSTElTVElOR1wiKSB7XHJcbiAgICAgIC8vIGNvbnRhaW5lclRvU2Nyb2xsID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcInNjcm9sbGFibGUtY29udGFpbmVyXCIpWzBdO1xyXG4gICAgICAvLyB2YXIgbWVkaWFRdWVyeSA9IHdpbmRvdy5tYXRjaE1lZGlhKFwiKG1heC13aWR0aDogMTM2NnB4KVwiKTtcclxuICAgICAgLy8gaWYgKG1lZGlhUXVlcnkubWF0Y2hlcykge1xyXG4gICAgICAvLyAgIGNvbnRhaW5lclRvU2Nyb2xsLnNjcm9sbCgwLCB0aGlzLmd0R2VuZXJhbENvbmZpZy52ZXJ0aWNhbFNjcm9sbE9mZnNldEZvckZpbHRlclRvb2x0aXApO1xyXG4gICAgICAvLyB9XHJcbiAgICAvLyB9XHJcbiAgICBcclxuICAgIC8vIGlmIHNhbWUgdG9vbHRpcCBvcGVuZWQgY2xvc2UgaXRcclxuICAgIGlmICh0b29sdGlwID09IHRoaXMudG9vbHRpcCkge1xyXG4gICAgICB0aGlzLmJpbmRWYWx1ZUZ1bmNDYWxsZWQgPSBmYWxzZTtcclxuICAgICAgdGhpcy5jbG9zZVRvb2x0aXAoKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBsZXQgZW5hYmxlZEhlYWRlcnM6IGFueVtdID0gW107XHJcbiAgICAgIHRoaXMuY2hlY2tJZlVuaXF1ZVZhbHVlUHJlc2VudEZvclRoZUhlYWRlcihoZWFkZXIsZW5hYmxlZEhlYWRlcnMpO1xyXG4gICAgICB0aGlzLm9wZW5Ub29sdGlwKHRvb2x0aXAsIGVuYWJsZWRIZWFkZXJzLGhlYWRlcik7XHJcblxyXG4gICAgICBpZiAod2luZG93LmlubmVyV2lkdGggPCAxNTAwICYmIHdpbmRvdy5pbm5lckhlaWdodCA8IDc2OCAmJiAhdGhpcy5hbm5hRmlsdGVyU2VydmljZS5zbGlkZXJTZXQuaGFzKGhlYWRlci5maWx0ZXJTb3J0T2JqZWN0S2V5c1swXSkpIHtcclxuICAgICAgICB0aGlzLmNvbHVtbkZpbHRlck9wZW5lZC5lbWl0KCk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuc2hvd0ZpbHRlclRvb2x0aXBUYWJzID0gaGVhZGVyLmZpbHRlclNvcnRPYmplY3RLZXlzLmxlbmd0aCA+IDE7XHJcbiAgICAgIGxldCBhY3RpdmVUYWIgPSB0aGlzLmZpbHRlclRhYk9iamVjdHNbMF07XHJcbiAgICAgIHRoaXMucG9wdWxhdGVUb29sdGlwRGF0YUJhc2VkT25TZWxlY3RlZFJhZGlvKGFjdGl2ZVRhYiwgZmFsc2UpO1xyXG4gICAgICB0aGlzLmJpbmRWYWx1ZUZ1bmNDYWxsZWQgPSBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNoZWNrSWZVbmlxdWVWYWx1ZVByZXNlbnRGb3JUaGVIZWFkZXIoaGVhZGVyOiBJSGVhZGVySW5mbywgZW5hYmxlZEhlYWRlcnM6IGFueVtdKXtcclxuICAgIGhlYWRlci5maWx0ZXJTb3J0T2JqZWN0S2V5cy5mb3JFYWNoKChpdGVtOiBzdHJpbmcpID0+IHtcclxuICAgICAgbGV0IGRhdGFUb0NoZWNrID0gdGhpcy5hbm5hRmlsdGVyU2VydmljZS5nZXRGaWx0ZXJPcHRpb25zRGF0YSh0aGlzLnRhYmxlRGF0YSwgdGhpcy5jbG9uZWRUYWJsZURhdGEsIGl0ZW0pO1xyXG4gICAgICBpZihpdGVtID09IFwicGVyaW9kXCIpe1xyXG4gICAgICAgICAgbGV0IHVuaXFTdGFydERhdGUgPSB1bmlxKGRhdGFUb0NoZWNrLm1hcCgodTogeyBbeDogc3RyaW5nXTogYW55OyB9KSA9PiB1W1wic3RhcnREYXRlXCJdKSk7XHJcbiAgICAgICAgICBsZXQgdW5pcUVuZERhdGUgPSB1bmlxKGRhdGFUb0NoZWNrLm1hcCgodTp7IFt4OiBzdHJpbmddOiBhbnk7IH0pID0+IHVbXCJlbmREYXRlXCJdKSk7XHJcbiAgICAgICAgICBpZih1bmlxU3RhcnREYXRlLmxlbmd0aCA+IDEgfHwgdW5pcUVuZERhdGUubGVuZ3RoID4gMSB8fCB0aGlzLmlzVG9vbHRpcEFjdGl2ZShbaXRlbV0pKXtcclxuICAgICAgICAgICAgZW5hYmxlZEhlYWRlcnMucHVzaChpdGVtKTtcclxuICAgICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgZWxzZXtcclxuICAgICAgICAgIGxldCB2YWx1ZXMgPSBkYXRhVG9DaGVjay5tYXAoKHU6IHsgW3g6IHN0cmluZ106IGFueTsgfSkgPT4gdVtpdGVtXSk7XHJcbiAgICAgICAgLy8gaWYgbGFzdCBhcHBsaWVkIGZpbHRlciBpcyB0aGlzIGhlYWRlciwgcHVzaCBpdCBhbG9zIGFzIGVuYWJsZWRIZWFkZXJcclxuICAgICAgICBsZXQgYWN0aXZlQW5kTGFzdGx5QXBwbGllZEhlYWRlciA9IGZhbHNlO1xyXG4gICAgICAgIGlmKHRoaXMuYW5uYUZpbHRlclNlcnZpY2UuYXBwbGllZEZpbHRlcnNBcnJheS5sZW5ndGggPiAwICYmXHJcbiAgICAgICAgICB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmFwcGxpZWRGaWx0ZXJzQXJyYXlbdGhpcy5hbm5hRmlsdGVyU2VydmljZS5hcHBsaWVkRmlsdGVyc0FycmF5Lmxlbmd0aC0xXSA9PSBpdGVtKXtcclxuICAgICAgICAgICAgYWN0aXZlQW5kTGFzdGx5QXBwbGllZEhlYWRlciA9IHRydWU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgaWYoaGVhZGVyLmZpbHRlciA9PSBcIkNIRUNLQk9YXCIgJiYgKHVuaXEodmFsdWVzKS5maWx0ZXIobiA9PiBuIT1udWxsKS5sZW5ndGggPiAxIHx8IGFjdGl2ZUFuZExhc3RseUFwcGxpZWRIZWFkZXIpKXtcclxuICAgICAgICAgICAgZW5hYmxlZEhlYWRlcnMucHVzaChpdGVtKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZihoZWFkZXIuZmlsdGVyICE9IFwiQ0hFQ0tCT1hcIiAmJiAodW5pcSh2YWx1ZXMpLmZpbHRlcihuID0+IG4hPW51bGwgJiYgbiE9XCItXCIpLmxlbmd0aCA+IDEgfHwgYWN0aXZlQW5kTGFzdGx5QXBwbGllZEhlYWRlcikpe1xyXG4gICAgICAgICAgZW5hYmxlZEhlYWRlcnMucHVzaChpdGVtKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG9wZW5Ub29sdGlwKHRvb2x0aXA6IGFueSxoZWFkZXI6IGFueSwgY29sdW1uSGVhZGVyOiBJSGVhZGVySW5mbykge1xyXG4gICAgdGhpcy5jbG9zZVRvb2x0aXAoKTtcclxuICAgIHRoaXMudG9vbHRpcCA9IHRvb2x0aXA7XHJcbiAgICB0aGlzLnRvb2x0aXAub3BlbigpO1xyXG4gICAgLy9jb252ZXJ0IGtleSBpbnRvIHRoZSBoZWFkZXJcclxuICAgIHRoaXMuZmlsdGVyVGFiT2JqZWN0cyA9IGhlYWRlci5tYXAoKGtleTogc3RyaW5nLGluZGV4OiBudW1iZXIpID0+IHtcclxuICAgICAgbGV0IHZhbHVlID0gdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLmhhcyhrZXkpXHJcbiAgICAgICAgPyB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuZ2V0KGtleSlcclxuICAgICAgICA6IGtleTsgLy9jaGFuZ2UgdG8gZGlzcGxheSBuYW1lXHJcbiAgICAgIHJldHVybiBuZXcgcmFkaW9CdXR0b25Nb2RlbChrZXksIHZhbHVlLCBjb2x1bW5IZWFkZXIuaXNTb3J0UmVxdWlyZWRbaW5kZXhdLCBjb2x1bW5IZWFkZXIuaXNGaWx0ZXJSZXF1aXJlZFtpbmRleF0pO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBjbGVhckNvbHVtbkZpbHRlcigpIHtcclxuICAgIHRoaXMuYW5uYUZpbHRlclNlcnZpY2UuY2xlYXJDb2x1bW5GaWx0ZXIoKTtcclxuICAgIHRoaXMuY2xvc2VUb29sdGlwKCk7XHJcbiAgICB0aGlzLnRhYmxlRGF0YSA9IGNsb25lRGVlcCh0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmZpbHRlckRhdGEodGhpcy5jbG9uZWRUYWJsZURhdGEsIFwiXCIpKTtcclxuICAgIHRoaXMuYW5uYVNvcnRTZXJ2aWNlLm5vU29ydGluZ0FwcGxpZWREYXRhID0gdGhpcy50YWJsZURhdGE7XHJcbiAgICB0aGlzLmNoZWNrSWZTb3J0aW5nSXNBcHBsaWVkKCk7XHJcbiAgICB0aGlzLmZpbHRlckFwcGxpZWRUb1RhYmxlLmVtaXQodGhpcy50YWJsZURhdGEpO1xyXG4gICAgdGhpcy5kaXNhYmxlRW5hYmxlRWFjaENvbHVtblRvb2x0aXBJY29uKCk7XHJcbiAgICB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnVwZGF0ZVN0YXRlT2ZUaGVDdXJyZW50RmlsdGVyVGFiKHRoaXMuYW5uYVNvcnRTZXJ2aWNlLmNvbHVtblNvcnRTdGF0ZSk7XHJcbiAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIHBvcHVsYXRlVG9vbHRpcERhdGFCYXNlZE9uU2VsZWN0ZWRSYWRpbyhhY3RpdmVUYWI6IHJhZGlvQnV0dG9uTW9kZWwsIHJlbG9hZDogYm9vbGVhbikge1xyXG4gICAgbGV0IGhlYWRlciA9IGFjdGl2ZVRhYi5rZXk7XHJcbiAgICB0aGlzLnNlbGVjdGVkTGFiZWwgPSBhY3RpdmVUYWIubGFiZWw7XHJcbiAgICB0aGlzLnNob3dTb3J0Q29tcG9uZW50ID0gZmFsc2U7XHJcbiAgICB0aGlzLnNob3dGaWx0ZXJDb21wb25lbnQgPSBmYWxzZTsgXHJcbiAgICB0aGlzLnNlYXJjaEl0ZW0gPSBudWxsO1xyXG4gICAgXHJcbiAgICBcclxuICAgIHRoaXMuc2hvd1NvcnRDb21wb25lbnQgPSBhY3RpdmVUYWIuaXNTb3J0UmVxdWlyZWQ7XHJcbiAgICB0aGlzLnNob3dGaWx0ZXJDb21wb25lbnQgPSBhY3RpdmVUYWIuaXNGaWx0ZXJSZXF1aXJlZDtcclxuXHJcbiAgICB0aGlzLnNob3dTb3J0Q29tcG9uZW50ID0gYWN0aXZlVGFiLmlzU29ydFJlcXVpcmVkO1xyXG4gICAgdGhpcy5zaG93RmlsdGVyQ29tcG9uZW50ID0gYWN0aXZlVGFiLmlzRmlsdGVyUmVxdWlyZWQ7XHJcbiAgICB0aGlzLnRlbXBTb3J0T3JkZXIgPSBudWxsO1xyXG4gICAgdGhpcy5pc0ZpbHRlckNoYW5nZWQgPSBmYWxzZTtcclxuICAgIHRoaXMuaXNTb3J0Q2hhbmdlZCA9IGZhbHNlO1xyXG4gICAgXHJcbiAgICB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnNlbGVjdGVkUmFkaW8gPSBoZWFkZXI7XHJcbiAgICB0aGlzLmRpc2FibGVBY3RpdmVGaWx0ZXJDbGVhckJ1dHRvbigpO1xyXG4gICAgaWYocmVsb2FkKXtcclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZXRGaWx0ZXJEYXRhQW5kQ2FsbENyZWF0ZVRvb2x0aXBkYXRhRnVuYyhhY3RpdmVUYWIsIGhlYWRlcik7XHJcbiAgICAgIH0sIDEwMCk7ICBcclxuICAgIH1lbHNle1xyXG4gICAgICB0aGlzLnNldEZpbHRlckRhdGFBbmRDYWxsQ3JlYXRlVG9vbHRpcGRhdGFGdW5jKGFjdGl2ZVRhYiwgaGVhZGVyKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNldEZpbHRlckRhdGFBbmRDYWxsQ3JlYXRlVG9vbHRpcGRhdGFGdW5jKGFjdGl2ZVRhYjpyYWRpb0J1dHRvbk1vZGVsLCBoZWFkZXI6c3RyaW5nKXtcclxuICAgIHRoaXMuc2hvd1NvcnRDb21wb25lbnQgPSBhY3RpdmVUYWIuaXNTb3J0UmVxdWlyZWQ7XHJcbiAgICB0aGlzLnNob3dGaWx0ZXJDb21wb25lbnQgPSBhY3RpdmVUYWIuaXNGaWx0ZXJSZXF1aXJlZDtcclxuICAgIHRoaXMuY3JlYXRlRmlsdGVyVG9vbHRpcERhdGEoaGVhZGVyKTtcclxuICB9XHJcblxyXG4gIGNyZWF0ZUZpbHRlclRvb2x0aXBEYXRhKGhlYWRlcjogc3RyaW5nKXtcclxuICAgIGlmKHRoaXMuc2hvd0ZpbHRlckNvbXBvbmVudCl7XHJcbiAgICAgIHRoaXMuZGlzYWJsZVNsaWRlckFwcGx5QnV0dG9uID0gdGhpcy5kaXNhYmxlQ2hlY2tib3hBcHBseSA9IHRydWU7XHJcbiAgICAgIHRoaXMuZGlzYWJsZUNhbGVuZGFyQXBwbHlCdG4gPSB0aGlzLmRpc2FibGVUaW1lRmlsdGVyQXBwbHlCdG4gPSB0cnVlO1xyXG4gICAgICBcclxuICAgICAgaWYgKHRoaXMuYW5uYUZpbHRlclNlcnZpY2UuY2FsZW5kYXJTZXQuaGFzKGhlYWRlcikpIHtcclxuICAgICAgICB0aGlzLmdldENhbGVuZGFyRGF0YSgpO1xyXG4gICAgICB9IGVsc2UgaWYgKHRoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2xpZGVyU2V0LmhhcyhoZWFkZXIpKSB7XHJcbiAgICAgICAgdGhpcy5nZXRTbGlkZXJEYXRhKGhlYWRlcik7XHJcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5hbm5hRmlsdGVyU2VydmljZS50aW1lU2V0LmhhcyhoZWFkZXIpKSB7XHJcbiAgICAgICAgdGhpcy5nZXRUaW1lRmlsdGVyRGF0YShoZWFkZXIpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuZ2V0Q2hlY2tib3hEYXRhKGhlYWRlcik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2UgaWYodGhpcy5zaG93U29ydENvbXBvbmVudCl7XHJcbiAgICAgIHRoaXMuZGlzYWJsZVNsaWRlckFwcGx5QnV0dG9uID0gdGhpcy5kaXNhYmxlQ2hlY2tib3hBcHBseSA9IHRydWU7XHJcbiAgICAgIHRoaXMuZGlzYWJsZUNhbGVuZGFyQXBwbHlCdG4gPSB0aGlzLmRpc2FibGVUaW1lRmlsdGVyQXBwbHlCdG4gPSB0cnVlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZGlzYWJsZUFjdGl2ZUZpbHRlckNsZWFyQnV0dG9uKCl7XHJcbiAgICBsZXQgc2VsZWN0ZWRGaWx0ZXJTZXQgPSBuZXcgU2V0KHRoaXMuYW5uYUZpbHRlclNlcnZpY2UuYXBwbGllZEZpbHRlcnNBcnJheSk7XHJcblxyXG4gICAgbGV0IGN1cnJlbnRDb2x1bW5Tb3J0RmlsdGVyID0gdGhpcy5nZXRDb2x1bW5Tb3J0U3RhdGVGb3JTZWxlY3RlZFJhZGlvKCk7XHJcbiAgICBsZXQgaXNTb3J0UHJlc2VudCA9ICh0aGlzLmFubmFTb3J0U2VydmljZS5jb2x1bW5Tb3J0U3RhdGUgJiYgdGhpcy5hbm5hU29ydFNlcnZpY2UuY29sdW1uU29ydFN0YXRlLnNpemUgPiAwICYmIGN1cnJlbnRDb2x1bW5Tb3J0RmlsdGVyICE9IFNvcnRUeXBlRW51bS5ERUZBVUxUKTtcclxuXHJcbiAgICB0aGlzLmRpc2FibGVDb2x1bW5DbGVhckFsbEJ0biA9IHNlbGVjdGVkRmlsdGVyU2V0Lmhhcyh0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnNlbGVjdGVkUmFkaW8pIHx8IGlzU29ydFByZXNlbnQgPyBmYWxzZSA6IHRydWU7XHJcbiAgfVxyXG5cclxuICBnZXRTbGlkZXJEYXRhKGhlYWRlcjogc3RyaW5nKSB7XHJcbiAgICB0aGlzLnNob3dFbXB0eVNwYWNlRm9yU2xpZGVyID0gdHJ1ZTtcclxuXHJcbiAgICB0aGlzLmNyZWF0ZU9wdGlvbnNGb3JTbGlkZXIoaGVhZGVyKTtcclxuICAgIHRoaXMuc2V0U2VsZWN0ZWRSYW5nZUZvclNsaWRlcihoZWFkZXIpO1xyXG4gICAgXHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5zaG93RW1wdHlTcGFjZUZvclNsaWRlciA9IGZhbHNlO1xyXG4gICAgfSwgMCk7XHJcbiAgfVxyXG5cclxuICBjcmVhdGVPcHRpb25zRm9yU2xpZGVyKGhlYWRlcjogc3RyaW5nKXtcclxuXHJcbiAgICBsZXQgdHJhbnNsYXRlRnVuYztcclxuICAgIHRoaXMuaW5jb3JyZWN0U2xpZGVySW5wdXQgPSBmYWxzZTtcclxuICAgIHRoaXMuc2xpZGVyRW50ZXJlZE1heFZhbHVlID0gdGhpcy5zbGlkZXJFbnRlcmVkTWluVmFsdWUgPSBudWxsO1xyXG4gICAgdGhpcy5zaG93U2xpZGVyTWluVmFsdWVFcnJvciA9IHRoaXMuc2hvd1NsaWRlck1heFZhbHVlRXJyb3IgPSB0aGlzLmlzTWluVGV4dEJveEVtcHR5ID0gdGhpcy5pc01heFRleHRCb3hFbXB0eSA9IGZhbHNlO1xyXG5cclxuICAgIGlmICh0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnNsaWRlckN1cnJlbmN5U2V0LmhhcyhoZWFkZXIpKSB7XHJcbiAgICAgIHRyYW5zbGF0ZUZ1bmMgPSBcImN1cnJlbmN5XCI7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmKGhlYWRlciA9PSBcInBvc3RlZEF1ZFBlcmNlbnRcIil7XHJcbiAgICAgIHRyYW5zbGF0ZUZ1bmMgPSBcInBlcmNlbnRcIjtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0cmFuc2xhdGVGdW5jID0gXCJub3JtYWxcIjtcclxuICAgIH1cclxuXHJcbiAgICBsZXQgb3B0aW9uc0RhdGEgPSB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmdldEZpbHRlck9wdGlvbnNEYXRhKHRoaXMudGFibGVEYXRhLCB0aGlzLmNsb25lZFRhYmxlRGF0YSk7XHJcbiAgICBsZXQgbWluVmFsdWUgPSB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnJldHVybk1heEFuZE1pblZhbHVlKG9wdGlvbnNEYXRhLCBoZWFkZXIsIHRydWUpO1xyXG4gICAgbGV0IG1heFZhbHVlID0gdGhpcy5hbm5hRmlsdGVyU2VydmljZS5yZXR1cm5NYXhBbmRNaW5WYWx1ZShvcHRpb25zRGF0YSwgaGVhZGVyLCBmYWxzZSk7XHJcblxyXG4gICAgbGV0IG9iaiA9IHRoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2V0T3B0aW9uVmFsdWVzKG1pblZhbHVlLG1heFZhbHVlKTtcclxuICAgIFxyXG4gICAgaWYgKHRyYW5zbGF0ZUZ1bmMgPT09IFwibm9ybWFsXCIpIHtcclxuICAgICAgICBvYmoudHJhbnNsYXRlID0gdGhpcy5hbm5hRmlsdGVyU2VydmljZS5ub3JtYWxUcmFuc2xhdGVGdW5jdGlvbjtcclxuICAgIH0gZWxzZSBpZiAodHJhbnNsYXRlRnVuYyA9PT0gXCJwZXJjZW50XCIpIHtcclxuICAgICAgICBvYmoudHJhbnNsYXRlID0gdGhpcy5hbm5hRmlsdGVyU2VydmljZS5wZXJjZW50VHJhbnNsYXRlRnVuY3Rpb247XHJcbiAgICB9IGVsc2UgaWYgKHRyYW5zbGF0ZUZ1bmMgPT09IFwiY3VycmVuY3lcIikge1xyXG4gICAgICAgIG9iai50cmFuc2xhdGUgPSB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmN1cnJlbmN5VHJhbnNsYXRlRnVuY3Rpb247XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5vcHRpb25zID0gb2JqO1xyXG4gICAgdGhpcy5vcHRpb25zLnN0ZXAgPSAxO1xyXG4gICAgdGhpcy5zbGlkZXJGaWx0ZXJUZXh0Qm94U3RlcCA9IFwiMVwiO1xyXG4gICAgaWYgKGhlYWRlciAhPT0gXCJXZWVrTnVtYmVyXCIpIHtcclxuICAgICAgdGhpcy5vcHRpb25zLnN0ZXAgPSAwLjAxO1xyXG4gICAgICB0aGlzLnNsaWRlckZpbHRlclRleHRCb3hTdGVwID0gXCIwLjAxXCI7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZXRTZWxlY3RlZFJhbmdlRm9yU2xpZGVyKGhlYWRlcjogc3RyaW5nKXtcclxuICAgIGlmKHRoaXMuYW5uYUZpbHRlclNlcnZpY2UudG9vbHRpcFNlbGVjdGVkTWFwLmhhcyhoZWFkZXIpKXtcclxuICAgICAgbGV0IHNlbGVjdGVkT2JqID0gdGhpcy5hbm5hRmlsdGVyU2VydmljZS50b29sdGlwU2VsZWN0ZWRNYXAuZ2V0KGhlYWRlcik7XHJcbiAgICAgIHRoaXMuc2xpZGVyTWluVmFsdWUgPSBzZWxlY3RlZE9iai5taW4gPCB0aGlzLm9wdGlvbnMuZmxvb3IgPyB0aGlzLm9wdGlvbnMuZmxvb3IgOiBzZWxlY3RlZE9iai5taW47XHJcbiAgICAgIHRoaXMuc2xpZGVyTWF4VmFsdWUgPSBzZWxlY3RlZE9iai5tYXggPCB0aGlzLm9wdGlvbnMuY2VpbCA/IHNlbGVjdGVkT2JqLm1heCA6IHRoaXMub3B0aW9ucy5jZWlsO1xyXG4gICAgICB0aGlzLnNsaWRlckVudGVyZWRNaW5WYWx1ZSA9IHRoaXMuc2xpZGVyTWluVmFsdWU7XHJcbiAgICAgIHRoaXMuc2xpZGVyRW50ZXJlZE1heFZhbHVlID0gdGhpcy5zbGlkZXJNYXhWYWx1ZTsgICBcclxuICAgIH1cclxuICAgIGVsc2V7XHJcbiAgICAgICAgdGhpcy5zbGlkZXJNaW5WYWx1ZSA9IHRoaXMub3B0aW9ucy5mbG9vcjtcclxuICAgICAgICB0aGlzLnNsaWRlck1heFZhbHVlID0gdGhpcy5vcHRpb25zLmNlaWw7XHJcbiAgICB9XHJcbiAgICB0aGlzLnNsaWRlckVudGVyZWRNaW5WYWx1ZSA9IHRoaXMuc2xpZGVyTWluVmFsdWU7XHJcbiAgICB0aGlzLnNsaWRlckVudGVyZWRNYXhWYWx1ZSA9IHRoaXMuc2xpZGVyTWF4VmFsdWU7XHJcbiAgfVxyXG5cclxuXHJcbiAgZ2V0Q2hlY2tib3hEYXRhKGhlYWRlcjogc3RyaW5nKSB7XHJcblxyXG4gICAgbGV0IHRvb2x0aXBPcHRpb25zID0gdGhpcy5jcmVhdGVMaXN0Rm9yQ2hlY2tib3hGaWx0ZXIoaGVhZGVyKTsgICAgXHJcbiAgICBsZXQgc2VsZWN0ZWRJdGVtcyA9IHNvcnRCeSh0b29sdGlwT3B0aW9ucy5maWx0ZXIoaXRlbSA9PiBpdGVtLmlzU2VsZWN0ZWQpLFwidmFsdWVcIik7XHJcbiAgICBsZXQgdW5zZWxlY3RlZEl0ZW1zID0gc29ydEJ5KHRvb2x0aXBPcHRpb25zLmZpbHRlcihpdGVtID0+ICFpdGVtLmlzU2VsZWN0ZWQpLFwidmFsdWVcIik7XHJcbiAgICAgICAgXHJcbiAgICB0aGlzLmNsb25lZFRvb2x0aXBPcHRpb25zID0gWy4uLnNlbGVjdGVkSXRlbXMsIC4uLnVuc2VsZWN0ZWRJdGVtc107XHJcblxyXG4gICAgdGhpcy50b29sdGlwT3B0aW9ucyA9IGNsb25lRGVlcCh0aGlzLmNsb25lZFRvb2x0aXBPcHRpb25zKTtcclxuICAgIFxyXG4gICAgbGV0IGRhdGFMZW5ndGggPSB0aGlzLnRvb2x0aXBPcHRpb25zLmxlbmd0aDtcclxuICAgIHRoaXMuaGVpZ2h0T2ZDaGVja2JveFRvb2x0aXBGaWx0ZXIgPSBkYXRhTGVuZ3RoID4gNiA/IDIwMCA6ICgoMjYuMDMgKiBkYXRhTGVuZ3RoKSArICh0aGlzLm1hcmdpbiAqIGRhdGFMZW5ndGgpICsgdGhpcy5tYXJnaW4pO1xyXG4gICAgXHJcbiAgICB0aGlzLmRpc2FibGVTZWxlY3RBbGwgPSB1bnNlbGVjdGVkSXRlbXMubGVuZ3RoID09IDA7XHJcbiAgICB0aGlzLmRpc2FibGVDbGVhckFsbCA9IHNlbGVjdGVkSXRlbXMubGVuZ3RoID09IDA7XHJcbiAgICB0aGlzLnNlbGVjdGVkQ2hlY2tib3hPcHRpb25zQ291bnQgPSBzZWxlY3RlZEl0ZW1zLmxlbmd0aDtcclxuICB9XHJcblxyXG4gIGNyZWF0ZUxpc3RGb3JDaGVja2JveEZpbHRlcihoZWFkZXI6IHN0cmluZyl7XHJcbiAgICBsZXQgb3B0aW9uRGF0YSA9IHRoaXMuYW5uYUZpbHRlclNlcnZpY2UuZ2V0RmlsdGVyT3B0aW9uc0RhdGEodGhpcy50YWJsZURhdGEsIHRoaXMuY2xvbmVkVGFibGVEYXRhKTtcclxuICAgIGxldCB1bmlxT3B0aW9uRGF0YSA9IHVuaXEob3B0aW9uRGF0YS5tYXAoaXRlbSA9PiBpdGVtW2hlYWRlcl0pKTtcclxuICAgIGxldCB0b29sdGlwT3B0aW9ucyA9IHVuaXFPcHRpb25EYXRhLm1hcCgoaXRlbSxpbmRleCkgPT4gbmV3IFRvb2x0aXBNb2RlbChpdGVtLGluZGV4KzEpKTtcclxuXHJcbiAgICB0aGlzLnNlbGVjdFVuc2VsZWN0TGlzdENoZWNrYm94KHRvb2x0aXBPcHRpb25zLGhlYWRlcik7XHJcbiAgICBsZXQgaW5kZXggPSB0b29sdGlwT3B0aW9ucy5maW5kSW5kZXgoaXRlbSA9PiBpdGVtLnZhbHVlID09IG51bGwpO1xyXG4gICAgXHJcbiAgICBpZihpbmRleCAhPSAtMSl7XHJcbiAgICAgIHRvb2x0aXBPcHRpb25zW2luZGV4XS5sYWJlbCA9IFwiLVwiO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB0b29sdGlwT3B0aW9ucztcclxuICB9XHJcblxyXG4gIHNlbGVjdFVuc2VsZWN0TGlzdENoZWNrYm94KHRvb2x0aXBPcHRpb25zOiBUb29sdGlwTW9kZWxbXSxoZWFkZXI6IHN0cmluZyl7XHJcbiAgICBcclxuICAgIGlmKHRoaXMuYW5uYUZpbHRlclNlcnZpY2UudG9vbHRpcFNlbGVjdGVkTWFwLmhhcyhoZWFkZXIpKXtcclxuICAgICAgbGV0IHNlbGVjdGVkVmFsdWVTZXQgPSBuZXcgU2V0KHRoaXMuYW5uYUZpbHRlclNlcnZpY2UudG9vbHRpcFNlbGVjdGVkTWFwLmdldChoZWFkZXIpKTtcclxuICAgICAgdG9vbHRpcE9wdGlvbnMuZm9yRWFjaChpdGVtID0+IGl0ZW0uaXNTZWxlY3RlZCA9IHNlbGVjdGVkVmFsdWVTZXQuaGFzKGl0ZW0udmFsdWUpID8gdHJ1ZSA6IGZhbHNlKTtcclxuICAgIH1cclxuICAgIGVsc2V7XHJcbiAgICAgIHRvb2x0aXBPcHRpb25zLmZvckVhY2goaXRlbSA9PiBpdGVtLmlzU2VsZWN0ZWQgPSB0cnVlKTtcclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxuICBnZXRDYWxlbmRhckRhdGEoKSB7XHJcbiAgICBjb25zdCBwYXJzaW5nRm9ybWF0ID0gXCJNTS9ERC9ZWVlZXCI7XHJcbiAgICBsZXQgbWluTWF4RGF0ZSA9IHRoaXMuY3JlYXRlUmFuZ2VGb3JUaGVEYXRlRmlsdGVyKCk7XHJcbiAgICB0aGlzLnNlbGVjdFJhbmdlRm9yVGhlRGF0ZUZpbHRlcihtaW5NYXhEYXRlLCBwYXJzaW5nRm9ybWF0KTtcclxuICB9XHJcblxyXG4gIGNyZWF0ZVJhbmdlRm9yVGhlRGF0ZUZpbHRlcigpe1xyXG4gICAgXHJcbiAgICBsZXQgb3B0aW9uRGF0YSA9IHRoaXMuYW5uYUZpbHRlclNlcnZpY2UuZ2V0RmlsdGVyT3B0aW9uc0RhdGEodGhpcy50YWJsZURhdGEsIHRoaXMuY2xvbmVkVGFibGVEYXRhKTtcclxuICAgIFxyXG4gICAgbGV0IG1pbk1heERhdGU7XHJcbiAgICAvL1doZW4geW91IHdhbnQgdG8gdXNlIHN0YXJ0RGF0ZSBhbmQgZW5kRGF0ZSBjb21iaW5lZCBhcyBzaW5nbGUgY29sdW1uIHRoZW4gdXNlIFBlcmlvZC5cclxuICAgIGlmKHRoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpbyA9PSBcInBlcmlvZFwiKXtcclxuICAgICAgbWluTWF4RGF0ZSA9IHRoaXMuY3JlYXRlU3RhcnRFbmREYXRlUmFuZ2Uob3B0aW9uRGF0YSk7XHJcbiAgICB9XHJcbiAgICBlbHNle1xyXG4gICAgICBtaW5NYXhEYXRlID0gdGhpcy5hbm5hRmlsdGVyU2VydmljZS5yZXR1cm5NaW5BbmRNYXhEYXRlKG9wdGlvbkRhdGEsIHRoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpbyk7ICBcclxuICAgIH1cclxuICAgIFxyXG4gICAgcmV0dXJuIG1pbk1heERhdGU7XHJcblxyXG4gIH1cclxuXHJcbiAgY3JlYXRlU3RhcnRFbmREYXRlUmFuZ2Uob3B0aW9uRGF0YTogYW55W10pe1xyXG4gICAgbGV0IG1pblN0YXJ0RGF0ZSA9IHRoaXMuYW5uYUZpbHRlclNlcnZpY2UucmV0dXJuTWluQW5kTWF4RGF0ZShvcHRpb25EYXRhLCBcInN0YXJ0RGF0ZVwiKTtcclxuICAgIGxldCBtYXhFbmREYXRlID0gdGhpcy5hbm5hRmlsdGVyU2VydmljZS5yZXR1cm5NaW5BbmRNYXhEYXRlKG9wdGlvbkRhdGEsXCJlbmREYXRlXCIpO1xyXG4gICAgcmV0dXJuIFttaW5TdGFydERhdGVbMF0sbWF4RW5kRGF0ZVsxXV07XHJcbiAgfVxyXG5cclxuICBzZWxlY3RSYW5nZUZvclRoZURhdGVGaWx0ZXIobWluTWF4RGF0ZTogYW55W10sIHBhcnNpbmdGb3JtYXQ6IHN0cmluZyl7XHJcbiAgICB0aGlzLmNhbGVuZGFyTWluRW5hYmxlZERhdGUgPSB0aGlzLmFubmFEYXRlVGltZUZvcm1hdFNlcnZpY2UuY29udmVydFRvTmdiRGF0ZShtaW5NYXhEYXRlWzBdLHBhcnNpbmdGb3JtYXQpO1xyXG4gICAgdGhpcy5jYWxlbmRhck1heEVuYWJsZWREYXRlID0gdGhpcy5hbm5hRGF0ZVRpbWVGb3JtYXRTZXJ2aWNlLmNvbnZlcnRUb05nYkRhdGUobWluTWF4RGF0ZVsxXSxwYXJzaW5nRm9ybWF0KTtcclxuICAgIFxyXG4gICAgXHJcbiAgICBpZih0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnRvb2x0aXBTZWxlY3RlZE1hcC5oYXModGhpcy5hbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvKSl7XHJcbiAgICAgICAgbGV0IHNlbGVjdGVkRGF0ZU9iaiA9IHRoaXMuYW5uYUZpbHRlclNlcnZpY2UudG9vbHRpcFNlbGVjdGVkTWFwLmdldCh0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnNlbGVjdGVkUmFkaW8pO1xyXG4gICAgICAgIFxyXG4gICAgICAgIGlmKHNlbGVjdGVkRGF0ZU9iai5mcm9tRGF0ZS5pc0FmdGVyKG1pbk1heERhdGVbMF0pKXtcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZE1pbkRhdGUgPSB0aGlzLmFubmFEYXRlVGltZUZvcm1hdFNlcnZpY2UuY29udmVydFRvTmdiRGF0ZShzZWxlY3RlZERhdGVPYmouZnJvbURhdGUscGFyc2luZ0Zvcm1hdCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2V7XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRNaW5EYXRlID0gdGhpcy5hbm5hRGF0ZVRpbWVGb3JtYXRTZXJ2aWNlLmNvbnZlcnRUb05nYkRhdGUobWluTWF4RGF0ZVswXSxwYXJzaW5nRm9ybWF0KTtcclxuICAgICAgICB9IFxyXG5cclxuICAgICAgICBpZihzZWxlY3RlZERhdGVPYmoudG9EYXRlLmlzQWZ0ZXIobWluTWF4RGF0ZVsxXSkpe1xyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkTWF4RGF0ZSA9IHRoaXMuYW5uYURhdGVUaW1lRm9ybWF0U2VydmljZS5jb252ZXJ0VG9OZ2JEYXRlKG1pbk1heERhdGVbMV0scGFyc2luZ0Zvcm1hdCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2V7XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRNYXhEYXRlID0gdGhpcy5hbm5hRGF0ZVRpbWVGb3JtYXRTZXJ2aWNlLmNvbnZlcnRUb05nYkRhdGUoc2VsZWN0ZWREYXRlT2JqLnRvRGF0ZSxwYXJzaW5nRm9ybWF0KTtcclxuICAgICAgICB9XHJcblxyXG4gICAgfVxyXG4gICAgZWxzZXtcclxuICAgICAgIHRoaXMuc2VsZWN0ZWRNaW5EYXRlID0gY2xvbmVEZWVwKHRoaXMuY2FsZW5kYXJNaW5FbmFibGVkRGF0ZSk7XHJcbiAgICAgICB0aGlzLnNlbGVjdGVkTWF4RGF0ZSA9IGNsb25lRGVlcCh0aGlzLmNhbGVuZGFyTWF4RW5hYmxlZERhdGUpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuY2FsZW5kYXJTZWxlY3Rpb24uZnJvbURhdGUgPSBjbG9uZURlZXAodGhpcy5zZWxlY3RlZE1pbkRhdGUpO1xyXG4gICAgdGhpcy5jYWxlbmRhclNlbGVjdGlvbi50b0RhdGUgPSBjbG9uZURlZXAodGhpcy5zZWxlY3RlZE1heERhdGUpO1xyXG5cclxuICAgIFxyXG4gIH1cclxuXHJcbiAgZ2V0VGltZUZpbHRlckRhdGEoaGVhZGVyOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIFxyXG4gICAgdGhpcy5zdGFydFRpbWVIb3VyRXJyID0gdGhpcy5zdGFydFRpbWVNaW5FcnIgPSB0aGlzLmVuZFRpbWVIb3VyRXJyID0gdGhpcy5lbmRUaW1lTWluRXJyID0gZmFsc2U7ICAgIFxyXG5cclxuICAgIGlmICh0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnRvb2x0aXBTZWxlY3RlZE1hcC5oYXMoaGVhZGVyKSkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkRnJvbVRpbWUgPSB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnRvb2x0aXBTZWxlY3RlZE1hcC5nZXQoaGVhZGVyKS5mcm9tVGltZTtcclxuICAgICAgdGhpcy5zZWxlY3RlZFRvVGltZSA9IHRoaXMuYW5uYUZpbHRlclNlcnZpY2UudG9vbHRpcFNlbGVjdGVkTWFwLmdldChoZWFkZXIpLnRvVGltZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc2V0SW5pdGlhbFZhbHVlTWFwRm9yVGltZUZpbHRlcihoZWFkZXIpO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkRnJvbVRpbWUgPSB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmluaXRpYWxWYWx1ZU1hcC5nZXQoaGVhZGVyKS5mcm9tVGltZTtcclxuICAgICAgdGhpcy5zZWxlY3RlZFRvVGltZSA9IHRoaXMuYW5uYUZpbHRlclNlcnZpY2UuaW5pdGlhbFZhbHVlTWFwLmdldChoZWFkZXIpLnRvVGltZTtcclxuICAgIH1cclxuXHJcbiAgICBpZih0aGlzLnNlbGVjdGVkRnJvbVRpbWUgIT0gdW5kZWZpbmVkIHx8IHRoaXMuc2VsZWN0ZWRUb1RpbWUgIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRGcm9tVGltZSA9IEFubmFEYXRlVGltZUZvcm1hdFNlcnZpY2UuZm9ybWF0VG9Ud2VsdmVIcnModGhpcy5zZWxlY3RlZEZyb21UaW1lLCB0cnVlKTtcclxuICAgICAgdGhpcy5zZWxlY3RlZFRvVGltZSA9IEFubmFEYXRlVGltZUZvcm1hdFNlcnZpY2UuZm9ybWF0VG9Ud2VsdmVIcnModGhpcy5zZWxlY3RlZFRvVGltZSwgdHJ1ZSk7XHJcblxyXG4gICAgICB0aGlzLmNsb25lZFNlbGVjdGVkRnJvbVRpbWUgPSBjbG9uZURlZXAodGhpcy5zZWxlY3RlZEZyb21UaW1lKTtcclxuICAgICAgdGhpcy5jbG9uZWRTZWxlY3RlZFRvVGltZSA9IGNsb25lRGVlcCh0aGlzLnNlbGVjdGVkVG9UaW1lKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkRnJvbVRpbWUgPSBbXCItXCIsIFwiLVwiLCBcIi1cIl07XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRUb1RpbWUgPSBbXCItXCIsIFwiLVwiLCBcIi1cIl07XHJcbiAgICB9XHJcblxyXG4gICAgIGlmKHRoaXMuZ3RHZW5lcmFsQ29uZmlnLmNvbXBvbmVudCA9PT0gXCJSQVRJTkdcIil7XHJcbiAgICAgIHRoaXMuc2V0VGltZUZpbHRlckRhdGFGb3JSYXRpbmdQYWdlQ29tcG9uZW50KGhlYWRlcik7XHJcbiAgICB9ZWxzZXtcclxuICAgICAgdGhpcy5zZXRUaW1lRmlsdGVyRGF0YUZvckNvbXBvbmVudHNPdGhlclRoYW5SYXRpbmdzUGFnZShoZWFkZXIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy9OZWVkIHRvIGNoYW5nZSB0aGlzIG1ldGhvZFxyXG4gIHNldFRpbWVGaWx0ZXJEYXRhRm9yQ29tcG9uZW50c090aGVyVGhhblJhdGluZ3NQYWdlKGhlYWRlcjogc3RyaW5nKXtcclxuICAgIHRoaXMuc2hvd011bHRpVGltZUNoZWNrYm94ID0gZmFsc2U7XHJcbiAgICB0aGlzLnNob3daZXJvVGltZUNoZWNrYm94ID0gZmFsc2U7XHJcbiAgICB0aGlzLnNob3dFbnRlclRpbWVDaGVja2JveCA9IGZhbHNlO1xyXG4gICAgdGhpcy5tdWx0aVRpbWVDaGVja2JveENoZWNrZWQgPSBmYWxzZTtcclxuICAgIHRoaXMuemVyb1RpbWVDaGVja2JveENoZWNrZWQgPSBmYWxzZTtcclxuICAgIHRoaXMuZW50ZXJUaW1lQ2hlY2tib3hDaGVja2VkID0gZmFsc2U7XHJcblxyXG5cclxuICAgIGxldCBvcHRpb25zRGF0YSA9IHRoaXMuYW5uYUZpbHRlclNlcnZpY2UuZ2V0RmlsdGVyT3B0aW9uc0RhdGEodGhpcy50YWJsZURhdGEsIHRoaXMuY2xvbmVkVGFibGVEYXRhKTtcclxuICAgIGxldCBzZWxlY3RlZE9iajtcclxuXHJcbiAgICBpZih0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnRvb2x0aXBTZWxlY3RlZE1hcC5oYXMoaGVhZGVyKSl7XHJcbiAgICAgIHNlbGVjdGVkT2JqID0gdGhpcy5hbm5hRmlsdGVyU2VydmljZS50b29sdGlwU2VsZWN0ZWRNYXAuZ2V0KGhlYWRlcik7XHJcbiAgICB9XHJcbiAgICBlbHNle1xyXG4gICAgICBzZWxlY3RlZE9iaiA9IHRoaXMuYW5uYUZpbHRlclNlcnZpY2UuaW5pdGlhbFZhbHVlTWFwLmdldChoZWFkZXIpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmKG9wdGlvbnNEYXRhLmZpbmRJbmRleChvYmogPT4gb2JqW2hlYWRlcl0gPT0gXCIwXCIpICE9IC0xKSB7XHJcbiAgICAgIHRoaXMuc2hvd1plcm9UaW1lQ2hlY2tib3ggPSB0cnVlO1xyXG4gICAgICB0aGlzLnplcm9UaW1lQ2hlY2tib3hDaGVja2VkID0gc2VsZWN0ZWRPYmouaW5jbHVkZVplcm9UaW1lO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICBcclxuICAgIGlmKG9wdGlvbnNEYXRhLmZpbmRJbmRleChvYmogPT4gb2JqW2hlYWRlcl0gPT0gXCI8bXVsdGk+XCIpICE9IC0xKSB7XHJcbiAgICAgIHRoaXMuc2hvd011bHRpVGltZUNoZWNrYm94ID0gdHJ1ZTtcclxuICAgICAgdGhpcy5tdWx0aVRpbWVDaGVja2JveENoZWNrZWQgPSBzZWxlY3RlZE9iai5pbmNsdWRlTXVsdGk7XHJcbiAgICB9XHJcbiAgICBcclxuXHJcbiAgICBpZih0aGlzLnNob3daZXJvVGltZUNoZWNrYm94IHx8IHRoaXMuc2hvd011bHRpVGltZUNoZWNrYm94KSB7XHJcbiAgICAgIHRoaXMuc2hvd0VudGVyVGltZUNoZWNrYm94ID0gdHJ1ZTtcclxuICAgIH1cclxuICAgIFxyXG4gICAgaWYob3B0aW9uc0RhdGEuZmluZEluZGV4KG9iaiA9PiBvYmpbaGVhZGVyXSAhPSBcIjxtdWx0aT5cIiAmJiBvYmpbaGVhZGVyXSAhPSBcIjBcIikgIT0gLTEpIHtcclxuICAgICAgdGhpcy5lbnRlclRpbWVDaGVja2JveENoZWNrZWQgPSBzZWxlY3RlZE9iai5pbmNsdWRlVGltZVJhbmdlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0VGltZUZpbHRlckRhdGFGb3JSYXRpbmdQYWdlQ29tcG9uZW50KGhlYWRlcjogc3RyaW5nKXtcclxuICAgICAgdGhpcy5zaG93TXVsdGlUaW1lQ2hlY2tib3ggPSBmYWxzZTtcclxuICAgICAgdGhpcy5zaG93WmVyb1RpbWVDaGVja2JveCA9IGZhbHNlO1xyXG4gICAgICB0aGlzLnNob3dFbnRlclRpbWVDaGVja2JveCA9IGZhbHNlO1xyXG4gICAgICB0aGlzLm11bHRpVGltZUNoZWNrYm94Q2hlY2tlZCA9IGZhbHNlO1xyXG4gICAgICB0aGlzLnplcm9UaW1lQ2hlY2tib3hDaGVja2VkID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuZW50ZXJUaW1lQ2hlY2tib3hDaGVja2VkID0gZmFsc2U7XHJcblxyXG4gICAgICBsZXQgb3B0aW9uc0RhdGEgPSB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmdldEZpbHRlck9wdGlvbnNEYXRhKHRoaXMudGFibGVEYXRhLCB0aGlzLmNsb25lZFRhYmxlRGF0YSk7XHJcbiAgICAgIGxldCBzZWxlY3RlZE9iajtcclxuXHJcbiAgICAgIGlmKHRoaXMuYW5uYUZpbHRlclNlcnZpY2UudG9vbHRpcFNlbGVjdGVkTWFwLmhhcyhoZWFkZXIpKXtcclxuICAgICAgICBzZWxlY3RlZE9iaiA9IHRoaXMuYW5uYUZpbHRlclNlcnZpY2UudG9vbHRpcFNlbGVjdGVkTWFwLmdldChoZWFkZXIpO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2V7XHJcbiAgICAgICAgc2VsZWN0ZWRPYmogPSB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmluaXRpYWxWYWx1ZU1hcC5nZXQoaGVhZGVyKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYob3B0aW9uc0RhdGEuZmluZEluZGV4KG9iaiA9PiBvYmpbaGVhZGVyXVswXSA9PSBcIjBcIikgIT0gLTEpIHtcclxuICAgICAgICB0aGlzLnNob3daZXJvVGltZUNoZWNrYm94ID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnplcm9UaW1lQ2hlY2tib3hDaGVja2VkID0gc2VsZWN0ZWRPYmouaW5jbHVkZVplcm87XHJcbiAgICAgIH1cclxuICAgICAgXHJcbiAgICAgIFxyXG4gICAgICBpZihvcHRpb25zRGF0YS5maW5kSW5kZXgob2JqID0+IG9ialtoZWFkZXJdWzBdID09IFwiPG11bHRpPlwiKSAhPSAtMSkge1xyXG4gICAgICAgIHRoaXMuc2hvd011bHRpVGltZUNoZWNrYm94ID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLm11bHRpVGltZUNoZWNrYm94Q2hlY2tlZCA9IHNlbGVjdGVkT2JqLmluY2x1ZGVNdWx0aTtcclxuICAgICAgfVxyXG4gICAgICBcclxuXHJcbiAgICAgIGlmKHRoaXMuc2hvd1plcm9UaW1lQ2hlY2tib3ggfHwgdGhpcy5zaG93TXVsdGlUaW1lQ2hlY2tib3gpIHtcclxuICAgICAgICB0aGlzLnNob3dFbnRlclRpbWVDaGVja2JveCA9IHRydWU7XHJcbiAgICAgIH1cclxuICAgICAgXHJcbiAgICAgIGlmKG9wdGlvbnNEYXRhLmZpbmRJbmRleChvYmogPT4gb2JqW2hlYWRlcl1bMF0gIT0gXCI8bXVsdGk+XCIgJiYgb2JqW2hlYWRlcl1bMF0gIT0gXCIwXCIpICE9IC0xKSB7XHJcbiAgICAgICAgdGhpcy5lbnRlclRpbWVDaGVja2JveENoZWNrZWQgPSBzZWxlY3RlZE9iai5pbmNsdWRlVGltZVJhbmdlO1xyXG4gICAgICB9XHJcbiAgfVxyXG5cclxuICBzZWxlY3RPclVuc2VsZWN0TXVsdGlUaW1lQ2hlY2tib3goKSB7XHJcbiAgICB0aGlzLm11bHRpVGltZUNoZWNrYm94Q2hlY2tlZCA9ICF0aGlzLm11bHRpVGltZUNoZWNrYm94Q2hlY2tlZDtcclxuICAgIHRoaXMuZGlzYWJsZVRpbWVGaWx0ZXJBcHBseUJ1dHRvbigpO1xyXG4gIH1cclxuXHJcbiAgc2VsZWN0T3JVbnNlbGVjdFplcm9UaW1lQ2hlY2tib3goKSB7XHJcbiAgICB0aGlzLnplcm9UaW1lQ2hlY2tib3hDaGVja2VkID0gIXRoaXMuemVyb1RpbWVDaGVja2JveENoZWNrZWQ7XHJcbiAgICB0aGlzLmRpc2FibGVUaW1lRmlsdGVyQXBwbHlCdXR0b24oKTtcclxuICB9XHJcblxyXG4gIHNlbGVjdE9yVW5zZWxlY3RFbnRlclRpbWVDaGVja2JveCgpIHtcclxuICAgIHRoaXMuZW50ZXJUaW1lQ2hlY2tib3hDaGVja2VkID0gIXRoaXMuZW50ZXJUaW1lQ2hlY2tib3hDaGVja2VkO1xyXG4gICAgdGhpcy5kaXNhYmxlVGltZUZpbHRlckFwcGx5QnV0dG9uKCk7XHJcbiAgfVxyXG5cclxuICBcclxuICBzZWxlY3RVbnNlbGVjdENoZWNrYm94KGRhdGE6IFRvb2x0aXBNb2RlbCkge1xyXG4gICAgZGF0YS5pc1NlbGVjdGVkID0gIWRhdGEuaXNTZWxlY3RlZDtcclxuICAgIGxldCBpbmRleCA9IHRoaXMuY2xvbmVkVG9vbHRpcE9wdGlvbnMuZmluZEluZGV4KGl0ZW0gPT4gaXRlbS5pZCA9PSBkYXRhLmlkKTtcclxuICAgIHRoaXMuY2xvbmVkVG9vbHRpcE9wdGlvbnNbaW5kZXhdLmlzU2VsZWN0ZWQgPSBkYXRhLmlzU2VsZWN0ZWQ7XHJcbiAgICAgICAgXHJcbiAgICBsZXQgc2VsZWN0ZWRJdGVtcyA9IHRoaXMudG9vbHRpcE9wdGlvbnMuZmlsdGVyKGl0ZW0gPT4gaXRlbS5pc1NlbGVjdGVkKTtcclxuICAgIGxldCB1bnNlbGVjdGVkSXRlbXMgPSB0aGlzLnRvb2x0aXBPcHRpb25zLmZpbHRlcihpdGVtID0+ICFpdGVtLmlzU2VsZWN0ZWQpO1xyXG5cclxuICAgIHRoaXMuZGlzYWJsZUNsZWFyQWxsID0gIHNlbGVjdGVkSXRlbXMubGVuZ3RoID09IDA7XHJcbiAgICB0aGlzLmRpc2FibGVTZWxlY3RBbGwgPSB1bnNlbGVjdGVkSXRlbXMubGVuZ3RoID09IDA7XHJcbiAgICB0aGlzLnNlbGVjdGVkQ2hlY2tib3hPcHRpb25zQ291bnQgPSBzZWxlY3RlZEl0ZW1zLmxlbmd0aDtcclxuICAgIHRoaXMuZGlzYWJsZUNoZWNrYm94RmlsdGVyQXBwbHlCdXR0b24oKTtcclxuICB9XHJcblxyXG4gIG1pblZhbHVlQ2hhbmdlZCh2YWw6IHN0cmluZykge1xyXG4gICAgaWYgKHZhbCB8fCB2YWwgPT0gJzAnKSB7XHJcbiAgICAgIHRoaXMuc2xpZGVyRW50ZXJlZE1pblZhbHVlID0gK3ZhbDtcclxuICAgICAgdGhpcy5pc01pblRleHRCb3hFbXB0eSA9IGZhbHNlO1xyXG4gICAgICBpZiAodGhpcy5pc01heFRleHRCb3hFbXB0eSkge1xyXG4gICAgICAgIGlmICggKHRoaXMuc2xpZGVyRW50ZXJlZE1pblZhbHVlID4gdGhpcy5vcHRpb25zLmNlaWwpIHx8ICh0aGlzLnNsaWRlckVudGVyZWRNaW5WYWx1ZSA8IHRoaXMub3B0aW9ucy5mbG9vcikpIHtcclxuICAgICAgICAgIHRoaXMuc2hvd1NsaWRlck1pblZhbHVlRXJyb3IgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5kaXNhYmxlU2xpZGVyQXBwbHlCdXR0b24gPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5pbmNvcnJlY3RTbGlkZXJJbnB1dCA9IHRydWU7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuc2hvd1NsaWRlck1pblZhbHVlRXJyb3IgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMuc2hvd1NsaWRlck1heFZhbHVlRXJyb3IgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMuZGlzYWJsZVNsaWRlckFwcGx5QnV0dG9uID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLmluY29ycmVjdFNsaWRlcklucHV0ID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2UgaWYgKHRoaXMuc2xpZGVyRW50ZXJlZE1pblZhbHVlID4gdGhpcy5zbGlkZXJFbnRlcmVkTWF4VmFsdWUpIHtcclxuICAgICAgICBpZih0aGlzLmlzVmFsdWVJblJhbmdlKHRoaXMuc2xpZGVyRW50ZXJlZE1heFZhbHVlKSl7XHJcbiAgICAgICAgICB0aGlzLnNob3dTbGlkZXJNaW5WYWx1ZUVycm9yID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuc2hvd1NsaWRlck1heFZhbHVlRXJyb3IgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZXtcclxuICAgICAgICAgIHRoaXMuc2hvd1NsaWRlck1heFZhbHVlRXJyb3IgPSB0cnVlO1xyXG4gICAgICAgICAgaWYodGhpcy5pc1ZhbHVlSW5SYW5nZSh0aGlzLnNsaWRlckVudGVyZWRNaW5WYWx1ZSkpe1xyXG4gICAgICAgICAgICB0aGlzLnNob3dTbGlkZXJNaW5WYWx1ZUVycm9yID0gZmFsc2U7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNle1xyXG4gICAgICAgICAgICB0aGlzLnNob3dTbGlkZXJNaW5WYWx1ZUVycm9yID0gdHJ1ZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgXHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuZGlzYWJsZVNsaWRlckFwcGx5QnV0dG9uID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmluY29ycmVjdFNsaWRlcklucHV0ID0gdHJ1ZTtcclxuICAgICAgICBcclxuICAgICAgfSBlbHNlIGlmICh0aGlzLnNsaWRlckVudGVyZWRNaW5WYWx1ZSA8IHRoaXMub3B0aW9ucy5mbG9vcikge1xyXG4gICAgICAgIHRoaXMuc2hvd1NsaWRlck1pblZhbHVlRXJyb3IgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuZGlzYWJsZVNsaWRlckFwcGx5QnV0dG9uID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmluY29ycmVjdFNsaWRlcklucHV0ID0gdHJ1ZTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnNob3dTbGlkZXJNaW5WYWx1ZUVycm9yID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5kaXNhYmxlU2xpZGVyQXBwbHlCdXR0b24gPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmluY29ycmVjdFNsaWRlcklucHV0ID0gZmFsc2U7XHJcbiAgICAgIH1cclxuXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNsaWRlckVudGVyZWRNaW5WYWx1ZSA9IHRoaXMub3B0aW9ucy5mbG9vcjtcclxuICAgICAgdGhpcy5pc01pblRleHRCb3hFbXB0eSA9IHRydWU7XHJcbiAgICAgIHRoaXMuc2hvd1NsaWRlck1pblZhbHVlRXJyb3IgPSBmYWxzZTtcclxuXHJcbiAgICB9XHJcbiAgICB0aGlzLnNob3dFcnJvckZvck1pbkFuZE1heFZhbHVlKCk7XHJcbiAgfVxyXG5cclxuICBtYXhWYWx1ZUNoYW5nZWQodmFsOiBzdHJpbmcpIHtcclxuICAgIGlmICh2YWwgfHwgdmFsID09IFwiMFwiKSB7XHJcbiAgICAgIHRoaXMuc2xpZGVyRW50ZXJlZE1heFZhbHVlID0gK3ZhbDtcclxuICAgICAgdGhpcy5pc01heFRleHRCb3hFbXB0eSA9IGZhbHNlO1xyXG4gICAgICBpZiAodGhpcy5pc01pblRleHRCb3hFbXB0eSkge1xyXG4gICAgICAgIGlmICggKHRoaXMuc2xpZGVyRW50ZXJlZE1heFZhbHVlIDwgdGhpcy5vcHRpb25zLmZsb29yKSB8fCAodGhpcy5zbGlkZXJFbnRlcmVkTWF4VmFsdWUgPiB0aGlzLm9wdGlvbnMuY2VpbCkpIHtcclxuICAgICAgICAgIHRoaXMuc2hvd1NsaWRlck1heFZhbHVlRXJyb3IgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5kaXNhYmxlU2xpZGVyQXBwbHlCdXR0b24gPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5pbmNvcnJlY3RTbGlkZXJJbnB1dCA9IHRydWU7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuc2hvd1NsaWRlck1heFZhbHVlRXJyb3IgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMuc2hvd1NsaWRlck1pblZhbHVlRXJyb3IgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMuZGlzYWJsZVNsaWRlckFwcGx5QnV0dG9uID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLmluY29ycmVjdFNsaWRlcklucHV0ID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2UgaWYgKHRoaXMuc2xpZGVyRW50ZXJlZE1heFZhbHVlIDwgdGhpcy5zbGlkZXJFbnRlcmVkTWluVmFsdWUpIHtcclxuICAgICAgICBpZih0aGlzLmlzVmFsdWVJblJhbmdlKHRoaXMuc2xpZGVyRW50ZXJlZE1pblZhbHVlKSl7XHJcbiAgICAgICAgICB0aGlzLnNob3dTbGlkZXJNYXhWYWx1ZUVycm9yID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuc2hvd1NsaWRlck1pblZhbHVlRXJyb3IgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZXtcclxuICAgICAgICAgIHRoaXMuc2hvd1NsaWRlck1pblZhbHVlRXJyb3IgPSB0cnVlO1xyXG4gICAgICAgICAgaWYodGhpcy5pc1ZhbHVlSW5SYW5nZSh0aGlzLnNsaWRlckVudGVyZWRNYXhWYWx1ZSkpe1xyXG4gICAgICAgICAgICB0aGlzLnNob3dTbGlkZXJNYXhWYWx1ZUVycm9yID0gZmFsc2U7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNle1xyXG4gICAgICAgICAgICB0aGlzLnNob3dTbGlkZXJNYXhWYWx1ZUVycm9yID0gdHJ1ZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5kaXNhYmxlU2xpZGVyQXBwbHlCdXR0b24gPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuaW5jb3JyZWN0U2xpZGVySW5wdXQgPSB0cnVlO1xyXG4gICAgICAgIC8vIHRoaXMuc2hvd01heEVycm9yID0gdHJ1ZTtcclxuICAgICAgfSBlbHNlIGlmICh0aGlzLnNsaWRlckVudGVyZWRNYXhWYWx1ZSA+IHRoaXMub3B0aW9ucy5jZWlsKSB7XHJcbiAgICAgICAgdGhpcy5zaG93U2xpZGVyTWF4VmFsdWVFcnJvciA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5kaXNhYmxlU2xpZGVyQXBwbHlCdXR0b24gPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuaW5jb3JyZWN0U2xpZGVySW5wdXQgPSB0cnVlO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuc2hvd1NsaWRlck1heFZhbHVlRXJyb3IgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmRpc2FibGVTbGlkZXJBcHBseUJ1dHRvbiA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuaW5jb3JyZWN0U2xpZGVySW5wdXQgPSBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zbGlkZXJFbnRlcmVkTWF4VmFsdWUgPSB0aGlzLm9wdGlvbnMuY2VpbDtcclxuICAgICAgdGhpcy5pc01heFRleHRCb3hFbXB0eSA9IHRydWU7XHJcbiAgICAgIHRoaXMuc2hvd1NsaWRlck1heFZhbHVlRXJyb3IgPSBmYWxzZTtcclxuICAgIH1cclxuICAgIHRoaXMuc2hvd0Vycm9yRm9yTWluQW5kTWF4VmFsdWUoKTtcclxuICB9XHJcblxyXG4gIHNob3dFcnJvckZvck1pbkFuZE1heFZhbHVlKCl7XHJcbiAgICAgIGlmKHRoaXMuaXNNaW5UZXh0Qm94RW1wdHkgJiYgdGhpcy5pc01heFRleHRCb3hFbXB0eSl7XHJcbiAgICAgICAgdGhpcy5zaG93U2xpZGVyTWluVmFsdWVFcnJvciA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5zaG93U2xpZGVyTWF4VmFsdWVFcnJvciA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5kaXNhYmxlU2xpZGVyQXBwbHlCdXR0b24gPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuaW5jb3JyZWN0U2xpZGVySW5wdXQgPSB0cnVlO1xyXG4gICAgIH1cclxuICAgICBlbHNlIGlmKHRoaXMuc2hvd1NsaWRlck1heFZhbHVlRXJyb3IgfHwgdGhpcy5zaG93U2xpZGVyTWluVmFsdWVFcnJvcil7XHJcbiAgICAgIHRoaXMuaW5jb3JyZWN0U2xpZGVySW5wdXQgPSB0cnVlO1xyXG4gICAgIH1cclxuICAgICBlbHNle1xyXG4gICAgICB0aGlzLmluY29ycmVjdFNsaWRlcklucHV0ID0gZmFsc2U7XHJcbiAgICAgfVxyXG4gICAgIHRoaXMuZGlzYWJsZVNsaWRlckFwcGx5QnRuKCk7XHJcbiAgfVxyXG5cclxuICBpc1ZhbHVlSW5SYW5nZSh2YWw6IG51bWJlcil7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmZsb29yIDw9IHZhbCAmJiB2YWwgPD0gdGhpcy5vcHRpb25zLmNlaWw7XHJcbiAgfVxyXG5cclxuICBkaXNhYmxlU2xpZGVyQXBwbHlCdG4oKXtcclxuICAgIGlmKHRoaXMuc2hvd0ZpbHRlckNvbXBvbmVudCAmJiB0aGlzLnNob3dTb3J0Q29tcG9uZW50KXtcclxuICAgICAgbGV0IGlzRmlsdGVyQ2hhbmdlZCA9IHRoaXMuY2hlY2tJZlNsaWRlclRvb2x0aXBJc0ZpbHRlcmVkKCk7XHJcbiAgICAgIGxldCBpc1NvcnRDaGFuZ2VkID0gdGhpcy5jaGVja0lmU29ydGluZ0NoYW5nZWQoKTtcclxuICAgICAgICAgIFxyXG4gICAgICB0aGlzLmRpc2FibGVTbGlkZXJBcHBseUJ1dHRvbiA9IHRoaXMuaW5jb3JyZWN0U2xpZGVySW5wdXQgfHwgKCFpc1NvcnRDaGFuZ2VkICYmICFpc0ZpbHRlckNoYW5nZWQgKTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYodGhpcy5zaG93RmlsdGVyQ29tcG9uZW50KXtcclxuICAgICAgICB0aGlzLmRpc2FibGVTbGlkZXJBcHBseUJ1dHRvbiA9IHRoaXMuaW5jb3JyZWN0U2xpZGVySW5wdXQgfHwgIXRoaXMuY2hlY2tJZlNsaWRlclRvb2x0aXBJc0ZpbHRlcmVkKCk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmKHRoaXMuc2hvd1NvcnRDb21wb25lbnQpe1xyXG4gICAgICAgIHRoaXMuZGlzYWJsZVNsaWRlckFwcGx5QnV0dG9uID0gIXRoaXMuY2hlY2tJZlNvcnRpbmdDaGFuZ2VkKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzbGlkZXJWYWx1ZUNoYW5nZSgpIHtcclxuICAgIHRoaXMuc2xpZGVyVmFsdWUgPSB7IG1pbjogdGhpcy5zbGlkZXJNaW5WYWx1ZSwgbWF4OiB0aGlzLnNsaWRlck1heFZhbHVlIH07XHJcbiAgfVxyXG5cclxuICBjYW5jZWxTbGlkZXJGaWx0ZXIoKSB7XHJcbiAgICB0aGlzLnNsaWRlclZhbHVlID0gbnVsbDtcclxuICAgIHRoaXMuY2xvc2VUb29sdGlwKCk7XHJcbiAgfVxyXG5cclxuICBhcHBseUZpbHRlcnMoKSB7XHJcbiAgICB0aGlzLmFwcGx5TGlzdEZpbHRlcnMoKTtcclxuICAgIHRoaXMuYXBwbHlTb3J0aW5nT25GaWx0ZXJlZERhdGEoKTtcclxuICAgIC8vIHRoaXMuZW1pdERhdGEoKTtcclxuICAgIHRoaXMuc2V0SW5pdGlhbFJvd3NGb3JUYWJsZSgpO1xyXG4gICAgdGhpcy5kaXNhYmxlRW5hYmxlRWFjaENvbHVtblRvb2x0aXBJY29uKCk7XHJcbiAgICB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnVwZGF0ZVN0YXRlT2ZBbGxUaGVLZXlzKHRoaXMuYW5uYVNvcnRTZXJ2aWNlLmNvbHVtblNvcnRTdGF0ZSk7XHJcbiAgICB0aGlzLmVtaXREYXRhKCk7XHJcbiAgICB0aGlzLmNsb3NlVG9vbHRpcCgpO1xyXG4gIH1cclxuXHJcbiAgYXBwbHlMaXN0RmlsdGVycygpe1xyXG4gICAgaWYodGhpcy5zaG93RmlsdGVyQ29tcG9uZW50ICYmIHRoaXMuaXNGaWx0ZXJDaGFuZ2VkKXtcclxuICAgICAgbGV0IGN1cnJlbnRTZWxlY3RlZFZhbHVlID0gW107XHJcbiAgICAgIFxyXG4gICAgICBpZih0aGlzLnRvb2x0aXBPcHRpb25zKXtcclxuXHJcbiAgICAgICAgICBjdXJyZW50U2VsZWN0ZWRWYWx1ZSA9IHNvcnRCeSh0aGlzLnRvb2x0aXBPcHRpb25zLmZpbHRlcihpdGVtID0+IGl0ZW0uaXNTZWxlY3RlZCkubWFwKGl0ZW0gPT4gaXRlbS52YWx1ZSkpO1xyXG5cclxuICAgICAgICAgIGlmKCF0aGlzLnNlYXJjaEl0ZW0gJiYgY3VycmVudFNlbGVjdGVkVmFsdWUubGVuZ3RoID09IHRoaXMudG9vbHRpcE9wdGlvbnMubGVuZ3RoICYmIHRoaXMuYW5uYUZpbHRlclNlcnZpY2UuaW5pdGlhbFZhbHVlTWFwLmhhcyh0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnNlbGVjdGVkUmFkaW8pKXtcclxuICAgICAgICAgICAgY3VycmVudFNlbGVjdGVkVmFsdWUgPSB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmluaXRpYWxWYWx1ZU1hcC5nZXQodGhpcy5hbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIFxyXG4gICAgICB9XHJcblxyXG4gICAgICBsZXQgYmxhbmtJbmRleCA9IGN1cnJlbnRTZWxlY3RlZFZhbHVlLmZpbmRJbmRleCgoaXRlbTogc3RyaW5nKSA9PiBpdGVtID09IG51bGwpO1xyXG4gICAgICBpZihibGFua0luZGV4ICE9IC0xKXtcclxuICAgICAgICBjdXJyZW50U2VsZWN0ZWRWYWx1ZSA9IHNvcnRCeShjdXJyZW50U2VsZWN0ZWRWYWx1ZSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5hbm5hRmlsdGVyU2VydmljZS5yZU9yZGVyQXBwbGllZEZpbHRlcnNTdGF0ZSh0aGlzLmNsb25lZFRhYmxlRGF0YSxjdXJyZW50U2VsZWN0ZWRWYWx1ZSk7XHJcbiAgICAgICAgdGhpcy5hbm5hRmlsdGVyU2VydmljZS50b29sdGlwU2VsZWN0ZWRNYXAuc2V0KHRoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpbywgY3VycmVudFNlbGVjdGVkVmFsdWUpO1xyXG4gICAgICBcclxuICAgICAgICB0aGlzLnRhYmxlRGF0YSA9IHRoaXMuYW5uYUZpbHRlclNlcnZpY2UuZmlsdGVyRGF0YSh0aGlzLmNsb25lZFRhYmxlRGF0YSwgXCJcIik7XHJcbiAgICAgICAgdGhpcy5hbm5hU29ydFNlcnZpY2Uubm9Tb3J0aW5nQXBwbGllZERhdGEgPSBjbG9uZURlZXAodGhpcy50YWJsZURhdGEpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYXBwbHlTb3J0aW5nT25GaWx0ZXJlZERhdGEoKXtcclxuICAgIGlmKHRoaXMuc2hvd1NvcnRDb21wb25lbnQpe1xyXG4gICAgICBpZih0aGlzLmlzU29ydENoYW5nZWQpe1xyXG4gICAgICAgIHRoaXMudXBkYXRlU29ydE1hcCgpO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYodGhpcy5pc0ZpbHRlckNoYW5nZWQpe1xyXG4gICAgICAgIHRoaXMuY2hlY2tJZlNvcnRpbmdJc0FwcGxpZWQoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSBpZih0aGlzLmlzRmlsdGVyQ2hhbmdlZCl7XHJcbiAgICAgIHRoaXMuY2hlY2tJZlNvcnRpbmdJc0FwcGxpZWQoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGVtaXREYXRhKCl7XHJcbiAgICBpZih0aGlzLmlzRmlsdGVyQ2hhbmdlZCAmJiB0aGlzLmlzU29ydENoYW5nZWQpe1xyXG4gICAgICB0aGlzLmZpbHRlckFwcGxpZWRUb1RhYmxlLmVtaXQodGhpcy50YWJsZURhdGEpO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZih0aGlzLmlzRmlsdGVyQ2hhbmdlZCl7XHJcbiAgICAgIHRoaXMuZmlsdGVyQXBwbGllZFRvVGFibGUuZW1pdCh0aGlzLnRhYmxlRGF0YSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmKHRoaXMuaXNTb3J0Q2hhbmdlZCl7XHJcbiAgICAgIHRoaXMuc29ydGluZ0FwcGxpZWRUb1RhYmxlLmVtaXQodGhpcy50YWJsZURhdGEpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYXBwbHlTb3J0aW5nKGtleTogc3RyaW5nKXtcclxuICAgIGlmKHRoaXMudGVtcFNvcnRPcmRlciA9PSBcIkFTQ1wiKXtcclxuICAgICAgdGhpcy50YWJsZURhdGEgPSBjbG9uZURlZXAodGhpcy5hbm5hU29ydFNlcnZpY2Uuc29ydERhdGFGb3JDb21wb25lbnRPdGhlclRoYW5MdXJBbmRDc3JQYWdlKHRydWUsdGhpcy50YWJsZURhdGEsa2V5KSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmKHRoaXMudGVtcFNvcnRPcmRlciA9PSBcIkRFU0NcIil7XHJcbiAgICAgICAgdGhpcy50YWJsZURhdGEgPSBjbG9uZURlZXAodGhpcy5hbm5hU29ydFNlcnZpY2Uuc29ydERhdGFGb3JDb21wb25lbnRPdGhlclRoYW5MdXJBbmRDc3JQYWdlKGZhbHNlLHRoaXMudGFibGVEYXRhLGtleSkpO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZih0aGlzLnRlbXBTb3J0T3JkZXIgPT0gXCJERUZBVUxUXCIpe1xyXG4gICAgICAgIHRoaXMudGFibGVEYXRhID0gY2xvbmVEZWVwKHRoaXMuYW5uYVNvcnRTZXJ2aWNlLm5vU29ydGluZ0FwcGxpZWREYXRhKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJldmVydCgpIHtcclxuICAgIHRoaXMudGVtcFRvb2x0aXBEYXRhID0gY2xvbmVEZWVwKHRoaXMudG9vbFRpcGRhdGEpO1xyXG4gICAgdGhpcy5hbm5hRmlsdGVyU2VydmljZS50b29sdGlwTWFwLnNldCh0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnNlbGVjdGVkUmFkaW8sIHRoaXMudGVtcFRvb2x0aXBEYXRhKTtcclxuICAgIHRoaXMudG9vbFRpcGRhdGEgPSBudWxsO1xyXG4gIH1cclxuXHJcbiAgY2xvc2VDaGVja2JveEZpbHRlcigpIHtcclxuICAgIGlmICh0aGlzLnRvb2xUaXBkYXRhKSB7XHJcbiAgICAgIHRoaXMucmV2ZXJ0KCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmNsb3NlVG9vbHRpcCgpO1xyXG4gIH1cclxuXHJcbiAgYXBwbHlTbGlkZXJGaWx0ZXIoKSB7XHJcblxyXG4gICAgdGhpcy5hcHBseVNsaWRlckZpbHRlck9uRGF0YSgpO1xyXG4gICAgdGhpcy5hcHBseVNvcnRpbmdPbkZpbHRlcmVkRGF0YSgpO1xyXG4gICAgdGhpcy5lbWl0RGF0YSgpO1xyXG4gICAgdGhpcy5zZXRJbml0aWFsUm93c0ZvclRhYmxlKCk7XHJcbiAgICB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnVwZGF0ZVN0YXRlT2ZBbGxUaGVLZXlzKHRoaXMuYW5uYVNvcnRTZXJ2aWNlLmNvbHVtblNvcnRTdGF0ZSk7XHJcbiAgICB0aGlzLmNsb3NlVG9vbHRpcCgpO1xyXG4gIH1cclxuXHJcbiAgYXBwbHlTbGlkZXJGaWx0ZXJPbkRhdGEoKXtcclxuICAgIGlmKHRoaXMuc2hvd0ZpbHRlckNvbXBvbmVudCAmJiB0aGlzLmlzRmlsdGVyQ2hhbmdlZCl7XHJcbiAgICAgIGxldCBjdXJyZW50U2xpZGVyRGF0YToge21pbjphbnksIG1heDogYW55fSA9IHttaW46IG51bGwgLCBtYXg6IG51bGx9O1xyXG5cclxuICAgICAgLy8gaWYodGhpcy5pc01pblRleHRCb3hFbXB0eSl7XHJcbiAgICAgIC8vICAgICBjdXJyZW50U2xpZGVyRGF0YS5taW4gPSB0aGlzLm9wdGlvbnMuZmxvb3I7XHJcbiAgICAgIC8vICAgICBjdXJyZW50U2xpZGVyRGF0YS5tYXggPSB0aGlzLnNsaWRlck1heFZhbHVlO1xyXG4gICAgICAvLyB9XHJcbiAgICAgIC8vIGVsc2UgaWYodGhpcy5pc01heFRleHRCb3hFbXB0eSl7XHJcbiAgICAgIC8vICAgICBjdXJyZW50U2xpZGVyRGF0YS5tYXggPSB0aGlzLm9wdGlvbnMuY2VpbDtcclxuICAgICAgLy8gICAgIGN1cnJlbnRTbGlkZXJEYXRhLm1pbiA9IHRoaXMuc2xpZGVyTWluVmFsdWU7XHJcbiAgICAgIC8vIH1cclxuICAgICAgLy8gZWxzZXtcclxuICAgICAgICAgIGN1cnJlbnRTbGlkZXJEYXRhLm1heCA9IHRoaXMuc2xpZGVyRW50ZXJlZE1heFZhbHVlO1xyXG4gICAgICAgICAgY3VycmVudFNsaWRlckRhdGEubWluID0gdGhpcy5zbGlkZXJFbnRlcmVkTWluVmFsdWU7XHJcbiAgICAgIC8vIH1cclxuXHJcbiAgICAgIGlmKGN1cnJlbnRTbGlkZXJEYXRhLm1pbiA9PSB0aGlzLm9wdGlvbnMuZmxvb3IgJiYgY3VycmVudFNsaWRlckRhdGEubWF4ID09IHRoaXMub3B0aW9ucy5jZWlsICYmIHRoaXMuYW5uYUZpbHRlclNlcnZpY2UuaW5pdGlhbFZhbHVlTWFwLmhhcyh0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnNlbGVjdGVkUmFkaW8pICl7XHJcbiAgICAgICAgICBjdXJyZW50U2xpZGVyRGF0YSA9IHRoaXMuYW5uYUZpbHRlclNlcnZpY2UuaW5pdGlhbFZhbHVlTWFwLmdldCh0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnNlbGVjdGVkUmFkaW8pO1xyXG4gICAgICB9XHJcbiAgICAgIFxyXG4gICAgICB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnJlT3JkZXJBcHBsaWVkRmlsdGVyc1N0YXRlKHRoaXMuY2xvbmVkVGFibGVEYXRhLGN1cnJlbnRTbGlkZXJEYXRhKTtcclxuICAgICAgdGhpcy5hbm5hRmlsdGVyU2VydmljZS50b29sdGlwU2VsZWN0ZWRNYXAuc2V0KHRoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpbyxjdXJyZW50U2xpZGVyRGF0YSk7XHJcbiAgICAgIHRoaXMudGFibGVEYXRhID0gdGhpcy5hbm5hRmlsdGVyU2VydmljZS5maWx0ZXJEYXRhKHRoaXMuY2xvbmVkVGFibGVEYXRhLCBcIlwiKTtcclxuICAgICAgdGhpcy5hbm5hU29ydFNlcnZpY2Uubm9Tb3J0aW5nQXBwbGllZERhdGEgPSBjbG9uZURlZXAodGhpcy50YWJsZURhdGEpO1xyXG4gICAgICB0aGlzLmRpc2FibGVFbmFibGVFYWNoQ29sdW1uVG9vbHRpcEljb24oKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNhbmNlbEluRGF0ZUZpbHRlcigpIHtcclxuICAgIHRoaXMuY2xvc2VUb29sdGlwKCk7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVTb3J0TWFwKCl7XHJcbiAgICB0aGlzLmFubmFTb3J0U2VydmljZS5jb2x1bW5Tb3J0U3RhdGUgPSBuZXcgTWFwKCk7XHJcbiAgICB0aGlzLmFubmFTb3J0U2VydmljZS5jb2x1bW5Tb3J0U3RhdGUuc2V0KHRoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpbywgdGhpcy50ZW1wU29ydE9yZGVyKTtcclxuICAgIHRoaXMuYXBwbHlTb3J0aW5nKHRoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpbyk7XHJcbiAgfVxyXG5cclxuICBhcHBseURhdGVGaWx0ZXIoKSB7XHJcbiAgICB0aGlzLmFwcGx5RGF0ZUZpbHRlck9uRGF0YSgpO1xyXG4gICAgdGhpcy5hcHBseVNvcnRpbmdPbkZpbHRlcmVkRGF0YSgpO1xyXG4gICAgdGhpcy5lbWl0RGF0YSgpO1xyXG4gICAgdGhpcy5zZXRJbml0aWFsUm93c0ZvclRhYmxlKCk7XHJcbiAgICB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnVwZGF0ZVN0YXRlT2ZBbGxUaGVLZXlzKHRoaXMuYW5uYVNvcnRTZXJ2aWNlLmNvbHVtblNvcnRTdGF0ZSk7XHJcbiAgICB0aGlzLmNsb3NlVG9vbHRpcCgpO1xyXG4gICAgXHJcbiAgfVxyXG5cclxuICBhcHBseURhdGVGaWx0ZXJPbkRhdGEoKXtcclxuICAgIGlmKHRoaXMuc2hvd0ZpbHRlckNvbXBvbmVudCAmJiB0aGlzLmlzRmlsdGVyQ2hhbmdlZCl7XHJcbiAgICAgIGxldCBjdXJyZW50U2VsZWN0ZWREYXRlID0gdGhpcy5jYWxlbmRhclNlbGVjdGlvbjtcclxuICAgICAgXHJcbiAgICAgIGxldCBmcm9tRGF0ZSA9IHt5ZWFyOiBjdXJyZW50U2VsZWN0ZWREYXRlLmZyb21EYXRlLnllYXIsbW9udGg6IGN1cnJlbnRTZWxlY3RlZERhdGUuZnJvbURhdGUubW9udGgsZGF5OiBjdXJyZW50U2VsZWN0ZWREYXRlLmZyb21EYXRlLmRheX07XHJcbiAgICAgIGxldCB0b0RhdGUgPSB7eWVhcjogY3VycmVudFNlbGVjdGVkRGF0ZS50b0RhdGUueWVhcixtb250aDogY3VycmVudFNlbGVjdGVkRGF0ZS50b0RhdGUubW9udGgsZGF5OiBjdXJyZW50U2VsZWN0ZWREYXRlLnRvRGF0ZS5kYXl9O1xyXG4gICAgICAgICAgXHJcbiAgICAgIGlmKGlzRXF1YWwodGhpcy5jYWxlbmRhck1pbkVuYWJsZWREYXRlLGZyb21EYXRlKSAmJiBpc0VxdWFsKHRoaXMuY2FsZW5kYXJNYXhFbmFibGVkRGF0ZSx0b0RhdGUpICYmIHRoaXMuYW5uYUZpbHRlclNlcnZpY2UuaW5pdGlhbFZhbHVlTWFwLmhhcyh0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnNlbGVjdGVkUmFkaW8pKXtcclxuICAgICAgICAgIGN1cnJlbnRTZWxlY3RlZERhdGUgPSB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmluaXRpYWxWYWx1ZU1hcC5nZXQodGhpcy5hbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvKTtcclxuICAgICAgfVxyXG4gICAgICBlbHNle1xyXG4gICAgICAgICAgY3VycmVudFNlbGVjdGVkRGF0ZS5mcm9tRGF0ZSA9IGRheWpzKHRoaXMuYW5uYURhdGVUaW1lRm9ybWF0U2VydmljZS5jb252ZXJ0TmdiRGF0ZVRvTW9tZW50KGN1cnJlbnRTZWxlY3RlZERhdGUuZnJvbURhdGUpKTtcclxuICAgICAgICAgIGN1cnJlbnRTZWxlY3RlZERhdGUudG9EYXRlID0gZGF5anModGhpcy5hbm5hRGF0ZVRpbWVGb3JtYXRTZXJ2aWNlLmNvbnZlcnROZ2JEYXRlVG9Nb21lbnQoY3VycmVudFNlbGVjdGVkRGF0ZS50b0RhdGUpKTtcclxuICAgICAgfVxyXG4gICAgICAgICAgXHJcbiAgICAgICAgICBcclxuICAgICAgdGhpcy5hbm5hRmlsdGVyU2VydmljZS5yZU9yZGVyQXBwbGllZEZpbHRlcnNTdGF0ZSh0aGlzLmNsb25lZFRhYmxlRGF0YSxjdXJyZW50U2VsZWN0ZWREYXRlKTtcclxuICAgICAgdGhpcy5hbm5hRmlsdGVyU2VydmljZS50b29sdGlwU2VsZWN0ZWRNYXAuc2V0KHRoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpbyxjdXJyZW50U2VsZWN0ZWREYXRlKTtcclxuICAgICAgdGhpcy50YWJsZURhdGEgPSB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmZpbHRlckRhdGEodGhpcy5jbG9uZWRUYWJsZURhdGEsIFwiXCIpO1xyXG4gICAgICB0aGlzLmFubmFTb3J0U2VydmljZS5ub1NvcnRpbmdBcHBsaWVkRGF0YSA9IGNsb25lRGVlcCh0aGlzLnRhYmxlRGF0YSk7XHJcbiAgICAgIHRoaXMuZGlzYWJsZUVuYWJsZUVhY2hDb2x1bW5Ub29sdGlwSWNvbigpO1xyXG5cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFwcGx5V2Vla0ZpbHRlcihldmVudDogYW55KSB7XHJcblxyXG4gIH1cclxuXHJcbiAgaW5jcmVtZW50SG91cihhcnI6IGFueVtdKSB7XHJcbiAgICBpZiAoYXJyWzBdID09IFwiXCIpIHtcclxuICAgICAgYXJyWzBdID0gMTtcclxuICAgIH0gZWxzZSBpZiAocGFyc2VJbnQoYXJyWzBdKSA8IDEyKSB7XHJcbiAgICAgIGFyclswXSA9IHBhcnNlSW50KGFyclswXSkgKyAxO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgYXJyWzBdID0gMTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGRlY3JlbWVudEhvdXIoYXJyOiBhbnlbXSkge1xyXG4gICAgaWYgKGFyclswXSA9PSBcIlwiKSB7XHJcbiAgICAgIGFyclswXSA9IDEyO1xyXG4gICAgfSBlbHNlIGlmIChwYXJzZUludChhcnJbMF0pID4gMSkge1xyXG4gICAgICBhcnJbMF0gPSBwYXJzZUludChhcnJbMF0pIC0gMTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGFyclswXSA9IDEyO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaW5jcmVtZW50TWludXRlKGFycjogYW55W10pIHtcclxuICAvLyBpbmNyZW1lbnQgdG8gbmVhcmVzdCBwcm9wZXIgaW50ZXJ2YWwoMTUsMzAsNDUpXHJcbiAgbGV0IG1pbiA9IHBhcnNlSW50KGFyclsxXSlcclxuICAgIGlmIChtaW4gPD0gMTQpIHtcclxuICAgICAgYXJyWzFdID0gXCIxNVwiO1xyXG4gICAgfSBlbHNlIGlmIChtaW4gPj0gMTUgJiYgbWluIDw9IDI5KSB7XHJcbiAgICAgIGFyclsxXSA9IFwiMzBcIjtcclxuICAgIH0gZWxzZSBpZiAobWluID49IDMwICYmIG1pbiA8PSA0NCkge1xyXG4gICAgICBhcnJbMV0gPSBcIjQ1XCI7XHJcbiAgICB9IGVsc2UgaWYgKG1pbiA+PSA0NSkge1xyXG4gICAgICBhcnJbMV0gPSBcIjAwXCI7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBkZWNyZW1lbnRNaW51dGUoYXJyOiBhbnkpIHtcclxuICAgIGxldCBtaW4gPSBwYXJzZUludChhcnJbMV0pO1xyXG4gICAgaWYgKG1pbiA+IDAgJiYgbWluIDw9IDE1KSB7XHJcbiAgICAgIGFyclsxXSA9IFwiMDBcIjtcclxuICAgIH0gZWxzZSBpZiAobWluID49IDE2ICYmIG1pbiA8PSAzMCkge1xyXG4gICAgICBhcnJbMV0gPSBcIjE1XCI7XHJcbiAgICB9IGVsc2UgaWYgKG1pbiA+PSAzMSAmJiBtaW4gPD0gNDUpIHtcclxuICAgICAgYXJyWzFdID0gXCIzMFwiO1xyXG4gICAgfSBlbHNlIGlmIChtaW4gPiA0NSB8fCBtaW4gPT0gMCkge1xyXG4gICAgICBhcnJbMV0gPSBcIjQ1XCI7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjaGFuZ2VTdGFydFRpbWVIb3VyKGluY3JlbWVudDogYm9vbGVhbikge1xyXG4gICAgaWYoIXRoaXMuc3RhcnRUaW1lSG91ckVycil7XHJcbiAgICAgIGlmIChpbmNyZW1lbnQpIHtcclxuICAgICAgICB0aGlzLmluY3JlbWVudEhvdXIodGhpcy5zZWxlY3RlZEZyb21UaW1lKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmRlY3JlbWVudEhvdXIodGhpcy5zZWxlY3RlZEZyb21UaW1lKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnN0YXJ0VGltZUhvdXJDaGFuZ2UodGhpcy5zZWxlY3RlZEZyb21UaW1lWzBdLnRvU3RyaW5nKCkpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2hhbmdlRW5kVGltZUhvdXIoaW5jcmVtZW50OiBib29sZWFuKSB7XHJcbiAgICBpZighdGhpcy5lbmRUaW1lSG91ckVycil7XHJcbiAgICAgIGlmIChpbmNyZW1lbnQpIHtcclxuICAgICAgICB0aGlzLmluY3JlbWVudEhvdXIodGhpcy5zZWxlY3RlZFRvVGltZSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5kZWNyZW1lbnRIb3VyKHRoaXMuc2VsZWN0ZWRUb1RpbWUpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuZW5kVGltZUhvdXJDaGFuZ2UodGhpcy5zZWxlY3RlZFRvVGltZVswXS50b1N0cmluZygpKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNoYW5nZUVuZFRpbWVNaW51dGUoaW5jcmVtZW50OiBib29sZWFuKSB7XHJcbiAgICBpZighdGhpcy5lbmRUaW1lTWluRXJyKXtcclxuICAgICAgaWYgKGluY3JlbWVudCkge1xyXG4gICAgICAgIHRoaXMuaW5jcmVtZW50TWludXRlKHRoaXMuc2VsZWN0ZWRUb1RpbWUpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuZGVjcmVtZW50TWludXRlKHRoaXMuc2VsZWN0ZWRUb1RpbWUpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuZW5kVGltZU1pbkNoYW5nZSh0aGlzLnNlbGVjdGVkVG9UaW1lWzFdLnRvU3RyaW5nKCkpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2hhbmdlU3RhcnRUaW1lTWludXRlKGluY3JlbWVudDogYm9vbGVhbikge1xyXG4gICAgaWYoIXRoaXMuc3RhcnRUaW1lTWluRXJyKXtcclxuICAgICAgaWYgKGluY3JlbWVudCkge1xyXG4gICAgICAgIHRoaXMuaW5jcmVtZW50TWludXRlKHRoaXMuc2VsZWN0ZWRGcm9tVGltZSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5kZWNyZW1lbnRNaW51dGUodGhpcy5zZWxlY3RlZEZyb21UaW1lKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnN0YXJ0VGltZU1pbkNoYW5nZSh0aGlzLnNlbGVjdGVkRnJvbVRpbWVbMV0udG9TdHJpbmcoKSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhcHBseVRpbWVGaWx0ZXJzKCkge1xyXG5cclxuICAgIHRoaXMuYXBwbHlUaW1lRmlsdGVyT25EYXRhKCk7XHJcbiAgICB0aGlzLmFwcGx5U29ydGluZ09uRmlsdGVyZWREYXRhKCk7XHJcbiAgICB0aGlzLmVtaXREYXRhKCk7XHJcbiAgICB0aGlzLnNldEluaXRpYWxSb3dzRm9yVGFibGUoKTtcclxuICAgIHRoaXMuYW5uYUZpbHRlclNlcnZpY2UudXBkYXRlU3RhdGVPZkFsbFRoZUtleXModGhpcy5hbm5hU29ydFNlcnZpY2UuY29sdW1uU29ydFN0YXRlKTtcclxuICAgIHRoaXMuY2xvc2VUb29sdGlwKCk7XHJcblxyXG4gIH1cclxuXHJcbiAgYXBwbHlUaW1lRmlsdGVyT25EYXRhKCl7XHJcbiAgICBpZih0aGlzLnNob3dGaWx0ZXJDb21wb25lbnQgJiYgdGhpcy5pc0ZpbHRlckNoYW5nZWQpe1xyXG4gICAgICBsZXQgY3VycmVudFNlbGVjdGVkVGltZUZpbHRlcjoge2Zyb21UaW1lOiBzdHJpbmcsIHRvVGltZTpzdHJpbmcsIGluY2x1ZGVNdWx0aTogYm9vbGVhbiwgaW5jbHVkZVplcm86IGJvb2xlYW4sIGluY2x1ZGVUaW1lUmFuZ2U6IGJvb2xlYW59ID0ge1xyXG4gICAgICAgIGZyb21UaW1lOiBudWxsLFxyXG4gICAgICAgIHRvVGltZTogbnVsbCxcclxuICAgICAgICBpbmNsdWRlTXVsdGk6IGZhbHNlLFxyXG4gICAgICAgIGluY2x1ZGVaZXJvOiBmYWxzZSxcclxuICAgICAgICBpbmNsdWRlVGltZVJhbmdlOiBmYWxzZSxcclxuICAgICAgfTtcclxuICBcclxuICAgICAgbGV0IGZyb21UaW1lMjRIckZvcm1hdEFyciA9IHRoaXMuYW5uYURhdGVUaW1lRm9ybWF0U2VydmljZS5jb252ZXJ0VG90d2VudHlGb3VySHJzRm9ybWF0KFxyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRGcm9tVGltZVswXSArIFwiOlwiICsgdGhpcy5zZWxlY3RlZEZyb21UaW1lWzFdICsgXCIgXCIgKyB0aGlzLnNlbGVjdGVkRnJvbVRpbWVbMl0sXHJcbiAgICAgICAgdHJ1ZVxyXG4gICAgICApO1xyXG4gICAgICBsZXQgZnJvbVRpbWUyNEhyRm9ybWF0ID0gZnJvbVRpbWUyNEhyRm9ybWF0QXJyWzBdICsgXCI6XCIgKyBmcm9tVGltZTI0SHJGb3JtYXRBcnJbMV0gKyBcIjowMFwiO1xyXG4gICAgICBcclxuICAgICAgbGV0IHRvVGltZTI0SHJGb3JtYXRBcnIgPSB0aGlzLmFubmFEYXRlVGltZUZvcm1hdFNlcnZpY2UuY29udmVydFRvdHdlbnR5Rm91ckhyc0Zvcm1hdChcclxuICAgICAgICB0aGlzLnNlbGVjdGVkVG9UaW1lWzBdICsgXCI6XCIgKyB0aGlzLnNlbGVjdGVkVG9UaW1lWzFdICsgXCIgXCIgKyB0aGlzLnNlbGVjdGVkVG9UaW1lWzJdLFxyXG4gICAgICAgIHRydWVcclxuICAgICAgKTtcclxuICAgICAgbGV0IHRvVGltZTI0SHJGb3JtYXQgPSB0b1RpbWUyNEhyRm9ybWF0QXJyWzBdICsgXCI6XCIgKyB0b1RpbWUyNEhyRm9ybWF0QXJyWzFdICsgXCI6NTlcIjtcclxuICBcclxuICAgICAgY3VycmVudFNlbGVjdGVkVGltZUZpbHRlciA9IHsgZnJvbVRpbWU6IGZyb21UaW1lMjRIckZvcm1hdCwgdG9UaW1lOiB0b1RpbWUyNEhyRm9ybWF0LCBpbmNsdWRlTXVsdGk6IHRoaXMubXVsdGlUaW1lQ2hlY2tib3hDaGVja2VkLCBcclxuICAgICAgaW5jbHVkZVplcm86IHRoaXMuemVyb1RpbWVDaGVja2JveENoZWNrZWQsIGluY2x1ZGVUaW1lUmFuZ2U6IHRoaXMuZW50ZXJUaW1lQ2hlY2tib3hDaGVja2VkfTtcclxuICBcclxuICAgICAgbGV0IGlzRmlsdGVyZWQgPSB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnJlT3JkZXJBcHBsaWVkRmlsdGVyc1N0YXRlKHRoaXMuY2xvbmVkVGFibGVEYXRhLGN1cnJlbnRTZWxlY3RlZFRpbWVGaWx0ZXIpO1xyXG4gICAgICB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnRvb2x0aXBTZWxlY3RlZE1hcC5zZXQodGhpcy5hbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvLGN1cnJlbnRTZWxlY3RlZFRpbWVGaWx0ZXIpO1xyXG4gICAgICB0aGlzLnRhYmxlRGF0YSA9IHRoaXMuYW5uYUZpbHRlclNlcnZpY2UuZmlsdGVyRGF0YSh0aGlzLmNsb25lZFRhYmxlRGF0YSwgXCJcIik7XHJcbiAgICAgIFxyXG4gICAgICBpZighaXNGaWx0ZXJlZCl7XHJcbiAgICAgICAgdGhpcy5hbm5hRmlsdGVyU2VydmljZS50b29sdGlwU2VsZWN0ZWRNYXAuZGVsZXRlKHRoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpbyk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5hbm5hU29ydFNlcnZpY2Uubm9Tb3J0aW5nQXBwbGllZERhdGEgPSBjbG9uZURlZXAodGhpcy50YWJsZURhdGEpO1xyXG4gICAgICB0aGlzLmRpc2FibGVFbmFibGVFYWNoQ29sdW1uVG9vbHRpcEljb24oKTsgICAgICAgICAgICBcclxuIFxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2xvc2VUaW1lRmlsdGVyKCkge1xyXG4gICAgdGhpcy5zZWxlY3RlZEZyb21UaW1lID0gY2xvbmVEZWVwKHRoaXMuY2xvbmVkU2VsZWN0ZWRGcm9tVGltZSk7XHJcbiAgICB0aGlzLnNlbGVjdGVkVG9UaW1lID0gY2xvbmVEZWVwKHRoaXMuY2xvbmVkU2VsZWN0ZWRUb1RpbWUpO1xyXG4gICAgdGhpcy5jbG9zZVRvb2x0aXAoKTtcclxuICB9XHJcblxyXG4gIGRpc2FibGVUaW1lRmlsdGVyQXBwbHlCdXR0b24oKSB7XHJcblxyXG4gICAgaWYodGhpcy5zaG93RmlsdGVyQ29tcG9uZW50ICYmIHRoaXMuc2hvd1NvcnRDb21wb25lbnQpe1xyXG4gICAgICBsZXQgaXNGaWx0ZXJDaGFuZ2VkID0gdGhpcy5jaGVja0lmVGltZVRvb2x0aXBJc0ZpbHRlcmVkKCk7XHJcbiAgICAgIGxldCBpc1NvcnRDaGFuZ2VkID0gdGhpcy5jaGVja0lmU29ydGluZ0NoYW5nZWQoKTtcclxuICAgICAgdGhpcy5kaXNhYmxlVGltZUZpbHRlckFwcGx5QnRuID0gIXRoaXMudmFsaWRhdGVUaW1lRmlsdGVySW5wdXQoKSB8fCAoIWlzU29ydENoYW5nZWQgJiYgIWlzRmlsdGVyQ2hhbmdlZCApO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZih0aGlzLnNob3dGaWx0ZXJDb21wb25lbnQpe1xyXG4gICAgICAgIHRoaXMuZGlzYWJsZVRpbWVGaWx0ZXJBcHBseUJ0biA9ICF0aGlzLnZhbGlkYXRlVGltZUZpbHRlcklucHV0KCkgfHwgIXRoaXMuY2hlY2tJZlRpbWVUb29sdGlwSXNGaWx0ZXJlZCgpO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZih0aGlzLnNob3dTb3J0Q29tcG9uZW50KXtcclxuICAgICAgICB0aGlzLmRpc2FibGVUaW1lRmlsdGVyQXBwbHlCdG4gPSAhdGhpcy5jaGVja0lmU29ydGluZ0NoYW5nZWQoKTtcclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxuICB2YWxpZGF0ZVRpbWVGaWx0ZXJJbnB1dCgpe1xyXG4gICAgaWYodGhpcy5zdGFydFRpbWVIb3VyRXJyIHx8IHRoaXMuc3RhcnRUaW1lTWluRXJyIHx8IHRoaXMuZW5kVGltZUhvdXJFcnIgfHwgdGhpcy5lbmRUaW1lTWluRXJyKXtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCh0aGlzLnNob3dNdWx0aVRpbWVDaGVja2JveCAmJiAhdGhpcy5tdWx0aVRpbWVDaGVja2JveENoZWNrZWQpICYmIFxyXG4gICAgICAgICAgKHRoaXMuc2hvd1plcm9UaW1lQ2hlY2tib3ggJiYgIXRoaXMuemVyb1RpbWVDaGVja2JveENoZWNrZWQgKSYmIFxyXG4gICAgICAgICAgKHRoaXMuc2hvd0VudGVyVGltZUNoZWNrYm94ICYmICF0aGlzLmVudGVyVGltZUNoZWNrYm94Q2hlY2tlZCkpIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgbGV0IHRpbWVGb3JtYXQgPSBcIkhIOm1tOnNzXCI7XHJcblxyXG4gICAgbGV0IHN0YXJ0VGltZTI0SHJGb3JtYXRBcnIgPSB0aGlzLmFubmFEYXRlVGltZUZvcm1hdFNlcnZpY2UuY29udmVydFRvdHdlbnR5Rm91ckhyc0Zvcm1hdChcclxuICAgICAgICB0aGlzLnNlbGVjdGVkRnJvbVRpbWVbMF0gKyBcIjpcIiArIHRoaXMuc2VsZWN0ZWRGcm9tVGltZVsxXSArIFwiIFwiICsgdGhpcy5zZWxlY3RlZEZyb21UaW1lWzJdLFxyXG4gICAgICAgIHRydWVcclxuICAgICk7XHJcbiAgICBsZXQgc3RhcnRUaW1lMjRIckZvcm1hdCA9IHN0YXJ0VGltZTI0SHJGb3JtYXRBcnJbMF0gKyBcIjpcIiArIHN0YXJ0VGltZTI0SHJGb3JtYXRBcnJbMV0gKyBcIjowMFwiO1xyXG4gICAgbGV0IGVuZFRpbWUyNEhyRm9ybWF0QXJyID0gdGhpcy5hbm5hRGF0ZVRpbWVGb3JtYXRTZXJ2aWNlLmNvbnZlcnRUb3R3ZW50eUZvdXJIcnNGb3JtYXQoXHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZFRvVGltZVswXSArIFwiOlwiICsgdGhpcy5zZWxlY3RlZFRvVGltZVsxXSArIFwiIFwiICsgdGhpcy5zZWxlY3RlZFRvVGltZVsyXSxcclxuICAgICAgICB0cnVlXHJcbiAgICApO1xyXG4gICAgbGV0IGVuZFRpbWUyNEhyRm9ybWF0ID0gZW5kVGltZTI0SHJGb3JtYXRBcnJbMF0gKyBcIjpcIiArIGVuZFRpbWUyNEhyRm9ybWF0QXJyWzFdICsgXCI6MDBcIjtcclxuXHJcbiAgICByZXR1cm4gIShkYXlqcyhzdGFydFRpbWUyNEhyRm9ybWF0LCB0aW1lRm9ybWF0KS5pc0FmdGVyKGRheWpzKGVuZFRpbWUyNEhyRm9ybWF0LCB0aW1lRm9ybWF0KSkpOyAgICAgICAgXHJcbiAgfVxyXG5cclxuICBzb3J0ZWREYXRhKGV2ZW50OiBhbnkpIHtcclxuICAgIGlmIChldmVudC50eXBlID09IFwibm9uZVwiKSB7XHJcbiAgICAgIHRoaXMudGFibGVEYXRhID0gdGhpcy5hbm5hRmlsdGVyU2VydmljZS5maWx0ZXJEYXRhKHRoaXMuY2xvbmVkVGFibGVEYXRhLCBcIlwiKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMudGFibGVEYXRhID0gZXZlbnQuZGF0YTtcclxuICAgIH1cclxuICAgIHRoaXMuc29ydGluZ0FwcGxpZWRUb1RhYmxlLmVtaXQodGhpcy50YWJsZURhdGEpO1xyXG4gIH1cclxuXHJcbiAgY2hlY2tJZlNvcnRpbmdJc0FwcGxpZWQoKSB7XHJcbiAgICBmb3IobGV0IFtrZXksdmFsdWVdIG9mIHRoaXMuYW5uYVNvcnRTZXJ2aWNlLmNvbHVtblNvcnRTdGF0ZS5lbnRyaWVzKCkpe1xyXG4gICAgICBpZih2YWx1ZSA9PSBcIkFTQ1wiKXtcclxuICAgICAgICAgIHRoaXMudGFibGVEYXRhID0gY2xvbmVEZWVwKHRoaXMuYW5uYVNvcnRTZXJ2aWNlLnNvcnREYXRhRm9yQ29tcG9uZW50T3RoZXJUaGFuTHVyQW5kQ3NyUGFnZSh0cnVlLHRoaXMudGFibGVEYXRhLGtleSkpO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYodmFsdWUgPT0gXCJERVNDXCIpe1xyXG4gICAgICAgICAgdGhpcy50YWJsZURhdGEgPSBjbG9uZURlZXAodGhpcy5hbm5hU29ydFNlcnZpY2Uuc29ydERhdGFGb3JDb21wb25lbnRPdGhlclRoYW5MdXJBbmRDc3JQYWdlKGZhbHNlLHRoaXMudGFibGVEYXRhLGtleSkpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcbiAgZGlzYWJsZUVuYWJsZUVhY2hDb2x1bW5Ub29sdGlwSWNvbigpIHtcclxuICAgIHRoaXMudGFibGVIZWFkZXJzLmZvckVhY2goaGVhZGVyID0+IHtcclxuICAgICAgXHJcbiAgICAgIGhlYWRlci5oZWFkZXJJbmZvLmZvckVhY2goaXRlbSA9PiB7XHJcbiAgICAgICAgaWYgKGl0ZW0uc2hvd1Rvb2x0aXBJY29uKSB7XHJcbiAgICAgICAgICBcclxuICAgICAgICAgIGxldCB2YWx1ZXMgPSBbXTtcclxuICAgICAgICAgIGl0ZW0uZGlzYWJsZVRvb2x0aXBJY29uID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgICBpdGVtLmZpbHRlclNvcnRPYmplY3RLZXlzLmZvckVhY2goa2V5ID0+IHtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIGxldCBsYXRlc3RGaWx0ZXJzID0gdGhpcy5hbm5hRmlsdGVyU2VydmljZS5hcHBsaWVkRmlsdGVyc0FycmF5O1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgaWYobGF0ZXN0RmlsdGVycy5sZW5ndGggPiAwICYmIGl0ZW0uZGlzYWJsZVRvb2x0aXBJY29uICYmIGxhdGVzdEZpbHRlcnNbbGF0ZXN0RmlsdGVycy5sZW5ndGggLSAxXSA9PSBrZXkpe1xyXG4gICAgICAgICAgICAgICAgaXRlbS5kaXNhYmxlVG9vbHRpcEljb24gPSBmYWxzZTtcclxuICAgICAgICAgICAgfSBcclxuXHJcbiAgICAgICAgICAgIGlmKGl0ZW0uZGlzYWJsZVRvb2x0aXBJY29uKXtcclxuICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICBpZihrZXkgPT0gXCJwZXJpb2RcIil7XHJcbiAgICAgICAgICAgICAgICBsZXQgdW5pcVN0YXJ0RGF0ZSA9IHVuaXEodGhpcy50YWJsZURhdGEubWFwKCh1OiB7IFt4OiBzdHJpbmddOiBhbnk7IH0pID0+IHVbXCJzdGFydERhdGVcIl0pKTtcclxuICAgICAgICAgICAgICAgIGxldCB1bmlxRW5kRGF0ZSA9IHVuaXEodGhpcy50YWJsZURhdGEubWFwKCh1OiB7IFt4OiBzdHJpbmddOiBhbnk7IH0pID0+IHVbXCJlbmREYXRlXCJdKSk7XHJcbiAgXHJcbiAgICAgICAgICAgICAgICBpdGVtLmRpc2FibGVUb29sdGlwSWNvbiA9ICh1bmlxU3RhcnREYXRlLmxlbmd0aCA+IDEgfHwgdW5pcUVuZERhdGUubGVuZ3RoID4gMSkgPyBmYWxzZSA6IHRydWU7IFxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBlbHNle1xyXG4gICAgICAgICAgICAgICAgdmFsdWVzID0gdGhpcy50YWJsZURhdGEubWFwKCh1OiB7IFt4OiBzdHJpbmddOiBhbnk7IH0pID0+IHVba2V5XSk7XHJcbiAgICAgICAgICAgICAgICBpZiggKGl0ZW0uZmlsdGVyID09IFwiQ0hFQ0tCT1hcIiAmJiB1bmlxKHZhbHVlcykuZmlsdGVyKG4gPT4gbiE9bnVsbCkubGVuZ3RoID4gMSkgfHwgKGl0ZW0uZmlsdGVyICE9IFwiQ0hFQ0tCT1hcIiAmJiB1bmlxKHZhbHVlcykuZmlsdGVyKG4gPT4gbiE9bnVsbCAmJiBuIT1cIi1cIikubGVuZ3RoID4gMSkpe1xyXG4gICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgaXRlbS5kaXNhYmxlVG9vbHRpcEljb24gPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICBcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgIH1cclxuICAgICAgICBcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuXHJcbiAgXHJcbiAgfVxyXG5cclxuICBzZXRNYXJnaW5MZWZ0Rm9yRmlsdGVySWNvbigpe1xyXG4gICAgbGV0IGVsZW1lbnRBcnIgPSB0aGlzLnZpZXdDaGlsZFRhYmxlSGVhZGVycy50b0FycmF5KCk7XHJcbiAgICBlbGVtZW50QXJyLmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgbGV0IGNoaWxkRGl2RWxlbWVudHMgPSBpdGVtLm5hdGl2ZUVsZW1lbnQuY2hpbGRyZW47XHJcbiAgICAgIFxyXG4gICAgICBpZiAoY2hpbGREaXZFbGVtZW50cy5sZW5ndGggPT0gMikge1xyXG4gICAgICAgIGxldCBmaXJzdFBhcmFncmFwaFdpZHRoID0gY2hpbGREaXZFbGVtZW50c1swXS5jaGlsZHJlblswXTtcclxuICAgICAgICBsZXQgc2Vjb25kUGFyYWdyYXBoV2lkdGggPSBjaGlsZERpdkVsZW1lbnRzWzFdLmNoaWxkcmVuWzBdO1xyXG4gICAgICAgIFxyXG4gICAgICAgIGlmKGZpcnN0UGFyYWdyYXBoV2lkdGgub2Zmc2V0V2lkdGggPiBzZWNvbmRQYXJhZ3JhcGhXaWR0aC5vZmZzZXRXaWR0aCl7XHJcbiAgICAgICAgICBsZXQgZGlmZiA9IGZpcnN0UGFyYWdyYXBoV2lkdGgub2Zmc2V0V2lkdGggLSBzZWNvbmRQYXJhZ3JhcGhXaWR0aC5vZmZzZXRXaWR0aDtcclxuICAgICAgICAgIGlmKGNoaWxkRGl2RWxlbWVudHNbMF0uY2hpbGRyZW4ubGVuZ3RoID09IDIpe1xyXG4gICAgICAgICAgICBjaGlsZERpdkVsZW1lbnRzWzBdLmNoaWxkcmVuWzFdLnN0eWxlLm1hcmdpbkxlZnQgPSA0ICsgJ3B4JztcclxuICAgICAgICAgIH1cclxuICBcclxuICAgICAgICAgIGlmKGNoaWxkRGl2RWxlbWVudHNbMV0uY2hpbGRyZW4ubGVuZ3RoID09IDIpe1xyXG5cclxuICAgICAgICAgICAgY2hpbGREaXZFbGVtZW50c1sxXS5jaGlsZHJlblsxXS5zdHlsZS5tYXJnaW5MZWZ0ID0gZGlmZiArIDQgKyAncHgnO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNle1xyXG4gICAgICAgICAgbGV0IGRpZmYgPSBzZWNvbmRQYXJhZ3JhcGhXaWR0aC5vZmZzZXRXaWR0aCAtIGZpcnN0UGFyYWdyYXBoV2lkdGgub2Zmc2V0V2lkdGg7XHJcbiAgICAgICAgICBpZihjaGlsZERpdkVsZW1lbnRzWzBdLmNoaWxkcmVuLmxlbmd0aCA9PSAyKXtcclxuICAgICAgICAgICAgY2hpbGREaXZFbGVtZW50c1swXS5jaGlsZHJlblsxXS5zdHlsZS5tYXJnaW5MZWZ0ID0gZGlmZiArIDQgKyAncHgnO1xyXG4gICAgICAgICAgfVxyXG4gIFxyXG4gICAgICAgICAgaWYoY2hpbGREaXZFbGVtZW50c1sxXS5jaGlsZHJlbi5sZW5ndGggPT0gMil7XHJcblxyXG4gICAgICAgICAgICBjaGlsZERpdkVsZW1lbnRzWzFdLmNoaWxkcmVuWzFdLnN0eWxlLm1hcmdpbkxlZnQgPSA0ICsgJ3B4JztcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgXHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZGF0YVJvd0NsaWNrZWQocm93RGF0YTogYW55KSB7XHJcbiAgICB0aGlzLnJvd0NsaWNrZWQuZW1pdChyb3dEYXRhKTtcclxuICB9XHJcblxyXG4gIHJhZGlvQnV0dG9uQ2xpY2tlZChkYXRhOiBhbnksIGFjdGlvbjogc3RyaW5nLCBpc0Rpc2FibGVkOiBib29sZWFuKSB7XHJcbiAgICBpZiAoIWlzRGlzYWJsZWQpIHtcclxuICAgICAgdGhpcy5yYWRpb0J1dHRvblNlbGVjdGVkLmVtaXQoeyBkYXRhLCBhY3Rpb24gfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBiaW5kVGhlVmFsdWVUb1NlbGxlckdyb3VwVG9vbHRpcChzZWxsZXJHcm91cEhpZXJhcmNoeTogUmF0aW5nU2VsbGVyR3JvdXBIaWVyYXJjaHlbXSwgdG9vbHRpcDogYW55KTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5oaWVyYXJjaHlUb29sdGlwICYmIHRoaXMuaGllcmFyY2h5VG9vbHRpcC5vcGVuKSB7XHJcbiAgICAgIHRoaXMuaGllcmFyY2h5VG9vbHRpcC5jbG9zZSgpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5zZWxsZXJHcm91cEhpZXJhcmNoeSA9IHNlbGxlckdyb3VwSGllcmFyY2h5O1xyXG4gICAgdGhpcy5oaWVyYXJjaHlUb29sdGlwID0gdG9vbHRpcDtcclxuICAgIHRoaXMuaGllcmFyY2h5VG9vbHRpcC5vcGVuKCk7XHJcbiAgfVxyXG5cclxuICBpY29uQ2xpY2tlZChyb3dEYXRhOiBhbnksaWNvbkNsYXNzOiBzdHJpbmcpe1xyXG4gICAgXHJcbiAgICBpZihcIm9yZGVySWRcIiBpbiByb3dEYXRhICYmIGljb25DbGFzcy5pbmNsdWRlcyhcIm1kaS1zdGFyXCIpICl7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRTdGFycmVkT3JkZXJJZCA9IHJvd0RhdGEub3JkZXJJZDtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmd0SWNvbkNsaWNrZWQuZW1pdCh7ZGF0YTogcm93RGF0YSxpY29uQ2xhc3M6IGljb25DbGFzc30pO1xyXG4gIH1cclxuXHJcbiAgc3ZnSWNvbkNsaWNrZWQoZGF0YTogR3RDb2x1bW5JY29uRW1pdHRlZERhdGEpe1xyXG4gICAgdGhpcy5ndFNWR0ljb25DbGlja2VkLmVtaXQoZGF0YSk7XHJcbiAgfVxyXG5cclxuICB0ZXh0QWN0aW9uQ2xpY2tlZChyb3dEYXRhOiBhbnksaWQ6IGFueSl7XHJcbiAgICB0aGlzLmd0VGV4dEFjdGlvbkNsaWNrZWQuZW1pdCh7ZGF0YTpyb3dEYXRhLCBpZDogaWR9KTtcclxuICB9XHJcblxyXG4gIGljb25DbGlja2VkT25TdHJpbmdJY29uQWN0aW9uVHlwZShyb3dEYXRhOiBhbnksIGlkOiBhbnkpe1xyXG4gICAgdGhpcy5ndFRleHRBY3Rpb25DbGlja2VkLmVtaXQoe2RhdGE6cm93RGF0YSwgaWQ6IGlkfSk7XHJcbiAgfVxyXG5cclxuICB2aWV3RGV0YWlsc0NsaWNrZWQocm93RGF0YTogYW55KXtcclxuICAgIHRoaXMuZ3RWaWV3RGV0YWlsQ2xpY2tlZC5lbWl0KHtkYXRhOnJvd0RhdGF9KTtcclxuICB9XHJcblxyXG4gIC8vIHNldENvbHVtblNvcnRTdGF0ZU1hcCgpe1xyXG4gIC8vICAgdGhpcy50YWJsZUhlYWRlcnMuZm9yRWFjaChjb2x1bW4gPT4ge1xyXG4gIC8vICAgICAgIGNvbHVtbi5oZWFkZXJJbmZvLmZvckVhY2goIChoZWFkZXIpID0+IHtcclxuICAvLyAgICAgICAgICAgaWYoaGVhZGVyLnNob3dUb29sdGlwSWNvbiAmJiBoZWFkZXIuaXNTb3J0UmVxdWlyZWQpe1xyXG4gIC8vICAgICAgICAgICAgICAgaGVhZGVyLmlzU29ydFJlcXVpcmVkLmZvckVhY2goIChpdGVtLGluZGV4KSA9PiB7XHJcbiAgLy8gICAgICAgICAgICAgICAgIGlmKGl0ZW0pe1xyXG4gIC8vICAgICAgICAgICAgICAgICAgIHRoaXMuYW5uYVNvcnRTZXJ2aWNlLmNvbHVtblNvcnRTdGF0ZS5zZXQoaGVhZGVyLmZpbHRlclNvcnRPYmplY3RLZXlzW2luZGV4XSwgXCJERUZBVUxUXCIpOyAgXHJcbiAgLy8gICAgICAgICAgICAgICAgIH1cclxuICAvLyAgICAgICAgICAgICAgIH0pXHJcbiAgLy8gICAgICAgICAgIH1cclxuICAvLyAgICAgICB9KVxyXG4gIC8vICAgfSk7XHJcbiAgLy8gfVxyXG5cclxuICBzdG9yZVNvcnRUeXBlSW5UZW1wVmFyaWFibGUoZXZlbnQ6IFNvcnRUeXBlKXtcclxuICAgIHRoaXMudGVtcFNvcnRPcmRlciA9IGV2ZW50O1xyXG4gICAgdGhpcy5kaXNhYmxlQXBwbHlCdXR0b25PZlNlbGVjdGVkRmlsdGVyKCk7XHJcbiAgfVxyXG5cclxuICB1bkNoZWNrQWxsQ2hlY2tib3goKXtcclxuICAgICAgdGhpcy50b29sdGlwT3B0aW9ucy5mb3JFYWNoKGl0ZW0gPT4ge1xyXG4gICAgICAgIGl0ZW0uaXNTZWxlY3RlZCA9IGZhbHNlO1xyXG4gICAgICAgIGxldCBpbmRleCA9IHRoaXMuY2xvbmVkVG9vbHRpcE9wdGlvbnMuZmluZEluZGV4KG9wdCA9PiBvcHQuaWQgPT0gaXRlbS5pZCk7XHJcbiAgICAgICAgdGhpcy5jbG9uZWRUb29sdGlwT3B0aW9uc1tpbmRleF0uaXNTZWxlY3RlZCA9IGZhbHNlO1xyXG4gICAgICAgIFxyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy5zZWxlY3RlZENoZWNrYm94T3B0aW9uc0NvdW50ID0gMDtcclxuICAgICAgdGhpcy5kaXNhYmxlU2VsZWN0QWxsID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuZGlzYWJsZUNsZWFyQWxsID0gdHJ1ZTtcclxuICAgICAgdGhpcy5kaXNhYmxlQ2hlY2tib3hBcHBseSA9IHRydWU7XHJcbiAgfVxyXG5cclxuICBzZWxlY3RBbGxDaGVja2JveCgpe1xyXG4gICAgICB0aGlzLnRvb2x0aXBPcHRpb25zLmZvckVhY2goaXRlbSA9PiB7XHJcbiAgICAgICAgaXRlbS5pc1NlbGVjdGVkID0gdHJ1ZTtcclxuICAgICAgICBsZXQgaW5kZXggPSB0aGlzLmNsb25lZFRvb2x0aXBPcHRpb25zLmZpbmRJbmRleChvcHQgPT4gb3B0LmlkID09IGl0ZW0uaWQpO1xyXG4gICAgICAgIHRoaXMuY2xvbmVkVG9vbHRpcE9wdGlvbnNbaW5kZXhdLmlzU2VsZWN0ZWQgPSB0cnVlO1xyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy5zZWxlY3RlZENoZWNrYm94T3B0aW9uc0NvdW50ID0gdGhpcy50b29sdGlwT3B0aW9ucy5sZW5ndGg7XHJcbiAgICAgIHRoaXMuZGlzYWJsZVNlbGVjdEFsbCA9IHRydWU7XHJcbiAgICAgIHRoaXMuZGlzYWJsZUNsZWFyQWxsID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuZGlzYWJsZUNoZWNrYm94RmlsdGVyQXBwbHlCdXR0b24oKTtcclxuICB9XHJcblxyXG4gIHNlYXJjaEZvclRoZUl0ZW0oc3RyOiBzdHJpbmcpe1xyXG4gICAgICBpZihzdHIpe1xyXG4gICAgICAgICAgdGhpcy50b29sdGlwT3B0aW9ucyA9IGNsb25lRGVlcCh0aGlzLmNsb25lZFRvb2x0aXBPcHRpb25zLmZpbHRlcihpdGVtID0+IGl0ZW0ubGFiZWwudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHN0ci50b0xvd2VyQ2FzZSgpKSkpO1xyXG4gICAgICAgICAgdGhpcy5jYWxjdWxhdGVIZWlnaHRGb3JGaWx0ZXJUb29sdGlwKCk7XHJcbiAgICAgICAgICB0aGlzLnRvb2x0aXBPcHRpb25zLmZvckVhY2goZWxlbWVudCA9PiB7XHJcbiAgICAgICAgICAgIGVsZW1lbnQubGFiZWwgPSB0aGlzLmJvbGRTdHJpbmcoZWxlbWVudC5sYWJlbCxzdHIpO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICBcclxuICAgICAgICAgIGlmKHRoaXMudG9vbHRpcE9wdGlvbnMubGVuZ3RoID4gMCl7XHJcbiAgICAgICAgICAgICAgbGV0IHVuc2VsZWN0ZWRJdGVtcyA9IHRoaXMudG9vbHRpcE9wdGlvbnMuZmlsdGVyKChpdGVtKSA9PiAhaXRlbS5pc1NlbGVjdGVkKTtcclxuICAgICAgICAgICAgICBsZXQgc2VsZWN0ZWRJdGVtcyA9IHRoaXMudG9vbHRpcE9wdGlvbnMuZmlsdGVyKChpdGVtKSA9PiBpdGVtLmlzU2VsZWN0ZWQpOyAgXHJcbiAgICAgICAgICAgICAgdGhpcy5kaXNhYmxlU2VsZWN0QWxsID0gdW5zZWxlY3RlZEl0ZW1zLmxlbmd0aCA9PSAwO1xyXG4gICAgICAgICAgICAgIHRoaXMuZGlzYWJsZUNsZWFyQWxsID0gc2VsZWN0ZWRJdGVtcy5sZW5ndGggPT0gMDtcclxuICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkQ2hlY2tib3hPcHRpb25zQ291bnQgPSBzZWxlY3RlZEl0ZW1zLmxlbmd0aDtcclxuICAgICAgICAgICAgICB0aGlzLmRpc2FibGVDaGVja2JveEFwcGx5ID0gKHNlbGVjdGVkSXRlbXMubGVuZ3RoID09IDAgfHwgIXRoaXMuY2hlY2tJZkNoZWNrYm94VG9vbHRpcElzRmlsdGVyZWQoKSk7XHJcbiAgICAgICAgICBcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2V7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZENoZWNrYm94T3B0aW9uc0NvdW50ID0gMDtcclxuICAgICAgICAgICAgICB0aGlzLmRpc2FibGVDaGVja2JveEFwcGx5ID0gdHJ1ZTtcclxuICAgICAgICAgICAgICB0aGlzLmRpc2FibGVDbGVhckFsbCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgdGhpcy5kaXNhYmxlU2VsZWN0QWxsID0gdHJ1ZTtcclxuICAgICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBlbHNle1xyXG4gICAgICAgICAgdGhpcy50b29sdGlwT3B0aW9ucyA9IGNsb25lRGVlcCh0aGlzLmNsb25lZFRvb2x0aXBPcHRpb25zKTtcclxuICAgICAgICAgIHRoaXMuY2FsY3VsYXRlSGVpZ2h0Rm9yRmlsdGVyVG9vbHRpcCgpO1xyXG4gICAgICAgICAgbGV0IHVuc2VsZWN0ZWRJdGVtcyA9IHRoaXMudG9vbHRpcE9wdGlvbnMuZmlsdGVyKGl0ZW0gPT4gIWl0ZW0uaXNTZWxlY3RlZCk7XHJcbiAgICAgICAgICBsZXQgc2VsZWN0ZWRJdGVtcyA9IHRoaXMudG9vbHRpcE9wdGlvbnMuZmlsdGVyKGl0ZW0gPT4gaXRlbS5pc1NlbGVjdGVkKTtcclxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRDaGVja2JveE9wdGlvbnNDb3VudCA9IHNlbGVjdGVkSXRlbXMubGVuZ3RoO1xyXG4gICAgICAgICAgdGhpcy5kaXNhYmxlU2VsZWN0QWxsID0gdW5zZWxlY3RlZEl0ZW1zLmxlbmd0aCA9PSAwO1xyXG4gICAgICAgICAgdGhpcy5kaXNhYmxlQ2xlYXJBbGwgPSBzZWxlY3RlZEl0ZW1zLmxlbmd0aCA9PSAwO1xyXG4gICAgICAgICAgdGhpcy5kaXNhYmxlQ2hlY2tib3hGaWx0ZXJBcHBseUJ1dHRvbigpO1xyXG4gICAgICB9XHJcbiAgfVxyXG4gIFxyXG4gIGNhbGN1bGF0ZUhlaWdodEZvckZpbHRlclRvb2x0aXAoKXtcclxuICAgIGxldCBkYXRhTGVuZ3RoID0gdGhpcy50b29sdGlwT3B0aW9ucy5sZW5ndGg7XHJcbiAgICBpZihkYXRhTGVuZ3RoID09IDApe1xyXG4gICAgICBkYXRhTGVuZ3RoKys7XHJcbiAgICB9IFxyXG4gICAgdGhpcy5oZWlnaHRPZkNoZWNrYm94VG9vbHRpcEZpbHRlciA9IHRoaXMudG9vbHRpcE9wdGlvbnMubGVuZ3RoID4gNiA/IDIwMCA6ICgoMjYuMDMgKiBkYXRhTGVuZ3RoKSArICh0aGlzLm1hcmdpbiAqIGRhdGFMZW5ndGgpICsgdGhpcy5tYXJnaW4pOyAgICAgIFxyXG4gIH1cclxuXHJcbiAgYm9sZFN0cmluZyhzdHI6IHN0cmluZywgZmluZDogc3RyaW5nKSB7XHJcbiAgICBsZXQgaW5kZXhlcyA9IHRoaXMuZ2V0SW5kaWNlc09mKGZpbmQsIHN0ciwgZmFsc2UpO1xyXG4gICAgXHJcbiAgICBpbmRleGVzLmZvckVhY2goKGl0ZW0saW5kZXgpID0+IHtcclxuICAgICAgICBsZXQgc3RhcnRJbmRleCA9IGl0ZW0gKyAoaW5kZXggKiA3KTsgLy9NdWx0aXBseWluZyBieSA3IGFzIHRoZXJlIGFyZSA3Y2hhcjogPGI+PC9iPlxyXG4gICAgICAgIGxldCBlbmRJbmRleCA9IHN0YXJ0SW5kZXggKyBmaW5kLmxlbmd0aDtcclxuICAgICAgICBsZXQgc3RyVG9CZVJlcGxhY2VkID0gc3RyLnN1YnN0cmluZyhzdGFydEluZGV4LCBlbmRJbmRleCk7XHJcbiAgICAgICAgc3RyID0gc3RyLnJlcGxhY2Uoc3RyVG9CZVJlcGxhY2VkLCBcIjxiPlwiICsgc3RyVG9CZVJlcGxhY2VkICsgXCI8L2I+XCIpOyBcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIHN0cjtcclxufVxyXG5cclxuZ2V0SW5kaWNlc09mKHNlYXJjaFN0cjogc3RyaW5nLCBzdHI6IHN0cmluZywgY2FzZVNlbnNpdGl2ZTogYm9vbGVhbikge1xyXG4gICAgdmFyIHNlYXJjaFN0ckxlbiA9IHNlYXJjaFN0ci5sZW5ndGg7XHJcbiAgICBpZiAoc2VhcmNoU3RyTGVuID09IDApIHtcclxuICAgICAgICByZXR1cm4gW107XHJcbiAgICB9XHJcbiAgICB2YXIgc3RhcnRJbmRleCA9IDAsIGluZGV4LCBpbmRpY2VzID0gW107XHJcbiAgICBpZiAoIWNhc2VTZW5zaXRpdmUpIHtcclxuICAgICAgICBzdHIgPSBzdHIudG9Mb3dlckNhc2UoKTtcclxuICAgICAgICBzZWFyY2hTdHIgPSBzZWFyY2hTdHIudG9Mb3dlckNhc2UoKTtcclxuICAgIH1cclxuICAgIHdoaWxlICgoaW5kZXggPSBzdHIuaW5kZXhPZihzZWFyY2hTdHIsIHN0YXJ0SW5kZXgpKSA+IC0xKSB7XHJcbiAgICAgICAgaW5kaWNlcy5wdXNoKGluZGV4KTtcclxuICAgICAgICBzdGFydEluZGV4ID0gaW5kZXggKyBzZWFyY2hTdHJMZW47XHJcbiAgICB9XHJcbiAgICByZXR1cm4gaW5kaWNlcztcclxufVxyXG5cclxuXHJcbiAgcmVtb3ZlQm9sZEVsZW1lbnRGcm9tU3RyaW5nKG9yaWdpbmFsU3RyaW5nOiBzdHJpbmcpe1xyXG4gICAgICBsZXQgZmlyc3RSZWdFeHAgPSBuZXcgUmVnRXhwKCc8Yj4nLCdnJyk7XHJcbiAgICAgIGxldCBzZWNvbmRSZWdFeHAgPSBuZXcgUmVnRXhwKCc8L2I+JywnZycpO1xyXG5cclxuICAgICAgbGV0IHJldCA9IG9yaWdpbmFsU3RyaW5nLnJlcGxhY2UoZmlyc3RSZWdFeHAsJycpO1xyXG4gICAgICByZXR1cm4gcmV0LnJlcGxhY2Uoc2Vjb25kUmVnRXhwLCcnKTtcclxuICB9XHJcblxyXG4gIGNsZWFyU2VhcmNoZWRJdGVtKCl7XHJcbiAgICAgIHRoaXMuc2VhcmNoSXRlbSA9IFwiXCI7XHJcbiAgICAgIHRoaXMuc2VhcmNoRm9yVGhlSXRlbShcIlwiKTtcclxuICB9XHJcblxyXG4gIGNhbGVuZGFyRGF0ZUNoYW5nZWQoZXZlbnQ6IGFueSl7XHJcbiAgICB0aGlzLmNhbGVuZGFyU2VsZWN0aW9uID0gZXZlbnQ7XHJcbiAgICB0aGlzLmRpc2FibGVDYWxlbmRhckFwcGx5QnV0dG9uKCk7XHJcbiAgfVxyXG5cclxuICBkaXNhYmxlQ2FsZW5kYXJBcHBseUJ1dHRvbigpIHtcclxuXHJcbiAgICBpZih0aGlzLnNob3dGaWx0ZXJDb21wb25lbnQgJiYgdGhpcy5zaG93U29ydENvbXBvbmVudCl7XHJcbiAgICAgIGxldCBpc0ZpbHRlckNoYW5nZWQgPSB0aGlzLmNoZWNrSWZEYXRlVG9vbHRpcElzRmlsdGVyZWQoKTtcclxuICAgICAgbGV0IGlzU29ydENoYW5nZWQgPSB0aGlzLmNoZWNrSWZTb3J0aW5nQ2hhbmdlZCgpO1xyXG4gICAgICAgICAgXHJcbiAgICAgIHRoaXMuZGlzYWJsZUNhbGVuZGFyQXBwbHlCdG4gPSAhKHRoaXMuY2FsZW5kYXJTZWxlY3Rpb24uZnJvbURhdGUgJiYgdGhpcy5jYWxlbmRhclNlbGVjdGlvbi50b0RhdGUpIHx8ICghaXNTb3J0Q2hhbmdlZCAmJiAhaXNGaWx0ZXJDaGFuZ2VkICk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmKHRoaXMuc2hvd0ZpbHRlckNvbXBvbmVudCl7XHJcbiAgICAgICAgdGhpcy5kaXNhYmxlQ2FsZW5kYXJBcHBseUJ0biA9ICEodGhpcy5jYWxlbmRhclNlbGVjdGlvbi5mcm9tRGF0ZSAmJiB0aGlzLmNhbGVuZGFyU2VsZWN0aW9uLnRvRGF0ZSkgfHwgIXRoaXMuY2hlY2tJZkRhdGVUb29sdGlwSXNGaWx0ZXJlZCgpO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZih0aGlzLnNob3dTb3J0Q29tcG9uZW50KXtcclxuICAgICAgICB0aGlzLmRpc2FibGVDYWxlbmRhckFwcGx5QnRuID0gIXRoaXMuY2hlY2tJZlNvcnRpbmdDaGFuZ2VkKCk7XHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbiAgc2V0SW5pdGlhbFZhbHVlTWFwRm9yVGltZUZpbHRlcihrZXk6IHN0cmluZykge1xyXG4gICAgbGV0IGRhdGEgPSB0aGlzLmNsb25lZFRhYmxlRGF0YS5maWx0ZXIoXHJcbiAgICAgICAgKG9iaikgPT4gIVtcIlwiLCBcIi1cIiwgbnVsbCwgXCIwXCIsIFwiPG11bHRpPlwiXS5pbmNsdWRlcyhvYmpba2V5XSkpO1xyXG5cclxuICAgIGxldCB0aW1lQXJyID0gbWFwKGRhdGEsIGtleSk7XHJcbiAgICB0aW1lQXJyLnNvcnQoKGEsIGIpID0+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5hbm5hRGF0ZVRpbWVGb3JtYXRTZXJ2aWNlLnNvcnRCeVRpbWVBc2NlbmRpbmcoYSwgYik7XHJcbiAgICB9KTtcclxuICAgIFxyXG4gICAgbGV0IG9iaiA9IHtcclxuICAgICAgICBmcm9tVGltZTogdGltZUFyclswXSxcclxuICAgICAgICB0b1RpbWU6IHRpbWVBcnJbdGltZUFyci5sZW5ndGggLSAxXSxcclxuICAgICAgICBpbmNsdWRlTXVsdGk6IGZhbHNlLFxyXG4gICAgICAgIGluY2x1ZGVaZXJvOiBmYWxzZSxcclxuICAgICAgICBpbmNsdWRlVGltZVJhbmdlOiBmYWxzZVxyXG4gICAgfTtcclxuICAgIFxyXG4gICAgaWYgKHRoaXMuZ3RHZW5lcmFsQ29uZmlnLmNvbXBvbmVudCA9PT0gXCJSQVRJTkdcIikge1xyXG4gICAgICAgIHRoaXMuc2V0SW5pdGlhbFZhbHVlTWFwRm9yUmF0aW5nUGFnZVRpbWVGaWx0ZXIoa2V5KTtcclxuICAgIH1lbHNlIHtcclxuICAgICAgICBsZXQgaW5jbHVkZU11bHRpID1cclxuICAgICAgICB0aGlzLmNsb25lZFRhYmxlRGF0YS5maW5kSW5kZXgoKG9iaikgPT4gb2JqW2tleV0gPT0gXCI8bXVsdGk+XCIpICE9XHJcbiAgICAgICAgLTE7XHJcbiAgICAgICAgbGV0IGluY2x1ZGVaZXJvID1cclxuICAgICAgICAgICAgdGhpcy5jbG9uZWRUYWJsZURhdGEuZmluZEluZGV4KChvYmopID0+IG9ialtrZXldID09IFwiMFwiKSAhPSAtMTtcclxuICAgICAgICBsZXQgaW5jbHVkZVRpbWVSYW5nZSA9XHJcbiAgICAgICAgICAgIHRoaXMuY2xvbmVkVGFibGVEYXRhLmZpbmRJbmRleChcclxuICAgICAgICAgICAgICAgIChvYmopID0+IG9ialtrZXldICE9IFwiMFwiICYmIG9ialtrZXldICE9IFwiPG11bHRpPlwiXHJcbiAgICAgICAgICAgICkgIT0gLTE7XHJcbiAgICAgICAgXHJcbiAgICAgICAgbGV0IG9iaiA9IHtcclxuICAgICAgICAgICAgZnJvbVRpbWU6IHRpbWVBcnJbMF0sXHJcbiAgICAgICAgICAgIHRvVGltZTogdGltZUFyclt0aW1lQXJyLmxlbmd0aCAtIDFdLFxyXG4gICAgICAgICAgICBpbmNsdWRlTXVsdGk6IGluY2x1ZGVNdWx0aSxcclxuICAgICAgICAgICAgaW5jbHVkZVplcm86IGluY2x1ZGVaZXJvLFxyXG4gICAgICAgICAgICBpbmNsdWRlVGltZVJhbmdlOiBpbmNsdWRlVGltZVJhbmdlLFxyXG4gICAgICAgIH07XHJcbiAgICAgICAgdGhpcy5hbm5hRmlsdGVyU2VydmljZS5pbml0aWFsVmFsdWVNYXAuc2V0KGtleSwgb2JqKTtcclxuICAgIH1cclxufVxyXG5cclxuc2V0SW5pdGlhbFZhbHVlTWFwRm9yUmF0aW5nUGFnZVRpbWVGaWx0ZXIoa2V5OiBzdHJpbmcpe1xyXG4gIGxldCBpbmNsdWRlTXVsdGkgPVxyXG4gICAgICAgICAgICB0aGlzLmNsb25lZFRhYmxlRGF0YS5maW5kSW5kZXgoKG9iaikgPT4gb2JqW2tleV1bMF0gPT0gXCI8bXVsdGk+XCIpICE9XHJcbiAgICAgICAgICAgIC0xO1xyXG4gICAgICAgIGxldCBpbmNsdWRlWmVybyA9XHJcbiAgICAgICAgICAgIHRoaXMuY2xvbmVkVGFibGVEYXRhLmZpbmRJbmRleCgob2JqKSA9PiBvYmpba2V5XVswXSA9PSBcIjBcIikgIT0gLTE7XHJcbiAgICAgICAgbGV0IGluY2x1ZGVUaW1lUmFuZ2UgPVxyXG4gICAgICAgICAgICB0aGlzLmNsb25lZFRhYmxlRGF0YS5maW5kSW5kZXgoXHJcbiAgICAgICAgICAgICAgICAob2JqKSA9PiBvYmpba2V5XVswXSAhPSBcIjBcIiAmJiBvYmpba2V5XVswXSAhPSBcIjxtdWx0aT5cIlxyXG4gICAgICAgICAgICApICE9IC0xO1xyXG5cclxuICAgICAgICBsZXQgc3RhcnRUaW1lQXJyID0gbWFwKHRoaXMuY2xvbmVkVGFibGVEYXRhLCBcInN0YXJ0VGltZVwiKTtcclxuICAgICAgICBsZXQgZW5kVGltZUFyciA9IG1hcCh0aGlzLmNsb25lZFRhYmxlRGF0YSwgXCJlbmRUaW1lXCIpO1xyXG5cclxuICAgICAgICBzdGFydFRpbWVBcnIuc29ydCgoYSwgYikgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5hbm5hRGF0ZVRpbWVGb3JtYXRTZXJ2aWNlLnNvcnRCeVRpbWVBc2NlbmRpbmcoYSwgYik7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIGVuZFRpbWVBcnIuc29ydCgoYSwgYikgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5hbm5hRGF0ZVRpbWVGb3JtYXRTZXJ2aWNlLnNvcnRCeVRpbWVEZXNjZW5kaW5nKGEsIGIpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGxldCBzdGFydF90aW1lID0gc3RhcnRUaW1lQXJyW3N0YXJ0VGltZUFyci5maW5kSW5kZXgoZWxlbWVudCA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gZWxlbWVudCAhPT0gdW5kZWZpbmVkICYmIGVsZW1lbnQgIT09IG51bGwgJiYgZWxlbWVudCAhPT0gJyc7XHJcbiAgICAgICAgfSldXHJcbiAgICAgICAgbGV0IG9iaiA9IHtcclxuICAgICAgICAgICAgZnJvbVRpbWU6IHN0YXJ0X3RpbWUsXHJcbiAgICAgICAgICAgIHRvVGltZTogZW5kVGltZUFyclswXSxcclxuICAgICAgICAgICAgaW5jbHVkZU11bHRpOiBpbmNsdWRlTXVsdGksXHJcbiAgICAgICAgICAgIGluY2x1ZGVaZXJvOiBpbmNsdWRlWmVybyxcclxuICAgICAgICAgICAgaW5jbHVkZVRpbWVSYW5nZTogaW5jbHVkZVRpbWVSYW5nZSxcclxuICAgICAgICB9O1xyXG4gICAgICAgIHRoaXMuYW5uYUZpbHRlclNlcnZpY2UuaW5pdGlhbFZhbHVlTWFwLnNldChrZXksIG9iaik7IFxyXG4gICAgfVxyXG5cclxuICAgIHN0YXJ0VGltZUhvdXJDaGFuZ2UodmFsOiBzdHJpbmcpe1xyXG4gICAgICAgIGlmKHZhbC5sZW5ndGggPT0gMCB8fCAhKyh2YWwpIHx8IDEgPiBwYXJzZUludCh2YWwpIHx8IHBhcnNlSW50KHZhbCkgPiAxMil7XHJcbiAgICAgICAgICAgIHRoaXMuc3RhcnRUaW1lSG91ckVyciA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2V7XHJcbiAgICAgICAgICAgIHRoaXMuc3RhcnRUaW1lSG91ckVyciA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmRpc2FibGVUaW1lRmlsdGVyQXBwbHlCdXR0b24oKTtcclxuICAgIH1cclxuXHJcbiAgICBzdGFydFRpbWVNaW5DaGFuZ2UodmFsOiBzdHJpbmcpe1xyXG4gICAgICAgIGlmKHZhbC5sZW5ndGggIT0gMiAgfHwgKCErKHZhbCkgJiYgdmFsICE9IFwiMDBcIikgfHwgMCA+IHBhcnNlSW50KHZhbCkgfHwgcGFyc2VJbnQodmFsKSA+IDU5KXtcclxuICAgICAgICAgICAgdGhpcy5zdGFydFRpbWVNaW5FcnIgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNle1xyXG4gICAgICAgICAgICB0aGlzLnN0YXJ0VGltZU1pbkVyciA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmRpc2FibGVUaW1lRmlsdGVyQXBwbHlCdXR0b24oKTtcclxuICAgIH1cclxuXHJcbiAgICBlbmRUaW1lSG91ckNoYW5nZSh2YWw6IHN0cmluZyl7XHJcbiAgICAgICAgaWYodmFsLmxlbmd0aCA9PSAwIHx8ICErKHZhbCkgfHwgMSA+IHBhcnNlSW50KHZhbCkgfHwgcGFyc2VJbnQodmFsKSA+IDEyKXtcclxuICAgICAgICAgICAgdGhpcy5lbmRUaW1lSG91ckVyciA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2V7XHJcbiAgICAgICAgICAgIHRoaXMuZW5kVGltZUhvdXJFcnIgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5kaXNhYmxlVGltZUZpbHRlckFwcGx5QnV0dG9uKCk7XHJcbiAgICB9XHJcblxyXG4gICAgZW5kVGltZU1pbkNoYW5nZSh2YWw6IHN0cmluZyl7XHJcbiAgICAgICAgaWYodmFsLmxlbmd0aCAhPSAyICB8fCAoISsodmFsKSAmJiB2YWwgIT0gXCIwMFwiKSB8fCAwID4gcGFyc2VJbnQodmFsKSB8fCBwYXJzZUludCh2YWwpID4gNTkpe1xyXG4gICAgICAgICAgICB0aGlzLmVuZFRpbWVNaW5FcnIgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNle1xyXG4gICAgICAgICAgICB0aGlzLmVuZFRpbWVNaW5FcnIgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5kaXNhYmxlVGltZUZpbHRlckFwcGx5QnV0dG9uKCk7XHJcbiAgICB9XHJcblxyXG4gICAgY2hlY2tJZkNoZWNrYm94VG9vbHRpcElzRmlsdGVyZWQoKXtcclxuICAgICAgICBsZXQgY3VycmVudFNlbGVjdGVkVmFsdWUgPSBbXTtcclxuICAgICAgICBsZXQgcHJldmlvdXNTZWxlY3RlZFZhbHVlID0gW107XHJcblxyXG4gICAgICAgIGlmKHRoaXMuYW5uYUZpbHRlclNlcnZpY2UudG9vbHRpcFNlbGVjdGVkTWFwLmhhcyh0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnNlbGVjdGVkUmFkaW8pKXtcclxuICAgICAgICAgIHByZXZpb3VzU2VsZWN0ZWRWYWx1ZSA9IHRoaXMuYW5uYUZpbHRlclNlcnZpY2UudG9vbHRpcFNlbGVjdGVkTWFwLmdldCh0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnNlbGVjdGVkUmFkaW8pO1xyXG4gICAgICAgICAgXHJcbiAgICAgICAgICBpZighdGhpcy5hbm5hRmlsdGVyU2VydmljZS5pbml0aWFsVmFsdWVNYXAuaGFzKHRoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpbykpe1xyXG4gICAgICAgICAgICBsZXQgaW5pdGlhbFZhbHVlID0gc29ydEJ5KHVuaXEodGhpcy5jbG9uZWRUYWJsZURhdGEubWFwKGl0ZW0gPT4gaXRlbVt0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnNlbGVjdGVkUmFkaW9dKSkpO1xyXG4gICAgICAgICAgICB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmluaXRpYWxWYWx1ZU1hcC5zZXQodGhpcy5hbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvLGluaXRpYWxWYWx1ZSk7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmKHRoaXMuYW5uYUZpbHRlclNlcnZpY2UuaW5pdGlhbFZhbHVlTWFwLmhhcyh0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnNlbGVjdGVkUmFkaW8pKXtcclxuICAgICAgICAgIHByZXZpb3VzU2VsZWN0ZWRWYWx1ZSA9IHRoaXMuYW5uYUZpbHRlclNlcnZpY2UuaW5pdGlhbFZhbHVlTWFwLmdldCh0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnNlbGVjdGVkUmFkaW8pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNle1xyXG4gICAgICAgICAgcHJldmlvdXNTZWxlY3RlZFZhbHVlID0gc29ydEJ5KHVuaXEodGhpcy5jbG9uZWRUYWJsZURhdGEubWFwKGl0ZW0gPT4gaXRlbVt0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnNlbGVjdGVkUmFkaW9dKSkpO1xyXG4gICAgICAgICAgdGhpcy5hbm5hRmlsdGVyU2VydmljZS5pbml0aWFsVmFsdWVNYXAuc2V0KHRoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpbyxwcmV2aW91c1NlbGVjdGVkVmFsdWUpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYodGhpcy50b29sdGlwT3B0aW9ucyl7XHJcblxyXG4gICAgICAgICAgICBjdXJyZW50U2VsZWN0ZWRWYWx1ZSA9IHNvcnRCeSh0aGlzLnRvb2x0aXBPcHRpb25zLmZpbHRlcihpdGVtID0+IGl0ZW0uaXNTZWxlY3RlZCkubWFwKGl0ZW0gPT4gaXRlbS52YWx1ZSkpO1xyXG5cclxuICAgICAgICAgICAgaWYoIXRoaXMuc2VhcmNoSXRlbSAmJiBjdXJyZW50U2VsZWN0ZWRWYWx1ZS5sZW5ndGggPT0gdGhpcy50b29sdGlwT3B0aW9ucy5sZW5ndGggJiYgdGhpcy5hbm5hRmlsdGVyU2VydmljZS5pbml0aWFsVmFsdWVNYXAuaGFzKHRoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpbykpe1xyXG4gICAgICAgICAgICAgIGN1cnJlbnRTZWxlY3RlZFZhbHVlID0gdGhpcy5hbm5hRmlsdGVyU2VydmljZS5pbml0aWFsVmFsdWVNYXAuZ2V0KHRoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpbyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgXHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBsZXQgYmxhbmtJbmRleCA9IGN1cnJlbnRTZWxlY3RlZFZhbHVlLmZpbmRJbmRleCgoaXRlbTogc3RyaW5nKSA9PiBpdGVtID09IG51bGwpO1xyXG4gICAgICAgIGlmKGJsYW5rSW5kZXggIT0gLTEpe1xyXG4gICAgICAgICAgY3VycmVudFNlbGVjdGVkVmFsdWUgPSBzb3J0QnkoY3VycmVudFNlbGVjdGVkVmFsdWUpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5pc0ZpbHRlckNoYW5nZWQgPSAhaXNFcXVhbChjdXJyZW50U2VsZWN0ZWRWYWx1ZSxwcmV2aW91c1NlbGVjdGVkVmFsdWUpO1xyXG4gICAgICAgIHJldHVybiB0aGlzLmlzRmlsdGVyQ2hhbmdlZDtcclxuICAgIH1cclxuXHJcbiAgICBjaGVja0lmVGltZVRvb2x0aXBJc0ZpbHRlcmVkKCl7XHJcbiAgICAgIGxldCBjdXJyZW50U2VsZWN0ZWRUaW1lRmlsdGVyOiB7ZnJvbVRpbWU6IHN0cmluZywgdG9UaW1lOnN0cmluZywgaW5jbHVkZU11bHRpOiBib29sZWFuLCBpbmNsdWRlWmVybzogYm9vbGVhbiwgaW5jbHVkZVRpbWVSYW5nZTogYm9vbGVhbn0gPSB7XHJcbiAgICAgICAgZnJvbVRpbWU6IG51bGwsXHJcbiAgICAgICAgdG9UaW1lOiBudWxsLFxyXG4gICAgICAgIGluY2x1ZGVNdWx0aTogZmFsc2UsXHJcbiAgICAgICAgaW5jbHVkZVplcm86IGZhbHNlLFxyXG4gICAgICAgIGluY2x1ZGVUaW1lUmFuZ2U6IGZhbHNlLFxyXG4gICAgICB9O1xyXG4gIFxyXG4gICAgICBsZXQgcHJldmlvdXNTZWxlY3RlZFRpbWVGaWx0ZXI7XHJcbiAgXHJcbiAgICAgIGlmKHRoaXMuYW5uYUZpbHRlclNlcnZpY2UudG9vbHRpcFNlbGVjdGVkTWFwLmhhcyh0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnNlbGVjdGVkUmFkaW8pKXtcclxuICAgICAgICBwcmV2aW91c1NlbGVjdGVkVGltZUZpbHRlciA9IHRoaXMuYW5uYUZpbHRlclNlcnZpY2UudG9vbHRpcFNlbGVjdGVkTWFwLmdldCh0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnNlbGVjdGVkUmFkaW8pO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYodGhpcy5hbm5hRmlsdGVyU2VydmljZS5pbml0aWFsVmFsdWVNYXAuaGFzKHRoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpbykpe1xyXG4gICAgICAgIHByZXZpb3VzU2VsZWN0ZWRUaW1lRmlsdGVyID0gdGhpcy5hbm5hRmlsdGVyU2VydmljZS5pbml0aWFsVmFsdWVNYXAuZ2V0KHRoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpbyk7XHJcbiAgICAgIH1cclxuICBcclxuICAgICAgbGV0IGZyb21UaW1lMjRIckZvcm1hdEFyciA9IHRoaXMuYW5uYURhdGVUaW1lRm9ybWF0U2VydmljZS5jb252ZXJ0VG90d2VudHlGb3VySHJzRm9ybWF0KFxyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRGcm9tVGltZVswXSArIFwiOlwiICsgdGhpcy5zZWxlY3RlZEZyb21UaW1lWzFdICsgXCIgXCIgKyB0aGlzLnNlbGVjdGVkRnJvbVRpbWVbMl0sXHJcbiAgICAgICAgdHJ1ZVxyXG4gICAgICApO1xyXG4gICAgICBsZXQgZnJvbVRpbWUyNEhyRm9ybWF0ID0gZnJvbVRpbWUyNEhyRm9ybWF0QXJyWzBdICsgXCI6XCIgKyBmcm9tVGltZTI0SHJGb3JtYXRBcnJbMV0gKyBcIjowMFwiO1xyXG5cclxuICAgICAgbGV0IHRvVGltZTI0SHJGb3JtYXRBcnIgPSB0aGlzLmFubmFEYXRlVGltZUZvcm1hdFNlcnZpY2UuY29udmVydFRvdHdlbnR5Rm91ckhyc0Zvcm1hdChcclxuICAgICAgICB0aGlzLnNlbGVjdGVkVG9UaW1lWzBdICsgXCI6XCIgKyB0aGlzLnNlbGVjdGVkVG9UaW1lWzFdICsgXCIgXCIgKyB0aGlzLnNlbGVjdGVkVG9UaW1lWzJdLFxyXG4gICAgICAgIHRydWVcclxuICAgICAgKTtcclxuICAgICAgbGV0IHRvVGltZTI0SHJGb3JtYXQgPSB0b1RpbWUyNEhyRm9ybWF0QXJyWzBdICsgXCI6XCIgKyB0b1RpbWUyNEhyRm9ybWF0QXJyWzFdICsgXCI6MDBcIjtcclxuICBcclxuICAgICAgY3VycmVudFNlbGVjdGVkVGltZUZpbHRlciA9IHsgZnJvbVRpbWU6IGZyb21UaW1lMjRIckZvcm1hdCwgdG9UaW1lOiB0b1RpbWUyNEhyRm9ybWF0LCBpbmNsdWRlTXVsdGk6IHRoaXMubXVsdGlUaW1lQ2hlY2tib3hDaGVja2VkLCBcclxuICAgICAgaW5jbHVkZVplcm86IHRoaXMuemVyb1RpbWVDaGVja2JveENoZWNrZWQsIGluY2x1ZGVUaW1lUmFuZ2U6IHRoaXMuZW50ZXJUaW1lQ2hlY2tib3hDaGVja2VkfTtcclxuICAgICAgXHJcbiAgICAgIHRoaXMuaXNGaWx0ZXJDaGFuZ2VkID0gIWlzRXF1YWwocHJldmlvdXNTZWxlY3RlZFRpbWVGaWx0ZXIsIGN1cnJlbnRTZWxlY3RlZFRpbWVGaWx0ZXIpO1xyXG4gICAgICByZXR1cm4gdGhpcy5pc0ZpbHRlckNoYW5nZWQ7ICBcclxuICAgIH1cclxuXHJcbiAgICBjaGVja0lmRGF0ZVRvb2x0aXBJc0ZpbHRlcmVkKCl7XHJcbiAgICAgIGxldCBjdXJyZW50U2VsZWN0ZWREYXRlID0gY2xvbmVEZWVwKHRoaXMuY2FsZW5kYXJTZWxlY3Rpb24pO1xyXG4gICAgICBsZXQgcHJldmlvdXNTZWxlY3RlZERhdGU6IHtmcm9tRGF0ZTogYW55LCB0b0RhdGU6IGFueX0gPSB7ZnJvbURhdGU6IG51bGwsIHRvRGF0ZTogbnVsbH07XHJcblxyXG4gICAgICBpZih0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnRvb2x0aXBTZWxlY3RlZE1hcC5oYXModGhpcy5hbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvKSl7XHJcbiAgICAgICAgcHJldmlvdXNTZWxlY3RlZERhdGUgPSB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnRvb2x0aXBTZWxlY3RlZE1hcC5nZXQodGhpcy5hbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvKTtcclxuICAgICAgICBcclxuICAgICAgICBpZighdGhpcy5hbm5hRmlsdGVyU2VydmljZS5pbml0aWFsVmFsdWVNYXAuaGFzKHRoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpbykpe1xyXG4gICAgICAgICAgICB0aGlzLnNldEluaXRpYWxWYWx1ZU1hcEZvckRhdGVGaWx0ZXIoKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYodGhpcy5hbm5hRmlsdGVyU2VydmljZS5pbml0aWFsVmFsdWVNYXAuaGFzKHRoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpbykpe1xyXG4gICAgICAgIHByZXZpb3VzU2VsZWN0ZWREYXRlID0gdGhpcy5hbm5hRmlsdGVyU2VydmljZS5pbml0aWFsVmFsdWVNYXAuZ2V0KHRoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpbyk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZXtcclxuICAgICAgICB0aGlzLnNldEluaXRpYWxWYWx1ZU1hcEZvckRhdGVGaWx0ZXIoKTtcclxuICAgICAgICBwcmV2aW91c1NlbGVjdGVkRGF0ZSA9IHRoaXMuYW5uYUZpbHRlclNlcnZpY2UuaW5pdGlhbFZhbHVlTWFwLmdldCh0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnNlbGVjdGVkUmFkaW8pO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZihjdXJyZW50U2VsZWN0ZWREYXRlLmZyb21EYXRlICYmIGN1cnJlbnRTZWxlY3RlZERhdGUudG9EYXRlKXtcclxuICAgICAgICAgIGxldCBmcm9tRGF0ZSA9IHt5ZWFyOiBjdXJyZW50U2VsZWN0ZWREYXRlLmZyb21EYXRlLnllYXIsbW9udGg6IGN1cnJlbnRTZWxlY3RlZERhdGUuZnJvbURhdGUubW9udGgsZGF5OiBjdXJyZW50U2VsZWN0ZWREYXRlLmZyb21EYXRlLmRheX07XHJcbiAgICAgICAgICBsZXQgdG9EYXRlID0ge3llYXI6IGN1cnJlbnRTZWxlY3RlZERhdGUudG9EYXRlLnllYXIsbW9udGg6IGN1cnJlbnRTZWxlY3RlZERhdGUudG9EYXRlLm1vbnRoLGRheTogY3VycmVudFNlbGVjdGVkRGF0ZS50b0RhdGUuZGF5fTtcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgaWYoaXNFcXVhbCh0aGlzLmNhbGVuZGFyTWluRW5hYmxlZERhdGUsZnJvbURhdGUpICYmIGlzRXF1YWwodGhpcy5jYWxlbmRhck1heEVuYWJsZWREYXRlLHRvRGF0ZSkgJiYgdGhpcy5hbm5hRmlsdGVyU2VydmljZS5pbml0aWFsVmFsdWVNYXAuaGFzKHRoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpbykpe1xyXG4gICAgICAgICAgICAgIGN1cnJlbnRTZWxlY3RlZERhdGUgPSB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmluaXRpYWxWYWx1ZU1hcC5nZXQodGhpcy5hbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2V7XHJcbiAgICAgICAgICAgICAgY3VycmVudFNlbGVjdGVkRGF0ZS5mcm9tRGF0ZSA9IGRheWpzKHRoaXMuYW5uYURhdGVUaW1lRm9ybWF0U2VydmljZS5jb252ZXJ0TmdiRGF0ZVRvTW9tZW50KGN1cnJlbnRTZWxlY3RlZERhdGUuZnJvbURhdGUpKTtcclxuICAgICAgICAgICAgICBjdXJyZW50U2VsZWN0ZWREYXRlLnRvRGF0ZSA9IGRheWpzKHRoaXMuYW5uYURhdGVUaW1lRm9ybWF0U2VydmljZS5jb252ZXJ0TmdiRGF0ZVRvTW9tZW50KGN1cnJlbnRTZWxlY3RlZERhdGUudG9EYXRlKSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLmlzRmlsdGVyQ2hhbmdlZCA9ICFpc0VxdWFsKHByZXZpb3VzU2VsZWN0ZWREYXRlLGN1cnJlbnRTZWxlY3RlZERhdGUpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzLmlzRmlsdGVyQ2hhbmdlZDtcclxuICAgIH1cclxuXHJcbiAgICBzZXRJbml0aWFsVmFsdWVNYXBGb3JEYXRlRmlsdGVyKCl7XHJcbiAgICAgICAgbGV0IG1pbk1heERhdGU7XHJcblxyXG4gICAgICAgIGlmKHRoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpbyA9PSBcInBlcmlvZFwiKXtcclxuICAgICAgICAgIGxldCBtaW5TdGFydERhdGUgPSB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnJldHVybk1pbkFuZE1heERhdGUodGhpcy5jbG9uZWRUYWJsZURhdGEsIFwic3RhcnREYXRlXCIpO1xyXG4gICAgICAgICAgbGV0IG1heEVuZERhdGUgPSB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnJldHVybk1pbkFuZE1heERhdGUodGhpcy5jbG9uZWRUYWJsZURhdGEsXCJlbmREYXRlXCIpO1xyXG4gICAgICAgICAgbWluTWF4RGF0ZSA9IFttaW5TdGFydERhdGVbMF0sbWF4RW5kRGF0ZVsxXV07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2V7XHJcbiAgICAgICAgICBtaW5NYXhEYXRlID0gdGhpcy5hbm5hRmlsdGVyU2VydmljZS5yZXR1cm5NaW5BbmRNYXhEYXRlKHRoaXMuY2xvbmVkVGFibGVEYXRhLHRoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpbyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxldCBzZWxlY3RlZERhdGUgPSB7ZnJvbURhdGU6IG1pbk1heERhdGVbMF0sIHRvRGF0ZTogbWluTWF4RGF0ZVsxXX07XHJcbiAgICAgICAgdGhpcy5hbm5hRmlsdGVyU2VydmljZS5pbml0aWFsVmFsdWVNYXAuc2V0KHRoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpbywgc2VsZWN0ZWREYXRlKTtcclxuICAgIH1cclxuXHJcbiAgICBjaGVja0lmU2xpZGVyVG9vbHRpcElzRmlsdGVyZWQoKXtcclxuICAgICAgbGV0IGN1cnJlbnRTbGlkZXJEYXRhOiB7bWluOmFueSwgbWF4OiBhbnl9ID0ge21pbjogbnVsbCAsIG1heDogbnVsbH07XHJcbiAgICAgIGxldCBwcmV2aW91c1NsaWRlckRhdGE6IHttaW46YW55LCBtYXg6IGFueX0gPSB7bWluOiBcIlwiLCBtYXg6IFwiXCJ9O1xyXG5cclxuICAgICAgLy8gaWYodGhpcy5pc01pblRleHRCb3hFbXB0eSl7XHJcbiAgICAgIC8vICAgICBjdXJyZW50U2xpZGVyRGF0YS5taW4gPSB0aGlzLm9wdGlvbnMuZmxvb3I7XHJcbiAgICAgIC8vICAgICBjdXJyZW50U2xpZGVyRGF0YS5tYXggPSB0aGlzLnNsaWRlck1heFZhbHVlO1xyXG4gICAgICAvLyB9XHJcbiAgICAgIC8vIGVsc2UgaWYodGhpcy5pc01heFRleHRCb3hFbXB0eSl7XHJcbiAgICAgIC8vICAgICBjdXJyZW50U2xpZGVyRGF0YS5tYXggPSB0aGlzLm9wdGlvbnMuY2VpbDtcclxuICAgICAgLy8gICAgIGN1cnJlbnRTbGlkZXJEYXRhLm1pbiA9IHRoaXMuc2xpZGVyTWluVmFsdWU7XHJcbiAgICAgIC8vIH1cclxuICAgICAgLy8gZWxzZXtcclxuICAgICAgICAgIGN1cnJlbnRTbGlkZXJEYXRhLm1heCA9IHRoaXMuc2xpZGVyRW50ZXJlZE1heFZhbHVlO1xyXG4gICAgICAgICAgY3VycmVudFNsaWRlckRhdGEubWluID0gdGhpcy5zbGlkZXJFbnRlcmVkTWluVmFsdWU7XHJcbiAgICAgIC8vIH1cclxuXHJcbiAgICAgIGlmKHRoaXMuYW5uYUZpbHRlclNlcnZpY2UudG9vbHRpcFNlbGVjdGVkTWFwLmhhcyh0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnNlbGVjdGVkUmFkaW8pKXtcclxuICAgICAgICBwcmV2aW91c1NsaWRlckRhdGEgPSB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnRvb2x0aXBTZWxlY3RlZE1hcC5nZXQodGhpcy5hbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvKTtcclxuICAgICAgICBpZighdGhpcy5hbm5hRmlsdGVyU2VydmljZS5pbml0aWFsVmFsdWVNYXAuaGFzKHRoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpbykpe1xyXG4gICAgICAgICAgdGhpcy5zZXRJbml0aWFsVmFsdWVNYXBGb3JTbGlkZXJGaWx0ZXIoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZih0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmluaXRpYWxWYWx1ZU1hcC5oYXModGhpcy5hbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvKSl7XHJcbiAgICAgICAgcHJldmlvdXNTbGlkZXJEYXRhID0gdGhpcy5hbm5hRmlsdGVyU2VydmljZS5pbml0aWFsVmFsdWVNYXAuZ2V0KHRoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpbyk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZXtcclxuICAgICAgICB0aGlzLnNldEluaXRpYWxWYWx1ZU1hcEZvclNsaWRlckZpbHRlcigpO1xyXG4gICAgICAgIHByZXZpb3VzU2xpZGVyRGF0YSA9IHRoaXMuYW5uYUZpbHRlclNlcnZpY2UuaW5pdGlhbFZhbHVlTWFwLmdldCh0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnNlbGVjdGVkUmFkaW8pO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZihjdXJyZW50U2xpZGVyRGF0YS5taW4gPT0gdGhpcy5vcHRpb25zLmZsb29yICYmIGN1cnJlbnRTbGlkZXJEYXRhLm1heCA9PSB0aGlzLm9wdGlvbnMuY2VpbCAmJiB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmluaXRpYWxWYWx1ZU1hcC5oYXModGhpcy5hbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvKSApe1xyXG4gICAgICAgICAgY3VycmVudFNsaWRlckRhdGEgPSB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmluaXRpYWxWYWx1ZU1hcC5nZXQodGhpcy5hbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5pc0ZpbHRlckNoYW5nZWQgPSAhaXNFcXVhbChwcmV2aW91c1NsaWRlckRhdGEsY3VycmVudFNsaWRlckRhdGEpO1xyXG4gICAgICByZXR1cm4gdGhpcy5pc0ZpbHRlckNoYW5nZWQ7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0SW5pdGlhbFZhbHVlTWFwRm9yU2xpZGVyRmlsdGVyKCl7XHJcbiAgICAgIGxldCBtaW5WYWx1ZSA9IHRoaXMuYW5uYUZpbHRlclNlcnZpY2UucmV0dXJuTWF4QW5kTWluVmFsdWUodGhpcy5jbG9uZWRUYWJsZURhdGEsIHRoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpbywgdHJ1ZSk7XHJcbiAgICAgIGxldCBtYXhWYWx1ZSA9IHRoaXMuYW5uYUZpbHRlclNlcnZpY2UucmV0dXJuTWF4QW5kTWluVmFsdWUodGhpcy5jbG9uZWRUYWJsZURhdGEsIHRoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpbywgZmFsc2UpO1xyXG4gICAgICBsZXQgc2xpZGVyRGF0YSA9IHsgbWluOiBtaW5WYWx1ZSwgbWF4OiBtYXhWYWx1ZSB9O1xyXG4gICAgICB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmluaXRpYWxWYWx1ZU1hcC5zZXQodGhpcy5hbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvLCBzbGlkZXJEYXRhKTtcclxuICAgICAgXHJcbiAgICB9XHJcblxyXG4gICAgY2hlY2tJZlNvcnRpbmdDaGFuZ2VkKCl7XHJcbiAgICAgIGxldCBjdXJyZW50Q29sdW1uU29ydEZpbHRlciA9IHRoaXMuZ2V0Q29sdW1uU29ydFN0YXRlRm9yU2VsZWN0ZWRSYWRpbygpO1xyXG5cclxuICAgICAgdGhpcy5pc1NvcnRDaGFuZ2VkID0gdGhpcy50ZW1wU29ydE9yZGVyICE9IG51bGwgJiYgdGhpcy50ZW1wU29ydE9yZGVyICE9IGN1cnJlbnRDb2x1bW5Tb3J0RmlsdGVyO1xyXG4gICAgICByZXR1cm4gdGhpcy5pc1NvcnRDaGFuZ2VkO1xyXG4gICAgfVxyXG5cclxuICAgIGdldENvbHVtblNvcnRTdGF0ZUZvclNlbGVjdGVkUmFkaW8oKTogc3RyaW5nIHtcclxuICAgICAgbGV0IGN1cnJlbnRDb2x1bW5Tb3J0RmlsdGVyID0gdGhpcy5hbm5hU29ydFNlcnZpY2UuY29sdW1uU29ydFN0YXRlICYmIHRoaXMuYW5uYVNvcnRTZXJ2aWNlLmNvbHVtblNvcnRTdGF0ZS5oYXModGhpcy5hbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvKSAmJlxyXG4gICAgICB0aGlzLmFubmFTb3J0U2VydmljZS5jb2x1bW5Tb3J0U3RhdGUuZ2V0KHRoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpbyk7XHJcbiAgICAgIGN1cnJlbnRDb2x1bW5Tb3J0RmlsdGVyID0gY3VycmVudENvbHVtblNvcnRGaWx0ZXIgPyBjdXJyZW50Q29sdW1uU29ydEZpbHRlciA6IFNvcnRUeXBlRW51bS5ERUZBVUxUO1xyXG4gICAgICByZXR1cm4gY3VycmVudENvbHVtblNvcnRGaWx0ZXI7XHJcbiAgICB9XHJcblxyXG4gICAgZGlzYWJsZUFwcGx5QnV0dG9uT2ZTZWxlY3RlZEZpbHRlcigpe1xyXG4gICAgICBsZXQgaGVhZGVyID0gdGhpcy5hbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvO1xyXG5cclxuICAgICAgaWYgKHRoaXMuYW5uYUZpbHRlclNlcnZpY2UuY2FsZW5kYXJTZXQuaGFzKGhlYWRlcikpIHtcclxuICAgICAgICB0aGlzLmRpc2FibGVDYWxlbmRhckFwcGx5QnV0dG9uKCk7XHJcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5hbm5hRmlsdGVyU2VydmljZS5zbGlkZXJTZXQuaGFzKGhlYWRlcikpIHtcclxuICAgICAgICB0aGlzLmRpc2FibGVTbGlkZXJBcHBseUJ0bigpO1xyXG4gICAgICB9IGVsc2UgaWYgKHRoaXMuYW5uYUZpbHRlclNlcnZpY2UudGltZVNldC5oYXMoaGVhZGVyKSkge1xyXG4gICAgICAgIHRoaXMuZGlzYWJsZVRpbWVGaWx0ZXJBcHBseUJ1dHRvbigpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuZGlzYWJsZUNoZWNrYm94RmlsdGVyQXBwbHlCdXR0b24oKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGRpc2FibGVDaGVja2JveEZpbHRlckFwcGx5QnV0dG9uKCl7XHJcbiAgICAgIGxldCBzZWxlY3RlZEl0ZW1zID0gdGhpcy5zaG93RmlsdGVyQ29tcG9uZW50ID8gdGhpcy50b29sdGlwT3B0aW9ucy5maWx0ZXIoaXRlbSA9PiBpdGVtLmlzU2VsZWN0ZWQpIDogW107XHJcbiAgICAgICAgXHJcbiAgICAgIGlmKHRoaXMuc2hvd0ZpbHRlckNvbXBvbmVudCAmJiB0aGlzLnNob3dTb3J0Q29tcG9uZW50KXtcclxuICAgICAgICAgIGxldCBpc0ZpbHRlckNoYW5nZWQgPSB0aGlzLmNoZWNrSWZDaGVja2JveFRvb2x0aXBJc0ZpbHRlcmVkKCk7XHJcbiAgICAgICAgICBsZXQgaXNTb3J0Q2hhbmdlZCA9IHRoaXMuY2hlY2tJZlNvcnRpbmdDaGFuZ2VkKCk7XHJcbiAgICAgICAgICB0aGlzLmRpc2FibGVDaGVja2JveEFwcGx5ID0gc2VsZWN0ZWRJdGVtcy5sZW5ndGggPT0gMCB8fCAoIWlzU29ydENoYW5nZWQgJiYgIWlzRmlsdGVyQ2hhbmdlZCApO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYodGhpcy5zaG93RmlsdGVyQ29tcG9uZW50KXtcclxuICAgICAgICAgIHRoaXMuZGlzYWJsZUNoZWNrYm94QXBwbHkgPSBzZWxlY3RlZEl0ZW1zLmxlbmd0aCA9PSAwIHx8ICF0aGlzLmNoZWNrSWZDaGVja2JveFRvb2x0aXBJc0ZpbHRlcmVkKCk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZih0aGlzLnNob3dTb3J0Q29tcG9uZW50KXtcclxuICAgICAgICAgIHRoaXMuZGlzYWJsZUNoZWNrYm94QXBwbHkgPSAhdGhpcy5jaGVja0lmU29ydGluZ0NoYW5nZWQoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHRyYWNrQnlUb29sdGlwTW9kZWxJZChpbmRleDogbnVtYmVyICwgaXRlbTogVG9vbHRpcE1vZGVsKXtcclxuICAgICAgcmV0dXJuIGl0ZW0uaWQ7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0QWN0aXZlU3RhdGVPYmplY3QoKXtcclxuICAgICAgdGhpcy5hbm5hRmlsdGVyU2VydmljZS5pc0ZpbHRlclNvcnRBY3RpdmUgPSAgIXRoaXMuYW5uYUZpbHRlclNlcnZpY2UucmVzZXRGaWx0ZXJTb3J0QWN0aXZlU3RhdHVzXHJcbiAgICAgID8gdGhpcy5hbm5hRmlsdGVyU2VydmljZS5pc0ZpbHRlclNvcnRBY3RpdmVcclxuICAgICAgOiB7fTtcclxuICAgICAgdGhpcy50YWJsZUhlYWRlcnMuZm9yRWFjaChpdGVtID0+IHtcclxuICAgICAgICBpdGVtLmhlYWRlckluZm8uZm9yRWFjaChoZWFkZXIgPT4ge1xyXG4gICAgICAgICAgICBpZihoZWFkZXIuc2hvd1Rvb2x0aXBJY29uKXtcclxuICAgICAgICAgICAgICBsZXQga2V5ID0gaGVhZGVyLmZpbHRlclNvcnRPYmplY3RLZXlzLmpvaW4oJywnKTtcclxuICAgICAgICAgICAgICBoZWFkZXIuam9pbmVkRmlsdGVyU29ydE9iamVjdEtleXMgPSBrZXk7XHJcbiAgICAgICAgICAgICAgLy8gQU5OQS00MTEzIGZpeFxyXG4gICAgICAgICAgICAgIGlmKHRoaXMuYW5uYUZpbHRlclNlcnZpY2UucmVzZXRGaWx0ZXJTb3J0QWN0aXZlU3RhdHVzKXtcclxuICAgICAgICAgICAgICAgIHRoaXMuYW5uYUZpbHRlclNlcnZpY2UuaXNGaWx0ZXJTb3J0QWN0aXZlW2tleV0gPSBmYWxzZTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy5hbm5hRmlsdGVyU2VydmljZS5yZXNldEZpbHRlclNvcnRBY3RpdmVTdGF0dXMgPSB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIHNldElzRGlmZmVyZW5jZSh2YWx1ZTogYm9vbGVhbil7XHJcbiAgICAgIHRoaXMuaXNEaWZmZXJlbmNlTGVzc1RoYW4yNVBlcmNlbnQgPSB2YWx1ZTtcclxuICAgIH1cclxuXHJcbiAgICByZXNldEluZGV4KCl7XHJcbiAgICAgIHRoaXMuc3RhcnQgPSAwO1xyXG4gICAgICB0aGlzLmVuZCA9IHRoaXMubGltaXQgKyB0aGlzLnN0YXJ0O1xyXG4gICAgfVxyXG5cclxuICAgIG9uVGFibGVDb250YWluZXJTY3JvbGwoZTogYW55KSB7XHJcbiAgICAgICAgY29uc3QgdGFibGVWaWV3SGVpZ2h0ID0gZS50YXJnZXQub2Zmc2V0SGVpZ2h0OyAvLyB2aWV3cG9ydFxyXG4gICAgICAgIGNvbnN0IHRhYmxlU2Nyb2xsSGVpZ2h0ID0gZS50YXJnZXQuc2Nyb2xsSGVpZ2h0OyAvLyBsZW5ndGggb2YgYWxsIHRhYmxlXHJcbiAgICAgICAgY29uc3Qgc2Nyb2xsTG9jYXRpb24gPSBlLnRhcmdldC5zY3JvbGxUb3A7IC8vIGhvdyBmYXIgdXNlciBzY3JvbGxlZFxyXG5cclxuICAgICAgICB0aGlzLnJlbW92ZVRvb2x0aXBPblNjcm9sbCgpO1xyXG4gICAgICAgIFxyXG4gICAgICAgIC8vIElmIHRoZSB1c2VyIGhhcyBzY3JvbGxlZCB3aXRoaW4gMTUwcHggb2YgdGhlIGJvdHRvbSwgYWRkIG1vcmUgZGF0YVxyXG4gICAgICAgIGNvbnN0IGJ1ZmZlciA9IDE1MDtcclxuICAgICAgICBjb25zdCBsaW1pdCA9IHRhYmxlU2Nyb2xsSGVpZ2h0IC0gdGFibGVWaWV3SGVpZ2h0IC0gYnVmZmVyO1xyXG4gICAgICAgIGlmIChzY3JvbGxMb2NhdGlvbiA+IGxpbWl0KSB7XHJcbiAgICAgICAgICAgIGxldCBkYXRhID0gdGhpcy5nZXRUYWJsZURhdGEodGhpcy5zdGFydCwgdGhpcy5lbmQpO1xyXG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVkRGF0YSA9IHRoaXMucmVuZGVyZWREYXRhLmNvbmNhdChkYXRhKTtcclxuICAgICAgICAgICAgdGhpcy51cGRhdGVJbmRleCgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnRhYmxlQ29udGFpbmVyU2Nyb2xsZWQoZSk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0VGFibGVEYXRhKHN0YXJ0OiBudW1iZXIsIGVuZDogbnVtYmVyKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMudGFibGVEYXRhLmZpbHRlcigodmFsdWUsIGluZGV4KSA9PiBpbmRleCA+PSBzdGFydCAmJiBpbmRleCA8IGVuZCk7XHJcbiAgICB9XHJcblxyXG4gICAgdXBkYXRlSW5kZXgoKSB7XHJcbiAgICAgICAgdGhpcy5zdGFydCA9IHRoaXMuZW5kO1xyXG4gICAgICAgIHRoaXMuZW5kID0gdGhpcy5saW1pdCArIHRoaXMuc3RhcnQ7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0SW5pdGlhbFJvd3NGb3JUYWJsZSgpe1xyXG4gICAgICB0aGlzLnJlc2V0SW5kZXgoKTtcclxuICAgICAgdGhpcy5yZW5kZXJlZERhdGEgPSB0aGlzLmdldFRhYmxlRGF0YSh0aGlzLnN0YXJ0LHRoaXMuZW5kKTtcclxuICAgICAgdGhpcy51cGRhdGVJbmRleCgpO1xyXG4gICAgfVxyXG5cclxuICAgIHNwb3REZXRhaWxzRG93bmxvYWRDbGlja2VkKHBhcmVudENoaWxkT3JUb3RhbFJvdzogXCJEQVRBUk9XXCIgfCBcIlRPVEFMUk9XXCIsIHJvd2RhdGE/OiBhbnkgKSB7XHJcbiAgICAgIGlmKHJvd2RhdGEpe1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJbnZlbnRvcnlJZEZvckRvd25sb2FkID0gcm93ZGF0YS5pbnZlbnRvcnlDb2RlSWQ7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZERlbW9ncmFwaGljRm9yRG93bmxvYWQgPSByb3dkYXRhLmRlbW9ncmFwaGljO1xyXG4gICAgICB9IGVsc2V7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZEludmVudG9yeUlkRm9yRG93bmxvYWQgPSBudWxsO1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWREZW1vZ3JhcGhpY0ZvckRvd25sb2FkID0gbnVsbDtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnNlbGVjdGVkUm93VHlwZUZvckRvd25sb2FkID0gcGFyZW50Q2hpbGRPclRvdGFsUm93O1xyXG4gICAgICB0aGlzLmRvd25sb2FkU3BvdERldGFpbHMuZW1pdCh7XHJcbiAgICAgICAgcGFyZW50Q2hpbGRPclRvdGFsUm93OiBwYXJlbnRDaGlsZE9yVG90YWxSb3csXHJcbiAgICAgICAgaW52ZW50b3J5Q29kZUlkOiB0aGlzLnNlbGVjdGVkSW52ZW50b3J5SWRGb3JEb3dubG9hZCxcclxuICAgICAgICBkZW1vZ3JhcGhpYzogdGhpcy5zZWxlY3RlZERlbW9ncmFwaGljRm9yRG93bmxvYWR9KVxyXG4gIH1cclxuXHJcbiAgdGFibGVDb250YWluZXJTY3JvbGxlZChldmVudDogYW55KXtcclxuICAgICAgdGhpcy5pc1Njcm9sbGVkTGVmdCA9IGV2ZW50LnRhcmdldC5zY3JvbGxMZWZ0ID4gMDtcclxuICAgICAgdGhpcy5yZW1vdmVUb29sdGlwT25TY3JvbGwoKTtcclxuICAgIH1cclxuICBcclxuICBtb3VzZUVudGVyT25TdHJpbmdUZXh0QWN0aW9uVHlwZShyb3dEYXRhOiBhbnksIHRvb2x0aXBLZXk6IHN0cmluZyApe1xyXG4gICAgdGhpcy50ZXh0QWN0aW9uVG9vbHRpcCA9IHJvd0RhdGFbdG9vbHRpcEtleV07IFxyXG4gICAgdGhpcy5ub3RpZmljYXRpb25JY29uSG92ZXIuZW1pdCh7cm93RGF0YTpyb3dEYXRhLCB0eXBlOiBcIm9uLWVudGVyXCJ9KVxyXG4gIH1cclxuXHJcbiAgbW91c2VFbnRlck9uU3RyaW5nVGV4dEFjdGlvblR5cGVDb250YWluaW5nVGFibGUocm93RGF0YTogYW55LCB0b29sdGlwS2V5OiBzdHJpbmcgKXtcclxuICAgIHRoaXMudG9vbHRpcENvbnRhaW5pbmdUYWJsZSA9IHJvd0RhdGFbdG9vbHRpcEtleV07XHJcbiAgfVxyXG5cclxuICBtb3VzZUxlYXZlVGV4dEFjdGlvblR5cGUocm93RGF0YTogYW55KXtcclxuICAgIHRoaXMubm90aWZpY2F0aW9uSWNvbkhvdmVyTGVhdmUuZW1pdCh7cm93RGF0YTpyb3dEYXRhLCB0eXBlOiBcIm9uLWxlYXZlXCJ9KSAgXHJcbiAgfVxyXG5cclxuICBtb3VzZUVudGVyT25UZXh0QWN0aW9uVHlwZShyb3dEYXRhOiBhbnksIHRvb2x0aXBLZXk6IHN0cmluZyApe1xyXG4gICAgdGhpcy50ZXh0QWN0aW9uVG9vbHRpcCA9IHJvd0RhdGFbdG9vbHRpcEtleV07XHJcbiAgfVxyXG5cclxuICBvbkNsaWNrYWJsZURhdGFDbGlja2VkKFJvd2RhdGE6IGFueSwgaWQ6IG51bWJlcil7XHJcbiAgICAgIHRoaXMuY2xpY2thYmxlRGF0YUNsaWNrZWQuZW1pdCh7ZGF0YTogUm93ZGF0YSwgaWQ6IGlkfSk7XHJcbiAgfVxyXG5cclxuICByZW1vdmVUb29sdGlwT25TY3JvbGwoKXtcclxuICAgIGNvbnN0IGVsZW1lbnRzID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcInJlbWFya3MtaW5mby10b29sdGlwXCIpO1xyXG4gICAgLy8gY29uc3QgdG9vbHRpcEVsZW1lbnRzID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcInRvb2x0aXBcIik7XHJcbiAgICBjb25zdCBndFRvb2x0aXAgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFwicmVtb3ZlLW9uLXNjcm9sbC1jbGFzc1wiKTtcclxuICAgIGNvbnN0IHRvb2x0aXBFbGVtZW50cyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXCJ0b29sdGlwXCIpO1xyXG5cclxuICAgIHdoaWxlIChlbGVtZW50cyAmJiBlbGVtZW50cy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGVsZW1lbnRzWzBdLnJlbW92ZSgpO1xyXG4gICAgfVxyXG4gICAgd2hpbGUgKHRvb2x0aXBFbGVtZW50cyAmJiB0b29sdGlwRWxlbWVudHMubGVuZ3RoID4gMCkge1xyXG4gICAgICB0b29sdGlwRWxlbWVudHNbMF0ucmVtb3ZlKCk7XHJcbiAgICAgIHRoaXMudG9vbHRpcCA9IG51bGw7XHJcbiAgICB9XHJcbiAgICB3aGlsZSAoZ3RUb29sdGlwICYmIGd0VG9vbHRpcC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGd0VG9vbHRpcFswXS5yZW1vdmUoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGljb25DbGlja2VkSW5Ub3RhbFJvdyhjb2xOYW1lOiBzdHJpbmcpe1xyXG4gICAgdGhpcy50b3RhbFJvd0ljb25DbGlja2VkLmVtaXQoY29sTmFtZSk7XHJcbiAgfVxyXG5cclxuICBlZGl0YWJsZUlucHV0VmFsdWVDaGFuZ2VkKHZhbHVlOiBhbnksIHJvdzogYW55KXtcclxuICAgIHRoaXMuZWRpdGFibGVJbnB1dEVkaXRlZC5lbWl0KHtyb3c6cm93LCB2YWx1ZX0pO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwidGFibGUtY29udGFpbmVyIHt7Z3RHZW5lcmFsQ29uZmlnPy50YWJsZU91dGVyQ29udGFpbmVyTmFtZX19IHt7dGFibGVCb3R0b21Cb3JkZXJDbGFzc319XCIgW25nQ2xhc3NdPVwieyAnc2Nyb2xsLWxlZnQtc2hhZG93LWVmZmVjdCc6IGlzU2Nyb2xsZWRMZWZ0LCAnY2xpY2thYmxlLXJvdyc6IGNsaWNrYWJsZVJvdyB9XCIgKHNjcm9sbCk9XCJvblRhYmxlQ29udGFpbmVyU2Nyb2xsKCRldmVudClcIj5cclxuICAgIDxkaXZcclxuICAgICAgICBbY2xhc3NdPVwiZ3RHZW5lcmFsQ29uZmlnLnRhYmxlQ29udGFpbmVyTmFtZVwiXHJcbiAgICAgICAgY2xhc3M9XCJob3Jpem9udGFsLXNjcm9sbC1mb3ItdGFibGUtY29udGFpbmVyXCJcclxuICAgICAgICBbbmdTdHlsZV09XCJ7XHJcbiAgICAgICAgICAgIGhlaWdodDpcclxuICAgICAgICAgICAgICAgIHRhYmxlRGF0YS5sZW5ndGggPCBtYXhpbXVtUm93c1doaWNoQ2FuQmVSZW5kZXJlZFdpdGhvdXRTY3JvbGxcclxuICAgICAgICAgICAgICAgICAgICA/ICdjYWxjKCcgK1xyXG4gICAgICAgICAgICAgICAgICAgICgoZ3REaW1lbnNpb24ucm93SGVpZ2h0KSAqIHRhYmxlRGF0YS5sZW5ndGggK1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAoIXRhYmxlRGF0YS5sZW5ndGggfHwgIWd0R2VuZXJhbENvbmZpZy50b3RhbFJvd1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBndERpbWVuc2lvbi5oZWFkZXJIZWlnaHRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogZ3REaW1lbnNpb24uaGVhZGVySGVpZ2h0ICsgZ3REaW1lbnNpb24ucm93SGVpZ2h0KSkgK1xyXG4gICAgICAgICAgICAgICAgICAgICdweCknXHJcbiAgICAgICAgICAgICAgICAgICAgOiBndERpbWVuc2lvbi50YWJsZUhlaWdodFxyXG4gICAgICAgIH1cIlxyXG4gICAgPlxyXG4gICAgICAgIDx0YWJsZSBjbGFzcz1cImd0XCIgW25nQ2xhc3NdPVwidGFibGVDbGFzc1wiIG1hdC10YWJsZSBbZGF0YVNvdXJjZV09XCJyZW5kZXJlZERhdGFcIj5cclxuICAgICAgICAgICAgPHRyXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImhlYWRlci1yb3dcIlxyXG4gICAgICAgICAgICAgICAgbWF0LWhlYWRlci1yb3dcclxuICAgICAgICAgICAgICAgICptYXRIZWFkZXJSb3dEZWY9XCJ0YWJsZUNvbHVtbnM7IHN0aWNreTogdHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cImd0RGltZW5zaW9uLmhlYWRlckhlaWdodFwiXHJcbiAgICAgICAgICAgID48L3RyPlxyXG4gICAgICAgICAgICA8dHJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwidG90YWwtcm93XCJcclxuICAgICAgICAgICAgICAgIG1hdC1oZWFkZXItcm93XHJcbiAgICAgICAgICAgICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cImd0RGltZW5zaW9uLnJvd0hlaWdodFwiXHJcbiAgICAgICAgICAgICAgICAqbWF0SGVhZGVyUm93RGVmPVwidG90YWxSb3dDb2x1bW5zOyBzdGlja3k6IHRydWVcIlxyXG4gICAgICAgICAgICAgICAgW2NsYXNzLmhpZGRlbl09XCJcclxuICAgICAgICAgICAgICAgICAgICBzaG93U2tlbGV0b25Mb2FkaW5nIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgKCFzaG93U2tlbGV0b25Mb2FkaW5nICYmICF0YWJsZURhdGEubGVuZ3RoICkgfHxcclxuICAgICAgICAgICAgICAgICAgICAoaXNOb0RhdGFUb0Rpc3BsYXlTdWJqZWN0JCB8IGFzeW5jKSB8fCBcclxuICAgICAgICAgICAgICAgICAgICAoIXNob3dTa2VsZXRvbkxvYWRpbmcgJiYgIWd0R2VuZXJhbENvbmZpZy50b3RhbFJvdylcclxuICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgID48L3RyPlxyXG4gICAgICAgICAgICA8dHJcclxuICAgICAgICAgICAgICAgIFtjbGFzc109XCJyb3dEYXRhLmd0Q2xhc3NcIlxyXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyduby1ib3JkZXItdHInOiAoaXNOb0RhdGFUb0Rpc3BsYXlTdWJqZWN0JCB8IGFzeW5jKX1cIlxyXG4gICAgICAgICAgICAgICAgbWF0LXJvd1xyXG4gICAgICAgICAgICAgICAgKm1hdFJvd0RlZj1cImxldCByb3dEYXRhOyBjb2x1bW5zOiB0YWJsZUNvbHVtbnNcIlxyXG4gICAgICAgICAgICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJndERpbWVuc2lvbi5yb3dIZWlnaHRcIihjbGljayk9XCJkYXRhUm93Q2xpY2tlZChyb3dEYXRhKVwiXHJcbiAgICAgICAgICAgID48L3RyPlxyXG5cclxuICAgICAgICAgICAgPCEtLSBUT1RBTCBST1cgLS0+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgW21hdENvbHVtbkRlZl09XCJjb2x1bW4uY29sTmFtZVwiICpuZ0Zvcj1cImxldCBjb2x1bW4gb2YgdG90YWxSb3dJbmZvOyB0cmFja0J5OiB0cmFja0J5Rm5cIj5cclxuICAgICAgICAgICAgICAgIDx0ZCBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWYgW2F0dHIuY29sc3Bhbl09XCJjb2x1bW4uY29sc3BhblwiIGNsYXNzPVwie3tjb2x1bW4uY2xhc3N9fVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2x1bW5bJ2lzQWN0aW9uQ29sdW1uJ11cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGEgKm5nRm9yPVwibGV0IGRhdGEgb2YgY29sdW1uLmFjdGlvbkRhdGFcIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJkYXRhLmNsYXNzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvbkNsaWNrYWJsZURhdGFDbGlja2VkKHt9LCBkYXRhLmlkKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGRhdGEubmFtZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2E+ICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbHVtblsnaXNJY29uQ29sdW1uJ11cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJ7e2NvbHVtbj8uaWNvbkRhdGE/LmNsYXNzfX1cIiAoY2xpY2spPVwiaWNvbkNsaWNrZWRJblRvdGFsUm93KGNvbHVtbj8uY29sTmFtZSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9pPiAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhY29sdW1uWydpc0FjdGlvbkNvbHVtbiddXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzdHJvbmc+e3sgY29sdW1uLmRhdGEgfX08L3N0cm9uZz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbHVtbi5sb3dlckRhdGFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxicj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiY29sdW1uLmNvbE5hbWUgPT0gJ3RvdGFsLXBvdGVudGlhbC1ib29rZWQtdW5pdCcgJiYgZ3RHZW5lcmFsQ29uZmlnLmNvbXBvbmVudCA9PSAnUkFUSU5HJztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGNvbHVtbkxvd2VyRGF0YVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjbGlja2FibGUtZGF0YVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNwb3REZXRhaWxzRG93bmxvYWRDbGlja2VkKCdUT1RBTFJPVycpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdkaXNhYmxlZC1jbGlja2FibGUtZGF0YSc6IGRvd25sb2FkSW5Qcm9ncmVzcyB9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+e3sgY29sdW1uLmxvd2VyRGF0YSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnMgc3BvdC1kZXRhaWxzLWRvd25sb2FkLWljb25zXCI+Z2V0X2FwcDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZG93bmxvYWRJblByb2dyZXNzIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgc2VsZWN0ZWRSb3dUeXBlRm9yRG93bmxvYWQgPT0gJ1RPVEFMUk9XJyBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJjaXJjdWxhclByb2dyZXNzQmFyXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2NvbHVtbkxvd2VyRGF0YT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57eyBjb2x1bW4ubG93ZXJEYXRhIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbHVtbi50b29sdGlwTWVzc2FnZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwibWkgbWRpLWluZm8tb3V0bGluZSBpbmZvLWxhYmVsXCIgY29udGFpbmVyPVwiYm9keVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW25nYlRvb2x0aXBdPVwiY29sdW1uLnRvb2x0aXBNZXNzYWdlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICB0b29sdGlwQ2xhc3M9XCJndC10b3RhbC1yb3ctdG9vbHRpcFwiIHBsYWNlbWVudD1cImJvdHRvbVwiPjwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgIDwhLS0gTUFJTiBST1cgLS0+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgW21hdENvbHVtbkRlZl09XCJjb2x1bW5EZWYuaGVhZGVySW5mb1swXS5vYmplY3RLZXlcIiAqbmdGb3I9XCJsZXQgY29sdW1uRGVmIG9mIHRhYmxlSGVhZGVyczsgIHRyYWNrQnk6IHRyYWNrQnlGblwiPlxyXG4gICAgICAgICAgICAgICAgPHRoICN0YWJsZUhlYWRlciBub3dyYXAgbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmIFtzdHlsZS53aWR0aF09XCJjb2x1bW5EZWYud2lkdGhcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG14LTBcIiAqbmdGb3I9XCJsZXQgaGVhZGVyIG9mIGNvbHVtbkRlZi5oZWFkZXJJbmZvOyBsZXQgaiA9IGluZGV4O1wiPiAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgPHBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiaGVhZGVyLnR5cGVPZkhlYWRlckRhdGEgPT09ICdTVFJJTkcnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ3VwcGVyLWxhYmVsJzogaiA9PT0gMCwgJ2xvd2VyLWxhYmVsJzogaiA9PT0gMSB9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgaGVhZGVyLm5hbWUgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpICpuZ0lmPVwiaGVhZGVyLnRvb2x0aXAgJiYgaGVhZGVyLnRvb2x0aXAubmFtZSA9PSAnaW1wc0luZm9Ub29sdGlwJ1wiIGNsYXNzPVwie3toZWFkZXJbJ3Rvb2x0aXAnXS5pY29uQ2xhc3N9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nU3R5bGVdPVwieydmbG9hdCc6IGhlYWRlclsndG9vbHRpcCddLmljb25Qb3NpdGlvbn1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICN0PVwibmdiVG9vbHRpcFwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lcj1cImJvZHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ2JUb29sdGlwXT1cImltcHNJbmZvVG9vbHRpcFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyPVwiYm9keVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwie3sgaGVhZGVyWyd0b29sdGlwJ10udG9vbHRpcFBvc2l0aW9uIH19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b29sdGlwQ2xhc3M9XCJ7eyBoZWFkZXJbJ3Rvb2x0aXAnXS50b29sdGlwQ2xhc3MgfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgKm5nSWY9XCJoZWFkZXIudG9vbHRpcCAmJiBoZWFkZXIudG9vbHRpcC5uYW1lID09ICdzcG90c0NvbHVtbkVxdWl2YWxpemF0aW9uTWVzc2FnZVRvb2x0aXAnXCIgY2xhc3M9XCJ7e2hlYWRlclsndG9vbHRpcCddLmljb25DbGFzc319XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJ7J2Zsb2F0JzogaGVhZGVyWyd0b29sdGlwJ10uaWNvblBvc2l0aW9ufVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyPVwiYm9keVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI3Q9XCJuZ2JUb29sdGlwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXI9XCJib2R5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdiVG9vbHRpcF09XCJzcG90c0NvbHVtbkVxdWl2YWxpemF0aW9uTWVzc2FnZVRvb2x0aXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cInt7IGhlYWRlclsndG9vbHRpcCddLnRvb2x0aXBQb3NpdGlvbiB9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9vbHRpcENsYXNzPVwie3sgaGVhZGVyWyd0b29sdGlwJ10udG9vbHRpcENsYXNzIH19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpICpuZ0lmPVwiaGVhZGVyLnRvb2x0aXAgJiYgaGVhZGVyLnRvb2x0aXAubmFtZSA9PSAncmF0aW5nSW5mb1Rvb2x0aXAnXCIgY2xhc3M9XCJ7e2hlYWRlclsndG9vbHRpcCddLmljb25DbGFzc319XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJ7J2Zsb2F0JzogaGVhZGVyWyd0b29sdGlwJ10uaWNvblBvc2l0aW9ufVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI3Q9XCJuZ2JUb29sdGlwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXI9XCJib2R5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdiVG9vbHRpcF09XCJyYXRpbmdJbmZvVG9vbHRpcFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyPVwiYm9keVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwie3sgaGVhZGVyWyd0b29sdGlwJ10udG9vbHRpcFBvc2l0aW9uIH19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b29sdGlwQ2xhc3M9XCJ7eyBoZWFkZXJbJ3Rvb2x0aXAnXS50b29sdGlwQ2xhc3MgfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgKm5nSWY9XCJoZWFkZXIudG9vbHRpcCAmJiBoZWFkZXIudG9vbHRpcC5uYW1lID09ICdyYXRlSW5mb1Rvb2x0aXAnXCIgY2xhc3M9XCJ7e2hlYWRlclsndG9vbHRpcCddLmljb25DbGFzc319XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJ7J2Zsb2F0JzogaGVhZGVyWyd0b29sdGlwJ10uaWNvblBvc2l0aW9ufVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI3Q9XCJuZ2JUb29sdGlwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXI9XCJib2R5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdiVG9vbHRpcF09XCJyYXRlSW5mb1Rvb2x0aXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lcj1cImJvZHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cInt7IGhlYWRlclsndG9vbHRpcCddLnRvb2x0aXBQb3NpdGlvbiB9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9vbHRpcENsYXNzPVwie3sgaGVhZGVyWyd0b29sdGlwJ10udG9vbHRpcENsYXNzIH19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpICpuZ0lmPVwiaGVhZGVyLnRvb2x0aXAgJiYgaGVhZGVyLnRvb2x0aXAubmFtZSA9PSAnb25nb2luZ1JldkJvb2tlZENvbHVtblRvb2x0aXAnXCIgY2xhc3M9XCJ7e2hlYWRlclsndG9vbHRpcCddLmljb25DbGFzc319XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJ7J2Zsb2F0JzogaGVhZGVyWyd0b29sdGlwJ10uaWNvblBvc2l0aW9ufVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI3Q9XCJuZ2JUb29sdGlwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXI9XCJib2R5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdiVG9vbHRpcF09XCJvbmdvaW5nUmV2Qm9va2VkQ29sdW1uVG9vbHRpcFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwie3sgaGVhZGVyWyd0b29sdGlwJ10udG9vbHRpcFBvc2l0aW9uIH19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b29sdGlwQ2xhc3M9XCJ7eyBoZWFkZXJbJ3Rvb2x0aXAnXS50b29sdGlwQ2xhc3MgfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgKm5nSWY9XCJoZWFkZXIudG9vbHRpcCAmJiBoZWFkZXIudG9vbHRpcC5uYW1lID09ICdjb21wbGV0ZWRSZXZCb29rZWRDb2x1bW5Ub29sdGlwJ1wiIGNsYXNzPVwie3toZWFkZXJbJ3Rvb2x0aXAnXS5pY29uQ2xhc3N9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nU3R5bGVdPVwieydmbG9hdCc6IGhlYWRlclsndG9vbHRpcCddLmljb25Qb3NpdGlvbn1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICN0PVwibmdiVG9vbHRpcFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyPVwiYm9keVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nYlRvb2x0aXBdPVwiY29tcGxldGVkUmV2Qm9va2VkQ29sdW1uVG9vbHRpcFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwie3sgaGVhZGVyWyd0b29sdGlwJ10udG9vbHRpcFBvc2l0aW9uIH19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b29sdGlwQ2xhc3M9XCJ7eyBoZWFkZXJbJ3Rvb2x0aXAnXS50b29sdGlwQ2xhc3MgfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgKm5nSWY9XCJoZWFkZXIudG9vbHRpcCAmJiBoZWFkZXIudG9vbHRpcC5uYW1lID09ICdhdmdCb29rZWRSYXRlJ1wiIGNsYXNzPVwie3toZWFkZXJbJ3Rvb2x0aXAnXS5pY29uQ2xhc3N9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nU3R5bGVdPVwieydmbG9hdCc6IGhlYWRlclsndG9vbHRpcCddLmljb25Qb3NpdGlvbn1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICN0PVwibmdiVG9vbHRpcFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyPVwiYm9keVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nYlRvb2x0aXBdPVwiYXZnQm9va2VkUmF0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwie3sgaGVhZGVyWyd0b29sdGlwJ10udG9vbHRpcFBvc2l0aW9uIH19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b29sdGlwQ2xhc3M9XCJ7eyBoZWFkZXJbJ3Rvb2x0aXAnXS50b29sdGlwQ2xhc3MgfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgKm5nSWY9XCJoZWFkZXIudG9vbHRpcCAmJiBoZWFkZXIudG9vbHRpcC5uYW1lID09ICdhdmdCb29rZWRSdGcnXCIgY2xhc3M9XCJ7e2hlYWRlclsndG9vbHRpcCddLmljb25DbGFzc319XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJ7J2Zsb2F0JzogaGVhZGVyWyd0b29sdGlwJ10uaWNvblBvc2l0aW9ufVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI3Q9XCJuZ2JUb29sdGlwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXI9XCJib2R5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdiVG9vbHRpcF09XCJhdmdCb29rZWRSdGdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cInt7IGhlYWRlclsndG9vbHRpcCddLnRvb2x0aXBQb3NpdGlvbiB9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9vbHRpcENsYXNzPVwie3sgaGVhZGVyWyd0b29sdGlwJ10udG9vbHRpcENsYXNzIH19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpICpuZ0lmPVwiaGVhZGVyLnRvb2x0aXAgJiYgaGVhZGVyLnRvb2x0aXAubmFtZSA9PSAnYXZnQm9va2VkSW1wcydcIiBjbGFzcz1cInt7aGVhZGVyWyd0b29sdGlwJ10uaWNvbkNsYXNzfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cInsnZmxvYXQnOiBoZWFkZXJbJ3Rvb2x0aXAnXS5pY29uUG9zaXRpb259XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjdD1cIm5nYlRvb2x0aXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lcj1cImJvZHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ2JUb29sdGlwXT1cImF2Z0Jvb2tlZEltcHNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cInt7IGhlYWRlclsndG9vbHRpcCddLnRvb2x0aXBQb3NpdGlvbiB9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9vbHRpcENsYXNzPVwie3sgaGVhZGVyWyd0b29sdGlwJ10udG9vbHRpcENsYXNzIH19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImhlYWRlci50eXBlT2ZIZWFkZXJEYXRhID09PSAnQ0hFQ0tCT1gnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiZ3RHZW5lcmFsQ29uZmlnLmlzSGVhZGVyQ2hlY2tlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtYXRlcmlhbC1pY29ucyBjdXN0b20tY29sdW1uLWNoZWNrYm94LWNoZWNrZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RVbnNlbGVjdEFsbFJvd3MoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tfYm94XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIWd0R2VuZXJhbENvbmZpZy5pc0hlYWRlckNoZWNrZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnMgY3VzdG9tLWNvbHVtbi1jaGVja2JveC11bmNoZWNrZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ2Rpc2FibGUtY2hlY2tib3gnOiBndEdlbmVyYWxDb25maWcuZGlzYWJsZUhlYWRlckNoZWNrYm94IH1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RVbnNlbGVjdEFsbFJvd3MoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tfYm94X291dGxpbmVfYmxhbmtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZ3RHZW5lcmFsQ29uZmlnLnNob3dBbGxDb2x1bW5GaWx0ZXJcIiBjbGFzcz1cInNvcnQtZmlsdGVyLWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImhlYWRlci5zaG93VG9vbHRpcEljb25cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIEFjdGl2ZSB0b29sdGlwIEZ1bmN0aW9uYWxpdHkgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImhlYWRlci5maWx0ZXIgPT09ICdDSEVDS0JPWCdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWRpIG1kaS1maWx0ZXItdmFyaWFudFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aXZlOiBhbm5hRmlsdGVyU2VydmljZS5pc0ZpbHRlclNvcnRBY3RpdmUgJiYgYW5uYUZpbHRlclNlcnZpY2UuaXNGaWx0ZXJTb3J0QWN0aXZlW2hlYWRlci5qb2luZWRGaWx0ZXJTb3J0T2JqZWN0S2V5c10sICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkOiBoZWFkZXIuZGlzYWJsZVRvb2x0aXBJY29uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ2JUb29sdGlwXT1cImZpbHRlclRvb2x0aXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tIGxlZnQtdG9wIGF1dG9cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyPVwiYm9keVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b29sdGlwQ2xhc3M9XCJub24tZWRpdC1jaGVja2JveC10b29sdGlwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdXRvQ2xvc2VdPVwiJ291dHNpZGUnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyaWdnZXJzPVwibWFudWFsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICN0PVwibmdiVG9vbHRpcFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiYmluZFRoZVZhbHVlVG9Ub29sVGlwKHQsIGhlYWRlcilcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGhpZGRlbik9XCJjbG9zZVRvb2x0aXAoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID48YnIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaGVhZGVyLmZpbHRlciA9PT0gJ1NMSURFUidcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWRpIG1kaS1maWx0ZXItdmFyaWFudFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aXZlOiBhbm5hRmlsdGVyU2VydmljZS5pc0ZpbHRlclNvcnRBY3RpdmUgJiYgYW5uYUZpbHRlclNlcnZpY2UuaXNGaWx0ZXJTb3J0QWN0aXZlW2hlYWRlci5qb2luZWRGaWx0ZXJTb3J0T2JqZWN0S2V5c10sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6IGhlYWRlci5kaXNhYmxlVG9vbHRpcEljb25cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nYlRvb2x0aXBdPVwic2xpZGVyVG9vbFRpcFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20gbGVmdC10b3BcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyPVwiYm9keVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b29sdGlwQ2xhc3M9XCJub24tZWRpdC1zbGlkZXItdG9vbHRpcFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXV0b0Nsb3NlXT1cIidvdXRzaWRlJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmlnZ2Vycz1cIm1hbnVhbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjdDE9XCJuZ2JUb29sdGlwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJiaW5kVGhlVmFsdWVUb1Rvb2xUaXAodDEsIGhlYWRlcilcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGhpZGRlbik9XCJjbG9zZVRvb2x0aXAoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID48YnIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaGVhZGVyLmZpbHRlciA9PT0gJ0RBVEUnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1kaSBtZGktZmlsdGVyLXZhcmlhbnRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGl2ZTogYW5uYUZpbHRlclNlcnZpY2UuaXNGaWx0ZXJTb3J0QWN0aXZlICYmIGFubmFGaWx0ZXJTZXJ2aWNlLmlzRmlsdGVyU29ydEFjdGl2ZVtoZWFkZXIuam9pbmVkRmlsdGVyU29ydE9iamVjdEtleXNdLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkOiBoZWFkZXIuZGlzYWJsZVRvb2x0aXBJY29uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ2JUb29sdGlwXT1cImRhdGVQaWNrZXJUb29sdGlwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbSBhdXRvXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lcj1cImJvZHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9vbHRpcENsYXNzPVwibm9uLWVkaXQtZGF0ZXBpY2tlci10b29sdGlwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdXRvQ2xvc2VdPVwiJ291dHNpZGUnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyaWdnZXJzPVwibWFudWFsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICN0Mj1cIm5nYlRvb2x0aXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImJpbmRUaGVWYWx1ZVRvVG9vbFRpcCh0MiwgaGVhZGVyKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaGlkZGVuKT1cImNsb3NlVG9vbHRpcCgpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjxiciAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJoZWFkZXIuZmlsdGVyID09PSAnV0VFSydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWRpIG1kaS1maWx0ZXItdmFyaWFudFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aXZlOiBhbm5hRmlsdGVyU2VydmljZS5pc0ZpbHRlclNvcnRBY3RpdmUgJiYgYW5uYUZpbHRlclNlcnZpY2UuaXNGaWx0ZXJTb3J0QWN0aXZlW2hlYWRlci5qb2luZWRGaWx0ZXJTb3J0T2JqZWN0S2V5c10sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6IGhlYWRlci5kaXNhYmxlVG9vbHRpcEljb25cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nYlRvb2x0aXBdPVwid2Vla1BpY2tlclRvb2xUaXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tIGxlZnQtdG9wXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lcj1cImJvZHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F1dG9DbG9zZV09XCInb3V0c2lkZSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJpZ2dlcnM9XCJtYW51YWxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI3QzPVwibmdiVG9vbHRpcFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiYmluZFRoZVZhbHVlVG9Ub29sVGlwKHQzLCBoZWFkZXIpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChoaWRkZW4pPVwiY2xvc2VUb29sdGlwKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PGJyIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImhlYWRlci5maWx0ZXIgPT09ICdUSU1FJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtZGkgbWRpLWZpbHRlci12YXJpYW50XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3RpdmU6IGFubmFGaWx0ZXJTZXJ2aWNlLmlzRmlsdGVyU29ydEFjdGl2ZSAmJiBhbm5hRmlsdGVyU2VydmljZS5pc0ZpbHRlclNvcnRBY3RpdmVbaGVhZGVyLmpvaW5lZEZpbHRlclNvcnRPYmplY3RLZXlzXSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZDogaGVhZGVyLmRpc2FibGVUb29sdGlwSWNvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdiVG9vbHRpcF09XCJ0aW1lRmlsdGVyVG9vbFRpcFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20gbGVmdC10b3AgYXV0b1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXI9XCJib2R5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvb2x0aXBDbGFzcz1cIm5vbi1lZGl0LXRpbWUtdG9vbHRpcFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXV0b0Nsb3NlXT1cIidvdXRzaWRlJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmlnZ2Vycz1cIm1hbnVhbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjdDQ9XCJuZ2JUb29sdGlwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJiaW5kVGhlVmFsdWVUb1Rvb2xUaXAodDQsIGhlYWRlcilcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGhpZGRlbik9XCJjbG9zZVRvb2x0aXAoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID48YnIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFoZWFkZXIuc2hvd1Rvb2x0aXBJY29uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gaWQ9XCJuby1maWx0ZXItc3BhY2VcIj48L3NwYW4+PGJyIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpICpuZ0lmPVwiaGVhZGVyLnRvb2x0aXAgJiYgaGVhZGVyLnRvb2x0aXAubmFtZSA9PSAnbHVyVmlvbGF0aW9uSW5mb1Rvb2x0aXAnXCIgY2xhc3M9XCJ7e2hlYWRlclsndG9vbHRpcCddLmljb25DbGFzc319XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJ7J2Zsb2F0JzogaGVhZGVyWyd0b29sdGlwJ10uaWNvblBvc2l0aW9ufVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI3Q9XCJuZ2JUb29sdGlwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXI9XCJib2R5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdiVG9vbHRpcF09XCJsdXJWaW9sYXRpb25JbmZvVG9vbHRpcFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwie3sgaGVhZGVyWyd0b29sdGlwJ10udG9vbHRpcFBvc2l0aW9uIH19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b29sdGlwQ2xhc3M9XCJ7eyBoZWFkZXJbJ3Rvb2x0aXAnXS50b29sdGlwQ2xhc3MgfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9pPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L3RoPlxyXG5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm1hdENlbGxEZWY9XCJsZXQgUk9XX0RBVEFcIj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPHRkIG1hdC1jZWxsIFtzdHlsZS5iYWNrZ3JvdW5kXT1cIlJPV19EQVRBLmJhY2tncm91bmRDb2xvclwiIFxyXG4gICAgICAgICAgICAgICAgICAgIFtzdHlsZS5ib3JkZXJdPVwiUk9XX0RBVEEuYm9yZGVyXCJcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInt7Uk9XX0RBVEEucm93Q2xhc3N9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIucm93c3Bhbl09XCJST1dfREFUQVtjb2x1bW5EZWYuaGVhZGVySW5mb1swXS5vYmplY3RLZXkgKyAnUm93c3BhbiddXCJcclxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIiFoaWRlU29tZVRkcyB8fCggaGlkZVNvbWVUZHMgJiYgIVJPV19EQVRBWydoaWRlJyArIGNvbHVtbkRlZi5oZWFkZXJJbmZvWzBdLm9iamVjdEtleSArICdUZCddKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmd4LXNrZWxldG9uLWxvYWRlciAqbmdJZj1cInNob3dTa2VsZXRvbkxvYWRpbmdcIiBjb3VudD1cIjFcIiBbdGhlbWVdPVwieyBoZWlnaHQ6ICcxMHB4JywgZGlzcGxheTogJ2Jsb2NrJyB9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmd4LXNrZWxldG9uLWxvYWRlcj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhc2hvd1NrZWxldG9uTG9hZGluZ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRhYmxlRGF0YS5sZW5ndGggPiAwICYmICEoaXNOb0RhdGFUb0Rpc3BsYXlTdWJqZWN0JCB8IGFzeW5jKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHN1YmxpbmUgb2YgY29sdW1uRGVmLmhlYWRlckluZm87IGxldCBzdWJMaW5lSW5kZXggPSBpbmRleDsgdHJhY2tCeTogdHJhY2tCeUZuXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBzaG93RWxsaXBzaXNUZXh0T25Ib3Zlcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwiY29sdW1uRGVmLmhlYWRlckluZm9bc3ViTGluZUluZGV4XS50eXBlT2ZCb2R5RGF0YVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ0lDT04nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgKm5nSWY9XCIhKHN0YXJyZWRJblByb2dyZXNzICYmIFJPV19EQVRBLm9yZGVySWQgPT0gc2VsZWN0ZWRTdGFycmVkT3JkZXJJZClcIiBbY2xhc3NdPVwiUk9XX0RBVEEuaWNvbkNsYXNzXCIgKGNsaWNrKT1cImljb25DbGlja2VkKFJPV19EQVRBLFJPV19EQVRBLmljb25DbGFzcylcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5nYlRvb2x0aXA9XCJ7eyBST1dfREFUQS5pY29uVGl0bGVUZXh0IH19XCIgcGxhY2VtZW50PVwiYm90dG9tXCIgY29udGFpbmVyPVwiYm9keVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9vbHRpcENsYXNzPVwiZ3QtaWNvbi1jb2x1bW4tdG9vbHRpcCByZW1vdmUtb24tc2Nyb2xsLWNsYXNzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzdGFycmVkSW5Qcm9ncmVzcyAmJiBST1dfREFUQS5vcmRlcklkID09IHNlbGVjdGVkU3RhcnJlZE9yZGVySWRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNwaW5uZXItZm9yLWJ1dHRvbi1kaXJlY3RpdmVcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ0lDT05fQ0VMTCdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgYWN0aW9uIG9mIFJPV19EQVRBW2NvbHVtbkRlZi5oZWFkZXJJbmZvW3N1YkxpbmVJbmRleF0uYWN0aW9uS2V5XVwiPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSAqbmdJZj1cImFjdGlvbi5zaG93SWNvblwiIFtjbGFzc109XCJhY3Rpb24uaWNvbkNsYXNzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW91c2VlbnRlcik9XCJtb3VzZUVudGVyT25TdHJpbmdUZXh0QWN0aW9uVHlwZShST1dfREFUQSwgY29sdW1uRGVmLmhlYWRlckluZm9bc3ViTGluZUluZGV4XS50b29sdGlwS2V5KVwiIHBsYWNlbWVudD1cImJvdHRvbSBhdXRvXCIgY29udGFpbmVyPVwiYm9keVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F1dG9DbG9zZV09XCJ0cnVlXCIgdG9vbHRpcENsYXNzPVwidGVhbS11c2VyLXRvb2x0aXAgcmVtb3ZlLW9uLXNjcm9sbC1jbGFzc1wiIFtuZ2JUb29sdGlwXT1cInVzZXJMb2dnZWRJbkRldGFpbHNcIiAoY2xpY2spPVwidGV4dEFjdGlvbkNsaWNrZWQoUk9XX0RBVEEsIGFjdGlvbi5pZClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlVG9vbHRpcF09XCIhYWN0aW9uLnNob3dUb29sdGlwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaT5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImFjdGlvbi5zaG93T2JqZWN0S2V5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgUk9XX0RBVEFbY29sdW1uRGVmLmhlYWRlckluZm9bc3ViTGluZUluZGV4XS5vYmplY3RLZXldIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInSFRNTF9TVFJJTkcnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgW2lubmVySFRNTF09XCJST1dfREFUQVtjb2x1bW5EZWYuaGVhZGVySW5mb1tzdWJMaW5lSW5kZXhdLm9iamVjdEtleV1cIj48L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInU1ZHX0lDT04nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFubmEtY29yZS1hbm5hLWljb24tY29sdW1uIFtjb21wb25lbnROYW1lXT1cImd0R2VuZXJhbENvbmZpZy5jb21wb25lbnRcIiBbZGF0YU9iamVjdF09XCJST1dfREFUQVwiIFtpY29uVG9TaG93XT1cIlJPV19EQVRBW2NvbHVtbkRlZi5oZWFkZXJJbmZvW3N1YkxpbmVJbmRleF0ub2JqZWN0S2V5XSBcIiAob25Db2x1bW5JY29uQ2xpY2tlZCk9XCJzdmdJY29uQ2xpY2tlZCgkZXZlbnQpXCI+PC9hbm5hLWNvcmUtYW5uYS1pY29uLWNvbHVtbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInVEVYVF9BQ1RJT05TJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCB0ZXh0IG9mIFJPV19EQVRBW2NvbHVtbkRlZi5oZWFkZXJJbmZvW3N1YkxpbmVJbmRleF0uYWN0aW9uS2V5XVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJ0ZXh0LnNob3dUb29sdGlwXCIgKGNsaWNrKT1cInRleHRBY3Rpb25DbGlja2VkKFJPV19EQVRBLHRleHQuaWQpXCIgW2Rpc2FibGVkXT1cInRleHQuaXNEaXNhYmxlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInt7dGV4dC5jbGFzc319XCIgKG1vdXNlZW50ZXIpPVwibW91c2VFbnRlck9uVGV4dEFjdGlvblR5cGUoUk9XX0RBVEEsIGNvbHVtbkRlZi5oZWFkZXJJbmZvW3N1YkxpbmVJbmRleF0udG9vbHRpcEtleSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nYlRvb2x0aXBdPVwidGV4dEFjdGlvblRvb2x0aXBUZW1wbGF0ZVwiIHBsYWNlbWVudD1cImJvdHRvbVwiIGNvbnRhaW5lcj1cImJvZHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9vbHRpcENsYXNzPVwiZ3QtaWNvbi1jb2x1bW4tdG9vbHRpcCByZW1vdmUtb24tc2Nyb2xsLWNsYXNzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyB0ZXh0Lm5hbWV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cIiF0ZXh0LnNob3dUb29sdGlwXCIgKGNsaWNrKT1cInRleHRBY3Rpb25DbGlja2VkKFJPV19EQVRBLHRleHQuaWQpXCIgW2Rpc2FibGVkXT1cInRleHQuaXNEaXNhYmxlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInt7dGV4dC5jbGFzc319XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e3RleHQubmFtZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidDSEVDS0JPWCdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIlJPV19EQVRBW2NvbHVtbkRlZi5oZWFkZXJJbmZvW3N1YkxpbmVJbmRleF0ub2JqZWN0S2V5XVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkaXNhYmxlLWNoZWNrYm94JzogUk9XX0RBVEFbY29sdW1uRGVmLmhlYWRlckluZm9bc3ViTGluZUluZGV4XS5pc0Rpc2FibGVkS2V5XVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtYXRlcmlhbC1pY29ucyBjdXN0b20tY29sdW1uLWNoZWNrYm94LWNoZWNrZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RPclVuc2VsZWN0Q2hlY2tib3goXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUk9XX0RBVEEsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uRGVmLmhlYWRlckluZm9bc3ViTGluZUluZGV4XS5vYmplY3RLZXksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrX2JveFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIiFST1dfREFUQVtjb2x1bW5EZWYuaGVhZGVySW5mb1tzdWJMaW5lSW5kZXhdLm9iamVjdEtleV1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1hdGVyaWFsLWljb25zIGN1c3RvbS1jb2x1bW4tY2hlY2tib3gtdW5jaGVja2VkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Rpc2FibGUtY2hlY2tib3gnOiBST1dfREFUQVtjb2x1bW5EZWYuaGVhZGVySW5mb1tzdWJMaW5lSW5kZXhdLmlzRGlzYWJsZWRLZXldXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RPclVuc2VsZWN0Q2hlY2tib3goXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUk9XX0RBVEEsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uRGVmLmhlYWRlckluZm9bc3ViTGluZUluZGV4XS5vYmplY3RLZXksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tfYm94X291dGxpbmVfYmxhbmtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ0NMSUNLQUJMRV9EQVRBJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgdGV4dCBvZiBST1dfREFUQVtjb2x1bW5EZWYuaGVhZGVySW5mb1tzdWJMaW5lSW5kZXhdLmFjdGlvbktleV1cIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJ0ZXh0LmNsYXNzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvbkNsaWNrYWJsZURhdGFDbGlja2VkKFJPV19EQVRBLCB0ZXh0LmlkKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgdGV4dC5uYW1lIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInN1YmxpbmUub2JqZWN0S2V5ID09ICdkaXNwbGF5Qm9va2VkVW5pdHMnICYmIGd0R2VuZXJhbENvbmZpZy5jb21wb25lbnQgPT0gJ1JBVElORydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjbGlja2FibGUtZGF0YVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic3BvdERldGFpbHNEb3dubG9hZENsaWNrZWQoJ0RBVEFST1cnLCBST1dfREFUQSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnZGlzYWJsZWQtY2xpY2thYmxlLWRhdGEnOiBkb3dubG9hZEluUHJvZ3Jlc3MgfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+e3sgUk9XX0RBVEEuZGlzcGxheUJvb2tlZFVuaXRzfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnMgc3BvdC1kZXRhaWxzLWRvd25sb2FkLWljb25zXCI+Z2V0X2FwcDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJkb3dubG9hZEluUHJvZ3Jlc3MgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIFJPV19EQVRBLmludmVudG9yeUNvZGVJZCA9PSBzZWxlY3RlZEludmVudG9yeUlkRm9yRG93bmxvYWQgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIFJPV19EQVRBLmRlbW9ncmFwaGljID09IHNlbGVjdGVkRGVtb2dyYXBoaWNGb3JEb3dubG9hZCBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImNpcmN1bGFyUHJvZ3Jlc3NCYXJcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInU1RSSU5HX19fSUNPTl9PUl9URVhUX0FDVElPTidcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgYWN0aW9uIG9mIFJPV19EQVRBW2NvbHVtbkRlZi5oZWFkZXJJbmZvW3N1YkxpbmVJbmRleF0uYWN0aW9uS2V5XVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIG5nYlRvb2x0aXA9XCJ7eyBhY3Rpb24uYWRkaXRpb25hbFRleHRCZWZvcmVMaW5rIH19XCIgcGxhY2VtZW50PVwiYm90dG9tXCIgY29udGFpbmVyPVwiYm9keVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9vbHRpcENsYXNzPVwiZ3QtaWNvbi1jb2x1bW4tdG9vbHRpcCByZW1vdmUtb24tc2Nyb2xsLWNsYXNzXCIgW2Rpc2FibGVUb29sdGlwXT1cIiFhY3Rpb24uZW5hYmxlVG9vbHRpcEZvckFkZGl0aW9uYWxUZXh0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgYWN0aW9uLmFkZGl0aW9uYWxUZXh0QmVmb3JlTGluayB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJhY3Rpb24gJiYgYWN0aW9uLnR5cGVPZkRhdGE9PSAnU1RSSU5HJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgYWN0aW9uLmRhdGEgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBbaWRdPVwiYWN0aW9uLmlkXCIgKm5nSWY9XCJhY3Rpb24uc2hvd0xpbmtcIiAoY2xpY2spPVwidGV4dEFjdGlvbkNsaWNrZWQoUk9XX0RBVEEsIGFjdGlvbi5pZClcIiBbY2xhc3NdPVwiYWN0aW9uLmxpbmtDbGFzc1wiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieydkaXNhYmxlZCc6IGFjdGlvbi5kaXNhYmxlZExpbmt9XCI+e3thY3Rpb24uZGF0YX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImFjdGlvbi5zaG93VG9vbHRpcFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImFjdGlvbi50b29sdGlwRGF0YS50b29sdGlwVGFibGVCb2R5ICYmIGFjdGlvbi50b29sdGlwRGF0YS50b29sdGlwVGFibGVCb2R5Lmxlbmd0aFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSAqbmdJZj1cImFjdGlvbi5zaG93SWNvblwiIFtjbGFzc109XCJhY3Rpb24uaWNvbkNsYXNzXCIgW25nQ2xhc3NdPVwieydkaXNhYmxlZCc6IGFjdGlvbi5kaXNhYmxlZEljb259XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vdXNlZW50ZXIpPVwibW91c2VFbnRlck9uU3RyaW5nVGV4dEFjdGlvblR5cGVDb250YWluaW5nVGFibGUoUk9XX0RBVEEsIGNvbHVtbkRlZi5oZWFkZXJJbmZvW3N1YkxpbmVJbmRleF0udG9vbHRpcEtleSlcIiBwbGFjZW1lbnQ9XCJib3R0b20gYXV0b1wiIGNvbnRhaW5lcj1cImJvZHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXV0b0Nsb3NlXT1cInRydWVcIiB0b29sdGlwQ2xhc3M9XCJ0b29sdGlwLWNvbnRhaW5pbmctdGFibGUgcmVtb3ZlLW9uLXNjcm9sbC1jbGFzc1wiIFtuZ2JUb29sdGlwXT1cInRvb2x0aXBDb250YWluaW5nVGFibGVUZW1wbGF0ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWFjdGlvbi50b29sdGlwRGF0YS50b29sdGlwVGFibGVCb2R5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpICpuZ0lmPVwiYWN0aW9uLnNob3dJY29uXCIgW2NsYXNzXT1cImFjdGlvbi5pY29uQ2xhc3NcIiBbbmdDbGFzc109XCJ7J2Rpc2FibGVkJzogYWN0aW9uLmRpc2FibGVkSWNvbn1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiaWNvbkNsaWNrZWRPblN0cmluZ0ljb25BY3Rpb25UeXBlKFJPV19EQVRBLCBhY3Rpb24uaWQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vdXNlbGVhdmUpPVwibW91c2VMZWF2ZVRleHRBY3Rpb25UeXBlKFJPV19EQVRBKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb3VzZWVudGVyKT1cIm1vdXNlRW50ZXJPblN0cmluZ1RleHRBY3Rpb25UeXBlKFJPV19EQVRBLCBjb2x1bW5EZWYuaGVhZGVySW5mb1tzdWJMaW5lSW5kZXhdLnRvb2x0aXBLZXkpXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwbGFjZW1lbnRdPVwiYWN0aW9uLnRvb2x0aXBQbGFjZW1lbnQgPyBhY3Rpb24udG9vbHRpcFBsYWNlbWVudCA6ICdib3R0b20gYXV0bydcIiBjb250YWluZXI9XCJib2R5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F1dG9DbG9zZV09XCJ0cnVlXCIgdG9vbHRpcENsYXNzPVwidGVhbS11c2VyLXRvb2x0aXAgcmVtb3ZlLW9uLXNjcm9sbC1jbGFzcyB7eyBhY3Rpb25bJ3Rvb2x0aXBDbGFzcyddIH19XCIgW25nYlRvb2x0aXBdPVwidXNlckxvZ2dlZEluRGV0YWlsc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFhY3Rpb24uc2hvd1Rvb2x0aXBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpICpuZ0lmPVwiYWN0aW9uLnNob3dJY29uXCIgW2NsYXNzXT1cImFjdGlvbi5pY29uQ2xhc3NcIiBbbmdDbGFzc109XCJ7J2Rpc2FibGVkJzogYWN0aW9uLmRpc2FibGVkSWNvbn1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImljb25DbGlja2VkT25TdHJpbmdJY29uQWN0aW9uVHlwZShST1dfREFUQSwgYWN0aW9uLmlkKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ1NUUklOR19PUl9JTlBVVCdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiUk9XX0RBVEFbY29sdW1uRGVmLmhlYWRlckluZm9bc3ViTGluZUluZGV4XS5vYmplY3RLZXldLnR5cGUgPT0gJ1NUUklORyc7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpbnB1dEJveFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBbaW5uZXJIdG1sXT1cIlJPV19EQVRBW2NvbHVtbkRlZi5oZWFkZXJJbmZvW3N1YkxpbmVJbmRleF0ub2JqZWN0S2V5XS52YWx1ZVwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj4gXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNpbnB1dEJveD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7Uk9XX0RBVEFbY29sdW1uRGVmLmhlYWRlckluZm9bc3ViTGluZUluZGV4XS5vYmplY3RLZXldLnBsYWNlaG9sZGVyfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93RWxsaXBzaXNUZXh0T25Ib3ZlclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJlZGl0YWJsZUlucHV0VmFsdWVDaGFuZ2VkKCRldmVudCwgUk9XX0RBVEEpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nTW9kZWxdPVwiUk9XX0RBVEFbY29sdW1uRGVmLmhlYWRlckluZm9bc3ViTGluZUluZGV4XS5vYmplY3RLZXldLnZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIlJPV19EQVRBW2NvbHVtbkRlZi5oZWFkZXJJbmZvW3N1YkxpbmVJbmRleF0ub2JqZWN0S2V5XS5kaXNhYmxlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsncmVkLWJvcmRlcic6ICBST1dfREFUQVtjb2x1bW5EZWYuaGVhZGVySW5mb1tzdWJMaW5lSW5kZXhdLm9iamVjdEtleV0uaGFzRXJyb3IgfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInSFRNTCdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBbaW5uZXJIdG1sXT1cIlJPV19EQVRBW2NvbHVtbkRlZi5oZWFkZXJJbmZvW3N1YkxpbmVJbmRleF0ub2JqZWN0S2V5XVwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidSQURJTydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LXJhZGlvLWdyb3VwXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiUk9XX0RBVEFbJ1JhZGlvQnV0dG9uQ29uZmlnJ11cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdNb2RlbF09XCJST1dfREFUQVtzdWJsaW5lLm9iamVjdEtleV1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiUk9XX0RBVEFbJ1JhZGlvQnV0dG9uQ29uZmlnJ11bMF0uaXNEaXNhYmxlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgcmFkaW9CdXR0b24gb2YgUk9XX0RBVEFbJ1JhZGlvQnV0dG9uQ29uZmlnJ107IGxldCBsYXN0ID0gbGFzdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtcmFkaW8tYnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9XCJ7eyByYWRpb0J1dHRvbi52YWx1ZSB9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ7eyByYWRpb0J1dHRvbi5jbGFzcyB9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByYWRpb0J1dHRvbkNsaWNrZWQoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBST1dfREFUQSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhZGlvQnV0dG9uLnZhbHVlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUk9XX0RBVEFbJ1JhZGlvQnV0dG9uQ29uZmlnJ11bMF0uaXNEaXNhYmxlZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+e3sgcmFkaW9CdXR0b24ubGFiZWwgfX08L21hdC1yYWRpby1idXR0b25cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID48YnIgKm5nSWY9XCIhbGFzdFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LXJhZGlvLWdyb3VwPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hEZWZhdWx0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzdWJsaW5lLm9iamVjdEtleSAhPSAnZGVzY3JpcHRpb24nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7IFJPV19EQVRBW2NvbHVtbkRlZi5oZWFkZXJJbmZvW3N1YkxpbmVJbmRleF0ub2JqZWN0S2V5XSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwic3VibGluZS5vYmplY3RLZXkgPT0gJ2ludmVudG9yeUNvZGUnICYmIFJPV19EQVRBWydpc1NlbGxlckdyb3VwJ10gJiYgZ3RHZW5lcmFsQ29uZmlnLmNvbXBvbmVudCA9PSAnUkFUSU5HJyBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtaSBtZGktaW5mby1vdXRsaW5lIHNlbGxlci10b29sdGlwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ2JUb29sdGlwXT1cInNlbGxlckhpZXJhcmNoeVRvb2x0aXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tIGF1dG9cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyPVwiYm9keVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXV0b0Nsb3NlXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJpZ2dlcnM9XCJtYW51YWxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGhpZGRlbik9XCJjbG9zZVRvb2x0aXAoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjaW5mbz1cIm5nYlRvb2x0aXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9vbHRpcENsYXNzPVwiaGllcmFyY2h5LXRvb2x0aXAgcmVtb3ZlLW9uLXNjcm9sbC1jbGFzc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW91c2VlbnRlcik9XCJiaW5kVGhlVmFsdWVUb1NlbGxlckdyb3VwVG9vbHRpcChST1dfREFUQS5zZWxsZXJHcm91cEhpZXJhcmNoeSwgaW5mbylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9pPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgKm5nSWY9XCJzdWJsaW5lLm9iamVjdEtleSA9PSAnZGlzcGxheUJvb2tlZEF2ZXJhZ2VSYXRpbmcnICYmIGd0R2VuZXJhbENvbmZpZy5jb21wb25lbnQgPT0gJ1JBVElORycgJiYgUk9XX0RBVEFbJ3Nob3dSYXRpbmdBdmVyYWdlSWNvbiddIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1pIG1kaS1pbmZvLW91dGxpbmUgc2VsbGVyLXRvb2x0aXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tIGF1dG9cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyPVwiYm9keVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXV0b0Nsb3NlXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vdXNlZW50ZXIpPVwic2V0SXNEaWZmZXJlbmNlKFJPV19EQVRBLmlzRGlmZmVyZW5jZUxlc3NUaGFuMjVQZXJjZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b29sdGlwQ2xhc3M9XCJwb3N0ZWQtYXZnLXRvb2x0aXAgcmVtb3ZlLW9uLXNjcm9sbC1jbGFzc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdiVG9vbHRpcF09XCJwb3N0ZWRSYXRpbmdEaWZmZXJlbmNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpICpuZ0lmPVwic3VibGluZS5vYmplY3RLZXkgPT0gJ2Rpc3BsYXlCb29rZWRBdmVyYWdlSW1wcmVzc2lvbicgJiYgZ3RHZW5lcmFsQ29uZmlnLmNvbXBvbmVudCA9PSAnUkFUSU5HJyAmJiBST1dfREFUQVsnc2hvd0ltcHJlc3Npb25BdmVyYWdlSWNvbiddIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1pIG1kaS1pbmZvLW91dGxpbmUgc2VsbGVyLXRvb2x0aXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tIGF1dG9cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyPVwiYm9keVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXV0b0Nsb3NlXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vdXNlZW50ZXIpPVwic2V0SXNEaWZmZXJlbmNlKFJPV19EQVRBLmlzRGlmZmVyZW5jZUxlc3NUaGFuMjVQZXJjZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b29sdGlwQ2xhc3M9XCJwb3N0ZWQtYXZnLXRvb2x0aXAgcmVtb3ZlLW9uLXNjcm9sbC1jbGFzc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdiVG9vbHRpcF09XCJwb3N0ZWRJbXBEaWZmZXJlbmNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2k+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzdWJsaW5lLm9iamVjdEtleSA9PSAnZGVzY3JpcHRpb24nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwICpuZ0lmPVwiUk9XX0RBVEEuZGVzY3JpcHRpb25NZXNzYWdlIHx8IFJPV19EQVRBLmRlc2NyaXB0aW9uRW1haWxSZWZlcmVuY2VOdW1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJST1dfREFUQS5kZXNjcmlwdGlvbk1lc3NhZ2VcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBST1dfREFUQS5kZXNjcmlwdGlvbk1lc3NhZ2UgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIlJPV19EQVRBLmRlc2NyaXB0aW9uRW1haWxSZWZlcmVuY2VOdW0gIT0gJy0nICYmIFJPV19EQVRBLmRlc2NyaXB0aW9uRW1haWxSZWZlcmVuY2VOdW0gIT0gJydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbWFpbCBSZWY6IHt7IFJPV19EQVRBLmRlc2NyaXB0aW9uRW1haWxSZWZlcmVuY2VOdW0gfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBocmVmPVwie3sgUk9XX0RBVEEuZGVzY3JpcHRpb25EZXRhaWxzVXJsIH19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldD1cIl9ibGFua1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIlJPV19EQVRBLmRlc2NyaXB0aW9uRGV0YWlsc1VybFR5cGUgPT09ICdQREYnIHx8IFJPV19EQVRBLmRlc2NyaXB0aW9uRGV0YWlsc1VybFR5cGUgPT09ICdFWENFTCdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIHZpZXdEZXRhaWxzQW5kRW1haWxCdG5cIj5Eb3dubG9hZDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJST1dfREFUQS5hY3Rpdml0eW5hbWUudG9Mb3dlckNhc2UoKSA9PSAnb3JkZXIgb25ib2FyZGVkJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgKm5nSWY9XCJST1dfREFUQS5kZXNjcmlwdGlvbkRldGFpbHNVcmxUeXBlID09PSAnTElOSydcIiAoY2xpY2spPVwidmlld0RldGFpbHNDbGlja2VkKFJPV19EQVRBKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIHZpZXdEZXRhaWxzQW5kRW1haWxCdG4gb3JkZXItb25ib2FyZGVkXCI+VmlldyBkZXRhaWxzPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+ICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj1cInt7IFJPV19EQVRBLmRlc2NyaXB0aW9uRW1haWxVcmwgfX1cIiB0YXJnZXQ9XCJfYmxhbmtcIiAqbmdJZj1cIlJPV19EQVRBLmRlc2NyaXB0aW9uRW1haWxVcmwgIT0gJy0nICYmIFJPV19EQVRBLmRlc2NyaXB0aW9uRW1haWxVcmwgIT0gJydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gdmlld0RldGFpbHNBbmRFbWFpbEJ0blwiPlZpZXcgZW1haWw8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIihpc05vRGF0YVRvRGlzcGxheVN1YmplY3QkIHwgYXN5bmMpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tudWxsfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8L3RhYmxlPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8YW5uYS1jb3JlLW5vLWRhdGEtbGliIFt3aWR0aF09XCJub0RhdGFXaWR0aFwiIFttYXJnaW5Ub3BdPVwibWFyZ2luVG9wXCIgKm5nSWY9XCIoaXNOb0RhdGFUb0Rpc3BsYXlTdWJqZWN0JCB8IGFzeW5jKVwiPiA8L2FubmEtY29yZS1uby1kYXRhLWxpYj5cclxuPC9kaXY+XHJcblxyXG48IS0tIENoZWNrYm94IHRlbXBsYXRlIC0tPlxyXG48bmctdGVtcGxhdGUgI2ZpbHRlclRvb2x0aXA+XHJcbiAgICBcclxuICAgIDxkaXYgY2xhc3M9XCJyYWRpby1jb250YWluZXJcIiAqbmdJZj1cInNob3dGaWx0ZXJUb29sdGlwVGFic1wiPlxyXG4gICAgICAgIDxkaXYgW25nQ2xhc3NdPVwieydmdWxsLXdpZHRoJzogZmlsdGVyVGFiT2JqZWN0cy5sZW5ndGggPT0gMX1cIiAqbmdGb3I9XCJsZXQgZGF0YSBvZiBmaWx0ZXJUYWJPYmplY3RzXCI+XHJcbiAgICAgICAgICAgIDxwIGNsYXNzPVwiZmlsdGVyLXRhYlwiIFt0aXRsZV09XCJkYXRhLmxhYmVsXCIgKGNsaWNrKT1cInBvcHVsYXRlVG9vbHRpcERhdGFCYXNlZE9uU2VsZWN0ZWRSYWRpbyhkYXRhLCB0cnVlKVwiIFtuZ0NsYXNzXT1cInsnYWN0aXZlJzogYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpbyA9PSBkYXRhLmtleX1cIiAqbmdJZj1cImZpbHRlclRhYk9iamVjdHMubGVuZ3RoID4gMFwiPnt7IGRhdGEubGFiZWwgfX08L3A+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIFxyXG4gICAgPGRpdiBjbGFzcz1cImNoZWNrYm94LXNvcnRcIiAqbmdJZj1cInNob3dTb3J0Q29tcG9uZW50XCI+XHJcbiAgICAgICAgPGFubmEtY29yZS1zb3J0LWxpYiAgW25nQ2xhc3NdPVwieyduby1ib3R0b20tYm9yZGVyJzogIXNob3dGaWx0ZXJDb21wb25lbnR9XCJcclxuICAgICAgICAoc29ydE9wdGlvbkNsaWNrZWQpPVwic3RvcmVTb3J0VHlwZUluVGVtcFZhcmlhYmxlKCRldmVudClcIiBbc29ydE9iamVjdEtleV09XCJhbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvXCI+PC9hbm5hLWNvcmUtc29ydC1saWI+XHJcbiAgICA8L2Rpdj5cclxuICAgIFxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNob3dGaWx0ZXJDb21wb25lbnRcIj5cclxuICAgICAgICA8cCBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlblwiPlxyXG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiZmlsdGVyLXRleHQtYnRuXCIgW2Rpc2FibGVkXT1cImRpc2FibGVDbGVhckFsbFwiIChjbGljayk9XCJ1bkNoZWNrQWxsQ2hlY2tib3goKVwiPkNsZWFyIGFsbDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiZmlsdGVyLXRleHQtYnRuXCIgW2Rpc2FibGVkXT1cImRpc2FibGVTZWxlY3RBbGxcIiAoY2xpY2spPVwic2VsZWN0QWxsQ2hlY2tib3goKVwiPlNlbGVjdCBhbGw8L2J1dHRvbj5cclxuICAgICAgICA8L3A+XHJcbiAgICAgICAgPHAgY2xhc3M9XCJzZWFyY2gtYm94XCI+XHJcbiAgICAgICAgICAgIDxpIGNsYXNzPVwibWkgbWRpLXNlYXJjaCBzZWFyY2gtaWNvbiBzZWFyY2gtaWNvbi1wb3NpdGlvblwiPjwvaT5cclxuICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlNlYXJjaFwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInNlYXJjaC1pbnB1dFwiXHJcbiAgICAgICAgICAgICAgICBzdHlsZT1cIm1hcmdpbi1sZWZ0OiAycHg7IGJvcmRlcjogbm9uZTsgcGFkZGluZzogMHB4XCJcclxuICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwic2VhcmNoSXRlbVwiXHJcbiAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJzZWFyY2hGb3JUaGVJdGVtKCRldmVudClcIlxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICA8aSBjbGFzcz1cIm1kaSBtZGktY2xvc2Ugc2VhcmNoLWJhci1jbG9zZVwiIFtuZ0NsYXNzXT1cInsnZGlzYWJsZS1jbG9zZS1pY29uJzogKCFzZWFyY2hJdGVtIHx8IHNlYXJjaEl0ZW0ubGVuZ3RoID09IDApIH1cIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwiY2xlYXJTZWFyY2hlZEl0ZW0oKVwiPjwvaT5cclxuXHJcbiAgICAgICAgPC9wPlxyXG4gICAgICAgIDxkaXYgc3R5bGU9XCJwb3NpdGlvbjpyZWxhdGl2ZVwiPlxyXG4gICAgICAgICAgICA8IS0tIFRyYWNrIEJ5IGZ1bmMgLS0+XHJcbiAgICAgICAgICAgIDxjZGstdmlydHVhbC1zY3JvbGwtdmlld3BvcnQgaXRlbVNpemU9XCIxOFwiIFtzdHlsZS5oZWlnaHQucHhdPVwiaGVpZ2h0T2ZDaGVja2JveFRvb2x0aXBGaWx0ZXJcIiBjbGFzcz1cImRyb3Bkb3duLWRhdGEtY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgICAgICA8cCAqY2RrVmlydHVhbEZvcj1cImxldCBvcHRpb24gb2YgdG9vbHRpcE9wdGlvbnNcIiBjbGFzcz1cImlucHV0IGV4YW1wbGUtaXRlbVwiIChjbGljayk9XCJzZWxlY3RVbnNlbGVjdENoZWNrYm94KG9wdGlvbilcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIm9wdGlvbi5pc1NlbGVjdGVkXCIgcm9sZT1cImJ1dHRvblwiIGNsYXNzPVwibWkgbWRpLWNoZWNrLWJveCBjaGVjay1ib3hcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhb3B0aW9uLmlzU2VsZWN0ZWRcIiByb2xlPVwiYnV0dG9uXCIgY2xhc3M9XCJtaSBtZGktY2hlY2stYm94LW91dGxpbmUtYmxhbmsgY2hlY2stYm94IHVuY2hlY2tlZFwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRhdGFcIiB0aXRsZT1cInt7IG9wdGlvbi52YWx1ZSB9fVwiIFtpbm5lckhUTUxdPVwib3B0aW9uLmxhYmVsXCI+PC9zcGFuPlxyXG5cclxuXHJcbiAgICAgICAgICAgICAgICA8L3A+XHJcblxyXG4gICAgICAgICAgICAgICAgPHAgY2xhc3MgPSBcIm5vLWRhdGEtY2FzZVwiICpuZ0lmPVwidG9vbHRpcE9wdGlvbnM/Lmxlbmd0aCA9PSAwXCIgc3R5bGU9XCJwYWRkaW5nLWxlZnQ6IC40Mzc1cmVtO1wiPk5vIGRhdGEgZm91bmQ8L3A+XHJcblxyXG5cclxuXHJcbiAgICAgICAgICAgIDwvY2RrLXZpcnR1YWwtc2Nyb2xsLXZpZXdwb3J0PlxyXG4gICAgICAgICAgICA8ZGl2IHN0eWxlPVwicG9zaXRpb246IGFic29sdXRlOyB0b3A6MDsgbGVmdDowOyB3aWR0aDoxMDAlOyBoZWlnaHQ6MTAwJTsgcG9pbnRlci1ldmVudHM6bm9uZVwiPjwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cImJ1dHRvbnMtY29udGFpbmVyIGNoZWNrYm94LWZpbHRlci1idXR0b25zLWNvbnRhaW5lclwiPlxyXG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJidXR0b25cIiAoY2xpY2spPVwiY2xvc2VDaGVja2JveEZpbHRlcigpXCI+Q2FuY2VsPC9idXR0b24+XHJcbiAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICBjbGFzcz1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgZGlzYWJsZWQ6IGRpc2FibGVDaGVja2JveEFwcGx5IH1cIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwiYXBwbHlGaWx0ZXJzKClcIlxyXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZUNoZWNrYm94QXBwbHlcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgICAgQXBwbHlcclxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJzaG93RmlsdGVyQ29tcG9uZW50XCI+e3sgc2VsZWN0ZWRDaGVja2JveE9wdGlvbnNDb3VudCA9PSB0b29sdGlwT3B0aW9ucy5sZW5ndGggJiYgdG9vbHRpcE9wdGlvbnMubGVuZ3RoICE9IDAgJiYgIXNlYXJjaEl0ZW0/ICdBbGwgKCcrIHNlbGVjdGVkQ2hlY2tib3hPcHRpb25zQ291bnQgKyAnKSc6ICcoJyArIHNlbGVjdGVkQ2hlY2tib3hPcHRpb25zQ291bnQgKyAnKScgfX08L3NwYW4+XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjwhLS0gU2xpZGVyIHRlbXBsYXRlIC0tPlxyXG48bmctdGVtcGxhdGUgI3NsaWRlclRvb2xUaXA+XHJcbiAgICBcclxuICAgIDxkaXYgY2xhc3M9XCJyYWRpby1jb250YWluZXJcIiAqbmdJZj1cInNob3dGaWx0ZXJUb29sdGlwVGFic1wiPlxyXG4gICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGRhdGEgb2YgZmlsdGVyVGFiT2JqZWN0c1wiPlxyXG4gICAgICAgICAgICA8cCBjbGFzcz1cImZpbHRlci10YWJcIiBbdGl0bGVdPVwiZGF0YS5sYWJlbFwiIChjbGljayk9XCJwb3B1bGF0ZVRvb2x0aXBEYXRhQmFzZWRPblNlbGVjdGVkUmFkaW8oZGF0YSwgdHJ1ZSlcIiBbbmdDbGFzc109XCJ7J2FjdGl2ZSc6IGFubmFGaWx0ZXJTZXJ2aWNlLnNlbGVjdGVkUmFkaW8gPT0gZGF0YS5rZXl9XCIgKm5nSWY9XCJmaWx0ZXJUYWJPYmplY3RzLmxlbmd0aCA+IDBcIj57eyBkYXRhLmxhYmVsIH19PC9wPiAgIFxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8IS0tIDxidXR0b24gY2xhc3M9XCJjb2x1bW4tY2xlYXItYWxsIGFsaWduLWNlbnRlclwiIFtkaXNhYmxlZF09XCJkaXNhYmxlQ29sdW1uQ2xlYXJBbGxCdG5cIiAoY2xpY2spPVwiY2xlYXJDb2x1bW5GaWx0ZXIoKVwiPlxyXG4gICAgICAgIENsZWFyIGZpbHRlclxyXG4gICAgPC9idXR0b24+IC0tPlxyXG4gICAgICAgIFxyXG4gICAgPGFubmEtY29yZS1zb3J0LWxpYiAqbmdJZj1cInNob3dTb3J0Q29tcG9uZW50XCIgW25nQ2xhc3NdPVwieyduby1ib3R0b20tYm9yZGVyJzogIXNob3dGaWx0ZXJDb21wb25lbnR9XCJcclxuICAgIChzb3J0T3B0aW9uQ2xpY2tlZCk9XCJzdG9yZVNvcnRUeXBlSW5UZW1wVmFyaWFibGUoJGV2ZW50KVwiIFtzb3J0T2JqZWN0S2V5XT1cImFubmFGaWx0ZXJTZXJ2aWNlLnNlbGVjdGVkUmFkaW9cIj48L2FubmEtY29yZS1zb3J0LWxpYj5cclxuICAgIFxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNob3dGaWx0ZXJDb21wb25lbnRcIj5cclxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY29sdW1uLWNsZWFyLWFsbFwiIFtkaXNhYmxlZF09XCJkaXNhYmxlQ29sdW1uQ2xlYXJBbGxCdG5cIiAoY2xpY2spPVwiY2xlYXJDb2x1bW5GaWx0ZXIoKVwiPkNsZWFyIGZpbHRlcjwvYnV0dG9uPlxyXG4gICAgICAgIDxzZWN0aW9uIGNsYXNzPVwibWluLW1heENvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICAgIHR5cGU9XCJudW1iZXJcIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJzbGlkZXItdGV4dFwiXHJcbiAgICAgICAgICAgICAgICBzdGVwPVwie3sgc2xpZGVyRmlsdGVyVGV4dEJveFN0ZXAgfX1cIlxyXG4gICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJzbGlkZXJNaW5WYWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJtaW5WYWx1ZUNoYW5nZWQoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7J3JlZC1ib3JkZXInOiBzaG93U2xpZGVyTWluVmFsdWVFcnJvcn1cIlxyXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJNaW5cIlxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICA8c3Bhbj5Ubzwvc3Bhbj5cclxuICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgICB0eXBlPVwibnVtYmVyXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwic2xpZGVyLXRleHRcIlxyXG4gICAgICAgICAgICAgICAgc3RlcD1cInt7IHNsaWRlckZpbHRlclRleHRCb3hTdGVwIH19XCJcclxuICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwic2xpZGVyTWF4VmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwibWF4VmFsdWVDaGFuZ2VkKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieydyZWQtYm9yZGVyJzogc2hvd1NsaWRlck1heFZhbHVlRXJyb3J9XCJcclxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiTWF4XCJcclxuICAgICAgICAgICAgLz5cclxuICAgICAgICA8L3NlY3Rpb24+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInNpZGViYXItc2xpZGVyXCI+XHJcbiAgICAgICAgICAgIDxuZ3gtc2xpZGVyXHJcbiAgICAgICAgICAgICAgICAqbmdJZj1cIiFzaG93RW1wdHlTcGFjZUZvclNsaWRlclwiXHJcbiAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7J3Nob3ctbWluJzogc2xpZGVyTWluVmFsdWUgIT0gb3B0aW9ucy5mbG9vciwgJ3Nob3ctbWF4Jzogc2xpZGVyTWF4VmFsdWUgIT0gb3B0aW9ucy5jZWlsfVwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImZpbHRlci1zbGlkZXJcIlxyXG4gICAgICAgICAgICAgICAgW3ZhbHVlXT1cInNsaWRlckVudGVyZWRNaW5WYWx1ZVwiXHJcbiAgICAgICAgICAgICAgICBbaGlnaFZhbHVlXT1cInNsaWRlckVudGVyZWRNYXhWYWx1ZVwiXHJcbiAgICAgICAgICAgICAgICBbb3B0aW9uc109XCJvcHRpb25zXCJcclxuICAgICAgICAgICAgPjwvbmd4LXNsaWRlcj5cclxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cInNob3dFbXB0eVNwYWNlRm9yU2xpZGVyXCIgY2xhc3M9XCJzbGlkZXItcGxhY2Vob2xkZXJcIj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIFxyXG4gICAgPGRpdiBjbGFzcz1cImJ1dHRvbnMtY29udGFpbmVyXCI+XHJcbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ1dHRvblwiIChjbGljayk9XCJjYW5jZWxTbGlkZXJGaWx0ZXIoKVwiPkNhbmNlbDwvYnV0dG9uPlxyXG4gICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgY2xhc3M9XCJidXR0b25cIlxyXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7IGRpc2FibGVkOiBkaXNhYmxlU2xpZGVyQXBwbHlCdXR0b24gfVwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJhcHBseVNsaWRlckZpbHRlcigpXCJcclxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVTbGlkZXJBcHBseUJ1dHRvblwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgICBBcHBseVxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48IS0tIERhdGUgUGlja2VyIFRlbXBsYXRlIC0tPlxyXG48bmctdGVtcGxhdGUgI2RhdGVQaWNrZXJUb29sdGlwPlxyXG4gICAgPGRpdiBjbGFzcz1cInJhZGlvLWNvbnRhaW5lclwiICpuZ0lmPVwic2hvd0ZpbHRlclRvb2x0aXBUYWJzXCI+XHJcbiAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgZGF0YSBvZiBmaWx0ZXJUYWJPYmplY3RzXCI+XHJcbiAgICAgICAgICAgIDxwIGNsYXNzPVwiZmlsdGVyLXRhYlwiIFt0aXRsZV09XCJkYXRhLmxhYmVsXCIgKGNsaWNrKT1cInBvcHVsYXRlVG9vbHRpcERhdGFCYXNlZE9uU2VsZWN0ZWRSYWRpbyhkYXRhLCB0cnVlKVwiIFtuZ0NsYXNzXT1cInsnYWN0aXZlJzogYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpbyA9PSBkYXRhLmtleX1cIiAqbmdJZj1cImZpbHRlclRhYk9iamVjdHMubGVuZ3RoID4gMFwiPnt7IGRhdGEubGFiZWwgfX08L3A+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8YW5uYS1jb3JlLXNvcnQtbGliICpuZ0lmPVwic2hvd1NvcnRDb21wb25lbnRcIiBbbmdDbGFzc109XCJ7J25vLWJvdHRvbS1ib3JkZXInOiAhc2hvd0ZpbHRlckNvbXBvbmVudH1cIlxyXG4gICAgKHNvcnRPcHRpb25DbGlja2VkKT1cInN0b3JlU29ydFR5cGVJblRlbXBWYXJpYWJsZSgkZXZlbnQpXCIgW3NvcnRPYmplY3RLZXldPVwiYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpb1wiPjwvYW5uYS1jb3JlLXNvcnQtbGliPlxyXG4gICAgXHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2hvd0ZpbHRlckNvbXBvbmVudFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJkYXRlcGlja2VyLWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY29sdW1uLWNsZWFyLWFsbFwiIFtkaXNhYmxlZF09XCJkaXNhYmxlQ29sdW1uQ2xlYXJBbGxCdG5cIiAoY2xpY2spPVwiY2xlYXJDb2x1bW5GaWx0ZXIoKVwiPlxyXG4gICAgICAgICAgICAgICAgQ2xlYXIgZmlsdGVyXHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8YW5uYS1jb3JlLWNhbGVuZGFyLWZpbHRlci1saWJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZmlsdGVyLWNhbGVuZGFyXCJcclxuICAgICAgICAgICAgICAgIFttaW5EYXRlXT1cImNhbGVuZGFyTWluRW5hYmxlZERhdGVcIlxyXG4gICAgICAgICAgICAgICAgW21heERhdGVdPVwiY2FsZW5kYXJNYXhFbmFibGVkRGF0ZVwiXHJcbiAgICAgICAgICAgICAgICBbc2VsZWN0ZWRGcm9tRGF0ZV09XCJzZWxlY3RlZE1pbkRhdGVcIlxyXG4gICAgICAgICAgICAgICAgW3NlbGVjdGVkVG9EYXRlXT1cInNlbGVjdGVkTWF4RGF0ZVwiXHJcbiAgICAgICAgICAgICAgICAoc2VsZWN0ZWREYXRlKSA9IFwiY2FsZW5kYXJEYXRlQ2hhbmdlZCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgIFtsYWJlbF09XCJzZWxlY3RlZExhYmVsXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICA8L2FubmEtY29yZS1jYWxlbmRhci1maWx0ZXItbGliPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cImJ1dHRvbnMtY29udGFpbmVyXCI+XHJcbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ1dHRvblwiIChjbGljayk9XCJjYW5jZWxJbkRhdGVGaWx0ZXIoKVwiPkNhbmNlbDwvYnV0dG9uPlxyXG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJidXR0b25cIiAoY2xpY2spPVwiYXBwbHlEYXRlRmlsdGVyKClcIiBbbmdDbGFzc109XCJ7IGRpc2FibGVkOiBkaXNhYmxlQ2FsZW5kYXJBcHBseUJ0biB9XCJcclxuICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZUNhbGVuZGFyQXBwbHlCdG5cIj5BcHBseTwvYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcbiAgICBcclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjwhLS0gV2VlayBQaWNrZXIgVGVtcGxhdGUgLS0+XHJcbjxuZy10ZW1wbGF0ZSAjd2Vla1BpY2tlclRvb2xUaXA+XHJcbiAgICA8ZGl2IGNsYXNzPVwid2Vla3BpY2tlci1jb250YWluZXJcIj5cclxuICAgICAgICA8YW5uYS1jb3JlLXdlZWstY2FsZW5kYXItZmlsdGVyLWxpYlxyXG4gICAgICAgICAgICBbd2Vlay1jYWxlbmRhci1jb25maWddPVwiZ3RHZW5lcmFsQ29uZmlnLm11bHRpV2Vla1BpY2tlckNvbmZpZ1wiXHJcbiAgICAgICAgICAgIChhcHBseSk9XCJhcHBseVdlZWtGaWx0ZXIoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgIFtmcm9tLWRhdGVdPVwiY2FsZW5kYXJNaW5FbmFibGVkRGF0ZVwiXHJcbiAgICAgICAgICAgIFt0by1kYXRlXT1cImNhbGVuZGFyTWF4RW5hYmxlZERhdGVcIlxyXG4gICAgICAgID5cclxuICAgICAgICA8L2FubmEtY29yZS13ZWVrLWNhbGVuZGFyLWZpbHRlci1saWI+XHJcbiAgICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjwhLS0gVGltZSBGaWx0ZXIgVGVtcGxhdGUgLS0+XHJcbjxuZy10ZW1wbGF0ZSAjdGltZUZpbHRlclRvb2xUaXA+XHJcbiAgICBcclxuICAgIDxkaXYgY2xhc3M9XCJyYWRpby1jb250YWluZXJcIiAqbmdJZj1cInNob3dGaWx0ZXJUb29sdGlwVGFic1wiPlxyXG4gICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGRhdGEgb2YgZmlsdGVyVGFiT2JqZWN0c1wiPlxyXG4gICAgICAgICAgICA8cCBjbGFzcz1cImZpbHRlci10YWJcIiBbdGl0bGVdPVwiZGF0YS5sYWJlbFwiIChjbGljayk9XCJwb3B1bGF0ZVRvb2x0aXBEYXRhQmFzZWRPblNlbGVjdGVkUmFkaW8oZGF0YSwgdHJ1ZSlcIiBbbmdDbGFzc109XCJ7J2FjdGl2ZSc6IGFubmFGaWx0ZXJTZXJ2aWNlLnNlbGVjdGVkUmFkaW8gPT0gZGF0YS5rZXl9XCIgKm5nSWY9XCJmaWx0ZXJUYWJPYmplY3RzLmxlbmd0aCA+IDBcIj57eyBkYXRhLmxhYmVsIH19PC9wPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGFubmEtY29yZS1zb3J0LWxpYiAqbmdJZj1cInNob3dTb3J0Q29tcG9uZW50XCIgW25nQ2xhc3NdPVwieyduby1ib3R0b20tYm9yZGVyJzogIXNob3dGaWx0ZXJDb21wb25lbnR9XCJcclxuICAgIChzb3J0T3B0aW9uQ2xpY2tlZCk9XCJzdG9yZVNvcnRUeXBlSW5UZW1wVmFyaWFibGUoJGV2ZW50KVwiIFtzb3J0T2JqZWN0S2V5XT1cImFubmFGaWx0ZXJTZXJ2aWNlLnNlbGVjdGVkUmFkaW9cIj48L2FubmEtY29yZS1zb3J0LWxpYj5cclxuICAgIFxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNob3dGaWx0ZXJDb21wb25lbnRcIj5cclxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY29sdW1uLWNsZWFyLWFsbFwiIFtkaXNhYmxlZF09XCJkaXNhYmxlQ29sdW1uQ2xlYXJBbGxCdG5cIiAoY2xpY2spPVwiY2xlYXJDb2x1bW5GaWx0ZXIoKVwiPkNsZWFyIGZpbHRlcjwvYnV0dG9uPlxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgICAgY2xhc3M9XCJ0aW1lLWZpbHRlci1jaGVja2JveGVzXCJcclxuICAgICAgICAgICAgKm5nSWY9XCJndEdlbmVyYWxDb25maWcuY29tcG9uZW50ID09ICdTUE9UREVUQUlMUycgfHwgZ3RHZW5lcmFsQ29uZmlnLmNvbXBvbmVudCA9PSAnRVhDTFVERUlOVkVOVE9SWVBPUFVQJyB8fCBndEdlbmVyYWxDb25maWcuY29tcG9uZW50ID09ICdSQVRJTkcnXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICAgIDwhLS0gTXVsdGkgdGltZSBvcHRpb24gY2hlY2tib3ggLS0+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCIgc3R5bGU9XCJwYWRkaW5nOiAwLjVyZW0gMCAwLjVyZW0gMC41cmVtXCIgKm5nSWY9XCJzaG93TXVsdGlUaW1lQ2hlY2tib3hcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJtdWx0aVRpbWVDaGVja2JveENoZWNrZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnMgY3VzdG9tLWNvbHVtbi1jaGVja2JveC1jaGVja2VkXCJcclxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0T3JVbnNlbGVjdE11bHRpVGltZUNoZWNrYm94KClcIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgIGNoZWNrX2JveFxyXG4gICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIiFtdWx0aVRpbWVDaGVja2JveENoZWNrZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnMgY3VzdG9tLWNvbHVtbi1jaGVja2JveC11bmNoZWNrZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RPclVuc2VsZWN0TXVsdGlUaW1lQ2hlY2tib3goKVwiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgY2hlY2tfYm94X291dGxpbmVfYmxhbmtcclxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxwIHN0eWxlPVwibWFyZ2luLWxlZnQ6IDJweFwiPkluY2x1ZGUgTXVsdGk8L3A+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8IS0tIFplcm8gdGltZSBvcHRpb24gY2hlY2tib3ggLS0+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCIgc3R5bGU9XCJwYWRkaW5nOiAwLjVyZW0gMCAwLjVyZW0gMC41cmVtXCIgKm5nSWY9XCJzaG93WmVyb1RpbWVDaGVja2JveFwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInplcm9UaW1lQ2hlY2tib3hDaGVja2VkXCJcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1hdGVyaWFsLWljb25zIGN1c3RvbS1jb2x1bW4tY2hlY2tib3gtY2hlY2tlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdE9yVW5zZWxlY3RaZXJvVGltZUNoZWNrYm94KClcIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgIGNoZWNrX2JveFxyXG4gICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIiF6ZXJvVGltZUNoZWNrYm94Q2hlY2tlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtYXRlcmlhbC1pY29ucyBjdXN0b20tY29sdW1uLWNoZWNrYm94LXVuY2hlY2tlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdE9yVW5zZWxlY3RaZXJvVGltZUNoZWNrYm94KClcIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgIGNoZWNrX2JveF9vdXRsaW5lX2JsYW5rXHJcbiAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8cCBzdHlsZT1cIm1hcmdpbi1sZWZ0OiAycHhcIj5JbmNsdWRlIFplcm88L3A+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8IS0tIEVudGVyIHRpbWUgcmFuZ2Ugb3B0aW9uIGNoZWNrYm94IC0tPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiIHN0eWxlPVwicGFkZGluZzogMC41cmVtIDAgMC41cmVtIDAuNXJlbVwiICpuZ0lmPVwic2hvd0VudGVyVGltZUNoZWNrYm94XCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiZW50ZXJUaW1lQ2hlY2tib3hDaGVja2VkXCJcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1hdGVyaWFsLWljb25zIGN1c3RvbS1jb2x1bW4tY2hlY2tib3gtY2hlY2tlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdE9yVW5zZWxlY3RFbnRlclRpbWVDaGVja2JveCgpXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICBjaGVja19ib3hcclxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhZW50ZXJUaW1lQ2hlY2tib3hDaGVja2VkXCJcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1hdGVyaWFsLWljb25zIGN1c3RvbS1jb2x1bW4tY2hlY2tib3gtdW5jaGVja2VkXCJcclxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0T3JVbnNlbGVjdEVudGVyVGltZUNoZWNrYm94KClcIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgIGNoZWNrX2JveF9vdXRsaW5lX2JsYW5rXHJcbiAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8cCBzdHlsZT1cIm1hcmdpbi1sZWZ0OiAycHhcIj5FbnRlciB0aW1lIHJhbmdlPC9wPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwidGltZS1sYWJlbC1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgPGxhYmVsPkZyb208L2xhYmVsPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0aW1lLWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJmb3JtLWNvbnRyb2wgbnVtYmVySW5wdXRcIiBbbmdDbGFzc109XCJ7J2Vycm9yLWJvcmRlcic6IHN0YXJ0VGltZUhvdXJFcnJ9XCIgWyhuZ01vZGVsKV09XCJzZWxlY3RlZEZyb21UaW1lWzBdXCIgdHlwZT1cInRleHRcIiBwYXR0ZXJuPVwiWzEtMTJdKlwiIChuZ01vZGVsQ2hhbmdlKT1cInN0YXJ0VGltZUhvdXJDaGFuZ2UoJGV2ZW50KVwiIC8+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhcnJvdy1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwibWRpIG1kaS1tZW51LXVwIHVwd2FyZFwiIChjbGljayk9XCJjaGFuZ2VTdGFydFRpbWVIb3VyKHRydWUpXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJtZGkgbWRpLW1lbnUtZG93biBkb3dud2FyZFwiIChjbGljayk9XCJjaGFuZ2VTdGFydFRpbWVIb3VyKGZhbHNlKVwiPjwvaT5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZG90XCI+Ojwvc3Bhbj5cclxuICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiZm9ybS1jb250cm9sIG51bWJlcklucHV0XCIgW25nQ2xhc3NdPVwieydlcnJvci1ib3JkZXInOiBzdGFydFRpbWVNaW5FcnJ9XCIgWyhuZ01vZGVsKV09XCJzZWxlY3RlZEZyb21UaW1lWzFdXCIgdHlwZT1cInRleHRcIiBwYXR0ZXJuPVwiWzAtNTldKlwiIChuZ01vZGVsQ2hhbmdlKT1cInN0YXJ0VGltZU1pbkNoYW5nZSgkZXZlbnQpXCIvPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXJyb3ctY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cIm1kaSBtZGktbWVudS11cCB1cHdhcmRcIiAoY2xpY2spPVwiY2hhbmdlU3RhcnRUaW1lTWludXRlKHRydWUpXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJtZGkgbWRpLW1lbnUtZG93biBkb3dud2FyZFwiIHN0eWxlPVwicG9zaXRpb246IHJlbGF0aXZlO2xlZnQ6IC4yNXB4O1wiIChjbGljayk9XCJjaGFuZ2VTdGFydFRpbWVNaW51dGUoZmFsc2UpXCI+PC9pPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgIDxtYXQtYnV0dG9uLXRvZ2dsZS1ncm91cCBbKG5nTW9kZWwpXT1cInNlbGVjdGVkRnJvbVRpbWVbMl1cIiAobmdNb2RlbENoYW5nZSk9XCJkaXNhYmxlVGltZUZpbHRlckFwcGx5QnV0dG9uKClcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bWF0LWJ1dHRvbi10b2dnbGUgdmFsdWU9XCJBTVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5BTTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L21hdC1idXR0b24tdG9nZ2xlPlxyXG4gICAgICAgICAgICAgICAgICAgIDxtYXQtYnV0dG9uLXRvZ2dsZSB2YWx1ZT1cIlBNXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPlBNPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbWF0LWJ1dHRvbi10b2dnbGU+XHJcbiAgICAgICAgICAgICAgICA8L21hdC1idXR0b24tdG9nZ2xlLWdyb3VwPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInRpbWUtbGFiZWwtY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgIDxsYWJlbD5UbzwvbGFiZWw+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInRpbWUtY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImZvcm0tY29udHJvbCBudW1iZXJJbnB1dFwiIFsobmdNb2RlbCldPVwic2VsZWN0ZWRUb1RpbWVbMF1cIiBbbmdDbGFzc109XCJ7J2Vycm9yLWJvcmRlcic6IGVuZFRpbWVIb3VyRXJyfVwiIChuZ01vZGVsQ2hhbmdlKT1cImVuZFRpbWVIb3VyQ2hhbmdlKCRldmVudClcIiB0eXBlPVwidGV4dFwicGF0dGVybj1cIlsxLTEyXSpcIiAvPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXJyb3ctY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cIm1kaSBtZGktbWVudS11cCB1cHdhcmRcIiAoY2xpY2spPVwiY2hhbmdlRW5kVGltZUhvdXIodHJ1ZSlcIj48L2k+XHJcbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cIm1kaSBtZGktbWVudS1kb3duIGRvd253YXJkXCIgKGNsaWNrKT1cImNoYW5nZUVuZFRpbWVIb3VyKGZhbHNlKVwiPjwvaT5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZG90XCI+Ojwvc3Bhbj5cclxuICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiZm9ybS1jb250cm9sIG51bWJlcklucHV0XCIgW25nQ2xhc3NdPVwieydlcnJvci1ib3JkZXInOiBlbmRUaW1lTWluRXJyfVwiIFsobmdNb2RlbCldPVwic2VsZWN0ZWRUb1RpbWVbMV1cIiAobmdNb2RlbENoYW5nZSk9XCJlbmRUaW1lTWluQ2hhbmdlKCRldmVudClcIiB0eXBlPVwidGV4dFwicGF0dGVybj1cIlswLTU5XSpcIiAvPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXJyb3ctY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cIm1kaSBtZGktbWVudS11cCB1cHdhcmRcIiAoY2xpY2spPVwiY2hhbmdlRW5kVGltZU1pbnV0ZSh0cnVlKVwiPjwvaT5cclxuICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwibWRpIG1kaS1tZW51LWRvd24gZG93bndhcmRcIiBzdHlsZT1cInBvc2l0aW9uOiByZWxhdGl2ZTtsZWZ0OiAuMjVweDtcIiAoY2xpY2spPVwiY2hhbmdlRW5kVGltZU1pbnV0ZShmYWxzZSlcIj48L2k+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgICAgPG1hdC1idXR0b24tdG9nZ2xlLWdyb3VwIFsobmdNb2RlbCldPVwic2VsZWN0ZWRUb1RpbWVbMl1cIiAobmdNb2RlbENoYW5nZSk9XCJkaXNhYmxlVGltZUZpbHRlckFwcGx5QnV0dG9uKClcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bWF0LWJ1dHRvbi10b2dnbGUgdmFsdWU9XCJBTVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5BTTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L21hdC1idXR0b24tdG9nZ2xlPlxyXG4gICAgICAgICAgICAgICAgICAgIDxtYXQtYnV0dG9uLXRvZ2dsZSB2YWx1ZT1cIlBNXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPlBNPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbWF0LWJ1dHRvbi10b2dnbGU+XHJcbiAgICAgICAgICAgICAgICA8L21hdC1idXR0b24tdG9nZ2xlLWdyb3VwPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJidXR0b25zLWNvbnRhaW5lclwiPlxyXG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJidXR0b25cIiAoY2xpY2spPVwiY2xvc2VUaW1lRmlsdGVyKClcIj5DYW5jZWw8L2J1dHRvbj5cclxuICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgIGNsYXNzPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgW25nQ2xhc3NdPVwieyBkaXNhYmxlZDogZGlzYWJsZVRpbWVGaWx0ZXJBcHBseUJ0biB9XCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cImFwcGx5VGltZUZpbHRlcnMoKVwiXHJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlVGltZUZpbHRlckFwcGx5QnRuXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICAgIEFwcGx5XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjY29sdW1uSW5mb1Rvb2x0aXA+XHJcbiAgPHAgc3R5bGU9XCJjb2xvcjogYmxhY2s7d2hpdGUtc3BhY2U6IG5vd3JhcDtcIj5UaGlzIHByZWVtcHRpb24gaXMgcmVqZWN0ZWQgYW5kIG5vdCBtYXJrZWQgZm9yIGNyZWRpdC48L3A+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI3JhdGluZ0luZm9Ub29sdGlwPlxyXG4gICAgPHAgY2xhc3M9XCJmaXJzdC1yb3dcIj5TaG93cyAnQm9va2VkIFJhdGluZycgZm9yIFByZWVtcHRpb25zICYgTWFrZUdvb2QgT2ZmZXJlZCBzcG90KHMpLjwvcD5cclxuICAgIDxwIGNsYXNzPVwic2Vjb25kLXJvd1wiPlNob3dzICdQcm9qZWN0ZWQgUmF0aW5nJyBmb3IgQURVIE9mZmVyZWQgc3BvdChzKS48L3A+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI2ltcHNJbmZvVG9vbHRpcD5cclxuICAgIDxwIGNsYXNzID1cImZpcnN0LXJvd1wiID5TaG93cyAnQm9va2VkIElNUFMnIGZvciBQcmVlbXB0aW9ucyAmIE1ha2VHb29kIE9mZmVyZWQgc3BvdChzKS48L3A+XHJcbiAgICA8cCBjbGFzcz1cInNlY29uZC1yb3dcIiA+U2hvd3MgJ1Byb2plY3RlZCBJTVBTJyBmb3IgQURVIE9mZmVyZWQgc3BvdChzKS48L3A+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI3Nwb3RzQ29sdW1uRXF1aXZhbGl6YXRpb25NZXNzYWdlVG9vbHRpcD5cclxuICAgIDxwIGNsYXNzPVwic3BvdC1jb2x1bW4tdG9vbHRpcC1tZXNzYWdlXCIgPlRoaXMgY29uc2lzdHMgb2YgZXF1aXZhbGl6ZWQgc3BvdHMgYW5kIHVuLWVxdWl2YWxpemVkIFBhaWQgUHJvZ3JhbXMgJiB1bi1lcXVpdmFsaXplZCBOb24tc3BvdHMuPC9wPlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNyYXRlSW5mb1Rvb2x0aXA+XHJcbiAgICA8cCBjbGFzcyA9XCJmaXJzdC1yb3dcIiA+U2hvd3MgJ0Jvb2tlZCBSYXRlJyBmb3IgUHJlZW1wdGlvbnMgJiBNYWtlR29vZCBPZmZlcmVkIHNwb3QocykuPC9wPlxyXG4gICAgPHAgY2xhc3M9XCJzZWNvbmQtcm93XCIgPlNob3dzICdQcm9qZWN0ZWQgJCBWYWx1ZScgZm9yIEFEVSBPZmZlcmVkIHNwb3QocykuPC9wPlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNzZWxsZXJIaWVyYXJjaHlUb29sdGlwPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNlbGxlckdyb3VwSGllcmFyY2h5Lmxlbmd0aCA+IDBcIj5cclxuICAgICAgICA8c2VjdGlvbiBjbGFzcyA9IFwiaGllcmFyY2h5LXRhYmxlLWNvbnRhaW5lclwiPlxyXG4gICAgICAgIDx0YWJsZSBjbGFzcz1cInNlbGxlci1oaWVyYXJjaHktdGFibGVcIj5cclxuICAgICAgICAgICAgPHRoZWFkPlxyXG4gICAgICAgICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0aD4jPC90aD5cclxuICAgICAgICAgICAgICAgICAgICA8dGg+SW52ZW50b3J5IENvZGVzPC90aD5cclxuICAgICAgICAgICAgICAgICAgICA8dGg+UHJvZ3JhbS9EZXNjcmlwdGlvbjwvdGg+XHJcbiAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICA8L3RoZWFkPlxyXG4gICAgICAgICAgICA8dGJvZHk+XHJcbiAgICAgICAgICAgICAgICA8dHIgKm5nRm9yPVwibGV0IGRhdGEgb2Ygc2VsbGVyR3JvdXBIaWVyYXJjaHk7IGxldCB0b29sdGlwSW5kZXggPSBpbmRleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0ZD57eyB0b29sdGlwSW5kZXggKyAxIH19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIHNob3dFbGxpcHNpc1RleHRPbkhvdmVyPnt7IGRhdGEuSW52ZW50b3J5Q29kZSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gc2hvd0VsbGlwc2lzVGV4dE9uSG92ZXI+e3sgZGF0YS5Qcm9ncmFtIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICA8L3Rib2R5PlxyXG4gICAgICAgIDwvdGFibGU+XHJcbiAgICA8L3NlY3Rpb24+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzZWxsZXJHcm91cEhpZXJhcmNoeS5sZW5ndGggPT0gMFwiPlxyXG4gICAgICAgIDxzcGFuIHN0eWxlPVwiY29sb3I6ICMwMDBcIj5TZWxsZXIgZ3JvdXAgbm90IGF2YWlsYWJsZSBmb3IgdGhpcyBpbnZlbnRvcnkgY29kZTwvc3Bhbj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNsdXJWaW9sYXRpb25JbmZvVG9vbHRpcD5cclxuICAgIDxwIGNsYXNzID1cImZpcnN0LXJvd1wiID5UaGUgdmFsdWVzIGFyZSBmb3IgdGhlIGVudGlyZSB3ZWVrLjwvcD5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjcG9zdGVkUmF0aW5nRGlmZmVyZW5jZT5cclxuICAgIDxwIGNsYXNzPVwiZGlmZmVyZW5jZS10ZXh0XCI+VGhlIGRpZmZlcmVuY2UgYmV0d2VlbiBwb3N0ZWQgYW5kIGJvb2tlZCBhdmVyYWdlIHJhdGluZyBpcyB7e2lzRGlmZmVyZW5jZUxlc3NUaGFuMjVQZXJjZW50ID8gJ2xlc3MnIDogJ21vcmUnfX0gdGhhbiAyNSUuPC9wPlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNwb3N0ZWRJbXBEaWZmZXJlbmNlPlxyXG4gICAgPHAgY2xhc3M9XCJkaWZmZXJlbmNlLXRleHRcIj5UaGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHBvc3RlZCBhbmQgYm9va2VkIGF2ZXJhZ2UgaW1wcmVzc2lvbiBpcyB7e2lzRGlmZmVyZW5jZUxlc3NUaGFuMjVQZXJjZW50ID8gJ2xlc3MnIDogJ21vcmUnfX0gdGhhbiAyNSUuPC9wPlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNvbmdvaW5nUmV2Qm9va2VkQ29sdW1uVG9vbHRpcD5cclxuICAgIDxwPlRoZSBCb29rZWQgJCB2YWx1ZSwgU3BvdHMsIEdSUCwgQ1BQLCBJTVBTLCBDUE0gY29ycmVzcG9uZHMgb24gdGhlIGxhc3QgcGVybWFuZW50IHJldmlzaW9uIGdlbmVyYXRlZDwvcD5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjY29tcGxldGVkUmV2Qm9va2VkQ29sdW1uVG9vbHRpcD5cclxuICAgIDxwPlRoZSBCb29rZWQgJCB2YWx1ZSBjb3JyZXNwb25kcyBvbiB0aGUgbGFzdCBwZXJtYW5lbnQgcmV2aXNpb24gZ2VuZXJhdGVkPC9wPlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNhdmdCb29rZWRSYXRlPlxyXG4gICAgPHA+VGhpcyBpcyB0aGUgYm9va2VkIGF2ZXJhZ2UgUmF0ZTwvcD5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjYXZnQm9va2VkUnRnPlxyXG4gICAgPHA+VGhpcyBpcyB0aGUgYm9va2VkIGF2ZXJhZ2UgUlRHPC9wPlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNhdmdCb29rZWRJbXBzPlxyXG4gICAgPHA+VGhpcyBpcyB0aGUgYm9va2VkIGF2ZXJhZ2UgSU1QKOKAmTAwMCk8L3A+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI2NpcmN1bGFyUHJvZ3Jlc3NCYXI+XHJcbiAgICA8Y2lyY2xlLXByb2dyZXNzXHJcbiAgICAgICAgW3BlcmNlbnRdPVwicGVyY2VudERvbmVcIlxyXG4gICAgICAgIFtyYWRpdXNdPVwiNVwiXHJcbiAgICAgICAgW3Nob3dUaXRsZV09XCJmYWxzZVwiXHJcbiAgICAgICAgW3Nob3dVbml0c109XCJmYWxzZVwiXHJcbiAgICAgICAgW3Nob3dTdWJ0aXRsZV09XCJmYWxzZVwiXHJcbiAgICAgICAgW291dGVyU3Ryb2tlV2lkdGhdPVwiM1wiXHJcbiAgICAgICAgW2lubmVyU3Ryb2tlV2lkdGhdPVwiM1wiXHJcbiAgICAgICAgW3NwYWNlXT1cIi0zXCJcclxuICAgICAgICBbb3V0ZXJTdHJva2VDb2xvcl09XCInIzI2OGJmZidcIlxyXG4gICAgICAgIFtpbm5lclN0cm9rZUNvbG9yXT1cIicjZDVkNWQ1J1wiXHJcbiAgICAgICAgW2FuaW1hdGlvbkR1cmF0aW9uXT1cIjEwXCJcclxuICAgID48L2NpcmNsZS1wcm9ncmVzcz5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcblxyXG48bmctdGVtcGxhdGUgI3VzZXJMb2dnZWRJbkRldGFpbHM+XHJcbiAgPGRpdiBjbGFzcz1cInRvb2x0aXAtZGl2LWNvbnRhaW5lclwiPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZGF0YSBvZiB0ZXh0QWN0aW9uVG9vbHRpcFwiPlxyXG4gICAgICAgIDxzcGFuICpuZ0lmPVwiZGF0YS5rZXkgIT0gJ3JlYWQnXCI+ICAgICAgICBcclxuICAgICAge3sgZGF0YS5rZXkgfX0gPGI+IHt7ZGF0YS52YWx1ZX19PC9iPlxyXG4gICAgICAgIDwvc3Bhbj5cclxuICAgICAgICA8c3BhbiAqbmdJZj1cImRhdGEua2V5ID09ICdyZWFkJ1wiPiAgICAgICAgXHJcbiAgICAgICAgICAgPGI+IHt7ZGF0YS52YWx1ZX19PC9iPlxyXG4gICAgICAgIDwvc3Bhbj5cclxuICAgPC9uZy1jb250YWluZXI+XHJcbiAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI21hcmtBc1JlYWRUaXA+XHJcbiAgICA8ZGl2IGNsYXNzPVwidG9vbHRpcC1kaXYtY29udGFpbmVyXCI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGRhdGEgb2YgdGV4dEFjdGlvblRvb2x0aXBcIj5cclxuICAgICAgICB7e2RhdGEudmFsdWV9fVxyXG4gICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjdGV4dEFjdGlvblRvb2x0aXBUZW1wbGF0ZT5cclxuICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBkYXRhIG9mIHRleHRBY3Rpb25Ub29sdGlwXCI+XHJcbiAgICAge3sgZGF0YS5rZXkgfX0gPGI+IHt7ZGF0YS52YWx1ZX19PC9iPlxyXG4gIDwvbmctY29udGFpbmVyPlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICN0b29sdGlwQ29udGFpbmluZ1RhYmxlVGVtcGxhdGU+XHJcbiAgPGRpdiAqbmdJZj1cInRvb2x0aXBDb250YWluaW5nVGFibGVcIiBjbGFzcz1cInRvb2x0aXAtZGl2LWNvbnRhaW5lclwiPlxyXG4gICAgPHVsPlxyXG4gICAgICA8bGkgKm5nRm9yPVwibGV0IGhlYWRlck1zZyBvZiB0b29sdGlwQ29udGFpbmluZ1RhYmxlLnRhYmxlSGVhZGVyTXNnXCI+XHJcbiAgICAgICAgPGI+IHt7aGVhZGVyTXNnfX0gIDwvYj5cclxuICAgICAgPC9saT5cclxuICAgIDwvdWw+XHJcblxyXG4gICAgPHRhYmxlIGNsYXNzPVwidG9vbHRpcC10YWJsZVwiPlxyXG4gICAgICA8dGhlYWQ+XHJcbiAgICAgICAgPHRyPlxyXG4gICAgICAgICAgPHRoICpuZ0Zvcj1cImxldCBoZWFkZXIgb2YgdG9vbHRpcENvbnRhaW5pbmdUYWJsZS50b29sdGlwVGFibGVIZWFkZXJcIj5cclxuICAgICAgICAgICAge3sgaGVhZGVyfX1cclxuICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgPC90cj5cclxuICAgICAgPC90aGVhZD5cclxuICAgICAgPHRib2R5PlxyXG4gICAgICAgIDx0ciAqbmdGb3I9XCJsZXQgcm93cyBvZiB0b29sdGlwQ29udGFpbmluZ1RhYmxlLnRvb2x0aXBUYWJsZUJvZHlcIj5cclxuICAgICAgICAgIDx0ZCAqbmdGb3I9XCJsZXQgZGF0YSBvZiByb3dzXCI+XHJcbiAgICAgICAgICAgIHt7IGRhdGEgfX1cclxuICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgPC90cj5cclxuICAgICAgPC90Ym9keT5cclxuICAgIDwvdGFibGU+XHJcblxyXG4gICAgPHVsPlxyXG4gICAgICA8bGkgc3R5bGU9XCJtYXJnaW4tdG9wOjEwcHg7IHBhZGRpbmc6MFwiICpuZ0Zvcj1cImxldCBmb290ZXJNc2cgb2YgdG9vbHRpcENvbnRhaW5pbmdUYWJsZS50YWJsZUZvb3Rlck1zZ1wiPlxyXG4gICAgICAgIHt7IGZvb3Rlck1zZyB9fSBcclxuICAgICAgPC9saT5cclxuICAgIDwvdWw+XHJcblxyXG4gIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG48bmctdGVtcGxhdGUgI3RleHRBY3Rpb25Ub29sdGlwVGVtcGxhdGU+XHJcbiAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGRhdGEgb2YgdGV4dEFjdGlvblRvb2x0aXBcIj5cclxuICAgICAge3sgZGF0YS5rZXkgfX0gPGI+IHt7ZGF0YS52YWx1ZX19PC9iPlxyXG4gICA8L25nLWNvbnRhaW5lcj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuIl19