@provoly/hypervisor 0.0.110 → 0.0.112

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 (24) hide show
  1. package/esm2022/src/lib/event/detail/event-detail.component.mjs +8 -5
  2. package/esm2022/src/lib/event/procedure-association-modal/procedure-association-modal.component.mjs +1 -1
  3. package/esm2022/src/lib/event-summary/page/event-summary-page.component.mjs +1 -1
  4. package/esm2022/src/lib/general/i18n/fr.translations.mjs +2 -2
  5. package/esm2022/src/lib/general/procedure-actions/action-parameters/email/email-action-display.component.mjs +3 -3
  6. package/esm2022/src/lib/general/procedure-actions/action-parameters/no-param/no-params-action-display.component.mjs +3 -3
  7. package/esm2022/src/lib/general/procedure-actions/action-parameters/other/other-action-display.component.mjs +3 -3
  8. package/esm2022/src/lib/general/procedure-actions/action-parameters/phone/phone-action-display.component.mjs +3 -3
  9. package/esm2022/src/lib/general/procedure-actions/action-parameters/service/create-service.component.mjs +1 -1
  10. package/esm2022/src/lib/general/procedure-actions/action-parameters/service/service-action-display.component.mjs +3 -3
  11. package/esm2022/src/lib/general/procedure-actions/procedure-actions.component.mjs +15 -13
  12. package/esm2022/src/lib/model/procedure/hyp-procedure.interface.mjs +1 -1
  13. package/esm2022/src/lib/procedure/model-detail/procedure-model-detail.component.mjs +1 -1
  14. package/esm2022/src/lib/store/event/event.service.mjs +10 -3
  15. package/fesm2022/provoly-hypervisor.mjs +43 -32
  16. package/fesm2022/provoly-hypervisor.mjs.map +1 -1
  17. package/package.json +2 -2
  18. package/src/lib/event/detail/event-detail.component.d.ts +1 -0
  19. package/src/lib/general/procedure-actions/procedure-actions.component.d.ts +1 -1
  20. package/src/lib/model/procedure/hyp-procedure.interface.d.ts +2 -0
  21. package/styles/components/_o-hvy-comments.scss +8 -1
  22. package/styles/components/_o-hvy-event-detail.scss +3 -2
  23. package/styles/components/_o-hvy-events-table.scss +4 -0
  24. package/styles/components/_o-hvy-procedure-actions.scss +4 -0
@@ -78,7 +78,7 @@ export class ProcedureModelDetailComponent extends SubscriptionnerDirective {
78
78
  this._outputModifications();
79
79
  }
80
80
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: ProcedureModelDetailComponent, deps: [{ token: i1.Store }], target: i0.ɵɵFactoryTarget.Component }); }
81
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.4", type: ProcedureModelDetailComponent, selector: "hvy-procedure-model-detail", inputs: { model: "model", username: "username", title: "title", readonly: "readonly", cancelModifications: "cancelModifications" }, outputs: { eventErrors: "eventErrors", modified: "modified" }, usesInheritance: true, ngImport: i0, template: "<div class=\"o-hvy-procedure-detail\">\n <h1>{{ title ?? '@hvy.procedure.detail' | i18n }}</h1>\n <div class=\"o-hvy-procedure-detail__container\">\n <div class=\"o-hvy-procedure-detail__container__scrollable\">\n @if (modifiedModel; as model) {\n <div class=\"o-hvy-procedure-detail__form\">\n <h3>{{ '@hvy.procedure.formTitle' | i18n }}</h3>\n <table>\n <tbody>\n <tr>\n <td>{{ '@hvy.procedure.title' | i18n }}<span class=\"required\">*</span> :</td>\n <td>\n <input\n type=\"text\"\n class=\"a-form-field\"\n [class.-error]=\"hasError('name')\"\n [value]=\"model.name\"\n (change)=\"modify('name', $event)\"\n [maxLength]=\"50\"\n [readonly]=\"readonly\"\n />\n </td>\n </tr>\n <tr>\n <td>{{ '@hvy.procedure.description' | i18n }}<span class=\"required\">*</span> :</td>\n <td>\n <textarea\n [ngModel]=\"model.description\"\n class=\"a-form-field\"\n [class.-error]=\"hasError('description')\"\n (ngModelChange)=\"modify('description', $event)\"\n [maxLength]=\"256\"\n [readonly]=\"readonly\"\n ></textarea>\n </td>\n </tr>\n <tr>\n <td>{{ '@hvy.event.domain.name' | i18n }}<span class=\"required\">*</span> :</td>\n <td>\n <pry-select\n [items]=\"DOMAINS\"\n [ngModel]=\"model.domain\"\n i18nPrefix=\"@hvy.event.domain.\"\n [class.-error]=\"hasError('domain')\"\n (ngModelChange)=\"modify('domain', $event)\"\n [disabled]=\"readonly\"\n ></pry-select>\n </td>\n </tr>\n <tr>\n <td>{{ '@hvy.procedure.creator' | i18n }} :</td>\n <td>\n <input type=\"text\" class=\"a-form-field\" [value]=\"model.creator\" readonly />\n </td>\n </tr>\n @if (model.id > 0) {\n <tr>\n <td>{{ '@hvy.event.log.event.id' | i18n }} :</td>\n <td>\n <input type=\"text\" class=\"a-form-field\" [value]=\"padId.fn(model.id)\" readonly />\n </td>\n </tr>\n }\n @if (!!model.id) {\n <tr>\n <td>{{ '@hvy.event.creationDate' | i18n }} :</td>\n <td>\n <input\n type=\"datetime-local\"\n class=\"a-form-field\"\n [value]=\"model.creationDate | forDateTimeLocal\"\n readonly\n />\n </td>\n </tr>\n <tr>\n <td>{{ '@hvy.event.lastModificationDate' | i18n }} :</td>\n <td>\n <input\n type=\"datetime-local\"\n class=\"a-form-field\"\n [value]=\"model.lastModificationDate | forDateTimeLocal\"\n readonly\n />\n </td>\n </tr>\n }\n </tbody>\n </table>\n </div>\n <div class=\"o-hvy-procedure-detail__actions\">\n <h3>{{ '@hvy.procedure.actions' | i18n }} ({{ model.actions.length }})</h3>\n <hvy-procedure-actions\n [actions]=\"model.actions\"\n (modified)=\"updateActions($event)\"\n [readonly]=\"readonly\"\n mode=\"model\"\n [enableEditActions]=\"true\"\n ></hvy-procedure-actions>\n </div>\n }\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i3.PrySelectComponent, selector: "pry-select", inputs: ["items", "clearable", "multiple", "closeOnSelect", "placeholder", "isForm", "required", "name", "readonly", "autocomplete", "alwaysShowAutosuggestedValues", "externalAutocompleteService", "bindValue", "bindLabel", "iconSize", "bindIcon", "template", "i18nPrefix", "bindClasses", "loading", "elementRef"], outputs: ["searched", "cleared", "clicked"] }, { kind: "component", type: i4.ProcedureActionsComponent, selector: "hvy-procedure-actions", inputs: ["mode", "me", "readonly", "enableEditActions", "actions"], outputs: ["modified"] }, { kind: "pipe", type: i3.I18nPipe, name: "i18n" }, { kind: "pipe", type: i5.ForDatetimeLocalPipe, name: "forDateTimeLocal" }] }); }
81
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.4", type: ProcedureModelDetailComponent, selector: "hvy-procedure-model-detail", inputs: { model: "model", username: "username", title: "title", readonly: "readonly", cancelModifications: "cancelModifications" }, outputs: { eventErrors: "eventErrors", modified: "modified" }, usesInheritance: true, ngImport: i0, template: "<div class=\"o-hvy-procedure-detail\">\n <h1>{{ title ?? '@hvy.procedure.detail' | i18n }}</h1>\n <div class=\"o-hvy-procedure-detail__container\">\n <div class=\"o-hvy-procedure-detail__container__scrollable\">\n @if (modifiedModel; as model) {\n <div class=\"o-hvy-procedure-detail__form\">\n <h3>{{ '@hvy.procedure.formTitle' | i18n }}</h3>\n <table>\n <tbody>\n <tr>\n <td>{{ '@hvy.procedure.title' | i18n }}<span class=\"required\">*</span> :</td>\n <td>\n <input\n type=\"text\"\n class=\"a-form-field\"\n [class.-error]=\"hasError('name')\"\n [value]=\"model.name\"\n (change)=\"modify('name', $event)\"\n [maxLength]=\"50\"\n [readonly]=\"readonly\"\n />\n </td>\n </tr>\n <tr>\n <td>{{ '@hvy.procedure.description' | i18n }}<span class=\"required\">*</span> :</td>\n <td>\n <textarea\n [ngModel]=\"model.description\"\n class=\"a-form-field\"\n [class.-error]=\"hasError('description')\"\n (ngModelChange)=\"modify('description', $event)\"\n [maxLength]=\"256\"\n [readonly]=\"readonly\"\n ></textarea>\n </td>\n </tr>\n <tr>\n <td>{{ '@hvy.event.domain.name' | i18n }}<span class=\"required\">*</span> :</td>\n <td>\n <pry-select\n [items]=\"DOMAINS\"\n [ngModel]=\"model.domain\"\n i18nPrefix=\"@hvy.event.domain.\"\n [class.-error]=\"hasError('domain')\"\n (ngModelChange)=\"modify('domain', $event)\"\n [disabled]=\"readonly\"\n ></pry-select>\n </td>\n </tr>\n <tr>\n <td>{{ '@hvy.procedure.creator' | i18n }} :</td>\n <td>\n <input type=\"text\" class=\"a-form-field\" [value]=\"model.creator\" readonly />\n </td>\n </tr>\n @if (model.id > 0) {\n <tr>\n <td>{{ '@hvy.event.log.event.id' | i18n }} :</td>\n <td>\n <input type=\"text\" class=\"a-form-field\" [value]=\"padId.fn(model.id)\" readonly />\n </td>\n </tr>\n }\n @if (!!model.id) {\n <tr>\n <td>{{ '@hvy.event.creationDate' | i18n }} :</td>\n <td>\n <input\n type=\"datetime-local\"\n class=\"a-form-field\"\n [value]=\"model.creationDate | forDateTimeLocal\"\n readonly\n />\n </td>\n </tr>\n <tr>\n <td>{{ '@hvy.event.lastModificationDate' | i18n }} :</td>\n <td>\n <input\n type=\"datetime-local\"\n class=\"a-form-field\"\n [value]=\"model.lastModificationDate | forDateTimeLocal\"\n readonly\n />\n </td>\n </tr>\n }\n </tbody>\n </table>\n </div>\n <div class=\"o-hvy-procedure-detail__actions\">\n <h3>{{ '@hvy.procedure.actions' | i18n }} ({{ model.actions.length }})</h3>\n <hvy-procedure-actions\n [actions]=\"model.actions\"\n (modified)=\"updateActions($event)\"\n [readonly]=\"readonly\"\n mode=\"model\"\n [enableEditActions]=\"true\"\n ></hvy-procedure-actions>\n </div>\n }\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i3.PrySelectComponent, selector: "pry-select", inputs: ["items", "clearable", "multiple", "closeOnSelect", "placeholder", "isForm", "required", "name", "autocomplete", "alwaysShowAutosuggestedValues", "externalAutocompleteService", "bindValue", "bindLabel", "iconSize", "bindIcon", "template", "i18nPrefix", "bindClasses", "loading", "elementRef"], outputs: ["searched", "cleared", "clicked"] }, { kind: "component", type: i4.ProcedureActionsComponent, selector: "hvy-procedure-actions", inputs: ["mode", "me", "readonly", "enableEditActions", "actions"], outputs: ["modified"] }, { kind: "pipe", type: i3.I18nPipe, name: "i18n" }, { kind: "pipe", type: i5.ForDatetimeLocalPipe, name: "forDateTimeLocal" }] }); }
82
82
  }
83
83
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: ProcedureModelDetailComponent, decorators: [{
84
84
  type: Component,
@@ -5,6 +5,7 @@ import { HypSelectors } from '../hypervisor/hypervisor.selectors';
5
5
  import { EventSelectors } from './event.selectors';
6
6
  import { eventForWriteAPI } from '../../model/event/hyp-event-detail.interface';
7
7
  import { procedureForWriteAPI } from '../../model/procedure/hyp-procedure.interface';
8
+ import { v4 } from 'uuid';
8
9
  import * as i0 from "@angular/core";
9
10
  import * as i1 from "@angular/common/http";
10
11
  import * as i2 from "@ngrx/store";
@@ -68,12 +69,18 @@ export class EventService {
68
69
  }
69
70
  status(event, status, comment) {
70
71
  return this.store.select(HypSelectors.url).pipe(mergeMap((url) => {
71
- return this.httpClient.put(encodeURI(`${url}/events/id/${event.id}/close`), { status, comment });
72
+ return this.httpClient.put(encodeURI(`${url}/events/id/${event.id}/close`), {
73
+ id: v4(),
74
+ message: comment
75
+ });
72
76
  }));
73
77
  }
74
78
  statusProcedure(procedure, status, comment) {
75
79
  return this.store.select(HypSelectors.url).pipe(mergeMap((url) => {
76
- return this.httpClient.put(encodeURI(`${url}/procedures/id/${procedure.id}/close`), { status, comment });
80
+ return this.httpClient.put(encodeURI(`${url}/procedures/id/${procedure.id}/close`), {
81
+ id: v4(),
82
+ message: comment
83
+ });
77
84
  }));
78
85
  }
79
86
  associateProcedure(procedureId, eventIds) {
@@ -90,4 +97,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImpor
90
97
  providedIn: 'root'
91
98
  }]
92
99
  }], ctorParameters: () => [{ type: i1.HttpClient }, { type: i2.Store }] });
93
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Byb3ZvbHkvaHlwZXJ2aXNvci9zcmMvbGliL3N0b3JlL2V2ZW50L2V2ZW50LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQWMsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDOUQsT0FBTyxFQUFFLFFBQVEsRUFBYyxjQUFjLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFNUQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQW1CLE1BQU0sOENBQThDLENBQUM7QUFDakcsT0FBTyxFQUFnQixvQkFBb0IsRUFBRSxNQUFNLCtDQUErQyxDQUFDOzs7O0FBR25HLE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsQ0FBQztBQUU3QyxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRztJQUMvQixNQUFNLEVBQUUsUUFBUTtJQUNoQixPQUFPLEVBQUUsU0FBUztDQUNuQixDQUFDO0FBS0YsTUFBTSxPQUFPLFlBQVk7SUFDdkIsWUFDVSxVQUFzQixFQUN0QixLQUFpQjtRQURqQixlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ3RCLFVBQUssR0FBTCxLQUFLLENBQVk7SUFDeEIsQ0FBQztJQUVKLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxFQUFFLFFBQVEsR0FBRyxlQUFlLENBQUMsS0FBSztRQUNsRCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQzdDLGNBQWMsQ0FB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bGFyL2NvcmUnO1xuaW1wb3J0IHsgSHR0cENsaWVudCwgSHR0cFBhcmFtcyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IG1lcmdlTWFwLCBPYnNlcnZhYmxlLCB3aXRoTGF0ZXN0RnJvbSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgU3RvcmUgfSBmcm9tICdAbmdyeC9zdG9yZSc7XG5pbXBvcnQgeyBIeXBTZWxlY3RvcnMgfSBmcm9tICcuLi9oeXBlcnZpc29yL2h5cGVydmlzb3Iuc2VsZWN0b3JzJztcbmltcG9ydCB7IEV2ZW50U2VsZWN0b3JzIH0gZnJvbSAnLi9ldmVudC5zZWxlY3RvcnMnO1xuaW1wb3J0IHsgZXZlbnRGb3JXcml0ZUFQSSwgSHlwRXZlbnREZXRhaWxzIH0gZnJvbSAnLi4vLi4vbW9kZWwvZXZlbnQvaHlwLWV2ZW50LWRldGFpbC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgSHlwUHJvY2VkdXJlLCBwcm9jZWR1cmVGb3JXcml0ZUFQSSB9IGZyb20gJy4uLy4uL21vZGVsL3Byb2NlZHVyZS9oeXAtcHJvY2VkdXJlLmludGVyZmFjZSc7XG5pbXBvcnQgeyBIeXBFdmVudFRvb2x0aXAgfSBmcm9tICcuLi8uLi9tb2RlbC9ldmVudC9oeXAtZXZlbnQtdG9vbHRpcC5pbnRlcmZhY2UnO1xuXG5leHBvcnQgY29uc3QgUEFHRV9TSVpFX0ZFVENIID0geyB2YWx1ZTogMjAgfTtcblxuZXhwb3J0IGNvbnN0IEtOT1dOX0ZJTFRFUl9TRVRTID0ge1xuICBFVkVOVFM6ICdldmVudHMnLFxuICBTVU1NQVJZOiAnc3VtbWFyeSdcbn07XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIEV2ZW50U2VydmljZSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgaHR0cENsaWVudDogSHR0cENsaWVudCxcbiAgICBwcml2YXRlIHN0b3JlOiBTdG9yZTxhbnk+XG4gICkge31cblxuICBsaXN0KHN0YXJ0V2l0aCA9IDAsIHBhZ2VTaXplID0gUEFHRV9TSVpFX0ZFVENILnZhbHVlKTogT2JzZXJ2YWJsZTxBcnJheTxIeXBFdmVudERldGFpbHM+PiB7XG4gICAgcmV0dXJuIHRoaXMuc3RvcmUuc2VsZWN0KEh5cFNlbGVjdG9ycy51cmwpLnBpcGUoXG4gICAgICB3aXRoTGF0ZXN0RnJvbSh0aGlzLnN0b3JlLnNlbGVjdChFdmVudFNlbGVjdG9ycy5maWx0ZXJzKSwgdGhpcy5zdG9yZS5zZWxlY3QoRXZlbnRTZWxlY3RvcnMuc29ydCkpLFxuICAgICAgbWVyZ2VNYXAoKFt1cmwsIGZpbHRlclNldHMsIHNvcnRdKSA9PiB7XG4gICAgICAgIGNvbnN0IGZpbHRlcnMgPSBmaWx0ZXJTZXRzW0tOT1dOX0ZJTFRFUl9TRVRTLkVWRU5UU10gPz8ge307XG4gICAgICAgIGxldCBwYXJhbXMgPSBuZXcgSHR0cFBhcmFtcygpO1xuICAgICAgICBPYmplY3Qua2V5cyhmaWx0ZXJzKS5mb3JFYWNoKChmaWx0ZXIpID0+IHtcbiAgICAgICAgICBmaWx0ZXJzW2ZpbHRlcl0uZm9yRWFjaCgoZmlsdGVyVmFsdWUpID0+IHtcbiAgICAgICAgICAgIHBhcmFtcyA9IHBhcmFtcy5hcHBlbmQoZmlsdGVyLCBmaWx0ZXJWYWx1ZSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCdwYWdlJywgc3RhcnRXaXRoIC8gcGFnZVNpemUgKyAxKTtcbiAgICAgICAgaWYgKHNvcnQpIHtcbiAgICAgICAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCdzb3J0Jywgc29ydC5maWVsZCkuc2V0KCdvcmRlcicsIHNvcnQub3JkZXIpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQuZ2V0PEFycmF5PEh5cEV2ZW50RGV0YWlscz4+KGVuY29kZVVSSShgJHt1cmx9L2V2ZW50c2ApLCB7IHBhcmFtcyB9KTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIGdldChpZDogbnVtYmVyKSB7XG4gICAgcmV0dXJuIHRoaXMuc3RvcmUuc2VsZWN0KEh5cFNlbGVjdG9ycy51cmwpLnBpcGUoXG4gICAgICBtZXJnZU1hcCgodXJsKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQuZ2V0PEh5cEV2ZW50RGV0YWlscz4oZW5jb2RlVVJJKGAke3VybH0vZXZlbnRzL2lkLyR7aWR9YCkpO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgZ2V0VG9vbHRpcEluZm8obmFtZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuc3RvcmUuc2VsZWN0KEh5cFNlbGVjdG9ycy51cmwpLnBpcGUoXG4gICAgICBtZXJnZU1hcCgodXJsKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQuZ2V0PEh5cEV2ZW50VG9vbHRpcD4oZW5jb2RlVVJJKGAke3VybH0vZXF1aXBtZW50cy9uYW1lLyR7bmFtZX1gKSk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBnZXRQcm9jZWR1cmUoaWQ6IG51bWJlcikge1xuICAgIHJldHVybiB0aGlzLnN0b3JlLnNlbGVjdChIeXBTZWxlY3RvcnMudXJsKS5waXBlKFxuICAgICAgbWVyZ2VNYXAoKHVybCkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LmdldDxIeXBQcm9jZWR1cmU+KGVuY29kZVVSSShgJHt1cmx9L3Byb2NlZHVyZXMvaWQvJHtpZH1gKSk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBzYXZlKGV2ZW50OiBIeXBFdmVudERldGFpbHMpIHtcbiAgICBjb25zdCB0b1NlbmQgPSB7IC4uLmV2ZW50IH0gYXMgUGFydGlhbDxIeXBFdmVudERldGFpbHM+O1xuICAgIGlmIChldmVudC5pZCA8IDApIHtcbiAgICAgIGRlbGV0ZSB0b1NlbmQuaWQ7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnN0b3JlLnNlbGVjdChIeXBTZWxlY3RvcnMudXJsKS5waXBlKFxuICAgICAgbWVyZ2VNYXAoKHVybCkgPT4ge1xuICAgICAgICBpZiAoISF0b1NlbmQuaWQpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LnB1dDxIeXBFdmVudERldGFpbHM+KFxuICAgICAgICAgICAgZW5jb2RlVVJJKGAke3VybH0vZXZlbnRzL2lkLyR7dG9TZW5kLmlkfWApLFxuICAgICAgICAgICAgZXZlbnRGb3JXcml0ZUFQSShldmVudClcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQucG9zdDxIeXBFdmVudERldGFpbHM+KGVuY29kZVVSSShgJHt1cmx9L2V2ZW50c2ApLCBldmVudEZvcldyaXRlQVBJKGV2ZW50KSk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBzYXZlUHJvY2VkdXJlKHByb2NlZHVyZTogSHlwUHJvY2VkdXJlKSB7XG4gICAgcmV0dXJuIHRoaXMuc3RvcmUuc2VsZWN0KEh5cFNlbGVjdG9ycy51cmwpLnBpcGUoXG4gICAgICBtZXJnZU1hcCgodXJsKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQucHV0PHZvaWQ+KFxuICAgICAgICAgIGVuY29kZVVSSShgJHt1cmx9L3Byb2NlZHVyZXMvaWQvJHtwcm9jZWR1cmUuaWR9YCksXG4gICAgICAgICAgcHJvY2VkdXJlRm9yV3JpdGVBUEkocHJvY2VkdXJlKVxuICAgICAgICApO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgc3RhdHVzKGV2ZW50OiBIeXBFdmVudERldGFpbHMsIHN0YXR1czogc3RyaW5nLCBjb21tZW50OiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5zdG9yZS5zZWxlY3QoSHlwU2VsZWN0b3JzLnVybCkucGlwZShcbiAgICAgIG1lcmdlTWFwKCh1cmwpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5wdXQ8dm9pZD4oZW5jb2RlVVJJKGAke3VybH0vZXZlbnRzL2lkLyR7ZXZlbnQuaWR9L2Nsb3NlYCksIHsgc3RhdHVzLCBjb21tZW50IH0pO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgc3RhdHVzUHJvY2VkdXJlKHByb2NlZHVyZTogSHlwUHJvY2VkdXJlLCBzdGF0dXM6IHN0cmluZywgY29tbWVudDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuc3RvcmUuc2VsZWN0KEh5cFNlbGVjdG9ycy51cmwpLnBpcGUoXG4gICAgICBtZXJnZU1hcCgodXJsKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQucHV0PHZvaWQ+KGVuY29kZVVSSShgJHt1cmx9L3Byb2NlZHVyZXMvaWQvJHtwcm9jZWR1cmUuaWR9L2Nsb3NlYCksIHsgc3RhdHVzLCBjb21tZW50IH0pO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgYXNzb2NpYXRlUHJvY2VkdXJlKHByb2NlZHVyZUlkOiBudW1iZXIsIGV2ZW50SWRzOiBudW1iZXJbXSkge1xuICAgIHJldHVybiB0aGlzLnN0b3JlLnNlbGVjdChIeXBTZWxlY3RvcnMudXJsKS5waXBlKFxuICAgICAgbWVyZ2VNYXAoKHVybCkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LnB1dDxIeXBQcm9jZWR1cmU+KFxuICAgICAgICAgIGVuY29kZVVSSShgJHt1cmx9L3Byb2NlZHVyZXMvbW9kZWwvaWQvJHtwcm9jZWR1cmVJZH0vYXNzb2NpYXRlYCksXG4gICAgICAgICAgZXZlbnRJZHNcbiAgICAgICAgKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxufVxuIl19
100
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Byb3ZvbHkvaHlwZXJ2aXNvci9zcmMvbGliL3N0b3JlL2V2ZW50L2V2ZW50LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQWMsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDOUQsT0FBTyxFQUFFLFFBQVEsRUFBYyxjQUFjLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFNUQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQW1CLE1BQU0sOENBQThDLENBQUM7QUFDakcsT0FBTyxFQUFnQixvQkFBb0IsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBRW5HLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7QUFFMUIsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxDQUFDO0FBRTdDLE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHO0lBQy9CLE1BQU0sRUFBRSxRQUFRO0lBQ2hCLE9BQU8sRUFBRSxTQUFTO0NBQ25CLENBQUM7QUFLRixNQUFNLE9BQU8sWUFBWTtJQUN2QixZQUNVLFVBQXNCLEVBQ3RCLEtBQWlCO1FBRGpCLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDdEIsVUFBSyxHQUFMLEtBQUssQ0FBWTtJQUN4QixDQUFDO0lBRUosSUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDLEVBQUUsUUFBUSxHQUFHLGVBQWUsQ0FBQyxLQUFLO1FBQ2xELE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsWUFB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QUh4QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBQYXJhbXMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBtZXJnZU1hcCwgT2JzZXJ2YWJsZSwgd2l0aExhdGVzdEZyb20gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFN0b3JlIH0gZnJvbSAnQG5ncngvc3RvcmUnO1xuaW1wb3J0IHsgSHlwU2VsZWN0b3JzIH0gZnJvbSAnLi4vaHlwZXJ2aXNvci9oeXBlcnZpc29yLnNlbGVjdG9ycyc7XG5pbXBvcnQgeyBFdmVudFNlbGVjdG9ycyB9IGZyb20gJy4vZXZlbnQuc2VsZWN0b3JzJztcbmltcG9ydCB7IGV2ZW50Rm9yV3JpdGVBUEksIEh5cEV2ZW50RGV0YWlscyB9IGZyb20gJy4uLy4uL21vZGVsL2V2ZW50L2h5cC1ldmVudC1kZXRhaWwuaW50ZXJmYWNlJztcbmltcG9ydCB7IEh5cFByb2NlZHVyZSwgcHJvY2VkdXJlRm9yV3JpdGVBUEkgfSBmcm9tICcuLi8uLi9tb2RlbC9wcm9jZWR1cmUvaHlwLXByb2NlZHVyZS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgSHlwRXZlbnRUb29sdGlwIH0gZnJvbSAnLi4vLi4vbW9kZWwvZXZlbnQvaHlwLWV2ZW50LXRvb2x0aXAuaW50ZXJmYWNlJztcbmltcG9ydCB7IHY0IH0gZnJvbSAndXVpZCc7XG5cbmV4cG9ydCBjb25zdCBQQUdFX1NJWkVfRkVUQ0ggPSB7IHZhbHVlOiAyMCB9O1xuXG5leHBvcnQgY29uc3QgS05PV05fRklMVEVSX1NFVFMgPSB7XG4gIEVWRU5UUzogJ2V2ZW50cycsXG4gIFNVTU1BUlk6ICdzdW1tYXJ5J1xufTtcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgRXZlbnRTZXJ2aWNlIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBodHRwQ2xpZW50OiBIdHRwQ2xpZW50LFxuICAgIHByaXZhdGUgc3RvcmU6IFN0b3JlPGFueT5cbiAgKSB7fVxuXG4gIGxpc3Qoc3RhcnRXaXRoID0gMCwgcGFnZVNpemUgPSBQQUdFX1NJWkVfRkVUQ0gudmFsdWUpOiBPYnNlcnZhYmxlPEFycmF5PEh5cEV2ZW50RGV0YWlscz4+IHtcbiAgICByZXR1cm4gdGhpcy5zdG9yZS5zZWxlY3QoSHlwU2VsZWN0b3JzLnVybCkucGlwZShcbiAgICAgIHdpdGhMYXRlc3RGcm9tKHRoaXMuc3RvcmUuc2VsZWN0KEV2ZW50U2VsZWN0b3JzLmZpbHRlcnMpLCB0aGlzLnN0b3JlLnNlbGVjdChFdmVudFNlbGVjdG9ycy5zb3J0KSksXG4gICAgICBtZXJnZU1hcCgoW3VybCwgZmlsdGVyU2V0cywgc29ydF0pID0+IHtcbiAgICAgICAgY29uc3QgZmlsdGVycyA9IGZpbHRlclNldHNbS05PV05fRklMVEVSX1NFVFMuRVZFTlRTXSA/PyB7fTtcbiAgICAgICAgbGV0IHBhcmFtcyA9IG5ldyBIdHRwUGFyYW1zKCk7XG4gICAgICAgIE9iamVjdC5rZXlzKGZpbHRlcnMpLmZvckVhY2goKGZpbHRlcikgPT4ge1xuICAgICAgICAgIGZpbHRlcnNbZmlsdGVyXS5mb3JFYWNoKChmaWx0ZXJWYWx1ZSkgPT4ge1xuICAgICAgICAgICAgcGFyYW1zID0gcGFyYW1zLmFwcGVuZChmaWx0ZXIsIGZpbHRlclZhbHVlKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoJ3BhZ2UnLCBzdGFydFdpdGggLyBwYWdlU2l6ZSArIDEpO1xuICAgICAgICBpZiAoc29ydCkge1xuICAgICAgICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoJ3NvcnQnLCBzb3J0LmZpZWxkKS5zZXQoJ29yZGVyJywgc29ydC5vcmRlcik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQ8QXJyYXk8SHlwRXZlbnREZXRhaWxzPj4oZW5jb2RlVVJJKGAke3VybH0vZXZlbnRzYCksIHsgcGFyYW1zIH0pO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgZ2V0KGlkOiBudW1iZXIpIHtcbiAgICByZXR1cm4gdGhpcy5zdG9yZS5zZWxlY3QoSHlwU2VsZWN0b3JzLnVybCkucGlwZShcbiAgICAgIG1lcmdlTWFwKCh1cmwpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQ8SHlwRXZlbnREZXRhaWxzPihlbmNvZGVVUkkoYCR7dXJsfS9ldmVudHMvaWQvJHtpZH1gKSk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBnZXRUb29sdGlwSW5mbyhuYW1lOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5zdG9yZS5zZWxlY3QoSHlwU2VsZWN0b3JzLnVybCkucGlwZShcbiAgICAgIG1lcmdlTWFwKCh1cmwpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQ8SHlwRXZlbnRUb29sdGlwPihlbmNvZGVVUkkoYCR7dXJsfS9lcXVpcG1lbnRzL25hbWUvJHtuYW1lfWApKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIGdldFByb2NlZHVyZShpZDogbnVtYmVyKSB7XG4gICAgcmV0dXJuIHRoaXMuc3RvcmUuc2VsZWN0KEh5cFNlbGVjdG9ycy51cmwpLnBpcGUoXG4gICAgICBtZXJnZU1hcCgodXJsKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQuZ2V0PEh5cFByb2NlZHVyZT4oZW5jb2RlVVJJKGAke3VybH0vcHJvY2VkdXJlcy9pZC8ke2lkfWApKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHNhdmUoZXZlbnQ6IEh5cEV2ZW50RGV0YWlscykge1xuICAgIGNvbnN0IHRvU2VuZCA9IHsgLi4uZXZlbnQgfSBhcyBQYXJ0aWFsPEh5cEV2ZW50RGV0YWlscz47XG4gICAgaWYgKGV2ZW50LmlkIDwgMCkge1xuICAgICAgZGVsZXRlIHRvU2VuZC5pZDtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuc3RvcmUuc2VsZWN0KEh5cFNlbGVjdG9ycy51cmwpLnBpcGUoXG4gICAgICBtZXJnZU1hcCgodXJsKSA9PiB7XG4gICAgICAgIGlmICghIXRvU2VuZC5pZCkge1xuICAgICAgICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQucHV0PEh5cEV2ZW50RGV0YWlscz4oXG4gICAgICAgICAgICBlbmNvZGVVUkkoYCR7dXJsfS9ldmVudHMvaWQvJHt0b1NlbmQuaWR9YCksXG4gICAgICAgICAgICBldmVudEZvcldyaXRlQVBJKGV2ZW50KVxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5wb3N0PEh5cEV2ZW50RGV0YWlscz4oZW5jb2RlVVJJKGAke3VybH0vZXZlbnRzYCksIGV2ZW50Rm9yV3JpdGVBUEkoZXZlbnQpKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHNhdmVQcm9jZWR1cmUocHJvY2VkdXJlOiBIeXBQcm9jZWR1cmUpIHtcbiAgICByZXR1cm4gdGhpcy5zdG9yZS5zZWxlY3QoSHlwU2VsZWN0b3JzLnVybCkucGlwZShcbiAgICAgIG1lcmdlTWFwKCh1cmwpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5wdXQ8dm9pZD4oXG4gICAgICAgICAgZW5jb2RlVVJJKGAke3VybH0vcHJvY2VkdXJlcy9pZC8ke3Byb2NlZHVyZS5pZH1gKSxcbiAgICAgICAgICBwcm9jZWR1cmVGb3JXcml0ZUFQSShwcm9jZWR1cmUpXG4gICAgICAgICk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBzdGF0dXMoZXZlbnQ6IEh5cEV2ZW50RGV0YWlscywgc3RhdHVzOiBzdHJpbmcsIGNvbW1lbnQ6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLnN0b3JlLnNlbGVjdChIeXBTZWxlY3RvcnMudXJsKS5waXBlKFxuICAgICAgbWVyZ2VNYXAoKHVybCkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LnB1dDx2b2lkPihlbmNvZGVVUkkoYCR7dXJsfS9ldmVudHMvaWQvJHtldmVudC5pZH0vY2xvc2VgKSwge1xuICAgICAgICAgIGlkOiB2NCgpLFxuICAgICAgICAgIG1lc3NhZ2U6IGNvbW1lbnRcbiAgICAgICAgfSk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBzdGF0dXNQcm9jZWR1cmUocHJvY2VkdXJlOiBIeXBQcm9jZWR1cmUsIHN0YXR1czogc3RyaW5nLCBjb21tZW50OiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5zdG9yZS5zZWxlY3QoSHlwU2VsZWN0b3JzLnVybCkucGlwZShcbiAgICAgIG1lcmdlTWFwKCh1cmwpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5wdXQ8dm9pZD4oZW5jb2RlVVJJKGAke3VybH0vcHJvY2VkdXJlcy9pZC8ke3Byb2NlZHVyZS5pZH0vY2xvc2VgKSwge1xuICAgICAgICAgIGlkOiB2NCgpLFxuICAgICAgICAgIG1lc3NhZ2U6IGNvbW1lbnRcbiAgICAgICAgfSk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBhc3NvY2lhdGVQcm9jZWR1cmUocHJvY2VkdXJlSWQ6IG51bWJlciwgZXZlbnRJZHM6IG51bWJlcltdKSB7XG4gICAgcmV0dXJuIHRoaXMuc3RvcmUuc2VsZWN0KEh5cFNlbGVjdG9ycy51cmwpLnBpcGUoXG4gICAgICBtZXJnZU1hcCgodXJsKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQucHV0PEh5cFByb2NlZHVyZT4oXG4gICAgICAgICAgZW5jb2RlVVJJKGAke3VybH0vcHJvY2VkdXJlcy9tb2RlbC9pZC8ke3Byb2NlZHVyZUlkfS9hc3NvY2lhdGVgKSxcbiAgICAgICAgICBldmVudElkc1xuICAgICAgICApO1xuICAgICAgfSlcbiAgICApO1xuICB9XG59XG4iXX0=