@c8y/ngx-components 1021.22.28 → 1021.22.33

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 (33) hide show
  1. package/alarms/alarms-view.service.d.ts.map +1 -1
  2. package/context-dashboard/context-dashboard.component.d.ts.map +1 -1
  3. package/core/common/forOf.directive.d.ts.map +1 -1
  4. package/esm2022/alarms/alarms-view.service.mjs +3 -1
  5. package/esm2022/context-dashboard/context-dashboard.component.mjs +8 -2
  6. package/esm2022/core/common/forOf.directive.mjs +5 -1
  7. package/esm2022/core/navigator/navigator-bottom/navigator-bottom.component.mjs +3 -3
  8. package/esm2022/operations/operations-list/operations-list-item.component.mjs +14 -6
  9. package/esm2022/operations/operations-list/operations-list.component.mjs +13 -5
  10. package/fesm2022/c8y-ngx-components-alarms.mjs +2 -0
  11. package/fesm2022/c8y-ngx-components-alarms.mjs.map +1 -1
  12. package/fesm2022/c8y-ngx-components-context-dashboard.mjs +6 -0
  13. package/fesm2022/c8y-ngx-components-context-dashboard.mjs.map +1 -1
  14. package/fesm2022/c8y-ngx-components-operations-operations-list.mjs +25 -9
  15. package/fesm2022/c8y-ngx-components-operations-operations-list.mjs.map +1 -1
  16. package/fesm2022/c8y-ngx-components.mjs +6 -2
  17. package/fesm2022/c8y-ngx-components.mjs.map +1 -1
  18. package/locales/de.po +4 -4
  19. package/locales/es.po +4 -4
  20. package/locales/fr.po +4 -4
  21. package/locales/ja_JP.po +4 -5
  22. package/locales/ko.po +4 -5
  23. package/locales/locales.pot +2 -2
  24. package/locales/nl.po +4 -4
  25. package/locales/pl.po +4 -4
  26. package/locales/pt_BR.po +4 -4
  27. package/locales/zh_CN.po +4 -5
  28. package/locales/zh_TW.po +4 -5
  29. package/operations/operations-list/operations-list-item.component.d.ts +3 -1
  30. package/operations/operations-list/operations-list-item.component.d.ts.map +1 -1
  31. package/operations/operations-list/operations-list.component.d.ts +1 -0
  32. package/operations/operations-list/operations-list.component.d.ts.map +1 -1
  33. package/package.json +1 -1
@@ -479,7 +479,11 @@ export class ForOfDirective {
479
479
  if (this.isDisplayed(idToRemove)) {
480
480
  this.updateCount(-1);
481
481
  }
482
+ const index = this.cachedData.findIndex(op => op.id === idToRemove);
483
+ this.cachedData.splice(index, 1);
482
484
  this.forMatchingEmbeddedViewRef((item) => item && coerceNumberProperty(item.id, NaN) === idToRemove, (view) => view.destroy());
485
+ this.c8yForChange.emit([...this.cachedData]);
486
+ this.cdRef.detectChanges();
483
487
  }
484
488
  updateCount(countChange) {
485
489
  this.count += countChange;
@@ -568,4 +572,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
568
572
  }], c8yForLoadMoreComponent: [{
569
573
  type: Output
570
574
  }] } });
571
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9yT2YuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vY29yZS9jb21tb24vZm9yT2YuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzdELE9BQU8sRUFDTCxpQkFBaUIsRUFDakIsU0FBUyxFQUVULFlBQVksRUFDWixLQUFLLEVBQ0wsTUFBTSxFQUVOLFdBQVcsRUFDWCxnQkFBZ0IsRUFFakIsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDeEMsT0FBTyxFQUNMLGFBQWEsRUFDYixZQUFZLEVBRVosRUFBRSxFQUNGLElBQUksRUFDSixPQUFPLEVBR1IsTUFBTSxNQUFNLENBQUM7QUFDZCxPQUFPLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHN0QsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFMUQsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0scURBQXFELENBQUM7O0FBRXRHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBOEZHO0FBSUgsTUFBTSxPQUFPLGNBQWM7SUF3QnpCLElBQVksdUJBQXVCO1FBQ2pDLE9BQU8sQ0FDTCxJQUFJLENBQUMsWUFBWSxLQUFLLE1BQU0sSUFBSSxJQUFJLENBQUMsWUFBWSxLQUFLLE1BQU0sSUFBSSxJQUFJLENBQUMsWUFBWSxLQUFLLFFBQVEsQ0FDL0YsQ0FBQztJQUNKLENBQUM7SUFFRCxJQUFZLFdBQVc7UUFDckIsT0FBTyxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUks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QUFDOzhHQXJpQlUsY0FBYztrR0FBZCxjQUFjOzsyRkFBZCxjQUFjO2tCQUgxQixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxVQUFVO2lCQUNyQjsrSUE0Q0ssUUFBUTtzQkFEWCxLQUFLO2dCQTBCRixjQUFjO3NCQURqQixLQUFLO2dCQVNGLFVBQVU7c0JBRGIsS0FBSztnQkFXRixjQUFjO3NCQURqQixLQUFLO2dCQVlGLG1CQUFtQjtzQkFEdEIsS0FBSztnQkFTRixxQkFBcUI7c0JBRHhCLEtBQUs7Z0JBU0YsbUJBQW1CO3NCQUR0QixLQUFLO2dCQVNGLGtCQUFrQjtzQkFEckIsS0FBSztnQkFTRixjQUFjO3NCQURqQixLQUFLO2dCQVNGLHFCQUFxQjtzQkFEeEIsS0FBSztnQkFVRixnQkFBZ0I7c0JBRG5CLEtBQUs7Z0JBU04seUJBQXlCO3NCQUR4QixLQUFLO2dCQU9OLDhCQUE4QjtzQkFEN0IsS0FBSztnQkFTTiwyQkFBMkI7c0JBRDFCLEtBQUs7Z0JBT04sa0NBQWtDO3NCQURqQyxLQUFLO2dCQW1CRSxXQUFXO3NCQURsQixNQUFNO2dCQW1CQyxZQUFZO3NCQURuQixNQUFNO2dCQU9DLHVCQUF1QjtzQkFEOUIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNvZXJjZU51bWJlclByb3BlcnR5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBEaXJlY3RpdmUsXG4gIEVtYmVkZGVkVmlld1JlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT3V0cHV0LFxuICBTaW1wbGVDaGFuZ2VzLFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NvbnRhaW5lclJlZixcbiAgVmlld1JlZlxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElJZGVudGlmaWVkLCBJUmVzdWx0TGlzdCwgUGFnaW5nIH0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHsgYXNzaWduLCBnZXQgfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHtcbiAgY29tYmluZUxhdGVzdCxcbiAgaXNPYnNlcnZhYmxlLFxuICBPYnNlcnZhYmxlLFxuICBvZixcbiAgcGlwZSxcbiAgU3ViamVjdCxcbiAgU3Vic2NyaXB0aW9uLFxuICBVbmFyeUZ1bmN0aW9uXG59IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmlsdGVyLCBtYXAsIHRha2VVbnRpbCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgUmVhbHRpbWVTZXJ2aWNlIH0gZnJvbSAnLi4vcmVhbHRpbWUvcmVhbHRpbWUuc2VydmljZSc7XG5pbXBvcnQgeyBGb3JPZkZpbHRlclBpcGUsIEZvck9mUmVhbHRpbWVPcHRpb25zIH0gZnJvbSAnLi9mb3JPZi5tb2RlbCc7XG5pbXBvcnQgeyBMb2FkTW9yZUNvbXBvbmVudCB9IGZyb20gJy4vbG9hZC1tb3JlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBMb2FkTW9yZU1vZGUgfSBmcm9tICcuL2xvYWQtbW9yZS5tb2RlbCc7XG5pbXBvcnQgeyBWaXJ0dWFsU2Nyb2xsZXJXcmFwcGVyQ29tcG9uZW50IH0gZnJvbSAnLi92aXJ0dWFsLXNjcm9sbC92aXJ0dWFsLXNjcm9sbGVyLXdyYXBwZXIuY29tcG9uZW50JztcblxuLyoqXG4gKiBBIGRpcmVjdGl2ZSB0byBpdGVyYXRlIG92ZXIgSVJlc3VsdExpc3Q8VD4gZGF0YSBmcm9tIEBjOHkvY2xpZW50LlxuICogRGVwZW5kaW5nIG9uIHRoZSBbYzh5Rm9yTG9hZE1vcmVdIGEgbG9hZCBtb3JlIGJ1dHRvbiBpczpcbiAqICAtIGF1dG86IFRyaWVzIHRvIGF1dG9tYXRpY2FsbHkgbG9hZCBtb3JlIGRhdGEgKGRlZmF1bHQgbWF4aW11bSAxMCBpdGVyYXRpb25zOyBjYW4gYmVcbiAqICAgICAgICAgIGNoYW5nZSB3aXRoIG1heEl0ZXJhdGlvbnMgc2V0dGluZ3MpLlxuICogIC0gc2hvdzogU2hvd3MgYSBsb2FkIG1vcmUgYnV0dG9uIGZvciB0aGUgdXNlciB0byBkZWNpZGVcbiAqICAtIG5vbmU6IERvZXNuJ3QgcGVyZm9ybSBhbnkgbG9hZCBtb3JlIGFjdGlvbi5cbiAqICAtIGhpZGRlbjogTG9hZHMgbW9yZSBkYXRhIGF1dG9tYXRpY2FsbHkgYnV0IHdpdGggbm8gdmlzaWJsZSBidXR0b24gZm9yIHRoZSB1c2VyLlxuICpcbiAqIEFkZGl0aW9uYWwsIGFueSByeGpzIG9wZXJhdG9yIHBpcGUgY2FuIGJlIGFwcGxpZWQgdG8gdGhlIFtjOHlGb3JQaXBlXSBpbnB1dCwgZS5nLiB0b1xuICogZmlsdGVyIHRoZSBkYXRhIGRpc3BsYXllZCBjdXJyZW50bHkgYXMgd2VsbCBhcyB0aGUgZGF0YSBsb2FkZWQgYnkgc3Vic2VxdWVudCByZXF1ZXN0cy5cbiAqXG4gKiBgYGBodG1sXG4gKiA8ZGl2ICpjOHlGb3I9XCJsZXQgZGV2aWNlIG9mIGRldmljZXM7IGxvYWRNb3JlOiAnYXV0byc7IGxldCBpID0gaW5kZXg7IHBpcGU6IGZpbHRlclBpcGU7XCI+XG4gKiAge3sgaSArIDEgfX0uIHt7ZGV2aWNlLm5hbWV9fVxuICogPC9kaXY+XG4gKiBgYGBcbiAqIFRoZSBhYm92ZSBleGFtcGxlIHdpbGwgbGlzdCBhbGwgZW50aXRpZXMgdGhhdCBhcmUgYXBwbGllZCB0byBgZGV2aWNlc2A6XG4gKiBgYGB0eXBlc2NyaXB0XG4gKiB0aGlzLmRldmljZXMgPSB0aGlzLmludmVudG9yeVNlcnZpY2UubGlzdCh7IHBhZ2VTaXplOiAxMCwgZnJhZ21lbnRUeXBlOiAnYzh5X0lzRGV2aWNlJyB9KVxuICogYGBgXG4gKiBJdCB3aWxsIGRpc3BsYXkgdGhlIGZpcnN0IDEwIGl0ZW1zLCBpZiB0aGVyZSBpcyBtb3JlIHNwYWNlIGxlZnQgb24gdGhlIHNjcmVlbiwgYW5kIHRoZXJlIGFyZSBtb3JlXG4gKiB0aGFuIDEwIGRldmljZXMsIGl0IHdpbGwgYXV0b21hdGljYWxseSBsb2FkIHVwIHRvIDEwIHBhZ2VzIG1vcmUuIElmIGl0IHN0aWxsIGNhbid0IGZpdCB0aGUgc2NyZWVuXG4gKiBpdCB3aWxsIHN0b3AgYW5kIHN3aXRjaCB0byBgc2hvd2AgbW9kZS5cbiAqXG4gKiBBIHBpcGUgY2FuIGJlIGFwcGxpZWQgZS5nLiBmb3IgZmlsdGVyaW5nIG9yIGdyb3VwaW5nLiBUaGlzIHBpcGUgaXMgYXR0YWNoZWQgdG8gZXZlcnkgZm9sbG93IHVwXG4gKiByZXF1ZXN0IGRvbmUgYnkgdGhlIGxvYWQgbW9yZSBjb21wb25lbnQ6XG4gKiBgYGB0eXBlc2NyaXB0XG4gKiB0aGlzLmZpbHRlclBpcGUgPSBwaXBlKFxuICogICAgbWFwKChkYXRhOiBbXSkgPT4ge1xuICogICAgIHJldHVybiBkYXRhLmZpbHRlcihcbiAqICAgICAgKG1vOiBhbnkpID0+IG1vLm5hbWUgJiYgbW8ubmFtZS50b0xvd2VyQ2FzZSgpLmluZGV4T2YodmFsdWUudG9Mb3dlckNhc2UoKSkgPiAtMVxuICogICAgKTtcbiAqICB9KVxuICogKTtcbiAqIGBgYFxuICogVGhlIHBpcGUgbXVzdCBiZSBhbiByeGpzIHBpcGUgYW5kIGNhbiB0YWtlIGFueSBvcGVyYXRvci5cbiAqXG4gKiBFeGFtcGxlIHdpdGggcmVhbHRpbWUgc3VwcG9ydCBhbmQgaXRlbXMgY291bnQgb3V0cHV0IChlLmcuIGZvciBoYW5kbGluZyBlbXB0eSBzdGF0ZSBhbmQgaGVhZGVyKTpcbiAqXG4gKiBgYGBodG1sXG4gKiA8Yzh5LWxpc3QtZ3JvdXA+XG4gKiAgIDxkaXYgY2xhc3M9XCJjOHktZW1wdHktc3RhdGVcIiAqbmdJZj1cImNvdW50ID09PSAwXCI+XG4gKiAgICAgKC4uLilcbiAqICAgPC9kaXY+XG4gKlxuICogICA8ZGl2IGNsYXNzPVwicGFnZS1zdGlja3ktaGVhZGVyIGhpZGRlbi14cyBjOHktbGlzdF9faXRlbSBjOHktbGlzdC0tdGltZWxpbmVcIiAqbmdJZj1cImNvdW50ID4gMFwiPlxuICogICAgICguLi4pXG4gKiAgIDwvZGl2PlxuICpcbiAqICAgPG5nLXRlbXBsYXRlXG4gKiAgICAgYzh5Rm9yXG4gKiAgICAgbGV0LW9wZXJhdGlvblxuICogICAgIFtjOHlGb3JPZl09XCJpdGVtcyRcIlxuICogICAgIFtjOHlGb3JQaXBlXT1cImZpbHRlclBpcGVcIlxuICogICAgIFtjOHlGb3JSZWFsdGltZV09XCJyZWFsdGltZVwiXG4gKiAgICAgW2M4eUZvclJlYWx0aW1lT3B0aW9uc109XCJyZWFsdGltZU9wdGlvbnNcIlxuICogICAgIChjOHlGb3JDb3VudCk9XCJjb3VudCA9ICRldmVudFwiXG4gKiAgID5cbiAqICAgICA8Yzh5LWxpLXRpbWVsaW5lPlxuICogICAgICAgKC4uLilcbiAqICAgICA8L2M4eS1saS10aW1lbGluZT5cbiAqICAgPC9uZy10ZW1wbGF0ZT5cbiAqIDwvYzh5LWxpc3QtZ3JvdXA+XG4gKiBgYGBcbiAqXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBAQ29tcG9uZW50KHtcbiAqICAgKC4uLilcbiAqIH0pXG4gKiBleHBvcnQgY2xhc3MgRXhhbXBsZUNvbXBvbmVudCB7XG4gKiAgIEBJbnB1dCgpIGRldmljZUlkOiBJSWRlbnRpZmllZDtcbiAqICAgaXRlbXMkID0gdGhpcy5vcGVyYXRpb25TZXJ2aWNlLmxpc3Qoe1xuICogICAgIGRldmljZUlkOiB0aGlzLmRldmljZUlkLFxuICogICAgIGZyYWdtZW50VHlwZTogJ2M4eV9NeU9wZXJhdGlvbicsXG4gKiAgICAgZGF0ZUZyb206IG5ldyBEYXRlKDApLnRvSVNPU3RyaW5nKCksXG4gKiAgICAgZGF0ZVRvOiBuZXcgRGF0ZShEYXRlLm5vdygpKS50b0lTT1N0cmluZygpLFxuICogICAgIHJldmVydDogdHJ1ZSxcbiAqICAgICB3aXRoVG90YWxQYWdlczogdHJ1ZVxuICogICB9KTtcbiAqICAgZmlsdGVyUGlwZSA9IHBpcGUobWFwKChvcHM6IElPcGVyYXRpb25bXSkgPT4gb3BzLmZpbHRlcihvcCA9PiBvcC5jOHlfTXlPcGVyYXRpb24pKSk7XG4gKiAgIHJlYWx0aW1lT3B0aW9uczogRm9yT2ZSZWFsdGltZU9wdGlvbnMgPSB7XG4gKiAgICAgZW50aXR5T3JJZDogdGhpcy5kZXZpY2VJZCxcbiAqICAgICByZW1vdmVPblVwZGF0ZTogdHJ1ZSxcbiAqICAgICBpbnNlcnRPblVwZGF0ZTogdHJ1ZVxuICogICB9IGFzIEZvck9mUmVhbHRpbWVPcHRpb25zO1xuICogICBjb3VudDogbnVtYmVyO1xuICpcbiAqICAgY29uc3RydWN0b3IoXG4gKiAgICAgcHJpdmF0ZSBvcGVyYXRpb25TZXJ2aWNlOiBPcGVyYXRpb25TZXJ2aWNlLFxuICogICAgIHB1YmxpYyByZWFsdGltZTogT3BlcmF0aW9uUmVhbHRpbWVTZXJ2aWNlXG4gKiAgICkge31cbiAqIH1cbiAqIGBgYFxuICovXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbYzh5Rm9yXSdcbn0pXG5leHBvcnQgY2xhc3MgRm9yT2ZEaXJlY3RpdmUge1xuICBwcml2YXRlIGNhY2hlZERhdGE6IElJZGVudGlmaWVkW10gPSBbXTtcbiAgcHJpdmF0ZSBwYWdpbmc6IFBhZ2luZzxJSWRlbnRpZmllZD47XG4gIHByaXZhdGUgbG9hZE1vcmVNb2RlOiBMb2FkTW9yZU1vZGUgPSAnYXV0byc7XG4gIHByaXZhdGUgZGF0YVBpcGU6IEZvck9mRmlsdGVyUGlwZSA9IHBpcGUodGFwKCkpO1xuICBwcml2YXRlIGl0ZW1EYXRhUGlwZTogVW5hcnlGdW5jdGlvbjxPYnNlcnZhYmxlPElJZGVudGlmaWVkPiwgT2JzZXJ2YWJsZTxJSWRlbnRpZmllZD4+ID0gcGlwZShcbiAgICBtYXAoaXRlbSA9PiBbaXRlbV0pLFxuICAgIHNyYyA9PiB0aGlzLmRhdGFQaXBlKHNyYyksXG4gICAgbWFwKChbaXRlbV0pID0+IGl0ZW0pXG4gICk7XG4gIHByaXZhdGUgcGFnaW5nU3ViOiBTdWJzY3JpcHRpb247XG4gIHByaXZhdGUgb2JzJDogT2JzZXJ2YWJsZTxJSWRlbnRpZmllZFtdPjtcbiAgcHJpdmF0ZSBsb2FkTW9yZTogTG9hZE1vcmVDb21wb25lbnQ7XG4gIHByaXZhdGUgbG9hZGluZ1RlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICBwcml2YXRlIG1heEl0ZXJhdGlvbnMgPSAxMDtcbiAgcHJpdmF0ZSBub3RGb3VuZFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICBwcml2YXRlIGxvYWROZXh0TGFiZWw6IHN0cmluZztcbiAgcHJpdmF0ZSBsb2FkaW5nTGFiZWw6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFsdGltZTogUmVhbHRpbWVTZXJ2aWNlPElJZGVudGlmaWVkPjtcbiAgcHJpdmF0ZSByZWFsdGltZU9wdGlvbnM6IEZvck9mUmVhbHRpbWVPcHRpb25zID0ge307XG4gIHByaXZhdGUgY29tcGFyYXRvcjogKGl0ZW1BOiBJSWRlbnRpZmllZCwgaXRlbUI6IElJZGVudGlmaWVkKSA9PiBudW1iZXI7XG4gIHByaXZhdGUgdW5zdWJzY3JpYmUkOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3QoKTtcbiAgcHJpdmF0ZSB2aXJ0dWFsU2Nyb2xsSW5zdGFuY2U6IFZpcnR1YWxTY3JvbGxlcldyYXBwZXJDb21wb25lbnQ7XG5cbiAgcHJpdmF0ZSBnZXQgc2hvdWxkVXNlTG9hZE1vcmVCdXR0b24oKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMubG9hZE1vcmVNb2RlID09PSAnYXV0bycgfHwgdGhpcy5sb2FkTW9yZU1vZGUgPT09ICdzaG93JyB8fCB0aGlzLmxvYWRNb3JlTW9kZSA9PT0gJ2hpZGRlbidcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXQgaGFzTW9yZURhdGEoKSB7XG4gICAgcmV0dXJuIHRoaXMubG9hZE1vcmUgJiYgdGhpcy5sb2FkTW9yZS5oYXNNb3JlO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXQgbGVuZ3RoKCkge1xuICAgIHJldHVybiB0aGlzLmNhY2hlZERhdGEubGVuZ3RoO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBkYXRhIHNldHRlci4gTXVzdCBiZSBhIHJlc3BvbnNlIGZyb20gQGM4eS9kYXRhIG9yIGFuIG9ic2VydmFibGUuXG4gICAqIFlvdSBjYW4gcGFzcyBhbiBvYnNlcnZhYmxlIHdpdGggbnVsbCB0byBleHBsaWNpdGx5IGNsZWFyIHRoZSBsaXN0LlxuICAgKi9cbiAgQElucHV0KClcbiAgc2V0IGM4eUZvck9mKGZldGNoRGF0YTogSVJlc3VsdExpc3Q8SUlkZW50aWZpZWQ+IHwgT2JzZXJ2YWJsZTxJUmVzdWx0TGlzdDxJSWRlbnRpZmllZD4+KSB7XG4gICAgaWYgKGZldGNoRGF0YSkge1xuICAgICAgdGhpcy5vYnMkID0gKGlzT2JzZXJ2YWJsZShmZXRjaERhdGEpID8gZmV0Y2hEYXRhIDogb2YoZmV0Y2hEYXRhKSkucGlwZShcbiAgICAgICAgbWFwKHJlc3VsdCA9PiB7XG4gICAgICAgICAgaWYgKHJlc3VsdCA9PT0gbnVsbCkge1xuICAgICAgICAgICAgdGhpcy5wYWdpbmcgPSBudWxsO1xuICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjb25zdCB7IHBhZ2luZywgZGF0YSB9ID0gcmVzdWx0O1xuICAgICAgICAgIHRoaXMucGFnaW5nID0gcGFnaW5nO1xuICAgICAgICAgIHJldHVybiBkYXRhO1xuICAgICAgICB9KVxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVGhlIG1vZGUgc2V0dGVyOlxuICAgKiAgLSBhdXRvOiBUcmllcyB0byBhdXRvbWF0aWNhbGx5IGxvYWQgbW9yZSBkYXRhIChkZWZhdWx0IG1heGltdW0gMTAgaXRlcmF0aW9uczsgY2FuIGJlXG4gICAqICAgICAgICAgIGNoYW5nZSB3aXRoIG1heEl0ZXJhdGlvbnMgc2V0dGluZ3MpLlxuICAgKiAgLSBzaG93OiBTaG93cyBhIGxvYWQgbW9yZSBidXR0b24gZm9yIHRoZSB1c2VyIHRvIGRlY2lkZVxuICAgKiAgLSBub25lOiBEb2Vzbid0IHBlcmZvcm0gYW55IGxvYWQgbW9yZSBhY3Rpb24uXG4gICAqICAtIGhpZGRlbjogTG9hZHMgbW9yZSBkYXRhIGF1dG9tYXRpY2FsbHkgYnV0IHdpdGggbm8gdmlzaWJsZSBidXR0b24gZm9yIHRoZSB1c2VyLlxuICAgKi9cbiAgQElucHV0KClcbiAgc2V0IGM4eUZvckxvYWRNb3JlKHR5cGU6IEZvck9mRGlyZWN0aXZlWydsb2FkTW9yZU1vZGUnXSkge1xuICAgIHRoaXMubG9hZE1vcmVNb2RlID0gdHlwZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgcGlwZSBzZXR0ZXIgdG8gYXR0YWNoIGFueSByeGpzIHBpcGUgdG8gdGhlIGN1cnJlbnQgYW5kIG1vcmUgbG9hZGVkIGRhdGEuXG4gICAqL1xuICBASW5wdXQoKVxuICBzZXQgYzh5Rm9yUGlwZShkYXRhUGlwZTogRm9yT2ZEaXJlY3RpdmVbJ2RhdGFQaXBlJ10pIHtcbiAgICBpZiAoZGF0YVBpcGUpIHtcbiAgICAgIHRoaXMuZGF0YVBpcGUgPSBkYXRhUGlwZTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQSB0ZW1wbGF0ZSB0byB1c2UgaWYgbm8gZGF0YSBpcyBmb3VuZCBhdCBhbGwgKGUuZy4gaWYgeW91IGFwcGx5IGEgZmlsdGVyIHBpcGUpLlxuICAgKi9cbiAgQElucHV0KClcbiAgc2V0IGM4eUZvck5vdEZvdW5kKG5vdEZvdW5kVGVtcGxhdGU6IEZvck9mRGlyZWN0aXZlWydub3RGb3VuZFRlbXBsYXRlJ10pIHtcbiAgICB0aGlzLm5vdEZvdW5kVGVtcGxhdGUgPSBub3RGb3VuZFRlbXBsYXRlO1xuICAgIGlmICh0aGlzLmxvYWRNb3JlKSB7XG4gICAgICB0aGlzLmxvYWRNb3JlLm5vTW9yZURhdGFIaW50ID0gbm90Rm91bmRUZW1wbGF0ZTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVGhlIG1heGltdW0gbnVtYmVycyBvZiBpdGVyYXRpb25zIHRvIGNhbGwgZGF0YSBmcm9tIHRoZSBhcGkuXG4gICAqL1xuICBASW5wdXQoKVxuICBzZXQgYzh5Rm9yTWF4SXRlcmF0aW9ucyhtYXhJdGVyYXRpb25zOiBudW1iZXIpIHtcbiAgICB0aGlzLm1heEl0ZXJhdGlvbnMgPSBtYXhJdGVyYXRpb25zO1xuICB9XG5cbiAgLyoqXG4gICAqIEEgY3VzdG9tIGxvYWRpbmcgY29tcG9uZW50LlxuICAgKi9cbiAgQElucHV0KClcbiAgc2V0IGM4eUZvckxvYWRpbmdUZW1wbGF0ZShsb2FkaW5nVGVtcGxhdGU6IEZvck9mRGlyZWN0aXZlWydsb2FkaW5nVGVtcGxhdGUnXSkge1xuICAgIHRoaXMubG9hZGluZ1RlbXBsYXRlID0gbG9hZGluZ1RlbXBsYXRlO1xuICB9XG5cbiAgLyoqXG4gICAqIExvYWQgbmV4dCB0ZXh0IGxhYmVsLlxuICAgKi9cbiAgQElucHV0KClcbiAgc2V0IGM4eUZvckxvYWROZXh0TGFiZWwobG9hZE5leHRMYWJlbDogc3RyaW5nKSB7XG4gICAgdGhpcy5sb2FkTmV4dExhYmVsID0gbG9hZE5leHRMYWJlbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBMb2FkaW5nIHRleHQgbGFiZWwuXG4gICAqL1xuICBASW5wdXQoKVxuICBzZXQgYzh5Rm9yTG9hZGluZ0xhYmVsKGxvYWRpbmdMYWJlbDogc3RyaW5nKSB7XG4gICAgdGhpcy5sb2FkaW5nTGFiZWwgPSBsb2FkaW5nTGFiZWw7XG4gIH1cblxuICAvKipcbiAgICogQSBSZWFsdGltZVNlcnZpY2UgaW5zdGFuY2UuXG4gICAqL1xuICBASW5wdXQoKVxuICBzZXQgYzh5Rm9yUmVhbHRpbWUoc291cmNlOiBGb3JPZkRpcmVjdGl2ZVsncmVhbHRpbWUnXSkge1xuICAgIHRoaXMucmVhbHRpbWUgPSBzb3VyY2U7XG4gIH1cblxuICAvKipcbiAgICogUmVhbHRpbWUgb3B0aW9ucy5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHNldCBjOHlGb3JSZWFsdGltZU9wdGlvbnMocmVhbHRpbWVPcHRpb25zOiBGb3JPZkRpcmVjdGl2ZVsncmVhbHRpbWVPcHRpb25zJ10pIHtcbiAgICB0aGlzLnJlYWx0aW1lT3B0aW9ucyA9IHJlYWx0aW1lT3B0aW9ucztcbiAgfVxuXG4gIC8qKlxuICAgKiBBIGNvbXBhcmF0b3IgZnVuY3Rpb24gZm9yIGNvbXBhcmluZyBsaXN0IGl0ZW1zLiBVc2VkIHRvIGRldGVybWluZVxuICAgKiB0aGUgcG9zaXRpb24gYXQgd2hpY2ggYSBuZXcgZWxlbWVudCBzaG91bGQgYmUgYWRkZWQgdG8gdGhlIGxpc3QuXG4gICAqL1xuICBASW5wdXQoKVxuICBzZXQgYzh5Rm9yQ29tcGFyYXRvcihjb21wYXJhdG9yOiBGb3JPZkRpcmVjdGl2ZVsnY29tcGFyYXRvciddKSB7XG4gICAgdGhpcy5jb21wYXJhdG9yID0gY29tcGFyYXRvcjtcbiAgfVxuXG4gIC8qKlxuICAgKiBFbmFibGUgdmlydHVhbCBzY3JvbGwgcmVuZGVyaW5nIG1ldGhvZC5cbiAgICovXG4gIEBJbnB1dCgpXG4gIGM4eUZvckVuYWJsZVZpcnR1YWxTY3JvbGwgPSBmYWxzZTtcblxuICAvKipcbiAgICogUHJvdmlkZXMgZml4ZWQgaXRlbSBzaXplIGZvciB2aXJ0dWFsIHNjcm9sbCB3aW5kb3cgc3RyYXRlZ3kuXG4gICAqL1xuICBASW5wdXQoKVxuICBjOHlGb3JWaXJ0dWFsU2Nyb2xsRWxlbWVudFNpemU7XG5cbiAgLyoqXG4gICAqIFNldHMgbW9kZSBvZiB2aXJ0dWFsIHNjcm9sbGVyIGluc3RhbmNlLlxuICAgKiB3aW5kb3cgaXMgdXNlZCBmb3IgY2FzZSB3aGVuIHdob2xlIHZpZXdwb3J0IGlzIHNjcm9sbGVkLlxuICAgKiBmaXhlZCBjYW4gYmUgdXNlZCBvbiBpbm5lci1zY3JvbGwgY29udGFpbmVycy5cbiAgICovXG4gIEBJbnB1dCgpXG4gIGM4eUZvclZpcnR1YWxTY3JvbGxTdHJhdGVneTogJ2ZpeGVkJyB8ICd3aW5kb3cnID0gJ3dpbmRvdyc7XG5cbiAgLyoqXG4gICAqIFdoZW4gdXNlZCBmaXhlZCBzdHJhdGVneSwgdGhlcmUgbmVlZHMgdG8gYmUgZml4ZWQgaGVpZ2h0IHNldCBvbiBzY3JvbGxpbmcgY29udGFpbmVyLlxuICAgKi9cbiAgQElucHV0KClcbiAgYzh5Rm9yVmlydHVhbFNjcm9sbENvbnRhaW5lckhlaWdodDogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBUaGUgbnVtYmVyIG9mIGl0ZW1zIGN1cnJlbnRseSBsb2FkZWQgaW4gdGhlIGxpc3QuXG4gICAqXG4gICAqIE5vdGU6IFRoaXMgY2FuIG9ubHkgYmUgdXNlZCBpZiB0aGUgZm9yT2YgaXNuJ3QgdXNlZCB3aXRoXG4gICAqIHRoZSBzdWdhcmVkIGFzdGVyaXNrICgqKSBzeW50YXguIEluc3RlYWQgeW91IG5lZWQgdG8gdXNlIGFuIG5nLXRlbXBsYXRlOlxuICAgKiBgYGBodG1sXG4gICAqIDxuZy10ZW1wbGF0ZVxuICAgKiAgYzh5Rm9yXG4gICAqICBsZXQtb3BlcmF0aW9uXG4gICAqICBbYzh5Rm9yT2ZdPVwib3BlcmF0aW9ucyRcIlxuICAgKiAgKGM4eUZvckNvdW50KT1cIm9wZXJhdGlvbkNvdW50ID0gJGV2ZW50XCJcbiAgICogPlxuICAgKiA8L25nLXRlbXBsYXRlPlxuICAgKiBgYGBcbiAgICovXG4gIEBPdXRwdXQoKVxuICBwcml2YXRlIGM4eUZvckNvdW50ID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG5cbiAgLyoqXG4gICAqIFRoZSBpdGVtcyBjaGFuZ2UgZXZlbnQgZW1pdHRpbmcgdGhlIG5ld2x5IGxvYWRlZCBpdGVtcy5cbiAgICpcbiAgICogTm90ZTogVGhpcyBjYW4gb25seSBiZSB1c2VkIGlmIHRoZSBmb3JPZiBpc24ndCB1c2VkIHdpdGhcbiAgICogdGhlIHN1Z2FyZWQgYXN0ZXJpc2sgKCopIHN5bnRheC4gSW5zdGVhZCB5b3UgbmVlZCB0byB1c2UgYW4gbmctdGVtcGxhdGU6XG4gICAqIGBgYGh0bWxcbiAgICogPG5nLXRlbXBsYXRlXG4gICAqICBjOHlGb3JcbiAgICogIGxldC1vcGVyYXRpb25cbiAgICogIFtjOHlGb3JPZl09XCJvcGVyYXRpb25zJFwiXG4gICAqICAoYzh5Rm9yQ2hhbmdlKT1cIm9uQ2hhbmdlRm9yT2YoJGV2ZW50KVwiXG4gICAqID5cbiAgICogPC9uZy10ZW1wbGF0ZT5cbiAgICogYGBgXG4gICAqL1xuICBAT3V0cHV0KClcbiAgcHJpdmF0ZSBjOHlGb3JDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHVua25vd25bXT4oKTtcblxuICAvKipcbiAgICogVGhlIGN1cnJlbnQgaW5zdGFuY2Ugb2YgdGhlIGBMb2FkTW9yZUNvbXBvbmVudGAuXG4gICAqL1xuICBAT3V0cHV0KClcbiAgcHJpdmF0ZSBjOHlGb3JMb2FkTW9yZUNvbXBvbmVudCA9IG5ldyBFdmVudEVtaXR0ZXI8TG9hZE1vcmVDb21wb25lbnQ+KCk7XG5cbiAgcHJpdmF0ZSBjb3VudCA9IDA7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSB0cGw6IFRlbXBsYXRlUmVmPGFueT4sXG4gICAgcHJpdmF0ZSB2Y3I6IFZpZXdDb250YWluZXJSZWYsXG4gICAgcHJpdmF0ZSBjZFJlZjogQ2hhbmdlRGV0ZWN0b3JSZWZcbiAgKSB7fVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuaGFuZGxlUmVhbHRpbWUoKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5vYnMkICYmIChjaGFuZ2VzLmM4eUZvclBpcGUgfHwgY2hhbmdlcy5jOHlGb3JPZikpIHtcbiAgICAgIHRoaXMudW5zdWJzY3JpYmVQYWdpbmcoKTtcblxuICAgICAgaWYgKHRoaXMudmlydHVhbFNjcm9sbEluc3RhbmNlKSB7XG4gICAgICAgIHRoaXMudmlydHVhbFNjcm9sbEluc3RhbmNlLmZpbHRlclBpcGUgPSB0aGlzLmRhdGFQaXBlO1xuICAgICAgICB3aW5kb3cuc2Nyb2xsVG8oeyB0b3A6IDAgfSk7XG4gICAgICB9XG5cbiAgICAgIC8vIG9ubHkgcmUtcmVuZGVyaW5nICBvbiBmaWx0ZXJpbmcgaWYgYWxsIGRhdGEgaXMgYWxyZWFkeSBsb2FkZWRcbiAgICAgIC8vIGZyb20gdGhlIGJhY2tlbmRcbiAgICAgIGNvbnN0IHJlUmVuZGVyID0gIXRoaXMuaGFzTW9yZURhdGEgJiYgISFjaGFuZ2VzLmM4eUZvclBpcGUgJiYgIWNoYW5nZXMuYzh5Rm9yT2Y7XG5cbiAgICAgIGlmIChyZVJlbmRlcikge1xuICAgICAgICB0aGlzLm9icyQgPSBvZih0aGlzLmNhY2hlZERhdGEpO1xuICAgICAgfVxuICAgICAgdGhpcy5wYWdpbmdTdWIgPSB0aGlzLm9icyRcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgdGFwKGRhdGEgPT4ge1xuICAgICAgICAgICAgaWYgKCFyZVJlbmRlcikge1xuICAgICAgICAgICAgICB0aGlzLmNhY2hlZERhdGEgPSBkYXRhO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pXG4gICAgICAgIClcbiAgICAgICAgLnBpcGUoc3JjID0+IHRoaXMuZGF0YVBpcGUoc3JjKSlcbiAgICAgICAgLnN1YnNjcmliZSgoZGF0YTogW10pID0+IHtcbiAgICAgICAgICB0aGlzLnVwZGF0ZUNvdW50KGRhdGEubGVuZ3RoKTtcbiAgICAgICAgICB0aGlzLmM4eUZvckNoYW5nZS5lbWl0KGRhdGEpO1xuICAgICAgICAgIHRoaXMucmVuZGVyKGRhdGEsIHJlUmVuZGVyKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy51bnN1YnNjcmliZVBhZ2luZygpO1xuICAgIHRoaXMudW5zdWJzY3JpYmUkLm5leHQoKTtcbiAgICB0aGlzLnVuc3Vic2NyaWJlJC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVSZWFsdGltZSgpIHtcbiAgICBpZiAodGhpcy5yZWFsdGltZSkge1xuICAgICAgdGhpcy5oYW5kbGVSZWFsdGltZUNyZWF0ZSgpO1xuICAgICAgdGhpcy5oYW5kbGVSZWFsdGltZVVwZGF0ZSgpO1xuICAgICAgdGhpcy5oYW5kbGVSZWFsdGltZURlbGV0ZSgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBPbiBjcmVhdGUgbm90aWZpY2F0aW9uOlxuICAgKiAtIGlmIGl0ZW0gcGFzc2VzIGRhdGEgcGlwZSwgdGhlbiBpbnNlcnQgaXQuXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBwcml2YXRlIGhhbmRsZVJlYWx0aW1lQ3JlYXRlKCkge1xuICAgIGNvbnN0IHsgZW50aXR5T3JJZCB9ID0gdGhpcy5yZWFsdGltZU9wdGlvbnM7XG4gICAgdGhpcy5yZWFsdGltZVxuICAgICAgLm9uQ3JlYXRlJChlbnRpdHlPcklkKVxuICAgICAgLnBpcGUoXG4gICAgICAgIGl0ZW0kID0+IHRoaXMuaXRlbURhdGFQaXBlKGl0ZW0kKSxcbiAgICAgICAgZmlsdGVyKGl0ZW0gPT4gISFpdGVtKSxcbiAgICAgICAgdGFrZVVudGlsKHRoaXMudW5zdWJzY3JpYmUkKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZShpdGVtID0+IHRoaXMuaW5zZXJ0KGl0ZW0pKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBPbiB1cGRhdGUgbm90aWZpY2F0aW9uOlxuICAgKiAtIGlmIGl0ZW0gaXMgZGlzcGxheWVkIGFuZCBwYXNzZXMgZGF0YSBwaXBlLCB0aGVuIHVwZGF0ZSBpdCxcbiAgICogLSBpZiBpdGVtIGlzIGRpc3BsYXllZCBhbmQgZG9lc24ndCBwYXNzIGRhdGEgcGlwZSwgdGhlbiByZW1vdmUgaXQgKGlmIGByZW1vdmVPblVwZGF0ZWAgaXMgdHJ1ZSksXG4gICAqIC0gaWYgaXRlbSBpcyBub3QgZGlzcGxheWVkIGFuZCBwYXNzZXMgZGF0YSBwaXBlLCB0aGVuIGluc2VydCBpdCAoaWYgYGluc2VydE9uVXBkYXRlYCBpcyB0cnVlKSxcbiAgICogLSBpZiBpdGVtIGlzIG5vdCBkaXNwbGF5ZWQgYW5kIGRvZXNuJ3QgcGFzcyBkYXRhIHBpcGUsIHRoZW4gaWdub3JlIGl0LlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgcHJpdmF0ZSBoYW5kbGVSZWFsdGltZVVwZGF0ZSgpIHtcbiAgICBjb25zdCB7IGVudGl0eU9ySWQgfSA9IHRoaXMucmVhbHRpbWVPcHRpb25zO1xuICAgIHRoaXMucmVhbHRpbWVcbiAgICAgIC5vblVwZGF0ZSQoZW50aXR5T3JJZClcbiAgICAgIC5waXBlKFxuICAgICAgICBpdGVtJCA9PlxuICAgICAgICAgIGNvbWJpbmVMYXRlc3QoW1xuICAgICAgICAgICAgaXRlbSQsXG4gICAgICAgICAgICBpdGVtJC5waXBlKFxuICAgICAgICAgICAgICBzcmMgPT4gdGhpcy5pdGVtRGF0YVBpcGUoc3JjKSxcbiAgICAgICAgICAgICAgbWFwKGl0ZW0gPT4gaXRlbSAhPT0gdW5kZWZpbmVkKVxuICAgICAgICAgICAgKVxuICAgICAgICAgIF0pLFxuICAgICAgICB0YWtlVW50aWwodGhpcy51bnN1YnNjcmliZSQpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKChbaXRlbSwgcGFzc2VzRGF0YVBpcGVdKSA9PiB7XG4gICAgICAgIGNvbnN0IHsgaW5zZXJ0T25VcGRhdGUsIHJlbW92ZU9uVXBkYXRlIH0gPSB0aGlzLnJlYWx0aW1lT3B0aW9ucztcbiAgICAgICAgY29uc3QgZGlzcGxheWVkID0gdGhpcy5pc0Rpc3BsYXllZChjb2VyY2VOdW1iZXJQcm9wZXJ0eShpdGVtLmlkKSk7XG4gICAgICAgIGlmIChkaXNwbGF5ZWQpIHtcbiAgICAgICAgICBpZiAocGFzc2VzRGF0YVBpcGUpIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlKGl0ZW0pO1xuICAgICAgICAgIH0gZWxzZSBpZiAocmVtb3ZlT25VcGRhdGUpIHtcbiAgICAgICAgICAgIHRoaXMucmVtb3ZlKGNvZXJjZU51bWJlclByb3BlcnR5KGl0ZW0uaWQpKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAocGFzc2VzRGF0YVBpcGUgJiYgaW5zZXJ0T25VcGRhdGUpIHtcbiAgICAgICAgICB0aGlzLmluc2VydChpdGVtKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogT24gZGVsZXRlIG5vdGlmaWNhdGlvbjpcbiAgICogLSByZW1vdmUgaXRlbSBmcm9tIHRoZSBsaXN0IChpZiBub3QgdGhlcmUsIGl0IHdpbGwgYmUganVzdCBpZ25vcmVkKS5cbiAgICogQHByaXZhdGVcbiAgICovXG4gIHByaXZhdGUgaGFuZGxlUmVhbHRpbWVEZWxldGUoKSB7XG4gICAgY29uc3QgeyBlbnRpdHlPcklkIH0gPSB0aGlzLnJlYWx0aW1lT3B0aW9ucztcbiAgICB0aGlzLnJlYWx0aW1lXG4gICAgICAub25EZWxldGUkKGVudGl0eU9ySWQpXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy51bnN1YnNjcmliZSQpKVxuICAgICAgLnN1YnNjcmliZShpZCA9PiB0aGlzLnJlbW92ZShjb2VyY2VOdW1iZXJQcm9wZXJ0eShpZCkpKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVuZGVyKGRhdGEsIHJlUmVuZGVyID0gZmFsc2UpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5jOHlGb3JFbmFibGVWaXJ0dWFsU2Nyb2xsKSB7XG4gICAgICBpZiAoIXRoaXMudmlydHVhbFNjcm9sbEluc3RhbmNlKSB7XG4gICAgICAgIHRoaXMudmlydHVhbFNjcm9sbEluc3RhbmNlID0gdGhpcy5jcmVhdGVWaXJ0dWFsU2Nyb2xsV3JhcHBlckNvbXBvbmVudCgpO1xuICAgICAgICBpZiAodGhpcy5zaG91bGRVc2VMb2FkTW9yZUJ1dHRvbikge1xuICAgICAgICAgIHRoaXMubG9hZE1vcmUgPSB0aGlzLmNyZWF0ZUxvYWRNb3JlQnV0dG9uQ29tcG9uZW50KGZhbHNlKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICB0aGlzLnNldFZpcnR1YWxTY3JvbGxDb250ZW50cyhkYXRhKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnZjci5jbGVhcigpO1xuXG4gICAgZGF0YS5mb3JFYWNoKChpdGVtLCBpbmRleCkgPT4ge1xuICAgICAgY29uc3QgY29udGV4dCA9IHtcbiAgICAgICAgJGltcGxpY2l0OiBpdGVtLFxuICAgICAgICBpbmRleCxcbiAgICAgICAgbGVuZ3RoOiB0aGlzLmxlbmd0aCxcbiAgICAgICAgaGFzTW9yZTogdGhpcy5oYXNNb3JlRGF0YSxcbiAgICAgICAgbG9hZE1vcmVDb21wb25lbnQ6IHRoaXMubG9hZE1vcmVcbiAgICAgIH07XG4gICAgICB0aGlzLnZjci5jcmVhdGVFbWJlZGRlZFZpZXcodGhpcy50cGwsIGNvbnRleHQpO1xuICAgIH0pO1xuXG4gICAgaWYgKHRoaXMuc2hvdWxkVXNlTG9hZE1vcmVCdXR0b24pIHtcbiAgICAgIHRoaXMubG9hZE1vcmUgPSB0aGlzLmNyZWF0ZUxvYWRNb3JlQnV0dG9uQ29tcG9uZW50KHJlUmVuZGVyKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFwcGVuZChkYXRhKSB7XG4gICAgaWYgKHRoaXMuYzh5Rm9yRW5hYmxlVmlydHVhbFNjcm9sbCkge1xuICAgICAgdGhpcy5hcHBlbmRWaXJ0dWFsU2Nyb2xsQ29udGVudChkYXRhKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBkYXRhLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICBjb25zdCBpbmRleCA9IHRoaXMuc2hvdWxkVXNlTG9hZE1vcmVCdXR0b24gPyB0aGlzLnZjci5sZW5ndGggLSAxIDogdGhpcy52Y3IubGVuZ3RoO1xuICAgICAgY29uc3QgY29udGV4dCA9IHtcbiAgICAgICAgJGltcGxpY2l0OiBpdGVtLFxuICAgICAgICBpbmRleCxcbiAgICAgICAgbGVuZ3RoOiB0aGlzLmxlbmd0aCxcbiAgICAgICAgaGFzTW9yZTogdGhpcy5oYXNNb3JlRGF0YSxcbiAgICAgICAgbG9hZE1vcmVDb21wb25lbnQ6IHRoaXMubG9hZE1vcmVcbiAgICAgIH07XG4gICAgICB0aGlzLnZjci5jcmVhdGVFbWJlZGRlZFZpZXcodGhpcy50cGwsIGNvbnRleHQsIGluZGV4KTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgbG9hZE1vcmVEYXRhKGRhdGEpIHtcbiAgICBpZiAoZGF0YS5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLnVwZGF0ZUNvdW50KGRhdGEubGVuZ3RoKTtcbiAgICAgIHRoaXMuYzh5Rm9yQ2hhbmdlLmVtaXQoZGF0YSk7XG4gICAgICB0aGlzLmFwcGVuZChkYXRhKTtcbiAgICB9XG4gICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZUxvYWRNb3JlQnV0dG9uQ29tcG9uZW50KHJlUmVuZGVyKSB7XG4gICAgY29uc3QgY29tcG9uZW50UmVmID0gdGhpcy52Y3IuY3JlYXRlQ29tcG9uZW50KExvYWRNb3JlQ29tcG9uZW50KTtcbiAgICBjb25zdCBpbnN0YW5jZSA9IGNvbXBvbmVudFJlZi5pbnN0YW5jZSBhcyBMb2FkTW9yZUNvbXBvbmVudDtcbiAgICBpbnN0YW5jZS5wYWdpbmcgPSB0aGlzLnBhZ2luZztcbiAgICBpbnN0YW5jZS51c2VJbnRlcnNlY3Rpb24gPSB0aGlzLmxvYWRNb3JlTW9kZSA9PT0gJ2F1dG8nIHx8IHRoaXMubG9hZE1vcmVNb2RlID09PSAnaGlkZGVuJztcbiAgICBpbnN0YW5jZS5oaWRkZW4gPSB0aGlzLmxvYWRNb3JlTW9kZSA9PT0gJ2hpZGRlbic7XG4gICAgaW5zdGFuY2UubWF4SXRlcmF0aW9ucyA9IHRoaXMubWF4SXRlcmF0aW9ucztcbiAgICBpbnN0YW5jZS5ub01vcmVEYXRhSGludCA9IHRoaXMubm90Rm91bmRUZW1wbGF0ZTtcbiAgICBpbnN0YW5jZS5sb2FkaW5nVGVtcGxhdGUgPSB0aGlzLmxvYWRpbmdUZW1wbGF0ZTtcbiAgICBpbnN0YW5jZS5sb2FkTmV4dExhYmVsID0gdGhpcy5sb2FkTmV4dExhYmVsO1xuICAgIGluc3RhbmNlLmxvYWRpbmdMYWJlbCA9IHRoaXMubG9hZGluZ0xhYmVsO1xuICAgIHRoaXMuYzh5Rm9yTG9hZE1vcmVDb21wb25lbnQuZW1pdChpbnN0YW5jZSk7XG4gICAgdGhpcy5wYWdpbmdTdWIgPSBpbnN0YW5jZS5vbkxvYWRcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoKGRhdGE6IFtdKSA9PiB0aGlzLmNoZWNrRm9yRHVwbGljYXRlcyhkYXRhKSksXG4gICAgICAgIHRhcCgoZGF0YTogW10pID0+IHtcbiAgICAgICAgICB0aGlzLmNhY2hlZERhdGEgPSB0aGlzLmNhY2hlZERhdGEuY29uY2F0KGRhdGEpO1xuICAgICAgICB9KVxuICAgICAgKVxuICAgICAgLnBpcGUoc3JjID0+IHRoaXMuZGF0YVBpcGUoc3JjKSlcbiAgICAgIC5zdWJzY3JpYmUoZGF0YSA9PiB0aGlzLmxvYWRNb3JlRGF0YShkYXRhKSk7XG4gICAgaWYgKHJlUmVuZGVyKSB7XG4gICAgICBhc3NpZ24oaW5zdGFuY2UsIHRoaXMubG9hZE1vcmUpO1xuICAgIH1cbiAgICByZXR1cm4gaW5zdGFuY2U7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZVZpcnR1YWxTY3JvbGxXcmFwcGVyQ29tcG9uZW50KCkge1xuICAgIGNvbnN0IGNvbXBvbmVudFJlZiA9IHRoaXMudmNyLmNyZWF0ZUNvbXBvbmVudChWaXJ0dWFsU2Nyb2xsZXJXcmFwcGVyQ29tcG9uZW50KTtcbiAgICBjb25zdCBpbnN0YW5jZSA9IGNvbXBvbmVudFJlZi5pbnN0YW5jZSBhcyBWaXJ0dWFsU2Nyb2xsZXJXcmFwcGVyQ29tcG9uZW50O1xuICAgIGluc3RhbmNlLml0ZW1zID0gdGhpcy5jYWNoZWREYXRhO1xuICAgIGluc3RhbmNlLml0ZW1IZWlnaHQgPSB0aGlzLmM4eUZvclZpcnR1YWxTY3JvbGxFbGVtZW50U2l6ZTtcbiAgICBpbnN0YW5jZS50ZW1wbGF0ZSA9IHRoaXMudHBsO1xuICAgIGluc3RhbmNlLnN0cmF0ZWd5ID0gdGhpcy5jOHlGb3JWaXJ0dWFsU2Nyb2xsU3RyYXRlZ3k7XG4gICAgaW5zdGFuY2UuY29udGFpbmVySGVpZ2h0ID0gdGhpcy5jOHlGb3JWaXJ0dWFsU2Nyb2xsQ29udGFpbmVySGVpZ2h0O1xuXG4gICAgcmV0dXJuIGluc3RhbmNlO1xuICB9XG5cbiAgcHJpdmF0ZSBpbnNlcnQoaXRlbSkge1xuICAgIGxldCBpbmRleCA9IDA7XG5cbiAgICBpZiAodGhpcy5jb21wYXJhdG9yICYmIHRoaXMuY2FjaGVkRGF0YS5sZW5ndGgpIHtcbiAgICAgIGxldCBjb21wYXJpc2lvblJlc3VsdDogbnVtYmVyO1xuICAgICAgZG8ge1xuICAgICAgICBjb25zdCB2aWV3OiBFbWJlZGRlZFZpZXdSZWY8YW55PiA9IHRoaXMudmNyLmdldChpbmRleCkgYXMgRW1iZWRkZWRWaWV3UmVmPGFueT47XG4gICAgICAgIGNvbnN0IGl0ZW1CID0gZ2V0KHZpZXcsICdjb250ZXh0LiRpbXBsaWNpdCcpO1xuICAgICAgICBjb21wYXJpc2lvblJlc3VsdCA9IGl0ZW0gJiYgaXRlbUIgPyB0aGlzLmNvbXBhcmF0b3IoaXRlbSwgaXRlbUIpIDogMDtcbiAgICAgICAgaWYgKGNvbXBhcmlzaW9uUmVzdWx0IDw9IDApIHtcbiAgICAgICAgICBpbmRleCsrO1xuICAgICAgICB9XG4gICAgICB9IHdoaWxlIChjb21wYXJpc2lvblJlc3VsdCA8PSAwICYmIGluZGV4IDwgdGhpcy5jYWNoZWREYXRhLmxlbmd0aCk7XG4gICAgfVxuXG4gICAgLy8gRG8gbm90IGFwcGVuZCBlbGVtZW50cyBhZnRlciB0aGUgbGFzdCBvbmUgY3VycmVudGx5IGxvYWRlZCxcbiAgICAvLyBhcyBpdCBtYXkgYmVsb25nIGZ1cnRoZXIgZG93biB0aGVyZSBvbiB0aGUgbGlzdCBhbmQgd2lsbFxuICAgIC8vIGJlIGV2ZW50dWFsbHkgbG9hZGVkIHdpdGggb25lIG9mIHRoZSBuZXh0IHBhZ2VzLlxuICAgIGlmIChpbmRleCA8IHRoaXMuY2FjaGVkRGF0YS5sZW5ndGggfHwgdGhpcy5jYWNoZWREYXRhLmxlbmd0aCA9PT0gMCkge1xuICAgICAgY29uc3QgY29udGV4dCA9IHtcbiAgICAgICAgJGltcGxpY2l0OiBpdGVtLFxuICAgICAgICBpbmRleCxcbiAgICAgICAgbGVuZ3RoOiB0aGlzLmxlbmd0aCxcbiAgICAgICAgaGFzTW9yZTogdGhpcy5oYXNNb3JlRGF0YVxuICAgICAgfTtcblxuICAgICAgdGhpcy5jYWNoZWREYXRhLnNwbGljZShpbmRleCwgMCwgaXRlbSk7XG4gICAgICBjb25zdCB2aWV3UmVmOiBWaWV3UmVmID0gdGhpcy50cGwuY3JlYXRlRW1iZWRkZWRWaWV3KGNvbnRleHQpO1xuICAgICAgdGhpcy52Y3IuaW5zZXJ0KHZpZXdSZWYsIGluZGV4KTtcbiAgICAgIHRoaXMudXBkYXRlQ291bnQoMSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGUodXBkYXRlZEl0ZW0pIHtcbiAgICB0aGlzLmZvck1hdGNoaW5nRW1iZWRkZWRWaWV3UmVmKFxuICAgICAgKGl0ZW06IElJZGVudGlmaWVkKSA9PiBpdGVtICYmIHVwZGF0ZWRJdGVtICYmIGl0ZW0uaWQgPT09IHVwZGF0ZWRJdGVtLmlkLFxuICAgICAgKHZpZXc6IEVtYmVkZGVkVmlld1JlZjxhbnk+KSA9PiB7XG4gICAgICAgIHZpZXcuY29udGV4dC4kaW1wbGljaXQgPSB1cGRhdGVkSXRlbTtcbiAgICAgICAgdmlldy5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIH1cbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSByZW1vdmUoaWRUb1JlbW92ZSkge1xuICAgIGlmICh0aGlzLmlzRGlzcGxheWVkKGlkVG9SZW1vdmUpKSB7XG4gICAgICB0aGlzLnVwZGF0ZUNvdW50KC0xKTtcbiAgICB9XG4gICAgdGhpcy5mb3JNYXRjaGluZ0VtYmVkZGVkVmlld1JlZihcbiAgICAgIChpdGVtOiBJSWRlbnRpZmllZCkgPT4gaXRlbSAmJiBjb2VyY2VOdW1iZXJQcm9wZXJ0eShpdGVtLmlkLCBOYU4pID09PSBpZFRvUmVtb3ZlLFxuICAgICAgKHZpZXc6IEVtYmVkZGVkVmlld1JlZjxhbnk+KSA9PiB2aWV3LmRlc3Ryb3koKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZUNvdW50KGNvdW50Q2hhbmdlOiBudW1iZXIpIHtcbiAgICB0aGlzLmNvdW50ICs9IGNvdW50Q2hhbmdlO1xuICAgIHRoaXMuYzh5Rm9yQ291bnQuZW1pdCh0aGlzLmNvdW50KTtcbiAgfVxuXG4gIHByaXZhdGUgaXNEaXNwbGF5ZWQoaWRUb0NoZWNrKSB7XG4gICAgbGV0IGRpc3BsYXllZCA9IGZhbHNlO1xuICAgIHRoaXMuZm9yTWF0Y2hpbmdFbWJlZGRlZFZpZXdSZWYoXG4gICAgICAoaXRlbTogSUlkZW50aWZpZWQpID0+IGl0ZW0gJiYgY29lcmNlTnVtYmVyUHJvcGVydHkoaXRlbS5pZCwgTmFOKSA9PT0gaWRUb0NoZWNrLFxuICAgICAgKCkgPT4ge1xuICAgICAgICBkaXNwbGF5ZWQgPSB0cnVlO1xuICAgICAgfVxuICAgICk7XG4gICAgcmV0dXJuIGRpc3BsYXllZDtcbiAgfVxuXG4gIHByaXZhdGUgZm9yTWF0Y2hpbmdFbWJlZGRlZFZpZXdSZWYoXG4gICAgZmlsdGVyRm46IChpdGVtOiBJSWRlbnRpZmllZCkgPT4gYm9vbGVhbixcbiAgICBjYWxsYmFja0ZuOiAodmlldzogRW1iZWRkZWRWaWV3UmVmPGFueT4pID0+IHZvaWRcbiAgKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnZjci5sZW5ndGg7IGkrKykge1xuICAgICAgY29uc3QgdmlldzogRW1iZWRkZWRWaWV3UmVmPGFueT4gPSB0aGlzLnZjci5nZXQoaSkgYXMgRW1iZWRkZWRWaWV3UmVmPGFueT47XG4gICAgICBjb25zdCBpdGVtOiBJSWRlbnRpZmllZCA9IGdldCh2aWV3LCAnY29udGV4dC4kaW1wbGljaXQnKTtcbiAgICAgIGlmIChmaWx0ZXJGbihpdGVtKSkge1xuICAgICAgICBjYWxsYmFja0ZuKHZpZXcpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY2hlY2tGb3JEdXBsaWNhdGVzKGRhdGE6IElJZGVudGlmaWVkW10pOiBJSWRlbnRpZmllZFtdIHtcbiAgICByZXR1cm4gdGhpcy5yZWFsdGltZVxuICAgICAgPyBkYXRhLmZpbHRlcihpdGVtID0+ICF0aGlzLmNhY2hlZERhdGEuc29tZShjYWNoZWQgPT4gY2FjaGVkLmlkID09PSBpdGVtLmlkKSlcbiAgICAgIDogZGF0YTtcbiAgfVxuXG4gIHByaXZhdGUgdW5zdWJzY3JpYmVQYWdpbmcoKSB7XG4gICAgaWYgKHRoaXMucGFnaW5nU3ViKSB7XG4gICAgICB0aGlzLnBhZ2luZ1N1Yi51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc2V0VmlydHVhbFNjcm9sbENvbnRlbnRzKGl0ZW1zKSB7XG4gICAgaWYgKHRoaXMuYzh5Rm9yRW5hYmxlVmlydHVhbFNjcm9sbCAmJiB0aGlzLnZpcnR1YWxTY3JvbGxJbnN0YW5jZSkge1xuICAgICAgdGhpcy52aXJ0dWFsU2Nyb2xsSW5zdGFuY2UuaXRlbXMgPSBpdGVtcztcbiAgICAgIHRoaXMudmlydHVhbFNjcm9sbEluc3RhbmNlLmFwcGx5KCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhcHBlbmRWaXJ0dWFsU2Nyb2xsQ29udGVudChpdGVtcykge1xuICAgIGlmICh0aGlzLmM4eUZvckVuYWJsZVZpcnR1YWxTY3JvbGwgJiYgdGhpcy52aXJ0dWFsU2Nyb2xsSW5zdGFuY2UpIHtcbiAgICAgIHRoaXMudmlydHVhbFNjcm9sbEluc3RhbmNlLml0ZW1zID0gdGhpcy52aXJ0dWFsU2Nyb2xsSW5zdGFuY2UuaXRlbXMuY29uY2F0KGl0ZW1zKTtcbiAgICAgIHRoaXMudmlydHVhbFNjcm9sbEluc3RhbmNlLmFwcGx5KCk7XG4gICAgfVxuICB9XG59XG4iXX0=
575
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9yT2YuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vY29yZS9jb21tb24vZm9yT2YuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzdELE9BQU8sRUFDTCxpQkFBaUIsRUFDakIsU0FBUyxFQUVULFlBQVksRUFDWixLQUFLLEVBQ0wsTUFBTSxFQUVOLFdBQVcsRUFDWCxnQkFBZ0IsRUFFakIsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDeEMsT0FBTyxFQUNMLGFBQWEsRUFDYixZQUFZLEVBRVosRUFBRSxFQUNGLElBQUksRUFDSixPQUFPLEVBR1IsTUFBTSxNQUFNLENBQUM7QUFDZCxPQUFPLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHN0QsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFMUQsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0scURBQXFELENBQUM7O0FBRXRHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBOEZHO0FBSUgsTUFBTSxPQUFPLGNBQWM7SUF3QnpCLElBQVksdUJBQXVCO1FBQ2pDLE9BQU8sQ0FDTCxJQUFJLENBQUMsWUFBWSxLQUFLLE1BQU0sSUFBSSxJQUFJLENBQUMsWUFBWSxLQUFLLE1BQU0sSUFBSSxJQUFJLENBQUMsWUFBWSxLQUFLLFFBQVEsQ0FDL0YsQ0FBQztJQUNKLENBQUM7SUFFRCxJQUFZLFdBQVc7UUFDckIsT0FBTyxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUks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QkFBcUIsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNyQyxDQUFDO0lBQ0gsQ0FBQztJQUVPLDBCQUEwQixDQUFDLEtBQUs7UUFDdEMsSUFBSSxJQUFJLENBQUMseUJBQXlCLElBQUksSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7WUFDakUsSUFBSSxDQUFDLHFCQUFxQixDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMscUJBQXFCLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNsRixJQUFJLENBQUMscUJBQXFCLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDckMsQ0FBQztJQUNILENBQUM7OEdBNWlCVSxjQUFjO2tHQUFkLGNBQWM7OzJGQUFkLGNBQWM7a0JBSDFCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLFVBQVU7aUJBQ3JCOytJQTRDSyxRQUFRO3NCQURYLEtBQUs7Z0JBMEJGLGNBQWM7c0JBRGpCLEtBQUs7Z0JBU0YsVUFBVTtzQkFEYixLQUFLO2dCQVdGLGNBQWM7c0JBRGpCLEtBQUs7Z0JBWUYsbUJBQW1CO3NCQUR0QixLQUFLO2dCQVNGLHFCQUFxQjtzQkFEeEIsS0FBSztnQkFTRixtQkFBbUI7c0JBRHRCLEtBQUs7Z0JBU0Ysa0JBQWtCO3NCQURyQixLQUFLO2dCQVNGLGNBQWM7c0JBRGpCLEtBQUs7Z0JBU0YscUJBQXFCO3NCQUR4QixLQUFLO2dCQVVGLGdCQUFnQjtzQkFEbkIsS0FBSztnQkFTTix5QkFBeUI7c0JBRHhCLEtBQUs7Z0JBT04sOEJBQThCO3NCQUQ3QixLQUFLO2dCQVNOLDJCQUEyQjtzQkFEMUIsS0FBSztnQkFPTixrQ0FBa0M7c0JBRGpDLEtBQUs7Z0JBbUJFLFdBQVc7c0JBRGxCLE1BQU07Z0JBbUJDLFlBQVk7c0JBRG5CLE1BQU07Z0JBT0MsdUJBQXVCO3NCQUQ5QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY29lcmNlTnVtYmVyUHJvcGVydHkgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIERpcmVjdGl2ZSxcbiAgRW1iZWRkZWRWaWV3UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPdXRwdXQsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3Q29udGFpbmVyUmVmLFxuICBWaWV3UmVmXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSUlkZW50aWZpZWQsIElSZXN1bHRMaXN0LCBQYWdpbmcgfSBmcm9tICdAYzh5L2NsaWVudCc7XG5pbXBvcnQgeyBhc3NpZ24sIGdldCB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQge1xuICBjb21iaW5lTGF0ZXN0LFxuICBpc09ic2VydmFibGUsXG4gIE9ic2VydmFibGUsXG4gIG9mLFxuICBwaXBlLFxuICBTdWJqZWN0LFxuICBTdWJzY3JpcHRpb24sXG4gIFVuYXJ5RnVuY3Rpb25cbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBmaWx0ZXIsIG1hcCwgdGFrZVVudGlsLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBSZWFsdGltZVNlcnZpY2UgfSBmcm9tICcuLi9yZWFsdGltZS9yZWFsdGltZS5zZXJ2aWNlJztcbmltcG9ydCB7IEZvck9mRmlsdGVyUGlwZSwgRm9yT2ZSZWFsdGltZU9wdGlvbnMgfSBmcm9tICcuL2Zvck9mLm1vZGVsJztcbmltcG9ydCB7IExvYWRNb3JlQ29tcG9uZW50IH0gZnJvbSAnLi9sb2FkLW1vcmUuY29tcG9uZW50JztcbmltcG9ydCB7IExvYWRNb3JlTW9kZSB9IGZyb20gJy4vbG9hZC1tb3JlLm1vZGVsJztcbmltcG9ydCB7IFZpcnR1YWxTY3JvbGxlcldyYXBwZXJDb21wb25lbnQgfSBmcm9tICcuL3ZpcnR1YWwtc2Nyb2xsL3ZpcnR1YWwtc2Nyb2xsZXItd3JhcHBlci5jb21wb25lbnQnO1xuXG4vKipcbiAqIEEgZGlyZWN0aXZlIHRvIGl0ZXJhdGUgb3ZlciBJUmVzdWx0TGlzdDxUPiBkYXRhIGZyb20gQGM4eS9jbGllbnQuXG4gKiBEZXBlbmRpbmcgb24gdGhlIFtjOHlGb3JMb2FkTW9yZV0gYSBsb2FkIG1vcmUgYnV0dG9uIGlzOlxuICogIC0gYXV0bzogVHJpZXMgdG8gYXV0b21hdGljYWxseSBsb2FkIG1vcmUgZGF0YSAoZGVmYXVsdCBtYXhpbXVtIDEwIGl0ZXJhdGlvbnM7IGNhbiBiZVxuICogICAgICAgICAgY2hhbmdlIHdpdGggbWF4SXRlcmF0aW9ucyBzZXR0aW5ncykuXG4gKiAgLSBzaG93OiBTaG93cyBhIGxvYWQgbW9yZSBidXR0b24gZm9yIHRoZSB1c2VyIHRvIGRlY2lkZVxuICogIC0gbm9uZTogRG9lc24ndCBwZXJmb3JtIGFueSBsb2FkIG1vcmUgYWN0aW9uLlxuICogIC0gaGlkZGVuOiBMb2FkcyBtb3JlIGRhdGEgYXV0b21hdGljYWxseSBidXQgd2l0aCBubyB2aXNpYmxlIGJ1dHRvbiBmb3IgdGhlIHVzZXIuXG4gKlxuICogQWRkaXRpb25hbCwgYW55IHJ4anMgb3BlcmF0b3IgcGlwZSBjYW4gYmUgYXBwbGllZCB0byB0aGUgW2M4eUZvclBpcGVdIGlucHV0LCBlLmcuIHRvXG4gKiBmaWx0ZXIgdGhlIGRhdGEgZGlzcGxheWVkIGN1cnJlbnRseSBhcyB3ZWxsIGFzIHRoZSBkYXRhIGxvYWRlZCBieSBzdWJzZXF1ZW50IHJlcXVlc3RzLlxuICpcbiAqIGBgYGh0bWxcbiAqIDxkaXYgKmM4eUZvcj1cImxldCBkZXZpY2Ugb2YgZGV2aWNlczsgbG9hZE1vcmU6ICdhdXRvJzsgbGV0IGkgPSBpbmRleDsgcGlwZTogZmlsdGVyUGlwZTtcIj5cbiAqICB7eyBpICsgMSB9fS4ge3tkZXZpY2UubmFtZX19XG4gKiA8L2Rpdj5cbiAqIGBgYFxuICogVGhlIGFib3ZlIGV4YW1wbGUgd2lsbCBsaXN0IGFsbCBlbnRpdGllcyB0aGF0IGFyZSBhcHBsaWVkIHRvIGBkZXZpY2VzYDpcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIHRoaXMuZGV2aWNlcyA9IHRoaXMuaW52ZW50b3J5U2VydmljZS5saXN0KHsgcGFnZVNpemU6IDEwLCBmcmFnbWVudFR5cGU6ICdjOHlfSXNEZXZpY2UnIH0pXG4gKiBgYGBcbiAqIEl0IHdpbGwgZGlzcGxheSB0aGUgZmlyc3QgMTAgaXRlbXMsIGlmIHRoZXJlIGlzIG1vcmUgc3BhY2UgbGVmdCBvbiB0aGUgc2NyZWVuLCBhbmQgdGhlcmUgYXJlIG1vcmVcbiAqIHRoYW4gMTAgZGV2aWNlcywgaXQgd2lsbCBhdXRvbWF0aWNhbGx5IGxvYWQgdXAgdG8gMTAgcGFnZXMgbW9yZS4gSWYgaXQgc3RpbGwgY2FuJ3QgZml0IHRoZSBzY3JlZW5cbiAqIGl0IHdpbGwgc3RvcCBhbmQgc3dpdGNoIHRvIGBzaG93YCBtb2RlLlxuICpcbiAqIEEgcGlwZSBjYW4gYmUgYXBwbGllZCBlLmcuIGZvciBmaWx0ZXJpbmcgb3IgZ3JvdXBpbmcuIFRoaXMgcGlwZSBpcyBhdHRhY2hlZCB0byBldmVyeSBmb2xsb3cgdXBcbiAqIHJlcXVlc3QgZG9uZSBieSB0aGUgbG9hZCBtb3JlIGNvbXBvbmVudDpcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIHRoaXMuZmlsdGVyUGlwZSA9IHBpcGUoXG4gKiAgICBtYXAoKGRhdGE6IFtdKSA9PiB7XG4gKiAgICAgcmV0dXJuIGRhdGEuZmlsdGVyKFxuICogICAgICAobW86IGFueSkgPT4gbW8ubmFtZSAmJiBtby5uYW1lLnRvTG93ZXJDYXNlKCkuaW5kZXhPZih2YWx1ZS50b0xvd2VyQ2FzZSgpKSA+IC0xXG4gKiAgICApO1xuICogIH0pXG4gKiApO1xuICogYGBgXG4gKiBUaGUgcGlwZSBtdXN0IGJlIGFuIHJ4anMgcGlwZSBhbmQgY2FuIHRha2UgYW55IG9wZXJhdG9yLlxuICpcbiAqIEV4YW1wbGUgd2l0aCByZWFsdGltZSBzdXBwb3J0IGFuZCBpdGVtcyBjb3VudCBvdXRwdXQgKGUuZy4gZm9yIGhhbmRsaW5nIGVtcHR5IHN0YXRlIGFuZCBoZWFkZXIpOlxuICpcbiAqIGBgYGh0bWxcbiAqIDxjOHktbGlzdC1ncm91cD5cbiAqICAgPGRpdiBjbGFzcz1cImM4eS1lbXB0eS1zdGF0ZVwiICpuZ0lmPVwiY291bnQgPT09IDBcIj5cbiAqICAgICAoLi4uKVxuICogICA8L2Rpdj5cbiAqXG4gKiAgIDxkaXYgY2xhc3M9XCJwYWdlLXN0aWNreS1oZWFkZXIgaGlkZGVuLXhzIGM4eS1saXN0X19pdGVtIGM4eS1saXN0LS10aW1lbGluZVwiICpuZ0lmPVwiY291bnQgPiAwXCI+XG4gKiAgICAgKC4uLilcbiAqICAgPC9kaXY+XG4gKlxuICogICA8bmctdGVtcGxhdGVcbiAqICAgICBjOHlGb3JcbiAqICAgICBsZXQtb3BlcmF0aW9uXG4gKiAgICAgW2M4eUZvck9mXT1cIml0ZW1zJFwiXG4gKiAgICAgW2M4eUZvclBpcGVdPVwiZmlsdGVyUGlwZVwiXG4gKiAgICAgW2M4eUZvclJlYWx0aW1lXT1cInJlYWx0aW1lXCJcbiAqICAgICBbYzh5Rm9yUmVhbHRpbWVPcHRpb25zXT1cInJlYWx0aW1lT3B0aW9uc1wiXG4gKiAgICAgKGM4eUZvckNvdW50KT1cImNvdW50ID0gJGV2ZW50XCJcbiAqICAgPlxuICogICAgIDxjOHktbGktdGltZWxpbmU+XG4gKiAgICAgICAoLi4uKVxuICogICAgIDwvYzh5LWxpLXRpbWVsaW5lPlxuICogICA8L25nLXRlbXBsYXRlPlxuICogPC9jOHktbGlzdC1ncm91cD5cbiAqIGBgYFxuICpcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIEBDb21wb25lbnQoe1xuICogICAoLi4uKVxuICogfSlcbiAqIGV4cG9ydCBjbGFzcyBFeGFtcGxlQ29tcG9uZW50IHtcbiAqICAgQElucHV0KCkgZGV2aWNlSWQ6IElJZGVudGlmaWVkO1xuICogICBpdGVtcyQgPSB0aGlzLm9wZXJhdGlvblNlcnZpY2UubGlzdCh7XG4gKiAgICAgZGV2aWNlSWQ6IHRoaXMuZGV2aWNlSWQsXG4gKiAgICAgZnJhZ21lbnRUeXBlOiAnYzh5X015T3BlcmF0aW9uJyxcbiAqICAgICBkYXRlRnJvbTogbmV3IERhdGUoMCkudG9JU09TdHJpbmcoKSxcbiAqICAgICBkYXRlVG86IG5ldyBEYXRlKERhdGUubm93KCkpLnRvSVNPU3RyaW5nKCksXG4gKiAgICAgcmV2ZXJ0OiB0cnVlLFxuICogICAgIHdpdGhUb3RhbFBhZ2VzOiB0cnVlXG4gKiAgIH0pO1xuICogICBmaWx0ZXJQaXBlID0gcGlwZShtYXAoKG9wczogSU9wZXJhdGlvbltdKSA9PiBvcHMuZmlsdGVyKG9wID0+IG9wLmM4eV9NeU9wZXJhdGlvbikpKTtcbiAqICAgcmVhbHRpbWVPcHRpb25zOiBGb3JPZlJlYWx0aW1lT3B0aW9ucyA9IHtcbiAqICAgICBlbnRpdHlPcklkOiB0aGlzLmRldmljZUlkLFxuICogICAgIHJlbW92ZU9uVXBkYXRlOiB0cnVlLFxuICogICAgIGluc2VydE9uVXBkYXRlOiB0cnVlXG4gKiAgIH0gYXMgRm9yT2ZSZWFsdGltZU9wdGlvbnM7XG4gKiAgIGNvdW50OiBudW1iZXI7XG4gKlxuICogICBjb25zdHJ1Y3RvcihcbiAqICAgICBwcml2YXRlIG9wZXJhdGlvblNlcnZpY2U6IE9wZXJhdGlvblNlcnZpY2UsXG4gKiAgICAgcHVibGljIHJlYWx0aW1lOiBPcGVyYXRpb25SZWFsdGltZVNlcnZpY2VcbiAqICAgKSB7fVxuICogfVxuICogYGBgXG4gKi9cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tjOHlGb3JdJ1xufSlcbmV4cG9ydCBjbGFzcyBGb3JPZkRpcmVjdGl2ZSB7XG4gIHByaXZhdGUgY2FjaGVkRGF0YTogSUlkZW50aWZpZWRbXSA9IFtdO1xuICBwcml2YXRlIHBhZ2luZzogUGFnaW5nPElJZGVudGlmaWVkPjtcbiAgcHJpdmF0ZSBsb2FkTW9yZU1vZGU6IExvYWRNb3JlTW9kZSA9ICdhdXRvJztcbiAgcHJpdmF0ZSBkYXRhUGlwZTogRm9yT2ZGaWx0ZXJQaXBlID0gcGlwZSh0YXAoKSk7XG4gIHByaXZhdGUgaXRlbURhdGFQaXBlOiBVbmFyeUZ1bmN0aW9uPE9ic2VydmFibGU8SUlkZW50aWZpZWQ+LCBPYnNlcnZhYmxlPElJZGVudGlmaWVkPj4gPSBwaXBlKFxuICAgIG1hcChpdGVtID0+IFtpdGVtXSksXG4gICAgc3JjID0+IHRoaXMuZGF0YVBpcGUoc3JjKSxcbiAgICBtYXAoKFtpdGVtXSkgPT4gaXRlbSlcbiAgKTtcbiAgcHJpdmF0ZSBwYWdpbmdTdWI6IFN1YnNjcmlwdGlvbjtcbiAgcHJpdmF0ZSBvYnMkOiBPYnNlcnZhYmxlPElJZGVudGlmaWVkW10+O1xuICBwcml2YXRlIGxvYWRNb3JlOiBMb2FkTW9yZUNvbXBvbmVudDtcbiAgcHJpdmF0ZSBsb2FkaW5nVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG4gIHByaXZhdGUgbWF4SXRlcmF0aW9ucyA9IDEwO1xuICBwcml2YXRlIG5vdEZvdW5kVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG4gIHByaXZhdGUgbG9hZE5leHRMYWJlbDogc3RyaW5nO1xuICBwcml2YXRlIGxvYWRpbmdMYWJlbDogc3RyaW5nO1xuICBwcml2YXRlIHJlYWx0aW1lOiBSZWFsdGltZVNlcnZpY2U8SUlkZW50aWZpZWQ+O1xuICBwcml2YXRlIHJlYWx0aW1lT3B0aW9uczogRm9yT2ZSZWFsdGltZU9wdGlvbnMgPSB7fTtcbiAgcHJpdmF0ZSBjb21wYXJhdG9yOiAoaXRlbUE6IElJZGVudGlmaWVkLCBpdGVtQjogSUlkZW50aWZpZWQpID0+IG51bWJlcjtcbiAgcHJpdmF0ZSB1bnN1YnNjcmliZSQ6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdCgpO1xuICBwcml2YXRlIHZpcnR1YWxTY3JvbGxJbnN0YW5jZTogVmlydHVhbFNjcm9sbGVyV3JhcHBlckNvbXBvbmVudDtcblxuICBwcml2YXRlIGdldCBzaG91bGRVc2VMb2FkTW9yZUJ1dHRvbigpIHtcbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy5sb2FkTW9yZU1vZGUgPT09ICdhdXRvJyB8fCB0aGlzLmxvYWRNb3JlTW9kZSA9PT0gJ3Nob3cnIHx8IHRoaXMubG9hZE1vcmVNb2RlID09PSAnaGlkZGVuJ1xuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGdldCBoYXNNb3JlRGF0YSgpIHtcbiAgICByZXR1cm4gdGhpcy5sb2FkTW9yZSAmJiB0aGlzLmxvYWRNb3JlLmhhc01vcmU7XG4gIH1cblxuICBwcml2YXRlIGdldCBsZW5ndGgoKSB7XG4gICAgcmV0dXJuIHRoaXMuY2FjaGVkRGF0YS5sZW5ndGg7XG4gIH1cblxuICAvKipcbiAgICogVGhlIGRhdGEgc2V0dGVyLiBNdXN0IGJlIGEgcmVzcG9uc2UgZnJvbSBAYzh5L2RhdGEgb3IgYW4gb2JzZXJ2YWJsZS5cbiAgICogWW91IGNhbiBwYXNzIGFuIG9ic2VydmFibGUgd2l0aCBudWxsIHRvIGV4cGxpY2l0bHkgY2xlYXIgdGhlIGxpc3QuXG4gICAqL1xuICBASW5wdXQoKVxuICBzZXQgYzh5Rm9yT2YoZmV0Y2hEYXRhOiBJUmVzdWx0TGlzdDxJSWRlbnRpZmllZD4gfCBPYnNlcnZhYmxlPElSZXN1bHRMaXN0PElJZGVudGlmaWVkPj4pIHtcbiAgICBpZiAoZmV0Y2hEYXRhKSB7XG4gICAgICB0aGlzLm9icyQgPSAoaXNPYnNlcnZhYmxlKGZldGNoRGF0YSkgPyBmZXRjaERhdGEgOiBvZihmZXRjaERhdGEpKS5waXBlKFxuICAgICAgICBtYXAocmVzdWx0ID0+IHtcbiAgICAgICAgICBpZiAocmVzdWx0ID09PSBudWxsKSB7XG4gICAgICAgICAgICB0aGlzLnBhZ2luZyA9IG51bGw7XG4gICAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnN0IHsgcGFnaW5nLCBkYXRhIH0gPSByZXN1bHQ7XG4gICAgICAgICAgdGhpcy5wYWdpbmcgPSBwYWdpbmc7XG4gICAgICAgICAgcmV0dXJuIGRhdGE7XG4gICAgICAgIH0pXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgbW9kZSBzZXR0ZXI6XG4gICAqICAtIGF1dG86IFRyaWVzIHRvIGF1dG9tYXRpY2FsbHkgbG9hZCBtb3JlIGRhdGEgKGRlZmF1bHQgbWF4aW11bSAxMCBpdGVyYXRpb25zOyBjYW4gYmVcbiAgICogICAgICAgICAgY2hhbmdlIHdpdGggbWF4SXRlcmF0aW9ucyBzZXR0aW5ncykuXG4gICAqICAtIHNob3c6IFNob3dzIGEgbG9hZCBtb3JlIGJ1dHRvbiBmb3IgdGhlIHVzZXIgdG8gZGVjaWRlXG4gICAqICAtIG5vbmU6IERvZXNuJ3QgcGVyZm9ybSBhbnkgbG9hZCBtb3JlIGFjdGlvbi5cbiAgICogIC0gaGlkZGVuOiBMb2FkcyBtb3JlIGRhdGEgYXV0b21hdGljYWxseSBidXQgd2l0aCBubyB2aXNpYmxlIGJ1dHRvbiBmb3IgdGhlIHVzZXIuXG4gICAqL1xuICBASW5wdXQoKVxuICBzZXQgYzh5Rm9yTG9hZE1vcmUodHlwZTogRm9yT2ZEaXJlY3RpdmVbJ2xvYWRNb3JlTW9kZSddKSB7XG4gICAgdGhpcy5sb2FkTW9yZU1vZGUgPSB0eXBlO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBwaXBlIHNldHRlciB0byBhdHRhY2ggYW55IHJ4anMgcGlwZSB0byB0aGUgY3VycmVudCBhbmQgbW9yZSBsb2FkZWQgZGF0YS5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHNldCBjOHlGb3JQaXBlKGRhdGFQaXBlOiBGb3JPZkRpcmVjdGl2ZVsnZGF0YVBpcGUnXSkge1xuICAgIGlmIChkYXRhUGlwZSkge1xuICAgICAgdGhpcy5kYXRhUGlwZSA9IGRhdGFQaXBlO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBBIHRlbXBsYXRlIHRvIHVzZSBpZiBubyBkYXRhIGlzIGZvdW5kIGF0IGFsbCAoZS5nLiBpZiB5b3UgYXBwbHkgYSBmaWx0ZXIgcGlwZSkuXG4gICAqL1xuICBASW5wdXQoKVxuICBzZXQgYzh5Rm9yTm90Rm91bmQobm90Rm91bmRUZW1wbGF0ZTogRm9yT2ZEaXJlY3RpdmVbJ25vdEZvdW5kVGVtcGxhdGUnXSkge1xuICAgIHRoaXMubm90Rm91bmRUZW1wbGF0ZSA9IG5vdEZvdW5kVGVtcGxhdGU7XG4gICAgaWYgKHRoaXMubG9hZE1vcmUpIHtcbiAgICAgIHRoaXMubG9hZE1vcmUubm9Nb3JlRGF0YUhpbnQgPSBub3RGb3VuZFRlbXBsYXRlO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgbWF4aW11bSBudW1iZXJzIG9mIGl0ZXJhdGlvbnMgdG8gY2FsbCBkYXRhIGZyb20gdGhlIGFwaS5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHNldCBjOHlGb3JNYXhJdGVyYXRpb25zKG1heEl0ZXJhdGlvbnM6IG51bWJlcikge1xuICAgIHRoaXMubWF4SXRlcmF0aW9ucyA9IG1heEl0ZXJhdGlvbnM7XG4gIH1cblxuICAvKipcbiAgICogQSBjdXN0b20gbG9hZGluZyBjb21wb25lbnQuXG4gICAqL1xuICBASW5wdXQoKVxuICBzZXQgYzh5Rm9yTG9hZGluZ1RlbXBsYXRlKGxvYWRpbmdUZW1wbGF0ZTogRm9yT2ZEaXJlY3RpdmVbJ2xvYWRpbmdUZW1wbGF0ZSddKSB7XG4gICAgdGhpcy5sb2FkaW5nVGVtcGxhdGUgPSBsb2FkaW5nVGVtcGxhdGU7XG4gIH1cblxuICAvKipcbiAgICogTG9hZCBuZXh0IHRleHQgbGFiZWwuXG4gICAqL1xuICBASW5wdXQoKVxuICBzZXQgYzh5Rm9yTG9hZE5leHRMYWJlbChsb2FkTmV4dExhYmVsOiBzdHJpbmcpIHtcbiAgICB0aGlzLmxvYWROZXh0TGFiZWwgPSBsb2FkTmV4dExhYmVsO1xuICB9XG5cbiAgLyoqXG4gICAqIExvYWRpbmcgdGV4dCBsYWJlbC5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHNldCBjOHlGb3JMb2FkaW5nTGFiZWwobG9hZGluZ0xhYmVsOiBzdHJpbmcpIHtcbiAgICB0aGlzLmxvYWRpbmdMYWJlbCA9IGxvYWRpbmdMYWJlbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBBIFJlYWx0aW1lU2VydmljZSBpbnN0YW5jZS5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHNldCBjOHlGb3JSZWFsdGltZShzb3VyY2U6IEZvck9mRGlyZWN0aXZlWydyZWFsdGltZSddKSB7XG4gICAgdGhpcy5yZWFsdGltZSA9IHNvdXJjZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWFsdGltZSBvcHRpb25zLlxuICAgKi9cbiAgQElucHV0KClcbiAgc2V0IGM4eUZvclJlYWx0aW1lT3B0aW9ucyhyZWFsdGltZU9wdGlvbnM6IEZvck9mRGlyZWN0aXZlWydyZWFsdGltZU9wdGlvbnMnXSkge1xuICAgIHRoaXMucmVhbHRpbWVPcHRpb25zID0gcmVhbHRpbWVPcHRpb25zO1xuICB9XG5cbiAgLyoqXG4gICAqIEEgY29tcGFyYXRvciBmdW5jdGlvbiBmb3IgY29tcGFyaW5nIGxpc3QgaXRlbXMuIFVzZWQgdG8gZGV0ZXJtaW5lXG4gICAqIHRoZSBwb3NpdGlvbiBhdCB3aGljaCBhIG5ldyBlbGVtZW50IHNob3VsZCBiZSBhZGRlZCB0byB0aGUgbGlzdC5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHNldCBjOHlGb3JDb21wYXJhdG9yKGNvbXBhcmF0b3I6IEZvck9mRGlyZWN0aXZlWydjb21wYXJhdG9yJ10pIHtcbiAgICB0aGlzLmNvbXBhcmF0b3IgPSBjb21wYXJhdG9yO1xuICB9XG5cbiAgLyoqXG4gICAqIEVuYWJsZSB2aXJ0dWFsIHNjcm9sbCByZW5kZXJpbmcgbWV0aG9kLlxuICAgKi9cbiAgQElucHV0KClcbiAgYzh5Rm9yRW5hYmxlVmlydHVhbFNjcm9sbCA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBQcm92aWRlcyBmaXhlZCBpdGVtIHNpemUgZm9yIHZpcnR1YWwgc2Nyb2xsIHdpbmRvdyBzdHJhdGVneS5cbiAgICovXG4gIEBJbnB1dCgpXG4gIGM4eUZvclZpcnR1YWxTY3JvbGxFbGVtZW50U2l6ZTtcblxuICAvKipcbiAgICogU2V0cyBtb2RlIG9mIHZpcnR1YWwgc2Nyb2xsZXIgaW5zdGFuY2UuXG4gICAqIHdpbmRvdyBpcyB1c2VkIGZvciBjYXNlIHdoZW4gd2hvbGUgdmlld3BvcnQgaXMgc2Nyb2xsZWQuXG4gICAqIGZpeGVkIGNhbiBiZSB1c2VkIG9uIGlubmVyLXNjcm9sbCBjb250YWluZXJzLlxuICAgKi9cbiAgQElucHV0KClcbiAgYzh5Rm9yVmlydHVhbFNjcm9sbFN0cmF0ZWd5OiAnZml4ZWQnIHwgJ3dpbmRvdycgPSAnd2luZG93JztcblxuICAvKipcbiAgICogV2hlbiB1c2VkIGZpeGVkIHN0cmF0ZWd5LCB0aGVyZSBuZWVkcyB0byBiZSBmaXhlZCBoZWlnaHQgc2V0IG9uIHNjcm9sbGluZyBjb250YWluZXIuXG4gICAqL1xuICBASW5wdXQoKVxuICBjOHlGb3JWaXJ0dWFsU2Nyb2xsQ29udGFpbmVySGVpZ2h0OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRoZSBudW1iZXIgb2YgaXRlbXMgY3VycmVudGx5IGxvYWRlZCBpbiB0aGUgbGlzdC5cbiAgICpcbiAgICogTm90ZTogVGhpcyBjYW4gb25seSBiZSB1c2VkIGlmIHRoZSBmb3JPZiBpc24ndCB1c2VkIHdpdGhcbiAgICogdGhlIHN1Z2FyZWQgYXN0ZXJpc2sgKCopIHN5bnRheC4gSW5zdGVhZCB5b3UgbmVlZCB0byB1c2UgYW4gbmctdGVtcGxhdGU6XG4gICAqIGBgYGh0bWxcbiAgICogPG5nLXRlbXBsYXRlXG4gICAqICBjOHlGb3JcbiAgICogIGxldC1vcGVyYXRpb25cbiAgICogIFtjOHlGb3JPZl09XCJvcGVyYXRpb25zJFwiXG4gICAqICAoYzh5Rm9yQ291bnQpPVwib3BlcmF0aW9uQ291bnQgPSAkZXZlbnRcIlxuICAgKiA+XG4gICAqIDwvbmctdGVtcGxhdGU+XG4gICAqIGBgYFxuICAgKi9cbiAgQE91dHB1dCgpXG4gIHByaXZhdGUgYzh5Rm9yQ291bnQgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcblxuICAvKipcbiAgICogVGhlIGl0ZW1zIGNoYW5nZSBldmVudCBlbWl0dGluZyB0aGUgbmV3bHkgbG9hZGVkIGl0ZW1zLlxuICAgKlxuICAgKiBOb3RlOiBUaGlzIGNhbiBvbmx5IGJlIHVzZWQgaWYgdGhlIGZvck9mIGlzbid0IHVzZWQgd2l0aFxuICAgKiB0aGUgc3VnYXJlZCBhc3RlcmlzayAoKikgc3ludGF4LiBJbnN0ZWFkIHlvdSBuZWVkIHRvIHVzZSBhbiBuZy10ZW1wbGF0ZTpcbiAgICogYGBgaHRtbFxuICAgKiA8bmctdGVtcGxhdGVcbiAgICogIGM4eUZvclxuICAgKiAgbGV0LW9wZXJhdGlvblxuICAgKiAgW2M4eUZvck9mXT1cIm9wZXJhdGlvbnMkXCJcbiAgICogIChjOHlGb3JDaGFuZ2UpPVwib25DaGFuZ2VGb3JPZigkZXZlbnQpXCJcbiAgICogPlxuICAgKiA8L25nLXRlbXBsYXRlPlxuICAgKiBgYGBcbiAgICovXG4gIEBPdXRwdXQoKVxuICBwcml2YXRlIGM4eUZvckNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8dW5rbm93bltdPigpO1xuXG4gIC8qKlxuICAgKiBUaGUgY3VycmVudCBpbnN0YW5jZSBvZiB0aGUgYExvYWRNb3JlQ29tcG9uZW50YC5cbiAgICovXG4gIEBPdXRwdXQoKVxuICBwcml2YXRlIGM4eUZvckxvYWRNb3JlQ29tcG9uZW50ID0gbmV3IEV2ZW50RW1pdHRlcjxMb2FkTW9yZUNvbXBvbmVudD4oKTtcblxuICBwcml2YXRlIGNvdW50ID0gMDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHRwbDogVGVtcGxhdGVSZWY8YW55PixcbiAgICBwcml2YXRlIHZjcjogVmlld0NvbnRhaW5lclJlZixcbiAgICBwcml2YXRlIGNkUmVmOiBDaGFuZ2VEZXRlY3RvclJlZlxuICApIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5oYW5kbGVSZWFsdGltZSgpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmICh0aGlzLm9icyQgJiYgKGNoYW5nZXMuYzh5Rm9yUGlwZSB8fCBjaGFuZ2VzLmM4eUZvck9mKSkge1xuICAgICAgdGhpcy51bnN1YnNjcmliZVBhZ2luZygpO1xuXG4gICAgICBpZiAodGhpcy52aXJ0dWFsU2Nyb2xsSW5zdGFuY2UpIHtcbiAgICAgICAgdGhpcy52aXJ0dWFsU2Nyb2xsSW5zdGFuY2UuZmlsdGVyUGlwZSA9IHRoaXMuZGF0YVBpcGU7XG4gICAgICAgIHdpbmRvdy5zY3JvbGxUbyh7IHRvcDogMCB9KTtcbiAgICAgIH1cblxuICAgICAgLy8gb25seSByZS1yZW5kZXJpbmcgIG9uIGZpbHRlcmluZyBpZiBhbGwgZGF0YSBpcyBhbHJlYWR5IGxvYWRlZFxuICAgICAgLy8gZnJvbSB0aGUgYmFja2VuZFxuICAgICAgY29uc3QgcmVSZW5kZXIgPSAhdGhpcy5oYXNNb3JlRGF0YSAmJiAhIWNoYW5nZXMuYzh5Rm9yUGlwZSAmJiAhY2hhbmdlcy5jOHlGb3JPZjtcblxuICAgICAgaWYgKHJlUmVuZGVyKSB7XG4gICAgICAgIHRoaXMub2JzJCA9IG9mKHRoaXMuY2FjaGVkRGF0YSk7XG4gICAgICB9XG4gICAgICB0aGlzLnBhZ2luZ1N1YiA9IHRoaXMub2JzJFxuICAgICAgICAucGlwZShcbiAgICAgICAgICB0YXAoZGF0YSA9PiB7XG4gICAgICAgICAgICBpZiAoIXJlUmVuZGVyKSB7XG4gICAgICAgICAgICAgIHRoaXMuY2FjaGVkRGF0YSA9IGRhdGE7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSlcbiAgICAgICAgKVxuICAgICAgICAucGlwZShzcmMgPT4gdGhpcy5kYXRhUGlwZShzcmMpKVxuICAgICAgICAuc3Vic2NyaWJlKChkYXRhOiBbXSkgPT4ge1xuICAgICAgICAgIHRoaXMudXBkYXRlQ291bnQoZGF0YS5sZW5ndGgpO1xuICAgICAgICAgIHRoaXMuYzh5Rm9yQ2hhbmdlLmVtaXQoZGF0YSk7XG4gICAgICAgICAgdGhpcy5yZW5kZXIoZGF0YSwgcmVSZW5kZXIpO1xuICAgICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnVuc3Vic2NyaWJlUGFnaW5nKCk7XG4gICAgdGhpcy51bnN1YnNjcmliZSQubmV4dCgpO1xuICAgIHRoaXMudW5zdWJzY3JpYmUkLmNvbXBsZXRlKCk7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZVJlYWx0aW1lKCkge1xuICAgIGlmICh0aGlzLnJlYWx0aW1lKSB7XG4gICAgICB0aGlzLmhhbmRsZVJlYWx0aW1lQ3JlYXRlKCk7XG4gICAgICB0aGlzLmhhbmRsZVJlYWx0aW1lVXBkYXRlKCk7XG4gICAgICB0aGlzLmhhbmRsZVJlYWx0aW1lRGVsZXRlKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIE9uIGNyZWF0ZSBub3RpZmljYXRpb246XG4gICAqIC0gaWYgaXRlbSBwYXNzZXMgZGF0YSBwaXBlLCB0aGVuIGluc2VydCBpdC5cbiAgICogQHByaXZhdGVcbiAgICovXG4gIHByaXZhdGUgaGFuZGxlUmVhbHRpbWVDcmVhdGUoKSB7XG4gICAgY29uc3QgeyBlbnRpdHlPcklkIH0gPSB0aGlzLnJlYWx0aW1lT3B0aW9ucztcbiAgICB0aGlzLnJlYWx0aW1lXG4gICAgICAub25DcmVhdGUkKGVudGl0eU9ySWQpXG4gICAgICAucGlwZShcbiAgICAgICAgaXRlbSQgPT4gdGhpcy5pdGVtRGF0YVBpcGUoaXRlbSQpLFxuICAgICAgICBmaWx0ZXIoaXRlbSA9PiAhIWl0ZW0pLFxuICAgICAgICB0YWtlVW50aWwodGhpcy51bnN1YnNjcmliZSQpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKGl0ZW0gPT4gdGhpcy5pbnNlcnQoaXRlbSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIE9uIHVwZGF0ZSBub3RpZmljYXRpb246XG4gICAqIC0gaWYgaXRlbSBpcyBkaXNwbGF5ZWQgYW5kIHBhc3NlcyBkYXRhIHBpcGUsIHRoZW4gdXBkYXRlIGl0LFxuICAgKiAtIGlmIGl0ZW0gaXMgZGlzcGxheWVkIGFuZCBkb2Vzbid0IHBhc3MgZGF0YSBwaXBlLCB0aGVuIHJlbW92ZSBpdCAoaWYgYHJlbW92ZU9uVXBkYXRlYCBpcyB0cnVlKSxcbiAgICogLSBpZiBpdGVtIGlzIG5vdCBkaXNwbGF5ZWQgYW5kIHBhc3NlcyBkYXRhIHBpcGUsIHRoZW4gaW5zZXJ0IGl0IChpZiBgaW5zZXJ0T25VcGRhdGVgIGlzIHRydWUpLFxuICAgKiAtIGlmIGl0ZW0gaXMgbm90IGRpc3BsYXllZCBhbmQgZG9lc24ndCBwYXNzIGRhdGEgcGlwZSwgdGhlbiBpZ25vcmUgaXQuXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBwcml2YXRlIGhhbmRsZVJlYWx0aW1lVXBkYXRlKCkge1xuICAgIGNvbnN0IHsgZW50aXR5T3JJZCB9ID0gdGhpcy5yZWFsdGltZU9wdGlvbnM7XG4gICAgdGhpcy5yZWFsdGltZVxuICAgICAgLm9uVXBkYXRlJChlbnRpdHlPcklkKVxuICAgICAgLnBpcGUoXG4gICAgICAgIGl0ZW0kID0+XG4gICAgICAgICAgY29tYmluZUxhdGVzdChbXG4gICAgICAgICAgICBpdGVtJCxcbiAgICAgICAgICAgIGl0ZW0kLnBpcGUoXG4gICAgICAgICAgICAgIHNyYyA9PiB0aGlzLml0ZW1EYXRhUGlwZShzcmMpLFxuICAgICAgICAgICAgICBtYXAoaXRlbSA9PiBpdGVtICE9PSB1bmRlZmluZWQpXG4gICAgICAgICAgICApXG4gICAgICAgICAgXSksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLnVuc3Vic2NyaWJlJClcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKFtpdGVtLCBwYXNzZXNEYXRhUGlwZV0pID0+IHtcbiAgICAgICAgY29uc3QgeyBpbnNlcnRPblVwZGF0ZSwgcmVtb3ZlT25VcGRhdGUgfSA9IHRoaXMucmVhbHRpbWVPcHRpb25zO1xuICAgICAgICBjb25zdCBkaXNwbGF5ZWQgPSB0aGlzLmlzRGlzcGxheWVkKGNvZXJjZU51bWJlclByb3BlcnR5KGl0ZW0uaWQpKTtcbiAgICAgICAgaWYgKGRpc3BsYXllZCkge1xuICAgICAgICAgIGlmIChwYXNzZXNEYXRhUGlwZSkge1xuICAgICAgICAgICAgdGhpcy51cGRhdGUoaXRlbSk7XG4gICAgICAgICAgfSBlbHNlIGlmIChyZW1vdmVPblVwZGF0ZSkge1xuICAgICAgICAgICAgdGhpcy5yZW1vdmUoY29lcmNlTnVtYmVyUHJvcGVydHkoaXRlbS5pZCkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChwYXNzZXNEYXRhUGlwZSAmJiBpbnNlcnRPblVwZGF0ZSkge1xuICAgICAgICAgIHRoaXMuaW5zZXJ0KGl0ZW0pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBPbiBkZWxldGUgbm90aWZpY2F0aW9uOlxuICAgKiAtIHJlbW92ZSBpdGVtIGZyb20gdGhlIGxpc3QgKGlmIG5vdCB0aGVyZSwgaXQgd2lsbCBiZSBqdXN0IGlnbm9yZWQpLlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgcHJpdmF0ZSBoYW5kbGVSZWFsdGltZURlbGV0ZSgpIHtcbiAgICBjb25zdCB7IGVudGl0eU9ySWQgfSA9IHRoaXMucmVhbHRpbWVPcHRpb25zO1xuICAgIHRoaXMucmVhbHRpbWVcbiAgICAgIC5vbkRlbGV0ZSQoZW50aXR5T3JJZClcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLnVuc3Vic2NyaWJlJCkpXG4gICAgICAuc3Vic2NyaWJlKGlkID0+IHRoaXMucmVtb3ZlKGNvZXJjZU51bWJlclByb3BlcnR5KGlkKSkpO1xuICB9XG5cbiAgcHJpdmF0ZSByZW5kZXIoZGF0YSwgcmVSZW5kZXIgPSBmYWxzZSk6IHZvaWQge1xuICAgIGlmICh0aGlzLmM4eUZvckVuYWJsZVZpcnR1YWxTY3JvbGwpIHtcbiAgICAgIGlmICghdGhpcy52aXJ0dWFsU2Nyb2xsSW5zdGFuY2UpIHtcbiAgICAgICAgdGhpcy52aXJ0dWFsU2Nyb2xsSW5zdGFuY2UgPSB0aGlzLmNyZWF0ZVZpcnR1YWxTY3JvbGxXcmFwcGVyQ29tcG9uZW50KCk7XG4gICAgICAgIGlmICh0aGlzLnNob3VsZFVzZUxvYWRNb3JlQnV0dG9uKSB7XG4gICAgICAgICAgdGhpcy5sb2FkTW9yZSA9IHRoaXMuY3JlYXRlTG9hZE1vcmVCdXR0b25Db21wb25lbnQoZmFsc2UpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHRoaXMuc2V0VmlydHVhbFNjcm9sbENvbnRlbnRzKGRhdGEpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMudmNyLmNsZWFyKCk7XG5cbiAgICBkYXRhLmZvckVhY2goKGl0ZW0sIGluZGV4KSA9PiB7XG4gICAgICBjb25zdCBjb250ZXh0ID0ge1xuICAgICAgICAkaW1wbGljaXQ6IGl0ZW0sXG4gICAgICAgIGluZGV4LFxuICAgICAgICBsZW5ndGg6IHRoaXMubGVuZ3RoLFxuICAgICAgICBoYXNNb3JlOiB0aGlzLmhhc01vcmVEYXRhLFxuICAgICAgICBsb2FkTW9yZUNvbXBvbmVudDogdGhpcy5sb2FkTW9yZVxuICAgICAgfTtcbiAgICAgIHRoaXMudmNyLmNyZWF0ZUVtYmVkZGVkVmlldyh0aGlzLnRwbCwgY29udGV4dCk7XG4gICAgfSk7XG5cbiAgICBpZiAodGhpcy5zaG91bGRVc2VMb2FkTW9yZUJ1dHRvbikge1xuICAgICAgdGhpcy5sb2FkTW9yZSA9IHRoaXMuY3JlYXRlTG9hZE1vcmVCdXR0b25Db21wb25lbnQocmVSZW5kZXIpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXBwZW5kKGRhdGEpIHtcbiAgICBpZiAodGhpcy5jOHlGb3JFbmFibGVWaXJ0dWFsU2Nyb2xsKSB7XG4gICAgICB0aGlzLmFwcGVuZFZpcnR1YWxTY3JvbGxDb250ZW50KGRhdGEpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGRhdGEuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5zaG91bGRVc2VMb2FkTW9yZUJ1dHRvbiA/IHRoaXMudmNyLmxlbmd0aCAtIDEgOiB0aGlzLnZjci5sZW5ndGg7XG4gICAgICBjb25zdCBjb250ZXh0ID0ge1xuICAgICAgICAkaW1wbGljaXQ6IGl0ZW0sXG4gICAgICAgIGluZGV4LFxuICAgICAgICBsZW5ndGg6IHRoaXMubGVuZ3RoLFxuICAgICAgICBoYXNNb3JlOiB0aGlzLmhhc01vcmVEYXRhLFxuICAgICAgICBsb2FkTW9yZUNvbXBvbmVudDogdGhpcy5sb2FkTW9yZVxuICAgICAgfTtcbiAgICAgIHRoaXMudmNyLmNyZWF0ZUVtYmVkZGVkVmlldyh0aGlzLnRwbCwgY29udGV4dCwgaW5kZXgpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBsb2FkTW9yZURhdGEoZGF0YSkge1xuICAgIGlmIChkYXRhLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMudXBkYXRlQ291bnQoZGF0YS5sZW5ndGgpO1xuICAgICAgdGhpcy5jOHlGb3JDaGFuZ2UuZW1pdChkYXRhKTtcbiAgICAgIHRoaXMuYXBwZW5kKGRhdGEpO1xuICAgIH1cbiAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlTG9hZE1vcmVCdXR0b25Db21wb25lbnQocmVSZW5kZXIpIHtcbiAgICBjb25zdCBjb21wb25lbnRSZWYgPSB0aGlzLnZjci5jcmVhdGVDb21wb25lbnQoTG9hZE1vcmVDb21wb25lbnQpO1xuICAgIGNvbnN0IGluc3RhbmNlID0gY29tcG9uZW50UmVmLmluc3RhbmNlIGFzIExvYWRNb3JlQ29tcG9uZW50O1xuICAgIGluc3RhbmNlLnBhZ2luZyA9IHRoaXMucGFnaW5nO1xuICAgIGluc3RhbmNlLnVzZUludGVyc2VjdGlvbiA9IHRoaXMubG9hZE1vcmVNb2RlID09PSAnYXV0bycgfHwgdGhpcy5sb2FkTW9yZU1vZGUgPT09ICdoaWRkZW4nO1xuICAgIGluc3RhbmNlLmhpZGRlbiA9IHRoaXMubG9hZE1vcmVNb2RlID09PSAnaGlkZGVuJztcbiAgICBpbnN0YW5jZS5tYXhJdGVyYXRpb25zID0gdGhpcy5tYXhJdGVyYXRpb25zO1xuICAgIGluc3RhbmNlLm5vTW9yZURhdGFIaW50ID0gdGhpcy5ub3RGb3VuZFRlbXBsYXRlO1xuICAgIGluc3RhbmNlLmxvYWRpbmdUZW1wbGF0ZSA9IHRoaXMubG9hZGluZ1RlbXBsYXRlO1xuICAgIGluc3RhbmNlLmxvYWROZXh0TGFiZWwgPSB0aGlzLmxvYWROZXh0TGFiZWw7XG4gICAgaW5zdGFuY2UubG9hZGluZ0xhYmVsID0gdGhpcy5sb2FkaW5nTGFiZWw7XG4gICAgdGhpcy5jOHlGb3JMb2FkTW9yZUNvbXBvbmVudC5lbWl0KGluc3RhbmNlKTtcbiAgICB0aGlzLnBhZ2luZ1N1YiA9IGluc3RhbmNlLm9uTG9hZFxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcCgoZGF0YTogW10pID0+IHRoaXMuY2hlY2tGb3JEdXBsaWNhdGVzKGRhdGEpKSxcbiAgICAgICAgdGFwKChkYXRhOiBbXSkgPT4ge1xuICAgICAgICAgIHRoaXMuY2FjaGVkRGF0YSA9IHRoaXMuY2FjaGVkRGF0YS5jb25jYXQoZGF0YSk7XG4gICAgICAgIH0pXG4gICAgICApXG4gICAgICAucGlwZShzcmMgPT4gdGhpcy5kYXRhUGlwZShzcmMpKVxuICAgICAgLnN1YnNjcmliZShkYXRhID0+IHRoaXMubG9hZE1vcmVEYXRhKGRhdGEpKTtcbiAgICBpZiAocmVSZW5kZXIpIHtcbiAgICAgIGFzc2lnbihpbnN0YW5jZSwgdGhpcy5sb2FkTW9yZSk7XG4gICAgfVxuICAgIHJldHVybiBpbnN0YW5jZTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlVmlydHVhbFNjcm9sbFdyYXBwZXJDb21wb25lbnQoKSB7XG4gICAgY29uc3QgY29tcG9uZW50UmVmID0gdGhpcy52Y3IuY3JlYXRlQ29tcG9uZW50KFZpcnR1YWxTY3JvbGxlcldyYXBwZXJDb21wb25lbnQpO1xuICAgIGNvbnN0IGluc3RhbmNlID0gY29tcG9uZW50UmVmLmluc3RhbmNlIGFzIFZpcnR1YWxTY3JvbGxlcldyYXBwZXJDb21wb25lbnQ7XG4gICAgaW5zdGFuY2UuaXRlbXMgPSB0aGlzLmNhY2hlZERhdGE7XG4gICAgaW5zdGFuY2UuaXRlbUhlaWdodCA9IHRoaXMuYzh5Rm9yVmlydHVhbFNjcm9sbEVsZW1lbnRTaXplO1xuICAgIGluc3RhbmNlLnRlbXBsYXRlID0gdGhpcy50cGw7XG4gICAgaW5zdGFuY2Uuc3RyYXRlZ3kgPSB0aGlzLmM4eUZvclZpcnR1YWxTY3JvbGxTdHJhdGVneTtcbiAgICBpbnN0YW5jZS5jb250YWluZXJIZWlnaHQgPSB0aGlzLmM4eUZvclZpcnR1YWxTY3JvbGxDb250YWluZXJIZWlnaHQ7XG5cbiAgICByZXR1cm4gaW5zdGFuY2U7XG4gIH1cblxuICBwcml2YXRlIGluc2VydChpdGVtKSB7XG4gICAgbGV0IGluZGV4ID0gMDtcblxuICAgIGlmICh0aGlzLmNvbXBhcmF0b3IgJiYgdGhpcy5jYWNoZWREYXRhLmxlbmd0aCkge1xuICAgICAgbGV0IGNvbXBhcmlzaW9uUmVzdWx0OiBudW1iZXI7XG4gICAgICBkbyB7XG4gICAgICAgIGNvbnN0IHZpZXc6IEVtYmVkZGVkVmlld1JlZjxhbnk+ID0gdGhpcy52Y3IuZ2V0KGluZGV4KSBhcyBFbWJlZGRlZFZpZXdSZWY8YW55PjtcbiAgICAgICAgY29uc3QgaXRlbUIgPSBnZXQodmlldywgJ2NvbnRleHQuJGltcGxpY2l0Jyk7XG4gICAgICAgIGNvbXBhcmlzaW9uUmVzdWx0ID0gaXRlbSAmJiBpdGVtQiA/IHRoaXMuY29tcGFyYXRvcihpdGVtLCBpdGVtQikgOiAwO1xuICAgICAgICBpZiAoY29tcGFyaXNpb25SZXN1bHQgPD0gMCkge1xuICAgICAgICAgIGluZGV4Kys7XG4gICAgICAgIH1cbiAgICAgIH0gd2hpbGUgKGNvbXBhcmlzaW9uUmVzdWx0IDw9IDAgJiYgaW5kZXggPCB0aGlzLmNhY2hlZERhdGEubGVuZ3RoKTtcbiAgICB9XG5cbiAgICAvLyBEbyBub3QgYXBwZW5kIGVsZW1lbnRzIGFmdGVyIHRoZSBsYXN0IG9uZSBjdXJyZW50bHkgbG9hZGVkLFxuICAgIC8vIGFzIGl0IG1heSBiZWxvbmcgZnVydGhlciBkb3duIHRoZXJlIG9uIHRoZSBsaXN0IGFuZCB3aWxsXG4gICAgLy8gYmUgZXZlbnR1YWxseSBsb2FkZWQgd2l0aCBvbmUgb2YgdGhlIG5leHQgcGFnZXMuXG4gICAgaWYgKGluZGV4IDwgdGhpcy5jYWNoZWREYXRhLmxlbmd0aCB8fCB0aGlzLmNhY2hlZERhdGEubGVuZ3RoID09PSAwKSB7XG4gICAgICBjb25zdCBjb250ZXh0ID0ge1xuICAgICAgICAkaW1wbGljaXQ6IGl0ZW0sXG4gICAgICAgIGluZGV4LFxuICAgICAgICBsZW5ndGg6IHRoaXMubGVuZ3RoLFxuICAgICAgICBoYXNNb3JlOiB0aGlzLmhhc01vcmVEYXRhXG4gICAgICB9O1xuXG4gICAgICB0aGlzLmNhY2hlZERhdGEuc3BsaWNlKGluZGV4LCAwLCBpdGVtKTtcbiAgICAgIGNvbnN0IHZpZXdSZWY6IFZpZXdSZWYgPSB0aGlzLnRwbC5jcmVhdGVFbWJlZGRlZFZpZXcoY29udGV4dCk7XG4gICAgICB0aGlzLnZjci5pbnNlcnQodmlld1JlZiwgaW5kZXgpO1xuICAgICAgdGhpcy51cGRhdGVDb3VudCgxKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZSh1cGRhdGVkSXRlbSkge1xuICAgIHRoaXMuZm9yTWF0Y2hpbmdFbWJlZGRlZFZpZXdSZWYoXG4gICAgICAoaXRlbTogSUlkZW50aWZpZWQpID0+IGl0ZW0gJiYgdXBkYXRlZEl0ZW0gJiYgaXRlbS5pZCA9PT0gdXBkYXRlZEl0ZW0uaWQsXG4gICAgICAodmlldzogRW1iZWRkZWRWaWV3UmVmPGFueT4pID0+IHtcbiAgICAgICAgdmlldy5jb250ZXh0LiRpbXBsaWNpdCA9IHVwZGF0ZWRJdGVtO1xuICAgICAgICB2aWV3Lm1hcmtGb3JDaGVjaygpO1xuICAgICAgfVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIHJlbW92ZShpZFRvUmVtb3ZlKSB7XG4gICAgaWYgKHRoaXMuaXNEaXNwbGF5ZWQoaWRUb1JlbW92ZSkpIHtcbiAgICAgIHRoaXMudXBkYXRlQ291bnQoLTEpO1xuICAgIH1cblxuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5jYWNoZWREYXRhLmZpbmRJbmRleChvcCA9PiBvcC5pZCA9PT0gaWRUb1JlbW92ZSk7XG4gICAgdGhpcy5jYWNoZWREYXRhLnNwbGljZShpbmRleCwgMSk7XG5cbiAgICB0aGlzLmZvck1hdGNoaW5nRW1iZWRkZWRWaWV3UmVmKFxuICAgICAgKGl0ZW06IElJZGVudGlmaWVkKSA9PiBpdGVtICYmIGNvZXJjZU51bWJlclByb3BlcnR5KGl0ZW0uaWQsIE5hTikgPT09IGlkVG9SZW1vdmUsXG4gICAgICAodmlldzogRW1iZWRkZWRWaWV3UmVmPGFueT4pID0+IHZpZXcuZGVzdHJveSgpXG4gICAgKTtcblxuICAgIHRoaXMuYzh5Rm9yQ2hhbmdlLmVtaXQoWy4uLnRoaXMuY2FjaGVkRGF0YV0pO1xuICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVDb3VudChjb3VudENoYW5nZTogbnVtYmVyKSB7XG4gICAgdGhpcy5jb3VudCArPSBjb3VudENoYW5nZTtcbiAgICB0aGlzLmM4eUZvckNvdW50LmVtaXQodGhpcy5jb3VudCk7XG4gIH1cblxuICBwcml2YXRlIGlzRGlzcGxheWVkKGlkVG9DaGVjaykge1xuICAgIGxldCBkaXNwbGF5ZWQgPSBmYWxzZTtcbiAgICB0aGlzLmZvck1hdGNoaW5nRW1iZWRkZWRWaWV3UmVmKFxuICAgICAgKGl0ZW06IElJZGVudGlmaWVkKSA9PiBpdGVtICYmIGNvZXJjZU51bWJlclByb3BlcnR5KGl0ZW0uaWQsIE5hTikgPT09IGlkVG9DaGVjayxcbiAgICAgICgpID0+IHtcbiAgICAgICAgZGlzcGxheWVkID0gdHJ1ZTtcbiAgICAgIH1cbiAgICApO1xuICAgIHJldHVybiBkaXNwbGF5ZWQ7XG4gIH1cblxuICBwcml2YXRlIGZvck1hdGNoaW5nRW1iZWRkZWRWaWV3UmVmKFxuICAgIGZpbHRlckZuOiAoaXRlbTogSUlkZW50aWZpZWQpID0+IGJvb2xlYW4sXG4gICAgY2FsbGJhY2tGbjogKHZpZXc6IEVtYmVkZGVkVmlld1JlZjxhbnk+KSA9PiB2b2lkXG4gICkge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy52Y3IubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNvbnN0IHZpZXc6IEVtYmVkZGVkVmlld1JlZjxhbnk+ID0gdGhpcy52Y3IuZ2V0KGkpIGFzIEVtYmVkZGVkVmlld1JlZjxhbnk+O1xuICAgICAgY29uc3QgaXRlbTogSUlkZW50aWZpZWQgPSBnZXQodmlldywgJ2NvbnRleHQuJGltcGxpY2l0Jyk7XG4gICAgICBpZiAoZmlsdGVyRm4oaXRlbSkpIHtcbiAgICAgICAgY2FsbGJhY2tGbih2aWV3KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNoZWNrRm9yRHVwbGljYXRlcyhkYXRhOiBJSWRlbnRpZmllZFtdKTogSUlkZW50aWZpZWRbXSB7XG4gICAgcmV0dXJuIHRoaXMucmVhbHRpbWVcbiAgICAgID8gZGF0YS5maWx0ZXIoaXRlbSA9PiAhdGhpcy5jYWNoZWREYXRhLnNvbWUoY2FjaGVkID0+IGNhY2hlZC5pZCA9PT0gaXRlbS5pZCkpXG4gICAgICA6IGRhdGE7XG4gIH1cblxuICBwcml2YXRlIHVuc3Vic2NyaWJlUGFnaW5nKCkge1xuICAgIGlmICh0aGlzLnBhZ2luZ1N1Yikge1xuICAgICAgdGhpcy5wYWdpbmdTdWIudW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNldFZpcnR1YWxTY3JvbGxDb250ZW50cyhpdGVtcykge1xuICAgIGlmICh0aGlzLmM4eUZvckVuYWJsZVZpcnR1YWxTY3JvbGwgJiYgdGhpcy52aXJ0dWFsU2Nyb2xsSW5zdGFuY2UpIHtcbiAgICAgIHRoaXMudmlydHVhbFNjcm9sbEluc3RhbmNlLml0ZW1zID0gaXRlbXM7XG4gICAgICB0aGlzLnZpcnR1YWxTY3JvbGxJbnN0YW5jZS5hcHBseSgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXBwZW5kVmlydHVhbFNjcm9sbENvbnRlbnQoaXRlbXMpIHtcbiAgICBpZiAodGhpcy5jOHlGb3JFbmFibGVWaXJ0dWFsU2Nyb2xsICYmIHRoaXMudmlydHVhbFNjcm9sbEluc3RhbmNlKSB7XG4gICAgICB0aGlzLnZpcnR1YWxTY3JvbGxJbnN0YW5jZS5pdGVtcyA9IHRoaXMudmlydHVhbFNjcm9sbEluc3RhbmNlLml0ZW1zLmNvbmNhdChpdGVtcyk7XG4gICAgICB0aGlzLnZpcnR1YWxTY3JvbGxJbnN0YW5jZS5hcHBseSgpO1xuICAgIH1cbiAgfVxufVxuIl19
@@ -11,12 +11,12 @@ export class NavigatorBottomComponent {
11
11
  this.hasHidePoweredSet$ = this.bottomService.hasHidePoweredSet();
12
12
  }
13
13
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: NavigatorBottomComponent, deps: [{ token: i1.NavigatorBottomService }], target: i0.ɵɵFactoryTarget.Component }); }
14
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: NavigatorBottomComponent, isStandalone: true, selector: "c8y-navigator-bottom", host: { classAttribute: "navigator-slot-bottom" }, ngImport: i0, template: "<div\n class=\"d-flex gap-8 {{!(hasCustomNavigatorLogoSet$ | async) ? 'c8y-logo' : ''}}\"\n *ngIf=\"!(hasCustomNavigatorLogoSet$ | async); else branded\"\n>\n <p\n *ngIf=\"!(hasHidePoweredSet$ | async)\"\n class=\"powered-by text-left a-s-end\"\n translate\n >\n powered by\n </p>\n <a href=\"https://cumulocity.com\" target=\"_blank\" title=\"Cumulocity\" class=\"tenant-brand\"></a>\n</div>\n<ng-template #branded>\n <div class=\"logo-spacer\"></div>\n <div class=\"tenant-brand\"></div>\n <p\n class=\"powered-by text-center a-s-center\"\n *ngIf=\"!(hasHidePoweredSet$ | async)\"\n translate\n >\n powered by <a href=\"https://cumulocity.com\" target=\"_blank\">Cumulocity</a>\n </p>\n <div class=\"logo-spacer\"></div>\n</ng-template>\n", dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: C8yTranslateDirective, selector: "[translate],[ngx-translate]" }] }); }
14
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: NavigatorBottomComponent, isStandalone: true, selector: "c8y-navigator-bottom", host: { classAttribute: "navigator-slot-bottom" }, ngImport: i0, template: "<div\n class=\"d-flex gap-8 {{!(hasCustomNavigatorLogoSet$ | async) ? 'c8y-logo' : ''}}\"\n *ngIf=\"!(hasCustomNavigatorLogoSet$ | async); else branded\"\n>\n <p\n *ngIf=\"!(hasHidePoweredSet$ | async)\"\n class=\"powered-by text-left a-s-end\"\n translate\n >\n powered by`KEEP_ORIGINAL`\n </p>\n <a href=\"https://cumulocity.com\" target=\"_blank\" title=\"Cumulocity\" class=\"tenant-brand\"></a>\n</div>\n<ng-template #branded>\n <div class=\"logo-spacer\"></div>\n <div class=\"tenant-brand\"></div>\n <p\n class=\"powered-by text-center a-s-center\"\n *ngIf=\"!(hasHidePoweredSet$ | async)\"\n translate\n >\n powered by <a href=\"https://cumulocity.com\" target=\"_blank\">Cumulocity</a>`KEEP_ORIGINAL`\n </p>\n <div class=\"logo-spacer\"></div>\n</ng-template>\n", dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: C8yTranslateDirective, selector: "[translate],[ngx-translate]" }] }); }
15
15
  }
16
16
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: NavigatorBottomComponent, decorators: [{
17
17
  type: Component,
18
18
  args: [{ selector: 'c8y-navigator-bottom', host: {
19
19
  class: 'navigator-slot-bottom'
20
- }, standalone: true, imports: [AsyncPipe, NgIf, C8yTranslateDirective], template: "<div\n class=\"d-flex gap-8 {{!(hasCustomNavigatorLogoSet$ | async) ? 'c8y-logo' : ''}}\"\n *ngIf=\"!(hasCustomNavigatorLogoSet$ | async); else branded\"\n>\n <p\n *ngIf=\"!(hasHidePoweredSet$ | async)\"\n class=\"powered-by text-left a-s-end\"\n translate\n >\n powered by\n </p>\n <a href=\"https://cumulocity.com\" target=\"_blank\" title=\"Cumulocity\" class=\"tenant-brand\"></a>\n</div>\n<ng-template #branded>\n <div class=\"logo-spacer\"></div>\n <div class=\"tenant-brand\"></div>\n <p\n class=\"powered-by text-center a-s-center\"\n *ngIf=\"!(hasHidePoweredSet$ | async)\"\n translate\n >\n powered by <a href=\"https://cumulocity.com\" target=\"_blank\">Cumulocity</a>\n </p>\n <div class=\"logo-spacer\"></div>\n</ng-template>\n" }]
20
+ }, standalone: true, imports: [AsyncPipe, NgIf, C8yTranslateDirective], template: "<div\n class=\"d-flex gap-8 {{!(hasCustomNavigatorLogoSet$ | async) ? 'c8y-logo' : ''}}\"\n *ngIf=\"!(hasCustomNavigatorLogoSet$ | async); else branded\"\n>\n <p\n *ngIf=\"!(hasHidePoweredSet$ | async)\"\n class=\"powered-by text-left a-s-end\"\n translate\n >\n powered by`KEEP_ORIGINAL`\n </p>\n <a href=\"https://cumulocity.com\" target=\"_blank\" title=\"Cumulocity\" class=\"tenant-brand\"></a>\n</div>\n<ng-template #branded>\n <div class=\"logo-spacer\"></div>\n <div class=\"tenant-brand\"></div>\n <p\n class=\"powered-by text-center a-s-center\"\n *ngIf=\"!(hasHidePoweredSet$ | async)\"\n translate\n >\n powered by <a href=\"https://cumulocity.com\" target=\"_blank\">Cumulocity</a>`KEEP_ORIGINAL`\n </p>\n <div class=\"logo-spacer\"></div>\n</ng-template>\n" }]
21
21
  }], ctorParameters: () => [{ type: i1.NavigatorBottomService }] });
22
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2aWdhdG9yLWJvdHRvbS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9jb3JlL25hdmlnYXRvci9uYXZpZ2F0b3ItYm90dG9tL25hdmlnYXRvci1ib3R0b20uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vY29yZS9uYXZpZ2F0b3IvbmF2aWdhdG9yLWJvdHRvbS9uYXZpZ2F0b3ItYm90dG9tLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUMsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDcEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxZQUFZLENBQUM7OztBQVduRCxNQUFNLE9BQU8sd0JBQXdCO0lBSW5DLFlBQW9CLGFBQXFDO1FBQXJDLGtCQUFhLEdBQWIsYUFBYSxDQUF3QjtRQUh6RCwrQkFBMEIsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLHlCQUF5QixFQUFFLENBQUM7UUFDNUUsdUJBQWtCLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO0lBRUEsQ0FBQzs4R0FKbEQsd0JBQXdCO2tHQUF4Qix3QkFBd0IsbUlDZHJDLDB3QkF5QkEsdUNEYlksU0FBUyw4Q0FBRSxJQUFJLDZGQUFFLHFCQUFxQjs7MkZBRXJDLHdCQUF3QjtrQkFUcEMsU0FBUzsrQkFDRSxzQkFBc0IsUUFFMUI7d0JBQ0osS0FBSyxFQUFFLHVCQUF1QjtxQkFDL0IsY0FDVyxJQUFJLFdBQ1AsQ0FBQyxTQUFTLEVBQUUsSUFBSSxFQUFFLHFCQUFxQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOYXZpZ2F0b3JCb3R0b21TZXJ2aWNlIH0gZnJvbSAnLi9uYXZpZ2F0b3ItYm90dG9tLnNlcnZpY2UnO1xuaW1wb3J0IHsgQXN5bmNQaXBlLCBOZ0lmIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEM4eVRyYW5zbGF0ZURpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2kxOG4nO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjOHktbmF2aWdhdG9yLWJvdHRvbScsXG4gIHRlbXBsYXRlVXJsOiAnLi9uYXZpZ2F0b3ItYm90dG9tLmNvbXBvbmVudC5odG1sJyxcbiAgaG9zdDoge1xuICAgIGNsYXNzOiAnbmF2aWdhdG9yLXNsb3QtYm90dG9tJ1xuICB9LFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQXN5bmNQaXBlLCBOZ0lmLCBDOHlUcmFuc2xhdGVEaXJlY3RpdmVdXG59KVxuZXhwb3J0IGNsYXNzIE5hdmlnYXRvckJvdHRvbUNvbXBvbmVudCB7XG4gIGhhc0N1c3RvbU5hdmlnYXRvckxvZ29TZXQkID0gdGhpcy5ib3R0b21TZXJ2aWNlLmhhc0N1c3RvbU5hdmlnYXRvckxvZ29TZXQoKTtcbiAgaGFzSGlkZVBvd2VyZWRTZXQkID0gdGhpcy5ib3R0b21TZXJ2aWNlLmhhc0hpZGVQb3dlcmVkU2V0KCk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBib3R0b21TZXJ2aWNlOiBOYXZpZ2F0b3JCb3R0b21TZXJ2aWNlKSB7fVxufVxuIiwiPGRpdlxuICBjbGFzcz1cImQtZmxleCBnYXAtOCB7eyEoaGFzQ3VzdG9tTmF2aWdhdG9yTG9nb1NldCQgfCBhc3luYykgPyAnYzh5LWxvZ28nIDogJyd9fVwiXG4gICpuZ0lmPVwiIShoYXNDdXN0b21OYXZpZ2F0b3JMb2dvU2V0JCB8IGFzeW5jKTsgZWxzZSBicmFuZGVkXCJcbj5cbiAgPHBcbiAgICAqbmdJZj1cIiEoaGFzSGlkZVBvd2VyZWRTZXQkIHwgYXN5bmMpXCJcbiAgICBjbGFzcz1cInBvd2VyZWQtYnkgdGV4dC1sZWZ0IGEtcy1lbmRcIlxuICAgIHRyYW5zbGF0ZVxuICA+XG4gICAgcG93ZXJlZCBieVxuICA8L3A+XG4gIDxhIGhyZWY9XCJodHRwczovL2N1bXVsb2NpdHkuY29tXCIgdGFyZ2V0PVwiX2JsYW5rXCIgdGl0bGU9XCJDdW11bG9jaXR5XCIgY2xhc3M9XCJ0ZW5hbnQtYnJhbmRcIj48L2E+XG48L2Rpdj5cbjxuZy10ZW1wbGF0ZSAjYnJhbmRlZD5cbiAgPGRpdiBjbGFzcz1cImxvZ28tc3BhY2VyXCI+PC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJ0ZW5hbnQtYnJhbmRcIj48L2Rpdj5cbiAgPHBcbiAgICBjbGFzcz1cInBvd2VyZWQtYnkgdGV4dC1jZW50ZXIgYS1zLWNlbnRlclwiXG4gICAgKm5nSWY9XCIhKGhhc0hpZGVQb3dlcmVkU2V0JCB8IGFzeW5jKVwiXG4gICAgdHJhbnNsYXRlXG4gID5cbiAgICBwb3dlcmVkIGJ5IDxhIGhyZWY9XCJodHRwczovL2N1bXVsb2NpdHkuY29tXCIgdGFyZ2V0PVwiX2JsYW5rXCI+Q3VtdWxvY2l0eTwvYT5cbiAgPC9wPlxuICA8ZGl2IGNsYXNzPVwibG9nby1zcGFjZXJcIj48L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2aWdhdG9yLWJvdHRvbS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9jb3JlL25hdmlnYXRvci9uYXZpZ2F0b3ItYm90dG9tL25hdmlnYXRvci1ib3R0b20uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vY29yZS9uYXZpZ2F0b3IvbmF2aWdhdG9yLWJvdHRvbS9uYXZpZ2F0b3ItYm90dG9tLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUMsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDcEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxZQUFZLENBQUM7OztBQVduRCxNQUFNLE9BQU8sd0JBQXdCO0lBSW5DLFlBQW9CLGFBQXFDO1FBQXJDLGtCQUFhLEdBQWIsYUFBYSxDQUF3QjtRQUh6RCwrQkFBMEIsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLHlCQUF5QixFQUFFLENBQUM7UUFDNUUsdUJBQWtCLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO0lBRUEsQ0FBQzs4R0FKbEQsd0JBQXdCO2tHQUF4Qix3QkFBd0IsbUlDZHJDLHd5QkF5QkEsdUNEYlksU0FBUyw4Q0FBRSxJQUFJLDZGQUFFLHFCQUFxQjs7MkZBRXJDLHdCQUF3QjtrQkFUcEMsU0FBUzsrQkFDRSxzQkFBc0IsUUFFMUI7d0JBQ0osS0FBSyxFQUFFLHVCQUF1QjtxQkFDL0IsY0FDVyxJQUFJLFdBQ1AsQ0FBQyxTQUFTLEVBQUUsSUFBSSxFQUFFLHFCQUFxQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOYXZpZ2F0b3JCb3R0b21TZXJ2aWNlIH0gZnJvbSAnLi9uYXZpZ2F0b3ItYm90dG9tLnNlcnZpY2UnO1xuaW1wb3J0IHsgQXN5bmNQaXBlLCBOZ0lmIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEM4eVRyYW5zbGF0ZURpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2kxOG4nO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjOHktbmF2aWdhdG9yLWJvdHRvbScsXG4gIHRlbXBsYXRlVXJsOiAnLi9uYXZpZ2F0b3ItYm90dG9tLmNvbXBvbmVudC5odG1sJyxcbiAgaG9zdDoge1xuICAgIGNsYXNzOiAnbmF2aWdhdG9yLXNsb3QtYm90dG9tJ1xuICB9LFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQXN5bmNQaXBlLCBOZ0lmLCBDOHlUcmFuc2xhdGVEaXJlY3RpdmVdXG59KVxuZXhwb3J0IGNsYXNzIE5hdmlnYXRvckJvdHRvbUNvbXBvbmVudCB7XG4gIGhhc0N1c3RvbU5hdmlnYXRvckxvZ29TZXQkID0gdGhpcy5ib3R0b21TZXJ2aWNlLmhhc0N1c3RvbU5hdmlnYXRvckxvZ29TZXQoKTtcbiAgaGFzSGlkZVBvd2VyZWRTZXQkID0gdGhpcy5ib3R0b21TZXJ2aWNlLmhhc0hpZGVQb3dlcmVkU2V0KCk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBib3R0b21TZXJ2aWNlOiBOYXZpZ2F0b3JCb3R0b21TZXJ2aWNlKSB7fVxufVxuIiwiPGRpdlxuICBjbGFzcz1cImQtZmxleCBnYXAtOCB7eyEoaGFzQ3VzdG9tTmF2aWdhdG9yTG9nb1NldCQgfCBhc3luYykgPyAnYzh5LWxvZ28nIDogJyd9fVwiXG4gICpuZ0lmPVwiIShoYXNDdXN0b21OYXZpZ2F0b3JMb2dvU2V0JCB8IGFzeW5jKTsgZWxzZSBicmFuZGVkXCJcbj5cbiAgPHBcbiAgICAqbmdJZj1cIiEoaGFzSGlkZVBvd2VyZWRTZXQkIHwgYXN5bmMpXCJcbiAgICBjbGFzcz1cInBvd2VyZWQtYnkgdGV4dC1sZWZ0IGEtcy1lbmRcIlxuICAgIHRyYW5zbGF0ZVxuICA+XG4gICAgcG93ZXJlZCBieWBLRUVQX09SSUdJTkFMYFxuICA8L3A+XG4gIDxhIGhyZWY9XCJodHRwczovL2N1bXVsb2NpdHkuY29tXCIgdGFyZ2V0PVwiX2JsYW5rXCIgdGl0bGU9XCJDdW11bG9jaXR5XCIgY2xhc3M9XCJ0ZW5hbnQtYnJhbmRcIj48L2E+XG48L2Rpdj5cbjxuZy10ZW1wbGF0ZSAjYnJhbmRlZD5cbiAgPGRpdiBjbGFzcz1cImxvZ28tc3BhY2VyXCI+PC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJ0ZW5hbnQtYnJhbmRcIj48L2Rpdj5cbiAgPHBcbiAgICBjbGFzcz1cInBvd2VyZWQtYnkgdGV4dC1jZW50ZXIgYS1zLWNlbnRlclwiXG4gICAgKm5nSWY9XCIhKGhhc0hpZGVQb3dlcmVkU2V0JCB8IGFzeW5jKVwiXG4gICAgdHJhbnNsYXRlXG4gID5cbiAgICBwb3dlcmVkIGJ5IDxhIGhyZWY9XCJodHRwczovL2N1bXVsb2NpdHkuY29tXCIgdGFyZ2V0PVwiX2JsYW5rXCI+Q3VtdWxvY2l0eTwvYT5gS0VFUF9PUklHSU5BTGBcbiAgPC9wPlxuICA8ZGl2IGNsYXNzPVwibG9nby1zcGFjZXJcIj48L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
@@ -31,29 +31,37 @@ export class OperationsListItemComponent {
31
31
  this.route.snapshot.firstChild?.data.contextData?.id;
32
32
  }
33
33
  ngOnInit() {
34
- this.operationTitle =
35
- this.operation.c8y_Command?.text ||
36
- this.operation.description ||
37
- gettext('No command text or description available');
34
+ this.updateOperationTitle();
38
35
  const smartRulesCreatePermissions = this.operationsListService.getSmartRulesCreatePermissions();
39
36
  if (smartRulesCreatePermissions) {
40
37
  this.inventoryPermissions = smartRulesCreatePermissions[0].anyRole;
41
38
  this.smartRuleAdminPermissions = smartRulesCreatePermissions[1].anyRole;
42
39
  }
43
40
  }
41
+ ngOnChanges(changes) {
42
+ if (changes.operation && changes.operation.currentValue) {
43
+ this.updateOperationTitle();
44
+ }
45
+ }
44
46
  createCustomizedBulkOperation($event) {
45
47
  if ($event) {
46
48
  $event.stopPropagation();
47
49
  }
48
50
  this.router.navigateByUrl(`/devicecontrol/single/create-bulk/${this.operation.id}`);
49
51
  }
52
+ updateOperationTitle() {
53
+ this.operationTitle =
54
+ this.operation?.c8y_Command?.text ||
55
+ this.operation?.description ||
56
+ gettext('No command text or description available');
57
+ }
50
58
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: OperationsListItemComponent, deps: [{ token: i1.BulkOperationListItemService }, { token: i2.OperationsService }, { token: i3.OperationsListService }, { token: i4.ActivatedRoute }, { token: i4.Router }], target: i0.ɵɵFactoryTarget.Component }); }
51
59
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: OperationsListItemComponent, selector: "c8y-operations-list-item", inputs: { operation: "operation", collapsed: "collapsed", readOnly: "readOnly", noExpandToggle: "noExpandToggle", isSmartRulesMicroserviceAvailable: "isSmartRulesMicroserviceAvailable" }, providers: [
52
60
  {
53
61
  provide: PRODUCT_EXPERIENCE_EVENT_SOURCE,
54
62
  useExisting: forwardRef(() => OperationsListItemComponent)
55
63
  }
56
- ], viewQueries: [{ propertyName: "listItem", first: true, predicate: ["listItem"], descendants: true, static: true }], ngImport: i0, template: "<c8y-li\n class=\"c8y-list__item--double-actions\"\n [ngClass]=\"{ 'c8y-list__item--no-expand': noExpandToggle }\"\n [collapsed]=\"collapsed\"\n #listItem\n id=\"{{ operation.id }}\"\n>\n <c8y-li-icon>\n <button\n class=\"btn-clean\"\n type=\"button\"\n [attr.aria-label]=\"OPERATION_STATUS_OPTIONS_MAP[operation.status].label | translate\"\n [tooltip]=\"OPERATION_STATUS_OPTIONS_MAP[operation.status].label | translate\"\n placement=\"right\"\n container=\"body\"\n [delay]=\"500\"\n >\n <i\n [c8yIcon]=\"OPERATION_STATUS_OPTIONS_MAP[operation.status].icon\"\n [ngClass]=\"OPERATION_STATUS_OPTIONS_MAP[operation.status].styleClass\"\n ></i>\n </button>\n </c8y-li-icon>\n <div [ngClass]=\"{ 'content-flex-58': !readOnly, 'content-flex-50': readOnly }\">\n <div class=\"col-5\">\n <span title=\"{{ operationTitle | translate }}\" class=\"text-truncate\">\n {{ operationTitle | translate }}\n </span>\n </div>\n <div class=\"col-3\" *ngIf=\"!deviceId\">\n <a\n title=\"{{ operation.deviceName }}\"\n [routerLink]=\"['/device', operation.deviceId, 'device-info']\"\n routerLinkActive=\"active\"\n class=\"text-truncate\"\n >\n {{ operation.deviceName }}\n </a>\n </div>\n <div class=\"col-3\">\n <small class=\"icon-flex text-muted\">\n <i c8yIcon=\"calendar\" class=\"m-r-4\"></i>\n {{ operation.creationTime | c8yDate }}\n </small>\n </div>\n </div>\n <ng-container *ngIf=\"!readOnly\">\n <c8y-li-action\n label=\"{{ 'Schedule as bulk operation' | translate }}\"\n (click)=\"createCustomizedBulkOperation($event)\"\n icon=\"c8y-icon c8y-icon-energy\"\n c8yProductExperience\n inherit\n ></c8y-li-action>\n <ng-container *c8yIfAllowed=\"inventoryPermissions; allowAny: true\">\n <ng-container *c8yIfAllowed=\"smartRuleAdminPermissions; allowAny: true\">\n <c8y-li-action\n *ngIf=\"isSmartRulesMicroserviceAvailable\"\n label=\"{{ 'Create smart rule' | translate }}\"\n (click)=\"operationsListService.createSmartRule(operation)\"\n icon=\"sliders\"\n c8yProductExperience\n inherit\n ></c8y-li-action>\n </ng-container>\n </ng-container>\n <c8y-li-action\n *ngIf=\"operation.status === OPERATION_STATUS.PENDING\"\n label=\"{{ 'Cancel operation' | translate }}\"\n (click)=\"$event.stopPropagation(); sharedService.cancel(operation)\"\n icon=\"times-circle\"\n c8yProductExperience\n inherit\n ></c8y-li-action>\n </ng-container>\n <c8y-li-collapse class=\"m-b-16\">\n <c8y-operation-details-tabs\n *ngIf=\"!listItem.collapsed\"\n [operation]=\"operation\"\n [bulkOperationModalDetailsService]=\"bulkOperationListItemService\"\n ></c8y-operation-details-tabs>\n </c8y-li-collapse>\n</c8y-li>\n", dependencies: [{ kind: "directive", type: i5.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.IfAllowedDirective, selector: "[c8yIfAllowed]", inputs: ["c8yIfAllowed", "c8yIfAllowedAllowAny"] }, { kind: "component", type: i5.ListItemComponent, selector: "c8y-list-item, c8y-li", inputs: ["active", "highlighted", "emptyActions", "dense", "collapsed", "selectable"], outputs: ["collapsedChange"] }, { kind: "component", type: i5.ListItemIconComponent, selector: "c8y-list-item-icon, c8y-li-icon", inputs: ["icon", "status"] }, { kind: "component", type: i5.ListItemActionComponent, selector: "c8y-list-item-action, c8y-li-action", inputs: ["label", "icon", "disabled"], outputs: ["click"] }, { kind: "component", type: i5.ListItemCollapseComponent, selector: "c8y-list-item-collapse, c8y-li-collapse", inputs: ["collapseWay"] }, { kind: "directive", type: i5.ProductExperienceDirective, selector: "[c8yProductExperience]", inputs: ["actionName", "actionData", "inherit", "suppressDataOverriding"] }, { kind: "component", type: i7.OperationDetailsTabsComponent, selector: "c8y-operation-details-tabs", inputs: ["operation", "readOnly", "bulkOperationModalDetailsService"], outputs: ["onRetryFailedOperations", "showFailedOperation"] }, { kind: "directive", type: i8.TooltipDirective, selector: "[tooltip], [tooltipHtml]", inputs: ["adaptivePosition", "tooltip", "placement", "triggers", "container", "containerClass", "boundariesElement", "isOpen", "isDisabled", "delay", "tooltipHtml", "tooltipPlacement", "tooltipIsOpen", "tooltipEnable", "tooltipAppendToBody", "tooltipAnimation", "tooltipClass", "tooltipContext", "tooltipPopupDelay", "tooltipFadeDuration", "tooltipTrigger"], outputs: ["tooltipChange", "onShown", "onHidden", "tooltipStateChanged"], exportAs: ["bs-tooltip"] }, { kind: "directive", type: i4.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i4.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "pipe", type: i5.C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i5.DatePipe, name: "c8yDate" }] }); }
64
+ ], viewQueries: [{ propertyName: "listItem", first: true, predicate: ["listItem"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "<c8y-li\n class=\"c8y-list__item--double-actions\"\n [ngClass]=\"{ 'c8y-list__item--no-expand': noExpandToggle }\"\n [collapsed]=\"collapsed\"\n #listItem\n id=\"{{ operation.id }}\"\n>\n <c8y-li-icon>\n <button\n class=\"btn-clean\"\n type=\"button\"\n [attr.aria-label]=\"OPERATION_STATUS_OPTIONS_MAP[operation.status].label | translate\"\n [tooltip]=\"OPERATION_STATUS_OPTIONS_MAP[operation.status].label | translate\"\n placement=\"right\"\n container=\"body\"\n [delay]=\"500\"\n >\n <i\n [c8yIcon]=\"OPERATION_STATUS_OPTIONS_MAP[operation.status].icon\"\n [ngClass]=\"OPERATION_STATUS_OPTIONS_MAP[operation.status].styleClass\"\n ></i>\n </button>\n </c8y-li-icon>\n <div [ngClass]=\"{ 'content-flex-58': !readOnly, 'content-flex-50': readOnly }\">\n <div class=\"col-5\">\n <span title=\"{{ operationTitle | translate }}\" class=\"text-truncate\">\n {{ operationTitle | translate }}\n </span>\n </div>\n <div class=\"col-3\" *ngIf=\"!deviceId\">\n <a\n title=\"{{ operation.deviceName }}\"\n [routerLink]=\"['/device', operation.deviceId, 'device-info']\"\n routerLinkActive=\"active\"\n class=\"text-truncate\"\n >\n {{ operation.deviceName }}\n </a>\n </div>\n <div class=\"col-3\">\n <small class=\"icon-flex text-muted\">\n <i c8yIcon=\"calendar\" class=\"m-r-4\"></i>\n {{ operation.creationTime | c8yDate }}\n </small>\n </div>\n </div>\n <ng-container *ngIf=\"!readOnly\">\n <c8y-li-action\n label=\"{{ 'Schedule as bulk operation' | translate }}\"\n (click)=\"createCustomizedBulkOperation($event)\"\n icon=\"c8y-icon c8y-icon-energy\"\n c8yProductExperience\n inherit\n ></c8y-li-action>\n <ng-container *c8yIfAllowed=\"inventoryPermissions; allowAny: true\">\n <ng-container *c8yIfAllowed=\"smartRuleAdminPermissions; allowAny: true\">\n <c8y-li-action\n *ngIf=\"isSmartRulesMicroserviceAvailable\"\n label=\"{{ 'Create smart rule' | translate }}\"\n (click)=\"operationsListService.createSmartRule(operation)\"\n icon=\"sliders\"\n c8yProductExperience\n inherit\n ></c8y-li-action>\n </ng-container>\n </ng-container>\n <c8y-li-action\n *ngIf=\"operation.status === OPERATION_STATUS.PENDING\"\n label=\"{{ 'Cancel operation' | translate }}\"\n (click)=\"$event.stopPropagation(); sharedService.cancel(operation)\"\n icon=\"times-circle\"\n c8yProductExperience\n inherit\n ></c8y-li-action>\n </ng-container>\n <c8y-li-collapse class=\"m-b-16\">\n <c8y-operation-details-tabs\n *ngIf=\"!listItem.collapsed\"\n [operation]=\"operation\"\n [bulkOperationModalDetailsService]=\"bulkOperationListItemService\"\n ></c8y-operation-details-tabs>\n </c8y-li-collapse>\n</c8y-li>\n", dependencies: [{ kind: "directive", type: i5.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.IfAllowedDirective, selector: "[c8yIfAllowed]", inputs: ["c8yIfAllowed", "c8yIfAllowedAllowAny"] }, { kind: "component", type: i5.ListItemComponent, selector: "c8y-list-item, c8y-li", inputs: ["active", "highlighted", "emptyActions", "dense", "collapsed", "selectable"], outputs: ["collapsedChange"] }, { kind: "component", type: i5.ListItemIconComponent, selector: "c8y-list-item-icon, c8y-li-icon", inputs: ["icon", "status"] }, { kind: "component", type: i5.ListItemActionComponent, selector: "c8y-list-item-action, c8y-li-action", inputs: ["label", "icon", "disabled"], outputs: ["click"] }, { kind: "component", type: i5.ListItemCollapseComponent, selector: "c8y-list-item-collapse, c8y-li-collapse", inputs: ["collapseWay"] }, { kind: "directive", type: i5.ProductExperienceDirective, selector: "[c8yProductExperience]", inputs: ["actionName", "actionData", "inherit", "suppressDataOverriding"] }, { kind: "component", type: i7.OperationDetailsTabsComponent, selector: "c8y-operation-details-tabs", inputs: ["operation", "readOnly", "bulkOperationModalDetailsService"], outputs: ["onRetryFailedOperations", "showFailedOperation"] }, { kind: "directive", type: i8.TooltipDirective, selector: "[tooltip], [tooltipHtml]", inputs: ["adaptivePosition", "tooltip", "placement", "triggers", "container", "containerClass", "boundariesElement", "isOpen", "isDisabled", "delay", "tooltipHtml", "tooltipPlacement", "tooltipIsOpen", "tooltipEnable", "tooltipAppendToBody", "tooltipAnimation", "tooltipClass", "tooltipContext", "tooltipPopupDelay", "tooltipFadeDuration", "tooltipTrigger"], outputs: ["tooltipChange", "onShown", "onHidden", "tooltipStateChanged"], exportAs: ["bs-tooltip"] }, { kind: "directive", type: i4.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i4.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "pipe", type: i5.C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i5.DatePipe, name: "c8yDate" }] }); }
57
65
  }
58
66
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: OperationsListItemComponent, decorators: [{
59
67
  type: Component,
@@ -77,4 +85,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
77
85
  type: ViewChild,
78
86
  args: ['listItem', { static: true }]
79
87
  }] } });
80
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3BlcmF0aW9ucy1saXN0LWl0ZW0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vb3BlcmF0aW9ucy9vcGVyYXRpb25zLWxpc3Qvb3BlcmF0aW9ucy1saXN0LWl0ZW0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vb3BlcmF0aW9ucy9vcGVyYXRpb25zLWxpc3Qvb3BlcmF0aW9ucy1saXN0LWl0ZW0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFVLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNoRixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pELE9BQU8sRUFBYyxlQUFlLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDMUQsT0FBTyxFQUNMLE9BQU8sRUFDUCxpQkFBaUIsRUFHakIsK0JBQStCLEVBQ2hDLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0seURBQXlELENBQUM7QUFDdkcsT0FBTyxFQUNMLGlCQUFpQixFQUVqQiw0QkFBNEIsRUFDN0IsTUFBTSx1Q0FBdUMsQ0FBQztBQUMvQyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7Ozs7Ozs7OztBQVlsRSxNQUFNLE9BQU8sMkJBQTJCO0lBdUJ0QyxZQUNTLDRCQUEwRCxFQUMxRCxhQUFnQyxFQUNoQyxxQkFBNEMsRUFDM0MsS0FBcUIsRUFDckIsTUFBYztRQUpmLGlDQUE0QixHQUE1Qiw0QkFBNEIsQ0FBOEI7UUFDMUQsa0JBQWEsR0FBYixhQUFhLENBQW1CO1FBQ2hDLDBCQUFxQixHQUFyQixxQkFBcUIsQ0FBdUI7UUFDM0MsVUFBSyxHQUFMLEtBQUssQ0FBZ0I7UUFDckIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQXhCeEIsY0FBUyxHQUFHLElBQUksQ0FBQztRQUVqQixhQUFRLEdBQUcsS0FBSyxDQUFDO1FBRWpCLG1CQUFjLEdBQUcsS0FBSyxDQUFDO1FBSXZCLG1CQUFjLEdBQUcsS0FBSyxDQUFDO1FBQ3ZCLHFCQUFnQixHQUFHLGVBQWUsQ0FBQztRQUNuQyxpQ0FBNEIsR0FBb0MsNEJBQTRCLENBQUM7UUFDN0YsYUFBUSxHQUNOLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsV0FBVyxFQUFFLEVBQUU7WUFDaEQsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDO0lBWXBELENBQUM7SUFFSixRQUFRO1FBQ04sSUFBSSxDQUFDLGNBQWM7WUFDakIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLEVBQUUsSUFBSTtnQkFDaEMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXO2dCQUMxQixPQUFPLENBQUMsMENBQTBDLENBQUMsQ0FBQztRQUV0RCxNQUFNLDJCQUEyQixHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyw4QkFBOEIsRUFBRSxDQUFDO1FBQ2hHLElBQUksMkJBQTJCLEVBQUUsQ0FBQztZQUNoQyxJQUFJLENBQUMsb0JBQW9CLEdBQUcsMkJBQTJCLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDO1lBQ25FLElBQUksQ0FBQyx5QkFBeUIsR0FBRywyQkFBMkIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUM7UUFDMUUsQ0FBQztJQUNILENBQUM7SUFFRCw2QkFBNkIsQ0FBQyxNQUFjO1FBQzFDLElBQUksTUFBTSxFQUFFLENBQUM7WUFDWCxNQUFNLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDM0IsQ0FBQztRQUVELElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLHFDQUFxQyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDdEYsQ0FBQzs4R0FsRFUsMkJBQTJCO2tHQUEzQiwyQkFBMkIsK09BUDNCO1lBQ1Q7Z0JBQ0UsT0FBTyxFQUFFLCtCQUErQjtnQkFDeEMsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQywyQkFBMkIsQ0FBQzthQUMzRDtTQUNGLDhJQzFCSCwyNEZBbUZBOzsyRkR2RGEsMkJBQTJCO2tCQVZ2QyxTQUFTOytCQUNFLDBCQUEwQixhQUV6Qjt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsK0JBQStCOzRCQUN4QyxXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSw0QkFBNEIsQ0FBQzt5QkFDM0Q7cUJBQ0Y7dU5BSUQsU0FBUztzQkFEUixLQUFLO2dCQUdOLFNBQVM7c0JBRFIsS0FBSztnQkFHTixRQUFRO3NCQURQLEtBQUs7Z0JBR04sY0FBYztzQkFEYixLQUFLO2dCQUdOLGlDQUFpQztzQkFEaEMsS0FBSztnQkFFbUMsUUFBUTtzQkFBaEQsU0FBUzt1QkFBQyxVQUFVLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBmb3J3YXJkUmVmLCBJbnB1dCwgT25Jbml0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgSU9wZXJhdGlvbiwgT3BlcmF0aW9uU3RhdHVzIH0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHtcbiAgZ2V0dGV4dCxcbiAgTGlzdEl0ZW1Db21wb25lbnQsXG4gIFByb2R1Y3RFeHBlcmllbmNlRXZlbnQsXG4gIFByb2R1Y3RFeHBlcmllbmNlRXZlbnRTb3VyY2UsXG4gIFBST0RVQ1RfRVhQRVJJRU5DRV9FVkVOVF9TT1VSQ0Vcbn0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cyc7XG5pbXBvcnQgeyBCdWxrT3BlcmF0aW9uTGlzdEl0ZW1TZXJ2aWNlIH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cy9vcGVyYXRpb25zL2J1bGstb3BlcmF0aW9uLWxpc3QtaXRlbSc7XG5pbXBvcnQge1xuICBPcGVyYXRpb25zU2VydmljZSxcbiAgT3BlcmF0aW9uU3RhdHVzT3B0aW9uc01hcFNoYXJlZCxcbiAgT1BFUkFUSU9OX1NUQVRVU19PUFRJT05TX01BUFxufSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzL29wZXJhdGlvbnMvc2hhcmVkJztcbmltcG9ydCB7IE9wZXJhdGlvbnNMaXN0U2VydmljZSB9IGZyb20gJy4vb3BlcmF0aW9ucy1saXN0LnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjOHktb3BlcmF0aW9ucy1saXN0LWl0ZW0nLFxuICB0ZW1wbGF0ZVVybDogJy4vb3BlcmF0aW9ucy1saXN0LWl0ZW0uY29tcG9uZW50Lmh0bWwnLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBQUk9EVUNUX0VYUEVSSUVOQ0VfRVZFTlRfU09VUkNFLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gT3BlcmF0aW9uc0xpc3RJdGVtQ29tcG9uZW50KVxuICAgIH1cbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBPcGVyYXRpb25zTGlzdEl0ZW1Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIFByb2R1Y3RFeHBlcmllbmNlRXZlbnRTb3VyY2Uge1xuICBASW5wdXQoKVxuICBvcGVyYXRpb246IFBhcnRpYWw8SU9wZXJhdGlvbj47XG4gIEBJbnB1dCgpXG4gIGNvbGxhcHNlZCA9IHRydWU7XG4gIEBJbnB1dCgpXG4gIHJlYWRPbmx5ID0gZmFsc2U7XG4gIEBJbnB1dCgpXG4gIG5vRXhwYW5kVG9nZ2xlID0gZmFsc2U7XG4gIEBJbnB1dCgpXG4gIGlzU21hcnRSdWxlc01pY3Jvc2VydmljZUF2YWlsYWJsZTogYm9vbGVhbjtcbiAgQFZpZXdDaGlsZCgnbGlzdEl0ZW0nLCB7IHN0YXRpYzogdHJ1ZSB9KSBsaXN0SXRlbTogTGlzdEl0ZW1Db21wb25lbnQ7XG4gIHJlZnJlc2hMb2FkaW5nID0gZmFsc2U7XG4gIE9QRVJBVElPTl9TVEFUVVMgPSBPcGVyYXRpb25TdGF0dXM7XG4gIE9QRVJBVElPTl9TVEFUVVNfT1BUSU9OU19NQVA6IE9wZXJhdGlvblN0YXR1c09wdGlvbnNNYXBTaGFyZWQgPSBPUEVSQVRJT05fU1RBVFVTX09QVElPTlNfTUFQO1xuICBkZXZpY2VJZDogc3RyaW5nIHwgbnVtYmVyID1cbiAgICB0aGlzLnJvdXRlLnNuYXBzaG90LnBhcmVudD8uZGF0YS5jb250ZXh0RGF0YT8uaWQgfHxcbiAgICB0aGlzLnJvdXRlLnNuYXBzaG90LmZpcnN0Q2hpbGQ/LmRhdGEuY29udGV4dERhdGE/LmlkO1xuICBpbnZlbnRvcnlQZXJtaXNzaW9uczogc3RyaW5nW107XG4gIHNtYXJ0UnVsZUFkbWluUGVybWlzc2lvbnM6IHN0cmluZ1tdO1xuICBvcGVyYXRpb25UaXRsZTogc3RyaW5nO1xuICBwcm9kdWN0RXhwZXJpZW5jZUV2ZW50OiBQcm9kdWN0RXhwZXJpZW5jZUV2ZW50O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBidWxrT3BlcmF0aW9uTGlzdEl0ZW1TZXJ2aWNlOiBCdWxrT3BlcmF0aW9uTGlzdEl0ZW1TZXJ2aWNlLFxuICAgIHB1YmxpYyBzaGFyZWRTZXJ2aWNlOiBPcGVyYXRpb25zU2VydmljZSxcbiAgICBwdWJsaWMgb3BlcmF0aW9uc0xpc3RTZXJ2aWNlOiBPcGVyYXRpb25zTGlzdFNlcnZpY2UsXG4gICAgcHJpdmF0ZSByb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlclxuICApIHt9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5vcGVyYXRpb25UaXRsZSA9XG4gICAgICB0aGlzLm9wZXJhdGlvbi5jOHlfQ29tbWFuZD8udGV4dCB8fFxuICAgICAgdGhpcy5vcGVyYXRpb24uZGVzY3JpcHRpb24gfHxcbiAgICAgIGdldHRleHQoJ05vIGNvbW1hbmQgdGV4dCBvciBkZXNjcmlwdGlvbiBhdmFpbGFibGUnKTtcblxuICAgIGNvbnN0IHNtYXJ0UnVsZXNDcmVhdGVQZXJtaXNzaW9ucyA9IHRoaXMub3BlcmF0aW9uc0xpc3RTZXJ2aWNlLmdldFNtYXJ0UnVsZXNDcmVhdGVQZXJtaXNzaW9ucygpO1xuICAgIGlmIChzbWFydFJ1bGVzQ3JlYXRlUGVybWlzc2lvbnMpIHtcbiAgICAgIHRoaXMuaW52ZW50b3J5UGVybWlzc2lvbnMgPSBzbWFydFJ1bGVzQ3JlYXRlUGVybWlzc2lvbnNbMF0uYW55Um9sZTtcbiAgICAgIHRoaXMuc21hcnRSdWxlQWRtaW5QZXJtaXNzaW9ucyA9IHNtYXJ0UnVsZXNDcmVhdGVQZXJtaXNzaW9uc1sxXS5hbnlSb2xlO1xuICAgIH1cbiAgfVxuXG4gIGNyZWF0ZUN1c3RvbWl6ZWRCdWxrT3BlcmF0aW9uKCRldmVudD86IEV2ZW50KSB7XG4gICAgaWYgKCRldmVudCkge1xuICAgICAgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIH1cblxuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwoYC9kZXZpY2Vjb250cm9sL3NpbmdsZS9jcmVhdGUtYnVsay8ke3RoaXMub3BlcmF0aW9uLmlkfWApO1xuICB9XG59XG4iLCI8Yzh5LWxpXG4gIGNsYXNzPVwiYzh5LWxpc3RfX2l0ZW0tLWRvdWJsZS1hY3Rpb25zXCJcbiAgW25nQ2xhc3NdPVwieyAnYzh5LWxpc3RfX2l0ZW0tLW5vLWV4cGFuZCc6IG5vRXhwYW5kVG9nZ2xlIH1cIlxuICBbY29sbGFwc2VkXT1cImNvbGxhcHNlZFwiXG4gICNsaXN0SXRlbVxuICBpZD1cInt7IG9wZXJhdGlvbi5pZCB9fVwiXG4+XG4gIDxjOHktbGktaWNvbj5cbiAgICA8YnV0dG9uXG4gICAgICBjbGFzcz1cImJ0bi1jbGVhblwiXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiT1BFUkFUSU9OX1NUQVRVU19PUFRJT05TX01BUFtvcGVyYXRpb24uc3RhdHVzXS5sYWJlbCB8IHRyYW5zbGF0ZVwiXG4gICAgICBbdG9vbHRpcF09XCJPUEVSQVRJT05fU1RBVFVTX09QVElPTlNfTUFQW29wZXJhdGlvbi5zdGF0dXNdLmxhYmVsIHwgdHJhbnNsYXRlXCJcbiAgICAgIHBsYWNlbWVudD1cInJpZ2h0XCJcbiAgICAgIGNvbnRhaW5lcj1cImJvZHlcIlxuICAgICAgW2RlbGF5XT1cIjUwMFwiXG4gICAgPlxuICAgICAgPGlcbiAgICAgICAgW2M4eUljb25dPVwiT1BFUkFUSU9OX1NUQVRVU19PUFRJT05TX01BUFtvcGVyYXRpb24uc3RhdHVzXS5pY29uXCJcbiAgICAgICAgW25nQ2xhc3NdPVwiT1BFUkFUSU9OX1NUQVRVU19PUFRJT05TX01BUFtvcGVyYXRpb24uc3RhdHVzXS5zdHlsZUNsYXNzXCJcbiAgICAgID48L2k+XG4gICAgPC9idXR0b24+XG4gIDwvYzh5LWxpLWljb24+XG4gIDxkaXYgW25nQ2xhc3NdPVwieyAnY29udGVudC1mbGV4LTU4JzogIXJlYWRPbmx5LCAnY29udGVudC1mbGV4LTUwJzogcmVhZE9ubHkgfVwiPlxuICAgIDxkaXYgY2xhc3M9XCJjb2wtNVwiPlxuICAgICAgPHNwYW4gdGl0bGU9XCJ7eyBvcGVyYXRpb25UaXRsZSB8IHRyYW5zbGF0ZSB9fVwiIGNsYXNzPVwidGV4dC10cnVuY2F0ZVwiPlxuICAgICAgICB7eyBvcGVyYXRpb25UaXRsZSB8IHRyYW5zbGF0ZSB9fVxuICAgICAgPC9zcGFuPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJjb2wtM1wiICpuZ0lmPVwiIWRldmljZUlkXCI+XG4gICAgICA8YVxuICAgICAgICB0aXRsZT1cInt7IG9wZXJhdGlvbi5kZXZpY2VOYW1lIH19XCJcbiAgICAgICAgW3JvdXRlckxpbmtdPVwiWycvZGV2aWNlJywgb3BlcmF0aW9uLmRldmljZUlkLCAnZGV2aWNlLWluZm8nXVwiXG4gICAgICAgIHJvdXRlckxpbmtBY3RpdmU9XCJhY3RpdmVcIlxuICAgICAgICBjbGFzcz1cInRleHQtdHJ1bmNhdGVcIlxuICAgICAgPlxuICAgICAgICB7eyBvcGVyYXRpb24uZGV2aWNlTmFtZSB9fVxuICAgICAgPC9hPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJjb2wtM1wiPlxuICAgICAgPHNtYWxsIGNsYXNzPVwiaWNvbi1mbGV4IHRleHQtbXV0ZWRcIj5cbiAgICAgICAgPGkgYzh5SWNvbj1cImNhbGVuZGFyXCIgY2xhc3M9XCJtLXItNFwiPjwvaT5cbiAgICAgICAge3sgb3BlcmF0aW9uLmNyZWF0aW9uVGltZSB8IGM4eURhdGUgfX1cbiAgICAgIDwvc21hbGw+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXJlYWRPbmx5XCI+XG4gICAgPGM4eS1saS1hY3Rpb25cbiAgICAgIGxhYmVsPVwie3sgJ1NjaGVkdWxlIGFzIGJ1bGsgb3BlcmF0aW9uJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAoY2xpY2spPVwiY3JlYXRlQ3VzdG9taXplZEJ1bGtPcGVyYXRpb24oJGV2ZW50KVwiXG4gICAgICBpY29uPVwiYzh5LWljb24gYzh5LWljb24tZW5lcmd5XCJcbiAgICAgIGM4eVByb2R1Y3RFeHBlcmllbmNlXG4gICAgICBpbmhlcml0XG4gICAgPjwvYzh5LWxpLWFjdGlvbj5cbiAgICA8bmctY29udGFpbmVyICpjOHlJZkFsbG93ZWQ9XCJpbnZlbnRvcnlQZXJtaXNzaW9uczsgYWxsb3dBbnk6IHRydWVcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKmM4eUlmQWxsb3dlZD1cInNtYXJ0UnVsZUFkbWluUGVybWlzc2lvbnM7IGFsbG93QW55OiB0cnVlXCI+XG4gICAgICAgIDxjOHktbGktYWN0aW9uXG4gICAgICAgICAgKm5nSWY9XCJpc1NtYXJ0UnVsZXNNaWNyb3NlcnZpY2VBdmFpbGFibGVcIlxuICAgICAgICAgIGxhYmVsPVwie3sgJ0NyZWF0ZSBzbWFydCBydWxlJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgKGNsaWNrKT1cIm9wZXJhdGlvbnNMaXN0U2VydmljZS5jcmVhdGVTbWFydFJ1bGUob3BlcmF0aW9uKVwiXG4gICAgICAgICAgaWNvbj1cInNsaWRlcnNcIlxuICAgICAgICAgIGM4eVByb2R1Y3RFeHBlcmllbmNlXG4gICAgICAgICAgaW5oZXJpdFxuICAgICAgICA+PC9jOHktbGktYWN0aW9uPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPGM4eS1saS1hY3Rpb25cbiAgICAgICpuZ0lmPVwib3BlcmF0aW9uLnN0YXR1cyA9PT0gT1BFUkFUSU9OX1NUQVRVUy5QRU5ESU5HXCJcbiAgICAgIGxhYmVsPVwie3sgJ0NhbmNlbCBvcGVyYXRpb24nIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7IHNoYXJlZFNlcnZpY2UuY2FuY2VsKG9wZXJhdGlvbilcIlxuICAgICAgaWNvbj1cInRpbWVzLWNpcmNsZVwiXG4gICAgICBjOHlQcm9kdWN0RXhwZXJpZW5jZVxuICAgICAgaW5oZXJpdFxuICAgID48L2M4eS1saS1hY3Rpb24+XG4gIDwvbmctY29udGFpbmVyPlxuICA8Yzh5LWxpLWNvbGxhcHNlIGNsYXNzPVwibS1iLTE2XCI+XG4gICAgPGM4eS1vcGVyYXRpb24tZGV0YWlscy10YWJzXG4gICAgICAqbmdJZj1cIiFsaXN0SXRlbS5jb2xsYXBzZWRcIlxuICAgICAgW29wZXJhdGlvbl09XCJvcGVyYXRpb25cIlxuICAgICAgW2J1bGtPcGVyYXRpb25Nb2RhbERldGFpbHNTZXJ2aWNlXT1cImJ1bGtPcGVyYXRpb25MaXN0SXRlbVNlcnZpY2VcIlxuICAgID48L2M4eS1vcGVyYXRpb24tZGV0YWlscy10YWJzPlxuICA8L2M4eS1saS1jb2xsYXBzZT5cbjwvYzh5LWxpPlxuIl19
88
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3BlcmF0aW9ucy1saXN0LWl0ZW0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vb3BlcmF0aW9ucy9vcGVyYXRpb25zLWxpc3Qvb3BlcmF0aW9ucy1saXN0LWl0ZW0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vb3BlcmF0aW9ucy9vcGVyYXRpb25zLWxpc3Qvb3BlcmF0aW9ucy1saXN0LWl0ZW0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUF5QixTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0YsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6RCxPQUFPLEVBQWMsZUFBZSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzFELE9BQU8sRUFDTCxPQUFPLEVBQ1AsaUJBQWlCLEVBR2pCLCtCQUErQixFQUNoQyxNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLHlEQUF5RCxDQUFDO0FBQ3ZHLE9BQU8sRUFDTCxpQkFBaUIsRUFFakIsNEJBQTRCLEVBQzdCLE1BQU0sdUNBQXVDLENBQUM7QUFDL0MsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7Ozs7Ozs7Ozs7QUFZbEUsTUFBTSxPQUFPLDJCQUEyQjtJQXVCdEMsWUFDUyw0QkFBMEQsRUFDMUQsYUFBZ0MsRUFDaEMscUJBQTRDLEVBQzNDLEtBQXFCLEVBQ3JCLE1BQWM7UUFKZixpQ0FBNEIsR0FBNUIsNEJBQTRCLENBQThCO1FBQzFELGtCQUFhLEdBQWIsYUFBYSxDQUFtQjtRQUNoQywwQkFBcUIsR0FBckIscUJBQXFCLENBQXVCO1FBQzNDLFVBQUssR0FBTCxLQUFLLENBQWdCO1FBQ3JCLFdBQU0sR0FBTixNQUFNLENBQVE7UUF4QnhCLGNBQVMsR0FBRyxJQUFJLENBQUM7UUFFakIsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUVqQixtQkFBYyxHQUFHLEtBQUssQ0FBQztRQUl2QixtQkFBYyxHQUFHLEtBQUssQ0FBQztRQUN2QixxQkFBZ0IsR0FBRyxlQUFlLENBQUM7UUFDbkMsaUNBQTRCLEdBQW9DLDRCQUE0QixDQUFDO1FBQzdGLGFBQVEsR0FDTixJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLFdBQVcsRUFBRSxFQUFFO1lBQ2hELElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQztJQVlwRCxDQUFDO0lBRUosUUFBUTtRQUNOLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1FBRTVCLE1BQU0sMkJBQTJCLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDLDhCQUE4QixFQUFFLENBQUM7UUFDaEcsSUFBSSwyQkFBMkIsRUFBRSxDQUFDO1lBQ2hDLElBQUksQ0FBQyxvQkFBb0IsR0FBRywyQkFBMkIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUM7WUFDbkUsSUFBSSxDQUFDLHlCQUF5QixHQUFHLDJCQUEyQixDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQztRQUMxRSxDQUFDO0lBQ0gsQ0FBQztJQUVELFdBQVcsQ0FBQyxPQUFzQjtRQUNoQyxJQUFJLE9BQU8sQ0FBQyxTQUFTLElBQUksT0FBTyxDQUFDLFNBQVMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUN4RCxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztRQUM5QixDQUFDO0lBQ0gsQ0FBQztJQUVELDZCQUE2QixDQUFDLE1BQWM7UUFDMUMsSUFBSSxNQUFNLEVBQUUsQ0FBQztZQUNYLE1BQU0sQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUMzQixDQUFDO1FBRUQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMscUNBQXFDLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUN0RixDQUFDO0lBRU8sb0JBQW9CO1FBQzFCLElBQUksQ0FBQyxjQUFjO1lBQ2pCLElBQUksQ0FBQyxTQUFTLEVBQUUsV0FBVyxFQUFFLElBQUk7Z0JBQ2pDLElBQUksQ0FBQyxTQUFTLEVBQUUsV0FBVztnQkFDM0IsT0FBTyxDQUFDLDBDQUEwQyxDQUFDLENBQUM7SUFDeEQsQ0FBQzs4R0E1RFUsMkJBQTJCO2tHQUEzQiwyQkFBMkIsK09BUDNCO1lBQ1Q7Z0JBQ0UsT0FBTyxFQUFFLCtCQUErQjtnQkFDeEMsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQywyQkFBMkIsQ0FBQzthQUMzRDtTQUNGLG1LQzFCSCwyNEZBbUZBOzsyRkR2RGEsMkJBQTJCO2tCQVZ2QyxTQUFTOytCQUNFLDBCQUEwQixhQUV6Qjt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsK0JBQStCOzRCQUN4QyxXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSw0QkFBNEIsQ0FBQzt5QkFDM0Q7cUJBQ0Y7dU5BSUQsU0FBUztzQkFEUixLQUFLO2dCQUdOLFNBQVM7c0JBRFIsS0FBSztnQkFHTixRQUFRO3NCQURQLEtBQUs7Z0JBR04sY0FBYztzQkFEYixLQUFLO2dCQUdOLGlDQUFpQztzQkFEaEMsS0FBSztnQkFFbUMsUUFBUTtzQkFBaEQsU0FBUzt1QkFBQyxVQUFVLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBmb3J3YXJkUmVmLCBJbnB1dCwgT25Jbml0LCBTaW1wbGVDaGFuZ2VzLCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgSU9wZXJhdGlvbiwgT3BlcmF0aW9uU3RhdHVzIH0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHtcbiAgZ2V0dGV4dCxcbiAgTGlzdEl0ZW1Db21wb25lbnQsXG4gIFByb2R1Y3RFeHBlcmllbmNlRXZlbnQsXG4gIFByb2R1Y3RFeHBlcmllbmNlRXZlbnRTb3VyY2UsXG4gIFBST0RVQ1RfRVhQRVJJRU5DRV9FVkVOVF9TT1VSQ0Vcbn0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cyc7XG5pbXBvcnQgeyBCdWxrT3BlcmF0aW9uTGlzdEl0ZW1TZXJ2aWNlIH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cy9vcGVyYXRpb25zL2J1bGstb3BlcmF0aW9uLWxpc3QtaXRlbSc7XG5pbXBvcnQge1xuICBPcGVyYXRpb25zU2VydmljZSxcbiAgT3BlcmF0aW9uU3RhdHVzT3B0aW9uc01hcFNoYXJlZCxcbiAgT1BFUkFUSU9OX1NUQVRVU19PUFRJT05TX01BUFxufSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzL29wZXJhdGlvbnMvc2hhcmVkJztcbmltcG9ydCB7IE9wZXJhdGlvbnNMaXN0U2VydmljZSB9IGZyb20gJy4vb3BlcmF0aW9ucy1saXN0LnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjOHktb3BlcmF0aW9ucy1saXN0LWl0ZW0nLFxuICB0ZW1wbGF0ZVVybDogJy4vb3BlcmF0aW9ucy1saXN0LWl0ZW0uY29tcG9uZW50Lmh0bWwnLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBQUk9EVUNUX0VYUEVSSUVOQ0VfRVZFTlRfU09VUkNFLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gT3BlcmF0aW9uc0xpc3RJdGVtQ29tcG9uZW50KVxuICAgIH1cbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBPcGVyYXRpb25zTGlzdEl0ZW1Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIFByb2R1Y3RFeHBlcmllbmNlRXZlbnRTb3VyY2Uge1xuICBASW5wdXQoKVxuICBvcGVyYXRpb246IFBhcnRpYWw8SU9wZXJhdGlvbj47XG4gIEBJbnB1dCgpXG4gIGNvbGxhcHNlZCA9IHRydWU7XG4gIEBJbnB1dCgpXG4gIHJlYWRPbmx5ID0gZmFsc2U7XG4gIEBJbnB1dCgpXG4gIG5vRXhwYW5kVG9nZ2xlID0gZmFsc2U7XG4gIEBJbnB1dCgpXG4gIGlzU21hcnRSdWxlc01pY3Jvc2VydmljZUF2YWlsYWJsZTogYm9vbGVhbjtcbiAgQFZpZXdDaGlsZCgnbGlzdEl0ZW0nLCB7IHN0YXRpYzogdHJ1ZSB9KSBsaXN0SXRlbTogTGlzdEl0ZW1Db21wb25lbnQ7XG4gIHJlZnJlc2hMb2FkaW5nID0gZmFsc2U7XG4gIE9QRVJBVElPTl9TVEFUVVMgPSBPcGVyYXRpb25TdGF0dXM7XG4gIE9QRVJBVElPTl9TVEFUVVNfT1BUSU9OU19NQVA6IE9wZXJhdGlvblN0YXR1c09wdGlvbnNNYXBTaGFyZWQgPSBPUEVSQVRJT05fU1RBVFVTX09QVElPTlNfTUFQO1xuICBkZXZpY2VJZDogc3RyaW5nIHwgbnVtYmVyID1cbiAgICB0aGlzLnJvdXRlLnNuYXBzaG90LnBhcmVudD8uZGF0YS5jb250ZXh0RGF0YT8uaWQgfHxcbiAgICB0aGlzLnJvdXRlLnNuYXBzaG90LmZpcnN0Q2hpbGQ/LmRhdGEuY29udGV4dERhdGE/LmlkO1xuICBpbnZlbnRvcnlQZXJtaXNzaW9uczogc3RyaW5nW107XG4gIHNtYXJ0UnVsZUFkbWluUGVybWlzc2lvbnM6IHN0cmluZ1tdO1xuICBvcGVyYXRpb25UaXRsZTogc3RyaW5nO1xuICBwcm9kdWN0RXhwZXJpZW5jZUV2ZW50OiBQcm9kdWN0RXhwZXJpZW5jZUV2ZW50O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBidWxrT3BlcmF0aW9uTGlzdEl0ZW1TZXJ2aWNlOiBCdWxrT3BlcmF0aW9uTGlzdEl0ZW1TZXJ2aWNlLFxuICAgIHB1YmxpYyBzaGFyZWRTZXJ2aWNlOiBPcGVyYXRpb25zU2VydmljZSxcbiAgICBwdWJsaWMgb3BlcmF0aW9uc0xpc3RTZXJ2aWNlOiBPcGVyYXRpb25zTGlzdFNlcnZpY2UsXG4gICAgcHJpdmF0ZSByb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlclxuICApIHt9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy51cGRhdGVPcGVyYXRpb25UaXRsZSgpO1xuXG4gICAgY29uc3Qgc21hcnRSdWxlc0NyZWF0ZVBlcm1pc3Npb25zID0gdGhpcy5vcGVyYXRpb25zTGlzdFNlcnZpY2UuZ2V0U21hcnRSdWxlc0NyZWF0ZVBlcm1pc3Npb25zKCk7XG4gICAgaWYgKHNtYXJ0UnVsZXNDcmVhdGVQZXJtaXNzaW9ucykge1xuICAgICAgdGhpcy5pbnZlbnRvcnlQZXJtaXNzaW9ucyA9IHNtYXJ0UnVsZXNDcmVhdGVQZXJtaXNzaW9uc1swXS5hbnlSb2xlO1xuICAgICAgdGhpcy5zbWFydFJ1bGVBZG1pblBlcm1pc3Npb25zID0gc21hcnRSdWxlc0NyZWF0ZVBlcm1pc3Npb25zWzFdLmFueVJvbGU7XG4gICAgfVxuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzLm9wZXJhdGlvbiAmJiBjaGFuZ2VzLm9wZXJhdGlvbi5jdXJyZW50VmFsdWUpIHtcbiAgICAgIHRoaXMudXBkYXRlT3BlcmF0aW9uVGl0bGUoKTtcbiAgICB9XG4gIH1cblxuICBjcmVhdGVDdXN0b21pemVkQnVsa09wZXJhdGlvbigkZXZlbnQ/OiBFdmVudCkge1xuICAgIGlmICgkZXZlbnQpIHtcbiAgICAgICRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB9XG5cbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKGAvZGV2aWNlY29udHJvbC9zaW5nbGUvY3JlYXRlLWJ1bGsvJHt0aGlzLm9wZXJhdGlvbi5pZH1gKTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlT3BlcmF0aW9uVGl0bGUoKTogdm9pZCB7XG4gICAgdGhpcy5vcGVyYXRpb25UaXRsZSA9XG4gICAgICB0aGlzLm9wZXJhdGlvbj8uYzh5X0NvbW1hbmQ/LnRleHQgfHxcbiAgICAgIHRoaXMub3BlcmF0aW9uPy5kZXNjcmlwdGlvbiB8fFxuICAgICAgZ2V0dGV4dCgnTm8gY29tbWFuZCB0ZXh0IG9yIGRlc2NyaXB0aW9uIGF2YWlsYWJsZScpO1xuICB9XG59XG4iLCI8Yzh5LWxpXG4gIGNsYXNzPVwiYzh5LWxpc3RfX2l0ZW0tLWRvdWJsZS1hY3Rpb25zXCJcbiAgW25nQ2xhc3NdPVwieyAnYzh5LWxpc3RfX2l0ZW0tLW5vLWV4cGFuZCc6IG5vRXhwYW5kVG9nZ2xlIH1cIlxuICBbY29sbGFwc2VkXT1cImNvbGxhcHNlZFwiXG4gICNsaXN0SXRlbVxuICBpZD1cInt7IG9wZXJhdGlvbi5pZCB9fVwiXG4+XG4gIDxjOHktbGktaWNvbj5cbiAgICA8YnV0dG9uXG4gICAgICBjbGFzcz1cImJ0bi1jbGVhblwiXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiT1BFUkFUSU9OX1NUQVRVU19PUFRJT05TX01BUFtvcGVyYXRpb24uc3RhdHVzXS5sYWJlbCB8IHRyYW5zbGF0ZVwiXG4gICAgICBbdG9vbHRpcF09XCJPUEVSQVRJT05fU1RBVFVTX09QVElPTlNfTUFQW29wZXJhdGlvbi5zdGF0dXNdLmxhYmVsIHwgdHJhbnNsYXRlXCJcbiAgICAgIHBsYWNlbWVudD1cInJpZ2h0XCJcbiAgICAgIGNvbnRhaW5lcj1cImJvZHlcIlxuICAgICAgW2RlbGF5XT1cIjUwMFwiXG4gICAgPlxuICAgICAgPGlcbiAgICAgICAgW2M4eUljb25dPVwiT1BFUkFUSU9OX1NUQVRVU19PUFRJT05TX01BUFtvcGVyYXRpb24uc3RhdHVzXS5pY29uXCJcbiAgICAgICAgW25nQ2xhc3NdPVwiT1BFUkFUSU9OX1NUQVRVU19PUFRJT05TX01BUFtvcGVyYXRpb24uc3RhdHVzXS5zdHlsZUNsYXNzXCJcbiAgICAgID48L2k+XG4gICAgPC9idXR0b24+XG4gIDwvYzh5LWxpLWljb24+XG4gIDxkaXYgW25nQ2xhc3NdPVwieyAnY29udGVudC1mbGV4LTU4JzogIXJlYWRPbmx5LCAnY29udGVudC1mbGV4LTUwJzogcmVhZE9ubHkgfVwiPlxuICAgIDxkaXYgY2xhc3M9XCJjb2wtNVwiPlxuICAgICAgPHNwYW4gdGl0bGU9XCJ7eyBvcGVyYXRpb25UaXRsZSB8IHRyYW5zbGF0ZSB9fVwiIGNsYXNzPVwidGV4dC10cnVuY2F0ZVwiPlxuICAgICAgICB7eyBvcGVyYXRpb25UaXRsZSB8IHRyYW5zbGF0ZSB9fVxuICAgICAgPC9zcGFuPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJjb2wtM1wiICpuZ0lmPVwiIWRldmljZUlkXCI+XG4gICAgICA8YVxuICAgICAgICB0aXRsZT1cInt7IG9wZXJhdGlvbi5kZXZpY2VOYW1lIH19XCJcbiAgICAgICAgW3JvdXRlckxpbmtdPVwiWycvZGV2aWNlJywgb3BlcmF0aW9uLmRldmljZUlkLCAnZGV2aWNlLWluZm8nXVwiXG4gICAgICAgIHJvdXRlckxpbmtBY3RpdmU9XCJhY3RpdmVcIlxuICAgICAgICBjbGFzcz1cInRleHQtdHJ1bmNhdGVcIlxuICAgICAgPlxuICAgICAgICB7eyBvcGVyYXRpb24uZGV2aWNlTmFtZSB9fVxuICAgICAgPC9hPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJjb2wtM1wiPlxuICAgICAgPHNtYWxsIGNsYXNzPVwiaWNvbi1mbGV4IHRleHQtbXV0ZWRcIj5cbiAgICAgICAgPGkgYzh5SWNvbj1cImNhbGVuZGFyXCIgY2xhc3M9XCJtLXItNFwiPjwvaT5cbiAgICAgICAge3sgb3BlcmF0aW9uLmNyZWF0aW9uVGltZSB8IGM4eURhdGUgfX1cbiAgICAgIDwvc21hbGw+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXJlYWRPbmx5XCI+XG4gICAgPGM4eS1saS1hY3Rpb25cbiAgICAgIGxhYmVsPVwie3sgJ1NjaGVkdWxlIGFzIGJ1bGsgb3BlcmF0aW9uJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAoY2xpY2spPVwiY3JlYXRlQ3VzdG9taXplZEJ1bGtPcGVyYXRpb24oJGV2ZW50KVwiXG4gICAgICBpY29uPVwiYzh5LWljb24gYzh5LWljb24tZW5lcmd5XCJcbiAgICAgIGM4eVByb2R1Y3RFeHBlcmllbmNlXG4gICAgICBpbmhlcml0XG4gICAgPjwvYzh5LWxpLWFjdGlvbj5cbiAgICA8bmctY29udGFpbmVyICpjOHlJZkFsbG93ZWQ9XCJpbnZlbnRvcnlQZXJtaXNzaW9uczsgYWxsb3dBbnk6IHRydWVcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKmM4eUlmQWxsb3dlZD1cInNtYXJ0UnVsZUFkbWluUGVybWlzc2lvbnM7IGFsbG93QW55OiB0cnVlXCI+XG4gICAgICAgIDxjOHktbGktYWN0aW9uXG4gICAgICAgICAgKm5nSWY9XCJpc1NtYXJ0UnVsZXNNaWNyb3NlcnZpY2VBdmFpbGFibGVcIlxuICAgICAgICAgIGxhYmVsPVwie3sgJ0NyZWF0ZSBzbWFydCBydWxlJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgKGNsaWNrKT1cIm9wZXJhdGlvbnNMaXN0U2VydmljZS5jcmVhdGVTbWFydFJ1bGUob3BlcmF0aW9uKVwiXG4gICAgICAgICAgaWNvbj1cInNsaWRlcnNcIlxuICAgICAgICAgIGM4eVByb2R1Y3RFeHBlcmllbmNlXG4gICAgICAgICAgaW5oZXJpdFxuICAgICAgICA+PC9jOHktbGktYWN0aW9uPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPGM4eS1saS1hY3Rpb25cbiAgICAgICpuZ0lmPVwib3BlcmF0aW9uLnN0YXR1cyA9PT0gT1BFUkFUSU9OX1NUQVRVUy5QRU5ESU5HXCJcbiAgICAgIGxhYmVsPVwie3sgJ0NhbmNlbCBvcGVyYXRpb24nIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7IHNoYXJlZFNlcnZpY2UuY2FuY2VsKG9wZXJhdGlvbilcIlxuICAgICAgaWNvbj1cInRpbWVzLWNpcmNsZVwiXG4gICAgICBjOHlQcm9kdWN0RXhwZXJpZW5jZVxuICAgICAgaW5oZXJpdFxuICAgID48L2M4eS1saS1hY3Rpb24+XG4gIDwvbmctY29udGFpbmVyPlxuICA8Yzh5LWxpLWNvbGxhcHNlIGNsYXNzPVwibS1iLTE2XCI+XG4gICAgPGM4eS1vcGVyYXRpb24tZGV0YWlscy10YWJzXG4gICAgICAqbmdJZj1cIiFsaXN0SXRlbS5jb2xsYXBzZWRcIlxuICAgICAgW29wZXJhdGlvbl09XCJvcGVyYXRpb25cIlxuICAgICAgW2J1bGtPcGVyYXRpb25Nb2RhbERldGFpbHNTZXJ2aWNlXT1cImJ1bGtPcGVyYXRpb25MaXN0SXRlbVNlcnZpY2VcIlxuICAgID48L2M4eS1vcGVyYXRpb24tZGV0YWlscy10YWJzPlxuICA8L2M4eS1saS1jb2xsYXBzZT5cbjwvYzh5LWxpPlxuIl19
@@ -5,8 +5,8 @@ import { SINGLE_OPERATION_EVENT_DEVICE_TAB, SINGLE_OPERATION_EVENT_OVERVIEW } fr
5
5
  import { OPERATION_STATUS_OPTIONS_MAP } from '@c8y/ngx-components/operations/shared';
6
6
  import { StatusFilterComponent } from '@c8y/ngx-components/operations/status-filter';
7
7
  import { flatten } from 'lodash-es';
8
- import { BehaviorSubject, combineLatest } from 'rxjs';
9
- import { shareReplay, switchMap, tap } from 'rxjs/operators';
8
+ import { BehaviorSubject, combineLatest, pipe } from 'rxjs';
9
+ import { map, shareReplay, switchMap, tap } from 'rxjs/operators';
10
10
  import { OperationsListService } from './operations-list.service';
11
11
  import * as i0 from "@angular/core";
12
12
  import * as i1 from "@c8y/ngx-components";
@@ -32,6 +32,14 @@ export class OperationsListComponent {
32
32
  }), switchMap(([statusFilters]) => this.filter(statusFilters)), tap(() => {
33
33
  this.refreshLoading = false;
34
34
  }), shareReplay(1));
35
+ this.operationsFilterPipe = pipe(map((operations) => {
36
+ const statusFilters = this.statusFilter$.getValue();
37
+ if (!statusFilters || !statusFilters.length) {
38
+ return operations;
39
+ }
40
+ const allowedStatuses = flatten(statusFilters.map(sf => sf.status));
41
+ return operations.filter(op => allowedStatuses.includes(op.status));
42
+ }));
35
43
  this.productExperienceEvent = {
36
44
  eventName: !!this.deviceId ? SINGLE_OPERATION_EVENT_DEVICE_TAB : SINGLE_OPERATION_EVENT_OVERVIEW
37
45
  };
@@ -66,7 +74,7 @@ export class OperationsListComponent {
66
74
  provide: PRODUCT_EXPERIENCE_EVENT_SOURCE,
67
75
  useExisting: forwardRef(() => OperationsListComponent)
68
76
  }
69
- ], viewQueries: [{ propertyName: "statusFilter", first: true, predicate: ["statusFilter"], descendants: true, static: true }], ngImport: i0, template: "<c8y-title>{{ title | translate }}</c8y-title>\n\n<c8y-breadcrumb *ngIf=\"showOverviewBreadcrumbs\">\n <c8y-breadcrumb-item\n [icon]=\"'c8y-overviews'\"\n [label]=\"'Overviews' | translate\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item\n [icon]=\"'c8y-device-control'\"\n [label]=\"'Device Control' | translate\"\n [path]=\"'devicecontrol/single'\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item\n [icon]=\"'c8y-device-control'\"\n [label]=\"'Single operations' | translate\"\n ></c8y-breadcrumb-item>\n</c8y-breadcrumb>\n\n<c8y-action-bar-item\n [placement]=\"'left'\"\n itemClass=\"navbar-form\"\n>\n <c8y-status-filter\n #statusFilter\n [options]=\"OPERATION_STATUS_OPTIONS_MAP\"\n (onFilterChanged)=\"statusFilter$.next($event)\"\n c8yProductExperience\n inherit\n ></c8y-status-filter>\n</c8y-action-bar-item>\n\n<c8y-action-bar-item [placement]=\"'right'\">\n <c8y-realtime-btn [service]=\"realtime\"></c8y-realtime-btn>\n</c8y-action-bar-item>\n\n<c8y-action-bar-item [placement]=\"'right'\">\n <button\n class=\"btn btn-link d-flex a-i-center\"\n title=\"{{ 'Reload' | translate }}\"\n (click)=\"reload$.next()\"\n >\n <i\n class=\"m-r-4\"\n c8yIcon=\"refresh\"\n [ngClass]=\"{ 'icon-spin': refreshLoading }\"\n ></i>\n <span class=\"text-truncate\">\n {{ 'Reload' | translate }}\n </span>\n </button>\n</c8y-action-bar-item>\n\n<c8y-help\n src=\"/docs/device-management-application/monitoring-and-controlling-devices/#to-view-single-operations\"\n></c8y-help>\n\n<!-- Empty state -->\n<c8y-ui-empty-state\n [icon]=\"'c8y-energy'\"\n [title]=\"'No items to display.' | translate\"\n [subtitle]=\"'Operations will be displayed here.' | translate\"\n *ngIf=\"(operations$ | async)?.data.length === 0 && !(statusFilter$ | async)\"\n></c8y-ui-empty-state>\n<!-- No results empty state -->\n<c8y-ui-empty-state\n [icon]=\"'search'\"\n [title]=\"'No results to display.' | translate\"\n [subtitle]=\"'Adjust or reset the filter.' | translate\"\n *ngIf=\"(operations$ | async)?.data.length === 0 && (statusFilter$ | async)\"\n>\n <button\n class=\"btn btn-primary\"\n title=\"{{ 'Reset filter' | translate }}\"\n type=\"button\"\n (click)=\"statusFilter.reset()\"\n translate\n >\n Reset filter\n </button>\n</c8y-ui-empty-state>\n\n<!-- Detailed list of operations + load more button -->\n<c8y-list-group class=\"m-b-24\">\n <div\n class=\"page-sticky-header c8y-list__item c8y-list__item--double-actions hidden-xs\"\n *ngIf=\"(operations$ | async)?.data.length\"\n >\n <div class=\"c8y-list__item__block\">\n <div class=\"c8y-list__item__icon\">\n <i class=\"p-l-24\"></i>\n </div>\n <div class=\"c8y-list__item__body text-truncate-wrap\">\n <div class=\"content-flex-57\">\n <div class=\"col-5\">\n {{ 'Operation' | translate }}\n </div>\n <div\n class=\"flex-grow\"\n *ngIf=\"!deviceId\"\n >\n {{ 'Device' | translate }}\n </div>\n <div class=\"col-4\">\n {{ 'Date created' | translate }}\n </div>\n </div>\n </div>\n <div class=\"c8y-list__item__actions\"></div>\n </div>\n </div>\n <div\n class=\"d-contents\"\n *c8yFor=\"\n let op of operations$ | async;\n let i = index;\n realtime: realtime;\n realtimeOptions: { entityOrId: deviceId };\n comparator: compareOperations.bind(this);\n loadMore: 'auto'\n \"\n >\n <c8y-operations-list-item\n class=\"d-contents\"\n [operation]=\"op\"\n [isSmartRulesMicroserviceAvailable]=\"isSmartRulesMicroserviceAvailable\"\n (reload)=\"reload$.next()\"\n c8yProductExperience\n inherit\n ></c8y-operations-list-item>\n </div>\n</c8y-list-group>\n", dependencies: [{ kind: "component", type: i1.ActionBarItemComponent, selector: "c8y-action-bar-item", inputs: ["placement", "priority", "itemClass", "injector", "groupId", "inGroupPriority"] }, { kind: "component", type: i1.BreadcrumbComponent, selector: "c8y-breadcrumb" }, { kind: "component", type: i1.BreadcrumbItemComponent, selector: "c8y-breadcrumb-item", inputs: ["icon", "translate", "label", "path", "injector"] }, { kind: "component", type: i1.EmptyStateComponent, selector: "c8y-ui-empty-state", inputs: ["icon", "title", "subtitle", "horizontal"] }, { kind: "directive", type: i1.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i1.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.ForOfDirective, selector: "[c8yFor]", inputs: ["c8yForOf", "c8yForLoadMore", "c8yForPipe", "c8yForNotFound", "c8yForMaxIterations", "c8yForLoadingTemplate", "c8yForLoadNextLabel", "c8yForLoadingLabel", "c8yForRealtime", "c8yForRealtimeOptions", "c8yForComparator", "c8yForEnableVirtualScroll", "c8yForVirtualScrollElementSize", "c8yForVirtualScrollStrategy", "c8yForVirtualScrollContainerHeight"], outputs: ["c8yForCount", "c8yForChange", "c8yForLoadMoreComponent"] }, { kind: "component", type: i1.TitleComponent, selector: "c8y-title", inputs: ["pageTitleUpdate"] }, { kind: "component", type: i1.ListGroupComponent, selector: "c8y-list-group" }, { kind: "directive", type: i1.ProductExperienceDirective, selector: "[c8yProductExperience]", inputs: ["actionName", "actionData", "inherit", "suppressDataOverriding"] }, { kind: "component", type: i1.HelpComponent, selector: "c8y-help", inputs: ["src", "isCollapsed", "priority", "icon"] }, { kind: "component", type: i1.RealtimeButtonComponent, selector: "c8y-realtime-btn", inputs: ["service", "label", "title", "disabled"], outputs: ["onToggle"] }, { kind: "component", type: i5.StatusFilterComponent, selector: "c8y-status-filter", inputs: ["options", "multiple", "small"], outputs: ["onFilterChanged"] }, { kind: "component", type: i6.OperationsListItemComponent, selector: "c8y-operations-list-item", inputs: ["operation", "collapsed", "readOnly", "noExpandToggle", "isSmartRulesMicroserviceAvailable"] }, { kind: "pipe", type: i1.C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }] }); }
77
+ ], viewQueries: [{ propertyName: "statusFilter", first: true, predicate: ["statusFilter"], descendants: true, static: true }], ngImport: i0, template: "<c8y-title>{{ title | translate }}</c8y-title>\n\n<c8y-breadcrumb *ngIf=\"showOverviewBreadcrumbs\">\n <c8y-breadcrumb-item\n [icon]=\"'c8y-overviews'\"\n [label]=\"'Overviews' | translate\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item\n [icon]=\"'c8y-device-control'\"\n [label]=\"'Device Control' | translate\"\n [path]=\"'devicecontrol/single'\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item\n [icon]=\"'c8y-device-control'\"\n [label]=\"'Single operations' | translate\"\n ></c8y-breadcrumb-item>\n</c8y-breadcrumb>\n\n<c8y-action-bar-item\n [placement]=\"'left'\"\n itemClass=\"navbar-form\"\n>\n <c8y-status-filter\n #statusFilter\n [options]=\"OPERATION_STATUS_OPTIONS_MAP\"\n (onFilterChanged)=\"statusFilter$.next($event)\"\n c8yProductExperience\n inherit\n ></c8y-status-filter>\n</c8y-action-bar-item>\n\n<c8y-action-bar-item [placement]=\"'right'\">\n <c8y-realtime-btn [service]=\"realtime\"></c8y-realtime-btn>\n</c8y-action-bar-item>\n\n<c8y-action-bar-item [placement]=\"'right'\">\n <button\n class=\"btn btn-link d-flex a-i-center\"\n title=\"{{ 'Reload' | translate }}\"\n (click)=\"reload$.next()\"\n >\n <i\n class=\"m-r-4\"\n c8yIcon=\"refresh\"\n [ngClass]=\"{ 'icon-spin': refreshLoading }\"\n ></i>\n <span class=\"text-truncate\">\n {{ 'Reload' | translate }}\n </span>\n </button>\n</c8y-action-bar-item>\n\n<c8y-help\n src=\"/docs/device-management-application/monitoring-and-controlling-devices/#to-view-single-operations\"\n></c8y-help>\n\n<!-- Empty state -->\n<c8y-ui-empty-state\n [icon]=\"'c8y-energy'\"\n [title]=\"'No items to display.' | translate\"\n [subtitle]=\"'Operations will be displayed here.' | translate\"\n *ngIf=\"(operations$ | async)?.data.length === 0 && !(statusFilter$ | async)\"\n></c8y-ui-empty-state>\n<!-- No results empty state -->\n<c8y-ui-empty-state\n [icon]=\"'search'\"\n [title]=\"'No results to display.' | translate\"\n [subtitle]=\"'Adjust or reset the filter.' | translate\"\n *ngIf=\"(operations$ | async)?.data.length === 0 && (statusFilter$ | async)\"\n>\n <button\n class=\"btn btn-primary\"\n title=\"{{ 'Reset filter' | translate }}\"\n type=\"button\"\n (click)=\"statusFilter.reset()\"\n translate\n >\n Reset filter\n </button>\n</c8y-ui-empty-state>\n\n<!-- Detailed list of operations + load more button -->\n<c8y-list-group class=\"m-b-24\">\n <div\n class=\"page-sticky-header c8y-list__item c8y-list__item--double-actions hidden-xs\"\n *ngIf=\"(operations$ | async)?.data.length\"\n >\n <div class=\"c8y-list__item__block\">\n <div class=\"c8y-list__item__icon\">\n <i class=\"p-l-24\"></i>\n </div>\n <div class=\"c8y-list__item__body text-truncate-wrap\">\n <div class=\"content-flex-57\">\n <div class=\"col-5\">\n {{ 'Operation' | translate }}\n </div>\n <div\n class=\"flex-grow\"\n *ngIf=\"!deviceId\"\n >\n {{ 'Device' | translate }}\n </div>\n <div class=\"col-4\">\n {{ 'Date created' | translate }}\n </div>\n </div>\n </div>\n <div class=\"c8y-list__item__actions\"></div>\n </div>\n </div>\n <div\n class=\"d-contents\"\n *c8yFor=\"\n let op of operations$ | async;\n let i = index;\n realtime: realtime;\n realtimeOptions: { entityOrId: deviceId, removeOnUpdate: true, insertOnUpdate: true };\n comparator: compareOperations.bind(this);\n loadMore: 'auto';\n pipe: operationsFilterPipe\n \"\n >\n <c8y-operations-list-item\n class=\"d-contents\"\n [operation]=\"op\"\n [isSmartRulesMicroserviceAvailable]=\"isSmartRulesMicroserviceAvailable\"\n (reload)=\"reload$.next()\"\n c8yProductExperience\n inherit\n ></c8y-operations-list-item>\n </div>\n</c8y-list-group>\n", dependencies: [{ kind: "component", type: i1.ActionBarItemComponent, selector: "c8y-action-bar-item", inputs: ["placement", "priority", "itemClass", "injector", "groupId", "inGroupPriority"] }, { kind: "component", type: i1.BreadcrumbComponent, selector: "c8y-breadcrumb" }, { kind: "component", type: i1.BreadcrumbItemComponent, selector: "c8y-breadcrumb-item", inputs: ["icon", "translate", "label", "path", "injector"] }, { kind: "component", type: i1.EmptyStateComponent, selector: "c8y-ui-empty-state", inputs: ["icon", "title", "subtitle", "horizontal"] }, { kind: "directive", type: i1.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i1.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.ForOfDirective, selector: "[c8yFor]", inputs: ["c8yForOf", "c8yForLoadMore", "c8yForPipe", "c8yForNotFound", "c8yForMaxIterations", "c8yForLoadingTemplate", "c8yForLoadNextLabel", "c8yForLoadingLabel", "c8yForRealtime", "c8yForRealtimeOptions", "c8yForComparator", "c8yForEnableVirtualScroll", "c8yForVirtualScrollElementSize", "c8yForVirtualScrollStrategy", "c8yForVirtualScrollContainerHeight"], outputs: ["c8yForCount", "c8yForChange", "c8yForLoadMoreComponent"] }, { kind: "component", type: i1.TitleComponent, selector: "c8y-title", inputs: ["pageTitleUpdate"] }, { kind: "component", type: i1.ListGroupComponent, selector: "c8y-list-group" }, { kind: "directive", type: i1.ProductExperienceDirective, selector: "[c8yProductExperience]", inputs: ["actionName", "actionData", "inherit", "suppressDataOverriding"] }, { kind: "component", type: i1.HelpComponent, selector: "c8y-help", inputs: ["src", "isCollapsed", "priority", "icon"] }, { kind: "component", type: i1.RealtimeButtonComponent, selector: "c8y-realtime-btn", inputs: ["service", "label", "title", "disabled"], outputs: ["onToggle"] }, { kind: "component", type: i5.StatusFilterComponent, selector: "c8y-status-filter", inputs: ["options", "multiple", "small"], outputs: ["onFilterChanged"] }, { kind: "component", type: i6.OperationsListItemComponent, selector: "c8y-operations-list-item", inputs: ["operation", "collapsed", "readOnly", "noExpandToggle", "isSmartRulesMicroserviceAvailable"] }, { kind: "pipe", type: i1.C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }] }); }
70
78
  }
71
79
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: OperationsListComponent, decorators: [{
72
80
  type: Component,
@@ -76,9 +84,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
76
84
  provide: PRODUCT_EXPERIENCE_EVENT_SOURCE,
77
85
  useExisting: forwardRef(() => OperationsListComponent)
78
86
  }
79
- ], template: "<c8y-title>{{ title | translate }}</c8y-title>\n\n<c8y-breadcrumb *ngIf=\"showOverviewBreadcrumbs\">\n <c8y-breadcrumb-item\n [icon]=\"'c8y-overviews'\"\n [label]=\"'Overviews' | translate\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item\n [icon]=\"'c8y-device-control'\"\n [label]=\"'Device Control' | translate\"\n [path]=\"'devicecontrol/single'\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item\n [icon]=\"'c8y-device-control'\"\n [label]=\"'Single operations' | translate\"\n ></c8y-breadcrumb-item>\n</c8y-breadcrumb>\n\n<c8y-action-bar-item\n [placement]=\"'left'\"\n itemClass=\"navbar-form\"\n>\n <c8y-status-filter\n #statusFilter\n [options]=\"OPERATION_STATUS_OPTIONS_MAP\"\n (onFilterChanged)=\"statusFilter$.next($event)\"\n c8yProductExperience\n inherit\n ></c8y-status-filter>\n</c8y-action-bar-item>\n\n<c8y-action-bar-item [placement]=\"'right'\">\n <c8y-realtime-btn [service]=\"realtime\"></c8y-realtime-btn>\n</c8y-action-bar-item>\n\n<c8y-action-bar-item [placement]=\"'right'\">\n <button\n class=\"btn btn-link d-flex a-i-center\"\n title=\"{{ 'Reload' | translate }}\"\n (click)=\"reload$.next()\"\n >\n <i\n class=\"m-r-4\"\n c8yIcon=\"refresh\"\n [ngClass]=\"{ 'icon-spin': refreshLoading }\"\n ></i>\n <span class=\"text-truncate\">\n {{ 'Reload' | translate }}\n </span>\n </button>\n</c8y-action-bar-item>\n\n<c8y-help\n src=\"/docs/device-management-application/monitoring-and-controlling-devices/#to-view-single-operations\"\n></c8y-help>\n\n<!-- Empty state -->\n<c8y-ui-empty-state\n [icon]=\"'c8y-energy'\"\n [title]=\"'No items to display.' | translate\"\n [subtitle]=\"'Operations will be displayed here.' | translate\"\n *ngIf=\"(operations$ | async)?.data.length === 0 && !(statusFilter$ | async)\"\n></c8y-ui-empty-state>\n<!-- No results empty state -->\n<c8y-ui-empty-state\n [icon]=\"'search'\"\n [title]=\"'No results to display.' | translate\"\n [subtitle]=\"'Adjust or reset the filter.' | translate\"\n *ngIf=\"(operations$ | async)?.data.length === 0 && (statusFilter$ | async)\"\n>\n <button\n class=\"btn btn-primary\"\n title=\"{{ 'Reset filter' | translate }}\"\n type=\"button\"\n (click)=\"statusFilter.reset()\"\n translate\n >\n Reset filter\n </button>\n</c8y-ui-empty-state>\n\n<!-- Detailed list of operations + load more button -->\n<c8y-list-group class=\"m-b-24\">\n <div\n class=\"page-sticky-header c8y-list__item c8y-list__item--double-actions hidden-xs\"\n *ngIf=\"(operations$ | async)?.data.length\"\n >\n <div class=\"c8y-list__item__block\">\n <div class=\"c8y-list__item__icon\">\n <i class=\"p-l-24\"></i>\n </div>\n <div class=\"c8y-list__item__body text-truncate-wrap\">\n <div class=\"content-flex-57\">\n <div class=\"col-5\">\n {{ 'Operation' | translate }}\n </div>\n <div\n class=\"flex-grow\"\n *ngIf=\"!deviceId\"\n >\n {{ 'Device' | translate }}\n </div>\n <div class=\"col-4\">\n {{ 'Date created' | translate }}\n </div>\n </div>\n </div>\n <div class=\"c8y-list__item__actions\"></div>\n </div>\n </div>\n <div\n class=\"d-contents\"\n *c8yFor=\"\n let op of operations$ | async;\n let i = index;\n realtime: realtime;\n realtimeOptions: { entityOrId: deviceId };\n comparator: compareOperations.bind(this);\n loadMore: 'auto'\n \"\n >\n <c8y-operations-list-item\n class=\"d-contents\"\n [operation]=\"op\"\n [isSmartRulesMicroserviceAvailable]=\"isSmartRulesMicroserviceAvailable\"\n (reload)=\"reload$.next()\"\n c8yProductExperience\n inherit\n ></c8y-operations-list-item>\n </div>\n</c8y-list-group>\n" }]
87
+ ], template: "<c8y-title>{{ title | translate }}</c8y-title>\n\n<c8y-breadcrumb *ngIf=\"showOverviewBreadcrumbs\">\n <c8y-breadcrumb-item\n [icon]=\"'c8y-overviews'\"\n [label]=\"'Overviews' | translate\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item\n [icon]=\"'c8y-device-control'\"\n [label]=\"'Device Control' | translate\"\n [path]=\"'devicecontrol/single'\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item\n [icon]=\"'c8y-device-control'\"\n [label]=\"'Single operations' | translate\"\n ></c8y-breadcrumb-item>\n</c8y-breadcrumb>\n\n<c8y-action-bar-item\n [placement]=\"'left'\"\n itemClass=\"navbar-form\"\n>\n <c8y-status-filter\n #statusFilter\n [options]=\"OPERATION_STATUS_OPTIONS_MAP\"\n (onFilterChanged)=\"statusFilter$.next($event)\"\n c8yProductExperience\n inherit\n ></c8y-status-filter>\n</c8y-action-bar-item>\n\n<c8y-action-bar-item [placement]=\"'right'\">\n <c8y-realtime-btn [service]=\"realtime\"></c8y-realtime-btn>\n</c8y-action-bar-item>\n\n<c8y-action-bar-item [placement]=\"'right'\">\n <button\n class=\"btn btn-link d-flex a-i-center\"\n title=\"{{ 'Reload' | translate }}\"\n (click)=\"reload$.next()\"\n >\n <i\n class=\"m-r-4\"\n c8yIcon=\"refresh\"\n [ngClass]=\"{ 'icon-spin': refreshLoading }\"\n ></i>\n <span class=\"text-truncate\">\n {{ 'Reload' | translate }}\n </span>\n </button>\n</c8y-action-bar-item>\n\n<c8y-help\n src=\"/docs/device-management-application/monitoring-and-controlling-devices/#to-view-single-operations\"\n></c8y-help>\n\n<!-- Empty state -->\n<c8y-ui-empty-state\n [icon]=\"'c8y-energy'\"\n [title]=\"'No items to display.' | translate\"\n [subtitle]=\"'Operations will be displayed here.' | translate\"\n *ngIf=\"(operations$ | async)?.data.length === 0 && !(statusFilter$ | async)\"\n></c8y-ui-empty-state>\n<!-- No results empty state -->\n<c8y-ui-empty-state\n [icon]=\"'search'\"\n [title]=\"'No results to display.' | translate\"\n [subtitle]=\"'Adjust or reset the filter.' | translate\"\n *ngIf=\"(operations$ | async)?.data.length === 0 && (statusFilter$ | async)\"\n>\n <button\n class=\"btn btn-primary\"\n title=\"{{ 'Reset filter' | translate }}\"\n type=\"button\"\n (click)=\"statusFilter.reset()\"\n translate\n >\n Reset filter\n </button>\n</c8y-ui-empty-state>\n\n<!-- Detailed list of operations + load more button -->\n<c8y-list-group class=\"m-b-24\">\n <div\n class=\"page-sticky-header c8y-list__item c8y-list__item--double-actions hidden-xs\"\n *ngIf=\"(operations$ | async)?.data.length\"\n >\n <div class=\"c8y-list__item__block\">\n <div class=\"c8y-list__item__icon\">\n <i class=\"p-l-24\"></i>\n </div>\n <div class=\"c8y-list__item__body text-truncate-wrap\">\n <div class=\"content-flex-57\">\n <div class=\"col-5\">\n {{ 'Operation' | translate }}\n </div>\n <div\n class=\"flex-grow\"\n *ngIf=\"!deviceId\"\n >\n {{ 'Device' | translate }}\n </div>\n <div class=\"col-4\">\n {{ 'Date created' | translate }}\n </div>\n </div>\n </div>\n <div class=\"c8y-list__item__actions\"></div>\n </div>\n </div>\n <div\n class=\"d-contents\"\n *c8yFor=\"\n let op of operations$ | async;\n let i = index;\n realtime: realtime;\n realtimeOptions: { entityOrId: deviceId, removeOnUpdate: true, insertOnUpdate: true };\n comparator: compareOperations.bind(this);\n loadMore: 'auto';\n pipe: operationsFilterPipe\n \"\n >\n <c8y-operations-list-item\n class=\"d-contents\"\n [operation]=\"op\"\n [isSmartRulesMicroserviceAvailable]=\"isSmartRulesMicroserviceAvailable\"\n (reload)=\"reload$.next()\"\n c8yProductExperience\n inherit\n ></c8y-operations-list-item>\n </div>\n</c8y-list-group>\n" }]
80
88
  }], ctorParameters: () => [{ type: i1.OperationRealtimeService }, { type: i2.OperationsListService }, { type: i3.ActivatedRoute }], propDecorators: { statusFilter: [{
81
89
  type: ViewChild,
82
90
  args: ['statusFilter', { static: true }]
83
91
  }] } });
84
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3BlcmF0aW9ucy1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL29wZXJhdGlvbnMvb3BlcmF0aW9ucy1saXN0L29wZXJhdGlvbnMtbGlzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9vcGVyYXRpb25zL29wZXJhdGlvbnMtbGlzdC9vcGVyYXRpb25zLWxpc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUVqRCxPQUFPLEVBQ0wsT0FBTyxFQUNQLHdCQUF3QixFQUd4QiwrQkFBK0IsRUFDaEMsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEVBQ0wsaUNBQWlDLEVBQ2pDLCtCQUErQixFQUNoQyxNQUFNLG1EQUFtRCxDQUFDO0FBQzNELE9BQU8sRUFHTCw0QkFBNEIsRUFDN0IsTUFBTSx1Q0FBdUMsQ0FBQztBQUMvQyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUNyRixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDOzs7Ozs7OztBQWFsRSxNQUFNLE9BQU8sdUJBQXVCO0lBOEJsQyxZQUNTLFFBQWtDLEVBQ2pDLHFCQUE0QyxFQUM1QyxLQUFxQjtRQUZ0QixhQUFRLEdBQVIsUUFBUSxDQUEwQjtRQUNqQywwQkFBcUIsR0FBckIscUJBQXFCLENBQXVCO1FB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LENBQzFGLENBQUM7SUFDSixDQUFDOzhHQWxFVSx1QkFBdUI7a0dBQXZCLHVCQUF1Qiw4Q0FSdkI7WUFDVCx3QkFBd0I7WUFDeEI7Z0JBQ0UsT0FBTyxFQUFFLCtCQUErQjtnQkFDeEMsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyx1QkFBdUIsQ0FBQzthQUN2RDtTQUNGLHNKQ2xDSCxxeUhBbUlBOzsyRkQvRmEsdUJBQXVCO2tCQVhuQyxTQUFTOytCQUNFLHFCQUFxQixhQUVwQjt3QkFDVCx3QkFBd0I7d0JBQ3hCOzRCQUNFLE9BQU8sRUFBRSwrQkFBK0I7NEJBQ3hDLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLHdCQUF3QixDQUFDO3lCQUN2RDtxQkFDRjs4SkFZNEMsWUFBWTtzQkFBeEQsU0FBUzt1QkFBQyxjQUFjLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBmb3J3YXJkUmVmLCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IElPcGVyYXRpb24sIElSZXN1bHRMaXN0IH0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHtcbiAgZ2V0dGV4dCxcbiAgT3BlcmF0aW9uUmVhbHRpbWVTZXJ2aWNlLFxuICBQcm9kdWN0RXhwZXJpZW5jZUV2ZW50LFxuICBQcm9kdWN0RXhwZXJpZW5jZUV2ZW50U291cmNlLFxuICBQUk9EVUNUX0VYUEVSSUVOQ0VfRVZFTlRfU09VUkNFXG59IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMnO1xuaW1wb3J0IHtcbiAgU0lOR0xFX09QRVJBVElPTl9FVkVOVF9ERVZJQ0VfVEFCLFxuICBTSU5HTEVfT1BFUkFUSU9OX0VWRU5UX09WRVJWSUVXXG59IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMvb3BlcmF0aW9ucy9wcm9kdWN0LWV4cGVyaWVuY2UnO1xuaW1wb3J0IHtcbiAgT3BlcmF0aW9uU3RhdHVzT3B0aW9uLFxuICBPcGVyYXRpb25TdGF0dXNPcHRpb25zTWFwU2hhcmVkLFxuICBPUEVSQVRJT05fU1RBVFVTX09QVElPTlNfTUFQXG59IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMvb3BlcmF0aW9ucy9zaGFyZWQnO1xuaW1wb3J0IHsgU3RhdHVzRmlsdGVyQ29tcG9uZW50IH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cy9vcGVyYXRpb25zL3N0YXR1cy1maWx0ZXInO1xuaW1wb3J0IHsgZmxhdHRlbiB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHNoYXJlUmVwbGF5LCBzd2l0Y2hNYXAsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IE9wZXJhdGlvbnNMaXN0U2VydmljZSB9IGZyb20gJy4vb3BlcmF0aW9ucy1saXN0LnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjOHktb3BlcmF0aW9ucy1saXN0JyxcbiAgdGVtcGxhdGVVcmw6ICdvcGVyYXRpb25zLWxpc3QuY29tcG9uZW50Lmh0bWwnLFxuICBwcm92aWRlcnM6IFtcbiAgICBPcGVyYXRpb25SZWFsdGltZVNlcnZpY2UsXG4gICAge1xuICAgICAgcHJvdmlkZTogUFJPRFVDVF9FWFBFUklFTkNFX0VWRU5UX1NPVVJDRSxcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IE9wZXJhdGlvbnNMaXN0Q29tcG9uZW50KVxuICAgIH1cbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBPcGVyYXRpb25zTGlzdENvbXBvbmVudCBpbXBsZW1lbnRzIFByb2R1Y3RFeHBlcmllbmNlRXZlbnRTb3VyY2Uge1xuICBkZXZpY2VJZDogc3RyaW5nIHwgbnVtYmVyID0gdGhpcy5yb3V0ZS5zbmFwc2hvdC5wYXJlbnQuZGF0YS5jb250ZXh0RGF0YT8uaWQ7XG4gIE9QRVJBVElPTl9TVEFUVVNfT1BUSU9OU19NQVA6IE9wZXJhdGlvblN0YXR1c09wdGlvbnNNYXBTaGFyZWQgPSBPUEVSQVRJT05fU1RBVFVTX09QVElPTlNfTUFQO1xuXG4gIHRpdGxlOiBzdHJpbmc7XG4gIHJlZnJlc2hMb2FkaW5nID0gZmFsc2U7XG4gIGlzU21hcnRSdWxlc01pY3Jvc2VydmljZUF2YWlsYWJsZSA9IGZhbHNlO1xuICBzaG93T3ZlcnZpZXdCcmVhZGNydW1icyA9IGZhbHNlO1xuICBzdGF0dXNGaWx0ZXIkOiBCZWhhdmlvclN1YmplY3Q8T3BlcmF0aW9uU3RhdHVzT3B0aW9uW10+ID0gbmV3IEJlaGF2aW9yU3ViamVjdChudWxsKTtcbiAgcmVsb2FkJDogQmVoYXZpb3JTdWJqZWN0PHZvaWQ+ID0gbmV3IEJlaGF2aW9yU3ViamVjdChudWxsKTtcbiAgQFZpZXdDaGlsZCgnc3RhdHVzRmlsdGVyJywgeyBzdGF0aWM6IHRydWUgfSkgc3RhdHVzRmlsdGVyOiBTdGF0dXNGaWx0ZXJDb21wb25lbnQ7XG5cbiAgb3BlcmF0aW9ucyQ6IE9ic2VydmFibGU8SVJlc3VsdExpc3Q8SU9wZXJhdGlvbj4+ID0gY29tYmluZUxhdGVzdChcbiAgICB0aGlzLnN0YXR1c0ZpbHRlciQsXG4gICAgdGhpcy5yZWxvYWQkXG4gICkucGlwZShcbiAgICB0YXAoKCkgPT4ge1xuICAgICAgdGhpcy5yZWZyZXNoTG9hZGluZyA9IHRydWU7XG4gICAgfSksXG4gICAgc3dpdGNoTWFwKChbc3RhdHVzRmlsdGVyc10pID0+IHRoaXMuZmlsdGVyKHN0YXR1c0ZpbHRlcnMpKSxcbiAgICB0YXAoKCkgPT4ge1xuICAgICAgdGhpcy5yZWZyZXNoTG9hZGluZyA9IGZhbHNlO1xuICAgIH0pLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcHJvZHVjdEV4cGVyaWVuY2VFdmVudDogUHJvZHVjdEV4cGVyaWVuY2VFdmVudCA9IHtcbiAgICBldmVudE5hbWU6ICEhdGhpcy5kZXZpY2VJZCA/IFNJTkdMRV9PUEVSQVRJT05fRVZFTlRfREVWSUNFX1RBQiA6IFNJTkdMRV9PUEVSQVRJT05fRVZFTlRfT1ZFUlZJRVdcbiAgfTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgcmVhbHRpbWU6IE9wZXJhdGlvblJlYWx0aW1lU2VydmljZSxcbiAgICBwcml2YXRlIG9wZXJhdGlvbnNMaXN0U2VydmljZTogT3BlcmF0aW9uc0xpc3RTZXJ2aWNlLFxuICAgIHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlXG4gICkge1xuICAgIHRoaXMudGl0bGUgPSB0aGlzLnJvdXRlLnNuYXBzaG90LnBhcmVudC5kYXRhLmNvbnRleHREYXRhXG4gICAgICA/IHRoaXMucm91dGUuc25hcHNob3QucGFyZW50LmRhdGEuY29udGV4dERhdGEubmFtZVxuICAgICAgOiBnZXR0ZXh0KCdTaW5nbGUgb3BlcmF0aW9ucycpO1xuICAgIHRoaXMuc2hvd092ZXJ2aWV3QnJlYWRjcnVtYnMgPSAhdGhpcy5kZXZpY2VJZDtcbiAgfVxuXG4gIGFzeW5jIG5nT25Jbml0KCkge1xuICAgIHRoaXMuaXNTbWFydFJ1bGVzTWljcm9zZXJ2aWNlQXZhaWxhYmxlID1cbiAgICAgIGF3YWl0IHRoaXMub3BlcmF0aW9uc0xpc3RTZXJ2aWNlLmlzU21hcnRSdWxlc01pY3Jvc2VydmljZUF2YWlsYWJsZSgpO1xuICB9XG5cbiAgZmlsdGVyKHN0YXR1c0ZpbHRlcnM6IE9wZXJhdGlvblN0YXR1c09wdGlvbltdKSB7XG4gICAgY29uc3Qgc3RhdHVzID1cbiAgICAgIHN0YXR1c0ZpbHRlcnMgJiYgc3RhdHVzRmlsdGVycy5sZW5ndGggPiAwXG4gICAgICAgID8ge1xuICAgICAgICAgICAgc3RhdHVzOiBmbGF0dGVuKHN0YXR1c0ZpbHRlcnMubWFwKHN0YXR1c0ZpbHRlciA9PiBzdGF0dXNGaWx0ZXIuc3RhdHVzKSlcbiAgICAgICAgICB9XG4gICAgICAgIDoge307XG5cbiAgICByZXR1cm4gdGhpcy5nZXRPcGVyYXRpb25zKHN0YXR1cyk7XG4gIH1cblxuICBnZXRPcGVyYXRpb25zKGZpbHRlcj8pIHtcbiAgICBjb25zdCBxdWVyeUZpbHRlciA9IHRoaXMuZGV2aWNlSWQgPyB7IC4uLmZpbHRlciwgZGV2aWNlSWQ6IHRoaXMuZGV2aWNlSWQgfSA6IGZpbHRlcjtcbiAgICByZXR1cm4gdGhpcy5vcGVyYXRpb25zTGlzdFNlcnZpY2UuZ2V0T3BlcmF0aW9ucyhxdWVyeUZpbHRlcik7XG4gIH1cblxuICBjb21wYXJlT3BlcmF0aW9ucyhvcGVyYXRpb25BOiBJT3BlcmF0aW9uLCBvcGVyYXRpb25COiBJT3BlcmF0aW9uKTogbnVtYmVyIHtcbiAgICByZXR1cm4gKFxuICAgICAgbmV3IERhdGUob3BlcmF0aW9uQS5jcmVhdGlvblRpbWUpLmdldFRpbWUoKSAtIG5ldyBEYXRlKG9wZXJhdGlvbkIuY3JlYXRpb25UaW1lKS5nZXRUaW1lKClcbiAgICApO1xuICB9XG59XG4iLCI8Yzh5LXRpdGxlPnt7IHRpdGxlIHwgdHJhbnNsYXRlIH19PC9jOHktdGl0bGU+XG5cbjxjOHktYnJlYWRjcnVtYiAqbmdJZj1cInNob3dPdmVydmlld0JyZWFkY3J1bWJzXCI+XG4gIDxjOHktYnJlYWRjcnVtYi1pdGVtXG4gICAgW2ljb25dPVwiJ2M4eS1vdmVydmlld3MnXCJcbiAgICBbbGFiZWxdPVwiJ092ZXJ2aWV3cycgfCB0cmFuc2xhdGVcIlxuICA+PC9jOHktYnJlYWRjcnVtYi1pdGVtPlxuICA8Yzh5LWJyZWFkY3J1bWItaXRlbVxuICAgIFtpY29uXT1cIidjOHktZGV2aWNlLWNvbnRyb2wnXCJcbiAgICBbbGFiZWxdPVwiJ0RldmljZSBDb250cm9sJyB8IHRyYW5zbGF0ZVwiXG4gICAgW3BhdGhdPVwiJ2RldmljZWNvbnRyb2wvc2luZ2xlJ1wiXG4gID48L2M4eS1icmVhZGNydW1iLWl0ZW0+XG4gIDxjOHktYnJlYWRjcnVtYi1pdGVtXG4gICAgW2ljb25dPVwiJ2M4eS1kZXZpY2UtY29udHJvbCdcIlxuICAgIFtsYWJlbF09XCInU2luZ2xlIG9wZXJhdGlvbnMnIHwgdHJhbnNsYXRlXCJcbiAgPjwvYzh5LWJyZWFkY3J1bWItaXRlbT5cbjwvYzh5LWJyZWFkY3J1bWI+XG5cbjxjOHktYWN0aW9uLWJhci1pdGVtXG4gIFtwbGFjZW1lbnRdPVwiJ2xlZnQnXCJcbiAgaXRlbUNsYXNzPVwibmF2YmFyLWZvcm1cIlxuPlxuICA8Yzh5LXN0YXR1cy1maWx0ZXJcbiAgICAjc3RhdHVzRmlsdGVyXG4gICAgW29wdGlvbnNdPVwiT1BFUkFUSU9OX1NUQVRVU19PUFRJT05TX01BUFwiXG4gICAgKG9uRmlsdGVyQ2hhbmdlZCk9XCJzdGF0dXNGaWx0ZXIkLm5leHQoJGV2ZW50KVwiXG4gICAgYzh5UHJvZHVjdEV4cGVyaWVuY2VcbiAgICBpbmhlcml0XG4gID48L2M4eS1zdGF0dXMtZmlsdGVyPlxuPC9jOHktYWN0aW9uLWJhci1pdGVtPlxuXG48Yzh5LWFjdGlvbi1iYXItaXRlbSBbcGxhY2VtZW50XT1cIidyaWdodCdcIj5cbiAgPGM4eS1yZWFsdGltZS1idG4gW3NlcnZpY2VdPVwicmVhbHRpbWVcIj48L2M4eS1yZWFsdGltZS1idG4+XG48L2M4eS1hY3Rpb24tYmFyLWl0ZW0+XG5cbjxjOHktYWN0aW9uLWJhci1pdGVtIFtwbGFjZW1lbnRdPVwiJ3JpZ2h0J1wiPlxuICA8YnV0dG9uXG4gICAgY2xhc3M9XCJidG4gYnRuLWxpbmsgZC1mbGV4IGEtaS1jZW50ZXJcIlxuICAgIHRpdGxlPVwie3sgJ1JlbG9hZCcgfCB0cmFuc2xhdGUgfX1cIlxuICAgIChjbGljayk9XCJyZWxvYWQkLm5leHQoKVwiXG4gID5cbiAgICA8aVxuICAgICAgY2xhc3M9XCJtLXItNFwiXG4gICAgICBjOHlJY29uPVwicmVmcmVzaFwiXG4gICAgICBbbmdDbGFzc109XCJ7ICdpY29uLXNwaW4nOiByZWZyZXNoTG9hZGluZyB9XCJcbiAgICA+PC9pPlxuICAgIDxzcGFuIGNsYXNzPVwidGV4dC10cnVuY2F0ZVwiPlxuICAgICAge3sgJ1JlbG9hZCcgfCB0cmFuc2xhdGUgfX1cbiAgICA8L3NwYW4+XG4gIDwvYnV0dG9uPlxuPC9jOHktYWN0aW9uLWJhci1pdGVtPlxuXG48Yzh5LWhlbHBcbiAgc3JjPVwiL2RvY3MvZGV2aWNlLW1hbmFnZW1lbnQtYXBwbGljYXRpb24vbW9uaXRvcmluZy1hbmQtY29udHJvbGxpbmctZGV2aWNlcy8jdG8tdmlldy1zaW5nbGUtb3BlcmF0aW9uc1wiXG4+PC9jOHktaGVscD5cblxuPCEtLSBFbXB0eSBzdGF0ZSAgLS0+XG48Yzh5LXVpLWVtcHR5LXN0YXRlXG4gIFtpY29uXT1cIidjOHktZW5lcmd5J1wiXG4gIFt0aXRsZV09XCInTm8gaXRlbXMgdG8gZGlzcGxheS4nIHwgdHJhbnNsYXRlXCJcbiAgW3N1YnRpdGxlXT1cIidPcGVyYXRpb25zIHdpbGwgYmUgZGlzcGxheWVkIGhlcmUuJyB8IHRyYW5zbGF0ZVwiXG4gICpuZ0lmPVwiKG9wZXJhdGlvbnMkIHwgYXN5bmMpPy5kYXRhLmxlbmd0aCA9PT0gMCAmJiAhKHN0YXR1c0ZpbHRlciQgfCBhc3luYylcIlxuPjwvYzh5LXVpLWVtcHR5LXN0YXRlPlxuPCEtLSBObyByZXN1bHRzIGVtcHR5IHN0YXRlIC0tPlxuPGM4eS11aS1lbXB0eS1zdGF0ZVxuICBbaWNvbl09XCInc2VhcmNoJ1wiXG4gIFt0aXRsZV09XCInTm8gcmVzdWx0cyB0byBkaXNwbGF5LicgfCB0cmFuc2xhdGVcIlxuICBbc3VidGl0bGVdPVwiJ0FkanVzdCBvciByZXNldCB0aGUgZmlsdGVyLicgfCB0cmFuc2xhdGVcIlxuICAqbmdJZj1cIihvcGVyYXRpb25zJCB8IGFzeW5jKT8uZGF0YS5sZW5ndGggPT09IDAgJiYgKHN0YXR1c0ZpbHRlciQgfCBhc3luYylcIlxuPlxuICA8YnV0dG9uXG4gICAgY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIlxuICAgIHRpdGxlPVwie3sgJ1Jlc2V0IGZpbHRlcicgfCB0cmFuc2xhdGUgfX1cIlxuICAgIHR5cGU9XCJidXR0b25cIlxuICAgIChjbGljayk9XCJzdGF0dXNGaWx0ZXIucmVzZXQoKVwiXG4gICAgdHJhbnNsYXRlXG4gID5cbiAgICBSZXNldCBmaWx0ZXJcbiAgPC9idXR0b24+XG48L2M4eS11aS1lbXB0eS1zdGF0ZT5cblxuPCEtLSBEZXRhaWxlZCBsaXN0IG9mIG9wZXJhdGlvbnMgKyBsb2FkIG1vcmUgYnV0dG9uIC0tPlxuPGM4eS1saXN0LWdyb3VwIGNsYXNzPVwibS1iLTI0XCI+XG4gIDxkaXZcbiAgICBjbGFzcz1cInBhZ2Utc3RpY2t5LWhlYWRlciBjOHktbGlzdF9faXRlbSBjOHktbGlzdF9faXRlbS0tZG91YmxlLWFjdGlvbnMgaGlkZGVuLXhzXCJcbiAgICAqbmdJZj1cIihvcGVyYXRpb25zJCB8IGFzeW5jKT8uZGF0YS5sZW5ndGhcIlxuICA+XG4gICAgPGRpdiBjbGFzcz1cImM4eS1saXN0X19pdGVtX19ibG9ja1wiPlxuICAgICAgPGRpdiBjbGFzcz1cImM4eS1saXN0X19pdGVtX19pY29uXCI+XG4gICAgICAgIDxpIGNsYXNzPVwicC1sLTI0XCI+PC9pPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiYzh5LWxpc3RfX2l0ZW1fX2JvZHkgdGV4dC10cnVuY2F0ZS13cmFwXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb250ZW50LWZsZXgtNTdcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTVcIj5cbiAgICAgICAgICAgIHt7ICdPcGVyYXRpb24nIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJmbGV4LWdyb3dcIlxuICAgICAgICAgICAgKm5nSWY9XCIhZGV2aWNlSWRcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt7ICdEZXZpY2UnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC00XCI+XG4gICAgICAgICAgICB7eyAnRGF0ZSBjcmVhdGVkJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImM4eS1saXN0X19pdGVtX19hY3Rpb25zXCI+PC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8ZGl2XG4gICAgY2xhc3M9XCJkLWNvbnRlbnRzXCJcbiAgICAqYzh5Rm9yPVwiXG4gICAgICBsZXQgb3Agb2Ygb3BlcmF0aW9ucyQgfCBhc3luYztcbiAgICAgIGxldCBpID0gaW5kZXg7XG4gICAgICByZWFsdGltZTogcmVhbHRpbWU7XG4gICAgICByZWFsdGltZU9wdGlvbnM6IHsgZW50aXR5T3JJZDogZGV2aWNlSWQgfTtcbiAgICAgIGNvbXBhcmF0b3I6IGNvbXBhcmVPcGVyYXRpb25zLmJpbmQodGhpcyk7XG4gICAgICBsb2FkTW9yZTogJ2F1dG8nXG4gICAgXCJcbiAgPlxuICAgIDxjOHktb3BlcmF0aW9ucy1saXN0LWl0ZW1cbiAgICAgIGNsYXNzPVwiZC1jb250ZW50c1wiXG4gICAgICBbb3BlcmF0aW9uXT1cIm9wXCJcbiAgICAgIFtpc1NtYXJ0UnVsZXNNaWNyb3NlcnZpY2VBdmFpbGFibGVdPVwiaXNTbWFydFJ1bGVzTWljcm9zZXJ2aWNlQXZhaWxhYmxlXCJcbiAgICAgIChyZWxvYWQpPVwicmVsb2FkJC5uZXh0KClcIlxuICAgICAgYzh5UHJvZHVjdEV4cGVyaWVuY2VcbiAgICAgIGluaGVyaXRcbiAgICA+PC9jOHktb3BlcmF0aW9ucy1saXN0LWl0ZW0+XG4gIDwvZGl2PlxuPC9jOHktbGlzdC1ncm91cD5cbiJdfQ==
92
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3BlcmF0aW9ucy1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL29wZXJhdGlvbnMvb3BlcmF0aW9ucy1saXN0L29wZXJhdGlvbnMtbGlzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9vcGVyYXRpb25zL29wZXJhdGlvbnMtbGlzdC9vcGVyYXRpb25zLWxpc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUVqRCxPQUFPLEVBQ0wsT0FBTyxFQUNQLHdCQUF3QixFQUd4QiwrQkFBK0IsRUFDaEMsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEVBQ0wsaUNBQWlDLEVBQ2pDLCtCQUErQixFQUNoQyxNQUFNLG1EQUFtRCxDQUFDO0FBQzNELE9BQU8sRUFHTCw0QkFBNEIsRUFDN0IsTUFBTSx1Q0FBdUMsQ0FBQztBQUMvQyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUNyRixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFjLElBQUksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN4RSxPQUFPLEVBQUUsR0FBRyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7Ozs7Ozs7O0FBYWxFLE1BQU0sT0FBTyx1QkFBdUI7SUF5Q2xDLFlBQ1MsUUFBa0MsRUFDakMscUJBQTRDLEVBQzVDLEtBQXFCO1FBRnRCLGFBQVEsR0FBUixRQUFRLENBQTBCO1FBQ2pDLDBCQUFxQixH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d0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBJT3BlcmF0aW9uLCBJUmVzdWx0TGlzdCB9IGZyb20gJ0BjOHkvY2xpZW50JztcbmltcG9ydCB7XG4gIGdldHRleHQsXG4gIE9wZXJhdGlvblJlYWx0aW1lU2VydmljZSxcbiAgUHJvZHVjdEV4cGVyaWVuY2VFdmVudCxcbiAgUHJvZHVjdEV4cGVyaWVuY2VFdmVudFNvdXJjZSxcbiAgUFJPRFVDVF9FWFBFUklFTkNFX0VWRU5UX1NPVVJDRVxufSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzJztcbmltcG9ydCB7XG4gIFNJTkdMRV9PUEVSQVRJT05fRVZFTlRfREVWSUNFX1RBQixcbiAgU0lOR0xFX09QRVJBVElPTl9FVkVOVF9PVkVSVklFV1xufSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzL29wZXJhdGlvbnMvcHJvZHVjdC1leHBlcmllbmNlJztcbmltcG9ydCB7XG4gIE9wZXJhdGlvblN0YXR1c09wdGlvbixcbiAgT3BlcmF0aW9uU3RhdHVzT3B0aW9uc01hcFNoYXJlZCxcbiAgT1BFUkFUSU9OX1NUQVRVU19PUFRJT05TX01BUFxufSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzL29wZXJhdGlvbnMvc2hhcmVkJztcbmltcG9ydCB7IFN0YXR1c0ZpbHRlckNvbXBvbmVudCB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMvb3BlcmF0aW9ucy9zdGF0dXMtZmlsdGVyJztcbmltcG9ydCB7IGZsYXR0ZW4gfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBjb21iaW5lTGF0ZXN0LCBPYnNlcnZhYmxlLCBwaXBlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXAsIHNoYXJlUmVwbGF5LCBzd2l0Y2hNYXAsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IE9wZXJhdGlvbnNMaXN0U2VydmljZSB9IGZyb20gJy4vb3BlcmF0aW9ucy1saXN0LnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjOHktb3BlcmF0aW9ucy1saXN0JyxcbiAgdGVtcGxhdGVVcmw6ICdvcGVyYXRpb25zLWxpc3QuY29tcG9uZW50Lmh0bWwnLFxuICBwcm92aWRlcnM6IFtcbiAgICBPcGVyYXRpb25SZWFsdGltZVNlcnZpY2UsXG4gICAge1xuICAgICAgcHJvdmlkZTogUFJPRFVDVF9FWFBFUklFTkNFX0VWRU5UX1NPVVJDRSxcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IE9wZXJhdGlvbnNMaXN0Q29tcG9uZW50KVxuICAgIH1cbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBPcGVyYXRpb25zTGlzdENvbXBvbmVudCBpbXBsZW1lbnRzIFByb2R1Y3RFeHBlcmllbmNlRXZlbnRTb3VyY2Uge1xuICBkZXZpY2VJZDogc3RyaW5nIHwgbnVtYmVyID0gdGhpcy5yb3V0ZS5zbmFwc2hvdC5wYXJlbnQuZGF0YS5jb250ZXh0RGF0YT8uaWQ7XG4gIE9QRVJBVElPTl9TVEFUVVNfT1BUSU9OU19NQVA6IE9wZXJhdGlvblN0YXR1c09wdGlvbnNNYXBTaGFyZWQgPSBPUEVSQVRJT05fU1RBVFVTX09QVElPTlNfTUFQO1xuXG4gIHRpdGxlOiBzdHJpbmc7XG4gIHJlZnJlc2hMb2FkaW5nID0gZmFsc2U7XG4gIGlzU21hcnRSdWxlc01pY3Jvc2VydmljZUF2YWlsYWJsZSA9IGZhbHNlO1xuICBzaG93T3ZlcnZpZXdCcmVhZGNydW1icyA9IGZhbHNlO1xuICBzdGF0dXNGaWx0ZXIkOiBCZWhhdmlvclN1YmplY3Q8T3BlcmF0aW9uU3RhdHVzT3B0aW9uW10+ID0gbmV3IEJlaGF2aW9yU3ViamVjdChudWxsKTtcbiAgcmVsb2FkJDogQmVoYXZpb3JTdWJqZWN0PHZvaWQ+ID0gbmV3IEJlaGF2aW9yU3ViamVjdChudWxsKTtcbiAgQFZpZXdDaGlsZCgnc3RhdHVzRmlsdGVyJywgeyBzdGF0aWM6IHRydWUgfSkgc3RhdHVzRmlsdGVyOiBTdGF0dXNGaWx0ZXJDb21wb25lbnQ7XG5cbiAgb3BlcmF0aW9ucyQ6IE9ic2VydmFibGU8SVJlc3VsdExpc3Q8SU9wZXJhdGlvbj4+ID0gY29tYmluZUxhdGVzdChcbiAgICB0aGlzLnN0YXR1c0ZpbHRlciQsXG4gICAgdGhpcy5yZWxvYWQkXG4gICkucGlwZShcbiAgICB0YXAoKCkgPT4ge1xuICAgICAgdGhpcy5yZWZyZXNoTG9hZGluZyA9IHRydWU7XG4gICAgfSksXG4gICAgc3dpdGNoTWFwKChbc3RhdHVzRmlsdGVyc10pID0+IHRoaXMuZmlsdGVyKHN0YXR1c0ZpbHRlcnMpKSxcbiAgICB0YXAoKCkgPT4ge1xuICAgICAgdGhpcy5yZWZyZXNoTG9hZGluZyA9IGZhbHNlO1xuICAgIH0pLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgb3BlcmF0aW9uc0ZpbHRlclBpcGUgPSBwaXBlKFxuICAgIG1hcCgob3BlcmF0aW9uczogSU9wZXJhdGlvbltdKSA9PiB7XG4gICAgICBjb25zdCBzdGF0dXNGaWx0ZXJzID0gdGhpcy5zdGF0dXNGaWx0ZXIkLmdldFZhbHVlKCk7XG4gICAgICBpZiAoIXN0YXR1c0ZpbHRlcnMgfHwgIXN0YXR1c0ZpbHRlcnMubGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiBvcGVyYXRpb25zO1xuICAgICAgfVxuICAgICAgY29uc3QgYWxsb3dlZFN0YXR1c2VzID0gZmxhdHRlbihzdGF0dXNGaWx0ZXJzLm1hcChzZiA9PiBzZi5zdGF0dXMpKTtcbiAgICAgIHJldHVybiBvcGVyYXRpb25zLmZpbHRlcihvcCA9PiBhbGxvd2VkU3RhdHVzZXMuaW5jbHVkZXMob3Auc3RhdHVzKSk7XG4gICAgfSlcbiAgKTtcblxuICBwcm9kdWN0RXhwZXJpZW5jZUV2ZW50OiBQcm9kdWN0RXhwZXJpZW5jZUV2ZW50ID0ge1xuICAgIGV2ZW50TmFtZTogISF0aGlzLmRldmljZUlkID8gU0lOR0xFX09QRVJBVElPTl9FVkVOVF9ERVZJQ0VfVEFCIDogU0lOR0xFX09QRVJBVElPTl9FVkVOVF9PVkVSVklFV1xuICB9O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyByZWFsdGltZTogT3BlcmF0aW9uUmVhbHRpbWVTZXJ2aWNlLFxuICAgIHByaXZhdGUgb3BlcmF0aW9uc0xpc3RTZXJ2aWNlOiBPcGVyYXRpb25zTGlzdFNlcnZpY2UsXG4gICAgcHJpdmF0ZSByb3V0ZTogQWN0aXZhdGVkUm91dGVcbiAgKSB7XG4gICAgdGhpcy50aXRsZSA9IHRoaXMucm91dGUuc25hcHNob3QucGFyZW50LmRhdGEuY29udGV4dERhdGFcbiAgICAgID8gdGhpcy5yb3V0ZS5zbmFwc2hvdC5wYXJlbnQuZGF0YS5jb250ZXh0RGF0YS5uYW1lXG4gICAgICA6IGdldHRleHQoJ1NpbmdsZSBvcGVyYXRpb25zJyk7XG4gICAgdGhpcy5zaG93T3ZlcnZpZXdCcmVhZGNydW1icyA9ICF0aGlzLmRldmljZUlkO1xuICB9XG5cbiAgYXN5bmMgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5pc1NtYXJ0UnVsZXNNaWNyb3NlcnZpY2VBdmFpbGFibGUgPVxuICAgICAgYXdhaXQgdGhpcy5vcGVyYXRpb25zTGlzdFNlcnZpY2UuaXNTbWFydFJ1bGVzTWljcm9zZXJ2aWNlQXZhaWxhYmxlKCk7XG4gIH1cblxuICBmaWx0ZXIoc3RhdHVzRmlsdGVyczogT3BlcmF0aW9uU3RhdHVzT3B0aW9uW10pIHtcbiAgICBjb25zdCBzdGF0dXMgPVxuICAgICAgc3RhdHVzRmlsdGVycyAmJiBzdGF0dXNGaWx0ZXJzLmxlbmd0aCA+IDBcbiAgICAgICAgPyB7XG4gICAgICAgICAgICBzdGF0dXM6IGZsYXR0ZW4oc3RhdHVzRmlsdGVycy5tYXAoc3RhdHVzRmlsdGVyID0+IHN0YXR1c0ZpbHRlci5zdGF0dXMpKVxuICAgICAgICAgIH1cbiAgICAgICAgOiB7fTtcblxuICAgIHJldHVybiB0aGlzLmdldE9wZXJhdGlvbnMoc3RhdHVzKTtcbiAgfVxuXG4gIGdldE9wZXJhdGlvbnMoZmlsdGVyPykge1xuICAgIGNvbnN0IHF1ZXJ5RmlsdGVyID0gdGhpcy5kZXZpY2VJZCA/IHsgLi4uZmlsdGVyLCBkZXZpY2VJZDogdGhpcy5kZXZpY2VJZCB9IDogZmlsdGVyO1xuICAgIHJldHVybiB0aGlzLm9wZXJhdGlvbnNMaXN0U2VydmljZS5nZXRPcGVyYXRpb25zKHF1ZXJ5RmlsdGVyKTtcbiAgfVxuXG4gIGNvbXBhcmVPcGVyYXRpb25zKG9wZXJhdGlvbkE6IElPcGVyYXRpb24sIG9wZXJhdGlvbkI6IElPcGVyYXRpb24pOiBudW1iZXIge1xuICAgIHJldHVybiAoXG4gICAgICBuZXcgRGF0ZShvcGVyYXRpb25BLmNyZWF0aW9uVGltZSkuZ2V0VGltZSgpIC0gbmV3IERhdGUob3BlcmF0aW9uQi5jcmVhdGlvblRpbWUpLmdldFRpbWUoKVxuICAgICk7XG4gIH1cbn1cbiIsIjxjOHktdGl0bGU+e3sgdGl0bGUgfCB0cmFuc2xhdGUgfX08L2M4eS10aXRsZT5cblxuPGM4eS1icmVhZGNydW1iICpuZ0lmPVwic2hvd092ZXJ2aWV3QnJlYWRjcnVtYnNcIj5cbiAgPGM4eS1icmVhZGNydW1iLWl0ZW1cbiAgICBbaWNvbl09XCInYzh5LW92ZXJ2aWV3cydcIlxuICAgIFtsYWJlbF09XCInT3ZlcnZpZXdzJyB8IHRyYW5zbGF0ZVwiXG4gID48L2M4eS1icmVhZGNydW1iLWl0ZW0+XG4gIDxjOHktYnJlYWRjcnVtYi1pdGVtXG4gICAgW2ljb25dPVwiJ2M4eS1kZXZpY2UtY29udHJvbCdcIlxuICAgIFtsYWJlbF09XCInRGV2aWNlIENvbnRyb2wnIHwgdHJhbnNsYXRlXCJcbiAgICBbcGF0aF09XCInZGV2aWNlY29udHJvbC9zaW5nbGUnXCJcbiAgPjwvYzh5LWJyZWFkY3J1bWItaXRlbT5cbiAgPGM4eS1icmVhZGNydW1iLWl0ZW1cbiAgICBbaWNvbl09XCInYzh5LWRldmljZS1jb250cm9sJ1wiXG4gICAgW2xhYmVsXT1cIidTaW5nbGUgb3BlcmF0aW9ucycgfCB0cmFuc2xhdGVcIlxuICA+PC9jOHktYnJlYWRjcnVtYi1pdGVtPlxuPC9jOHktYnJlYWRjcnVtYj5cblxuPGM4eS1hY3Rpb24tYmFyLWl0ZW1cbiAgW3BsYWNlbWVudF09XCInbGVmdCdcIlxuICBpdGVtQ2xhc3M9XCJuYXZiYXItZm9ybVwiXG4+XG4gIDxjOHktc3RhdHVzLWZpbHRlclxuICAgICNzdGF0dXNGaWx0ZXJcbiAgICBbb3B0aW9uc109XCJPUEVSQVRJT05fU1RBVFVTX09QVElPTlNfTUFQXCJcbiAgICAob25GaWx0ZXJDaGFuZ2VkKT1cInN0YXR1c0ZpbHRlciQubmV4dCgkZXZlbnQpXCJcbiAgICBjOHlQcm9kdWN0RXhwZXJpZW5jZVxuICAgIGluaGVyaXRcbiAgPjwvYzh5LXN0YXR1cy1maWx0ZXI+XG48L2M4eS1hY3Rpb24tYmFyLWl0ZW0+XG5cbjxjOHktYWN0aW9uLWJhci1pdGVtIFtwbGFjZW1lbnRdPVwiJ3JpZ2h0J1wiPlxuICA8Yzh5LXJlYWx0aW1lLWJ0biBbc2VydmljZV09XCJyZWFsdGltZVwiPjwvYzh5LXJlYWx0aW1lLWJ0bj5cbjwvYzh5LWFjdGlvbi1iYXItaXRlbT5cblxuPGM4eS1hY3Rpb24tYmFyLWl0ZW0gW3BsYWNlbWVudF09XCIncmlnaHQnXCI+XG4gIDxidXR0b25cbiAgICBjbGFzcz1cImJ0biBidG4tbGluayBkLWZsZXggYS1pLWNlbnRlclwiXG4gICAgdGl0bGU9XCJ7eyAnUmVsb2FkJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgKGNsaWNrKT1cInJlbG9hZCQubmV4dCgpXCJcbiAgPlxuICAgIDxpXG4gICAgICBjbGFzcz1cIm0tci00XCJcbiAgICAgIGM4eUljb249XCJyZWZyZXNoXCJcbiAgICAgIFtuZ0NsYXNzXT1cInsgJ2ljb24tc3Bpbic6IHJlZnJlc2hMb2FkaW5nIH1cIlxuICAgID48L2k+XG4gICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LXRydW5jYXRlXCI+XG4gICAgICB7eyAnUmVsb2FkJyB8IHRyYW5zbGF0ZSB9fVxuICAgIDwvc3Bhbj5cbiAgPC9idXR0b24+XG48L2M4eS1hY3Rpb24tYmFyLWl0ZW0+XG5cbjxjOHktaGVscFxuICBzcmM9XCIvZG9jcy9kZXZpY2UtbWFuYWdlbWVudC1hcHBsaWNhdGlvbi9tb25pdG9yaW5nLWFuZC1jb250cm9sbGluZy1kZXZpY2VzLyN0by12aWV3LXNpbmdsZS1vcGVyYXRpb25zXCJcbj48L2M4eS1oZWxwPlxuXG48IS0tIEVtcHR5IHN0YXRlICAtLT5cbjxjOHktdWktZW1wdHktc3RhdGVcbiAgW2ljb25dPVwiJ2M4eS1lbmVyZ3knXCJcbiAgW3RpdGxlXT1cIidObyBpdGVtcyB0byBkaXNwbGF5LicgfCB0cmFuc2xhdGVcIlxuICBbc3VidGl0bGVdPVwiJ09wZXJhdGlvbnMgd2lsbCBiZSBkaXNwbGF5ZWQgaGVyZS4nIHwgdHJhbnNsYXRlXCJcbiAgKm5nSWY9XCIob3BlcmF0aW9ucyQgfCBhc3luYyk/LmRhdGEubGVuZ3RoID09PSAwICYmICEoc3RhdHVzRmlsdGVyJCB8IGFzeW5jKVwiXG4+PC9jOHktdWktZW1wdHktc3RhdGU+XG48IS0tIE5vIHJlc3VsdHMgZW1wdHkgc3RhdGUgLS0+XG48Yzh5LXVpLWVtcHR5LXN0YXRlXG4gIFtpY29uXT1cIidzZWFyY2gnXCJcbiAgW3RpdGxlXT1cIidObyByZXN1bHRzIHRvIGRpc3BsYXkuJyB8IHRyYW5zbGF0ZVwiXG4gIFtzdWJ0aXRsZV09XCInQWRqdXN0IG9yIHJlc2V0IHRoZSBmaWx0ZXIuJyB8IHRyYW5zbGF0ZVwiXG4gICpuZ0lmPVwiKG9wZXJhdGlvbnMkIHwgYXN5bmMpPy5kYXRhLmxlbmd0aCA9PT0gMCAmJiAoc3RhdHVzRmlsdGVyJCB8IGFzeW5jKVwiXG4+XG4gIDxidXR0b25cbiAgICBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiXG4gICAgdGl0bGU9XCJ7eyAnUmVzZXQgZmlsdGVyJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgdHlwZT1cImJ1dHRvblwiXG4gICAgKGNsaWNrKT1cInN0YXR1c0ZpbHRlci5yZXNldCgpXCJcbiAgICB0cmFuc2xhdGVcbiAgPlxuICAgIFJlc2V0IGZpbHRlclxuICA8L2J1dHRvbj5cbjwvYzh5LXVpLWVtcHR5LXN0YXRlPlxuXG48IS0tIERldGFpbGVkIGxpc3Qgb2Ygb3BlcmF0aW9ucyArIGxvYWQgbW9yZSBidXR0b24gLS0+XG48Yzh5LWxpc3QtZ3JvdXAgY2xhc3M9XCJtLWItMjRcIj5cbiAgPGRpdlxuICAgIGNsYXNzPVwicGFnZS1zdGlja3ktaGVhZGVyIGM4eS1saXN0X19pdGVtIGM4eS1saXN0X19pdGVtLS1kb3VibGUtYWN0aW9ucyBoaWRkZW4teHNcIlxuICAgICpuZ0lmPVwiKG9wZXJhdGlvbnMkIHwgYXN5bmMpPy5kYXRhLmxlbmd0aFwiXG4gID5cbiAgICA8ZGl2IGNsYXNzPVwiYzh5LWxpc3RfX2l0ZW1fX2Jsb2NrXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiYzh5LWxpc3RfX2l0ZW1fX2ljb25cIj5cbiAgICAgICAgPGkgY2xhc3M9XCJwLWwtMjRcIj48L2k+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjOHktbGlzdF9faXRlbV9fYm9keSB0ZXh0LXRydW5jYXRlLXdyYXBcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRlbnQtZmxleC01N1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNVwiPlxuICAgICAgICAgICAge3sgJ09wZXJhdGlvbicgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cImZsZXgtZ3Jvd1wiXG4gICAgICAgICAgICAqbmdJZj1cIiFkZXZpY2VJZFwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAge3sgJ0RldmljZScgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTRcIj5cbiAgICAgICAgICAgIHt7ICdEYXRlIGNyZWF0ZWQnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiYzh5LWxpc3RfX2l0ZW1fX2FjdGlvbnNcIj48L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxkaXZcbiAgICBjbGFzcz1cImQtY29udGVudHNcIlxuICAgICpjOHlGb3I9XCJcbiAgICAgIGxldCBvcCBvZiBvcGVyYXRpb25zJCB8IGFzeW5jO1xuICAgICAgbGV0IGkgPSBpbmRleDtcbiAgICAgIHJlYWx0aW1lOiByZWFsdGltZTtcbiAgICAgIHJlYWx0aW1lT3B0aW9uczogeyBlbnRpdHlPcklkOiBkZXZpY2VJZCwgcmVtb3ZlT25VcGRhdGU6IHRydWUsIGluc2VydE9uVXBkYXRlOiB0cnVlIH07XG4gICAgICBjb21wYXJhdG9yOiBjb21wYXJlT3BlcmF0aW9ucy5iaW5kKHRoaXMpO1xuICAgICAgbG9hZE1vcmU6ICdhdXRvJztcbiAgICAgIHBpcGU6IG9wZXJhdGlvbnNGaWx0ZXJQaXBlXG4gICAgXCJcbiAgPlxuICAgIDxjOHktb3BlcmF0aW9ucy1saXN0LWl0ZW1cbiAgICAgIGNsYXNzPVwiZC1jb250ZW50c1wiXG4gICAgICBbb3BlcmF0aW9uXT1cIm9wXCJcbiAgICAgIFtpc1NtYXJ0UnVsZXNNaWNyb3NlcnZpY2VBdmFpbGFibGVdPVwiaXNTbWFydFJ1bGVzTWljcm9zZXJ2aWNlQXZhaWxhYmxlXCJcbiAgICAgIChyZWxvYWQpPVwicmVsb2FkJC5uZXh0KClcIlxuICAgICAgYzh5UHJvZHVjdEV4cGVyaWVuY2VcbiAgICAgIGluaGVyaXRcbiAgICA+PC9jOHktb3BlcmF0aW9ucy1saXN0LWl0ZW0+XG4gIDwvZGl2PlxuPC9jOHktbGlzdC1ncm91cD5cbiJdfQ==
@@ -509,6 +509,8 @@ class AlarmsViewService {
509
509
  return `/device/${contextData.contextData.id}${detailUrl}`;
510
510
  case ViewContext.Group:
511
511
  return `/group/${contextData.contextData.id}${detailUrl}`;
512
+ case ViewContext.Simulators:
513
+ return `/simulators/${contextData.contextData.id}${detailUrl}`;
512
514
  default:
513
515
  return detailUrl;
514
516
  }