@provoly/dashboard 0.14.10 → 0.14.12

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 (110) hide show
  1. package/admin/admin.module.d.ts +2 -1
  2. package/admin/components/admin-classes/admin-classes-form/admin-classes-form.component.d.ts +1 -0
  3. package/admin/components/admin-classes/store/admin-class.actions.d.ts +11 -0
  4. package/admin/components/admin-classes/store/admin-class.effects.d.ts +5 -0
  5. package/admin/components/admin-classes/store/admin-class.reducer.d.ts +1 -0
  6. package/admin/components/admin-classes/store/admin-class.selectors.d.ts +1 -0
  7. package/admin/i18n/en.translations.d.ts +11 -0
  8. package/admin/i18n/fr.translations.d.ts +11 -0
  9. package/admin/store/admin.service.d.ts +1 -0
  10. package/esm2022/admin/admin.module.mjs +8 -4
  11. package/esm2022/admin/components/admin-classes/admin-classes-form/admin-classes-form.component.mjs +8 -4
  12. package/esm2022/admin/components/admin-classes/store/admin-class.actions.mjs +5 -2
  13. package/esm2022/admin/components/admin-classes/store/admin-class.effects.mjs +4 -1
  14. package/esm2022/admin/components/admin-classes/store/admin-class.reducer.mjs +6 -2
  15. package/esm2022/admin/components/admin-classes/store/admin-class.selectors.mjs +4 -2
  16. package/esm2022/admin/i18n/en.translations.mjs +12 -1
  17. package/esm2022/admin/i18n/fr.translations.mjs +13 -2
  18. package/esm2022/admin/store/admin.service.mjs +6 -1
  19. package/esm2022/dataset/components/dataset-detail/dataset-detail.component.mjs +3 -2
  20. package/esm2022/dataset/i18n/fr.translations.mjs +2 -2
  21. package/esm2022/lib/core/components/about/about.component.mjs +14 -9
  22. package/esm2022/lib/core/i18n/en.translations.mjs +4 -2
  23. package/esm2022/lib/core/i18n/fr.translations.mjs +4 -2
  24. package/esm2022/lib/core/model/widget-aggregated-chart-manifest.interface.mjs +2 -1
  25. package/esm2022/lib/core/model/widget-map-manifest.interface.mjs +2 -1
  26. package/esm2022/lib/core/public-api.mjs +4 -1
  27. package/esm2022/lib/core/store/aggregation/backend-aggregation.service.mjs +101 -0
  28. package/esm2022/lib/core/store/aggregation/base-aggregation.service.mjs +16 -0
  29. package/esm2022/lib/core/store/aggregation/frontend-aggregation.service.mjs +210 -0
  30. package/esm2022/lib/core/store/class/class.interface.mjs +1 -1
  31. package/esm2022/lib/core/store/config/config.reducer.mjs +2 -2
  32. package/esm2022/lib/core/store/config/config.service.mjs +13 -13
  33. package/esm2022/lib/core/store/config/versions.interface.mjs +1 -1
  34. package/esm2022/lib/core/store/context-menu/context-menu.actions.mjs +1 -1
  35. package/esm2022/lib/core/store/context-menu/context-menu.reducer.mjs +5 -3
  36. package/esm2022/lib/core/store/context-menu/context-menu.selectors.mjs +4 -2
  37. package/esm2022/lib/core/store/field/field.interface.mjs +1 -1
  38. package/esm2022/lib/core/toolbox/toolbox-manifest.service.mjs +15 -1
  39. package/esm2022/lib/core/toolbox/toolbox-menu.service.mjs +3 -2
  40. package/esm2022/lib/dashboard/components/context-menu/context-menu.component.mjs +23 -17
  41. package/esm2022/lib/dashboard/components/context-menu/object-edition/object-edition.component.mjs +1 -1
  42. package/esm2022/lib/dashboard/store/dashboard.reducers.mjs +4 -3
  43. package/esm2022/lib/dashboard/store/dashboard.selectors.mjs +5 -3
  44. package/esm2022/toolbox/components/save-view/save-view.component.mjs +5 -4
  45. package/esm2022/widgets/widget-aggregated-chart/component/widget-aggregated-chart.component.mjs +8 -9
  46. package/esm2022/widgets/widget-aggregated-chart/public-api.mjs +1 -4
  47. package/esm2022/widgets/widget-aggregated-chart/widget-aggregated-chart.module.mjs +2 -3
  48. package/esm2022/widgets/widget-detail/component/widget-detail.component.mjs +2 -2
  49. package/esm2022/widgets/widget-graph/component/widget-graph.component.mjs +3 -2
  50. package/esm2022/widgets/widget-map/component/widget-map-layer.service.mjs +2 -1
  51. package/esm2022/widgets/widget-map/component/widget-map.component.mjs +66 -31
  52. package/esm2022/widgets/widget-map/interaction/interaction-manager.class.mjs +3 -2
  53. package/esm2022/widgets/widget-map/utils/xml-utils.class.mjs +3 -2
  54. package/esm2022/widgets/widget-table/component/widget-table.component.mjs +47 -52
  55. package/esm2022/widgets/widget-tile/component/widget-tile.component.mjs +3 -2
  56. package/esm2022/widgets/widget-vega/i18n/en.translations.mjs +4 -2
  57. package/esm2022/widgets/widget-vega/i18n/fr.translations.mjs +4 -2
  58. package/fesm2022/provoly-dashboard-admin.mjs +56 -10
  59. package/fesm2022/provoly-dashboard-admin.mjs.map +1 -1
  60. package/fesm2022/provoly-dashboard-dataset.mjs +3 -2
  61. package/fesm2022/provoly-dashboard-dataset.mjs.map +1 -1
  62. package/fesm2022/provoly-dashboard-toolbox.mjs +4 -3
  63. package/fesm2022/provoly-dashboard-toolbox.mjs.map +1 -1
  64. package/fesm2022/provoly-dashboard-widgets-widget-aggregated-chart.mjs +10 -313
  65. package/fesm2022/provoly-dashboard-widgets-widget-aggregated-chart.mjs.map +1 -1
  66. package/fesm2022/provoly-dashboard-widgets-widget-detail.mjs +1 -1
  67. package/fesm2022/provoly-dashboard-widgets-widget-detail.mjs.map +1 -1
  68. package/fesm2022/provoly-dashboard-widgets-widget-graph.mjs +2 -1
  69. package/fesm2022/provoly-dashboard-widgets-widget-graph.mjs.map +1 -1
  70. package/fesm2022/provoly-dashboard-widgets-widget-map.mjs +69 -32
  71. package/fesm2022/provoly-dashboard-widgets-widget-map.mjs.map +1 -1
  72. package/fesm2022/provoly-dashboard-widgets-widget-table.mjs +47 -52
  73. package/fesm2022/provoly-dashboard-widgets-widget-table.mjs.map +1 -1
  74. package/fesm2022/provoly-dashboard-widgets-widget-tile.mjs +2 -1
  75. package/fesm2022/provoly-dashboard-widgets-widget-tile.mjs.map +1 -1
  76. package/fesm2022/provoly-dashboard-widgets-widget-vega.mjs +6 -2
  77. package/fesm2022/provoly-dashboard-widgets-widget-vega.mjs.map +1 -1
  78. package/fesm2022/provoly-dashboard.mjs +439 -101
  79. package/fesm2022/provoly-dashboard.mjs.map +1 -1
  80. package/lib/core/components/about/about.component.d.ts +3 -1
  81. package/lib/core/i18n/en.translations.d.ts +2 -0
  82. package/lib/core/i18n/fr.translations.d.ts +2 -0
  83. package/lib/core/model/widget-aggregated-chart-manifest.interface.d.ts +2 -1
  84. package/lib/core/model/widget-map-manifest.interface.d.ts +1 -0
  85. package/lib/core/public-api.d.ts +3 -0
  86. package/{widgets/widget-aggregated-chart/service → lib/core/store/aggregation}/backend-aggregation.service.d.ts +4 -1
  87. package/{widgets/widget-aggregated-chart/service → lib/core/store/aggregation}/base-aggregation.service.d.ts +14 -1
  88. package/{widgets/widget-aggregated-chart/service → lib/core/store/aggregation}/frontend-aggregation.service.d.ts +3 -2
  89. package/lib/core/store/class/class.interface.d.ts +1 -0
  90. package/lib/core/store/config/config.service.d.ts +2 -1
  91. package/lib/core/store/config/versions.interface.d.ts +3 -3
  92. package/lib/core/store/context-menu/context-menu.actions.d.ts +2 -0
  93. package/lib/core/store/context-menu/context-menu.reducer.d.ts +1 -0
  94. package/lib/core/store/context-menu/context-menu.selectors.d.ts +1 -0
  95. package/lib/core/store/field/field.interface.d.ts +1 -0
  96. package/lib/dashboard/components/context-menu/context-menu.component.d.ts +1 -0
  97. package/lib/dashboard/store/dashboard.selectors.d.ts +6 -1
  98. package/package.json +7 -7
  99. package/styles/base/_utils.scss +4 -0
  100. package/styles/components/_o-pry-admin-classes-customize.scss +6 -4
  101. package/toolbox/components/save-view/save-view.component.d.ts +2 -1
  102. package/widgets/widget-aggregated-chart/component/widget-aggregated-chart.component.d.ts +1 -7
  103. package/widgets/widget-aggregated-chart/public-api.d.ts +0 -3
  104. package/widgets/widget-map/component/widget-map.component.d.ts +12 -3
  105. package/widgets/widget-table/component/widget-table.component.d.ts +6 -1
  106. package/widgets/widget-vega/i18n/en.translations.d.ts +2 -0
  107. package/widgets/widget-vega/i18n/fr.translations.d.ts +2 -0
  108. package/esm2022/widgets/widget-aggregated-chart/service/backend-aggregation.service.mjs +0 -96
  109. package/esm2022/widgets/widget-aggregated-chart/service/base-aggregation.service.mjs +0 -16
  110. package/esm2022/widgets/widget-aggregated-chart/service/frontend-aggregation.service.mjs +0 -206
@@ -33,6 +33,7 @@ export class ContextMenuComponent extends SubscriptionnerDirective {
33
33
  options: { itemIds: [] }
34
34
  };
35
35
  this.isModuleLoaded = {};
36
+ this.allowObjectCreation$ = this.store.select(ContextMenuSelectors.allowObjectCreation);
36
37
  this.opened$ = this.store.select(ContextMenuSelectors.opened);
37
38
  this.position$ = this.store.select(ContextMenuSelectors.position);
38
39
  this.itemId$ = this.store.select(ContextMenuSelectors.itemId);
@@ -55,20 +56,25 @@ export class ContextMenuComponent extends SubscriptionnerDirective {
55
56
  this.widgetFactoryService.isModuleLoaded('graph').subscribe((loaded) => (this.isModuleLoaded['graph'] = loaded));
56
57
  }
57
58
  openWithTemplate(position) {
58
- this.overlayRef = this.overlay.create(new OverlayConfig({
59
- hasBackdrop: true,
60
- panelClass: ['m-context-menu'],
61
- backdropClass: 'backdrop'
62
- }));
63
- this.overlayRef.attach(new TemplatePortal(this.template, this.viewContainerRef));
64
- this.store.dispatch(ConfigActions.addingOverlay({ id: this.constructor.name }));
65
- this.overlayRef.backdropClick().subscribe(() => this.hide());
66
- const contextMenu = document.querySelector('div.m-context-menu');
67
- if (!!contextMenu) {
68
- contextMenu.style.left =
69
- Math.max(0, Math.min(window.innerWidth - contextMenu.clientWidth, position.clientX - 10)) + 'px';
70
- contextMenu.style.top =
71
- Math.max(0, Math.min(window.innerHeight - contextMenu.clientHeight, position.clientY - 10)) + 'px';
59
+ if (this.from !== 'map') {
60
+ this.overlayRef = this.overlay.create(new OverlayConfig({
61
+ hasBackdrop: true,
62
+ panelClass: ['m-context-menu'],
63
+ backdropClass: 'backdrop'
64
+ }));
65
+ this.overlayRef.attach(new TemplatePortal(this.template, this.viewContainerRef));
66
+ this.store.dispatch(ConfigActions.addingOverlay({ id: this.constructor.name }));
67
+ this.overlayRef.backdropClick().subscribe(() => this.hide());
68
+ const contextMenu = document.querySelector('div.m-context-menu');
69
+ if (!!contextMenu) {
70
+ contextMenu.style.left =
71
+ Math.max(0, Math.min(window.innerWidth - contextMenu.clientWidth, position.clientX - 10)) + 'px';
72
+ contextMenu.style.top =
73
+ Math.max(0, Math.min(window.innerHeight - contextMenu.clientHeight, position.clientY - 10)) + 'px';
74
+ }
75
+ }
76
+ else {
77
+ this.hide();
72
78
  }
73
79
  }
74
80
  hide() {
@@ -112,11 +118,11 @@ export class ContextMenuComponent extends SubscriptionnerDirective {
112
118
  this.store.dispatch(ConfigActions.closeOverlay({ id: this.constructor.name + '-detail' }));
113
119
  }
114
120
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: ContextMenuComponent, deps: [{ token: i1.Store }, { token: i2.Overlay }, { token: i0.ViewContainerRef }, { token: i3.WidgetFactoryService }], target: i0.ɵɵFactoryTarget.Component }); }
115
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.6", type: ContextMenuComponent, selector: "pry-context-menu", viewQueries: [{ propertyName: "template", first: true, predicate: ["template"], descendants: true, read: TemplateRef }, { propertyName: "detailTemplate", first: true, predicate: ["detailTemplate"], descendants: true, read: TemplateRef }], usesInheritance: true, ngImport: i0, template: "<ng-template #template>\n <ul class=\"m-context-menu__list\">\n <ng-container *ngIf=\"!!itemId\">\n <li class=\"m-context-menu__list__item\">\n <button type=\"button\" class=\"a-btn -link-like\" (click)=\"selectionAddOrRemove()\">\n {{ ((isSelected$ | async) ? '@pry.context.remove' : '@pry.context.add') | i18n }}\n </button>\n </li>\n <li class=\"m-context-menu__list__item\">\n <button type=\"button\" class=\"a-btn -link-like\" (click)=\"selectionInvert()\">\n {{ '@pry.context.invert' | i18n }}\n </button>\n </li>\n <li class=\"m-context-menu__list__item\" *ngIf=\"!!resultSet\">\n <button type=\"button\" class=\"a-btn -link-like\" (click)=\"proximity()\" *ngIf=\"!!resultSet\">\n {{ '@pry.context.proximity' | i18n }}\n </button>\n </li>\n <ng-container *ngIf=\"isModuleLoaded['graph']\">\n <li class=\"m-context-menu__list__item\">\n <button type=\"button\" class=\"a-btn -link-like\" (click)=\"explore()\">\n {{ '@pry.context.explore' | i18n }}\n </button>\n </li>\n </ng-container>\n <ng-container *ngIf=\"isModuleLoaded['detail']\">\n <li class=\"m-context-menu__list__item\">\n <button type=\"button\" class=\"a-btn -link-like\" (click)=\"detail()\">\n {{ '@pry.context.detail' | i18n }}\n </button>\n </li>\n <li class=\"m-context-menu__list__item\">\n <button type=\"button\" class=\"a-btn -link-like\" (click)=\"flyingDetail()\">\n {{ '@pry.context.flyingDetail' | i18n }}\n </button>\n </li>\n </ng-container>\n <ng-container *pryAccess=\"{ module: 'dashboard', page: 'dashboard', action: 'edit_object' }\">\n <li class=\"m-context-menu__list__item\">\n <pry-object-creation\n (closed)=\"hide()\"\n [link]=\"true\"\n [object]=\"false\"\n [menu]=\"true\"\n *ngIf=\"(selectedItemsIds?.length ?? 0) > 0\"\n ></pry-object-creation>\n <pry-object-creation (closed)=\"hide()\" [link]=\"true\" [object]=\"true\" [menu]=\"true\"></pry-object-creation>\n </li>\n </ng-container>\n </ng-container>\n <ng-container *pryAccess=\"{ module: 'dashboard', page: 'dashboard', action: 'edit_object' }\">\n <li class=\"m-context-menu__list__item\">\n <pry-object-creation (closed)=\"hide()\" [object]=\"true\" [menu]=\"true\"></pry-object-creation>\n </li>\n </ng-container>\n </ul>\n</ng-template>\n<ng-template #detailTemplate>\n <div class=\"o-settings__popup__header\">\n <h2 class=\"a-h2\">{{ '@pry.context.flyingDetail' | i18n }}</h2>\n <button type=\"button\" (click)=\"hideDetail()\" class=\"a-btn a-btn--icon-only -close\">\n <pry-icon iconSvg=\"close\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.action.close' | i18n }}</span>\n </button>\n </div>\n <div class=\"o-settings__popup__content\">\n <pry-widget-instanciator [staticManifest]=\"detailManifest\"></pry-widget-instanciator>\n </div>\n <div class=\"o-settings__popup__footer\">\n <button (click)=\"hideDetail()\" class=\"a-btn a-btn--primary\">\n {{ '@pry.action.close' | i18n }}\n </button>\n </div>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.PryIconComponent, selector: "pry-icon", inputs: ["color", "iconSvg", "animation", "iconImage", "alt", "width", "height", "classes"] }, { kind: "directive", type: i6.PryAccessDirective, selector: "[pryAccess]", inputs: ["pryAccess"] }, { kind: "component", type: i7.WidgetInstanciatorComponent, selector: "pry-widget-instanciator", inputs: ["widgetIndex", "staticManifest", "standalone", "open$"], outputs: ["manifestModified"] }, { kind: "component", type: i8.PryObjectEditionComponent, selector: "pry-object-creation", inputs: ["link", "object", "menu"], outputs: ["closed"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "pipe", type: i9.I18nPipe, name: "i18n" }] }); }
121
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.6", type: ContextMenuComponent, selector: "pry-context-menu", viewQueries: [{ propertyName: "template", first: true, predicate: ["template"], descendants: true, read: TemplateRef }, { propertyName: "detailTemplate", first: true, predicate: ["detailTemplate"], descendants: true, read: TemplateRef }], usesInheritance: true, ngImport: i0, template: "<ng-template #template>\n <ul class=\"m-context-menu__list\">\n <ng-container *ngIf=\"!!itemId\">\n <li class=\"m-context-menu__list__item\">\n <button type=\"button\" class=\"a-btn -link-like\" (click)=\"selectionAddOrRemove()\">\n {{ ((isSelected$ | async) ? '@pry.context.remove' : '@pry.context.add') | i18n }}\n </button>\n </li>\n <li class=\"m-context-menu__list__item\">\n <button type=\"button\" class=\"a-btn -link-like\" (click)=\"selectionInvert()\">\n {{ '@pry.context.invert' | i18n }}\n </button>\n </li>\n <li class=\"m-context-menu__list__item\" *ngIf=\"!!resultSet\">\n <button type=\"button\" class=\"a-btn -link-like\" (click)=\"proximity()\" *ngIf=\"!!resultSet\">\n {{ '@pry.context.proximity' | i18n }}\n </button>\n </li>\n <ng-container *ngIf=\"isModuleLoaded['graph']\">\n <li class=\"m-context-menu__list__item\">\n <button type=\"button\" class=\"a-btn -link-like\" (click)=\"explore()\">\n {{ '@pry.context.explore' | i18n }}\n </button>\n </li>\n </ng-container>\n <ng-container *ngIf=\"isModuleLoaded['detail']\">\n <li class=\"m-context-menu__list__item\">\n <button type=\"button\" class=\"a-btn -link-like\" (click)=\"detail()\">\n {{ '@pry.context.detail' | i18n }}\n </button>\n </li>\n <li class=\"m-context-menu__list__item\">\n <button type=\"button\" class=\"a-btn -link-like\" (click)=\"flyingDetail()\">\n {{ '@pry.context.flyingDetail' | i18n }}\n </button>\n </li>\n </ng-container>\n <ng-container *pryAccess=\"{ module: 'dashboard', page: 'dashboard', action: 'edit_object' }\">\n <li class=\"m-context-menu__list__item\">\n <pry-object-creation\n (closed)=\"hide()\"\n [link]=\"true\"\n [object]=\"false\"\n [menu]=\"true\"\n *ngIf=\"(selectedItemsIds?.length ?? 0) > 0\"\n ></pry-object-creation>\n <ng-container *ngIf=\"allowObjectCreation$ | async\">\n <pry-object-creation (closed)=\"hide()\" [link]=\"true\" [object]=\"true\" [menu]=\"true\"></pry-object-creation>\n </ng-container>\n </li>\n </ng-container>\n </ng-container>\n <ng-container *pryAccess=\"{ module: 'dashboard', page: 'dashboard', action: 'edit_object' }\">\n <li *ngIf=\"allowObjectCreation$| async\" class=\"m-context-menu__list__item\">\n <pry-object-creation (closed)=\"hide()\" [object]=\"true\" [menu]=\"true\"></pry-object-creation>\n </li>\n </ng-container>\n </ul>\n</ng-template>\n<ng-template #detailTemplate>\n <div class=\"o-settings__popup__header\">\n <h2 class=\"a-h2\">{{ '@pry.context.flyingDetail' | i18n }}</h2>\n <button type=\"button\" (click)=\"hideDetail()\" class=\"a-btn a-btn--icon-only -close\">\n <pry-icon iconSvg=\"close\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.action.close' | i18n }}</span>\n </button>\n </div>\n <div class=\"o-settings__popup__content\">\n <pry-widget-instanciator [staticManifest]=\"detailManifest\"></pry-widget-instanciator>\n </div>\n <div class=\"o-settings__popup__footer\">\n <button (click)=\"hideDetail()\" class=\"a-btn a-btn--primary\">\n {{ '@pry.action.close' | i18n }}\n </button>\n </div>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.PryIconComponent, selector: "pry-icon", inputs: ["color", "iconSvg", "animation", "iconImage", "alt", "width", "height", "classes"] }, { kind: "directive", type: i6.PryAccessDirective, selector: "[pryAccess]", inputs: ["pryAccess"] }, { kind: "component", type: i7.WidgetInstanciatorComponent, selector: "pry-widget-instanciator", inputs: ["widgetIndex", "staticManifest", "standalone", "open$"], outputs: ["manifestModified"] }, { kind: "component", type: i8.PryObjectEditionComponent, selector: "pry-object-creation", inputs: ["link", "object", "menu"], outputs: ["closed"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "pipe", type: i9.I18nPipe, name: "i18n" }] }); }
116
122
  }
117
123
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: ContextMenuComponent, decorators: [{
118
124
  type: Component,
119
- args: [{ selector: 'pry-context-menu', template: "<ng-template #template>\n <ul class=\"m-context-menu__list\">\n <ng-container *ngIf=\"!!itemId\">\n <li class=\"m-context-menu__list__item\">\n <button type=\"button\" class=\"a-btn -link-like\" (click)=\"selectionAddOrRemove()\">\n {{ ((isSelected$ | async) ? '@pry.context.remove' : '@pry.context.add') | i18n }}\n </button>\n </li>\n <li class=\"m-context-menu__list__item\">\n <button type=\"button\" class=\"a-btn -link-like\" (click)=\"selectionInvert()\">\n {{ '@pry.context.invert' | i18n }}\n </button>\n </li>\n <li class=\"m-context-menu__list__item\" *ngIf=\"!!resultSet\">\n <button type=\"button\" class=\"a-btn -link-like\" (click)=\"proximity()\" *ngIf=\"!!resultSet\">\n {{ '@pry.context.proximity' | i18n }}\n </button>\n </li>\n <ng-container *ngIf=\"isModuleLoaded['graph']\">\n <li class=\"m-context-menu__list__item\">\n <button type=\"button\" class=\"a-btn -link-like\" (click)=\"explore()\">\n {{ '@pry.context.explore' | i18n }}\n </button>\n </li>\n </ng-container>\n <ng-container *ngIf=\"isModuleLoaded['detail']\">\n <li class=\"m-context-menu__list__item\">\n <button type=\"button\" class=\"a-btn -link-like\" (click)=\"detail()\">\n {{ '@pry.context.detail' | i18n }}\n </button>\n </li>\n <li class=\"m-context-menu__list__item\">\n <button type=\"button\" class=\"a-btn -link-like\" (click)=\"flyingDetail()\">\n {{ '@pry.context.flyingDetail' | i18n }}\n </button>\n </li>\n </ng-container>\n <ng-container *pryAccess=\"{ module: 'dashboard', page: 'dashboard', action: 'edit_object' }\">\n <li class=\"m-context-menu__list__item\">\n <pry-object-creation\n (closed)=\"hide()\"\n [link]=\"true\"\n [object]=\"false\"\n [menu]=\"true\"\n *ngIf=\"(selectedItemsIds?.length ?? 0) > 0\"\n ></pry-object-creation>\n <pry-object-creation (closed)=\"hide()\" [link]=\"true\" [object]=\"true\" [menu]=\"true\"></pry-object-creation>\n </li>\n </ng-container>\n </ng-container>\n <ng-container *pryAccess=\"{ module: 'dashboard', page: 'dashboard', action: 'edit_object' }\">\n <li class=\"m-context-menu__list__item\">\n <pry-object-creation (closed)=\"hide()\" [object]=\"true\" [menu]=\"true\"></pry-object-creation>\n </li>\n </ng-container>\n </ul>\n</ng-template>\n<ng-template #detailTemplate>\n <div class=\"o-settings__popup__header\">\n <h2 class=\"a-h2\">{{ '@pry.context.flyingDetail' | i18n }}</h2>\n <button type=\"button\" (click)=\"hideDetail()\" class=\"a-btn a-btn--icon-only -close\">\n <pry-icon iconSvg=\"close\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.action.close' | i18n }}</span>\n </button>\n </div>\n <div class=\"o-settings__popup__content\">\n <pry-widget-instanciator [staticManifest]=\"detailManifest\"></pry-widget-instanciator>\n </div>\n <div class=\"o-settings__popup__footer\">\n <button (click)=\"hideDetail()\" class=\"a-btn a-btn--primary\">\n {{ '@pry.action.close' | i18n }}\n </button>\n </div>\n</ng-template>\n" }]
125
+ args: [{ selector: 'pry-context-menu', template: "<ng-template #template>\n <ul class=\"m-context-menu__list\">\n <ng-container *ngIf=\"!!itemId\">\n <li class=\"m-context-menu__list__item\">\n <button type=\"button\" class=\"a-btn -link-like\" (click)=\"selectionAddOrRemove()\">\n {{ ((isSelected$ | async) ? '@pry.context.remove' : '@pry.context.add') | i18n }}\n </button>\n </li>\n <li class=\"m-context-menu__list__item\">\n <button type=\"button\" class=\"a-btn -link-like\" (click)=\"selectionInvert()\">\n {{ '@pry.context.invert' | i18n }}\n </button>\n </li>\n <li class=\"m-context-menu__list__item\" *ngIf=\"!!resultSet\">\n <button type=\"button\" class=\"a-btn -link-like\" (click)=\"proximity()\" *ngIf=\"!!resultSet\">\n {{ '@pry.context.proximity' | i18n }}\n </button>\n </li>\n <ng-container *ngIf=\"isModuleLoaded['graph']\">\n <li class=\"m-context-menu__list__item\">\n <button type=\"button\" class=\"a-btn -link-like\" (click)=\"explore()\">\n {{ '@pry.context.explore' | i18n }}\n </button>\n </li>\n </ng-container>\n <ng-container *ngIf=\"isModuleLoaded['detail']\">\n <li class=\"m-context-menu__list__item\">\n <button type=\"button\" class=\"a-btn -link-like\" (click)=\"detail()\">\n {{ '@pry.context.detail' | i18n }}\n </button>\n </li>\n <li class=\"m-context-menu__list__item\">\n <button type=\"button\" class=\"a-btn -link-like\" (click)=\"flyingDetail()\">\n {{ '@pry.context.flyingDetail' | i18n }}\n </button>\n </li>\n </ng-container>\n <ng-container *pryAccess=\"{ module: 'dashboard', page: 'dashboard', action: 'edit_object' }\">\n <li class=\"m-context-menu__list__item\">\n <pry-object-creation\n (closed)=\"hide()\"\n [link]=\"true\"\n [object]=\"false\"\n [menu]=\"true\"\n *ngIf=\"(selectedItemsIds?.length ?? 0) > 0\"\n ></pry-object-creation>\n <ng-container *ngIf=\"allowObjectCreation$ | async\">\n <pry-object-creation (closed)=\"hide()\" [link]=\"true\" [object]=\"true\" [menu]=\"true\"></pry-object-creation>\n </ng-container>\n </li>\n </ng-container>\n </ng-container>\n <ng-container *pryAccess=\"{ module: 'dashboard', page: 'dashboard', action: 'edit_object' }\">\n <li *ngIf=\"allowObjectCreation$| async\" class=\"m-context-menu__list__item\">\n <pry-object-creation (closed)=\"hide()\" [object]=\"true\" [menu]=\"true\"></pry-object-creation>\n </li>\n </ng-container>\n </ul>\n</ng-template>\n<ng-template #detailTemplate>\n <div class=\"o-settings__popup__header\">\n <h2 class=\"a-h2\">{{ '@pry.context.flyingDetail' | i18n }}</h2>\n <button type=\"button\" (click)=\"hideDetail()\" class=\"a-btn a-btn--icon-only -close\">\n <pry-icon iconSvg=\"close\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.action.close' | i18n }}</span>\n </button>\n </div>\n <div class=\"o-settings__popup__content\">\n <pry-widget-instanciator [staticManifest]=\"detailManifest\"></pry-widget-instanciator>\n </div>\n <div class=\"o-settings__popup__footer\">\n <button (click)=\"hideDetail()\" class=\"a-btn a-btn--primary\">\n {{ '@pry.action.close' | i18n }}\n </button>\n </div>\n</ng-template>\n" }]
120
126
  }], ctorParameters: function () { return [{ type: i1.Store }, { type: i2.Overlay }, { type: i0.ViewContainerRef }, { type: i3.WidgetFactoryService }]; }, propDecorators: { template: [{
121
127
  type: ViewChild,
122
128
  args: ['template', { read: TemplateRef }]
@@ -124,4 +130,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImpor
124
130
  type: ViewChild,
125
131
  args: ['detailTemplate', { read: TemplateRef }]
126
132
  }] } });
127
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC1tZW51LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Byb3ZvbHkvZGFzaGJvYXJkL2xpYi9kYXNoYm9hcmQvY29tcG9uZW50cy9jb250ZXh0LW1lbnUvY29udGV4dC1tZW51LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Byb3ZvbHkvZGFzaGJvYXJkL2xpYi9kYXNoYm9hcmQvY29tcG9uZW50cy9jb250ZXh0LW1lbnUvY29udGV4dC1tZW51LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBVyxhQUFhLEVBQWMsTUFBTSxzQkFBc0IsQ0FBQztBQUMxRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDckQsT0FBTyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFvQixNQUFNLGVBQWUsQ0FBQztBQUVwRixPQUFPLEVBQUUsYUFBYSxFQUFFLEdBQUcsRUFBYyxNQUFNLE1BQU0sQ0FBQztBQUN0RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDaEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHVEQUF1RCxDQUFDO0FBQzNGLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHlEQUF5RCxDQUFDO0FBQy9GLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDOzs7Ozs7Ozs7OztBQU94RSxNQUFNLE9BQU8sb0JBQXFCLFNBQVEsd0JBQXdCO0lBdUJoRSxZQUNV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LEVBQUU7Z0JBRVEsY0FBYztzQkFBakUsU0FBUzt1QkFBQyxnQkFBZ0IsRUFBRSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPdmVybGF5LCBPdmVybGF5Q29uZmlnLCBPdmVybGF5UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuaW1wb3J0IHsgVGVtcGxhdGVQb3J0YWwgfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcbmltcG9ydCB7IENvbXBvbmVudCwgVGVtcGxhdGVSZWYsIFZpZXdDaGlsZCwgVmlld0NvbnRhaW5lclJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3RvcmUgfSBmcm9tICdAbmdyeC9zdG9yZSc7XG5pbXBvcnQgeyBjb21iaW5lTGF0ZXN0LCBtYXAsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHdpdGhMYXRlc3RGcm9tIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQ29uZmlnQWN0aW9ucyB9IGZyb20gJy4uLy4uLy4uL2NvcmUvc3RvcmUvY29uZmlnL2NvbmZpZy5hY3Rpb25zJztcbmltcG9ydCB7IENvbnRleHRNZW51QWN0aW9ucyB9IGZyb20gJy4uLy4uLy4uL2NvcmUvc3RvcmUvY29udGV4dC1tZW51L2NvbnRleHQtbWVudS5hY3Rpb25zJztcbmltcG9ydCB7IENvbnRleHRNZW51U2VsZWN0b3JzIH0gZnJvbSAnLi4vLi4vLi4vY29yZS9zdG9yZS9jb250ZXh0LW1lbnUvY29udGV4dC1tZW51LnNlbGVjdG9ycyc7XG5pbXBvcnQgeyBEYXNoYm9hcmRBY3Rpb25zIH0gZnJvbSAnLi4vLi4vc3RvcmUvZGFzaGJvYXJkLmFjdGlvbnMnO1xuaW1wb3J0IHsgRGFzaGJvYXJkU2VsZWN0b3JzIH0gZnJvbSAnLi4vLi4vc3RvcmUvZGFzaGJvYXJkLnNlbGVjdG9ycyc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb25uZXJEaXJlY3RpdmUgfSBmcm9tICcuLi9zdWJzY3JpcHRpb25uZXIuZGlyZWN0aXZlJztcbmltcG9ydCB7IFdpZGdldEZhY3RvcnlTZXJ2aWNlIH0gZnJvbSAnLi4vd2lkZ2V0cy93aWRnZXQtaW5zdGFuY2lhdG9yL3dpZGdldC1mYWN0b3J5LnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdwcnktY29udGV4dC1tZW51JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NvbnRleHQtbWVudS5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgQ29udGV4dE1lbnVDb21wb25lbnQgZXh0ZW5kcyBTdWJzY3JpcHRpb25uZXJEaXJlY3RpdmUge1xuICBvcGVuZWQkOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICBwb3NpdGlvbiQ6IE9ic2VydmFibGU8eyBjbGllbnRYOiBudW1iZXI7IGNsaWVudFk6IG51bWJlciB9PjtcbiAgaXRlbUlkJDogT2JzZXJ2YWJsZTxzdHJpbmc+O1xuICBpdGVtSWQ/OiBzdHJpbmc7XG4gIGlzU2VsZWN0ZWQkOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICByZXN1bHRTZXQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgc2VsZWN0ZWRJZHMkOiBPYnNlcnZhYmxlPHN0cmluZ1tdPjtcbiAgc2VsZWN0ZWRJdGVtc0lkcz86IHN0cmluZ1tdO1xuICBmcm9tPzogc3RyaW5nO1xuICBjb29yZGluYXRlcz86IG51bWJlcltdO1xuICBwcml2YXRlIG92ZXJsYXlSZWY/OiBPdmVybGF5UmVmO1xuICBAVmlld0NoaWxkKCd0ZW1wbGF0ZScsIHsgcmVhZDogVGVtcGxhdGVSZWYgfSkgdGVtcGxhdGUhOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICBwcml2YXRlIG92ZXJsYXlEZXRhaWxSZWY/OiBPdmVybGF5UmVmO1xuICBAVmlld0NoaWxkKCdkZXRhaWxUZW1wbGF0ZScsIHsgcmVhZDogVGVtcGxhdGVSZWYgfSkgZGV0YWlsVGVtcGxhdGUhOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICBkZXRhaWxNYW5pZmVzdCA9IHtcbiAgICB0eXBlOiAnZGV0YWlsJyxcbiAgICBoZWFkZXI6IGZhbHNlLFxuICAgIGxheW91dDogeyB4OiAxLCB5OiAxLCB3aWR0aDogMSwgaGVpZ2h0OiAxIH0sXG4gICAgb3B0aW9uczogeyBpdGVtSWRzOiBbXSBhcyBzdHJpbmdbXSB9XG4gIH07XG4gIGlzTW9kdWxlTG9hZGVkOiB7IFt0eXBlOiBzdHJpbmddOiBib29sZWFuIH0gPSB7fTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHN0b3JlOiBTdG9yZSxcbiAgICBwcml2YXRlIG92ZXJsYXk6IE92ZXJsYXksXG4gICAgcHJpdmF0ZSB2aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmLFxuICAgIHB1YmxpYyB3aWRnZXRGYWN0b3J5U2VydmljZTogV2lkZ2V0RmFjdG9yeVNlcnZpY2VcbiAgKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLm9wZW5lZCQgPSB0aGlzLnN0b3JlLnNlbGVjdChDb250ZXh0TWVudVNlbGVjdG9ycy5vcGVuZWQpO1xuICAgIHRoaXMucG9zaXRpb24kID0gdGhpcy5zdG9yZS5zZWxlY3QoQ29udGV4dE1lbnVTZWxlY3RvcnMucG9zaXRpb24pO1xuICAgIHRoaXMuaXRlbUlkJCA9IHRoaXMuc3RvcmUuc2VsZWN0KENvbnRleHRNZW51U2VsZWN0b3JzLml0ZW1JZCk7XG4gICAgdGhpcy5zZWxlY3RlZElkcyQgPSB0aGlzLnN0b3JlLnNlbGVjdChEYXNoYm9hcmRTZWxlY3RvcnMuc2VsZWN0ZWRJdGVtSWRzKTtcbiAgICB0aGlzLmlzU2VsZWN0ZWQkID0gY29tYmluZUxhdGVzdChbdGhpcy5zZWxlY3RlZElkcyQsIHRoaXMuaXRlbUlkJF0pLnBpcGUoXG4gICAgICBtYXAoKFtpdGVtSWRzLCBpdGVtSWRdKSA9PiBpdGVtSWRzLmluY2x1ZGVzKGl0ZW1JZCkpXG4gICAgKTtcblxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5hZGQodGhpcy5zdG9yZS5zZWxlY3QoQ29udGV4dE1lbnVTZWxlY3RvcnMuZnJvbSkuc3Vic2NyaWJlKChmcm9tKSA9PiAodGhpcy5mcm9tID0gZnJvbSkpKTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuYWRkKFxuICAgICAgdGhpcy5zdG9yZS5zZWxlY3QoQ29udGV4dE1lbnVTZWxlY3RvcnMuY29vcmRpbmF0ZXMpLnN1YnNjcmliZSgoY29vcmRpbmF0ZXMpID0+ICh0aGlzLmNvb3JkaW5hdGVzID0gY29vcmRpbmF0ZXMpKVxuICAgICk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmFkZCh0aGlzLml0ZW1JZCQuc3Vic2NyaWJlKChpdGVtSWQpID0+ICh0aGlzLml0ZW1JZCA9IGl0ZW1JZCkpKTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuYWRkKHRoaXMuc2VsZWN0ZWRJZHMkLnN1YnNjcmliZSgoaXRlbUlkcykgPT4gKHRoaXMuc2VsZWN0ZWRJdGVtc0lkcyA9IGl0ZW1JZHMpKSk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmFkZChcbiAgICAgIHRoaXMuc3RvcmUuc2VsZWN0KENvbnRleHRNZW51U2VsZWN0b3JzLnJlc3VsdFNldCkuc3Vic2NyaWJlKChyZXN1bHRTZXQpID0+ICh0aGlzLnJlc3VsdFNldCA9IHJlc3VsdFNldCkpXG4gICAgKTtcblxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICB0aGlzLm9wZW5lZCQucGlwZSh3aXRoTGF0ZXN0RnJvbSh0aGlzLnBvc2l0aW9uJCkpLnN1YnNjcmliZSgoW29wZW5lZCwgcG9zaXRpb25dKSA9PiB7XG4gICAgICAgIGlmIChvcGVuZWQpIHtcbiAgICAgICAgICB0aGlzLm9wZW5XaXRoVGVtcGxhdGUocG9zaXRpb24pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMub3ZlcmxheVJlZj8uZGlzcG9zZSgpO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICk7XG5cbiAgICB0aGlzLndpZGdldEZhY3RvcnlTZXJ2aWNlLmlzTW9kdWxlTG9hZGVkKCdkZXRhaWwnKS5zdWJzY3JpYmUoKGxvYWRlZCkgPT4gKHRoaXMuaXNNb2R1bGVMb2FkZWRbJ2RldGFpbCddID0gbG9hZGVkKSk7XG4gICAgdGhpcy53aWRnZXRGYWN0b3J5U2VydmljZS5pc01vZHVsZUxvYWRlZCgnZ3JhcGgnKS5zdWJzY3JpYmUoKGxvYWRlZCkgPT4gKHRoaXMuaXNNb2R1bGVMb2FkZWRbJ2dyYXBoJ10gPSBsb2FkZWQpKTtcbiAgfVxuXG4gIG9wZW5XaXRoVGVtcGxhdGUocG9zaXRpb246IGFueSkge1xuICAgIHRoaXMub3ZlcmxheVJlZiA9IHRoaXMub3ZlcmxheS5jcmVhdGUoXG4gICAgICBuZXcgT3ZlcmxheUNvbmZpZyh7XG4gICAgICAgIGhhc0JhY2tkcm9wOiB0cnVlLFxuICAgICAgICBwYW5lbENsYXNzOiBbJ20tY29udGV4dC1tZW51J10sXG4gICAgICAgIGJhY2tkcm9wQ2xhc3M6ICdiYWNrZHJvcCdcbiAgICAgIH0pXG4gICAgKTtcbiAgICB0aGlzLm92ZXJsYXlSZWYuYXR0YWNoKG5ldyBUZW1wbGF0ZVBvcnRhbCh0aGlzLnRlbXBsYXRlLCB0aGlzLnZpZXdDb250YWluZXJSZWYpKTtcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKENvbmZpZ0FjdGlvbnMuYWRkaW5nT3ZlcmxheSh7IGlkOiB0aGlzLmNvbnN0cnVjdG9yLm5hbWUgfSkpO1xuICAgIHRoaXMub3ZlcmxheVJlZi5iYWNrZHJvcENsaWNrKCkuc3Vic2NyaWJlKCgpID0+IHRoaXMuaGlkZSgpKTtcbiAgICBjb25zdCBjb250ZXh0TWVudSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2Rpdi5tLWNvbnRleHQtbWVudScpIGFzIEhUTUxEaXZFbGVtZW50O1xuICAgIGlmICghIWNvbnRleHRNZW51KSB7XG4gICAgICBjb250ZXh0TWVudS5zdHlsZS5sZWZ0ID1cbiAgICAgICAgTWF0aC5tYXgoMCwgTWF0aC5taW4od2luZG93LmlubmVyV2lkdGggLSBjb250ZXh0TWVudS5jbGllbnRXaWR0aCwgcG9zaXRpb24uY2xpZW50WCAtIDEwKSkgKyAncHgnO1xuICAgICAgY29udGV4dE1lbnUuc3R5bGUudG9wID1cbiAgICAgICAgTWF0aC5tYXgoMCwgTWF0aC5taW4od2luZG93LmlubmVySGVpZ2h0IC0gY29udGV4dE1lbnUuY2xpZW50SGVpZ2h0LCBwb3NpdGlvbi5jbGllbnRZIC0gMTApKSArICdweCc7XG4gICAgfVxuICB9XG5cbiAgaGlkZSgpIHtcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKENvbnRleHRNZW51QWN0aW9ucy5oaWRlKCkpO1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goQ29uZmlnQWN0aW9ucy5jbG9zZU92ZXJsYXkoeyBpZDogdGhpcy5jb25zdHJ1Y3Rvci5uYW1lIH0pKTtcbiAgfVxuXG4gIHNlbGVjdGlvbkFkZE9yUmVtb3ZlKCkge1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goRGFzaGJvYXJkQWN0aW9ucy5zZWxlY3QoeyBpZDogdGhpcy5pdGVtSWQgPz8gJycsIGN1bXVsYXRpdmU6IHRydWUgfSkpO1xuICAgIHRoaXMuaGlkZSgpO1xuICB9XG5cbiAgZXhwbG9yZSgpIHtcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKERhc2hib2FyZEFjdGlvbnMuZXhwbG9yZSh7IGlkOiB0aGlzLml0ZW1JZCA/PyAnJyB9KSk7XG4gICAgdGhpcy5oaWRlKCk7XG4gIH1cblxuICBwcm94aW1pdHkoKSB7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChEYXNoYm9hcmRBY3Rpb25zLnByb3hpbWl0eSh7IGlkOiB0aGlzLml0ZW1JZCA/PyAnJywgdGFyZ2V0UmVzdWx0U2V0OiB0aGlzLnJlc3VsdFNldCA/PyAnJyB9KSk7XG4gICAgdGhpcy5oaWRlKCk7XG4gIH1cblxuICBkZXRhaWwoKSB7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChEYXNoYm9hcmRBY3Rpb25zLmRldGFpbCh7IGlkczogW3RoaXMuaXRlbUlkID8/ICcnXSB9KSk7XG4gICAgdGhpcy5oaWRlKCk7XG4gIH1cblxuICBzZWxlY3Rpb25JbnZlcnQoKSB7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChEYXNoYm9hcmRBY3Rpb25zLmludmVydFNlbGVjdGlvbigpKTtcbiAgICB0aGlzLmhpZGUoKTtcbiAgfVxuXG4gIGZseWluZ0RldGFpbCgpIHtcbiAgICB0aGlzLmRldGFpbE1hbmlmZXN0Lm9wdGlvbnMuaXRlbUlkcyA9IFt0aGlzLml0ZW1JZCA/PyAnJ107XG4gICAgdGhpcy5vdmVybGF5RGV0YWlsUmVmID0gdGhpcy5vdmVybGF5LmNyZWF0ZShcbiAgICAgIG5ldyBPdmVybGF5Q29uZmlnKHtcbiAgICAgICAgaGFzQmFja2Ryb3A6IHRydWUsXG4gICAgICAgIHBhbmVsQ2xhc3M6IFsnby1zZXR0aW5nc19fcG9wdXAnXSxcbiAgICAgICAgYmFja2Ryb3BDbGFzczogJ2JhY2tkcm9wJ1xuICAgICAgfSlcbiAgICApO1xuICAgIHRoaXMub3ZlcmxheURldGFpbFJlZi5hdHRhY2gobmV3IFRlbXBsYXRlUG9ydGFsKHRoaXMuZGV0YWlsVGVtcGxhdGUsIHRoaXMudmlld0NvbnRhaW5lclJlZikpO1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goQ29uZmlnQWN0aW9ucy5hZGRpbmdPdmVybGF5KHsgaWQ6IHRoaXMuY29uc3RydWN0b3IubmFtZSArICctZGV0YWlsJyB9KSk7XG4gICAgdGhpcy5vdmVybGF5RGV0YWlsUmVmLmJhY2tkcm9wQ2xpY2soKS5zdWJzY3JpYmUoKCkgPT4gdGhpcy5oaWRlRGV0YWlsKCkpO1xuICAgIHRoaXMuaGlkZSgpO1xuICB9XG5cbiAgaGlkZURldGFpbCgpIHtcbiAgICB0aGlzLm92ZXJsYXlEZXRhaWxSZWY/LmRpc3Bvc2UoKTtcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKENvbmZpZ0FjdGlvbnMuY2xvc2VPdmVybGF5KHsgaWQ6IHRoaXMuY29uc3RydWN0b3IubmFtZSArICctZGV0YWlsJyB9KSk7XG4gIH1cbn1cbiIsIjxuZy10ZW1wbGF0ZSAjdGVtcGxhdGU+XG4gIDx1bCBjbGFzcz1cIm0tY29udGV4dC1tZW51X19saXN0XCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiEhaXRlbUlkXCI+XG4gICAgICA8bGkgY2xhc3M9XCJtLWNvbnRleHQtbWVudV9fbGlzdF9faXRlbVwiPlxuICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImEtYnRuIC1saW5rLWxpa2VcIiAoY2xpY2spPVwic2VsZWN0aW9uQWRkT3JSZW1vdmUoKVwiPlxuICAgICAgICAgIHt7ICgoaXNTZWxlY3RlZCQgfCBhc3luYykgPyAnQHByeS5jb250ZXh0LnJlbW92ZScgOiAnQHByeS5jb250ZXh0LmFkZCcpIHwgaTE4biB9fVxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvbGk+XG4gICAgICA8bGkgY2xhc3M9XCJtLWNvbnRleHQtbWVudV9fbGlzdF9faXRlbVwiPlxuICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImEtYnRuIC1saW5rLWxpa2VcIiAoY2xpY2spPVwic2VsZWN0aW9uSW52ZXJ0KClcIj5cbiAgICAgICAgICB7eyAnQHByeS5jb250ZXh0LmludmVydCcgfCBpMThuIH19XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9saT5cbiAgICAgIDxsaSBjbGFzcz1cIm0tY29udGV4dC1tZW51X19saXN0X19pdGVtXCIgKm5nSWY9XCIhIXJlc3VsdFNldFwiPlxuICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImEtYnRuIC1saW5rLWxpa2VcIiAoY2xpY2spPVwicHJveGltaXR5KClcIiAqbmdJZj1cIiEhcmVzdWx0U2V0XCI+XG4gICAgICAgICAge3sgJ0BwcnkuY29udGV4dC5wcm94aW1pdHknIHwgaTE4biB9fVxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvbGk+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNNb2R1bGVMb2FkZWRbJ2dyYXBoJ11cIj5cbiAgICAgICAgPGxpIGNsYXNzPVwibS1jb250ZXh0LW1lbnVfX2xpc3RfX2l0ZW1cIj5cbiAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImEtYnRuIC1saW5rLWxpa2VcIiAoY2xpY2spPVwiZXhwbG9yZSgpXCI+XG4gICAgICAgICAgICB7eyAnQHByeS5jb250ZXh0LmV4cGxvcmUnIHwgaTE4biB9fVxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2xpPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNNb2R1bGVMb2FkZWRbJ2RldGFpbCddXCI+XG4gICAgICAgIDxsaSBjbGFzcz1cIm0tY29udGV4dC1tZW51X19saXN0X19pdGVtXCI+XG4gICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJhLWJ0biAtbGluay1saWtlXCIgKGNsaWNrKT1cImRldGFpbCgpXCI+XG4gICAgICAgICAgICB7eyAnQHByeS5jb250ZXh0LmRldGFpbCcgfCBpMThuIH19XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvbGk+XG4gICAgICAgIDxsaSBjbGFzcz1cIm0tY29udGV4dC1tZW51X19saXN0X19pdGVtXCI+XG4gICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJhLWJ0biAtbGluay1saWtlXCIgKGNsaWNrKT1cImZseWluZ0RldGFpbCgpXCI+XG4gICAgICAgICAgICB7eyAnQHByeS5jb250ZXh0LmZseWluZ0RldGFpbCcgfCBpMThuIH19XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvbGk+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDxuZy1jb250YWluZXIgKnByeUFjY2Vzcz1cInsgbW9kdWxlOiAnZGFzaGJvYXJkJywgcGFnZTogJ2Rhc2hib2FyZCcsIGFjdGlvbjogJ2VkaXRfb2JqZWN0JyB9XCI+XG4gICAgICAgIDxsaSBjbGFzcz1cIm0tY29udGV4dC1tZW51X19saXN0X19pdGVtXCI+XG4gICAgICAgICAgPHByeS1vYmplY3QtY3JlYXRpb25cbiAgICAgICAgICAgIChjbG9zZWQpPVwiaGlkZSgpXCJcbiAgICAgICAgICAgIFtsaW5rXT1cInRydWVcIlxuICAgICAgICAgICAgW29iamVjdF09XCJmYWxzZVwiXG4gICAgICAgICAgICBbbWVudV09XCJ0cnVlXCJcbiAgICAgICAgICAgICpuZ0lmPVwiKHNlbGVjdGVkSXRlbXNJZHM/Lmxlbmd0aCA/PyAwKSA+IDBcIlxuICAgICAgICAgID48L3ByeS1vYmplY3QtY3JlYXRpb24+XG4gICAgICAgICAgPHByeS1vYmplY3QtY3JlYXRpb24gKGNsb3NlZCk9XCJoaWRlKClcIiBbbGlua109XCJ0cnVlXCIgW29iamVjdF09XCJ0cnVlXCIgW21lbnVdPVwidHJ1ZVwiPjwvcHJ5LW9iamVjdC1jcmVhdGlvbj5cbiAgICAgICAgPC9saT5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy1jb250YWluZXIgKnByeUFjY2Vzcz1cInsgbW9kdWxlOiAnZGFzaGJvYXJkJywgcGFnZTogJ2Rhc2hib2FyZCcsIGFjdGlvbjogJ2VkaXRfb2JqZWN0JyB9XCI+XG4gICAgICA8bGkgY2xhc3M9XCJtLWNvbnRleHQtbWVudV9fbGlzdF9faXRlbVwiPlxuICAgICAgICA8cHJ5LW9iamVjdC1jcmVhdGlvbiAoY2xvc2VkKT1cImhpZGUoKVwiIFtvYmplY3RdPVwidHJ1ZVwiIFttZW51XT1cInRydWVcIj48L3ByeS1vYmplY3QtY3JlYXRpb24+XG4gICAgICA8L2xpPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L3VsPlxuPC9uZy10ZW1wbGF0ZT5cbjxuZy10ZW1wbGF0ZSAjZGV0YWlsVGVtcGxhdGU+XG4gIDxkaXYgY2xhc3M9XCJvLXNldHRpbmdzX19wb3B1cF9faGVhZGVyXCI+XG4gICAgPGgyIGNsYXNzPVwiYS1oMlwiPnt7ICdAcHJ5LmNvbnRleHQuZmx5aW5nRGV0YWlsJyB8IGkxOG4gfX08L2gyPlxuICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJoaWRlRGV0YWlsKClcIiBjbGFzcz1cImEtYnRuIGEtYnRuLS1pY29uLW9ubHkgLWNsb3NlXCI+XG4gICAgICA8cHJ5LWljb24gaWNvblN2Zz1cImNsb3NlXCI+PC9wcnktaWNvbj5cbiAgICAgIDxzcGFuIGNsYXNzPVwidS12aXN1YWxseS1oaWRkZW5cIj57eyAnQHByeS5hY3Rpb24uY2xvc2UnIHwgaTE4biB9fTwvc3Bhbj5cbiAgICA8L2J1dHRvbj5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJvLXNldHRpbmdzX19wb3B1cF9fY29udGVudFwiPlxuICAgIDxwcnktd2lkZ2V0LWluc3RhbmNpYXRvciBbc3RhdGljTWFuaWZlc3RdPVwiZGV0YWlsTWFuaWZlc3RcIj48L3ByeS13aWRnZXQtaW5zdGFuY2lhdG9yPlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cIm8tc2V0dGluZ3NfX3BvcHVwX19mb290ZXJcIj5cbiAgICA8YnV0dG9uIChjbGljayk9XCJoaWRlRGV0YWlsKClcIiBjbGFzcz1cImEtYnRuIGEtYnRuLS1wcmltYXJ5XCI+XG4gICAgICB7eyAnQHByeS5hY3Rpb24uY2xvc2UnIHwgaTE4biB9fVxuICAgIDwvYnV0dG9uPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
133
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC1tZW51LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Byb3ZvbHkvZGFzaGJvYXJkL2xpYi9kYXNoYm9hcmQvY29tcG9uZW50cy9jb250ZXh0LW1lbnUvY29udGV4dC1tZW51LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Byb3ZvbHkvZGFzaGJvYXJkL2xpYi9kYXNoYm9hcmQvY29tcG9uZW50cy9jb250ZXh0LW1lbnUvY29udGV4dC1tZW51LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBVyxhQUFhLEVBQWMsTUFBTSxzQkFBc0IsQ0FBQztBQUMxRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDckQsT0FBTyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFvQixNQUFNLGVBQWUsQ0FBQztBQUVwRixPQUFPLEVBQUUsYUFBYSxFQUFFLEdBQUcsRUFBYyxNQUFNLE1BQU0sQ0FBQztBQUN0RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDaEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHVEQUF1RCxDQUFDO0FBQzNGLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHlEQUF5RCxDQUFDO0FBQy9GLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDOzs7Ozs7Ozs7OztBQU94RSxNQUFNLE9BQU8sb0JBQXFCLFNBQVEsd0JBQXdCO0lBd0JoRSxZQUNV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QztJQUM3RixDQUFDOzhHQXZJVSxvQkFBb0I7a0dBQXBCLG9CQUFvQix5SUFhQSxXQUFXLDJHQUVMLFdBQVcsb0RDakNsRCxnNEdBNEVBOzsyRkQxRGEsb0JBQW9CO2tCQUpoQyxTQUFTOytCQUNFLGtCQUFrQjtvTEFnQmtCLFFBQVE7c0JBQXJELFNBQVM7dUJBQUMsVUFBVSxFQUFFLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRTtnQkFFUSxjQUFjO3NCQUFqRSxTQUFTO3VCQUFDLGdCQUFnQixFQUFFLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE92ZXJsYXksIE92ZXJsYXlDb25maWcsIE92ZXJsYXlSZWYgfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQgeyBUZW1wbGF0ZVBvcnRhbCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wb3J0YWwnO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBUZW1wbGF0ZVJlZiwgVmlld0NoaWxkLCBWaWV3Q29udGFpbmVyUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdG9yZSB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcbmltcG9ydCB7IGNvbWJpbmVMYXRlc3QsIG1hcCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgd2l0aExhdGVzdEZyb20gfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBDb25maWdBY3Rpb25zIH0gZnJvbSAnLi4vLi4vLi4vY29yZS9zdG9yZS9jb25maWcvY29uZmlnLmFjdGlvbnMnO1xuaW1wb3J0IHsgQ29udGV4dE1lbnVBY3Rpb25zIH0gZnJvbSAnLi4vLi4vLi4vY29yZS9zdG9yZS9jb250ZXh0LW1lbnUvY29udGV4dC1tZW51LmFjdGlvbnMnO1xuaW1wb3J0IHsgQ29udGV4dE1lbnVTZWxlY3RvcnMgfSBmcm9tICcuLi8uLi8uLi9jb3JlL3N0b3JlL2NvbnRleHQtbWVudS9jb250ZXh0LW1lbnUuc2VsZWN0b3JzJztcbmltcG9ydCB7IERhc2hib2FyZEFjdGlvbnMgfSBmcm9tICcuLi8uLi9zdG9yZS9kYXNoYm9hcmQuYWN0aW9ucyc7XG5pbXBvcnQgeyBEYXNoYm9hcmRTZWxlY3RvcnMgfSBmcm9tICcuLi8uLi9zdG9yZS9kYXNoYm9hcmQuc2VsZWN0b3JzJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbm5lckRpcmVjdGl2ZSB9IGZyb20gJy4uL3N1YnNjcmlwdGlvbm5lci5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgV2lkZ2V0RmFjdG9yeVNlcnZpY2UgfSBmcm9tICcuLi93aWRnZXRzL3dpZGdldC1pbnN0YW5jaWF0b3Ivd2lkZ2V0LWZhY3Rvcnkuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ByeS1jb250ZXh0LW1lbnUnLFxuICB0ZW1wbGF0ZVVybDogJy4vY29udGV4dC1tZW51LmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBDb250ZXh0TWVudUNvbXBvbmVudCBleHRlbmRzIFN1YnNjcmlwdGlvbm5lckRpcmVjdGl2ZSB7XG4gIGFsbG93T2JqZWN0Q3JlYXRpb24kOiBPYnNlcnZhYmxlPGJvb2xlYW4gfCB1bmRlZmluZWQ+O1xuICBvcGVuZWQkOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICBwb3NpdGlvbiQ6IE9ic2VydmFibGU8eyBjbGllbnRYOiBudW1iZXI7IGNsaWVudFk6IG51bWJlciB9PjtcbiAgaXRlbUlkJDogT2JzZXJ2YWJsZTxzdHJpbmc+O1xuICBpdGVtSWQ/OiBzdHJpbmc7XG4gIGlzU2VsZWN0ZWQkOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICByZXN1bHRTZXQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgc2VsZWN0ZWRJZHMkOiBPYnNlcnZhYmxlPHN0cmluZ1tdPjtcbiAgc2VsZWN0ZWRJdGVtc0lkcz86IHN0cmluZ1tdO1xuICBmcm9tPzogc3RyaW5nO1xuICBjb29yZGluYXRlcz86IG51bWJlcltdO1xuICBwcml2YXRlIG92ZXJsYXlSZWY/OiBPdmVybGF5UmVmO1xuICBAVmlld0NoaWxkKCd0ZW1wbGF0ZScsIHsgcmVhZDogVGVtcGxhdGVSZWYgfSkgdGVtcGxhdGUhOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICBwcml2YXRlIG92ZXJsYXlEZXRhaWxSZWY/OiBPdmVybGF5UmVmO1xuICBAVmlld0NoaWxkKCdkZXRhaWxUZW1wbGF0ZScsIHsgcmVhZDogVGVtcGxhdGVSZWYgfSkgZGV0YWlsVGVtcGxhdGUhOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICBkZXRhaWxNYW5pZmVzdCA9IHtcbiAgICB0eXBlOiAnZGV0YWlsJyxcbiAgICBoZWFkZXI6IGZhbHNlLFxuICAgIGxheW91dDogeyB4OiAxLCB5OiAxLCB3aWR0aDogMSwgaGVpZ2h0OiAxIH0sXG4gICAgb3B0aW9uczogeyBpdGVtSWRzOiBbXSBhcyBzdHJpbmdbXSB9XG4gIH07XG4gIGlzTW9kdWxlTG9hZGVkOiB7IFt0eXBlOiBzdHJpbmddOiBib29sZWFuIH0gPSB7fTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHN0b3JlOiBTdG9yZSxcbiAgICBwcml2YXRlIG92ZXJsYXk6IE92ZXJsYXksXG4gICAgcHJpdmF0ZSB2aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmLFxuICAgIHB1YmxpYyB3aWRnZXRGYWN0b3J5U2VydmljZTogV2lkZ2V0RmFjdG9yeVNlcnZpY2VcbiAgKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLmFsbG93T2JqZWN0Q3JlYXRpb24kID0gdGhpcy5zdG9yZS5zZWxlY3QoQ29udGV4dE1lbnVTZWxlY3RvcnMuYWxsb3dPYmplY3RDcmVhdGlvbik7XG4gICAgdGhpcy5vcGVuZWQkID0gdGhpcy5zdG9yZS5zZWxlY3QoQ29udGV4dE1lbnVTZWxlY3RvcnMub3BlbmVkKTtcbiAgICB0aGlzLnBvc2l0aW9uJCA9IHRoaXMuc3RvcmUuc2VsZWN0KENvbnRleHRNZW51U2VsZWN0b3JzLnBvc2l0aW9uKTtcbiAgICB0aGlzLml0ZW1JZCQgPSB0aGlzLnN0b3JlLnNlbGVjdChDb250ZXh0TWVudVNlbGVjdG9ycy5pdGVtSWQpO1xuICAgIHRoaXMuc2VsZWN0ZWRJZHMkID0gdGhpcy5zdG9yZS5zZWxlY3QoRGFzaGJvYXJkU2VsZWN0b3JzLnNlbGVjdGVkSXRlbUlkcyk7XG4gICAgdGhpcy5pc1NlbGVjdGVkJCA9IGNvbWJpbmVMYXRlc3QoW3RoaXMuc2VsZWN0ZWRJZHMkLCB0aGlzLml0ZW1JZCRdKS5waXBlKFxuICAgICAgbWFwKChbaXRlbUlkcywgaXRlbUlkXSkgPT4gaXRlbUlkcy5pbmNsdWRlcyhpdGVtSWQpKVxuICAgICk7XG5cbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuYWRkKHRoaXMuc3RvcmUuc2VsZWN0KENvbnRleHRNZW51U2VsZWN0b3JzLmZyb20pLnN1YnNjcmliZSgoZnJvbSkgPT4gKHRoaXMuZnJvbSA9IGZyb20pKSk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmFkZChcbiAgICAgIHRoaXMuc3RvcmUuc2VsZWN0KENvbnRleHRNZW51U2VsZWN0b3JzLmNvb3JkaW5hdGVzKS5zdWJzY3JpYmUoKGNvb3JkaW5hdGVzKSA9PiAodGhpcy5jb29yZGluYXRlcyA9IGNvb3JkaW5hdGVzKSlcbiAgICApO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5hZGQodGhpcy5pdGVtSWQkLnN1YnNjcmliZSgoaXRlbUlkKSA9PiAodGhpcy5pdGVtSWQgPSBpdGVtSWQpKSk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmFkZCh0aGlzLnNlbGVjdGVkSWRzJC5zdWJzY3JpYmUoKGl0ZW1JZHMpID0+ICh0aGlzLnNlbGVjdGVkSXRlbXNJZHMgPSBpdGVtSWRzKSkpO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICB0aGlzLnN0b3JlLnNlbGVjdChDb250ZXh0TWVudVNlbGVjdG9ycy5yZXN1bHRTZXQpLnN1YnNjcmliZSgocmVzdWx0U2V0KSA9PiAodGhpcy5yZXN1bHRTZXQgPSByZXN1bHRTZXQpKVxuICAgICk7XG5cbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuYWRkKFxuICAgICAgdGhpcy5vcGVuZWQkLnBpcGUod2l0aExhdGVzdEZyb20odGhpcy5wb3NpdGlvbiQpKS5zdWJzY3JpYmUoKFtvcGVuZWQsIHBvc2l0aW9uXSkgPT4ge1xuICAgICAgICBpZiAob3BlbmVkKSB7XG4gICAgICAgICAgdGhpcy5vcGVuV2l0aFRlbXBsYXRlKHBvc2l0aW9uKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLm92ZXJsYXlSZWY/LmRpc3Bvc2UoKTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICApO1xuICAgIHRoaXMud2lkZ2V0RmFjdG9yeVNlcnZpY2UuaXNNb2R1bGVMb2FkZWQoJ2RldGFpbCcpLnN1YnNjcmliZSgobG9hZGVkKSA9PiAodGhpcy5pc01vZHVsZUxvYWRlZFsnZGV0YWlsJ10gPSBsb2FkZWQpKTtcbiAgICB0aGlzLndpZGdldEZhY3RvcnlTZXJ2aWNlLmlzTW9kdWxlTG9hZGVkKCdncmFwaCcpLnN1YnNjcmliZSgobG9hZGVkKSA9PiAodGhpcy5pc01vZHVsZUxvYWRlZFsnZ3JhcGgnXSA9IGxvYWRlZCkpO1xuICB9XG5cbiAgb3BlbldpdGhUZW1wbGF0ZShwb3NpdGlvbjogYW55KSB7XG4gICAgaWYgKHRoaXMuZnJvbSAhPT0gJ21hcCcpIHtcbiAgICAgIHRoaXMub3ZlcmxheVJlZiA9IHRoaXMub3ZlcmxheS5jcmVhdGUoXG4gICAgICAgIG5ldyBPdmVybGF5Q29uZmlnKHtcbiAgICAgICAgICBoYXNCYWNrZHJvcDogdHJ1ZSxcbiAgICAgICAgICBwYW5lbENsYXNzOiBbJ20tY29udGV4dC1tZW51J10sXG4gICAgICAgICAgYmFja2Ryb3BDbGFzczogJ2JhY2tkcm9wJ1xuICAgICAgICB9KVxuICAgICAgKTtcbiAgICAgIHRoaXMub3ZlcmxheVJlZi5hdHRhY2gobmV3IFRlbXBsYXRlUG9ydGFsKHRoaXMudGVtcGxhdGUsIHRoaXMudmlld0NvbnRhaW5lclJlZikpO1xuICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChDb25maWdBY3Rpb25zLmFkZGluZ092ZXJsYXkoeyBpZDogdGhpcy5jb25zdHJ1Y3Rvci5uYW1lIH0pKTtcbiAgICAgIHRoaXMub3ZlcmxheVJlZi5iYWNrZHJvcENsaWNrKCkuc3Vic2NyaWJlKCgpID0+IHRoaXMuaGlkZSgpKTtcbiAgICAgIGNvbnN0IGNvbnRleHRNZW51ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignZGl2Lm0tY29udGV4dC1tZW51JykgYXMgSFRNTERpdkVsZW1lbnQ7XG4gICAgICBpZiAoISFjb250ZXh0TWVudSkge1xuICAgICAgICBjb250ZXh0TWVudS5zdHlsZS5sZWZ0ID1cbiAgICAgICAgICBNYXRoLm1heCgwLCBNYXRoLm1pbih3aW5kb3cuaW5uZXJXaWR0aCAtIGNvbnRleHRNZW51LmNsaWVudFdpZHRoLCBwb3NpdGlvbi5jbGllbnRYIC0gMTApKSArICdweCc7XG4gICAgICAgIGNvbnRleHRNZW51LnN0eWxlLnRvcCA9XG4gICAgICAgICAgTWF0aC5tYXgoMCwgTWF0aC5taW4od2luZG93LmlubmVySGVpZ2h0IC0gY29udGV4dE1lbnUuY2xpZW50SGVpZ2h0LCBwb3NpdGlvbi5jbGllbnRZIC0gMTApKSArICdweCc7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaGlkZSgpO1xuICAgIH1cbiAgfVxuXG4gIGhpZGUoKSB7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChDb250ZXh0TWVudUFjdGlvbnMuaGlkZSgpKTtcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKENvbmZpZ0FjdGlvbnMuY2xvc2VPdmVybGF5KHsgaWQ6IHRoaXMuY29uc3RydWN0b3IubmFtZSB9KSk7XG4gIH1cblxuICBzZWxlY3Rpb25BZGRPclJlbW92ZSgpIHtcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKERhc2hib2FyZEFjdGlvbnMuc2VsZWN0KHsgaWQ6IHRoaXMuaXRlbUlkID8/ICcnLCBjdW11bGF0aXZlOiB0cnVlIH0pKTtcbiAgICB0aGlzLmhpZGUoKTtcbiAgfVxuXG4gIGV4cGxvcmUoKSB7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChEYXNoYm9hcmRBY3Rpb25zLmV4cGxvcmUoeyBpZDogdGhpcy5pdGVtSWQgPz8gJycgfSkpO1xuICAgIHRoaXMuaGlkZSgpO1xuICB9XG5cbiAgcHJveGltaXR5KCkge1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goRGFzaGJvYXJkQWN0aW9ucy5wcm94aW1pdHkoeyBpZDogdGhpcy5pdGVtSWQgPz8gJycsIHRhcmdldFJlc3VsdFNldDogdGhpcy5yZXN1bHRTZXQgPz8gJycgfSkpO1xuICAgIHRoaXMuaGlkZSgpO1xuICB9XG5cbiAgZGV0YWlsKCkge1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goRGFzaGJvYXJkQWN0aW9ucy5kZXRhaWwoeyBpZHM6IFt0aGlzLml0ZW1JZCA/PyAnJ10gfSkpO1xuICAgIHRoaXMuaGlkZSgpO1xuICB9XG5cbiAgc2VsZWN0aW9uSW52ZXJ0KCkge1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goRGFzaGJvYXJkQWN0aW9ucy5pbnZlcnRTZWxlY3Rpb24oKSk7XG4gICAgdGhpcy5oaWRlKCk7XG4gIH1cblxuICBmbHlpbmdEZXRhaWwoKSB7XG4gICAgdGhpcy5kZXRhaWxNYW5pZmVzdC5vcHRpb25zLml0ZW1JZHMgPSBbdGhpcy5pdGVtSWQgPz8gJyddO1xuICAgIHRoaXMub3ZlcmxheURldGFpbFJlZiA9IHRoaXMub3ZlcmxheS5jcmVhdGUoXG4gICAgICBuZXcgT3ZlcmxheUNvbmZpZyh7XG4gICAgICAgIGhhc0JhY2tkcm9wOiB0cnVlLFxuICAgICAgICBwYW5lbENsYXNzOiBbJ28tc2V0dGluZ3NfX3BvcHVwJ10sXG4gICAgICAgIGJhY2tkcm9wQ2xhc3M6ICdiYWNrZHJvcCdcbiAgICAgIH0pXG4gICAgKTtcbiAgICB0aGlzLm92ZXJsYXlEZXRhaWxSZWYuYXR0YWNoKG5ldyBUZW1wbGF0ZVBvcnRhbCh0aGlzLmRldGFpbFRlbXBsYXRlLCB0aGlzLnZpZXdDb250YWluZXJSZWYpKTtcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKENvbmZpZ0FjdGlvbnMuYWRkaW5nT3ZlcmxheSh7IGlkOiB0aGlzLmNvbnN0cnVjdG9yLm5hbWUgKyAnLWRldGFpbCcgfSkpO1xuICAgIHRoaXMub3ZlcmxheURldGFpbFJlZi5iYWNrZHJvcENsaWNrKCkuc3Vic2NyaWJlKCgpID0+IHRoaXMuaGlkZURldGFpbCgpKTtcbiAgICB0aGlzLmhpZGUoKTtcbiAgfVxuXG4gIGhpZGVEZXRhaWwoKSB7XG4gICAgdGhpcy5vdmVybGF5RGV0YWlsUmVmPy5kaXNwb3NlKCk7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChDb25maWdBY3Rpb25zLmNsb3NlT3ZlcmxheSh7IGlkOiB0aGlzLmNvbnN0cnVjdG9yLm5hbWUgKyAnLWRldGFpbCcgfSkpO1xuICB9XG59XG4iLCI8bmctdGVtcGxhdGUgI3RlbXBsYXRlPlxuICA8dWwgY2xhc3M9XCJtLWNvbnRleHQtbWVudV9fbGlzdFwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhIWl0ZW1JZFwiPlxuICAgICAgPGxpIGNsYXNzPVwibS1jb250ZXh0LW1lbnVfX2xpc3RfX2l0ZW1cIj5cbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJhLWJ0biAtbGluay1saWtlXCIgKGNsaWNrKT1cInNlbGVjdGlvbkFkZE9yUmVtb3ZlKClcIj5cbiAgICAgICAgICB7eyAoKGlzU2VsZWN0ZWQkIHwgYXN5bmMpID8gJ0BwcnkuY29udGV4dC5yZW1vdmUnIDogJ0BwcnkuY29udGV4dC5hZGQnKSB8IGkxOG4gfX1cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2xpPlxuICAgICAgPGxpIGNsYXNzPVwibS1jb250ZXh0LW1lbnVfX2xpc3RfX2l0ZW1cIj5cbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJhLWJ0biAtbGluay1saWtlXCIgKGNsaWNrKT1cInNlbGVjdGlvbkludmVydCgpXCI+XG4gICAgICAgICAge3sgJ0BwcnkuY29udGV4dC5pbnZlcnQnIHwgaTE4biB9fVxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvbGk+XG4gICAgICA8bGkgY2xhc3M9XCJtLWNvbnRleHQtbWVudV9fbGlzdF9faXRlbVwiICpuZ0lmPVwiISFyZXN1bHRTZXRcIj5cbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJhLWJ0biAtbGluay1saWtlXCIgKGNsaWNrKT1cInByb3hpbWl0eSgpXCIgKm5nSWY9XCIhIXJlc3VsdFNldFwiPlxuICAgICAgICAgIHt7ICdAcHJ5LmNvbnRleHQucHJveGltaXR5JyB8IGkxOG4gfX1cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2xpPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzTW9kdWxlTG9hZGVkWydncmFwaCddXCI+XG4gICAgICAgIDxsaSBjbGFzcz1cIm0tY29udGV4dC1tZW51X19saXN0X19pdGVtXCI+XG4gICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJhLWJ0biAtbGluay1saWtlXCIgKGNsaWNrKT1cImV4cGxvcmUoKVwiPlxuICAgICAgICAgICAge3sgJ0BwcnkuY29udGV4dC5leHBsb3JlJyB8IGkxOG4gfX1cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9saT5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzTW9kdWxlTG9hZGVkWydkZXRhaWwnXVwiPlxuICAgICAgICA8bGkgY2xhc3M9XCJtLWNvbnRleHQtbWVudV9fbGlzdF9faXRlbVwiPlxuICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYS1idG4gLWxpbmstbGlrZVwiIChjbGljayk9XCJkZXRhaWwoKVwiPlxuICAgICAgICAgICAge3sgJ0BwcnkuY29udGV4dC5kZXRhaWwnIHwgaTE4biB9fVxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2xpPlxuICAgICAgICA8bGkgY2xhc3M9XCJtLWNvbnRleHQtbWVudV9fbGlzdF9faXRlbVwiPlxuICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYS1idG4gLWxpbmstbGlrZVwiIChjbGljayk9XCJmbHlpbmdEZXRhaWwoKVwiPlxuICAgICAgICAgICAge3sgJ0BwcnkuY29udGV4dC5mbHlpbmdEZXRhaWwnIHwgaTE4biB9fVxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2xpPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8bmctY29udGFpbmVyICpwcnlBY2Nlc3M9XCJ7IG1vZHVsZTogJ2Rhc2hib2FyZCcsIHBhZ2U6ICdkYXNoYm9hcmQnLCBhY3Rpb246ICdlZGl0X29iamVjdCcgfVwiPlxuICAgICAgICA8bGkgY2xhc3M9XCJtLWNvbnRleHQtbWVudV9fbGlzdF9faXRlbVwiPlxuICAgICAgICAgIDxwcnktb2JqZWN0LWNyZWF0aW9uXG4gICAgICAgICAgICAoY2xvc2VkKT1cImhpZGUoKVwiXG4gICAgICAgICAgICBbbGlua109XCJ0cnVlXCJcbiAgICAgICAgICAgIFtvYmplY3RdPVwiZmFsc2VcIlxuICAgICAgICAgICAgW21lbnVdPVwidHJ1ZVwiXG4gICAgICAgICAgICAqbmdJZj1cIihzZWxlY3RlZEl0ZW1zSWRzPy5sZW5ndGggPz8gMCkgPiAwXCJcbiAgICAgICAgICA+PC9wcnktb2JqZWN0LWNyZWF0aW9uPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJhbGxvd09iamVjdENyZWF0aW9uJCB8IGFzeW5jXCI+XG4gICAgICAgICAgICA8cHJ5LW9iamVjdC1jcmVhdGlvbiAoY2xvc2VkKT1cImhpZGUoKVwiIFtsaW5rXT1cInRydWVcIiBbb2JqZWN0XT1cInRydWVcIiBbbWVudV09XCJ0cnVlXCI+PC9wcnktb2JqZWN0LWNyZWF0aW9uPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2xpPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLWNvbnRhaW5lciAqcHJ5QWNjZXNzPVwieyBtb2R1bGU6ICdkYXNoYm9hcmQnLCBwYWdlOiAnZGFzaGJvYXJkJywgYWN0aW9uOiAnZWRpdF9vYmplY3QnIH1cIj5cbiAgICAgIDxsaSAqbmdJZj1cImFsbG93T2JqZWN0Q3JlYXRpb24kfCBhc3luY1wiIGNsYXNzPVwibS1jb250ZXh0LW1lbnVfX2xpc3RfX2l0ZW1cIj5cbiAgICAgICAgPHByeS1vYmplY3QtY3JlYXRpb24gKGNsb3NlZCk9XCJoaWRlKClcIiBbb2JqZWN0XT1cInRydWVcIiBbbWVudV09XCJ0cnVlXCI+PC9wcnktb2JqZWN0LWNyZWF0aW9uPlxuICAgICAgPC9saT5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC91bD5cbjwvbmctdGVtcGxhdGU+XG48bmctdGVtcGxhdGUgI2RldGFpbFRlbXBsYXRlPlxuICA8ZGl2IGNsYXNzPVwiby1zZXR0aW5nc19fcG9wdXBfX2hlYWRlclwiPlxuICAgIDxoMiBjbGFzcz1cImEtaDJcIj57eyAnQHByeS5jb250ZXh0LmZseWluZ0RldGFpbCcgfCBpMThuIH19PC9oMj5cbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwiaGlkZURldGFpbCgpXCIgY2xhc3M9XCJhLWJ0biBhLWJ0bi0taWNvbi1vbmx5IC1jbG9zZVwiPlxuICAgICAgPHByeS1pY29uIGljb25Tdmc9XCJjbG9zZVwiPjwvcHJ5LWljb24+XG4gICAgICA8c3BhbiBjbGFzcz1cInUtdmlzdWFsbHktaGlkZGVuXCI+e3sgJ0BwcnkuYWN0aW9uLmNsb3NlJyB8IGkxOG4gfX08L3NwYW4+XG4gICAgPC9idXR0b24+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiby1zZXR0aW5nc19fcG9wdXBfX2NvbnRlbnRcIj5cbiAgICA8cHJ5LXdpZGdldC1pbnN0YW5jaWF0b3IgW3N0YXRpY01hbmlmZXN0XT1cImRldGFpbE1hbmlmZXN0XCI+PC9wcnktd2lkZ2V0LWluc3RhbmNpYXRvcj5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJvLXNldHRpbmdzX19wb3B1cF9fZm9vdGVyXCI+XG4gICAgPGJ1dHRvbiAoY2xpY2spPVwiaGlkZURldGFpbCgpXCIgY2xhc3M9XCJhLWJ0biBhLWJ0bi0tcHJpbWFyeVwiPlxuICAgICAge3sgJ0BwcnkuYWN0aW9uLmNsb3NlJyB8IGkxOG4gfX1cbiAgICA8L2J1dHRvbj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19
@@ -264,4 +264,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImpor
264
264
  }], closed: [{
265
265
  type: Output
266
266
  }] } });
267
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JqZWN0LWVkaXRpb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJvdm9seS9kYXNoYm9hcmQvbGliL2Rhc2hib2FyZC9jb21wb25lbnRzL2NvbnRleHQtbWVudS9vYmplY3QtZWRpdGlvbi9vYmplY3QtZWRpdGlvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcm92b2x5L2Rhc2hib2FyZC9saWIvZGFzaGJvYXJkL2NvbXBvbmVudHMvY29udGV4dC1tZW51L29iamVjdC1lZGl0aW9uL29iamVjdC1lZGl0aW9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBVyxhQUFhLEVBQWMsTUFBTSxzQkFBc0IsQ0FBQztBQUMxRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDckQsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFvQixNQUFNLGVBQWUsQ0FBQztBQUVqSCxPQUFPLEVBQUUsYUFBYSxFQUFFLEdBQUcsRUFBYyxNQUFNLE1BQU0sQ0FBQztBQUN0RCxPQUFPLEVBQUUsRUFBRSxJQUFJLE1BQU0sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUdwQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sOENBQThDLENBQUM7QUFDOUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQzdFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDREQUE0RCxDQUFDO0FBQ2xHLE9BQU8sRUFBUyxTQUFTLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUNoRixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sOENBQThDLENBQUM7QUFDOUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxN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Q0FBQyxTQUFvQixFQUFFLE1BQVcsRUFBRSxJQUFZO1FBQzVELElBQUksQ0FBRSxJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUEwQixDQUFDLFFBQVEsRUFBRTtZQUNoRixJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUEwQixDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUM7U0FDbkc7YUFBTTtZQUNMLGFBQWE7WUFDWixJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUEwQixDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxNQUFNLENBQUM7U0FDN0Y7SUFDSCxDQUFDO0lBRUQsZUFBZTtRQUNiLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQ25DLENBQUM7OEdBaFFVLHlCQUF5QjtrR0FBekIseUJBQXlCLHFPQU1MLFdBQVcsb0RDakM1Qyw4alJBbU1BOzsyRkR4S2EseUJBQXlCO2tCQUpyQyxTQUFTOytCQUNFLHFCQUFxQjtpSkFJdEIsSUFBSTtzQkFBWixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBR3dDLFFBQVE7c0JBQXJELFNBQVM7dUJBQUMsVUFBVSxFQUFFLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRTtnQkFPbEMsTUFBTTtzQkFBZixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT3ZlcmxheSwgT3ZlcmxheUNvbmZpZywgT3ZlcmxheVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcbmltcG9ydCB7IFRlbXBsYXRlUG9ydGFsIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCc7XG5pbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCwgVGVtcGxhdGVSZWYsIFZpZXdDaGlsZCwgVmlld0NvbnRhaW5lclJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3RvcmUgfSBmcm9tICdAbmdyeC9zdG9yZSc7XG5pbXBvcnQgeyBjb21iaW5lTGF0ZXN0LCBtYXAsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHY0IGFzIHV1aWR2NCB9IGZyb20gJ3V1aWQnO1xuaW1wb3J0IHsgQXR0cmlidXRlTXVsdGlwbGVWYWx1ZSwgQXR0cmlidXRlU2ltcGxlVmFsdWUsIEl0ZW0gfSBmcm9tICcuLi8uLi8uLi8uLi9jb3JlL21vZGVsL2l0ZW0uaW50ZXJmYWNlJztcbmltcG9ydCB7IEF0dHJpYnV0ZSwgQ2xhc3MgfSBmcm9tICcuLi8uLi8uLi8uLi9jb3JlL3N0b3JlL2NsYXNzL2NsYXNzLmludGVyZmFjZSc7XG5pbXBvcnQgeyBDbGFzc1NlbGVjdG9ycyB9IGZyb20gJy4uLy4uLy4uLy4uL2NvcmUvc3RvcmUvY2xhc3MvY2xhc3Muc2VsZWN0b3JzJztcbmltcG9ydCB7IENvbmZpZ0FjdGlvbnMgfSBmcm9tICcuLi8uLi8uLi8uLi9jb3JlL3N0b3JlL2NvbmZpZy9jb25maWcuYWN0aW9ucyc7XG5pbXBvcnQgeyBDb250ZXh0TWVudVNlbGVjdG9ycyB9IGZyb20gJy4uLy4uLy4uLy4uL2NvcmUvc3RvcmUvY29udGV4dC1tZW51L2NvbnRleHQtbWVudS5zZWxlY3RvcnMnO1xuaW1wb3J0IHsgRmllbGQsIEZpZWxkVHlwZSB9IGZyb20gJy4uLy4uLy4uLy4uL2NvcmUvc3RvcmUvZmllbGQvZmllbGQuaW50ZXJmYWNlJztcbmltcG9ydCB7IEZpZWxkU2VsZWN0b3JzIH0gZnJvbSAnLi4vLi4vLi4vLi4vY29yZS9zdG9yZS9maWVsZC9maWVsZC5zZWxlY3RvcnMnO1xuaW1wb3J0IHsgSXRlbUFjdGlvbnMgfSBmcm9tICcuLi8uLi8uLi8uLi9jb3JlL3N0b3JlL2l0ZW0vaXRlbS5hY3Rpb25zJztcbmltcG9ydCB7IFJlbGF0aW9uVHlwZXNBY3Rpb25zIH0gZnJvbSAnLi4vLi4vLi4vLi4vY29yZS9zdG9yZS9yZWxhdGlvbi10eXBlcy9yZWxhdGlvbi10eXBlcy5hY3Rpb25zJztcbmltcG9ydCB7IFJlbGF0aW9uVHlwZXNTZWxlY3RvcnMgfSBmcm9tICcuLi8uLi8uLi8uLi9jb3JlL3N0b3JlL3JlbGF0aW9uLXR5cGVzL3JlbGF0aW9uLXR5cGVzLnNlbGVjdG9ycyc7XG5pbXBvcnQgeyBEYXRlVXRpbHMgfSBmcm9tICcuLi8uLi8uLi9kYXRlLXV0aWxzJztcbmltcG9ydCB7IEl0ZW1VdGlscyB9IGZyb20gJy4uLy4uLy4uL2l0ZW0tdXRpbHMnO1xuaW1wb3J0IHsgRGFzaGJvYXJkU2VsZWN0b3JzIH0gZnJvbSAnLi4vLi4vLi4vc3RvcmUvZGFzaGJvYXJkLnNlbGVjdG9ycyc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb25uZXJEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9zdWJzY3JpcHRpb25uZXIuZGlyZWN0aXZlJztcblxuZXhwb3J0IGNvbnN0IEhUVFBfT1JJR0lOX01FVEFEQVRBID0gJ19odHRwX29yaWdpbic7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ByeS1vYmplY3QtY3JlYXRpb24nLFxuICB0ZW1wbGF0ZVVybDogJy4vb2JqZWN0LWVkaXRpb24uY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIFByeU9iamVjdEVkaXRpb25Db21wb25lbnQgZXh0ZW5kcyBTdWJzY3JpcHRpb25uZXJEaXJlY3RpdmUge1xuICBASW5wdXQoKSBsaW5rOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIG9iamVjdDogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBtZW51OiBib29sZWFuID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSBvdmVybGF5UmVmPzogT3ZlcmxheVJlZjtcbiAgQFZpZXdDaGlsZCgndGVtcGxhdGUnLCB7IHJlYWQ6IFRlbXBsYXRlUmVmIH0pIHRlbXBsYXRlITogVGVtcGxhdGVSZWY8YW55PjtcbiAgaXRlbUlkJDogT2JzZXJ2YWJsZTxzdHJpbmc+O1xuICBmcm9tJDogT2JzZXJ2YWJsZTxzdHJpbmc+O1xuICBpdGVtSWQ/OiBzdHJpbmc7XG4gIGNvb3JkaW5hdGVzOiBudW1iZXJbXSB8IHVuZGVmaW5lZDtcbiAgdG1wT2JqZWN0OiBJdGVtID0gdGhpcy5uZXdPYmplY3QoKTtcbiAgZnJvbTogc3RyaW5nID0gJyc7XG4gIEBPdXRwdXQoKSBjbG9zZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIGNsYXNzZXM6IENsYXNzW10gPSBbXTtcbiAgZmllbGRzOiBGaWVsZFtdID0gW107XG4gIEZpZWxkVHlwZSA9IEZpZWxkVHlwZTtcbiAgcmVsYXRpb25zJDogT2JzZXJ2YWJsZTx7IGlkOiBzdHJpbmc7IGxhYmVsOiBzdHJpbmcgfVtdPjtcbiAgcmVsYXRpb24hOiB7IHR5cGVJZDogc3RyaW5nOyBpdGVtSWQ6IHN0cmluZyB9O1xuICBzZWxlY3RlZEl0ZW1zSWRzITogc3RyaW5nW107XG4gIFVQTE9BRF9NRVRIT0QgPSAndXBsb2FkJztcbiAgSFRUUF9PUklHSU5fTUVUSE9EID0gJ21ldGFkYXRhJztcbiAgSFRUUF9PUklHSU5fTUVUQURBVEEgPSBIVFRQX09SSUdJTl9NRVRBREFUQTtcbiAgcmF3TWV0aG9kcyA9IFtcbiAgICB7IGlkOiB0aGlzLkhUVFBfT1JJR0lOX01FVEhPRCwgbmFtZTogJ0BwcnkuYWRtaW4uZmllbGRzLnJhd01ldGhvZHMuaHR0cCcgfSxcbiAgICB7XG4gICAgICBpZDogdGhpcy5VUExPQURfTUVUSE9ELFxuICAgICAgbmFtZTogJ0BwcnkuYWRtaW4uZmllbGRzLnJhd01ldGhvZHMudXBsb2FkJ1xuICAgIH1cbiAgXTtcbiAgbWV0aG9kID0gdGhpcy5VUExPQURfTUVUSE9EO1xuICBzZWxlY3RlZERhdGVQaWNrZXI6IHN0cmluZyA9ICcnO1xuICBpbnZlcnNpb246IGJvb2xlYW4gPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIG92ZXJsYXk6IE92ZXJsYXksXG4gICAgcHJpdmF0ZSB2aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmLFxuICAgIHByaXZhdGUgc3RvcmU6IFN0b3JlXG4gICkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5pdGVtSWQkID0gdGhpcy5zdG9yZS5zZWxlY3QoQ29udGV4dE1lbnVTZWxlY3RvcnMuaXRlbUlkKTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuYWRkKFxuICAgICAgdGhpcy5zdG9yZS5zZWxlY3QoQ29udGV4dE1lbnVTZWxlY3RvcnMuY29vcmRpbmF0ZXMpLnN1YnNjcmliZSgoY29vcmRpbmF0ZXMpID0+ICh0aGlzLmNvb3JkaW5hdGVzID0gY29vcmRpbmF0ZXMpKVxuICAgICk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmFkZCh0aGlzLml0ZW1JZCQuc3Vic2NyaWJlKChpdGVtSWQpID0+ICh0aGlzLml0ZW1JZCA9IGl0ZW1JZCkpKTtcbiAgICB0aGlzLmZyb20kID0gdGhpcy5zdG9yZS5zZWxlY3QoQ29udGV4dE1lbnVTZWxlY3RvcnMuZnJvbSk7XG4gICAgdGhpcy5yZWxhdGlvbnMkID0gdGhpcy5zdG9yZVxuICAgICAgLnNlbGVjdChSZWxhdGlvblR5cGVzU2VsZWN0b3JzLnJlbGF0aW9uc1R5cGVzKVxuICAgICAgLnBpcGUobWFwKChyZWxhdGlvbnMpID0+IChyZWxhdGlvbnMgfHwgW10pLm1hcCgocmVsKSA9PiAoeyBpZDogcmVsLmlkLCBsYWJlbDogcmVsLm5hbWUgfSkpKSk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmFkZChcbiAgICAgIGNvbWJpbmVMYXRlc3QoW3RoaXMuZnJvbSQsIHRoaXMuc3RvcmUuc2VsZWN0KENsYXNzU2VsZWN0b3JzLmNsYXNzZXMpXSlcbiAgICAgICAgLnBpcGUobWFwKChbZnJvbSwgY2xhc3Nlc10pID0+IGNsYXNzZXMuZmlsdGVyKChjbGF6eikgPT4gZnJvbSAhPT0gJ21hcCcgfHwgSXRlbVV0aWxzLmhhc0xvY2F0aW9uKGNsYXp6KSkpKVxuICAgICAgICAuc3Vic2NyaWJlKChjbGFzc2VzKSA9PiAodGhpcy5jbGFzc2VzID0gY2xhc3NlcykpXG4gICAgKTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuYWRkKHRoaXMuc3RvcmUuc2VsZWN0KEZpZWxkU2VsZWN0b3JzLmZpZWxkcykuc3Vic2NyaWJlKChmaWVsZHMpID0+ICh0aGlzLmZpZWxkcyA9IGZpZWxkcykpKTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuYWRkKHRoaXMuZnJvbSQuc3Vic2NyaWJlKChmcm9tKSA9PiAodGhpcy5mcm9tID0gZnJvbSkpKTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuYWRkKFxuICAgICAgdGhpcy5zdG9yZS5zZWxlY3QoRGFzaGJvYXJkU2VsZWN0b3JzLnNlbGVjdGVkSXRlbUlkcykuc3Vic2NyaWJlKChpdGVtSWRzKSA9PiAodGhpcy5zZWxlY3RlZEl0ZW1zSWRzID0gaXRlbUlkcykpXG4gICAgKTtcbiAgfVxuXG4gIG9wZW5DcmVhdGVPYmplY3RQYW5lbCgkZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICB0aGlzLnJlbGF0aW9uID0geyB0eXBlSWQ6ICcnLCBpdGVtSWQ6IHRoaXMuaXRlbUlkID8/ICcnIH07XG4gICAgdGhpcy5vdmVybGF5UmVmID0gdGhpcy5vdmVybGF5LmNyZWF0ZShcbiAgICAgIG5ldyBPdmVybGF5Q29uZmlnKHtcbiAgICAgICAgaGFzQmFja2Ryb3A6IHRydWUsXG4gICAgICAgIHBhbmVsQ2xhc3M6IFsnbS1jb250ZXh0LW1lbnUnLCAnY3JlYXRlLW9iamVjdC1wYW5lbCddLFxuICAgICAgICBiYWNrZHJvcENsYXNzOiAnYmFja2Ryb3AnXG4gICAgICB9KVxuICAgICk7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChDb25maWdBY3Rpb25zLmFkZGluZ092ZXJsYXkoeyBpZDogdGhpcy5jb25zdHJ1Y3Rvci5uYW1lIH0pKTtcbiAgICB0aGlzLm92ZXJsYXlSZWYuYXR0YWNoKG5ldyBUZW1wbGF0ZVBvcnRhbCh0aGlzLnRlbXBsYXRlLCB0aGlzLnZpZXdDb250YWluZXJSZWYpKTtcbiAgICB0aGlzLm92ZXJsYXlSZWYuYmFja2Ryb3BDbGljaygpLnN1YnNjcmliZSgoXykgPT4gdGhpcy5oaWRlKCkpO1xuICB9XG5cbiAgaGlkZSgpIHtcbiAgICB0aGlzLm92ZXJsYXlSZWY/LmRpc3Bvc2UoKTtcbiAgICB0aGlzLmNsb3NlZC5lbWl0KCk7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChDb25maWdBY3Rpb25zLmNsb3NlT3ZlcmxheSh7IGlkOiB0aGlzLmNvbnN0cnVjdG9yLm5hbWUgfSkpO1xuICB9XG5cbiAgbmV3T2JqZWN0KCkge1xuICAgIHJldHVybiB7IGlkOiB1dWlkdjQoKSwgb0NsYXNzOiAnJywgYXR0cmlidXRlczoge30sIG1ldGFkYXRhOiB7fSB9O1xuICB9XG5cbiAgZ2V0IHZhbGlkKCkge1xuICAgIHJldHVybiAoXG4gICAgICAoIXRoaXMub2JqZWN0IHx8IEl0ZW1VdGlscy5pc1ZhbGlkT2JqZWN0KHRoaXMudG1wT2JqZWN0KSkgJiYgKCF0aGlzLmxpbmsgfHwgKHRoaXMucmVsYXRpb24/LnR5cGVJZCA/PyBmYWxzZSkpXG4gICAgKTtcbiAgfVxuXG4gIGNyZWF0ZU9iamVjdHMoKSB7XG4gICAgbGV0IHJlbGF0aW9uID0ge1xuICAgICAgZnJvbTogdGhpcy5zZWxlY3RlZEl0ZW1zSWRzLFxuICAgICAgdG86IHRoaXMucmVsYXRpb24/Lml0ZW1JZCA/PyAnJyxcbiAgICAgIHR5cGVJZDogdGhpcy5yZWxhdGlvbj8udHlwZUlkID8/ICcnLFxuICAgICAgaW52ZXJzaW9uOiB0aGlzLmludmVyc2lvblxuICAgIH07XG4gICAgaWYgKHRoaXMub2JqZWN0KSB7XG4gICAgICB0aGlzLnRtcE9iamVjdCA9IEl0ZW1VdGlscy5lbnN1cmVJdGVtSWRIYXNDb3JyZWN0Rm9ybWF0KHRoaXMudG1wT2JqZWN0KTtcbiAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goSXRlbUFjdGlvbnMuY3JlYXRlKHsgaXRlbTogdGhpcy50bXBPYmplY3QgfSkpO1xuICAgICAgaWYgKHRoaXMubGluaykge1xuICAgICAgICByZWxhdGlvbi5mcm9tID0gW3RoaXMudG1wT2JqZWN0LmlkXTtcbiAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChSZWxhdGlvblR5cGVzQWN0aW9ucy5jcmVhdGVSZWxhdGlvbihyZWxhdGlvbikpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKFJlbGF0aW9uVHlwZXNBY3Rpb25zLmNyZWF0ZVJlbGF0aW9uKHJlbGF0aW9uKSk7XG4gICAgfVxuXG4gICAgdGhpcy5oaWRlKCk7XG4gIH1cblxuICBnZXQgYXR0cmlidXRlcygpIHtcbiAgICByZXR1cm4gdGhpcy5jbGFzc2VzLmZpbmQoKGNsKSA9PiBjbC5pZCA9PT0gdGhpcy50bXBPYmplY3Qub0NsYXNzKT8uYXR0cmlidXRlcyA/PyBbXTtcbiAgfVxuXG4gIGZpZWxkVHlwZShhdHRyaWJ1dGU6IEF0dHJpYnV0ZSkge1xuICAgIHJldHVybiB0aGlzLmZpZWxkcy5maW5kKChmaWVsZCkgPT4gYXR0cmlidXRlLmZpZWxkID09PSBmaWVsZC5pZCk/LnR5cGU7XG4gIH1cblxuICBhc3NpZ25WYWx1ZShhdHRyaWJ1dGU6IEF0dHJpYnV0ZSwgJGV2ZW50OiBhbnkpIHtcbiAgICBjb25zdCB2YWx1ZSA9XG4gICAgICB0aGlzLmZpZWxkVHlwZShhdHRyaWJ1dGUpID09PSBGaWVsZFR5cGUuSU5TVEFOVCAmJiAkZXZlbnQgIT09ICcnID8gbmV3IERhdGUoJGV2ZW50KS5nZXRUaW1lKCkgOiAkZXZlbnQ7XG4gICAgaWYgKCF0aGlzLnRtcE9iamVjdC5hdHRyaWJ1dGVzW2F0dHJpYnV0ZS5uYW1lXSkge1xuICAgICAgdGhpcy50bXBPYmplY3QuYXR0cmlidXRlc1thdHRyaWJ1dGUubmFtZV0gPSB7IHR5cGU6ICdWQUxVRScsIG1ldGFkYXRhOiB7fSwgdmFsdWUsIHZpc2libGU6IHRydWUgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgKHRoaXMudG1wT2JqZWN0LmF0dHJpYnV0ZXNbYXR0cmlidXRlLm5hbWVdIGFzIEF0dHJpYnV0ZVNpbXBsZVZhbHVlKS52YWx1ZSA9IHZhbHVlO1xuICAgIH1cbiAgfVxuXG4gIHZhbHVlKGF0dHJpYnV0ZTogQXR0cmlidXRlKSB7XG4gICAgY29uc3QgdmFsdWUgPSAodGhpcy50bXBPYmplY3QuYXR0cmlidXRlc1thdHRyaWJ1dGUubmFtZV0gYXMgQXR0cmlidXRlU2ltcGxlVmFsdWUpPy52YWx1ZTtcbiAgICBpZiAodGhpcy5maWVsZFR5cGUoYXR0cmlidXRlKSA9PT0gRmllbGRUeXBlLklOU1RBTlQpIHtcbiAgICAgIHJldHVybiB2YWx1ZSAhPT0gdW5kZWZpbmVkICYmIHZhbHVlICE9PSAnJyA/IERhdGVVdGlscy5mb3JtYXREYXRlKG5ldyBEYXRlKHZhbHVlIGFzIHN0cmluZyB8IG51bWJlcikpIDogdW5kZWZpbmVkO1xuICAgIH1cbiAgICByZXR1cm4gKCh0aGlzLnRtcE9iamVjdC5hdHRyaWJ1dGVzW2F0dHJpYnV0ZS5uYW1lXSBhcyBBdHRyaWJ1dGVTaW1wbGVWYWx1ZSkgPz8ge30pLnZhbHVlO1xuICB9XG5cbiAgdG9nZ2xlRGF0ZVBpY2tlcigkZXZlbnQ6IEV2ZW50LCBpZDogc3RyaW5nKSB7XG4gICAgJGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIGlmICh0aGlzLnNlbGVjdGVkRGF0ZVBpY2tlciA9PT0gaWQpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWREYXRlUGlja2VyID0gJyc7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWREYXRlUGlja2VyID0gaWQ7XG4gICAgfVxuICB9XG5cbiAgY2xvc2VEYXRlUGlja2VyKCRldmVudDogRXZlbnQpIHtcbiAgICBpZiAoISgkZXZlbnQuY3VycmVudFRhcmdldCBhcyBIVE1MRWxlbWVudCkuY29udGFpbnMoKCRldmVudCBhcyBNb3VzZUV2ZW50KS5yZWxhdGVkVGFyZ2V0IGFzIE5vZGUpKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkRGF0ZVBpY2tlciA9ICcnO1xuICAgIH1cbiAgfVxuXG4gIG11bHRpVmFsdWVzKGF0dHJpYnV0ZTogQXR0cmlidXRlKSB7XG4gICAgcmV0dXJuICgodGhpcy50bXBPYmplY3QuYXR0cmlidXRlc1thdHRyaWJ1dGUubmFtZV0gYXMgQXR0cmlidXRlTXVsdGlwbGVWYWx1ZSkgPz8geyB2YWx1ZXM6IFtdIH0pLnZhbHVlcztcbiAgfVxuXG4gIHJlbW92ZU11bHRpVmFsdWVkKGF0dHJpYnV0ZTogQXR0cmlidXRlLCBpOiBudW1iZXIpIHtcbiAgICAodGhpcy50bXBPYmplY3QuYXR0cmlidXRlc1thdHRyaWJ1dGUubmFtZV0gYXMgQXR0cmlidXRlTXVsdGlwbGVWYWx1ZSkudmFsdWVzLnNwbGljZShpLCAxKTtcbiAgfVxuXG4gIGFkZE11bHRpVmFsdWVkKGF0dHJpYnV0ZTogQXR0cmlidXRlKSB7XG4gICAgaWYgKCF0aGlzLnRtcE9iamVjdC5hdHRyaWJ1dGVzW2F0dHJpYnV0ZS5uYW1lXSkge1xuICAgICAgdGhpcy50bXBPYmplY3QuYXR0cmlidXRlc1thdHRyaWJ1dGUubmFtZV0gPSB7IHR5cGU6ICdNVUxUSScsIHZhbHVlczogW10gfTtcbiAgICB9XG4gICAgKHRoaXMudG1wT2JqZWN0LmF0dHJpYnV0ZXNbYXR0cmlidXRlLm5hbWVdIGFzIEF0dHJpYnV0ZU11bHRpcGxlVmFsdWUpLnZhbHVlcy5wdXNoKHtcbiAgICAgIHR5cGU6ICdWQUxVRScsXG4gICAgICBtZXRhZGF0YToge30sXG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICB2YWx1ZTogdW5kZWZpbmVkLFxuICAgICAgdmlzaWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIHJldHVybiAodGhpcy50bXBPYmplY3QuYXR0cmlidXRlc1thdHRyaWJ1dGUubmFtZV0gYXMgQXR0cmlidXRlTXVsdGlwbGVWYWx1ZSkudmFsdWVzLmxlbmd0aCAtIDE7XG4gIH1cblxuICB2YWx1ZU11bHRpKGF0dHJpYnV0ZTogQXR0cmlidXRlLCBpOiBudW1iZXIpIHtcbiAgICByZXR1cm4gdGhpcy5tdWx0aVZhbHVlcyhhdHRyaWJ1dGUpW2ldLnZhbHVlO1xuICB9XG5cbiAgYXNzaWduVmFsdWVNdWx0aShhdHRyaWJ1dGU6IEF0dHJpYnV0ZSwgJGV2ZW50OiBhbnksIGk6IG51bWJlcikge1xuICAgIGNvbnN0IHZhbHVlID0gdGhpcy5maWVsZFR5cGUoYXR0cmlidXRlKSA9PT0gRmllbGRUeXBlLklOU1RBTlQgPyBuZXcgRGF0ZSgkZXZlbnQpLmdldFRpbWUoKSA6ICRldmVudDtcbiAgICBpZiAoIXRoaXMudG1wT2JqZWN0LmF0dHJpYnV0ZXNbYXR0cmlidXRlLm5hbWVdKSB7XG4gICAgICB0aGlzLnRtcE9iamVjdC5hdHRyaWJ1dGVzW2F0dHJpYnV0ZS5uYW1lXSA9IHsgdHlwZTogJ01VTFRJJywgdmFsdWVzOiBbXSB9O1xuICAgIH1cbiAgICBpZiAoISh0aGlzLnRtcE9iamVjdC5hdHRyaWJ1dGVzW2F0dHJpYnV0ZS5uYW1lXSBhcyBBdHRyaWJ1dGVNdWx0aXBsZVZhbHVlKS52YWx1ZXNbaV0pIHtcbiAgICAgICh0aGlzLnRtcE9iamVjdC5hdHRyaWJ1dGVzW2F0dHJpYnV0ZS5uYW1lXSBhcyBBdHRyaWJ1dGVNdWx0aXBsZVZhbHVlKS52YWx1ZXNbaV0gPSB7XG4gICAgICAgIHR5cGU6ICdWQUxVRScsXG4gICAgICAgIG1ldGFkYXRhOiB7fSxcbiAgICAgICAgdmFsdWUsXG4gICAgICAgIHZpc2libGU6IHRydWVcbiAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgICh0aGlzLnRtcE9iamVjdC5hdHRyaWJ1dGVzW2F0dHJpYnV0ZS5uYW1lXSBhcyBBdHRyaWJ1dGVNdWx0aXBsZVZhbHVlKS52YWx1ZXNbaV0udmFsdWUgPSB2YWx1ZTtcbiAgICB9XG4gIH1cblxuICBjaGFuZ2VDbGFzcygkZXZlbnQ6IGFueSkge1xuICAgIHRoaXMudG1wT2JqZWN0ID0gdGhpcy5uZXdPYmplY3QoKTtcbiAgICB0aGlzLnRtcE9iamVjdC5vQ2xhc3MgPSAkZXZlbnQ7XG4gICAgaWYgKHRoaXMuZnJvbSA9PT0gJ21hcCcpIHtcbiAgICAgIHRoaXMuYXR0cmlidXRlcy5mb3JFYWNoKChhdHRyaWJ1dGUpID0+IHtcbiAgICAgICAgaWYgKFsnbGF0aXR1ZGUnLCAnbGF0J10uaW5kZXhPZihhdHRyaWJ1dGUubmFtZSkgPj0gMCkge1xuICAgICAgICAgIGlmIChhdHRyaWJ1dGUubXVsdGlWYWx1ZWQpIHtcbiAgICAgICAgICAgIGNvbnN0IGlkeCA9IHRoaXMuYWRkTXVsdGlWYWx1ZWQoYXR0cmlidXRlKTtcbiAgICAgICAgICAgIHRoaXMuYXNzaWduVmFsdWVNdWx0aShhdHRyaWJ1dGUsICh0aGlzLmNvb3JkaW5hdGVzID8/IFtdKVswXSwgaWR4KTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5hc3NpZ25WYWx1ZShhdHRyaWJ1dGUsICh0aGlzLmNvb3JkaW5hdGVzID8/IFtdKVswXSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChbJ2xvbmdpdHVkZScsICdsb25nJywgJ2xvbicsICdsbmcnXS5pbmRleE9mKGF0dHJpYnV0ZS5uYW1lKSA+PSAwKSB7XG4gICAgICAgICAgaWYgKGF0dHJpYnV0ZS5tdWx0aVZhbHVlZCkge1xuICAgICAgICAgICAgY29uc3QgaWR4ID0gdGhpcy5hZGRNdWx0aVZhbHVlZChhdHRyaWJ1dGUpO1xuICAgICAgICAgICAgdGhpcy5hc3NpZ25WYWx1ZU11bHRpKGF0dHJpYnV0ZSwgKHRoaXMuY29vcmRpbmF0ZXMgPz8gW10pWzFdLCBpZHgpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmFzc2lnblZhbHVlKGF0dHJpYnV0ZSwgKHRoaXMuY29vcmRpbmF0ZXMgPz8gW10pWzFdKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHNldFJhd01ldGhvZChhdHRyaWJ1dGU6IEF0dHJpYnV0ZSwgJGV2ZW50OiBhbnkpIHtcbiAgICB0aGlzLm1ldGhvZCA9ICRldmVudDtcbiAgICBpZiAoIXRoaXMudG1wT2JqZWN0LmF0dHJpYnV0ZXNbYXR0cmlidXRlLm5hbWVdKSB7XG4gICAgICB0aGlzLnRtcE9iamVjdC5hdHRyaWJ1dGVzW2F0dHJpYnV0ZS5uYW1lXSA9IHtcbiAgICAgICAgdHlwZTogJ1ZBTFVFJyxcbiAgICAgICAgbWV0YWRhdGE6IHt9LFxuICAgICAgICB2YWx1ZTogJycsXG4gICAgICAgIHZpc2libGU6IHRydWVcbiAgICAgIH07XG4gICAgfVxuICAgIGlmICgkZXZlbnQgPT09IHRoaXMuSFRUUF9PUklHSU5fTUVUSE9EKSB7XG4gICAgICB0aGlzLmFzc2lnbk1ldGFkYXRhKGF0dHJpYnV0ZSwgJycsIEhUVFBfT1JJR0lOX01FVEFEQVRBKTtcbiAgICB9XG4gICAgaWYgKCRldmVudCA9PT0gdGhpcy5VUExPQURfTUVUSE9EKSB7XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBkZWxldGUgKHRoaXMudG1wT2JqZWN0LmF0dHJpYnV0ZXNbYXR0cmlidXRlLm5hbWVdIGFzIEF0dHJpYnV0ZVNpbXBsZVZhbHVlKS5tZXRhZGF0YVtIVFRQX09SSUdJTl9NRVRBREFUQV07XG4gICAgfVxuICB9XG5cbiAgdmFsdWVNZXRhZGF0YShhdHRyaWJ1dGU6IEF0dHJpYnV0ZSwgdHlwZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuICgoKHRoaXMudG1wT2JqZWN0LmF0dHJpYnV0ZXNbYXR0cmlidXRlLm5hbWVdIGFzIEF0dHJpYnV0ZVNpbXBsZVZhbHVlKSA/PyB7fSkubWV0YWRhdGEgPz8ge30pW3R5cGVdO1xuICB9XG5cbiAgYXNzaWduTWV0YWRhdGEoYXR0cmlidXRlOiBBdHRyaWJ1dGUsICRldmVudDogYW55LCB0eXBlOiBzdHJpbmcpIHtcbiAgICBpZiAoISh0aGlzLnRtcE9iamVjdC5hdHRyaWJ1dGVzW2F0dHJpYnV0ZS5uYW1lXSBhcyBBdHRyaWJ1dGVTaW1wbGVWYWx1ZSkubWV0YWRhdGEpIHtcbiAgICAgICh0aGlzLnRtcE9iamVjdC5hdHRyaWJ1dGVzW2F0dHJpYnV0ZS5uYW1lXSBhcyBBdHRyaWJ1dGVTaW1wbGVWYWx1ZSkubWV0YWRhdGEgPSB7IFt0eXBlXTogJGV2ZW50IH07XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICh0aGlzLnRtcE9iamVjdC5hdHRyaWJ1dGVzW2F0dHJpYnV0ZS5uYW1lXSBhcyBBdHRyaWJ1dGVTaW1wbGVWYWx1ZSkubWV0YWRhdGFbdHlwZV0gPSAkZXZlbnQ7XG4gICAgfVxuICB9XG5cbiAgdG9nZ2xlSW52ZXJzaW9uKCkge1xuICAgIHRoaXMuaW52ZXJzaW9uID0gIXRoaXMuaW52ZXJzaW9uO1xuICB9XG59XG4iLCI8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImEtYnRuIC1saW5rLWxpa2VcIiAoY2xpY2spPVwib3BlbkNyZWF0ZU9iamVjdFBhbmVsKCRldmVudClcIiAqbmdJZj1cIm1lbnVcIj5cbiAge3sgJ0BwcnkuY29udGV4dC5jcmVhdGVPYmplY3QudGl0bGUuJyArIChsaW5rICYmIG9iamVjdCA/ICdsaW5rZWRPYmplY3QnIDogbGluayA/ICdsaW5rJyA6ICdvYmplY3QnKSB8IGkxOG4gfX1cbjwvYnV0dG9uPlxuPGJ1dHRvblxuICBpZD1cIm9iamVjdF9jcmVhdG9yX2xpbmtcIlxuICB0eXBlPVwiYnV0dG9uXCJcbiAgKGNsaWNrKT1cIm9wZW5DcmVhdGVPYmplY3RQYW5lbCgkZXZlbnQpXCJcbiAgKm5nSWY9XCIhbWVudVwiXG4gIGNsYXNzPVwiYS1idG4gYS1idG4tLWdob3N0IC1jaXJjbGUgdS1mbG9hdGluZyB1LWZsb2F0aW5nLS1ib3R0b20tcmlnaHRcIlxuICBbdGl0bGVdPVwiJ0BwcnkuY29udGV4dC5jcmVhdGVPYmplY3QudGl0bGUub2JqZWN0JyB8IGkxOG5cIlxuPlxuICA8c3BhbiBjbGFzcz1cInUtdmlzdWFsbHktaGlkZGVuXCI+e3sgJ0BwcnkuY29udGV4dC5jcmVhdGVPYmplY3QudGl0bGUub2JqZWN0JyB8IGkxOG4gfX08L3NwYW4+XG4gIDxwcnktaWNvbiBpY29uU3ZnPVwiYWRkX2NvbHVtblwiIFt3aWR0aF09XCIyNFwiIFtoZWlnaHRdPVwiMjRcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L3ByeS1pY29uPlxuPC9idXR0b24+XG5cbjxuZy10ZW1wbGF0ZSAjdGVtcGxhdGU+XG4gIDxkaXYgY2xhc3M9XCJvLXNldHRpbmdzX19wb3B1cFwiPlxuICAgIDxkaXYgY2xhc3M9XCJvLXNldHRpbmdzX19wb3B1cF9fY29udGVudFwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImxpbmtcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm0tZm9ybS1sYWJlbC1maWVsZFwiPlxuICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImEtbGFiZWxcIiBmb3I9XCJjcmVhdGVvYmplY3RfbGlua1wiPnt7ICdAcHJ5LmNvbnRleHQuY3JlYXRlT2JqZWN0LnRpdGxlLmxpbmsnIHwgaTE4biB9fTwvbGFiZWw+XG4gICAgICAgICAgPHByeS1zZWxlY3RcbiAgICAgICAgICAgIFsobmdNb2RlbCldPVwicmVsYXRpb24udHlwZUlkXCJcbiAgICAgICAgICAgIFtpdGVtc109XCJyZWxhdGlvbnMkIHwgYXN5bmNcIlxuICAgICAgICAgICAgW2l0ZW1zQXNPcHRpb25dPVwidHJ1ZVwiXG4gICAgICAgICAgICBiaW5kTGFiZWw9XCJsYWJlbFwiXG4gICAgICAgICAgICBiaW5kVmFsdWU9XCJpZFwiXG4gICAgICAgICAgICBjbGFzcz1cImEtcHJ5LXNlbGVjdFwiXG4gICAgICAgICAgICBpZD1cImNyZWF0ZW9iamVjdF9saW5rXCJcbiAgICAgICAgICA+PC9wcnktc2VsZWN0PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm0tZm9ybS1sYWJlbC1maWVsZFwiPlxuICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImEtbGFiZWxcIiBmb3I9XCJjcmVhdGVvYmplY3RfaW52ZXJzaW9uXCI+e3tcbiAgICAgICAgICAgICdAcHJ5LmNvbnRleHQuY3JlYXRlT2JqZWN0LnRpdGxlLmludmVyc2lvbicgfCBpMThuXG4gICAgICAgICAgfX08L2xhYmVsPlxuICAgICAgICAgIDxwcnktY2hlY2tib3hcbiAgICAgICAgICAgIGlkPVwiY3JlYXRlb2JqZWN0X2ludmVyc2lvblwiXG4gICAgICAgICAgICBbbmdNb2RlbF09XCJpbnZlcnNpb25cIlxuICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwidG9nZ2xlSW52ZXJzaW9uKClcIlxuICAgICAgICAgID48L3ByeS1jaGVja2JveD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgPGRpdiBjbGFzcz1cIm8tb2JqZWN0LXBhbmVsXCIgKm5nSWY9XCJvYmplY3RcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm0tZm9ybS1sYWJlbC1maWVsZFwiPlxuICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImEtbGFiZWxcIiBmb3I9XCJjcmVhdGVvYmplY3RfY2xhc3NcIj57eyAnQHByeS5jb250ZXh0LmNyZWF0ZU9iamVjdC5jbGFzcycgfCBpMThuIH19PC9sYWJlbD5cbiAgICAgICAgICA8cHJ5LXNlbGVjdFxuICAgICAgICAgICAgW25nTW9kZWxdPVwidG1wT2JqZWN0Lm9DbGFzc1wiXG4gICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJjaGFuZ2VDbGFzcygkZXZlbnQpXCJcbiAgICAgICAgICAgIFtpdGVtc109XCJjbGFzc2VzXCJcbiAgICAgICAgICAgIFtpdGVtc0FzT3B0aW9uXT1cInRydWVcIlxuICAgICAgICAgICAgYmluZFZhbHVlPVwiaWRcIlxuICAgICAgICAgICAgYmluZExhYmVsPVwibmFtZVwiXG4gICAgICAgICAgICBjbGFzcz1cImEtcHJ5LXNlbGVjdFwiXG4gICAgICAgICAgICBpZD1cImNyZWF0ZW9iamVjdF9jbGFzc1wiXG4gICAgICAgICAgPjwvcHJ5LXNlbGVjdD5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgYXR0cmlidXRlIG9mIGF0dHJpYnV0ZXNcIiBbY2xhc3MubXVsdGktdmFsdWVdPVwiYXR0cmlidXRlLm11bHRpVmFsdWVkXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm0tZm9ybS1sYWJlbC1maWVsZFwiPlxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiYS1sYWJlbFwiPnt7IGF0dHJpYnV0ZS5uYW1lIH19PC9sYWJlbD5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhYXR0cmlidXRlLm11bHRpVmFsdWVkXCI+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nU3dpdGNoXT1cImZpZWxkVHlwZShhdHRyaWJ1dGUpXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiRmllbGRUeXBlLklOU1RBTlRcIj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhLWRhdGUtaW5wdXRcIiB0YWJpbmRleD1cIi0xXCIgKGJsdXIpPVwiY2xvc2VEYXRlUGlja2VyKCRldmVudClcIj5cbiAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImRhdGV0aW1lLWxvY2FsXCJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImEtZm9ybS1maWVsZFwiXG4gICAgICAgICAgICAgICAgICAgICAgW25nTW9kZWxdPVwidmFsdWUoYXR0cmlidXRlKVwiXG4gICAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwiYXNzaWduVmFsdWUoYXR0cmlidXRlLCAkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImEtb3Blbi1kYXRlLXBpY2tlclwiIChtb3VzZWRvd24pPVwidG9nZ2xlRGF0ZVBpY2tlcigkZXZlbnQsIGF0dHJpYnV0ZS5pZClcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRhdGUtcGlja2VyLWNvbnRhaW5lclwiICpuZ0lmPVwic2VsZWN0ZWREYXRlUGlja2VyID09PSBhdHRyaWJ1dGUuaWRcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8cHJ5LWRhdGUtcGlja2VyXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmdNb2RlbF09XCJ2YWx1ZShhdHRyaWJ1dGUpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cImFzc2lnblZhbHVlKGF0dHJpYnV0ZSwgJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbcm91bmRTZWxlY3Rpb25dPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbdGltZVBpY2tlcl09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICA+PC9wcnktZGF0ZS1waWNrZXI+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiRmllbGRUeXBlLkRFQ0lNQUxcIj5cbiAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwibnVtYmVyXCJcbiAgICAgICAgICAgICAgICAgICAgc3RlcD1cImFueVwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYS1mb3JtLWZpZWxkXCJcbiAgICAgICAgICAgICAgICAgICAgW25nTW9kZWxdPVwidmFsdWUoYXR0cmlidXRlKVwiXG4gICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cImFzc2lnblZhbHVlKGF0dHJpYnV0ZSwgJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIkZpZWxkVHlwZS5JTlRFR0VSXCI+XG4gICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cIm51bWJlclwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYS1mb3JtLWZpZWxkXCJcbiAgICAgICAgICAgICAgICAgICAgW25nTW9kZWxdPVwidmFsdWUoYXR0cmlidXRlKVwiXG4gICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cImFzc2lnblZhbHVlKGF0dHJpYnV0ZSwgJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoRGVmYXVsdD5cbiAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYS1mb3JtLWZpZWxkXCJcbiAgICAgICAgICAgICAgICAgICAgW25nTW9kZWxdPVwidmFsdWUoYXR0cmlidXRlKVwiXG4gICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cImFzc2lnblZhbHVlKGF0dHJpYnV0ZSwgJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIkZpZWxkVHlwZS5SQVdcIj5cbiAgICAgICAgICAgICAgICAgIDxwcnktc2VsZWN0XG4gICAgICAgICAgICAgICAgICAgIFtuZ01vZGVsXT1cIm1ldGhvZFwiXG4gICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInNldFJhd01ldGhvZChhdHRyaWJ1dGUsICRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICBbaXRlbXNdPVwicmF3TWV0aG9kc1wiXG4gICAgICAgICAgICAgICAgICAgIFtpdGVtc0FzT3B0aW9uXT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICBiaW5kVmFsdWU9XCJpZFwiXG4gICAgICAgICAgICAgICAgICAgIGJpbmRMYWJlbD1cIm5hbWVcIlxuICAgICAgICAgICAgICAgICAgICBbbGFiZWxUcmFuc2xhdGVdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYS1wcnktc2VsZWN0XCJcbiAgICAgICAgICAgICAgICAgID48L3ByeS1zZWxlY3Q+XG4gICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImEtZm9ybS1maWVsZFwiXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwibWV0aG9kID09PSBIVFRQX09SSUdJTl9NRVRIT0RcIlxuICAgICAgICAgICAgICAgICAgICBbbmdNb2RlbF09XCJ2YWx1ZU1ldGFkYXRhKGF0dHJpYnV0ZSwgSFRUUF9PUklHSU5fTUVUQURBVEEpXCJcbiAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwiYXNzaWduTWV0YWRhdGEoYXR0cmlidXRlLCAkZXZlbnQsIEhUVFBfT1JJR0lOX01FVEFEQVRBKVwiXG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm1ldGhvZCA9PT0gVVBMT0FEX01FVEhPRFwiPlxuICAgICAgICAgICAgICAgICAgICA8cHJ5LXVwbG9hZFxuICAgICAgICAgICAgICAgICAgICAgIG1vZGU9XCJkb2NcIlxuICAgICAgICAgICAgICAgICAgICAgIGFjY2VwdD1cImltYWdlLyosdmlkZW8vKlwiXG4gICAgICAgICAgICAgICAgICAgICAgKHVwbG9hZGVkKT1cImFzc2lnblZhbHVlKGF0dHJpYnV0ZSwgJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgID48L3ByeS11cGxvYWQ+XG4gICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdWx0aS12YWx1ZS1jb250YWluZXJcIiAqbmdJZj1cImF0dHJpYnV0ZS5tdWx0aVZhbHVlZFwiPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICBjbGFzcz1cImJ1dHRvbi1hZGQgYS1idG4gYS1idG4tLXNlY29uZGFyeSBhLWJ0bi0taWNvbi10ZXh0IC1zaXplLXNtXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImFkZE11bHRpVmFsdWVkKGF0dHJpYnV0ZSlcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8cHJ5LWljb24gaWNvblN2Zz1cImFkZFwiPjwvcHJ5LWljb24+XG4gICAgICAgICAgICAgIDxzcGFuPnt7ICdAcHJ5LmNvbnRleHQuY3JlYXRlT2JqZWN0LmFkZE11bHRpRmllbGQnIHwgaTE4bjogeyBuYW1lOiBhdHRyaWJ1dGUubmFtZSB9IH19PC9zcGFuPlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXVsdGktdmFsdWVcIiAqbmdGb3I9XCJsZXQgbXVsdGlWYWx1ZSBvZiBtdWx0aVZhbHVlcyhhdHRyaWJ1dGUpOyBsZXQgaSA9IGluZGV4XCI+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nU3dpdGNoXT1cImZpZWxkVHlwZShhdHRyaWJ1dGUpXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiRmllbGRUeXBlLklOU1RBTlRcIj5cbiAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwiZGF0ZXRpbWUtbG9jYWxcIlxuICAgICAgICAgICAgICAgICAgICBbbmdNb2RlbF09XCJ2YWx1ZU11bHRpKGF0dHJpYnV0ZSwgaSlcIlxuICAgICAgICAgICAgICAgICAgICAoZm9jdXNvdXQpPVwiYXNzaWduVmFsdWVNdWx0aShhdHRyaWJ1dGUsICRldmVudCwgaSlcIlxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCJGaWVsZFR5cGUuREVDSU1BTFwiPlxuICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJudW1iZXJcIlxuICAgICAgICAgICAgICAgICAgICBzdGVwPVwiYW55XCJcbiAgICAgICAgICAgICAgICAgICAgW25nTW9kZWxdPVwidmFsdWVNdWx0aShhdHRyaWJ1dGUsIGkpXCJcbiAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwiYXNzaWduVmFsdWVNdWx0aShhdHRyaWJ1dGUsICRldmVudCwgaSlcIlxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCJGaWVsZFR5cGUuSU5URUdFUlwiPlxuICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJudW1iZXJcIlxuICAgICAgICAgICAgICAgICAgICBbbmdNb2RlbF09XCJ2YWx1ZU11bHRpKGF0dHJpYnV0ZSwgaSlcIlxuICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJhc3NpZ25WYWx1ZU11bHRpKGF0dHJpYnV0ZSwgJGV2ZW50LCBpKVwiXG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoRGVmYXVsdD5cbiAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgICAgIFtuZ01vZGVsXT1cInZhbHVlTXVsdGkoYXR0cmlidXRlLCBpKVwiXG4gICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cImFzc2lnblZhbHVlTXVsdGkoYXR0cmlidXRlLCAkZXZlbnQsIGkpXCJcbiAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwicmVtb3ZlTXVsdGlWYWx1ZWQoYXR0cmlidXRlLCBpKVwiPlxuICAgICAgICAgICAgICAgICAgPHByeS1pY29uIGljb25Tdmc9XCJkZWxldGVcIj48L3ByeS1pY29uPlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJtLWJ0bi1ncm91cFwiPlxuICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJhLWJ0biBhLWJ0bi0tc2Vjb25kYXJ5XCIgKGNsaWNrKT1cImhpZGUoKVwiPlxuICAgICAgICB7eyAnQHByeS5jb250ZXh0LmNhbmNlbCcgfCBpMThuIH19XG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYS1idG4gYS1idG4tLXByaW1hcnlcIiAoY2xpY2spPVwiY3JlYXRlT2JqZWN0cygpXCIgW2Rpc2FibGVkXT1cIiF2YWxpZFwiPlxuICAgICAgICB7eyAnQHByeS5jb250ZXh0LmNyZWF0ZScgfCBpMThuIH19XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19
267
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JqZWN0LWVkaXRpb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJvdm9seS9kYXNoYm9hcmQvbGliL2Rhc2hib2FyZC9jb21wb25lbnRzL2NvbnRleHQtbWVudS9vYmplY3QtZWRpdGlvbi9vYmplY3QtZWRpdGlvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcm92b2x5L2Rhc2hib2FyZC9saWIvZGFzaGJvYXJkL2NvbXBvbmVudHMvY29udGV4dC1tZW51L29iamVjdC1lZGl0aW9uL29iamVjdC1lZGl0aW9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBVyxhQUFhLEVBQWMsTUFBTSxzQkFBc0IsQ0FBQztBQUMxRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDckQsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFvQixNQUFNLGVBQWUsQ0FBQztBQUVqSCxPQUFPLEVBQUUsYUFBYSxFQUFFLEdBQUcsRUFBYyxNQUFNLE1BQU0sQ0FBQztBQUN0RCxPQUFPLEVBQUUsRUFBRSxJQUFJLE1BQU0sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUdwQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sOENBQThDLENBQUM7QUFDOUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQzdFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDREQUE0RCxDQUFDO0FBQ2xHLE9BQU8sRUFBUyxTQUFTLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUNoRixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sOENBQThDLENBQUM7QUFDOUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxN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QUMsU0FBb0IsRUFBRSxNQUFXLEVBQUUsSUFBWTtRQUM1RCxJQUFJLENBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBMEIsQ0FBQyxRQUFRLEVBQUU7WUFDaEYsSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBMEIsQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDO1NBQ25HO2FBQU07WUFDTCxhQUFhO1lBQ1osSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBMEIsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsTUFBTSxDQUFDO1NBQzdGO0lBQ0gsQ0FBQztJQUVELGVBQWU7UUFDYixJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUNuQyxDQUFDOzhHQTVQVSx5QkFBeUI7a0dBQXpCLHlCQUF5QixxT0FNTCxXQUFXLG9EQ2pDNUMsOGpSQW1NQTs7MkZEeEthLHlCQUF5QjtrQkFKckMsU0FBUzsrQkFDRSxxQkFBcUI7aUpBSXRCLElBQUk7c0JBQVosS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUd3QyxRQUFRO3NCQUFyRCxTQUFTO3VCQUFDLFVBQVUsRUFBRSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUU7Z0JBT2xDLE1BQU07c0JBQWYsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE92ZXJsYXksIE92ZXJsYXlDb25maWcsIE92ZXJsYXlSZWYgfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQgeyBUZW1wbGF0ZVBvcnRhbCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wb3J0YWwnO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQsIFRlbXBsYXRlUmVmLCBWaWV3Q2hpbGQsIFZpZXdDb250YWluZXJSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN0b3JlIH0gZnJvbSAnQG5ncngvc3RvcmUnO1xuaW1wb3J0IHsgY29tYmluZUxhdGVzdCwgbWFwLCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB2NCBhcyB1dWlkdjQgfSBmcm9tICd1dWlkJztcbmltcG9ydCB7IEF0dHJpYnV0ZU11bHRpcGxlVmFsdWUsIEF0dHJpYnV0ZVNpbXBsZVZhbHVlLCBJdGVtIH0gZnJvbSAnLi4vLi4vLi4vLi4vY29yZS9tb2RlbC9pdGVtLmludGVyZmFjZSc7XG5pbXBvcnQgeyBBdHRyaWJ1dGUsIENsYXNzIH0gZnJvbSAnLi4vLi4vLi4vLi4vY29yZS9zdG9yZS9jbGFzcy9jbGFzcy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgQ2xhc3NTZWxlY3RvcnMgfSBmcm9tICcuLi8uLi8uLi8uLi9jb3JlL3N0b3JlL2NsYXNzL2NsYXNzLnNlbGVjdG9ycyc7XG5pbXBvcnQgeyBDb25maWdBY3Rpb25zIH0gZnJvbSAnLi4vLi4vLi4vLi4vY29yZS9zdG9yZS9jb25maWcvY29uZmlnLmFjdGlvbnMnO1xuaW1wb3J0IHsgQ29udGV4dE1lbnVTZWxlY3RvcnMgfSBmcm9tICcuLi8uLi8uLi8uLi9jb3JlL3N0b3JlL2NvbnRleHQtbWVudS9jb250ZXh0LW1lbnUuc2VsZWN0b3JzJztcbmltcG9ydCB7IEZpZWxkLCBGaWVsZFR5cGUgfSBmcm9tICcuLi8uLi8uLi8uLi9jb3JlL3N0b3JlL2ZpZWxkL2ZpZWxkLmludGVyZmFjZSc7XG5pbXBvcnQgeyBGaWVsZFNlbGVjdG9ycyB9IGZyb20gJy4uLy4uLy4uLy4uL2NvcmUvc3RvcmUvZmllbGQvZmllbGQuc2VsZWN0b3JzJztcbmltcG9ydCB7IEl0ZW1BY3Rpb25zIH0gZnJvbSAnLi4vLi4vLi4vLi4vY29yZS9zdG9yZS9pdGVtL2l0ZW0uYWN0aW9ucyc7XG5pbXBvcnQgeyBSZWxhdGlvblR5cGVzQWN0aW9ucyB9IGZyb20gJy4uLy4uLy4uLy4uL2NvcmUvc3RvcmUvcmVsYXRpb24tdHlwZXMvcmVsYXRpb24tdHlwZXMuYWN0aW9ucyc7XG5pbXBvcnQgeyBSZWxhdGlvblR5cGVzU2VsZWN0b3JzIH0gZnJvbSAnLi4vLi4vLi4vLi4vY29yZS9zdG9yZS9yZWxhdGlvbi10eXBlcy9yZWxhdGlvbi10eXBlcy5zZWxlY3RvcnMnO1xuaW1wb3J0IHsgRGF0ZVV0aWxzIH0gZnJvbSAnLi4vLi4vLi4vZGF0ZS11dGlscyc7XG5pbXBvcnQgeyBJdGVtVXRpbHMgfSBmcm9tICcuLi8uLi8uLi9pdGVtLXV0aWxzJztcbmltcG9ydCB7IERhc2hib2FyZFNlbGVjdG9ycyB9IGZyb20gJy4uLy4uLy4uL3N0b3JlL2Rhc2hib2FyZC5zZWxlY3RvcnMnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9ubmVyRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vc3Vic2NyaXB0aW9ubmVyLmRpcmVjdGl2ZSc7XG5cbmV4cG9ydCBjb25zdCBIVFRQX09SSUdJTl9NRVRBREFUQSA9ICdfaHR0cF9vcmlnaW4nO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdwcnktb2JqZWN0LWNyZWF0aW9uJyxcbiAgdGVtcGxhdGVVcmw6ICcuL29iamVjdC1lZGl0aW9uLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBQcnlPYmplY3RFZGl0aW9uQ29tcG9uZW50IGV4dGVuZHMgU3Vic2NyaXB0aW9ubmVyRGlyZWN0aXZlIHtcbiAgQElucHV0KCkgbGluazogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBvYmplY3Q6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgbWVudTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIHByaXZhdGUgb3ZlcmxheVJlZj86IE92ZXJsYXlSZWY7XG4gIEBWaWV3Q2hpbGQoJ3RlbXBsYXRlJywgeyByZWFkOiBUZW1wbGF0ZVJlZiB9KSB0ZW1wbGF0ZSE6IFRlbXBsYXRlUmVmPGFueT47XG4gIGl0ZW1JZCQ6IE9ic2VydmFibGU8c3RyaW5nPjtcbiAgZnJvbSQ6IE9ic2VydmFibGU8c3RyaW5nPjtcbiAgaXRlbUlkPzogc3RyaW5nO1xuICBjb29yZGluYXRlczogbnVtYmVyW10gfCB1bmRlZmluZWQ7XG4gIHRtcE9iamVjdDogSXRlbSA9IHRoaXMubmV3T2JqZWN0KCk7XG4gIGZyb206IHN0cmluZyA9ICcnO1xuICBAT3V0cHV0KCkgY2xvc2VkID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICBjbGFzc2VzOiBDbGFzc1tdID0gW107XG4gIGZpZWxkczogRmllbGRbXSA9IFtdO1xuICBGaWVsZFR5cGUgPSBGaWVsZFR5cGU7XG4gIHJlbGF0aW9ucyQ6IE9ic2VydmFibGU8eyBpZDogc3RyaW5nOyBsYWJlbDogc3RyaW5nIH1bXT47XG4gIHJlbGF0aW9uITogeyB0eXBlSWQ6IHN0cmluZzsgaXRlbUlkOiBzdHJpbmcgfTtcbiAgc2VsZWN0ZWRJdGVtc0lkcyE6IHN0cmluZ1tdO1xuICBVUExPQURfTUVUSE9EID0gJ3VwbG9hZCc7XG4gIEhUVFBfT1JJR0lOX01FVEhPRCA9ICdtZXRhZGF0YSc7XG4gIEhUVFBfT1JJR0lOX01FVEFEQVRBID0gSFRUUF9PUklHSU5fTUVUQURBVEE7XG4gIHJhd01ldGhvZHMgPSBbXG4gICAgeyBpZDogdGhpcy5IVFRQX09SSUdJTl9NRVRIT0QsIG5hbWU6ICdAcHJ5LmFkbWluLmZpZWxkcy5yYXdNZXRob2RzLmh0dHAnIH0sXG4gICAge1xuICAgICAgaWQ6IHRoaXMuVVBMT0FEX01FVEhPRCxcbiAgICAgIG5hbWU6ICdAcHJ5LmFkbWluLmZpZWxkcy5yYXdNZXRob2RzLnVwbG9hZCdcbiAgICB9XG4gIF07XG4gIG1ldGhvZCA9IHRoaXMuVVBMT0FEX01FVEhPRDtcbiAgc2VsZWN0ZWREYXRlUGlja2VyOiBzdHJpbmcgPSAnJztcbiAgaW52ZXJzaW9uOiBib29sZWFuID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBvdmVybGF5OiBPdmVybGF5LCBwcml2YXRlIHZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYsIHByaXZhdGUgc3RvcmU6IFN0b3JlKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLml0ZW1JZCQgPSB0aGlzLnN0b3JlLnNlbGVjdChDb250ZXh0TWVudVNlbGVjdG9ycy5pdGVtSWQpO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICB0aGlzLnN0b3JlLnNlbGVjdChDb250ZXh0TWVudVNlbGVjdG9ycy5jb29yZGluYXRlcykuc3Vic2NyaWJlKChjb29yZGluYXRlcykgPT4gKHRoaXMuY29vcmRpbmF0ZXMgPSBjb29yZGluYXRlcykpXG4gICAgKTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuYWRkKHRoaXMuaXRlbUlkJC5zdWJzY3JpYmUoKGl0ZW1JZCkgPT4gKHRoaXMuaXRlbUlkID0gaXRlbUlkKSkpO1xuICAgIHRoaXMuZnJvbSQgPSB0aGlzLnN0b3JlLnNlbGVjdChDb250ZXh0TWVudVNlbGVjdG9ycy5mcm9tKTtcbiAgICB0aGlzLnJlbGF0aW9ucyQgPSB0aGlzLnN0b3JlXG4gICAgICAuc2VsZWN0KFJlbGF0aW9uVHlwZXNTZWxlY3RvcnMucmVsYXRpb25zVHlwZXMpXG4gICAgICAucGlwZShtYXAoKHJlbGF0aW9ucykgPT4gKHJlbGF0aW9ucyB8fCBbXSkubWFwKChyZWwpID0+ICh7IGlkOiByZWwuaWQsIGxhYmVsOiByZWwubmFtZSB9KSkpKTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuYWRkKFxuICAgICAgY29tYmluZUxhdGVzdChbdGhpcy5mcm9tJCwgdGhpcy5zdG9yZS5zZWxlY3QoQ2xhc3NTZWxlY3RvcnMuY2xhc3NlcyldKVxuICAgICAgICAucGlwZShtYXAoKFtmcm9tLCBjbGFzc2VzXSkgPT4gY2xhc3Nlcy5maWx0ZXIoKGNsYXp6KSA9PiBmcm9tICE9PSAnbWFwJyB8fCBJdGVtVXRpbHMuaGFzTG9jYXRpb24oY2xhenopKSkpXG4gICAgICAgIC5zdWJzY3JpYmUoKGNsYXNzZXMpID0+ICh0aGlzLmNsYXNzZXMgPSBjbGFzc2VzKSlcbiAgICApO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5hZGQodGhpcy5zdG9yZS5zZWxlY3QoRmllbGRTZWxlY3RvcnMuZmllbGRzKS5zdWJzY3JpYmUoKGZpZWxkcykgPT4gKHRoaXMuZmllbGRzID0gZmllbGRzKSkpO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5hZGQodGhpcy5mcm9tJC5zdWJzY3JpYmUoKGZyb20pID0+ICh0aGlzLmZyb20gPSBmcm9tKSkpO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICB0aGlzLnN0b3JlLnNlbGVjdChEYXNoYm9hcmRTZWxlY3RvcnMuc2VsZWN0ZWRJdGVtSWRzKS5zdWJzY3JpYmUoKGl0ZW1JZHMpID0+ICh0aGlzLnNlbGVjdGVkSXRlbXNJZHMgPSBpdGVtSWRzKSlcbiAgICApO1xuICB9XG5cbiAgb3BlbkNyZWF0ZU9iamVjdFBhbmVsKCRldmVudDogTW91c2VFdmVudCkge1xuICAgIHRoaXMucmVsYXRpb24gPSB7IHR5cGVJZDogJycsIGl0ZW1JZDogdGhpcy5pdGVtSWQgPz8gJycgfTtcbiAgICB0aGlzLm92ZXJsYXlSZWYgPSB0aGlzLm92ZXJsYXkuY3JlYXRlKFxuICAgICAgbmV3IE92ZXJsYXlDb25maWcoe1xuICAgICAgICBoYXNCYWNrZHJvcDogdHJ1ZSxcbiAgICAgICAgcGFuZWxDbGFzczogWydtLWNvbnRleHQtbWVudScsICdjcmVhdGUtb2JqZWN0LXBhbmVsJ10sXG4gICAgICAgIGJhY2tkcm9wQ2xhc3M6ICdiYWNrZHJvcCdcbiAgICAgIH0pXG4gICAgKTtcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKENvbmZpZ0FjdGlvbnMuYWRkaW5nT3ZlcmxheSh7IGlkOiB0aGlzLmNvbnN0cnVjdG9yLm5hbWUgfSkpO1xuICAgIHRoaXMub3ZlcmxheVJlZi5hdHRhY2gobmV3IFRlbXBsYXRlUG9ydGFsKHRoaXMudGVtcGxhdGUsIHRoaXMudmlld0NvbnRhaW5lclJlZikpO1xuICAgIHRoaXMub3ZlcmxheVJlZi5iYWNrZHJvcENsaWNrKCkuc3Vic2NyaWJlKChfKSA9PiB0aGlzLmhpZGUoKSk7XG4gIH1cblxuICBoaWRlKCkge1xuICAgIHRoaXMub3ZlcmxheVJlZj8uZGlzcG9zZSgpO1xuICAgIHRoaXMuY2xvc2VkLmVtaXQoKTtcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKENvbmZpZ0FjdGlvbnMuY2xvc2VPdmVybGF5KHsgaWQ6IHRoaXMuY29uc3RydWN0b3IubmFtZSB9KSk7XG4gIH1cblxuICBuZXdPYmplY3QoKSB7XG4gICAgcmV0dXJuIHsgaWQ6IHV1aWR2NCgpLCBvQ2xhc3M6ICcnLCBhdHRyaWJ1dGVzOiB7fSwgbWV0YWRhdGE6IHt9IH07XG4gIH1cblxuICBnZXQgdmFsaWQoKSB7XG4gICAgcmV0dXJuIChcbiAgICAgICghdGhpcy5vYmplY3QgfHwgSXRlbVV0aWxzLmlzVmFsaWRPYmplY3QodGhpcy50bXBPYmplY3QpKSAmJiAoIXRoaXMubGluayB8fCAodGhpcy5yZWxhdGlvbj8udHlwZUlkID8/IGZhbHNlKSlcbiAgICApO1xuICB9XG5cbiAgY3JlYXRlT2JqZWN0cygpIHtcbiAgICBsZXQgcmVsYXRpb24gPSB7XG4gICAgICBmcm9tOiB0aGlzLnNlbGVjdGVkSXRlbXNJZHMsXG4gICAgICB0bzogdGhpcy5yZWxhdGlvbj8uaXRlbUlkID8/ICcnLFxuICAgICAgdHlwZUlkOiB0aGlzLnJlbGF0aW9uPy50eXBlSWQgPz8gJycsXG4gICAgICBpbnZlcnNpb246IHRoaXMuaW52ZXJzaW9uXG4gICAgfTtcbiAgICBpZiAodGhpcy5vYmplY3QpIHtcbiAgICAgIHRoaXMudG1wT2JqZWN0ID0gSXRlbVV0aWxzLmVuc3VyZUl0ZW1JZEhhc0NvcnJlY3RGb3JtYXQodGhpcy50bXBPYmplY3QpO1xuICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChJdGVtQWN0aW9ucy5jcmVhdGUoeyBpdGVtOiB0aGlzLnRtcE9iamVjdCB9KSk7XG4gICAgICBpZiAodGhpcy5saW5rKSB7XG4gICAgICAgIHJlbGF0aW9uLmZyb20gPSBbdGhpcy50bXBPYmplY3QuaWRdO1xuICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKFJlbGF0aW9uVHlwZXNBY3Rpb25zLmNyZWF0ZVJlbGF0aW9uKHJlbGF0aW9uKSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goUmVsYXRpb25UeXBlc0FjdGlvbnMuY3JlYXRlUmVsYXRpb24ocmVsYXRpb24pKTtcbiAgICB9XG5cbiAgICB0aGlzLmhpZGUoKTtcbiAgfVxuXG4gIGdldCBhdHRyaWJ1dGVzKCkge1xuICAgIHJldHVybiB0aGlzLmNsYXNzZXMuZmluZCgoY2wpID0+IGNsLmlkID09PSB0aGlzLnRtcE9iamVjdC5vQ2xhc3MpPy5hdHRyaWJ1dGVzID8/IFtdO1xuICB9XG5cbiAgZmllbGRUeXBlKGF0dHJpYnV0ZTogQXR0cmlidXRlKSB7XG4gICAgcmV0dXJuIHRoaXMuZmllbGRzLmZpbmQoKGZpZWxkKSA9PiBhdHRyaWJ1dGUuZmllbGQgPT09IGZpZWxkLmlkKT8udHlwZTtcbiAgfVxuXG4gIGFzc2lnblZhbHVlKGF0dHJpYnV0ZTogQXR0cmlidXRlLCAkZXZlbnQ6IGFueSkge1xuICAgIGNvbnN0IHZhbHVlID1cbiAgICAgIHRoaXMuZmllbGRUeXBlKGF0dHJpYnV0ZSkgPT09IEZpZWxkVHlwZS5JTlNUQU5UICYmICRldmVudCAhPT0gJycgPyBuZXcgRGF0ZSgkZXZlbnQpLmdldFRpbWUoKSA6ICRldmVudDtcbiAgICBpZiAoIXRoaXMudG1wT2JqZWN0LmF0dHJpYnV0ZXNbYXR0cmlidXRlLm5hbWVdKSB7XG4gICAgICB0aGlzLnRtcE9iamVjdC5hdHRyaWJ1dGVzW2F0dHJpYnV0ZS5uYW1lXSA9IHsgdHlwZTogJ1ZBTFVFJywgbWV0YWRhdGE6IHt9LCB2YWx1ZSwgdmlzaWJsZTogdHJ1ZSB9O1xuICAgIH0gZWxzZSB7XG4gICAgICAodGhpcy50bXBPYmplY3QuYXR0cmlidXRlc1thdHRyaWJ1dGUubmFtZV0gYXMgQXR0cmlidXRlU2ltcGxlVmFsdWUpLnZhbHVlID0gdmFsdWU7XG4gICAgfVxuICB9XG5cbiAgdmFsdWUoYXR0cmlidXRlOiBBdHRyaWJ1dGUpIHtcbiAgICBjb25zdCB2YWx1ZSA9ICh0aGlzLnRtcE9iamVjdC5hdHRyaWJ1dGVzW2F0dHJpYnV0ZS5uYW1lXSBhcyBBdHRyaWJ1dGVTaW1wbGVWYWx1ZSk/LnZhbHVlO1xuICAgIGlmICh0aGlzLmZpZWxkVHlwZShhdHRyaWJ1dGUpID09PSBGaWVsZFR5cGUuSU5TVEFOVCkge1xuICAgICAgcmV0dXJuIHZhbHVlICE9PSB1bmRlZmluZWQgJiYgdmFsdWUgIT09ICcnID8gRGF0ZVV0aWxzLmZvcm1hdERhdGUobmV3IERhdGUodmFsdWUgYXMgc3RyaW5nIHwgbnVtYmVyKSkgOiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIHJldHVybiAoKHRoaXMudG1wT2JqZWN0LmF0dHJpYnV0ZXNbYXR0cmlidXRlLm5hbWVdIGFzIEF0dHJpYnV0ZVNpbXBsZVZhbHVlKSA/PyB7fSkudmFsdWU7XG4gIH1cblxuICB0b2dnbGVEYXRlUGlja2VyKCRldmVudDogRXZlbnQsIGlkOiBzdHJpbmcpIHtcbiAgICAkZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgaWYgKHRoaXMuc2VsZWN0ZWREYXRlUGlja2VyID09PSBpZCkge1xuICAgICAgdGhpcy5zZWxlY3RlZERhdGVQaWNrZXIgPSAnJztcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZWxlY3RlZERhdGVQaWNrZXIgPSBpZDtcbiAgICB9XG4gIH1cblxuICBjbG9zZURhdGVQaWNrZXIoJGV2ZW50OiBFdmVudCkge1xuICAgIGlmICghKCRldmVudC5jdXJyZW50VGFyZ2V0IGFzIEhUTUxFbGVtZW50KS5jb250YWlucygoJGV2ZW50IGFzIE1vdXNlRXZlbnQpLnJlbGF0ZWRUYXJnZXQgYXMgTm9kZSkpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWREYXRlUGlja2VyID0gJyc7XG4gICAgfVxuICB9XG5cbiAgbXVsdGlWYWx1ZXMoYXR0cmlidXRlOiBBdHRyaWJ1dGUpIHtcbiAgICByZXR1cm4gKCh0aGlzLnRtcE9iamVjdC5hdHRyaWJ1dGVzW2F0dHJpYnV0ZS5uYW1lXSBhcyBBdHRyaWJ1dGVNdWx0aXBsZVZhbHVlKSA/PyB7IHZhbHVlczogW10gfSkudmFsdWVzO1xuICB9XG5cbiAgcmVtb3ZlTXVsdGlWYWx1ZWQoYXR0cmlidXRlOiBBdHRyaWJ1dGUsIGk6IG51bWJlcikge1xuICAgICh0aGlzLnRtcE9iamVjdC5hdHRyaWJ1dGVzW2F0dHJpYnV0ZS5uYW1lXSBhcyBBdHRyaWJ1dGVNdWx0aXBsZVZhbHVlKS52YWx1ZXMuc3BsaWNlKGksIDEpO1xuICB9XG5cbiAgYWRkTXVsdGlWYWx1ZWQoYXR0cmlidXRlOiBBdHRyaWJ1dGUpIHtcbiAgICBpZiAoIXRoaXMudG1wT2JqZWN0LmF0dHJpYnV0ZXNbYXR0cmlidXRlLm5hbWVdKSB7XG4gICAgICB0aGlzLnRtcE9iamVjdC5hdHRyaWJ1dGVzW2F0dHJpYnV0ZS5uYW1lXSA9IHsgdHlwZTogJ01VTFRJJywgdmFsdWVzOiBbXSB9O1xuICAgIH1cbiAgICAodGhpcy50bXBPYmplY3QuYXR0cmlidXRlc1thdHRyaWJ1dGUubmFtZV0gYXMgQXR0cmlidXRlTXVsdGlwbGVWYWx1ZSkudmFsdWVzLnB1c2goe1xuICAgICAgdHlwZTogJ1ZBTFVFJyxcbiAgICAgIG1ldGFkYXRhOiB7fSxcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIHZhbHVlOiB1bmRlZmluZWQsXG4gICAgICB2aXNpYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgcmV0dXJuICh0aGlzLnRtcE9iamVjdC5hdHRyaWJ1dGVzW2F0dHJpYnV0ZS5uYW1lXSBhcyBBdHRyaWJ1dGVNdWx0aXBsZVZhbHVlKS52YWx1ZXMubGVuZ3RoIC0gMTtcbiAgfVxuXG4gIHZhbHVlTXVsdGkoYXR0cmlidXRlOiBBdHRyaWJ1dGUsIGk6IG51bWJlcikge1xuICAgIHJldHVybiB0aGlzLm11bHRpVmFsdWVzKGF0dHJpYnV0ZSlbaV0udmFsdWU7XG4gIH1cblxuICBhc3NpZ25WYWx1ZU11bHRpKGF0dHJpYnV0ZTogQXR0cmlidXRlLCAkZXZlbnQ6IGFueSwgaTogbnVtYmVyKSB7XG4gICAgY29uc3QgdmFsdWUgPSB0aGlzLmZpZWxkVHlwZShhdHRyaWJ1dGUpID09PSBGaWVsZFR5cGUuSU5TVEFOVCA/IG5ldyBEYXRlKCRldmVudCkuZ2V0VGltZSgpIDogJGV2ZW50O1xuICAgIGlmICghdGhpcy50bXBPYmplY3QuYXR0cmlidXRlc1thdHRyaWJ1dGUubmFtZV0pIHtcbiAgICAgIHRoaXMudG1wT2JqZWN0LmF0dHJpYnV0ZXNbYXR0cmlidXRlLm5hbWVdID0geyB0eXBlOiAnTVVMVEknLCB2YWx1ZXM6IFtdIH07XG4gICAgfVxuICAgIGlmICghKHRoaXMudG1wT2JqZWN0LmF0dHJpYnV0ZXNbYXR0cmlidXRlLm5hbWVdIGFzIEF0dHJpYnV0ZU11bHRpcGxlVmFsdWUpLnZhbHVlc1tpXSkge1xuICAgICAgKHRoaXMudG1wT2JqZWN0LmF0dHJpYnV0ZXNbYXR0cmlidXRlLm5hbWVdIGFzIEF0dHJpYnV0ZU11bHRpcGxlVmFsdWUpLnZhbHVlc1tpXSA9IHtcbiAgICAgICAgdHlwZTogJ1ZBTFVFJyxcbiAgICAgICAgbWV0YWRhdGE6IHt9LFxuICAgICAgICB2YWx1ZSxcbiAgICAgICAgdmlzaWJsZTogdHJ1ZVxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgKHRoaXMudG1wT2JqZWN0LmF0dHJpYnV0ZXNbYXR0cmlidXRlLm5hbWVdIGFzIEF0dHJpYnV0ZU11bHRpcGxlVmFsdWUpLnZhbHVlc1tpXS52YWx1ZSA9IHZhbHVlO1xuICAgIH1cbiAgfVxuXG4gIGNoYW5nZUNsYXNzKCRldmVudDogYW55KSB7XG4gICAgdGhpcy50bXBPYmplY3QgPSB0aGlzLm5ld09iamVjdCgpO1xuICAgIHRoaXMudG1wT2JqZWN0Lm9DbGFzcyA9ICRldmVudDtcbiAgICBpZiAodGhpcy5mcm9tID09PSAnbWFwJykge1xuICAgICAgdGhpcy5hdHRyaWJ1dGVzLmZvckVhY2goKGF0dHJpYnV0ZSkgPT4ge1xuICAgICAgICBpZiAoWydsYXRpdHVkZScsICdsYXQnXS5pbmRleE9mKGF0dHJpYnV0ZS5uYW1lKSA+PSAwKSB7XG4gICAgICAgICAgaWYgKGF0dHJpYnV0ZS5tdWx0aVZhbHVlZCkge1xuICAgICAgICAgICAgY29uc3QgaWR4ID0gdGhpcy5hZGRNdWx0aVZhbHVlZChhdHRyaWJ1dGUpO1xuICAgICAgICAgICAgdGhpcy5hc3NpZ25WYWx1ZU11bHRpKGF0dHJpYnV0ZSwgKHRoaXMuY29vcmRpbmF0ZXMgPz8gW10pWzBdLCBpZHgpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmFzc2lnblZhbHVlKGF0dHJpYnV0ZSwgKHRoaXMuY29vcmRpbmF0ZXMgPz8gW10pWzBdKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKFsnbG9uZ2l0dWRlJywgJ2xvbmcnLCAnbG9uJywgJ2xuZyddLmluZGV4T2YoYXR0cmlidXRlLm5hbWUpID49IDApIHtcbiAgICAgICAgICBpZiAoYXR0cmlidXRlLm11bHRpVmFsdWVkKSB7XG4gICAgICAgICAgICBjb25zdCBpZHggPSB0aGlzLmFkZE11bHRpVmFsdWVkKGF0dHJpYnV0ZSk7XG4gICAgICAgICAgICB0aGlzLmFzc2lnblZhbHVlTXVsdGkoYXR0cmlidXRlLCAodGhpcy5jb29yZGluYXRlcyA/PyBbXSlbMV0sIGlkeCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuYXNzaWduVmFsdWUoYXR0cmlidXRlLCAodGhpcy5jb29yZGluYXRlcyA/PyBbXSlbMV0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgc2V0UmF3TWV0aG9kKGF0dHJpYnV0ZTogQXR0cmlidXRlLCAkZXZlbnQ6IGFueSkge1xuICAgIHRoaXMubWV0aG9kID0gJGV2ZW50O1xuICAgIGlmICghdGhpcy50bXBPYmplY3QuYXR0cmlidXRlc1thdHRyaWJ1dGUubmFtZV0pIHtcbiAgICAgIHRoaXMudG1wT2JqZWN0LmF0dHJpYnV0ZXNbYXR0cmlidXRlLm5hbWVdID0ge1xuICAgICAgICB0eXBlOiAnVkFMVUUnLFxuICAgICAgICBtZXRhZGF0YToge30sXG4gICAgICAgIHZhbHVlOiAnJyxcbiAgICAgICAgdmlzaWJsZTogdHJ1ZVxuICAgICAgfTtcbiAgICB9XG4gICAgaWYgKCRldmVudCA9PT0gdGhpcy5IVFRQX09SSUdJTl9NRVRIT0QpIHtcbiAgICAgIHRoaXMuYXNzaWduTWV0YWRhdGEoYXR0cmlidXRlLCAnJywgSFRUUF9PUklHSU5fTUVUQURBVEEpO1xuICAgIH1cbiAgICBpZiAoJGV2ZW50ID09PSB0aGlzLlVQTE9BRF9NRVRIT0QpIHtcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIGRlbGV0ZSAodGhpcy50bXBPYmplY3QuYXR0cmlidXRlc1thdHRyaWJ1dGUubmFtZV0gYXMgQXR0cmlidXRlU2ltcGxlVmFsdWUpLm1ldGFkYXRhW0hUVFBfT1JJR0lOX01FVEFEQVRBXTtcbiAgICB9XG4gIH1cblxuICB2YWx1ZU1ldGFkYXRhKGF0dHJpYnV0ZTogQXR0cmlidXRlLCB0eXBlOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gKCgodGhpcy50bXBPYmplY3QuYXR0cmlidXRlc1thdHRyaWJ1dGUubmFtZV0gYXMgQXR0cmlidXRlU2ltcGxlVmFsdWUpID8/IHt9KS5tZXRhZGF0YSA/PyB7fSlbdHlwZV07XG4gIH1cblxuICBhc3NpZ25NZXRhZGF0YShhdHRyaWJ1dGU6IEF0dHJpYnV0ZSwgJGV2ZW50OiBhbnksIHR5cGU6IHN0cmluZykge1xuICAgIGlmICghKHRoaXMudG1wT2JqZWN0LmF0dHJpYnV0ZXNbYXR0cmlidXRlLm5hbWVdIGFzIEF0dHJpYnV0ZVNpbXBsZVZhbHVlKS5tZXRhZGF0YSkge1xuICAgICAgKHRoaXMudG1wT2JqZWN0LmF0dHJpYnV0ZXNbYXR0cmlidXRlLm5hbWVdIGFzIEF0dHJpYnV0ZVNpbXBsZVZhbHVlKS5tZXRhZGF0YSA9IHsgW3R5cGVdOiAkZXZlbnQgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgKHRoaXMudG1wT2JqZWN0LmF0dHJpYnV0ZXNbYXR0cmlidXRlLm5hbWVdIGFzIEF0dHJpYnV0ZVNpbXBsZVZhbHVlKS5tZXRhZGF0YVt0eXBlXSA9ICRldmVudDtcbiAgICB9XG4gIH1cblxuICB0b2dnbGVJbnZlcnNpb24oKSB7XG4gICAgdGhpcy5pbnZlcnNpb24gPSAhdGhpcy5pbnZlcnNpb247XG4gIH1cbn1cbiIsIjxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYS1idG4gLWxpbmstbGlrZVwiIChjbGljayk9XCJvcGVuQ3JlYXRlT2JqZWN0UGFuZWwoJGV2ZW50KVwiICpuZ0lmPVwibWVudVwiPlxuICB7eyAnQHByeS5jb250ZXh0LmNyZWF0ZU9iamVjdC50aXRsZS4nICsgKGxpbmsgJiYgb2JqZWN0ID8gJ2xpbmtlZE9iamVjdCcgOiBsaW5rID8gJ2xpbmsnIDogJ29iamVjdCcpIHwgaTE4biB9fVxuPC9idXR0b24+XG48YnV0dG9uXG4gIGlkPVwib2JqZWN0X2NyZWF0b3JfbGlua1wiXG4gIHR5cGU9XCJidXR0b25cIlxuICAoY2xpY2spPVwib3BlbkNyZWF0ZU9iamVjdFBhbmVsKCRldmVudClcIlxuICAqbmdJZj1cIiFtZW51XCJcbiAgY2xhc3M9XCJhLWJ0biBhLWJ0bi0tZ2hvc3QgLWNpcmNsZSB1LWZsb2F0aW5nIHUtZmxvYXRpbmctLWJvdHRvbS1yaWdodFwiXG4gIFt0aXRsZV09XCInQHByeS5jb250ZXh0LmNyZWF0ZU9iamVjdC50aXRsZS5vYmplY3QnIHwgaTE4blwiXG4+XG4gIDxzcGFuIGNsYXNzPVwidS12aXN1YWxseS1oaWRkZW5cIj57eyAnQHByeS5jb250ZXh0LmNyZWF0ZU9iamVjdC50aXRsZS5vYmplY3QnIHwgaTE4biB9fTwvc3Bhbj5cbiAgPHByeS1pY29uIGljb25Tdmc9XCJhZGRfY29sdW1uXCIgW3dpZHRoXT1cIjI0XCIgW2hlaWdodF09XCIyNFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvcHJ5LWljb24+XG48L2J1dHRvbj5cblxuPG5nLXRlbXBsYXRlICN0ZW1wbGF0ZT5cbiAgPGRpdiBjbGFzcz1cIm8tc2V0dGluZ3NfX3BvcHVwXCI+XG4gICAgPGRpdiBjbGFzcz1cIm8tc2V0dGluZ3NfX3BvcHVwX19jb250ZW50XCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibGlua1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibS1mb3JtLWxhYmVsLWZpZWxkXCI+XG4gICAgICAgICAgPGxhYmVsIGNsYXNzPVwiYS1sYWJlbFwiIGZvcj1cImNyZWF0ZW9iamVjdF9saW5rXCI+e3sgJ0BwcnkuY29udGV4dC5jcmVhdGVPYmplY3QudGl0bGUubGluaycgfCBpMThuIH19PC9sYWJlbD5cbiAgICAgICAgICA8cHJ5LXNlbGVjdFxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJyZWxhdGlvbi50eXBlSWRcIlxuICAgICAgICAgICAgW2l0ZW1zXT1cInJlbGF0aW9ucyQgfCBhc3luY1wiXG4gICAgICAgICAgICBbaXRlbXNBc09wdGlvbl09XCJ0cnVlXCJcbiAgICAgICAgICAgIGJpbmRMYWJlbD1cImxhYmVsXCJcbiAgICAgICAgICAgIGJpbmRWYWx1ZT1cImlkXCJcbiAgICAgICAgICAgIGNsYXNzPVwiYS1wcnktc2VsZWN0XCJcbiAgICAgICAgICAgIGlkPVwiY3JlYXRlb2JqZWN0X2xpbmtcIlxuICAgICAgICAgID48L3ByeS1zZWxlY3Q+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwibS1mb3JtLWxhYmVsLWZpZWxkXCI+XG4gICAgICAgICAgPGxhYmVsIGNsYXNzPVwiYS1sYWJlbFwiIGZvcj1cImNyZWF0ZW9iamVjdF9pbnZlcnNpb25cIj57e1xuICAgICAgICAgICAgJ0BwcnkuY29udGV4dC5jcmVhdGVPYmplY3QudGl0bGUuaW52ZXJzaW9uJyB8IGkxOG5cbiAgICAgICAgICB9fTwvbGFiZWw+XG4gICAgICAgICAgPHByeS1jaGVja2JveFxuICAgICAgICAgICAgaWQ9XCJjcmVhdGVvYmplY3RfaW52ZXJzaW9uXCJcbiAgICAgICAgICAgIFtuZ01vZGVsXT1cImludmVyc2lvblwiXG4gICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJ0b2dnbGVJbnZlcnNpb24oKVwiXG4gICAgICAgICAgPjwvcHJ5LWNoZWNrYm94PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICA8ZGl2IGNsYXNzPVwiby1vYmplY3QtcGFuZWxcIiAqbmdJZj1cIm9iamVjdFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibS1mb3JtLWxhYmVsLWZpZWxkXCI+XG4gICAgICAgICAgPGxhYmVsIGNsYXNzPVwiYS1sYWJlbFwiIGZvcj1cImNyZWF0ZW9iamVjdF9jbGFzc1wiPnt7ICdAcHJ5LmNvbnRleHQuY3JlYXRlT2JqZWN0LmNsYXNzJyB8IGkxOG4gfX08L2xhYmVsPlxuICAgICAgICAgIDxwcnktc2VsZWN0XG4gICAgICAgICAgICBbbmdNb2RlbF09XCJ0bXBPYmplY3Qub0NsYXNzXCJcbiAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cImNoYW5nZUNsYXNzKCRldmVudClcIlxuICAgICAgICAgICAgW2l0ZW1zXT1cImNsYXNzZXNcIlxuICAgICAgICAgICAgW2l0ZW1zQXNPcHRpb25dPVwidHJ1ZVwiXG4gICAgICAgICAgICBiaW5kVmFsdWU9XCJpZFwiXG4gICAgICAgICAgICBiaW5kTGFiZWw9XCJuYW1lXCJcbiAgICAgICAgICAgIGNsYXNzPVwiYS1wcnktc2VsZWN0XCJcbiAgICAgICAgICAgIGlkPVwiY3JlYXRlb2JqZWN0X2NsYXNzXCJcbiAgICAgICAgICA+PC9wcnktc2VsZWN0PlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBhdHRyaWJ1dGUgb2YgYXR0cmlidXRlc1wiIFtjbGFzcy5tdWx0aS12YWx1ZV09XCJhdHRyaWJ1dGUubXVsdGlWYWx1ZWRcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibS1mb3JtLWxhYmVsLWZpZWxkXCI+XG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJhLWxhYmVsXCI+e3sgYXR0cmlidXRlLm5hbWUgfX08L2xhYmVsPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFhdHRyaWJ1dGUubXVsdGlWYWx1ZWRcIj5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwiZmllbGRUeXBlKGF0dHJpYnV0ZSlcIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCJGaWVsZFR5cGUuSU5TVEFOVFwiPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImEtZGF0ZS1pbnB1dFwiIHRhYmluZGV4PVwiLTFcIiAoYmx1cik9XCJjbG9zZURhdGVQaWNrZXIoJGV2ZW50KVwiPlxuICAgICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiZGF0ZXRpbWUtbG9jYWxcIlxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYS1mb3JtLWZpZWxkXCJcbiAgICAgICAgICAgICAgICAgICAgICBbbmdNb2RlbF09XCJ2YWx1ZShhdHRyaWJ1dGUpXCJcbiAgICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJhc3NpZ25WYWx1ZShhdHRyaWJ1dGUsICRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYS1vcGVuLWRhdGUtcGlja2VyXCIgKG1vdXNlZG93bik9XCJ0b2dnbGVEYXRlUGlja2VyKCRldmVudCwgYXR0cmlidXRlLmlkKVwiPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGF0ZS1waWNrZXItY29udGFpbmVyXCIgKm5nSWY9XCJzZWxlY3RlZERhdGVQaWNrZXIgPT09IGF0dHJpYnV0ZS5pZFwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxwcnktZGF0ZS1waWNrZXJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ01vZGVsXT1cInZhbHVlKGF0dHJpYnV0ZSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwiYXNzaWduVmFsdWUoYXR0cmlidXRlLCAkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtyb3VuZFNlbGVjdGlvbl09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFt0aW1lUGlja2VyXT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgID48L3ByeS1kYXRlLXBpY2tlcj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCJGaWVsZFR5cGUuREVDSU1BTFwiPlxuICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJudW1iZXJcIlxuICAgICAgICAgICAgICAgICAgICBzdGVwPVwiYW55XCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhLWZvcm0tZmllbGRcIlxuICAgICAgICAgICAgICAgICAgICBbbmdNb2RlbF09XCJ2YWx1ZShhdHRyaWJ1dGUpXCJcbiAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwiYXNzaWduVmFsdWUoYXR0cmlidXRlLCAkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiRmllbGRUeXBlLklOVEVHRVJcIj5cbiAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwibnVtYmVyXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhLWZvcm0tZmllbGRcIlxuICAgICAgICAgICAgICAgICAgICBbbmdNb2RlbF09XCJ2YWx1ZShhdHRyaWJ1dGUpXCJcbiAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwiYXNzaWduVmFsdWUoYXR0cmlidXRlLCAkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hEZWZhdWx0PlxuICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhLWZvcm0tZmllbGRcIlxuICAgICAgICAgICAgICAgICAgICBbbmdNb2RlbF09XCJ2YWx1ZShhdHRyaWJ1dGUpXCJcbiAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwiYXNzaWduVmFsdWUoYXR0cmlidXRlLCAkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiRmllbGRUeXBlLlJBV1wiPlxuICAgICAgICAgICAgICAgICAgPHByeS1zZWxlY3RcbiAgICAgICAgICAgICAgICAgICAgW25nTW9kZWxdPVwibWV0aG9kXCJcbiAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwic2V0UmF3TWV0aG9kKGF0dHJpYnV0ZSwgJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgIFtpdGVtc109XCJyYXdNZXRob2RzXCJcbiAgICAgICAgICAgICAgICAgICAgW2l0ZW1zQXNPcHRpb25dPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgIGJpbmRWYWx1ZT1cImlkXCJcbiAgICAgICAgICAgICAgICAgICAgYmluZExhYmVsPVwibmFtZVwiXG4gICAgICAgICAgICAgICAgICAgIFtsYWJlbFRyYW5zbGF0ZV09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhLXByeS1zZWxlY3RcIlxuICAgICAgICAgICAgICAgICAgPjwvcHJ5LXNlbGVjdD5cbiAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYS1mb3JtLWZpZWxkXCJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJtZXRob2QgPT09IEhUVFBfT1JJR0lOX01FVEhPRFwiXG4gICAgICAgICAgICAgICAgICAgIFtuZ01vZGVsXT1cInZhbHVlTWV0YWRhdGEoYXR0cmlidXRlLCBIVFRQX09SSUdJTl9NRVRBREFUQSlcIlxuICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJhc3NpZ25NZXRhZGF0YShhdHRyaWJ1dGUsICRldmVudCwgSFRUUF9PUklHSU5fTUVUQURBVEEpXCJcbiAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibWV0aG9kID09PSBVUExPQURfTUVUSE9EXCI+XG4gICAgICAgICAgICAgICAgICAgIDxwcnktdXBsb2FkXG4gICAgICAgICAgICAgICAgICAgICAgbW9kZT1cImRvY1wiXG4gICAgICAgICAgICAgICAgICAgICAgYWNjZXB0PVwiaW1hZ2UvKix2aWRlby8qXCJcbiAgICAgICAgICAgICAgICAgICAgICAodXBsb2FkZWQpPVwiYXNzaWduVmFsdWUoYXR0cmlidXRlLCAkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvcHJ5LXVwbG9hZD5cbiAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm11bHRpLXZhbHVlLWNvbnRhaW5lclwiICpuZ0lmPVwiYXR0cmlidXRlLm11bHRpVmFsdWVkXCI+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIGNsYXNzPVwiYnV0dG9uLWFkZCBhLWJ0biBhLWJ0bi0tc2Vjb25kYXJ5IGEtYnRuLS1pY29uLXRleHQgLXNpemUtc21cIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiYWRkTXVsdGlWYWx1ZWQoYXR0cmlidXRlKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxwcnktaWNvbiBpY29uU3ZnPVwiYWRkXCI+PC9wcnktaWNvbj5cbiAgICAgICAgICAgICAgPHNwYW4+e3sgJ0BwcnkuY29udGV4dC5jcmVhdGVPYmplY3QuYWRkTXVsdGlGaWVsZCcgfCBpMThuOiB7IG5hbWU6IGF0dHJpYnV0ZS5uYW1lIH0gfX08L3NwYW4+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdWx0aS12YWx1ZVwiICpuZ0Zvcj1cImxldCBtdWx0aVZhbHVlIG9mIG11bHRpVmFsdWVzKGF0dHJpYnV0ZSk7IGxldCBpID0gaW5kZXhcIj5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwiZmllbGRUeXBlKGF0dHJpYnV0ZSlcIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCJGaWVsZFR5cGUuSU5TVEFOVFwiPlxuICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJkYXRldGltZS1sb2NhbFwiXG4gICAgICAgICAgICAgICAgICAgIFtuZ01vZGVsXT1cInZhbHVlTXVsdGkoYXR0cmlidXRlLCBpKVwiXG4gICAgICAgICAgICAgICAgICAgIChmb2N1c291dCk9XCJhc3NpZ25WYWx1ZU11bHRpKGF0dHJpYnV0ZSwgJGV2ZW50LCBpKVwiXG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIkZpZWxkVHlwZS5ERUNJTUFMXCI+XG4gICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cIm51bWJlclwiXG4gICAgICAgICAgICAgICAgICAgIHN0ZXA9XCJhbnlcIlxuICAgICAgICAgICAgICAgICAgICBbbmdNb2RlbF09XCJ2YWx1ZU11bHRpKGF0dHJpYnV0ZSwgaSlcIlxuICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJhc3NpZ25WYWx1ZU11bHRpKGF0dHJpYnV0ZSwgJGV2ZW50LCBpKVwiXG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIkZpZWxkVHlwZS5JTlRFR0VSXCI+XG4gICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cIm51bWJlclwiXG4gICAgICAgICAgICAgICAgICAgIFtuZ01vZGVsXT1cInZhbHVlTXVsdGkoYXR0cmlidXRlLCBpKVwiXG4gICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cImFzc2lnblZhbHVlTXVsdGkoYXR0cmlidXRlLCAkZXZlbnQsIGkpXCJcbiAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hEZWZhdWx0PlxuICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgW25nTW9kZWxdPVwidmFsdWVNdWx0aShhdHRyaWJ1dGUsIGkpXCJcbiAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwiYXNzaWduVmFsdWVNdWx0aShhdHRyaWJ1dGUsICRldmVudCwgaSlcIlxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uIChjbGljayk9XCJyZW1vdmVNdWx0aVZhbHVlZChhdHRyaWJ1dGUsIGkpXCI+XG4gICAgICAgICAgICAgICAgICA8cHJ5LWljb24gaWNvblN2Zz1cImRlbGV0ZVwiPjwvcHJ5LWljb24+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cIm0tYnRuLWdyb3VwXCI+XG4gICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImEtYnRuIGEtYnRuLS1zZWNvbmRhcnlcIiAoY2xpY2spPVwiaGlkZSgpXCI+XG4gICAgICAgIHt7ICdAcHJ5LmNvbnRleHQuY2FuY2VsJyB8IGkxOG4gfX1cbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJhLWJ0biBhLWJ0bi0tcHJpbWFyeVwiIChjbGljayk9XCJjcmVhdGVPYmplY3RzKClcIiBbZGlzYWJsZWRdPVwiIXZhbGlkXCI+XG4gICAgICAgIHt7ICdAcHJ5LmNvbnRleHQuY3JlYXRlJyB8IGkxOG4gfX1cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=