ngx-histaff-alpha 2.3.4 → 2.3.6

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.
Files changed (23) hide show
  1. package/esm2022/lib/app/app-pipes/map-attachment-to-server.pipe.mjs +25 -0
  2. package/esm2022/lib/app/app-pipes/uploaded-filename-cutoff.pipe.mjs +22 -0
  3. package/esm2022/lib/app/libraries/core-attachment/core-attachment/core-attachment.component.mjs +59 -24
  4. package/esm2022/lib/app/libraries/core-control/core-control/core-control.component.mjs +1 -1
  5. package/esm2022/lib/app/libraries/core-seen-by/core-seen-by.component.mjs +32 -0
  6. package/esm2022/lib/app/libraries/core-table/EnumCoreTablePipeType.mjs +2 -1
  7. package/esm2022/lib/app/libraries/core-table/core-table.component.mjs +4 -2
  8. package/esm2022/lib/app/libraries/pipes/table-cell.pipe.mjs +9 -1
  9. package/esm2022/lib/app/services/app-config.service.mjs +2 -1
  10. package/esm2022/lib/app/services/app-initialization.service.mjs +4 -3
  11. package/esm2022/lib/app/services/uploaded-file.service.mjs +24 -0
  12. package/esm2022/public-api.mjs +5 -1
  13. package/fesm2022/ngx-histaff-alpha.mjs +159 -25
  14. package/fesm2022/ngx-histaff-alpha.mjs.map +1 -1
  15. package/lib/app/app-pipes/map-attachment-to-server.pipe.d.ts +10 -0
  16. package/lib/app/app-pipes/uploaded-filename-cutoff.pipe.d.ts +7 -0
  17. package/lib/app/libraries/core-attachment/core-attachment/core-attachment.component.d.ts +15 -5
  18. package/lib/app/libraries/core-seen-by/core-seen-by.component.d.ts +14 -0
  19. package/lib/app/libraries/core-table/EnumCoreTablePipeType.d.ts +2 -1
  20. package/lib/app/services/app-config.service.d.ts +1 -0
  21. package/lib/app/services/uploaded-file.service.d.ts +7 -0
  22. package/package.json +1 -1
  23. package/public-api.d.ts +4 -0
@@ -102,7 +102,9 @@ export class CoreTableComponent extends CoreFormControlBaseComponent {
102
102
  if (isDevMode() && this.authService.data$.value?.id === '8c24683d-7d52-4f5a-8090-31c777e8869d') {
103
103
  this.alertService.error(error.message, noneAutoClosedAlertOptions);
104
104
  }
105
- this.visibleData = JSON.parse(JSON.stringify(this.data));
105
+ if (!!this.data) {
106
+ this.visibleData = JSON.parse(JSON.stringify(this.data));
107
+ }
106
108
  }
107
109
  }
108
110
  startDragging(e, col, flag) {
@@ -493,4 +495,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImpor
493
495
  type: ViewChild,
494
496
  args: ['firstHeaderRow']
495
497
  }] } });
496
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS10YWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtaGlzdGFmZi1hbHBoYS9zcmMvbGliL2FwcC9saWJyYXJpZXMvY29yZS10YWJsZS9jb3JlLXRhYmxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1oaXN0YWZmLWFscGhhL3NyYy9saWIvYXBwL2xpYnJhcmllcy9jb3JlLXRhYmxlL2NvcmUtdGFibGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBYyxLQUFLLEVBQStDLFNBQVMsRUFBaUIsTUFBTSxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckssT0FBTyxFQUFFLFdBQVcsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBMENoRSxPQUFPLEVBQWdCLGVBQWUsRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFjLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUVsRyxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSw0REFBNEQsQ0FBQztBQVMxRyxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUUxRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sb0VBQW9FLENBQUM7QUFDOUcsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDdEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDaEUsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sNkVBQTZFLENBQUM7QUFDMUgsT0FB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QUs7Z0JBQ0csMEJBQTBCO3NCQUFsQyxLQUFLO2dCQUNHLHVCQUF1QjtzQkFBL0IsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLG9CQUFvQjtzQkFBNUIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csdUJBQXVCO3NCQUEvQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBRUcsYUFBYTtzQkFBckIsS0FBSztnQkFFSSxXQUFXO3NCQUFwQixNQUFNO2dCQUNHLFdBQVc7c0JBQXBCLE1BQU07Z0JBQ0csVUFBVTtzQkFBbkIsTUFBTTtnQkFDRyxnQkFBZ0I7c0JBQXpCLE1BQU07Z0JBQ0csbUJBQW1CO3NCQUE1QixNQUFNO2dCQUNHLG9CQUFvQjtzQkFBN0IsTUFBTTtnQkFDRyxvQkFBb0I7c0JBQTdCLE1BQU07Z0JBc0NpQixTQUFTO3NCQUFoQyxTQUFTO3VCQUFDLFdBQVc7Z0JBQ0YsS0FBSztzQkFBeEIsU0FBUzt1QkFBQyxPQUFPO2dCQUNXLGNBQWM7c0JBQTFDLFNBQVM7dUJBQUMsZ0JBQWdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBJbnB1dCwgT25Jbml0LCBPbkRlc3Ryb3ksIEFmdGVyVmlld0luaXQsIE9uQ2hhbmdlcywgVmlld0NoaWxkLCBTaW1wbGVDaGFuZ2VzLCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgaXNEZXZNb2RlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1zTW9kdWxlLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuXHJcbmV4cG9ydCBlbnVtIEVDb3JlVGFibGVUb29sQ29kZSB7XHJcbiAgZWRpdCA9ICdlZGl0JyxcclxuICBkZWxldGUgPSAnZGVsZXRlJyxcclxuICBjb21wbGV0ZSA9ICdjb21wbGV0ZScsXHJcbiAgbmF2aWdhdGUgPSAnbmF2aWdhdGUnLFxyXG59XHJcblxyXG5leHBvcnQgZW51bSBFQ29yZVRhYmxlVG9vbENsYXNzIHtcclxuICBlZGl0ID0gJ2VkaXQtaWNvbicsXHJcbiAgZGVsZXRlID0gJ2RlbGV0ZS1pY29uJyxcclxuICByZXBlYXQgPSAncmVwZWF0LWljb24nLFxyXG4gIG5hdmlnYXRlID0gJ25hdmlnYXRlLWljb24nXHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUNvcmVUYWJsZVRvb2xJdGVtIHtcclxuICBjb2RlOiBFQ29yZVRhYmxlVG9vbENvZGU7XHJcbiAgY2xhc3M6IEVDb3JlVGFibGVUb29sQ2xhc3M7XHJcbiAgY2FwdGlvbj86IEVudW1UcmFuc2xhdGVLZXkgfCBzdHJpbmc7IC8vIExhdGVyIHdlIHdpbGwgcmVtb3ZlIFwifCBzdHJpbmdcIlxyXG5cclxuICAvKiBjYWxsYmFja3MgdG8gY2FsY3VsYXRlIGRpc2FibGVkIGFuZCBoaWRlbiBiYXNlZCBvbiByb3cqL1xyXG4gIGRpc2FibGVkRm4/OiAocm93OiBhbnkpID0+IGJvb2xlYW47XHJcbiAgaGlkZGVuRm4/OiAocm93OiBhbnkpID0+IGJvb2xlYW47XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUNvcmVUYWJsZVRvb2xDbGlja0V2ZW50RW1pdHRlckRhdGEge1xyXG4gIGNvZGU6IEVDb3JlVGFibGVUb29sQ29kZTtcclxuICBpZDogc3RyaW5nIHwgbnVtYmVyO1xyXG59XHJcblxyXG4vKlxyXG5leHBvcnQgaW50ZXJmYWNlIElDb3JlVGFibGVSb3dEb3VibGVDbGlja0V2ZW50RW1pdHRlckRhdGEge1xyXG4gIGlkOiBzdHJpbmcgfCBudW1iZXI7XHJcbn1cclxuKi9cclxuXHJcbmludGVyZmFjZSBJRG91YmxlVG91Y2hlbmREYXRhIHtcclxuICBwcmV2aW91czogbnVtYmVyO1xyXG4gIGN1cnJlbnQ6IG51bWJlcjtcclxufVxyXG5cclxuaW1wb3J0IHsgU3Vic2NyaXB0aW9uLCBCZWhhdmlvclN1YmplY3QsIGZpbHRlciwgZGVib3VuY2VUaW1lLCBPYnNlcnZhYmxlLCBmcm9tRXZlbnQgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgQ29yZVBhZ2VMaXN0U2VydmljZSB9IGZyb20gJy4uL2NvcmUtcGFnZS1saXN0L2NvcmUtcGFnZS1saXN0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDb3JlRm9ybUNvbnRyb2xCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi4vY29yZS1mb3JtLWNvbnRyb2wtYmFzZS9jb3JlLWZvcm0tY29udHJvbC1iYXNlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IElDb3JlQnV0dG9uVk5TIH0gZnJvbSAnLi4vY29yZS1idXR0b24tZ3JvdXAtdm5zL2NvcmUtYnV0dG9uLWdyb3VwLXZucy9JQ29yZUJ1dHRvblZOUyc7XHJcbmltcG9ydCB7IEVudW1Db3JlQnV0dG9uVk5TQ29kZSB9IGZyb20gJy4uL2NvcmUtYnV0dG9uLWdyb3VwLXZucy9jb3JlLWJ1dHRvbi1ncm91cC12bnMvRW51bUNvcmVCdXR0b25WTlNDb2RlJztcclxuaW1wb3J0IHsgRW51bVRyYW5zbGF0ZUtleSB9IGZyb20gXCJhbHBoYS1nbG9iYWwtY29uc3RhbnRzXCI7XHJcbmltcG9ydCB7IElTZWFyY2hJdGVtIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9JUXVlcnlMaXN0UmVxdWVzdCc7XHJcbmltcG9ydCB7IExheW91dFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9sYXlvdXQuc2VydmljZSc7XHJcbmltcG9ydCB7IE11bHRpTGFuZ3VhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvbXVsdGktbGFuZ3VhZ2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IEFsZXJ0U2VydmljZSB9IGZyb20gJy4uL2FsZXJ0L2FsZXJ0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2F1dGguc2VydmljZSc7XHJcbmltcG9ydCB7IG5vbmVBdXRvQ2xvc2VkQWxlcnRPcHRpb25zIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzL2FsZXJ0T3B0aW9ucyc7XHJcbmltcG9ydCB7IElDb3JlVGFibGVDb2x1bW5JdGVtIH0gZnJvbSAnLi9JQ29yZVRhYmxlQ29sdW1uSXRlbSc7XHJcbmltcG9ydCB7IEVudW1Tb3J0RGlyZWN0aW9uIH0gZnJvbSAnLi4vLi4vZW51bS9FbnVtU29ydERpcmVjdGlvbic7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IENvcmVCdXR0b25Hcm91cENvbXBvbmVudCB9IGZyb20gJy4uL2NvcmUtYnV0dG9uLWdyb3VwL2NvcmUtYnV0dG9uLWdyb3VwL2NvcmUtYnV0dG9uLWdyb3VwLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFRocmVlZG90c0NvbXBvbmVudCB9IGZyb20gJy4uL3RocmVlZG90cy90aHJlZWRvdHMuY29tcG9uZW50JztcclxuaW1wb3J0IHsgVG9vbHRpcERpcmVjdGl2ZSB9IGZyb20gJy4uL3Rvb2x0aXAvdG9vbHRpcC5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBDb3JlTG9hZGluZ1N1cmZhY2VDb21wb25lbnQgfSBmcm9tICcuLi9jb3JlLWxvYWRpbmctc3VyZmFjZS9jb3JlLWxvYWRpbmctc3VyZmFjZS9jb3JlLWxvYWRpbmctc3VyZmFjZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDb3JlQnV0dG9uR3JvdXBWbnNDb21wb25lbnQgfSBmcm9tICcuLi9jb3JlLWJ1dHRvbi1ncm91cC12bnMvY29yZS1idXR0b24tZ3JvdXAtdm5zL2NvcmUtYnV0dG9uLWdyb3VwLXZucy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBUYWJsZUNlbGxQaXBlIH0gZnJvbSAnLi4vcGlwZXMvdGFibGUtY2VsbC5waXBlJztcclxuaW1wb3J0IHsgVHJhbnNsYXRlUGlwZSB9IGZyb20gJy4uLy4uL2FwcC1waXBlcy90cmFuc2xhdGUucGlwZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2NvcmUtdGFibGUnLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW1xyXG4gICAgQ29tbW9uTW9kdWxlLFxyXG4gICAgRm9ybXNNb2R1bGUsXHJcbiAgICBDb3JlQnV0dG9uR3JvdXBDb21wb25lbnQsXHJcbiAgICBUaHJlZWRvdHNDb21wb25lbnQsXHJcbiAgICBUb29sdGlwRGlyZWN0aXZlLFxyXG4gICAgVGFibGVDZWxsUGlwZSxcclxuICAgIFRyYW5zbGF0ZVBpcGUsXHJcbiAgICBDb3JlTG9hZGluZ1N1cmZhY2VDb21wb25lbnQsXHJcbiAgICBDb3JlQnV0dG9uR3JvdXBWbnNDb21wb25lbnQsXHJcbiAgXSxcclxuICB0ZW1wbGF0ZVVybDogJy4vY29yZS10YWJsZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vY29yZS10YWJsZS5jb21wb25lbnQuc2NzcyddLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcclxuICAgICAgbXVsdGk6IHRydWUsXHJcbiAgICAgIHVzZUV4aXN0aW5nOiBDb3JlVGFibGVDb21wb25lbnRcclxuICAgIH1cclxuICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDb3JlVGFibGVDb21wb25lbnQgZXh0ZW5kcyBDb3JlRm9ybUNvbnRyb2xCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XHJcblxyXG4gIC8qXHJcbiAgVGhpcyBjb21wb25lbnQgZGlzcGxheXMgaW5wdXQgZGF0YSB3aXRob3V0IHBhZ2luYXRpb24uXHJcbiAgRm9yIHBhZ2luYXRpbmcgcGxlYXNlIG9yZ2FuaXplIGZyb20gcGFyZW50c1xyXG4gICovXHJcblxyXG4gIEBJbnB1dCgpIGlkITogc3RyaW5nOyAvLyBmb3IgaHRtbCBpZCBpZGVudGlmeWluZ1xyXG4gIEBJbnB1dCgpIHdpZHRoITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIGhlaWdodCE6IG51bWJlcjtcclxuICBASW5wdXQoKSBzaG93Q2hlY2tib3ghOiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIGNoZWNrYm94U2l6ZSE6IG51bWJlcjtcclxuICBASW5wdXQoKSBvdXRlckJ1dHRvbnMhOiBJQ29yZUJ1dHRvblZOU1tdO1xyXG4gIEBJbnB1dCgpIHNob3dUb29scyE6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgdG9vbHMhOiBJQ29yZVRhYmxlVG9vbEl0ZW1bXTtcclxuICBASW5wdXQoKSBjaGVja2luZ1Jlc2V0RmxhZyE6IGJvb2xlYW47XHJcblxyXG4gIC8qIGNoYW5nZSB0aGVzZSAyIHByb3BzIHRvIHdyYXAgaGVhZGVyIHRleHRzICovXHJcbiAgQElucHV0KCkgaGVhZGVyV3JhcCE6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgaGVhZGVyRmlyc3RSb3dIZWlnaHQhOiBudW1iZXI7XHJcbiAgLyoqICovXHJcbiAgXHJcbiAgQElucHV0KCkgaGVhZGVyU2Vjb25kUm93SGVpZ2h0ITogbnVtYmVyO1xyXG4gIEBJbnB1dCgpIHdyYXAhOiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIGFsbG93Q2VsbFNjcm9sbFkhOiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIGxvYWRpbmchOiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIHJvd0hlaWdodCE6IHN0cmluZzsgLy8gVkVSWSBJTVBPUlRBTlQgUFJPUEVSVFlcclxuICBASW5wdXQoKSBmcm96ZW4hOiBudW1iZXI7XHJcbiAgQElucHV0KCkgZm9vdGVyITogYW55O1xyXG4gIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlIH0pIGNvbHVtbnMhOiBJQ29yZVRhYmxlQ29sdW1uSXRlbVtdOyAvLyByZXF1aXJlZFxyXG4gIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlIH0pIGRhdGEhOiBhbnlbXTsgLy8gcmVxdWlyZWRcclxuICBASW5wdXQoKSBzZWxlY3RlZElkcyE6IHN0cmluZ1tdIHwgbnVtYmVyW107XHJcbiAgQElucHV0KCkgY29yZVBhZ2VMaXN0SW5zdGFuY2VOdW1iZXIhOiBudW1iZXI7XHJcbiAgQElucHV0KCkgZGlzYWJsZUhpZ2hsaWdodE9uQ2xpY2shOiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIGZyZWVNb2RlITogYm9vbGVhbjtcclxuICBASW5wdXQoKSBzZWFyY2hTd2l0Y2hEaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlOyAvLyA/Pz9cclxuICBASW5wdXQoKSBkaXNhYmxlU29ydGluZyE6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgaW5saW5lVG9vbEl0ZW1zITogRW51bUNvcmVCdXR0b25WTlNDb2RlW107XHJcbiAgQElucHV0KCkgY29sdW1uU2VhcmNoRGVmYXVsdE9wZW4hOiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIGxhenlMb2FkaW5nITogYm9vbGVhbjtcclxuXHJcbiAgQElucHV0KCkgbm9QYWRkaW5nQ2VsbCE6IGJvb2xlYW47XHJcblxyXG4gIEBPdXRwdXQoKSBvblNlYXJjaGluZyA9IG5ldyBFdmVudEVtaXR0ZXI8SVNlYXJjaEl0ZW1bXT4oKTtcclxuICBAT3V0cHV0KCkgb25Ub29sQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPElDb3JlVGFibGVUb29sQ2xpY2tFdmVudEVtaXR0ZXJEYXRhPigpO1xyXG4gIEBPdXRwdXQoKSBvblJvd0NsaWNrID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBvblJvd0RvdWJsZUNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBvblNlbGVjdGVkSWRzQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmdbXSB8IG51bWJlcltdPigpO1xyXG4gIEBPdXRwdXQoKSBvblNlbGVjdGVkRGF0YUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55W10+KCk7XHJcbiAgQE91dHB1dCgpIG9uQ29sdW1uQ2FwdGlvbkNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxJQ29yZVRhYmxlQ29sdW1uSXRlbT4oKTtcclxuXHJcbiAgY2hlY2tib3hDb2x1bW5XaWR0aDogbnVtYmVyID0gMzA7IC8vICgtLWNoZWNrYm94LXNpemUpKiAyIFBsZWFzZSBkbyBub3QgY2hhbmdlIHRoaXNcclxuXHJcbiAgc2VhcmNoQWN0aXZlITogYm9vbGVhbjtcclxuICB2aXNpYmxlQ29sdW1ucyE6IElDb3JlVGFibGVDb2x1bW5JdGVtW107XHJcbiAgZnJvemVuTGVmdHM6IG51bWJlcltdID0gW107XHJcbiAgY2hlY2tpbmdNb2RlbDogYm9vbGVhbltdID0gW107XHJcbiAgaGVhZGVyQ2hlY2tib3hTdGF0ZSE6IGJvb2xlYW47XHJcbiAgY2hlY2tpbmdTdGF0ZSE6IG51bWJlcjsgLy8gMD1ub25lOyAxPWFsbDsgMj1taXhlZFxyXG4gIHRib2R5aGVpZ2h0ITogbnVtYmVyO1xyXG4gIHZpc2libGVSb3dDb3VudCE6IG51bWJlcjtcclxuXHJcbiAgcm93VG91Y2hlbmRTdHJlYW0kOiBCZWhhdmlvclN1YmplY3Q8SURvdWJsZVRvdWNoZW5kRGF0YT4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PElEb3VibGVUb3VjaGVuZERhdGE+KHsgcHJldmlvdXM6IC0yLCBjdXJyZW50OiAtMSB9KTtcclxuICBzdWJzY3JpcHRpb25zOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xyXG5cclxuICBzZWFyY2hPYmplY3QhOiBJU2VhcmNoSXRlbVtdO1xyXG5cclxuICBsYW5nITogc3RyaW5nO1xyXG5cclxuICBhY3RpdmVSb3chOiBhbnk7IC8vIG51bWJlciB8IHN0cmluZ1xyXG5cclxuICBtb3VzZURvd24gPSBmYWxzZTtcclxuICBzdGFydFg6IGFueTtcclxuICBlbmRYOiBhbnk7XHJcblxyXG4gIHNjcm9sbFN0cmVhbSQhOiBPYnNlcnZhYmxlPGFueT47XHJcblxyXG4gIC8qIEZPUiBMQVpZIFVJIExPQURJTkcgKi9cclxuICByZW5kZXJBaHJlYWQ6IG51bWJlciA9IDA7XHJcbiAgaGlkZGVuVG9wSGVpZ2h0OiBudW1iZXIgPSAwO1xyXG4gIGhpZGRlbkJvdHRvbUhlaWdodDogbnVtYmVyID0gMDtcclxuICBzY3JvbGxUb3A6IG51bWJlciA9IDA7XHJcbiAgb2Zmc2V0WTogbnVtYmVyID0gMDtcclxuICB2aXNpYmxlRGF0YSE6IGFueVtdO1xyXG4gIHN0YXJ0Tm9kZTogbnVtYmVyID0gMDtcclxuICAvKioqKioqKioqKioqKioqKioqKioqKiovXHJcblxyXG4gIEBWaWV3Q2hpbGQoJ2NvcmVUYWJsZScpIGNvcmVUYWJsZSE6IEVsZW1lbnRSZWY7XHJcbiAgQFZpZXdDaGlsZCgndGFibGUnKSB0YWJsZSE6IEVsZW1lbnRSZWY7XHJcbiAgQFZpZXdDaGlsZCgnZmlyc3RIZWFkZXJSb3cnKSBmaXJzdEhlYWRlclJvdyE6IEVsZW1lbnRSZWY7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBsYXlvdXRTZXJ2aWNlOiBMYXlvdXRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBjb3JlUGFnZUxpc3RTZXJ2aWNlOiBDb3JlUGFnZUxpc3RTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBtbHM6IE11bHRpTGFuZ3VhZ2VTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBhbGVydFNlcnZpY2U6IEFsZXJ0U2VydmljZSxcclxuICAgIHByaXZhdGUgYXV0aFNlcnZpY2U6IEF1dGhTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgICBzdXBlcigpO1xyXG4gIH1cclxuXHJcbiAgY2FsY3VsYXRlU2Nyb2xsKCk6IHZvaWQge1xyXG5cclxuICAgIHRyeSB7XHJcblxyXG4gICAgICBpZiAoISEhdGhpcy5jb3JlVGFibGUpIHJldHVybjtcclxuICAgICAgaWYgKCEhIXRoaXMubGF6eUxvYWRpbmcpIHJldHVybjtcclxuXHJcbiAgICAgIGNvbnN0IGhlaWdodCA9IE51bWJlcihnZXRDb21wdXRlZFN0eWxlKHRoaXMuY29yZVRhYmxlLm5hdGl2ZUVsZW1lbnQpLmdldFByb3BlcnR5VmFsdWUoJy0taGVpZ2h0JykucmVwbGFjZSgncHgnLCAnJykpO1xyXG4gICAgICBjb25zdCByb3dIZWlnaHQgPSBOdW1iZXIoZ2V0Q29tcHV0ZWRTdHlsZSh0aGlzLmNvcmVUYWJsZS5uYXRpdmVFbGVtZW50KS5nZXRQcm9wZXJ0eVZhbHVlKCctLXJvdy1oZWlnaHQnKS5zcGxpdCgncHgnKVswXSk7XHJcblxyXG4gICAgICBpZiAoISEhcm93SGVpZ2h0KSB0aHJvdyBuZXcgRXJyb3IoXCJDb3VsZCBub3QgZ2V0IC0tcm93LWhlaWdodCBwcm9wZXJ0eVwiKTtcclxuXHJcbiAgICAgIGxldCBzdGFydE5vZGUgPSBNYXRoLmZsb29yKHRoaXMuc2Nyb2xsVG9wIC8gcm93SGVpZ2h0KSAtIHRoaXMucmVuZGVyQWhyZWFkO1xyXG4gICAgICBzdGFydE5vZGUgPSBNYXRoLm1heCgwLCBzdGFydE5vZGUpO1xyXG4gICAgICB0aGlzLnN0YXJ0Tm9kZSA9IHN0YXJ0Tm9kZSB8fCAwO1xyXG4gICAgICBsZXQgdmlzaWJsZU5vZGVDb3VudCA9IE1hdGguY2VpbChoZWlnaHQgLyByb3dIZWlnaHQpICsgMiAqIHRoaXMucmVuZGVyQWhyZWFkO1xyXG4gICAgICB2aXNpYmxlTm9kZUNvdW50ID0gTWF0aC5taW4odGhpcy5kYXRhLmxlbmd0aCAtIHN0YXJ0Tm9kZSwgdmlzaWJsZU5vZGVDb3VudCk7XHJcbiAgICAgIHRoaXMub2Zmc2V0WSA9IHN0YXJ0Tm9kZSAqIHJvd0hlaWdodDtcclxuICAgICAgY29uc3QgbmV3VmlzaWJsZURhdGE6IGFueVtdID0gW107XHJcblxyXG4gICAgICB0aGlzLmhpZGRlblRvcEhlaWdodCA9IHN0YXJ0Tm9kZSAqIHJvd0hlaWdodDtcclxuICAgICAgdGhpcy5oaWRkZW5Cb3R0b21IZWlnaHQgPSAodGhpcy5kYXRhLmxlbmd0aCAtIHN0YXJ0Tm9kZSAtIHZpc2libGVOb2RlQ291bnQpICogcm93SGVpZ2h0O1xyXG4gICAgICBmb3IgKGxldCBpID0gc3RhcnROb2RlOyBpIDwgc3RhcnROb2RlICsgdmlzaWJsZU5vZGVDb3VudDsgaSsrKSB7XHJcbiAgICAgICAgbmV3VmlzaWJsZURhdGEucHVzaCh0aGlzLmRhdGFbaV0pXHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMudmlzaWJsZURhdGEgPSBuZXdWaXNpYmxlRGF0YTtcclxuXHJcbiAgICAgIC8qIE9QRU4gQ09NTUVOVFMgVE8gU0VFIENPTlRST0wgVkFMVUVTICovXHJcbiAgICAgIGNvbnNvbGUubG9nKFwic3RhcnROb2RlXCIsIHN0YXJ0Tm9kZSlcclxuICAgICAgLypcclxuICAgICAgY29uc29sZS5sb2coXCJ0aGlzLm9mZnNldFlcIiwgdGhpcy5vZmZzZXRZKVxyXG4gICAgICBjb25zb2xlLmxvZyhcInRoaXMuaGlkZGVuVG9wSGVpZ2h0XCIsIHRoaXMuaGlkZGVuVG9wSGVpZ2h0KVxyXG4gICAgICBjb25zb2xlLmxvZyhcInRoaXMuaGlkZGVuQm90dG9tSGVpZ2h0XCIsIHRoaXMuaGlkZGVuQm90dG9tSGVpZ2h0KVxyXG4gICAgICBjb25zb2xlLmxvZyhcInRoaXMudmlzaWJsZURhdGEubGVuZ3RoXCIsIHRoaXMudmlzaWJsZURhdGEubGVuZ3RoKVxyXG4gICAgICBjb25zdCBjb250cm9sVmFsdWUgPSAodGhpcy5oaWRkZW5Ub3BIZWlnaHQgKyB0aGlzLmhpZGRlbkJvdHRvbUhlaWdodCArIHRoaXMudmlzaWJsZURhdGEubGVuZ3RoICogcm93SGVpZ2h0KSAvIHJvd0hlaWdodFxyXG4gICAgICBjb25zb2xlLmxvZyhcImNvbnRyb2xWYWx1ZVwiLCBjb250cm9sVmFsdWUpIC8vIE11c3QgZXF1ZWFsIHBhZ2VTaXplXHJcbiAgICAgICovXHJcbiAgICB9IGNhdGNoIChlcnJvcjogYW55KSB7XHJcbiAgICAgIGlmIChpc0Rldk1vZGUoKSAmJiB0aGlzLmF1dGhTZXJ2aWNlLmRhdGEkLnZhbHVlPy5pZCA9PT0gJzhjMjQ2ODNkLTdkNTItNGY1YS04MDkwLTMxYzc3N2U4ODY5ZCcpIHtcclxuICAgICAgICB0aGlzLmFsZXJ0U2VydmljZS5lcnJvcihlcnJvci5tZXNzYWdlLCBub25lQXV0b0Nsb3NlZEFsZXJ0T3B0aW9ucyk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMudmlzaWJsZURhdGEgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHRoaXMuZGF0YSkpO1xyXG5cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHN0YXJ0RHJhZ2dpbmcoZTogYW55LCBjb2w6IElDb3JlVGFibGVDb2x1bW5JdGVtLCBmbGFnOiBhbnkpIHtcclxuICAgIGlmIChlLmJ1dHRvbnMgPT09IDEpIHtcclxuICAgICAgdGhpcy5zdGFydFggPSBlLnBhZ2VYO1xyXG4gICAgICBpZiAoISEhdGhpcy5tb3VzZURvd24pIHtcclxuXHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5tb3VzZURvd24gPSB0cnVlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc3RvcERyYWdnaW5nKGU6IGFueSwgY29sOiBJQ29yZVRhYmxlQ29sdW1uSXRlbSwgZmxhZzogYW55KSB7XHJcbiAgICBpZiAoISF0aGlzLm1vdXNlRG93bikge1xyXG4gICAgICB0aGlzLmVuZFggPSBlLnBhZ2VYO1xyXG4gICAgICBsZXQgb2Zmc2V0ID0gdGhpcy5lbmRYIC0gdGhpcy5zdGFydFg7XHJcbiAgICAgIGNvbC53aWR0aCEgKz0gb2Zmc2V0O1xyXG4gICAgICB0aGlzLm1vdXNlRG93biA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmVuZFggPSAwO1xyXG4gICAgICB0aGlzLnN0YXJ0WCA9IDA7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBtb3ZlRXZlbnQoZTogYW55LCBjb2w6IElDb3JlVGFibGVDb2x1bW5JdGVtKSB7XHJcbiAgICBlLnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICBpZiAoIXRoaXMubW91c2VEb3duKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IHggPSBlLnBhZ2VYO1xyXG4gICAgY29uc29sZS5sb2coXCJtb3ZlRXZlbnRcIiwgZS5wYWdlWClcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG5cclxuICAgIGlmICh0aGlzLnNob3dDaGVja2JveCkge1xyXG4gICAgICBpZiAoIXRoaXMuY2hlY2tib3hTaXplKSB7XHJcbiAgICAgICAgdGhpcy5jaGVja2JveFNpemUgPSAxNTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmhlYWRlckZpcnN0Um93SGVpZ2h0ID09PSB1bmRlZmluZWQpIHRoaXMuaGVhZGVyRmlyc3RSb3dIZWlnaHQgPSA0MDtcclxuICAgIGlmICh0aGlzLmhlYWRlclNlY29uZFJvd0hlaWdodCA9PT0gdW5kZWZpbmVkKSB0aGlzLmhlYWRlclNlY29uZFJvd0hlaWdodCA9IDQwO1xyXG5cclxuXHJcbiAgICAvKiBWYWxpZGF0ZSBjb2x1bW5zIGlucHV0IHRvIG1ha2Ugc3VyZSBvbmUgb2YgZmllbGRzIGlzICdpZCcgKi9cclxuICAgIGlmICghISF0aGlzLmNvbHVtbnMpIHtcclxuICAgICAgdGhpcy5hbGVydFNlcnZpY2UuZXJyb3IodGhpcy5pZCArIFwiOiBDb2x1bW5zIGFyZSBub3QgZGVmaW5lZC5cIiwgbm9uZUF1dG9DbG9zZWRBbGVydE9wdGlvbnMpXHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuY29sdW1ucz8uZmlsdGVyKChjOiBJQ29yZVRhYmxlQ29sdW1uSXRlbSkgPT4gYy5maWVsZCA9PT0gJ2lkJykubGVuZ3RoID09PSAwICYmIGlzRGV2TW9kZSgpICYmIHRoaXMuY29sdW1ucy5sZW5ndGgpIHtcclxuICAgICAgdGhpcy5hbGVydFNlcnZpY2UuZXJyb3IodGhpcy5pZCArIFwiOiBUaGUgY29sdW1ucyBtdXN0IGhhdmUgb25lIHdpdGggJ2ZpZWxkJyBwcm9wZXJ0eSA9PT0gJ2lkJ1wiLCBub25lQXV0b0Nsb3NlZEFsZXJ0T3B0aW9ucylcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnZpc2libGVDb2x1bW5zID0gdGhpcy5jb2x1bW5zPy5maWx0ZXIoKGM6IElDb3JlVGFibGVDb2x1bW5JdGVtKSA9PiAhISFjLmhpZGRlbilcclxuICAgIGlmICghISF0aGlzLnZpc2libGVDb2x1bW5zPy5sZW5ndGggJiYgaXNEZXZNb2RlKCkgJiYgdGhpcy5jb2x1bW5zPy5sZW5ndGgpIHtcclxuICAgICAgdGhpcy5hbGVydFNlcnZpY2UuZXJyb3IodGhpcy5pZCArIFwiOiBObyB2aXNpYmxlIGNvbHVtbiBkZWZpbmVkLlwiLCBub25lQXV0b0Nsb3NlZEFsZXJ0T3B0aW9ucylcclxuICAgIH1cclxuXHJcbiAgICAvLyBhZGQgZGVmYXVsdCBzb3J0IGRpcmVjdGlvbiB0byB2aXNpYmxlQ29sdW1uc1xyXG4gICAgdGhpcy52aXNpYmxlQ29sdW1ucz8ubWFwKGMgPT4gYy5zb3J0RGlyZWN0aW9uID0gRW51bVNvcnREaXJlY3Rpb24uTk9ORSlcclxuXHJcbiAgICAvKiBTVEFSVDogSW5pdGlhbGl6aW5nIHNlYXJjaE9iamVjdCAqL1xyXG4gICAgY29uc3QgbmV3U2VhcmNoT2JqZWN0OiBJU2VhcmNoSXRlbVtdID0gW107XHJcbiAgICB0aGlzLnZpc2libGVDb2x1bW5zPy5tYXAoYyA9PiB7XHJcbiAgICAgIG5ld1NlYXJjaE9iamVjdC5wdXNoKHtcclxuICAgICAgICBmaWVsZDogYy5maWVsZCxcclxuICAgICAgICBzZWFyY2hGb3I6ICcnXHJcbiAgICAgIH0pXHJcbiAgICB9KVxyXG4gICAgdGhpcy5zZWFyY2hPYmplY3QgPSBuZXdTZWFyY2hPYmplY3Q7XHJcbiAgICAvKiBFTkQ6IEluaXRpYWxpemluZyBzZWFyY2hPYmplY3QgKi9cclxuXHJcbiAgICBjb25zdCBmcm96ZW5Db2x1bW5zID0gdGhpcy52aXNpYmxlQ29sdW1ucz8uZmlsdGVyKChfLCBpbmRleCkgPT4gaW5kZXggPCB0aGlzLmZyb3plbik7XHJcblxyXG4gICAgbGV0IGxlZnQgPSB0aGlzLmNoZWNrYm94U2l6ZSEgKiAyIHx8IDA7IC8vIHRoZSBmaXJzdCBzaXplIGlzIGZvciBjaGVja2JveFxyXG4gICAgZnJvemVuQ29sdW1ucz8ubWFwKGMgPT4ge1xyXG4gICAgICBpZiAoISEhYy53aWR0aCkgY29uc29sZS5lcnJvcih0aGlzLmlkICsgXCI6IEVhY2ggZnJvemVuIGNvbHVtbiBtdXN0IGhhdmUgaXRzIG51bWJlciBwcm9wZXJ0eSAnd2lkdGgnLlwiKTtcclxuICAgICAgdGhpcy5mcm96ZW5MZWZ0cy5wdXNoKGxlZnQpO1xyXG4gICAgICBsZWZ0ID0gbGVmdCArIGMud2lkdGghXHJcbiAgICB9KVxyXG5cclxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG4gICAgICB0aGlzLnJvd1RvdWNoZW5kU3RyZWFtJC5waXBlKFxyXG4gICAgICAgIGZpbHRlcigoeDogYW55KSA9PiB4LmN1cnJlbnQgPT09IHgucHJldmlvdXMpLFxyXG4gICAgICAgIGRlYm91bmNlVGltZSgyMDApLFxyXG4gICAgICApLnN1YnNjcmliZSgoeTogYW55KSA9PiB7XHJcbiAgICAgICAgdGhpcy5vblJvd0RvdWJsZUNsaWNrLmVtaXQoe1xyXG4gICAgICAgICAgaWQ6IHRoaXMuZGF0YVt5LmN1cnJlbnRdLmlkXHJcbiAgICAgICAgfSlcclxuICAgICAgfSlcclxuICAgIClcclxuXHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuICAgICAgdGhpcy5tbHMubGFuZyQuc3Vic2NyaWJlKHggPT4gdGhpcy5sYW5nID0geClcclxuICAgIClcclxuXHJcbiAgICAvKiBDaGVjayBpZiBhbnkgb2YgY29sdW1ucyBpcyB0ZW1wbGF0ZVJlZiAqL1xyXG4gICAgY29uc3QgdGVtcGxhdGVSZWZGaWx0ZXIgPSB0aGlzLmNvbHVtbnM/LmZpbHRlcih4ID0+ICEheC50ZW1wbGF0ZVJlZilcclxuICAgIGlmICghIXRlbXBsYXRlUmVmRmlsdGVyPy5sZW5ndGgpIHtcclxuICAgICAgdGVtcGxhdGVSZWZGaWx0ZXIubWFwKHggPT4ge1xyXG4gICAgICAgIGlmICh4LnRlbXBsYXRlUmVmPy5lbGVtZW50UmVmPy5uYXRpdmVFbGVtZW50Py5oZWlnaHQgPiBOdW1iZXIodGhpcy5yb3dIZWlnaHQucmVwbGFjZSgncHgnLCAnJykpKSB7XHJcbiAgICAgICAgICB0aGlzLmFsZXJ0U2VydmljZS5lcnJvcihgQ2hp4buBdSBjYW8gY+G7p2EgJHt0aGlzLm1scy50cmFucyh4LmNhcHRpb24pfSB0ZW1wbGF0ZVJlZiBsw6AgJHt4LnRlbXBsYXRlUmVmPy5lbGVtZW50UmVmPy5uYXRpdmVFbGVtZW50Py5oZWlnaHR9LCBs4bubbiBoxqFuIGNoaeG7gXUgY2FvIGPhu6dhIGTDsm5nIGzGsOG7m2kgJHt0aGlzLnJvd0hlaWdodH1gLCBub25lQXV0b0Nsb3NlZEFsZXJ0T3B0aW9ucylcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG5cclxuICAgIGlmIChjaGFuZ2VzWydjaGVja2luZ1Jlc2V0RmxhZyddKSB7XHJcbiAgICAgIGlmICghIXRoaXMuZGF0YSkge1xyXG4gICAgICAgIHRoaXMudG9nZ2xlQ2hlY2tBbGwoZmFsc2UpXHJcbiAgICAgICAgdGhpcy5oZWFkZXJDaGVja2JveFN0YXRlID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpZiAoY2hhbmdlc1snZGF0YSddKSB7XHJcblxyXG4gICAgICAvLyBDaGVjayB1bmlxdWUgb2YgXCJpZFwiXHJcbiAgICAgIGlmIChpc0Rldk1vZGUoKSkge1xyXG4gICAgICAgIGlmIChjaGFuZ2VzWydkYXRhJ10uY3VycmVudFZhbHVlPy5sZW5ndGgpIHtcclxuICAgICAgICAgIGNvbnN0IGFyciA9IGNoYW5nZXNbJ2RhdGEnXS5jdXJyZW50VmFsdWVcclxuICAgICAgICAgIGxldCBmaW5kRHVwbGljYXRlcyA9IGFyciA9PiBhcnIuZmlsdGVyKGl0ZW0gPT4gYXJyLmZpbHRlcih4ID0+IHguaWQgPT09IGl0ZW0uaWQpLmxlbmd0aCA+IDEpXHJcbiAgICAgICAgICBpZiAoISFmaW5kRHVwbGljYXRlcyhhcnIpLmxlbmd0aCkge1xyXG4gICAgICAgICAgICB0aGlzLmFsZXJ0U2VydmljZS5lcnJvcihcIkNvcmVUYWJsZSByZXF1aXJlcyB1bmlxdWUgaWQgdmFsdWVzIVwiLCBub25lQXV0b0Nsb3NlZEFsZXJ0T3B0aW9ucylcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGNvbnN0IG5ld0NoZWNraW5nTW9kZWw6IGJvb2xlYW5bXSA9IFtdO1xyXG4gICAgICBjaGFuZ2VzWydkYXRhJ10uY3VycmVudFZhbHVlPy5tYXAoKF86IGFueSkgPT4ge1xyXG4gICAgICAgIG5ld0NoZWNraW5nTW9kZWwucHVzaChmYWxzZSlcclxuICAgICAgfSk7XHJcbiAgICAgIHRoaXMuY2hlY2tpbmdNb2RlbCA9IG5ld0NoZWNraW5nTW9kZWw7XHJcblxyXG4gICAgICBpZiAoISF0aGlzLmxhenlMb2FkaW5nKSB7XHJcbiAgICAgICAgaWYgKCEhdGhpcy5jb3JlVGFibGUpIHtcclxuICAgICAgICAgIHRoaXMuY2FsY3VsYXRlU2Nyb2xsKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMudmlzaWJsZURhdGEgPSBjaGFuZ2VzWydkYXRhJ10uY3VycmVudFZhbHVlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGNoYW5nZXNbJ2NoZWNrZWRJZHMnXSkge1xyXG4gICAgICBjb25zdCBuZXdDaGVja2luZ01vZGVsOiBib29sZWFuW10gPSBbXTtcclxuICAgICAgY2hhbmdlc1snY2hlY2tlZElkcyddLmN1cnJlbnRWYWx1ZT8ubWFwKChjaGVja2VkSWQ6IGFueSkgPT4ge1xyXG4gICAgICAgIHRoaXMuZGF0YS5tYXAoKGl0ZW0pID0+IHtcclxuICAgICAgICAgIGlmIChpdGVtWydpZCddID09PSBjaGVja2VkSWQpIHtcclxuICAgICAgICAgICAgbmV3Q2hlY2tpbmdNb2RlbC5wdXNoKHRydWUpO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgbmV3Q2hlY2tpbmdNb2RlbC5wdXNoKGZhbHNlKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgICB9KVxyXG4gICAgICB0aGlzLmNoZWNraW5nTW9kZWwgPSBuZXdDaGVja2luZ01vZGVsO1xyXG4gICAgfVxyXG4gICAgLy8gaWYgKGNoYW5nZXNbJ2xvYWRpbmcnXSkge1xyXG4gICAgLy8gICB0aGlzLmxvYWRpbmcgPSBjaGFuZ2VzWydsb2FkaW5nJ10uY3VycmVudFZhbHVlO1xyXG4gICAgLy8gfVxyXG4gICAgaWYgKGNoYW5nZXNbJ2NvbHVtbnMnXSkge1xyXG4gICAgICB0aGlzLnZpc2libGVDb2x1bW5zID0gdGhpcy5jb2x1bW5zPy5maWx0ZXIoKGM6IElDb3JlVGFibGVDb2x1bW5JdGVtKSA9PiAhISFjLmhpZGRlbikgfHwgW11cclxuICAgIH1cclxuICAgIGlmIChjaGFuZ2VzWydjb2x1bW5TZWFyY2hEZWZhdWx0T3BlbiddKSB7XHJcbiAgICAgIHRoaXMuc2VhcmNoQWN0aXZlID0gISFjaGFuZ2VzWydjb2x1bW5TZWFyY2hEZWZhdWx0T3BlbiddLmN1cnJlbnRWYWx1ZVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSByZXNldEhlYWRlckZpcnN0Um93SGVpZ2h0KCk6IHZvaWQge1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIGNvbnN0IGZpcnN0SGVhZGVyUm93SGVpZ2h0ID0gdGhpcy5maXJzdEhlYWRlclJvdy5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodDtcclxuICAgICAgdGhpcy5jb3JlVGFibGUubmF0aXZlRWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1oZWFkZXItMXN0LXJvdy1oZWlnaHQnLFxyXG4gICAgICBmaXJzdEhlYWRlclJvd0hlaWdodCArICdweCdcclxuICAgICAgKTtcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcblxyXG4gICAgaWYgKHRoaXMuY29yZVBhZ2VMaXN0SW5zdGFuY2VOdW1iZXIpIHtcclxuICAgICAgY29uc3QgY2FsbGVyRmlsdGVyID0gdGhpcy5jb3JlUGFnZUxpc3RTZXJ2aWNlLmluc3RhbmNlcy5maWx0ZXIoeCA9PiB4Lmluc3RhbmNlTnVtYmVyID09PSB0aGlzLmNvcmVQYWdlTGlzdEluc3RhbmNlTnVtYmVyKTtcclxuICAgICAgaWYgKCEhY2FsbGVyRmlsdGVyLmxlbmd0aCkge1xyXG4gICAgICAgIGNvbnN0IGNhbGxlciA9IGNhbGxlckZpbHRlclswXTtcclxuICAgICAgICBjYWxsZXIuY29yZVRhYmxlUmVmID0gdGhpcy5jb3JlVGFibGU7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmICghISF0aGlzLmZyZWVNb2RlKSB7XHJcbiAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcbiAgICAgICAgICB0aGlzLmNvcmVQYWdlTGlzdFNlcnZpY2UuaW5zdGFuY2VzLmZpbHRlcih4ID0+IHguaW5zdGFuY2VOdW1iZXIgPT09IHRoaXMuY29yZVBhZ2VMaXN0SW5zdGFuY2VOdW1iZXIpWzBdLmlkJC5zdWJzY3JpYmUoeCA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuYWN0aXZlUm93ID0geDtcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgKVxyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuICAgICAgICB0aGlzLmNvcmVQYWdlTGlzdFNlcnZpY2UuaW5zdGFuY2VzLmZpbHRlcih4ID0+IHguaW5zdGFuY2VOdW1iZXIgPT09IHRoaXMuY29yZVBhZ2VMaXN0SW5zdGFuY2VOdW1iZXIpWzBdLnRib2R5SGVpZ2h0JC5zdWJzY3JpYmUoeCA9PiB7XHJcbiAgICAgICAgICBpZiAoISF4KSB7XHJcbiAgICAgICAgICAgIHRoaXMudGJvZHloZWlnaHQgPSB4O1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICAgIClcclxuXHJcbiAgICAgIGNvbnN0IHJlY3QgPSB0aGlzLmNvcmVUYWJsZS5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xyXG4gICAgICB0aGlzLmNvcmVUYWJsZS5uYXRpdmVFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KCctLXRhYmxlLXdpZHRoJywgcmVjdC53aWR0aCArICdweCcpXHJcblxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuc2Nyb2xsU3RyZWFtJCA9IGZyb21FdmVudCh0aGlzLnRhYmxlLm5hdGl2ZUVsZW1lbnQsICdzY3JvbGwnKTtcclxuXHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuXHJcbiAgICAgIGlmICghIXRoaXMud2lkdGgpIHRoaXMuY29yZVRhYmxlLm5hdGl2ZUVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoJy0td2lkdGgnLCB0aGlzLndpZHRoICsgJ3B4Jyk7XHJcbiAgICAgIGlmICghIXRoaXMucm93SGVpZ2h0KSB0aGlzLmNvcmVUYWJsZS5uYXRpdmVFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KCctLXJvdy1oZWlnaHQnLCB0aGlzLnJvd0hlaWdodCArICdweCcpO1xyXG4gICAgICBpZiAoISF0aGlzLmhlaWdodCkgdGhpcy5jb3JlVGFibGUubmF0aXZlRWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1oZWlnaHQnLCB0aGlzLmhlaWdodCArICdweCcpO1xyXG5cclxuICAgICAgLy8gQ2jhu4kgc3Vic2NyaWRlIHNhdSBraGkgY8OhYyBs4buHbmggdHLDqm4gxJHDoyDEkcaw4bujYyB0aOG7sWMgaGnhu4duXHJcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG4gICAgICAgIHRoaXMuc2Nyb2xsU3RyZWFtJFxyXG4gICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgIGRlYm91bmNlVGltZSg1MClcclxuICAgICAgICAgIClcclxuICAgICAgICAgIC5zdWJzY3JpYmUoZXZlbnQgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnNjcm9sbFRvcCA9IGV2ZW50LnNyY0VsZW1lbnQuc2Nyb2xsVG9wO1xyXG4gICAgICAgICAgICB0aGlzLmNhbGN1bGF0ZVNjcm9sbCgpO1xyXG4gICAgICAgICAgfSlcclxuICAgICAgKVxyXG5cclxuICAgIH0sIDApXHJcblxyXG4gICAgdGhpcy5yZXNldEhlYWRlckZpcnN0Um93SGVpZ2h0KCk7XHJcblxyXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcbiAgICAgIHRoaXMubWxzLmxhbmckLnN1YnNjcmliZShfID0+IHtcclxuICAgICAgICB0aGlzLnJlc2V0SGVhZGVyRmlyc3RSb3dIZWlnaHQoKTtcclxuICAgICAgfSlcclxuICAgIClcclxuXHJcbiAgfVxyXG5cclxuICBvblRvb2xDbGlja0xvY2FsKHJvdzogYW55LCB0b29sSW5kZXg6IG51bWJlcik6IHZvaWQge1xyXG4gICAgdGhpcy5vblRvb2xDbGljay5lbWl0KHtcclxuICAgICAgY29kZTogdGhpcy50b29sc1t0b29sSW5kZXhdLmNvZGUsXHJcbiAgICAgIGlkOiByb3dbJ2lkJ11cclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICB0b2dnbGVDaGVja0FsbChhcmdzOiBib29sZWFuKSB7XHJcbiAgICBjb25zdCBuZXdDaGVja2luZ01vZGVsOiBib29sZWFuW10gPSBbXTtcclxuICAgIGNvbnN0IG5ld1NlbGVjdGVkSWRzOiBhbnlbXSA9IFtdO1xyXG4gICAgY29uc3QgbmV3U2VsZWN0ZWREYXRhOiBhbnlbXSA9IFtdO1xyXG5cclxuICAgIHRoaXMuZGF0YS5tYXAoaXRlbSA9PiB7XHJcbiAgICAgIG5ld0NoZWNraW5nTW9kZWwucHVzaChhcmdzKTtcclxuICAgICAgaWYgKGFyZ3MpIHtcclxuICAgICAgICBuZXdTZWxlY3RlZElkcy5wdXNoKGl0ZW0uaWQpO1xyXG4gICAgICAgIG5ld1NlbGVjdGVkRGF0YS5wdXNoKGl0ZW0pO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmNoZWNraW5nTW9kZWwgPSBuZXdDaGVja2luZ01vZGVsO1xyXG4gICAgdGhpcy5jaGVja2luZ1N0YXRlID0gYXJncyA/IDEgOiAwO1xyXG4gICAgdGhpcy5vblNlbGVjdGVkSWRzQ2hhbmdlLmVtaXQobmV3U2VsZWN0ZWRJZHMpO1xyXG4gICAgdGhpcy5vblNlbGVjdGVkRGF0YUNoYW5nZS5lbWl0KG5ld1NlbGVjdGVkRGF0YSk7XHJcbiAgfVxyXG5cclxuICBvbkNoZWNraW5nTmdNb2RlbENoYW5nZSgpIHtcclxuICAgIGNvbnN0IG5ld1NlbGVjdGVkSWRzOiBudW1iZXJbXSA9IFtdO1xyXG4gICAgY29uc3QgbmV3U2VsZWN0ZWREYXRhOiBhbnlbXSA9IFtdO1xyXG4gICAgdGhpcy5kYXRhLmZpbHRlcigoXzogYW55LCBpbmRleDogbnVtYmVyKSA9PiAhIXRoaXMuY2hlY2tpbmdNb2RlbFtpbmRleF0pLm1hcChpdGVtID0+IHtcclxuICAgICAgbmV3U2VsZWN0ZWRJZHMucHVzaChpdGVtLmlkKVxyXG4gICAgICBuZXdTZWxlY3RlZERhdGEucHVzaChpdGVtKVxyXG4gICAgfSlcclxuICAgIHRoaXMub25TZWxlY3RlZElkc0NoYW5nZS5lbWl0KG5ld1NlbGVjdGVkSWRzKTtcclxuICAgIHRoaXMub25TZWxlY3RlZERhdGFDaGFuZ2UuZW1pdChuZXdTZWxlY3RlZERhdGEpO1xyXG5cclxuICAgIGlmIChuZXdTZWxlY3RlZElkcy5sZW5ndGggPT09IDApIHtcclxuICAgICAgdGhpcy5jaGVja2luZ1N0YXRlID0gMDsgLy8gbm9uZVxyXG4gICAgfSBlbHNlIGlmIChuZXdTZWxlY3RlZElkcy5sZW5ndGggPT09IHRoaXMuY2hlY2tpbmdNb2RlbC5sZW5ndGgpIHtcclxuICAgICAgdGhpcy5jaGVja2luZ1N0YXRlID0gMTsgLy8gYWxsXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmNoZWNraW5nU3RhdGUgPSAyOyAvLyBtaXhlZFxyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIG9uRG91YmxlQ2xpY2tMb2NhbChyb3dJbmRleDogbnVtYmVyKSB7XHJcbiAgICB0aGlzLm9uUm93RG91YmxlQ2xpY2suZW1pdCh0aGlzLmRhdGFbcm93SW5kZXhdKVxyXG4gIH1cclxuXHJcbiAgb25DbGlja0xvY2FsKHJvdzogYW55LCBldmVudDogYW55KSB7XHJcblxyXG4gICAgY29uc29sZS5sb2coXCJvbkNsaWNrTG9jYWwgcm93XCIsIHJvdywgXCJldmVudFwiLCBldmVudClcclxuXHJcbiAgICBpZiAoZXZlbnQuZGV0YWlsID09PSAxKSB7XHJcbiAgICAgIHRoaXMuYWN0aXZlUm93ID0gcm93LmlkO1xyXG4gICAgICB0aGlzLm9uUm93Q2xpY2suZW1pdChyb3cpO1xyXG4gICAgfSBlbHNlIGlmIChldmVudC5kZXRhaWwgPT09IDIpIHtcclxuICAgICAgdGhpcy5vblJvd0RvdWJsZUNsaWNrLmVtaXQocm93KVxyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIG9uUm93VG91Y2hlbmQocm93SW5kZXg6IG51bWJlcikge1xyXG4gICAgdGhpcy5yb3dUb3VjaGVuZFN0cmVhbSQubmV4dCh7XHJcbiAgICAgIHByZXZpb3VzOiB0aGlzLnJvd1RvdWNoZW5kU3RyZWFtJC52YWx1ZS5jdXJyZW50LFxyXG4gICAgICBjdXJyZW50OiByb3dJbmRleFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBvblNlYXJjaChlOiBzdHJpbmcsIHNlYXJjaENvbHVtbkluZGV4OiBudW1iZXIpOiB2b2lkIHtcclxuICAgIHRoaXMuc2VhcmNoT2JqZWN0LmZpbHRlcigoXywgaSkgPT4gaSA9PT0gc2VhcmNoQ29sdW1uSW5kZXgpWzBdLnNlYXJjaEZvciA9IGU7XHJcbiAgICB0aGlzLm9uU2VhcmNoaW5nLmVtaXQodGhpcy5zZWFyY2hPYmplY3QpO1xyXG4gIH1cclxuXHJcbiAgb25Db2x1bW5DYXB0aW9uQ2xpY2tMb2NhbChjb2x1bW46IElDb3JlVGFibGVDb2x1bW5JdGVtKSB7XHJcblxyXG4gICAgaWYgKCEhdGhpcy5kaXNhYmxlU29ydGluZyB8fCAhIWNvbHVtbi50ZW1wbGF0ZVJlZikgcmV0dXJuOyAvLyBubyBhY3Rpb24gZm9yIHRlbXBsYXRlUmVmIHR5cGVcclxuXHJcbiAgICB0aGlzLm9uQ29sdW1uQ2FwdGlvbkNsaWNrLmVtaXQoY29sdW1uKTtcclxuXHJcbiAgICAvLyB1cGRhdGUgc29ydCBkaWNyZWN0aW9uIHByb3BlcnR5IG9mIHRoaXMgY29sdW1uXHJcbiAgICAvLyBhbmQgY2xlYXIgdXAgdGhlIHByb3BlcnR5IGZvciB0aGUgb3RoZXIgdmlzaWJsZUNvbHVtbnNcclxuICAgIHRoaXMudmlzaWJsZUNvbHVtbnMubWFwKHZjID0+IHtcclxuICAgICAgaWYgKHZjLmZpZWxkID09PSBjb2x1bW4uZmllbGQpIHtcclxuICAgICAgICB2Yy5zb3J0RGlyZWN0aW9uID0gdmMuc29ydERpcmVjdGlvbiA9PT0gRW51bVNvcnREaXJlY3Rpb24uTk9ORSA/IEVudW1Tb3J0RGlyZWN0aW9uLkFTQyA6IHZjLnNvcnREaXJlY3Rpb24gPT09IEVudW1Tb3J0RGlyZWN0aW9uLkFTQyA/IEVudW1Tb3J0RGlyZWN0aW9uLkRFU0MgOiBFbnVtU29ydERpcmVjdGlvbi5OT05FO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHZjLnNvcnREaXJlY3Rpb24gPSBFbnVtU29ydERpcmVjdGlvbi5OT05FXHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICB0b2dnbGVBbGxvd1NlYXJjaCgpOiB2b2lkIHtcclxuICAgIHRoaXMuc2VhcmNoQWN0aXZlID0gISEhdGhpcy5zZWFyY2hBY3RpdmVcclxuICB9XHJcblxyXG4gIG9uSW5saW5lVG9vbENsaWNrKGU6IElDb3JlQnV0dG9uVk5TLCByb3c6IGFueSk6IHZvaWQge1xyXG4gICAgY29uc29sZS5sb2coXCJvbklubGluZVRvb2xDbGlja1wiLCBlLCByb3cpXHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5tYXAoeCA9PiB4Py51bnN1YnNjcmliZSgpKTtcclxuICB9XHJcblxyXG59XHJcbiIsIjxkaXYgI2NvcmVUYWJsZSBjbGFzcz1cImNvcmUtdGFibGUtY29udGFpbmVyXCIgW2NsYXNzLmhpZGUtc2VhcmNoXT1cIiEhIXNlYXJjaEFjdGl2ZVwiPlxyXG5cclxuICAgIEBpZiAoIXNlYXJjaFN3aXRjaERpc2FibGVkKSB7XHJcbiAgICA8ZGl2IGNsYXNzPVwic2VhcmNoLXRvZ2dsZXIgZC1mbGV4LWNlbnRlciBwb2ludGVyXCIgKGNsaWNrKT1cInRvZ2dsZUFsbG93U2VhcmNoKClcIj5cclxuICAgICAgICA8aSBjbGFzcz1cImZlYXRoZXItc2VhcmNoXCI+PC9pPlxyXG4gICAgPC9kaXY+XHJcbiAgICB9XHJcblxyXG4gICAgPCEtLSBcclxuICAgICAgICBD4bqnbiB0cnV54buBbiBjaMOtbmggeMOhYyBoZWlnaHQgY+G7p2EgQ29yZVRhYmxlXHJcbiAgICAgICAgVHV5IG5oacOqbiBjaGnhu4F1IGNhbyBj4bunYSBDb3JlVGFibGUgY+G6p24gxJHGsOG7o2MgdMOtbmggZOG7sWEgdsOgbyBjaGnhu4F1IGNhbyBj4bunYSBjw6FjIHBo4bqnbiB04butIERPTSBs4bqnbiBsxrDhu6N0IHThu6sgbOG7m3Agbmdvw6BpIHbDoG8gbOG7m3AgdHJvbmdcclxuICAgICAgICBBbmggZW0gY2jGsGEgdMOtbmgga2hpIHRyaeG7g24ga2hhaSBjb2RlLCBuw6puIMSRYW5nIGPhuqduIGPDsyBjb24gc+G7kSBkZWZhdWx0IGzDoCA0MDBweFxyXG4gICAgLS0+XHJcbiAgICA8dGFibGUgW2NsYXNzLndyYXBdPVwiISF3cmFwXCIgI3RhYmxlIFtuZ1N0eWxlXT1cInsgaGVpZ2h0OiAoaGVpZ2h0IHx8IDQwMCkgKyAncHgnIH1cIj5cclxuICAgICAgICA8Y29sZ3JvdXA+XHJcbiAgICAgICAgICAgIEBpZiAoc2hvd0NoZWNrYm94KSB7XHJcbiAgICAgICAgICAgIDxjb2w+IH1cclxuICAgICAgICAgICAgQGZvciAoY29sIG9mIHZpc2libGVDb2x1bW5zOyB0cmFjayBjb2wpIHtcclxuICAgICAgICAgICAgPGNvbD4gfVxyXG4gICAgICAgICAgICBAaWYgKHNob3dUb29scykge1xyXG4gICAgICAgICAgICA8Y29sPiB9XHJcbiAgICAgICAgPC9jb2xncm91cD5cclxuICAgICAgICA8dGhlYWQ+XHJcbiAgICAgICAgICAgIDx0ciAjZmlyc3RIZWFkZXJSb3cgZGF0YS1yb3c9XCIxXCIgW25nU3R5bGVdPVwie1xyXG4gICAgICAgICAgICAgICAgaGVpZ2h0OiBoZWFkZXJGaXJzdFJvd0hlaWdodCArICdweCdcclxuICAgICAgICAgICAgfVwiPlxyXG4gICAgICAgICAgICAgICAgQGlmIChzaG93Q2hlY2tib3gpIHtcclxuICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cImNoZWNrLWNvbC1oZWFkZXIgY2hlY2stY2VsbCBmcm96ZW4tY29sXCIgc3R5bGU9XCJsZWZ0OiAwcHhcIlxyXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLnJvd3NwYW5dPVwic2VhcmNoQWN0aXZlID8gMiA6IDFcIiBbbmdTdHlsZV09XCJ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogJyM2NjY2NjYnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogJ3doaXRlJ1xyXG4gICAgICAgICAgICAgICAgICAgIH1cIj5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tIHBsZWFzZSBkbyBub3QgY2hhbmdlIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgW25nU3R5bGVdPVwie1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IGNoZWNrYm94U2l6ZSAqIDIgKyAncHgnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiY2hlY2t3cmFwXCIgW25nU3R5bGVdPVwie1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogc2VhcmNoQWN0aXZlID8gaGVhZGVyRmlyc3RSb3dIZWlnaHQgKyBoZWFkZXJTZWNvbmRSb3dIZWlnaHQgKyAncHgnIDogaGVhZGVyRmlyc3RSb3dIZWlnaHQgKyAncHgnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgW2lkXT1cIidjaGVjay1jb2wtaGVhZGVyJyArIGlkXCIgWyhuZ01vZGVsKV09XCJoZWFkZXJDaGVja2JveFN0YXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJ0b2dnbGVDaGVja0FsbCgkZXZlbnQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoZWNrbWFya1wiIFtjbGFzcy5taXhlZF09XCJjaGVja2luZ1N0YXRlPT09MlwiIFtuZ1N0eWxlXT1cIntcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9wOiAoKGhlYWRlckZpcnN0Um93SGVpZ2h0ICsgaGVhZGVyU2Vjb25kUm93SGVpZ2h0ICogKHNlYXJjaEFjdGl2ZSA/IDEgOiAwKSkgLzIgLSBjaGVja2JveFNpemUvMikgKyAncHgnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBAZm9yIChjb2wgb2YgdmlzaWJsZUNvbHVtbnM7IHRyYWNrIGNvbCkge1xyXG4gICAgICAgICAgICAgICAgPHRoIFtjbGFzcy5mcm96ZW4tY29sXT1cIiRpbmRleCA8IGZyb3plblwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3N0eWxlXT1cIiRpbmRleCA8IGZyb3plbiA/ICdsZWZ0OiAnICsgZnJvemVuTGVmdHNbJGluZGV4XSArICdweCcgOiAnJ1wiIFtuZ1N0eWxlXT1cIntcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogJyM2NjY2NjYnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6ICd3aGl0ZScsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiAhIW5vUGFkZGluZ0NlbGwgPyAnMHB4IDBweCcgOiAnMHB4IDEycHgnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cIj5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tIC0xcHggZm9yIGJvcmRlckJvdHRvbSBvZiBoZWFkZXIgZmlyc3Qgcm93IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2x1bW4tY2FwdGlvblwiIFtjbGFzcy5hc2NlbmRpbmddPVwiY29sLnNvcnREaXJlY3Rpb249PT0tMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5kZXNjZW5kaW5nXT1cImNvbC5zb3J0RGlyZWN0aW9uPT09MVwiIChjbGljayk9XCJvbkNvbHVtbkNhcHRpb25DbGlja0xvY2FsKGNvbClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJjb2wuY2FwdGlvbiB8IHRyYW5zbGF0ZSA6IGxhbmdcIiBbbmdTdHlsZV09XCJ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IGNvbC53aWR0aCArICdweCcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAoaGVhZGVyRmlyc3RSb3dIZWlnaHQgLSAxKSArICdweCcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogJ2ZsZXgnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsaWduSXRlbXM6ICdjZW50ZXInLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaXRlU3BhY2U6ICEhaGVhZGVyV3JhcCA/ICdpbml0aWFsJyA6ICdpbmhlcml0JyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0QWxpZ246ICdjZW50ZXInXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XCI+e3sgY29sLmNhcHRpb24gfCB0cmFuc2xhdGUgOiBsYW5nIH19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJlc2l6ZXJcIiAobW91c2Vkb3duKT1cInN0YXJ0RHJhZ2dpbmcoJGV2ZW50LCBjb2wsIGZhbHNlKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChtb3VzZXVwKT1cInN0b3BEcmFnZ2luZygkZXZlbnQsIGNvbCwgZmFsc2UpXCIgKG1vdXNlbW92ZSk9XCJtb3ZlRXZlbnQoJGV2ZW50LCBjb2wpXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgQGlmIChzaG93VG9vbHMgJiYgdmlzaWJsZUNvbHVtbnM/Lmxlbmd0aCkge1xyXG4gICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwiY2hlY2stY29sLWhlYWRlciBjaGVjay1jZWxsXCIgW25nU3R5bGVdPVwie1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6ICcjNjY2NjY2JyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6ICd3aGl0ZSdcclxuICAgICAgICAgICAgICAgICAgICB9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT1cIndpZHRoOiAxMDBweDtcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgIEBpZiAoc2VhcmNoQWN0aXZlKSB7XHJcbiAgICAgICAgICAgIDx0ciBkYXRhLXJvdz1cIjJcIiBbY2xhc3MuaGlkZW5dPVwiISEhc2VhcmNoQWN0aXZlXCI+XHJcbiAgICAgICAgICAgICAgICBAZm9yIChjb2wgb2YgdmlzaWJsZUNvbHVtbnM7IHRyYWNrIGNvbCkge1xyXG4gICAgICAgICAgICAgICAgPHRoIFtjbGFzcy5mcm96ZW4tY29sXT1cIiRpbmRleCA8IGZyb3plblwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3N0eWxlXT1cIiRpbmRleCA8IGZyb3plbiA/ICdsZWZ0OiAnICsgZnJvemVuTGVmdHNbJGluZGV4XSArICdweCcgOiAnJ1wiIFtuZ1N0eWxlXT1cIntcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6ICcjNjY2NjY2JyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogJ3doaXRlJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIEBpZiAoIWNvbC5oaWRlU2VhcmNoQm94KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBbc3R5bGVdPVwiJ3dpZHRoOiAnICsgY29sLndpZHRoICsgJ3B4OydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2wgc2VhcmNoXCIgWyhuZ01vZGVsKV09XCJzZWFyY2hPYmplY3RbJGluZGV4XS5zZWFyY2hGb3JcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25TZWFyY2goJGV2ZW50LCAkaW5kZXgpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgPC90aD5cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIDx0aCBbbmdTdHlsZV09XCJ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogJyM2NjY2NjYnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogJ3doaXRlJ1xyXG4gICAgICAgICAgICAgICAgICAgIH1cIj48L3RoPlxyXG4gICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgPC90aGVhZD5cclxuXHJcbiAgICAgICAgPHRib2R5IFtjbGFzcy5sb2FkaW5nXT1cImxvYWRpbmdcIj5cclxuICAgICAgICAgICAgPGNvcmUtbG9hZGluZy1zdXJmYWNlIFtsb2FkaW5nXT1cImxvYWRpbmdcIiBbaGVpZ2h0XT1cInRib2R5aGVpZ2h0IHx8IDUwMFwiPjwvY29yZS1sb2FkaW5nLXN1cmZhY2U+XHJcblxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgQGlmICghIWxhenlMb2FkaW5nKSB7XHJcbiAgICAgICAgICAgICAgICA8dHIgW25nU3R5bGVdPVwieyBoZWlnaHQ6IGhpZGRlblRvcEhlaWdodCArICdweCcgfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBbbmdTdHlsZV09XCJ7IGhlaWdodDogaGlkZGVuVG9wSGVpZ2h0ICsgJ3B4JyB9XCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgQGZvciAocm93IG9mIHZpc2libGVEYXRhOyB0cmFjayByb3cpIHtcclxuICAgICAgICAgICAgICAgIDx0ciAoY2xpY2spPVwib25DbGlja0xvY2FsKHJvdywgJGV2ZW50KVwiICh0b3VjaGVuZCk9XCJvblJvd1RvdWNoZW5kKCRpbmRleCtzdGFydE5vZGUpXCJcclxuICAgICAgICAgICAgICAgICAgICBbY2xhc3MuYWN0aXZlXT1cInJvdy5pZCA9PT0gYWN0aXZlUm93ICYmICEhIWRpc2FibGVIaWdobGlnaHRPbkNsaWNrXCI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cInJvdy1pdGVtLXRvb2xzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3ctaXRlbS10b29sXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93LWl0ZW0tdG9vbC13cmFwcGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNvcmUtYnV0dG9uLWdyb3VwLXZucyBbc2hvd25JdGVtc109XCJpbmxpbmVUb29sSXRlbXNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYnV0dG9uQ2xpY2spPVwib25JbmxpbmVUb29sQ2xpY2soJGV2ZW50LCByb3cpXCI+PC9jb3JlLWJ1dHRvbi1ncm91cC12bnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+IC0tPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICBAaWYgKHNob3dDaGVja2JveCkge1xyXG4gICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cImNoZWNrLWNlbGwgZnJvemVuLWNvbFwiIHN0eWxlPVwibGVmdDogMHB4O1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJjaGVja3dyYXBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBjbGFzcz1cImNoZWNrLXJvd1wiIFtpZF09XCInY2hlY2stcm93JyArICgkaW5kZXggKyBzdGFydE5vZGUpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImNoZWNraW5nTW9kZWxbJGluZGV4K3N0YXJ0Tm9kZV1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uQ2hlY2tpbmdOZ01vZGVsQ2hhbmdlKClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hlY2ttYXJrXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICBAZm9yIChjb2wgb2YgdmlzaWJsZUNvbHVtbnM7IHRyYWNrIGNvbCkge1xyXG4gICAgICAgICAgICAgICAgICAgIDx0ZCBbY2xhc3MuZnJvemVuLWNvbF09XCIkaW5kZXggPCBmcm96ZW5cIiBbbmdTdHlsZV09XCJ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlZnQ6ICRpbmRleCA8IGZyb3plbiA/IGZyb3plbkxlZnRzWyRpbmRleF0gKyAncHgnIDogJzBweCcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6ICEhbm9QYWRkaW5nQ2VsbCA/ICcwcHggMHB4JyA6ICcycHggMHB4J1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cIj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoIWNvbD8udGVtcGxhdGVSZWYpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBJTiBNT1NUIENBU0VTIFdFIE5FRUQgVE8gUkVOREVSIFRIRSBDRUxMIFdJVEggUFJJTUlUSVZFIFRZUEUgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgW2NsYXNzLnNjcm9sbC15XT1cImFsbG93Q2VsbFNjcm9sbFlcIiBbbmdTdHlsZV09XCJ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogISFjb2wud2lkdGggPyBjb2wud2lkdGggKyAncHgnIDogJ3Vuc2V0JyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHRBbGlnbjogISFjb2wuYWxpZ24gPyBjb2wuYWxpZ24udG9Mb3dlckNhc2UoKSA6ICd1bnNldCcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lSGVpZ2h0OiByb3dIZWlnaHQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiAhIW5vUGFkZGluZ0NlbGwgPyAnMHB4IDBweCcgOiAnMHB4IDEycHgnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cIiBbYXBwVG9vbHRpcF09XCJyb3dbY29sLmZpZWxkXSB8IHRhYmxlQ2VsbDogY29sLnBpcGUgOiBsYW5nXCI+e3tcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd1tjb2wuZmllbGRdIHwgdGFibGVDZWxsOiBjb2wucGlwZSA6IGxhbmcgfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tIEJVVCBTT01FIFRJTUUgV0UgTkVFRCBUTyBSRU5ERVIgVEhFIENFTEwgV0lUSCBURU1QTEFURSAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBbbmdTdHlsZV09XCJ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogISFjb2wud2lkdGggPyBjb2wud2lkdGggKyAncHgnIDogJ3Vuc2V0JyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHRBbGlnbjogISFjb2wuYWxpZ24gPyBjb2wuYWxpZ24udG9Mb3dlckNhc2UoKSA6ICd1bnNldCcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiAhIW5vUGFkZGluZ0NlbGwgPyAnMHB4IDBweCcgOiAnMHB4IDEycHgnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoIWNvbD8udGVtcGxhdGVSZWZBbGxvd0VkaXRPblJvd0FjdGl2ZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cImNvbD8udGVtcGxhdGVSZWYhOyBjb250ZXh0OiB7IGNvbnRleHQ6IHJvdyB9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IEBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cImNvbD8udGVtcGxhdGVSZWYhOyBjb250ZXh0OiB7IGNvbnRleHQ6IHJvdywgYWxsb3dFZGl0OiByb3cuaWQgPT09IGFjdGl2ZVJvdyB9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgQGlmIChzaG93VG9vbHMpIHtcclxuICAgICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0b29scy1ncm91cCBkLWZsZXgtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAZm9yICh0b29sIG9mIHRvb2xzOyB0cmFjayB0b29sKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFtjbGFzc109XCIndG9vbHMtaWNvbiAnICsgdG9vbC5jbGFzc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmRpc2FibGVkXT1cInRvb2wuZGlzYWJsZWRGbiA/IHRvb2wuZGlzYWJsZWRGbiEocm93KSA6IGZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuaGlkZGVuXT1cInRvb2wuaGlkZGVuRm4gPyB0b29sLmhpZGRlbkZuIShyb3cpIDogZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvblRvb2xDbGlja0xvY2FsKHJvdywgJGluZGV4KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICBAaWYgKCEhbGF6eUxvYWRpbmcpIHtcclxuICAgICAgICAgICAgICAgIDx0ciBbbmdTdHlsZV09XCJ7XHJcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBoaWRkZW5Cb3R0b21IZWlnaHQgKyAncHgnXHJcbiAgICAgICAgICAgICAgICB9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFtuZ1N0eWxlXT1cIntcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IGhpZGRlbkJvdHRvbUhlaWdodCArICdweCdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgPC90Ym9keT5cclxuICAgICAgICBAaWYgKCEhZm9vdGVyKSB7XHJcbiAgICAgICAgPHRmb290PlxyXG4gICAgICAgICAgICBGb290ZXJcclxuICAgICAgICA8L3Rmb290PlxyXG4gICAgICAgIH1cclxuICAgIDwvdGFibGU+XHJcbjwvZGl2PiJdfQ==
498
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS10YWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtaGlzdGFmZi1hbHBoYS9zcmMvbGliL2FwcC9saWJyYXJpZXMvY29yZS10YWJsZS9jb3JlLXRhYmxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1oaXN0YWZmLWFscGhhL3NyYy9saWIvYXBwL2xpYnJhcmllcy9jb3JlLXRhYmxlL2NvcmUtdGFibGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBYyxLQUFLLEVBQStDLFNBQVMsRUFBaUIsTUFBTSxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckssT0FBTyxFQUFFLFdBQVcsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBMENoRSxPQUFPLEVBQWdCLGVBQWUsRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFjLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUVsRyxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSw0REFBNEQsQ0FBQztBQVMxRyxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUUxRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sb0VBQW9FLENBQUM7QUFDOUcsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDdEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDaEUsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sNkVBQTZFLENBQUM7QUFDMUgsT0FB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RUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFO2dCQUNoQixXQUFXO3NCQUFuQixLQUFLO2dCQUNHLDBCQUEwQjtzQkFBbEMsS0FBSztnQkFDRyx1QkFBdUI7c0JBQS9CLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxvQkFBb0I7c0JBQTVCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLHVCQUF1QjtzQkFBL0IsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUVHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBRUksV0FBVztzQkFBcEIsTUFBTTtnQkFDRyxXQUFXO3NCQUFwQixNQUFNO2dCQUNHLFVBQVU7c0JBQW5CLE1BQU07Z0JBQ0csZ0JBQWdCO3NCQUF6QixNQUFNO2dCQUNHLG1CQUFtQjtzQkFBNUIsTUFBTTtnQkFDRyxvQkFBb0I7c0JBQTdCLE1BQU07Z0JBQ0csb0JBQW9CO3NCQUE3QixNQUFNO2dCQXNDaUIsU0FBUztzQkFBaEMsU0FBUzt1QkFBQyxXQUFXO2dCQUNGLEtBQUs7c0JBQXhCLFNBQVM7dUJBQUMsT0FBTztnQkFDVyxjQUFjO3NCQUExQyxTQUFTO3VCQUFDLGdCQUFnQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgSW5wdXQsIE9uSW5pdCwgT25EZXN0cm95LCBBZnRlclZpZXdJbml0LCBPbkNoYW5nZXMsIFZpZXdDaGlsZCwgU2ltcGxlQ2hhbmdlcywgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIGlzRGV2TW9kZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcblxyXG5leHBvcnQgZW51bSBFQ29yZVRhYmxlVG9vbENvZGUge1xyXG4gIGVkaXQgPSAnZWRpdCcsXHJcbiAgZGVsZXRlID0gJ2RlbGV0ZScsXHJcbiAgY29tcGxldGUgPSAnY29tcGxldGUnLFxyXG4gIG5hdmlnYXRlID0gJ25hdmlnYXRlJyxcclxufVxyXG5cclxuZXhwb3J0IGVudW0gRUNvcmVUYWJsZVRvb2xDbGFzcyB7XHJcbiAgZWRpdCA9ICdlZGl0LWljb24nLFxyXG4gIGRlbGV0ZSA9ICdkZWxldGUtaWNvbicsXHJcbiAgcmVwZWF0ID0gJ3JlcGVhdC1pY29uJyxcclxuICBuYXZpZ2F0ZSA9ICduYXZpZ2F0ZS1pY29uJ1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElDb3JlVGFibGVUb29sSXRlbSB7XHJcbiAgY29kZTogRUNvcmVUYWJsZVRvb2xDb2RlO1xyXG4gIGNsYXNzOiBFQ29yZVRhYmxlVG9vbENsYXNzO1xyXG4gIGNhcHRpb24/OiBFbnVtVHJhbnNsYXRlS2V5IHwgc3RyaW5nOyAvLyBMYXRlciB3ZSB3aWxsIHJlbW92ZSBcInwgc3RyaW5nXCJcclxuXHJcbiAgLyogY2FsbGJhY2tzIHRvIGNhbGN1bGF0ZSBkaXNhYmxlZCBhbmQgaGlkZW4gYmFzZWQgb24gcm93Ki9cclxuICBkaXNhYmxlZEZuPzogKHJvdzogYW55KSA9PiBib29sZWFuO1xyXG4gIGhpZGRlbkZuPzogKHJvdzogYW55KSA9PiBib29sZWFuO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElDb3JlVGFibGVUb29sQ2xpY2tFdmVudEVtaXR0ZXJEYXRhIHtcclxuICBjb2RlOiBFQ29yZVRhYmxlVG9vbENvZGU7XHJcbiAgaWQ6IHN0cmluZyB8IG51bWJlcjtcclxufVxyXG5cclxuLypcclxuZXhwb3J0IGludGVyZmFjZSBJQ29yZVRhYmxlUm93RG91YmxlQ2xpY2tFdmVudEVtaXR0ZXJEYXRhIHtcclxuICBpZDogc3RyaW5nIHwgbnVtYmVyO1xyXG59XHJcbiovXHJcblxyXG5pbnRlcmZhY2UgSURvdWJsZVRvdWNoZW5kRGF0YSB7XHJcbiAgcHJldmlvdXM6IG51bWJlcjtcclxuICBjdXJyZW50OiBudW1iZXI7XHJcbn1cclxuXHJcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiwgQmVoYXZpb3JTdWJqZWN0LCBmaWx0ZXIsIGRlYm91bmNlVGltZSwgT2JzZXJ2YWJsZSwgZnJvbUV2ZW50IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IENvcmVQYWdlTGlzdFNlcnZpY2UgfSBmcm9tICcuLi9jb3JlLXBhZ2UtbGlzdC9jb3JlLXBhZ2UtbGlzdC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ29yZUZvcm1Db250cm9sQmFzZUNvbXBvbmVudCB9IGZyb20gJy4uL2NvcmUtZm9ybS1jb250cm9sLWJhc2UvY29yZS1mb3JtLWNvbnRyb2wtYmFzZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBJQ29yZUJ1dHRvblZOUyB9IGZyb20gJy4uL2NvcmUtYnV0dG9uLWdyb3VwLXZucy9jb3JlLWJ1dHRvbi1ncm91cC12bnMvSUNvcmVCdXR0b25WTlMnO1xyXG5pbXBvcnQgeyBFbnVtQ29yZUJ1dHRvblZOU0NvZGUgfSBmcm9tICcuLi9jb3JlLWJ1dHRvbi1ncm91cC12bnMvY29yZS1idXR0b24tZ3JvdXAtdm5zL0VudW1Db3JlQnV0dG9uVk5TQ29kZSc7XHJcbmltcG9ydCB7IEVudW1UcmFuc2xhdGVLZXkgfSBmcm9tIFwiYWxwaGEtZ2xvYmFsLWNvbnN0YW50c1wiO1xyXG5pbXBvcnQgeyBJU2VhcmNoSXRlbSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvSVF1ZXJ5TGlzdFJlcXVlc3QnO1xyXG5pbXBvcnQgeyBMYXlvdXRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvbGF5b3V0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBNdWx0aUxhbmd1YWdlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL211bHRpLWxhbmd1YWdlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBbGVydFNlcnZpY2UgfSBmcm9tICcuLi9hbGVydC9hbGVydC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9hdXRoLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBub25lQXV0b0Nsb3NlZEFsZXJ0T3B0aW9ucyB9IGZyb20gJy4uLy4uL2NvbnN0YW50cy9hbGVydE9wdGlvbnMnO1xyXG5pbXBvcnQgeyBJQ29yZVRhYmxlQ29sdW1uSXRlbSB9IGZyb20gJy4vSUNvcmVUYWJsZUNvbHVtbkl0ZW0nO1xyXG5pbXBvcnQgeyBFbnVtU29ydERpcmVjdGlvbiB9IGZyb20gJy4uLy4uL2VudW0vRW51bVNvcnREaXJlY3Rpb24nO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBDb3JlQnV0dG9uR3JvdXBDb21wb25lbnQgfSBmcm9tICcuLi9jb3JlLWJ1dHRvbi1ncm91cC9jb3JlLWJ1dHRvbi1ncm91cC9jb3JlLWJ1dHRvbi1ncm91cC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBUaHJlZWRvdHNDb21wb25lbnQgfSBmcm9tICcuLi90aHJlZWRvdHMvdGhyZWVkb3RzLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFRvb2x0aXBEaXJlY3RpdmUgfSBmcm9tICcuLi90b29sdGlwL3Rvb2x0aXAuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgQ29yZUxvYWRpbmdTdXJmYWNlQ29tcG9uZW50IH0gZnJvbSAnLi4vY29yZS1sb2FkaW5nLXN1cmZhY2UvY29yZS1sb2FkaW5nLXN1cmZhY2UvY29yZS1sb2FkaW5nLXN1cmZhY2UuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ29yZUJ1dHRvbkdyb3VwVm5zQ29tcG9uZW50IH0gZnJvbSAnLi4vY29yZS1idXR0b24tZ3JvdXAtdm5zL2NvcmUtYnV0dG9uLWdyb3VwLXZucy9jb3JlLWJ1dHRvbi1ncm91cC12bnMuY29tcG9uZW50JztcclxuaW1wb3J0IHsgVGFibGVDZWxsUGlwZSB9IGZyb20gJy4uL3BpcGVzL3RhYmxlLWNlbGwucGlwZSc7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZVBpcGUgfSBmcm9tICcuLi8uLi9hcHAtcGlwZXMvdHJhbnNsYXRlLnBpcGUnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdjb3JlLXRhYmxlJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIEZvcm1zTW9kdWxlLFxyXG4gICAgQ29yZUJ1dHRvbkdyb3VwQ29tcG9uZW50LFxyXG4gICAgVGhyZWVkb3RzQ29tcG9uZW50LFxyXG4gICAgVG9vbHRpcERpcmVjdGl2ZSxcclxuICAgIFRhYmxlQ2VsbFBpcGUsXHJcbiAgICBUcmFuc2xhdGVQaXBlLFxyXG4gICAgQ29yZUxvYWRpbmdTdXJmYWNlQ29tcG9uZW50LFxyXG4gICAgQ29yZUJ1dHRvbkdyb3VwVm5zQ29tcG9uZW50LFxyXG4gIF0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2NvcmUtdGFibGUuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2NvcmUtdGFibGUuY29tcG9uZW50LnNjc3MnXSxcclxuICBwcm92aWRlcnM6IFtcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXHJcbiAgICAgIG11bHRpOiB0cnVlLFxyXG4gICAgICB1c2VFeGlzdGluZzogQ29yZVRhYmxlQ29tcG9uZW50XHJcbiAgICB9XHJcbiAgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ29yZVRhYmxlQ29tcG9uZW50IGV4dGVuZHMgQ29yZUZvcm1Db250cm9sQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xyXG5cclxuICAvKlxyXG4gIFRoaXMgY29tcG9uZW50IGRpc3BsYXlzIGlucHV0IGRhdGEgd2l0aG91dCBwYWdpbmF0aW9uLlxyXG4gIEZvciBwYWdpbmF0aW5nIHBsZWFzZSBvcmdhbml6ZSBmcm9tIHBhcmVudHNcclxuICAqL1xyXG5cclxuICBASW5wdXQoKSBpZCE6IHN0cmluZzsgLy8gZm9yIGh0bWwgaWQgaWRlbnRpZnlpbmdcclxuICBASW5wdXQoKSB3aWR0aCE6IHN0cmluZztcclxuICBASW5wdXQoKSBoZWlnaHQhOiBudW1iZXI7XHJcbiAgQElucHV0KCkgc2hvd0NoZWNrYm94ITogYm9vbGVhbjtcclxuICBASW5wdXQoKSBjaGVja2JveFNpemUhOiBudW1iZXI7XHJcbiAgQElucHV0KCkgb3V0ZXJCdXR0b25zITogSUNvcmVCdXR0b25WTlNbXTtcclxuICBASW5wdXQoKSBzaG93VG9vbHMhOiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIHRvb2xzITogSUNvcmVUYWJsZVRvb2xJdGVtW107XHJcbiAgQElucHV0KCkgY2hlY2tpbmdSZXNldEZsYWchOiBib29sZWFuO1xyXG5cclxuICAvKiBjaGFuZ2UgdGhlc2UgMiBwcm9wcyB0byB3cmFwIGhlYWRlciB0ZXh0cyAqL1xyXG4gIEBJbnB1dCgpIGhlYWRlcldyYXAhOiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIGhlYWRlckZpcnN0Um93SGVpZ2h0ITogbnVtYmVyO1xyXG4gIC8qKiAqL1xyXG5cclxuICBASW5wdXQoKSBoZWFkZXJTZWNvbmRSb3dIZWlnaHQhOiBudW1iZXI7XHJcbiAgQElucHV0KCkgd3JhcCE6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgYWxsb3dDZWxsU2Nyb2xsWSE6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgbG9hZGluZyE6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgcm93SGVpZ2h0ITogc3RyaW5nOyAvLyBWRVJZIElNUE9SVEFOVCBQUk9QRVJUWVxyXG4gIEBJbnB1dCgpIGZyb3plbiE6IG51bWJlcjtcclxuICBASW5wdXQoKSBmb290ZXIhOiBhbnk7XHJcbiAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSkgY29sdW1ucyE6IElDb3JlVGFibGVDb2x1bW5JdGVtW107IC8vIHJlcXVpcmVkXHJcbiAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSkgZGF0YSE6IGFueVtdOyAvLyByZXF1aXJlZFxyXG4gIEBJbnB1dCgpIHNlbGVjdGVkSWRzITogc3RyaW5nW10gfCBudW1iZXJbXTtcclxuICBASW5wdXQoKSBjb3JlUGFnZUxpc3RJbnN0YW5jZU51bWJlciE6IG51bWJlcjtcclxuICBASW5wdXQoKSBkaXNhYmxlSGlnaGxpZ2h0T25DbGljayE6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgZnJlZU1vZGUhOiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIHNlYXJjaFN3aXRjaERpc2FibGVkOiBib29sZWFuID0gZmFsc2U7IC8vID8/P1xyXG4gIEBJbnB1dCgpIGRpc2FibGVTb3J0aW5nITogYm9vbGVhbjtcclxuICBASW5wdXQoKSBpbmxpbmVUb29sSXRlbXMhOiBFbnVtQ29yZUJ1dHRvblZOU0NvZGVbXTtcclxuICBASW5wdXQoKSBjb2x1bW5TZWFyY2hEZWZhdWx0T3BlbiE6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgbGF6eUxvYWRpbmchOiBib29sZWFuO1xyXG5cclxuICBASW5wdXQoKSBub1BhZGRpbmdDZWxsITogYm9vbGVhbjtcclxuXHJcbiAgQE91dHB1dCgpIG9uU2VhcmNoaW5nID0gbmV3IEV2ZW50RW1pdHRlcjxJU2VhcmNoSXRlbVtdPigpO1xyXG4gIEBPdXRwdXQoKSBvblRvb2xDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8SUNvcmVUYWJsZVRvb2xDbGlja0V2ZW50RW1pdHRlckRhdGE+KCk7XHJcbiAgQE91dHB1dCgpIG9uUm93Q2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIG9uUm93RG91YmxlQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIG9uU2VsZWN0ZWRJZHNDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZ1tdIHwgbnVtYmVyW10+KCk7XHJcbiAgQE91dHB1dCgpIG9uU2VsZWN0ZWREYXRhQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnlbXT4oKTtcclxuICBAT3V0cHV0KCkgb25Db2x1bW5DYXB0aW9uQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPElDb3JlVGFibGVDb2x1bW5JdGVtPigpO1xyXG5cclxuICBjaGVja2JveENvbHVtbldpZHRoOiBudW1iZXIgPSAzMDsgLy8gKC0tY2hlY2tib3gtc2l6ZSkqIDIgUGxlYXNlIGRvIG5vdCBjaGFuZ2UgdGhpc1xyXG5cclxuICBzZWFyY2hBY3RpdmUhOiBib29sZWFuO1xyXG4gIHZpc2libGVDb2x1bW5zITogSUNvcmVUYWJsZUNvbHVtbkl0ZW1bXTtcclxuICBmcm96ZW5MZWZ0czogbnVtYmVyW10gPSBbXTtcclxuICBjaGVja2luZ01vZGVsOiBib29sZWFuW10gPSBbXTtcclxuICBoZWFkZXJDaGVja2JveFN0YXRlITogYm9vbGVhbjtcclxuICBjaGVja2luZ1N0YXRlITogbnVtYmVyOyAvLyAwPW5vbmU7IDE9YWxsOyAyPW1peGVkXHJcbiAgdGJvZHloZWlnaHQhOiBudW1iZXI7XHJcbiAgdmlzaWJsZVJvd0NvdW50ITogbnVtYmVyO1xyXG5cclxuICByb3dUb3VjaGVuZFN0cmVhbSQ6IEJlaGF2aW9yU3ViamVjdDxJRG91YmxlVG91Y2hlbmREYXRhPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8SURvdWJsZVRvdWNoZW5kRGF0YT4oeyBwcmV2aW91czogLTIsIGN1cnJlbnQ6IC0xIH0pO1xyXG4gIHN1YnNjcmlwdGlvbnM6IFN1YnNjcmlwdGlvbltdID0gW107XHJcblxyXG4gIHNlYXJjaE9iamVjdCE6IElTZWFyY2hJdGVtW107XHJcblxyXG4gIGxhbmchOiBzdHJpbmc7XHJcblxyXG4gIGFjdGl2ZVJvdyE6IGFueTsgLy8gbnVtYmVyIHwgc3RyaW5nXHJcblxyXG4gIG1vdXNlRG93biA9IGZhbHNlO1xyXG4gIHN0YXJ0WDogYW55O1xyXG4gIGVuZFg6IGFueTtcclxuXHJcbiAgc2Nyb2xsU3RyZWFtJCE6IE9ic2VydmFibGU8YW55PjtcclxuXHJcbiAgLyogRk9SIExBWlkgVUkgTE9BRElORyAqL1xyXG4gIHJlbmRlckFocmVhZDogbnVtYmVyID0gMDtcclxuICBoaWRkZW5Ub3BIZWlnaHQ6IG51bWJlciA9IDA7XHJcbiAgaGlkZGVuQm90dG9tSGVpZ2h0OiBudW1iZXIgPSAwO1xyXG4gIHNjcm9sbFRvcDogbnVtYmVyID0gMDtcclxuICBvZmZzZXRZOiBudW1iZXIgPSAwO1xyXG4gIHZpc2libGVEYXRhITogYW55W107XHJcbiAgc3RhcnROb2RlOiBudW1iZXIgPSAwO1xyXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKi9cclxuXHJcbiAgQFZpZXdDaGlsZCgnY29yZVRhYmxlJykgY29yZVRhYmxlITogRWxlbWVudFJlZjtcclxuICBAVmlld0NoaWxkKCd0YWJsZScpIHRhYmxlITogRWxlbWVudFJlZjtcclxuICBAVmlld0NoaWxkKCdmaXJzdEhlYWRlclJvdycpIGZpcnN0SGVhZGVyUm93ITogRWxlbWVudFJlZjtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGxheW91dFNlcnZpY2U6IExheW91dFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGNvcmVQYWdlTGlzdFNlcnZpY2U6IENvcmVQYWdlTGlzdFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIG1sczogTXVsdGlMYW5ndWFnZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGFsZXJ0U2VydmljZTogQWxlcnRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBhdXRoU2VydmljZTogQXV0aFNlcnZpY2VcclxuICApIHtcclxuICAgIHN1cGVyKCk7XHJcbiAgfVxyXG5cclxuICBjYWxjdWxhdGVTY3JvbGwoKTogdm9pZCB7XHJcblxyXG4gICAgdHJ5IHtcclxuXHJcbiAgICAgIGlmICghISF0aGlzLmNvcmVUYWJsZSkgcmV0dXJuO1xyXG4gICAgICBpZiAoISEhdGhpcy5sYXp5TG9hZGluZykgcmV0dXJuO1xyXG5cclxuICAgICAgY29uc3QgaGVpZ2h0ID0gTnVtYmVyKGdldENvbXB1dGVkU3R5bGUodGhpcy5jb3JlVGFibGUubmF0aXZlRWxlbWVudCkuZ2V0UHJvcGVydHlWYWx1ZSgnLS1oZWlnaHQnKS5yZXBsYWNlKCdweCcsICcnKSk7XHJcbiAgICAgIGNvbnN0IHJvd0hlaWdodCA9IE51bWJlcihnZXRDb21wdXRlZFN0eWxlKHRoaXMuY29yZVRhYmxlLm5hdGl2ZUVsZW1lbnQpLmdldFByb3BlcnR5VmFsdWUoJy0tcm93LWhlaWdodCcpLnNwbGl0KCdweCcpWzBdKTtcclxuXHJcbiAgICAgIGlmICghISFyb3dIZWlnaHQpIHRocm93IG5ldyBFcnJvcihcIkNvdWxkIG5vdCBnZXQgLS1yb3ctaGVpZ2h0IHByb3BlcnR5XCIpO1xyXG5cclxuICAgICAgbGV0IHN0YXJ0Tm9kZSA9IE1hdGguZmxvb3IodGhpcy5zY3JvbGxUb3AgLyByb3dIZWlnaHQpIC0gdGhpcy5yZW5kZXJBaHJlYWQ7XHJcbiAgICAgIHN0YXJ0Tm9kZSA9IE1hdGgubWF4KDAsIHN0YXJ0Tm9kZSk7XHJcbiAgICAgIHRoaXMuc3RhcnROb2RlID0gc3RhcnROb2RlIHx8IDA7XHJcbiAgICAgIGxldCB2aXNpYmxlTm9kZUNvdW50ID0gTWF0aC5jZWlsKGhlaWdodCAvIHJvd0hlaWdodCkgKyAyICogdGhpcy5yZW5kZXJBaHJlYWQ7XHJcbiAgICAgIHZpc2libGVOb2RlQ291bnQgPSBNYXRoLm1pbih0aGlzLmRhdGEubGVuZ3RoIC0gc3RhcnROb2RlLCB2aXNpYmxlTm9kZUNvdW50KTtcclxuICAgICAgdGhpcy5vZmZzZXRZID0gc3RhcnROb2RlICogcm93SGVpZ2h0O1xyXG4gICAgICBjb25zdCBuZXdWaXNpYmxlRGF0YTogYW55W10gPSBbXTtcclxuXHJcbiAgICAgIHRoaXMuaGlkZGVuVG9wSGVpZ2h0ID0gc3RhcnROb2RlICogcm93SGVpZ2h0O1xyXG4gICAgICB0aGlzLmhpZGRlbkJvdHRvbUhlaWdodCA9ICh0aGlzLmRhdGEubGVuZ3RoIC0gc3RhcnROb2RlIC0gdmlzaWJsZU5vZGVDb3VudCkgKiByb3dIZWlnaHQ7XHJcbiAgICAgIGZvciAobGV0IGkgPSBzdGFydE5vZGU7IGkgPCBzdGFydE5vZGUgKyB2aXNpYmxlTm9kZUNvdW50OyBpKyspIHtcclxuICAgICAgICBuZXdWaXNpYmxlRGF0YS5wdXNoKHRoaXMuZGF0YVtpXSlcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy52aXNpYmxlRGF0YSA9IG5ld1Zpc2libGVEYXRhO1xyXG5cclxuICAgICAgLyogT1BFTiBDT01NRU5UUyBUTyBTRUUgQ09OVFJPTCBWQUxVRVMgKi9cclxuICAgICAgY29uc29sZS5sb2coXCJzdGFydE5vZGVcIiwgc3RhcnROb2RlKVxyXG4gICAgICAvKlxyXG4gICAgICBjb25zb2xlLmxvZyhcInRoaXMub2Zmc2V0WVwiLCB0aGlzLm9mZnNldFkpXHJcbiAgICAgIGNvbnNvbGUubG9nKFwidGhpcy5oaWRkZW5Ub3BIZWlnaHRcIiwgdGhpcy5oaWRkZW5Ub3BIZWlnaHQpXHJcbiAgICAgIGNvbnNvbGUubG9nKFwidGhpcy5oaWRkZW5Cb3R0b21IZWlnaHRcIiwgdGhpcy5oaWRkZW5Cb3R0b21IZWlnaHQpXHJcbiAgICAgIGNvbnNvbGUubG9nKFwidGhpcy52aXNpYmxlRGF0YS5sZW5ndGhcIiwgdGhpcy52aXNpYmxlRGF0YS5sZW5ndGgpXHJcbiAgICAgIGNvbnN0IGNvbnRyb2xWYWx1ZSA9ICh0aGlzLmhpZGRlblRvcEhlaWdodCArIHRoaXMuaGlkZGVuQm90dG9tSGVpZ2h0ICsgdGhpcy52aXNpYmxlRGF0YS5sZW5ndGggKiByb3dIZWlnaHQpIC8gcm93SGVpZ2h0XHJcbiAgICAgIGNvbnNvbGUubG9nKFwiY29udHJvbFZhbHVlXCIsIGNvbnRyb2xWYWx1ZSkgLy8gTXVzdCBlcXVlYWwgcGFnZVNpemVcclxuICAgICAgKi9cclxuICAgIH0gY2F0Y2ggKGVycm9yOiBhbnkpIHtcclxuICAgICAgaWYgKGlzRGV2TW9kZSgpICYmIHRoaXMuYXV0aFNlcnZpY2UuZGF0YSQudmFsdWU/LmlkID09PSAnOGMyNDY4M2QtN2Q1Mi00ZjVhLTgwOTAtMzFjNzc3ZTg4NjlkJykge1xyXG4gICAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmVycm9yKGVycm9yLm1lc3NhZ2UsIG5vbmVBdXRvQ2xvc2VkQWxlcnRPcHRpb25zKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKCEhdGhpcy5kYXRhKSB7XHJcbiAgICAgICAgdGhpcy52aXNpYmxlRGF0YSA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy5kYXRhKSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzdGFydERyYWdnaW5nKGU6IGFueSwgY29sOiBJQ29yZVRhYmxlQ29sdW1uSXRlbSwgZmxhZzogYW55KSB7XHJcbiAgICBpZiAoZS5idXR0b25zID09PSAxKSB7XHJcbiAgICAgIHRoaXMuc3RhcnRYID0gZS5wYWdlWDtcclxuICAgICAgaWYgKCEhIXRoaXMubW91c2VEb3duKSB7XHJcblxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMubW91c2VEb3duID0gdHJ1ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHN0b3BEcmFnZ2luZyhlOiBhbnksIGNvbDogSUNvcmVUYWJsZUNvbHVtbkl0ZW0sIGZsYWc6IGFueSkge1xyXG4gICAgaWYgKCEhdGhpcy5tb3VzZURvd24pIHtcclxuICAgICAgdGhpcy5lbmRYID0gZS5wYWdlWDtcclxuICAgICAgbGV0IG9mZnNldCA9IHRoaXMuZW5kWCAtIHRoaXMuc3RhcnRYO1xyXG4gICAgICBjb2wud2lkdGghICs9IG9mZnNldDtcclxuICAgICAgdGhpcy5tb3VzZURvd24gPSBmYWxzZTtcclxuICAgICAgdGhpcy5lbmRYID0gMDtcclxuICAgICAgdGhpcy5zdGFydFggPSAwO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbW92ZUV2ZW50KGU6IGFueSwgY29sOiBJQ29yZVRhYmxlQ29sdW1uSXRlbSkge1xyXG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgaWYgKCF0aGlzLm1vdXNlRG93bikge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCB4ID0gZS5wYWdlWDtcclxuICAgIGNvbnNvbGUubG9nKFwibW92ZUV2ZW50XCIsIGUucGFnZVgpXHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuXHJcbiAgICBpZiAodGhpcy5zaG93Q2hlY2tib3gpIHtcclxuICAgICAgaWYgKCF0aGlzLmNoZWNrYm94U2l6ZSkge1xyXG4gICAgICAgIHRoaXMuY2hlY2tib3hTaXplID0gMTU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5oZWFkZXJGaXJzdFJvd0hlaWdodCA9PT0gdW5kZWZpbmVkKSB0aGlzLmhlYWRlckZpcnN0Um93SGVpZ2h0ID0gNDA7XHJcbiAgICBpZiAodGhpcy5oZWFkZXJTZWNvbmRSb3dIZWlnaHQgPT09IHVuZGVmaW5lZCkgdGhpcy5oZWFkZXJTZWNvbmRSb3dIZWlnaHQgPSA0MDtcclxuXHJcblxyXG4gICAgLyogVmFsaWRhdGUgY29sdW1ucyBpbnB1dCB0byBtYWtlIHN1cmUgb25lIG9mIGZpZWxkcyBpcyAnaWQnICovXHJcbiAgICBpZiAoISEhdGhpcy5jb2x1bW5zKSB7XHJcbiAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmVycm9yKHRoaXMuaWQgKyBcIjogQ29sdW1ucyBhcmUgbm90IGRlZmluZWQuXCIsIG5vbmVBdXRvQ2xvc2VkQWxlcnRPcHRpb25zKVxyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmNvbHVtbnM/LmZpbHRlcigoYzogSUNvcmVUYWJsZUNvbHVtbkl0ZW0pID0+IGMuZmllbGQgPT09ICdpZCcpLmxlbmd0aCA9PT0gMCAmJiBpc0Rldk1vZGUoKSAmJiB0aGlzLmNvbHVtbnMubGVuZ3RoKSB7XHJcbiAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmVycm9yKHRoaXMuaWQgKyBcIjogVGhlIGNvbHVtbnMgbXVzdCBoYXZlIG9uZSB3aXRoICdmaWVsZCcgcHJvcGVydHkgPT09ICdpZCdcIiwgbm9uZUF1dG9DbG9zZWRBbGVydE9wdGlvbnMpXHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy52aXNpYmxlQ29sdW1ucyA9IHRoaXMuY29sdW1ucz8uZmlsdGVyKChjOiBJQ29yZVRhYmxlQ29sdW1uSXRlbSkgPT4gISEhYy5oaWRkZW4pXHJcbiAgICBpZiAoISEhdGhpcy52aXNpYmxlQ29sdW1ucz8ubGVuZ3RoICYmIGlzRGV2TW9kZSgpICYmIHRoaXMuY29sdW1ucz8ubGVuZ3RoKSB7XHJcbiAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmVycm9yKHRoaXMuaWQgKyBcIjogTm8gdmlzaWJsZSBjb2x1bW4gZGVmaW5lZC5cIiwgbm9uZUF1dG9DbG9zZWRBbGVydE9wdGlvbnMpXHJcbiAgICB9XHJcblxyXG4gICAgLy8gYWRkIGRlZmF1bHQgc29ydCBkaXJlY3Rpb24gdG8gdmlzaWJsZUNvbHVtbnNcclxuICAgIHRoaXMudmlzaWJsZUNvbHVtbnM/Lm1hcChjID0+IGMuc29ydERpcmVjdGlvbiA9IEVudW1Tb3J0RGlyZWN0aW9uLk5PTkUpXHJcblxyXG4gICAgLyogU1RBUlQ6IEluaXRpYWxpemluZyBzZWFyY2hPYmplY3QgKi9cclxuICAgIGNvbnN0IG5ld1NlYXJjaE9iamVjdDogSVNlYXJjaEl0ZW1bXSA9IFtdO1xyXG4gICAgdGhpcy52aXNpYmxlQ29sdW1ucz8ubWFwKGMgPT4ge1xyXG4gICAgICBuZXdTZWFyY2hPYmplY3QucHVzaCh7XHJcbiAgICAgICAgZmllbGQ6IGMuZmllbGQsXHJcbiAgICAgICAgc2VhcmNoRm9yOiAnJ1xyXG4gICAgICB9KVxyXG4gICAgfSlcclxuICAgIHRoaXMuc2VhcmNoT2JqZWN0ID0gbmV3U2VhcmNoT2JqZWN0O1xyXG4gICAgLyogRU5EOiBJbml0aWFsaXppbmcgc2VhcmNoT2JqZWN0ICovXHJcblxyXG4gICAgY29uc3QgZnJvemVuQ29sdW1ucyA9IHRoaXMudmlzaWJsZUNvbHVtbnM/LmZpbHRlcigoXywgaW5kZXgpID0+IGluZGV4IDwgdGhpcy5mcm96ZW4pO1xyXG5cclxuICAgIGxldCBsZWZ0ID0gdGhpcy5jaGVja2JveFNpemUhICogMiB8fCAwOyAvLyB0aGUgZmlyc3Qgc2l6ZSBpcyBmb3IgY2hlY2tib3hcclxuICAgIGZyb3plbkNvbHVtbnM/Lm1hcChjID0+IHtcclxuICAgICAgaWYgKCEhIWMud2lkdGgpIGNvbnNvbGUuZXJyb3IodGhpcy5pZCArIFwiOiBFYWNoIGZyb3plbiBjb2x1bW4gbXVzdCBoYXZlIGl0cyBudW1iZXIgcHJvcGVydHkgJ3dpZHRoJy5cIik7XHJcbiAgICAgIHRoaXMuZnJvemVuTGVmdHMucHVzaChsZWZ0KTtcclxuICAgICAgbGVmdCA9IGxlZnQgKyBjLndpZHRoIVxyXG4gICAgfSlcclxuXHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuICAgICAgdGhpcy5yb3dUb3VjaGVuZFN0cmVhbSQucGlwZShcclxuICAgICAgICBmaWx0ZXIoKHg6IGFueSkgPT4geC5jdXJyZW50ID09PSB4LnByZXZpb3VzKSxcclxuICAgICAgICBkZWJvdW5jZVRpbWUoMjAwKSxcclxuICAgICAgKS5zdWJzY3JpYmUoKHk6IGFueSkgPT4ge1xyXG4gICAgICAgIHRoaXMub25Sb3dEb3VibGVDbGljay5lbWl0KHtcclxuICAgICAgICAgIGlkOiB0aGlzLmRhdGFbeS5jdXJyZW50XS5pZFxyXG4gICAgICAgIH0pXHJcbiAgICAgIH0pXHJcbiAgICApXHJcblxyXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcbiAgICAgIHRoaXMubWxzLmxhbmckLnN1YnNjcmliZSh4ID0+IHRoaXMubGFuZyA9IHgpXHJcbiAgICApXHJcblxyXG4gICAgLyogQ2hlY2sgaWYgYW55IG9mIGNvbHVtbnMgaXMgdGVtcGxhdGVSZWYgKi9cclxuICAgIGNvbnN0IHRlbXBsYXRlUmVmRmlsdGVyID0gdGhpcy5jb2x1bW5zPy5maWx0ZXIoeCA9PiAhIXgudGVtcGxhdGVSZWYpXHJcbiAgICBpZiAoISF0ZW1wbGF0ZVJlZkZpbHRlcj8ubGVuZ3RoKSB7XHJcbiAgICAgIHRlbXBsYXRlUmVmRmlsdGVyLm1hcCh4ID0+IHtcclxuICAgICAgICBpZiAoeC50ZW1wbGF0ZVJlZj8uZWxlbWVudFJlZj8ubmF0aXZlRWxlbWVudD8uaGVpZ2h0ID4gTnVtYmVyKHRoaXMucm93SGVpZ2h0LnJlcGxhY2UoJ3B4JywgJycpKSkge1xyXG4gICAgICAgICAgdGhpcy5hbGVydFNlcnZpY2UuZXJyb3IoYENoaeG7gXUgY2FvIGPhu6dhICR7dGhpcy5tbHMudHJhbnMoeC5jYXB0aW9uKX0gdGVtcGxhdGVSZWYgbMOgICR7eC50ZW1wbGF0ZVJlZj8uZWxlbWVudFJlZj8ubmF0aXZlRWxlbWVudD8uaGVpZ2h0fSwgbOG7m24gaMahbiBjaGnhu4F1IGNhbyBj4bunYSBkw7JuZyBsxrDhu5tpICR7dGhpcy5yb3dIZWlnaHR9YCwgbm9uZUF1dG9DbG9zZWRBbGVydE9wdGlvbnMpXHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuXHJcbiAgICBpZiAoY2hhbmdlc1snY2hlY2tpbmdSZXNldEZsYWcnXSkge1xyXG4gICAgICBpZiAoISF0aGlzLmRhdGEpIHtcclxuICAgICAgICB0aGlzLnRvZ2dsZUNoZWNrQWxsKGZhbHNlKVxyXG4gICAgICAgIHRoaXMuaGVhZGVyQ2hlY2tib3hTdGF0ZSA9IGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGNoYW5nZXNbJ2RhdGEnXSkge1xyXG5cclxuICAgICAgLy8gQ2hlY2sgdW5pcXVlIG9mIFwiaWRcIlxyXG4gICAgICBpZiAoaXNEZXZNb2RlKCkpIHtcclxuICAgICAgICBpZiAoY2hhbmdlc1snZGF0YSddLmN1cnJlbnRWYWx1ZT8ubGVuZ3RoKSB7XHJcbiAgICAgICAgICBjb25zdCBhcnIgPSBjaGFuZ2VzWydkYXRhJ10uY3VycmVudFZhbHVlXHJcbiAgICAgICAgICBsZXQgZmluZER1cGxpY2F0ZXMgPSBhcnIgPT4gYXJyLmZpbHRlcihpdGVtID0+IGFyci5maWx0ZXIoeCA9PiB4LmlkID09PSBpdGVtLmlkKS5sZW5ndGggPiAxKVxyXG4gICAgICAgICAgaWYgKCEhZmluZER1cGxpY2F0ZXMoYXJyKS5sZW5ndGgpIHtcclxuICAgICAgICAgICAgdGhpcy5hbGVydFNlcnZpY2UuZXJyb3IoXCJDb3JlVGFibGUgcmVxdWlyZXMgdW5pcXVlIGlkIHZhbHVlcyFcIiwgbm9uZUF1dG9DbG9zZWRBbGVydE9wdGlvbnMpXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICBjb25zdCBuZXdDaGVja2luZ01vZGVsOiBib29sZWFuW10gPSBbXTtcclxuICAgICAgY2hhbmdlc1snZGF0YSddLmN1cnJlbnRWYWx1ZT8ubWFwKChfOiBhbnkpID0+IHtcclxuICAgICAgICBuZXdDaGVja2luZ01vZGVsLnB1c2goZmFsc2UpXHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLmNoZWNraW5nTW9kZWwgPSBuZXdDaGVja2luZ01vZGVsO1xyXG5cclxuICAgICAgaWYgKCEhdGhpcy5sYXp5TG9hZGluZykge1xyXG4gICAgICAgIGlmICghIXRoaXMuY29yZVRhYmxlKSB7XHJcbiAgICAgICAgICB0aGlzLmNhbGN1bGF0ZVNjcm9sbCgpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnZpc2libGVEYXRhID0gY2hhbmdlc1snZGF0YSddLmN1cnJlbnRWYWx1ZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGlmIChjaGFuZ2VzWydjaGVja2VkSWRzJ10pIHtcclxuICAgICAgY29uc3QgbmV3Q2hlY2tpbmdNb2RlbDogYm9vbGVhbltdID0gW107XHJcbiAgICAgIGNoYW5nZXNbJ2NoZWNrZWRJZHMnXS5jdXJyZW50VmFsdWU/Lm1hcCgoY2hlY2tlZElkOiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLmRhdGEubWFwKChpdGVtKSA9PiB7XHJcbiAgICAgICAgICBpZiAoaXRlbVsnaWQnXSA9PT0gY2hlY2tlZElkKSB7XHJcbiAgICAgICAgICAgIG5ld0NoZWNraW5nTW9kZWwucHVzaCh0cnVlKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIG5ld0NoZWNraW5nTW9kZWwucHVzaChmYWxzZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICAgfSlcclxuICAgICAgdGhpcy5jaGVja2luZ01vZGVsID0gbmV3Q2hlY2tpbmdNb2RlbDtcclxuICAgIH1cclxuICAgIC8vIGlmIChjaGFuZ2VzWydsb2FkaW5nJ10pIHtcclxuICAgIC8vICAgdGhpcy5sb2FkaW5nID0gY2hhbmdlc1snbG9hZGluZyddLmN1cnJlbnRWYWx1ZTtcclxuICAgIC8vIH1cclxuICAgIGlmIChjaGFuZ2VzWydjb2x1bW5zJ10pIHtcclxuICAgICAgdGhpcy52aXNpYmxlQ29sdW1ucyA9IHRoaXMuY29sdW1ucz8uZmlsdGVyKChjOiBJQ29yZVRhYmxlQ29sdW1uSXRlbSkgPT4gISEhYy5oaWRkZW4pIHx8IFtdXHJcbiAgICB9XHJcbiAgICBpZiAoY2hhbmdlc1snY29sdW1uU2VhcmNoRGVmYXVsdE9wZW4nXSkge1xyXG4gICAgICB0aGlzLnNlYXJjaEFjdGl2ZSA9ICEhY2hhbmdlc1snY29sdW1uU2VhcmNoRGVmYXVsdE9wZW4nXS5jdXJyZW50VmFsdWVcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgcmVzZXRIZWFkZXJGaXJzdFJvd0hlaWdodCgpOiB2b2lkIHtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICBjb25zdCBmaXJzdEhlYWRlclJvd0hlaWdodCA9IHRoaXMuZmlyc3RIZWFkZXJSb3cubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5oZWlnaHQ7XHJcbiAgICAgIHRoaXMuY29yZVRhYmxlLm5hdGl2ZUVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoJy0taGVhZGVyLTFzdC1yb3ctaGVpZ2h0JyxcclxuICAgICAgICBmaXJzdEhlYWRlclJvd0hlaWdodCArICdweCdcclxuICAgICAgKTtcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcblxyXG4gICAgaWYgKHRoaXMuY29yZVBhZ2VMaXN0SW5zdGFuY2VOdW1iZXIpIHtcclxuICAgICAgY29uc3QgY2FsbGVyRmlsdGVyID0gdGhpcy5jb3JlUGFnZUxpc3RTZXJ2aWNlLmluc3RhbmNlcy5maWx0ZXIoeCA9PiB4Lmluc3RhbmNlTnVtYmVyID09PSB0aGlzLmNvcmVQYWdlTGlzdEluc3RhbmNlTnVtYmVyKTtcclxuICAgICAgaWYgKCEhY2FsbGVyRmlsdGVyLmxlbmd0aCkge1xyXG4gICAgICAgIGNvbnN0IGNhbGxlciA9IGNhbGxlckZpbHRlclswXTtcclxuICAgICAgICBjYWxsZXIuY29yZVRhYmxlUmVmID0gdGhpcy5jb3JlVGFibGU7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmICghISF0aGlzLmZyZWVNb2RlKSB7XHJcbiAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcbiAgICAgICAgICB0aGlzLmNvcmVQYWdlTGlzdFNlcnZpY2UuaW5zdGFuY2VzLmZpbHRlcih4ID0+IHguaW5zdGFuY2VOdW1iZXIgPT09IHRoaXMuY29yZVBhZ2VMaXN0SW5zdGFuY2VOdW1iZXIpWzBdLmlkJC5zdWJzY3JpYmUoeCA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuYWN0aXZlUm93ID0geDtcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgKVxyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuICAgICAgICB0aGlzLmNvcmVQYWdlTGlzdFNlcnZpY2UuaW5zdGFuY2VzLmZpbHRlcih4ID0+IHguaW5zdGFuY2VOdW1iZXIgPT09IHRoaXMuY29yZVBhZ2VMaXN0SW5zdGFuY2VOdW1iZXIpWzBdLnRib2R5SGVpZ2h0JC5zdWJzY3JpYmUoeCA9PiB7XHJcbiAgICAgICAgICBpZiAoISF4KSB7XHJcbiAgICAgICAgICAgIHRoaXMudGJvZHloZWlnaHQgPSB4O1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICAgIClcclxuXHJcbiAgICAgIGNvbnN0IHJlY3QgPSB0aGlzLmNvcmVUYWJsZS5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xyXG4gICAgICB0aGlzLmNvcmVUYWJsZS5uYXRpdmVFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KCctLXRhYmxlLXdpZHRoJywgcmVjdC53aWR0aCArICdweCcpXHJcblxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuc2Nyb2xsU3RyZWFtJCA9IGZyb21FdmVudCh0aGlzLnRhYmxlLm5hdGl2ZUVsZW1lbnQsICdzY3JvbGwnKTtcclxuXHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuXHJcbiAgICAgIGlmICghIXRoaXMud2lkdGgpIHRoaXMuY29yZVRhYmxlLm5hdGl2ZUVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoJy0td2lkdGgnLCB0aGlzLndpZHRoICsgJ3B4Jyk7XHJcbiAgICAgIGlmICghIXRoaXMucm93SGVpZ2h0KSB0aGlzLmNvcmVUYWJsZS5uYXRpdmVFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KCctLXJvdy1oZWlnaHQnLCB0aGlzLnJvd0hlaWdodCArICdweCcpO1xyXG4gICAgICBpZiAoISF0aGlzLmhlaWdodCkgdGhpcy5jb3JlVGFibGUubmF0aXZlRWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1oZWlnaHQnLCB0aGlzLmhlaWdodCArICdweCcpO1xyXG5cclxuICAgICAgLy8gQ2jhu4kgc3Vic2NyaWRlIHNhdSBraGkgY8OhYyBs4buHbmggdHLDqm4gxJHDoyDEkcaw4bujYyB0aOG7sWMgaGnhu4duXHJcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG4gICAgICAgIHRoaXMuc2Nyb2xsU3RyZWFtJFxyXG4gICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgIGRlYm91bmNlVGltZSg1MClcclxuICAgICAgICAgIClcclxuICAgICAgICAgIC5zdWJzY3JpYmUoZXZlbnQgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnNjcm9sbFRvcCA9IGV2ZW50LnNyY0VsZW1lbnQuc2Nyb2xsVG9wO1xyXG4gICAgICAgICAgICB0aGlzLmNhbGN1bGF0ZVNjcm9sbCgpO1xyXG4gICAgICAgICAgfSlcclxuICAgICAgKVxyXG5cclxuICAgIH0sIDApXHJcblxyXG4gICAgdGhpcy5yZXNldEhlYWRlckZpcnN0Um93SGVpZ2h0KCk7XHJcblxyXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcbiAgICAgIHRoaXMubWxzLmxhbmckLnN1YnNjcmliZShfID0+IHtcclxuICAgICAgICB0aGlzLnJlc2V0SGVhZGVyRmlyc3RSb3dIZWlnaHQoKTtcclxuICAgICAgfSlcclxuICAgIClcclxuXHJcbiAgfVxyXG5cclxuICBvblRvb2xDbGlja0xvY2FsKHJvdzogYW55LCB0b29sSW5kZXg6IG51bWJlcik6IHZvaWQge1xyXG4gICAgdGhpcy5vblRvb2xDbGljay5lbWl0KHtcclxuICAgICAgY29kZTogdGhpcy50b29sc1t0b29sSW5kZXhdLmNvZGUsXHJcbiAgICAgIGlkOiByb3dbJ2lkJ11cclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICB0b2dnbGVDaGVja0FsbChhcmdzOiBib29sZWFuKSB7XHJcbiAgICBjb25zdCBuZXdDaGVja2luZ01vZGVsOiBib29sZWFuW10gPSBbXTtcclxuICAgIGNvbnN0IG5ld1NlbGVjdGVkSWRzOiBhbnlbXSA9IFtdO1xyXG4gICAgY29uc3QgbmV3U2VsZWN0ZWREYXRhOiBhbnlbXSA9IFtdO1xyXG5cclxuICAgIHRoaXMuZGF0YS5tYXAoaXRlbSA9PiB7XHJcbiAgICAgIG5ld0NoZWNraW5nTW9kZWwucHVzaChhcmdzKTtcclxuICAgICAgaWYgKGFyZ3MpIHtcclxuICAgICAgICBuZXdTZWxlY3RlZElkcy5wdXNoKGl0ZW0uaWQpO1xyXG4gICAgICAgIG5ld1NlbGVjdGVkRGF0YS5wdXNoKGl0ZW0pO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmNoZWNraW5nTW9kZWwgPSBuZXdDaGVja2luZ01vZGVsO1xyXG4gICAgdGhpcy5jaGVja2luZ1N0YXRlID0gYXJncyA/IDEgOiAwO1xyXG4gICAgdGhpcy5vblNlbGVjdGVkSWRzQ2hhbmdlLmVtaXQobmV3U2VsZWN0ZWRJZHMpO1xyXG4gICAgdGhpcy5vblNlbGVjdGVkRGF0YUNoYW5nZS5lbWl0KG5ld1NlbGVjdGVkRGF0YSk7XHJcbiAgfVxyXG5cclxuICBvbkNoZWNraW5nTmdNb2RlbENoYW5nZSgpIHtcclxuICAgIGNvbnN0IG5ld1NlbGVjdGVkSWRzOiBudW1iZXJbXSA9IFtdO1xyXG4gICAgY29uc3QgbmV3U2VsZWN0ZWREYXRhOiBhbnlbXSA9IFtdO1xyXG4gICAgdGhpcy5kYXRhLmZpbHRlcigoXzogYW55LCBpbmRleDogbnVtYmVyKSA9PiAhIXRoaXMuY2hlY2tpbmdNb2RlbFtpbmRleF0pLm1hcChpdGVtID0+IHtcclxuICAgICAgbmV3U2VsZWN0ZWRJZHMucHVzaChpdGVtLmlkKVxyXG4gICAgICBuZXdTZWxlY3RlZERhdGEucHVzaChpdGVtKVxyXG4gICAgfSlcclxuICAgIHRoaXMub25TZWxlY3RlZElkc0NoYW5nZS5lbWl0KG5ld1NlbGVjdGVkSWRzKTtcclxuICAgIHRoaXMub25TZWxlY3RlZERhdGFDaGFuZ2UuZW1pdChuZXdTZWxlY3RlZERhdGEpO1xyXG5cclxuICAgIGlmIChuZXdTZWxlY3RlZElkcy5sZW5ndGggPT09IDApIHtcclxuICAgICAgdGhpcy5jaGVja2luZ1N0YXRlID0gMDsgLy8gbm9uZVxyXG4gICAgfSBlbHNlIGlmIChuZXdTZWxlY3RlZElkcy5sZW5ndGggPT09IHRoaXMuY2hlY2tpbmdNb2RlbC5sZW5ndGgpIHtcclxuICAgICAgdGhpcy5jaGVja2luZ1N0YXRlID0gMTsgLy8gYWxsXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmNoZWNraW5nU3RhdGUgPSAyOyAvLyBtaXhlZFxyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIG9uRG91YmxlQ2xpY2tMb2NhbChyb3dJbmRleDogbnVtYmVyKSB7XHJcbiAgICB0aGlzLm9uUm93RG91YmxlQ2xpY2suZW1pdCh0aGlzLmRhdGFbcm93SW5kZXhdKVxyXG4gIH1cclxuXHJcbiAgb25DbGlja0xvY2FsKHJvdzogYW55LCBldmVudDogYW55KSB7XHJcblxyXG4gICAgY29uc29sZS5sb2coXCJvbkNsaWNrTG9jYWwgcm93XCIsIHJvdywgXCJldmVudFwiLCBldmVudClcclxuXHJcbiAgICBpZiAoZXZlbnQuZGV0YWlsID09PSAxKSB7XHJcbiAgICAgIHRoaXMuYWN0aXZlUm93ID0gcm93LmlkO1xyXG4gICAgICB0aGlzLm9uUm93Q2xpY2suZW1pdChyb3cpO1xyXG4gICAgfSBlbHNlIGlmIChldmVudC5kZXRhaWwgPT09IDIpIHtcclxuICAgICAgdGhpcy5vblJvd0RvdWJsZUNsaWNrLmVtaXQocm93KVxyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIG9uUm93VG91Y2hlbmQocm93SW5kZXg6IG51bWJlcikge1xyXG4gICAgdGhpcy5yb3dUb3VjaGVuZFN0cmVhbSQubmV4dCh7XHJcbiAgICAgIHByZXZpb3VzOiB0aGlzLnJvd1RvdWNoZW5kU3RyZWFtJC52YWx1ZS5jdXJyZW50LFxyXG4gICAgICBjdXJyZW50OiByb3dJbmRleFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBvblNlYXJjaChlOiBzdHJpbmcsIHNlYXJjaENvbHVtbkluZGV4OiBudW1iZXIpOiB2b2lkIHtcclxuICAgIHRoaXMuc2VhcmNoT2JqZWN0LmZpbHRlcigoXywgaSkgPT4gaSA9PT0gc2VhcmNoQ29sdW1uSW5kZXgpWzBdLnNlYXJjaEZvciA9IGU7XHJcbiAgICB0aGlzLm9uU2VhcmNoaW5nLmVtaXQodGhpcy5zZWFyY2hPYmplY3QpO1xyXG4gIH1cclxuXHJcbiAgb25Db2x1bW5DYXB0aW9uQ2xpY2tMb2NhbChjb2x1bW46IElDb3JlVGFibGVDb2x1bW5JdGVtKSB7XHJcblxyXG4gICAgaWYgKCEhdGhpcy5kaXNhYmxlU29ydGluZyB8fCAhIWNvbHVtbi50ZW1wbGF0ZVJlZikgcmV0dXJuOyAvLyBubyBhY3Rpb24gZm9yIHRlbXBsYXRlUmVmIHR5cGVcclxuXHJcbiAgICB0aGlzLm9uQ29sdW1uQ2FwdGlvbkNsaWNrLmVtaXQoY29sdW1uKTtcclxuXHJcbiAgICAvLyB1cGRhdGUgc29ydCBkaWNyZWN0aW9uIHByb3BlcnR5IG9mIHRoaXMgY29sdW1uXHJcbiAgICAvLyBhbmQgY2xlYXIgdXAgdGhlIHByb3BlcnR5IGZvciB0aGUgb3RoZXIgdmlzaWJsZUNvbHVtbnNcclxuICAgIHRoaXMudmlzaWJsZUNvbHVtbnMubWFwKHZjID0+IHtcclxuICAgICAgaWYgKHZjLmZpZWxkID09PSBjb2x1bW4uZmllbGQpIHtcclxuICAgICAgICB2Yy5zb3J0RGlyZWN0aW9uID0gdmMuc29ydERpcmVjdGlvbiA9PT0gRW51bVNvcnREaXJlY3Rpb24uTk9ORSA/IEVudW1Tb3J0RGlyZWN0aW9uLkFTQyA6IHZjLnNvcnREaXJlY3Rpb24gPT09IEVudW1Tb3J0RGlyZWN0aW9uLkFTQyA/IEVudW1Tb3J0RGlyZWN0aW9uLkRFU0MgOiBFbnVtU29ydERpcmVjdGlvbi5OT05FO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHZjLnNvcnREaXJlY3Rpb24gPSBFbnVtU29ydERpcmVjdGlvbi5OT05FXHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICB0b2dnbGVBbGxvd1NlYXJjaCgpOiB2b2lkIHtcclxuICAgIHRoaXMuc2VhcmNoQWN0aXZlID0gISEhdGhpcy5zZWFyY2hBY3RpdmVcclxuICB9XHJcblxyXG4gIG9uSW5saW5lVG9vbENsaWNrKGU6IElDb3JlQnV0dG9uVk5TLCByb3c6IGFueSk6IHZvaWQge1xyXG4gICAgY29uc29sZS5sb2coXCJvbklubGluZVRvb2xDbGlja1wiLCBlLCByb3cpXHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5tYXAoeCA9PiB4Py51bnN1YnNjcmliZSgpKTtcclxuICB9XHJcblxyXG59XHJcbiIsIjxkaXYgI2NvcmVUYWJsZSBjbGFzcz1cImNvcmUtdGFibGUtY29udGFpbmVyXCIgW2NsYXNzLmhpZGUtc2VhcmNoXT1cIiEhIXNlYXJjaEFjdGl2ZVwiPlxyXG5cclxuICAgIEBpZiAoIXNlYXJjaFN3aXRjaERpc2FibGVkKSB7XHJcbiAgICA8ZGl2IGNsYXNzPVwic2VhcmNoLXRvZ2dsZXIgZC1mbGV4LWNlbnRlciBwb2ludGVyXCIgKGNsaWNrKT1cInRvZ2dsZUFsbG93U2VhcmNoKClcIj5cclxuICAgICAgICA8aSBjbGFzcz1cImZlYXRoZXItc2VhcmNoXCI+PC9pPlxyXG4gICAgPC9kaXY+XHJcbiAgICB9XHJcblxyXG4gICAgPCEtLSBcclxuICAgICAgICBD4bqnbiB0cnV54buBbiBjaMOtbmggeMOhYyBoZWlnaHQgY+G7p2EgQ29yZVRhYmxlXHJcbiAgICAgICAgVHV5IG5oacOqbiBjaGnhu4F1IGNhbyBj4bunYSBDb3JlVGFibGUgY+G6p24gxJHGsOG7o2MgdMOtbmggZOG7sWEgdsOgbyBjaGnhu4F1IGNhbyBj4bunYSBjw6FjIHBo4bqnbiB04butIERPTSBs4bqnbiBsxrDhu6N0IHThu6sgbOG7m3Agbmdvw6BpIHbDoG8gbOG7m3AgdHJvbmdcclxuICAgICAgICBBbmggZW0gY2jGsGEgdMOtbmgga2hpIHRyaeG7g24ga2hhaSBjb2RlLCBuw6puIMSRYW5nIGPhuqduIGPDsyBjb24gc+G7kSBkZWZhdWx0IGzDoCA0MDBweFxyXG4gICAgLS0+XHJcbiAgICA8dGFibGUgW2NsYXNzLndyYXBdPVwiISF3cmFwXCIgI3RhYmxlIFtuZ1N0eWxlXT1cInsgaGVpZ2h0OiAoaGVpZ2h0IHx8IDQwMCkgKyAncHgnIH1cIj5cclxuICAgICAgICA8Y29sZ3JvdXA+XHJcbiAgICAgICAgICAgIEBpZiAoc2hvd0NoZWNrYm94KSB7XHJcbiAgICAgICAgICAgIDxjb2w+IH1cclxuICAgICAgICAgICAgQGZvciAoY29sIG9mIHZpc2libGVDb2x1bW5zOyB0cmFjayBjb2wpIHtcclxuICAgICAgICAgICAgPGNvbD4gfVxyXG4gICAgICAgICAgICBAaWYgKHNob3dUb29scykge1xyXG4gICAgICAgICAgICA8Y29sPiB9XHJcbiAgICAgICAgPC9jb2xncm91cD5cclxuICAgICAgICA8dGhlYWQ+XHJcbiAgICAgICAgICAgIDx0ciAjZmlyc3RIZWFkZXJSb3cgZGF0YS1yb3c9XCIxXCIgW25nU3R5bGVdPVwie1xyXG4gICAgICAgICAgICAgICAgaGVpZ2h0OiBoZWFkZXJGaXJzdFJvd0hlaWdodCArICdweCdcclxuICAgICAgICAgICAgfVwiPlxyXG4gICAgICAgICAgICAgICAgQGlmIChzaG93Q2hlY2tib3gpIHtcclxuICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cImNoZWNrLWNvbC1oZWFkZXIgY2hlY2stY2VsbCBmcm96ZW4tY29sXCIgc3R5bGU9XCJsZWZ0OiAwcHhcIlxyXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLnJvd3NwYW5dPVwic2VhcmNoQWN0aXZlID8gMiA6IDFcIiBbbmdTdHlsZV09XCJ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogJyM2NjY2NjYnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogJ3doaXRlJ1xyXG4gICAgICAgICAgICAgICAgICAgIH1cIj5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tIHBsZWFzZSBkbyBub3QgY2hhbmdlIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgW25nU3R5bGVdPVwie1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IGNoZWNrYm94U2l6ZSAqIDIgKyAncHgnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiY2hlY2t3cmFwXCIgW25nU3R5bGVdPVwie1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogc2VhcmNoQWN0aXZlID8gaGVhZGVyRmlyc3RSb3dIZWlnaHQgKyBoZWFkZXJTZWNvbmRSb3dIZWlnaHQgKyAncHgnIDogaGVhZGVyRmlyc3RSb3dIZWlnaHQgKyAncHgnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgW2lkXT1cIidjaGVjay1jb2wtaGVhZGVyJyArIGlkXCIgWyhuZ01vZGVsKV09XCJoZWFkZXJDaGVja2JveFN0YXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJ0b2dnbGVDaGVja0FsbCgkZXZlbnQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoZWNrbWFya1wiIFtjbGFzcy5taXhlZF09XCJjaGVja2luZ1N0YXRlPT09MlwiIFtuZ1N0eWxlXT1cIntcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9wOiAoKGhlYWRlckZpcnN0Um93SGVpZ2h0ICsgaGVhZGVyU2Vjb25kUm93SGVpZ2h0ICogKHNlYXJjaEFjdGl2ZSA/IDEgOiAwKSkgLzIgLSBjaGVja2JveFNpemUvMikgKyAncHgnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBAZm9yIChjb2wgb2YgdmlzaWJsZUNvbHVtbnM7IHRyYWNrIGNvbCkge1xyXG4gICAgICAgICAgICAgICAgPHRoIFtjbGFzcy5mcm96ZW4tY29sXT1cIiRpbmRleCA8IGZyb3plblwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3N0eWxlXT1cIiRpbmRleCA8IGZyb3plbiA/ICdsZWZ0OiAnICsgZnJvemVuTGVmdHNbJGluZGV4XSArICdweCcgOiAnJ1wiIFtuZ1N0eWxlXT1cIntcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogJyM2NjY2NjYnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6ICd3aGl0ZScsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiAhIW5vUGFkZGluZ0NlbGwgPyAnMHB4IDBweCcgOiAnMHB4IDEycHgnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cIj5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tIC0xcHggZm9yIGJvcmRlckJvdHRvbSBvZiBoZWFkZXIgZmlyc3Qgcm93IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2x1bW4tY2FwdGlvblwiIFtjbGFzcy5hc2NlbmRpbmddPVwiY29sLnNvcnREaXJlY3Rpb249PT0tMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5kZXNjZW5kaW5nXT1cImNvbC5zb3J0RGlyZWN0aW9uPT09MVwiIChjbGljayk9XCJvbkNvbHVtbkNhcHRpb25DbGlja0xvY2FsKGNvbClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJjb2wuY2FwdGlvbiB8IHRyYW5zbGF0ZSA6IGxhbmdcIiBbbmdTdHlsZV09XCJ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IGNvbC53aWR0aCArICdweCcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAoaGVhZGVyRmlyc3RSb3dIZWlnaHQgLSAxKSArICdweCcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogJ2ZsZXgnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsaWduSXRlbXM6ICdjZW50ZXInLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaXRlU3BhY2U6ICEhaGVhZGVyV3JhcCA/ICdpbml0aWFsJyA6ICdpbmhlcml0JyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0QWxpZ246ICdjZW50ZXInXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XCI+e3sgY29sLmNhcHRpb24gfCB0cmFuc2xhdGUgOiBsYW5nIH19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJlc2l6ZXJcIiAobW91c2Vkb3duKT1cInN0YXJ0RHJhZ2dpbmcoJGV2ZW50LCBjb2wsIGZhbHNlKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChtb3VzZXVwKT1cInN0b3BEcmFnZ2luZygkZXZlbnQsIGNvbCwgZmFsc2UpXCIgKG1vdXNlbW92ZSk9XCJtb3ZlRXZlbnQoJGV2ZW50LCBjb2wpXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgQGlmIChzaG93VG9vbHMgJiYgdmlzaWJsZUNvbHVtbnM/Lmxlbmd0aCkge1xyXG4gICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwiY2hlY2stY29sLWhlYWRlciBjaGVjay1jZWxsXCIgW25nU3R5bGVdPVwie1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6ICcjNjY2NjY2JyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6ICd3aGl0ZSdcclxuICAgICAgICAgICAgICAgICAgICB9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT1cIndpZHRoOiAxMDBweDtcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgIEBpZiAoc2VhcmNoQWN0aXZlKSB7XHJcbiAgICAgICAgICAgIDx0ciBkYXRhLXJvdz1cIjJcIiBbY2xhc3MuaGlkZW5dPVwiISEhc2VhcmNoQWN0aXZlXCI+XHJcbiAgICAgICAgICAgICAgICBAZm9yIChjb2wgb2YgdmlzaWJsZUNvbHVtbnM7IHRyYWNrIGNvbCkge1xyXG4gICAgICAgICAgICAgICAgPHRoIFtjbGFzcy5mcm96ZW4tY29sXT1cIiRpbmRleCA8IGZyb3plblwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3N0eWxlXT1cIiRpbmRleCA8IGZyb3plbiA/ICdsZWZ0OiAnICsgZnJvemVuTGVmdHNbJGluZGV4XSArICdweCcgOiAnJ1wiIFtuZ1N0eWxlXT1cIntcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6ICcjNjY2NjY2JyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogJ3doaXRlJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIEBpZiAoIWNvbC5oaWRlU2VhcmNoQm94KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBbc3R5bGVdPVwiJ3dpZHRoOiAnICsgY29sLndpZHRoICsgJ3B4OydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2wgc2VhcmNoXCIgWyhuZ01vZGVsKV09XCJzZWFyY2hPYmplY3RbJGluZGV4XS5zZWFyY2hGb3JcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25TZWFyY2goJGV2ZW50LCAkaW5kZXgpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgPC90aD5cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIDx0aCBbbmdTdHlsZV09XCJ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogJyM2NjY2NjYnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogJ3doaXRlJ1xyXG4gICAgICAgICAgICAgICAgICAgIH1cIj48L3RoPlxyXG4gICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgPC90aGVhZD5cclxuXHJcbiAgICAgICAgPHRib2R5IFtjbGFzcy5sb2FkaW5nXT1cImxvYWRpbmdcIj5cclxuICAgICAgICAgICAgPGNvcmUtbG9hZGluZy1zdXJmYWNlIFtsb2FkaW5nXT1cImxvYWRpbmdcIiBbaGVpZ2h0XT1cInRib2R5aGVpZ2h0IHx8IDUwMFwiPjwvY29yZS1sb2FkaW5nLXN1cmZhY2U+XHJcblxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgQGlmICghIWxhenlMb2FkaW5nKSB7XHJcbiAgICAgICAgICAgICAgICA8dHIgW25nU3R5bGVdPVwieyBoZWlnaHQ6IGhpZGRlblRvcEhlaWdodCArICdweCcgfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBbbmdTdHlsZV09XCJ7IGhlaWdodDogaGlkZGVuVG9wSGVpZ2h0ICsgJ3B4JyB9XCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgQGZvciAocm93IG9mIHZpc2libGVEYXRhOyB0cmFjayByb3cpIHtcclxuICAgICAgICAgICAgICAgIDx0ciAoY2xpY2spPVwib25DbGlja0xvY2FsKHJvdywgJGV2ZW50KVwiICh0b3VjaGVuZCk9XCJvblJvd1RvdWNoZW5kKCRpbmRleCtzdGFydE5vZGUpXCJcclxuICAgICAgICAgICAgICAgICAgICBbY2xhc3MuYWN0aXZlXT1cInJvdy5pZCA9PT0gYWN0aXZlUm93ICYmICEhIWRpc2FibGVIaWdobGlnaHRPbkNsaWNrXCI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cInJvdy1pdGVtLXRvb2xzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3ctaXRlbS10b29sXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93LWl0ZW0tdG9vbC13cmFwcGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNvcmUtYnV0dG9uLWdyb3VwLXZucyBbc2hvd25JdGVtc109XCJpbmxpbmVUb29sSXRlbXNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYnV0dG9uQ2xpY2spPVwib25JbmxpbmVUb29sQ2xpY2soJGV2ZW50LCByb3cpXCI+PC9jb3JlLWJ1dHRvbi1ncm91cC12bnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+IC0tPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICBAaWYgKHNob3dDaGVja2JveCkge1xyXG4gICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cImNoZWNrLWNlbGwgZnJvemVuLWNvbFwiIHN0eWxlPVwibGVmdDogMHB4O1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJjaGVja3dyYXBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBjbGFzcz1cImNoZWNrLXJvd1wiIFtpZF09XCInY2hlY2stcm93JyArICgkaW5kZXggKyBzdGFydE5vZGUpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImNoZWNraW5nTW9kZWxbJGluZGV4K3N0YXJ0Tm9kZV1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uQ2hlY2tpbmdOZ01vZGVsQ2hhbmdlKClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hlY2ttYXJrXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICBAZm9yIChjb2wgb2YgdmlzaWJsZUNvbHVtbnM7IHRyYWNrIGNvbCkge1xyXG4gICAgICAgICAgICAgICAgICAgIDx0ZCBbY2xhc3MuZnJvemVuLWNvbF09XCIkaW5kZXggPCBmcm96ZW5cIiBbbmdTdHlsZV09XCJ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlZnQ6ICRpbmRleCA8IGZyb3plbiA/IGZyb3plbkxlZnRzWyRpbmRleF0gKyAncHgnIDogJzBweCcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6ICEhbm9QYWRkaW5nQ2VsbCA/ICcwcHggMHB4JyA6ICcycHggMHB4J1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cIj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoIWNvbD8udGVtcGxhdGVSZWYpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBJTiBNT1NUIENBU0VTIFdFIE5FRUQgVE8gUkVOREVSIFRIRSBDRUxMIFdJVEggUFJJTUlUSVZFIFRZUEUgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgW2NsYXNzLnNjcm9sbC15XT1cImFsbG93Q2VsbFNjcm9sbFlcIiBbbmdTdHlsZV09XCJ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogISFjb2wud2lkdGggPyBjb2wud2lkdGggKyAncHgnIDogJ3Vuc2V0JyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHRBbGlnbjogISFjb2wuYWxpZ24gPyBjb2wuYWxpZ24udG9Mb3dlckNhc2UoKSA6ICd1bnNldCcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lSGVpZ2h0OiByb3dIZWlnaHQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiAhIW5vUGFkZGluZ0NlbGwgPyAnMHB4IDBweCcgOiAnMHB4IDEycHgnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cIiBbYXBwVG9vbHRpcF09XCJyb3dbY29sLmZpZWxkXSB8IHRhYmxlQ2VsbDogY29sLnBpcGUgOiBsYW5nXCI+e3tcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd1tjb2wuZmllbGRdIHwgdGFibGVDZWxsOiBjb2wucGlwZSA6IGxhbmcgfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tIEJVVCBTT01FIFRJTUUgV0UgTkVFRCBUTyBSRU5ERVIgVEhFIENFTEwgV0lUSCBURU1QTEFURSAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBbbmdTdHlsZV09XCJ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogISFjb2wud2lkdGggPyBjb2wud2lkdGggKyAncHgnIDogJ3Vuc2V0JyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHRBbGlnbjogISFjb2wuYWxpZ24gPyBjb2wuYWxpZ24udG9Mb3dlckNhc2UoKSA6ICd1bnNldCcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiAhIW5vUGFkZGluZ0NlbGwgPyAnMHB4IDBweCcgOiAnMHB4IDEycHgnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoIWNvbD8udGVtcGxhdGVSZWZBbGxvd0VkaXRPblJvd0FjdGl2ZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cImNvbD8udGVtcGxhdGVSZWYhOyBjb250ZXh0OiB7IGNvbnRleHQ6IHJvdyB9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IEBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cImNvbD8udGVtcGxhdGVSZWYhOyBjb250ZXh0OiB7IGNvbnRleHQ6IHJvdywgYWxsb3dFZGl0OiByb3cuaWQgPT09IGFjdGl2ZVJvdyB9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgQGlmIChzaG93VG9vbHMpIHtcclxuICAgICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0b29scy1ncm91cCBkLWZsZXgtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAZm9yICh0b29sIG9mIHRvb2xzOyB0cmFjayB0b29sKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFtjbGFzc109XCIndG9vbHMtaWNvbiAnICsgdG9vbC5jbGFzc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmRpc2FibGVkXT1cInRvb2wuZGlzYWJsZWRGbiA/IHRvb2wuZGlzYWJsZWRGbiEocm93KSA6IGZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuaGlkZGVuXT1cInRvb2wuaGlkZGVuRm4gPyB0b29sLmhpZGRlbkZuIShyb3cpIDogZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvblRvb2xDbGlja0xvY2FsKHJvdywgJGluZGV4KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICBAaWYgKCEhbGF6eUxvYWRpbmcpIHtcclxuICAgICAgICAgICAgICAgIDx0ciBbbmdTdHlsZV09XCJ7XHJcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBoaWRkZW5Cb3R0b21IZWlnaHQgKyAncHgnXHJcbiAgICAgICAgICAgICAgICB9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFtuZ1N0eWxlXT1cIntcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IGhpZGRlbkJvdHRvbUhlaWdodCArICdweCdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgPC90Ym9keT5cclxuICAgICAgICBAaWYgKCEhZm9vdGVyKSB7XHJcbiAgICAgICAgPHRmb290PlxyXG4gICAgICAgICAgICBGb290ZXJcclxuICAgICAgICA8L3Rmb290PlxyXG4gICAgICAgIH1cclxuICAgIDwvdGFibGU+XHJcbjwvZGl2PiJdfQ==
@@ -30,6 +30,7 @@ export class TableCellPipe {
30
30
  EnumCoreTablePipeType.DECIMAL_TO_FIX_2,
31
31
  EnumCoreTablePipeType.DECIMAL_TO_FIX_3,
32
32
  EnumCoreTablePipeType.DECIMAL_TO_FIX_5,
33
+ EnumCoreTablePipeType.UPLOADED_FILENAME_CUT_OFF
33
34
  ];
34
35
  if (!!!availableTypes.includes(pipe))
35
36
  return value;
@@ -147,6 +148,13 @@ export class TableCellPipe {
147
148
  return !!value ?
148
149
  this.mls.trans(EnumTranslateKey.UI_COMMON_BOOLEAN_TO_ACTIVE, lang) :
149
150
  this.mls.trans(EnumTranslateKey.UI_COMMON_BOOLEAN_TO_INACTIVE, lang);
151
+ case EnumCoreTablePipeType.UPLOADED_FILENAME_CUT_OFF:
152
+ if (!!value && typeof (value) === 'string' && value.length > 52) {
153
+ return value.substring(52);
154
+ }
155
+ else {
156
+ return value;
157
+ }
150
158
  default:
151
159
  return value;
152
160
  }
@@ -166,4 +174,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImpor
166
174
  standalone: true,
167
175
  }]
168
176
  }], ctorParameters: () => [{ type: i1.MultiLanguageService }] });
169
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtY2VsbC5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWhpc3RhZmYtYWxwaGEvc3JjL2xpYi9hcHAvbGlicmFyaWVzL3BpcGVzL3RhYmxlLWNlbGwucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUNwRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUM1RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUVqRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7O0FBTTFELE1BQU0sT0FBTyxhQUFhO0lBRXhCLFlBQW9CLEdBQXlCO1FBQXpCLFFBQUcsR0FBSCxHQUFHLENBQXNCO0lBQzdDLENBQUM7SUFFRCxTQUFTLENBQUMsS0FBVSxFQUFFLElBQXdCLEVBQUUsSUFBWTtRQUUxRCxJQUFJLEtBQUssS0FBSyxJQUFJLElBQUksS0FBSyxLQUFLLFNBQVMsSUFBSSxLQUFLLEtBQUssRUFBRTtZQUFFLE9BQU8sS0FBSyxDQUFDO1FBQ3hFLElBQUksSUFBSSxLQUFLLFNBQVM7WUFBRSxPQUFPLEtBQUssQ0FBQztRQUVyQyxNQUFNLGNBQWMsR0FBYTtZQUMvQixxQkFBcUIsQ0FBQyxTQUFTO1lBQy9CLHFCQUFxQixDQUFDLGNBQWM7WUFDcEMscUJBQXFCLENBQUMsSUFBSTtZQUMxQixxQkFBcUIsQ0FBQyxNQUFNO1lBQzVCLHFCQUFxQixDQUFDLFNBQVM7WUFDL0IscUJBQXFCLENBQUMsU0FBUztZQUMvQixxQkFBcUIsQ0FBQyxxQkFBcUI7WUFDM0MscUJBQXFCLENBQUMsaUJBQWlCO1lBQ3ZDLHFCQUFxQixDQUFDLHNCQUFzQjtZQUM1QyxxQkFBcUIsQ0FBQywwQkFBMEI7WUFDaEQscUJBQXFCLENBQUMsU0FBUztZ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QkFBcUIsQ0FBQyxzQkFBc0I7b0JBQy9DLE9BQU8sQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO3dCQUNkLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLGdCQUFnQixDQUFDLHlCQUF5QixFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7d0JBQ2xFLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLGdCQUFnQixDQUFDLDRCQUE0QixFQUFFLElBQUksQ0FBQyxDQUFDO2dCQUN4RSxLQUFLLHFCQUFxQixDQUFDLDBCQUEwQjtvQkFDbkQsT0FBTyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7d0JBQ2QsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsMkJBQTJCLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQzt3QkFDcEUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsNkJBQTZCLEVBQUUsSUFBSSxDQUFDLENBQUM7Z0JBQ3pFO29CQUNFLE9BQU8sS0FBSyxDQUFDO2FBQ2hCO1NBQ0Y7UUFBQyxPQUFPLENBQUMsRUFBRTtZQUNWLE9BQU8sQ0FBQyxLQUFLLENBQUMsaUNBQWlDLEVBQUUsS0FBSyxFQUFFLE9BQU8sS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFBO1lBQ3hFLE9BQU8sS0FBSyxDQUFDO1NBQ2Q7SUFDSCxDQUFDOzhHQTVKVSxhQUFhOzRHQUFiLGFBQWE7OzJGQUFiLGFBQWE7a0JBSnpCLElBQUk7bUJBQUM7b0JBQ0osSUFBSSxFQUFFLFdBQVc7b0JBQ2pCLFVBQVUsRUFBRSxJQUFJO2lCQUNqQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBpcGUsIFBpcGVUcmFuc2Zvcm0gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRW51bUNvcmVUYWJsZVBpcGVUeXBlIH0gZnJvbSAnLi4vY29yZS10YWJsZS9FbnVtQ29yZVRhYmxlUGlwZVR5cGUnO1xyXG5pbXBvcnQgeyBub3JtYWxpemVIdW1hbk5hbWUgfSBmcm9tICcuL25vcm1hbGl6ZS1odW1hbi1uYW1lLnBpcGUnO1xyXG5pbXBvcnQgeyBNdWx0aUxhbmd1YWdlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL211bHRpLWxhbmd1YWdlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBFbnVtVHJhbnNsYXRlS2V5IH0gZnJvbSBcImFscGhhLWdsb2JhbC1jb25zdGFudHNcIjtcclxuXHJcbkBQaXBlKHtcclxuICBuYW1lOiAndGFibGVDZWxsJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgVGFibGVDZWxsUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIG1sczogTXVsdGlMYW5ndWFnZVNlcnZpY2UpIHtcclxuICB9XHJcblxyXG4gIHRyYW5zZm9ybSh2YWx1ZTogYW55LCBwaXBlOiBzdHJpbmcgfCB1bmRlZmluZWQsIGxhbmc6IHN0cmluZyk6IGFueSB7XHJcblxyXG4gICAgaWYgKHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSB1bmRlZmluZWQgfHwgdmFsdWUgPT09ICcnKSByZXR1cm4gdmFsdWU7XHJcbiAgICBpZiAocGlwZSA9PT0gdW5kZWZpbmVkKSByZXR1cm4gdmFsdWU7XHJcblxyXG4gICAgY29uc3QgYXZhaWxhYmxlVHlwZXM6IHN0cmluZ1tdID0gW1xyXG4gICAgICBFbnVtQ29yZVRhYmxlUGlwZVR5cGUuVFJBTlNMQVRFLFxyXG4gICAgICBFbnVtQ29yZVRhYmxlUGlwZVR5cGUuQkVBVVRJRlVMX0pTT04sXHJcbiAgICAgIEVudW1Db3JlVGFibGVQaXBlVHlwZS5EQVRFLFxyXG4gICAgICBFbnVtQ29yZVRhYmxlUGlwZVR5cGUuTlVNQkVSLFxyXG4gICAgICBFbnVtQ29yZVRhYmxlUGlwZVR5cGUuREFURV9USU1FLFxyXG4gICAgICBFbnVtQ29yZVRhYmxlUGlwZVR5cGUuVElNRV9ISE1NLFxyXG4gICAgICBFbnVtQ29yZVRhYmxlUGlwZVR5cGUuQk9PTEVBTl9UT19UUlVFX0ZBTFNFLFxyXG4gICAgICBFbnVtQ29yZVRhYmxlUGlwZVR5cGUuQk9PTEVBTl9UT19ZRVNfTk8sXHJcbiAgICAgIEVudW1Db3JlVGFibGVQaXBlVHlwZS5CT09MRUFOX1RPX0RPTkVfTk9UWUVULFxyXG4gICAgICBFbnVtQ29yZVRhYmxlUGlwZVR5cGUuQk9PTEVBTl9UT19BQ1RJVkVfSU5BQ1RJVkUsXHJcbiAgICAgIEVudW1Db3JlVGFibGVQaXBlVHlwZS5MT1dFUkNBU0UsXHJcbiAgICAgIEVudW1Db3JlVGFibGVQaXBlVHlwZS5VUFBFUkNBU0UsXHJcbiAgICAgIEVudW1Db3JlVGFibGVQaXBlVHlwZS5OT1JNQUxJWkVfSFVNQU5fTkFNRSxcclxuICAgICAgRW51bUNvcmVUYWJsZVBpcGVUeXBlLkRFQ0lNQUxfVE9fRklYXzIsXHJcbiAgICAgIEVudW1Db3JlVGFibGVQaXBlVHlwZS5ERUNJTUFMX1RPX0ZJWF8zLFxyXG4gICAgICBFbnVtQ29yZVRhYmxlUGlwZVR5cGUuREVDSU1BTF9UT19GSVhfNSxcclxuICAgIF07XHJcblxyXG4gICAgaWYgKCEhIWF2YWlsYWJsZVR5cGVzLmluY2x1ZGVzKHBpcGUpKSByZXR1cm4gdmFsdWU7XHJcblxyXG4gICAgbGV0IHksIG0sIGQsIGhoLCBtbSwgc3M7XHJcbiAgICAvLyBHZXQgbWludXRlcyBkaWZmZXJlbnQgYmV0d2VlbiBsb2NhbCBkYXRlIGFuZCBVVEMgdGltZSB6b25lXHJcbiAgICBjb25zdCBvZmZzZXQgPSAobmV3IERhdGUoKSkuZ2V0VGltZXpvbmVPZmZzZXQoKTtcclxuICAgIHRyeSB7XHJcblxyXG4gICAgICBzd2l0Y2ggKHBpcGUhKSB7XHJcbiAgICAgICAgY2FzZSBFbnVtQ29yZVRhYmxlUGlwZVR5cGUuVFJBTlNMQVRFOlxyXG4gICAgICAgICAgcmV0dXJuIHRoaXMubWxzLnRyYW5zKHZhbHVlLCBsYW5nKTtcclxuICAgICAgICBjYXNlIEVudW1Db3JlVGFibGVQaXBlVHlwZS5CRUFVVElGVUxfSlNPTjpcclxuICAgICAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeShKU09OLnBhcnNlKHZhbHVlKSwgbnVsbCwgMik7XHJcbiAgICAgICAgY2FzZSBFbnVtQ29yZVRhYmxlUGlwZVR5cGUuTE9XRVJDQVNFOlxyXG4gICAgICAgICAgcmV0dXJuIHZhbHVlLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKTtcclxuICAgICAgICBjYXNlIEVudW1Db3JlVGFibGVQaXBlVHlwZS5VUFBFUkNBU0U6XHJcbiAgICAgICAgICByZXR1cm4gdmFsdWUudG9TdHJpbmcoKS50b1VwcGVyQ2FzZSgpO1xyXG4gICAgICAgIGNhc2UgRW51bUNvcmVUYWJsZVBpcGVUeXBlLk5PUk1BTElaRV9IVU1BTl9OQU1FOlxyXG4gICAgICAgICAgcmV0dXJuIG5vcm1hbGl6ZUh1bWFuTmFtZSh2YWx1ZSk7XHJcbiAgICAgICAgY2FzZSBFbnVtQ29yZVRhYmxlUGlwZVR5cGUuTlVNQkVSOlxyXG4gICAgICAgICAgdmFsdWUgPSBuZXcgSW50bC5OdW1iZXJGb3JtYXQoJ2VuLVVTJywgeyBtYXhpbXVtU2lnbmlmaWNhbnREaWdpdHM6ICh2YWx1ZSkubGVuZ3RoIH0pLmZvcm1hdCh2YWx1ZSk7XHJcbiAgICAgICAgICByZXR1cm4gdmFsdWU7XHJcbiAgICAgICAgY2FzZSBFbnVtQ29yZVRhYmxlUGlwZVR5cGUuREVDSU1BTF9UT19GSVhfMjpcclxuICAgICAgICAgIHJldHVybiB2YWx1ZS50b0ZpeGVkKDIpO1xyXG4gICAgICAgIGNhc2UgRW51bUNvcmVUYWJsZVBpcGVUeXBlLkRFQ0lNQUxfVE9fRklYXzM6XHJcbiAgICAgICAgICByZXR1cm4gdmFsdWUudG9GaXhlZCgzKTtcclxuICAgICAgICBjYXNlIEVudW1Db3JlVGFibGVQaXBlVHlwZS5ERUNJTUFMX1RPX0ZJWF81OlxyXG4gICAgICAgICAgcmV0dXJuIHZhbHVlLnRvRml4ZWQoNSk7XHJcbiAgICAgICAgY2FzZSBFbnVtQ29yZVRhYmxlUGlwZVR5cGUuREFURTpcclxuXHJcbiAgICAgICAgICAvKiBDb252ZXJ0IGZyb20gVVRDIHRvIGxvY2FsIGRhdGUgKi9cclxuICAgICAgICAgIGNvbnN0IG9yaWdpbmFsVmFsdWUgPSBuZXcgRGF0ZSh2YWx1ZSk7XHJcbiAgICAgICAgICBjb25zdCBsb2NhbCA9IG5ldyBEYXRlKG9yaWdpbmFsVmFsdWUuZ2V0VGltZSgpIC0gb2Zmc2V0ICogNjAwMDApO1xyXG4gICAgICAgICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cclxuXHJcbiAgICAgICAgICB5ID0gbG9jYWw/LmdldEZ1bGxZZWFyKCk7XHJcbiAgICAgICAgICBtID0gbG9jYWw/LmdldE1vbnRoKCkgKyAxO1xyXG4gICAgICAgICAgZCA9IGxvY2FsPy5nZXREYXRlKCk7XHJcblxyXG4gICAgICAgICAgc3dpdGNoIChsYW5nKSB7XHJcbiAgICAgICAgICAgIGNhc2UgJ3ZpJzpcclxuICAgICAgICAgICAgICBtID0gTnVtYmVyKG0pIDwgMTAgPyAnMCcgKyBtIDogbTtcclxuICAgICAgICAgICAgICBkID0gTnVtYmVyKGQpIDwgMTAgPyAnMCcgKyBkIDogZDtcclxuICAgICAgICAgICAgICBpZiAodHlwZW9mIGxvY2FsPy5nZXRGdWxsWWVhciA9PT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGAke2R9LyR7bX0vJHt5fWA7XHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNhc2UgJ2VuJzpcclxuICAgICAgICAgICAgICBpZiAodHlwZW9mIGxvY2FsPy5nZXRGdWxsWWVhciA9PT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGAke219LyR7ZH0vJHt5fWA7XHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIGNhc2UgRW51bUNvcmVUYWJsZVBpcGVUeXBlLkRBVEVfVElNRTpcclxuXHJcbiAgICAgICAgICAvLyBDb252ZXJ0IGZyb20gVVRDIHRvIGxvY2FsIGRhdGV0bWVcclxuICAgICAgICAgIGNvbnN0IG9yaWdpbmFsRGF0ZTogRGF0ZSA9IG5ldyBEYXRlKHZhbHVlKTtcclxuICAgICAgICAgIGNvbnN0IGRhdGVWYWx1ZSA9IG5ldyBEYXRlKG9yaWdpbmFsRGF0ZS5nZXRUaW1lKCkgLSBvZmZzZXQgKiA2MDAwMCk7XHJcbiAgICAgICAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xyXG5cclxuICAgICAgICAgIHkgPSBkYXRlVmFsdWU/LmdldEZ1bGxZZWFyKCk7XHJcbiAgICAgICAgICBtID0gZGF0ZVZhbHVlPy5nZXRNb250aCgpICsgMTtcclxuICAgICAgICAgIGQgPSBkYXRlVmFsdWU/LmdldERhdGUoKTtcclxuICAgICAgICAgIGhoID0gZGF0ZVZhbHVlPy5nZXRIb3VycygpO1xyXG4gICAgICAgICAgbW0gPSBkYXRlVmFsdWU/LmdldE1pbnV0ZXMoKTtcclxuICAgICAgICAgIHNzID0gZGF0ZVZhbHVlPy5nZXRTZWNvbmRzKCk7XHJcbiAgICAgICAgICBoaCA9IE51bWJlcihoaCkgPCAxMCA/ICcwJyArIGhoIDogaGg7XHJcbiAgICAgICAgICBtbSA9IE51bWJlcihtbSkgPCAxMCA/ICcwJyArIG1tIDogbW07XHJcbiAgICAgICAgICBzcyA9IE51bWJlcihzcykgPCAxMCA/ICcwJyArIHNzIDogc3M7XHJcblxyXG4gICAgICAgICAgc3dpdGNoIChsYW5nKSB7XHJcbiAgICAgICAgICAgIGNhc2UgJ3ZpJzpcclxuICAgICAgICAgICAgICBtID0gTnVtYmVyKG0pIDwgMTAgPyAnMCcgKyBtIDogbTtcclxuICAgICAgICAgICAgICBkID0gTnVtYmVyKGQpIDwgMTAgPyAnMCcgKyBkIDogZDtcclxuICAgICAgICAgICAgICBpZiAodHlwZW9mIGRhdGVWYWx1ZT8uZ2V0RnVsbFllYXIgPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBgJHtkfS8ke219LyR7eX0gJHtoaH06JHttbX06JHtzc31gO1xyXG4gICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWU7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjYXNlICdlbic6XHJcbiAgICAgICAgICAgICAgaWYgKHR5cGVvZiBkYXRlVmFsdWU/LmdldEZ1bGxZZWFyID09PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gYCR7bX0vJHtkfS8ke3l9ICR7aGh9OiR7bW19OiR7c3N9YDtcclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICByZXR1cm4gdmFsdWU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgY2FzZSBFbnVtQ29yZVRhYmxlUGlwZVR5cGUuVElNRV9ISE1NOlxyXG4gICAgICAgICAgdmFsdWUgPSBuZXcgRGF0ZSh2YWx1ZSk7XHJcbiAgICAgICAgICBoaCA9IHZhbHVlPy5nZXRIb3VycygpO1xyXG4gICAgICAgICAgbW0gPSB2YWx1ZT8uZ2V0TWludXRlcygpO1xyXG4gICAgICAgICAgaGggPSBOdW1iZXIoaGgpIDwgMTAgPyAnMCcgKyBoaCA6IGhoO1xyXG4gICAgICAgICAgbW0gPSBOdW1iZXIobW0pIDwgMTAgPyAnMCcgKyBtbSA6IG1tO1xyXG4gICAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZT8uZ2V0RnVsbFllYXIgPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGAke2hofToke21tfWA7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICByZXR1cm4gdmFsdWU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgY2FzZSBFbnVtQ29yZVRhYmxlUGlwZVR5cGUuQk9PTEVBTl9UT19UUlVFX0ZBTFNFOlxyXG4gICAgICAgICAgcmV0dXJuICEhdmFsdWUgP1xyXG4gICAgICAgICAgICB0aGlzLm1scy50cmFucyhFbnVtVHJhbnNsYXRlS2V5LlVJX0NPTU1PTl9CT09MRUFOX1RPX1RSVUUsIGxhbmcpIDpcclxuICAgICAgICAgICAgdGhpcy5tbHMudHJhbnMoRW51bVRyYW5zbGF0ZUtleS5VSV9DT01NT05fQk9PTEVBTl9UT19GQUxTRSwgbGFuZyk7XHJcblxyXG4gICAgICAgIGNhc2UgRW51bUNvcmVUYWJsZVBpcGVUeXBlLkJPT0xFQU5fVE9fWUVTX05POlxyXG4gICAgICAgICAgcmV0dXJuICEhdmFsdWUgP1xyXG4gICAgICAgICAgICB0aGlzLm1scy50cmFucyhFbnVtVHJhbnNsYXRlS2V5LlVJX0NPTU1PTl9CT09MRUFOX1RPX1lFUywgbGFuZykgOlxyXG4gICAgICAgICAgICB0aGlzLm1scy50cmFucyhFbnVtVHJhbnNsYXRlS2V5LlVJX0NPTU1PTl9CT09MRUFOX1RPX05PLCBsYW5nKTtcclxuXHJcbiAgICAgICAgY2FzZSBFbnVtQ29yZVRhYmxlUGlwZVR5cGUuQk9PTEVBTl9UT19ET05FX05PVFlFVDpcclxuICAgICAgICAgIHJldHVybiAhIXZhbHVlID9cclxuICAgICAgICAgICAgdGhpcy5tbHMudHJhbnMoRW51bVRyYW5zbGF0ZUtleS5VSV9DT01NT05fQk9PTEVBTl9UT19ET05FLCBsYW5nKSA6XHJcbiAgICAgICAgICAgIHRoaXMubWxzLnRyYW5zKEVudW1UcmFuc2xhdGVLZXkuVUlfQ09NTU9OX0JPT0xFQU5fVE9fTk9UX1lFVCwgbGFuZyk7XHJcbiAgICAgICAgY2FzZSBFbnVtQ29yZVRhYmxlUGlwZVR5cGUuQk9PTEVBTl9UT19BQ1RJVkVfSU5BQ1RJVkU6XHJcbiAgICAgICAgICByZXR1cm4gISF2YWx1ZSA/XHJcbiAgICAgICAgICAgIHRoaXMubWxzLnRyYW5zKEVudW1UcmFuc2xhdGVLZXkuVUlfQ09NTU9OX0JPT0xFQU5fVE9fQUNUSVZFLCBsYW5nKSA6XHJcbiAgICAgICAgICAgIHRoaXMubWxzLnRyYW5zKEVudW1UcmFuc2xhdGVLZXkuVUlfQ09NTU9OX0JPT0xFQU5fVE9fSU5BQ1RJVkUsIGxhbmcpO1xyXG4gICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICByZXR1cm4gdmFsdWU7XHJcbiAgICAgIH1cclxuICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgY29uc29sZS5lcnJvcihcIkVycm9yIHByb2Nlc3NpbmcgdGFibGVQaXBlIGZvciBcIiwgdmFsdWUsIHR5cGVvZiB2YWx1ZSwgZSlcclxuICAgICAgcmV0dXJuIHZhbHVlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbn1cclxuIl19
177
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtY2VsbC5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWhpc3RhZmYtYWxwaGEvc3JjL2xpYi9hcHAvbGlicmFyaWVzL3BpcGVzL3RhYmxlLWNlbGwucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUNwRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUM1RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUVqRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7O0FBTTFELE1BQU0sT0FBTyxhQUFhO0lBRXhCLFlBQW9CLEdBQXlCO1FBQXpCLFFBQUcsR0FBSCxHQUFHLENBQXNCO0lBQzdDLENBQUM7SUFFRCxTQUFTLENBQUMsS0FBVSxFQUFFLElBQXdCLEVBQUUsSUFBWTtRQUUxRCxJQUFJLEtBQUssS0FBSyxJQUFJLElBQUksS0FBSyxLQUFLLFNBQVMsSUFBSSxLQUFLLEtBQUssRUFBRTtZQUFFLE9BQU8sS0FBSyxDQUFDO1FBQ3hFLElBQUksSUFBSSxLQUFLLFNBQVM7WUFBRSxPQUFPLEtBQUssQ0FBQztRQUVyQyxNQUFNLGNBQWMsR0FBYTtZQUMvQixxQkFBcUIsQ0FBQyxTQUFTO1lBQy9CLHFCQUFxQixDQUFDLGNBQWM7WUFDcEMscUJBQXFCLENBQUMsSUFBSTtZQUMxQixxQkFBcUIsQ0FBQyxNQUFNO1lBQzVCLHFCQUFxQixDQUFDLFNBQVM7WUFDL0IscUJBQXFCLENBQUMsU0FBUztZQUMvQixxQkFBcUIsQ0FBQyxxQkFBcUI7WUFDM0MscUJBQXFCLENBQUMsaUJBQWlCO1lBQ3ZDLHFCQUFxQixDQUFDLHNCQUFzQjtZQUM1QyxxQkFBcUIsQ0FBQywwQkFBMEI7WUFDaEQscUJBQXFCLENBQUMsU0FBUztZ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QkFDSixJQUFJLEVBQUUsV0FBVztvQkFDakIsVUFBVSxFQUFFLElBQUk7aUJBQ2pCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGlwZSwgUGlwZVRyYW5zZm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBFbnVtQ29yZVRhYmxlUGlwZVR5cGUgfSBmcm9tICcuLi9jb3JlLXRhYmxlL0VudW1Db3JlVGFibGVQaXBlVHlwZSc7XHJcbmltcG9ydCB7IG5vcm1hbGl6ZUh1bWFuTmFtZSB9IGZyb20gJy4vbm9ybWFsaXplLWh1bWFuLW5hbWUucGlwZSc7XHJcbmltcG9ydCB7IE11bHRpTGFuZ3VhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvbXVsdGktbGFuZ3VhZ2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IEVudW1UcmFuc2xhdGVLZXkgfSBmcm9tIFwiYWxwaGEtZ2xvYmFsLWNvbnN0YW50c1wiO1xyXG5cclxuQFBpcGUoe1xyXG4gIG5hbWU6ICd0YWJsZUNlbGwnLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUYWJsZUNlbGxQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgbWxzOiBNdWx0aUxhbmd1YWdlU2VydmljZSkge1xyXG4gIH1cclxuXHJcbiAgdHJhbnNmb3JtKHZhbHVlOiBhbnksIHBpcGU6IHN0cmluZyB8IHVuZGVmaW5lZCwgbGFuZzogc3RyaW5nKTogYW55IHtcclxuXHJcbiAgICBpZiAodmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHVuZGVmaW5lZCB8fCB2YWx1ZSA9PT0gJycpIHJldHVybiB2YWx1ZTtcclxuICAgIGlmIChwaXBlID09PSB1bmRlZmluZWQpIHJldHVybiB2YWx1ZTtcclxuXHJcbiAgICBjb25zdCBhdmFpbGFibGVUeXBlczogc3RyaW5nW10gPSBbXHJcbiAgICAgIEVudW1Db3JlVGFibGVQaXBlVHlwZS5UUkFOU0xBVEUsXHJcbiAgICAgIEVudW1Db3JlVGFibGVQaXBlVHlwZS5CRUFVVElGVUxfSlNPTixcclxuICAgICAgRW51bUNvcmVUYWJsZVBpcGVUeXBlLkRBVEUsXHJcbiAgICAgIEVudW1Db3JlVGFibGVQaXBlVHlwZS5OVU1CRVIsXHJcbiAgICAgIEVudW1Db3JlVGFibGVQaXBlVHlwZS5EQVRFX1RJTUUsXHJcbiAgICAgIEVudW1Db3JlVGFibGVQaXBlVHlwZS5USU1FX0hITU0sXHJcbiAgICAgIEVudW1Db3JlVGFibGVQaXBlVHlwZS5CT09MRUFOX1RPX1RSVUVfRkFMU0UsXHJcbiAgICAgIEVudW1Db3JlVGFibGVQaXBlVHlwZS5CT09MRUFOX1RPX1lFU19OTyxcclxuICAgICAgRW51bUNvcmVUYWJsZVBpcGVUeXBlLkJPT0xFQU5fVE9fRE9ORV9OT1RZRVQsXHJcbiAgICAgIEVudW1Db3JlVGFibGVQaXBlVHlwZS5CT09MRUFOX1RPX0FDVElWRV9JTkFDVElWRSxcclxuICAgICAgRW51bUNvcmVUYWJsZVBpcGVUeXBlLkxPV0VSQ0FTRSxcclxuICAgICAgRW51bUNvcmVUYWJsZVBpcGVUeXBlLlVQUEVSQ0FTRSxcclxuICAgICAgRW51bUNvcmVUYWJsZVBpcGVUeXBlLk5PUk1BTElaRV9IVU1BTl9OQU1FLFxyXG4gICAgICBFbnVtQ29yZVRhYmxlUGlwZVR5cGUuREVDSU1BTF9UT19GSVhfMixcclxuICAgICAgRW51bUNvcmVUYWJsZVBpcGVUeXBlLkRFQ0lNQUxfVE9fRklYXzMsXHJcbiAgICAgIEVudW1Db3JlVGFibGVQaXBlVHlwZS5ERUNJTUFMX1RPX0ZJWF81LFxyXG4gICAgICBFbnVtQ29yZVRhYmxlUGlwZVR5cGUuVVBMT0FERURfRklMRU5BTUVfQ1VUX09GRlxyXG4gICAgXTtcclxuXHJcbiAgICBpZiAoISEhYXZhaWxhYmxlVHlwZXMuaW5jbHVkZXMocGlwZSkpIHJldHVybiB2YWx1ZTtcclxuXHJcbiAgICBsZXQgeSwgbSwgZCwgaGgsIG1tLCBzcztcclxuICAgIC8vIEdldCBtaW51dGVzIGRpZmZlcmVudCBiZXR3ZWVuIGxvY2FsIGRhdGUgYW5kIFVUQyB0aW1lIHpvbmVcclxuICAgIGNvbnN0IG9mZnNldCA9IChuZXcgRGF0ZSgpKS5nZXRUaW1lem9uZU9mZnNldCgpO1xyXG4gICAgdHJ5IHtcclxuXHJcbiAgICAgIHN3aXRjaCAocGlwZSEpIHtcclxuICAgICAgICBjYXNlIEVudW1Db3JlVGFibGVQaXBlVHlwZS5UUkFOU0xBVEU6XHJcbiAgICAgICAgICByZXR1cm4gdGhpcy5tbHMudHJhbnModmFsdWUsIGxhbmcpO1xyXG4gICAgICAgIGNhc2UgRW51bUNvcmVUYWJsZVBpcGVUeXBlLkJFQVVUSUZVTF9KU09OOlxyXG4gICAgICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KEpTT04ucGFyc2UodmFsdWUpLCBudWxsLCAyKTtcclxuICAgICAgICBjYXNlIEVudW1Db3JlVGFibGVQaXBlVHlwZS5MT1dFUkNBU0U6XHJcbiAgICAgICAgICByZXR1cm4gdmFsdWUudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpO1xyXG4gICAgICAgIGNhc2UgRW51bUNvcmVUYWJsZVBpcGVUeXBlLlVQUEVSQ0FTRTpcclxuICAgICAgICAgIHJldHVybiB2YWx1ZS50b1N0cmluZygpLnRvVXBwZXJDYXNlKCk7XHJcbiAgICAgICAgY2FzZSBFbnVtQ29yZVRhYmxlUGlwZVR5cGUuTk9STUFMSVpFX0hVTUFOX05BTUU6XHJcbiAgICAgICAgICByZXR1cm4gbm9ybWFsaXplSHVtYW5OYW1lKHZhbHVlKTtcclxuICAgICAgICBjYXNlIEVudW1Db3JlVGFibGVQaXBlVHlwZS5OVU1CRVI6XHJcbiAgICAgICAgICB2YWx1ZSA9IG5ldyBJbnRsLk51bWJlckZvcm1hdCgnZW4tVVMnLCB7IG1heGltdW1TaWduaWZpY2FudERpZ2l0czogKHZhbHVlKS5sZW5ndGggfSkuZm9ybWF0KHZhbHVlKTtcclxuICAgICAgICAgIHJldHVybiB2YWx1ZTtcclxuICAgICAgICBjYXNlIEVudW1Db3JlVGFibGVQaXBlVHlwZS5ERUNJTUFMX1RPX0ZJWF8yOlxyXG4gICAgICAgICAgcmV0dXJuIHZhbHVlLnRvRml4ZWQoMik7XHJcbiAgICAgICAgY2FzZSBFbnVtQ29yZVRhYmxlUGlwZVR5cGUuREVDSU1BTF9UT19GSVhfMzpcclxuICAgICAgICAgIHJldHVybiB2YWx1ZS50b0ZpeGVkKDMpO1xyXG4gICAgICAgIGNhc2UgRW51bUNvcmVUYWJsZVBpcGVUeXBlLkRFQ0lNQUxfVE9fRklYXzU6XHJcbiAgICAgICAgICByZXR1cm4gdmFsdWUudG9GaXhlZCg1KTtcclxuICAgICAgICBjYXNlIEVudW1Db3JlVGFibGVQaXBlVHlwZS5EQVRFOlxyXG5cclxuICAgICAgICAgIC8qIENvbnZlcnQgZnJvbSBVVEMgdG8gbG9jYWwgZGF0ZSAqL1xyXG4gICAgICAgICAgY29uc3Qgb3JpZ2luYWxWYWx1ZSA9IG5ldyBEYXRlKHZhbHVlKTtcclxuICAgICAgICAgIGNvbnN0IGxvY2FsID0gbmV3IERhdGUob3JpZ2luYWxWYWx1ZS5nZXRUaW1lKCkgLSBvZmZzZXQgKiA2MDAwMCk7XHJcbiAgICAgICAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xyXG5cclxuICAgICAgICAgIHkgPSBsb2NhbD8uZ2V0RnVsbFllYXIoKTtcclxuICAgICAgICAgIG0gPSBsb2NhbD8uZ2V0TW9udGgoKSArIDE7XHJcbiAgICAgICAgICBkID0gbG9jYWw/LmdldERhdGUoKTtcclxuXHJcbiAgICAgICAgICBzd2l0Y2ggKGxhbmcpIHtcclxuICAgICAgICAgICAgY2FzZSAndmknOlxyXG4gICAgICAgICAgICAgIG0gPSBOdW1iZXIobSkgPCAxMCA/ICcwJyArIG0gOiBtO1xyXG4gICAgICAgICAgICAgIGQgPSBOdW1iZXIoZCkgPCAxMCA/ICcwJyArIGQgOiBkO1xyXG4gICAgICAgICAgICAgIGlmICh0eXBlb2YgbG9jYWw/LmdldEZ1bGxZZWFyID09PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gYCR7ZH0vJHttfS8ke3l9YDtcclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY2FzZSAnZW4nOlxyXG4gICAgICAgICAgICAgIGlmICh0eXBlb2YgbG9jYWw/LmdldEZ1bGxZZWFyID09PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gYCR7bX0vJHtkfS8ke3l9YDtcclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICByZXR1cm4gdmFsdWU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgY2FzZSBFbnVtQ29yZVRhYmxlUGlwZVR5cGUuREFURV9USU1FOlxyXG5cclxuICAgICAgICAgIC8vIENvbnZlcnQgZnJvbSBVVEMgdG8gbG9jYWwgZGF0ZXRtZVxyXG4gICAgICAgICAgY29uc3Qgb3JpZ2luYWxEYXRlOiBEYXRlID0gbmV3IERhdGUodmFsdWUpO1xyXG4gICAgICAgICAgY29uc3QgZGF0ZVZhbHVlID0gbmV3IERhdGUob3JpZ2luYWxEYXRlLmdldFRpbWUoKSAtIG9mZnNldCAqIDYwMDAwKTtcclxuICAgICAgICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXHJcblxyXG4gICAgICAgICAgeSA9IGRhdGVWYWx1ZT8uZ2V0RnVsbFllYXIoKTtcclxuICAgICAgICAgIG0gPSBkYXRlVmFsdWU/LmdldE1vbnRoKCkgKyAxO1xyXG4gICAgICAgICAgZCA9IGRhdGVWYWx1ZT8uZ2V0RGF0ZSgpO1xyXG4gICAgICAgICAgaGggPSBkYXRlVmFsdWU/LmdldEhvdXJzKCk7XHJcbiAgICAgICAgICBtbSA9IGRhdGVWYWx1ZT8uZ2V0TWludXRlcygpO1xyXG4gICAgICAgICAgc3MgPSBkYXRlVmFsdWU/LmdldFNlY29uZHMoKTtcclxuICAgICAgICAgIGhoID0gTnVtYmVyKGhoKSA8IDEwID8gJzAnICsgaGggOiBoaDtcclxuICAgICAgICAgIG1tID0gTnVtYmVyKG1tKSA8IDEwID8gJzAnICsgbW0gOiBtbTtcclxuICAgICAgICAgIHNzID0gTnVtYmVyKHNzKSA8IDEwID8gJzAnICsgc3MgOiBzcztcclxuXHJcbiAgICAgICAgICBzd2l0Y2ggKGxhbmcpIHtcclxuICAgICAgICAgICAgY2FzZSAndmknOlxyXG4gICAgICAgICAgICAgIG0gPSBOdW1iZXIobSkgPCAxMCA/ICcwJyArIG0gOiBtO1xyXG4gICAgICAgICAgICAgIGQgPSBOdW1iZXIoZCkgPCAxMCA/ICcwJyArIGQgOiBkO1xyXG4gICAgICAgICAgICAgIGlmICh0eXBlb2YgZGF0ZVZhbHVlPy5nZXRGdWxsWWVhciA9PT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGAke2R9LyR7bX0vJHt5fSAke2hofToke21tfToke3NzfWA7XHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNhc2UgJ2VuJzpcclxuICAgICAgICAgICAgICBpZiAodHlwZW9mIGRhdGVWYWx1ZT8uZ2V0RnVsbFllYXIgPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBgJHttfS8ke2R9LyR7eX0gJHtoaH06JHttbX06JHtzc31gO1xyXG4gICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWU7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICAgIHJldHVybiB2YWx1ZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICBjYXNlIEVudW1Db3JlVGFibGVQaXBlVHlwZS5USU1FX0hITU06XHJcbiAgICAgICAgICB2YWx1ZSA9IG5ldyBEYXRlKHZhbHVlKTtcclxuICAgICAgICAgIGhoID0gdmFsdWU/LmdldEhvdXJzKCk7XHJcbiAgICAgICAgICBtbSA9IHZhbHVlPy5nZXRNaW51dGVzKCk7XHJcbiAgICAgICAgICBoaCA9IE51bWJlcihoaCkgPCAxMCA/ICcwJyArIGhoIDogaGg7XHJcbiAgICAgICAgICBtbSA9IE51bWJlcihtbSkgPCAxMCA/ICcwJyArIG1tIDogbW07XHJcbiAgICAgICAgICBpZiAodHlwZW9mIHZhbHVlPy5nZXRGdWxsWWVhciA9PT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICAgICAgICByZXR1cm4gYCR7aGh9OiR7bW19YDtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHJldHVybiB2YWx1ZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICBjYXNlIEVudW1Db3JlVGFibGVQaXBlVHlwZS5CT09MRUFOX1RPX1RSVUVfRkFMU0U6XHJcbiAgICAgICAgICByZXR1cm4gISF2YWx1ZSA/XHJcbiAgICAgICAgICAgIHRoaXMubWxzLnRyYW5zKEVudW1UcmFuc2xhdGVLZXkuVUlfQ09NTU9OX0JPT0xFQU5fVE9fVFJVRSwgbGFuZykgOlxyXG4gICAgICAgICAgICB0aGlzLm1scy50cmFucyhFbnVtVHJhbnNsYXRlS2V5LlVJX0NPTU1PTl9CT09MRUFOX1RPX0ZBTFNFLCBsYW5nKTtcclxuXHJcbiAgICAgICAgY2FzZSBFbnVtQ29yZVRhYmxlUGlwZVR5cGUuQk9PTEVBTl9UT19ZRVNfTk86XHJcbiAgICAgICAgICByZXR1cm4gISF2YWx1ZSA/XHJcbiAgICAgICAgICAgIHRoaXMubWxzLnRyYW5zKEVudW1UcmFuc2xhdGVLZXkuVUlfQ09NTU9OX0JPT0xFQU5fVE9fWUVTLCBsYW5nKSA6XHJcbiAgICAgICAgICAgIHRoaXMubWxzLnRyYW5zKEVudW1UcmFuc2xhdGVLZXkuVUlfQ09NTU9OX0JPT0xFQU5fVE9fTk8sIGxhbmcpO1xyXG5cclxuICAgICAgICBjYXNlIEVudW1Db3JlVGFibGVQaXBlVHlwZS5CT09MRUFOX1RPX0RPTkVfTk9UWUVUOlxyXG4gICAgICAgICAgcmV0dXJuICEhdmFsdWUgP1xyXG4gICAgICAgICAgICB0aGlzLm1scy50cmFucyhFbnVtVHJhbnNsYXRlS2V5LlVJX0NPTU1PTl9CT09MRUFOX1RPX0RPTkUsIGxhbmcpIDpcclxuICAgICAgICAgICAgdGhpcy5tbHMudHJhbnMoRW51bVRyYW5zbGF0ZUtleS5VSV9DT01NT05fQk9PTEVBTl9UT19OT1RfWUVULCBsYW5nKTtcclxuICAgICAgICBjYXNlIEVudW1Db3JlVGFibGVQaXBlVHlwZS5CT09MRUFOX1RPX0FDVElWRV9JTkFDVElWRTpcclxuICAgICAgICAgIHJldHVybiAhIXZhbHVlID9cclxuICAgICAgICAgICAgdGhpcy5tbHMudHJhbnMoRW51bVRyYW5zbGF0ZUtleS5VSV9DT01NT05fQk9PTEVBTl9UT19BQ1RJVkUsIGxhbmcpIDpcclxuICAgICAgICAgICAgdGhpcy5tbHMudHJhbnMoRW51bVRyYW5zbGF0ZUtleS5VSV9DT01NT05fQk9PTEVBTl9UT19JTkFDVElWRSwgbGFuZyk7XHJcbiAgICAgICAgY2FzZSBFbnVtQ29yZVRhYmxlUGlwZVR5cGUuVVBMT0FERURfRklMRU5BTUVfQ1VUX09GRjpcclxuICAgICAgICAgIGlmICghIXZhbHVlICYmIHR5cGVvZih2YWx1ZSkgPT09ICdzdHJpbmcnICYmIHZhbHVlLmxlbmd0aCA+IDUyKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB2YWx1ZS5zdWJzdHJpbmcoNTIpO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuIHZhbHVlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICByZXR1cm4gdmFsdWU7XHJcbiAgICAgIH1cclxuICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgY29uc29sZS5lcnJvcihcIkVycm9yIHByb2Nlc3NpbmcgdGFibGVQaXBlIGZvciBcIiwgdmFsdWUsIHR5cGVvZiB2YWx1ZSwgZSlcclxuICAgICAgcmV0dXJuIHZhbHVlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbn1cclxuIl19
@@ -20,6 +20,7 @@ export class AppConfigService {
20
20
  this.HANGFIRE_PATH = '/jobs';
21
21
  this.STATIC_FOLDER = 'static';
22
22
  this.AVATAR_FOLDER = 'avatars';
23
+ this.ATTACHMENT_FOLDER = 'attachments';
23
24
  }
24
25
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: AppConfigService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
25
26
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: AppConfigService, providedIn: 'root' }); }
@@ -30,4 +31,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImpor
30
31
  providedIn: 'root',
31
32
  }]
32
33
  }] });
33
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLWNvbmZpZy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWhpc3RhZmYtYWxwaGEvc3JjL2xpYi9hcHAvc2VydmljZXMvYXBwLWNvbmZpZy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBSzNDLE1BQU0sT0FBTyxnQkFBZ0I7SUFIN0I7UUFhRSxrQkFBYSxHQUFZLEtBQUssQ0FBQyxDQUFDLDBEQUEwRDtRQUUxRixlQUFVLEdBQVcsRUFBRSxDQUFDO1FBQ3hCLGdCQUFXLEdBQVcsRUFBRSxDQUFDO1FBQ3pCLDBCQUFxQixHQUFXLEVBQUUsQ0FBQztRQUVuQyx3QkFBbUIsR0FBWSxLQUFLLENBQUM7UUFDckMsMEJBQXFCLEdBQVcsRUFBRSxDQUFDO1FBQ25DLDBCQUFxQixHQUFXLEVBQUUsQ0FBQztRQUNuQyw2QkFBd0IsR0FBVyxFQUFFLENBQUM7UUFDdEMsc0JBQWlCLEdBQVcsc0JBQXNCLENBQUM7UUFFbkQsc0JBQWlCLEdBQVksSUFBSSxDQUFDO1FBQ2xDLGtCQUFhLEdBQVcsRUFBRSxDQUFDO1FBQzNCLHlCQUFvQixHQUFXLEVBQUUsQ0FBQztRQUNsQyx3QkFBbUIsR0FBVyxFQUFFLENBQUM7UUFDakMseUJBQW9CLEdBQVcsRUFBRSxDQUFDO1FBQ2xDLHFCQUFnQixHQUFXLEVBQUUsQ0FBQztRQUU5QixrQkFBYSxHQUFXLE9BQU8sQ0FBQztRQUNoQyxrQkFBYSxHQUFXLFFBQVEsQ0FBQztRQUNqQyxrQkFBYSxHQUFXLFNBQVMsQ0FBQztLQUVuQzs4R0FqQ1ksZ0JBQWdCO2tIQUFoQixnQkFBZ0IsY0FGZixNQUFNOzsyRkFFUCxnQkFBZ0I7a0JBSDVCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290JyxcclxufSlcclxuZXhwb3J0IGNsYXNzIEFwcENvbmZpZ1NlcnZpY2Uge1xyXG5cclxuICBBUFBfVFlQRSE6IHN0cmluZztcclxuXHJcbiAgQkFTRV9VUkwhOiBzdHJpbmc7XHJcbiAgQkFTRV9VUkxfRk9SX1NUQVRJU1RJQyE6IHN0cmluZztcclxuICBCQVNFX1VSTF9GT1JfQ09OVEVOVCE6IHN0cmluZzsgLy8gZm9yIG1pdWthZm90by5jb20gb25seVxyXG5cclxuXHJcbiAgR09MSVZFX1VSTCE6IHN0cmluZztcclxuICBERUJVR19FTkFCTEVEOiBib29sZWFuID0gZmFsc2U7IC8vIEhp4buDbiB0aOG7iyBt4buZdCBz4buRIGFsZXJ0IGvhu4MgY+G6oyB0cm9uZyBtw7RpIHRyxrDhu51uZyBQcm9kdWN0aW9uXHJcblxyXG4gIExPR09fTE9HSU46IHN0cmluZyA9IFwiXCI7XHJcbiAgTE9HT19IRUFERVI6IHN0cmluZyA9IFwiXCI7XHJcbiAgSE9NRV9CQUNLR1JPVU5EX0lNQUdFOiBzdHJpbmcgPSBcIlwiO1xyXG5cclxuICBPQVVUSDJfT0lEQ19FTkFCTEVEOiBib29sZWFuID0gZmFsc2U7XHJcbiAgT0FVVEgyX09JRENfQ0xJRU5UX0lEOiBzdHJpbmcgPSBcIlwiO1xyXG4gIE9BVVRIMl9PSURDX0xPR0lOX1VSSTogc3RyaW5nID0gXCJcIjtcclxuICBPQVVUSDJfT0lEQ19SRURJUkVDVF9VUkk6IHN0cmluZyA9IFwiXCI7XHJcbiAgT0FVVEgyX09JRENfU0NPUEU6IHN0cmluZyA9IFwib3BlbmlkIHByb2ZpbGUgZW1haWxcIjtcclxuXHJcbiAgU0FNTDJBREZTX0VOQUJMRUQ6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIFNBTUwyQURGU19JRFA6IHN0cmluZyA9IFwiXCI7XHJcbiAgU0FNTDJBREZTX0lERU5USUZJRVI6IHN0cmluZyA9IFwiXCI7XHJcbiAgU0FNTDJBREZTX1dBX1NJR05JTjogc3RyaW5nID0gXCJcIjtcclxuICBTQU1MMkFERlNfV0FfU0lHTk9VVDogc3RyaW5nID0gXCJcIjtcclxuICBTQU1MMkFERlNfV1JFUExZOiBzdHJpbmcgPSBcIlwiO1xyXG5cclxuICBIQU5HRklSRV9QQVRIOiBzdHJpbmcgPSAnL2pvYnMnO1xyXG4gIFNUQVRJQ19GT0xERVI6IHN0cmluZyA9ICdzdGF0aWMnO1xyXG4gIEFWQVRBUl9GT0xERVI6IHN0cmluZyA9ICdhdmF0YXJzJztcclxuXHJcbn1cclxuIl19
34
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLWNvbmZpZy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWhpc3RhZmYtYWxwaGEvc3JjL2xpYi9hcHAvc2VydmljZXMvYXBwLWNvbmZpZy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBSzNDLE1BQU0sT0FBTyxnQkFBZ0I7SUFIN0I7UUFhRSxrQkFBYSxHQUFZLEtBQUssQ0FBQyxDQUFDLDBEQUEwRDtRQUUxRixlQUFVLEdBQVcsRUFBRSxDQUFDO1FBQ3hCLGdCQUFXLEdBQVcsRUFBRSxDQUFDO1FBQ3pCLDBCQUFxQixHQUFXLEVBQUUsQ0FBQztRQUVuQyx3QkFBbUIsR0FBWSxLQUFLLENBQUM7UUFDckMsMEJBQXFCLEdBQVcsRUFBRSxDQUFDO1FBQ25DLDBCQUFxQixHQUFXLEVBQUUsQ0FBQztRQUNuQyw2QkFBd0IsR0FBVyxFQUFFLENBQUM7UUFDdEMsc0JBQWlCLEdBQVcsc0JBQXNCLENBQUM7UUFFbkQsc0JBQWlCLEdBQVksSUFBSSxDQUFDO1FBQ2xDLGtCQUFhLEdBQVcsRUFBRSxDQUFDO1FBQzNCLHlCQUFvQixHQUFXLEVBQUUsQ0FBQztRQUNsQyx3QkFBbUIsR0FBVyxFQUFFLENBQUM7UUFDakMseUJBQW9CLEdBQVcsRUFBRSxDQUFDO1FBQ2xDLHFCQUFnQixHQUFXLEVBQUUsQ0FBQztRQUU5QixrQkFBYSxHQUFXLE9BQU8sQ0FBQztRQUNoQyxrQkFBYSxHQUFXLFFBQVEsQ0FBQztRQUNqQyxrQkFBYSxHQUFXLFNBQVMsQ0FBQztRQUNsQyxzQkFBaUIsR0FBVyxhQUFhLENBQUM7S0FFM0M7OEdBbENZLGdCQUFnQjtrSEFBaEIsZ0JBQWdCLGNBRmYsTUFBTTs7MkZBRVAsZ0JBQWdCO2tCQUg1QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCcsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBcHBDb25maWdTZXJ2aWNlIHtcclxuXHJcbiAgQVBQX1RZUEUhOiBzdHJpbmc7XHJcblxyXG4gIEJBU0VfVVJMITogc3RyaW5nO1xyXG4gIEJBU0VfVVJMX0ZPUl9TVEFUSVNUSUMhOiBzdHJpbmc7XHJcbiAgQkFTRV9VUkxfRk9SX0NPTlRFTlQhOiBzdHJpbmc7IC8vIGZvciBtaXVrYWZvdG8uY29tIG9ubHlcclxuXHJcblxyXG4gIEdPTElWRV9VUkwhOiBzdHJpbmc7XHJcbiAgREVCVUdfRU5BQkxFRDogYm9vbGVhbiA9IGZhbHNlOyAvLyBIaeG7g24gdGjhu4sgbeG7mXQgc+G7kSBhbGVydCBr4buDIGPhuqMgdHJvbmcgbcO0aSB0csaw4budbmcgUHJvZHVjdGlvblxyXG5cclxuICBMT0dPX0xPR0lOOiBzdHJpbmcgPSBcIlwiO1xyXG4gIExPR09fSEVBREVSOiBzdHJpbmcgPSBcIlwiO1xyXG4gIEhPTUVfQkFDS0dST1VORF9JTUFHRTogc3RyaW5nID0gXCJcIjtcclxuXHJcbiAgT0FVVEgyX09JRENfRU5BQkxFRDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIE9BVVRIMl9PSURDX0NMSUVOVF9JRDogc3RyaW5nID0gXCJcIjtcclxuICBPQVVUSDJfT0lEQ19MT0dJTl9VUkk6IHN0cmluZyA9IFwiXCI7XHJcbiAgT0FVVEgyX09JRENfUkVESVJFQ1RfVVJJOiBzdHJpbmcgPSBcIlwiO1xyXG4gIE9BVVRIMl9PSURDX1NDT1BFOiBzdHJpbmcgPSBcIm9wZW5pZCBwcm9maWxlIGVtYWlsXCI7XHJcblxyXG4gIFNBTUwyQURGU19FTkFCTEVEOiBib29sZWFuID0gdHJ1ZTtcclxuICBTQU1MMkFERlNfSURQOiBzdHJpbmcgPSBcIlwiO1xyXG4gIFNBTUwyQURGU19JREVOVElGSUVSOiBzdHJpbmcgPSBcIlwiO1xyXG4gIFNBTUwyQURGU19XQV9TSUdOSU46IHN0cmluZyA9IFwiXCI7XHJcbiAgU0FNTDJBREZTX1dBX1NJR05PVVQ6IHN0cmluZyA9IFwiXCI7XHJcbiAgU0FNTDJBREZTX1dSRVBMWTogc3RyaW5nID0gXCJcIjtcclxuXHJcbiAgSEFOR0ZJUkVfUEFUSDogc3RyaW5nID0gJy9qb2JzJztcclxuICBTVEFUSUNfRk9MREVSOiBzdHJpbmcgPSAnc3RhdGljJztcclxuICBBVkFUQVJfRk9MREVSOiBzdHJpbmcgPSAnYXZhdGFycyc7XHJcbiAgQVRUQUNITUVOVF9GT0xERVI6IHN0cmluZyA9ICdhdHRhY2htZW50cyc7XHJcblxyXG59XHJcbiJdfQ==